20145327 《信息安全系统设计基础》第六周学习总结
20145327 《信息安全系统设计基础》第六周学习总结
教材学习内容总结
现代微处理器可以称得上是人类创造的最复杂的系统之一。一块手指甲大小的硅片上,可以容纳一个完整的高性能处理器、大的高速缓存,以及用来连接到外部设备的逻辑电路。
到目前为止,我们看到的计算机系统只限于机器语言程序级。我们知道处理器必须执行系列指令,每条指令执行某个简单操作,例如两个数相加。指令被编码为由一个或多个字节序列组成的二进制格式。
不同的处理器“家族”,例如intel IA32性能和复杂性不断提高,但是不同的型号在ISA级别上都保持着兼容。一些常见的处理器家族(例如IA32)中的处理器分别由多个厂商提供。因此,ISA在编译器编写者和处理器设计人员之间提供了一个抽象概念层,遍野器编写者只需要允许那些指令,以及他们是如何编码的。
4.1 Y86指令集体系结构
4.1.1 程序员可见的状态
Y86程序中的每条指令都会读取或者修改处理器状态中的某些部分。这称为程序员可见状态。
4.1.2 Y86指令
i(源操作数)r(目的操作数)movl,rrmovl,mrmovl,rmmovl
4.1.3 指令编码
字节编码必须有唯一的解释
每条指令需要1-6个字节不等,每条指令的第一个字节表明指令的类型。
4.1.4 Y86异常
对于Y86,当遇到这些异常的时候,我们就简单地让处理器停止执行指令。在更完整的的设计中,处理器通常会调用一个异常处理程序,这个过程被指定用来处理遇到的某种类型的异常。就像在第8章中讲述的,异常处理程序可以被配置成不同的结果,例如,放弃程序或者调用一个用户自定义的信号处理程序。
4.1.5 Y86程序
Y86可能需要多条指令来执行一条IA32指令所完成的功能。
Y86没有伸缩寻址模式。
4.2 逻辑设计和硬件控制语言HCL
要实现一个数字系统需要三个主要的组成部分:
计算对位进行操作的函数的组合逻辑
存储位的存储器元素
控制存储器元素更新的时钟信号
4.2.1 逻辑门
逻辑门产生的输出,等于它们输入位值的某个布尔函数。
AND &&
OR ||
NOT !
逻辑门只对单个位的数进行操作,而不是整个字。
4.2.2 组合电路和HCL布尔表达式
4.2.3 字级的组合电路和HCL整数表达式
4.2.4 集合关系
在处理器设计中,很多时候都需要将一个信号与许多可能匹配的信号做比较,以此来检测正在处理的某个指令代码是否属于某一类指令代码。
4.2.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.57
A.
发现加载/使用冒险的逻辑公式:
( E_icode in {IMRMOVL, IPOPL} && E_dstM in {d_srcA, d_srcB})
&&
!(E_icode == IMRMOVL && D_icode == IPUSHL);
B.
e_valA = [ (E_icodeIPUSH) && (M_dstME_srcA) : m_valM;
1 : E_valA;
];
本周代码托管截图
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 100/100 | 2/2 | 10/10 | |
第二周 | 100/200 | 1/3 | 20/30 | |
第三周 | 80/280 | 1/4 | 15/45 | |
第五周 | 100/380 | 1/5 | 15/60 | |
第六周 | 100/480 | 1/6 | 15/75 |