CN102736894B - 一种跳转指令编码的方法和系统 - Google Patents

一种跳转指令编码的方法和系统 Download PDF

Info

Publication number
CN102736894B
CN102736894B CN201110081939.1A CN201110081939A CN102736894B CN 102736894 B CN102736894 B CN 102736894B CN 201110081939 A CN201110081939 A CN 201110081939A CN 102736894 B CN102736894 B CN 102736894B
Authority
CN
China
Prior art keywords
circulation
sign
instruction
weeks
operation cycle
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.)
Expired - Fee Related
Application number
CN201110081939.1A
Other languages
English (en)
Other versions
CN102736894A (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.)
ZTE Corp
Original Assignee
ZTE Corp
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 ZTE Corp filed Critical ZTE Corp
Priority to CN201110081939.1A priority Critical patent/CN102736894B/zh
Priority to PCT/CN2011/078846 priority patent/WO2012129886A1/zh
Priority to EP11862348.7A priority patent/EP2696279A4/en
Publication of CN102736894A publication Critical patent/CN102736894A/zh
Application granted granted Critical
Publication of CN102736894B publication Critical patent/CN102736894B/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/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30065Loop control instructions; iterative instructions, e.g. LOOP, REPEAT
    • 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/3804Instruction prefetching for branches, e.g. hedging, branch folding

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)
  • Devices For Executing Special Programs (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

本发明公开了一种跳转指令编码的方法和系统,均可在执行循环时,相对于操作周期,提前到内存中获取循环开始指令;当循环体最后一条指令执行完时,完成循环开始指令的获取。本发明方法和系统,通过汇编编码的预处理,从软件的层面简化了硬件逻辑,保证不需要去添加额外的逻辑来解决循环折回时流水线需要停顿的问题,省去了很多的硬件逻辑和硬件资源,节省了面积和成本,使得实现简单,也提高了实现方案的可靠性。

Description

一种跳转指令编码的方法和系统
技术领域
本发明涉及处理器领域,具体涉及一种跳转指令编码的方法和系统。
背景技术
目前,处理器性能损失的原因之一可能是循环指令的执行,一个循环体包含N条指令,它需要被重复执行多次。循环体最后一条指令可以用LOOP_END表示,当在PIPELINE(指令流水线)的译码阶段看到LOOP_END时,如果此时才从MEMORY(存储器)取LOOP_BEGIN(循环体第一条指令),PIPELINE必须停下来等待MEMORY,等待的周期取决于MEMORY的速度和架构。对于常见的处理器,循环指令的使用频率是非常频繁的,所以这样的开销带来的性能损失是非常大的。现有的解决办法有两种,第一种是添加LOOP_BUFFER(循环缓冲器),当循环体第一次执行时,把循环体的指令保存到LOOP_BUFFER,第二次执行时就不需要从MEMORY取LOOP_BEGIN,而是直接从BUFFER获取,这样PIPELINE就不需要停顿。这种实现方案需要添加BUFFER(缓冲器)以及相应的硬件逻辑,电路也非常复杂,实现的代价大。第二种是添加计数器,比如添加一条专门的LOOP_BEGIN指令,它包含循环体指令条数的信息,这样从第一条开始计数,每执行一条就减一,因而可以提前知道LOOP_END到达,提前从MEMORY取指令,其间PIPELINE不需要停顿。这种方案同样需要增加硬件逻辑,对于循环嵌套,需要的硬件资源更多,而且如果循环体指令条数小于N(N表示从MEMORY取指令需要的周数)时,这种方案不具有适应性。
发明内容
有鉴于此,本发明的主要目的在于提供一种跳转指令编码的方法和系统,以简化硬件逻辑,提高实现的可靠性和性能。
为达到上述目的,本发明的技术方案是这样实现的:
一种跳转指令编码的方法,该方法包括:
在执行循环时,相对于操作周期,提前到内存中获取循环开始指令;
当循环体最后一条指令执行完时,完成循环开始指令的获取。
所述相对于操作周期,提前到内存中获取循环开始指令的方法为:
将循环体最后一条指令的标志位提前N周,并生成需要的执行文件exe.bin;
所述N周对应于循环开始指令至循环体最后一条指令的操作周期。
所述完成循环开始指令的获取的过程包括:
所述exe.bin指令在被执行时,硬件提前N周发现循环体最后一条指令,从而提前N周从存储器MEMORY获取该指令。
该方法进一步包括:
涉及执行循环的指令流水线PIPELINE在不需要等待的情况下继续工作。
该方法通过ASS汇编译器实现。
一种跳转指令编码的系统,该系统包括操作周期提前单元、循环开始指令获取单元;其中,
所述操作周期提前单元,用于在执行循环时,相对于操作周期,确认要提前到内存中获取循环开始指令;
所述循环开始指令获取单元,用于在循环体最后一条指令执行完时,完成循环开始指令的获取。
所述操作周期提前单元,相对于操作周期,提前到内存中获取循环开始指令时,用于:
将循环体最后一条指令的标志位提前N周,并生成需要的执行文件exe.bin;
所述N周对应于循环开始指令至循环体最后一条指令的操作周期。
所述循环开始指令获取单元完成循环开始指令的获取时,用于:
触发所述exe.bin指令的执行,使硬件提前N周发现循环体最后一条指令,从而提前N周从MEMORY获取该指令。
该系统进一步包括涉及执行循环的PIPELINE,用于在不需要等待的情况下继续工作。
该系统设置于ASS中。
本发明跳转指令编码的方法和系统,通过ASS汇编编码的预处理,从软件的层面简化了硬件逻辑,保证不需要去添加额外的BUFFER和计数器等逻辑来解决循环折回时流水线需要停顿的问题,省去了很多的硬件逻辑和硬件资源,节省了面积和成本,使得实现简单,也提高了实现方案的可靠性。
附图说明
图1为本发明实施例的跳转指令编码流程简图;
图2为本发明实施例的跳转指令编码系统图。
具体实施方式
由于在循环折回时从MEMORY取LOOP_BEGIN的指令需要消耗N个周期,如果在等到LOOP_END指令时才开始去MEMORY取指令,那么流水线必须停顿N个周期,性能的损失很大。为了避免这种损失,可以在硬件中提前N个周期去MEMORY取指令,这样当LOOP_END执行完时,LOOP_BEGIN的指令也已经从MEMORY取回来了,使得PIPELINE不需要停顿。
上述方案可以通过汇编译器(ASS)来实现。ASS能够将程序员写的汇编指令编码成二进制或十六进制。ASS在编码时,可以将LOOP_END的标志位提前N周(该周期即LOOP_BEGIN至LOOP_END的操作周期),生成需要的执行文件exe.bin。exe.bin指令在被执行时,硬件就能提前N周看到LOOP_END,从而提前N周从MEMORY取该指令,消除PIPELINE的停顿,实现高性能。
程序员写的汇编代码指令序列可以例举为:
Inst0;
Inst1;
Inst2;LOOP_START;
Inst3;
Inst4;
Inst5;
Inst6;LOOP_END
其中,Inst2至Inst6表示循环体指令。
ASS汇编后的机器码序列可以例举为:
00000001;
10000000;
20000000;
30000000;
40000002;
50000000;
60000000;
其中,LOOP_MARKER(循环标签)占用每条指令的低2bit,1表示LOOP_BEGIN,2表示LOOP_END,0表示没有循环标签。上述表示方式只是一种编码方式之一,并不是唯一的。
可见,在编码时将LOOP_END提前了2条指令。Inst6对应LOOP_END,在机器码中被编码在了Inst4上,提前了2条指令。这个过程是编译器自动完成的,程序员写的循环体依旧是Inst2-Inst6。当机器码指令被执行时,当执行到Inst4时,就看到了LOOP_END(即机器码低2bit的值为2),这时就开始从MEMORY取Inst2指令。当执行到Inst6时,Inst2就已经从MEMORY取出来了(这里假定从MEMORY取指令需要2周),指令就又从Inst2开始顺序执行。当执行到Inst4时,又去MEMORY取Inst2,这样就形成了Inst2至Inst6的循环执行,直到循环退出。
由上述技术描述可见,本发明跳转指令编码的操作思路可以表示如图1所示的流程,该流程包括以下步骤:
步骤110:在执行循环时,相对于操作周期,提前到内存中获取循环开始指令。
步骤120:当循环体最后一条指令执行完时,完成循环开始指令的获取。
需要说明的是,所述相对于操作周期,提前到内存中获取循环开始指令的方法可以为:将循环体最后一条指令的标志位提前N周,并生成需要的执行文件exe.bin;所述N周对应于循环开始指令至循环体最后一条指令的操作周期。
并且,所述完成循环开始指令的获取的过程可以包括:所述exe.bin指令在被执行时,硬件提前N周发现循环体最后一条指令,从而提前N周从MEMORY获取该指令。还可以由涉及执行循环的PIPELINE在不需要等待的情况下继续工作。
另外,本发明可以通过ASS汇编译器实现。
为了保证上述技术描述以及操作思路能够顺利实现,可以进行如图2所示的设置。参见图2,图2为本发明实施例的跳转指令编码系统图,该系统包括相连的操作周期提前单元、循环开始指令获取单元。
在实际应用时,操作周期提前单元能够在执行循环时,相对于操作周期,确认要提前到内存中获取循环开始指令;循环开始指令获取单元则能够在循环体最后一条指令执行完时,完成循环开始指令的获取。
需要说明的是,所述操作周期提前单元,相对于操作周期,提前到内存中获取循环开始指令时,可以用于:将循环体最后一条指令的标志位提前N周,并生成需要的执行文件exe.bin;所述N周对应于循环开始指令至循环体最后一条指令的操作周期。
并且,所述循环开始指令获取单元完成循环开始指令的获取时,可以用于:触发所述exe.bin指令的执行,使硬件提前N周发现循环体最后一条指令,从而提前N周从MEMORY获取该指令。还可以进一步由涉及执行循环的PIPELINE在不需要等待的情况下继续工作。
另外,本发明所述系统可以设置于ASS中。
综上所述可见,无论是方法还是系统,本发明跳转指令编码的方法和系统,通过ASS汇编编码的预处理,从软件的层面简化了硬件逻辑,保证不需要去添加额外的BUFFER和计数器等逻辑来解决循环折回时流水线需要停顿的问题,省去了很多的硬件逻辑和硬件资源,节省了面积和成本,使得实现简单,也提高了实现方案的可靠性。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。

Claims (4)

1.一种跳转指令编码的方法,其特征在于,该方法包括:
在执行循环时,相对于操作周期,提前到内存中获取循环开始指令;
当循环体最后一条指令执行完时,完成循环开始指令的获取;
其中,所述相对于操作周期,提前到内存中获取循环开始指令的方法为:
ASS汇编译器在编码时将循环体最后一条指令的标志位提前N周,并生成需要的执行文件exe.bin,所述N周为从存储器MEMORY获取循环开始指令所需要的周期;
所述完成循环开始指令的获取的过程包括:
执行文件exe.bin在被执行时,硬件提前N周发现循环体最后一条指令,从而提前N周从存储器MEMORY获取该循环开始指令。
2.根据权利要求1所述的方法,其特征在于,该方法进一步包括:
涉及执行循环的指令流水线PIPELINE在不需要等待的情况下继续工作。
3.一种跳转指令编码的系统,其特征在于,该系统设置于汇编译器ASS中,该系统包括操作周期提前单元、循环开始指令获取单元;其中,
所述操作周期提前单元,用于在执行循环时,相对于操作周期,确认要提前到内存中获取循环开始指令;
所述循环开始指令获取单元,用于在循环体最后一条指令执行完时,完成循环开始指令的获取;
其中,所述操作周期提前单元,相对于操作周期,提前到内存中获取循环开始指令时,用于:
在编码时将循环体最后一条指令的标志位提前N周,并生成需要的执行文件exe.bin,所述N周为从存储器MEMORY获取循环开始指令所需要的周期;
所述循环开始指令获取单元完成循环开始指令的获取时,用于:
触发所述执行文件exe.bin的执行,使硬件提前N周发现循环体最后一条指令,从而提前N周从MEMORY获取该循环开始指令。
4.根据权利要求3所述的系统,其特征在于,该系统进一步包括涉及执行循环的PIPELINE,用于在不需要等待的情况下继续工作。
CN201110081939.1A 2011-04-01 2011-04-01 一种跳转指令编码的方法和系统 Expired - Fee Related CN102736894B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN201110081939.1A CN102736894B (zh) 2011-04-01 2011-04-01 一种跳转指令编码的方法和系统
PCT/CN2011/078846 WO2012129886A1 (zh) 2011-04-01 2011-08-24 一种跳转指令编码的方法和系统
EP11862348.7A EP2696279A4 (en) 2011-04-01 2011-08-24 METHOD AND SYSTEM FOR CODING JUMPING INSTRUCTIONS

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201110081939.1A CN102736894B (zh) 2011-04-01 2011-04-01 一种跳转指令编码的方法和系统

Publications (2)

Publication Number Publication Date
CN102736894A CN102736894A (zh) 2012-10-17
CN102736894B true CN102736894B (zh) 2017-10-24

Family

ID=46929380

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110081939.1A Expired - Fee Related CN102736894B (zh) 2011-04-01 2011-04-01 一种跳转指令编码的方法和系统

Country Status (3)

Country Link
EP (1) EP2696279A4 (zh)
CN (1) CN102736894B (zh)
WO (1) WO2012129886A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112445520B (zh) * 2019-08-27 2022-11-15 无锡江南计算技术研究所 针对循环内条件转移指令的转移预测优化方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5742804A (en) * 1996-07-24 1998-04-21 Institute For The Development Of Emerging Architectures, L.L.C. Instruction prefetch mechanism utilizing a branch predict instruction
CN1282024A (zh) * 1999-07-23 2001-01-31 国际商业机器公司 具有静态转移预测支持的去耦取指令-执行引擎

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6321330B1 (en) * 1999-05-28 2001-11-20 Intel Corporation Each iteration array selective loop data prefetch in multiple data width prefetch system using rotating register and parameterization to avoid redundant prefetch
US6564313B1 (en) * 2001-12-20 2003-05-13 Lsi Logic Corporation System and method for efficient instruction prefetching based on loop periods
JP4134179B2 (ja) * 2005-02-04 2008-08-13 株式会社ソニー・コンピュータエンタテインメント ソフトウエアによる動的予測方法および装置
CN1928810A (zh) * 2005-09-09 2007-03-14 上海采微电子科技有限公司 带有循环跳转预测单元的微处理器

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5742804A (en) * 1996-07-24 1998-04-21 Institute For The Development Of Emerging Architectures, L.L.C. Instruction prefetch mechanism utilizing a branch predict instruction
CN1282024A (zh) * 1999-07-23 2001-01-31 国际商业机器公司 具有静态转移预测支持的去耦取指令-执行引擎

Also Published As

Publication number Publication date
EP2696279A4 (en) 2014-03-19
EP2696279A1 (en) 2014-02-12
WO2012129886A1 (zh) 2012-10-04
CN102736894A (zh) 2012-10-17

Similar Documents

Publication Publication Date Title
CN106708497B (zh) 一种代码执行方法及装置
CN107015840B (zh) 一种解析器的快速执行方法及快速执行系统
CN102736894B (zh) 一种跳转指令编码的方法和系统
CN102243578A (zh) 一种芯片的命令译码方法、系统及装置
EP1443394A3 (en) Low power operation control unit and program optimizing apparatus
CN1310116C (zh) 具有功率控制功能的微处理器以及指令转换装置
CN102893260A (zh) 用以作为指令评估数据值的系统和方法
CN101295239A (zh) Java卡虚拟机的指令执行方法
JP2004062909A (ja) 複数の制御フローパスを有するソフトウェアパイプライン化ループのためのシステムおよび方法
US8621430B2 (en) Method for code transformation supporting temporal abstraction of parameters
WO2001097054A3 (en) Synergetic data flow computing system
US20120054471A1 (en) Method and system for using external storage to amortize cpu cycle utilization
CN113010177A (zh) 软件定义的仪器和信息采集方法、计算机、存储介质
CN100340973C (zh) 处理器
Ryan Efficiently implementing GOLOG with answer set programming
CN107479864B (zh) MapReduce计算框架的平台移植方法和装置
Xie Dependent Types in Haskell
CN116149620B (zh) 一种面向Matlab脚本重定义的设计方法及系统
EP2605134B1 (en) Systems, methods, and computer programs for dynamic binary translation in an interpreter
KR101227411B1 (ko) 변조기에서 버스인터페이스 상의 효율적인 순환중복검사인코딩을 수행하는 방법 및 장치
CN116088937A (zh) 一种长短指令集取指和译码方法及系统
US20130298129A1 (en) Controlling a sequence of parallel executions
US7460989B2 (en) Method and apparatus for modeling multiple concurrently dispatched instruction streams in super scalar CPU with a sequential language
CN102567194A (zh) 软件调试器和软件开发辅助系统
US10671395B2 (en) Application specific instruction-set processor (ASIP) for simultaneously executing a plurality of operations using a long instruction word

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into 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

Granted publication date: 20171024

Termination date: 20200401

CF01 Termination of patent right due to non-payment of annual fee