2017-2018-1 20155214 《信息安全系统设计基础》 第7周学习总结
2017-2018-1 20155214 《信息安全系统设计基础》
第7周学习总结
教材学习内容总结
- 了解ISA抽象的作用
- 掌握ISA,并能举一反三学习其他体系结构
- 了解流水线和实现方式
教材学习中的问题和解决过程
ISA
- ISA简称架构(Architecture),是处理器的一个抽象描述,即设计规范,定义处理器能够做什么。其本质就是一系列的指令集综合。当前主流的ISA有X86、ARM、MIPS、Power、C6000。
- ISA在编译器编写者和处理器设计人员之间提供了一个抽象层:
处理器设计者:依据ISA来设计处理器
处理器使用者:依据ISA就知道CPU选用的指令集,就知道自己可以使用哪些指令以及遵循哪些规范
流水线技术
- 流水线(pipeline)技术是指在程序执行时多条指令重叠进行操作的一种准并行处理实现技术。
- 在CPU中由5—6个不同功能的电路单元组成一条指令处理流水线,然后将一条X86指令分成5—6步后再由这些电路单元分别执行,这样就能实现在一个CPU时钟周期完成一条指令,因此提高CPU的运算速度。
ALU(CPU的重要组件)
ALU是一个组合电路,输出持续响应输入.上图中(0,1, 2, 3)是控制信号,对应于Y86的四种算术/逻辑功能.当然以后你会看到ALU也会为响应不同的条件码,计算不同的值
处理器的硬件部件
处理器中重要的硬件部件.主要有:
- ALU
- 寄存器文件
- 数据寄存器
- 指令寄存器,
- PC增加
- 条件码
HCL描述
通过使用HCL(HardSoft Control Language)能够描述这些逻辑元件的控制逻辑,使得可以抽象地了解它们的功能,而不必知道它们的内部构造。
代码调试中的问题和解决过程
- 问题1:修改Sum函数的Y86代码,实现AbsSum,计算一个数组的绝对值的和,在内循环中使用条件传送语句。
- 问题1解决方案:
Sum-Y86 code
Sum:
pushl %ebp
rrmovl %esp,%ebp
mrmovl 8(%ebp),%ecx
mrmovl 12(%ebp),%edx
xorl %eax,%eax
andl %edx,%edx
je End
Loop:
mrmovl (%ecx),%esi
addl %esi,%eax
irmovl $4,%ebx
addl %ebx,%ecx
irmovl $-1,%ebx
addl %ebx,%edx
jne Loop
End:
rrmovl %ebp,%esp
popl %ebp
ret
修改部分:在mrmovl (%ecx),%esi
获取数组中元素后通过判断%esi中元素的正负,设置条件跳转语句。
修改后d代码如下
AbsSum-Y86 code
Loop:
mrmovl (%ecx),%esi
irmovl $0,%edi
subl %esi,%edi //储存-start到%edi
cmovg %edi,%esi //比较%edi和0,若小于0则修改到%esi
addl %esi,%eax
irmovl $4,%ebx
addl %ebx,%ecx //选择下一个元素
irmovl $-1,%ebx
addl %ebx,%edx //计数减一
jne Loop
- 问题2:根据图4-18~图4-21中执行第一步的第一个操作数,写出SEQ信号中aluB的 信号描述
- 问题2解决方案:
参考aluA的HCL描述:
int aluA = [
icode in {IRRMOVL,IOPL} : valA;
icode in {IIRMOVL,IRMMOVL,IMRMOVL} : valC;
icode in {ICALL,IPUSHL} : -4;
icode in {IRET,IPOPL} : 4;
];
执行阶段的第一步就是每条指令的ALU计算,aluA的值可能是valA,valC或者是-4或+4。
查图4-18~4-21可知,aluB的值可能为valB或0。
因此,依照执行阶段aluB的取值,aluB的HCL描述应为
int aluB = [
icode = {IRMMOVL,IMRMOVL,IOPL,ICALL,IPUSHLIRET,IPOPL} : valB;
icode = {IRRMOVL,IIRMOVL} : 0;
];
代码托管
结对及互评
本周结对学习情况
- [20155216](博客链接)
- 结对照片
- 结对学习内容