管理存储器的方法

文档序号:6461341阅读:173来源:国知局
专利名称:管理存储器的方法
技术领域
本发明有关于内存(memory),尤有关于一种可提高使用效率的管理内存方法。
背景技术
内存控制器(memory controller)是所有系统单芯片(system on chip , SOC)
计划中掌管数据存取及指令读取的重要环节,故提高内存的使用率便非常重要。
目前,同步动态随才几存耳又内存(synchronous dynamic random access memory , SDRAM)、双倍数据传输率(double data, rate , DDR)-DRAM 、 DDR2-DRAM、 DDR3-DRAM等内存都具有多个存储库(memory bank)的架构, 每一存储库又再被切割为列(row)与'行(column)。基于此架构,内存先天上的 某些限制会导致使用率下降。第一,连续对同一个存储库的不同列(row)(或页 (page))的存取请求时会产生存储库冲突(baik conflict),而全部的存储库沖突 时间是「致动至读取」等待时间(latency)tRCD加上「读取至预充电(precharge) J 等待时间tIlPD加上「预充电至致动(activate)」等待时间tRP的总和,或是「致 动至致动命令时间」tRC,以时序限制(timing constraint)较长者为主。然而,若 是对不同存储库的连续存取请求则不会产生存储库冲突,也就不需经历上述 漫长的t等待时间。
第'1图显示对同一存储库,连续执行二次存取请求的示意图。在此,为 简化说明,假设内存100只包含二个存储库,即存储库B()与存^"库Bp同时, 假设内存控制器(图未示)对存储库Bo的第2页至第1页执行完第M个存取请 求(假设是读取请求),接着,将执行的是第N个读取请求,其起始地址是存 储库B(,的第1页。此时,对同一个存储库的连续存取请求会产生存储库冲突, 因为存储库冲突产生,内存控制器必须先执行预充电以关闭存储库B(,,再将 存储库B。致动以打开第1页,最后,才对存储库B()执行读取指令以完成第N 个读取请求。
4第二个导致内存使用率下降的限制是写入至读取转换沖突(write l0 read
tum-aro皿d conflict),这是因为对数据总线(data bus)而言,写入与读取二个动
作是完全不同的二个方向,因此,若要执行连续二个不同型态(写入或读取) 的存取请求便需要时间来等待数据总线反向(reverse)。另外,诸如更新
(refresh)、指令冲突等因素也会导致内存使用率会下降,由于不是本说明书讨 论的主题,在此不多做叙述。附带一提的是存储库冲突时间远多于写入至读 取转换冲突时间,因此如何减少存储库冲突是当务之急。
有鉴于内存使用率的重要性,并针对多媒体影音与通信产品的实时性 (re.a!-time)及大量性数据传输的特性,本发明提出 一种内存管理方法,可大幅 提高内存的使用率,并进而满足多媒体影音与通信产品的需求。

发明内容
有鉴于上述问题,本发明之目的之一是提供一种管理内存的方法,利用 分割请求(splitrcquest)来增加存储库的变异性,或另辅以其它配合的机制,以 减少存储库冲突产生的机率与提高内存的使用率。为达成上述目的,本发明
管理内存的方法包含以下步骤判断所有待执行存取请求是否会和前一个已 执行的存取请求产生存储库冲突;当这些待执行存取请求都会和目前执行的 存取请求产生存储库冲突时,选取其中的 一个具有一预设数据长度的待执行 存取请求以分割为至少二个子请求,其中,这些子请求中至少有二个的起始 存储库不相同;执行这些子请求,其中,在执行完每一个这些子请求之后与 执行后续的那些子请求之前,皆从这些待执行存取请求中,选取至少1个起 始存储库为闲置的待执行存取请求来执行。
本发明的特色是利用分割请求来增加存储库的多变性,配合重新排序的 仲裁机制(arbitration mechanism),以减少存储库冲哭与写入至读取转换冲哭产 生的机率,进而提高内存的使用率,更透过优先权的仲裁机制,以满足多媒 体影音与通信产品的实时性与高质量需求。
兹配合下列图示、实施例的详细说明及权利要求,将上述及本发明的其 它目的与优点详述于后。


第1图显示对同一存储库,连续执行二次存取请求的示意图。第2A图 第2C图根据本发明一实施例,显示有存储库冲突产生时实施 分割请求的示意图。
第3图根据本发明,显示有三个信道的存取请求队列的内存控制器的架 构示意图。
第4图根据本发明,显示内存中的每一页数据均折成五段。
图号说明
100、 360内存
300内存控制器
310指令产生器
320仲裁器
330内存映至器
Q。、 Qi、 Q2存取请求队列
R(1、 R,、 R2回应缓冲器
Ch()、 Ch。 Ch2通道
B(,、 B。 B2存储库
M、 N存取请求
M()、 子请求
具体实施例方式
为提升内存的使用效率,首先要避免存储库冲突的产生以减少漫长的tRC 等待时间,本发明主要利用分割请求来增加存储库的多变性,辅以其它配合 的机制,进而减少存储库沖突产生的机率与提高内存的使用率。
第2A图 第2C图根据本发明一实施例,显示有存储库冲突产生时实施 分割请求的示意图。因为第1图中连续执行第M个存取请求(假设是读取请 求)与第N个读取请求会在存储庠B。产生存储库沖突,请参考第2A图 第2C 图,本实施例先将第M个读取请求分割为二个子读取请求,即M。与M,子读 取请求,原先第M个读取请求的起始地址是存储库B()的第2页,结束地址 是存储库B(,的第1页,分割后,M(,子读取请求的起始地址仍是存储库B(,的 第2页,结束地址变成存储库B!的第2页,而M,子读取请求的起始地址是 存储库B,的第2页,结束地址是存储库B。的第1页。'在顺序上,内存控制器先执行第M。子读取请求(如第2A图),再执行第N个读取请求(如第2B图), 最后才执行第M,子读取请求(如第2C图)。因为第N个读取请求的起始地址 是存储库B(,的第1页,避开了 M。子读取请求的结束地址(存储库B,的第2 页),而第N个读取请求的结束地址是存储库B()的第1页,避开了 M,子读取 请求的起始地址(存储库B,的第2页),如此,即避免了一次存储库冲突的产 生。
请注意,实施分割请求的前提是存取数据区段的长度要够长,也就是起 始地址与结束地址之间要跨越至少二个不同的存储库,否则,分割请求是无 意义的。就上述实施例而言,其存取数据区段是从存储库B()跨越至存储库 Bp再从存储库B,跨回存储库B。,故符合可分割请求的条件。实务上, 一个 内存大约包含4 8个存储库,而且,在实施分割请求之后的子请求数目大于 或等于2,因此大大增加了每一个存取请求的起始存储库与结束存储库的变 异性,进而减少存储库冲突发生的机率。
第3图根据本发明,显示有三个信道的存取请求队列(queue)的内存控制 器的架构示意图。
参考第3图,内存控制器300包含指令产生器(command generatoi-)310、 仲裁器(arbher)320、内存映至器(memory mapper)330、三个通道Ch0、 Ch" Ch,—的存取请求队列QQ、 Q,、 Q2以及三个通道Ch。、 Ch,、 Ch2的回应緩冲器 R。、 R,、 R2。内存映至器330将要存取的内存地址转换或译码为存储库、行 (column)与列(row)的型式,而内存控制器300服务(serve)并控制了三个 存取请求队列Q()、 Q,、 Q2中的存取请求,仲裁器320依据其内建的仲裁机制, 从要求服务的所有存取请求(pending request)中选择其中之一来服务,然后, 指令产生器3]0产生相对应的指令来存取内存360。
在提升内存的使用效率方面,本发明除了利用上述的分割请求来增加存 储库的多变性之外,本发明在内存控制器300中的仲裁器320内建一重新排 序(re-ordei-ing)的仲裁机制,也就是说仲裁器320可以主导所有存取请求的执 行顺序,比如,从每一信道队列的第一顺位存取请求中,选择其中的一个存 取请求,其起始存储库不会和上一个已执行的存取请求产生存储库冲突;或 者,从每一信道队列的第一顺位存取请求中,选择其中的一个存取请求,其
存取的型态(写入或读取)和上一个已执行的存取请求相同,以避免产生写入至 读取转换冲突。因此,重新排序的仲裁机制大幅减少了存储库冲突与写入至读取转换冲突的机率,进而提升内存的使用效率。
值得注意的是,传统内存控制器包含命令队列会把所有信道队列的存取 请求先收进来,再依据其内建的仲裁机制去逐一执行存取请求,这样做的风 险是,很可能把每一信道队列原有的执行顺序弄乱,造成误动作。相反地,
本发明的内存控制器300中并未使用传统内存控制器常用的命令队列 (command queue),除了减少硬件成本,每一信道队列中的存取请求,在未被 服务或执行前都必须排队等待,更确保了每一信道队列的存取请求的执行顺 序。如第3图所示,假设上一个已执行存取请求的结束存储库是Bn,并假设 目前在每一信道队列的存取请求的格式如下存取类型(目标存储库->结束存 储库),例如排在队列Q()第一顺位的存取请求为R(B()》B,),因此,其存取 类型为读取请求、起始存储库为B。、结束存储库为B,。仲裁器320首先比较 三个队列中排在第一顺位的存取请求的优先权等级(priority level)高低(优先 权的仲裁机制稍后说明),优先权等级较高的存取请求优先服务,若优先权等 级相同、再根据重新排序的仲裁机制,选择不会和存储库B。产生存储库冲突 的存取请求,以第3图的例子而言,因为其它通道的存取请求的起始存储库 皆为B(),只能选择队列Q,的存取请求R(Br〉B,)(起始存储库为B。来执行, 执行完该存取请求R(B2》B,)之后,因为存储库B,为致动状态,而存储库B0 为闲置(idle)状态,此时,仲裁器320即可挑选另二个队列Q()、 Q2的存取请求 R(Bo-〉B,)或W(B。》B2)来执行,二者都不会和结束存储库B,产生存储库冲突。 如果三个队列中排在第一顺位的存取请求都会和上一个已执行存取请求产生 存储库冲突,此时,就必须从上述三个存取请求中,选择一个起始地址与结 束地址之间至少要跨越二个不同的存储库的存取请求来实施上述的分割请 求。执行分割请求之后,被分割后的多个子请求的起始存储库与结束存储库 的变异性变多,有助于仲裁器320将该多个子请求与后续的存取请求重新排 序,以避免存储库冲突,并尽可能让同一型态的型态(写入或读取)的存取请求 连续执行,以避免写入至读取转换冲突。
第4图根据本发明,显示一内存中的每一页数据均折成五段。 除了利用分割请求来增加存储库的多变性之外,本发明更采用一种区块 模式(blockmode)来将图像数据、 一 串指令或一般数据写入内存,以第4图为 例,把每一页数据折成五段写入内存,使得往后存取内存时,会有很高的机 率可以跨越多个存储库,以便于往后实施分割请求。
8此外,在多媒体影音与通信产品的应用上,为满足频宽大、内存使用效 率高的要求,以及,在播放时不能让使用者感觉有断格的情况出现,因此,
本发明先赋于每一存取请求一个优先权等级,并在内存控制器300中的仲裁 器320内建一具有优先权的仲裁机制,当有多个存取请求要求服务时,仲裁 器320即根据每一存取请求的优先权等级高低(图未示),先执行有实时性(real time)的请求(高优先权),然后,再完成非实时性的请求(低优先权),以达成多 媒体影音与通信产品的实时性需求。为了避免优先权等级较低的存取请求一
直在等待,在一段预设时间内,若一特定存取请求等待太久时,该存取请求 的优先权等级将自动被提升,使该存取请求能马上被服务。并且,采用分割 请求的方式也可达成将实时性需求高的存取请求先给一些数据,便可再服务 下一个实时性需求高的存取请求,如此可解决仲裁器320内建的优先权的仲 裁机制可能被优先权等级较高者独占频宽的问题。最后,也能将数据较少的 存取请求塞(insert)在一个优先权等级较高、数据较多的存取请求之后,藉以 提升数据较少且等级较低的存取请求之优先权等级。
.第5图是本发明管理内存的方法的流程图。以下详述本发明管理内存的 方法。
步骤S501:根据所有信道队列中第一顺位的待执行存取请求的优先优先 权等级高低,优先执行高优先权的存取请求。
步骤S503:判断待执行存取请求中是否都会和目前已执行的存取请求产 生存储库冲突?若是,跳到步骤S505,若否,跳到步骤S507。
步骤S505:实施分割请求。选取其中1个具有一预设数据长度的待执行 存取请求以分割为至少二个子请求,其中,上述子请求中至少有二个子请求 的起始存储库不相同,以增加子请求的起始存储库与结束存储库的变异性。
步骤S507:重新排序。若前一步骤有实施分割请求,则将上述子请求与 待执行存取请求重新排序,在本发明的一个实施例中采用交错执行的方式, 也就是在执行完每一个子请求之后与执行后续的子请求之前,皆从待执行存 取请求中,选取至少1个起始存储库为闲置的待执行存取请求来执行若没 有实施分割请求,则只需将待执行存取请求重新排序。重新排序时,将选择 起始存储库为闲置状态的子请求或待执行存取请求来执行,以避免产生存储 库冲突,并且,让同一型态(写入或读取)的存取请求连续执行,以避免写入至 读取转换沖突。步骤S509:其间,若有高优先权的待执行存取请求要求服务时,即回到 步骤S501,否则,跳到步骤S503。
在此请注意,上述重新排序的方式可依据各种实际状况来加以调整,但 可增加数据变异性以及避免内存冲突的实施方法皆属于本发明的范围。
以上虽以实施例说明本发明,但并不因此限定本发明的范围,只要不脱 离本发明的要旨,本领域技术人员可进行各种变形或变更。
权利要求
1. 一种管理内存的方法,包含下列步骤判断所有待执行存取请求是否会和前一个已执行的存取请求产生存储库冲突;当所述待执行存取请求都会和目前执行的存取请求产生存储库冲突时,选取其中一个具有一预设数据长度的待执行存取请求以分割为至少二个子请求,其中,该些子请求中至少有二个的起始存储库不相同;以及执行该些子请求,其中,在执行完每一个该些子请求之后与执行后续的该些子请求之前,皆从所述待执行存取请求中,选取至少一个起始存储库为闲置的待执行存取请求来执行。
2. 如权利要求l所述的方法,其中在该判断步骤之前还包含根据所有待执行存取请求的优先权高低,执行其中该些具有高优先权的待执行存取请求。
3. 如权利要求2所述的方法,其中,在该判断步骤之前,及该执行其中该些具有高优先权的待执行存取请求步骤之后,还包含自动提升该些已经等待一段预设时间的待执行存取请求的优先等级。
4. 如权利要求1所述的方法,其中,在该判断步骤之后,以及该分割步骤之前,还包含当存在至少一个待执行存取请求的起始存储库是闲置时,从中选取其中一个待执行存取请求来执行。
5. 如权利要求4所述的方法,其中每一个选取存取请求的动作更依据上一个已执行存取请求的型态。
6. 如权利要求1所述的方法,其中,该分割步骤中的该预设数据长度是至少横跨二个不同的存储库。
7. 如权利要求1所述的方法,其中该待执行存取请求为所有信道队列中第 一顺位的待执行存取请求。
8. —种管理内存的方法,其中每一存取请求皆包含一起始地址与一结束地址,该方法包含下列步骤依序判断复数个存取请求是否会和一 已执行存取请求产生冲突,若无冲当该些存取请求皆与该已执行存取请求产生冲突时,选取该些存取请求中至少一个并将其分割为至少二个子请求,其中,该些子请求中至少有二个具有不同的起始地址;以及执行该些子请求,其中,在执行完每一个该些子请求之后,从该些存取请求与该些子请求中,选取至少一个来执行。
9.如权利要求8所述的方法,其中若该存取请求的起始地址与该已执行存取请求的结束地址皆位于同 一存储库,则产生冲突。
10.如权利要求8所述的方法,另包括依据所有存取请求的优先权高低,依序执行该些存取请求。
11. 如权利要求8所述的方法,另包括采用 一区块模式(block mode)来数据写入内存。
12. 如权利要求8所述的方法,另包括提升已经等待一段预设时间的该些存取请求的优先等级。
全文摘要
本发明提供一种管理内存的方法,主要利用分割请求来增加存储库的变异性,再辅以重新排序与优先权的仲裁机制,大幅减少存储库冲突与写入至读取转换冲突产生的机率,进而提高内存的使用率。
文档编号G06F12/02GK101520749SQ20081008231
公开日2009年9月2日 申请日期2008年2月29日 优先权日2008年2月29日
发明者施杰文 申请人:瑞昱半导体股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1