路徑106進行處理器104與存儲器102之間的主通信,而通過帶外第二通信路徑108進行錯誤信息的通信。
[0052]圖2是根據實施例的具有包括控制器的存儲器系統架構的系統的示意圖。在本實施例中,系統200包括與圖1的存儲器102、處理器104、通信路徑106和108以及軟件110相似的存儲器202、處理器204、通信路徑206和208以及軟件210。然而,第二通信路徑208包括結合在控制器214與存儲器202之間的第一總線212以及結合在控制器214與處理器204之間的第二總線216。換言之,與處理器204和存儲器202兩者結合的控制器214是第二通信路徑208的一部分。
[0053]控制器214可以是被配置為可操作地結合到存儲器202和處理器204的任何裝置。例如,控制器214可以包括通用處理器、數字信號處理器(DSP)、專用集成電路、可編程邏輯駐g筆
目.寸ο
[0054]總線212和216可以是任何種類的通信鏈路。例如,總線212和216可以是系統管理總線(SMBus)、集成電路間(I2C)總線、智能平臺管理接口(IPMI)兼容總線、Modbus總線等。在具體實施例中,通信路徑208的至少一部分可實質上比通信路徑206慢。例如,可以將存儲器202與處理器204之間的通信路徑206設計為大約lOGB/s的較高數據傳輸速率,然而,通信路徑208可以具有大約10Mbit/s或100kbit/s等的較低數據傳輸速率。因此,在一些實施例中,通信路徑206與通信路徑208的數據傳輸速度的比例可以為大約100、1000或者更多。
[0055]在實施例中,第二通信路徑208可以是專用通信路徑。即,第二通信路徑208可僅被用于信息在存儲器202與處理器204之間的通信。然而,在其他實施例中,控制器214可以允許其他裝置訪問。例如,非存儲器裝置268可以通過總線212結合到控制器214。在另一個實施例中,其他裝置266可以結合到控制器214。因此,可以經過總線212和/或總線216來向處理器204和/或存儲器202發送除了來自存儲器202的信息之外的信息,并且可以經過總線212和/或總線216從處理器204和/或存儲器202接收所述信息。具體地講,可以經過用于包括非存儲目的的其他目的的第二通信路徑208將來自存儲器202的錯誤信息通信到處理器204。
[0056]在實施例中,控制器214可以包括非易失性存儲器254。非易失性存儲器254可以被配置為存儲來自存儲器202的錯誤信息。因此,錯誤信息可以在斷電時保留在控制器214中。處理器204可以被配置為向控制器214請求錯誤信息。因此,控制器214可被配置為通過提供存儲在非易失性存儲器254中的錯誤信息來響應這樣的請求,通過訪問存儲器202來檢索錯誤信息從而響應控制器204等。
[0057]在實施例中,控制器214可以被配置為對存儲器202進行輪詢(poll)以獲取錯誤信息。在另一個實施例中,存儲器202可以被配置為向控制器214推送錯誤信息。不論如何,存儲在非易失性存儲器254中的錯誤信息可以基本上是最新(up-to-date)的拷貝。
[0058]圖3是根據實施例的具有包括基板(baseboard)管理控制器的存儲器系統架構的系統的示意圖。在本實施例中,系統300包括與圖2的存儲器202、處理器204、通信路徑206和208以及軟件210相似的存儲器302、處理器304、通信路徑306和308以及軟件310。然而,控制器314是基板管理控制器(BMC)314。
[0059]BMC 314可以被配置為管理系統300。例如,BMC 314可以結合到系統300的各種傳感器,包括處理器304的傳感器、存儲器302的傳感器、其他裝置366的傳感器等。BMC 314可以被配置為收集和報告各種系統參數(諸如溫度、冷卻狀態、電力狀態等)』MC 314可以被配置為管理系統并且根據標準來允許對信息的訪問。管理信息可變成可用于處理器304,從而管理信息可用于軟件310。可選擇地,BMC 314可以通過諸如帶外通信路徑的另一條通信路徑來使所述信息變成可使用。這里,帶外通信路徑可以包括不包括處理器304的任何通信路徑。
[0060]圖4是根據實施例的具有不包含基于處理器的糾錯(processor-based errorcorrect1n)的存儲器系統架構的系統的示意圖。在本實施例中,系統400包括與圖1的存儲器102、處理器104、通信路徑106和108以及軟件110相似的存儲器402、處理器404、通信路徑406和408以及軟件410。然而,在本實施例中,處理器404包括存儲器控制器(MC)450和機器檢查架構(MCA)寄存器452。
[0061]存儲器控制器450與處理器404集成在一起。存儲器控制器450可以是作為處理器404與存儲器402之間的接口的主存儲通道的一部分。存儲器控制器450被配置為控制通過通信路徑406對于存儲在存儲器402中的數據的訪問。在一些實施例中,存儲器控制器450可以被配置為糾正錯誤,但是沒有機會糾正例如可能已經被存儲器402執行了糾錯的錯誤。然而,在本實施例中,存儲器控制器450沒有被配置為糾正從存儲器402讀取的數據中的錯誤。存儲器控制器405可不被配置為報告基于從存儲器402讀取的數據的任何錯誤信息。
[0062]MCA寄存器452是可以報告硬件錯誤的寄存器。例如,高速緩沖存儲器錯誤、總線錯誤、數據錯誤等可被MCA寄存器452檢測并報告。然而,因為存儲器控制器450沒有被配置為糾正從存儲器402讀取的數據中的錯誤,所以MCA寄存器452不會報告基于從存儲器402讀取的數據的任何潛在的錯誤信息。無論如何,如上所述,錯誤信息可通過通信路徑408被傳送給處理器404。因此,即使沒有通過存儲器控制器450和MCA寄存器452,錯誤信息對于軟件410仍然是可使用的。
[0063]在實施例中,錯誤信息通過第二通信路徑408的可使用性可以使系統400的成本較低。例如,可以使用具有存儲器控制器450而不具有任何存儲器糾錯的處理器404,而錯誤信息仍然可以是可使用的。具體地講,即使期望存儲器糾錯,因為通過第二通信路徑408可使用錯誤信息,所以也可以使用不具有存儲器糾錯的處理器404。因此,包括使用錯誤信息的任何軟件的軟件410仍然可以像處理器404能夠進行存儲器糾錯那樣操作。因此,不具有存儲器糾錯的處理器404可以是功率較低、成本較低的處理器。因此,可以降低系統400的總體功率使用和/或成本。
[0064]雖然存儲器控制器450已經被示出為與處理器404集成在一起,但是存儲器控制器450可以與處理器404分離。無論如何,通信路徑408可以繞開存儲器控制器450和處理器404的可能已經另有糾錯電路的其他部分。這樣的組件的旁路使通過第二通信路徑408的傳送錯誤信息基本上獨立于存儲器控制器450、MCA寄存器452等的特征。即,即使相似的信息通過存儲器控制器450和/或MCA寄存器452是不可使用的,錯誤信息也仍然可以是可使用的。
[0065]圖5是根據實施例的具有包含有毒數據選通信號的存儲器系統架構的系統的示意圖。在本實施例中,系統500包括與圖1的存儲器102、處理器104、通信路徑106和108以及軟件110相似的存儲器502、處理器504、通信路徑506和508以及軟件510。然而,在本實施例中,通信路徑506包括數據線532和數據選通線533。可存在其他線作為通信路徑506的一部分;然而,為了清楚起見,沒有示出這些線。
[0066]在實施例中,可以通過不同的路徑來對與不可糾正的錯誤有關的錯誤信息以及與可糾正的錯誤有關的錯誤信息進行通信。如上所述,可以通過通信路徑508來對可糾正的錯誤信息進行通信。不可糾正的錯誤信息可以基于不可糾正的錯誤而包括各種不同類型的信息。可以通過第一通信路徑506來對不可糾正的錯誤信息進行通信。例如,存儲器裝置502可被配置為通過經過數據選通線533發送(或未發送)的信號來對不可糾正的錯誤進行通信。即,在正常的數據傳輸期間,因數據被傳輸,經過數據選通線533發送的數據選通信號可被觸發;然而,如果存儲器502已經檢測到了不可糾正的錯誤,則存儲器502可以被配置為生成與正常數據傳輸期間的數據選通信號不同的用于經過數據選通線533發送的數據選通信號。在具體示例中,存儲器502可被配置為不觸發通過數據選通線533發送的數據選通信號。當檢測到這樣的情形時,處理器504可以被配置為發生硬件異常,該硬件異常可以由軟件510來處理。
[0067]雖然已經使用通信路徑506內的信號和/或線的具體示例作為對不可糾正的錯誤進行通信的技術的示例,但是可以使用其他信號和/或線將不可糾正的錯通信給處理器504。不論如何通信,處理器504均被配置為諸如通過使系統500停止或采取另一種措施來響應這樣的不可糾正的錯誤的通信。
[0068]圖6是根據實施例的具有包含單獨的不可糾正錯誤信號的存儲器系統架構的系統的示意圖。在本實施例中,系統600包括與圖1的存儲器102、處理器104、通信路徑106和108以及軟件110相似的存儲器602、處理器604、通信路徑606和608以及軟件610。然而,在本實施例中,單獨的通信路徑634結合在存儲器602與處理器604之間。
[0069]與圖5的系統500類似,可以將不可糾正的錯誤通信到處理器604。在本實施例中,存儲器602被配置為經過第三通信路徑634來對不可糾正的錯誤信息進行通信。例如,第三通信路徑634可以是與第一通信路徑606分開的專用線。因此,關于不可糾正的錯誤的錯誤信息可被處理器604接收,只是通過第一通信路徑606和第二通信路徑608之外的通信路徑來接收。
[0070]圖7是根據實施例的具有包含軟件模塊的存儲器系統架構的系統的示意圖。在本實施例中,系統700包括與圖1的存儲器102、處理器104、通信路徑106和108以及軟件110相似的存儲器702、處理器704、通信路徑706和708以及軟件710。然而,在本實施例中,軟件710包括模塊718。
[0071 ]模塊718代表軟件710的被配置為通過處理器訪問錯誤信息722的部分。例如,模塊718可以包括內核模塊、驅動器、擴展等。模塊718可以包括用于與通信路徑708相關聯的接口的驅動器。在具體示例中,模塊718可以包括與IPMI總線、IPMI2總線等關聯的驅動器。其他信息720還可以對于軟件710是可使用的。錯誤信息722被單獨示出以表示軟件710的哪個部分與錯誤信息722關聯。
[0072]在實施例中,模塊718可以引發處理器704向存儲器702請求錯誤信息。例如,存儲器702可以生成錯誤信息。不久以后,處理器704可以通過通信路徑708發送針對錯誤信息的請求。存儲器702可以被配置為通過通信路徑708用錯誤信息來響應該請求。
[0073]圖8是根據實施例的具有包含錯誤檢測和糾正模塊的存儲器系統架構的系統的示意圖。在本實施例中,系統800包括與圖7的存儲器702、處理器704、通信路徑706和708以及具有響應于信息720和722的模塊718的軟件710相似的存儲器802、處理器804、通信路徑806和808以及具有響應于信息820和822的模塊818的軟件810。然而,在本實施例中,軟件810還包括錯誤檢測和糾正(EDAC)模塊824。
[0074]在實施例中,EDAC模塊可以被配置為管理來自系統800的存儲器、高速緩沖存儲器、輸入/輸出(I/o)裝置、外設、總線和/或其他方面的錯誤信息,并且可以被配置為向諸如應用層的更高的功能性層暴露這樣的信息。具體地講,EDAC模塊824可以被配置為從模塊818接收錯誤信息。EDAC模塊824可以被配置為將錯誤信息與其他信息組合,使得其他模塊、應用等可以訪問錯誤信息。
[0075]圖9是根據實施例的具有包含聚合模塊的存儲器系統架構的系統的示意圖。在本實施例中,與圖7的存儲器702、處理器704、通信路徑706和708以及具有響應于信息720和722的模塊718的軟件710相似,系統900包括存儲器902、處理器904、通信路徑906和908以及具有響應于信息920和922的第一模塊918的軟件910。然而,在本實施例中,軟件910還包括第二模塊926。第二模塊926被配置為接收信息920。具體地講,這個其他信息920可以包括與存儲器902上錯誤無關的信息。可以由第一模塊918來接收其他信息920的至少一部分921。第一模塊918可以被配置為將錯誤信息922與來自第二模塊926的一些或全部其他信息920的進行組合。第一模塊918可以被配置為用單個接口來提供組合后的信息。例如,第一模塊918可以被配置為向諸如圖8的EDAC模塊824的EDAC模塊提供組合后的信息。
[0076]圖10是根據實施例的具有包含從存儲器控制架構模塊聚合信息的糾錯模塊的存儲器系統架構的系統的示意圖。在本實施例中,系統1000包括與圖9的存儲器902、處理器904、通信路徑906和908以及具有響應于信息920和922的模塊918的軟件910相似的存儲器1002、處理器1004、通信路徑1006和1008以及具有響應于信息1020和1022的模塊1018和1026的軟件11。然而,在本實施例中,模塊1018是糾錯(EC)模塊1018,模塊1026是MCA模塊1026。
[