zoukankan      html  css  js  c++  java
  • 信息安全系统设计基础第六周学习总结(处理器体系结构)

    第六周(10.12-10.18):

    学习计时:共xxx小时
    读书:
    代码:
    作业:
    博客:

    一、学习目标

    1. 了解ISA抽象的作用
    2. 掌握ISA,并能举一反三学习其他体系结构
    3. 了解流水线和实现方式

    二、学习资源

    1. 教材:第四章《处理器体系结构》,详细学习指导见这:重点是4.1-4.3
    2. 课程资料:https://www.shiyanlou.com/courses/413 实验五,课程邀请码:W7FQKW4Y
    3. 教材中代码运行、思考一下,读代码的学习方法见这。

    三、学习方法

    1. 进度很重要:必须跟上每周的进度,阅读,练习,问答,项目。我会认真对待每一位同学,请你不要因为困难半途而废。
    2. 问答很重要:遇到知识难点请多多提问,这是你的权利更是您对自己负责的义务。问答到博客园讨论小组:http://group.cnblogs.com/103791/
    3. 实践很重要:解决书中习题,实践书中实例,完成每周项目,才算真的消化了这本好书。通过实验楼环境或自己安装的虚拟机在实践中进行学习
    4. 实验报告很重要:详细记录你完成项目任务的思路,获得老师点评和帮助自己复习。学习完成后在博客园中(http://www.cnblogs.com/)把学习过程通过博客发表,博客标题“信息安全系统设计基础第六周学习总结”

    四、学习任务

    1. 阅读教材,完成课后练习(书中有参考答案)
      4.1-4.3中练习,重点:4.1 4.2 4.5 4.6 4.8 4.10 4.11 4.12 4.16 4.17 4.19 4.21 4.24
    2. 考核:练习题把数据变换一下
    3. 实验:需要动手的到实验楼中练习一下

    五、后续学习预告(可选):

    第六章《存储器层次结构》

    六、学习过程

    第四章 处理器体系结构

    • 现代微处理器可以称得上是人类创造的最复杂的系统之一。一块手指甲大小的硅片上,可以容纳一个完整的高性能处理器、大的高速缓存,以及用来连接到外部设备的逻辑电路。
      到目前为止,我们看到的计算机系统只限于机器语言程序级。我们知道处理器必须执行系列指令,每条指令执行某个简单操作,例如两个数相加。指令被编码为由一个或多个字节序列组成的二进制格式。
      不同的处理器“家族”,例如intel IA32性能和复杂性不断提高,但是不同的型号在ISA级别上都保持着兼容。一些常见的处理器家族(例如IA32)中的处理器分别由多个厂商提供。因此,ISA在编译器编写者和处理器设计人员之间提供了一个抽象概念层,遍野器编写者只需要允许那些指令,以及他们是如何编码的。

    4.1 Y86指令集体系结构

    4.1.1 程序员可见的状态

    • Y86程序中的每条指令都会读取或者修改处理器状态中的某些部分。这称为程序员可见状态。
      4.1.2 Y86指令
    • i(源操作数)r(目的操作数)movl,rrmovl,mrmovl,rmmovl
      4.1.3 指令编码
    • 字节编码必须有唯一的解释
      每条指令需要1-6个字节不等,每条指令的第一个字节表明指令的类型。
      4.1.4 Y86异常
      对于Y86,当遇到这些异常的时候,我们就简单地让处理器停止执行指令。在更完整的的设计中,处理器通常会调用一个异常处理程序,这个过程被指定用来处理遇到的某种类型的异常。就像在第8章中讲述的,异常处理程序可以被配置成不同的结果,例如,放弃程序或者调用一个用户自定义的信号处理程序。
      4.1.5 Y86程序
      Y86可能需要多条指令来执行一条IA32指令所完成的功能。
      Y86没有伸缩寻址模式。

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

    要实现一个数字系统需要三个主要的组成部分:

    • 计算对位进行操作的函数的组合逻辑
    • 存储位的存储器元素
    • 控制存储器元素更新的时钟信号

    4.2.1 逻辑门
    逻辑门产生的输出,等于它们输入位值的某个布尔函数。

    AND &&
    OR ||
    NOT !
    逻辑门只对单个位的数进行操作,而不是整个字。

    4.2.2 组合电路和HCL布尔表达式

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

    4.2.4 集合关系
    在处理器设计中,很多时候都需要将一个信号与许多可能匹配的信号做比较,以此来检测正在处理的某个指令代码是否属于某一类指令代码。
    4.2.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 性能分析

    4.5.13 未完成的工作

    七、遇到的问题及解决

    知识太多....................理解吃力

    八、其他

    参考资料
    教材:第四章《处理器体系结构》,详细学习指导:http://group.cnblogs.com/topic/73069.html
    课程资料:https://www.shiyanlou.com/courses/413 实验五,课程邀请码:W7FQKW4Y
    读代码的学习方法:http://www.cnblogs.com/rocedu/p/4837092.html。
    -参考博客

  • 相关阅读:
    Java学习
    Java学习
    Java学习
    Java学习
    Java学习
    Java学习
    Java学习
    Citrix 挂经思考
    eBay OA挂经反思
    roblox OA ancestor names 根据roman to int改的
  • 原文地址:https://www.cnblogs.com/cdcode/p/4888435.html
Copyright © 2011-2022 走看看