先前的Blog关站了,发现这里蛮好,决定驻扎啦。第一篇文章写什么呢,写篇《各种处理器介绍》的读书笔记吧。 涉及到的处理器以64位和准64位为主,包括Alpha、Itanium、Opteron、PA-RISC、Pentium Exon、POWER 4 / 4+ / 5 / 5+、Sun UltraSPARC IV / T1。文章的主要内容是探讨了各种概念、术语。
概念1:Processor Components
Execution Units
(Int, FP, etc)——This is where the calculations actually take place, covering integer instructions, floating point instructions, bit-shift and logical instructions, comparison instructions to decide on whether to branch the flow of control, media instructions, load and store instructions, etc.
Register
——which are by far the fastest memory in the system. In some chips there aren’t very many registers (early x86 chips had 8 general purpose registers and 8 data registers) and they aren’t very big (again, early x86 chips were only 16 bits wide), while in others there are literally hundreds of registers and they are huge (64 bits to 256 bits wide).
I(nstruction) and D(ata) Cache - L1 Cache
——This is the level 1 (L1) cache, which holds both instructions (i-cache) and data (d-cache). Compared to the registers there is quite a lot of this, usually 32KBytes to 128KBytes of both types, and it is the second fastest memory in the system.
L2 Cache
——This is usually measured in megabytes
Dual Core
——These are two fully functional processors, each with their own arithmetic and logical units, each with their own registers, each with their own cache, but sharing an interface to main memory and I/O.
(在
POWER
里面,这个共享的
Interface
就是
Shared L2 Cache
和
Distributed Switch
)
概念2:Cache Components
两个重要的概念,
Cache Coherence
和
TLB – Translation Lookaside Buffer
。
Cache Coherence
通过例如
Snooping
的机制实现,含义如下:
what is in one processor’s cache is the same as in all other processor’s cache
, and it matches what is in RAM
。
a list of cached blocks
另外一个定义是
cache line
: Cache
和
Memory
之间数据传输的最小单元
Snooping Protocols
: write invalidate
(
cache blocks are invalidated
)
, write broadcast
(
cache blocks are updated
)。所有
Cache
的
Cache line
应当保持一致,这就是
Cache Coherence
的体现了吧。
一:TLB的基本概念:
TLB
:
Translation lookaside buffer,
即旁路转换缓冲,或称为页表缓冲;里面存放的是一些页表文件(虚拟地址到物理地址的转换表)。
X86
保护模式下的寻址方式:段式逻辑地址
—
〉线形地址
—
〉页式地址;
页式地址
=
页面起始地址
+
业内偏移地址;
对应于虚拟地址:叫
page
(页面);对应于物理地址:叫
frame
(页框);
X86
体系的系统内存里存放了两级页表,第一级页表称为页目录,第二级称为页表。
TLB
和
CPU
里的一级、二级缓存之间不存在本质的区别,只不过前者缓存页表数据,而后两个缓存实际数据。
二:内部组成:
1
:
TLB
在
X86
体系的
CPU
里的实际应用最早是从
Intel
的
486CPU
开始的,在
X86
体系的
CPU
里边,一般都设有如下
4
组
TLB:
第一组:缓存一般页表(
4K
字节页面)的指令页表缓存(
Instruction-TLB
);
第二组:缓存一般页表(
4K
字节页面)的数据页表缓存(
Data-TLB
);
第三组:缓存大尺寸页表(
2M/4M
字节页面)的指令页表缓存(
Instruction-TLB
);
第四组:缓存大尺寸页表(
2M/4M
字节页面)的数据页表缓存(
Data-TLB
);
2
:
TLB
命中和
TLB
失败
如果
TLB
中正好存放着所需的页表,则称为
TLB
命中(
TLB Hit
);如果
TLB
中没有所需的页表,则称为
TLB
失败(
TLB Miss
)。
3
:
TLB
条目数
即页表条目数,
Entry!
4
:
TLB
的联合方式
1
〉全联合方式:
Athlon XP
2
〉
4
路联合方式:
P4
|
概念3:Processor Packaging
Single processor in a slot
、
Two processor in a slot
、
Four processor in a slot
;这里有两个概念需要澄清一下,就是
Two processor in a slot
和
Dual-core
。先讨论双核的概念,这个是最近处理器市场的热门话题同时也是公认的未来处理器发展趋势(如何保持摩尔定律的继续成立)。到底什么是
Dual-core
呢?
Dual-core
定义
所谓双核心处理器,简单地说就是在一块
CPU
基板上集成两个处理器核心,并通过并行总线将各处理器核心连接起来。
with CPU-local Level 1 caches, and a shared, on-die Level 2 cache
双核心并不是一个新概念,而只是
CMP(Chip Multi Processors
,单芯片多处理器
)
中最基本、最简单、最容易实现的一种类型。其实在
RISC
处理器领域,双核心甚至多核心都早已经实现。
CMP
最早是由美国斯坦福大学提出的,其思想是在一块芯片内实现
SMP(Symmetrical Multi-Processing
,对称多处理
)
架构
,且并行执行不同的进程。早在上个世纪末,惠普和
IBM
就已经提出双核处理器的可行性设计。
IBM
在
2001
年就推出了基于双核心的
POWER4
处理器
,随后是
Sun
和惠普公司,都先后推出了基于双核架构的
UltraSPARC
以及
PA-RISC
芯片,但此时双核心处理器架构还都是在高端的
RISC
领域,直到前不久
Intel
和
AMD
相继推出自己的双核心处理器,双核心才真正走入了主流的
X86
领域。
Intel
和
AMD
之所以推出双核心处理器,最重要的原因是原有的普通单核心处理器的频率难于提升(摩尔定律是否依然??),性能没有质的飞跃。由于频率难于提升,
Intel
在发布
3.8GHz
的产品以后只得宣布停止
4GHz
的产品计划;而
AMD
在实际频率超过
2GHz
以后也无法大幅度提升,
3GHz
成为了
AMD
无法逾越的一道坎。正是在这种情况下,为了寻找新的卖点,
Intel
和
AMD
都不约而同地祭起了双核心这面大旗。
Intel
双核心处理器的简介
Intel
目前的桌面平台双核心处理器代号为
Smithfield
,基本上可以简单看作是把两个
Pentium 4
所采用的
Prescott
核心整合在同一个处理器内部,两个核心共享前端总线,每个核心都拥有独立的
1MB
二级缓存,两个核心加起来一共拥有
2MB
,但这显然与
Pentium 4 6XX
系列处理器的
2MB
缓存不同。但由于处理器中的两个内核都拥有独立的缓存,因此必须保证每个物理内核的缓存信息必须保持一致,否则就会出现运算错误。例如在系统的内存数据区记录着
A
=
1
;如果第一个处理器内核对此数据区进行读写操作,并且改写为
A
=
0
,那么第二个处理器内核的缓存也必须进行更新,把
A
更新为
0
,否则的话,在以后的操作中数据就会出错。这样一个过程就是缓存数据的一致性,也就是说双核心处理器需要
"
仲裁器
"
来作协调
。针对这个问题,
Intel
将这个协调工作交给了北桥芯片
(MCH
或
GMCH)
:两个核心需要同步更新处理器内缓存的数据时,需要通过前端总线再通过北桥作更新
。虽然缓存的数据并不巨大,但由于需要通过北桥作出处理,无疑会带来一定的延迟,核心之间的通信就会变得缓慢,这将大大影响处理器性能的发挥。
Intel
目前的桌面平台双核心处理器产品分为
Pentium D
和
Pentium Extreme Edition(Pentium EE)
两大系列,其中,
Pentium D
包括
820(2.8GHz)
、
830(3.0GHz)
、
840(3.2GHz)
三个型号,采用
800MHz FSB
,面向主流市场;而
Pentium EE
目前只有
840(3.2GHz)
一个型号,同样采用
800MHz FSB
,面向高端应用。
Pentium D
与
Pentium EE
都采用
0.09
微米制程,
LGA775
接口;它们最主要的区别就是
Pentium EE
支持超线程技术,而
Pentium D
则不支持超线程技术,也就是说在打开超线程技术的情况下
Pentium EE
将被操作系统识别为四颗处理器。
在主板芯片组方面,由于北桥芯片担负着处理和交换不同核心缓存数据的重要作用,所以目前能够支持
Pentium D
和
Pentium EE
的是
945/955
系列,而
915/925
是不能支持的,在
915/925
主板上就算是能够开机,也只能使用双核心其中的一个核心!
AMD
双核心处理器的简介
AMD
目前的桌面平台双核心处理器代号为
Toledo
和
Manchester
,基本上可以简单看作是把两个
Athlon 64
所采用的
Venice
核心整合在同一个处理器内部,每个核心都拥有独立的
512KB
或
1MB
二级缓存,两个核心共享
Hyper Transport
,从架构上来说相对于目前的
Athlon 64
架构并没有任何改变。但与
Intel
的双核心处理器不同的是,由于
AMD
的
Athlon 64
处理器内部整和了内存控制器,而且在当初
Athlon 64
设计时就为双核心做了考虑,但是仍然需要仲裁器来保证其缓存数据的一致性。
AMD
在此采用了
SRQ(System Request Queue
,系统请求队列
)
技术,在工作的时候每一个核心都将其请求放在
SRQ
中,当获得资源之后请求将会被送往相应的执行核心,所以其缓存数据的一致性不需要通过北桥芯片,直接在处理器内部就可以完成。
与
Intel
的双核心处理器相比,其优点是缓存数据延迟得以大大降低。
AMD
目前的桌面平台双核心处理器是
Athlon 64 X2
,其型号按照
PR
值分为
3800+
至
4800+
等几种,同样采用
0.09
微米制程,
Socket 939
接口,支持
1GHz
的
Hyper Transport
,当然也都支持双通道
DDR
内存技术。
由于
AMD
双核心处理器的仲裁器是在
CPU
内部而不是在北桥芯片上,所以在主板芯片组的选择上要比
Intel
双核心处理器要宽松得多,甚至可以说与主板芯片组无关。理论上来说,任何
Socket 939
的主板通过更新
BIOS
都可以支持
Athlon 64 X2
。对普通消费者而言,这样可以保护已有的投资,而不必象
Intel
双核心处理器那样需要同时升级主板
|
注意,关于双核技术的历史纪录表,
IBM / POWER4 / 2001
;
HP / PA-8800 / 2004
;
SUN / UltraSPARC IV / 2004
;
Intel / Montecito / 2006
。可以看到,
IBM
在双核技术领域是历史开创者也是业界领军者。
再继续讨论
Two processor in a slot
,这里还有很多其他名称,像是
Dual-Processor
,
DCM
(
Dual-Core Module
)等等,这些名字又有怎样的区别呢?先说说
IBM
的命名规则——
DCM
、
QCM
、
MCM
,
POWER
的基本单元是
Processor
,全部都是
Dual-core
,最后的总体是
Module
,就是一个
CPU
模块,或者说一个
CPU
板。
DCM
是一个
CPU Module
封装一个
Dual-Core Processor
,
QCM
是一个
CPU Module
封装
2
个
Dual-Core Processor
,
MCM
是一个
CPU Module
封装
4
个
Dual-Core Processor
,这也刚好对应了
Single processor in a slot
、
Two processor in a slot
、
Four processor in a slot
。而且
IBM POWER
是从高端大型机服务器技术向下移植,是先有了
MCM
技术(当然那个时候基本单元是
Single-Core Processor
),然后再是
DCM
(这个时候已经有
Dual-Core
了),然后是
QCM
。而
HP
的产品里面,最早的双核是
mx2
,有
PA-RISC
和
Itanium
两种,其中,基于
Itanium
的
mx2
是
2005
年推出,当年号称伪双核,与
Opteron
的双核已经
IBM
的双核并不是一个境界,仅仅是并置两个
CPU
核心而已;而
2004
年推出的基于
PA-RISC
的
mx2
双核,具体细节并不清楚,可能是真正的双核吧。——这里用到的技术是
with a little clever electronics, you can package two processors into that same slot, and have the firmware of the system they are plugging into recognize and address them as totally separate processors
(这里需要实现
Cache Coherence
,
IBM
通过
Distributed Switch
,
Intel
通过北桥,
AMD
通过
Hyper Transport
)
, even though they are in a single slot
。