超线程/多核技术

预备知识
1、Intel自Pentium开始引入超标量乱序运行、大量的寄存器寄存器重命名、多指令解码器预测运行等特性;这些特性的原理是让CPU拥有大量资源,并可以预先运行及平行运行指令,以增加指令运行效率,可是在现实中这些资源经常闲置;为了有效利用这些资源,就干脆再增加一些资源来运行第二个线程,让这些闲置资源可运行另一个线程,而且CPU只要增加少数资源就可以模拟成两个线程运作。
P4处理器需多加一个Logical CPU Pointer(逻辑处理单元)。因此P4 HT的die的面积比以往的P4增大了5%。而其余部分如ALU(整数运算单元)、FPU(浮点运算单元)、L2 Cache(二级缓存)并未增加,且是共享的。
2、在计算领域,对称多处理是一种多处理机硬件架构,有两个或更多的相同的处理机(处理器)共享同一主存,由一个操作系统控制。当前最常见的多处理机系统使用了对称多处理架构。
3、多核心”通常是对于中央处理器(Central Processing Unit,CPU)而论的,但是某些时候也指数字信号处理器(DSP)和系统芯片(SoC)。
4、软件多线程。即便处理器只能运行一个线程操作系统也可以通过快速的在不同线程之间进行切换,由于时间间隔很小,来给用户造成一种多个线程同时运行的假象。这样的程序运行机制被称为软件多线程。
5、硬件多线程技术对称多处理机(SMP)系统具有多个处理器,所以具有真正的同时执行多个线程的能力;CMP技术通过在一块芯片上集成多个核心(Core)也具有真正的多线程能力;CMT技术则稍有不同,有的是依靠硬件执行线程切换来获得多线程能力,操作系统不再负责线程切换,因而这部分开销可以减少甚至消除,这方面典型的例子是SunUltraSPARC T1,它同时综合了CMP和CMT。微软Windows 2000以后的操作系统皆支持多线程与超线程技术

超线程技术
每个单位时间内,CPU只能处理一个线程(Thread)。除非有两个核心处理单元,否则要想在单位时间内处理超过一个的线程是不可能的。
超线程HT(Hyper-Threading)技术是在单个核心处理单元中集成两个逻辑处理单元,也就是一个实体内核(共享的运算单元),两个逻辑内核(有各自独立的处理器状态),从而可以在单位时间内处理两个分别进行整数和浮点运算的线程,模拟双内核运作。

并发执行,不是严格意义上的并行
超线程/多核技术_第1张图片

多核
多核(Multi-Core)是指在一片处理器中包含两个或两个以上的独立的内核,可以在单位时间内同时处理多个线程。

超线程/多核技术_第2张图片

补充
超线程利用了现代CPU的高度模块化特性,以及对于大多数工作负载来说,它们拥有丰富的资源。
例如,CPU核心可以具有几个执行“模块”(执行单元)--基本数学计算单元、高级数学计算单元、从内存中读取存取数据单元等。
没有超线程,核心将根据需要从内存读取程序,并尝试通过分析程序代码尽可能多地利用尽可能多的模块,以尝试确定哪些部分可以在同一时间完成,哪些部分取决于他人的成果,必须等到其他部分完成。通常的结果是, 一些执行单元最终将闲置,因为在大多数情况下,不可能将工作分成足够多的正确类型的任务以使用所有模块。
使用超线程, 内核将自身呈现为两个虚拟内核的操作系统。这允许它从存储器同时读入两个程序。这两个程序与以前一样被进行了分析,但是由于它们是不依赖于彼此直接结果的单独程序,所以 有更多的机会分享工作和同时做事情。这样, 更多的核心执行单位可以保持繁忙
具有超线程的单个核心将不会像两个真正的物理内核一样快,因为有时候这两个程序都希望使用核心的同一部分,最终可用资源只能分配给它们中的一个。但是在许多情况下,在 两个程序中执行操作的多样性意味着这些“冲突”(资源争用)不会太大地影响性能。现代HT能力的处理器具有非常好的调度器,所以即使在运行两个类似的任务时,性能损失相对较小。

你可能感兴趣的:(计算机系统结构)