fbpx
维基百科

精简指令集计算机

精简指令集计算机(英語:Reduced Instruction Set Computer缩写RISC)或简译为精简指令集,是计算机中央處理器的一种设计模式。这种设计思路可以想像成是一家模組化的組裝工廠,对指令数目和寻址方式都做了精简,使其实现更容易,指令并行执行程度更好,编译器的效率更高。目前常見的精簡指令集微處理器包括DEC AlphaARC英语ARC (processor)ARMAVRMIPSPA-RISCPower ISA(包括PowerPCPowerXCell)、RISC-VSPARC等。

一顆主要用於路由器的Conexant ARM處理器
DEC Alpha AXP 21064 處理器在Windows NT 4.0 SP6之前微軟都還支援
IBM PowerPC 601處理器用於PowerMac

历史

精簡指令集的名稱最早來自1980年大衛·帕特森加州大學柏克萊分校主持的Berkeley RISC英语Berkeley RISC計划。但在他之前,已經有人提出類似的設計理念。由約翰·科克主持,在1975年開始,1980年完成的IBM 801计划,可能是第一個使用精簡指令集理念來設計的系統。

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

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

实际上在后来的发展中,RISC与CISC(複雜指令集)在競爭的过程中相互学习,现在的RISC指令集也达到数百条,运行周期也不再固定。虽然如此,RISC设计的根本原则——针对流水线化的处理器优化——没有改变,而且還在遵循這種原則的基礎上發展出RISC的一個並行化變種VLIW(包括Intel EPIC),就是將簡短而長度統一的精簡指令組合出超長指令,每次執行一條超長指令,等於並行執行多條短指令。

另一方面,目前最常见的複雜指令集x86 CPU,虽然指令集是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的性能優劣有大量持续不断的爭論。

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

精简指令集設計中常見的特徵:

  • 統一指令編碼(例如,所有指令中的op-code永遠位於同樣的位元位置、等長指令),可快速解譯:
  • 泛用的暫存器,所有暫存器可用於所有內容,以及編譯器設計的單純化(不過暫存器中區分了整數浮點數);
  • 單純的尋址模式(複雜尋址模式以簡單計算指令序列取代);
  • 硬體中支援少數資料型別(例如,一些CISC電腦中存有處理位元組字串的指令。這在RISC電腦中不太可能出現)。

参考


精简指令集计算机, risc, 重定向至此, 关于其他用法, 请见, risc, 消歧义, 此條目没有列出任何参考或来源, 2020年9月18日, 維基百科所有的內容都應該可供查證, 请协助補充可靠来源以改善这篇条目, 无法查证的內容可能會因為異議提出而被移除, 英語, reduced, instruction, computer, 缩写, risc, 或简译为精简指令集, 是计算机中央處理器的一种设计模式, 这种设计思路可以想像成是一家模組化的組裝工廠, 对指令数目和寻址方式都做了精简, 使其实现更容易, 指令并. RISC 重定向至此 关于其他用法 请见 RISC 消歧义 此條目没有列出任何参考或来源 2020年9月18日 維基百科所有的內容都應該可供查證 请协助補充可靠来源以改善这篇条目 无法查证的內容可能會因為異議提出而被移除 精简指令集计算机 英語 Reduced Instruction Set Computer 缩写 RISC 或简译为精简指令集 是计算机中央處理器的一种设计模式 这种设计思路可以想像成是一家模組化的組裝工廠 对指令数目和寻址方式都做了精简 使其实现更容易 指令并行执行程度更好 编译器的效率更高 目前常見的精簡指令集微處理器包括DEC Alpha ARC 英语 ARC processor ARM AVR MIPS PA RISC Power ISA 包括PowerPC PowerXCell RISC V和SPARC等 一顆主要用於路由器的Conexant ARM處理器 DEC Alpha AXP 21064 處理器在Windows NT 4 0 SP6之前微軟都還支援 IBM PowerPC 601處理器用於PowerMac 目录 1 历史 2 精简指令集之前的設計原理 3 RISC設計原理 4 提升中央處理器性能的方法 5 参考历史 编辑精簡指令集的名稱最早來自1980年大衛 帕特森在加州大學柏克萊分校主持的Berkeley RISC 英语 Berkeley RISC 計划 但在他之前 已經有人提出類似的設計理念 由約翰 科克主持 在1975年開始 1980年完成的IBM 801计划 可能是第一個使用精簡指令集理念來設計的系統 这种设计思路最早的产生缘自于有人发现 尽管传统处理器设计了许多特性让代码编写更加便捷 但这些复杂特性需要几个指令周期才能实现 并且常常不被运行程序所采用 此外 处理器和主内存之间运行速度的差别也变得越来越大 在这些因素促使下 出现了一系列新技术 使处理器的指令得以流水执行 同时降低处理器访问内存的次数 早期 这种指令集的特点是指令数目少 每条指令都采用标准字长 执行时间短 中央處理器的实现细节对于机器级程序是可见的等等 实际上在后来的发展中 RISC与CISC 複雜指令集 在競爭的过程中相互学习 现在的RISC指令集也达到数百条 运行周期也不再固定 虽然如此 RISC设计的根本原则 针对流水线化的处理器优化 没有改变 而且還在遵循這種原則的基礎上發展出RISC的一個並行化變種VLIW 包括Intel EPIC 就是將簡短而長度統一的精簡指令組合出超長指令 每次執行一條超長指令 等於並行執行多條短指令 另一方面 目前最常见的複雜指令集x86 CPU 虽然指令集是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的性能優劣有大量持续不断的爭論 提升中央處理器性能的方法 编辑增加寄存器的大小 增進內部的平行性 增加高速缓存大小 增加核心時脈的速度 但是此舉便會導致IC從電晶體取電的功率增加 因此要遵照IC的狀況予以增加核心時脈才行 此動作類似於超頻 加入其它功能 如I O和計時器 加入向量處理器 SIMD 如VISAltiVec SSE Streaming SIMD Extensions 避免附加 使朝向省電化 battery constrained 或小型化的應用 集成多个核心 硬件多线程技术精简指令集設計中常見的特徵 統一指令編碼 例如 所有指令中的op code永遠位於同樣的位元位置 等長指令 可快速解譯 泛用的暫存器 所有暫存器可用於所有內容 以及編譯器設計的單純化 不過暫存器中區分了整數和浮點數 單純的尋址模式 複雜尋址模式以簡單計算指令序列取代 硬體中支援少數資料型別 例如 一些CISC電腦中存有處理位元組字串的指令 這在RISC電腦中不太可能出現 参考 编辑复杂指令集 顯式並行指令運算 取自 https zh wikipedia org w index php title 精简指令集计算机 amp oldid 76858137, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。