CN102831024B - 一种基于随机扰动的防饿死访存请求唤醒方法 - Google Patents
一种基于随机扰动的防饿死访存请求唤醒方法 Download PDFInfo
- Publication number
- CN102831024B CN102831024B CN201210274812.6A CN201210274812A CN102831024B CN 102831024 B CN102831024 B CN 102831024B CN 201210274812 A CN201210274812 A CN 201210274812A CN 102831024 B CN102831024 B CN 102831024B
- Authority
- CN
- China
- Prior art keywords
- request
- buffer queue
- sleep
- srq
- random
- 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
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种基于随机扰动的防饿死访存请求唤醒方法,当从Cache来的访存请求遇到目录项为忙时,令暂时不能处理的访存请求进入休眠状态,然后通过随机扰动的请求方式将处于休眠状态的访存请求唤醒,使其重新进入请求处理流水线。本发明具有能够消除访存请求的饿死现象、降低访存延时、减小硬件开销和网络带宽占用等优点。
Description
技术领域
本发明主要涉及到面向多核处理器中访存请求的调度方法领域,特指一种基于随机扰动的防饿死访存请求唤醒方法。
背景技术
在多核处理器中,Cache提高了处理器核与存储器间数据交换的能力,但由于多个处理器核同时缓存同一数据块副本,也带来了数据不一致现象,给存储器层次设计增加了困难,这就是所谓的Cache一致性问题。
基于目录的Cache一致性协议是目前很多处理器所采用的解决方法,它通过专用的目录项来记录和跟踪数据块的状态,从而清楚地知道哪些Cache应该对请求做出何种操作。在目录项中,数据块的“忙”状态是不可避免的一种状态,表明当前的目录项不能处理其他的访存请求,必须要等待使该项置“忙”的请求完成。
当从Cache来的访存请求遇到目录项为忙时,通常的处理方法是拒绝该请求的处理,直接将该请求返回到请求源,迫使请求源在适当的时机重发该请求。这种处理方法的好处是思路简单直接、易于硬件实现,缺点是将访存请求打回到请求源,不仅占用了宝贵的网络带宽,增加了访存延时,而且容易出现某些请求被反复打回而长期得不到处理造成饥饿的现象。
为了解决这些问题,传统的方法是在请求报文和目录项中都增设优先级。当请求报文被多次打回后,其请求报文中的优先级和目录项中的优先级都会逐渐增加,这时低于目录项中优先级的请求(表明是新接收到的请求)就会被拒绝处理,直到高优先级的请求被处理完毕。这种处理方法虽然可以避免请求的饿死现象,但却增加了请求报文和目录项的宽度,由于一个系统中目录项数比较多,由此带来的硬件代价增加往往比较大,并且仍然有较多的低优先级请求报文被打回而得不到及时处理,浪费了网络带宽,增加了访存延时。
发明内容
本发明要解决的技术问题就在于:针对现有技术存在的技术问题,本发明提供一种能够消除访存请求的饿死现象、降低访存延时、减小硬件开销和网络带宽占用的基于随机扰动的防饿死访存请求唤醒方法。
为解决上述技术问题,本发明采用以下技术方案:
一种基于随机扰动的防饿死访存请求唤醒方法,当从Cache来的访存请求遇到目录项为忙时,令暂时不能处理的访存请求进入休眠状态,然后通过随机扰动的请求方式将处于休眠状态的访存请求唤醒,使其重新进入请求处理流水线。
作为本发明的进一步改进:
在访存请求处理部分设置一个休眠请求缓存队列SRQ,暂时不能处理的访存请求进入休眠请求缓存队列SRQ并处于休眠状态;在休眠请求缓存队列SRQ中等待的请求,从休眠请求缓存队列SRQ的出口按顺序被唤醒。
在休眠请求缓存队列SRQ出口的请求不是直接进入到请求处理流水线,而是再继续等待一个随机延时值后再进入请求处理流水线。
在休眠请求缓冲队列SRQ的出口处设置一个随机数发生器,随机数发生器用来产生休眠唤醒的随机扰动延时值。
在所述随机数发生器的输出端设置一个计数器,所述计数器打入随机数发生器产生的随机值作为初始值,当休眠请求缓冲队列SRQ中有请求需要被唤醒时,计数器开始倒计时;计数器值为0时,该请求被唤醒。
在所述请求处理流水线中协议处理器的入口处增加一个请求仲裁器,请求仲裁器用来对请求处理流水线中输入请求缓冲器的请求和休眠请求缓冲队列SRQ中的请求进行仲裁。
在所述请求仲裁器中,来自休眠请求缓冲队列SRQ的请求具体更高的优先级,即只要有来自休眠请求缓冲队列SRQ的已唤醒的访存请求,则优先处理。
与现有技术相比,本发明的优点在于:本发明的基于随机扰动的防饿死访存请求唤醒方法,令暂时不能处理的访存请求进入休眠状态,并基于随机扰动的请求方式将其唤醒。这样,既消除了访存请求的饿死现象,又避免了打回请求而造成的带宽浪费和访存延时增加,从而实现了简洁高效、无饿死现象的Cache一致性处理方法。
附图说明
图1是现有技术中典型协议处理控制器的结构示意图。
图2是应用了本发明后的协议处理控制器的示意图。
图3是本发明中休眠请求缓冲队列的示意图。
图4是本发明中随机数发生器的逻辑结构示意图。
具体实施方式
以下将结合说明书附图和具体实施例对本发明做进一步详细说明。
本发明方法的基本原理为:令暂时不能处理的访存请求进入休眠状态,并基于随机扰动的请求方式将其唤醒。这样,既消除了访存请求的饿死现象,又避免了打回请求而造成的带宽浪费和访存延时增加,从而实现了简洁高效、无饿死现象的Cache一致性处理方法。
本发明是在访存请求处理部分增加一个休眠请求缓存队列SRQ(Sleeping Request Queue)。当从Cache来的访存请求遇到目录项为忙时,不是直接打回到请求源,而是进入休眠请求缓存队列SRQ中等待被唤醒。在休眠请求缓存队列SRQ中等待的请求,从休眠请求缓存队列SRQ的出口按顺序被唤醒,但被唤醒的请求暂时还不能直接进入到请求处理流水线,而是再继续等待一个随机延时值,以防止其再次遇忙而休眠,打破访存请求规律性的“唤醒—忙—休眠”循环。
即,当Cache发出访存请求后,首先由输入请求缓冲队列(输入请求缓冲器)接收并暂存,如果目录项控制器可以接收新的请求来查询,则从输入请求缓冲队列中调度相应的请求进行目录项状态查询。
如果目录项状态为“非忙”,则按正常处理流程进行,形成该请求的响应和新的目录项状态。
如果目录项状态为“忙”,则该请求进入到休眠请求缓存队列中等待被唤醒。一旦休眠请求缓冲队列中有请求,则延时计数器从随机数发生器中打入一个随机值后开始倒计时,计数器为0时,该请求被唤醒,到请求仲裁器进行仲裁后重新查询目录项状态。
本发明的基于随机扰动的防饿死访存请求唤醒方法主要应用于Cache一致性协议处理控制器中。该Cache一致性协议处理控制器为基于目录的Cache一致性处理控制器DB-CPC(Directory-Based Cache Coherence Process Controller),它包括输入请求缓冲器IRB(Incoming Request Buffer)、目录存储器DMU(Directory Memory Unit)、协议处理器PPU(Protocol Process Unit)和输出响应缓冲器ORB(Outgoing Response Buffer)。如图1所示,为现有技术中协议处理控制器的结构示意图。典型的Cache一致性协议处理控制器包含一个输入请求缓冲器IRB、一个目录存储器MDU,一个协议处理器PPU和一个输出相应缓冲器ORB。输入请求缓冲器IRB用来接收来自Cache的一致性存储器访问请求,如独占读、共享读、写回和替换等,并将不能及时处理的请求暂存在缓冲器中。目录存储器MDU由若干目录项组成,每一个目录项对应于Cache中的一个数据块,记录并跟踪Cache中数据块的状态,以准确知道每个Cache的当前状态。协议处理部件PPU则根据目录项的状态形成当前请求的各种响应,并产生新的目录项内容重新写回到目录项中。输出响应缓冲器ORB暂存还没有发出的响应。
如图2所示,本发明在上述结构的基于目录的Cache一致性处理控制器中设置一个休眠请求缓存队列SRQ,该休眠请求缓存队列SRQ的主体采用静态随机访问存储器SRAM构成,休眠请求缓冲队列SRQ用于存放处于休眠状态的请求。如图3所示,为本发明中的休眠请求缓冲队列SRQ。休眠请求缓冲队列SRQ的主体为SRAM组成的存储器,用于存放休眠的请求。休眠请求缓冲队列SRQ的辅助逻辑为读、写地址指针和请求计数器,用以完成队列的读写控制和空满标志。当协议处理器中的请求遇到目录项状态为忙时,该请求就会进入到休眠请求缓冲队列SRQ中休眠。休眠请求缓冲队列SRQ的深度确定可以综合考虑请求总数量、休眠请求缓冲队列面积和访问时间等因素,如果请求总数不是很多,则可以按最大请求数量设置休眠请求缓冲队列SRQ的深度。如果不能为全部请求都预留空间,则可以在休眠请求缓冲队列SRQ满时采用传统的打回请求的处理方法,由于所有请求都需要进入休眠状态的概率很低,因此不会对延时和带宽造成明显影响。
参见图2,本发明在上述结构中进一步设置随机扰动源。即,在休眠请求缓冲队列SRQ的出口处设置一个16位的随机数发生器RDG(Random Generator),随机数发生器用来产生休眠唤醒的随机扰动延时值,该随机数发生器可以产生周期为216-1的伪随机数序列,随机数发生器采用移位寄存器和异或逻辑实现。如图4所示,为具体应用实例中一个随机数发生器的逻辑示意图。该随机数发生器由16个寄存器r0~r15构成。其中r3、r4和r5的输入端在前一级输出的基础上,又和r15做了异或操作,其他寄存器的输入端则直接从上一级的输出端接入。该随机数发生器是一个伪随机数发生器,其循环周期为216-1。
本发明将上述产生的随机扰动加入到唤醒机制中。在随机数发生器RDG的输出端设置一个16位的计数器,扰动延时的具体实现是通过计数器来完成的。该计数器打入RDG产生的随机值作为初始值,当休眠请求缓冲队列SRQ中有请求需要被唤醒时,计数器开始倒计时。计数器值为0时,该请求被唤醒,进入请求仲裁器。为了防止请求等待时间过长,在计数器的打入端口,设置一个16位的延时屏蔽寄存器MASK[15:0],如果MASK[i]=1(i=0,1,2, …,15),则计数器初始值CNT的相应位为0,即CNT[i]=0,这样便可以通过对MASK设置适当值以控制唤醒延时的最大值,实现了随机扰动的可配置,增加了访存调度的灵活性。
参见图2,本发明进一步在协议处理器PPU的入口处增加一个请求仲裁器ARB,该请求仲裁器ARB对输入请求缓冲器IRB的请求和休眠请求缓冲队列SRQ中的请求进行仲裁。由于休眠请求缓冲队列SRQ中的请求已经进行了随机扰动延时,所以在请求仲裁器ARB中,来自休眠请求缓冲队列SRQ的请求具体更高的优先级,即只要有来自休眠队列的已唤醒的访存请求,则优先处理。
以上仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,应视为本发明的保护范围。
Claims (4)
1.一种基于随机扰动的防饿死访存请求唤醒方法,其特征在于:当从Cache来的访存请求遇到目录项为忙时,令暂时不能处理的访存请求进入休眠状态,然后通过随机扰动的请求方式将处于休眠状态的访存请求唤醒,使其重新进入请求处理流水线;在访存请求处理部分设置一个休眠请求缓存队列SRQ,暂时不能处理的访存请求进入休眠请求缓存队列SRQ并处于休眠状态;在休眠请求缓存队列SRQ中等待的请求,从休眠请求缓存队列SRQ的出口按顺序被唤醒;在休眠请求缓存队列SRQ出口的请求不是直接进入到请求处理流水线,而是再继续等待一个随机延时值后再进入请求处理流水线;在休眠请求缓冲队列SRQ的出口处设置一个随机数发生器,随机数发生器用来产生休眠唤醒的随机扰动延时值。
2.根据权利要求1所述的基于随机扰动的防饿死访存请求唤醒方法,其特征在于:在所述随机数发生器的输出端设置一个计数器,所述计数器打入随机数发生器产生的随机值作为初始值,当休眠请求缓冲队列SRQ中有请求需要被唤醒时,计数器开始倒计时;计数器值为0时,该请求被唤醒。
3.根据权利要求2所述的基于随机扰动的防饿死访存请求唤醒方法,其特征在于:在所述请求处理流水线中协议处理器的入口处增加一个请求仲裁器,请求仲裁器用来对请求处理流水线中输入请求缓冲器的请求和休眠请求缓冲队列SRQ中的请求进行仲裁。
4.根据权利要求3所述的基于随机扰动的防饿死访存请求唤醒方法,其特征在于:在所述请求仲裁器中,来自休眠请求缓冲队列SRQ的请求具体更高的优先级,即只要有来自休眠请求缓冲队列SRQ的已唤醒的访存请求,则优先处理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210274812.6A CN102831024B (zh) | 2012-08-03 | 2012-08-03 | 一种基于随机扰动的防饿死访存请求唤醒方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210274812.6A CN102831024B (zh) | 2012-08-03 | 2012-08-03 | 一种基于随机扰动的防饿死访存请求唤醒方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102831024A CN102831024A (zh) | 2012-12-19 |
CN102831024B true CN102831024B (zh) | 2014-12-17 |
Family
ID=47334173
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210274812.6A Active CN102831024B (zh) | 2012-08-03 | 2012-08-03 | 一种基于随机扰动的防饿死访存请求唤醒方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102831024B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106550010A (zh) * | 2016-09-21 | 2017-03-29 | 南京途牛科技有限公司 | 一种实时控制分布式系统调用外系统服务频次的方法及系统 |
CN110806900B (zh) * | 2019-04-30 | 2021-07-09 | 成都海光微电子技术有限公司 | 一种访存指令处理方法及处理器 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1955931A (zh) * | 2005-09-30 | 2007-05-02 | 科威尔公司 | 在多核架构中进行调度 |
CN1959644A (zh) * | 2005-10-27 | 2007-05-09 | 国际商业机器公司 | 在数据处理系统中仲裁线程访问共享资源的系统和方法 |
CN101354682A (zh) * | 2008-09-12 | 2009-01-28 | 中国科学院计算技术研究所 | 一种用于解决多处理器访问目录冲突的装置和方法 |
CN101403982A (zh) * | 2008-11-03 | 2009-04-08 | 华为技术有限公司 | 一种多核处理器的任务分配方法、系统及设备 |
-
2012
- 2012-08-03 CN CN201210274812.6A patent/CN102831024B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1955931A (zh) * | 2005-09-30 | 2007-05-02 | 科威尔公司 | 在多核架构中进行调度 |
CN1959644A (zh) * | 2005-10-27 | 2007-05-09 | 国际商业机器公司 | 在数据处理系统中仲裁线程访问共享资源的系统和方法 |
CN101354682A (zh) * | 2008-09-12 | 2009-01-28 | 中国科学院计算技术研究所 | 一种用于解决多处理器访问目录冲突的装置和方法 |
CN101403982A (zh) * | 2008-11-03 | 2009-04-08 | 华为技术有限公司 | 一种多核处理器的任务分配方法、系统及设备 |
Non-Patent Citations (1)
Title |
---|
一种分片式多核处理器的用户级模拟器;黄琨等;《软件学报》;20080415;第19卷(第4期);1069-1080 * |
Also Published As
Publication number | Publication date |
---|---|
CN102831024A (zh) | 2012-12-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11449445B2 (en) | Transaction-based hybrid memory | |
CN103399856B (zh) | 面向scada系统的爆发式数据缓存处理系统及其方法 | |
CN100555227C (zh) | 用于控制多内核处理器的方法 | |
CN112527730A (zh) | 用于处理具有设备附接的存储器的远程直接存储器存取操作的系统、装置和方法 | |
CN103810112B (zh) | 一种非易失性内存系统及其管理方法 | |
EP2943956B1 (en) | Memory device having an adaptable number of open rows | |
WO2023103296A1 (zh) | 一种写数据高速缓存的方法、系统、设备和存储介质 | |
US20100228922A1 (en) | Method and system to perform background evictions of cache memory lines | |
CN102693162A (zh) | 基于共享内存和核间中断的多核平台上多个虚拟机之间进程通信方法 | |
DE112007001987T5 (de) | Überführen einer Rechenplattform in einen Systemzustand niedriger Leistung | |
CN103019655B (zh) | 面向多核微处理器的内存拷贝加速方法及装置 | |
CN102331974A (zh) | 用于处理器主存储器的持久存储器 | |
CN103377154B (zh) | 存储器的访存控制装置及方法、处理器及北桥芯片 | |
JP5866488B1 (ja) | インテリジェントデュアルデータレート(ddr)メモリコントローラ | |
CN102541779A (zh) | 一种提高多数据缓冲区dma效率的系统和方法 | |
JP2012252490A (ja) | マルチプロセッサおよびそれを用いた画像処理システム | |
WO2013095640A1 (en) | Methods and apparatus for efficient communication between caches in hierarchical caching design | |
CN102831024B (zh) | 一种基于随机扰动的防饿死访存请求唤醒方法 | |
CN111209123A (zh) | 一种本地存储io协议栈数据交互方法和装置 | |
CN104679681A (zh) | Ahb总线访问片上sram的高速桥装置及其工作方法 | |
TW200402619A (en) | Method to reduce power in a computer system with bus master devices | |
CN109062843A (zh) | 一种基于iic总线的数据存储方法及系统 | |
US9411663B2 (en) | Conditional notification mechanism | |
US10884477B2 (en) | Coordinating accesses of shared resources by clients in a computing device | |
CN109285580A (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 |