JILK - CPU - (2)

在CPU的层面,异常的含义是:“An exception is an event that typically occurs when an instruction causes an error”。有些异常能提供错误代号(error code),以提供关于异常的额外信息。

Intel CPU的发展经历了下面的几个阶段:

1. 16位的处理器(1978年)。16位的处理器是IA-32系列架构的前身,代表作是8086和8088。8086有着16位的寄存器,连接16位的外部数据线,连接20位的外部地址线。正如《Linux内核代码情景分析》中所讲的,因地址线有20位,而数据线和寄存器只有16位,所以Intel设计了分段寻址模式:将地址空间划分成若干个段,每个段的开始地址成为段基地址,段的基地址总是16位的整数左移4位而得,因此段的基地址刚好可用一个寄存器来表示。一个具体的Byte在地址空间的地址可表示成:Byte所在的段基地址+Byte在所在段的偏移量。Byte在所在段的偏移量用16位的整数来表示,因此一个段的大小最大为64KB。20位的地址空间如果用段平铺,且段与段之间不重叠,则最多可铺16个段。而8088则连接8位的外部数据线。

2. Intel 286 CPU(1982年)。因着8086里提供的分段寻址模式对访问的内存没有提供足够的保护,在286里,Intel设计了保护模式(Protected mode)。在保护模式里,段寄存器里,段的基地址不再直接存放在寄存器里,而是存放在称为描述符表(descriptor table)的地方。描述符表是在内存中的一个表格,表里的每个表项表示一个段的信息,包含了段的基地址。286里,一个描述符里提供24位的段基地址(为什么是24位而不是32位呢?因为286连的是24位的地址线),因此可寻址空间是16MB。而寄存器的内容则被分为几部分,其中一部分构成描述符表的下标,用于找到所寻段在描述符表的位置;而其它部分则用于控制对段的访问权限等。因为可寻址空间有16MB之巨,操作系统可以基于段寻址模式做简单的虚拟内存管理了。总的来说:286为8086的分段寻址模式提供了些访问保护:如访问段时检查是否越过段的边界;段可设置为只读/只允许执行;可设置段访问所需的权限。并扩充了寻址空间。值得注意的是:286连接的数据线还是16位的。

3. Intel 386 CPU(1985年)。386是Intel 32位系列CPU的鼻祖。在386里,寄存器被扩大到了32位,连接的数据线是32位,地址线也是32位。除此之外,386提供了能方便地在真地址模式(real mode)与保护模式(protected mode)之间切换,还提供了虚-8086模式(virtual-8086),以便更好地运行8086兼容的软件。386里增加了页式内存管理的支持(虽然是在段式寻址的基础上再实现页式管理):经过段式寻址得到的地址称为线性地址,线性地址经过页式的映射后才得到真正的物理地址。386增加了并行工作单元的支持(parallel stages),即CPU里可划分为若干个可并行工作的单元:BIU(总线接口单元,负责内存访问和I/O访问),CPUs(code prefetch unit,预取指单元,负责从总线上接收指令码,并将之压入一个队列),IDU(instruction decode unit,指令解码单元,负责解码CPUs送来的指令码),EU(execution unit,执行单元,负责执行解码后的微指令),SU(segment unit,段式寻址单元,负责将逻辑地址转换成线性地址,并做相应的保护检查),PU(paging unit,页式管理单元,负责将线性地址转换成物理地址,并做相应的保护检查,并缓存一些最近访问的页表地址等)。

4. Intel 486 CPU(1989年)。486相对386有了相当的改进,包括:1)在CPU里集成了一个8KB的一级缓存;2)在CPU里集成了一个x87FPU,即浮点运算单元;3)增加了一条指令处理的流水线(将解码、执行单元分解成5个流水线单元),从而使得一些简单的指令能在一个时钟周期里完成。

5. Intel Pentium CPU(1993年)

1)奔腾处理器将指令的执行流水线增加到了两条(分别成为u和v线),因此在一个时钟周期内可执行两条指令。

2)CPU内部的一级缓存增加到了两个,一个8KB的用于存放指令的缓存,一个8KB的用于存放数据的缓存。

