高性能可扩展指令集计算.docx

上传人:b****7 文档编号:9208914 上传时间:2023-02-03 格式:DOCX 页数:12 大小:22.83KB
下载 相关 举报
高性能可扩展指令集计算.docx_第1页
第1页 / 共12页
高性能可扩展指令集计算.docx_第2页
第2页 / 共12页
高性能可扩展指令集计算.docx_第3页
第3页 / 共12页
高性能可扩展指令集计算.docx_第4页
第4页 / 共12页
高性能可扩展指令集计算.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

高性能可扩展指令集计算.docx

《高性能可扩展指令集计算.docx》由会员分享,可在线阅读,更多相关《高性能可扩展指令集计算.docx(12页珍藏版)》请在冰豆网上搜索。

高性能可扩展指令集计算.docx

高性能可扩展指令集计算

高性能可扩展指令集计算

韩国先进数字芯片公司(AdvancedDigitalChipsInc.)

摘要

在这篇论文中,咱们提出了一种新的体系结构EISC(即可扩展指令集计算机),而且讨论了在嵌入式微处置器系统中存储器容量大小和性能的关系。

这中结构利用一套高效、定长的16位指令集,利用短偏移量和当即数,而且通过扩展标志位的操作,这种短偏移量和当即数能扩展到32位。

EISC指令集的代码密度和它的存储器数据传送性能大大优于现存的结构。

因此EISC结构超级适和下一代嵌入式计算机系统。

1.序言

自从七十年代以来,微处置器已应用在许多嵌入式系统中,这样的产品多种多样,从家用自动化、工业控制到此刻的PDA产品和网络计算机[1]。

在八十年代,RISC结构【2】的出现使得微处置器能够进入小型计算机应用领域。

随后,半导体技术进一步发展,微处置器的操作速度也有了更大的提高【4-7】,而且同时引入了超标量结构【3】。

虽然已取得这么多的进步,程序的执行仍然需要从存储器中读取程序和数据。

最近几年来存储器的存储容量大幅增加,读写时间也大大缩短,可是它们的性能增加速度仍是不能知足微处置器对其的需要。

如:

在1980年,DRAM的存取时间为250nsec;到1988年,它的运行频率达到300MHz——快了70倍。

可是在同期间,微处置器核却从8M(8086系列)增至到500MHz(Pentium2系列)。

若是P2的超标量特性也算在内,它的性能实际上可达到1GHz——快了120倍。

很明显,微处置器的瓶颈既在存储器和CPU的速度不同上,又在连接CPU和存储器的总线结构的物理特性上(从位宽和吞吐量方面分析)【8】。

而且在集成了存储器、微处置器和I/O电路的微处置器单片系统中,芯片的价钱主要取决于其尺寸大小。

由于存储器电路(RAM和ROM)占了大部份区域,所以芯片的价钱受存储器容量大小的影响。

在这篇文章中,提出了可扩展指令计算机结构(EISC)。

这种EISC结构有一套高效、定长的指令集,并采取短偏移量和小当即数。

它能有效地解决存储容量和带宽这个问题,它们的短偏移量和当即数也能够通过扩展标志位(e—flag)扩展到32位。

这样能提高32位微处置器的代码密度。

同时还提出了一套方案来解决e-flag对深度管道和超标量结构的影响。

在文章中,咱们同时也拿MIPS-R3000与可扩展指令集结构(EISC)进行比较,从而说明这种结构引出的原因和实现的方式。

2.嵌入式微处置器

最近几年来在嵌入式微处置器这个领域,对总线带宽和存储容量这对矛盾已经做了很多工作。

一种方式是

依照不同的结构形式进行代码紧缩(【9】,【10】,【11】)。

如:

在文【12】中,提出了一种软件方式【13】。

它采用一个代码字来作为一系列指令序列的索引,并用这个索引代替经常常利用的指令序列。

另外一种方式是指在32位RISC结构中所采用的一套紧缩16位指令集。

ARM-7TDMI【14】是指

ARM-7的16位紧缩指令集版本;TR4101是指MIPS-R3000(【1】,【14】)的16位紧缩指令结构。

这些带16位紧缩指令集的RISCs结构很复杂因为它们需要与此刻的RISC兼容,而且这种版本只能寻址8个寄放器,从而减弱了其性能。

3.扩展指令集

为了详述EISC的指令集,咱们先从现有的一些处置器(特别是MIPS-R3000)的指令集分析开始,为此咱们采用了【15】、语言库【16】、LIBSTDC++语言库【17】和各类测试例程。

这样分析能得出嵌入式微处置器系统的一般特性(其中某些特性是这些处置器共有的)。

如:

16个通用寄放器一般能达到最优。

Load和Store指令利用频繁,而且大部份采用短偏移量寻址

小常数利用频率高

