并行系统中的处理器
在 80 年代,一种用于制造多台计算机的专用处理器很受欢迎,称为 Transputer。Transputer 由一个核心处理器、一个小型 SRAM 内存、一个 DRAM 主内存接口和四个通信通道组成,全部位于一个芯片上。为了进行并行计算机通信,通道被连接起来形成一个 Transputer 网络。但它缺乏计算能力,因此无法满足并行应用程序日益增长的需求。RISC 处理器的发展解决了这个问题,而且它也很便宜。
现代并行计算机使用微处理器,它在多个级别使用并行性,如指令级并行性和数据级并行性。
高性能处理器
RISC 和 RISCy 处理器主导着当今的并行计算机市场。
传统 RISC 的特点是 −
- 寻址模式很少。
- 指令格式固定,通常为 32 位或 64 位。
- 有专用的加载/存储指令,用于将数据从内存加载到寄存器,并将数据从寄存器存储到内存。
- 算术运算始终在寄存器上执行。
- 使用流水线。
如今,大多数微处理器都是超标量的,即在并行计算机中使用多条指令流水线。因此,超标量处理器可以同时执行多条指令。超标量处理器的有效性取决于应用程序中可用的指令级并行性 (ILP) 的数量。为了保持流水线充满,硬件级别的指令以与程序顺序不同的顺序执行。
许多现代微处理器使用超级流水线方法。在超级流水线中,为了增加时钟频率,流水线阶段内完成的工作会减少,流水线阶段的数量会增加。
超大指令字 (VLIW) 处理器
这些处理器源自水平微编程和超标量处理。VLIW 处理器中的指令非常大。单个指令中的操作并行执行,并转发到适当的功能单元执行。因此,在获取 VLIW 指令后,其操作会被解码。然后,操作会被分派到功能单元,并在其中并行执行。
矢量处理器
矢量处理器是通用微处理器的协处理器。矢量处理器通常是寄存器-寄存器或内存-内存。获取和解码矢量指令,然后对操作数矢量的每个元素执行特定操作,而在普通处理器中,矢量操作需要代码中的循环结构。为了提高效率,向量处理器将多个向量运算链接在一起,也就是说,一个向量运算的结果被转发给另一个向量运算作为操作数。
缓存
缓存是高性能微处理器的重要组成部分。每 18 个月,微处理器的速度就会翻一番,但主内存的 DRAM 芯片无法与这种速度相媲美。因此,引入了缓存来弥合处理器和内存之间的速度差距。缓存是一种快速而小巧的 SRAM 内存。现代处理器中应用了更多的缓存,如转换后备缓冲区 (TLB) 缓存、指令和数据缓存等。
直接映射缓存
在直接映射缓存中,使用"模数"函数将主内存中的地址一对一映射到缓存位置。由于同一个缓存条目可以有多个主内存块映射到它,处理器必须能够确定缓存中的数据块是否是实际需要的数据块。此标识通过将标签与缓存块一起存储来完成。
全关联缓存
全关联映射允许将缓存块放置在缓存中的任何位置。通过使用某些替换策略,缓存确定它存储缓存块的缓存条目。全关联缓存具有灵活的映射,可最大限度地减少缓存条目冲突的数量。由于全关联实现成本高昂,因此从未大规模使用过。
组关联缓存
组关联映射是直接映射和全关联映射的组合。在这种情况下,缓存条目被细分为缓存集。与直接映射一样,内存块到缓存中的集合有固定的映射。但在缓存集内,内存块以完全关联的方式映射。
缓存策略
除了映射机制,缓存还需要一系列策略来指定在某些事件发生时应该发生什么。对于(集)关联缓存,缓存必须确定哪个缓存块将被进入缓存的新块替换。
一些众所周知的替换策略是 −
- 先进先出 (FIFO)
- 最近最少使用 (LRU)