CN100587680C - 管理分离总线上总线代理之间的数据流的方法和系统 - Google Patents
管理分离总线上总线代理之间的数据流的方法和系统 Download PDFInfo
- Publication number
- CN100587680C CN100587680C CN200710004490A CN200710004490A CN100587680C CN 100587680 C CN100587680 C CN 100587680C CN 200710004490 A CN200710004490 A CN 200710004490A CN 200710004490 A CN200710004490 A CN 200710004490A CN 100587680 C CN100587680 C CN 100587680C
- Authority
- CN
- China
- Prior art keywords
- total segment
- bus
- message
- bus agent
- segment
- Prior art date
- Legal status (The legal status 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 status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4027—Coupling between buses using bus bridges
- G06F13/4045—Coupling between buses using bus bridges where the bus bridge performs an extender function
Abstract
一种系统包括第一总线段和第二总线段。第一总线段耦合至一个或多个第一总线代理,其中第一总线代理配置为对第一总线段写消息,并从第一总线段和第二总线段读取消息,其中第二总线段与第一总线段分隔开,并耦合至一个或多个第二总线代理。第一总线代理配置为写消息至第一总线段,并从第一总线段读取消息。所述系统还包括第一电路,耦合至第一总线段和第二总线段,并被设置为读取写在第一总线段上的消息,并将该消息写入第二总线段,并且,所述系统还包括第二电路,耦合至第一总线段和第二总线段,被配置为读取写在第二总线段上的消息,并将该消息写入第一总线段。
Description
技术领域
本发明涉及在多个相互连接的总线代理之间管理数据流,更具体地说,涉及一种保持高速缓存一致的分离总线。
背景技术
电脑芯片可包括多个计算核心、存储器或处理器,并且这些元件在执行任务的同时,相互之间可以通信。在某些电脑芯片中,各个电脑核心元件可包含有高速缓存(cache)以缓冲与存储器的数据通信。如果存储器为各电脑核心之间共享的存储器,则各个核心高速缓存中的数据可与其它核心高速缓存以及与该共享存储器保持一致。
高速缓存核心之间的这种一致性(coherence)可通过将通信元件连接进共享的总线结构中来维持,在这种共享总线结构中,共享总线包括有将一个高速缓存中任何内容的改变传输给其它高速缓存的内容的协议。然而,这种共享总线在与连接至该总线的代理之间的传输信息的速度通常受到总线电力负荷的限制,并且这个限制随着加入该共享总线的代理更多会变得更严重。随着处理器速度的增加以及共享元件数量的增加,总线上通信速率的限制会给芯片总体处理速度带来不必要的约束。
发明内容
一方面,提供一种管理耦合至相关第一总线段(bus segment)的第一总线代理(bus agent)和耦合至与第一总线段分开的相关第二总线段的第二总线代理之间的数据流的方法。所述方法包括:产生共用时钟信号;触发第一总线代理和第二总线代理向其相关的总线段写消息;将写入第一总线段的消息传输至第二总线段;以及,将写入第二总线段的消息传输至第一总线段。第一总线段上的消息被读入第一总线代理,第二总线段上的消息被读入第二总线代理。读入第一和第二总线代理的消息以同样的顺序进行处理。
本发明的实现方式可包括一个或多个以下特征。例如,触发第一总线代理和第二总线代理写消息可在时钟信号的第一奇偶周期发生,以及,将写入第一总线段的消息传输至第二总线段和将写入第二总线段的消息传输至第一总线段可在时钟信号的第二奇偶周期发生。将第一或第二总线段上的消息读入与第一或第二总线段相关的总线代理可包括,将与第一或第二总线段相关的总线代理写的消息接收入第一队列,以及将与第一或第二总线段相关的总线代理写的消息接收入第二队列。消息可在时钟信号的交替周期内从所述第一和第二队列读出。
触发第一总线代理写消息可发生在时钟信号的第一奇偶周期中,触发第二总线代理写消息可发生在时钟信号的第二奇偶周期中。消息写入和传输至第一总线段的顺序可以进行仲裁。当正传输消息给第一总线段时,如果在相同时钟周期内第一总线代理被触发为写消息给第一总线段,那么传输给第一总线段的消息可放在第一总线段上。
在第一总线代理被触发写消息至第一总线段的时钟信号周期之后的时钟信号周期内,消息可从第一总线段传输至第二总线段。至少一个第一总线代理和至少一个第二总线代理包括处理器和本地高速缓存,并且总线代理可位于片上系统中。
另一方面,本发明提出一种系统,包括第一总线段和第二总线段。所述第一总线段耦合至一个或多个第一总线代理,其中所述第一总线代理被配置为写消息给第一总线段以及从第一总线段和第二总线段读取消息,所述第二总线段与所述第一总线段分开且耦合至一个或多个第二总线代理。所述第一总线代理被配置为写消息给第一总线段以及从第一总线段读取消息。所述系统还包括第一电路,所述第一电路耦合至所述第一总线段和第二总线段,被设置为读取写在第一总线段上的消息以及写消息给第二总线段;所述系统还包括第二电路,所述第二电路耦合至所述第一总线段和第二总线段,并被设置为读取写在第二总线段上的消息以及写消息给第一总线段。
本发明所述系统的各个实施例可包括一个或多个以下特征。所述系统可位于片上系统中。每个总线代理可包括处理器和本地高速缓存。所述系统可包括有主存储器,所述主存储器耦合至所述第一总线段和第二总线段。所述第一和第二总线代理可配置为在交替的时钟周期内写消息。
所述系统还包括第一仲裁器,所述第一仲裁器耦合至所述第一总线代理和第一总线段,其中所述第一仲裁器被设置为用于确定消息写入所述第一总线段的顺序;所述系统还包括第二仲裁器,所述第二仲裁器耦合至所述第二总线代理和第二总线段,其中所述第二仲裁器被设置为用于确定消息写入所述第一总线段的顺序。
所述第一总线代理包括有用于接收所述第一总线代理所写的消息的偶数队列,以及用于接收所述第二电路所写的消息的奇数队列。所述第二总线代理包括有用于接收所述第二总线代理所写的消息的奇数队列,以及用于接收所述第一电路所写的消息的偶数队列。所述第一和第二总线段包括用于在交替时钟周期内从所述奇数和偶数队列输出消息的电路。所述第一总线代理每个均包括有用于以处理顺序放置从所述第一总线段读取的消息的电路,所述第二总线代理每个均包括有用于以处理顺序放置从所述第二总线段读取的消息的电路。所述第一和第二总线段的长度一致,误差在10%以内。
根据本发明的一个方面,提供一种管理耦合至相关第一总线段的第一总线代理和耦合至与第一总线段分开的相关第二总线段的第二总线代理之间的数据流的方法,所述方法包括:
产生共用时钟信号;
触发第一总线代理和第二总线代理向其相关的总线段写消息入;
将写入第一总线段的消息传输至第二总线段;
将写入第二总线段的消息传输至第一总线段;
将第一总线段上的消息读入第一总线代理;
将第二总线段上的消息读入第二总线代理;以及
以同样的顺序处理读入第一和第二总线代理的消息。
优选地,触发第一总线代理和第二总线代理写消息发生在时钟信号的第一奇偶周期,并且,将写入第一总线段的消息传输至第二总线段和将写入第二总线段的消息传输至第一总线段发生在时钟信号的第二奇偶周期。
优选地,将第一或第二总线段上的消息读入与第一或第二总线段相关的总线代理包括:
将与第一或第二总线段相关的总线代理写的消息接收入第一队列;
将与第一或第二总线段相关的总线代理写的消息接收入第二队列。
优选地,消息在时钟信号的交替周期内接收入所述第一和第二队列。
优选地,所述方法进一步包括在时钟信号的交替周期内从所述第一和第二队列读出消息。
优选地,触发第一总线代理写消息发生在时钟信号的第一奇偶周期中,触发第二总线代理写消息发生在时钟信号的第二奇偶周期中。
优选地,所述方法进一步包括对消息写入和传输至第一总线段的顺序进行仲裁。
优选地,当正传输消息给第一总线段时,如果在相同时钟周期内第一总线代理被触发为写消息给第一总线段,那么将传输给第一总线段的消息放在第一总线段上。
优选地,在第一总线代理被触发写消息至第一总线段的时钟信号周期之后的时钟信号周期内,消息从第一总线段传输至第二总线段。
优选地,至少一个第一总线代理和至少一个第二总线代理包括处理器和本地高速缓存。
优选地,所述总线代理位于片上系统中。
根据本发明的一个方面,提出一种系统,包括:
耦合至一个或多个第一总线代理的第一总线段,其中所述第一总线代理被配置为写消息给第一总线段以及从第一总线段读取消息;
与所述第一总线段分开且耦合至一个或多个第二总线代理的第二总线段,其中所述第二总线代理被配置为写消息给第二总线段以及从第二总线段读取消息;
耦合至所述第一总线段和第二总线段的第一电路,所述第一电路被设置为读取写在第一总线段上的消息以及将所述消息写入第二总线段;
耦合至所述第一总线段和第二总线段的第二电路,所述第二电路被设置为读取写在第二总线段上的消息以及将所述消息写入第一总线段。
优选地,所述系统位于片上系统中。
优选地,每个总线代理包括处理器和本地高速缓存。
优选地,所述系统进一步包括主存储器,所述主存储器耦合至所述第一总线段和第二总线段。
优选地,所述第一和第二总线代理被设置为在交替的时钟周期内写消息。
优选地,所述系统进一步包括:
第一仲裁器,所述第一仲裁器耦合至所述第一总线代理和第一总线段,其中所述第一仲裁器被设置为用于确定消息写入所述第一总线段的顺序;
第二仲裁器,所述第二仲裁器耦合至所述第二总线代理和第二总线段,其中所述第二仲裁器被设置为用于确定消息写入所述第二总线段的顺序。
优选地,所述第一总线代理包括有用于接收所述第一总线代理所写的消息的偶数队列,以及用于接收所述第二电路所写的消息的奇数队列;所述第二总线代理包括有用于接收所述第二总线代理所写的消息的奇数队列,以及用于接收所述第一电路所写的消息的偶数队列;所述第一和第二总线段包括用于在交替时钟周期内从所述奇数和偶数队列输出消息的电路。
优选地,所述第一总线代理每个均包括有用于以处理顺序放置从所述第一总线段读取的消息的电路,所述第二总线代理每个均包括有用于以处理顺序放置从所述第二总线段读取的消息的电路。
优选地,所述第一和第二总线段的长度一致,误差在10%以内。
本发明的各种优点、各个方面和创新特征,以及其中所示例的实施例的细节,将在以下的说明书和附图中进行详细介绍。
附图说明
下面将结合附图及实施例对本发明作进一步说明,附图中:
图1是本发明位于一个具有多个通过总线连接的处理器的集成电路上的系统的逻辑框图;
图2是本发明共享总线实施例的框图;
图3是本发明另一共享总线实施例的框图;
图4是本发明位于一个具有多个通过分离总线(split bus)连接的处理器的集成电路上的系统的逻辑框图;
图5是本发明用于分离总线的时钟信号的示意图;
图6是本发明使用分离总线时的总线接口的框图;
图7是本发明在分离总线上管理数据流的方法的流程图。
具体实施方式
图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还连接至输入/输出(I/O)处理器114,管理该处理元件和外部设备之间的输入和输出操作。例如,I/O处理器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的两个总线段的所有总线代理之间的高速缓存一致性,BIU 412、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具有写使能输入端(writeenable 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信号650驱动的输入使能信号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的组件)以及组成通信设备的电路(例如,调制解调器、通信交换机或光电设备)。
本说明书的各个方面描述的不同的元件包含在或连接至不同的其它元件。能够理解的是,所述结构仅仅是示例性的,事实上其它可以实施的结构也可以完成同样的功能。理论上,任何可完成同样的功能的元件的配置是相关联的,以此可完成需要的功能。因此,不管结构或中间元件如何,本说明书中任何两个元件相结合以到达特定的功能便可认为是相关联的,以此完成特定的功能。同样,任何相关联的两个元件也可以认为是相互连接的或耦合的,以完成特定的功能;任何两个能够相关联的元件也认为是可相互耦合以完成需要的功能的。“可耦合的”的特定例子包括但不限于物理上的可配对和/或物理上交互的元件和/或可无线交互和/或无线交互元件。
虽然以上描述了本发明的各种实施例,应当理解,其目的仅在于举例说明,而没有限制性。本领域的技术人员知悉,在不离开本发明的精神和范围情况下,在形式上和细节上还可做各种的改变。因此,其它各种实施例也落入本发明的保护范围。
Claims (11)
1、一种管理耦合至相关第一总线段的第一总线代理和耦合至与第一总线段分开的相关第二总线段的第二总线代理之间的数据流的方法,其特征在于,所述方法包括:
产生共用时钟信号;
触发第一总线代理和第二总线代理向其相关的总线段写消息入;
将写入第一总线段的消息传输至第二总线段;
将写入第二总线段的消息传输至第一总线段;
将第一总线段上的消息读入第一总线代理;
将第二总线段上的消息读入第二总线代理;以及
以同样的顺序处理读入第一和第二总线代理的消息。
2、如权利要求1所述的方法,其特征在于,触发第一总线代理和第二总线代理写消息发生在时钟信号的第一奇偶周期,并且,将写入第一总线段的消息传输至第二总线段和将写入第二总线段的消息传输至第一总线段发生在时钟信号的第二奇偶周期。
3、如权利要求1所述的方法,其特征在于,将第一总线段上的消息读入与第一总线段相关的总线代理包括:
将与第一总线段相关的总线代理写的消息接收入第一队列;
将与第二总线段相关的总线代理写的消息接收入第二队列。
4、如权利要求1所述的方法,其特征在于,将第二总线段上的消息读入与第二总线段相关的总线代理包括:
将与第二总线段相关的总线代理写的消息接收入第一队列;
将与第一总线段相关的总线代理写的消息接收入第二队列。
5、如权利要求3或4所述的方法,其特征在于,消息在时钟信号的交替周期内接收入所述第一和第二队列。
6、如权利要求3或4所述的方法,其特征在于,所述方法进一步包括在时钟信号的交替周期内从所述第一和第二队列读出消息。
7、如权利要求1所述的方法,其特征在于,触发第一总线代理写消息发生在时钟信号的第一奇偶周期中,触发第二总线代理写消息发生在时钟信号的第二奇偶周期中。
8、如权利要求7所述的方法,其特征在于,所述方法进一步包括对消息写入和传输至第一总线段的顺序进行仲裁。
9、一种系统,其特征在于,所述系统包括:
耦合至一个或多个第一总线代理的第一总线段,其中所述第一总线代理被配置为写消息给第一总线段以及从第一总线段读取消息;
与所述第一总线段分开且耦合至一个或多个第二总线代理的第二总线段,其中所述第二总线代理被配置为写消息给第二总线段以及从第二总线段读取消息;
耦合至所述第一总线段和第二总线段的第一电路,所述第一电路被设置为读取写在第一总线段上的消息以及将所述消息写入第二总线段;
耦合至所述第一总线段和第二总线段的第二电路,所述第二电路被设置为读取写在第二总线段上的消息以及将所述消息写入第一总线段。
10、如权利要求9所述的系统,其特征在于,所述系统位于片上系统中。
11、如权利要求9所述的系统,其特征在于,每个总线代理包括处理器和本地高速缓存。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/344,411 | 2006-01-31 | ||
US11/344,411 US7475176B2 (en) | 2006-01-31 | 2006-01-31 | High bandwidth split bus |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101075221A CN101075221A (zh) | 2007-11-21 |
CN100587680C true CN100587680C (zh) | 2010-02-03 |
Family
ID=38090816
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200710004490A Expired - Fee Related CN100587680C (zh) | 2006-01-31 | 2007-01-15 | 管理分离总线上总线代理之间的数据流的方法和系统 |
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)
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 | 天津国芯科技有限公司 | 一种双总线内存控制器 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2746530B2 (ja) * | 1993-01-30 | 1998-05-06 | 洲 植 全 | 共有メモリマルチプロセッサ |
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 |
EP1189141A3 (en) * | 2000-09-13 | 2005-12-28 | Texas Instruments Inc. | Bus bridge |
JP2002304369A (ja) * | 2001-04-04 | 2002-10-18 | Nec Corp | バスシステム |
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 |
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 |
KR20050089084A (ko) * | 2002-12-30 | 2005-09-07 | 코닌클리즈케 필립스 일렉트로닉스 엔.브이. | 클러스터 명령어 수준 병렬성 프로세서 및 클러스터 명령어수준 병렬성 프로세서에서의 버스 액세스 방법 |
US7305510B2 (en) * | 2004-06-25 | 2007-12-04 | Via Technologies, Inc. | Multiple master buses and slave buses transmitting simultaneously |
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 |
-
2006
- 2006-01-31 US US11/344,411 patent/US7475176B2/en not_active Expired - Fee Related
- 2006-10-05 DE DE602006014084T patent/DE602006014084D1/de active Active
- 2006-10-05 EP EP06020958A patent/EP1814038B1/en active Active
-
2007
- 2007-01-15 CN CN200710004490A patent/CN100587680C/zh not_active Expired - Fee Related
- 2007-01-31 TW TW096103524A patent/TWI382313B/zh not_active IP Right Cessation
-
2009
- 2009-01-05 US US12/348,603 patent/US7904624B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US7904624B2 (en) | 2011-03-08 |
EP1814038A3 (en) | 2008-01-02 |
TWI382313B (zh) | 2013-01-11 |
CN101075221A (zh) | 2007-11-21 |
US7475176B2 (en) | 2009-01-06 |
EP1814038B1 (en) | 2010-05-05 |
EP1814038A2 (en) | 2007-08-01 |
US20090113096A1 (en) | 2009-04-30 |
TW200821845A (en) | 2008-05-16 |
US20070180176A1 (en) | 2007-08-02 |
DE602006014084D1 (de) | 2010-06-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110647480B (zh) | 数据处理方法、远程直接访存网卡和设备 | |
US7305510B2 (en) | Multiple master buses and slave buses transmitting simultaneously | |
CN100595720C (zh) | 用于基于集线器的存储系统中直接存储器访问的设备和方法 | |
JP4785112B2 (ja) | 複数のマスタを含むサブシステムをオープンコアプロトコルを基盤とするバスに連結するためのバスシステム | |
CN100499556C (zh) | 异构多核处理器高速异步互连通信网络 | |
CN101727413B (zh) | 使用完成者对存储器区域排序要求的知识来修改事务属性 | |
JP4621604B2 (ja) | バス装置、バスシステムおよび情報転送方法 | |
CN103218313B (zh) | 用于实现缓存描述符交互的方法和电子设备 | |
WO2020023797A1 (en) | Unified address space for multiple hardware accelerators using dedicated low latency links | |
CN100585572C (zh) | 用于在cmp中维持高速缓存相关性的协议 | |
CN114265872B (zh) | 一种用于总线的互联装置 | |
JP4729208B2 (ja) | データ転送システム | |
CN100587680C (zh) | 管理分离总线上总线代理之间的数据流的方法和系统 | |
CN100377137C (zh) | 一种C*Core微处理器应用AMBA总线的设计方法 | |
CN1996276A (zh) | 多处理器系统中的数据传输 | |
CN101326505A (zh) | 部分填充的分级交叉开关 | |
JP2021522608A (ja) | ストリーミングデータ転送のためのフロー圧縮を用いたデータ処理ネットワーク | |
CN102419739A (zh) | 多主总线仲裁共享装置以及仲裁方法 | |
JP2002091900A (ja) | 多重トランザクションバスシステム・バスブリッジ用のタイムアウトカウンタ | |
US11301410B1 (en) | Tags for request packets on a network communication link | |
WO2007065777A1 (en) | Method and system of communicating between processors | |
JP7401811B2 (ja) | 情報処理システム、半導体集積回路及び情報処理方法 | |
JP2003085125A (ja) | メモリ制御器及びメモリ制御方法 | |
CN101211328B (zh) | 高性能可编程逻辑系统接口及芯片 | |
JPS61153770A (ja) | 画像処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20100203 Termination date: 20170115 |
|
CF01 | Termination of patent right due to non-payment of annual fee |