CN102736894B - 一种跳转指令编码的方法和系统 - Google Patents
一种跳转指令编码的方法和系统 Download PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 24
- 230000004087 circulation Effects 0.000 claims abstract description 65
- 230000015654 memory Effects 0.000 claims abstract description 41
- 238000000605 extraction Methods 0.000 claims description 8
- 238000012790 confirmation Methods 0.000 claims description 3
- 229910002056 binary alloy Inorganic materials 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 239000003550 marker Substances 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000001960 triggered effect Effects 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/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30065—Loop control instructions; iterative instructions, e.g. LOOP, REPEAT
-
- 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/3802—Instruction prefetching
- G06F9/3804—Instruction 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,用于在不需要等待的情况下继续工作。
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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112445520B (zh) * | 2019-08-27 | 2022-11-15 | 无锡江南计算技术研究所 | 针对循环内条件转移指令的转移预测优化方法 |
Citations (2)
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)
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 | 上海采微电子科技有限公司 | 带有循环跳转预测单元的微处理器 |
-
2011
- 2011-04-01 CN CN201110081939.1A patent/CN102736894B/zh not_active Expired - Fee Related
- 2011-08-24 WO PCT/CN2011/078846 patent/WO2012129886A1/zh active Application Filing
- 2011-08-24 EP EP11862348.7A patent/EP2696279A4/en not_active Withdrawn
Patent Citations (2)
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 |