2017-2018-1 20155308 《信息安全系统设计基础》第7周学习总结
2017-2018-1 20155308 《信息安全系统设计基础》第7周学习总结
教材学习内容总结
- 指令集体系结构(ISA):一个处理器支持的指令和指令的字节级编码
- Y86指令
只包括四字节整数操作
- movl分为irmovl rrmovl mrmovl rmmovl
- 整数指令:addl subl andl xorl
- 跳转指令:jmp jle jl je jne jge jg
- 条件传送指令:cmovle cmovl cmove cmovne cmovge cmovg
- 逻辑门
- AND:&&
- OR:||
- NOT:!
- 存储器和时钟
-
时序电路:有状态并在这个状态上进行计算的系统
-
时钟寄存器:存储单个位或字,时钟信号控制寄存器加载输入值
-
随机访问存储器:存储多个字,用地址来选择该读或改写哪个字(处理器的虚拟存储器系统、寄存器文件)
-
寄存器作为电路不同部分中的组合逻辑之间的屏障,每当每个时钟到达上升沿的时候,值才会从寄存器的输入传送到输出
- Y86的顺序实现
将处理组织成阶段
- 取值:从存储器读取指令字节,地址为程序计数器PC的值,icod指令代码、ifun指令功能、valc四字节常数、valp下一条指令的地址=PC值+已取出指令长度
- 译码
- 执行:算数/逻辑单元要么执行指令指明的操作计算存储器引用的有效地址,要么增加或减少栈指针,得到的值称为valE
- 访存
- 写回:最多可以写两个结果到寄存器文件
- 更新PC:将PC设置成下一条指令地址
- SEQ硬件结构
- 取值:将程序计数器寄存器作为地址,指令存储器读取指令的字节
- 译码:两个读端口,读寄存器valA和valB
- 执行:根据指令的类型,将算数/逻辑单元用于不同的目的
- 访存:数据存储器读出或写入一个存储器字
- SEQ阶段的实现
- 取指:以PC作为第一个字节的地址,这个单元一次从存储器读出6个字节
- 译码和写回:两个读和两个写端口,每个端口都有一个地址连接和一个数字连接
- 执行:根据alufun信号的设置,对输入的aluA和aluB执行ADD SUBTRACT AND EXCLUSIVE-OR运算,ALU的输出就是valE信号
- 访存:读或写程序数据
- 更新PC:依据指令的类型和是否要选择分支,新的PC可能是valC、valM或valp
实验楼实验
- 创建YIS环境
-
创建文件夹并进入
-
去网站下载sim压缩包
-
解压
-
进入sim文件夹并安装bison flex tk
-
sudo ln -s
-
make
/usr/lib/x86_64-linux-gnu/libtk8.6.so /usr/lib/libtcl.so
- 测试
- cd y86-code
- make xxx.yo
教材学习中的问题和解决过程
- 问题一.教材练习题4.12:写一个电路的HCL代码,对于输入字A\B和C,选择中间值,也就是,输出等于三个输入中居于最小值和最大值之间的那个字。
- 这个问题是一个很简单的问题,当时我在看书的时候,觉得1...:x不是很理解,后来多看了几个例子,感觉这个是一个比较简单的简写。
word Ned3 = {
A <= B && B <= C : B;
C <= B && B <= A : B;
B <= A && A <= C : A;
C <= A && A <= B : A;
1 ;C
}
其实等价于
word Ned3 = {
A <= B && B <= C : B;
C <= B && B <= A : B;
B <= A && A <= C : A;
C <= A && A <= B : A;
A <= C && C <= B : C;
B <= C && C <= A : C;
}
代码调试中的问题和解决过程
无
代码托管
上周考试错题总结
无
其他(感悟、思考等,可选)
这周学习了新的处理器环境,感觉在刚接触的时候,不是很习惯,然后觉得看书也不是很能看懂,通过一些习题的练习和实验楼的实验,我感觉稍微有点感觉了,但是还需努力!
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第三周 | 500/1000 | 2/11 | 22/60 | |
尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。 耗时估计的公式 :Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。 参考:软件工程软件的估计为什么这么难,软件工程 估计方法 |
- 计划学习时间:25小时
- 实际学习时间:30小时
- 改进情况:学习时间有所增长