CN102918515A - 将数据存储在存储器控制器中的多个缓冲器的任何中 - Google Patents
将数据存储在存储器控制器中的多个缓冲器的任何中 Download PDFInfo
- Publication number
- CN102918515A CN102918515A CN2010800670997A CN201080067099A CN102918515A CN 102918515 A CN102918515 A CN 102918515A CN 2010800670997 A CN2010800670997 A CN 2010800670997A CN 201080067099 A CN201080067099 A CN 201080067099A CN 102918515 A CN102918515 A CN 102918515A
- Authority
- CN
- China
- Prior art keywords
- impact damper
- data
- write request
- port
- write
- 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.)
- Granted
Links
- 239000000872 buffer Substances 0.000 title claims abstract description 23
- 238000000034 method Methods 0.000 claims description 29
- 238000011094 buffer selection Methods 0.000 abstract 3
- 238000012790 confirmation Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 5
- 230000008569 process Effects 0.000 description 4
- 230000004044 response Effects 0.000 description 3
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
-
- 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/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- 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
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Storage Device Security (AREA)
- Information Transfer Systems (AREA)
- Memory System (AREA)
Abstract
一种包含被耦合到缓冲器选择逻辑的一个或多个端口和多个缓冲器的存储器控制器。每个缓冲器被配置成存储与写请求相关联的写数据,并且每个缓冲器还被耦合到缓冲器选择逻辑。所述缓冲器选择逻辑被配置成基于用于端口中的每一个的缓冲器的优先级将与来自端口中的至少一个的写请求相关联的写数据存储在任何缓冲器中。
Description
相关申请的交叉引用
本申请要求题为“Storing Data in any of a Plurality of Buffers in a Memory Controller”的2010年5月28日提交的临时专利申请序号61/349,584的权益。
背景技术
存储器控制器管理被写入物理存储器和从物理存储器读取的数据的流动。“读请求”是从存储器读取数据的请求,并且可以包括将被读取的存储器中的地址和期望从存储器进行读取的设备的标识符。“写请求”是向存储器写入数据的请求,并且可以包括要写入的数据、将写入数据的存储器中的地址以及期望向存储器进行写入的设备的标识符。来自特定设备的读请求和写请求经由端口进入存储器控制器。多端口存储器控制器是能够服务于来自不止一个设备的读请求和写请求的存储器控制器,其中,每个设备被分配给存储器控制器的特定端口。
许多不同的设备出于各种原因(例如存储指针、数据)要求访问物理存储器。为了降低成本,这些设备可以共享单个物理存储器,其可以导致用于同一源的许多存储器请求。并不是所有存储器请求都可以被同时满足,因此使用写缓冲器来保持待决写数据,同时将其他写数据写入存储器。每个端口具有专用写缓冲器,其允许进入要被吸收的端口的写请求而不必立即将关联写数据写入存储器。存储器控制器的一个端口常常对存储器访问具有低需求,而另一端口具有对存储器访问的高需求,因此一个缓冲器未被如另一缓冲器那样被频繁地使用。
附图说明
为了本发明的示例性实施例的详细描述,现在将对附图进行参考,在所述附图中:
图1示出了依照各种实施例的系统方框图;
图2a、2b、2c、2d、2e和2f示出了依照各种实施例的示例性端口缓冲器图;
图3a和3b示出了依照各种实施例的示例性存储器图;
图4a示出了依照各种实施例的方法流程图;以及
图4b示出了依照各种实施例的另一方法流程图。
注释和命名法
某些术语遍及以下描述和权利要求用来参考特定系统部件。如本领域的技术人员将认识到的,计算机公司可以用不同名称来提及部件。本文档并不意图在名称而不是功能方面不同的部件之间进行区别。在以下讨论中和在权利要求中,以开放方式来使用术语“包括”和“包含”,并且因此应将其解释为意指“包括但不限于”。并且,术语“耦合”或“耦合”意图意指间接、直接、光学或无线电连接。因此,如果第一设备耦合到第二设备,则该连接可以通过直接电连接、通过经由其他设备和连接的间接电连接、通过光学电连接或通过无线电连接。
具体实施方式
以下讨论针对本发明的各种实施例。虽然这些实施例中的一个或多个可以是优选的,所以不应将所公开的实施例解释为或另外用作限制包括权利要求的本公开的范围。另外,本领域的技术人员将理解的是以下描述具有广泛的应用,并且任何实施例的讨论仅仅意图是该实施例的示例,而不是意图暗示包括权利要求的本公开的范围局限于该实施例。
依照各种实施例,图1示出了存储器控制器100,其包括被耦合到缓冲器选择逻辑104和缓冲器仲裁逻辑108的端口102。每个端口102从设备(例如处理器、输入/输出设备、视频设备)接收读请求和写请求。另外,存储器控制器100包括被耦合到缓冲器选择逻辑104和缓冲器仲裁逻辑108两者的缓冲器106。缓冲器106被配置成在与写请求相关联的写数据写入存储器之前临时存储此类数据。在示例性实施例中,缓冲器106是高速缓存线(cache line)的尺寸(例如,32字节),并且每个存储用于存储器110的多个地址的写数据。写请求被从端口102传递至缓冲器选择逻辑104,而读请求被从端口102传递至缓冲器仲裁逻辑108。每个端口102可以在给定周期期间向缓冲器选择逻辑104呈现写请求,并且因此可以在给定周期期间向缓冲器选择逻辑104呈现多个写请求。另外,缓冲器仲裁逻辑108被耦合到存储器110(例如高速缓存器)。
缓冲器选择逻辑104在给定周期期间从端口102接收写请求,并且知道每个缓冲器106的状态。例如,缓冲器选择逻辑104知道缓冲器106中的写数据的起源端口、缓冲器106中的写数据所对应的存储器110中的地址以及在缓冲器106中所表示的地址范围(即高速缓存线)。在示例性实施例中,缓冲器106存储32字节的写数据,并且存储器中的地址存储2字节的数据;因此,缓冲器106每个存储16个连续地址,其形成高速缓存线。缓冲器选择逻辑104还使每个端口102与唯一缓冲器相关联,对于该唯一缓冲器,特定端口被给定最高优先级。例如,端口_0获得用于缓冲器_0的最高优先级,并且端口_7获得用于缓冲器_7的最高优先级。在示例性实施例中,端口_0随着缓冲器号增加而渐进地获得较低的优先级(例如缓冲器_9是用于端口_0的最低优先级缓冲器);端口_7是类似的,然而缓冲器环绕(例如7、8、9、0、1、2、3、4、5、6),并且因此缓冲器_6是用于端口_7的最低优先级缓冲器。作为此示例性方案的结果,在每个优先级水平处,每个端口102与仅一个缓冲器106相关联。
在另一示例性方案中,每个缓冲器106的分配优先级每当写数据被存储在缓冲器106中时改变。例如,缓冲器_0最初对端口_0给定最高优先级,但是在来自端口_0的写数据已被写入存储器110之后,缓冲器_0对端口_1给定最高优先级,依此类推。结果,每个缓冲器106对每个端口102给定更均匀分布的优先级。依照各种实施例,可以将优先级方案硬编码到缓冲器选择逻辑104电路,而在其他实施例中,优先级方案可以是可编程的。
依照各种实施例,缓冲器选择逻辑104在给定周期期间从一个或多个端口102接收写请求。响应于接收到写请求,缓冲器选择逻辑104向所有缓冲器106发送请求以确定缓冲器106的可用性。图2a~f示出了说明性端口-缓冲器图200~250。例如,在图2a中,缓冲器选择逻辑104从端口_0、端口_1和端口_2(被示为粗框)接收写请求。假设缓冲器_0和缓冲器_2是不可用的,并且所有其他缓冲器(即1和3~9)是可用的(被示为粗框的可用缓冲器)。如果缓冲器106包含未被写入存储器110的写数据,则缓冲器106可能不可用,并因此表示此类写数据的唯一可用时刻且不能被覆写。针对每个写请求,缓冲器选择逻辑104向在图2a中用箭头示出的所有缓冲器106发送请求。
如果缓冲器106是可用的,则缓冲器106向缓冲器选择逻辑104返回用于源自于缓冲器的最高优先级端口的请求的确认,这促使缓冲器选择逻辑许可源自于每个可用缓冲器的最高优先级端口的写请求。因此,缓冲器选择逻辑104从用于端口_1的缓冲器_1接收确认,在图2b中用从缓冲器_1至端口_1的箭头示出,因为端口_1是用于缓冲器_1的最高优先级端口102。缓冲器选择逻辑104还从用于端口_2的每个缓冲器_3~9接收确认,在图2b中用其他箭头示出,因为端口_2具有用于那些缓冲器中的每一个的高于端口_1或端口_0的优先级。在本示例性实施例中,端口_2相比于那些缓冲器具有较高优先级,因为其比端口_0更接近于端口_2(例如在端口_2的优先级方面缓冲器_3是第二、而缓冲器_3在端口_1的优先级方面是第三且在端口_0的优先级方面是第四,依此类推)。在这点上,缓冲器选择逻辑104尚未从任何缓冲器106接收到用于端口_0的写请求的确认,因为存在用于每个可用缓冲器的较高优先级端口(即端口_1或端口_2)。
继续上述示例,对于从缓冲器106接收到确认的每个端口而言,缓冲器选择逻辑104许可该写请求并将与该写请求相关联的写数据存储在该端口的最高优先级缓冲器106中。因此,来自端口_1的写数据被存储在缓冲器_1中且来自端口_2的写数据被存储在缓冲器_3中,在图2c中用箭头示出。虽然缓冲器_4~9也已确认了其用于来自端口_2的写请求的可用性,但这些缓冲器低于缓冲器_3,其在端口_2的优先级方面是第二。如上文所解释的,缓冲器选择逻辑104未从任何缓冲器106接收到用于端口_0的写请求的确认,并且因此来自端口_0的写请求尚未被许可,并且与来自端口_0的写请求相关联的写数据尚未被存储到任何缓冲器106。
在随后的周期中,缓冲器选择逻辑104再次从端口_0接收写请求。在某些实施例中,端口_0在随后的周期期间使其写请求重新生效(reassert);替换地,端口_0保持其写请求且不需要在随后的周期期间具体地使该写请求失效(deassert)并重试。图2d示出了说明性端口-缓冲器图230。端口_1和端口_2不再是粗体的,因为与其写请求相关联的写数据已被缓冲器选择逻辑104分别存储到缓冲器_1和缓冲器_3。缓冲器_1和缓冲器_3不再是粗体的,因为其包含与来自前一周期的来自端口_1和端口_2的写请求相关联的写数据,并且不再可用于存储附加写数据。
如上所述,响应于从端口_0接收到写请求,缓冲器选择逻辑104向所有缓冲器106发送请求以确定缓冲器106的可用性,其在图2d中用箭头示出。如上所述,如果缓冲器106是可用的,则缓冲器106向缓冲器选择逻辑104返回用于源自于缓冲器的最高优先级端口的请求的确认。因此,缓冲器选择逻辑104从用于端口_0的每个缓冲器_4~9接收确认,其在图2e中用箭头示出,因为端口_0是用于那些缓冲器中的每一个的最高优先级剩余端口。针对从缓冲器106接收到确认的每个端口(在这点上,仅端口_0),缓冲器选择逻辑104许可该写请求,并将与来自端口_0的写请求相关联的写数据存储到缓冲器_4,其在图2f中用箭头示出,因为缓冲器_4是许可来自端口_0的写请求的用于端口_0的最高优先级缓冲器。虽然缓冲器_5~9还确认了其用于来自端口_0的写请求的可用性,但这些缓冲器在端口_0的优先级方面低于缓冲器_4。此外,在替换实施例中,使用上述方案来处理来自端口_0的写请求,但是在与来自端口_1和端口_2的写请求相同的周期期间。
缓冲器选择逻辑104被描述为从端口102接收写请求、向缓冲器106发送请求以确定缓冲器106的可用性、从缓冲器106接收可用性的确认并将与来自端口102的写请求相关联的写数据存储到适当缓冲器106的集中式逻辑单元。然而,本领域的技术人员将理解的是此类逻辑实施方式可以以分散方式存在。例如,端口102可以直接与缓冲器106通信。来自端口102的用于确定缓冲器可用性的请求可以包含诸如与写请求的写数据相关联的地址的信息,以及确定缓冲器106是否可用所必需的其他信息。缓冲器106被配置成从端口102接收此类请求并确定是否确认该请求。如上所述,如果可用的话,每个缓冲器106仅确认源自于缓冲器106的最高优先级端口102的请求。然后,从一个或多个缓冲器106接收到确认的每个端口102将与其写请求相关联的写数据存储到确认其请求的最高优先级缓冲器106。
实际上,所有缓冲器在给定周期期间都不可用可能是罕见的;当存储器控制器100设计有比端口102数目大的缓冲器106时尤其如此。因此,在大多数情况下,在不必等待某个缓冲器的写数据被发送到存储器110之前能够将与输入写请求相关联的写数据存储在缓冲器106中。如果所有缓冲器不可用于输入写请求,则写请求必须等待下一个周期以尝试访问缓冲器106中的一个。下面更详细地解释用于确定缓冲器可用性的因素。
依照各种实施例,如果缓冲器106是空的,或者先前被写入到存储器110,则其是可用的,这可以通过检查与缓冲器106相关联的忙碌位来确定。用于每个缓冲器106的忙碌位用来表示缓冲器106已包含写数据,使得只有原始许可端口102能够继续向此缓冲器106进行写入。如果使忙碌位失效,则缓冲器106是空的。当缓冲器106的内容被传输至存储器110时,使忙碌位失效。
依照各种实施例,缓冲器选择逻辑104被配置成如果当前写请求的数据与和存储在缓冲器106中的写数据相同的高速缓存线相关联,则将与当前写请求相关联的写数据和与存储在缓冲器106中的在先写请求相关联的写数据合并。如果满足了用于将与当前写请求相关联的写数据和与存储在缓冲器106中的在先写请求相关联的写数据合并的条件,则该缓冲器106可用于该特定写请求。
图3a示出了合并过程300的说明图。例如,如果缓冲器106的尺寸是32字节且在存储器中地址表示2个字节,则缓冲器106包括16个地址位置(例如地址0~15)。如果在先写请求涉及分别将数据“A”~“D”写入地址4~7,则“A”~“D”被存储在缓冲器_0的位置4~7中。当前写请求302包含分别用于地址9~13的写数据“E”~“I”(即与在先写请求相同的高速缓存线中的地址),则不需要将缓冲器106的内容写入存储器110,也不需要当前写请求获得其自己的缓冲器。缓冲器106的最后所得到的内容304包括用于来自在先写请求的地址4~7的数据和用于来自当前写请求302的地址9~13的数据。
替换地,由于只有被写入地址的最新数据对于后续读请求而言有意义,所以还可以将到高速缓存线内的重叠地址的写数据合并。图3b示出了合并过程310的另一说明图。例如,如果在先写请求涉及分别向地址4~7写入数据“A”~“D”,则“A”~“D”被存储在缓冲器106的位置4~7中。当前写请求312包含分别用于地址6~11的写数据“J”~“O”。缓冲器106的最后所得到的内容314包括用于来自在先写请求的地址4~5的数据和用于来自当前写请求312的地址6~11的数据。在先写数据的地址6~7已被覆写。
然而, 缓冲器106对于其他端口看起来仍是不可用的,因为合并未促使存储在缓冲器106中的写数据被写入存储器110,并且因此使缓冲器106的忙碌位生效。结果,如果输入写请求是用于与存储在缓冲器106中的写数据所表示的高速缓存线的地址不同的地址或地址群组(即除0~15之外的地址)且缓冲器106的忙碌位仍是有效的,则缓冲器106是不可用的。
依照各种实施例,当存储在缓冲器106中的写数据被写入存储器110时,使忙碌位失效。缓冲器仲裁逻辑108在给定读周期期间从端口102接收读请求,并且知道每个缓冲器106的状态。例如,缓冲器仲裁逻辑108知道缓冲器106中的写数据的起源端口和缓冲器106中的写数据所对应的存储器110中的地址。使用此信息,缓冲器仲裁逻辑108确定何时将缓冲器106的内容写入存储器110。在某些情况下,缓冲器仲裁逻辑108可以确定在给定周期期间应将不止一个缓冲器106的内容写入存储器110。然而,根据到存储器110的总线的尺寸,在某些实施例中,可以每个周期将仅一个缓冲器106的内容写入存储器110,因此缓冲器仲裁逻辑108确定哪个缓冲器106将使其内容被写入存储器110。
缓冲器仲裁逻辑108基于不同事件的发生来确定将缓冲器106的内容写入存储器110。写/写相干性(write coherence)命中在写请求源自于不同端口102且对应于与存储在缓冲器106中的来自端口102的写数据相同的高速缓存线时发生。例如,如果与来自端口_1的写请求相关联的写数据对应于地址0~15,并且端口_0使写数据存储在对应于地址0~15的缓冲器106中(即与来自端口_1的写请求所对应的相同的高速缓存线),则存在写/写相干性命中。在示例性实施例中,写/写相干性命中促使缓冲器仲裁逻辑108将存储与较早写请求相关联的写数据的缓冲器106的内容写入存储器110,并且使用于该缓冲器106的忙碌位失效。因此,当到同一高速缓存线的写请求源自于不同端口102时,如果缓冲器106是可用的,则可以将与写请求相关联的写数据存储在缓冲器106中,并且存储与较早写请求相关联的写数据的缓冲器106的内容将被写入存储器110。这帮助保证输入写请求不必在其可以被存储到缓冲器106之前等待其端口的最高优先级缓冲器106是空的,同时还保证一个端口将不会由于到存储器110的不同高速缓存线的顺序写请求而消耗过多的缓冲器106。在替换实施例中,设置更深的写/写相干性命中阈值(例如,第二写/写相干性命中或到不同高速缓存线的第三写请求,而不是第一相干性命中促使包含与最早写请求相关联的写数据的缓冲器被写入存储器110)。
如果发生读/写相干性命中,缓冲器仲裁逻辑108也确定写入缓冲器106的内容。当读请求是用于如存储在缓冲器106中的同一高速缓存线时,发生读/写相干性命中。如果在缓冲器106内容被发送到存储器110之前服务于读请求,则读请求将从存储器110访问不正确数据;因此,必须在服务于读请求之前将缓冲器106中的写数据发送到存储器110,使得读请求从存储器110的“正确”版本进行读取(即,使得存储器110包含最近写入高速缓存线的数据)。在替换实施例中,缓冲器仲裁逻辑108响应于用于特定地址或多个地址的读请求而将来自缓冲器106的所请求写数据直接返回到端口102,条件是缓冲器106包含该读请求所请求的所有写数据。这避免了必须首先将写数据发送到存储器110且随后从存储器110读取写数据。然而,如果缓冲器106未包含该读请求所请求的所有写数据,则必须首先将缓冲器106中的写数据写入存储器110。
另外,如果未发生读/写相干性命中,则缓冲器仲裁逻辑108在不将任何缓冲器106写入存储器110的情况下服务于读请求。在这种情况下,读请求避免了在其访问存储器110之前将任何数据写入存储器,并且缓冲器106中的所有写数据仍在缓冲器106中且是有效的。
依照各种实施例,缓冲器仲裁逻辑108被配置成监视与每个缓冲器106相关联的有效位。如果确定例如由于上文给出的原因而需要将写缓冲器写入存储器,则使缓冲器106的有效位生效。缓冲器106的有效位的生效向缓冲器仲裁逻辑108表示缓冲器需要参与用于存储器110的仲裁。在缓冲器106的写数据被写入存储器110之后,使有效位失效。
另外,缓冲器106将用于每个字节的状态位保持在高速缓存线中(即在2字节地址大小的情况下,每个地址两个状态位)。该状态位指示高速缓存线中的特定字节包含尚未被写入存储器110的有效数据。这样,当确定需要将缓冲器106写入存储器110时,只有高速缓存线中的已被修改的字节实际上被写回到存储器110。到空缓冲器106的第一写请求将促使针对被写入缓冲器106的每个字节使状态位生效。
返回参考图3a,使用于地址4~7(即包含尚未被写入存储器110的有效数据的地址)的状态位生效。使用于地址0~3和8~15的状态位失效,因为这些地址包含无效数据,或者先前已被写入存储器110。在缓冲器106中合并的后续写请求更新关联状态位,使得当缓冲器106的写数据最后被写入存储器110时,使与有效地址相关联的状态位生效。例如,缓冲器106的最后所得到的内容304表明用于地址4~7和9~13的状态位生效,因为这些地址包含尚未被写入存储器110的有效数据。用于地址0~3、8和14~15的状态位失效,因为这些地址包含无效数据,或者先前已被写入存储器110。在缓冲器106的写数据被写入存储器110之后,使所有状态位失效。
缓冲器仲裁逻辑108还在将该缓冲器106的内容写入存储器110之后使用于缓冲器106的忙碌位失效。然而,如果所请求的写数据被直接返回至端口102,则缓冲器仲裁逻辑108不使忙碌位失效,因为另一读请求可以访问同一高速缓存线,并且缓冲器106内容尚未被写入存储器110,因此缓冲器106不是空的。
以上讨论专注于(address)其中仅一个端口102产生写/写相干性命中或读/写相干性命中的方案。然而,本领域的技术人员将理解的是由于多端口存储器控制器的性质,不止一个端口102可以在给定周期中生成相干性命中。依照各种实施例,缓冲器仲裁逻辑108因此确定哪个端口102在给定周期中访问存储器110。这可以基于端口102的优先级,其中,端口_0具有最高优先级且端口_7具有最低优先级,或者用以在竞争端口102之间进行仲裁的任何其他适当方法。
图4a示出了依照各种实施例的方法400。该方法以从一个或多个端口102(方框402)接收一个或多个写请求开始。在示例性实施例中,缓冲器选择逻辑104接收到一个或多个写请求。然而,如上文所讨论的,可以以分散方式来实现缓冲器选择逻辑104,其中,端口102向每个缓冲器106发送写请求,并且因此每个缓冲器106接收一个或多个写请求。
该方法400继续许可源自于每个缓冲器106的最高优先级端口102的写请求(方框404)。如果缓冲器106是可用的,则缓冲器106向缓冲器选择逻辑104返回用于源自于缓冲器的最高优先级端口的请求的确认,这促使缓冲器选择逻辑许可源自于每个可用缓冲器的最高优先级端口的写请求。例如,如上文相对于图2a和2b所讨论的,每个缓冲器_3~9确认端口_2而不是端口_0的写请求,因为在本示例性方案中,端口_2是用于那些缓冲器中的每一个的较高优先级端口。另外,端口_1是用于缓冲器_1的最高优先级端口,并且因此缓冲器_1确认来自端口_1的写请求。然而,以分散方式来实现缓冲器选择逻辑104,每个可用缓冲器106确认从缓冲器的最高优先级端口102直接到端口102的写请求。
针对其写请求被许可的每个端口102,方法400继续将与写请求相关联的写数据存储在许可端口102的写请求的端口102的最高优先级缓冲器106中(方框406)。例如,将与来自端口_1的写请求相关联的写数据存储在缓冲器_1中,因为缓冲器_1是确认来自端口_1的写请求的最高优先级缓冲器。同样地,将与来自端口_2的写请求相关联的写数据存储在缓冲器_3中,因为缓冲器_3是确认来自端口_2的写请求的最高优先级缓冲器。依照各种实施例,缓冲器选择逻辑104将写数据存储到用于端口102的最高优先级缓冲器106。替换地,以分散方式来实现缓冲器选择逻辑104,并且端口102在从缓冲器106接收到一个或多个许可时将与来自该端口102的写请求相关联的写数据存储到许可端口102的写请求的最高优先级缓冲器106。
如果存在其写请求未被许可的一个或多个端口102(判定框408),则方框400返回至方框402。如果来自端口102的所有写请求都被许可(判定框408),则方法400结束。如上所述,缓冲器选择逻辑104可以确定存在未被许可的写请求。替换地,其写请求未被许可的端口102在下一个周期期间使到每个缓冲器106的写请求重新生效,并且方法400以如上所述的分散方式继续进行。
图4b示出了用于将当前写请求的写数据与已存储在缓冲器106中的写数据合并的方法410。方法410是方法400的方框404的许可步骤和方框406的存储步骤的进一步解释。方法410从确定与当前写请求相关联的写数据是否与包含在存储于缓冲器106中的写数据的高速缓存线中的地址相关联开始(方框412)。如上文所解释的,缓冲器106包含例如16个地址位置。如果与当前写请求相关联的写数据的地址被包括在高速缓存线中(即缓冲器106的16个地址位置)(判定框414),则方法410继续确定缓冲器106可用于当前写请求(方框416)。然而,如果与当前写请求相关联的写数据的地址未被包括在缓冲器106的高速缓存线中(判定框414),则方法410结束。本领域的技术人员将理解的是如果例如使缓冲器106的忙碌位失效,缓冲器106可以仍可用于当前写请求。
如果缓冲器106可用于当前写请求,则方法410继续将在先写请求的写数据和与当前写请求相关联的写数据合并,从而产生最后所得到的写数据(方框418)。返回参考图3a,例如,如果在先写请求涉及分别将数据“A”~“D”写入地址4~7,则“A”~“D”被存储在缓冲器_0的位置4~7中。当前写请求302包含分别用于地址9~13的写数据“E”~“I”(即与在先写请求相同的高速缓存线中的地址),则不需要将缓冲器_0的内容写入存储器110,也不需要当前写请求获得其自己的缓冲器。缓冲器_0的最后所得到的内容304包括用于来自在先写请求的地址4~7的数据和用于来自当前写请求302的地址9~13的数据。
替换地,由于只有被写入的最新数据对于后续读请求而言有意义,所以还可以将到高速缓存线内的重叠地址的写数据合并。返回参考图3b,例如,如果在先写请求涉及分别将数据“A”~“D”写入地址4~7,则“A”~“D”被存储在缓冲器_0的位置4~7中。当前写请求312包含分别用于地址6~11的写数据“J”~“O”。缓冲器_0的最后所得到的内容314包括用于来自在先写请求的地址4~5的数据和用于来自当前写请求312的地址6~11的数据。在先写数据的地址6~7已被覆写。
方法410继续将最后所得到的写数据(来自上文的304或314)存储在在先写请求的缓冲器106(在这种情况下缓冲器_0)中,并且方法410结束。
以上讨论意图说明本发明的原理和各种实施例。一旦完全认识到以上公开,对于本领域的技术人员来说许多变更和修改将变得显而易见。例如,虽然存储器中的地址被描述为在尺寸上是两个字节,但地址在尺寸上可以更小或更大(例如单字节地址、四字节地址)。意图在于将以下权利要求解释为涵盖所有此类变更和修改。
Claims (15)
1.一种存储器控制器,包括;
一个或多个端口,其被耦合到缓冲器选择逻辑;以及
多个缓冲器,每个缓冲器被配置成存储与写请求相关联的写数据且每个缓冲器被耦合到缓冲器选择逻辑;
其中,所述缓冲器选择逻辑被配置成基于用于端口中的每一个的缓冲器的优先级将与来自端口中的至少一个的写请求相关联的写数据存储在任何缓冲器中。
2.权利要求1的存储器控制器,其中,所述缓冲器选择逻辑被配置成:
从一个或多个端口接收写请求;
针对每个可用缓冲器,许可源自于缓冲器的最高优先级端口的写请求;以及
针对写请求被许可的每个端口,将与写请求相关联的写数据存储在端口的许可了端口的写请求的最高优先级缓冲器中;
其中,所述缓冲器选择逻辑进一步被配置成如果缓冲器选择逻辑未许可一个或多个端口的写请求,则重复上述步骤。
3.权利要求2的存储器控制器,其中,如果缓冲器是空的,则缓冲器中的一个是可用的。
4.权利要求2的存储器控制器,其中:
与在先写请求相关联的写数据被存储在缓冲器中,该写数据与高速缓存线中的一个或多个地址相关联;
与写请求相关联的写数据与地址相关联;以及
缓冲器选择逻辑被配置成如果与写请求相关联的写数据的地址在高速缓存线中,则确定缓冲器可用于写请求。
5.权利要求4的存储器控制器,其中,所述缓冲器选择逻辑还被配置成将与在先写请求相关联的写数据和与写请求相关联的写数据合并,并将最终写数据存储在包含与在先写请求相关联的写数据的缓冲器中。
6.权利要求1或权利要求2的存储器控制器,还包括被耦合到所述多个缓冲器的缓冲器仲裁逻辑,其中,所述缓冲器仲裁逻辑被配置成:
从端口接收读请求;
确定读请求是否命中存储在任何缓冲器中的写数据;
将包含该读请求命中的写数据的缓冲器的内容发送到存储器。
7.权利要求1或权利要求2的存储器控制器,还包括被耦合到所述多个缓冲器的缓冲器仲裁逻辑,其中,所述缓冲器仲裁逻辑被配置成:
从端口接收读请求;
确定读请求是否命中存储在任何缓冲器中的写数据;
将读请求命中的写数据返回至端口。
8.权利要求1或权利要求2的存储器控制器,还包括被耦合到所述多个缓冲器的缓冲器仲裁逻辑,其中,所述缓冲器仲裁逻辑被配置成:
从端口接收写请求;
确定该写请求是否命中存储在任何缓冲器中的写数据;
将包含该写请求命中的写数据的缓冲器的内容发送到存储器。
9.一种方法,包括:
从一个或多个端口接收一个或多个写请求;
针对多个缓冲器的每个可用缓冲器,许可来自缓冲器的最高优先级端口的写请求;
针对其请求被许可的每个端口,将与写请求相关联的写数据存储在端口的许可端口的写请求的最高优先级缓冲器中;
如果一个或多个端口的写请求未被许可,则重复接收、许可以及存储的上述步骤;
其中,所述写请求包括写数据,其与包含在高速缓存线中的一个或多个地址相关联。
10.权利要求9的方法,还包括如果缓冲器是空的,则确定缓冲器中的一个是可用的。
11.权利要求9的方法,还包括;
确定与当前写请求相关联的写数据是否与包含在存储于缓冲器中的写数据的高速缓存线中的地址相关联;
如果与当前写请求相关联的写数据与包含在高速缓存线中的地址相关联,则确定缓冲器可用于当前写请求。
12.权利要求11的方法,还包括;
作为当前写请求与包含在高速缓存线中的地址相关联的结果,将与在先写请求相关联的写数据和与当前写请求相关联的写数据合并,从而创建最终写数据;以及
将最终写数据存储在包含与在先写请求相关联的写数据的缓冲器中。
13.权利要求9的方法,还包括;
从端口接收读请求;
确定读请求是否命中存储在任何缓冲器中的写数据;
作为读请求命中缓冲器的一个中的写数据的结果,将该缓冲器的内容发送到存储器。
14.权利要求9的方法,还包括;
从端口接收读请求;
确定读请求是否命中存储在任何缓冲器中的写数据;
作为读请求命中写数据的结果,将写数据返回至端口。
15.权利要求9的方法,还包括;
确定写请求中的一个是否命中存储在任何缓冲器中的写数据;
作为写请求命中缓冲器的一个中的写数据的结果,将该缓冲器的内容发送到存储器。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US34958410P | 2010-05-28 | 2010-05-28 | |
US61/349584 | 2010-05-28 | ||
PCT/US2010/039477 WO2011149482A1 (en) | 2010-05-28 | 2010-06-22 | Storing data in any of a plurality of buffers in a memory controller |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102918515A true CN102918515A (zh) | 2013-02-06 |
CN102918515B CN102918515B (zh) | 2015-10-14 |
Family
ID=45004234
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201080067099.7A Expired - Fee Related CN102918515B (zh) | 2010-05-28 | 2010-06-22 | 将数据存储在存储器控制器中的多个缓冲器的任何中 |
Country Status (5)
Country | Link |
---|---|
US (1) | US9213545B2 (zh) |
CN (1) | CN102918515B (zh) |
DE (1) | DE112010005609T5 (zh) |
GB (1) | GB2493654A (zh) |
WO (1) | WO2011149482A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106533976A (zh) * | 2016-11-07 | 2017-03-22 | 深圳怡化电脑股份有限公司 | 一种数据包处理方法及装置 |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8307089B1 (en) * | 2011-08-29 | 2012-11-06 | Ariel Inventions, Llc | System and method for storing broadcast content in a cloud-based computing environment |
US9940247B2 (en) * | 2012-06-26 | 2018-04-10 | Advanced Micro Devices, Inc. | Concurrent access to cache dirty bits |
US9003158B2 (en) | 2012-10-19 | 2015-04-07 | Freescale Semiconductor, Inc. | Flexible control mechanism for store gathering in a write buffer |
US9158725B2 (en) | 2012-11-20 | 2015-10-13 | Freescale Semiconductor, Inc. | Flexible control mechanism for store gathering in a write buffer |
US9009411B2 (en) * | 2012-11-20 | 2015-04-14 | Freescale Semiconductor, Inc. | Flexible control mechanism for store gathering in a write buffer |
US10083035B2 (en) * | 2013-07-15 | 2018-09-25 | Texas Instruments Incorporated | Dual data streams sharing dual level two cache access ports to maximize bandwidth utilization |
US9218282B2 (en) | 2013-10-31 | 2015-12-22 | Micron Technology, Inc. | Memory system data management |
CN109213691B (zh) * | 2017-06-30 | 2023-09-01 | 伊姆西Ip控股有限责任公司 | 用于缓存管理的方法和设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020087806A1 (en) * | 2000-06-10 | 2002-07-04 | Kourosh Gharachorloo | Cache coherence protocol engine and method for efficient processing of interleaved memory transactions in a multiprocessor system |
US20030182517A1 (en) * | 2002-03-20 | 2003-09-25 | Mark Gooch | Method and system for buffering multiple requests from multiple devices to a memory |
CN1643482A (zh) * | 2002-02-15 | 2005-07-20 | 比维奥网络公司 | 在多个请求信号之间进行公平仲裁的系统和方法 |
US20070156946A1 (en) * | 2005-12-29 | 2007-07-05 | Intel Corporation | Memory controller with bank sorting and scheduling |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5546543A (en) * | 1993-03-26 | 1996-08-13 | Digital Equipment Corporation | Method for assigning priority to receive and transmit requests in response to occupancy of receive and transmit buffers when transmission and reception are in progress |
GB2277816B (en) * | 1993-05-04 | 1997-09-03 | Motorola Inc | Data communication system |
US5553265A (en) * | 1994-10-21 | 1996-09-03 | International Business Machines Corporation | Methods and system for merging data during cache checking and write-back cycles for memory reads and writes |
US6092158A (en) | 1997-06-13 | 2000-07-18 | Intel Corporation | Method and apparatus for arbitrating between command streams |
US6256716B1 (en) * | 1998-12-10 | 2001-07-03 | Sun Microsystems, Inc. | Apparatus, system and method for reducing bus contention during consecutive read-write operations |
US6587930B1 (en) * | 1999-09-23 | 2003-07-01 | International Business Machines Corporation | Method and system for implementing remstat protocol under inclusion and non-inclusion of L1 data in L2 cache to prevent read-read deadlock |
US6401175B1 (en) * | 1999-10-01 | 2002-06-04 | Sun Microsystems, Inc. | Shared write buffer for use by multiple processor units |
US7538772B1 (en) | 2000-08-23 | 2009-05-26 | Nintendo Co., Ltd. | Graphics processing system with enhanced memory controller |
US6681292B2 (en) | 2001-08-27 | 2004-01-20 | Intel Corporation | Distributed read and write caching implementation for optimized input/output applications |
US7107415B2 (en) | 2003-06-20 | 2006-09-12 | Micron Technology, Inc. | Posted write buffers and methods of posting write requests in memory modules |
US7167947B2 (en) * | 2004-03-15 | 2007-01-23 | Intel Corporation | Memory post-write page closing apparatus and method |
US7353301B2 (en) | 2004-10-29 | 2008-04-01 | Intel Corporation | Methodology and apparatus for implementing write combining |
US7299313B2 (en) * | 2004-10-29 | 2007-11-20 | International Business Machines Corporation | System, method and storage medium for a memory subsystem command interface |
US7630272B2 (en) * | 2007-02-19 | 2009-12-08 | Freescale Semiconductor, Inc. | Multiple port memory with prioritized world line driver and method thereof |
KR101297563B1 (ko) | 2007-11-15 | 2013-08-19 | 삼성전자주식회사 | 스토리지 관리 방법 및 관리 시스템 |
US8706900B2 (en) * | 2008-07-10 | 2014-04-22 | Juniper Networks, Inc. | Dynamic storage resources |
-
2010
- 2010-06-22 DE DE112010005609T patent/DE112010005609T5/de not_active Ceased
- 2010-06-22 GB GB1218061.8A patent/GB2493654A/en not_active Withdrawn
- 2010-06-22 WO PCT/US2010/039477 patent/WO2011149482A1/en active Application Filing
- 2010-06-22 CN CN201080067099.7A patent/CN102918515B/zh not_active Expired - Fee Related
- 2010-06-22 US US13/641,567 patent/US9213545B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020087806A1 (en) * | 2000-06-10 | 2002-07-04 | Kourosh Gharachorloo | Cache coherence protocol engine and method for efficient processing of interleaved memory transactions in a multiprocessor system |
CN1643482A (zh) * | 2002-02-15 | 2005-07-20 | 比维奥网络公司 | 在多个请求信号之间进行公平仲裁的系统和方法 |
US20030182517A1 (en) * | 2002-03-20 | 2003-09-25 | Mark Gooch | Method and system for buffering multiple requests from multiple devices to a memory |
US20070156946A1 (en) * | 2005-12-29 | 2007-07-05 | Intel Corporation | Memory controller with bank sorting and scheduling |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106533976A (zh) * | 2016-11-07 | 2017-03-22 | 深圳怡化电脑股份有限公司 | 一种数据包处理方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN102918515B (zh) | 2015-10-14 |
US9213545B2 (en) | 2015-12-15 |
US20130046933A1 (en) | 2013-02-21 |
DE112010005609T5 (de) | 2013-03-21 |
WO2011149482A1 (en) | 2011-12-01 |
GB2493654A (en) | 2013-02-13 |
GB201218061D0 (en) | 2012-11-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102918515A (zh) | 将数据存储在存储器控制器中的多个缓冲器的任何中 | |
US8041869B2 (en) | Method and system for bus arbitration | |
US7069373B2 (en) | USB endpoint controller flexible memory management | |
CN1048459A (zh) | 数字数据处理系统高速缓冲存储器内容的失效标记 | |
CN1732446B (zh) | 用于对存储器写入的方法 | |
US6766386B2 (en) | Method and interface for improved efficiency in performing bus-to-bus read data transfers | |
US6567883B1 (en) | Method and apparatus for command translation and enforcement of ordering of commands | |
EP0814408B1 (en) | Bus bridge apparatus | |
US20010051994A1 (en) | Computer system and a data transfer method thereof | |
US7934043B2 (en) | Data processing apparatus for controlling access to a memory based upon detection of completion of a DMA bus cycle | |
US20020112105A1 (en) | Method and apparatus for efficient messaging between memories across a PCI bus | |
US6826644B1 (en) | Peripheral component interconnect arbiter implementation with dynamic priority scheme | |
CN102043741B (zh) | 用于管道仲裁的电路和方法 | |
JPH0581939B2 (zh) | ||
CN107203339B (zh) | 一种数据存储方法及装置 | |
US7451254B2 (en) | System and method for adaptive buffer allocation in a memory device interface | |
US7433989B2 (en) | Arbitration method of a bus bridge | |
US7472212B2 (en) | Multi CPU system | |
US6625678B1 (en) | Livelock avoidance method | |
US20050138236A1 (en) | Direct memory access control device and method for automatically updating data transmisson size from peripheral | |
US8239652B2 (en) | Data processing system | |
KR100615694B1 (ko) | 복수개의 기능블럭을 제어하는 제어시스템 | |
JPH11184761A (ja) | リードモディファイライト制御システム | |
US7644201B2 (en) | Method and system for performance enhancement via transaction verification using a counter value in a polled data storage environment | |
US6631428B1 (en) | Apparatus and method for completing transactions in all flow control classes |
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 | ||
C41 | Transfer of patent application or patent right or utility model | ||
TR01 | Transfer of patent right |
Effective date of registration: 20170103 Address after: Texas, USA Patentee after: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP Address before: Texas, USA Patentee before: Hewlett-Packard Development Company, L.P. |
|
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20151014 Termination date: 20210622 |
|
CF01 | Termination of patent right due to non-payment of annual fee |