專利名稱:用于存儲器互連中的邊帶讀返回頭部的方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及存儲器連接。更具體而言,本發(fā)明涉及通過邊帶讀返回頭部(sideband read return header)來優(yōu)化存儲器讀操作的方法和裝置。
背景技術(shù):
隨著微處理器變得越來越快,對于更快的存儲器互連的需求也增大了。微處理器的性能已顯著提高。由于多種原因,系統(tǒng)性能總體上沒有跟上微處理器的性能提高。一個(gè)原因是諸如硬盤驅(qū)動器的大容量存儲設(shè)備的機(jī)械特性。
另一個(gè)影響系統(tǒng)性能的領(lǐng)域是微處理器外部的存儲器。該存儲器可能由外部高速緩存和外部主存儲器構(gòu)成,所述主存儲器一般速度較低,但容量較大。對外部存儲器的訪問可能具有影響性能的延遲和實(shí)現(xiàn)復(fù)雜度。能夠減小延遲和降低實(shí)現(xiàn)復(fù)雜度是有益的。優(yōu)化存儲器互連的協(xié)議也是有益的。
在附圖的圖中通過示例而非限制來圖示本發(fā)明,其中類似的標(biāo)號指示類似的元件,所述附圖中圖1根據(jù)一個(gè)實(shí)施例圖示了可實(shí)現(xiàn)本發(fā)明的網(wǎng)絡(luò)環(huán)境;圖2根據(jù)一個(gè)實(shí)施例圖示了計(jì)算機(jī)系統(tǒng)的框圖;圖3根據(jù)一個(gè)實(shí)施例圖示了存儲器端口接口;圖4A和4B圖示了讀請求分組搶先于寫請求分組的兩個(gè)實(shí)施例;圖5根據(jù)一個(gè)實(shí)施例圖示了調(diào)度對存儲器的早期讀請求的過程;圖6A和6B圖示了發(fā)送讀返回頭部的兩個(gè)實(shí)施例;圖7根據(jù)一個(gè)實(shí)施例圖示了存儲器端口接口;
圖8根據(jù)一個(gè)實(shí)施例圖示了存儲器端口協(xié)議;圖9根據(jù)一個(gè)實(shí)施例圖示了需要4個(gè)傳送的轉(zhuǎn)移;圖10根據(jù)另一個(gè)實(shí)施例圖示了一個(gè)轉(zhuǎn)移;圖11根據(jù)一個(gè)實(shí)施例圖示了轉(zhuǎn)移中鏈路層和有效負(fù)載的暫時(shí)移位;圖12根據(jù)另一個(gè)實(shí)施例圖示了存儲器端口協(xié)議;圖13根據(jù)一個(gè)實(shí)施例圖示了存儲器命令格式;圖14根據(jù)一個(gè)實(shí)施例圖示了設(shè)備命令格式;圖15根據(jù)一個(gè)實(shí)施例圖示了配置命令格式;圖16根據(jù)一個(gè)實(shí)施例圖示了出站鏈路層格式;圖17根據(jù)一個(gè)實(shí)施例圖示了共同的入站鏈路層格式位;圖18根據(jù)一個(gè)實(shí)施例圖示了讀返回頭部格式;圖19根據(jù)一個(gè)實(shí)施例圖示了寫確認(rèn)格式;和圖20根據(jù)一個(gè)實(shí)施例圖示了狀態(tài)格式。
具體實(shí)施例方式
描述了在存儲器互連中通過邊帶讀返回頭部(sideband read returnheader)來優(yōu)化存儲器讀操作的方法和裝置。
在以下說明中,為了解釋的目的給出了大量的具體細(xì)節(jié),以提供對本發(fā)明更充分的理解。但是,沒有這些具體細(xì)節(jié)也可以實(shí)施本發(fā)明,這對本領(lǐng)域的技術(shù)人員是明顯的。在一些情況下,以框圖的形式而非詳細(xì)地示出公知的結(jié)構(gòu)和設(shè)備,以免使本發(fā)明難以理解。
圖1圖示了可應(yīng)用所描述的技術(shù)的網(wǎng)絡(luò)環(huán)境100。如圖所示,幾個(gè)處理器104-1至104-P和存儲器106-1至106-M經(jīng)由網(wǎng)絡(luò)102彼此連接,網(wǎng)絡(luò)102可以是例如計(jì)算機(jī)總線。注意,或者網(wǎng)絡(luò)102可以是局域網(wǎng)或包括局域網(wǎng)。這里所描述的方法和裝置可被應(yīng)用到基本上任何類型的通信裝置或設(shè)備,無論是本地的還是遠(yuǎn)程的。
圖2以框圖的形式圖示了計(jì)算機(jī)系統(tǒng)200,在一個(gè)實(shí)施例中本發(fā)明可在其中實(shí)現(xiàn)??偩€系統(tǒng)202將中央處理單元(CPU)204、只讀存儲器(ROM)206、隨機(jī)訪問存儲器(RAM)208、存儲設(shè)備210、顯示器220、音頻222、鍵盤224、指示器226、其他輸入/輸出(I/O)設(shè)備228和通信設(shè)備230互連起來??偩€系統(tǒng)202可以是例如以下總線中的一種或多種系統(tǒng)總線、外圍部件互連(PCI)、高級圖形端口(AGP)、小計(jì)算機(jī)系統(tǒng)接口(SCSI)、電氣與電子工程師協(xié)會(IEEE)標(biāo)準(zhǔn)號1394(FireWire)、通用串行總線(USB)等等。CPU 204可以是單個(gè)、多個(gè)、或者甚至是分布式計(jì)算資源。此外,由CPU 204示例的子系統(tǒng)可具有到諸如存儲器的其他子系統(tǒng)的單獨(dú)的總線。這樣的一個(gè)例子可以是用于圖形,例如AGP。另一個(gè)可以是對CPU 204外部的存儲器的存儲器端口接口,所述存儲器例如是ROM 206、RAM 208等等。
如下詳細(xì)給出地,要注意的是,可以加快操作和/或降低延遲和/或復(fù)雜度的存儲器端口接口和/或協(xié)議是有益的。例如,在對存儲器的讀請求中,如下所述地,可以通過首先只發(fā)送開始存儲器讀所需的信息,使得對存儲器的實(shí)際讀取可在接收到該讀請求的全部之前就開始。例如,如果首先發(fā)送地址,接著存儲器子系統(tǒng)就可以開始讀取存儲器內(nèi)容。該讀請求可能僅僅想要正訪問的字中的一個(gè)字節(jié),但是此只需字節(jié)的信息可在地址之后發(fā)送,并及時(shí)到達(dá),以使存儲器子系統(tǒng)隨后僅僅發(fā)送所請求的字節(jié)。這樣,操作可以并行和/或在其他操作之前進(jìn)行。類似地,如果存儲器子系統(tǒng)知道其已訪問存儲器并將在固定的時(shí)間之后得到結(jié)果,那么如下所述,有可能在實(shí)際的數(shù)據(jù)之前發(fā)送讀返回頭部。這可以允許接收數(shù)據(jù)的設(shè)備由于知道將有數(shù)據(jù)來而為其做好準(zhǔn)備。例如,讀返回頭部可具有識別要來的數(shù)據(jù)與哪個(gè)讀請求相關(guān)聯(lián)的信息,并允許設(shè)備在該數(shù)據(jù)到達(dá)之前就確定其要去什么地方。通過在實(shí)際數(shù)據(jù)之前發(fā)送此讀返回頭部信息,設(shè)備在數(shù)據(jù)實(shí)際到達(dá)之前就確定其目的地。
圖3以框圖的形式圖示了存儲器端口接口300的一個(gè)實(shí)施例。在此實(shí)施例中,存儲器端口320是處理器(在處理器模塊310中)與其本地存儲器(340和342)之間的快速和管腳高效(pin-efficient)的互連。存儲器端口接口的協(xié)議層(有時(shí)稱為存儲器端口協(xié)議)獨(dú)立于任何具體的存儲器技術(shù),由此將處理器與存儲器技術(shù)和將來的存儲器發(fā)展問題分離開來。該協(xié)議層具有具體的特征(本公開的主題)來減小存儲器請求的延遲并降低實(shí)現(xiàn)的復(fù)雜度以及其他。
處理器模塊310可具有通過例如IO 302、存儲器端口320等等而到多種其他設(shè)備的接口。存儲器端口320可認(rèn)為是從處理器模塊310到XMB(外部存儲器橋)330的專用接口,如圖3所示。XMB 330可包含存儲器控制器338和對本地存儲器的接口,所述本地存儲器例如兩個(gè)DRAM 340和342的存儲體。因此,XMB 330封裝了存儲器相關(guān)性(dependency),例如存儲器類型(技術(shù)和速度)、存儲器組織(DRAM大小、每個(gè)模塊的DRAM的數(shù)量、以及通道的數(shù)量)和存儲器控制(時(shí)序、刷新和功率管理)。
存儲器端口320可以由物理互連和協(xié)議組成。物理互連可以由幾個(gè)并行互連組成,或者認(rèn)為是幾個(gè)并行互連。例如,可以有一個(gè)用于數(shù)據(jù)的主要鏈路以及用于控制的另一個(gè)鏈路層(有時(shí)稱為邊帶)。該協(xié)議可以由在物理互連上傳遞的命令、數(shù)據(jù)、響應(yīng)等等組成。例如,存儲器端口命令可以由存儲器讀和寫、設(shè)備讀和寫、以及配置讀和寫組成。此外,鏈路層可具有入站和出站的信息,例如讀返回頭部、寫確認(rèn)、狀態(tài)等等。
存儲器端口流量可由存儲器、設(shè)備和配置的讀和寫命令組成。對于一個(gè)實(shí)施例,為了使XMB 330的復(fù)雜度最小,處理器存儲器接口(PMI)308開始所有的數(shù)據(jù)傳送。對于一個(gè)實(shí)施例,為了進(jìn)一步降低復(fù)雜度,存儲器端口320不支持由XMB 330啟動的數(shù)據(jù)傳送。在一個(gè)實(shí)施例中,通過存儲器端口320不支持在XMB 330中或經(jīng)由XMB 330的圖形設(shè)備或I/O或來降低復(fù)雜度。可通過存儲器端口320不支持任何相干流量來達(dá)到附加的對復(fù)雜度的降低。
在處理器模塊310中,存儲器端口320包括封裝在PMI 308中的功能。PMI 308可包括這樣的功能,例如寫緩沖器、流控制、錯(cuò)誤處理以及控制和狀態(tài)寄存器等等。在XMB 330處,存儲器端口320可包括封裝在外部存儲器接口(XMI)332中的功能。XMI 332還可包括讀和寫緩沖器、錯(cuò)誤日志、控制和狀態(tài)寄存器等等。
在一個(gè)實(shí)施例中,存儲器端口320可利用存儲器流量僅僅是存儲器讀和寫的認(rèn)識,并可由此為存儲器請求進(jìn)行優(yōu)化,從而在使復(fù)雜度最小的同時(shí)使性能最高。本公開描述了在存儲器端口320中與降低起動存儲器讀請求的延遲相關(guān)的兩種優(yōu)化,以及與在存儲器端口320中使用邊帶讀返回頭部相關(guān)的第三種優(yōu)化。
圖4A圖示了讀分組如何可以搶先于寫分組(400)的過程。讀分組可包含讀命令和要讀取的地址或地址范圍。類似地,寫分組可包含寫命令、要寫入的地址或地址范圍、以及要寫入的數(shù)據(jù)(寫數(shù)據(jù))。由于被傳送的信息量和通信通道的寬度,讀和/或?qū)懛纸M可以在多于一次傳送中發(fā)送。因?yàn)?,寫分組具有以要被寫入的數(shù)據(jù)的形式的額外信息,所以可見寫分組可能比讀分組需要更多的傳送。
在402接收輸入。在404確定在402所接收的輸入是否是讀分組的一部分。如果是讀分組的一部分,則在406對該讀分組是否完整進(jìn)行檢查。如果該讀分組是完整的,則在408進(jìn)行讀操作,然后在402接收另一個(gè)輸入。如果在406確定該讀分組不完整,則在402接收另一個(gè)輸入。
如果在404確定了在402所接收的輸入不是讀分組的一部分,則在410確定在402所接收的輸入是否是寫分組的一部分。如果在402所接收的輸入不是寫分組的一部分,則在416進(jìn)行某個(gè)其他操作,隨后在402接收另一個(gè)輸入。如果在410確定了在402所接收的輸入是寫分組的一部分,則在412對該寫分組是否完整進(jìn)行判斷。如果該寫分組是完整的,則在414進(jìn)行寫操作,然后在402接收另一個(gè)輸入。如果在410確定在402所接收的輸入不是寫請求分組的一部分,則在416進(jìn)行某個(gè)其他操作,并隨后返回402接收輸入。
因此,讀分組可以搶先于寫分組。對于一個(gè)實(shí)施例,由讀命令和要讀取的地址或多個(gè)地址組成的讀分組,可以是單次傳送或單次轉(zhuǎn)移(flit)。寫分組由具有寫命令、要寫入的地址或多個(gè)地址的單次傳送,以及具有相關(guān)聯(lián)的寫數(shù)據(jù)的其他(可能有多個(gè))傳送組成。為了說明的方便,包含讀命令和要讀取的地址或多個(gè)地址的讀分組被稱為讀請求。這樣,讀請求和讀分組傳達(dá)相同的信息。為了說明的方便,寫分組中包含寫命令和要寫入的地址或多個(gè)地址的部分被稱為寫請求。寫分組的數(shù)據(jù)部分被稱為寫數(shù)據(jù)。這樣,寫分組包含寫請求和寫數(shù)據(jù)。
于是例如,假定在402接收到寫請求。該寫請求到404,由于不是讀分組的一部分就到了410。在410其是寫分組的一部分,因此前進(jìn)到412。在412確定其僅僅是寫請求并且寫數(shù)據(jù)還未接收到,所以該寫分組不完整,于是其隨后回到402。如果現(xiàn)在在402接收到讀請求,則其到達(dá)404,在這里確定該讀請求是讀分組的一部分,于是前進(jìn)到406。在406對該讀請求是否完整做出判斷。在本實(shí)施例中,我們已將讀請求定義成包含完整的讀分組,于是在408進(jìn)行讀操作,并隨后回到402。這樣在本例子中,被啟動的寫操作(通過收到寫請求)還未完成,讀請求就搶先于寫操作。
按照圖4A的流程,可以認(rèn)識到在接收到最后的寫數(shù)據(jù)之前,讀請求可能在任何時(shí)候搶先于寫操作。于是,例如如果寫分組包含寫請求和寫數(shù)據(jù)的4次傳送,那么讀請求如果在寫請求、第一、第二或第三寫數(shù)據(jù)后被接收到,就可以搶先于寫分組。
在另一個(gè)實(shí)施例中,讀請求可能不包含完整的讀分組。在這樣的實(shí)施例中,在406對完整讀分組的檢查就可能不完整,在這樣的情況下將進(jìn)行到402接收另一個(gè)輸入。如果并且當(dāng)接收到完整的讀分組,則在406將前進(jìn)到408并進(jìn)行讀操作,隨后返回而在402接收輸入。
允許在寫請求或?qū)憯?shù)據(jù)之后接收到的讀請求搶先于更早被接收到的寫請求或?qū)憯?shù)據(jù),導(dǎo)致讀操作在寫操作之前執(zhí)行。比起必須先響應(yīng)寫操作然后響應(yīng)讀請求,這允許存儲器更快地響應(yīng)讀請求。
應(yīng)該理解到發(fā)送讀和/或?qū)懻埱蟮拇砜梢苑乐箤τ行蛐缘钠茐?。換言之,發(fā)送服務(wù)可能希望限制可以發(fā)出讀和寫請求的方式。例如,發(fā)送代理可以為了降低復(fù)雜度而決定一個(gè)讀請求不能搶先于另一個(gè)讀請求。
圖4B圖示了(450)本發(fā)明的另一個(gè)實(shí)施例,其中讀分組可以搶先于寫請求。在此例子中,我們僅僅考慮讀和寫分組。此外,圖4B所圖示的實(shí)施例中,寫分組可以被讀請求搶先,但不能被另一個(gè)寫請求搶先,而這在圖4A中是可能的。在圖4B中在452接收輸入。在454對其是否是讀分組進(jìn)行檢查。如果是讀分組,則在456進(jìn)行讀操作,并返回到452接收輸入。如果在452所接收的輸入不是讀分組,則在458檢查其是否是寫分組。如果不是寫分組,則返回到452接收輸入。相反,如果在458該分組是寫分組,則進(jìn)入標(biāo)為460-470的“內(nèi)循環(huán)”操作。
該內(nèi)循環(huán)允許讀分組搶先,這如下可見在460接收輸入, (462)檢查其是否是讀請求,如果是,則進(jìn)行讀操作(464)并回到460接收輸入。但是,回到外循環(huán)(452-458)的唯一途徑,是當(dāng)寫分組是完整的(468)并進(jìn)行了寫操作(470)。一從458進(jìn)入內(nèi)循環(huán),就在466進(jìn)行檢查以確定是否有寫數(shù)據(jù)。如果沒有寫數(shù)據(jù),則進(jìn)行到460接收輸入。如果有寫數(shù)據(jù),則在468對該寫分組是否完整進(jìn)行檢查。如果該寫分組不完整,則進(jìn)行到460接收輸入。但是,如果該寫分組是完整的,則在470進(jìn)行寫操作,并隨后進(jìn)行到452從外循環(huán)接收輸入。于是,圖4B圖示了這樣的實(shí)施例,其中僅僅允許單個(gè)寫分組被讀請求(在讀分組中)或多個(gè)讀請求搶先(即在470的寫操作之前經(jīng)過循環(huán)460、462、464一次或多次)。
在以上討論中,我們詳細(xì)給出了例如讀請求如何可以包含讀命令和要讀取的地址或多個(gè)地址。此外,也可以傳達(dá)其他信息,例如確保請求完整性的糾錯(cuò)位、控制信息等等。為了討論本發(fā)明的方便,術(shù)語“轉(zhuǎn)移(flit)”被用來表示與一個(gè)實(shí)體或操作相關(guān)聯(lián)的信息傳輸?shù)膯卧?,并且可由一個(gè)或多個(gè)傳送組成。分組可由一個(gè)或多個(gè)轉(zhuǎn)移組成。于是,例如讀請求分組可以由表示與該讀請求相關(guān)聯(lián)的所有信息的單個(gè)轉(zhuǎn)移組成。取決于具體的實(shí)現(xiàn),該信息可能需要多于一個(gè)傳送來完整地發(fā)送。例如,如果讀請求轉(zhuǎn)移包含32位的信息,并且計(jì)算機(jī)總線可以產(chǎn)生16位的傳送,那么將需要兩個(gè)傳送來傳送該讀請求轉(zhuǎn)移。以下描述的是轉(zhuǎn)移和傳送等的更多的細(xì)節(jié)和例子。
圖5圖示了(500)調(diào)度對存儲器的早期讀請求的過程。這里在502接收輸入。在504檢查在502所接收的輸入是否是讀請求轉(zhuǎn)移的一部分。如果是,則在506對讀操作的早期調(diào)度是否可能進(jìn)行檢查。如果早期調(diào)度可能,則在508進(jìn)行早期讀調(diào)度,并隨后回到502接收輸入。如果早期調(diào)度不可能,則在510對該讀轉(zhuǎn)移是否完整進(jìn)行檢查。如果是完整的,則在512進(jìn)行讀操作,并隨后回到502接收輸入。如果該讀轉(zhuǎn)移不完整,則回到502接收輸入。如果在504確定在502所接收的輸入不是讀請求轉(zhuǎn)移的一部分,則在514進(jìn)行某個(gè)其他操作,并隨后回到502接收輸入。
在接收讀請求轉(zhuǎn)移期間,可能進(jìn)行調(diào)度對存儲器的早期讀請求。這樣,不必在調(diào)度對存儲器的早期讀請求之前,接收到整個(gè)讀請求轉(zhuǎn)移。通過不必等待接收到整個(gè)讀請求轉(zhuǎn)移,比起必須在發(fā)出讀請求之前等待接收到整個(gè)讀請求轉(zhuǎn)移,這允許存儲器更快地響應(yīng)早期讀請求。這樣如果轉(zhuǎn)移的第一部分包含早期讀請求,那么可以在接收轉(zhuǎn)移的第二部分的同時(shí)訪問存儲器,該第二部分可能具有對于存儲器內(nèi)容的修飾詞信息。該修飾詞信息可能影響最終發(fā)送什么存儲器數(shù)據(jù)。
圖6A圖示了(600)發(fā)送讀返回頭部(606)的過程。這里在602接收輸入。在604檢查其是否是讀請求。如果不是讀請求,則可能在614進(jìn)行其他操作,并回到602接收輸入。如果在604確定在602所接收的輸入是讀請求,則進(jìn)行兩件事。首先,在606發(fā)送讀返回頭部,并回到602來接收輸入。其次,在608開始讀操作,在610接收讀取的結(jié)果,在612發(fā)送讀取的結(jié)果,并隨后回到602接收輸入。這樣例如,在608開始的存儲器讀操作以及在606發(fā)送讀返回頭部可能基本同時(shí)發(fā)生,并且/或者讀返回頭部可能就在發(fā)送讀取結(jié)果之前。于是,在發(fā)送讀返回頭部(606)之前不必接收到整個(gè)讀取結(jié)果。通過不必等待整個(gè)讀取結(jié)果,比起必須在發(fā)送讀返回頭部之前等待要接收的整個(gè)讀請求,這允許存儲器和/或系統(tǒng)更早發(fā)送讀返回頭部(606)。
圖6B圖示了(650)發(fā)送讀返回頭部(656)的另一個(gè)實(shí)施例。這里在652接收輸入。在654檢查其是否是讀請求。如果不是讀請求,則可能在664進(jìn)行其他操作,并回到652接收輸入。如果在654確定在652所接收的輸入是讀請求,則在658開始讀操作。此時(shí)進(jìn)行兩件事。首先,在656發(fā)送讀返回頭部,并回到652來接收輸入。其次,在660接收讀取的結(jié)果,在662發(fā)送讀取的結(jié)果,并隨后回到652接收輸入。這樣例如,在658開始的存儲器讀操作導(dǎo)致在656發(fā)送讀返回頭部。與接收(656)和發(fā)送(662)讀取結(jié)果并行著發(fā)送該頭部,于是讀返回頭部可以在發(fā)送讀取結(jié)果之前。因此,在發(fā)送讀返回頭部(656)之前不必接收到整個(gè)讀取結(jié)果。通過不必等待整個(gè)讀取結(jié)果,比起必須在發(fā)送讀返回頭部之前等待要接收的整個(gè)讀請求,這允許存儲器和/或系統(tǒng)更早發(fā)送讀返回頭部(656)。
在讀返回頭部(在606或656發(fā)送)的一個(gè)實(shí)施例中,讀返回頭部具有編碼在其中的標(biāo)識符,該標(biāo)識符將其關(guān)聯(lián)到導(dǎo)致其被發(fā)送的讀請求。這樣,例如,PMI 308可以經(jīng)由讀返回頭部標(biāo)識符來確定其與哪個(gè)讀請求(以及產(chǎn)生的即將到來的數(shù)據(jù))相關(guān)聯(lián)。
應(yīng)該認(rèn)識到,傳送在606或656發(fā)送的讀返回頭部的實(shí)際路徑,雖然可以在主數(shù)據(jù)路徑中,但優(yōu)選地是在邊帶中,并且優(yōu)選地具有對于數(shù)據(jù)的已知固定偏移。換言之,使用與數(shù)據(jù)路徑并行的邊帶路徑(鏈路層),其中邊帶路徑承載在相關(guān)聯(lián)的讀取數(shù)據(jù)之前的讀返回頭部,這可以允許接收設(shè)備在接收數(shù)據(jù)之前就確定此數(shù)據(jù)將要到哪去。因此,如果在數(shù)據(jù)之前發(fā)送讀返回頭部,就可以實(shí)現(xiàn)減小延遲。
圖7圖示了存儲器端口接口700的一個(gè)實(shí)施例。在此實(shí)施例中,存儲器端口是全雙工互連(存儲器端口鏈路720和740)。在出站方向(離開處理器模塊710和PMI 708)上,存儲器端口鏈路720由兩個(gè)信息流組成。一個(gè)流是寬w的數(shù)據(jù)流,第二個(gè)流是寬x的鏈路層流。如上對本發(fā)明的討論,對相關(guān)聯(lián)的數(shù)據(jù)和鏈路層信息的方便的組合稱為轉(zhuǎn)移。在入站方向(進(jìn)入處理器模塊710和PMI 708)上,存儲器端口鏈路740由兩個(gè)信息流組成。一個(gè)流是寬y的數(shù)據(jù)流,第二個(gè)是寬z的鏈路層流。
例如,圖8圖示了存儲器端口協(xié)議800的一個(gè)實(shí)施例。在此實(shí)施例中,轉(zhuǎn)移802由指示空閑802a的數(shù)據(jù)和鏈路層(LL)802b信息組成。以類似的方式,轉(zhuǎn)移804至816(一般地8XX)由各自的8XXa和8XXb部分組成。此實(shí)施例示出了具有80位的轉(zhuǎn)移的實(shí)施例,其中數(shù)據(jù)總線寬度w是18位寬,鏈路層總線寬度x是2位寬。所圖示的實(shí)施例對單個(gè)轉(zhuǎn)移需要4個(gè)傳送,并且有效負(fù)載中有72位,鏈路層中有8位。
例如,圖9圖示了需要4個(gè)傳送的轉(zhuǎn)移900。這里,轉(zhuǎn)移910具有72位的數(shù)據(jù)和/或命令(d/c)信息以及8位的鏈路層(LL)信息。這里,傳送一次完成20位,即910a-0和910b-0,然后是910a-1和910b-1等等。雖然圖9示出了在同一時(shí)間幀中出現(xiàn)的d/c和LL傳送,但這并不是必要的。換言之,可能與轉(zhuǎn)移中的某個(gè)傳送相關(guān)聯(lián)的LL數(shù)據(jù),可以暫時(shí)從相應(yīng)的d/c傳送移位。此外,這種暫時(shí)的移位可以跨轉(zhuǎn)移邊界。
鏈路層(LL)可以具有例如控制位和循環(huán)冗余校驗(yàn)(CRC)位。控制位可以表示例如頭部、尾部或空閑。
回來參考圖8,應(yīng)該注意到,寫分組818正常地將僅僅包含寫請求和相關(guān)聯(lián)的數(shù)據(jù)。但是,在本發(fā)明中,如圖8所示,不需要這樣的限制。示出的寫分組818在其中具有寫請求轉(zhuǎn)移804、相關(guān)聯(lián)的數(shù)據(jù)轉(zhuǎn)移806、808、812、814和816,以及讀請求分組轉(zhuǎn)移810。
圖10圖示了的具有96位轉(zhuǎn)移1000的另一個(gè)實(shí)施例,其中數(shù)據(jù)總線寬度y是18位寬,鏈路層總線寬度z是4位寬。此實(shí)施例對單個(gè)轉(zhuǎn)移需要4個(gè)傳送,并且有64個(gè)數(shù)據(jù)位、8個(gè)校驗(yàn)位和鏈路層中的16位。每個(gè)轉(zhuǎn)移1002至1016可具有有效負(fù)載分組10xxa和相關(guān)聯(lián)的鏈路層(LL)分組10xxb。圖10可表示對處理器模塊的輸入。鏈路層(LL)可具有例如鏈路層控制位和CRC位。控制位可以是例如讀頭部、寫頭部、數(shù)據(jù)、帶尾部的數(shù)據(jù)、空閑、寫ack(確認(rèn))、流控制等等。
還要認(rèn)識到,雖然LL控制與有效負(fù)載相關(guān)聯(lián),但并不必同時(shí)發(fā)送。例如,如果處理器模塊具有讀取的數(shù)據(jù)將很快到達(dá)的提前的信息,則其就可能能夠提高性能。這樣,例如,LL中的早期讀頭部可以提供這樣的指示。例如,在圖10中,與轉(zhuǎn)移數(shù)據(jù)1006a相關(guān)聯(lián)的LL可能在時(shí)間上更早的位置,例如在位置1004b。這樣如圖11所示,諸如1106的轉(zhuǎn)移可能包含在位置1106a的有效負(fù)載和在位置1106b的LL控制。于是,圖11示出了轉(zhuǎn)移1100中鏈路層和有效負(fù)載的暫時(shí)移位。
入站邊帶鏈路層(LL)(進(jìn)入PMI 308)還可包含其他傳送和/或事務(wù)的信息。例如,LL可包含確認(rèn)出站寫命令的寫ack、用于出站流控制反饋的停止位、狀態(tài)指示(空閑還是數(shù)據(jù)有效負(fù)載等等)等等。而且,與轉(zhuǎn)移相關(guān)聯(lián)的LL可以傳達(dá)比單塊更多的信息,例如LL編碼可以指示是空閑的有效負(fù)載還是非空閑的有效負(fù)載,此外還指示是否是讀返回頭部、寫ack、停止標(biāo)志、空閑控制等等。另外,如上所述,應(yīng)認(rèn)識到該信息可以被暫時(shí)移位。
將信息暫時(shí)移位可允許降低接口的復(fù)雜度。例如,將讀返回頭部置于讀返回?cái)?shù)據(jù)的頻帶內(nèi),可能要求XMI 332的附加的功能,這是因?yàn)閄MI332可能必須將頭部和數(shù)據(jù)信息復(fù)用,并且XMI 332可能必須為進(jìn)入的讀返回?cái)?shù)據(jù)緩沖,以將存儲器讀的帶寬與略高的入站存儲器端口帶寬匹配,略高的入站存儲器端口帶寬是補(bǔ)償內(nèi)嵌頭部的帶寬開銷所必須的。這種附加的功能可能意味著額外的復(fù)雜度和可能的附加延遲。相反,通過將讀返回頭部置于暫時(shí)移位的邊帶中,可以使得XMI 332數(shù)據(jù)路徑以和存儲器總線相同的頻率工作,由此允許XMI 332在讀返回?cái)?shù)據(jù)路徑中沒有緩沖或復(fù)用的情況下工作。因此,使用與數(shù)據(jù)路徑并行的邊帶路徑(鏈路層),其中該邊帶路徑在相關(guān)聯(lián)的讀取數(shù)據(jù)之前(可能不是連續(xù)地)承載讀返回頭部,這可以允許操縱和控制邏輯在接收數(shù)據(jù)之前操作。如果可以在數(shù)據(jù)之前發(fā)送讀返回頭部,就可以實(shí)現(xiàn)減小延遲。頭部可以超前讀返回?cái)?shù)據(jù)0個(gè)或更多個(gè)轉(zhuǎn)移(讀返回偏移可以在初始化時(shí)確定)。早期讀返回頭部允許處理器將頭部解碼和數(shù)據(jù)操縱邏輯移出重要路徑,并將進(jìn)入的讀返回?cái)?shù)據(jù)直接驅(qū)動到處理器中合適的目的地。
讀返回頭部可以在數(shù)據(jù)之前發(fā)送的時(shí)間(偏移),可以是動態(tài)的和/或在時(shí)間的某個(gè)點(diǎn)上是固定的。例如,可以在系統(tǒng)初始化時(shí)確定固定的延遲。或者,系統(tǒng)可以在操作過程中確定這一點(diǎn),并可以使其變成靜態(tài)的。另一個(gè)實(shí)施例可以具有在讀返回頭部中編碼的對數(shù)據(jù)的偏移時(shí)間。這樣,本領(lǐng)域技術(shù)人員將認(rèn)識到有許多可能的實(shí)施例。
暫時(shí)移位的信息也可以允許降低PMI 308接口的復(fù)雜度。換言之,如果PMI 308在主數(shù)據(jù)路徑上的數(shù)據(jù)之前經(jīng)由邊帶發(fā)送信息,則PMI 308就可以降低復(fù)雜度和/或延遲。本領(lǐng)域技術(shù)人員將認(rèn)識到和入站方向一樣,也可以在出站方向上實(shí)現(xiàn)對延遲和/或復(fù)雜度的降低。
圖12圖示了存儲器端口協(xié)議1200的另一個(gè)實(shí)施例,其中數(shù)據(jù)和命令寬度是36位寬,鏈路層是4位??臻e轉(zhuǎn)移1202、1204、1216、1220和1234可在其各自的“a”部分(1202a、1204a、1216a、1220a和1234a)具有空閑的有效負(fù)載,并在其各自的“b”部分(1202b、1204b、1216b、1220b和1234b)具有各自的鏈路層(LL)控制碼。正常的寫分組1240僅具有與寫相關(guān)聯(lián)的數(shù)據(jù),例如寫請求1206轉(zhuǎn)移和寫數(shù)據(jù)轉(zhuǎn)移(1208-1214)。每個(gè)轉(zhuǎn)移都具有可指示附加信息的LL控制。例如,數(shù)據(jù)0、數(shù)據(jù)1和數(shù)據(jù)2(分別是1208a、1210a和1212a)可以在鏈路層(LL)控制中具有信息(分別是1208b、1210b和1212b),以指示該數(shù)據(jù)是寫數(shù)據(jù)。LL 1214b可表示1214a是寫數(shù)據(jù)和寫數(shù)據(jù)的尾部。LL 1206b可指示關(guān)于寫請求1206a命令的附加信息。
轉(zhuǎn)移1218示出了未搶先于寫分組的讀請求。讀請求轉(zhuǎn)移1218具有相關(guān)聯(lián)的讀請求1218a以及在相關(guān)聯(lián)的鏈路層1218b中的可能的附加信息,其中讀請求1218a包括讀請求標(biāo)識?;蛘撸x請求標(biāo)識和/或附加信息可以位于1218a和/或1218b中。
在1228示出被讀請求搶先的寫分組。這里,具有寫請求轉(zhuǎn)移1222和寫數(shù)據(jù)轉(zhuǎn)移1224、1226、1230和1232的寫請求分組,在數(shù)據(jù)1轉(zhuǎn)移1226和數(shù)據(jù)2轉(zhuǎn)移1230之間具有讀請求轉(zhuǎn)移1228。具有讀請求1228a和相關(guān)聯(lián)的鏈路層1228b的此讀請求轉(zhuǎn)移1228,已經(jīng)搶先于寫請求轉(zhuǎn)移1222。
如上所解釋的,對于正常的寫分組1240,寫請求轉(zhuǎn)移1222以及相關(guān)聯(lián)的寫數(shù)據(jù)轉(zhuǎn)移1224、1226、1230和1232,具有有效負(fù)載“a”和相關(guān)聯(lián)的鏈路層控制“b”。
在以下討論中詳細(xì)給出的是對于命令、字段位定義、鏈路層控制等等的可能的實(shí)施例。要認(rèn)識到的是,這些具體例子并不認(rèn)為是限制本發(fā)明前面的討論。這些例子僅僅是為了解釋的目的。
再參考圖3,PMI 308可以向存儲器端口320發(fā)出存儲命令和配置命令。在此例子中,XMI 332不在存儲器端口320上發(fā)出任何命令。另外,未示出部分的存儲器寫操作。
有三種一般類型的命令存儲器、設(shè)備和配置。
存儲器命令,例如讀、寫和取消,目標(biāo)一般是主存儲器,所述主存儲器作為單純的存儲器(例如DRAM)連接到和/或包含在XMB 330中。
設(shè)備命令,例如讀和寫,目標(biāo)一般是不作為單純存儲器的存儲器單元。例如,寫入映射到存儲器空間的設(shè)備寄存器和/或閃存,其中寫操作(以及有時(shí))讀操作有副作用。在這種情況下,每個(gè)寫命令可能都要恰好在目標(biāo)處執(zhí)行一次。此外,這樣的命令可能要以與源發(fā)出命令相同的順序在目標(biāo)處執(zhí)行。
設(shè)備命令類似于存儲器命令,并可以具有指示數(shù)據(jù)傳送大小的大小字段或位。可能的大小可以包括,例如1到8個(gè)字節(jié)、16、32或64個(gè)字節(jié),和/或全高速緩存線(full cacheline)的數(shù)據(jù)。不論數(shù)據(jù)傳送大小如何,命令有效負(fù)載的大小可以是全高速緩存線,從數(shù)據(jù)傳送到高速緩存線按需要填充1和/或0。
設(shè)備命令還可具有屏蔽位,以支持部分讀和/或?qū)?。例如對于讀命令,此屏蔽可以指示要讀哪些字節(jié)的單元,以及在讀返回中哪些字節(jié)是有效的。對于寫命令,字節(jié)屏蔽可以表示有效負(fù)載中哪些字節(jié)是有效的。
配置命令,例如讀和寫,可以被認(rèn)為是特殊類別的設(shè)備命令,其目標(biāo)可以是設(shè)備和/或寄存器,例如PCI配置空間中的存儲單元。另外,因?yàn)檫@些命令的特性,所以PMI 308可以選擇一次只有一個(gè)待完成的配置命令。
所有的命令類型可以共享一種共同的基本格式。例如,命令轉(zhuǎn)移可以包含72位的命令,在轉(zhuǎn)移有效負(fù)載中編碼成64個(gè)命令位和8個(gè)校驗(yàn)位。為了使存儲器讀請求的延遲最小,讀命令格式可以在轉(zhuǎn)移的前半部分具有所有的關(guān)鍵信息,由此使得能夠在XMI 332接收整個(gè)轉(zhuǎn)移之前就調(diào)度對存儲器的讀請求。
命令中的早期指示符,例如1位,可以指示轉(zhuǎn)移的前半部分是否包含足夠開始存儲器讀請求的信息,或者XMI 332是否必須積累整個(gè)轉(zhuǎn)移中的信息??梢詢H僅對存儲器讀命令設(shè)置這一位;否則XMI 332可能會對配置命令、設(shè)備命令或存儲器寫命令不正確地開始存儲器讀請求。然而,不是所有的存儲器讀命令可以使早期位被設(shè)置為活動的。例如,在轉(zhuǎn)移的后半部分中具有具體的調(diào)度信息(例如流標(biāo)識或優(yōu)先級)的任何存儲器讀命令,可能使早期位不活動,以迫使XMI 332在調(diào)度存儲器讀請求之前考慮該信息。
命令目的地位可以指示命令類型存儲器命令、設(shè)備命令或者配置命令。
在一個(gè)實(shí)施例中,事務(wù)(標(biāo)記)位與讀/寫位一起,構(gòu)成了對每個(gè)命令的唯一ID。唯一ID可能直到PMI 308已接收到對于具有相關(guān)聯(lián)的事務(wù)ID的該類型的任何先前命令的響應(yīng),或者PMI 308已確定具有該事務(wù)ID的該讀/寫(rd/wr)類型的任何先前命令已經(jīng)超時(shí)了,才可以對下面的命令重新使用。
取消位是指示存儲器讀命令是否正在取消前一個(gè)存儲器讀命令的修飾詞。
在存儲器命令的情況下,偏移位標(biāo)識從由存儲器讀和寫操作的地址位指定的存儲器單元的偏移。在設(shè)備命令的情況下,與地址位耦合的該偏移可以指定目標(biāo)單元(例如存儲器映射的設(shè)備寄存器)。
如上所述,流id/優(yōu)先級可以被定義來將存儲器讀命令所屬的流或者存儲器讀命令優(yōu)先級編碼,以使得XMI 332能夠?qū)Σ煌拇鎯ζ髡埱髴?yīng)用不同的調(diào)度策略。例如,該字段可以指示存儲器命令是否屬于等時(shí)流(isochronous stream),并由此可以要求具體的服務(wù)時(shí)間,以滿足等時(shí)數(shù)據(jù)傳送期限時(shí)間。
屏蔽位可以是位向量字節(jié)屏蔽,其指示在設(shè)備和配置命令的部分讀和寫中哪些字節(jié)是有效的。
大小位可以指示設(shè)備和配置命令的數(shù)據(jù)傳送大小。這些命令可能的數(shù)據(jù)傳送大小有1到8個(gè)字節(jié)(包括屏蔽位)、16字節(jié)、32字節(jié)、64字節(jié)等等以及全高速緩存線的大小。
可以在帶校驗(yàn)位的72位命令上使用糾錯(cuò)碼(ECC)來保護(hù)每個(gè)命令的完整性,所述校驗(yàn)位分布在轉(zhuǎn)移的后半部分。但是,直到已經(jīng)接收到整個(gè)命令轉(zhuǎn)移并且ECC錯(cuò)誤檢查已經(jīng)完成,XMI 332才可能希望將早期位看作提示,并將為該命令早期調(diào)度的任何存儲器讀請求看作推測性的。因此,XMI 332可能要確保其有足夠的資源來在這樣推測性的早期存儲器讀請求被調(diào)度之前處理它。例如,XMI 332必須確保調(diào)度早期讀請求不會導(dǎo)致存儲器控制器讀請求隊(duì)列的溢出。
對于寫命令字段,為了簡化此實(shí)施例中的編碼和解碼,這些字段可以和讀命令的相同,除了偏移和碼字段。
圖13圖示了存儲器命令格式1300的一個(gè)實(shí)施例。在此例子中,假定了具有每個(gè)轉(zhuǎn)移四個(gè)傳送和每個(gè)傳送18位的物理層。換言之,命令有72位,在4個(gè)傳送中傳遞。還假定每個(gè)傳送(傳送0、1、2、3)對應(yīng)于通過互連的一個(gè)位單元時(shí)間。例如,在第一傳送(傳送0)期間,可以傳送低階的地址位和讀/寫命令。在傳送1期間可以傳送高階的地址位和早期讀指示符。在傳送2和3期間,可以傳送指示命令目的地、地址偏移、事務(wù)ID、校驗(yàn)、屏蔽、流ID、大小、取消命令、優(yōu)先級等等的位。
圖14圖示了設(shè)備命令格式1400的一個(gè)實(shí)施例,其中假定了具有每個(gè)轉(zhuǎn)移四個(gè)傳送和每個(gè)傳送18位的物理層。這里,在傳送0期間,可以傳送低階的地址位和讀/寫命令。在傳送1期間可以發(fā)送高階的地址位和早期讀指示符。在傳送2和3期間,可以傳送指示命令目的地、地址偏移、事務(wù)ID、校驗(yàn)位、屏蔽位、傳送大小等等的信息。
圖15圖示了配置命令格式1500的一個(gè)實(shí)施例,其中我們假定具有每個(gè)轉(zhuǎn)移四個(gè)傳送和每個(gè)傳送18位的物理層。在傳送0期間,可以傳送低階的配置地址位和讀/寫命令。在傳送1期間可以發(fā)送高階的配置地址位和早期讀指示符。在傳送2和3期間,可以傳送指示命令目的地、地址偏移、事務(wù)ID、校驗(yàn)位、屏蔽位等等的信息。
如前所述,鏈路層(LL)具有出站格式和入站格式兩者。圖16圖示了一個(gè)實(shí)施例的出站鏈路層格式1600。基本的出站鏈路層格式可以具有例如每個(gè)轉(zhuǎn)移8位。此基本格式可以被可選地?cái)U(kuò)展,例如有另外的8位,成為每個(gè)轉(zhuǎn)移總共16位。圖16示出了每個(gè)轉(zhuǎn)移16位的格式。LL信號0用于傳遞在傳送0:3(四個(gè)傳送0、1、2和3)期間發(fā)送的信息(info)位和校驗(yàn)位。該信息位(一個(gè)或多個(gè))可以指示該轉(zhuǎn)移是否是非空閑的,即該轉(zhuǎn)移是包含命令或數(shù)據(jù),還是空閑的。LL信號1用于傳遞頭部、尾部和校驗(yàn)位。尾部位指示分組的末端,頭部位指示該轉(zhuǎn)移是否包含命令。頭部和尾部位可以編碼其他的狀態(tài),例如轉(zhuǎn)移有效負(fù)載是數(shù)據(jù)并且不是分組中最后的數(shù)據(jù)有效負(fù)載;轉(zhuǎn)移有效負(fù)載是數(shù)據(jù)并且是分組的最后轉(zhuǎn)移;轉(zhuǎn)移有效負(fù)載是寫命令;以及轉(zhuǎn)移有效負(fù)載是讀命令并且是分組的最后轉(zhuǎn)移。校驗(yàn)位包括對16位的鏈路層格式計(jì)算的CRC。擴(kuò)展模式位在LL信號2和3上發(fā)送。
擴(kuò)展模式位還可以在鏈路層中,并且可用于帶鎖步存儲器端口(lockstep Memory Port)的數(shù)據(jù)轉(zhuǎn)移。為了在帶鎖步存儲器端口的XMI(332)中支持錯(cuò)誤校驗(yàn),擴(kuò)展模式位可以將發(fā)送給其他存儲器端口的一半高速緩存線的錯(cuò)誤綜合特征(error syndrome)編碼。
入站鏈路層可以具有多種格式。例如,在一個(gè)實(shí)施例中,有四種不同的入站鏈路層格式讀返回頭部、寫確認(rèn)、狀態(tài)和配置。在以下所描述的實(shí)施例中,這四種鏈路層格式可能共享共同的多個(gè)位。圖17圖示了共同入站鏈路層格式1700的一個(gè)實(shí)施例。
信息位表示轉(zhuǎn)移有效負(fù)載是否非空閑,即包含數(shù)據(jù),還是空閑。校驗(yàn)位包括對16位的鏈路層格式計(jì)算的CRC。
類型位可以表示四種不同的入站鏈路層格式之一,例如讀返回頭部、寫確認(rèn)、狀態(tài)和配置。
圖18示出了讀返回頭部格式1800的一個(gè)實(shí)施例。這里,標(biāo)記位可以以例如小端(little endian)的順序來編碼事務(wù)ID。控制位可以指示讀返回具有數(shù)據(jù),并且第一數(shù)據(jù)有效負(fù)載轉(zhuǎn)移從離當(dāng)前轉(zhuǎn)移的開頭給定偏移個(gè)的轉(zhuǎn)移開始。如果偏移是0,則第一數(shù)據(jù)有效負(fù)載在當(dāng)前轉(zhuǎn)移中開始??刂莆贿€可以指示讀返回頭部是nack(否定確認(rèn)的縮寫),在這種情況下沒有相關(guān)聯(lián)的數(shù)據(jù)。讀返回nack通知PMI 308,由于接收到讀取消命令XMI332已經(jīng)取消了原始的存儲器讀命令,因此PMI 308不必期望該讀命令的讀返回?cái)?shù)據(jù)了。如果XMI 332取消了讀命令,那其就僅僅發(fā)送讀返回nack。這樣,如果XMI 332丟棄了讀取消命令而沒有取消讀命令,則其不發(fā)送讀返回nack。
圖19示出了寫確認(rèn)格式1900的一個(gè)實(shí)施例。在此例子中,除了沒有控制位,這種格式和上面討論的讀返回頭部相同。
圖20示出了狀態(tài)格式2000的一個(gè)實(shí)施例。存儲器端口320可以使用狀態(tài)格式用于三個(gè)功能將出站流控制信息返回給處理器;傳遞異步信號;以及指示轉(zhuǎn)移的鏈路層空閑。
如果停止位活動,則處理器不可以向XMI 332發(fā)送任何寫命令,除非處理器接收到具有鏈路層狀態(tài)格式并且停止位不活動的后繼轉(zhuǎn)移。當(dāng)XMI332希望對進(jìn)入的寫命令進(jìn)行流控制時(shí),例如當(dāng)XMI 332的寫緩存超過了給定閾值時(shí),XMI 332就斷言停止位。如果停止位不活動,則處理器可以向XMI 332發(fā)送寫命令。
信號位可以包括信號碼。XMI 332通過恰當(dāng)?shù)卦O(shè)置信號碼,可以與讀返回?cái)?shù)據(jù)并行地異步發(fā)信號通知處理器進(jìn)行某種操作。
本領(lǐng)域技術(shù)人員將認(rèn)識到,對于以上實(shí)施例的例子,可以類似地編碼配置格式,以提供入站鏈路層的功能來傳遞配置信息。
充分詳細(xì)地描述了這些實(shí)施例,以使得本領(lǐng)域技術(shù)人員可以實(shí)現(xiàn)本發(fā)明,并且應(yīng)該理解可以采用其他實(shí)施例,可以在不偏離本發(fā)明范圍的情況下進(jìn)行邏輯、機(jī)械、電氣和其他改變。應(yīng)認(rèn)識到上述體系結(jié)構(gòu)和功能可以具有其他實(shí)施例。任何格式、命令等等都可以具有不同的位分配以及對位的不同定義。例如,讀返回頭部格式可以具有不同的位分配以及對位的不同定義,并且順序可以是大端(big endian),而非小端。
另外,雖然在說明中為了解釋,在實(shí)施例中相對于入站和出站方向描述了本發(fā)明的某些方面,但應(yīng)該理解到它們可以應(yīng)用到入站和出站兩者。例如,可以與轉(zhuǎn)移中具體傳送相關(guān)聯(lián)的鏈路層數(shù)據(jù),可以暫時(shí)與各個(gè)傳送移位,并且該傳送可以是沿入站和/或出站方向。例如,PMI 308可以發(fā)出頭部,該頭部在該信息之前(以一個(gè)偏移)經(jīng)由鏈路層發(fā)送到XMI 332。
應(yīng)理解到機(jī)器可讀介質(zhì)可以包括以機(jī)器(例如計(jì)算機(jī))可讀的形式存儲或傳輸信息的任何機(jī)制。例如,機(jī)器可讀介質(zhì)包括只讀存儲器(ROM);隨機(jī)訪問存儲器(RAM);磁盤存儲介質(zhì);光存儲介質(zhì);閃存設(shè)備;電、光、聲或其他形式的傳播信號(例如載波、紅外信號、數(shù)字信號等)等等。
本領(lǐng)域技術(shù)人員應(yīng)該理解到,使用計(jì)算機(jī)的實(shí)現(xiàn)可能需要,在加電或復(fù)位時(shí),在作為裝置執(zhí)行方法或任務(wù)之前,該計(jì)算機(jī)配置自身。這通常稱作初始化,并可包括但不限于設(shè)置芯片的時(shí)序;確定所安裝的設(shè)備;配置子系統(tǒng),例如存儲器;檢查訪問速度;檢查互連等等。要理解的是,在準(zhǔn)備全功能操作中,計(jì)算機(jī)系統(tǒng)可以進(jìn)行許多檢查、設(shè)置許多參數(shù)等等。例如,計(jì)算機(jī)可以在初始化時(shí)確定所安裝的存儲器,并改變設(shè)置和參數(shù)來確定優(yōu)化接口速度、時(shí)序設(shè)置等等。另外,計(jì)算機(jī)在操作的同時(shí)還可以進(jìn)行檢查以確保正確的操作,并且如果需要還可以改變設(shè)置等等。
于是,描述了通過邊帶讀返回頭部來優(yōu)化存儲器讀操作的方法和裝置。
權(quán)利要求
1.一種方法,包括接收讀請求;響應(yīng)于所述讀請求啟動讀操作;接收來自所述讀操作的結(jié)果;以及在發(fā)送所述結(jié)果之前發(fā)送讀返回頭部。
2.如權(quán)利要求1所述的方法,其中在邊帶中發(fā)送所述讀返回頭部。
3.如權(quán)利要求2所述的方法,其中在啟動時(shí)確定所述提前的時(shí)間。
4.一種方法,包括響應(yīng)于讀請求啟動讀操作;以及在接收來自所述讀操作的結(jié)果之前發(fā)送讀返回頭部。
5.如權(quán)利要求4所述的方法,其中在邊帶中發(fā)送所述讀返回頭部。
6.如權(quán)利要求5所述的方法,其中在啟動時(shí)確定所述提前的時(shí)間。
7.一種處理器系統(tǒng)存儲器系統(tǒng)接口,包括被耦合以從處理器系統(tǒng)源接收數(shù)據(jù)的存儲器系統(tǒng)輸入端;被耦合以從所述處理器系統(tǒng)源接收存儲器控制信號的存儲器系統(tǒng)控制輸入端;被耦合以經(jīng)由第一鏈路向所述處理器系統(tǒng)源發(fā)送數(shù)據(jù)的存儲器系統(tǒng)輸出端;和被耦合以經(jīng)由第二鏈路向所述處理器系統(tǒng)源發(fā)送存儲器控制信號的存儲器系統(tǒng)控制輸出端。
8.如權(quán)利要求7所述的裝置,其中所述經(jīng)由第一鏈路向所述處理器系統(tǒng)源發(fā)送的數(shù)據(jù),在所述經(jīng)由第二鏈路向所述處理器系統(tǒng)源發(fā)送存儲器控制信號之后發(fā)送。
9.如權(quán)利要求7所述的裝置,其中所述第一鏈路和所述第二鏈路不是同一鏈路。
10.一種機(jī)器可讀介質(zhì),其上存儲有指令,當(dāng)所述指令當(dāng)被系統(tǒng)執(zhí)行時(shí)使得所述系統(tǒng)進(jìn)行以下步驟從源接受讀請求;響應(yīng)于所述讀請求而啟動讀操作;從所述讀操作接收數(shù)據(jù);向所述源發(fā)送讀返回頭部;以及向所述源發(fā)送所述數(shù)據(jù)。
11.如權(quán)利要求10所述的機(jī)器可讀介質(zhì),其中所述讀返回頭部在所述數(shù)據(jù)之前發(fā)送。
12.如權(quán)利要求10所述的機(jī)器可讀介質(zhì),其中所述讀返回頭部與所述數(shù)據(jù)經(jīng)由不同的鏈路被發(fā)送到所述源。
13.一種系統(tǒng),包括處理器,其能夠發(fā)出讀請求、寫請求和控制信息;和耦合到所述處理器和存儲器的存儲器接口設(shè)備,其中所述存儲器接口設(shè)備接收讀請求、寫請求和控制信息,并向所述處理器發(fā)送控制信號和來自所述存儲器的數(shù)據(jù)。
14.如權(quán)利要求13所述的系統(tǒng),其中所述控制信號和所述來自所述存儲器的數(shù)據(jù)經(jīng)由不同鏈路被發(fā)送到所述處理器。
15.如權(quán)利要求14所述的系統(tǒng),其中在所述來自所述存儲器的數(shù)據(jù)被發(fā)送到所述處理器之前,所述控制信號被發(fā)送到所述處理器。
16.一種裝置,包括用于接收讀請求的裝置;用于發(fā)送讀返回頭部的裝置;和用于發(fā)送所讀取數(shù)據(jù)的裝置。
17.如權(quán)利要求16所述的裝置,其中所述用于發(fā)送所述讀返回頭部的裝置不同于所述用于發(fā)送所讀取數(shù)據(jù)的裝置。
18.如權(quán)利要求17所述的裝置,其中在發(fā)送所述所讀取數(shù)據(jù)之前,完成發(fā)送所述讀返回頭部。
19.如權(quán)利要求16所述的裝置,其中所述用于發(fā)送所讀取數(shù)據(jù)的裝置,還包括在讀返回?cái)?shù)據(jù)路徑中以與存儲器讀數(shù)據(jù)率相同的數(shù)據(jù)率發(fā)送讀返回?cái)?shù)據(jù)的裝置。
20.如權(quán)利要求19所述的裝置,其中所述讀返回?cái)?shù)據(jù)率和所述存儲器讀數(shù)據(jù)率,和外部存儲器接口數(shù)據(jù)率相同。
21.如權(quán)利要求20所述的裝置,其中在所述讀返回?cái)?shù)據(jù)路徑中沒有對所述存儲器讀數(shù)據(jù)的復(fù)用。
全文摘要
本發(fā)明公開了通過邊帶讀返回頭部來優(yōu)化存儲器讀操作的方法和裝置。接收讀請求來啟動讀操作,并且在發(fā)送所讀取的結(jié)果之前發(fā)送讀返回頭部。
文檔編號G06F13/16GK1585933SQ02822449
公開日2005年2月23日 申請日期2002年11月7日 優(yōu)先權(quán)日2001年11月12日
發(fā)明者蘭迪·奧斯本 申請人:英特爾公司