0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

浅谈多CPU、多核CPU、超线程技术、SMP

sanyue7758 来源:处芯积律 2024-01-06 10:38 次阅读

1 多 CPU

多CPU(multi-processor)指的是在计算机主板上有多个物理CPU,每一个物理CPU之间通过系统总线连接。

0a3ceb76-abe3-11ee-8b88-92fbcf53809c.png

Architectual State: 包括通用数据寄存器、段寄存器、控制寄存器等。

Execution Engine: 执行引擎,用来执行CPU指令,包括算数逻辑单元ALU等。

Local APIC: APIC全称是Advanced Programmable Interrupt Controller,翻译过来就是高级可编程中断控制器,用来处理CPU中断。

2 多核 CPU

多核(multi-core processor)指的是在一个物理CPU内部,封装了多个物理核心。这些物理核心可能位于同一个Die上,也可能位于多个Die上。

关于Die可以参看 《一文搞懂晶圆 Die CPU 之间的关系》。

无论使用哪种方式,多核CPU的架构可以表示为下图:

0a4106fc-abe3-11ee-8b88-92fbcf53809c.png

从上图可以看到,每一个物理核心都有自己的Architectual State、Execution Engine、Local APIC。因此,每一个物理核心都可以看成是一个逻辑 CPU

从并行性(Parallel)的角度看,多CPU和多核CPU都可以在同一时间,同时执行多条指令流。

那既然这样,为什么还要研究出多核CPU呢?

如果单从性能角度看,多核CPU内部物理核心之间通过片内总线通信,速度会快于系统总线。换句话说,多核 CPU 的性能要高于多 CPU

有了多核CPU,那么要构造处拥有4个逻辑CPU的系统,那么就有2种方案:

第1种就是使用2个物理CPU,每个物理CPU内部包含2个物理核心。

0a44a2bc-abe3-11ee-8b88-92fbcf53809c.png

第2中就是使用1个物理CPU,这个物理CPU内部包含4个物理核心。

0a48e912-abe3-11ee-8b88-92fbcf53809c.png

3 超线程技术

超线程技术(Hyper-Threading Technology)简称HT或者HTT,它作用于物理CPU内部的物理核心上。

为了实现超线程技术,一个物理核心内部,会同时包含2份Architectual State、Local APIC,但是只有1份Execution Engine。

0a4cb6d2-abe3-11ee-8b88-92fbcf53809c.png

在运行的时候,会同时有2条不同的CPU指令流送入物理核心:

0a5073b2-abe3-11ee-8b88-92fbcf53809c.png

因此,一个物理核心内部,就好像有了2个逻辑核心或者逻辑 CPU:

0a54476c-abe3-11ee-8b88-92fbcf53809c.png

表面上看,超线程技术使得一个物理核心可以当成2个使用,与不支持超线程技术的单核CPU相比,并行性应该翻倍。

但是,从上图看到,逻辑核心是共享Execution Engine的。

虽然同一时刻,有2条不同的CPU指令流送入了物理核,但同一时刻,Execution Engine只能执行1条指令流上的指令。

比如,当Execution Engine在执行指令流1的时候,需要等待指令需要的数据到达,那么,在这个等待的时间内,才可以切换到指令流2执行,避免Execution Engine处于空闲状态。

换句话说,超线程技术的并行性并不彻底,并行性并不能真正的翻倍

上面Execution Engine的运行方式,和在不支持超线程的单核CPU上运行多线程非常相似,但是两者有本质的区别。

在不支持超线程的单核CPU上运行多线程,是操作系统进行时间片调度造成的假象,任何同一时刻,其实都只有1条指令流在物理核上执行。

0a57c518-abe3-11ee-8b88-92fbcf53809c.png

在支持超线程的单核CPU上运行多线程,硬件层面支持同一时刻送入2条不同指令流到物理核心,只是在Execution Engine内执行的时候需要轮转调度。

0a5b378e-abe3-11ee-8b88-92fbcf53809c.png

既然超线程技术本质上和多核CPU一样,增加了核心数(逻辑核心),但是并行性却不及多核CPU,那为什么还要设计出超线程技术呢?

答案是超线程技术可以提升CPU核心的利用率。

在多核CPU上,如果某个物理核心在执行指令流时需要等待指令数据,那么该核心就有一段时间处于空闲状态(虽然可能很短暂)。但是如果支持超线程技术,那么该核心可以用来处理另外的指令流。

综上所述,结合多核技术与超线程技术,逻辑CPU的计算公式为:

4 SMP

SMP全称是 Symmetric Multi-Processing,翻译过来是对称多处理器,是一种多处理器架构。

对称多处理器中的对称,是指任何程序,不管运行在内核空间,还是用户空间,都可以运行在任意一个处理器上。

与之相反,ASMP,Asymmetric Multi-Processing,非对称多处理器,指某些处理器用来运行特殊的程序,比如操作系统,而另外的处理器用来运行非特殊程序,比如用户程序。

现代计算机系统都使用的是SMP架构,ASMP架构已经几乎绝迹了。

早期的时候,SMP专指多个物理CPU的场景。后续由于多核与超线程技术的出现,SMP在多个逻辑CPU下也同样适用。

Symmetric Multi-Proccessing Wikipedia

In the case of multi-core processors, the SMP architecture applies to the cores, treating them as separate processors

