專利名稱::存儲器微塊化請求重排序的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及計算機(jī)系統(tǒng);更具體而言,本發(fā)明涉及存儲器訪問控制。
背景技術(shù):
:對視頻存儲器的主存儲器進(jìn)行訪問的圖形控制器是實現(xiàn)統(tǒng)一存儲器架構(gòu)(UMA)的計算機(jī)系統(tǒng)的特色。然而,UMA圖形系統(tǒng)的存儲器效率可能由于CPU高速緩存線大小的需求而受到限制。例如,用于圖形的理想存儲器訪問大小可以是4到16字節(jié),因為圖形控制器能夠一次對一個或幾個像素或者紋理元素(texel)進(jìn)行操作。然而,常常針對64字節(jié)的CPU高速緩存線大小來優(yōu)化存儲器架構(gòu),以使得CPU存儲器效率最優(yōu)化。其結(jié)果是,平均起來,從存儲器中讀出的相當(dāng)大量的數(shù)據(jù)可能從未被圖形存儲器使用過。分立式圖形控制器的制造商通過使用更為狹窄的存儲器通道而在取出(fetch)過程中使得該問題最小化。然而,該解決方案不能用于基于UMA的集成圖形控制器。將通過舉例的方式來圖示本發(fā)明,但是并不局限于附圖中的特征,在附圖中,相同的參考標(biāo)記表示類似的元件,并且在附圖中圖1是計算機(jī)系統(tǒng)的一個實施例的框圖;圖2示出了存儲器控制器的一個實施例;圖3示出了邏輯虛擬地址的一個實施例;圖4示出了存儲器控制器的另一個實施例;圖5示出了存儲器控制器的再一個實施例;圖6示出了重排序表(reordertable)的一個實例;圖7示出了環(huán)形緩沖器條目及邏輯;圖8示出了重排序表的另一個實例;圖9示出了比較與選擇邏輯的一個實施例;圖IOA和IOB示出了性能上的改善;以及圖11是計算機(jī)系統(tǒng)的另一個實施例的框圖。具體實施例方式描述了一種存儲器請求重排序架構(gòu)。在以下對本發(fā)明的詳細(xì)描述中,闡述了多個具體細(xì)節(jié),以便提供對本發(fā)明的透徹理解。然而,本領(lǐng)域技術(shù)人員要理解的是,沒有這些具體細(xì)節(jié),本發(fā)明也是可以實現(xiàn)的。在其他實例中,以框圖的形式示出了已知的結(jié)構(gòu)和裝置,而不是給出細(xì)節(jié),以便避免本發(fā)明變得不清楚。在說明書中提到的“一個實施例”或者“實施例”意思是結(jié)合該實施例所描述的特定特征、結(jié)構(gòu)、或者特點(diǎn)包含在本發(fā)明的至少一個實施例中。說明書中各個地方出現(xiàn)的短語“在一個實施例中”并非都一定指的是同一實施例。圖1是計算機(jī)系統(tǒng)100的一個實施例的框圖。計算機(jī)系統(tǒng)100包括中央處理單元(CPU)102,其耦合到接口105。在一個實施例中,CPU102是來自加利福尼亞SantaClara的Intel公司的Pentium系列的處理器,PentiumIV處理器??商鎿Q地,也可以使用其他CPU。例如,可以使用多個處理內(nèi)核來實現(xiàn)CPU102。在另一個實施例中,計算機(jī)系統(tǒng)100可以包括多個CPU102。在另一個實施例中,芯片組107也耦合到接口105。芯片組107包括存儲器控制組件110。存儲器控制組件110可以包括耦合到系統(tǒng)主存儲器115的存儲器控制器112。系統(tǒng)主存儲器115存儲數(shù)據(jù)和由CPU102或者系統(tǒng)100中包含的任何其他器件所執(zhí)行的指令序列。在一個實施例中,系統(tǒng)主存儲器115包括動態(tài)隨機(jī)存取存儲器(DRAM);然而,系統(tǒng)主存儲器115可以使用其他存儲器類型來實現(xiàn)。還可以將其他器件耦合到接口105,例如多個CPU和/或多個系統(tǒng)存儲器。存儲器控制組件110可以通過接口耦合到輸入/輸出(I/O)控制組件140。I/O控制組件140提供通往計算機(jī)系統(tǒng)100中的I/O器件的接口。I/O控制組件140可以支持I/0總線(例如外設(shè)部件互連(PCI)、加速圖形端口(AGP)、通用串行總線(USB)、少針腳型接口(lowpincount,LPC)總線、或者其他類型的I/O總線(未示出))上的標(biāo)準(zhǔn)I/O操作。根據(jù)一個實施例,圖形控制器160與芯片組107進(jìn)行通信,并且圖形控制器160被實現(xiàn)為提供視頻圖形至耦合到計算機(jī)系統(tǒng)100的顯示器(未示出)。圖形控制器160訪問用于視頻存儲器的主存儲器115。如上所述,支持圖形系統(tǒng)和CPU的存儲器器件的存儲器效率受到限制,因為用于圖形的存儲器訪問大小經(jīng)常理想地為4到16字節(jié),而存儲器架構(gòu)是針對64字節(jié)的CPU線大小進(jìn)行優(yōu)化以使CPU效率最優(yōu)化的。根據(jù)一個實施例,存儲器控制組件110特征降低了圖形器件的存儲器請求大小,同時保持了64字節(jié)的存儲器事務(wù)。標(biāo)準(zhǔn)存儲器通道,例如基于DDRDRAM技術(shù)的存儲器通道,具有某種m比特的物理寬度。存儲器事務(wù)由T次傳送(transfer)組成,其總邏輯寬度為M=m*T/8個字節(jié)。在每次事務(wù)中的字節(jié)被認(rèn)為是具有連續(xù)的地址。在隨后的討論中,術(shù)語寬度表示邏輯寬度。微塊化(micro-tiling)將M字節(jié)寬度的通道劃分為S個子通道,每個子通道寬度為N=M/S字節(jié),其中,在每個子通道上傳送N字節(jié)的數(shù)據(jù)。為每個子通道提供地址,其中,某一數(shù)量(I)的獨(dú)立地址比特可能不同于給予其他子通道的地址中的對應(yīng)比特。在每個子通道上傳送的數(shù)據(jù)被認(rèn)為是表示毗鄰的地址范圍。然而,在每個子通道上的數(shù)據(jù)塊并非一定來自于毗鄰的地址范圍。每個子通道包括通道的總存儲單元的子集。圖2示出了存儲器控制組件110的一個實施例。在一個實施例中,多通道存儲器子系統(tǒng)每個通道具有一個微塊化存儲器控制器。因此,如圖2所示,存儲器控制組件110包括兩個存儲器控制器112(存儲器控制器1和2),分別用于這兩個通道的每一個。每個通道包括S個子通道,每個子通道寬度為N字節(jié)。于是,每個通道寬度為M=N*S字節(jié)。在該圖中,對存儲器讀出或?qū)懭氲恼埱蟊皇緸?X2的正方形陣列,其可以表示像素或者紋理元素的2X2陣列。對于在分配給子通道之前的請求進(jìn)行了圖示。在子通道分配之后,將請求編號為O-(S-I),以指示子通道分配。對于耦合到存儲器控制組件110的請求者205的N字節(jié)返回是在讀出事務(wù)的情況下發(fā)生的。存儲器控制組件110包括通道分配邏輯210,其耦合到存儲器控制器112。通道分配210經(jīng)由存儲器控制器112將從請求者205接收的每個請求分配至存儲器通道240。更進(jìn)一步地,每個存儲器控制器112包括子通道分配215、重排序緩沖器220和事務(wù)匯集器(assembler)230。因此,如圖2所示,將請求分配給存儲器控制器1或者存儲器控制器2。子通道分配215將每個請求分配給在存儲器通道240中的子通道。重排序緩沖器220收集請求,以使得事務(wù)匯集器230嘗試匯集對于每個存儲器240的子通道的存儲器訪問。根據(jù)一個實施例,每個子通道具有相等的N字節(jié)寬度。在圖2所示的系統(tǒng)的操作期間,可以將進(jìn)入到存儲器控制器(1或2)的請求分配給子通道并且可以將其放置在重排序緩沖器220中,該請求是地址A處的對于N字節(jié)數(shù)據(jù)塊進(jìn)行讀出或者寫入的請求。在一個實施例中,采用以下處理定義同一性子通道分配(IdentitySubchannelAssignment)s將該請求地址A向右偏移P=Iog2(N)個比特,得到新的整數(shù)值A(chǔ)(例如,A二AP);并且s是A的Q=(S)個最低有效比特(例如,s=A&((1Q)-1))0存儲器控制器通過從重排序緩沖器220選擇S個讀出請求(分別用于每個子通道)來形成存儲器讀出事務(wù)。存儲器控制器通過從重排序緩沖器220選擇S個寫入請求(分別用于每個子通道)來形成存儲器寫入事務(wù)。由共享地址線所表示的地址部分與在該事務(wù)中所有的子通道請求相同。圖3示出了對物理地址中的地址比特的解釋的一個實施例。圖3中所示的對于共享和獨(dú)立地址比特的選擇以及子通道選擇比特是為了圖示說明目的,因為可以隨意地將在P個子通道數(shù)據(jù)地址比特之上的地址比特劃分為共享和獨(dú)立的地址比特以及子通道選擇比特。獨(dú)立地址比特在子通道之間是不同的,并且未必是毗鄰的。發(fā)送到子通道的地址比特是該子通道的共享地址比特和獨(dú)立地址比特。圖4示出了存儲器控制組件110的一個實施例,其從4個16字節(jié)的請求匯集成64字節(jié)的事務(wù),圖中僅示出了單個通道。圖4所示出的重排序緩沖器220被實現(xiàn)為用于每個子通道的重排序隊列。然而,在其他實施例中,重排序緩沖器220可以通過其他機(jī)制實現(xiàn)。在該實施例中,事務(wù)匯集器230從16B的請求(分別用于每個子通道)構(gòu)建64B的存儲器請求。形成該存儲器請求的所有16B請求都具有相同的共享地址比特。因此,匯集器230查詢該隊列,根據(jù)請求是否具有共同的共享地址來找到能夠被匯集到單個事務(wù)中的請求。注意,在圖4所示的實施例中,匯集器230不能找到用于子通道Ic的請求。當(dāng)嘗試形成事務(wù)時,存儲器控制器可能不能為每個子通道找到請求以使得所有子通道都具有相同的共享地址段(例如,使得每個共享地址比特的值在所有請求之間都相同)。如果子通道不能用在相應(yīng)隊列中的請求進(jìn)行填充,則結(jié)果是不執(zhí)行去往/來自該子通道的傳送。在一個實施例中,如果子通道不能用請求進(jìn)行填充,則可以讀出任意存儲單元并且將結(jié)果拋棄。在替換實施例中,每個子通道可以包括附加控制線,其用于在不存在對于該通道的相應(yīng)請求時,減小(powerdown)子通道的功率。在上述實施例中,事務(wù)匯集器230通過從每個重排序序列中選擇子通道請求,來匯集通道請求。然而,在替換實施例中,可以實施重排序表來存儲子通道請求,而不是每個子通道有獨(dú)立的相關(guān)聯(lián)的重排序序列。圖5示出了存儲器控制組件110的實施例,其具有通過重排序表520的請求流(aflowofrequests)0在該實施例中,所示出的請求可以包含共享地址部分和獨(dú)立地址部分。在圖5中以圖案示出了共享地址部分,以表示不同或者相同的值。請求的獨(dú)立地址部分在分配子通道之前可以是空白的。在一個實施例中,上述的Im2(N)個子通道數(shù)據(jù)地址比特在該級別上與存儲器事務(wù)不相關(guān),因此沒有將其示出。類似地,所傳送的實際數(shù)據(jù)也未示出。重排序表520的每個表元素都具有共享地址部分和S個獨(dú)立地址部分,S個獨(dú)立地址部分分別對應(yīng)每個子通道。如圖5中所示,表元素是空白的,以指示還未分配共享地址值。每個獨(dú)立地址部分也可以是空白的,直到分配了獨(dú)立地址值為止。在子通道分配之后,在圖5中,可以標(biāo)記請求的獨(dú)立地址部分,以指示要將該獨(dú)立地址部分分配給其的子通道(例如,Ia用于子通道la,lb用于子通道lb,等等)。然后,可以將共享地址值與存儲在每個表條目(tableentry)中的共享地址值進(jìn)行比較。如果存在匹配且在該表條目中的相應(yīng)的子通道地址部分是可用的,就可以將該獨(dú)立地址值放置在該子通道地址部分中。如果該子通道地址部分已經(jīng)包含值,則繼續(xù)搜索具有相匹配的共享地址值的表條目。如果未搜索到,則將該請求的共享的和獨(dú)立的地址值放置在一個空表條目中。圖5示出了具體實例,其中,有S=4個子通道,并且其中最大表深度D=8。S和D均可采用任何值,為重排序表520創(chuàng)建了大數(shù)可能配置。為了發(fā)出事務(wù),可以選擇表條目,并將其轉(zhuǎn)發(fā)到事務(wù)匯集器230,然后將其作為空表條目返回至重排序表520以便將來使用。根據(jù)一個實施例,匯集器從在一個重排序表520行上的16字節(jié)請求構(gòu)建64字節(jié)的存儲器請求,并且所有的子跨度(SUbspan)都具有相同的共享地址比特。此外,如果在所選擇的表條目中的子通道部分是空的,則事務(wù)匯集器230能夠推測性地插入用于存儲器讀出的子跨度請求。圖6示出了實現(xiàn)該機(jī)制的重排序表520的一個實施例。重排序表520包括被稱為環(huán)形緩沖器條目及邏輯(ringbufferentryandlogic)620的比較邏輯單元的一個環(huán)。圖7示出了環(huán)形緩沖器條目及邏輯620的一個實施例。返回參考圖6,表條目可以表示為能夠為每個子通道存儲單個共享地址值和獨(dú)立地址值的寄存器。表條目可以實現(xiàn)為一系列寄存器,并且具有用于指示當(dāng)前存儲的值是否有效的有效位。通過選擇表條目并將其發(fā)送至事務(wù)匯集器230,來生成輸出請求。然后,將相應(yīng)的表條目部分標(biāo)記為無效。根據(jù)一個實施例,每個表條目可以耦合至邏輯單元620。此外,每個輸入的請求在被表條目選擇邏輯630所選擇時,可以被插入到該環(huán)中與下一個表條目相關(guān)聯(lián)的邏輯單元620處,以將其傳遞至事務(wù)匯集器230。輸入的請求包含共享地址值、獨(dú)立地址值以及子通道分配,可以按照如下將該輸入的請求與相關(guān)聯(lián)的表條目進(jìn)行比較。首先,如果在該表條目中的共享地址值是無效的,則可以將在該請求中的共享地址值復(fù)制至該表條目中,可以將在該請求中的獨(dú)立地址值復(fù)制至在該表條目中的相應(yīng)子通道地址部分中。該表條目中的兩個元素都標(biāo)記為有效。然后,拋棄該請求。然而,如果在該請求和表條目中的共享地址值相等,并且在該表條目中的所分配的子通道的獨(dú)立地址值是無效的,則可以將在該請求中的獨(dú)立地址值寫入至該表條目中并將其標(biāo)記為有效。然后,拋棄該請求。否則,則將該請求傳送至下一個相繼的環(huán)形緩沖器元素,并且重復(fù)該過程。根據(jù)一個實施例,如果對于所有的環(huán)形緩沖器條目的比較都失敗,則該輸入請求可以被阻塞(stalled),直到可以生成輸出請求并因此釋放環(huán)形緩沖器條目為止。圖8示出了實現(xiàn)該機(jī)制的重排序表520的另一個實施例。重排序表520包括被稱為比較與選擇邏輯820的比較器邏輯單元的環(huán)。圖9示出了比較與選擇邏輯820的一個實施例。返回參考圖8,表條目被表示為能夠為每個子通道存儲單個共享地址值和獨(dú)立地址值的寄存器。表條目可以實現(xiàn)為一系列寄存器,并且具有用于指示當(dāng)前存儲的值是否有效的有效位。通過選擇最高優(yōu)先級的表條目并將其發(fā)送至事務(wù)匯集器230,來生成輸出請求。然后,將相應(yīng)的表條目部分標(biāo)記為無效。根據(jù)一個實施例,每個表條目耦合至邏輯單元820。此外,每個輸入的請求被每個邏輯單元820所看到。輸入的請求包含共享地址值、獨(dú)立地址值以及子通道分配,每個邏輯單元820按照如下將該輸入的請求與相關(guān)聯(lián)的表條目進(jìn)行比較(“輸入的請求比較”)。首先,如果在該表條目中的共享地址值是無效的,則該比較成功。否則,如果在該請求中的共享地址值與該表條目是相等的并且在該表條目中的所分配子通道的獨(dú)立地址值是無效的,則該比較成功。否則,該比較失敗。在一個實施例中,每個邏輯820單元具有固定的和唯一的表條目Id,并且在被表條目選擇邏輯620所選擇時將該表條目Id與最高優(yōu)先級表條目進(jìn)行比較,以將其發(fā)送至事務(wù)匯集器230。如果由最高優(yōu)先級條目所執(zhí)行的該輸入請求的比較成功,則將在該請求中的獨(dú)立地址值復(fù)制至在該表條目中的相應(yīng)子通道地址部分中。該表條目中的兩個元素都標(biāo)記為有效。然后,拋棄該請求。否則,如果在優(yōu)先級環(huán)上的下一個表條目所執(zhí)行的該輸入請求的比較成功,則將該輸入請求復(fù)制到該表條目中。否則,重復(fù)該過程,直到發(fā)現(xiàn)對其而言輸入請求比較成功的一個表條目為止。如果沒有發(fā)現(xiàn)對其而言輸入請求比較成功的表條目,則中止該輸入請求的插入,直到生成了輸出請求并因此釋放了環(huán)形緩沖器條目為止。微塊化存儲器子通道能夠訪問在由共享地址比特和I個獨(dú)立地址比特所確定的某個地址范圍之內(nèi)的不毗鄰的存儲器地址。因此,與將I個地址信號復(fù)制到每個子通道的成本進(jìn)行權(quán)衡,對于I的明智選擇能夠提供獨(dú)立子通道的增強(qiáng)的并行性和帶寬效率。圖IOA和IOB示出了微塊化的性能改善。每個圖示出了在分塊地址空間(tiledaddressspace)中的三角形的光柵化(rasterization),每個小正方形表示4字節(jié)像素或者紋理元素。圖IOA示出了當(dāng)每個請求是64字節(jié)時,在標(biāo)準(zhǔn)存儲器系統(tǒng)中的過讀取(overfetch)0每個4X4像素塊表示64字節(jié)的對齊的存儲器塊。該三角形包圍了57個像素。采用標(biāo)準(zhǔn)存儲器子系統(tǒng),這57個像素在11個(64字節(jié))存儲器塊中。因此,為了訪問這57個像素,需要訪問可能不被使用的額外的119個像素的代價數(shù)據(jù)(worthofdata)(例如,得到32%的效率)。圖IOB示出了在每個請求是16字節(jié)并且所有這些請求都可以由微塊化匯集器用來構(gòu)建不帶有未使用的子通道的64字節(jié)存儲器事務(wù)的情況下的過讀取。在該情況下,三角形接觸23個2X2像素陣列,結(jié)果是訪問35個額外的代價數(shù)據(jù)(例如,得到62%的效率)。微塊化的有效性取決于匯集器構(gòu)建完全填充的存儲器事務(wù)的能力。此外,上述重排序表機(jī)制對輸入的存儲器請求執(zhí)行各種比較,而不是試圖在輸出端構(gòu)建請求。這就允許有更多的時間來執(zhí)行比較,潛在地避免了競爭狀態(tài),并且減少了比較器的數(shù)量(因此,降低了重排序隊列的門的總數(shù))。每個時鐘僅僅存在D次比較,而不是每個時鐘SXD次比較。圖11示出了計算機(jī)系統(tǒng)100的另一實施例。在該實施例中,與獨(dú)立的存儲器控制組件和I/O控制組件不同,芯片組107包括單個控制集線器(controlhub)1120。從而,存儲器控制器112被包含在CPU102中,存儲器115耦合到CPU102。在這樣的實施例中,圖形控制器160耦合到控制集線器1120,并且經(jīng)由CPU102訪問主存儲器115。然而,在閱讀了以上描述之后,本發(fā)明的很多替換和修改對于本領(lǐng)域技術(shù)人員而言毫無疑問地變得顯而易見,要理解的是,通過圖示說明所示出和描述的任何特定實施例并非意欲被認(rèn)為是限制性的。因此,對于各種實施例的細(xì)節(jié)的參考并非意欲限制權(quán)利要求的范圍,在權(quán)利要求中僅僅闡述了被認(rèn)為是對本發(fā)明而言是必要的那些特征。權(quán)利要求一種用于存儲器訪問控制的方法,包括在存儲器控制器處接收第一請求,以訪問耦合至所述存儲器控制器的隨機(jī)存取存儲器器件中的通道;在所述存儲器控制器處接收第二請求,以訪問所述通道;分配所述第一請求和所述第二請求以訪問在所述通道中的兩個或者更多可獨(dú)立尋址的子通道之一;將所述第一請求和所述第二請求與在重排序表中的每個表條目進(jìn)行比較,每個表條目具有共享地址部分,以及與所述兩個或者更多可獨(dú)立尋址的子通道中的每一個相對應(yīng)的獨(dú)立地址部分;以及通過以下操作來構(gòu)建對所述隨機(jī)存取存儲器器件的存儲器請求,所述操作包括將所述第一請求和一個或多個其他請求進(jìn)行組合以訪問所述通道之中的第一可獨(dú)立尋址的子通道,以及將所述第二請求和一個或多個其他請求進(jìn)行組合以訪問所述通道之中的第二可獨(dú)立尋址的子通道。2.如權(quán)利要求1所述的方法,還包括判斷請求的共享地址值是否與表條目的共享地址部分相匹配;以及如果匹配,則判斷該表條目的獨(dú)立地址部分是否為空。3.如權(quán)利要求2所述的方法,還包括如果該表條目的獨(dú)立地址部分為空,則將所述請求插入到所述表條目中。4.如權(quán)利要求3所述的方法,還包括將所述請求轉(zhuǎn)發(fā)至相關(guān)聯(lián)的子通道。5.如權(quán)利要求4所述的方法,還包括在將所述請求轉(zhuǎn)發(fā)至相關(guān)聯(lián)的子通道之后,將該空表條目返回至所述重排序表的末尾。全文摘要根據(jù)一個實施例,公開了一種存儲器控制器。該存儲器控制器包括分配邏輯、重排序表和事務(wù)匯集器。該分配邏輯接收訪問存儲器通道的請求,并且分配所述請求以訪問在所述通道之中的兩個或更多的可獨(dú)立尋址的子通道中的一個。該重排序表包括兩個或者更多的表元素。每個表元素都具有共享地址部分,以及與所述兩個或者更多可獨(dú)立尋址的子通道中的每一個相對應(yīng)的獨(dú)立地址部分。該事務(wù)匯集器將在重排序表元素中的共享地址部分和獨(dú)立地址部分進(jìn)行組合,并發(fā)出單個存儲器事務(wù)。文檔編號G06F13/16GK101930412SQ20101016666公開日2010年12月29日申請日期2006年6月23日優(yōu)先權(quán)日2005年6月23日發(fā)明者J·秋山,P·布朗,W·克利福德申請人:英特爾公司