哈工大刘宏伟老师的《计算机组成原理》采用自顶向下方法,系统介绍了计算机各个基本部件的体系结构、逻辑实现、控制方式。(一定数电基础是必要的,如果了解汇编更有助于理解部分内容)
B站链接计算机组成原理——哈工大刘宏伟(B站)
慕课链接(上)计算机组成原理——哈工大刘宏伟(慕课上)
慕课链接(下)计算机组成原理——哈工大刘宏伟(慕课下)
本文是笔者听完全部课程后结合自己的理解,试图用尽可能通俗的语言,描述课程的框架,摘附主要的构图进行填充,非详细的课程笔记。
控制器(CU)
运算器(ALU)
存储器
输入设备
输出设备
(图中实线代表数据,虚线代表控制信号)
1、控制器CU + 运算器ALU = 中央处理器CPU
2、CPU、存储器、I/O设备之间的通信载体抽象为系统总线
说明:内容重点介绍存储器和I/O设备,其中一些DRAM和SRAM实现原理相关的内容需要有一定的数字电路基础才能理解,本文未对其中细节展开描述。
其中各部件的布局:
存储器的基本结构由三部分组成:
根据作用不同,存储器分为三类:
原始的计算机只有CPU和主存结构,随着计算机的发展,逐渐设计实线了如图的多级层次化结构。
关于缓存:现代计算机运行速度的瓶颈是访存速度,在CPU和主存之间加入访存速度更快的缓存,可以提高CPU使用效率,整体提高计算机运算速度,当然,缓存的经济成本高于主存,存储实现方式不同(后续介绍)。
关于辅存:提高数据存储量,迎合时代需要,缺点是CPU不能直接访问缓存,需要嵌入主存加载访存的过程,处理速度慢。
不同原理的存储器根据特性的不同部署在存储体系的不同层次中,但也不是严格一一对应的,根据不同规格的计算机有一定差别,一般情况下:
首先看一下I/O设备连接到I/O总线的方式:
主要包括4条线路:
I/O设备的控制方式分为3种:
我们主要了解程序中断方式和DMA方式。
程序中断方式的I/O接口电路:
以CPU读命令为例简述响应过程:
(1.1.1)CPU发布“对某个地址的I/O设备的读命令”
设备选择电路从地址总线读取地址,若地址就是本I/O接口的地址,发出SEL信号;
命令译码器同时接受到来自CPU的启动命令和SEL信号,发出启动命令,通过触发器B启动设备。
(1.1.2)I/O设备为执行读命令做准备
将要读的存储单元的数据写入缓存器DBR
写入完毕后,触发器B置0,触发器D置1
(1.1.3)I/O接口对CPU发出中断请求信号
若中断屏蔽器MASK(由CPU控制)给出信号允许中断请求,当接收到CPU发出的中断查询信号,通过总线向CPU发出中断请求信号INTR
(1.1.4)I/O设备经由排队器(这里使用链式排队器)确定中断响应的优先次序
由简单的非门和与门电路搭建,图中4个I/O设备优先级为1>2>3>4
若此时无更高优先级的I/O设备同时发出中断请求信号,则允许该设备响应中断
(1.1.5)I/O接口执行中断响应
当接收到CPU发出的中断响应INTA信号,且排队器判优允许,则进入设备编码器,形成中断向量地址(指示是哪一个I/O设备在执行中断响应)
DMA方式的I/O接口电路:
其中:
以CPU读命令为例简述响应过程:
总线=控制总线+地址总线+控制总线,各个中心的功能顾名思义,很好理解,这部分内容已经夹杂在存储器和I/O设备的接口电路中进行介绍。
说明:这部分主要结合二进制数的无符号数、有符号数、原码、补码、反码、移码、定点表示、浮点表示相关的知识,介绍ALU实现算术移位、加减法运算、乘除法运算的具体过程和数字逻辑硬件实现方法,篇幅较大,难度也不太高,这里不作展开。
操作类型:
寻址方式:
四种情况:
1、不需要访存(如:NOP)
2、需要访存(如:ADD)
执行周期长度根据执行内容决定(如:MUL)
3、需要间址寻址
4、带有中断指令
具体过程:
具体过程:
情况根据具体的执行内容决定。
具体过程:
说明:这部分讲述加入了时钟,重点理解操作执行的时序问题。
输入信号:
输出信号:
注:若干个时钟周期组成一个机器周期(图示4个时钟周期组成一个机器周期),每个时钟周期(也称节拍)执行一条或一组可并行的指令。
完全使用硬件即可完成设计,运行速度快,不过结构较为庞杂,不易于调试和修改,适用于RISK(精简指令集)。
对前文提到的一些简单指令,根据各个指令的特性,设计每一个指令在一个机器周期内的各个节拍(T0-T2)上的操作(这部分内容较多,而有了之前章的基础也很容易理解,不在这里具体展开)。
将各个指令在每个节拍下的操作内容,列出具体的时序关系表:
写出逻辑关系表达式(以M(MAR) -> MDR操作为例):
根据逻辑表达式可以绘制出逻辑图:
核心思想和上述方法类似,实现方法利用软件,用存储逻辑替代数字电路逻辑,增加了译码等操作。这里仅附原理图,不做展开。
基本控制单元框图:
机器指令对应的微程序:
最终形成的微程序码点: