HIT_CO_Week_3

这周存储器,不知道会不会有趣一点...😴

听完了,才知道也不是很有趣...😂

有关存储器的内容一共分了三周的课程,这周的主要内容是有关主存储器的部分。

存储器

首先要介绍的是存储器的分类和现代存储器的层次结构。

分类

1. 按照存储介质分类

  • 半导体存储器
  • 磁表面存储器
  • 磁芯存储器
  • 光盘存储器

注意:半导体存储器存储的信息是易失的,而其他三种存储器是非易失的。

2. 按照存取方式分类

  • 当存取时间与物理地址无关(随机访问),可分为随机存储器(在程序的执行过程可读可写)和只读存储器(在程序的执行过程中只读)。
  • 当存取时间与物理地址有关(串行访问),可分为顺序存取存储器(如磁带)和直接存取存储器(磁盘)

3. 按在计算机中的作用分类

存储器

层次结构

不多说了,主要看下面两张图:

存储器三个主要特性的关系

上面这张图主要是在说明:越贴近 CPU 的存储介质的速度越快、容量越小、价格越贵,所以如何把计算机的结构设计的经济合理就是一个很重要的问题了。

缓存-主存层次和主存-辅存层次

这张图实际上就是上述问题的答案,对于用户体验而言,并不需要每一块存储芯片都有很快的读写速度(对用户而言,性价比才是王道,哈哈~),而且从功能上而言,速度依次递减也不会对整个计算机构成影响。

主存储器

第一张提到的有关存储器的知识这里依然用得到,之前是大概了解,现在是深入了解。

概述

首先要了解的是主存储器的基本组成,见下图(还是电路之类的东西):

主存的基本组成

对应的是,CPU 和主存的联系,见下图:

主存和 CPU 的联系

这里又提到了大端存储小端存储的概念:

大端存储:数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中。
小段模式:数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中。

举个简单的例子,0x12345678,如果是大端模式,对应内存中保存的值就是12 34 56 78;如果是小端模式,对应内存中保存的值就是78 56 34 12

最后是主存的技术指标,主要是是存储容量、存取速度、存储带宽(位/秒)这些概念。

存取速度相关的概念有两个:

  • 存取时间:存储器的访问时间,可分为读出时间和写入时间。
  • 存取周期:连续两次独立的存储器操作(读或写)所需的最小间隔时间,可分为读周期和写周期。

半导体存储芯片

首先要学习的是半导体存储芯片的相关知识,主要分两块:基本结构和译码驱动方式。

基本结构

半导体存储芯片的基本结构见下图:

半导体存储芯片的基本结构

相比前面介绍的主存的基本组成,多了片选线(确定那块存储芯片被选中)读写控制线(确定芯片进行读/写操作)。实际上,个人认为这两部分组合在一起就是存储器的“控制器”,由它来决定存储器的一些行为。
另外,片选线中存在两个信号:$\overline {CE}$ 和 $\overline {CS}$;读/写控制线中存在三个信号:$\overline {WE}$(低电平写,高电平读)、$\overline {OE}$(允许读)和 $\overline {OE}$(允许写)。

关于片选信号的作用,老师举了一个例子:组成一个$64K \times 8$位的存储芯片需要使用 4 组$16K \times 1$位的存储芯片,且每组 8 个,一共 64 个,此时由两个片选信号就可以唯一确定是对那一块$16K \times 1$的芯片进行操作,实际上这个过程类似于通过矩阵的行列坐标来确定其中的特定元素。

译码驱动

半导体芯片的译码驱动方式这里介绍了两种:线选法和重合法。

线选法

如下图所示:

线选法

$A_0 - A_3$作为地址码会被地址译码器解析为对应的字线,4 个 bit 正好对应 16 根线,还有 8 根位线连接在读/写控制电路上。

重合法

如下图所示:

重合法

重合法感觉要简单一点,$A_0 - A_4$作为 X 地址码,5 个 bit 位对应 32 根线,$A_5 - A_9$作为 Y 地址码,也是 5 个 bit 位,对应 32 根线,X、Y 实际上就可以当作是横纵坐标了。

RAM

随机存取存储器(RAM)分为两种:静态随机存取存储器(SRAM)和动态随机存取存储器(DRAM)。

SRAM

静态随机存取存储器是由双稳态触发器组成,断电后会丢失信息,存取速度快,基本电路如下:

