CN116700792A - 一种指令流寄存器的映射方法、结构、存储介质及芯片 - Google Patents
一种指令流寄存器的映射方法、结构、存储介质及芯片 Download PDFInfo
- Publication number
- CN116700792A CN116700792A CN202310686098.XA CN202310686098A CN116700792A CN 116700792 A CN116700792 A CN 116700792A CN 202310686098 A CN202310686098 A CN 202310686098A CN 116700792 A CN116700792 A CN 116700792A
- Authority
- CN
- China
- Prior art keywords
- instruction
- register
- source register
- logic source
- logic
- 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
Links
- 238000013507 mapping Methods 0.000 title claims abstract description 96
- 238000000034 method Methods 0.000 title claims abstract description 57
- 230000008569 process Effects 0.000 claims description 25
- 230000003993 interaction Effects 0.000 claims description 5
- 238000012795 verification Methods 0.000 abstract description 26
- 238000013461 design Methods 0.000 description 10
- 238000010586 diagram Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 230000007547 defect Effects 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30105—Register structure
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
- G06F9/3848—Speculative instruction execution using hybrid branch prediction, e.g. selection between prediction techniques
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
Abstract
本发明提供一种指令流寄存器的映射方法、存储介质及芯片,对指令流进行分组,并设置同时处于执行操作的指令组数;将每一条指令内的逻辑源寄存器进行比较,找出相同的逻辑源寄存器,并将相同的逻辑源寄存器设置标识符;将每一组内最后一条指令的各个逻辑源寄存器分别与该组内其他指令的逻辑源寄存器进行比较,找出指令之间相同的逻辑源寄存器并设置识别符;将所有指令中没有设置标识符与识别符的逻辑源寄存器进行映射操作。通过指令内逻辑源寄存器的比较设置标识符,通过指令之间的比较设置识别符,基于标识符与识别符以确定真正需要遍历寄存器映射表的逻辑源寄存器,极大地节约芯片资源,提高验证效率,缩短验证的时间,具有广泛地适用性。
Description
技术领域
本发明涉及芯片验证技术领域,特别是涉及一种指令流寄存器的映射方法、结构、存储介质及芯片。
背景技术
随着集成电路向微观化发展,芯片验证的复杂度越来越高,验证所消耗的时间越来越长,为了降低验证的复杂度并缩短验证时间,通常采用分层验证平台去实施验证过程,以避免在单元级的设计缺陷流入到下一级验证流程当中,从而导致整个芯片数据流的紊乱,同时在芯片测试的流程中,单元级的测试用例可以复用至下一级验证流程当中。芯片内核的功能验证也采用了分层验证平台,通过寄存器映射的方式实施功能验证,而寄存器在映射之前往往需要遍历寄存器映射表,会存在相同寄存器重复遍历的现象,重复遍历会极大地消耗芯片资源,降低功能验证的效率,使验证时间大幅度增加。
应该注意,上面对技术背景的介绍只是为了方便对本申请的技术方案进行清楚、完整的说明,并方便本领域技术人员的理解而阐述的。不能仅仅因为这些方案在本申请的背景技术部分进行了阐述而认为上述技术方案为本领域技术人员所公知。
发明内容
鉴于以上所述现有技术的缺点,本发明的目的在于提供一种指令流寄存器的映射方法、结构、存储介质及芯片,用于解决现有技术中对芯片进行功能验证时,芯片资源消耗过大、验证效率不足以及验证时间过大的问题。
为实现上述目的及其他相关目的,本发明提供一种指令流寄存器的映射方法,所述映射方法至少包括:
步骤1:基于芯片的内核体系结构与资源对指令流进行分组,并设置同时处于执行操作的指令组数;
步骤2:将每一条指令内的逻辑源寄存器进行比较,找出相同的逻辑源寄存器,并将相同的逻辑源寄存器设置标识符;
步骤3:将每一组内最后一条指令的各个逻辑源寄存器分别与该组内其他指令的逻辑源寄存器进行比较,找出指令之间相同的逻辑源寄存器并设置识别符;
步骤4:将所有指令中没有设置标识符与识别符的逻辑源寄存器进行映射操作。
可选地,每一组指令的种类包括:分支指令、读写寄存器指令、定点指令及浮点指令;组内每一类指令的条数小于等于2。
可选地,所述基于芯片的内核体系结构与资源对指令流进行分组包括:
步骤11:判断指令是否为分支指令,如果是分支指令则继续判断分支指令计数器是否大于预设数值;如果大于预设数值,则为指令指定的组号递增1;如果小于等于预设数值,则指令指定的组号不变;当组资源使用完毕,则等待指令执行完毕,对组资源进行释放;如果指令不是分支指令,则执行步骤12;
步骤12:判断指令是否为读写寄存器指令,如果是读写寄存器指令则继续判断读写寄存器指令计数器是否大于预设数值;如果大于预设数值,则为指令指定的组号递增1;如果小于等于预设数值,则指令指定的组号不变;当组资源使用完毕,则等待指令执行完毕,对组资源进行释放;如果指令不是读写寄存器指令,则执行步骤13;
步骤13:判断指令是否为定点指令,如果是定点指令则继续判断定点指令计数器是否大于预设数值;如果大于预设数值,则为指令指定的组号递增1;如果小于等于预设数值,则指令指定的组号不变;当组资源使用完毕,则等待指令执行完毕,对组资源进行释放;如果指令不是定点指令,则执行步骤14;
步骤14:判断指令是否为浮点指令,如果是浮点指令则继续判断浮点指令计数器是否大于预设数值;如果大于预设数值,则为指令指定的组号递增1;如果小于等于预设数值,则指令指定的组号不变;当组资源使用完毕,则等待指令执行完毕,对组资源进行释放;如果指令不是浮点指令,则执行步骤15;
步骤15:判断指令是否为指令流中的最后一条指令,如果不是,则重复执行步骤11至步骤14;如果是,则结束分组的流程。可选地,所述将每一条指令内的逻辑源寄存器进行比较包括:
步骤21:从指令流中取出一条指令,判断该指令中第一逻辑源寄存器与第二逻辑源寄存器是否有效;如果无效,则执行步骤24;如果有效,则判断第一逻辑源寄存器与第二逻辑源寄存器是否相等;如果第一逻辑源寄存器与第二逻辑源寄存器相等,则设置第一逻辑源寄存器与第二逻辑源寄存器相等的标识符,然后进入步骤22;如果第一逻辑源寄存器与第二逻辑源寄存器不相等,则直接进入步骤22;
步骤22:判断该指令中第一逻辑源寄存器与第三逻辑源寄存器是否有效;如果无效,则执行步骤24;如果有效,则判断第一逻辑源寄存器与第三逻辑源寄存器是否相等;如果第一逻辑源寄存器与第三逻辑源寄存器相等,则设置第一逻辑源寄存器与第三逻辑源寄存器相等的标识符,然后进入步骤23;如果第一逻辑源寄存器与第三逻辑源寄存器不相等,则直接进入步骤23;
步骤23:判断该指令中第二逻辑源寄存器与第三逻辑源寄存器是否有效;如果无效,则执行步骤24;如果有效,则判断第二逻辑源寄存器与第三逻辑源寄存器是否相等;如果第二逻辑源寄存器与第三逻辑源寄存器相等,则设置第二逻辑源寄存器与第三逻辑源寄存器相等的标识符,然后进入步骤24;如果第二逻辑源寄存器与第三逻辑源寄存器不相等,则直接进入步骤24;
步骤24:判断该指令是否是指令流中最后一条指令,如果不是,则重复执行步骤21至步骤23;如果是,则结束指令内的逻辑源寄存器的比较过程。
可选地,所述将每一组内最后一条指令的各个逻辑源寄存器分别与该组内其他指令的逻辑源寄存器进行比较包括:
步骤31:从指令流中取出一组指令,找出组内全部的有效指令,找出从第一条指令到最后一条指令中有效的逻辑源寄存器;
步骤32:判断第一条指令的逻辑源寄存器与第二条指令的逻辑源寄存器是否分别相同,如果相同,则设置识别符;如果不同,判断第一条指令的逻辑源寄存器与第三条指令的逻辑源寄存器是否分别相同,如果相同,则设置识别符;如果不同,则判断第一条指令的逻辑源寄存器与第四条指令的逻辑源寄存器是否分别相同;以此类推,直到第一条指令的逻辑源寄存器与最后一条指令的逻辑源寄存器进行对比;
步骤33:参照步骤32的操作,将第二条指令的逻辑源寄存器分别与第三条指令的逻辑源寄存器、第四条指令的逻辑源寄存器直至最后一条指令的逻辑源寄存器进行对比;
步骤34:判断是否执行到组内最后一条指令,如果否,则从指令流中取出下一组指令依据步骤31至步骤33的过程执行操作;如果是,则结束指令之间的逻辑源寄存器的比较过程。
可选地,所述将所有指令中没有设置标识符与识别符的逻辑源寄存器进行映射操作包括:
步骤41:从指令流中取出一条指令,从该指令中取出逻辑源寄存器,判断逻辑源寄存器是否为目的寄存器,如果不是目的寄存器则进入步骤42;如果是目的寄存器,则进入步骤46;
步骤42:查找每一条指令内的逻辑源寄存器是否存在标识符,如果不存在标识符,则进入步骤43;如果存在标识符,则进入步骤48;
步骤43:查找每一组内指令之间的逻辑源寄存器是否存在识别符,如果不存在识别符,则进入步骤44;如果存在识别符,则进入步骤48;
步骤44:遍历芯片的寄存器映射表,查找逻辑源寄存器的标识部分是否存在,如果不存在,则该逻辑源寄存器未被映射;如果存在,则查看该逻辑源寄存器是否有效,进一步判断逻辑源寄存器是否已经映射;
步骤45:如果逻辑源寄存器未映射,则进入步骤46;如果逻辑源寄存器已经映射,则进入步骤48;
步骤46:从芯片中找出暂未使用的物理寄存器,使物理寄存器与逻辑源寄存器配对;如果芯片中无空闲的物理寄存器,则等待物理寄存器被释放;
步骤47:将配对的物理寄存器与逻辑源寄存器写入寄存器映射表;
步骤48:判断逻辑源寄存器是否是指令的最后一条有效的逻辑源寄存器,如果不是,则从指令中找出下一个逻辑源寄存器并重复执行步骤41至步骤48;如果是,则进入步骤49;
步骤49:判断指令是否是指令流中最后一条指令,如果不是,则从指令流中取出下一条指令并重复执行步骤41至步骤48;如果是,则结束映射操作。
可选地,当逻辑源寄存器为目的寄存器时,逻辑源寄存器直接从物理寄存器空闲列表找出空闲的物理寄存器,进行匹配成对,并写入映射表。
为实现上述目的及其他相关目的,本发明提供一种存储介质,所述存储介质包括一个或多个程序,所述程序用于执行所述映射方法。
为实现上述目的及其他相关目的,本发明提供一种指令流寄存器的映射结构,所述映射结构包括:分组结构、空闲组结构、逻辑源寄存器比较结构、映射表结构及空闲寄存器结构,其中:所述分组结构接入指令流;所述空闲组结构与所述分组结构在资源紧张时进行数据交互;所述逻辑源寄存器比较结构接入经所述分组结构处理的数据;所述映射表结构用于遍历所述逻辑源寄存器比较结构处理的数据以进行映射操作;所述空闲寄存器结构与所述映射表结构在资源紧张时进行数据交互。
为实现上述目的及其他相关目的,本发明提供一种芯片,所述芯片包括一个或多个所述存储介质,用于进行寄存器映射。
如上所述,本发明的一种指令流寄存器的映射方法、结构、存储介质及芯片,具有以下
有益效果:
本发明的指令流寄存器的映射方法、结构、存储介质及芯片,通过分组控制指令的数量,通过指令内逻辑源寄存器的比较设置标识符,通过指令之间的比较设置识别符,基于标识符与识别符以确定真正需要遍历寄存器映射表的逻辑源寄存器,极大地节约芯片资源,提高验证效率,缩短验证的时间,具有广泛地适用性。
附图说明
图1显示为本发明的指令流寄存器的映射方法的流程示意图。
图2显示为本发明的分组的流程示意图。
图3显示为本发明的对指令流分组的功能流程示意图。
图4显示为本发明的指令内的逻辑源寄存器进行比较的流程示意图。
图5显示为本发明的每一条指令内的逻辑源寄存器进行比较的功能流程示意图。
图6显示为本发明的指令之间的逻辑源寄存器进行比较的流程示意图。
图7显示为本发明的将每一组内最后一条指令的各个逻辑源寄存器分别与该组内其他指令的逻辑源寄存器进行比较的功能流程示意图。
图8显示为本发明的映射操作的流程示意图。
图9显示为本发明的将所有指令中没有设置标识符与识别符的逻辑源寄存器进行映射操作的功能流程示意图。
图10显示为本发明的指令流寄存器的映射结构的示意图。
附图标记说明
11 分组结构
12 空闲组结构
13 逻辑源寄存器比较结构
14 映射表结构
15 空闲寄存器结构
S1~S4 步骤
S11~S15 步骤
S21~S24 步骤
S31~S34 步骤
S41~S49 步骤
具体实施方式
以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。
请参阅图1至图6。需要说明的是,本实施例中所提供的图示仅以示意方式说明本发明的基本构想,图式中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。
如图1至图5所示,本实施提供了一种指令流寄存器的映射方法,所述映射方法包括:
如图1所示,步骤S1:基于芯片的内核体系结构与资源对指令流进行分组,并设置同时处于执行操作的指令组数。
需要说明的是,每一组指令的种类包括:分支指令、读写寄存器指令、定点指令及浮点指令,其中,定点指令是指固定小数点的运算指令,浮点指令是指浮动小数点的运算指令;组内每一类指令的条数小于等于预设数值,需要补充说明的是,预设数值应根据芯片的内核体系结构与资源进行设置,在X86体系中,通常将预设数值设置为2,也就是说每个组内最多8条指令,另外还有一些其他条件,例如,有些指令必须是组内第一条、有些指令必须是组内最后一条等,具体地条件需根据芯片内核体系结构而定,内核是指一个提供硬件抽象层、磁盘及文件系统控制、多任务等功能的系统软件。内核是操作系统最基本的部分。它是为众多应用程序提供对计算机硬件的安全访问的一部分软件,这种访问是有限的,并且内核决定一个程序在什么时候对某部分硬件操作多长时间。直接对硬件操作是非常复杂的,所以内核通常提供一种硬件抽象的方法来完成这些操作。硬件抽象隐藏了复杂性,为应用软件和硬件提供了一套简洁,统一的接口,使程序设计更为简单,现有的内核主要分类包括:宏内核(单内核)、微内核、混合内核及外内核,内核具体的描述在这里就不一一赘述。
具体地,作为示例,如图2所示,所述基于芯片的内核体系结构与资源对指令流进行分组包括:
步骤S11:判断指令是否为分支指令,如果是分支指令则继续判断分支指令计数器是否大于预设数值;如果大于预设数值,则为指令指定的组号递增1;如果小于等于预设数值,则指令指定的组号不变;当组资源使用完毕,则等待指令执行完毕,对组资源进行释放;如果指令不是分支指令,则执行步骤S12。
步骤S12:判断指令是否为读写寄存器指令,如果是读写寄存器指令则继续判断读写寄存器指令计数器是否大于预设数值;如果大于预设数值,则为指令指定的组号递增1;如果小于等于预设数值,则指令指定的组号不变;当组资源使用完毕,则等待指令执行完毕,对组资源进行释放;如果指令不是读写寄存器指令,则执行步骤S13。
步骤S13:判断指令是否为定点指令,如果是定点指令则继续判断定点指令计数器是否大于预设数值;如果大于预设数值,则为指令指定的组号递增1;如果小于等于预设数值,则指令指定的组号不变;当组资源使用完毕,则等待指令执行完毕,对组资源进行释放;如果指令不是定点指令,则执行步骤S14。
步骤S14:判断指令是否为浮点指令,如果是浮点指令则继续判断浮点指令计数器是否大于预设数值;如果大于预设数值,则为指令指定的组号递增1;如果小于等于预设数值,则指令指定的组号不变;当组资源使用完毕,则等待指令执行完毕,对组资源进行释放;如果指令不是浮点指令,则执行步骤S15。
步骤S15:判断指令是否为指令流中的最后一条指令,如果不是,则重复执行步骤11至步骤14;如果是,则结束分组的流程。
图3展示了对指令流分组的功能流程,是对图2中的流程的进一步细化,工程人员基于该功能流程进行架构设计与代码设置,具体的架构设计与代码设置过程在这里就不一一赘述。
需要说明的是,还可以通过采用流水线的工作方式将指令流细分成若干分组,每个分组都由专门的功能部件进行处理,一个计算任务的各个分组由流水线上的各个功能部件轮流进行处理,最终完成分组的流程;也可以采用指令的相关性对指令流细分成若干分组,具体地,利用数据相关、资源相关、控制相关的方式使各个分组尽最大限度减少相关性冲突,从而提高指令的运行效率,避免出现指令在运行中出现断流现象等,只要保证寄存器映射的效率、节省验证的时间,任意对指令流分组的流程均适用,并不以本实施例为限。
如图1所示,步骤S2:将每一条指令内的逻辑源寄存器进行比较,找出相同的逻辑源寄存器,并将相同的逻辑源寄存器设置标识符。需要说明的是,步骤S2的过程不包括目的寄存器,目的寄存器是指在后续的映射过程中不需要查询映射表而直接映射为物理寄存器。逻辑源寄存器是指程序经过编译之后形成的带有编号的寄存器,但是这个编号不是CPU需要执行的寄存器编号,只有逻辑源寄存器经过映射后形成真正的编号才能被CPU执行。指令内逻辑源寄存器的比较操作主要是找出指令内相同的逻辑源寄存器,在逻辑源寄存器进行映射十,避免相同的逻辑源寄存器在映射过程中重复遍历映射表,如果映射表过大,则会消耗大量的时间进行读取操作和比较操作。进一步地,指令根据操作数分为单操作数指令、双操作数指令和三源操作数指令,有的指令只需要一个操作数,即一个寄存器编号,例如方根操作需要一个操作数;加、减、乘、除指令各需要两个操作数;乘加指令需要三个源操作数,而操作数的设置跟内核体系结构有关,再这里就不一一赘述。
具体地,作为示例,如图4所示,所述将每一条指令内的逻辑源寄存器进行比较包括:
步骤S21:从指令流中取出一条指令,判断该指令中第一逻辑源寄存器与第二逻辑源寄存器是否有效;如果无效,则执行步骤S24;如果有效,则判断第一逻辑源寄存器与第二逻辑源寄存器是否相等;如果第一逻辑源寄存器与第二逻辑源寄存器相等,则设置第一逻辑源寄存器与第二逻辑源寄存器相等的标识符,然后进入步骤S22;如果第一逻辑源寄存器与第二逻辑源寄存器不相等,则直接进入步骤S22。
步骤S22:判断该指令中第一逻辑源寄存器与第三逻辑源寄存器是否有效;如果无效,则执行步骤S24;如果有效,则判断第一逻辑源寄存器与第三逻辑源寄存器是否相等;如果第一逻辑源寄存器与第三逻辑源寄存器相等,则设置第一逻辑源寄存器与第三逻辑源寄存器相等的标识符,然后进入步骤S23;如果第一逻辑源寄存器与第三逻辑源寄存器不相等,则直接进入步骤S23。
步骤S23:判断该指令中第二逻辑源寄存器与第三逻辑源寄存器是否有效;如果无效,则执行步骤S24;如果有效,则判断第二逻辑源寄存器与第三逻辑源寄存器是否相等;如果第二逻辑源寄存器与第三逻辑源寄存器相等,则设置第二逻辑源寄存器与第三逻辑源寄存器相等的标识符,然后进入步骤S24;如果第二逻辑源寄存器与第三逻辑源寄存器不相等,则直接进入步骤S24。
步骤S24:判断该指令是否是指令流中最后一条指令,如果不是,则重复执行步骤S21至步骤S23;如果是,则结束指令内的逻辑源寄存器的比较过程。
图5展示了将每一条指令内的逻辑源寄存器进行比较的功能流程,是对图4中的流程的进一步细化,工程人员基于该功能流程进行架构设计与代码设置,具体的架构设计与代码设置过程在这里就不一一赘述。
需要说明的是,进行比较的逻辑源寄存器不包括目的寄存器,因为在逻辑源寄存器进行映射时,目的寄存器可以直接从物理寄存器的空闲列表找出空闲的物理寄存器,然后进行匹配成对并写入映射表,从而解决“写后写”和“写后读”的冒险问题。需要进一步说明的是,还可以采用轮询的方式对指令内的逻辑源寄存器进行比较,只要保证寄存器映射的效率、节省验证的时间,任意对对指令内的逻辑源寄存器进行比较的方式均适用,并不以本实施例为限。
如图1所示,步骤S3:将每一组内最后一条指令的各个逻辑源寄存器分别与该组内其他指令的逻辑源寄存器进行比较,找出指令之间相同的逻辑源寄存器并设置识别符。需要说明的是,步骤S3的过程不包括目的寄存器,指令之间的比较主要是找出指令之间相同的逻辑源寄存器,在逻辑源寄存器进行映射时,避免相同逻辑源寄存器在映射过程中重复遍历映射表,节省对映射表进行读取操作和比较操作的时间,加速验证工作的进行。指令之间进行比较的逻辑源寄存器也不包括目的寄存器。
具体地,作为示例,如图6所示,指令之间的逻辑源寄存器进行比较的流程包括:
步骤S31:从指令流中取出一组指令,找出组内全部的有效指令,找出从第一条指令到最后一条指令中有效的逻辑源寄存器。
步骤S32:判断第一条指令的逻辑源寄存器与第二条指令的逻辑源寄存器是否分别相同,如果相同,则设置识别符;如果不同,判断第一条指令的逻辑源寄存器与第三条指令的逻辑源寄存器是否分别相同,如果相同,则设置识别符;如果不同,则判断第一条指令的逻辑源寄存器与第四条指令的逻辑源寄存器是否分别相同;以此类推,直到第一条指令的逻辑源寄存器与最后一条指令的逻辑源寄存器进行对比。
步骤S33:参照步骤S32的操作,将第二条指令的逻辑源寄存器分别与第三条指令的逻辑源寄存器、第四条指令的逻辑源寄存器直至最后一条指令的逻辑源寄存器进行对比。
步骤S34:判断是否执行到组内最后一条指令,如果否,则从指令流中取出下一组指令依据步骤S31至步骤S33的过程执行操作;如果是,则结束指令之间的逻辑源寄存器的比较过程。
图7展示了将每一组内最后一条指令的各个逻辑源寄存器分别与该组内其他指令的逻辑源寄存器进行比较的功能流程,是对图6中的流程的进一步细化,工程人员基于该功能流程进行架构设计与代码设置,具体的架构设计与代码设置过程在这里就不一一赘述。
需要说明的是,还可以采用轮询的方式对指令之间的逻辑源寄存器进行比较,只要保证寄存器映射的效率、节省验证的时间,任意对对指令之间的逻辑源寄存器进行比较的方式均适用,并不以本实施例为限。
如图1所示,步骤S4:将所有指令中没有设置标识符与识别符的逻辑源寄存器进行映射操作。需要说明的是,寄存器映射是将逻辑源寄存器映射为物理寄存器的过程,在此过程中,应最大限度地消除寄存器的“写后写”和“读后写”冒险,减少映射后物理寄存器的相关性检测的工作量。
具体地,作为示例,如图8所示,所述将所有指令中没有设置标识符与识别符的逻辑源寄存器进行映射操作包括:
步骤S41:从指令流中取出一条指令,从该指令中取出逻辑源寄存器,判断逻辑源寄存器是否为目的寄存器,如果不是目的寄存器则进入步骤S42;如果是目的寄存器,则进入步骤S46。
步骤S42:查找每一条指令内的逻辑源寄存器是否存在标识符,如果不存在标识符,则进入步骤S43;如果存在标识符,则进入步骤S48。
步骤S43:查找每一组内指令之间的逻辑源寄存器是否存在识别符,如果不存在识别符,则进入步骤S44;如果存在识别符,则进入步骤S48。
步骤S44:遍历芯片的寄存器映射表,查找逻辑源寄存器的标识部分是否存在,如果不存在,则该逻辑源寄存器未被映射;如果存在,则查看该逻辑源寄存器是否有效,进一步判断逻辑源寄存器是否已经映射。
步骤S45:如果逻辑源寄存器未映射,则进入步骤S46;如果逻辑源寄存器已经映射,则进入步骤S48。
步骤S46:从芯片中找出暂未使用的物理寄存器,使物理寄存器与逻辑源寄存器配对;如果芯片中无空闲的物理寄存器,则等待物理寄存器被释放。
步骤S47:将配对的物理寄存器与逻辑源寄存器写入寄存器映射表。
步骤S48:判断逻辑源寄存器是否是指令的最后一条有效的逻辑源寄存器,如果不是,则从指令中找出下一个逻辑源寄存器并重复执行步骤S41至步骤S48;如果是,则进入步骤S49。
步骤S49:判断指令是否是指令流中最后一条指令,如果不是,则从指令流中取出下一条指令并重复执行步骤S41至步骤S48;如果是,则结束映射操作。
图9展示了将所有指令中没有设置标识符与识别符的逻辑源寄存器进行映射操作的功能流程,是对图8中的流程的进一步细化,进一步地,寄存器映射是将逻辑源寄存器映射为物理寄存器的过程,此过程中消除了寄存器的“写后写”和“读后写”冒险,减少了映射后物理寄存器的相关性检测的工作量。在图9中,“每一条指令内的逻辑源寄存器存在标识符”是用于判断当前的逻辑源寄存器是否与该指令内其他的逻辑源寄存器是否相同;“每一组内指令之间的逻辑源寄存器存在识别符”是用于判断当前的逻辑源寄存器是否与该组其他指令的逻辑源寄存器相同;“将目的寄存器与物理寄存器写入映射表”具体是指:当逻辑源寄存器为目的寄存器时,逻辑源寄存器(目的寄存器)直接从物理寄存器空闲列表找出空闲的物理寄存器,进行匹配成对,并写入映射表;工程人员基于该功能流程进行架构设计与代码设置,具体的架构设计与代码设置过程在这里就不一一赘述。
需要说明的是,寄存器是CPU内部用来存放数据的一些小型存储区域,用来暂时存放参与运算的数据和运算结果,其本质也是一种存储器。给具有特殊功能的内存块的首地址取一个具有特殊意义名称的过程就叫做寄存器映射。
本实施例还提供一种存储介质,所述存储介质包括一个或多个程序,所述程序用于执行本实施例提供的所述映射方法。
如图10所示,本实施例还提供一种指令流寄存器的映射结构,映射结构包括:分组结构11、空闲组结构12、逻辑源寄存器比较结构13、映射表结构14及空闲寄存器结构15,其中:分组结构11接入指令流;空闲组结构12与分组结构11在资源紧张时进行数据交互;逻辑源寄存器比较结构13接入经分组结构11处理的数据;映射表结构14用于遍历逻辑源寄存器比较结构13处理的数据以进行映射操作;空闲寄存器结构15与映射表结构14在资源紧张时进行数据交互。
本实施例还提供一种芯片,所述芯片包括一个或多个本实施例提供的所述存储介质,用于进行寄存器映射。需要说明的是,所述芯片可以采用ASIC(Application SpecificIntegrated Circuit,即专用集成电路,是针对特定用户要求和特定电子系统设计、制造的专有应用程序芯片,其计算能力和计算效率可根据算法需要进行定制)进行设置,也可以采用IP核(IP核,全称知识产权核,英文全称为intellectual property core,是在集成电路的可重用设计方法学中,指某一方提供的、形式为逻辑单元、芯片设计的可重用模組。IP核通常已经通过了设计验证,设计人员以IP核为基础进行设计,可以缩短设计所需的周期)进行设置,只要能进行本实施例所述的映射方法,任意芯片的设置形式均适用,并不以本实施例为限。
综上所述,本发明的一种指令流寄存器的映射方法、存储介质及芯片至少包括:基于芯片的内核体系结构与资源对指令流进行分组,并设置同时处于执行操作的指令组数;将每一条指令内的逻辑源寄存器进行比较,找出相同的逻辑源寄存器,并将相同的逻辑源寄存器设置标识符;将每一组内最后一条指令的各个逻辑源寄存器分别与该组内其他指令的逻辑源寄存器进行比较,找出指令之间相同的逻辑源寄存器并设置识别符;将所有指令中没有设置标识符与识别符的逻辑源寄存器进行映射操作。本发明的指令流寄存器的映射方法、存储介质及芯片,通过分组控制指令的数量,通过指令内逻辑源寄存器的比较设置标识符,通过指令之间的比较设置识别符,基于标识符与识别符以确定真正需要遍历寄存器映射表的逻辑源寄存器,极大地节约芯片资源,提高验证效率,缩短验证的时间,具有广泛地适用性。所以,本发明有效克服了现有技术中的种种缺点而具高度产业利用价值。
上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。
Claims (10)
1.一种指令流寄存器的映射方法,其特征在于,所述映射方法至少包括:
步骤1:基于芯片的内核体系结构与资源对指令流进行分组,并设置同时处于执行操作的指令组数;
步骤2:将每一条指令内的逻辑源寄存器进行比较,找出相同的逻辑源寄存器,并将相同的逻辑源寄存器设置标识符;
步骤3:将每一组内最后一条指令的各个逻辑源寄存器分别与该组内其他指令的逻辑源寄存器进行比较,找出指令之间相同的逻辑源寄存器并设置识别符;
步骤4:将所有指令中没有设置标识符与识别符的逻辑源寄存器进行映射操作。
2.根据权利要求1所述的映射方法,其特征在于:每一组指令的种类包括:分支指令、读写寄存器指令、定点指令及浮点指令。
3.根据权利要求2所述的映射方法,其特征在于:所述基于芯片的内核体系结构与资源对指令流进行分组包括:
步骤11:判断指令是否为分支指令,如果是分支指令则继续判断分支指令计数器是否大于预设数值;如果大于预设数值,则为指令指定的组号递增1;如果小于等于预设数值,则指令指定的组号不变;当组资源使用完毕,则等待指令执行完毕,对组资源进行释放;如果指令不是分支指令,则执行步骤12;
步骤12:判断指令是否为读写寄存器指令,如果是读写寄存器指令则继续判断读写寄存器指令计数器是否大于预设数值;如果大于预设数值,则为指令指定的组号递增1;如果小于等于预设数值,则指令指定的组号不变;当组资源使用完毕,则等待指令执行完毕,对组资源进行释放;如果指令不是读写寄存器指令,则执行步骤13;
步骤13:判断指令是否为定点指令,如果是定点指令则继续判断定点指令计数器是否大于预设数值;如果大于预设数值,则为指令指定的组号递增1;如果小于等于预设数值,则指令指定的组号不变;当组资源使用完毕,则等待指令执行完毕,对组资源进行释放;如果指令不是定点指令,则执行步骤14;
步骤14:判断指令是否为浮点指令,如果是浮点指令则继续判断浮点指令计数器是否大于预设数值;如果大于预设数值,则为指令指定的组号递增1;如果小于等于预设数值,则指令指定的组号不变;当组资源使用完毕,则等待指令执行完毕,对组资源进行释放;如果指令不是浮点指令,则执行步骤15;
步骤15:判断指令是否为指令流中的最后一条指令,如果不是,则重复执行步骤11至步骤14;如果是,则结束分组的流程。
4.根据权利要求1所述的映射方法,其特征在于:所述将每一条指令内的逻辑源寄存器进行比较包括:
步骤21:从指令流中取出一条指令,判断该指令中第一逻辑源寄存器与第二逻辑源寄存器是否有效;如果无效,则执行步骤24;如果有效,则判断第一逻辑源寄存器与第二逻辑源寄存器是否相等;如果第一逻辑源寄存器与第二逻辑源寄存器相等,则设置第一逻辑源寄存器与第二逻辑源寄存器相等的标识符,然后进入步骤22;如果第一逻辑源寄存器与第二逻辑源寄存器不相等,则直接进入步骤22;
步骤22:判断该指令中第一逻辑源寄存器与第三逻辑源寄存器是否有效;如果无效,则执行步骤24;如果有效,则判断第一逻辑源寄存器与第三逻辑源寄存器是否相等;如果第一逻辑源寄存器与第三逻辑源寄存器相等,则设置第一逻辑源寄存器与第三逻辑源寄存器相等的标识符,然后进入步骤23;如果第一逻辑源寄存器与第三逻辑源寄存器不相等,则直接进入步骤23;
步骤23:判断该指令中第二逻辑源寄存器与第三逻辑源寄存器是否有效;如果无效,则执行步骤24;如果有效,则判断第二逻辑源寄存器与第三逻辑源寄存器是否相等;如果第二逻辑源寄存器与第三逻辑源寄存器相等,则设置第二逻辑源寄存器与第三逻辑源寄存器相等的标识符,然后进入步骤24;如果第二逻辑源寄存器与第三逻辑源寄存器不相等,则直接进入步骤24;
步骤24:判断该指令是否是指令流中最后一条指令,如果不是,则重复执行步骤21至步骤23;如果是,则结束指令内的逻辑源寄存器的比较过程。
5.根据权利要求1所述的映射方法,其特征在于:所述将每一组内最后一条指令的各个逻辑源寄存器分别与该组内其他指令的逻辑源寄存器进行比较包括:
步骤31:从指令流中取出一组指令,找出组内全部的有效指令,找出从第一条指令到最后一条指令中有效的逻辑源寄存器;
步骤32:判断第一条指令的逻辑源寄存器与第二条指令的逻辑源寄存器是否分别相同,如果相同,则设置识别符;如果不同,判断第一条指令的逻辑源寄存器与第三条指令的逻辑源寄存器是否分别相同,如果相同,则设置识别符;如果不同,则判断第一条指令的逻辑源寄存器与第四条指令的逻辑源寄存器是否分别相同;以此类推,直到第一条指令的逻辑源寄存器与最后一条指令的逻辑源寄存器进行对比;
步骤33:参照步骤32的操作,将第二条指令的逻辑源寄存器分别与第三条指令的逻辑源寄存器、第四条指令的逻辑源寄存器直至最后一条指令的逻辑源寄存器进行对比;
步骤34:判断是否执行到组内最后一条指令,如果否,则从指令流中取出下一组指令依据步骤31至步骤33的过程执行操作;如果是,则结束指令之间的逻辑源寄存器的比较过程。
6.根据权利要求1所述的映射方法,其特征在于:所述将所有指令中没有设置标识符与识别符的逻辑源寄存器进行映射操作包括:
步骤41:从指令流中取出一条指令,从该指令中取出逻辑源寄存器,判断逻辑源寄存器是否为目的寄存器,如果不是目的寄存器则进入步骤42;如果是目的寄存器,则进入步骤46;
步骤42:查找每一条指令内的逻辑源寄存器是否存在标识符,如果不存在标识符,则进入步骤43;如果存在标识符,则进入步骤48;
步骤43:查找每一组内指令之间的逻辑源寄存器是否存在识别符,如果不存在识别符,则进入步骤44;如果存在识别符,则进入步骤48;
步骤44:遍历芯片的寄存器映射表,查找逻辑源寄存器的标识部分是否存在,如果不存在,则该逻辑源寄存器未被映射;如果存在,则查看该逻辑源寄存器是否有效,进一步判断逻辑源寄存器是否已经映射;
步骤45:如果逻辑源寄存器未映射,则进入步骤46;如果逻辑源寄存器已经映射,则进入步骤48;
步骤46:从芯片中找出暂未使用的物理寄存器,使物理寄存器与逻辑源寄存器配对;
如果芯片中无空闲的物理寄存器,则等待物理寄存器被释放;
步骤47:将配对的物理寄存器与逻辑源寄存器写入寄存器映射表;
步骤48:判断逻辑源寄存器是否是指令的最后一条有效的逻辑源寄存器,如果不是,则从指令中找出下一个逻辑源寄存器并重复执行步骤41至步骤48;如果是,则进入步骤49;
步骤49:判断指令是否是指令流中最后一条指令,如果不是,则从指令流中取出下一条指令并重复执行步骤41至步骤48;如果是,则结束映射操作。
7.根据权利要求6所述的映射方法,其特征在于:当逻辑源寄存器为目的寄存器时,逻辑源寄存器直接从物理寄存器空闲列表找出空闲的物理寄存器,进行匹配成对,并写入映射表。
8.一种存储介质,其特征在于:所述存储介质包括一个或多个程序,所述程序用于执行如权利要求1-7任意一项所述的映射方法。
9.一种指令流寄存器的映射结构,其特征在于:所述映射结构包括:分组结构、空闲组结构、逻辑源寄存器比较结构、映射表结构及空闲寄存器结构,其中:所述分组结构接入指令流;所述空闲组结构与所述分组结构在资源紧张时进行数据交互;所述逻辑源寄存器比较结构接入经所述分组结构处理的数据;所述映射表结构用于遍历所述逻辑源寄存器比较结构处理的数据以进行映射操作;所述空闲寄存器结构与所述映射表结构在资源紧张时进行数据交互。
10.一种芯片,其特征在于:所述芯片包括一个或多个如权利要求8所述的存储介质,用于进行寄存器映射。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310686098.XA CN116700792B (zh) | 2023-06-09 | 2023-06-09 | 一种指令流寄存器的映射方法、结构、存储介质及芯片 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310686098.XA CN116700792B (zh) | 2023-06-09 | 2023-06-09 | 一种指令流寄存器的映射方法、结构、存储介质及芯片 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116700792A true CN116700792A (zh) | 2023-09-05 |
CN116700792B CN116700792B (zh) | 2024-03-08 |
Family
ID=87835319
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310686098.XA Active CN116700792B (zh) | 2023-06-09 | 2023-06-09 | 一种指令流寄存器的映射方法、结构、存储介质及芯片 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116700792B (zh) |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101566942A (zh) * | 2009-06-03 | 2009-10-28 | 上海高性能集成电路设计中心 | 一种超标量微处理器中控制乱序发射的飞行记分牌装置 |
US20120278596A1 (en) * | 2011-04-26 | 2012-11-01 | Freescale Semiconductor, Inc. | Apparatus and method for checkpoint repair in a processing device |
US20150026435A1 (en) * | 2013-07-22 | 2015-01-22 | International Business Machines Corporation | Instruction set architecture with extensible register addressing |
US20170177344A1 (en) * | 2015-12-18 | 2017-06-22 | Intel Corporation | Instructions and Logic for Blend and Permute Operation Sequences |
WO2017168197A1 (en) * | 2016-04-01 | 2017-10-05 | Intel Corporation | Apparatus and method for improving performance of inter-strand communications |
CN110597556A (zh) * | 2019-09-09 | 2019-12-20 | 中国人民解放军国防科技大学 | 一种寄存器映射表检查点资源的管理方法、系统及介质 |
CN112631657A (zh) * | 2019-09-24 | 2021-04-09 | 阿里巴巴集团控股有限公司 | 用于字符串处理的字节比较方法以及指令处理装置 |
CN114356420A (zh) * | 2021-12-28 | 2022-04-15 | 海光信息技术股份有限公司 | 指令流水线的处理方法及装置、电子装置及存储介质 |
CN116107639A (zh) * | 2022-12-08 | 2023-05-12 | 海光信息技术股份有限公司 | 寄存器重命名、指令译码方法、装置、处理器及电子设备 |
-
2023
- 2023-06-09 CN CN202310686098.XA patent/CN116700792B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101566942A (zh) * | 2009-06-03 | 2009-10-28 | 上海高性能集成电路设计中心 | 一种超标量微处理器中控制乱序发射的飞行记分牌装置 |
US20120278596A1 (en) * | 2011-04-26 | 2012-11-01 | Freescale Semiconductor, Inc. | Apparatus and method for checkpoint repair in a processing device |
US20150026435A1 (en) * | 2013-07-22 | 2015-01-22 | International Business Machines Corporation | Instruction set architecture with extensible register addressing |
US20170177344A1 (en) * | 2015-12-18 | 2017-06-22 | Intel Corporation | Instructions and Logic for Blend and Permute Operation Sequences |
WO2017168197A1 (en) * | 2016-04-01 | 2017-10-05 | Intel Corporation | Apparatus and method for improving performance of inter-strand communications |
CN110597556A (zh) * | 2019-09-09 | 2019-12-20 | 中国人民解放军国防科技大学 | 一种寄存器映射表检查点资源的管理方法、系统及介质 |
CN112631657A (zh) * | 2019-09-24 | 2021-04-09 | 阿里巴巴集团控股有限公司 | 用于字符串处理的字节比较方法以及指令处理装置 |
CN114356420A (zh) * | 2021-12-28 | 2022-04-15 | 海光信息技术股份有限公司 | 指令流水线的处理方法及装置、电子装置及存储介质 |
CN116107639A (zh) * | 2022-12-08 | 2023-05-12 | 海光信息技术股份有限公司 | 寄存器重命名、指令译码方法、装置、处理器及电子设备 |
Non-Patent Citations (1)
Title |
---|
PRASHANT SINGH RAWAT等: ""Associative Instruction Reordering to Alleviate Register Pressure"", 《SC18: INTERNATIONAL CONFERENCE FOR HIGH PERFORMANCE COMPUTING, NETWORKING, STORAGE AND ANALYSIS》, pages 1 - 13 * |
Also Published As
Publication number | Publication date |
---|---|
CN116700792B (zh) | 2024-03-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20200336421A1 (en) | Optimized function assignment in a multi-core processor | |
US9672035B2 (en) | Data processing apparatus and method for performing vector processing | |
US10127043B2 (en) | Implementing conflict-free instructions for concurrent operation on a processor | |
US10355975B2 (en) | Latency guaranteed network on chip | |
JPH0778738B2 (ja) | ディジタル・コンピュータ・システム | |
US5895492A (en) | Processor associated blocking symbol controls for serializing the accessing of data resources in a computer system | |
US9720793B2 (en) | Implementing processor functional verification by generating and running constrained random irritator tests for multiple processor system and processor core with multiple threads | |
CN107436809A (zh) | 数据处理器 | |
US20220413849A1 (en) | Providing atomicity for complex operations using near-memory computing | |
CN110659115A (zh) | 具有硬件辅助任务调度的多线程处理器核 | |
WO2018075811A2 (en) | Network-on-chip architecture | |
CN116700792B (zh) | 一种指令流寄存器的映射方法、结构、存储介质及芯片 | |
US8250345B2 (en) | Structure for multi-threaded processing | |
CN112559403B (zh) | 一种处理器及其中的中断控制器 | |
US10481913B2 (en) | Token-based data dependency protection for memory access | |
US10691457B1 (en) | Register allocation using physical register file bypass | |
CN114035847B (zh) | 用于并行执行核心程序的方法和装置 | |
US20060212874A1 (en) | Inserting instructions | |
CN115269199A (zh) | 数据处理方法、装置、电子设备及计算机可读存储介质 | |
US7191315B2 (en) | Method and system for tracking and recycling physical register assignment | |
CN114510271A (zh) | 用于在单指令多线程计算系统中加载数据的方法和装置 | |
CN116244129B (zh) | 内存性能测试方法、装置及计算机设备 | |
CN118171711B (zh) | 一种指令调度方法、系统、存储介质和电子设备 | |
Levchenko et al. | Approaches to the development of various sets of nodes and blocks for the PDCS matching processor | |
US20240330045A1 (en) | Input locality-adaptive kernel co-scheduling |
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 |