CN109002322B - 用于执行部件模块级验证的寄存器分配与释放方法及部件 - Google Patents

用于执行部件模块级验证的寄存器分配与释放方法及部件 Download PDF

Info

Publication number
CN109002322B
CN109002322B CN201810668296.2A CN201810668296A CN109002322B CN 109002322 B CN109002322 B CN 109002322B CN 201810668296 A CN201810668296 A CN 201810668296A CN 109002322 B CN109002322 B CN 109002322B
Authority
CN
China
Prior art keywords
register
queue
mapping
merging
numbers
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
Application number
CN201810668296.2A
Other languages
English (en)
Other versions
CN109002322A (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.)
Feiteng Technology Changsha Co ltd
Phytium Technology Co Ltd
Original Assignee
Feiteng Technology Changsha Co ltd
Phytium 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 Feiteng Technology Changsha Co ltd, Phytium Technology Co Ltd filed Critical Feiteng Technology Changsha Co ltd
Priority to CN201810668296.2A priority Critical patent/CN109002322B/zh
Publication of CN109002322A publication Critical patent/CN109002322A/zh
Application granted granted Critical
Publication of CN109002322B publication Critical patent/CN109002322B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file

Abstract

本发明公开了一种用于执行部件模块级验证的寄存器分配与释放方法及部件,方法实施步骤包括预先构造空闲寄存器队列、合并队列以及以寄存器号为索引的映射队列;当监测到某操作需要分配寄存器号时,从空闲寄存器队列中取出寄存器号存入合并队列中,并将对应的操作名称存入映射队列中进行标记;当监测到某个寄存器号可以释放时,先查询映射队列找到待释放寄存器号对应的操作名称,再查询合并队列找到该操作占用的所有寄存器号,将该操作占用的所有寄存器号添加到空闲寄存器队列中,同时删除映射队列、合并队列中的相应信息。本发明具有计算量小、可扩展性好、通用性强、分配与释放效率高的优点,能够提高执行部件模块级验证效率。

Description

用于执行部件模块级验证的寄存器分配与释放方法及部件
技术领域
本发明涉及微处理器验证领域,具体涉及一种用于执行部件模块级验证的寄存器分配与释放方法及部件。
背景技术
近年来,随着制造工艺的改进,微处理器设计的复杂度越来越高,微处理器功能验证已成为微处理器设计流程中的瓶颈。微处理器设计的复杂度决定了微处理器的验证不可能一蹴而就,因此通常会采用层次化的方法进行,典型的微处理器验证层次分为模块级、内核级和芯片级。微处理器的执行部件作为模块级验证对象的规模合适且功能基本完整,与其他模块的边界和接口比较清晰,因此在做内核级验证之前,会先进行模块级验证。微处理器的执行部件包括整数运算部件、浮点运算部件和访存部件等,这些部件通常只负责操作数准备完成后具体操作的执行,操作数的准备包括取指、译码、寄存器分配与释放等是在其他部件完成的。为了尽可能真实的模拟微处理器中指令的执行情况,同时也为了对执行部件进行充分的验证,执行部件的模块级验证环境中需要完成操作数的准备工作,其中就包括寄存器的分配和释放。
在微处理器执行部件模块级验证中常用的寄存器分配和释放的方法步骤如下:1)通过复杂的计算,得出当前可分配的空闲寄存器号;2)监控流水线输入信号,当检测到流水线需要分配寄存器号时,进行寄存器号的分配;3)监控流水线输出信号,当检测到寄存器号可释放时,直接释放该寄存器;4)通过复杂的计算,得出流水线后端未监测到的可释放的寄存器号并释放。但是,上述方法存在的缺点包括:1)计算量大,分配及释放的效率低。在执行部件的流水线中,操作数保存在物理寄存器中,为了确保指令的正确执行,需要在验证环境中确保分配进流水线的寄存器号必须唯一,因此在流水线前端进行寄存器分配时,需通过复杂的计算得出当前可分配的寄存器号;为了提高微处理器设计中流水线的执行效率,现代微处理器设计通常采用乱序的流水线结构,且为了提高流水线效率,源寄存器号一般不会带至流水线后端,这就导致在流水线后端只能监测到部分可释放寄存器号,且不知道该寄存器号来自哪个操作,因此需通过复杂的计算才能释放掉操作占用的所有寄存器号。2)可扩展性、通用性较差。不同的微处理器设计中,物理寄存器的设计可能存在大小和数量等不同,如采用上述方法需要对验证环境的代码进行较大的改动。
发明内容
本发明要解决的技术问题:针对现有技术的上述问题,提供一种计算量小、可扩展性好、通用性强、分配和释放效率高的用于执行部件模块级验证的寄存器分配与释放方法及部件。
为了解决上述技术问题,本发明采用的技术方案为:
一种用于执行部件模块级验证的寄存器分配与释放方法,实施步骤包括:
1)预先构造以自然数为索引的空闲寄存器队列、以操作名称为索引的合并队列以及以寄存器号为索引的映射队列;所述空闲寄存器队列的队列大小与待测设计中的寄存器数目一致,将所有待分配的寄存器号保存至空闲寄存器队列中,每个寄存器号占用一项;所述合并队列中每项也是一个队列,合并队列用于保存各操作占用的所有寄存器号,每个操作占用合并队列的一项;所述映射队列用于保存占用寄存器号的操作名称,每个寄存器号占用一项;
2)在验证环境中实时监控流水线前端的输入信号以及流水线后端的输出信号,当在流水线前端监测到某操作需要分配寄存器号时,跳转执行步骤3);当在流水线后端监测到某个寄存器号可以释放时,跳转执行步骤4);
3)从所述空闲寄存器队列中取出一个或多个寄存器号,存入所述合并队列中,并将对应的操作名称存入所述映射队列中进行标记;跳转执行步骤2);
4)先根据寄存器号查询所述映射队列找到待释放寄存器号对应的操作名称,再根据操作名称查询所述合并队列找到该操作占用的所有寄存器号,将该操作占用的所有寄存器号添加到所述空闲寄存器队列中,同时删除所述映射队列、合并队列中的相应信息。
优选地,步骤3)的详细步骤包括:
3.1)判断所述空闲寄存器队列中是否有空闲的寄存器号可分配,若存在则跳转执行步骤3.2);否则,跳转重新执行步骤3.1);
3.2)从所述空闲寄存器队列中取出一个寄存器号;
3.3)将取出的寄存器号存入所述合并队列中;
3.4)将取出的寄存器号所占用寄存器的操作名称存入所述映射队列中;
3.5)判断是否满足操作所需寄存器号数量,如果已经满足操作所需寄存器号数量,则跳转执行步骤2);否则,跳转执行步骤3.2)。
优选地,步骤4)的详细步骤包括:
4.1)根据寄存器号查询所述映射队列查找待释放寄存器号对应的操作名称,如果查找成功则跳转执行步骤4.2);否则,结束并跳转执行步骤4.7);
4.2)根据待释放寄存器号对应的操作名称查询所述合并队列找到该操作占用的所有寄存器号,如果查找成功则跳转执行步骤4.3);否则,结束并跳转执行步骤4.7);
4.3)根据操作名称查询所述合并队列找到该操作占用的所有寄存器号;
4.4)将该操作占用的所有寄存器号添加到所述空闲寄存器队列中;
4.5)删除所述合并队列中的相应信息;
4.6)删除所述映射队列中的相应信息;
4.7)跳转执行步骤2)。
本发明还提供一种用于执行部件模块级验证的寄存器分配与释放部件,包括以自然数为索引的空闲寄存器队列、以操作名称为索引的合并队列、以寄存器号为索引的映射队列以及分配与释放管理单元;所述空闲寄存器队列的队列大小与待测设计中的寄存器数目一致,将所有待分配的寄存器号保存至空闲寄存器队列中,每个寄存器号占用一项;所述合并队列中每项也是一个队列,合并队列用于保存各操作占用的所有寄存器号,每个操作占用合并队列的一项;所述映射队列用于保存占用寄存器号的操作名称,每个寄存器号占用一项;所述分配与释放管理单元被编程以执行本发明前述用于执行部件模块级验证的寄存器分配与释放方法的步骤2)~步骤4)。
和现有技术相比,本发明具有下述有益效果:
1)运算量小、效率高。本发明不需要经过复杂运算,只需实时监控并修改队列中内容,即可模拟微处理器设计中真实的寄存器分配与释放行为,运算量较小,分配和释放效率较高。
2)通用性强。在微处理器其他执行部件的模块级验证中,以及其他微处理器的执行部件模块级验证中,都可采用本发明方法来进行寄存器的分配与释放。
3)可扩展性好。如果待测设计的寄存器设计变化,只需修改空闲寄存器队列大小并将所有的寄存器号加入该队列即可,无需复杂的修改与调试,可扩展性好。
附图说明
图1为本发明实施例方法的基本流程示意图。
图2为本发明实施例中空闲寄存器队列的结构示意图。
图3为本发明实施例中合并队列的结构示意图。
图4为本发明实施例中映射队列的结构示意图。
图5为本发明实施例中寄存器分配的流程示意图。
图6为本发明实施例中寄存器释放的流程示意图。
具体实施方式
参见图1,本实施例用于执行部件模块级验证的寄存器分配与释放方法的实施步骤包括:
1)预先构造以自然数为索引的空闲寄存器队列、以操作名称为索引的合并队列以及以寄存器号为索引的映射队列;所述空闲寄存器队列的队列大小与待测设计中的寄存器数目一致,将所有待分配的寄存器号保存至空闲寄存器队列中,每个寄存器号占用一项;所述合并队列中每项也是一个队列,合并队列用于保存各操作占用的所有寄存器号,每个操作占用合并队列的一项;所述映射队列用于保存占用寄存器号的操作名称,每个寄存器号占用一项;
2)在验证环境中实时监控流水线前端的输入信号以及流水线后端的输出信号,当在流水线前端监测到某操作需要分配寄存器号时,跳转执行步骤3);当在流水线后端监测到某个寄存器号可以释放时,跳转执行步骤4);
3)从所述空闲寄存器队列中取出一个或多个寄存器号,存入所述合并队列中,并将对应的操作名称存入所述映射队列中进行标记;跳转执行步骤2);
4)先根据寄存器号查询所述映射队列找到待释放寄存器号对应的操作名称,再根据操作名称查询所述合并队列找到该操作占用的所有寄存器号,将该操作占用的所有寄存器号添加到所述空闲寄存器队列中,同时删除所述映射队列、合并队列中的相应信息。
如图2所示,本实施例中构造了以自然数为索引的空闲寄存器队列freetag_q,队列大小为64项,与待测设计中的寄存器数目一致,将所有待分配的寄存器号保存至该队列中,每个寄存器号占用一项,即freetag_q[0] = tag_0、freetag_q[1] = tag_1、……、freetag_q[63] = tag_63。
如图3所示,本实施例中构造了以操作名称为索引的合并队列taglist_q,合并队列中每项也是一个队列(busytag_q),该队列用于保存各操作占用的所有寄存器号,每个操作占用taglist_q的一项,每个操作占用的寄存器号占用busytag_q中的一项或多项。
如图4所示,本实施例中构造了以寄存器号为索引的映射队列tagmap_q所示,该队列用于保存占用寄存器号的操作名称,每个寄存器号占用一项。
如图5所示,步骤3)的详细步骤包括:
3.1)判断所述空闲寄存器队列中是否有空闲的寄存器号可分配,若存在则跳转执行步骤3.2);否则,跳转重新执行步骤3.1);
3.2)从所述空闲寄存器队列中取出一个寄存器号;
3.3)将取出的寄存器号存入所述合并队列中;
3.4)将取出的寄存器号所占用寄存器的操作名称存入所述映射队列中;
3.5)判断是否满足操作所需寄存器号数量,如果已经满足操作所需寄存器号数量,则跳转执行步骤2);否则,跳转执行步骤3.2)。
本实施例中,当在流水线前端监测到uop_0需要分配寄存器号时,首先根据uop_0的实际情况从空闲队列中取出两个寄存器号tag_0和tag_1(本实施例中uop_0仅需要两个寄存器);然后将uop_0所占用的寄存器号tag_0和tag_1存入taglist_q中的uop_0项中;最后将tag_0和tag_1对应的操作名称uop_0存入tagmap_q中进行标记。
如图6所示,步骤4)的详细步骤包括:
4.1)根据寄存器号查询所述映射队列查找待释放寄存器号对应的操作名称,如果查找成功则跳转执行步骤4.2);否则,结束并跳转执行步骤4.7);
4.2)根据待释放寄存器号对应的操作名称查询所述合并队列找到该操作占用的所有寄存器号,如果查找成功则跳转执行步骤4.3);否则,结束并跳转执行步骤4.7);
4.3)根据操作名称查询所述合并队列找到该操作占用的所有寄存器号;
4.4)将该操作占用的所有寄存器号添加到所述空闲寄存器队列中;
4.5)删除所述合并队列中的相应信息;
4.6)删除所述映射队列中的相应信息;
4.7)跳转执行步骤2)。
本实施例中,当在流水线后端监测到tag_0可以释放时,首先根据寄存器号tag_0查询tagmap_q,找到tag_0对应的操作名称为uop_0;然后根据uop_0查询taglist_q,找到该操作占用的所有寄存器号为tag_0和tag_1;将该操作占用的所有寄存器号tag_0和tag_1添加到freetag_q中;最后删除taglist_q[uop_0]、tagmap_q[tag_0]和tagmap_q[tag_1]。在流水线后端监测到tag_1可释放时,根据寄存器号tag_1查询tagmap_q,发现该队列中tag_1的相关信息不存在,说明该寄存器号已释放,无需再次进行释放。
此外,本实施例还提供一种用于执行部件模块级验证的寄存器分配与释放部件,包括以自然数为索引的空闲寄存器队列、以操作名称为索引的合并队列、以寄存器号为索引的映射队列以及分配与释放管理单元;所述空闲寄存器队列的队列大小与待测设计中的寄存器数目一致,将所有待分配的寄存器号保存至空闲寄存器队列中,每个寄存器号占用一项;所述合并队列中每项也是一个队列,合并队列用于保存各操作占用的所有寄存器号,每个操作占用合并队列的一项;所述映射队列用于保存占用寄存器号的操作名称,每个寄存器号占用一项;所述分配与释放管理单元被编程以执行本实施例用于执行部件模块级验证的寄存器分配与释放方法的步骤2)~步骤4),在此不再赘述。
以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (4)

