一次搞懂 ISA、CISC 与 RISC

1945 年 6 月 30 日,Von Neumann 与他的工作夥伴因为曼哈顿工程中使用到了大量的运算,所以采用了当时最先进的电脑 Mark I 和 ENIAC 以达到运算需求。
在使用 Mark I 和 ENIAC 的过程中,他意识到了储存程序的重要性,从而提出了储存程序逻辑架构。

Von Neumann 在他的论文: First Draft of a Report on the EDVAC 中提出了储存程序逻辑架构,後人依据该论文的想法和经验将储存程序逻辑架构称为 Von Neumann architecture。

Von Neumann architecture

Von Neumann architecture

上图取自维基百科。

在计算机刚开始发展的年代,计算机只能用来处理特定问题(电路的执行状态是固定的)。就好比现代的工程计算机或是专家系统,他们只能用来解决特定问题,若想要改变这类计算机的功用,必须更改其线路、甚至是更改结构以达到目的。
而 Von Neumann 提出的架构颠覆了整个世界。新架构藉由创造指令集架构,并将所谓的运算转化成一串程序指令的执行细节(我们可以把它想成现今的组合语言),让计算机更具弹性。藉着将指令当成一种特别型态的静态资料,一台储存程序型电脑可轻易改变其程序,并在程序控制下改变其运算内容。
储存程序型概念也可让程序执行时自我修改程序的运算内容。本概念的设计动机之一就是可让程序自行增加内容或改变程序指令的记忆体位置,因为早期的设计都要使用者手动修改。但随着索引暂存器与间接位置存取变成硬体架构的必备机制後,本功能就不如以往重要了。而程序自我修改这项特色也被现代程序设计所弃扬,因为它会造成理解与除错的难度,且现代中央处理器的管线与快取机制会让此功能效率降低。

储存程序型电脑的特点

储存程序电脑在体系架构上主要特点有:

  • 以运算单元为中心
  • 采用储存程序原理
  • 记忆体是按位址存取、线性编址的空间
  • 控制流由指令流产生
  • 指令由操作码和位址码组成
  • 资料以二进位编码 (Binary Code)

CISC 与 RISC

处理器的指令集主要可分为 2 种:

CISC(complex instruction set computer)

  • X86
  • PDP-11
  • Motorola 68000

除了上述三个以外,还有非常多的电脑制造商都有投入 CISC 架构的设计,不过当今市场上仍被广泛使用的只剩下 x86 架构。

RISC(reduced instruction set computer)

RISC 架构有以下特点:

  • 指令长度固定,CPU 更容易做解码
  • 尽可能将资料放在 CPU 的暂存器中操作
  • 处理器的硬体简化,所以时脉容易提高且更省电
  • 因为复杂的指令皆由多个基本指令组成,对於记忆体的开销更大

知名的 RISC 架构如下:

  • ARM

    ARM 架构,过去称作进阶精简指令集机器(英语:Advanced RISC Machine,更早称作艾康精简指令集机器,Acorn RISC Machine),是一个精简指令集(RISC)处理器架构家族,其广泛地使用在许多嵌入式系统设计。由於节能的特点,其在其他领域上也有很多作为。ARM处理器非常适用於行动通讯领域,符合其主要设计目标为低成本、高效能、低耗电的特性。
    -- 维基百科

    现今的移动式装置几乎都使用 ARM 所提供的处理器架构解决方案 (如: 高通、三星、甚至是苹果的处理器),ARM 主要采用 IP 授权的贩售方式,如此高价的权利金也让学界或是新创级企业很难设计出解决方案,因此,才会有开源的 RISC 架构诞生。

  • MIPS
    由 MIPS 公司开发并授权的精简指令集架构,广泛使用在许多电子产品、网路装置、个人娱乐装置与商业装置上。
    最早的 MIPS 架构是 32 位元,最新的版本已经变成 64 位元。商业市场主要竞争对手为 ARM 与 RISC-V,2021 年初,MIPS 公司宣布将投入 RISC-V 的开发,一代豪杰就此谢幕(?)

    更多资讯可以参考 【被行动趋势抛弃】曾被微软采用,全球 4 大晶片架构之一的 MIPS 宣告阵亡 一文。

  • RISC-V

    基於精简指令集(RISC)原则的开源指令集架构(ISA),简易解释为开源软件运动相对应的一种「开源硬体」。该专案 2010 年始於加州大学柏克莱分校,但许多贡献者是该大学以外的志愿者和行业工作者。
    -- 维基百科
    与大多数指令集相比,RISC-V 指令集可以自由地用於任何目的,允许任何人设计、制造和销售 RISC-V 晶片和软件而不必支付给任何公司专利费。
    目前国内外也都有公司在发展 RISC-V 架构,如: 晶心科技、 SI-Five 等。
    而 RISC-V 也将是本系列文介绍的重点,後续探讨现代处理器文章都会以 RISC-V 架构作为教材,甚至是到作业系统篇,笔者也会采用基於 RISC-V 架构的作业系统来做介绍。

现代处理器趋势

最初,处理器都是 CISC 架构,随着时间推演,处理器设计者将越来越多的运算指令放入架构中,以 X86 为例子: 最初的处理器架构一定会有基本的运算指令、浮点数运算指令,在 X86 发展的过程中,有越来越多的扩充被加进去 (MMX, SSE, AVX...),为了支援这些指令集,设计者势必要将更多的硬体放入处理器当中。如此一来,功耗就成了 CISC 最头痛的问题。
撇开功耗不说,在 CISC 架构中,只有约 20% 的指令会经常的被使用,且占整体程序的 80%,这也就代表多数的指令其实占据了处理器的硬体资源却鲜少被使用。
1979 年,美国加州大学柏克莱分校的 David Patterson 教授提出了将指令集架构精简化的想法,他认为硬体应该专心加速常用的指令,剩下较为复杂的指令可以利用基本指令做组合。
现今 RISC 与 CISC 不再有显着的差异,RISC 处理器的硬体设计与指令随着时间的推演越来越复杂,而 CISC 处理器则是采用微码来实现复杂指令集。关於这点,最早可以追溯至 Intel 的 Pentium Pro 处理器,其 micro-operation (或称 uop) 奠定今日高速 x86 设计的基础。

Reference


<<:  DAY1 学习动机与选择原因

>>:  你的一生,还剩几个十年?

第一章 之二 两个国外网域

Hostinger网域供应商跟Godaddy类似,除了提供Domain( Domain Name )...

Day2-不只都是英文名称 docker 和 k8s的关系

在前一章提到k8s是一种容器编排平台,用於管理容器化的应用程序。 而既然提到容器,那自然得提一下容器...

Day 10 - Rancher 丛集管理指南 - RKE 管理与操作

本文将於赛後同步刊登於笔者部落格 有兴趣学习更多 Kubernetes/DevOps/Linux 相...

[Day_29]函式与递回_(8)

函式视为物件 Python中函式视为物件,以函式名称当作物件,函式名称加上()才会执行该函式,范例如...

[Day 14] - 『转职工作的Lessons learned』 - Docker Build Issue

今天的笔记应该算是日常初阶工程师会发生的问题,以及可以怎麽去找根因的一些做法,不外乎就是下好关键字,...