相關(guān)申請的交叉引用
該申請要求2014年11月25日提交的題為“headerparityerrorhandling(首標(biāo)奇偶錯誤處理)”的美國專利申請?zhí)?4/553,692的權(quán)益和優(yōu)先權(quán),其通過引用全部合并于此。
該公開關(guān)于計算系統(tǒng),并且特別(但并不是排他性地)關(guān)于錯誤處理。
背景技術(shù):
半導(dǎo)體處理和邏輯設(shè)計的發(fā)展允許可在集成電路設(shè)備上存在的邏輯的數(shù)量增加。作為必然結(jié)果,計算機(jī)系統(tǒng)配置從系統(tǒng)中的單個或多個集成電路演變成在個體集成電路上存在的多個核、多個硬件線程和多個邏輯處理器,以及在這樣的處理器內(nèi)集成的其他接口。處理器或集成電路典型地包括單個物理處理器晶片,其中該處理器晶片可能包括任意數(shù)量的核、硬件線程、邏輯處理器、接口、存儲器、控制器中樞(controllerhub)等。
由于在較小封裝件裝配更多處理能力的較大能力,較小計算設(shè)備越來越流行。智能電話、平板電腦、超薄筆記本和其他用戶設(shè)備呈指數(shù)增長。然而,這些較小設(shè)備依賴服務(wù)器,既用于數(shù)據(jù)存儲又用于超出形狀因子的復(fù)雜處理。因此,高性能計算市場(即,服務(wù)器空間)的需求也增加。例如,在現(xiàn)代服務(wù)器中,典型地不僅存在具有多個核的單個處理器,而且還存在多個物理處理器(也稱為多個插槽)用于提高計算能力。但隨著處理能力連同計算系統(tǒng)中設(shè)備的數(shù)量增加,插槽與其他設(shè)備之間的通信變得更加關(guān)鍵。
實際上,互連已經(jīng)從主要處理電通信的更加傳統(tǒng)的多點(diǎn)總線發(fā)展為全方位的互連架構(gòu),其促進(jìn)快速通信。遺憾地是,由于對具有甚至更高速率的功耗的未來處理器的需求增加,對現(xiàn)有互連架構(gòu)的能力也存在相應(yīng)的需求。
附圖說明
圖1圖示計算系統(tǒng)的實施例,該計算系統(tǒng)包括互連架構(gòu)。
圖2圖示互連架構(gòu)的實施例,該互連架構(gòu)包括分層棧。
圖3圖示要在互連架構(gòu)內(nèi)生成或接收的分組的實施例。
圖4圖示對于互連架構(gòu)的傳送器和接收器對的實施例。
圖5圖示虛擬化系統(tǒng)的實施例。
圖6是根復(fù)合體的簡化框圖。
圖7是代表根據(jù)至少一個實施例的首標(biāo)奇偶錯誤(headerparityerror)的處理的框圖。
圖8是示例分組首標(biāo)的框圖。
圖9是圖示錯誤抑制模式(errorcontainmentmode)的簡化流程圖。
圖10是代表用于處理首標(biāo)奇偶錯誤的一個或多個技術(shù)的簡化流程圖。
圖11圖示對于計算系統(tǒng)的塊的實施例,該計算系統(tǒng)包括多個處理器。
各種圖中的類似標(biāo)號和名稱指示類似元件。
具體實施方式
在下列描述中,闡述許多特定細(xì)節(jié),例如特定類型的處理器和系統(tǒng)配置、特定硬件結(jié)構(gòu)、特定架構(gòu)和微架構(gòu)細(xì)節(jié)、特定寄存器配置、特定指令類型、特定系統(tǒng)部件、特定測量/高度、特定處理器流水線階段和操作等的示例,以便提供對本發(fā)明的全面理解。然而,不必采用這些特定細(xì)節(jié)來實踐本發(fā)明,這對于本領(lǐng)域內(nèi)技術(shù)人員將是明顯的。在其他實例中,未詳細(xì)描述眾所周知的部件或方法,例如特定和備選處理器架構(gòu)、對于描述的算法的特定邏輯電路/代碼、特定固件代碼、特定互連操作、特定邏輯配置、特定制造技術(shù)和材料、特定編譯器實現(xiàn)、采用代碼的算法的特定表達(dá)、特定掉電和選通技術(shù)/邏輯和計算機(jī)系統(tǒng)的其他特定操作細(xì)節(jié),以避免不必要使本發(fā)明難以理解。
盡管下列實施例可以參考特定集成電路中(例如計算平臺或微處理器中)的能量節(jié)約和能量效率描述,其他實施例能適用于其他類型的集成電路和邏輯設(shè)備。本文描述的實施例的相似技術(shù)和教導(dǎo)可以適用于其他類型的電路或半導(dǎo)體器件,其也可從較好能量效率和能量節(jié)約獲益。例如,公開的實施例不限于臺式計算機(jī)系統(tǒng)或ultrabooks?。并且還可以在例如手持設(shè)備、平板電腦、其他薄筆記本電腦、芯片上系統(tǒng)(soc)設(shè)備和嵌入式應(yīng)用等其他設(shè)備中使用。手持設(shè)備的一些示例包括蜂窩電話、互聯(lián)網(wǎng)協(xié)議設(shè)備、數(shù)字拍攝裝置、個人數(shù)字助理(pda)和手持pc。嵌入式應(yīng)用典型地包括微控制器、數(shù)字信號處理器(dsp)、芯片上系統(tǒng)、網(wǎng)絡(luò)計算機(jī)(netpc)、機(jī)頂盒、網(wǎng)絡(luò)集線器(networkhub)、廣域網(wǎng)(wan)交換機(jī)或可以執(zhí)行下文教導(dǎo)的功能和操作的任何其他系統(tǒng)。此外,本文描述的裝置、方法和系統(tǒng)不限于物理計算設(shè)備,而還可以涉及對于能量節(jié)約和效率的軟件優(yōu)化。如將在下文的描述中變得顯而易見的,本文描述的方法、裝置和系統(tǒng)的實施例(無論是關(guān)于硬件、固件、軟件還是其組合)對于未來與性能考慮相權(quán)衡的‘綠色技術(shù)’是必不可少的。
由于計算設(shè)備在發(fā)展,其中的部件變得更復(fù)雜。因此,用于部件之間耦合和通信的互連架構(gòu)在復(fù)雜性方面也增加來確保滿足最佳部件操作的帶寬要求。此外,不同細(xì)分市場需要互連架構(gòu)的不同方面來滿足市場需要。例如,服務(wù)器需要較高性能,而移動生態(tài)系統(tǒng)有時能夠為了功率節(jié)省而犧牲整體性能。然而,大部分構(gòu)造的單一目的還是以最大功率節(jié)省提供最高可能性能。在下文論述許多互連,其將潛在地從本文論述的本發(fā)明的方面獲益。
一個互連構(gòu)造架構(gòu)包括外圍部件互連(pci)express(pcie)架構(gòu)。pcie的目標(biāo)是使來自不同供應(yīng)商的部件和設(shè)備能夠在開放架構(gòu)中互操作,從而跨越多個細(xì)分市場;客戶端(臺式機(jī)和手機(jī))、服務(wù)器(標(biāo)準(zhǔn)和企業(yè))以及嵌入式和通信設(shè)備。pciexpress是為很多種未來計算和通信平臺定義的高性能、通用i/o互連。一些pci屬性(例如它的使用模型、負(fù)載-存儲架構(gòu)和軟件接口)已經(jīng)通過它的修訂來維持,而先前的并行總線實現(xiàn)已經(jīng)被高度可擴(kuò)展完全串行接口所替換。pciexpress的更近版本利用點(diǎn)到點(diǎn)互連、基于交換機(jī)的技術(shù)和分組化協(xié)議的進(jìn)步來交付新級別的性能和特征。功率管理、服務(wù)質(zhì)量(qos)、熱插拔/熱交換支持、數(shù)據(jù)完整性和錯誤管理是pciexpress所支持的一些高級特征之中的特征。
參考圖1,圖示構(gòu)造的實施例,其由互連一組部件的點(diǎn)到點(diǎn)鏈路組成。系統(tǒng)100包括耦合于控制器中樞115的處理器105和系統(tǒng)存儲器110。處理器105包括任何處理元件,例如微處理器、主處理器、嵌入式處理器、協(xié)處理器或其他處理器。處理器105通過前端總線(fsb)106耦合于控制器中樞115,例如根中樞(roothub)或根復(fù)合體。在一個實施例中,fsb106是如下文描述的串行點(diǎn)到點(diǎn)互連。在另一個實施例中,鏈路106包括串行差分互連架構(gòu),其與不同互連標(biāo)準(zhǔn)兼容。
系統(tǒng)存儲器110包括任何存儲器設(shè)備,例如隨機(jī)存取存儲器(ram)、非易失性(nv)存儲器或可由系統(tǒng)100中的設(shè)備訪問的其他存儲器。系統(tǒng)存儲器110通過存儲器接口116耦合于控制器中樞115。存儲器接口的示例包括雙數(shù)據(jù)速率(ddr)存儲器接口、雙通道ddr存儲器接口和動態(tài)ram(dram)存儲器接口。
在一個實施例中,控制器中樞115是外圍部件互連express(pcie或pcie)互連層級中的根中樞、根復(fù)合體或根控制器??刂破髦袠?15的示例包括芯片集、存儲器控制器中樞(mch)、北橋、互連控制器中樞(ich)、南橋和根控制器/中樞。術(shù)語芯片集通常指兩個物理單獨(dú)控制器中樞,例如耦合于互連控制器中樞(ich)的存儲器控制器中樞(mch)。注意當(dāng)前系統(tǒng)通常包括與處理器105集成的mch,而控制器115采用如下文描述的相似的方式與i/o設(shè)備通信。在一些實施例中,對等路由可選地通過根復(fù)合體115來支持。
在這里,控制器中樞115通過串行鏈路119耦合于交換機(jī)/網(wǎng)橋(bridge)120。輸入/輸出模塊117和121(其也可以稱為接口/端口117和121)包括/實現(xiàn)分層協(xié)議棧以在控制器中樞115與交換機(jī)120之間提供通信。在一個實施例中,多個設(shè)備能夠耦合于交換機(jī)120。
交換機(jī)/網(wǎng)橋120將分組/消息從設(shè)備125上游(即,朝著根復(fù)合體沿層級向上)路由到控制器中樞115和下游(即,遠(yuǎn)離根控制器沿層級向下)、從處理器105或系統(tǒng)存儲器110到設(shè)備125路由。在一個實施例中,交換機(jī)120稱為多個虛擬pci到pci網(wǎng)橋設(shè)備的邏輯組裝件(assembly)。設(shè)備125包括要耦合于例如i/o設(shè)備、網(wǎng)絡(luò)接口控制器(nic)、插卡、音頻處理器、網(wǎng)絡(luò)處理器、硬驅(qū)動器、存儲設(shè)備、cd/dvdrom、監(jiān)視器、打印機(jī)、鼠標(biāo)、鍵盤、路由器、便攜式存儲設(shè)備、firewire設(shè)備、通用串行總線(usb)設(shè)備、掃描儀和其他輸入/輸出設(shè)備等電子系統(tǒng)的任何內(nèi)部或外部設(shè)備或部件。通常在pcie通俗語中,例如設(shè)備稱為端點(diǎn)。盡管未具體示出,設(shè)備125可以包括pcie到pci/pci-x網(wǎng)橋,用于支持遺留或其他版本pci設(shè)備。pcie中的端點(diǎn)設(shè)備通常歸類為遺留、pcie或根復(fù)合體集成端點(diǎn)。
圖形加速器130還通過串行鏈路132耦合于控制器中樞115。在一個實施例中,圖形加速器130耦合于mch,其耦合于ich。交換機(jī)120以及相應(yīng)地i/o設(shè)備125然后耦合于ich。i/o模塊131和118也實現(xiàn)分層協(xié)議棧以在圖形加速器130與控制器中樞115之間通信。與上文的mch論述相似,圖形控制器或圖形加速器130自身可在處理器105中集成。
轉(zhuǎn)向圖2,圖示分層協(xié)議棧的實施例。分層協(xié)議棧200包括任何形式的分層通信棧,例如快速路徑互連(qpi)棧、pcie棧、下一代高性能計算互連棧或其他分層棧。盡管緊接著在下文參考圖1-4的論述與pcie棧有關(guān),相同概念可以適用于其他互連棧。在一個實施例中,協(xié)議棧200是pcie協(xié)議棧,其包括事務(wù)層205、鏈路層210和物理層220。接口(例如圖1中的接口117、118、121、122、126和131)可以表示為通信協(xié)議棧200。作為通信協(xié)議棧的表示也可以稱為實現(xiàn)/包括協(xié)議棧的模塊或接口。
pciexpress使用分組以用于在部件之間傳達(dá)信息。分組在事務(wù)層205和數(shù)據(jù)鏈路層210中形成以將信息從傳送部件運(yùn)送到接收部件。當(dāng)傳送的分組流過其他層時,它們被擴(kuò)展為帶有在那些層處處理分組所必需的額外信息。在接收側(cè)處出現(xiàn)逆過程并且分組從它們的物理層220表示變換成數(shù)據(jù)鏈路層210表示并且最后(對于事務(wù)層分組)變換成可以由接收設(shè)備的事務(wù)層205處理的形式。
事務(wù)層
在一個實施例中,事務(wù)層205在設(shè)備的處理核與互連架構(gòu)(例如數(shù)據(jù)鏈路層210與物理層220)之間提供接口。在該方面,事務(wù)層205的主要責(zé)任是組裝和拆卸分組(即,事務(wù)層分組或tlp)。轉(zhuǎn)換層205典型地管理對于tlp的基于信用的流控。pcie實現(xiàn)分離事務(wù),即具有通過時間分開的請求和響應(yīng)的事務(wù),從而允許鏈路在目標(biāo)設(shè)備聚集對于響應(yīng)的數(shù)據(jù)時運(yùn)送其他業(yè)務(wù)。
另外pcie使用基于信用的流控。在該方案中,設(shè)備對事務(wù)層205中的接收緩沖器中的每個公告初始信用量。鏈路的相對端處的外部設(shè)備(例如圖1中的控制器中樞115)對每個tlp所消耗的信用數(shù)量計數(shù)。如果事務(wù)未超出信用極限,可以傳送事務(wù)。在接收響應(yīng)時恢復(fù)一定信用量。信用方案的優(yōu)勢是信用回歸的延時不影響性能(假定未遇到信用極限)。
在一個實施例中,四個事務(wù)地址空間包括配置地址空間、存儲器地址空間、輸入/輸出地址空間和消息地址空間。存儲器空間事務(wù)包括讀請求和寫請求中的一個或多個以將數(shù)據(jù)傳輸?shù)酱鎯ζ饔成湮稽c(diǎn)/從存儲器映射位點(diǎn)傳輸數(shù)據(jù)。在一個實施例中,存儲器空間事務(wù)能夠使用兩個不同的地址格式,例如短地址格式(例如32位地址)或長地址格式(例如64位地址)。配置空間事務(wù)用于訪問pcie設(shè)備的配置空間。對于配置空間的事務(wù)包括讀請求和寫請求。消息空間事務(wù)(或簡單地,消息)定義成支持pcie代理之間的帶內(nèi)通信。
因此,在一個實施例中,事務(wù)層205組裝分組首標(biāo)/有效載荷206。例如在圖8中圖示示例首標(biāo)分組格式。其他示例分組首標(biāo)/有效載荷可以基于各種協(xié)議規(guī)范而格式化,例如在pcie規(guī)范網(wǎng)站處的pcie規(guī)范中找到的首標(biāo)/有效載荷格式。
快速參考圖3,圖示pcie事務(wù)描述符的實施例。在一個實施例中,事務(wù)描述符300是用于運(yùn)送事務(wù)信息的機(jī)構(gòu)。在該方面,事務(wù)描述符300支持系統(tǒng)中事務(wù)的識別。其他潛在使用包括跟蹤默認(rèn)事務(wù)排序的修改和事務(wù)與通道的關(guān)聯(lián)。
事務(wù)描述符300包括全局標(biāo)識符字段302、屬性字段304和通道標(biāo)識符字段306。在圖示的示例中,描繪全局標(biāo)識符字段302,其包括本地事務(wù)描述符字段308和源標(biāo)識符字段310。在一個實施例中,全局事務(wù)描述符302對于所有未完成請求是唯一的。
根據(jù)一個實現(xiàn),本地事務(wù)標(biāo)識符字段308是由請求代理生成的字段,并且它對于所有未完成請求(對于該請求代理需要完成)是唯一的。此外,在該示例中,源標(biāo)識符310在pcie層級內(nèi)唯一地標(biāo)識請求者代理。因此,連同源id310,本地事務(wù)標(biāo)識符308字段提供層級域內(nèi)事務(wù)的全局標(biāo)識。
屬性字段304規(guī)定事務(wù)的特性和關(guān)系。在該方面,屬性字段304潛在地用于提供額外信息,其允許事務(wù)默認(rèn)處理的修改。在一個實施例中,屬性字段304包括優(yōu)先級字段312、保留字段314、排序字段316和非窺探字段318。在這里,優(yōu)先級子字段312可以由啟動部件(initiator)修改來對事務(wù)指派優(yōu)先級。保留屬性字段314被保留以用于未來或供應(yīng)商定義的使用。使用優(yōu)先級或安全屬性的可能使用模型可以使用保留的屬性字段來實現(xiàn)。
在該示例中,排序?qū)傩宰侄?16用于供應(yīng)可選信息,其傳達(dá)可以修改默認(rèn)排序規(guī)則的排序類型。根據(jù)一個示例實現(xiàn),排序?qū)傩浴?”指示默認(rèn)排序規(guī)則適用,其中排序?qū)傩浴?”指示放寬排序,其中寫可以在相同方向上超越寫,并且讀完成可以在相同方向上超越寫。窺探屬性字段318用于確定事務(wù)是否被窺探。如示出的,通道id字段306識別事務(wù)與之關(guān)聯(lián)的通道。
鏈路層
鏈路層210(也稱為數(shù)據(jù)鏈路層210)充當(dāng)事務(wù)層205與物理層220之間的中間階段。在一個實施例中,數(shù)據(jù)鏈路層210的責(zé)任是提供用于在鏈路上的兩個部件之間交換事務(wù)層分組(tlp)的可靠機(jī)制。數(shù)據(jù)鏈路層210的一側(cè)接受事務(wù)層205所組裝的tlp、應(yīng)用分組序列標(biāo)識符211(即,標(biāo)識號或分組號)、計算并且應(yīng)用檢錯碼(即,crc212)并且將修改的tlp提交給物理層220用于跨物理到外部設(shè)備的傳送。
物理層
在一個示例中,物理層220包括邏輯子塊221和電氣子塊(electricalsub-block)222,用于將分組物理傳送到外部設(shè)備。在這里,邏輯子塊221負(fù)責(zé)物理層221的“數(shù)字”功能。在該方面,邏輯子塊包括:傳送段,用于準(zhǔn)備出站信息以供物理子塊222傳送;和接收器段,用于在將接收的信息傳遞到鏈路層210之前識別并且預(yù)備接收的信息。
物理塊222包括傳送器和接收器。傳送器由邏輯子塊221供應(yīng)符號,而傳送器使這些符號串行化并且傳送到外部設(shè)備上。接收器供應(yīng)有來自外部設(shè)備的串行化符號并且將接收信號變換成位流。該位流被反串行化并且供應(yīng)給邏輯子塊221。在一個實施例中,采用8b/10b傳送代碼,其中傳送/接收十位符號。在這里,特殊符號用于利用幀223來使分組成幀。另外,在一個示例中,接收器還提供從進(jìn)入的串行流恢復(fù)的符號時鐘。
如上文規(guī)定的,盡管事務(wù)層205、鏈路層210和物理層220參考pcie協(xié)議棧的特定實施例論述,分層協(xié)議棧不這樣受限制。實際上,可以包括/實現(xiàn)任何分層協(xié)議。作為示例,表示為分層協(xié)議的端口/接口包括:(1)用于組裝分組的第一層,即事務(wù)層;使分組序列化的第二層,即鏈路層;和用于傳送分組的第三層,即物理層。作為特定示例,使用共用標(biāo)準(zhǔn)接口(csi)分層協(xié)議。
接著參考圖4,圖示pcie串行點(diǎn)到點(diǎn)構(gòu)造的示例實施例。盡管圖示pcie串行點(diǎn)到點(diǎn)鏈路的實施例,串行點(diǎn)對點(diǎn)鏈路因為它包括用于傳送串行數(shù)據(jù)的任何傳送路徑而不這樣受限制。在示出的實施例中,基本pcie鏈路包括兩個低壓差分驅(qū)動信號對:傳送對406/411和接收對412/407。因此,設(shè)備405包括用于將數(shù)據(jù)傳送到設(shè)備410的傳送邏輯406,和用于從設(shè)備410接收數(shù)據(jù)的接收邏輯407。也就是說,兩個傳送路徑(即路徑416和417)和兩個接收路徑(即路徑418和419)包括在pcie鏈路中。
傳送路徑指用于傳送數(shù)據(jù)的任何路徑,例如傳送線、銅線、光學(xué)線、無線通信信道、紅外通信鏈路或其他通信路徑。兩個設(shè)備(例如設(shè)備405和設(shè)備410)之間的連接稱為鏈路,例如鏈路415。鏈路可支持一個通路-每個通路代表一組差分信號對(一對用于傳送,一對用于接收)。為了擴(kuò)展帶寬,鏈路可以聚集由xn指示的多個通路,其中n是任何支持的鏈路帶寬,例如1、2、4、8、12、16、32、64或更寬。
差分對指用于傳送差分信號的兩個傳送路徑(例如線路416和417)。作為示例,當(dāng)線路416從低電壓水平切換到高電壓水平(即,上升沿)時,線路417從高邏輯水平驅(qū)動到低邏輯水平(即,下降沿)。差分信號潛在地證明更好的電特性,例如更好的信號完整性,即,交叉耦合、電壓過沖/下沖、振鈴。這允許更好的定時窗口,其實現(xiàn)更快傳送頻率。
計算系統(tǒng)可以虛擬化以允許在單個系統(tǒng)上運(yùn)行多個環(huán)境。虛擬化性能已經(jīng)得以發(fā)展使得實現(xiàn)虛擬化的服務(wù)器系統(tǒng)可以導(dǎo)致大量閑置容量,其可以用于使服務(wù)器系統(tǒng)的計算資源最大化。然而,虛擬化可以引入它自身的額外開銷,例如通過預(yù)備虛擬化層。已經(jīng)在尋求解決該開銷的技術(shù)方案。例如,為此目的開發(fā)處理器、芯片集、i/o和互連增強(qiáng)來提高虛擬化平臺的性能、效率和魯棒性。
i/o虛擬化技術(shù)方案提供如果每個環(huán)境在單獨(dú)物理機(jī)上運(yùn)行則將存在的相同的隔離。技術(shù)方案還旨在對i/o操作提供接近本機(jī)性能。隔離應(yīng)提供存儲器空間的分離。隔離可以分離i/o流、中斷,以及(在共享設(shè)備情況下)隔離控制操作、i/o操作和錯誤的能力。在軟件共享方案中,隔離可以通過虛擬化層來實施。對于其中對i/o繞過虛擬化層的共享硬件設(shè)備,其他可以用于實施隔離。
在圖5的簡化框圖中圖示的一個示例中,系統(tǒng)500可以包括一個或多個i/o設(shè)備505、510、515,其可以通過互連520連接到虛擬機(jī)540、545、550上托管的訪客驅(qū)動器525、530、535。可以提供虛擬機(jī)管理器(vmm)555來實現(xiàn)基于虛擬軟件的交換機(jī)以將分組路由到合適的虛擬機(jī)以及從合適的虛擬機(jī)路由分組。地址轉(zhuǎn)換層560可以用于在互連520與vmm555的仿真層之間提供接口。在一些情況下,明顯的cpu開銷可以由虛擬機(jī)管理器(vmm)用于實現(xiàn)基于虛擬軟件的交換機(jī),其中該cpu開銷使i/o設(shè)備上的最大吞吐量減少。在一些實例中,處理通過軟件交換機(jī)的每個分組可以使用多個cpu周期。因此,在一些實現(xiàn)中,vmm的i/o仿真層可以向i/o操作添加開銷。
虛擬化地址轉(zhuǎn)換560(例如intel?vt-d技術(shù))可以促進(jìn)存儲器轉(zhuǎn)換并且確保存儲器保護(hù),其使設(shè)備能夠執(zhí)行到/從主機(jī)存儲器的直接存儲器訪問(dma)。虛擬化轉(zhuǎn)換560可以允許繞過vmm555的i/o仿真層,從而導(dǎo)致虛擬機(jī)吞吐量提高。在一個實現(xiàn)中,地址轉(zhuǎn)換可以允許虛擬機(jī)直接訪問物理地址(如這樣通過vmm配置的話)。這可以允許虛擬機(jī)(例如,540、545、550)內(nèi)的設(shè)備驅(qū)動器(例如,525、530、535)能夠直接寫入io設(shè)備(例如,505、510、515)的寄存器。相似地,虛擬化轉(zhuǎn)換560可以直接寫入虛擬機(jī)的存儲器空間,例如dma操作。
在一些實現(xiàn)中,vmm555使用并且配置虛擬化轉(zhuǎn)換層560以在向/從i/o設(shè)備(例如,505、510、515)發(fā)送數(shù)據(jù)時執(zhí)行地址轉(zhuǎn)換。虛擬化轉(zhuǎn)換層560可以提供基于硬件的機(jī)制來轉(zhuǎn)換對于由i/o設(shè)備發(fā)出的dma事務(wù)的地址。在一些情況下,訪客操作系統(tǒng)(os)看到的地址空間與主機(jī)的底層物理地址不相同。當(dāng)訪客os直接與i/o設(shè)備對話時,它在命令和緩沖器描述符中提供訪客物理地址(gpa)。gpa在i/o設(shè)備發(fā)出dma事務(wù)時被i/o設(shè)備使用并且要轉(zhuǎn)換成主機(jī)物理地址(hpa)使得dma事務(wù)可以對準(zhǔn)已經(jīng)配置為dma緩沖器的底層物理存儲器頁面。虛擬化轉(zhuǎn)換可以使用分組中的值作為到由vmm創(chuàng)建的查找表的索引。字段可以對應(yīng)于直接分配的功能中的一個并且識別關(guān)聯(lián)的虛擬機(jī)。除其他示例外,通過識別虛擬機(jī)上下文并且使用查找表,芯片集還可以轉(zhuǎn)換dma地址使得它對準(zhǔn)正確的物理頁面并且它可以應(yīng)用保護(hù)機(jī)制來確保dma操作不會影響不相關(guān)虛擬機(jī)的存儲器空間。
首標(biāo)奇偶錯誤處理
根復(fù)合體可以用于實現(xiàn)大容量存儲結(jié)構(gòu)來存儲首標(biāo)和有效載荷數(shù)據(jù),連同非常寬芯片上總線來傳輸該信息。為了檢測首標(biāo)或有效載荷數(shù)據(jù)的損壞,在這些存儲結(jié)構(gòu)和總線上可以采用奇偶。然而,在奇偶錯誤的情況下,在一些系統(tǒng)(例如對于pcie根復(fù)合體)中,傳統(tǒng)的實現(xiàn)通過立即關(guān)閉根復(fù)合體或通過簡單地向軟件報告錯誤來對首標(biāo)奇偶錯誤作出響應(yīng)。首標(biāo)奇偶錯誤可以代表致命錯誤并且傳統(tǒng)實現(xiàn)因為首標(biāo)中的錯誤而冒著造成持久存儲被損壞的風(fēng)險和/或?qū)е抡麄€系統(tǒng)突然失靈。這兩個情景在許多應(yīng)用(例如數(shù)據(jù)中心)中都是不可接受的。在一些實現(xiàn)中,可以提供技術(shù)方案,例如本文描述的那些,其使根復(fù)合體能夠?qū)崿F(xiàn)錯誤抑制和系統(tǒng)的正常關(guān)機(jī)。
轉(zhuǎn)向圖6,示出計算環(huán)境600的一部分的簡化框圖,該計算環(huán)境600包括根復(fù)合體605、i/o設(shè)備610、615、一個或多個交換機(jī)620、cpu625和相關(guān)存儲器元件630。在一些實現(xiàn)中,根復(fù)合體605可以關(guān)于虛擬化系統(tǒng)實現(xiàn)。在本示例中,根復(fù)合體605可以包括實現(xiàn)邏輯來幫助檢測和處理影響分組首標(biāo)和數(shù)據(jù)的奇偶錯誤的額外部件。例如,如在圖6的示例中示出的,根復(fù)合體605可以包括奇偶生成邏輯635和奇偶校驗邏輯640以及響應(yīng)于識別的奇偶錯誤的邏輯,例如首標(biāo)構(gòu)造邏輯645、首標(biāo)傳輸邏輯650、無限隊列邏輯655和錯誤報告邏輯670。另外的部件可以包括例如地址轉(zhuǎn)換能力(包括對于虛擬化轉(zhuǎn)換)、仲裁和控制邏輯、多個入站隊列680(例如,對于多個事務(wù)類型)、多個出站隊列685和一個或多個端口,根復(fù)合體通過該一個或多個端口可以與其他設(shè)備通信。
奇偶錯誤可以使用奇偶校驗640和奇偶生成邏輯635檢測,包括當(dāng)首標(biāo)數(shù)據(jù)駐存在根復(fù)合體605的隊列680、685中時影響分組的首標(biāo)的奇偶錯誤。為了實現(xiàn)高度錯誤抑制同時避免阻斷或掛起狀態(tài),首標(biāo)構(gòu)造模塊645可以生成“偽(dummy)”首標(biāo)數(shù)據(jù),其替換存在奇偶錯誤的首標(biāo)的一個或多個字段。偽首標(biāo)數(shù)據(jù)可以基于不同約束并且允許處理首標(biāo)而沒有產(chǎn)生致命錯誤。例如,首標(biāo)傳輸邏輯650可以解釋偽首標(biāo)并且從構(gòu)造字段中的至少一些識別首標(biāo)實際上是響應(yīng)于奇偶錯誤生成的偽首標(biāo)。首標(biāo)傳輸邏輯650然后可以執(zhí)行動作來抑制錯誤并且減少阻斷任何其他事務(wù)。在通過識別偽首標(biāo)(例如使用無限隊列模塊650)進(jìn)入的中止模式期間還可以管理存儲與首標(biāo)(以及隊列680、685中的其他首標(biāo))關(guān)聯(lián)的有效載荷數(shù)據(jù)的隊列。無限隊列模塊還可以促使有效載荷隊列自主返回信用以允許分組的正向進(jìn)程并且使進(jìn)入隊列的新數(shù)據(jù)同步/忽略該新數(shù)據(jù)。另外,可以配置錯誤報告670使得避免不必要的錯誤升級(例如,基于從系統(tǒng)的接收偽首標(biāo)并且對具有額外錯誤的偽首標(biāo)的構(gòu)造字段作出響應(yīng)的部件以及其他設(shè)備檢測的錯誤),同時仍記錄在根復(fù)合體605處檢測的奇偶錯誤。盡管傳統(tǒng)系統(tǒng)可以采用有意或無意掛起對首標(biāo)錯誤作出響應(yīng),具有例如在圖6的示例中示出和描述的功能性的根復(fù)合體可以實現(xiàn)強(qiáng)大的錯誤抑制同時實現(xiàn)系統(tǒng)正常關(guān)機(jī)(例如,通過在其他子系統(tǒng)中智能避免掛起狀態(tài))。
圖7圖示采用根復(fù)合體的系統(tǒng)的更詳細(xì)視圖,該根復(fù)合體具有部件,例如奇偶生成邏輯635、奇偶校驗640a-b、首標(biāo)構(gòu)造邏輯645a-b、無限隊列模塊655a-b、仲裁和控制邏輯665、地址轉(zhuǎn)換邏輯660和首標(biāo)傳輸邏輯650。可以提供隊列705、710、715、720,其包括先進(jìn)先出(fifo)輸入隊列705、715以及輸出隊列710、720??梢詫κ讟?biāo)(例如,705、710)和它們的相應(yīng)有效載荷數(shù)據(jù)(例如,715、720)提供單獨(dú)隊列。此外,可以基于分組(以及它的首標(biāo)和數(shù)據(jù))的事務(wù)類型對輸入和輸出首標(biāo)隊列以及輸入和輸出有效載荷(或“數(shù)據(jù)”)隊列中的每個提供多個隊列。例如,在一個示例中,圖7代表pcie根復(fù)合體的部件并且輸入隊列可以包括對于已公告(posted)(p)和非公告(np)事務(wù)和完成(cmp)的首標(biāo)隊列705、710??梢詫?shù)據(jù)隊列715、720提供相似類型特定隊列(盡管在該示例中僅對輸入提供非公告數(shù)據(jù)隊列(例如,因為響應(yīng)于非公告請求可不需要輸出數(shù)據(jù)))。
圖7的示例進(jìn)一步代表系統(tǒng)的部件之間的示例流。例如,可以在根復(fù)合體處通過pcie端口從設(shè)備(例如,730a)接收分組。在將分組的首標(biāo)放在隊列705中之前,可以通過奇偶生成邏輯635對首標(biāo)數(shù)據(jù)(例如,通過對首標(biāo)數(shù)據(jù)的xor運(yùn)算)計算奇偶值并且該奇偶值可以與隊列705中的首標(biāo)關(guān)聯(lián)。數(shù)據(jù)的有效載荷可以存放在輸入數(shù)據(jù)隊列715中。(在一些情況下,還可以對有效載荷生成奇偶來檢測在有效載荷數(shù)據(jù)在隊列715中等待時可以引發(fā)的相似錯誤。)首標(biāo)的一個或多個字段可以指示首標(biāo)的分組的事務(wù)類型并且首標(biāo)可以存放在與檢測的事務(wù)類型關(guān)聯(lián)的輸入首標(biāo)隊列中。例如,如果首標(biāo)識別為與非公告事務(wù)關(guān)聯(lián),首標(biāo)可以放在非公告輸入首標(biāo)隊列中。首標(biāo)的字段在被根復(fù)合體接收時可以假設(shè)為無錯的,例如基于用于預(yù)防損壞數(shù)據(jù)進(jìn)入根復(fù)合體的事務(wù)層錯誤保護(hù)措施(例如,循環(huán)冗余校驗(crc))。
在一些實現(xiàn)中,在實際處理分組之前在根復(fù)合體內(nèi)可以存在數(shù)據(jù)隊列的多個階段,在該情況下每個階段應(yīng)能夠唯一識別對應(yīng)分組類型。這樣的階段可以包括地址轉(zhuǎn)換(例如,關(guān)于虛擬化計算環(huán)境)、用于確定分組的目的地的解碼、用于從一致性存儲器得到高速緩存行的所有權(quán)的預(yù)提取,以及其他事務(wù)和操作。這可以基于原始首標(biāo)隊列分配(例如,如果首標(biāo)初始分配給公告、非公告或完成隊列,等)實現(xiàn)。然而,可以出現(xiàn)錯誤,從而使預(yù)計用于識別首標(biāo)的事務(wù)類型的首標(biāo)的字段損壞。例如,在首標(biāo)數(shù)據(jù)的壽命期間,它可以在分組處理的多個階段多次被讀取和訪問,從而允許潛在出現(xiàn)某種數(shù)據(jù)損壞。
如上文介紹的,可以校驗首標(biāo)的奇偶(在這些階段之后或之間)來識別首標(biāo)數(shù)據(jù)是否損壞。奇偶校驗可以牽涉重新計算奇偶值并且將它與之前對首標(biāo)生成的奇偶值相比較。在識別首標(biāo)奇偶錯誤時,根復(fù)合體的一個或多個端口可以置于特殊奇偶錯誤抑制模式中。在一些實例中,具有錯誤的首標(biāo)可以映射到特定端口并且該特定端口可以是置于奇偶錯誤抑制模式中的端口。系統(tǒng)或一個或多個受影響端口可以保持在錯誤抑制模式直到系統(tǒng)重啟。該模式的目標(biāo)可以是預(yù)防其他事務(wù)被掛起或阻斷并且沒有出現(xiàn)超時。此外,錯誤記錄和報告邏輯(例如,670)可以向系統(tǒng)的操作系統(tǒng)報告檢測的奇偶錯誤作為致命錯誤,例如通過引發(fā)中斷或使用另一個技術(shù)。操作系統(tǒng)然后可以對奇偶錯誤采取行動,例如通過停止其上看到奇偶錯誤的端口上的設(shè)備驅(qū)動器(例如,以避免對出錯端口施加壓力)并且正常完成進(jìn)行中的任務(wù)并且發(fā)出重啟。
在一些情況下,當(dāng)首標(biāo)奇偶錯誤觸發(fā)進(jìn)入奇偶錯誤抑制模式時,可以訪問首標(biāo)構(gòu)造邏輯來對出現(xiàn)錯誤的首標(biāo)構(gòu)造新的字段來替換那些字段,其在損壞并且允許繼續(xù)進(jìn)行時可以在系統(tǒng)內(nèi)引起災(zāi)難性錯誤。圖8示出對于pcie內(nèi)的事務(wù)層分組(tlp)的示例分組首標(biāo)格式。此外,使用pcie作為示例,表1總結(jié)pcie首標(biāo)的首標(biāo)字段中的一些的作用并且進(jìn)一步總結(jié)這些字段中奇偶錯誤的影響。表1進(jìn)一步總結(jié)可以構(gòu)造來替換原始首標(biāo)字段的偽首標(biāo)數(shù)據(jù)的類型。在一些實現(xiàn)中,從奇偶錯誤識別首標(biāo)的字段中的哪些實際上損壞,這是不可能的。在一些情況下,奇偶校驗可以僅識別出現(xiàn)錯誤而不識別什么字段受影響。因此,在這樣的實例中,多個首標(biāo)字段(包括不受錯誤影響的字段)可以用偽數(shù)據(jù)替換。
作為說明性示例,可以對公告輸入首標(biāo)隊列中的特定首標(biāo)檢測奇偶錯誤。受錯誤影響的確切字段可以是未知的,因此根復(fù)合體邏輯配置成解決首標(biāo)字段中的任一個可受影響這一可能性。響應(yīng)于檢測奇偶錯誤,根復(fù)合體的一個或多個端口可以置于奇偶錯誤抑制模式并且可以觸發(fā)首標(biāo)構(gòu)造邏輯645a。首標(biāo)構(gòu)造邏輯可以生成偽首標(biāo)字段,其包括對類型和格式字段硬編碼來確保它們與首標(biāo)隊列的事務(wù)類型一致??紤]到字段中的任一個可能包含錯誤這一可能性,字段值沒有一個是可信。例如,因為在分組的長度字段中可能存在錯誤,分組的有效載荷的長度是未知的。因此,偽數(shù)據(jù)可以包括用“memwrite”(假定首標(biāo)來自公告的輸入隊列)編碼的類型和格式字段并且長度字段還可以硬編碼為任意恒定值,例如對應(yīng)于單個高速緩存行的長度值。在一個示例中,事務(wù)中止邏輯忽略地址和長度字段,因此這些字段可以用預(yù)定義偽值編碼,其包括僅在出現(xiàn)首標(biāo)奇偶錯誤時設(shè)置的值(即,使得首標(biāo)奇偶錯誤和對應(yīng)的構(gòu)造的偽首標(biāo)可以從預(yù)定義字段值識別)。從而,偽編碼可以被其他中止和控制邏輯讀取來促使系統(tǒng)進(jìn)入奇偶錯誤抑制模式并且偽值可以進(jìn)一步由解碼邏輯(例如,660)識別使得它繞過解碼。未能替代出錯地址字段可在地址解碼中引起故障并且引起虛假錯誤,其可以導(dǎo)致系統(tǒng)突然關(guān)機(jī)。
其他字段中的錯誤可能造成較少風(fēng)險使得根復(fù)合體可以處理從出錯字段產(chǎn)生的錯誤。因此,在一些情況下首標(biāo)構(gòu)造邏輯(例如,645a)可以有效地使用原始首標(biāo)值,即時它們確實包含錯誤也如此。作為示例,請求者id和標(biāo)簽值可以在首標(biāo)構(gòu)造邏輯生成的偽首標(biāo)字段中重新編碼。pcie首標(biāo)的請求者id和標(biāo)簽字段例如在非公告事務(wù)情況下具有重要用途。這些字段允許請求者使完成與對應(yīng)的讀請求相關(guān)。如上文指出的,在一些實現(xiàn)中,由于首標(biāo)構(gòu)造邏輯保持從首標(biāo)隊列讀出相同值,這些字段中的任一個中的奇偶錯誤可以在偽首標(biāo)中保留。因此,在一些示例中,如果在這兩個字段中的任一個內(nèi)發(fā)生錯誤,不正確的請求者id和標(biāo)簽將發(fā)送到始發(fā)設(shè)備。然而,根復(fù)合體的事務(wù)中止邏輯(例如,奇偶校驗邏輯)可以配置成識別首標(biāo)包括奇偶錯誤并且可以在pcie首標(biāo)中生成具有設(shè)置的“未支持的請求”響應(yīng)的完成。在始發(fā)設(shè)備嘗試映射具有其未完成請求的完成并且失?。矗驗椴徽_的請求者id和標(biāo)簽)時,始發(fā)設(shè)備可以引發(fā)它自己的錯誤或中斷。然而,由于已進(jìn)入奇偶錯誤抑制模式,根端口處的錯誤處理邏輯可以抑制從它下方/下游的其他設(shè)備的錯誤報告,并且阻斷任何造成的虛假錯誤的升級。
可以在圖7中示出和描述的示例根復(fù)合體中提供額外邏輯。例如,可以提供首標(biāo)傳輸邏輯650來讀取輸入首標(biāo)和數(shù)據(jù)隊列(例如,705、715)的首標(biāo)并且處理首標(biāo)(原始(即,無錯)和偽首標(biāo)兩者)使得首標(biāo)(和對應(yīng)的有效載荷)被引導(dǎo)到它們合適的目的地(例如另一個端口或系統(tǒng)代理(例如,740)等)。
應(yīng)意識到關(guān)于上文的與在輸入首標(biāo)隊列(例如,705)處檢測的首標(biāo)奇偶錯誤有關(guān)的示例描述的原理、操作和特征可以基本上同樣適用于在輸出隊列(例如,710)處檢測的首標(biāo)奇偶錯誤。作為例外,當(dāng)在輸入隊列處接收分組時,根復(fù)合體可以對輸入首標(biāo)使用地址解碼邏輯來確定首標(biāo)的目的地。然而,在輸出隊列(例如,710、720)的情況下,某一其他端口或系統(tǒng)代理已經(jīng)對首標(biāo)的目的地解碼并且將分組發(fā)送到對應(yīng)的輸出隊列。因此,輸出隊列中的分組和首標(biāo)可以簡單地從隊列(例如,在任何錯誤處理后)發(fā)送到連接到對應(yīng)端口的下游設(shè)備。
當(dāng)基于首標(biāo)奇偶錯誤(在輸入首標(biāo)隊列705或輸出首標(biāo)隊列710處)進(jìn)入錯誤抑制模式時,可以觸發(fā)數(shù)據(jù)隊列無限模式邏輯(例如,655a、b)來防止事務(wù)由于在長度字段或指定數(shù)據(jù)隊列(例如,715、720)中存儲的有效載荷數(shù)據(jù)的字符的其他字段中提供的偽數(shù)據(jù)而掛起。在一個示例中,如在圖9的流程圖900中示出的,隊列無限模式可以首先刷新(或重設(shè))905對應(yīng)數(shù)據(jù)隊列中的所有現(xiàn)有條目。例如,一旦奇偶邏輯報告首標(biāo)奇偶錯誤,該特定端口中數(shù)據(jù)隊列中的全部可以將它們的相應(yīng)指針重設(shè)為空條件。例如,對應(yīng)于該分組類型的其上具有奇偶錯誤的數(shù)據(jù)隊列可以被刷新。在其他實例中,其中檢測到奇偶錯誤的特定端口的所有數(shù)據(jù)隊列(輸入和輸出兩者)可以被刷新。這可以預(yù)防后續(xù)奇偶錯誤(例如,與其他分組類型有關(guān))。
此外,無限隊列模式可以提供自主信用處理910。例如,無限隊列邏輯可以促使在奇偶錯誤時對數(shù)據(jù)隊列中的條目/信用的數(shù)量計數(shù)。這些信用然后可以全部返回總線的另一側(cè)。因為數(shù)據(jù)隊列條目全部已重設(shè)(即,在905中),還失去對應(yīng)的信用信息。返回信用允許在系統(tǒng)重設(shè)時繼續(xù)接收事務(wù)而沒有拋出額外錯誤。此外,除響應(yīng)于首標(biāo)奇偶錯誤的初始信用返回外,自主信用處理910還可以對于在首標(biāo)奇偶錯誤后在根復(fù)合體處接收的新的分組的任何“推送”數(shù)據(jù)提供信用返回處理。
除自主信用處理910外,無限隊列模式邏輯可以另外促使將隊列狀態(tài)信號設(shè)置915為恒定值來保證任何后續(xù)事務(wù)的持續(xù)正向進(jìn)程直到完成系統(tǒng)的正常關(guān)機(jī)。例如,無限隊列模式邏輯可以依賴于對持續(xù)正向進(jìn)程的數(shù)據(jù)隊列的狀態(tài)搶占式地向系統(tǒng)邏輯的余下部分報告隊列狀態(tài)值。例如,當(dāng)采用隊列無限模式時,對于該隊列的狀態(tài)可以自主設(shè)置成持續(xù)將隊列狀態(tài)示出為“非空”和“未滿”兩者。例如,“隊列空”(或“fifo空”)狀態(tài)值可以被自主解除斷言并且指示至少一個高速緩存行可用于讀。另外,“隊列滿”(或“fifo滿”)狀態(tài)也可以被解除斷言并且設(shè)置成指示最大數(shù)量的條目可用于寫。
無限隊列模式可以進(jìn)一步包括彈出請求920的處理。例如,由于首標(biāo)構(gòu)造邏輯將數(shù)據(jù)有效載荷大小硬編碼為一個(或另一個任意數(shù))高速緩存行,每個首標(biāo)將試圖彈出一個高速緩存行大小的數(shù)據(jù)(或使讀指針移到隊列的下一個條目),而不管對于該特定分組的數(shù)據(jù)的原始大小如何。無限隊列模式可以通過避免從數(shù)據(jù)隊列彈出數(shù)據(jù)來處理此。相反,在彈出嘗試的情況下,無限隊列模式邏輯可以阻止彈出,但通過構(gòu)造成功彈出的指示并且在數(shù)據(jù)總線上返回恒定值來欺騙請求者。例如,成功彈出可以通過在讀數(shù)據(jù)總線上指示“數(shù)據(jù)可用”(例如,使用定義的編碼,例如對于數(shù)據(jù)的整個大小讀出為全部1的恒定值)來指示。然而,在主控中止的情況下,數(shù)據(jù)可以從隊列讀出并且然后被丟棄(即,而不是使用)。
推送請求也可以由無限隊列模式邏輯處理925。在首標(biāo)奇偶錯誤事件后到達(dá)根復(fù)合體的后續(xù)事務(wù)可以嘗試將數(shù)據(jù)推送到數(shù)據(jù)隊列內(nèi)。無限隊列模式邏輯可以干預(yù)阻止(或者立即丟棄)試圖被推送的數(shù)據(jù)并且可以通過構(gòu)造對應(yīng)于接收的數(shù)據(jù)的對應(yīng)數(shù)量的信用來“欺騙”數(shù)據(jù)的始發(fā)者認(rèn)為推送成功。例如,無限隊列模式邏輯的自主數(shù)據(jù)信用處理邏輯可以對對應(yīng)于試圖被推送的數(shù)據(jù)的信用的數(shù)量計數(shù)并且促使這些信用自動返回到事務(wù)的始發(fā)者。
如上文論述的,偽首標(biāo)數(shù)據(jù)可以由根復(fù)合體處的中止邏輯識別并且促使錯誤抑制開始。此外,可以在處理的各種階段/段識別錯誤。根復(fù)合體的中止邏輯可以基于何時(即,在何階段(例如,解碼、預(yù)提取和提交)處或之前)出現(xiàn)奇偶錯誤來執(zhí)行不同功能。作為示例,如果在解碼段時或之前出現(xiàn)首標(biāo)奇偶錯誤,在檢測到奇偶錯誤時,地址解碼或轉(zhuǎn)換邏輯可以將事務(wù)解碼為“主控中止”(或另一個中止模式)而不管事務(wù)的類型和目的地如何。如果出現(xiàn)首標(biāo)奇偶錯誤,相反,在預(yù)提取時或之前但在解碼后,特定事務(wù)可以在檢測到奇偶錯誤時已經(jīng)完成解碼段,這是可能的。在該情況下,中止邏輯可以忽略目標(biāo)目的地(在解碼段中獲得的)并且進(jìn)入具有“主控中止”類型模式的自對等(spp)。也就是說,可以執(zhí)行偽預(yù)提取來使預(yù)提取流水線前進(jìn)到下一個事務(wù),例如通過使預(yù)提取指針移到下一個條目。最后,如果在提交段(例如,用于更新存儲器和/或向系統(tǒng)的余下部分呈現(xiàn)行的最新副本)時或之前并且在預(yù)提取后檢測到首標(biāo)奇偶錯誤,對于發(fā)現(xiàn)為擁有首標(biāo)奇偶錯誤的對于一致性存儲器的事務(wù),可以獲得所有權(quán)并且一致性接口邏輯可以具有高速緩存行(例如,對應(yīng)于事務(wù))的最新版本。然而,由于奇偶錯誤,中止邏輯可以拒絕處理“提交”段并且相反可以執(zhí)行提交段的“主控中止”。主控中止可以在處理的階段或段中的任一個中發(fā)生,基于檢測的首標(biāo)校驗錯誤而導(dǎo)致該段中止。在提交階段期間的主控中止可以促使首標(biāo)從首標(biāo)隊列彈出。然而,一致性邏輯仍可以保持對應(yīng)的高速緩存行。在該情景中,高速緩存行可以寫回或被給予另一個一致性代理(例如,如果對于對應(yīng)高速緩存行接收窺探)。如果事務(wù)是對于另一個i/o設(shè)備,在預(yù)提取段中可以采取動作并且因此主控中止“提交”段可以是足夠的。
在首標(biāo)奇偶錯誤的情況下,可以提供錯誤和報告邏輯,其記錄對于檢測的奇偶錯誤的特殊不可矯正的致命錯誤(例如,在每根端口基礎(chǔ)上)。在特定實現(xiàn)中,可以提供對應(yīng)錯誤邏輯來觸發(fā)中斷(或其他動作)來使錯誤升級和/或向處理核報告錯誤并且將該特定錯誤告知核(和操作系統(tǒng))。
如上文指出的,偽首標(biāo)數(shù)據(jù)在它返回其他設(shè)備時可以促使拋出其他錯誤。錯誤記錄和報告邏輯可以進(jìn)一步包括用于過濾在已經(jīng)進(jìn)入奇偶錯誤抑制模式后出現(xiàn)的錯誤的功能性。例如,因為發(fā)送到設(shè)備的分組中的一些出錯字段,錯誤可從根復(fù)合體下方的i/o設(shè)備升級。除其他潛在過濾動作外,錯誤過濾邏輯還可以允許從根復(fù)合體的下游端口過濾隱式錯誤消息(例如,過濾pcie錯誤消息(fatal、nonfatal和corr))和/或過濾來自下游端口的i/o設(shè)備的任何中斷以避免直接從設(shè)備的錯誤升級。
返回圖10,示出根據(jù)至少一些實現(xiàn)的流程圖1000,其圖示用于處理首標(biāo)奇偶錯誤的技術(shù)。例如,奇偶檢測邏輯可以檢測1005根端口或其他系統(tǒng)部件的輸入或輸出隊列中包括的首標(biāo)中的奇偶錯誤??梢詷?gòu)造1010偽首標(biāo)數(shù)據(jù)來替換其中發(fā)現(xiàn)奇偶錯誤的首標(biāo)的一個或多個(或所有)字段。可以響應(yīng)于檢測到奇偶錯誤進(jìn)入1015錯誤抑制模式并且錯誤抑制模式可以配置成允許系統(tǒng)正常關(guān)機(jī)。連同該錯誤抑制,構(gòu)造的首標(biāo)數(shù)據(jù)可以發(fā)送到目的地(例如,在偽首標(biāo)的地址字段中指示的)。錯誤抑制可以處理并且減輕從構(gòu)造的首標(biāo)的偽字段產(chǎn)生的任何殘余錯誤。
應(yīng)注意盡管上文的許多原理和示例在pcie和pcie規(guī)范的特定修訂的上下文內(nèi)描述,本文描述的原理、技術(shù)方案和特征可以同樣能適用于其他協(xié)議和系統(tǒng)。此外,注意上文描述的裝置、方法和系統(tǒng)可以在如前面提到的任何電子設(shè)備或系統(tǒng)中實現(xiàn)。作為特定說明,下文的圖提供用于利用如本文描述的本發(fā)明的示范性系統(tǒng)。由于在下文更詳細(xì)描述系統(tǒng),許多不同互連從上文的論述被公開、描述和再提及。并且如顯而易見的,上文描述的進(jìn)展可以適用于那些互連、構(gòu)造或架構(gòu)中的任一個。
參考圖11,描繪對于計算系統(tǒng)1100的框圖的實施例,該計算系統(tǒng)1100包括多處理器系統(tǒng)。如在圖11中示出的,多處理器系統(tǒng)1100是點(diǎn)到點(diǎn)互連系統(tǒng),并且包括經(jīng)由點(diǎn)到點(diǎn)1150而耦合的第一處理器1170和第二處理器1180。處理器1170和1180中的每個可以是處理器的某一版本。在一個實施例中,1152和1154是串行點(diǎn)到點(diǎn)一致性互連構(gòu)造(例如高性能架構(gòu))的部分。
盡管僅示出有兩個處理器1170、1180,要理解本發(fā)明的范圍不這樣受限制。在其他實施例中,在指定處理器中可以存在一個或多個額外處理器。
示出處理器1170和1180,其分別包括集成存儲器控制器單元1172和1182。處理器1170還包括點(diǎn)到點(diǎn)(p-p)接口1176和1178作為它的總線控制器單元的部分;相似地,第二處理器1180包括p-p接口1186和1188。處理器1170、1180可以使用p-p接口電路1178、1188經(jīng)由點(diǎn)到點(diǎn)(p-p)接口1150來交換信息。如在圖11中示出的,imc1172和1182使處理器耦合于相應(yīng)的存儲器,即存儲器1132和存儲器1134,其可以是本地附連到相應(yīng)處理器的主存儲器的部分。
處理器1170、1180每個使用點(diǎn)到點(diǎn)接口電路1176、1194、1186、1198經(jīng)由個體p-p接口1152、1154而與芯片集1190交換信息。芯片集1190還經(jīng)由接口電路1192沿高性能圖形互連1139與高性能圖形電路1138交換信息。
在任一處理器中或兩個處理器外部可以包括共享高速緩存(未示出);仍然經(jīng)由p-p互連與處理器連接,使得如果處理器被置于低功率模式則任一或兩個處理器的本地高速緩存信息都可以存儲在共享高速緩存中。
芯片集1190可以經(jīng)由接口1196耦合于第一總線1116。在一個實施例中,第一總線1116可以是外圍部件互連(pci)總線,或例如pciexpress總線或另一個第三代i/o互連總線等總線,但本發(fā)明的范圍不這樣受限制。
如在圖11中示出的,各種i/o設(shè)備1114連同總線橋1118一起耦合于第一總線1116,該總線橋1118可使第一總線1116耦合于第二總線1120。在一個實施例中,第二總線1120可以是低引腳計數(shù)(lpc)總線。各種設(shè)備耦合于第二總線1120,其包括例如鍵盤/鼠標(biāo)1122、通信設(shè)備1127和存儲單元1128,例如盤驅(qū)動器或其他大容量存儲設(shè)備,其在一個實施例中通常包括指令/代碼和數(shù)據(jù)1130。此外示出音頻i/o1124,其耦合于第二總線1120。注意其他架構(gòu)是可能的,其中包括的部件和互連架構(gòu)有改變。例如,代替圖11的點(diǎn)到點(diǎn)架構(gòu),系統(tǒng)可以實現(xiàn)多點(diǎn)總線或其他這樣的架構(gòu)。
盡管已經(jīng)關(guān)于有限數(shù)量的實施例描述本發(fā)明,本領(lǐng)域內(nèi)技術(shù)人員將意識到從其中的許多修改和變化。規(guī)定附上的權(quán)利要求涵蓋所有這樣的修改和變化,它們落入本發(fā)明的真正精神和范圍內(nèi)。
設(shè)計可以經(jīng)歷各種階段,從創(chuàng)建到模擬到制造。代表設(shè)計的數(shù)據(jù)可以采用許多方式來代表該設(shè)計。首先,如在模擬中有用的,硬件可以使用硬件描述語言(hdl)或另一個功能描述語言來表示。另外,具有邏輯和/或晶體管門的電路級模型可在設(shè)計過程的某些階段產(chǎn)生。此外,大部分設(shè)計在某個階段達(dá)到代表硬件模型中各種設(shè)備的物理布局的數(shù)據(jù)水平。在其中使用常規(guī)半導(dǎo)體制造技術(shù)的情況下,代表硬件模型的數(shù)據(jù)可以是規(guī)定對用于生產(chǎn)集成電路的掩模的不同掩模層上的各種特征存在或不存在的數(shù)據(jù)。在設(shè)計的任何表示中,數(shù)據(jù)可以采用機(jī)器可讀介質(zhì)的任何形式存儲。存儲器或磁或光存儲(例如盤)可以是機(jī)器可讀介質(zhì),其存儲信息,該信息經(jīng)由光或電波來傳送,調(diào)制或用別的方式產(chǎn)生該光或電波來傳送這樣的信息。當(dāng)傳送指示或攜帶代碼或設(shè)計的電載波時,就執(zhí)行電信號的復(fù)制、緩沖或重傳來說,形成新的副本。從而,通信提供商或網(wǎng)絡(luò)提供商可以將例如編碼到載波內(nèi)的體現(xiàn)本發(fā)明的實施例的技術(shù)的信息等物品存儲在有形、機(jī)器可讀介質(zhì)上(至少暫時地)。
如本文使用的模塊指硬件、軟件和/或固件的任何組合。作為示例,模塊包括硬件,例如微控制器,其與非暫時性介質(zhì)關(guān)聯(lián)來存儲適于由該微控制器執(zhí)行的代碼。因此,在一個實施例中對模塊的引用指硬件,其具體配置成識別和/或執(zhí)行在非暫時性介質(zhì)上保持的代碼。此外,在另一個實施例中,模塊的使用指包括代碼的非暫時性介質(zhì),該代碼具體適于由微控制器執(zhí)行來執(zhí)行預(yù)定的操作。并且如可以推斷的,在再另一個實施例中,術(shù)語模塊(在該示例中)可指微控制器和非暫時性介質(zhì)的組合。通常,圖示為分開的模塊邊界通常變化并且潛在地重疊。例如,第一和第二模塊可以共享硬件、軟件、固件,或其組合,同時潛在地保留一些獨(dú)立的硬件、軟件或固件。在一個實施例中,術(shù)語邏輯的使用包括例如晶體管、寄存器等硬件或例如可編程邏輯設(shè)備等其他硬件。
在一個實施例中,短語‘配置成’的使用指設(shè)置、裝配、制造、開價銷售、進(jìn)口和/或設(shè)計裝置、硬件、邏輯或元件來執(zhí)行指定或確定的任務(wù)。在該示例中,不在操作的裝置或其元件如果它被設(shè)計、耦合和/或互連來執(zhí)行所述指定任務(wù)則仍然‘配置成’執(zhí)行指定任務(wù)。作為純粹說明性的示例,邏輯門在操作期間可以提供0或1。但‘配置成’向時鐘提供使能信號的邏輯門不包括可以提供1或0的每個潛在的邏輯門。相反,邏輯門是采用在操作期間1或0輸出要啟用時鐘的某個方式所耦合的邏輯門。再一次注意術(shù)語‘配置成’的使用不要求操作,而相反集中在裝置、硬件和/或元件的潛在狀態(tài),其中在潛在狀態(tài)中,裝置、硬件和/或元件設(shè)計成當(dāng)裝置、硬件和/或元件在操作時執(zhí)行特定任務(wù)。
此外,在一個實施例中,短語‘用于’、‘能夠’和或‘可操作成’的使用指某種裝置、邏輯、硬件和/或元件采用能夠以采用規(guī)定方式使用該裝置、邏輯、硬件和/或元件這樣的方式設(shè)計。如上文指出,用于、能夠或可操作成在一個實施例中的使用指裝置、邏輯、硬件和/或元件的潛在狀態(tài),其中裝置、邏輯、硬件和/或元件不在操作但采用能夠采用規(guī)定的方式使用設(shè)備這樣的方式設(shè)計。
如本文使用的值包括數(shù)字、狀態(tài)、邏輯狀態(tài)或二進(jìn)制邏輯狀態(tài)的任何已知表示。通常,邏輯水平、邏輯值或邏輯上的值的使用也稱為1和0,其簡單地表示二進(jìn)制邏輯狀態(tài)。例如,1指高邏輯水平并且0指低邏輯水平。在一個實施例中,例如晶體管或閃存單元等存儲單元可能夠保持單個邏輯值或多個邏輯值。然而,在計算機(jī)系統(tǒng)中使用值的其他表示。例如,十進(jìn)制數(shù)字十也可表示為1010的二進(jìn)制值和十六進(jìn)制字母a。因此,值包括能夠保持在計算機(jī)系統(tǒng)中的信息的任何表示。
此外,狀態(tài)可以由值或值的部分表示。作為示例,例如邏輯一等的第一個值可以代表默認(rèn)或初始狀態(tài),而例如邏輯零等的第二個值可以代表非默認(rèn)狀態(tài)。另外,術(shù)語重設(shè)和設(shè)置在一個實施例中分別指默認(rèn)和更新的值或狀態(tài)。例如,默認(rèn)值潛在地包括高邏輯值,即重設(shè),而更新值潛在地包括低邏輯值,即設(shè)置。注意可以使用值的任何組合來代表任何數(shù)量的狀態(tài)。
上文闡述的方法、硬件、軟件、固件或代碼的實施例可以經(jīng)由存儲在機(jī)器可訪問、機(jī)器可讀、計算機(jī)可訪問或計算機(jī)可讀介質(zhì)上、由處理元件可執(zhí)行的指令或代碼實現(xiàn)。非暫時性機(jī)器可訪問/可讀介質(zhì)包括采用由例如計算機(jī)或電子系統(tǒng)等機(jī)器可讀的形式提供(即,存儲和/或傳送)信息的任何機(jī)構(gòu)。例如,非暫時性機(jī)器可訪問介質(zhì)包括隨機(jī)存取存儲器(ram),例如靜態(tài)ram(sram)或動態(tài)ram(dram);rom;磁或光存儲介質(zhì);閃速存儲器設(shè)備;電存儲設(shè)備;光存儲設(shè)備;聲存儲設(shè)備;用于保持從暫時(傳播的)信號(例如,載波、紅外信號、數(shù)字信號)(其要與可從其處接收信息的非暫時性介質(zhì)區(qū)別開)接收的信息的其他形式的存儲設(shè)備;等。
用于對邏輯編程來執(zhí)行本發(fā)明的實施例的指令可以存儲在系統(tǒng)中的存儲器內(nèi),例如dram、高速緩存、閃速存儲器或其他存儲等。此外,指令可以經(jīng)由網(wǎng)絡(luò)或通過其他計算機(jī)可讀介質(zhì)而分發(fā)。從而機(jī)器可讀介質(zhì)可以包括用于采用由機(jī)器(例如,計算機(jī))可讀的形式存儲或傳送信息的任何機(jī)構(gòu),但不限于軟盤、光盤、壓縮盤只讀存儲器(cd-rom)和磁光盤、只讀存儲器(rom)、隨機(jī)存取存儲器(ram)、可擦除可編程只讀存儲器(eprom)、電可擦除可編程只讀存儲器(eeprom)、磁或光卡、閃速存儲器或有形的機(jī)器可讀存儲,其在經(jīng)由電、光、聲或其他形式的傳播信號(例如,載波、紅外信號、數(shù)字信號等)通過互聯(lián)網(wǎng)傳送信息中使用。因此,計算機(jī)可讀介質(zhì)包括任何類型的有形機(jī)器可讀介質(zhì),其適合于采用由機(jī)器(例如,計算機(jī))可讀的形式存儲或傳送電子指令或信息。
下面的示例關(guān)于根據(jù)該說明書的實施例。一個或多個實施例可以提供裝置、系統(tǒng)、機(jī)器可讀存儲、機(jī)器可讀介質(zhì)、基于硬件和/或軟件的邏輯和方法,用于檢測首標(biāo)中的奇偶錯誤,其中首標(biāo)在多個隊列的特定隊列中,首標(biāo)用于包括多個字段,并且隊列中的每個用于對應(yīng)于相應(yīng)的事務(wù)類型。另外,構(gòu)造的首標(biāo)數(shù)據(jù)可以對多個字段中的一個或多個生成來指示奇偶錯誤并且替換多個字段中的一個或多個的數(shù)據(jù),并且可以基于奇偶錯誤進(jìn)入錯誤抑制模式。
在一個示例中,字段的至少一個特定字段要用構(gòu)造的首標(biāo)數(shù)據(jù)編碼來防止特定字段中的不合法值。
在一個示例中,不合法值由于損壞特定字段的值的奇偶錯誤而產(chǎn)生。
在一個示例中,首標(biāo)包括事務(wù)層分組的首標(biāo)。
在一個示例中,多個字段包括格式字段、類型字段、長度字段、地址字段、請求者標(biāo)識符字段和標(biāo)簽字段。
在一個示例中,構(gòu)造的首標(biāo)數(shù)據(jù)包括:對于格式和類型字段,對應(yīng)于特定隊列的事務(wù)類型的值;對于長度字段,第一恒定值;以及對于地址字段,在系統(tǒng)地址空間外的第二恒定值,其中請求者標(biāo)識符字段和標(biāo)簽字段的值要保留。
在一個示例中,奇偶錯誤要基于第二恒定值來識別。
在一個示例中,多個字段進(jìn)一步包括字節(jié)使能字段和錯誤/已破壞字段。構(gòu)造的首標(biāo)數(shù)據(jù)可以包括:對于字節(jié)使能字段,第三恒定值;并且對于錯誤/已破壞字段,假值。
在一個示例中,構(gòu)造的首標(biāo)數(shù)據(jù)用于維持多個字段的至少特定字段的值。
在一個示例中,過濾器防止由于在下游i/o設(shè)備處觸發(fā)錯誤的特定字段中的構(gòu)造的首標(biāo)數(shù)據(jù)而產(chǎn)生的錯誤升級。
在一個示例中,特定隊列包括首標(biāo)隊列并且在錯誤抑制模式期間,錯誤處理部件(handler)用于刷新對應(yīng)于首標(biāo)隊列的數(shù)據(jù)隊列、繼奇偶錯誤后提供對于事務(wù)的信用以及將對于數(shù)據(jù)隊列的隊列狀態(tài)信號設(shè)置為恒定值。信用可以響應(yīng)于隊列刷新而返回,以返回對應(yīng)于從數(shù)據(jù)隊列刷新的事務(wù)的信用。
在一個示例中,錯誤抑制模式包括處理彈出請求和處理推送請求。
在一個示例中,可以提供錯誤報告器來記錄奇偶錯誤。
在一個示例中,錯誤抑制模式用于允許在檢測奇偶錯誤時未決的事務(wù)在系統(tǒng)關(guān)機(jī)之前繼續(xù)進(jìn)行。
一個或多個實施例可以提供裝置、系統(tǒng)、機(jī)器可讀存儲、機(jī)器可讀介質(zhì)、基于硬件和/或軟件的邏輯,其包括根復(fù)合體,該根復(fù)合體具有多個首標(biāo)隊列和多個有效載荷數(shù)據(jù)隊列。每個隊列對應(yīng)于相應(yīng)事務(wù)類型,并且根復(fù)合體用于檢測首標(biāo)隊列的特定隊列中的首標(biāo)中的奇偶錯誤、對首標(biāo)的多個字段生成構(gòu)造的首標(biāo)數(shù)據(jù)來替換多個字段的數(shù)據(jù)以基于奇偶錯誤防止字段中的至少一個的不合法值并且將具有構(gòu)造的首標(biāo)數(shù)據(jù)的分組發(fā)送到另一個系統(tǒng)部件。
一個或多個實施例可以提供裝置、系統(tǒng)、機(jī)器可讀存儲、機(jī)器可讀介質(zhì)、基于硬件和/或軟件的邏輯,其包括一個或多個i/o設(shè)備和通信耦合于該一個或多個i/o設(shè)備的根復(fù)合體。根復(fù)合體用于檢測首標(biāo)隊列的特定隊列中的首標(biāo)中的奇偶錯誤、對首標(biāo)的一個或多個字段生成構(gòu)造的首標(biāo)數(shù)據(jù)來指示奇偶錯誤并且替換多個字段中的一個或多個的數(shù)據(jù)、促使進(jìn)入錯誤抑制模式并且將包括構(gòu)造的首標(biāo)數(shù)據(jù)的分組發(fā)送到另一個系統(tǒng)部件。根復(fù)合體可以進(jìn)一步包括多個隊列,其包括輸入隊列和輸出隊列。
在該整個說明書中對“一個實施例”或“實施例”的引用意指連同實施例描述的特定特征、結(jié)構(gòu)或特性包括在本發(fā)明的至少一個實施例中。從而,短語“在一個實施例中”或“在實施例中”在該整個說明書中各種地方的出現(xiàn)不一定都指相同的實施例。此外,特定特征、結(jié)構(gòu)或特性可以采用任何適合的方式在一個或多個實施例中組合。
在前面的說明書中,參考特定示范性實施例給出詳細(xì)描述。然而,可對其做出各種修改和改變而不偏離如附上的權(quán)利要求中闡述的本發(fā)明更廣泛的精神和范圍,這將是明顯的。說明書和附圖因此要在說明性意義而非限制性意義上考慮。此外,實施例和其他示范性語言在前面的使用不一定都指相同的實施例或相同的示例,而可指不同且獨(dú)特的實施例,以及潛在地可以指相同的實施例。