1.一种用于执行部件模块级验证的寄存器分配与释放方法,其特征在于实施步骤包括:
1)预先构造以自然数为索引的空闲寄存器队列、以操作名称为索引的合并队列以及以寄存器号为索引的映射队列;所述空闲寄存器队列的队列大小与待测设计中的寄存器数目一致,将所有待分配的寄存器号保存至空闲寄存器队列中,每个寄存器号占用一项;所述合并队列中每项也是一个队列,合并队列用于保存各操作占用的所有寄存器号,每个操作占用合并队列的一项;所述映射队列用于保存占用寄存器号的操作名称,每个寄存器号占用一项;
2)在验证环境中实时监控流水线前端的输入信号以及流水线后端的输出信号,当在流水线前端监测到某操作需要分配寄存器号时,跳转执行步骤3);当在流水线后端监测到某个寄存器号可以释放时,跳转执行步骤4);
3)从所述空闲寄存器队列中取出一个或多个寄存器号,存入所述合并队列中,并将对应的操作名称存入所述映射队列中进行标记;跳转执行步骤2);
4)先根据寄存器号查询所述映射队列找到待释放寄存器号对应的操作名称,再根据操作名称查询所述合并队列找到该操作占用的所有寄存器号,将该操作占用的所有寄存器号添加到所述空闲寄存器队列中,同时删除所述映射队列、合并队列中的相应信息。
2.根据权利要求1所述的用于执行部件模块级验证的寄存器分配与释放方法,其特征在于,步骤3)的详细步骤包括:
3.1)判断所述空闲寄存器队列中是否有空闲的寄存器号可分配,若存在则跳转执行步骤3.2);否则,跳转重新执行步骤3.1);
3.2)从所述空闲寄存器队列中取出一个寄存器号;
3.3)将取出的寄存器号存入所述合并队列中;
3.4)将取出的寄存器号所占用寄存器的操作名称存入所述映射队列中;
3.5)判断是否满足操作所需寄存器号数量,如果已经满足操作所需寄存器号数量,则跳转执行步骤2);否则,跳转执行步骤3.2)。
3.根据权利要求1所述的用于执行部件模块级验证的寄存器分配与释放方法,其特征在于,步骤4)的详细步骤包括:
4.1)根据寄存器号查询所述映射队列查找待释放寄存器号对应的操作名称,如果查找成功则跳转执行步骤4.2);否则,结束并跳转执行步骤4.7);
4.2)根据待释放寄存器号对应的操作名称查询所述合并队列找到该操作占用的所有寄存器号,如果查找成功则跳转执行步骤4.3);否则,结束并跳转执行步骤4.7);
4.3)根据操作名称查询所述合并队列找到该操作占用的所有寄存器号;
4.4)将该操作占用的所有寄存器号添加到所述空闲寄存器队列中;
4.5)删除所述合并队列中的相应信息;
4.6)删除所述映射队列中的相应信息;
4.7)跳转执行步骤2)。
4.一种用于执行部件模块级验证的寄存器分配与释放部件,其特征在于:包括以自然数为索引的空闲寄存器队列、以操作名称为索引的合并队列、以寄存器号为索引的映射队列以及分配与释放管理单元;所述空闲寄存器队列的队列大小与待测设计中的寄存器数目一致,将所有待分配的寄存器号保存至空闲寄存器队列中,每个寄存器号占用一项;所述合并队列中每项也是一个队列,合并队列用于保存各操作占用的所有寄存器号,每个操作占用合并队列的一项;所述映射队列用于保存占用寄存器号的操作名称,每个寄存器号占用一项;所述分配与释放管理单元被编程以执行权利要求1~3中任意一项所述用于执行部件模块级验证的寄存器分配与释放方法的步骤2)~步骤4)。
CN201810668296.2A 2018-06-26 2018-06-26 用于执行部件模块级验证的寄存器分配与释放方法及部件 Active CN109002322B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810668296.2A CN109002322B (zh) 2018-06-26 2018-06-26 用于执行部件模块级验证的寄存器分配与释放方法及部件

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810668296.2A CN109002322B (zh) 2018-06-26 2018-06-26 用于执行部件模块级验证的寄存器分配与释放方法及部件

