字、位的扩展

位扩展主要是多个芯片共用一个CS

字扩展连起来后多个芯片不能同时工作,因为都连在相同的数据线,会发生错误,需要CS片选信号来控制芯片的使用。

一个取巧:可以去最高位寻找,两个芯片的地址分为两段,如果第一段的最高位是0,第二段的最高位是1,就可以把这个最高位做成一个信号,通过一个反相器进行控制

字、位

字、位同时扩展,先进行位扩展(使用相同CS片选信号)分为一组,再进行字扩展决定使用多少组。字扩展多余的地址线(位数)用来做CS片选信号(通常使用译码器给出信号输出)

字、位同时扩展

这里使用2-4译码器,我们有12个地址线,地址线只需要10个,多余2个做CS片选信号。由于4个输出,第一个输出用在第一组位扩展中,第二个输出用在第二组位扩展中,第三个输出用在第三组位扩展中,第四个输出用在第四组位扩展中。

字,字长,字节

字(Word)、字长(Word Length)和字节(Byte)是计算机中涉及数据存储和处理的几个概念,它们之间有以下关系:

  1. 字(Word):

    • 字是计算机中基本的数据单位,表示计算机在一次操作中能够处理的二进制数据块的大小。
    • 一个字的大小通常由计算机的体系结构和处理器设计决定。
  2. 字长(Word Length):

    • 字长是指计算机中一个字的位数,即一个字包含的二进制位数。
    • 一个字的字长与计算机的寄存器和数据总线的宽度密切相关。
  3. 字节(Byte):

    • 字节是计算机存储中的基本单元,通常由8个二进制位组成。
    • 字节是内存中数据的基本存储单位,而字则是在处理器级别定义的数据操作单位。

尽管大多数计算机系统中字节通常是8位,但并非所有情况都如此。字节的位数可以有不同的定义,尤其是在一些特殊的计算机体系结构中。在具体的计算机系统中,您应该查阅相应的文档或规格说明,以了解字节的确切定义。

地址线,字 相关概念

问:

如何理解:字的数量是由地址线的根数决定的,n根地址线有2^n个字

答:

这是关于计算机内存容量和地址线的关系的一个基本原理。让我们逐步解释:

  1. 地址线: 在计算机系统中,地址线是用于寻址内存单元的线路。每根地址线能够表示2个状态(0或1),因此有多少根地址线就有2的多少次方个可能的地址。

  2. 字的数量: 字是计算机中基本的数据单元,通常表示为一个字长(word)。一个字包含多个字节。字的数量由地址线的根数决定,这是因为地址线的变化会导致地址的变化,从而影响能够寻址的内存单元的数量。

  3. 2的n次方个字: 当有n根地址线时,每根地址线的状态(0或1)组合起来可以表示2的n次方个不同的地址。每个地址对应一个字,因此有2的n次方个字。

举例说明:

  • 如果有3根地址线,那么每根地址线有2个状态,总的地址组合方式为2 * 2 * 2 = 2^3 = 8。因此,可以寻址8个不同的字。

  • 如果有8根地址线,那么每根地址线有2个状态,总的地址组合方式为2^8 = 256。因此,可以寻址256个不同的字。

总的来说,字的数量和地址线的根数之间的关系是通过2的n次方的关系来确定的,其中n是地址线的根数。这是计算机内存寻址的基本原理之一。

大端序和小端序

大端(Big Endian)和小端(Little Endian)是两种不同的字节序(Byte Order)方式,用于存储多字节数据类型(如整数)在内存中的顺序。这涉及到一个字(word)的存储方式,字可以由多个字节组成。

  1. 大端序(Big Endian):

    • 在大端序中,最高有效字节(Most Significant Byte,MSB)存储在最低的地址,而最低有效字节(Least Significant Byte,LSB)存储在最高的地址。
    • 举例来说,对于整数0x12345678,它在大端序中的存储方式为:
      1
      0x12 0x34 0x56 0x78
    • 大端序类似于我们书写数字的方式,先写高位再写低位。
  2. 小端序(Little Endian):

    • 在小端序中,最低有效字节(LSB)存储在最低的地址,而最高有效字节(MSB)存储在最高的地址。
    • 以同样的例子,整数0x12345678在小端序中的存储方式为:
      1
      0x78 0x56 0x34 0x12
    • 小端序则是相反的顺序,先写低位再写高位。

