计算机组成结构—主存储器

目录

一、主存储器的基本组成

译码器

主存中地址的分配

二、主存和 CPU 之间的连接

主存容量扩展

(1)位扩展

(2)字扩展

(3)字和位同时扩展

主存与CPU的连接

三、多模块存储器

1. 单体多字存储器

2. 多体并行系统

(1)多体高位交叉存储器

(2)多体低位交叉存储器


一、主存储器的基本组成

        主存储器简称主存或内存,是计算机中存储程序和数据的重要部件。主存内包含了存储体、各种逻辑部件以及控制电路等。

        主存是通过按地址访问的方式,对存储体内的存储单元进行读写操作的。因此主存首先需要从 MAR 中获取地址,由译码器进行地址译码、再经过驱动电路,进而通过选择线选中所需访问的单元。读出时,需要经过读出放大器才能将被选中存储单元的内容送到 MDR;写入时,MDR 中的数据也需要经过写入电路才能真正存入被选中的单元。所以主存实际结构的基本组成如下:

        译码器、驱动器和读写电路都集成在 DRAM 存储芯片中,而 MAR 和 MDR 则集成在 CPU 芯片内。存储芯片可以通过总线与 CPU 相连。

        当要从主存中读某个数据字时,首先由 CPU 将字的地址送到 MAR,通过地址总线送至主存,然后发出读命令;主存的译码器将地址总线送来的地址译码,导通对应存储单元的选择线,收到读信号后,便将该单元的内容送到数据总线上,进而交给 MDR。

        如果要向主存写入一个数据字,仍然需要 CPU 先把地址送到 MAR,并把要写的数据送到 MDR,然后发出写命令;主存译码器依然从地址总线读取地址进行译码,接到写命令后,就把数据线上的信息写入对应的存储单元。

译码器

        译码器是一种具有 “翻译” 功能的组合逻辑电路器件,可以将以二进制码表示的输入状态,转换成对应的特定输出信号。“译码” 就是 “编码” 的逆过程。

        对于 n 位信号输入,译码器对应有 2^{n} 个输出。译码器可以用逻辑门电路很容易实现

        存储器中的地址译码器,就是以 n 位地址线作为输入,以 2^n^ 根选择线作为输出的译码器。当输入一个地址信号时,地址可以看作一个二进制数,它对应的十进制数就是选择线的序号。

主存中地址的分配

        主存中各存储单元的空间位置,都是由存储单元的地址号表示的;地址总线的作用就是给出要访问的存储单元的地址。每次访问存储单元,可以读出或者写入一个存储字。

        存储字长必须是字节(8位)的整数倍,不同机器的存储字长不同。计算机一般既可以按字来寻址,也可以按字节寻址。例如,一台机器的存储字长为 32 位,并且可以按字节寻址,那么它的每个存储字都包含了 4 个具有独立地址的字节,地址的分配方式如下:

        字地址是用该字高位字节的地址来表示,所以字地址总是 4 的整数倍,即二进制末两位总是 0。这样,对于同一个字内的字节,可以用地址末两位来进行区分,高位则是完全相同的。

        如果这台机器的地址线为 24 位,那么按字节寻址的范围是 2^{24}= 16M,按字寻址的范围为 16M / 4 = 4 M。

二、主存和 CPU 之间的连接

        现代计算机的主存都由半导体集成电路构成,一般使用 DRAM 芯片。单个芯片的容量不可能很大,通过存储器芯片扩展技术,将多个芯片集成在一个 内存条上,然后由多个内存条及主板上的 ROM 芯片组成计算机所需的主存空间,再通过总线与 CPU 相连。

主存容量扩展

        单片存储芯片的容量有限,很难满足我们实际应用的需要,所以主存一般不会直接使用单个芯片实现,而是需要将多个存储芯片连在一起扩展成更大的存储器。这称为 存储容量的扩展,主要的方法有 位扩展字扩展