Publications (2)

Publication Number Publication Date
CN109002322A CN109002322A (zh) 2018-12-14
CN109002322B true CN109002322B (zh) 2021-07-23

Family

ID=64600105

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810668296.2A Active CN109002322B (zh) 2018-06-26 2018-06-26 用于执行部件模块级验证的寄存器分配与释放方法及部件

Country Status (1)

Country Link
CN (1) CN109002322B (zh)

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005129001A (ja) * 2003-09-30 2005-05-19 Toshiba Corp プログラム実行装置、マイクロプロセッサ及びプログラム実行方法
CN103955356B (zh) * 2014-04-24 2017-05-10 深圳中微电科技有限公司 多线程处理器中通用寄存器组的分配方法及装置
CN104317555B (zh) * 2014-10-15 2017-03-15 中国航天科技集团公司第九研究院第七七一研究所 Simd处理器中写合并和写撤销的处理装置和方法
CN106648544B (zh) * 2015-11-02 2019-03-26 龙芯中科技术有限公司 寄存器的分配方法和装置
CN107992376B (zh) * 2017-11-24 2020-10-30 西安微电子技术研究所 Dsp处理器数据存储器主动容错方法和装置

Also Published As

Publication number Publication date
CN109002322A (zh) 2018-12-14

Similar Documents

