注册变量是获取快速访问的众所周知的方法(register int i)。但是,为什么在层次结构(寄存器,缓存,主内存,次要内存)的顶部寄存器?使访问寄存器如此之快的所有内容是什么?

有帮助吗?

解决方案

寄存器是CPU的核心部分,CPU的大部分指令集将用于针对寄存器而不是内存位置的工作。访问寄存器的值通常需要很少的时钟周期(可能只有1个),一旦访问内存,事情就会变得更加复杂,并且涉及缓存控制器 /内存总线,并且操作将花费更多的时间。

其他提示

寄存器是直接连接到ALU的电路,其中包含算术电路。每个时钟周期,CPU核心的寄存器单元都可以将一个左右的变量馈入其他电路。实际上,DataPath(Alu等)中的单元可以通过 旁路网络, ,这在某种程度上形成了寄存器上方的层次结构级别 - 但他们仍然使用注册数来互相解决。 (完全管道的CPU的控制部分动态映射数据座单元以注册数字。)

register C中的关键字无用,您不应该使用它。编译器确定寄存器中应有的变量以及何时。

寄存器本质上是内部CPU内存。因此,访问寄存器比任何其他类型的内存访问更容易,更快。

较小的记忆通常比较大的记忆更快。他们还可能需要更少的位来解决。一个32位指令词可以容纳三个四位寄存器地址,并为操作码和其他东西有很大的空间;一个32位存储地址将完全填充一个指令单词,没有其他任何空间。此外,解决内存所需的时间以与内存大小的日志成正比的速率增加。从4 GIG内存空间访问一个单词将比从16字寄存器文件访问一个单词要长几百倍。

可以从小型快速寄存器文件中处理大多数信息请求的机器要比使用所有内容较慢的内存要快。

每个微控制器都有比尔提到的CPU,它具有Alu的基本组成部分,一些RAM以及其他形式的内存以协助其操作。 RAM是您所指的主要内存。

ALU处理所有肢体逻辑操作,并在执行这些计算的任何操作数上操作,它将操作数加载到寄存器中,对这些操作执行操作,然后您的程序直接或间接地访问这些寄存器中的存储结果。

由于寄存器最接近CPU的核心(又称处理器的大脑),因此在链条和当然直接在寄存器上执行的链中,它们的时钟周期最少。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top