(1)位扩展

        位扩展是指对字长进行扩展,也就是增加存储字长。这种情况下,系统地址线位数等于芯片地址线位数,而系统数据线位数多于芯片数据线位数。

        位扩展的连接方式:各芯片的地址线、片选线和读写控制线与系统总线相应 并联;各芯片的 数据线单独引出,分别连接系统数据线。各芯片同时工作。

        以之前介绍过的 SRAM 芯片 2114 为例,它的存储容量为 1K × 4,那么用 2 片 2114 采用位扩展的方式可以组成 1K × 8 的存储器。如下所示:

 

(2)字扩展

        字扩展是指对存储字的数量进行扩展,而存储字的位数满足系统要求。这种情况下,系统数据线位数等于芯片数据线位数,系统地址线位数多于芯片地址线位数。

        字扩展的连接方式:各芯片的地址线与系统地址线的 低位对应相连,芯片的数据线和读写控制线与系统总线相应 并联;由系统地址线的 高位译码 得到各芯片的片选信号。各芯片分时工作,同一时间只能有一个芯片被选中。

        例如,用 2 片容量为 1K × 4 的 2114 芯片,采用字扩展的方式可以组成 2K × 4 的存储器。如下所示

扩展之后的地址线为 11 位,共有 2^11^ = 2 K 个地址。其中:

  • 第一片 2114 的地址范围为 000 0000 0000 ~ 011 1111 1111;

  • 第二片 2114 的地址范围为 100 0000 0000 ~ 111 1111 1111。

    (3)字和位同时扩展

        字和位同时扩展是前两种扩展的组合,这种方式既增加存储字的数量,又增加存储字长。

        字和位同时扩展的连接方式:将进行位扩展的芯片作为一组,各组的连接方式与位扩展相同;由系统地址线高位译码产生若干个片选信号,分别接到各组芯片的片选信号。

        例如,用 8 片容量为 1K × 4 的 2114 芯片,字和位同时扩展之后可以组成 4K × 8 的存储器。如下所示:

扩展之后的地址线为 12 位,共有 2^12^ = 4 K 个地址。其中:

  • 第一、二片 2114 通过位扩展构成第一组,地址范围为 0000 0000 0000 ~ 0011 1111 1111;

  • 第三、四片 2114 通过位扩展构成第二组,地址范围为 0100 0000 0000 ~ 0111 1111 1111;

  • 第五、六片 2114 通过位扩展构成第三组,地址范围为 1000 0000 0000 ~ 1011 1111 1111;

  • 第七、八片 2114 通过位扩展构成第四组,地址范围为 1100 0000 0000 ~ 1111 1111 1111。

主存与CPU的连接

(1)合理选择存储芯片。通常选用 ROM 存放系统程序,选用 RAM 组成用户区。

(2)地址线的连接。CPU 地址线的低位与存储芯片的地址线相连,以选择芯片中的某一单元(字选);CPU 地址线的高位在扩充存储芯片时用,以选择存储芯片(片选)。

(3)数据线的连接。比较CPU的数据线数与存储芯片的数据位数。如果相等可以直接相连;如果不等,必须对存储芯片进行扩位,使其数据位数与 CPU 的数据线数量相等。

(4)读/写命令线的连接。CPU 的读/写命令线一般可以直接与存储芯片的读/写控制端相连。

(5)片选线的连接。片选信号一般由系统地址线高位译码,它是主存与 CPU 连接的关键。

三、多模块存储器

        随着计算机技术的发展,处理的信息量越来越多,对存储器的速度和容量要求也越来越高;而且随着 CPU 性能的不断提升、I/O 设备数量不断增加,导致主存的存取速度已经成为了整个计算机系统的性能瓶颈。这就要求我们必须提高主存的访存速度。

        基本的想法是寻找更加高速的元器件和存储芯片,或者采用层级结构、加入高速缓存;除此之外,调整主存的结构也可以提高访问速度。这就是所谓的 多模块存储器

