專利名稱:存儲器微塊化推測性返回的制作方法
技術領域:
本發明涉及計算機系統;更具體而言,本發明涉及存儲器訪問控制。
背景技術:
對視頻存儲器的主存儲器進行訪問的圖形控制器是實現統一存 儲器架構(UMA)的計算機系統的特色。然而,UMA圖形系統的存 儲器效率可能由于CPU高速緩存線大小的需求而受到限制。例如, 用于圖形的理想存儲器訪問大小可以是4到16字節,因為圖形控制 器能夠一次對一個或幾個像素或者紋理元素(texel)進行操作。然而, 常常針對64字節的CPU高速緩存線大小來優化存儲器架構,以使得 CPU存儲器效率最優化。其結果是,平均起來,從存儲器中讀出的 相當大量的數據可能從未被圖形存儲器使用過。分立式圖形控制器的 制造商通過使用更為狹窄的存儲器通道而在取出(fetch)過程中使得 該問題最小化。然而,該解決方案不能用于基于UMA的集成圖形控 帝ll器。
將通過舉例的方式來圖示本發明,但是并不局限于附圖中的特 征,在附圖中,相同的參考標記表示類似的元件,并且在附圖中 圖1是計算機系統的一個實施例的框圖; 圖2示出了存儲器控制器的一個實施例; 圖3示出了邏輯虛擬地址的一個實施例; 圖4示出了存儲器控制器的另一個實施例; 圖5A和5B示出了性能上的改善;以及 圖6是計算機系統的另一個實施例的框圖。
具體實施例方式
要描述的是對于存儲器事務(transaction)的推測性返回 (speculative return)。在以下對于本發明的詳細描述中,闡述了多個 具體細節,以便提供對本發明的透徹理解。然而,本領域技術人員要 理解的是,沒有這些具體細節,本發明也是可以實現的。在其他實例 中,以框圖的形式示出了已知的結構和裝置,而不是給出細節,以便 避免本發明變得不清楚。
在說明書中提到的"一個實施例"或者"實施例"意思是結合該 實施例所描述的特定特征、結構、或者特點包含在本發明的至少一個 實施例中。說明書中各個地方出現的短語"在一個實施例中"并非都 一定指的是同一實施例。
圖1是計算機系統100的一個實施例的框圖。計算機系統100包 括中央處理單元(CPU) 102,其耦合到接口 105。在一個實施例中, CPU 102是來自加利福尼亞Santa Clara的Intel公司的Pentium 系列 的處理器,Pentium IV處理器。可替換地,也可以使用其他CPU。 例如,可以使用多個處理內核來實現CPU102。在另一個實施例中, 計算機系統100可以包括多個CPU 102。
在另一個實施例中,芯片組107也耦合到接口 105。芯片組107 包括存儲器控制組件110。存儲器控制組件110可以包括耦合到系統 主存儲器115的存儲器控制器112。系統主存儲器115存儲數據和由 CPU 102或者系統100中包含的任何其他器件所執行的指令序列。在 一個實施例中,系統主存儲器115包括動態隨機存取存儲器 (DRAM);然而,系統主存儲器115可以使用其他存儲器類型來實 現。還可以將其他器件耦合到接口 105,例如多個CPU和/或多個系 統存儲器。
存儲器控制組件110可以通過接口耦合到輸入/輸出(I/O)控制 組件140。 I/O控制組件140提供通往計算機系統100中的I/O器件 的接口 。1/0控制組件140可以支持I/O總線(例如外設部件互連(PCI) Express、加速圖形端口 (AGP)、通用串行總線(USB)、少針腳型接
口 (lowpincount, LPC)總線、或者其他類型的I/0總線(未示出)) 上的標準I/0操作。
根據一個實施例,圖形控制器160與芯片組107進行通信,并且 圖形控制器160被實現為提供視頻圖形至耦合到計算機系統100的顯 示器(未示出)。圖形控制器160訪問用于視頻存儲器的主存儲器115。 如上所述,支持圖形系統和CPU的存儲器器件的存儲器效率受到限 制,因為用于圖形的存儲器訪問大小經常理想地為4到16字節,而 存儲器架構是針對64字節的CPU線大小進行優化以使CPU效率最 優化的。
根據一個實施例,存儲器控制組件110降低了圖形器件的存儲器 請求大小,同時保持了 64字節的存儲器事務。標準存儲器通道,例 如基于DDRDRAM技術的存儲器通道,具有某種m比特的物理寬度。 存儲器事務由T次傳送(transfer)組成,其總邏輯寬度為M=m*T/8 個字節。在每次事務中的字節被認為是具有連續的地址。在隨后的討 論中,術語寬度表示邏輯寬度。
微塊化(micro-tiling)將M字節寬度的通道劃分為S個子通道, 每個子通道寬度為N-M/S字節,其中,在每個子通道上傳送N字節 的數據。為每個子通道提供地址,其中,某一數量(0的獨立地址 比特可能不同于給予其他子通道的地址中的對應比特。在每個子通道 上傳送的數據被認為是表示毗鄰的地址范圍。然而,在每個子通道上 的數據塊并非一定來自于毗鄰的地址范圍。每個子通道包括通道的總 存儲單元的子集。
圖2示出了支持微塊化(micro-tiling)的存儲器控制組件110的 一個實施例。在一個實施例中,多通道存儲器子系統每個通道具有一 個微塊化存儲器控制器。因此,如圖2所示,存儲器控制組件110包 括兩個存儲器控制器112 (存儲器控制器1和2),分別用于這兩個通 道的每一個。每個通道包括S個子通道,每個子通道寬度為N字節。 于是,每個通道寬度為]VNNfS字節。
在該圖中,對存儲器讀出或寫入的請求被示為2X2的正方形陣 列,其可以表示像素或者紋理元素的2X2陣列。對于在分配給子通道之前的請求進行了圖示。在子通道分配之后,將請求編號為0—S-1, 以指示子通道分配。對于耦合到存儲器控制組件110的請求者205的 N字節返回是在讀出事務的情況下發生的。
存儲器控制組件110包括通道分配邏輯210,其耦合到存儲器控 制器112。通道分配210經由存儲器控制器112將從請求者205接收 的每個請求分配至存儲器通道240。更進一步地,每個存儲器控制器 112包括子通道分配215、重排序緩沖器220和事務匯集器(assembler) 230。因此,如圖2所示,將請求分配給存儲器控制器1或者存儲器 控制器2。
子通道分配215將每個請求分配給在存儲器通道240中的子通 道。重排序緩沖器220收集請求,以使得事務匯集器230嘗試匯集對 于每個存儲器240的子通道的存儲器訪問。根據一個實施例,每個子 通道具有相等的N字節寬度。
在圖2所示的系統的操作期間,將進入到存儲器控制器(1或2) 的請求分配給子通道并且將其放置在重排序緩沖器220中,該請求是 地址A處的對于N字節數據塊進行讀出或者寫入的請求。在一個實 施例中,采用以下處理定義同一性子通道分配(Identity Subchannel Assignment) s:將該請求地址A向右偏移P^log2(N)個比特,得到新 的整數值A (例如,A=A P);并且s是A的Q二log2(S)個最低有效 比特(例如,s=A&((l Q)-l))。
存儲器控制器通過從重排序緩沖器220選擇S個讀出請求(分別 用于每個子通道)來形成存儲器讀出事務。存儲器控制器通過從重排 序緩沖器220選擇S個寫入請求(分別用于每個子通道)來形成存儲 器寫入事務。由共享地址線所表示的地址部分與在該事務中所有的子 通道請求相同。
圖3示出了對物理地址中的地址比特的解釋的一個實施例。圖3 中所示的對于共享和獨立地址比特的選擇以及子通道選擇比特是為 了圖示說明目的,因為可以隨意地將在P個子通道數據地址比特之上 的地址比特劃分為共享和獨立的地址比特以及子通道選擇比特。獨立 地址比特在子通道之間是不同的,并且未必是毗鄰的。發送到子通道 的地址比特是該子通道的共享地址比特和獨立地址比特。
圖4示出了存儲器控制組件110的一個實施例,其從4個16字 節的請求匯集成64字節的事務,圖中僅示出了單個通道。圖4所示 出的重排序緩沖器220被實現為用于每個子通道的重排序隊列。然 而,在其他實施例中,重排序緩沖器220可以通過其他機制實現。
在該實施例中,事務匯集器230從16B的請求(分別用于每個 子通道)構建64B的存儲器請求。形成該存儲器請求的所有16B請 求都具有相同的共享地址比特。因此,匯集器230查詢該隊列,根據 請求是否具有共同的共享地址來找到能夠被匯集到單個事務中的請 求。
注意,在圖4所示的實施例中,匯集器230不能找到用于子通道 lc的請求。當嘗試形成事務時,存儲器控制器可能不能為每個子通 道找到請求以使得所有子通道都具有相同的共享地址段(例如,使得 每個共享地址比特的值在所有請求之間都相同)。發生這種事件的子 通道可以稱為是"空"子通道。
根據一個實施例,如果子通道不能用在相應隊列中的請求進行填 充,則結果是不執行去往/來自該子通道的傳送。在這種實施例中, 如果子通道不能用請求進行填充,則讀出任意存儲單元并且將結果拋 棄。在替換實施例中,每個子通道包括附加控制線,其用于在不存在 對于該通道的相應請求時,減小(powerdown)子通道的功率。
在另一實施例中,執行推測性讀出并將其返回到請求者,而不是 拋棄所取得的數據。推測性返回涉及在其他未使用的(otherwise unused)子通道上讀出N字節的數據塊,并且像對任何其他讀出請求 那樣,將該數據返回到某個請求者。因此,存儲器控制器可以選擇在 其他"空"(otherwise "empty")子通道上讀出具有與在同一存儲器 事務中在其他子通道上被訪問的數據相同的共享地址比特的任意對 齊的(any aligned) N比特數據塊,并且使得該數據可由某個請求者 使用。
根據一個實施例,通過為與該"空"子通道相關聯的獨立地址線 分配相鄰子通道的獨立地址比特,來在事務匯集器230上實現推測性
返回,其結果是返回2個N字節數據塊,其具有相同的共享和獨立 地址比特。盡管以上所述的是復制獨立地址線,其他實施例也可以實 施其他機制來選擇被推測性返回的數據塊。
作為一個實例參考圖4,不能找到用于子通道lc的請求。因此 子通道lc是"空"子通道。在所公開的實施例中,事務匯集器230 將子通道ld的獨立地址比特分配給子通道lc,并且將子通道lc的數 據返回給與子通道ld相關聯的請求者。因此,推測性返回通過執行 推測性子通道讀出并將結果返回至請求者,提高了有效存儲器利用。 如果請求者稍后需要該數據,則其可以已經/仍然被保持在例如高速 緩存中。
微塊化存儲器子通道能夠訪問在由共享地址比特和I個獨立地址 比特所確定的某個地址范圍之內的不毗鄰的存儲器地址。因此,與將 I個地址信號復制到每個子通道的成本進行權衡,對于I的明智選擇 能夠提供獨立子通道的增強的并行性和帶寬效率。
圖5A和5B示出了微塊化的性能改善。每個圖示出了在分塊地 址空間(tiled address space)中的三角形的光柵化(rasterization),每 個小正方形表示4字節像素或者紋理元素。圖5A示出了當每個請求 是64字節時,在標準存儲器系統中的過讀取(overfetch)。每個4X4 像素塊表示64字節的對齊的存儲器塊。該三角形包圍了 57個像素。 采用標準存儲器子系統,這57個像素在11個(64字節)存儲器塊 中。因此,為了訪問這57個像素,需要訪問可能不被使用的額外的 119個像素的代價數據(worth of data)(例如,得到32%的效率)。
圖5B示出了在每個請求是16字節并且所有這些請求都可以由 微塊化匯集器用來構建不帶有未使用的子通道的64字節存儲器事務 的情況下的過讀取。在該情況下,三角形接觸23個2X2像素陣列, 結果是訪問35個額外的代價數據(例如,得到62%的效率)。微塊 化的有效性取決于匯集器構建完全填充的存儲器事務的能力。
圖6示出了計算機系統100的另一實施例。在該實施例中,與獨 立的存儲器控制組件和I/O控制組件不同,芯片組107包括單個控制 集線器(control hub) 620。從而,存儲器控制器112被包含在CPU 102
中,存儲器115耦合到CPU 102。在這樣的實施例中,圖形控制器160 耦合到控制集線器620,并且經由CPU 102訪問主存儲器115。
然而,在閱讀了以上描述之后,本發明的很多替換和修改對于本 領域技術人員而言毫無疑問地變得顯而易見,要理解的是,通過圖示 說明所示出和描述的任何特定實施例并非意欲被認為是限制性的。因 此,對于各種實施例的細節的參考并非意欲限制權利要求的范圍,在 權利要求中僅僅闡述了被認為是對本發明而言是必要的那些特征。
權利要求
1、一種存儲器控制器,包括分配邏輯,其接收訪問存儲器通道的請求,并且分配所述請求以訪問在所述通道之中的兩個或更多子通道之一;以及事務匯集器,其將所述請求與一個或多個附加請求進行組合,以訪問在所述通道之中的所述兩個或更多子通道,并且便于從無可用子通道請求的子通道推測性返回數據。
2、 如權利要求1所述的存儲器控制器,其中,每個所述子通道 請求包含獨立地址部分和共享地址部分。
3、 如權利要求2所述的存儲器控制器,其中,子通道請求的所 述獨立地址部分與子通道相關聯。
4、 如權利要求3所述的存儲器控制器,其中,所述事務匯集器 通過選擇將要與所述的無可用請求的子通道相關聯的獨立地址部分, 來便于從所述的無可用請求的子通道推測性返回數據。
5、 如權利要求4所述的存儲器控制器,其中,從所述的無可用請求的子通道中所推測性讀取的數據被返回至請求者。
6、 如權利要求1所述的存儲器控制器,還包括重排序緩沖器,其存儲所述請求。
7、 如權利要求6所述的存儲器控制器,其中,所述重排序緩沖器包括與所述兩個或更多子通道中每一個相關聯的隊列。
8、 如權利要求7所述的存儲器控制器,其中,每個隊列存儲要 傳送至相關聯的子通道的請求。
9、 一種方法,包括在存儲器控制器處,接收訪問耦合至所述存儲器控制器的存儲器 通道的請求;將每個所述請求分配給相關聯的、所述存儲器通道之中的、可獨 立尋址的子通道;將所述請求與一個或多個附加請求進行組合,以訪問在所述通道 之中的兩個或更多的可獨立尋址的子通道;以及從子通道推測性地返回數據,對于該子通道而言請求不可用。
10、 如權利要求9所述的方法,其中,從無可用請求的子通道推 測性地返回數據的過程包括選擇將要與所述的無可用請求的子通道 相關聯的獨立地址部分。
11、 如權利要求9所述的方法,還包括在將每個所述請求分配 給子通道之后,將所述請求存儲在重排序緩沖器中。
12、 如權利要求9所述的方法,還包括在匯集了所述請求之后, 將所述請求轉發至所述相關聯的子通道。
13、 如權利要求10所述的方法,還包括將從所述的無可用請 求的子通道中所推測性返回的數據返回至請求者。
14、 一種系統,包括存儲器器件,其具有一個或多個通道;以及芯片組,其耦合至所述存儲器器件,具有存儲器控制器,用于接 收訪問一個或多個存儲器通道中的一個的請求,分配所述請求以訪問 在所述通道之中的兩個或更多可獨立尋址的子通道中的一個,將所述 請求與一個或多個附加請求進行組合,以訪問在所述通道之中的所述 兩個或更多可獨立尋址的子通道,并且便于從無可用請求的子通道推測性返回數據。
15、 如權利要求14所述的系統,其中包括 分配邏輯,用于分配所述請求以訪問所述子通道;以及事務匯集器,用于組合所述請求,并且便于所述的數據的推測性 返回。
16、 如權利要求15所述的系統,其中,所述存儲器控制器還包 括重排序緩沖器,用于存儲所述子通道請求。
17、 如權利要求16所述的系統,其中,所述重排序緩沖器包括 與所述兩個或更多子通道中每一個相關聯的隊列。
18、 如權利要求16所述的系統,其中,所述事務匯集器通過選 擇將要與所述的無可用請求的子通道相關聯的獨立地址部分,來便于 從所述的無可用請求的子通道推測性返回數據。
19、 如權利要求14所述的系統,還包括耦合至所述存儲器器件 和所述存儲器控制器的請求者,其中,從所述的無可用請求的子通道 中所推測性讀取的數據被返回至所述請求者。
20、 如權利要求14所述的系統,其中,所述芯片組包括第二存 儲器控制器,用于接收訪問一個或多個存儲器通道中的一個的請求, 分配所述請求以訪問在所述通道之中的兩個或更多可獨立尋址的子 通道中的一個。
全文摘要
根據一個實施例,公開了一種存儲器控制器。該存儲器控制器包括分配邏輯和事務匯集器。該分配邏輯接收訪問存儲器通道的請求,并且分配所述請求以訪問在所述通道之中的兩個或更多的可獨立尋址的子通道中的一個。該事務匯集器將所述請求與一個或多個附加請求進行組合,以訪問在所述通道之中的所述兩個或更多的可獨立尋址的子通道,并且便于從無可用子通道請求的子通道推測性返回數據。
文檔編號G06F13/16GK101208672SQ200680020377
公開日2008年6月25日 申請日期2006年6月23日 優先權日2005年6月23日
發明者J·秋山, W·克利福德 申請人:英特爾公司