本申請案是主張2014年6月2日申請的標(biāo)題為“用于可擴展存儲器系統(tǒng)協(xié)議的系統(tǒng)及方法(Systems and Methods for a Scalable Memory System Protocol)”的第62/006,668號美國臨時專利申請案的優(yōu)先權(quán)的非臨時申請案,所述美國臨時專利申請案以引用的方式并入本文中。本申請案也涉及2015年5月28日申請的標(biāo)題為“用于改進(jìn)存儲器系統(tǒng)的效率的系統(tǒng)及方法(Systems and Methods for Improving Efficiencies of a Memory System)”的第14/724,558號美國專利申請案,所述美國專利申請案也以引用的方式并入本文中。
技術(shù)領(lǐng)域
本發(fā)明大體上涉及一種存儲器系統(tǒng)協(xié)議,其用于使用存儲器裝置執(zhí)行數(shù)據(jù)操作(例如,讀取、寫入)。更具體來說,本發(fā)明涉及一種基于包的可擴展協(xié)議,其啟用若干存儲器及處理組合,提供位高效的數(shù)據(jù)傳送操作,且所述協(xié)議與多種總線類型(例如,電總線、光學(xué)總線)協(xié)調(diào)。
背景技術(shù):
本章節(jié)希望向讀者介紹可能與本發(fā)明的各種方面相關(guān)的本領(lǐng)域的各種方面,所述方面在下文中予以描述及/或主張。據(jù)信,此論述有助于為讀者提供背景信息以促進(jìn)更好地理解本發(fā)明的各種方面。因此,應(yīng)理解,這些陳述應(yīng)在此背景下閱讀且并非作為現(xiàn)有技術(shù)的認(rèn)可。
常規(guī)協(xié)議通常在存儲器裝置之間以與其前身相比相對較低的故障率傳輸包。然而,因為行業(yè)旨在使在存儲器裝置與其它組件之間移動數(shù)據(jù)包所涉及的能量的量最小化,期望使用使用最小量的能量高效移動數(shù)據(jù)包,同時維持包傳輸?shù)耐暾缘膮f(xié)議。
附圖說明
在閱讀以下詳細(xì)描述及在參考附圖時可更好地理解本發(fā)明的各種方面,其中:
圖1說明根據(jù)實施例的計算系統(tǒng)的實例的框圖;
圖2說明根據(jù)實施例的可作為圖1的計算系統(tǒng)的部分的存儲器裝置的實例的框圖;
圖3說明根據(jù)實施例的可在圖1的計算系統(tǒng)內(nèi)傳輸?shù)陌陌鼘蛹増D;
圖4說明根據(jù)實施例的可在圖1的計算系統(tǒng)內(nèi)傳輸?shù)陌脑敿?xì)包層級圖;
圖5說明根據(jù)實施例的用于為作為圖2的存儲器裝置的部分的各種類型的存儲器指派事務(wù)窗的方法的流程圖;
圖6說明根據(jù)實施例的針對高延時讀取操作的兩階段響應(yīng)的實例;
圖7說明根據(jù)實施例的針對高延時直接存儲器存取操作的單階段響應(yīng)的實例;
圖8說明根據(jù)實施例的其中可擴展協(xié)議將兩個18位請求包封在一起的分道包封實例;
圖9說明根據(jù)實施例的用于產(chǎn)生包用于傳輸?shù)姆椒ǖ牧鞒虉D;
圖10說明根據(jù)實施例的描繪可根據(jù)分道包封方案傳輸?shù)娜舾砂目驁D;
圖11說明根據(jù)實施例的用于根據(jù)分道包封方案接收包的方法的流程圖;
圖12說明根據(jù)實施例的用于由接收包的組件執(zhí)行的重新排序操作的方法的流程圖;
圖13說明根據(jù)實施例的展示如何參考圖12的方法將包重新排序的框圖;
圖14說明根據(jù)實施例的用于由接收包的組件執(zhí)行的重新排序操作的另一方法的流程圖;
圖15說明根據(jù)實施例的用于調(diào)慢從傳輸組件發(fā)送的請求的傳輸速率的方法的流程圖;
圖16說明根據(jù)實施例的描繪線性調(diào)慢曲線的曲線圖;及
圖17說明根據(jù)實施例的描繪非線性調(diào)慢曲線的曲線圖。
具體實施方式
下文將描述一或多個特定實施例。為了提供這些實施例的簡潔描述,本說明書中未描述實際實施方案的所有特征。應(yīng)了解,在任何此實際實施方案的研發(fā)中,如在任何工程或設(shè)計項目中,必須作出許多實施方案特定決策以實現(xiàn)可隨實施方案的變化而變化的研發(fā)者的特定目標(biāo),例如符合系統(tǒng)相關(guān)及業(yè)務(wù)相關(guān)的限制。此外,應(yīng)了解,此研發(fā)努力可能是復(fù)雜且耗時的,但對于受益于本發(fā)明的一般技術(shù)人員來說,所述研發(fā)努力仍將是常規(guī)設(shè)計、制作及制造任務(wù)。
可擴展存儲器系統(tǒng)協(xié)議
如將在下文詳細(xì)論述,本發(fā)明大體上涉及可擴展存儲器系統(tǒng)協(xié)議。即,可擴展存儲器系統(tǒng)協(xié)議可基于被傳送的數(shù)據(jù)包(例如,請求、響應(yīng))的特性而調(diào)整某些操作。在一個實施例中,可擴展存儲器系統(tǒng)協(xié)議(“可擴展協(xié)議”)可為基于包的協(xié)議,其實現(xiàn)數(shù)據(jù)包在存儲器裝置、計算裝置及類似物之間的高效(例如,功率高效、位高效)傳輸??蓴U展協(xié)議可實施為與各種類型的存儲器及處理器的若干組合,例如自動機(Automata)處理器、存儲器中處理器(Processor-in-Memory)、網(wǎng)絡(luò)裝置、存儲設(shè)備、分層存儲器、抽象化存儲器及類似物。如本文中所使用,處理器可包含能夠在相應(yīng)電裝置上執(zhí)行可執(zhí)行指令的任何適當(dāng)處理器??蓴U展協(xié)議也可促進(jìn)寬范圍的裝置,其包含數(shù)據(jù)中心交換機/路由器、網(wǎng)絡(luò)路由器、移動裝置、存儲裝置、自動機處理器、流處理器、存儲器中處理器、任務(wù)移動處理器、大數(shù)據(jù)(Big Data)、大圖形(Big Graph)、安全存儲器、虛擬網(wǎng)絡(luò)、一般抽象化存儲器(例如,動態(tài)隨機存取存儲器(DRAM)、NAND及新興存儲器)及類似物。
在某些實施例中,可擴展協(xié)議可經(jīng)設(shè)計以促進(jìn)數(shù)據(jù)包在各種存儲器與處理器之間的傳達(dá),同時維持最低的合理的可擴展協(xié)議額外開銷。換句話來說,可擴展協(xié)議可經(jīng)設(shè)計以提供數(shù)據(jù)包的位高效傳送,其中,經(jīng)由可擴展協(xié)議傳送的多數(shù)(如果不是所有)位直接作為被傳輸?shù)膶?yīng)數(shù)據(jù)包的部分。例如,如將在下文更詳細(xì)論述,可擴展協(xié)議可使請求包能被包封在一起而無需用與相應(yīng)包無關(guān)的零填充信號,借此使經(jīng)由總線的傳輸通道傳送的數(shù)據(jù)包的位效率最大化。
除提供用于傳送數(shù)據(jù)包的位有效機構(gòu)外,可擴展協(xié)議可與若干總線類型(例如電或光學(xué)總線)協(xié)調(diào)。此外,可擴展協(xié)議可能夠提供有關(guān)相應(yīng)總線的各種操作,包含編碼、分道(lane)計數(shù)、通道(channel)計數(shù)、速度、風(fēng)格、系統(tǒng)的例示計數(shù)及類似物。
可擴展協(xié)議
記住上述內(nèi)容,可擴展協(xié)議可經(jīng)優(yōu)化以提供成功事務(wù),使得包故障是罕見的(例如,<1e-6)。可擴展協(xié)議也可提供包傳輸類型、大小與可處置的不同包大小的數(shù)目之間的仔細(xì)權(quán)衡。
如上文論述,行業(yè)更注重使數(shù)據(jù)移動能量最小化。即,在存儲器裝置之間移動數(shù)據(jù)包所消耗的能量應(yīng)被最小化。因而,可擴展協(xié)議可合理地消除可從其它位或消息辨別或可能另外是不必要的某些位及消息。舉例來說,可擴展協(xié)議可免除對傳輸有關(guān)可能已被接收器所知的信息的數(shù)據(jù)的裝置的需要。
此外,為了提供高效的數(shù)據(jù)移動操作,可擴展協(xié)議可促進(jìn)“被發(fā)送到存儲器”的事務(wù)??蓴U展協(xié)議也可用外部控制操作傳送局部操作,其中內(nèi)部數(shù)據(jù)流量與外部控制操作相比相對較低。此外,可擴展協(xié)議可實施錯誤控制策略,所述錯誤控制策略使用基于在相應(yīng)包中被傳輸?shù)臄?shù)據(jù)量(例如,有效負(fù)載)調(diào)整的動態(tài)字段大小使額外開銷最小化。
可擴展協(xié)議也可經(jīng)設(shè)計以使用最分?jǐn)?shù)目個字段來傳達(dá)數(shù)據(jù)。因而,可擴展協(xié)議可允許字段大小調(diào)優(yōu)及靈活性,這是因為每個包無法利用所有可用字段。
可擴展協(xié)議也可經(jīng)設(shè)計以促進(jìn)低延時數(shù)據(jù)與高延時數(shù)據(jù)的共存。舉例來說,可擴展協(xié)議可提供使低延時數(shù)據(jù)的傳輸在傳輸高延時數(shù)據(jù)之間交錯的能力。
可擴展協(xié)議的設(shè)計可被特性化為簡單及一般的,其中可變包大小可在相應(yīng)包的單個字段中確定。此外,可擴展協(xié)議可維持其操作方面的簡單性,同時仍能夠執(zhí)行復(fù)雜的事務(wù)及操作。此外,可擴展協(xié)議可足夠靈活來實現(xiàn)其當(dāng)前可能未經(jīng)設(shè)計以提供的未來功能。
在某些實施例中,可擴展協(xié)議可限制使用局部排序方案發(fā)送包的順序。即,可擴展協(xié)議無法強制執(zhí)行某些全局同步排序規(guī)則或類似物。為了堅持可擴展協(xié)議保持抽象的理念,可擴展協(xié)議可用特殊裝置或用不同類型的通道性質(zhì)促進(jìn)操作。
記住上述內(nèi)容,本發(fā)明描述若干系統(tǒng)及技術(shù),所述系統(tǒng)及技術(shù)可在可擴展協(xié)議內(nèi)實施以提供上述優(yōu)點。雖然下文詳述的某些系統(tǒng)或技術(shù)是相對于其它系統(tǒng)或技術(shù)獨立描述,但是應(yīng)注意本文中描述的系統(tǒng)及技術(shù)中的每一者可用也在本文中描述的各種其它系統(tǒng)及技術(shù)實施。
使用可擴展協(xié)議的計算系統(tǒng)及存儲器系統(tǒng)
現(xiàn)轉(zhuǎn)到圖式,圖1說明可采用本文中描述的各種技術(shù)及系統(tǒng)的計算系統(tǒng)10的框圖。計算系統(tǒng)10可為多種計算裝置中的任何者,例如計算機、傳呼機、蜂窩電話、個人記事簿、控制電路等等。計算系統(tǒng)10可包含芯片上主機系統(tǒng)(SoC)12,芯片上主機系統(tǒng)(SoC)12可耦合到若干存儲器裝置14。主機SoC 12可為集成電路(IC),其將計算機或其它電子系統(tǒng)的所有組件集成到單個芯片中。因而,主機SoC 12可包含一或多個處理器,例如微處理器,所述一或多個處理器可控制計算系統(tǒng)10中的系統(tǒng)功能及請求的處理。
如上所述,主機SoC 12可耦合到存儲器裝置14。在某些實施例中,主機SoC 12可經(jīng)由通道16耦合到存儲器裝置14。通道16可包含總線、電布線或類似物。
圖2描繪存儲器裝置14的實施例的框圖。存儲器裝置14可包含經(jīng)設(shè)計以留存數(shù)字?jǐn)?shù)據(jù)的任何存儲裝置。存儲器裝置14可涵蓋各種各樣的存儲器組件,其包含易失性存儲器及非易失性存儲器。易失性存儲器可包含動態(tài)隨機存取存儲器(DRAM)及/或靜態(tài)隨機存取存儲器(SRAM)。此外,易失性存儲器可包含若干存儲器模塊,例如單列直插存儲器模塊(SIMM)或雙列直插存儲器模塊(DIMM)。
非易失性存儲器可包含將結(jié)合易失性存儲器使用的只讀存儲器(ROM),例如EPROM及/或快閃存儲器(例如,NAND)。此外,非易失性存儲器可包含高容量存儲器,例如磁帶或磁盤驅(qū)動存儲器。如將了解,易失性存儲器或非易失性存儲器可被視為用于存儲代碼(例如,指令)的非暫時性有形機器可讀媒體。
如圖2中所展示,在某些實施例中,存儲器裝置14可包含芯片上系統(tǒng)(SoC)22,芯片上系統(tǒng)(SoC)22可為任何適當(dāng)處理器,例如存儲器中處理器(PIM)或計算機處理器(CPU),其緊緊地耦合到存儲于存儲器裝置14上的存儲器組件。通常,存儲器SoC 22可與存儲器裝置14的存儲器組件處在相同硅芯片上。通過將處理組件及存儲器組件合并到存儲器裝置14中,存儲器SoC 22可管理在存儲器組件與主機SoC 12之間傳輸及接收數(shù)據(jù)請求及響應(yīng)的方式。在某些實施例中,存儲器SoC 22可控制存儲器組件之間的業(yè)務(wù)以減小延時及增大帶寬。如將了解,在根據(jù)本文中描述的實施例控制存儲器組件與其它裝置之間的傳輸時,主機SoC 12及存儲器SoC 22可采用可擴展存儲器系統(tǒng)協(xié)議。因而,可擴展存儲器系統(tǒng)協(xié)議可在存儲器裝置14與主機SoC 12之間的通道16,以及在存儲器組件與存儲器SoC 22之間的通道29上操作。
在某些實施例中,存儲器裝置14也可包含緩沖器23。緩沖器23可存儲由存儲器SoC 22接收的一或多個包。有關(guān)存儲器SoC 22可如何使用緩沖器23的額外細(xì)節(jié)將在下文參考圖15到17進(jìn)行描述。舉例來說,存儲器裝置14可包含例如NAND存儲器24、減小延時動態(tài)隨機存取存儲器(RLDRAM)26、雙倍數(shù)據(jù)速率第四代同步動態(tài)隨機存取存儲器(DDR4)28及類似物的存儲器類型。
在某些實施例中,主機SoC 12及存儲器SoC 22可基于經(jīng)由存儲器組件、寄存器及類似物提供的計算機可執(zhí)行指令執(zhí)行各種操作。存儲器組件或存儲裝置可為可充當(dāng)用于存儲存儲器可執(zhí)行代碼、數(shù)據(jù)或類似物的媒體的任何適當(dāng)制品。這些制品可代表計算機可讀媒體(即,任何適當(dāng)形式的存儲器或存儲裝置),所述計算機可讀媒體可存儲由主機SoC 12或存儲器SoC 22使用來執(zhí)行當(dāng)前揭示技術(shù)的處理器可執(zhí)行代碼。存儲器及存儲裝置也可用于存儲數(shù)據(jù)、數(shù)據(jù)分析及類似物。存儲器及存儲裝置可代表非暫時性計算機可讀媒體(即,任何適當(dāng)形式的存儲器或存儲裝置),所述非暫時性計算機可讀媒體可存儲由主機SoC 12或存儲器SoC 22使用來執(zhí)行本文中描述的各種技術(shù)的處理器可執(zhí)行代碼。應(yīng)注意,非暫時性僅指示媒體是有形的且并非是信號。
雖然有關(guān)可擴展協(xié)議的各種方面的以下描述在本文中被描述為相對于主機SoC 12及存儲器SoC 22執(zhí)行,但是應(yīng)注意,本文中描述的所有系統(tǒng)及技術(shù)可使用任何適當(dāng)裝置執(zhí)行。即,可擴展協(xié)議可促進(jìn)任何兩個裝置之間的通信,例如兩個處理器、兩個存儲器模塊、處理器與存儲器模塊及類似物之間的通信。
可擴展協(xié)議中的包的包層級圖
為了在傳輸涉及存儲器組件的請求及響應(yīng)時采用可擴展存儲器系統(tǒng)協(xié)議,存儲器SoC 22可發(fā)送根據(jù)圖3中所說明的包30的包層級圖構(gòu)成的數(shù)據(jù)的包。如圖3中所展示,包30可包含事務(wù)類型字段32、有效負(fù)載字段34及錯誤控制代碼(ECC)字段36。事務(wù)類型字段32可包含指示傳輸類型、被傳輸?shù)陌念愋突騼烧叩臄?shù)據(jù)。事務(wù)類型字段32也可指示用于指示數(shù)據(jù)有效負(fù)載中位的數(shù)目及ECC字段中位的數(shù)目的包大小,借此指示整個包中位的數(shù)目。在某些實施例中,事務(wù)類型字段32可以間接方式指示有效負(fù)載字段34及ECC字段36的大小。舉例來說,存儲于事務(wù)類型字段32中的數(shù)據(jù)可充當(dāng)查找表的索引。查找表可提供有關(guān)有效負(fù)載字段34及ECC字段36的大小的信息。因而,在一個實例中,存儲器SoC 22可接收包30且將存儲于事務(wù)類型字段32中的數(shù)據(jù)用作可存儲于存儲器裝置14中的查找表的索引,以確定有效負(fù)載字段34及ECC字段36的大小。
在某些實施例中,事務(wù)類型字段32可基于包是在可包含通道16、通道29或類似物的請求總線Q或響應(yīng)總線S上傳輸而指定不同類型的包。通常,請求總線Q及響應(yīng)總線S可為單獨的、單向的或共同輸入/輸出。請求總線Q大體上包含q個分道,且響應(yīng)總線S大體上包含s個分道。
在請求總線Q上傳輸?shù)陌?0的實例事務(wù)類型字段32可包含讀取操作(例如,8uRead、8uRead2、varRead,其中u可為8位單元或9位單元或可能為數(shù)據(jù)的非整數(shù)單元大小)、消息數(shù)據(jù)(例如,消息)、讀取-修改-寫入(RMW)操作(例如,RMW1A、RMW2A、RMW3A、RMW4A)、數(shù)據(jù)集(例如,32uData、64uData、128uData、256uData)、模式寫入操作(例如,8uPatternWrite、16uPatternWrite)、寫入啟用操作(例如,8uWriteWithEnables、16uWriteWithEnables),寫入操作(例如,8uWrite、16uWrite、32Write、48uWrite、64Write、80uWrite、96uWrite、112uWrite、128Write、256Write)及類似物。提供32Write操作及64Write操作可為系統(tǒng)設(shè)計者在挑選最大包大小時提供更大靈活性。在一個實施例中,可擴展協(xié)議可具有256Unit的限值,但使用較小最大包大小可幫助系統(tǒng)延時。應(yīng)理解,32uWrite與32Write之間的差異在于32uWrite是單個固定大小,且TransactionSize未包含于包中。另一方面,32Write包含TransactionSize,且因此可涉及額外32U數(shù)據(jù)塊,而非僅在原始請求包中包含的32U塊。注意上文針對請求總線Q所列的事務(wù)類型實例,經(jīng)由請求總線Q傳輸?shù)陌?0可包含總共26個原生事務(wù)(例如,8uRead、消息、RMW1A等等),其中的每一者可使用針對全局(即,包含許多CPU模塊及/或許多存儲器裝置模塊的系統(tǒng),其中包可在單元之間被中繼)或局部系統(tǒng)(即,包含較少模塊的系統(tǒng),其中包在單元之間點到點移動,而無中繼)的5位字段表示。因而,在一個實施例中,請求總線Q上的包30的事務(wù)類型字段32可為5個位。
以相同方式,在響應(yīng)總線S上傳輸?shù)陌?0的實例事務(wù)類型字段32可包含消息數(shù)據(jù)(例如,消息)、數(shù)據(jù)集(例如,8uData、16uData、32uData、48uData、64uData、80uData、96uData、112uData、128uData、256uData)及類似物。此外,注意上文針對響應(yīng)總線S的所列事務(wù)類型實例,經(jīng)由響應(yīng)總線S傳輸?shù)陌?0可包含總共11個原生事務(wù)(例如,消息、8uData等等),其中的每一者可使用針對局部系統(tǒng)的4位或5位字段表示。因而,在一個實施例中,響應(yīng)總線S上的包30的事務(wù)類型字段32可為4個位。
由于26個請求總線Q事務(wù)類型及11個響應(yīng)總線S事務(wù)類型包含5個相同事務(wù)類型(例如,消息、128uData、256uData),所以由請求總線Q及響應(yīng)總線S使用的事務(wù)類型的總數(shù)目可為32個。這32個事務(wù)類型因此可在5位字段中予以表示。有關(guān)事務(wù)類型的額外細(xì)節(jié)將在下文進(jìn)一步論述。
再次參考圖3,包30也可包含有效負(fù)載字段34及錯誤控制代碼(ECC)字段36。如上所述,有效負(fù)載字段34及ECC字段36的相應(yīng)大小可基于事務(wù)類型字段32中的數(shù)據(jù)確定。舉例來說,有效負(fù)載字段34可近似在45個位與2093個位之間,且ECC字段36可近似在6個位與37個位之間。有效負(fù)載字段34可包含代表分別經(jīng)由請求總線或響應(yīng)總線發(fā)送的請求或響應(yīng)的數(shù)據(jù)。
ECC字段36可包含用于確定由接收組件接收的包30是否包含任何錯誤的錯誤控制代碼。因而,錯誤控制代碼可包含各種算法,例如將冗余數(shù)據(jù)或校驗數(shù)據(jù)添加到消息,使得即使當(dāng)在傳輸?shù)倪^程期間或在存儲器上引入若干錯誤時,原始數(shù)據(jù)仍可由接收組件恢復(fù)。通常,錯誤控制代碼可提供檢測代碼的限值內(nèi)的錯誤且當(dāng)檢測到錯誤時,指示進(jìn)一步行動(例如重新傳輸出錯包)的能力。
事務(wù)類型字段
如上所述,可擴展協(xié)議可使用具有事務(wù)類型字段的包以更有效地執(zhí)行各種類型的操作。通常,可擴展協(xié)議可使抽象化存儲器架構(gòu)能利用任何存儲器類型及并入使用單個抽象化協(xié)議的各種類型的數(shù)據(jù)處理。記住這點,事務(wù)類型字段32可為一條有用的數(shù)據(jù)以允許可擴展協(xié)議執(zhí)行各種類型的數(shù)據(jù)處理,這是因為事務(wù)類型字段32提供兩條不同的信息。即,為了協(xié)議中的最小可能位計數(shù)占用,事務(wù)類型字段32將兩個數(shù)據(jù)字段(即,類型及大小)組合成一個。
如下文將展示,可擴展協(xié)議可為了傳輸效率而支持可變大小包。因而,向接收組件指示包的大小以防止系統(tǒng)變得不同步可能是有用的。在此,事務(wù)類型字段32可提供單個字段,所述單個字段識別被執(zhí)行的系統(tǒng)事務(wù)的類型且可憑借事務(wù)類型隱式地定義包大小。換句話來說,事務(wù)類型字段32可指示被傳輸組件請求的事務(wù)的類型且接收組件可接著基于指定的事務(wù)類型確定對應(yīng)包的大小(例如,有效負(fù)載字段34及ECC字段36)。因而,事務(wù)類型字段32可為雙重目的字段,其被可擴展協(xié)議用于提供傳達(dá)信息的位有效方式。
在某些實施例中,事務(wù)類型字段32也可指示有關(guān)可在有效負(fù)載字段34中提供的數(shù)據(jù)的額外信息。例如,基于事務(wù)類型字段32的值,事務(wù)窗信息(窗)、地址信息(地址)、間接層級(層級)信息、消息類型信息、原始數(shù)據(jù)及其它類型的信息可被確定為有效負(fù)載字段34的部分。有關(guān)可作為有效負(fù)載字段34的部分的信息的細(xì)節(jié)將在下文更詳細(xì)論述。
可擴展協(xié)議可在具有一或多個請求總線Q事務(wù)及一或多個響應(yīng)總線S事務(wù)的系統(tǒng)中采用。雖然請求總線Q及響應(yīng)總線S已在上文被描述為分別具有5位字段及4位字段,但是應(yīng)注意,請求總線Q及響應(yīng)總線S可被設(shè)計為具有多種不同的位大小。舉例來說,請求總線Q事務(wù)可使用5位字段(例如,00000、00001、…、11110、11111)指示,使得可與5位字段相關(guān)聯(lián)的可能事務(wù)類型如下(其中數(shù)據(jù)單元u大小是8個位):
01011-8uRead-8B數(shù)據(jù)讀取操作,提供額外字段(例如,有效負(fù)載字段34內(nèi)的子字段):Window、Address、Levels(間接層級)
01101-varRead-可變數(shù)據(jù)大小讀取操作,提供額外字段:TransactionSize、Window、Address、Levels
00000-消息-一般消息,提供額外字段Window、MessageType、Data(數(shù)據(jù)僅受限于字段大小,例如,Nack消息類型的數(shù)據(jù)可包含DataSequence、OriginatingTransactionType、OriginatingWindow)
01110-RMW1A-讀取-修改-寫入請求,其中并入單個地址,提供額外字段:TransactionSize、Window、Address、OpCode、ImmediateData
01100-8uRead2-兩個8B數(shù)據(jù)讀取操作,提供額外字段:First_Window、First_Address、First_Levels、Second_Levels、Second_Address
10110-8uWrite-包含8B數(shù)據(jù)的寫入請求,提供額外字段:Window、Address、Levels、8B數(shù)據(jù)
10010-8uWriteP-包含將寫入一次或更多次的8B數(shù)據(jù)的寫入請求,提供額外字段:Window、Address、TransactionSize、Levels、8B數(shù)據(jù)
01111-RMW2A-讀取-修改-寫入請求,其中并入兩個地址,提供額外字段:TransactionSize、First_Window、First_Address、OpCode、ImmediateData、Second_Window、Second_Address
10100-8uWriteEn-用WriteEnableBits及8B數(shù)據(jù)寫入,提供額外字段:Window、Address、Levels、8啟用位、8B數(shù)據(jù)
10000-RMW3A-讀取-修改-寫入請求,其中并入三個地址,提供額外字段:TransactionSize、First_Window、First_Address、OpCode、ImmediateData、Second_Window、Second_Address、Third_Window、Third_Address
10111-16uWrite-包含16B數(shù)據(jù)的寫入請求,提供額外字段:Window、Address、Levels、16B數(shù)據(jù)
10011-16uWriteP-包含將寫入一次或更多次的16B數(shù)據(jù)的寫入請求,提供額外字段:Window、Address、TransactionSize、Levels、16B數(shù)據(jù)
10101-16uWriteEn-用WriteEnableBits及16B數(shù)據(jù)寫入,提供額外字段:Window、Address、Levels、16啟用位、16B數(shù)據(jù)
10001-RMW4A-讀取-修改-寫入請求,其中并入四個地址,提供額外字段:TransactionSize、First_Window、First_Address、OpCode、ImmediateData、Second_Window、Second_Address、Third_Window、Third_Address、Fourth_Window、Fourth_Address
00011-32uData-擴展數(shù)據(jù)包,提供額外字段:Window、32B數(shù)據(jù)。注意,數(shù)據(jù)序列號未被顯式傳輸,這是因為擴展數(shù)據(jù)包按順序傳輸,因此接收器可附加序列。如果需要隨后NACK,那么隱式序列號被用作參考。
11000-32Write-包含32B數(shù)據(jù)的寫入請求,提供額外字段:Window、Address、Levels,32B數(shù)據(jù),TransactionSize
11001-48uWrite-包含48B數(shù)據(jù)的寫入請求,提供額外字段:Window、Address、Levels,48B數(shù)據(jù)
00101-64uData-擴展數(shù)據(jù)包,提供額外字段:Window、64B數(shù)據(jù)。注意,數(shù)據(jù)序列號未被顯式傳輸,這是因為擴展數(shù)據(jù)包按順序傳輸,因此接收器可附加序列。如果需要隨后NACK,那么隱式序列號被用作參考。
11010-64Write-包含64B數(shù)據(jù)的寫入請求,提供額外字段:Window、Address、Levels、64B數(shù)據(jù)、TransactionSize
11011-80uWrite-包含80B數(shù)據(jù)的寫入請求,提供額外字段:Window、Address、Levels、80B數(shù)據(jù)
11100-96uWrite-包含96B數(shù)據(jù)的寫入請求,提供額外字段:Window、Address、Levels、96B數(shù)據(jù)
11101-112uWrite-包含112B數(shù)據(jù)的寫入請求,提供額外字段:Window、Address、Levels、112B數(shù)據(jù)
01001-128uData-擴展數(shù)據(jù)包,提供額外字段:Window、128B數(shù)據(jù)。注意,數(shù)據(jù)序列號未被顯式傳輸,這是因為擴展數(shù)據(jù)包按順序傳輸,因此接收器可附加序列。如果需要隨后NACK,那么隱式序列號被用作參考。
11110-128Write-包含128B數(shù)據(jù)的寫入請求,提供額外字段:Window、Address、Levels、128B數(shù)據(jù)、TransactionSize
01010-256uData-擴展數(shù)據(jù)包,提供額外字段:Window、256B數(shù)據(jù)。注意,數(shù)據(jù)序列號未被顯式傳輸,這是因為擴展數(shù)據(jù)包按順序傳輸,因此接收器可附加序列。如果需要隨后NACK,那么隱式序列號被用作參考。
11111-256Write-包含256B數(shù)據(jù)的寫入請求,提供額外字段:Window、Address、Levels、256B數(shù)據(jù)、TransactionSize
所列實例事務(wù)類型按隨后的包大小的順序提供(不含任何無意的排序錯誤),假設(shè)5位事務(wù)類型、4位事務(wù)類型、3位窗、48位地址、7位數(shù)據(jù)序列號及針對每一事務(wù)類型具體說明的數(shù)據(jù)字段中的額外位。此外,如上所述,包30可包含ECC字段36,其如在常規(guī)協(xié)議中可為固定大小。然而,如將了解,在某些實施例中,ECC字段36可為可變大小,如將在下文更詳細(xì)論述。
記住上述內(nèi)容,響應(yīng)總線S事務(wù)可使用4位字段(例如,0000、0001、…、1110、1111)指示。然而,如果事務(wù)類型字段32是5個位,那么事務(wù)類型字段32可簡單包含額外前補零。響應(yīng)總線S事務(wù)的實例4位事務(wù)類型可包含:
0000-消息-一般消息,提供額外字段:Window、MessageType、Data(注意,存在許多消息類型,例如Completion、ReOrder、NACK及其它)
0001-8uData-8B數(shù)據(jù)響應(yīng),提供額外字段:Window、8B數(shù)據(jù)
0010-16uData-16B數(shù)據(jù)響應(yīng),提供額外字段:Window、16B數(shù)據(jù)
0011-32uData-32B數(shù)據(jù)響應(yīng),提供額外字段:Window、32B數(shù)據(jù)
0100-48uData-48B數(shù)據(jù)響應(yīng),提供額外字段:Window、48B數(shù)據(jù)
0101-64uData-64B數(shù)據(jù)響應(yīng),提供額外字段:Window、64B數(shù)據(jù)
0110-80uData-80B數(shù)據(jù)響應(yīng),提供額外字段:Window、80B數(shù)據(jù)
0111-96uData-96B數(shù)據(jù)響應(yīng),提供額外字段:Window、96B數(shù)據(jù)
1000-112uData-112B數(shù)據(jù)響應(yīng),提供額外字段:Window、112B數(shù)據(jù)
1001-128uData-128B數(shù)據(jù)響應(yīng),提供額外字段:Window、128B數(shù)據(jù)
1010-256uData-256B數(shù)據(jù)響應(yīng),提供額外字段:Window、256B數(shù)據(jù)
如同上文針對請求總線Q事務(wù)所列的實例事務(wù)類型,上文的實例響應(yīng)總線S事務(wù)按隨后的包大小的順序列出,假設(shè)請求總線Q上的5位事務(wù)類型,響應(yīng)總線S上的4位事務(wù)類型,4位事務(wù)大小,3位窗,48位地址,7位數(shù)據(jù)序列號及針對每一事務(wù)類型具體說明的數(shù)據(jù)字段中的額外位。
如上所展示,每一事務(wù)類型可取決于個別字段大小假設(shè)而與不同長度包相關(guān)聯(lián)。因此,可擴展協(xié)議可避免使用額外字段來指示包大小。相反地,在具有8位微片(flit)的協(xié)議中,請求總線Q包的微片計數(shù)按事務(wù)類型的順序?qū)槿缦拢?、8、9、11、13、16、16、17、18、21、24、25、26、27、41、57、73、89、105、121、132、138、260、266。此協(xié)議可接著包含包大小字段,其大小可為9個位以指示每一包的微片計數(shù)。替代地,包大小字段大小可為5個位以區(qū)分24個不同長度中的每一者,且接著可使用轉(zhuǎn)換函數(shù)確定準(zhǔn)確微片計數(shù)。與常規(guī)協(xié)議不同,可擴展協(xié)議可能不采用包大小字段。而是,系統(tǒng)可使用轉(zhuǎn)換函數(shù)以基于事務(wù)類型確定包的大小,且可接著保存協(xié)議位。
事務(wù)窗
除提供有關(guān)錯誤控制代碼的經(jīng)改進(jìn)位效率外,可擴展協(xié)議可根據(jù)其相應(yīng)事務(wù)類型組織包,且基于其相應(yīng)事務(wù)類型根據(jù)特定順序傳輸經(jīng)組織包。在常規(guī)協(xié)議中,請求可根據(jù)其被傳輸?shù)臅r間來排序。在此情況中,如果第一請求涉及高延時,且后續(xù)請求(即,第二請求)涉及低延時,那么即使第二請求可能比第一請求更快地完成,第二請求仍可能必須等待第一請求結(jié)束。因此,第一請求可阻塞總線。換句話來說,即使低延時請求可能比較高延時請求更快地被解析,第一請求仍可阻止總線響應(yīng)于相對較低延時請求。
為了提供在總線內(nèi)混合不同類型的事務(wù)請求的更高效方式,可擴展協(xié)議可使用事務(wù)窗來確定請求被送達(dá)的順序。事務(wù)窗可為使用虛擬地址空間實施的虛擬通道。每一事務(wù)窗可與相應(yīng)存儲器裝置相關(guān)聯(lián),例如NAND及DRAM。因而,單個事務(wù)窗可與一個存儲器或具有相同特性(例如延時、帶寬、粒度、持久性及類似特性)的若干存儲器相關(guān)聯(lián)。
通常,事務(wù)窗可提供有關(guān)針對每一特定事務(wù)的一組特定接合規(guī)則的信息。如上所述,事務(wù)窗數(shù)據(jù)可指定用于針對特定事務(wù)傳輸及接收包的物理總線的一組分道(例如,通道29)。由事務(wù)窗指定的所述組分道可被稱作虛擬通道,其可由存儲器裝置14存取。應(yīng)注意,本文中描述的通道29包含其中可傳送數(shù)據(jù)的一或多個分道。使用事務(wù)窗數(shù)據(jù)來特性化有關(guān)包的傳輸或接收的某些特征(例如,排序),可擴展協(xié)議可更好地管理包在處理器之間的傳輸。
例如,由于每一類型的存儲器裝置具有不同的延時,所以基于相應(yīng)存儲器裝置的相應(yīng)延時管理總線業(yè)務(wù)在各種類型的存儲器裝置14與主機SoC 12之間的流動可能是有利的。舉例來說,DRAM裝置通常具有快延時(例如,來自隨機請求的50ns),而NAND裝置通常具有慢延時(例如,500us),其在隨機請求之后進(jìn)行錯誤校正。SRAM緩沖器具有10ns的較快延時。記住這點,可擴展協(xié)議可指定每一存儲器裝置的事務(wù)窗。在一個實施例中,可擴展協(xié)議可使用兩個字段來指定每一事務(wù)窗:48位地址及3位窗(即,對窗0到7尋址)。圖4說明描繪指定包30中的事務(wù)窗的兩個字段的框圖。如圖4中所展示,事務(wù)窗字段42及地址窗字段44可為有效負(fù)載字段34的部分。事務(wù)窗字段42可指定指定的事務(wù)窗,且地址窗字段44可指定與指定的事務(wù)窗相關(guān)聯(lián)的48位地址。48位地址可為指派給虛擬通道(即,窗)的虛擬地址。在一個實施例中,虛擬地址空間可指代定位在硬盤驅(qū)動器或某種其它存儲裝置上的物理地址。因而,存儲器裝置可具有存儲比物理可用的數(shù)據(jù)更多的數(shù)據(jù)的能力。
除事務(wù)窗字段42及地址窗字段44外,包可包含起始位46及間接層級字段48。起始位46可指示位流中包的開始。間接層級字段48可為有效負(fù)載字段34的部分,且可提供指示相應(yīng)事務(wù)可包含的間接層級數(shù)目的值。有關(guān)起始位字段46及間接層級字段48的額外細(xì)節(jié)將在下文的其它章節(jié)中予以更詳細(xì)論述。
通常,每一類型的存儲器裝置可被指派給不同的事務(wù)窗。舉例來說,DRAM0可被指派給Window0中,DRAM1可被指派給Window1中,DRAM2可被指派給Window2中,NAND0可被指派給Window3中,NAND1可被指派給Window4中,且SRAM緩沖器及控制寄存器可被指派給Window7中。記住這點,實例事務(wù)集合可根據(jù)以下序列發(fā)送:
(1)Read.Window0.AddressA
(2)Read.Window3.AddressB
(3)Read.Window0.AddressC
(4)Read.Window0.AddressD
(5)Read.Window0.AddressE
(6)Read.Window0.AddressF
(7)Read.Window3.AddressG
(8)Read.Window0.AddressH
(9)Read.Window0.AddressI
如上所展示,事務(wù)1、3到6、8及9是Window0的部分,其對應(yīng)于DRAM存儲器裝置。另一方面,事務(wù)2及7是Window3的部分,其對應(yīng)于NAND存儲器裝置。在接收到上述請求時,接收組件可使用根據(jù)針對每一事務(wù)指定的相應(yīng)事務(wù)窗建立的排序規(guī)則響應(yīng)于接收到的請求。因而,接收組件可使用事務(wù)窗來提供傳輸組件與接收組件之間的局部排序協(xié)議。
在一個實施例中,針對特定事務(wù)窗指定的排序規(guī)則可為基于與相應(yīng)事務(wù)窗相關(guān)聯(lián)的相應(yīng)延時。即,在響應(yīng)于具有較長延時的請求之前,接收組件可首先響應(yīng)于涉及較低延時的請求。由于接收組件可能知道每一事務(wù)窗之間的延時差異,所以接收組件可根據(jù)其窗指定決定接收事務(wù)。因而,再次參考上文描述的實例事務(wù),實施可擴展協(xié)議的接收組件可響應(yīng)于上述請求如下:
(1)Data.Window0.AddressA
(3)Data.Window0.AddressC
(4)Data.Window0.AddressD
(5)Data.Window0.AddressE
(6)Data.Window0.AddressF
(8)Data.Window0.AddressH
(9)Data.Window0.AddressI
(2)Data.Window3.AddressB
(7)Data.Window3.AddressG
如上所展示,在響應(yīng)于Window3的較高延時請求之前,接收組件可首先響應(yīng)于Window0的低延時請求。即,長延時請求可比短延時請求遲傳輸。因此,送達(dá)請求的系統(tǒng)總線不受阻于相同總線上不同類別的存儲器的存在,而不增加各種周密的協(xié)議復(fù)雜性,例如為字段增加請求優(yōu)先級(REQUEST PRIORITY)。以此方式,可擴展協(xié)議以相對簡單方式提供使用最小數(shù)目個位的復(fù)雜系統(tǒng)操作。
在另一實例中,接收組件可基于針對每一事務(wù)指定的對應(yīng)事務(wù)窗采用局部排序方案。對于以下事務(wù):
(1)Read8b.Window1.AddressA
(2)Read8b.Window2.AddressB
(3)Read8b.Window1.AddressC
接收組件可首先接收事務(wù)(1)且確定AddressA是否可用。如果AddressA較忙,那么接收組件可將事務(wù)(1)存儲于隊列中且等待AddressA變?yōu)榭捎谩M瑫r,接收組件可接著接收事務(wù)(2),且在AddressB可用的情況下執(zhí)行讀取操作。接收組件可接著接收事務(wù)(3),且由于其與事務(wù)(1)相同的窗相關(guān)聯(lián),所以接收組件可確定是否存在有關(guān)在事務(wù)(1)前執(zhí)行事務(wù)(3)的任何排序沖突,這是因為其是相同事務(wù)窗的部分。以相同方式,接收組件可忽略任何潛在的排序沖突或與事務(wù)(2)的任何潛在排序沖突的確定,這是因為其是不同事務(wù)窗的部分。因而,事務(wù)窗可提供在不同事務(wù)被執(zhí)行的同時執(zhí)行數(shù)據(jù)操作的更高效方式。即,由于事務(wù)窗允許操作與相關(guān)操作或存儲器裝置邏輯分組在一起,所以操作可按多種順序執(zhí)行,借此提供完成事務(wù)的靈活方式。相比之下,常規(guī)協(xié)議通常強制執(zhí)行將根據(jù)事務(wù)被發(fā)送的順序執(zhí)行的數(shù)據(jù)操作的嚴(yán)格順序,即使不同事務(wù)可按多種順序執(zhí)行,或可基于在專門的協(xié)議字段中包含所發(fā)送的優(yōu)先級信息而處理事務(wù)。
在一個實施例中,可擴展協(xié)議可提供為每一窗指派最小事務(wù)大小的能力(例如,Window0.Size=8字節(jié)、Window3.Size=128B)。舉例來說,如果Window0的最小傳送大小是8個字節(jié),那么針對48b地址字段,Window0可存儲2^48*8個字節(jié)=~2.25x1015個字節(jié)。以相同方式,如果Window3的最小傳送大小是128個字節(jié),那么Window3可支持~3.6x1016個字節(jié)。因而,Window0及Window3兩者支持明顯比地址空間暗示的字節(jié)更多的字節(jié)。
與事務(wù)窗相關(guān)聯(lián)的另一特征包含其它空間(例如Window0SRAM及系統(tǒng)控制寄存器)的簡單系統(tǒng)層級可尋址性,而不在協(xié)議中創(chuàng)建額外命令。即,SRAM及系統(tǒng)控制寄存器可通過簡單使用Window0而尋址。另一方面,先前協(xié)議可使用額外命令(例如register.read及register.write)以與這些類型的存儲器交互。在針對這些存儲器類型指定事務(wù)窗的情況下,用于其它存儲器裝置的相同讀取及寫入命令也可用于SRAM及系統(tǒng)控制寄存器。即,讀取及寫入命令可簡單指向合適的窗。因而,可擴展協(xié)議可采用更少命令,借此減少協(xié)議中所使用的位的數(shù)目。
通過根據(jù)事務(wù)類型組織數(shù)據(jù)事務(wù),多個事務(wù)窗可提供對相同存儲器類型的多個存取途徑。舉例來說,典型的DDR3DRAM可包含八個庫,且內(nèi)部總線可包含八個此類DRAM。記住這點,八個DRAM可經(jīng)組織使得Window1表示八個DDR3DRAM的群組的庫0且Window2提供對此相同群組的庫1的存取。以此方式,每一窗可指定每一DRAM的特定虛擬地址空間。記住這點,明顯可獲得若干適當(dāng)?shù)姆纸M方法,這是因為可能存在在鎖步(lock-step)操作中分組的任何數(shù)目個DRAM,其各自具有頁、庫及等級。以相同方式,NAND也可用頁、平面及塊分組。此外,多通道裝置可依據(jù)通道及其各種聚合進(jìn)一步分離。通常,分組選項可基于邏輯芯片設(shè)計的復(fù)雜性確定。
通過支持具有多個虛擬地址空間及虛擬通道的多個事務(wù)窗,可擴展協(xié)議可使用事務(wù)窗來在含具有不同延時的存儲器的系統(tǒng)中建立可預(yù)測的數(shù)據(jù)排序。因此,可擴展協(xié)議可支持高優(yōu)先級請求及低優(yōu)先級請求,而無指定高優(yōu)先級請求及低優(yōu)先級請求如何排序的顯式協(xié)議字段。
記住上述內(nèi)容,圖5說明用于為作為存儲器裝置14的部分的各種類型的存儲器指派事務(wù)窗的方法50的流程圖。雖然方法50按特定順序描繪,但是應(yīng)注意,方法50可按任何適當(dāng)順序執(zhí)行,且因此不限于圖中描繪的順序。另外,為了論述目的,方法50的以下描述將被描述為由存儲器SoC 22執(zhí)行。因而,可以通信方式耦合到各種類型的存儲器的任何適當(dāng)處理器可執(zhí)行方法50中描述的操作。
現(xiàn)參考圖5,在框52處,存儲器SoC 22可接收來自存儲于存儲器SoC 22本身內(nèi)的寄存器或其它存儲器組件的初始化信號。在一個實施例中,初始化信號可在通電時或在存儲器裝置14初次接收電力時由存儲器SoC 22接收。
在框54處,存儲器SoC 22可確定其能夠存取的存儲器類型。即,存儲器SoC 22可掃描其通信分道(例如,通道29),且識別可能可以通信方式耦合到存儲器SoC 22的不同類型的存儲器。重新參考圖2中描繪的實例存儲器裝置14,存儲器SoC 22可確定RLDRAM 26、DDR4 28及NAND 24存儲器類型耦合到存儲器SoC 22。
在框56處,存儲器SoC 22可確定在框54處識別的存儲器類型中的每一者的能力。存儲器類型的能力可包含存儲器類型的容量、使用存儲器類型的讀取操作的預(yù)期延時、使用存儲器類型的寫入操作的預(yù)期延時及類似能力??捎纱鎯ζ鱏oC 22識別用于指派事務(wù)窗的其它能力可包含讀取延時、寫入延時、帶寬、最小讀取事務(wù)大小、最小寫入事務(wù)大小、裝置循環(huán)時間、可就地寫入與否、字節(jié)寫入能力與否及類似能力。在某些實施例中,每一不同類型的存儲器可與不同組能力相關(guān)聯(lián)。不同類型的存儲器與所述不同組的能力之間的關(guān)聯(lián)性可被存儲于存儲器SoC 22的寄存器中或可由每一相應(yīng)存儲器類型提供。
在確定存儲器類型的能力后,存儲器SoC 22可在框58處基于每一存儲器類型的相應(yīng)能力將事務(wù)窗指派給在框54處識別的每一存儲器類型。通常,存儲器SoC 22可將每一類似存儲器類型指派給相同事務(wù)窗。即,由于每一類似存儲器類型具有類似能力,所以存儲器SoC 22可將存儲器類型指派給相同事務(wù)窗。舉例來說,再次參考圖2的實例存儲器裝置14,存儲器SoC 22可將兩個DDR4 28存儲器指派給相同事務(wù)窗,這是因為其是相同的存儲器類型。以相同方式,如果兩個不同的存儲器類型具有特定數(shù)目的類似能力,那么存儲器SoC 22也可將兩個存儲器類型指派給相同事務(wù)窗。
在一個實施例中,存儲器SoC 22可基于存儲器SoC 22的期望操作將存儲器類型指派給對應(yīng)事務(wù)窗。例如,如果存儲器SoC 22期望所有讀取操作都具有至少特定延時,那么存儲器SoC 22可將每一經(jīng)識別存儲器類型指派給滿足此延時閾值的第一事務(wù)窗中,或指派給不滿足此延時閾值的第二事務(wù)窗中。
在將事務(wù)窗指派給每一經(jīng)識別存儲器類型之后,存儲器SoC 22可繼續(xù)進(jìn)行到框60,將每一事務(wù)窗的性質(zhì)存儲于存儲裝置中。存儲裝置可包含能夠存儲數(shù)據(jù)的任何適當(dāng)裝置。因而,存儲裝置可包含局部寄存器、表或某種其它信息存儲單元。以此方式,存儲器SoC 22可根據(jù)如上所描述的排序規(guī)則針對每一存儲器類型執(zhí)行操作。在一些情況中,所存儲性質(zhì)可詳述每一事務(wù)窗的特定能力連同有關(guān)每一事務(wù)窗的操作的其它相關(guān)信息。
可編程的間接層級數(shù)目
雖然包30已在上文中被描述為具有事務(wù)類型字段32、有效負(fù)載字段34及ECC字段36,但是在某些實施例中,可擴展協(xié)議可將其它任選字段包含到包30中以調(diào)節(jié)請求,例如讀取、寫入、移動、讀取-修改-寫入及類似物。一種此狀況可包含指示應(yīng)用到請求的間接層級數(shù)目。
間接層級可指示請求與所請求數(shù)據(jù)之間的指針的數(shù)目。鑒于在計算系統(tǒng)中可用的巨量數(shù)據(jù)(例如大數(shù)據(jù)),數(shù)據(jù)通常經(jīng)由多個表索引且被存儲于一個位置中。即,在大數(shù)據(jù)系統(tǒng)中,針對特定數(shù)據(jù)集的請求可包含指向第二指針(例如,鏈路列表)的指針,所述第二指針指向第三指針,等等。最后,指針序列中的最后指針可指向所請求數(shù)據(jù)集的地址。每一指針到指針鏈路可被稱作間接層級。通過每一間接層級識別所請求數(shù)據(jù)集的過程通常被稱作“指針追逐(pointer chasing)”。
從請求組件的角度來看,請求組件可最初用第一指針發(fā)送針對特定數(shù)據(jù)集的請求。響應(yīng)于具有第一指針的請求,請求組件可接收第二指針。因而,請求組件可接著用第二指針發(fā)送針對特定數(shù)據(jù)集的第二請求。此過程可繼續(xù)直到請求組件接收到特定數(shù)據(jù)集。相應(yīng)地,請求總線Q上的業(yè)務(wù)可涉及在實際接收由一個單個初始請求請求的數(shù)據(jù)集前的多個請求。
為了減少有關(guān)各種間接層級類型請求的總線業(yè)務(wù)量,可擴展協(xié)議可在專用集成電路(ASIC)、存儲器SoC 22、主機SoC 12或?qū)嵤┛蓴U展協(xié)議的類似物的設(shè)計內(nèi)指定請求組件在實際接收所請求數(shù)據(jù)之前可接收的指針數(shù)目的指示。因而,實施可擴展協(xié)議的存儲器系統(tǒng)可識別原始請求與數(shù)據(jù)的位置之間的指針鏈,且可基于來自請求組件的初始請求將請求送達(dá)到所請求數(shù)據(jù)。即,一個請求(其涉及來自請求組件的任何數(shù)目個間接層級)可致使接收包含所請求數(shù)據(jù)的僅一個響應(yīng)。
記住這點,指示間接層級數(shù)目的任選字段可包含2個位。在一個實施例中,二進(jìn)制00可指示無間接層級或請求中的所供應(yīng)地址是期望操作數(shù)的實際地址。二進(jìn)制01可指示1個間接層級或由請求內(nèi)的地址指定的位置處的數(shù)據(jù)實際上是指針的地址(例如,最后地址),且期望操作數(shù)地址含在所述指針中。舉例來說,在具有1個間接層級的讀取請求中,由請求組件執(zhí)行的實際功能可首先包含讀取請求中所含的地址的內(nèi)容。在此實例中,地址的內(nèi)容可為Address2。實施可擴展協(xié)議的存儲器系統(tǒng)可接著讀取Address2的存儲器位置處的內(nèi)容,且Address2的存儲器位置的內(nèi)容被供應(yīng)為讀取請求的結(jié)果。
以相同方式,二進(jìn)制10可指示2個間接層級。在此,所供應(yīng)地址可指向Address2,所述Address2可為指針。即,Address2可包含指向Address3的指針。Address3處的數(shù)據(jù)內(nèi)容可接著被供應(yīng)到請求組件作為讀取請求的結(jié)果。
二進(jìn)制11可指示3個間接層級。因而,所供應(yīng)地址可指向Address2,Address2可指向Address3,Address3可指向Address4,Address4可包含數(shù)據(jù)內(nèi)容。實施可擴展協(xié)議的存儲器系統(tǒng)可將數(shù)據(jù)內(nèi)容提供到請求組件作為讀取請求的結(jié)果。
在寫入請求的實例中,由實施可擴展協(xié)議的存儲器系統(tǒng)執(zhí)行的過程可與所描述的讀取實例相同。例如,在間接層級字段被設(shè)置為二進(jìn)制11的情況下,存儲器系統(tǒng)可通過首先讀取寫入請求的地址(例如,Address2)而執(zhí)行寫入操作。在知道間接層級字段是11的情況下,存儲器系統(tǒng)可繼續(xù)讀取Address2的內(nèi)容,所述內(nèi)容可涉及Address3。存儲器系統(tǒng)可接著讀取Address3的內(nèi)容,所述內(nèi)容可涉及Address4。存儲器系統(tǒng)可接著將寫入請求的數(shù)據(jù)寫入到Address4的存儲器中。因而,在此實例中,寫入請求可包含寫入之前的3個讀取,但3個讀取中的每一者由單個寫入請求起始。雖然間接字段已被描述為具有兩個位,但是應(yīng)注意,間接字段可包含任何數(shù)目個位以指示任何數(shù)目的間接層級。
如上所述,間接層級可在有效負(fù)載字段34的間接層級字段48內(nèi)指定,如圖4中所說明。間接層級字段48內(nèi)指定的間接層級數(shù)目對應(yīng)于存儲器系統(tǒng)在檢索存儲器位置的內(nèi)容時可預(yù)期遭遇的間接層級數(shù)目。
在一個實施例中,由間接層級字段48使用的位的數(shù)目(例如,大小)可基于由主機SoC 12提供的優(yōu)先級確定。例如,在通電時,主機SoC 12可發(fā)現(xiàn)存儲器SoC 22且使用本文中描述的可擴展協(xié)議確定存儲器SoC 22正在操作。因而,主機SoC 12可確定其在不損及其性能的情況下,可能能夠適應(yīng)的間接層級的最大數(shù)目。間接層級的最大數(shù)目可基于主機SoC 12的寫入及/或讀取延時或主機SoC 12的其它操作參數(shù)確定。如果例如主機SoC 12確定間接層級的最大數(shù)目為3,那么其可指定存儲器SoC 22將2位字段用作間接層級字段48。在一些實例中,主機SoC 12可能無有關(guān)涉及任何數(shù)目個間接層級的操作的優(yōu)先級。在此情況中,主機SoC 12可指定存儲器SoC 22不包含間接層級字段48。
在準(zhǔn)備包30用于傳輸時,存儲器SoC 22可確定包30被傳輸?shù)脑?。因而,存儲器SoC 22可確定什么軟件命令用于包30的傳送。產(chǎn)生包的軟件命令可例如對應(yīng)于查找指針的指針的命令。存儲器SoC 22可將此命令解譯為具有兩個間接層級,且因此可在準(zhǔn)備包30用于傳輸時在間接層級字段48中提供10二進(jìn)制值。
間接層級可用于各種類型的操作。舉例來說,任意維度的數(shù)組可在不增加不必要的業(yè)務(wù)到相應(yīng)總線的情況下,使用間接層級來協(xié)助請求組件識別其相應(yīng)請求的內(nèi)容。例如,3維數(shù)組可使用三個指針來存取數(shù)據(jù)。一些經(jīng)界定結(jié)構(gòu)的記錄可使用指針。此記錄的一個實例可包含具有針對列表中的每個結(jié)構(gòu)的首指針及尾指針的鏈路列表。對于鏈路列表,間接層級的抽象化可使鏈路列表的解析能更高效地發(fā)生。即,通過知道開始的地址及所請求數(shù)據(jù)位于作為列表的第8個元素或涉及8個間接層級的目的地處,存儲器系統(tǒng)可使用由請求組件提供的單個請求檢索所請求數(shù)據(jù)或列表的第8個元素。在此,存儲器系統(tǒng)可解析8個間接層級中的每一者以確定所請求數(shù)據(jù)的位置。在識別所請求數(shù)據(jù)的位置時,存儲器系統(tǒng)可為請求組件提供所請求數(shù)據(jù),因此將總線業(yè)務(wù)限于來自請求組件的一個請求及來自所請求數(shù)據(jù)的位置的一個響應(yīng)。
不應(yīng)答接收到的包
用于減小總線業(yè)務(wù)的另一技術(shù)可包含不應(yīng)答接收到的包。即,在常規(guī)協(xié)議中,已被接受組件接收的每一包可將應(yīng)答包發(fā)送回到傳輸組件。由于絕大多數(shù)被傳輸包由對應(yīng)的接受組件接收,所以發(fā)送應(yīng)答包可能增加相應(yīng)總線上的業(yè)務(wù),而不提供太多益處。
例如,如果響應(yīng)于接收到每個成功包而發(fā)送應(yīng)答位,且考慮傳輸具有在非常高速的接口中常見的1e-12的位錯誤率(BER),那么大量不必要位被傳輸來指示每一包已被接收。記住這點,且假設(shè)平均包包含100個位,且平均包錯誤率為大約1e-10,那么接受組件可傳輸指示1x1010個包的成功的應(yīng)答位及指示錯誤的1個包。有效地,接受組件可能已發(fā)送大約1x1010個位來指示一個錯誤。
為了減少在總線內(nèi)流動的位的數(shù)量,接受組件可不針對每個接收到的包發(fā)送應(yīng)答包。而是,傳輸組件可假設(shè)所發(fā)送的包已被接收,除非接受組件另外通知。在圖6及圖7中說明未針對每一接收到的包發(fā)送應(yīng)答包的實例。參考圖6,請求總線Q可發(fā)送2千字節(jié)的讀取請求。在接收到讀取請求時,響應(yīng)總線S可傳輸指示2KB消息已準(zhǔn)備好用于讀取的包。請求總線Q可接著重新傳輸讀取請求,其可導(dǎo)致響應(yīng)總線S在不同包中發(fā)送所請求數(shù)據(jù)。如圖6中所展示,在接收到數(shù)據(jù)的每一包時,請求總線Q不發(fā)送指示包被成功接收的應(yīng)答包。在此,由于請求總線Q可用高延時讀取操作進(jìn)行操作,所以響應(yīng)總線S可包含兩個操作階段。即,響應(yīng)總線S可指示消息已準(zhǔn)備好,且接著響應(yīng)總線S可發(fā)送有關(guān)讀取請求的對應(yīng)數(shù)據(jù)。
以相同方式,高延時直接存儲器存取子系統(tǒng)可針對各種寫入操作采用單階段響應(yīng)。例如,圖7說明其中讀取-修改-寫入請求在請求總線Q上傳輸且用讀取-修改-寫入請求完成的消息響應(yīng)的實例。
記住上述內(nèi)容,接受組件仍可接收具有錯誤的包。因而,接受組件可通過發(fā)送NOT_ACKNOWLEDGE包到傳輸組件而通知傳輸組件包尚未被接收或接收到的包含有錯誤。除指示被發(fā)送包尚未被接收外,NOT_ACKNOWLEDGE包可指示最新的已知良好的總線事務(wù)。因而,當(dāng)經(jīng)由ECC子系統(tǒng)檢測到錯誤時,具有錯誤的包應(yīng)被重新傳輸。接受組件可識別最新的成功總線事務(wù)的傳輸組件作為參考,而使得重新傳輸可發(fā)生。
在某些實施例中,可擴展協(xié)議可使用4個相關(guān)字段來向傳輸組件指示最后已知良好的總線事務(wù)的標(biāo)識符。相關(guān)字段包含窗、地址、事務(wù)及任選數(shù)據(jù)序列號。這四個字段可識別系統(tǒng)中的任何請求/響應(yīng)。在某些實施例中,額外ECC字段可用于檢測傳輸中的錯誤(例如,被保證檢測傳輸包中1個、2個、3個、4個或5個隨機錯誤的存在的代碼,也被稱作HD6碼,如將在下文更詳細(xì)描述)。
在檢測到錯誤時,接受組件可發(fā)送NOT_ACKNOWLEDGE消息到傳輸組件。此包的大小可為許多可能的字段大小。例如,NOT_ACKNOWLEDGE消息可為4位事務(wù)類型、3位窗、48位地址、7位數(shù)據(jù)序列號及5位原始事務(wù)類型,總共67個位。接著,可添加15位ECC字段,由此使總數(shù)變?yōu)?2個位。重新參考上述實例,82個位顯著低于用于指示1x1010個包中的一個錯誤而發(fā)送的1x1010個位,且因此是指示地址錯誤包的更高效方式。應(yīng)注意,上述數(shù)據(jù)序列號可識別錯誤包。有關(guān)數(shù)據(jù)序列號及其可如何產(chǎn)生的額外細(xì)節(jié)將在下文參考圖12到14論述。
在檢測到系統(tǒng)中的錯誤時,傳輸器組件應(yīng)重新發(fā)送數(shù)據(jù)。然而,由于在檢測錯誤時存在一定延時,所以在接受組件確定錯誤存在于接收到的包中之前,傳輸組件可能已傳輸其它包。由于可擴展協(xié)議包含使用上文描述的數(shù)據(jù)包封技術(shù)發(fā)送的可變包大小,所以先前傳輸錯誤可能導(dǎo)致接受組件具有錯的包長度,且因此誤譯含錯誤的包之后的每個數(shù)據(jù)包。因而,接收組件可向傳輸組件指示到接受組件的最新的已知良好的總線事務(wù)的標(biāo)識符。傳輸組件及接收組件可接著返回到錯誤的包已被接收的點且阻止任何動作在潛在錯誤包及其后的包上發(fā)生。
歸因于涉及最后已知良好的總線事務(wù)的此規(guī)則,接受組件可準(zhǔn)確地向傳輸組件指示重新傳輸可能發(fā)生的正確點。然而,當(dāng)不存在良好事務(wù)(例如,從通電或復(fù)位不成功開始的第一事務(wù))時,接受組件可并入上述規(guī)則的一個例外。在此情況中,接受組件可用0填入所有字段,使得系統(tǒng)的所有組件將0的字段解譯為“第一事務(wù)”。
如上所述,可擴展協(xié)議可包含任選的數(shù)據(jù)序列號字段。此字段可支持期望比由協(xié)議支持的最大響應(yīng)包大的事務(wù)。舉例來說,考慮窗中的最小事務(wù)為128個字節(jié)及指定事務(wù)的大小的被稱作大小(Size)的另一字段,總事務(wù)大小可被確定為2^Size*windowMinTransactionSize。如果大小是3位字段,那么最大事務(wù)可為2^7*128=16,384個字節(jié)。為了防止任何總線被一個請求占用太長時間,由協(xié)議支持的最大單個包可為128B的數(shù)據(jù)。因此,16,384字節(jié)事務(wù)可由每一128B的128個數(shù)據(jù)包滿足。在一個實施例中,任選的數(shù)據(jù)序列號字段可包含7個位,其涉及此128個數(shù)據(jù)包中的任一個。以此方式,如果NOT_ACKNOWLEDGE消息發(fā)布,那么NOT_ACKNOWLEDGE消息可正確地識別傳輸變?yōu)椴怀晒Φ木_點。在另一實施例中,與2N字節(jié)相比,針對TransactionSize 0到15的8B的最小TransactionSize可為8個字節(jié)、16個字節(jié)、32個字節(jié)、48個字節(jié)、64個字節(jié)、80個字節(jié)、96個字節(jié)、112個字節(jié)及128個字節(jié)以節(jié)省下限的位。
數(shù)據(jù)包封
記住上述內(nèi)容,為了提供靈活的通信總線,可擴展協(xié)議可在使用任何類型的總線通信傳輸包時采用數(shù)據(jù)包裝技術(shù)。通常,由于包大小是基于被發(fā)送的請求或響應(yīng)的類型、被發(fā)送的數(shù)據(jù)、被請求的操作等等而確定,所以在知道有關(guān)包的更多細(xì)節(jié)前可能難以預(yù)期使用什么類型的數(shù)據(jù)通道。因而,可擴展協(xié)議可經(jīng)設(shè)計以通過在不如常規(guī)協(xié)議所做用零填充每一個別包的情況下,通過將被傳輸數(shù)據(jù)包包封在一起而使可用通道的使用最大化。如本文中使用,術(shù)語“不填充”意味著在數(shù)據(jù)包傳輸之間,零(即,具有零值的位)未跨越相應(yīng)通道傳輸。而是,準(zhǔn)備好被傳輸?shù)南乱徽{(diào)度包將在緊接在先前包被傳輸之后的時鐘循環(huán)上傳輸。
舉例來說,考慮包含10個信號通道的請求總線Q及包含8個信號通道的響應(yīng)總線S。本實例假設(shè)不存在數(shù)據(jù)編碼且事務(wù)僅包含簡單位傳輸(即,無符號傳輸)。如果Q總線上的占用大小是:4.3、7.3、9.7、13.5、14.3、14.9、20.0、20.1、21.6、33.0、36.2、58.8、65.2、105.4、110.5及123.0,那么常規(guī)協(xié)議可填充具有與其相關(guān)聯(lián)的分?jǐn)?shù)分量的值。即,常規(guī)協(xié)議可將零添加到每一分?jǐn)?shù)值的其余部分,使得Q總線上的占用的大小分別變?yōu)?、8、10、14、15、15、20、21、22、33、37、59、66、106、111及123。在一些情況中,可將多達(dá)9個零添加到傳輸,其可能不利地影響總總線利用效率,這是因為被傳輸?shù)牧悴⒎钦鎸嵈肀粋鬏數(shù)臄?shù)據(jù)。以此方式,這些零利用總線而不傳達(dá)信息,由此減小總線利用效率。
在一個實施例中,取代填充被傳輸數(shù)據(jù),可擴展協(xié)議可允許請求被包封在一起。總線信號因此無填充的零。舉例來說,圖8說明其中可擴展協(xié)議將兩個18位請求包封在一起的分道包封實例61。參考圖8,可擴展協(xié)議可將傳輸視為符號而非位。在圖8的實例中,一個位可代表一個符號。由于圖8中的總線62包含12個分道(即,可在一個微片中傳輸12個位),所以可擴展協(xié)議可通過將請求包封在一起而傳輸兩個18位請求。即,第二18位請求66可緊接在第一18位請求64之后傳輸。因而,傳輸總線不含廢位(例如,填充的零)。
在某些實施例中,為了保證接收組件可識別被包封在通道中的新包的起始,傳輸組件可用起始位起始每一新包30,所述起始位可在起始位字段46中指定,如上所述。因而,當(dāng)接收組件接收到位流形式的被包封數(shù)據(jù)包時,其可基于何時檢測到起始位而識別每一包的起始。記住這點,被傳輸?shù)拿恳话砂鹗嘉?例如,1值)以指示新包的存在。以此方式,當(dāng)接收組件接收到被包封在一起的包時,其可識別每一新包的開始,基于事務(wù)類型字段32確定包的事務(wù)類型,基于事務(wù)窗字段42確定事務(wù)窗,基于地址字段44確定操作的地址,基于間接層級字段48確定間接層級數(shù)目及基于ECC字段36確定錯誤校驗代碼。
記住這點,圖9說明用于產(chǎn)生包用于傳輸,使得包可使用上文描述的分道包封方案傳輸?shù)姆椒?0的流程圖。為論述的目的,方法70的以下描述將被論述為由存儲器SoC22(即,傳輸/請求組件)執(zhí)行,但應(yīng)理解,作為存儲器裝置14的部分的任何處理器可執(zhí)行方法70中描述的操作。
現(xiàn)參考圖9,在框72處,存儲器SoC 22可接收將被傳輸?shù)臄?shù)據(jù)操作的指示。數(shù)據(jù)操作可包含將被發(fā)送的消息、讀取操作、寫入操作或類似操作。在框74處,存儲器SoC22可識別對應(yīng)于數(shù)據(jù)操作的事務(wù)類型。在某些實施例中,請求數(shù)據(jù)操作被執(zhí)行的軟件可指定事務(wù)類型。替代地,存儲器SoC 22可接收來自軟件的命令且從可由存儲器SoC 22本地存取的查找表或存儲單元確定對應(yīng)事務(wù)類型。即,存儲器SoC 22可咨詢查找表,所述查找表可包含根據(jù)可被請求的若干可能的數(shù)據(jù)操作索引的若干事務(wù)類型。
在框76處,存儲器SoC 22可基于與所請求數(shù)據(jù)操作相關(guān)聯(lián)的存儲器類型確定事務(wù)窗。即,存儲器SoC 22可確定在執(zhí)行數(shù)據(jù)操作時什么類型的存儲器將被存取,且使用查找表或類似物基于存儲器的類型確定相應(yīng)事務(wù)窗。除事務(wù)窗外,存儲器SoC 22可確定存儲器地址,所述地址指代有關(guān)數(shù)據(jù)操作及事務(wù)窗的數(shù)據(jù)的位置。舉例來說,針對讀取操作,地址可指代將從指定存儲器讀取的數(shù)據(jù)的位置。
在框78處,存儲器SoC 22可確定對應(yīng)于所請求數(shù)據(jù)操作的間接層級數(shù)目。如上文論述,間接層級數(shù)目可由數(shù)據(jù)操作本身或由請求執(zhí)行數(shù)據(jù)操作的軟件指定。
在框80處,存儲器SoC 22可針對包30產(chǎn)生錯誤控制代碼(ECC)值。ECC值可被接收組件用于保證包30在無錯誤的情況下被接收。因而,存儲器SoC 22可首先確定合適的錯誤控制代碼(ECC)算法來用于對包30編碼。在一個實施例中,請求傳輸?shù)能浖?yīng)用程序可指定ECC來進(jìn)行算法使用。替代地,主機SoC 12或存儲器SoC 22可指定特定ECC算法以用于對所有被傳輸及被接收的包編碼及解碼。在任何情況中,包30的ECC值可基于在事務(wù)類型字段32及有效負(fù)載字段34中提供的位而確定。
在確定表示上述事務(wù)類型、事務(wù)窗、間接層級數(shù)目及ECC值的位值后,存儲器SoC22可在框82處根據(jù)在框72、74、76及80處確定的值產(chǎn)生包30。在產(chǎn)生包30時,存儲器SoC 22可最初針對起始位字段46提供1以向接收組件指示新包正被傳輸。在將1插入起始位字段46后,存儲器SoC 22可提供代表在74處于事務(wù)類型字段32中識別的事務(wù)類型的值。
存儲器SoC 22可接著使用在框76處確定的事務(wù)窗及地址及在框78處確定的間接層級數(shù)目產(chǎn)生包30的有效負(fù)載字段34。即,存儲器SoC 22可在事務(wù)類型字段32后輸入事務(wù)窗值,且將事務(wù)窗值輸入事務(wù)窗字段42中。存儲器SoC 22可接著將數(shù)據(jù)操作的地址輸入地址字段44中及將間接層級數(shù)目輸入間接層級字段48中。
在包30產(chǎn)生后,存儲器SoC 22可在框84處取決于包30的目的地而經(jīng)由通道16、通道29或類似物傳輸包30。在所產(chǎn)生包30被傳輸后,存儲器SoC 22可繼續(xù)進(jìn)行到框86且確定下一待傳輸包是否已準(zhǔn)備好用于傳輸。通常,用于傳輸?shù)南乱话筛鶕?jù)上文關(guān)于框72到82描述的過程產(chǎn)生。如果下一包已準(zhǔn)備好用于傳輸,那么存儲器SoC 22可再次繼續(xù)進(jìn)行到框84,且緊接著在前一個包被傳輸之后傳輸下一包。通過在另一包被傳輸之后立即傳輸每一隨后包,存儲器SoC 22可根據(jù)包封分道方案傳輸包,這不涉及在未利用總線的所有分道時在總線上填充零。
為了更好地說明包可如何根據(jù)包封分道方案傳輸,圖10說明可根據(jù)本文中描述的包封分道方案傳輸?shù)娜舾砂?。如圖10中所展示,在總線62上傳輸?shù)牡谝话?2包含起始位(1)、針對事務(wù)類型字段32的5個位、針對有效負(fù)載字段34的45個位及針對ECC字段36的6個位。在第一包94被傳輸之后,在總線62上立即傳輸?shù)诙?4。因而,在位時間3處的位分道9中,緊接在第一包92的ECC字段36的最后位之后,存在起始位(1)。此外,其余位分道(即,位分道10到15)包含與第二包94相關(guān)聯(lián)的數(shù)據(jù)。
與其它包傳輸方案相比,總線62無位分道填充有零或不用于包的傳輸。即,在其它包傳輸方案中,由于第一包92僅占據(jù)可用的16個位分道中的9個,所以其余位分道(即,位分道10到15)將填充零,且第二包94將在位時間4處開始被傳輸。以此方式,存儲器SoC 22可將用于發(fā)送包的總線的效率最大化。
應(yīng)注意,仍存在當(dāng)存儲器SoC 22仍可在發(fā)送包之間傳輸零的實例。例如,重新參考圖9的框86,如果下一包未準(zhǔn)備好用于傳輸,那么存儲器SoC 22可繼續(xù)進(jìn)行到框88,且在下一可用位分道中傳輸零。即,由于總線62連續(xù)操作,所以存儲器SoC 22可能無法使總線62停止運作,且因此可在總線62上傳輸零,直到下一包準(zhǔn)備好用于傳輸。因而,在存儲器SoC 22在下一可用位分道中沿著總線傳輸零后,存儲器SoC 22可返回到框86,且再次確定下一包是否準(zhǔn)備好用于傳輸。此案例也在圖10中進(jìn)行說明。
再次參考圖10,在第二包94被傳輸后,存儲器SoC 22可能未使另一包準(zhǔn)備好用于傳輸。因而,在位時間8處,存儲器SoC 22可開始傳輸零,直到第三包96準(zhǔn)備好用于傳輸。因而,存儲器SoC 22可在位時間8處在位分道6到15上傳輸零,直到第三包96在位時間9處準(zhǔn)備好用于傳輸。為了保證接收組件不會將填充在總線中的零誤譯為數(shù)據(jù),接收組件可連續(xù)接收來自存儲器SoC 22的位且確定有效包在接收下一包的一個位或起始位后被傳輸。
在某些實施例中,如果另一包未準(zhǔn)備好用于傳輸,那么存儲器SoC 22可將總線62斷電,直到下一包準(zhǔn)備好用于傳輸。在此情況中,存儲器SoC 22可在總線62未用于傳輸包時節(jié)省用于給總線62供電的能量。
為了說明使用分道包封方案傳輸包的效率,提出以下實例。10分道總線上的傳輸序列可包含以下總線活動:73個位,接著652個位,接著73個位,接著652個位。此4個請求的群組包含總共1450個位,其包含總線上剛好145個信號間隔(被正式稱作單位間隔或UI)而無廢位。UI可指代一個定時群組的數(shù)據(jù),其包含特定數(shù)目個位。例如,在8位總線或8分道鏈路上,經(jīng)由8分道鏈路傳輸?shù)臄?shù)據(jù)的一個微片可對應(yīng)于一個微片。一個微片接著可被稱作一個UI,其包含8位的數(shù)據(jù)。因而,UI可用于評估總線被利用的效率。即,通過將包位計數(shù)(其包含StartBit、事務(wù)類型字段32、有效負(fù)載字段34及ECC字段36)除以8b的總線寬度而計算包的UI占用。因而,如果8分道鏈路用于發(fā)送6位的數(shù)據(jù),那么UI是0.75(6/8)。
記住上述內(nèi)容,下文提出的實例假設(shè)以下狀況是存在的:ECC漢明距離(Hamming Distance)3;事務(wù)類型字段32包含請求總線Q及響應(yīng)總線S兩者上的5個位;dataSequenceNumber是7個位;8位單元大小;4位transactionSize;3位窗;48位地址;2位levelsOfIndirection;24位RMWopcode+數(shù)據(jù);4位消息類型。在這些設(shè)置大小假設(shè)下,可能出現(xiàn)在響應(yīng)總線S上的11個樣本事務(wù)類型可包含79b、83b、144b、273b、401b、530b、658b、786b、914b、1043b及2067b的包大小。這些包大小包含事務(wù)類型字段32、有效負(fù)載字段34及ECC字段36,但不含上述StartBit。在常規(guī)8b總線中,零填充將被添加以使每一包達(dá)到偶數(shù)8b邊界,且將無需StartBit。因而,用于在添加零填充后傳輸這11個事務(wù)類型的總線微片的數(shù)目或單位間隔的數(shù)目將分別為10(79/8)、11(83/8)、18(144/8)、35(273/8)、51(401/8)、67(530/8)、83(658/8)、99(786/8)、115(914/8)、131(1043/8)及259(2067/8)。即,對于79個位的第一包,一個零將被填充到包的最后8個位上,使得10個8分道鏈路將被用于發(fā)送79位包。
然而,使用本文中描述的技術(shù),例如添加StartBit及將響應(yīng)包封在一起,用于傳輸相同包的UI數(shù)目分別是10(80/8)、10.5(84/8)、18.125(145/8)、34.25(274/8)、50.25(402/8)、66.375(531/8)、82.375(659/8)、98.375(787/8)、114.375(915/8)、130.5(1044/8)及258.5(2068/8)。因而,針對隨機選擇的包大小的平均節(jié)省是每個事務(wù)0.5UI,因此位節(jié)省隨分道數(shù)目增加而增大。此實例指示請求總線Q或響應(yīng)總線S的任何寬度,不管其是兩個總線上的相等還是不相等寬度。為了使可擴展協(xié)議能如上文描述那樣包封分道,主機SoC 12或任何其它接收器可使用以下傳輸/接收方案:接收包30;解析包30的內(nèi)容以識別事務(wù)類型、有效負(fù)載的大小及ECC字段36在包30內(nèi)的位置;基于ECC驗證包30的正確性,及接著確定地作用于傳輸。
以此方式,接收到的傳輸包在其內(nèi)容被解析之前可整體被捕獲于接收器緩沖器(例如,緩沖器23)中。此外,接收器可能不使用接收到的包,除非包被驗證為無錯誤。緩沖器23可被操作為先進(jìn)先出(FIFO),其具有在檢測到傳輸錯誤的情況下選擇性清空的額外能力??蓴U展協(xié)議可包含可變位長度能力,其用于將數(shù)據(jù)拉出緩沖器23,且用于包位移位。如上文參考圖3論述,包30的開始可包含事務(wù)類型字段32,其可基于事務(wù)類型字段32中所指示的事務(wù)類型指定包大小。因而,事務(wù)類型字段32包含可擴展協(xié)議可用于確定包大小(其包含包30內(nèi)ECC字段36的大小及相對位置)的信息。在ECC被校驗后,采用可擴展協(xié)議的接收器可確定包30是否無錯誤。如果包被認(rèn)為無錯誤,那么接收器可知道事務(wù)類型被適當(dāng)?shù)鼐幋a且包大小被正確地解譯。接收器可接著繼續(xù)進(jìn)行到緊接在最新解析包之后接收的下一包。此可擴展協(xié)議可結(jié)合任何總線變動使用,無論是全雙工或半雙工,不管大小、長度、編碼/解碼方法及類似物。在接收組件接收到根據(jù)分道包封方案包封的包后發(fā)生的過程的額外細(xì)節(jié)將在下文參考圖11論述。
為了參考,可擴展協(xié)議可包含長度變化的傳輸。即,在請求總線Q上,可擴展協(xié)議可使用16個不同長度。舉例來說,請求總線可包含43、73、97、135、143、149、200、201、216、330、362、588、652、1054、1105及1230的長度位計數(shù),其中無填充以形成任何特定優(yōu)化長度,例如全為8的增量或類似物。以相同方式,響應(yīng)總線S可包含8個不同長度,例如33、42、85、101、167、297、555及1069的長度位計數(shù),再次無填充。
解析包以用于數(shù)據(jù)包封
如上所述,可擴展協(xié)議可經(jīng)設(shè)計以促進(jìn)最大位效率。因而,在某些實施例中,包30可具有任意大小,其未對應(yīng)于所利用物理總線的整數(shù)倍。任意大小包的傳輸通過將包緊實地包封在一起而維持位效率,使得每一后繼包緊接在前一包之后被傳輸,而不用零填充任一包。然而,為了使接收器(例如,主機SoC 12)確定第一包在何處結(jié)束及第二包在何處開始,接收器可實施本文中描述的用于解析接收到的包的某些技術(shù)。在某些實施例中,可擴展協(xié)議可指定接收器對接收到的包所采用的解析方法。此解析方法可包含移位操作、錯誤檢測及緩沖器管理作為在系統(tǒng)實施方案中所利用的邏輯操作的頭部處的管線操作。
記住上述內(nèi)容,下文描述進(jìn)入方向上單向的8個位及在外出方向上8個位的物理總線的實例(全雙工)以闡明解析方法的某些方面。在此實例中,一個微片被視為存在于總線上的數(shù)據(jù)的一個單位間隔。即,一個微片可包含經(jīng)由總線傳送的8位數(shù)據(jù)。此外,具有地址36b、窗3b及59位的漢明密度(HD6)錯誤涵蓋率的最小包可包含5位事務(wù)類型、41位數(shù)據(jù)有效負(fù)載及13位ECC。假設(shè)經(jīng)類似設(shè)置大小的小包的無限流可被包封在一起,不留位間隙,傳輸可反映以下序列,針對被傳輸?shù)牡谝话瑥耐ǖ?開始,且行進(jìn)到通道7:(name.0表示那個字段的位0)
第二包可接著被設(shè)置為從微片8,分道3開始,如下:
第三包可接著在微片16,分道6中開始,如下:
記住上文說明的三個實例包,傳入位一旦被接收器接收,就可被放置到接收FIFO中。由于在上文實例中,存在8個分道,所以位可一次移動8個。然而,由于傳入總線可能極快(例如,太快而無法循環(huán)FIFO),所以FIFO也可被制作為顯著較寬,且數(shù)據(jù)可被連續(xù)發(fā)送到FIFO的每一連續(xù)8b寬度,直到到達(dá)最后的寬度單元。此時,F(xiàn)IFO地址根據(jù)通常FIFO操作遞增,且填充在FIFO分道0到7處再次開始,接著8到15等等,直到再次接收到最后的寬度單元。這允許較慢邏輯跟上非??斓拇谢?解串行化器(SERDES)組件(例如,40Gb/s SERDES具有25ps的單位間隔)。如果使用2GHz的邏輯時鐘,那么FIFO可為20×8位分道寬度或160位寬。因而,ECC邏輯可使用針對每一塊的XOR門自然內(nèi)建于160位塊中(例如,塊0過程位0到159,塊1過程位160到319等等,使得ECC塊的總數(shù)可為14個,其中每一ECC塊可包含2-輸入XOR柵極的不同互連)。
由于上文描述的三個包中的每一者被連續(xù)傳輸,且由于位到達(dá)接收器不包含任何幀化信息,所以由接收電路(例如,主機SoC 12)負(fù)責(zé)首先確定包的長度,使得包可被適當(dāng)?shù)貛?。再次參考上文實例,接收器可首先接收可立即從FIFO獲得的160位值。在上文描述的特定實例中,整個第一包駐留在那個160位區(qū)內(nèi)。
如上所述,包30的第一部分可包含指示包30的開始的起始位字段46。包30的下一部分可包含事務(wù)類型字段32,事務(wù)類型字段32可包含0到31的值。事務(wù)類型字段32的值可用于索引指示數(shù)據(jù)有效負(fù)載的大小及ECC的大小(按位計)的表。在某些實施例中,接收器可出于相同目的使用簡單邏輯函數(shù)。雖然未立即知道所有接收到的位是無錯誤的,但是接收器可初步假設(shè)其將使用事務(wù)類型字段32中指定的事務(wù)類型。接收器可接著在管線階段中校驗ECC以確定接收到的包是否是無錯誤的。在一個實施例中,為了校驗ECC,事務(wù)類型字段32的事務(wù)類型及有效負(fù)載字段34的有效負(fù)載可在ECC塊中被檢驗,使得傳入ECC位被提供到所有ECC塊。在一個實施例中,ECC塊可使用例如采用漢明距離算法的可擴展錯誤控制代碼算法校驗ECC。舉例來說,ECC塊可采用具有6的漢明距離(HD6)的錯誤控制代碼算法。因而,ECC塊可提供59位的錯誤涵蓋率(5b TransactionType、41b數(shù)據(jù)有效負(fù)載、13b ECC)。即,ECC塊可提供59個已知正確位。有關(guān)可擴展錯誤控制算法及使用漢明距離的算法的額外細(xì)節(jié)將在下文更詳細(xì)描述。
在接收器驗證包是無錯誤后,接收器可接著確定地知道事務(wù)類型值是正確的,且因此接收器可具有接收到的包的適當(dāng)幀化。59個已知正確位可接著被轉(zhuǎn)發(fā)到下一管線階段用于進(jìn)一步包處理(即,確定所作出的精確請求且處理所述請求)。在確定59位第一包是正確后,及在轉(zhuǎn)發(fā)59位第一包用于進(jìn)一步處理后,接收器可接著使160位寬FIFO的其余101個位桶形移位以對準(zhǔn)到位0,且重復(fù)上述過程。
在一些情況中,接收器可能具有太少可用于解析的數(shù)據(jù)(即,從事務(wù)類型字段32到有效負(fù)載字段34及ECC字段36的所有事物應(yīng)可用)。在此,接收器可繼續(xù)提取信息直到其都可用。雖然大包可能超過單個160位區(qū)段,但是由于接收器從事務(wù)類型知道ECC在何處起始及結(jié)束,所以接收器可將ECC位轉(zhuǎn)發(fā)到合適的ECC邏輯塊。此外,由于事務(wù)類型是在包的標(biāo)頭處,所以接收器容易地知道對其進(jìn)行查找。此外,接收器可確定有效負(fù)載字段34包含事務(wù)類型字段32與ECC字段36之間的所有事物。在識別有效負(fù)載字段34時,接收器可將數(shù)據(jù)有效負(fù)載發(fā)送到合適的ECC邏輯塊。在某些實施例中,取代物理MOVE,ECC邏輯可取決于物理布局優(yōu)化使用而就地實施于暫時存儲數(shù)據(jù)的寄存器位處。
上文描述的技術(shù)的優(yōu)點包含支持錯誤消息的快速產(chǎn)生。因而,如果ECC檢測到錯誤,那么邏輯信號被傳遞到外出隊列管理器,且錯誤消息被公式化且在合適的通道上傳輸。
記住上述內(nèi)容,圖11說明可由根據(jù)上述分道包封方案接收包的接收組件(例如,主機SoC 12)采用的方法100的流程圖。雖然方法100的以下描述被描述為由主機SoC 12執(zhí)行,但是應(yīng)注意,方法100可由任何適當(dāng)接收組件執(zhí)行,所述接收組件接收已根據(jù)本文中描述的實施例予以分道包封的包。
現(xiàn)參考圖11,在框102處,主機SoC 12可經(jīng)由總線62、通道16或類似物接收位流。如圖10中描繪,主機SoC 12可基于在總線62上可用的位分道的數(shù)目一次接收若干位。
在接收到位流時,在框104處,主機SoC 12可識別新包的起始位。因而,主機SoC12可監(jiān)測位流,直到其接收到1。舉例來說,在位時間0處,主機SoC 12可檢測起始位且開始解析第一包92。
在框106處,主機SoC 12可基于起始位后的五個位確定第一包92的事務(wù)類型。如上文論述,主機SoC 12可使用查找表或咨詢存儲于本地存儲組件中的密匙以基于在事務(wù)類型字段32中接收的二進(jìn)制值確定與第一包92相關(guān)聯(lián)的事務(wù)類型。
在確定相應(yīng)包的對應(yīng)事務(wù)類型后,在框108處,主機SoC 12可識別相應(yīng)包的有效負(fù)載字段34及ECC字段36。即,相應(yīng)包的事務(wù)類型可向主機SoC 12指示有效負(fù)載字段34及ECC字段36中預(yù)期的位數(shù)目。因而,主機SoC 12可將事務(wù)類型字段32后的第一數(shù)目個位指定為有效負(fù)載字段34,且將有效負(fù)載字段34后的第二數(shù)目個位指定為ECC字段36。
在接收包的ECC字段36后,主機SoC 12可在框110處基于ECC字段36中提供的數(shù)據(jù)驗證接收到的包是否無錯誤。即,主機SoC 12可使用ECC字段36中提供的數(shù)據(jù)以校驗在事務(wù)類型字段32中提供的數(shù)據(jù)及在有效負(fù)載字段34中提供的數(shù)據(jù)的準(zhǔn)確性。
在框112處,主機SoC 12可確定相應(yīng)包是否是無錯誤。如果主機SoC 12驗證相應(yīng)包是無錯誤,那么主機SoC 12返回到框102且繼續(xù)接收位流。然而,如果主機SoC 12確定相應(yīng)包并非無錯誤,那么主機SoC 12可繼續(xù)進(jìn)行到框114,且將NOT_ACKNOWLEDGE包發(fā)送回到傳輸相應(yīng)包的組件。如上文論述,NOT_ACKNOWLEDGE包可指示最新的已知良好的總線事務(wù)。因而,NOT_ACKNOWLEDGE包可指示最新成功接收到的包的事務(wù)類型及地址。由于傳輸組件知道每一包被傳輸?shù)捻樞颍詡鬏敯山又o接在在NOT_ACKNOWLEDGE包中涉及的包之后重新發(fā)送包。
為了保證傳輸器組件能夠在接收到NOT_ACKNOWLEDGE包時重新發(fā)送特定數(shù)目個包,在某些實施例中,傳輸組件無法將所發(fā)送包從其緩沖器忽略、刪除、擦除或?qū)懭?,直到在相?yīng)包已被傳遞后已過去特定時間量。換句話來說,在包已被傳輸后,傳輸組件(例如,存儲器SoC 22)可在其將被傳輸包從其緩沖器組件刪除前等待特定時間量。
傳輸組件在傳輸每一包之后、在將其從其緩沖器中刪除之前可等待的時間量可隨包的不同而變化。由于每一包可包含不同數(shù)目個位,所以傳輸包及作為響應(yīng)接收NOT_ACKNOWLEDGE包所涉及的時間量可針對每一包而不同。通常,傳輸組件可等待的時間量可取決于包跨越總線62傳輸?shù)淖顗那闆r滯后時間,接收組件檢測到包上的錯誤的最壞情況滯后時間及傳輸組件接收NOT_ACKNOWLEDGMENT包的最壞情況滯后時間。上述每一情況的最壞情況滯后時間可基于操作被執(zhí)行的預(yù)期時間及通過將預(yù)期時間的某一百分比添加到預(yù)期時間以在預(yù)期時間計算中提供錯誤裕度而確定。
確定上文描述的各種操作被執(zhí)行的預(yù)期時間所涉及的一些因素包含被傳輸包的大小、請求總線Q及響應(yīng)總線S上分道的數(shù)目、將跨越每一總線傳輸?shù)臄?shù)據(jù)的UI的時間量、在接收組件驗證接收到的包是無錯誤之前在接收組件中預(yù)期的管線延遲數(shù)目、傳輸組件中隊列的最大深度、有關(guān)用于發(fā)送緊急消息(例如,是被放置在隊列前方的緊急消息)的傳輸組件的政策的信息及類似物。應(yīng)注意,上文所列因素被提供作為實例,且不限制可用于確定各種操作被執(zhí)行的預(yù)期時間的因素的范圍。
數(shù)據(jù)重新排序操作
雖然事務(wù)窗可用于指示給定事務(wù)窗的順序,但是在一些實例中,根據(jù)相應(yīng)事務(wù)窗的順序執(zhí)行事務(wù)操作可能是非所要的。舉例來說,DRAM可能涉及刷新操作,其不可被其它DRAM操作延緩。另一實例可包含當(dāng)NAND存儲器可能置亂數(shù)據(jù)以準(zhǔn)備用于擦除操作。在此,如果事務(wù)操作正試圖存取相同范圍的地址,那么與被置亂的數(shù)據(jù)相關(guān)聯(lián)的地址范圍可能暫時不可用。因而,可擴展協(xié)議將操作重新排序而不管根據(jù)事務(wù)窗的指定順序可為有利的。
在常規(guī)系統(tǒng)中,使用各種技術(shù)來允許排序。例如,系統(tǒng)可用請求操作發(fā)送事務(wù)識別。響應(yīng)操作可接著包含相同的事務(wù)識別。事務(wù)識別可為8個位,其意味著用每個請求發(fā)送額外8個位,且再用每個響應(yīng)發(fā)送額外8個位。因而,有關(guān)請求總線Q及響應(yīng)總線S兩者上的額外開銷位與未用每個請求及響應(yīng)發(fā)送事務(wù)識別相比可能相對較大。
記住上述內(nèi)容,在某些實施例中,可擴展協(xié)議可保持根據(jù)事務(wù)窗指定的順序,直到確定在重新排序的情況下,可更有效地執(zhí)行事務(wù)操作為止。一旦可擴展協(xié)議(例如,接收組件)作出此確定,其即可發(fā)送重新排序消息,所述重新排序消息將新的相對順序賦予給特定事務(wù)區(qū)。所述事務(wù)區(qū)可包含被發(fā)送的所有事務(wù)操作的子集。在接收到重新排序消息時,傳輸組件可根據(jù)由重新排序消息提供的新相對順序?qū)κ聞?wù)操作重新排序。新相對順序可指示其中每一事務(wù)操作可相對于被執(zhí)行的其它事務(wù)操作執(zhí)行的順序。包含經(jīng)重新排序事務(wù)操作的相應(yīng)事務(wù)區(qū)可接著維持新順序直到被另外重新排序。
如上所述,接收組件可在期望背離自然響應(yīng)序列時發(fā)送數(shù)據(jù)重新排序消息。在一個實施例中,接收組件可基于事務(wù)類型字段32中指示的事務(wù)類型確定重新排序可能是優(yōu)選的。即,事務(wù)類型字段32可固有地指示重新排序是優(yōu)選的。伴隨事務(wù)類型字段32的可能是64位消息,其包含16x4位順序識別符。如果存在16個待決響應(yīng),那么這些標(biāo)識符可指示接下去的16個響應(yīng)的順序。
當(dāng)在正常流量下操作時,接收組件可按根據(jù)給定事務(wù)窗的命令的順序傳輸響應(yīng)。當(dāng)接收組件確定將接收到的請求重新排序可能是優(yōu)選時,接收組件可等待直到可能保持有序的所有響應(yīng)在發(fā)送重新排序消息前首先被發(fā)送。如果系統(tǒng)期望按0、1、2、3、4、5、6、7、8、9、10、11、12、13、14及15的序列的下一群組的響應(yīng),那么重新排序消息可改變那個序列內(nèi)的任何事項。舉例來說,1、2、3、4、5、6、7、0、8、9、10、11、12、13、14、及15的新順序可能是優(yōu)選的,使得每一值用相應(yīng)4位值表示。如果存在少于16個待決響應(yīng),那么不存在的未來響應(yīng)可按順序列出。即,再次參考上文實例,如果0到7是待決的,且響應(yīng)0優(yōu)選被延遲直到所有其它之后,那么位8到15的順序可在最后保持,只要0在所有其它之后被提供。
在一個實施例中,重新排序消息可在新排序是優(yōu)選的任何時間被發(fā)送。再次參考上文實例,如果響應(yīng)按1、2、3、4、5、6、7及0的順序被發(fā)送,且接著確定其余項目無法按預(yù)期順序發(fā)送,那么可發(fā)送新的重新排序消息。在此,緊跟的下一響應(yīng)將是響應(yīng)0,非響應(yīng)8,這是因為順序計數(shù)器在重新排序消息被發(fā)送的任何時間被復(fù)位為零。因而,在發(fā)送新的重新排序消息時,0到15的新相對順序可根據(jù)最有利的排序確定。在無任何重新排序消息的情況下,所有數(shù)據(jù)可為每個窗接收的請求的“自然”順序。在任何情況中,通過在未定期傳輸請求識別或響應(yīng)識別的情況下在系統(tǒng)中支持?jǐn)?shù)據(jù)重新排序,可擴展協(xié)議可節(jié)省另外在常規(guī)協(xié)議中使用的大量額外開銷。
記住上述內(nèi)容,圖12說明可由接收組件(例如,主機SoC 12)用于與包希望被傳輸組件(例如,存儲器SoC 22)傳輸?shù)脑柬樞蛳啾容^,將待傳輸?shù)浇邮战M件的包重新排序的方法120的流程圖。方法120的下列描述將參考圖13的圖式140論述。圖式140被提供來幫助說明在方法120的各種階段發(fā)生的操作。出于論述的目的,方法120的以下描述將被描述為由主機SoC 12執(zhí)行,但應(yīng)理解,任何適當(dāng)接收組件可執(zhí)行本文中描述的操作。
首先參考圖12,在框122處,主機SoC 12可接收來自傳輸組件(例如,存儲器SoC22)的若干包。接收到的包可大體上包含被請求由主機SoC 12按優(yōu)選順序執(zhí)行的操作。傳輸組件(例如,存儲器SoC 22)可按特定順序發(fā)送對應(yīng)于數(shù)據(jù)操作的包,其可反映操作的優(yōu)選順序。圖13的圖式140說明由主機SoC 12按行142接收的包的實例原始順序。如圖13中所展示,由傳輸組件傳輸?shù)氖畟€包可初始被編號為1到10。
在框124處,主機SoC 12可確定接收到的包中所指示的操作是否應(yīng)按不同順序執(zhí)行。即,舉例來說,如果主機SoC 12出于一些原因而無法執(zhí)行特定操作(例如,被請求存儲器地址忙、不可用等等),那么主機SoC 12可代替地在執(zhí)行前一個請求操作之前執(zhí)行后一操作。如果主機SoC 12確定操作不應(yīng)按不同順序執(zhí)行,那么主機SoC 12可進(jìn)行到框126,且按優(yōu)選順序執(zhí)行接收到的包的操作(例如,如由傳輸組件傳輸)。
如果主機SoC 12確定操作不應(yīng)按優(yōu)選順序執(zhí)行,那么在框128處,主機SoC 12可確定新順序來執(zhí)行所請求操作。為了按不同順序執(zhí)行操作,主機SoC 12可識別對應(yīng)于無法按所請求順序執(zhí)行的操作的特定包。主機SoC 12可接著確定任何隨后操作是否取決于所識別操作的結(jié)果。即,主機SoC 12可確定在稍后時間執(zhí)行所識別操作是否可能導(dǎo)致將執(zhí)行的任何其余操作中的錯誤。在某些實施例中,主機SoC 12可評估每一包的事務(wù)窗以確定操作是否可被重新排序。例如,如果具有事務(wù)窗的順序是如下:Win2、Win2、Win2、Win3、Win3、Win2及Win3,那么主機SoC 12可延遲第三Win2請求以執(zhí)行第一Win3請求,這是因為其涉及不同事務(wù)窗,且因此可能在不同存儲器類型上操作。使用每一包的事務(wù)窗,主機SoC 12可接著確定新順序來執(zhí)行所請求操作。
在確定新順序以執(zhí)行操作后,在框130處,主機SoC 12可將在緊接著與所識別操作對應(yīng)的包之前的包后接收到的若干包重新命名。在一個實施例中,主機SoC 12可根據(jù)其在隊列中的當(dāng)前位置將包重新命名。例如,再次參考圖13,如果主機SoC 12將原始包5識別為含有應(yīng)在稍后時間執(zhí)行的操作的包,那么主機SoC 12可根據(jù)其在隊列中的當(dāng)前位置將包4之后的包重新命名。因而,包5到10可被重新命名為包0到5,如圖式140的行144中所說明。以此方式,其余包可根據(jù)其在隊列中的相對位置重新命名。
在將其余包重新命名后,在框132處,主機SoC 12可產(chǎn)生重新排序消息,所述重新排序消息可指示其中其余包將由主機SoC 12尋址或根據(jù)將由主機SoC 12執(zhí)行的對應(yīng)操作的順序?qū)ぶ返男马樞?。重新排序消息可基于在?28處確定的新順序及根據(jù)如在框130中提供的經(jīng)重新命名包確定。例如,再次參考圖13中的實例,如果主機SoC 12確定原始第5個包操作應(yīng)在原始第7個包操作后執(zhí)行,那么重新排序消息可被呈現(xiàn)為1、2、3、0、4、5,如行146中所展示。行146根據(jù)經(jīng)重新命名包指示新操作順序。為說明目的,行148指示重新排序消息指定其余包操作將根據(jù)其原始包編號的順序。
在框134處,主機SoC 12可將重新排序消息傳輸?shù)絺鬏斀M件。因而,傳輸組件可使用重新排序消息來調(diào)整從主機SoC 12傳輸?shù)捻憫?yīng)包與相應(yīng)請求包相關(guān)聯(lián)的順序。即,傳輸組件可根據(jù)重新排序消息中所指示的經(jīng)重新命名相對順序關(guān)聯(lián)在重新排序消息之后接收到的每一響應(yīng)包。
通過將對應(yīng)于最后實施操作的包之后的包重新命名,主機SoC 12可將參考順序提供到傳輸組件,所述順序是相對于將由傳輸組件接收的其余響應(yīng)包而言。因而,由于主機SoC 12及傳輸組件可能知道包已被發(fā)送的順序,所以根據(jù)其相對順序重新命名的包使主機SoC 12能關(guān)聯(lián)響應(yīng)包,而無需用每一包發(fā)送包識別號,借此提供更具有位效率的通信方案。
在存在多個請求及響應(yīng)總線的情況中,可擴展協(xié)議可確定事務(wù)操作被執(zhí)行的順序,如下。如果存在與4個相應(yīng)響應(yīng)總線相關(guān)聯(lián)的4個請求總線,那么相關(guān)聯(lián)的一對請求及響應(yīng)總線可由可擴展協(xié)議命名為通道。因而,在一個實施例中,事務(wù)操作可被定義為“channel.window.address”。在此,排序可接著被定義為“channel.window.dataSequenceNumber”。通常,僅一個數(shù)據(jù)可為事務(wù)操作的部分,使得對于比最大所支持包大小大的事務(wù)請求,保存數(shù)據(jù)序列號通常是不重要的。否則,可擴展協(xié)議可遵循channel.window內(nèi)的排序。即使當(dāng)兩個通道使用相同窗時,可擴展協(xié)議可能仍無法在它們之間并入任何排序。而是,可擴展協(xié)議可提供每一channel.window組合內(nèi)的順序。因此,可擴展協(xié)議可極大簡化系統(tǒng)的操作,這是因為通道具有異步定時相互關(guān)系的可能性。通過根據(jù)channel.window將事務(wù)操作排序,可擴展協(xié)議使排序保持簡單,且也減小可執(zhí)行的仲裁的次數(shù)。此外,此排序技術(shù)也可減小已被另外發(fā)送的重新排序消息的數(shù)目。
數(shù)據(jù)重新排序操作-高頻率
雖然可擴展協(xié)議已被描述為能夠提供事務(wù)操作被發(fā)送的新相對順序,但是可能難以將此類型的重新排序方案并入可具有高頻率的重新排序請求的大型系統(tǒng)中。即,如果按某一高頻率(即,高于某一閾值)發(fā)送重新排序消息,那么可能不再有效地使用時間及資源來發(fā)送重新排序消息及將事務(wù)操作重新排序。換句話來說,對于一些類型的系統(tǒng),數(shù)據(jù)重新排序的頻率可能變得太高使得傳輸組件與接收組件之間的通信量可能變得低效。對于此類系統(tǒng),即使當(dāng)大量重新排序事件是優(yōu)選的時,可擴展協(xié)議仍可減小事務(wù)識別的位業(yè)務(wù)。
在一個實施例中,接收組件可確定當(dāng)前重新排序技術(shù)是否在低效地操作。例如,傳輸組件可確定從接收組件接收重新排序消息的頻率。如果頻率高于某一閾值,那么傳輸組件可確定當(dāng)前重新排序方案在低效地操作。此時,傳輸組件可附加每一事務(wù)操作的每一事務(wù)識別(ID)以包含新的字段:請求總線Q序列號。由于接收組件可能知道請求被接收的順序,那么接收組件可指派循環(huán)序列號到每一接收到的請求(即,請求總線Q序列號Qsequence或Qseq)。請求總線Q序列號可應(yīng)用于每一請求的相應(yīng)通道及相應(yīng)窗的組合。因而,請求總線Q序列號可被標(biāo)注為“channel.window.Qseq”,使得Qseq可針對每一相應(yīng)通道及相應(yīng)窗按循環(huán)順序指派,由此通過不傳輸已知數(shù)據(jù)而保留帶寬。例如,如果請求順序(都在通道0上)是如下:Win2、Win2、Win2、Win3、Win3、Win2及Win3,且這些是第一事務(wù),那么由接收器附加的所指派Qseq號碼將分別是:0、1、2、0、1、3及2。即,每一窗可基于每一類型(即,通道/窗)的請求的接收而與循環(huán)Qseq序列相關(guān)聯(lián)。
在接收請求后及當(dāng)計劃在響應(yīng)總線S上發(fā)送響應(yīng)時,接收組件可用其對應(yīng)Qseq值標(biāo)記每一相應(yīng)響應(yīng)。因而,傳輸組件可將每一接收到的響應(yīng)與其相應(yīng)請求相關(guān)聯(lián)。如上所展示,上文描述的技術(shù)避免在請求總線Q上傳輸Qseq值。通過不在Q總線上發(fā)送Qseq值,可擴展協(xié)議提供提供位有效傳送的額外方式。
記住這點,圖14說明用于將由接收組件執(zhí)行的操作重新排序的方法160。此外,如上文關(guān)于方法120所述,下列方法160將被描述為由主機SoC 12執(zhí)行。然而,應(yīng)理解,以下方法160可由任何適當(dāng)接收組件執(zhí)行。
現(xiàn)在參考圖14,在框162處,主機SoC 12可確定在某一時間周期內(nèi)傳輸?shù)絺鬏斀M件的重新排序消息的數(shù)目是否超過某一閾值。閾值可與存儲器裝置14的下降性能、在執(zhí)行操作時涉及的平均循環(huán)數(shù)目、針對每一所請求操作的平均隊列深度或類似物相關(guān)。
如果重新排序請求的數(shù)目不大于閾值,那么主機SoC 12可繼續(xù)根據(jù)上文描述的方法120發(fā)送重新排序消息。但是,如果主機SoC 12確定重新排序請求的數(shù)目大于閾值,那么主機SoC 12繼續(xù)進(jìn)行到框164。在框164處,主機SoC 12可根據(jù)每一包的事務(wù)窗以循環(huán)方式添加序列值到每一接收到的包。傳輸組件可存儲其中每一包已被傳輸?shù)捻樞?,使得傳輸?shù)捻樞蚩蓪?yīng)于其中每一包被接收的順序。
在框166處,主機SoC 12可按其相應(yīng)操作已被執(zhí)行的順序發(fā)送響應(yīng)包。響應(yīng)包可包含在框164處添加到接收到的包的序列值。由于傳輸組件知道每一包已被發(fā)送的順序,所以其可使用添加的序列值來將響應(yīng)包施加于合適的請求包。與將序列號保持于兩個傳輸上相比,在使用方法160來傳輸響應(yīng)包的情況下,主機SoC 12及傳輸組件可添加序列號到跨越總線62傳輸一次的包。以此方式,可擴展協(xié)議可通過利用傳輸組件所知道的信息(例如包被傳輸?shù)捻樞?而提供位高效數(shù)據(jù)傳輸。
在某些實施例中,在例如要求多個包的長事務(wù)的事件中,當(dāng)所發(fā)生錯誤與管線可能被清空及管線內(nèi)的對應(yīng)包可能被重新發(fā)送時,接收組件可使用請求總線Q序列號(Qseq)及數(shù)據(jù)序列號(DataSequence)來識別每一包。例如,如果在響應(yīng)總線S上的包中發(fā)生錯誤,那么由傳輸組件接收的最新已知良好的包可在其中包含Qseq號碼以用作參考。作為采用此技術(shù)的結(jié)果,一些消息現(xiàn)在實際上較短,這是因為未參考事務(wù)類型來指示事務(wù)。即,為了另外指示事務(wù)類型,包內(nèi)的事務(wù)類型、窗及地址(高達(dá)52個位)可用于包含此信息。相比之下,發(fā)送Qseq值及DataSequence值可能涉及23個位(例如,16+7=23位),由此進(jìn)一步改進(jìn)傳送中的位效率。
與先前描述的重新排序消息技術(shù)相比,當(dāng)重新排序被執(zhí)行的次數(shù)高于某一頻率閾值時,為包附加Qseq值可導(dǎo)致所傳輸?shù)奈豢倲?shù)較低。雖然提供Qseq值的選項已被描述為被動態(tài)并入可擴展協(xié)議內(nèi),但在某些實施例中,可擴展協(xié)議提供Qseq值的能力可為在實施可擴展協(xié)議的SoC被設(shè)計時內(nèi)建到可擴展協(xié)議中的靜態(tài)選擇。使用可擴展協(xié)議的系統(tǒng)的類型可提供信息來指示哪個排序方法可提供更高效位傳輸。
記住上述內(nèi)容,在一個實施例中,請求總線Q序列號字段可為18位字段,其可用于識別4千字節(jié)事務(wù)的每一事務(wù)操作。雖然請求總線Q序列號字段已被描述為18位字段,但是請求總線Q序列號字段的大小可為任何適當(dāng)值。通常,請求總線Q序列號字段的大小可大到足以識別特定事務(wù)的每一事務(wù)操作,且可用于指示請求或響應(yīng)可被執(zhí)行的順序。雖然添加請求總線Q序列號字段到相應(yīng)包可增大相應(yīng)包的相應(yīng)大小,但是包大小的增大仍比如在常規(guī)協(xié)議中執(zhí)行用每個請求及響應(yīng)操作發(fā)送事務(wù)識別更高效。此外,由于請求總線Q序列號字段的添加可在確定發(fā)送重新排序消息低效后完成,所以與如在常規(guī)協(xié)議中用于每個事務(wù)操作相比,本技術(shù)限于在特定實例中使用。
在一些實施例中,當(dāng)請求已暗示序列號(例如,針對給定channel.window,第一請求是0,下一個是1,下一個是2等等)時,可擴展協(xié)議可不添加請求總線Q序列號字段到事務(wù)操作。即,由于事務(wù)操作按自然暗示順序,所以可擴展協(xié)議可通過不傳輸序列號而保存位使其不被發(fā)送。
然而,如上所述,當(dāng)響應(yīng)優(yōu)選按除自然暗示順序以外的不同順序流動時,可擴展協(xié)議可為每一接收到的事務(wù)操作附加請求總線Q序列號字段中的相應(yīng)序列號。在一些情況中,序列號可潛在地使用大位字段。舉例來說,在支持NAND的窗中,響應(yīng)可能需要0.01秒。在此,如果包速率是5x10-9,那么可能存在飛行狀態(tài)中的5x107個響應(yīng),其可使用26個位來識別響應(yīng)中的每一者。更實用案例預(yù)期大約4千字節(jié)的較大事務(wù),其中可能存在大約100,000個未處理事務(wù)。在此,每一事務(wù)可僅在低于17位內(nèi)識別。為了允許用小事務(wù)實現(xiàn)更好性能,且也保證無識別混疊,位計數(shù)可被向上舍入為18個位。即,數(shù)目可模數(shù)截斷為零,且因此在序列中存在在任何時間“活躍”的明顯間隙以避免混淆。
在任何情況中,當(dāng)提供重新排序序列時,可擴展協(xié)議可添加請求總線Q序列號字段到對應(yīng)包。因而,上文描述的字段中的一些可改變。舉例來說,在請求總線Q上,不應(yīng)答命令可改變,使得其具有相同事務(wù)類型及相同事務(wù)窗。先前,不應(yīng)答命令可能已包含地址、數(shù)據(jù)序列號及原始事務(wù)類型。在一個實施例中,不應(yīng)答命令現(xiàn)可具有請求總線Q序列號及數(shù)據(jù)序列號。因此,不應(yīng)答命令可為比先前描述小的包。
在響應(yīng)總線S上,一般消息事務(wù)類型可能未改變。然而,包的其余項目可改變?nèi)缦拢?/p>
●“完整”消息可具有事務(wù)類型、窗、請求序列號及ECC。
●“不應(yīng)答”(NACK)消息可具有事務(wù)類型、窗、請求序列號、數(shù)據(jù)序列號及ECC。
●“消息”可能未改變,且因此可包含事務(wù)類型、窗、8B數(shù)據(jù)及ECC。
●8uData可包含事務(wù)類型、窗、請求序列號及8B數(shù)據(jù)及ECC。
●16uData可包含事務(wù)類型、窗、請求序列號及16B數(shù)據(jù)及ECC。
●32uData可包含事務(wù)類型、窗、請求序列號及32B數(shù)據(jù)及ECC。
●48uData可包含事務(wù)類型、窗、請求序列號及48B數(shù)據(jù)及ECC。
●64uData可包含事務(wù)類型、窗、請求序列號及64B數(shù)據(jù)及ECC。
●80uData可包含事務(wù)類型、窗、請求序列號及80B數(shù)據(jù)及ECC。
●96uData可包含事務(wù)類型、窗、請求序列號及96B數(shù)據(jù)及ECC。
●112uData可包含事務(wù)類型、窗、請求序列號及112B數(shù)據(jù)及ECC。
●128uData包含事務(wù)類型、窗、請求序列號及128B數(shù)據(jù)及ECC。
●256uData可包含事務(wù)類型、窗、請求序列號及256B數(shù)據(jù)及ECC。
如上所述,雖然數(shù)據(jù)事務(wù)類型的包大小可能已增大了請求序列號的量,但是甚至在具有高性能NAND的系統(tǒng)中,所產(chǎn)生的序列號可僅為16b。因而,與可添加16位到每個響應(yīng)的常規(guī)協(xié)議相比,針對按高頻率重新排序或如此設(shè)計的事務(wù)操作將事務(wù)操作重新排序的當(dāng)前揭示技術(shù)仍可能是經(jīng)濟的。此外,由于當(dāng)前揭示技術(shù)包含針對每一響應(yīng)的序列號,所以可擴展協(xié)議可能不發(fā)布重新排序消息或包。此外,由于每一事務(wù)操作與特定序列號相關(guān)聯(lián),所以事務(wù)操作可按循環(huán)順序傳輸以保證已知數(shù)據(jù)不被傳輸。
排序工作字段
如上文論述,當(dāng)一個事務(wù)窗中的事務(wù)操作優(yōu)選按順序時,情況出現(xiàn),但偏離那個順序可能是有利的。記住這點,除用于將上文描述的事務(wù)操作重新排序的兩種技術(shù)外,在一個實施例中,可擴展協(xié)議可提供靈活編程選項用于在系統(tǒng)中排序事務(wù)操作或包。靈活編程選項(例如,排序工作字段)可設(shè)置可擴展協(xié)議應(yīng)用于維持事務(wù)的原始順序的一定程度的工作。即,靈活的排序工作字段可向可擴展協(xié)議指示工作應(yīng)多努力來保證包按順序傳輸。因而,靈活排序工作字段可與對應(yīng)于按順序保持每個包的第一值與對應(yīng)于允許任何事項被重新排序的第二值之間的值范圍相關(guān)聯(lián)。
記住這點,事務(wù)窗0可被用作存儲器SoC 22的通用控制區(qū)域。因而,事務(wù)窗0可駐留于寄存器、SRAM緩沖器、高速緩存SRAM及其它可尋址控制特征中。對于每一事務(wù)窗,可擴展協(xié)議可實現(xiàn)可由用戶編程的可配置信息。如上所述,一種類型的可配置信息(例如,排序工作字段)可包含維持原始順序的一定程度的工作(即,排序工作)。排序工作字段可具有實施方案的大變化。例如,在2位字段中,排序工作可被特性化如下:
00-允許每次機會的重新排序
01-允許大量重新排序
10-允許一些重新排序
11-不允許重新排序,等待直到資源可用為止
在某些實施例中,可擴展協(xié)議可將某些包與特定排序區(qū)關(guān)聯(lián)。排序區(qū)可指示對應(yīng)包將被類似地處理。舉例來說,相同排序區(qū)中的請求可被預(yù)期為按順序,且如果不可能按順序,那么傳輸組件(例如,存儲器SoC 22)可應(yīng)用排序工作(如由排序工作字段指定)以確定請求可被亂序傳輸?shù)某潭取?/p>
排序區(qū)可與通道、系統(tǒng)窗及事務(wù)窗的組合(例如,channel.syswin.window)相關(guān)。通道可為從其接收請求的通道號。系統(tǒng)窗可為一對任選字段,其例如指定系統(tǒng)中的哪個SoC發(fā)起請求。
記住上述內(nèi)容,假設(shè)對于排序區(qū)來說隊列深度是16,在2位字段中指定排序工作的合理實施方案可如下:
00-允許每次機會的重新排序:允許結(jié)果槽在16的隊列深度中的任何位置處互換
01-允許大量重新排序:允許結(jié)果槽在11的隊列深度中的任何位置處互換
10-允許一些重新排序:允許結(jié)果槽在6的隊列深度中的任何位置處互換
11-無重新排序:不允許互換,允許資源閑置
在某些實施例中,定義排序工作的排序工作函數(shù)可包含額外變量,例如請求的使用期限。舉例來說:
00-允許每次機會的重新排序,允許結(jié)果槽在16的隊列深度中的任何位置處互換
01-允許大量重新排序:如果請求是舊的,那么允許結(jié)果槽在8的隊列深度中的任何位置處互換,如果請求是新的,那么允許結(jié)果槽在14的隊列深度中的任何位置處互換
10-允許一些重新排序:如果請求是舊的,那么允許結(jié)果槽在4的隊列深度中的任何位置處互換,如果請求是新的,那么允許結(jié)果槽在8的隊列深度中的任何位置處互換
11-無重新排序:不允許互換,允許資源閑置
在此,可擴展協(xié)議可使請求能被指定為舊或新。例如,如果請求已存在達(dá)7個或更多個請求槽,那么請求可被視為舊的,而如果請求已存在達(dá)6個或更少請求槽,那么請求可被視為新的。
上文列出的實例說明排序工作可在2位字段中量化的可能方式的小子集??墒褂幂^大大小的排序工作字段指定額外程度的排序工作。在任何情況中,排序工作字段可提供簡單可編程的能力,所述能力使排序工作成為可利于調(diào)諧總系統(tǒng)性能的函數(shù)。在某些實施例中,由主機SoC 12采用的排序工作可在主機SoC 12通電時予以確定或指定。即,主機SoC 12可確定其所連接的裝置的類型,或其被設(shè)計使用的行業(yè)的類型及相應(yīng)地確定排序工作。
總線業(yè)務(wù)調(diào)節(jié)的背壓函數(shù)
背壓可指相應(yīng)總線上有關(guān)接收總線業(yè)務(wù)的緩沖器23(例如,先進(jìn)先出(FIFO)緩沖器)的可用容量的總線業(yè)務(wù)量。因而,當(dāng)接收總線業(yè)務(wù)的緩沖器23接近其深度限值時,相應(yīng)總線的背壓可被視為高。一旦緩沖器23變滿,常規(guī)系統(tǒng)中的接收組件即可忽略未來傳入包或接受傳入包且刪除目前在緩沖器23中的包。在這些情況的任一者中,包可能不被處理,且因此通信鏈路的完整性可能受損。
記住這點,圖15說明用于調(diào)低從傳輸器傳輸?shù)恼埱蟮膫鬏斔俾实姆椒?80的流程圖。此外,為說明目的,下列方法180被描述為由主機SoC 12執(zhí)行,但可由任何適當(dāng)接收組件執(zhí)行。
在框182處,主機SoC 12(例如,接收組件)可監(jiān)測緩沖器23的容量,且確定接收器的緩沖器23的容量小于或等于某一閾值。如果緩沖器23的容量高于閾值,那么主機SoC 12可繼續(xù)進(jìn)行到框184,且按當(dāng)前傳輸速率繼續(xù)從傳輸組件接收包。
但是,如果緩沖器23的容量小于或等于閾值,那么主機SoC 12可接著繼續(xù)進(jìn)行到框186。在框186處,主機SoC 12可發(fā)送消息到傳輸組件以減小其發(fā)送包的速率。此時,主機SoC 12及傳輸組件兩者可使用相同背壓函數(shù)來根據(jù)相同的已知數(shù)學(xué)函數(shù)調(diào)節(jié)包的傳輸及接收。因此,總線業(yè)務(wù)的背壓可被減小以適應(yīng)當(dāng)前在緩沖器23中的數(shù)據(jù)包的處理,同時減小丟失包的可能性。
在一個實施例中,當(dāng)未處理事務(wù)計數(shù)接近最大窗值(windowMax)及最大通道值(channelMax)時,總線業(yè)務(wù)可被調(diào)低。channelMax及windowMax字段可由用戶或可擴展協(xié)議獨立地設(shè)置。channelMax字段可對應(yīng)于所定義最大傳輸速率。例如,channelMax可被設(shè)置為每秒1x109個請求。windowMax字段可對應(yīng)于未處理事務(wù)操作的數(shù)目。實例背壓函數(shù)可包含在windowMax或channelMax處于90%容量后線性減小請求速率。此時,傳輸速率可為0.900*Max處的100%,且線性變化到0.995*Max處的0%。圖16用圖形說明可如何根據(jù)上文描述的線性函數(shù)調(diào)低傳輸速率。
除線性調(diào)低傳輸速率外,傳輸組件也可根據(jù)非線性函數(shù)調(diào)低其傳輸。舉例來說,圖17說明一個可能的非線性曲線,其可由傳輸組件在調(diào)低其傳輸速率時采用。應(yīng)理解,傳輸組件不限于根據(jù)圖17中描繪的曲線采用非線性傳輸速率。在另一實例中,非線性曲線可包含步降曲線,其由有限步驟按比例縮減傳輸速率。
在通道上僅存在一個事務(wù)窗的情況中,windowMax字段可能不與channelMax字段相關(guān)或可被視為等于channelMax字段。在存在多個事務(wù)窗的情況中,可針對每一相應(yīng)事務(wù)窗界定不同的背壓函數(shù)。例如,考慮事務(wù)窗的以下四個實例,其使用如下文描述的各種不同存儲器類型。
窗0-控制及注冊
窗1-最低延時DRAM
窗2-通常DRAM
窗3-NAND
記住這點,可如何基于通道的業(yè)務(wù)調(diào)節(jié)背壓函數(shù)的實例可包含定義通道最大值(例如,每秒1x109個請求)、定義背壓函數(shù)何時可開始(例如,RollbackStart 0.9p.u.)及定義背壓函數(shù)何時可結(jié)束(例如,RollbackEnd 1p.u.)。在此實例中,Rollback函數(shù)可應(yīng)用于被稱作Max的變量,Max可對應(yīng)于通道m(xù)ax。通常,通道m(xù)ax對應(yīng)于當(dāng)通道請求速率小于或等于0.9*通道m(xù)ax(例如,高達(dá)RollbackStart)時,請求(或事務(wù)命令)被發(fā)送的速率。
以相同方式,每一相應(yīng)事務(wù)窗可采用相應(yīng)背壓函數(shù)。例如,上文定義的四個實例事務(wù)窗的背壓函數(shù)可實施如下:
window0
max的window0max 0.05p.u.
max的window0RollbackStart 0.045p.u.
max的window0RollbackEnd 0.05p.u.
window1
max的window1max 0.9p.u.
max的window1RollbackStart 0.81p.u.
max的window1RollbackEnd 0.9p.u.
window2
max的window2max 0.3p.u.
max的window2RollbackStart 0.27p.u.
max的window2RollbackEnd 0.3p.u.
window3
max的window3max 0.1p.u.
max的window3RollbackStart 0.09p.u.
max的window3RollbackEnd 0.1p.u.
如上所展示,背壓函數(shù)可在存在許多相互作用的事務(wù)窗(即,許多同時過程)時,逐漸回降請求速率。在任何情況中,通過與使用所傳輸信號相比,根據(jù)函數(shù)執(zhí)行調(diào)節(jié)操作,可擴展協(xié)議可能與所傳輸信號是頻帶內(nèi)還是頻帶外無關(guān)。此外,由于接收組件及傳輸組件可實施相同數(shù)學(xué)函數(shù)而無需傳達(dá)何時實施函數(shù),所以可擴展協(xié)議可進(jìn)一步減小跨越每一相應(yīng)總線傳輸?shù)奈涣俊?/p>
在某些實施例中,背壓函數(shù)也可考慮每一請求的使用期限。例如,如果較舊請求積存于事務(wù)窗中,那么接收組件可針對那個特定事務(wù)窗調(diào)整windowMax的值或修改Rollback限值。
在又一實施例中,背壓函數(shù)也可考慮隊列深度。即,在通電時,存儲器SoC 22可具有基于事務(wù)窗或類似物中提供的信息發(fā)現(xiàn)連接倒存儲器SoC 22的模塊的能力的能力。能力的部分可包含觀測連接到存儲器SoC 22的接收器的隊列深度且可能也可發(fā)現(xiàn)所連接通道的標(biāo)稱包處理速率。雖然存儲器SoC 23可能無法追蹤接收器的隊列,但存儲器SoC 22可作出有關(guān)接收器的隊列的狀態(tài)的一些確定。舉例來說,如果存儲器SoC 22在超過接收組件的包處理速率的情況下快速連續(xù)發(fā)送許多包,那么存儲器SoC 22可預(yù)測接收組件中的隊列將增長。因而,如果存儲器SoC 22確定包比接收器的包處理速率更快地被發(fā)送,那么存儲器SoC 22可開始應(yīng)用上文描述的背壓函數(shù),而不接收來自接收器的顯式反饋。換句話來說,如果包傳輸速率超過包間處理速率,那么存儲器SoC 22可開始減小包傳輸速率。以此方式,傳輸速率可被減小而不添加消息到通道。在一些實施例中,當(dāng)接收組件未按其預(yù)期速率處理包時,接收組件可發(fā)送消息到存儲器SoC 22作為故障保護(hù)。
在另一實施例中,接收組件可包含系統(tǒng)故障安全機構(gòu)以向傳輸組件指示緩沖器23即將超出其容量限度或超過其容量。在此,接收組件可發(fā)送類似于上文描述的不應(yīng)答消息的消息。此消息可具有與不應(yīng)答消息相同的效應(yīng),除其可在傳輸組件的數(shù)據(jù)日志中形成輸入項以注明消息歸因于緩沖器23無法接受包而被拒絕。因而,傳輸組件可確定總線業(yè)務(wù)延遲的原因。
雖然本文中描述的實施例可具有各種修改及替代形式,但是特定實施例已在圖式中通過實例展示且已在本文中予以詳細(xì)描述。然而,應(yīng)理解,本發(fā)明并不希望限于所揭示的特定形式。而是,本發(fā)明涵蓋落于如由以下所附權(quán)利要求書定義的本發(fā)明中描述的技術(shù)及系統(tǒng)的精神及范圍內(nèi)的所有修改、等效物及替代。