现代计算机CPU与内存的设计、优化与实现
立即解锁
发布时间: 2025-08-14 01:36:40 阅读量: 8 订阅数: 25 


计算机系统与网络通信精要
### 现代计算机CPU与内存的设计、优化与实现
#### 1. 分支预测与资源冲突解决
在计算机运行过程中,CPU会尝试根据程序的使用情况或过去的性能来预测正确的执行路径。例如,一个循环可能会在退出之前执行多次,所以CPU可能会假设程序中返回到先前某点的分支通常会被执行。
部分系统配备了分支历史表,这是CPU内置的一小部分专用内存,用于记录正在执行的程序中几个分支指令的先前选择,以辅助预测。有些系统甚至在分支指令字中包含一个“提示”位,程序员可以设置该位,告知CPU分支更可能的结果。当然,如果分支预测错误,清除和重新填充取指流水线以及推测指令会产生时间延迟,但总体而言,分支预测是有效的。
对于使用相同寄存器的指令之间的冲突,可以通过使用用于保存推测指令结果的同一组寄存器来避免,直到指令执行完成。不同厂商给这组寄存器赋予了不同的名称,如重命名寄存器、逻辑寄存器或寄存器别名表。该组寄存器中的寄存器可以在逻辑上重命名为对应任何物理寄存器,并分配给任何执行单元。这样,使用“相同”寄存器的两条指令就可以同时执行,而不会相互阻碍。指令完成时,CPU会选择相应的物理寄存器,并将结果复制到其中,且这一过程必须按照指定的程序指令顺序进行。
#### 2. 内存访问的现状与挑战
在指令取指 - 执行周期中,最慢的步骤是那些需要访问内存的步骤。因此,任何对内存访问的改进都可能对程序处理速度产生重大影响。
现代计算机的内存通常由动态随机存取存储器(DRAM)电路芯片组成。DRAM价格低廉,每个DRAM芯片能够存储数百万位的数据。然而,动态RAM有一个主要缺点。对于如今的高速CPU来说,DRAM的访问时间(即内存延迟)太慢,无法跟上CPU的速度,因此必须在LOAD/STORE执行流水线中插入延迟,以让内存能够跟上。所以,DRAM的使用可能成为处理过程中的瓶颈,因为指令必须从内存中取出,数据也必须从内存移动到寄存器中进行处理。
虽然现代指令预取和分支控制技术能将指令取指延迟降至最低,并且越来越多地采用寄存器到寄存器的指令也减少了延迟,但最终仍需要进行内存访问,将数据从内存移动到寄存器,再从寄存器移回内存,因此内存访问的改进仍然会影响处理速度。
静态RAM(SRAM)是另一种随机存取存储器,其速度比DRAM快两到三倍。然而,SRAM的固有内存容量严重受限。与DRAM相比,SRAM设计需要更多的芯片空间,因为SRAM电路更复杂,会产生大量需要散发的热量。1 - 2MB的SRAM所需的空间比64MB的DRAM还要大,而且成本也高得多。在当今的内存需求下,除了非常昂贵的计算机,SRAM对于大量内存来说并不是一个实用的解决方案。
#### 3. 常见的内存性能提升方法
为了满足更快的内存访问需求,设计师们采用了三种常见的方法来提升内存性能:
- **宽路径内存访问**:这是增加内存访问最简单的方法,即加宽数据路径,以便每次访问时在CPU和内存之间读取或写入多个字节或字。例如,系统可以同时检索2、4、8甚至16个字节,而不是一次读取1个字节。大多数指令有几个字节长,大多数数据至少有2个字节,而且通常更多。通过加宽总线数据路径并使用更大的内存数据寄存器,可以轻松实现这一解决方案。大多数现代CPU的系统总线具有64位数据路径,通常用于一次读取或写入8个字节的数据。在CPU内部,这些字节可以根据需要进行分离并按常规方式处理。随着同时访问的字节数增加,回报率会逐渐降低,因为分离字节并将其引导到正确位置所需的电路复杂度会增加,快速内存访问也会变得更加困难,而且额外字节实际被使用的可能性也会降低。大多数系统一次读取和写入固定数量的字节,但也有一些系统可以读取和写入可变数量的字节。现代计算机通常使用标准的现成内存电路和芯片,这些芯片将宽路径内存访问作为标准功能。
- **内存交错**:这种方法是将内存分成多个部分,使得可以同时访问多个位置。每个部分都有自己的地址寄存器和数据寄存器,并且可以独立访问。内存可以同时接受每个部分的一个读写请求。通常将内存划分成连续访问点(如每组8字节)位于
0
0
复制全文
相关推荐










