服务器 频道

Intel 32nm Westmere-EP处理器首发评测

  凭着新的架构,Nehalem-EP确实非常成功……比上一代性能上有着一到两倍的增长,笔者曾经用过“独孤求败”的词语来形容,不过,Nehalem-EP也并非完美,至少在某些方面上如此……


Nehalem TLB架构,深入Nehalem微架构:缓存子系统

  TLB:Translation Lookaside Buffer,旁路转换缓冲,或称为页表缓冲,有时也译做快表;TLB里面存放的是一些页表文件,亦即是虚拟地址到物理地址的转换表。TLB和L1/L2/L3 Cache没有什么本质的区别,只是前者缓存页表数据,后者缓存实际页面数据而已。当CPU在处理应用程序的页表请求时,要先到TLB中查找虚拟地址相应的物理页表数据,如果TLB中正好存放着所需的页表,则称为TLB命中(TLB Hit),接下来CPU再依次看TLB中页表所对应的物理内存地址中的数据是否在L1/L2/L3等缓存中,若没有的话则需要到内存中存取相应的页面。

  那么,TLB和Nehalem的弱点有什么关系呢?我们先来看看下面这个表:

CPU TLB Entry Comparison

CPUAMD
Shanghai Opteron
Intel
Penryn Xeon
Intel
Nehalem Xeon
L1I TLB(4kB)48128128
L1I TLB(large)4887+7
(HTT)
L1D TLB(4kB)481664
L1D TLB(large)481632
L2 TLB(4kB)512256512
L2 TLB(large)128320

   所谓的large就是指相对于一般的4kB页面,large页面为2M/4MB大小。这个表格说明了什么?它表明了Intel的处理器具有大量的小的TLB项,但是大的TLB项很少,并且这些表项要在两个超线程逻辑CPU中共享(或者分割)。Intel的处理器相对来说不适合大规模内存下的应用(如大型数据库和大型虚拟机)

 
四个改进:新的指令集和PCID、APIC Timer、1GB Pages

  多少地,为了解决这个问题,Westmere做出了改进,增加TLB数量属于微架构变动的范围不大适合现在做,因此Westmere采用了另一种做法:大页面支持,现在Westmere可以支持1GB的大页面,对比之前的2M/4MB,现在的Nehalem可以通过较少的大页面TLB也能覆盖很大的内存范围了,算是一个补救方案。

   PCID(Processor Context ID,处理器上下文ID)也是一个和TLB有关的改进,和大页面不同,PCID更倾向于提升多进程或者大量小规模虚拟机的环境。PCID通过Tag TLB(标记TLB)项保存CR3寄存器的值,以降低硬页面漫游造成的影响。CR3寄存器保存着当前表对物理地址转换的一部分,大页面需要3次CR3存取才能将虚拟地址翻译为物理地址。在进程切换或者虚拟机切换的时候,CR3的改写非常频繁,在它成为瓶颈的时候,CPU使用硬件辅助虚拟化的EPT/NPT技术甚至还不如使用软件虚拟化的二进制翻译技术来的要快!PCID的出现改变了这个情况,它需要操作系统或者VMM的支持才能工作。

  搭配大页面支持、PCID技术之外,Westmere还提供了如PAUSE-loop exiting、Real Mode支持等特地为虚拟化应用而做的改进,总的来说,虚拟机切换的时间比起Nehalem来,降低了12%。在大负荷的虚拟化环境,提升将会非常明显。笔者这几天的应用中就很有感受。 

0
相关文章