1. 单体多字存储器

        在主存中,程序和数据是连续存放的,所以 CPU 访存取出的信息也是连续的。如果将存储器的存储单元进行扩展,让它能够存储更多的字,那么就可以在一个存取周期内,从同一地址取出更多的指令。将多条指令逐条送至 CPU 执行,由于 CPU 的速度远高于主存,这样就相当于增大了主存的带宽,提高了速度。

        这种方式是对单独的存储器进行了扩展,类似于位扩展的思路,不过是将一个地址对应的数据扩展到了多个存储字。所以这种结构的存储器称为 单体多字存储器

        例如,对于一个单体四字存储器,可以在一个存取周期取出四个字的信息。假设指令字长就是一个存储字,那么原先一个存取周期拿到一条指令,现在就可以拿到 4 条;逐条传给 CPU 进行处理,就相当于每隔 1/4 周期,主存就向 CPU 传送了一条指令,带宽变成了 4 倍。

  • 结构特点:存储器中只有一个存储体,每个存储单元存储 m 个字,总线宽度也为 m 个字。

  • 访问方式:一次并行读出 m 个字,地址必须顺序排列并处于同一存储单元。

  • 优点:宽度为单体单字存储器的近 m 倍(访问的内容在同一行时)。

  • 缺点:如果出现访问冲突(需要的内容不在同一行)或遇到转移指令,效率会显著降低。

2. 多体并行系统

        另一种思路是采用多模块组成存储器,各个模块可以并行读写,这就是多体并行系统。每个模块有相同的容量和存取速度,各模块都有自己独立的地址寄存器(MAR)、数据寄存器(MDR)、地址译码、驱动电路和读/写电路,它们能并行工作,也能交叉工作。

        所谓的 “并行工作”,就是 CPU 可以同时访问 N 个模块,同时启动,同时读出;当然,由于总线是公共的,同时读出的 N 个字需要在总线上分时传送。

        根据对这 N 个模块中存储单元的不同编址方式,多体并行系统又可以分为 多体高位交叉存储器多体低位交叉存储器

(1)多体高位交叉存储器

        多体高位交叉存储器中,各模块采用 高位交叉方式编址

        高位交叉方式编址时,地址分为两部分,高位地址表示体号,低位地址为体内地址。这种编址方式下,一个模块(也就是 “体”)内的地址是连续的,程序存储时会按照体内地址的顺序存放,也就是先存一个模块,存满之后再存下一个;所以这种方式也叫 “顺序存储”。

        只要调动合理,使不同的请求源同时去访问不同的模块,就可以实现并行工作。比如,CPU 在访问一个模块的同时,外部设备可以以直接存储器访问(DMA)的方式访问另一个模块,这样两个体就是并行工作的。

(2)多体低位交叉存储器

        多体低位交叉存储器中,各模块采用 低位交叉方式编址

        低位交叉编址是指用主存地址的低位来指明存储器模块,高位指明模块内的字地址。这种编址方式下,连续的地址分布在相邻的模块中,同一模块内的地址是不连续的,因此也叫做 “交叉存储”。有 M 个模块的低位交叉编址,又叫 模 M 编址

        上面是一个模 4 交叉编址的存储器,存储体模块个数为 4,所以第一个模块中所有存储单元的地址号,对 4 取模都为 0;同样道理,第二、三、四个模块的地址号,对 4 取模结果分别为 1、2、3。具体的编址地址号如下所示:

        程序按照地址连续存放在相邻模块中,采用低位交叉编址后,可以在不改变每个模块存取周期的前提下,采用 流水线 方式并行存取,提高存储器的带宽。

          在一个存取周期 T 内,m 个模块按一定的顺序分时启动;如果分时启动的时间间隔为 t = T/m,那么在一个存取周期内,CPU 交叉访问各个模块,从而使各模块的读/写操作交错重叠进行,最终向 CPU 可以传送 m 个字。这样,存储器的带宽提升为 m 倍。

        由于各个模块传送取出的字共享总线,因此假设总线传输周期为 τ,当 t 小于等于 τ 时,就可以获得最大的存储器带宽。所以:

t = T/m ≤ τ

        所以,对于一个存取周期为 T、总线传输周期为 τ 的机器,设计多体低位交叉存储器时应该有 m ≥ T / τ。一般取最小值即可,在采用流水线方式时应该满足

