CN101520749A - 管理存储器的方法 - Google Patents
管理存储器的方法 Download PDFInfo
- Publication number
- CN101520749A CN101520749A CN200810082311A CN200810082311A CN101520749A CN 101520749 A CN101520749 A CN 101520749A CN 200810082311 A CN200810082311 A CN 200810082311A CN 200810082311 A CN200810082311 A CN 200810082311A CN 101520749 A CN101520749 A CN 101520749A
- Authority
- CN
- China
- Prior art keywords
- access request
- request
- thesaurus
- conflict
- pending
- 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
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种管理内存的方法,主要利用分割请求来增加存储库的变异性,再辅以重新排序与优先权的仲裁机制,大幅减少存储库冲突与写入至读取转换冲突产生的机率,进而提高内存的使用率。
Description
技术领域
本发明有关于内存(memory),尤有关于一种可提高使用效率的管理内存方法。
背景技术
内存控制器(memory controller)是所有系统单芯片(system on chip,SOC)计划中掌管数据存取及指令读取的重要环节,故提高内存的使用率便非常重要。
目前,同步动态随机存取内存(synchronous dynamic random accessmemory,SDRAM)、双倍数据传输率(double data rate,DDR)-DRAM、DDR2-DRAM、DDR3-DRAM等内存都具有多个存储库(memory bank)的架构,每一存储库又再被切割为列(row)与行(column)。基于此架构,内存先天上的某些限制会导致使用率下降。第一,连续对同一个存储库的不同列(row)(或页(page))的存取请求时会产生存储库冲突(bank conflict),而全部的存储库冲突时间是「致动至读取」等待时间(latency)tRCD加上「读取至预充电(precharge)」等待时间tRPD加上「预充电至致动(activate)」等待时间tRP的总和,或是「致动至致动命令时间」tRC,以时序限制(timing constraint)较长者为主。然而,若是对不同存储库的连续存取请求则不会产生存储库冲突,也就不需经历上述漫长的tRC等待时间。
第1图显示对同一存储库,连续执行二次存取请求的示意图。在此,为简化说明,假设内存100只包含二个存储库,即存储库B0与存储库B1,同时,假设内存控制器(图未示)对存储库B0的第2页至第1页执行完第M个存取请求(假设是读取请求),接着,将执行的是第N个读取请求,其起始地址是存储库B0的第1页。此时,对同一个存储库的连续存取请求会产生存储库冲突,因为存储库冲突产生,内存控制器必须先执行预充电以关闭存储库B0,再将存储库B0致动以打开第1页,最后,才对存储库B0执行读取指令以完成第N个读取请求。
第二个导致内存使用率下降的限制是写入至读取转换冲突(write to readturn-around conflict),这是因为对数据总线(data bus)而言,写入与读取二个动作是完全不同的二个方向,因此,若要执行连续二个不同型态(写入或读取)的存取请求便需要时间来等待数据总线反向(reverse)。另外,诸如更新(refresh)、指令冲突等因素也会导致内存使用率会下降,由于不是本说明书讨论的主题,在此不多做叙述。附带一提的是存储库冲突时间远多于写入至读取转换冲突时间,因此如何减少存储库冲突是当务之急。
有鉴于内存使用率的重要性,并针对多媒体影音与通信产品的实时性(real-time)及大量性数据传输的特性,本发明提出一种内存管理方法,可大幅提高内存的使用率,并进而满足多媒体影音与通信产品的需求。
发明内容
有鉴于上述问题,本发明之目的之一是提供一种管理内存的方法,利用分割请求(split request)来增加存储库的变异性,或另辅以其它配合的机制,以减少存储库冲突产生的机率与提高内存的使用率。为达成上述目的,本发明管理内存的方法包含以下步骤:判断所有待执行存取请求是否会和前一个已执行的存取请求产生存储库冲突;当这些待执行存取请求都会和目前执行的存取请求产生存储库冲突时,选取其中的一个具有一预设数据长度的待执行存取请求以分割为至少二个子请求,其中,这些子请求中至少有二个的起始存储库不相同;执行这些子请求,其中,在执行完每一个这些子请求之后与执行后续的那些子请求之前,皆从这些待执行存取请求中,选取至少1个起始存储库为闲置的待执行存取请求来执行。
本发明的特色是利用分割请求来增加存储库的多变性,配合重新排序的仲裁机制(arbitration mechanism),以减少存储库冲突与写入至读取转换冲突产生的机率,进而提高内存的使用率,更透过优先权的仲裁机制,以满足多媒体影音与通信产品的实时性与高质量需求。
兹配合下列图示、实施例的详细说明及权利要求,将上述及本发明的其它目的与优点详述于后。
附图说明
第1图显示对同一存储库,连续执行二次存取请求的示意图。
第2A图~第2C图根据本发明一实施例,显示有存储库冲突产生时实施分割请求的示意图。
第3图根据本发明,显示有三个信道的存取请求队列的内存控制器的架构示意图。
第4图根据本发明,显示内存中的每一页数据均折成五段。
第5图是本发明管理内存的方法的流程图。
图号说明:
100、360 内存
300 内存控制器
310 指令产生器
320 仲裁器
330 内存映至器
Q0、Q1、Q2 存取请求队列
R0、R1、R2 回应缓冲器
Ch0、Ch1、Ch2 通道
B0、B1、B2 存储库
M、N 存取请求
M0、M1 子请求
具体实施方式
为提升内存的使用效率,首先要避免存储库冲突的产生以减少漫长的tRC等待时间,本发明主要利用分割请求来增加存储库的多变性,辅以其它配合的机制,进而减少存储库冲突产生的机率与提高内存的使用率。
第2A图~第2C图根据本发明一实施例,显示有存储库冲突产生时实施分割请求的示意图。因为第1图中连续执行第M个存取请求(假设是读取请求)与第N个读取请求会在存储库B0产生存储库冲突,请参考第2A图~第2C图,本实施例先将第M个读取请求分割为二个子读取请求,即M0与M1子读取请求,原先第M个读取请求的起始地址是存储库B0的第2页,结束地址是存储库B0的第1页,分割后,M0子读取请求的起始地址仍是存储库B0的第2页,结束地址变成存储库B1的第2页,而M1子读取请求的起始地址是存储库B1的第2页,结束地址是存储库B0的第1页。在顺序上,内存控制器先执行第M0子读取请求(如第2A图),再执行第N个读取请求(如第2B图),最后才执行第M1子读取请求(如第2C图)。因为第N个读取请求的起始地址是存储库B0的第1页,避开了M0子读取请求的结束地址(存储库B1的第2页),而第N个读取请求的结束地址是存储库B0的第1页,避开了M1子读取请求的起始地址(存储库B1的第2页),如此,即避免了一次存储库冲突的产生。
请注意,实施分割请求的前提是存取数据区段的长度要够长,也就是起始地址与结束地址之间要跨越至少二个不同的存储库,否则,分割请求是无意义的。就上述实施例而言,其存取数据区段是从存储库B0跨越至存储库B1,再从存储库B1跨回存储库B0,故符合可分割请求的条件。实务上,一个内存大约包含4~8个存储库,而且,在实施分割请求之后的子请求数目大于或等于2,因此大大增加了每一个存取请求的起始存储库与结束存储库的变异性,进而减少存储库冲突发生的机率。
第3图根据本发明,显示有三个信道的存取请求队列(queue)的内存控制器的架构示意图。
参考第3图,内存控制器300包含指令产生器(command generator)310、仲裁器(arbiter)320、内存映至器(memory mapper)330、三个通道Ch0、Ch1、Ch2的存取请求队列Q0、Q1、Q2以及三个通道Ch0、Ch1、Ch2的回应缓冲器R0、R1、R2。内存映至器330将要存取的内存地址转换或译码为存储库、行(column)与列(row)的型式,而内存控制器300服务(serve)并控制了三个存取请求队列Q0、Q1、Q2中的存取请求,仲裁器320依据其内建的仲裁机制,从要求服务的所有存取请求(pending request)中选择其中之一来服务,然后,指令产生器310产生相对应的指令来存取内存360。
在提升内存的使用效率方面,本发明除了利用上述的分割请求来增加存储库的多变性之外,本发明在内存控制器300中的仲裁器320内建一重新排序(re-ordering)的仲裁机制,也就是说仲裁器320可以主导所有存取请求的执行顺序,比如,从每一信道队列的第一顺位存取请求中,选择其中的一个存取请求,其起始存储库不会和上一个已执行的存取请求产生存储库冲突;或者,从每一信道队列的第一顺位存取请求中,选择其中的一个存取请求,其存取的型态(写入或读取)和上一个已执行的存取请求相同,以避免产生写入至读取转换冲突。因此,重新排序的仲裁机制大幅减少了存储库冲突与写入至读取转换冲突的机率,进而提升内存的使用效率。
值得注意的是,传统内存控制器包含命令队列会把所有信道队列的存取请求先收进来,再依据其内建的仲裁机制去逐一执行存取请求,这样做的风险是,很可能把每一信道队列原有的执行顺序弄乱,造成误动作。相反地,本发明的内存控制器300中并未使用传统内存控制器常用的命令队列(command queue),除了减少硬件成本,每一信道队列中的存取请求,在未被服务或执行前都必须排队等待,更确保了每一信道队列的存取请求的执行顺序。如第3图所示,假设上一个已执行存取请求的结束存储库是B0,并假设目前在每一信道队列的存取请求的格式如下:存取类型(目标存储库->结束存储库),例如:排在队列Q0第一顺位的存取请求为R(B0->B1),因此,其存取类型为读取请求、起始存储库为B0、结束存储库为B1。仲裁器320首先比较三个队列中排在第一顺位的存取请求的优先权等级(priority level)高低(优先权的仲裁机制稍后说明),优先权等级较高的存取请求优先服务,若优先权等级相同,再根据重新排序的仲裁机制,选择不会和存储库B0产生存储库冲突的存取请求,以第3图的例子而言,因为其它通道的存取请求的起始存储库皆为B0,只能选择队列Q1的存取请求R(B2->B1)(起始存储库为B2)来执行,执行完该存取请求R(B2->B1)之后,因为存储库B1为致动状态,而存储库B0为闲置(idle)状态,此时,仲裁器320即可挑选另二个队列Q0、Q2的存取请求R(B0->B1)或W(B0->B2)来执行,二者都不会和结束存储库B1产生存储库冲突。如果三个队列中排在第一顺位的存取请求都会和上一个已执行存取请求产生存储库冲突,此时,就必须从上述三个存取请求中,选择一个起始地址与结束地址之间至少要跨越二个不同的存储库的存取请求来实施上述的分割请求。执行分割请求之后,被分割后的多个子请求的起始存储库与结束存储库的变异性变多,有助于仲裁器320将该多个子请求与后续的存取请求重新排序,以避免存储库冲突,并尽可能让同一型态的型态(写入或读取)的存取请求连续执行,以避免写入至读取转换冲突。
第4图根据本发明,显示一内存中的每一页数据均折成五段。
除了利用分割请求来增加存储库的多变性之外,本发明更采用一种区块模式(block mode)来将图像数据、一串指令或一般数据写入内存,以第4图为例,把每一页数据折成五段写入内存,使得往后存取内存时,会有很高的机率可以跨越多个存储库,以便于往后实施分割请求。
此外,在多媒体影音与通信产品的应用上,为满足频宽大、内存使用效率高的要求,以及,在播放时不能让使用者感觉有断格的情况出现,因此,本发明先赋于每一存取请求一个优先权等级,并在内存控制器300中的仲裁器320内建一具有优先权的仲裁机制,当有多个存取请求要求服务时,仲裁器320即根据每一存取请求的优先权等级高低(图未示),先执行有实时性(realtime)的请求(高优先权),然后,再完成非实时性的请求(低优先权),以达成多媒体影音与通信产品的实时性需求。为了避免优先权等级较低的存取请求一直在等待,在一段预设时间内,若一特定存取请求等待太久时,该存取请求的优先权等级将自动被提升,使该存取请求能马上被服务。并且,采用分割请求的方式也可达成将实时性需求高的存取请求先给一些数据,便可再服务下一个实时性需求高的存取请求,如此可解决仲裁器320内建的优先权的仲裁机制可能被优先权等级较高者独占频宽的问题。最后,也能将数据较少的存取请求塞(insert)在一个优先权等级较高、数据较多的存取请求之后,藉以提升数据较少且等级较低的存取请求之优先权等级。
第5图是本发明管理内存的方法的流程图。以下详述本发明管理内存的方法。
步骤S501:根据所有信道队列中第一顺位的待执行存取请求的优先优先权等级高低,优先执行高优先权的存取请求。
步骤S503:判断待执行存取请求中是否都会和目前已执行的存取请求产生存储库冲突?若是,跳到步骤S505,若否,跳到步骤S507。
步骤S505:实施分割请求。选取其中1个具有一预设数据长度的待执行存取请求以分割为至少二个子请求,其中,上述子请求中至少有二个子请求的起始存储库不相同,以增加子请求的起始存储库与结束存储库的变异性。
步骤S507:重新排序。若前一步骤有实施分割请求,则将上述子请求与待执行存取请求重新排序,在本发明的一个实施例中采用交错执行的方式,也就是在执行完每一个子请求之后与执行后续的子请求之前,皆从待执行存取请求中,选取至少1个起始存储库为闲置的待执行存取请求来执行。若没有实施分割请求,则只需将待执行存取请求重新排序。重新排序时,将选择起始存储库为闲置状态的子请求或待执行存取请求来执行,以避免产生存储库冲突,并且,让同一型态(写入或读取)的存取请求连续执行,以避免写入至读取转换冲突。
步骤S509:其间,若有高优先权的待执行存取请求要求服务时,即回到步骤S501,否则,跳到步骤S503。
在此请注意,上述重新排序的方式可依据各种实际状况来加以调整,但可增加数据变异性以及避免内存冲突的实施方法皆属于本发明的范围。
以上虽以实施例说明本发明,但并不因此限定本发明的范围,只要不脱离本发明的要旨,本领域技术人员可进行各种变形或变更。
Claims (12)
1.一种管理内存的方法,包含下列步骤:
判断所有待执行存取请求是否会和前一个已执行的存取请求产生存储库冲突;
当所述待执行存取请求都会和目前执行的存取请求产生存储库冲突时,选取其中一个具有一预设数据长度的待执行存取请求以分割为至少二个子请求,其中,该些子请求中至少有二个的起始存储库不相同;以及
执行该些子请求,其中,在执行完每一个该些子请求之后与执行后续的该些子请求之前,皆从所述待执行存取请求中,选取至少一个起始存储库为闲置的待执行存取请求来执行。
2.如权利要求1所述的方法,其中在该判断步骤之前还包含:
根据所有待执行存取请求的优先权高低,执行其中该些具有高优先权的待执行存取请求。
3.如权利要求2所述的方法,其中,在该判断步骤之前,及该执行其中该些具有高优先权的待执行存取请求步骤之后,还包含:
自动提升该些已经等待一段预设时间的待执行存取请求的优先等级。
4.如权利要求1所述的方法,其中,在该判断步骤之后,以及该分割步骤之前,还包含:
当存在至少一个待执行存取请求的起始存储库是闲置时,从中选取其中一个待执行存取请求来执行。
5.如权利要求4所述的方法,其中每一个选取存取请求的动作更依据上一个已执行存取请求的型态。
6.如权利要求1所述的方法,其中,该分割步骤中的该预设数据长度是至少横跨二个不同的存储库。
7.如权利要求1所述的方法,其中该待执行存取请求为所有信道队列中第一顺位的待执行存取请求。
8.一种管理内存的方法,其中每一存取请求皆包含一起始地址与一结束地址,该方法包含下列步骤:
依序判断复数个存取请求是否会和一已执行存取请求产生冲突,若无冲突则依序执行该些存取请求;
当该些存取请求皆与该已执行存取请求产生冲突时,选取该些存取请求中至少一个并将其分割为至少二个子请求,其中,该些子请求中至少有二个具有不同的起始地址;以及
执行该些子请求,其中,在执行完每一个该些子请求之后,从该些存取请求与该些子请求中,选取至少一个来执行。
9.如权利要求8所述的方法,其中若该存取请求的起始地址与该已执行存取请求的结束地址皆位于同一存储库,则产生冲突。
10.如权利要求8所述的方法,另包括:
依据所有存取请求的优先权高低,依序执行该些存取请求。
11.如权利要求8所述的方法,另包括:
采用一区块模式(block mode)来数据写入内存。
12.如权利要求8所述的方法,另包括:
提升已经等待一段预设时间的该些存取请求的优先等级。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200810082311A CN101520749B (zh) | 2008-02-29 | 2008-02-29 | 管理存储器的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200810082311A CN101520749B (zh) | 2008-02-29 | 2008-02-29 | 管理存储器的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101520749A true CN101520749A (zh) | 2009-09-02 |
CN101520749B CN101520749B (zh) | 2012-08-29 |
Family
ID=41081350
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200810082311A Expired - Fee Related CN101520749B (zh) | 2008-02-29 | 2008-02-29 | 管理存储器的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101520749B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105573933A (zh) * | 2014-10-17 | 2016-05-11 | 瑞昱半导体股份有限公司 | 处理器及存取存储器的方法 |
CN107154012A (zh) * | 2016-03-04 | 2017-09-12 | 三星电子株式会社 | 图形处理器及其操作方法 |
CN110324550A (zh) * | 2019-07-17 | 2019-10-11 | 陕西千山航空电子有限责任公司 | 一种视频记录器 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6393534B1 (en) * | 1999-09-27 | 2002-05-21 | Ati International Srl | Scheduler for avoiding bank conflicts in issuing concurrent requests to main memory |
US6516393B1 (en) * | 2000-09-29 | 2003-02-04 | International Business Machines Corporation | Dynamic serialization of memory access in a multi-processor system |
US7007138B2 (en) * | 2002-04-17 | 2006-02-28 | Matsushita Electric Industiral Co., Ltd. | Apparatus, method, and computer program for resource request arbitration |
US7149857B2 (en) * | 2002-05-14 | 2006-12-12 | Micron Technology, Inc. | Out of order DRAM sequencer |
-
2008
- 2008-02-29 CN CN200810082311A patent/CN101520749B/zh not_active Expired - Fee Related
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105573933A (zh) * | 2014-10-17 | 2016-05-11 | 瑞昱半导体股份有限公司 | 处理器及存取存储器的方法 |
CN105573933B (zh) * | 2014-10-17 | 2018-10-09 | 瑞昱半导体股份有限公司 | 处理器及存取存储器的方法 |
CN107154012A (zh) * | 2016-03-04 | 2017-09-12 | 三星电子株式会社 | 图形处理器及其操作方法 |
CN110324550A (zh) * | 2019-07-17 | 2019-10-11 | 陕西千山航空电子有限责任公司 | 一种视频记录器 |
Also Published As
Publication number | Publication date |
---|---|
CN101520749B (zh) | 2012-08-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101788963B (zh) | Dram存储控制方法及装置 | |
CN104737144B (zh) | 存储器存取的动态优先级管理 | |
CN101609438B (zh) | 存储器系统、其访问控制方法和计算机程序 | |
CN106547492A (zh) | 一种nand闪存设备的操作指令调度方法及装置 | |
US7886117B2 (en) | Method of memory management | |
CN101740102B (zh) | 一种多通道闪存芯片阵列结构及其写入和读出方法 | |
KR100532640B1 (ko) | 로우 및 칼럼 커맨드를 동시에 제공하기 위한 방법 및시스템 | |
US9336164B2 (en) | Scheduling memory banks based on memory access patterns | |
CN103927268A (zh) | 一种存储器的访问方法及装置 | |
CN111506264B (zh) | 支持灵活分块存取的虚拟多通道sdram访问方法 | |
CN103761051A (zh) | 一种基于持续数据多输入输出流并发写入性能优化方法 | |
CN102750257B (zh) | 基于访问信息调度的片上多核共享存储控制器 | |
CN101095196A (zh) | 微线程存储器 | |
KR20150017526A (ko) | 메모리 명령 스케줄러 및 메모리 명령 스케줄링 방법 | |
CN103543954A (zh) | 一种数据存储管理方法和装置 | |
WO2016176807A1 (zh) | 一种dram刷新方法、装置和系统 | |
JP2002288037A (ja) | メモリ制御装置及び方法 | |
CN101520749B (zh) | 管理存储器的方法 | |
CN102541782A (zh) | Dram访问控制装置与控制方法 | |
US20060179183A1 (en) | Single burst completion of multiple writes at buffered DIMMs | |
CN101470678A (zh) | 基于突发乱序的存储器控制器、系统及其访存调度方法 | |
CN106919520B (zh) | 访存命令调度方法、装置和系统 | |
KR101785189B1 (ko) | 데이터 기입 방법 및 메모리 시스템 | |
US10365829B2 (en) | Memory transaction-level modeling method and system | |
CN101316240A (zh) | 一种数据读写的方法和装置 |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20120829 Termination date: 20170229 |
|
CF01 | Termination of patent right due to non-payment of annual fee |