地址 space、可寻址性、可字寻址、寻址模式之间有什么区别?

What's differences between address space, addressability, word-addressable, addressing mode?

据我所知:

我不确定我是否正确,因为这些术语非常相似,有时我很难说出正确的事情。

Address space: the amount of usable memory allocated for program or process

是的,主要是:所以在进程中的程序的上下文中,地址 space 转到可能的地址 可以 使用,而不是那些在实际使用中。这包括不可用的位置以及可用的位置。地址 space 通常用其位宽大小来描述,例如32 位或 64 位。

关于地址的关键点space是每个进程都有自己的地址,所以每个进程都可以使用相同的地址。一个进程无法想象将访问另一个进程(模有意共享内存)的内存(地址 space)的地址。

在硬件上下文中,地址 space 大小是用于地址总线的位数,它在处理器和主内存之间传递地址。这个位数可以比地址 space 多,例如,在现代 32 位机器上,它可能有 33 位地址 space 的能力,这意味着实际内存比可能的多由一个单一的过程来解决。在 64 位机器上,用于寻址主内存的位数可能高达 48(我的有 35 位,最大 32 GB)。

软件通常不知道硬件地址总线的大小,因此和其他一些原因意味着程序将使用完整的 32 位字作为 32 位进程的地址和完整的 64 位字用于 64 位进程上的地址。

Addressability: the way in which computer identifies different memory locations.

是的。 属性 或内存的基本特性是它具有可寻址性,即我们可以获取某些存储的地址(地址是数字)并将该地址用作 first-class 实体,这意味着例如,我们可以将一个地址作为参数传递给一个函数,该函数可以使用该地址来访问它所指的内存。通过这种方式,我们可以将任意大小的数据结构传递给函数。此外,一个实体还可以通过其地址引用另一个实体,用于表示丰富的数据结构。

让我们将其与 CPU 寄存器进行对比,它们可以在机器代码指令中命名,但它们没有地址,它们不能被占用,它们不能被索引:它们没有可寻址性(最多 CPUs)。

Word-addressable: refers to a memory unit whose size is equal to "word", usually one byte and pointed by a single binary address

在此上下文中,X-addressable 指的是我们通过使用单个内存地址 a 获得了多少位存储空间。这涉及到如果我们也存储在 a+1a-1 的概念,它们代表不同的存储位置,每个宽度为 X.

在将单词定义为 8 位字节时使用术语 word-addressable 是不常见的。通常术语 word-addressable 与术语 byte-addressable 相对应。现代计算机是字节寻址的,这意味着每个地址包含一个字节,即 8 位。像 32 位字这样的多字节项目占用多个存储字节 (4),这也意味着它们占用多个(字节)地址。我们通过最低地址引用一个多字节项目。

一些计算机,尤其是LC-3、MARIE和Hack等教育计算机是可字寻址的,其中字为16位宽;这简化了索引操作。它们的字可寻址意味着每个地址(例如 aa+1)存储 16 位。早期的计算机,例如1950 年代和 60 年代的人也使用字寻址,字长从 12 位到 36 位不等。

Addressing mode: refers to the way in which the operand of an instruction is specified

是的,它通常是指内存操作数,但在某些处理器上,当操作数可能在内存或寄存器中时,它指的是任何操作数。最基本的寻址方式大概就是寄存器间接寻址了。

由于寻址内存是数据结构的基础,一些处理器提供了多种计算地址的方法,而无需为这些寻址计算提供单独的指令。这非常方便。在复杂的寻址模式中,处理器计算一个地址(例如使用加法和可能的缩放),使用该有效地址,然后丢弃该地址。

如果我们想重复访问完全相同的内存位置,我们可能会执行复杂寻址模式可以执行的相同计算,但会捕获计算出的地址,以便我们以后可以直接使用它,而无需重复复杂地址计算。

Erik 的回答很好,可以根据问题的上下文以不同的方式思考或描述它。我们不知道。

Address space: the amount of usable memory allocated for program or process

处理器可以访问的地址数量。不要将它与暗示 read/write (sram/dram) 或可以映射到地址 space 的只读(闪存等)存储混淆。但是地址 space 中也有外围设备,它们不是内存,地址 space 中可能还有其他东西(来自 mmu 的虚拟映射等)。

这是一个比内存 space 更好用的术语,即使人们使用内存 space 或内存映射来定义一切,内存、外围设备和未使用的 space .因为人们总是认为一切都是记忆……其实不是。

Addressability: the way in which computer identifies different memory locations.

能不能访问字节,能不能访问字等等,你是不是仅限于字,不能访问字节...

Word-addressable: refers to a memory unit whose size is equal to "word", usually one byte and pointed by a single binary address

通常是指最小的可寻址单元是一个字。地址 0 是字 0 地址 1 是字 1。假设一个字不是一个字节,这意味着在此上下文中可寻址的字意味着您不能 address/access 一个单独的字节。

Addressing mode: refers to the way in which the operand of an instruction is specified

所以取决于你的意思,是的。具体的指令集有不同的寻址方式,基本上就是不同的指令或指令选项。所以你可能有一个直接寻址模式,其中实际地址在指令中。或通过通用寄存器的一级间接寻址。那是一种不同的寻址方式。有些有两个间接级别 gpr 包含一个地址,您读取该地址,然后该地址就是操作的地址。双间接。有时您有基于内存的操作数而不是基于寄存器的操作数,因此通过指令中的内存位置进行间接访问;去看看msp430和pdp11。