您的位置:首页 > 其它

20135304刘世鹏——信息安全系统设计基础第五周学习总结

2015-10-18 23:01 267 查看

第四章 处理器体系结构

ISA:一个处理器支持的指令和指令的字节级编码——指令集体系结构

ISA在编译器编写者和处理器设计人员之间提供了一个概念抽象层
与IA32相比Y86指令集的数据类型、指令和寻址方式都要少一些,它的字节级编码比较简单,不过它仍然足够完整

4.1、Y86指令集结构

定义一个指令集体系结构,暴扣定义各种状态元素、指令集和它们的编码、一组编程规范和异常事件处理

1.程序员可见的状态

程序员可见状态:Y86程序中的每条指令都会读取或修改处理器状态的某些部分

Y86的处理器状态类似与IA32可以访问和修改程序寄存器、条件码、程序计数器(PC)和存储器

- 程序寄存器:%eax、%ecx、%edx、%ebx、%esi、   %edi、%esp和%ebp

- 条件码:ZF、SF、OF,一位条件码,保存最近的算术   或   逻辑指令所造成的影响的信息

- 程序计数器:存放当前正在执行的指令的地址。

- 存储器:很大的字节数组,保存着程序和数据

- 状态码:指明程序是否运行正常,或者发生了某个特殊事件

2.Y86指令



3.指令编码

每条指令的第一个字节表明指令的类型。这个字节分为两个部分, 每部分4位:高4位是代码部分,低4位是功能部分。功能值只有在一组相关指令共用一个代码时才有用。

8个程序寄存器各自有相应0-7的寄存器标识符。当需要指明不应访问任何寄存器时,有ID值0xF表示。

寄存器指示符字节:在需要操作数的指令编码中,可以用于数据源和目的寄存器,或地址计算的基址寄存器。


4.Y86异常





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

数字系统三部分组成:组合逻辑、存储器元素、时钟信号。 HCL:硬件控制语言,描述不同处理器设计的控制逻辑。
1.逻辑门

AND:&& OR:|| NOT:! 每个门产生的输出等于他输入的某个布尔函数
2.组合电路和HCL布尔表达式 组合逻辑电路和c语言中逻辑表达式都是用布尔操作来对输入进行计算的函数。 区别:

组合电路的输出会持续地响应输入变化,c语言表达式只有在执行过程中被遇到才求值
C的逻辑表达式允许参数是任意整数,0是FALSE,其他任何值0的都是TRUE,逻辑门只对位值0和1操作。
C的逻辑表达式可能被部分求值(第一个参数就能确定结果的就不会对第二个求值)

两个限制:1.两个及以上逻辑门的输出不能连接在一起(会产            生信号矛盾)。          2.网必须是无环的,不可以有路径经一系列门而形            成回路。

3.字级的组合电路和HCL整数表达式

同C语言的switch语句不同,我们不要求不同的选择表达式之间互斥。这些选择表达式顺序求值,且第一个求值为1的情况被选中

通用格式: [   select_1 :expr_1   select_2 :expr_2    ......    ......   select_k :expr_k ]
4.集合关系

bool s1= code==2||code==3; 等价于 bool s1 = code in {2,3}; 表示当code在集合{2,3}中s1为1。
5.存储器和时钟

时序电路:有状态,且在这个状态上进行计算的系统。 时序电路的两类存储器设备

时钟寄存器(寄存器):储存单个位或字,用时钟信号控制寄存器加载输入值。
随机访问储存器(储存器):储存多个字,用地址选择该读/写哪个字。

4.3、Y86的顺序实现

1.将处理组织成阶段

取指 :从存储器读取指令字节,地址为程序计数器PC的值
译码 :从寄存器读入最多两个操作数,得到valA或valB
执行 :算术/逻辑单元要么执行指令指明的操作,计算存储器引用的有效地址,要么增加或减少栈指针。得到的值为valE。
访存 :将数据写入存储器,或从存储器中读出数据,读出的值为valM。
写回 :最多可以写两个结果到寄存器文件
更新PC :将PC设为下一条指令的地址



2.SEQ硬件结构


3.SEQ时序

时钟寄存器:程序计数器、条件码寄存器
随机访问存储器:寄存器文件、指令存储器、数据存储器
组合逻辑不需要任何时序或控制 由于指令存储器只用来读指令,我们可以将这个单元看成是组合逻辑 剩下四个(程序计数器、条件码寄存器、数据存储器和寄存器文件)需要对他们的时序进行明确的控制。
4.SEQ阶段的实现

取指阶段

以PC为第一个字节的地址,一次读6个字节。

icode   控制逻辑块计算指令 ifun    功能码
三个一位的信号(根据icode值计算)

instr_valid     发现不合法的指令 need_regids     包含寄存器指示符字节吗 need_valC       包括常数字吗
后五个字节是寄存器指示符字节和常数字的组合编码。 译码和写回阶段

都需要访问寄存器文件,根据四个端口的情况,判断应该读哪个寄存器产生信号valA、valB。 寄存器文件,支持同时进行两个读和两个写,每个端口有一个地址连接(寄存器ID)和一个数据连接(32根线路),既可以作为寄存器文件的输出字,又可以作为他的输入字。 执行阶段

包括算数/逻辑单元(ALU),输出为valE信号。

ALU通常作为加法器使用
包括条件码寄存器

每次运行产生:     零、符号、溢出、产生信号set_cc
访存阶段

读或者写程序数据。 两个数据块产生存储器地址和存储器输入证据的值,两个产生控制信号表明应该是读还是写。当执行读操作时,数据存储器产生valM。 根据icode,imemerror,instrvalid,dmem_error,从指令执行的结果计算状态码Stat。

更新PC阶段

产生程序计数器的新值,依据指令的类型和是否要选择分支,新的PC可能是valC、valM或者valP。

遇到问题及解决

不知道如何确定Y86指令序列的字节编码

解决方法,通过研究练习题4.1、4.2从答案入手并反复研读书中内容后领悟。

参考资料

[1]《深入理解计算机系统》

[2]http://www.cnblogs.com/hyq20135317/p/4888744.html

[3]http://www.cnblogs.com/zzzz5/p/4889360.html

[4]百度百科
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: