專利名稱:用于將命令發(fā)布到總線上的方法、裝置和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般涉及處理器,并且更特別地涉及用于將命令發(fā)布到 總線上的方法和裝置。
背景技術(shù):
在傳統(tǒng)系統(tǒng)中,第一處理器可以通過輸入/輸出(1/0)接口與第二處理器相耦合。第一處理器可以通過i/o接口從第二處理器接收將 被放置在總線上的命令。第一處理器可以將所接收的命令分離成讀 命令流和寫命令流,將讀命令存儲在讀隊列中并且將寫命令存儲在未決寫命令的完成和/或?qū)戧犃许敳康膶懨钍欠褚蕾囉谖礇Q讀命令 的完成,來維護命令流之間的順序。更特別地,傳統(tǒng)系統(tǒng)使用讀地 址沖突列表來跟蹤與未決讀命令關(guān)聯(lián)的地址,并使用寫地址沖突列 表來跟蹤與未決寫命令關(guān)聯(lián)的地址。傳統(tǒng)系統(tǒng)可以維護指示讀命令對寫命令的依賴性的第一矩陣。 可以將當(dāng)各個讀命令索引時從寫地址沖突列表輸出的數(shù)據(jù)填入第一 矩陣。類似地,傳統(tǒng)系統(tǒng)可以維護指示寫命令對讀命令的依賴性的據(jù)填入第二矩陣。傳統(tǒng)系統(tǒng)可以使用依賴'性矩陣和地址沖突列表來 確定讀隊列頂部的命令是否依賴于寫命令和/或?qū)戧犃许敳康拿钍?否依賴于讀命令。一般地,傳統(tǒng)系統(tǒng)可以操作在這樣的模式下,其中可以將隊列 中的命令發(fā)布到總線上并亂序執(zhí)行。然而,在一些操作情境中,傳傳統(tǒng)系統(tǒng)可以使用阻擋(barrier)命令來促使這種按序執(zhí)行。例如,在接收到阻擋命令后,傳統(tǒng)系統(tǒng)可以使用指向隊列條目的指針的復(fù) 雜操控來促使這種按序執(zhí)行。此外,傳統(tǒng)系統(tǒng)可以將阻擋命令作為 條目存儲在隊列中,因而減少了可以用來存儲讀或?qū)懨畹年犃袟l 目的數(shù)目。此外,傳統(tǒng)系統(tǒng)要求大量邏輯來實現(xiàn)復(fù)雜的指針操控,
這消耗了第一處理器上的額外空間并消耗了芯片有效面積(real estate)。相應(yīng)地,希望用于將命令發(fā)布到總線上的改進的方法和系統(tǒng)。
發(fā)明內(nèi)容
在本發(fā)明的第 一方面,提供了 一種將命令發(fā)布到系統(tǒng)的總線上 的第一方法。該第一方法包括以下步驟(l)接收系統(tǒng)中的第一功 能性存儲器命令;(2)接收促使系統(tǒng)按序執(zhí)行功能性存儲器命令的 命令;(3)接收系統(tǒng)中的第二功能性存儲器命令;以及(4)使用 依賴性矩陣指示第二功能性存儲器命令需要訪問與第 一功能性存儲 器命令相同的地址,而不論第二功能性存儲器命令實際上是否對第 一功能性存儲器命令具有排序依賴性。依賴性矩陣適于存儲指示系 統(tǒng)接收的功能性存儲器命令是否對系統(tǒng)先前接收的 一個或多個功能 性存儲器命令具有排序依賴性的數(shù)據(jù)。
在本發(fā)明的第二方面,提供了一種用于發(fā)布命令的第一裝置。 該第一裝置包括(1)總線;以及(2)與該總線耦合且包括依賴性 矩陣的命令流水線邏輯,其中依賴性矩陣適于存儲指示命令流水線 邏輯接收的功能性存儲器命令是否對命令流水線邏輯先前接收的一 個或多個功能性存儲器命令具有排序依賴性的數(shù)據(jù)。命令流水線邏 輯適于(a)接收第一功能性存儲器命令;(b)接收促使命令流水 線邏輯按序執(zhí)行功能性存儲器命令的命令;(c)接收第二功能性存 儲器命令;以及(d)使用依賴性矩陣指示第二功能性存儲器命令需 要訪問與第 一功能性存儲器命令相同的地址,而不論第二功能性存 儲器命令實際上是否要求訪問與第一功能性存儲器命令相同的存儲 器地址。在本發(fā)明的第三方面,提供了用于發(fā)布命令的第一系統(tǒng)。該第
一系統(tǒng)包括(1 )第一處理器;以及(2)第二處理器,其與第一處 理器耦合并適于與第一處理器通信。第一處理器包括用于發(fā)布命令 的裝置,該裝置包括(a)總線;以及(b)與該總線相耦合并包括 依賴性矩陣的命令流水線邏輯,其中依賴性矩陣適于存儲指示命令 流水線邏輯接收的功能性存儲器命令是否對命令流水線邏輯先前接 收的 一個或多個功能性存儲器命令具有排序依賴性的數(shù)據(jù)。該裝置 適于(i)接收系統(tǒng)中的第一功能性存儲器命令;(ii)接收促使系 統(tǒng)按序執(zhí)行功能性存儲器命令的命令;(iii)接收系統(tǒng)中的第二功 能性存儲器命令;以及(iv)使用依賴性矩陣指示第二功能性存儲器 命令需要訪問與第 一功能性存儲器命令相同的地址,而不論第二功 能性存儲器命令實際上是否對第一功能性存儲器命令具有排序依賴 性。提供了多個其他方面以及根據(jù)本發(fā)明這些其他方面的系統(tǒng)和裝 置。
通過下文的詳細描述、所附權(quán)利要求書以及附圖,本發(fā)明的其 他特征和方面將變得更加顯而易見。
圖1A至圖1B示出了根據(jù)本發(fā)明實施方式的用于將命令發(fā)布到 總線上的系統(tǒng)的方框圖。
圖2示出了根據(jù)本發(fā)明實施方式的可被包括在圖1A至圖1B的 系統(tǒng)中的示例性依賴性矩陣。
圖3示出了根據(jù)本發(fā)明實施方式的可被包括在圖1A至圖1B的 系統(tǒng)中的依賴性矩陣及其使用的信號。
圖4示出了根據(jù)本發(fā)明實施方式的圖1A至圖1B的系統(tǒng)中所包 括的命令流水線邏輯的細節(jié)。
具體實施例方式
本發(fā)明提供了用于將命令發(fā)布到總線上的改進方法和裝置。類似于傳統(tǒng)系統(tǒng),本發(fā)明可以將讀和寫命令分離到流中,恃讀命令存 儲在讀流中并且將寫命令存儲在寫流中。此外,本方法和裝置可以
的命令是否依賴于寫命令和/或?qū)戧犃许敳康拿钍欠褚蕾囉谧x命
令。而且,本方法和裝置可以使用諸如"確保I/0按序執(zhí)行"(EIEIO) 或同步命令的阻擋命令來促使按序執(zhí)行存儲在一個或多個隊列中的 命令。EIEIO和同步命令對于本領(lǐng)域的技術(shù)人員是已知的,因此不這 里詳細描述。
與傳統(tǒng)系統(tǒng)不同的是,在一些實施方式中,本方法和裝置不將 阻擋命令存儲在隊列中,和/或不依賴于復(fù)雜的指針操控來促使按序 命令執(zhí)行。因此,本方法和裝置可以更為有效地使用隊列條目和/或 芯片有效面積。例如,假設(shè)本系統(tǒng)接收到讀命令,隨后是阻擋命令, 再隨后是寫命令。當(dāng)接收到讀命令時,本系統(tǒng)可以利用與該讀命令 關(guān)聯(lián)的地址來更新讀地址沖突列表,并將該讀命令存儲在讀隊列中。 當(dāng)接收到阻擋命令時,本系統(tǒng)可以設(shè)置阻擋標(biāo)志。阻擋標(biāo)志指示該 系統(tǒng)將根據(jù)預(yù)先計算的依賴性而不是一個或多個地址沖突列表來確 定是否將隨后接收的命令發(fā)布到總線上。這種預(yù)先計算的依賴性可 以作為偽地址沖突依賴性存儲在地址沖突依賴性矩陣中。預(yù)先計算 的依賴性可以使隨后的命令依賴于在阻擋命令之前接收的命令,而 不論(例如,是否存在)實際的地址沖突依賴性如何。因此,在接 收到阻擋命令之后的寫命令后,系統(tǒng)可以使用預(yù)先計算的依賴性使 得該寫命令依賴于讀命令,而不論與該寫命令關(guān)聯(lián)的地址和與該讀 命令關(guān)聯(lián)的地址(以及與任何其他先前接收的命令關(guān)聯(lián)的地址)是 否不同??梢栽谧x命令完成(例如,該讀命令^皮發(fā)布到總線上并祐: 執(zhí)行)之后清除該寫命令的依賴性。因此,該系統(tǒng)可以促使在該寫 命令之前執(zhí)行該讀命令。通過這種方式,本發(fā)明提供了用于將命令
發(fā)布到總線上的改進方法和系統(tǒng)。例如,本發(fā)明可以在不使用復(fù)雜 的指針操控和/或不消耗隊列條目來存儲用以促使按序命令執(zhí)行的阻 擋命令的情況下,促使按序命令執(zhí)行。圖1A至圖IB示出了根據(jù)本發(fā)明實施方式的用于將指令發(fā)布到 總線上的系統(tǒng)的方框圖。參考圖1A至圖1B,系統(tǒng)100可以包括與 第二處理器104耦合的第一處理器102,其中第二處理器104可以與 存儲器106耦合。第一存儲器102可以適于接收來自第二處理器104 的命令(例如,至I/O子系統(tǒng)的讀和/或?qū)懨?。另外或可選地, 笫一處理器102可以適于接收阻擋或柵欄命令(此后稱為"阻擋命 令")。如下文所述,阻擋命令可以促使按序執(zhí)行所接收的命令。 更特別地,阻擋命令可以促使在該阻擋命令之前接收的讀或?qū)懨?的完成先于在該阻擋命令之后接收的讀或?qū)懨羁梢酝瓿芍畷r。第 一處理器102可以是輸入/輸出(1/0)處理器,并且第二處理器104 可以是向第一處理器102發(fā)布命令的主處理器或CPU 104。
第一處理器102可以包括與命令流水線邏輯IIO(例如,總線主 邏輯)耦合的I/0控制器108。 1/0控制器108可以適于接收來自第 二處理器104的命令,并將這些命令傳送到命令流水線邏輯110。更 特別地,1/0控制器108可以包括命令隊列112,其適于存儲從第二 處理器104處接收的命令并將命令發(fā)布至命令流水線邏輯110。
命令流水線邏輯110可以與處理器總線114耦合。命令流水線 邏輯110可以適于確定和跟蹤由其接收的命令的地址沖突依賴性(例 如,執(zhí)行順序依賴性)。此外,命令流水線邏輯110可以適于(例 如,響應(yīng)于接收到阻擋命令)創(chuàng)建用于一個或多個所接收的命令的 偽地址沖突依賴性,以促使命令的按序執(zhí)行。更特別地,命令流水 線邏輯110可以適于確定與接收命令關(guān)聯(lián)(例如,以之為目標(biāo))的 地址是否和與先前接收的命令關(guān)聯(lián)的地址相同。此外,命令流水線 邏輯110可以適于確定是否接收到了阻擋命令,以及如果是,則使 在該阻擋命令之后所接收的命令依賴于在該阻擋命令之前所接收的 命令。更特別地,命令流水線邏輯110可以創(chuàng)建用于在阻擋命令之 后所接收的命令的偽地址沖突依賴性,使得該命令依賴于阻擋命令 之前所接收的命令。命令流水線邏輯110可以適于分別根據(jù)命令的 地址沖突依賴性(例如,實際和偽地址沖突依賴性)將命令發(fā)布到處理器總線114上。命令流水線邏輯110的其他細節(jié)在下文描述。
處理器總線114可以與 一個或多個組件和/或I/O設(shè)備接口耦合, 可以通過該1/0設(shè)備接口訪問與命令關(guān)聯(lián)的地址。例如,處理器總線 114可以與嵌入第一處理器102中的處理器116耦合。而且,處理器 總線114可以與適于耦合至PCI總線(未示出)的PCI Express卡118 耦合。此外,處理器總線114可以與網(wǎng)卡120 (例如,10/100 Mbps 以太網(wǎng)卡)耦合,第一處理器110可以通過網(wǎng)卡120訪問網(wǎng)絡(luò)122, 例如廣域網(wǎng)(WAN)或局域網(wǎng)(LAN)。而且,處理器總線114可 以與存儲器控制器124 (例如,雙倍數(shù)據(jù)率(DDR2)存儲器控制器) 耦合,第一處理器110可以通過存儲器控制器124與第二存儲器126 耦合。而且,處理器總線114可以與通用異步接收器與發(fā)送器 (UART) 128耦合,第一處理器110可以通過UART128與調(diào)制解 調(diào)器130耦合。上述與處理器總線114的連接是示例性的。因此, 處理器總線114可以與更多或更少數(shù)量的組件或1/0設(shè)備接口耦合。 此外,處理器總線114可以與不同類型的組件和/或I/O設(shè)備接口耦 合。如下所述,命令流水線邏輯110可以有效地在處理器總線114 上發(fā)布和執(zhí)行命令(例如,按序),這可能需要訪問與處理器總線 114耦合的組件和/或1/Oi殳備接口 。
命令流水線邏輯110可以包括分流器(stream splitter)邏輯132, 其適于將第一處理器102接收的命令分離為讀命令流和寫命令流。 分流器邏輯132可以為所接收的讀命令分配各自的讀標(biāo)簽,并為所 接收的寫命令分配各自的寫標(biāo)簽。此外,分流器邏輯132可以包括 阻擋命令處理邏輯133,其適于預(yù)先計算一個或多個所接收的命令對 其他命令的依賴性(例如,偽依賴性)。例如,阻擋命令處理邏輯 133可以生成一個或多個向量,該向量指示所接收的命令對命令流水 線邏輯110接收的一個或多個其他命令的依賴性。例如,這種向量 可以作為對先于阻擋指令的第一讀或?qū)懨畹膫蔚刂窙_突依賴性, 該阻擋指令阻止阻擋之后的命令超過阻擋指令之前接收的命令。
阻擋命令處理邏輯133可以包括至少一個配置寄存器134,其適于指示由命令流水線邏輯110預(yù)先計算的針對所接收命令的依賴性 類型。例如,配置寄存器134可以存儲這樣的值,其指示阻擋命令 處理邏輯133是否可以預(yù)先計算所接收的命令對一個或多個其他接 收命令的依賴性,并且如果可以,阻擋命令處理邏輯133是否可以
預(yù)先計算所接收的命令僅對與該所接收的命令類型相同的命令的依 賴性、僅對與該接收的命令類型不同的命令的依賴性、或?qū)εc該接 收的命令類型相同或不同的命令的依賴性。例如,如果配置寄存器 134存儲了邏輯"00",則阻擋命令處理邏輯133不能預(yù)先計算所接 收的命令對其他命令的依賴性。此外,如果配置寄存器134存儲了 邏輯"01",則阻擋命令處理邏輯133可以預(yù)先計算所接收的讀命 令對一個或多個所接收的其他讀命令的依賴性,以及所接收的寫命 令對一個或多個所接收的其他寫命令的依賴性。而且,如果配置寄 存器134存儲了邏輯"10",則阻擋命令處理邏輯133可以預(yù)先計 算所接收的讀命令對一個或多個所接收的寫命令的依賴性,以及所 接收的寫命令對一個或多個所接收的讀命令的依賴性。此外,如果 配置寄存器134存儲了邏輯"11",則阻擋命令處理邏輯133可以 預(yù)先計算所接收的寫命令對一個或多個讀命令以及一個或多個所接 收的其他寫命令的依賴性,以及所接收的讀命令對一個或多個寫命 令以及一個或多個所接收的其他讀命令的依賴性。上面的值是示例 性的,因此,阻擋命令處理邏輯133可以基于不同的配置寄存器值
來分別計算上述依賴性。
分流器邏輯132的第一輸出135可以與寫地址沖突列表138的 第一輸入136耦合。寫地址沖突列表138可以類似于適于基于輸入 數(shù)據(jù)而輸出數(shù)據(jù)的內(nèi)容可尋址存儲器(CAM)。寫地址沖突列表138 的第一輸入136可被用以輸入用于寫命令的條目及與其關(guān)聯(lián)的各個 地址。通過這種方式,寫地址沖突列表138可以包括與分配有寫標(biāo) 簽的每個所接收的寫命令相對應(yīng)的條目。
類似地,分流器邏輯132的第二輸出140可以與讀地址沖突列 表144的第一輸入142耦合。讀地址沖突列表144也可以類似于適于基于輸入數(shù)據(jù)而輸出數(shù)據(jù)的CAM。讀地址沖突列表144的第一輸
過這種方式,讀地址沖突列表144可以包括與分配有讀標(biāo)簽的每個 所接收的讀命令相對應(yīng)的條目。
此外,分離器邏輯132的第三輸出146可以與寫地址沖突列表 138的第二輸入148耦合,以便可以將與讀命令關(guān)聯(lián)的地址輸入寫地 址沖突列表138?;谶@種輸入,寫地址沖突列表138可以通過其第 一輸出150輸出一個或多個比特,其中第一輸出150可以與讀-寫依 賴性矩陣154的第一輸入152耦合??蓪⒃摫忍卮鎯樽x-寫依賴性 矩陣154中的行(例如,響應(yīng)于命令流水線邏輯110的行設(shè)置命令 RowSet(O:n))。讀-寫依賴性矩陣154的行對應(yīng)于可以^皮分配給讀命 令的各個讀標(biāo)簽。讀-寫依賴性矩陣154的列對應(yīng)于可以被分配給寫 命令的各個寫標(biāo)簽。因此,每個列可以對應(yīng)于寫命令并指示依賴于 該寫命令的讀命令。
分流器邏輯132的第四輸出156可以與讀地址沖突列表144的 第二輸入158耦合,以便可以將與寫命令關(guān)聯(lián)的地址輸入讀地址沖 突列表144。基于該輸入,讀地址沖突列表144可以通過其第一輸出 160輸出一個或多個比特,其中第一輸出160可以與寫-讀依賴性矩 陣164的第一輸入162耦合。通過這種方式,可以將該比特存儲為 寫-讀依賴性矩陣164中的行(例如,響應(yīng)于命令流水線邏輯110的 行設(shè)置命令RowSet(O:n))。寫-讀依賴性矩陣164的行對應(yīng)于可以分 配給寫命令的各個寫標(biāo)簽。寫-讀依賴性矩陣164的列對應(yīng)于可以分 配給讀命令的各個讀標(biāo)簽。因此,每個列可以對應(yīng)于讀命令并指示 依賴于該讀命令的寫命令。
而且,分流器邏輯132的第五輸出165可以與讀命令控制邏輯 167耦合。讀命令控制邏輯167可以適于存儲指示命令流水線邏輯 UO是否已經(jīng)接收到阻擋命令的一個或多個比特(例如,標(biāo)志),其 中,該阻擋命令可以4吏系統(tǒng)100按序執(zhí)行阻擋命令之前和之后接收 的命令。阻擋命令處理邏輯133在接收到阻擋命令時設(shè)置該標(biāo)志。讀命令控制邏輯167的第一輸出168可以與讀-寫依賴性矩陣154的 第二輸入169耦合。對于所接收的命令,可以將通過寫地址沖突列 表138或讀命令控制邏輯167接收的數(shù)據(jù)輸入讀-寫依賴性矩陣154。 更特別地,寫地址沖突列表138和讀命令控制邏輯167可以通過第 一選擇邏輯(為了方便未在圖1中示出;圖4中的412)與讀-寫依 賴性矩陣154耦合,該第一選擇邏輯適于選擇性地輸出從讀地址沖 突列表138或?qū)懨羁刂七壿?67接收的數(shù)據(jù)。
此外,讀命令控制邏輯167的第二輸出170可以與適于存儲讀 命令的隊列172的輸入171耦合。讀命令可以經(jīng)過讀命令控制邏輯 167傳遞并存儲在讀命令隊列172中。讀命令隊列172的輸出173 可以與第一依賴性檢查邏輯175的第一輸入174耦合。此外,讀-寫 依賴性矩陣154的第一輸出176可以與第一依賴性檢查邏輯175的 第二輸入177耦合。第一依賴性纟企查邏輯175可以適于確定與所接 收的讀命令相關(guān)聯(lián)的依賴性是否已經(jīng)消除。更特別地,第一依賴性 檢查邏輯175可以(例如通過其第二輸入177)接收一個或多個信息 比特,其指示從讀-寫依賴性矩陣154的第一輸出176輸出的來自讀-寫依賴性矩陣154的一個或多個讀命令對一個或多個寫命令的依賴 性?;谠摫忍?,第一依賴性檢查邏輯175可以確定與讀隊列中各 個命令關(guān)聯(lián)的依賴性是否已經(jīng)消除。第一依賴性檢查邏輯175可以 與構(gòu)成總線接口 179第一部分的讀接口 178耦合,其中命令通過總 線接口 179纟皮發(fā)布至總線114。
類似地,分流器邏輯132的第六輸出180可以與寫命令控制邏 輯182的輸入181耦合。寫命令控制邏輯182可以適于存儲指示命 令流水線邏輯110是否已經(jīng)接收到阻擋命令的一個或多個比特(例 如,標(biāo)志),其中,該阻擋命令可以使系統(tǒng)100按序l丸行阻擋命令 之前和之后接收的命令。阻擋命令處理邏輯133在接收到阻擋命令 時設(shè)置該標(biāo)志。寫命令控制邏輯182的第一輸出183可以與寫-讀依 賴性矩陣164的第二輸入184耦合。對于所接收的命令,可以將通 過讀地址沖突列表144或讀命令控制邏輯182接收的數(shù)據(jù)輸入寫-讀依賴性矩陣164。更特別地,讀地址沖突列表144和寫命令控制邏輯 182可以通過第二選擇邏輯(為了方便未在圖1中示出;圖4中的 413)與寫-讀依賴性矩陣164耦合,該第二選擇邏輯適于選擇性地輸 出從讀地址沖突列表144或?qū)懨羁刂七壿?82接收的數(shù)據(jù)。第二 選擇邏輯413可以類似于第一選擇邏輯412。
此外,寫命令控制邏輯182的第二輸出185可以與適于存儲寫 命令的隊列187的輸入186耦合。寫命令可以通過寫命令控制邏輯 182傳遞并存儲在寫命令隊列187中。寫命令隊列187的輸出188 可以與第二依賴性檢查邏輯190的第一輸入189耦合。此外,寫-讀 依賴性矩陣164的第一輸出191可以與第二依賴性才企查邏輯190的 第二輸入192耦合。第二依賴性檢查邏輯190可以適于確定與所接 收的寫命令相關(guān)聯(lián)的依賴性是否已經(jīng)消除。更特別地,第二依賴性 檢查邏輯190可以(例如通過其第二輸入192)接收一個或多個信息 比特,其指示通過寫-讀依賴性矩陣164的第一輸出191的來自寫-讀依賴性矩陣164的一個或多個寫命令對一個或多個讀命令的依賴 性?;谠摫忍?,第二依賴性檢查邏輯190可以確定與寫命令隊列 187中各個命令關(guān)聯(lián)的依賴性是否已經(jīng)消除。第二依賴性檢查邏輯 190可以與構(gòu)成總線接口 179第二部分的寫接口 193耦合。
命令流水線邏輯110可以適于根據(jù)命令對其他命令的實際和/或 偽地址沖突依賴性從讀命令隊列172處選擇命令。例如, 一旦從讀 命令隊列172中選擇了不依賴于其他命令的命令,則可將該命令提 供給讀接口 178。讀接口 178可以更新依賴性矩陣154、 164的一個 或多個,以更新其中存儲的命令對所選讀命令的依賴性(例如,通 過列重置命令ColRst(O:n),其更新與寫命令關(guān)聯(lián)的、指示其上讀命 令依賴性的比特)。例如,列重置命令可以通過讀接口 178的第一 輸出194而從讀接口 178輸出,并由讀-寫依賴性矩陣154的第二輸 入195輸入。
類似地,命令流水線邏輯110可以適于根據(jù)命令對其他命令的 實際和/或偽地址沖突依賴性從寫命令隊列187處選擇命令。例如,一旦從寫命令隊列187中選擇了不依賴于其他命令的命令,則可將 該命令提供給寫接口 193。寫接口 193可以更新依賴性矩陣154、 164 的一個或多個,以更新其中存儲的命令對所選寫命令的依賴性(例 如,通過列重置命令ColRst(0:n),其更新與讀命令關(guān)聯(lián)的、指示其 上寫命令依賴性的比特)。例如,列重置命令可以通過寫接口 193 的第一輸出196從寫接口 193輸出,并由寫-讀依賴性矩陣164的第 二輸入197輸入。在一些實施方式中,總線接口 179可以作為通過 其可以將命令發(fā)布到總線114上的接口。
因此,本發(fā)明可以提供I/O處理器102,其可以通過I/0接口從 其他處理器(例如,CPU)接收讀、寫、確保I/0按序執(zhí)行(EIEI0)、 同步和/或類似命令。I/O處理器102可以緩沖命令并將命令置于總 線114(例如,處理器總線)上,命令可以從總線114處傳遞給適當(dāng) 的設(shè)備(例如,PCI-Express接口卡或DDR2存儲器控制器)。例如, 為了防止在等待讀命令完成的同時寫命令的不必要停滯(stall)或延 遲,1/0處理器可以將所接收的命令分離為獨立的讀流和寫流。因為 通過這種方式分離了命令,因此可以在流之間維護命令順序。依賴 于所涉及的接口和命令目標(biāo)地址,排序規(guī)則可以從嚴(yán)格到寬松。嚴(yán) 格的排序規(guī)定,讀和寫命令必須按照它們從CPU發(fā)布的相同順序完 成。寬松的排序規(guī)定,如果讀和寫命令沒有以相同的地址空間為目 標(biāo),則它們可以相互超越。然而,可以采用其他的排序規(guī)則。排序 規(guī)則和命令一起作為命令流從CPU傳遞??梢允褂?一個或多個阻擋 命令、阻擋命令處理邏輯133、針對每個流的依賴性矩陣154和164、 以及用以計算依賴性的地址查詢列表來維護讀和寫流之間的排序。 由于讀命令隊列的特性,讀命令可以維護它們之間的順序。因此, 對于讀命令而言,對其他類型的同時執(zhí)行(in-flight)命令(例如, 寫命令)的依賴性信息得以維護。然而,在一些實施方式中,系統(tǒng) 100可以包括讀-讀依賴性矩陣,以維護讀命令之間的順序。類似地, 由于寫命令序列的特性,寫命令可以維護它們之間的順序。因此, 對于寫命令而言,對其他類型的同時執(zhí)行命令(例如,讀命令)的依賴性信息得以維護。然而,在一些實施方式中,系統(tǒng)100可以包
括寫-寫依賴性矩陣,以維護寫命令之間的順序。當(dāng)讀和寫命令達到 其各自隊列的頂部時,執(zhí)行依賴性檢查,以確定是否存在任何未消
除(outstanding)的依賴性。如果存在依賴性,則可以停滯命令和其 各自的隊列,直到依賴性消除。
例如,假設(shè)本系統(tǒng)接收到了讀命令,隨后是阻擋命令,再隨后 是寫命令。在接收到讀命令時,本系統(tǒng)100可以利用與該讀命令關(guān) 聯(lián)的地址來更新讀地址沖突列表144,并將該讀命令存儲在讀命令隊 列172中。在接收到阻擋命令后,阻擋命令處理邏輯133可以在讀 命令控制邏輯167和/或?qū)懨羁刂七壿?82中設(shè)置阻擋標(biāo)志。在接 收到寫命令時,阻擋命令處理單元133可以預(yù)先計算該寫命令的依 賴性。這種依賴性可以指示,在阻擋命令之后接收的寫命令依賴于 阻擋命令之前接收的讀命令。阻擋標(biāo)志指示,系統(tǒng)100將根據(jù)預(yù)先 計算的依賴性而不是地址沖突列表138、 144中的一個或多個來確定 在阻擋命令之后接收的命令(例如,寫命令)是否可以發(fā)布到總線 114上。這種與阻擋命令之后接收的命令相關(guān)聯(lián)的預(yù)先計算的依賴性 可以作為偽地址沖突依賴性存儲在依賴性矩陣154、 164的一個或多 個中。因此,預(yù)先計算的依賴性可以使得隨后接收的命令(例如, 寫命令)依賴于在阻擋命令之前接收的命令(例如,讀命令),而 不論實際的地址沖突依賴性如何。因此,在接收到寫命令時,系統(tǒng)
100可以使用預(yù)先計算的依賴性使得該寫命令依賴于讀命令,而不論 與該寫命令關(guān)聯(lián)的地址是否不同于與該讀命令關(guān)聯(lián)的地址(以及與
任何其他先前接收的讀命令關(guān)聯(lián)的地址)。
圖2示出了根據(jù)本發(fā)明實施方式的可被包括在圖1A至圖1B的 系統(tǒng)100中的示例性依賴性矩陣250。參考圖2,該示例性依賴性矩 陣250可以是系統(tǒng)100的讀-寫依賴性矩陣(圖1A至圖1B中的154)。 依賴性矩陣250可被布置為行252和列254。依賴性矩陣250的行 252可以對應(yīng)于可分配給命令流水線邏輯110中的命令的讀標(biāo)簽。例 如,假設(shè)命令流水線邏輯110可以將n個標(biāo)簽分配給讀命令,依賴性矩陣250的第一行256可以對應(yīng)于分配有Read—Tag0的命令,依 賴性矩陣250的第二行258可以對應(yīng)于分配有Read_Tag 1的命令, 等等,使得依賴性矩陣250的第(n-1 )行260可分配有Read—Tag n。
類似地,依賴性矩陣250的列254可以對應(yīng)于可分配給命令流 水線邏輯100中命令的寫標(biāo)簽。例如,依賴性矩陣250的第一列262 可以對應(yīng)于分配有Write—Tag0的命令,依賴性矩陣250的第二列264 可以對應(yīng)于分配有Write—Tag 1的命令,等等,使得依賴性矩陣250 的第(n-1 )列可分配有Write—Tag n。行252可以表示依賴性值,并 且列254可以表示獨立值。通過這種方式,存儲在與分配給命令的 讀標(biāo)簽相對應(yīng)的行中的比特可以指示該命令對(例如 一 個或多個列 上的)分配有寫標(biāo)簽的一個或多個命令的依賴性。例如,第二行258 中的斷言比特(例如,邏輯"1")指示,分配有Read—Tag 1的命令 依賴于分配有Write—Tag n-1的命令。因此,在分配有Write—Tag n-1 的命令發(fā)布到處理器總線114上并完成之前,分配有Read_Tag 1的 命令不能發(fā)布到總線(圖IA至圖IB中的114)上。系統(tǒng)100的剩 余依賴性矩陣(圖IA至圖IB中的164)可以按照類似的方式安排 為行和列。因此,對于寫-讀依賴性矩陣164,行252對應(yīng)于寫標(biāo)簽 并且列254對應(yīng)于讀標(biāo)簽。
圖3示出了根據(jù)本發(fā)明實施方式的可被包括在圖1A至圖IB的 系統(tǒng)100中的依賴性矩陣及其使用的信號。參考圖3,除了讀-寫依 賴性矩陣154和寫-讀依賴性矩陣164之外,假設(shè)系統(tǒng)IOO還包括讀-讀依賴性矩陣300和寫-寫依賴性矩陣302。讀-讀依賴性矩陣300可 以與讀地址沖突列表144、第一依賴性檢查邏輯175以及讀接口 178 耦合。更特別地,類似于寫-讀依賴性矩陣164,讀-讀依賴性矩陣300 可以接收來自讀地址沖突列表144和讀接口 178的輸入。此外,類 似于讀-寫矩陣154,讀-讀依賴性矩陣300可以將數(shù)據(jù)輸出至第一依 賴性檢查邏輯175。寫-寫依賴性矩陣302可以與寫地址沖突列表 138、第二依賴性檢查邏輯190以及寫接口 193耦合。更特別地,類 似于讀-寫依賴性矩陣154,寫-寫依賴性矩陣302接收來自寫地址沖突列表138和寫接口 193的輸入。此外,類似于寫-讀矩陣164,寫-寫依賴性矩陣302可以將數(shù)據(jù)輸出至第二依賴性檢查邏輯190。示出了系統(tǒng)100的依賴性矩陣154、 164、 300、 302的輸入和輸 出信號的細節(jié)。例如,可以通過由寫地址沖突列表138或讀命令控 制邏輯167發(fā)布的、并由讀-寫依賴性矩陣154通過第一選擇邏輯412 接收的讀行設(shè)置命令RdRowSet(O:n),將數(shù)據(jù)存儲到讀-寫依賴性矩陣 154的行252中。通過這種方式,可以更新讀-寫依賴性矩陣154以 包括關(guān)于依賴于寫命令的讀命令的信息(例如,實際或偽地址沖突 依賴性信息),其中讀命令依賴于寫命令是因為它們與相同的地址 關(guān)聯(lián)或它們看起來與相同的地址關(guān)聯(lián)。這種數(shù)據(jù)可以響應(yīng)于查詢而 從讀命令控制邏輯167或?qū)懙刂窙_突列表138處輸出??梢酝ㄟ^由 矩陣154 (例如通過讀命令控制邏輯167)接收的寫列設(shè)置命令 WrColumSet(O:n)在讀-寫矩陣154中更新讀命令對寫命令的依賴性。 例如,假設(shè)系統(tǒng)IOO接收到了要在系統(tǒng)100先前接收的一個或多個 讀命令之前發(fā)布的新的寫命令。命令流水線邏輯IIO可以使用寫列設(shè)置命令將矩陣154所存儲的這種讀命令的依賴性更新為依賴該新 接收的寫命令。可以通過由矩陣154的第二輸入194所輸入的寫列 重置命令WrColumReSet(O:n)在讀-寫矩陣154中更新讀命令對已經(jīng) 完成的寫命令的依賴性。通過這種方式,當(dāng)寫命令完成時,更新對再依賴于此。讀-寫依賴性矩陣154可以通過第一輸出176輸出關(guān)于 一個或多個讀命令對寫命令的依賴性的數(shù)據(jù)dep—clear(O:n)。這種數(shù) 據(jù)被提供給第一依賴性檢查邏輯175,其可以基于該數(shù)據(jù)選擇待發(fā)布 到處理器總線114上的讀命令。類似地,可以通過由寫地址沖突列表138或?qū)懨羁刂七壿?82 發(fā)布的、并由矩陣302通過類似于第一選擇邏輯412的選擇邏輯接 收的寫行設(shè)置命令WrRowSet(O:n),將數(shù)據(jù)存儲到寫-寫依賴性矩陣 302的行252中。通過這種方式,可以更新寫-寫依賴性矩陣302以 包括關(guān)于依賴于寫命令的寫命令的信息(例如,實際或偽地址沖突關(guān)聯(lián)或它們看起來與相同的地址關(guān)聯(lián)。這種數(shù)據(jù)可以響應(yīng)于查詢而從寫命令控制邏輯182或?qū)懙刂窙_突列表138處輸出。可以通過由 依賴性矩陣302 (例如通過寫命令控制邏輯182)接收的寫列設(shè)置命 令WrColumSet(O:n)在寫-寫依賴性矩陣302中更新寫命令對其他寫 命令的依賴性。例如,假設(shè)系統(tǒng)100接收到了要在系統(tǒng)100先前接 收的一個或多個寫命令之前發(fā)布的新的寫命令。命令流水線邏輯110 可以使用寫列設(shè)置命令,以更新矩陣164所存儲的這種先前接收的 寫命令對新接收的寫命令的依賴性??梢酝ㄟ^由寫接口 193輸入至 依賴性矩陣302的寫列重置命令WrColumReSet(O:n)在寫-寫依賴性 矩陣302中更新寫命令對已經(jīng)完成的其他寫命令的依賴性。通過這 種方式,當(dāng)寫命令完成時,更新對該完成寫命令具有依賴性的寫命 令,使得該寫命令不再依賴于此。寫-寫依賴性矩陣302可以將關(guān)于 一個或多個寫命令對其他寫命令的依賴性的數(shù)據(jù)dep—clear(O:n)輸出 至第二依賴性檢查邏輯190,其可以基于該數(shù)據(jù)選擇待發(fā)布到處理器 總線114上的寫命令。類似地,可以通過由讀地址沖突列表144或?qū)懨羁刂七壿?82 發(fā)布的、并由依賴性矩陣164通過第二選擇邏輯413接收的寫行設(shè) 置命令WrRowSet(O:n)將數(shù)據(jù)存儲到寫-讀依賴性矩陣164的行252 中。通過這種方式,可以更新寫-讀依賴性矩陣164以包括關(guān)于依賴 于讀命令的寫命令的信息(例如,實際或偽地址沖突依賴性信息),來與相同的地址關(guān)聯(lián)。這種數(shù)據(jù)可以響應(yīng)于查詢而從寫命令控制邏 輯182或讀地址沖突列表144處輸出??梢酝ㄟ^由依賴性矩陣164 (例如通過寫命令控制邏輯182 )接收的讀列設(shè)置命令 RdColumSet(O:n)在寫-讀矩陣164中更新寫命令對讀命令的依賴性。 例如,假設(shè)系統(tǒng)IOO接收到了要在系統(tǒng)100先前接收的一個或多個 寫命令之前發(fā)布的新的讀命令。命令流水線邏輯110可以使用讀列設(shè)置命令將依賴性矩陣164所存儲的這種寫命令的依賴性更新為依賴于新*接收的讀命令。可以通過由依賴性矩陣164的第三輸入197 所輸入的讀列重置命令RdColumReSet(O:n)在寫-讀依賴性矩陣164 中更新寫命令對已經(jīng)完成的讀命令的依賴性。通過這種方式,當(dāng)讀 命令完成時,更新對該讀命令具有依賴性的寫命令,從而該寫命令 不再依賴于此。寫-讀依賴性矩陣164可以通過第一輸出191輸出關(guān) 于一個或多個寫命令對讀命令的依賴性的數(shù)據(jù)dep一clear(0:n)。這種 數(shù)據(jù)被提供給第二依賴性檢查邏輯190,其可以基于該數(shù)據(jù)選擇待發(fā) 布到處理器總線114上的寫命令。類似地,可以通過由讀地址沖突列表144或讀命令控制邏輯167 發(fā)布的、并由依賴性矩陣300通過類似于第一選擇邏輯412的選擇 邏輯接收的讀行設(shè)置命令RdRowSet(O:n),將數(shù)據(jù)存儲到讀-讀依賴性 矩陣300的行252中。通過這種方式,可以更新讀-讀依賴性矩陣300 以包括關(guān)于依賴于讀命令的讀命令的信息(例如,實際或偽地址沖址關(guān)聯(lián)或它們看起來與相同的地址關(guān)聯(lián)。這種數(shù)據(jù)可以響應(yīng)于查詢 而從讀命令控制邏輯167或讀地址沖突列表144處輸出。可以通過 由依賴性矩陣300 (例如通過讀命令控制邏輯167)接收的讀列設(shè)置 命令RdColumSet(O:n)在讀-讀依賴性矩陣300中更新一個或多個讀命 令對新的讀命令的依賴性。可以通過從矩陣300的讀接口 178處接 收的讀列重置命令RdColumReSet(O:n)在讀-讀依賴性矩陣300中更 新一個或多個讀命令對完成的讀命令的依賴性。通過這種方式,當(dāng) 讀命令完成時,更新對該完成讀命令具有依賴性的讀命令,使得該 讀命令不再依賴于此。讀-讀依賴性矩陣300可以將關(guān)于讀命令依賴 性的數(shù)據(jù)dep—clear(O:n)輸出至第一依賴性檢查邏輯175,其可以基 于該數(shù)據(jù)選擇待發(fā)布到處理器總線114上的讀命令。上述信號是示 例性的,因此,可以使用更多或更少數(shù)目的信號和/或不同的信號。圖4示出了根據(jù)本發(fā)明實施方式的圖1A至圖1B的系統(tǒng)100中 所包括的命令流水線邏輯110的細節(jié)。參考圖4,命令流水線邏輯 110可以接收與地址關(guān)聯(lián)的新1/0命令。包括在分流器邏輯132之中或與之耦合的標(biāo)簽分配邏輯400可以接收新命令。標(biāo)簽分配邏輯400 可以適于將讀標(biāo)簽與標(biāo)簽分配邏輯400所接收的每個讀命令關(guān)聯(lián), 并將寫標(biāo)簽與標(biāo)簽分配邏輯400所接收的每個寫命令關(guān)聯(lián)。命令流水線邏輯110可以包括命令緩沖器402、 404,其分別適 于存儲邏輯110所接收的讀命令和寫命令。如果命令流水線邏輯110 可以將n個讀標(biāo)簽與讀命令相關(guān)聯(lián)并將n個寫標(biāo)簽與寫命令相關(guān)聯(lián), 則命令緩沖器402、 404每個都可以包括n個條目(盡管可以使用更 多或更少的條目)。此外,對于每個命令緩沖器402、 404,命令流 水線邏輯110可以包括與之耦合的命令指針隊列406、 407 (例如, 先進先出(FIFO)隊列)。指針隊列406、 407可以分別維護那些具 有排序要求的命令的命令順序,并管理命令緩沖器列表中的條目。 讀指針隊列406可以通過第 一復(fù)用器408與讀命令緩沖器402耦合, 并且寫指針隊列407可以通過第二復(fù)用器409與寫命令緩沖器404 耦合。將每個新命令和與之關(guān)聯(lián)的標(biāo)簽提供給相應(yīng)的命令緩沖器 402、 404和/或指針隊列406、 407,以便這種命令可以存儲在命令緩 沖器402、 404中。此外,命令流水線邏輯110可以包括命令有效隊 列410、 411,其分別對應(yīng)于讀命令緩沖器和寫命令緩沖器402、 404 以及指針隊列406、 407。第一命令有效隊列401中的條目可以對應(yīng) 于(例如,1: 1對應(yīng))讀命令緩沖器402和第一指針隊列406中的 條目。第一命令有效隊列410的每個條目可以指示讀命令緩沖器402 的相應(yīng)條目所存儲的命令是否有效。類似地,第二命令有效隊列411 中的條目可以對應(yīng)于(例如,1: 1對應(yīng))寫命令緩沖器404和第二 指針隊列407中的條目。第二命令有效隊列411的每個條目可以指 示寫命令緩沖器404的對應(yīng)條目所存儲的命令是否有效。如圖所示,可以將與地址關(guān)聯(lián)的每個新命令和與該命令關(guān)聯(lián)的 標(biāo)簽一起提供給讀地址沖突列表144和寫地址沖突列表138。通過這 種方式,如上文參考圖1A至圖1B所描述的,可以利用新接收的讀 命令和與之關(guān)聯(lián)的地址來更新讀地址沖突列表144,并利用新接收的 寫命令和與之關(guān)聯(lián)的地址來更新寫地址沖突列表138。此外,可以針對與地址和標(biāo)簽關(guān)聯(lián)的每個新命令執(zhí)行讀地址沖突列表查詢和寫地 址沖突列表查詢。從寫地址沖突列表查詢得到的數(shù)據(jù)可以從寫地址沖突列表138輸出并輸入第一選擇邏輯412。類似的,從讀地址沖突 列表查詢得到的數(shù)據(jù)可從讀地址沖突列表144輸出并輸入第二選擇 邏輯413。此外,可以將系統(tǒng)100接收的每個新命令提供給阻擋命令處理 邏輯133。阻擋命令處理邏輯133可以包括第一邏輯414,其適于確 定新命令是否是阻擋命令,其中該阻擋命令可以阻止阻擋命令之后 接收的命令先于阻擋命令之前接收的命令執(zhí)行。如果第一邏輯414 確定新命令是阻擋命令,則阻擋命令處理邏輯133可以設(shè)置(例如, 斷言)讀和/或?qū)懨羁刂七壿?67、 182中的標(biāo)志。通過這種方式, 當(dāng)阻擋指令進入I/0子系統(tǒng)時,可以設(shè)置標(biāo)志,其指示預(yù)先計算的依 賴性可以分別用于接下來的裝載(例如,讀)指令和/或接下來的存 儲(例如,寫)指令。可選地,如果第一邏輯414確定新命令不是 阻擋命令(例如,是讀或?qū)懨?,則阻擋命令處理邏輯133可以 重置(例如,解斷言)讀和/或讀命令控制邏輯167、 182中的標(biāo)志。此外,阻擋命令處理邏輯133可以包括適于預(yù)先計算新命令對 其他命令的依賴性的第二邏輯416。第二邏輯416可以與命令有效隊 列410、 411耦合,并可以基于命令有效隊列410、 411確定命令隊 列402、 404中所存儲的有效的未決功能性存儲器命令。基于該有效 命令,第二邏輯416可以生成一個或多個比特(例如,依賴性向量), 其指示阻擋命令之后接收的新的功能性存儲器命令對阻擋命令之前 接收的一個或多個有效的功能性存儲器命令(例如,獨立命令)的 依賴性。依賴性向量中的比特位置和獨立命令的命令隊列402、 404 中的位置存在l: 1映射。這種比特可以類似于依賴性矩陣154、 164 的行中所存儲的比特。第二邏輯146可以耦合至或包括一個或多個 配置寄存器418或類似的存儲設(shè)備。例如,寄存器418可以存儲這 樣的值,其指示第二邏輯416是否預(yù)先計算了接收的命令對一個或 多個其他接收的命令的依賴性,并且如果是,第二邏輯416是否預(yù)先計算了接收的命令僅對與該接收的命令類型相同的命令的依賴 性、僅對與該接收命令類型不同的命令的依賴性、或?qū)εc接收的命令類型相同或不同的命令的依賴性。通過這種方式,配置寄存器418 可以使得系統(tǒng)100基于全讀、全寫、或全讀-寫依賴性而預(yù)先計算新 命令的依賴性。例如,寄存器418可以存儲這樣的值,其指示第二 邏輯416可以預(yù)先計算所接收的讀命令對寫命令的依賴性以及所接 收的寫命令對讀命令的依賴性。讀命令控制邏輯167、寫命令控制邏輯182和阻擋命令處理邏輯 133以及寫和讀地址沖突列表138、 144可以與第一和/或第二選擇邏 輯412、 413耦合。第一選擇邏輯412可以包括適于選擇性輸出數(shù)據(jù) 的復(fù)用器420或類似設(shè)備。更特別地,寫地址沖突列表138的第一 輸出150可以與第一選擇邏輯412的第一輸入422耦合。此外,第 二邏輯416的第 一輸出424可以與第 一選擇邏輯412的第二輸入426 耦合。寫命令控制邏輯182的輸出428可以與復(fù)用器420的第三輸 入430 (例如,控制輸入)耦合,其中復(fù)用器420適于使第一選擇邏 輯412通過其輸出432選擇性地輸出由第一選擇邏輯412的第一或 第二輸入422、 426所輸入的數(shù)據(jù)。第一選擇邏輯412的輸出432可 以與讀-寫依賴性矩陣154的輸入433耦合。例如,在操作過程中, 第一選擇邏輯412可以輸入從寫地址沖突列表138向第一選擇邏輯 412輸出的數(shù)據(jù),該數(shù)據(jù)指示新接收的讀命令所依賴的寫命令。此外, 第一選擇邏輯412可以輸入從第二邏輯416輸出的偽依賴性數(shù)據(jù)。 偽依賴性數(shù)據(jù)可以指示,新接收的功能性存儲器命令可以依賴于先 前接收的功能性存儲器命令。而且,可以通過第三輸入430將控制 信號輸入第一選擇邏輯412,該控制信號指示在新命令之前接收的命 令是否是阻擋命令?;谶@種控制信號,第一選擇邏輯412可以輸 出從寫地址沖突列表318處接收的實際地址沖突數(shù)據(jù)或是從第二邏 輯416處接收的偽依賴性數(shù)據(jù)。例如,如果在新命令之前接收的命 令不是阻擋命令,則第一選擇邏輯412可以從其輸出實際地址沖突 數(shù)據(jù)??蛇x地,如果在新命令之前接收的命令是阻擋命令,則第一選擇邏輯412可以從其輸出偽依賴性數(shù)據(jù)。從第一選擇邏輯412處輸出的數(shù)據(jù)可以輸入讀-寫依賴性矩陣 154并可以用作該讀-寫依賴性矩陣154的行,該數(shù)據(jù)指示由地址沖 突所引致的新接收的讀命令對一個或多個寫命令的依賴性。因此, 如果偽依賴性數(shù)據(jù)輸入讀-寫依賴性矩陣154,這種數(shù)據(jù)可以用于指 示阻擋命令之后接收的新的讀命令和該讀命令之前接收的寫命令之 間的偽地址沖突。因此,該新的讀命令不能發(fā)布到總線上并執(zhí)行, 直到將該寫命令發(fā)布到總線上并執(zhí)行為止。類似地,第二選擇邏輯413可以包括適于選擇性輸出數(shù)據(jù)的復(fù) 用器434或類似設(shè)備。更特別地,讀地址沖突列表144的第一輸出 160可以與第二選擇邏輯413的第一輸入436耦合。此外,第二邏輯 416的第二輸出438可以與第二選4奪邏輯413的第二輸入440耦合。 讀命令控制邏輯167的輸出442可以與復(fù)用器434的第三輸入444 (例如,控制輸入)耦合,其中復(fù)用器434適于使第二選擇邏輯413 通過其輸出446選擇性地輸出由第二選擇邏輯413的第一或第二輸 入436、 440輸入的數(shù)據(jù)。第二選擇邏輯413的輸出446可以與寫-讀依賴性矩陣164的輸入448耦合。例如,在操作期間,第二選擇邏輯413可以輸入從讀地址沖突 列表144向第二選擇邏輯413輸出的數(shù)據(jù),該數(shù)據(jù)指示新接收的寫 命令所依賴的讀命令。此外,第二選擇邏輯413可以輸入從第二邏 輯416的第二輸出438輸出的偽依賴性數(shù)據(jù)。偽依賴性數(shù)據(jù)指示, 新接收的功能性存儲器命令可以依賴于先前接收的功能性存儲器命 令。而且,第二選擇邏輯413可以通過第三輸入444輸入控制信號, 該控制信號指示在新命令之前接收的命令是否是阻擋命令?;谶@ 種控制信號,第二選擇邏輯413可以輸出從讀地址沖突列表144接 收的實際地址沖突數(shù)據(jù)或偽依賴性數(shù)據(jù)。例如,如果新命令之前接 收的命令不是阻擋命令,則第二選擇邏輯413可以從其輸出實際地 址沖突數(shù)據(jù)。通過這種方式,,可以將與如上文參考圖1A至圖1B 描述的接收的命令相對應(yīng)的真實或偽地址沖突數(shù)據(jù)填入依賴性矩陣154、 164??蛇x地,如果新命令之前接收的命令是阻擋命令,則第 二選擇邏輯413可以從其輸出偽依賴性數(shù)據(jù)。從第二選擇邏輯413處輸出的數(shù)據(jù)可以輸入寫-讀依賴性矩陣 164并作為它的行,該數(shù)據(jù)指示了由地址沖突所引致的新接收的寫命 令對一個或多個讀命令的依賴性。因此,如果偽依賴性數(shù)據(jù)輸入寫-讀依賴性矩陣164,這種數(shù)據(jù)可以用于指示阻擋命令之后接收的新的 寫命令和該寫命令之前接收的讀命令之間的偽地址沖突。因此,該新的寫命令不能發(fā)布到總線上并執(zhí)行,直到將該讀命令發(fā)布到總線 上并寺丸行為止。此外,依賴性矩陣154、 164可以與命令選擇邏輯450耦合,命 令選擇邏輯450的一個或多個部分可以被包括在依賴性檢查邏輯 175、 190之中并/或與之耦合。命令選擇邏輯450可以接收關(guān)于讀命 令對寫命令和/或其他讀命令的依賴性(例如,實際或偽地址沖突依賴性)的數(shù)據(jù)。此外,命令選擇邏輯450可以接收關(guān)于寫命令對讀 命令和/或其他寫命令的依賴性的數(shù)據(jù)。而且,命令選擇邏輯450可 以從命令有效隊列410、 411中一個或多個接收關(guān)于功能性存儲器命 令的有效性的數(shù)據(jù)。命令選擇邏輯450的第一輸出452可以與第一 復(fù)用器408耦合,并且命令選擇邏輯450的第二輸出454可以與第 二復(fù)用器409耦合?;谖礇Q功能性命令的依賴性和有效性,命令 選擇邏輯450可以輸出一個信號,該信號用作第一或第二復(fù)用器 408、 409的控制信號,該信號確定來自指針隊列406、 407的指針 456可以從復(fù)用器408、 409處通過復(fù)用器408、 409的輸出458、 460 輸出。從復(fù)用器408、409處輸出的指針456可以用作命令緩沖器402、 404的頭指針,其標(biāo)識接下來將從命令緩沖器402、 404輸出到總線 (圖1A至圖1B中的114)上的讀或?qū)懨?。通過這種方式,控制 信號可用來在每次命令被發(fā)出到總線114上時移動指針?,F(xiàn)在參考圖1 -4描述用于將命令發(fā)布到處理器總線114上的系統(tǒng) 100的示例性操作。第一處理器102可以接收來自第二處理器104 的一個或多個命令(例如,1/0命令)。每個命令可以由1/0控制器108接收并存儲在命令隊列112中。命令可以從命令隊列112提供給 分流器邏輯132。如果新命令是讀命令,分流器邏輯132可以將該命 令引至讀命令隊列172。可選地,如果新命令是寫命令,分流器邏輯 132可以將該命令引至寫命令隊列187。分流器邏輯132可以基于標(biāo) 簽的可用性為新命令分配標(biāo)簽。分流器邏輯132可以使用以0為最 高的數(shù)字優(yōu)先級來向命令分配標(biāo)簽。例如,假設(shè)新命令是讀命令并 且命令流水線邏輯IIO使用16個讀標(biāo)簽Read—Tag 0到Read—Tag 15。 如果4吏用了 Read—Tag 0和Read—Tag 1并且剩余的讀標(biāo)簽是自由的, 分流器邏輯132可以將Read_Tag 2分配給新的讀命令。然而,分流 器邏輯132可以以不同的方式分配標(biāo)簽。命令流水線邏輯110可以確定新命令是否與一個或多個先前接 收的命令以相同的地址為目標(biāo),并因而依賴于先前接收的命令。例 如,可以使用與新命令關(guān)聯(lián)的地址來索引地址沖突列表138、 144中 的一個或多個。作為響應(yīng),讀和/或?qū)懙刂窙_突列表138、 144可以專命 出指示與新命令具有相同目標(biāo)地址的先前接收的命令的數(shù)據(jù)(例如,實際地址沖突依賴性數(shù)據(jù))。命令流水線邏輯110可以使用任意的 字節(jié)邊界用于與命令關(guān)聯(lián)的地址(盡管可以使用全地址)。例如, 可以使用256字節(jié)邊界以用于這種地址。因此,可以基于256字節(jié) 的邊界來索引地址沖突列表138、 144。此外,命令流水線邏輯110可以使用阻擋命令處理邏輯133的 第二邏輯416來預(yù)先計算新的功能性存儲器命令對先前的讀和/或?qū)?命令的依賴性。當(dāng)新的功能性存儲器命令與其預(yù)先計算的依賴性相 關(guān)聯(lián)時,可以將該預(yù)先計算的依賴性與有效的同時執(zhí)行命令進行比 較,以確保該命令不依賴于無效指令。如果新命令不是屬于阻擋命令類型的第一個命令,則可以將與 該新命令有關(guān)的實際地址沖突依賴性數(shù)據(jù)作為條目存儲在依賴性矩 陣154、 164的一個或多個中??蛇x地,如果新命令是屬于阻擋命令 類型的第一個命令,則與該新命令關(guān)聯(lián)的、可作為偽地址沖突依賴 性數(shù)據(jù)的預(yù)先計算的依賴性數(shù)據(jù)可以作為條目存儲在依賴性矩陣154、 164的一個或多個中。更特別地,新命令之前接收的阻擋命令 可以使得讀和寫命令控制邏輯167、 182中的標(biāo)志被設(shè)置。此后,可 以從命令執(zhí)行列表中去除阻擋命令,并且因此阻擋命令將不被保存 在命令隊列172、 187中,由此節(jié)省了命令隊列172、 187中的空間。 設(shè)置阻擋標(biāo)志將使相應(yīng)的選擇邏輯412、 413將預(yù)先計算的依賴性數(shù) 據(jù)輸出至相應(yīng)的依賴性矩陣154、 164。例如,與新的讀命令相關(guān)的地址沖突依賴性數(shù)據(jù)或預(yù)先計算的 依賴性數(shù)據(jù)可以存儲在至少讀-寫依賴性矩陣154中。類似地,如果 新命令是寫命令,與該新的寫命令相關(guān)的地址沖突依賴性數(shù)據(jù)或預(yù) 先計算的依賴性數(shù)據(jù)可以存儲在至少寫-讀依賴性矩陣164中。如上 所述,如果在新命令之前(例如,先于新命令)接收到了阻擋命令, 則可以使用預(yù)先計算的依賴性數(shù)據(jù)。否則,可以使用實際地址沖突;故置在依賴性矩陣154、 164的一個或多個的4亍252中。作l/沒新的讀 命令分配有Read一Tag 2,則與該新的讀命令相關(guān)的地址沖突依賴性 數(shù)據(jù)或預(yù)先計算的依賴性數(shù)據(jù)可以存儲在至少讀-寫依賴性矩陣154 的第三行中。新這種列表138、 144。例如,可以將新的讀命令提供給讀地址沖突 列表144,使得對應(yīng)于該新的讀命令的條目被添加至列表144。該條 目可以包括該讀指令以及與之關(guān)聯(lián)的地址,并可以通過所分配的標(biāo) 簽被索引。如果新命令是寫命令,則可以類似的方式更新寫沖突依 賴性列表138。可以通過相應(yīng)的命令控制邏輯167、 182將新命令從分流器邏輯 132傳送至相關(guān)聯(lián)的隊列。例如,新的讀命令可以通過讀命令控制邏 輯167從分流器邏輯132傳送至讀命令隊列172。命令流水線邏輯 110可以繼續(xù)接收新的命令并以類似的方式填充命令隊列172、 187。依賴性檢查邏輯175、 l卯可以接收存儲在依賴性矩陣154、 164 中的、與命令相關(guān)的地址沖突依賴性數(shù)據(jù)(例如,實際和偽地址沖突依賴性數(shù)據(jù)),并確定這種地址沖突依賴性是否已經(jīng)消除。當(dāng)存儲在隊列172、 187中的命令的所有地址沖突依賴性消除時,該命令 可以通過與其關(guān)聯(lián)的接口 178、 193發(fā)布到處理器總線114上??梢?使用命令選擇邏輯450從指針隊列406、 407中選擇指針456,指針 456用作命令緩沖器402、 404的頭指針,其中命令是從命令緩沖器 402、 404中選擇而發(fā)布到處理器總線114上的。可以基于新命令的 地址沖突依賴性以及命令緩沖器402、 404的一個或多個中的命令的 有效性來選擇指針456。例如,命令流水線邏輯IIO可以在依賴性消 除時從這種隊列172、 187中以FIFO順序發(fā)布命令。通過這種方式,例如,命令流水線邏輯110可以接收寫命令。 可以使用與該寫命令關(guān)聯(lián)的地址來更新寫地址沖突列表138。此外, 可以使用這種地址來執(zhí)行讀地址沖突列表查詢,以確定該寫命令對 先前接收的讀命令是否具有地址沖突依賴性(例如,實際地址沖突 依賴性數(shù)據(jù))。而且,阻擋命令處理邏輯133可以預(yù)先計算該新的 寫命令對一個或多個先前接收的功能性存儲器命令的依賴性。假設(shè)阻擋命令沒有先于該寫命令,則不設(shè)置讀和寫命令控制邏輯167、 182 中的阻擋標(biāo)記。因此,第二選擇邏輯413可以將實際地址沖突依賴 性數(shù)據(jù)存儲在寫-讀依賴性矩陣164中。此外,可以通過寫命令控制 邏輯182將寫命令存儲在寫命令隊列187、 404中。當(dāng)命令選擇邏輯 450確定該寫命令有效并且不依賴于任何其他命令時,命令選擇邏輯 450可以將該寫命令從隊列404的頂部發(fā)布到總線114上。此外,假設(shè)命令流水線邏輯110在先前接收的寫命令未決的同 時接收到阻擋命令。如上所述,阻擋命令可以促使該阻擋命令之前 的命令和該阻擋命令之后的命令按序執(zhí)行。阻擋命令處理邏輯133可以接收阻擋命令并設(shè)置讀和寫命令控制邏輯167、 182中的阻擋標(biāo) 志。此后,可以將阻擋命令從執(zhí)行列表中去除。此外,假設(shè)命令流水線邏輯110在該阻擋命令之后接收到讀命 令。該讀命令要求訪問的地址不同于阻擋命令之前的寫命令所要求 訪問的地址??梢?<吏用與該讀命令關(guān)聯(lián)的地址來更新讀地址沖突列表144。此外,可以使用這種地址來執(zhí)行寫地址沖突列表查詢,以確 定該讀命令對先前接收的寫命令是否具有地址沖突依賴性(例如, 實際地址沖突依賴性數(shù)據(jù))。而且,阻擋命令處理邏輯133可以預(yù) 先計算該新的讀命令對一個或多個先前接收的功能性存儲器命令 (例如,先于阻擋命令的寫命令)的依賴性。預(yù)先計算的依賴性數(shù) 據(jù)可以指示,該新的讀命令至少依賴于先于阻擋命令的寫命令。由 于設(shè)置了阻擋標(biāo)志,因此第一選擇邏輯412可以使得與該讀命令相 關(guān)的預(yù)先計算的依賴性數(shù)據(jù)存儲在讀-寫依賴性矩陣154中。這種預(yù) 先計算的依賴性數(shù)據(jù)可以用作與該讀命令相關(guān)的偽地址沖突。通過 這種方式,當(dāng)讀和/或?qū)懼噶钤谧钃趺钪蟮竭_時,可以選擇將預(yù) 先計算的依賴性而不是從地址沖突依賴性列表138、 144處輸出的實 際地址沖突依賴性存儲到依賴性矩陣154、 164的一個或多個中。此 外,阻擋命令處理邏輯133可以重置讀和寫命令控制邏輯167、 182 中的阻擋標(biāo)志??梢酝ㄟ^讀命令控制邏輯167將讀命令存儲到讀命令隊列402 中。每個命令都不能被發(fā)布到總線114上,直到所有未消除的依賴 性都被消除。因此,當(dāng)命令選擇邏輯450確定讀命令有效并且不依 賴于任何其他命令時,命令選擇邏輯450可以將讀命令從隊列402 的頂部發(fā)布到總線114上。然而,因為該讀命令依賴于寫命令,寫 命令將在讀命令之前被發(fā)布到總線114上并執(zhí)行。當(dāng)導(dǎo)致依賴性的 獨立命令完成時(例如,在通過其各自的接口 178、 193被發(fā)布到處 理器總線114上之后完成),可以通過列重置命令消除一個或多個 地址沖突依賴性。例如,當(dāng)寫命令完成時,第二依賴性檢查邏輯190 可以更新至少存儲在讀-寫依賴性矩陣154中的、與讀命令相關(guān)的地 址沖突依賴性數(shù)據(jù),使得該讀命令不再依賴于那個寫命令。此后, 命令選擇邏輯450可以確定該讀命令有效并且不依賴于任何其他命 令。因此,命令選擇邏輯450可以將該讀命令發(fā)布到總線114上。節(jié)。然而,系統(tǒng)100可以按照類似的方式處理不同的命令序列。例如,系統(tǒng)IOO可以處理寫命令之后是阻擋命令再隨后是其他寫命令、讀命令之后是阻擋命令再隨后是寫命令、讀命令之后是阻擋命令再 隨后是其他讀命令、和/或讀和/或?qū)懨畹娜魏纹渌蛄?。在一些?施方式中,在接收到跟隨有阻擋命令的新命令之后,命令流水線邏輯110可以促使阻擋命令之后接收的第一個讀命令和第一個寫命令在新命令完成之后執(zhí)行。通過使用本方法和裝置,阻擋命令連同命令的地址沖突依賴性可以用以使處理器總線114上命令的發(fā)布適合系統(tǒng)100的需要。更 特別地,本方法和裝置可以通過使用已經(jīng)代替命令排序的地址沖突 列表154、 164、 300、 302在1/0子系統(tǒng)上實現(xiàn)阻擋指令,并且預(yù)先 計算阻擋指令之后接收的 一個或多個裝載/存儲操作的依賴性。更特 別地,使用記分板功能以及用于設(shè)置地址沖突依賴性的行設(shè)置功能 和用于清除地址沖突依賴性的列清除功能,依賴性矩陣154、 164、 300、 302通??梢杂糜诟櫼蕾嚨暮酮毩⒌难b載/存儲指令。本方法 和裝置可以使用相同的機制來促使用于阻擋指令之后的 一個或多個 命令的偽地址沖突依賴性。預(yù)先計算的依賴性可以消除將阻擋指令 存儲在命令隊列172、 187中的需要,從而降低額外的排隊效應(yīng)(例 如,隊列172、 187變滿的機會)并改善命令隊列的使用。更特別地, 可以創(chuàng)建阻擋命令之后接收的一個或多個命令對阻擋命令之前的命 令的偽地址沖突依賴性??梢曰谂c待發(fā)布到處理器總線114上的命令關(guān)聯(lián)的實際和/或 偽地址沖突依賴性來使該命令停滯。命令流水線邏輯110可以有效 地促使阻擋命令之前的命令和阻擋命令之后接收的一個或多個命令 按序執(zhí)行。更特別地,命令流水線邏輯110不消耗讀和/或?qū)懨铌?列172、 187中的條目來存儲阻擋命令。此外,命令流水線邏輯110 不使用復(fù)雜的指針操控來促使這種按序執(zhí)行,并因此不需要實現(xiàn)這 種指針操控的邏輯,這降低了命令流水線邏輯110在第一處理器102 上所消耗的空間。因此,類似于傳統(tǒng)I/0處理器,本發(fā)明提供I/O處理器102,其可以通過I/0接口從其他處理器(例如,CPU)接收讀、寫、確保1/0 按序執(zhí)行(EIEIO)和/或類似命令。1/0處理器102可以緩沖命令并 控制命令到達處理器總線114上,命令可以通過該處理器總線114 被傳遞至適當(dāng)?shù)脑O(shè)備(例如,PCI-Express接口卡或DDR2存儲器控處理器可以將接收的命令分離為獨立的讀流和寫流。因為以這種方 式分離了命令,所以應(yīng)該在流之間維護命令順序。依賴于所涉及的 接口和命令目標(biāo)地址,排序規(guī)則可以從嚴(yán)格到寬松的范圍。嚴(yán)格的排序規(guī)定,讀和寫命令必須按照它們從CPU發(fā)布的相同順序完成。 寬松的排序規(guī)定,如果讀和寫命令沒有以相同的地址空間為目標(biāo), 則它們可以相互超越。然而,可以釆用其他的排序規(guī)則。排序規(guī)則 和命令一起從CPU處作為命令流被傳遞。使用針對每個流的依賴性 矩陣以及用以計算依賴性的地址查詢列表來維護讀流和寫流之間的 排序。當(dāng)讀和寫命令達到其各自隊列的頂部時,執(zhí)行依賴性檢查以 確定是否存在任何未消除的依賴性。如果存在依賴性,則該命令及 其各個隊列被停滯,直到該依賴性消除為止。與傳統(tǒng)I/O處理器不同,本方法和裝置可以通過使用針對阻擋指 令之后接收的裝載/存儲指令的偽地址沖突依賴性來實現(xiàn)阻擋指令。 例如,本方法和裝置可以創(chuàng)建阻擋命令之后接收的一個或多個命令 對阻擋命令之前的命令的偽地址沖突依賴性?;趯嶋H和偽地址沖 突依賴性,本方法和裝置可以提供調(diào)度待發(fā)布到總線上的命令的可 定制的且有效的方法。軟件開發(fā)者可以使用阻擋或柵欄指令利用從嚴(yán)格到寬松的排序 規(guī)則促使發(fā)送給I/O子系統(tǒng)的、通常可以操作在亂序執(zhí)行模式下的裝 載和存儲命令按序執(zhí)行。通常,在執(zhí)行線程之內(nèi)運行的代碼可以操作在亂序執(zhí)行模式下,其不會受到重排序效果的影響,甚至不會注 意到重新排序效果。然而,當(dāng)多個執(zhí)行線程(例如,并發(fā)程序)運 行時,重新排序的效果將是不可預(yù)測的,因此阻擋指令可以有助于 維護以相同地址空間為目標(biāo)的線程之間的順序。在傳統(tǒng)系統(tǒng)中,在I/O子系統(tǒng)中實現(xiàn)阻擋指令可能消耗 一 個或多個命令隊列條目或需 要系統(tǒng)在命令隊列中包括額外的空間以存儲阻擋指令,和/或可能需 要系統(tǒng)執(zhí)行復(fù)雜的指針操控以保持跟蹤阻擋指令之前和之后的命 令,并需要系統(tǒng)包括控制邏輯以執(zhí)行這種指針操控。本方法和裝置 可以在不消耗隊列條目來存儲阻擋指令、不要求系統(tǒng)在命令隊列中 包括額外的空間以存儲阻擋指令、和/或不執(zhí)行復(fù)雜指針操控的情況 下實現(xiàn)阻擋指令。上述描述僅公開了本發(fā)明的示例性實施方式。屬于本發(fā)明范圍 之內(nèi)的對上面所公開的裝置和方法的修改對于本領(lǐng)域普通技術(shù)人員 將將是顯而易見的。例如,盡管命令流水線邏輯110包括讀-寫依賴性矩陣154和寫-讀依賴性矩陣164,在一些實施方式中,命令流水線邏輯110可以包括更多依賴性矩陣。例如,命令流水線邏輯110還可以包括讀-讀依賴性矩陣300和寫-寫依賴性矩陣302。因此,在一些實施方式中,本方法和裝置存儲讀和/或?qū)懨顚Ξ?dāng)前同時執(zhí)行 的讀和寫命令兩者的依賴性。相應(yīng)地,盡管結(jié)合本發(fā)明的示例性實施方式描述了本發(fā)明,應(yīng) 當(dāng)理解,其他實施方式也可以屬于所附權(quán)利要求書限定的本發(fā)明的 精神和范圍之內(nèi)。
權(quán)利要求
1.一種將命令發(fā)布到系統(tǒng)的總線上的方法,包括接收所述系統(tǒng)中的第一功能性存儲器命令;接收促使所述系統(tǒng)按序執(zhí)行功能性存儲器命令的命令;接收所述系統(tǒng)中的第二功能性存儲器命令;以及使用依賴性矩陣指示所述第二功能性存儲器命令需要訪問與所述第一功能性存儲器命令相同的地址,而不論所述第二功能性存儲器命令實際上是否對所述第一功能性存儲器命令具有排序依賴性;其中,所述依賴性矩陣適于存儲指示先前的命令對在先的命令的依賴性的數(shù)據(jù)。
2. 根據(jù)權(quán)利要求1所述的方法,還包括響應(yīng)于接收到促使所述系統(tǒng)按序執(zhí)行功能性存儲器命令的阻擋 命令,設(shè)置按序執(zhí)行標(biāo)志;以及生成偽地址沖突依賴性數(shù)據(jù),其指示所述第二功能性存儲器命令 依賴于所述第一功能性存儲器命令;其中,使用所述依賴性矩陣來指示所述第二功能性存儲器命令依 賴于所述第 一 功能性存儲器命令的完成包括將所述偽地址沖突依賴 性數(shù)據(jù)存儲在所述依賴性矩陣中。
3. 根據(jù)權(quán)利要求2所述的方法,還包括將所述第一功能性存儲器命令存儲在所述系統(tǒng)的第 一隊列中; 在設(shè)置所述按序執(zhí)行標(biāo)志之后,去除促使所述系統(tǒng)按序執(zhí)行功能 性存儲器命令的命令;以及將所述第二功能性存儲器命令存儲在所述第一或第二隊列中。
4. 根據(jù)權(quán)利要求1所述的方法,還包括,在所述第一功能性存 儲器命令執(zhí)行之后將所述第二功能性存儲器命令發(fā)布到所述總線 上。
5. 根據(jù)權(quán)利要求4所述的方法,還包括,在所述第一功能性存述第二功能性存儲器命令對所述第一功能性存儲器命令不再具有排 序依賴性。
6. 根據(jù)權(quán)利要求1所述的方^,其中,所述第一和第二功能性 存儲器命令是相同類型的命令,所述第一功能性存儲器命令是第一 類型的命令且所述第二功能性存儲器命令是第二類型的命令,或者 所述第一功能性存儲器命令屬于所述第一類型且所述第二功能性存 儲器命令屬于所述第一或第二類型。
7. 根據(jù)權(quán)利要求1所述的方法,還包括,通過使用所述依賴性 矩陣促使所述第 一 和第二功能性存儲器命令按序執(zhí)行來降低所述系 統(tǒng)中包括的邏輯數(shù)量。
8. —種用于發(fā)布命令的裝置,包括 總線;以及與所述總線耦合并且包括依賴性矩陣的命令流水線邏輯,所述依 賴性矩陣適于存儲指示所述命令流水線邏輯接收的功能性存儲器命 令是否對所述命令流水線邏輯先前接收的 一個或多個功能性存儲器 命令具有排序依賴性的數(shù)據(jù);其中,所述命令流水線邏輯適于 接收第 一功能性存儲器命令;接收促使所述命令流水線邏輯按序執(zhí)行功能性存儲器命令 的命令;接收第二功能性存儲器命令;以及使用所述依賴性矩陣指示所述第二功能性存儲器命令對所 述第一功能性存儲器命令具有排序依賴性,而不論所述第二功 能性存儲器命令實際上是否對所述第一功能性存儲器命令具 有排序依賴性。
9. 根據(jù)權(quán)利要求8所述的方法,其中,所述命令流水線邏輯還 適于響應(yīng)于接收到促使所述命令流水線邏輯按序執(zhí)行功能性存儲器 命令的命令,設(shè)置按序執(zhí)行標(biāo)志;生成偽地址沖突依賴性數(shù)據(jù),其指示所述第二功能性存儲器命令對所述第 一功能性存儲器命令具有排序依賴性;以及將所述偽地址沖突依賴性數(shù)據(jù)存儲在所述依賴性矩陣中。
10. 根據(jù)權(quán)利要求9所述的裝置,其中,所述命令流水線邏輯還 適于將所述第一功能性存儲器命令存儲在所述命令流水線邏輯的第 一隊列中;在設(shè)置所述按序執(zhí)行標(biāo)志之后,去除促使所述命令流水線邏輯按 序執(zhí)行功能性存儲器命令的命令;以及將所述第二功能性存儲器命令存儲在所述第一或第二隊列中。
11. 根據(jù)權(quán)利要求8所述的裝置,其中,所述命令流水線邏輯還 適于在所述第一功能性存儲器命令執(zhí)行之后將所述第二功能性存儲 器命令發(fā)布到所述總線上。
12. 根據(jù)權(quán)利要求11所述的裝置,其中,所述命令流水線邏輯 還適于在所述第一功能性存儲器命令執(zhí)行之后更新存儲在所述依賴 性矩陣中的數(shù)據(jù),以指示所述第二功能性存儲器命令對所述第 一 功 能性存儲器命令不再具有排序依賴性。
13. 根據(jù)權(quán)利要求8所述的裝置,其中,所述第一和第二功能性 存儲器命令是相同類型的命令,所述第 一功能性存儲器命令是第一 類型的命令且所述第二功能性存儲器命令是第二類型的命令,或者所述第一功能性存儲器命令屬于所述第一類型且所述第二功能性存 儲器命令屬于所述第一或第二類型。
14. 根據(jù)權(quán)利要求8所述的裝置,其中,所述命令流水線邏輯還 適于通過使用所述依賴性矩陣促使所述第一和第二功能性存儲器命 令按序執(zhí)行來減少其中包括的邏輯數(shù)量。
15. —種發(fā)布命令的系統(tǒng),包括 第一處理器;以及第二處理器,其與所述第一處理器耦合并適于與所述第一處理器 通信;其中,所述第 一處理器包括用于發(fā)布命令的裝置,所述裝置包括 總線;以及與所述總線耦合并且包括依賴性矩陣的命令流水線邏輯,所 述依賴性矩陣適于存儲指示所述命令流水線邏輯接收的功能性 存儲器命令是否對所述命令流水線邏輯先前接收的一個或多個 功能性存儲器命令具有排序依賴性的數(shù)據(jù); 其中,所述裝置適于 接收所述系統(tǒng)中的第 一功能性存儲器命令; 接收促使所述系統(tǒng)按序執(zhí)行功能性存儲器命令的命令; 接收所述系統(tǒng)中的第二功能性存儲器命令;以及 使用所述依賴性矩陣指示所述第二功能性存儲器命令需要 訪問與所述第 一功能性存儲器命令相同的地址,而不論所述第 二功能性存儲器命令實際上是否對所述第一功能性存儲器命 令具有排序依賴性。
16. 根據(jù)權(quán)利要求15所述的系統(tǒng),其中,所述裝置還適于響應(yīng)于接收到促使所述系統(tǒng)按序執(zhí)行功能性存儲器命令的命 令,,沒置4姿序扭J于標(biāo)志;生成偽地址沖突依賴性數(shù)據(jù),其指示所述第二功能性存儲器命令 對所述第一功能性存儲器命令具有排序依賴性;以及將所述偽地址沖突依賴性數(shù)據(jù)存儲在所述依賴性矩陣中。
17. 根據(jù)權(quán)利要求16所述的系統(tǒng),其中,所述裝置還適于 將所述第 一功能性存儲器命令存儲在所述系統(tǒng)的第 一隊列中; 在設(shè)置所述按序執(zhí)行標(biāo)志之后,去除促使所述系統(tǒng)按序執(zhí)行功能性存儲器命令的命令;以及將所述第二功能性存儲器命令存儲在所述第一或第二隊列中。
18. 根據(jù)權(quán)利要求15所述的系統(tǒng),其中,所述裝置還適于在所 述第一功能性存儲器命令執(zhí)行之后將所述第二功能性存儲器命令發(fā) 布到所述總線上。
19. 根據(jù)權(quán)利要求18所述的系統(tǒng),其中,所述裝置還適于在所數(shù)據(jù),以指示所述第二功能性存儲器命令對所述第一功能性存儲器 命令不再具有排序依賴性。
20. 根據(jù)權(quán)利要求15所述的系統(tǒng),其中,所述第一和第二功能 性存儲器命令是相同類型的命令,所述第 一功能性存儲器命令是第 一類型的命令且所述第二功能性存儲器命令是第二類型的命令,或 者所述第一功能性存儲器命令屬于所述第一類型且所述第二功能性 存儲器命令屬于所述第一或第二類型。
21. 根據(jù)權(quán)利要求15所述的系統(tǒng),其中,所述裝置還適于通過 使用所述依賴性矩陣促使所述第 一和第二功能性存儲器命令按序執(zhí) 行來減少所述系統(tǒng)中包括的邏輯數(shù)量。
全文摘要
本發(fā)明公開了用于將命令發(fā)布到總線上的方法、裝置和系統(tǒng)。在第一方面,提供了將命令發(fā)布到系統(tǒng)的總線上的第一方法。該第一方法包括以下步驟(1)接收系統(tǒng)中的第一功能性存儲器命令;(2)接收促使系統(tǒng)按序執(zhí)行功能性存儲器命令的命令;(3)接收系統(tǒng)中的第二功能性存儲器命令;以及(4)使用依賴性矩陣指示第二功能性存儲器命令需要訪問與第一功能性存儲器命令相同的地址,而不論第二功能性存儲器命令實際上是否對第一功能性存儲器命令具有排序依賴性。依賴性矩陣適于存儲指示系統(tǒng)接收的功能性存儲器命令是否對系統(tǒng)先前接收的一個或多個功能性存儲器命令具有排序依賴的數(shù)據(jù)。還提供了多個其他方面。
文檔編號G06F9/38GK101241428SQ200810004809
公開日2008年8月13日 申請日期2008年2月2日 優(yōu)先權(quán)日2007年2月5日
發(fā)明者C·B·麥克布賴德, J·D·艾里什 申請人:國際商業(yè)機器公司