计算机组成原理(湖科大教书匠yyds)

存储器
存储器的分类
**存储介质:**1.磁存储器(软盘、机械硬盘) 2.光存储器(光盘) 3.半导体存储器(内存条,固态硬盘)
**存取方式:**1.顺序存储器(磁带) 2.随机存储器(固态硬盘) 3.直接存储器(介于前两者间,代表:机械硬盘)
**可改写性:**1.读写存储器 2.只读存储器
**可保存性:**1.易失性存储器(CPU内的寄存器、cache、内存(条)) 2.非易失性存储器
**功能和存取速度:**1.寄存器存储器 2.高速缓冲存储器 3.主存储器 4.辅助存储器

主存的基本结构


单译码结构和双译码结构


主存中数据的存放
将字节地址逻辑右移一位即可得到半字地址,再逻辑右移一位即可得到字地址。

Intel86、IA64、RISC-V等处理器采用小端方式
PowerPC、ARM、MIPS等处理器同时支持大小端方式


目前主流编译器多采用边界对齐方案


静态随机存储器SRAM(Static Random-Access-Memory)


SRAM——存储元扩展与存储阵列扩展


SRAM存储器结构及其芯片实例
上面的存储阵列扩展就构成了一个存储体


DRAM——存储元及其扩展


DRAM——存储器的动态刷新

DRAM在刷新时是不能响应CPU的访问的,因此CPU对DRAM进行访问与内存控制器对DRAM进行刷新操作就存在内存争用问题,可采用集中刷新、分散刷新、异步刷新等刷新方式来解决此问题。
DRAM存储芯片实例及其发展

Synchronous Dynamic Random-Access-Memory这里的S表示同步,和SRAM中的S不一样。

只读存储器ROM简介

值得一提的是虽然许多只读存储器名字里带了个“只读”,但除了MROM外大多数只读存储器都是可写入的,只不过不同的只读存储器对写入有着不同的限制。

RAM与ROM统一编址!!!!
CDROM与软盘和机械硬盘一样都采用的直接读取方式。
主存的扩展及其与CPU的连接


主存系统的优化——双端口存储器

同一个存储器具有两个独立的存储器端口,可分别接上两个cup核心,但是当两个CPU同时访问存储器中的同一地址时会产生冲突,这是就要靠BUSY#信号的输出来延迟其中一个CPU的访问。

主存系统的优化——单体多字存储器

利用多通道内存技术提升主存访问性能时需要两个内存条各方面的参数完全一样

主存系统的优化——多体交叉存储器

高位多体交叉可以看成竖着往下排

低位多体交叉可以看作是将高位多体交叉的模块地址与块内地址换了个位置,也可以看成是横着排。
低位多体交叉各存储模块间之所以要错开工作是为了避免同时访问后同时向数据总线输出而造成冲突,同时在这种模式下可以从任意地址(某个模块的某个存储单元)开始顺序存取。

高速缓冲存储器——Cache
Cache相关的基本概念




Cache的读写流程

好题

该题的解析应为212K *4B/29K*4B(32bit,即扩展后的32位)=8组512K*32位的扩展芯片,每组要用到4个RAM芯片,固需要的总芯片数为32个。
需要注意的是此题中RAM储存器的容量为212*210*22*23=227bit,而一个512K*32位的扩展芯片容量为29*210*25=224bit,固单纯从做题角度来看可以直接用(212210*22*23)/512K*8=(212*210*22*23)/(29*210*23)=25。

