專利名稱:用于動態預取緩沖器配置和替換的方法及設備的制作方法
技術領域:
本發明一般涉及半導體存儲器件,尤其涉及處理器和存儲器之間的存儲器接口。
背景技術:
存儲器控制器被用于數據處理系統中以在不同類型存儲器和一個或多個數據處理主設備之間進行接口。存儲器的各種類型包括SRAM、DRAM、Flash、ROM、MRAM等。高性能數據處理器系統利用″智能″存儲器控制器,其減少了讀、寫存儲器延遲,因此幫助數據處理器連續執行指令流。存儲器控制器通常不利用預取緩沖器來在處理器需要數據的時刻之前取好所需的數據。然而,″智能″存儲器控制器包含用于在數據處理器請求數據之前獲取數據的預取緩沖器。智能存儲器控制器的預取單元包括用于給數據處理器識別及供給數據的標簽、數據和狀態存儲位置。
在題為“從磁盤中自適應預取數據”的美國專利6529998中已提出一種方法,用于自適應選擇從磁盤存儲器中預取數據的最優預取策略。使用基于讀和寫命中失誤的過去歷史的策略。使用閾值以及隨機數來確定該預取策略。基于操作期間發生的可避免讀取命中失誤的數量來定義并更新閾值。系統預先確定一個靜態的固定尺寸緩沖器,并因此被限于在具有多個總線主設備和各種存儲器的系統中使用。
在題為“自適應流緩沖器”的美國專利5958040中的一種方法使用特定于指令的預取避免。一個表格存儲了地址信息,每當CPU執行指令時,不使用該地址上的超高速緩沖存儲器線。后續指令地址與表格中的地址相比,并且當后續的地址在表格內被發現時緩沖器不被分配。該系統限于對指令流的操作(指令讀取操作)并且不響應數據讀訪問。因此數據讀訪問對于性能來說不是最佳的,并且所揭示的系統限于固定尺寸緩沖器。
在附圖中以示例性和非限定性的方式圖解說明了本發明,其中類似附圖標記標明類似元件。
圖1以方框圖形式圖解了根據本發明的數據處理系統,其具有帶預取緩沖器的存儲器控制器;圖2以圖示形式圖解了根據本發明的一個形式的第一預取緩沖器配置;圖3以圖示形式圖解了根據本發明的另一個形式的第二預取緩沖器配置;圖4以圖示形式圖解了根據本發明的預取緩沖器的行的狀態字段;以及圖5以方框圖的形式圖解了提供預取緩沖器的動態配置及其中數據的替換的控制電路;圖6-8以流程圖的形式圖解了用于自適應配置預取緩沖器及在該預取緩沖器中替換數據的一種方法。
本領域技術人員理解,圖中為簡單和明了起見圖解元件并且其不必按比例繪制。例如,圖中一些元件的尺寸相對于其他的元件可被夸大以助于提高對本發明實施例的了解。
具體實施例方式
圖1以方框圖的形式圖解了數據處理系統10,其通常具有多個起著數據處理系統10的總線主設備作用的數據處理器。第一主設備12,第二主設備14以及第三主設備16均被連接到包含開關電路19的互連電路18。主設備12、主設備14以及主設備16起著總線主設備的作用,并且有選擇地具有總線的完全控制,該總線由開關電路19和存儲器控制器20之間的存儲器控制器互連形成。在一個形式中,開關電路19作為縱橫開關被實現。該縱橫開關通常包含地址譯碼器,和用于進行總線判優以允許主設備12,14及16的任何一個訪問存儲器控制器20的機構。數據處理系統10進一步地包含第一存儲器22、第二存儲器24及第三存儲器26,其每個被連接到存儲器控制器20。數據處理系統10還包括一個或多個附加的從設備28。其他從設備28的例子包括計時器,LCD控制器等。存儲器控制器20包括預取緩沖器30及預取控制電路32。第一主設備12具有提供于開關電路19之間的各種信令或互連。主設備標識符或主設備標識(ID)信號從第一主設備12連接到開關電路19。數據尺寸1信號從第一總線主設備12連接到開關電路19。以其他控制1信號的形式的一個或多個控制信號從第一總線主設備12連接到開關電路19。突發長度1信號從第一主設備12連接到開關電路19。雙向地址/數據1總線連接在第一主設備12及開關電路19之間。該互連共同地形成主設備1互連。類似的主設備互連信令連接在每一主設備14和16及開關電路19之間,并且為圖解說明方便起見沒有被詳細顯示。存儲器控制器互連連接在開關電路19和存儲器控制器20之間。主設備標識(ID)信號總線從開關電路19連接到存儲器控制器20。用于提供數據尺寸指示的數據尺寸信號總線從開關電路19連接到存儲器控制器20。用于提供突發長度指示的突發長度信號總線從開關電路19連接到存儲器控制器20。標記為“其他控制”的信號總線從開關電路19連接到存儲器控制器20,用于提供從所選擇的總線主設備到存儲器控制器20的各種附加的控制信息。雙向地址/數據總線連接在開關電路19和存儲器控制器20之間。每個存儲器22、24和26與存儲器控制器20之間是存儲器互連。例如,第一存儲器互連連接在第一存儲器22和存儲器控制器20之間。總線寬度信號從第一存儲器22連接到存儲器控制器20。多位雙向地址/數據/控制總線連接于第一存儲器22與存儲器控制器20之間。在該圖解形式中,第二存儲器互連和第三存儲器互連與第一存儲器互連相同,但為圖解說明方便起見沒有詳細顯示。
在操作中,主設備12、14和16的任何一個發出或產生針對由存儲器讀請求所尋址的任何存儲器22、24和26的至少一個或多個數據請求。作為響應,互連電路18允許存儲器控制器互連的所有權給請求方主設備。存儲器控制器20看到來自主設備的讀請求。讀請求具有一個或多個諸如數據尺寸和突發長度的屬性。存儲器控制器知道主設備ID、所請求的數據尺寸及所請求的突發長度,以及存儲器地址。突發長度信號向存儲器控制器20告知所請求的操作是否為突發操作。基于存儲器控制器互連中的信息,如果預取緩沖器30中地址命中,即所請求的數據在預取緩沖器中,則該數據被直接提供給開關電路19并返回到請求方主設備。下面將描述的預取緩沖器30中的狀態位因此被更新。
如果地址沒命中預取緩沖器30并且命中失誤,則基于請求方主設備是否被使能預取,根據數據尺寸和突發長度來進行預取緩沖器行尺寸的動態配置。下面將描述的自適應緩沖區行替換算法選擇哪個緩沖區行被替換以及新數據被寫入哪個緩沖區行。預取控制電路32基于緩沖器配置和存儲器總線寬度確定對存儲器22、24和26的訪問的數量和尺寸。然后被請求的數據被提供給請求方主設備。
圖2中所說明的是基于不同突發長度支持的預取緩沖器30的配置的一部分的圖示。諸如突發行36、38、40、42、44、和46的多個突發塊或突發行以圖解的形式被提供。突發行36和38支持8字(例如,32位字)突發操作。在每個突發行內,例如突發行36內有狀態字段,和數據區50中預定數量的數據字。針對每個突發行36和38中的8字突發操作,設置預取緩沖器30,并且針對每個突發行40、42、44和46中的4字突發操作,設置預取緩沖器30。因為存在突發行的兩個不同尺寸,顯然主設備支持至少兩種存儲器突發長度,或相反地,不同的總線主設備支持不同的突發長度。應該理解,來自突發行36的數據可從存儲器22,24和26中相同或不同于來自突發行36的數據的存儲器中檢索到。對于所有其他所說明的突發行中的數據來源而言,也是如此。預取緩沖器30的特定配置由預取控制電路32響應數據尺寸信號和突發長度信號而建立。數據尺寸信號確定每個突發行內單個數據單元的尺寸。突發長度信號確定每個突發行中單個數據單元的數目。在圖2中,數據尺寸信號選擇數據尺寸為字長度。例如多字或一個字節的其他數據尺寸可以由數據尺寸信號指明。突發長度信號允許在數據處理系統10中實現不同類型總線主設備的使用。例如,如果第一主設備12僅支持8字長度的突發而第二總線主設備14支持4字長度的突發,則圖2的預取緩沖器配置將支持這兩種總線主設備。相反,以前的系統會要求具有預定固定配置的分立存儲單元以分別地支持兩種不同總線主設備。應該注意到,在圖2的預取緩沖器30的說明部分中,緩沖存儲區為可基于要服務的所請求訪問而動態配置。因此,雖然所說明的配置包括均擁有8個字的兩個突發行緩沖器,和均擁有4個字的四個突發行緩沖器,然而基于突發請求的歷史和類型,當接收到訪問請求時,緩沖器可被動態地設置為任何長度的組合。緩沖器的動態配置可至少部分地基于數據尺寸和突發長度信號。
圖3中所說明的是針對非突發存儲器操作的部分預取緩沖器30的可選配置。響應數據尺寸信號和突發長度信號,預取控制電路自適應地設置預取緩沖器30的行尺寸。突發長度信號表明正在傳遞讀請求的總線主設備不支持對所請求數據的突發事務。這可以是由于訪問的類型或任何其他各種原因。緩沖區行52、54、56和58均具有附加于狀態字段的單數據字。此外,緩沖區行60和62具有附加于狀態字段的兩個數據字,以響應表明兩個字的數據尺寸的數據尺寸信號。在每個緩沖區行52、54、56、58、60和62中,突發長度信號沒有指示數據突發。因此,應該注意到,可以實現各種不同預取緩沖器配置來響應接收數據尺寸信號和突發長度信號的預取控制電路32。
圖4中所說明的是,僅舉例來說,代表圖2和3中所說明的任何狀態字段的狀態字段64。狀態字段64具有地址標記字段、無效字段或無效指示、已用字段或已用指示、有效字段或有效指示、預取字段或預取指示、總線忙字段或總線忙指示、以及填充忙字段或填充忙指示。如圖3和4中所示,該狀態字段與預取緩沖器30中最小支持行尺寸相關。標記字段包含確定預取緩沖器30中數據的特定行的位置的信息。無效指示表示預取緩沖器30不包含有效數據。換言之,無效字段指示預取緩沖器30中的相應數據行不是有效的。已用指示表示預取緩沖器30包含已被提供以滿足總線突發類型讀取的有效數據。換言之,已用字段指示預取緩沖器30中的相應數據行已被提供以響應前一突發讀請求。有效指示表示預取緩沖器30包含已被提供以滿足總線單類型(即,非突發)讀取的有效數據。換言之,有效字段指示預取緩沖器30中相應行已被提供以響應前一非突發讀請求。預取指示表示預取緩沖器30包含已被預取以滿足潛在的未來總線訪問的有效數據。總線忙指示表示預取緩沖器30當前正被用來滿足由一個總線主設備發起的總線突發讀取。填充忙指示表示預取緩沖器30已被分配來接收來自存儲器的數據,并且存儲器訪問仍在進行中。存儲器訪問可能已由預取控制電路32執行的預取操作發起,而不直接與來自一個總線主設備的訪問請求相關。狀態字段64中的這些指示被用來確定預取緩沖器30中的哪個行或哪些行被選為替換項。有關哪個行或哪些行將被選為替換項的選擇以按照如圖4所示的無效、已用、有效、預取、總線忙和填充忙的順序的狀態字段指示的劃分優先級的順序來進行。注意,可選實施例可以使用除圖4中所說明的那些以外的不同指示,或可以可選方式組合或編碼指示。
圖5中所說明的是圖1的預取控制電路32的一個實現70的更進一步的細節。動態緩沖器配置邏輯72具有用于接收數據尺寸屬性信號的第一輸入、用于接收突發長度屬性信號的第二輸入、用于接收來自諸如存儲器22、24或26的所尋址的存儲器的總線寬度信號的第三輸入。動態緩沖器配置邏輯72的第一輸出被連接到自適應緩沖器存儲替換邏輯74的輸入。自適應緩沖器存儲替換邏輯74的輸出提供緩沖器部分替換指示并被連接到請求類型邏輯76的第一輸入。動態緩沖器配置邏輯72的第二輸出被連接到請求類型邏輯76的第二輸入。請求類型邏輯76的輸出被連接到圖2的三個存儲器互連中的一個。
圖6-8中所說明的是描述數據處理系統10,特別是預取控制電路32的實現70的操作的流程圖79。在步驟80中,開始一個讀訪問。在步驟82中,由存儲器控制器20接收來自總線主設備12,14或16之一的讀請求。在步驟84中,做出該讀請求是否在預取緩沖器30中產生命中的判斷。根據存儲器控制器20中的常規標簽比較(未示出)做出該判斷。如果標記匹配導致命中,則隨后是步驟86,其中進行從預取緩沖器30到主設備的讀取。讀訪問的結束發生在步驟88。如果發生命中失誤,則執行步驟90。針對發出請求的主設備的主設備標識(ID)信號總線是否被允許重新配置預取緩沖器30,存儲器控制器20內進行確定。邏輯電路(未示出)確定哪些總線主設備具有重新配置能力。可選的實施例可允許由任何總線主設備重新配置,并且因此可省略確定步驟90。如果發出請求的總線主設備可以重新配置預取緩沖器30,那么執行步驟92。基于對應于讀訪問的數據尺寸屬性及突發長度屬性,自適應緩沖器存儲替換邏輯74有選擇地使重新配置指示有效。重新配置指示可采用許多形式之一。例如,重新配置指示可以是信號,機器狀態,邏輯狀態,靜態驅動的信號,標記指示,在集成電路管腳處的外部提供的信號等。如果發出請求的總線主設備不能重新配置預取緩沖器30,則步驟94中自適應緩沖器存儲替換邏輯74使重新配置指示無效。無論如何都執行步驟96,其中檢查一些或所有狀態字段以找出預取緩沖器30中的任何無效項。應該注意到,術語″項″是整行、行的一部分,或多于一行。在步驟96中確定是否發現無效項。如果發現無效項,則被發現是無效的行或行的一部分在步驟100中被標記為替換項。被標記的行的部分取決于將被替換的項的尺寸。基于替換數據所需的必要容量,可執行一個或多個行,或選擇多個行的至少一部分作為替換項。在步驟100之后,執行將結合圖8描述的更進一步的步驟。
如果步驟98中沒有發現無效項,則在步驟102中檢查狀態字段以找出任何已用項。在步驟104中,如果存在已用項,則在步驟106中該已用項被標記為替換項。再次地,根據將被替換的項的尺寸,該已用項可以是一個或多個行或一個或多個行的一部分。在步驟100之后,執行將結合圖8描述的更進一步的步驟。如果沒有發現已用項,則在步驟108中檢查狀態字段以找出任何單有效項。在步驟108之后執行圖7中所說明的步驟。
圖7中所說明的是圖6的動態緩沖器項替換方法的延續。在步驟110中,確定是否發現任何單有效項。必須發現至少一個單有效項。如果發現多個有效項,則有效項中的任何一個對于隨后的處理都是足夠的。如果發現單有效項,則執行步驟112。被發現的有效項的行或行的一部分被標記為替換項。在步驟112之后,執行將結合圖8描述的更進一步的步驟。如果沒有發現單有效項,則在步驟114中檢查狀態字段以找出任何命中忙項。在步驟116中確定是否發現命中忙項。在步驟116中,如果有命中忙項,則在步驟118中該命中忙項被標記為替換項。再次地,基于將被替換的項的尺寸,該命中忙項可以是一個或多個行或一個或多個行的一部分。在步驟118之后,執行將結合圖8描述的更進一步的步驟。如果沒有發現命中忙項,則在步驟120中檢查狀態字段以找出任何填充忙項。在步驟122中確定是否發現任何填充忙項。如果發現填充忙項,則執行步驟124。基于將被替換的項的尺寸,該填充忙項可以是一個或多個行或一個或多個行的一部分。在步驟124之后,執行將結合圖8描述的更進一步的步驟。如果沒有發現填充忙項,則通過回到步驟96來重復該方法,并執行該方法直到識別出足夠數量的替換項。由于填充的動態性質,解決答案最終會出現,其中識別出足夠數量的替換項。
圖8中所說明的是步驟130、132、134、136、138及140,這些步驟是當在步驟100、106112、118及124中標記替換項之后執行的。根據重新配置指示有選擇地更新替換項的狀態字段。此更新重新配置預取緩沖器30。在步驟132中根據存儲器總線寬度確定針對所尋址的存儲器的讀請求的數量。根據替換項的數據尺寸及狀態字段信息確定一個或多個讀請求的數據尺寸。在步驟134中,利用所確定的讀請求的數量及尺寸,產生針對所尋址的存儲器的一個或多個讀請求。在步驟136中,所請求的數據被存儲到預取緩沖器的替換項中。在步驟138中,當當前的請求的一部分時,所請求數據被提供到發出請求的主設備。如果所請求數據不是當前請求的一部分(即,是純預取請求的一部分),數據被存儲在預取緩沖器30的所識別的替換部分中。
應該清楚,為提高系統性能,在多處理器數據處理系統中提供了可配置的預取緩沖器。根據諸如數據尺寸及突發長度的當前讀請求屬性,可動態地配置預取緩沖器。為最小化命中失誤率以及改善系統的功率和性能特性,使用自適應預取緩沖器替換方法。通過未來總線主設備請求的高效率預取,減少命中失誤率。通過將從系統存儲器資源讀出數據的不必要預取最少化,降低功率。應該理解,已提供以動態方式有效地組織的存儲器控制器,以適應眾多的系統特性,以及使其中的數據被有效地替換以最小化功率和提高系統性能。
預取緩沖器替換方法比常規存儲器替換算法效率更高。預取緩沖器替換策略的結果是當預取時以“最近最少更新”方式選擇緩沖器來填充,以及針對要求的獲取(即,實際滿足當前總線主設備請求的獲取)采用“最近最多空閑”方式。當非預取總線主設備被允許存儲器訪問時,預取緩沖器替換策略允許所預取的數據保持有效。
在上述詳細說明中,參考特定的實施例已經描述了本發明。然而,本領域普通技術人員可以理解,在不背離下面權利要求中所闡明的本發明的范圍的前提下,可以做各種修改和改變。例如,其他的或附加的讀請求屬性可被用來動態地設置預取緩沖器。此處所揭示的預取緩沖器方法可被用于具有任何主設備或從設備(存儲器)接口單元的任何系統上,無論是微處理器、微控制器、DSP還是其他的數字電路上。此處所講授的預取緩沖器結構和方法可結合任何數據處理結構或處理機族使用。雖然狀態機可被用來動態地設置及選擇預取緩沖器的狀態,然而常規的組合邏輯也可實現所揭示的結構。因此,說明書和附圖應是圖解性的,而不是限制性的,并且所有諸如此類的修改均應包括在本發明的范圍內。
結合特定的實施例在上面已描述了益處、其他優點及問題的解決方案。然而,益處、優點、問題的解決方案以及可導致想到或更加明白任何益處、優點或解決方案的任何要素不被看作是任何或所有權利要求的決定性的、必須的或基本特征或要素。如此處所使用的,術語″包括″或其任何其他變化意圖覆蓋非排它的包含,以使包括一列元素的過程、方法、制品或設備不僅包括這些要素,而且可能包括沒有明確列出的其他元素或諸如此類的過程、方法、制品或設備所固有的元素。
權利要求
1.一種用于配置預取緩沖器的方法,包括從主設備接收讀請求;以及響應該讀請求,基于讀請求的屬性有選擇地修改預取緩沖器的至少一部分的行尺寸。
2.根據權利要求1的方法,其中讀請求的屬性包括對應于主設備的主設備標識符、讀請求的數據尺寸、或讀請求的突發長度之一。
3.根據權利要求2的方法,其中有選擇地修改行尺寸是根據讀請求的第二屬性進行的,其中第二屬性包括主設備標識符,數據尺寸或突發長度中的另一個。
4.一種數據處理系統,包括主設備;存儲器;連接到主設備和存儲器的預取緩沖器,該預取緩沖器具有多個行;以及連接到預取緩沖器的預取控制電路,該預取控制電路響應來自主設備的讀請求而有選擇地修改預取緩沖器的至少一部分的行尺寸。
5.根據權利要求4的數據處理系統,其中預取控制電路在預取緩沖器內選擇替換項,并且有選擇地修改行尺寸包括有選擇地修改替換項的行尺寸。
6.根據權利要求5的數據處理系統,其中預取控制電路從主設備接收數據尺寸指示及突發長度指示,并且基于該數據尺寸指示及該突發長度指示有選擇地修改替換項的行尺寸。
7.根據權利要求4的數據處理系統,其中預取緩沖器包括多個行及狀態字段,該多個行的每一行具有狀態字段中的相應一個。
8.根據權利要求7的數據處理系統,其中每一狀態字段包含地址標記字段、指示預取緩沖器中的相應行不是有效的無效字段、指示預取緩沖器中的相應行已經響應前一突發讀請求而被提供的已用字段、以及指示預取緩沖器中的相應行已經響應前一非突發讀請求而被提供的有效字段。
全文摘要
存儲器控制器(32)及其方法針對不同突發支持的多個總線主設備(12、14、16)和具有不同特性的多個存儲器之間的接口而動態地配置預取緩沖器(30)。基于存儲器控制器從總線主設備(12、14、16)之一接收讀請求,預取緩沖器(30)的至少一部分的行尺寸被修改。最優替換預取緩沖器行的自適應方法利用劃分優先級的狀態(狀態)字段信息以確定哪個緩沖器行要替換。
文檔編號G06F12/00GK1809817SQ200480017269
公開日2006年7月26日 申請日期2004年6月18日 優先權日2003年6月20日
發明者阿夫扎爾·M·瑪利克, 威廉姆·C·莫耶 申請人:飛思卡爾半導體公司