将数据存储在存储器控制器中的多个缓冲器的任何中的制作方法

文档序号:6352198阅读:191来源:国知局
专利名称:将数据存储在存储器控制器中的多个缓冲器的任何中的制作方法
将数据存储在存储器控制器中的多个缓冲器的任何中相关申请的交叉引用
本申请要求题为 “Storing Data in any of a Plurality of Buffers in a MemoryController”的2010年5月28日提交的临时专利申请序号61/349,584的权益。
背景技术
存储器控制器管理被写入物理存储器和从物理存储器读取的数据的流动。“读请求”是从存储器读取数据的请求,并且可以包括将被读取的存储器中的地址和期望从存储器进行读取的设备的标识符。“写请求”是向存储器写入数据的请求,并且可以包括要写入的数据、将写入数据的存储器中的地址以及期望向存储器进行写入的设备的标识符。来自特定设备的读请求和写请求经由端口进入存储器控制器。多端口存储器控制器是能够服务 于来自不止一个设备的读请求和写请求的存储器控制器,其中,每个设备被分配给存储器控制器的特定端口。许多不同的设备出于各种原因(例如存储指针、数据)要求访问物理存储器。为了降低成本,这些设备可以共享单个物理存储器,其可以导致用于同一源的许多存储器请求。并不是所有存储器请求都可以被同时满足,因此使用写缓冲器来保持待决写数据,同时将其他写数据写入存储器。每个端口具有专用写缓冲器,其允许进入要被吸收的端口的写请求而不必立即将关联写数据写入存储器。存储器控制器的一个端口常常对存储器访问具有低需求,而另一端口具有对存储器访问的高需求,因此一个缓冲器未被如另一缓冲器那样被频繁地使用。


