信息安全系统设计基础第六周学习总结
【学习时间: 6 小时】
一、学习过程
1.一个处理器支持的指令和指令的字节级编码称为它的指令集体系结构。
2.程序员可见的状态:
Y86程序中的每条指令都会读取或者修改处理器状态中的某些部分。这称为程序员可见状态。
3.存储器:从概念上来说是一个很大的字节数组,保存着程序和数据。
4.程序状态的最后一个部分是状态码Stat,它表明程序执行的总体状态;它会指示是正常运行还是出现了某种异常。
5.Y86指令不允许从一个存储器地址到另一个存储器地址,也不允许从立即数到存储器。
6.halt指令停止指令的执行。并将状态码设置为HLT。
7.Y86利用绝对地址进行寻址,而且使用小端法编码。
8.指令集的一个重要性质就是字节编码必须有唯一的解释。
9.Stat包括四种状态,除了AOK表示正常执行外,其他状态都会导致处理器停止。在更完整的设计中,处理器通常都会调用一个异常处理程序。
10.Y86与IA32代码主要的区别就是,前者需要多条指令去执行一条IA32指令完成的功能。
11.以“.”开头的是汇编器命令,它们告诉汇编器调整地址,以便在那产生代码或者是插入一些数据。
12.指令模拟器YIS
目的是模拟Y86机器代码程序的执行,而不用试图去模拟任何具体处理器实现的行为。
13.将很多的逻辑门组合成一个网,就能构建计算块,称为组合电路。限制如下:
- 两个或者多个逻辑门的输出不能连在一起
- 这个网必须是无环的
14.在HCL中,多路复用函数是用情况表达式来描述的。格式如下:
[ 布尔表达式1:整数表达式1; 布尔表达式2:整数表达式2; …… 布尔表达式n:整数表达式n; ]
15.开发SEQ是实现目标的第一步;最终目标是实现一个高效的、流水线化的处理器。
16.将处理一条指令的操作组织成某个特殊的、有规则的阶段序列,这样可以设计一个充分利用硬件且可以完成大部分指令的处理器。下面是各个阶段:
- 取指:从存储器中读取指令字节,地址为PC(程序计数器)的值。
- 译码:译码阶段从寄存器文件中最多读取出两个操作数,得到valA和/或valB。执行:在执行阶段,ALU执行指令指明的操作或者计算存储器引用的有效地址,或者增加、减少栈指针。
- 访存:可以将数据写入存储器,或者从存储器中读出数据。
- 写回:写回阶段最多可以写两个结果到寄存器文件。
- 更新PC:将PC设置成下条指令的地址
17.与以上相对应的处理器硬件单元的动作:
- 取指:PC增加器计算valP
- 译码:寄存器文件有两个读端口A和B,从这两个端口读取寄存器值valA和valB。
- 执行:根据指令类型将算数/逻辑单元用于不同的目的。
- 访存:数据存储器读出或者写入一个存储器字。
- 寄存器写文件有两个写端口。E用来写ALU计算出来的值;M用来写从数据存储器中读出的值。
18.SEQ的实现包括组合逻辑和两种存储设备:时钟寄存器,随机访问存储器。除了程序计数器之外,还有条件码寄存器、寄存器文件、指令存储器和数据存储器需要进行明确的时序控制。方法:将这些单元通过一个时钟信号控制,它触发将新值装载到寄存器及将值写入到随机访问存储器。
19.SEQ时序控制的一条重要原则:处理器从来不需要为了完成一条指令的执行而去读由该指令更新了的状态。
20.对于nop指令和halt指令的处理:
对于nop指令,只是简单地经过各个阶段,PC加1;对于halt指令,直接使处理器停止运行。
21.SEQ阶段的实现
- 取指阶段包括指令存储器硬件单元。以PC作为第一个字节的地址,这个单元一次从存储器中读出6个字节。第一个字节被解释成指令字节,分别分成icode和ifun。
- 译码和写回阶段都要访问寄存器文件。寄存器文件有四个端口,同时支持两个读和两个写。每个端口都有一个地址连接和一个数据连接。如果某个地址端口上的值为特殊标识符0xf,则表明不需要访问寄存器。
- 执行阶段包括算术/逻辑单元(ALU)。根据alufun信号的设置,对输入aluA和aluB执行运算。ALU的输出就是valE信号。
- 访存阶段。两个控制块产生存储器地址和存储器输入数据的值;另外两个块产生控制信号表明应该执行读操作还是写操作。
- 更新PC阶段。
二、实验内容
构建YIS环境:
按照提示输入指令,构建YIS环境(实验楼中进行)
三、学习体会
【通过这次学习,我深入理解了从软件到硬件的机器内部动作;对于计算机系统的工作方式有了更深的理解。】