RISC-V-指令集及简单实现

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

计算机体系结构周学海xhzhou@ustc.edu.cn0551-63606864中国科学技术大学03/06-review-性能•性能度量–响应时间(responsetime)–吞吐率(Throughput)•CPU执行时间=IC×CPI×T–CPI(CyclesperInstruction)•MIPS=MillionsofInstructionsPerSecond•LatencyversusBandwidth–Latency指单个任务的执行时间,Bandwidth指单位时间完成的任务量(rate)–Latency的提升滞后于带宽的提升(在过去的30年)•Amdahl’sLaw用来度量加速比(speedup)–性能提升受限于任务中可加速部分所占的比例–应用于多处理器系统的基本假设:在给定的问题规模下,研究随着处理器数目的增加性能的变化•Benchmarks:指一组用于测试的程序–比较计算机系统的性能–SPECbenchmark:针对一组应用综合性能值采用SPECratios的几何平均2021/5/11203/06-review-能耗/功耗•给定负载情况下能耗越少,能效越高,特别是对电池供电的移动设备。•功耗已经成为系统设计的重要约束条件之一–Achipmightbelimitedto120watts(cooling+powersupply)•PowerConsumed=DynamicPower+StaticPower–晶体管开和关的切换导致的功耗为动态功耗–由于晶体管静态漏电流导致的功耗称为静态功耗•通过降低频率可节省功耗•降低电压可降低功耗和能耗2021/5/113Recap:指令集架构•软件子系统与硬件子系统的关键界面•一组直接由硬件执行的指令,包括–程序员可见的机器状态–程序员可见的指令集合(操作机器状态的指令)•应具备的特性–成本–简洁性–架构和具体实现分离:可持续多代,以保持向后(backward)兼容–可扩展空间:可用于不同应用领域(desktops,servers,embeddedapplications)–易于编程/编译/链接:为高层软件的设计与开发提供方便的功能–性能:方便低层硬件子系统高效实现•IBM360是第一个将ISA与其实现分离的系列机–给定一个ISA,可以有不同的实现方式;例如AMD/IntelCPU都是X86-64指令集。ARMISA也有不同的实现方式2021/5/114instructionsetsoftwarehardware用户级ISA和特权级ISA•重要的系统界面(SystemInterface)–ISA界面(InstructionSetArchitecture)–ABI界面(ApplicationBinaryInterface)•ISA:用户级ISA+特权级ISA–用户级ISA适用于操作系统和应用程序–特权级ISA适用于硬件资源的管理(操作系统)2021/5/115ISA的实现•ISA通常设计时会考虑特定的微体系结构(实现)方式。–Accumulatorhardwired,unpipelined(硬布线、非流水)–CISCmicrocoded(微程序)–RISChardwired,pipelined(硬布线、流水线)–VLIWfixed-latencyin-orderparallelpipelines(固定延时、顺序执行、多条流水线并行)–JVMsoftwareinterpretation(软件解释)•ISA理论上可以用任何微体系结构(实现)方式–IntelIvyBridge:hardwiredpipelinedCISC(x86)machine(withsomemicrocodesupport)(硬布线流水化(部分微程序支持))–Spike:Software-interpretedRISC-Vmachine(模拟器)–ARMJazelle:AhardwareJVMprocessor2021/5/116Recap:ISA的演进2021/5/117Recap:ISA必须说明哪些东西?•指令格式或编码方式。即如何编码?•操作数和操作结果的存放位置–存放位置?–多少个显式操作数?–存储器操作数如何定位?–哪些操作数可以或不可以放到存储器中?–寻址方式•数据类型和大小•支持哪些操作•下一条指令地址–jumps,conditions,branches–fetch-decode-executeisimplicit!2021/5/118InstructionFetchInstructionDecodeOperandFetchExecuteResultStoreNextInstructionRecap:有关ISA的若干问题•存储器寻址•操作数的类型与大小•所支持的操作•控制转移类指令•指令格式2021/5/119Recap:存储器寻址•80年以来几乎所有机器的存储器都是按字节编址•一个存储器地址可以访问:–一个字节、2个字节、4个字节、更多字节…..•不同体系结构对字的定义是不同的–16位字(IntelX86)32位字(MIPS)•如何读32位字,两种方案–每次一个字节,四次完成;每次一个字,一次完成•问题:(1)如何将字节地址映射到字地址(尾端问题)(2)一个字是否可以存放在任何字节边界上(对齐问题)2021/5/1110Recap:尾端问题•littleendian,bigendian,在一个字内部的字节顺序问题•如地址xxx00指定了一个字(int),存储器中从xxx00处连续存放ffff0000,则有两种方式:–Littleendian方式下xxx00位置是字的最低字节,整数值为0000ffff,Intel80x86,DECVax,DECAlpha(WindowsNT)–Bigendian方式下xxx00位置是字的最高字节,整数值为ffff0000,IBM360/370,Motorola68k,MIPS,Sparc,HPPA2021/5/1111Recap:对齐问题•对s字节的对象访问地址为A,如果Amods=0称为边界对齐。•边界对齐的原因是存储器本身读写的要求,存储器本身读写通常就是边界对齐的,对于不是边界对齐的对象的访问可能要导致存储器的两次访问,然后再拼接出所需要的数。(或发生异常)2021/5/1112Recap:寻址方式•寻址方式:如何说明要访问的对象地址•有效地址:由寻址方式说明的某一存储单元的实际存储器地址。有效地址vs.物理地址2021/5/1113各种寻址方式的使用情况?(忽略寄存器直接寻址)2021/5/1114三个SPEC89程序在VAX结构上的测试结果:立即寻址,偏移寻址使用较多偏移寻址•主要问题:偏移的范围(偏移量的大小)2021/5/1115AlphaArchitecturewithfulloptimizationforSpecCPU2000,showingtheaverageofintegerprograms(CINT2000)andtheaverageoffloating-pointprograms(CFP2000)立即数寻址2021/5/1116AlphaArchitecturewithfulloptimizationforSpecCPU2000,showingtheaverageofintegerprograms(CINT2000)andtheaverageoffloating-pointprograms(CFP2000)立即数的大小2021/5/1117Thedistributionofimmediatevalues.About20%werenegativeforCINT2000andabout30%werenegativeforCFP2000.ThesemeasurementsweretakenonaAlpha,wherethemaximumimmediateis16bits,forthespeccpu2000programs.AsimilarmeasurementontheVAX,whichsupported32-bitimmediates,showedthatabout20%to25%ofimmediateswerelongerthan16bits.寻址方式小结•重要的寻址方式:–偏移寻址方式,立即数寻址方式,寄存器间址方式–SPEC测试表明,使用频度达到75%--99%•偏移字段的大小应该在12-16bits–可满足75%-99%的需求•立即数字段的大小应该在8-16bits–可满足50%-80%的需求2021/5/1118操作数的类型、表示和大小•操作数类型和操作数表示是软硬件的主要界面之一。•操作数类型:是面向应用、面向软件系统所处理的各种数据类型。–整型、浮点型、字符、字符串、向量类型等–类型由操作码确定或数据附加硬件解释的标记,一般采用由操作码确定–数据附加硬件解释的标记,现在已经不采用•操作数的表示:操作数在机器中的表示,硬件结构能够识别,指令系统可以直接使用的表示格式–整型:原码、反码、补码–浮点:IEEE754标准–十进制:BCD码/二进制十进制表示2021/5/1119常用操作数类型•ASCIIcharacter=1byte(64-bitregistercanstore8characters•UnicodecharacterorShortinteger=2bytes=16bits(halfword)•Integer=4bytes=32bits(wordsizeonmanyRISCProcessors)•Single-precisionfloat=4bytes=32bits(wordsize)•Longinteger=8bytes=64bits(doubleword)•Double-precisionfloat=8bytes=64bits(doubleword)•Extended-precisionfloat=10bytes=80bits(Intelarchitecture)•Quad-precisionfloat=16bytes=128bits2021/5/1120操作数的大小2021/5/1121基准测试的结论:(1)对单字、双字的数据访问具有较高的频率(2)支持64位双字操作,更具有一般性小结:指令集架构•ISA需考虑的问题–ClassofISA–Memoryaddressing–Typesandsizesofoperands–Operations–Controlflowinstructions–EncodinganISA–……•ISA的类型–通用寄存器型占主导地位•寻址方式–重要的寻址方式:偏移寻址方式,立即数寻址方式,寄存器间址方式•SPEC测试表明,使用频度达到75%--99%–偏移字段的大小应该在12-16bits,可满足75%-99%的需求–立即数字段的大小应该在8-16bits,可满足50%-80%的需求•操作数的类型和大小–对单字、双字的数据访问具有较高的频率–支持64位双字操作,更具有一般性2021/5/1122MIPS•MIPS是最典型的RISC指令集架构–Stanford,1980年提出,主要受到IBM801小型机的影响–第一个商业实现是R2000(1986)–最初的设计中,其整数指令集仅有58条指令,直接实现单发射、顺序流水线–30年来,逐步增加到约400条指令。•主要特征:–Load/Store型结构,专门的指令完成存储器与寄存器之间的传送–ALU类指令的操作数来源于寄存器或立即数(指令中的特定区域)–降低了指令集和硬件的复杂性,依赖于优化编译技术,方便了简单流水线的实现2021/5/1123•主要缺陷:–针对特定的微体系架构的实现方式(5级流水、单发射、顺序流水线)进行过度的优化设计•延迟转移问题导致超标量等复杂流水线的实现难度,当无法有效填充延迟槽时会导致代码尺寸变大•MIPS-I中暴露出其他流水线冲突(load、乘除引起的冲突)采用简单的Interlocking简单又高效,

1 / 114
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功