operating-system - 为什么存在寄存器以及它们如何与 cpu 一起工作?
问题描述
所以我目前正在学习操作系统和编程。
我想要寄存器如何详细工作。
我所知道的是有主存储器和我们的 CPU,它通过地址总线从主存储器获取地址和指令。
还有一些 MCC(内存控制器芯片,有助于从 RAM 中获取内存位置。)
在互联网上,它显示寄存器是临时存储,并且可以比寄存器更快地访问数据。
但我想真正了解它们如何工作的深层过程。因为它们也是 32 位和 16 位的。我真的很迷茫。!!!
解决方案
我不是以英语为母语的人,请原谅我的一些可能不正确的术语。希望这会有所帮助。
为什么存在寄存器
当用户程序在 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
位即可。
推荐阅读
- algorithm - 使用 Big-Θ 表示法的最坏情况运行时间
- flutter - Flutter upgrade fail
- nuget - NuGet: references to assemblies in runtimes folder not added
- reactjs - Can module react-redux by component like Angular?
- regex - Regexp syntax MATLAB
- python - 模板渲染未将 pymongo 聚合变量传递给模板
- python - What is type
I was using
pandas
andnumpy
to process some data until I got two similar output of arrays:array(['french', 'mexican', 'cajun_creole', ..., 'southern_us', 'italian',
- html - CSS - 始终覆盖在菜单顶部
- html - 使下拉菜单保持不变,直到单击按钮
- django - 限制用户只阅读自己的文章