專利名稱:存儲器數據存取系統與方法以及存儲器控制器的制作方法
技術領域:
本發明是有關于計算機硬件,以及特別是有關于在計算機系統中總線主控器從存儲器中有效存取數據的一種系統與方法。
背景技術:
存儲器控制器(memory controller)是根據一個或多個總線主控器(busmaster),例如處理器(processor)、外圍設備、視頻控制器(video controller)等等的要求,與計算機系統中的存儲器相互連接的接口(interface)。總線主控器是計算機系統中執行各種任務的元件,且經由共享系統總線與計算機系統中的其它元件(包括其它總線主控器)通訊。如本領域技術人員所知,本文中的計算機系統可以是系統單芯片(system on chip,SoC)、桌上計算機(desktop computer)、如個人數字助理(personal digital assistant)的可攜式計算裝置,或本領域技術人員所知的其它裝置。根據使用者、操作系統、其它軟件(software)或硬件(hardware)的要求,總線主控器通常需要存取計算機系統中的存儲器來讀取與寫入數據,以執行其指定的功能。一般是由存儲器控制器來處理存儲器的存取,此存儲器控制器是根據總線主控器發出的請求來讀取請求中所指定的數據,并使此數據能在系統總線上被發出請求的總線主控器存取。存儲器控制器接收到來自總線主控器的向存儲器寫入數據的請求,于是執行將數據寫入存儲器的操作,并將數據儲存在計算機系統的存儲器中。
在某些情況下,總線主控器所發出從存儲器中讀取或寫入數據的請求是可加以預測的。舉例來說,當更新或取得液晶顯示器(liquid crystaldisplay,LCD)或視頻顯示器(video display)的顯示內容時,LCD或視頻控制器一般會發出一系列的連續請求以從存儲器的一連串順序地址中讀取數據。一般說來,LCD控制器將這些請求發送給存儲器控制器,當接收后,存儲器控制器從這些請求所指定的地址提取數據,并且經由計算機系統的系統總線將其傳遞給LCD控制器。通常,當LCD控制器發出從存儲器中讀取數據的初始請求時,就可預測到發送給存儲器控制器的下一請求,因為LCD控制器可能會發出從存儲器的下一順序地址中讀取數據的請求。但是,本領域技術人員所知的存儲器控制器一般并不具備預測總線主控器存取存儲器后續請求的性能,因此,在發出每個從存儲器中讀取數據的請求之后,LCD控制器必須等存儲器控制器對其請求解碼,才能從存儲器中提取被請求的數據,并使被請求的數據在系統總線上被存取。
在上述情況下,如果從發出請求之后到存儲器控制器傳遞數據期間,將LCD控制器等待的時間減少,那么計算機系統的效率與性能就可提高。一般來講,當接收到來自總線主控器的從存儲器中讀取數據的請求之后,存儲器控制器將以“等待”或“分裂”(split)信號的方式作出響應,這使發出請求的總線主控器處于等待狀態,且通常是暫停(stall)狀態,直到被請求的數據被送達為止。發送了“等待”信號之后,存儲器控制器將從存儲器中提取被請求的數據,如本領域技術人員所知的,這導致計算機系統性能的延遲。從存儲器中提取數據之后,存儲器控制器將使數據在系統總線上可以被發出請求的總線主控器所存取。
在發出從存儲器中讀取數據的請求之后,與接收到被請求的數據之前,總線主控器必須等待存儲器控制器提取被請求的數據,這是產生延遲的原因,它導致計算機系統的性能與效率降低。但是,如果存儲器控制器在接收到來自總線主控器的初始請求之后能夠預測或預期來自此總線主控器的后續請求,那么計算機系統的性能與效率就可提高。然而,迄今為止,尚未有可針對上述的缺點與不足進行的改良。
發明內容
本發明的實施例提供了從計算機系統的存儲器中提取數據的系統與方法。簡要地說,在架構上,此系統的實施例可實施如下。這種從存儲器中提取數據的系統包括系統總線和至少一個耦接到此系統總線的總線主控器。此系統還包括耦接到系統總線和存儲器的存儲器控制器。存儲器控制器從存儲器中提取數據并儲存數據,以響應總線主控器所發出的請求。存儲器控制器還判斷是否代表總線主控器從存儲器中預取(prefetch)數據,并且預取及儲存數據以便傳遞數據,以響應來自總線主控器的提取數據的后續請求。本說明書的內容也可提供從計算機系統的存儲器中存取數據的方法。此種方法的一實施例可廣泛地總結為以下步驟接收來自總線主控器的請求以從存儲器中提取數據;判斷是否代表此總線主控器從存儲器中預取數據;如果預測到總線主控器發出的后續請求,則預取數據以響應確定步驟;以及儲存被預取的至少一數據區塊,以便于當接收到總線主控器發出的后續請求時可迅速傳遞數據。
本說明書的內容也可提供一種存儲器控制器,用來從存儲器中存取數據。其中一實施例可廣泛地實施如下。此存儲器控制器包括存儲器請求解碼器(decoder)、預取分析器(prefetch analyzer)以及預取隊列(prefetchqueue)。存儲器請求解碼器對總線主控器發出的對存儲器進行讀取或寫入數據的請求進行解碼,并判斷發出此請求的總線主控器的識別碼(identity)。預取分析器判斷是否代表發出請求的總線主控器從存儲器中預取數據,且還判斷存儲器中要預取數據的位置。此外,預取隊列儲存從存儲器中預取的至少一數據區塊。
為讓本發明的上述和其它目的、特征和優點能更明顯易懂,下文特舉較佳實施例,并配合所附圖式,作詳細說明如下。
圖1是已知計算機系統的功能方塊圖,其繪示耦接到系統總線的總線主控器和存儲器控制器,還有耦接到存儲器控制器的存儲器。
圖2是根據本發明實施例所提出的并入于計算機系統的存儲器主控器的功能方塊圖。
圖3是圖2所示的實施例的功能方塊圖,其繪示預取控制數據。
圖4是根據本發明實施例所提出的并入于計算機系統的存儲器控制器的功能方塊圖。
圖5是根據本發明實施例所提出的并入于計算機系統的存儲器控制器的功能方塊圖。
圖6是根據本發明實施例的方法流程圖。
具體實施例方式
本發明是有關于改良存儲器存取性能的計算機系統。根據一實施例,存儲器控制器支持預取(prefetch)控制數據,使得此存儲器控制器能夠判斷是否根據發出請求的總線主控器以從存儲器中預取數據。在本文中,預取數據可被界定且被本領域技術人員所了解為,在總線主控器發出提取數據的請求之前,預先代表發出請求的總線主控器從存儲器中提取數據,或者至少從存儲器中提取數據。存儲器控制器可判斷發出存儲器數據讀取請求的總線主控器的識別碼,并且判斷發出請求的總線主控器是否以可預測的方式發出從存儲器中讀取數據的后續請求。液晶顯示器(LCD)或視頻控制器是以可預測方式發出請求的總線主控器的一個范例。為了存取更新或獲得LCD屏幕所需的數據,LCD或視頻控制器通常請求依序從存儲器的連續地址中提取數據。
在一實施例中,如果存儲器控制器接收到來自這種總線主控器的從存儲器中讀取數據的初始請求,那么此存儲器控制器則預取存儲器的下一順序地址中的數據,以便于迅速傳遞數據以響應來自此總線主控器的后續請求,此后續請求可能是從被預取的地址中讀取數據的請求。當存儲器控制器接收到讀取被預取數據的請求時,如本領域技術人員所知的,就存儲器控制器而言,可降低數據傳遞延遲,這是因為在等待被請求數據的傳遞過程中,減小由發出請求的總線主控器所引起的延遲。接收到讀取被預取數據的請求后,存儲器控制器可再次預取存儲器的下一順序地址中的數據。
代表如LCD控制器之類的總線主控器來預取數據,可減小此LCD控制器等待從存儲器中讀取數據的請求完成所需的時間量,從而提高計算機系統的效率與性能。在一實施例中,預取控制數據存于暫存器內,其包含一連串位,每一位對應于一個總線主控器,存儲器控制器可讀取這些位來確定是否有必要進行存儲器預取。舉例來說,計算機系統的總線主控器的預取控制數據可能是單一位,其中當發出請求的總線主控器的識別碼被確定時,此位的數值使存儲器控制器可輕而易舉地判定是否有必要預取數據。計算機系統的使用者、操作系統或者其它軟件也可對預取控制數據進行編程以增加存儲器控制器的預取能力的靈活性。
通過對以下圖示的解釋和詳細描述,本領域技術人員將對其它額外的系統、方法、特征與/和優點更加了解。意思就是,所有這些額外的系統、方法、特征與/和優點均包含于本說明書的范圍內,且由所附的申請專利范圍來保護。
本發明的各種觀點已概述如上,下面將參考圖示來詳細描述。本說明書的內容將參考這些圖示來進行描述,但并非將其局限于本說明書所揭露的實施例。相反地,它將覆蓋所附的申請專利范圍所界定的本發明的精神與范圍內包含的所有替代形式、更動和類似形式。應該強調的是,對上述的實施例可采取許多更動與修改。所有這些修改與更動都應包含在本發明的范圍內,且由所附的申請專利范圍來保護。
圖1代表已知架構,其繪示計算機系統100中的元件在系統總線102周圍的排列。在所繪示的計算機系統100中,總線主控器耦接到系統總線102,總線主控器利用此系統總線102來相互通訊,總線主控器也經由耦接到系統總線102的存儲器控制器114與存儲器112通訊。計算機系統100與處理器104、LCD控制器106、總線主控器1 116以及總線主控器2 110繪示在一起,代表總線主控器可相互通訊,以及與存儲器控制器114通訊,但是,本領域技術人員將可明白其它元件或總線主控器也可耦接到系統總線102,且并入于計算機系統100。
如果總線主控器需要與計算機系統100中的存儲器112通訊,那么此總線主控器向存儲器控制器114發出請求,存儲器控制器114對此請求進行解碼與處理,此請求包括從存儲器112中存取數據,并且使數據可在系統總線102上被存取,或者向存儲器112寫入數據。如上所述,例如LCD控制器106的總線主控器通常可連續發出許多讀取存儲器數據的請求。相對于來自LCD控制器106的先前請求而言,每個來自此LCD控制器106的連續請求通常是從存儲器的下一順序地址中讀取數據的請求。當LCD控制器106試圖向LCD顯示器108寫入信息時可能會出現這種情形,這是因為當使用存儲器112中的順序區塊中所儲存的信息來更新或取得整個LCD顯示器108的顯示內容時,通常會如此。
當LCD控制器106要更新LCD顯示器108的顯示內容時,計算機系統100中可能發生潛在的瓶頸現象(bottleneck)。當收到請求時,存儲器控制器114可從存儲器112中存取數據區塊,但是已知存儲器控制器114通常不能夠預測存儲器112中將會被請求的下一地址。將能夠預測存儲器112中可能將被總線主控器請求的下一地址的此種存儲器控制器114并入計算機系統100,可提高系統的效率,并且增強其它總線主控器使用系統總線102與存儲器112的有效性。
圖2繪示根據本發明實施例的功能方塊圖。計算機系統200包括處理器204、LCD控制器206以及耦接到系統總線202的其它總線主控器。計算機系統200也包括存儲器控制器214與存儲器212,存儲器控制器214耦接到系統總線202,也耦接到存儲器212。總線主控器可相互通訊,且可經由系統總線202而通訊于存儲器控制器214。如上所述,存儲器控制器214對來自總線主控器的請求進行處理以從存儲器212中讀取或寫入數據。要想提高計算機系統200的效率與性能,存儲器控制器214可在實際接收到讀取數據的請求之前,先預取或存取經預測將被請求的數據。當接收到讀取被預取數據的請求后,存儲器控制器214可馬上傳遞數據,而不會使發出請求的總線主控器因存儲器控制器214提取數據而造成任何更多的延遲。接收到提取已被預取數據的請求后,存儲器控制器214也可重復預取程序,如果后續請求是同一總線主控器發出的關于提取被預取數據的請求,那么就可減少延遲。如果接收到來自總線主控器的初始請求之后,存儲器控制器214可預測此總線主控器的后續讀取請求并準備好數據以便于傳遞,那么發出請求的總線主控器等待從存儲器212中讀取數據的請求的響應的所需時間就會減小,因此預取數據可提高系統的效率與性能。
為了提高計算機系統200的效率與性能,存儲器控制器214儲存預取控制數據218,此預取控制數據218使存儲器控制器214能夠判定是否代表總線主控器從存儲器212中預取數據。預取控制數據218可以暫存器的形式存在,其具有一連串位,這些位與計算機系統200中的每個總線主控器相對應,或者預取控制數據218也可為本領域技術人員所知的另一種信息儲存結構。如果預取控制數據218以一連串位的形式存在,其中每一位對應于計算機系統200中的一個總線主控器是否需要預取數據,則存儲器控制器214可檢查對應于發出請求的總線主控器的位數值來確定是否需要預取數據。預取控制數據218可由使用者、操作系統、其它軟件或硬件來編程。或者,存儲器控制器214、處理器204或計算機系統200中的其它元件可動態產生關于是否需要預取數據給計算機系統200的總線主控器的信息,并且將此信息儲存到預取控制數據218中。
接收到來自總線主控器的請求之后,存儲器控制器214可存取預取控制數據218來確定是否需要預取數據。如果存儲器控制器214確定需要從存儲器212中預取數據,那么存儲器控制器214將預取存儲器212的某一地址的數據,存儲器控制器214可預測到總線主控器將會在發出下一個或將來的請求時請求提取此地址中的數據。通常,存儲器控制器214將預取存儲器212的下一順序地址中的數據。由于LCD控制器206經常要更新或獲得LCD 208的顯示內容,此LCD控制器206將會經常請求讀取存儲器212中下一順序地址的數據,因此經常需要代表LCD控制器206來預取數據。
除了根據發出請求的總線主控器的識別碼來確定是否需要預取數據之外,預取控制數據218還可包含更多關于預取數據的信息。舉例來說,對于特定的總線主控器,預取控制數據218可更包含發出請求的總線主控器將會請求從中讀取數據的一連串地址,這使得存儲器控制器214除了只根據總線主控器的識別碼外,還可依據每個請求來判定是否需要預取數據。如果預取控制數據218包含這樣的一連串地址,且存儲器控制器214接收到來自總線主控器要求預取數據的請求,那么存儲器控制器214可分析總線主控器所請求的地址,以判定是否需要代表發出請求的總線主控器來預取數據。例如,如果存儲器控制器214通常代表發出請求的總線主控器以從存儲器212的下一順序地址中預取數據,且此總線主控器在預取控制數據218所指定的一連串地址的末端發出請求,那么存儲器控制器214可確定“不再需要預取數據”或者提取此一連串地址中的第一個地址而不是下一順序地址。
圖3顯示具有預取控制數據的圖2的實施例。存儲器控制器314支持暫存器318,此暫存器318包含一連串位,這一連串位對應于是否需要代表發出請求的總線主控器來預取數據。暫存器318中的每一位可對應于計算機系統300中的單一總線主控器;當需要代表總線主控器預取數據時,數值可設定為“1”,當不需要代表總線主控器預取數據時,數值可設定為“0”。本領域技術人員將會認知到,可使用其它方法來使用和設定暫存器318位的數值,以使存儲器控制器314判定是否需要預取數據。在所述實施例中,LCD控制器306與視頻控制器320乃是要求預取數據的總線主控器。接收到來自LCD控制器306或視頻控制器320的讀取存儲器312中數據的請求后,存儲器控制器314判斷發出請求的總線主控器的識別碼為何,再通過存取預取控制數據暫存器318中對應至發出請求的總線主控器的位,來判斷是否需要從存儲器312中預取數據給發出請求的總線主控器。
圖4是本發明的一實施例,其具有預取隊列420。請參考圖2所示的實施例,圖4實施例具有預取控制數據418,使存儲器控制器414能夠確定是否需要代表發出請求的總線主控器來預取數據。此外,預取隊列420使存儲器控制器414能夠代表總線主控器來預取和儲存多數數據區塊,以便于迅速傳遞數據以響應來自此總線主控器的從存儲器412讀取數據的后續請求。例如,雖然存儲器控制器414接收到來自總線主控器的請求之后,存儲器控制器414會每次預取一個數據區塊,但是總線主控器仍然會遇到使計算機系統400的性能與效率降低的延遲或等待時間,這可能要歸因于存儲器控制器414,在這種情形下最好是采用較大的預取隊列420。預取隊列420使存儲器控制器414在接收到總線主控器要求預取數據的初始請求之后能從存儲器中的存儲器控制器414所確定位置預取并儲存存儲器的多個數據區塊,而此時發出請求的總線主控器則正在使用最新傳遞的數據執行任務。存儲器控制器414可從存儲器中預取多個數據區塊并將這些數據區塊儲存在預取隊列420中,以用最少等待時間來傳遞多個數據區塊。
圖5繪示本發明另一實施例。存儲器控制器514耦接到系統總線502,也耦接到計算機系統500的存儲器512。總線主控器(處理器504與LCD控制器506)耦接到系統總線502,但是計算機系統500可包括未繪示于圖中的其它總線主控器,且此實施例的操作并不須利用所描繪的總線主控器。
如上所述,存儲器控制器514處理來自總線主控器的請求以從存儲器512中讀取或寫入數據。為了提高計算機系統500的效率與性能,在實際接收到讀取數據的請求之前,存儲器控制器514可預取或存取所預測的將被請求的數據。接收到讀取被預取數據的請求之后,存儲器控制器514即可傳遞此數據,而不會使發出請求的總線主控器因存儲器控制器514提取數據而造成任何更多的延遲。接收到讀取被預取數據請求之后,存儲器控制器514也可重復預取程序,如果后續請求是同一總線主控器所發出的讀取被預取數據的請求,那么預取程序可為這些后續請求減小延遲。如果存儲器控制器514在接收到來自總線主控器的初始請求之后能夠預測此總線主控器的后續讀取請求并準備好數據以便于傳遞,響應于從存儲器中讀取數據請求,發出請求的總線主控器的等待時間會減小,因此預取數據可提高計算機系統500的效率與性能。
存儲器控制器514經由系統總線接口530而耦接于系統總線502以及連接到系統總線的其它元件。當總線主控器發出對存儲器512中讀取數據的請求給存儲器控制器514時,系統總線接口530接收此請求,且存儲器請求解碼器534對此請求進行解碼。存儲器請求解碼器534確定發出請求的總線主控器的識別碼、所發出請求的類型以及請求的其它特性。如果此請求是從存儲器512中讀取數據的請求,那么預取分析器536將對此請求進行分析以確定是否需要代表發出請求的總線主控器從存儲器512中預取數據。
預取分析器536可以只根據發出請求的總線主控器的識別碼來確定是否需要預取數據。或者,預取分析器536可根據存儲器512中被請求的地址與/或發出請求的總線主控器的識別碼來確定是否需要預取數據。預取分析器536也可根據請求與發出請求的總線主控器的其它特性來確定是否需要預取數據。預取分析器536也可確定存儲器中應被存儲器接口538預取的位置。存儲器接口538再對上述的請求進行處理,存儲器接口538與存儲器512相互介接,并執行存儲器512中數據的提取與儲存。當要求預取數據的總線主控器發出請求時,在從存儲器512提取數據之前,存儲器接口538可先確定此數據是否存在于預取隊列532中。如果被請求的數據不在預取隊列532中,那么存儲器接口538則從存儲器512中提取被請求的數據,并且經由存儲器控制器總線接口530來傳遞此數據,此存儲器控制器總線接口530經由系統總線502將被請求的數據傳遞給發出請求的總線主控器。
預取隊列532可以是儲存從存儲器512所讀出的一個數據區塊的暫存器,或者是能夠儲存從存儲器512所讀出的多個數據區塊的較大隊列。如上所述,預取分析器536判斷是否需要代表發出請求的總線主控器來預取數據。確定需要預取數據之后,預取分析器536也可提出請求,使存儲器接口538預取要放入預取隊列532的數據。預取分析器536確定存儲器512中要被預取的地址,并與此適當地址通訊;然后存儲器接口538提取此地址中的數據,并將所提取的數據儲存到預取隊列532中。預取分析器536可以請求的下一順序地址來當作此地址,諸如當LCD控制器506作為總線主控器時通常可以如此進行。當獲得或更新LCD顯示器508的顯示內容時,LCD控制器506可請求存儲器中的一連串順序地址中的數據。
圖6的流程圖繪示根據本發明的方法實施例。在步驟660中,接收到來自系統總線上的總線主控器的讀取數據的請求。在步驟662中,判斷是否需要本說明書所提出的數據預取。應當認識到,是否需要進行數據預取可根據發出請求的總線主控器的識別碼或根據本領域技術人員所知的所接收請求的其它特性來確定。例如,如果發出請求的總線主控器一般是以順序方式來請求從存儲器中讀取數據,那么步驟662可以根據發出請求的總線主控器的識別碼來進行確定。如果發出請求的總線主控器不需要預取數據,那么此方法流程可前進到步驟666;在步驟666中,數據從存儲器中被提取,在步驟670中,傳遞數據給發出請求的總線主控器。
但是,如果發出請求的總線主控器要求預取數據,或預取數據可應用于發出請求的總線主控器,那么此流程可前進到步驟664。在步驟664中,可判斷被請求的數據是否已經存在預取隊列中。如果被請求的數據不在預取隊列中,那么在步驟668中,從存儲器中請求數據,且在步驟672中將所提取的數據傳遞給發出請求的總線主控器。如果存儲器控制器或執行本方法的其它元件已經代表發出請求的總線主控器來預取數據,那么在步驟672中,此數據傳遞給發出請求的總線主控器,并節省掉步驟668中所發生的等待時間(latency)。在步驟674中,代表發出請求的總線主控器以預取數據。數據可從存儲器的下一順序地址或者其它位置中預取,所謂其它位置是指發出請求的總線主控器將會發出的提取存儲器數據的后續請求中所可能請求的其它地址。在步驟676中,被預取的數據儲存在預取隊列中,以便于在后續提取數據請求時,傳遞給發出請求的總線主控器。
應當注意的是,圖6中所描述的方法還有本發明的其它實施例也可以硬件、軟件、固件(firmware)或其組合方式來實施。在實施例中,此方法是以儲存于存儲器中且由適當的指令執行系統來執行的軟件或固件方式來實施。如果是以硬件方式來實施,例如在其它實施例中,此方法可用以下任意技術或其組合來實施,而這些技術在此技術領域中是眾所周知的具有邏輯門(logic gate)的分立式邏輯電路(discrete logic circuit),用來對數據信號實施邏輯功能;應用特定集成電路(application specific integratedcircuit,ASIC),其具有專用組合邏輯門(combinational logic gate)、可編程門陣列(programmable gate array,PGA)、場可編程門陣列(fieldprogrammable gate array,FPGA),等等。
如本領域技術人員所了解的,任何程序描述或流程圖中的方塊都應理解為代表模塊、片段或部分代碼,其包括一個或多個用來實施指定邏輯功能或程序的步驟的可執行指令,且本發明的較佳實施例的范圍包括其它實施方式,其中可按照不同于圖中所示或所討論的次序來執行功能,包括實質上同時執行或以相反次序執行,這取決于其相關的功能性。
雖然本發明已以較佳實施例揭露如上,然其并非用以限定本發明,任何本領域技術人員,在不脫離本發明的精神和范圍內,當可作些許的更動與潤飾,因此本發明的保護范圍當視所附的權利要求范圍所界定者為準。
權利要求
1.一種存儲器數據存取系統,包括系統總線;至少一個總線主控器,耦接到所述系統總線;以及存儲器控制器,耦接到所述系統總線與存儲器,所述存儲器控制器依據所述總線主控器所發出的請求而從存儲器中提取和儲存數據,其中所述存儲器控制器確定是否代表所述總線主控器而從存儲器預取數據,以及所述存儲器控制器還依據于來自所述總線主控器的后續數據的讀取請求而預取和儲存數據以待傳遞。
2.根據權利要求1所述的存儲器數據存取系統,其中所述存儲器控制器還包括預取暫存器,根據所述預取暫存器包含的信息,所述存儲器控制器判斷是否要代表所述總線主控器從存儲器中預取數據。
3.根據權利要求2所述的存儲器數據存取系統,其中所述預取暫存器包含對應于所述至少一個總線主控器中每個總線主控器的位,根據所述位,所述存儲器控制器判斷是否代表所述位對應的所述總線主控器從存儲器中預取數據。
4.根據權利要求1所述的存儲器數據存取系統,其中所述存儲器控制器根據所述存儲器控制器所儲存的信息和發出請求的所述總線主控器的識別碼來確定存儲器中要預取的地址。
5.根據權利要求1所述的存儲器數據存取系統,其中所述存儲器控制器還包括存儲器請求解碼器,對所述總線主控器所發出的對存儲器進行讀取或寫入數據的請求進行解碼,以及判斷發出所述請求的所述總線主控器的識別碼;預取分析器,確定判斷是否代表發出所述請求的所述總線主控器以從存儲器中預取數據,所述預取分析器還確定存儲器中要預取的所述位置;以及預取隊列,儲存從存儲器中預取出的至少一數據區塊。
6.一種在計算機系統中從存儲器存取數據的方法,包括接收來自總線主控器的請求以從存儲器中提取數據;判斷是否代表所述總線主控器從存儲器中預取數據;根據所述判斷是否預取數據的步驟,當預測到所述總線主控器發出后續請求時,預取數據;以及儲存至少一區塊的被預取數據,以當接收到所述總線主控器發出的所述后續請求時進行傳遞所述區塊內的被預取數據。
7.根據權利要求6所述的從存儲器中存取數據的方法,其中所述判斷是否預取數據的步驟還包括識別發出請求的所述總線主控器的識別碼;以及參考對應于發出請求的所述總線主控器的所述識別碼的預取信息,其中所述預取信息包括關于是否代表所述總線主控器預取數據的信息。
8.根據權利要求6所述的從存儲器中存取數據的方法,還包括儲存關于存儲器中一連串地址的信息,要求預取數據的發出請求的總線主控器將會請求從所述一連串地址中提取數據,其中當所述被預取數據的地址在所述一連串地址之外,則不預取數據。
9.根據權利要求6所述的從存儲器中存取數據的方法,還包括在所述判斷是否預取數據的步驟、所述預取數據的步驟,以及所述儲存被預取數據的步驟中的至少一個步驟之后,接收所述后續請求。
10.一種存儲器控制器,從存儲器中存取數據,包括存儲器請求解碼器,對總線主控器所發出的對存儲器進行讀取或寫入數據的請求進行解碼,以及判斷發出所述請求的所述總線主控器的識別碼;預取分析器,判斷是否代表發出所述請求的所述總線主控器從存儲器中預取數據,所述預取分析器還判斷要預取存儲器中的所述位置;以及預取隊列,儲存從存儲器中預取出的至少一數據區塊。
全文摘要
本發明揭露從計算機系統的存儲器中存取數據的系統與方法。存儲器控制器耦接到計算機系統的系統總線,此計算機系統包括同樣耦接到系統總線的總線主控器。此存儲器控制器接收來自計算機系統的總線主控器的請求,該請求代表存儲器讀取或寫入數據。如果存儲器控制器接收到來自特定總線主控器的初始請求,那么此存儲器控制器預測從特定總線主控器發出的請求,并代表特定總線主控器預取數據,以便于當特定總線主控器發出從存儲器中讀取數據的后續請求時,可迅速傳遞此數據。
文檔編號G06F13/16GK101046784SQ200710108718
公開日2007年10月3日 申請日期2007年5月31日 優先權日2006年7月18日
發明者李察·鄧肯, 威廉·V·米勒, 丹尼爾·戴維斯 申請人:威盛電子股份有限公司