当前位置:首页 > 天道酬勤 > 正文内容

指令集和汇编的区别(不能也不能是什么关系)

张世龙2021年12月22日 04:15天道酬勤700

瑞士航空母舰

RISC-v (读作RISC-five )。 基于RISC )原则的开源指令集体系结构(ISA )。 与大多数指令集相比,RISC-V指令集可以自由用于任何目的,任何人都可以设计、制造和销售RISC-V芯片和软件。 虽然这不是第一个开源指令集,但它具有重要的意义,因为它是为现代计算设备而设计的,包括仓库规模的云计算、高端手机和小型嵌入式系统。 设计者考虑了这些用途中的性能和电力效率。 该指令集还包含许多支持软件,可以解决新指令集的常见弱点。

RISC-V的特征如下。

1 .完全开源

对于指令集的使用,RISC-V基金会不征收高额的许可费。 采用开源、宽松的BSD协议,企业可以完全免费使用,同时允许企业添加和扩展自己的指令集,无需开放共享以实现差异化发展。

2 .体系结构简单

RISC-V架构继承了简单的设计哲学。 如下所示。

在处理器领域,x86和ARM体系结构是主流。 x86和ARM体系结构的发展过程也随着现代处理器体系结构技术的发展而成熟,但作为商用的体系结构,要维持体系结构的后向兼容性,必须保留许多旧的定义,结果是指令数量多、指令冗余由于文档数量巨大,使用这些体系结构开发新的操作系统或直接开发APP是一个障碍。 RISC-V体系结构完全放下了包袱,计算机体系结构经过多年的发展,成为了比较成熟的技术优势,可以走得很轻。 RISC-V的基本指令集只有40个以上,加上其他模块式扩展指令共有数十个。 RISC-V的规格书只有145页,“特权体系结构文件”也只有91页。

3 .容易移植的*nix

现代操作系统将特权级指令与用户级指令分离,特权指令只能由操作系统调用,用户级指令可以在用户模式下调用,保证操作系统的稳定。 RISC-V提供特权级别的指令和用户级别的指令,同时提供详细的RISC-V特权级别的指令规格和RISC-V用户级别的指令规格的详细内容,使开发人员可以轻松地将linux和unix系统移植到RISC-V平台上,

4 .模块化设计

RISC-V体系结构不仅简单、精密,而且各个部分都经过了模块化和组织,因此,它试图以统一的体系结构适应不同的APP场景。 用户可以灵活选择不同的模块组合,实现自己定制设备的需求。 例如,对于小面积、低功耗的嵌入场景,用户可以选择RV32IC组合的指令集,仅使用Machine Mode (计算机模式)。 另一方面,在高性能APP的OS场景中,例如可以选择RV32IMFDC的指令集,使用机器模式(计算机模式)和用户模式(User Mode )这两种模式。

5 .完整的工具链

在设计CPU方面,工具链是软件开发者与CPU交互的窗口,没有工具链,软件开发者对开发软件的要求很高,甚至软件开发者无法使CPU发挥作用。 在cpu设计中,工具链的开发需要巨大的工作。 用RISC-V设计芯片后,芯片设计公司就不用担心工具链的问题,只需要专注于芯片设计就可以了。 RISC-V社区已经提供了完整的工具链,RISC-V基金会将继续维护这条工具链。 目前,RISC-V支持已集成到主要工具中。 例如,工具链gcc的编译、qemu的模拟工具等。

6 .实现开源

加入RISC-V阵营是因为商业因素很多

目前,伯克利的研究小组完成了基于RISC-V指令集依次运行的64位处理器核心(代号为Rocket ),并基于前后45nm和28nm进程进行了12次流式传输。 Rocket芯片的主频为1GHz,与ARM Cortex-A5相比,实测性能高10%,面积效率为49%,单位频率的动态功耗仅为Cortex-A5的43%。 在嵌入式领域,Rocket已经能够与ARM争夺市场。 目前,全球有数百家科技公司加入了RISC-V阵营,但更多的是由于商业原因。 很多报道把ARM的成功归咎于开放,但实际上ARM只是以商业模式开放,技术上卡死了。

