计算机组成和体系结构第三讲

2020-03-16 111浏览

  • 1.计算机组成和体系结构 第三讲 四川大学网络空间安全学院 2020年3月9日 封面来自Corsair.com 1
  • 2.版权声明 课件中所使用的图片、视频等资源版权归原作者所有。 课件原创内容采用 创作共用署名-非商业使用-相同方 式共享4.0国际版许可证(Creative Commons BY-NC-SA 4.0 International License) 授权使用。 Copyright@四川大学网络空间安全学院计算机组成与体系结构课程组,2020 2
  • 3.上期内容回顾 非冯-诺依曼模型 单核非冯-诺依曼模型 并行计算 异构计算 数字电路基础回顾 数据表示 布尔代数和常见电路 CPU基本知识和组织结构 寄存器、ALU、控制单元 总线、时钟、I/O子系统 如何理解CPU时间计算公式 3
  • 4.本期学习目标 计算机模型2 内存概述 体系结构 交叉存储器 中断及中断处理 计算机模型3: MARIE机器 体系结构 指令集 寄存器传输表示 汇编语言 控制单元的实现 现实世界中的指令集 4
  • 5.中英文缩写对照表 英文缩写 英文全称 中文全称 ISA Instruction Set Architecture 指令集架构 RAM Random Access Memory 随机访问内存 RTL Register Transfer Language 寄存器传输语言 RTN Register Transfer Notation 寄存器传输表示 5
  • 6.计算机模型2: 内存、中断 6.1
  • 7.内存体系结构 6.2
  • 8.内存体系结构 内存的逻辑表示 6.2
  • 9.内存体系结构 内存的逻辑表示 每个内存可以看作一个𝐿 × 𝑊的矩阵 6.2
  • 10.内存体系结构 内存的逻辑表示 每个内存可以看作一个𝐿 × 𝑊的矩阵 每一行称为一个存储位置(memory location),代表了一个可寻 址单元,长度 𝑊即可寻址单元的大小 6.2
  • 11.内存体系结构 内存的逻辑表示 每个内存可以看作一个𝐿 × 𝑊的矩阵 每一行称为一个存储位置(memory location),代表了一个可寻 址单元,长度 𝑊即可寻址单元的大小 每一个可寻址单元对应了一个唯一的地址编号,从0到𝐿 − 1 顺序递增。地址所需位 数:⌈ log� 𝐿⌉。例:4M × 8的内存 需要⌈ log� 4M⌉ = ⌈ log� 2 ��⌉ = 22位 6.2
  • 12.内存体系结构 内存的逻辑表示 每个内存可以看作一个𝐿 × 𝑊的矩阵 每一行称为一个存储位置(memory location),代表了一个可寻 址单元,长度 𝑊即可寻址单元的大小 每一个可寻址单元对应了一个唯一的地址编号,从0到𝐿 − 1 顺序递增。地址所需位 数:⌈ log� 𝐿⌉。例:4M × 8的内存 需要⌈ log� 4M⌉ = ⌈ log� 2 ��⌉ = 22位 常见寻址方式 6.2
  • 13.内存体系结构 内存的逻辑表示 每个内存可以看作一个𝐿 × 𝑊的矩阵 每一行称为一个存储位置(memory location),代表了一个可寻 址单元,长度 𝑊即可寻址单元的大小 每一个可寻址单元对应了一个唯一的地址编号,从0到𝐿 − 1 顺序递增。地址所需位 数:⌈ log� 𝐿⌉。例:4M × 8的内存 需要⌈ log� 4M⌉ = ⌈ log� 2 ��⌉ = 22位 常见寻址方式 按字寻址(word-addressable):可寻址单元大小为一个字(常见 为16位、32位及64位) 6.2
  • 14.内存体系结构 内存的逻辑表示 每个内存可以看作一个𝐿 × 𝑊的矩阵 每一行称为一个存储位置(memory location),代表了一个可寻 址单元,长度 𝑊即可寻址单元的大小 每一个可寻址单元对应了一个唯一的地址编号,从0到𝐿 − 1 顺序递增。地址所需位 数:⌈ log� 𝐿⌉。例:4M × 8的内存 需要⌈ log� 4M⌉ = ⌈ log� 2 ��⌉ = 22位 常见寻址方式 按字寻址(word-addressable):可寻址单元大小为一个字(常见 为16位、32位及64位) 按字节寻址(byte-addressable):可寻址单元大小为一个字节(8 位) 6.2
  • 15.内存体系结构 内存的逻辑表示 每个内存可以看作一个𝐿 × 𝑊的矩阵 每一行称为一个存储位置(memory location),代表了一个可寻 址单元,长度 𝑊即可寻址单元的大小 每一个可寻址单元对应了一个唯一的地址编号,从0到𝐿 − 1 顺序递增。地址所需位 数:⌈ log� 𝐿⌉。例:4M × 8的内存 需要⌈ log� 4M⌉ = ⌈ log� 2 ��⌉ = 22位 常见寻址方式 按字寻址(word-addressable):可寻址单元大小为一个字(常见 为16位、32位及64位) 按字节寻址(byte-addressable):可寻址单元大小为一个字节(8 位) 按字节寻址方式寻址一个字:用最低位字节的地址表示 6.2
  • 16.内存体系结构 内存的逻辑表示 每个内存可以看作一个𝐿 × 𝑊的矩阵 每一行称为一个存储位置(memory location),代表了一个可寻 址单元,长度 𝑊即可寻址单元的大小 每一个可寻址单元对应了一个唯一的地址编号,从0到𝐿 − 1 顺序递增。地址所需位 数:⌈ log� 𝐿⌉。例:4M × 8的内存 需要⌈ log� 4M⌉ = ⌈ log� 2 ��⌉ = 22位 常见寻址方式 按字寻址(word-addressable):可寻址单元大小为一个字(常见 为16位、32位及64位) 按字节寻址(byte-addressable):可寻址单元大小为一个字节(8 位) 按字节寻址方式寻址一个字:用最低位字节的地址表示 对齐(alignment)问题:当字长为2 �(𝑘 ≤ 3),采用按字节寻址 方式,字的 地址满足𝑥 mod 2 � − � = 0。例:字长为32时, 采用按字节寻址,一个字的地 址为4的倍数 6.2
  • 17.交叉存储器 为什么要使用交叉存储器: 6.3
  • 18.交叉存储器 为什么要使用交叉存储器:用小的RAM芯片满足大的存储 6.3
  • 19.交叉存储器 为什么要使用交叉存储器:用小的RAM芯片满足大的存储 如何连接 6.3
  • 20.交叉存储器 为什么要使用交叉存储器:用小的RAM芯片满足大的存储 如何连接 垂直方向:𝐾个𝐿 × 𝑊的RAM芯片构成一个𝐾𝐿 × 𝑊的存储器 6.3
  • 21.交叉存储器 为什么要使用交叉存储器:用小的RAM芯片满足大的存储 如何连接 垂直方向:𝐾个𝐿 × 𝑊的RAM芯片构成一个𝐾𝐿 × 𝑊的存储器 水平方向:𝐾个𝐿 × 𝑊的RAM芯片构成一个𝐿 × 𝐾𝑊的存储器 6.3
  • 22.交叉存储器 为什么要使用交叉存储器:用小的RAM芯片满足大的存储 如何连接 垂直方向:𝐾个𝐿 × 𝑊的RAM芯片构成一个𝐾𝐿 × 𝑊的存储器 水平方向:𝐾个𝐿 × 𝑊的RAM芯片构成一个𝐿 × 𝐾𝑊的存储器 如何寻址(假设组合前后寻址方式不变) 6.3
  • 23.交叉存储器 为什么要使用交叉存储器:用小的RAM芯片满足大的存储 如何连接 垂直方向:𝐾个𝐿 × 𝑊的RAM芯片构成一个𝐾𝐿 × 𝑊的存储器 水平方向:𝐾个𝐿 × 𝑊的RAM芯片构成一个𝐿 × 𝐾𝑊的存储器 如何寻址(假设组合前后寻址方式不变) 垂直方向:和单个RAM芯片寻址方法一致,区别是长度变成𝐾𝐿,需要 ⌈ log� (𝐾𝐿)⌉位地址。第𝑘个芯片第𝑙行对应的地址是((𝑘 − 1) × 𝐿 + (𝑙 − 1)) 6.3
  • 24.交叉存储器 为什么要使用交叉存储器:用小的RAM芯片满足大的存储 如何连接 垂直方向:𝐾个𝐿 × 𝑊的RAM芯片构成一个𝐾𝐿 × 𝑊的存储器 水平方向:𝐾个𝐿 × 𝑊的RAM芯片构成一个𝐿 × 𝐾𝑊的存储器 如何寻址(假设组合前后寻址方式不变) 垂直方向:和单个RAM芯片寻址方法一致,区别是长度变成𝐾𝐿,需要 ⌈ log� (𝐾𝐿)⌉位地址。第𝑘个芯片第𝑙行对应的地址是((𝑘 − 1) × 𝐿 + (𝑙 − 1)) 水平方向:可以看作两阶段的寻址,首先假设采用了长度为𝐾𝑊的按字寻址 (共𝐿 个),然后再从长度为𝐾𝑊的字中选出长度为𝑊的字,需要地址数为 ⌈ log� 𝐿⌉ + ⌈𝑙𝑜𝑔� 𝐾⌉。第𝑘个芯片第𝑙行对应的 地址是(𝑙 − 1) * 𝐾 + (𝑘 − 1) 6.3
  • 25.交叉存储器 为什么要使用交叉存储器:用小的RAM芯片满足大的存储 如何连接 垂直方向:𝐾个𝐿 × 𝑊的RAM芯片构成一个𝐾𝐿 × 𝑊的存储器 水平方向:𝐾个𝐿 × 𝑊的RAM芯片构成一个𝐿 × 𝐾𝑊的存储器 如何寻址(假设组合前后寻址方式不变) 垂直方向:和单个RAM芯片寻址方法一致,区别是长度变成𝐾𝐿,需要 ⌈ log� (𝐾𝐿)⌉位地址。第𝑘个芯片第𝑙行对应的地址是((𝑘 − 1) × 𝐿 + (𝑙 − 1)) 水平方向:可以看作两阶段的寻址,首先假设采用了长度为𝐾𝑊的按字寻址 (共𝐿 个),然后再从长度为𝐾𝑊的字中选出长度为𝑊的字,需要地址数为 ⌈ log� 𝐿⌉ + ⌈𝑙𝑜𝑔� 𝐾⌉。第𝑘个芯片第𝑙行对应的 地址是(𝑙 − 1) * 𝐾 + (𝑘 − 1) 实际中因为𝐾和𝐿都是2的次幂,模块号和行号(偏移值)从0开始编址,因此 6.3
  • 26.交叉存储器 为什么要使用交叉存储器:用小的RAM芯片满足大的存储 如何连接 垂直方向:𝐾个𝐿 × 𝑊的RAM芯片构成一个𝐾𝐿 × 𝑊的存储器 水平方向:𝐾个𝐿 × 𝑊的RAM芯片构成一个𝐿 × 𝐾𝑊的存储器 如何寻址(假设组合前后寻址方式不变) 垂直方向:和单个RAM芯片寻址方法一致,区别是长度变成𝐾𝐿,需要 ⌈ log� (𝐾𝐿)⌉位地址。第𝑘个芯片第𝑙行对应的地址是((𝑘 − 1) × 𝐿 + (𝑙 − 1)) 水平方向:可以看作两阶段的寻址,首先假设采用了长度为𝐾𝑊的按字寻址 (共𝐿 个),然后再从长度为𝐾𝑊的字中选出长度为𝑊的字,需要地址数为 ⌈ log� 𝐿⌉ + ⌈𝑙𝑜𝑔� 𝐾⌉。第𝑘个芯片第𝑙行对应的 地址是(𝑙 − 1) * 𝐾 + (𝑘 − 1) 实际中因为𝐾和𝐿都是2的次幂,模块号和行号(偏移值)从0开始编址,因此 垂直方向多模块存储编址(高位交叉编址): ⌈ log� 𝐾⌉位模块号(高位)+⌈ log� 𝐿⌉位偏移值(低位) 6.3
  • 27.交叉存储器 为什么要使用交叉存储器:用小的RAM芯片满足大的存储 如何连接 垂直方向:𝐾个𝐿 × 𝑊的RAM芯片构成一个𝐾𝐿 × 𝑊的存储器 水平方向:𝐾个𝐿 × 𝑊的RAM芯片构成一个𝐿 × 𝐾𝑊的存储器 如何寻址(假设组合前后寻址方式不变) 垂直方向:和单个RAM芯片寻址方法一致,区别是长度变成𝐾𝐿,需要 ⌈ log� (𝐾𝐿)⌉位地址。第𝑘个芯片第𝑙行对应的地址是((𝑘 − 1) × 𝐿 + (𝑙 − 1)) 水平方向:可以看作两阶段的寻址,首先假设采用了长度为𝐾𝑊的按字寻址 (共𝐿 个),然后再从长度为𝐾𝑊的字中选出长度为𝑊的字,需要地址数为 ⌈ log� 𝐿⌉ + ⌈𝑙𝑜𝑔� 𝐾⌉。第𝑘个芯片第𝑙行对应的 地址是(𝑙 − 1) * 𝐾 + (𝑘 − 1) 实际中因为𝐾和𝐿都是2的次幂,模块号和行号(偏移值)从0开始编址,因此 垂直方向多模块存储编址(高位交叉编址): ⌈ log� 𝐾⌉位模块号(高位)+⌈ log� 𝐿⌉位偏移值(低位) 水平方向多模块存储编址(低位交叉编址): ⌈ log� 𝐿⌉位偏移值(高位)+⌈ log� 𝐾⌉位模块号(低位) 6.3
  • 28.交叉编址示例 6.4
  • 29.交叉编址示例 高位交叉编址(High-order Interleaving), 𝐾 = 8, 𝐿 = 4 图片来源:Linda Null, Julia Lobur, The Essentials of Computer Organization and Architecture, 4th Edition 6.4
  • 30.交叉编址示例 低位交叉编址(Low-order Interleaving), 𝐾 = 8, 𝐿 = 4 图片来源:Linda Null, Julia Lobur, The Essentials of Computer Organization and Architecture, 4th Edition 6.4
  • 31.内存的电路实现* 图片来源:http://semiengineering.com/embedded-memory-impact-power-grids/6.5
  • 32.中断 中断的作用:改变或停止系统中程序执行的事件 中断既可以由硬件触发也可以由软件触发。由软件触发的中断 一般也称为陷阱(trap)或异常(exception) 常见的中断触发事件 I/O请求、算数错误、算数溢出、硬件故障、用户定义中断 点、页面错误、非法指令等 图片来源:Linda Null, Julia Lobur, The Essentials of Computer Organization and Architectur 6.6
  • 33.中断处理 6.7
  • 34.中断处理 中断的处理是通过对应的中断处理程序(Interrupt Service Routine, ISR)来实现的 图片来源:https://www.electronicshub.org/arm-interrupt-tutorial/6.7
  • 35.中断处理 中断的处理是通过对应的中断处理程序(Interrupt Service Routine, ISR)来实现的 中断的类型用中断号表示,中断号以及对应的中断处理程序存 储在中断向量表中 图片来源:https://www.eeeguide.com/8086-interrupt/6.7
  • 36.中断处理 中断的处理是通过对应的中断处理程序(Interrupt Service Routine, ISR)来实现的 中断的类型用中断号表示,中断号以及对应的中断处理程序存 储在中断向量表中 完整的中断处理过程 图片来源:Linda Null, Julia Lobur, The Essentials of Computer Organization and Architectur 6.7
  • 37.中断处理 中断的处理是通过对应的中断处理程序(Interrupt Service Routine, ISR)来实现的 中断的类型用中断号表示,中断号以及对应的中断处理程序存 储在中断向量表中 完整的中断处理过程 中断的屏蔽(Mask):在有些程序执行过程中(例如一个中断处 理程序)不希望被中断, 因此可以屏蔽掉另外的一些中断 6.7
  • 38.计算机模型3: MARIE体系结构 7.1
  • 39.MARIE MARIE = the Machine Architecture that is Really Intuitive and Easy MARIE模型的主要参数: 采用二进制编码,带符号整数采用2的补码表示 采用存储程序架构,采用16位固定字长的数据和指令 内存采用按字寻址,可寻址4K个存储位置 16位指令包括4位操作码(opcode)和12位地址 包含一个16位的算数单元 有7个寄存器 7.2
  • 40.MARIE MARIE = the Machine Architecture that is Really Intuitive and Easy MARIE模型的主要参数: 采用二进制编码,带符号整数采用2的补码表示 采用存储程序架构,采用16位固定字长的数据和指令 内存采用按字寻址,可寻址4K个存储位置 为什么是4K? 16位指令包括4位操作码(opcode)和12位地址 包含一个16位的算数单元 有7个寄存器 7.2
  • 41.体系结构 7.3
  • 42.寄存器 7.4
  • 43.寄存器 累加寄存器(Accumulator,AC):16位寄存器,储存指令运 算数或运算结果 图片来源:Linda Null, Julia Lobur, The Essentials of Computer Organization and Architecture, 4th 7.4
  • 44.寄存器 累加寄存器(Accumulator,AC):16位寄存器,储存指令运 算数或运算结果 存储器地址寄存器(Memory Address Register, MAR):12位 寄存器,用于保存引用数据的寄存器地址 图片来源:Linda Null, Julia Lobur, The Essentials of Computer Organization and Architecture, 4th 7.4
  • 45.寄存器 累加寄存器(Accumulator,AC):16位寄存器,储存指令运 算数或运算结果 存储器地址寄存器(Memory Address Register, MAR):12位 寄存器,用于保存引用数据的寄存器地址 存储器数据缓冲寄存器(Memory Buffer Register, MAR):16 位寄存器,用于保存刚从内存中读取的数据或是即将放入 内存的数据 图片来源:Linda Null, Julia Lobur, The Essentials of Computer Organization and Architecture, 4th 7.4
  • 46.寄存器 累加寄存器(Accumulator,AC):16位寄存器,储存指令运 算数或运算结果 存储器地址寄存器(Memory Address Register, MAR):12位 寄存器,用于保存引用数据的寄存器地址 存储器数据缓冲寄存器(Memory Buffer Register, MAR):16 位寄存器,用于保存刚从内存中读取的数据或是即将放入 内存的数据 程序计数器(Program Counter, PC):12位寄存器,用于保 存将要执行的下一条指令的地址 图片来源:Linda Null, Julia Lobur, The Essentials of Computer Organization and Architecture, 4th 7.4
  • 47.寄存器 累加寄存器(Accumulator,AC):16位寄存器,储存指令运 算数或运算结果 存储器地址寄存器(Memory Address Register, MAR):12位 寄存器,用于保存引用数据的寄存器地址 存储器数据缓冲寄存器(Memory Buffer Register, MAR):16 位寄存器,用于保存刚从内存中读取的数据或是即将放入 内存的数据 程序计数器(Program Counter, PC):12位寄存器,用于保 存将要执行的下一条指令的地址 指令寄存器(Instruction Register, IR):16位寄存器,用于保 图片来源:Linda Null, Julia Lobur, The Essentials of Computer Organization and Architecture, 4th 存将要执行的下一条指令 7.4
  • 48.寄存器 累加寄存器(Accumulator,AC):16位寄存器,储存指令运 算数或运算结果 存储器地址寄存器(Memory Address Register, MAR):12位 寄存器,用于保存引用数据的寄存器地址 存储器数据缓冲寄存器(Memory Buffer Register, MAR):16 位寄存器,用于保存刚从内存中读取的数据或是即将放入 内存的数据 程序计数器(Program Counter, PC):12位寄存器,用于保 存将要执行的下一条指令的地址 指令寄存器(Instruction Register, IR):16位寄存器,用于保 图片来源:Linda Null, Julia Lobur, The Essentials of Computer Organization and Architecture, 4th 存将要执行的下一条指令 输入寄存器(Input Register, InReg):8位寄存器,代表输入 设备读入的数据 7.4
  • 49.寄存器 累加寄存器(Accumulator,AC):16位寄存器,储存指令运 算数或运算结果 存储器地址寄存器(Memory Address Register, MAR):12位 寄存器,用于保存引用数据的寄存器地址 存储器数据缓冲寄存器(Memory Buffer Register, MAR):16 位寄存器,用于保存刚从内存中读取的数据或是即将放入 内存的数据 程序计数器(Program Counter, PC):12位寄存器,用于保 存将要执行的下一条指令的地址 指令寄存器(Instruction Register, IR):16位寄存器,用于保 图片来源:Linda Null, Julia Lobur, The Essentials of Computer Organization and Architecture, 4th 存将要执行的下一条指令 输入寄存器(Input Register, InReg):8位寄存器,代表输入 设备读入的数据 输出寄存器(Output Register, OutReg):8位寄存器,代表传 输给输出设备的数据 7.4
  • 50.数据通路 图片来源:Linda Null, Julia Lobur, The Essentials of Computer 7 . 5Organization and
  • 51.数据通路 所有寄存器、内存共享一个16位总线 图片来源:Linda Null, Julia Lobur, The Essentials of Computer 7 . 5Organization and
  • 52.数据通路 所有寄存器、内存共享一个16位总线 总线仲裁:每个总线上的设备对应了一个编号,只有当控制总 线上的值对应了某个设备的编号时,该设备才可以使用总线 图片来源:Linda Null, Julia Lobur, The Essentials of Computer 7 . 5Organization and
  • 53.数据通路 所有寄存器、内存共享一个16位总线 总线仲裁:每个总线上的设备对应了一个编号,只有当控制总 线上的值对应了某个设备的编号时,该设备才可以使用总线 MBR和AC、MBR和ALU、以及AC和ALU之间有特殊路径,可以与 总线并行传输数据(注意:图中箭头代表的是信息流向,不是实 际电路连接) 图片来源:Linda Null, Julia Lobur, The Essentials of Computer 7 . 5Organization and
  • 54.数据通路 所有寄存器、内存共享一个16位总线 总线仲裁:每个总线上的设备对应了一个编号,只有当控制总 线上的值对应了某个设备的编号时,该设备才可以使用总线 MBR和AC、MBR和ALU、以及AC和ALU之间有特殊路径,可以与 总线并行传输数据(注意:图中箭头代表的是信息流向,不是实 际电路连接) MARIE的总线采用了哪种仲裁方法? 图片来源:Linda Null, Julia Lobur, The Essentials of Computer 7 . 5Organization and
  • 55.指令集 7.6
  • 56.指令集 指令集架构(Instruction Set Architecture, ISA) 7.6
  • 57.指令集 指令集架构(Instruction Set Architecture, ISA) 计算机可以执行的指令组成的集合以及指令编 码格式 7.6
  • 58.指令集 指令集架构(Instruction Set Architecture, ISA) 计算机可以执行的指令组成的集合以及指令编 码格式 计算机软硬件的接口:用该指令集实现的程序 可以运行在任何实现了这个指令集的硬件上 7.6
  • 59.指令集 指令集架构(Instruction Set Architecture, ISA) 计算机可以执行的指令组成的集合以及指令编 码格式 计算机软硬件的接口:用该指令集实现的程序 可以运行在任何实现了这个指令集的硬件上 MARIE的指令集 7.6
  • 60.指令集 指令集架构(Instruction Set Architecture, ISA) 计算机可以执行的指令组成的集合以及指令编 码格式 计算机软硬件的接口:用该指令集实现的程序 可以运行在任何实现了这个指令集的硬件上 MARIE的指令集 指令的编码:16位指令,4位操作码 (Opcode),12位地址 7.6
  • 61.指令集 指令集架构(Instruction Set Architecture, ISA) 计算机可以执行的指令组成的集合以及指令编 码格式 计算机软硬件的接口:用该指令集实现的程序 可以运行在任何实现了这个指令集的硬件上 MARIE的指令集 指令的编码:16位指令,4位操作码 (Opcode),12位地址 指令集:其中0x1-0x9为基本指令,0x0、0xa0xe为扩展指令。扩展指令实现了间接寻址(指 针) 指令编码 指令 含义 0x0 JNS x 将PC写入地址为x的存储单元,并将x+1写入PC 0x1 LOAD x 将地址为x的存储单元中的值存入AC 0x2 STORE x 将AC中的值存储到地址为x的存储单元中 0x3 ADD x 将地址x中的值与AC中的值相加的结果存入AC 0x4 SUBT x 将AC中的值减去地址x中的值的结果存入AC 0x5 INPUT 从键盘输入一个数值到AC 0x6 OUTPUT 将AC中的数值输出到显示器 0x7 HALT 终止程序的运行 0x8 SKIPCOND 有条件地跳过下一条指令 0x9 JUMP x 将x的值装入PC 0xa CLEAR 将AC中的值置为0 0xb ADDI x 读取地址x中的地址,将其对应的值与AC中的值相加的结果存入AC 0xc JUMPI x 读取地址x中的地址,将其对应的值写入PC 0xd LOADI x 读取地址x中的地址,将其对应的值写入AC 0xe STOREI x 读取地址x中的地址,将AC写入其对应的存储单元 7.6
  • 62.寄存器传输表示/寄存器传输语言 7.7
  • 63.寄存器传输表示/寄存器传输语言 MERIE的每个指令涉及到多个寄存器和内存之间的信 息传递 7.7
  • 64.寄存器传输表示/寄存器传输语言 MERIE的每个指令涉及到多个寄存器和内存之间的信 息传递 每个细分的信息传递称为一个微操作 (Microoperation) 7.7
  • 65.寄存器传输表示/寄存器传输语言 MERIE的每个指令涉及到多个寄存器和内存之间的信 息传递 每个细分的信息传递称为一个微操作 (Microoperation) 我们采用寄存器传输表示(Register Transfer Notation, RTN)或者寄存器传输语言(Register Transfer Language, RTL)来形式化地描述这些微操作 7.7
  • 66.寄存器传输表示/寄存器传输语言 MERIE的每个指令涉及到多个寄存器和内存之间的信 息传递 每个细分的信息传递称为一个微操作 (Microoperation) 我们采用寄存器传输表示(Register Transfer Notation, RTN)或者寄存器传输语言(Register Transfer Language, RTL)来形式化地描述这些微操作 𝐴←𝐵 代表:将𝐵中的值写入𝐴 𝐴:寄存器(用寄存器名字表示)或者是内存存储单元 (用M[y]代表地址为y中的值所对应的存储单元) 𝐵:指令操作数(用x表示)、寄存器(用寄存器名字 表示)或者是内存存储单元(用M[y]代表地址为y中的 值所对应的存储单元) 7.7
  • 67.寄存器传输表示/寄存器传输语言 MERIE的每个指令涉及到多个寄存器和内存之间的信 息传递 每个细分的信息传递称为一个微操作 (Microoperation) 我们采用寄存器传输表示(Register Transfer Notation, RTN)或者寄存器传输语言(Register Transfer Language, RTL)来形式化地描述这些微操作 𝐴←𝐵 代表:将𝐵中的值写入𝐴 𝐴:寄存器(用寄存器名字表示)或者是内存存储单元 (用M[y]代表地址为y中的值所对应的存储单元) 𝐵:指令操作数(用x表示)、寄存器(用寄存器名字 表示)或者是内存存储单元(用M[y]代表地址为y中的 值所对应的存储单元) 用RTN描述MARIE指令集 指令 RTN 指令 JNS x MBR←PC MAR←x M[MAR]←MBR MBR←x AC←1 AC←AC+MBR PC←AC SKIPCOND IF x[11-10] = 00 AND AC < 0 THEN PC←PC + 1 ELSE IF x[11-10] = 01 AND AC = 0 THEN PC←PC + 1 ELSE IF x[11-10] = 10 AND AC > 0 THEN PC←PC + 1 LOAD x MAR←x MBR←M[MAR] AC←MBR RTN JUMP x PC←x CLEAR AC←0 ADDI x MAR←x MBR←M[MAR] MAR←MBR MBR←M[MAR] AC←AC + MBR STORE x MAR←x MBR←AC M[MAR]←MBR ADD x MAR←x MBR←M[MAR] AC←AC + MBR JUMPI x MAR←x MBR←M[MAR] PC←MBR SUBT x MAR←x MBR←M[MAR] AC←AC - MBR LOADI x INPUT AC←InREG OUTPUT OutREG←AC MAR←x MBR←M[MAR] MAR←MBR MBR←M[MAR] AC←MBR HALT - STOREI x MAR←x MBR←M[MAR] MAR←MBR MBR←AC M[MAR]←MBR 7.7
  • 68.指令执行流程 7.8
  • 69.指令执行流程 冯-诺依曼模型:取译码执行 7.8
  • 70.指令执行流程 冯-诺依曼模型:取译码执行 MARIE中的取译码执行过程 7.8
  • 71.指令执行流程 冯-诺依曼模型:取译码执行 MARIE中的取译码执行过程 用RTN描述MARIE的指令执行过程 7.8
  • 72.指令执行流程 冯-诺依曼模型:取译码执行 MARIE中的取译码执行过程 用RTN描述MARIE的指令执行过程 1. MAR←PC 7.8
  • 73.指令执行流程 冯-诺依曼模型:取译码执行 MARIE中的取译码执行过程 用RTN描述MARIE的指令执行过程 1. MAR←PC 2. IR←M[MAR], PC←PC + 1 7.8
  • 74.指令执行流程 冯-诺依曼模型:取译码执行 MARIE中的取译码执行过程 用RTN描述MARIE的指令执行过程 1. MAR←PC 2. IR←M[MAR], PC←PC + 1 3. x≜IR[11-0], OP←DECODE(IR[15-12]) 7.8
  • 75.指令执行流程 冯-诺依曼模型:取译码执行 MARIE中的取译码执行过程 用RTN描述MARIE的指令执行过程 1. MAR←PC 2. IR←M[MAR], PC←PC + 1 3. x≜IR[11-0], OP←DECODE(IR[15-12]) 4. EXEC(OP) 7.8
  • 76.指令执行流程 冯-诺依曼模型:取译码执行 MARIE中的取译码执行过程 用RTN描述MARIE的指令执行过程 1. MAR←PC 2. IR←M[MAR], PC←PC + 1 3. x≜IR[11-0], OP←DECODE(IR[15-12]) 4. EXEC(OP) 优化指令执行过程: 许多指令的第一步操作是MBR←x 译码同时将x预先载入MAR中,即MAR←IR[11-0] 7.8
  • 77.中断处理和I/O MARIE不支持中断处理 MARIE通过InREG和OutREG进行I/O处理 INPUT指令是阻塞模式:CPU等待,直到InREG接收到用户输入 OUTPUT指令也是阻塞模式:输出设备等待,直到OutREG接收到CPU输出 7.9
  • 78.样例程序 7 . 10
  • 79.样例程序 内存位置100-103对应了四条指令,实现 了一个加法操作 7 . 10
  • 80.样例程序 内存位置100-103对应了四条指令,实现 了一个加法操作 内存位置104-106对应了三个16位数据, 其中两个储存了输入操作数,一个放置输 出结果 7 . 10
  • 81.样例程序 描述程序的运行状态:程序踪迹(Program Trace) 内存位置100-103对应了四条指令,实现 了一个加法操作 内存位置104-106对应了三个16位数据, 其中两个储存了输入操作数,一个放置输 出结果 7 . 10
  • 82.汇编语言 LOAD 3对应的二进制指令编码 汇编程序根据汇编语言生成对应的机器指令 简化指令操作码:采用助记符。例:LOAD、ADD, STORE 简化地址和数据定位:采用标记符号。例:X, Y, Z 在MARIE中,标记符号后必须加“,” 简化数据表示:采用特定的汇编指令。例:DEC, HEX 仅在编译时使用,不会编译成机器指令 采用二进制表示的指令称为机器指令:(0001 0000 0000 0011) 采用符号表示的指令称为汇编语言指令 (Assembly):LOAD 3 对应表示操作码的符号称为助记符(Mnemonic Instruction):LOAD 7 . 11
  • 83.汇编语言的编译过程 第一次通读(Pass):建立符号表,翻译操作码 第二次通读:将符号替换为对应的值 7 . 12
  • 84.指令译码和执行:控制单元的实现 7 . 13
  • 85.指令译码和执行:控制单元的实现 为了保证CPU的正确运行,需要通过控制 信号来协调各部件的功能 7 . 13
  • 86.指令译码和执行:控制单元的实现 为了保证CPU的正确运行,需要通过控制 信号来协调各部件的功能 MARIE架构中需要哪些控制信号? 7 . 13
  • 87.指令译码和执行:控制单元的实现 为了保证CPU的正确运行,需要通过控制 信号来协调各部件的功能 MARIE架构中需要哪些控制信号? 总线 控制总线的读和写:每个时钟周期总线可以读取一个设备的值,并写入 一个设备 各需要3个控制信号:读取信号(𝑃� , 𝑃� , 𝑃� )和写入信号(𝑃� , 𝑃� , 𝑃� ) 例:(𝑃� 𝑃� 𝑃� )� = 7�� 时,总线在读IR寄存器的值(0-11位), (𝑃� 𝑃� 𝑃� )� = 1�� 时,总线在写入MAR寄存器 上面的例子实现了MAR←IR[11-0] 7 . 13
  • 88.指令译码和执行:控制单元的实现 为了保证CPU的正确运行,需要通过控制 信号来协调各部件的功能 MARIE架构中需要哪些控制信号? 总线: 𝑃� , 𝑃� , 𝑃� , 𝑃� , 𝑃� , 𝑃� ALU 控制ALU中的多路复用器 7 . 13
  • 89.指令译码和执行:控制单元的实现 为了保证CPU的正确运行,需要通过控制 信号来协调各部件的功能 MARIE架构中需要哪些控制信号? 总线: 𝑃� , 𝑃� , 𝑃� , 𝑃� , 𝑃� , 𝑃�ALU:𝐴� , 𝐴� 时钟 每个指令的完整执行需要多个时钟周期,需要根据当前的指令和对应的 时钟周期计数决定 对应的微操作信号 MARIE的时钟周期最多8个:𝑇� - 𝑇� 采用3-8译码器实现,每个时钟周期仅有一个值为1 以ADD x为例,整个取译码执行总共需要6个时钟周期 𝐶� 信号用于重置时钟周期计数 7 . 13
  • 90.指令译码和执行:控制单元的实现 为了保证CPU的正确运行,需要通过控制 信号来协调各部件的功能 MARIE架构中需要哪些控制信号? 总线: 𝑃� , 𝑃� , 𝑃� , 𝑃� , 𝑃� , 𝑃�ALU:𝐴� , 𝐴� 时钟: 𝑇� , …, 𝑇� , 𝐶� PC PC有两个输入源:总线(JNS、JUMP、JUMPI)和计数器(其它) IncrPC:值为1的时候PC读取计数器的值,否则从总线读入 7 . 13
  • 91.指令译码和执行:控制单元的实现 为了保证CPU的正确运行,需要通过控制 信号来协调各部件的功能 MARIE架构中需要哪些控制信号? 总线: 𝑃� , 𝑃� , 𝑃� , 𝑃� , 𝑃� , 𝑃�ALU:𝐴� , 𝐴� 时钟: 𝑇� , …, 𝑇� , 𝐶�PC:IncrPC 内存 控制内存的读写模式 𝑀� :值为1的时候写入内存,否则不写 𝑀� :值为1的时候从内存读入总线,否则不读 7 . 13
  • 92.指令译码和执行:控制单元的实现 为了保证CPU的正确运行,需要通过控制 信号来协调各部件的功能 MARIE架构中需要哪些控制信号? 总线: 𝑃� , 𝑃� , 𝑃� , 𝑃� , 𝑃� , 𝑃�ALU:𝐴� , 𝐴� 时钟: 𝑇� , …, 𝑇� , 𝐶�PC:IncrPC 内存: 𝑀� , 𝑀� 替代数据源 控制AC和MBR等具有替代输入源的寄存器 𝐿alt :值为1的时候从替代源读入数据,否则从总线读入 7 . 13
  • 93.指令译码和执行:控制单元的实现 为了保证CPU的正确运行,需要通过控制 信号来协调各部件的功能 MARIE架构中需要哪些控制信号? 总线: 𝑃� , 𝑃� , 𝑃� , 𝑃� , 𝑃� , 𝑃�ALU:𝐴� , 𝐴� 时钟: 𝑇� , …, 𝑇� , 𝐶�PC:IncrPC 内存: 𝑀� , 𝑀� 替代数据源: 𝐿alt 如何设置控制信号? 7 . 13
  • 94.指令译码和执行:控制单元的实现 为了保证CPU的正确运行,需要通过控制 信号来协调各部件的功能 MARIE架构中需要哪些控制信号? 总线: 𝑃� , 𝑃� , 𝑃� , 𝑃� , 𝑃� , 𝑃�ALU:𝐴� , 𝐴� 时钟: 𝑇� , …, 𝑇� , 𝐶�PC:IncrPC 内存: 𝑀� , 𝑀� 替代数据源: 𝐿alt 如何设置控制信号? 在RTN中加入信号模式 信号模式 微操作 𝑃� 𝑃� 𝑃� 𝑃� 𝑇� MAR←x 𝑃� 𝑃� 𝑇� 𝑀� MBR←M[MAR] 𝐶� 𝐴� 𝑃� 𝑇� 𝐿alt AC←AC + MBR 7 . 13
  • 95.控制单元的实现 微程序控制 硬连线控制 7 . 14
  • 96.现实中的体系结构 按照指令集设计分类 7 . 15
  • 97.现实中的体系结构 按照指令集设计分类 复杂指令集计算机(Complex Instruction Set Computer, CISC): 指令数量多、长度各异 7 . 15
  • 98.现实中的体系结构 按照指令集设计分类 复杂指令集计算机(Complex Instruction Set Computer, CISC): 指令数量多、长度各异 CISC代表:Intel体系结构(x86体系结构) 图片来源:https://www.computing.dcu.ie/~humphrys/Notes/OS/hardware.html7 . 15
  • 99.现实中的体系结构 按照指令集设计分类 复杂指令集计算机(Complex Instruction Set Computer, CISC): 指令数量多、长度各异 CISC代表:Intel体系结构(x86体系结构) 精简指令集计算机(Reduced Instruction Set Computer, RISC):指令数量少,所有指令长度 相同 图片来源:https://www.computing.dcu.ie/~humphrys/Notes/OS/hardware.html7 . 15
  • 100.现实中的体系结构 按照指令集设计分类 复杂指令集计算机(Complex Instruction Set Computer, CISC): 指令数量多、长度各异 CISC代表:Intel体系结构(x86体系结构) 精简指令集计算机(Reduced Instruction Set Computer, RISC):指令数量少,所有指令长度 相同 RISC代表:MIPS、ARM 图片来源:https://www.computing.dcu.ie/~humphrys/Notes/OS/hardware.html7 . 15
  • 101.第三讲结束 8.1
  • 102.本期内容回顾 计算机模型2 内存概述 体系结构 交叉存储器 中断及中断处理 计算机模型3: MARIE机器 体系结构 指令集 寄存器传输表示 汇编语言 控制单元的实现 现实世界中的指令集 8.2
  • 103.扩展阅读 内存的电路实现http://semiengineering.com/embedded-memory-impact-power-grids/8.3
  • 104.Q&A 9