2024年3月24日二稿(王道 P226)
2024年4月14日三稿
MIPS模型机指令集
MIPS模型机数据通路部件
时钟同步方法
指令执行过程
指令周期
指令周期数据流
指令执行方案
一个基本MIPS的实现
指令的实现过程大致相同,而与具体的指令类型无关。实现每条指令的前两步是一样的:
图4-1给出了一种MIPS实现的抽象视图,图中主要描述了不同的功能单元及其互连关系。尽管该图给出了绝大多数数据在处理器中的流动方式,但它仍然忽略了指令执行过程中的两个重要方面。
首先,在图4-1中的许多位置,某个单元的数据可能来自于两个不同的单元。例如,PC的值可能来自两个加法器中的一个,写入寄存器堆的数据可能来自ALU或数据存储器,ALU的第二个输入可能来自寄存器或指令中的立即数字段。实际上,不能简单地直接将这些数据线连在一起,必须增加一个逻辑单元用以从不同的数据来源中选择一个送给目标单元。这个选择过程通常是由一个叫多选器(multiplexor)的逻辑单元完成的,尽管该单元叫数据选择器可能更合适。附录B详细描述了多选器根据控制信号选择不同输入的过程。控制信号主要由当前执行指令中包含的信息决定。
其次,图4-1中的许多单元的控制依赖于当前执行指令的类型。例如,存取指令读写数据存储器,取数指令和算术逻辑指令写入寄存器堆。很显然,ALU根据不同的指令执行不同的操作。(附录B给出了ALU的设计细节)。类似于多选器,这些操作都由控制信号确定,而控制信号是由指令的某些字段所决定的。
图4-2在图4-1的基础上增加了三个必需的多选器和主要功能单元的控制信号。图中还增加了一个控制单元(control unit),它以指令为输入,决定功能单元和两个多选器的控制信号。第三个多选器用来决定是将PC+4还是分支目的地址写入PC,该多选器在执行beq指令时,根据ALU进行比较时设置的Zero标志位选择写入PC的数值。MIPS指令集的简单与规整使得只需简单的译码即可生成控制信号。
4.2 逻辑设计的一般方法
一个状态单元至少有两个输入和一个输出。两个必要的输入为要写入单元的数据值和决定何时写入的时钟信号。状态单元的输出提供了在前一个时钟信号写入单元的数据值。例如,逻辑上最简单的一种状态单元是D触发器(参见附录B),它有两个输入(一个数据值和一个时钟)和一个输出。除了触发器,MIPS的实现中还用了另外两种状态单元:存储器和寄存器,这些在图4-1中都已给出。时钟用于决定状态单元何时被写入。状态单元随时可读。
包含状态的逻辑部件又被称为时序的(sequential),因为它们的输出由输入和内部状态共同决定。例如,代表寄存器的功能单元的输出取决于所提供的寄存器号和以前写入寄存器的内容。组合单元和时序单元的有关操作及它们的结构都在附录B中有详细论述。
时钟方法
4.3 建立数据通路
要执行任何一条指令,首先要从存储单元中将指令取出。为准备执行下一条指令,也必须增加程序计数器使其指向下一条指令,即向后移动4字节。此时的数据通路如图4-6所示,使用了图4-5中的3个部件,它可以取指令并能自增PC以获得下一条指令的地址。
创建一个简单的数据通路
4.4 一个简单的实现机制
4.4.1 ALU控制
4.4.2 主控制单元的设计
数据通路的操作
控制的结束
4.4.3 为什么不适用单周期实现方式
数据通路
组成
组成数据通路的元件主要分为组合逻辑元件和时序逻辑元件两类。
组合逻辑元件(操作元件)
时序逻辑元件(状态元件)
基本结构
CPU内部单总线方式
CPU内部多总线方式
专用数据通路方式
举例
控制器
结构和功能
硬布线控制器
微程序控制器
异常与中断
现代计算机中都配有完善的异常和中断处理系统,CPU的数据通路中有相应的异常检测和响应逻辑,外设接口中有相应的中断请求和控制逻辑,操作系统中有相应的中断服务程序。这些中断硬件电路和中断服务程序有机结合,共同完成异常和中断的处理过程。
概念
分类
异常
中断
响应过程
多处理器
SISD、SIMD、MIMD的基本概念
基于指令流的数量和数据流的数量,将计算机体系结构分为SISD、SIMD、MISD和MIMD四类。常规的单处理器属于SISD, 而常规的多处理器属于MIMD
硬件多线程
在传统CPU中,线程的切换包含一系列开销,频繁地切换会极大影响系统的性能,为了减少线程切换过程中的开销,便诞生了硬件多线程。在支持硬件多线程的CPU中,必须为每个线程提供单独的通用寄存器组、单独的程序计数器等,线程的切换只需激活选中的寄存器,从而省略了与存储器数据交换的环节,大大减少了线程切换的开销。
硬件多线程有3种实现方式:细粒度多线程、粗粒度多线程 和 同时多线程(SMT)
多核处理器
多核处理器是指将多个处理单元集成到单个CPU中,每个处理单元称为一个核(core), 通常也称片上多处理器。每个核既可以有自己的Cache,又可以共享同一个Cache,所有核通常共享主存储器。图5.22是一个不共享Cache的双核CPU结构。