20145312 《信息安全系统设计基础》第6周学习总结

20145312 《信息安全系统设计基础》第6周学习总结

教材学习内容总结

第4章 处理器体系结构

ISA: 处理器执行一系列的指令。在计算机系统中,指令被编码为由一个字节或多个字节序列组成的二进制格式。一个处理器支持的指令和指令的字节级编码成为它的指令集体系机构。

4.1 Y86指令集体体系结构

  1. 程序员可见的状态
    (1)8个程序寄存器:%eax,%ecx,%edx,%ebx,%esi,%edi,%esp和%ebp。
    (2)条件码:ZF(零)、SF(符号)、OF(有符号溢出)
    (3)程序计数器(PC):存放当前正在执行的指令的地址
    (4)存储器:很大的字节数组,保存着程序和数据。Y86系统用虚拟地址来引用存储器的位置,硬件和操作系统软件联合起来将虚拟地址翻译成实际或者物理地址。
    (5)状态码(stat):表明程序执行的总体状态。(指示异常处理)
  2. Y86指令
    (1)movl:irmovl、rrmovl、mrmovl、rmmovl,分别显式地指明源和目的地的格式。第一个字母表明源的类型,i(立即数)、r(寄存器)或m(存储器 ),第二个字母代表目的,可以是r或者m。
    (2)整数操作指令OPl:addl、subl、andl和xorl。只对寄存器数据进行操作,同时还设置条件码。
    (3)跳转指令jXX:jmp、jle、jl、je、jne、jge、jg,根据分支指令的类型和条件码的设置来选择分支。
    (4)条件传送指令cmovXX:cmovle、cmovl、cmove、cmovne、cmovge和comvg,与寄存器-寄存器传送指令rrmovl一样,但只有当条件码满足所需要的约束时才会更新目的寄存器的值。
    (5)call指令将返回地址入栈,然后跳转到目的地址。ret指令从这样的过程调用中返回。
    (6)pushl和popl:入栈和出栈。
    (7)halt:停止指令的执行。
  3. 指令编码
    (1)指令的字节级编码。每条指令需要1-6个字节不等。每条指令的第一个字节表明指令的类型,高4位为代码部分,低4位为功能部分,功能值只有在一组相关指令共用一个代码时才有用。

    (2)整数操作:代码部分均为6,功能部分区分addl,subl,andl,xorl。分支指令和调用指令的目的地址是一个绝对地址。所有整数采用小端法编码。
    分支指令:代码部分均为7
    传送指令:代码部分均为2
    (3)8个程序寄存器当中,每个都有相应的0~7的寄存器标识符。程序寄存器存在CPU中的一个寄存器文件中,这个文件就是一个小的、以寄存器ID作为地址的随机访问存储器。

    (4)程序寄存器存在CPU中的一个寄存器文件中,这个文件就是一个小的、以寄存器ID作为地址的随机访问存储器。
    (5)附加4字节的常数字:作为irmovl的立即数数据,rmmovl和mrmovl的地址指示符的偏移量,以及分支指令和调用指令的目的地址。
    (6)指令集的一个重要性质就是字节编码必须有唯一的解释。
  4. Y86异常
    (1)状态码Stat:描述程序执行的总体状态。

    (2)Y86中,任何AOK以外的代码都会使处理器停止执行指令,而没有异常处理程序。
  5. Y86程序
    (1)Y86和IA32的区别
-需要多条指令来执行一条IA32指令所完成的功能
-以“.”开头的词是编辑器命令
-命令 .pos0告诉编辑器应该从地址0处开始产生代码,这个地址是所有Y86程序的起点
-声明标号Steak,并用一个.pos命令指明地址0x100

4.2 逻辑设计和硬件控制语言HCL

  1. 逻辑门
    -实现一个数字系统需要的三个组成部分:计算对位进行操作的函数的组合逻辑、存储位的存储器元素,以及控制存储器元素更新的时钟信号。
    (1)逻辑门产生的输出,等于它们输入位值的某个布尔函数。逻辑门只对单个位的数进行操作,而不是整个字。
    (2)逻辑门类型

    (3)逻辑门总是活动的,一旦一个门的输入变化,在短时间内,输出就会跟着变化。
  2. 组合电路和HCL布尔表达式
    (1)组合电路:很多逻辑门组合成一个网,构建的计算块。构建这些网有两条限制:
-两个以上的逻辑门的输出不能连接在一起,否则可能使线上信号矛盾,导致一个不合法的电压或电路故障。
-这个网必须是无环的,否则会导致网络计算有歧义。

(2)多路复用器:根据输入控制信号的值,从一组不同的数据信号中选出一个。
(3)HCL表达式和C语言中逻辑表达式的区别:

