zoukankan      html  css  js  c++  java
  • 2017-2018-1 20155302 《信息安全系统设计基础》第7周学习总结

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

    第四章教材学习内容总结

    4.1.1程序员可见的状态

    有8个程序寄存器,%eax,%ecx,%edx,%ebx,%esi,%edi,%esp,%ebp
    .存储器

    Y86程序用虚拟地址来引用存储器位置,硬件和操作系统软件联合起来将虚拟地址翻译成实际或物理地址
    状态码stat

    它表明程序执行的总体状态,会指示是正常运行还是出现了某种异常。

    4.1.2 Y86指令

    1.Movl指令分成了4个不同的指令:irmovl,rrmovl,mrmovl,rmmovl,分别显式的指明源和目的的格式。

    2.4个整数操作指令

    3.7个跳转指令。

    4.6个条件传送指令

    5.Call和ret

    6.Pop,push

    7.Halt

    4.1.3 指令编码

    整数操作

    分支指令

    传送指令

    当需要指明不应访问任何寄存器时,用ID值0xF表示

    • 寄存器指示符字节

    4.1.4 Y86异常

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

    数字系统三部分组成:组合逻辑、存储器元素、时钟信号。 HCL:硬件控制语言,描述不同处理器设计的控制逻辑。

    1.逻辑门

    AND:&& OR:|| NOT:! 每个门产生的输出等于他输入的某个布尔函数

    2.组合电路和HCL布尔表达式

    组合逻辑电路和c语言中逻辑表达式都是用布尔操作来对输入进行计算的函数。

    区别:

    组合电路的输出会持续地响应输入变化,c语言表达式只有在执行过程中被遇到才求值

    C的逻辑表达式允许参数是任意整数,0是FALSE,其他任何值0的都是TRUE,逻辑门只对位值0和1操作。

    C的逻辑表达式可能被部分求值(第一个参数就能确定结果的就不会对第二个求值)

    两个限制:1.两个及以上逻辑门的输出不能连接在一起(会产生信号矛盾)。

    2.网必须是无环的,不可以有路径经一系列门而形成回路。

    3.字级的组合电路和HCL整数表达式

    同C语言的switch语句不同,我们不要求不同的选择表达式之间互斥。这些选择表达式顺序求值,且第一个求值为1的情况被选中

    通用格式: [ select_1 :expr_1 select_2 :expr_2 ...... ...... select_k :expr_k ]

    4.集合关系

    bool s1= code2||code3; 等价于 bool s1 = code in {2,3}; 表示当code在集合{2,3}中s1为1。

    5.存储器和时钟

    时序电路:有状态,且在这个状态上进行计算的系统。 时序电路的两类存储器设备

    时钟寄存器(寄存器):储存单个位或字,用时钟信号控制寄存器加载输入值。

    随机访问储存器(储存器):储存多个字,用地址选择该读/写哪个字。

    4.3 y86的顺序(sequential)实现

    4.3.1 将处理组织成阶段
    通常,处理一条指令包括很多操作。将它们组织成某个特殊的阶段序列,即使指令的动作差异很大,但所有的指令都遵循统一的序列。每一步的具体操作取决于正在执行的指令。创建这样的框架,我们便能设计一个充分利用硬件的处理器。简略描述:
    1.针对OPl(整数和逻辑运算),rrmovl(寄存器-寄存器传送)和irmovl(立即数-寄存器传送)

    2.针对rmmovl和mrmovl

    3.针对pushl和popl

    4.针对跳转,call和ret

    取指
    译码
    执行
    访存
    写回
    更新PC
    4.3.2 SEQ硬件结构

    4.3.3 SEQ的时序
    时序控制:程序计数器、条件码寄存器、数据寄存器、寄存器文件。
    4.3.4 SEQ阶段的实现

    4.4 流水线的通用原理

    将每条指令的执行分解成五步,每个步骤由一个独立的硬件部分或者阶段来处理。指令步经流水线的各个阶段,且每个时钟周期有一条新指令进入流水线。处理器可以同时执行五条指令的不同阶段。
    4.4.1 计算流水线

    4.4.2 流水线操作的详细说明

    4.4.3 流水线的局限性

    4.4.4 带反馈的流水线系统

    4.5 y86的流水线实现

    4.5.1 SEQ+重新安排计算阶段

    4.5.2 插入流水线寄存器

    4.5.3 对信号进行重新排列和标号

    4.5.4 预测下一个PC

    4.5.5 流水线冒险

    4.5.6 用暂停来避免数据冒险

    4.5.7 用转发来避免数据冒险

    4.5.8 加载/使用数据冒险

    4.5.9 异常处理

    4.5.10 PIPE各阶段的实现

    4.5.11 流水线控制逻辑

    4.5.12 性能分析

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

    本章主要是讲了处理器结构,各种逻辑门、功能单元,指令集,指令的执行,指令执行的流水线等的内容,感觉通过Y86简单的了解了一些处理器体系结构。并且书上用其表示基本的运算和控制,甚至讲了数字电路的HCL 。数据流、组合逻辑和流水线,图示+详细的讲解,让我学习起来还比较顺利。

    代码托管

    https://gitee.com/bestiisjava2017/yxc20155302/tree/master/src/信息安全系统设计基础20155302

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

    1. 遇到问题后我用过百度用各种方式查找实验的问题,在不同的电脑上测试,果然还是答疑论坛最管用了
    2. markdown真的很方便。
    3. 很多人说这本书是入门级教程,但是还是觉得不容易看懂。

    学习进度条

    代码行数(新增积) 博客量(新增积) 学习时间(新增积) 重要成长
    目标 5000行 30篇 400小时
    第一周 0/0 2/2 20/20
    第二周 0/0 2/4 18/38
    第三周 80/80 3/7 22/60
    第四周 180/260 2/9 30/90
    第五周 218/478 2/11 20/110

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

    • 计划学习时间:XX小时

    • 实际学习时间:XX小时

    • 改进情况:

    (有空多看看现代软件工程 课件
    软件工程师能力自我评价表
    )

    参考资料

  • 相关阅读:
    linux ssh 安装、安全设置
    STL底层数据结构实现
    谷粒商城踩坑汇总(分布式高级篇)
    谷粒商城踩坑汇总(分布式基础(全栈开发篇))
    使用Vagrant 后发现虚拟机磁盘空间爆满的血泪填坑记
    Tomcat启动时,控制台和IDEA控制台中文乱码解决方案
    Unknown initial character set index '255' received from server. Initial client character set can be ... 解决方法
    idea打包成功但是resource下的文件没有复制到classes文件夹的解决方法
    tomcat控制台中文乱码怎么处理
    idea中tomcat启动时控制台中文乱码解决
  • 原文地址:https://www.cnblogs.com/STILLlover521/p/7771137.html
Copyright © 2011-2022 走看看