SISD、SIMD、MISD、MIMD
I是instruction
D是data
S是single,m是multiple,所以SISD就是单指令流单数据流结构。同理可推其他的。
几种结构的异同
SISD:一条指令处理一条数据流,串行执行指令。
SIMD:一条指令处理多条数据流,对应的硬件就是一个指令控制部件,多个处理单元。
MISD:实际不存在
MIMD:节点之内的存储器独立无法被另外的节点访问。一起访问共享的地址单元
硬件多线程
为了减少线程切换的开销,硬件多线程为每个线程提供单独的寄存器组、单独的程序计数器,相当于多给他们一个简单的CPU取指。
细粒度多线程
按照指令级别划分,在不同的时钟周期,处理器能随意切换线程的指令,此所谓细粒度。需要硬件支持一个线程对应一个取指。
粗粒度多线程
按线程级别划分,如果正在执行的线程出现较大的阻塞才会切换线程。时间开销大但硬件开销相较于细粒度小。
同时多线程
比细粒度还牛,可以在一个时钟周期切换进程发射不同的指令,这就需要硬件支持多个线程多个功能部件。
多核处理器的基本概念
核:处理单元的集成,可以共享或者单独使用cache,共享主存。
一个核对应一个线程/进程,真正做到并行执行
共享内存多处理器
我理解的重点:对于共享内存来说,按照多个处理器的访问速度来分类:
访存速度所有指令基本一致:UMA
访存速度有的指令比较快:NUMA
近现代用的是NUMA,因为一个处理器对应一部分内存可以直接访问,叫本地内存,当然也可以通过总线访问别的内存,叫远程内存,访问本地内存的速度肯定大于访问远程内存的速度,正对应了局部性原则。
多处理器共享数据读写肯定会出现数据冲突,这时候采用对共享变量加锁的方式来进行互斥操作,后来的等待直到解锁。
注:硬件多线程技术是一个核处理多个线程,还可用于单核处理器