2019-2020-1 20175320 《信息安全系统设计基础》第六周学习总结

2019-2020-1 20175320 《信息安全系统设计基础》第六周学习总结

一、教材学习内容总结

本周我们了解了Y86-64指令体系结构,并在此基础上了解了硬件控制语言HCL。Y86-64是《深入理解计算机系统》这本书的作者出的指令集,目的是为了让我们更加清楚地了解ISA,该指令集的指令基本都是从x86而来。以下是对本章内容的总结:

程序员可见状态

  • y86-64中的程序员既可指用汇编编写程序的人,也可值产生机器级代码的编译器。
  • 可见状态,即指寄存器、存储器、条件码、PC以及程序状态。

Y86-64指令编码

y86-64指令的指令编码长度为一字节到十字节,由三大部分(一个字节的指令指示符,一个字节的寄存器指示符,一个八字节的立即数),五小部分组成。编码的第一个字节的前半部分表示指令的种类,后半部分表示功能码(用来区别具体指令,比如确定分支类型),寄存器指示符的前半部分以及后半部分分别表示一个寄存器,当没有使用寄存器时使用十六进制数的F代替。根据指令的不同可以选择不同的指示符以及编码长度来表示,例如jxx dest可以用六进制编码7 Fn DEST表示(Fn表示分支类型)。

逻辑设计和硬件控制语言HCL

HCL的情况表达式的通用格式为:x=[ selct1 :expr1 ; select2 :expr2;];,而在实际使用的过程中,经常需要在判断条件中使用集合关系,比如:bool s1=code in{2,3};bool s0=code in{1,3};
在逻辑设计过程中,多个逻辑门的组合具有以下限制条件:

  • 一个系统输入
  • 两个或多个逻辑门的输出不能连接在一起
  • 这个网必须是无环的

Y86-64的顺序实现

为了使处理器充分利用硬件,处理器工作分为六阶段:
1、取指(地址为PC的值,从内存中取指令,同时给valc和valp赋值)
2、译码(从寄存器文件读入两个操作数valA与valB,即从寄存器中读出值)
3、执行(ALU将计算内存的有效地址或修改栈指针,计算结果为valE)
4、访存(将数据读出或写入内存,记作valM)
5、写回(将最多两个结果写入寄存器文件,即对寄存器的值进行修改)
6、更新(将PC设置为下一条指令的地址)
其中,所有指令都要进行取指、执行以及更新PC的过程,irmovq指、JXX指令不经过译码阶段,OPQ、rrmovq、irmovq以及JXX指令不经过访存阶段,rmmovq、JXX指令不经过写回的阶段。

SEQ硬件结构


其中需要注意的是:

  • PC是SEQ中唯一的时钟寄存器
  • 宽度为字长的数据用中等粗度的线表示,宽度为字节或者更窄的连接用细线表示,单个位连接使用虚线表示
  • SEQ通过组合逻辑或两种存储器设备实现
  • SEQ组织计算时遵循的准则:1、从不回读,处理器从不需要为了完成一条指令的执行而去读由该指令更新了的状态。2、当一个时钟上升沿到来时,状态单元是根据前一条指令设置的
  • PC增加器中,新的PC值等于p+1+r+8i(r为need_regids的值即有没有使用寄存器,i为need_val的值,即有没有使用立即数)
  • 状态码的几种情况:SADR(遇到非法地址)、SINS(遇到非法指令)、HALT(遇到HALT指令,即处理器停止)以及SAOK(指令正常操作)

二、教材学习中的问题和解决过程

y86-64是基于x86-64指令集而来,教材学习过程中并没有碰到问题。

三、代码调试中的问题和解决过程

本周主要是理论内容,代码量不大,运行过程中并没有碰到问题。

四、代码托管

五、上周考试错题总结

问题一:

问题一解析:enter等价于pushq %rbp movq %rsp, %rbp
问题二:

问题二解析:内存之间不能直接mov,要用寄存器中转。b,w,l,q表示的长度要和寄存器匹配
问题三:

问题三解析:X86-64中虚拟地址的数量目前是2^48个,在目前的实现中,这些地址的高16位必须设置为0,所以一个地址实际上能够指定的是2^48或64TB范围内的一个字节。

六、其他(感悟、思考等,可选)

本章内容是由x86-64的指令集发展而来,并帮助我们理解处理器工作的过程,本身内容并不复杂,但是编码等内容较为繁琐,需要记忆指令以及寄存器对应的编码,并理解顺序实现过程中不同的命令在各步骤所进行的操作。本章内容是为了让我们更加清楚地了解ISA,了解CPU处理器的工作流程,有助于我们更好地了解计算机系统。

七、学习进度条

博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 30篇 400小时
第三周 1/1 13/13
第四周 1/2 22/35
第五周 1/3 30/65
第六周 1/4 25/90

尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。 耗时估计的公式 :Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。

参考:软件工程软件的估计为什么这么难软件工程 估计方法

参考资料

猜你喜欢

转载自www.cnblogs.com/nameless-student/p/11707282.html