3)除此之外,基于MESI协议,奔腾处理器往内存写的策略除了支持486已支持的write-through策略(即写的时候既把内容写到内存里,也写到缓存里)之外,还支持更好的write-back策略(即写的时候咱不把内容写到内存里,而只是写在缓存里,等到需要的时候再写进内存)。

4)集成在CPU里的用于存放指令执行分支的表格也更好地提高了程序里循环体的执行效率。

5)奔腾处理器除了对虚拟-8086模式做了更好的支持外,在页式管理方面,支持的页面粒度的大小可达到4MB。

6)奔腾处理器内部的数据传送通道的宽度可达到128~256bit,可提升CPU内部的数据传送速率。

7)支持APIC中断控制的架构,因而可支持多个CPU的模式下的中断处理。APIC(Advanced Programmable Interrupt Controller),由两种组件构成:Local APIC和I/O APIC。每个CPU里配备一个LAPIC,每条外部设备连接线(peripheral bus)上配备一个I/O APIC。LAPIC负责处理从I/O APIC或其它CPU的传过来的中断请求,同时也可以产生对其它CPU的中断请求,并将之发往其它CPU的LAPIC。I/O APIC负责处理从peripheral bus传过来的中断请求,并决定将之发往哪个CPU的LAPIC。

8)奔腾处理器已经支持双CPU模式了。

9)后来的奔腾处理器引进了MMX技术,即支持SIMD(single instruction multiple-data),使得单条指令可对多个数据寄存器执行相同的运算,很适合矩阵、向量那种的运算。

6. Intel P6(1995~1999年)。P6系列的CPU是基于超superscalar架构的。所谓的superscalar架构,其实就是CPU里增加更多的指令执行的并行性,包括增加指令处理流水线的道数,扩大CPU里的一级和二级缓存的容量等。要实现这种superscalar的架构,其实真不容易,有许多问题需要考虑,譬如:指令里的数据流分析、指令的超前执行、指令分支的预判等,实际上是大大增加了CPU里的逻辑复杂性。为什么这个系列的CPU称为P6系列呢?因为Pentium是希腊的penta(五的意思)加上拉丁问的ium组成的,因此Pentium是Intel的第五代x86系列的处理器,因此P6应该是指第六代开始的x86架构的处理器。

1)Intel Pentium Pro 处理器。该处理器里有三道的流水线,平均能在一个时钟周期里执行三条指令。除此之外,还拥有两个8KB的一级缓存和一个256KB的二级缓存。

2)Intel Pentium II 处理器。该处理器里加入了MMX技术。一级缓存增加到了16KB之大,二级缓存可为256KB、512KB或1MB。除此之外,内部还有一条周期为半个时钟周期的线将二级缓存与CPU相连。该CPU还支持各种的省电模式,譬如AutoHALT模式。HALT指令会使CPU进入AutoHALT模式,在该模式下,CPU的运行由其内部的时钟频率来支配,因此可省电,同时CPU也可响应外部的中断请求。譬如Stop-Grant模式,这也是一种省电模式,与AutoHALT相似,不过只能由硬件控制来进入该模式。譬如Sleep模式,只能从Stop-Grant模式进入该模式,处于该模式下,CPU的内部时钟将不再驱动CPU来工作,换言之,CPU进入了睡眠,并可能不会响应外部的中断请求,但二级缓存还是工作着的,而且CPU记录了进入睡眠之前其相关的上下文;因CPU睡着了,该模式比AutoHALT和Stop-Grant更省电。

3)Pentium II Xeon 处理器。该处理器支持的流水线的道数可为4或8或更多,并内部配备一条与时钟周期相同的连接线连接2MB的二级缓存到CPU。

4)Intel Celeron 处理器。著名的赛扬处理器,面向中低PC市场的产品。它集成了128KB的二级缓存。

5)Intel Pentium III 处理器。该处理器引入了SSE扩展(Streaming SIMD Extensions),即提供一些新的128位的寄存器和指令,以便可以在单精度的粒度上执行浮点值的SIMD操作。

6)Pentium III Xeon 处理器。该处理器将二级缓存搬到了CPU内部了,从而省去了用一条线将二级缓存与CPU连接,也提高了数据传输的速率。

7. Intel Pentium 4 处理器系列(2000-2006年)