Publication Publication Date Title
US10877766B2 (en) Embedded scheduling of hardware resources for hardware acceleration
US9715389B2 (en) Dependent instruction suppression
US8285974B2 (en) Age matrix for queue entries dispatch order
DE112005002173B4 (de) Prozessor mit Abhängigkeitsmechanismus, um vorherzusagen, ob ein Ladevorgang von einem älteren Schreibvorgang abhängig ist
US9817667B2 (en) Techniques for scheduling operations at an instruction pipeline
US8578216B2 (en) Execution history tracing method
US20100217945A1 (en) Fast context save in transactional memory
US20170004005A1 (en) Exception handling in microprocessor systems
US8521998B2 (en) Instruction tracking system for processors
US20050138338A1 (en) Register alias table cache
CN107278296A (zh) 用于响应于事务执行生成跟踪数据的装置和方法
US9940168B2 (en) Resource sharing using process delay
CN104049947B (zh) 基于动态重命名的矢量寄存器堆的寄存器重新配置
CN111638911A (zh) 一种处理器、指令执行设备及方法
CN104008021A (zh) 针对多数据体系结构的精确的异常信号发送
US20140250289A1 (en) Branch Target Buffer With Efficient Return Prediction Capability
JP2008310693A (ja) 情報処理装置
US9727340B2 (en) Hybrid tag scheduler to broadcast scheduler entry tags for picked instructions
US9304777B1 (en) Method and apparatus for determining relative ages of entries in a queue
CN109002322B (zh) 用于执行部件模块级验证的寄存器分配与释放方法及部件
US9507725B2 (en) Store forwarding for data caches
US9959122B2 (en) Single cycle instruction pipeline scheduling
EP4363991A1 (en) Providing atomicity for complex operations using near-memory computing
CN115640047A (zh) 指令操作方法及装置、电子装置及存储介质
CN101819608B (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
CB02 Change of applicant information
CB02 Change of applicant information

Address after: 300452 Building 5, Xin'an pioneer Plaza, Binhai New Area marine high tech Development Zone, Tianjin

Applicant after: Feiteng Information Technology Co.,Ltd.

Address before: 300452 Building 5, Xin'an pioneer Plaza, Binhai New Area marine high tech Development Zone, Tianjin

Applicant before: TIANJIN FEITENG INFORMATION TECHNOLOGY Co.,Ltd.

TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20210616

Address after: Room 30, 19 / F, T3 building, Fuxing world financial center, 303 Furong Middle Road, Dongfeng Road Street, Changsha City, Hunan Province, 410003

Applicant after: Feiteng Technology (Changsha) Co.,Ltd.

Applicant after: Feiteng Information Technology Co.,Ltd.

Address before: 300452 Building 5, Xin'an pioneer Plaza, Binhai New Area marine high tech Development Zone, Tianjin

Applicant before: Feiteng Information Technology Co.,Ltd.

GR01 Patent grant
GR01 Patent grant