发布网友 发布时间:2024-10-24 01:13
共1个回答
热心网友 时间:2024-10-24 13:14
计算机架构及设计:操作与操作数(Operation & Operands)
本章探讨了硬件设计的两大原则:简单有利于规律(Simplicity favors regularity)以及越小越快(Smaller is faster)。原则1从更高层次解释了为什么计算机操作需要指令,且每个指令具有固定且不多的操作数。原则2则抽象地解释了为何寄存器操作数快速但数量有限。
计算机的操作由指令组成,每个指令都有固定的操作数,且每个操作数都不可或缺,不可多。这种指令的简单性及固定性成就了程序的复杂操作,遵循着简单有利于规律的硬件设计原则。因此,通用处理器采用指令集架构,以应对复杂操作,而复杂的操作则需简单指令来实现。
计算机的操作数分为三种类型:寄存器操作数、存储操作数及立即操作数。寄存器作为ALU单元的入口,速度最快,但数量有限,只能存储有限的变量。对于包含大量变量的数组或结构体,只能存储部分变量,此时需要存储操作数,将数据先放入内存,待需要时从内存加载。立即操作数是为了处理程序中的常量而设计,大多数程序都涉及对特定常量的自增或自减操作。采用内存加载的方式会消耗大量带宽,因此立即数是为了这种需求而存在的。
以下是三种操作数的详细分析:
1. **寄存器操作数**:算术运算操作数必须在固定的寄存器中进行计算,因此所有算术运算都需要将参与运算的数据放入寄存器。这是基于冯诺依曼体系的决定,CPU上的ALU数据来源和结果存储均来自寄存器,RSIC-V架构同样基于这一体系。RSIC-V典型架构采用32个位寄存器。寄存器数量不是越多越好,而是32个,这遵循了越小越快的原则,过多的寄存器使用会导致更大的硬件设计延时。
2. **存储操作数**:对于包含大量数据的数组和结构体,寄存器数量不足以容纳,此时需要将数据存储在内存中。在算术运算操作时,需要数据搬运指令来将当前参与运算的数据从内存搬运到寄存器。
3. **常量或立即操作数**:常量或立即数操作体现了常见情况更快的思想(common case faster)。在许多程序中存在常量操作,如果将常量存储在内存中,会带来时间及能耗开销。例如,在RSIV中,支持立即数加法(addi指令),无需从内存加载常量,可直接进行相加操作,节省时间和能耗。
市场上的CPU架构,无论是RSIC-V还是其他通用计算机架构,本质上都是基于冯诺依曼架构体系,指令集和操作数的设计始终围绕性能和能效进行。新的架构,如RSIC-V,通过借鉴其他架构的优点和缺点,发展出了具有更好扩展性的新型架构。