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

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

教材学习内容总结

4.1 Y8指令集体系结构

·Y86指令集只包括四字节整数操作,寻址方式较少,操作也较少;
·Y86指令指令不允许从一个存储器地址传送到另一个存储器地址,也不允许将立即数传送到存储器;
·同IA32一样,Y86所有整数采用小端法编码;
·Y86中pushl指令会把栈指针减4,并将一个寄存器的值写入存储器中。因此,当执行pushl %esp指令时,处理器的行为是不确定的,通常都有以下两种约定:
1)压入%esp的原始值;
2)压入减去4的%esp的值;

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

·在当前的技术中,逻辑1是用1.0伏特左右的高电压表示,而逻辑0是用0.0伏特左右的低电压表示的;
·要实现一个数字系统需要三个主要的组成部分:
1)计算对位进行操作的函数的组合逻辑;
2)存储位的存储器元素;
3)控制存储器元素更新的时钟信号;
·逻辑门只对单个位的数进行操作;
·逻辑门总是活动的。一旦一个门的输入发生了变化,在很短时间内,输出就会相应地变化;
·构建组合电路有以下两条限制:
1)两个或者多个逻辑门的输出不能连接到一起;
2)这个电路网必须是无环的;
·两类存储设备:
1)时钟寄存器
2)随机访问存储器
·寄存器是作为电路不同部分中的组合逻辑之间的屏障。每当每个时钟到达上升沿时,值才会从寄存器的输入传送到输出;
4.3 Y86顺序实现
六个阶段:
取址:从存储器读取指令字节地址为程序计数器的值。
译码:从寄存器文件读入最多两个操作数,得到值为valA或valB。
执行:算术逻辑单元执行指令执行的操作。
访存:将数据写入存储器,或者从存储器读出数据,读出的值为valM。
写会:最多可以写回两个结果到寄存器文件。
更新PC:将pc设置成下一个指令的地址。
seq的实现包括组合逻辑和两种存储设备:始终存储器和随机访问存储器。
出其里从来不需要为了完成一条指令的执行而去读取由该指令更新了的状态。
·SEQ阶段的实现
1)取指阶段:包括指令存储器单元。一次从存储器中读出6个字节。第一个字节分为ocode,ifun。根据icode的值,计算:instrvalid(发现不合法指令),needregids,need_valC。instrvalid和imemerror在访存阶段被用来产生状态码。
2)S译码和写回阶段:都需要访问寄存器文件。寄存器文件有四个端口,它支持同时进行两个读和两个写;每个端口都一个地址连接和数据连接。如果某个地址端口上的值为特殊标识符0xf,则表明不需要访问寄存器。
3)执行阶段:包括算术/逻辑单元(ALU)。这个单元革命家alufun信号的设置,对输入aluA和aluB执行ADD,SUB,AND,XOR运算。ALU的输出就是valE信号。还包括条件码寄存器。每次运行时,ALU都会产生三个与条件码相关的信号——零,符号,溢出。用set_cc来控制是否应该更新条件码寄存器。
4)访存阶段:两个控制块产生存储器地址和存储器输入数据的值;另外两个块产生控制信号表明应该执行读操作还是写操作。当执行读操作时数据存储器产生值valM。
5)更新PC阶段:SEQ中最后一个阶段会产生程序计数器的新值,依据指令的类型和是否要选择分支,新的PC可能是valC、valM、valP
逻辑门
-实现一个数字系统需要的三个组成部分:计算对位进行操作的函数的组合逻辑、存储位的存储器元素,以及控制存储器元素更新的时钟信号。
(1)逻辑门产生的输出,等于它们输入位值的某个布尔函数。逻辑门只对单个位的数进行操作,而不是整个字。
(2)逻辑门类型

(3)逻辑门总是活动的,一旦一个门的输入变化,在短时间内,输出就会跟着变化。
组合电路和HCL布尔表达式
(1)组合电路:很多逻辑门组合成一个网,构建的计算块。构建这些网有两条限制:

-两个以上的逻辑门的输出不能连接在一起,否则可能使线上信号矛盾,导致一个不合法的电压或电路故障。
-这个网必须是无环的,否则会导致网络计算有歧义。
(2)多路复用器:根据输入控制信号的值,从一组不同的数据信号中选出一个。
(3)HCL表达式和C语言中逻辑表达式的区别:

-组合逻辑电路的输出会持续地响应输入的变化,C表达式只有在程序执行过程中被遇到时才会求值
-C的逻辑表达式允许参数是任意整数,0表示FLASE,其他任何值都表示TRUE,逻辑门只对位值0和1进行操作
-C的逻辑表达式可能只被部分求值,组合逻辑没有部分求值的规则,逻辑门只是简单地响应输入的变化
字级的组合电路和HCL整数表达式
(1)HCL中,所有字级的信号都声明为int,不指定字的大小。
(2)多路复用函数是用情况表达式来描述的。
(3)算数/逻辑单元(ALU):三个输入分别为标号为A和B的两个数据输入,和一个控制输入。
(4)集合关系:判断集合关系的通用格式是iexpr in {iexpr1,iexpr2,....iexprk}其中被测试和待匹配的值均为整数表达式。
存储器和时钟
(1)组合电路简单的响应输入信号,产生等于输入的某个函数的输出,并存在状态在这个状态上进行计时,如此产生了时序电路。
(2)随机访问存储器:存储多个字,用地址来选择应该读写哪个字。
(3)时钟寄存器:存储单个位或字,时钟信号控制寄存器加载输入值。
(4)硬件寄存器工作时,每当每个时钟到达上升沿时,值才会从寄存器的输入传送到输出。
(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。

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

Ubuntu下Y86模拟器的安装

安装bison和flex词法分析工具

sudo apt-get install bison flex

安装Tcl/Tk 支持图形界面

sudo apt-get install tcl8.5-dev tk8.5-dev tcl8.5 tk8.5

下载sim解压

代码托管

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

本周学习的第四章“处理器结构”,主要是在第二、三章基础上对机器执行指令时动作的探究,包括硬件动作,是对指令的一层又一层的深究,学习完4.1-4.3后有了一种知其然的感觉,在学习的过程中复习了前两周的知识,又在学习中再次加深了对知识点的理解。

posted on 2017-11-05 19:45  20145237  阅读(217)  评论(0编辑  收藏  举报