一般处理器,都是几个核心,那就有几个线程。但是由于处理器技术发展越来越快,就诞生了一个“超线程”技术,该技术普遍存在inter处理器。如果是一核心一线程的话,那么核心在工作时,难免会有空闲、休息的时候。但是我们不想让它(核心)休息,就可以用超线程技术,给核心更多的线程,让处理器的利用率更高,从而提升处理器的能力。例如I3-2100就是双核心四线程,一个核心对应两条工作线,这样处理器核心绝对不会有空闲的时间。
线程(Thread),一个进程(Process)可以有单个线程也可以有多个线程,而每个处理器核心同时只能处理一个进程,也就是说所谓的Inetl的Hyper-Threading超线程技术仅仅是让一个处理核心同时处理两个线程,同一个核心进行线程级别的并行运算。打个可能不太恰当的比喻吧,一个处理器核心就像是一个饭馆,一般处理器饭馆里有一个服务员(同时只能处理1个线程),有一组厨师(CPU核心),当客人来到服务窗口叫菜,或多或少(一个线程有1个或多个线程),服务员将这位食客所点的菜名一一报给厨师(进程的处理)之后去迎接下一位食客,再由厨师们根据需要将不同的菜品一一做好送到不同的食客面前,但不能只做一个客人(一个进程)的饭菜,否则其他客人会离开的(其它进程没有足够资源来运行,处理器完成各进程的不同线程的处理,所有进程都要照顾到,不能冷落了某个进程),食客吃饱吃好之后付账离开(进程结束)。那么超线程又是个什么意思呢?在上述的CPU饭馆中,Intel为食客们准备了两个服务员,可以同时让两个食客点菜,或者两个人同时记录一个食客的不同菜品,这样就是超线程技术,同时可以接受两个线程,但是厨师们(CPU核心)每个核心只能处理一个进程(同时只能做一道菜)所以在执行上其实一样,当然如果在时刻很少的情况下,两个服务员就有不错的效率了,因为可以缩短点菜和向厨师们报菜名的时间,这就是超线程。如果想同时有两组厨师在做饭的话那就是双核心处理器了。处理器的总线规格的话如果一直往前推到1974年,第一块4004CPU其实就有外部总线这样一说,当然现在就LZ的问题个人认为应该可以浓缩为目前常见的x86 CPU的外部总线类型。那么首先说说传统的FSB,X86处理器家族的FSB(Front Side Bus,前端总线)概念的出现是在486时代,那时候的处理器没有集成内存控制器,所以内存控制要有主板北桥来完成,而北桥和处理器的通讯手段就是FSB,速度越快,处理器读写内存的效率越高,当然处理器的所有信息不仅仅是内存读写都要经过FSB和其他设备相连,所以FSB在很长的一段时间中扮演着非常重要的角色。AMD方面自从K8家族开始已经没有FSB的概念了,取而代之的是基于串行技术的HyperTransport(超传输)技术,由于K8家族之后的处理器内置了内存控制器,通过高速的HT总线CPU可以通过北桥连接其他除了内存的任何设备,而北桥也也因为取消内存控制器而被大大的简化。Intel方面比较晚,从Nehalem家族开始同样是基于串行技术的高速QPI(QuickPath Interconnect快速互联通道)总线,当然现在的QPI还有另一个名称CSI(Common System Interface 公共系统接口),这种技术类似于HT总线不过在技术层面上要强于目前的HT总线。上述三种总线类型是现阶段比价常见的x86 CPU外部总线类型。高速缓存(Cache)的存在是为了令CPU更有效率的工作,CPU的速度越来越快,内存逐渐赶不上处理器了,于是和倍频同时出现在486时代的产物就是高速缓存,将CPU马上要用的数据存放在缓存中,让CPU不用等待从相对低速的内存中提取数据,减少时间损失,这就是缓存的功效。在多核心CPU中共享的缓存级别越高,核心之间的耦合度越高,相应的效率越高。其实x86处理器本身就是基于x86指令集的,而LZ所说的指令集应该是值说像是MMX 3DNow SSE AVX等扩展指令集吧,这些对于X86的扩展大部分是为了加强浮点运算的,X86指令集原有的X87浮点指令集无法在多媒体/3D游戏等等等等的普及大潮下有一个很好的表现于是相应扩展指令集便出现了,简而言之扩展指令集是为了在运行某种程序时提供便利和优化。
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线程数
是不是有核心数和线程数分别代表的是?CPU的那个功能和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。如果有阻塞,有等待,比如要做输出的话,多开几个线程,可能更合适。
核心数,就是跟人的脑子一样,比如说,核心数2就说明cpu有两个脑子脑子越多解决问题速度越快pu的核心数越高处理速度就越高。核心数2通俗地说就是双核cpu了。一个核心就是一个物理线程,核心数2就有两个物理线程。但是英特尔的超线程技术可以把一个物理线程模拟出两个线程来用,充分发挥cpu性能。线程数4就是代表核心数2的两个物理线程可以模拟成四个线程来使用。
287 浏览 6 回答
154 浏览 5 回答
348 浏览 3 回答
296 浏览 2 回答
279 浏览 3 回答
198 浏览 1 回答
195 浏览 5 回答
312 浏览 4 回答
103 浏览 2 回答
242 浏览 7 回答
141 浏览 6 回答
193 浏览 10 回答
103 浏览 8 回答
219 浏览 4 回答
178 浏览 3 回答
105 浏览 12 回答
143 浏览 4 回答
116 浏览 9 回答
137 浏览 5 回答
119 浏览 4 回答