高性能可扩展指令集计算.docx
- 文档编号:9208914
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:12
- 大小:22.83KB
高性能可扩展指令集计算.docx
《高性能可扩展指令集计算.docx》由会员分享,可在线阅读,更多相关《高性能可扩展指令集计算.docx(12页珍藏版)》请在冰豆网上搜索。
高性能可扩展指令集计算
高性能可扩展指令集计算
韩国先进数字芯片公司(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).
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 性能 扩展 指令 计算