CN109992411B - 一种实现可快速释放的vlv访存阵列的方法 - Google Patents
一种实现可快速释放的vlv访存阵列的方法 Download PDFInfo
- Publication number
- CN109992411B CN109992411B CN201910120309.7A CN201910120309A CN109992411B CN 109992411 B CN109992411 B CN 109992411B CN 201910120309 A CN201910120309 A CN 201910120309A CN 109992411 B CN109992411 B CN 109992411B
- Authority
- CN
- China
- Prior art keywords
- entry
- request
- released
- mirror image
- vlv
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5022—Mechanisms to release resources
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了软件程序技术领域的一种实现可快速释放的VLV访存阵列的方法,包括如下步骤:步骤一:当每次发生restart的时候,并且已经发送的次数等于返回次数时,ID依然保持不变,下一个push进来的请求依然使用现有ID;步骤二:当每次发生restart,a:释放现有entry;步骤三:通过镜像资源用于存储restart未完成得请求时复制出来的请求信息,发送和接收counter;步骤四:接收counter会在被复制到镜像资源以后,继续monitor返回的响应;步骤五:如果操作激进,并释放ID的同一个周期把ID重新复制回有restarted标志的entry;步骤六:通过Free‑list维护ID的分配和回收;本发明用最小的开销,提升有限的硬件资源的利用率,快速释放乱序资源,减少不必要的资源阻塞。
Description
技术领域
本发明公开了一种实现可快速释放的VLV访存阵列的方法,具体为软件程序技术领域。
背景技术
VLV(variable length vector)是目前比较新颖的一种向量指令的架构设计,兼顾了软件程序的可扩展性,兼容性和简洁性,轻松实现一套指令集迎合未来较长时间的应用需求,作为VLV的访存单元,其性能决定了核的存储带宽,间接的影响执行效率。
VLV支持1-1KB的存取以及向量运算,可支持多笔load乱序访存,一旦乱序资源不够,会造成VLV的阻塞。每次流水线restart刷乱序队列的时候,VLV内部资源并不可以被立即释放,需要等待已经发射出去的访存请求全部返回,才可以把曾经标记了restart标志的entry释放掉,否则后面的请求会因为错误的匹配而接收到错误的数据,如果采用乱序ID与乱序资源对等的方式,硬件开销过大,为此,我们提出了一种实现可快速释放的VLV访存阵列的方法投入使用,以解决上述问题。
发明内容
针对上述缺陷,本发明的目的在于提供一种快速释放乱序资源,用最小的开销,提升有限的硬件资源利用率的可快速释放的VLV访存阵列的方法,以解决上述背景技术中提出的问题。
为实现上述目的,本发明提供如下技术方案:一种实现可快速释放的VLV访存阵列的方法,包括如下步骤:
步骤一:当每次发生restart的时候,并且已经发送的次数等于返回次数时,ID依然保持不变,下一个push进来的请求依然使用现有ID;
步骤二:当每次发生restart,并且entry已经发送的次数不等于返回次数时,如果镜像资源没有满,进行以下特殊操作:
a:释放现有entry;
b:把entry的ID、发送counter、返回counter复制到另一个结构中;
c:从free list选出N个status为非busy的ID,并把busy置位,填到entry的ID域;
步骤三:通过镜像资源用于存储restart未完成得请求时复制出来的请求信息,包括请求的ID、发送counter和接收counter;
步骤四:接收counter会在被复制到镜像资源以后,继续monitor返回的响应,并完成自加过程,一旦发送和接收相同,释放当前镜像资源和ID,free-list会根据释放的ID完成更新操作;
步骤五:如果操作激进,并且当前释放的镜像资源是唯一可用的资源,可以在释放ID的同一个周期把ID重新复制回有restarted标志的entry,完成和entry信息的互换;
步骤六:通过Free-list维护ID的分配和回收,每次push request的时候分配ID,正常释放entry的时候回收ID,或者镜像资源中完成请求的时候回收ID。
优选的,所述步骤一中,每个entry多出一个域来表示当前的entry的ID,另外有一个free list来维护所有entry ID的状态,刚开始上电的时候,entry的ID等于0,1,2依次递加,free list的前四个ID状态为busy,之后每次entry被正常释放,ID保持不变,下一个push进来的请求依然使用现有ID。
优选的,所述步骤二中,每次发生restart请求的时候,流水线需要重新加载新的指令,前端流水线的延迟可以让以上的操作不需要在一个周期内完成。
优选的,所述步骤三中,ID的上限就决定了连续restart后,VLV访存的接收能力,用于存储未完成请求的镜像结构在设计中也需要考虑到本身乱序资源和ID的数量。
优选的,所述步骤四中,每次只需要分配一个小的entry,此外free list也只需要查找一个空闲的ID,并更新free list,把free list做的很大,支持更多的ID。
优选的,所述步骤五中,一旦镜像资源有请求释放了空间,再从乱序资源内部把未完成的请求复制出来,并分配刚才释放的ID。
优选的,所述步骤六中对ID的分配和回收还设有一种方案,当每次push request的时候不考虑ID的分配,释放后的entry自然拥有可用的ID,每次正常释放entry的时候,ID保持不变,每次非正常释放entry的时候,从free-list中分配一个非busy状态的ID,只有在镜像资源等待请求完成的时候回收ID。
与现有技术相比,本发明的有益效果是:在发生restart之后,快速释放乱序资源,减少不必要的资源阻塞,用最小的开销,提升有限的硬件资源的利用率,分配和回收过程均可以多个周期做完并且不影响性能,时序压力几乎为零,ID和镜像结构资源可配置,根据性能要求灵活可调节,同时解决乱序窗口和释放问题。
附图说明
图1为本发明快速释放的VLV访存阵列的方法具体流程示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明提供一种实现可快速释放的VLV访存阵列的方法,具有快速释放乱序资源,提升有限的硬件资源的利用率的功能,请参阅图1,包括如下步骤:
步骤一:当每次发生restart的时候,并且已经发送的次数等于返回次数时,ID依然保持不变,下一个push进来的请求依然使用现有ID;
步骤二:当每次发生restart,并且entry已经发送的次数不等于返回次数时,如果镜像资源没有满,进行以下特殊操作:
a:释放现有entry;
b:把entry的ID、发送counter、返回counter复制到另一个结构中;
c:从free list选出N个status为非busy的ID,并把对应的busy置位,填到entry的ID域;
步骤三:通过镜像资源用于存储restart未完成得请求时复制出来的请求信息,包括请求的ID,发送counter和接收counter;
步骤四:接收counter会在被复制到镜像资源以后,继续monitor返回的响应,并完成自加过程,一旦发送和接收相同,释放当前镜像资源和ID,free-list会根据释放的ID完成更新操作;
步骤五:如果操作激进,并且当前释放的镜像资源是唯一可用的资源,可以在释放ID的同一个周期把ID重新复制回有restarted标志的entry,完成和entry信息的互换;
步骤六:通过Free-list维护ID的分配和回收,每次push request的时候分配ID,正常释放entry的时候回收ID,或者镜像资源中完成请求的时候回收ID。
通过上述方法,实现现在每个entry并不唯一对应一个固定的ID,虽然是四个entry,可以总共有N个entry ID(N>4)来分配,每个entry多出一个域来表示当前的entry的ID,另外有一个free list来维护所有entry ID的状态,刚开始上电的时候,entry的ID等于0,1,2依次递加,free list的前四个ID状态为busy,之后每次entry被正常释放(非restart的特殊释放),ID保持不变,下一个push进来的请求依然使用现有ID;当每次发生restart的时候,并且已经发送的次数等于返回次数时,ID依然保持不变,下一个push进来的请求依然使用现有ID;当每次发生restart,并且entry已经发送的次数不等于返回次数时,如果镜像资源没有满,进行以下特殊操作:
1.释放现有entry(清除entry的valid域)
2.把entry的ID、发送counter、返回counter复制到另一个结构中
3.从free list选出N个status为非busy的ID,并把对应的busy置位,填到entry的ID域。
可以在发生restart的时候,把没有结束的请求的少量信息转移到另一存储结构中,保证乱序资源主体的释放,提高了资源的利用率,把4个entry伪装成N个ID的资源的效果,此外该结构还可以从面积或者时序上有折衷的方案,因为每次发生restart请求的时候,流水线需要重新加载新的指令,前端流水线的延迟可以让以上的操作不需要在一个周期内完成,比如一个流水线restart同时清除了4个有效的entry,每个entry都需要被释放,那么可以分四个周期做完所有的释放工作,需要复用之前的restarted标志位(每次发生restart置位),然后根据请求顺序,先释放最前面有restarted标志的entry,现在的工作简化成每次只需要把一个entry的必要信息复制到另一个结构,因此另一个镜像结构的分配和释放就变得异常简单,每次只需要分配一个小的entry,此外free list也只需要查找一个空闲的ID,并更新free list。这样就可以把free list做的很大,支持更多的ID,ID成为了一种实际上的乱序资源并且不被主体硬件资源制约。试想一种极端情况,连续的向量的访存被连续的取消,那么每次都需要释放4个entry,需要多出4个ID用于分配新的entry,那么ID的上限就决定了连续restart后,VLV访存的接收能力。另外用于存储未完成请求的镜像结构在设计中也需要考虑到本身乱序资源和ID的数量。如果总量8个ID,乱序资源是4个entry,那么不需要每次都把未完成的请求信息(ID,发送counter和接收counter)都直接复制到镜像结构,比如已经发生了N次restart,有4笔未完成的请求被拷贝到镜像结构,那么其余只剩下最多4个可用的ID,那么完全可以在乱序资源内部等待未完成请求的结束,一旦镜像结构有请求释放了空间,再从乱序资源内部把未完成的请求复制出来,并分配刚才释放的ID。
镜像资源用于存储restart未完成得请求时复制出来的请求信息,包括请求的ID,发送counter和接收counter,接收counter会在被复制到镜像资源以后,继续monitor返回的响应,并完成自加过程,一旦发送和接收相同,释放当前镜像资源和ID,free-list会根据释放的ID完成更新操作。当然如果操作激进,并且当前释放的镜像资源是唯一可用的资源,可以在释放ID的同一个周期把ID重新复制回有restarted标志的entry,完成和entry信息的互换。
Free-list用于维护ID的分配和回收,有两种方案:
1.每次push request的时候分配ID,正常释放entry的时候回收ID,或者镜像资源中完成请求的时候回收ID
2.每次push request的时候不考虑ID的分配,释放后的entry自然拥有可用的ID,每次正常释放entry的时候(没有发生restart,顺利完成请求以及发生restart,顺利在entry完成请求),ID保持不变,每次非正常释放entry的时候(发生restart,copy到镜像资源等待请求完成),从free-list中分配一个非busy状态的ID,只有在镜像资源等待请求完成的时候回收ID。
对于第二种方案,只要镜像资源、乱序资源、ID总量控制合理,不需要考虑ID的可用数量,只要保证镜像资源可用就可以分配到可用的ID,比如镜像资源+乱序资源=ID总量,如果镜像资源可用或乱序资源可用,free-list一定有空闲ID。
本发明解决了restart之后资源的快速释放问题,但是正常情况下,乱序窗口的大小依旧取决于乱序资源,不受ID数量的影响,如果ID数量等于乱序资源数量,那就可以同时解决乱序窗口和释放问题,代价较大。
本发明通过在请求未完成不能及时释放资源的时候,以最小的代价维持请求的跟踪,用free list的方式维护ID,并在特定的阶段完成分配、回收,并且提供了两种不同的分配、回收方案以及镜像结构记录的信息和更新的时间点,达到了快速释放乱序资源,减少不必要的资源阻塞,用最小的开销,提升有限的硬件资源的利用率。
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。
Claims (6)
1.一种实现可快速释放的VLV访存阵列的方法,其特征在于:包括如下步骤:
步骤一:当每次发生重启的时候,并且词条已经发送的次数等于返回次数时,ID依然保持不变,下一个推送进来的请求依然使用现有ID;
步骤二:当每次发生重启时,并且词条已经发送的次数不等于返回次数时,如果镜像资源没有满,进行步骤三至步骤六操作:
a:释放现有词条;
b:把词条的ID、发送计数器、返回计数器复制到另一个结构中;
c:从释放表中选出N个状态为非繁忙的ID,并把繁忙的ID复位,填到词条的ID域;
步骤三:利用镜像资源存储在重启的过程中还未完成请求时所复制出来的请求信息、包括请求的ID,发送计数器和接收计数器;
步骤四:接收计数器在被复制到镜像资源以后,继续监督返回的响应,并完成自加过程,一旦发送计数器和接收计数器相同,释放当前镜像资源和ID,释放表会根据释放的ID完成更新操作;
步骤五:如果当前释放的镜像资源是唯一可用的资源,在释放ID的同一个周期把ID重新复制回有重启标志的词条,该镜像资源完成和词条信息的互换;
步骤六:通过释放表维护ID的分配和回收,每次推送请求的时候分配ID,正常释放词条的时候回收ID,或者镜像资源完成请求的时候回收ID。
2.根据权利要求1所述的一种实现可快速释放的VLV访存阵列的方法,其特征在于:所述步骤一中,每个词条包含一个域来表示当前的词条ID,包含一个释放表来维护所有词条ID的状态,在当前域刚开始上电的时候,词条ID等于0,1,2,释放表的前四个ID状态为繁忙,之后每次词条被正常释放,现有ID保持不变,下一个推送进来的请求依然使用现有ID。
3.根据权利要求1所述的一种实现可快速释放的VLV访存阵列的方法,其特征在于:所述步骤二中,每次发生重启请求的时候,前端流水线重新加载新的指令,前端流水线的延迟可以让步骤一的操作不在一个周期内完成。
4.根据权利要求1所述的一种实现可快速释放的VLV访存阵列的方法,其特征在于:所述步骤四中,每次只分配一个小的词条,此外释放表也只查找一个空闲的ID。
5.根据权利要求1所述的一种实现可快速释放的VLV访存阵列的方法,其特征在于:所述步骤五中,一旦镜像资源有释放空间的请求,再从乱序资源内部把未完成的请求复制出来,并分配释放的ID。
6.根据权利要求1所述的一种实现可快速释放的VLV访存阵列的方法,其特征在于:所述步骤六中对ID的分配和回收还包括一种方案,当每次推送请求的时候ID不分配,释放后的词条拥有可用的ID,每次正常释放词条的时候,ID保持不变,每次非正常释放词条的时候,从释放表中分配一个非繁忙状态的ID,只有在镜像资源等待请求完成的时候回收ID。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910120309.7A CN109992411B (zh) | 2019-02-18 | 2019-02-18 | 一种实现可快速释放的vlv访存阵列的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910120309.7A CN109992411B (zh) | 2019-02-18 | 2019-02-18 | 一种实现可快速释放的vlv访存阵列的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109992411A CN109992411A (zh) | 2019-07-09 |
CN109992411B true CN109992411B (zh) | 2021-05-18 |
Family
ID=67129246
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910120309.7A Active CN109992411B (zh) | 2019-02-18 | 2019-02-18 | 一种实现可快速释放的vlv访存阵列的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109992411B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104461758A (zh) * | 2014-11-10 | 2015-03-25 | 中国航天科技集团公司第九研究院第七七一研究所 | 一种容忍cache缺失快速清空流水线的异常处理方法及其处理结构 |
CN108984283A (zh) * | 2018-06-25 | 2018-12-11 | 复旦大学 | 一种自适应的动态流水线并行方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2554951A1 (en) * | 2006-08-01 | 2008-02-01 | Ibm Canada Limited - Ibm Canada Limitee | Systems and methods for clustering data objects |
US8555034B2 (en) * | 2009-12-15 | 2013-10-08 | Oracle America, Inc. | Execution of variable width vector processing instructions |
US11544214B2 (en) * | 2015-02-02 | 2023-01-03 | Optimum Semiconductor Technologies, Inc. | Monolithic vector processor configured to operate on variable length vectors using a vector length register |
-
2019
- 2019-02-18 CN CN201910120309.7A patent/CN109992411B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104461758A (zh) * | 2014-11-10 | 2015-03-25 | 中国航天科技集团公司第九研究院第七七一研究所 | 一种容忍cache缺失快速清空流水线的异常处理方法及其处理结构 |
CN108984283A (zh) * | 2018-06-25 | 2018-12-11 | 复旦大学 | 一种自适应的动态流水线并行方法 |
Also Published As
Publication number | Publication date |
---|---|
CN109992411A (zh) | 2019-07-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6089349B2 (ja) | マルチコアアーキテクチャでのリソース分離を支援するための方法およびシステム | |
JP6314355B2 (ja) | メモリ管理方法およびデバイス | |
US9798595B2 (en) | Transparent user mode scheduling on traditional threading systems | |
CN100487660C (zh) | 一种多线程处理器动态内存管理系统及方法 | |
US20190319895A1 (en) | Resource Scheduling Method And Apparatus | |
US10795826B2 (en) | Translation lookaside buffer management method and multi-core processor | |
US11269772B2 (en) | Persistent memory storage engine device based on log structure and control method thereof | |
US20110271142A1 (en) | Method and system for handling a management interrupt event in a multi-processor computing device | |
CN103036717A (zh) | 分布式数据的一致性维护系统和方法 | |
US11537453B2 (en) | Multithreaded lossy queue protocol | |
CN110716793B (zh) | 一种分布式事务的执行方法、装置、设备及存储介质 | |
JP5445669B2 (ja) | マルチコアシステムおよび起動方法 | |
US6886031B2 (en) | Efficient connection and memory management for message passing on a single SMP or a cluster of SMPs | |
CN105373453A (zh) | 数据备份方法及系统 | |
CN105045729A (zh) | 一种远端代理带目录的缓存一致性处理方法与系统 | |
CN109992411B (zh) | 一种实现可快速释放的vlv访存阵列的方法 | |
CN110162395B (zh) | 一种内存分配的方法及装置 | |
US11113069B1 (en) | Implementing quick-release VLV memory access array | |
CN113176896B (zh) | 一种基于单进单出无锁队列的随机取出对象的方法 | |
CN110908790B (zh) | 存储器存储装置及其操作方法 | |
CN111163158B (zh) | 一种数据处理方法及电子设备 | |
CN112650450B (zh) | 固态硬盘缓存管理方法、固态硬盘缓存控制器及固态硬盘 | |
JP2014078266A (ja) | マルチコアプロセッサシステム、マルチコアプロセッサシステムの制御方法、およびマルチコアプロセッサシステムの制御プログラム | |
JP2019164510A (ja) | ストレージシステム及びio処理の制御方法 | |
WO2024046130A1 (zh) | 任务处理方法、电子设备以及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |