全站数据
8 4 2 0 5 8 1

CPU的核心数和线程数分别代表什么

漫漫自考路 | 简单学习,快乐成才!         
问题更新日期:2024-10-12 08:09:40

问题描述

CPU的核心数和线程数分别代表什么,麻烦给回复
精选答案
最佳答案

举个通俗的例子吧。

r CPU就是个银行,大家排队存钱取钱办手续。

r

有几个窗口就是几个线程,也就是可以“同时”接待的顾客数量。

核心数相当于职员数量,也就是真正干活的人。

4核心4线程,四个职员四个窗口,一个职员负责一个窗口,这没啥好说的。

4核心8线程,四个职员八个窗口,一个职员负责两个窗口,不过职员没有分身术,职员A在1号窗口干活的时候他就没法同时处理2号窗口。这叫超线程(Hyperthread)。

那4核心8线程跟4核心4线程比有什么区别呢?或者说超线程有什么好处呢?

r 这要分情况说。

r 如果来了4个储户,一直在4个窗口办手续,那4C4T(4核心4线程,下面都这么简写)和4C8T倒是没什么区别。

r 但实际情况是银行大厅里常年坐着100多号人,都要办手续。

r 而手续往往特别的复杂,需要储户填写10000000张单据的那种。

r 如果一直给前四个储户办手续,后面的就等到黄瓜菜都凉了,银行一定会被投诉到死。

r 所以就这么办:X储户填单据的时候,把Y储户叫过来办手续,X填完了这张再让X过来继续办。

r 不过叫Y过来的时候就得暂时把跟X储户相关的单子和资料先收起来,等X下次过来再把Y相关的东西收好,把X的东西再拿出来。这个时候更多的窗口也就是更多的线程的优势就显示出来了。

r X在1号窗口填单据的时候职员A可以转到2号窗口给Y办手续,然后再转到1好窗口继续给X办手续。这样就省下把东西收拾来收拾去的时间,这可以大幅度提高效率。

r 因为这样的切换其实非常的频繁,所以综合来说还是差不少事的。而且是任务越多超线程相对来说效果越好。

r

再细致一点说呢,职员虽然同时只能处理一个单子,但他有两只眼睛,两只手和一张嘴还有一个脑子。

r 处理一个客户的单子要先用眼睛看一下,然后脑子想一下怎么处理,然后动手动嘴。

r 几乎所有单子都是这个流程,这三项都做完算是处理好一个单子。

r 但在职员看完第一个单子开始动脑子想的时候,其实他的眼睛是闲着的。

r 开始做第一个单子的时候眼睛和脑子都闲着。

r 不能让丫闲着啊!

r 于是我们要求,职员在看完第一个单子开始动脑子想的时候要开始用眼睛看这个客户的下一个单子,而不是等第一个单子完全处理好再看第二个单子。这样第一个单子想好了,开始动手动嘴了,就可以立刻开始想第二个单子,而同时眼睛就可以看第三个单子了。

r 也就是说,这个职员可以手上做着第一个单子,脑子里想着第二个单子,眼睛同时看第三个单子。某种程度上来说,虽然职员没有分身术,但他在同一时间处理着三个单子,效率高多了吧?

r 这个叫流水线。级数是3级,就是把指令分成3个步骤来处理。级数越高每个核心“同时”处理的指令数就越多。但碰上特殊情况也就越蛋疼。

r

实际情况是对于一个储户来说,有的时候第一个单子不办完下一个就没法继续。比如一个储户要先查余额再汇款,余额不知道汇款的单子根本无从处理。加上单子和单子不一样,有的单子需要想很久,有的单子根本不用想。

r 所以一个职员负责一个窗口有的时候,手脑眼有的时候还是有闲下来的时候。我们称之为流水线上的泡泡,这个时候超线程则可以更好的榨干这个职员的剩余价值(我们称之为挤泡泡)。比如虽然他没有分身术,但比如他在第一个窗口给X办手续,因为种种原因眼睛闲下来了,那他可以先看看第二个窗口里Y的单子嘛。

r

其他回答

CPU的核心数与线程数的关系和区别。

简单地说,CPU的核心数是指物理上,也就是硬件上存在着几个核心。比如,双核就是包括2个相对独立的CPU核心单元组,四核就包含4个相对独立的CPU核心单元组,等等,依次类推。

线程数是一种逻辑的概念,简单地说,就是模拟出的CPU核心数。比如,可以通过一个CPU核心数模拟出2线程的CPU,也就是说,这个单核心的CPU被模拟成了一个类似双核心CPU的功能。我们从任务管理器的性能标签页中看到的是两个CPU。

比如Intel 赛扬G460是单核心,双线程的CPU,Intel 酷睿i3 3220是双核心 四线程,Intel 酷睿i7 4770K是四核心 八线程 ,Intel 酷睿i5 4570是四核心 四线程等等。

对于一个CPU,线程数总是大于或等于核心数的。一个核心最少对应一个线程,但通过超线程技术,一个核心可以对应两个线程,也就是说它可以同时运行两个线程。

CPU的线程数概念仅仅只针对Intel的CPU才有用,因为它是通过Intel超线程技术来实现的,最早应用在Pentium4上。如果没有超线程技术,一个CPU核心对应一个线程。所以,对于AMD的CPU来说,只有核心数的概念,没有线程数的概念。

CPU之所以要增加线程数,是源于多任务处理的需要。线程数越多,越有利于同时运行多个程序,因为线程数等同于在某个瞬间CPU能同时并行处理的任务数。

在Windows中,在cmd命令中输入“wmic”,然后在出现的新窗口中输入“cpu get *”即可查看物理CPU数、CPU核心数、线程数。其中,

Name:表示物理CPU数

NumberOfCores:表示CPU核心数

NumberOfLogicalProcessors:表示CPU线程数

其他回答

1、CPU的核心数是指物理上,也就是硬件上存在有几个核心。举个例子,双核就是包括2个相对独立的CPU核心单元组,四核就包含4个相对独立的CPU核心单元组,等等,依次类推。

2、线程数是一种逻辑的概念,也就是模拟出的CPU核心数。

3、例如,可以通过一个CPU核心数模拟出2线程的CPU,也就是说,这个单核心的CPU被模拟成了一个类似双核心CPU的功能。我们从任务管理器的性能标签页中看到的是两个CPU。

4、CPU的线程数概念仅仅只针对Intel的CPU才有用,因为它是通过Intel超线程技术来实现的,最早应用在Pentium4上。如果没有超线程技术,一个CPU核心对应一个线程。所以,对于AMD的CPU来说,只有核心数的概念,没有线程数的概念。

5、CPU之所以要增加线程数,是源于多任务处理的需要。线程数越多,越有利于同时运行多个程序,因为线程数等同于在某个瞬间CPU能同时并行处理的任务数。

6、要保证这些线程,全都不调用阻塞的API。如果有阻塞,有等待,比如要做输出的话,多开几个线程,可能更合适。