T = m τ

        对于四体低位交叉编址存储器 T = 4 τ,按流水线方式工作时不同模块访问字的时间顺序如下:

 

        可以看出,对于流水线工作的低位交叉存储器,连续读取 n 个字所需的时间为:

t_{1}= T + ( n - 1 ) τ

        而如果是高位交叉存储器,对应的时间为:

t_{2} = n T

对于上面的四字低位交叉存储器,τ = T / 4,所以 t_{1}= ( n + 3 ) T / 4,明显要低于 t_{2};当 n 非常大时,t_{1} 趋近于 T / 4,即速度提升了 4 倍。

        当然,由于多模块存储器需要同时管理多个存储模块,还要同时处理来自不同部件的访问请求,因此必须增加一个存储器控制部件(简称存控)来处理这些事情。存控可以合理安排各部件请求访问的顺序,并有控制主存读/写操作的功能。

        因为多模块有额外的开销,所以尽管 m 体低位交叉存储器理论上速度可以达到原先的 m 倍,在实际运行中会有很大差距;而且随着模块数 m 的增大,速度的提升也会越来越不明显。因此实际应用中,最多的情况就是采用 2个模块的二体低位交叉存储器,这就是所谓的 “双通道内存” 技术。

        此外,通过在 DRAM 中引入一个锁存器,可以将 CPU 给出的地址和控制信号锁存,然后在指定的时钟周期后再响应。这样一来,CPU 和主存的数据交互就可以 同步 于系统时钟信号,这种存储器就叫做 同步 DRAM(Synchronous DRAM,SDRAM)。CPU 在发出访问请求后不需要等待,可以在存储器的读取周期内去完成其它操作;等到读取周期(可能需要若干个时钟周期)结束后,CPU 就可以获得从存储器读出的数据了。

        SDRAM 还支持猝发访问模式,CPU 只要发出一个地址就可以访问连续的一段数据块。SDRAM 芯片内也可以包含多个存储体,构成多体并行系统,提高访问速度。新一代的 SDRAM 可以每周期两次向 CPU 传输数据,因此称为 双倍数据速率 SDRAM(Double Data Rate SDRAM,DDR-SDRAM)。目前已经是DDR5的时代了。

  • 32
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
计算机组成原理中,缓存存储器(Cache Memory)是位于CPU和主存储器之间的一种高速缓存。它的主要目的是解决CPU与主存储器之间速度不匹配的问题,提高数据访问速度和系统性能。 Cache存储器的思维导图可以分为三个主要部分:结构、工作原理和优缺点。 1. 结构部分: - Cache存储器分为数据缓存和指令缓存两部分。 - 数据缓存用于存放经常被CPU访问的数据块,而指令缓存则用于存放CPU即将执行的指令。 - Cache存储器一般分为多级,如L1、L2和L3等,按照访问速度依次递减,容量逐渐增大。 - 每一级Cache存储器由多个Cache块组成,每个Cache块包含标记、数据和有效位等字段。 2. 工作原理部分: - CPU首先将访问请求发送给Cache存储器,如果要访问的数据或指令在Cache中,则命中Cache,直接从Cache读取。 - 如果在Cache中未命中,则请求转发给主存储器主存储器将数据块传送到Cache,并替换其中的数据块。 - 块替换算法有多种,如最近最少使用(LRU)和随机替换等。 - 当Cache存储器满时,需要进行更新操作,将最早不再使用的数据写回主存储器。 - 通过使用Cache存储器,CPU在执行指令时能够更快地获取到所需的数据,从而提高运行效率。 3. 优缺点部分: - 优点:Cache存储器能够有效地减少CPU与主存储器之间的数据交换次数,提高数据访问速度;它的局部性原理能够充分利用程序的局部性特征,减少了访问主存的次数,提高系统性能。 - 缺点:Cache存储器一般容量有限,不能完全替代主存储器;由于Cache存储器与主存储器之间需要同步,造成复杂的硬件实现和额外的开销;另外,在多处理器系统中,Cache一致性问题也需要额外的处理。 综上所述,Cache存储器在计算机组成原理中起着重要的作用,能够提高数据访问速度和系统性能,但也存在一些缺点需要注意。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值