CN109992411A - 一种实现可快速释放的vlv访存阵列的方法 - Google Patents

一种实现可快速释放的vlv访存阵列的方法 Download PDF

Info

Publication number
CN109992411A
CN109992411A CN201910120309.7A CN201910120309A CN109992411A CN 109992411 A CN109992411 A CN 109992411A CN 201910120309 A CN201910120309 A CN 201910120309A CN 109992411 A CN109992411 A CN 109992411A
Authority
CN
China
Prior art keywords
entry
request
vlv
memory access
restart
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
Application number
CN201910120309.7A
Other languages
English (en)
Other versions
CN109992411B (zh
Inventor
费晓龙
王磊
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huaxia (beijing) General Processor Technology Co Ltd
Original Assignee
Huaxia (beijing) General Processor Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huaxia (beijing) General Processor Technology Co Ltd filed Critical Huaxia (beijing) General Processor Technology Co Ltd
Priority to CN201910120309.7A priority Critical patent/CN109992411B/zh
Publication of CN109992411A publication Critical patent/CN109992411A/zh
Application granted granted Critical
Publication of CN109992411B publication Critical patent/CN109992411B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation 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/5022Mechanisms 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访存阵列的方法,具体为软件程序技术领域。
背景技术
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的分配和回收还设有一种方案,当每次pus h 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 lis t的前四个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个entr y伪装成N个ID的资源的效果,此外该结构还可以从面积或者时序上有折衷的方案,因为每次发生restart请求的时候,流水线需要重新加载新的指令,前端流水线的延迟可以让以上的操作不需要在一个周期内完成,比如一个流水线restart同时清除了4个有效的entry,每个entry都需要被释放,那么可以分四个周期做完所有的释放工作,需要复用之前的restarted标志位(每次发生restart置位),然后根据请求顺序,先释放最前面有restarted标志的entry,现在的工作简化成每次只需要把一个entry的必要信息复制到另一个结构,因此另一个镜像结构的分配和释放就变得异常简单,每次只需要分配一个小的entry,此外free list也只需要查找一个空闲的ID,并更新fr ee 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完成更新操作。当然如果操作激进,并且当前释放的镜像资源是唯一可用的资源,可以在释放I D的同一个周期把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 (7)

1.一种实现可快速释放的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。
2.根据权利要求1所述的一种实现可快速释放的VLV访存阵列的方法,其特征在于:所述步骤一中,每个entry多出一个域来表示当前的entry的ID,另外有一个free list来维护所有entry ID的状态,刚开始上电的时候,entry的ID等于0,1,2依次递加,free list的前四个ID状态为busy,之后每次entry被正常释放,ID保持不变,下一个push进来的请求依然使用现有ID。
3.根据权利要求1所述的一种实现可快速释放的VLV访存阵列的方法,其特征在于:所述步骤二中,每次发生restart请求的时候,流水线需要重新加载新的指令,前端流水线的延迟可以让以上的操作不需要在一个周期内完成。
4.根据权利要求1所述的一种实现可快速释放的VLV访存阵列的方法,其特征在于:所述步骤三中,ID的上限就决定了连续restart后,VLV访存的接收能力,用于存储未完成请求的镜像结构在设计中也需要考虑到本身乱序资源和ID的数量。
5.根据权利要求1所述的一种实现可快速释放的VLV访存阵列的方法,其特征在于:所述步骤四中,每次只需要分配一个小的entry,此外free list也只需要查找一个空闲的ID,并更新free list,把free list做的很大,支持更多的ID。
6.根据权利要求1所述的一种实现可快速释放的VLV访存阵列的方法,其特征在于:所述步骤五中,一旦镜像结构有请求释放了空间,再从乱序资源内部把未完成的请求复制出来,并分配刚才释放的ID。
7.根据权利要求1所述的一种实现可快速释放的VLV访存阵列的方法,其特征在于:所述步骤六中对ID的分配和回收还设有一种方案,当每次push request的时候不考虑ID的分配,释放后的entry自然拥有可用的ID,每次正常释放entry的时候,ID保持不变,每次非正常释放entry的时候,从free-list中分配一个非busy状态的ID,只有在镜像资源等待请求完成的时候回收ID。
CN201910120309.7A 2019-02-18 2019-02-18 一种实现可快速释放的vlv访存阵列的方法 Active CN109992411B (zh)

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 true CN109992411A (zh) 2019-07-09
CN109992411B 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 (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080077572A1 (en) * 2006-08-01 2008-03-27 Peter Currie Boyle Clustering Data Objects
US20110145543A1 (en) * 2009-12-15 2011-06-16 Sun Microsystems, Inc. Execution of variable width vector processing instructions
CN104461758A (zh) * 2014-11-10 2015-03-25 中国航天科技集团公司第九研究院第七七一研究所 一种容忍cache缺失快速清空流水线的异常处理方法及其处理结构
US20160224514A1 (en) * 2015-02-02 2016-08-04 Optimum Semiconductor Technologies, Inc. Vector processor configured to operate on variable length vectors with register renaming
CN108984283A (zh) * 2018-06-25 2018-12-11 复旦大学 一种自适应的动态流水线并行方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080077572A1 (en) * 2006-08-01 2008-03-27 Peter Currie Boyle Clustering Data Objects
US20110145543A1 (en) * 2009-12-15 2011-06-16 Sun Microsystems, Inc. Execution of variable width vector processing instructions
CN104461758A (zh) * 2014-11-10 2015-03-25 中国航天科技集团公司第九研究院第七七一研究所 一种容忍cache缺失快速清空流水线的异常处理方法及其处理结构
US20160224514A1 (en) * 2015-02-02 2016-08-04 Optimum Semiconductor Technologies, Inc. Vector processor configured to operate on variable length vectors with register renaming
CN108984283A (zh) * 2018-06-25 2018-12-11 复旦大学 一种自适应的动态流水线并行方法

Also Published As

Publication number Publication date
CN109992411B (zh) 2021-05-18

Similar Documents

Publication Publication Date Title
CN100487660C (zh) 一种多线程处理器动态内存管理***及方法
CN104238712B (zh) 分布式功率输送
JP5789640B2 (ja) 複数のコンピュータシステムによるプログラムの実行を管理するシステム
US9218222B2 (en) Physical manager of synchronization barrier between multiple processes
CN102474531B (zh) 地址服务器
CN103186404B (zh) ***固件更新方法与使用该方法的服务器***
US20110271142A1 (en) Method and system for handling a management interrupt event in a multi-processor computing device
US20110145539A1 (en) Memory Allocation in a Broker System
CN106331148A (zh) 一种客户端数据读取时的缓存管理方法及其装置
CN110727517A (zh) 一种基于分区设计的内存分配方法和装置
CN112732441B (zh) 一种多元动态连接池的连接方法、装置及***
CN1964429A (zh) 一种分布式机顶盒升级管理方法、管理***和管理设备
CN114500416B (zh) 用于最多一次消息投递的投递方法和投递***
CN112416969A (zh) 分布式数据库中的并行任务调度***
WO2006131440A1 (en) Apparatus, system, and method for facilitating communication between an enterprise information system and a client
CN109992411A (zh) 一种实现可快速释放的vlv访存阵列的方法
CN109388429A (zh) Mhp异构多流水线处理器的任务分发方法
CN110442530A (zh) 优化内存数据处理的方法、存储介质
CN102622271A (zh) 用于多线程处理的使用信号量的方法和设备
US20200322427A1 (en) Apparatus and method for efficient, coordinated, distributed execution
US20150169367A1 (en) System and method for supporting adaptive busy wait in a computing environment
CN100502330C (zh) 通信***和连接管理服务器设备
CN115657953A (zh) 一种数据存储方法、装置、设备及计算机可读存储介质
US7908421B2 (en) Universal serial bus endpoint context caching
US11113069B1 (en) Implementing quick-release VLV memory access array

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