为了更有效地支持这些特性,EISC结构利用16位定长指令系统而且通过扩展偏移量和常数来构造32位指令系统。

同时采取了两项技术来增加代码密度:

构造专用寄放器表来执行push和pop指令;利用硬件互锁来解决深度管道问题(再也不需要利用许多NOP指令)。

下面,咱们分析MIPS-R3000来讲明EISC主要体系结构的特点。

EISC寄放器

MIPS-R3000有34个32位寄放。

其中2个专门用来“乘和除”;5个是专用寄放器,用来进行堆栈操作、帧指针和条件码操作;其余的27个是通用寄放器。

为了研究代码长度和利用的寄放器数量的关系,咱们采用不同数量的寄放器,运用EGCSC/C++编译器产生基于C/C++库和测试例程的代码,而且进行比较。

从表1里,咱们能看到随着通用寄放器数量愈来愈少,代码也变得愈来愈大(咱们把利用27个寄放器的例子定位标准,为100),Load和Store指令的利用频率也在增加。

由于Load和Store指令利用存储器和总线,它们直接影响发送数据的位宽。

咱们可以看到当通用寄放器数量从22减到16时,程序规模和所用的Load、Store指令数量都没

有什么大的转变。

当采用8个寄放器时,寄放器显然太少,此时Load、Store指令几乎加倍。

因此,EISC采用了16个寄放器。

 

No.ofRegs

Programsize

Load/Store

Move

27

%

%

24

%

%

22

%

%

20

%

%

18

%

%

16

%

%

14

%

%

12

%

%

10

%

%

8

%

%

Table-1.Programsizevs.numberof

registersforMIPS-R3000.

 

Instruction

Frequency

move

%

lw,sw

%

nop

%

addiu

%

li

%

lui

%

sh,sb,lh,lb,lhu,lbu

%

bnez,bne,beqz,beq,bltz...

%

j,jal

%

jr

%

Addu,subu,and,or,xor,nor,negu

%

Andi,ori,xori

%

jalr

%

slt,sltu,slti,sltiu

%

sll,srl,sra,sllv,srlv,srav

%

Mult,multu,div,divu

%

Break,mfhi,mflo

%

Table-2InstructionfrequencyofMIPS-R3000

withsixteengeneral-purposeregisters.

Load、Store体系

表2列出了编程时只利用16个通用寄放器的MIPS-R3000CPU所利用的所有指令的频率。

EISC结构有点象RISC结构,它所有的操作都通过寄放器,采用寄放器操作对象,对存储器的访问只通过Load、Store指令。

从表2各类指令出现的频率咱们可清楚地看到在这种情况下(只利用16个通用寄放器),Load、Store结构对处置器性能的影响也已经很小。

其原因是因为采用存储器参数的指令(如addu、Subu、and等)出现的频率很小。

16位定长可扩展指令

从表2中咱们也可得出MOVE指令利用频率最高,达到20-27%。

EISC有16个寄放器,因此需要4bits来表示目的和源寄放器。

这样16bits完全能知足MOVE指令的操作利用。

利用16位定长指令也可简化硬件。

虽然大多数指令(如MOVE指令)都能用16位定长进行操作。

但同时也有另外一些指令像利用当即数的指令(如Load、Store操作)因为受偏移量和常量位数的限制,它不能完全用16位定长进行操作。

其中Load、Store指令的93.5%需要利用32位操作数。

对lw(输入字)和sw(存储字)的特性进行更详细的分析,咱们能够得出大约61%的指令涉及到堆栈指针,大约40%的指令利用索引寄放器。

在后一种情况,有77%只需用3bits偏移量就可表示出来。

Offsetlength

Stackpointer%)

Indexregister

%)

3bit

%

%

4bit

%

%

5bit

%

%

6bit

%

%

7bit

%

%

Table3Characteristicsof

'lw'and'sw'instructions

Constantrange

Frequency

-32--+31

%

-64--+63

%

-128--+127

%

-256--+255

%

Others

100%

Table4OperandSizeof

‘li’instruction

利用当即数的指令(如li-输入当即数)并超级常利用,仅仅占全数指令的%.另外,从表4咱们可以看出93.6%的指令用8bits表示即可。

这样一来,绝大多数指令可以用短的偏移量或当即数来实现。

这样的情况既适合于像lw(输入字)和sw(存储字)这样的指令,也适合于诸如addiu、slti、sltiu这样的算术指令。

3.4扩展寄放器和扩展标志位

EISC结构利用E标志(扩展寄放器和扩展标志位)从相近的指令中形成长操作数。

E标志是一个集合。

当一个操作数送到32位扩展寄放器(即%ER)时,E标志位置1。

用Leri指令(加载扩展寄放器指令)来实现条件转换,由E-flag进行控制,在扩展寄放器中形成长当即数。

