首页 > 解决方案 > 为什么存在寄存器以及它们如何与 cpu 一起工作?

问题描述

所以我目前正在学习操作系统和编程。

我想要寄存器如何详细工作。

我所知道的是有主存储器和我们的 CPU,它通过地址总线从主存储器获取地址和指令。

还有一些 MCC(内存控制器芯片,有助于从 RAM 中获取内存位置。)

在互联网上,它显示寄存器是临时存储,并且可以比寄存器更快地访问数据。

但我想真正了解它们如何工作的深层过程。因为它们也是 32 位和 16 位的。我真的很迷茫。!!!

标签: operating-systemhardwareramcpu-registers

解决方案


我不是以英语为母语的人,请原谅我的一些可能不正确的术语。希望这会有所帮助。

为什么存在寄存器

当用户程序在 CPU 上运行时,它以“动态”的方式工作。也就是说,我们应该存储传入的源数据或任何中间数据,并对它们进行特定的计算。需要存储设备。我们可以在触发器、片上 RAM/ROM 和片外 RAM/ROM 之间进行选择。

编程器模型这个词register实际上是物理电路中的一个D触发器,它是一个存储设备,可以保存一个位。一个 IC 设计由标准单元部分(包括register前面提到的和and//or等门)和硬宏(如 SRAM)组成。随着技术节点的进步,标准单元的延迟越来越小。Auto Place-n-Route 工具将放置register以及附近的相关周边逻辑,以确保逻辑可以在指定的 3.0/4.0GHz 速度目标下运行。出于一些实际原因(我不太确定,因为我不做布局),我们倾向于在周围放置硬宏,从而导致更长的金属线。这加上SRAM本身的特性,片上SRAM通常比D触发器慢。如果存储设备不在芯片上,比如外部闪存芯片或 KGD(已知良好的芯片),它会更慢,因为信号应该通过 2 个以上延迟更大的 IO 设备。

它们如何与 cpu 一起工作

每个register都分配了一个不同的“地址”(可能不对程序员开放)。这是通过添加地址解码逻辑来实现的。例如,当 CPU 将要执行一条指令mov R1, 0x12时,地址解码逻辑会看到 的二进制代码R1,并且只选择与 对应的触发器R1。然后将数据0x12存储(写入)到这些触发器中。读取过程相同。

关于“它们也是 32 位和 16 位之类的东西”,位宽不是问题。触发器和 RAM 中的一个字都可以具有 的位宽N,只要同一地址可以同时选择RAM 中N的触发器或N位即可。


推荐阅读