lass="ql-align-justify">迄今为止,获得ARM32授权的公司一只手都能数的过来,ARM64授权虽然多一些,但授权费却异常昂贵,法国创业公司Greenwave表示,他们如果使用ARM架构,要花掉1500万美元的授权费。而且授权到期后,是否继续授权和授权费用都要重新谈判。

虽然对高通、苹果、华为这些大公司而言,上亿元人民币的授权费不算什么,但对创业公司来说,这是不可承受之重。

为了深入挖掘RISC-V,我们应该研究一些不同类型的指令集架构。

目前的指令集架构有哪些类型?

最常见的是通过它们的复杂性来描述和分类:

精简指令集(RISC)和复杂指令系统计算机(CISC)

这仅实现了经常使用的指令,不常见的操作则会以子程序实现。通过使用子程序,可以权衡性能,但它仅适用于最不常见的操作。

RISC使用加载或存储架构,这意味着它将指令划分为访问存储器的指令和执行算术逻辑单元(ALU)操作的指令。

RISC的英文全称是Reduced Instruction Set Computer,中文是精简指令集。特点是所有指令的格式都是一致的,所有指令的指令周期也是相同的,并且采用流水线技术。在中高档服务器中采用RISC指令的CPU主要有Compaq(康柏,即新惠普)公司的Alpha、HP公司的PA-RISC、IBM公司的PowerPC、MIPS公司的MIPS和SUN公司的Sparc。

在计算机指令系统的优化发展过程中,出现过两个截然不同的优化方向:CISC技术和RISC技术。CISC是指复杂指令系统计算机(Complex Instruction Set Computer);RISC是指精简指令系统计算机(Reduced Instruction Set Computer)。这里的计算机指令系统指的是计算机的最低层的计算机指令,也就是CPU能够直接识别的指令。随着计算机系统的复杂,要求计算机指令系统的构造能使计算机的整体性能更快更稳定。最初,人们采用的优化方法是通过设置一些功能复杂的指令,把一些原来由软件实现的、常用的功能改用硬件的指令系统实现,以此来提高计算机的执行速度,这种计算机系统就被称为复杂指令系统计算机,即Complex Instruction Set Computer,简称CISC。另一种优化方法是在20世纪80年代才发展起来的,其基本思想是尽量简化计算机指令功能,只保留那些功能简单、能在一个节拍内执行完成的指令,而把较复杂的功能用一段子程序来实现,这种计算机系统就被称为精简指令系统计算机.即Reduced Instruction Set Computer,简称RISC。RISC技术的精华就是通过简化计算机指令功能,使指令的平均执行周期减少,从而提高计算机的工作主频,同时大量使用通用寄存器来提高子程序执行的速度。

RISC和CISC是设计制造微处理器的两种典型技术,虽然它们都是试图在体系结构、操作运行、软件硬件、编译时间和运行时间等诸多因素中做出某种平衡,以求达到高效的目的,但采用的方法不同,因此,在很多方面差异很大,它们主要有:

1.指令系统:RISC设计者把主要精力放在那些经常使用的指令上,尽量使它们具有简单高效。对不常用的功能,常通过组合指令来完成。因此,在RISC计算机上实现特殊功能时,效率可能较低。但可以利用流水技术和超标量技术加以改进和弥补。而CISC计算机的指令系统比较丰富,有专用指令来完成特定的功能。因此,处理特殊任务效率较高。

2.存储器操作:RISC对存储器操作有限制,使控制简单化;而CISC计算机的存储器操作指令多,操作直接。

3.程序:CISC汇编语言程序一般需要较大的内存空间,实现特殊功能时程序复杂,不易设计;而RISC汇编语言程序编程相对简单,科学计算及复杂操作的程序设计相对容易,效率较高。

4.中断:RISC计算机在一条指令执行的适当地方可以响应中断,但是相比CISC指令执行的时间短,所以中断响应及时;而CISC计算机是在一条指令执行结束后响应中断。

5.CPU:RISC CPU包含有较少的单元电路,因而面积小、功耗低;而CISCCPU包含有丰富的电路单元,因而功能强、面积大、功耗大。