1)奔腾4处理器是基于NetBurst架构的。所谓的NetBurst架构就是流水线的长度更长了,而且配备了新型的缓存结构,以求达到更快的处理速度。而奔腾4的处理频率达到了3.4GHz。

2)除此之外,还引进了SSE2(Streaming SIMD Extensions 2)技术和SSE3(Streaming SIMD Extensions 3)技术。曾经被名头叫得很响的超线程技术(Hyper-Threading Technology)也是在该处理器中引入的。所谓的超线程技术,即一个物理上的CPU核心可模拟成两个逻辑上的CPU核心在工作,关键在于:CPU内部为两条线程的执行分别准备流水线、以及相应的一套寄存器,至于类似ALU这样的逻辑运算单元还是只有一个,因此通过利用两条线程在流水线上的时间差可模拟出似乎两个线程在并发执行的效果,从而模拟出两个逻辑上的CPU核心。值得注意的是:Intel 64位架构是在Pentium 4 Extreme Edition里和Pentium 4 6xx和5xx系列里引进的。

3)在奔腾4的672和662处理器上,引进了Intel Virtualization Technology。Intel VT是在硬件层面上对系统虚拟化技术增加支持。传统的系统虚拟化软件如VM Ware、VirtualBox等是通过软件的方式来模拟出一个guest operating system的环境的,而Intel VT则在CPU硬件层次上对其进行了有力的支持,从而使得系统虚拟化的软件的实现可更为的简单,譬如CPU提供了一些新的指令,用于进入或退出虚拟化模式,这里有更为详细的介绍

8. Intel Xeon 处理器(2001-2007年)。Intel Xeon系列CPU大部分基于NetBurst架构(除了Intel Xeon LV、Intel Xeon 5100系列之外)。该系列的处理器的目标市场是多CPU核心的高性能服务器群。

1)Intel Xeon MP支持Intel Hyper-Threading技术。

2)Intel Xeon支持64位架构,其主频可达3.6GHz。

3)支持多CPU核心。

4)Intel Xeon 70xx系列支持Intel Virtualization技术。

5)Intel Xeon 5100系列是基于Core架构的,支持64位,支持Intel Virtualization技术和双核心技术。Core架构主要是针对NetBurst架构的一些缺点(如CPU的主频似乎已经难以再提高,CPU工作时消耗的电量大以及随之产生的热量大的问题),做出了一些回滚式的改进,如降低CPU的主频,但提升每个时钟周期里的CPU的利用率,并设计更有效率的指令解码单元、执行单元、缓存结构、连接线等,从而在降低CPU的耗电的同时提升CPU的处理效率。

6)Intel Xeon 3000系列也是基于Core架构。

7)Intel Xeon 5300系列支持多核心(可达4核),并基于Core架构。

9. Intel Pentium M处理器(2003-至今)。Pentium M处理器的目标市场是移动笔记本,因此它的特点是高性能、低耗电。

1)支持指令的动态执行技术(Dynamic Execution),其实就是这个从P6开始就有了,就是指令的数据流分析、指令的分支判断、指令预先执行等。

2)Pentium M里集成一级的32KB的指令缓存和32KB的数据write-back缓存。还集成了2MB的二级缓存。

3)支持MMX、SSE、SSE2。

4)支持400或544MHz的系统总线。

10. Intel Pentium Process Extreme Edition(2005-2007年)。该处理器支持双核心技术,基于NetBurst架构,并支持SSE、SSE2、SSE3,支持超线程技术,支持64位。

11. Intel Core Duo 和 Intel Core Solo处理器(2006-2007年)。Intel Core Duo处理器支持双核心,并着眼于低耗电。而Intel Core Solo是单核心CPU。

1)该处理器提供了Smart Cache,用于两个核心之间的数据共享。

2)改进的指令解码技术和SIMD技术。

3)Intel Dynamic Power Coordination技术,以及增强的Intel Deeper Sleep模式,这都是为了省电。

4)支持667MHz的省电系统总线。

12. Intel Xeon 5100, 5300系列和Core 2处理器系列(2006-至今)

1)Intel Xeon 3000、3200、5100、5300、7300系列,Intel Pentium Dual-Core,Intel Core 2 Extreme,Intel Core 2 Quad,Intel Core 2 Duo均支持64位,并都基于非常省电而有效率的Core架构。

