PDP 11 被称为字可寻址的,这意味着每个数据访问都返回 16 位数据。假设我为内存中的地址 100 发出读取请求。它会从地址 100 返回 8 位 (LSB) 和从地址 101 返回 8 位 (MSB) 吗?而且由于PDP 11有16个地址位,为什么它只有32K内存位置而不是64K内存位置?是因为它是字可寻址的(每次访问 2 个字节)
蒂亚。
以下是有关硬件(如 11/70 和 11/84)的内存寻址的一些附加信息,这些硬件允许所有 PDP-11 型号中最大的可用物理内存。(请原谅格式不一致。我必须在Stackoverflow对Markdown语法的限制范围内工作。
PDP-11/70 使用 22 位对物理内存进行寻址。这 表示总共 222(超过 400 万个)字节位置。
在 22 位地址可能超过 400 万个字节位置中, 顶部 256K 用于引用 UNIBUS 而不是物理 记忆。因此,最大主内存为 222- 2 18,或总计 3,932,160 字节。
PDP-11/70 使用三个单独的地址空间。主要 内存使用 22 BLT 地址,UNIBUS 使用 18 位地址, 计算机程序使用 16 位虚拟地址。这 信息摘要如下:
Bytes
16 bits program virtual space 2^16 = 64K
18 bits UNIBUS space 2^18 = 256K
22 bits physical memory space 4 million
(摘自 http://bitsavers.trailing-edge.com/pdf/dec/pdp11/handbooks/PDP11_Handbook1979.pdf)
就程序虚拟地址空间而言,某些 PDP-11型号(如 PDP-11/45、11/70 和 11/84)具有对两个单独的 16 位虚拟地址空间的硬件支持,一个用于程序指令,一个用于数据。这有效地使这些计算机的虚拟地址空间翻了一番。在我编写PDP-11系统编程的日子里,通常将这两个地址空间称为I-Space和D-Space。
PDP-11 是字节寻址机器,但它具有 16 位数据总线。如果您发出一个单词读取地址 100,它将返回 100 和 101 处的两个字节。PDP-11 是小端序,因此 100 处的字节是低字节。
PDP-11具有用于操作字节和字的指令,字节读取只会将地址100处的字节读取到指定寄存器的低字节。我认为有特殊的说明来交换寄存器的低字节和高字节。
如果您发出一个单词,则读到一个奇怪的地址,例如mov 101,r1
我认为它生成了一个奇怪的地址异常。对于所有模型来说,这可能是不正确的或不正确的,但我清楚地记得,在1989年左右,我不得不向一个在PDP-11系统上工作的人解释什么是奇怪的地址陷阱。
功劳归于fuz。
pdp11 是一个基于字节的机器,一个字的定义是 16 位(对于一个重八进制的机器来说非常奇怪)。
快速浏览 DEC 文档
16 位字(两个 8 位字节)直接寻址 32K 字或 64K 字节 (K = 1024)
以上来自 PDP11/34 文档,但由于您谈论的是 32K,这应该就足够了(不必挖掘每个 pdp11/lsi11 文档)。
在模拟器上工作时,请记住有 18 位地址/总线,这对于这样一个高度面向八进制的时间段和/或公司/产品更有意义。
啊,是的,扩展寻址 18 位。
该文档继续使用单词作为内存的单位,了解这是一种惯例,了解您的历史,今天我们使用字节,但实际上如果您在内存世界中,他们使用位,他们不使用字节来定义内存的大小。 它可能很好,必须看起来数据总线是 16 位并且地址是基于字的,这并不意味着处理器可以做什么,您正在阅读此内容的处理器可能具有 32 或 64 位宽的数据总线这是否意味着它是字或双字(双字或四字,取决于架构及其常用术语)只能寻址? 不。