如图1所示。

Load、Store指令利用E-flag来构造有效地址或32位常量。

如图2所示,当E标志位置1时,有效地址=%ER<<4+偏移量+索引寄放器。

因为32位Load、Store指令数量很少,所以这种方式对微处置器的性能影响不大。

 

InstructionMnemonics:

LERI

InstructionFormat:

LERIconstant

InstructionRepresentation:

bit15-14=01

bit13-0=constantdatabit13-0

Operation;

If(Eflagis0)Load%ERwithsignextendedconstant

ELSE%ER=%ER<<14+Constant

SetEflag

Figure1.OperationoftheLERIinstruction

InstructionFunction:

Load/Store

InstructionRepresentation:

bit15-14=00

bit13-12,7=Operation

000:

signextend8bitloadLDBSRCDST

001:

signextend16bitloadLDSSRCDST

010:

32bitloadLDSRCDST

011:

Zeroextend8bitloadLDBUSRCDST

100:

8bitstoreSTBSRCDST

101:

16bitstoreSTSSRCDST

110:

32bitstoreSTSRCDST

111:

Zeroextend16bitloadLDSUSRCDST

bit11-8=Source/Destinationregister.%R0to%R15.

bit6-4=offsetbit2-0if8bitload/store

=offsetbit3-1if16bitload/store

=offsetbit4-2if32bitload/store

bit3-0=Indexregister.%R0thru%R15.

Effectiveoperandaddress:

EA

Operation:

If(Eflagis0)

EA=Zeroextendoffset+Indexregister

If(Eflagis1)

if(32/16bitload/store)

EA=%ER<<4+Offset+Indexregister

if(8bitload/store)

EA=%ER<<3+Offset+Indexregister

Figure2.OperationoftheLDinstruction

堆栈指针

如表3所示,涉及到堆栈指针的Load、Store指令和涉及到索引寄放器的Load、Store指令需要不同长度的操作数。

对于前一种情况,所需偏移量要超过5位;而对于后一种情况,大部份指令(大约77%)只需用3位操作数。

正因为如此,32位EISC指令集用7位来表示Load、Store指令的堆栈操作。

在上面的分析实验中,堆栈操作(push和pop)利用频率很高(约%)。

而且当8个寄放器绑定在一路时,push、pop寄放器操作数大约为。

这表明值得加入push、pop表类型的指令。

相对RISC机械来讲,这种方式在CISC结构中更常常利用。

它能减少push、pop指令所用的存储器量,但也带来一些问题。

它影响超标量和深层管道设置。

一个很简单的解决方式就是禁止在这样的设置中的单指令执行多重push、pop指令。

由于不需要完全知足二进制兼容,这种方式完全可行。

从表2可以看出Addiu(当即数加法指令)利用频率是%。

在这些指令当中,堆栈指针利用频率达到35%,而且95%利用7位常数操作码。

所以32位EISC指令集针对堆栈指针概念了7位常数操作码计算能力。

其余指令

如表2所示,条件转移指令利用的频度为%。

在EISC指令集中,通过进位标志位、符号标志位、零标志位和溢出标志位形成14种条件转移指令。

这些指令的偏移量定为9bits,并通过扩展标志位扩展到32位。

也同时可看到,在所有的ALU指令中约48.5%利用二个操作数,%利用三个操作数。

可是,三操作数指令能通过利用MOVE指令和相应的二操作数指令来代替。

在EISC结构中就采取了这种方式。

像乘和减这样的指令用得很少,但它们在多媒体应用中很有效,而且这种指令的性能很大部份取决于操作方式。

EISC用2个32位寄放器(%ML和%MH)来存储乘、减操作的结果。

EISC也可加入一系列的协处置器来完成特别的功能。

每一个协处置器有16个通用寄放器。

“0”协处置器是一个系统协处置器,用来管理缓存、管道和存储器等。

另外一些协处置器用来进行浮点运算和多媒体加速。

协处置器指令位数通过利用扩展寄放器能扩到20位或30位。

4.性能评估

咱们用RCD(相对码密度)来评价EISC结构并现有的微处置器进行比较对比。

RCD概念如下:

32位EISC码密度用来比较的微处置器的程序大小

RCD=―――――――――――=――――――――――――――――――

用来比较的微处置器的码密度32位EISC的程序大小

在这次评估中咱们用一个交叉C/C++编译器,对C/C++库和测试例程别离在32位EISC和现存的微处置器上进行编译测试,然后得出RCD数据如表7所示。

Processor

RCD

Processor

RCD

32bitEISC

MC88000

MIPS-R3000

MC5200(Coldfire)

TR4101(MIPS-16)

MC68000

MIPS-R4000

MC68332

MIPSTX-39

MC68020

ARM-7

MN10300

ARM-7TDMI(THUMB)

Pentium(I80386)

