欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

在存儲(chǔ)器互連中進(jìn)行讀發(fā)起優(yōu)化的方法和裝置的制作方法

文檔序號(hào):6559961閱讀:151來(lái)源:國(guó)知局
專利名稱:在存儲(chǔ)器互連中進(jìn)行讀發(fā)起優(yōu)化的方法和裝置的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及存儲(chǔ)器(memory)連接。更具體而言,本發(fā)明涉及通過(guò)在存儲(chǔ)器互連中進(jìn)行讀發(fā)起優(yōu)化來(lái)優(yōu)化存儲(chǔ)器讀操作的方法和裝置。
背景技術(shù)
隨著微處理器變得更快,對(duì)更快的存儲(chǔ)器互連的需求也在增長(zhǎng)。微處理器性能已經(jīng)大大提高。系統(tǒng)性能總的來(lái)說(shuō)未能跟上微處理器性能的提高,這是由于多方面的原因。一個(gè)原因是諸如硬盤驅(qū)動(dòng)器之類的大容量存儲(chǔ)設(shè)備的機(jī)械特性。
影響系統(tǒng)性能的另一個(gè)方面是微處理器外部的存儲(chǔ)器。此存儲(chǔ)器可能由外部高速緩存和外部主存兩者組成,所述主存一般速度較慢,但大小較大。對(duì)外部存儲(chǔ)器的訪問(wèn)可能具有延遲和實(shí)現(xiàn)的復(fù)雜性,這些影響了性能。降低延遲和降低實(shí)現(xiàn)復(fù)雜性的能力是有益的。對(duì)存儲(chǔ)器互連進(jìn)行優(yōu)化的協(xié)議也是有益的。

發(fā)明內(nèi)容
本發(fā)明的一個(gè)技術(shù)方案提供了一種方法,包括接收寫分組內(nèi)的讀請(qǐng)求遷徙,以及在接收讀請(qǐng)求遷徙期間,向存儲(chǔ)器分派來(lái)自所述讀請(qǐng)求遷徙的提前讀請(qǐng)求。
本發(fā)明的另一技術(shù)方案提供了一種裝置,該裝置包括具有輸入、輸出和控制的存儲(chǔ)器系統(tǒng),以及具有存儲(chǔ)器輸入、存儲(chǔ)器輸出和存儲(chǔ)器控制的存儲(chǔ)器端口,其中所述存儲(chǔ)器系統(tǒng)輸入被耦合以接收所述存儲(chǔ)器端口存儲(chǔ)器輸出,所述存儲(chǔ)器端口存儲(chǔ)器輸入被耦合以接收所述存儲(chǔ)器系統(tǒng)輸出,并且所述存儲(chǔ)器系統(tǒng)控制被耦合到所述存儲(chǔ)器端口存儲(chǔ)器控制;其中所述存儲(chǔ)器端口具有存儲(chǔ)器端口協(xié)議,該協(xié)議通過(guò)在接收讀請(qǐng)求遷徙期間向存儲(chǔ)器分派來(lái)自所述讀請(qǐng)求遷徙的讀請(qǐng)求,從而支持所述提前讀請(qǐng)求,并且其中所述讀請(qǐng)求遷徙位于寫分組內(nèi)。
本發(fā)明的又一技術(shù)方案提供了一種系統(tǒng),該系統(tǒng)包括能夠發(fā)出來(lái)自讀請(qǐng)求遷徙的提前讀請(qǐng)求的處理器,其中所述讀請(qǐng)求遷徙位于寫分組內(nèi);還包括耦合到所述處理器的存儲(chǔ)器設(shè)備,該存儲(chǔ)器設(shè)備能夠在所述讀請(qǐng)求遷徙正被接收時(shí)接收所述提前讀請(qǐng)求,并執(zhí)行對(duì)存儲(chǔ)器的提前讀。
本發(fā)明的再一技術(shù)方案提供了一種裝置,包括用于發(fā)出來(lái)自讀請(qǐng)求遷徙的提前讀請(qǐng)求的裝置,其中所述讀請(qǐng)求遷徙位于寫分組內(nèi);還包括用于使存儲(chǔ)器設(shè)備在所述讀請(qǐng)求遷徙正被所述存儲(chǔ)器設(shè)備接收時(shí)接收所述提前讀請(qǐng)求并執(zhí)行對(duì)存儲(chǔ)器的提前讀的裝置。
本發(fā)明的另外一個(gè)技術(shù)方案提供了一種方法,包括接收寫分組內(nèi)的讀請(qǐng)求遷徙的前一半,以及在接收所述讀請(qǐng)求遷徙的后一半之前,向存儲(chǔ)器分派來(lái)自所述讀請(qǐng)求遷徙的讀請(qǐng)求。