计算机组成与系统结构(第3版)(袁春风、唐杰、杨若瑜、李俊)
杂
这两种存储器是计算机体系结构中两种不同的内存组织和访问方式,它们各自有独特的优点和应用场景。
1. 多模块存储器(Multi-Module Memory / Interleaved Memory)
核心思想: 多模块存储器是为了提高内存系统的访问速度而设计的。它将整个主存储器划分成若干个独立的、可以并行工作的存储模块(也称为存储体或存储体组)。
工作原理:
并行访问: 每个模块都有自己独立的地址译码器、读写电路和数据寄存器,因此它们可以独立地进行读写操作。
地址交叉编址:
为了充分利用并行性,通常采用“低位交叉编址”方式。这意味着内存地址的低位用于选择存储模块,而高位用于选择模块内的具体地址。
- 例如,如果内存分为4个模块,一个地址的最低两位可能用于选择模块0、1、2、3。这样,连续的内存地址会被分散到不同的模块中。
流水线效应: 当CPU需要连续访问多个字时(例如取指令或连续数据),内存控制器可以同时向多个模块发出访问请求。当第一个模块完成访问并传输数据时,第二个模块可能已经完成了操作,以此类推,形成一种流水线操作,从而大大提高了数据传输的带宽。
优点:
- 提高访问速度/带宽: 最主要的优点,尤其是在需要连续访问大量数据时(如程序执行、图像处理)。
- 降低访问冲突: 不同模块可以同时被访问,减少了排队等待的时间。
应用场景:
- 高性能计算机系统(服务器、工作站、高性能计算集群)。
- 早期的大型机,以及现代计算机中的多通道内存(如双通道、三通道、四通道内存技术)就是多模块存储器的一种实际应用。
2. 相联存储器(Associative Memory / Content Addressable Memory - CAM)
核心思想: 相联存储器是一种特殊的存储器,它不通过地址来访问数据,而是通过内容来访问。用户提供一个数据值(即“关键字”),存储器会并行地搜索所有存储单元,如果找到与关键字匹配的数据,就返回该数据对应的地址或数据本身。
工作原理:
- 并行比较: 每个存储单元都包含一个比较逻辑电路。当一个关键字被输入时,所有的存储单元会同时将自己的内容与这个关键字进行比较。
- 多对多查找: 传统的RAM是“地址->内容”的映射,相联存储器是“内容->地址”的映射。而且,它支持多对多查找,即一个关键字可能匹配多个存储单元,所有匹配的地址都会被标识出来。
- 匹配标志: 每个存储单元通常有一个标志位,指示其内容是否与输入的关键字匹配。
优点:
- 快速查找: 极大地加快了基于内容查找的速度,因为是并行搜索。
- 无需预先知道地址: 只需要知道数据内容即可找到数据。
缺点:
- 成本高: 每个存储单元都需要额外的比较逻辑电路,导致成本远高于普通RAM。
- 容量小: 结构复杂,通常容量不大。
- 功耗大: 并行比较需要消耗更多的电能。
应用场景:
- 高速缓存(Cache)的地址映射: 在Cache中,需要快速判断主存块是否在Cache中。相联存储器可以用来存储主存块的标签,通过标签查找是否存在。
- 虚拟内存的页表管理(TLB - Translation Lookaside Buffer): TLB就是一个小型的相联存储器,用于快速查找虚拟地址到物理地址的映射。
- 网络路由器和交换机: 用于快速查找路由表和MAC地址表,以决定数据包的转发路径。
- 数据库加速: 在某些需要快速内容搜索的数据库应用中。
简而言之:
- 多模块存储器 关注的是通过并行化访问来提高整体存储系统的带宽和速度,主要应用于主存。
- 相联存储器 关注的是通过内容搜索来提高查找特定数据的速度,主要应用于需要高速匹配的特殊功能单元(如Cache、TLB、网络设备)。
好的,宝贝老师来教你这三道计算机系统原理的题目。它们都围绕着中断处理和 I/O 方式展开,是计算机组成原理和操作系统课程中的核心概念。
第五题:什么是向量中断?说明在向量中断方式下形成中断向量的基本方法。
1. 什么是向量中断?
- 中断 (Interrupt):当 CPU 正在执行程序时,如果突然发生紧急或需要立即处理的事件(如 I/O 设备完成操作、定时器到时、程序错误等),CPU 会暂停当前程序的执行,转而去处理这个事件,处理完后再回到原来的程序继续执行。这个过程就叫做中断。
- 非向量中断 (Non-vectored Interrupt) / 链式查询:在这种方式下,当发生中断时,所有的中断源共享一个中断服务程序的入口地址。CPU 收到中断信号后,会跳转到这个统一的入口地址,然后中断服务程序需要通过软件查询的方式(比如轮询每个设备的中断状态寄存器)来判断是哪个设备发出的中断请求,然后再跳转到对应设备的具体中断处理程序。这种方式的缺点是查询耗时,效率较低。
- 向量中断 (Vectored Interrupt):与非向量中断相对,向量中断是一种更高效的中断处理方式。它为每个中断源(或每组中断源)预先分配一个唯一的中断向量。这个中断向量通常是中断服务程序的入口地址,或者是中断服务程序入口地址的指针(索引)。当设备发出中断请求时,它会提供一个识别自身身份的“中断类型号”或者“中断向量地址”。CPU 收到中断请求后,不再需要软件查询,而是直接通过这个中断向量找到相应的中断服务程序的入口地址,从而快速跳转到正确的处理程序执行。
2. 说明在向量中断方式下形成中断向量的基本方法:
在向量中断方式下,形成中断向量(即确定中断服务程序入口地址或其索引)的基本方法主要有两种:
- 硬件直接提供中断向量地址:
- 原理: 当设备发生中断请求时,它不仅仅发出中断信号,还会把预先分配好的,指向其中断服务程序入口地址的中断向量地址(或其在中断向量表中的索引)直接通过数据总线发送给 CPU。
- 步骤:
- 设备产生中断请求。
- 设备将自身对应的中断向量地址(或类型号)放置到数据总线上。
- CPU 收到中断请求信号后,执行中断响应周期(或中断周期),读取总线上的中断向量地址。
- CPU 根据读取到的中断向量地址,直接跳转到对应的中断服务程序执行。
- 优点: 响应速度快,CPU 不需要进行软件查询。
- 缺点: 对硬件要求较高,每个设备可能需要一个独立的硬件电路来提供中断向量。
- 通过中断控制器(如 8259A PIC)进行管理和提供:
- 原理: 这是一个更通用的方法。在复杂的系统中,通常会有一个专门的可编程中断控制器 (PIC),如 Intel 8259A。所有的中断源都连接到中断控制器。中断控制器负责接收、仲裁(处理多个中断同时发生时的优先级)、管理和向 CPU 发送中断请求,并提供中断向量。
- 步骤:
- 一个或多个 I/O 设备向中断控制器发出中断请求。
- 中断控制器根据内部优先级规则,选择当前最高优先级的中断请求,并向 CPU 发出中断请求信号 (INTR)。
- CPU 响应中断请求,发出中断应答信号 (INTA)。
- 中断控制器收到中断应答后,将预先编程好的,对应当前中断源的中断向量号(通常是一个 8 位的数字)放到数据总线上。
- CPU 读取这个中断向量号,然后将其乘以一个固定值(例如 4 或 8,取决于中断向量表每个表项的大小),得到中断向量表中的偏移地址。
- CPU 依据计算出的地址,从中断向量表中取出对应中断服务程序的真实入口地址,然后跳转执行。
- 优点: 灵活、可编程、易于扩展,可以管理大量中断源,并实现优先级仲裁。是现代计算机系统中最常用的向量中断实现方式。
(理解概念:)
- 中断向量: 指向中断服务程序入口地址的指针(或地址本身)。
- 中断向量表: 存储所有中断向量的一块内存区域。每个表项对应一个中断类型号,存放着相应中断服务程序的入口地址。
- 向量地址: 中断向量在内存中的具体地址。
第六题:什么是中断 I/O 方式?说明其工作原理。
1. 什么是中断 I/O 方式?
- 中断 I/O 方式是计算机系统中一种常见的 CPU 与 I/O 设备进行数据传输和控制的方式。它解决了程序查询 I/O 方式(CPU 不停地轮询设备状态,效率低下)的缺点。
- 在中断 I/O 方式下,CPU 不会主动去检查 I/O 设备的状态。当 I/O 设备完成一次数据传输或出现某种状态变化(如数据准备好、传输完成、出现错误等)时,它会主动向 CPU 发出中断请求信号,通知 CPU 来处理。
2. 说明其工作原理:
中断 I/O 方式的工作原理可以分为以下几个阶段:
- I/O 操作的启动 (CPU 发出指令):
- CPU 执行 I/O 指令,向 I/O 接口发送命令字(如启动读/写操作、设置设备模式等)和数据地址。
- I/O 接口接收到命令后,通知 I/O 设备开始工作。
- CPU 发出 I/O 命令后,不再等待 I/O 设备的完成,而是立即继续执行主程序(执行其他任务)。
- I/O 设备工作及发出中断请求:
- I/O 设备在 I/O 接口的控制下,独立地执行其数据传输或其他操作(例如,从硬盘读取数据、将数据打印到打印机)。
- 当 I/O 操作完成(或发生异常)时,I/O 设备会向 I/O 接口发送一个“完成”信号。
- I/O 接口接收到设备信号后,会将自身的中断请求触发器置位(标记有中断请求),并向 CPU 发出中断请求信号。
- CPU 响应中断:
- CPU 在每个指令周期结束后,会检查是否有中断请求。
- 如果发现有中断请求,并且当前 CPU 的中断系统是允许中断的(即没有被屏蔽),CPU 会暂停当前正在执行的程序。
- CPU 保存当前程序的断点(程序计数器 PC 的值)和现场信息(如通用寄存器内容、状态字等)到堆栈中。
- CPU 根据中断源提供的中断向量(或通过查询、或中断控制器提供),跳转到相应的中断服务程序的入口地址。
- 执行中断服务程序:
- 中断服务程序开始执行。首先,它会进一步保存被中断程序的现场信息(如果之前没有完全保存)。
- 然后,中断服务程序会针对特定的中断事件进行处理(例如,将 I/O 接口中的数据读入内存,或清除 I/O 设备的错误状态)。
- 处理完成后,中断服务程序会清除 I/O 接口的中断请求标记,并恢复被中断程序的现场信息。
- 返回原程序:
- 中断服务程序执行结束,通过一条中断返回指令 (IRET) 返回到被中断的程序。
- CPU 恢复之前保存的断点和现场信息,继续执行被中断的程序。
优点: 提高了 CPU 的利用率和系统并行性,因为 CPU 不需要等待 I/O 操作完成,可以在 I/O 进行的同时执行其他任务。
缺点: 每次数据传输(一个字或一个字节)都需要 CPU 介入一次中断过程,当传输大量数据时,CPU 频繁地中断和恢复,开销仍然较大。
第七题:什么是 DMA (直接存储器存取) I/O 方式?说明其工作原理。
1. 什么是 DMA (直接存储器存取) I/O 方式?
- DMA (Direct Memory Access) I/O 方式是为了解决中断 I/O 方式在传输大量数据时 CPU 频繁介入的效率问题而引入的一种更高效的 I/O 数据传输方式。
- 在 DMA 方式下,数据在 I/O 设备和主存储器之间直接进行传输,完全绕过 CPU 的干预。CPU 只需要在传输开始前对 DMA 控制器进行初始化,并在传输结束后响应一次中断即可。
2. 说明其工作原理:
DMA 方式的工作原理主要涉及到 CPU、DMA 控制器和 I/O 设备三方协作:
DMA 传输的准备与启动 (CPU 初始化):
CPU 执行 I/O 指令,向
DMA 控制器
发送指令,对其进行初始化。这些初始化信息通常包括:
- 源地址: 数据从内存或设备开始的地址。
- 目的地址: 数据要传送到内存或设备结束的地址。
- 传输长度: 要传输的数据块的字节数或字数。
- 传输方向: 是从设备到内存(读)还是从内存到设备(写)。
- 传输单位: 每次传输的字节数(如字节、字、双字等)。
CPU 启动 DMA 控制器后,就可以继续执行自己的其他任务,不再参与后续的数据传输过程。
DMA 控制器接管总线控制权:
- 当 I/O 设备需要传输数据时,它会向 DMA 控制器发出 DMA 请求信号。
- DMA 控制器收到请求后,会向 CPU 发出总线请求信号 (Bus Request)。
- CPU 响应总线请求,发出总线允许信号 (Bus Grant),并将总线控制权暂时交给 DMA 控制器。此时,CPU 会进入暂停(或空闲)状态,不访问总线。
数据直接传输 (DMA 控制器控制):
- DMA 控制器获得总线控制权后,它直接控制数据总线、地址总线和控制总线。
- DMA 控制器根据之前 CPU 设定的源地址、目的地址和传输长度,自动地在 I/O 设备和主存储器之间进行数据块的传输。数据流不经过 CPU 的寄存器。
- 每传输一个数据单位(如一个字),DMA 控制器会自动更新内存地址和传输计数器。
DMA 传输结束与中断:
- 当 DMA 控制器完成所有指定数据的传输后(传输计数器减为零),它会向 I/O 设备和 CPU 发送一个传输完成信号。
- DMA 控制器向 CPU 发出中断请求信号。
- CPU 收到中断请求后,响应该中断,进入中断服务程序。
CPU 后续处理:
- 中断服务程序检查 DMA 传输的状态,确认是否成功完成,并进行必要的后续处理(如更新文件指针、错误处理等)。
- 最后,CPU 恢复被中断的程序,继续执行。
优点:
- 大大提高了 CPU 的利用率: CPU 在大部分时间里不需要参与数据传输,可以并行执行其他计算任务。
- 传输效率高: 特别适合传输大量数据块的场景。
- 减少了中断次数: 整个数据块的传输只需要 CPU 初始化一次和传输结束后响应一次中断。
缺点:
- 增加了硬件复杂性,需要专门的 DMA 控制器。
- 在传输数据时,DMA 控制器会占用总线,可能会短暂地“窃取”总线周期,使 CPU 无法访问内存,这称为“周期窃取”。但在很多情况下,这种影响可以忽略不计。
希望这些详细的解释能帮助你完全理解这三道题目!如果有任何不清楚的地方,随时问宝贝老师哦!
第四章指令系统
变址寻址方式主要用于对线性表之类的数组元素进行访问。采用变址寻址方式时,指 令中的地址码字段 A给出一个基准地址,如数组的起始地址,而数组元素相对于基准地址 的偏移量在指令中明显或隐含地由变址寄存器1给出,这样,变址寄存器I的内容实际上就 相当于数组元素的下标,每个数据元素的有效地址为变址寄存器的内容加基准地址,即操作 数的有效地址 EA=(I)+A。其中(I)表示变址寄存器1的内容。
指令中的地址码字段称为形式地址,这里的形式地址是基准地址 A,而变址寄存器中存放的是偏移量。
为缩短指令字长度,有些指令采用隐含地址码方式。即在指令中不明显给出操作数地 址或变址寄存器和基址寄存器编号,而是由操作码隐含指出。例如,单地址指令中只给出一 个操作数地址,另一个操作数隐含规定为累加器中的内容;此外,还有栈操作指令,其操作数 隐含为栈顶元素,指令中无须明显指出操作数地址。

