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:寄存器:8个。每一个寄存器可以存储一个字。

                   寄存器%esp被入栈、出栈、调用和返回指令作为栈指针。
           条件码:ZF,SF,OF。保存着最近的算术或者逻辑运算所造成的影响

                                的有关信息。

          PC:存放在当前的正在执行的指令的地址。 

          存储器:很大的字节数组,保存着程序和数据,用虚拟地址来访问存储器 

                                 硬件和操作系统会将虚拟地址翻译为实际的(或物理)地址。

          状态码:stat表明程序执行的总体状态(正常还是出现某种异常)。

     4.1.2 Y86 指令

              1:Y86指令基本上是IA32指令集的一个子集。就是处理器实现的目标。

              2:图4.2 左边指令的汇编表示,右边是字节编码。

              3:Y86指令集:从1到6个字节不等。一条指令含有一个单字节的指令指示符,可能

                  含有一个单字节的寄存器指示符。还可能含有一个四字节的常数字。

                  字段fn指明某个整数操作(op1)、数据移动(cmovXX)、或是分支条件

                 (jxx)。所有的数值用十六进制表示。

             4:更多的细节问题:
                a:IA32
的movl指令分成了4个不同的指令:irmovl、rrmovl、mrmovl和

                     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:描述程序执行的总体状态

         a:AOK    正常操作
         b:HLT    处理器执行halt指令
         c:ADR    遇到非法地址
         d:INS    遇到非法指令

 

                 遇到异常,处理器停止执行指令。

 

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语言逻辑中表达式的对应之处。

                    组合电路:逻辑门组成;输出会持续响应输入变化;只对0、1进行操作。
                C语言逻辑表达式:只在程序执行过程中遇到时进行求值;允许参数是任何

                         整数。0表示FALSE,其他任何值都可以表示true。

                                            还有个属性就是:只可能被部分求值。

 

      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指令时,才会写数据存储器。

 

 

 

         

 

 

 

 

        

 

 

七、遇到的问题及解决

八:其他

       觉得书本内容过了一遍之后,还需要再详细的进行研究。

      参考了:上届的书籍,看了一些百度百科。

 
posted @ 2015-10-18 16:17  偷影子的人  阅读(279)  评论(0编辑  收藏  举报