2)Intel Xeon 5300,Intel Core 2 Extreme QX6800,Intel Core 2 Quad 均支持四核心技术。

13. Intel Xeon 5200、5400、7400系列和Intel Core 2系列(2007-至今)

1)Intel Xeon 5200、5400、7400系列,Intel Core 2 四核的Q9000系列,Intel Core 2 双核的E8000系列均支持64位,它们都基于增强的Core架构。

2)Intel Xeon 5400系列,Intel Core 2 四核的Q9000系列均支持4核心。Intel Xeon 7400系列可支持达6核心,并支持三级缓存达16MB。

14. Intel Atom处理器系列(2008-至今)。Intel Atom处理器是基于新的Atom架构的,Atom架构瞄准的是要求低耗电的设备,该架构里有两条执行的流水线,可支持超线程技术,支持通过动态调整缓存的使用大小来达到更加深度的省电,支持SSSE3(Streaming SIMD Extensions 3),支持Intel Virtualization Technology,支持64位(处理Intel Atom Z5xx系列),支持增强的Intel SpeedStep Technology。增强的Intel SpeedStep Technology在于将CPU工作的电压和频率可做分开的调整,从而使得在省电模式之间切换时更有效率。

15. Intel Core i7处理器系列(2008-至今)。Intel Core i7 900系列支持64位,它们都基于新的Nehalem架构。Intel Core i7处理器和Intel Xeon 5500系列均支持下面这些特点:

1)支持Intel Turbo Boost技术。该技术允许CPU能自行动态的调节CPU的主频,从而使CPU达到更高的性能。当然CPU受限于电流、散热、架构的因素,其主频总会有个极限值的,当CPU正在运行于其极限值,而操作系统对CPU发出要求,要求其运行在高性能模式下时,CPU就会以一定的频率幅度进行升频,如Nelhalem架构是133MHz、Sandy/Ivy Bridge架构是100MHz,当到达其极限值或超过之后,CPU又会以一定幅度降频,直到到达极限值的范围内。

2)结合超线程技术和多核技术,对于4核心的CPU,支持的同时执行的线程数可到8条。

3)增加的独立的耗电控制单元(Power control unit),能更有效地控制CPU活跃和空闲时的耗电情况。

4)在CPU内部集成了内存控制器(memory controller),可用于控制三通道的DDR3。所谓的三通道技术,就是内存控制器可通过三条独立的数据线来访问内存,相应的内存插槽有三个,内存控制器在存储或读取数据时,可将数据分割成若干3的倍数份,分别存于三个内存模块里,这样就能减少内存读写的时延,提高了单位时间内内存读写的吞吐量。值得注意的是:DDR3的3和这里的三通道不是同一个意思,DDR3是指单个内存模块里的数据读取速率是DDR的三倍的意思。

5)Intel Smart Cache的大小增至8MB。

6)支持Intel QuickPath interconnect(QPI)。QPI技术用于提供多CPU的情况下,CPU之间点对点的通信技术。

7)支持SSE4.2和SSE4.1。

8)支持第二代的Intel Virtualization技术。

16. Intel Xeon 7500系列(2010年)。Intel Xeon 7500和6500系列均基于Nehalem架构,而且还支持以下的特性:

1)支持的核心数可达8个。

2)支持24MB的Intel Smart Cache。

3)支持结合Intel Scalable Memory Interconnect和Intel 7500 Scalable Memory Buffer来访问系统内存。

17. 2010 Intel Core 处理器系列(2010年)。2010的Intel Core处理器系列包括Intel Core i7、i5和i3,它们都是基于Westmere架构,并具有以下的特性:

1)支持超线程技术。

2)支持Intel Turbo Boost技术。

3)增加的Intel Smart Cache和集成的内存控制器。

4)更智能的省电。

5)增加支持指令包括AESNI、PCLMULQDQ、SSE4.2和SSE4.1。

18. Intel Xeon 5600系列(2010年)。该处理器同样基于Westmere架构,并支持以下特性:

1)支持的核心数可达6个。

2)支持可达12MB的Intel Smart Cache。

3)支持指令集AESNI、PCLMULQDQ、SSE4.2和SSE4.1。

4)支持更为灵活的Intel Virtualization Technology。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值