RISC 的核心特点
RISC(Reduced Instruction Set Computer)是一种计算机中央处理器的设计理念,其核心思想是“简单、高效”,与CISC(Complex Instruction Set Computer,复杂指令集计算机)相对,RISC的特点可以总结为以下几点:

精简的指令集
- 指令数量少:RISC只保留最基本、最常用的指令,通常少于100条,加法、减法、数据移动、逻辑运算等。
- 指令长度固定:所有指令的长度都相同,这使得指令的译码和执行更加简单、快速,每条指令都是32位或64位长。
- 指令功能简单:每条指令通常只完成一个最基本的操作,从内存加载数据到寄存器”或“将寄存器数据存入内存”。
寄存器数量多
- RISC架构大量使用寄存器来进行运算,CPU直接操作寄存器比操作内存要快得多。
- 它强调“Load/Store”架构:所有计算操作都必须在寄存器之间进行,如果需要用到内存中的数据,必须先用
Load(加载)指令将其读入寄存器;计算完成后,如果需要保存结果,再用Store(存储)指令写回内存。 - 这种模式使得指令执行速度更快,因为CPU可以长时间在高速的寄存器上工作,而不用频繁访问较慢的内存。
单周期执行
- 理想情况下,RISC架构中的大多数简单指令都可以在一个时钟周期内完成。
- 为了实现这一点,RISC采用了硬连线控制的方式,而不是CISC常用的微码,硬连线控制直接用硬件逻辑电路来控制指令的执行步骤,速度更快,延迟更低。
流水线技术
- 这是RISC实现高性能的关键,流水线技术将一条指令的执行过程分解为多个独立的阶段(如:取指令、译码、执行、访存、写回)。
- 这样,多条指令可以像工厂流水线一样,在不同的阶段被并行处理,虽然执行一条指令的总时间没有变,但CPU的吞吐率大大提高,平均每个时钟周期可以完成一条甚至多条指令。
延迟加载
- 由于Load指令需要从内存加载数据,这通常比寄存器间运算慢得多,会成为流水线的“阻塞点”。
- 延迟加载技术允许在Load指令之后的下一条或几条指令继续执行,即使它们需要用到Load的数据(编译器会智能地安排指令顺序,确保数据在真正需要时已经准备好),这减少了因内存访问慢而导致的等待时间。
优化编译器
- RISC的简单指令集使得编译器(Compiler)扮演了至关重要的角色。
- 编译器负责将高级语言(如C++)的复杂操作,翻译(编译)成一系列简单的RISC指令。
- 编译器可以利用其全局视野,进行复杂的指令调度,将指令顺序重排以最大化流水线的效率,并充分利用CPU的内部资源。
RISC 采用的核心技术
为了实现上述特点,RISC架构采用了以下几项关键技术:
流水线技术
- 作用:这是RISC性能的基石,通过指令执行的并行化,极大地提高了CPU的指令吞吐率。
- 实现:将指令处理分为几个标准阶段(如5级流水线:取指、译码、执行、访存、写回),每个时钟周期,不同阶段的指令在流水线中向前推进。
超标量技术
- 作用:在流水线的基础上进一步提升性能,它允许CPU在一个时钟周期内同时发射多条指令到不同的功能单元(如多个整数单元、浮点单元)进行并行处理。
- 实现:CPU内部有多个并行的执行单元,以及复杂的乱序执行逻辑,由硬件动态地检查指令间的依赖关系,找出没有依赖关系的指令同时执行。
分支预测
- 作用:消除程序中的“分支”(如
if-else语句、循环)对流水线的破坏,分支会导致CPU不知道下一条该执行哪条指令,如果猜错,已经取入流水线的指令全部作废,造成巨大的性能损失。 - 实现:硬件会维护一个分支历史表,通过分析过去的分支行为来预测下一次分支是“跳转”还是“不跳转”,如果预测正确,流水线可以无缝继续;如果预测错误,再进行“冲刷”。
Cache(高速缓存)技术
- 作用:弥合CPU与主内存之间的巨大速度鸿沟,频繁访问的数据和指令被缓存在速度极快的SRAM中,减少对慢速DRAM的访问。
- 实现:通常采用多级缓存结构:
- L1 Cache:一级缓存,分为数据缓存和指令缓存,每个CPU核心独有,速度最快。
- L2 Cache:二级缓存,可以每个核心独有,或者几个核心共享,速度次之。
- L3 Cache:三级缓存,通常由所有核心共享,容量更大。
Load/Store 架构
- 作用:简化指令集和CPU内部数据通路,所有运算都在寄存器之间进行,避免了内存访问指令对执行单元的复杂要求。
- 实现:指令集中只有
Load(从内存到寄存器)和Store(从寄存器到内存)两条指令与内存交互,其他所有算术和逻辑指令都只操作寄存器。
寄存器窗口技术
- 作用:优化过程/函数调用的开销,在函数调用时,参数传递和局部变量的管理需要频繁访问内存,这很慢。
- 实现:CPU为每个过程分配一个物理寄存器“窗口”,当调用一个新函数时,物理寄存器窗口会重叠一部分,这部分重叠区域就用于传递参数和返回值,完全不需要访问内存,这极大地加快了函数调用的速度,现代ARM处理器中,虽然不采用严格的寄存器窗口,但其大量通用寄存器的设计也起到了类似的作用。
| 特点 | 采用的技术 | 目的 |
|---|---|---|
| 精简指令集 | 硬连线控制、Load/Store架构 | 简化硬件译码,提高单条指令执行速度 |
| 多寄存器 | Load/Store架构 | 减少对慢速内存的访问,提升运算速度 |
| 高性能 | 流水线、超标量技术 | 通过并行处理大幅提高指令吞吐率 |
| 克服瓶颈 | 分支预测、Cache技术 | 减少因分支错误和内存访问慢导致的流水线停顿 |
| 高效调用 | 寄存器窗口(现代演变为大量寄存器) | 加速函数调用过程中的参数传递 |
RISC并非简单地“减少指令”,而是一套完整的设计哲学,它通过“软件(编译器)做复杂事,硬件(CPU)做简单事”的方式,将复杂性从硬件转移到了软件上,从而可以用更简单、更规整的硬件设计,在更高频率下实现极高的性能和能效比,这正是现代移动设备(如手机、平板)的处理器(如ARM)和服务器、高性能计算领域(如RISC-V, Apple Silicon)广泛采用RISC架构的原因。

