專利名稱:用于處理i/o地址轉(zhuǎn)換高速緩存未命中的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明總體上涉及中央處理單元內(nèi)的I/O地址轉(zhuǎn)換。
背景技術(shù):
計(jì)算系統(tǒng)往往包括中央處理單元(CPU)。通常,系統(tǒng)內(nèi)的其它設(shè)備向CPU發(fā)出請求以執(zhí)行命令??赡芟駽PU發(fā)出命令請求的設(shè)備的示例包括視頻卡、聲卡或者系統(tǒng)內(nèi)的I/O(輸入/輸出)設(shè)備。I/O設(shè)備可以向CPU發(fā)送命令以便進(jìn)行處理。來自I/O設(shè)備的命令可以把存儲器地址作為目標(biāo),并且通過I/O虛擬存儲器地址來引用該存儲器地址。如果所述命令涉及I/O虛擬存儲器地址,那么CPU必須在執(zhí)行所述命令以前把I/O虛擬存儲器地址轉(zhuǎn)換為對應(yīng)的物理存儲器地址。
為了提供對數(shù)據(jù)和指令的更為快速的訪問,并且為了更好地利用CPU,CPU可以具有多個(gè)高速緩存。高速緩存是這樣一種存儲器,其通常小于計(jì)算機(jī)系統(tǒng)的主存儲器,并且通常被制造在與處理器相同的小片(即,芯片)上。高速緩存存儲器通常存儲來自經(jīng)常使用的主存儲器單元的數(shù)據(jù)的副本。高速緩存還可以存儲I/O虛擬存儲器的I/O地址轉(zhuǎn)換信息,諸如段表和頁表,以便有助于把I/O虛擬存儲器地址轉(zhuǎn)換為對應(yīng)的物理存儲器地址??傮w上講,用于提供I/O地址轉(zhuǎn)換的高速緩存結(jié)構(gòu)通常被稱為I/O地址轉(zhuǎn)換高速緩存或者轉(zhuǎn)換后援緩沖器。
當(dāng)處理器希望轉(zhuǎn)換存儲器地址時(shí),處理器可能會首先檢查I/O地址轉(zhuǎn)換高速緩存,以便查看I/O地址轉(zhuǎn)換表?xiàng)l目是否存在于高速緩存中。倘若如此,那么處理器使用高速緩存中的I/O地址轉(zhuǎn)換表?xiàng)l目。如果I/O地址轉(zhuǎn)換表?xiàng)l目存在于高速緩存中,那么它通常被稱為“高速緩存命中”。如果I/O地址轉(zhuǎn)換表?xiàng)l目沒有存在于高速緩存中,那么它通常被稱為“高速緩存未命中”。當(dāng)出現(xiàn)高速緩存未命中時(shí),必須從主存儲器中取出所期望的數(shù)據(jù)。
目前,當(dāng)需要I/O地址轉(zhuǎn)換的I/O命令引起高速緩存未命中時(shí),在CPU內(nèi)可能會產(chǎn)生中斷。這種中斷使正在CPU上執(zhí)行的軟件響應(yīng)于I/O地址轉(zhuǎn)換高速緩存未命中而執(zhí)行某些功能。通常,CPU和/或軟件將向已發(fā)送了需要I/O地址轉(zhuǎn)換的命令的I/O設(shè)備發(fā)送錯(cuò)誤響應(yīng)。然后,響應(yīng)于所述錯(cuò)誤響應(yīng),I/O設(shè)備必須確定要采取什么行動。所述I/O設(shè)備可以決定重新發(fā)布命令,I/O設(shè)備軟件可以決定重啟I/O操作,或者I/O設(shè)備軟件可以開始恢復(fù)操作。
采用此方案的問題是軟件處理異常并且向I/O設(shè)備指明轉(zhuǎn)換表?xiàng)l目已經(jīng)被加載而且可以重新發(fā)布命令所花費(fèi)的時(shí)間量。采用此方案的另一問題在于當(dāng)出現(xiàn)I/O地址轉(zhuǎn)換未命中時(shí),可能有多個(gè)來自I/O設(shè)備的命令正由CPU進(jìn)行處理。當(dāng)處理器告訴I/O設(shè)備它可以重新發(fā)布引起I/O地址轉(zhuǎn)換高速緩存未命中的命令時(shí),來自I/O設(shè)備的許多其它命令也許已經(jīng)完成了。這樣做可能會因引起I/O地址轉(zhuǎn)換高速緩存未命中的命令而造成排序問題。
因此,需要一種改進(jìn)的方法和設(shè)備來處理因從I/O設(shè)備接收的命令引起的I/O地址轉(zhuǎn)換高速緩存未命中。
發(fā)明內(nèi)容
本發(fā)明總體上提供了能夠使軟件處理因從I/O設(shè)備接收的命令而引起的I/O地址轉(zhuǎn)換高速緩存未命中的系統(tǒng)和方法。
一個(gè)實(shí)施例提供了一種用于處理由一個(gè)或多個(gè)I/O命令引起的I/O地址轉(zhuǎn)換高速緩存未命中的方法,所述一個(gè)或多個(gè)I/O命令是由一個(gè)或多個(gè)I/O設(shè)備發(fā)送至中央處理單元的。所述方法總體上包括在中央處理單元(CPU)內(nèi),在命令隊(duì)列中緩存一個(gè)或多個(gè)I/O命令;從存儲器中取出I/O地址轉(zhuǎn)換表?xiàng)l目,并且把I/O地址轉(zhuǎn)換表?xiàng)l目放置在I/O地址轉(zhuǎn)換高速緩存中;以及,執(zhí)行下述操作中的至少一個(gè)重新發(fā)布所述一個(gè)或多個(gè)I/O命令以便進(jìn)行I/O地址轉(zhuǎn)換,或者向發(fā)送所述一個(gè)或多個(gè)I/O命令至CPU的所述一個(gè)或多個(gè)I/O設(shè)備發(fā)送錯(cuò)誤消息。
另一個(gè)實(shí)施例提供了一種中央處理單元(CPU)。所述CPU總體上包括I/O地址轉(zhuǎn)換高速緩存;一個(gè)或多個(gè)異常命令隊(duì)列;以及命令處理邏輯。所述命令處理邏輯總體上被配置為在一個(gè)或多個(gè)異常命令隊(duì)列中緩存引起I/O地址轉(zhuǎn)換高速緩存未命中的一個(gè)或多個(gè)I/O命令,在軟件控制下加載I/O地址轉(zhuǎn)換高速緩存,并且執(zhí)行下述操作中的至少一個(gè)重新發(fā)布所述一個(gè)或多個(gè)I/O命令以便進(jìn)行I/O地址轉(zhuǎn)換,或者向發(fā)送所述一個(gè)或多個(gè)I/O命令至CPU的一個(gè)或多個(gè)I/O設(shè)備發(fā)送錯(cuò)誤消息。
另一個(gè)實(shí)施例提供了一種系統(tǒng),其總體上包括一個(gè)或多個(gè)輸入/輸出(I/O)設(shè)備;以及中央處理單元(CPU)。所述CPU總體上包括一個(gè)或多個(gè)異常命令隊(duì)列,I/O地址轉(zhuǎn)換高速緩存以及命令處理邏輯。所述命令處理邏輯總體上被配置為在一個(gè)或多個(gè)異常命令隊(duì)列中緩存引起I/O地址轉(zhuǎn)換高速緩存未命中的一個(gè)或多個(gè)I/O命令;在軟件控制下加載I/O地址轉(zhuǎn)換高速緩存;并且執(zhí)行下述操作中的至少一個(gè)重新發(fā)布所述一個(gè)或多個(gè)I/O命令以便進(jìn)行I/O地址轉(zhuǎn)換,或者向發(fā)送所述一個(gè)或多個(gè)I/O命令至CPU的一個(gè)或多個(gè)I/O設(shè)備發(fā)送錯(cuò)誤消息。
通過參考在附圖中舉例說明的本發(fā)明的實(shí)施例,可以獲得實(shí)現(xiàn)和更加詳細(xì)地理解以上所述的本發(fā)明的特征、優(yōu)點(diǎn)和目的的方式,以及對以上簡要概括的本發(fā)明的更加具體的描述。
然而,應(yīng)該注意的是,附圖僅僅舉例說明了本發(fā)明的典型實(shí)施例,因此,不應(yīng)將其視為對本發(fā)明范圍的限制,本發(fā)明可以允許其它等效的實(shí)施例。
圖1是舉例說明依照本發(fā)明一個(gè)實(shí)施例的計(jì)算環(huán)境的框圖。
圖2是舉例說明依照本發(fā)明一個(gè)實(shí)施例的涉及接收I/O設(shè)備命令和執(zhí)行I/O地址轉(zhuǎn)換的操作的流程圖。
圖3A和3B是舉例說明依照本發(fā)明一個(gè)實(shí)施例的涉及接收I/O設(shè)備命令和執(zhí)行I/O地址轉(zhuǎn)換的操作的流程圖。
具體實(shí)施例方式
本發(fā)明的實(shí)施例總體上提供了一種改進(jìn)的技術(shù),其用于處理CPU內(nèi)由I/O命令引起的I/O地址轉(zhuǎn)換高速緩存未命中。對于某些實(shí)施例來說,CPU硬件可以在命令隊(duì)列中緩存引起I/O地址轉(zhuǎn)換高速緩存未命中的I/O命令,直到采用必要的信息更新了I/O地址轉(zhuǎn)換高速緩存為止。當(dāng)I/O地址轉(zhuǎn)換高速緩存已經(jīng)被更新時(shí),CPU可以重新發(fā)布命令隊(duì)列中的I/O命令,在適當(dāng)?shù)臅r(shí)間轉(zhuǎn)換I/O命令的地址,并且執(zhí)行所述命令,就好像高速緩存未命中沒有出現(xiàn)過一樣。這樣,I/O設(shè)備不需要處理來自CPU的錯(cuò)誤響應(yīng),所述I/O命令通過CPU來處理,并且不會丟棄I/O命令。
在下文中,將描述本發(fā)明的實(shí)施例。然而,應(yīng)該理解的是,本發(fā)明不局限于具體描述的實(shí)施例。相反,無論是否涉及不同的實(shí)施例,都可以設(shè)想到下列特征和元素的任何組合來實(shí)現(xiàn)并且實(shí)施本發(fā)明。此外,在各種實(shí)施例中,本發(fā)明提供了很多優(yōu)于現(xiàn)有技術(shù)的優(yōu)點(diǎn)。然而,雖然本發(fā)明的實(shí)施例可以實(shí)現(xiàn)優(yōu)于其它可能的方案和/或現(xiàn)有技術(shù)的優(yōu)點(diǎn),但是,特定的優(yōu)點(diǎn)是否由給定的實(shí)施例來實(shí)現(xiàn),不會對本發(fā)明構(gòu)成限制。由此,以下的方面、特征、實(shí)施例和優(yōu)點(diǎn)僅僅是說明性的,并且除非在一個(gè)或多個(gè)權(quán)利要求中明確敘述了,否則就不應(yīng)當(dāng)被認(rèn)為是所附權(quán)利要求的元素或者限制。同樣地,對“本發(fā)明”的描述不應(yīng)該被認(rèn)為是對此處公開的任何發(fā)明主題的概括,并且不應(yīng)該被認(rèn)為是所附權(quán)利要求的元素或者限制,除非在一個(gè)或多個(gè)權(quán)利要求中明確敘述了。
示例性的系統(tǒng)圖1是舉例說明依照本發(fā)明一個(gè)實(shí)施例的耦合至I/O設(shè)備104的中央處理單元(CPU)102的框圖。在一個(gè)實(shí)施例中,所述CPU 102可以駐留在計(jì)算機(jī)系統(tǒng)100內(nèi),所述計(jì)算機(jī)系統(tǒng)100諸如為個(gè)人計(jì)算機(jī)或者游戲系統(tǒng)。所述I/O設(shè)備104也可以駐留在同一計(jì)算機(jī)系統(tǒng)內(nèi)。在現(xiàn)代計(jì)算系統(tǒng)中,可以有多個(gè)附連于CPU 102的I/O設(shè)備104。例如,I/O設(shè)備104可以包含聲卡、視頻卡或者鍵盤。在計(jì)算系統(tǒng)內(nèi)部,I/O設(shè)備104可以通過總線物理地附連于CPU 102。
I/O設(shè)備104將向CPU發(fā)送命令以便執(zhí)行。CPU可以利用結(jié)果來對I/O設(shè)備104做出響應(yīng)。在一個(gè)實(shí)施例中,命令處理系統(tǒng)108可以駐留在CPU 102內(nèi)。在命令處理系統(tǒng)內(nèi),從I/O設(shè)備104發(fā)送的命令被存儲并且準(zhǔn)備好由CPU 102來執(zhí)行。
CPU 102還可以包含I/O地址轉(zhuǎn)換邏輯114,以便幫助把命令的I/O虛擬存儲器地址轉(zhuǎn)換為物理存儲器地址。I/O地址轉(zhuǎn)換邏輯114可以包含轉(zhuǎn)換處理邏輯116和I/O地址轉(zhuǎn)換高速緩存112,以便于I/O地址轉(zhuǎn)換。I/O地址轉(zhuǎn)換邏輯114還可以包含用于執(zhí)行涉及處理I/O地址轉(zhuǎn)換高速緩存未命中的邏輯。此邏輯可以包括但是不局限于故障檢查和生成邏輯122;異常命令隊(duì)列118;命令重新發(fā)布邏輯120;異常狀態(tài)寄存器128;和虛擬通道清除寄存器130。
CPU 102還可以包含用于執(zhí)行已準(zhǔn)備好進(jìn)行處理的命令的嵌入式處理器124,存儲器110和片上數(shù)據(jù)總線140。嵌入式處理器124可以執(zhí)行軟件126。
示例性的操作圖2是舉例說明依照本發(fā)明一個(gè)實(shí)施例的用于執(zhí)行I/O地址轉(zhuǎn)換的方法200的流程圖。方法200可以從步驟205開始,其中CPU 102檢測到因I/O設(shè)備發(fā)送的命令而造成的高速緩存未命中。在將I/O命令的I/O虛擬存儲器地址提供給I/O地址轉(zhuǎn)換高速緩存112之后,可以通過轉(zhuǎn)換處理邏輯116來檢測高速緩存未命中。如果在I/O地址轉(zhuǎn)換高速緩存112中沒有I/O命令的I/O虛擬存儲器地址,那么將出現(xiàn)高速緩存未命中。在步驟205中已經(jīng)出現(xiàn)了高速緩存未命中之后,所述轉(zhuǎn)換處理邏輯116可以把命令放置到緩沖器中,如步驟210所示。此緩沖器可以包含多個(gè)異常命令隊(duì)列118,所述異常命令隊(duì)列可以依照發(fā)送命令的I/O設(shè)備來組織命令。邏輯可以依照IOID(輸入/輸出標(biāo)識)和/或?qū)?yīng)于發(fā)送引起高速緩存未命中的命令的I/O設(shè)備的虛擬通道來組織命令。
CPU 102內(nèi)的用于檢測高速緩存未命中的邏輯還可以向CPU102內(nèi)的軟件或者其它硬件通知高速緩存未命中已經(jīng)出現(xiàn)了。高速緩存未命中的通知可以通過在CPU 102內(nèi)生成異常來進(jìn)行。在已經(jīng)把命令置于緩沖器或異常命令隊(duì)列118中之后,轉(zhuǎn)換處理邏輯116可以對從I/O設(shè)備接收的其它命令繼續(xù)轉(zhuǎn)換地址。同時(shí),在步驟220,響應(yīng)于所述異常,在CPU 102內(nèi)的嵌入式處理器124或者其它邏輯上執(zhí)行的軟件可以執(zhí)行多個(gè)進(jìn)程,以便取出轉(zhuǎn)換引起高速緩存未命中的命令的I/O虛擬存儲器地址所需的物理存儲器地址。在已經(jīng)從存儲器中取出所述命令的物理存儲器地址之后,可以把物理存儲器地址置于I/O地址轉(zhuǎn)換高速緩存112中。一旦物理存儲器地址處于I/O地址轉(zhuǎn)換高速緩存112中了,就可以在步驟225中從異常命令隊(duì)列向轉(zhuǎn)換處理邏輯116重新發(fā)布命令。所述轉(zhuǎn)換處理邏輯現(xiàn)在可以執(zhí)行操作以便把I/O命令的I/O虛擬存儲器地址轉(zhuǎn)換為對應(yīng)的物理存儲器地址。
圖3A和3B舉例說明了與按照圖2的方法200所描述的方法相比更為詳細(xì)的用于執(zhí)行I/O地址轉(zhuǎn)換的方法300。圖3A是舉例說明依照本發(fā)明一個(gè)實(shí)施例的用于執(zhí)行I/O地址轉(zhuǎn)換的方法300的流程圖。方法300從步驟305開始,這時(shí),I/O設(shè)備104向CPU 102發(fā)送命令。此命令可以是由I/O設(shè)備104發(fā)送給CPU 102以便進(jìn)行處理的任何命令。例如,所述命令可以是從存儲器中進(jìn)行加載的命令或者向存儲器中進(jìn)行存儲的命令。
接下來,在步驟310,轉(zhuǎn)換處理邏輯116可以向I/O地址轉(zhuǎn)換高速緩存112提供所述I/O命令的I/O虛擬存儲器地址,以便確定對應(yīng)的物理存儲器地址是否存在于I/O地址轉(zhuǎn)換高速緩存112中。倘若如此,那么轉(zhuǎn)換處理邏輯116可以在步驟325執(zhí)行涉及I/O地址轉(zhuǎn)換的操作。這些操作可以包括用I/O地址轉(zhuǎn)換高速緩存112中存在的對應(yīng)物理存儲器地址來替換所述命令的I/O虛擬存儲器地址。接下來,在步驟325,命令可以被返回到命令處理邏輯108。在命令處理邏輯108接收到所述命令之后,可以將其發(fā)布到片上總線140上以便進(jìn)行進(jìn)一步處理。
然而,如果在I/O地址轉(zhuǎn)換高速緩存112中不存在對應(yīng)于I/O虛擬存儲器地址的物理存儲器地址(即,高速緩存未命中),那么在步驟330可以執(zhí)行操作,以便向嵌入式處理器124警告高速緩存未命中。
在本發(fā)明的一個(gè)實(shí)施例中,可以通過使用故障檢查和生成邏輯122來向嵌入式處理器警告高速緩存未命中。如果I/O地址轉(zhuǎn)換高速緩存未命中已經(jīng)出現(xiàn),那么轉(zhuǎn)換處理邏輯116可以生成異常,所述異常向處理器124指明I/O地址轉(zhuǎn)換高速緩存未命中已經(jīng)出現(xiàn)了。接下來,在步驟335,所述故障檢查和生成邏輯122可以在異常狀態(tài)寄存器128中設(shè)置對應(yīng)于發(fā)送引起了高速緩存未命中的命令的虛擬通道(即,I/O設(shè)備)的狀態(tài)位。
然后,在步驟340,所述轉(zhuǎn)換處理邏輯116可以把引起了高速緩存未命中的I/O命令推入到異常命令隊(duì)列118中。依照本發(fā)明的一個(gè)實(shí)施例,所述異常命令隊(duì)列118可以是先進(jìn)先出命令隊(duì)列。所述異常命令隊(duì)列118可以保持許多引起了I/O地址轉(zhuǎn)換高速緩存未命中的I/O命令,并且根據(jù)從中發(fā)送所述命令的虛擬通道來把它們分配給一個(gè)隊(duì)列。每一虛擬通道異常命令隊(duì)列還可以保持來自同一虛擬通道的后續(xù)命令。這樣做可確保來自同一虛擬通道的命令按次序執(zhí)行,同時(shí)允許來自不同虛擬通道的后續(xù)命令繼續(xù)進(jìn)行。
在嵌入式處理器124上執(zhí)行的軟件126可以通過執(zhí)行異常處理代碼來對由故障檢查和生成邏輯122生成的異常做出響應(yīng)。現(xiàn)在參考圖3B,在步驟355,軟件126可以確定是否應(yīng)該執(zhí)行涉及由故障檢查和生成邏輯122生成的異常的操作。倘若如此,則軟件可以在步驟370中運(yùn)行適當(dāng)?shù)漠惓L幚泶a。在步驟370,軟件126可以執(zhí)行多個(gè)動作以便把正確的信息加載到I/O地址轉(zhuǎn)換高速緩存112中。例如,軟件可以把一個(gè)或多個(gè)正確的I/O地址轉(zhuǎn)換表?xiàng)l目經(jīng)由一系列寫操作直接加載到I/O地址轉(zhuǎn)換高速緩存112中。
一旦I/O地址轉(zhuǎn)換高速緩存112已經(jīng)加載了引起I/O地址轉(zhuǎn)換高速緩存112未命中的I/O命令的正確的I/O地址轉(zhuǎn)換表?xiàng)l目,那么軟件就可以在步驟371中通過對虛擬通道清除寄存器130進(jìn)行寫操作,來清除異常狀態(tài)寄存器128中的對應(yīng)于I/O命令的虛擬通道的位。對虛擬通道清除寄存器130進(jìn)行寫操作,還可以向命令重新發(fā)布邏輯120指明在異常命令隊(duì)列118中等待的命令準(zhǔn)備好進(jìn)行I/O地址轉(zhuǎn)換。因此,在步驟372,命令重新發(fā)布邏輯120可以通知轉(zhuǎn)換處理邏輯116,轉(zhuǎn)換處理邏輯116隨后從異常命令隊(duì)列118中讀取所述命令,所述命令對應(yīng)于在步驟371向其進(jìn)行寫操作的虛擬通道。
在步驟373中把命令讀入轉(zhuǎn)換處理邏輯116之后,所述轉(zhuǎn)換處理邏輯116可以再次執(zhí)行涉及I/O地址轉(zhuǎn)換的操作(步驟373)。這些操作可以包括向I/O地址轉(zhuǎn)換高速緩存112提供所述I/O命令的I/O虛擬存儲器地址,以便確定所述命令的對應(yīng)物理存儲器地址。因在步驟370中由軟件126執(zhí)行的操作,物理存儲器地址現(xiàn)在應(yīng)該存在于I/O地址轉(zhuǎn)換高速緩存112中。I/O地址轉(zhuǎn)換操作還可以包括用I/O地址轉(zhuǎn)換高速緩存112中存在的對應(yīng)物理存儲器地址來替換所述命令的I/O虛擬存儲器地址。接下來,在步驟375,目前包含物理存儲器地址的命令可以被返回給命令處理邏輯108。在命令處理邏輯108接收到所述命令之后,可以將該命令發(fā)布到片上總線140上以便進(jìn)行進(jìn)一步處理。
返回到步驟355,如果軟件126決定不應(yīng)該執(zhí)行操作來處理由故障檢查和生成邏輯122生成的異常,那么軟件可以在虛擬通道清除寄存器130中設(shè)置對應(yīng)于發(fā)送所述命令的I/O設(shè)備的虛擬通道的故障拒絕位(步驟380)。在虛擬通道清除寄存器130中設(shè)置故障拒絕位,可以開始多個(gè)動作。在步驟381,故障拒絕位可以使命令重新發(fā)布邏輯120從異常命令隊(duì)列118中丟棄相應(yīng)的命令條目。在步驟380中設(shè)置故障拒絕位,還可以向命令處理邏輯108發(fā)送信號(步驟382)。此信號可以向命令處理邏輯108指明它可以向最初發(fā)送引起了I/O地址轉(zhuǎn)換高速緩存未命中的I/O命令的I/O設(shè)備發(fā)送錯(cuò)誤消息(步驟383)。在虛擬通道清除寄存器130中設(shè)置故障拒絕位,還可以清除異常狀態(tài)寄存器128中的相應(yīng)虛擬通道位。
結(jié)束語本發(fā)明的實(shí)施例提供了用于處理由I/O命令引起的I/O地址轉(zhuǎn)換高速緩存未命中的改進(jìn)技術(shù)。對于某些實(shí)施例來說,CPU可以在CPU內(nèi)緩存引起I/O地址轉(zhuǎn)換高速緩存未命中的I/O命令。當(dāng)由CPU緩存所述命令時(shí),軟件可以從存儲器中取出先前未命中的數(shù)據(jù),并且將其置于I/O地址轉(zhuǎn)換高速緩存中。一旦數(shù)據(jù)處于I/O地址轉(zhuǎn)換高速緩存中了,CPU就可以轉(zhuǎn)換已緩存的命令的地址。這樣,CPU可以提供I/O地址轉(zhuǎn)換,而無需向I/O設(shè)備通知I/O地址轉(zhuǎn)換高速緩存未命中的出現(xiàn)。
雖然上文是針對本發(fā)明的實(shí)施例的,但是在不脫離本發(fā)明的基本范圍的情況下,可以設(shè)計(jì)出其它實(shí)施例和進(jìn)一步的實(shí)施例,并且本發(fā)明的范圍由隨后的權(quán)利要求書來確定。
權(quán)利要求
1.一種用于處理由一個(gè)或多個(gè)I/O命令引起的I/O地址轉(zhuǎn)換高速緩存未命中的方法,其中所述一個(gè)或多個(gè)I/O命令是由一個(gè)或多個(gè)I/O設(shè)備發(fā)送至中央處理單元的,所述方法包括在中央處理單元、即CPU內(nèi),在一個(gè)或多個(gè)命令隊(duì)列中緩存一個(gè)或多個(gè)I/O命令;從存儲器中取出至少一個(gè)I/O地址轉(zhuǎn)換表?xiàng)l目,并且把I/O地址轉(zhuǎn)換表?xiàng)l目放置在I/O地址轉(zhuǎn)換高速緩存中;并且執(zhí)行下述操作中的至少一個(gè)重新發(fā)布一個(gè)或多個(gè)I/O命令以便進(jìn)行I/O地址轉(zhuǎn)換,或者向發(fā)送一個(gè)或多個(gè)I/O命令至CPU的一個(gè)或多個(gè)I/O設(shè)備發(fā)送錯(cuò)誤消息。
2.如權(quán)利要求1所述的方法,還包括當(dāng)一個(gè)或多個(gè)I/O命令引起I/O地址轉(zhuǎn)換高速緩存未命中時(shí),在中央處理單元中生成異常。
3.如權(quán)利要求2所述的方法,還包括當(dāng)一個(gè)或多個(gè)I/O命令引起I/O地址轉(zhuǎn)換高速緩存未命中時(shí),在異常狀態(tài)寄存器中設(shè)置對應(yīng)于在其上把一個(gè)或多個(gè)I/O命令發(fā)送給CPU的一個(gè)或多個(gè)虛擬通道的位。
4.如權(quán)利要求1所述的方法,還包括響應(yīng)于取出I/O地址轉(zhuǎn)換表?xiàng)l目,軟件清除異常狀態(tài)寄存器中的位。
5.如權(quán)利要求4所述的方法,還包括響應(yīng)于軟件清除異常狀態(tài)寄存器中的位,而執(zhí)行下述操作中的至少一個(gè)響應(yīng)于軟件清除異常狀態(tài)位而重新發(fā)布一個(gè)或多個(gè)命令以便進(jìn)行I/O地址轉(zhuǎn)換,或者響應(yīng)于軟件設(shè)置故障拒絕位而向發(fā)送I/O命令至中央處理單元的一個(gè)或多個(gè)設(shè)備發(fā)送錯(cuò)誤消息。
6.如權(quán)利要求1所述的方法,其中,從存儲器中取出I/O地址轉(zhuǎn)換表?xiàng)l目并且將其放置在I/O地址轉(zhuǎn)換高速緩存中是由軟件處理的。
7.如權(quán)利要求1所述的方法,其中,一個(gè)或多個(gè)命令隊(duì)列存儲與在其上把一個(gè)或多個(gè)I/O命令發(fā)送給中央處理單元的同一虛擬通道相對應(yīng)的一個(gè)或多個(gè)I/O命令。
8.如權(quán)利要求7所述的方法,其中,以虛擬通道為基礎(chǔ)來重新發(fā)布一個(gè)或多個(gè)I/O命令。
9.如權(quán)利要求7所述的方法,其中,向發(fā)送一個(gè)或多個(gè)I/O命令至CPU的一個(gè)或多個(gè)I/O設(shè)備發(fā)送錯(cuò)誤消息的步驟還包括以每一虛擬通道為基礎(chǔ),從一個(gè)或多個(gè)命令隊(duì)列中丟棄一個(gè)或多個(gè)命令。
10.一種中央處理單元、即CPU,包括I/O地址轉(zhuǎn)換高速緩存;一個(gè)或多個(gè)異常命令隊(duì)列;以及命令處理邏輯,被配置為在一個(gè)或多個(gè)異常命令隊(duì)列中緩存引起I/O地址轉(zhuǎn)換高速緩存未命中的一個(gè)或多個(gè)I/O命令,并且在異常之后,在軟件控制下,加載所述I/O地址轉(zhuǎn)換高速緩存,并且執(zhí)行下述操作中的至少一個(gè)重新發(fā)布一個(gè)或多個(gè)I/O命令以便進(jìn)行I/O地址轉(zhuǎn)換,或者向發(fā)送一個(gè)或多個(gè)I/O命令至CPU的一個(gè)或多個(gè)I/O設(shè)備發(fā)送錯(cuò)誤消息。
11.如權(quán)利要求10所述的CPU,其中所述命令處理邏輯還被配置為當(dāng)一個(gè)或多個(gè)I/O命令引起I/O地址轉(zhuǎn)換高速緩存未命中時(shí),在CPU中生成異常,并且所述命令處理邏輯被配置為使軟件處理高速緩存未命中;并且當(dāng)一個(gè)或多個(gè)I/O命令引起I/O地址轉(zhuǎn)換高速緩存未命中時(shí),在異常狀態(tài)寄存器中設(shè)置與在其上把一個(gè)或多個(gè)I/O命令發(fā)送給CPU的一個(gè)或多個(gè)虛擬通道相對應(yīng)的位。
12.如權(quán)利要求10所述的CPU,還包括下述中的至少一個(gè)具有可以由軟件清除的位的異常狀態(tài)寄存器,或者具有可以由軟件設(shè)置的故障拒絕位的虛擬通道清除寄存器。
13.如權(quán)利要求12所述的CPU,其中所述命令處理邏輯在命令隊(duì)列內(nèi)緩存與在其上將一個(gè)或多個(gè)I/O命令發(fā)送給CPU的一個(gè)或多個(gè)虛擬通道相對應(yīng)的一個(gè)或多個(gè)I/O命令;并且其中所述命令處理邏輯還被配置為響應(yīng)于異常狀態(tài)寄存器中的清除了的位而以虛擬通道為基礎(chǔ)來重新發(fā)布一個(gè)或多個(gè)I/O命令。
14.如權(quán)利要求12所述的CPU,其中響應(yīng)于在虛擬通道清除寄存器中設(shè)置故障拒絕位,所述命令處理邏輯還被配置為以虛擬通道為基礎(chǔ)向發(fā)送一個(gè)或多個(gè)I/O命令至CPU的一個(gè)或多個(gè)I/O設(shè)備發(fā)送錯(cuò)誤消息,并且從命令隊(duì)列中丟棄對應(yīng)于發(fā)送一個(gè)或多個(gè)命令至CPU的I/O設(shè)備的一個(gè)或多個(gè)命令。
15.一種系統(tǒng),包括一個(gè)或多個(gè)輸入/輸出設(shè)備、即I/O設(shè)備;以及中央處理單元、即CPU,其中所述CPU包括一個(gè)或多個(gè)異常命令隊(duì)列,I/O地址轉(zhuǎn)換高速緩存,以及命令處理邏輯,其被配置為在一個(gè)或多個(gè)異常命令隊(duì)列中緩存引起I/O地址轉(zhuǎn)換高速緩存未命中的一個(gè)或多個(gè)I/O命令;在異常之后,在軟件控制下加載所述I/O地址轉(zhuǎn)換高速緩存;并且執(zhí)行下述操作中的至少一個(gè)重新發(fā)布一個(gè)或多個(gè)I/O命令以便進(jìn)行I/O地址轉(zhuǎn)換,或者向發(fā)送一個(gè)或多個(gè)I/O命令至CPU的一個(gè)或多個(gè)I/O設(shè)備發(fā)送錯(cuò)誤消息。
16.如權(quán)利要求15所述的系統(tǒng),其中,所述CPU還被配置為當(dāng)一個(gè)或多個(gè)I/O命令引起I/O地址轉(zhuǎn)換高速緩存未命中時(shí),在中央處理單元中生成異常,并且所述命令處理邏輯被配置為使軟件處理高速緩存未命中;并且當(dāng)一個(gè)或多個(gè)I/O命令引起I/O地址轉(zhuǎn)換高速緩存未命中時(shí),在異常狀態(tài)寄存器中設(shè)置與在其上把一個(gè)或多個(gè)I/O命令發(fā)送給CPU的一個(gè)或多個(gè)虛擬通道相對應(yīng)的位。
17.如權(quán)利要求15所述的系統(tǒng),其中,所述命令處理邏輯在一個(gè)或多個(gè)異常命令隊(duì)列中緩存與在其上把一個(gè)或多個(gè)I/O命令發(fā)送給CPU的一個(gè)或多個(gè)虛擬通道相對應(yīng)的一個(gè)或多個(gè)I/O命令。
18.如權(quán)利要求15所述的系統(tǒng),其中,所述CPU還包括下述中的至少一個(gè)具有可以由軟件清除的位的異常狀態(tài)寄存器,或者具有可以由軟件設(shè)置的故障拒絕位的虛擬通道清除寄存器。
19.如權(quán)利要求18所述的系統(tǒng),其中,響應(yīng)于清除異常狀態(tài)寄存器中的位,所述命令處理邏輯還被配置為以虛擬通道為基礎(chǔ)來重新發(fā)布一個(gè)或多個(gè)I/O命令。
20.如權(quán)利要求18所述的系統(tǒng),其中,響應(yīng)于在虛擬通道清除寄存器中設(shè)置故障拒絕位,所述命令處理邏輯還被配置為當(dāng)命令處理邏輯向發(fā)送一個(gè)或多個(gè)I/O命令至CPU的一個(gè)或多個(gè)I/O設(shè)備發(fā)送錯(cuò)誤消息時(shí),從一個(gè)或多個(gè)命令隊(duì)列中丟棄一個(gè)或多個(gè)命令。
全文摘要
本發(fā)明的實(shí)施例總體上提供了一種用于在CPU內(nèi)處理由I/O命令引起的I/O地址轉(zhuǎn)換高速緩存未命中的改進(jìn)技術(shù)。對于某些實(shí)施例來說,CPU硬件可以在命令隊(duì)列中緩存引起I/O地址轉(zhuǎn)換高速緩存未命中的I/O命令,直到用必要的信息更新了I/O地址轉(zhuǎn)換高速緩存為止。當(dāng)I/O地址轉(zhuǎn)換高速緩存已經(jīng)被更新時(shí),CPU可以從命令隊(duì)列中重新發(fā)布I/O命令,在適當(dāng)?shù)臅r(shí)間轉(zhuǎn)換I/O命令的地址,并且執(zhí)行所述命令,就好像高速緩存未命中沒有出現(xiàn)過一樣。這樣,I/O設(shè)備不需要處理來自CPU的錯(cuò)誤響應(yīng),所述I/O命令由CPU來處理,并且不會丟棄I/O命令。
文檔編號G06F12/10GK101055546SQ20071000623
公開日2007年10月17日 申請日期2007年2月7日 優(yōu)先權(quán)日2006年4月13日
發(fā)明者查德·B.·麥克布里德, 安德魯·H.·沃特雷恩, 約翰·D.·艾利史 申請人:國際商業(yè)機(jī)器公司