为什么MIPS CPU有32个寄存器?[关闭]


2

为什么MIPS CPU在寄存器文件中有32个寄存器?可能或多或少?如果我们修改寄存器文件的大小会有什么影响?


它有32个寄存器,因为CPU实际拥有多少个物理寄存器。
Ramhound 2014年

Answers:


1

MIPS是一种“RISC”或“加载 - 存储”架构。

RAM曾经和CPU一样快。因此人们会编写将RAM用作中间或临时存储的程序。由于这个原因,早期的CPU只有少量寄存器(即6502,Z80-- 6502只有3个通用寄存器。有些CPU如TMS9900实际上使用RAM作为寄存器)。这使得CPU使用更少的晶体管,这意味着它们更便宜,更容易获得良好的产量,更容易开发(70年代没有基于CAD的芯片设计......)

在大约1985年左右,RAM的速度和CPU一样快,并且只会变得更糟。

RISC部分地解决了这个问题(这是在CPU缓存普遍存在或者像今天这样大)之前 - 通过拥有一堆寄存器,可以避免慢速RAM中间计算结果等等。

减少可用的寄存器意味着为此必须更频繁地使用较慢的RAM。

我不确定为什么32被选为“甜蜜点” - 除了5位之外我知道MIPS操作码有3个5位字段,这意味着它们很容易解码(“RISC”哲学的另一个属性) - 它真的是31,因为第一个寄存器总是返回0。


0

在具有寄存器重命名的系统中,您可以改变物理寄存器的数量,并且仅影响性能。

但是如果没有创建一个全新的架构,你就无法获得很多寄存器名称。尝试删除一些名称,使用这些名称的程序失败。尝试添加一些名称,5位编码不再足以描述它们。

您可以尝试使用指令前缀之类的技巧来扩展指令集,以包括接受更多或不同名称的扩展指令,同时保持旧编码的完整性以实现向后兼容性。我不知道有人用MIPS做过这个,但AMD64又称EM64T又名x86_64使用了基于x86的“扩展(大部分)向后兼容”方法。


0

它没有必要,但它与其他设计决策是一个很好的妥协。

首先,MIPS中的指令长度为32位(大多数MIPS,有64位版本)。(你可以在这里看到很多详细信息)。在许多MIPS指令中,您必须提供三个寄存器,例如两个源和一个目标(例如,r4 = r2 + r4)。MIPS架构允许5位指定每个寄存器,32是您可以用5位表示的最大数量,因此没有必要为您提供更多无法访问的寄存器。

如果MIPS允许您有6位来选择寄存器,那么您可以使用多达64个不同的寄存器,但这些额外的位必须来自某处,可能通过减少操作或寻址模式的数量。

还有其他方法,有些处理器使用bank切换,这基本上是说“我现在正在使用这32个寄存器,但我也有这个特殊的SWITCH指令,让我把这些其他32个寄存器拉出来使用一段时间在切换回之前“它对于某些应用程序很方便,但对于其他一些应用程序而言在概念上很难。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.