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

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

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

  1. 遇到问题后我用过百度用各种方式查找实验的问题,在不同的电脑上测试,果然还是答疑论坛最管用了
  2. markdown真的很方便。
  3. 很多人说这本书是入门级教程,但是还是觉得不容易看懂。

学习进度条

代码行数(新增积) 博客量(新增积) 学习时间(新增积) 重要成长
目标 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小时

  • 改进情况:

(有空多看看现代软件工程 课件
软件工程师能力自我评价表
)

参考资料

原文地址:https://www.cnblogs.com/STILLlover521/p/7771137.html