计算机组成原理学习笔记——提高 CPU 访存速度的相关技术

提高 CPU 访存速度的技术

    • 一、双端口存储器
      • 1、异址编址
      • 2、同址编址
    • 二、多模块存储器
      • 1、单体多字存储器
      • 2、多体并行存储器
        • 2.1、高位交叉
        • 2.2、低位交叉
        • 例题:

  • 用于提高 CPU 访问存储器的速度的技术有:双端口存储器技术和多模块存储器技术,都是一种并行技术,前者时空间并行,后者是时间并行。

一、双端口存储器

  • 一般是双端口 RAM,这种 RAM左、右两边都有相互独立的地址线、数据线和读写控制线,允许两个独立的控制器同时异步地访问存储单元;这类存储器在编址时有两种情况:

1、异址编址

  • 指的是两个端口使用不同地地址编号,好处就是读写操作不会发生冲突,缺点是同一个芯片由两个地址编号,会造成地址浪费或地址线线数增加一倍。

2、同址编址

  • 指的是存储器地两个端口使用同一个地址编号,这样一来两个端口对同一主存操作可能发生如下四种情况:
  • 1)两个端口不同时对同一地址单元存取数据。
  • 2)两个端口同时对同一地址单元读出数据。
  • 3)两个端口同时对同一地址单元写入数据。
  • 4)两个端口同时对同一地址单元操作,一个写入数据,另一个读出数据。
  • 第 1)和 2)情况不会发生错误,而第三种情况则会出现写入错误;第四种情况会出现读出错误。
    为了解决上述可能出现的数据冲突(存储错误或读出错误),设置一个信号 BUSY,并置为0,由逻辑判断决定暂时关闭一个端口(延时),未被关闭的端口正常访问,被关闭的端口延长一个很短的时间段才能被访问。
    计算机组成原理学习笔记——提高 CPU 访存速度的相关技术_第1张图片

二、多模块存储器

  • 采用多模块存储器也可以提高处理器对存储器的访问速度,常用的有单体多字存储器和多体低位交叉存储器。CPU 的速度比存储器快,若同时从存储器中取出多条指令,就可以充分利用 CPU 资源,提高运行速度,多体交叉存储器就是在这种思想基础上出现的。

1、单体多字存储器

  • 这种存储器中只有一个存储体,每个存储单元储存m个字,总线宽度 m 个字,地址必须顺序排列并处于同一个存储单元;在一个存取周期内,从同一地址取出 m条指令并逐条送到 CPU执行。
  • 优点:增大了存储器的带宽,提高了存储器的工作速度。
  • 缺点:指令和数据在主存内必须连续存放,遇到转移指令或操作数不能连续存放,这种方法效果不明显。

2、多体并行存储器

  • 指有多个多体模块组成的存储器;每个模块容量和存取速度一样,每个模块有各自独立的控制电路、地址寄存器和数据寄存器。模块之间既能并行工作也能交叉工作。
  • 主要有高位交叉编址和低位交叉编址两种多体并行存储器。

2.1、高位交叉

计算机组成原理学习笔记——提高 CPU 访存速度的相关技术_第2张图片

  • 高位地址表示体号,低位地址表示体内地址。
  • 这种编址方式下,总是把低位的体内地址送到由高位体号确定的模块内进行译码。访问时,先在同一个模块内访问直到访问完该模块再访问下一个模块,按顺序访问各个模块,不能并行访问,因为模块内的地址是连续的,存取方式仍是串行存取,因此这种编址方式并不能提高存储器的吞吐率。

2.2、低位交叉

计算机组成原理学习笔记——提高 CPU 访存速度的相关技术_第3张图片

  • 低位地址作体号,高位地址为体内地址,每个模块按“模m”交叉编址,模块号=单元地址%m,若有 n 个模块,每个模块右 x 个单元,则 0, n, …, (x-1)n 单元位于N0,第 1,n+1,…,(x-1)n+1单元位于N1,依次类推。
  • 低位交叉编址下,总是把高位的体内地址送到由低位体号确定的模块内进行译码,程序可以连续存放在相邻的模块中。采用低位交叉编址方式的存储器称为交叉存储器。
  • 优点:可在不改变模块存取周期的情况下,采用流水线方式并行存取,提高存储器带宽。
  • 在模块字长和数据总线宽度一样的条件下:
  • 存储器交叉模块应大于等于
    m=T/r
  • m为交叉存取度,T 为模块存取一个字的周期,r总线传送周期。连续存取 m个字所需的时间:
    t1 = T + (m - 1)r
  • 顺序方式连续存取 m个字的时间:
    t2 = mT

例题:

  • 设存储器容量 32个字,字长64 位,模块数m=4,分别采用顺序方式和交叉方式进行组织;存储周期 T=200ns,数据总线宽度 64 位,总线传输周期 r=50ns,连续读出4个字的情况下,求顺序存储器和交叉存储器各自的带宽。
    解:
    • 顺序存储器和交叉存储器连续读出 4 个字的信息总量都是:
      q = 64 位*4 = 256 位
    • 顺序存储器和交叉存储器连续读出 4 个字各自所需的时间:
      t1 = mT = 4*200ns = 800ns = 8*10E(-7)s
      t2 = T + (m - 1)r = 200ns + 3*50ns = 350ns = 35*10E(-8)s
    • 顺序存储器和交叉存储器的带宽分别:
      W1 = q/t1 = 256/(8*10E(-7)) = 32 * 10^7 (b/s)
      W2 = q/t2 = 73*10^7(b/s)

上一篇
下一篇

你可能感兴趣的:(《计算机组成原理》学习笔记)