2017-2018-1 20155226《信息安全系统设计基础》第7周学习总结
教材学习内容总结
流水线化的处理器:
- 将每条指令的执行分解成五步,每个步骤由一个独立的硬件部分或者阶段来处理。指令步经流水线的各个阶段,且每个时钟周期有一条新指令进入流水线。所以处理器可以同时执行五条指令的不同阶段。
程序员可见的状态:
- Y86程序中的每条指令都会读取或者修改处理器状态中的某些部分。这称为程序员可见状态。
Stat
- 程序状态的最后一个部分是状态码Stat,它表明程序执行的总体状态;它会指示是正常运行还是出现了某种异常。
Y86
-
一个简单的、可以称之为IA32指令集的子集的指令集;只包括四字节整数操作,寻址方式比较少。指令编码长度从1——6字节不等。
-
关于指令结构,每条指令的第一个字节表明指令的类型;这个字节分为两个部分,每部分四位:高四位是代码部分(0——0xB),第四位是功能部分。这里补充一些缩写:立即数(i),寄存器(r)、存储器(m)。指令附加的寄存器指示符字节依次是数据源(如果是立即数,把这一位设置成0xf)、目的寄存器/基址寄存器。有些指令需要附加四字节的常数字,采用小端法(倒序)编码
stat代码可能取值反应了机器的不同状态
- AOK:正常操作(除此之外的任何状态都会使得处理器停止执行指令)
- HLT:处理器执行halt指令
- ADR:遇到非法地址2015/10/14 17:16:25
- INS:遇到非法指令
多路复用电路(MUX)
- 根据输入控制信号的值,从一组不同的数据信号中选出一个。
算术/逻辑单元(ALU)
- 根据控制输入的设置(0,1,2,3),电路会对数据输入执行不同的算数或者逻辑操作(+,-,&,^)。
时序电路
- 有状态并且在这个状态上进行计算的系统
时钟寄存器&随机访问存储器
-
时钟寄存器存储单个位或者字。时钟信号控制寄存器加载输入值
-
随机访问存储器存储多个字,用地址来选择该读入或者该写哪个字
处理操作的阶段
-
取指:从寄存器读取指令字节,地址为程序计数器的值。计算下一条指令地址等于PC中的值加上已取出指令的长度
-
译码:从寄存器文件中最多读出两个操作数
-
执行:ALU执行指明的操作、引用的有效地址或者是修改栈指针
-
访存:将数据写入存储器或者从存储器读出数据
-
写回:写两个结果到寄存器文件
-
更新PC:将PC设置成下条指令地址
关于一些指令的处理步骤
-
irmovl指令的处理与rrmovl类似,但是因为是长指令格式,所以程序计数器要加6
-
指令call和ret与之前的popl和pushl类似。对于指令call,我们要将valP也就是call之后的那条指令的地址压入栈中在更新PC阶段,将PC设置为valC,也就是调用目的地
代码托管
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 25/50 | 1/1 | 10/10 | |
第7周 | 25/157 | 2/7 | 20/95 |
尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
耗时估计的公式
:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。
-
计划学习时间:20小时
-
实际学习时间:25小时
(有空多看看现代软件工程 课件
软件工程师能力自我评价表)