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

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

Info

Publication number
CN102736894A
CN102736894A CN2011100819391A CN201110081939A CN102736894A CN 102736894 A CN102736894 A CN 102736894A CN 2011100819391 A CN2011100819391 A CN 2011100819391A CN 201110081939 A CN201110081939 A CN 201110081939A CN 102736894 A CN102736894 A CN 102736894A
Authority
CN
China
Prior art keywords
instruction
week
operating cycle
circulation
loop
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
CN2011100819391A
Other languages
English (en)
Other versions
CN102736894B (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

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/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 (10)

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

Cited By (1)

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

Citations (3)

* 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 国际商业机器公司 具有静态转移预测支持的去耦取指令-执行引擎
US20090313456A1 (en) * 2005-02-04 2009-12-17 Sony Computer Entertainment Inc. Methods and apparatus for dynamic prediction by software

Family Cites Families (3)

* 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
CN1928810A (zh) * 2005-09-09 2007-03-14 上海采微电子科技有限公司 带有循环跳转预测单元的微处理器

Patent Citations (3)

* 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 国际商业机器公司 具有静态转移预测支持的去耦取指令-执行引擎
US20090313456A1 (en) * 2005-02-04 2009-12-17 Sony Computer Entertainment Inc. Methods and apparatus for dynamic prediction by software

Cited By (2)

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

Also Published As

Publication number Publication date
CN102736894B (zh) 2017-10-24
EP2696279A1 (en) 2014-02-12
EP2696279A4 (en) 2014-03-19
WO2012129886A1 (zh) 2012-10-04

Similar Documents

Publication Publication Date Title
CN108027769B (zh) 使用寄存器访问指令发起指令块执行
CN105389158B (zh) 数据处理系统、编译器、处理器的方法和机器可读介质
CN108027731B (zh) 针对基于块的处理器的调试支持
KR102335194B1 (ko) 명령어 체이닝 능력을 이용한 멀티스레드형 프로세서에서의 기회 멀티스레딩
US9558000B2 (en) Multithreading using an ordered list of hardware contexts
KR101748506B1 (ko) 실시간 명령어 추적 프로세서들, 방법들 및 시스템들
CN104040491A (zh) 微处理器加速的代码优化器
KR20180021812A (ko) 연속하는 블록을 병렬 실행하는 블록 기반의 아키텍쳐
CN104040492A (zh) 微处理器加速的代码优化器和依赖性重排序方法
US11366669B2 (en) Apparatus for preventing rescheduling of a paused thread based on instruction classification
US6950926B1 (en) Use of a neutral instruction as a dependency indicator for a set of instructions
Brandon et al. Support for dynamic issue width in VLIW processors using generic binaries
EP2782004B1 (en) Opportunistic multi-thread method and processor
US20140129805A1 (en) Execution pipeline power reduction
CN100451951C (zh) Risc cpu中的5+3级流水线设计方法
CN102736894A (zh) 一种跳转指令编码的方法和系统
JP2004062909A (ja) 複数の制御フローパスを有するソフトウェアパイプライン化ループのためのシステムおよび方法
CN101488082B (zh) 复杂指令集微控制器的译码方法和装置
CN106325820A (zh) 一种异构处理器构架
Jakimovska et al. Modern processor architectures overview
CN112947999B (zh) 一种精简指令集计算机指令功能扩展的方法及装置
Koizumi et al. Reduction of instruction increase overhead by STRAIGHT compiler
CN201145893Y (zh) 复杂指令集微控制器的译码装置
Roth et al. Microarchitectural miss/execute decoupling
US20130298129A1 (en) Controlling a sequence of parallel executions

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