專利名稱:用于調度數據請求的服務的存儲器控制器、方法和系統的制作方法
技術領域:
本發明 一般涉及計算機存儲器系統,并且特別涉及訪問計算機存儲器 系統中的數據。更特別地,本發明涉及調度對計算才聘儲器系統中的存儲 器數據的訪問。
背景技術:
在數據處理系統中,對存儲在存儲器中的數據(存儲器數據)的請求 被存儲器控制器接收,其中,該存儲器控制器控制對所述存儲器數據的訪問。在完全緩沖雙列直插存儲器模塊(FBDIMM )存儲器子系統中,當特 定數據項通過所述存儲器控制器被請求時,命令分組被(經由串行信令) 沿緩沖器模塊鏈向下發送,直到該分組到達連接到包含所請求數據的動態 隨機存取存儲器(DRAM)芯片的緩沖器芯片。所述緩沖器模塊通常經由基于并行雙倍數據速率(DDR)的接口互連。 所述緩沖器芯片使用DRAM協議來訪問所述數據。所述緩沖器被稱為 AMB (高級存儲器緩沖器)。AMB被設計為僅響應于存儲器控制器命令 采取動作。AMB在沒有對在基于并行DDR的接口上的DRAM設備的任 何更改的情況下基于FBDIMM接口遞送來自存儲器控制器的DRAM命 令。DRAM芯片是具有以各種成本可用的許多速度等級的容量非常高的 部分。在存儲器控制器處接收來自DRAM芯片的數據的時間延遲(即等 待時間)取決于所述部分的速度級另'J/等級。同樣地,所述存儲器控制器可 見的時間延遲的另 一組成部分是所述命令分組到達目的地緩沖器芯片以及 一旦該緩沖器芯片已從所迷DRAM芯片獲得數據時該緩沖器芯片發送所請求數據所花費的時間。通過FBDIMM技術,存儲器控制器與DRAM芯片之間的信令接口被 拆分成兩個獨立的信令接口,其中,該兩個接口之間具有緩沖器。所述緩 沖器與DRAM芯片之間的第一接口支持DDR2 (DDR2是第二代DDR接 口標準,其中,DDR是一種類型的同步動態隨機存取存儲器(SDRAM) 存儲器訪問)。然而,存儲器控制器與所述緩沖器之間的第二接口是點到 點的串行接口。雙倍數據速率同步動態隨機存取存儲器(DDR SDRAM )經由在時鐘 信號的上升和下降沿都傳輸數據而達到比之前技術(單一數據速率(SDR) SDRAM)更高的帶寬。在不增大前端總線的頻率的情況下,所述更高帶 寬幾乎使傳輸速率加倍。由此,100 MHz DDR系統當相比于等價SDR SDRAM時具有200 MHz的有效時鐘速率。通過一次8字節地被傳輸的數 據,DDR RAM給出(存儲器總線時鐘速率)x2(對于雙工速率)x8(被 傳輸的字節的數量)的傳輸速率。由此,通過100 MHz的總線頻率, DDR-SDRAM給出1600兆字節每秒(MB/s )的最大傳輸速率(即DDR 1600 速度)。由于FBDIMM接口基于串行差分信令(類似于串行高級技術附件 (ATA)、串行小型計算機系統接口 (SCSI)、外圍計算機互連(PCI) Express等),所以存儲器控制器能夠支持許多代的基于FBDIMM技術的 部件。作為新的存儲器體系結構的FBDIMM技術解決了容量和帶寬的擴 展需求,并且使存儲器能夠與企業平臺中的處理器和I/O改進并駕齊驅。在FBDIMM存儲器子系統中,存在兩種可能的等待時間模式一一固 定的和可變的。在固定等待時間模式中,緩沖器芯片在所述緩沖器芯片接 近存儲器控制器時持有數據。緩沖器芯片還在所述緩沖器芯片所附加到的 DRAM比所述鏈中的其它緩沖器芯片更快時持有數據。所述緩沖器芯片持 有數據從而使得存儲器控制器可見的總延遲對于所有數據相同。使用恒定 總延遲的優點是該恒定總延遲極大簡化了存儲器控制器的設計。然而,缺 點是所有存儲器請求被延遲以匹配最慢或最遠DRAM的延遲。相反,可變延遲允許每個緩沖器芯片盡可能快地返回數據。其優點當然是每個數據 項以最少可能時間被訪問。然而其缺點是,由于所有返回數據必須通過同 一緩沖器芯片鏈傳遞,所以下述負擔被放置到存儲器控制器上,所述負擔為,以當從不同DRAM返回數據時避免總線沖突的方式安排請求的時間。 發明內容所公開的是一種用于使用可變等待時間模式在完全緩沖雙列直插存儲 器模塊(FBDIMM)存儲器子系統中高效調度數據請求的服務的方法和系 統。高速集成電路包含一種調度算法,該算法預計算(經由基于并行雙倍 數據速率(DDR)的接口 )連接到多個緩沖器芯片的動態隨機存取存儲器 (DRAM )數據的返回時間參數。所述返回時間參數從存儲器控制器發送 用于從各個存儲器位置檢索數據的命令分組與在存儲器控制器處接收所請 求的數據之間的時間間隔的所有可能值的匯集。所述時間間隔的每個可能 值^皮表述為二進制向量,其中, 一位為"打開"(即,皮i殳為"1")。所述 算法將一組返回時間向量存儲在表中,以便當存儲器訪問請求被接收時被所述存儲器控制器使用。對于每個所接收的數據請求,所述存儲器控制器經由使用關聯于(連接到特定緩沖器的DRAM中的)所請求DRAM數據的存儲器地址的索引 來檢索合適的返回時間向量。所述調度算法還維護表示所有當前執行的請 求的返回時間向量的匯集(經由邏輯或運算)的歷史向量。每個所接收請 求(即,正等待執行的請求)的返回時間向量被與所述歷史向量比較(經 由邏輯與運算),以便確定該所接收請求是否呈現與已在執行的請求的總 線沖突。在一個實施例中,總線沖突由在邏輯與運算之后產生的向量中的 任意"1"位的出現來標識。所述調度算法計算這樣的得分,該得分指示在給定如由所述歷史向量 指示的數據的已調度返回的情況下,相比于其它請求,對每個等待的請求 在下一調度周期時的調度有多么好地保存了帶寬。經由利用每個請求的所 述得分,所述調度算法以在避免總線沖突的同時保存盡可能多的數據總線帶寬的順序重排序和發出請求。當請求被所述存儲器控制器發出(執行) 時,所述調度算法更新所述歷史向量以反映該新被發出的請求被包括在所 述執行請求集合中。在以下詳細寫出的描述中,本發明的以上和附加目的、特征和優點將 變得顯而易見。
經由參考以下當參考附圖閱讀時對說明性實施例的詳細描述,本發明 其自己以及其優選使用模式、進一步目的和優點將被最好地理解,在附圖中圖1示出了在其中本發明的特征可以被有利地實現的數據處理系統的 框圖;圖2示出了 FBDIMM存儲器子系統;圖3示出了實現調度算法的電路的框圖表示;圖4示出了根據本發明的說明性實施例的用于對一組所接收數據請求 的總線沖突的確定以及向量和與得分的計算的向量表;式運轉的存儲器系統中重排序數據請求的算法所完成的過程的流程圖;以 及圖6是示出根據本發明的說明性實施例的調度算法的測試結果的圖。
具體實施方式
本發明提供一種用于使用可變等待時間模式在完全緩沖雙列直插存儲 器模塊(FBDIMM)存儲器子系統中高效調度數據請求的服務的方法和系 統。高速集成電路包含一種調度算法,該調度算法預計算(經由基于并行 雙倍數據速率(DDR)的接口 )連接到多個緩沖器芯片的動態隨才踏取存 儲器(DRAM)數據的返回時間參數。所述返回時間參數是從所述存儲器 控制器發送用于從各個存儲器位置檢索數據的命令分組與在所述存儲器控制器處接收所請求的數據之間的時間間隔的所有可能值的匯集。所述時間 間隔的每個可能值被表述為二進制向量,其中, 一位為"打開"(即被設 為"1")。所述算法將一組返回時間向量存儲在表中,以便當存儲器訪問 請求被接收時被所述存儲器控制器使用。對于每個所接收的數據請求,所述存儲器控制器經由使用關聯于(連接到特定緩沖器的DRAM中的)所請求DRAM數據的存儲器地址的索引 來檢索合適的返回時間向量。所述調度算法還維護表示所有當前執行的請 求的返回時間向量的匯集(經由邏輯或運算)的歷史向量。每個所接收請 求(即,正等待執行的請求)的返回時間向量被與所述歷史向量比較(經 由邏輯與運算),以便確定該所接收請求是否呈現與已在執行請求的總線 沖突。在一個實施例中,總線沖突由在邏輯與運算之后產生的向量中的任 意"1"位的出現來標識。所述調度算法計算這樣的得分,該得分指示在給定如由所述歷史向量 指示的數據的已調度返回的情況下,相比于其它請求,對每個等待的請求 在下一調度周期時的調度有多么好地保存了帶寬。經由利用每個請求的所 述得分,所述調度算法以在避免總線沖突的同時保存盡可能多的數據總線 帶寬的順序重排序和發出請求。當請求被所述存儲器控制器發出(執行) 時,所述調度算法更新所述歷史向量以反映該新被發出請求被包括在執行 請求集合中。在下面對本發明的示例性實施例的詳細描述中,在其中本發明可以被 實現的特定示例性實施例被充分詳細地描述,以便使本領域的技術人員能 夠實現本發明,并且應當理解,其它實施例可以被使用,以及在不脫離本發明的精神或范圍的情況下,邏輯、體系結構、程序、機械、電氣和其它 改變可以被作出。以下詳細描述因此不在限制性意義上被理解,并且本發 明的范圍僅由所附權利要求定義。在附圖的描述中,類似單元被提供與之前圖的那些單元相類似的名稱 和標號。在后面的附圖在不同上下文中使用所述單元或使用具有不同功能 的所述單元的情況下,所述單元被提供表示圖號的不同前導數字(例如用于圖1的lxx和用于圖2的2xx)。被指派給所述單元的特定數字只為了 輔助本說明書而^f皮提供,并且不意味著暗示對本發明的任意限制(結構的 或功能的)。還應當理解,特定參數名稱的使用僅作為示例被使用,并且不意味著 暗示對本發明的任意限制。本發明由此可以不受限制地^f吏用用于描述以上 參數的不同命名/術語來實現?,F在參考附圖,圖1示出了在其中本發明的特征可以被有利地實現的 基本數據處理系統的框圖表示。DSP 100包括連接到系統總線/互連102的 處理器101和存儲器106??刂茖Υ鎯ζ?06的訪問的是也連接到系統 總線/互連102的存儲器控制器105。存儲器控制器105包括使存儲器控制 器105能夠控制對存儲在存儲器106中的存儲器數據的訪問(即檢索和存 儲)的硬件和軟件邏輯。本領域的普通技術人員將理解,圖1中所示的硬件和基本配置可以改 變。所示的示例不意味著暗示對本發明的體系結構限制。圖l中所示的數 據處理系統例如可以是運行高級交互式執行(AIX)操作系統或LINUX 操作系統的紐約Armonk的國際商業機器公司的產品IBM eServer pSeries 系統。本發明的各個特征作為存儲器控制器105中的固件代碼和/或邏輯祐: 提供。在所述固件代碼中有用于提供存儲器控制器105與存儲器部件之 間的串行信令功能的代碼、用于使DRAM協議連接能夠訪問存儲器數據 的代碼、以及更專用于本發明的用于使能下面描述的可變等待時間調度特 征的代碼。為簡單起見,使能所述可變等待時間調度特征的代碼和邏輯的 集合體這里被稱為可變等待時間調度工具。在實際實現中,所述可變等待等待時間模式運轉的存儲器子系統中被實現。由此,如由圖1所示,除上面描述的硬件部件之外,數據處理系統IOO 的存儲器控制器105包括一個或更多固件部件,其中,所述固件部件包括 可變等待時間調度(VLS)工具110。根據該說明性實施例,可變等待時間調度工具110使存儲器控制器105能夠完成一系列功能過程,所述功能 過程包括(1)預計算關聯于連接到所有可能的緩沖器芯片的存儲器數據 的檢索的等待時間;(2)維護歷史向量,該歷史向量提供關于關聯于當前 執行的請求的數據的已調度返回的信息;(3)從所述(預計算的)返回時 間參數檢索已接收數據請求的返回時間向量;(4 )確定在下一個調度周期 時將調度哪個已接收請求作為下一個執行請求;以及下面描述和由圖2-6 所示的其它特征/功能。圖2示出了 FBDIMM存儲器子系統。存儲器子系統200包括存儲器 控制器105,其中,該存儲器控制器105經由串行鏈路201連接到被示為 緩沖器集合202的緩沖器鏈。存儲器子系統200還包括被假設為FBDIMM 的許多動態隨機存取存儲器組203。緩沖器集合202中的緩沖器經由被示 為DDR2接口 204的基于并行雙倍數據速率(DDR)的接口連接到各自 DRAM組中的DRAM芯片。FBDIMM技術指示存儲器控制器105與DRAM芯片203之間的信令 接口,以及該接口被拆分為兩個獨立的信令接口,其中,所述兩個接口之 間具有稱為AMB (高級存儲器緩沖器)的緩沖器。所述緩沖器與DRAM 芯片之間的并行接口支持DDR2。然而,所述存儲器控制器與所述緩沖器 之間的接口是點到點串行接口 。存儲器子系統200由幾個電路組成,所述電路被精心設計為以實際上 在超高速集成電路芯片中實現的方式(在圖1的存儲器控制器105中的 VLS工具110中)包含調度算法。在優化所述調度算法的^L計時,當對以 下因素給予特別考慮時性能收益被最大化(l)邏輯門的數量;以及(2) 互連線的長度。可能根據所嵌入的技術而不同的這兩(2)個因素還可以降 低電路運轉的速度。幸好,所述調度算法當以DDR1600速度以可變等待 時間模式運轉時,在FBDIMM技術中理想地運轉(在設計中已將邏輯門 的數量和連接線的長度計算在內)。可以預期,處于特定速度和特定電路 技術中的更高性能解決方案可以由特定級別的重新設計(其也將邏輯門的 數量和連接線的長度計算在內)來理想地達到。存儲器子系統200以允許緩沖器集合202中的每個緩沖器芯片在可能 的最小時間內返回數據的可變等待時間模式運轉。為避免數據總線沖突以 及盡可能快和盡可能高效地執行請求,作為存儲器控制器(圖1 )中的VLS 工具IIO被實現的調度算法(其在圖3中示出)被提供。在存儲器訪問操 作期間,所述調度算法預計算關聯于所有數據請求的等待時間信息(即返 回時間信息),并且利用該信息來確定關聯于對存儲器數據的每個隨后請 求的等待時間。緩沖器集合202 (即緩沖器鏈)中的緩沖器芯片的數量指 示可能的不同等待時間值的數量。由此,例如,在所述鏈中具有八個緩沖 器的緩沖器集合指示存在八個可能的等待時間值。用于連接到每個緩沖器芯片的數據的返回時間信息(等待時間)^t^ 述為其中僅一位被打開(等價于二進制"1",以及被稱為'T,位)的返 回時間(二進制)向量。因此,具有僅一個'T,位的八個單一位分量的二 進制向量可以考慮全部八個可能的等待時間值。具有最小關聯等待時間的 數據請求(例如目標是最靠近存儲器控制器105的緩沖器芯片中的存儲器 數據的請求)具有這樣的關聯返回時間向量,其中,該向量的最左位(第 一分量)是"1"位。具有最大關聯等待時間的數據請求(即目標是最遠離 存儲器控制器105的緩沖器芯片中的存儲器數據的請求)具有這樣的關聯 返回時間向量,其中,該向量的最右位(例如,給定所述八緩沖器示例的 情況下的第八個分量)為'T,位。所述調度算法使用這些返回時間向量來匯集被選擇進行執行的請求的 歷史向量。所述調度算法然后使用該歷史向量來進一步確定由隨后,皮接收 的請求呈現的與當前執行的請求的潛在沖突。另外,所述調度算法執行"總 和"和"得分,,計算過程(其在圖4中示出)來選擇將在下一周期時開始 執行的"等待"請求,其中,在所述下一周期時,所選請求可以被調度。圖3示出了實現所述調度算法的各個功能的電路(或調度邏輯)的框 圖表示。調度邏輯300包括從一列已預計算值中查找/檢索的一組已按順序 排序的數據返回時間向量302,其中,DRAM基于所述一列已預計算值包 含用于在存儲器控制器105 (圖1)處接收的新請求301的數據。調度邏輯300還包括連接到并且為請求選擇器310提供控制輸入的沖突指示符向量 311和得分向量312。沖突指示符向量311和得分向量312都包含對應于所 述一組數據返回時間向量302的各自條目的參數值。沖突指示符向量311 和得分向量312的特定功能在下面被詳細說明。請求選擇器310為連接到數據返回時間向量302的多路復用器(MUX ) 309提供選擇輸入。還連接到數據返回時間向量302的是一組加法器303, 其用于提供用于所述返回時間向量的條目的列的總和。產生的總和的確定 和使用在下面對圖4的表的描述中被進一步詳細描述。調度邏輯300還包括一系列與邏輯(未示出),其中,所述與邏輯孚皮 用于將每個返回時間向量與當前歷史向量邏輯進行邏輯與。根據一個實施 例,所述邏輯與過程的結果被存儲在沖突向量311的各個條目中。完成這 些數據返回時間向量與所述歷史向量的邏輯與的目的以及從產生的總和向 量認識到的推論在下面參考圖4被描述。在調度邏輯300中,MUX 309經由輸入線路——耦合到數據返回時間 向量302的MUX入(MUXin)線路304接收作為輸入的向量條目,以及 MUX 309經由輸出線路_—每個耦合到一組邏輯或門308的第一輸入的 MUX出(MUXout)線路305提供作為輸出的所選擇的向量條目。所述一 組或門308的第二輸入連接到一系列鎖存器307的輸出。這些鎖存器包含 被稱為所述歷史向量(306)的之前選擇的累加。調度邏輯300進一步包括歷史向量306,該歷史向量306是與數據返 回時間向量302的大小相等數量的一組位。歷史向量306是通過上面與4皮 移出所述向量的最左位和經由接地被設為零的最右位的邏輯或過程的鎖存 輸出。該向量(306 )經由首先(從向量302)選擇對應于由請求選擇器310 在MUX 309選擇的特定已接收請求的特定數據返回時間向量被確定。一 旦所述特定數據返回時間向量被選擇,該向量條目被輸入到一組或門308, 并且被與存儲在所述一系列鎖存器307中的之前一組當前歷史向量的條目 進行邏輯或。所選數據返回時間向量與所述當前歷史向量的所述邏輯或然 后生成新的歷史向量306。通過調度邏輯300,新請求301在存儲器控制器105被接收。關聯于 該新請求301的返回時間向量被放入數據返回時間向量302中。由所接收 的請求呈現的與正在執行的請求的沖突在沖突指示符向量311中被標識。 加法器(303)被用于所述總和的計算。所述總和向量、沖突向量311和得 分向量312被用于確定作為將開始執行的下一個已調度請求的"等待"請 求。所述歷史向量提供被所有當前正在執行的請求所請求的數據的已匯集 返回時間信息。數據可以在多倍的"n"個時鐘周期中被返回,其中,n是指所述存儲 器控制器處的連續數據返回之間的時鐘周期的最小數量。在附圖和討論中, 值"n"還與從所述存儲器控制器發送命令分組與在所述存儲器控制器處 接收關聯數據之間的最短間隔成比例。該間隔對應于與檢索連接到最靠近 所述存儲器控制器的緩沖器芯片的數據和從較快DRAM檢索數據相關聯 的短延遲。取決于實際實現中涉及的時間延遲,該第一延遲可以大于連續 傳輸之間的時鐘周期的數量。由于該延遲被加到所有訪問,所以該延遲不 改變所述算法。請求選擇器310觸發MUX 309將所選請求的返回時間向 量(經由MUX出線路305)轉發到或門308的各個第一輸入。歷史向量 (306)(由鎖存器組307的輸出提供)進一步為各個或門300提供另一組 (第二)輸入。在調度邏輯300中,所述或門提供用于將所選請求的返回 時間向量并入歷史向量306的邏輯或運算。在下一個調度時鐘周期時,歷 史向量306 #_經由或門308用來自MUX出線路305的數據所更新。在歷 史向量306的所述更新期間,已過期向量分量(即最左位)4皮從歷史向量 306移除。現在轉向圖4,根據本發明的說明性實施例的用于沖突的確定以及一 組所接收數據請求的"總和"和"得分"的計算的向量表被示出。表400 包括被放置在表400的第一行中的歷史向量401。另外,表400包括數據 返回時間向量403。數據返回時間向量403對應于在存儲器控制器105處 所接收的各個請求。數據返回時間向量403按所述各個請求被接收的順序 被包括在表400中(在包含歷史向量401的行之下)。另外,表400包括沖突向量列407,其中,該沖突向量列407具有械匸沒為'T,的特定的所述 條目,其指示針對第一返回時間向量、第三返回時間向量和第六返回時間 向量的沖突。表400還包括總和向量405,該總和向量405是對應于所述 各個請求的總和的行。最后,表400還包括被示為單獨、獨立的向量的得 分向量列409,該得分向量列409是所示的"最后"或"最右"歹'J。如果所接收的請求在下一個調度周期之后開始執行,則所述調度算法 確定由每個所接收請求呈現的潛在沖突。在表400中,在與歷史向量401 相同的列中具有"1"位的返回時間向量403的分量對應于呈現與當前正在 執行的請求的沖突的各個所接收請求。所述調度算法經由對歷史向量401 和所述返回時間向量(對應于單一請求)實施邏輯與運算來確定由單一請求呈現的沖突。所述邏輯與運算對于每個所接收請求被重復。如果任何"r位出現在產生的向量中,則(通過實施所述邏輯與運算)對應產生的向量 指示沖突。如果存在沖突(如由產生的向量中'T,位的出現所指示的), 則沖突向量列407(或沖突向量311,圖3)中的對應沖突指示符被設為'T,。在表400中,針對第一返回時間向量、第三返回時間向量和第六返回 時間向量的沖突指示符通過被放置在沖突向量列407的合適位置中的"1" 位而全部闡明了沖突的出現。由此,第一所接收請求、第三所接收請求和 第六所接收請求的每個呈現與當前正在執行的請求的沖突,以及由此,這 三個請求中都不被選擇在下一個調度周期時開始執行??偤拖蛄?05中的總和按照如下被計算。對于第一列的列總和的計算 以"0"開始。對于除第一列之外的所有列,特定列總和的計算以來自前一 列的列總和開始。前一列總和(或對于第一列的"0")然后被加到對于其 列總和正被計算的列中的'T,位的數量。然后,只M (在"1"位的所 述加之后)不等于"0",則在加'T,位的數量之后,"1"被減去。所述 總和被包含在總和向量405中。所述總和給出了對于數據返回的已請求時 隙(包括已被調度的時隙)的聚類的指示。經由構造,關聯于每個請求的返回時間向量恰恰具有一個打開的位, 以及被存儲在得分列409中的每個請求的得分是(被標識為)在其中所述(返回時間)向量的唯一 "r位出現的列之前的列總和。在最左列中具有 "r位的請求只要這些請求沒有沖突則具有得分"o"。例如,第二個所 接收請求具有得分"o"并且是具有最低得分的請求,以及其不呈現沖突。由此,在表400中所示的示例中,請求2是被選擇在下一個調度周期時/在下一個調度周期期間開始執行的所接收請求。^使用所述得分準則的特定 請求選擇被作出,以便在避免沖突的同時最好地減少用于更高效地服務于 請求的所請求時隙的聚類(即平均分布所述請求的服務)。所述歷史向量和所述返回時間向量(關聯于所述已接收請求)的集合 在每個調度周期時被全部更新。特別地,所述調度算法經由首先合并所選請求的返回時間向量(到歷史向量401中)來開始更新歷史向量401。所 述更新經由歷史向量401與所述返回時間向量的邏輯或而被執行。所述調 度算法然后在所述調度周期時移除歷史向量401的已過期(第一)向量分 量(位)。該位移除對應于歷史向量401在表400中的左(時間)移位。 同樣,所選返回時間向量之下的數據返回時間向量的集合在從表400中的 所述集合移除所選請求和關聯的數據返回時間向量之后在表400中被向上 移位。該向上移位被提供,以便維護接收順序以及按照請求被接收的順序 接受任何新請求。圖5是示出根據本發明的說明性實施例的由用于在以可變等待時間模 式運轉的存儲器子系統中重排序數據請求以及用于避免沖突的算法完成的 過程的流程圖。所述過程在方框501處開始,在此處,包含所述調度算法 的高速集成電路預計算連接到所有可能的DRAM緩沖器芯片的數據的返 回時間數據。連接到每個緩沖器芯片的數據的所述返回時間信息械束述為 其中僅一位被打開(等價于二進制"1",并且被稱為"1"位)的二進制 向量。當數據可以以最少量時間被返回時,所述向量的最左位為所述'T, 位,以及當所述數據能夠以最大量時間作出返回時,則所述向量的最右位 為所述"1"位。連接到所有緩沖器芯片的數據的二進制返回時間向量的所 述已匯集集合可以被稱為返回時間向量的集合/集體,其被存儲在在每個存 儲器訪問請求的接收之后被所述存儲器控制器訪問的表中。在方框502處,所述調度算法維護所述歷史向量,其中,所述歷史向量指示返回所述存儲 器控制器的數據的預期到達時間。特別地,所述歷史向量在鎖存器鏈中被 維護,以及也被表述為二進制向量。如果沒有任何存儲器請求正被執行, 或如果所有之前的請求已被完成,則所述歷史向量為零向量。對所述存儲器控制器呈現的任何新請求關聯于數據返回時間向量(從所述已預計算的返回時間信息檢索),如方框503中所示。所述存儲器控 制器維護已由微處理器或其它數據消費者向所述存儲器控制器發出的多個 存儲器請求的列表。每個請求具有關聯的數據返回時間向量。這些返回時 間向量每個被故意表述為其中僅一位被打開的二進制向量,以便通過時間 尺度將所述返回時間向量與所述歷史向量對齊。該時間尺度的對齊允許所 述歷史向量^皮與特定訪問請求的返回時間向量邏輯上進行邏輯與,從而確 定該請求是否導致與已被發出的請求的沖突。為開始用于確定新請求是否呈現與正在執行的請求的任何調度沖突的 過程,如在方框504處所示,包含所述算法的電路在(針對每個新請求的) 每個數據返回時間向量與所述歷史向量之間實施邏輯與運算。在方框505 處,產生的向量,皮檢查以確定是否零向量被產生。在方框507處,所述算 法確定是否存在沖突(即所述邏輯與運算是否導致非零向量)。如果沖突 存在,則如在方框508處所示,所述算法確認該新請求確實呈現與正在執 行的請求的沖突,并且在所述沖突向量的合適空間中方丈入"1"。如果在方 框507處所述算法確定所述邏輯與運算的結果不指示沖突的出現(即所述 邏輯與運算導致零向量),則如在方框509處所示,"0" ^U欠入所述沖突 向量的合適空間中,以指示該新請求沒有呈現與正在執行的請求的沖突。在方框510處,在此處,所述算法計算每個列的總和,以及在方框511 處,所述算法確定每個請求的得分。如在方框512處所示,所述算法然后 選擇沒有沖突的具有最低得分的請求(或具有相同最低得分的多個請求中 的第一個被接收的請求)。用于總和與得分的計算的行和列的表格說明在 圖4中示出。所述總和與得分計算被用于在"保存"盡可能多的帶寬的同時經由重排序請求而在較短時間空間中高效服務于更大量的請求。保存帶寬是指可 用帶寬的高效使用,即在避免數據總線沖突的同時具有最小帶寬浪費。為達到帶寬使用的理論最大限制,數據每n個周期被返回,即數據占用總線 上的每個可能的時隙。所述重排序過程(或請求)最大化了利用每個可用 機會或可用時隙用于在所述存儲器控制器與所述緩沖器芯片之間發送數據 的能力。為考慮執行的開始以及為跟蹤所選請求的返回時間,在方框513處, 所述算法在對應于所選請求的數據返回時間向量與所述歷史向量之間實施 邏輯或運算。如在方框514處所示,所述歷史向量在用于下一總和與得分 計算之時的調度周期時被更新。另外,如在方框515處所示,所選請求向 量之下的所有數據返回時間向量在所選向量被從所述表移除后被向上移位 一個表行。所述向量在所述表中的移位對于在調度周期時更新所述向量是 必要的。如在方框516處所示,任意新向量/新請求被添加到所述向量/請 求的表/矩陣的結尾,以及所述過程在方框517處結束。圖6示出了被編碼為測試根據本發明的說明性實施例的調度算法的C 語言程序的結果的圖。圖600包括吞吐量軸601和配置軸602。圖600示 出了針對1000個不同存儲器配置的、對于整齊請求排序相對于由所述調度 算法產生的排序的、按照總共可能總線帶寬的百分比來測量的吞吐量。每 個實驗通過1000個隨機請求被運行,以及總共吞吐量被測量。每個存儲器 配置包括按不同順序被插入FBDIMM信道中的不同速度等級的DRAM。 在所有所述實驗中,總線吞吐量上的平均增益^皮觀測到,以及所述新算法在基本所有所述實驗中改進了吞吐量。在上面的流程圖(圖5)中,盡管所述過程步驟按特定順序被描述和 示出,但步驟的特定順序的使用不意味著暗示對本發明的任何限制。在不 脫離本發明的精神或范圍的情況下,可以關于步驟的順序作出改變。因此, 特定順序的使用不在限制性意義上被理解,以及本發明的范圍僅由所附權 利要求定義。最后,重要的是,盡管本發明的說明性實施例已經并且將繼續在安裝了軟件的完全功能計算機系統的上下文中被描述,但本領域的技術人員將 理解,本發明的說明性實施例的軟件方面能夠作為多種形式下的程序產品 被分布,以及本發明的說明性實施例不論用于實際實現所述分布的特定類 型的信號承栽媒體如何而同樣適用。信號承載媒體的示例包括例如軟盤、硬盤驅動器、CD ROM的可記錄類型媒體以及例如數字和模擬通信鏈路的 傳輸類型媒體。盡管本發明已參考優選實施例被特別示出和描述,但本領域的技術人 員將理解,在不脫離本發明的精神和范圍的情況下,可以在其中作出形式 和細節上的各種的改變。
權利要求
1.一種在具有多個緩沖器芯片的存儲器子系統中的存儲器控制器,其中,所述多個緩沖器芯片具有不同訪問等待時間,所述等待時間與從關聯于所述緩沖器芯片的存儲器部件檢索存儲器數據相關聯,所述存儲器控制器包括用于從返回時間信息的表中檢索已接收數據請求的返回時間向量的邏輯;以及用于確定地選擇將調度在下一個調度周期開始執行的下一個請求的邏輯,所述選擇是基于被與當前正在執行的請求的歷史向量比較的該下一個請求的數據返回時間向量,其中,所述下一個請求是不提供與所述當前正在執行的請求的數據總線沖突的請求,以及其導致所述緩沖器芯片與所述存儲器控制器之間的數據總線帶寬的最大使用率。
2. 根據權利要求l所述的存儲器控制器,進一步包括 用于提供下一個歷史向量的邏輯,所述提供是經由將所選用于在所述下一個調度周期時執行的所述下一個請求的返回時間向量與之前生成的所 有當前正在執行的請求的歷史向量進行邏輯或;用于位置移位所述之前生成的歷史向量以生成下一個歷史向量的邏 輯,其是經由(a)移除所述之前生成的歷史向量中對應于已完成其執行并 且將其數據返回所述存儲器控制器的請求的條目;以及(b)添加用于所 述下一個請求的新條目。
3. 根據權利要求l所述的存儲器控制器,其中,所述用于確定地選擇 的邏輯進一步包括用于預計算存儲在各個所述多個緩沖器芯片的存儲器部件中的存儲器 數據的返回時間信息的表的邏輯;用于以時間單位計算所述數據返回時間信息的邏輯; 用于將所述數據返回時間信息表述為其中單一位被打開為具有位值 "1"的多個二進制返回時間向量的邏輯;以及用于將第 一多個數據返回時間向量存儲在所述表中的邏輯。
4. 根據權利要求2所述的存儲器控制器,其中,所述用于提供的邏輯 進一步包括用于以零向量初始化所述歷史向量的邏輯;以及用于當已接收請求變為下一個正在執行請求時更新所述歷史向量的邏輯。
5. 根據權利要求l所述的存儲器控制器,其中,所述用于確定地選擇 的邏輯進一步包括用于確定何時已接收請求呈現與所述當前正在執行的請求的沖突的邏輯;用于從所述返回時間向量計算總和的向量的邏輯;以及 用于計算針對各個已接收請求被提供的所述數椐返回時間向量的每一 個的得分的邏輯。
6. 根據權利要求5所述的存儲器控制器,進一步包括用于標識具有最低得分并且其執行不呈現任何數據總線沖突的單一 已 接收請求的邏輯;當所述單一已接收請求具有所述最低得分時,用于選擇所述單一已接收請求作為下一個正在執行的請求進行調度的邏輯;以及當多于一個已接收請求具有所述相同的最低得分時,用于選擇所述已 接收請求中的較老請求以作為下一個正在執行的請求進行調度的邏輯。
7. 根據權利要求2所述的存儲器控制器,進一步包括用于實施與所述歷史向量和與所述下一個正在執行請求的數據返回時 間向量的邏輯或運算的邏輯,其中,所述邏輯或運算將所述返回時間向量 并入所述歷史向量中;以及用于從所述歷史向量移除已過期單元的邏輯。
8. —種在接收數據請求和發起對存儲器部件的數據訪問的存儲器控 制器中的方法,其中,所述存儲器部件經由具有不同訪問等待時間的多個 緩沖器芯片可訪問,所述方法包括從返回時間信息的表中檢索已接收數據請求的數據返回時間向量;以及確定地選擇將調度在下一個調度周期時開始執行的下一個請求,所述選擇是基于被與當前正在執行的請求的歷史向量比較的該下一個請求的數 據返回時間向量,其中,所述下一個請求是不提供與所述當前正在執行的請求的數據總線沖突的請求,以及其導致所述緩沖器芯片與所述存儲器控 制器之間的數據總線帶寬的最大使用率。
9. 根據權利要求8所述的方法,進一步包括提供下一個歷史向量,其中,所述提供是經由將被選擇用于在所述下 一個調度周期時執行的所述下一個請求的返回時間向量與之前生成的所有 當前正在執行的請求的歷史向量進行邏輯或;位置移位所述之前生成的歷史向量以生成所述下一個歷史向量,其是 經由(a )移除所述之前生成的歷史向量中對應于已完成其執行并且將其數 據返回所述存儲器控制器的請求的條目;以及(b)添加用于所述下一個 請求的新條目。
10. 根據權利要求8所述的方法,其中,所述確定地選擇進一步包括 預計算存儲在各個所述多個緩沖器芯片的存儲器部件中的存儲器數據的返回時間信息的表;以時間單位計算所述返回時間信息;將所述返回時間信息表述為其中單一位被打開為具有位值'T,的多個 二進制返回時間向量;將第 一多個數據返回時間向量存儲在所述表中; 以零向量初始化所述歷史向量;以及當所述已接收請求變為所述下一個正在執行的請求時,更新所述歷史 向量。
11. 根據權利要求9所述的方法,其中,所述確定地選擇進一步包括 確定何時已接收請求呈現與所述當前正在執行的請求的沖突; 從所述返回時間向量計算總和的向量;以及計算針對各個已接收請求被提供的所述返回時間向量的每一個的得分。
12. 根據權利要求ll所述的方法,進一步包括 標識具有最低得分并且其執行不呈現任何數據總線沖突的單一已接收請求;當所述單一 已接收請求具有所述最低得分時,選擇所述單一 已接收請 求作為所述下一個正在執行的請求進行調度;以及當多于一個已接收請求具有所述相同的最低得分時,選擇所述已接收 請求中的較老請求以作為所述下一個正在執行的請求進行調度。
13. 根據權利要求9所述的方法,進一步包括實施與所述歷史向量和與所述下一個正在執行的請求的所述數據返回 時間向量的邏輯或運算,其中,所述邏輯或運算將所述數據返回時間向量 并入所述歷史向量中;以及從所述歷史向量移除已過期單元。
14. 一種數據處理系統,其包括處理部件,其生成數據請求并且發出針對數據返回的數據請求;耦合到所述處理部件的存儲器子系統,所述存儲器子系統帶有具有不 同訪問等待時間的多個緩沖器芯片,所述訪問等待時間與從關聯于所述緩 沖器芯片的存儲器部件檢索存儲器數據相關聯;以及關聯于所述存儲器子系統的存儲器控制器,所述存儲器控制器具有用于預計算存儲在各個所述多個緩沖器芯片的存儲器部件中的存儲器 數據的返回時間信息的表的邏輯;用于以時間單位計算所述返回時間信息的邏輯;用于將所述返回時間信息表述為其中單一位被打開為具有位值"1"的 多個二進制返回時間向量的邏輯;以及用于將第 一多個數據返回時間向量存儲在返回時間信息的表中的邏輯;用于從所述返回時間信息的表中檢索已接收數據請求的數據返回時間向量的邏輯;以及用于確定地選擇將調度在下一個調度周期時開始執行的下一個請求的 邏輯,所述選擇是基于被與當前正在執行的請求的歷史向量比較的該下一 個請求的數據返回時間向量,其中,所述下一個請求是不提供與當前正在 執行的請求的數據總線沖突的請求,以及其導致所述緩沖器芯片與所述存 儲器控制器之間的數據總線帶寬的最大使用率。
15. 根據權利要求14所述的數據處理系統,其中,所述存儲器控制器 進一步包括用于提供下一個歷史向量的邏輯,所述提供是經由將所選用于在所述 下一個調度周期時執行的所述下一個請求的數據返回時間向量與之前生成 的所有當前正在執行的請求的歷史向量進行邏輯或;用于位置移位所述之前生成的歷史向量以生成下一個歷史向量的邏 輯,其是經由(a)移除所述之前生成的歷史向量中對應于已完成其執行并且將其數據返回所述存儲器控制器的請求的條目;以及(b)添加用于所 述下一個請求的新條目。
16. 根據權利要求15所述的數據處理系統,其中,所述用于提供的邏 輯進一步包括用于以零向量初始化所述歷史向量的邏輯;以及 用于當所述已接收請求變為所述下一個正在執行的請求時更新所述歷 史向量的邏輯;
17. 根據權利要求14所述的數據處理系統,其中,所述用于確定地選 擇的邏輯進一步包括用于確定何時已接收請求呈現與所述當前正在執行的請求的沖突的邏輯;用于從所述數據返回時間向量計算總和的向量的邏輯;以及 用于計算針對各個已接收請求被提供的所述數據返回時間向量的每一 個的得分的邏輯。
18. 根據權利要求14所述的數據處理系統,其中,所述存儲器控制器進一步包括用于標識具有最低得分并且其執行不呈現任何數據總線沖突的單 一 已 接收請求;當所述單一 已接收請求具有所述最低得分時,用于選擇所述單一 已接 收請求作為所述下一個正在執行的請求進行調度的邏輯;以及當多于一個已接收請求具有所述相同的最低得分時,用于選擇所述已 接收請求中較老請求以作為所述下一個正在執行的請求進行調度的邏輯。
19. 根據權利要求14所述的數據處理系統,其中,所述存儲器控制器 進一步包括用于實施與所述歷史向量和與所述下一個正在執行的請求的所述數據 返回時間向量的邏輯或運算的邏輯,其中,所述邏輯或運算將所述數據返 回時間向量并入所述歷史向量;以及用于從所述歷史向量移除已過期單元的邏輯。
20. 根據權利要求14所述的數據處理系統,其中,所述存儲器子系統 以可變等待時間模式運轉。
全文摘要
一種用于在FBDIMM存儲器子系統中使用可變等待時間模式調度數據請求的服務的方法和系統。一種調度算法預計算連接到所有DRAM緩沖器芯片的數據的返回時間數據,并且將該返回時間數據存儲在表中。所述返回時間數據被表述為其中每個向量中一位等于“1”的一組數據返回時間二進制向量。對于每個已接收數據請求,所述存儲器控制器檢索合適的返回時間向量。另外,所述調度算法利用表示所有正在執行的請求的數據返回時間向量的匯集的已更新歷史向量來確定該已接收請求是否呈現與所述正在執行的請求的沖突。經由計算和利用每個請求的得分,所述調度算法重排序和調度所選請求的執行,從而在避免沖突的同時保存盡可能多的數據總線帶寬。
文檔編號G06F12/08GK101256539SQ200810082808
公開日2008年9月3日 申請日期2008年2月28日 優先權日2007年3月1日
發明者J·J·小艾倫, M·R·特朗布利, S·K·詹金斯 申請人:國際商業機器公司