CN102521049B - 多核间内存调度方法 - Google Patents
多核间内存调度方法 Download PDFInfo
- Publication number
- CN102521049B CN102521049B CN 201110369420 CN201110369420A CN102521049B CN 102521049 B CN102521049 B CN 102521049B CN 201110369420 CN201110369420 CN 201110369420 CN 201110369420 A CN201110369420 A CN 201110369420A CN 102521049 B CN102521049 B CN 102521049B
- Authority
- CN
- China
- Prior art keywords
- memory access
- access request
- memory
- cache
- request
- 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.)
- Active
Links
Images
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明涉及计算机及电子信息技术领域,公开了一种多核间内存调度方法,包括以下步骤:S1:获取来自多核的内存访问请求,在所述内存访问请求上贴上标签,然后将贴上标签的所述内存访问请求放置在缓冲区队列中;S2:从已经就绪的所述缓冲区队列中按照公平调度方法选择一个内存访问请求予以执行;S3:从bank缓冲区中选择等待时间最长的内存访问请求,将其提交至channel缓冲区;S4:从channel缓冲区中选择步骤S3中从bank缓冲区选中的请求的数据并提交至高速缓冲存储器cache中,并从cache中换出最长时间未被访问的行,并通知CPU获取所述数据。本发明能够解决多核间内存公平调度问题。
Description
技术领域
本发明涉及计算机及电子信息技术领域,特别涉及一种多核间内存调度方法。
背景技术
近年来,计算机的发展已进入多核时代,CPU的多核技术得到了大力发展,在共享内存的多核体系结构中,多个处理器需要访问同一部分系统内存,因此内存调度的重要性日益明显,逐渐成为国内外的研究热点。
在当前的多核体系结构中,仍然采用共享内存的形式,在计算机程序执行过程中,需要访问内存,此时即会向内存控制器发出内存访问请求,内存控制器接收访问请求,通过控制内存内部的row、rank、bank、channel等缓冲区实现内存调度。在共享内存的计算机系统中,内存需要为多核处理器提供公平的服务。人们也希望通过设计较好的内存体系结构来解决处理器和内存之间的发展速率差,因此出现了各种内存调度方法,但是总体上,内存调度方法均主要立足于提高系统的吞吐率。在很多情况下,调度方法需要为应用程序提供较高的吞吐率,但是还需要保证提供QoS(Quality of Service,服务质量),多核内存调度领域中,同样引人了公平性思想,但是方法大都基于请求来考虑。
发明内容
(一)要解决的技术问题
本发明所要解决的技术问题是:如何解决多核间内存公平调度问题。
(二)技术方案
为解决上述技术问题,本发明提供了一种多核间内存调度方法,包括以下步骤:
S1:获取来自多核的内存访问请求,在所述内存访问请求上贴上标签,然后将贴上标签的所述内存访问请求放置在缓冲区队列中;
S2:从已经就绪的所述缓冲区队列中按照公平调度方法选择一个内存访问请求予以执行;
S3:从bank缓冲区中选择最长等待时间的内存访问请求,将其提交至channel缓冲区;
S4:从channel缓冲区中选择步骤S3中从bank缓冲区选中的请求的数据提交至高速缓冲存储器cache中,并从cache中换出最长时间未被访问的行,并通知CPU获取所述数据。
优选地,所述步骤S1中,所述标签包括:进入时刻、进程ID、CPU标签和读标记。
优选地,所述步骤S2具体包括:
S21:若存在优先级不等的内存访问请求,则选择优先级最高的请求予以执行,并转至步骤S24,否则继续执行步骤S22;
S22:计算各个内存访问请求的公平指标,若存在公平指标超出预设的公平容忍区间的内存访问请求则选中并执行,并转至步骤S24,否则继续执行步骤S23;
S23:从所述缓冲区队列的访问点之后,找到数据已经在高速缓冲存储器cache的行缓冲区的内存访问请求并执行;
S24:若cache没有空闲,则选择最长时间未被访问的行进行替换;访问完毕后将内存访问请求提交至bank缓冲区。
优选地,步骤S22中所述公平指标为内存访问请求的等待时间和访问时间比值。
优选地,S23若不存在数据已经在高速缓冲存储器cache的行缓冲区的内存访问请求,则按照就绪队列中先来先服务FCFS的策略选择一个内存访问请求予以执行。
优选地,步骤S1之前包括以下步骤:
A.CPU发出读取数据请求,通过内存管理单元计算得到内存访问请求的物理地址;
B.判断所述物理地址对应的数据是否被cache命中,若命中则结束,否则继续执行步骤S1。
(三)有益效果
本发明能够为多核处理器提供公平的内存服务,在内存访问请求较少时,按照先来先服务方法运行,整个系统延迟均较小,当访问请求较多时,系统通过公平策略均衡各个请求的等待时间,防止个别请求出现过长的等待,同时还兼顾了优先级调度。
附图说明
图1是本发明的方法流程图。
具体实施方式
下面对于本发明所提出的一种多核间内存调度方法,结合附图和实施例详细说明。
公知地,内存的体系结构主体上包括内存row、bank、rank、channel,一个内存访问请求需要从row至channel依次访问。
调度方法主要工作在于综合调度,然后将要执行的内存访问请求交由bank调度器对应执行,bank缓冲区执行完毕后由channel缓冲区完成最终的数据传输,其中,cache指高速缓冲存储器。
值得说明的是,本发明的设计仍基于传统的DDR2控制器,只是在请求进入内存控制器时,增加了一个贴标签操作,将请求的入队时间予以记录下来。作为公平调度,最为关心各个请求的平均等待时间,因此在进入队列时被添加的时序标签是调度方法能够完成公平调度的基础,同样,期待在保证公平性的条件下,内存的吞吐率尽量高。
如图1所示,本发明实施例的对多核间内存调度的详细流程如下:
A.CPU发出读取数据请求,通过MMU(内存管理单元)计算得到访问请求的物理地址;
B.判断物理地址对应的数据是否被cache命中,若命中则直接返回;
C.获取来自多核的内存访问请求,在所述内存访问请求上贴上进入时刻、进程ID、CPU标签和读标记标签,然后将贴上标签的所述内存访问请求放置在缓冲区队列中;
D.若存在优先级不等的请求,从已经就绪的缓冲区队列选择优先级最高的请求予以执行,转至步骤G;否则继续执行步骤E;
E.计算各个请求的公平指标(请求的等待时间和访问时间的比值),若存在公平指标超出设定的公平容忍区间的请求则选中予以执行,转至步骤G,否则继续执行步骤F;
F.从队列访问点之后(若抵达队尾则转至队头),选中一个数据已经存在于行缓冲区中的访问请求,更新队列访问点;
G.若cache没有空闲,则选中最长时间未被访问的行予以替换;访问完毕后将请求提交至bank缓冲区;
H.从bank缓冲区中选择最长等待时间的请求,将其提交至channel缓冲区;
I.从channel缓冲区中选择步骤H中从bank缓冲区选中请求的数据提交至cache中,并从cache中换出最长时间未被访问的行,并通知CPU获取所述数据,若存在其它未执行的访问请求则转至步骤C。
从上面的实施例中给出了一个访问请求的工作流程,需要注意的是每步针对的访问请求并不一定是同一个,并且在综合调度时会考虑bank缓冲区和channel缓冲区的承受能力,因此在bank缓冲区和channel缓冲区并没有对缓冲区队列做出规范,而是默认不会溢出。
对于调度方法,若行缓冲区较大,则还存在较为关键的一项决策,即替换问题,需要选择一行用于新的内存请求换入。从以前的研究情况来看,LRU(最长时间未被使用算法,或称最近最少使用算法)在换出方面具有较好的性能,因此在本发明的方法中,选取替换最长时间未被使用的行。
实际上,对于内存的读写请求均可以按照上述流程,只是写回数据请求在缓冲区中会标记为写请求,建立传送通道后,将会把cache中的数据写回至行缓冲区,然后再由bank调度器将行缓冲区中的数据写回至内存的对应地址中。
在本实施例中,对于虚拟内存并没有提及,实际上,虚拟内存的访问需要在步骤A产生缺页中断,然后操作系统会将该页读入到内存中,之后流程和实施例中描述一致。
以上实施方式仅用于说明本发明,而并非对本发明的限制,有关技术领域的普通技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明的范畴,本发明的专利保护范围应由权利要求限定。
Claims (4)
1.一种多核间内存调度方法,其特征在于,包括以下步骤:
S1:获取来自多核的内存访问请求,在所述内存访问请求上贴上标签,然后将贴上标签的所述内存访问请求放置在缓冲区队列中,其中,所述标签包括:进入时刻、进程ID、CPU标签和读标记;
S2:若存在优先级不等的内存访问请求,则选择优先级最高的请求予以执行,并转至步骤S5,否则继续执行步骤S3;
S3:计算各个内存访问请求的公平指标,若存在公平指标超出预设的公平容忍区间的内存访问请求则选中并执行,并转至步骤S5,否则继续执行步骤S4;
S4:从所述缓冲区队列的访问点之后,找到数据已经在高速缓冲存储器cache的行缓冲区的内存访问请求并执行;
S5:若cache没有空闲,则选择最长时间未被访问的行进行替换;访问完毕后将内存访问请求提交至bank缓冲区;
S6:从bank缓冲区中选择最长等待时间的内存访问请求,将其提交至channel缓冲区;
S7:从channel缓冲区中选择步骤S6中从bank缓冲区选中的请求的数据提交至高速缓冲存储器cache中,并从cache中换出最长时间未被访问的行,并通知CPU获取所述数据。
2.如权利要求1所述的多核间内存调度方法,其特征在于,步骤S3中所述公平指标为内存访问请求的等待时间和访问时间比值。
3.如权利要求1所述的多核间内存调度方法,其特征在于,S4若不存在数据已经在cache的行缓冲区的内存访问请求,则按照就绪队列中先来先服务FCFS的策略选择一个内存访问请求予以执行。
4.如权利要求1~3中任一项所述的多核间内存调度方法,其特征在于,步骤S1之前包括以下步骤:
A.CPU发出读取数据请求,通过内存管理单元计算得到内存访问请求的物理地址;
B.判断所述物理地址对应的数据是否被cache命中,若命中则结束,否则继续执行步骤S1。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201110369420 CN102521049B (zh) | 2011-11-18 | 2011-11-18 | 多核间内存调度方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201110369420 CN102521049B (zh) | 2011-11-18 | 2011-11-18 | 多核间内存调度方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102521049A CN102521049A (zh) | 2012-06-27 |
CN102521049B true CN102521049B (zh) | 2013-07-10 |
Family
ID=46291984
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201110369420 Active CN102521049B (zh) | 2011-11-18 | 2011-11-18 | 多核间内存调度方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102521049B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016065544A1 (zh) * | 2014-10-29 | 2016-05-06 | 华为技术有限公司 | 访存的方法、内存控制器和处理器核 |
WO2017049590A1 (en) * | 2015-09-25 | 2017-03-30 | Intel Corporation | Systems and methods for input/output computing resource control |
US10445271B2 (en) * | 2016-01-04 | 2019-10-15 | Intel Corporation | Multi-core communication acceleration using hardware queue device |
CN105975341A (zh) * | 2016-04-12 | 2016-09-28 | 苏州万特锐仪器有限公司 | 面向多核处理器的内存管理系统 |
CN105847437B (zh) * | 2016-05-26 | 2022-12-27 | 北京科技大学 | 一种数据传输方法 |
CN106484531B (zh) * | 2016-09-18 | 2019-12-24 | 上海顺久电子科技有限公司 | 内存访问仲裁方法、电路及装置 |
CN109308190B (zh) * | 2018-07-09 | 2023-03-14 | 北京中科睿芯科技集团有限公司 | 基于3d堆栈内存架构的共享行缓冲系统及共享行缓冲器 |
CN112631757B (zh) * | 2020-12-31 | 2021-07-13 | 成都卓讯云网科技有限公司 | 一种ddr4多用户访问的调度方法和设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1361887A (zh) * | 1999-05-18 | 2002-07-31 | 英特尔公司 | 具有保护的最近最少使用置换方法 |
CN1409209A (zh) * | 2001-09-24 | 2003-04-09 | 深圳市中兴通讯股份有限公司上海第二研究所 | 一种多任务实时操作系统的实现方法 |
US7490117B2 (en) * | 2003-12-31 | 2009-02-10 | Intel Corporation | Dynamic performance monitoring-based approach to memory management |
-
2011
- 2011-11-18 CN CN 201110369420 patent/CN102521049B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1361887A (zh) * | 1999-05-18 | 2002-07-31 | 英特尔公司 | 具有保护的最近最少使用置换方法 |
CN1409209A (zh) * | 2001-09-24 | 2003-04-09 | 深圳市中兴通讯股份有限公司上海第二研究所 | 一种多任务实时操作系统的实现方法 |
US7490117B2 (en) * | 2003-12-31 | 2009-02-10 | Intel Corporation | Dynamic performance monitoring-based approach to memory management |
Non-Patent Citations (3)
Title |
---|
多核环境下的DRAM内存分类调度算法;赵鹏;《中国科技论文在线》;20110131;第6卷(第1期) * |
多核环境下的DRAM内存分类调度算法;赵鹏;《中国科技论文在线》;20110131;第6卷(第1期);第7页左栏至第8页左栏,图1-2 * |
赵鹏.多核环境下的DRAM内存分类调度算法.《中国科技论文在线》.2011,第6卷(第1期), |
Also Published As
Publication number | Publication date |
---|---|
CN102521049A (zh) | 2012-06-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102521049B (zh) | 多核间内存调度方法 | |
Jeong et al. | A QoS-aware memory controller for dynamically balancing GPU and CPU bandwidth use in an MPSoC | |
US9514051B2 (en) | Cache memory with unified tag and sliced data | |
Stuecheli et al. | The virtual write queue: Coordinating DRAM and last-level cache policies | |
CN102289390B (zh) | 系统管理程序调度器 | |
JP5406149B2 (ja) | イベント処理のためのターボ性能を向上させる方法および装置 | |
CN103927277B (zh) | Cpu和gpu共享片上高速缓存的方法及装置 | |
US9032156B2 (en) | Memory access monitor | |
WO2015070789A1 (en) | Task scheduling method and related non-transitory computer readable medium for dispatching task in multi-core processor system based at least partly on distribution of tasks sharing same data and/or accessing same memory address (es) | |
TW201734758A (zh) | 使用硬體佇列裝置的多核心通訊加速 | |
Mittal et al. | A survey of techniques for architecting DRAM caches | |
US9213640B2 (en) | Promoting transactions hitting critical beat of cache line load requests | |
CN104750460B (zh) | 超线程微处理器中经线程优先级提供服务质量 | |
US20110023033A1 (en) | Scheduling of threads by batch scheduling | |
CN104583896B (zh) | 向处理器的异构计算元件分配功率 | |
US20140129806A1 (en) | Load/store picker | |
US20110023038A1 (en) | Batch scheduling with segregation | |
CN104969178B (zh) | 用于实现便笺式存储器的装置和方法 | |
AU2011213795A1 (en) | Efficient cache reuse through application determined scheduling | |
WO2012026877A1 (en) | Context switching | |
CN103246613A (zh) | 缓存装置及用于缓存装置的缓存数据获取方法 | |
US8874853B2 (en) | Local and global memory request predictor | |
CN102331977A (zh) | 内存控制器、处理器系统及内存访问控制方法 | |
CN110320970A (zh) | 高度可缩放的加速器 | |
US8990473B2 (en) | Managing requests to open and closed banks in a memory system |
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 |