CN100487685C - 通过通信总线从多个源发送数据的方法和设备 - Google Patents
通过通信总线从多个源发送数据的方法和设备 Download PDFInfo
- Publication number
- CN100487685C CN100487685C CNB2004800369275A CN200480036927A CN100487685C CN 100487685 C CN100487685 C CN 100487685C CN B2004800369275 A CNB2004800369275 A CN B2004800369275A CN 200480036927 A CN200480036927 A CN 200480036927A CN 100487685 C CN100487685 C CN 100487685C
- Authority
- CN
- China
- Prior art keywords
- data
- source
- source data
- block
- passage
- 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 - Lifetime
Links
- 238000004891 communication Methods 0.000 title claims description 71
- 238000000034 method Methods 0.000 title claims description 66
- 230000005055 memory storage Effects 0.000 claims abstract 3
- 238000012545 processing Methods 0.000 claims description 77
- 230000005540 biological transmission Effects 0.000 claims description 31
- 241001269238 Data Species 0.000 claims description 10
- 239000000758 substrate Substances 0.000 claims description 9
- 239000003550 marker Substances 0.000 claims description 7
- 239000003795 chemical substances by application Substances 0.000 claims description 2
- 230000008878 coupling Effects 0.000 claims 1
- 238000010168 coupling process Methods 0.000 claims 1
- 238000005859 coupling reaction Methods 0.000 claims 1
- 238000011144 upstream manufacturing Methods 0.000 description 32
- 230000014509 gene expression Effects 0.000 description 17
- 238000010586 diagram Methods 0.000 description 13
- 230000006870 function Effects 0.000 description 12
- 230000008569 process Effects 0.000 description 11
- 230000004048 modification Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000000630 rising effect Effects 0.000 description 3
- 230000000712 assembly Effects 0.000 description 2
- 238000000429 assembly Methods 0.000 description 2
- 230000015572 biosynthetic process Effects 0.000 description 2
- 230000003139 buffering effect Effects 0.000 description 2
- 230000007423 decrease Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000005429 filling process Methods 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- 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/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/161—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
-
- 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/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- 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
-
- 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
-
- 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/4009—Coupling between buses with data restructuring
- G06F13/4013—Coupling between buses with data restructuring with data re-ordering, e.g. Endian conversion
-
- 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/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4247—Bus transfer protocol, e.g. handshake; Synchronisation on a daisy chain bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/16—Memory access
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)
- Bus Control (AREA)
- Information Transfer Systems (AREA)
- Hardware Redundancy (AREA)
- Small-Scale Networks (AREA)
Abstract
在存储器系统中,多个存储器模块(图2所示208-211)通过总线(220)进行通信。每个存储器模块包括一个集线器(图3所示302)和至少一个存储器存储部件(304)。集线器从存储器存储部件接收本地数据(图4所示410),并从一个或多个其它存储器模块接收下游数据(420)。集线器将要通过总线发送的数据组合(图7所示718)在数据块结构(440)内,该结构分成多个通道(图5所示508-515)。系统会指示(图6所示612)在数据块结构内第一源在总线上放置的数据(例如,本地或下游数据)中断点将出现的位置。基于该指示,第二源的数据(例如,下游或本地数据)放置在数据块的剩余部分,从而减少了总线上的间隙。
Description
技术领域
本发明一般涉及在基于分组的通信总线上组合和发送数据,并且更具体地说,涉及从多个源组合数据以准备在公共通信总线上发送它们。
背景技术
诸如图1中所示的典型计算机系统100包括处理器102、存储器控制器104和主存储储存器106。主存储储存器106包括一个或多个存储器芯片,如动态随机存取存储器(DRAM)芯片。
为使处理器102从主存储储存器106获得数据,处理器102通过通信总线108向存储器控制器104发送数据请求。存储器控制器104处理并重新格式化请求,然后将一个或多个重新格式化的请求消息通过主存储储存器总线110发送到主存储储存器106。主存储储存器106随后将请求的数据通过主存储储存器总线110返回到存储器控制器104。在收到请求的数据后,存储器控制器104随后将数据通过数据通信总线108发送到处理器102。
与特定请求相关联的信息和数据通常称为“事务”。有时,存储器控制器104可能同时在处理多个事务。这会导致多个源(例如,主存储储存器106内多个DRAM)的数据同时可用于从主存储储存器106经主存储储存器总线110返回到存储器控制器104的情形。发生此情况时,存储器控制器104执行仲裁进程以确定将授权哪个源(例如,哪个DRAM)接入主存储储存器总线110。
一旦授权接入后,依据事务的大小和主存储储存器总线110的宽度(例如,并行比特数),主存储储存器106便将与事务相关联的数据放置到主存储储存器总线110上一个或多个总线时钟周期。例如,如果事务包括52个数据比特,并且总线宽度为32比特,则在总线110上传送数据将需要两个时钟周期。为简明起见,假设报头信息未包括,前32个比特将在第一时钟周期内传送,并且后20个比特将在第二时钟周期内传送。
以上示例显示,在主存储储存器总线110上传送事务数据的最后时钟周期期间,总线110通常并未完全填充。在本示例中,在第二时钟周期期间只填充了32个可用比特中的20个比特,留下12比特为空。在当前系统中,一旦事务完成,主存储储存器总线110将被授权到另一源(例如,另一DRAM),则这12比特将保持为空,并且下一事务的数据将在下一时钟周期上开始。
示例显示,使用先有技术时,间隙自然会在主存储储存器总线110上存在。这些间隙导致系统等待时间增加并减少了带宽。因此,需要更有效地组合多个源的数据以供在总线上传输的方法和设备。
发明内容
在一个实施例中,电子系统包括生成和发送一个或多个存储器接入请求的处理器和多个存储器模块。存储器模块通过通信总线可操作地耦合在一起,并且它们返回在所述一个或多个存储器接入请求中请求的数据。所述多个存储器模块中的每个模块是数据源,并且所述多个存储器模块中的存储模块确定第一源数据和第二数据可用。它也将数据块第一部分内的一个或多个第一相邻通道分配到所述第一源数据的至少一些数据,其中,所述数据块包括一组多个通道并且每个通道包括一组可配置比特,以及将所述数据块第二部分内的一个或多个第二相邻通道分配到所述第二源数据的至少一些数据。与所述第一部分相邻的所述第二部分在下一通道开始。所述存储器模块还通过所述通信总线和在数据块传输期,发送所述数据块第一部分内的至少部分所述第一源数据和所述数据块第二部分内的至少部分所述第二源数据。
在又一实施例中,存储器模块包括用于存储本地数据的一个或多个存储器存储部件和有效耦合到所述一个或多个存储器存储部件及耦合到通信总线的集线器,通过所述通信总线,所述集线器可从一个或多个其它集线器接收下游数据。所述集线器确定第一源数据和第二源数据可用。所述集线器也将数据块第一部分内的一个或多个第一相邻通道分配到所述第一源数据的至少一些数据,其中,所述数据块包括一组多个通道并且每个通道包括一组可配置比特,以及将所述数据块第二部分内的一个或多个第二相邻通道分配到所述第二源数据的至少一些数据,其中,与所述第一部分相邻的所述第二部分在下一通道开始。所述集线器还通过所述通信总线和在数据块传输期,发送所述数据块第一部分内的至少部分所述第一源数据和所述数据块第二部分内的至少部分所述第二源数据。
在又一实施例中,用于组合和发送数据的设备包括:从一个或多个存储器存储部件接收本地数据的单元;通过通信总线从一个或多个下游数据源接收下游数据的单元;以及确定所述本地数据和所述下游数据将如何通过所述通信总线发送的单元。所述确定的做出包括将数据块第一部分内的一个或多个第一相邻通道分配到所述本地数据的至少一些数据,其中,所述数据块包括一组多个通道并且每个通道包括一组可配置比特,以及将所述数据块第二部分内的一个或多个第二相邻通道分配到所述下游数据的至少一些数据,其中,所述第一部分和所述第二部分相邻。
在又一实施例中,通过通信总线发送数据的设备包括:从第一数据源接收第一源数据的单元;从第二数据源接收第二源数据的单元;以及通过所述通信总线发送所述第一源数据和所述第二源数据的单元。发送所述第一源数据和所述第二源数据包括:通过所述通信总线发送所述第一源数据;标识对应于所述第一源数据末尾的第一断点;通过所述通信总线发送与所述第一源数据末尾相邻的所述第二源数据;以及标识对应于所述第二源数据末尾的第二断点。
在又一实施例中,在通信总线上发送数据的方法包括:在第一处理期间安排数据块结构内第一源数据的第一部分,其中,所述数据块结构包括固定数量的相邻、可配置比特;以及通过所述通信总线发送所述第一源数据的第一部分。所述方法还包括:在第二处理期间安排所述数据块结构第一部分内的所述第一源数据剩余部分,其中,所述第一部分包括第一组相邻比特;在所述第二处理期间安排所述数据块结构第二部分内第二源数据的第一部分,其中,所述第二部分与所述第一部分相邻,并且所述第二部分包括第二组相邻比特;以及发送所述第一源数据的剩余部分和所述第二源数据的第一部分。
在又一实施例中,方法包括:确定第一源数据和第二源数据可用;以及将数据块第一部分内的一个或多个第一相邻通道分配到所述第一源数据的至少一些数据,其中,所述数据块包括一组多个通道,并且每个通道包括一组可配置比特。所述方法还包括:将所述数据块第二部分内的一个或多个第二相邻通道分配到所述第二源数据的至少一些数据,其中,与所述第一部分相邻的所述第二部分在下一通道开始;以及通过通信总线和在数据块传输期,发送所述数据块第一部分内的至少部分所述第一源数据和所述数据块第二部分内至少部分所述第二源数据。
在又一实施例中,方法包括安排数据块结构第一部分内第一源的第一源数据,其中,所述数据块结构包括固定数量的相邻、可配置比特,以及所述数据块结构内的数据在通信总线上定期发出。所述方法还包括确定第二源的第二源数据可用于通过所述通信总线发送,以及请求接入所述通信总线以发送所述第二源数据。所述方法还包括:接收在所述数据块结构内应放置至少部分所述第二源数据的位置指示;根据所述指示安排所述数据块结构内至少部分所述第二源数据,导致至少部分所述第二源数据占用与所述第一部分末尾相邻的数据块第二部分;以及在数据块传输期,通过所述通信总线发送所述第一源数据和至少部分所述第二源数据。
在又一实施例中,方法包括安排数据块结构第一部分内的第一源数据,其中,所述数据块结构包括固定数量的相邻、可配置比特。所述方法还包括:接收请求以通过所述通信总线发送第二源数据;标识所述第一源数据中的断点位置;以及在所述断点后安排所述数据块结构第二部分内的至少部分所述第二源数据,其中,所述第二部分与所述第一部分末尾相邻。所述方法还包括在数据块传输期通过所述通信总线发送所述第一源数据和至少部分所述第二源数据。
附图说明
图1显示根据先有技术的计算机系统简化方框图;
图2显示根据本发明实施例的计算机系统简化方框图;
图3显示根据本发明实施例的存储器模块简化方框图;
图4显示根据本发明实施例的集线器简化方框图;
图5显示根据本发明实施例的时序图示例;
图6显示根据本发明实施例,请求接入总线的方法流程图;
图7显示根据本发明实施例,授权接入总线的方法流程图;以及
图8显示根据本发明一个实施例的电子系统。
具体实施方式
在下面的实施例说明中,参考了附图,附图形成了本申请的一部分并通过图示显示了可实践本发明的特定实施例。充分详细地描述这些实施例,以便本领域的技术人员能够实践本发明,并且要理解,在不脱离本发明范围的情况下,可利用其它实施例,并且可进行进程或机械更改。可以认识到,不同实施例的方法实际上可同时或连续组合在一起。本领域的技术人员将可轻松理解不同的置换和组合。
在本文详细描述的本发明不同实施例涉及用于组合和发送数据的新式且新颖的方法和设备。与先有技术方法相比,本发明的实施例具有几个重要优点。具体而言,在多个源的数据需要返回一个或多个请求者的存储器系统中实施时,本发明的实施例提供了减少的系统等待时间和增加的带宽。
图2显示根据本发明实施例的计算机系统200的简化方框图。在一个实施例中,系统200包括一个或多个处理器202、链路控制器206和一个或多个存储器模块208-211。为便于说明,只显示和论述单个处理器202和链路控制器206。然而,在一个系统内可存在多个处理器202和/或链路控制器206。类似地,虽然显示了四个存储器模块208-211,但在一个系统内也可能存在更多或更少存储器模块。
在一个实施例中,每一个存储器模块208-211位于单独的基底上,如可插入的印刷电路板。在其它实施例中,多个存储器模块可位于单个基底上,和/或部分存储器模块可分布在多个基底上。下面将结合图3更详细地描述根据本发明实施例的存储器模块。
有时,处理器202会生成并发送请求,要求接入存储在一个或多个存储器模块208-211内的信息。这些“存储器接入请求”包括请求在存储器模块208-211内存储数据,以及请求从存储器模块208-211检索数据。除处理器202外,在一个实施例中,系统200内可存在一个或多个其它请求者204。例如,系统200可包括一个或多个其它处理器、接口、端口、适配器或能够请求数据的其它实体。处理器202和一个或多个其它请求者204在本文中称为“请求发起者”。
每个接入请求最初由链路控制器206处理,该控制器从请求发起者202、204接收接入请求。例如,但不是限制,链路控制器206可以是北桥或某其它类型的处理元件。基于请求的内容,链路控制器206生成一个或多个“存储器接入命令”,并通过在本文中称为“链路总线”的通信总线220将它们发送到一个或多个存储器模块208-211。如果存储器接入请求要求检索数据(而不是存储),则存储器模块208-211将请求的数据经链路总线220返回到链路控制器206,并且链路控制器206将请求的数据路由回请求发起者202、204。
在一个实施例中,存储器模块208-211在“遂道”或“菊花链”配置中,经链路总线220可操作地耦合在一起。在此配置中,链路控制器206通过链路总线与第一存储器模块208互连。相应地,链路总线220的第一部分222将链路控制器206与第一存储器模块208互连。第一存储器模块208又通过链路总线与第二存储器模块209互连。因此,链路总线220的第二部分224将第一存储器模块208和第二存储器模块209互连,并以此类推。
在一个实施例中,链路总线220是并联总线。例如,但不是限制,链路总线220是32位宽。在其它实施例中,链路总线220可以比32位更宽或更窄,或者它可能是串联总线。
术语“下游”和“上游”将在本说明书的整个剩余部分中使用。底部存储器模块211在链路总线220最远的下游末尾,并且链路控制器206在链路220最远的上游末尾。相应地,存储器模块从最后存储器模块211方向接收的数据和信息被视为从下游方向接收。与此相反,存储器模块从链路控制器206方向接收的数据和信息被视为从上游方向接收。使用类似的术语,存储器模块211被视为是存储器模块210的下游,并且存储器模块210和211被视为是存储器模块209的下游,以及存储器模块209-211被视为是存储器模块208的下游。
每个存储器模块208-210(除最低存储器模块211外)提供到任一下游存储器模块的遂道连接。需要时,额外的存储器模块(未显示)可添加到存储器模块211的下游,或者额外的存储器模块可插入隧道中的任何其它点(例如,在一个或多个现有的存储器模块之间或其上方)。
在一个实施例中,每个存储器模块208-210将每个接收的存储器接入命令传递到其下一下游存储器模块,而不考虑命令目的地(例如,命令寻址的存储器模块)。在另一实施例中,仅在下游方向不是命令的方向时,每个存储器模块208-210才在下游方向中传递接收的存储器接入命令。
从下游方向接收的任何类型的信息在本文中称为“下游数据”,它可包括从存储器检索的数据、报头和其它协议信息以及从下游存储器模块接收的任何其它类型的信息。类似地,术语“上游数据”在本文中用于表示从上游方向接收的任何类型的信息,并且可包括存储器接入命令、要存储的数据、报头和其它协议信息。术语“数据”的使用并不表示仅限于存储或检索的真正数据。此术语也表示包括报头、其它协议信息、命令和其它类型的信息。
图3显示根据本发明实施例的存储器模块300的简化方框图。在一个实施例中,每个存储器模块300包括集线器302和一个或多个存储器存储部件304。下面将结合图4更详细地描述根据本发明实施例的集线器。
在一个实施例中,集线器302和存储器存储部件304共处在单个基底(例如,印刷电路板)上,该基底以可移动方式连接到通信总线。在其它实施例中,集线器302和一个或多个存储器存储部件304可位于不同的基底上,和/或基底可永久性连接到总线。无论是哪一种方式,每个集线器302具有与其相关联并且它可独占地接入的一组存储器存储部件304。相应地,每个存储器模块300可被视为是一个“数据源”。
存储器存储部件304可通过公共链路(如图所示),通过点对点连接,通过菊花链链路或以某一其它方式连接到集线器302。在一个实施例中,每个存储器存储部件304是一个独特的存储器组件,例如,动态随机存取存储器(DRAM)装置。在其它实施例中,存储器存储部件304可包括其它类型的存储器装置(例如,只读存储器(如ROM、PROM、EEPROM等)、闪存或其它存储器类型)。虽然图3中显示了四个存储器存储部件304,但在任一存储器模块300上可包括更多或更少的部件304。
在一个实施例中,集线器302包括一个或多个专用集成电路(ASIC)。在另一实施例中,集线器302包括一个或多个通用或特定用途处理器。集线器302通过上游链路总线310通信到上游存储器模块208(图2)或到链路控制器206。另外,如果存在任何下游存储器模块,集线器302可通过下游链路总线312通信到下游存储器模块。相应地,集线器302从总线第一部分(即下游链路总线312)上的下游存储器模块接收数据,并将数据发送到总线第二部分(即,上游链路总线310)上的链路控制器206。
在一个实施例中,在集线器302接收上游链路总线310上的存储器接入命令时,集线器302在下游链路总线312上重发该命令,并存储命令队列(参见下述图4的元件412)中有关该命令的信息。集线器302也确定它是否为命令的目的地。如果是,则集线器302对与存储器模块300相关联的存储器存储部件304进行任何所需的接入,并在上游链路总线310上发送请求的数据。另外,集线器302在下游链路总线312上从下游存储器模块(未显示)接收数据,并且集线器302在上游链路总线310上重发该数据。
如前面段所示一样,集线器302从至少两个源接收数据:a)存储器存储部件304的数据;以及b)下游存储器模块的数据。集线器302从与集线器302相关联的存储器存储部件304检索的数据在本文中称为“本地数据”。与此相反,集线器302从下游链路总线312上一个或多个下游存储器模块接收的数据在本文中称为“下游数据”。虽然术语“本地数据”和“下游数据”可视为表示系统内只存在两个数据源,但术语并不表示有此限制。数据可从一个或多个其它源发起(例如,一个或多个下游存储器模块或其它源)。
集线器302提供的一个重要功能是接收本地数据和下游数据,以及提供两者到上游链路总线310。在一个实施例中,集线器302接收本地数据和下游数据,并在上游链路总线310上以有效使用上游链路总线310上可用资源的方式发送它们。具体而言,即使有效的下游或本地数据可供返回,数据也将被合并和发送,而不在总线上形成大的数据“间隙”,其中,“间隙”包括通过链路总线发送的一个或多个比特而无有效数据。下面将结合图4-8中所示的实施例,详细描述实现此操作的方式。
图4显示根据本发明实施例的集线器400的简化功能方框图。在一个实施例中,集线器400包括不同的功能元件,这些元件为便于说明而在图4中显示为独特的方框。在不同的实施例中,与每个功能元件相关联的真正逻辑元件和硬件可常驻在单个ASIC中,或者可常驻在多个ASIC和/或其它离散装置中。此外,图4中所示功能元件的不同方面可以硬件、软件或两者实施。
简单地说,在一个实施例中,集线器400接收本地数据和下游数据,确定两个源的数据将如何合并在一起,并将合并的数据提供到上游链路总线452。下一段中,将根据一个特定的实施例简要地描述集线器400的功能组件。其它实施例和额外的细节包括在后面的说明中。
集线器400包括本地数据缓冲区410和下游数据缓冲区420,它们在需要时分别用做接收和存储本地数据和下游数据的单元。集线器400还包括本地仲裁逻辑单元414、下游仲裁逻辑单元422和源间仲裁单元416,这些单元协同操作以确定本地数据和下游数据将如何在上游链路总线452上发送。集线器400还包括用于安排本地输出430的单元、安排下游输出432的单元以及数据组合单元450,这些单元的作用是根据仲裁单元414、416、422所做的决定,将本地数据和下游数据安排成数据块结构。数据块结构由缓冲区440、442表示。组织成数据块结构的数据以邻接方式在上游链路总线452上发送。另外,集线器400包括命令队列412,集线器将与接收的存储器接入命令相关的信息存储到队列中。
现在将更详细地描述数据块结构。在一个实施例中,数据块结构(在本文中也称为“数据块)包括固定数量的可配置比特。例如,在一个实施例中,一个数据块包括256比特。在替代实施例中,一个数据块内可存在更多或更少的比特。数据要在上游链路总线452上发送时,数据块结构的比特将适当配置(例如,以“1”或“0”填充它们)有数据,并且在数据块传输期(即下面描述的一个或多个链路总线时钟周期)数据会按时钟输出到总线上。
在一个实施例中,数据块分成整数数量的相邻“通道”,其中,每个通道包括一组可配置比特。例如,在一个实施例中,数据块包括一组8个通道。在一个实施例中,数据块结构内的通道数量是固定的,并且每个通道包括相同数量的比特。在其它实施例中,通道的数量可能不同,和/或每个通道的比特数量从通道到通道可能不同。通道结构在图4中由缓冲区440、442表示。每个缓冲区440、442表示具有标为“0”到“7”的8个通道的数据块。实际上,缓冲区440、442可以是单独的缓冲区,或者它们可以是同一缓冲区。缓冲区440、442在图4中分开表示以便说明。
使用256比特数据块和每个块8个通道的示例时,每个通道可包括32比特。相应地,通道0可指定为比特0-31,通道1可指定为比特32-63,通道2可指定为比特64-95,以此类推,以及通道7指定为比特224-255。在替代实施例中,一个数据块内可存在更多或更少的通道。例如,一个数据块可包括少到只有两个通道。在其它替代实施例中,通道0可包括最高有效位,并且通道7可包括最低有效位,或反之亦然,或者分配到各个通道的比特可以不连续的方式分配。
正如下面将更详细解释地一样,在从本地和下游源均可得到数据时,不同实施例的通道结构使集线器400可通过上游链路总线452有效地发送数据。集线器400执行几个基本进程。首先,集线器确定第一和第二源(例如,本地或下游源,或反之亦然)的数据接收和可用的时间。第二,执行仲裁进程以确定在任一特定数据块传输期间将授权哪一数据接入上游链路总线。第三,执行通道填充进程以标识在特定数据块传输期间数据将利用哪个通道。通道填充进程涉及将数据块第一部分内的一个或多个第一相邻通道分配到第一源数据的至少一些数据,以及将数据块第二部分内一个或多个第二相邻通道分配到第二源数据的至少一些数据,其中,与第一部分相邻的第二部分在下一通道开始。最后,部分第一源数据和第二源数据在数据块传输期通过通信总线发送。
再参照图4,从下游链路总线454接收下游数据。在一个实施例中,下游数据被放入下游数据缓冲区420中,或者路由到下游快速路径(flythrough path)472。类似地,从存储器存储部件402(例如,图3中的部件304)接收本地数据。在一个实施例中,本地数据被放入本地数据缓冲区410中,或者发送到本地快速路径470。
在一个实施例中,在下游数据缓冲区420或本地数据缓冲区410中不存在未发送的下游或本地数据时,以及只有一个源的数据在竞争上游总线452时,使用下游快速路径472和本地快速路径470。在这些情况下,任一源的数据只需被授予总线,以便加快数据返回到请求者。在其它实施例中,任一或两个快速路径470、472可排除在系统之外,并且本地和下游数据可以被缓冲而不考虑缓冲区410、420的状态。
为完全描述不同实施例的通道填充技术,本说明的剩余部分假设多个源在竞争总线,并且本地数据和下游数据分别暂时存储在本地数据缓冲区410和/或下游数据缓冲器420中,而不是要通过快速路径470、472路由。相应地,在后面的大部分说明中,多个源的数据假设为可用,并且多个源在竞争接入上游链路总线452。
在从下游链路总线454接收下游数据时,下游数据选通信号408发送到下游仲裁逻辑单元422。假设下游数据在放入下游数据缓冲区420中,下游缓冲区状态信号476表示下游数据缓冲区不为空。缓冲区不为空时不使用下游快速路径472。
下游仲裁逻辑单元422包括用于生成总线接入请求的单元。在数据选通信号408和缓冲区状态信号467表示下游数据可通过上游链路总线452发送时,下游仲裁逻辑单元422将下游请求信号461发送到源间仲裁单元416。下游请求要求源间仲裁单元416允许下游仲裁逻辑单元422在上游链路总线452上提供其下游数据。
类似地,在本地数据侧,在从存储器存储部件402接收本地数据时,发送本地数据选通信号404到本地仲裁逻辑单元414。假设本地数据在放入本地数据缓冲区410中,本地缓冲区状态信号477表示本地数据缓冲区不为空。缓冲区不为空时不使用本地快速路径470。
本地仲裁逻辑单元414包括用于生成总线接入请求的单元。在数据选通信号404和缓冲区状态信号477表示本地数据可通过上游链路总线452发送时,本地仲裁逻辑单元414将本地请求信号471发送到源间仲裁单元416。类似于前面所述的下游侧,本地请求要求源间仲裁单元416允许本地仲裁逻辑单元414在上游链路总线452上提供其本地数据。
相应地,在一个实施例中,源间仲裁单元416从本地仲裁逻辑单元414和下游仲裁逻辑单元422两者接收接入总线的请求471、461。源间仲裁单元416包括用于确定本地和下游数据将如何通过总线发送的单元。相应地,在多个请求待处理时,单元416执行仲裁进程,并授权接入本地或下游数据。
在本地或下游仲裁逻辑单元414、422被授权接入总线前,它们不发送其数据。另外,源间仲裁单元416决定将授权从一个源切换到另一个源时,源间仲裁单元416确定并指示在通道结构内下一源将开始其数据的位置。源间仲裁单元416使用下游和本地仲裁逻辑单元422、414的不同信息做出此确定。
具体而言,在一个实施例中,被授权接入总线的源预测在其数据中将出现“断点”的位置,并通知源间仲裁单元416该断点的预测位置。源间仲裁单元416随后使用预测位置确定在通道结构内下一被授权源可开始插入其数据的位置。
一个示例将阐明此概念。示例也参照图5,该图显示了根据本发明实施例的时序图示例。最初将只论述内部时钟信号502和通道数据信号508-515。图5中显示的其它信号将在后面论述。
信号502表示内部时钟信号。内部时钟信号用于定义“处理期”,而每个数据块在该处理期组合。处理期指组合单个数据块的一段时间。虽然图5显示了一个内部时钟周期长的处理期,但处理期可能比一个内部时钟周期更长或更短。
在给定示例中,数据块包括8个通道,并且有效数据在由通道数据信号508-515所示的那些通道中可得到。在第一处理期540,数据插入数据块结构的通道508-515中。一旦组合后,该数据便可提供到总线。在下一处理期452,不同的数据插入数据块结构的通道508-515,并随后可提供到总线。
此外,虽然图5中以一种特定方式显示了内部时钟的不同缘(即,上升和下降缘)与数据和其它信号之间的关系,但此关系在其它实施例中可能不同。例如,可相对于其它信号反转时钟信号。其它修改也可考虑在内。
在一个实施例中,特定的存储器接入请求被视为“事务”,并且事务标识符与请求相关联以便标识返回的数据。事务实际上可以任意长度。例如,事务可短到为单个比特,或者事务长度可为数百万比特。在一个实施例中,与事务相关联的数据做为一组“数据段”返回,每个段包括对应于通道长度的多个比特。例如,如果事务包括256比特,并且每个通道是32比特宽,则事务可分成8个数据段。报头可与用于事务的数据一起发送以便标识数据。报头可以为任意长度。在下面所述的实施例中,报头只用掉一个通道。在其它实施例中,报头可用掉不止一个通道,或者可使用不为每个事务返回报头的协议。
在图5所示的示例中,在处理期540,在传送的第一数据包括位于通道“0”508的报头550和由在通道“1-7”509-515中显示的7个本地数据段组成的第一部分本地数据。包括在每个数据包络中的符号表示如下:“L”表示本地数据;“R”表示下游(或远程)数据;“T*”表示事务编号;以及“D*”表示事务的数据段编号。相应地,对于由“0”(T0)标识的本地事务,在通道“1”509中所示的标识符“L_T0_D0”表示在处理期540通道“1”内的数据对应于本地数据(L)的第一段(D0)。类似地,对于由“0”(T0)标识的下游事务,在处理期544通道“1”509中所示的标识符“R_T0_D7”表示数据对应于下游数据(R)的第8段(D7)。
由于本地源的数据在第一处理期540存在于通道结构中,因此,假设源间仲裁单元(图4所示416)以前授权了接入到本地源的总线。在所示示例中,本地源在第一授权期具有8个数据段要发送。由于报头550在第一处理期540用掉通道“0”508,因此,在该第一处理期540只有8个数据段中的7个数据段可组合。由标示为“L_T0_D7”的第8段组成的本地源数据的剩余部分显示为在第二处理期542被放入通道“0”。
第8段“L_T0_D7”的末尾表示本地源数据中的“断点”。此断点与第二处理期542的通道“1”509开始处一致。在一个实施例中,本地或下游源的数据可用于填充第二处理期542的剩余通道“1-7”。
在示例中,源间仲裁单元(图4所示416)授权了随后接入下游源(R)。具体而言,下游源在其第一事务(T0)内具有1个报头和16个数据段(D0到D15)要发送。由于断点出现在第二处理期542通道“1”509的开始处,因此,报头可放置在该处。后面是16个数据段,如第二处理期542的通道“2”510中指示符“R_T0_D0”到如第四处理期546通道“1”509中指示符“R_T0_D15”所示。具体而言,16个数据段(R_T0_D0到R_T0_D15)中的6个段放置在第二处理期542的通道2-7中。因此,在第二处理期542,第一源的数据剩余部分放置在数据块结构的第一部分,并且第二源的部分数据放置在数据块结构的第二部分。
第三处理期544完全被R_T0事务用掉,并且在该期间无断点出现。下游事务的断点直至第四处理期546的通道“2”510开始处后才出现。在下游事务的断点后,标示为“T1”的第二本地事务的10个本地数据段中前5个段和报头在第四和第五处理期546、548组合。
如图5所示,多个源的数据可放置在通道中以便在特定的数据块传输期发出。这具体显示在处理期542和546。在一个实施例中,如果第一源的数据(例如,本地数据或下游数据)将不用掉所有通道,则第二源数据(例如,下游数据或本地数据)可放置在剩余未利用的通道中。相应地,第一源数据和第二源数据均可在单个数据块传输期在上游链路总线上发送。假设另一种方式,第一源数据放置在数据块的第一部分,并且第二源数据放置在数据块的第二部分,其中,与第一部分相邻的第二部分在下一通道开始。如本发明实施例提供的将多个源的数据放置在同一数据块内的此功能使得数据返回的等待时间减少,并提高了链路总线带宽的利用率。
现在将结合图5中所示示例,更详细地描述图4所示的实施例操作。在第一处理期540,与第一本地事务(“L_T0”)相关联的本地数据通过本地数据信号540的状态表示为可用。另外,与第一下游事务(“R_T0”)相关联的下游数据通过下游数据信号506的状态表示为可用。
同时参照图4,本地数据信号504对应于存储在本地数据缓冲区410中的数据,并且下游数据信号506对应于存储在下游数据缓冲区420中的数据。本地数据选通信号404表示数据可从本地源提供时,本地仲裁逻辑单元414将总线接入请求471发送到源间仲裁单元416。类似地,下游数据选通信号408表示数据可从下游源提供时,下游仲裁逻辑单元422也将总线接入请求461发送到源间仲裁单元416。
源间仲裁单元416使用各种标准确定在任一给定处理期将获得总线授权的源。源间仲裁单元416决定将总线授予某个特定源时,它将总线授权信号发送到该源。例如,如图5所示,本地数据504(L_T0)先获得总线授权。相应地,源间仲裁单元416将总线授权信号474发送到本地仲裁逻辑单元414。在一个实施例中,总线授权信号474在处理期被发送,在该处理期内数据将真正放置在数据块中(例如,处理期540)。在其它实施例中,信号474可在前一处理期发送。
另外,源间仲裁单元416发送在下面进一步描述的位置指示符,以便本地仲裁逻辑单元414可知道报头或数据应先放置在哪个通道。在一个实施例中,源间仲裁单元416以“下一通道入”信号475的形式将此指示发送到本地仲裁逻辑单元414。在图5的示例中,第一处理期540的“下一通道入”是通道“0”508。相应地,通道“0”是本地仲裁逻辑单元414要将其事务数据的报头放置到的通道。本地仲裁逻辑单元414随后安排其数据,以便第一处理期540的剩余通道将填充其第一事务的数据段。
在一个实施例中,安排本地输出单元430从本地仲裁逻辑单元414接收指示下一通道入的信号476。如果在该处理期要组合报头,则安排本地输出单元430随后检索报头。在一个实施例中,要包括在报头中的信息从命令队列412检索。另外,单元430从本地数据缓冲区410检索数据。安排本地输出单元430将报头和/或数据布置到本地预发射数据块440中,其具有数据块/通道结构。例如,如果下一通道入是通道“0”,则安排本地输出单元430将报头放置在本地预发射数据块440的通道“0”中,并且将前7个数据段(L_T0_D0到L_T0_D6)放置在通道“1”到通道“7”。
一旦授权发到本地仲裁逻辑单元414,单元414便预测其数据的断点。换而言之,它确定其用于事务的数据将在哪个处理期和哪个通道完成。在一个实施例中,此预测是基于本地仲裁逻辑单元414知道事务大小,此大小以前存储在命令队列412中。在一个实施例中,本地仲裁逻辑单元414将断点预测为整个事务的末尾。在另一实施例中,事务的数据返回将在多个部分中执行(例如,事务超过一定大小时),并且断点可出现在数据末尾前的某个位置。
在一个实施例中,本地仲裁逻辑单元414预测断点将出现在下一即将到来的处理期内,则它通过发送本地断点指示符信号472到源间仲裁单元而指示断点将出现。另外,单元414指示数据块结构内数据末尾的位置。在一个实施例中,这通过发送断点将在通道结构中出现的位置的指示符473而实现。这些信号在图5中分别对应信号526和524。
在图5的示例中,本地数据仲裁逻辑单元414知道其事务大小包括8个数据段(D0-D7),并因此确定它将只需要填充第二处理期542的通道“0”508以便结束事务。相应地,本地数据仲裁逻辑单元414将确定断点将出现在下一处理期542。
使用本地断点信号472(图4)、526(图5),本地数据仲裁逻辑单元414向源间仲裁单元416指示断点将出现。在所示实施例中,此指示通过将信号472、526设为高状态而完成。在替代实施例中,可使用低设置,或者可进行某一其它类型的指示。由于本地断点信号472、526是二进制指示(即,有一个即将出现的断点或没有),因此,信号可通过单个比特或线路表示。
另外,使用下一本地通道信号473(图4)、524(图5),本地数据仲裁逻辑单元414向源间仲裁单元416指示下一断点将在通道结构内出现的位置。在一个实施例中,此指示出现的形式是在下一处理期542中哪个通道将首先可用的标识。如示例所示,在其它源被授权接入总线时,下一本地通道信号473、542可承载“1”,表示通道“1”509将可用于另一源。在另一实施例中,下一本地通道信号473、542可指示哪个通道将承载当前事务的最后数据段(例如,当前示例中的“L_T0_D7”)。在此类实施例中,下一本地通道信号473、542将承载“0”,表示通道“0”508将承载最后段。
由于下一本地通道信号473、542指示通道的身份,因此,可用于信号473、524的比特数量足以进行此类指示。在使用8个通道的实施例中,3比特信息或线路可用于信号473、524。
在不同的替代实施例中,源间仲裁单元416可接收其它类型的信息,这些信息使它可确定下一处理期是否将出现断点,以及该断点将出现的位置。或者,源间仲裁单元416可自行做出这两个确定之一或两者。在仍有的其它实施例中,即使断点将在下一处理期后发生的一个处理期出现,仲裁单元414、416或422也可确定并指示将出现断点的位置。多种替代实施例可考虑,并且那些实施例将在本发明的范围内。
在源间仲裁单元416确定(经信号526)断点将在下一处理期542出现时,单元416可决定在下一期间542将总线授权给同一源(即,当前示例中的本地源)或另一源(即,当前示例中的下游源)。在图5的示例中,源间仲裁部件416决定将总线授权给下游数据506(R_T0),它还具有来自第一处理期540的待处理请求。相应地,源间仲裁单元416将总线授权信号464发送到下游仲裁逻辑单元422。在一个实施例中,信号464在第二处理期542被发送。在另一实施例中,信号464可更早发送(例如,在第一处理期540)。
另外,源间仲裁单元416发送位置指示符,以使下游仲裁逻辑单元422能够知道其报头或数据应先放置在哪个通道。在一个实施例中,源间仲裁单元416以下一通道入信号465的形式将此指示发送到下游仲裁逻辑单元422。下一通道入信号465可包括“通道标识符”,这是一个标识通道的整数。例如,在数据块结构内存在8个通道的示例中,通道标识符可以是从0到7的整数。在其它实施例中,可发送数据结构内的比特编号(例如,用于256比特数据结构的从0到255的编号)或某一其它断点位置指示。
在一个实施例中,下一通道入信号465对应于在上一处理期540由以前被授权源(例如,此情况下的本地源)发送的下一本地通道信号524。如上所述,在上一处理期本地仲裁逻辑单元414发送的下一本地通道信号524是“1”,表示通道“1”509是本地数据断点后可用的第一通道。
在其它实施例中,下一通道入信号465可以是基于下一本地通道信号524值的一个值,但它可能不完全相同。例如,但不是限制,下一本地通道信号524可指示本地数据将用掉的最后通道,并且下一通道入信号465可指示下游数据应先占用的第一通道。另外,下一本地通道信号和下一通道入信号可以不同于通道标识符的方式指示。例如,两者之一或两者可指示在数据块内的比特位置,或者可以某一其它方式指示。
在图5的示例中,如处理期540中所示一样,第二处理期542的“下一通道入”是通道“1”509。相应地,通道“1”是下游仲裁逻辑单元422要将其事务数据的报头放置到的通道。下游仲裁逻辑单元422随后安排其数据,以便第二处理期542的剩余通道将填充其第一事务的数据段。
一旦授权发到下游仲裁逻辑单元422,它便预测其数据的断点。在一个实施例中,此预测是基于下游仲裁逻辑单元422知道事务大小,其以前存储在命令队列412中。在所示示例中,事务大小为16个数据段。相应地,断点将不会在第三处理期544(即,下一处理期)出现。预测的断点而是出现在第四处理期546。此外,下游数据仲裁逻辑单元422知道其事务大小包括16个数据段(D0-D15),并且因此它确定它将填充第四处理期546的通道“0”和“1”以便结束事务。
参照处理期542,下游仲裁逻辑单元422使剩余的相邻通道填充其报头和数据段。然而,由于断点将不在下一处理期544出现,因此,它在处理期542不经下游断点信号462、530指示断点即将出现。如下面所述,此指示而是在处理期544做出。
在处理期544,下游仲裁逻辑单元422使整个数据块填充有其事务数据(D6-D13)。现在,由于断点将在下一处理期546出现,因此,下游仲裁逻辑单元422经下游断点信号462、530指示断点即将出现。另外,下游仲裁逻辑单元422经下一下游通道信号463、528指示断点的位置。如图5示例的下一下游通道信号528指示,断点将出现在第四处理期546的通道“2”510。
在源间仲裁单元416确定(经信号530)断点将在下一处理期546出现时,单元416可决定在下一期间546将总线授权给同一源(即,当前示例中的下游源)或另一源(即,当前示例中的本地源)。在图5的示例中,源间仲裁部件416决定将总线授权给本地数据506(R_T1),它具有来自第二处理期542的待处理请求。进程随后继续以自行重复。
如上所述,本地仲裁逻辑单元414和下游仲裁逻辑单元422安排其数据,以便任一给定处理期数据块的通道正确填充有本地或下游数据。在一个实施例中,这如使用第二处理期542(图5)示例的以下所述实现。
安排下游输出单元432从本地仲裁单元414接收指示下一通道入的信号466。如果在该处理期要组合报头,则安排下游输出单元432随后检索报头。在一个实施例中,要包括在报头中的信息从命令队列412检索。另外,单元432从下游数据缓冲区420检索数据。安排下游输出单元432将报头和/或数据布置到下游预发射数据块442中,该数据块具有数据块/通道结构。例如,如果下一通道入是通道“1”,则安排下游输出单元432将在下游预发射数据块442通道“1”中放置报头,并且将在通道“2”到“7”放置前6个数据段(R_T0_D0到R0_D5)。
如上所述,数据块的通道“0”分配到本地源数据的剩余部分。相应地,安排本地输出单元430将该剩余部分数据放置在本地预发射数据块440。具体而言,它将事务的最后数据段(L_T0_D7)放置到本地预发射数据块440的通道“0”。
为复用预发射数据块440、442内的数据,中间源仲裁单元416将“本地/下游选择”信号460发送到数据组合单元450。数据组合单元450包括用于组合数据和在数据块传输期通过上游链路总线452发送数据的单元。
在一个实施例中,本地/下游选择信号460是具有对应于数据块结构中通道数的多个比特的信号。在给定示例中,本地/下游选择信号460是8比特信号,其中,每个比特对应一个通道。如果比特是在第一状态(例如,0),则它可向数据组合单元450指示它将从本地预发射数据块440的对应通道检索数据,并且如果该比特是在第二状态(例如,1),则它可指示数据将从下游预发射数据块442对应通道检索,或反之亦然。
例如,假设本地/下游选择信号460的最高有效位对应于通道“0”,并且信号的最低有效位对应于通道“7”。还假设“0”值表示本地源,并且“1”值表示下游源。对于第二处理期542(图5),本地/下游选择信号460将具有“0 1 1 1 1 1 1 1”值。对于第四处理期546,信号460将具有“1 1 0 0 0 0 0 0”值。
在其它实施例中,哪个比特对应于哪个特定通道可能不同。另外,“1”值可表示本地源,并且“0”值可表示本地源。在仍有的其它替代实施例中,数据组合单元450可使用不同格式化的信息,确定用于通道的源。在仍有的其它替代实施例中,可能不使用单独的本地预发射数据块440和下游预发射数据块442。本地和下游源的数据而是可直接放置在单个预发射数据块(未显示)中。在此实施例中,可能不必将通道配置(即,哪个源被授予了哪个通道)通知数据组合单元450。数据组合单元450而是可只将单个预发射数据块中的数据提供到上游链路总线452。
在一个实施例中,内部时钟信号502以低于链路总线时钟的频率操作,并且链路总线时钟频率大约为内部时钟信号502频率的整数倍。例如,但不是限制,内部时钟信号502可以兆赫兹(MHz)范围的频率操作,而链路总线时钟可以千兆赫兹(GHz)范围的频率操作。内部时钟和/或链路总线时钟也可以更高或更低的数据频率操作。另外,在其它实施例中,这些时钟可以大约相同的频率操作。
每个链路总线时钟周期,数据组合单元450提供的数据可通过上游链路总线452发送。在一个实施例中,一个数据块在单个“数据块传输期”通过上游链路总线452发出,而一个数据块传输期可以是一个或多个链路总线时钟周期长。
例如,但不是限制,假设每个数据块包括64比特的数据。如果链路总线是32比特宽,则两个链路总线时钟周期可用于发送一个数据块。在此示例中,假设处理期(例如期间540)是一个内部时钟周期长,链路总线时钟的频率可以是内部时钟频率的两倍,但情况可能不是这样。例如,如果内部时钟以400MHz操作,链路总线时钟可以大约800MHz操作。
又如,如果数据块是256比特宽,并且链路总线是16比特宽,则16个链路总线时钟周期可用于发送一个数据块。相应地,单个数据块传输期将是16个链路总线时钟周期长。在此示例中,链路总线时钟的频率可以是内部时钟频率的16倍。例如,如果内部时钟以400MHz操作,链路总线时钟可以大约6.4GHz操作。
以上示例假设对应于链路总线宽度的多个比特在每个链路总线时钟周期发出(例如,在上升或下降时钟缘)。在替代实施例中,多组比特可在每个时钟周期发出(例如,在上升和下降时钟缘两者上)。在这些替代实施例中,数据块传输期的持续时间可与上述示例不同。
本地、下游和源间仲裁逻辑单元414、422、416的一些功能可以某种方式执行,该方式可以流程图形式轻松描述。因此,现在描述图6和图7以便提供不同实施例的进一步理解。
图6显示根据本发明实施例,请求接入总线的方法流程图。在一个实施例中,所有或部分的方法可由本地仲裁逻辑单元414(图4)和/或下游仲裁逻辑单元422(图4)执行。在其它实施例中,其它功能元件可执行所有或部分的方法。为便于说明,术语“第一源”和“第二源”用于描述请求接入上游总线的实体。这些术语并不表示专门标识本地或下游仲裁逻辑单元414、422。
方法在方框602开始,确定第一源的数据是否可提供用于通过上游链路总线传输。在一个实施例中,可根据数据选通信号(例如,图4所示选通信号404、408)的状态做出此确定。在另一实施例中,可根据缓冲区空/不为空信号(例如,图4所示信号477、467)做出确定。在其它实施例中,也可以其它方式做出确定。如果第一源数据不可用,则方法会等待。
如果第一源数据可用,则在方框604,第一源发送总线接入请求。在一个实施例中,请求发送到源间仲裁单元416(图4)。源间仲裁单元416在特定内部处理期也可从其它源接收请求。源间仲裁单元416负责对输入的总线接入请求做出仲裁,并授权接入。
在一个实施例中,在方框606,第一源等待源间仲裁单元416的授权指示。另外,在获得接入授权时,第一源从源间仲裁单元416寻找下一通道可用指示符。下一通道可用指示符告诉第一源在为传输而构建的数据块内它将开始放置报头和/或数据的位置。
在方框608,第一源随后相应地在数据块内安排其数据。在一个实施例中,数据安排在一个或多个预传输数据块内(例如,图4所示方框440、442)。在一些处理期,只有一个源在数据块内放置数据,而在其它处理期,至少两个源在数据块内放置数据。
在方框610,确定第一源的事务是否将在下一处理期结束。如果未结束,则第一源继续在下一数据块安排其数据。由于事务将不在该处理期结束,因此,随后下一数据块的所有通道将由第一源用掉。过程随后重复。
如果确定第一源的事务将在下一处理期结束时,则在方框612,第一源向源间仲裁部件416(图4)指示断点将出现。另外,第一源发送断点将出现的位置指示。例如,第一源可发送在事务结束后下一可用通道的身份。
在下一处理期,在方框614,第一源随后在下一数据块第一部分内的一个或多个第一相邻通道内安排所有剩余数据。如果无数据剩余(例如,断点出现在前一期间最后通道后),则第一源不在下一数据块内放置任何数据。方法随后重复。
如果源间仲裁部件416(图4)决定将总线随后授权给第二源,则第二源的数据将放置在数据块第二部分内的一个或多个第二相邻通道内,其中,与第一部分相邻的第二部分在下一通道开始。一旦数据块结束,第一源数据和第二源数据便在数据块传输期(即,一个或多个链路总线时钟周期)通过总线发送。
图7显示根据本发明实施例,授权接入总线的方法流程图。在一个实施例中,所有或部分的方法可由源间仲裁逻辑单元416(图4)执行。在其它实施例中,其它功能元件可执行所有或部分的方法。
在方框702,在从第一源收到总线接入请求时,方法开始。例如,总线接入请求可由本地仲裁逻辑单元414(图4)或下游仲裁逻辑单元422(图4)发出。在不同的时间,源间仲裁逻辑单元416可能具有零到多个总线接入请求待处理,这表示请求者尚未获得接入总线授权。
在方框704,确定总线是否闲置。在一个实施例中,无其它源当前在总线上发射,以及无其它请求待处理时,总线被视为处于闲置状态。如果总线闲置,则在方框714,源间仲裁单元416可向第一源指示它被授权接入总线。另外,另一源在该处理期结束在总线上的传输的情况下,源间仲裁单元416可指示断点将出现的位置(即,下一可用通道的身份)。
在方框718,源间仲裁单元416(图4)可随后控制在要发送的数据块内的数据的组合和传输。在一个实施例中,这通过发送本地/下游选择信号460(图4)到负责通过上游链路总线复用和发送数据的功能元件(例如,图4所示数据组合单元450)而实现。方法随后结束。
再参照方框704,如果总线不闲置(例如,另一源正在总线上发射,或者其它请求待处理),则在方框706,确定断点是否将出现在下一处理期。在一个实施例中,通过观测由使用总线的源提供的断点信号(例如,图4所示信号472、462)而做出此确定。如果无断点即将出现,则方法会等待。
如果当前在使用总线的源指示断点将在下一处理期上出现,则在方框708,确定断点位置的身份。在一个实施例中,通过观测在使用总线的源提供的“下一通道出”信号(例如,图4所示信号473、463)而确定断点的位置。
在方框710,对所有待处理请求进行仲裁,以确定随后将被授权接入以使用总线的源。仲裁进程可使用不同的标准以确定将获得接入总线的源。
在方框712,确定第一源是否随后可通过总线发送数据。如果可以,则执行方框714和718,这在上面已更详细地描述。方法随后结束。
如果在方框712第一源未获授权接入总线,则在方框716,源间仲裁单元416可向请求接入总线的另一源指示它被授权接入总线。另外,源间仲裁单元416可指示断点将出现的位置(例如,下一可用通道的身份)。随后执行方框718,并且方法会结束。
在上述实施例中,集线器体系结构被描述为主要以硬件方式实施。在其它实施例中,集线器体系结构的一个或多个元件可做为一系列的指令,以固件或软件方式实施,这些指令在由微处理器或其它计算装置执行时,执行与上述实施例相同的功能并产生相同的结果。相应地,用于执行集线器功能的一组计算机可执行指令可存储在计算机可读介质上(例如,硬盘、光盘或磁盘、ROM、RAM或实际上任何其它计算机可读介质)。
另外,集线器体系结构可做为电子系统的一部分包括在内。图8显示根据本发明一个实施例的电子系统。图8和以下论述旨在提供可实施本发明实施例的合适环境的简要、一般性说明。本领域的技术人员将理解,本发明可通过其它计算机机系统配置实践,包括手持式装置、多处理器系统、基于微处理器或可编程的消费者电子装置、网络个人计算机、微型计算机、大型计算机、数据库计算机及诸如此类。
图8所示的系统包括通用计算机800,它包括一个或多个处理部件810、北桥812、系统存储器814及将不同的系统组件互连并可以是几种类型总线结构中任一结构的系统总线820。
在一个实施例中,北桥812充当系统总线820与处理部件810和系统存储器814之间的接口。
相应地,北桥812做为输入/输出(I/O)控制器和存储器控制器操作。在一个实施例中,北桥812可包含链路控制器以代替存储器控制器。北桥812通过处理器总线816与处理部件810进行通信,并且通过存储器总线818与系统存储器814进行通信。
系统存储器814根据本发明实施例进行配置。相应地,系统存储器814包括一个或多个存储器模块824(例如,图2所示的模块208)。此外,在不同实施例中,系统存储器814可包括链路控制器(例如,图2所示控制器206)和/或只读存储器(ROM)825和/或随机存取存储器(RAM)826。
计算机800还包括用于从未显示的硬盘读取和写入硬盘的硬盘驱动器827、用于从可移动磁盘829读取或写入该磁盘的磁盘驱动器828及用于从诸如CD ROM或其它光学介质等可移动光盘831读取或写入该光盘的光盘驱动器830。硬盘驱动器827、磁盘驱动器828及光盘驱动器830可分别通过硬盘驱动器接口832、磁盘驱动器接口833、以及光盘驱动器接口834连接到系统总线820。
用户可通过诸如键盘840、指点装置842等输入装置或其它输入装置(未显示),将请求和信息输入计算机800。这些和其它输入装置可通过耦合到系统总线的串行端口接口846连接到处理部件810,或者可通过其它接口连接,如并行端口、游戏端口或通用串行总线(USB)。监视器847或其它类型的显示装置也可经诸如视频适配器848等接口连接到系统总线820。除监视器外,系统也可包括其它外围输出装置(未显示),如扬声器和打印机。
计算机800可使用到诸如远程计算机849的一个或多个远程计算机的逻辑连接,在连网的环境中操作。计算机800和远程计算机849可以是客户机、服务器、路由器、网络个人计算机、对等装置或其它公共网络节点。图8中所示的逻辑连接包括局域网(LAN)851和广域网(WAN)852。
在LAN连网环境中使用时,计算机800通过网络接口或适配器853连接到局域网851。
在WAN连网环境中使用时,计算机800一般包括用于通过WAN852建立通信的调制解调器854或其它单元。可以内置或外置的调制解调器854经串行端口接口846连接到系统总线820。可理解,所示网络连接是用于示范,并且可使用在计算机之间建立通信链路的其它装置。
结论
本文描述了用于组合和发送数据分组的方法和设备的不同实施例,及在电子系统内实施例的结合的说明。可对不同实施例进行本领域技术人员将明白的修改以实现相同的结果。具体而言,但不是限制,不同所示功能块和方法步骤之间的安排和互连可以不同,并且其它不同的功能块和步骤可用于实现相同的功能,以大致相同的方式实现大致相同的结果。此外,结合实施例的系统类型可能不同(例如,它可包括比所示和所述实施例更多、更少或不同的组件,或者组件可以不同的方式互连)。此外,一些或所有功能组件可以软件方式实施。
虽然本文已显示和描述了特定的实施例,但本领域的普通技术人员将理解,计划实现相同目的的任何安排可替代所示特定的实施例。本领域的普通技术人员将明白本发明的许多修改。相应地,此申请旨在涵盖本发明的所有修改或变化。很明显,本发明只受下面的权利要求书及其等同物的限制。
Claims (40)
1.一种电子系统,它包含:
处理器,生成并发送一个或多个存储器接入请求;以及
多个存储器模块,通过通信总线可操作地耦合在一起,其返回在所述一个或多个存储器接入请求中请求的数据,其中,所述多个存储器模块中的每个模块是数据源,并且所述多个存储器模块中的每个模块确定第一源数据和第二源数据可用,对所述第一源数据和第二源数据中的至少一个产生一个报头;
将数据块第一部分内的一个或多个第一相邻通道分配到所述第一源数据的至少一些数据,其中,所述数据块包含一组多个通道并且每个通道包括一组可配置比特,
将所述数据块第二部分内的一个或多个第二相邻通道分配到所述第二源数据的至少一些数据,其中,与所述第一部分相邻的所述第二部分在第二相邻通道开始;以及
通过所述通信总线和在数据块传输期,发送所述数据块第一部分内的至少部分所述第一源数据和所述数据块第二部分内的至少部分所述第二源数据。
2.如权利要求1所述的电子系统,还包含:
链路控制器,可操作地耦合在所述处理器与所述多个存储器模块中的至少一个模块之间,其接收所述一个或多个存储器接入请求,并基于所述一个或多个存储器接入请求,生成和将一个或多个存储器接入命令通过所述通信总线发送到所述多个存储器模块。
3.如权利要求2所述的电子系统,其中:
通信总线,其中,存储器模块在所述通信总线第一部分上从下游方向从一个或多个其它存储器模块接收数据,并且所述存储器模块在所述通信总线的第二部分上将至少一部分所述第一源数据和至少一部分所述第二源数据向所述链路控制器发送。
4.如权利要求1所述的电子系统,其中存储器模块包含:
用于通过所述通信总线从第二存储器模块接收下游数据的单元,其中,所述下游数据是所述第一源数据;
用于从可接入所述存储器模块的一个或多个存储器存储部件接收本地数据的单元,其中,所述本地数据是所述第二源数据;以及
用于将所述下游数据和所述本地数据组合成所述数据块的单元。
5.如权利要求1所述的电子系统,其中存储器模块包含:
用于通过所述通信总线从第二存储器模块接收下游数据的单元,其中,所述下游数据是所述第二源数据;
用于从可接入所述存储器模块的一个或多个存储器存储部件接收本地数据的单元,其中,所述本地数据是第一源数据;以及
用于将所述下游数据和所述本地数据组合成所述数据块的单元。
6.如权利要求1所述的电子系统,其中所述电子系统是计算机。
7.一种存储器模块,它包含
用于存储本地数据的一个或多个存储器存储部件;以及
集线器,可操作地耦合到所述一个或多个存储器存储部件和通信总线,通过所述通信总线,所述集线器可从一个或多个其它集线器接收下游数据,其中,所述集线器
确定第一源数据和第二源数据可用,对所述第一源数据和第二源数据中的至少一个产生一个报头;
将数据块第一部分内的一个或多个第一相邻通道分配到所述第一源数据的至少一些数据,其中,所述数据块包含一组多个通道并且每个通道包括一组可配置比特,
将所述数据块第二部分内的一个或多个第二相邻通道分配到所述第二源数据的至少一些数据,其中,与所述第一部分相邻的所述第二部分在第二相邻通道开始;以及
通过所述通信总线和在数据块传输期,发送所述数据块第一部分内的至少部分所述第一源数据和所述数据块第二部分内的至少部分所述第二源数据。
8.如权利要求7所述的存储器模块,其中所述一个或多个存储器存储部件和所述集线器共处在单个基底上,所述基底以可移动方式连接到所述通信总线。
9.如权利要求7所述的存储器模块,其中所述一个或多个存储器存储部件包括一个或多个随机存取存储器组件。
10.如权利要求9所述的存储器模块,其中所述一个或多个随机存取存储器组件包括一个或多个动态只读存储器组件。
11.如权利要求7所述的存储器模块,其中所述一个或多个存储器存储部件包括一个或多个只读存储器组件。
12.如权利要求7所述的存储器模块,其中所述集线器包括一个或多个专用集成电路。
13.如权利要求7所述的存储器模块,其中所述集线器包含:
用于通过所述通信总线从第二集线器接收所述下游数据的单元,其中,所述下游数据是所述第一源数据;
用于从所述一个或多个存储器存储部件接收所述本地数据的单元,其中,所述本地数据是所述第二源数据;以及
用于将所述下游数据和所述本地数据组合成所述数据块的单元。
14.如权利要求7所述的存储器模块,其中所述集线器包含:
用于通过所述通信总线从第二集线器接收所述下游数据的单元,其中,所述下游数据是所述第二源数据;
用于从所述一个或多个存储器存储部件接收所述本地数据的单元,其中,所述本地数据是所述第一源数据;以及
用于将所述下游数据和所述本地数据组合成所述数据块的单元。
15.一种用于组合和发送数据的设备,它包含:
用于从一个或多个存储器存储部件接收本地数据的单元;
用于通过通信总线,从一个或多个下游数据源接收下游数据的单元;以及
用于确定所述本地数据和所述下游数据将如何通过所述通信总线发送的单元,其中,做出所述确定包括
将数据块第一部分内的一个或多个第一相邻通道分配到所述本地数据的至少一些数据,其中,所述数据块包括一组多个通道并且每个通道包括一组可配置比特,
将所述数据块第二部分内的一个或多个第二相邻通道分配到所述下游数据的至少一些数据,其中,所述第一部分与所述第二部分相邻,以及
在本地数据和下游数据的至少一个数据中产生一个报头。
16.如权利要求15所述的设备,还包含:
用于生成第一接入请求以通过所述通信总线发送所述本地数据的单元;以及
用于生成第二接入请求以通过所述通信总线发送所述下游数据的单元,其中,用于做出所述确定的所述单元接收所述第一接入请求和所述第二接入请求,并将所述确定基于所述第一接入请求和所述第二接入请求。
17.如权利要求15所述的设备,还包含:
用于根据所述确定,安排所述本地数据和所述下游数据到所述数据块中的单元;以及
用于在数据块传输期将所述数据块内的数据通过所述通信总线发送的单元。
18.一种用于通过通信总线发送数据的设备,所述设备包含:
用于从第一数据源接收第一源数据的单元;
用于从第二数据源接收第二源数据的单元;以及
用于通过所述通信总线发送所述第一源数据和所述第二源数据的单元,其中,发送所述第一源数据和所述第二源数据包括
对所述第一源数据和第二源数据中的至少一个提供一个报头;
通过所述通信总线发送所述第一源数据,
标识对应于所述第一源数据末尾的第一断点,
通过所述通信总线发送与所述第一源数据的末尾相邻的所述第二源数据;以及
标识对应于所述第二源数据末尾的第二断点,
其中通过所述通信总线发送所述第一源数据包括:
在第一处理期间安排数据块结构内所述第一源数据的第一部分,其中,所述数据块结构包括固定数量的相邻、可配置比特;以及
在第二处理期间安排所述数据块结构第一部分内所述第一源数据的剩余部分,其中所述数据块结构第一部分包括一组相邻比特,
其中通过所述通信总线发送所述第二源数据包括:
在所述第二处理期间安排所述数据块结构第二部分内第二源数据的第一部分,其中,所述第二部分与所述数据块结构第一部分相邻,并且所述第二部分包括第二组相邻比特。
19.如权利要求18所述的设备,其中用于接收所述第一源数据的单元包括用于从所述通信总线接收下游数据的单元,以及用于接收所述第二源数据的单元包括用于从一个或多个本地存储器存储部件接收本地数据的单元。
20.如权利要求18所述的设备,其中标识所述第一断点包括:
将所述第一断点在所述第二处理期标识为所述数据块结构第一部分的末尾。
21.如权利要求18所述的设备,其中所述数据块结构包括固定数量的通道,每个通道包括相同数量的比特,所述数据块结构的所述第一部分包括第一组固定数量的通道,并且所述数据块结构的所述第二部分包括第二组固定数量的通道。
22.一种用于在通信总线上传送数据的方法,所述方法包含:
在第一处理期间安排数据块结构内第一源数据的第一部分,其中,所述数据块结构包括固定数量的相邻、可配置比特,且其中第一源数据的第一部分包括一个第一报头部分;以及
通过所述通信总线发送所述第一源数据的第一部分;
在第二处理期间安排所述数据块结构第一部分内所述第一源数据的剩余部分,其中,所述第一部分包括第一组相邻比特;
在所述第二处理期间安排所述数据块结构第二部分内第二源数据的第一部分,其中,所述第二部分与所述第一部分相邻,并且所述第二部分包括第二组相邻比特且其中第二源数据的第一部分包括一个第二报头部分;以及
通过所述通信总线发送所述第一源数据的剩余部分和所述第二源数据的第一部分。
23.如权利要求22所述的方法,还包含:
在所述第一处理期指示所述第一源数据中的断点将在所述第二处理期出现。
24.如权利要求22所述的方法,还包含:
在所述第一处理期指示所述第一部分末尾的位置。
25.如权利要求22所述的方法,其中所述数据块结构包括固定数量的通道,每个通道包括相同数量的比特,所述数据块结构的第一部分包括第一组固定数量的通道,并且所述数据块结构的第二部分包括第二组固定数量的通道。
26.如权利要求25所述的方法,还包含:
在所述第一处理期指示对应于所述第一部分最后通道的通道标识符。
27.如权利要求25所述的方法,还包含:
在所述第一处理期指示对应于所述第二部分第一通道的通道标识符。
28.一种用于在通信总线上传送数据的方法,它包含:
确定第一源数据和第二源数据可用;
对所述第一源数据和第二源数据中的至少一个产生一个报头;
将数据块第一部分内的一个或多个第一相邻通道分配到所述第一源数据的至少一些数据,其中,所述数据块包含一组多个通道并且每个通道包括一组可配置比特;
将所述数据块第二部分内的一个或多个第二相邻通道分配到所述第二源数据的至少一些数据,其中,与所述第一部分相邻的所述第二部分在第二相邻通道开始;以及
通过通信总线和在数据块传输期,发送所述数据块第一部分内的至少部分所述第一源数据和所述数据块第二部分内的至少部分所述第二源数据。
29.如权利要求28所述的方法,其中确定所述第一源数据和所述第二源数据可用包含:
从第一数据源接收所述第一源数据可用的第一指示符;以及
从第二数据源接收所述第二源数据可用的第二指示符。
30.如权利要求28所述的方法,其中确定所述第一源数据和所述第二源数据可用包含:
接收第一请求以通过所述通信总线发送所述第一源数据;以及
接收第二请求以通过所述通信总线发送所述第二源数据。
31.如权利要求28所述的方法,其中分配所述一个或多个第二相邻的通道包含:
接收能够标识哪个通道为所述下一相邻通道的信息;以及
将多个通道分配到所述第二源数据的至少一些数据,其中,所述多个通道的第一通道是所述下一相邻通道。
32.一种用于在通信总线上传送数据的方法,它包含:
安排数据块结构第一部分内第一源的第一源数据,其中第一源数据包括一个第一报头部分,且其中所述数据块结构包括固定数量的相邻、可配置比特,并且所述数据块结构内的数据在通信总线上被定期发出;
确定第二源的第二源数据可用于通过所述通信总线发送,且其中第二源数据包括一个第二报头部分;
请求接入所述通信总线以发送所述第二源数据;
接收在所述数据块结构内应放置至少部分所述第二源数据的位置的指示;
根据所述指示安排所述数据块结构内至少部分所述第二源数据,导致所述至少部分所述第二源数据占用与所述第一部分末尾相邻的所述数据块第二部分,其中所述第二报头部分位于所述第二部分和所述第一部分末尾之间;以及
在数据块传输期通过所述通信总线发送所述第一源数据和所述至少部分所述第二源数据。
33.如权利要求32所述的方法,其中所述数据块结构包括固定数量的通道,每个通道包括相同数量的比特,所述数据块结构的所述第一部分包括第一组固定数量的通道,并且所述数据块结构的所述第二部分包括第二组固定数量的通道。
34.如权利要求33所述的方法,其中接收所述指示包含接收对应于所述第一部分最后通道的通道标识符。
35.如权利要求33所述的方法,其中接收所述指示包含接收对应于所述第二部分第一通道的通道标识符。
36.如权利要求33所述的方法,还包含:
预测在所述第二源数据中断点将出现的位置。
37.一种用于在通信总线上传送数据的方法,它包含:
安排数据块结构第一部分内的第一源数据,其中第一源数据包括一个第一报头部分,其中,所述数据块结构包括固定数量的相邻、可配置比特;
接收请求以通过一个通信总线发送第二源数据,其中第二源数据包括一个第二报头部分;
标识所述第一源数据中的断点位置;
在所述断点后安排所述数据块结构第二部分内的至少部分所述第二源数据,其中,所述第二部分与所述第一部分末尾相邻;以及
在数据块传输期通过所述通信总线发送所述第一源数据和所述至少部分所述第二源数据。
38.如权利要求37所述的方法,其中所述数据块结构包括固定数量的通道,每个通道包括相同数量的比特,所述数据块结构的第一部分包括第一组固定数量的通道,并且所述数据块结构的第二部分包括第二组固定数量的通道。
39.如权利要求38所述的方法,其中标识所述位置包含标识对应于所述第一部分最后通道的通道。
40.如权利要求38所述的方法,其中标识所述位置包含标识对应于所述第二部分第一通道的通道。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/688,461 US7779212B2 (en) | 2003-10-17 | 2003-10-17 | Method and apparatus for sending data from multiple sources over a communications bus |
US10/688,461 | 2003-10-17 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1890650A CN1890650A (zh) | 2007-01-03 |
CN100487685C true CN100487685C (zh) | 2009-05-13 |
Family
ID=34465593
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2004800369275A Expired - Lifetime CN100487685C (zh) | 2003-10-17 | 2004-10-18 | 通过通信总线从多个源发送数据的方法和设备 |
Country Status (8)
Country | Link |
---|---|
US (5) | US7779212B2 (zh) |
EP (1) | EP1678621B1 (zh) |
JP (1) | JP4466653B2 (zh) |
KR (1) | KR100825238B1 (zh) |
CN (1) | CN100487685C (zh) |
AT (1) | ATE428984T1 (zh) |
DE (1) | DE602004020647D1 (zh) |
WO (1) | WO2005038660A2 (zh) |
Families Citing this family (38)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040044508A1 (en) * | 2002-08-29 | 2004-03-04 | Hoffman Robert R. | Method for generating commands for testing hardware device models |
US7779212B2 (en) * | 2003-10-17 | 2010-08-17 | Micron Technology, Inc. | Method and apparatus for sending data from multiple sources over a communications bus |
US20050210185A1 (en) * | 2004-03-18 | 2005-09-22 | Kirsten Renick | System and method for organizing data transfers with memory hub memory modules |
US7296129B2 (en) | 2004-07-30 | 2007-11-13 | International Business Machines Corporation | System, method and storage medium for providing a serialized memory interface with a bus repeater |
US7778812B2 (en) * | 2005-01-07 | 2010-08-17 | Micron Technology, Inc. | Selecting data to verify in hardware device model simulation test generation |
US20070016698A1 (en) * | 2005-06-22 | 2007-01-18 | Vogt Pete D | Memory channel response scheduling |
KR101293365B1 (ko) | 2005-09-30 | 2013-08-05 | 모사이드 테크놀로지스 인코퍼레이티드 | 출력 제어 메모리 |
US20070165457A1 (en) * | 2005-09-30 | 2007-07-19 | Jin-Ki Kim | Nonvolatile memory system |
US20070076502A1 (en) * | 2005-09-30 | 2007-04-05 | Pyeon Hong B | Daisy chain cascading devices |
US7652922B2 (en) | 2005-09-30 | 2010-01-26 | Mosaid Technologies Incorporated | Multiple independent serial link memory |
US7685392B2 (en) | 2005-11-28 | 2010-03-23 | International Business Machines Corporation | Providing indeterminate read data latency in a memory system |
US7471538B2 (en) * | 2006-03-30 | 2008-12-30 | Micron Technology, Inc. | Memory module, system and method of making same |
ATE488009T1 (de) * | 2006-03-31 | 2010-11-15 | Mosaid Technologies Inc | Flash-speichersystem-steuerverfahren |
US7620763B2 (en) * | 2006-07-26 | 2009-11-17 | International Business Machines Corporation | Memory chip having an apportionable data bus |
US7844769B2 (en) * | 2006-07-26 | 2010-11-30 | International Business Machines Corporation | Computer system having an apportionable data bus and daisy chained memory chips |
JP4476267B2 (ja) * | 2006-10-06 | 2010-06-09 | 株式会社日立製作所 | プロセッサ及びデータ転送ユニット |
US8745315B2 (en) | 2006-11-06 | 2014-06-03 | Rambus Inc. | Memory Systems and methods supporting volatile and wear-leveled nonvolatile physical memory |
US9195602B2 (en) | 2007-03-30 | 2015-11-24 | Rambus Inc. | System including hierarchical memory modules having different types of integrated circuit memory devices |
CN100562021C (zh) * | 2007-07-10 | 2009-11-18 | 北京易路联动技术有限公司 | 一种分布式可同步的多源数据的控制方法和装置 |
US8601181B2 (en) * | 2007-11-26 | 2013-12-03 | Spansion Llc | System and method for read data buffering wherein an arbitration policy determines whether internal or external buffers are given preference |
EP2192495A1 (de) * | 2008-11-11 | 2010-06-02 | Thomson Licensing | Verfahren zur Bearbeitung von Daten mittels Dreifach-Pufferung |
CN101930788A (zh) * | 2009-06-24 | 2010-12-29 | 鸿富锦精密工业(深圳)有限公司 | 移动存储设备及具有移动存储设备的存储装置 |
KR101796116B1 (ko) | 2010-10-20 | 2017-11-10 | 삼성전자 주식회사 | 반도체 장치, 이를 포함하는 메모리 모듈, 메모리 시스템 및 그 동작방법 |
US9104690B2 (en) | 2011-01-27 | 2015-08-11 | Micron Technology, Inc. | Transactional memory |
JP5895378B2 (ja) * | 2011-06-28 | 2016-03-30 | コニカミノルタ株式会社 | データ記憶制御装置、データ記憶制御方法およびプログラム |
WO2013048493A1 (en) * | 2011-09-30 | 2013-04-04 | Intel Corporation | Memory channel that supports near memory and far memory access |
JP5678257B2 (ja) * | 2012-01-23 | 2015-02-25 | 株式会社日立製作所 | メモリモジュール |
KR20160069262A (ko) | 2014-12-08 | 2016-06-16 | 에스케이하이닉스 주식회사 | 동작장치모듈 |
US9514006B1 (en) | 2015-12-16 | 2016-12-06 | International Business Machines Corporation | Transaction tracking within a microprocessor |
GB2553102B (en) * | 2016-08-19 | 2020-05-20 | Advanced Risc Mach Ltd | A memory unit and method of operation of a memory unit to handle operation requests |
US10679722B2 (en) | 2016-08-26 | 2020-06-09 | Sandisk Technologies Llc | Storage system with several integrated components and method for use therewith |
US11055241B2 (en) * | 2017-11-06 | 2021-07-06 | M31 Technology Corporation | Integrated circuit having lanes interchangeable between clock and data lanes in clock forward interface receiver |
US10657094B2 (en) | 2018-03-29 | 2020-05-19 | Nvidia Corp. | Relaxed 433 encoding to reduce coupling and power noise on PAM-4 data buses |
US10599606B2 (en) | 2018-03-29 | 2020-03-24 | Nvidia Corp. | 424 encoding schemes to reduce coupling and power noise on PAM-4 data buses |
US11159153B2 (en) | 2018-03-29 | 2021-10-26 | Nvidia Corp. | Data bus inversion (DBI) on pulse amplitude modulation (PAM) and reducing coupling and power noise on PAM-4 I/O |
US11966348B2 (en) | 2019-01-28 | 2024-04-23 | Nvidia Corp. | Reducing coupling and power noise on PAM-4 I/O interface |
JP7393095B2 (ja) * | 2018-06-07 | 2023-12-06 | トヨタ自動車株式会社 | 気体圧縮装置 |
US10623200B2 (en) | 2018-07-20 | 2020-04-14 | Nvidia Corp. | Bus-invert coding with restricted hamming distance for multi-byte interfaces |
Family Cites Families (90)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3798613A (en) * | 1971-10-27 | 1974-03-19 | Ibm | Controlling peripheral subsystems |
US4965717A (en) * | 1988-12-09 | 1990-10-23 | Tandem Computers Incorporated | Multiple processor system having shared memory with private-write capability |
EP0463966B1 (en) * | 1990-06-29 | 1998-11-25 | Digital Equipment Corporation | High-performance multi-processor having floating point unit and operation method |
US5652723A (en) * | 1991-04-18 | 1997-07-29 | Mitsubishi Denki Kabushiki Kaisha | Semiconductor memory device |
US6446164B1 (en) * | 1991-06-27 | 2002-09-03 | Integrated Device Technology, Inc. | Test mode accessing of an internal cache memory |
US5410681A (en) * | 1991-11-20 | 1995-04-25 | Apple Computer, Inc. | Interpreter for performing remote testing of computer systems |
US5414827A (en) * | 1991-12-19 | 1995-05-09 | Opti, Inc. | Automatic cache flush |
US5553258A (en) * | 1992-04-24 | 1996-09-03 | Digital Equipment Corporation | Method and apparatus for forming an exchange address for a system with different size caches |
US5542058A (en) * | 1992-07-06 | 1996-07-30 | Digital Equipment Corporation | Pipelined computer with operand context queue to simplify context-dependent execution flow |
US5517627A (en) | 1992-09-18 | 1996-05-14 | 3Com Corporation | Read and write data aligner and method |
US5448577A (en) * | 1992-10-30 | 1995-09-05 | Intel Corporation | Method for reliably storing non-data fields in a flash EEPROM memory array |
JP3400824B2 (ja) * | 1992-11-06 | 2003-04-28 | 三菱電機株式会社 | 半導体記憶装置 |
CA2145363C (en) * | 1994-03-24 | 1999-07-13 | Anthony Mark Jones | Ram interface |
US5675735A (en) * | 1994-06-29 | 1997-10-07 | Digital Equipment Corporation | Method and apparatus for interconnecting network devices in a networking hub |
US5600579A (en) * | 1994-07-08 | 1997-02-04 | Apple Computer, Inc. | Hardware simulation and design verification system and method |
US5574907A (en) * | 1994-11-30 | 1996-11-12 | Microsoft Corporation | Two-pass defragmentation of compressed hard disk data with a single data rewrite |
US5872909A (en) * | 1995-01-24 | 1999-02-16 | Wind River Systems, Inc. | Logic analyzer for software |
US5726918A (en) * | 1995-06-05 | 1998-03-10 | Synopsys, Inc. | Tool, system and method for dynamic timing analysis in a plural-instance digital system simulation |
US6115747A (en) * | 1995-11-13 | 2000-09-05 | Roger E. Billings | Computer network interface that merges remote data received from other computers with local data before transmitting the merged data to a network |
US5758188A (en) * | 1995-11-21 | 1998-05-26 | Quantum Corporation | Synchronous DMA burst transfer protocol having the peripheral device toggle the strobe signal such that data is latched using both edges of the strobe signal |
US6127990A (en) * | 1995-11-28 | 2000-10-03 | Vega Vista, Inc. | Wearable display and methods for controlling same |
US5768567A (en) * | 1996-05-14 | 1998-06-16 | Mentor Graphics Corporation | Optimizing hardware and software co-simulator |
US5867733A (en) | 1996-06-04 | 1999-02-02 | Micron Electronics, Inc. | Mass data storage controller permitting data to be directly transferred between storage devices without transferring data to main memory and without transferring data over input-output bus |
US5841967A (en) * | 1996-10-17 | 1998-11-24 | Quickturn Design Systems, Inc. | Method and apparatus for design verification using emulation and simulation |
US6047331A (en) * | 1997-02-19 | 2000-04-04 | Massachusetts Institute Of Technology | Method and apparatus for automatic protection switching |
US6182258B1 (en) * | 1997-06-03 | 2001-01-30 | Verisity Ltd. | Method and apparatus for test generation during circuit design |
US6076180A (en) * | 1997-06-23 | 2000-06-13 | Micron Electronics, Inc. | Method for testing a controller with random constraints |
US5832418A (en) * | 1997-06-23 | 1998-11-03 | Micron Electronics | Apparatus for testing a controller with random contraints |
US6378047B1 (en) | 1997-07-07 | 2002-04-23 | Micron Technology, Inc. | System and method for invalidating set-associative cache memory with simultaneous set validity determination |
US5966306A (en) * | 1997-07-07 | 1999-10-12 | Motorola Inc. | Method for verifying protocol conformance of an electrical interface |
US6131079A (en) * | 1997-10-01 | 2000-10-10 | Lsi Logic Corporation | Method and device for automatic simulation verification |
US6434620B1 (en) * | 1998-08-27 | 2002-08-13 | Alacritech, Inc. | TCP/IP offload network interface device |
US6397299B1 (en) | 1998-01-21 | 2002-05-28 | Micron Technology, Inc. | Reduced latency memory configuration method using non-cacheable memory physically distinct from main memory |
US6560680B2 (en) | 1998-01-21 | 2003-05-06 | Micron Technology, Inc. | System controller with Integrated low latency memory using non-cacheable memory physically distinct from main memory |
US6170078B1 (en) * | 1998-02-27 | 2001-01-02 | International Business Machines Corporation | Fault simulation using dynamically alterable behavioral models |
US6223238B1 (en) | 1998-03-31 | 2001-04-24 | Micron Electronics, Inc. | Method of peer-to-peer mastering over a computer bus |
US6188975B1 (en) | 1998-03-31 | 2001-02-13 | Synopsys, Inc. | Programmatic use of software debugging to redirect hardware related operations to a hardware simulator |
US6073198A (en) | 1998-03-31 | 2000-06-06 | Micron Electronics, Inc. | System for peer-to-peer mastering over a computer bus |
US6385651B2 (en) * | 1998-05-05 | 2002-05-07 | Liberate Technologies | Internet service provider preliminary user registration mechanism provided by centralized authority |
US6971109B1 (en) * | 1998-07-24 | 2005-11-29 | Micron Technology, Inc. | Integrated application management system |
US6571204B1 (en) * | 1998-08-04 | 2003-05-27 | Micron Technology, Inc. | Bus modeling language generator |
US6284655B1 (en) * | 1998-09-03 | 2001-09-04 | Micron Technology, Inc. | Method for producing low carbon/oxygen conductive layers |
US6425056B2 (en) | 1998-10-26 | 2002-07-23 | Micron Technology, Inc. | Method for controlling a direct mapped or two way set associative cache memory in a computer system |
US6470436B1 (en) * | 1998-12-01 | 2002-10-22 | Fast-Chip, Inc. | Eliminating memory fragmentation and garbage collection from the process of managing dynamically allocated memory |
JP2000200840A (ja) * | 1999-01-06 | 2000-07-18 | Mitsubishi Electric Corp | 半導体装置およびその製造方法 |
US6321289B1 (en) * | 1999-04-08 | 2001-11-20 | Micron Technology, Inc. | Apparatus for automatically notifying operating system level applications of the occurrence of system management events |
US6336176B1 (en) * | 1999-04-08 | 2002-01-01 | Micron Technology, Inc. | Memory configuration data protection |
US6490671B1 (en) * | 1999-05-28 | 2002-12-03 | Oracle Corporation | System for efficiently maintaining translation lockaside buffer consistency in a multi-threaded, multi-processor virtual memory system |
US6401151B1 (en) * | 1999-06-07 | 2002-06-04 | Micron Technology, Inc. | Method for configuring bus architecture through software control |
FR2795196B1 (fr) * | 1999-06-21 | 2001-08-10 | Bull Sa | Processus de liberation de pages physiques pour mecanisme d'adressage virtuel |
US6529999B1 (en) * | 1999-10-27 | 2003-03-04 | Advanced Micro Devices, Inc. | Computer system implementing system and method for ordering write operations and maintaining memory coherency |
US6625715B1 (en) * | 1999-12-30 | 2003-09-23 | Intel Corporation | System and method for translation buffer accommodating multiple page sizes |
US6654832B1 (en) | 2000-01-18 | 2003-11-25 | Micron Technology, Inc. | Method of initializing a processor and computer system |
US6591318B1 (en) | 2000-01-24 | 2003-07-08 | Micron Technology, Inc. | Computer system having reduced number of bus bridge terminals |
US6912672B2 (en) * | 2000-04-08 | 2005-06-28 | Samsung Electronics Co., Ltd. | Method of verifying defect management area information of disc and test apparatus for performing the same |
US7000224B1 (en) | 2000-04-13 | 2006-02-14 | Empirix Inc. | Test code generator, engine and analyzer for testing middleware applications |
FR2809901B1 (fr) * | 2000-06-05 | 2002-11-22 | Sekoya | Procede de transmission d'un message entre deux ordinateurs relies et systemes de messagerie correspondant |
EP1290855B1 (en) * | 2000-06-06 | 2006-05-03 | Broadcom Corporation | Delay reduction method for telephony systems with multiple packet generators |
US6970816B1 (en) * | 2000-08-14 | 2005-11-29 | International Business Machines Corporation | Method and system for efficiently generating parameterized bus transactions |
US6711043B2 (en) * | 2000-08-14 | 2004-03-23 | Matrix Semiconductor, Inc. | Three-dimensional memory cache system |
US6725326B1 (en) * | 2000-08-15 | 2004-04-20 | Cisco Technology, Inc. | Techniques for efficient memory management for longest prefix match problems |
US6812726B1 (en) * | 2002-11-27 | 2004-11-02 | Inapac Technology, Inc. | Entering test mode and accessing of a packaged semiconductor device |
US6934785B2 (en) | 2000-12-22 | 2005-08-23 | Micron Technology, Inc. | High speed interface with looped bus |
IL151866A0 (en) * | 2001-01-30 | 2003-04-10 | Memcall Inc | Combined content addressable memories |
GB2373595B (en) * | 2001-03-15 | 2005-09-07 | Italtel Spa | A system of distributed microprocessor interfaces toward macro-cell based designs implemented as ASIC or FPGA bread boarding and relative common bus protocol |
JP2002278924A (ja) | 2001-03-19 | 2002-09-27 | Oki Electric Ind Co Ltd | データの転送制御システム,転送制御方法およびそのプログラム |
US6516383B1 (en) * | 2001-05-30 | 2003-02-04 | Cisco Technology, Inc. | Techniques for efficient location of free entries for TCAM inserts |
US6597595B1 (en) * | 2001-08-03 | 2003-07-22 | Netlogic Microsystems, Inc. | Content addressable memory with error detection signaling |
TW539947B (en) * | 2001-08-23 | 2003-07-01 | Via Tech Inc | Testing method for determining the source of interrupt |
US6687786B1 (en) * | 2001-09-28 | 2004-02-03 | Cisco Technology, Inc. | Automated free entry management for content-addressable memory using virtual page pre-fetch |
US7017089B1 (en) * | 2001-11-01 | 2006-03-21 | Netlogic Microsystems, Inc | Method and apparatus for testing a content addressable memory device |
US6678875B2 (en) | 2002-01-25 | 2004-01-13 | Logicvision, Inc. | Self-contained embedded test design environment and environment setup utility |
US7050921B2 (en) * | 2002-04-23 | 2006-05-23 | Agilent Technologies, Inc. | Electronic test program with run selection |
US20040044508A1 (en) | 2002-08-29 | 2004-03-04 | Hoffman Robert R. | Method for generating commands for testing hardware device models |
US7152942B2 (en) * | 2002-12-02 | 2006-12-26 | Silverbrook Research Pty Ltd | Fixative compensation |
US7152123B2 (en) | 2002-12-23 | 2006-12-19 | Micron Technology, Inc. | Distributed configuration storage |
US6819579B1 (en) * | 2003-04-22 | 2004-11-16 | Faraday Technology Corp. | Integrated content addressable memory architecture |
US7404058B2 (en) * | 2003-05-31 | 2008-07-22 | Sun Microsystems, Inc. | Method and apparatus for avoiding collisions during packet enqueue and dequeue |
US7019998B2 (en) * | 2003-09-09 | 2006-03-28 | Silicon Storage Technology, Inc. | Unified multilevel cell memory |
US7779212B2 (en) | 2003-10-17 | 2010-08-17 | Micron Technology, Inc. | Method and apparatus for sending data from multiple sources over a communications bus |
US7257799B2 (en) * | 2003-11-14 | 2007-08-14 | Lsi Corporation | Flexible design for memory use in integrated circuits |
US6944039B1 (en) * | 2003-12-12 | 2005-09-13 | Netlogic Microsystems, Inc. | Content addressable memory with mode-selectable match detect timing |
US7343477B1 (en) * | 2003-12-29 | 2008-03-11 | Sun Microsystems, Inc. | Efficient read after write bypass |
US7832842B2 (en) * | 2004-05-27 | 2010-11-16 | Silverbrook Research Pty Ltd | Printer controller for supplying data to a printhead module having interleaved shift registers |
US20060294312A1 (en) * | 2004-05-27 | 2006-12-28 | Silverbrook Research Pty Ltd | Generation sequences |
US20070083491A1 (en) * | 2004-05-27 | 2007-04-12 | Silverbrook Research Pty Ltd | Storage of key in non-volatile memory |
US7328956B2 (en) * | 2004-05-27 | 2008-02-12 | Silverbrook Research Pty Ltd | Printer comprising a printhead and at least two printer controllers connected to a common input of the printhead |
US7275805B2 (en) * | 2004-05-27 | 2007-10-02 | Silverbrook Research Pty Ltd | Printhead comprising different printhead modules |
US7778812B2 (en) * | 2005-01-07 | 2010-08-17 | Micron Technology, Inc. | Selecting data to verify in hardware device model simulation test generation |
US7343447B2 (en) | 2005-11-08 | 2008-03-11 | International Business Machines Corporation | Method and system for synchronizing direct access storage volumes |
-
2003
- 2003-10-17 US US10/688,461 patent/US7779212B2/en active Active
-
2004
- 2004-10-18 DE DE602004020647T patent/DE602004020647D1/de not_active Expired - Lifetime
- 2004-10-18 KR KR1020067009565A patent/KR100825238B1/ko active IP Right Grant
- 2004-10-18 AT AT04795616T patent/ATE428984T1/de not_active IP Right Cessation
- 2004-10-18 JP JP2006535430A patent/JP4466653B2/ja not_active Expired - Lifetime
- 2004-10-18 CN CNB2004800369275A patent/CN100487685C/zh not_active Expired - Lifetime
- 2004-10-18 WO PCT/US2004/034475 patent/WO2005038660A2/en active Search and Examination
- 2004-10-18 EP EP04795616A patent/EP1678621B1/en not_active Expired - Lifetime
-
2010
- 2010-07-30 US US12/847,801 patent/US8095748B2/en not_active Expired - Lifetime
-
2012
- 2012-01-06 US US13/345,379 patent/US8327089B2/en not_active Expired - Lifetime
- 2012-12-03 US US13/692,269 patent/US8806152B2/en not_active Expired - Lifetime
-
2014
- 2014-08-11 US US14/456,372 patent/US9652412B2/en not_active Expired - Lifetime
Non-Patent Citations (2)
Title |
---|
IEEE Std 1596.4-1996:IEEE Standard for High-Bandwidth Memory Interface Based on Scalable Coherent Interface(SCI) Signaling Technology(RamLink). Microprocessor and Microcomputer Standards Committee ofthe IEEE Computer Society,第5页,第15页,The Institute of Electrical and Electronics Engineers,Inc.. 1996 |
IEEE Std 1596.4-1996:IEEE Standard for High-Bandwidth Memory Interface Based on Scalable Coherent Interface(SCI) Signaling Technology(RamLink). Microprocessor and Microcomputer Standards Committee ofthe IEEE Computer Society,第5页,第15页,The Institute of Electrical and Electronics Engineers,Inc.. 1996 * |
Also Published As
Publication number | Publication date |
---|---|
US7779212B2 (en) | 2010-08-17 |
US20050086417A1 (en) | 2005-04-21 |
US20100299440A1 (en) | 2010-11-25 |
EP1678621A2 (en) | 2006-07-12 |
ATE428984T1 (de) | 2009-05-15 |
US8806152B2 (en) | 2014-08-12 |
US20140351502A1 (en) | 2014-11-27 |
KR20060100417A (ko) | 2006-09-20 |
US20130097395A1 (en) | 2013-04-18 |
US9652412B2 (en) | 2017-05-16 |
CN1890650A (zh) | 2007-01-03 |
WO2005038660A3 (en) | 2005-09-01 |
JP2007534044A (ja) | 2007-11-22 |
US20120110255A1 (en) | 2012-05-03 |
KR100825238B1 (ko) | 2008-04-25 |
WO2005038660A2 (en) | 2005-04-28 |
EP1678621B1 (en) | 2009-04-15 |
DE602004020647D1 (de) | 2009-05-28 |
US8095748B2 (en) | 2012-01-10 |
US8327089B2 (en) | 2012-12-04 |
JP4466653B2 (ja) | 2010-05-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100487685C (zh) | 通过通信总线从多个源发送数据的方法和设备 | |
US7165094B2 (en) | Communications system and method with non-blocking shared interface | |
JP4083987B2 (ja) | 多重レベル接続識別を備えた通信システム | |
CN1608255B (zh) | 使用包括扩展类型/扩展长度字段的分组头部的计算机系统中的代理之间的通信事务类型 | |
CN100474280C (zh) | 系统总线控制装置、集成电路和数据处理系统 | |
US9363203B2 (en) | Modular interconnect structure | |
CN102984123A (zh) | 使用多个消息组的计算机系统中的代理之间的通信消息请求事务类型 | |
CN1279790A (zh) | 快速16位分离事务i/o总线 | |
US20140359195A1 (en) | Crossbar switch, information processing apparatus, and information processing apparatus control method | |
US6728206B1 (en) | Crossbar switch with communication ring bus | |
KR100960542B1 (ko) | 메모리 에이전트, 메모리 시스템 및 방법 | |
US6275503B1 (en) | Method for transmitting large information packets over networks | |
US7130946B2 (en) | Configuration and method having a first device and a second device connected to the first device through a cross bar | |
CN1113298C (zh) | 在总线系统中提供和嵌入控制信息的方法和装置 | |
CN115952132A (zh) | 异步桥、soc、电子组件、电子设备及芯片设计方法 | |
CN106940684A (zh) | 一种按比特写数据的方法及装置 | |
KR970003136B1 (ko) | 전자교환기의 메세지 전송 인터페이스 모듈 | |
JP4540570B2 (ja) | データ処理モジュール、デバイス、システム、及び送信候補メッセージのサーチ方法 | |
CN115314568A (zh) | Spi数据播发系统和方法 | |
JP2003044424A (ja) | データバス転送システム | |
KR20000018873A (ko) | 교환 시스템에서의 아이피씨 데이터 송수신 방법 | |
KR19990060592A (ko) | 통신 시스템에 있어서 백플랜 버스 제어회로 | |
JPH05289982A (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 |