SRAM 基本电路

这里不深究电路的设计思路和原理了...🤐

读操作:

SRAM 读操作

写操作:

SRAM 写操作

最后提到了一个实际用重合法组成的芯片——Intel 2114,本质上是一个$64 \times 64$的矩阵,这里不做深究了。

DRAM

动态随机存取存储器是由电容组成,同样断电后会丢失信息,速度比 SRAM 慢,基本电路如下:

DRAM 基本电路

在上图中,左边是三管式存储电路,右边是单管式存储电路

三管动态 RAM 芯片的读写操作过程是类似的,这里简单分析一下 Intel 1103 芯片的写操作,如下图:

三管动态 RAM 芯片(Intel 1103)写操作

实际上就是下面两个要点:

  1. 与重合法类似,三管动态 RAM 芯片的译码过程也是需要分别使用行列地址译码器来完成,不同的地方在于三管式区分开了读/写选择线,所以行地址译码的过程实际上有读写控制电路的参与。
  2. 每一列都需要有一个刷新放大器来形成再生信息,原因是电容会漏电(老师的原话😐)。

然后是单管动态 RAM 芯片,这里以 Intel 4116 芯片为例,首先是 Intel 4116 的外特性,如下图:

Intel 4116 的外特性

这个结构有两个要点:

  1. 整个芯片只有 7 位地址线,输入的行列地址会先存放在行列地址缓存器中,然后在进行后续的译码过程。
  2. 这个芯片内部还有一个小控制器:时序与控制控制器,这个控制器利用行选中信号($\overline {RAS}$)、列选中信号($\overline {CAS}$)和读写控制信号($\overline {WE}$)作为输入,产生行时钟、列时钟和写时钟,来控制芯片内部的读写操作。

Intel 4116 的读/写操作也是类似的,这里以读操作为例,如下图:

Intel 4116 的读操作

同样,Intel 4116 也需要放大器来形成再生信息,同时这个放大器两端产生的信号是相反的。而寻找存储单元的思路依然是重合法那一套,行列信号当作坐标即可。

DRAM 最后一个问题是关于刷新的问题,也就是上面提到的因电容漏电而需要放大器形成再生信息。刷新的整个过程是针对一行而言,对应的刷新方法有三种:集中刷新、分散刷新和异步刷新(二者结合)。

集中刷新

集中刷新其实就是集中一个时间段进行刷新,以 $128 \times 128$ 矩阵为例,需要 128 个周期进行刷新,假设芯片的存取周期是 $0.5\mu s$,刷新时间间隔是 $2 ms$,所以刷新时间就是 $0.5 \mu s \times 128 = 64 \mu s$,在这个时间段中,CPU 与 I/O 都无法与 DRAM 交互,故这个时间段也叫“死区”,对应的“死时间率”为 $128 / 4000 \times 100\% = 3.2\%$ 。

分散刷新

分散刷新是在每一个存取周期进行刷新,也就是读写操作完成后直接进行刷新。以上面提到的例子为例,在分散刷新的条件下,整个存取周期就从 $0.5 \mu s$ 变成了 $1 \mu s$,这种方法虽然消除了“死区”,但 DRAM 根本不需要这么频繁的刷新。

异步刷新

所谓异步刷新,其实就是集中刷新和分散刷新结合。还是上面的例子,若每 $15.6 \mu s$ 刷新一行,只需要把这一次刷新操作安排在最后集中刷新即可,这样对整个刷新时间间隔就是分散刷新了。同样,由集中刷新带来的“死区”是 $0.5 \mu s$,但如果将刷新安排在指令译码阶段,就不会产生“死区”了。

SRAM 和 DRAM 的比较

SRAM 一般用来做 CPU 的缓存(Cache),DRAM 一般用来做主存(RAM),二者差别见下表:

类别 DRAM SRAM
存储原理 电容 触发器
集成度
芯片引脚
功耗
价格
速度
刷新

总结

这周的内容依然是偏理论性质的,实在是谈不上有趣,只能耐着性子听下去😂。总体听下来,出现了很多和电路相关的术语,不得不说,与《组成原理》结合紧密的课程还得是《数字电路》。不过,单从原理的角度来讲,倒也可以用死记硬背来解决。
好了,这周的内容的思维导图如下:

存储器(上)

剩下的事情就是把题目解决了...😴


Buy me a coffee ? :)
0%