PowerPC601

I80960

SPARCV8

ARC

SPARCLITE

SH-3

PA-RISC

V850

Alpha-RISC

M32R

Table7.RelativeCodeDensityof32-bitEISC.

32bitEISC

TR4101

ARM-7TDMI

RCD

Load/Store

%

%

%

Table8Comparisonbetween32bitEISC

and16bitcompressedRISC

 

从表7,通过比较EISC和现有的微处置器测试结果,咱们可以看出EISC的相对码密度是最高的(即码块最小)。

如,在测试基准例程中,EISC的码密度比MIPS-R3000高66%(采用32位RISC结构测试例程)。

ARM-7与EISC相较,相对码密度达到.

乃至CISC处置器如MC68000、I80386,它们的RCD数字也从到不等。

这说明CISC处置器的程序规模也比EISC的大20%到40%.

与EISCRCD数字最接近的是ARM-7TDMI和TR4101。

它们是16位紧缩RISC处置器。

可是这些结构只能寻址8个通用寄放器,它们加大了Load、Store指令的利用频度,也就相应增加了必需的存储带宽。

如,

TR4101的程序规模比EISC的大7%,Load、Store指令的操作频度却大18%。

这样一来,TR4101就需要比EISC高25%的数据发送率。

对ARM-7TDMI来讲,也需要多30%的数据发送率。

5.结论

这篇文章提出了一种新的结构EISC(可扩展指令集计算机)。

它主要面向嵌入式系统市场。

嵌入式处置器的性能价钱比特别受其存储系统的容量和带宽的影响。

在这方面EISC比现有的处置器有了很大的提高。

通过利用扩展寄放器和扩展标志位,EISC有一套高效的定长16位指令集。

它采取短偏移量和当即数,而且这种短偏移量和当即数通过对扩展标志位的操作可扩展到32位。

利用这套机制,EISC结构能够取得更高的代码密度,相当于现有的RISC处置器140%到220%,比CISC高20%到40%,乃至与诸如ARM-7TDMI这样子的RISC处置器相较,虽然它们利用16位紧缩指令集,EISC的程序规模仍然比其小5%到15%,而且其Load、Store指令利用频率低15%。

因此,EISC结构超级适合于要求代码小、存储带宽低的嵌入式应用系统中。

6.参考文献

[1]ManfredSchlett,"TrendsinEmbedded-MicroprocessorDesign,"IEEEComputer,pp.44-50,Aug.1998.

[2]D.Patterson,"ReducedInstructionSetComputer,"Comm.ACM,Vol.28,No.1,pp.8-21,Jan.1985.

[3]DezsoSimaetal.,"SuperscalarInstructionIssue,"IEEEMicro,pp.28-39,Oct.1987.

[4]B.Giesekeetal.,"A600MHzSuperscalarRISCMicroprocessorwithout-of-orderexecution,"ISSCCDigestTech.Papers,pp.176-177,Feb.1997.

[5]C.A.Maieretal.,"A533MHzBiCMOSSuperscalarRISCMicroprocessor,"IEEEJournalofSolid-StateCircuits,Vol.32,No.11,pp.1625-1634,Nov.1997.

[6]CharlesF.Webbetal.,"A400MHzS/390Micro-processor,"IEEEJournalofSolid-StateCircuits,Vol.32,No.11,pp.1665-1675,Nov,1997.

[7]PaulE.Gronowskietal.,"High-PerformanceMicroprocessorDesign,"IEEEJournalofSolid-StateCircuits,Vol.33,No.5,pp.676-686,May1998.

[8]DougBurger,"LimitedBandwidthtoAffectProcessorDesign,"IEEEMicro,pp.55-62,Dec.1997

[9]A.Wolfe&A.Chanin,“ExecutingCompressedProgramsonanEmbeddedRISCArchitecture,”Proceedingsofthe25thAnnualInternationalSymposiumonMicroarchitecture,December1992.

[10]M.KozuchandA.Wolfe,“CompressionofEmbeddedSystemPrograms,”IEEEInternationalConferenceonComputerDesign,1994.

[11]C.W.Fraser,T.A.Proebsting,"CustomInstructionSetsforCodeCompression",unpublished,October1995.

[12]C.LefurgyandT.Mudge,"CodeCompressionforDSP",CASES'98,Dec.4-5,1998,.~tnm/compress

[13]C.LefurgyandT.Mudge,"FastSoftware-managedCodeDecompression",CASES’99,October1-3,1999,Segarsetal.,"EmbeddedControlProblems,Thumb,andtheARM7TDMI",IEEEMicro,pp.22-30,Oct.1995

[14]P.Weicker,"DHRYSTONEBenchmarkProgram",CACMVol27,No10,10/84pg.1013.(TranslatedfromADAbyRickRichardson).

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 文学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1