在附圖中,示例性而非限制性地圖示了本發(fā)明,其中相同的標(biāo)號(hào)指示相似的元件,其中圖1根據(jù)一個(gè)實(shí)施例,示出了可在其中實(shí)施本發(fā)明的網(wǎng)絡(luò)環(huán)境;圖2根據(jù)一個(gè)實(shí)施例,示出了計(jì)算機(jī)系統(tǒng)的框圖;圖3根據(jù)一個(gè)實(shí)施例,示出了存儲(chǔ)器端口接口;圖4A和4B示出了讀請(qǐng)求分組搶先于寫請(qǐng)求分組的兩個(gè)實(shí)施例;圖5根據(jù)一個(gè)實(shí)施例,示出了向存儲(chǔ)器分派提前讀請(qǐng)求;圖6A和6B示出了發(fā)送讀返回頭部(header)的兩個(gè)實(shí)施例;圖7根據(jù)一個(gè)實(shí)施例,示出了存儲(chǔ)器端口接口;圖8根據(jù)一個(gè)實(shí)施例,示出了存儲(chǔ)器端口協(xié)議;
圖9根據(jù)一個(gè)實(shí)施例,示出了需要4次傳輸?shù)倪w徙(flit);圖10根據(jù)另一實(shí)施例,示出了遷徙;圖11根據(jù)一個(gè)實(shí)施例,示出了遷徙中的鏈路層與有效載荷的時(shí)間錯(cuò)開;圖12根據(jù)另一實(shí)施例,示出了存儲(chǔ)器端口協(xié)議;圖13根據(jù)一個(gè)實(shí)施例,示出了存儲(chǔ)器命令格式;圖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í)施例方式
本發(fā)明描述了通過(guò)在存儲(chǔ)器互連中進(jìn)行讀發(fā)起優(yōu)化來(lái)對(duì)存儲(chǔ)器讀操作進(jìn)行優(yōu)化的方法和裝置。
在以下描述中,為說(shuō)明目的,闡述了許多具體細(xì)節(jié),以提供對(duì)本發(fā)明的透徹理解。然而對(duì)本領(lǐng)域技術(shù)人員來(lái)說(shuō),很顯然沒有這些具體細(xì)節(jié)也可以實(shí)施本發(fā)明。在某些情況下,公知的結(jié)構(gòu)和設(shè)備以框圖的形式示出而未詳細(xì)示出,以免模糊了本發(fā)明。
圖1示出了網(wǎng)絡(luò)環(huán)境100,所描述的技術(shù)可以應(yīng)用在該網(wǎng)絡(luò)環(huán)境中。如圖所示,若干個(gè)處理器104-1到104-P以及存儲(chǔ)器106-1到106-P通過(guò)網(wǎng)絡(luò)102彼此相連,所述網(wǎng)絡(luò)102例如是計(jì)算機(jī)總線。注意,網(wǎng)絡(luò)102或者也可以是本地網(wǎng)絡(luò)或包括本地網(wǎng)絡(luò)。此處所描述的方法和裝置本質(zhì)上可以應(yīng)用于任何類型的通信裝置或設(shè)備,不管是本地的還是遠(yuǎn)程的。
圖2以框圖形式示出了計(jì)算機(jī)系統(tǒng)200,在一個(gè)實(shí)施例中,可在所述計(jì)算機(jī)系統(tǒng)200中實(shí)施本發(fā)明??偩€系統(tǒng)202將以下部件互連起來(lái)中央處理單元(CPU)204、只讀存儲(chǔ)器(ROM)206、隨機(jī)訪問(wèn)存儲(chǔ)器(RAM)208、存儲(chǔ)設(shè)備(storage)210、顯示器220、音頻設(shè)備222、鍵盤224、指針設(shè)備226、各種輸入/輸出(I/O)設(shè)備228和通信設(shè)備230。所述總線系統(tǒng)202例如可以是下列總線中的一種或多種系統(tǒng)總線、外圍組件互連(PCI)、高級(jí)圖形端口(AGP)、小型計(jì)算機(jī)系統(tǒng)接口(SCSI)、電氣與電子工程師協(xié)會(huì)(IEEE)標(biāo)準(zhǔn)號(hào)1394(火線)、通用串行總線(USB),等等。CPU 204可以是單個(gè)、多個(gè)或者甚至是分布式的計(jì)算資源。此外,CPU 204所例示的子系統(tǒng)可以具有到例如存儲(chǔ)器之類的其它子系統(tǒng)的單獨(dú)總線。一個(gè)這樣的例子是用于圖形的,例如用于AGP。另一個(gè)例子是到CPU 204外部的存儲(chǔ)器的存儲(chǔ)器端口接口,所述存儲(chǔ)器例如是ROM 206、RAM 208,等等。
如下面所詳細(xì)描述的那樣,應(yīng)該理解的是,能夠加速操作和/或降低延遲和/或復(fù)雜性的存儲(chǔ)器端口接口和/或協(xié)議是有益的。例如,在對(duì)存儲(chǔ)器的讀請(qǐng)求中,如下面所詳細(xì)描述的那樣,可以通過(guò)首先僅發(fā)送發(fā)起存儲(chǔ)器讀所需的信息,而在接收整個(gè)讀請(qǐng)求之前開始實(shí)際的對(duì)存儲(chǔ)器的讀。例如,如果首先發(fā)送地址,則存儲(chǔ)器子系統(tǒng)就可以開始讀存儲(chǔ)器內(nèi)容。讀請(qǐng)求可能只想要正被訪問(wèn)的字中的一個(gè)字節(jié),然而,這個(gè)“僅需字節(jié)”的信息可能是在地址之后被發(fā)送,并且及時(shí)到達(dá)使得存儲(chǔ)器子系統(tǒng)隨后僅發(fā)送所請(qǐng)求的字節(jié)。這樣,操作就可以并行和/或先于其它操作地進(jìn)行。類似地,如果存儲(chǔ)器子系統(tǒng)知道它已訪問(wèn)存儲(chǔ)器并將在固定時(shí)間之后得到結(jié)果,則如下面所詳細(xì)描述的那樣,可以在實(shí)際數(shù)據(jù)之前發(fā)送一個(gè)讀返回頭部。這可以使接收數(shù)據(jù)的設(shè)備知道數(shù)據(jù)將要到來(lái),從而做好準(zhǔn)備。例如,讀返回頭部可以具有標(biāo)識(shí)出將要到來(lái)的數(shù)據(jù)與哪個(gè)讀請(qǐng)求相關(guān)聯(lián)的信息,從而允許設(shè)備在所述數(shù)據(jù)到來(lái)之前就確定它要去往何處。通過(guò)在實(shí)際數(shù)據(jù)之前發(fā)送這個(gè)讀返回頭部信息,設(shè)備就有時(shí)間在數(shù)據(jù)實(shí)際到來(lái)之前確定其目的地。
圖3以框圖形式示出了存儲(chǔ)器端口接口300的一個(gè)實(shí)施例。在此實(shí)施例中,存儲(chǔ)器端口320是處理器(在處理器模塊310內(nèi))及其本地存儲(chǔ)器(340和342)之間的快速高引腳效率互連。存儲(chǔ)器端口接口的協(xié)議層(有時(shí)稱為存儲(chǔ)器端口協(xié)議)獨(dú)立于任何具體的存儲(chǔ)器技術(shù),從而將處理器與存儲(chǔ)器技術(shù)和未來(lái)的存儲(chǔ)器發(fā)展問(wèn)題隔離開來(lái)。所述協(xié)議層具有作為本發(fā)明主題的多種具體特征,用于降低存儲(chǔ)器請(qǐng)求的延遲并且降低實(shí)現(xiàn)的復(fù)雜性等等。
通過(guò)例如IO 302、存儲(chǔ)器端口320等,處理器模塊310可以具有到各種其它設(shè)備的接口??梢哉J(rèn)為存儲(chǔ)器端口320是從處理器模塊310到XMB(外部存儲(chǔ)器橋)330的專用接口,如圖3所示。XMB 330可以包含存儲(chǔ)器控制器338,并接口到本地存儲(chǔ)器例如DRAM 340和342這兩組。因此,XMB 330封裝了存儲(chǔ)器相關(guān)的信息,例如存儲(chǔ)器類型(技術(shù)和速度)、存儲(chǔ)器結(jié)構(gòu)(DRAM大小、每個(gè)模塊的DRAM數(shù),以及通道數(shù)),以及存儲(chǔ)器控制(定時(shí)、刷新和功率管理)。
存儲(chǔ)器端口320可以由物理互連和協(xié)議這兩者組成。所述物理互連可以由若干并行互連組成,或者可以被認(rèn)為是若干并行互連。例如,可能有一個(gè)用于數(shù)據(jù)的主鏈路和另一個(gè)用于控制的鏈路層(有時(shí)稱為邊帶(sideband))。所述協(xié)議可以由在物理互連上傳送的命令、數(shù)據(jù)、響應(yīng)等組成。例如,存儲(chǔ)器端口命令可以由以下部分組成存儲(chǔ)器讀和寫;設(shè)備讀和寫;以及配置讀和寫。此外,鏈路層可以具有諸如讀返回頭部、寫確認(rèn)、狀態(tài)等等的傳入(inbound)和傳出(outbound)信息。
存儲(chǔ)器端口流量可以由存儲(chǔ)器、設(shè)備及配置讀和寫命令組成。為了使XMB 330的復(fù)雜性最低,對(duì)于一個(gè)實(shí)施例,處理器存儲(chǔ)器接口(PMI)308發(fā)起所有數(shù)據(jù)傳輸。為了進(jìn)一步降低復(fù)雜性,對(duì)于一個(gè)實(shí)施例,存儲(chǔ)器端口320不支持XMB 330所發(fā)起的數(shù)據(jù)傳輸。在一個(gè)實(shí)施例中,通過(guò)使存儲(chǔ)器端口320不支持在XMB 330中或通過(guò)XMB 330的I/O或圖形設(shè)備,降低了復(fù)雜性。可以通過(guò)使存儲(chǔ)器端口320不支持任何一致性(coherency)流量,來(lái)實(shí)現(xiàn)復(fù)雜性的進(jìn)一步降低。
在處理器模塊310中,存儲(chǔ)器端口320包括封裝在PMI 308中的功能。PMI 308可以包括諸如寫緩沖器、流控制、錯(cuò)誤處理,以及控制和狀態(tài)寄存器等等。在XMB 330處,存儲(chǔ)器端口320可以包括封裝在外部存儲(chǔ)器接口(XMI)332中的這些功能。XMI 332還可以包括寫和讀緩沖器、錯(cuò)誤日志、控制和狀態(tài)寄存器等等。
在一個(gè)實(shí)施例中,存儲(chǔ)器端口320可以利用存儲(chǔ)器流量只是存儲(chǔ)器讀和寫這一知識(shí),從而可以對(duì)存儲(chǔ)器請(qǐng)求進(jìn)行優(yōu)化,使性能最優(yōu),同時(shí)使復(fù)雜性最低。本發(fā)明描述了存儲(chǔ)器端口320中的兩種這樣的優(yōu)化,它們涉及降低發(fā)起對(duì)存儲(chǔ)器的讀請(qǐng)求時(shí)的延遲;還描述了第三種優(yōu)化,其涉及在存儲(chǔ)器端口320中使用邊帶讀返回頭部。
圖4A示出了讀分組可以如何搶先于寫分組。讀分組可以包含讀命令和要讀取的地址或地址范圍。類似地,寫分組可以包含寫命令、要寫入的地址或地址范圍,以及要寫入的數(shù)據(jù)(寫數(shù)據(jù))。因?yàn)樗鶄鬏數(shù)男畔⒘亢屯ㄐ判诺赖膶挾?,讀和/或?qū)懛纸M可能在多于一次傳輸中發(fā)送。因?yàn)閷懛纸M具有以要寫入的數(shù)據(jù)形式出現(xiàn)的額外信息,可以看出,寫分組可能比讀分組需要更多次傳輸。
在402接收輸入。在404,確定在402所接收到的輸入是不是讀分組的一部分。如果它是讀分組的一部分,則在406進(jìn)行檢查,看該讀分組是否完整。如果所述讀分組完整,則在408進(jìn)行讀,然后在402接收另一輸入。如果在406處確定所述讀分組不完整,則在402接收另一輸入。
如果在404確定接收到的輸入402不是讀分組的一部分,則在410,確定在402接收到的輸入是不是寫分組的一部分。如果接收到的輸入402不是寫分組的一部分,則在416執(zhí)行某種其它操作,然后在402接收另一輸入。如果在410確定接收到的輸入402是寫分組的一部分,則在412確定該寫分組是否完整。如果所述寫分組完整,則在414進(jìn)行寫,然后在402接收另一輸入。如果在410,確定在402接收到的輸入不是寫請(qǐng)求分組的一部分,則某種其它操作416將會(huì)發(fā)生,然后回到402以接收輸入。
從而,讀分組就可以搶先于寫分組。對(duì)于一個(gè)實(shí)施例,由讀命令和要讀取的一個(gè)或多個(gè)地址所組成的讀分組可以是單一傳輸或單一遷徙。寫分組由單一傳輸組成,該單一傳輸具有寫命令、要寫入的一個(gè)或多個(gè)地址,以及可能有多個(gè)的其它帶有相關(guān)寫數(shù)據(jù)的傳輸。為描述方便起見,包含讀命令和要讀取的一個(gè)或多個(gè)地址的讀分組被稱為讀請(qǐng)求。從而,讀請(qǐng)求和讀分組傳遞相同的信息。為描述方便起見,寫分組中包含寫命令和要寫入的一個(gè)或多個(gè)地址的部分被稱為寫請(qǐng)求。寫分組的數(shù)據(jù)部分被稱為寫數(shù)據(jù)。從而,寫分組包含寫請(qǐng)求和寫數(shù)據(jù)。
于是,例如假設(shè)在402接收到寫請(qǐng)求。轉(zhuǎn)到404,不是讀分組的一部分所以轉(zhuǎn)到410。在410是寫分組的一部分,因此前進(jìn)到412。在412,確定僅是寫請(qǐng)求而還未接收到寫數(shù)據(jù),因此寫分組不完整,因此隨后回到402?,F(xiàn)在如果在402接收到讀請(qǐng)求,則轉(zhuǎn)到404,在此確定所述讀請(qǐng)求是讀分組的一部分,因此前進(jìn)到406。在406,對(duì)所述讀分組是否完整進(jìn)行判斷。在此實(shí)施例中,我們已經(jīng)將讀請(qǐng)求定義為包含完整的讀分組,因此在408進(jìn)行讀,然后回到402。然后,在此示例中,(通過(guò)接收到寫請(qǐng)求)所開始的寫操作還未被完成,因此讀請(qǐng)求已經(jīng)搶先于寫。
跟隨圖4A的流程圖,應(yīng)該理解到,讀請(qǐng)求在任何地方都可能搶先于寫請(qǐng)求,直到接收到最后的寫數(shù)據(jù)為止。從而,例如如果寫分組包含寫請(qǐng)求和4次寫數(shù)據(jù)的傳輸,則如果在寫請(qǐng)求、第一寫數(shù)據(jù)、第二寫數(shù)據(jù)或第三寫數(shù)據(jù)之后接收到讀請(qǐng)求,讀請(qǐng)求都會(huì)搶先于寫請(qǐng)求。
在另一實(shí)施例中,讀請(qǐng)求不包含完整的讀分組。在這樣一個(gè)實(shí)施例中,在406對(duì)完整讀分組的檢查可能不完整,在該種情況下,將會(huì)前進(jìn)到402以接收另一輸入。如果并且只要隨后在406接收到完整的讀分組,就會(huì)前進(jìn)到408并進(jìn)行讀,然后返回到在402接收輸入。
允許在寫請(qǐng)求或?qū)憯?shù)據(jù)之后接收到的讀請(qǐng)求搶先于較早接收到的寫請(qǐng)求或?qū)憯?shù)據(jù),這導(dǎo)致了在寫之前執(zhí)行讀。這使得存儲(chǔ)器與必須首先響應(yīng)寫請(qǐng)求然后響應(yīng)讀請(qǐng)求時(shí)相比,更快地響應(yīng)讀請(qǐng)求。
應(yīng)該理解到,發(fā)送讀和/或?qū)懻?qǐng)求的代理可以防止排序的危險(xiǎn)。也就是說(shuō),發(fā)送代理可能想要對(duì)如何發(fā)出讀和寫請(qǐng)求進(jìn)行限制。例如,發(fā)送代理可以為了降低復(fù)雜性而決定一個(gè)讀請(qǐng)求不應(yīng)搶先于另一讀請(qǐng)求。
圖4B示出了本發(fā)明另一實(shí)施例,其中讀分組可以搶先于寫請(qǐng)求。在此示例中,我們僅考慮讀和寫分組。此外,圖4B示出了這樣一個(gè)實(shí)施例,其中讀請(qǐng)求可以搶先于寫分組,但不能像圖4A中可能發(fā)生的那樣,另一寫分組搶先于該寫分組。在圖4B中,在452接收輸入。在454進(jìn)行檢查,看其是不是讀分組。如果其是讀分組,則在456進(jìn)行讀,然后我們返回到在452接收輸入。如果在452接收到的輸入不是讀分組,則在458進(jìn)行檢查,看其是不是寫分組。如果其不是寫分組,則我們返回到在452接收輸入。另一方面,如果在458所述分組是寫分組,則我們進(jìn)入標(biāo)為460-470的操作“內(nèi)部循環(huán)”。
這個(gè)內(nèi)部循環(huán)考慮到了讀分組優(yōu)先,正如我們可以從以下操作中看出的那樣在460接收輸入,462檢查讀分組,如果是則進(jìn)行讀464,然后返回到接收輸入460。然而,回到外部循環(huán)(452-458)的唯一途徑是當(dāng)寫分組完整468然后進(jìn)行寫470的時(shí)候。在從458進(jìn)入內(nèi)部循環(huán)時(shí),在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示出了這樣一個(gè)實(shí)施例,其中僅允許一個(gè)寫分組被(讀分組中的)一個(gè)讀請(qǐng)求或多個(gè)讀請(qǐng)求(即,在470的寫之前遍歷循環(huán)460、462、464一次或多次)所搶先。
在以上討論中,我們?cè)敿?xì)敘述了例如讀請(qǐng)求如何包含讀命令和要讀取的一個(gè)或多個(gè)地址。此外,也可以傳遞其它信息,例如確保請(qǐng)求完整性的糾錯(cuò)位、控制信息等等。為方便討論本發(fā)明,用術(shù)語(yǔ)“遷徙”來(lái)指示與一個(gè)實(shí)體或操作相關(guān)聯(lián)的信息傳輸單位,一個(gè)遷徙可以由一個(gè)或多個(gè)傳輸組成。分組可以由一個(gè)或多個(gè)遷徙組成。因此,例如,一個(gè)讀請(qǐng)求分組可以由指示與該讀請(qǐng)求相關(guān)聯(lián)的所有信息的單一遷徙所組成。這個(gè)信息取決于具體實(shí)現(xiàn)方式而可能需要多于一次傳輸才能完全發(fā)送。例如,如果讀請(qǐng)求遷徙包含32位的信息,而計(jì)算機(jī)總線能夠?qū)崿F(xiàn)16位傳輸,則需要兩次傳輸來(lái)實(shí)現(xiàn)對(duì)所述讀請(qǐng)求遷徙的傳輸。下面所描述的是遷徙和傳輸?shù)母嗉?xì)節(jié)和示例。
圖5所示出的500是向存儲(chǔ)器分派(dispatch)提前讀請(qǐng)求。這里,在502接收輸入。在504進(jìn)行檢查,看在502接收到的輸入是不是讀請(qǐng)求遷徙的一部分。如果是,則在506進(jìn)行檢查,看對(duì)讀的提前分派是否可能。如果提前分派可能,則在508進(jìn)行提前讀分派,然后回到502以接收輸入。如果提前分派不可能,則在510進(jìn)行檢查,看讀遷徙是否完整。如果完整,則在512進(jìn)行讀,然后回到502以接收輸入。如果讀遷徙不完整,則回到502以接收輸入。如果在504確定在502接收到的輸入不是讀請(qǐng)求遷徙的一部分,則某種其它操作514將會(huì)發(fā)生,然后回到502以接收輸入。
在接收讀請(qǐng)求遷徙期間,可能向存儲(chǔ)器提前分派讀請(qǐng)求。從而,不必在向存儲(chǔ)器分派提前讀請(qǐng)求之前接收到整個(gè)讀請(qǐng)求遷徙。不必等待接收到整個(gè)讀請(qǐng)求遷徙,這就允許存儲(chǔ)器比在發(fā)出的請(qǐng)求之前必須等待接收到整個(gè)讀請(qǐng)求遷徙時(shí)更快地響應(yīng)提前讀請(qǐng)求。從而,如果一個(gè)遷徙的第一部分包含提前讀請(qǐng)求,則可以在接收遷徙第二部分的同時(shí)訪問(wèn)存儲(chǔ)器,而所述第二部分可能具有對(duì)存儲(chǔ)器內(nèi)容的修飾符信息。這個(gè)修飾符信息可能影響最終發(fā)送何種存儲(chǔ)器數(shù)據(jù)。
圖6A所示出的600發(fā)送讀返回頭部606。這里,在602接收輸入。在604進(jìn)行檢查,看其是不是讀請(qǐng)求。如果不是讀請(qǐng)求,則可能進(jìn)行其它操作614,然后回到602以接收輸入。如果在604,確定在602接收到的輸入是讀請(qǐng)求,則發(fā)生兩件事情。第一,在606發(fā)送讀返回頭部,然后回到602等待輸入。第二,在608發(fā)起讀,在610接收讀結(jié)果,在612發(fā)送所述讀結(jié)果,然后回到602以接收輸入。從而,在608發(fā)起的存儲(chǔ)器讀和在606發(fā)送的讀返回頭部可以基本上同時(shí)發(fā)生,和/或讀返回頭部可以恰好先于讀結(jié)果的發(fā)送。從而,不必在發(fā)送讀返回頭部606之前接收到整個(gè)讀結(jié)果。不必等待整個(gè)讀結(jié)果,這就允許存儲(chǔ)器和/或系統(tǒng)比在發(fā)送讀返回頭部之前必須等待接收到整個(gè)讀請(qǐng)求時(shí)更早地發(fā)送讀返回頭部606。
圖6B示出了發(fā)送讀返回頭部的另一實(shí)施例656。這里,在652接收輸入。在654進(jìn)行檢查,看其是不是讀請(qǐng)求。如果不是讀請(qǐng)求,則可能進(jìn)行其它操作664,然后回到652以接收輸入。如果在654確定在652接收到的輸入是讀請(qǐng)求,則在608發(fā)起讀。在這個(gè)點(diǎn)上,發(fā)生兩件事情。第一,在656發(fā)送讀返回頭部,然后回到652等待輸入。第二,在660接收讀結(jié)果,在662發(fā)送讀結(jié)果,然后返回652以接收輸入。從而,例如,在658發(fā)起存儲(chǔ)器讀導(dǎo)致了在656發(fā)送讀返回頭部。這個(gè)頭部是與接收讀結(jié)果660和發(fā)送讀結(jié)果662并行地發(fā)送的,因此讀返回頭部可能先于對(duì)讀結(jié)果的發(fā)送。從而,不必在發(fā)送讀返回頭部656之前接收到整個(gè)讀結(jié)果。不必等待整個(gè)讀結(jié)果,這就允許存儲(chǔ)器和/或系統(tǒng)比在發(fā)送讀返回頭部之前必須等待接收到整個(gè)讀請(qǐng)求時(shí)更早地發(fā)送讀返回頭部656。
在(606或656處所發(fā)送的)讀返回頭部的一個(gè)實(shí)施例中,讀返回頭部具有一個(gè)編碼在其中的標(biāo)識(shí)符,該標(biāo)識(shí)符使該讀返回頭部與導(dǎo)致其被發(fā)送的讀請(qǐng)求相關(guān)。這樣,例如,PMI 308可以通過(guò)讀返回頭部標(biāo)識(shí)符來(lái)識(shí)別出它與哪個(gè)讀請(qǐng)求(以及所產(chǎn)生的即將到來(lái)的數(shù)據(jù))相關(guān)聯(lián)。
應(yīng)該理解的是,在606或656發(fā)送的讀返回頭部的實(shí)際傳輸路徑盡管也可以在主數(shù)據(jù)路徑中,但優(yōu)選地是在邊帶中,并且優(yōu)選地有一個(gè)已知的從數(shù)據(jù)開始的固定偏移量。也就是說(shuō),使用與數(shù)據(jù)路徑并行的邊帶路徑(鏈路層),其中所述邊帶路徑在相關(guān)聯(lián)的讀數(shù)據(jù)之前運(yùn)送讀返回頭部,這可以允許接收設(shè)備在接收數(shù)據(jù)之前就確定數(shù)據(jù)要去往何處。從而,如果讀返回頭部在數(shù)據(jù)之前發(fā)送,則可以實(shí)現(xiàn)延遲的降低。
圖7示出了存儲(chǔ)器端口接口700的一個(gè)實(shí)施例。在此實(shí)施例中,存儲(chǔ)器端口是一個(gè)全雙工互連(存儲(chǔ)器端口鏈路720和740)。在傳出方向(離開處理器模塊710和PMI 708),存儲(chǔ)器端口鏈路720由兩個(gè)信息流組成。一個(gè)流是寬度為w的數(shù)據(jù)流,而第二個(gè)流是寬度為x的鏈路層流。如上,為討論本發(fā)明,將相關(guān)聯(lián)的數(shù)據(jù)和鏈路層信息的方便的編組稱為遷徙。在傳入方向(進(jìn)入處理器模塊710和PMI 708),存儲(chǔ)器端口鏈路740由兩個(gè)信息流組成。一個(gè)流是寬度為y的數(shù)據(jù)流,而第二個(gè)流是寬度為z的鏈路層流。
例如,圖8示出了存儲(chǔ)器端口協(xié)議的一個(gè)實(shí)施例800。在此實(shí)施例中,遷徙802由指示“空閑”數(shù)據(jù)802a和鏈路層(LL)信息802b所組成。以類似的方式,遷徙804到816(通稱8XX)由各自的8XXa和8XXb部分所組成。此實(shí)施例示出的是一個(gè)遷徙有80位的實(shí)施例,其中數(shù)據(jù)總線寬度w是18位寬,而鏈路層總線寬度x是2位寬。所示出的實(shí)施例對(duì)于一個(gè)遷徙需要4次傳輸,有效載荷中有72位,而鏈路層中有8位。
例如,圖9示出了需要4次傳輸?shù)倪w徙900。這里,遷徙910具有72位的數(shù)據(jù)和/或命令(d/c)信息,以及8位的鏈路層(LL)信息。這里,傳輸是每次20位地完成的,910a-0和910b-0,然后910a-1和910b-1,等等。盡管圖9所示出的d/c和LL傳輸出現(xiàn)在同一時(shí)間幀中,但并不要求如此。也就是說(shuō),一個(gè)遷徙內(nèi)與特定傳輸相關(guān)聯(lián)的LL數(shù)據(jù)可以在時(shí)間上與各自的d/c傳輸錯(cuò)開。此外,所述時(shí)間錯(cuò)開可以跨越遷徙的邊界。
鏈路層(LL)例如可以具有控制位和循環(huán)冗余校驗(yàn)(CRC)位。所述控制位例如可以表示頭部、尾部(tail)或空閑。
回來(lái)參照?qǐng)D8,應(yīng)該注意的是,寫分組818通常僅包含寫請(qǐng)求和相關(guān)聯(lián)的數(shù)據(jù)。然而在本發(fā)明中,如圖8所示,不需要這種約束。將寫分組818圖示為在其中具有寫請(qǐng)求遷徙804、關(guān)聯(lián)數(shù)據(jù)遷徙806、808、812、814和816,以及讀請(qǐng)求分組遷徙810。
圖10示出了具有96位的遷徙的實(shí)施例1000,其中數(shù)據(jù)總線寬度y是18位寬,而鏈路層總線寬度z是4位寬。此實(shí)施例對(duì)一個(gè)遷徙需要4次傳輸,并且有64個(gè)數(shù)據(jù)位、8個(gè)校驗(yàn)位,鏈路層中有16位。每個(gè)遷徙1002到1016都具有有效載荷分組10xxa和相關(guān)聯(lián)的鏈路層(LL)分組10xxb。圖10可以表示對(duì)處理器模塊的輸入。鏈路層(LL)例如可以具有鏈路層控制位和CRC位。所述控制位例如可以是讀頭部、寫頭部、數(shù)據(jù)、帶尾部的數(shù)據(jù)、空閑、寫ack(確認(rèn))、流控制,等等。
還應(yīng)該理解的是,盡管LL控制與有效載荷相關(guān)聯(lián),但它不必同時(shí)發(fā)送。例如,如果處理器模塊具有讀數(shù)據(jù)很快將到達(dá)這樣的預(yù)先信息,它就可以提高性能。從而,例如,LL中的提前讀頭部可以提供這種指示。例如,在圖10中,與遷徙數(shù)據(jù)1006a相關(guān)聯(lián)的LL可以位于時(shí)間上較早的位置,例如在位置1004b。從而,如圖11所示,諸如1106之類的遷徙可以包含位置1106a處的有效載荷和位置1106b處的LL控制。從而,圖11示出了遷徙1106中的鏈路層與有效載荷的時(shí)間錯(cuò)開。
(進(jìn)入PMI 308的)傳入邊帶鏈路層(LL)還可以包含關(guān)于其它傳輸和/或事務(wù)的信息。例如,LL可以包含用于確認(rèn)傳出寫命令的寫確認(rèn)、用于傳出流控制反饋的停止位、狀態(tài)指示(空閑或數(shù)據(jù)有效載荷,等等)等等。而且,與一個(gè)遷徙相關(guān)聯(lián)的LL可以傳遞多于一條信息,例如,LL編碼可以指示空閑的有效載荷或者非空閑的有效載荷,此外還可以指示是不是讀返回頭部、寫確認(rèn)、停止指示、空閑控制等等。此外,應(yīng)該理解的是,如上所述,這個(gè)信息可以在時(shí)間上移位。
將信息在時(shí)間上移位使得可以降低接口的復(fù)雜性。例如,將讀返回頭部置于讀返回?cái)?shù)據(jù)的頻帶內(nèi),這可能給XMI 332強(qiáng)加了額外的功能,因?yàn)閄MI 332必須將頭部和數(shù)據(jù)信息復(fù)用起來(lái),并且XMI 332必須對(duì)進(jìn)入的讀返回?cái)?shù)據(jù)進(jìn)行緩沖,以將存儲(chǔ)器讀帶寬與稍高些的傳入存儲(chǔ)器端口帶寬進(jìn)行速率匹配,所述稍高些的傳入存儲(chǔ)器端口帶寬是補(bǔ)償內(nèi)嵌頭部的帶寬開銷所必需的。這種額外功能就可能意味著額外的復(fù)雜性以及很可能產(chǎn)生的額外的延遲。相反,通過(guò)將讀返回頭部置于時(shí)間上移位了的邊帶中,就可以使得XMI 332數(shù)據(jù)路徑能工作在與存儲(chǔ)器總線相同的頻率上,從而允許XMI 332工作時(shí)在讀返回?cái)?shù)據(jù)路徑上沒有緩沖或復(fù)用。從而,使用與數(shù)據(jù)路徑并行的邊帶路徑(鏈路層),其中所述邊帶路徑可能不相鄰地在相關(guān)聯(lián)的讀數(shù)據(jù)之前運(yùn)送讀返回頭部,這可以允許操縱和控制邏輯在接收數(shù)據(jù)之前工作。如果讀返回頭部可以在數(shù)據(jù)之前被發(fā)送,則可以實(shí)現(xiàn)延遲的降低。頭部可以先于讀返回?cái)?shù)據(jù)0個(gè)或更多個(gè)遷徙(讀返回偏移量可以在初始化時(shí)確定)。提前讀返回頭部允許處理器將頭部譯碼和數(shù)據(jù)操縱邏輯移出關(guān)鍵路徑,并將進(jìn)入的讀返回?cái)?shù)據(jù)直接驅(qū)動(dòng)到處理器內(nèi)的合適目的地。
讀返回頭部提前于數(shù)據(jù)而發(fā)送的時(shí)間(偏移量)可以固定在某個(gè)時(shí)間點(diǎn)和/或是動(dòng)態(tài)的。例如,可以在系統(tǒng)初始化時(shí)確定固定延遲?;蛘?,系統(tǒng)可以在操作時(shí)確定此時(shí)間,并使其固定。另一實(shí)施例可以將所述偏移時(shí)間置于編碼在讀返回頭部的數(shù)據(jù)當(dāng)中。從而,本領(lǐng)域技術(shù)人員將會(huì)認(rèn)識(shí)到,有多種可能的實(shí)施例。
在時(shí)間上將信息移位也使得可以降低PMI 308接口的復(fù)雜性。也就是說(shuō),如果PMI 308通過(guò)邊帶而在主數(shù)據(jù)路徑上的數(shù)據(jù)之前發(fā)送信息,則其就可以降低復(fù)雜性和/或延遲。本領(lǐng)域技術(shù)人員將會(huì)理解到,可以在傳出方向和傳入方向上實(shí)現(xiàn)降低延遲和/或復(fù)雜性。
圖12示出了存儲(chǔ)器端口協(xié)議的另一實(shí)施例1200,其中數(shù)據(jù)和命令帶寬是36位,而鏈路層是4位。空閑遷徙1202、1204、1216、1220和1234具有其各自的“a”部分(1202a、1204a、1216a、1220a和1234a)中的空閑有效載荷,并具有其各自的“b”部分(1202b、1204b、1216b、1220b和1234b)中的鏈路層(LL)控制碼。普通的寫分組1240僅具有寫關(guān)聯(lián)數(shù)據(jù),例如寫請(qǐng)求1206遷徙和寫數(shù)據(jù)遷徙(1208-1214)。每個(gè)遷徙都具有可能指示額外信息的LL控制。例如,數(shù)據(jù)0、數(shù)據(jù)1和數(shù)據(jù)2(分別是1208a、1210a和1212a)可能在鏈路層(LL)控制中具有指示數(shù)據(jù)是寫數(shù)據(jù)的信息(分別是1208b、1210b和1212b)。LL 1214b可以指示出1214a是寫數(shù)據(jù)以及該寫數(shù)據(jù)的尾部。LL 1206b可以指示出關(guān)于寫請(qǐng)求1206a命令的額外信息。
遷徙1218示出了未搶先于寫分組的讀分組。讀分組遷徙1218具有相關(guān)聯(lián)的讀請(qǐng)求1218a,其在相關(guān)聯(lián)的鏈路層1218b中具有讀請(qǐng)求標(biāo)識(shí)和可能的額外信息?;蛘?,所述讀請(qǐng)求標(biāo)識(shí)和/或額外信息可以位于1218a和/或1218b中。
被讀請(qǐng)求所優(yōu)先的寫分組示出于1228。這里,具有寫請(qǐng)求遷徙1222和寫數(shù)據(jù)遷徙1224、1226、1230和1232的寫請(qǐng)求分組在數(shù)據(jù)1遷徙1226和數(shù)據(jù)2遷徙1230之間具有讀請(qǐng)求遷徙1228。具有讀請(qǐng)求1228a和相關(guān)聯(lián)的鏈路層1228b的這個(gè)讀請(qǐng)求遷徙1228已經(jīng)搶先于寫請(qǐng)求遷徙1222。
如上所述,對(duì)于普通的寫分組1240,寫請(qǐng)求遷徙1222以及相關(guān)聯(lián)的寫數(shù)據(jù)遷徙1224、1226、1230和1232具有“a”有效載荷和相關(guān)聯(lián)的“b”鏈路層控制。
在下面的討論中詳述的是命令、字段位定義、鏈路層控制等的可能的實(shí)施例。應(yīng)該理解的是,這些具體示例不應(yīng)被認(rèn)為是限制先前對(duì)本發(fā)明的討論。這些示例僅用于說(shuō)明性目的。
再次參照?qǐng)D3,PMI 308可以向存儲(chǔ)器端口320發(fā)出存儲(chǔ)器命令和配置命令。在此示例中,XMI 332不通過(guò)存儲(chǔ)器端口320發(fā)出任何命令。此外,未示出部分(partial)存儲(chǔ)器寫。
有三種一般類型的命令存儲(chǔ)器、設(shè)備和配置。
存儲(chǔ)器命令,例如讀、寫和取消,一般以作為純粹的存儲(chǔ)器而起作用的主存儲(chǔ)器(例如DRAM)為目標(biāo),所述主存儲(chǔ)器連接到XMB 330和/或包含在XMB 330中。
設(shè)備命令,例如讀和寫,一般以不作為純粹的存儲(chǔ)器起作用的存儲(chǔ)器位置為目標(biāo)。例如,對(duì)映射到在其中寫(以及有時(shí))讀有副作用的存儲(chǔ)器空間中的閃存存儲(chǔ)器和/或設(shè)備寄存器進(jìn)行寫入。在這種情況下,每個(gè)寫命令可能想要在目標(biāo)上只執(zhí)行一次。而且,這種命令可能想要按與源發(fā)出命令時(shí)相同的順序在目標(biāo)上執(zhí)行。
設(shè)備命令類似于存儲(chǔ)器命令,并可能具有指示數(shù)據(jù)傳輸大小的大小字段或位??赡艿拇笮±缈梢园?至8字節(jié)、16、32或64字節(jié),和/或一整個(gè)緩存線(cacheline)的數(shù)據(jù)。不考慮數(shù)據(jù)傳輸大小,命令有效載荷的大小可能是一整個(gè)緩存線,根據(jù)需要用1和/或0來(lái)填充,從數(shù)據(jù)傳輸出去到緩存線中。
設(shè)備命令還可以具有掩碼位,用于支持部分讀和/或?qū)?。例如?duì)于讀命令,此掩碼可以指示讀哪些字節(jié)位置,以及讀返回中的哪些字節(jié)有效。對(duì)于寫命令,字節(jié)掩碼可以指示有效載荷中的哪些字節(jié)有效。
配置命令,例如讀和寫,可以被認(rèn)為是一種特殊類別的設(shè)備命令,其目標(biāo)可以是設(shè)備和/或寄存器,例如PCI配置空間中的位置。此外,由于這些命令的特性,PMI 308可以選擇每次只有一個(gè)發(fā)出的配置命令。
所有命令類型可以共享一個(gè)公共的基礎(chǔ)格式。例如,命令遷徙可以包含在遷徙有效載荷中編碼為64個(gè)命令位和8個(gè)校驗(yàn)位的72位命令。為了使存儲(chǔ)器讀請(qǐng)求的延遲最短,讀命令格式可以在遷徙的前一半中具有所有的關(guān)鍵信息,從而允許在XMI 332接收到整個(gè)遷徙之前向存儲(chǔ)器分派讀請(qǐng)求。
命令中的提前指示符,例如一個(gè)位,可以指示遷徙的前一半是否包含足以發(fā)起存儲(chǔ)器讀請(qǐng)求的信息,或者XMI 332是否必須積累整個(gè)遷徙中的信息。這個(gè)位可以僅為存儲(chǔ)器讀命令而設(shè)置;否則,XMI 332可能不會(huì)正確地對(duì)配置命令、設(shè)備命令或存儲(chǔ)器寫命令發(fā)起存儲(chǔ)器讀請(qǐng)求。然而,不是所有存儲(chǔ)器讀命令都可以將所述提前位設(shè)置為有效。例如,任何在遷徙的后一半具有特定調(diào)度信息(例如流標(biāo)識(shí)或優(yōu)先級(jí))的存儲(chǔ)器讀命令都可使提前位無(wú)效,以迫使XMI 332在分派存儲(chǔ)器讀請(qǐng)求之前考慮此信息。
多個(gè)命令目的地位可以指示命令類型存儲(chǔ)器命令、設(shè)備命令或配置命令。
在一個(gè)實(shí)施例中,多個(gè)事務(wù)(標(biāo)簽)位與讀/寫位一起構(gòu)成了每個(gè)命令的獨(dú)有ID。獨(dú)有ID不會(huì)被重新用于隨后的命令,直到PMI 308已經(jīng)接收到對(duì)先前任何具有相關(guān)聯(lián)事務(wù)ID的該類型命令的響應(yīng),或者PMI 308已經(jīng)確定先前任何具有該事務(wù)ID的該讀/寫(rd/wr)類型的命令都已經(jīng)超時(shí)為止。
取消位是一個(gè)修飾符,其指示了一個(gè)存儲(chǔ)器讀命令是否要取消先前的存儲(chǔ)器讀命令。
在存儲(chǔ)器命令的情況下,多個(gè)偏移量位標(biāo)識(shí)了從存儲(chǔ)器讀和寫的地址位所指定的存儲(chǔ)器位置起的偏移量。在設(shè)備命令的情況下,與地址位相耦合的這個(gè)偏移量可以指定目標(biāo)位置(例如指向存儲(chǔ)器映射的設(shè)備寄存器)。
如上所述,可定義流ID/優(yōu)先級(jí)來(lái)對(duì)存儲(chǔ)器讀命令所屬于的流、以及存儲(chǔ)器讀命令優(yōu)先級(jí)進(jìn)行編碼,以使得XMI 332能對(duì)不同的存儲(chǔ)器請(qǐng)求應(yīng)用不同的調(diào)度策略。例如,這個(gè)字段可以指示存儲(chǔ)器命令是否屬于等時(shí)流(isochronous stream)并因此可能需要特定的服務(wù)時(shí)間以符合等時(shí)數(shù)據(jù)傳遞期限時(shí)間。
掩碼位可以是指示在設(shè)備和配置命令的部分讀和寫中哪些字節(jié)有效的位向量字節(jié)掩碼。
大小位可以指示設(shè)備和配置命令的數(shù)據(jù)傳輸大小。這種命令可能的數(shù)據(jù)傳輸大小是1至8字節(jié)(與掩碼位相結(jié)合)、16字節(jié)、32字節(jié)、64字節(jié)等等,以及整個(gè)緩存線的大小。
利用分布于遷徙后一半的校驗(yàn)位,對(duì)72位命令使用糾錯(cuò)碼(ECC),從而可以保護(hù)每個(gè)命令的完整性。然而,在接收到了整個(gè)命令遷徙并且完成了ECC錯(cuò)誤校驗(yàn)之前,XMI 332可能希望將提前位看作提示(hint),并將任何對(duì)于該命令而提前分派的存儲(chǔ)器讀請(qǐng)求看作是推測(cè)性的(speculative)。因此,XMI 332可能想要在這種推測(cè)性提前存儲(chǔ)器讀請(qǐng)求被分派之前就確保具有足夠的資源來(lái)處理之。例如,XMI 332必須確保對(duì)提前讀請(qǐng)求的分派不會(huì)導(dǎo)致存儲(chǔ)器控制器讀請(qǐng)求隊(duì)列的溢出。
對(duì)于寫命令字段,在此實(shí)施例中為了簡(jiǎn)化編碼和譯碼,除了偏移量和代碼字段之外,這些字段可以與讀命令的相同。
圖13示出了存儲(chǔ)器命令格式1300的一個(gè)實(shí)施例。在此示例中,我們假設(shè)了一個(gè)其中每個(gè)遷徙有四次傳輸并且每次傳輸18位的物理層。也就是說(shuō),命令具有72位,在4次傳輸中傳遞。進(jìn)一步假設(shè)每個(gè)傳輸(傳輸0、1、2、3)對(duì)應(yīng)于跨越互連的一個(gè)位單元時(shí)間(bit cell time)。例如,在第一次傳輸期間(傳輸0),可以傳輸較低地址位和讀/寫命令。在傳輸1期間,可以傳輸較高地址位和提前讀指示符。在傳輸2和3期間,可以傳輸指示以下內(nèi)容的位命令目的地、從地址起的偏移量、事務(wù)ID、校驗(yàn)、掩碼、流ID、大小、取消命令、優(yōu)先級(jí)等等。
圖14示出了設(shè)備命令格式的一個(gè)實(shí)施例1400,其中我們假設(shè)了一個(gè)其中每個(gè)遷徙有四次傳輸并且每次傳輸18位的物理層。這里,在傳輸0期間,可以傳輸較低地址位和讀/寫命令。在傳輸1期間,可以傳輸較高地址位和提前讀指示符。在傳輸2和3期間,可以傳輸指示以下內(nèi)容的信息命令目的地、從地址起的偏移量、事務(wù)ID、校驗(yàn)位、掩碼位、傳輸大小等等。
圖15示出了配置命令格式1500的一個(gè)實(shí)施例,其中,我們假設(shè)了一個(gè)其中每個(gè)遷徙有四次傳輸并且每次傳輸18位的物理層。在傳輸0期間,可以傳輸較低配置地址位和讀/寫命令。在傳輸1期間,可以發(fā)送較高配置地址位和提前讀指示符。在傳輸2和3期間,可以傳輸指示以下內(nèi)容的信息命令目的地、從地址起的偏移量、事務(wù)ID、校驗(yàn)位、掩碼位等等。
如上所述,鏈路層(LL)既具有傳出格式又具有傳入格式。圖16示出了傳出鏈路層格式1600的一個(gè)實(shí)施例。對(duì)于基礎(chǔ)傳出鏈路層格式,例如可以每個(gè)遷徙具有8位。這個(gè)基礎(chǔ)格式可以被可選地?cái)U(kuò)展,例如再擴(kuò)展8位成為每個(gè)遷徙總共16位。圖16示出了每個(gè)遷徙16位的格式。LL信號(hào)0用于在傳輸0:3(四次傳輸0、1、2和3)期間所發(fā)送的通信信息(信息)位和多個(gè)校驗(yàn)位。(多個(gè))信息位可以指示遷徙是不是非空閑的,即該遷徙是包含命令或數(shù)據(jù),還是空閑。LL信號(hào)1用于傳送頭部、尾部和校驗(yàn)位。尾部位指示分組的末端,而頭部位指示遷徙是否包含命令。頭部和尾部位可以對(duì)其它狀態(tài)進(jìn)行編碼,所述其它狀態(tài)例如是遷徙有效載荷是數(shù)據(jù)并且不是分組中最后的數(shù)據(jù)有效載荷;遷徙有效載荷是數(shù)據(jù)有效載荷并且是分組最后的遷徙;遷徙有效載荷是寫命令;以及遷徙有效載荷是讀命令并且是分組最后的遷徙。所述多個(gè)校驗(yàn)位包括在鏈路層格式的16個(gè)位上計(jì)算出來(lái)的CRC。多個(gè)擴(kuò)展模式位在LL信號(hào)2和3上發(fā)送。
擴(kuò)展模式位還可以位于鏈路層中,并可被用于具有鎖步(lockstep)存儲(chǔ)器端口的數(shù)據(jù)遷徙。為了支持具有鎖步存儲(chǔ)器端口的XMI(332)中的錯(cuò)誤校驗(yàn),擴(kuò)展模式位可以對(duì)與發(fā)送給另一存儲(chǔ)器端口的半個(gè)緩存線的錯(cuò)誤相關(guān)的信息進(jìn)行編碼。
傳入鏈路層可以具有各種格式。例如,在一個(gè)實(shí)施例中,可以有四種不同的傳入鏈路層格式讀返回頭部、寫確認(rèn)、狀態(tài)和配置。在下面描述的實(shí)施例中,這四種鏈路層格式可以一起共享多個(gè)位。圖17示出了公共傳入鏈路層格式位1700的一個(gè)實(shí)施例。
信息位指示遷徙有效載荷是不是非空閑的,即包含數(shù)據(jù)還是空閑。多個(gè)校驗(yàn)位包括在鏈路層格式的16個(gè)位上計(jì)算出來(lái)的CRC。
類型位可以指示四種不同的傳入鏈路層格式中的一種,例如讀返回頭部;寫確認(rèn);狀態(tài);以及配置。
圖18示出了讀返回頭部格式1800的一個(gè)實(shí)施例。這里,多個(gè)標(biāo)簽位可以按例如小端順序(little endian order)將事務(wù)ID編碼。控制位可以指示讀返回具有數(shù)據(jù),并且第一個(gè)數(shù)據(jù)有效載荷遷徙開始于從當(dāng)前遷徙的開始處起給定偏移量個(gè)遷徙的地方。如果所述偏移量為0,則第一個(gè)數(shù)據(jù)有效載荷在當(dāng)前遷徙中開始??刂莆贿€可以指示讀返回頭部是nack(否定性確認(rèn)的縮寫),在這種情況下沒有相關(guān)聯(lián)的數(shù)據(jù)。讀返回nack通知PMI308,告知其XMI 332因?yàn)榻邮盏阶x取消命令而取消了原來(lái)的存儲(chǔ)器讀命令,并且從而PMI 308不應(yīng)期望該讀命令的讀返回?cái)?shù)據(jù)。如果XMI 332取消了讀命令,則它僅發(fā)送一個(gè)讀返回nack。從而,如果XMI 332丟棄了讀取消命令而未取消讀命令,它就不發(fā)送讀返回nack。
圖19示出了寫確認(rèn)格式1900的一個(gè)實(shí)施例。在此示例中,除了缺少控制位之外,此格式與上面討論的讀返回頭部的相同。
圖20示出了狀態(tài)格式的一個(gè)實(shí)施例2000。存儲(chǔ)器端口320可以將狀態(tài)格式用于三種功能將傳出流控制信息返回給處理器;傳遞異步信號(hào);以及指示鏈路層對(duì)于一個(gè)遷徙是空閑的。
如果停止位有效,則處理器不應(yīng)向XMI 332發(fā)送任何寫命令,直到該處理器隨后接收到具有鏈路狀態(tài)格式并且停止位無(wú)效的遷徙為止。當(dāng)XMI332希望對(duì)進(jìn)入的寫命令進(jìn)行流控制,例如當(dāng)XMI 332寫緩沖器超出了給定閾值時(shí),就置位(assert)停止位。如果停止位無(wú)效,則處理器可以向XMI 332發(fā)送寫命令。
多個(gè)信號(hào)位可以包括信號(hào)代碼。XMI 332通過(guò)適當(dāng)設(shè)置信號(hào)代碼,就可以與讀返回?cái)?shù)據(jù)并行而異步地發(fā)信號(hào)以通知處理器的某些動(dòng)作。
從以上實(shí)施例的示例中,本領(lǐng)域技術(shù)人員將會(huì)認(rèn)識(shí)到,可以類似地對(duì)配置格式進(jìn)行編碼,以向傳入鏈路層提供傳遞配置信息的功能。
足夠詳細(xì)地描述了這些實(shí)施例,以使得本領(lǐng)域技術(shù)人員能夠?qū)嵤┍景l(fā)明,應(yīng)該理解到,可以利用其它實(shí)施例,并且可以進(jìn)行邏輯、機(jī)械、電和其它方面的改變,而不會(huì)脫離本發(fā)明的范圍。應(yīng)該理解到,上面所描述的體系結(jié)構(gòu)和功能可以具有其它實(shí)施例。任何格式、命令等都可以具有不同的位分配和不同的位定義。例如,讀返回頭部格式可以具有不同的位分配和不同的位定義,并且順序可以是大端的而不是小端的。
此外,盡管為了清楚起見,在本說(shuō)明書中對(duì)于傳入和傳出方向而在實(shí)施例中描述了本發(fā)明的某些方面,但是應(yīng)該理解到,它們也可以同時(shí)應(yīng)用于傳入和傳出兩者。例如,可以與遷徙中特定傳輸相關(guān)聯(lián)的鏈路層數(shù)據(jù)可以與各自的傳輸在時(shí)間上錯(cuò)開,而這個(gè)傳輸可以是傳入和/或傳出方向上的。例如,PMI 308可以在信息之前(一個(gè)偏移量)發(fā)出一個(gè)頭部,該頭部通過(guò)鏈路層而發(fā)送到XMI 332。
機(jī)器可讀介質(zhì)被理解為包括用于以機(jī)器(例如計(jì)算機(jī))可讀的形式存儲(chǔ)或傳輸信息的任何機(jī)構(gòu)。例如,機(jī)器可讀介質(zhì)包括只讀存儲(chǔ)器(ROM);隨機(jī)訪問(wèn)存儲(chǔ)器(RAM);磁盤存儲(chǔ)介質(zhì);光存儲(chǔ)介質(zhì);閃存存儲(chǔ)器設(shè)備;電、光、聲或其它形式的傳播信號(hào)(例如載波、紅外信號(hào)、數(shù)字信號(hào)等);等等。
本領(lǐng)域技術(shù)人員應(yīng)該理解到,使用計(jì)算機(jī)的實(shí)現(xiàn)可能需要計(jì)算機(jī)在作為裝置而執(zhí)行方法或任務(wù)之前,在上電(power up)或復(fù)位時(shí)適當(dāng)?shù)刈晕遗渲?。這通常被稱為初始化,并且可以包括但不限于設(shè)置芯片時(shí)序、確定所附接的設(shè)備、配置諸如存儲(chǔ)器之類的子系統(tǒng)、檢查訪問(wèn)速度、檢查互連,等等。應(yīng)該理解的是,在為完整功能操作作準(zhǔn)備時(shí),計(jì)算機(jī)系統(tǒng)可能進(jìn)行許多檢查、設(shè)置許多參數(shù),等等。例如,在初始化時(shí),計(jì)算機(jī)可能確定所附接的存儲(chǔ)器并改變?cè)O(shè)置和參數(shù),以確定最優(yōu)接口速度、時(shí)序設(shè)置等等。此外,計(jì)算機(jī)在操作期間也可能進(jìn)行檢查,以確保合適的操作,并在必要時(shí)改變?cè)O(shè)置,等等。
從而,描述了通過(guò)存儲(chǔ)器互連中的讀發(fā)起優(yōu)化而優(yōu)化存儲(chǔ)器讀操作的方法和裝置。
權(quán)利要求
1.一種方法,包括接收寫分組內(nèi)的讀請(qǐng)求遷徙;以及在接收讀請(qǐng)求遷徙期間,向存儲(chǔ)器分派來(lái)自所述讀請(qǐng)求遷徙的提前讀請(qǐng)求。
2.如權(quán)利要求1所述的方法,其中,向所述存儲(chǔ)器分派所述提前讀請(qǐng)求發(fā)生在接收所述讀請(qǐng)求遷徙的前一半之后。
3.如權(quán)利要求2所述的方法,其中,所述遷徙的前一半具有標(biāo)識(shí)符,用于將所述提前讀請(qǐng)求向所述存儲(chǔ)器進(jìn)行提前分派。
4.如權(quán)利要求3所述的方法,其中,所述用于將所述讀請(qǐng)求進(jìn)行提前分派的標(biāo)識(shí)符是從以下組中選出的,該組由允許讀提前分派和不允許讀提前分派所組成。
5.一種裝置,包括具有輸入、輸出和控制的存儲(chǔ)器系統(tǒng);和具有存儲(chǔ)器輸入、存儲(chǔ)器輸出和存儲(chǔ)器控制的存儲(chǔ)器端口,其中所述存儲(chǔ)器系統(tǒng)輸入被耦合以接收所述存儲(chǔ)器端口存儲(chǔ)器輸出,所述存儲(chǔ)器端口存儲(chǔ)器輸入被耦合以接收所述存儲(chǔ)器系統(tǒng)輸出,并且所述存儲(chǔ)器系統(tǒng)控制被耦合到所述存儲(chǔ)器端口存儲(chǔ)器控制;其中所述存儲(chǔ)器端口具有存儲(chǔ)器端口協(xié)議,該協(xié)議通過(guò)在接收讀請(qǐng)求遷徙期間向存儲(chǔ)器分派來(lái)自所述讀請(qǐng)求遷徙的讀請(qǐng)求,從而支持所述提前讀請(qǐng)求,并且其中所述讀請(qǐng)求遷徙位于寫分組內(nèi)。
6.如權(quán)利要求5所述的裝置,其中,所述提前讀請(qǐng)求位于讀請(qǐng)求遷徙的前一半內(nèi)。
7.一種系統(tǒng),包括能夠發(fā)出來(lái)自讀請(qǐng)求遷徙的提前讀請(qǐng)求的處理器,其中所述讀請(qǐng)求遷徙位于寫分組內(nèi);和耦合到所述處理器的存儲(chǔ)器設(shè)備,該存儲(chǔ)器設(shè)備能夠在所述讀請(qǐng)求遷徙正被接收時(shí)接收所述提前讀請(qǐng)求,并執(zhí)行對(duì)存儲(chǔ)器的提前讀。
8.如權(quán)利要求7所述的系統(tǒng),其中,所述處理器提前讀請(qǐng)求是在讀請(qǐng)求遷徙分組的前一半內(nèi)發(fā)出的。
9.如權(quán)利要求8所述的系統(tǒng),其中,所述讀請(qǐng)求遷徙分組的前一半具有標(biāo)識(shí)符,用于將所述讀請(qǐng)求向所述存儲(chǔ)器設(shè)備進(jìn)行提前分派,所述標(biāo)識(shí)符是從由允許讀提前分派和不允許讀提前分派所組成的組中選出的。
10.一種裝置,包括用于發(fā)出來(lái)自讀請(qǐng)求遷徙的提前讀請(qǐng)求的裝置,其中所述讀請(qǐng)求遷徙位于寫分組內(nèi);和用于使存儲(chǔ)器設(shè)備在所述讀請(qǐng)求遷徙正被所述存儲(chǔ)器設(shè)備接收時(shí)接收所述提前讀請(qǐng)求并執(zhí)行對(duì)存儲(chǔ)器的提前讀的裝置。
11.如權(quán)利要求10所述的裝置,其中,用于發(fā)出提前讀請(qǐng)求的裝置是用于在讀請(qǐng)求遷徙的前一半中設(shè)置標(biāo)識(shí)符的裝置。
12.如權(quán)利要求10所述的裝置,其中,用于執(zhí)行對(duì)所述存儲(chǔ)器的提前讀的裝置是由一個(gè)標(biāo)識(shí)符控制的,所述標(biāo)識(shí)符是從由允許讀提前分派和不允許讀提前分派所組成的組中選出的。
13.一種方法,包括接收寫分組內(nèi)的讀請(qǐng)求遷徙的前一半;以及在接收所述讀請(qǐng)求遷徙的后一半之前,向存儲(chǔ)器分派來(lái)自所述讀請(qǐng)求遷徙的讀請(qǐng)求。
14.如權(quán)利要求13所述的方法,其中,向所述存儲(chǔ)器分派所述讀請(qǐng)求發(fā)生在接收所述讀請(qǐng)求遷徙的后一半之前。
15.如權(quán)利要求13所述的方法,其中,向所述存儲(chǔ)器分派所述讀請(qǐng)求發(fā)生在對(duì)整個(gè)讀請(qǐng)求遷徙進(jìn)行錯(cuò)誤校驗(yàn)之前。
全文摘要
本發(fā)明公開了一種方法和裝置,用于通過(guò)在存儲(chǔ)器互連中進(jìn)行讀發(fā)起優(yōu)化來(lái)優(yōu)化存儲(chǔ)器讀操作。在一個(gè)實(shí)施例中,可以在接收讀請(qǐng)求遷徙期間,向存儲(chǔ)器分派來(lái)自讀請(qǐng)求遷徙的提前讀請(qǐng)求。
文檔編號(hào)G06F13/16GK1908924SQ20061009959
公開日2007年2月7日 申請(qǐng)日期2002年11月7日 優(yōu)先權(quán)日2001年11月12日
發(fā)明者蘭迪·奧斯本 申請(qǐng)人:英特爾公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
定南县| 诸暨市| 赣州市| 彰化市| 西华县| 桦甸市| 兴城市| 宝丰县| 福建省| 双辽市| 庆元县| 丰顺县| 武功县| 阿巴嘎旗| 呼和浩特市| 蛟河市| 宝山区| 肇州县| 土默特右旗| 定南县| 武邑县| 绥阳县| 韶山市| 乌拉特前旗| 玉门市| 和龙市| 陆丰市| 甘孜| 克什克腾旗| 陆河县| 获嘉县| 邹平县| 工布江达县| 五台县| 石家庄市| 临高县| 孙吴县| 镇安县| 开化县| 万源市| 黄浦区|