1.SISD、SIMD、MISD、MIMD(Flynn提出)
1.1 单指令流单数据流结构(SISD)
1.1.1 说明
- 此类计算机内通常仅包含一个处理器和一个存储器,处理器在一段时间内仅执行一条指令,并且按照指令流规定的顺序串行执行指令流中的若干条指令。
- 也有的计算机通过设置多个功能部件,并采用高位交叉编址存储器来实现流水线式执行指令。
1.2 单指令多数据流结构(SIMD)
1.2.1 说明
- 此结构下,一条指令对多个数据流进行处理,一般称为数据级并行技术。
- 此类计算机通常由一个指令控制部件和多个处理单元组成。每个处理单元拥有一个独立的地址寄存器,因此每个处理单元所执行的指令是相同的,但处理的数据是不同的。
- SIMD在使用for循环处理数组时最有效,在使用case或switch时效率最低(此时指令必须依据不同的数据执行不同的操作)。
向量处理器是SIMD的变体,是一种专门实现了直接操作一维数组/向量指令集的CPU。
向量处理器的理念是:将存储器中收集到的数据按顺序存放到一组向量寄存器中,然后以流水线的方式对它们依次进行操作,最后再将结果写回寄存器。
1.3 多指令流单数据流结构(MISD)
1.3.1 说明
同时执行多条不同的指令去处理同一个数据。这种结构的计算机不存在。
1.4 多指令流多数据流结构(MIMD)
1.4.1 说明
- 同时执行多条指令分别处理不同的数据。
- 是一种并行程度更高的线程级或线程级以上的并行计算模式。
1.4.2 分类
多计算机系统/消息传递MIMD
此类系统中的每个计算机节点都具有独立的私有存储器和主存地址空间,且节点间无法直接通过存取指令访问彼此的私有存储器,只能通过消息传递进行数据传送。
多处理器系统/共享存储多处理器(SMP)/共享存储MIMD
此类系统中的每个计算机共享同一地址空间,可通过存取指令访问系统中的所有存储器。
2.硬件多线程
- 由于线程的切换包含一些列的开销,频繁切换会极大地影响系统性能,因此提出了硬件多线程的概念。
- 支持硬件多线程的CPU中,会为每个线程单独设置PC、通用寄存器组等,这样在线程切换时,只需要激活对应的寄存器即可,从而省略了与存储器进行数据交换的环节,大大减小了线程切换的开销。
- 硬件多线程技术可以在一个核中处理多个线程,更可以用于多核处理器。
2.1 细粒度多线程
2.1.1 说明
- 多个线程指令轮流交叉执行指令。
- 每个线程所执行的指令是不相关的,可以乱序执行。
- 处理器能在每个周期内切换线程。
2.2 粗粒度多线程
2.2.1 说明
- 仅在一个线程出现较大的堵塞时,才去切换线程。
- 如果流水线发生了堵塞,则必须清除被堵塞的流水线,新线程的指令在开始执行前必须重载流水线。
- 线程切换开销比细粒度多线程要大。
2.3 同时多线程
2.3.1 说明
- 实现了指令级的并行,实现了线程级的并行。
- 在同一个时钟周期内,能够发射多个不同线程的不同指令并执行。
Intel的超线程技术就是同时多线程SMT,即在一个处理器或一个核中设置两套线程状态部件,同时共享Cache和功能部件。
超线程技术的性能 ≠ 两个CPU的性能。(访问同一资源时需要进行加锁)
超线程技术在CPU内部仅复制必要的线程资源供两个线程同时运行。
双核技术是指将两个一样的CPU集成到一个芯片中,即将两个CPU直接做到一个芯片里面。
项目 | 双核技术 | 超线程技术 |
---|---|---|
内核数 | 2 | 1 |
同时执行的运算数 | 2 | 2 |
CPU数 | 2 | 1 |
资源争抢现象 | 无 | 有 |
3.多核处理器
3.1 说明
- 多核处理器是指将多个处理单元(核)集成到单个CPU中。
- 每个核可拥有自己的Cache,也可共享同一个Cache。
- 所有核一般都是对称的,并且共享主存。
3.2 性能发挥
必须采用多线程/多进程技术,以确保在同一时刻,每个核上都有一个线程在执行。
与硬件多线程不同,多核多线程是真正意义上的并行执行,即在同一时刻会有多个线程在同时执行;而单核上的多线程仅仅是多个线程交错执行,同一时刻只能有一个线程在执行。
并不是所有程序都在多核CPU中运行的快,多个CPU受制于功耗的限制,发热量增大,性能反而下降。
4.共享内存多处理器(SMP)
4.1 说明
- 多个处理器共享同一个物理地址空间。
- 处理器之间通过寄存器中的共享变量进行通信。
- 各处理器都能通过存取指令访问任何存储器的位置。
- 各处理器能够在各自的虚拟地址空间中单独的运行程序。
- 为解决数据一致性问题,多个处理器对共享变量进行操作时,需要通过对其加锁的方式进行互斥访问。
- 一般采用偶数路CPU。
4.2 分类
统一存储访问多处理器(UMA)
- 每个存储器对所有存储单元的访问时间相同,即访问时间与访问的处理器和访问的哪个存储字无关。
- 有基于总线、基于交叉开关网络、基于多级交换网络连接等几种处理器。
非统一存储访问多处理器(NUMA)
- 由于主存被划分给了不同的处理器或内存控制器,因此,对于存储单元的访问时间取决于哪个存储器访问以及访问了哪个字。
- NUMA的架构比UMA架构的运算拓展性要强。