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