6.设计周期:RISC微处理器结构简单,布局紧凑,设计周期短,且易于采用最新技术;CISC微处理器结构复杂,设计周期长。

7.用户使用:RISC微处理器结构简单,指令规整,性能容易把握,易学易用;CISC微处理器结构复杂,功能强大,实现特殊功能容易。

8.应用范围:由于CISC指令系统的确定与特定的应用领域有关,故CISC计算机更适合于专用机;而RISC计算机则更适合于通用机。

超长指令字(VLIW)和显式并行指令计算(EPIC)

VLIW是一种非常长的指令组合,它把许多条指令连在一起,增加了运算的速度。 超长指令字(VLIW)是指令级并行,超线程(Hyper-Threading)是线程级并行,而多内核则是芯片级并行。这三种方式都是提高并行计算性能的有效途径。其中,VLIW(超长指令字)体系结构是美国Multiflow和Cydrome公司于20世纪80年代设计的体系结构,EPIC体系结构就是从VLIW中衍生出来的。

上述方法通过要求硬件执行所有这些逻辑来使硬件复杂化。相比之下,VLIW将这种复杂性留给了程序。作为权衡,编译器变得更加复杂,同时硬件被简化并且仍然在计算上表现良好。

VLIW最常见于嵌入式媒体处理器和图形处理单元(GPU)中。但是,Nvidia和AMD已经转向RISC架构,以提高非图形工作负载的性能。

为了开拓64位处理器的高端应用市场,1994年6月Intel和HP公司签署合作协议,共同开发以服务器和T作站为主要应用目标的全新64位架构高性能微处理器。1997年11月,Intel和HP公司发布基于EPIC(Explicitly Parallel Instruction Computing,显式并行指令计算)的Itanium系统结构。

超标量和VLIW是开发指令级并行的两种极端结构,前者完全依赖流水线硬件动态识别出可并行的指令,并将它们分发给相应的功能单元执行,后者则将指令级并行的开发工作全部交给编译器完成,在编译时静态确定每条指令的流出时刻和执行延迟,仅依赖简单的流水线硬件确保在指令实际执行延迟与编译器假定的延迟不一致时(如访问Cache不命中就会增加访存操作的延迟),程序的执行结果依然正确。在这两种结构中,单一的指令级并行开发机制使得它们都存在着严重的固有缺陷:超标量结构硬件复杂度太高,学术界和工业界一致认为,同时流出并执行8条指令将达到这种结构的极限;VLIW则面临着严重的代码兼容问题,而且目前VLIW编译器的智能程度远远无法满足人们的要求。显式并行指令计算(Explicitly Parallel Instruction Computing,EPIC)技术正是为了解决这两种结构的本质缺陷而提出的,它是在VLIW的基础上融合了超标量结构的一些优点而设计得到的,以期用有限的硬件开销为代价开发出更多的指令级并行。

最小指令集(MISC)

MISC比RISC更小,它包括非常少量的基本操作和相应的操作码。如果它们是基于堆栈而不是基于寄存器,则这些被归类为MISC,但是也可以由指令的数量(少于32条但大于1条)来定义。

单一指令集(OISC)

这描述了一个只使用一条指令的抽象计算机,它消除了对计算机语言操作码的需求。例如,“mov”是图灵完成,这意味着它能够成为一个OISC,以及其他使用减法的指令。据我所知,OISC还没有商业化。

在很多媒体的报道中,定义一套指令集被描述为黑科技,但事实上,实现一款高性能的CPU和围绕指令集构建软件生态才是真正具有挑战性的工作,定义一套指令集的难度并不大,伯克利的研究团队4名成员仅用了3个月就完成了RISC-V的指令集开发。由于伯克利研究团队缺人缺钱,于是决定将RISC-V开源,成为CPU中的Linux,在获得各方支援后,又相继开发了一些产品。

扫描二维码推送至手机访问。

版权声明:本文由花开半夏のブログ发布,如需转载请注明出处。

本文链接:https://www.zhangshilong.cn/work/26795.html

分享给朋友:

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。