專利名稱:通過將所檢索的數(shù)據(jù)直接寫入存儲(chǔ)器的存儲(chǔ)控制器來最佳使用緩沖器空間的制作方法
技術(shù)領(lǐng)域:
本發(fā)明大體來說涉及存儲(chǔ)器技術(shù),且更具體來說涉及將檢索的數(shù)據(jù)直接寫入存 儲(chǔ)器的存儲(chǔ)控制器對(duì)緩沖器空間的最佳使用。
背景技術(shù):
存儲(chǔ)控制器涉及控制對(duì)非易失性存儲(chǔ)媒體的讀取及寫入請(qǐng)求的組件(或單元)。
所述請(qǐng)求一般是從中央處理器(例如,中央處理單元CPU)接收,且存儲(chǔ)控制器與
非易失性存儲(chǔ)媒體連接以處理每一請(qǐng)求。在讀取請(qǐng)求的情況下,存儲(chǔ)控制器從非易 失性存儲(chǔ)媒體檢索數(shù)據(jù)。
一般要求存儲(chǔ)控制器將檢索的數(shù)據(jù)寫入存儲(chǔ)器中。例如,CPU可指示將包含于
文件中的數(shù)據(jù)檢索及存儲(chǔ)于操作為主存儲(chǔ)器(以與控制存儲(chǔ)器區(qū)分,下文提及)的
隨機(jī)存取存儲(chǔ)器(RAM)中。
可進(jìn)一步請(qǐng)求存儲(chǔ)控制器直接寫入存儲(chǔ)器中。"直接"一般暗示存儲(chǔ)控制器將 數(shù)據(jù)存儲(chǔ)在RAM中而不針對(duì)每一存儲(chǔ)操作中斷CPU。作為圖解說明,在直接存儲(chǔ) 器存取(DMA)操作中,存儲(chǔ)控制器僅在完成存儲(chǔ)整個(gè)數(shù)據(jù)之后中斷CPU。
緩沖器空間通常提供于存儲(chǔ)控制器中(或與其相關(guān)聯(lián))以支持各種讀取/寫入請(qǐng) 求。緩沖器空間提供用于臨時(shí)存儲(chǔ),且允許即使在速度不匹配及資源不可用(例如, 總線)的情況下仍依序轉(zhuǎn)移數(shù)據(jù)以將數(shù)據(jù)存儲(chǔ)在目標(biāo)主存儲(chǔ)器中。緩沖器空間通常 實(shí)施為RAM,且稱作控制器存儲(chǔ)器。
一般需要最佳使用緩沖器空間以使得可以有效支持各種操作(更好的通過量、 減少的延時(shí)等中的一者或一者以上),即使具有較小的緩沖器/存儲(chǔ)器大小。
發(fā)明內(nèi)容
本發(fā)明的一個(gè)實(shí)施例涉及存儲(chǔ)控制器,其控制對(duì)多個(gè)輔助存儲(chǔ)單元的存取 請(qǐng)求,所述存儲(chǔ)控制器包括緩沖器、及用以接收指定來自第一輔助存儲(chǔ)單元的 第一數(shù)據(jù)序列的第一讀取請(qǐng)求及指定來自第二輔助存儲(chǔ)單元的第二數(shù)據(jù)序列 的第二讀取請(qǐng)求的控制單元,所述控制單元分別響應(yīng)于所述第一讀取請(qǐng)求及第 二讀取請(qǐng)求來檢索來自第一輔助存儲(chǔ)單元的第一數(shù)據(jù)序列及來自第二輔助存 儲(chǔ)單元的第二數(shù)據(jù)序列,并將所述第一數(shù)據(jù)序列及第二數(shù)據(jù)序列二者存儲(chǔ)在所
述緩沖器中。
本發(fā)明的另一實(shí)施例涉及一系統(tǒng),其包括存儲(chǔ)器;多個(gè)輔助存儲(chǔ)單元; 處理單元,其發(fā)出指定來自第一輔助存儲(chǔ)單元的第一數(shù)據(jù)序列的第一讀取請(qǐng)求 及指定來自第二輔助存儲(chǔ)單元的第二數(shù)據(jù)序列的第二讀取請(qǐng)求,其中該第一輔 助存儲(chǔ)單元及第二輔助存儲(chǔ)單元包含于所述多個(gè)輔助存儲(chǔ)單元中;存儲(chǔ)控制 器,其處理所述第一讀取請(qǐng)求及第二讀取請(qǐng)求,所述存儲(chǔ)控制器包括緩沖器及 用以接收所述第一讀取請(qǐng)求及第二讀取請(qǐng)求的控制單元,所述控制單元分別響 應(yīng)于第一讀取請(qǐng)求及第二讀取請(qǐng)求來檢索來自第一輔助存儲(chǔ)單元的第一數(shù)據(jù) 序列及來自第二存儲(chǔ)單元的第二數(shù)據(jù)序列,并將所述第一數(shù)據(jù)序列及第二數(shù)據(jù) 序列二者存儲(chǔ)在緩沖器中。
本文將參照下列附圖來描述實(shí)例性實(shí)施例,所述附圖簡(jiǎn)要地描述如下。 圖1是圖解說明其中可實(shí)施本發(fā)明的數(shù)個(gè)特征的實(shí)例性系統(tǒng)的圖示。 圖2是圖解說明實(shí)施例中的存儲(chǔ)控制器細(xì)節(jié)的框圖。
圖3A及3B是顯示其中在一個(gè)實(shí)施例中由請(qǐng)求數(shù)據(jù)的處理器指定位置描述符的 方式的圖示。
圖4是圖解說明其中在本發(fā)明實(shí)施例中可減小由存儲(chǔ)控制器使用的緩沖器的大
小的方式的流程圖。
圖5A是圖解說明實(shí)施例中的存儲(chǔ)控制器中的緩沖器細(xì)節(jié)的圖示。
圖5B是圖解說明其中在實(shí)施例中指定存儲(chǔ)控制器中緩沖器中的數(shù)據(jù)的控制信
息的方式的圖示。
圖6是用于圖解說明在一個(gè)實(shí)施例中在數(shù)據(jù)從輔助存儲(chǔ)器轉(zhuǎn)移到目標(biāo)存儲(chǔ)器期 間的事件順序的序列圖。
在圖示中,相同參考編號(hào)一般指示相同的、功能類似、及/或結(jié)構(gòu)類似的元件。 元件首先出現(xiàn)的圖示由對(duì)應(yīng)參考數(shù)字中的最左數(shù)位指示。
具體實(shí)施方式
1. 總述
根據(jù)本發(fā)明一方面提供的存儲(chǔ)控制器使用單個(gè)緩沖器來存儲(chǔ)從多個(gè)輔助存儲(chǔ)單 元檢索的數(shù)據(jù)。在實(shí)施例中,提供于存儲(chǔ)控制器中的控制單元設(shè)計(jì)有將從任一輔助 存儲(chǔ)單元檢索的數(shù)據(jù)元素存儲(chǔ)在緩沖器中的一組(一個(gè)或一個(gè)以上)存儲(chǔ)器位置中
的每一者內(nèi)的靈活性。緩沖器空間可最佳使用,且因此可降低緩沖器大小需求。
本發(fā)明的一方面提供用于通過在可能需求對(duì)應(yīng)信息之前預(yù)檢索位置描述符(其 指示目標(biāo)存儲(chǔ)器的位置,其中最后將檢索的數(shù)據(jù)元素存儲(chǔ)于目標(biāo)存儲(chǔ)器中)來進(jìn)行 進(jìn)一步最佳使用。在實(shí)施例中,存儲(chǔ)控制器向非易失性存儲(chǔ)器發(fā)出命令以提供在讀 取請(qǐng)求中請(qǐng)求的數(shù)據(jù)元素,并檢索僅一子組位置描述符。所述子組中的元件數(shù)量經(jīng)
選擇以在對(duì)應(yīng)數(shù)據(jù)元素可用于存儲(chǔ)之后立即確保位置描述符的可用性。檢索的位置 描述符還可以存儲(chǔ)在緩沖器中。
由于僅一子組位置描述符的檢索及存儲(chǔ),可降低緩沖器大小需求。這種需求當(dāng)
技術(shù)(例如,NCQ)準(zhǔn)許輔助存儲(chǔ)單元在發(fā)送關(guān)于較早請(qǐng)求的數(shù)據(jù)元素之前發(fā)送關(guān)
于較晚請(qǐng)求的數(shù)據(jù)元素時(shí)可能是重要的,且需要存儲(chǔ)控制器檢索所有未決請(qǐng)求的位
置描述符。
由于提前檢索位置描述符,則將數(shù)據(jù)緩存在存儲(chǔ)控制器中的持續(xù)時(shí)間可減少, 從而除了以較低延時(shí)完成數(shù)據(jù)轉(zhuǎn)移之外進(jìn)一步降低緩沖器大小需求,而不被存儲(chǔ)描 述符的即時(shí)不可用性妨礙。位置描述符的這種及時(shí)可用性在使用單個(gè)緩沖器存儲(chǔ)從 不同的輔助存儲(chǔ)單元檢索的數(shù)據(jù)時(shí)可能是重要的,因?yàn)楣蚕砭彌_器可能經(jīng)設(shè)計(jì)以具 有較小大小,且釋放位置以用于存儲(chǔ)關(guān)于其它請(qǐng)求的數(shù)據(jù)可能是必要的。
下文參照實(shí)例來描述本發(fā)明的數(shù)個(gè)方面以供圖解說明。應(yīng)了解,本文列舉各種 具體細(xì)節(jié)、關(guān)系及方法以提供對(duì)本發(fā)明的完全理解。然而,所屬技術(shù)領(lǐng)域的技術(shù)人 員將易于了解,本發(fā)明可在不具有所述一個(gè)或一個(gè)以上具體細(xì)節(jié)的前提下來實(shí)施, 或使用其它方法等來實(shí)施。在其它示例中,不詳細(xì)展示熟知結(jié)構(gòu)或操作以避免混淆 本發(fā)明的特征。此外,所述特征/方面可按各種組合來實(shí)行,盡管本文為簡(jiǎn)明起見僅 描述某些組合。
2.實(shí)例性系統(tǒng)
圖1是圖解說明其中可實(shí)施本發(fā)明的數(shù)個(gè)特征的實(shí)例性系統(tǒng)的圖示。圖中顯示 所述圖示含有中央處理單元(CPU 110)、存儲(chǔ)控制器120、主存儲(chǔ)器130、及輔助 存儲(chǔ)單元140A-140N。必須了解,典型的環(huán)境可含有各種其它組件(在類型及數(shù)量 兩方面),其并未顯示為與所述特征的理解相關(guān)。類似地,某些其它系統(tǒng)可含有較 少組件。圖1的每一組件均詳細(xì)描述如下。
主存儲(chǔ)器130可實(shí)施為隨機(jī)存取存儲(chǔ)器(RAM,例如動(dòng)態(tài)RAM—DRAM), 并存儲(chǔ)各種指令及數(shù)據(jù)。根據(jù)本發(fā)明的某些方面,由CPU IIO執(zhí)行的某些指令(例 如,代表用戶應(yīng)用程序)使得從輔助存儲(chǔ)單元檢索數(shù)據(jù)。代表操作系統(tǒng)的某些其它 指令可分配主存儲(chǔ)器130中的指定位置以存儲(chǔ)檢索的數(shù)據(jù)。某些其它指令的執(zhí)行使 得提供下文描述的其它特征。類似地,主存儲(chǔ)器130可存儲(chǔ)位置描述符(描述于下 文的部分中)以及存儲(chǔ)檢索的數(shù)據(jù)元素,如下文的部分中描述。
輔助存儲(chǔ)單元140A-140N中的每一者均含有非易失性存儲(chǔ)媒體,且可實(shí)施為(例 如)硬盤、CD-ROM等。輔助存儲(chǔ)單元140A-140N—般在其中含有控制器單元以協(xié) 調(diào)包含數(shù)據(jù)的各選項(xiàng)(例如,讀取、寫入、數(shù)據(jù)轉(zhuǎn)移到存儲(chǔ)控制器120),且可以與 所屬技術(shù)中熟知的對(duì)應(yīng)協(xié)議/標(biāo)準(zhǔn)(例如,SATA,串行先進(jìn)技術(shù)連接) 一起實(shí)施。
在串行技術(shù)的情形中,可在路徑124A上發(fā)送對(duì)字節(jié)序列的請(qǐng)求,且可針對(duì)所述
請(qǐng)求依序接收所請(qǐng)求字節(jié)(數(shù)據(jù)元素)。在一個(gè)實(shí)施例中,對(duì)于每一輔助存儲(chǔ)裝置 僅一個(gè)請(qǐng)求可以是待決的。然而,如果存在針對(duì)每一輔助存儲(chǔ)裝置而待決的多個(gè)請(qǐng)
求的支持(例如,使用NCQ、本地命令排隊(duì)),則關(guān)于每一請(qǐng)求的數(shù)據(jù)可繼續(xù)以相 同次序接收,如數(shù)據(jù)(以邏輯方式)存儲(chǔ)在輔助存儲(chǔ)裝置中的次序。
CPU 110可以代表一個(gè)或一個(gè)以上處理器單元,所述處理器單元執(zhí)行軟件指令 (例如,從主存儲(chǔ)器130檢索)。某些指令可發(fā)出請(qǐng)求以從輔助存儲(chǔ)單元檢索數(shù)據(jù)。 在實(shí)施例中,CPU IIO僅發(fā)出請(qǐng)求以轉(zhuǎn)移數(shù)據(jù)元素序列,且存儲(chǔ)控制器120產(chǎn)生對(duì) 所請(qǐng)求數(shù)據(jù)的轉(zhuǎn)移完成的信號(hào)中斷。應(yīng)了解,數(shù)個(gè)請(qǐng)求可在短的持續(xù)時(shí)間內(nèi)發(fā)出, 以使得許多請(qǐng)求由存儲(chǔ)控制器120處理。正被處理的請(qǐng)求可稱為待決請(qǐng)求。
存儲(chǔ)控制器120從CPU 110 (經(jīng)由路徑112)接收請(qǐng)求以讀取來自輔助存儲(chǔ)單元 140A-140N的數(shù)據(jù)元素序列,并向輔助存儲(chǔ)單元140A-140N發(fā)出對(duì)應(yīng)命令以提供所 請(qǐng)求數(shù)據(jù)元素。 一旦從輔助存儲(chǔ)單元檢索數(shù)據(jù),則存儲(chǔ)控制器120將所述數(shù)據(jù)轉(zhuǎn)移 到由從CPU接收的請(qǐng)求指定的相應(yīng)目標(biāo)存儲(chǔ)器。
在從輔助存儲(chǔ)單元接收數(shù)據(jù)與其后轉(zhuǎn)移到存儲(chǔ)器130之間,存儲(chǔ)控制器120需 要暫時(shí)存儲(chǔ)所述數(shù)據(jù)。
在一個(gè)現(xiàn)有實(shí)施例中,存儲(chǔ)控制器120針對(duì)在每一物理接口 (鏈路)124A-124N 上接收的數(shù)據(jù)分別含有一個(gè)緩沖器。這種方法導(dǎo)致更高聚合度的芯片上存儲(chǔ)器(在 所有緩沖器中),其可能由于諸如增加成本及晶片區(qū)域需求等原因而不合需要。
根據(jù)本發(fā)明一方面提供的存儲(chǔ)控制器克服某些這種缺點(diǎn),如下文進(jìn)一步詳細(xì)描述。
3.存儲(chǔ)控制器
圖2是圖解說明在本發(fā)明實(shí)施例中存儲(chǔ)控制器的細(xì)節(jié)的框圖。存儲(chǔ)控制器120 顯示為含有緩沖器210、控制器單元220、 FIFO 240A-240N及總線主控250。存儲(chǔ)控 制器120可以含有圖示中未顯示的與以下說明不相關(guān)的各種其它組件/塊。假設(shè)接收 指示將從輔助存儲(chǔ)單元140A檢索數(shù)據(jù)元素且將檢索的數(shù)據(jù)元素存儲(chǔ)在主存儲(chǔ)器130 中的讀取請(qǐng)求,來提供所述說明。然而,可指定不同的存儲(chǔ)單元及目標(biāo)存儲(chǔ)器而不 背離本發(fā)明各方面的范圍及精神。圖2的每一組件均詳細(xì)描述如下。
FIFO 240A-240N的每一者均提供用于在控制單元220將數(shù)據(jù)(經(jīng)由路徑 224A-224N從對(duì)應(yīng)的FIFO)移動(dòng)到緩沖器210之前經(jīng)由路徑124A-124N從對(duì)應(yīng)的輔 助存儲(chǔ)單元140A-140N接收的數(shù)據(jù)的暫時(shí)存儲(chǔ)。另外,每一 FIFO可存儲(chǔ)從輔助存 儲(chǔ)單元接收的任何狀態(tài)/控制信息,并向控制單元220提供相同信息。在以SATA協(xié) 議為背景提供的實(shí)施例中,如相關(guān)技術(shù)領(lǐng)域中熟知,每一FIFO均用于流控制目的以 滿足協(xié)議規(guī)范。例如,SATA要求存儲(chǔ)控制器在路徑124A上起動(dòng)接收流控制之后能 夠接收至少21個(gè)D字。此確保任一端口上的數(shù)據(jù)決不會(huì)由于獲得共享緩沖器210時(shí) 的可能仲裁延時(shí)而被丟棄。
控制單元220執(zhí)行各種操作以在路徑112與124A/124N之間協(xié)調(diào)數(shù)據(jù)轉(zhuǎn)移。確切地說,控制單元220可在路徑112上接收請(qǐng)求以檢索存儲(chǔ)在連接到任一路徑 124A-124N的存儲(chǔ)單元上的字節(jié)序列。所述字節(jié)序列可根據(jù)任一預(yù)指定慣例(例如, 根據(jù)所屬技術(shù)領(lǐng)域的技術(shù)人員熟知的高級(jí)主機(jī)控制器接口 (AHCI)標(biāo)準(zhǔn))來指定, 且一般由COU 110執(zhí)行的裝置驅(qū)動(dòng)器軟件提供。所述請(qǐng)求還指定目標(biāo)存儲(chǔ)器及所述 數(shù)據(jù)將要存儲(chǔ)在所述目標(biāo)存儲(chǔ)器中的位置,例如如下文各部分所述。
控制單元220在路徑124A-124N上向存儲(chǔ)單元發(fā)出對(duì)應(yīng)命令(例如,根據(jù)SATA 標(biāo)準(zhǔn))以將所請(qǐng)求數(shù)據(jù)檢索到對(duì)應(yīng)FIFO。然后,控制單元230將每一 FIFO中的數(shù) 據(jù)轉(zhuǎn)移到緩沖器210。控制單元220可存儲(chǔ)控制信息以及所述數(shù)據(jù)來協(xié)助將數(shù)據(jù)存儲(chǔ) 在目標(biāo)存儲(chǔ)器/位置中,如下文借助各實(shí)例在各部分中描述。
緩沖器210代表在將從路徑124A-124N接收的數(shù)據(jù)存儲(chǔ)在主存儲(chǔ)器120之前將 其暫時(shí)存儲(chǔ)的隨機(jī)存取存儲(chǔ)器。在實(shí)施例中,實(shí)施為SRAM的單個(gè)存儲(chǔ)器單元(具 有存儲(chǔ)器單元及存取電路的矩陣)用于存儲(chǔ)在所有路徑124A-124N上接收的數(shù)據(jù)。 所述SRAM與存儲(chǔ)控制器的其它組件一起實(shí)施為單個(gè)集成電路,且緩沖器210因此
在這種情形中被稱為"芯片上"。然而,替代實(shí)施例可使用支持單個(gè)緩沖器的多個(gè) 存儲(chǔ)器單元。
根據(jù)本發(fā)明的一方面,存儲(chǔ)器空間經(jīng)共享以使得所述存儲(chǔ)器位置的至少某些可 用于存儲(chǔ)在任一路徑124A-124N上檢索的數(shù)據(jù)。緩沖器空間可由于這種共享而被有 效利用。由于緩沖器空間的有效使用,這種共享可被認(rèn)為是可能的,同時(shí)避免性能 瓶頸和數(shù)據(jù)丟棄(溢流)。
總線主控250將緩沖器210中的數(shù)據(jù)轉(zhuǎn)移到主存儲(chǔ)器130。在實(shí)施例中,總線 主控250對(duì)存取總線112進(jìn)行仲裁,且然后使用DMA技術(shù)將緩沖器210的數(shù)據(jù)存儲(chǔ) 在存儲(chǔ)器130中。當(dāng)存儲(chǔ)完最后一數(shù)據(jù)元素后,總線主控250可以首先向CPU 110 發(fā)送中斷(指示數(shù)據(jù)轉(zhuǎn)移已完成)并放開對(duì)總線112的控制。
在實(shí)施例中,從輔助存儲(chǔ)單元檢索的數(shù)據(jù)存儲(chǔ)在目標(biāo)存儲(chǔ)器/位置中,如與從 CPU 110接收的命令相關(guān)聯(lián)的位置描述符所指定,并相應(yīng)地參照位置描述符來繼續(xù) 所述描述。
4.位置描述符
圖3A及3B分別代表控制單元220中的主存儲(chǔ)器及寄存器的一部分,且用于結(jié) 合圖1及2來圖解說明在實(shí)施例中由CPU 210將位置描述符上的信息提供給控制單 元220的方式。如上文提及,每一位置描述符均指示一目標(biāo)存儲(chǔ)器及其中的位置, 其中將數(shù)據(jù)元素的對(duì)應(yīng)塊寫入所述位置。
在實(shí)施例中,CPU 110將命令寫入控制單元220中的寄存器310中。在AHCI 標(biāo)準(zhǔn)中,位置描述符稱為物理區(qū)域描述符(PRD)且因此存儲(chǔ)器130用PRD表350 來顯示。在這種情況下,目標(biāo)存儲(chǔ)器可能多于一個(gè)存儲(chǔ)器單元,位置描述符也可以 指定存儲(chǔ)器單元中的指定一者(根據(jù)指定慣例)。
PRD 350A-350N可位于PRD表350內(nèi)的鄰近位置處。或者,PRD表本身可實(shí)
施為鏈接表,其中每一PRD (除了最后一個(gè))均含有鏈接表中的下一PRD的地址。
在實(shí)施例中,每一PRD (350A-350N)經(jīng)設(shè)計(jì)以包含存儲(chǔ)器單元130中的存儲(chǔ) 器塊的開始地址,以及所述塊的大小(存儲(chǔ)器位置數(shù)量),其中所述塊是存儲(chǔ)器中 存儲(chǔ)待讀取的一對(duì)應(yīng)子組字節(jié)序列的位置。在裝置驅(qū)動(dòng)器將讀取請(qǐng)求發(fā)送到存儲(chǔ)控 制器120之前,所述塊中的每一者可由執(zhí)行于圖1所示系統(tǒng)中的操作系統(tǒng)分配。
另外,CPU 110可設(shè)定一包含于控制單元220中的旗標(biāo)(未顯示),指示已做 出請(qǐng)求。作為響應(yīng),控制單元220讀取字段310的內(nèi)容,并在主存儲(chǔ)器130中檢索 對(duì)應(yīng)的命令報(bào)頭(字段320)。在支持NCQ技術(shù)的實(shí)施例中,可提供對(duì)應(yīng)于32個(gè)可 能的未決命令中的每一者的多達(dá)32個(gè)命令報(bào)頭。命令報(bào)頭320又含有命令表330的 地址(在此實(shí)例中是PRD表350)。
因此,所有PRD—起指定目標(biāo)存儲(chǔ)器及存儲(chǔ)器位置,以存儲(chǔ)設(shè)法從輔助存儲(chǔ)單 元檢索的數(shù)據(jù)元素。應(yīng)了解,對(duì)于最小化緩沖于存儲(chǔ)控制器中的數(shù)據(jù)元素的持續(xù)時(shí) 間并因此降低緩沖器空間需求,位置描述符的及時(shí)可用性可能是重要的。
在一個(gè)實(shí)施例中,控制單元可以檢索所有待決讀取請(qǐng)求的所有位置描述符。然 而,這種方法可能需要足量的緩沖器空間。所述緩沖器空間需求是在上文提及的諸 如NCQ等技術(shù)的情況下混合而成的。
本發(fā)明的一方面確保位置描述符的及時(shí)可用性,同時(shí)減小所需求的緩沖器大小, 如下文進(jìn)一步詳細(xì)描述。
5.檢索位置描述符
圖4是圖解說明其中根據(jù)本發(fā)明一方面來檢索及使用位置描述符的方式的流程 圖。僅出于圖解說明的目的,參照?qǐng)D1且關(guān)于存儲(chǔ)控制器120來描述所述流程圖。 然而,各種特征可在其它環(huán)境中(例如,具有或不具有上文參照?qǐng)D3所述的共享緩 沖器)且以其它組件來實(shí)施。
此外,以僅用于圖解說明的指定序列來描述所述步驟。在其它環(huán)境中、使用其 它組件及不同步驟序列的替代實(shí)施例也可以在不背離本發(fā)明若干方面的范圍及精神 的前提下來實(shí)施,如相關(guān)技術(shù)領(lǐng)域的技術(shù)人員將通過閱讀本文提供的揭示內(nèi)容而顯 而易見。所述流程圖開始于步驟401處,其中控制轉(zhuǎn)到步驟410。
在步驟410中,存儲(chǔ)控制器120接收請(qǐng)求以將所需的數(shù)據(jù)元素序列從存儲(chǔ)裝置 轉(zhuǎn)移到主存儲(chǔ)器,其中所述請(qǐng)求指定位置描述符位于何處。如上文提及,位置描述 符識(shí)別將所述數(shù)據(jù)存儲(chǔ)于何處(指定存儲(chǔ)器單元及其中的位置)。為借助實(shí)例進(jìn)行 說明,存儲(chǔ)控制器120可接收請(qǐng)求以將存儲(chǔ)于輔助存儲(chǔ)單元140A中的文件轉(zhuǎn)移到主 存儲(chǔ)器130。
任一預(yù)指定的慣例均可用于所述請(qǐng)求的格式(包含識(shí)別指定的輔助存儲(chǔ)單元、 其上的數(shù)據(jù)元素序列的位置/識(shí)別符)以及用于指定位置描述符的位置。通過閱讀本 文提供的揭示內(nèi)容,用于這種慣例的若干方法將對(duì)相關(guān)技術(shù)領(lǐng)域的技術(shù)人員顯而易 見。然而,在一個(gè)實(shí)施例中,根據(jù)上文提及的AHCI標(biāo)準(zhǔn)來指定設(shè)法檢索的數(shù)據(jù)元
素,且如上文所述參照?qǐng)D3A及3B來指定位置描述符。然后,控制轉(zhuǎn)到步驟420。 在步驟420中,存儲(chǔ)控制器120向存儲(chǔ)裝置發(fā)出命令以提供(也就是發(fā)送回) 數(shù)據(jù)元素序列。在上文提及的實(shí)例中,存儲(chǔ)控制器120向輔助存儲(chǔ)單元140A發(fā)出命 令以在指定位置處提供數(shù)據(jù),例如根據(jù)相關(guān)領(lǐng)域中眾所周知的SATA協(xié)議。所述命 令可與對(duì)應(yīng)協(xié)議/標(biāo)準(zhǔn)一起發(fā)出。然后,控制轉(zhuǎn)到步驟440。
在步驟440中,存儲(chǔ)控制器120在完成數(shù)據(jù)元素接收之前檢索一子組描述符, 其中所述數(shù)據(jù)元素將使用所述子組中各描述符的第一者來存儲(chǔ)。在上文提及的串行 技術(shù)的情況下,假設(shè)花費(fèi)大量時(shí)間檢索對(duì)應(yīng)于位置描述符的數(shù)據(jù)元素,則可能需要 僅單個(gè)位置描述符??蓹z索更多位置描述符,但檢索所有位置描述符(針對(duì)所述請(qǐng) 求)可能出于上文提及的愿意而不合需要。
檢索描述符子組的行為可在步驟420的發(fā)出命令之前。然而,為降低緩沖器需 求,檢索位置描述符的行為可開始于步驟420的發(fā)出命令之后,但在完成接收對(duì)應(yīng) 于所述子組中的第一描述符的數(shù)據(jù)之前。所述指定行為相依于從中檢索描述符的單 元。
例如,假設(shè)指定位置描述符指示將字節(jié)編號(hào)1024-2047存儲(chǔ)于主存儲(chǔ)器130的 存儲(chǔ)器位置4048到5071中,則存儲(chǔ)控制器120可確保位置描述符至少在從輔助存 儲(chǔ)單元接收字節(jié)5071 (最后一字節(jié))之前對(duì)控制單元220可用。額外的位置描述符 可減少出于從主存儲(chǔ)器130檢索位置描述符的目的而需要存取總線112的次數(shù)。然 后,控制轉(zhuǎn)到步驟445。
在步驟445中,存儲(chǔ)控制器120將檢索的描述符存儲(chǔ)在緩沖器(例如,210)中。 由于在步驟440中僅檢索一子組的位置描述符,則可降低緩沖器大小需求。然后, 控制轉(zhuǎn)到步驟450。
在步驟450中,存儲(chǔ)控制器120將所接收數(shù)據(jù)存儲(chǔ)在由描述符中的第一者指示 的存儲(chǔ)器位置處。然后,控制轉(zhuǎn)到步驟460。
在步驟460中,存儲(chǔ)控制器120取得所述子組之后的下一描述符并將所述下一 描述符添加到所述子組中。為圖解說明,假設(shè)在步驟440中檢索的所述子組描述含 有兩個(gè)描述符,則存儲(chǔ)控制器120在接收到對(duì)應(yīng)于第一描述符的數(shù)據(jù)(并在步驟450 中接續(xù)存儲(chǔ)在主存儲(chǔ)器中的對(duì)應(yīng)位置處)時(shí)檢索第三描述符,且因此具有存儲(chǔ)對(duì)應(yīng) 于第二及第三描述符的數(shù)據(jù)的位置信息。然后,控制轉(zhuǎn)到步驟480。
在步驟480中,如果存儲(chǔ)控制器120確定正接收更多來自所述文件的數(shù)據(jù),則 控制轉(zhuǎn)到步驟450,或者控制轉(zhuǎn)到步驟499,其中所述流程圖結(jié)束。
由于檢索僅一子組位置描述符,則可降低緩沖器大小需求。另外,由于所需求 的位置描述的現(xiàn)成可用性,需要對(duì)數(shù)據(jù)(從輔助存儲(chǔ)單元接收)進(jìn)行緩沖的次數(shù)也 可被減少,從而降低緩沖器大小需求。
緩沖器210可使用各種方法來實(shí)施,同時(shí)支持上文描述的所需特征。所述說明 是參照一個(gè)實(shí)施例中的緩沖器210的細(xì)節(jié)來提供的。
6. 緩沖器
圖5A是圖解說明一個(gè)實(shí)施例中的緩沖器210的細(xì)節(jié)的框圖。緩沖器210顯示為 含有數(shù)據(jù)緩沖器510和控制緩沖器520,其還參照?qǐng)D5B進(jìn)一步詳細(xì)描述如下。圖5B 圖解說明在一個(gè)實(shí)施例中存儲(chǔ)于控制緩沖器520中的數(shù)據(jù)的特性。
控制單元220將對(duì)應(yīng)于每一位置描述符的數(shù)據(jù)塊(由單個(gè)讀取請(qǐng)求設(shè)法從CPU 110檢索的數(shù)據(jù)元素序列的子組)存儲(chǔ)于數(shù)據(jù)緩沖器510中,并將所述塊的狀態(tài)信息 存儲(chǔ)于控制緩沖器520中。圖5B圖解說明在本發(fā)明一實(shí)施例中含有對(duì)應(yīng)數(shù)據(jù)塊的狀 態(tài)信息的各字段。
在典型情景中,數(shù)個(gè)文件請(qǐng)求可能未完成(尚未完成或待決),且控制單元220 可將從輔助存儲(chǔ)單元140A-140N中的每一者接收的文件部分存儲(chǔ)在數(shù)據(jù)緩沖器510 中。由于使用單個(gè)緩沖器210來存儲(chǔ)對(duì)應(yīng)于不同鏈接的數(shù)據(jù)(從不同的輔助存儲(chǔ)單 元接收的數(shù)據(jù)),且在主存儲(chǔ)器中具有不同的目標(biāo)地址,則每一數(shù)據(jù)塊可能需要存 儲(chǔ)有對(duì)應(yīng)的狀態(tài)信息,如下文借助實(shí)例所述。
狀態(tài)條目590顯示為含有字段550、 560、 570和580。在實(shí)例中,假設(shè)狀態(tài)條 目590對(duì)應(yīng)于從輔助存儲(chǔ)單元140A接收的數(shù)據(jù),且將被寫入到主存儲(chǔ)器位置360, 也就是對(duì)應(yīng)于PRD350A的數(shù)據(jù),顯示于圖3A中。
字段550指定接收所述數(shù)據(jù)的端口 (對(duì)應(yīng)于輔助存儲(chǔ)單元的鏈路)。在所述實(shí) 例中,所述條目將對(duì)應(yīng)指定數(shù)據(jù)是從輔助存儲(chǔ)單元140A接收的編號(hào)。
字段560指定狀態(tài)條目590對(duì)應(yīng)的數(shù)據(jù)塊(在數(shù)據(jù)緩沖器510中)的長(zhǎng)度/大小。
字段570和580 —起指定主存儲(chǔ)器130中將寫入數(shù)據(jù)緩沖器510中的數(shù)據(jù)塊開 始的地址。主存儲(chǔ)器130中的地址由PRD的內(nèi)容指定,所述PRD的地址又由字段 570 (上PRD地址(例如,較高階32位))及字段580 (下PRD地址(例如,較低 階32位))指定。兩個(gè)字段570和580中顯示的上PRD地址及下PRD地址均反映 主存儲(chǔ)器中的地址空間由64位地址指定,且所述字段中的每一者在一個(gè)實(shí)施例中僅 含有32個(gè)位。在所圖解說明的實(shí)例中,字段570和580的值是從PRD 350A檢索的。
因此,位置描述符的相關(guān)信息可與緩沖器210中的數(shù)據(jù)的每一塊相關(guān)聯(lián)地存儲(chǔ), 且總線主控250可使用所述信息來確定存儲(chǔ)每一數(shù)據(jù)元素的目標(biāo)位置/存儲(chǔ)器。
所述說明繼續(xù)圖解說明實(shí)例性序列圖,其圖解說明包含在實(shí)施例中的數(shù)據(jù)元素 序列的讀取操作中的操作序列。
7. 序列圖
圖6是用于圖解說明在本發(fā)明實(shí)施例中的文件讀取操作期間包含的CPU 110、 存儲(chǔ)控制器120和輔助存儲(chǔ)單元140A中的每一者中的操作序列的實(shí)例性序列圖。
事件610代表CPU 110對(duì)存儲(chǔ)控制器120的請(qǐng)求,以將數(shù)據(jù)元素序列(對(duì)應(yīng)于 文件)從輔助存儲(chǔ)單元140A轉(zhuǎn)移到主存儲(chǔ)器130。事件615代表其中存儲(chǔ)控制器120 讀取由CPU 110發(fā)出的請(qǐng)求610的操作。
事件620代表存儲(chǔ)控制器120向輔助存儲(chǔ)單元140A發(fā)出的提供文件中的數(shù)據(jù)的
命令。在同一事件中,存儲(chǔ)控制器120可起始所述子組的位置描述符的檢索(通過 發(fā)出到主存儲(chǔ)器130的適合存取命令),如上文描述。
在所述實(shí)例中,假設(shè)存儲(chǔ)控制器120在事件620期間檢索兩個(gè)位置描述符,即 使單個(gè)位置描述符可能足以確保在多數(shù)示例中對(duì)應(yīng)信息的及時(shí)可用性(假設(shè)從輔助 存儲(chǔ)單元檢索數(shù)據(jù)塊會(huì)花費(fèi)比從主存儲(chǔ)器檢索位置描述符更多的時(shí)間)。然而,在 小塊(特別是最后一塊)的情形中,檢索所述額外位置描述符會(huì)確保必要信息的及 時(shí)可用性而無需等待位置描述符。
在時(shí)間示例tl處,輔助存儲(chǔ)單元140A開始將文件中的數(shù)據(jù)提供給存儲(chǔ)控制器 120。所述數(shù)據(jù)可存儲(chǔ)在緩沖器210中(圖2)。到t2時(shí),由第一位置描述符指定的 數(shù)據(jù)被認(rèn)為在緩沖器210中可用。文件描述符被認(rèn)為已在t2之前被檢索/接收,并也 存儲(chǔ)在緩沖器210中(由控制單元220)。所述組文件描述符的所有剩余者(兩個(gè), 在上文事件620中提及)也被認(rèn)為已接收。
因此,事件640代表將數(shù)據(jù)690A從數(shù)據(jù)緩沖器510轉(zhuǎn)移到主存儲(chǔ)器130。因此, 總線主控250可起始將對(duì)應(yīng)部分DMA轉(zhuǎn)移到主存儲(chǔ)器130,只要所述部分(或在 DMA轉(zhuǎn)移中允許轉(zhuǎn)移的至少最小部分)可用。在實(shí)施例中,DMA轉(zhuǎn)移最少轉(zhuǎn)移64 個(gè)字節(jié)。因此,當(dāng)文件的對(duì)應(yīng)部分的至少64個(gè)字節(jié)已被接收并存儲(chǔ)在緩沖器210中 時(shí),總線主控250可起始對(duì)主存儲(chǔ)器130的轉(zhuǎn)移。
數(shù)據(jù)的接收繼續(xù)進(jìn)行,如對(duì)應(yīng)于第二位置描述符的數(shù)據(jù)690B的接收的開始所代表。
在時(shí)間示例t3處,存儲(chǔ)控制器120可在在時(shí)間示例t4處完全接收對(duì)應(yīng)于第二描 述符的數(shù)據(jù)之前檢索下一描述符(所述實(shí)例中的第三位置描述符)。顯示為立即開 始于t4之后的事件660代表將數(shù)據(jù)690B轉(zhuǎn)移到主存儲(chǔ)器130。接收對(duì)應(yīng)于第三描述 符的數(shù)據(jù)690C (在時(shí)間示例t3處檢索)開始于時(shí)間示例t4處。
檢索后續(xù)位置描述符、將數(shù)據(jù)部分寫入主存儲(chǔ)器130、及從輔助存儲(chǔ)單元140A 接收數(shù)據(jù)以類似方式繼續(xù),直到在讀取請(qǐng)求中所請(qǐng)求的所有數(shù)據(jù)元素均轉(zhuǎn)移到主存 儲(chǔ)器130。
盡管上述說明是僅用于圖解說明而參照單個(gè)讀取請(qǐng)求來提供,但應(yīng)了解,可與 上文說明相一致地并行處理多個(gè)讀取請(qǐng)求。 8.總結(jié)
盡管上文已描述本發(fā)明的各實(shí)施例,但應(yīng)了解,其應(yīng)僅以舉例方式提供而非限 定。因此,本發(fā)明的寬度及范圍不應(yīng)由任一上述實(shí)例性實(shí)施例限制,而應(yīng)僅由下列 權(quán)利要求及其等價(jià)物界定。
權(quán)利要求
1、一種控制對(duì)多個(gè)輔助存儲(chǔ)單元的存取請(qǐng)求的存儲(chǔ)控制器,所述存儲(chǔ)控制器包括緩沖器;及控制單元,其用以接收第一讀取請(qǐng)求和第二讀取請(qǐng)求,所述第一讀取請(qǐng)求指定來自第一輔助存儲(chǔ)單元的第一數(shù)據(jù)序列,及所述第二讀取請(qǐng)求指定來自第二輔助存儲(chǔ)單元的第二數(shù)據(jù)序列,所述控制單元分別響應(yīng)于所述第一讀取請(qǐng)求及所述第二讀取請(qǐng)求而檢索來自所述第一輔助存儲(chǔ)單元的所述第一數(shù)據(jù)序列及來自所述第二輔助存儲(chǔ)單元的所述第二數(shù)據(jù)序列,并將所述第一數(shù)據(jù)序列及所述第二數(shù)據(jù)序列二者均存儲(chǔ)于所述緩沖器中。
2、 如權(quán)利要求l所述的存儲(chǔ)控制器,其進(jìn)一步包括主控單元,所述主控單元將 所述第一數(shù)據(jù)序列及所述第二數(shù)據(jù)序列轉(zhuǎn)移到主存儲(chǔ)器。
3、 如權(quán)利要求2所述的存儲(chǔ)控制器,其中所述緩沖器包括控制緩沖器及數(shù)據(jù)緩 沖器,其中所述控制單元將所述第一數(shù)據(jù)序列及所述第二數(shù)據(jù)序列存儲(chǔ)在所述數(shù)據(jù) 緩沖器中,所述控制單元進(jìn)一步存儲(chǔ)指示其中將要存儲(chǔ)所述第一數(shù)據(jù)序列及所述第 二數(shù)據(jù)序列的存儲(chǔ)器的位置的數(shù)據(jù)。
4、 如權(quán)利要求3所述的存儲(chǔ)控制器,其中所述第一請(qǐng)求進(jìn)一步指定多個(gè)位置描 述符,其中第一位置描述符指示所述存儲(chǔ)器及其中將一對(duì)應(yīng)子組的所述第一數(shù)據(jù)序 列存儲(chǔ)在所述存儲(chǔ)器中的對(duì)應(yīng)位置,其中所述控制單元在完成檢索所述對(duì)應(yīng)子組之 前預(yù)取所述第一位置描述符。
5、 如權(quán)利要求4所述的存儲(chǔ)控制器,其中所述控制單元在從所述第一輔助存儲(chǔ) 單元接收所述對(duì)應(yīng)子組時(shí)預(yù)取第二位置描述符,其中所述第二位置識(shí)別符識(shí)別第二 子組的數(shù)據(jù),根據(jù)所述序列次序所述第二子組的數(shù)據(jù)在所述對(duì)應(yīng)子組之后。
6、 一種系統(tǒng),其包括 存儲(chǔ)器;多個(gè)輔助存儲(chǔ)單元;處理單元,其發(fā)出指定來自第一輔助存儲(chǔ)單元的第一數(shù)據(jù)序列的第一讀取請(qǐng)求及指定來自第二輔助存儲(chǔ)單元的第二數(shù)據(jù)序列的第二讀取請(qǐng)求,其中所述第一輔助 存儲(chǔ)單元及所述第二輔助存儲(chǔ)單元包含于所述多個(gè)輔助存儲(chǔ)單元中;存儲(chǔ)控制器,其處理所述第一讀取請(qǐng)求及所述第二讀取請(qǐng)求,所述存儲(chǔ)控制器 包括緩沖器;及控制單元,其用以接收所述第一讀取請(qǐng)求及所述第二讀取請(qǐng)求,所述控制單 元分別響應(yīng)于所述第一讀取請(qǐng)求及所述第二讀取請(qǐng)求而檢索來自所述第一輔助存 儲(chǔ)單元的所述第一數(shù)據(jù)序列及來自所述第二輔助存儲(chǔ)單元的所述第二數(shù)據(jù)序列, 并將所述第一數(shù)據(jù)序列及所述第二數(shù)據(jù)序列二者存儲(chǔ)在所述緩沖器中。
7、 如權(quán)利要求6所述的系統(tǒng),其進(jìn)一步包括主控單元,所述主控單元將所述第一數(shù)據(jù)序列及所述第二數(shù)據(jù)序列轉(zhuǎn)移到主存儲(chǔ)器。
8、 如權(quán)利要求7所述的系統(tǒng),其中所述緩沖器包括控制緩沖器及數(shù)據(jù)緩沖器, 其中所述控制單元將所述第一數(shù)據(jù)序列及所述第二數(shù)據(jù)序列存儲(chǔ)在所述數(shù)據(jù)緩沖器 中,所述控制單元進(jìn)一步存儲(chǔ)指示其中將要存儲(chǔ)所述第一數(shù)據(jù)序列及所述第二數(shù)據(jù) 序列的存儲(chǔ)器的位置的數(shù)據(jù)。
9、 如權(quán)利要求8所述的系統(tǒng),其中所述第一請(qǐng)求進(jìn)一步指定多個(gè)位置描述符, 其中第一位置描述符指示所述存儲(chǔ)器及其中將對(duì)應(yīng)子組的所述第一數(shù)據(jù)序列存儲(chǔ)在 所述存儲(chǔ)器中的對(duì)應(yīng)位置,其中所述控制單元在完成檢索所述對(duì)應(yīng)子組之前預(yù)取所 述第一位置描述符。
10、 如權(quán)利要求9所述的系統(tǒng),其中所述控制單元在從所述第一輔助存儲(chǔ)單元 接收所述對(duì)應(yīng)子組時(shí)預(yù)取第二位置描述符,其中所述第二位置識(shí)別符識(shí)別第二子組 的數(shù)據(jù),根據(jù)所述序列次序所述第二子組的數(shù)據(jù)在所述對(duì)應(yīng)子組之后。
全文摘要
一種存儲(chǔ)控制器,其使用同一緩沖器來存儲(chǔ)從不同的輔助存儲(chǔ)單元檢索的數(shù)據(jù)元素。在實(shí)施例中,所述控制器在數(shù)據(jù)可用于存儲(chǔ)在目標(biāo)存儲(chǔ)器中之前檢索位置描述符。每一位置描述符均指示將要存儲(chǔ)從輔助存儲(chǔ)裝置接收的數(shù)據(jù)的存儲(chǔ)器位置。在處理每一請(qǐng)求之前,僅可檢索及存儲(chǔ)一子組的所述位置描述符。由于有限數(shù)量的位置描述符的所述檢索及存儲(chǔ),因此可減小所述存儲(chǔ)控制器所使用的緩沖器的大小。由于提前檢索所述位置描述符,因此避免了在所述存儲(chǔ)控制器內(nèi)對(duì)所述數(shù)據(jù)元素的不必要緩沖,從而減少將所述數(shù)據(jù)寫入到所述主存儲(chǔ)器中的延時(shí),因此改進(jìn)性能。
文檔編號(hào)G06F13/20GK101359314SQ200810131209
公開日2009年2月4日 申請(qǐng)日期2008年7月30日 優(yōu)先權(quán)日2007年7月30日
發(fā)明者姆魯杜拉·卡努瑞 申請(qǐng)人:輝達(dá)公司