首先了解以下术语及其用法上下文。
- 中央处理器
- CPU是处理单元。
- 它将有多个组件来处理指令。
- 每个组件负责不同的操作,例如指令提取,解码,处理,更新等。
- 核心
- 一个CPU可以具有多套/单元的上述组件。
- 如果有两组这样的单元,则处理器可以并行运行两条指令。
- 一个单元称为核心。
- Duel-Core CPU将具有两组相同的组件。四核CPU将具有四个相同的这些组件/单元集
- 多CPU /超线程
- 这有点棘手。仅在软件上下文中有效。
- 每当一条指令等待外部事件完成时,CPU就会空闲。为了更好地利用CPU,一些供应商维护两个硬件线程,并且每当一个线程被阻塞时,硬件就会切换到另一个线程。这种处理器将具有存储和恢复CPU状态的能力
- 对于软件,看起来两个线程正在并行运行。
- Linux将此超线程内核视为多CPU。因为它可以并行运行两个线程。因此它将看到两个执行单元(伪CPU)。
- 例如,最近的Intel CPU是超线程的,能够同时运行两个线程。
- 多核
- 现代CPU具有多套上述硬件单元/内核
- 与超线程不同,它们实际上可以并行执行两条指令
- 每个内核也可以超线程
- 多处理器
- 诸如服务器,超级计算机之类的高性能系统将具有多个物理CPU。
- 您可以在其主板上看到多个CPU插槽
- 每个都可以有多个核心。同样,每个内核都可以超线程
现代PC通常都带有多核超线程处理器。例如,在装有四核超线程英特尔CPU的PC上运行的Linux,将看到8个CPU(4个核心x 2个超线程)。
现代服务器通常是多核多处理器系统。典型的服务器将有两个套接字,每个套接字具有24个超线程内核。因此,在此系统上运行的Linux将看到96个CPU(2个插槽x 24核心x 2个超线程)
兄弟姐妹
回到实际问题,共享缓存的处理器将称为同级。高速缓存的组织将类似于(尽管会因架构而异),
- 每个内核将具有一个L1指令缓存和一个L1数据缓存
- 每个Core将拥有一个Unified L2缓存
- 套接字中的所有内核将具有一个Unified L3缓存
- 通常没有两个套接字将共享任何缓存
考虑带有2个插槽的多核多处理器系统。每个插槽具有24个具有超线程功能的内核。在这种情况下,Linux将看到总共96个CPU,其编号从0到95。套接字1将具有0-47的CPU,套接字2将具有48-95的CPU(与之不同的是,通常这些数字将被交错)。对于具有上述缓存组织的系统,