CN106610816A - 一种risc‑cpu中指令集之间冲突的规避方法及*** - Google Patents

一种risc‑cpu中指令集之间冲突的规避方法及*** Download PDF

Info

Publication number
CN106610816A
CN106610816A CN201611246947.6A CN201611246947A CN106610816A CN 106610816 A CN106610816 A CN 106610816A CN 201611246947 A CN201611246947 A CN 201611246947A CN 106610816 A CN106610816 A CN 106610816A
Authority
CN
China
Prior art keywords
instruction
conflict
cpu
risc
relevant
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
CN201611246947.6A
Other languages
English (en)
Other versions
CN106610816B (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.)
Shandong Normal University
Original Assignee
Shandong Normal University
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 Shandong Normal University filed Critical Shandong Normal University
Priority to CN201611246947.6A priority Critical patent/CN106610816B/zh
Publication of CN106610816A publication Critical patent/CN106610816A/zh
Application granted granted Critical
Publication of CN106610816B publication Critical patent/CN106610816B/zh
Expired - Fee Related 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30134Register stacks; shift registers
    • 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/30141Implementation provisions of register files, e.g. ports
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3814Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3816Instruction alignment, e.g. cache line crossing
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • G06F9/3869Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking

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

本发明公开了一种RISC‑CPU中指令集之间冲突的规避方法及***,包括以下步骤:步骤一:根据RISC‑CPU中不同指令集之间的数据依赖关系,确定冲突类型;步骤二:针对当前指令,判断其是否需要对“寄存器堆”或者“存储器”访问,若是,则进行步骤三,否则,继续分析下条指令;步骤三:针对当前指令,界定“相干窗口”,在“相干窗口”内,寻找“相干指令”,并判断是否存在“相干指令”,若是,则进入步骤四,否则,判断为无读写冲突;步骤四:根据指令集之间的冲突类型,进行冲突方法的选择,使用具体的策略进行数据冲突解决同时保证流水线吞吐效率。

Description

一种RISC-CPU中指令集之间冲突的规避方法及***
技术领域
本发明涉及计算机处理技术领域,具体涉及一种RISC-CPU中指令集之间冲突的规避方法及***。
背景技术
由于在嵌入式RISC-CPU的设计(从CPU硬件指令集选择与指令定制设计,到对应编译器的设计)非常重要。
相关的技术如下:申请号为CN200810191060、申请人为“世意法(北京)半导体研发有限责任公司”发明专利申请“减少处理器中的指令冲突”,其解决指令冲破的策略是通过在指令发送(instruction issue)阶段,进行2种指令选择,送到后续的并行功能单元,看哪种指令无冲突,则仲裁出其中一种指令。该方法用于从多发射指令窗口中选择一个无冲突指令。
而专利申请号为CN200710087737的英特尔公司的发明专利申请“执行存储器消歧的技术”,其针对相邻的存储访问指令之间的冲突避免给出了解决方案,但没有涉及到其余相关指令集内部或者指令集之间的相干窗口的界定与相干指令之间的冲突避免。
西安电子科技大学的申请号为CN201310054280的发明专利申请“一种基于超长指令字专用指令集处理器的汇编器设计方法”,通过汇编器设计完成指令调度,利用寄存器重命名等方法以去除指令乱序执行引起的写后写(W-A-W)与读后写(W-A-R)冲突。
专利申请号为“CN200710087737”的英特尔公司的发明专利申请“执行存储器消歧的技术”,其针对相邻的存储访问指令之间的冲突避免给出了解决方案,但没有涉及到其余相关指令集内部或者指令集之间的相干窗口的界定与相干指令之间的冲突避免,并且与本专利所涉及的嵌入式RISC-CPU的流水阶段数不同,也没有提及本设计提出的从基于指令子集的原型CPU到全指令集的CPU硬件工程设计策略。
可见,现有技术中均没有从指令***的整体角度给出RAW相干冲突解决的方法,也没有提出从局部最小指令集的CPU原型到全部指令集的CPU硬件设计工程策略。
发明内容
为解决现有技术存在的不足,本发明公开了一种RISC-CPU中指令集之间冲突的规避方法及***,用于解决指令集之间冲突的机制,并且提供一种RISC-CPU针对读写冲突解决的智能控制硬件设备。
为实现上述目的,本发明的具体方案如下:
一种RISC-CPU中指令集之间冲突的规避方法,包括以下步骤:
步骤一:根据RISC-CPU中不同指令集之间的数据依赖关系,确定冲突类型;
步骤二:针对当前指令,判断其是否需要对“寄存器堆”或者“存储器”访问,若是,则进行步骤三,否则,继续分析下条指令;
步骤三:针对当前指令,界定“相干窗口”,在“相干窗口”内,寻找“相干指令”,并判断是否存在“相干指令”,若是,则进入步骤四,否则,判断为无读写冲突;
步骤四:根据指令集之间的冲突类型,进行冲突方法的选择,使用具体的策略进行数据冲突解决同时保证流水线吞吐效率。
进一步的,在步骤一中,针对RISC-CPU的架构、指令集及流水段进行统计分析并归类,把全部指令集合分成数据处理指令集、存储器访问指令集、分支指令集及立即数指令集。
进一步的,在步骤一中,在得到四种指令集后,统计分析指令集之间的冲突,多种指令集合之间的读写冲突类型的遍历、归类,得到存在的指令数据依赖引入的冲突:后面“相关指令”读取旧的寄存器数据或覆盖还没有读取的新的写入数据,即原来的指令顺序的数据依赖关系被破坏,引起功能错误;以及原来的指令流水线被中断,包括由于流水线被冻结或流水线***NOP指令引起的指令吞吐降低。
进一步的,冲突类型的归类具体为:数据处理、存储器访问、立即数指令集内部与它们之间。
进一步的,在步骤三中,“相干窗口”定义:对于超标量指令处理,不需要考虑指令的乱序执行,对于当前指令而言,如果其需要对某个寄存器进行写入,则需要在如下的窗口内:如果当前指令对寄存器堆中的具体寄存器或者存储器的某个位置进行操作;从当前指令往下面指令流推,从取出指令一直到当前指令结果提交所涉及到的指令序列。
进一步的,在步骤三中,“相干指令”定义:基于已经界定好的“相干窗口”,不考虑指令的乱序执行,对“当前指令”而言,如果其需要对某个寄存器或者存储器的某个偏移地址进行写入,则在“相干窗口”范围内,从当前指令往下面指令搜寻,同样也需要对“当前指令”进行写入或者读取的一个或者多个指令,这些存在数据依赖关系的指令,可能存在数据读写冲突,引起流水线的中断,降低指令吞吐效率。
进一步的,位于“相干窗口”内,冲突解决的方法,包括:(1)把当前命令提交阶段前的逻辑运算结果,直接馈入到下面的相干指令的运算单元,而不用等到当前指令已经提交,再把最后的结果馈入到后面指令的运算单元。(2)在当前指令的后面的相干指令的运算结果进行延迟版本,利用延迟版本的输出作为读写冲突解决的寄存器备份资源。
进一步的,步骤四中,冲突方法具体包括:
(1),数据在最终运算结果提交前的,中间运算数据提前前馈,中间运算数据提前前馈即不需要到最后的提交阶段,就直接馈入到下个指令的输入端;
(2),数据在最终运算结果提交前的延迟版本前馈;
(3),中间运算结果的流水延迟版本与原运算版本并存,在下个相干指令的流水段落中,增加额外的延迟版本寄存器,延迟一拍或几拍,同时保留原来的正常流水段中的寄存器版本;
(4),原来流水线不冻结策略;
(5),不使用***NOP指令的方法。
进一步的,具体的,ADD与XOR指令的RAW冲突解决:把ADD指令的运算结果提前馈入到XOR作为输入,不必等到ADD指令提交再执行;
STORE与LOAD指令的RAW冲突解决:STORE的结果作为LOAD的地址计算输入,通过在LOAD指令前面,添加延迟后的寄存器;
ADD与STORE指令的RAW冲突解决:ADD指令的运算结果直接馈入到下一级作为偏移地址,进行STORE命令寻址地址的计算;
LOAD与ADD指令的RAW冲突解决:LOAD指令的结果直接作为ADD的输入,ADD的中间结果延迟一拍的版本作为DMEM访问的偏移地址。
进一步的,在步骤一中,将可能存在的所有读写冲突归类后,存储在本地档案表中:冲突检索表格,包括索引及冲突类型;利用超标量技术,从指令存储器中,取出多条指令,存储到指令缓存窗口中,进行提前的“相干窗口”界定与“相干指令”的寻找;通过定义“相干窗口”与“相干指令”,进行指令流的读写冲突的寻找,如果存在指令之间的相干冲突,则通过搜寻已经预先存储在本地的指令集之间的冲突类型,进行冲突的快速提前规避。
一种RISC-CPU中指令集之间冲突的规避***,包括冲突解决控制单元,应用在RISC-CPU中,所述突解决控制单元用于实现:将可能存在的所有读写冲突归类后,存储在本地档案表中:冲突检索表格,包括索引及冲突类型;利用超标量技术,从指令存储器中,取出多条指令,存储到指令缓存窗口中,进行提前的“相干窗口”界定与“相干指令”的寻找;通过定义“相干窗口”与“相干指令”,进行指令流的读写冲突的寻找,如果存在指令之间的相干冲突,则通过搜寻已经预先存储在本地的指令集之间的冲突类型,进行冲突的快速提前规避。
本发明的有益效果:
本发明针对当前的RISC-CPU的指令集,对于指令之间存在的冲突类型,提前进行了指令集之间冲突的统计分析与归类,然后通过冲突“相干指令”寻找的结果,控制“冲突寻找与解决”单元,达到相干窗口内部流水线流畅的目的。
本发明提供了解决RISC-CPU设计中指令集之间冲突的有效策略;定义了指令“相干窗口”与“相干指令”,以解决“相干窗口”内部的“相干指令”读/写,写/读,写/写冲突。本文利用RAW冲突的解决作为例子,分析了几种主要指令集之间的冲突,该工程方法进行指令冲突的相关性量化界定与冲突解决,通过添加读写冲突定位与解决硬件单元,其可以有效规避RISC-CPU不同指令集之间存在的指令冲突,同时,提高了流水吞吐效率。
附图说明
图1是RISC-CPU所涉及的指令集的分类;
图2是“相干窗口”与“相干指令”的示意;
图3是本发明的提出的背景与工作流程;
图4是添加的冲突定位与解决的硬件单元;
图5是ADD与XOR指令的RAW冲突解决;
图6是STORE与LOAD指令的RAW冲突解决;
图7是ADD与STORE指令的RAW冲突解决;
图8是LOAD与ADD指令的RAW冲突解决。
具体实施方式:
下面结合附图对本发明进行详细说明:
如图1所示,本发明提出了一种用于解决CPU指令冲突有效方法。本发明把设计中的所有指令分成4大类(数据处理指令、分支Branch指令、立即数指令、存储访问指令),从每类指令中抽取具有代表性的指令子集,分别解决指令子集内部与它们之间的RAW(写-后-读)直接数据相干冲突。预先统计分析出所有潜在的RAW冲突,然后进行冲突的定位以及解决,达到流水线顺畅的目的。
本发明提出的RISC-CPU设计把全部指令集合分成数据处理(Data-Processing),存储器访问(STORE/LOAD),分支(Branch),立即数(Immediate)四种指令类。对于每种指令(分支Branch除外)类内部与指令类之间,以RAW(写-后-读)的冲突解决作为例子进行解释,共有几种RAW冲突(数据处理、存储器访问、立即数指令集内部与它们之间),需要进行数据依赖引起的相干冲突解决。
“相干窗口”定义:对于超标量指令处理,不需要考虑指令的乱序执行,对于当前指令而言,如果其需要对某个寄存器进行写入,则需要在如下的窗口内:如果当前指令对寄存器堆中的具体寄存器或者存储器的某个位置进行操作;从当前指令往下面指令流推,从取出指令一直到当前指令结果提交所涉及到的指令序列。
“相干指令”定义:基于前面已经界定好的“相干窗口”,不考虑指令的乱序执行,对“当前指令”而言,如果其需要对某个寄存器或者存储器的某个偏移地址进行写入,则在“相干窗口”范围内,从当前指令往下面指令搜寻,同样也需要对“当前指令”进行写入或者读取的一个或者多个指令。这些存在数据依赖关系的指令,可能存在数据读写冲突,引起流水线的中断,降低指令吞吐效率(CPI)。
对于每种情况,分别给出“相干窗口”与“相干指令”。相干窗口的例子示意见图2,比如ADD(粗实线)与XOR(细虚线)指令。相干指令的例子示意见图2,比如ADD指令的相干指令对应XOR与STORE指令。对于所有同类指令集之间,比如:对于数据处理指令子集:ADD与XOR指令,如表1、2所示,分别进行RAW冲突的解决,如图3所示。比如:对于存储器访问指令(LOAD/STORE),如表3、4,5,6所示:
表1数据处理(Data-Processing instruction)指令集的指令格式
表2数据处理指令集(ADD加法指令、XOR异或指令)的代表
表3,存储器到寄存器(LOAD)指令格式
表4,LOAD指令类子集中的代表
LDR RD←[RS] LDR RD,[RS]
表5,寄存器到存储器(STORE)指令格式
表6,STORE指令类子集中的代表
STR RD→[RS] STR RD,[RS]
分别进行RAW冲突的解决,如图5所示。
对于所有异类指令集之间,分别进行RAW冲突的解决,如图6,7,8所示。
对于其余的指令集,立即数指令,分支指令,它们之间的RAW冲突不再进行分析。
位于“相干窗口”内,冲突解决的方法,包括:(1)把当前命令提交阶段前的逻辑运算结果,直接馈入到下面的相干指令的运算单元,而不用等到当前指令已经提交,再把最后的结果馈入到后面指令的运算单元。(2)在当前指令的后面的相干指令的运算结果进行延迟版本,利用延迟版本的输出作为读写冲突解决的寄存器备份资源。
本设计只分析了数据处理与存储器访问指令之间的RAW冲突。对于其它指令集之间以及其余的WAR/WAW的冲突与规避,不再具体举例子介绍。
结合图3、4,进行本发明的指令冲突解决说明。RISC-CPU硬件设计中,由于相邻的指令之间可能存在数据读写依赖关系,即对于寄存器堆中的同一个寄存器或者存储器的同样偏移地址的访问存在读写顺序冲突,导致流水线必须停顿,降低效率:RAW/WAR/WAR。对于RISC-CPU的设计,指令集之间存在的冲突会导致流水线的中断,降低指令吞吐效率。按照MIPS的经典5段流水段落:阶段1-取指令(fetch)、阶段2-指令译码(decode)、阶段3-执行指令(excute)、阶段4-存储器访问(memory access,针对内部的Memory而言,含load/store两大类)、阶段5-回写。5段流水(Write Back,运算结果写回到RISC-CPU中的寄存器堆Register-bank)。经典MIPS架构中,指令最长的占用5个流水段落(比如访问存储器STORE指令,然后回写入到寄存器堆);普通的非存储访问的数据运算指令,占用4段流水(比如ADD加法指令,最终相加的结果写入到寄存器堆的某个寄存器中,ADD指令中间不经过存储器访问阶段),有的指令在解码阶段就执行完了(比如跳转JMP指令);条件分支指令,由于其需要改变指令流的顺序,引起指令的非顺序执行;可见,RISC-CPU设计中,不同指令集合之间由于占用的流水段不同,并且指令排列的随机性很强,导致对寄存器堆中同一个寄存器或存储器某偏移地址的读/写很可能存在数据依赖冲突。
本发明,通过分析经典MIPS架构中,不同指令集合之间可能的寄存器数据读写依赖引起的冲突,定义了针对当前指令的“相干窗口”,并且从“相干窗口”中寻找针对当前指令的“相干指令”,通过提前分析好的RISC-CPU中不同指令集之间的数据依赖关系,进行冲突类型的确定以及流水效率的规避:(1)后面“相关指令”读取旧的寄存器数据或覆盖还没有读取的新的写入数据,即原来的指令顺序的数据依赖关系被破坏,引起功能错误;(2)以及原来的指令流水线被中断(包括由于流水线被冻结或流水线***NOP指令引起的指令吞吐降低),流水线一旦被冻结或者一味的整体延迟,将会引起流水优势的削弱,降低指令吞吐效率。
本发明中,分析的例子使用以下策略进行数据冲突解决同时保证流水线吞吐效率:(1),数据在最终运算结果提交前的,中间运算数据提前前馈;(2)数据在最终运算结果提交前的延迟版本前馈;(3),中间运算结果的延流水迟版本与原运算版本并存;(4),原来流水线不冻结策略;(5),不使用:***NOP指令的方法。比如:对于第(1)种方法:中间运算数据提前前馈(即不需要到最后的提交阶段),就直接馈入到下个指令的输入端;对于第(3)种方法:在下个相干指令的流水段落中,增加额外的延迟版本寄存器(延迟一拍或几拍),同时保留原来的正常流水段中的寄存器版本。
针对当前的RISC-CPU的指令集,对于指令之间存在的冲突类型,提前进行了指令集之间冲突的统计分析与归类,然后通过冲突“相干指令”寻找的结果,控制“冲突寻找与解决”单元,达到相干窗口内部流水线流畅的目的。图4、6是利用中间运算结果提前前馈机制;图5、7是利用计算结果的延迟版本方法。目前的已经有的方法,是NOP机制,该方法会将流水线往后延迟,本专利不再使用这种方法,同时,本专利不使用冻结流水线的方法,并且本专利的延迟版本是保留原来的流水寄存器,同时针对预先知道的相干指令冲突归类结果,备份延迟版本,这样达到解决“相干窗口”内部的局部指令冲突,同时,不会破坏原来的正常版本的流水段数据传递。本专利,需要充分利用数据前馈,延迟版本等多种方法,达到相干窗口内部,流水线顺畅。本专利,把指令的冲突解决从统计归类,到定位解决进行***的管理。同时,本专利冲突解决框架,也可以吸收新的指令解决技术,以使得整个指令冲突解决***更加完备。
对图1的解释:图1是几种指令集(数据处理、立即数、分支、存储访问)之间的冲突解决。
对图2的解释:图2给出针对当前的ADD指令、当前XOR指令两种指令的“相干窗口”;并且对于ADD指令,给出了存在数据读写冲突的“相干指令”:XOR、STORE,这两个指令均为ADD指令的相干指令。对图3的解释:给出了本发明的基于“相干窗口”与“相干指令”解决指令冲突方法的整体流程。这种方法,可以作为一种RISC-CPU中的指令读写冲突智能定位与解决模块,添加到RISC-CPU硬核中。当然,针对需要当前设计的RISC-CPU的架构、流水段数、指令集种类、指令格式等确定后,需要再进行RISC-CPU硬核的开发。传统方法,没有将冲突的解决,从***的角度,进行量化定位与解决。
该专利,首先对不同种类或同种种类指令之间的读写冲突进行预先的统计分析,并且进行冲突的严格归类,将可能存在的所有读写冲突归类后,存储在本地档案表中:冲突检索表格(索引,冲突类型);利用超标量技术,从指令存储器中,取出多条指令,存储到指令缓存窗口中,进行提前的“相干窗口”界定与“相干指令”的寻找;通过严格的定义“相干窗口”与“相干指令”,进行指令流的读写冲突的寻找,如果存在指令之间的相干冲突,则通过搜寻已经预先存储在本地的指令集之间的冲突类型,进行冲突的快速提前规避(通过添加的冲突解决控制单元)。该发明中的表1、2、3是列举了几种指令,表1为数据处理指令的数据格式以及指令助记符,表2与表3是存储器访问LOAD/STORE指令的数据格式以及指令助记符;
图5、7是前级指令结果提交前提前前馈与图6、8是后续相干指令的中间运算结果延迟版本输出,这两种方法都是为了防止流水中断。相干指令不同延迟节拍的输出,需要利用一些额外的寄存器,这些寄存器是计算结果的延迟版本,其并没有破坏原来流水的结果。对于其余解决冲突的技术,该发明可以扩展到本发明的技术框架中。
如果当前指令,没有对寄存器堆或存储器进行访问,则分析下一条指令,“相干窗口”向下滑动;如果“相干窗口”内没有“相干指令”,则没有读写冲突,分析结束。
对图5的解释:把ADD指令的运算结果提前馈入到XOR作为输入,不必等到ADD指令提交再执行,保证流水线的流畅。
对图6的解释:STORE的结果作为LOAD的地址计算输入,通过在LOAD指令前面,添加延迟后的寄存器,保证流水线的流畅。
对图7的解释:ADD指令的运算结果直接馈入到下一级作为偏移地址,进行STORE命令寻址地址的计算,保证流水线的流畅。
对图8的解释:LOAD指令的存储结果直接送到下面相关指令:LOAD指令的结果直接作为ADD的输入,ADD的中间结果延迟一拍的版本作为DMEM访问的偏移地址,保证流水线的流畅。
本发明能够实现利用“相干窗口”与“相干指令”进行指令冲突寻找与指令规避。是对多种指令集之间的冲突进行解决的有效的简单策略,对于RISC-CPU硬件指令普通冲突解决有益。
智能冲突寻找与解决的单元添加在RISC-CPU设计,可应用于超标量CPU设计。本发明把数据提前、不使用流水冻结、不使用***NOP指令、延迟前馈或基于中间运算结果多拍延迟版本等技术组合使用的流水线顺畅实现技术。
上述虽然结合附图对本发明的具体实施方式进行了描述,但并非对本发明保护范围的限制,所属领域技术人员应该明白,在本发明的技术方案的基础上,本领域技术人员不需要付出创造性劳动即可做出的各种修改或变形仍在本发明的保护范围以内。

Claims (10)

1.一种RISC-CPU中指令集之间冲突的规避方法,其特征是,包括以下步骤:
步骤一:根据RISC-CPU中不同指令集之间的数据依赖关系,确定冲突类型;
步骤二:针对当前指令,判断其是否需要对“寄存器堆”或者“存储器”访问,若是,则进行步骤三,否则,继续分析下条指令;
步骤三:针对当前指令,界定“相干窗口”,在“相干窗口”内,寻找“相干指令”,并判断是否存在“相干指令”,若是,则进入步骤四,否则,判断为无读写冲突;
步骤四:根据指令集之间的冲突类型,进行冲突方法的选择,使用具体的策略进行数据冲突解决同时保证流水线吞吐效率。
2.如权利要求1所述的一种RISC-CPU中指令集之间冲突的规避方法,其特征是,在步骤一中,针对RISC-CPU的架构、指令集及流水段进行统计分析并归类,把全部指令集合分成数据处理指令集、存储器访问指令集、分支指令集及立即数指令集。
3.如权利要求2所述的一种RISC-CPU中指令集之间冲突的规避方法,其特征是,在步骤一中,在得到四种指令集后,统计分析指令集之间的冲突,多种指令集合之间的读写冲突类型的遍历、归类,得到存在的指令数据依赖引入的冲突:后面“相关指令”读取旧的寄存器数据或覆盖还没有读取的新的写入数据,即原来的指令顺序的数据依赖关系被破坏,引起功能错误;以及原来的指令流水线被中断,包括由于流水线被冻结或流水线***NOP指令引起的指令吞吐降低。
4.如权利要求1或3所述的一种RISC-CPU中指令集之间冲突的规避方法,其特征是,冲突类型的归类具体为:数据处理、存储器访问、立即数指令集内部与它们之间;
优选的,ADD与XOR指令的RAW冲突解决:把ADD指令的运算结果提前馈入到XOR作为输入,不必等到ADD指令提交再执行;
STORE与LOAD指令的RAW冲突解决:STORE的结果作为LOAD的地址计算输入,通过在LOAD指令前面,添加延迟后的寄存器;
ADD与STORE指令的RAW冲突解决:ADD指令的运算结果直接馈入到下一级作为偏移地址,进行STORE命令寻址地址的计算;
LOAD与ADD指令的RAW冲突解决:LOAD指令的结果直接作为ADD的输入,ADD的中间结果延迟一拍的版本作为DM EM访问的偏移地址。
5.如权利要求1所述的一种RISC-CPU中指令集之间冲突的规避方法,其特征是,在步骤三中,“相干窗口”定义:对于超标量指令处理,不需要考虑指令的乱序执行,对于当前指令而言,如果其需要对某个寄存器进行写入,则需要在如下的窗口内:如果当前指令对寄存器堆中的具体寄存器或者存储器的某个位置进行操作;从当前指令往下面指令流推,从取出指令一直到当前指令结果提交所涉及到的指令序列。
6.如权利要求5所述的一种RISC-CPU中指令集之间冲突的规避方法,其特征是,在步骤三中,“相干指令”定义:基于已经界定好的“相干窗口”,不考虑指令的乱序执行,对“当前指令”而言,如果其需要对某个寄存器或者存储器的某个偏移地址进行写入,则在“相干窗口”范围内,从当前指令往下面指令搜寻,同样也需要对“当前指令”进行写入或者读取的一个或者多个指令,这些存在数据依赖关系的指令,可能存在数据读写冲突,引起流水线的中断,降低指令吞吐效率。
7.如权利要求1所述的一种RISC-CPU中指令集之间冲突的规避方法,其特征是,位于“相干窗口”内,冲突解决的方法,包括:(1)把当前命令提交阶段前的逻辑运算结果,直接馈入到下面的相干指令的运算单元,而不用等到当前指令已经提交,再把最后的结果馈入到后面指令的运算单元。(2)在当前指令的后面的相干指令的运算结果进行延迟版本,利用延迟版本的输出作为读写冲突解决的寄存器备份资源。
8.如权利要求1所述的一种RISC-CPU中指令集之间冲突的规避方法,其特征是,步骤四中,冲突方法具体包括:
(1),数据在最终运算结果提交前的,中间运算数据提前前馈,中间运算数据提前前馈即不需要到最后的提交阶段,就直接馈入到下个指令的输入端;
(2),数据在最终运算结果提交前的延迟版本前馈;
(3),中间运算结果的流水延迟版本与原运算版本并存,在下个相干指令的流水段落中,增加额外的延迟版本寄存器,延迟一拍或几拍,同时保留原来的正常流水段中的寄存器版本;
(4),原来流水线不冻结策略;
(5),不使用***NOP指令的方法。
9.如权利要求1所述的一种RISC-CPU中指令集之间冲突的规避方法,其特征是,在步骤一中,将可能存在的所有读写冲突归类后,存储在本地档案表中:冲突检索表格,包括索引及冲突类型;利用超标量技术,从指令存储器中,取出多条指令,存储到指令缓存窗口中,进行提前的“相干窗口”界定与“相干指令”的寻找;通过定义“相干窗口”与“相干指令”,进行指令流的读写冲突的寻找,如果存在指令之间的相干冲突,则通过搜寻已经预先存储在本地的指令集之间的冲突类型,进行冲突的快速提前规避。
10.一种RISC-CPU中指令集之间冲突的规避***,其特征是,包括冲突解决控制单元,应用在RISC-CPU中,所述突解决控制单元用于实现:将可能存在的所有读写冲突归类后,存储在本地档案表中:冲突检索表格,包括索引及冲突类型;利用超标量技术,从指令存储器中,取出多条指令,存储到指令缓存窗口中,进行提前的“相干窗口”界定与“相干指令”的寻找;通过定义“相干窗口”与“相干指令”,进行指令流的读写冲突的寻找,如果存在指令之间的相干冲突,则通过搜寻已经预先存储在本地的指令集之间的冲突类型,进行冲突的快速提前规避。
CN201611246947.6A 2016-12-29 2016-12-29 一种risc-cpu中指令集之间冲突的规避方法及*** Expired - Fee Related CN106610816B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201611246947.6A CN106610816B (zh) 2016-12-29 2016-12-29 一种risc-cpu中指令集之间冲突的规避方法及***

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201611246947.6A CN106610816B (zh) 2016-12-29 2016-12-29 一种risc-cpu中指令集之间冲突的规避方法及***

Publications (2)

Publication Number Publication Date
CN106610816A true CN106610816A (zh) 2017-05-03
CN106610816B CN106610816B (zh) 2018-10-30

Family

ID=58636378

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201611246947.6A Expired - Fee Related CN106610816B (zh) 2016-12-29 2016-12-29 一种risc-cpu中指令集之间冲突的规避方法及***

Country Status (1)

Country Link
CN (1) CN106610816B (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109189715A (zh) * 2018-08-16 2019-01-11 算丰科技(北京)有限公司 可编程人工智能加速器执行单元及人工智能加速方法
CN111221573A (zh) * 2018-11-26 2020-06-02 深圳云天励飞技术有限公司 一种寄存器访问时序的管理方法、处理器、电子设备及计算机可读存储介质
CN113312087A (zh) * 2021-06-17 2021-08-27 东南大学 一种基于RISC处理器常量池布局分析与整合的Cache优化方法
US11256444B2 (en) 2020-07-10 2022-02-22 Hon Hai Precision Industry Co., Ltd. Method for processing read/write data, apparatus, and computer readable storage medium thereof
TWI758778B (zh) * 2020-07-10 2022-03-21 鴻海精密工業股份有限公司 資料讀/寫處理方法、裝置及電腦可讀存儲介質
CN114238182A (zh) * 2021-12-20 2022-03-25 北京奕斯伟计算技术有限公司 一种处理器、数据处理方法和装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5627982A (en) * 1991-06-04 1997-05-06 Matsushita Electric Industrial Co., Ltd. Apparatus for simultaneously scheduling instructions from plural instruction stream into plural instruction executions units
CN101067781A (zh) * 2006-03-07 2007-11-07 英特尔公司 执行存储器消歧的技术
CN101770357A (zh) * 2008-12-31 2010-07-07 世意法(北京)半导体研发有限责任公司 减少处理器中的指令冲突
CN103116485A (zh) * 2013-01-30 2013-05-22 西安电子科技大学 一种基于超长指令字专用指令集处理器的汇编器设计方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5627982A (en) * 1991-06-04 1997-05-06 Matsushita Electric Industrial Co., Ltd. Apparatus for simultaneously scheduling instructions from plural instruction stream into plural instruction executions units
CN101067781A (zh) * 2006-03-07 2007-11-07 英特尔公司 执行存储器消歧的技术
CN101770357A (zh) * 2008-12-31 2010-07-07 世意法(北京)半导体研发有限责任公司 减少处理器中的指令冲突
CN103116485A (zh) * 2013-01-30 2013-05-22 西安电子科技大学 一种基于超长指令字专用指令集处理器的汇编器设计方法

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109189715A (zh) * 2018-08-16 2019-01-11 算丰科技(北京)有限公司 可编程人工智能加速器执行单元及人工智能加速方法
CN111221573A (zh) * 2018-11-26 2020-06-02 深圳云天励飞技术有限公司 一种寄存器访问时序的管理方法、处理器、电子设备及计算机可读存储介质
US11256444B2 (en) 2020-07-10 2022-02-22 Hon Hai Precision Industry Co., Ltd. Method for processing read/write data, apparatus, and computer readable storage medium thereof
TWI758778B (zh) * 2020-07-10 2022-03-21 鴻海精密工業股份有限公司 資料讀/寫處理方法、裝置及電腦可讀存儲介質
CN113312087A (zh) * 2021-06-17 2021-08-27 东南大学 一种基于RISC处理器常量池布局分析与整合的Cache优化方法
CN113312087B (zh) * 2021-06-17 2024-06-11 东南大学 一种基于RISC处理器常量池布局分析与整合的Cache优化方法
CN114238182A (zh) * 2021-12-20 2022-03-25 北京奕斯伟计算技术有限公司 一种处理器、数据处理方法和装置
CN114238182B (zh) * 2021-12-20 2023-10-20 北京奕斯伟计算技术股份有限公司 一种处理器、数据处理方法和装置

Also Published As

Publication number Publication date
CN106610816B (zh) 2018-10-30

Similar Documents

Publication Publication Date Title
CN106610816A (zh) 一种risc‑cpu中指令集之间冲突的规避方法及***
Ipek et al. Core fusion: accommodating software diversity in chip multiprocessors
CN100538628C (zh) 用于在simd结构中处理线程组的***和方法
TWI742048B (zh) 根據指令類型來配置負載及儲存緩衝器的處理器、方法及系統
Ernst et al. Cyclone: A broadcast-free dynamic instruction scheduler with selective replay
CN110018850A (zh) 用于可配置空间加速器中的多播的设备、方法和***
CN105426160A (zh) 基于sprac v8指令集的指令分类多发射方法
CN101189573A (zh) 通过内容可寻址存储器和并行计算执行模型的条件执行
CN103646009A (zh) 对载明并行和依赖运算的指令矩阵进行处理的装置和方法
Hara et al. Performance comparison of ILP machines with cycle time evaluation
Iliakis et al. Repurposing GPU microarchitectures with light-weight out-of-order execution
Jacobi Formal verification of complex out-of-order pipelines by combining model-checking and theorem-proving
Henry et al. The ultrascalar processor-an asymptotically scalable superscalar microarchitecture
Singh et al. Achieving magnitude order improvement in porter stemmer algorithm over multi-core architecture
Kalaitzidis Advanced speculation to increase the performance of superscalar processors
Chaudhary Custom exact branch predictor for astar benchmark
Theodoropoulos et al. A distributed colouring algorithm for control hazards in asynchronous pipelines
Gellert et al. Perceptron-Based Selective Load Value Prediction in a Multicore Architecture
Winkel Optimal Global Instruction Scheduling for the Itanium® Processor Architecture
Molina et al. Implementation of search process for a content-based image retrieval application on system on chip
Jung et al. Large scale document inversion using a multi-threaded computing system
Kofman et al. Application Architecture Adequacy through an FFT case study
Kong et al. KPU-SQL: Kernel Processing Unit for High-Performance SQL Acceleration
Roth et al. Dynamic techniques for load and load-use scheduling
US20200057640A1 (en) System, method and apparatus for executing instructions

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
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20181030