CN1241115C - 处理压缩程序代码的电子设备和方法 - Google Patents

处理压缩程序代码的电子设备和方法 Download PDF

Info

Publication number
CN1241115C
CN1241115C CNB028112261A CN02811226A CN1241115C CN 1241115 C CN1241115 C CN 1241115C CN B028112261 A CNB028112261 A CN B028112261A CN 02811226 A CN02811226 A CN 02811226A CN 1241115 C CN1241115 C CN 1241115C
Authority
CN
China
Prior art keywords
unit
processor
decompress
ion
circulation
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
CNB028112261A
Other languages
English (en)
Other versions
CN1513138A (zh
Inventor
A·S·C·罗赛
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.)
Koninklijke Philips NV
Original Assignee
Koninklijke Philips Electronics NV
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 Koninklijke Philips Electronics NV filed Critical Koninklijke Philips Electronics NV
Publication of CN1513138A publication Critical patent/CN1513138A/zh
Application granted granted Critical
Publication of CN1241115C publication Critical patent/CN1241115C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

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
    • 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/3017Runtime instruction translation, e.g. macros
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/325Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter

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)
  • Advance Control (AREA)

Abstract

本发明涉及一种采用代码压缩的电子设备,该设备包含流水线处理器(25)、允许预测下一个调用地址的转移单元(26)、代码解压单元(27)和存储器(28),为该组合的处理器(25)、转移单元(26)和解压单元(27)而定义的一个新的压缩指令集。解压单元(27)适合于通过译码已经被插入该新指令集的循环开始和循环结束标号而向转移单元(26)发送对应循环的开始和结束的两个信号。转移单元(26)处理这两个信号。本发明也涉及对这种处理器的管理方法。

Description

