2024.06.26:计算机组成原理多处理器的基本概念学习笔记
第21节 多处理器的基本概念
- 1. 计算机体系结构
- 1.1 SISD单指令流单数据流(前面几章一直在学习的内容)
- 1.2 SIMD单指令流多数据流
- 1.2.1 改进:向量处理器
- 1.3 MISD多指令流单数据流
- 1.4 MIMD多指令流多数据流
- 1.5 总结(厨师、菜、助手、食谱)
- 2. 硬件多线程
- 2.1 细粒度多线程
- 2.2 粗粒度多线程
- 2.3 同时多线程
- 3. 多核处理器
- 4. 共享内存多处理器SMP(对称多处理器)
- 4.1 统一存储访问多处理器UMA(对主存是共享的概念)
- 4.2 非统一存储访问多处理器NUMA(主存划分给不同处理器)
多处理器也就是它可以并行操作这样的CPU,正常的CPU我们只能去处理一条指令完成一个操作,但是对于多处理器来说,它可以实现同时去执行多条指令或者处理多个数
1. 计算机体系结构
所有的处理器或者说所有的计算机体系都是这四种之内
1.1 SISD单指令流单数据流(前面几章一直在学习的内容)
- 在任意时刻,计算机执行单一指令操作单一数据
- 传统的桌面计算机在处理文本编辑或简单图形操作时通常采用SISD架构
1.2 SIMD单指令流多数据流
- 一条指令同时操作多个数据,非常适合于执行重复的相同操作,如图像处理中的像素操作
- 现代图形处理单元(GPU)在渲染3D图形时,会用SIMD处理成千上万个顶点和像素的相同操作
1.2.1 改进:向量处理器
向量处理器是一种实现了SIMD指令集的高性能计算机处理器,它可以同时处理一组数据(向量)上的同一操作,这样的处理器专为执行复杂数学运算而设计的
想象一个厨师(向量处理器)在一个非常大的厨房里(计算环境)里,有一个巨大的炒锅(向量寄存器),可以同时烹饪大量的食材(数据),这位厨师可以一次性把锅里的所有食材进行相同的烹饪步骤,比如同时翻炒所有的食材,而不是一个接一个翻炒。
1.3 MISD多指令流单数据流
- 多条指令流同时操作同一数据
- 难以实现,实际上不存在
1.4 MIMD多指令流多数据流
- 多个处理器同时执行不同的指令序列,处理不同的数据
- 大型服务器在处理多用户的不同请求时会使用MIMD,例如Web服务器或数据库服务器
1.5 总结(厨师、菜、助手、食谱)
2. 硬件多线程
线程是操作系统里引入的一个概念,在主存中去运行的某一个程序,我们这个单元会把它叫做进程,其实进程内部又可以分成一个一个的小线程,一个小线程里面是可以执行很多很多条指令的
2.1 细粒度多线程
- 细粒度多线程允许处理器在每个时钟周期中轮换不同的线程,去执行不同的指令
- 这种切换通常发生在一个线程执行指令时遇到长时间等待的情况下
2.2 粗粒度多线程
在当前执行的线程被阻塞或完成之后才切换到另一个线程,切换的原因通常是等待I/O操作、长时间的计算或其他资源的延迟
2.3 同时多线程
允许多个线程在同一时间内在多核处理器并行执行,通过在处理器内部共享和复用资源(如算术逻辑单元和寄存器文件)实现
3. 多核处理器
- 将多个处理单元集成到单个CPU中,每个处理单元称为一个核
4. 共享内存多处理器SMP(对称多处理器)
- 两个或多个相同的处理器(CPU)共享主内存、I/O设备等资源,并具有相同的访问内存的能力
- 处理器之间通过⾼速总线或其他数据连接方式相连,可以有效地协作处理任务
- 在SMP系统中,所有处理器共享⼀个操作系统,可以运行在任何处理器上,并共同访问所有资源
4.1 统一存储访问多处理器UMA(对主存是共享的概念)
每个处理器对所有存储单元的访问时间大致相同
对于统一存储访问来说,它对待主存实际上是一个共享的概念,也就是每一个处理器,它可以访问这个主存里面的每一个存储单元,并且访问的时间都是一样的
4.2 非统一存储访问多处理器NUMA(主存划分给不同处理器)
主存被分割给不同的处理器,处理器访问自身附近的内存(本地内存),比访问与远程处理器的内存(远程内存)更快、更便宜
UMA的所有处理器共享同⼀内存空间因此每个处理器中的cache都是共享内存的副本,尤其需要注意个处理器中的cache一致性问题