如果我在设计代码时没有使用多线程范例,那么超线程会在逻辑内核上自动分配负载,还是必须专门编写以利用其他内核,就像它必须用于物理内核一样芯
答案 0 :(得分:2)
关于@ us2012的建议,我在这里发表评论......
没有这样的魔力。 Superscalar CPU,特别是OOO (Out Of Order execution) processors做了魔术 - 但这是在一个核心里面。
相反,Hyperthreading可以被认为是(非常简化的)在一个完整核心前面的两条管道。
AMD Bulldozer CPUs有一个类似的位,但它们更进一步:整数核心也被分成两个,但两个流水线+整数核心共享一个浮点单位。这整个被称为“模块”,有两个线程。
<强> TL; DR 强>
超标量CPU架构在单个处理器中实现了一种称为指令级并行的并行形式。因此,它允许比在给定时钟速率下可能的更快的CPU吞吐量。超标量处理器通过同时将多个指令分派给处理器上的冗余功能单元,在时钟周期内执行多个指令。每个功能单元不是单独的CPU内核,而是单个CPU中的执行资源,例如算术逻辑单元,位移位器或乘法器。
在计算机工程中,无序执行(OoOE或OOE)是大多数高性能微处理器中使用的范例,以利用指令周期,否则会被某种类型的昂贵延迟所浪费。在此范例中,处理器按照由输入数据的可用性控制的顺序执行指令,而不是按程序中的原始顺序执行。这样,处理器可以避免在为程序中的下一条指令检索数据时处于空闲状态,而是处理能够立即运行的下一条指令。
超线程(官方超线程技术或HT技术,缩写为HTT或HT)是英特尔专有的同步多线程(SMT)实现,用于改进在PC微处理器上执行的计算并行化(一次执行多个任务)。它首次出现在2002年2月的Xeon服务器处理器和2002年11月的Pentium 4台式机CPU上。1后来,英特尔将此技术应用于Itanium,Atom和Core'i'系列CPU等。
自2003年推出K8处理器以来,Bulldozer是AMD处理器架构的首次重大重新设计,并且还具有两个128位FMA功能的FPU,可以组合成一个256位FPU。该设计伴随着两个整数集群,每个集群有4个流水线(共享获取/解码阶段)。 Bulldozer还将在新架构中引入共享L2缓存。 AMD的营销服务将此设计称为“模块”。 16线程处理器设计将包含其中8个“模块”,[7]但操作系统会将每个“模块”识别为两个逻辑核心。