TWI382313B - 管理分離匯流排上匯流排代理之間的資料流程的方法和系統 - Google Patents

管理分離匯流排上匯流排代理之間的資料流程的方法和系統 Download PDF

Info

Publication number
TWI382313B
TWI382313B TW096103524A TW96103524A TWI382313B TW I382313 B TWI382313 B TW I382313B TW 096103524 A TW096103524 A TW 096103524A TW 96103524 A TW96103524 A TW 96103524A TW I382313 B TWI382313 B TW I382313B
Authority
TW
Taiwan
Prior art keywords
bus
message
bus segment
segment
agent
Prior art date
Application number
TW096103524A
Other languages
English (en)
Other versions
TW200821845A (en
Inventor
Fong Pong
Lief O'donnell
Original Assignee
Broadcom Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Broadcom Corp filed Critical Broadcom Corp
Publication of TW200821845A publication Critical patent/TW200821845A/zh
Application granted granted Critical
Publication of TWI382313B publication Critical patent/TWI382313B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4027Coupling between buses using bus bridges
    • G06F13/4045Coupling between buses using bus bridges where the bus bridge performs an extender function

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Bus Control (AREA)

Description

管理分離匯流排上匯流排代理之間的資料流程的方法和系統
本發明涉及在多個相互連接的匯流排代理之間管理資料流程,更具體地說,涉及一種保持快取記憶體一致的分離匯流排。
電腦晶片可包括多個計算核心、記憶體或處理器,並且這些元件在執行任務的同時,相互之間可以通信。在某些電腦晶片中,各個電腦核心元件可包含有快取記憶體(cache)以緩衝與記憶體的資料通信。如果記憶體為各電腦核心之間共用的記憶體,則各個核心快取記憶體中的資料可與其他核心快取記憶體以及與該共用記憶體保持一致。
快取記憶體核心之間的這種一致性(coherence)可通過將通信元件連接進共用的匯流排結構中來維持,在這種共用匯流排結構中,共用匯流排包括有將一個快取記憶體中任何內容的改變傳輸給其他快取記憶體的內容的協定。然而,這種共用匯流排在與連接至該匯流排的代理之間的傳輸資訊的速度通常受到匯流排電力負荷的限制,並且這個限制隨著加入該共用匯流排的代理更多會變得更嚴重。隨著處理器速度的增加以及共用元件數量的增加,匯流排上通信速率的限制會給晶片總體處理速度帶來不必要的約束。
一方面,提供一種管理耦合至相關第一總線段(bus segment)的第一匯流排代理(bus agent)和耦合至與第一總線段分開的相關第二總線段的第二匯流排代理之間的資料流程的方法。所述方法包括:產生共用時脈信號;觸發第一匯流排代理和第二匯流排代理向其相關的總線段寫消息;將寫入第一總線段的消息傳輸至第二總線段;以及,將寫入第二總線段的消息傳輸至第一總線段。第一總線段上的消息被讀入第一匯流排代理,第二總線段上的消息被讀入第二匯流排代理。讀入第一和第二匯流排代理的消息以同樣的順序進行處理。
本發明的實現方式可包括一個或多個以下特徵。例如,觸發第一匯流排代理和第二匯流排代理寫消息可在時脈信號的第一奇偶周期發生,以及,將寫入第一總線段的消息傳輸至第二總線段和將寫入第二總線段的消息傳輸至第一總線段可在時脈信號的第二奇偶周期發生。將第一或第二總線段上的消息讀入與第一或第二總線段相關的匯流排代理可包括,將與第一或第二總線段相關的匯流排代理寫的消息接收入第一佇列,以及將與第一或第二總線段相關的匯流排代理寫的消息接收入第二佇列。消息可在時脈信號的交替周期內從所述第一和第二佇列讀出。
觸發第一匯流排代理寫消息可發生在時脈信號的第一奇偶周期中,觸發第二匯流排代理寫消息可發生在時脈信號的第二奇偶周期中。消息寫入和傳輸至第一總線段的順序可以進行仲裁。當 正傳輸消息給第一總線段時,如果在相同時鐘周期內第一匯流排代理被觸發為寫消息給第一總線段,那麽傳輸給第一總線段的消息可放在第一總線段上。
在第一匯流排代理被觸發寫消息至第一總線段的時脈信號周期之後的時脈信號周期內,消息可從第一總線段傳輸至第二總線段。至少一個第一匯流排代理和至少一個第二匯流排代理包括處理器和本地快取記憶體,並且匯流排代理可位於片上系統中。
另一方面,本發明提出一種系統,包括第一總線段和第二總線段。所述第一總線段耦合至一個或多個第一匯流排代理,其中所述第一匯流排代理被配置為寫消息給第一總線段以及從第一總線段和第二總線段讀取消息,所述第二總線段與所述第一總線段分開且耦合至一個或多個第二匯流排代理。所述第一匯流排代理被配置為寫消息給第一總線段以及從第一總線段讀取消息。所述系統還包括第一電路,所述第一電路耦合至所述第一總線段和第二總線段,被設置為讀取寫在第一總線段上的消息以及寫消息給第二總線段;所述系統還包括第二電路,所述第二電路耦合至所述第一總線段和第二總線段,並被設置為讀取寫在第二總線段上的消息以及寫消息給第一總線段。
本發明所述系統的各個實施例可包括一個或多個以下特徵。所述系統可位於片上系統中。每個匯流排代理可包括處理器和本地快取記憶體。所述系統可包括有主記憶體,所述主記憶體耦合 至所述第一總線段和第二總線段。所述第一和第二匯流排代理可配置為在交替的時鐘周期內寫消息。
所述系統還包括第一仲裁器,所述第一仲裁器耦合至所述第一匯流排代理和第一總線段,其中所述第一仲裁器被設置為用於確定消息寫入所述第一總線段的順序;所述系統還包括第二仲裁器,所述第二仲裁器耦合至所述第二匯流排代理和第二總線段,其中所述第二仲裁器被設置為用於確定消息寫入所述第一總線段的順序。
所述第一匯流排代理包括有用於接收所述第一匯流排代理所寫的消息的偶數佇列,以及用於接收所述第二電路所寫的消息的奇數佇列。所述第二匯流排代理包括有用於接收所述第二匯流排代理所寫的消息的奇數佇列,以及用於接收所述第一電路所寫的消息的偶數佇列。所述第一和第二總線段包括用於在交替時鐘周期內從所述奇數和偶數佇列輸出消息的電路。所述第一匯流排代理每個均包括有用於以處理順序放置從所述第一總線段讀取的消息的電路,所述第二匯流排代理每個均包括有用於以處理順序放置從所述第二總線段讀取的消息的電路。所述第一和第二總線段的長度一致,誤差在10%以內。
根據本發明的一個方面,提供一種管理耦合至相關第一總線段的第一匯流排代理和耦合至與第一總線段分開的相關第二總線段的第二匯流排代理之間的資料流程的方法,所述方法包括: 產生共用時脈信號;觸發第一匯流排代理和第二匯流排代理向其相關的總線段寫消息入;將寫入第一總線段的消息傳輸至第二總線段;將寫入第二總線段的消息傳輸至第一總線段;將第一總線段上的消息讀入第一匯流排代理;將第二總線段上的消息讀入第二匯流排代理;以及以同樣的順序處理讀入第一和第二匯流排代理的消息。
優選地,觸發第一匯流排代理和第二匯流排代理寫消息發生在時脈信號的第一奇偶周期,並且,將寫入第一總線段的消息傳輸至第二總線段和將寫入第二總線段的消息傳輸至第一總線段發生在時脈信號的第二奇偶周期。
優選地,將第一或第二總線段上的消息讀入與第一或第二總線段相關的匯流排代理包括:將與第一或第二總線段相關的匯流排代理寫的消息接收入第一佇列;將與第一或第二總線段相關的匯流排代理寫的消息接收入第二佇列。
優選地,消息在時脈信號的交替周期內接收入所述第一和第二佇列。
優選地,所述方法進一步包括在時脈信號的交替周期內從所 述第一和第二佇列讀出消息。
優選地,觸發第一匯流排代理寫消息發生在時脈信號的第一奇偶周期中,觸發第二匯流排代理寫消息發生在時脈信號的第二奇偶周期中。
優選地,所述方法進一步包括對消息寫入和傳輸至第一總線段的順序進行仲裁。
優選地,當正傳輸消息給第一總線段時,如果在相同時鐘周期內第一匯流排代理被觸發為寫消息給第一總線段,那麽將傳輸給第一總線段的消息放在第一總線段上。
優選地,在第一匯流排代理被觸發寫消息至第一總線段的時脈信號周期之後的時脈信號周期內,消息從第一總線段傳輸至第二總線段。
優選地,至少一個第一匯流排代理和至少一個第二匯流排代理包括處理器和本地快取記憶體。
優選地,所述匯流排代理位於片上系統中。
根據本發明的一個方面,提出一種系統,包括:耦合至一個或多個第一匯流排代理的第一總線段,其中所述第一匯流排代理被配置為寫消息給第一總線段以及從第一總線段讀取消息;與所述第一總線段分開且耦合至一個或多個第二匯流排代理的第二總線段,其中所述第二匯流排代理被配置為寫消 息給第二總線段以及從第二總線段讀取消息;耦合至所述第一總線段和第二總線段的第一電路,所述第一電路被設置為讀取寫在第一總線段上的消息以及將所述消息寫入第二總線段;耦合至所述第一總線段和第二總線段的第二電路,所述第二電路被設置為讀取寫在第二總線段上的消息以及將所述消息寫入第一總線段。
優選地,所述系統位於片上系統中。
優選地,每個匯流排代理包括處理器和本地快取記憶體。
優選地,所述系統進一步包括主記憶體,所述主記憶體耦合至所述第一總線段和第二總線段。
優選地,所述第一和第二匯流排代理被設置為在交替的時鐘周期內寫消息。
優選地,所述系統進一步包括:第一仲裁器,所述第一仲裁器耦合至所述第一匯流排代理和第一總線段,其中所述第一仲裁器被設置為用於確定消息寫入所述第一總線段的順序;第二仲裁器,所述第二仲裁器耦合至所述第二匯流排代理和第二總線段,其中所述第二仲裁器被設置為用於確定消息寫入所述第二總線段的順序。
優選地,所述第一匯流排代理包括有用於接收所述第一匯流 排代理所寫的消息的偶數佇列,以及用於接收所述第二電路所寫的消息的奇數佇列;所述第二匯流排代理包括有用於接收所述第二匯流排代理所寫的消息的奇數佇列,以及用於接收所述第一電路所寫的消息的偶數佇列;所述第一和第二總線段包括用於在交替時鐘周期內從所述奇數和偶數佇列輸出消息的電路。
優選地,所述第一匯流排代理每個均包括有用於以處理順序放置從所述第一總線段讀取的消息的電路,所述第二匯流排代理每個均包括有用於以處理順序放置從所述第二總線段讀取的消息的電路。
優選地,所述第一和第二總線段的長度一致,誤差在10%以內。
本發明的各種優點、各個方面和創新特徵,以及其中所示例的實施例的細節,將在以下的說明書和附圖中進行詳細介紹。
圖1是片上多核心系統(SOC)的邏輯框圖。晶片100包括4個處理元件102、104、106和108。每個處理元件可以是中央處理器(CPU)核心、數位信號處理器(DSP)或其他資料處理模組。各個處理元件102、104、106和108可以是相同的或不同的。例如,所有處理元件102、104、106和108可以都是DSP,或者一個是標準CPU核心,其他的是專用DSP核心。
處理元件102、104、106和108連接至記憶體控制器110,控制對主記憶體112(例如,高速隨機訪問記憶體(RAM))的訪問。 處理元件102、104、106和108還連接至輸入輸出控制器114,管理該處理元件和外部設備之間的輸入和輸出操作。例如,輸入輸出控制器114可處理處理元件102、104、106和108與外部磁碟機之間的通信。
每個處理元件102、104、106和108可分別與快取記憶體元件116、118、120和122相關聯,該快取記憶體用於緩衝與主記憶體112的資料交換。快取記憶體元件116、118、120和122通常與處理元件102、104、106和108一起使用,因為處理元件102、104、106和108的處理速度通常遠遠大於訪問主記憶體112的速度。通過快取記憶體元件116、118、120和122,資料可從記憶體112以資料塊的形式獲得並暫時以可以快速訪問的格式存儲於快取記憶體元件116、118、120和122中,該快取記憶體的位置接近相關的處理元件102、104、106和108。然後,處理元件102、104、106和108可從其各自相關聯的快取記憶體元件116、118、120和122訪問資料,速度比從主記憶體112訪問資料的速度快得多。
處理元件102、104、106和108、快取記憶體元件116、118、120和122與主記憶體112之間的通信一般通過共用匯流排完成,該共用匯流排包括位址和命令匯流排124以及資料匯流排126。儘管位址和命令匯流排124以及資料匯流排126在圖中單獨示出,在某些實施例中,它們可以合併為一條物理匯流排。無論該共用 匯流排是否實現為雙匯流排或單匯流排,都可以使用一套協定來管理連接至該匯流排的各個元件102-122(即匯流排代理)如何使用該匯流排在各個元件之間通信。
在許多情況下,在晶片100的操作過程中,處理器102、104、106和108處理相同的資料,在這種情況下,從主記憶體112獲得並存儲在與處理元件102相關的本地快取記憶體元件116中的資料的副本必須與存儲在與所有其他處理元件104、106和108相關的本地快取記憶體118、120和122中的副本一致。因此,如果一個處理元件修改了存儲於其本地快取記憶體中的資料,這個修改必須擴展至與其他處理元件相關的快取記憶體,這樣的話,所有處理元件將繼續對相同的資料進行操作。因為這種匯流排代理間的快取記憶體一致性的需要,建立了協定來確保某個匯流排代理對其相關的快取記憶體中存儲的本地存儲的資料作出的修改可以傳輸至所有與其他連接至該匯流排的匯流排代理相關的快取記憶體。
圖2是本發明用於維持多個匯流排代理之間的快取記憶體一致性的共用匯流排實施例200的框圖。該共用匯流排包括4個匯流排“主”元件202、204、206和208(例如,對應每個快取記憶體116、118、120和122的快取記憶體控制器)、多工器212和仲裁器210,以及4個“從屬”元件214、216、218和220。如果匯流排主元件需要在匯流排上傳輸消息(例如,一個改變存儲在匯 流排代理的本地快取記憶體中的資料的命令),該匯流排主元件發送輸入消息給多工器212,並還發送請求信號至控制多工器212的匯流排仲裁器210。多工器212可從主元件202、204、206和208以特定的順序接收輸入消息,然後多工器212可以特定的順序輸出該消息至從屬元件214、216、218和220,輸出的順序不需要與從主元件接收消息的順序相同。仲裁器210通過多工器212控制在特定時間將哪一個匯流排主元件的信號放在匯流排上。如果多工器212接收到不止一個訪問匯流排的請求,仲裁器210決定處理該請求的順序,並且,多工器212的輸出被發送至一個或多個匯流排從屬元件214、216、218和220,這些從屬元件可以是分離的元件,或者是匯流排主元件202、204、206和208之一的接收側的一部分。
圖2中展示的共用匯流排200可用於電腦系統,例如,控制用於許多個人電腦中的周邊元件擴展介面(PCI)匯流排。然而,因為匯流排仲裁器需要相關的複雜邏輯,這種匯流排仲裁器系統運行速度低,因此通常並不用作SOC類型的晶片的一部分。
如圖3所示,另一個共用匯流排架構300可用于以相當高的速度操作匯流排。共用匯流排控制器架構300可包括微分信號系統,使用兩條匯流排線路(bus line)302和304在匯流排代理310、312、314和316之間傳輸消息。匯流排線路302和304由電路元件306(例如,電池或電容)預充電,以確保兩條匯流排線路302 和304充電至預定義的初始狀態。連接至匯流排線路302和304的每個匯流排代理310、312、314和316可具有兩個電路元件連接至匯流排:驅動器322,用於放置信號在匯流排線路302和304上;讀出放大器320,用於檢測匯流排上的信號。儘管圖3中只示出了一對匯流排線路302和304,其他實施例可使用較大數量的並聯匯流排線路(例如,32、64或128對匯流排線路,甚至更多),以實現匯流排代理310、312、314和316之間的高資料傳輸率。
如果匯流排代理310需要傳輸消息至匯流排上的其他匯流排代理312、314和316,匯流排代理310啟動它的驅動器322,改變線路302和304上的充電狀態,例如,通過提取出線路302和304的電荷,因此使一個電壓脈衝經過所述匯流排線路。其他匯流排代理312、314和316使用其讀出放大器電路320感測狀態的改變。匯流排代理310、312、314和316之間的通信通常通過將用於識別發送方匯流排代理310以及可能將要接收消息的匯流排代理312、314和316的資訊包含在置於匯流排上的消息中來實現。用於確保每次僅一個匯流排代理310、312、314和316能夠在匯流排線路302和304上放消息的複雜邏輯和用於處理放在匯流排線路302和304上的資訊的邏輯元件未在圖3中示出。
在典型的積體電路實施例中,儘管資訊可在匯流排線路302和304上高速地傳輸,但匯流排的速度還是受到匯流排電力負載的限制。特別是,隨著匯流排線路302和304變長,組成匯流排 的線纜的電阻R會增加。此外,隨著匯流排線路302和304的長度增加,與所在環境相關的匯流排線路的電容C也會增加。因此,匯流排的RC時間常量隨著匯流排的長度增加而增加,這限制了匯流排上傳輸消息的速度。實際上,匯流排的RC時間常量通常與匯流排長度的平方成比例增加。隨著更多的代理加入匯流排,同時匯流排變得更長,這一速度限制可限制匯流排的總體運行速度。在一個晶片上(例如,在SOC配置中)放置不止一個的處理核心以及通過共用匯流排連接該核心的趨勢進一步強調克服或減輕因匯流排上處理代理的數量的增加造成的電載荷增加導致的總線速度限制。
參照圖4,用於在多個匯流排代理之間傳輸消息的共用匯流排400被分割成兩個總線段402和404,用於降低匯流排上的有效電力負載,從而增加匯流排運行速度。預充電單元406可連接至總線段402,並且該預充電單元可用於對總線段402充電。在一個實施例中,一旦總線段被充電,可在匯流排代理410的處理單元414和另一個匯流排代理420的處理單元424之間傳輸消息,其中匯流排代理410和420均連接至總線段402。處理單元414和424分別通過匯流排界面單元(BIU)412和422連接至總線段402。同樣,在另一總線段404上,預充電單元408可連接至總線段404,並且該預充電單元可用於對總線段404充電。一旦總線段404被充電,可在連接至總線段404的匯流排代理430和440之間傳輸 消息。匯流排代理430和440的處理單元434和444可分別通過匯流排界面單元(BIU)432和442連接至總線段404。
讀出放大器426中的電路可連接至總線段402,並可驅動與總線段404連接的驅動器438中的電路,讀出放大器436中的電路和驅動器428近似地連接總線段404至總線段402。使用連接的一對讀出放大器426和驅動器438,由BIU 412和422放在總線段402上的消息可通過讀取放大器426感測到,並隨後由驅動器438放在總線段404上。同樣,由BIU 432和442放在總線段404上的資訊可由讀取放大器436感測到,並隨後由驅動器428放在總線段402上。以此,讀取放大器426和驅動器438的組合可將總線段402上的資訊傳遞至總線段404,而讀取放大器436和428的組合可將總線段404上的資訊傳遞至總線段402。以這種方式,無論匯流排代理410、420、430和440是否連接至總線段402或404,這些匯流排代理410、420、430和440可相互通信。匯流排代理410和420以及驅動器428可耦合至仲裁器427,仲裁器427解決兩個匯流排代理之間或匯流排代理與連接至總線段402的驅動器之間在同一個時鐘周期中嘗試寫資訊至總線段時所產生的衝突。在出現所述衝突的情況下,仲裁器427確定匯流排代理410或420或驅動器428中的哪一個寫總線段402。同樣,仲裁器437解決匯流排代理430和440以及驅動器438之間的衝突。總線段402和404可包括有一條或多條並聯設置的線路(例如,32、64 或128對匯流排電路,甚至更多),以實現連接至總線段402和404的匯流排代理410、420、430和440之間的高資料傳輸速率。
總線段402和404可以是等長的總線段或長度不同。在總線段402和404的長度一致的情況中,每個總線段402和404的時鐘可以是長度等於每個總線段402或404的長度的兩倍的總線段的最大速率的四倍,這是因為匯流排或總線段的限制RC時間常量與匯流排或總線段的長度的平方成正比,所以該匯流排長度可以使RC時間常量縮小4倍。由於通過BIU 412、422、432和442對匯流排的載入,實際改進可能小於4倍,因為每個BIU增加一定量的電阻和電容至總線段自身的分佈電阻和電容。然而,儘管有BIU的電阻和電容性的載入,每個總線段402和404的時鐘比長度是總線段402或404的長度的兩倍的匯流排要快,這可使得在最差情況下的匯流排帶寬至少等於長度是總線段402或404的長度的兩倍的較長匯流排的帶寬,並且,在大多數情況中,可以匯流排帶寬可高於兩倍。
儘管圖4中展示的兩個總線段可實現組合的分離匯流排400的比使用單個長匯流排較快的時鐘,還需要採用附加的步驟來維持該匯流排的兩個總線段上的匯流排代理410、420、430和440之間的快取記憶體一致性。因為在用於從總線段402傳輸消息至總線段404的讀出放大器驅動器元件426和438中以及用於從總線段404傳輸消息至總線段402的讀出放大器驅動器元件436和 428中有傳播延遲,總線段402上的匯流排代理422或424接收到的消息的順序與總線段404上的匯流排代理442或444接收到的消息的順序不會必然相同。因此,為了維持連接至分離匯流排400的兩個總線段的所有匯流排代理之間的快取記憶體一致性,BIU412、422、432和442可具有附加的處理能力以確保匯流排代理之間的快取記憶體一致性。
圖5展示了可能是用於確保分離匯流排400上快取記憶體一致性的協定的一部分的時脈信號設置示意圖。CLOCK信號500可分成完整的時鐘周期,從低電平到高電平,再回到低電平。所述時鐘周期的可以是奇數的或偶數的,其奇偶性在CLOCK信號500的連續周期之間交替。因此,時鐘周期502是奇數的,時鐘周期503是偶數的。CLOCK信號500也可用於產生半速CLOCK2信號510,用於標識時脈信號500的奇數和偶數周期。例如,半速CLOCK2信號510在高電平狀態可表示CLCOK信號500處於奇數周期,而CLOCK2信號510在低電平狀態可表示CLOCK信號500處於偶數周期。圖5展示的組合的時脈信號可用於通信規範中以確保分離匯流排的兩半總線段上的匯流排代理之間的快取記憶體一致性。
在一個實施例中,BIU 412、422、432和442寫消息至總線段402和404發生在時脈信號500的奇數周期502內。隨後在時脈信號500的偶數時鐘周期503內,讀取放大器426和驅動器438從 總線段402傳播消息至總線段404,讀取放大器428和驅動器436從總線段404傳播消息至總線段402。因此,在奇數周期內,連接至同一總線段的BIU相互間傳輸消息,而在偶數周期內,一個總線段上的BIU接收由連接至其他總線段的BIU所寫的消息。在這種情況中,匯流排的使用率相當低,因為匯流排帶寬的一半被保留下來,以用於驅動器428和438在總線段之間傳送消息,這樣會出現空閒匯流排周期。然而,因為分離匯流排400的RC時間常量減小,匯流排400的總體帶寬高於一個匯流排時的帶寬。
在另一個實施例中,仲裁器427和437對BIU 412、422、432和442以及驅動器428和438對總線段402和404寫消息的操作進行調度。BIU 412、422、432和442可在CLOCK信號500的任何周期中請求寫資訊至總線段402和404。然而,如果有新消息放在總線段402上,驅動器438必須在下一個周期將該消息傳送至總線段404,並且,如果有新消息放在總線段404上,驅動器428必須在下一個周期將該消息傳送至總線段402。這通過配置仲裁器427和437來實現,當解決均嘗試向其總線段寫消息的驅動器428或438和其他匯流排代理之間的衝突時,驅動器428和438具有較其他代理高的優先順序。因此,如果匯流排代理410或420嘗試在總線段402上放消息,而在同一時鐘周期內,驅動器428嘗試在該總線段上放置已經被寫入到分離匯流排的其他總線段404上的消息,,仲裁器427將總是優先幫助驅動器428解決衝突。 通過這種方法,匯流排帶寬將被最大化的使用。
圖6是用於向總線段402寫資訊和從其中讀資訊的BIU600的框圖。來自與BIU 600相關的匯流排代理的處理單元的、將被傳輸至總線段402的消息602由BIU600中的匯流排驅動器604接收。驅動器604具有寫使能輸入端(write enable input)608,允許驅動器604僅在該輸入端出現正數值時輸出消息給總線段。寫使能輸入端608通過從匯流排仲裁器接收的信號606啟動,該仲裁器負責總線段402上的資訊流控制。例如,如果BIU 600包含在連接至總線段402的匯流排代理410中,僅在沒有較高優先順序的代理或驅動器嘗試寫消息至該總線段時,信號606被啟動。
CLOCK信號500、觸發器(flip-flop)648和反相器646可組合起來,用以產生對應於CLOCK時脈信號偶數周期的信號EVEN 652,並產生對應於CLOCK時脈信號奇數周期的信號ODD 644。該EVEN和ODD信號隨後用於以保持連接至匯流排的匯流排代理之間的快取記憶體一致性的方式載入從匯流排400讀取的消息。
從總線段402接收的消息614被讀入讀取放大器612,並相應地發送至FIFO緩存620和630的輸入端622或632。每個FIFO 620和630分別接收負載信號624和634,該負載信號用於控制輸入端622或632的消息載入入FIFO的時間,並且該負載信號允許將消息在CLOCK時脈信號的上升沿載入入FIFO。FIFOO 620的LOAD輸入端622由ODD信號644驅動,並因此,在奇數時鐘周期內寫 的消息被載入入FIFOO 620。FIFOE 630的LOAD輸入端632由EVEN信號652觸發,並因此,FIFOE載入在偶數時鐘周期內寫的消息。
FIFOO 620還可接收由EVEN信號652驅動的輸出使能信號626以及由ODD信號644驅動的輸入使能信號624。FIFOE 630接收由ODD信號644驅動的輸出使能信號636和由EVEN信號652驅動的輸入使能信號634。對於連接至總線段402的BIU,FIFOO 620的輸出使能信號626由EVEN信號652驅動,信號624被禁用,而FIFOE 630的輸出使能信號636由ODD信號644驅動,信號634被禁用。連接至總線段404的各個BIU將其輸出使能信號的檢測結果反向。就是說,對於連接至總線段404的BIU,FIFOO 620的輸出使能信號由ODD信號644驅動,FIFOE 630的OE輸入由EVEN信號652驅動。通過將分離匯流排的每半個總線段上的BIU的FIFO的輸出使能信號檢測結果反向,可以維持該分離匯流排的兩半總線段上的消息的正確順序。
將FIFO的OE的檢測結果反向之後的邏輯如下。分離匯流排400的兩個總線段402和404僅在交替的奇偶時鐘周期內執行寫操作。因此,對於每個總線段402和404,如果接收的消息的奇偶性與連接至該總線段的匯流排代理所寫的消息的奇偶性相反,那麽,接收的消息必然是由其他總線段寫入的,並且該接收的資訊的寫操作必然早於當前時鐘周期至少一個時鐘周期。因為該具有 相反的奇偶性的消息的寫操作較早,因此需要先處理以維持快取記憶體的一致性。
因為分離匯流排400使用的時鐘的運行速率可以比單個匯流排302和304運行的最大RC限制速率快兩倍,所以分離匯流排400的帶寬至少與非分離匯流排的速度一樣。然而,如果該時鐘以高於兩倍的速率運行,那麽帶寬相應地更高。此外,如果,並且僅如果前半個時鐘周期沒有消息等待,則可以增加附加邏輯以允許FIFO緩存620和630讀取來自當前半個時鐘周期的消息。就是說,對於BIU 600,如果FIFOO 620內沒有消息,那麽可即刻從FIFOE 630中讀取消息。這些消息來自其他與BIU 600連接至相同總線段的匯流排代理。這個邏輯的效果在於,允許半條匯流排上產生的消息以雙倍速率流至相同的半條匯流排上的其他代理。較高的時鐘速率和每半條匯流排以雙倍速率工作的組合保證了匯流排總體吞吐量帶寬的增加。
參照圖7,管理具有第一總線段和第二總線段的分離匯流排上的資料流程的方法700包括:步驟702,產生共用時脈信號。步驟704,觸發耦合至第一和第二總線段的匯流排代理寫消息至相關聯的總線段,只要在相同時鐘周期內驅動器未傳送來自其他總線段的消息。由耦合至第一總線段的匯流排代理寫的消息可以由耦合至第一總線段的其他匯流排代理讀取,並且由耦合至第二總線段的匯流排代理寫的消息可由耦合至第二總線段的其他匯流排代理 讀取。步驟706,將寫入一個總線段的消息交換至其他總線段。例如,將寫入第一總線段的消息傳輸至第二總線段,將寫入第二總線段的消息傳輸至第一總線段。在一個實施例中,在將消息寫入一個匯流排代理一個時鐘周期之後,將該消息從該總線段交換至其他總線段。為了避免匯流排代理在消息從其他總線段交換過來的同時嘗試寫資訊至其相關的總線段,該交換的消息將放在總線段上,並且匯流排代理將等待寫資訊。
步驟708,從一個總線段交換至其他總線段的消息由耦合至其他總線段的匯流排代理讀取,並且步驟710中,與一個總線段相關的一個匯流排代理寫的消息被讀入與該總線段相關的其他匯流排代理。在一個實施例中,與一個總線段相關的匯流排代理寫的消息被讀入第一佇列,而從其他總線段交換過來的消息被讀入第二佇列。例如,將消息讀入第一和第二佇列可在交替的時鐘周期內執行。然後,可以以預定的順序將消息從第一和第二佇列中讀出。因此,步驟712中,由匯流排代理從總線段讀取的消息在該匯流排代理內進行順序排序以便處理,並且耦合至第一和第二總線段的所有匯流排代理內的消息的順序是一致的。最後,步驟714中,匯流排代理按照排序的順序對該消息進行處理,例如,由匯流排代理中的處理器和/或本地快取記憶體對該消息進行處理。
本說明書中描述的各種技術的實施例可以實現在數位電路、或電腦硬體、固件、軟體或其各種組合中。
方法步驟可通過一個或多個可編程處理器執行電腦程式從而通過對輸入資料進行操作並產生輸出來實現。方法步驟也可由專用邏輯電路實現,設備也可以實現為專用邏輯電路,例如,FPGA或ASIC。
適於執行電腦程式的處理器包括,例如,通用和專用微處理器、任何一種數位電腦的任何一個或多個處理器。通常,處理器從唯讀記憶體和/或隨機訪問記憶體接收指令和資料。電腦的元件可包括至少一個處理器,用於執行指令,並包括一個或多個存儲設備,用於存儲指令和資料。所述處理器和記憶體可實現為或結合在專用邏輯電路中。
總之,本領域技術人員能夠認識到,本發明的各個方面可以獨立地和/或集成地實現在各種硬體、軟體、固件或上述任意組合中,由各種類型的“電路”組成。因此,本說明書中的“電路”包括但不限於具有至少一個離散電路的電路、具有至少一個積體電路的電路、具有至少一個ASIC的電路、構成電腦程式配置的通用計算設備的電路(例如,電腦程式配置的通用電腦,至少部分地執行本說明書中描述的方法和/或設備,或者,電腦程式配置的微處理器,至少部分地執行本說明書中描述的方法和/或設備)、組成記憶體設備的電路(例如,RAM的元件)以及組成通信設備的電路(例如,數據機、通信交換機或光電設備)。
本說明書的各個方面描述的不同的元件包含在或連接至不同 的其他元件。能夠理解的是,所述結構僅僅是示例性的,事實上其他可以實施的結構也可以完成同樣的功能。理論上,任何可完成同樣的功能的元件的配置是相關聯的,以此可完成需要的功能。因此,不管結構或中間元件如何,本說明書中任何兩個元件相結合以到達特定的功能便可認為是相關聯的,以此完成特定的功能。同樣,任何相關聯的兩個元件也可以認為是相互連接的或耦合的,以完成特定的功能;任何兩個能夠相關聯的元件也認為是可相互耦合以完成需要的功能的。“可耦合的”的特定例子包括但不限於物理上的可配對和/或物理上交互的元件和/或可無線交互和/或無線交互元件。
雖然以上描述了本發明的各種實施例,應當理解,其目的僅在於舉例說明,而沒有限制性。本領域的技術人員知悉,在不離開本發明的精神和範圍情況下,在形式上和細節上還可做各種的改變。因此,其他各種實施例也落入本發明的保護範圍。
100‧‧‧晶片
102、104、106、108‧‧‧處理元件
110‧‧‧記憶體控制器
112‧‧‧主記憶體
114‧‧‧輸入輸出控制器
116、118、120、122‧‧‧快取記憶體元件
124‧‧‧位址和命令匯流排
126‧‧‧資料匯流排
200‧‧‧共用匯流排實施例
202、204、206、208‧‧‧“主”元件
210‧‧‧仲裁器
212‧‧‧多工器
214、216、218、220‧‧‧“從屬”元件
300‧‧‧共用匯流排架構
302、304‧‧‧匯流排線路(bus line)
306‧‧‧電路元件
310、312、314、316‧‧‧匯流排代理
320‧‧‧讀出放大器
322‧‧‧驅動器
400‧‧‧共用匯流排
402、404‧‧‧總線段
406‧‧‧預充電單元
408‧‧‧預充電單元
410‧‧‧匯流排代理
412‧‧‧匯流排界面單元(BIU)
414‧‧‧處理單元
420‧‧‧匯流排代理
422‧‧‧匯流排界面單元(BIU)
424‧‧‧處理單元
426‧‧‧讀出放大器
427‧‧‧仲裁器
428‧‧‧驅動器
430、440‧‧‧匯流排代理
432、442‧‧‧匯流排界面單元(BIU)
434、444‧‧‧處理單元
436‧‧‧讀出放大器
437‧‧‧仲裁器
438‧‧‧驅動器
500‧‧‧CLOCK信號
502‧‧‧時鐘週期
503‧‧‧時鐘週期
510‧‧‧半速CLOCK2信號
600‧‧‧匯流排界面單元(BIU)
602‧‧‧消息
604‧‧‧匯流排驅動器
606‧‧‧信號
608‧‧‧寫使能輸入端(write enable input)
612‧‧‧讀取放大器
614‧‧‧消息
620、630‧‧‧FIFO緩存
622、632‧‧‧輸入端
624、634‧‧‧輸入使能信號
626‧‧‧輸出使能信號
636‧‧‧輸出使能信號
644‧‧‧信號ODD
646‧‧‧反相器
648‧‧‧觸發器(flip-flop)
652‧‧‧信號EVEN
圖1是本發明位於一個具有多個通過匯流排連接的處理器的積體電路上的系統的邏輯框圖;圖2是本發明共用匯流排實施例的框圖;圖3是本發明另一共用匯流排實施例的框圖;圖4是本發明位於一個具有多個通過分離匯流排(split bus)連接的處理器的積體電路上的系統的邏輯框圖; 圖5是本發明用於分離匯流排的時脈信號的示意圖;圖6是本發明使用分離匯流排時的匯流排界面的框圖;圖7是本發明在分離匯流排上管理資料流程的方法的流程圖。
200‧‧‧共用匯流排實施例
202、204、206、208‧‧‧“主”元件
210‧‧‧仲裁器
212‧‧‧多工器
214、216、218、220‧‧‧“從屬”元件

Claims (5)

  1. 一種管理耦合至與第一總線段相關的第一匯流排代理和耦合至與第一總線段分開的第二總線段相關的第二匯流排代理之間的資料流程的方法,其特徵在於,所述方法包括:產生共用時脈信號;觸發第一匯流排代理和第二匯流排代理向其相關的總線段寫入消息;將寫入第一總線段的消息傳輸至第二總線段;將寫入第二總線段的消息傳輸至第一總線段;將第一總線段上的消息讀入第一匯流排代理;將第二總線段上的消息讀入第二匯流排代理;進一步的:觸發第一匯流排代理和第二匯流排代理寫消息發生在時脈信號的第一奇偶週期,並且,將寫入第一總線段的消息傳輸至第二總線段和將寫入第二總線段的消息傳輸至第一總線段發生在時脈信號的第二奇偶週期;將第一總線段上的消息讀入與第一總線段相關的匯流排代理包括:將與第一總線段相關的匯流排代理寫的消息接收入第一佇列;將與第二總線段相關的匯流排代理寫的消息接收入第二佇列;將第二總線段上的消息讀入與第二總線段相關的匯流排 代理包括:將與第二總線段相關的匯流排代理寫的消息接收入第一佇列;將與第一總線段相關的匯流排代理寫的消息接收入第二佇列;所述消息在時脈信號的交替週期內接收入所述第一和第二佇列;所述方法還包括:將讀入第一和第二匯流排代理的消息按照預定的順序從第一和第二佇列中讀出。
  2. 如申請專利範圍第1項所述的方法,其中,所述方法進一步包括對消息寫入和傳輸至第一總線段的順序進行仲裁。
  3. 一種管理耦合至與第一總線段相關的第一匯流排代理和耦合至與第一總線段分開的第二總線段相關的第二匯流排代理之間的資料流程的系統,其特徵在於,所述系統包括:耦合至一個或多個第一匯流排代理的第一總線段,其中所述第一匯流排代理被配置為寫消息給第一總線段以及從第一總線段讀取消息;與所述第一總線段分開且耦合至一個或多個第二匯流排代理的第二總線段,其中所述第二匯流排代理被配置為寫消息給第二總線段以及從第二總線段讀取消息; 耦合至所述第一總線段和第二總線段的第一電路,所述第一電路被設置為讀取寫在第一總線段上的消息以及該讀取之消息寫入第二總線段;所述第一電路讀取第一總線段上的消息及將讀取的消息寫入第二總線段的順序由第一仲裁器決定;耦合至所述第一總線段和第二總線段的第二電路,所述第二電路被設置為讀取寫在第二總線段上的消息以及將該讀取之消息寫入第一總線段;所述第二電路讀取第二總線段上的消息及將讀取的消息寫入第一總線段的順序由第一仲裁器決定。
  4. 如申請專利範圍第3項所述的系統,其中,所述系統位於片上系統中。
  5. 如申請專利範圍第3項所述的系統,其中,每個匯流排代理包括處理器和本地快取記憶體。
TW096103524A 2006-01-31 2007-01-31 管理分離匯流排上匯流排代理之間的資料流程的方法和系統 TWI382313B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US11/344,411 US7475176B2 (en) 2006-01-31 2006-01-31 High bandwidth split bus

Publications (2)

Publication Number Publication Date
TW200821845A TW200821845A (en) 2008-05-16
TWI382313B true TWI382313B (zh) 2013-01-11

Family

ID=38090816

Family Applications (1)

Application Number Title Priority Date Filing Date
TW096103524A TWI382313B (zh) 2006-01-31 2007-01-31 管理分離匯流排上匯流排代理之間的資料流程的方法和系統

Country Status (5)

Country Link
US (2) US7475176B2 (zh)
EP (1) EP1814038B1 (zh)
CN (1) CN100587680C (zh)
DE (1) DE602006014084D1 (zh)
TW (1) TWI382313B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7475176B2 (en) * 2006-01-31 2009-01-06 Broadcom Corporation High bandwidth split bus
US7937520B2 (en) * 2008-01-11 2011-05-03 Mediatek Inc. General purpose interface controller of resoure limited system
US8214592B2 (en) * 2009-04-15 2012-07-03 International Business Machines Corporation Dynamic runtime modification of array layout for offset
CN105260331B (zh) * 2015-10-09 2018-08-28 天津国芯科技有限公司 一种双总线内存控制器

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5701422A (en) * 1995-12-13 1997-12-23 Ncr Corporation Method for ensuring cycle ordering requirements within a hierarchical bus system including split-transaction buses
US5761724A (en) * 1993-01-30 1998-06-02 Samsung Electronics Co., Ltd. Write-invalidate cache system for a split transaction bus based shared memory multiprocessor
US5897667A (en) * 1993-11-16 1999-04-27 Intel Corporation Method and apparatus for transferring data received from a first bus in a non-burst manner to a second bus in a burst manner
US20020147871A1 (en) * 2001-04-04 2002-10-10 Nec Corporation Split transaction bus system
US6801977B2 (en) * 2002-01-07 2004-10-05 International Business Machines Corporation Method and apparatus for passing messages through a bus-to-bus bridge while maintaining ordering
TW200601060A (en) * 2004-06-25 2006-01-01 Via Tech Inc Internal bus system

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1189141A3 (en) * 2000-09-13 2005-12-28 Texas Instruments Inc. Bus bridge
US7305410B2 (en) * 2002-12-26 2007-12-04 Rocket Software, Inc. Low-latency method to replace SQL insert for bulk data transfer to relational database
JP2006512655A (ja) * 2002-12-30 2006-04-13 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ クラスタ化ilpプロセッサおよびクラスタ化ilpプロセッサにおけるバスにアクセスする方法
US7532636B2 (en) * 2005-10-07 2009-05-12 Intel Corporation High bus bandwidth transfer using split data bus
US7475176B2 (en) * 2006-01-31 2009-01-06 Broadcom Corporation High bandwidth split bus

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5761724A (en) * 1993-01-30 1998-06-02 Samsung Electronics Co., Ltd. Write-invalidate cache system for a split transaction bus based shared memory multiprocessor
US5897667A (en) * 1993-11-16 1999-04-27 Intel Corporation Method and apparatus for transferring data received from a first bus in a non-burst manner to a second bus in a burst manner
US5701422A (en) * 1995-12-13 1997-12-23 Ncr Corporation Method for ensuring cycle ordering requirements within a hierarchical bus system including split-transaction buses
US20020147871A1 (en) * 2001-04-04 2002-10-10 Nec Corporation Split transaction bus system
US6801977B2 (en) * 2002-01-07 2004-10-05 International Business Machines Corporation Method and apparatus for passing messages through a bus-to-bus bridge while maintaining ordering
TW200601060A (en) * 2004-06-25 2006-01-01 Via Tech Inc Internal bus system

Also Published As

Publication number Publication date
US7475176B2 (en) 2009-01-06
US20070180176A1 (en) 2007-08-02
US20090113096A1 (en) 2009-04-30
EP1814038B1 (en) 2010-05-05
EP1814038A3 (en) 2008-01-02
US7904624B2 (en) 2011-03-08
TW200821845A (en) 2008-05-16
EP1814038A2 (en) 2007-08-01
CN100587680C (zh) 2010-02-03
CN101075221A (zh) 2007-11-21
DE602006014084D1 (de) 2010-06-17

Similar Documents

Publication Publication Date Title
EP2568389B1 (en) Coherence switch for i/o traffic
US7269709B2 (en) Memory controller configurable to allow bandwidth/latency tradeoff
US5771359A (en) Bridge having a data buffer for each bus master
JP5546635B2 (ja) データ転送装置およびその制御方法
WO2005091812A2 (en) Pvdm (packet voice data module) generic bus protocol
JPH0652096A (ja) データ処理システム内でアービタを用いてバス仲裁を実行する方法および装置
TWI470439B (zh) 在以正交時脈操作的中央處理器及至少一直接記憶存取週邊設備之間單一埠靜態隨機存取記憶體之頻寬分享
JP2007219678A (ja) マルチレイヤバス・システム
US9378167B2 (en) Enhanced data transfer in multi-CPU systems
TWI382313B (zh) 管理分離匯流排上匯流排代理之間的資料流程的方法和系統
US7500031B2 (en) Ring-based cache coherent bus
JP4902640B2 (ja) 集積回路、及び集積回路システム
US20150149716A1 (en) Write and read collision avoidance in single port memory devices
JP6092351B2 (ja) クロスダイ・インタフェース・スヌープ又はグローバル観測メッセージの順序付け
JP2009116702A (ja) 半導体集積回路
US11652761B2 (en) Switch for transmitting packet, network on chip having the same, and operating method thereof
JP2014167818A (ja) データ転送装置およびデータ転送方法
JPH10307787A (ja) バッファメモリ装置
JP2003085125A (ja) メモリ制御器及びメモリ制御方法
JP2008305215A (ja) バスシステム
JPH0560625B2 (zh)
WO2003014948A1 (en) System architecture of a high bit rate switch module between functional units in a system on a chip
JP4642398B2 (ja) 共有バス調停システム
KR100666950B1 (ko) 패킷 처리를 위한 다중 메모리 액세스 시스템 및 그 방법
JP2003050787A (ja) マルチプロセッサ制御システム

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees