CN111124494A - 一种cpu中加速无条件跳转的方法及电路 - Google Patents

一种cpu中加速无条件跳转的方法及电路 Download PDF

Info

Publication number
CN111124494A
CN111124494A CN201911301722.XA CN201911301722A CN111124494A CN 111124494 A CN111124494 A CN 111124494A CN 201911301722 A CN201911301722 A CN 201911301722A CN 111124494 A CN111124494 A CN 111124494A
Authority
CN
China
Prior art keywords
address
cpu
clock cycle
circuit
low
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
CN201911301722.XA
Other languages
English (en)
Other versions
CN111124494B (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.)
C core Technology Co ltd
Original Assignee
C core 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 C core Technology Co ltd filed Critical C core Technology Co ltd
Priority to CN201911301722.XA priority Critical patent/CN111124494B/zh
Publication of CN111124494A publication Critical patent/CN111124494A/zh
Application granted granted Critical
Publication of CN111124494B publication Critical patent/CN111124494B/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/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30069Instruction skipping instructions, e.g. SKIP
    • 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/3013Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address 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/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • G06F9/4484Executing subprograms
    • G06F9/4486Formation of subprogram jump address
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy 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)
  • Executing Machine-Instructions (AREA)

Abstract

本发明提供了一种使用在嵌入式CPU中的,用于加速程序中无条件跳转的方法及其电路实现。该方法通过在CPU中,加入软件可寻址寄存器及相应的取指计算与控制电路,从而实现通过寄存器访问指令,直接无缝切换CPU取指流水线,达到在绝大多数情况下加速无条件跳转的效果。

Description

一种CPU中加速无条件跳转的方法及电路
技术领域
本发明属于集成电路中的嵌入式处理器技术领域,尤其是涉及一种CPU中加速无条件跳转的方法及电路。
背景技术
CPU(中央处理器)的核心功能是读取并执行软件程序指令。读取并执行指令的第一步就是取指,即CPU向总线或存储设备发出目标指令的地址,总线或存储设备根据CPU发出的地址,返回目标指令给CPU的过程。程序一般是顺序读取并执行的,直到发生程序的跳转。也就是说,取指时目标指令的地址是顺序递增的,直到遇到跳转指令。
从CPU发出地址,到总线或存储设备返回目标指令,是有一定延迟时间的。为了整体上在一定时间内尽量多的取指,CPU通常采用流水线的方式发出地址和接受指令,如图1所示。CPU在时间t0发出目标地址0,在下一个cycle(时钟周期)不等指令0返回,就继续顺序发出地址1,如此下去。当总线或存储设备返回目标地址0所对应的指令0时,CPU已流水线化地发出了d个地址,即CPU的取指延迟是d。
如果指令0经过CPU译码,发现正好是一条跳转指令,它的执行会将CPU的下一条指令的目标地址跳转到了一个新的地址n,那么时间t(d+j)之前发出的地址和已经取得的指令,就都作废了。CPU重新流水线化地发出地址n及其后续地址。当指令n进入CPU时,时间已经过去了t(d+j+d)了。
总结起来,一条跳转指令,使得CPU相对浪费了d+j个cycle,其中d是取指延迟时间,j是跳转指令译码和目标地址的计算时间。程序的跳转打断了原有的取指流水线,不仅使CPU陷入等待而不能全速运行,而且取到的很多作废的指令数据,白白浪费了宝贵的总线带宽资源。可以说,程序跳转是CPU性能的主要影响因素之一。
程序跳转,按照类型,可以分为无条件跳转和条件跳转两大类。无条件跳转是指程序会无条件地跳转到另一个确定的指令地址。在软件上通常对应着子函数的调用和退出。条件跳转是指程序会根据某个变量的值,来判断是否跳转到另一个确定的指令地址。由于条件跳转不在本文讨论范围内,因此本文之后的跳转都默认指代无条件跳转。
对无条件跳转的加速方法可以分为软件和硬件两个方面。在软件上着重减少程序跳转的次数,比如优化编译器,采用内联函数等。在硬件上,着重减少跳转产生的延迟开销,比如采用跳转地址查找表等。
跳转地址查找表,其基本结构与CPU中常用的缓存(Cache)基本一致。CPU中的取指单元,流水线化地向总线发出指令的目的地址,每条地址除了送至总线外,还送入跳转地址查找表中,与各表项中存储的源地址进行逐一比较。如果与某个源地址一致(即所谓的命中),该源地址对应的目的地址,就被路选出来,作为下一条取指地址。上述过程使得取指流水线无缝地跳转到了新的程序段继续运行,避免了跳转的延迟开销,其效果如图2所示。
图2中在t0时刻地址0在跳转地址查找表中命中,查得新的指令地址为n,因此在t1时刻CPU直接向总线发出地址n,并在t2时刻继续顺序寻址n+1。经过td延迟后,总线依次流水化地返回指令0,指令n,指令n+1等。t0时刻的无缝跳转切换,节省了d+j个cycle。指令n在译码执行时发现需要跳转至地址f,即t1时刻的地址n未在查找表中命中,导致在t(d+j+1)时刻CPU重新发出地址f,并等待至t(2d+j+1)时刻才取得指令f,浪费了d+j个cycle。
由上可知,跳转地址查找表对跳转的加速效果是十分理想的,但前提是跳转源地址在查表时必须命中。
但在实际情况中,由于采用Cache结构,源地址到目的地址的首次跳转,都是未命中的。只有再次发生相同的跳转时才可能命中,因此对于程序中只发生一次的那些跳转,查找表并无作用。
此外,由于查找表容量有限,记录的跳转只有最近发生的几个,在此之前的跳转,即使已经发生过,也无法命中。因此对于程序中多次发生,但在时间上并不集中的跳转,查找表也作用不大。
发明内容
有鉴于此,本发明旨在提出一种CPU中加速无条件跳转的方法及电路,以解决上述问题。
本发明的核心思想是:通过在CPU中加入软件可寻址寄存器及相应的取指计算与控制电路,从而实现通过寄存器访问指令,直接无缝切换CPU取指流水线,达到在绝大多数情况下加速无条件跳转的效果。
为达到上述目的,本发明的技术方案是这样实现的:
第一方面,本发明提供一种CPU中加速无条件跳转的方法,包括如下步骤:
1)首先存储源地址低位值和目的地址偏移量;
2)在CPU运行的每个时钟周期,将存储的源地址低位值与CPU的当前取指地址的等位宽的低位部分进行比较得到比较结果;
3)在CPU运行的每个时钟周期,将目的地址偏移量与CPU的当前取指地址进行加法运算得到相加结果;
4)在CPU运行的每个时钟周期,判断比较结果是否为相等:
若相等,则将步骤3)得到的相加结果作为最终地址进行输出,并在下个时钟周期,将当前取指地址更新为相加结果;
若不等,则将CPU计算出的下一个取指地址作为最终地址进行输出。
第二方面,本发明提供一种CPU中加速无条件跳转的电路,在CPU的取指地址计算电路中增加:
软件可配置寄存器,分为两部分,一部分存储用于比较的源地址低位值;另一部分存储用于做加法运算的目的地址偏移量;
低位地址比较电路,在CPU运行的每个时钟周期,将软件可配置寄存器中存储的源地址低位值,与CPU的当前取指地址的等位宽的低位部分进行比较,并将比较结果输出给地址路选器;
地址加法电路,在CPU运行的每个时钟周期,将软件可配置寄存器中存储的目的地址偏移量,与CPU的当前取指地址进行加法运算,并将结果输出给地址路选器;
地址路选电路,在CPU运行的每个时钟周期,接收低位地址比较电路的比较结果,如果比较结果为相等,则将地址加法电路的运算结果路选输出,并在下个时钟周期,将当前取指地址更新为地址加法电路的运算结果;如果比较结果为不等,则将CPU计算出的下一个取指地址路选输出。
相对于现有技术,本发明所述的方法及电路具有以下优势:
本发明实现通过软件指令,直接无缝切换CPU取指流水线,达到在绝大多数情况下加速无条件跳转的效果。
附图说明
构成本发明的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1为现有的无跳转加速的CPU进行跳转取指时的流水线示意图;
图2为现有的带有跳转预测的CPU进行跳转取指时的流水线示意图;
图3为本发明创造的CPU中加速无条件跳转的电路的原理框图。
具体实施方式
需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。下面将参考附图并结合实施例来详细说明本发明。
本发明的一种CPU中加速无条件跳转的方法,包括如下步骤:
1)首先存储源地址低位值和目的地址偏移量;
2)在CPU运行的每个时钟周期,将存储的源地址低位值与CPU的当前取指地址的等位宽的低位部分进行比较得到比较结果;
3)在CPU运行的每个时钟周期,将目的地址偏移量与CPU的当前取指地址进行加法运算得到相加结果;
4)在CPU运行的每个时钟周期,判断比较结果是否为相等:
若相等,则将步骤3)得到的相加结果作为最终地址进行输出,并在下个时钟周期,将当前取指地址更新为相加结果;
若不等,则将CPU计算出的下一个取指地址作为最终地址进行输出。
本发明实现上述CPU中加速无条件跳转的方法的电路结构,如图3所示,在CPU的取指地址计算电路中增加:
软件可配置寄存器,可以分为两部分,一部分存储着用于比较的源地址的低位地址值;另一部分存储着用于做加法运算的目的地址偏移量。该寄存器可以通过CPU的move指令或类似指令,进行赋值;
低位地址比较电路,在CPU运行的每个时钟周期,将软件可配置寄存器中存储的源地址低位值,与CPU的当前取指地址的等位宽的低位部分进行比较,并将比较结果输出给地址路选器;
地址加法电路,在CPU运行的每个时钟周期,将软件可配置寄存器中存储的目的地址偏移量,与CPU的当前取指地址进行加法运算,并将结果输出给地址路选器;
地址路选电路,在CPU运行的每个时钟周期,接收低位地址比较电路的比较结果,如果比较结果为相等,则将地址加法电路的运算结果路选输出,并在下个时钟周期,将当前取指地址更新为地址加法电路的运算结果;如果比较结果为不等,则将CPU计算出的下一个取指地址路选输出。
本发明提出了一种使用在嵌入式CPU中的,用于加速程序中无条件跳转的方法及其电路实现。该方法通过在CPU中加入软件可寻址寄存器及相应的地址计算与控制电路,从而实现通过软件指令,直接无缝切换CPU取指流水线,达到在绝大多数情况下加速无条件跳转的效果。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (4)

1.一种CPU中加速无条件跳转的方法,其特征在于,包括如下步骤:
1)首先存储源地址低位值和目的地址偏移量;
2)在CPU运行的每个时钟周期,将存储的源地址低位值与CPU的当前取指地址的等位宽的低位部分进行比较得到比较结果;
3)在CPU运行的每个时钟周期,将目的地址偏移量与CPU的当前取指地址进行加法运算得到相加结果;
4)在CPU运行的每个时钟周期,判断比较结果是否为相等:
若相等,则将步骤3)得到的相加结果作为最终地址进行输出,并在下个时钟周期,将当前取指地址更新为相加结果;
若不等,则将CPU计算出的下一个取指地址作为最终地址进行输出。
2.一种CPU中加速无条件跳转的电路,其特征在于,在CPU的取指地址计算电路中增加:
软件可配置寄存器,分为两部分,一部分存储用于比较的源地址低位值;另一部分存储用于做加法运算的目的地址偏移量;
低位地址比较电路,在CPU运行的每个时钟周期,将软件可配置寄存器中存储的源地址低位值,与CPU的当前取指地址的等位宽的低位部分进行比较,并将比较结果输出给地址路选器;
地址加法电路,在CPU运行的每个时钟周期,将软件可配置寄存器中存储的目的地址偏移量,与CPU的当前取指地址进行加法运算,并将结果输出给地址路选器;
地址路选电路,在CPU运行的每个时钟周期,接收低位地址比较电路的比较结果,如果比较结果为相等,则将地址加法电路的运算结果路选输出,并在下个时钟周期,将当前取指地址更新为地址加法电路的运算结果;如果比较结果为不等,则将CPU计算出的下一个取指地址路选输出。
3.根据权利要求2所述的一种CPU中加速无条件跳转的电路,其特征在于:所述软件可配置寄存器可以通过CPU的move指令或类似指令进行赋值。
4.一种实现权利要求1所述的CPU中加速无条件跳转的方法的CPU模块。
CN201911301722.XA 2019-12-17 2019-12-17 一种cpu中加速无条件跳转的方法及电路 Active CN111124494B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911301722.XA CN111124494B (zh) 2019-12-17 2019-12-17 一种cpu中加速无条件跳转的方法及电路

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911301722.XA CN111124494B (zh) 2019-12-17 2019-12-17 一种cpu中加速无条件跳转的方法及电路

Publications (2)

Publication Number Publication Date
CN111124494A true CN111124494A (zh) 2020-05-08
CN111124494B CN111124494B (zh) 2023-07-25

Family

ID=70499448

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911301722.XA Active CN111124494B (zh) 2019-12-17 2019-12-17 一种cpu中加速无条件跳转的方法及电路

Country Status (1)

Country Link
CN (1) CN111124494B (zh)

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060095744A1 (en) * 2004-09-06 2006-05-04 Fujitsu Limited Memory control circuit and microprocessor system
CN101571818A (zh) * 2008-04-29 2009-11-04 联发科技股份有限公司 修补装置、电子装置以及用于修补只读存储器代码的方法
CN103019655A (zh) * 2012-11-28 2013-04-03 中国人民解放军国防科学技术大学 面向多核微处理器的内存拷贝加速方法及装置
CN104407968A (zh) * 2014-10-30 2015-03-11 北京控制工程研究所 一种通过静态分析测算代码指令最长运行时间的方法
CN104424129A (zh) * 2013-08-19 2015-03-18 上海芯豪微电子有限公司 基于指令读缓冲的缓存系统和方法
CN107943727A (zh) * 2017-12-08 2018-04-20 深圳市德赛微电子技术有限公司 一种高效dma控制器
CN109582364A (zh) * 2018-10-29 2019-04-05 华中科技大学 基于忆阻器的精简指令集处理器
CN109918130A (zh) * 2019-01-24 2019-06-21 中山大学 一种具有快速数据旁路结构的四级流水线risc-v处理器

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060095744A1 (en) * 2004-09-06 2006-05-04 Fujitsu Limited Memory control circuit and microprocessor system
CN101571818A (zh) * 2008-04-29 2009-11-04 联发科技股份有限公司 修补装置、电子装置以及用于修补只读存储器代码的方法
CN103019655A (zh) * 2012-11-28 2013-04-03 中国人民解放军国防科学技术大学 面向多核微处理器的内存拷贝加速方法及装置
CN104424129A (zh) * 2013-08-19 2015-03-18 上海芯豪微电子有限公司 基于指令读缓冲的缓存系统和方法
CN104407968A (zh) * 2014-10-30 2015-03-11 北京控制工程研究所 一种通过静态分析测算代码指令最长运行时间的方法
CN107943727A (zh) * 2017-12-08 2018-04-20 深圳市德赛微电子技术有限公司 一种高效dma控制器
CN109582364A (zh) * 2018-10-29 2019-04-05 华中科技大学 基于忆阻器的精简指令集处理器
CN109918130A (zh) * 2019-01-24 2019-06-21 中山大学 一种具有快速数据旁路结构的四级流水线risc-v处理器

Also Published As

Publication number Publication date
CN111124494B (zh) 2023-07-25

Similar Documents

Publication Publication Date Title
US9965274B2 (en) Computer processor employing bypass network using result tags for routing result operands
US6338136B1 (en) Pairing of load-ALU-store with conditional branch
US9529595B2 (en) Branch processing method and system
US9367471B2 (en) Fetch width predictor
CN106681695B (zh) 提前取出分支目标缓冲器
TWI515652B (zh) 具有在硬體中的分支計數表的指令最佳化處理器
CN112230992B (zh) 一种包含分支预测循环的指令处理装置、处理器及其处理方法
US20230078414A1 (en) Servicing cpu demand requests with inflight prefetches
US10540182B2 (en) Processor and instruction code generation device
US20190079771A1 (en) Lookahead out-of-order instruction fetch apparatus for microprocessors
US7877578B2 (en) Processing apparatus for storing branch history information in predecode instruction cache
US20060095746A1 (en) Branch predictor, processor and branch prediction method
CN111124493A (zh) 一种cpu中用于减少程序跳转开销的方法及电路
JP2004145454A (ja) 情報処理装置及び情報処理方法
US9507600B2 (en) Processor loop buffer
US20040111592A1 (en) Microprocessor performing pipeline processing of a plurality of stages
CN111124494B (zh) 一种cpu中加速无条件跳转的方法及电路
US20080065870A1 (en) Information processing apparatus
JP5902208B2 (ja) データ処理装置
CN112395000B (zh) 一种数据预加载方法和指令处理装置
US20100082946A1 (en) Microcomputer and its instruction execution method
JP5068529B2 (ja) 時間−静止型プロセッサにおけるゼロ−オーバヘッドのブランチング及びルーピング
JP2002024008A (ja) データ処理装置およびプログラム変換装置
WO2012132214A1 (ja) プロセッサ及びその命令処理方法
US6842846B2 (en) Instruction pre-fetch amount control with reading amount register flag set based on pre-detection of conditional branch-select instruction

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