在计算机系统中,不同的架构可能使用不同的字节序。x86和x86-64体系结构通常采用小端序,而一些其他体系结构可能采用大端序。这种差异可能在进行数据交换或在不同体系结构之间进行通信时产生影响。程序员在进行底层数据处理时需要注意字节序,以确保数据正确地传递和解释。

寄存器中MAR和MDR是什么?

MAR(Memory Address Register)和MDR(Memory Data Register)是与计算机内存交互的两个关键寄存器。

  1. MAR(Memory Address Register):

    • MAR 是一个寄存器,用于存储将要访问的内存地址。
    • 当计算机需要从内存中读取数据或将数据写入内存时,它将目标内存地址加载到 MAR 中。
    • MAR 存储的是一个地址,指示着内存中的某个特定位置。
  2. MDR(Memory Data Register):

    • MDR 是一个寄存器,用于存储从内存中读取或要写入内存的数据。
    • 当计算机从内存中读取数据时,数据被加载到 MDR 中;当计算机要将数据写入内存时,数据首先被存储到 MDR 中。
    • MDR 存储的是实际的数据内容。

这两个寄存器通常在计算机的内存访问周期中发挥重要作用。内存访问的基本过程可以描述如下:

  1. 读取数据:

    • 将要读取的内存地址加载到 MAR 中。
    • 计算机使用 MAR 中的地址访问内存,将对应地址的数据加载到 MDR 中。
  2. 写入数据:

    • 将要写入的内存地址加载到 MAR 中。
    • 将要写入的数据加载到 MDR 中。
    • 计算机使用 MAR 中的地址访问内存,并将 MDR 中的数据写入到指定地址。

这种分离的设计允许计算机在内存访问中更加灵活,可以独立地处理地址和数据的传输。MAR 和 MDR 的存在使得计算机能够有效地与内存进行交互,是计算机体系结构中重要的组成部分。

缓存——主存 主存的地址

缓存和主存之间使用的是主存的地址

实际上:缓存(Cache)是 按照内容来查找 的!即使给出一个地址,
也是从 的编号,去寻找主存中对应的块。

所以在程序执行过程中,即便是指令是在缓存中 ,指令的地址、或者我们需要的地址实际上是
主存的地址!然后,我们把主存的地址,转换成在缓存中的 块号,还有块内的 偏移地址 ,从而完成信息读取。

主存储器用到的地址,我们称为 实地址,也就是 物理地址

主存——辅存 虚拟存储器

虚拟存储器中程序的执行状态

在虚拟存储器中,当一个程序要运行时,逻辑地址和物理地址之间的映射是通过操作系统的地址转换机制完成的。这过程包括以下步骤:

  1. 逻辑地址生成: 当程序执行时,它生成的地址是逻辑地址。这些地址是相对于程序的虚拟地址空间的,而不考虑实际的物理内存位置。

  2. 地址转换: 操作系统的内存管理单元负责将逻辑地址转换为物理地址。这个过程中使用了页表或段表等数据结构,这些表存储了逻辑地址到物理地址的映射关系。

  3. 分页或分段: 在一些系统中,逻辑地址空间被划分为固定大小的页(Page)或段(Segment)。每个页或段都被映射到物理内存中的一个对应的页框或物理段。

  4. 地址检查: 操作系统会检查逻辑地址是否有效,即是否越界或者是否有相应的权限。如果地址无效,系统会产生一个错误。

  5. 访问物理地址: 最终,通过地址转换,逻辑地址被映射到了物理地址,程序可以访问实际的物理内存单元。

这个过程允许操作系统有效地管理内存,使得程序认为它们拥有一个连续的地址空间,而不必关心实际的物理内存布局。这种虚拟化的方式提高了系统的灵活性和安全性。

