动态随机存取存储器控制器和控制方法

文档序号:6583991阅读:125来源:国知局
专利名称:动态随机存取存储器控制器和控制方法
技术领域
本发明涉及一种动态随机存取存储器(DRAM)控制器和DRAM控制方法,更具体地 涉及一种能够补偿由于响应于部分写请求执行读-修改-写(Read-M0dify-Write,RMW)操 作而导致的性能下降的DRAM控制器和DRAM控制方法。
背景技术
目前,动态随机存取存储器(DRAM)已经被广泛用于数据存储领域。通常,使用 DRAM控制器来控制对DRAM的读写。图1示出了传统的DRAM控制器的框图。如图1所示, DRAM控制器100包括控制单元101和合并单元102,并且通过命令总线和数据总线与DRAM 200相连接。当从中央处理单元(CPU)(未示出)接收到读/写请求时,DRAM控制器100相 应地控制对DRAM 200的读/写操作,以便向CPU返回所请求读的数据或者将所请求写的数 据写入DRAM 200。对于支持纠错码(ECC)纠错功能的DRAM(假设为图1所示的DRAM200),当接收到 部分写请求时,DRAM控制器100需要对DRAM 200执行读-修改-写(RMW)操作,以便能够 对写入DRAM 200的数据进行正确的ECC计算。具体地说,如本领域公知的,CPU向DRAM写 数据的最小单位为1字节,然而CPU和DRAM之间的总线宽度通常大于1字节,例如可以为 8字节。如果在写请求中,CPU要写入DRAM的字节数小于总线宽度,则这种写请求被称为部 分写请求,反之,如果要写入的字节数等于总线宽度,则该写请求为完全写请求。由于ECC 纠错是以例如8字节为单位进行的,因此,如果对于该部分写请求要写入的数据(例如,1字 节)无法正确地计算ECC。为了解决这个问题,当接收到部分写请求时,控制单元101经由 命令总线向DRAM 200发出读命令,以便将存储在DRAM 200中的、包括部分写请求的写地址 上的数据的一个突发长度(burst length)的数据读取到合并单元102中(读操作)。该突 发长度的数据的长度为总线宽度的倍数。然后,合并单元102将所读取的数据与该部分写 请求要写入的数据合并,即,利用要写入的数据替换所读取的数据中、在所请求的写地址上 的数据(修改操作)。最后,控制单元101将合并后的数据写入DRAM 200 (写操作),由此, 完成部分写请求的执行。可以看到,对于一个部分写请求,需要连续执行三个操作,因而需要耗费较长的时 间。如果DRAM控制器在短时间内接收到很多部分写请求,则其性能将严重降低。因此,需要一种DRAM控制器和DRAM控制方法,其能够补偿由于响应于部分写请求 执行RMW操作而导致的DRAM控制器的性能下降。

发明内容
考虑到以上问题而做出了本发明。本发明的一个目的是提供一种DRAM控制器和 DRAM控制方法,其能够补偿由于响应于部分写请求执行RMW操作而导致的DRAM控制器的性 能下降,由此在一定程度上提高DRAM控制器的性能。根据本发明的一个方面,提供了一种DRAM控制器,用于控制对DRAM的读写,包括存储单元,用于存储包含响应于先前的部分写请求而写入DRAM的数据的第一预定长度的 数据、以及所述第一预定长度的数据在DRAM中的存储地址;以及控制单元,用于响应于所 接收的读请求而判断在所述存储地址中是否存在与该读请求中的读地址相同的地址,并且 当在所述存储地址中存在与该读地址相同的地址时,从存储单元中读取与该读地址相对应 的数据以便输出。根据本发明的另一方面,提供了一种DRAM控制方法,用于DRAM控制器,该DRAM控 制器控制对DRAM的读写,并且包括存储单元,所述DRAM控制方法包括以下步骤将包含响 应于 先前的部分写请求而写入DRAM的数据的第一预定长度的数据、以及所述第一预定长 度的数据在DRAM中的存储地址存储在存储单元中;以及响应于所接收的读请求而判断在 所述存储地址中是否存在与该读请求中的读地址相同的地址,并且当在所述存储地址中存 在与该读地址相同的地址时,从存储单元中读取与该读地址相对应的数据以便输出。如上所述,在根据本发明实施例的DRAM控制器中,设置了存储单元,用于存储包 括响应于先前的部分写请求而写入DRAM的数据的第一预定长度的数据以及该数据在DRAM 中的存储地址。当随后接收到的读请求所请求读取的数据已经被存储在存储单元中时,可 以直接从存储单元读取所请求读取的数据,而不再需要像传统技术那样对DRAM执行读操 作,从而缩短了执行读请求的时间,补偿了由于先前的RMW操作导致的DRAM控制器的性能 下降。此外,如下文所述,当接收到部分写请求时,如果存储在DRAM中的、包括所请求的写 地址上的数据的第一预定长度的数据已经被存储在存储单元中,则可以直接从存储单元读 取应当与要写入的数据合并的数据,而不需要对DRAM执行读操作,由此缩短了执行部分写 请求的时间,减小了由于RMW操作导致的性能下降。


