專利名稱:管理分離總線上總線代理之間的數(shù)據(jù)流的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及在多個(gè)相互連接的總線代理之間管理數(shù)據(jù)流,更具體地說,涉及一種保持高速緩存一致的分離總線。
背景技術(shù):
電腦芯片可包括多個(gè)計(jì)算核心、存儲器或處理器,并且這些元件在執(zhí)行任務(wù)的同時(shí),相互之間可以通信。在某些電腦芯片中,各個(gè)電腦核心元件可包含有高速緩存(cache)以緩沖與存儲器的數(shù)據(jù)通信。如果存儲器為各電腦核心之間共享的存儲器,則各個(gè)核心高速緩存中的數(shù)據(jù)可與其它核心高速緩存以及與該共享存儲器保持一致。
高速緩存核心之間的這種一致性(coherence)可通過將通信元件連接進(jìn)共享的總線結(jié)構(gòu)中來維持,在這種共享總線結(jié)構(gòu)中,共享總線包括有將一個(gè)高速緩存中任何內(nèi)容的改變傳輸給其它高速緩存的內(nèi)容的協(xié)議。然而,這種共享總線在與連接至該總線的代理之間的傳輸信息的速度通常受到總線電力負(fù)荷的限制,并且這個(gè)限制隨著加入該共享總線的代理更多會(huì)變得更嚴(yán)重。隨著處理器速度的增加以及共享元件數(shù)量的增加,總線上通信速率的限制會(huì)給芯片總體處理速度帶來不必要的約束。
發(fā)明內(nèi)容
一方面,提供一種管理耦合至相關(guān)第一總線段(bus segment)的第一總線代理(bus agent)和耦合至與第一總線段分開的相關(guān)第二總線段的第二總線代理之間的數(shù)據(jù)流的方法。所述方法包括產(chǎn)生共用時(shí)鐘信號;觸發(fā)第一總線代理和第二總線代理向其相關(guān)的總線段寫消息;將寫入第一總線段的消息傳輸至第二總線段;以及,將寫入第二總線段的消息傳輸至第一總線段。第一總線段上的消息被讀入第一總線代理,第二總線段上的消息被讀入第二總線代理。讀入第一和第二總線代理的消息以同樣的順序進(jìn)行處理。
本發(fā)明的實(shí)現(xiàn)方式可包括一個(gè)或多個(gè)以下特征。例如,觸發(fā)第一總線代理和第二總線代理寫消息可在時(shí)鐘信號的第一奇偶周期發(fā)生,以及,將寫入第一總線段的消息傳輸至第二總線段和將寫入第二總線段的消息傳輸至第一總線段可在時(shí)鐘信號的第二奇偶周期發(fā)生。將第一或第二總線段上的消息讀入與第一或第二總線段相關(guān)的總線代理可包括,將與第一或第二總線段相關(guān)的總線代理寫的消息接收入第一隊(duì)列,以及將與第一或第二總線段相關(guān)的總線代理寫的消息接收入第二隊(duì)列。消息可在時(shí)鐘信號的交替周期內(nèi)從所述第一和第二隊(duì)列讀出。
觸發(fā)第一總線代理寫消息可發(fā)生在時(shí)鐘信號的第一奇偶周期中,觸發(fā)第二總線代理寫消息可發(fā)生在時(shí)鐘信號的第二奇偶周期中。消息寫入和傳輸至第一總線段的順序可以進(jìn)行仲裁。當(dāng)正傳輸消息給第一總線段時(shí),如果在相同時(shí)鐘周期內(nèi)第一總線代理被觸發(fā)為寫消息給第一總線段,那么傳輸給第一總線段的消息可放在第一總線段上。
在第一總線代理被觸發(fā)寫消息至第一總線段的時(shí)鐘信號周期之后的時(shí)鐘信號周期內(nèi),消息可從第一總線段傳輸至第二總線段。至少一個(gè)第一總線代理和至少一個(gè)第二總線代理包括處理器和本地高速緩存,并且總線代理可位于片上系統(tǒng)中。
另一方面,本發(fā)明提出一種系統(tǒng),包括第一總線段和第二總線段。所述第一總線段耦合至一個(gè)或多個(gè)第一總線代理,其中所述第一總線代理被配置為寫消息給第一總線段以及從第一總線段和第二總線段讀取消息,所述第二總線段與所述第一總線段分開且耦合至一個(gè)或多個(gè)第二總線代理。所述第一總線代理被配置為寫消息給第一總線段以及從第一總線段讀取消息。所述系統(tǒng)還包括第一電路,所述第一電路耦合至所述第一總線段和第二總線段,被設(shè)置為讀取寫在第一總線段上的消息以及寫消息給第二總線段;所述系統(tǒng)還包括第二電路,所述第二電路耦合至所述第一總線段和第二總線段,并被設(shè)置為讀取寫在第二總線段上的消息以及寫消息給第一總線段。
本發(fā)明所述系統(tǒng)的各個(gè)實(shí)施例可包括一個(gè)或多個(gè)以下特征。所述系統(tǒng)可位于片上系統(tǒng)中。每個(gè)總線代理可包括處理器和本地高速緩存。所述系統(tǒng)可包括有主存儲器,所述主存儲器耦合至所述第一總線段和第二總線段。所述第一和第二總線代理可配置為在交替的時(shí)鐘周期內(nèi)寫消息。
所述系統(tǒng)還包括第一仲裁器,所述第一仲裁器耦合至所述第一總線代理和第一總線段,其中所述第一仲裁器被設(shè)置為用于確定消息寫入所述第一總線段的順序;所述系統(tǒng)還包括第二仲裁器,所述第二仲裁器耦合至所述第二總線代理和第二總線段,其中所述第二仲裁器被設(shè)置為用于確定消息寫入所述第總線段的順序。
所述第一總線代理包括有用于接收所述第一總線代理所寫的消息的偶數(shù)隊(duì)列,以及用于接收所述第二電路所寫的消息的奇數(shù)隊(duì)列。所述第二總線代理包括有用于接收所述第二總線代理所寫的消息的奇數(shù)隊(duì)列,以及用于接收所述第一電路所寫的消息的偶數(shù)隊(duì)列。所述第一和第二總線段包括用于在交替時(shí)鐘周期內(nèi)從所述奇數(shù)和偶數(shù)隊(duì)列輸出消息的電路。所述第一總線代理每個(gè)均包括有用于以處理順序放置從所述第一總線段讀取的消息的電路,所述第二總線代理每個(gè)均包括有用于以處理順序放置從所述第二總線段讀取的消息的電路。所述第一和第二總線段的長度一致,誤差在10%以內(nèi)。
根據(jù)本發(fā)明的一個(gè)方面,提供一種管理耦合至相關(guān)第一總線段的第一總線代理和耦合至與第一總線段分開的相關(guān)第二總線段的第二總線代理之間的數(shù)據(jù)流的方法,所述方法包括產(chǎn)生共用時(shí)鐘信號;觸發(fā)第一總線代理和第二總線代理向其相關(guān)的總線段寫消息入;將寫入第一總線段的消息傳輸至第二總線段;將寫入第二總線段的消息傳輸至第一總線段;將第一總線段上的消息讀入第一總線代理;將第二總線段上的消息讀入第二總線代理;以及以同樣的順序處理讀入第一和第二總線代理的消息。
優(yōu)選地,觸發(fā)第一總線代理和第二總線代理寫消息發(fā)生在時(shí)鐘信號的第一奇偶周期,并且,將寫入第一總線段的消息傳輸至第二總線段和將寫入第二總線段的消息傳輸至第一總線段發(fā)生在時(shí)鐘信號的第二奇偶周期。
優(yōu)選地,將第一或第二總線段上的消息讀入與第一或第二總線段相關(guān)的總線代理包括將與第一或第二總線段相關(guān)的總線代理寫的消息接收入第一隊(duì)列;將與第一或第二總線段相關(guān)的總線代理寫的消息接收入第二隊(duì)列。
優(yōu)選地,消息在時(shí)鐘信號的交替周期內(nèi)接收入所述第一和第二隊(duì)列。
優(yōu)選地,所述方法進(jìn)一步包括在時(shí)鐘信號的交替周期內(nèi)從所述第一和第二隊(duì)列讀出消息。
優(yōu)選地,觸發(fā)第一總線代理寫消息發(fā)生在時(shí)鐘信號的第一奇偶周期中,觸發(fā)第二總線代理寫消息發(fā)生在時(shí)鐘信號的第二奇偶周期中。
優(yōu)選地,所述方法進(jìn)一步包括對消息寫入和傳輸至第一總線段的順序進(jìn)行仲裁。
優(yōu)選地,當(dāng)正傳輸消息給第一總線段時(shí),如果在相同時(shí)鐘周期內(nèi)第一總線代理被觸發(fā)為寫消息給第一總線段,那么將傳輸給第一總線段的消息放在第一總線段上。
優(yōu)選地,在第一總線代理被觸發(fā)寫消息至第一總線段的時(shí)鐘信號周期之后的時(shí)鐘信號周期內(nèi),消息從第一總線段傳輸至第二總線段。
優(yōu)選地,至少一個(gè)第一總線代理和至少一個(gè)第二總線代理包括處理器和本地高速緩存。
優(yōu)選地,所述總線代理位于片上系統(tǒng)中。
根據(jù)本發(fā)明的一個(gè)方面,提出一種系統(tǒng),包括耦合至一個(gè)或多個(gè)第一總線代理的第一總線段,其中所述第一總線代理被配置為寫消息給第一總線段以及從第一總線段讀取消息;與所述第一總線段分開且耦合至一個(gè)或多個(gè)第二總線代理的第二總線段,其中所述第二總線代理被配置為寫消息給第二總線段以及從第二總線段讀取消息;耦合至所述第一總線段和第二總線段的第一電路,所述第一電路被設(shè)置為讀取寫在第一總線段上的消息以及將所述消息寫入第二總線段;耦合至所述第一總線段和第二總線段的第二電路,所述第二電路被設(shè)置為讀取寫在第二總線段上的消息以及將所述消息寫入第一總線段。
優(yōu)選地,所述系統(tǒng)位于片上系統(tǒng)中。
優(yōu)選地,每個(gè)總線代理包括處理器和本地高速緩存。
優(yōu)選地,所述系統(tǒng)進(jìn)一步包括主存儲器,所述主存儲器耦合至所述第一總線段和第二總線段。
優(yōu)選地,所述第一和第二總線代理被設(shè)置為在交替的時(shí)鐘周期內(nèi)寫消息。
優(yōu)選地,所述系統(tǒng)進(jìn)一步包括第一仲裁器,所述第一仲裁器耦合至所述第一總線代理和第一總線段,其中所述第一仲裁器被設(shè)置為用于確定消息寫入所述第一總線段的順序;第二仲裁器,所述第二仲裁器耦合至所述第二總線代理和第二總線段,其中所述第二仲裁器被設(shè)置為用于確定消息寫入所述第二總線段的順序。
優(yōu)選地,所述第一總線代理包括有用于接收所述第一總線代理所寫的消息的偶數(shù)隊(duì)列,以及用于接收所述第二電路所寫的消息的奇數(shù)隊(duì)列;所述第二總線代理包括有用于接收所述第二總線代理所寫的消息的奇數(shù)隊(duì)列,以及用于接收所述第一電路所寫的消息的偶數(shù)隊(duì)列;所述第一和第二總線段包括用于在交替時(shí)鐘周期內(nèi)從所述奇數(shù)和偶數(shù)隊(duì)列輸出消息的電路。
優(yōu)選地,所述第一總線代理每個(gè)均包括有用于以處理順序放置從所述第一總線段讀取的消息的電路,所述第二總線代理每個(gè)均包括有用于以處理順序放置從所述第二總線段讀取的消息的電路。
優(yōu)選地,所述第一和第二總線段的長度一致,誤差在10%以內(nèi)。
本發(fā)明的各種優(yōu)點(diǎn)、各個(gè)方面和創(chuàng)新特征,以及其中所示例的實(shí)施例的細(xì)節(jié),將在以下的說明書和附圖中進(jìn)行詳細(xì)介紹。
下面將結(jié)合附圖及實(shí)施例對本發(fā)明作進(jìn)一步說明,附圖中圖1是本發(fā)明位于一個(gè)具有多個(gè)通過總線連接的處理器的集成電路上的系統(tǒng)的邏輯框圖;圖2是本發(fā)明共享總線實(shí)施例的框圖;圖3是本發(fā)明另一共享總線實(shí)施例的框圖;圖4是本發(fā)明位于一個(gè)具有多個(gè)通過分離總線(split bus)連接的處理器的集成電路上的系統(tǒng)的邏輯框圖;圖5是本發(fā)明用于分離總線的時(shí)鐘信號的示意圖;圖6是本發(fā)明使用分離總線時(shí)的總線接口的框圖;圖7是本發(fā)明在分離總線上管理數(shù)據(jù)流的方法的流程圖。
具體實(shí)施例方式
圖1是片上多核心系統(tǒng)(SOC)的邏輯框圖。芯片100包括4個(gè)處理元件102、104、106和108。每個(gè)處理元件可以是中央處理器(CPU)核心、數(shù)字信號處理器(DSP)或其它數(shù)據(jù)處理模塊。各個(gè)處理元件102、104、106和108可以是相同的或不同的。例如,所有處理元件102、104、106和108可以都是DSP,或者一個(gè)是標(biāo)準(zhǔn)CPU核心,其它的是專用DSP核心。
處理元件102、104、106和108連接至存儲器控制器110,控制對主存儲器112(例如,高速隨機(jī)訪問存儲器(RAM))的訪問。處理元件102、104、106和108還連接至輸入/輸出(I/O)處理器114,管理該處理元件和外部設(shè)備之間的輸入和輸出操作。例如,I/O處理器114可處理處理元件102、104、106和108與外部磁盤驅(qū)動(dòng)器之間的通信。
每個(gè)處理元件102、104、106和108可分別與高速緩存元件116、118、120和122相關(guān)聯(lián),該高速緩存用于緩沖與主存儲器112的數(shù)據(jù)交換。高速緩存組件116、118、120和122通常與處理元件102、104、106和108一起使用,因?yàn)樘幚碓?02、104、106和108的處理速度通常遠(yuǎn)遠(yuǎn)大于訪問主存儲器112的速度。通過高速緩存元件116、118、120和122,數(shù)據(jù)可從存儲器112以數(shù)據(jù)塊的形式獲得并暫時(shí)以可以快速訪問的格式存儲于高速緩存元件116、118、120和122中,該高速緩存的位置接近相關(guān)的處理元件102、104、106和108。然后,處理元件102、104、106和108可從其各自相關(guān)聯(lián)的高速緩存元件116、118、120和122訪問數(shù)據(jù),速度比從主存儲器112訪問數(shù)據(jù)的速度快得多。
處理元件102、104、106和108、高速緩存元件116、118、120和122與主存儲器112之間的通信一般通過共享總線完成,該共享總線包括地址和命令總線124以及數(shù)據(jù)總線126。盡管地址和命令總線124以及數(shù)據(jù)總線126在圖中單獨(dú)示出,在某些實(shí)施例中,它們可以合并為一條物理總線。無論該共享總線是否實(shí)現(xiàn)為雙總線或單總線,都可以使用一套協(xié)議來管理連接至該總線的各個(gè)元件102-122(即總線代理)如何使用該總線在各個(gè)元件之間通信。
在許多情況下,在芯片100的操作過程中,處理器102、104、106和108處理相同的數(shù)據(jù),在這種情況下,從主存儲器112獲得并存儲在與處理元件102相關(guān)的本地高速緩存元件116中的數(shù)據(jù)的副本必須與存儲在與所有其它處理元件104、106和108相關(guān)的本地高速緩存118、120和122中的副本一致。因此,如果一個(gè)處理元件修改了存儲于其本地高速緩存中的數(shù)據(jù),這個(gè)修改必須擴(kuò)展至與其它處理元件相關(guān)的高速緩存,這樣的話,所有處理元件將繼續(xù)對相同的數(shù)據(jù)進(jìn)行操作。因?yàn)檫@種總線代理間的高速緩存一致性的需要,建立了協(xié)議來確保某個(gè)總線代理對其相關(guān)的高速緩存中存儲的本地存儲的數(shù)據(jù)作出的修改可以傳輸至所有與其它連接至該總線的總線代理相關(guān)的高速緩存。
圖2是本發(fā)明用于維持多個(gè)總線代理之間的高速緩存一致性的共享總線實(shí)施例200的框圖。該共享總線包括4個(gè)總線“主”元件202、204、206和208(例如,對應(yīng)每個(gè)高速緩存116、118、120和122的高速緩存控制器)、多路復(fù)用器212和仲裁器210,以及4個(gè)“從屬”元件214、216、218和220。如果總線主元件需要在總線上傳輸消息(例如,一個(gè)改變存儲在總線代理的本地高速緩存中的數(shù)據(jù)的命令),該總線主元件發(fā)送輸入消息給多路復(fù)用器212,并還發(fā)送請求信號至控制多路復(fù)用器212的總線仲裁器210。多路復(fù)用器212可從主元件202、204、206和208以特定的順序接收輸入消息,然后多路復(fù)用器212可以特定的順序輸出該消息至從屬元件214、216、218和220,輸出的順序不需要與從主元件接收消息的順序相同。仲裁器210通過多路復(fù)用器212控制在特定時(shí)間將哪一個(gè)總線主元件的信號放在總線上。如果多路復(fù)用器212接收到不止一個(gè)訪問總線的請求,仲裁器210決定處理該請求的順序,并且,多路復(fù)用器212的輸出被發(fā)送至一個(gè)或多個(gè)總線從屬元件214、216、218和220,這些從屬元件可以是分離的元件,或者是總線主元件202、204、206和208之一的接收側(cè)的一部分。
圖2中展示的共享總線200可用于電腦系統(tǒng),例如,控制用于許多個(gè)人電腦中的周邊元件擴(kuò)展接口(PCI)總線。然而,因?yàn)榭偩€仲裁器需要相關(guān)的復(fù)雜邏輯,這種總線仲裁器系統(tǒng)運(yùn)行速度低,因此通常并不用作SOC類型的芯片的一部分。
如圖3所示,另一個(gè)共享總線架構(gòu)300可用于以相當(dāng)高的速度操作總線。共享總線控制器架構(gòu)300可包括微分信號系統(tǒng),使用兩條總線線路(bus line)302和304在總線代理310、312、314和316之間傳輸消息??偩€線路302和304由電路元件306(例如,電池或電容)預(yù)充電,以確保兩條總線線路302和304充電至預(yù)定義的初始狀態(tài)。連接至總線線路302和304的每個(gè)總線代理310、312、314和316可具有兩個(gè)電路元件連接至總線驅(qū)動(dòng)器322,用于放置信號在總線線路302和304上;讀出放大器320,用于檢測總線上的信號。盡管圖3中只示出了一對總線線路302和304,其它實(shí)施例可使用較大數(shù)量的并聯(lián)總線線路(例如,32、64或128對總線線路,甚至更多),以實(shí)現(xiàn)總線代理310、312、314和316之間的高數(shù)據(jù)傳輸率。
如果總線代理310需要傳輸消息至總線上的其它總線代理312、314和316,總線代理310激活它的驅(qū)動(dòng)器322,改變線路302和304上的充電狀態(tài),例如,通過提取出線路302和304的電荷,因此使一個(gè)電壓脈沖經(jīng)過所述總線線路。其它總線代理312、314和316使用其讀出放大器電路320感測狀態(tài)的改變??偩€代理310、312、314和316之間的通信通常通過將用于識別發(fā)送方總線代理310以及可能將要接收消息的總線代理312、314和316的信息包含在置于總線上的消息中來實(shí)現(xiàn)。用于確保每次僅一個(gè)總線代理310、312、314和316能夠在總線線路302和304上放消息的復(fù)雜邏輯和用于處理放在總線線路302和304上的信息的邏輯元件未在圖3中示出。
在典型的集成電路實(shí)施例中,盡管信息可在總線線路302和304上高速地傳輸,但總線的速度還是受到總線電力負(fù)載的限制。特別是,隨著總線線路302和304變長,組成總線的線纜的電阻R會(huì)增加。此外,隨著總線線路302和304的長度增加,與所在環(huán)境相關(guān)的總線線路的電容C也會(huì)增加。因此,總線的RC時(shí)間常量隨著總線的長度增加而增加,這限制了總線上傳輸消息的速度。實(shí)際上,總線的RC時(shí)間常量通常與總線長度的平方成比例增加。隨著更多的代理加入總線,同時(shí)總線變得更長,這一速度限制可限制總線的總體運(yùn)行速度。在一個(gè)芯片上(例如,在SOC配置中)放置不止一個(gè)的處理核心以及通過共用總線連接該核心的趨勢進(jìn)一步強(qiáng)調(diào)克服或減輕因總線上處理代理的數(shù)量的增加造成的電載荷增加導(dǎo)致的總線速度限制。
參照圖4,用于在多個(gè)總線代理之間傳輸消息的共用總線400被分割成兩個(gè)總線段402和404,用于降低總線上的有效電力負(fù)載,從而增加總線運(yùn)行速度。預(yù)充電單元406可連接至總線段402,并且該預(yù)充電單元可用于對總線段402充電。在一個(gè)實(shí)施例中,一旦總線段被充電,可在總線代理410的處理單元414和另一個(gè)總線代理420的處理單元424之間傳輸消息,其中總線代理410和420均連接至總線段402。處理單元414和424分別通過總線接口單元(BIU)412和422連接至總線段402。同樣,在另一總線段404上,預(yù)充電單元408可連接至總線段404,并且該預(yù)充電單元可用于對總線段404充電。一旦總線段404被充電,可在連接至總線段404的總線代理430和440之間傳輸消息。總線代理430和440的處理單元434和444可分別通過總線接口單元(BIU)432和442連接至總線段404。
讀出放大器426中的電路可連接至總線段402,并可驅(qū)動(dòng)與總線段404連接的驅(qū)動(dòng)器438中的電路,讀出放大器436中的電路和驅(qū)動(dòng)器428近似地連接總線段404至總線段402。使用連接的一對讀出放大器426和驅(qū)動(dòng)器438,由BIU 412和422放在總線段402上的消息可通過讀取放大器426感測到,并隨后由驅(qū)動(dòng)器438放在總線段404上。同樣,由BIU 432和442放在總線段404上的信息可由讀取放大器436感測到,并隨后由驅(qū)動(dòng)器428放在總線段402上。以此,讀取放大器426和驅(qū)動(dòng)器438的組合可將總線段402上的信息傳遞至總線段404,而讀取放大器436和428的組合可將總線段404上的信息傳遞至總線段402。以這種方式,無論總線代理410、420、430和440是否連接至總線段402或404,這些總線代理410、420、430和440可相互通信。總線代理410和420以及驅(qū)動(dòng)器428可耦合至仲裁器427,仲裁器427解決兩個(gè)總線代理之間或總線代理與連接至總線段402的驅(qū)動(dòng)器之間在同一個(gè)時(shí)鐘周期中嘗試寫信息至總線段時(shí)所產(chǎn)生的沖突。在出現(xiàn)所述沖突的情況下,仲裁器427確定總線代理410或420或驅(qū)動(dòng)器428中的哪一個(gè)寫總線段402。同樣,仲裁器437解決總線代理430和440以及驅(qū)動(dòng)器438之間的沖突。總線段402和404可包括有一條或多條并聯(lián)設(shè)置的線路(例如,32、64或128對總線電路,甚至更多),以實(shí)現(xiàn)連接至總線段402和404的總線代理410、420、430和440之間的高數(shù)據(jù)傳輸速率。
總線段402和404可以是等長的總線段或長度不同。在總線段402和404的長度一致的情況中,每個(gè)總線段402和404的時(shí)鐘可以是長度等于每個(gè)總線段402或404的長度的兩倍的總線段的最大速率的四倍,這是因?yàn)榭偩€或總線段的限制RC時(shí)間常量與總線或總線段的長度的平方成正比,所以該總線長度可以使RC時(shí)間常量縮小4倍。由于通過BIU 412、422、432和442對總線的加載,實(shí)際改進(jìn)可能小于4倍,因?yàn)槊總€(gè)BIU增加一定量的電阻和電容至總線段自身的分布電阻和電容。然而,盡管有BIU的電阻和電容性的加載,每個(gè)總線段402和404的時(shí)鐘比長度是總線段402或404的長度的兩倍的總線要快,這可使得在最差情況下的總線帶寬至少等于長度是總線段402或404的長度的兩倍的較長總線的帶寬,并且,在大多數(shù)情況中,可以總線帶寬可高于兩倍。
盡管圖4中展示的兩個(gè)總線段可實(shí)現(xiàn)組合的分離總線400的比使用單個(gè)長總線較快的時(shí)鐘,還需要采用附加的步驟來維持該總線的兩個(gè)總線段上的總線代理410、420、430和440之間的高速緩存一致性。因?yàn)樵谟糜趶目偩€段402傳輸消息至總線段404的讀出放大器驅(qū)動(dòng)器元件426和438中以及用于從總線段404傳輸消息至總線段402的讀出放大器驅(qū)動(dòng)器元件436和428中有傳播延遲,總線段402上的總線代理422或424接收到的消息的順序與總線段404上的總線代理442或444接收到的消息的順序不會(huì)必然相同。因此,為了維持連接至分離總線400的兩個(gè)總線段的所有總線代理之間的高速緩存一致性,BIU 412、422、432和442可具有附加的處理能力以確??偩€代理之間的高速緩存一致性。
圖5展示了可能是用于確保分離總線400上高速緩存一致性的協(xié)議的一部分的時(shí)鐘信號設(shè)置示意圖。CLOCK信號500可分成完整的時(shí)鐘周期,從低電平到高電平,再回到低電平。所述時(shí)鐘周期的可以是奇數(shù)的或偶數(shù)的,其奇偶性在CLOCK信號500的連續(xù)周期之間交替。因此,時(shí)鐘周期502是奇數(shù)的,時(shí)鐘周期503是偶數(shù)的。CLOCK信號500也可用于產(chǎn)生半速CLOCK2信號510,用于標(biāo)識時(shí)鐘信號500的奇數(shù)和偶數(shù)周期。例如,半速CLOCK2信號510在高電平狀態(tài)可表示CLCOK信號500處于奇數(shù)周期,而CLOCK2信號510在低電平狀態(tài)可表示CLOCK信號500處于偶數(shù)周期。圖5展示的組合的時(shí)鐘信號可用于通信規(guī)范中以確保分離總線的兩半總線段上的總線代理之間的高速緩存一致性。
在一個(gè)實(shí)施例中,BIU 412、422、432和442寫消息至總線段402和404發(fā)生在時(shí)鐘信號500的奇數(shù)周期502內(nèi)。隨后在時(shí)鐘信號500的偶數(shù)時(shí)鐘周期503內(nèi),讀取放大器426和驅(qū)動(dòng)器438從總線段402傳播消息至總線段404,讀取放大器428和驅(qū)動(dòng)器436從總線段404傳播消息至總線段402。因此,在奇數(shù)周期內(nèi),連接至同一總線段的BIU相互間傳輸消息,而在偶數(shù)周期內(nèi),一個(gè)總線段上的BIU接收由連接至其它總線段的BIU所寫的消息。在這種情況中,總線的使用率相當(dāng)?shù)停驗(yàn)榭偩€帶寬的一半被保留下來,以用于驅(qū)動(dòng)器428和438在總線段之間傳送消息,這樣會(huì)出現(xiàn)空閑總線周期。然而,因?yàn)榉蛛x總線400的RC時(shí)間常量減小,總線400的總體帶寬高于一個(gè)總線時(shí)的帶寬。
在另一個(gè)實(shí)施例中,仲裁器427和437對BIU 412、422、432和442以及驅(qū)動(dòng)器428和438對總線段402和404寫消息的操作進(jìn)行調(diào)度。BIU 412、422、432和442可在CLOCK信號500的任何周期中請求寫信息至總線段402和404。然而,如果有新消息放在總線段402上,驅(qū)動(dòng)器438必須在下一個(gè)周期將該消息傳送至總線段404,并且,如果有新消息放在總線段404上,驅(qū)動(dòng)器428必須在下一個(gè)周期將該消息傳送至總線段402。這通過配置仲裁器427和437來實(shí)現(xiàn),當(dāng)解決均嘗試向其總線段寫消息的驅(qū)動(dòng)器428或438和其它總線代理之間的沖突時(shí),驅(qū)動(dòng)器428和438具有較其它代理高的優(yōu)先級。因此,如果總線代理410或420嘗試在總線段402上放消息,而在同一時(shí)鐘周期內(nèi),驅(qū)動(dòng)器428嘗試在該總線段上放置已經(jīng)被寫入到分離總線的其它總線段404上的消息,,仲裁器427將總是優(yōu)先幫助驅(qū)動(dòng)器428解決沖突。通過這種方法,總線帶寬將被最大化的使用。
圖6是用于向總線段402寫信息和從其中讀信息的BIU 600的框圖。來自與BIU 600相關(guān)的總線代理的處理單元的、將被傳輸至總線段402的消息602由BIU 600中的總線驅(qū)動(dòng)器604接收。驅(qū)動(dòng)器604具有寫使能輸入端(writeenable input)608,允許驅(qū)動(dòng)器604僅在該輸入端出現(xiàn)正數(shù)值時(shí)輸出消息給總線段。寫使能輸入端608通過從總線仲裁器接收的信號606激活,該仲裁器負(fù)責(zé)總線段402上的信息流控制。例如,如果BIU 600包含在連接至總線段402的總線代理410中,僅在沒有較高優(yōu)先級的代理或驅(qū)動(dòng)器嘗試寫消息至該總線段時(shí),信號606被激活。
CLOCK信號500、觸發(fā)器(flip-flop)648和反相器646可組合起來,用以產(chǎn)生對應(yīng)于CLOCK時(shí)鐘信號偶數(shù)周期的信號EVEN 652,并產(chǎn)生對應(yīng)于CLOCK時(shí)鐘信號奇數(shù)周期的信號ODD 644。該EVEN和ODD信號隨后用于以保持連接至總線的總線代理之間的高速緩存一致性的方式加載從總線400讀取的消息。
從總線段402接收的消息614被讀入讀取放大器612,并相應(yīng)地發(fā)送至FIFO緩存620和630的輸入端622或632。每個(gè)FIFO 620和630分別接收負(fù)載信號624和634,該負(fù)載信號用于控制輸入端622或632的消息加載入FIFO的時(shí)間,并且該負(fù)載信號允許將消息在CLOCK時(shí)鐘信號的上升沿加載入FIFO。FIFOO 620的LOAD輸入端 622由ODD信號 644驅(qū)動(dòng),并因此,在奇數(shù)時(shí)鐘周期內(nèi)寫的消息被加載入FIFOO 620。FIFOE 630的LOAD輸入端632由EVEN信號652觸發(fā),并因此,F(xiàn)IFOE加載在偶數(shù)時(shí)鐘周期內(nèi)寫的消息。
FIFOO 620還可接收由EVEN信號652驅(qū)動(dòng)的輸出使能信號626以及由ODD信號650驅(qū)動(dòng)的輸入使能信號624。FIFOE630接收由ODD信號644驅(qū)動(dòng)的輸出使能信號636和由EVEN信號652驅(qū)動(dòng)的輸入使能信號634。對于連接至總線段402的BIU,F(xiàn)IFOO 620的輸出使能信號626由EVEN信號652驅(qū)動(dòng),信號624被禁用,而FIFOE 630的輸出使能信號636由ODD信號644驅(qū)動(dòng),信號634被禁用。連接至總線段404的各個(gè)BIU將其輸出使能信號的檢測結(jié)果反向。就是說,對于連接至總線段404的BIU,F(xiàn)IFOO 620的輸出使能信號由ODD信號644驅(qū)動(dòng),F(xiàn)IFOE 630的OE輸入由EVEN信號652驅(qū)動(dòng)。通過將分離總線的每半個(gè)總線段上的BIU的FIFO的輸出使能信號檢測結(jié)果反向,可以維持該分離總線的兩半總線段上的消息的正確順序。
將FIFO的OE的檢測結(jié)果反向之后的邏輯如下。分離總線400的兩個(gè)總線段402和404僅在交替的奇偶時(shí)鐘周期內(nèi)執(zhí)行寫操作。因此,對于每個(gè)總線段402和404,如果接收的消息的奇偶性與連接至該總線段的總線代理所寫的消息的奇偶性相反,那么,接收的消息必然是由其它總線段寫入的,并且該接收的信息的寫操作必然早于當(dāng)前時(shí)鐘周期至少一個(gè)時(shí)鐘周期。因?yàn)樵摼哂邢喾吹钠媾夹缘南⒌膶懖僮鬏^早,因此需要先處理以維持高速緩存的一致性。
因?yàn)榉蛛x總線400使用的時(shí)鐘的運(yùn)行速率可以比單個(gè)總線302和304運(yùn)行的最大RC限制速率快兩倍,所以分離總線400的帶寬至少與非分離總線的速度一樣。然而,如果該時(shí)鐘以高于兩倍的速率運(yùn)行,那么帶寬相應(yīng)地更高。此外,如果,并且僅如果前半個(gè)時(shí)鐘周期沒有消息等待,則可以增加附加邏輯以允許FIFO緩存620和630讀取來自當(dāng)前半個(gè)時(shí)鐘周期的消息。就是說,對于BIU 600,如果FIFOO 620內(nèi)沒有消息,那么可即刻從FIFOE 630中讀取消息。這些消息來自其它與BIU 600連接至相同總線段的總線代理。這個(gè)邏輯的效果在于,允許半條總線上產(chǎn)生的消息以雙倍速率流至相同的半條總線上的其它代理。較高的時(shí)鐘速率和每半條總線以雙倍速率工作的組合保證了總線總體吞吐量帶寬的增加。
參照圖7,管理具有第一總線段和第二總線段的分離總線上的數(shù)據(jù)流的方法700包括步驟702,產(chǎn)生共用時(shí)鐘信號。步驟704,觸發(fā)耦合至第一和第二總線段的總線代理寫消息至相關(guān)聯(lián)的總線段,只要在相同時(shí)鐘周期內(nèi)驅(qū)動(dòng)器未傳送來自其它總線段的消息。由耦合至第一總線段的總線代理寫的消息可以由耦合至第一總線段的其它總線代理讀取,并且由耦合至第二總線段的總線代理寫的消息可由耦合至第二總線段的其它總線代理讀取。步驟706,將寫入一個(gè)總線段的消息交換至其它總線段。例如,將寫入第一總線段的消息傳輸至第二總線段,將寫入第二總線段的消息傳輸至第一總線段。在一個(gè)實(shí)施例中,在將消息寫入一個(gè)總線代理一個(gè)時(shí)鐘周期之后,將該消息從該總線段交換至其它總線段。為了避免總線代理在消息從其它總線段交換過來的同時(shí)嘗試寫信息至其相關(guān)的總線段,該交換的消息將放在總線段上,并且總線代理將等待寫信息。
步驟708,從一個(gè)總線段交換至其它總線段的消息由耦合至其它總線段的總線代理讀取,并且步驟710中,與一個(gè)總線段相關(guān)的一個(gè)總線代理寫的消息被讀入與該總線段相關(guān)的其它總線代理。在一個(gè)實(shí)施例中,與一個(gè)總線段相關(guān)的總線代理寫的消息被讀入第一隊(duì)列,而從其它總線段交換過來的消息被讀入第二隊(duì)列。例如,將消息讀入第一和第二隊(duì)列可在交替的時(shí)鐘周期內(nèi)執(zhí)行。然后,可以以預(yù)定的順序?qū)⑾牡谝缓偷诙?duì)列中讀出。因此,步驟712中,由總線代理從總線段讀取的消息在該總線代理內(nèi)進(jìn)行順序排序以便處理,并且耦合至第一和第二總線段的所有總線代理內(nèi)的消息的順序是一致的。最后,步驟714中,總線代理按照排序的順序?qū)υ撓⑦M(jìn)行處理,例如,由總線代理中的處理器和/或本地高速緩存對該消息進(jìn)行處理。
本說明書中描述的各種技術(shù)的實(shí)施例可以實(shí)現(xiàn)在數(shù)字電路、或電腦硬件、固件、軟件或其各種組合中。
方法步驟可通過一個(gè)或多個(gè)可編程處理器執(zhí)行電腦程序從而通過對輸入數(shù)據(jù)進(jìn)行操作并產(chǎn)生輸出來實(shí)現(xiàn)。方法步驟也可由專用邏輯電路實(shí)現(xiàn),設(shè)備也可以實(shí)現(xiàn)為專用邏輯電路,例如,F(xiàn)PGA或ASIC。
適于執(zhí)行電腦程序的處理器包括,例如,通用和專用微處理器、任何一種數(shù)字計(jì)算機(jī)的任何一個(gè)或多個(gè)處理器。通常,處理器從只讀存儲器和/或隨機(jī)訪問存儲器接收指令和數(shù)據(jù)。計(jì)算機(jī)的組件可包括至少一個(gè)處理器,用于執(zhí)行指令,并包括一個(gè)或多個(gè)存儲設(shè)備,用于存儲指令和數(shù)據(jù)。所述處理器和存儲器可實(shí)現(xiàn)為或結(jié)合在專用邏輯電路中。
總之,本領(lǐng)域技術(shù)人員能夠認(rèn)識到,本發(fā)明的各個(gè)方面可以獨(dú)立地和/或集成地實(shí)現(xiàn)在各種硬件、軟件、固件或上述任意組合中,由各種類型的“電路”組成。因此,本說明書中的“電路”包括但不限于具有至少一個(gè)離散電路的電路、具有至少一個(gè)集成電路的電路、具有至少一個(gè)ASIC的電路、構(gòu)成計(jì)算機(jī)程序配置的通用計(jì)算設(shè)備的電路(例如,計(jì)算機(jī)程序配置的通用計(jì)算機(jī),至少部分地執(zhí)行本說明書中描述的方法和/或設(shè)備,或者,計(jì)算機(jī)程序配置的微處理器,至少部分地執(zhí)行本說明書中描述的方法和/或設(shè)備)、組成存儲器設(shè)備的電路(例如,RAM的組件)以及組成通信設(shè)備的電路(例如,調(diào)制解調(diào)器、通信交換機(jī)或光電設(shè)備)。
本說明書的各個(gè)方面描述的不同的元件包含在或連接至不同的其它元件。能夠理解的是,所述結(jié)構(gòu)僅僅是示例性的,事實(shí)上其它可以實(shí)施的結(jié)構(gòu)也可以完成同樣的功能。理論上,任何可完成同樣的功能的元件的配置是相關(guān)聯(lián)的,以此可完成需要的功能。因此,不管結(jié)構(gòu)或中間元件如何,本說明書中任何兩個(gè)元件相結(jié)合以到達(dá)特定的功能便可認(rèn)為是相關(guān)聯(lián)的,以此完成特定的功能。同樣,任何相關(guān)聯(lián)的兩個(gè)元件也可以認(rèn)為是相互連接的或耦合的,以完成特定的功能;任何兩個(gè)能夠相關(guān)聯(lián)的元件也認(rèn)為是可相互耦合以完成需要的功能的?!翱神詈系摹钡奶囟ɡ影ǖ幌抻谖锢砩系目膳鋵?或物理上交互的元件和/或可無線交互和/或無線交互元件。
雖然以上描述了本發(fā)明的各種實(shí)施例,應(yīng)當(dāng)理解,其目的僅在于舉例說明,而沒有限制性。本領(lǐng)域的技術(shù)人員知悉,在不離開本發(fā)明的精神和范圍情況下,在形式上和細(xì)節(jié)上還可做各種的改變。因此,其它各種實(shí)施例也落入本發(fā)明的保護(hù)范圍。
權(quán)利要求
1.一種管理耦合至相關(guān)第一總線段的第一總線代理和耦合至與第一總線段分開的相關(guān)第二總線段的第二總線代理之間的數(shù)據(jù)流的方法,其特征在于,所述方法包括產(chǎn)生共用時(shí)鐘信號;觸發(fā)第一總線代理和第二總線代理向其相關(guān)的總線段寫消息入;將寫入第一總線段的消息傳輸至第二總線段;將寫入第二總線段的消息傳輸至第一總線段;將第一總線段上的消息讀入第一總線代理;將第二總線段上的消息讀入第二總線代理;以及以同樣的順序處理讀入第一和第二總線代理的消息。
2.如權(quán)利要求1所述的方法,其特征在于,觸發(fā)第一總線代理和第二總線代理寫消息發(fā)生在時(shí)鐘信號的第一奇偶周期,并且,將寫入第一總線段的消息傳輸至第二總線段和將寫入第二總線段的消息傳輸至第一總線段發(fā)生在時(shí)鐘信號的第二奇偶周期。
3.如權(quán)利要求1所述的方法,其特征在于,將第一或第二總線段上的消息讀入與第一或第二總線段相關(guān)的總線代理包括將與第一或第二總線段相關(guān)的總線代理寫的消息接收入第一隊(duì)列;將與第一或第二總線段相關(guān)的總線代理寫的消息接收入第二隊(duì)列。
4.如權(quán)利要求3所述的方法,其特征在于,消息在時(shí)鐘信號的交替周期內(nèi)接收入所述第一和第二隊(duì)列。
5.如權(quán)利要求3所述的方法,其特征在于,所述方法進(jìn)一步包括在時(shí)鐘信號的交替周期內(nèi)從所述第一和第二隊(duì)列讀出消息。
6.如權(quán)利要求1所述的方法,其特征在于,觸發(fā)第一總線代理寫消息發(fā)生在時(shí)鐘信號的第一奇偶周期中,觸發(fā)第二總線代理寫消息發(fā)生在時(shí)鐘信號的第二奇偶周期中。
7.如權(quán)利要求6所述的方法,其特征在于,所述方法進(jìn)一步包括對消息寫入和傳輸至第一總線段的順序進(jìn)行仲裁。
8.一種系統(tǒng),其特征在于,所述系統(tǒng)包括耦合至一個(gè)或多個(gè)第一總線代理的第一總線段,其中所述第一總線代理被配置為寫消息給第一總線段以及從第一總線段讀取消息;與所述第一總線段分開且耦合至一個(gè)或多個(gè)第二總線代理的第二總線段,其中所述第二總線代理被配置為寫消息給第二總線段以及從第二總線段讀取消息;耦合至所述第一總線段和第二總線段的第一電路,所述第一電路被設(shè)置為讀取寫在第一總線段上的消息以及將所述消息寫入第二總線段;耦合至所述第一總線段和第二總線段的第二電路,所述第二電路被設(shè)置為讀取寫在第二總線段上的消息以及將所述消息寫入第一總線段。
9.如權(quán)利要求8所述的系統(tǒng),其特征在于,所述系統(tǒng)位于片上系統(tǒng)中。
10.如權(quán)利要求8所述的系統(tǒng),其特征在于,每個(gè)總線代理包括處理器和本地高速緩存。
全文摘要
一種系統(tǒng)包括第一總線段和第二總線段。第一總線段耦合至一個(gè)或多個(gè)第一總線代理,其中第一總線代理配置為對第一總線段寫消息,并從第一總線段和第二總線段讀取消息,其中第二總線段與第一總線段分隔開,并耦合至一個(gè)或多個(gè)第二總線代理。第一總線代理配置為寫消息至第一總線段,并從第一總線段讀取消息。所述系統(tǒng)還包括第一電路,耦合至第一總線段和第二總線段,并被設(shè)置為讀取寫在第一總線段上的消息,并將該消息寫入第二總線段,并且,所述系統(tǒng)還包括第二電路,耦合至第一總線段和第二總線段,被配置為讀取寫在第二總線段上的消息,并將該消息寫入第一總線段。
文檔編號G06F15/16GK101075221SQ200710004490
公開日2007年11月21日 申請日期2007年1月15日 優(yōu)先權(quán)日2006年1月31日
發(fā)明者龐舫, 利夫·奧唐奈 申請人:美國博通公司