《设计一组指令集》PPT课件.ppt_第1页
《设计一组指令集》PPT课件.ppt_第2页
《设计一组指令集》PPT课件.ppt_第3页
《设计一组指令集》PPT课件.ppt_第4页
《设计一组指令集》PPT课件.ppt_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

6 004 Fall2002 10 17 0 L12 InstructionSet1 设计一组指令集 缴交实作课报告日 今天下周二10 22 6 004 Fall2002 10 17 0 L12 InstructionSet2 让我们来建构一个简易的计算机吧 计算N N 1 的数据路径 L E 可载入 loadenable 缓存器只在LE 1时载入新值 ANSWER 6 004 Fall2002 10 17 0 L12 InstructionSet3 可程序化控制系统 以这个数据路径来计算N N 1 是一个多步骤的程序 我们可以用一个有限状态机来控制这个程序的每一步骤 如果可以让不同的控制序列加载这个控制有限状态机 那就是说这机器必需是可程序化的 6 004 Fall2002 10 17 0 L12 InstructionSet4 一个初步的程序 再一次 写一个控制程序不外乎是填表 6 004 Fall2002 10 17 0 L12 InstructionSet5 一个最佳化的程序 有些部分的程序可以被同时计算 6 004 Fall2002 10 17 0 L12 InstructionSet6 计算阶乘 可程序化系统的好处是 可们可以重新设定组态来计算新的函数为了要计算N 我们需要加上一些新的逻辑电路以及一个输入到控制有限状态机 6 004 Fall2002 10 17 0 L12 InstructionSet7 计算阶乘的控制架构 可程序性使得我们可以重复使用数据路径来解新的问题 我们所需要的是一个通用的数据路径 它必需能够有效率地解大部分的问题 同时可用较简单的方式来控制它 6 004 Fall2002 10 17 0 L12 InstructionSet8 可程序化引擎 我们已经用相同的数据路径来计算N N 1 及阶乘 还有很多各式各样的计算 是可以简单地重新写入程序到控制有限状态机来达成的 虽然我们的小机器是可程序化的 但它还不够做为一个实用的通用计算器 并且无法通过Turning通用测试 以下有三个主要的理由 1 它的储存空间很有限 它缺少了Turing机器所需的 可延伸 内存资源 2 它只有很少的操作功能 3 它的 程序 是固定的 它缺少了 来举例来说 产生新程序并执行的能力 6 004 Fall2002 10 17 0 L12 InstructionSet9 一般用途计算器冯诺曼 vonNeumann 模型 有许多一般用途计算器的架构被提出并探讨 几乎大部分近代实用的计算器是以约翰冯诺曼 JohnvonNeumann 在1940年代后期所提出的架构来建构的 它包含了以下几个主要的组件 中央处理单元 CPU 包含几个缓存器 以及可以对缓存器的内容执行一组特定的操作之逻辑 内存 储存N个W位的字组 其中W一个固定的架构参数 而N可以依需求被延申 输入 输出 对外沟通的组件 输入 输出 中央处理单元 主存储器 6 004 Fall2002 10 17 0 L12 InstructionSet10 储存程序计算器 冯诺曼架构轻易地指出前述简单可程序化计算机中的前两项限制 较丰富的操作功能 以及可延伸的内存 但是它如何达到 可程序化 这项要求呢 CPU取得并执行 解译 连续的程序指令 程序对解译器来说只是简单的数据 就像在一个通用的Turing机器 单一个可延伸的资源共享区 主存储器 限制了数据和程序的大小 主要概念 内存不只储存数据 也储存了型成一个程序的编码指令 中央处理单元 6 004 Fall2002 10 17 0 L12 InstructionSet11 冯诺曼计算机解析 缓存器 操作 指令被编码为二进制数据程序计数器 PC 下一个将被执行的指令之地址将指令转译成数据路径的控制讯号之逻辑 MEMORY 控制单元 指令 地址 地址 资料 控制讯号 状态 6 004 Fall2002 10 17 0 L12 InstructionSet12 指令集架构 如何选择指令的编码 取舍 效能 压缩度 可程序性一致性 不同的指令应该大小相同 执行时间长度相同 趋势 一致性提供了简单 速度 以及管路技术的可行性 复杂度 有多少不同的指令 何种等级的操作 支持特定软件操作的等级 数组指位 过程调用 多项式求值 等等 简化指令集计算机 RISC 哲学 简易指令 最佳化速度工程及艺术的综合体 尝试 以模拟来达成 是现有最好的技术来决定架构 我们所使用的代表架构 架构 6 004 Fall2002 10 17 0 L12 InstructionSet13 程序模型一个具代表性 简单 当代的RISC 处理器状态 主存储器 通用缓存器 虽然每一个记忆字组 word 是32位宽 由于历史的因素 还是使用字节 byte 内存地址 因为每一个字组 word 包含了四个8位的字节 byte 两个连续的字组的地址相差4 指令取得 执行循环 取得Mem PC PC PC 4 执行所取得的指令 可能会改变PC 重复 6 004 Fall2002 10 17 0 L12 InstructionSet14 有两种指令格式 OPCODE 3个缓存器OPERAND 2个来源 一个目标 OPCODE 2个缓存器OPERAND 16 bit字母常数 指令格式 所有的 指令可以编码成单一个32位字组 word 其中的字段将以下的组合编码一个6 bit操作码 OPCODE 指示 64个指令中的一个 数个5 bit运算区 OPERAND 地址 每个指示32个缓存器中的一个一个内含的16 bit常数 字母 6 004 Fall2002 10 17 0 L12 InstructionSet15 ALU操作 简单的编码操作 加法 ADD 指令 其它相似的ALU操作指令 算数 加法 ADD 减法 SUB 乘法 MUL 除法 DIV 比较 比较相等 CMPEQ 比较小于 CMPLT 比较小或等于 CMPLE 布尔 和 AND 或 OR 互斥 XOR 位移 左位移 SHL 右位移 SHR 右运算位移 SAR 符号表示 ADDC r1 r2 r3 汇编语言 OPCODE 110000 表示ADDC rc 3 表示R3做为目标 ra 1 rb 2表示R1与R2做为来源位置 6 004 Fall2002 10 17 0 L12 InstructionSet16 ALU常数操作 其它相似的ALU操作指令 算数 ADDC SUBC MULC DIVC比较 CMPEQC CMPLTC CMPLEC布尔 ANDC ORC XORC位移 SHLC SHRC SARC 符号表示 ADDC r1 3 r3 OPCODE 110000 表示ADDC rc 3 表示R3做为目标 ra 1 表示R1做为第一个OPERAND 常数栏 表示 3做为第二个OPERAND 正负号延伸 6 004 Fall2002 10 17 0 L12 InstructionSet17 我们需要内建的常数吗 使用常数OPERAND的操作百分比 一个回答架构问题的方法就是 使用小心选择之代表性的标准检查程序 benchmark 程序及 或编码序列 来评估不同的重要性 然后依据某些指标 成本 效能 来做出 最好的 选择 6 004 Fall2002 10 17 0 L12 InstructionSet18 宝宝的第一个Beta程序 片段 假定N被储存在r1中 我们想计算N N 1 并将结果储存在r2 这两个指令完成我们前述的小型单点机器所做的事 当然了 局限于使用缓存器来储存使得我们的野心变小了 它相当于一个FSM的有限储存空间 需求 支持读取及写入主存储器位置的指令集 SUBC r1 1 r2 将N 1放置在r2MUL r2 r1 r2 将N N 1 留在r2 6 004 Fall2002 10 17 0 L12 InstructionSet19 载入及储存 LD ra const rc Reg rc Mem Reg ra sxt const 将内存 地址为 常数C加上ra的内容 中的内容加载缓存器rc 缩写 LD C rc 表示LD R31 C rc ST rc const ra Mem Reg ra sxt const Reg rc 将rc的内容储存至内存 地址为 常数C加上ra的内容 中 缩写 ST rc C 表示ST rc C R31 虽然使用字节地址 但只支持存取字组 word 对齐的32 bit字组 word 地址 低的两个地址字符是忽略的 6 004 Fall2002 10 17 0 L12 InstructionSet20 储存的常规 变量存在内存中操作是在缓存器中完成的缓存器储存了 暂时 的变量 地址在编译时即被指定 编译方法 载入 计算 储存 编译成 或是 写成更易懂的方式 6 004 Fall2002 10 17 0 L12 InstructionSet21 绝对 Constant Value Mem constant 用途 存取静态数据间接 也称为缓存器推迟 Rx Value Mem Reg x 用途 指标存取置换 constant Rx Value Mem Reg x constant 用途 存取区域性变量索引 Rx Ry Value Mem Reg x Reg y 使用 数组存取 基底 索引 一般的 寻址模式 内存间接 Rx Value Mem Mem Reg x 用途 存取内存中的指针自动递加 Rx Value Mem Reg x Reg x 用途 循序之指标存取自动递减 Rx Value Reg X Mem Reg x 用途 堆垒操作缩放 constant Rx Ry Value Mem Reg x c d Reg y 用途 数组存取 基底 索引 嗯 这样的复杂度值得这代价吗 我们需要成本 受益分析 藉由正确地选择Ra和常数 可以达成这些寻址模式 6 004 Fall2002 10 17 0 L12 InstructionSet22 记忆体操作 使用量 不同记忆体操作模式的使用量 记忆体操作 使用量 取自Hennessy Patterson的教课书 置换 间接 缩放 自动递加 内存间接 6 004 Fall2002 10 17 0 L12 InstructionSet23 至目前的功能 表示式的计算翻译一个表示式 intx y y x 3 y 123456 x long 0 y long 0 c long 123456 LD x r1 SUBC r1 3 r1 LD y r2 LD c r3 ADD r2 r3 r2 MUL r2 r1 r1 ST r1 y 变量被储存在所配置的主存储器中变数存取翻译成LD或ST操作翻译成ALU指令小常数翻译成含内建常数的ALU指令 大 常数翻译成初使化过的变数 注 这里我们假设变量地址可以16 bit常数表示 6 004 Fall2002 10 17 0 L12 InstructionSet24 我们可以执行任何的算法吗 至目前为止的模型 循序执行指令 执行的操作数 程序中的指令数 好消息 程序不会进入 永久循环 对目前的Beta子集 可以解决终止的问题 坏消息 无法计算阶乘 只支持有限时的计算 无法达成循环 例如 阶乘 不完整 需要 改变PC的能力 6 004 Fall2002 10 17 0 L12 InstructionSet25 Beta分流指令 Beta的分流指令指供了有条件改变PC的能力 使它指向一个新的附近的地址 并且 可选择地 将我们来自的地址记录下来 在Rc中 对过程调用相当有用 BEQ Ra label Rc 当相等时分流 BNE Ra label Rc 当不等时分流 注 offset 是一个有号常数 它被编码为指令的一部分 6 004 Fall2002 10 17 0 L12 InstructionSet26 现在我们可以执行阶乘了 概要 以C语言表示 输入n 输出ansr1 r2当成暂存变量使用采行我们稍早使用的数据路径之算法 以汇编语言表示的Beta码 n ans loop done 6 004 F

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论