專利名稱:多個轉換高速緩存缺失的處理方法和系統(tǒng)的制作方法
技術領域:
本發(fā)明總體上涉及處理命令隊列中的命令。更具體地,本發(fā)明涉及在地址轉換中發(fā)生多個高速緩存缺失(miss,未找到,未命中)之后保持命令隊列中的命令排序。
背景技術:
計算系統(tǒng)通常包括一個或者多個通信耦合到內存(memory,存儲器,記憶體)和輸入輸出(IO)設備的中央處理器(CPU)。內存可以是包含計算機執(zhí)行計算所必需的一個或者多個程序和數(shù)據(jù)的隨機存取存儲器(RAM)。例如,內存可以包含用于對數(shù)據(jù)加密的程序以及要被加密的數(shù)據(jù)。IO設備可以包括視頻卡、聲卡、圖形處理單元等,被配置為發(fā)出命令和從CPU接收響應。
CPU可以解釋和執(zhí)行從內存或者IO設備接收到的一個或者多個命令。例如,系統(tǒng)可以接收將兩個數(shù)相加的請求。CPU可以執(zhí)行包含所述將兩個數(shù)相加的邏輯的程序(在內存中)的命令的序列。CPU還可以從輸入設備接收輸入兩個要相加的數(shù)的用戶輸入。在計算的末尾,CPU可以在輸出設備比如顯示屏上顯示結果。
由于在處理了前一命令之后發(fā)送來自設備的下一個命令可能需要比較長的時間,在此期間CPU可能不得不保持空閑狀態(tài),這樣來自設備的多個命令就可能在CPU中的命令隊列中排隊。因此,CPU可以在處理了上一個命令之后快速訪問下一個命令。由于命令之間的相關性,CPU可能被要求按照給定的順序執(zhí)行命令。因此,可以將命令置于隊列中,按照先進先出(FIFO)的順序處理,以確保相關的命令按照正確的順序被執(zhí)行。例如,如果在某個內存位置的讀操作在該內存位置的寫操作之后,則必須首先執(zhí)行寫操作,以確保在讀操作期間讀出正確的數(shù)據(jù)。因此,源自同一I/O設備的命令可以由CPU按照它們被接收到的順序加以處理,而來自不同設備的命令可以亂序處理。
CPU接收的命令可以大致分類為(a)要求地址轉換的命令以及(b)沒有地址的命令。沒有地址的命令可以包括中斷和同步命令,比如PowerPC的eieio(Enforce In-order Execution of Input/Output,按順序執(zhí)行輸入輸出)命令。中斷命令可以是從設備到CPU,請求CPU將正在做的事情擱置一邊,做別的事情的命令??梢园l(fā)出同步命令,使得在該同步命令之前的所有命令被處理完之前不處理隨后的命令。因為沒有地址與這些命令相關聯(lián),它們可以不需要地址轉換。
要求地址轉換的命令包括讀命令和寫命令。讀命令可以包括要讀的數(shù)據(jù)的位置的地址。類似地,寫命令可以包括要寫入數(shù)據(jù)的位置的地址。因為在命令中提供的地址可以是虛擬地址,在執(zhí)行讀或寫之前,該地址可能需要轉換為內存中的實際物理地址。
地址轉換可能需要查找段表和/或頁表,以用物理地址匹配虛擬地址。對于最近的目標地址,頁表和段表條目可以被保持在高速緩存中,以便快速高效地訪問。但是,即使通過高速緩存進行快速高效的訪問,在地址轉換過程中,隨后的命令也可能在流水線中停頓下來。對這種問題的一個解決辦法是在地址轉換的過程中處理命令隊列中隨后的命令。但是,對于來自同一I/O設備的命令,仍必須保持命令順序。
如果在轉換期間在高速緩存中沒有找到將虛擬地址轉換為物理地址的表條目,則可能不得不從內存取該條目。在未找到轉換高速緩存時的取條目操作會導致實質性的等待時間。當對某個命令發(fā)生了轉換高速緩存缺失時,隨后的命令的地址轉換可能仍在繼續(xù)。但是,系統(tǒng)可能只允許一個轉換高速緩存缺失。因此,只有那些轉換高速緩存命中(hit,找到)(缺失之后的命中,即未找到之后的找到)的隨后的命令,或者那些不要求地址轉換的命令,才能在處理轉換高速緩存缺失的同時被處理。因為對轉換高速緩存缺失的處理可能要花較長時間,在處理第一個轉換高速緩存缺失的同時發(fā)生第二個轉換高速緩存缺失的概率比較高。
對這種問題的一種解決方案是一次只處理一個命令。但是,如上所述,這可能導致性能的嚴重下降,因為在地址轉換期間命令可能在流水線中停頓下來。另一種解決方案是包括處理多個缺失的硬件。但是,對于必須要處理的每一個增加的多個缺失,這種解決方案可能使系統(tǒng)越來越復雜。還有一種解決方案可以是轉換高速緩存的預載入,其中用軟件確保沒有缺失的情況。但是,這種解決方案導致了不受歡迎的大量軟件開銷。
因此,需要高效處理命令隊列中的多個高速緩存缺失的系統(tǒng)和方法。
發(fā)明內容
本發(fā)明總體上提供了用于處理命令隊列中的命令的方法系統(tǒng)。更具體地,本發(fā)明涉及在地址轉換中發(fā)生多個高速緩存缺失之后保持命令隊列中的命令排序。
本發(fā)明的一種實施方式提供了一種用于處理命令隊列中的多個轉換高速緩存缺失的方法,所述命令隊列中存儲了從一個或者多個輸入輸出設備接收到的命令序列。該方法總體上包括將命令隊列中的第一命令的目標地址發(fā)送給地址轉換邏輯以被轉換,如果判定在包含命令隊列中的第一命令的目標地址的虛擬到實際轉換的轉換邏輯的地址轉換表中不存在地址轉換條目,則啟動從內存中取地址轉換條目。該方法還包括在取所述第一命令的條目的同時,處理在該第一命令之后接收到的一個或者多個命令,其中,所述處理包括將命令隊列中第二命令的目標地址發(fā)送到地址轉換邏輯以被轉換,如果判定在包含該第二命令的目標地址的虛擬到實際轉換的轉換邏輯的地址轉換表中不存在地址轉換條目,則停止隨后的命令的處理,直到取到所述第一條目的目標地址的地址轉換條目,其中,停止所述命令的處理包括停止處理命令,并設置指向命令隊列中的第二命令的指針。
本發(fā)明的另一種實施方式提供了一種總體上包括一個或者多個輸入輸出設備和處理器的系統(tǒng)。該處理器總體上包括(i)命令隊列,被配置為存儲從一個或者多個輸入輸出設備接收到的命令序列,(ii)輸入控制器,被配置為以流水線方式處理來自所述命令隊列的命令,(iii)地址轉換邏輯,被配置為使用具有包含虛擬到實際地址轉換的條目的地址轉換表,轉換所述輸入控制器處理的命令的目標地址,以及(iv)控制邏輯,被配置為,如果判定在包含在第一命令之后接收到的第二命令的目標地址的虛擬到實際轉換的轉換邏輯的地址轉換表中不存在地址轉換條目,則停止輸入控制器對在正在取地址轉換條目的第一命令之后收到的命令的處理,直到取到第一命令的目標地址的地址轉換條目,并設置指向所述第二命令在命令隊列中的地址的指針。
本發(fā)明的再一種實施方式包括一種微處理器,其總體上包括(i)命令隊列,被配置為存儲來自輸入輸出設備的命令序列,(ii)輸入控制器,被配置為以流水線方式處理所述命令隊列中的命令,(iii)地址轉換邏輯,被配置為使用高速緩存的地址轉換條目將虛擬地址轉換為物理地址,如果在高速緩存中未找到某個命令的地址轉換條目,則從內存中取對應的地址轉換條目,以及(iv)輸出控制器,被配置為,如果檢測到在第一命令之后接收到的第二命令的目標地址的轉換條目在地址轉換表中不存在,則停止處理在第一命令之后收到的命令的處理,直到取到第一命令的目標地址的地址轉換條目,并設置指向所述第二命令在命令隊列中的地址的指針。
為了更好地理解上述特征、優(yōu)點和本發(fā)明的目的,下面參照輔以附解的實施例詳細說明在上面已概要說明的本發(fā)明。
但是應當注意,附圖只是圖解了本發(fā)明的典型實施方式,因此不應視為限制本發(fā)明的范圍,因為本發(fā)明還可以有其他等效的實施方式。
圖1圖解了本發(fā)明的一種實施方式的系統(tǒng)示例;圖2圖解了本發(fā)明的一種實施方式的命令處理器;圖3是由轉換接口輸入控制(translate interface input control)執(zhí)行的處理輸入命令FIFO隊列中的命令的示例操作的流程圖;
圖4是由轉換邏輯執(zhí)行的將虛擬地址轉換為物理地址的示例操作的流程圖;圖5是由轉換接口輸出控制(translate interface output control)執(zhí)行的處理多個轉換高速緩存缺失的示例操作的流程圖;圖6是在重新處理導致缺失之后又缺失的命令之前執(zhí)行的刷新流水線的示例操作的流程圖。
具體實施例方式
本發(fā)明的實施方式提供了在處理多個轉換高速緩存缺失的同時保持處理命令隊列中的命令時的命令順序的方法和系統(tǒng)。命令可以在CPU中的輸入命令隊列中排隊。在命令的地址轉換期間,可以處理后面的命令以提高效率。處理后的命令可以放在輸出隊列中,由輸入輸出設備按順序送給CPU。在地址轉換期間,如果在正在處理尚未解決的缺失的同時又發(fā)生轉換高速緩存缺失,則可以使流水線停頓,可以在處理了第一個缺失之后再處理導致第二個缺失的命令和所有隨后的命令。
下面的說明將參照本發(fā)明的一些實施方式。但是,應當理解,本發(fā)明不限于這里具體描述的實施方式。相反,下面的特征和元素無論是否和不同的實施方式相關,都可以想到對它們進行任意組合來實現(xiàn)和實施本發(fā)明。另外,在各種實施方式中,本發(fā)明提供了許多相對于現(xiàn)有技術的優(yōu)點。但是,盡管本發(fā)明的實施方式可以實現(xiàn)相對于現(xiàn)有技術和/或其他可能解決方案的優(yōu)點,但是某一給定實施方式是否實現(xiàn)某一特定優(yōu)點并不是對本發(fā)明的限制。因此,下面的各個方面、特征、實施方式和優(yōu)點只是說明性的,不應視為所附權利要求的元素或者限制,除非在權利要求書中明確記載。類似地,當說“本發(fā)明”時,不應理解為是對這里所公開的發(fā)明主題的概括,也不應視為所附權利要求的要素或者限制,除非在權利要求書中明確記載。
系統(tǒng)示例圖1圖解了一個系統(tǒng)示例100,其中可以實現(xiàn)本發(fā)明的各實施方式。系統(tǒng)100可以包括通信耦合到輸入輸出(I/O)設備120和內存140的中央處理器(CPU)110。例如,CPU110可以利用總線通過輸入輸出橋120耦合到輸入輸出設備130和內存140。輸入輸出設備130可以被配置為提供對CPU110的輸入,例如,如圖所示,通過命令131。輸入輸出設備的例子包括圖形處理單元、視頻卡、聲卡、動態(tài)隨機存取存儲器(DRAM)等。
輸入輸出設備130也可以被配置為從CPU110接收響應132。響應132例如可以包括可以顯示給用戶的CPU110的計算結果。響應132還可以包括對內存設備比如上述DRAM設備執(zhí)行的寫操作。盡管在圖1中圖解的是一個輸入輸出設備120,但本領域普通技術人員知道可以在同一條或者多條總線上向CPU耦合任意數(shù)量的輸入輸出設備130。
內存140最好是隨機存取存儲器比如動態(tài)隨機存取存儲器(DRAM)。內存140可以足夠大,以保存一個或者多個程序和/或由CPU處理的數(shù)據(jù)結構。盡管內存140被圖示為單個實體,但是應當理解,內存140事實上可以包括多個模塊,并且內存140可以有多種層次,從高速緩存一直到低速但是容量更大的DRAM芯片。
CPU110可以包括命令處理器111、轉換邏輯112、內嵌處理器(embedded processor)113和高速緩存114。命令處理器110可以從輸入輸出設備120接收一個或者多個命令131并處理所述命令。每一個命令131可以寬泛地分類為需要地址轉換的命令和沒有地址的命令。因此,對命令的處理可以包括確定該命令是否要求地址轉換。如果命令需要地址轉換,則命令處理器可以將該命令分派到轉換邏輯112進行地址轉換。在命令131中要求轉換的命令都被轉換后,命令處理器可以將有序的命令133放到芯片內總線117上,由內存控制118上的內嵌處理器113處理。
轉換邏輯112可以從命令處理器111接收一個或者多個要求地址轉換的命令。要求地址轉換的命令例如可以包括讀命令和寫命令。讀命令可以包括要讀的數(shù)據(jù)的位置的地址。類似地,寫操作可以包括數(shù)據(jù)要寫到的位置的地址。
包括在要求轉換的命令中的地址可以是虛擬地址。虛擬地址可以指向分配給特定程序的虛擬內存。虛擬內存可以是分配給該程序的連續(xù)的存儲空間,該空間映射到內存140內的不同的、不相鄰的物理存儲位置。例如,虛擬內存地址可以映射到物理內存(memory)和/或輔助存儲器(secondary storage)中的不同的不相鄰的存儲位置。因此,當使用虛擬內存地址時,虛擬地址必須被轉換為實際的物理地址以對該位置執(zhí)行操作。
地址轉換可能涉及到查找段表和/或頁表。段表和頁表可以將虛擬地址與物理地址相匹配。這些轉換表條目可以駐留在存儲區(qū)140中。最近訪問的數(shù)據(jù)的地址轉換可以被保持在高速緩存114中的段表條目116和頁表條目115中,以減少隨后的對先前訪問過的地址的訪問的轉換時間。如果在高速緩存114中沒有找到某個地址轉換,那么在必要的情況下,可以將所述轉換從內存或者其他存儲器引入所述高速緩存。
段表條目116可以表明虛擬地址是否在被分配給特定程序的存儲段內。段可以是虛擬內存中大小可變的塊,每一個塊被分配給特定的程序或者進程。因此,可以首先訪問段表。如果虛擬地址指向程序的段的邊界之外的區(qū)域,則可能發(fā)生分段錯誤(segmentation fault)。
每一個段可以進一步分為稱為頁的固定大小的塊。虛擬地址可以指向段內所包含的一個或者多個頁。頁表115可以將虛擬地址映射到內存140內的頁。如果在內存中沒有找到某頁,可以從可能駐留有希望的頁的輔助存儲器中取出該頁。
命令處理圖2是根據(jù)本發(fā)明的一種實施方式的命令處理器111的詳細視圖,該命令處理器111可以被配置為處理來自輸入輸出設備130的命令。命令處理器111可以包含輸入命令FIFO201、轉換接口輸入控制(translate interface input control)202、轉換接口輸出控制(translateinterface output control)203和命令FIFO204。輸入命令FIFO201可以是足夠大的緩沖器,以能保持至少預定數(shù)量的可能由輸入輸出設備120發(fā)給CPU的命令131。命令131可以按照其被收到的順序依次放入輸入命令FIFO201中。
轉換接口輸入控制(TIIC)202可以監(jiān)視和管理輸入命令FIFO201。TIIC可以維護讀指針210和寫指針211。讀指針210可以指向輸入命令FIFO中用于處理的下一個可用的命令。寫指針211可以指向輸入命令FIFO中用于寫新接收到的命令的下一個可用的位置。隨著從輸入命令FIFO中取出每一個命令來進行處理,讀指針增一。類似地,隨著從輸入輸出設備接收每一個命令,寫指針也增一。如果讀或寫指針到達輸入命令FIFO的末尾,則可以重置指針,使其在下一次增一時指向輸入命令FIFO的開始。
TIIC202可以被配置為通過防止寫指針的增加超過讀指針,確保輸入命令FIFO不溢出。例如,如果寫指針增加了并指向與讀指針相同的位置,則緩沖器填滿了未被處理的命令。如果再收到任何命令,則TIIC可以發(fā)出出錯消息,指出命令不能被栓鎖在CPU中。
TIIC202還可以判斷在輸入命令FIFO201中收到的命令是否是要求地址轉換的命令。如果收到了要求轉換的命令,則可以將該命令送到轉換邏輯112進行處理。但是,如果該命令不要求地址轉換,則該命令可以在流水線中往下傳。
圖3是由TIIC執(zhí)行的處理輸入命令FIFO中的命令的示例操作的流程圖。TIIC執(zhí)行的操作可以是流水線操作。因此,在任何給定時間可能有多個命令在進程中。例如,TIIC可能從輸入命令FIFO收到第一命令進行處理。在收到第一命令的時候,以前收到的第二命令可以由TIIC發(fā)送給轉換邏輯進行地址轉換。
TIIC中的操作始于步驟301,從輸入命令FIFO接收命令。例如,TIIC可以讀所述讀指針所指的命令。在讀該命令后,讀指針可以增一以指向下一個命令。在步驟302,TIIC可以判斷所取得命令是否要求地址轉換。如判定該命令要求地址轉換,則該命令可以在步驟303被送往轉換邏輯112進行地址轉換。在步驟304,被送往轉換邏輯的該命令的輸入命令FIFO地址可以在流水線中向下傳送。在步驟302,如果判定該命令不要求地址轉換,則可以將該命令和該命令的輸入命令FIFO地址在步驟305在流水線中向下傳送。
現(xiàn)在回到圖2,轉換邏輯112可以處理來自TIIC的地址轉換請求。地址轉換可能涉及查找段表和頁表,以將虛擬地址轉換為內存140中的實際物理地址。在某些實施方案中,轉換邏輯可以允許對頁表和段表高速緩存進行流水線訪問。如果在地址轉換過程中碰到頁或段高速緩存缺失,則在處理該高速緩存缺失的同時,高速緩存可以繼續(xù)對隨后的命令提供高速緩存命中。
如果在地址轉換過程中沒有出現(xiàn)缺失,則轉換邏輯可以向轉換接口輸出控制(TIOC)203提供轉換結果,如圖2所示。但是,如果發(fā)生了缺失的情況,則轉換邏輯可以將導致缺失的命令通知給TIOC。
圖4是由轉換邏輯執(zhí)行的進行地址轉換的示例操作的流程圖。與TIIC一樣,由轉換邏輯執(zhí)行的操作也可以流水線化。因此,在任何給定時間,可以有多個命令在進程中。操作可以開始于步驟401,從TIIC接收進行地址轉換的請求。在步驟402,轉換邏輯可以訪問段表和頁表高速緩存,以取出對應的條目來將虛擬地址轉換為物理地址。在步驟403,如果在高速緩存中找到了對應的頁表和段表條目,則可以將地址轉換結果在步驟404發(fā)送給TIOC。
但是,如果在段表和頁表高速緩存中沒有找到頁表和段表條目,則可在步驟405中將有關該命令地址的轉換缺失的通知發(fā)送給TIOC。在步驟406,轉換邏輯可以啟動缺失處理程序。例如,缺失處理可以包括向內存發(fā)送對對應的頁表和段表條目的請求。
重要的是要注意到,對于某些實施方式,當有未解決的缺失正在被處理時,轉換邏輯只能處理一個轉換高速緩存缺失。如果發(fā)生第二個缺失,則可以將缺失通知發(fā)送給TIOC。下面將詳細討論在正在處理未解決的缺失時對第二個缺失的處理。另外,在正在處理未解決的缺失時,隨后的要求地址轉換的命令可以繼續(xù)被處理。因為從內存或者輔助存儲器取頁表和段表條目可能需要比較長的時間,停止隨后的命令可能使性能產(chǎn)生實質性的下降。因此,在正在處理某個缺失時,可以處理找到了轉換高速緩存的隨后的命令。
處理缺失之后的命中回到圖2,TIOC可以跟蹤正在被轉換邏輯處理的未解決的缺失的數(shù)量,并基于命令之間的相關關系維持命令的排序。例如,TIOC可以接收被送往轉換邏輯進行地址轉換的命令以及不要求地址轉換的命令的輸入命令FIFO地址。如果命令是從同一輸入輸出設備亂序收到的,則TIOC可以將這些命令保持在命令隊列204中,并基于這些命令的輸入命令FIFO地址按照所要求的順序將這些命令分派給CPU。圖2圖解了TIOC存儲在命令隊列204中的命令。如果命令對于輸入輸出設備來說不是亂序的,則TIOC可以如圖所示將命令133分派給CPU。
例如,輸入命令FIFO中的第一命令可能要求地址轉換,可以被轉到轉換邏輯中進行地址轉換。在正在轉換第一命令的同時,依賴于該第一命令、不要求地址轉換的隨后的第二命令可能在第一命令的轉換完成之前傳遞給TIOC。由于所述依賴性,TIOC可以將該第二命令保持在命令隊列中,直到第一命令被處理完。之后,第一命令可以在第二命令之前被分派給CPU。類似地,在正在轉換第一命令的同時,依賴于該第一命令的隨后的第三命令可能命中轉換高速緩存,被傳遞到TIOC。與第二命令一樣,第三命令也可以被保持在命令隊列中,直到第一命令被處理完并被分派。
TIOC還可以監(jiān)視在轉換邏輯中發(fā)生的未命中(缺失)的次數(shù),以識別“缺失之后的缺失”(miss under miss)。如上所述,轉換邏輯中每一次發(fā)生未命中時,可以發(fā)通知給TIOC,識別產(chǎn)生缺失的命令。由于某些實施方式一次只允許處理一個轉換高速緩存缺失,如果在正在處理第一個缺失時發(fā)生第二個缺失,則TIOC可以停止流水線,直到第一個缺失被處理完。圖2圖解了從TIOC發(fā)給TIIC、識別導致第二個缺失的命令的停止流水線信號。
圖5是由TIOC執(zhí)行的處理地址轉換時的缺失(未命中)的示例操作的流程圖。操作始于步驟501,從轉換邏輯接收缺失通知。在步驟502,TIOC判斷是否有別的未解決的缺失正在由轉換邏輯處理。如果沒有未解決的缺失正在由轉換邏輯處理,在步驟511,TIOC記錄該命令的輸入命令FIFO地址。在步驟512,TIOC可以允許處理在導致缺失的命令之后的命令,以提高性能。另一方面,如果在步驟502判定有未解決的缺失正在處理,則可以停止流水線。這可以在步驟503通過向TIIC與導致第二個缺失的命令的輸入命令FIFO地址一起發(fā)送一個停止指示來進行。在步驟504,TIOC可以忽略在導致第二個缺失的命令之后的所有命令。TIOC可以通過它們的輸入命令FIFO地址來確定這些命令。
作為對從TIOC接收到停止通知的響應,TIIC可以停止流水線,不發(fā)出命令,直到有來自TIOC的進一步通知。流水線的停頓可以一直到第一個缺失被處理完,TIOC接收到轉換結果。TIIC也可以將讀指針重置為指向輸入命令FIFO中導致第二個缺失的命令。因此,在完成第一個缺失的處理之后,可以重新發(fā)出導致第二個缺失的命令和隨后的命令。
在重新發(fā)出導致第二個缺失的命令和隨后的命令之前,可以將流水線排干。圖6是在完成了對未解決的轉換高速緩存缺失的處理之后重新發(fā)出導致第二個缺失的命令的示例操作的流程圖。這些操作始于步驟601,即完成第一個缺失的處理。在步驟602,可以由轉換邏輯向TIOC發(fā)出通知,指出已經(jīng)完成第一個缺失的處理。在步驟603,可以將流水線停止一段預定的時間以允許流水線排干。
之后,在步驟604,可以重新開始處理導致第二個缺失的命令以及隨后的命令。重新開始處理導致第二個缺失的命令以及隨后的命令的一種簡單的方式可以是重發(fā)所述命令。例如,TIIC可以從輸入命令FIFO接收導致缺失的第二命令和隨后的命令,并如上所述處理所述命令。這樣就維持了命令的順序。
結論通過在給定命令的地址轉換期間允許處理隨后的命令,總體性能可以大大提高。另外,通過監(jiān)視地址轉換高速緩存的缺失并在發(fā)生“缺失后的缺失”的情況下停止流水線,本發(fā)明的各實施方式可以有助于在處理多個轉換高速緩存缺失時保持命令的順序。
盡管前面針對本發(fā)明的各實施方式進行了描述,也可以想出本發(fā)明的其他的和進一步的實施方式而不偏離本發(fā)明的基本范圍,這種范圍是由所附的權利要求確定的。
權利要求
1.一種用于處理命令隊列中的多個轉換高速緩存缺失的方法,所述命令隊列中存儲了從一個或者多個輸入輸出設備接收到的命令序列,該方法包括將命令隊列中的第一命令的目標地址發(fā)送給地址轉換邏輯以被轉換;如果判定在包含命令隊列中的第一命令的目標地址的虛擬到實際轉換的轉換邏輯的地址轉換表中不存在地址轉換條目,則啟動從存儲器中取地址轉換條目;在取所述第一命令的條目的同時,處理在該第一命令之后接收到的一個或者多個命令,其中,該處理包括將命令隊列中第二命令的目標地址發(fā)送到地址轉換邏輯以被轉換;以及如果判定在包含該第二命令的目標地址的虛擬到實際轉換的轉換邏輯的地址轉換表中不存在地址轉換條目,則停止隨后的命令的處理,直到取到所述第一命令的目標地址的地址轉換條目,其中,停止所述命令的處理包括停止處理命令,并設置指向命令隊列中的第二命令的指針。
2.如權利要求1所述的方法,其中所述命令包括下述命令之一要求地址轉換的命令;和沒有地址的命令。
3.如權利要求1所述的方法,其中,所述地址轉換表包括段表和頁表。
4.如權利要求1所述的方法,其中,所述命令隊列是先進先出隊列。
5.如權利要求1所述的方法,還包括在接收到所述第一命令的地址轉換之后,處理所述第二命令以及第二命令之后的命令。
6.如權利要求1所述的方法,還包括在第二命令隊列中存儲處理后的命令;以及對于每一個輸入輸出設備,按照從所述輸入輸出設備接收所述命令的順序,向CPU發(fā)出處理后的從每一個輸入輸出設備接收到的命令。
7.如權利要求6所述的方法,還包括亂序發(fā)出處理后的從不同的輸入輸出設備接收到的命令。
8.一種系統(tǒng),包括一個或者多個輸入輸出設備;以及處理器,該處理器包括(i)命令隊列,被配置為存儲從所述一個或者多個輸入輸出設備接收到的命令序列,(ii)輸入控制器,被配置為以流水線方式處理來自所述命令隊列的命令,(iii)地址轉換邏輯,被配置為使用具有包含虛擬到實際地址轉換的條目的地址轉換表,轉換所述輸入控制器處理的命令的目標地址,以及(iv)控制邏輯,被配置為如果判定在包含在第一命令之后接收到的第二命令的目標地址的虛擬到實際轉換的轉換邏輯的地址轉換表中不存在地址轉換條目,則停止輸入控制器對在正在取地址轉換條目的第一命令之后收到的命令的處理,直到取到第一命令的目標地址的地址轉換條目,并設置指向所述第二命令在命令隊列中的地址的指針。
9.如權利要求8所述的系統(tǒng),其中,所述地址轉換邏輯還被配置為將轉換后的地址提供給控制邏輯;以及如果在地址轉換表中沒有找到某個地址的轉換,則通知控制邏輯。
10.如權利要求8所述的系統(tǒng),其中,為了停止命令的處理,控制邏輯被配置為向輸入控制器發(fā)送停止信號和第二命令在命令隊列中的地址。
11.如權利要求8所述的系統(tǒng),其中,所述輸入控制器被配置為在取到第一命令的地址轉換之后發(fā)出所述第二命令和隨后的命令。
12.一種微處理器,包括(i)命令隊列,被配置為存儲來自輸入輸出設備的命令序列;(ii)輸入控制器,被配置為以流水線方式處理所述命令隊列中的命令;(iii)地址轉換邏輯,被配置為使用高速緩存的地址轉換條目將虛擬地址轉換為物理地址,如果在高速緩存中未找到某個命令的地址轉換條目,則從存儲器中取對應的地址轉換條目,以及(iv)輸出控制器,被配置為,如果檢測到在第一命令之后接收到的第二命令的目標地址的轉換條目在地址轉換表中不存在,則停止對在第一命令之后收到的命令的處理,直到取到第一命令的目標地址的地址轉換條目,并設置指向所述第二命令在命令隊列中的地址的指針。
13.如權利要求12所述的微處理器,其中,所述命令隊列是先進先出隊列。
14.如權利要求12所述的微處理器,其中,所述地址轉換表是段表和頁表之一。
15.如權利要求12所述的微處理器,其中,響應于命令要求地址轉換的判定,所述輸入控制器被配置為將所述命令發(fā)送給地址轉換邏輯;以及將所述命令在所述命令隊列中的地址發(fā)送給所述輸出控制器。
16.如權利要求12所述的微處理器,其中,所述地址轉換邏輯被進一步配置為將轉換后的地址提供給輸出控制器;以及如果在轉換表中沒有找到某個地址的轉換,則通知輸出控制器。
17.如權利要求12所述的微處理器,其中,為了停止命令的處理,所述輸出控制器被配置為向所述輸入控制器發(fā)送停止信號和第二命令在命令隊列中的地址。
18.如權利要求12所述的微處理器,其中,所述輸入控制器被配置為在取到所述第一命令的地址轉換之后,發(fā)出所述第二命令和隨后的命令。
19.如權利要求12所述的微處理器,其中,所述輸出控制器被進一步配置為;在第二命令隊列中存儲處理后的命令;以及對于每一個輸入輸出設備,按照從該輸入輸出設備接收到命令的順序,向CPU發(fā)送處理后的從該輸入輸出設備接收到的命令。
20.如權利要求19所述的微處理器,其中,所述輸出控制器被進一步配置為亂序發(fā)出處理后的來自不同輸入輸出設備的命令。
全文摘要
本發(fā)明涉及多個轉換高速緩存缺失的處理方法和系統(tǒng)。本發(fā)明的實施方式提供了在處理多個轉換高速緩存缺失的同時處理命令隊列中的命令時保持命令順序的方法和系統(tǒng)。命令可以在CPU中的輸入命令隊列中排隊。在命令的地址轉換期間,可以處理隨后的命令以提高效率。處理后的命令可以放在輸出隊列中并按順序發(fā)給CPU。在地址轉換期間,如果正在處理未解決的缺失的時候發(fā)生轉換高速緩存缺失,則可以停止流水線,在處理完第一個缺失之后重新處理導致第二個缺失的命令以及所有隨后的命令。
文檔編號G06F9/38GK101013402SQ200710001449
公開日2007年8月8日 申請日期2007年1月8日 優(yōu)先權日2006年2月1日
發(fā)明者伊布拉西姆·A.·奧達, 約翰·D.·艾利史, 查德·B.·麥克布里德 申請人:國際商業(yè)機器公司