20135218 姬梦馨 第六周学习总结
学习计时:共12小时 读书:4.5 个小时 代码:2.5 个小时 作业:2个小时 博客:3个小时 |
一、学习目标 |
1. 了解ISA抽象的作用
2. 掌握ISA,并能举一反三学习其他体系结构
3. 了解流水线和实现方式
|
二、学习资源 |
3. 教材中代码运行、思考一下,读代码的学习方法见这。
|
三、学习方法 |
四、学习任务 |
(提示:请将要求学生完成的任务、测验或思考题列在此处)
4.1 4.2 4.5 4.6 4.8 4.10 4.11 4.12 4.16 4.17 4.19 4.21 4.24 第六章《存储器层次结构》 |
(提示:此处由学生填写,学习过程,学习笔记,代码编译,运行结果,思考等) 第四章:处理器体系结构4.1 Y86 指令集体系结构序:定义一个指令集体性系结构,包括定义各种状态元素、指令集、和它们的编码、一组编程规范和异常时间的处理。 4.1.1:程序员可见的状态 1:概念:Y86 程序中的每条指令都会读取或修改处理器状态的某些部分。 2:可见状态: 寄存器、存储器、条件码、PC、程序状态。 3:
的有关信息。
硬件和操作系统会将虚拟地址翻译为实际的(或物理)地址。
4.1.2 Y86 指令 1:Y86指令基本上是IA32指令集的一个子集。就是处理器实现的目标。 2:图4.2 左边指令的汇编表示,右边是字节编码。 3:Y86指令集:从1到6个字节不等。一条指令含有一个单字节的指令指示符,可能 含有一个单字节的寄存器指示符。还可能含有一个四字节的常数字。 字段fn指明某个整数操作(op1)、数据移动(cmovXX)、或是分支条件 (jxx)。所有的数值用十六进制表示。 4:更多的细节问题: rmmovl。分别显示地指明源和目的的格式。源可以是立即数i,寄存器r, 或存储器m;目的可以使寄存器r和存储器m。同IA32一样,不允许从 一个存储器地址直接传送到另一个储存器地址。 b:有4个整数作指令。addl、subl、andl和xorl。 c:7个跳转指令(jXX)。jmp、jle、jl、je、jne、jge和jg。根据分支指令的类 型和条件码的设置来选择分支。 d:有6个条件传送指令(cmovXX)。cmovle、cmovl、cmove、cmovne comovge和cmovg。只有当条件码满足所需要的约束时,才会更新目的 寄存器的值。 e:call指令将返回地址入栈然后跳到目的地址。ret指令从这样的过程调用返回 f:pushl和popl指令实现了入栈和出栈。 g:halt指令停止指令的执行。对于Y86来说,执行halt指令会导致处理器停止。 将状态码设置为HLT。 4.1.3 指令代码 每条指令的第一个字节表明了指令的类型,这个字节分为2部分,每部分4位。 高4位是代码部分,低4位是功能部分。如图 4.3
图4.4:8 个寄存器每个都有相应的0-7的寄存器标识符。Y86的寄存器编号和IA32 的相同。 有的指令只有一个字节长度,有的需要操作数的指令编码就更长一些。 有的指令需要一个附加的4字节常数字。这个字能作irmovl的立即数据。 指令集的一个重要性质就是字节编码必须有唯一的解释。 4.1.4 Y86异常 1.状态码stat:描述程序执行的总体状态
遇到异常,处理器停止执行指令。
4.2 逻辑设计和硬件控制语言HCL 数字系统三部分组成:组合逻辑、存储器元素、时钟信号。
4.2.1:逻辑门 数字电路的基本计算元素。他们的产生输出,等于他们输出位值的布尔函数 4.2.2 :组合电路和HCL布尔表达式 1:HCL表示与、或、非:a&&b、a||b、!a。 2:将很多逻辑门组合成一个网,就能构建计算块,称为组合电路。 构建这些网有两条限制:
a: 两个或多个逻辑门的输出不能连接在一起。否则他们可能会使线上的信 号矛盾,可能会导致一个不合法的电压或电路故障。
b:这个网必须是无环的。在网中不能有路径经过一系列的门而形成一个回路, 这样的回路会导致该网络计算的函数有歧义。 3:单个位的多路复用器:如果控制信号为1,则输出等于输入a; 如果控制信号为0,则输出信号输入b。 4:Hcl表明了组合逻辑电路和C语言逻辑中表达式的对应之处。
还有个属性就是:只可能被部分求值。
4.2.3 字级的组合电路和HCL整数表达式 在HCL中,将所有字级的信号都声明为int,不指定字的大小。 HCL允许比较字是否相等,如图4-12函数在字级上表示:bool Eq=(A==B); 执行字级计算的组合电路根据输入字的各个位,用逻辑门来计算输出字的各个位
4.2.4 集合关系 在处理器设计中,很多时候都需要将一个信号与许多可能匹配的信号做比较,以此来检测正在处理的某个指令代码是否属于某一类指令代码。 4.2.5 储存器和时钟 1:组合电路从本质上讲,不存储任何信息。它们只是简单的相应输入信号,产生 输入的某个函数的输出。 2:为了产生时序电路,也就是有状态并且在这个状态上进行计算的系统,我 们必须引入按位存储信息的设备。 3:存储设备都是由同一个时钟控制,时钟是一个周期性信号,决定什么时候要 把新值加载到设备中。 两种存储器设备: 时钟存储存器:存储单个位或字。时钟信号控制寄存器加载输入值。 随机访问存储器:存储多个字,用地址来选择该读或改写哪个字。 4:大多数时候,寄存器都保持在稳定状态(x),产生的输出等于它的当前状态。信号沿着寄存器前面的组合逻辑传播,这时,产生了一个新的寄存器输入(y),但只要时钟是低电位的,寄存器的输出就仍然保持不变。当时钟变成高电位的时候,输入信号才加载到寄存器中,成为下一个状态y,直至下一个时钟的上升沿。寄存器是作为电路不同部分中的组合逻辑之间的屏障。每当每个时钟到达上升沿时,值才会从寄存器的输入传送到输出。 4.3 Y86的顺序实现SEQ执行处理一条所需的所有步骤,这需要一个很长的时钟周期时间,因此时钟的周期频率会低到不可接受。
4.3.1 将处理组织成阶段 取指:从存储器读取指令字节,地址为程序计数器的值。 译码:从寄存器文件读入最多两个操作数,得到valA和/或valB。 执行:算术/逻辑单元要么执行指令指名的操作,计算存储器引用的 有效地址,要么增加或减少栈指针。 访存:将数据写入存储器,或者从存储器读出数据。数据存储器(CPU中)读出或写入 一个存储器字。 写回:最多可以写两个结果到寄存器文件。 寄存器文件有两个写端口。端口E用来写ALU计算出来的值,而端口M用来写从数据 存储器中读出的值。
更新PC:设置成下一条指令的地址。 4.3.2 SEQ时序的实现 1:组合逻辑和两种存储器设备。 2:取指阶段、译码和写回阶段、执行阶段、访存阶段。 3:.每个时钟周期,程序计数器都会装载新的指令地址。
只有在执行整数运算指令时,才会装载条件码寄存器。
只有在执行mov、push、call指令时,才会写数据存储器。
|
七、遇到的问题及解决 |
八:其他 觉得书本内容过了一遍之后,还需要再详细的进行研究。 参考了:上届的书籍,看了一些百度百科。 |