# 2019-2020-1 20175333曹雅坤 《信息安全系统设计基础》第四周学习总结
2019-2020-1 20175333曹雅坤 《信息安全系统设计基础》第四周学习总结
- 1.流水线化的处理器:
将每条指令的执行分解成五步,每一个步骤由一个独立的硬件部分或者阶段来处理。指令步经流水线的各个阶段,且每一个时钟周期有一条新指令进入流水线。因此处理器能够同时执行五条指令的不一样阶段。
- 2.程序员可见的状态:
Y86程序中的每条指令都会读取或者修改处理器状态中的某些部分。这称为程序员可见状态。
- 3.Stat
程序状态的最后一个部分是状态码Stat,它代表程序执行的整体状态;它会指示是正常运行仍是出现了某种异常。
- 4.Y86
一个简单的、能够称之为IA32指令集的子集的指令集;只包括四字节整数操做,寻址方式比较少。指令编码长度从1——6字节不等。
关于指令结构,每条指令的第一个字节代表指令的类型;这个字节分为两个部分,每部分四位:高四位是代码部分(0——0xB),第四位是功能部分。这里补充一些缩写:当即数(i),寄存器(r)、存储器(m)。指令附加的寄存器指示符字节依次是数据源(若是是当即数,把这一位设置成0xf)、目的寄存器/基址寄存器。有些指令须要附加四字节的常数字,采用小端法(倒序)编码
- 5.stat代码可能取值反应了机器的不一样状态——
- AOK:正常操做(除此以外的任何状态都会使得处理器中止执行指令)
- HLT:处理器执行halt指令
- ADR:遇到非法地址2015/10/14 17:16:25
- INS:遇到非法指令
- 6.命令指明应该将代码或者是数据放在什么位置等。其中,以 .开头的是汇编器命令,它们告诉汇编器调整地址,以便在那儿产生代码或者是插入一些数据。
- 7.指令模拟器YIS是模拟Y86机器代码程序的执行而不用试图去模拟任何具体处理器实现的行为。
- 8.pushl会把栈指针减4,并将一个寄存器值写入存储器中。所以,执行pushl %esp 和 popl %esp的结果是不固定的。
- 9.逻辑门是数字电路的基本计算元素。逻辑门老是活动的,一旦一个门的输入变化了,在很短的时间内,输出就会相应地变化。
- 10.将不少的逻辑门组合成一个网,就能构建计算块,称为组合电路。限制:
两个或者多个逻辑门的输出不能链接在一块儿;
这个网必须无环
- 11.多路复用电路(MUX):根据输入控制信号的值,从一组不一样的数据信号中选出一个。
- 12.关于HCL的几点说明
HCL中全部字级的信号都声明为int;
在画字级电路的时候,用中等粗度的线表示携带字的每一个位的线路,用虚线来表示布尔信号的结果
在HCL中,表示默认状况(即全部条件都没有被选中的状况)通常用1
- 13.算术/逻辑单元(ALU):
根据控制输入的设置(0,1,2,3),电路会对数据输入执行不一样的算数或者逻辑操做(+,-,&,^)。
- 14.时序电路
有状态而且在这个状态上进行计算的系统
- 15.时钟寄存器&随机访问存储器
时钟寄存器存储单个位或者字。时钟信号控制寄存器加载输入值
随机访问存储器存储多个字,用地址来选择该读入或者该写哪一个字
- 16.Y86的顺序实现离不开SEQ处理器(顺序处理器)。
将处理一条指令的操做组织成一个特殊的阶段序列;能够设计一个充分利用硬件的处理器。
- 17.处理操做的阶段——
取指:从寄存器读取指令字节,地址为程序计数器的值。计算下一条指令地址等于PC中的值加上已取出指令的长度
译码:从寄存器文件中最多读出两个操做数
执行:ALU执行指明的操做、引用的有效地址或者是修改栈指针
访存:将数据写入存储器或者从存储器读出数据
写回:写两个结果到寄存器文件
更新PC:将PC设置成下条指令地址
- 18.关于一些指令的处理步骤
irmovl指令的处理与rrmovl相似,可是由于是长指令格式,因此程序计数器要加6
指令call和ret与以前的popl和pushl相似。对于指令call,咱们要将valP也就是call以后的那条指令的地址压入栈中在更新PC阶段,将PC设置为valC,也就是调用目的地
- 19.SEQ的时序(逐步深化)
要控制处理器中活动的时序,只须要寄存器和存储器的时钟控制
除了指令存储器只用来读指令故而能够看做组合逻辑以外,剩余的程序计数器、条件码寄存器、数据存储器和寄存器文件须要经过一个时钟信号来控制(控制时序)
在每一个时钟周期内,程序计数器都会装载新的指令地址;只有执行整数运算指令的时候,才会装载条件码寄存器。只有执行rmmovl,pushl,call时,才会写数据存储器。
Y86指令集的本质遵循这样一项组织原则:处理器历来不须要为了完成一条指令的执行而去读由该指令更新了的状态 【如何理解?也就是说,处理器所“经手”的指令中,若是有某些是能够改变机构状态的;那么必定先改变状态以后再执行指令。这样保证了操做的时序性(防止指令执行起来互相颠倒)】
- 20.SEQ阶段的实现 取指阶段包括指令存储器单元。一次从存储器中读出6个字节。第一个字节分为ocode,ifun。根据icode的值,计算:instrvalid(发现不合法指令),needregids,need_valC。instrvalid和imemerror在访存阶段被用来产生状态码。 SEQ中译码和写回阶段都须要访问寄存器文件。寄存器文件有四个端口,它支持同时进行两个读和两个写;每一个端口都一个地址链接和数据链接。若是某个地址端口上的值为特殊标识符0xf,则代表不须要访问寄存器。 执行阶段包括算术/逻辑单元(ALU)。这个单元革命家alufun信号的设置,对输入aluA和aluB执行ADD,SUB,AND,XOR运算。ALU的输出就是valE信号。还包括条件码寄存器。每次运行时,ALU都会产生三个与条件码相关的信号——零,符号,溢出。用set_cc来控制是否应该更新条件码寄存器。 访存阶段。两个控制块产生存储器地址和存储器输入数据的值;另外两个块产生控制信号代表应该执行读操做仍是写操做。
欢迎关注本站公众号,获取更多信息