族谱网 头条 人物百科

精简指令集

2020-10-16
出处:族谱网
作者:阿族小谱
浏览:638
转发:0
评论:0
历史精简指令集的名称最早来自1980年大卫·帕特森在加州大学柏克莱分校主持的BerkeleyRISC计划。但在他之前,已经有人提出类似的设计理念。由约翰·科克主持,在1975年开始,1980年完成的IBM801项目,可能是第一个使用精简指令集理念来设计的系统。这种设计思路最早的产生缘自于有人发现,尽管传统处理器设计了许多特性让代码编写更加便捷,但这些复杂特性需要几个指令周期才能实现,并且常常不被运行程序所采用。此外,处理器和主内存之间运行速度的差别也变得越来越大。在这些因素促使下,出现了一系列新技术,使处理器的指令得以流水执行,同时降低处理器访问内存的次数。早期,这种指令集的特点是指令数目少,每条指令都采用标准字长、执行时间短、中央处理器的实现细节对于机器级程序是可见的等等。实际上在后来的发展中,RISC与CISC在竞争的过程中相互学习,现在的RISC指令集也达到数百条,运行周期也不再固定...

历史

精简指令集的名称最早来自1980年大卫·帕特森在加州大学柏克莱分校主持的Berkeley RISC计划。但在他之前,已经有人提出类似的设计理念。由约翰·科克主持,在1975年开始,1980年完成的IBM 801项目,可能是第一个使用精简指令集理念来设计的系统。

这种设计思路最早的产生缘自于有人发现,尽管传统处理器设计了许多特性让代码编写更加便捷,但这些复杂特性需要几个指令周期才能实现,并且常常不被运行程序所采用。此外,处理器和主内存之间运行速度的差别也变得越来越大。在这些因素促使下,出现了一系列新技术,使处理器的指令得以流水执行,同时降低处理器访问内存的次数。

早期,这种指令集的特点是指令数目少,每条指令都采用标准字长、执行时间短、中央处理器的实现细节对于机器级程序是可见的等等。

实际上在后来的发展中,RISC与CISC在竞争的过程中相互学习,现在的RISC指令集也达到数百条,运行周期也不再固定。虽然如此,RISC设计的根本原则——针对流水线化的处理器优化——没有改变,而且还在遵循这种原则的基础上发展出RISC的一个并发化变种VLIW(包括Intel EPIC),就是将简短而长度统一的精简指令组合出超长指令,每次运行一条超长指令,等于并发运行多条短指令。

另一方面,目前最常见的复杂指令集x86CPU,虽然指令集是CISC的,但因对常用的简单指令会以硬件线路控制尽全力加速,不常用的复杂指令则交由微码循序器“慢慢解码、慢慢跑”,因而有“RISCy x86”之称。

精简指令集之前的设计原理

在早期的计算机业界,编译器技术并不发达,程序多半以机器语言或汇编语言完成的。为了便于编写程序,电脑架构师设计出越来越复杂的指令,可以直接对应高级编程语言的高级功能。当时的看法是硬件比编译器更容易设计,所以结构的复杂性在硬件这端。

加速这种复杂化的另一因素是缺乏大容量的内存。在内存容量受限的应用中,具有极高消息密度的程序更加实用。当时内存中的每一字节都很宝贵,例如只有几千个字节来存储某个完整系统。它使产业界倾向于高度编码的指令、长度不等的指令、多操作数的指令,以及把数据的搬移与计算合并在一起的指令。在当时看来,相对于使指令更容易解码,指令的编码打包问题尤为重要。

还有一个因素是当时的内存不仅容量少,而且速度很慢,使用的都是磁性技术。凭借高密度打包的指令,访问慢速资源的频率可以降低。

微处理器只有少量寄存器的两个原因是:

寄存器每一个比特位都比外部内存贵。以当时的集成电路技术水准,大量寄存器对芯片或电路板而言是难以承受的。

一旦具有大数量的寄存器,相关的指令字(opcode)将会需要更多的比特位(使用宝贵的RAM)来定位寄存器。

基于上述原因,微处理器设计师尽可能使指令做更多的工作。这导致单个指令做全部的工作:读入两个加数,相加,并将计算结果直接写入内存;另一个例子是从内存读取两个数据,但计算结果存储在寄存器内;第三个例子是从内存和寄存器各读取一个数据,其结果再次写入内存;以此类推。这种微处理器设计原理,在精简指令集(RISC)的思路出现后,最终被人称为复杂指令集。

当时设计的一个通常目标是为每个指令都提供所有的寻址模式,称为“正交性”。这给微处理器增加了一些复杂性,但理论上每个可能的命令均可单独调整。相对于使用更简单的指令,这样做能够使设计速度更快。

这类设计最终可以由功率谱的两端来表述,6502在一端,VAX在功率谱的另一端。单价25美元的1MHz 6502芯片只有一个通用寄存器,但它非常精简的单周期内存访问接口允许一个字节宽度的操作,其效率和使用更高时钟频率的设计一致,例如主频4MHz的Zilog Z80使用相同慢速的记忆芯片(大约近似300ns)。另一方面,VAX则是一种小型机,它的每个CPU至少需要三个机架来放置。其显著特点是,它支持的内存访问模式数目多得惊人,并且每条指令都可以使用任一种模式。

RISC设计原理

1970年代后期,IBM(以及其它类似企业组织)的研究人员显示,大多数正交寻址模式基本上已被程序员所忽略。这是编译器的使用逐渐增多而汇编语言的使用相对减少所导致的。值得注意的是,由于编写编译器的难度很大,当时编译器并不能充分利用CISC处理器所提供的各种特性。尽管如此,广泛应用编译器的趋势已然很明显,从而使得正交寻址模式变得更加无用。