-组合逻辑电路的输出会持续地响应输入的变化,C表达式只有在程序执行过程中被遇到时才会求值
-C的逻辑表达式允许参数是任意整数,0表示FLASE,其他任何值都表示TRUE,逻辑门只对位值0和1进行操作
-C的逻辑表达式可能只被部分求值,组合逻辑没有部分求值的规则,逻辑门只是简单地响应输入的变化
  1. 字级的组合电路和HCL整数表达式
    (1)HCL中,所有字级的信号都声明为int,不指定字的大小。
    (2)多路复用函数是用情况表达式来描述的。
[
select1 : expr_1
select2 : expr_2
......
selectk : expr_k
]

(3)算数/逻辑单元(ALU):三个输入分别为标号为A和B的两个数据输入,和一个控制输入。
(4)集合关系:判断集合关系的通用格式是iexpr in {iexpr1,iexpr2,....iexprk}其中被测试和待匹配的值均为整数表达式。
4. 存储器和时钟
(1)组合电路简单的响应输入信号,产生等于输入的某个函数的输出,并存在状态在这个状态上进行计时,如此产生了时序电路。
(2)随机访问存储器:存储多个字,用地址来选择应该读写哪个字。
(3)时钟寄存器:存储单个位或字,时钟信号控制寄存器加载输入值。
(4)硬件寄存器工作时,每当每个时钟到达上升沿时,值才会从寄存器的输入传送到输出。
(5)寄存器文件读数据是一个地址为输入,数据为输出的组合逻辑块,写入字是由时钟信号控制的。
5. Y86的顺序实现
(1)将处理组织成阶段

-取指:从存储器读取指令字节,地址为程序计数器(PC)的值。指令指示符字节两个四位部分,称为icode(指令代码)和ifun(指令功能)。vaIP(下一条指令的地址)=PC+已取出指令的长度。
-译码:从寄存器文件读入最多两个操作数,得到valA和/或valB。
-执行:算数逻辑单元(ALU)根据ifun的值执行指令指明的操作,计算存储器引用的有效地址,或者增加或减少栈指针。得到的值称为valE。也可根据条件码执行跳转。
-访存:将数据写入存储器,或者从存储器读出数据。读出的值为valM。
-写回:最多可以写两个结果到寄存器文件。
-更新PC:将PC设置成下一条指令的地址。

(2)SEQ硬件结构

-取指:将程序计数器寄存器作为地址,指令存储器读取指令的字节。PC增加器计算valP,即增加了的程序计数器。
-译码:寄存器文件有两个读端口A和B,从这两个端口同时读寄存器的值valA和valB。
-执行:根据指令类型将算数/逻辑单元(ALU)用于不同的目的。条件码寄存器有三个条件码位,ALU负责计算条件码的新值,当执行跳转指令时会根据条件码和跳转类型来计算分支信号Cnd。
-访存:数据存储器读出或写入一个存储器字。指令和数据存储器访问的是相同的存储器位置,但用于不同的目的。
-写回:寄存器文件有两个写端口,E用来写ALU计算出来的值,M用来写从数据存储器中读出来的值。

(3)SEQ时序

-SEQ的实现包括组合逻辑和两种存储器设备:时钟存储器(程序计数器和条件码寄存器),随机访问存储器(寄存器文件、指令存储器和数据存储器)。
-Y86指令集的计算原则:处理器从来不需要为了完成一条指令的执行而去读由该指令更新了的状态。
-四个硬件单元:
        程序计数器
        条件码寄存器
        数据存储器
        寄存器文件

(4)SEQ阶段的实现

-指阶段:包括指令存储器硬件单元。
-译码和写回阶段:寄存器文件,支持同时进行两个读和两个写,每个端口有一个地址连接(寄存器ID)和一个数据连接(32根线路),既可以作为寄存器文件的输出字,又可以作为他的输入字。
-执行阶段:算数逻辑单元(ALU),输出为valE信号。
-访存阶段:读或者写程序数据,两个控制块产生存储器地址和存储器输入数据的值。另外两个块产生控制信号表明应该执行读还是写操作。当执行读操作时,数据存储器产生valM。
-更新PC阶段:产生程序计数器的新值,依据指令的类型和是否要选择分支,新的PC可能是valC、valM或者valP。

代码调试中的问题和解决过程

构建YIS环境(实验楼)




YIS测试

测试代码


课后作业中的问题和解决过程

  1. 问:练习题4.6 指令subl有什么用处?
    -答:在这个测试里,subl指令将%esp的起始值与压入栈中的值进行了比较。这个减法的结果为0,表明压入的是%esp的旧值。
  2. 问:练习题4.17 SEQ中信号need_valC的HCL代码?
    -答:如图4-27,根据HCL代码,可得:
bool need_valC=
           icode in {IIRMOVL,IRMMOVL,IMRMOVL,IJXX,ICALL };

本周代码托管截图

学习进度条

参考资料

posted @ 2016-10-23 20:06  20145312袁心  阅读(220)  评论(1编辑  收藏  举报