高性能可扩展指令集计算

上传人:ldj****22 文档编号:35972909 上传时间:2018-03-23 格式:DOC 页数:6 大小:77.50KB
返回 下载 相关 举报
高性能可扩展指令集计算_第1页
第1页 / 共6页
高性能可扩展指令集计算_第2页
第2页 / 共6页
高性能可扩展指令集计算_第3页
第3页 / 共6页
高性能可扩展指令集计算_第4页
第4页 / 共6页
高性能可扩展指令集计算_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《高性能可扩展指令集计算》由会员分享,可在线阅读,更多相关《高性能可扩展指令集计算(6页珍藏版)》请在金锄头文库上搜索。

1、高性能可扩展指令集计算高性能可扩展指令集计算H.LEEH.LEE韩国先进数字芯片公司(韩国先进数字芯片公司(AdvancedAdvanced DigitalDigital ChipsChips Inc.Inc.)摘要摘要在这篇论文中,我们提出了一种新的体系结构 EISC(即可扩展指令集计算机) ,并且 讨论了在嵌入式微处理器系统中存储器容量大小和性能的关系。这中结构使用一套高效、 定长的 16 位指令集,使用短偏移量和立即数,并且通过扩展标志位的操作,这种短偏移量 和立即数能扩展到 32 位。 EISC 指令集的代码密度和它的存储器数据传送性能大大优于现存的结构。因此 EISC 结构非常适和下

2、一代嵌入式计算机系统。1序言序言自从七十年代以来,微处理器已应用在许多嵌入式系统中,这样的产品多种多样,从家用自动化、工业控制到现在的 PDA 产品和网络计算机1。在八十年代,RISC 结构【2】的出现使得微处理器能够进入小型计算机应用领域。随后,半导体技术进一步发展,微处理器的操作速度也有了更大的提高【47】 ,并且同时引入了超标量结构【3】 。尽管已取得这么多的进步,程序的执行仍然需要从存储器中读取程序和数据。近年来存储器的存储容量大幅增加,读写时间也大大缩短,但是它们的性能增长速度还是不能满足微处理器对其的需要。如:在 1980 年,DRAM 的存取时间为 250nsec;到 1988

3、年,它的运行频率达到 300MHz快了 70 倍。但是在同期间,微处理器核却从 8M(8086 系列)增至到 500MHz(Pentium2 系列) 。如果 P2 的超标量特性也算在内,它的性能实际上可达到 1GHz快了 120 倍。很明显,微处理器的瓶颈既在存储器和 CPU 的速度差异上,又在连接 CPU 和存储器的总线结构的物理特性上(从位宽和吞吐量方面分析) 【8】 。并且在集成了存储器、微处理器和 I / O 电路的微处理器单片系统中,芯片的价格主要取决于其尺寸大小。由于存储器电路(RAM 和 ROM)占了大部分区域,所以芯片的价格受存储器容量大小的影响。在这篇文章中,提出了可扩展指令

4、计算机结构(EISC) 。这种 EISC 结构有一套高效、定长的指令集,并采取短偏移量和小立即数。它能有效地解决存储容量和带宽这个问题,它们的短偏移量和立即数也能够通过扩展标志位(eflag)扩展到 32 位。这样能提高 32 位微处理器的代码密度。同时还提出了一套方案来解决 eflag 对深度管道和超标量结构的影响。在文章中,我们同时也拿 MIPSR3000 与可扩展指令集结构(EISC)进行比较,从而说明这种结构引出的原因和实现的方法。2嵌入式微处理器嵌入式微处理器近年来在嵌入式微处理器这个领域,对总线带宽和存储容量这对矛盾已经做了很多工作。一种方法是按照不同的结构形式进行代码压缩(【9】

5、 , 【10】 , 【11】 ) 。如:在文【12】中,提出了一种软件方法【13】 。它采用一个代码字来作为一系列指令序列的索引,并用这个索引代替经常用的指令序列。另外一种方法是指在 32 位 RISC 结构中所采用的一套压缩 16 位指令集。ARM7TDMI【14】是指ARM7 的 16 位压缩指令集版本;TR4101 是指 MIPSR3000(【1】 , 【14】 )的 16 位压缩指令结构。这些带 16 位压缩指令集的 RISCs 结构很复杂因为它们需要与现在的 RISC 兼容,并且这种版本只能寻址 8个寄存器,从而减弱了其性能。3扩展指令集扩展指令集为了详述 EISC 的指令集,我们先

6、从现有的一些处理器(特别是 MIPSR3000)的指令集分析开始,为此我们采用了 EGCS-1.1【15】 、NEWLIB-1.8.1C 语言库【16】 、LIBSTDC+-2.8.1C语言库【17】和各种测试例程。这样分析能得出嵌入式微处理器系统的一般特性(其中某些特性是这些处理器共有的) 。如:。16 个通用寄存器一般能达到最优。Load 和 Store 指令使用频繁,并且大部分采用短偏移量寻址。小常数使用频率高为了更有效地支持这些特性,EISC 结构使用 16 位定长指令系统并且通过扩展偏移量和常数来构造 32位指令系统。同时采取了两项技术来增加代码密度:构造专用寄存器表来执行 push

7、 和 pop 指令;使用硬件互锁来解决深度管道问题(不再需要使用许多 NOP 指令) 。下面,我们分析 MIPS-R3000 来说明 EISC 主要体系结构的特点。3.13.1 EISCEISC 寄存器寄存器MIPSR3000 有 34 个 32 位寄存。其中 2 个专门用来“乘和除” ;5 个是专用寄存器,用来进行堆栈操作、帧指针和条件码操作;其余的 27 个是通用寄存器。为了研究代码长度和使用的寄存器数目的关系,我们采用不同数量的寄存器,运用 EGCS C/ C+编译器产生基于 C/C库和测试例程的代码,并且进行比较。从表 1 里,我们能看到随着通用寄存器数量越来越少,代码也变得越来越大(

8、我们把使用 27 个寄存器的例子定位标准,为 100) ,Load 和 Store 指令的使用频率也在增长。由于 Load 和 Store 指令使用存储器和总线,它们直接影响发送数据的位宽。我们可以看到当通用寄存器数目从 22 减到 16 时,程序规模和所用的 Load、Store 指令数量都没有什么大的变化。当采用 8 个寄存器时,寄存器显然太少,此时 Load、Store 指令几乎加倍。因此,EISC 采用了 16 个寄存器。No. of RegsProgram sizeLoad/ StoreMove27100.0027.90 %22.58 % 24100.3528.21 %22.31 %

9、 22100.5128.34 %22.27 % 20100.5628.38 %22.24 % 18100.9728.85 %21.93% 16101.6230.22 %20.47 % 14103.4931.84 %19.28 % 12104.4534.31 %16.39 % 10109.4141.02 %10.96% 8114.7644.45 %8.46 %Table-1.Table-1. ProgramProgram sizesize vs.vs. numbernumber ofof registersregisters forfor MIPS-R3000.MIPS-R3000.Instru

10、ctionFrequency move20.27 % lw, sw28.27 % nop7.26 % addiu7.53 % li2.93 % lui3.76 % sh, sb, lh, lb, lhu, lbu1.98% bnez, bne, beqz, beq, bltz.6.69% j, jal10.36 % jr1.79 % Addu, subu,and, or, xor,nor,negu3.33 % Andi, ori, xori2.17 % jalr0.17 % slt, sltu, slti, sltiu1.70 % sll, srl, sra, sllv, srlv, srav

11、1.40% Mult,multu,div, divu0.09 % Break, mfhi, mflo0.12 %Table-2Table-2 InstructionInstruction frequencyfrequency ofof MIPS-MIPS-R3000R3000 withwith sixteensixteen general-purposegeneral-purpose registers.registers.3.23.2 LoadLoad、StoreStore 体系体系表 2 列出了编程时只使用 16 个通用寄存器的 MIPSR3000 CPU 所使用的所有指令的频率。EISC

12、结构有点象 RISC 结构,它所有的操作都通过寄存器,采用寄存器操作对象,对存储器的访问只通过Load、Store 指令。从表 2 各种指令出现的频率我们可清楚地看到在这种情况下(只使用 16 个通用寄存器) ,Load、Store 结构对处理器性能的影响也已经很小。其原因是因为采用存储器参数的指令(如addu、Subu、and 等)出现的频率很小。3.33.3 1616 位定长可扩展指令位定长可扩展指令从表 2 中我们也可得出 MOVE 指令使用频率最高,达到 2027。EISC 有 16 个寄存器,因此需要 4bits 来表示目的和源寄存器。这样 16bits 完全能满足 MOVE 指令的

13、操作使用。使用 16 位定长指令也可简化硬件。虽然大多数指令(如 MOVE 指令)都能用 16 位定长进行操作。但同时也有另外一些指令像使用立即数的指令(如 Load、Store 操作)因为受偏移量和常量位数的限制,它不能完全用 16 位定长进行操作。其中 Load、Store 指令的 93 .5%需要使用 32 位操作数。对 lw(输入字)和 sw(存储字)的特性进行更详细的分析,我们能够得出大约 61%的指令涉及到堆栈指针,大约 40%的指令使用索引寄存器。在后一种情况,有 77%只需用 3bits 偏移量就可表示出来。Offset lengthStack pointer (60.9%)I

14、ndex register (39.1%)3 bit43.2 %77.0 % 4 bit72.6 %81.6 % 5 bit88.1 %89.6 % 6 bit90.5 %91.5 % 7 bit95.7 %93.5 %TableTable 3 3 CharacteristicsCharacteristics ofof lwlw andand swsw instructionsinstructionsConstant rangeFrequency -32 - +3172.4 % -64 - +6386.9 % -128 - + 12793.6 % -256 - +25595.2 % Other

15、s100 %TableTable 4 4 OperandOperand SizeSize ofof lili instructioninstruction使用立即数的指令(如 li输入立即数)并不经常使用,仅仅占全部指令的 2.9%. 另外,从表 4 我们可以看出 93 .6%的指令用 8bits 表示即可。这样一来,绝大多数指令可以用短的偏移量或立即数来实现。这样的情况既适合于像 lw(输入字)和 sw(存储字)这样的指令,也适合于诸如 addiu、slti、sltiu 这样的算术指令。3 3 .4.4 扩展寄存器和扩展标志位扩展寄存器和扩展标志位EISC 结构使用 E 标志(扩展寄存器和扩

16、展标志位)从相近的指令中形成长操作数。E 标志是一个集合。当一个操作数送到 32 位扩展寄存器(即%ER)时,E 标志位置 1。用 Leri 指令(加载扩展寄存器指令)来实现条件转换,由 Eflag 进行控制,在扩展寄存器中形成长立即数。如图 1 所示。Load、Store 指令使用 Eflag 来构造有效地址或 32 位常量。如图 2 所示,当 E 标志位置 1 时,有效地址%ER4偏移量索引寄存器。因为 32 位 Load、Store 指令数量很少,所以这种方法对微处理器的性能影响不大。Instruction Mnemonics : LERI Instruction Format : LERI constant Instruction Representation : bit 15-14 =01 bit 13-0 = constant data bit 13-0 Operation

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号