| |
内存控制技术高性能内存控制器设计方案 |
| |
|
| |
| 现代操作系统将与应用相关的指令和数据存储在计算机的主存储器或系统内存中。因此,CPU读取主存储器中保存的指令和数据的能力对计算机的整体性能有着非常重要的影响。在一个基于英特尔x86 CPU的系统中,由核心逻辑提供系统内存控制功能。 |
| |
| 内存系统的两个衡量指标是时延和带宽。内存时延即从CPU请求调用内存中的一组特定数据,到CPU收到该数据之间的一段时间。内存带宽即在特定时间段内,能够传输的数据量。例如,如果发生高速缓存缺失,那么,内存时延即为获得内存输出的首个请求字所经过的延迟,而内存带宽则决定了从内存中读取剩余的超高速缓冲存储器线所需要的时间。有些应用对内存带宽比较敏感,而另一些应用则对时延更为敏感,但总的来讲,两种能力都将影响系统的整体性能。 |
|
| 本技术大纲概述了NVIDIA nForce™4 SLI™ SPP中的内存控制器的设计方案,并解释了其设计原则和对系统性能的影响。 |
|
|
| |
NVIDIA nForce4 SLI(英特尔版)SPP是首款面向基于英特尔CPU的平台的NVIDIA nForce核心逻辑解决方案。该解决方案是针对发烧友级和高性能台式机细分市场而设计的,在这个细分市场中,系统整体性能是用户主要的选择标准。这让NVIDIA的架构设计师和产品设计师想到了要在NVIDIA nForce内存控制器上实现多种创新特性,以最大限度地提升系统性能,例如:
双DDR2内存架构
支持高速DDR2内存
更高的总线利用效率
NVIDIA动态自适应推测式预处理器(DASP)3.0
NVIDIA QuickSync™ 技术 |
| |
|
图1. NVIDIA nForce4 SLI(英特尔版)内存控制器 |
| |
图内文字:
CPU:中央处理器
Address and command bus:地址和指令总线
FSB interface:前端总线接口
DDR2 interface:DDR2接口
DIMM:双列直插式内存模块
QuickSync:快速同步技术
PCI Express:总线技术
nForce4 SLI SPP DualDDR2 memory controller:nForce4 SLI SPP 双DDR2内存控制器
Hypertransport:传输技术 |
| |
|
|
|
双DDR2内存架构 |
| |
最初的双DDR架构
NVIDIA率先提出,在NVIDIA nForce处理器中利用双DDR内存通道,提供尽可能最高的内存带宽,从而实现最高系统性能和图形性能。
最初的双通道内存架构(双DDR)是针对尚未过量使用内存系统的上一代CPU而设计的。例如,首款NVIDIA nForce系统平台处理器/集成式图形处理器(SPP/IGP)就旨在支持AMD Athlon XP CPU,并且具备一个双DDR-266内存接口。AMD Athlon XP采用了一个运行频率为133 MHz (有效数据速率为266 MHz)的64位前端总线(FSB),因此,其理论峰值FSB带宽为2.1 GB/s。而一个128位宽的DDR-266内存接口的理论峰值内存带宽则为4.2 GB/s。也就是说,CPU仅占用了一半的可用内存带宽,为GPU和其他I/O接口留出了充裕的带宽。因此,最初的双DDR内存控制器包含两个独立式64位DDR-266内存控制器和一个交错存取装置,可支持CPU和GPU并行使用两个64位内存通道。 |
| |
当今的双DDR2 架构
如今,像英特尔奔腾4这样的CPU,拥有充足的FSB带宽来充分利用内存带宽。由于NVIDIA nForce4 SLI(英特尔版)旨在支持这种类型的CPU,因此,NVIDIA的工程师重新设计了双DDR内存架构。FSB传输数据率达到1066 MHz的奔腾4 CPU的峰值带宽为8.6 GB/s,几乎达到双通道DDR2-667内存接口的峰值带宽(10.6 GB/s)。这意味着要维持CPU的峰值带宽要求,CPU读取数据时必需同时占用两个内存通道。
NVIDIA nForce4 SLI(英特尔版)中的双DDR2内存控制器采用一种低位交叉存取模式,轮流使用两个内存通道,从而实现了CPU存取指令同时发送至两个通道。交叉存取的数据量取决于两个内存通道的数据传输是对称的还是不对称的。如果这两个通道的数据传输是对称的,那么,双DDR2内存控制器将采用较细粒度交叉存取。然而,如果这两个通道的数据传输是不对称的,那么双DDR2内存控制器将降为粗粒度交叉存取。
交叉存取的粒度会影响系统性能。当两个内存通道的数据传输完全相同,并且以极细的粒度进行交叉存取时,系统就能达到最佳性能。当两个通道由于负载不对称而进行较粗粒度交叉存取时,系统性能将有所降低。然而,这里要指出的是,NVIDIA nForce4 SLI(英特尔版)中的内存控制器始终以128位宽模式运行,不论两个内存通道的数据传输是否对称。因此,该解决方案优于其他面向奔腾4的核心逻辑解决方案,因为,后者在两个通道的数据传输不对称时,会将其内存控制器从128位宽模式降为64位宽模式。 |
| |
支持高速DDR2内存
NVIDIA nForce4 SLI(英特尔版)支持的DDR2内存速度最高达到667 MHz。JEDEC (电子设备工程联合委员会,一个制定行业标准的组织)规定的型号较老的DDR内存的数据率最高为400 MHz。这样的数据率不足以满足平台带宽的需求,因此,JEDEC批准了一种新的内存标准,称为DDR2。DDR2规格范围为从400 MHz至800 MHz,采用较低的I/O电压(1.8 V),并融合了多种架构改进措施,从而提高了内存总线效率。
目前,已有数家制造商设计了面向奔腾4的核心逻辑芯片,既可支持DDR内存,又可支持DDR2内存。而NVIDIA则选择不同时支持两种内存,因为要支持传统的DDR内存就必需在几个设计问题上做出折衷,而这会影响系统性能。NVIDIA nForce4 SLI(英特尔版)经专门设计,仅支持DDR2内存,可以667 MHz数据率运行。
NVIDIA特地在NVIDIA nForce4 SLI(英特尔版)中添加了多项增强特性,以使内存接口以667 MHz,甚至更高的数据率运行。其中一项增强特性就是为每个DIMM配置一个专用地址和指令总线(也称为地址总线)。该地址总线的负载是内存接口速度的主要限制因素。通常,无缓冲的DIMM会向地址总线分配8个或16个负载,相比之下,分配给数据总线的负载则最多为2个。通过使每个DIMM使用一个专用地址总线,而不是多个DIMM共享所有总线,NVIDIA确保了内存控制器不仅可以支持高数据率,而且能以1T地址定时运行,从而缩短了内存时延。 |
| |
|
| |
图2. 专用地址总线与共享地址总线之比较
图中文字:
CPU:中央处理器
Core logic:核心逻辑
Shared AD:共享地址总线
Dedicated AD:专用地址总线
DIMM:双列直插式内存模块
Other Core logic:其他核心逻辑
NVIDIA nForce4 SLI
address and command bus:地址和指令总线 |
| |
如果在一个时钟周期内,内存控制器将地址和指令发送至地址总线,并且由DRAM设备锁存,则实现了1T地址定时。如果在一个时钟周期内,内存控制器将地址和指令发送至地址总线,而DRAM设备是在下一个时钟周期内,对其进行锁存,则为2T 地址定时。2T 地址定时用于确保为地址和指令提供充足的设置和保持时间。地址总线共享多个DIMM常常造成地址总线负载沉重,此时就必需采用2T 地址定时。
执行2T 地址定时的系统性能总是低于执行1T 地址定时的系统性能,因为2T 地址定时相当于使CAS时延增加了整整一个时钟周期(参见图3)。这对于生成大量随机内存存取指令的应用尤其显著,因为每一次打开新的页面时用户都能明显地感觉到更长时延。 |
| |
|
图 3. 2T定时与1T定时之比较 |
| |
图内文字:
Clock:时钟周期
Address (2T Timing):地址(2T定时)
Data output:数据输出
Cl=3 cycles:Cl=3个时钟周期
Address (1T Timing) :地址(1T定时)
Data output:数据输出
Cl=3 cycles:Cl=3个时钟周期
Other P4 Core logic:其他奔腾4核心逻辑
NVIDIA nForce4 SLI (Intel):NVIDIA nForce4 SLI(英特尔版) |
| |
更高的总线利用效率
DRAM的广泛应用主要得益于其成本比竞争技术更为低廉。而实现这种低成本的部分原因是DRAM有限的运行速度、时延和周期时间。例如,虽然在过去几年中,CPU的时钟频率翻了两番,但DRAM的时钟周期每年仅缩短7%。一种用于改善CPU时钟频率与DRAM时钟周期之间的这种不协调现象的常用技术就是将DRAM的内部阵列划分为存储体,并有效地将之视作单独的阵列。
现代内存控制器将指令交叠在DRAM内部的存储体中,从而提升系统性能。交叠读/写、启用、预加载和刷新等指令消除了与这些指令相关的部分时延,并相应地缩短了内存系统的整体时延。对这些指令进行交叠的效率决定了地址总线的利用率。低效率的模式将导致地址总线出现“泡沫”——无效时间,即在此期间地址总线无所事事。
在设计周期的开始阶段,做出架构决策时,总线的利用效率就已确定。其中一些选择涉及页式存储器管理、需要支持的存储体的数量、地址映射和交叉存取、突发串长度和预取策略等。作为例子,本部分将讨论地址定时和突发串长度对总线利用率的影响。
DDR2 DRAM设备支持的突发串长度为4和8。突发串长度是指响应一条读指令,从内存读取的数据总量,或者在写操作过程中,发送至内存的数据总量。例如,当突发串长度设置为4时,在一次读/写操作中,一个64位宽的内存接口将传输32字节数据,而如果突发串长度设置为8,则将传输64字节数据。
NVIDIA nForce4 SLI(英特尔版)的突发串长度为4,并采用了1T寻址模式,而其他奔腾4核心逻辑解决方案的突发串长度则为8,并采用了2T寻址模式。例如,图4显示了当CPU向内存系统发出背对背读指令,以从内存中读取两个超高速缓冲存储器线时,这两种设计决策的总线利用率。为了简明直观,本例采用1个时钟周期的CAS时延。 |
| |
|
图 4. 总线利用效率 |
| |
图内文字:
Clock:时钟周期
Other P4 Core logic:其他奔腾4核心逻辑
Data:数据
NVIDIA nForce4 SLI
Data:数据
Read:读指令
PM= Page management command (activate / precharge / refresh):PM=页式存储器管理指令(启用/ 预加载 /刷新)
如果核心逻辑的突发串长度为8并采用2T寻址模式,则必需发出2个读指令,以从内存读取2个64字节的超高速缓冲存储器线。如图4所示,该核心逻辑可以通过2个读指令,交叉执行2个启用/ 预加载 /刷新指令。
与之相反,NVIDIA nForce4 SLI(英特尔版)的突发串长度为4,并采用了1T寻址模式。因此,NVIDIA nForce4 SLI(英特尔版)必需发出4个读指令,以读取2个64字节的超高速缓冲存储器线。然而,由于该核心逻辑采用1T寻址模式,所以它能够响应4个读指令,交叉执行4个启用/ 预加载 /刷新指令。
因此,尽管NVIDIA nForce4 SLI(英特尔版)和例中的奔腾4核心逻辑在特定时间内读取了相同的数据量,NVIDIA nForce SLI(英特尔版)还可在同一时间段内再发出2个启用/ 预加载 /刷新指令。归功于这种地址总线带宽的提高,NVIDIA nForce4 SLI(英特尔版)可以采用功能更强大、更复杂的页式存储器管理策略,来缩短内存时延,提升系统整体性能。 |
| |
NVIDIA动态自适应推测式预处理器( DASP )3.0
|
| |
现代计算机采用了内存分级结构,一方面可以弥补DRAM主存储器的缓慢速度以及甚至更慢的硬盘速度的缺陷,另一方面也可利用大多数应用的时间局部性和空间局部性运行状态。时间局部性是指在一段较短的时间内,重复使用指令和数据。空间局部性是指就近读取数据。实现空间局部性的方法是将近期最有可能需要读取的数据保存在一个靠近CPU的容量较小且速度极快的高速缓冲存储器中。当今的大多数高性能CPU都具备一个快速、小型的L1高速缓冲存储器和一个速度稍慢、容量更大的L2高速缓冲存储器。
大多数应用都显示出一定程度的时间局部性和空间局部性运行状态;然而,它们也具备分支指令和跳越指令。当处理器遇到这些指令时,高速缓冲存储器中的数据必需被转储清除,并且必需从主存储器读取新的数据。这种现象被称为高速缓存缺失。当CPU执行多任务时也可能发生高速缓存缺失。DRAM的读取时延比本地高速缓冲存储器的读取时延至少长一个数量级,因此,处理器设计师在CPU中配置了一个预取逻辑,以推测的方式读取在发生高速缓存缺失时可能需要的数据。
内存控制器将DRAM内部的存储体视作页式存储器。当启用存储体中的一行并将其中的内容传输至读出放大器时,即打开了一个页式存储器。如果在打开的页式存储器中,CPU需要的数据是保存在读出放大器中的,那么,主存储器将以合理的较快速度将适当的数据送回至CPU(但仍比本地高速缓存能达到的速度慢得多)。这个过程被称为页命中。从这个意义上讲,可将页式存储器视作L3高速缓冲存储器。如果CPU需要的数据是保存在未打开任何页式存储器的存储体中(页关闭状态下的页错失),那么必需首先打开该页式存储器,然后才能将适当的数据送回至CPU。这个过程所需时间长于页命中过程。而如果CPU请求的数据是保存在打开了与之不相符的页式存储器的存储体中(页打开状态下的页错失),则会发生最糟糕的时延状况,因为,必需首先关闭该打开的页式存储器,然后才能打开相应的页式存储器,最后再将适当的数据发送至CPU。应当指出,当CPU请求数据时,既可能出现高速缓存缺失,也可能CPU正好以推测方式预取了相应数据。具备精心设计的高速缓存和预取程序的CPU的高速缓存命中率通常在90%以上。这表示,大多数时候,CPU读取主存储器中的数据是通过预取而不是高速缓存缺失。
技术尖端的页式存储器管理技术已经出现,并被用于最大限度地减少页错失和最大限度地提高页命中率。然而,这些技术对页错失率的影响十分有限。更有效的方法是在核心逻辑使用预取程序,以推测的方式读取处理器可能需要的数据。不过,在核心逻辑实现有效的预取程序有点说来容易做起来难,这主要是因为预取逻辑是内置在现代处理器中的。从本质上讲,核心逻辑中的预取程序必需预测CPU预取程序中的预测逻辑的行为。
此外,核心逻辑预取程序设计中的另一个复杂因素是具备超线程功能的处理器的问世。现在,预取程序必需达到足够的智能化程度,以识别和追踪这两个线程,并为这两个线程从主存储器中读取数据。在双内核CPU系统中,情形变得更加复杂,因为其每个内核都能实现超线程功能。
NVIDIA最初发布的搭载动态自适应推测式预处理器(DASP)1.0的NVIDIA nForce IGP和SPP率先采用了核心逻辑预取程序。NVIDIA nForce中的DASP 1.0是专门面向AMD Athlon XP和Duron处理器而设计的,使NVIDIA nForce平台能够实现卓越的系统性能。NVIDIA nForce2 IGP和SPP搭载了DASP 2.0,这种处理器采用了更为复杂的预测算法。预测算法复杂程度的提高一方面得益于不断学习,而更重要的则应归功于CPU中的预测逻辑的改进。
NVIDIA对NVIDIA nForce4 SLI (英特尔版)中的预取程序进行了彻底改造,形成了DASP 3.0。促使发生这种变革的原因包括现代应用的运行状态、CPU预取程序设计的改进以及英特尔CPU和AMD CPU之间的预取程序设计差别。影响变革的其他因素还包括计算机架构、计算机编程、数据结构和存储架构等领域的最新研究成果。NVIDIA的架构设计师和产品设计师花费了数年的光阴,在实际平台和模拟平台上运行数以百计的应用,并潜心分析其中数百万条存取指令的执行情况。终于,他们的辛勤劳动换来了业界最尖端、最复杂的预取程序——DASP 3.0。
DASP 3.0预处理器的任务是追踪每个内核和每个线程,并预取适当的数据。每个预处理器都能够针对其分配得到的线程和内核,选择最有效的预测算法。这些预处理器也经专门设计,具备自适应能力,因此,当执行线程时,它们可以精确调节预测算法,选择不同的算法,或者创建一个由多个算法组合而成的混合算法。这些预处理器全部连接至一个中央仲裁器,由其决定所有预处理器发出的预取请求的优先顺序。该中央仲裁器还负责识别CPU、GPU和系统中的所有其他设备发出的存储器读取请求。该仲裁器实现了一种技术尖端的公平算法,以确保在合理的时间段内,所有子系统和预处理器都能够从存储器读取需要的数据。 |
| |
NVIDIA QuickSync技术 |
| |
前端总线(FSB)和内存接口是独立运行的完全同步的总线。从CPU向核心逻辑发出的内存存取请求与FSB时钟频率同步,并被称为属于FSB时钟域。实际的DRAM内存存取与内存接口时钟频率同步,并被称为属于内存时钟域。核心逻辑负责将属于FSB时钟域的CPU请求传输至内存时钟域,以及在这两个时钟域之间传输数据。
同步电路通常用于安全地在相互独立运行的时钟域之间传输数据。同步电路通常会延长信号通道的时延。延迟的长度为两个时钟域中的时钟频率和相位的函数。设计一个跨越两个以相同频率运行、但具备不同相位的时钟域的同步电路相对比较简单。因此,许多核心逻辑制造商推荐用户选择其速度与FSB速度相匹配的存储器。例如,如果CPU的FSB的运行速度为1066 MHz (时钟频率为266 MHz),那么首选存储器速度应为533 MHz (时钟频率为266 MHz)。
然而,这种方法并不能提供最佳系统性能,因为用户不能充分利用支持更高FSB速度的最先进的CPU,或者能够以更高时钟频率运行的最先进的DDR2存储设备。为了实现最佳系统性能,FSB和内存接口应当各自以尽可能最快的速度独立运行。这个要求使得同步电路的设计变得更加复杂,因为现在必需跨越两个彼此异步的时钟域。
如果用户对其系统进行超频,则又会引发另一个复杂因素。当FSB和/或内存时钟频率提高时,两个时钟周期之间的定时关系就会改变。在某些情况下,较高时钟频率会降低系统性能,因为同步电路可能跳过最近的时钟边沿,并选择其后面的一个,以便可靠地将数据传输通过时钟域(参见图5)。这样做会延长信号通道的整体时延,导致系统性能下降。 |
| |
|
图5. 同步时延 |
图内文字:
Memory clock:内存时钟周期
Default FSB clock (F1):默认FSB时钟周期(F1)
Over-clocked FSB clock (F2>F1):超频FSB时钟周期(F2>F1)
Over-clocked FSB clock (F3>F2):超频FSB时钟周期(F3>F2)
Synchronization delay:同步时延
NVIDIA nForce4 SLI(英特尔版)旨在支持FSB和内存以尽可能最快的速度运行,而不会对系统性能产生任何不利影响。该产品实现了即将获得专利的NVIDIA QuickSync™同步技术,可在最短的时间内,在FSB时钟域和内存时钟域之间传输内存请求和数据。为了实现这个目标,QuickSync技术会随着FSB总线速度和/或内存总线速度的提高,加速FSB时钟域和内存时钟域之间的内部通道。
QuickSync技术确保了NVIDIA nForce4 SLI(英特尔版)能够实现以最短的时延接收到CPU请求并将其传输至内存总线,并且不论FSB和内存速度如何,均可以最短的时延接收内存传出的数据并将之发送给CPU,从而最大限度地提升系统性能。
|
| |
结束语 |
| |
内存性能是决定系统整体性能的主要因素。要获得最佳内存性能必需进行大量的研究、架构研究、系统级模拟、存取指令执行情况分析、复杂的逻辑块设计、手动调节电路设计、手动位置和路由优化,并且采用创新编程技术等。而最重要的,必需要有坚定不移的决心,致力于实现最高平台性能,提升用户体验。
NVIDIA nForce4 SLI(英特尔版)中相当大一部分容量奉献给了内存控制器,以实现本大纲中介绍的增强性能以及其他专有技术。经年累月、辛勤不辍的设计努力,成就了这款内存控制器的设计。它是业界技术最尖端的内存控制器,也将带给令人难以置信的品类繁多的不同应用世界级的系统性能。
NVIDIA nForce媒体通信处理器(MCP)在AMD细分市场中长期占据性能领先地位。这因归功于NVIDIA关于MCP的大胆创想,NVIDIA生产高品质、高性能产品的传统,对优秀架构的坚信不移,和矢志不渝提供最佳整体用户体验的决心。NVIDIA nForce4 SLI(英特尔版)将这一卓越传统延伸到了基于英特尔技术的PC细分市场。 |
| |
注意
所有 NVIDIA® 设计规范、参考板卡、文件、图纸、诊断信息、列表和其他文档(一并或分别称为“资料”)均“按现状”提供。NVIDIA® 公司不以明示、暗示、法定或其他方式对材料的非侵权性、适销性和适用于任何特定用途做出保证,并明确否认任何此类暗示保证。
我们认为所提供的信息是准确、可靠的。然而,对于由于使用该信息所造成的后果,或者由于其使用可能导致的对第三方专利权或其他权利的任何侵犯,NVIDIA® 公司不承担任何责任。不以暗示或其他方式授予NVIDIA® 公司的任何专利或专利权的任何使用许可。本出版物中述及的规范如有更改,恕不另行通知。本出版物取代并替换以前提供的所有信息。NVIDIA® 公司未将其产品授权用于生命支持装置或系统的重要组件,除非获得NVIDIA® 公司的明确书面认可。
商标
NVIDIA、NVIDIA徽标、QuickSyn和NVIDIA nForce均为NVIDIA® 公司在美国和其他国家的商标或注册商标。其他公司和产品名称均为其各自所属公司的商标。
版权
©NVIDIA公司,版权所有,2005年。 |
|