專利名稱:事件傳送的制作方法
技術領域:
本發明涉及計算機系統中的事件傳送。
背景技術:
處理器和芯片組通常使用事件信號互相通知事件。為了支持事件信號,處理器和芯片組都具有用于發送和接收事件信號的引腳。然而,存在有各種獨立的原因,需要消除或減少事件信號的數量。其中一個消除或減少事件信號的數量的原因是為了減少生產成本,所述的生產成本與用于接收和發送事件信號的引腳有關。由于封裝或焊點的限制,處理器和芯片組的引腳勢必是有限的。如果處理器或芯片組的管芯是焊點受限的,那么額外的焊點會導致芯片尺寸的直接增加。即使管芯是限定的樣芯,分離所述的焊點也允許焊點加電或接地,從而提高封裝的電特性。
另一個原因是,在單機環境中,事件信號的布線是困難的,并且在多處理器環境中更加困難。一般來講,事件信號線的物理布線限定了母板的尺寸。減少事件信號和與其相應的事件信號線的數量可以幫助縮小板子的尺寸。另一個消除或減少事件信號的原因是減少與支持事件信號的上拉電阻和電源平面相關聯的成本。由于芯片組和處理器之間的電壓差,芯片組通常需要外部上拉電阻或額外的電源平面,來支持不同的電壓范圍之間的遺留事件信號。消除遺留事件信號可以通過消除或減少上拉電阻的數量而節約電力,或可以降低芯片組上的電源平面的數量。
另一個消除事件信號的原因是,這些事件信號的消除是很容易測試的。因為處理器和芯片組使用了不同的時鐘頻率,所以從處理器的角度來看,遺留事件信號通常是異步信號。事件信號的異步性質妨礙了使用更少成本的、確定性的測試技術來使平臺有效。
發明內容
根據本發明的一個方面,提供一種裝置,包括用于將與事件相關聯的事件信號進行傳送的引腳,用于傳送總線消息的總線接口,
用于為所述事件選擇傳送機制的選擇寄存器,和事件處理器,用于通過總線的虛擬線路消息處理所述的事件,以響應為所述的事件選擇虛擬線路消息傳送的選擇寄存器,并且用于通過引腳的事件信號處理所述的事件,以響應為事件選擇引腳傳送的選擇寄存器。
根據本發明的一個方而,提供一種方法,包括確定事件傳送機制,該機制通常由處理器和芯片組加以支持,并且根據處理器和芯片組通常所支持的事件傳送機制,為事件選擇事件傳送機制。
根據本發明的一個方面,提供一種包括多條指令的機器可讀介質,所述多條指令,響應計算裝置的執行,使得計算裝置執行如下的操作確定處理器支持的事件傳送機制,確定芯片組支持的事件傳送機制,和根據處理器和芯片組通常支持的事件傳送機制,為多個事件中的每一個選擇事件傳送機制。
根據本發明的一個方面,提供一種系統,包括一處理器,包括一總線接口,用于接收虛擬線路消息,和一事件處理器,用于對經由總線接口接收的虛擬線路消息進行譯碼。
一芯片組,包括一總線接口,用于發送虛擬線路消息,和一事件處理器,用于構造虛擬線路消息,以便報告多個事件的狀態,和一總線,用于將處理器的總線接口連接到芯片組的總線接口,并在它們之間傳送虛擬線路消息。
在此描述的本發明是以舉例說明的方式進行說明的,并且不僅限于附圖中的方法。為簡單和清楚的進行說明,附圖中示出的元件不一定按比例繪制。例如,為了清楚起見,相對于其它元件來講,一些元件的尺寸可能被放大。此外,在被認為適當的地方,參考標記在附圖中被重復,以便表示相應或類似的元件。
圖1所示為一個計算裝置的實施例。
圖2所示為圖1中的計算裝置的能力寄存器的實施例。
圖3所示為圖1中的計算裝置的選擇寄存器的實施例。
圖4所示為圖1中的計算裝置的中斷消息的實施例。
圖5所示為圖1中的計算裝置的虛擬線路消息的實施例。
圖6所示為圖1中的計算裝置的初始化的方法的實施例。
圖7所示為圖1中的計算裝置的事件傳送方法的實施例。
具體實施例方式
下面的說明描述了傳送事件的技術,該技術可以消除或減少計算裝置中的事件信號。在下面的說明中,有很多細節,比如邏輯實現、操作碼、用于指定操作數的裝置、資源劃分/共享/復制實現、系統部件的類型和相互關系、以及邏輯劃分/集成選擇都加以展示了,以便提供對本發明的更徹底理解。然而,本發明在沒有上述細節的條件下也可以加以實踐。在其它情況下,為了不使本發明變得模糊,沒有詳細描述控制結構、門級電路和全部軟件指令序列。
說明書中提及的″一個實施例″、″實施例″、″典型實施例″等等都表明所描述的實施例可以包括具體的特征、結構或特征,但是每個實施例也不一定包括具體的特性、結構或特性。此外,上述字句不一定是指相同的實施例。此外,當具體的特性、結構或特征結合了實施例進行說明時,無論是否明確地說明結合了其它的實施例,都被認為是所屬技術領域內的特性、結構。
本發明的實施例可以以硬件、固件、軟件或它們的任意組合的方式來實現。本發明的實施例還可以以存儲在機器可讀介質上的指令的形式實現,所述指令可以由一個或多個處理器讀取和執行。一個機器可讀介質可以包括如下的任意機制,所述機制可以以機器(例如,計算裝置)可讀的形式存儲或發送信息。例如,機器可讀介質可以包括只讀存儲器(ROM)、隨機存取存儲器(RAM)、磁盤存儲介質、光存儲介質、閃速存儲器裝置、電的、光的、聲音的或由傳播信號的其他形式(例如,載波、紅外信號、數字信號等等)以及其它。
計算裝置100的一個典型實施例如圖1所示。計算裝置100可以包括處理器102,該處理器102通過處理器總線106連接到芯片組104。在一個實施例中,處理器102還可以通過事件信號線108連接到芯片組104,所述的事件信號線108被連接在處理器102的一個或多個引腳110和芯片組104的一個或多個引腳112。
處理器102可以包括處理器總線接口114,處理器總線接口114用于發出或接收在處理器總線106上的事務。在一個實施例中,處理器總線接口114可以在處理器總線106上發出或接收虛擬線路消息,所述的虛擬線路消息描述了一個或多個事件的發生。此外,處理器總線接口114可以在處理器總線106上發出或接收中斷消息,所述的中斷消息說明了一個或多個中斷事件的發生。
處理器102還可以包括事件處理器116,事件處理器116通過處理器總線接口114連接到處理器總線106,還通過一個或多個處理器引腳110連接到事件信號線108。事件處理器116可以將由處理器102產生的事件或檢測到的事件通知芯片組104。此外,事件處理器116可以接收由芯片組104產生的事件或由芯片組104檢測到的事件。
在一個實施例中,事件處理器116包括一個虛擬線路消息單元118,該虛擬線路消息單元118產生虛擬線路消息,并將虛擬線路消息發送到芯片組104。此外,虛擬線路消息單元118可以對從芯片組104接收的虛擬線路消息進行譯碼。虛擬線路消息單元118可以通過處理器總線106和處理器總線接口114發送或接收虛擬線路消息。在另一個實施例中,虛擬線路消息單元118還可以通過虛擬線路消息總線(未示出)發送或接收虛擬線路消息,所述的虛擬線路消息總線獨立于處理器總線106。
處理器102的事件處理器116還可以包括一個中斷控制器120。中斷控制器120可以產生一個中斷消息,所述的中斷消息被發送到芯片組104,并且中斷控制器120可以對從芯片組104接收的中斷消息進行譯碼。在一個實施例中,中斷控制器120可以通過處理器總線106和處理器總線接口114發送或接收中斷消息。在另一個實施例中,中斷控制器120還可以通過一個或多個處理器引腳110和相關的事件信號線108發送或接收一個中斷消息。
處理器102的事件處理器116還可以包括一個或多個事件寄存器122。在一個實施例中,處理器事件寄存器122可以包括能力寄存器124、選擇寄存器126、狀態寄存器128和控制寄存器130。處理器能力寄存器124可以表示處理器102所支持的事件處理的能力。例如,處理器能力寄存器124可以表示處理器102所支持的如下處理經由虛擬線路消息的第一事件(例如INTR事件)、中斷消息、和與處理器引腳110相關聯的事件信號;經由虛擬線路消息的第二事件(例如FERR#_事件)和與處理器引腳110相關聯的事件信號;經由與處理器引腳110相關聯的第三事件(例如INIT事件)。
處理器事件寄存器122的選擇寄存器126可以用來為相關聯的事件選擇傳送機制。例如,選擇寄存器126可以用來選擇經由中斷消息進行第一事件(例如INTR事件)的傳送;經由虛擬線路消息進行第二事件(例如FERR#_事件)的傳送;經由與處理器引腳110(例如INIT引腳)相關聯的事件信號進行的第三事件(例如INIT事件)的傳送。
處理器102的狀態寄存器128和控制寄存器130分別可以提供事件狀態和事件控制。在一個實施例中,處理器102的狀態寄存器128可以表示哪些事件是有效的(掛起的)和哪些事件是無效的(未掛起的)。處理器102的控制寄存器130可以用來啟用事件或禁止事件。此外,控制寄存器130可以用于以電平觸發或邊緣觸發的形式定義事件。在一個實施例中,控制寄存器130分別可以支持電平觸發或邊緣觸發定義的事件。
現在對芯片組104進行說明,芯片組104通常可以通過一個或多個封裝的集成電路器件或組成芯片組104的芯片將處理器102連接到存儲器132和其它部件134(例如鼠標、鍵盤、視頻控制器、硬盤、軟盤、固件等等)。在一個實施例中,芯片組104可以包括一個存儲器控制器136,該存儲器控制器136通過存儲器總線138連接到存儲器132。存儲器控制器136可以給計算裝置100的處理器102和其它部件134提供對存儲器132的存儲單元的訪問。存儲器132可以包括如下的各種儲存裝置,這些存儲裝置提供了如下的可尋址的存儲單元,存儲器控制器136可以從這些可尋址的存儲單元讀出數據,或將數據寫入到這些可尋址的存儲單元。此外,存儲器132可以包括一種或多種不同類型的存儲器裝置,例如動態隨機存取存儲器(DRAM)裝置、同步動態隨機存取存儲器(SDRAM)裝置、雙倍數據傳送率(DDR)SDRAM裝置、四倍數據傳送率(QDR)SDRAM裝置或其它易失性的或非易失性的存儲器裝置。
芯片組104還可以包括一個處理器總線接口140,用于通過處理器總線106,直接和處理器102通信。芯片組104還可以包括部件接口142,用于通過總線144直接同其他部件134進行通信,總線144例如是外設部件互連(PCI)總線、圖形加速端口(AGP)總線、通用串行總線(USB)總線、低位引腳計數(LPC)總線,或其它I/O總線。
在一個實施例中,其他部件134可以包括一個基本輸入/輸出系統(BIOS)固件146,固件146通過LPC總線連接到芯片組104。BIOS146可以提供如下的指令和例程,這些指令和例程可以由處理器102執行。通常,在執行計算裝置100的操作系統之前,由BIOS 146提供的例程被用來對計算裝置100的部件進行訪問和初始化。然而,在一些實施例中,計算裝置100可以在調用執行操作系統之后,執行BIOS 146的例程,以便執行其它任務。
芯片組104還可以包括一個事件處理器148,事件處理器148通過處理器總線接口140連接到處理器總線106,事件處理器148還通過一個或多個芯片組引腳112連接到事件信號線108。事件處理器148將由芯片組104產生的事件或檢測到的事件通知理器102。此外,事件處理器148可以接收由處理器102產生的或檢測到的事件。在一個實施例中,事件處理器148包括一個虛擬線路消息單元150,以便產生虛擬線路消息,并且將產生的虛擬線路消息發送到處理器102。此外,虛擬線路消息單元150可以對從處理器102接收的虛擬線路消息進行譯碼。
芯片組104的事件處理器148還可以包括一個中斷控制器152。中斷控制器152可以產生一個中斷消息,并將該中斷消息發送到處理器102,中斷控制器152還可以對從處理器102接收的中斷消息進行譯碼。在一個實施例中,中斷控制器152可以通過處理器總線106和處理器總線接口140發送或接收中斷消息。在另一個實施例中,中斷控制器152還可以通過一個或多個芯片組引腳112和相關聯的事件信號線108發送或接收中斷消息。
芯片組104的事件處理器148還可以包括一個或多個事件寄存器154。在一個實施例中,芯片組事件寄存器154可以包括能力寄存器156、選擇寄存器158、狀態寄存器160和控制寄存器162。芯片組能力寄存器156可以表示芯片組104所支持的事件處理能力。此外,芯片組選擇寄存器158可以指明芯片組104用于傳送相關聯的事件的傳送機制選擇。
芯片組104的狀態寄存器160和控制寄存器162分別可以提供事件狀態和事件控制。在一個實施例中,芯片組104的狀態寄存器160表示哪些事件是有效的,以及哪些事件是無效的。芯片組104的控制寄存器162可以用于啟用或禁止事件。此外,控制寄存器162可以將事件定義為電平觸發或邊緣觸發。
現在參考圖2,圖2示出了一個能力寄存器的典型實施例。在示出的實施例中,處理器能力寄存器124和芯片組能力寄存器156具有相同的格式。然而,在其它實施例中,同芯片組能力寄存器156相比,處理器能力寄存器124可以具有不同的格式。此外,處理器能力寄存器124可以支持與除了芯片組能力寄存器156支持那些以外的所有、一些或附加事件相關聯的處理器能力的報告。類似地,芯片組能力寄存器156可以支持與除了處理器能力寄存器124支持的那些以外的所有、一些或附加事件相關聯的芯片組能力的報告。
如圖所示,芯片組能力寄存器156包括對應每個事件的CAP字段。在一個實施例中,能力寄存器156包括IGNNE CAP字段、A20M CAP字段、SMI CAP字段、INIT CAP字段、INTR CAP字段、NMI CAP字段、STPCLK CAP字段、FERR CAP字段、PROCHOT CAP字段、CPU_SCI CAP字段,用于分別報告所述芯片組相對于如下事件的傳送能力,所述事件包括IGNNE事件、A20M事件、SMI事件、INIT事件、INTR事件、NMI事件、STPCLK事件、FERR事件PROCHOT事件、和CPU_SCI事件。上述事件的簡要說明在下面進行說明,所述事件的一個實施例的更多細節可以參考IA-32Intel體系結構軟件開發者手冊,它的拷貝可以從Intel CorporationP.O.Box 7641 Mt.Prospect,IL 60056-7641獲得。
芯片組104可以報告INTR、NMI、SMI、INIT事件,以便將各種類型的中斷通知給處理器102。特別地,芯片組104可以報告INTR事件,以便給處理器102指示正常中斷(例如Intel 8259可編程中斷控制器中斷)是有效的/無效的。芯片組104可以報告NMI事件,以便給處理器102指示不可屏蔽中斷(NMI)是有效的/無效的,還可以報告SMI事件,用于給處理器102指示系統管理中斷(SMI)是有效的/無效的。此外,芯片組104可以報告INIT事件,以便給處理器102指示處理器102將要初始化。
芯片組104可以報告A20M事件,以便指示是否要屏蔽處理器總線106的A20M信號線。處理器102可以報告CPU_SCI事件,以便使得芯片組104使一個系統控制中斷(SCI)有效。在一個實施例中,CPU_SCI事件使通用事件(GPE)位被設置在芯片組104的高級配置和電源接口(ACPI)地址空間中。然后,芯片組104響應GPE位的設置可以使一個SCI中斷有效。
芯片組104和處理器102可以使用IGNNE和FERR事件來處理浮點錯誤。處理器102可以報告FERR事件,以便給芯片組指示處理器102已經檢測到了浮點錯誤。芯片組104可以報告IGNNE事件,以便給處理器102指示處理器102將忽略數字錯誤。
芯片組104和處理器102可以使用用于電源和溫度管理的STPCLK和PROCHOT事件。芯片組104可以報告STPCLK事件,以便給處理器102指示處理器102將停止執行指令并且將進入一功率降低狀態。處理器102可以報告PROCHOT事件,以便向芯片組104通知處理器102已經超過了溫度限值。此外,芯片組104可以報告PROCHOT事件,以便調節處理器102并且降低功耗。
在一個實施例中,每個CAP字段包括四位,用于編碼對應相關聯事件的芯片組104的傳送能力。在這樣一個實施例中,“不支持位”可以表示芯片組104是否支持相關聯事件的傳送,“中斷消息”位表示芯片組104是否支持通過中斷消息進行的相關聯事件的傳送,“虛擬線路消息”位可以表示芯片組104是否支持通過虛擬線路消息進行的相關聯事件的傳送,“引腳”位可以表示芯片組104是否支持通過與芯片組引腳112相關聯的事件信號進行的相關聯事件的傳送。然而,在其它實施例中,每個CAP段可以包括不同數量的位,或可以利用不同的編碼方案來表示支持的傳送機制。
現在參考圖3,圖3示出了芯片組選擇寄存器158的典型實施例。在示出的實施例中,處理器選擇寄存器126和芯片組選擇寄存器158具有相似的格式。然而,在其它實施例中,處理器選擇寄存器126可以具有與芯片組選擇寄存器158不同的格式。此外,處理器選擇寄存器126還可以支持除了芯片組選擇寄存器158所支持的那些以外的所有、一些或附加的事件,并且芯片組選擇寄存器158可以支持除了處理器選擇寄存器126所支持的以外的所有、一些或附加事件。此外,處理器選擇寄存器126還可以支持除了芯片組選擇寄存器158所支持的那些以外的所有、一些或附加傳送機制,并且芯片組選擇寄存器158可以支持除了處理器選擇寄存器126所支持的那些以外的所有、一些或附加傳送機制。
如圖所示,選擇寄存器158可以包括對應每個事件的選擇字段,所述每個事件由相應的事件處理器116、148加以支持。在一個實施例中,選擇寄存器158可以包括IGNNE選擇字段、A20M CAP選擇字段、SMI選擇字段、INIT選擇字段、INTR選擇字段、NMI選擇字段、STPCLK選擇字段、FERR選擇字段、PROCHOT選擇字段、和CPU_SCI選擇字段,用于分別報告如下事件的芯片組傳送選擇,所述事件是IGNNE事件、A20M事件、SMI事件、INIT事件、INTR事件、NMI事件、STPCLK事件、FERR事件、PROCHOT事件、和CPU_SCI事件。
在一個實施例中,每個“選擇”字段可以包括四位,這四位可以被更新,以便選擇對應相關聯事件的傳送機制。“選擇”字段的位可以被設置或被更新為邏輯″1″,以便為事件選擇相關的傳送機制,并且可以被清除或被更新為邏輯″0″,以便取消為事件選擇的相關的傳送機制。在一個實施例中,每個“選擇”字段包括未用位、中斷消息位、虛擬線路消息位和引腳位。未用位可以被設置成表示相關聯的事件沒有被使用,中斷消息位可以被設置成用于為相關聯的事件選擇中斷消息傳送。虛擬線路消息位可以被設置,以便為相關聯的事件選擇虛擬線路消息傳送,引腳位可以被設置,以便為相關聯的事件選擇引腳傳送。在其它實施例中,“選擇”字段可以包括不同數量的位,或利用不同的編碼方案為相關聯的事件選擇傳送機制。
選擇寄存器158還可以包括“選擇鎖”字段,用于鎖定芯片組傳送選擇,并且防止對所述選擇的不利改變。在一個實施例中,選擇寄存器158被實現為一個或多個讀/寫寄存器。然而,響應設置“選擇鎖”字段,所述一個或多個選擇寄存器158充當一個或多個只讀寄存器的作用。在一個實施例中,“選擇鎖”字段在復位或系統關閉時被清除,并且不為清除“選擇鎖”字段提供除了復位或系統關閉以外的任何機制。因此,在這樣一個實施例中,一旦鎖定,系統關閉或復位被要求來改變選擇寄存器158。在另一個實施例中,在沒有復位或者通過系統關閉的循環的情況下,例如“解鎖”或“清除”指令這樣的解鎖機制可以被提供,以便解鎖和改變選擇寄存器158的內容。在另一個實施例中,選擇寄存器158可能不包括“選擇鎖”字段,計算裝置100可以不提供選擇鎖定。
現在參考圖4,示出了一個中斷消息的典型實施例。中斷消息可以包括首部400,用于指示消息目的地和消息類型。該中斷消息還可以包括凈負載402,用于報告中斷事件的發生。如圖所示,首部400可以在處理器總線108的兩個請求階段期間加以傳送,這兩個請求階段在此分別是稱為請求階段A和請求階段B。此外,凈負載402可以在處理器總線106的數據階段期間加以傳送。然而,在另一個實施例中,首部400或凈負載402可以通過另一條總線在芯片組104和處理器102之間進行傳送,所述的另一條總線可以是例如3位的I/O APIC串行總線,該串行總線被一些Intel Pentium處理器支持。此外,首部400或凈負載402可以在不同數目的階段或不同類型的階段期間進行傳送。在其它實施例中,首部400或凈負載402可以具有不同的格式并且可以包括不同的信息。
在一個實施例中,首部400可以通過Intel Pentium 4處理器總線106的5位請求(REQ)總線和36位地址(A)總線進行傳輸,并且該傳輸是在請求階段A和請求階段B期間進行的。請求階段A可以包括請求字段、消息地址字段、目的地ID字段、擴展的目的地ID字段、重定向線索字段、目的地模式字段、保留字段。請求階段B可以包括擴展的請求字段、字節啟用字段、擴展的功能字段、保留字段。
請求字段、擴展的請求字段和消息地址字段的組合可以表示事務或消息類型。在一個實施例中,請求字段、擴展的請求字段和消息地址字段可以分別被設置為如下值01001_b、XX100_b和OFFEE_h,用于表示消息事務(例如中斷消息或虛擬線路消息)。在此,具有附加標記″_b″的數目用于表示二進制數,具有附加標記″_h″的數目用于表示十六進制數,具有附加標記″X″的數目用于表示″用于關系″或″未用″位。
目的地ID字段和擴展的目的地ID字段可以使用各種目的地模式(例如物理目的地模式、邏輯目的地模式、平面(flat)模式、簇模式)指定處理器102或一組處理器,所述各種目的地模式實現目的地ID和擴展的目的地ID字段的解釋。在一個實施例中,重定向線索字段可以表示中斷消息是否可以被重定向到具有較低的中斷優先級的處理器102。此外,當重定向線索字段表示所述的中斷消息可以被重定向的時候,目的地模式字段可以用于指定目的地模式(例如物理模式、邏輯模式),該模式用于解釋目的地ID和擴展的目的地ID字段。在多處理器系統中,重定向線索字段和傳送模式字段可以被用于將對應特定事件的中斷消息重定向到不怎么繁忙的如下處理器102,所述的處理器102選自由目的地ID和擴展的目的地ID字段所指定的組。
“字節啟用”字段可以表示在數據階段期間傳送的數據的有效部分。在一個實施例中,“字節啟用”字段被設置為OF_h,表示數據段的低32位包括有效數據。
在一個實施例中的凈負載402包括固定字段、觸發模式字段、傳送狀態字段、保留字段、目的地模式字段、傳送模式字段和向量字段。觸發模式字段可以表示中斷事件是電平觸發還是邊緣觸發,并且傳送狀態字段可以表示中斷事件是有效的還是無效的。如果是邊緣觸發,則在一個實施例中的中斷控制器152總是將傳送狀態字段設置為邏輯“1”,以表示對應邊緣觸發的中斷事件的有效狀態,因為事件處理器148控制不要報告邊緣觸發的中斷事件的無效的或下降沿。
目的地模式字段可以表示目的地模式,例如,邏輯模式或物理模式。在一個實施例中,處理器事件處理器116可以在依據目的地模式字段的狀態對目的地ID字段和擴展的目的地ID字段進行不同的解釋。傳送模式字段可以表示中斷事件的類型,例如,固定的INTR事件、最低優先級的INTR事件、INIT事件、SMI事件、NMI事件、或外部INTR事件。在一個實施例中,固定的INTR事件表示所述的INTR事件將被傳送到每個如下的處理器事件處理器116,所述的事件處理器116是由目的地ID字段和擴展的目的地ID字段所標識的,因此最低優先級的INTR事件表示INTR事件將被傳送到最低優先級的處理器事件處理器116。
向量字段可以標識一個響應相關聯的中斷事件而將被執行的中斷服務程序。此外,在一個實施例中的保留字段的每一位可以設置為0_b。在另一個實施例中,保留字段的每一位都不被限定并且被忽略。因此,上述位可以被設置為任何值,這都是不重要的。
在一個實施例中,計算裝置100的BIOS 146或操作系統在系統啟動時利用對應如下中斷消息字段中的每個的值來更新控制寄存器130、162,這些中斷消息字段包括目的地ID字段、擴展的目的地ID字段、重定向線索字段、目的地模式字段、觸發模式字段、傳送狀態字段、保留字段、目的地模式字段、傳送模式字段和向量字段。因此,當構建一中斷消息的時候,中斷控制120、152可以很容易地從它們的控制寄存器130、162中獲取這些值。
圖4還示出了在一個具體實施例中通過Intel Pentium 4處理器總線106的哪條總線和哪些位線,傳送每個字段。如圖所示,在請求階段A期間,REQa[X]表示相應字段被通過請求總線的位線X傳送。同樣地,在請求階段B期間,REQb[Y]表示相應的字段被通過請求總線的Y位線傳送。此外,在請求階段A期間,Aa[Z]表示相應字段被通過地址總線的位線Z傳送。同樣地,在請求階段B期間,Ab[W]表示相應字段被通過地址總線的位線W傳送。此外,D[N]表示在處理器總線106的數據階段期間,相應字段被通過數據總線(D總線)的位線N傳送。中斷消息的一個實施例的首部400和凈負載402的更詳細說明可以在IA-32 Intel體系結構軟件開發者手冊(2001)中找到。
現在參考圖5,圖5示出了一個虛擬線路消息的典型實施例。虛擬線路消息可以包括首部500,用于表示消息目的地和消息類型。虛擬線路消息還可包括凈負載502,用于報告虛擬線路事件的發生。如圖所示,首部500可以在處理器總線106的兩個請求階段期間進行傳送,例如Intel Pentium 4總線的請求階段A和請求階段B。此外,凈負載502可以在處理器總線106的數據階段期間進行傳送。然而,在另一個實施例中,首部500或凈負載502可以在芯片組104和處理器102之間通過另一條總線進行傳送,所述的另一條總線可以是例如一串行虛擬線路總線(未示出)。此外,首部500或凈負載502可以在不同數目的階段或不同類型的階段期間進行傳送。在其它實施例中,首部500或凈負載502可以具有不同的格式并且可以包含不同的消息。
在一個實施例中,首部500可以在請求階段A和請求階段B期間,通過Intel Pentium 4處理器總線106的5位請求(REQ)總線和36位地址(A)總線進行傳送。請求階段A可以包括請求字段、消息地址字段、目的地ID字段、擴展的目的地ID字段、重定向線索字段、目的地模式字段和保留字段。請求階段B可以包括擴展的請求字段、字節啟用字段、擴展的功能字段和保留字段。
請求字段、擴展的請求字段和消息地址字段的組合可以表示事務或消息類型。在一個實施例中,請求字段、擴展的請求字段和消息地址字段可以分別被設置為值01001_b、XX100_b、OFFEE_h,用于表示消息事務(例如中斷消息或虛擬線路消息)。
目的地ID字段和擴展的目的地ID字段可以利用各種目的地模式(例如物理目的地模式、邏輯目的地模式、平面模式、簇模式)指定處理器102或一組處理器,所述各種目的地模式實現對目的地ID和擴展的目的地ID字段的解釋。
在一個實施例中的重定向線索字段和擴展的功能字段的位Ab[6:5]組合在一起使用,用于表示對應虛擬線路消息的目的地模式。為了方便起見,VWM模式字段被用來表示重定向線索字段和擴展的功能字段的位Ab[65]的連接。在一個實施例中,當將VWM模式字段設置為010_b的時候,該字段表示物理目的地模式,當將VWM模式字段設置為011_b的時候,表示邏輯目的地模式,當將VWM模式字段設置為110_b的時候,表示處理器-芯片組模式。
“字節啟用”字段可以表示在數據階段期間傳送的數據的有效部分。在一個實施例中,字節啟用字段被設置為OF_h,表示數據階段的低32位包含有效數據。此外,在一個實施例中的保留字段的每一位都可以設置為0_b。在另一個實施例中,保留字段的每一位都不加以限定并且被忽略。
在一個實施例中,首部500可以在請求階段A和請求階段B期間,通過Intel Pentium 4處理器總線106的5位請求(REQ)總線和36位地址(A)總線進行傳送。請求階段A可以包括請求字段、固定字段、目的地ID字段、擴展的目的地ID字段、重定向線索字段、目的地模式字段和保留字段。此外,請求階段B包括擴展的請求字段、調試字段、屬性字段、延遲ID字段、字節啟用字段、和擴展的功能字段和固定字段。
在一個實施例中的凈負載502可以包括對應每個事件的級別字段和變化字段。例如,凈負載502可以包括對應如下IA-32的事件的每個的電平字段和變化字段,所述IA-32的事件IGNNE、A20M、SMI、INIT、INTR、NMI、STPCLK、FERR、PROCHOT、CPU_SCI。每個電平字段可以表示各個事件的狀態(例如,有效/無效),每個變化字段可以表示自前一個虛擬線路消息以來對應各個事件在電平或狀態上的變化。
凈負載502還可以包括更新請求字段和更新ACK字段。在一個實施例中,更新請求字段可以被更新(例如被設置成邏輯″1″),以表示虛擬線路消息的發送者正請求用當前事件狀態發送一虛擬線路消息,并且所述更新請求字段可以被更新(例如被清除為邏輯″0″),以表示虛擬線路消息的發送者當前沒有請求虛擬線路消息更新。此外,在一個實施例中的更新ACK字段可以被更新(例如被設置為邏輯″1″),以表示虛擬線路消息處于響應一更新請求之中,并且可以被更新(例如被清除為邏輯″0″),以表示虛擬線路消息當前不處于響應一更新請求之中。在一個實施例中,處理器102響應從睡眠狀態的喚醒可以發送一個虛擬線路消息更新請求,以便從芯片組104獲取事件的當前狀態。
計算裝置100可以支持附加的和/或候選的如下更新機制,所述的更新機制可以使處理器102和/或芯片組104發送虛擬線路消息,以便更新處理器102和芯片組104中的事件狀態。在一個實施例中,處理器102和/或芯片組104還包括一個位或寄存器,BIOS 146、操作系統或其它實體可以更新所述位或寄存器,以便請求處理器102和/或芯片組104發送虛擬線路消息。同樣地,處理器102和/或芯片組104可以提供一個命令,該命令請求處理器102和/或芯片組104發送包括當前事件狀態的虛擬線路消息。在另一個實施例中,處理器102和/或芯片組104還提供一個位或寄存器,BIOS 146、操作系統或其它實體可以更新所述位或寄存器,以便請求處理器102和/或芯片組104每個周期(例如1秒),無論事件狀態是否改變,都至少發送一個虛擬線路消息。
現在參考圖6,圖6示出了事件初始化方法的一個實施例。在計算裝置100的一個實施例中的事件在系統復位之后和系統上電時被禁止。計算裝置100的BIOS 146可以對計算裝置100的部件進行編程,以便在啟用事件之前進行恰當的事件處理。為了方便起見,以下說明描述在執行某些動作時的BIOS146;然而在一個實施例中上述的動作由處理器102響應于執行BIOS 146的指令加以執行。
作為事件初始化的一部分,BIOS 146在塊600確定處理器102和芯片組104的事件傳送能力。在一個實施例中,BIOS 146可以訪問處理器能力寄存器124和芯片組能力寄存器156,以便獲得事件傳送能力。
在塊602,BIOS 146為每個事件選擇傳送機制。在一個實施例中,如果相關聯的傳送機制被支持,則能力寄存器124、156的每個位被設置為邏輯″1″。因此,BIOS 146可以執行能力寄存器124和156的逐位“與”操作,以便獲得一個通用的能力值,該值包括表示用于相應的事件的通用的傳送機制的每個事件字段。例如,通用的能力值的結果字段可以表示處理器102和芯片組104都支持通過虛擬線路消息或事件信號進行的第一事件的傳送;處理器102和芯片組104都支持通過事件信號進行的第二事件的傳送;處理器102和芯片組104不共享用于第三事件的通用傳送機制。
如果對一個事件來講,有多個通用傳送機制是可用的,那么BIOS146可以使用各種選擇標準選擇所述傳送機制中的一個,所述的各種選擇標準可以是例如依據BIOS 146的配置選項進行選擇,或依據通用的能力值的相關聯字段的最小有效設置位進行選擇。如果沒有通用的傳送機制可用,則BIOS 146可以產生一個錯誤消息,用于指示無效的配置。或者,BIOS146可以以計算裝置100的初始化繼續,并且可以通過控制寄存器130、162禁止事件。如果計算裝置100不需要事件,則禁止事件是可以接受的,并且因此禁止事件可以提供一種針對如下的逐步淘汰的遺留事件的機制,所述逐步淘汰的遺留事件不再被新的計算裝置或軟件所要求或使用。
在塊604,BIOS 146可以對處理器102和芯片組104進行編程,以便選擇傳送機制,并且還可以鎖定傳送選擇,以防止不利的改變。在一個實施例中,BIOS146可以通過將設置每個“選擇”字段的單個位的值寫入選擇寄存器126、158來編程和鎖定傳送選擇,以便表示所述傳送機制將被用于相應的事件。此外,在一個實施例中,寫入選擇寄存器126、158的值可以通過更新“選擇鎖”字段來鎖定傳送選擇。
選擇了事件傳送機制之后,BIOS 146在606啟用事件。在一個實施例中,BIOS146可以通過更新控制寄存器130、162啟用事件。然而,如上所述,BIOS 146可以禁止如下的某些事件,所述某些事件通常不被處理器102和芯片組104支持(非通用傳送機制)。
現在參考圖7,圖7示出了事件傳送方法的一個實施例。處理器102和芯片組104可以使用相似的事件傳送方法。為了方便起見,從將事件傳送到處理器102的芯片組的角度來看,在以下描述事件傳送方法。然而,應當理解的是,所述的事件傳送方法可以按類似于處理器102將事件傳送到芯片組104的方式加以實現。在塊700,芯片組事件處理器148可以檢測一個事件。例如,芯片組事件處理器148可以檢測如下INTR事件,所述INTR事件是由芯片組104或由另一個部件根據狀態寄存器160的內容而加以產生的。
在塊702,芯片組事件處理器148確定已經為被檢測的事件選擇了哪種傳送機制。例如,作為對檢測INIT事件的響應,芯片組事件處理器148可以依據它的INIT選擇字段的設置位,來確定是否要通過虛擬線路消息、中斷消息或應用于芯片組INIT引腳112的事件信號將INIT事件傳送到處理器102。
響應于確定事件將通過虛擬線路消息被傳送,芯片組事件處理器148在塊704構造一虛擬線路消息,以報告被檢測的事件的狀態。在一個實施例中,事件處理器148的虛擬線路消息單元150構造了如下的虛擬線路消息,該虛擬線路消息具有包括消息目的地和消息類型的首部500和提供事件狀態的凈負載502。
在一個實施例中的虛擬線路消息單元150可以獲得對應首部500的各種字段的值,這些值是從芯片組104的事件控制寄存器162中存儲的信息獲得的,BIOS 146或操作系統可以在系統初始化的時候對芯片組104進行編程。在另一個實施例中,虛擬線路消息單元150可以簡單地構造虛擬線路消息的首部500,以便包括如下的廣播標識符,該廣播標識符使所述虛擬線路消息被傳送到計算裝置100的所有處理器102。在另一個實施例中,虛擬線路消息單元150可以是硬接線的,以便產生首部500,使得虛擬線路消息被廣播到所有處理器102。此外,在單處理器計算裝置100中,虛擬線路消息可以不包含目的地標識符,因為只存在對應所述的消息的一個可能的目的地。
在一個實施例中,虛擬線路消息單元150還可以依據芯片組104的事件寄存器154創建虛擬線路消息的凈負載502。在一個實施例中,虛擬線路消息單元150可以依據事件狀態寄存器160確定自前一個虛擬線路消息以來的哪些事件改變了,并且可以確定與每個事件相關聯的信號電平。在一個實施例中,虛擬線路消息單元150可以確定事件是基于控制寄存器162被邊緣觸發的,并且可以報告這樣的邊緣觸發事件的第一邊緣,例如,從低到高的信號電平過渡或上升沿。虛擬線路消息單元150可以控制不要報告這樣的邊緣觸發事件的第二邊緣,例如,從高到低的信號電平過渡或下降沿。
在塊706,芯片組事件處理器148可以將構造的虛擬線路消息發送到處理器102。在一個實施例中,虛擬線路消息單元150可以經由處理器總線接口140和處理器總線106將消息傳送到一個或多個處理器102來發送虛擬線路消息。在另一個實施例中,虛擬線路消息單元可以經由虛擬線路消息總線(未示出)將虛擬線路消息傳送到一個或多個處理器102,該虛擬線路消息總線獨立于處理器總線106。
響應確定事件將要經由中斷消息加以傳送,在塊708,芯片組事件處理器148可以構造一個中斷消息,以報告檢測的事件的狀態。在一個實施例中,芯片組事件處理器148的中斷控制器152可以構造具有如下首部400的中斷消息,首部400指示要將指示中斷事件狀態的凈負載402傳送到的處理器102或一組處理器102。
在一個實施例中的中斷控制器152可以依據存儲芯片組事件寄存器154中的信息,創建中斷消息的首部400和凈負載402。在一個實施例中,計算裝置100的BIOS 146或操作系統可以在系統初始化的時候,用適當的首部或凈負載信息對芯片組控制寄存器162進行編程。例如,BIOS 146或操作系統可以在系統初始化的時候,用事件類型和中斷向量信息對芯片組控制寄存器162進行編程。此外,計算裝置100的芯片組事件處理器148或操作系統可以更新芯片組狀態寄存器160,以表示中斷事件的當前狀態。
在塊710,芯片組事件處理器148可以將構造的中斷消息發送到處理器102。在一個實施例中,中斷控制器152可以通過經由處理器總線接口140和處理器總線106將消息傳送到一個或多個處理器102來發送中斷消息。在另一個實施例,中斷控制器152可以經由中斷消息總線(未示出)將中斷消息傳送到一個或多個處理器102,該中斷消息總線獨立于處理器總線106。
響應于確定事件將要經由事件信號加以傳送,在塊712,芯片組事件處理器148可以將一個事件信號應用到芯片組112,以便表示事件狀態。在一個實施例中,芯片組事件處理器148的中斷控制器152可以通過它的引腳112之一,將事件信號應用到事件信號線108,因此使處理器102的相關聯的引腳110接收事件信號。例如,芯片組中斷控制器152可以依據它的狀態寄存器160進行檢測檢測三個INTR事件是掛起的。芯片組中斷控制器152可以在它的INTR引腳112上產生INTR信號,因此使相關聯的INTR事件信號線108得到擴展,并且將INTR事件信號應用到處理器INTR引腳110。處理器102可以以后查詢中斷控制器152,以便獲得中斷處理程序的中斷向量,所述的中斷處理程序與需要服務的最高優先級事件相關聯。
本發明的特定特征已經參考典型實施例進行了說明,但是所述描述目的不是要從限制的意義上加以理解。對本發明的典型實施例的不同修改,以及對本發明其它實施例的修改,對于本發明的所屬技術領域的普通技術人員來講,被認為是在本發明的精神和范圍之內。
權利要求
1.一種裝置,包括用于將與事件相關聯的事件信號進行傳送的引腳,用于傳送總線消息的總線接口,用于為所述事件選擇傳送機制的選擇寄存器,和事件處理器,用于通過總線的虛擬線路消息處理所述的事件,以響應為所述的事件選擇虛擬線路消息傳送的選擇寄存器,并且用于通過引腳的事件信號處理所述的事件,以響應為事件選擇引腳傳送的選擇寄存器。
2.根據權利要求1所述的裝置,進一步包括一能力寄存器,用于表示支持的事件傳送機制。
3.根據權利要求1所述的裝置,其中所述選擇寄存器包括一鎖字段,該鎖字段啟用對所述選擇寄存器的鎖定,以防止進一步的更新。
4.根據權利要求1所述的裝置,其中所述事件處理器用于通過總線的中斷消息處理所述的事件,以響應為事件選擇中斷消息傳送的選擇寄存器。
5.根據權利要求1所述的裝置,其中所述的事件包括浮點錯誤事件。
6.根據權利要求1所述的裝置,其中所述的事件包括忽略數字錯誤事件。
7.根據權利要求1所述的裝置,其中所述的事件包括溫度事件錯誤事件。
8.根據權利要求1所述的裝置,其中所述的事件包括一個節電事件。
9.根據權利要求1所述的裝置,其中所述事件處理器是處理器的一部分,并且所述的事件包括由事件處理器使之有效的系統控制中斷。
10.一種方法,包括確定事件傳送機制,該機制通常由處理器和芯片組加以支持,并且根據處理器和芯片組通常所支持的事件傳送機制,為事件選擇事件傳送機制。
11.根據權利要求10所述的方法,進一步包括訪問處理器的能力寄存器,以便確定處理器支持哪些事件傳送機制,和訪問芯片組的能力寄存器,以便確定芯片組支持哪些事件傳送機制。
12.根據權利要求11所述的方法,進一步包括更新處理器的選擇寄存器,以便為所述的事件選擇事件傳送機制,和更新芯片組的選擇寄存器,以便為所述的事件選擇事件傳送機制。
13.根據權利要求12所述的方法,進一步包括鎖定處理器的選擇寄存器,以便防止進一步更新處理器的選擇寄存器,和鎖定芯片組的選擇寄存器,以便防止進一步更新芯片組的選擇寄存器。
14.根據權利要求10所述的方法,進一步包括依據通常所支持的事件傳送機制,為多個事件選擇事件傳送機制。
15.根據權利要求10所述的方法,進一步包括通過與處理器和芯片組的引腳相關聯的事件信號傳送事件,以便響應為事件選擇引腳傳送,通過中斷消息傳送事件,以便響應為事件選擇中斷消息傳送,和通過虛擬線路消息傳送事件,以便響應為事件選擇虛擬線路消息傳送。
16.根據權利要求10所述的方法,進一步包括通過與處理器和芯片組的引腳相關聯的事件信號傳送事件,以便響應為事件選擇引腳傳送,和通過虛擬線路消息傳送事件,以便響應為事件選擇虛擬線路消息傳送。
17.根據權利要求10所述的方法,進一步包括請求芯片組發送如下的虛擬線路消息,該虛擬線路消息提供芯片組中的事件的狀態。
18.根據權利要求17所述的方法,進一步包括請求處理器發送如下的虛擬線路消息,該虛擬線路消息提供處理器中的事件的狀態。
19.根據權利要求10所述的方法,進一步包括請求芯片組周期性地發送如下的虛擬線路消息,該虛擬線路消息提供芯片組中的事件的狀態。
20.根據權利要求19所述的方法,進一步包括請求處理器周期性地發送如下的虛擬線路消息,該虛擬線路消息提供處理器中的事件的狀態。
21.一種包括多條指令的機器可讀介質,所述多條指令,響應計算裝置的執行,使得計算裝置執行如下的操作確定處理器支持的事件傳送機制,確定芯片組支持的事件傳送機制,和根據處理器和芯片組通常支持的事件傳送機制,為多個事件中的每一個選擇事件傳送機制。
22.根據權利要求21所述的機器可讀介質,其中所述的多條指令,響應計算裝置的執行,可以進一步使得計算裝置中執行如下操作訪問處理器的一個或多個能力寄存器,以便確定處理器支持的事件傳送機制,和訪問芯片組的一個或多個能力寄存器,以便確定芯片組支持的事件傳送機制,和
23.根據權利要求22所述的機器可讀介質,其中所述的多條指令,響應計算裝置的執行,可以進步使得計算裝置執行如下的操作更新處理器的一個或多個選擇寄存器,以便為所述的多個事件選擇事件傳送機制,和更新芯片組的一個或多個選擇寄存器,以便為所述的多個事件選擇事件傳送機制。
24.根據權利要求23所述的機器可讀介質,其中所述的多條指令,響應計算裝置的執行,可以進一步使得計算裝置執行如下的操作鎖定處理器的所述一個或多個選擇寄存器,以便防止進一步更新處理器的所述一個或多個選擇寄存器,和鎖定芯片組的所述一個或多個選擇寄存器,以便防止進一步更新芯片組的所述一個或多個選擇寄存器。
25.根據權利要求21所述的機器可讀介質,其中所述的多條指令,響應計算裝置的執行,可以進一步使得計算裝置執行如下的操作根據處理器和芯片組的通用傳送機制,為所述多個事件中的每一個事件在引腳傳送和虛擬線路消息傳送之間進行選擇。
26.根據權利要求21所述的機器可讀介質,其中所述的多條指令,響應計算裝置的執行,可以進一步使得計算裝置執行如下的操作根據處理器和芯片組的通用傳送機制,為所述多個事件中的每一個事件在引腳傳送、虛擬線路消息傳送和中斷消息傳送之間進行選擇。
27.一種系統,包括一處理器,包括一總線接口,用于接收虛擬線路消息,和一事件處理器,用于對經由總線接口接收的虛擬線路消息進行譯碼。一芯片組,包括一總線接口,用于發送虛擬線路消息,和一事件處理器,用于構造虛擬線路消息,以便報告多個事件的狀態,和一總線,用于將處理器的總線接口連接到芯片組的總線接口,并在它們之間傳送虛擬線路消息。
28.根據權利要求27所述的系統,其中所述虛擬線路的消息的所述多個事件包括與正常中斷相關聯的INTR事件,處理器需要INTR引腳來接收如下的INTR事件信號,所述的INTR事件信號報告INTR事件的狀態,和芯片組需要INTR引腳來發送所述INTR事件信號。
29.根據權利要求27所述的系統,其中所述虛擬線路消息的所述多個事件包括與不可屏蔽中斷相關聯的NMI事件,處理器需要NMI引腳來接收如下的NMI事件信號,所述的NMI事件信號報告NMI事件的狀態,和芯片組需要NMI引腳來發送所述NMI事件信號。
30.如權利要求27所述的系統,其中所述虛擬線路消息的所述多個事件包括與消息管理中斷相關聯的SMI事件,處理器需要SMI引腳來接收如下的SMI事件信號,所述的SMI事件信號報告SMI事件的狀態,和芯片組需要SMI引腳來發送所述SMI事件信號。
31.如權利要求27所述的系統,其中所述虛擬線路消息的所述多個事件包括與處理器初始化相關聯的INIT事件,處理器需要INIT引腳來接收如下的INIT事件信號,所述的INIT事件信號報告INIT事件的狀態,和芯片組需要INIT引腳來發送所述INIT事件信號。
32.如權利要求27所述的系統,其中所述虛擬線路消息的所述多個事件包括與處理器功率降低狀態相關聯的STPCLK事件,處理器需要STPCLK引腳來接收如下的STPCLK事件信號,所述的STPCLK事件信號報告STPCLK事件狀態,和芯片組需要STPCLK引腳來發送所述STPCLK事件信號。
33.如權利要求27所述的系統,其中所述虛擬線路消息的所述多個事件包括與處理器節流相關聯的PROCHOT事件,處理器需要PROCHOT引腳來接收如下的PROCHOT事件信號,所述的PROCHOT事件信號報告PROCHOT事件的狀態,和芯片組需要PROCHOT引腳來發送所述PROCHOT事件信號。
34.如權利要求27所述的系統,其中所述虛擬線路消息的所述多個事件包括與屏蔽總線的A20M信號線相關聯的A20M事件,所述的處理器需要A20M引腳來接收如下的A20M事件信號,該A20M事件信號報告A20M事件的狀態,和所述的芯片組需要A20M引腳來接收所述A20M事件信號。
35.根據權利要求27所述的系統,其中處理器和芯片組均包括多個事件引腳,所述的系統進一步包括固件,響應處理器的執行,使處理器為每個事件在引腳傳送和虛擬線路消息傳送之間進行選擇。
36.根據權利要求27所述的系統,其中芯片組向處理器發送虛擬線路消息,以響應請求。
37.根據權利要求27所述的系統,其中芯片組周期性地向處理器發送虛擬線路消息,而不考慮事件狀態的改變。
全文摘要
用于事件傳送的機器可讀介質、方法和裝置的說明。在一些實施例中,產生虛擬線路消息,以響應事件。所述的虛擬線路消息可以包括一個消息首部,所述的首部提供目的地和消息類型信息。所述虛擬線路消息可以進一步包括凈負載,所述的凈負載提供一個或多個事件的狀態信息。
文檔編號G06F13/24GK1499388SQ20031011384
公開日2004年5月26日 申請日期2003年10月31日 優先權日2002年10月31日
發明者D·I·波伊斯納, D I 波伊斯納 申請人:英特爾公司