2017-2018-1 20155334 《信息安全系统设计基础》第七周学习总结
学习目标:
- 了解ISA抽象的作用
- 掌握ISA,并能举一反三学习其他体系结构
- 了解流水线和实现方式
教材学习内容总结
-
ISA:一个处理器支持的指令和指令的字节级编码称为它的指令集体系结构ISA。
-
逻辑门是数字电路的基本计算元素,它们的输出等于它们输入位值的某个布尔函数;将很多逻辑门组合成一个网,称为组合电路。
-
Y86指令:
- movl:irmovl、rrmovl、mrmovl、rmmovl,分别显式地指明源和目的地的格式。第一个字母表明源的类型,i(立即数)、r(寄存器)或m(存储器 ),第二个字母代表目的,可以是r或者m。
- 条件传送指令cmovXX:cmovle、cmovl、cmove、cmovne、cmovge和comvg,与寄存器-寄存器传送指令rrmovl一样,但只有当条件码满足所需要的约束时才会更新目的寄存器的值。
- 跳转指令jXX:jmp、jle、jl、je、jne、jge、jg,根据分支指令的类型和条件码的设置来选择分支。
- 整数操作指令OPl:addl、subl、andl和xorl。只对寄存器数据进行操作,同时还设置条件码。
- call指令将返回地址入栈,然后跳转到目的地址。ret指令从这样的过程调用中返回。
- pushl和popl:入栈和出栈。
- halt:停止指令的执行。
-
Y86的顺序实现:
将处理组织成阶段,下面是关于各个阶段以及各阶段内执行操作的简略描述:- 取指:取指阶段从存储器读取指令字节,地址为程序计数器(PC)的值。
- 译码:译码阶段从寄存器文件读入最多两个操作数,得到val A/val B.
- 执行:执行阶段,算术/逻辑单元要么执行指令明确的操作,计算存储器引用的有效地址,要么增加或减少栈指针。得到的值称为valE
- 访存:访存阶段可将数据写入存储器或从存储器读出数据
- 写回:最多可写两个结果到存储器。
- 更新PC:将PC设置成下一指令的地址。
-
流水线:
- 由时钟信号控制,使多条指令不同阶段可以同时执行,增加了延迟,提升吞吐量
- 问题:流水阶段长度不一,流水线深度过大插入寄存器影响性能
- 因为存在反馈的流水线导致流水线冒险
- 数据冒险解决方案:暂停,转发,加载使用
- 异常处理
- 控制逻辑和机制
-
实验楼实验:
- 构建YIS环境:
cd ~/Code/shiyanlou_cs413 wget http://labfile.oss.aliyuncs.com/courses/413/sim.tar tar -xvf sim.tar
cd sim sudo apt-get install bison flex tk sudo ln -s /usr/lib/x86_64-linux-gnu/libtk8.6.so /usr/lib/libtk.so sudo ln -s /usr/lib/x86_64-linux-gnu/libtcl8.6.so /usr/lib/libtcl.so make
2.YIS手册下载
3.YIS测试:
cd y86-code
进入测试代码,教材p239页代码为asuml.ys,可以通过
make asuml.yo
进行汇编,asuml.yo就是汇编后的结果,见教材p238。
make all
可以汇编运行所有代码结果。
代码托管
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 75/75 | 1/1 | 5/0 | |
第二周 | 135/210 | 1/2 | 4/9 | |
第三周 | 234/444 | 1/3 | 6/15 | |
第四周 | 486/930 | 1/4 | 8/23 | |
第五周 | 753/1683 | 3/7 | 43/66 | |
第六周 | 503/2186 | 2/9 | 54/120 | |
第七周 | 823/3006 | 2/11 | 43/163 |
尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
耗时估计的公式
:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。
-
计划学习时间:XX小时
-
实际学习时间:XX小时
-
改进情况:
(有空多看看现代软件工程 课件
软件工程师能力自我评价表)