为了本发明的示例性实施例的详细描述,现在将对附图进行参考,在所述附图中
图I示出了依照各种实施例的系统方框 图2a、2b、2c、2d、2e和2f示出了依照各种实施例的示例性端口缓冲器 图3a和3b示出了依照各种实施例的示例性存储器 图4a示出了依照各种实施例的方法流程图;以及 图4b示出了依照各种实施例的另一方法流程图。注释和命名法
某些术语遍及以下描述和权利要求用来参考特定系统部件。如本领域的技术人员将认识到的,计算机公司可以用不同名称来提及部件。本文档并不意图在名称而不是功能方面不同的部件之间进行区别。在以下讨论中和在权利要求中,以开放方式来使用术语“包括”和“包含”,并且因此应将其解释为意指“包括但不限于”。并且,术语“耦合”或“耦合”意图意指间接、直接、光学或无线电连接。因此,如果第一设备耦合到第二设备,则该连接可以通过直接电连接、通过经由其他设备和连接的间接电连接、通过光学电连接或通过无线电连接。
具体实施例方式以下讨论针对本发明的各种实施例。虽然这些实施例中的一个或多个可以是优选的,所以不应将所公开的实施例解释为或另外用作限制包括权利要求的本公开的范围。另夕卜,本领域的技术人员将理解的是以下描述具有广泛的应用,并且任何实施例的讨论仅仅意图是该实施例的示例,而不是意图暗示包括权利要求的本公开的范围局限于该实施例。依照各种实施例,图I示出了存储器控制器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的最低优先级缓冲器);端口 J是类似的,然而缓冲器环绕(例如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是不可用的,并且所有其他缓冲器(即I和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个地址位置(例如地址O 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中的写数据所表示的高速缓存线的地址不同的地址或地址群组(即除O 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的写请求相关联的写数据对应于地址O 15,并且端口 _0使写数据存储在对应于地址O 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的情况下服务于读请求。在这种情况下,读请求避免了在其访问存储器Iio之前将任何数据写入存储器,并且缓冲器106中的所有写数据仍在缓冲器106中且是有效的。依照各种实施例,缓冲器仲裁逻辑108被配置成监视与每个缓冲器106相关联的有效位。如果确定例如由于上文给出的原因而需要将写缓冲器写入存储器,则使缓冲器106的有效位生效。缓冲器106的有效位的生效向缓冲器仲裁逻辑108表示缓冲器需要参与用于存储器110的仲裁。在缓冲器106的写数据被写入存储器110之后,使有效位失效。另外,缓冲器106将用于每个字节的状态位保持在高速缓存线中(即在2字节地址大小的情况下,每个地址两个状态位)。该状态位指示高速缓存线中的特定字节包含尚未被写入存储器110的有效数据。这样,当确定需要将缓冲器106写入存储器110时,只有高速缓存线中的已被修改的字节实际上被写回到存储器110。到空缓冲器106的第一写请求将促使针对被写入缓冲器106的每个字节使状态位生效。 返回参考图3a,使用于地址4 7 (即包含尚未被写入存储器110的有效数据的地址)的状态位生效。使用于地址O 3和8 15的状态位失效,因为这些地址包含无效数据,或者先前已被写入存储器110。在缓冲器106中合并的后续写请求更新关联状态位,使得当缓冲器106的写数据最后被写入存储器110时,使与有效地址相关联的状态位生效。例如,缓冲器106的最后所得到的内容304表明用于地址4 7和9 13的状态位生效,因为这些地址包含尚未被写入存储器110的有效数据。用于地址O 3、8和14 15的状态位失效,因为这些地址包含无效数据,或者先前已被写入存储器110。在缓冲器106的写数据被写入存储器110之后,使所有状态位失效。缓冲器仲裁逻辑108还在将该缓冲器106的内容写入存储器110之后使用于缓冲器106的忙碌位失效。然而,如果所请求的写数据被直接返回至端口 102,则缓冲器仲裁逻辑108不使忙碌位失效,因为另一读请求可以访问同一高速缓存线,并且缓冲器106内容尚未被写入存储器110,因此缓冲器106不是空的。以上讨论专注于(address)其中仅一个端口 102产生写/写相干性命中或读/写相干性命中的方案。然而,本领域的技术人员将理解的是由于多端口存储器控制器的性质,不止一个端口 102可以在给定周期中生成相干性命中。依照各种实施例,缓冲器仲裁逻辑108因此确定哪个端口 102在给定周期中访问存储器110。这可以基于端口 102的优先级,其中,端口 _0具有最高优先级且端口 J具有最低优先级,或者用以在竞争端口 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结束。
以上讨论意图说明本发明的原理和各种实施例。一旦完全认识到以上公开,对于本领域的技术人员来说许多变更和修改将变得显而易见。例如,虽然存储器中的地址被描述为在尺寸上是两个字节,但地址在尺寸上可以更小或更大(例如单字节地址、四字节地址)。意图在于将以下权利要求解释为涵盖所有此类变更和修改。
权利要求
1.一种存储器控制器,包括; 一个或多个端口,其被耦合到缓冲器选择逻辑;以及 多个缓冲器,每个缓冲器被配置成存储与写请求相关联的写数据且每个缓冲器被耦合到缓冲器选择逻辑; 其中,所述缓冲器选择逻辑被配置成基于用于端口中的每一个的缓冲器的优先级将与来自端口中的至少一个的写请求相关联的写数据存储在任何缓冲器中。
2.权利要求I的存储器控制器,其中,所述缓冲器选择逻辑被配置成 从一个或多个端口接收写请求; 针对每个可用缓冲器,许可源自于缓冲器的最高优先级端口的写请求;以及针对写请求被许可的每个端口,将与写请求相关联的写数据存储在端口的许可了端口的写请求的最高优先级缓冲器中; 其中,所述缓冲器选择逻辑进一步被配置成如果缓冲器选择逻辑未许可一个或多个端口的写请求,则重复上述步骤。
3.权利要求2的存储器控制器,其中,如果缓冲器是空的,则缓冲器中的一个是可用的。
4.权利要求2的存储器控制器,其中 与在先写请求相关联的写数据被存储在缓冲器中,该写数据与高速缓存线中的一个或多个地址相关联; 与写请求相关联的写数据与地址相关联;以及 缓冲器选择逻辑被配置成如果与写请求相关联的写数据的地址在高速缓存线中,则确定缓冲器可用于写请求。
5.权利要求4的存储器控制器,其中,所述缓冲器选择逻辑还被配置成将与在先写请求相关联的写数据和与写请求相关联的写数据合并,并将最终写数据存储在包含与在先写请求相关联的写数据的缓冲器中。
6.权利要求I或权利要求2的存储器控制器,还包括被耦合到所述多个缓冲器的缓冲器仲裁逻辑,其中,所述缓冲器仲裁逻辑被配置成 从端口接收读请求; 确定读请求是否命中存储在任何缓冲器中的写数据; 将包含该读请求命中的写数据的缓冲器的内容发送到存储器。
7.权利要求I或权利要求2的存储器控制器,还包括被耦合到所述多个缓冲器的缓冲器仲裁逻辑,其中,所述缓冲器仲裁逻辑被配置成 从端口接收读请求; 确定读请求是否命中存储在任何缓冲器中的写数据; 将读请求命中的写数据返回至端口。
8.权利要求I或权利要求2的存储器控制器,还包括被耦合到所述多个缓冲器的缓冲器仲裁逻辑,其中,所述缓冲器仲裁逻辑被配置成 从端口接收写请求; 确定该写请求是否命中存储在任何缓冲器中的写数据; 将包含该写请求命中的写数据的缓冲器的内容发送到存储器。
9.一种方法,包括 从一个或多个端口接收一个或多个写请求; 针对多个缓冲器的每个可用缓冲器,许可来自缓冲器的最高优先级端口的写请求; 针对其请求被许可的每个端口,将与与请求相关联的与数据存储在端口的许可端口的写请求的最高优先级缓冲器中; 如果一个或多个端口的写请求未被许可,则重复接收、许可以及存储的上述步骤; 其中,所述写请求包括写数据,其与包含在高速缓存线中的一个或多个地址相关联。
10.权利要求9的方法,还包括如果缓冲器是空的,则确定缓冲器中的一个是可用的。
11.权利要求9的方法,还包括; 确定与当前写请求相关联的写数据是否与包含在存储于缓冲器中的写数据的高速缓存线中的地址相关联; 如果与当前写请求相关联的写数据与包含在高速缓存线中的地址相关联,则确定缓冲器可用于当前写请求。
12.权利要求11的方法,还包括; 作为当前写请求与包含在高速缓存线中的地址相关联的结果,将与在先写请求相关联的写数据和与当前写请求相关联的写数据合并,从而创建最终写数据;以及将最终写数据存储在包含与在先写请求相关联的写数据的缓冲器中。
13.权利要求9的方法,还包括; 从端口接收读请求; 确定读请求是否命中存储在任何缓冲器中的写数据; 作为读请求命中缓冲器的一个中的写数据的结果,将该缓冲器的内容发送到存储器。
14.权利要求9的方法,还包括; 从端口接收读请求; 确定读请求是否命中存储在任何缓冲器中的写数据; 作为读请求命中写数据的结果,将写数据返回至端口。
15.权利要求9的方法,还包括; 确定写请求中的一个是否命中存储在任何缓冲器中的写数据; 作为写请求命中缓冲器的一个中的写数据的结果,将该缓冲器的内容发送到存储器。
全文摘要
一种包含被耦合到缓冲器选择逻辑的一个或多个端口和多个缓冲器的存储器控制器。每个缓冲器被配置成存储与写请求相关联的写数据,并且每个缓冲器还被耦合到缓冲器选择逻辑。所述缓冲器选择逻辑被配置成基于用于端口中的每一个的缓冲器的优先级将与来自端口中的至少一个的写请求相关联的写数据存储在任何缓冲器中。
文档编号G06F9/06GK102918515SQ201080067099
公开日2013年2月6日 申请日期2010年6月22日 优先权日2010年5月28日
发明者H.Q.乐, T.F.埃默森, D.F.海因里奇, R.L.努南 申请人:惠普发展公司,有限责任合伙企业
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1