这些复杂操作很少被使用。事实上,相比用更精简的一系列指令来完成同一个任务,用单一复杂指令甚至会更慢。这看上去有些自相矛盾,却源自于微处理器设计者所花的时间和精力:设计者一般没有时间去调整每一条可能被用到的指令,通常他们只优化那些常用的指令。一个恶名昭著的例子是VAX的INDEX指令,执行它比执行一个循环还慢。

几乎就在同时,微处理器开始比内存运行得更快。即便是在七十年代末,人们也已经认识到这种不一致性至少会在下一个十年继续增加,到时微处理器将会比内存的速度快上百倍。很明显,需要有更多寄存器(以及后来的缓存)来支持更高频率的操作。为此,必须降低微处理器原本的复杂度,以节省出空间给新增的寄存器和缓存。

不过RISC也有它的缺点。当需要一系列指令用来完成非常简单的程序时,从内存读入的指令总数会变多,因此也需要更多时间。在当时的工业和设计领域,对RISC的性能优劣有大量持续不断的争论。

提升中央处理器性能的方法

增加寄存器的大小

增进内部的平行性

增加高速缓存大小

加入其它功能,如I/O和计时器

加入向量处理器(SIMD),如VISAltiVec、SSE(Streaming SIMD Extensions)

避免附加。使朝向省电化(battery-constrained)或小型化的应用

集成多个核心

硬件多线程技术

精简指令集设计中常见的特征:

统一指令编码(例如,所有指令中的op-code永远位于同样的比特位置、等长指令),可快速解译:

泛用的寄存器,所有寄存器可用于所有内容,以及编译器设计的单纯化(不过寄存器中区分了整数和浮点数);

单纯的寻址模式(复杂寻址模式以简单计算指令序列取代);

硬件中支持少数数据类型(例如,一些CISC电脑中存有处理字节字符串的指令。这在RISC电脑中不太可能出现)。

参考

复杂指令集


免责声明:以上内容版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。感谢每一位辛勤著写的作者,感谢每一位的分享。

——— 没有了 ———
编辑:阿族小谱
发表评论
写好了,提交
{{item.label}}
{{commentTotal}}条评论
{{item.userName}}
发布时间:{{item.time}}
{{item.content}}
回复
举报
点击加载更多
打赏作者
“感谢您的打赏,我会更努力的创作”
— 请选择您要打赏的金额 —
{{item.label}}
{{item.label}}
打赏成功!
“感谢您的打赏,我会更努力的创作”
返回

更多文章

更多精彩文章
打赏
私信

推荐阅读

· FMA指令集
参见AVXSSSE3SSE
· AVX指令集
支援目前AppleOSX10.6.8(雪豹的更新版本)及更高,Linux2.6.30内核以后,以及Windows7SP1(ServicePack1)KB976932,WindowsServer2008RC2SP1与Windows8支援AVX。参见组合语言MMXSSE
· 指令集架构
指令集的分类复杂指令集计算机包含许多应用程序中很少使用的特定指令,由此产生的缺陷是指令长度不固定。精简指令集计算机通过只执行在程序中经常使用的指令来简化处理器的结构,而特殊操作则以子程序的方式实现,它们的特殊使用通过处理器额外的执行时间来弥补。理论上的重要类型还包括最小指令集计算机(英语:Minimalinstructionsetcomputer)与单指令集计算机,但都未用作商业处理器。另外一种衍生类型是超长指令字,处理器接受许多经过编码的指令并通过检索提取出一个指令字并执行。机器语言机器语言是由声明和指令所组成的。在处理结构上,一个特定指令指明了以下几个部分:用于算术运算,寻址或者控制功能的特定寄存器;特定存储空间的地址或偏移量;用于解译操作码的特定寻址模式;复杂的操作可以借由将简单的指令合并而达成,可以(在冯·诺依曼体系中)连续的执行,也可以藉控制流来执行指令。指令类型有效的指令操作须...
· 精简春节对联大全
·年年阖第平安,岁岁满门吉祥!·祝妹妹春节愉快,一生平安。·福开新运,财源广进!·给您拜个早年!·给您拜年啦!·祝哥哥嫂子岁岁平安,年年吉祥如意。·春节好!祝大哥大嫂吉祥富贵,来年早生贵子。·别苦了自己,新的一年更加珍重。·远方的你是否无恙?在遥远的思念里,改变的是我的容颜,不变的是永远爱你的心!真心愿你春节愉快!·过年大喜,好日子终于到了。朋友,明年加把劲!给您拜年啦!一叩首,二叩首,三叩首!·江湖中人,游子之心,新春恭祝事业有成,事事顺利!·但愿我寄予您的祝福是最新鲜最令您百读不厌的。祝福您新年快乐,万事如意!·在这快乐分享的时刻,思念好友的时刻,美梦成真的时刻,祝你--新年快乐,佳节如意!·这一刻,有我最深的思念。让云捎去满心的祝福,点缀你甜蜜的梦,愿你拥有一个幸福快乐的新年!·新的一年,新的开始;心的祝福,新的起点。·谢谢您对我的帮助,让新春带去我的祝福,祝您身体健康,万事如意!·...

关于我们

关注族谱网 微信公众号,每日及时查看相关推荐,订阅互动等。

APP下载

下载族谱APP 微信公众号,每日及时查看
扫一扫添加客服微信