2026-3-21 CPU多核架构

1 多核架构
 1.1 多核技术
  什么是核?是独立的指令执行和控制单元,有独立的功能部件和独立的控制器,具有完整的指令流水线。一个处理器里面可能有多个核。
  衡量处理器的性能指标有哪些?Instruction Per Clock, IPC,每个时钟周期内可以执行的指令数;处理器的主频,CPU(或者说处理器)的主频就是指CPU的时钟频率,也就是CPU运算工作的频率,CPU是在特定的时钟频率下工作的。
  CPU的功耗有什么?静态功耗,指的是CPU输入输出都没有变化时的功耗,可以忽略不记;动态功耗,指的是CPU输入输出有变化时的功耗,动态功耗P与其频率成正比,P=cV^2 f,其中c为常数,与CPU架构有关,V为电压,f为频率。f受制于V,也就是说V越高,f就可以达到更大;这样由于P跟f成正比,又跟V^2 成正比,所以跟f^3 成正比,因此说明无法通过永远加快频率来改善性能,因为功耗会增加 -> 多核技术。
  多核的诞生来自于追求主频的时候无法解决的散热问题。多核技术把更多的核压在一个芯片当中,提高整个芯片的处理能力。这里解释一下整个流程,应该是一个处理器/芯片/CPU本来里面只有一个核,现在把很多个核都放在一个处理器/芯片/CPU里面。
 1.2 多核芯片
  片上多核处理器体系结构。片上多核处理器(Chip Multi-Processor, CMP)就是将多个计算内核集成在一个处理器芯片中,从而提高计算能力。CMP按计算内核是否对等,分成同构多核和异构多核:计算内核相同,地位对等的称为同构多核;计算内核不同,地位不对等的称为异构多核,异构多核多采用“主处理核+协处理核”的设计。
  核处理器分类。现在相当于我们知道了一个处理器上面可以放多个核,所以可以根据核的数量和每个核是否支持多线程来分类:单核多线程处理器,由单核CPU构成;多核处理器,由多核芯片构成;多核多线程处理器,每个核都是多线程的。这里面的每个核的多线程,就是指的硬件层面将一个核虚拟成两个逻辑核,也就是课上讲到的虚拟线程数量,让操作系统以为有两个核。
  典型多核芯片架构。现在是我们看看具体的多核处理器的实现。
   单核处理器芯片架构:一个芯片里面只有一个核(寄存器+运算器),所有任务串行执行。Pentium单核架构:用缓存、双流水线、分支预测等技术,让一个核内部能同时执行多条指令(ILP),单核性能压缩到极致。单核芯片与外围部件的关系:一个核通过I/O桥和总线连接内存、硬盘、显卡等外设,所有数据都要经过这个核,成为性能瓶颈。总的来说前面就介绍了单核,以及单核的加速,以及单核依旧有的缺陷。
   英特尔开始了第一代主流双核处理器Intel Core 2 Duo,在一个芯片里面放两个核;Core 2的双核结构:一个芯片里面放了两个完整的核,各自有独立的执行单元和L1缓存,共享中间的L2缓存和系统总线,两个核可以同时执行两个不同的线程(而不是虚拟线程);双核有两种设计:Intel的共享L2缓存,也就是上面介绍的,还有AMD的各自独立1M的L2缓存,不共享,通过Crossbar进行开关,相同点是都在一个芯片里面塞入两个核;双核和两个处理器的区别:两个处理器也就是需要两个芯片,分开的两个芯片通过外在的系统总线进行连接;需要外在软件的支持,以及会产生更多的热量消耗。双核则是一个芯片,在芯片内部两个核直接连接,多线程和多进程自动并行处理,热量消耗增加的很少,封装成本降低。到目前介绍了双核,双核的两种实现和双核和两个处理器的区别。
