精简指令集计算机

✍ dations ◷ 2025-06-07 19:20:39 #精简指令集计算机

精简指令集计算机(英语:Reduced instruction set computer,缩写:RISC)或简译为精简指令集,是计算机中央处理器的一种设计模式。这种设计思路可以想像成是一家模块化的组装工厂,对指令数目和寻址方式都做了精简,使其实现更容易,指令并行执行程度更好,编译器的效率更高。目前常见的精简指令集微处理器包括DEC Alpha、ARC(英语:ARC (processor))、ARM、AVR、MIPS、PA-RISC、Power ISA(包括PowerPC、PowerXCell)、RISC-V和SPARC等。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


相关

  • 阿里·艾哈迈德·赛义德·伊斯比尔阿里·艾哈迈德·赛义德·伊斯比尔(阿拉伯语:علي أحمد سعيد إسبر‎,1930年1月1日-),笔名阿多尼斯(أدونيس‎、Adunis),叙利亚诗人、思想家、文学理论家、翻译家
  • 林雪平大学林雪平大学(瑞典语:Linköpings universitet,英语:Linköping University,缩写为LiU),是瑞典的一所国立综合性大学。林雪平大学成立于1975年,并在上世纪九十年代开始在邻近的北雪平
  • 波兰王位继承战争波兰王位继承战争为欧洲诸国以助波兰立王为名,而满足自身利益之战。其肇始于波兰国王奥古斯特二世驾崩后,王位空悬所致的王位争夺战。而最终演变为统治法国、西班牙及两西西里
  • 循环论 (形而上学)循环论为一种认事物变化仅存在量变,而否定质变的形而上学理论。这种理论不承认事物的前进和发展,现今多半予以否定。
  • 盖伦·鲁普盖伦·鲁普(英语:Galen Rupp,1986年5月8日-)是一名美国长跑运动员,参加过2008、2012和2016年三届奥运会,获得2012年奥运会10000米银牌,以及里约奥运会马拉松铜牌。 他保持着多项美国
  • 姜仓·达木丁苏伦姜仓·达木丁苏伦(蒙古语:Жамцангийн Дамдинсүрэн,1899年-1938年)蒙古族,赛音诺颜部右末旗(蒙古人民共和国称为车车尔勒格曼达尔省,今蒙古国扎布汗省伊德尔地
  • 刘述祖刘述祖(1577年-?年),字善夫,号蓬泽,河南陈留县人。籍贵州都司贵州卫,明朝政治人物。万历三十八年(1610年)庚戌科第三甲第一名进士。授刑部观政,授太常寺博士,丙辰行取,暂拟兵部主事,戊午七
  • 圣地亚哥·文图拉圣地亚哥·文图拉(英语:Santiago Ventura,1980年1月5日-),西班牙男子网球选手,现居住于Burriana。文图拉2001年转为职业选手,目前他的最高单打排名为第41位,双打排名曾高居为第5。文
  • 第二代米尔福德黑文侯爵乔治·蒙巴顿第二代米尔福德黑文侯爵乔治·路易斯·维克托·亨利·塞尔吉·蒙巴顿上校 GCVO(英语:George Louis Victor Henry Serge Mountbatten, 2nd Marquess of Milford Haven;1892年11月6日-1938年4月8日)是一名英国皇家海军军官。乔治是黑森和莱茵河畔大公路德维希二世的曾孙,曾在1917年至1921年间使用梅迪纳伯爵作为礼节性头衔。巴滕贝格的乔治王子出生于黑森大公国的达姆施塔特,是路易·亚历山大·蒙巴顿和黑森和莱茵河畔的维多利亚公主的长
  • 威尔弗里德·博尼威尔弗里德·博尼(法语:Wilfried Bony,1988年12月10日-)科特迪瓦足球运动员,司职前锋。他同时是科特迪瓦国家足球队球员。威尔弗里德·博尼曾效力于布拉格斯巴达、维特斯。2012至2013年赛季为维特斯射入31球,成功当选荷兰足球先生。2013年7月以1200万英镑转会到斯旺西,创下斯旺西最高转会费记录。2015年1月以破俱乐部转会费加盟曼城 (转会费为2500万镑,如博尼表现理想,曼城将再予斯旺西300万镑),获发14号球衣。2022年1月26日,在离开伊蒂哈德一年多后,博尼回到荷兰,加