首页 > 技术文章 > 20135210程涵——第六周学习总结

ClareOhno 2015-10-16 22:02 原文

第六周(10.12-10.18):

学习计时:共15小时

读书:5

代码:2

作业:4

博客:4

一、学习目标

1. 了解ISA抽象的作用
2. 掌握ISA,并能举一反三学习其他体系结构
3. 了解流水线和实现方式

二、学习资源

1. 教材:第四章《处理器体系结构》,详细学习指导见:重点是4.1-4.3

2. 课程资料:https://www.shiyanlou.com/courses/413   实验五,课程邀请码:W7FQKW4Y

3. 教材中代码运行、思考一下,读代码的学习方法见

 

三、学习方法

1.  进度很重要:必须跟上每周的进度,阅读,练习,问答,项目。我会认真对待每一位同学,请你不要因为困难半途而废。

2. 问答很重要:遇到知识难点请多多提问,这是你的权利更是您对自己负责的义务。问答到博客园讨论小组:http://group.cnblogs.com/103791/
3. 实践很重要:解决书中习题,实践书中实例,完成每周项目,才算真的消化了这本好书。通过实验楼环境或自己安装的虚拟机在实践中进行学习
4. 实验报告很重要:详细记录你完成项目任务的思路,获得老师点评和帮助自己复习。学习完成后在博客园中(http://www.cnblogs.com/)把学习过程通过博客发表,博客标题“信息安全系统设计基础第六周学习总结”

 

四、学习任务

(提示:请将要求学生完成的任务、测验或思考题列在此处)

 

 

1. 阅读教材,完成课后练习(书中有参考答案)

   4.1-4.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

2. 考核:练习题把数据变换一下

3. 实验:需要动手的到实验楼中练习一下


 

 

、后续学习预告(可选):

第六章《存储器层次结构》

、学习过程

 

4.1 Y86指令集体系结构

 

4.1.1 程序员可见的状态

 

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

 

Y86程序员可见状态(图)

 

 

存储器,从概念上来说就是一个很大的字节数组,保存着程序和数据。

Y86程序用虚拟地址来引用存储器位置。

 

 

4.1.2 Y86指令

  • Y86指令

IA32指令集的一个子集,只包括四字节整数操作。寻址方式比较少,操作也比较少。

  • Y86指令相关细节
  1. IA32的movl指令分成了4个不同的指令:irmovl、rrmovl、mrmovl和rmmovl。分别显示地指明源和目的的格式。(源可以是立即数i,寄存器r,或存储器m;目的可以使寄存器r和存储器m。)两个存储器传送指令中的存储器引用方式是简单的基址和偏移量形式。在地址计算中,我们不支持第二变址寄存器和任何寄存器值的伸缩。同IA32一样,不允许从一个存储器地址直接传送到另一个存储器地址。也不允许将立即数传送到存储器。
  2. 有4个整数操作指令。addl、subl、andl和xorl。
  3. 7个跳转指令(jXX)。jmp、jle、jl、je、jne、jge和jg。
  4. 有6个条件传送指令(cmovXX)。cmovle、cmovl、cmove、cmovne、cmovge和cmovg。只有当条件码满足所需要的约束时,才会更新目的寄存器的值。
  5. call指令将返回地址入栈,然后跳到目的地址。ret指令从这样的过程调用中返回。
  6. pushl和popl指令实现了入栈和出栈。
  7. halt指令停止指令的执行。对于Y86来说,执行halt指令会导致处理器停止,并将状态码设置为HLT。

 

4.1.3 指令编码

每条指令的第一个字节表明指令的类型。这个字节分为两个部分,每个部分4位,高4位是代码部分,低4位是功能部分。

 

Y86指令集的功能码如图4-3.

 

  • 8个程序寄存器中每个都有相应的0~7的寄存器标识符
  • 指令集的一个重要性质就是字节编码必须有唯一的解释。任意一个字节序列要么是一个唯一的指令序列的编码,要么就不是一个合法的字节序列。Y86就具有这个性质,因为每条指令的第一个字节有唯一的代码和功能组合,给定这个字节,我们就可以决定所有其它附加字节的长度和含义。这个性质保证了处理器可以无二异性的执行目标代码程序。

 

 

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

  • 要实现一个数字系统需要三个主要的组成部分:计算对位进行操作的函数的函数的组合逻辑、存储位的存储器元素,以及控制存储器元素更新的时钟信号。

 

4.2.1 逻辑门

逻辑门是活动的。一旦一个门的输入变化了,在很短的时间内,输出就会相应的变化。

 

4.2.2 组合电路和HCL布尔表达式 

将很多的逻辑门组合成一个网,就能构建计算块,成为组合电路。

  • 构建这些网有两条限制:
  1. 两个或多个逻辑门的输出不能连接在一起。否则他们可能会使线上的信号矛盾,可能会导致一个不合法的电压或电路故障。
  2. 这个网必须是无环的。在网中不能有路径经过一系列的门而形成一个回路,这样的回路会导致该网络计算的函数有歧义。

 

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

 

如图


 

4.2.4 集合关系

在处理器设计中,很多时候都需要将一个信号与许多可能匹配的信号做比较,以此来检测正在处理的某个指令代码是否属于某一类指令代码。

 

 

4.2.5 存储器和时钟

组合电路从本质上讲,不存储任何信息。它们只是简单的相应输入信号,产生等于输入的某个函数的输出。

 

  • 两类存储器设备:
  1. 时钟寄存器:存储单个位或字。时钟信号控制寄存器加载输入值。
  2. 随机访问存储器:存储多个字,用地址来选择该读或改写哪个字。

 

 

4.3 Y86的顺序实现

 

4.3.1 将处理组织成阶段

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

 

4.3.2 SEQ硬件结构

在SEQ中,所有硬件单元的处理都在一个时钟周期内完成。

 

4.3.3 SEQ的时序

4.3.4 SEQ阶段的实现

SEQ小结:

不能充分利用硬件单元,因为每个单元只在整个时钟周期的一部分时间内才被使用。

 

 

 

七、遇到的问题及解决

(提示:此处由学生填写,是重要的得分点,要写出遇到的问题和解决方案以及对出现问题的思考)

 SEQ通过将执行每条不同指令所需的步骤组织成一个统一的流程,就可以用很少量的各种硬件单元以及一个时钟来控制计算的顺序,从而实现整个处理器。

前三节的内容中,SEQ阶段的实现内容比较多,阅读和理解的时间比较长。

 

八、其他

(提示:此处由学生填写,灵感,领悟等)

 

课堂演示的内容Blog下周单独写一份。

推荐阅读