虚拟存储器中程序的执行状态

在虚拟存储器中,当一个程序要运行时,逻辑地址和物理地址之间的映射是通过操作系统的地址转换机制完成的。这过程包括以下步骤:

  1. 逻辑地址生成: 当程序执行时,它生成的地址是逻辑地址。这些地址是相对于程序的虚拟地址空间的,而不考虑实际的物理内存位置。

  2. 地址转换: 操作系统的内存管理单元负责将逻辑地址转换为物理地址。这个过程中使用了页表或段表等数据结构,这些表存储了逻辑地址到物理地址的映射关系。

3.分页或分段: 在一些系统中,逻辑地址空间被划分为固定大小的页(Page)或段(Segment)。每个页或段都被映射到物理内存中的一个对应的页框或物理段。

4.地址检查: 操作系统会检查逻辑地址是否有效,即是否越界或者是否有相应的权限。如果地址无效,系统会产生一个错误。

5.访问物理地址: 最终,通过地址转换,逻辑地址被映射到了物理地址,程序可以访问实际的物理内存单元。

这个过程允许操作系统有效地管理内存,使得程序认为它们拥有一个连续的地址空间,而不必关心实际的物理内存布局。这种虚拟化的方式提高了系统的灵活性和安全性。

存取周期vs.内存访问延迟

存取时间:又叫做 访存时间 ,指启动 1 次存储器操作 分别对应着 取数存数
到该 操作 完成所经历的时间。要注意的是,不同的存储器,可能读、写时间并不相同,比如 DRAM
读慢写快,而 FlashMemory 读快写慢等。

存取周期(存储周期):连续启动两次访存操作的最短时间间隔。它和存取时间的区别在于,存
储周期 > 存取时间,因为存储器状态需要恢复。

存储器带宽:单位时间内存储器所能传输的信息量。单位:bit/s,或者 Byte/s。这是数据传输速
度的指标。

问:

我们所使用的 AIDA64 软件测试内存性能时,Latency 是存取时间或者存取周期吗?

答:

在 AIDA64 中,”Latency” 常指的是内存访问延迟,而不是存取周期。内存访问延迟表示从发起内存访问请求到收到响应的时间, 常以纳秒(nanoseconds)为单位进行衡量。内存访问延迟的数值越低,表示内存系统的响应速度越快。

我们再强调一下,存取周期 常指的是 内存模块的访问速度 ,即 连续启动两次访存操作的最短时间间隔或者说是 完成一个存取操作所需的时间。虽然存取周期和内存访问延迟在某种程度上相关,但它们并不完全相同。内存访问延迟更加综合,考虑了请求的发送、处理和响应等多个因素。

因此,在 AIDA64 中的 “Latency” 一词更可能是指 内存访问延迟 而非存取周期。我们要指出,不同的计算工具和厂商可能有不同的术语和方式来描述这些性能参数,因此在具体使用时最好参考相应的文档或说明,需要谨慎对待。

只读存储器(ROM)

只读存储器(ROM)

只读存储器(ROM)图1

只读存储器(ROM)图2

4位二进制转十六进制码值转换器

4位二进制转十六进制码值转换器

随笔: 这里是在设计一个码值转换器,将一个四位二进制转换为一个十六进制数并且输出 7 位 ASCⅡ 码。 十六进制数字的 ASCⅡ 因为需要考虑偏移量所以要七位来表示。我们通过真值表知道 A6 即 ASCⅡ 的最高位第七位,与 A5 在 0~9 时相反,而且 A5A4 值相同,在A4 A5 A6中,我们只用其中一位来表示 A4 A5 A6 就可以了,相当于节约了 2 位的空间开销。所以我们只需要设计 5 位位宽。所以 ROM 的容量是 16 字 ×5 位。(4 位输入 2^4 字,5 位位宽)

  • Copyrights © 2015-2024 buynonsense
  • Visitors: | Views:

请我喝杯咖啡吧~

支付宝
微信