專利名稱:計算機系統(tǒng)輸入/輸出節(jié)點的外圍接口電路的制作方法
技術領域:
本發(fā)明涉及計算機系統(tǒng)輸入/輸出,特別是輸入/輸出節(jié)點內的外圍事務處理。
背景技術:
在一個典型的計算機系統(tǒng)中,一個或多個處理器可經(jīng)由一個或多個總線而與各輸入/輸出(I/O)設備通信。可通過I/O橋接器將這些I/O設備連接到這些處理器,而I/O橋接器管理連接到這些I/O設備的外圍設備總線與連接到這些處理器的共享總線間的信息傳送。此外,I/O橋接器可管理系統(tǒng)內存與這些I/O設備或系統(tǒng)內存與這些處理器間的信息傳送。
不幸的是,許多總線系統(tǒng)都有數(shù)項缺點。例如,將多個設備連接到總線會使總線上的設備驅動信號呈現(xiàn)很大的電容值。此外,共享總線上的多個連接點在高信號頻率下產(chǎn)生信號反射,因而降低了信號的完整性。因此,通常將總線上的信號頻率保持在較低的頻率,以便將信號完整性維持在可接受的水平。這種較低的信號頻率減小了信號帶寬,因而限制了與該總線連接的各設備的性能。
缺乏對大量設備的擴充性是共享總線系統(tǒng)的另一項缺點。共享總線的可用帶寬大致是固定的(如果增加額外的設備還會使總線上的信號頻率降低,進而使可用帶寬減少)。一旦(直接或間接)連接到總線的設備的帶寬需求超過該總線的可用帶寬時,那么各設備嘗試使用該總線時經(jīng)常會停頓(stall),并且包含共享總線的計算機系統(tǒng)的整體性能將會降低。I/O設備所使用的共享總線的一個例子是外圍設備互連(Peripheral Component Interconnect;簡稱PCI)總線或擴展PCI(PCI-X)總線。
許多I/O橋接設備利用緩沖機制來緩沖儲存自PCI總線到最終目標總線的若干待處理的事務。然而,緩沖可能造成PCI總線上的停頓。當一系列的事務緩沖儲存在一個隊列且等候傳輸?shù)侥繕丝偩€時,可能會造成停頓,進而停止了向前的傳輸。然后容許那些等候的事務完成的一個事務到達了該隊列并儲存在其它的事務之后。為了脫離停頓,必須以某種方式將隊列中的這些事務重新排序,以便優(yōu)先傳輸新到達的事務。因此,為了避免諸如前文所述的情形,PCI總線規(guī)范規(guī)定了一組重新排序規(guī)則,用以管理PCI總線事務的處理及排序。
為了克服共享總線的某些缺點,有些計算機系統(tǒng)在各設備或各節(jié)點之間使用基于數(shù)據(jù)包的通信。在這種系統(tǒng)中,各節(jié)點可通過交換信息數(shù)據(jù)包而相互通信。一般來說,″節(jié)點″是一種可參與連接接口上的事務的設備。例如,連接可以是基于數(shù)據(jù)包的,并且節(jié)點可配置以接收及傳輸數(shù)據(jù)包。一般而言,″數(shù)據(jù)包″是兩個節(jié)點間的通信,而這兩個節(jié)點包含傳輸該數(shù)據(jù)包的起始或″來源″節(jié)點,及接收該數(shù)據(jù)包的目的地或″目標″節(jié)點。當數(shù)據(jù)包到達目標節(jié)點時,目標節(jié)點接收數(shù)據(jù)包所載送的信息,并在內部處理信息。位于來源節(jié)點與目標節(jié)點間的通信路徑上的節(jié)點可將數(shù)據(jù)包自來源節(jié)點轉送或轉交給目標節(jié)點。
此外,有些系統(tǒng)使用基于數(shù)據(jù)包的通信及基于總線的通信的組合。例如,一個可連接到PCI總線及諸如AGP等的圖形總線的系統(tǒng)??蓪CI總線連接到數(shù)據(jù)包總線接口,數(shù)據(jù)包總線接口然后可將PCI總線事務轉換為數(shù)據(jù)包事務,以便在數(shù)據(jù)包總線上傳輸事務。同樣地,可將圖形總線連接到AGP接口,AGP接口可將AGP總線事務轉換為數(shù)據(jù)包事務。每一接口可與主橋接器相通,而主橋接器與其中一個處理器相關聯(lián),或在某些情況下與另一外圍設備相關聯(lián)。
當PCI設備開始事務時,基于數(shù)據(jù)包的事務可能受到PCI局部總線規(guī)范規(guī)定的相同排序規(guī)則的限制。上述的情形也可適用于目標為PCI總線的數(shù)據(jù)包事務。在基于數(shù)據(jù)包的事務中仍然遵守這些排序規(guī)則,這是因為可能在數(shù)據(jù)包總線接口上發(fā)生的事務停頓會在數(shù)據(jù)包總線接口上造成死結(deadlock)。死結可能對數(shù)據(jù)包總線結構造成進一步的停頓。此外,AGP事務可遵循一組事務排序規(guī)則,以便確保資料正確的傳送。
根據(jù)I/O節(jié)點的設定,各事務可沿著朝向主橋接器或離開主橋接器的方向從一個節(jié)點傳送到另一節(jié)點。此外,在本地連接一個特定節(jié)點的外圍設備總線可將各事務注入到該節(jié)點上的數(shù)據(jù)包通信。不論是在哪一種情形,當各事務注入通信路徑或自通信路徑接收各事務時,外圍設備接口電路可緩沖儲存并控制外圍事務發(fā)明內容本發(fā)明揭示了用于計算機系統(tǒng)的I/O節(jié)點的外圍接口電路的各種實施例。在一個具體的實施例中,計算機系統(tǒng)的輸入/輸出節(jié)點的外圍接口電路包含第一緩沖電路、第二緩沖電路及總線接口電路。第一緩沖電路被連接以從諸如接收器等的來源接收數(shù)據(jù)包命令。第一緩沖電路可包含多個第一緩沖器,每個緩沖器對應于多個虛擬信道中的分別的虛擬信道。第二緩沖電路被連接以從總線接口電路接收這些數(shù)據(jù)包命令,且可包含多個第二緩沖器,每個緩沖器對應于多個虛擬信道中的分別的虛擬信道,多個第一及第二緩沖器的每一個可用于儲存屬于各自虛擬信道的所選擇的數(shù)據(jù)包命令。這些多個緩沖器可以用諸如FIFO緩沖器來舉例說明。總線接口電路連接到第一緩沖電路,并可將總線接口電路配置成將第一緩沖電路中儲存的所選擇的數(shù)據(jù)包命令轉換為適于在外圍總線上傳輸?shù)拿?。也可將總線接口電路配置成適于在外圍總線上傳輸?shù)拿钷D換為數(shù)據(jù)包命令。
在一個特定實施例中,外圍接口電路可包含連接到第一緩沖電路及第二緩沖電路的控制邏輯單元。可將控制邏輯單元配置成控制這些數(shù)據(jù)包命令傳送進出總線接口電路。此外,外圍接口電路可包含同樣連接到第一緩沖電路的標識邏輯單元??蓪俗R邏輯單元配置成接收及產(chǎn)生每個數(shù)據(jù)包命令的標識值,該標識值可對應于每個數(shù)據(jù)包命令相對于其它的數(shù)據(jù)包命令的接收順序。外圍接口電路可進一步包含連接到第一緩沖電路的仲裁邏輯單元,且仲裁邏輯單元配置成根據(jù)每個控制命令的標識值來仲裁多個第一緩沖器中儲存的數(shù)據(jù)包命令。
在另一個具體的實施例中,計算機系統(tǒng)包含諸如X86型處理器等的一個或多個處理器,這些處理器通過一條點對點數(shù)據(jù)包總線連接到一個或多個輸入/輸出節(jié)點。該數(shù)據(jù)包總線可以是諸如超傳輸(HyperTransportTM)總線。計算機系統(tǒng)還包含一個或多個外圍總線,這些外圍總線連接而在這些一個或多個輸入/輸出節(jié)點中的分別的輸入/輸出節(jié)點與一個或多個外圍設備之間傳送地址、數(shù)據(jù)及控制信號。外圍總線可以是諸如PCI總線或PCI-X總線等的總線。每個輸入/輸出節(jié)點包含配置成接收第一通信路徑上的第一數(shù)據(jù)包命令的第一收發(fā)器電路以及配置成接收第二通信路徑上的第二數(shù)據(jù)包命令的第二收發(fā)器電路。此外,該I/O節(jié)點包含諸如上述實施例中所述的外圍接口電路的一個或多個外圍接口電路。
圖1為計算機系統(tǒng)的一個具體的實施例的方框圖。
圖2為輸入/輸出節(jié)點的一個具體的實施例的方框圖。
圖3為外圍接口電路的一個具體的實施例的方框圖。
圖4為未公開重新嘗試緩沖電路(non-posted retry buffercircuit)的一個具體的實施例的方框圖。
圖5為處理外圍接口電路實施例中的分割響應指示的流程圖。
圖6為包含緩沖器可用性FIFO結構的緩沖電路的一個具體的實施例的方框圖。
圖7為控制邏輯及儲存單元的一個具體的實施例的示意圖。
圖8為外圍接口電路一個具體的實施例的下游響應事務重新排序操作的流程圖。
圖9為外圍接口電路一個具體的實施例的分割響應操作的流程圖。
圖10為用來連接到圖形總線的外圍接口電路一個具體的實施例的方框圖。
圖11為用來處理圖形響應的外圍接口電路的一個具體的實施例。
圖12為用來將各圖形響應重新排序的設備的一個具體的實施例。
圖13為用于圖形響應的事務重新排序設備一個具體的實施例的操作的流程圖。
具體實施例方式
對本發(fā)明很容易做出各種修改及替代形式,在這里以圖示的方式列舉出本發(fā)明的一些特定實施例,并在本文中詳細說明這些特定實施例。但是,我們應當了解,這些圖示和詳細說明的用意并非將本發(fā)明限制在所揭示的特定形式下,相反地,本發(fā)明將涵蓋在附加的權利要求范圍所界定的本發(fā)明的精神及范圍內的所有修改、等效方式及替代。
現(xiàn)在請參閱圖1,圖中示出計算機系統(tǒng)的一個具體的實施例的方框圖。該計算機系統(tǒng)包含處理器10A-10D,并由一條關聯(lián)數(shù)據(jù)包總線15連接每一處理器。關聯(lián)數(shù)據(jù)包總線15的每一部分可在處理器10A-10D彼此之間形成一條點對點鏈路。雖然圖中示出使用點對點鏈路的是四個處理器,但是請注意,也可使用其它數(shù)目的處理器,以及用其它類型的總線連接這些處理器。該計算機系統(tǒng)還包含三個I/O節(jié)點20、30及40,且I/O數(shù)據(jù)包總線50B及50C分別將每個I/O節(jié)點連接成鏈。I/O數(shù)據(jù)包總線50A連接在主節(jié)點/處理器10A與I/O節(jié)點20之間。處理器10A在圖中示為一主節(jié)點,主節(jié)點可包含用來與I/O數(shù)據(jù)包總線50A相通信的主橋接器。處理器10B-10D也可包含用來與其它的I/O數(shù)據(jù)包總線(圖中未示出)相通信的主橋接器??蓪⒂蒊/O數(shù)據(jù)包總線50A-50C所形成的通信鏈路稱為點對點鏈路。I/O節(jié)點20連接到一對外圍總線25A-25B。I/O節(jié)點30連接到圖形總線35,而I/O節(jié)點40連接到附加的外圍總線45。
處理器10A-10D分別以諸如AthlonTM微處理器等的×86微處理器為例。此外,I/O數(shù)據(jù)包總線50A-50C的一個例子是非關聯(lián)超傳輸總線(HyperTransportTM)。外圍總線25A-25B及外圍總線45以外圍設備互連(PCI)總線或擴展PCI(PCI-X)總線等常見的外圍總線為例。圖形總線35以加速圖形端口(Accelerated Graphics Port;簡稱AGP)為例。然而,我們應當了解,還可使用其它類型的微處理器及其它類型的外圍總線。
請注意,雖然圖示中將三個I/O節(jié)點連接到主處理器10A,但是其它的實施例可以有其它數(shù)目的節(jié)點,且可用其它的拓撲來連接這些節(jié)點。為了易于理解,在圖1中以鏈狀拓撲為例。
在所示的實施例中,處理器10A的主橋接器可自諸如I/O節(jié)點20、30或40等的各下游節(jié)點接收上游數(shù)據(jù)包事務。另外,處理器10A的主橋接器可將數(shù)據(jù)包向下游傳輸?shù)娇蛇B接到外圍總線25A的外圍設備(圖中未示出)一類的設備。
在操作中,I/O節(jié)點20及40可將PCI總線事務轉換為以I/O流的方式傳輸?shù)纳嫌螖?shù)據(jù)包事務,也可將下游數(shù)據(jù)包事務轉換為PCI總線事務。在處理器10A的主橋接器以外的節(jié)點上發(fā)出的所有數(shù)據(jù)包可先向上游流到處理器10A的主橋接器,然后才傳送到任何其它節(jié)點。在處理器10A的主橋接器上發(fā)出的所有數(shù)據(jù)包可向下游流到I/O節(jié)點20、30或40等其它的節(jié)點。在本文的用法中,″上游″(″upstream″)意思是沿著朝向處理器10A的主橋接器的方向的數(shù)據(jù)包輸送流,而″下游″(″downstream″)意思是沿著離開處理器10A的主橋接器的方向的數(shù)據(jù)包輸送流。由單元識別碼(Unit ID)來識別每一I/O流。我們考慮到,單元識別碼可以是數(shù)據(jù)包包頭的一部分,或者是一個或多個數(shù)據(jù)包中的某一其它指定數(shù)目的位。在本文的用法中,″I/O流″意思是包含相同的單元識別碼并因而從相同的節(jié)點發(fā)出的所有數(shù)據(jù)包事務。為了舉例說明,外圍總線45上的外圍設備發(fā)出一目標為外圍總線25上的外圍設備的事務??上葘⑦@個事務轉換為具有唯一的單元識別碼的一個或多個數(shù)據(jù)包,然后向上游傳輸這些數(shù)據(jù)包。請注意,可以用能識別數(shù)據(jù)包的特定信息將每一數(shù)據(jù)包編碼。例如,可將單元識別碼編碼寫入數(shù)據(jù)包包頭。此外,也可將事務類型編碼寫入數(shù)據(jù)包包頭。可將用來識別發(fā)出節(jié)點的單元識別碼指定給每個數(shù)據(jù)包。因為I/O節(jié)點20不會將數(shù)據(jù)包自下游傳送到外圍總線25上的外圍設備,所以數(shù)據(jù)包向上游傳送到處理器10A的主橋接器。處理器10A的主橋接器然后向下游傳送回具有處理器10A的主橋接器的單元識別碼的數(shù)據(jù)包,直到I/O節(jié)點20認出并申明其擁有外圍總線25上的該外圍設備的數(shù)據(jù)包為止。I/O節(jié)點20然后可將這些數(shù)據(jù)包轉換為外圍總線事務,并將這些事務傳送到外圍總線25上的外圍設備。
當數(shù)據(jù)包事務向上游或下游輸送時,這些數(shù)據(jù)包可通過一個或多個I/O節(jié)點。有時將這種通過稱為通道(tunnel)并將該I/O節(jié)點稱為通道設備。自上游傳送到下游或自下游傳送到上游的數(shù)據(jù)包被稱為″轉遞的″(forwarded)通信。此外,在某一特定的I/O節(jié)點上發(fā)出并被插入上游通信的數(shù)據(jù)包通信稱為″注入的″(injected)通信。
詳述如下,為了保留可能連接到I/O節(jié)點的各總線的排序規(guī)則,I/O節(jié)點可提供事務重新排序及數(shù)據(jù)包緩沖儲存。I/O節(jié)點也可包含控制邏輯,用以控制數(shù)據(jù)包自外圍設備流到通道以及自通道流到外圍設備。
請參閱圖2,圖中示出輸入/輸出節(jié)點的一個具體的實施例的方框圖。輸入/輸出節(jié)點100包含收發(fā)器電路110及收發(fā)器電路120。通過I/O通道140將收發(fā)器電路110及120連接在一起。收發(fā)器電路110及120可分別包含發(fā)送器及接收器(圖中未示出)??赏ㄟ^I/O信道140連接這些發(fā)送器及接收器,收發(fā)器110的接收器可連接到收發(fā)器120的發(fā)送器,收發(fā)器120的接收器可連接到收發(fā)器110的發(fā)送器。I/O信道140可包含用來通過I/O節(jié)點100傳送數(shù)據(jù)包通信的命令及數(shù)據(jù)總線。此外,I/O節(jié)點100包含外圍接口電路150,外圍接口電路150也通過I/O通道140連接到收發(fā)器110及120。如前文所述,在外圍接口電路150上發(fā)出并進入I/O通道140的事務可稱之為注入的事務。I/O節(jié)點100還包含通路控制單元130,信道控制單元130連接控制收發(fā)器110及120與外圍接口150間的事務。I/O節(jié)點100通過外圍接口電路150連接到外圍總線220。
在所示的實施例中,收發(fā)器110及120是通過I/O通路140的兩條單向通信路徑的一部分。因為這些通信路徑的每一個都是單向的,所以可連接任一條路徑作為上游或下游路徑。因此,可將來自外圍接口電路150的注入的通信提供給收發(fā)器110及120中的任一收發(fā)器。收發(fā)器110及120可分別接收數(shù)據(jù)包事務,并將這些數(shù)據(jù)包事務放入接收緩沖器(圖中未示出)。當接收每個事務時,可產(chǎn)生包含所接收命令中包含的信息的一部分的控制命令。該控制命令可包含諸如發(fā)出節(jié)點的單元識別碼、目的地信息、數(shù)據(jù)計數(shù)以及事務類型。請注意,該控制命令可包含其它的信息,或者可不包含此處所列出的某些信息??蓪⒃摽刂泼钭允瞻l(fā)器110及120傳送到通路控制單元130。通路控制單元130可進一步?jīng)Q定各個收發(fā)器傳送哪一接收的事務,并向這個收發(fā)器指示將事務傳送到事務的目的地。
在所示的實施例中,可將外圍接口電路150看作具有下游部分及上游部分。下游部分可處理目的地可能是連接到外圍總線220的設備的下游事務。上游部分可處理自可連接到外圍總線220的各設備發(fā)出的事務。因此,外圍接口電路150包含下游命令緩沖器160及下游數(shù)據(jù)緩沖器170,這些緩沖器的每一個都通過通路接口邏輯電路155連接到I/O通道140。下游命令緩沖器160及下游數(shù)據(jù)緩沖器170分別通過總線接口電路210連接到外圍總線220。外圍接口電路150也包含上游命令緩沖器180及上游數(shù)據(jù)緩沖器190,這些緩沖器的每一個都通過通道接口邏輯電路155連接到I/O通道140。上游命令緩沖器180及上游數(shù)據(jù)緩沖器190分別通過總線接口電路210連接到外圍總線220。外圍接口電路150進一步包含控制邏輯單元200,控制邏輯單元200連接到上游命令緩沖器180及下游命令緩沖器160。
請注意,在所示實施例中,外圍總線220所示的是PCI總線、PCI-X總線及AGP總線等各種常見的外圍總線。此外,總線接口電路210可包含用來轉換來自這種總線的外圍總線命令的電路。更進一步,我們考慮到,在某一特定實施例中,總線接口電路210可以是諸如CompaqTMRapid Enabler for PCI-X(CREX)接口等的總線接口。最后,我們考慮到,在某些實施例中,I/O節(jié)點100可包含一個以上的外圍接口電路(圖中未示出),且I/O節(jié)點可包含仲裁邏輯(圖中未示出),該仲裁邏輯可仲裁自這些外圍接口電路中每個電路傳送的命令。
根據(jù)哪一收發(fā)器連接成下游接收器來決定從收發(fā)器電路110還是120傳送事務??蓪⒃撌聞盏拿畈糠謨Υ嬖谙掠蚊罹彌_器160,并可將該事務的數(shù)據(jù)部分儲存在下游數(shù)據(jù)緩沖器170。同樣地,當從總線接口電路210傳送事務時,可將該事務的命令部分儲存在上游命令緩沖器180,并可將該事務的數(shù)據(jù)部分儲存在上游數(shù)據(jù)緩沖器190??蓪⒖刂七壿媶卧?00配置成控制這些事務傳送進出總線接口電路210及I/O信道140。
詳述如下,控制邏輯單元200可響應外圍接口電路150自外圍總線220接收到上游事務,而產(chǎn)生類似于收發(fā)器110及120所產(chǎn)生的控制命令。控制邏輯單元200也可將這些控制命令傳送到通道控制單元130,因而可安排各上游命令進入I/O通道140的調度。此外,控制邏輯單元200可將對應于能讓下游電路維持下游響應事務的相對順序的上游命令的信號提供給下游電路。
請參閱圖3,圖中示出外圍接口電路的一個具體的實施例的方框圖。外圍接口電路350包含下游部分360及上游部分450。外圍接口電路350還包含通道接口邏輯單元355,通道接口邏輯單元355可連接到諸如圖2所示I/O通道140等的I/O通道。在圖3的下游部分360中,通道接口邏輯單元355連接到命令緩沖器370。命令緩沖器370連接到標識邏輯單元380。標識邏輯單元380連接到虛擬信道命令緩沖器390。虛擬信道命令緩沖器390連接到仲裁邏輯單元410,而仲裁邏輯單元410連接到總線接口電路470。虛擬信道命令緩沖器390連接到未公開(NP)重新嘗試隊列420及分割響應隊列430。通道接口邏輯單元355連接到數(shù)據(jù)緩沖器400,而數(shù)據(jù)緩沖器400又連接到總線接口電路470??偩€接口電路470連接到外圍總線560,而外圍總線560連接到外圍設備565。
在上游部分450中,總線接口電路470連接到NP命令緩沖器480、分析邏輯單元500及延遲事務邏輯電路510。此外,總線接口電路470連接到數(shù)據(jù)緩沖器550。NP命令緩沖器480連接到控制命令產(chǎn)生器520及NP來源標識接口邏輯單元490??刂泼町a(chǎn)生器520連接到虛擬信道命令緩沖器530及通道接口邏輯單元355。虛擬信道命令緩沖器530連接到通道接口邏輯單元355。外圍接口電路350包含控制邏輯及儲存單元460,控制邏輯及儲存單元460連接到下游部分360的分割響應隊列430及數(shù)據(jù)緩沖器400??刂七壿嫾皟Υ鎲卧?60也連接到上游部分450的NP來源標識邏輯單元490及NP命令緩沖器480。此外,我們考慮到,外圍接口電路350可包含復制的邏輯單元570,復制的邏輯單元570可以如前文所述的方式操作,以便連接到諸如外圍總線580等附加的外圍總線。
一般而言,″虛擬信道″是一種用來運送各處理節(jié)點間的數(shù)據(jù)包的通信路徑。每個虛擬信道在資源上獨立于其它的虛擬信道(也就是說,就物理傳輸而論,在虛擬信道中流動的數(shù)據(jù)包通常不會受到另一個虛擬信道中數(shù)據(jù)包的出現(xiàn)或不出現(xiàn)的影響)。根據(jù)數(shù)據(jù)包類型而將數(shù)據(jù)包指定給虛擬信道。在相同虛擬信道中的各數(shù)據(jù)包可能在相互之間傳輸時發(fā)生物理沖突(也就是說,相同虛擬信道中的各數(shù)據(jù)包可能會有資源上的沖突),但是不會與不同虛擬信道中的數(shù)據(jù)包的傳輸有物理上的沖突。
某些數(shù)據(jù)包可能會與其它的數(shù)據(jù)包有邏輯上的沖突(也就是說,某一數(shù)據(jù)包可能因通信協(xié)議、一致性或其它的原因,而與另一數(shù)據(jù)包有邏輯上的沖突)。如果第一數(shù)據(jù)包因邏輯/通信協(xié)議上的原因,而必須在第二數(shù)據(jù)包到達其目標節(jié)點的前先到達其目標節(jié)點,那么在第二數(shù)據(jù)包在物理上阻塞第一數(shù)據(jù)包的傳輸?shù)那闆r下(通過占用沖突中的資源),計算機系統(tǒng)可能會產(chǎn)生死結。通過將第一及第二數(shù)據(jù)包指定給不同的虛擬信道,并在計算機系統(tǒng)內將傳輸媒體實現(xiàn)成分離虛擬信道中的數(shù)據(jù)包無法阻塞另一虛擬信道中的數(shù)據(jù)包的傳輸,即可操作達到解除死結的操作。請注意,不同虛擬信道的數(shù)據(jù)包實際上在同一個物理鏈路上傳輸。然而,因為在傳輸之前可使用接收的緩沖器,所以即使使用共享資源時,這些虛擬信道也不會相互阻塞。
從某種觀點來看,每個不同的數(shù)據(jù)包類型(例如每個不同的命令編碼)可指定給其自身的虛擬信道,因此在一個具體的實施例中,將不同的緩沖器分配給每個虛擬信道。因為可將不同的緩沖器用于每個虛擬信道,所以來自一個虛擬信道的數(shù)據(jù)包不會與來自另一個虛擬信道的數(shù)據(jù)包有物理沖突(因為這些數(shù)據(jù)包置于其它的緩沖器中)。
因此,在所示實施例中,虛擬信道命令緩沖器390及虛擬信道命令緩沖器530分別包含三個獨立的FIFO部分,這三個FIFO部分對應于已公開、未公開、及響應的三種事務類型。按照這些命令的接收順序而將這些命令放入分別的FIFO。然而,為了維持與可能已產(chǎn)生原始命令的總線或設備類型相關聯(lián)的排序規(guī)則,可能需要在不同類型的事務之間以非順序的方式處理這些事務。
在一個具體的實施例中,命令緩沖器370可以是深度為2的FIFO,該FIFO可用來作為從圖2的I/O信道140傳送到圖3的虛擬信道命令緩沖器390的命令的緩沖機制。當事務自下游傳送到外圍接口電路350時,可將該事務的數(shù)據(jù)部分儲存在數(shù)據(jù)緩沖器400中,而將該事務的命令部分儲存在虛擬信道命令緩沖器390中。然而,首先需要標識邏輯單元380配置成產(chǎn)生一個標識值并將該標識值附加到該命令。該標識值對應于該命令相對于所接收的其它命令的接收順序,并可將該標識值用于后續(xù)的仲裁周期中。數(shù)據(jù)包中可包含的起始碼信息可將該數(shù)據(jù)及命令識別為屬于相同的數(shù)據(jù)包。此外,因為某些外圍總線可在比I/O節(jié)點的內部時鐘速度慢的時鐘速度下運作,所以可利用I/O節(jié)點的時鐘速度將數(shù)據(jù)加載到數(shù)據(jù)緩沖器400,并在不同的時鐘速度(最好是在連接到總線接口電路470的外圍總線的時鐘速度)下將該數(shù)據(jù)卸載。此外,可將數(shù)據(jù)緩沖器400及虛擬信道命令緩沖器390配置成當沒有可使用的空間時,即通知任何上游的邏輯單元。
根據(jù)命令的類型(也就是已公開、未公開或響應),將命令儲存在虛擬信道命令緩沖器390的各個虛擬信道FIFO??蓪⒅俨眠壿媶卧?10配置成在虛擬信道命令緩沖器390中的各事務中,仲裁可首先處理哪一事務,第二次處理哪一事務,其它依此類推??蓪⑻摂M信道命令緩沖器390及仲裁邏輯單元410看作一個命令調度程序,這是因為以上兩者共同儲存命令并決定這些命令的處理順序。例如,根據(jù)仲裁邏輯單元410所建的排序規(guī)則,可能必須在未公開命令(non-postedcommand)之后才處理在該未公開命令之前到達虛擬信道命令緩沖器390的已公開命令(posted command)。仲裁邏輯單元410在仲裁周期中可進一步使用標識邏輯單元380所指定的標識值。
此外,如果多個響應數(shù)據(jù)包從諸如請求一個數(shù)據(jù)流等的共同請求事務發(fā)出,則這些響應數(shù)據(jù)包可能屬于相同的數(shù)據(jù)流或數(shù)據(jù)序列。根據(jù)外圍總線,即使下游邏輯單元可以用非順序的方式接收這些響應數(shù)據(jù)包,也應該在一個數(shù)據(jù)流內以正確順序來傳送這些響應數(shù)據(jù)包。此外,可能需要執(zhí)行在外圍總線上的部分傳輸以響應對數(shù)據(jù)流的要求。數(shù)據(jù)緩沖器400可存放用來構成所要求的數(shù)據(jù)流的一部分的數(shù)據(jù)。只要構成該部分的各數(shù)據(jù)段處于正確的順序,則可將這些數(shù)據(jù)段傳輸?shù)酵鈬偩€。
控制邏輯及儲存單元460可包含諸如寄存器或隨機存取存儲器等的若干儲存單元、以及用于傳送數(shù)據(jù)的邏輯單元,具體情況將在下面結合圖7進行詳細的說明。
正如下面結合圖8和圖9所詳細說明的,在仲裁期間,如果獲勝的事務是響應命令,則可決定在數(shù)據(jù)緩沖器400中哪一個與響應命令相關聯(lián)的數(shù)據(jù)可用。如果該數(shù)據(jù)可用,則外圍總線560上可開始一個總線周期??偩€接口電路470可完成上述的事項,因而接收這些命令及數(shù)據(jù)數(shù)據(jù)包,并將這些命令及數(shù)據(jù)數(shù)據(jù)包轉換為適于在外圍總線560上傳輸?shù)牡刂?、?shù)據(jù)及控制信號。
如果獲勝的命令是諸如讀取或寫入命令等的未公開命令,則外圍設備565可根據(jù)連接到總線接口電路470的外圍總線的類型,執(zhí)行例如下列各項中的一項接收并處理該命令,并傳送一個目標已執(zhí)行周期或具有所需的所有數(shù)據(jù)的一個響應周期;觸發(fā)一個重新嘗試指示;以及接受該命令,并觸發(fā)一個分割響應指示。正如下面接合圖4所詳細說明的,如果外圍設備565觸發(fā)重新嘗試指示,則未公開命令可自虛擬信道命令緩沖器390收回,并儲存在NP重新嘗試隊列420中。正如下面接合圖5所詳細說明的,如果外圍總線560是PCI-X總線,并接收到分割響應,則未公開命令可自虛擬信道命令緩沖器390或NP重新嘗試隊列420收回,并儲存在分割響應隊列430中。
在上游部分450中,當外圍設備565在外圍總線560上開始一個總線周期時,總線接口電路470可將該周期轉換為若干數(shù)據(jù)包事務,而這些數(shù)據(jù)包事務可包含前文所述的命令及數(shù)據(jù)數(shù)據(jù)包??蓪⑦@些數(shù)據(jù)數(shù)據(jù)包儲存在數(shù)據(jù)緩沖器550中,并可將這些命令儲存到各個虛擬信道的虛擬信道命令緩沖器530中。在儲存到虛擬信道命令緩沖器530之前,分析邏輯單元500可根據(jù)命令的類型,而將該命令分割為若干較小的命令。例如,如果外圍設備565要求大塊的數(shù)據(jù)以未公開的方式寫入系統(tǒng)內存,則分析邏輯單元500可產(chǎn)生對相同內存塊中的若干較小塊的未公開寫入命令。我們考慮到,在一個具體的實施例中,可沿著緩存線邊界而產(chǎn)生這些塊。然后,可將這些未公開命令每一個儲存在虛擬信道命令緩沖器530。也可根據(jù)要求的邊界以及該事務是PCI還是PCI-X,來分割未公開讀取命令。在一個具體的實施例中,NP來源標識邏輯單元490可產(chǎn)生由下游邏輯單元來決定某一特定響應命令與哪一數(shù)據(jù)流相關聯(lián)的標識值。此外,正如下面結合圖6-9所詳細說明的,可在NP命令緩沖器480中保留原始的未公開命令(例如在分割之前),以便將數(shù)據(jù)提供給下游部分360內的邏輯單元。NP來源標識邏輯單元490可產(chǎn)生與這些上游未公開命令中每一個相關聯(lián)的標識值。在一個具體的實施例中,可產(chǎn)生標識值0-29。然而,我們考慮到,其它的實施例可產(chǎn)生其它適當數(shù)目的標識值。
當上游命令儲存在虛擬信道命令緩沖器530時,控制命令產(chǎn)生器520可產(chǎn)生與圖2的收發(fā)器110及120所產(chǎn)生的控制命令類似的控制命令。在圖3中,控制命令產(chǎn)生器520也可將這些控制命令通過通道接口邏輯單元355傳送到圖2的通道控制單元130,因而可安排各上游命令進入I/O通道140的調度程序。圖3的通道接口邏輯單元355可視需要而包含一般用途緩沖電路,以便作為I/O通道140與外圍接口電路350內的邏輯單元間的接口。
延遲事務邏輯電路510可包含與總線接口電路470、下游部分360內的邏輯單元及圖2的I/O信道邏輯單元配合工作的電路,用來將告知無法立即服務一個請求的重新嘗試指示提供給外圍設備565。例如,外圍設備565向上游傳送未公開讀取要求,而未公開信道被阻塞或該數(shù)據(jù)尚未備妥。延遲事務邏輯電路510可將目前無法服務該請求且于稍后再重新嘗試該請求的信息向外圍設備565指示。
請參閱圖4,圖中示出未公開重新嘗試緩沖電路的一個具體的實施例的方框圖。未公開(NP)重新嘗試緩沖電路650包含未公開重新嘗試FIFO660,未公開重新嘗試FIFO660連接到未公開命令更新電路670。
在所示實施例中,未公開重新嘗試FIFO660可儲存自諸如圖3的虛擬信道命令緩沖器390的未公開命令FIFO等未公開命令緩沖器接收的未公開命令。如上文中結合圖3所說明的,響應外圍設備565所觸發(fā)的重新嘗試指示,可自虛擬信道命令緩沖電路390取出未公開命令,并將該未公開命令儲存在圖4的未公開重新嘗試FIFO660內。
當沒有可用的儲存位置時,未公開重新嘗試FIFO660可觸發(fā)一FIFO已滿信號。已滿信號可將指示提供給諸如圖3的仲裁邏輯電路410等的仲裁邏輯單元。只要這個已滿信號被觸發(fā),虛擬信道命令緩沖電路390的未公開命令FIFO即無法參與仲裁周期,因而在發(fā)生額外的重新嘗試指示時,可避免未公開重新嘗試FIFO660的溢出。
一旦將未公開命令儲存在未公開重新嘗試FIFO660內之后,在未公開重新嘗試FIFO660頭端上的各命令即可與圖3的任何虛擬信道命令緩沖電路390內儲存的任何命令一起參與仲裁周期。如果在一個仲裁周期中選擇了在圖4的未公開重新嘗試FIFO660頭端上儲存的未公開命令,使得總線周期開始,而且圖3的外圍總線560再度觸發(fā)重新嘗試信號,則圖4的未公開命令更新電路670可自該頭端取出所選擇的未公開命令,并將未公開命令儲存在未公開重新嘗試FIFO660的尾端,以便該未公開命令再到達FIFO的頭端時等候另一仲裁周期。換言之,可將所選擇的未公開命令寫回到FIFO。未公開命令更新電路670內的短劃線箭頭代表了此種情形。該周期的這種重新嘗試可發(fā)生任意次數(shù),且每一次都可將該命令寫回到未公開重新嘗試FIFO660的尾端。
當圖3的外圍接口電路350在PCI模式下工作時,圖3的外圍總線560可指示未公開周期已有了部分的完成。例如,未公開讀取命令可請求10個數(shù)據(jù)段。外圍設備565可觸發(fā)重新嘗試指示,但是以10個數(shù)據(jù)段中的5個數(shù)據(jù)段作為響應,因而指示了一部分完成響應。圖4的未公開命令更新電路670在接收到一部分完成指示時,可修改所選擇的未公開命令,以便可保留對應于剩余的數(shù)據(jù)段的新的數(shù)據(jù)數(shù)及地址。同樣地,可以部分地完成未公開寫入命令。未公開命令更新電路670然后可將經(jīng)過修改的未公開命令儲存在未公開重新嘗試FIFO660的尾端,當未公開命令到達FIFO的頭端時,該未公開命令可等候另一仲裁周期。為了便于解說而在本文使用的FIFO的頭端意思是在FIFO中可卸載或讀取命令的位置,而FIFO的尾端意思是可儲存或寫入命令的位置。還要注意,由于從未公開重新嘗試FIFO660卸載各命令,所以可按照將要卸載的命令順序,向上移動儲存于未公開重新嘗試FIFO660內的任何命令。我們考慮到,在其它的實施例中,可將命令寫入FIFO的頭端,并從FIFO的尾端讀取命令,在這種情況下,未公開命令更新電路670可將命令寫入FIFO的頭端。
請參閱圖5,圖中示出在外圍接口電路實施例中處理分割響應指示的流程圖。請同時參閱圖3及圖5,操作從圖5的步驟431開始,并繼續(xù)執(zhí)行步驟432,此時圖3的下游部分360接收未公開命令,該未公開命令儲存在虛擬信道命令緩沖器390的未公開FIFO。繼續(xù)執(zhí)行圖5的步驟433,執(zhí)行仲裁周期,如果該未公開命令是獲勝的操作,則繼續(xù)執(zhí)行步驟434,否則繼續(xù)仲裁周期,直到該未公開命令是獲勝命令為止。因此,繼續(xù)執(zhí)行步驟434時,選擇該未公開命令,并傳送到可能包含在諸如圖3的總線接口電路470中的轉換邏輯單元。可將該未公開命令轉換到適于在外圍總線560上傳輸?shù)膶目偩€周期。繼續(xù)執(zhí)行圖5的步驟435,圖3的總線接口電路470接著可開始總線周期。請注意,轉換及總線周期開始程序可包含由諸如前文中結合圖2所述的CREX接口(圖中未示出)等的外圍總線的一個或多個接口所執(zhí)行的一個或多個中間步驟。操作現(xiàn)在進入圖5的步驟436。在步驟436中,圖3的上游部分450及總線接口電路470等候來自諸如外圍總線560上的外圍設備565等的目標設備之一完成指示。如果未公開命令是讀取請求,則完成指示可以是其中包括諸如″周期完成″信號等控制信號的所要求的所有數(shù)據(jù),因而指示了有請求的所有數(shù)據(jù)。如果未公開命令是寫入請求,則完成指示可以是不具有任何數(shù)據(jù)的完成信息。如果接收到一完成指示,則操作繼續(xù)執(zhí)行圖5的步驟437。在步驟437中,如果未公開命令是寫入命令,則圖3的上游部分450可將諸如″目標已執(zhí)行″的響應傳送到提出請求的節(jié)點。如果未公開命令是讀取命令,則上游部分450可將其中包括所有請求的數(shù)據(jù)的響應命令傳送到提出請求的節(jié)點。操作的描述在圖5的步驟438結束。
請再參閱步驟436,如果圖3的外圍總線560接收的響應不是一完成信息,則該響應可能是在前文中結合圖4所詳述的重新嘗試指示。該響應也可能是分割響應指示,在圖5的步驟439中,接收到了分割響應指示。繼續(xù)執(zhí)行步驟440,未公開命令儲存在圖3的分割響應隊列430中以響應分割響應指示。未公開命令可包含諸如總線編號、設備編號、功能編號、計數(shù)及識別號碼等的總線周期信息??蓪⑦@個信息用來請求從目標設備接收的任何響應周期。繼續(xù)執(zhí)行圖5的步驟441,如果未公開命令是讀取命令,則所接收的分割響應可能伴隨著所讀取的數(shù)據(jù)。在這種情況下,可將響應命令連同任何可取得的數(shù)據(jù)傳送到提出請求的節(jié)點。繼續(xù)執(zhí)行步驟442,如果接收到一個分割完成,則該分割完成可能是響應未公開寫入命令的分割完成信息,或者可能是其中包括所有請求的數(shù)據(jù)的分割完成。繼續(xù)執(zhí)行步驟443,將分割完成周期信息與圖3的分割響應隊列430內儲存的任何未公開命令比較。一旦已決定了對應的未公開命令之后,操作則繼續(xù)執(zhí)行圖5的步驟444。在步驟444中,如果分割完成是分割完成信息,則可將諸如″目標已執(zhí)行″的響應命令傳送到提出請求的節(jié)點。如果未公開命令是讀取命令,則圖3的上游部分450可將其中包括所有請求的數(shù)據(jù)的響應命令傳送到提出請求的節(jié)點。繼續(xù)執(zhí)行圖5的步驟445,一旦接收到所有的數(shù)據(jù)或分割完成信息之后,對應的未公開命令即可從圖3的分割響應隊列430收回。
請再參閱步驟442,如果并未接收到分割完成信息,則操作繼續(xù)執(zhí)行步驟446,此時接收到分割響應。操作然后繼續(xù)執(zhí)行步驟447,此時將分割響應周期信息與圖3的分割響應隊列430內儲存的任何未公開命令比較。一旦已決定了對應的未公開命令之后,操作繼續(xù)執(zhí)行圖3的步驟448。在步驟448中,圖3的上游部分450可將其中包括可取得的數(shù)據(jù)及信息從未公開命令傳送到提出請求的節(jié)點。操作繼續(xù)回到步驟442,以便等候另一響應。請再參閱步驟446,如果并未接收到分割響應,則操作繼續(xù)回到步驟442,以便等候另一響應。
請參閱圖6,圖中示出其中包含緩沖器可用性FIFO結構的緩沖電路的一個具體的實施例的方框圖。緩沖電路680包含緩沖器可用性FIFO685,此緩沖器可用性FIFO685連接到未公開命令緩沖器690。緩沖器可用性FIFO685還連接到寫入邏輯單元686及收回邏輯單元687。
未公開命令緩沖器690可儲存對應于自諸如圖3的外圍總線560等的外圍總線接收的命令的未公開命令。如前文結合圖2所述,可保留各上游未公開命令,以供可能需要該上游未公開命令中包含的信息的下游電路使用。為了加速將命令儲存在未公開命令緩沖器690,緩沖器可用性FIFO可指向未公開命令緩沖器690內的下一可用位置。
當未公開命令緩沖器690為空時,可順序地儲存命令,直到未公開命令緩沖器690滿了為止。根據(jù)與這些未公開命令相關聯(lián)的響應的接收順序,可以用非順序的方式將這些未公開命令取出或收回,因而留下任意模式的″空洞″或空位置。因此,為了要將任何新的命令儲存在未公開命令緩沖器690,可利用緩沖器可用性FIFO685來追蹤可用的位置。
在所示實施例中,未公開命令緩沖器690包含八個位置。緩沖器可用性FIFO685也包含八個位置,且緩沖器可用性FIFO685內的這些八個位置中的每一位置都可儲存三個位值。緩沖器可用性FIFO685中所儲存的這些值對應于未公開命令緩沖器690內的各個位置的地址。因此,可將每一個三位值用來作為未公開命令緩沖器690的一個索引。我們考慮到,其它的實施例可以有其它適當數(shù)目的位置及其它數(shù)目的位。因為緩沖器可用性FIFO685是FIFO結構,所以可以按照這些值的寫入順序讀出這些值。因此,在本實施例中,可說是將數(shù)值從緩沖器可用性FIFO685的底部寫入,并從該FIFO的頂部讀出數(shù)值。然而,我們考慮到,在其它的實施例中,可相反地使用術語頂部及底部。我們也考慮到,其它的實施例可使用讀取及寫入指針來指向緩沖器可用性FIFO685內的各個位置。
在初始化時,未公開命令緩沖器690可能是空的,因而可使用所有的位置。可將緩沖器可用性FIFO685初始化為緩沖器可用性FIFO685的頂部存放了對應于未公開命令緩沖器690的第零位置的地址的索引值。緩沖器可用性FIFO685的下一位置可存放對應于第一位置的地址的索引值,其它依此類推。因此,當未公開命令到達時,寫入邏輯單元686可讀取緩沖器可用性FIFO685的頂部中存放的索引值,然后將命令寫入第零位置的地址。一旦儲存了該命令之后,即可將緩沖器可用性FIFO685中儲存的所有索引值向上移一個位置,使第一位置的地址現(xiàn)在是在緩沖器可用性FIFO685的頂部位置。
當完成了某個特定的下游命令,且不再需要未公開命令緩沖器690中儲存的對應的未公開命令時,即可將該未公開命令從未公開命令緩沖器690收回。因此,未公開命令緩沖器690空出用來儲存未公開命令的位置,并將對應的指示提供給收回邏輯單元687。收回邏輯單元687可決定該位置使用的時機,作為響應,將對應于緩沖器可用性FIFO685的可用位置的地址寫入緩沖器可用性FIFO685的底部。因此,當有可用的位置時,緩沖器可用性FIFO685的頂部位置可存放對應于可用位置的地址的索引值。如果未公開命令緩沖器690中沒有任何可用的位置,則可禁止寫入邏輯單元686將任何命令儲存到未公開命令緩沖器690。
請參閱圖7,圖中示出圖3的控制邏輯及儲存單元的一個具體的實施例的示意圖??刂七壿嫾皟Υ鎲卧?60包含緩沖器可用性寄存器600、頭端寄存器610、下一指針寄存器620、尾端寄存器630及分割響應指針寄存器640。
在所示實施例中,頭端寄存器610包含29個位,這29個位對應于圖3的NP來源標識邏輯單元490所產(chǎn)生的29個可能的標識值??捎妙^端寄存器610來指示哪些命令數(shù)據(jù)包是其各自數(shù)據(jù)流的第一命令數(shù)據(jù)包。舉例來說,對位零及位三置位,以便指示具有標識值零及三的命令數(shù)據(jù)包是頭端數(shù)據(jù)包。在本文的用法中,數(shù)據(jù)流意思是在可與數(shù)據(jù)請求相關聯(lián)的一個或多個數(shù)據(jù)包序列中的任何數(shù)目的數(shù)據(jù)包。例如,可將未公開讀取請求命令分割成屬于同一數(shù)據(jù)流的數(shù)個讀取命令。對于包含一個以上的數(shù)據(jù)包的數(shù)據(jù)流而言,可利用下一指針寄存器620及尾端寄存器630來追蹤該數(shù)據(jù)流中的其余數(shù)據(jù)包的順序。
下一指針寄存器620也可包含29個位置,每個位置可儲存五個位,用以描述至少29個標識值。每個位置可代表這些29個標識值中的一個標識值。因此,可將下一指針620的每個位置中儲存的值用來指向下一指針620內的下一位置。此外,每個位置中儲存的值也代表某一特定數(shù)據(jù)流中的下一數(shù)據(jù)包的標識值。因此,可將下一指針620內儲存的序列的值用來重建或驗證數(shù)據(jù)流中可能不是按照其傳送順序而接收的若干數(shù)據(jù)包的順序。
尾端寄存器630也可包含29個位,每一位對應于29個標識值。可利用尾端寄存器630來指示對應于某一特定數(shù)據(jù)流中的最后一個數(shù)據(jù)包的標識值。在所示實施例中,對位二及位五置位以指示具有標識值二及五的命令數(shù)據(jù)包是尾端數(shù)據(jù)包。
請注意,雖然在上述的實施例中,利用尾端寄存器來識別特定數(shù)據(jù)流中的最后一個數(shù)據(jù)包,但是我們考慮到,在另一個具體的實施例中,可將一個特殊值儲存在下一指針寄存器620的位置。該特殊值可指示對應于其儲存的位置的標識值是對應于特定數(shù)據(jù)流中的最后一個數(shù)據(jù)包。
在所示實施例中,緩沖器可用性寄存器600也可包含29個位,每一位對應于29個標識值??衫镁彌_器可用性寄存器600來指示已接收到了與特定數(shù)據(jù)流相關聯(lián)的哪些響應。例如,接收到了包含標識值三及四的各數(shù)據(jù)數(shù)據(jù)包,并將這些數(shù)據(jù)數(shù)據(jù)包儲存在諸如圖3的數(shù)據(jù)緩沖器400等的數(shù)據(jù)緩沖器中。因此,圖7的緩沖器可用性寄存器600的第三及第四位可通過置位來指示可使用該數(shù)據(jù)。
分割響應指針640也可包含29個位置,每一位置可儲存三個位,用來描述諸如圖3的NP命令緩沖器480等的緩沖器內的最多8個位置。可將每一個三位值用來作為對應于圖3的NP命令緩沖器480內的一個位置的地址的索引值。因此,可利用分割響應指針640來指示哪些響應命令與圖3的NP命令緩沖器480內儲存的原始未公開命令相關聯(lián)。因此,可將分割響應指針寄存器640用于必須要將數(shù)據(jù)部分地傳送到外圍總線的情況。
請注意,雖然前文所述的是29個標識值,但是我們考慮到,其它的實施例可使用較多或較少的標識值。因此,我們進一步考慮到,頭端寄存器610、下一指針620、尾端寄存器630、緩沖器可用性寄存器600及分割響應指針640可分別包含較多或較少數(shù)目的位。我們進一步考慮到,可顛倒與這些寄存器相關聯(lián)的邏輯,使得不是通過置位而是清除各位來指示對應的標識值。
如前文中結合圖3所述的,當總線接口電路470將總線周期轉換為未公開數(shù)據(jù)包命令時,可能有與未公開數(shù)據(jù)包命令相關聯(lián)的數(shù)個響應數(shù)據(jù)包。前文中還提到,下游部分360可以非順序的方式接收各響應數(shù)據(jù)包,且可根據(jù)外圍總線的類型來維持數(shù)據(jù)流內的這些數(shù)據(jù)包的順序。正如下面結合圖8及圖9所詳細說明的,上游部分450接收未公開命令,且NP來源標識邏輯單元490可為這些未公開命令產(chǎn)生來源標識值。然后利用這些未公開來源標識值,可利用控制邏輯及儲存單元460內的頭端寄存器610、下一指針620、尾端寄存器630、緩沖器可用性寄存器600及分割響應指針寄存器640來維持一個或多個數(shù)據(jù)流內的響應的正確順序。此外,當接收到響應時,在傳輸用來構成數(shù)據(jù)流的一部分的數(shù)據(jù)序列時,可使用控制邏輯及儲存單元460。
請注意,雖然所示實施例中將寄存器用于儲存單元,但是我們考慮到,其它的實施例可使用諸如隨機存取存儲器或任何類型的可擦除可編程只讀存儲器等其它適當類型的儲存單元。
請參閱圖8,圖中示出圖3的外圍接口電路350一個實施例的事務重新排序操作的流程圖。請同時參考圖3、圖7及圖8,操作從圖8的步驟800開始,繼續(xù)執(zhí)行步驟810,此時圖3的上游部分450接收到未公開命令。繼續(xù)執(zhí)行圖8的步驟820,圖3的分析邏輯單元500決定是否要將該未公開命令分割成多個未公開命令以便滿足上游I/O信道的請求。如果這些事務是PCI事務,或者這些事務是PCI-X事務且未公開命令不需要被分割,則操作繼續(xù)執(zhí)行圖8的步驟830,此時將未公開命令儲存在圖3的NP命令緩沖器480。一般而言,不分割PCI事務。例如,圖3的外圍接口電路350所提出的未公開讀取要求可能針對緩存線邊界。然而,在某些情況中,PCI事務也不排除被分割。
操作現(xiàn)在繼續(xù)執(zhí)行圖8的步驟840,此時產(chǎn)生未公開來源標識值,并將該未公開來源標識值附加到未公開命令。操作現(xiàn)在繼續(xù)執(zhí)行步驟842,此時設定對應于剛才為未公開命令產(chǎn)生的來源標識值的位,而更新圖7的頂部寄存器610。操作現(xiàn)在繼續(xù)執(zhí)行圖8的步驟850,此時圖3的控制命令產(chǎn)生器520針對未公開命令產(chǎn)生控制命令,并將控制命令傳送到I/O通道控制邏輯單元,以供仲裁。繼續(xù)執(zhí)行圖8的步驟860,也將未公開命令儲存在圖3的虛擬信道命令緩沖器530,以便等候傳輸,在圖8的步驟870中,如果I/O信道控制邏輯單元內的仲裁電路選擇對應的控制命令,則可傳送該未公開命令。
請再參閱圖8步驟820,如果未公開命令的分析是必要的,則操作繼續(xù)執(zhí)行步驟825,此時可將該未公開命令分割成屬于相同的序列或數(shù)據(jù)流的多個未公開命令。繼續(xù)執(zhí)行步驟835,可將原始的未公開命令儲存在圖3的NP命令緩沖器480。在圖8的步驟845中,為剛才由原始未公開命令產(chǎn)生的這些多個未公開命令中的每個未公開命令產(chǎn)生NP來源標識。操作現(xiàn)在繼續(xù)執(zhí)行步驟842,此時更新圖7的頭端寄存器610、下一指針620、尾端寄存器630及分割響應指針640。可置位對應于剛才為該序列內的第一未公開命令產(chǎn)生的標識值的位,而更新頭端寄存器610。可置位對應于剛才為該數(shù)據(jù)流內的最后一個未公開命令產(chǎn)生的標識值的位,而更新尾端寄存器630。可加載序列內剩余的未公開命令的標識值,而更新下一指針620。以將該序列中的每一數(shù)據(jù)包連結到該序列中的下一數(shù)據(jù)包的方式加載這些標識值。舉例而言,某一數(shù)據(jù)流可能包含三個數(shù)據(jù)包。將這些數(shù)據(jù)包安排成零、一和二,因而這些數(shù)據(jù)包的標識為零、一及二。因此,置位頭端寄存器610的位零并清除位一和二,這是因為頭端只能有一個數(shù)據(jù)包。為了追蹤數(shù)據(jù)流中的后續(xù)數(shù)據(jù)包,將下兩個數(shù)據(jù)包(一和二)的標識值分別加載下一指針620的位置零及一。因為頭端寄存器610的位零被置位,所以將標識值″一″加載下一指針620的位置零,而指示具有標識值一的數(shù)據(jù)包是該數(shù)據(jù)流中的″下一″數(shù)據(jù)包。此外,將標識值″二″加載下一指針620的位置一,而指示具有標識值二的數(shù)據(jù)包是該數(shù)據(jù)流中的″下一″數(shù)據(jù)包。因為數(shù)據(jù)包二是該數(shù)據(jù)流中的最后一個數(shù)據(jù)包,所以也將該數(shù)據(jù)包標示為尾端。因此,置位尾端寄存器630的位二。請注意,雖然在上述實施例中,按照一數(shù)字序列(例如,零、一及二)指定這些標識值,但是我們考慮到,在其它的實施例中,可按照任何順序指定這些標識值,且可根據(jù)目前可使用的標識值來指定這些標識值。我們也考慮到,其它的實施例可在一個數(shù)據(jù)流中包含較多或較少的數(shù)據(jù)包,因而可使用較多或較少的標識值。
下游邏輯單元可以用非順序的方式接收構成數(shù)據(jù)流的多個未公開命令,因而在將這些未公開命令傳送到提出請求的設備時造成延遲。這個延遲可能使得圖3的外圍接口電路350指示PCI-X事務的一個分割響應。在這種情況下,下游邏輯單元可能變?yōu)槿舾煞指铐憫芷诩胺指钔瓿芍芷诘陌l(fā)出設備,可能需要對應于這些多個未公開命令的原始未公開命令中包含的信息,以便開始分割響應并完成總線周期。正如下面接合圖9詳細說明的,可利用圖7的分割響應指針寄存器640,將特定數(shù)據(jù)流的這些多個響應的每個響應連結到圖3的NP命令緩沖器480中儲存的原始未公開命令。因此,圖7的分割響應指針寄存器640中的每個位置可代表對應的響應命令的NP來源標識值??蓪趫D3的NP命令緩沖器480內的位置(用來儲存該響應的原始未公開命令的位置)的地址的索引值加載每個位置。在上述的例子中,可將對應于圖3的NP命令緩沖器480內的位置(用來儲存原始未公開命令的位置)的地址的索引值加載圖7的分割響應指針寄存器640內的位置零、一及二。
操作繼續(xù)執(zhí)行圖8步驟850,此時針對這些多個未公開命令中的每個未公開命令產(chǎn)生控制命令,并將這些控制命令傳送到I/O通道控制邏輯單元。此外,在步驟860中,可將這些多個未公開命令中的每個未公開命令儲存在圖3的虛擬信道命令緩沖器530,以便等候傳輸。繼續(xù)執(zhí)行圖8的步驟870,當I/O通道控制邏輯單元內的仲裁電路選擇每個對應的控制命令時,即可傳送這些多個未公開命令中的每個未公開命令。操作的描述終止于步驟880。
請參閱圖9,圖中示出圖3的外圍接口電路350的分割響應操作的流程圖。請同時參閱圖3、圖7及圖9,操作從圖9的步驟900開始,繼續(xù)執(zhí)行步驟905,此時圖3的下游部分360接收到對應于上游未公開命令的響應命令。繼續(xù)執(zhí)行步驟910,將與該響應命令相關聯(lián)的數(shù)據(jù)段儲存在圖3數(shù)據(jù)緩沖器400。為了響應接收到該數(shù)據(jù)段,通過置位對應于連同響應命令接收到的NP來源標識值的一位來更新圖7緩沖器可用性寄存器600。操作現(xiàn)在繼續(xù)執(zhí)行圖9的步驟915,此時檢查圖7的頭端寄存器610中對應于該響應命令的標識值的一位的狀態(tài),以便確定該響應命令是否為數(shù)據(jù)流的頭端數(shù)據(jù)包。如果所接收的響應命令不是頭端數(shù)據(jù)包,則操作繼續(xù)執(zhí)行圖9步驟920,此時舍棄該命令,且操作繼續(xù)回到步驟905,以便等候另一響應命令。如果該命令部分不是頭端數(shù)據(jù)包,則因為可認定將會有與該數(shù)據(jù)流相關聯(lián)的一個頭端數(shù)據(jù)包即將來到,所以可舍棄該命令部分,而只保留數(shù)據(jù)段。請再參閱步驟915,如果響應命令是頭端數(shù)據(jù)包,則操作繼續(xù)執(zhí)行步驟925,此時圖3的標識邏輯單元380可將仲裁標識值指定給該響應命令,并將仲裁標識值儲存在虛擬信道命令緩沖器390的響應信道內。
繼續(xù)執(zhí)行圖9的步驟930,圖3的仲裁邏輯單元410自虛擬信道命令緩沖器390仲裁出一個獲勝命令。如果響應命令不是獲勝命令,則操作停留在步驟930內,此時繼續(xù)進行仲裁。另一方面,如果響應命令是獲勝命令,則操作繼續(xù)執(zhí)行步驟935。在步驟935中,如果這些事務是PCI事務,且認定可取得所有的數(shù)據(jù)數(shù)據(jù)包,則操作繼續(xù)執(zhí)行步驟940,此時更新圖7的頭端寄存器610、下一指針620、尾端寄存器630及緩沖器可用性寄存器600,以便圖3的NP來源標識邏輯單元490可重新使用與I/O流相關聯(lián)的這些標識值。此外,可將原始的未公開命令從圖3的NP命令緩沖器480收回。繼續(xù)執(zhí)行圖9的步驟945,可在圖3的外圍總線560上開始其中包括所有請求的數(shù)據(jù)的一個完成總線周期。
請再參閱步驟935,如果這些事務是PCI-X事務,則操作繼續(xù)執(zhí)行步驟960,此時可能必須決定哪些與數(shù)據(jù)流相關聯(lián)的數(shù)據(jù)數(shù)據(jù)包可用??梢酝ㄟ^檢查圖7的下一指針620、尾端寄存器630及緩沖器可用性寄存器600的組合來完成上述的決定。如果所有的數(shù)據(jù)數(shù)據(jù)包都已到達,則操作繼續(xù)執(zhí)行圖9的步驟965,在步驟965中,可更新圖7的頭端寄存器610、下一指針620、尾端寄存器630、緩沖器可用性寄存器600及分割響應指針640,以便圖3的NP來源標識邏輯單元490可重新使用與該數(shù)據(jù)流相關聯(lián)的這些標識值。繼續(xù)執(zhí)行圖9的步驟970,可開始一個完成周期,指示正在將所有的響應數(shù)據(jù)傳送到提出請求的設備。為了開始該完成周期,圖3的外圍接口電路350現(xiàn)在變成來源設備,并可開始一個分割完成周期。為了開始該分割完成周期,可能需要對應于圖3的NP命令緩沖器480內儲存的現(xiàn)行響應數(shù)據(jù)包的原始未公開周期中包含的信息。因此,自圖7的分割響應指針寄存器640讀取對應于該分割響應的來源標識值的位置。獲取原始未公開周期中包含的信息,并開始分割完成周期。此外,可使原始的未公開命令自圖3的NP命令緩沖器480收回。
請再參閱步驟960,如果只有與數(shù)據(jù)流相關聯(lián)的某些數(shù)據(jù)數(shù)據(jù)包已到達,且已識別出可取得的數(shù)據(jù)數(shù)據(jù)包,則操作繼續(xù)執(zhí)行步驟975,此時更新圖7的頭端寄存器610、下一指針620、緩沖器可用性寄存器600及分割響應指針640。然而,因為只能取得某些數(shù)據(jù)數(shù)據(jù)包,所以可產(chǎn)生分割響應周期。該分割響應事務可包含命令數(shù)據(jù)包以及圖7的數(shù)據(jù)緩沖器400內儲存的可共同構成用來形成數(shù)據(jù)流的一部分的數(shù)據(jù)序列的任何數(shù)據(jù)段。因此,可更新圖7的頂部寄存器610及下一指針620,以便反映該數(shù)據(jù)流的新的頭端數(shù)據(jù)包及下一數(shù)據(jù)包。繼續(xù)執(zhí)行步驟985,在圖3的外圍總線560上開始一個分割響應總線周期。與前文所述的類似,可能需要對應于圖3的NP命令緩沖器480內儲存的現(xiàn)行響應數(shù)據(jù)包的原始未公開周期中包含的信息,以便開始該分割響應周期。因此,自圖7的分割響應指針寄存器640讀取對應于該分割響應的來源標識值的位置。獲取原始未公開周期中包含的信息,并開始分割響應周期。然而,與前文所述的情況相反,為了正確地開始一個分割響應總線周期,可將對應的的計數(shù)包含在該數(shù)據(jù)包的數(shù)據(jù)計數(shù)字段,而將該分割響應命令中傳送的數(shù)據(jù)量通知圖3的總線接口電路470。該計數(shù)反映了傳送的數(shù)據(jù)塊的數(shù)目。繼續(xù)回到圖9的步驟960,當接收到包含其余的數(shù)據(jù)數(shù)據(jù)包的后續(xù)響應命令時,可利用額外的分割響應周期,而將構成該數(shù)據(jù)流的其余部分的這些其余的數(shù)據(jù)數(shù)據(jù)包傳送到提出請求的設備。當傳送其余的數(shù)據(jù)時,可開始一分割完成周期,且可使原始的未公開命令自圖3的NP命令緩沖器480收回。操作的描述終止于圖9的步驟950。
請參閱圖10,圖中示出用來連接到圖形總線的外圍接口電路的一個具體的實施例的方框圖。外圍接口電路1000包含下游部分1010及上游部分1020。外圍接口電路1000還包含信道接口1030,信道接口1030可連接到諸如圖2的I/O通道140等的I/O通道。在圖10的下游部分1010中,通道接口1030也連接到命令緩沖器1040。命令緩沖器1040連接到標識邏輯單元1050。標識邏輯單元1050連接到虛擬信道命令緩沖器1060。虛擬信道命令緩沖器1060連接到仲裁邏輯單元1070,而仲裁邏輯單元1070連接到總線接口電路1080。通道接口1030連接到數(shù)據(jù)緩沖器1100,而數(shù)據(jù)緩沖器1100又連接到總線接口電路1080??偩€接口電路1080連接到圖形總線1090,而圖形總線1090連接到圖形適配卡1095。在一個優(yōu)選的實施例中,總線接口電路1080是加速圖形端口(AGP)總線,但是我們考慮到,其它的實施例也可使用其它類型的圖形總線。
在上游部分1020中,總線接口電路1080連接到NP命令緩沖器1110及分析邏輯單元1170。此外,總線口電路11080連接到數(shù)據(jù)緩沖器1150。NP命令緩沖器1110連接到控制命令產(chǎn)生器1140及NP來源標識邏輯單元1120。控制命令產(chǎn)生器1140連接到虛擬通道命令緩沖器1160及通道接口1030,虛擬信道命令緩沖器1160連接到通道接口1030。外圍接口電路1000還包含控制邏輯及儲存單元1130,而控制邏輯及儲存單元1130連接到下游部分1010的數(shù)據(jù)緩沖器1100??刂七壿嫾皟Υ鎲卧?130連接到上游部分1020的NP來源標識邏輯單元1120及NP命令緩沖器1110。
在所示實施例中,虛擬信道命令緩沖器1060及虛擬信道命令緩沖器1160分別包含三個獨立的FIFO部分,這三個FIFO部分對應于已公開、未公開、及響應的三種事務類型。按照這些命令的接收順序將這些命令放入各自的FIFO。然而,為了維持與可能已產(chǎn)生原始命令的總線或設備類型相關聯(lián)的排序規(guī)則,可能必須在不同類型的事務之間以非順序的方式處理這些事務??梢杂妹钫{度程序達到上述的目的,該命令調度程序包含虛擬信道命令緩沖器1060及仲裁邏輯單元1070的組合。
在一個具體的實施例中,命令緩沖器1040可以是深度為2的FIFO,該FIFO可用來作為自圖2的I/O通道140傳送到圖10的虛擬信道命令緩沖器1090的命令的緩沖機制。當將一事務自下游傳送到外圍接口電路1000時,可將該事務的數(shù)據(jù)部分儲存在數(shù)據(jù)緩沖器1100,而將該事務的命令部分儲存在虛擬信道命令緩沖器1060中。然而,首先標識邏輯單元1050的組態(tài)可能配置成產(chǎn)生標識值并將該標識值附加到該命令。該標識值可能對應于該命令相對于所接收的其它命令的接收順序,且可將該標識值用于后續(xù)的仲裁周期中。數(shù)據(jù)包中可包含的起始碼信息可將該數(shù)據(jù)及命令識別為屬于相同的數(shù)據(jù)包。此外,因為圖形總線可以在比I/O節(jié)點的內部時鐘速度慢的時鐘速度下運作,所以可利用I/O節(jié)點的時鐘速度將數(shù)據(jù)加載數(shù)據(jù)緩沖器1100,并在不同的時鐘速度(最好是在連接到總線接口電路1080的圖形總線的時鐘速度)下將該數(shù)據(jù)卸載。此外,可將數(shù)據(jù)緩沖器1100及虛擬信道命令緩沖器1060的組態(tài)配置成當其中一個緩沖器沒有可使用的空間時,即通知任何上游的邏輯單元。
因為原來利用PCI總線實現(xiàn)某些圖形適配卡與系統(tǒng)內存通信,所以諸如圖形適配卡1095等的圖形適配卡可能仍然包含PCI邏輯單元,而PCI邏輯單元可以在圖形總線1090上開始PCI總線事務。此外,可利用PCI命令將諸如系統(tǒng)處理器等的其它設備所發(fā)出的設定命令通過圖形總線1090而傳送到圖形適配卡1095。因此,總線接口電路1080除了將AGP總線周期轉換為數(shù)據(jù)包命令并將數(shù)據(jù)包命令轉換為AGP總線周期之外,還可將數(shù)據(jù)包命令轉換為適于在圖形總線1090上傳輸?shù)腜CI總線周期。
根據(jù)命令的類型(也就是已公開、未公開、或響應),將命令儲存在虛擬信道命令緩沖器1060的各個虛擬信道FIFO,這與圖3的下游部分360的操作類似。在圖10中,可將仲裁邏輯單元1070的配置成在虛擬信道命令緩沖器1060中的各事務中,仲裁可首先處理哪一事務,第二次處理哪一事務,其它依此類推。仲裁邏輯單元1070在仲裁周期中可進一步使用標識邏輯單元1050所指定的標識值。此外,對于PCI響應而言,如果多個響應數(shù)據(jù)包來自共同的要求事務,則這些多個響應數(shù)據(jù)包可能屬于相同的數(shù)據(jù)流或序列??v使下游邏輯單元可能以非順序的方式接收屬于特定數(shù)據(jù)流的這些響應數(shù)據(jù)包,也可能必須按照正確的順序傳送這些響應數(shù)據(jù)包。該操作可類似于前文中結合圖9而對PCI響應所作的說明。
正如下面結合圖11而詳細說明的,可以不將下游部分1010接收的AGP響應儲存在虛擬信道命令緩沖器1060內,且AGP響應不得參與仲裁周期。取而代之,AGP響應可繞過虛擬信道命令緩沖器1060內的緩沖器,并將與該響應命令相關聯(lián)的數(shù)據(jù)傳送到總線接口1080。然而,因為AGP響應可能受到排序規(guī)則的限制,所以控制邏輯及儲存單元130可包含邏輯單元及諸如寄存器等的儲存單元,以便用來按照正確的順序傳送數(shù)據(jù)包,具體情況將在下面結合圖12詳細說明。
當圖形適配卡1095在圖形總線1090上開始一個AGP事務時,總線接口電路1080可將該事務轉換為若干數(shù)據(jù)包事務,而這些數(shù)據(jù)包事務可包含如前文所述的命令及數(shù)據(jù)數(shù)據(jù)包。可將這些數(shù)據(jù)數(shù)據(jù)包儲存在數(shù)據(jù)緩沖器1150中,而可將這些命令儲存在各個虛擬信道中的虛擬信道命令緩沖器1160中。在儲存在虛擬信道命令緩沖器1160之前,分析邏輯單元1170可根據(jù)命令的類型而將該命令分割成若干較小的命令。例如,如果圖形適配卡1095要求自系統(tǒng)內存讀取一大塊的數(shù)據(jù),則分析邏輯單元1170可產(chǎn)生對相同內存塊中的若干較小塊執(zhí)行的若干未公開讀取命令。我們考慮到,在一個具體的實施例中,可沿著各緩存線邊界而產(chǎn)生這些塊。然后,可將這些新產(chǎn)生的未公開命令的每一個儲存在虛擬信道命令緩沖器1160,并可將原始的未公開命令儲存在NP命令緩沖器1110。
在所示實施例中,NP來源標識邏輯單元1120可產(chǎn)生下游邏輯單元用來決定一個特定響應命令與哪一數(shù)據(jù)流相關聯(lián)的標識值。NP來源標識邏輯單元1120可產(chǎn)生與這些上游未公開命令中的每一個相關聯(lián)的標識值。在一個具體的實施例中,可產(chǎn)生標識值0至29。然而,我們考慮到,其它的實施例可產(chǎn)生其它適當數(shù)目的標識值。
當上游命令儲存在虛擬信道命令緩沖器1160時,控制命令產(chǎn)生器1140可產(chǎn)生與圖2的收發(fā)器110及120所產(chǎn)生的控制命令類似的控制命令。在圖10中,控制命令產(chǎn)生器1140也可將這些控制命令通過通道接口1030傳送到如圖2的通道控制單元130的控制單元,因而可安排各上游命令進入I/O通道140的調度程序。圖10的通道接口1030可視需要而包含一般用途緩沖電路,以便作為I/O通道140與外圍接口電路1000內的邏輯單元間的接口。
請參閱圖11,圖中示出用來處理圖形響應的外圍接口電路的一個具體的實施例。為了圖式的簡化及清晰,以相同的代號來標示圖10所示電路組件的各電路組件。外圍接口電路包含旁路機制1200,旁路機制1200包含數(shù)據(jù)緩沖器1100,數(shù)據(jù)緩沖器1100連接到總線接口電路1080??偩€接口電路1080包含F(xiàn)IFO緩沖器1105,F(xiàn)IFO緩沖器1105連接到目標總線1185及來源總線1182。來源總線1182及目標總線1185連接到圖形總線1090。旁路機制1200還包含虛擬信道命令緩沖器1060,虛擬信道命令緩沖器1060連接到仲裁邏輯單元1070。仲裁邏輯單元1070也連接到總線接口電路1080。此外,旁路機制1200包含AGP旁路連接設備,用以將虛擬信道命令緩沖器1060的響應信道連接到總線接口電路1080。
如前文中結合圖10所述的,當接收到下游響應及命令時,可將這些響應及命令儲存在虛擬信道命令緩沖器1060的各個虛擬信道FIFO。在圖11中,當仲裁周期決定了獲勝命令時,可將與獲勝命令相關聯(lián)的數(shù)據(jù)傳送到FIFO緩沖器1105。只要數(shù)據(jù)出現(xiàn)在FIFO緩沖器1105,則總線接口1080可開始適于在圖形總線1090上傳輸?shù)目偩€周期。當完成了總線周期,并使每個獲勝命令自虛擬信道命令緩沖器1060收回時,特定虛擬信道FIFO內的其余命令可朝向該FIFO頭端移動。最后,除非該命令是AGP響應命令,否則可讀出每個命令,且每個命令都可參與仲裁周期。
在所示實施例中,總線接口電路1080包含兩個獨立的總線來源總線1182及目標總線1185??偩€接口電路1080可使用來源總線1182及目標總線1185而在圖形總線1090與上游節(jié)點之間傳輸數(shù)據(jù)包事務??衫脕碓纯偩€1182傳送連接到圖形總線1090的圖形設備所發(fā)出的命令。可利用目標總線1185傳送不在圖形總線1090上的其它設備(例如系統(tǒng)處理器)所發(fā)出的命令。在圖11中,來源總線1182及目標總線1185分別包含命令信道及響應信道(圖中未示出)??衫脕碓纯偩€的命令信道來傳送諸如圖形總線上的設備所發(fā)出的已公開及未公開命令等的命令??蓪碓纯偩€的響應信道用于傳送不在圖形總線上的設備所產(chǎn)生的但對應于圖形總線上的設備所發(fā)出的已公開及未公開命令的響應命令。此外,可將目標總線的命令信道用來傳送諸如不在圖形總線上的設備所發(fā)出的已公開及未公開命令等的命令??蓪⒛繕丝偩€的響應信道用于傳送圖形總線上的一設備所產(chǎn)生的但對應于不在該圖形總線上的一設備所發(fā)出的已公開及未公開命令的響應命令。
因為存在用于傳送事務的兩個獨立的總線,所以可在來源總線1182的響應信道上傳送下游的AGP及PCI響應命令,同時可在目標總線1185上傳送任何下游的已公開或未公開命令。舉例而言,連接到圖形總線1090的圖形設備發(fā)出諸如未公開讀取命令等的AGP事務??偩€接口電路1080將該事務轉換為若干數(shù)據(jù)包,且這些數(shù)據(jù)包通過來源總線1182的命令信道傳送到圖10的上游部分1020,且將命令傳送到主節(jié)點(圖中未示出)以供處理。稍后,虛擬信道命令緩沖器1060接收對應于先前AGP命令的AGP響應。由于可使用來源總線1182的響應信道及目標總線1185的獨立命令信道,所以并不將該AGP儲存在虛擬信道命令緩沖器1060的響應信道中,且該AGP響應并不參與任何仲裁周期。容許該AGP響應繞過虛擬信道命令緩沖器1060的響應信道緩沖器,且該AGP響應傳送到總線接口電路1080。虛擬信道命令緩沖器1060內儲存的所有其它類型的命令可參與仲裁周期。此種方式不同于諸如連接到圖形總線1090的圖形設備所發(fā)出的未公開讀取命令等的PCI事務。稍后到達的下游PCI響應將儲存在虛擬信道命令緩沖器1060的響應信道緩沖器,且不會參與任何仲裁周期??赡鼙仨毎才胚@些PCI響應的調度程序,這是因為PCI排序規(guī)則可容許各數(shù)據(jù)流間的事務重新排序,而AGP排序規(guī)則不容許此種事務重新排序。
現(xiàn)在請參閱圖12,圖中示出用來將圖形響應重新排序的設備的實施例。為了圖式的簡化及清晰,以相同的代號來標示對應于圖10及圖11所示電路組件的各電路組件。事務重新排序設備包含數(shù)據(jù)緩沖器1100,數(shù)據(jù)緩沖器1100包含指針1101及控制邏輯及儲存單元1130。數(shù)據(jù)緩沖器1100連接到控制邏輯及儲存單元1130及總線接口電路1080??刂七壿嫾皟Υ鎲卧?130包含數(shù)據(jù)可用性儲存單元1135。在所示實施例中,數(shù)據(jù)可用性儲存單元1135是寄存器。然而,我們考慮到,其它的實施例可使用諸如隨機存取存儲器等的任何適用的儲存設備。
如前文所述,諸如AGP響應等的圖形響應與PCI及PCI-X響應不同,只能按照請求這些圖形響應的順序(而與這些圖形響應所屬的數(shù)據(jù)流無關的方式)傳送回發(fā)出的設備。因此,可按照與數(shù)據(jù)緩沖器1100接收各下游AGP響應的順序不同的順序而將這些下游AGP響應傳送到發(fā)出的設備。例如,第一請求向上游傳送,并與第一數(shù)據(jù)流相關聯(lián)。后續(xù)的是與第二數(shù)據(jù)流相關聯(lián)的第二請求。稍后,只接收到對應于第一數(shù)據(jù)流的響應數(shù)據(jù)數(shù)據(jù)包的一部分,且這一部分儲存在數(shù)據(jù)緩沖器1100內。然而,第二數(shù)據(jù)流的所有響應數(shù)據(jù)數(shù)據(jù)包已經(jīng)被接收并儲存在數(shù)據(jù)緩沖器1100內。在接收到第一數(shù)據(jù)流的其余數(shù)據(jù)數(shù)據(jù)包,且隨即將這些數(shù)據(jù)數(shù)據(jù)包傳送到總線接口電路1080以便轉換為總線周期之前,不得傳送第二數(shù)據(jù)流的數(shù)據(jù)數(shù)據(jù)包。
在所示實施例中,數(shù)據(jù)緩沖器1100可以是隨機存取存儲器單元,隨機存取存儲器單元包含至少29個儲存位置,這些儲存位置分別對應于圖10的NP標識邏輯單元1120可指定給命令的29個標識值。當每個數(shù)據(jù)數(shù)據(jù)包到達時,可將這些數(shù)據(jù)數(shù)據(jù)包儲存在對應于所接收的數(shù)據(jù)數(shù)據(jù)包的標識值的一個位置。在圖12中,指針1101可指向預期會存放將傳送到總線接口1080的下一順序AGP數(shù)據(jù)段的數(shù)據(jù)的位置。此外,數(shù)據(jù)可用性儲存單元1135可包含分別對應于可由圖10的NP標識邏輯單元1120指定給命令的29個標識值的至少29個位??蓪D12的數(shù)據(jù)可用性儲存單元1135用來指示已接收到了哪些數(shù)據(jù)數(shù)據(jù)包,而指針1101則指向數(shù)據(jù)緩沖器1100中的下一AGP響應位置。舉例而言,接收到分別包含標識值零、一及27的數(shù)據(jù)數(shù)據(jù)包。將這些數(shù)據(jù)數(shù)據(jù)包分別儲存在數(shù)據(jù)緩沖器1100內的位置零、一及二十七。因此,可置位數(shù)據(jù)可用性儲存單元1135的位零、一及二十七,因而指示了可取得哪一數(shù)據(jù),而指針1101則指向對應于標識值零而將要傳送下一AGP數(shù)據(jù)的位置。但是我們考慮到,在其它的實施例中,可通過清除數(shù)據(jù)可用性儲存單元1135來指示可取得該數(shù)據(jù)。因此,每當接收到一個下游AGP響應時,即可將對應的數(shù)據(jù)儲存在數(shù)據(jù)緩沖器1100,且可更新數(shù)據(jù)可用性儲存單元1135,以便反映已將哪些數(shù)據(jù)數(shù)據(jù)包儲存在數(shù)據(jù)緩沖器1100內。下文中將結合圖13詳細說明圖12的機制的操作。
請參閱圖13,圖中示出用于圖形響應的事務重新排序機制的一個具體的實施例操作的流程圖。請同時參閱圖10、圖12及圖13,操作開始于圖13的步驟1300。步驟1300中,在系統(tǒng)初始化時,可將圖12的指針1101初始化為諸如零等的預定值。配合指針1101的初始化,還可將圖10的NP標識邏輯單元1120初始化為相同的預定值,因而使標識邏輯單元與該指針同步。因此,圖12的指針1101現(xiàn)在指向數(shù)據(jù)緩沖器1100中可讀取數(shù)據(jù)的下一位置。因此,在初始化之后,可傳送到總線接口電路1080的第一AGP響應可具有一個零的標識值。請注意,雖然用于本實施例的起始值是零,但是我們考慮到,在其它的實施例中,也可使用其它適當?shù)钠鹗贾怠?br>
繼續(xù)執(zhí)行圖13的步驟1310,圖10的下游部分1010可接收AGP響應命令,且與該響應相關聯(lián)的命令起始碼中的一個或多個識別位可將該AGP響應命令識別為AGP響應。繼續(xù)執(zhí)行圖13的步驟1320,可將該響應的數(shù)據(jù)部分儲存在圖12的數(shù)據(jù)緩沖器1100中對應于該響應的標識值的某一位置內。此外,可置位數(shù)據(jù)可用性儲存單元1135中對應的位,而指示數(shù)據(jù)緩沖器1100的該位置中存在有數(shù)據(jù)。我們考慮到,其它的實施例可清除數(shù)據(jù)可用性儲存單元1135中對應的位,以便指示數(shù)據(jù)的存在。繼續(xù)執(zhí)行圖13的步驟1330,因為圖12的指針1101指向數(shù)據(jù)緩沖器1100中可讀取下一AGP響應數(shù)據(jù)的位置,所以指針1101可提供新接收的數(shù)據(jù)段的標識值的指示,并將該指示與來自數(shù)據(jù)可用性儲存單元1135的是否可取得具有該標識值的數(shù)據(jù)的指示相比較。如果比較的結果并不相符,則可舍棄該響應的命令部分,且操作繼續(xù)回到圖13的步驟1310。請再參閱步驟1330,如果比較的結果相符,則操作繼續(xù)執(zhí)行步驟1340,此時可自數(shù)據(jù)緩沖器1100讀出由圖12的指針1101指向的位置中儲存的數(shù)據(jù),且可遞增指針1101。繼續(xù)執(zhí)行圖13的步驟1350,圖12的總線接口電路1080可開始一個總線周期,因而將響應數(shù)據(jù)傳送到提出請求的設備。
繼續(xù)執(zhí)行圖13的步驟1360,因為已遞增了圖12的指針1101,且指針1101現(xiàn)在可指向數(shù)據(jù)緩沖器1100中可讀取下一AGP響應的位置,所以可提供對應的標識值指示,并將該標識值指示與來自數(shù)據(jù)可用性儲存單元1135的是否可取得具有該標識值的數(shù)據(jù)的指示相比較。如果比較的結果相符,則操作繼續(xù)回到圖13的步驟1340,此時可自圖12的數(shù)據(jù)緩沖器1100讀出該數(shù)據(jù),并可遞增指針1101。仍然在圖13的步驟1350,圖12的總線接口電路1080可開始一個總線周期,因而將下一響應數(shù)據(jù)傳送到提出請求的設備。請再參閱圖13的步驟1360,如果比較的結果不相符,而指示無法取得下一數(shù)據(jù),則操作繼續(xù)回到步驟1310,以便等候另一AGP響應。
可針對所接收的每一AGP響應繼續(xù)該程序。因此,當接收到AGP響應時,如果是按照一種與原來請求這些AGP響應的順序不同的順序接收這些AGP響應,則可不理會這些非順序的響應命令的每一個,并可儲存該數(shù)據(jù)以便等候按照正確順序的AGP響應。
本領域普通技術人員一旦完全了解上述的公開的事項之后,很容易做出許多的變化及修改。下面的權利要求意在包含所有此類的變化及修改。
權利要求
1.一種用于計算機系統(tǒng)的輸入/輸出節(jié)點的外圍接口電路,該外圍接口電路包含被連接以從來源接收數(shù)據(jù)包命令的第一緩沖電路(390),其中第一緩沖電路包含多個第一緩沖器,每個緩沖器對應于多個虛擬信道中分別的虛擬信道,用以儲存屬于該虛擬信道的所選擇的數(shù)據(jù)包命令;連接到第一緩沖電路的總線接口電路(490),其中總線接口電路配置成將第一緩沖電路中儲存的這些所選擇的數(shù)據(jù)包命令轉換為適于在外圍總線(560)上傳輸?shù)拿睿渲贸刹⒖蛇m用于將外圍總線上傳輸?shù)倪@些命令轉換為數(shù)據(jù)包命令;被連接以從上述總線接口電路接收數(shù)據(jù)包命令的第二緩沖電路(530),其中第二緩沖電路包含多個第二緩沖器,每個緩沖器對應于多個虛擬信道中的分別的虛擬信道,用以儲存屬于該虛擬信道的所選擇的數(shù)據(jù)包命令。
2.如權利要求1所述的外圍接口電路,進一步包含連接到上述第一緩沖電路及第二緩沖電路的控制邏輯單元(460),且該控制邏輯單元配置成控制這些數(shù)據(jù)包命令的傳送進出總線接口電路。
3.如權利要求2所述的外圍接口電路,進一步包含連接到上述第一緩沖電路的標識邏輯單元(490),該標識邏輯單元配置成接收這些數(shù)據(jù)包命令并為每個數(shù)據(jù)包命令產(chǎn)生一標識值,該標識值對應于每個數(shù)據(jù)包命令相對于其它的數(shù)據(jù)包命令的接收順序。
4.如權利要求3所述的外圍接口電路,其中標記邏輯單元進一步配置成在將每個數(shù)據(jù)包命令儲存在第一緩沖電路之前,先將標識值附加到每個數(shù)據(jù)包命令。
5.如權利要求4所述的外圍接口電路,進一步包含連接到第一緩沖電路的仲裁邏輯單元(410),且該仲裁邏輯單元配置成根據(jù)每個控制命令的標記值來仲裁多個第一緩沖器中儲存的這些數(shù)據(jù)包命令。
6.如權利要求5所述的外圍接口電路,進一步包含連接而自第一來源接收數(shù)據(jù)包數(shù)據(jù)的第一數(shù)據(jù)緩沖電路(400),其中第一數(shù)據(jù)緩沖電路配置成在輸入/輸出節(jié)點的時鐘速度下接收數(shù)據(jù),其中數(shù)據(jù)是在外圍總線的時鐘速度下從第一數(shù)據(jù)緩沖電路獲取。
7.如權利要求6所述的外圍接口電路,進一步包含被連接以從總線接口電路接收數(shù)據(jù)包數(shù)據(jù)的第二數(shù)據(jù)緩沖電路(550),其中第二數(shù)據(jù)緩沖電路配置成在外圍總線的時鐘速度下接收數(shù)據(jù),其中數(shù)據(jù)是在輸入/輸出節(jié)點的時鐘速度下從第二數(shù)據(jù)緩沖電路獲取。
8.如權利要求7所述的外圍接口電路,進一步包含連接到第二緩沖電路的控制命令產(chǎn)生器單元(520),且控制命令產(chǎn)生器單元配置成為自總線接口電路接收的每個數(shù)據(jù)包命令產(chǎn)生控制命令,其中每個控制命令包含每個對應的數(shù)據(jù)包命令的子集。
9.一種用于計算機系統(tǒng)的輸入/輸出節(jié)點,包含配置成在第一通信路徑上接收第一數(shù)據(jù)包命令的第一收發(fā)器電路(110);配置成在第二通信路徑上接收第二數(shù)據(jù)包命令的第二收發(fā)器電路(120);如前面任一權利要求所述的一個或多個外圍接口電路(150,350)。
10.一種計算機系統(tǒng),包含一個或多個處理器(10A-10D);如權利要求9所述的一個或多個輸入/輸出節(jié)點(20,30,40),它們連接在一起并通過點對點數(shù)據(jù)包總線(50A-50C)連接到一個或多個處理器。
全文摘要
本發(fā)明揭示了一種用于計算機系統(tǒng)的I/O節(jié)點的外圍接口電路。計算機系統(tǒng)的輸入/輸出節(jié)點的外圍接口電路包含第一緩沖電路、第二緩沖電路及總線接口電路。第一緩沖電路接收數(shù)據(jù)包命令,并可包含多個第一緩沖器,每個緩沖器對應于多個虛擬信道中的一個分別的虛擬信道。第二緩沖電路被連接以從總線接口電路接收數(shù)據(jù)包命令,并可包含多個第二緩沖器,其中每個緩沖器對應于多個虛擬信道中的一個分別的虛擬信道。可將總線接口電路配置成將第一緩沖電路中儲存的所選擇的數(shù)據(jù)包命令轉換為適于在外圍總線上傳輸?shù)拿睢?br>
文檔編號G06F13/12GK1639698SQ02820389
公開日2005年7月13日 申請日期2002年8月22日 優(yōu)先權日2001年10月15日
發(fā)明者T·阿斯卡爾, L·D·休伊特, E·G·錢伯斯 申請人:先進微裝置公司