20145222《信息安全系统设计基础》第六周学习总结(2)

20145222《信息安全系统设计基础》第六周学习总结(2)

补充加强版

教材学习内容总结

4.1Y86指令集体系结构

  • Y86指令集是IA32指令集的一个子集,只包括四字节整数操作。寻址方式比较少,操作也比较少。

  • 指令编码长度从1个字节到6个字节不等,一条指令含有一个单字节的指令指示符,可能含有一个单字节的寄存器指示符,还可能含有一个四字节的常数字。字段fn指明是某个整数操作(OPL)、数据移动条件(cmovXX)或是分支条件(jXX),所有数值都用十六进制表示

  • 8个程序寄存器中每个都有相应的0~7的寄存器标识符,程序寄存器存在一个寄存器文件中,这个寄存器文件就是一个小的、以寄存器ID作为地址的随机访问存储器。当需要指明不应访问任何寄存器时,用ID值0xF表示。

  • Y86异常:Y86状态码(在我们的设计中,任何AOK以外的代码都会使处理器停止)

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

  • 存储设备都是由同一个时钟控制,两类存储器设备包括:
    - 时钟寄存器(寄存器):储存单个位或字,用时钟信号控制寄存器加载输入值。
    - 随机访问储存器(储存器):储存多个字,用地址选择该读/写哪个字。
  • 存储器和时钟中,处理器有一个随机访问存储器来存储程序数据。

4.3 Y86的顺序实现

  • SEQ阶段的实现:
    • 取指阶段:
      - a.以PC为第一个字节的地址,一次读6个字节。
      - b.icode:控制逻辑块计算指令
      - c.ifun:功能码
      - d.三个一位的信号(根据icode值计算):instr_valid:发现不合法的指令;need_regids:包含寄存器指示符字节吗;need_valC:包括常数字
      - e.后五个字节是寄存器指示符字节和常数字的组合编码。
    • 译码和写回阶段:
      - a.都需要访问寄存器文件,根据四个端口的情况,判断应该读哪个寄存器产生信号valA、valB。
      - b.寄存器文件,支持同时进行两个读和两个写,每个端口有一个地址连接(寄存器ID)和一个数据连接(32根线路),既可以作为寄存器文件的输出字,又可以作为他的输入字。
    • 执行阶段:
      - a.包括算数/逻辑单元(ALU),输出为valE信号。ALU通常作为加法器使用
      - b.包括条件码寄存器
      - c.每次运行产生:零、符号、溢出、产生信号set_cc
    • 访存阶段:
      - a.读或者写程序数据。
      - b.两个数据块产生存储器地址和存储器输入证据的值,两个产生控制信号表明应该是读还是写。当执行读操作时,数据存储器产生valM。
      - c.根据icode,imem_error,instr_valid,dmem_error,从指令执行的结果计算状态码Stat。
    • 更新PC阶段:
      - 产生程序计数器的新值,依据指令的类型和是否要选择分支,新的PC可能是valC、valM或者valP。
  • 处理器设计的几个重要经验:
    • 管理复杂性是首要问题,尽量保持硬件设计的简单。
    • 不需要直接实现ISA。
    • 一开始就保证设计正确是非常重要的。

本周代码托管截图

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 4000行 30篇 400小时
第一周 0/0 2/3 10/20 掌握了几个命令
第二周 0/0 1/4 8/28 熟练了vim编辑器的操作
第三周 40/40 1/5 12/40 开始敲代码了
第五周 36/76 2/7 15/55 慢慢熟悉了汇编语言
第六周 12/88 2/9 16/71 对机器语言指令有了更深一步的理解

参考资料

posted @ 2016-10-23 23:48  20145222黄亚奇  阅读(159)  评论(1编辑  收藏  举报