專利名稱:用于包化總線的組合包的制作方法
背景技術(shù):
本發(fā)明一般地涉及總線上的通信,更具體地說,本發(fā)明涉及用于總線傳送的組合包,該總線采用包化協(xié)議。
當(dāng)代個人計算機系統(tǒng)通常包括多個不同的設(shè)備,包括處理器,存儲器,采用磁媒體或光媒體的數(shù)據(jù)存儲設(shè)備,諸如鍵盤和鼠標(biāo)的用戶輸入設(shè)備,諸如監(jiān)視器和打印機的輸出設(shè)備,圖形加速器等。所有這些設(shè)備通過在系統(tǒng)主板上實現(xiàn)的各種總線彼此進行通信。已知大量的總線協(xié)議,包括PCI(外圍組件互連),PCI-E(PCI快速),AGP(圖形加速處理),超級傳送技術(shù)等。每種總線協(xié)議制定連接的物理的和電氣的屬性,以及用于通過總線進行信息傳送的格式。在許多情況下,個人計算機系統(tǒng)的總線是分段的,有的時候不同的分段采用不同的總線協(xié)議,并且系統(tǒng)包括互連這些不同的分段的橋芯片。
通常,利用總線去交換系統(tǒng)組件之間的數(shù)據(jù)。例如,當(dāng)圖形處理器需要讀取存儲在系統(tǒng)存儲器中的文本或是頂點數(shù)據(jù)時,該圖形處理器通過總線請求數(shù)據(jù)并且通過相同的總線接收響應(yīng)。當(dāng)許多設(shè)備提出數(shù)據(jù)請求(例如,來自系統(tǒng)存儲器)或者當(dāng)一個設(shè)備提出大量或者頻繁的請求時,總線或是總線分段可能變得飽和,從而導(dǎo)致性能降低。事實上,當(dāng)前許多圖形處理器具有有限的帶寬,也就是,它們的性能受到總線的傳送數(shù)據(jù)能力的限制,該總線將它們與系統(tǒng)的剩余部分相連接。從而,為了改善系統(tǒng)的性能而期待減少總線上的通信量,該通信量增加了可用帶寬。因此,減少總線上通信量的技術(shù)將非常值得期待。
發(fā)明內(nèi)容
本發(fā)明的實施例提供設(shè)備和方法,用于合并多個數(shù)據(jù)傳送請求并且將合并的請求作為一個單一的包在例如PCI Express(PCI-E)總線的包化總線上進行傳送。請求能夠被組合,例如,如果它們被指向同一目標(biāo)設(shè)備上的連續(xù)的地址范圍。一種機會合并過程被有利地采用,如果最初的請求和其后的請求是可合并的并且在一定的時間段里被接收到那么就將最初的請求和其后的請求進行合并;否則,請求能夠被傳送而不被合并??梢哉{(diào)整過程的等待時間和其它參數(shù)以便最優(yōu)化總線上由于合并所減少的開銷和由于等待可合并的請求所引起的延遲之間的平衡。
按照本發(fā)明的一個方面,提供一種總線接口設(shè)備,為了在總線上以包的方式傳送來自多個客戶的數(shù)據(jù)傳送請求。所述總線接口設(shè)備包括隊列,組合器邏輯,和輸出邏輯。配置隊列以用于存儲來自客戶的數(shù)據(jù)傳送請求,每個數(shù)據(jù)傳送請求指定一個目標(biāo)地址范圍。配置組合器邏輯,從隊列中至少一個數(shù)據(jù)傳送請求中形成一個包,并且在兩個或者更多個被合并的數(shù)據(jù)傳送請求分別指定可以合并的目標(biāo)地址范圍的情況下,進一步配置該組合器邏輯以便將隊列中的兩個或者更多個數(shù)據(jù)傳送請求組合為一個包。配置輸出邏輯驅(qū)動所述包到總線上。
在一些實施例中,在各個目標(biāo)地址范圍是連續(xù)的情況下,由兩個或者多個數(shù)據(jù)傳送請求所指定的各個目標(biāo)地址范圍是可合并的。在其它實施例中,每個數(shù)據(jù)傳送請求進一步指定目標(biāo)設(shè)備,并且其中,在兩個或者多個數(shù)據(jù)傳送請求制定相同的目標(biāo)設(shè)備并且各個目標(biāo)地址范圍是連續(xù)的情況下,由兩個或者多個數(shù)據(jù)傳送請求所指定的各個目標(biāo)地址范圍是可合并的。
在一些實施例中,組合器邏輯包括合并組合邏輯和發(fā)送控制邏輯。配置組合邏輯去檢測是否在隊列中存在任何數(shù)據(jù)傳送請求可以與隊列中的最早的數(shù)據(jù)傳送請求相合并并且至少部分基于所述檢測而產(chǎn)生狀態(tài)信息。配置發(fā)送控制邏輯去確定是否在當(dāng)前的循環(huán)里傳送包或者等待下一個循環(huán),其中是否傳送包的決定至少部分基于通過合并邏輯所產(chǎn)生的狀態(tài)信息。
在確定是否發(fā)送包的時候可以測試各種情況。例如,可以配置發(fā)送控制邏輯,以致于是否傳送包的決定是至少部分基于隊列中的多個數(shù)據(jù)傳送請求的,或者基于從發(fā)送先前的包以來所經(jīng)過的時間,或者基于從接收隊列中最早的數(shù)據(jù)傳送請求以來所經(jīng)過的時間,或者基于隊列中的那些可與隊列中最早的數(shù)據(jù)傳送請求相合并的數(shù)據(jù)傳送請求。可以對這些或者其他情況的任何組合做出測試。
可以采取各種方式來排列總線接口設(shè)備。在一個實施例中,設(shè)備是處理器的一個組件并且客戶正在處理處理器的核心。在另一個實施例中,每個客戶是分立的組件,并且為了連接每個客戶而采用專用的局部總線配制所述總線接口設(shè)備。
在一些實施例中,通過總線接口設(shè)備以適合總線傳送的包的格式接收數(shù)據(jù)傳送請求。在其他實施例中,以不同于適合總線傳送的包的格式的內(nèi)部格式接收數(shù)據(jù)傳送請求。數(shù)據(jù)傳送請求可以包括,例如讀請求和/或?qū)懻埱???偩€可以是PCI Express(PCI-E)總線或者任何其他包化總線。
按照本發(fā)明的另一方面,用于在總線上以包的方式傳送來自多個客戶的數(shù)據(jù)傳送請求的方法包括接收指定第一地址范圍的第一數(shù)據(jù)傳送請求和接收至少一個后續(xù)的數(shù)據(jù)傳送請求,每個后續(xù)數(shù)據(jù)傳送請求指定各個目標(biāo)地址范圍。做出決定以便確定是否第一目標(biāo)地址范圍可與一個或者多個后續(xù)數(shù)據(jù)傳送請求的目標(biāo)地址范圍相合并。形成用于總線傳送的包。在所述第一目標(biāo)地址范圍與一個或者多個后續(xù)數(shù)據(jù)傳送請求所指定的目標(biāo)地址范圍可合并的情況下,從所述第一請求和一個或者多個后續(xù)數(shù)據(jù)傳送請求中形成包;在所述第一目標(biāo)地址范圍與任意后續(xù)數(shù)據(jù)傳送請求的目標(biāo)地址范圍不可合并的情況下,從所述第一請求中形成包。驅(qū)動所述包到總線上。
在一些實施例中,對發(fā)送條件作出響應(yīng)執(zhí)行形成包的動作,其可以基于各種考慮。例如,發(fā)送條件可以至少部分基于所接收到的多個數(shù)據(jù)傳送請求,基于從發(fā)送先前包以來所經(jīng)過的時間,基于從接收第一數(shù)據(jù)傳送請求以來所經(jīng)過的時間,或者基于多個可與第一數(shù)據(jù)傳送請求相合并的后續(xù)數(shù)據(jù)傳送請求??梢栽诎纬珊?或發(fā)送的時候采用這些或者其他條件的任何組合去進行控制。
按照本發(fā)明的另一其它方面,處理器包括多個處理核心和一個總線接口單元。配置每個處理器核心去生成數(shù)據(jù)傳送請求。配置總線接口單元去接收來自處理核心的數(shù)據(jù)傳送請求并且以包的形式在總線上傳送數(shù)據(jù)傳送請求,總線接口單元包括隊列,組合器邏輯,和輸出邏輯。配置隊列來存儲來自處理核心的數(shù)據(jù)傳送請求,每個數(shù)據(jù)傳送請求指定一目標(biāo)地址范圍。配置組合器邏輯從隊列中的至少一個數(shù)據(jù)傳送請求中形成包,并且進一步配置組合器邏輯,在兩個或者多個被組合的數(shù)據(jù)傳送請求指定各個可合并的目標(biāo)地址范圍的情況下,組合隊列中的兩個或者多個數(shù)據(jù)傳送請求而形成包。配置輸出邏輯去驅(qū)動包到總線上。
接下來,結(jié)合附圖的詳細(xì)的說明將提供對本發(fā)明的本質(zhì)和優(yōu)勢的更好的理解。
圖1是按照本發(fā)明實施例的計算機系統(tǒng)的方框圖;
圖2是按照本發(fā)明實施例的圖形處理單元的方框圖;圖3按照本發(fā)明實施例解釋用于組合包的操作原理;圖4是按照本發(fā)明實施例的組合和傳送包的傳送器模塊的方框圖;圖5是按照本發(fā)明實施例的可以在組合邏輯塊中被實現(xiàn)的控制邏輯過程的流程圖。
圖6是按照本發(fā)明實施例的用于合并額外請求的過程步驟的流程圖;圖7是按照本發(fā)明實施例的可以在發(fā)送控制邏輯塊中實現(xiàn)的控制邏輯過程的流程圖;以及圖8是按照本發(fā)明實施例的用于請求序列的處理實例。
發(fā)明的詳細(xì)說明本發(fā)明的實施例提供設(shè)備和方法,為了在諸如PCIExpress(PCI-E)總線的包化總線上傳送而合并兩個或者多個數(shù)據(jù)傳送請求為一個單一的包。正如在這里所使用的那樣,“包化”的總線包括任何總線,通過它采用具有標(biāo)題(即使通常不必具有固定大小)和可變大小的有效載荷的包傳送數(shù)據(jù)傳送請求。所述標(biāo)題方便地指出發(fā)出請求的設(shè)備和目標(biāo)地址范圍??梢杂砷_始和結(jié)束地址,開始地址和大小或者類似的數(shù)據(jù)來指示目標(biāo)地址范圍。在一些情況下,可以明確地識別目標(biāo)設(shè)備;在其他情況下,目標(biāo)地址范圍充分地識別與地址匹配原則相關(guān)的目標(biāo)設(shè)備,并且不要求目標(biāo)設(shè)備的清晰標(biāo)識。根據(jù)本公開的內(nèi)容,將清晰地看到請求被包括多個請求發(fā)生器的集成設(shè)備的總線接口單元,諸如開關(guān)的分立的總線接口元件,或者其它設(shè)備所組合。組合多個請求為一個包減少了起源于多個包標(biāo)題的總線上的負(fù)載。在一些實施例中,減少的負(fù)載能夠為數(shù)據(jù)和/或其他性能優(yōu)勢提供增加的帶寬,它們的例子將在下面被描述。
圖1是按照本發(fā)明實施例的計算機系統(tǒng)100的方框圖。計算機系統(tǒng)100包括中央處理單元(CPU)102和通過存儲器橋105進行通信的系統(tǒng)存儲器104。存儲器橋105通過總線106連接到I/O(輸入/輸出)橋107,輸入/輸出橋107從一個或者多個用戶輸入設(shè)備108(例如鍵盤,鼠標(biāo))接收用戶輸入,并且通過總線106和存儲器橋105轉(zhuǎn)發(fā)輸入到CPU102。提供可視化輸出到基于顯示設(shè)備110(例如,常規(guī)CRT或者LCD顯示器)的象素上,該顯示器受圖形子系統(tǒng)112的控制,該系統(tǒng)通過總線113與存儲器橋105相連接。系統(tǒng)磁盤114也與輸入/輸出橋107相連接,開關(guān)116提供輸入/輸出橋107和其它諸如網(wǎng)絡(luò)適配器118和各種附加卡120、121的組件之間的連接。在優(yōu)選實施例中,例如,在存儲器橋105和圖形子系統(tǒng)112之間,在存儲器橋105和輸入/輸出橋107之間,以及輸入/輸出橋107和開關(guān)116之間采用諸如PCI-Express(PCI-E)的包化總線協(xié)議來實現(xiàn)在系統(tǒng)100的各種組件中的一些或者全部之間的連接。
圖形處理子系統(tǒng)112包括圖形處理單元(GPU)122和圖形存儲器124,其可以通過使用諸如可編程處理器的一個或多個集成電路設(shè)備,專用集成電路(ASICs),和存儲設(shè)備來加以實現(xiàn)??梢耘渲肎PU122去執(zhí)行與產(chǎn)生象素數(shù)據(jù)相關(guān)的各種任務(wù),該象素數(shù)據(jù)來自于由CPU102和/或系統(tǒng)存儲器104通過存儲器橋105和總線113所提供的圖形數(shù)據(jù),可以配置GPU122與圖形存儲器124交互來存儲和更新象素數(shù)據(jù)或者類似有關(guān)的任務(wù)。例如,GPU122可以根據(jù)在CPU102上執(zhí)行的不同程序所提供的2-D或3-D場景數(shù)據(jù)來產(chǎn)生象素數(shù)據(jù)。GPU122也可以存儲通過存儲器橋105所接收的象素數(shù)據(jù)到圖形存儲器124以便做或者不做進一步的處理。有利地,GPU122也包括用于從圖形存儲器124傳送象素數(shù)據(jù)到顯示設(shè)備110的掃描輸出管道。透視和掃描輸出操作的任何組合可以在GPU122中被實現(xiàn),并且詳細(xì)的描述可以被省略,因為這對于理解本發(fā)明不是關(guān)鍵的。
需要注意的是這里所示的系統(tǒng)是解釋性的,并且各種變化和修改都是可能的。總線設(shè)備和橋的數(shù)目和排列可以按照需要被修改;例如,圖形子系統(tǒng)能夠被連接到I/O橋107而不是存儲器橋105,或者I/O橋107和存儲器橋105可以被集成到一個單一的芯片上。可選地,圖形子系統(tǒng)能夠通過總線橋而被集成到一個單一的芯片上。總線拓?fù)湟部梢杂兴兓?;例如,在一個可選實施例中,系統(tǒng)存儲器被直接連接到CPU而不是橋。
可以包括任何數(shù)目的圖形處理器(例如,通過將多個附加卡和總線113連接,每個卡上附有一個圖形處理器),并且這樣的處理器可以并行操作從而為相同的顯示設(shè)備或者不同的顯示設(shè)備產(chǎn)生圖像,每個圖形處理器可以具有任何數(shù)目的局部圖形存儲器,包括非局部存儲器,并且圖形處理器可以任何組合形式使用局部存儲器和系統(tǒng)存儲器。
圖2是按照本發(fā)明實施例的GPU122的方框圖。GPU122包括多個執(zhí)行核心202(1)至202(N),它們并行運作執(zhí)行透視和/或掃描輸出操作。在一個實施例中,202(1)至202(N)中的一個核心在其它核心執(zhí)行透視運作的時候執(zhí)行掃描輸出操作;值得注意的是也可以使用其它配制。可以提供N個核心中的任意數(shù)目,并且每個核心可以是一般的常規(guī)設(shè)計。
在核心202(1)至202(N)的運作過程中,所述核心可以要求從系統(tǒng)存儲器104(圖1)中或者從其它通過存儲器橋105訪問GPU122的設(shè)備中所檢索到的數(shù)據(jù)。根據(jù)本發(fā)明的實施例,核心202(1)至202(N)發(fā)送這樣的請求到總線接口單元204??偩€接口單元204包括傳送器模塊206和接收器模塊208。傳送器模塊206,它的實施例將在下面描述,發(fā)送從核心所接收到的請求到總線113。接收器模塊208通過總線113接受對所述請求的響應(yīng),并且發(fā)送每個響應(yīng)至核心202(1)至202(N)中的提出請求方。
在優(yōu)選實施例中,總線是一種“包化”總線,這意味著采用各種大小的包進行信息的傳送。在數(shù)據(jù)傳送請求過程中,每個包包括識別提出請求的設(shè)備的固定長度(例如,20個字節(jié))的包頭,目標(biāo)設(shè)備,以及目標(biāo)地址或者數(shù)據(jù)傳送的目的和源地址范圍(在目標(biāo)設(shè)備內(nèi))。在一些實施例中,地址可以定義在“全局”地址空間內(nèi),該空間被多個設(shè)備所共享,并且僅僅目標(biāo)地址范圍就足以識別目標(biāo)設(shè)備;在這樣的情況下,可以忽略目標(biāo)設(shè)備的單獨的識別器。類似地,在實施例中,定義多個地址空間(例如,輸入/輸出空間,存儲空間,配置空間等等)和為特定的目標(biāo)設(shè)備分配每個空間的部分,可以通過指定目標(biāo)地址空間和在空間中的目標(biāo)地址范圍來識別目標(biāo)設(shè)備。能夠采用開始和結(jié)束地址,或者開始地址和大小等等來指定目標(biāo)地址范圍。
有利地,包頭也包括其它信息,諸如將被執(zhí)行的操作類型(例如,讀或者寫),包的優(yōu)先權(quán),包的序列號或者其它唯一的由提出請求的設(shè)備所提供的識別器(這里是指“標(biāo)簽”)等等。在寫操作過程中,有利地,請求包也具有包括寫入數(shù)據(jù)的“有效載荷”部分。在讀操作過程中,有利地,請求包的有效載荷部分被忽略?,F(xiàn)有技術(shù)中已知大量的包格式,并且詳細(xì)的描述將被省略,因為這對于理解本發(fā)明不是關(guān)鍵的。在一個實施例中,包遵循PCI-E協(xié)議。
當(dāng)包請求讀操作時,有利地,目標(biāo)設(shè)備返回響應(yīng)包,該包的有效載荷部分包括所請求的數(shù)據(jù)。響應(yīng)包的包頭識別提出請求的設(shè)備,并且包括來自響應(yīng)請求包的標(biāo)簽,從而促進數(shù)據(jù)的識別。在寫操作過程中,可以不送出響應(yīng)包。
在一些實施例中,每個讀請求或者寫請求包的目標(biāo)設(shè)備返回確認(rèn)(“ACK”)給送出請求的設(shè)備。Ack獨立于任何數(shù)據(jù)傳送,可以是僅僅指示請求包的成功接收的小包,例如,通過返回與請求包相關(guān)的標(biāo)簽。在讀請求的過程中,目標(biāo)設(shè)備在接收到請求包的時候返回一個Ack,并且在單獨的包里返回所請求的數(shù)據(jù)(在可行的讀延遲期后)。然后,提出請求的設(shè)備發(fā)送Ack回目標(biāo)設(shè)備用以指示數(shù)據(jù)包的接收。在一個實施例中,Ack也遵循PCI-E協(xié)議。
有利地,發(fā)送器模塊206為接收器208提供唯一的標(biāo)簽用于每個請求包的發(fā)送,并且也為接收器208提供關(guān)于核心202(1)至202(N)中的哪一個發(fā)起請求的信息。接收器208將接收到的響應(yīng)包包頭中的請求標(biāo)簽與傳送器模塊206所提供的請求標(biāo)簽相匹配,并且使用所述信息對發(fā)起請求的核心202(1)至202(N)作出響應(yīng)。
在一些情況下,系統(tǒng)100中的其它設(shè)備(圖1)可以要求傳送至或者源自圖形處理子系統(tǒng)112的數(shù)據(jù)傳送,例如,傳送至或者源自圖形存儲器124的數(shù)據(jù)傳送。在這種情況下,接收器208通過總線113接收輸入的請求包,并且發(fā)送所述請求到圖形處理子系統(tǒng)112中的適當(dāng)?shù)奶幚砥?。處理器可以是,例如,核?02(1)至202(N)中的一個或者單獨的圖形存儲器接口模塊(圖2中沒有顯示)。響應(yīng)(數(shù)據(jù)或Ack)從處理器返回至發(fā)送器模塊206,它格式化并且通過總線113送出響應(yīng)包給請求設(shè)備。
包不局限于數(shù)據(jù)傳送請求和響應(yīng)。在一些實施例中,除了數(shù)據(jù)傳送請求和響應(yīng),包也可以被用于傳送系統(tǒng)組件之間的各種消息(例如,中斷,重置等等。
在一實施例中,總線113是PCI-E總線,正如圖2所示,采用單獨的物理路徑113a,113b分別用于發(fā)送和接收包。值得注意的是其它包化總線能夠被替換,采用或者不采用單獨的發(fā)送和接收路徑,并且本發(fā)明不局限于PCI-E。
根據(jù)本發(fā)明的實施例,當(dāng)核心202(1)至202(N)產(chǎn)生數(shù)據(jù)傳送請求的時候,發(fā)送器單元206能夠組合多個請求到一個被傳送到總線113上的單獨的包。有利地,如果包引用同一設(shè)備中的連續(xù)的地址范圍并且指出相同類型的操作(例如讀或者寫),那么這些包可以被組合。
圖3解釋用于組合包的運作原理。包302具有包頭部分304和有效載荷部分306(它可以是空的)。包頭部分304指定設(shè)備(Dev1),地址范圍[A0,A1),和操作(讀)。這里,采用半開放的區(qū)間[Aa,Ab)將地址范圍限定在線性地址空間里。其中a<b,意思是范圍中的首地址是Aa,末地址是小于Ab的最大有效地址;地址索引是有序的,因此,如果a<b,在線性地址空間里,地址Aa低于地址Ab;因此,需要理解的是A0<A1<A2等等。地址之間的間隔是任意的并且是可以變化的;例如,A0和A1可能相隔64位,而A1和A2可能相隔32位。知曉現(xiàn)有技術(shù)的本領(lǐng)域中的那些普通技術(shù)人員將可能將這里所描述的實施例運用到其它的地址空間。
類似地,包308具有包頭部分310和有效載荷部分312(它也可以是空的)。包頭部分310指定相同的設(shè)備(Dev1)和地址范圍[A1,A2)。包302和308引用相同設(shè)備中的連續(xù)的地址范圍,并且指定相同類型的操作。與本發(fā)明相一致,這些包可以被組合到一個新的包314中。包314的包頭部分316指定設(shè)備(Dev1),組合地址范圍[A0,A2),以及操作(讀)。包314的有效載荷部分318包含包302和308的相連接的有效載荷。
在一些實施例中,不論有效載荷的大小,包頭具有相同的大小。例如,包頭316與包頭304和310中的任一個大小相同。發(fā)送組合包314而不是單獨的包302和308減少由這一大小的包頭所使用的帶寬。這可以得到相當(dāng)?shù)墓?jié)余。例如,在采用PCI-E的實施例中,每個包頭是20個字節(jié),并且有效載荷可能是16,32,64或者128個字節(jié)。如果兩個64字節(jié)的有效載荷被合并為一個128字節(jié)的有效載荷,將增加大約13.5%的有效帶寬。在通常針對通用處理機,總線設(shè)備具有有限帶寬的情況下,這是一個重要的效能收獲。更普遍地,只要組合包314比包302,308小,那么組合包都將獲得總線帶寬消耗的一些減少,特別是在總線設(shè)備的帶寬有限的情況,可以獲得效能上的改善。
進一步地,需要注意的是,當(dāng)數(shù)據(jù)傳送請求是讀請求,并且對每個請求包的響應(yīng)將被作為單獨的包進行發(fā)送的時候,組合包能夠減少在兩個方向上的包頭開銷。例如,在圖3中,如果目標(biāo)設(shè)備通過PCI-E總線接收到包302和308,它將產(chǎn)生兩個響應(yīng)包去交付被請求的數(shù)據(jù),但是如果目標(biāo)設(shè)備接收到包314,它將僅僅產(chǎn)生一個響應(yīng)包。此外,在采用PCI-E或者其它協(xié)議的實施例中,其中目標(biāo)設(shè)備發(fā)送對于每個所接收到的包的Ack,組合包可以減少需要發(fā)送的Ack的數(shù)目,進一步減少在總線上的開銷。
在一些實施例中,在傳送器模塊206發(fā)送響應(yīng)包的時候,組合包可能是不合適的。例如,PCI-E請求目標(biāo)設(shè)備對于每一個接收到的請求包返回至少一個包;因此,當(dāng)PCI-E設(shè)備作為目標(biāo)設(shè)備時,傳送器206將不組合響應(yīng)于請求產(chǎn)生的包。本領(lǐng)域普通技術(shù)人員將認(rèn)識到傳送器模塊206能被配置為從其他類型的包中區(qū)分出請求包并且僅僅為請求包執(zhí)行組合操作。
在傳送器模塊206發(fā)送請求包的時候,只要目標(biāo)設(shè)備能夠?qū)λ稣埱笞鞒鲰憫?yīng),任何請求和任意數(shù)目的請求能夠被組合到一個單一的包中。在一些實施例中,來自不同核心202的請求可以由發(fā)送器206所組合。當(dāng)請求是讀請求的時候,有利地,發(fā)送器206提供指示核心202中的哪一個請求組合請求中的哪一部分?jǐn)?shù)據(jù)的信息給接收器模塊208;只要獲得這樣的信息,接收器模塊208就可以傳送返回數(shù)據(jù)的正確部分到正確的客戶。
圖4是按照本發(fā)明實施例的發(fā)送器模塊206的方框圖。發(fā)送器模塊206包括輸入仲裁器402,用于暫時存儲寫請求的寫隊列404,用于暫時存儲讀請求的讀隊列406,寫組合器408,讀組合器412,輸出仲裁器416,以及連接到總線113的輸出數(shù)據(jù)路徑113a的驅(qū)動電路418。
輸入仲裁器402從核心202(1)至202(N)中接收數(shù)據(jù)傳送請求,包括讀和寫請求。在一些實施例中,核心以總線協(xié)議所限定的包格式發(fā)送請求到發(fā)送器模塊206;在其它實施例中,采用不同的數(shù)據(jù)格式將請求送出,并且在發(fā)送器模塊206中被轉(zhuǎn)換成適當(dāng)?shù)陌袷健?br>
輸入仲裁器402指示寫請求到寫隊列404以及讀請求到讀隊列406。由于多個核心可以同時做出請求,有利地,輸入仲裁器402包括用于仲裁同時請求的控制邏輯??梢圆捎贸R?guī)的仲裁或者調(diào)度原則,諸如循環(huán)賽,基于優(yōu)先權(quán)的仲裁或者類似,并且特定的仲裁方案對于本發(fā)明不是重要的。在一個實施例中,輸入仲裁器402每一個時鐘循環(huán)發(fā)送一個請求到每個讀隊列406和寫隊列404。
讀隊列406和寫隊列404可以采用常規(guī)的技術(shù),按照所接收到的順序排隊請求。如下面所描述的,在一些實施例中可以將請求從隊列406和404中無序地去除。
寫組合器408包括組合邏輯420,計時器422和發(fā)送控制邏輯424。組合邏輯420在接收到新請求的時候檢查所述請求去確定是否它們能夠和當(dāng)前的請求組合,例如,寫隊列404中最早的請求(也包括那些已經(jīng)和最早的請求相組合后的任意請求)。組合邏輯420的具體實現(xiàn)將在下面描述。發(fā)送控制邏輯424采用組合邏輯420所提供的狀態(tài)信息去確定是否發(fā)送包??梢耘渲冒l(fā)送控制邏輯424去檢測包發(fā)送的各種情況;下面將對例子做出說明。當(dāng)包被發(fā)送出去的時候,發(fā)送控制邏輯424產(chǎn)生來自當(dāng)前請求的由組合邏輯420所識別出的包。在一些實施例中,發(fā)送控制邏輯424也重整請求為由總線協(xié)議所限定的包格式。一旦形成包,發(fā)送控制邏輯424轉(zhuǎn)發(fā)包到輸出仲裁器416,并且從寫隊列404中刪除包含在包里的所有請求。有利地,計時器422被發(fā)送控制邏輯424所采用,以阻上請求在寫隊列404中等待太長的時間,下面將描述。
類似地,讀組合器412包括組合邏輯426,計時器428和發(fā)送控制邏輯430。組合邏輯426檢查所接收到的新請求,去確定它們是否能夠與當(dāng)前的請求進行組合,例如,在讀隊列406中的最早的請求(也包括那些已經(jīng)與最早的請求相組合的任意請求)。組合邏輯426中的具體實現(xiàn)將在下面被描述。發(fā)送控制邏輯430采用組合邏輯426所提供的狀態(tài)信息去確定包是否要被發(fā)送出。發(fā)送控制邏輯430采用由組合邏輯426所提供的狀態(tài)信息去確定包是否要被發(fā)送出??梢耘渲冒l(fā)送控制邏輯430去檢測包可以被發(fā)送出的各種情況;下面將對例子做出描述。當(dāng)發(fā)送包的時候,發(fā)送控制邏輯430從當(dāng)前的組合邏輯426所識別的請求中產(chǎn)生包。在一些實施例中,發(fā)送控制邏輯430重整請求為由總線協(xié)議所限定的包格式。一旦形成包,控制邏輯430轉(zhuǎn)發(fā)包到輸出仲裁器416,并且從讀隊列406中去除所有的包括在包中的請求。有利地,發(fā)送控制邏輯使用計時器428,從而阻止讀隊列406中的請求等待太長的時間,將在下面描述。
有利地,寫組合器408和讀組合器412彼此交流有關(guān)在它們各自隊列中目標(biāo)設(shè)備和包的目標(biāo)地址的信息,以便可以保存具有相同目標(biāo)地址的讀請求和寫請求之間的順序。例如,假設(shè)核心發(fā)送(依序)第一請求從地址范圍[A0,A1)讀取數(shù)據(jù),發(fā)送第二請求寫數(shù)據(jù)到地址范圍[A1,A2)以及第三請求從地址范圍[A1,A2)讀取數(shù)據(jù)。在組合兩個讀請求之前,讀組合器412基于從寫組合器408交流得來的信息檢測是否存在介入寫請求。在一個實施例中,讀組合器412組合兩個讀請求并且保持所述被組合的請求(也就是,不把它交付給輸出仲裁器416),直到介入的寫請求被發(fā)送出以后??商鎿Q地,讀組合器可以發(fā)送第一請求而不用組合第二請求;這一選擇是更可取的,舉例來說,如果寫請求的發(fā)送被延遲。
輸出仲裁器416從寫組合器408接收載有寫請求的包,以及從讀組合器412中接收載有讀請求的包。在一個實施例中,每個寫組合器408和讀組合器412在每個時鐘循環(huán)至多交付一個包給仲裁器416。當(dāng)只有一個組合器提供包時,輸出仲裁器416傳送包給驅(qū)動器418。當(dāng)兩個組合器都提供包的時候,輸出仲裁器416可以運用常規(guī)的仲裁邏輯在它們中進行選擇(舉例來說,最近被服務(wù)的或者基于優(yōu)先權(quán)的仲裁算法)。輸出仲裁器416可以包括FIFO或者其它緩沖電路去暫時存儲包,直到它們被選擇用于傳輸。
驅(qū)動電路418從輸出仲裁器416接收所選擇的包,并且依照總線協(xié)議驅(qū)動包到總線線路113a上。驅(qū)動電路418通常可以是常規(guī)的設(shè)計。在一些實施例中,總線包括多個信號線路113a,并且驅(qū)動電路418并行地驅(qū)動至少一些包含所述包的數(shù)據(jù)到這些線路。
需要注意的是,這里所描述的發(fā)送器模塊是解釋性的,可以做出各種變化和修改。讀隊列和寫隊列可以是任意大小的,并且可以采用物理分離或邏輯分離的電路加以實現(xiàn)。讀組合器和寫組合器可以具有相同或者不同的配置,并且在一些實施例中,可以僅僅針對讀請求或者僅僅針對寫請求執(zhí)行請求的組合。在實施例中,當(dāng)總線協(xié)議不包括用于傳送數(shù)據(jù)的專用路徑的時候,可以配置輸出仲裁器或者其它發(fā)送器模塊的組件,在發(fā)送包之前,采取與適當(dāng)?shù)目偩€協(xié)議相一致的方式去獲得總線的控制,正如現(xiàn)有技術(shù)所知道的那樣。進一步地,在這里當(dāng)參考特定功能模塊描述發(fā)送器模塊的時候,需要了解的是這些模塊是出于描述方便的考慮而被定義的,并且不必對應(yīng)于物理上相異的組件。
現(xiàn)在將描述合并邏輯模塊420和426。圖5是顯示控制邏輯進程500的流程圖,按照本發(fā)明的一個實施例,可以在組合讀組合器412的邏輯塊426和/或組合寫組合器408的邏輯塊420的過程中實現(xiàn)該控制邏輯進程。可以從“循環(huán)”步驟502開始,重復(fù)進程500。在一些實施例中,進程500的執(zhí)行被同步為一個時鐘,它可以進一步被同步為總線106的操作。
在這個實施例中,在讀隊列406(或者寫隊列404)中定義一個“活動窗口”去識別那些當(dāng)前作為合并備選者的請求?;顒哟翱诰哂蓄A(yù)定的最大尺寸MW,有利地,該尺寸是根據(jù)請求的數(shù)目所測量到的。例如,MW可以是2,3,4或者至多為請求隊列406總長的任何尺寸。在任意給定的時間里,在讀隊列406中MW個最早請求處于活動窗口中。
最初,讀隊列406是空的。如下所述,在操作中,輸入仲裁器402在每個循環(huán)加入零個或者多個請求到讀隊列406中。在步驟504,合并邏輯426檢查讀隊列406去確定是否已經(jīng)接收到了一個新的請求。如果如此,那么在步驟506,合并邏輯426確定是否計時器428已經(jīng)在運行中,如果不是這樣,那么在步驟508開始計時器428。在一個實施例中,通過采用能夠在每個時鐘循環(huán)增加或者重置的計數(shù)器,可以實現(xiàn)計時器428,啟動計時器包括重新設(shè)置計數(shù)器以便它能夠像如下所示的那樣被增加。如果在步驟506,計時器428已經(jīng)在運行中,那么計時器408在步驟510能夠被增加。
在步驟512,合并邏輯426確定新請求是否能夠和當(dāng)前的請求相合并。有利地,“當(dāng)前請求”通過參照地址范圍而被定義。當(dāng)?shù)谝徽埱蟊唤邮盏降臅r候,初始化目前的地址范圍為所述請求的地址范圍。因此,每當(dāng)包被送出的時候,當(dāng)前的地址范圍被重新初始化為隊列中最早請求的地址范圍。直到包被送出的時候,如果后續(xù)地址范圍碰巧與當(dāng)前的地址范圍相連續(xù),那么合并邏輯426能夠通過合并后續(xù)請求的地址范圍到當(dāng)前地址范圍來擴展目前的地址范圍。
相應(yīng)地,步驟512包括將新請求的地址范圍和當(dāng)前地址范圍進行比較去確定合并是否是可能的。在一些實施例中,有利地,“可合并的”地址范圍包括那些表示相同地址空間里的連續(xù)塊的地址范圍,因此合并擴大了地址范圍。此外,可合并的地址范圍也可以包括那些部分或者完全重疊的地址范圍。因此,對地址范圍[A0,A2)的請求與對地址范圍[A1,A2)的請求或者對地址范圍[A0,A2)的第二請求是可合并的。當(dāng)不同請求的地址范圍重疊的時候,有利地,發(fā)送器模塊206(圖2)識別出由每個核心202所請求的特定的地址范圍,給接收器模塊208,并且接收器模塊208交付適當(dāng)?shù)臄?shù)據(jù)給每個提出請求的核心202。
在一些實施例中,合并可以改變開始地址或者結(jié)束地址。在其它實施例中,開始地址不被合并所改變,并且僅僅那些目標(biāo)地址與較大地址值相對應(yīng)的請求在步驟512被認(rèn)為是可合并的。在其它實施例中,結(jié)束地址不被合并所改變,并且僅僅那些目標(biāo)地址與較小地址值相對應(yīng)的請求在步驟512被認(rèn)為是可合并的。此外,合并也可以被限制在目標(biāo)為相同設(shè)備的請求上。在一些實施例中,來自不同核心的請求可能被認(rèn)為是可合并的或者是不可合并的。
如果新請求可以被合并,那么在步驟5 14,更新當(dāng)前地址范圍從而反映所合并的請求??梢员硎井?dāng)前的地址范圍,例如,通過開始地址(例如,將被訪問的最小地址值)和范圍大小,或者通過開始地址和結(jié)束地址(例如,將被訪問的最小和最大地址值)來進行表示;更新當(dāng)前的地址范阻可以包括改變開始地址,結(jié)束地址和/或范圍大小去反映原始的當(dāng)前請求和新請求相互連接的地址范圍。
在步驟516中,當(dāng)新請求被合并的時候,對新請求做出標(biāo)記。在一些實施例中,在隊列中的請求可以被修改以便反映合并。在其它實施例中,請求不被修改,并且標(biāo)簽或者類似數(shù)據(jù)結(jié)構(gòu)可以被用于去識別將要被合并的請求。更具體地,在一個實施例中,提供一個對應(yīng)這窗口中每個位置的一位的寄存器??梢猿跏蓟拇嫫鞯闹禐檫壿嫷椭狄员阒甘灸切┻€沒有被合并的請求,并且在步驟516設(shè)置寄存器值為邏輯高以便指示那些已經(jīng)被合并的請求。
在步驟518,合并邏輯426為那些在合并新請求之后可能的額外的合并進行檢查。例如,如果第一請求具有地址范圍[A0,A1)和第二請求具有地址范圍[A2,A3),沒有合并是可能的。但是,如果具有地址范圍[A1,A2)的第三請求被接收到并且與第一請求相合并去創(chuàng)造一個當(dāng)前地址范圍[A0,A2),那么合并第二請求去創(chuàng)造一個當(dāng)前地址范圍[A0,A3)成為可能。有利地,步驟518包括檢測這樣的情況并且執(zhí)行額外的合并。
圖6是可以在步驟518被執(zhí)行從而去合并額外請求的處理流程圖。在步驟606開始,進程600遍歷活動窗口去識別任意的沒有被合并的請求,這些請求中的地址范圍與當(dāng)前的被合并的地址范圍相連接。在步驟608中,選擇一個備選的請求。有利地,備選的請求是活動窗口中的最早的請求,它還沒有因為合并而被標(biāo)記。在步驟610,備選請求的目標(biāo)地址將被確定。
在步驟612中,需要確定的是備選請求的目標(biāo)地址范圍是否可以與當(dāng)前所合并的地址范圍相合并。有利地,在步驟512中所使用的用于合并的相同的準(zhǔn)則在步驟612中被使用。如果地址范圍是可合并的,那么所合并的地址范圍在步驟614被更新,并且備選請求因為在步驟616中被合并而被標(biāo)記。一般地,這些步驟可以與前面所描述的步驟514和516相類似。
在步驟618中,不論備選請求是否被合并,都需要確定是否窗口中的任意未被合并的請求還沒有被測試。如果是這樣,那么接下來的這樣的請求將在步驟608中作為新的備選請求而被選擇,并且如前面所描述的那樣被測試。
在步驟620中,需要確定測試是否應(yīng)該繼續(xù)。例如,如果在遍歷窗口的過程中,任意請求被合并,那么可能的是額外的未被合并的請求現(xiàn)在可以和被擴展的地址范圍相合并。如果測試將繼續(xù),那么進程600返回至步驟606去開始一個新的對窗口的遍歷。值得注意的是在圖6中所示的具體步驟是沒有被要求的。
步驟518中對額外合并的檢查可以減少按照請求到達(dá)順序進行合并的依賴性。例如,假設(shè)在活動窗口中的最早的請求具有目標(biāo)地址范圍[A0,A1),接下來最早的請求具有地址范圍[A2,A3),第三最早的請求具有地址范圍[A1,A2)。進程500中的步驟512至516中,第一請求將與第三請求相合并去創(chuàng)造所合并的地址范圍[A0,A2)。在步驟518,第二請求將與所合并的請求相合并去創(chuàng)造合并的地址范圍[A0,A3)。需要注意的是步驟518是可選的,并且在一些實施例中,簡化合并邏輯可以具有比步驟518所提供的合并請求所增加的可能性更高的優(yōu)先權(quán)。
再次參考圖5,在步驟520中,合并邏輯426將更新的狀態(tài)信息提供給發(fā)送控制邏輯430。狀態(tài)信息可以包括任意的被發(fā)送控制邏輯430所使用的信息,用于確定是否在當(dāng)前循環(huán)內(nèi)發(fā)送一個包。狀態(tài)信息的例子包括窗口中請求的總的數(shù)目,合并到當(dāng)前請求中的請求的數(shù)目,當(dāng)前地址范圍的大小,等等。
在步驟504中,在沒有新的請求被接收到的情況下,合并邏輯426在步驟524中增加計時器428。在步驟526中,合并邏輯426確定是否在最后的循環(huán)內(nèi)發(fā)送出一個包;步驟526可以包括檢測如下所述的由發(fā)送控制邏輯430所產(chǎn)生的信號。如果包被發(fā)送出去,那么包將已經(jīng)包括了隊列中最早的請求,因此當(dāng)前的地址范圍將不再精確。在步驟528中,更新當(dāng)前的地址范圍去反映讀隊列406中目前最早請求的地址范圍。有利地,合并邏輯426為那些在隊列406中能夠與當(dāng)前最早請求(步驟518)相合并的其它請求進行檢查。
現(xiàn)在,將描述發(fā)送控制邏輯塊424和430。圖7是按照本發(fā)明的,顯示控制邏輯進程700的流程圖,該控制進程可以在讀組合器412的發(fā)送控制邏輯塊430或者寫組合器408的發(fā)送控制邏輯塊412中被實現(xiàn)??梢詮摹把h(huán)”步驟702開始重復(fù)進程700。
在步驟704,發(fā)送控制邏輯430(或者發(fā)送控制邏輯424)確定發(fā)送條件是否已經(jīng)出現(xiàn)。正如這里所使用的,“發(fā)送條件”一般涉及任意可檢測的情況,它們的出現(xiàn)指示將從讀隊列406(或者寫隊列404)發(fā)送包。有利地,發(fā)送條件被定義并且被調(diào)整到特定的系統(tǒng)配置,同時諸如讀隊列406的大小,發(fā)送器模塊206所引起的最大延遲,總線行為的實際水平等等因素也可能被納入考慮中??梢允褂么罅康陌l(fā)送條件,發(fā)明的實施例可以在步驟704測試任意數(shù)量和組合的發(fā)送條件。
例如,在一些實施例中,當(dāng)計時器428(或者計時器422)到期的時候,一個發(fā)送條件就出現(xiàn)了,例如,當(dāng)實現(xiàn)計時器428的計數(shù)器已經(jīng)達(dá)到了一個預(yù)定的最大值。有利地,定義最大值以便當(dāng)更長的等待將引起延遲的時候,計時器428到期,該延遲不被期待能夠從合并請求的效率收獲中獲得補償。在一些實施例中,最大值可以是固定的值,它可以是設(shè)備的可配置的參數(shù)。在其它實施例中,基于操作條件,最大值可以被動態(tài)地調(diào)整,例如,通過監(jiān)視總線流量,當(dāng)總線的負(fù)載相對較輕的時候選擇較低的最大值去減少延遲,當(dāng)總線的負(fù)載相對較重的時候選擇較高的最大值去增加組合包的可能性。
在一些實施例中,發(fā)送條件是基于請求隊列的特性和/或者總線協(xié)議的。例如,正如下面所描述的,在一些實施例中,在讀隊列406中定義活動窗口去識別當(dāng)前用于合并的備選請求?;顒哟翱诰哂蓄A(yù)定最大值MW,有利地,它是根據(jù)請求的數(shù)目而被測量的。例如,MW可以是2,3,4或者最大為讀隊列406總長的任意尺寸。在任意給定的時間里,讀隊列406中的MW個最早請求處于活動窗口中(如果少于MW個請求出現(xiàn)在讀隊列406中,那么所有的請求將在活動窗口中)。
一旦活動窗口滿了,例如,一旦讀隊列406包括MW個請求,那么,由于直到發(fā)送出包以后才能有新的包進入活動窗口,因此繼續(xù)等待請求是不再值得的(即使計時器還沒有到期)。因此,有利的,滿的活動窗口被檢測為一個發(fā)送條件。例如,如果MW=2,一旦兩個請求已經(jīng)被接收到,第一請求將被發(fā)送出。如果第二請求的目標(biāo)地址范圍與第一請求的目標(biāo)地址范圍是連續(xù)的,那么請求將如上所述的那樣被合并。否則,第二請求保留在隊列中,直到發(fā)送條件出現(xiàn)在接下來的循環(huán)里。
在其它實施例中,發(fā)送條件是基于能夠被組合的請求的最大數(shù)目MR的;MR可以是最大為窗口大小MW的任意尺寸。如果在隊列406中的第一(最早)請求能夠與MR-1個其它請求相合并,在形成和發(fā)送包之前不再等待是有利的。例如,在這樣的一個實施例中,MW=3和MR=2;如果最早的請求能夠與第二最早請求相合并,那么基于MR的發(fā)送條件將出現(xiàn),并且不論第三請求是否已經(jīng)被接收到,包都將被送出。需要注意的是當(dāng)MR=MW并且基于MW的發(fā)送條件被使用的時候,在基于MR的發(fā)送條件只有在基于MW的發(fā)送條件也出現(xiàn)的情況下才出現(xiàn)的意義上,基于MR的發(fā)送條件將是多余的。
在另一個實施例中,發(fā)送條件是基于總線所支持的包的最大尺寸的。一旦在活動窗口中通過合并請求能夠創(chuàng)造最大尺寸的包,那么不再有請求可以在沒有創(chuàng)造不被接受的大包的情況下與現(xiàn)存的請求相合并。例如,假設(shè)總線協(xié)議限制包的有效載荷為128個字節(jié)。如果在隊列406中的第一(最早)請求具有128個字節(jié)的有效載荷,那么它不能夠被合并到更大的包中,并且將出現(xiàn)包大小的發(fā)送條件。類似地,如果在隊列406中的第一(最早)請求是64個字節(jié)并且它能夠與另一個64個字節(jié)的請求相合并去得到具有128個字節(jié)的有效載荷的包,那么包大小的發(fā)送條件也將出現(xiàn)。需要理解的是128個字節(jié)的最大值的例子是解釋性的;不同的總線協(xié)議可以在包大小上做不同的限制(或者沒有限制)。
再次參照圖7,步驟704可以包括檢測上述或者其它發(fā)送條件的任意組合。如果,在步驟704,沒有出現(xiàn)發(fā)送條件,那么進程700返回到步驟702而不做任何動作。如果檢測到發(fā)送條件的出現(xiàn),那么在步驟706中形成包。在一個實施例中,如上所述,發(fā)送控制邏輯430參照由組合邏輯426所確定的當(dāng)前地址范圍形成包。形成包可以包括產(chǎn)生一個新的包頭,或者,在實施例中,當(dāng)請求已經(jīng)以包的形式存在的時候,修改包的包頭中的諸如地址范圍的信息去包含與之合并的其它包的信息。創(chuàng)造包也可以包含連接被合并的請求(或包)的有效載荷;有利地,有效載荷是基于地址順序而被連接的,有效載荷可以在可合并請求被識別出的時候(例如,在圖5的進程500的步驟514)被連接而不用等待到步驟706才執(zhí)行。在步驟708中,為了將包傳送到總線上而將包發(fā)送給輸出仲裁器416。
在步驟710中,包信息被轉(zhuǎn)發(fā)給接收器模塊208(圖2)。有利地,包信息包括唯一的包標(biāo)簽,對請求數(shù)據(jù)的核心202(1)到202(N)中的哪一個(或者哪幾個)的識別,以及可能被接收器模塊208所使用的用于確定如何處理接收到的對包的任意響應(yīng)的任意其他信息。通常,這樣的信息可以在本質(zhì)上是常規(guī)的,并且接收器模塊208不需要知道是否通過合并請求創(chuàng)造了特定的包,但是需要知道響應(yīng)中所接收到的不同的數(shù)據(jù)子集將被路由到不同的提出請求的核心。
在步驟712中,發(fā)送控制邏輯430從讀隊列406中刪除包中所包括的所有的請求。在一個實施例中,采用前面所描述的合并寄存器的值去確定哪個請求被包括在包中。
在步驟714中,發(fā)送控制邏輯430發(fā)信號給合并邏輯426,指示一個包已經(jīng)被發(fā)送出了。正如前面所描述的那樣,響應(yīng)于這樣的信息,合并邏輯426能夠更新當(dāng)前的地址范圍去反映出不同的請求現(xiàn)在是最早的請求。在步驟716中,發(fā)送控制邏輯430重置計時器428。然后,為了下一個循環(huán),進程700返回至步驟702。
需要注意的是這里所描述的合并和發(fā)送進程是解釋性的,并且可能做出各種的變化和修改。描述為線性的步驟可以并行地執(zhí)行。可以變化步驟的順序,并且可以修改或者組合步驟。例如,活動窗口可以是任意大小的(兩個請求或者更多),并且可以被遍歷任意次(一次,兩次等)。在一些實施例中,如果所合并的請求達(dá)到了最大的包大小或者最大數(shù)目,那么窗口的遍歷被中止。在一些實施例中,可能不允許特定的地址范圍;例如,如果被允許的有效載荷的大小為32,64和128個字節(jié),那么32個字節(jié)的請求和64個字節(jié)的請求將不被合并去創(chuàng)造96個字節(jié)的有效載荷。這里所描述的進程可以被修改去滿足任何這樣的限制。
此外,發(fā)送條件可以與前面那些所描述的不同。例如,前面所描述的計時器在每次送出包的時候重置,并且因此,給定請求在隊列中等待的周期的數(shù)目可能部分地依賴于其它的包是否被發(fā)送出。在一個可替換的實施例中,為每個請求使用單獨的計時器(例如,計數(shù)器),并且當(dāng)它的計時器到期的時候,請求被發(fā)送出,而不管其它的行為。更一般地,任意數(shù)目和任意組合的發(fā)送條件可以被發(fā)送控制邏輯所測試。在一些實施例中,來自特定核心的請求可以不用等待而被發(fā)送出。例如,如果一個核心被標(biāo)示為高優(yōu)先級,那么來自那個客戶的請求的接收可能被視為發(fā)送條件,并且包形成邏輯可能被配置為去檢測這樣的一個請求,并且無論其它包是否在隊列中等待都將它作為包發(fā)送??梢詧?zhí)行這里所描述的進程去組合讀請求和/或組合寫請求。正如前面所注明的那樣,可以使用不同的邏輯去控制讀請求的組合和寫請求的組合。
為了進一步解釋發(fā)明的實施例的運作,圖8是根據(jù)前面所描述的進程用于處理讀請求序列的處理例,該請求序列可以由發(fā)送器模塊206(圖2)所接收和處理。在圖8中,列802識別循環(huán)(為了方便被編號為1至8)。列804顯示在接收到任意新請求之后,每個循環(huán)中活動窗口中的請求的地址范圍。列806指示,如果可能,出現(xiàn)在每個循環(huán)中的發(fā)送條件。根據(jù)這個例子,發(fā)送條件是“計時器”,如果計時器達(dá)到計數(shù)3那么它到期;“窗口滿”,當(dāng)三個請求出現(xiàn)在窗口中(MW=3)時它出現(xiàn);以及“最大合并”,當(dāng)兩個可合并的請求出現(xiàn)在窗口中的時候(MR=2)的時候它出現(xiàn)。列808在那個循環(huán)中用于包(如果有的話)發(fā)送的地址范圍。
在循環(huán)1中,具有目標(biāo)地址范圍[A0,A1)的第一請求811被接收到并且進入到活動窗口中。計時器開始的初始值是0。發(fā)送條件沒有出現(xiàn),因此沒有包被發(fā)送出去。在循環(huán)2和3中,沒有接收到請求,并且第一請求811在活動窗口中等待。計時器隨著每一個循環(huán)而增加一次。
在循環(huán)4中,具有目標(biāo)地址范圍[A2,A3)的第二請求812被接收到并且進入到活動窗口中。計時器達(dá)到計數(shù)3并且到期,因比包821被發(fā)送出去。正如上面所描述的,包對應(yīng)著窗口中最早的請求(請求811);因為[A0,A1)和[A2,A3)不是連續(xù)的范圍,因此請求812沒有和請求811合并,并且包821具有目標(biāo)地址范圍[A0,A1)。只要包被發(fā)送出去,計時器就被重新設(shè)置。
在循環(huán)5中,具有目標(biāo)地址范圍[A5,A6)的第三請求813被接收到并且進入到活動窗口中。沒有出現(xiàn)發(fā)送條件,因此沒有包被發(fā)送出去。
在循環(huán)6中,具有目標(biāo)地址范圍[A3,A4)的第四請求814被接收到并且進入到窗口中。因為現(xiàn)在的窗口是滿的,發(fā)送條件出現(xiàn)了,于是包822被發(fā)送出去。在這個例子中,最早請求是請求812,請求814與請求812相合并。因此,包822具有目標(biāo)地址范圍[A2,A4)。請求813不被合并而被保留在窗口中。
在循環(huán)7中,具有目標(biāo)地址范圍[A6,A7)的第五請求815被接收到并且進入到窗口中。因為請求815能夠和請求813相合并,“最大合并”發(fā)送條件出現(xiàn)了,于是包823被發(fā)送出去。因為合并,包823具有目標(biāo)地址范圍[A5,A7]。
在循環(huán)8中,具有目標(biāo)地址范圍[A7,A8)的第六請求816被接收到并且進入到窗口中。此刻,請求816是窗口中的唯一請求,并且沒有出現(xiàn)發(fā)送條件,因此沒有包被發(fā)送。這個進程可以通過這樣的方式不確定地被繼續(xù)。
需要注意的是這里所描述的時間順序和發(fā)送條件是解釋性的,并且可能做出變化和修改??梢远x不同的發(fā)送條件,可以使用不同的原則去確定是否能夠合并請求。
在圖8所示的例子中,合并將在總線發(fā)送出的包的數(shù)目從五(請求的數(shù)目)減少至三。更一般地,通過合并請求所獲得的帶寬部分地依賴特定的發(fā)送條件和所執(zhí)行的合并規(guī)則。它也部分地依賴于由各種核心所產(chǎn)生的請求或者總線接口單元的其它用戶致力于擁有連續(xù)的目標(biāo)地址范圍到什么樣的程度,連續(xù)的地址范圍取決于由客戶所執(zhí)行的操作類型。正如上面所記述的那樣,只要被合并的包小于那些產(chǎn)生合并包的兩個和多個包的組合尺寸,那么至少可以獲得一些帶寬使用量的減少。進一步地,當(dāng)多個請求被合并到一個包中的時候,響應(yīng)將更可能地被返回至一個包中而不是多個包中,因此減少了在返回路徑上的帶寬的使用量。
此外,合并包可以提供其它的好處。例如,在一些實施例中,在驅(qū)動電路418(圖4)不傳送包的時候,通過將它設(shè)置在低電源狀態(tài)從而減少電源消耗;因此,通過減少驅(qū)動電路418傳送的包的數(shù)量能夠較少電源消耗又如另一個例子,在實施例中,當(dāng)總線接口單元204(圖2)采用標(biāo)簽去跟蹤那些響應(yīng)沒有被接收到的請求包的時候,合并請求到較少量的包中能夠減少需要被跟蹤的標(biāo)簽的數(shù)目。
當(dāng)根據(jù)特定實施例對發(fā)明進行描述的時候,本領(lǐng)域的普通技術(shù)人員將認(rèn)識到各種修改都是可能的。例如,組合請求不被限制在PCI-E總線協(xié)議上;這里所描述的技術(shù)可以適應(yīng)于任何總線,設(shè)備通過它利用包傳送讀和/或?qū)懻埱?。本發(fā)明也可以運用到不同的計算機系統(tǒng)(包括服務(wù)器和客戶機系統(tǒng),發(fā)送和/或接收數(shù)據(jù)的手持或者移動設(shè)備等等)之間的通信中,其中系統(tǒng)通過網(wǎng)絡(luò)中的包的交換進行相互的通信。
在一些實施例中,能夠基于總線行為的水平來啟動或者停止合并。例如,圖4的發(fā)送控制邏輯塊424和/或430可以被配置,以便于在總線行為低于閾值的時候,每當(dāng)接收到一個請求就會出現(xiàn)一個發(fā)送條件。這減少了由于等待確定第一請求是否能夠與后續(xù)請求相合并所導(dǎo)致的發(fā)送器的延遲。當(dāng)總線行為高于閾值的時候,其它發(fā)送條件可以被測試,例如,如上面所描述的那樣。有利地,設(shè)置臨界的總線行為水平,以便于當(dāng)總線足夠忙以致于在傳輸請求到總線上和/或通過總線接收對請求的響應(yīng)的過程中期待一些延遲的時候,啟動合并。
進一步地,雖然前面所描述的實施例與GPU有關(guān),但是本發(fā)明并不局限于GPU或者集成處理器。具有總線接口的管理來自多個客戶請求的任何設(shè)備可以包括適當(dāng)?shù)暮喜⒄埱蟮慕M件。例如,也可以配置圖1的PCI-E開關(guān)116去合并來自于與之連接的設(shè)備的請求。
因此,盡管已經(jīng)根據(jù)特定實施例描述了發(fā)明,但是需要注意的是發(fā)明旨在覆蓋了包括在所附權(quán)利要求范圍中的所有修改和等同替換。
權(quán)利要求
1.一種用于在總線上以包的形式傳送來自多個客戶的數(shù)據(jù)傳輸請求的總線接口設(shè)備,該設(shè)備包括被配置為存儲來自多個客戶的多個數(shù)據(jù)傳輸請求的隊列,每個數(shù)據(jù)傳輸請求指定一個目標(biāo)地址范圍;被配置為從所述隊列中的至少一個數(shù)據(jù)傳輸請求中形成包的組合器邏輯,在所述隊列中的兩個或者多個要被組合的數(shù)據(jù)傳輸請求指定了各自可合并的目標(biāo)地址范圍的情況下,該組合器邏輯進一步地被配置為組合所述兩個或者多個數(shù)據(jù)傳輸請求到一個包中;和被配置為驅(qū)動包到總線上的輸出邏輯。
2.如權(quán)利要求1所述的總線接口設(shè)備,其中由兩個或者多個數(shù)據(jù)傳輸請求所指定的各自的目標(biāo)地址范圍在各目標(biāo)地址范圍是連續(xù)的情況下是可合并的。
3.如權(quán)利要求1所述的總線接口設(shè)備,其中由兩個或者多個數(shù)據(jù)傳輸請求所指定的各目標(biāo)地址范圍在各自的目標(biāo)地址范圍是連續(xù)的或者各自的目標(biāo)地址范圍至少是部分重疊的情況下是可合并的。
4.如權(quán)利要求2所述的總線接口設(shè)備,其中每個數(shù)據(jù)傳輸請求進一步指定目標(biāo)設(shè)備,并且其中由兩個或者多個數(shù)據(jù)傳輸請求所指定的各自的目標(biāo)地址范圍在兩個或者多個數(shù)據(jù)傳輸請求中的每一個指定相同的目標(biāo)設(shè)備并且各自的目標(biāo)地址范圍是連續(xù)的情況下,是可合并的。
5.如權(quán)利要求1所述的總線接口單元,其中組合器邏輯包括合并邏輯,被配置為檢測隊列中的任意數(shù)據(jù)傳輸請求是否可與隊列中最早的數(shù)據(jù)傳輸請求合并,并且至少部分基于所述檢測產(chǎn)生狀態(tài)信息;和被配置為確定在當(dāng)前循環(huán)中是否傳送一個包或者等待后續(xù)循環(huán)的發(fā)送控制邏輯,其中是否傳送包的決定是至少部分基于由合并邏輯所產(chǎn)生的狀態(tài)信息。
6.如權(quán)利要求5所述的總線接口設(shè)備,其中發(fā)送控制邏輯進一步被配置,使得是否傳送包的決定是至少部分基于隊列中數(shù)據(jù)傳輸請求的數(shù)目而做出的。
7.如權(quán)利要求5所述的總線接口設(shè)備,其中發(fā)送控制邏輯進一步被配置,使得是否傳送包的決定是至少部分基于自發(fā)送先前的包開始所耗費的時間。
8.如權(quán)利要求5所述的總線接口設(shè)備,其中發(fā)送控制邏輯進一步被配置,使得是否傳送包的決定是至少部分基于自接收到隊列中最早數(shù)據(jù)請求開始所耗費的時間。
9.如權(quán)利要求5所述的總線接口設(shè)備,其中發(fā)送控制邏輯進一步被配置,使得是否傳送包的決定是至少部分基于隊列中可與隊列中最早數(shù)據(jù)傳輸請求相合并的數(shù)據(jù)傳輸請求的數(shù)目。
10.如權(quán)利要求1所述的總線接口設(shè)備,其中客戶是處理器的處理核心。
11.如權(quán)利要求1所述的總線接口設(shè)備,其中每個客戶是一個分立的組件,并且為總線接口設(shè)備配置特定的局部總線線路將客戶彼此連接。
12.如權(quán)利要求1所述的總線接口設(shè)備,其中采取適合總線上傳輸?shù)陌问浇邮諗?shù)據(jù)傳輸請求。
13.如權(quán)利要求1所述的總線接口設(shè)備,其中采取與適合總線上傳輸?shù)陌问剿煌膬?nèi)部格式接收數(shù)據(jù)傳輸請求。
14.如權(quán)利要求1所述的總線接口設(shè)備,其中每個數(shù)據(jù)傳輸請求是讀請求。
15.如權(quán)利要求1所述的總線接口設(shè)備,其中每個數(shù)據(jù)傳輸請求是寫請求。
16.如權(quán)利要求1所述的總線接口設(shè)備,其中總線是PCI Express(PCI-E)總線。
17.一種用于在總線上以包的形式傳輸來自多個客戶的數(shù)據(jù)傳輸請求的方法,所述方法包括接收指定第一地址范圍的第一數(shù)據(jù)傳輸請求;接收至少一個后續(xù)數(shù)據(jù)傳輸請求,每個后續(xù)數(shù)據(jù)傳輸請求指定各自的目標(biāo)地址范圍;確定第一目標(biāo)地址范圍是否可與一個或者多個后續(xù)數(shù)據(jù)傳輸請求的目標(biāo)地址范圍相合并;形成用于總線上傳輸?shù)陌?,其中在第一目?biāo)地址范圍可與一個或者多個后續(xù)數(shù)據(jù)傳輸請求所限定的目標(biāo)地址范圍相合并的情況下,從第一請求和一個或者多個后續(xù)數(shù)據(jù)傳輸請求中形成包,和其中,在第一目標(biāo)地址范圍不能夠與任意后續(xù)請求的目標(biāo)地址范圍相合并的情況下,從第一請求形成包;和驅(qū)動包到總線上。
18.如權(quán)利要求17所述的方法,其中在第一目標(biāo)地址范圍和第二目標(biāo)地址范圍是連續(xù)的情況下,第一目標(biāo)地址范圍可與后續(xù)數(shù)據(jù)傳輸請求的第二目標(biāo)地址范圍相合并。
19.如權(quán)利要求18所述的方法,其中每個第一和后續(xù)數(shù)據(jù)傳輸請求進一步指定一個目標(biāo)設(shè)備,并且其中,在第一數(shù)據(jù)傳輸請求和后續(xù)數(shù)據(jù)傳輸請求指定相同目標(biāo)設(shè)備和第一目標(biāo)地址范圍與第二目標(biāo)地址范圍是連續(xù)的情況下,第一目標(biāo)地址范圍可與第二目標(biāo)地址范圍相合并。
20.如權(quán)利要求17所述的方法,其中響應(yīng)于發(fā)送條件執(zhí)行形成包的動作,該發(fā)送條件至少部分基于已經(jīng)接收到的數(shù)據(jù)傳輸請求的數(shù)目。
21.如權(quán)利要求17所述的方法,其中響應(yīng)于發(fā)送條件執(zhí)行形成包的動作,該發(fā)送條件至少部分基于自發(fā)送先前的包開始所耗費的時間。
22.如權(quán)利要求17所述的方法,其中響應(yīng)于發(fā)送條件執(zhí)行形成包的動作,該發(fā)送條件至少部分基于自接收到第一數(shù)據(jù)傳輸請求開始所耗費的時間。
23.如權(quán)利要求17所述的方法,其中響應(yīng)于發(fā)送條件執(zhí)行形成包的動作,該發(fā)送條件至少部分基于可與第一數(shù)據(jù)傳輸請求相合并的后續(xù)數(shù)據(jù)傳輸請求的數(shù)目。
24.一個處理器,包括多個處理核心,每一個處理核心被配置為產(chǎn)生數(shù)據(jù)傳輸請求;和被配置為接收來自處理核心的數(shù)據(jù)傳輸請求并且在總線上以包的形式傳送數(shù)據(jù)傳輸請求的總線接口單元,該總線接口單元包括被配置為存儲來自多個處理核心的數(shù)據(jù)傳輸請求的隊列,每個數(shù)據(jù)傳輸請求指定一個目標(biāo)地址范圍;被配置為從隊列中的至少一個數(shù)據(jù)傳輸請求中形成包的組合器邏輯,在隊列中兩個或者多個要被組合的數(shù)據(jù)傳輸請求指定了可合并的各自目標(biāo)地址范圍的情況下,該組合器邏輯進一步地被配置為組合所述兩個或者多個數(shù)據(jù)傳輸請求到一個包中;和被配置為驅(qū)動包到總線上的輸出邏輯。
全文摘要
可以合并多個數(shù)據(jù)傳輸請求,并且在諸如PCIExpress(PCI-E)總線的包化總線上將其作為單一的包進行傳送。在一個實施例中,如果請求被指向同一目標(biāo)設(shè)備中的連續(xù)的地址范圍,那么請求被合并。有利地,采用優(yōu)選的合并過程,即如果第一請求和后續(xù)請求是可合并的并且在一定的時間段里被接收,則將第一請求和后續(xù)請求相合并;否則,請求能夠被傳送而不用進行合并。
文檔編號H04L29/06GK1904868SQ20061015346
公開日2007年1月31日 申請日期2006年7月11日 優(yōu)先權(quán)日2005年7月11日
發(fā)明者W·P·楚, C·S·卡斯, A·K·考爾, M·曼道爾 申請人:商輝達(dá)股份有限公司