处理压缩程序代码的电子设备和方法
技术领域
本发明涉及采用代码压缩的电子设备,该设备包含一个流水线处理器,并且涉及对这种处理器的管理方法。
背景技术
复杂的单板电子设备的设计者经常需要用RISC(精简指令集计算机)的处理能力来实现具有高级特性和性能的设备,并需要尽可能低的固定成本。事实上,这是难以实现的。这种集成在专用集成电路(ASIC)中的单板RISC处理器,例如在存储容量方面,尤其在它们的代码存储容量方面,展现出局限的特性。代码压缩方法事实上会使用于单板应用的存储容量降低。
如本说明书结尾处的参考文件[1]和[2]中所述的称作”Codepack”的IBM的代码压缩设备是这种类型的设备的实现的一个例子。
如本说明书参考文件[2]中所述及图1中所示的代码压缩技术,一般包含:
一方面,利用软件程序10将源代码11转换成放置在程序存储器13中的压缩指令12;
另一方面,在位于RISC处理器16与存储器13之间的解压单元14中解压专用集成电路15中的传输中的(on the fly)指令;总线18和19分别是内部和外部总线。
然而,这种压缩技术具有重大缺点:由于被压缩的和然后被解压的指令的流与没有这些压缩和解压步骤时原本的流的不同,有一部分处理能力损失。参考文件[2]由此预测的运行能力的损失达10%。
另一方面,当RISC处理器被采用时,其体系结构也可能影响设备的性能。多数RISC处理器事实上具有一个流水线,流水线的阶段数目取决于处理器的设计。这也适用于例如Advanced Risc MachineLtd公司的ARM7处理器和MIPs公司的R3000处理器。所有流水线的第一阶段都是取指阶段。在这个阶段,处理器启动其地址总线,以在其数据总线上获得一条指令。在这种处理器中,每个在条件转移指令中终止的程序循环会导致大量的时间损失:事实上,有几条指令—其数量取决于流水线的范围—是在条件转移后被调用的,并且在发生一个朝向循环的起点的转移时这些指令是不被执行的。流水线然后必须被清空,在循环的开始时再填充。流水线就这样先被清空,然后在从每次循环回到的循环的开始处时被再填充,这对处理器的性能有负面影响。
图2表示在具有三个阶段的流水线执行一个n个指令的循环期间的这种缺点,第n个指令是条件转移指令。这三个阶段分别是,取值阶段(任务A)、解码阶段(任务B)、执行阶段(任务C)。在本例中,每次执行该循环,就有标注号为20的两个对应于该循环的外部的指令调用的周期(周期n+1和n+2)损失,这导致处理器处理能力的降低。所示带阴影线的周期对应于清空周期。假设这个循环被执行100次,并且循环的大小是20条指令,则损失了2000个周期中的200个,这表示大约10%的损失。
为了解决这个问题,如参考文件[3]中所述,一些微处理器采用允许能预测下一个调用地址的转移单元。但是,在单板电子设备领域中,传统上使用的处理器不具有这种单元,因为在这个领域中,要努力在成本和自主方面做得尽可能精确。
发明内容
本发明的目的是弥补上述的缺点。
本发明涉及一种采用代码压缩的电子设备,该设备包含一个流水线处理器、一个允许预测下一个调用地址的转移单元、一个代码解压单元和一个存储器,为该组合的处理器、转移单元和解压单元而定义的一个新的压缩指令集,特征在于,解压单元适合于通过译解已经被插入该新指令集的循环开始和循环结束标号而向转移单元发送对应循环的开始和结束的两个信号,并且转移单元适合于处理这两个信号。
在没有循环开始或循环结束信号时是透明地运行的转移单元,在这个情况中执行将复制输入信号到输出信号。
本发明也涉及一种在以条件转移指令来结束压缩程序循环的对流水线处理器管理的方法,其特征在于该方法包含:
-将循环开始和循环结束标号插入到循环中的第一条和最后一条指令中;
-在遇到循环开始标号时,存储循环开始地址;
-在遇到循环结束标号时,如果是返回循环,则考虑位于循环开始地址的指令。
本发明提出的解决方案可被应用于多数采用压缩技术的RISC处理器。它能降低执行时间,并在代码大小和处理能力之间提供良好的折衷。
按照本发明的设备能被有意地用于便携式设备的领域,特别是以移动电话为工具的电信领域。一方面,它允许在增加新特征功能时避免增加存储器尺寸;另一方面,它允许实现极具竞争力的成本。
本发明的这些和其它方面,将在后文通过结合实施例的非限定性举例说明而得到阐述和变得显而易见。
附图说明
图1表示已知类型的代码压缩/解压设备。
图2表示在一个n个指令的循环的执行期间具有三个阶段的流水线的行为,其中第n个指令是条件转移指令。
图3表示按照本发明的设备。
图4表示按照本发明的设备的操作的例子的流程图。
具体实施方式
如图3中所示,按照本发明的设备是一个采用代码压缩的设备,它包含一个诸如单板处理器的流水线处理器25、一个转移单元26、一个为减少流水线被清空的次数而改进的解压单元27、一个存储器28。图中显示了地址总线BA、数据总线BD、控制信号SC和本发明专用的两个信号BeginOfLoop和EndOfLoop。
转移单元26允许为避免清空流水线而能预测正确地址。
将循环开始和循环结束标号插入到每个循环的第一条和最后一条指令中。这样,在遇到循环开始标号时,循环开始地址被存储。在遇到循环结束标号时,如果是返回循环,所考虑的指令不是位于该循环的之后的地址的指令,而是位于该循环的开始地址的指令。因此就不再需要为再次执行循环而清空流水线。因此,除了在循环结尾处存在的清空,所有的流水线清空都被避免。
在按照本发明的设备中,将转移单元26安置在处理器的外部,这允许处理器的操作得到改善,并且弥补解压单元27在性能方面的影响。
在如图3中所示的按照本发明的设备中,专用集成电路(ASIC)可包含:
-所有的部件25、26、27和28,或者
-除留在外部的存储器28以外的所有的部件,或者
-除处理器25以外的所有的部件,或者
-转移单元26和解压单元27。
对应于图3中所示的设备的实施例的特点,是在单板应用中广泛采用的ARM7TDMI类型的处理器25。
解压单元27允许通过译解插在压缩指令集中的循环开始和循环结束两个标号,向转移单元26生成两个信号“BeginOfLoop”和“EndOfLoop”。控制信号SC是允许访问存储器的信号,ABORT(异常中止)信号允许在处理器上生成一个例外,nEXEC信号指示执行阶段中的某个指令不在正被执行的过程中,nOPC信号指示一个操作码调用。
对于不对应于取操作码的存储器调用,转移单元是透明的,它包含复制由下列等式所代表的地址和数据总线:Abu[31:0]=Ap[31:0]和Dbu[31:0]=Dp[31:0]。
因此在图4中的流程图中表示转移单元26的一例操作,该流程图连续地显示:
-循环开始测试(标注号30),
-被指定为关于指令的大小的“偏移量”(offset)的初始变量的初始化(标注号31),
-循环结束测试(标注号32),
-变量偏移量的修改(标注号33),
-被指定为“下标”(index)的第二个变量的初始化(标注号35),
-循环结束指令在处理器的执行阶段中时的时间的测试(标注号36),
-被执行的条件转移测试(标注号37),
-ABORT例外的生成(标注号38),
-使流水线现象透明并避免任何清空的测量(标注号39)。
当条件转移没有被执行时,生成一个ABORT例外,以便退出循环。这个例外改变其返回地址,以便正确地恢复代码的执行。
参考文件:
[1]“PowerPC Adopts Code Compression”(PowerPC采用代码压缩),Jim Turley,(Microdesign Resources,1998.10.26,Microprocessor Report)
[2]“CodePackTM:Code Compression for PowerPCTMProcessors”(CodePackTM:PowerPCTM处理器的代码压缩),Mark Game和AlanBooker(因特网网址:www.chip.ibm.com/products/powerpc/corer/cd pack-wp.pdf;1.0版)
[3]“PowerPC 630eTMRISC Microprocessor TechnicalSummary”(PowerPC 630eTMRISC微处理器技术摘要)(MPR603TSU-04,MPC603E/D,摩托罗拉公司,1995,1-32页)

Claims (9)

1.一种采用代码压缩的电子设备,该设备包含一个流水线处理器(25)、一个允许预测下一个指令的地址的转移单元(26)、一个代码解压单元(27)和一个存储器(28),为该组合的处理器(25)、转移单元(26)和解压单元(27)而定义的一个新的压缩指令集,其特征在于,该解压单元(27)适合于通过译码已经被插入该新的压缩指令集的循环开始和循环结束标号而向转移单元(26)发送用于循环的开始和结束的两个信号,并且转移单元(26)适合于处理这两个信号。
2.如权利要求1中所要求的设备,其中,转移单元(26)在没有循环开始或循环结束信号时透明地运行,并因此在这个情况中执行将输入信号复制到输出信号。
3.如权利要求1中所要求的设备,包括一个含有处理器(25)、转移和解压单元(26、27)和存储器(28)的专用集成电路。
4.如权利要求1中所要求的设备,包括一个将处理器(25)与转移和解压单元(26、27)集成在一起的专用集成电路。
5.如权利要求1中所要求的设备,包括一个将转移和解压单元(26、27)与存储器(28)集成在一起的专用集成电路。
6.如权利要求1中所要求的设备,包括一个将转移和解压单元(26、27)集成在一起的专用集成电路。
7.如权利要求1-6任何一项权利要求中所要求的设备,该设备是单板设备。
8.一种依靠条件转移指令终止的压缩程序循环的对流水线处理器管理的方法,其特征在于,该方法包含下述步骤:
将循环开始和循环结束标号插入到循环中的第一条和最后一条指令中;
在遇到循环开始标号时,存储循环开始地址;
在遇到循环结束标号时,如果是返回循环,则考虑位于循环开始地址的指令。
9.如权利要求8中所要求的方法,其中,流水线处理器是精简指令集计算机处理器。
CNB028112261A 2001-06-06 2002-06-04 处理压缩程序代码的电子设备和方法 Expired - Fee Related CN1241115C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR0107387A FR2825810A1 (fr) 2001-06-06 2001-06-06 Dispositif electronique a processeur pipeline utilisant un compactage de code et procede de gestion d'un tel processeur
FR01/07387 2001-06-06

Publications (2)

Publication Number Publication Date
CN1513138A CN1513138A (zh) 2004-07-14
CN1241115C true CN1241115C (zh) 2006-02-08

Family

