SISD:单指单数据
SIMD:单指多数据,可应用于 for 循环。向量处理器有直接操作一维数组的指令,通过流水线优化加快处理
MIMD:多指多数据,多核 CPU,用于硬件多线程
MISD:多指单数据,不存在
硬件多线程#
通过提供多个寄存器组,方便线程切换
细粒度多线程:多个线程轮流交叉执行指令,可在一个周期切换线程
粗粒度多线程:在线程出现较大开销时(如 Cache 缺失)才切换线程。切换开销大于细粒度多线程
同时多线程:实际上的线程级并行
多核处理器#
共享内存多处理器(Shared Memory Processor)#
多个处理器共享一个物理地址空间,实现不同处理器通信。
UMA:早期内存控制器没有整合进入 CPU,访存要通过北桥。分为基于总线、基于交叉开关网络、基于多级交换网络。
NUMA:内存控制器集成到 CPU 内部,每个 CPU 都有独立的内存控制器。直连到一部分内存。这部分称为 CPU 的本地内存。在 NUMA 中,内存分为本地和远程访问。
在多个处理器同时访问同一个共享变量时,操作共享变量要进行同步(一般加锁互斥)。