为什么内存位置也称为寄存器?

问题描述 投票:0回答:3

在嵌入式系统和系统编程中,术语“寄存器”用于指代

  1. 微控制器内部的CPU寄存器,例如R1、R2、ARM 微控制器中的 PC,以及
  2. 内存地址空间内的某些“特殊”位置。

术语“寄存器”以这种方式重载背后是否有原因或历史?

embedded cpu-registers memory-mapped-io
3个回答
9
投票

从功能上来说,寄存器是一个可以存储值的元素(例如 D 型触发器或等效的多位数组)。

除了用于保存操作数和 ALU 计算结果的传统 CPU 寄存器之外,还可以有专用于其他用途的特殊功能寄存器(片内或片外)。例如,实现串行端口的 UART 外设可能有一个寄存器来保存除数,该除数从其时钟导出波特率,一个用于传出数据,一个用于接收数据,另一个是模式设置的位图。

在具有内存映射I/O的机器上,特殊功能寄存器出现在内存空间中,并通过内存访问指令进行访问(尽管有时存在限制,例如只有特定的访问宽度是合法的)。相反,在I/O映射机器上,有专门用于访问I/O端口地址的特殊指令,以及(至少在双用途外部总线上)指示访问是对存储器还是对I/O的控制信号。 /O 空间。

更令人困惑的是,有一些传统处理器设计,例如 8051,其中 CPU 寄存器也可以作为普通内存位置进行访问。在许多其他机器中,虽然 CPU 寄存器存储在寄存器文件中而不是内存中,但它们在功能上在指令字的位字段中具有“地址”,该地址指定哪个寄存器是操作数或结果 - 带有编号寄存器的 RISC 架构使得这一点特别明显。


2
投票

I/O 或特殊功能寄存器通常是内存映射,但它们仍然是寄存器,因为它们不是通用内存,而是 I/O 外设控制和状态寄存器。

与存储器映射随机访问读/写或只读存储器不同,寄存器通常具有定义的上电/复位状态等特性,并且各个位可以是读/写、读/写或写/写等级。此外,它们的值可以独立于写入它们的任何值而改变,因为它们也可由相关外设写入;这通常是相互的——处理器写入,而外设读取,反之亦然;通常是位级别而不是字级别。甚至很常见的是,一个地址可以引用两个寄存器,一个只读,另一个只写。


1
投票

两者都是寄存器,即具有特殊用途的一小块内存。 CPU 寄存器(自然)不是内存映射的,因为它们可以通过 CPU 指令访问。而控制CPU核心外的外围硬件的寄存器一般都会映射到特定的地址。

简单地说,1. 和 2. 之间唯一真正的区别在于您访问它们的方式。但寄存器有很多种:CPU 寄存器可以是与给定硬件相关的非常专业的东西,而不一定只是用于保存程序计算结果的通用“累加器”。

处理器寄存器的维基百科页面看起来是关于这个主题的很好的读物。

© www.soinside.com 2019 - 2024. All rights reserved.