通过结合附图对本发明的实施例进行详细描述,本发明的上述和其它目的、特征、 优点将会变得更加清楚,其中图1示出了传统的DRAM控制器的框图;图2示出了根据本发明实施例的DRAM控制器的框图;图3示出了根据本发明实施例的DRAM控制方法的流程图。
具体实施例方式下面将参照附图来描述根据本发明实施例的DRAM控制器以及DRAM控制方法。在 附图中,相同的参考标号自始至终表示相同的元件。应当理解这里描述的实施例仅仅是说 明性的,而不应被解释为限制本发明的范围。首先,参照图2来描述根据本发明实施例的DRAM控制器。如图2所示,DRAM控制器300包括表格旁路缓冲器(Table Look-asideBuffer, TLB) 301、控制单元302、复用单元(MUX) 303、以及合并单元304。DRAM控制器300通过命令总线和数据总线与DRAM 200相连接,其从诸如CPU的 外部设备(未示出)接收读/写请求,并且根据所接收的请求控制对DRAM 200的读/写操作。TLB 301存储包括响应于先前的部分写请求而写入DRAM的数据的第一预定长度的数据、以及该第一预定长度的数据在DRAM中的存储地址。所述第一预定长度可以为一个 突发长度的数据长度的一倍或多倍,但优选地等于一个突发长度的数据长度。具体地说,如稍后将详细描述的那样,当从CPU接收到部分写请求时,如果存储在DRAM 200中的、包括所请求的写地址上的数据的第一预定长度的数据没有被预先存储在 TLB 301中,则控制单元302将从DRAM 200读取所述第一预定长度的数据,并且将所读取的 数据写入TLB 301。然后,合并单元304将所读取的数据中、包括所请求的写地址上的数据 的第二预定长度的数据与要写入的数据合并。另一方面,如果所述第一预定长度的数据已 经被预先存储在TLB 301中,则合并单元304将把要写入的数据与从TLB 301读取的、包括 所请求的写地址上的数据的第二预定长度的数据合并。在任一情况下,合并后的数据除了 被存储到DRAM 200中以外,还被存储到TLB 301中并且替换原来的与相同地址相对应的数 据,以供以后的读请求或部分写请求使用。除了合并后的数据以外,控制单元302还将所述 第一预定长度的数据在DRAM中的对应存储地址存储在TLB 301中。在TLB 301中,可以以 表的形式相关联地存储所述数据和存储地址,也可以采用任何其它合适的数据结构。所述 第二预定长度可以小于或等于第一预定长度,例如可以为外部设备与DRAM控制器之间的 总线宽度的一倍或多倍,但优选地等于总线宽度。TLB 301的容量(即,存储所述数据和存储地址的表的深度)需要在DRAM控制器 300的栅极数目(gate-count)和命中率之间进行权衡,命中率是指在存储于TLB 301内的 存储地址中找到与所请求的读/写地址相同的地址的比率。如果TLB深度大,则性能补偿 效果好,但DRAM控制器的栅极数目较多,反之,如果TLB深度小,则DRAM控制器的栅极数目 少,但是性能补偿效果较差。在实际应用中,可以根据设计需要来设置TLB 301的容量。控制单元302控制对TLB 301和DRAM 200的读/写。此外,控制单元302确定 DRAM控制器300从CPU接收的请求的类型,并且相应地执行下文所述的操作。控制单元302 判断请求类型的方法是本领域公知的,因此为简单起见,在这里省略对其的详细描述。当控制单元302确定所接收的请求为读请求时,其利用该读请求中的读地址(以 下称为读地址)来查询TLB 301,S卩,将读地址与存储在TLB 301中的存储地址进行比较, 以便查看在TLB 301中是否存在与读地址相同的地址。如果在TLB 301中找到与该读地址 相同的地址(即,“命中”),则这意味着该读请求要读取的数据已经被预先存储在TLB 301 中。因此,控制单元302根据读地址从TLB 301读取对应的数据,所读取的数据被提供给 MUX303。控制单元302还向MUX 303发送第一指示信号,使得MUX 303响应于该第一指示 信号而将所读取的数据提供给CPU。另一方面,如果在TLB 301中没有找到与读地址相同的 地址(即,“没有命中”),则这意味着该读请求要读取的数据没有被存储在TLB 301中。因 此,控制单元302经由命令总线向DRAM 200发送读命令,以便从DRAM 200读取所述读地址 上的数据。所读取的数据经由数据总线而被提供给MUX 303。控制单元302还向MUX 303 发送第二指示信号,使得MUX 303响应于该第二指示信号而将所读取的数据提供给CPU。当控制单元302确定所接收的请求为部分写请求时,其利用该部分写请求中的写 地址(以下称为部分写地址)查询TLB 301,S卩,将部分写地址与存储在TLB 301中的存储 地址进行比较,以便查看在TLB 301中是否存在与部分写地址相同的地址。如果在TLB 301 中找到与该部分写地址相同的地址(即,“命中”),则这意味着,存储在DRAM 200中的、包 括该部分写地址上的数据的第一预定长度的数据已经被预先存储在TLB 301中,因此,控制单元302根据部分写地址从TLB 301读取包括该部分写地址上的数据的第二预定长度的 数据,所读取的数据被提供给MUX 303。控制单元302还向MUX303发送第三指示信号,使得 MUX 303响应于该第三指示信号而将所述第二预定长度的数据提供给合并单元304。另一 方面,如果在TLB 301中没有找到与部分写地址相同的地址,则这意味着存储在DRAM 200 中的、包括该部分写地址上的数据的第一预定长度的数据没有被预先存储在TLB 301中。 因此,控制单元302经由命令总线向DRAM 200发送读命令,以便从DRAM200读取包括部分 写地址上的数据的第一预定长度的数据,并且将所读取的数据以及该数据在DRAM中的对 应存储地址存储到TLB 301中。然后,控制单元302从TLB 301读取包括部分写地址上的 数据的第二预定长度的数据,并且将该数据提供给MUX 303。控制单元302还向MUX 303发 送第三指示信号,使得MUX 303响应于该第三指示信号而将所述第二预定长度的数据提供 给合并单元304。当合并单元304完成所述第二预定长度的数据与要写入的数据的合并操 作时,控制单元302还控制合并单元304将合并后的数据存储到DRAM 200和TLB 301中, 以便利用合并后的数据替换DRAM 200和TLB 301中的对应数据。该替换方法是本领域公 知的,在这里不再赘述。当控制单元302确定所接收的请求为完全写请求时,其根据该完全写请求中的写 地址(以下称为完全写地址),经由合并单元304将要写入的数据写入DRAM 200。此外,控 制单元302还利用完全写地址查询TLB 301,以便查看在TLB 301中是否存在与该完全写 地址相同的地址。如果在TLB 301中找到与该完全写地址相同的地址(即,“命中”),则这 意味着在控制单元302将所述要写入的数据写入DRAM 200之前存储在DRAM 200中的、 该完全写地址上的数据已经被预先存储在TLB 301中,因此,为了使存储在TLB301和DRAM 200中的、与该完全写 地址相对应的数据始终保持一致,控制单元302将该完全写请求要写 入的数据写入TLB 301以替换其中的对应数据。另一方面,如果在TLB 301中没有找到与 完全写地址相同的地址,则控制单元302不执行上述替换操作。MUX 303实际上为选择器。如上文所述,MUX 303响应于来自控制单元302的第 一、第二或第三指示信号而选择性地将提供到其输入端的数据输出到CPU或合并单元304。合并单元304将部分写请求要写入的数据与从MUX 303提供的所述第二预定长度 的数据合并,即,利用要写入的数据替换所述第二预定长度的数据中、与部分写地址相对应 的数据,并且在控制单元302的控制下将合并后的数据写入DRAM 200和TLB 301以替换其 中的对应数据。下面,将参照图3来描述根据本发明实施例的DRAM控制方法,该控制方法可由图 2所示的DRAM控制器执行。如图3所示,当DRAM控制器300从诸如CPU的外部设备接收到请求时,在步骤S401 中,控制单元302确定所接收的请求是否是读请求。如果所接收的请求是读请求,则控制单元302在步骤S402中利用该读请求中的读 地址查询TLB 301,并且在步骤S403中确定在存储于TLB 301内的存储地址中是否存在与 该读地址相同的地址,即,确定是否“命中”。如果命中,则在步骤S404中,控制单元302根 据所述读地址从TLB 301读取对应的数据。所读取的数据被提供给MUX 303。此外,控制单 元302还向MUX 303发送第一指示信号,使得MUX 303将所读取的数据提供给CPU。另一方 面,如果没有命中,则在步骤S405中,控制单元302经由命令总线向DRAM 200发送读命令,以便利用所述读地址从DRAM 200读取对应的数据。所读取的数据经由数据总线而被提供 给MUX 303。此外,控制单元302还向MUX 303发送第二指示信号,使得MUX 303将从DRAM 200读取的数据提供给CPU。另一方面,如果在步骤S401确定所接收的请求不是读请求,则在步骤S406中,控 制单元302确定该请求是否是部分写请求。控制单元302判断该请求是否是部分写请求的 方法是本领域公知的,例如,可以通过该写请求中针对每个字节设置的BYTE ENABLE标志位 判断该写请求要写入的字节数是否等于总线宽度,来确定该写请求是否是部分写请求;也 可以在所接受的请求中设置一部分写请求标志位,以标志该请求为部分写请求。如果在步骤S406中确定所接收的请求不是部分写请求而是完全写请求,则在步 骤S407中,控制单元302根据该完全写请求中的写地址(以下称为完全写地址),将该写请 求要写入的数据经由合并单元304写入DRAM 200。然后,在步骤S408中,控制单元302利 用所述完全写地址查询TLB 301,并且在步骤S409中确定在TLB 301中是否存在与所述完 全写地址相同的地址,即,确定是否“命中”。如果命中,则在步骤S410中,控制单元302将 该完全写请求要写入的数据写入TLB 301中以便替换其中的对应数据。反之,如果 在步骤 S409中没有命中,则该过程结束,而不执行前述替换操作。另一方面,如果在步骤S406中确定所接收的请求是部分写请求,则在步骤S411 中,控制单元302利用该部分写请求中的写地址(以下称为部分写地址)查询TLB 301, 并且在步骤S412中确定在TLB 301中是否存在与所述部分写地址相同的地址,即,确定是 否“命中”。如果命中,则在步骤S413中,控制单元302从TLB 301读取包括部分写地址上 的数据的第二预定长度的数据,所读取的数据被提供给MUX 303。此外,控制单元302还向 MUX 303发送第三指示信号,使得MUX 303将从TLB 301读取的数据提供给合并单元304。 反之,如果在步骤S412中没有命中,则在步骤S414中,控制单元302经由命令总线向DRAM 200发送读命令以便从DRAM 200读取包括所请求的写地址上的数据的第一预定长度的数 据,并且将所读取的数据以及该数据在DRAM中的对应存储地址存储到TLB 301中。然后,在 步骤S415中,控制单元302从TLB 301读取包括部分写地址上的数据的第二预定长度的数 据并且将其提供给MUX 303。控制单元302还向MUX 303发送第三指示信号,使得MUX 303 将所述第二预定长度的数据提供给合并单元304。接下来,在步骤S416中,合并单元304将从MUX 303提供的所述第二预定长度的 数据与该部分写请求要写入的数据合并,并且在步骤S417中,将合并后的数据输出到DRAM 200和TLB 301以替换其中的对应数据。可以看到,在根据本发明实施例的DRAM控制方法中,每次执行部分写请求时,都 将合并后的数据存储在TLB 301中。由此,当随后接收到读请求或者部分写请求时,如果该 请求涉及的数据已经被存储在TLB 301中,则可以直接从TLB 301读取所需数据,而不再需 要像传统技术那样对DRAM执行读操作,由此,减少了执行所述请求的时间,补偿了由于RMW 操作导致的DRAM控制器性能的下降。在上文中,描述了根据本发明实施例的DRAM控制器和DRAM控制方法。应当认识 至IJ,这里的描述仅仅是说明性的,而不是限制性的。本领域技术人员可以根据需要对所述 DRAM控制器和DRAM控制方法进行各种改变。例如,可以对上述实施例进行如下修改可以 通过向TLB 301和MUX 303施加使能(ENABLE)信号或禁止(DISABLE)信号,来控制是否启动这两个部件。具体地,当控制单元302向TLB 301和MUX 303施加使能信号时,TLB 301 和MUX 303启动并且如上文所述的那样工作,从而与控制单元302和合并单元304 —起执 行根据本发明实施例的DRAM控制方法。反之,当控制单元302向TLB 301和MUX 302施加 禁止信号时,TLB 301和MUX 303被禁用,此时控制单元302和合并单元304像图1所示的 传统DRAM控制器100那样工作,而不执行根据本发明实施例的DRAM控制方法。
尽管在上文中已经示出和描述了本发明的示例实施例以及示例性修改,但是本领 域技术人员应当理解,在不背离权利要求及其等价物中限定的本发明的范围和精神的情况 下,可以对这些示例实施例做出各种其它形式和细节上的修改和改变。
权利要求
一种DRAM控制器,用于控制对DRAM的读写,包括存储单元,用于存储包含响应于先前的部分写请求而写入DRAM的数据的第一预定长度的数据、以及所述第一预定长度的数据在DRAM中的存储地址;以及控制单元,用于响应于所接收的读请求而判断在所述存储地址中是否存在与该读请求中的读地址相同的地址,并且当在所述存储地址中存在与该读地址相同的地址时,从存储单元中读取与该读地址相对应的数据以便输出。
2.如权利要求1所述的DRAM控制器,其中,当在所述存储地址中不存在与所述读地址 相同的地址时,控制单元从DRAM读取所述读地址上的数据以便输出。
3.如权利要求1所述的DRAM控制器,其中,当接收到完全写请求时,控制单元根据该完 全写请求中的写地址,将该完全写请求要写入的数据写入DRAM,控制单元还判断在所述存 储地址中是否存在与该完全写请求中的写地址相同的地址,并且当在所述存储地址中存在 与所述写地址相同的地址时,将该完全写请求要写入的数据写入存储单元以便替换存储单 元中的对应数据。
4.如权利要求1所述的DRAM控制器,还包括合并单元,其中,当接收到部分写请求时,控制单元判断在所述存储地址中是否存在与该部分写 请求中的写地址相同的地址,并且当在所述存储地址中存在与该写地址相同的地址时,合 并单元将存储在存储单元中的、包含该写地址上的数据的第二预定长度的数据与该部分写 请求要写入的数据合并,并且将合并后的数据写入DRAM和存储单元。
5.如权利要求4所述的DRAM控制器,其中,当在所述存储地址中不存在与所述写地址 相同的地址时,控制单元从DRAM读取包含该写地址上的数据的第一预定长度的数据,并且 合并单元将所读取的第一预定长度的数据中、包含该写地址上的数据的第二预定长度的数 据与该部分写请求要写入的数据合并,并且将合并后的数据写入DRAM和存储单元。
6.如权利要求1所述的DRAM控制器,其中,所述第一预定长度为一个突发长度的数据 的长度,所述第二预定长度为外部设备与DRAM控制器之间的总线宽度。
7.一种DRAM控制方法,用于DRAM控制器,该DRAM控制器控制对DRAM的读写,并且包 括存储单元,所述DRAM控制方法包括以下步骤将包含响应于先前的部分写请求而写入DRAM的数据的第一预定长度的数据、以及所 述第一预定长度的数据在DRAM中的存储地址存储在存储单元中;以及响应于所接收的读请求而判断在所述存储地址中是否存在与该读请求中的读地址相 同的地址,并且当在所述存储地址中存在与该读地址相同的地址时,从存储单元中读取与 该读地址相对应的数据以便输出。
8.如权利要求7所述的DRAM控制方法,还包括以下步骤在所述存储地址中不存在与所述读地址相同的地址时,从DRAM读取所述读地址上的 数据以便输出。
9.如权利要求7所述的DRAM控制方法,还包括以下步骤当接收到完全写请求时,根据该完全写请求中的写地址,将该完全写请求要写入的数 据写入DRAM ;判断在所述存储地址中是否存在与该完全写请求中的写地址相同的地址;以及当在所述存储地址中存在与所述写地址相同的地址时,将该完全写请求要写入的数据 写入存储单元以便替换存储单元中的对应数据。
10.如权利要求7所述的DRAM控制方法,还包括以下步骤接收到部分写请求时,判断在所述存储地址中是否存在与该部分写请求中的写地址相 同的地址;当在所述存储地址中存在与该写地址相同的地址时,将存储在存储单元中的、包含该 写地址上的数据的第二预定长度的数据与该部分写请求要写入的数据合并;以及将合并后的数据写入DRAM和存储单元。
11.如权利要求10所述的DRAM控制方法,还包括以下步骤当在所述存储地址中不存在与所述写地址相同的地址时,从DRAM读取包含该写地址 上的数据的第一预定长度的数据;将所读取的第一预定长度的数据中、包含该写地址上的数据的第二预定长度的数据与 该部分写请求要写入的数据合并;以及将合并后的数据写入DRAM和存储单元。
12.如权利要求7所述的DRAM控制方法,其中,所述第一预定长度为一个突发长度的数 据的长度,所述第二预定长度为外部设备与DRAM控制器之间的总线宽度。
全文摘要
提供了一种DRAM控制器和DRAM控制方法。该DRAM控制器控制对DRAM的读写,并且包括存储单元,用于存储包含响应于先前的部分写请求而写入DRAM的数据的第一预定长度的数据、以及所述第一预定长度的数据在DRAM中的存储地址;以及控制单元,用于响应于所接收的读请求而判断在所述存储地址中是否存在与该读请求中的读地址相同的地址,并且当在所述存储地址中存在与该读地址相同的地址时,从存储单元中读取与该读地址相对应的数据以便输出。通过在每次执行部分写请求时都将所获得的合并后的数据存储在存储单元中,可以减少由于随后的读请求或部分写请求而从DRAM读取数据的次数,补偿由于响应于部分写请求执行读-修改-写操作而导致的DRAM控制器的性能下降。
文档编号G06F12/02GK101876944SQ20091022494
公开日2010年11月3日 申请日期2009年11月26日 优先权日2009年11月26日
发明者丁杰 申请人:威盛电子股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1