2017-2018-1 20155302 《信息安全系统设计基础》第7周学习总结
第四章教材学习内容总结
4.1.1程序员可见的状态
有8个程序寄存器,%eax,%ecx,%edx,%ebx,%esi,%edi,%esp,%ebp
.存储器
Y86程序用虚拟地址来引用存储器位置,硬件和操作系统软件联合起来将虚拟地址翻译成实际或物理地址
状态码stat
它表明程序执行的总体状态,会指示是正常运行还是出现了某种异常。
4.1.2 Y86指令
1.Movl指令分成了4个不同的指令:irmovl,rrmovl,mrmovl,rmmovl,分别显式的指明源和目的的格式。
2.4个整数操作指令
3.7个跳转指令。
4.6个条件传送指令
5.Call和ret
6.Pop,push
7.Halt
4.1.3 指令编码
整数操作
分支指令
传送指令
当需要指明不应访问任何寄存器时,用ID值0xF表示
• 寄存器指示符字节
4.1.4 Y86异常
4.2、逻辑设计和硬件控制语言HCL
数字系统三部分组成:组合逻辑、存储器元素、时钟信号。 HCL:硬件控制语言,描述不同处理器设计的控制逻辑。
1.逻辑门
AND:&& OR:|| NOT:! 每个门产生的输出等于他输入的某个布尔函数
2.组合电路和HCL布尔表达式
组合逻辑电路和c语言中逻辑表达式都是用布尔操作来对输入进行计算的函数。
区别:
组合电路的输出会持续地响应输入变化,c语言表达式只有在执行过程中被遇到才求值
C的逻辑表达式允许参数是任意整数,0是FALSE,其他任何值0的都是TRUE,逻辑门只对位值0和1操作。
C的逻辑表达式可能被部分求值(第一个参数就能确定结果的就不会对第二个求值)
两个限制:1.两个及以上逻辑门的输出不能连接在一起(会产生信号矛盾)。
2.网必须是无环的,不可以有路径经一系列门而形成回路。
3.字级的组合电路和HCL整数表达式
同C语言的switch语句不同,我们不要求不同的选择表达式之间互斥。这些选择表达式顺序求值,且第一个求值为1的情况被选中
通用格式: [ select_1 :expr_1 select_2 :expr_2 ...... ...... select_k :expr_k ]
4.集合关系
bool s1= code2||code3; 等价于 bool s1 = code in {2,3}; 表示当code在集合{2,3}中s1为1。
5.存储器和时钟
时序电路:有状态,且在这个状态上进行计算的系统。 时序电路的两类存储器设备
时钟寄存器(寄存器):储存单个位或字,用时钟信号控制寄存器加载输入值。
随机访问储存器(储存器):储存多个字,用地址选择该读/写哪个字。
4.3 y86的顺序(sequential)实现
4.3.1 将处理组织成阶段
通常,处理一条指令包括很多操作。将它们组织成某个特殊的阶段序列,即使指令的动作差异很大,但所有的指令都遵循统一的序列。每一步的具体操作取决于正在执行的指令。创建这样的框架,我们便能设计一个充分利用硬件的处理器。简略描述:
1.针对OPl(整数和逻辑运算),rrmovl(寄存器-寄存器传送)和irmovl(立即数-寄存器传送)
2.针对rmmovl和mrmovl
3.针对pushl和popl
4.针对跳转,call和ret
取指
译码
执行
访存
写回
更新PC
4.3.2 SEQ硬件结构
4.3.3 SEQ的时序
时序控制:程序计数器、条件码寄存器、数据寄存器、寄存器文件。
4.3.4 SEQ阶段的实现
4.4 流水线的通用原理
将每条指令的执行分解成五步,每个步骤由一个独立的硬件部分或者阶段来处理。指令步经流水线的各个阶段,且每个时钟周期有一条新指令进入流水线。处理器可以同时执行五条指令的不同阶段。
4.4.1 计算流水线
4.4.2 流水线操作的详细说明
4.4.3 流水线的局限性
4.4.4 带反馈的流水线系统
4.5 y86的流水线实现
4.5.1 SEQ+重新安排计算阶段
4.5.2 插入流水线寄存器
4.5.3 对信号进行重新排列和标号
4.5.4 预测下一个PC
4.5.5 流水线冒险
4.5.6 用暂停来避免数据冒险
4.5.7 用转发来避免数据冒险
4.5.8 加载/使用数据冒险
4.5.9 异常处理
4.5.10 PIPE各阶段的实现
4.5.11 流水线控制逻辑
4.5.12 性能分析
教材学习中的问题和解决过程
本章主要是讲了处理器结构,各种逻辑门、功能单元,指令集,指令的执行,指令执行的流水线等的内容,感觉通过Y86简单的了解了一些处理器体系结构。并且书上用其表示基本的运算和控制,甚至讲了数字电路的HCL 。数据流、组合逻辑和流水线,图示+详细的讲解,让我学习起来还比较顺利。
代码托管
https://gitee.com/bestiisjava2017/yxc20155302/tree/master/src/信息安全系统设计基础20155302
其他(感悟、思考等,可选)
- 遇到问题后我用过百度用各种方式查找实验的问题,在不同的电脑上测试,果然还是答疑论坛最管用了
- markdown真的很方便。
- 很多人说这本书是入门级教程,但是还是觉得不容易看懂。
学习进度条
代码行数(新增积) | 博客量(新增积) | 学习时间(新增积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 0/0 | 2/2 | 20/20 | |
第二周 | 0/0 | 2/4 | 18/38 | |
第三周 | 80/80 | 3/7 | 22/60 | |
第四周 | 180/260 | 2/9 | 30/90 | |
第五周 | 218/478 | 2/11 | 20/110 |
-
计划学习时间:XX小时
-
实际学习时间:XX小时
-
改进情况:
(有空多看看现代软件工程 课件
软件工程师能力自我评价表)