2017-2018-1 20155308 《信息安全系统设计基础》第7周学习总结

2017-2018-1 20155308 《信息安全系统设计基础》第7周学习总结

教材学习内容总结

  • 指令集体系结构(ISA):一个处理器支持的指令和指令的字节级编码
  • Y86指令

只包括四字节整数操作

  1. movl分为irmovl rrmovl mrmovl rmmovl
  2. 整数指令:addl subl andl xorl
  3. 跳转指令:jmp jle jl je jne jge jg
  4. 条件传送指令:cmovle cmovl cmove cmovne cmovge cmovg
  • 逻辑门
  1. AND:&&
  2. OR:||
  3. NOT:!
  • 存储器和时钟
  1. 时序电路:有状态并在这个状态上进行计算的系统

  2. 时钟寄存器:存储单个位或字,时钟信号控制寄存器加载输入值

  3. 随机访问存储器:存储多个字,用地址来选择该读或改写哪个字(处理器的虚拟存储器系统、寄存器文件)

  4. 寄存器作为电路不同部分中的组合逻辑之间的屏障,每当每个时钟到达上升沿的时候,值才会从寄存器的输入传送到输出

  • Y86的顺序实现

将处理组织成阶段

  1. 取值:从存储器读取指令字节,地址为程序计数器PC的值,icod指令代码、ifun指令功能、valc四字节常数、valp下一条指令的地址=PC值+已取出指令长度
  2. 译码
  3. 执行:算数/逻辑单元要么执行指令指明的操作计算存储器引用的有效地址,要么增加或减少栈指针,得到的值称为valE
  4. 访存
  5. 写回:最多可以写两个结果到寄存器文件
  6. 更新PC:将PC设置成下一条指令地址
  • SEQ硬件结构
  1. 取值:将程序计数器寄存器作为地址,指令存储器读取指令的字节
  2. 译码:两个读端口,读寄存器valA和valB
  3. 执行:根据指令的类型,将算数/逻辑单元用于不同的目的
  4. 访存:数据存储器读出或写入一个存储器字
  • SEQ阶段的实现
  1. 取指:以PC作为第一个字节的地址,这个单元一次从存储器读出6个字节
  2. 译码和写回:两个读和两个写端口,每个端口都有一个地址连接和一个数字连接
  3. 执行:根据alufun信号的设置,对输入的aluA和aluB执行ADD SUBTRACT AND EXCLUSIVE-OR运算,ALU的输出就是valE信号
  4. 访存:读或写程序数据
  5. 更新PC:依据指令的类型和是否要选择分支,新的PC可能是valC、valM或valp

实验楼实验

  • 创建YIS环境
  1. 创建文件夹并进入

  2. 去网站下载sim压缩包

  3. 解压

  4. 进入sim文件夹并安装bison flex tk

  5. sudo ln -s

  6. make
    /usr/lib/x86_64-linux-gnu/libtk8.6.so /usr/lib/libtcl.so

  • 测试
  1. cd y86-code
  2. 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小时
  • 改进情况:学习时间有所增长
posted @ 2017-11-05 21:43  郝文菲20155308  阅读(207)  评论(0编辑  收藏  举报