HyperMemory

HyperMemory

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確實是一個比較成功的注重成本的技術。