ID=8864005

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB028112261A Expired - Fee Related CN1241115C (zh) 2001-06-06 2002-06-04 处理压缩程序代码的电子设备和方法

Country Status (7)

Country Link
US (1) US20040172525A1 (zh)
EP (1) EP1399809A1 (zh)
JP (1) JP2004533065A (zh)
KR (1) KR20030024831A (zh)
CN (1) CN1241115C (zh)
FR (1) FR2825810A1 (zh)
WO (1) WO2002099632A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7552316B2 (en) * 2004-07-26 2009-06-23 Via Technologies, Inc. Method and apparatus for compressing instructions to have consecutively addressed operands and for corresponding decompression in a computer system
US10817224B2 (en) 2016-06-23 2020-10-27 Qualcomm Incorporated Preemptive decompression scheduling for a NAND storage device
US11086631B2 (en) * 2018-11-30 2021-08-10 Western Digital Technologies, Inc. Illegal instruction exception handling

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0863355A (ja) * 1994-08-18 1996-03-08 Mitsubishi Electric Corp プログラム制御装置及びプログラム制御方法
GB2323190B (en) * 1997-03-14 2001-09-19 Nokia Mobile Phones Ltd Executing nested loops
GB2325535A (en) * 1997-05-23 1998-11-25 Aspex Microsystems Ltd Data processor controller with accelerated instruction generation
US6189092B1 (en) * 1997-06-30 2001-02-13 Matsushita Electric Industrial Co., Ltd. Pipeline processor capable of reducing branch hazards with small-scale circuit
GB2366643B (en) * 2000-05-25 2002-05-01 Siroyan Ltd Methods of compressing instructions for processors

Also Published As

Publication number Publication date
CN1513138A (zh) 2004-07-14
KR20030024831A (ko) 2003-03-26
FR2825810A1 (fr) 2002-12-13
US20040172525A1 (en) 2004-09-02
EP1399809A1 (en) 2004-03-24
JP2004533065A (ja) 2004-10-28
WO2002099632A1 (en) 2002-12-12

Similar Documents

Publication Publication Date Title
CN1126034C (zh) 通过指令集结构转换的指令集模拟
JP5727107B2 (ja) バイナリトランスレーションを実行する方法及びシステム
US8667476B1 (en) Instruction grouping and ungrouping apparatus and method for an adaptive microprocessor system
CN1468399A (zh) 使用微代码引擎的java硬件加速器
EP0888584A1 (en) Central processing unit having an x86 and dsp core and including a dsp function decoder which maps x86 instructions to dsp instructions
CN1641612A (zh) 按照类型对中断计数的方法和装置
US5819067A (en) Computer system configured to translate a computer program into a second computer program prior to executing the computer program
EP1387249A2 (en) RISC processor having a stack and register architecture
EP0908813B1 (en) Method and apparatus for implementing multiple return sites
CN1241115C (zh) 处理压缩程序代码的电子设备和方法
US7840789B2 (en) Data hiding in compiled program binaries for supplementing computer functionality
US7360060B2 (en) Using IMPDEP2 for system commands related to Java accelerator hardware
JP2004062220A (ja) 情報処理装置、情報処理方法、およびプログラム変換装置
US7155570B1 (en) FIFO write/LIFO read trace buffer with software and hardware loop compression
US20010001154A1 (en) Processor using less hardware and instruction conversion apparatus reducing the number of types of instructions
EP1387256B1 (en) Program counter adjustment based on the detection of an instruction prefix
EP1387250A2 (en) Processor that accomodates multiple instruction sets and multiple decode modes
Glossner et al. Delft-Java dynamic translation
CN1270233C (zh) 远跳跃及远呼叫指令的退回分支预测机制的处理器及方法
US7395413B2 (en) System to dispatch several instructions on available hardware resources
Krall et al. JavaVM implementation: Compilers versus hardware
CN101042641A (zh) 一种具有动态提交流水线功能的数字信号处理器
CN1781088A (zh) 能够高效处理汇聚设备应用的多线程处理器
EP0992881A1 (en) A processor
Gergely et al. Binary code compression based on decision trees

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
C19 Lapse of patent right due to non-payment of the annual fee
CF01 Termination of patent right due to non-payment of annual fee