关于为什么不是流水线越长,就越好,可以参考这个讨论:
https://www.zhihu.com/question/20180643
以及
http://blog.jobbole.com/40844/
http://blog.csdn.net/zqm201/article/details/45558465
每个单位时间内,一个单运行管线的CPU只能处理一个线程(操作系统:thread),以这样的单位进行,如果想要在一单位时间内处理超过一个线程是不可能的,除非是有两个CPU的实体单元。双核心技术是将两个一样的CPU放置于一个封装内(或直接将两个CPU做成一个芯片),而英特尔的HT技术是在CPU内部仅复制必要的资源、让两个线程可同时运行;在一单位时间内处理两个线程的工作,模拟实体双核心、双线程运作。
Intel自Pentium开始引入超标量、乱序运行、大量的寄存器及寄存器重命名、多指令解码器、预测运行等特性;这些特性的原理是让CPU拥有大量资源,并可以预先运行及平行运行指令,以增加指令运行效率,可是在现实中这些资源经常闲置;为了有效利用这些资源,就干脆再增加一些资源来运行第二个线程,让这些闲置资源可运行另一个线程,而且CPU只要增加少数资源就可以模拟成两个线程运作。
P4处理器需多加一个Logical CPU Pointer(逻辑处理单元)。因此P4 HT的die的面积比以往的P4增大了5%。而其余部分如ALU(整数运算单元)、FPU(浮点运算单元)、L2 Cache(二级缓存)并未增加,且是共享的。
以上内容来自维基百科
就我个人理解,超标量技术使得一个CPU核心可以同时执行最多两条指令(甚至多条指令),但超标量技术有效的基础是一段代码中指令互相之间没有依赖,可以乱序执行。具体到一个线程中,这个基础可能是时而存在,时而不存在的,所以超标量并不能把ALU完全利用充分。虽然一个线程中一段代码的前后指令可能相互依赖,但两个不同的线程上的两个指令几乎多数情况是不相互依赖的,所以何不让一个CPU核心同时执行两个线程呢?
让一个CPU核心同时执行两个线程除了要让这个核心有至少两个ALU之外,还要求它有两份线程相关的寄存器,但不要求它有两份进程相关的寄存器。
进程相关,线程不相关的硬件资源
我们知道进程之间地址空间是隔离的,所以每个进程要有自己的页表,对每一个运行的进程而言,要有一个CR3寄存器来存储它的页表所在的位置,对应的就要有一组TLB。
线程相关的硬件资源
一个线程要有一个程序指针IP,一组寄存器(EAX, EBX, ECX, EDX等),堆栈(SP, BP)。
SpeedStep技术,最早用於Pentium III Mobile处理器——一种笔记本所用的移动版CPU中,使CPU能在高、低两个确定的频率间切换,而且这种切换不是即时调整的,通常设置为当用电池时降为低频,而在用交流电源时恢复到高频(全速)。由于降为低频的同时也会降低电压和功耗,一方面CPU本身耗电量减少,另一方面发热量也会减少,这样还能缩减甚至完全避免使用风扇散热,进一步的节约了用电,因此能延长电池的使用时间;另一方面在用交流电的时候又能恢复为全速工作以获得最高性能。
SpeedStep 技术的升级版本 EIST 全名為Enhanced Intel SpeedStep Technology(增强型Intel SpeedStep技术),是Intel全新的節約能源技術,最早用于Pentium M处理器,同样也是一款笔记本所用的移动版CPU。出于和AMD台式机处理器中的Cool'n'Quiet技术竞争的目的,EIST 技术现在也推广到Intel较新的台式机处理器中,目前使用这一技术的Intel台式机和移动版CPU包括Core系列、Pentium D系統(不包括805、820、915)、Pentium M系列和超线程的Pentium 4系列(不包括5XX)。
与早期的 SpeedStep 技术不同的是,增强型 SpeedStep 技术可以动态调整CPU频率,當CPU使用率低下或接近零的時候动态降低CPU的倍率,令其工作頻率下降,從而降低电压、功耗以及发热;而一旦监测到CPU使用率很高的时候,立即恢复到原始的速率工作。当然,对于移动版处理器,仍然可以设置在使用电池的时候永远不要调整到最高频率,而始终维持在次高或者最低频率工作。
以上内容来自维基百科
一句话解释就是根据当前计算任务的CPU利用率、CPU温度、电池电量等因素动态调整CPU的运行频率来达到省电、防止CPU温度过高等目的。
这个不用引用维基百科了,Intel CPU在内部放了个温度传感器,可以测量CPU温度,并且在CPU内部集成了一部分逻辑,可以硬件读取温度,在温度过高的时候发出信号,让主板提高风扇转数、让CPU降低工作频率或断电。
这没什么技术含量,好处是在CPU内部测温度测得比在CPU外面放传感器测得准。
在页表索引中有一个位叫做NX(No eXecution)位或叫XD(eXecution Disable)位,该位置位时,表明该页的数据是不可以执行的,该位位于页表项的bit 63上。提出它的原因主要是防止有害程序把自己的有害代码写在可写的数据段,然后修改程序指针,让程序指针指向数据段的有害代码来执行有害程序。