Hyper-Threading Wikipedia

The minimum that is required to take advantage of hyper-threading is symmetric multiprocessing (SMP) support in the operating system, as the logical processors appear as standard separate processors.

审核编辑:黄飞

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10446

    浏览量

    206576
  • SMP
    SMP
    +关注

    关注

    0

    文章

    68

    浏览量

    19450
  • 超线程
    +关注

    关注

    0

    文章

    16

    浏览量

    7565
  • 中断控制器
    +关注

    关注

    0

    文章

    59

    浏览量

    9373

原文标题:一文搞懂多 CPU、多核 CPU、超线程技术、SMP

文章出处:【微信号:处芯积律,微信公众号:处芯积律】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    如何弄懂 多核CPU下的多线程

    多核CPU下的多线程编程原来是这么回事...
    发表于 04-02 07:09

    什么是超线程超线程是如何工作的?

    什么是超线程超线程是如何工作的?
    发表于 10-26 07:22

    CPU超线程技术

    CPU超线程技术 CPU生产商为了提高CPU的性能,通常做法是提高CPU的时钟频率和增加缓存
    发表于 04-26 09:12 636次阅读

    CPU超线程技术

    CPU超线程技术            CPU生产商为了提高CPU的性
    发表于 12-24 10:57 414次阅读

    什么是超线程

    什么是超线程 超线程: 即Hyperthreading Technology。HT技术就是利用特殊的硬件指令,把两个逻辑内核模拟
    发表于 02-04 12:00 770次阅读

    基于Windows 操作系统内核驱动的多核CPU 线程管理

    1 引言 本文分析了Windows 系统的进程调度机制,并设计了一种基于Windows 操作系统内核驱动的多核CPU 线程管理方法,实现了一个基于Windows 内核驱动的线程管理服务
    发表于 10-31 11:02 0次下载
    基于Windows 操作系统内核驱动的<b class='flag-5'>多核</b><b class='flag-5'>CPU</b> <b class='flag-5'>线程</b>管理

    多核CPU、多进程、多线程之间的联系解析

    多核cpu主要分原生多核和封装多核。Windows 应用程序中消息有两种送出途径;直接和排队。Windows或某些运行的应用程序可直接发布消息给窗口过程。
    发表于 12-01 09:37 8005次阅读
    <b class='flag-5'>多核</b><b class='flag-5'>CPU</b>、多进程、多<b class='flag-5'>线程</b>之间的联系解析

    Linux:QEMU的CPU配置

    根据前面描述 CPU 的基本知识, 可以知道 CPU 有物理 CPU多核 CPU超线程
    的头像 发表于 06-22 18:01 5061次阅读
    Linux:QEMU的<b class='flag-5'>CPU</b>配置

    处理器开启/关闭超线程后,游戏帧数将发生什么变化?

    CPU处理器的核心数在不断提升,如今桌面端消费级市场基本起步都是4核心,高端一些的都达到了8核心,AMD甚至在去年还推出了16核心32线程的处理器。多核线程
    的头像 发表于 09-13 09:16 2.1w次阅读
    处理器开启/关闭<b class='flag-5'>超线程</b>后,游戏帧数将发生什么变化?

    CPU温度过高?教你如何关闭超线程功能

    CPU散热是很多玩家极为关注的问题,温度高了不仅对CPU性能不利,还会影响使用寿命等。如果发觉自己的CPU温度过高了,不妨试试微星的方法——关闭没什么用的超线程功能。
    发表于 11-25 11:12 8536次阅读

    讲讲线程、进程和CPU中的超线程

    因此,超线程简单来讲就是把这些不能公用的资源加倍。而那些流水线上的操作逻辑电路、ALU单元等则可以不用复制。以此实现多个线程同时在一个CPU的核心中进行处理。
    的头像 发表于 08-05 16:38 2061次阅读

    CPU 拓扑中的SMP架构

    CPU 拓扑用来表示 CPU 在硬件层面的组合方式,本文主要讲解 CPU 拓扑中的 SMP(Symmetric Multi-Processor,对称多处理器系统)架构,
    的头像 发表于 08-29 11:02 3528次阅读

    超线程是什么意思?

    超线程技术就是利用特殊的硬件指令,把两个逻辑内核模拟成两个物理芯片,让单个处理器都能使用线程级并行计算。 超线程(HT, Hyper-Threading)是英特尔研发的一种
    的头像 发表于 09-01 19:28 1w次阅读

    SMP多核启动cpu操作函数

    _ops回调 其中spin-table启动方式的回调如下: const struct cpu_operations smp_spin_table_ops = {.name= "spin-table
    的头像 发表于 12-05 16:04 289次阅读
    <b class='flag-5'>SMP</b><b class='flag-5'>多核</b>启动<b class='flag-5'>cpu</b>操作函数

    SMP多核secondary cpu启动流程

    ,详细分析可以参考上篇博文。其中以下流程执行secondary cpu启动相关的一些初始化工作: 在初始化完成且hotplug线程创建完成后,就可通过以下流程唤醒cpu hotplug线程
    的头像 发表于 12-05 17:41 279次阅读
    <b class='flag-5'>SMP</b><b class='flag-5'>多核</b>secondary <b class='flag-5'>cpu</b>启动流程