20155236 2017-2018-1 《信息安全系统设计基础》第7周学习总结

20155236 2017-2018-1 《信息安全系统设计基础》第7周学习总结

教材学习内容总结

处理器体系结构

Y86指令集体系结构

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

程序员可见状态:

Y86程序中的每条指令都会读取或修改处理器状态的某些部分。
Y86具体包括:8个程序寄存器、3个条件码ZF\SF\OF、程序计数器(PC)。
Y86用虚拟地址引用存储器位置。 程序状态的最后一个部分是状态码Stat,它表明程序执行的总体状态。
Y86指令

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

逻辑门

逻辑门是数字电路的基本计算元素,它们的输出,等于它们输入位值的某个布尔函数。
逻辑门总是活动的,一旦一个门的输入变化,在短时间内,输出就会跟着变化。。

组合电路和HCL布尔表达式

组合电路:将很多的逻辑门组合成一个网,能构建计算块。
多路复用:根据输入控制信号的值,从一组不同的数据信号中选出一个。
构建这些网有2条限制:
(1)两个或多个逻辑门的输出不能连接在一起
(2)这个网必须是无环的。
HCL表达式和C语言中逻辑表达式的区别:
(1)组合逻辑电路的输出会持续地响应输入的变化;C表达式只有在程序执行过程中被遇到时才会求值。
(2)C的逻辑表达式允许参数是任意整数,0表示FLASE,其他任何值都表示TRUE;逻辑门只对位值0和1进行操作。
(3)C的逻辑表达式可能只被部分求值;组合逻辑没有部分求值的规则,逻辑门只是简单地响应输入的变化。

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

执行字级计算的组合电力根据输入字的各个为,用逻辑门来计算输出字的各个位。
用中等粗度的线来表示携带字的每个位的线路,用虚线来表示布尔信号结果。
在HCL中,多路复用函数用情况表达式来描述。
算术/逻辑单元是一种很重要的组合电路。

Y86的顺序实现

  • SEQ处理器:每一个时钟周期上,SEQ执行处理一条完整指令所需的所有步骤。
将处理组织成阶段

取址:valP:PC的值加上已取出指令的长度。
译码:读入指令rA和rB字段指明的寄存器。
执行:ALU执行指令指明的操作,计算存储器引用的有效地址,要么增加或者减少栈指针,得到的值为valE;
跳转指令来说,这个阶段会检验条件码和分支条件。
访存:可以将数据写入存储器,或者从存储器读出数据。置为valM。
写回:最多可以写两个结果到寄存器文件。
更新:将PC设置成下一条指令的地址。

SEQ阶段的实现

  • 在控制逻辑中必须被显式引用的常数:

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

  • Y86和X86的区别

  • 有的时候Y86需要两条指令来达到X86一条指令就可以达成的目的。
    比如对于X86指令中的addl $4,%ecx这样的指令,由于Y86当中的addl指令不包含立即数,所以Y86需要先将立即数存如寄存器,即使用irmovl指令,然后再使用addl来处理加法运算。
    总的来说,Y86就是X86的一个缩减版,他的目的就是以简单的结构来实现一个处理器,帮助我们了解处理器的设计和实现。

  • 执行pushl和popl指令时,处理器的行为是不确定的,因为要入栈的寄存器会被同一条指令修改。通常有两种约定?

  • 压入/弹出%esp的原始值。
    压入/弹出%esp-/+4后的值。

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

  • 安装Y86时出现如下:
  • dealing

其他(感悟、思考等,可选)

我觉得本周的学习任务是对上学期汇编的一个巩固,在原有我们所学的8086汇编知识的基础上得到了拓宽,这次我们所学的汇编主要是在32位机器上的。在寄存器个数没有变化的前提下,所能支持的位数翻了一倍,引入了%eax, %ebx, %ebp...等寄存器,操作指令也由原来的向左赋值变为向右赋值。虽然变化挺多,但本质是不变的一条机器指令只执行一个非常基本的操作以及汇编语言是近似机器语言,其造作指令与机器码一一对应。

本周结对学习情况

SEQ的实现包括组合逻辑和两种存储器设备:时钟寄存器(程序计数器和条件码寄存器),随机访问存储器(寄存器文件、指令存储器和数据存储器)。

每个时钟周期,程序计数器都会装在新的指令地址;只有在执行整数运算指令时,才会装载条件码寄存器;只有在执行rmmovl、pushl或call指令时,才会写数据存储器;寄存器文件的两个写端口允许每个时钟周期更新两个程序寄存器。

处理器的原则:
处理器从来不需要为了完成一条指令的执行而去读由该指令更新了的状态。

Y86

posted @ 2017-11-05 18:10  Heineken  阅读(248)  评论(0编辑  收藏  举报