image
   多核架构:在一个芯片里面放N个独立核,每个核有寄存器和运算器,共享总线接口,核数可以扩展;
   多核处理器的分类:CU(Control Unit + Interrupt Logic),指的是控制单元加上中断逻辑,EU(Execution Unit),指的是执行单元。CU的个数表示操作系统可以看到的逻辑核数量,EU是实际的物理核数量,所以有了以下分类:单核单线程,一个EU,一个CU;单核多线程,一个EU,两个CU;多核处理器,两组EU和CU的组成,各自配套自己的Cache;多核多线程,每一组是一个EU和两个CU的组合,各自配套自己的Cache。
image
   多核处理器:每个核独自执行自己的进程/线程,核与核直接是真正同时的并行;多个线程并发使用同一个核的资源,核的内部是由多线程实现的并发。核内并发必须要硬件支持多个线程,否则一个核在同一时间只能跑一个线程。
   微处理器和芯片组:微处理器就是CPU,只负责计算,芯片组就是南桥和北桥,负责帮助CPU连接内存,显卡,硬盘等外设。
 1.3 多核中的并行性
  多核中的并行性分成指令级并行(Instruction-Level Parallelism, ILP)和线程级并行(Thread-Level Parallelism, TLP)。解决的核心问题分别是:一个核内部怎么同时执行多条指令,多个核之间怎么执行多个线程。
  指令级并行:当指令之间不存在相关性时,它们在流水线中是可以重叠起来执行的。这种指令序列中存在的潜在并行性称为指令级并行。也就是说,一条指令分成多步(取指令,译码,执行,写回),如果两条指令没有相关关系,就可以同时在流水线的不同阶段执行,不用等前一条完全结束;在机器指令级并行,通过指令级并行,处理器可以调整流水线指令执行顺序,将他们分解成微指令。这是CPU硬件自己做的,在结果正确的情况下打乱指令的执行顺序,把复杂的指令拆解成更细的微指令,让更多指令同时跑在流水线上;能够处理某些在编译阶段无法知道的相关关系(如涉及内存引用时),简化编译设计;能够允许一个流水线机器上编译的指令,在另一个流水线上也能有效运行;指令级并行使处理器速度迅速提高。
  线程级并行:线程级并行将处理器内部的并行由指令级上升到线程级。ILP是在一个核里找并行,TLP是在多核之间找并行,把大任务拆解成多个线程,每个核跑一个。TLP处理器的中心思想是:当某一个线程由于等待内存访问结构而空闲时,可以立刻导入其他的就绪线程来运行。处理器流水线就能够始终处于忙碌状态,系统的处理能力提高了,吞吐量也相应提升。这就是超线程和多核的思想,一个核等内存的时候,其他核继续跑别的线程。真正的TLP需要多核。
  多核处理器是一种特殊的多处理器:MIMD架构,不同的核执行不同的线程(多指令),在内存的不同部分操作(多数据);共享内存的多处理器,所有核共享同一个内存。
  同步多线程(Simultaneously Multithreading, SMT),容许多个独立的线程在同一个核上同步执行,可以将多个线程组合到同一个核上。
 1.4 实现多核架构的难点
  内存共享(同步访问)、独立缓存(缓存一致性)、核之间的通信、与系统其他部分的通信。由于共享内存的存在,写代码的时候要考虑互斥量,加锁这些东西。
 1.5 单核和多核的对比与区别
  单核,多处理器以及多核结构之间的简单对比
image
  单核是一个完整的计算单元;多处理器是两个独立的芯片各有一套完整单元;超线程是一个核里虚拟出两个逻辑核但共享执行单元;多核是一个芯片里有两个真正独立的核各有一套单元。
image
  共享Cache的多核是两个核共用同一个缓存;采用超线程技术的多核是每个核内部再虚拟出多个逻辑核,这是现代CPU的主流设计。
image
image
image
image
image
现代多核采用三级缓存:L1/L2私有,L3共享。

posted @ 2026-03-21 12:01  yyyyhc0214  阅读(19)  评论(0)    收藏  举报