我们首先从一个处理器微架构的速成教程开始学习。为了理解处理器设计的目标和优劣,你首先需要了解处理器执行的指令,所以我们从处理器运行的软件开始。
Conroe 微架构的存储子系统
Conroe 微架构的存储子系统
在处理器频率已经达到3GHz甚至更高的时代,保证即将用到的指令和数据已经在缓存中准备好是处理器设计者最重要的工作之一。因为只有这样,才能保证随着处理器频率的提高性能也随之提高;否则的话,更高的处理器频率只会使处理器花费更多的时钟周期来等待数据。这种把数据提前装入缓存的技术被称为“数据预取技术”(Prefeching)。但是,之前的处理器采用的数据预取技术并不能保证每次都成功,总会有一些失败的情况。这会导致处理器性能降低,特别是在运行对带宽敏感的应用程序的时候。
Conroe 微架构所采用的数据预取技术毫无疑问是目前为止最先进的,要优于 Pentium 4 和 Athlon 64 所采用的技术。Conroe 微架构中的每个核心至少有3组预取单元,包括2组数据预取单元和1组指令预取单元。除此之外,共享式二级缓存还拥有2组预取单元。这样,在一个双核心的采用 Conroe 微架构的处理器中,共有8组预取单元。有一个问题是,多达8组的预取单元在进行预取工作时,很容易会妨碍到正在运行的程序的正常的 load 操作。为了避免这种情况的发生,Conroe 微架构采取了预取监测器的机制,该监测器总会给予正在运行的程序更高的优先级。这样,预取单元就决不会从正在运行的程序那里“偷”走很多带宽了。
Conroe 微架构的预取机制还有更多新特性。数据预取单元经常需要在缓存中进行标签查找。为了避免引起正在运行的程序进行的标签查找的更高的延迟,数据预取单元使用标签查找的 store 端口。如果你还记得,load 操作的发生频率是 store 操作的2倍之多,那么就容易理解这样的选择了——store 端口的使用频率仅为 load 端口的一半。并且,store 操作在大多数情况下并不是影响系统性能的关键,因为在数据开始写入后,处理器可以马上开始进行下面的工作,而不必等待写入操作完成。缓存/内存子系统会负责数据的整个写入到缓存、复制到主内存的过程。
Conroe 微架构的缓存系统也令人印象深刻。二级缓存容量高达4MB,并且是由两个核心共享的,访问延迟仅12到14个时钟周期。每个核心还拥有32KB的一级指令缓存和一级数据缓存,访问延迟仅仅3个时钟周期。从 NetBurst 微架构开始引入的追踪式缓存(Trace Cache)在 Conroe 微架构中消失了。NetBurst 微架构中的追踪式缓存的作用与常见的指令缓存相类似,是用来存放解码前的指令的,对 NetBurst 微架构的长流水线结构非常有用。而 Conroe 微架构回归相对较短的流水线之后,追踪式缓存也随之消失,因为 Intel 认为,传统的一级指令缓存对短流水线的 Conroe 微架构更加有用。
网友评论