HyperMemory
ATI提出的解决本地显存容量与显卡成本之间矛盾的解决方案
HyperMemory是ATI提出的解决本地显存容量与显卡成本之间矛盾的一种解决方案,最先出现在其RS480芯片组中,随后推出的低成本版X300 HyperMemory中也有其身影。HyperMemory技术的主要特点在于允许核心通过System Bus Interface利用PCI-Express总线庞大的带宽直接访问系统内存。
综述
HyperMemory技术在需要时将数据置于系统内存中进行操作,并通过新添加的Memory Controller对本地显存和系统内存的访问与操作进行协调管理,使核心能更加合理、充分地利用本地显存和系统内存的资源,达到最终扩展总显存数量的目的。根据ATI的资料,以支持HyperMemory技术的低成本版X300为例,其275MHz的64bit本地显存与64bit双通道DDR400 的系统内存合并组成的综合显示存储系统,可为核心提供12.8G/s的带宽。
在HyperMemory出现之前,由于PCI-Express总线没有很明显的类似AGP DIME的设计,PCI-Express接口的显卡无法直接地对内存进行利用,所以往往需要通过搭配更大的本地显存来满足图形应用中对存储空间的需求。这大大增加了PCI-Express接口显卡的制造成本,同时,大容量本地显存的解决方案也并非适用于所有用户,中低端及入门级用户需要更低成本的解决方案。这种情况使得厂商很难在利润控制、性能与市场三者之间取得良好的平衡。HyperMemory技术出现后,ATI可通过它来大幅削减其PCI- Express接口显卡的本地显存容量以达到控制成本的目的,同时可通过对系统内存的调用来解决存储空间和存储性能的需求问题。
主要特点
HyperMemory的第一个显著特点是对内存总线的直接完全占用。通过System Bus Interface,HyperMemory可和AGP DIME一样实现对内存总线的无延迟占用,这样可保证数据传输过程不会受到延迟期的干扰。同时,由于独占内存总线,HyperMemory可最大限度利用内存带宽进行数据传输;HyperMemory仅在需要时才占用内存总线,在它不占用内存总线时,用户不必担心系统内存的可用容量和带宽会受到影响。 HyperMemory的另一个特点在于其本地显存仅用来存储前段和后段缓冲区以及一定量的Z-Buffer,所有的纹理信息和材质的存储几乎全部使用系统内存来完成。这与当年Intel i740的存储工作方式几乎一模一样,显存部分的主要作用在于2D应用与基本缓冲,而各种主要的3D信息则依靠核心调用系统内存来进行缓冲操作,双方很少产生干扰,基本不会发生交错等待的现象。这种分置设计还可为现有的RAMDAC工作提供合理的环境,避免发生显存调用不当导致的RAMDAC无法动作。另外,HyperMemory将主要的缓冲场所设在内存中也有利于核心获得更大的可用操作空间。现在和未来的各种3D场景将涉及到越来越多的纹理、 Shader Program、Render-Target、Z/stencil等,比如运算即时光影效果时就需对大量的Z/stencil或作参考用的多个Multi Render-Target结果进行操作。此外,每个顶点及像素上的重量、颜色、法线、纹理坐标、雾和点的大小等都会占用大量的空间。未来,某个绘图过程占用128MB的缓冲也许是很平常的事。通过HyperMemory技术的应用,核心在完成这些过程时将不必受空间因素的影响。同时,在所调用内存空间的分布方面,HyperMemory采用事先扫描内存并寻找合适空间的方式,这样做能最大限度保证内存空间的利用率,很有“见缝插针”的味道。一言以蔽之, HyperMemory的特点在于“分立”和“自由”。
尽管HyperMemory技术具有很多独到的特点,但其所具有的缺点及负面影响也很明显。
首先,HyperMemory独占内存总线时整个系统的其他部分都无法对内存进行动作,这造成了非显示部分尤其是CPU的等待延迟,而且这种周期延迟会随着HyperMemory对内存操作复杂程度的提升而增加。由于ATI目前的核心所支持的数据请求包大小仅为32byte,过小的请求包不仅影响数据传输的有效带宽,导致HyperMemory无法充分利用PCI-Express总线庞大的数据传输能力,而且过小的不够详尽的请求描述通常意味着单次数据传输量和回应精确度的下降及传输次数的上升。HyperMemory所传输的数据越多,系统浪费的周期也就越多。这不仅直接影响了CPU运算能力的发挥,而且可能导致所有由CPU来进行的中断分配、总线控制命令等工作的延迟,从而使整个系统的工作出现一定的混乱。
其次,由于本地显存和内存存储不同类别数据的设计,一般情况下本地显存中不会为需要进入内存中的数据开辟专门的映射区域,这导致 HyperMemory在对系统内存进行操作时会受到物理内存定址上的限制。没有映射表或指针,要进入内存进行保存的帧缓存就不得不先拷贝进显存中然后再进入内存,这不仅带来了比独立映射区大得多的空间浪费,而且多余的拷贝过程还会影响整体的存储操作效率,最终甚至影响整个渲染过程的速度。
最后,由于ATI目前的核心缺乏对直接内存写入的支持,HyperMemory在实际渲染过程中无法对内存进行写帧缓存和写渲染操作,而 HyperMemory的设计恰恰决定了几乎所有渲染过程都必须在内存中进行,所有渲染步骤必须先经由CPU或北桥来写入内存才能开始,这不仅使得PCI -Express巨大的下行带宽毫无用武之地,而且还导致了渲染过程的周期延迟以及核心、CPU和北桥三者之间正常工作的相互干扰。核心需要进行内存渲染操作时不巧CPU在进行运算,北桥在进行数据交换,大家都很忙,怎么协调工作……工位的安排会再一次导致新延迟的出现,影响渲染过程的进行。最终,核心良好的构架受制于这些因素有可能无法将运算能力完整地发挥出来。
尽管存在上述缺陷,但HyperMemory仍然不失为一个十分优秀的显示数据存储解决方案。它在强调成本的前提下最大限度地保留并发挥了核心的性能,同时又不会对用户的系统内存容量提出很高的要求。从这个角度讲,HyperMemory确实是一个比较成功的注重成本的技术。
参考资料
最新修订时间:2022-07-21 16:04
目录
概述
综述
参考资料