zoukankan      html  css  js  c++  java
  • 2018-2019-1 20165336《信息安全系统设计基础》第四周学习总结

    2018-2019-1 20165336《信息安全系统设计基础》第四周学习总结

    1.教材学到的知识点

    • Y86-64中程序员(汇编程序员、编译器等)可见的状态包括程序寄存器、条件码、程序状态、程序计数器(PC)、内存

    • Y86-64中有15个程序寄存器分别是%eax %ecx %edx %ebx %esp %ebp %esi %eadi ZF SF OF PC Stat DMEM

    • Y86-64指令支持的整数操作的长度是8字节

    • Y86-64的指令编码长度是1-10字节,指令编码长度从1-6个字节不等。一条指令含有一个单字节的指令指示符,可能含有一个单字节的寄存器指示符,还可能含有一个四字节的常数字

    • Y86-64中共有7个跳转指令,分别为jmp、jle、jl、je、jne、jge、jg。

    • Y86-64的状态码AOK表示正常操作,3表示遇到非法地址,HLT 处理器执行halt命令,ADR 遇到非法地址,INS 遇到非法指令

    • 实现一个数字系统需要三个主要的组成部分:计算对位进行操作的函数的组合逻辑、存储位的存储器元素,以及控制存储器元素更新的时钟信号。

    • 与、或、非三种逻辑门可以用一种门(与非门, 或者 或非门)实现。

    • 多路复用器。多路复用器根据输入控制信号的值,从一组不同的数据信号中选出一个。

    • ALU是一种组合电路,寄存器是一种时序电路,区分在有没有时钟。

    • 每当每个时钟到达上沿时,值才会从寄存器的输入传送到输出。我们的Y86处理器会用时钟寄存器保存程序计数器(PC)、条件代码(CC)和程序状态(Stat)。

    • 寄存器文件有两个读端口,还有一个写端口。这样一个多端口随机访问存储器允许同时进行多个读和写操作。向寄存器文件写入字是由时钟信号控制的。

    • Y86-64中,指令执行分为6个阶段取指(fetch)、译码(decode)、执行(execute)、访存(memory)、写回(write)、更新PC(PC update)

    • 在执行阶段,算数/逻辑单元(ALU)要么执行指令指明的操作(根据ifun的值),计算存储器引用的有效地址,要么增加或减少栈指针。得到的值我们称为valE。在此,也可能设置条件码。对一条跳转指令来说,这个阶段会检验条件码和分支条件,看是不是应该选择分支

    • rrmovl是寄存器-寄存器传送,irmovq是立即数-寄存器传送,不需要访存。

    • 在SEQ+中,创建状态寄存器来保存在一条指令执行过程中计算出来的信号。然后,当一个新的时钟周期开始时,这些信号值通过同样的逻辑来计算当前指令的PC。
      SEQ+中对状态元素的改变称为电路重定时,在SEQ+的各个阶段之间插入了流水线寄存器,并对信号重新排列。

    教材学习中的问题和解决过程

    书中例题指令编码问题:需要掌握Y86-64指令集,Y86-64指令集的功能码,Y86-64程序寄存器标识符

    考试错题总结

    • 1.4.在Y86-64中,对一条跳转指令,决定是不是应该选择分支的阶段是()
      A . fetch
      B . decode
      C . execute
      D . memory
      E . write back
      F . PC update
      正确答案: C
      解析:在执行阶段,算数/逻辑单元(ALU)要么执行指令指明的操作(根据ifun的值),计算存储器引用的有效地址,要么增加或减少栈指针。得到的值我们称为valE。在此,也可能设置条件码。对一条跳转指令来说,这个阶段会检验条件码和分支条件,看是不是应该选择分支。

    • 2.图中的代码说明异常处理的细节问题是()
      A . 同时多条指令引起异常
      B . 指令执行引起异常,后来由于分支预测错误,取消了该指令
      C . 不同阶段更新系统状态的不同部分
      D . 与流水线无关的异常
      正确答案: B
      解析:在这个程序中,流水线会预测选择分支,因此他会取出并以一个值为0xFF的字节作为指令。译码阶段会因此发现一个非法指令异常。稍后,流水线会发现不应该选择分支,因此根本就不应该取出位于地址0x00e的指令。流水线控制逻辑会取消该指令,但是我们想要避免出现异常。
  • 相关阅读:
    数据库内连接、外连接与自连接
    安装MySQL容易出现的问题
    安装MySQL时提示3306端口已被占用的解决方案
    Smoke Testing
    冒烟测试与BVT测试
    以操作系统的角度述说线程与进程
    Notepad++配置Python开发环境
    Notepad++使用教程
    Sublime Text 皮肤插件安装
    小狼毫输入法常用设置
  • 原文地址:https://www.cnblogs.com/20165336kzq/p/9825878.html
Copyright © 2011-2022 走看看