• 沒有找到結果。

计算机组成原理 - 万水书苑-出版资源网

N/A
N/A
Protected

Academic year: 2021

Share "计算机组成原理 - 万水书苑-出版资源网"

Copied!
52
0
0

加載中.... (立即查看全文)

全文

(1)

第 4 章 存储器层次结构

在现代计算机中,主存储器处于全机中心地位。本章对存储器的基本情况进行介绍,首 先介绍存储器的分类情况、性能指标和计算机所采用的存储层次结构。然后对半导体存储器的 基本结构和工作原理进行说明,同时讨论主存储器与 CPU 连接的方法和能用来提高主存储器 性能的一些方案与技术。 高速缓存、主存和辅存是现代计算机中普遍采用的存储器层次方案,本章对高速缓存 Cache 的基本工作原理,Cache 和主存的地址映射方式,Cache 的替换算法和写策略进行说明。 同时对于用户编程使用的虚拟存储器介绍其段式、页式和段页式管理方法。对于辅存介绍磁记 录原理与记录方式、硬盘存储器、磁盘阵列、光盘存储器的基本情况。  存储器的分类  存储器的层次化结构  SRAM 存储器的工作原理  DRAM 存储器的工作原理  只读存储器  主存储器与 CPU 的连接  双口 RAM 和多模块存储器  程序访问的局部性  高速缓冲存储器 Cache 的基本工作原理  Cache 的映射方式、替换算法与写策略  段式、页式、段页式虚拟存储器  TLB(快表)  外存储器:硬盘存储器、磁盘阵列、光盘存储器

4.1 存储器概述

存储器是计算机用来存储程序和数据的设备,存储系统指的是存储器以及管理存储器的 软硬件和相应的设备的总和。计算机之所以能够脱离人的干预而高速、自动地工作,其中一个 必要条件是在计算机中具有一个容量足够大的存储器,程序和程序所用的数据都事先存放在存 储器中,由 CPU 自动地从存储器中取出指令并使之得到执行。 存储器在计算机中扮演非常重要的角色;对计算机系统的技术、组织、性能和价格等方 面都有很大的影响。由于目前计算机部件技术发展的速度不太均衡,处理器的发展速度太快,

(2)

还没有很完善的满足系统需要的存储技术。所以目前计算机中的存储系统一般分为两个子系 统,一个为主存储部件,一个为外部存储部件。 在现代计算机中,主存储器处于全机中心地位,当前计算机正在执行的程序和数据均存 放在主存储器中,CPU 直接从主存储器取指令或存取数据。 4.1.1 存储器的分类 存储器的产品种类繁多,按照不同的方法可以进行不同的分类。 1.按存储介质分类 存储介质是指能寄存“0”、“1”两种代码并能区别两种状态的物质或元器件。能用来作 为存储器的器件和介质,除了其基本存储单元有两个稳定的物理状态来存储二进制信息以外, 还必须满足一些技术上的要求。如便于与电信号转换、便于读写、速度高、容量大和可靠性高 等。存储介质主要有半导体材料、磁性材料和光盘等。 (1)半导体存储器。存储元件是半导体材料的存储器称为半导体存储器。半导体在计算 机的硬件中得到了广泛的应用,由于它的体积小、功耗低,存取时间又短,可以很好地集成在 大规模的集成电路中。现代半导体存储器都用超大规模集成电路工艺制成。 根据制造技术的不同,半导体存储器又可以分成两种:MOS 型半导体存储器和双极型 (TTL)半导体存储器。MOS 型功耗小,速度比较慢,但制造简单,成本低,获得了广泛的 应用。双极型速度比 MOS 型快,但功耗大,可用在速度较快的系统中。 (2)磁芯存储器。在半导体存储器出现之前,存储器的制作材料为磁芯,磁芯是由硬磁 材料制成的环状元件,在磁芯中穿有数据读出线和驱动线,这样便可进行读写操作。但磁芯存 储器的体积过大、工艺复杂、功耗太大,故 20 世纪 70 年代后逐渐被半导体存储器取代。 (3)磁表面存储器。磁表面存储器指的是在塑料或者金属载体表面涂上一层磁性材料用 来存储信息所构成的存储器。在访问存储器时,磁层随载体高速运转,由于磁头和磁层的相对 运动切割磁力线进行读写操作。按载磁体形状的不同,可分为磁盘、磁带和磁鼓等。 (4)光盘存储器。光盘存储器是应用激光在记录介质(磁光材料)上进行读写的存储器, 具有记录密度高、耐用性好、可靠性高和可互换性强等特点,被越来越多地应用于计算机系统。 2.按数据的存取方法分类 存储器按照数据的存取方法分类,可以分为 4 类。 (1)顺序存取存储器。存储器组成许多称为记录的数据单元,它们以特定的线性顺序方 式存取。存储的地址信息用于分隔记录和帮助检索。采用共享读写机构,经过一个个的中间记 录,从当前的存储位置移动到所要求的位置,因此,存取不同记录的时间相差很大。例如,磁 带系统采用顺序存取方式,不论数据存放在何处,读写时必须从介质的开始端顺序寻找。 (2)直接存取存储器。同顺序存取一样,直接存取也采用共享读写机构。但是,单个的 块或记录有唯一的物理存储位置。存取通过采用直接存取方式到达所需块处,然后在块中顺序 搜索,最终到达所需的存储位置。同样,存取不同记录的时间也不相同。例如,磁盘系统采用 直接存取的方式,读写数据时,首先直接找到磁盘上的数据块(磁道),然后再顺序访问,直 到找到数据所在位置。 (3)随机存取存储器。存储器中每一个可寻址的存储位置有唯一的寻址机制。任何一个 存储单元的内容都可以随机存取,而且存取时间和存储单元的物理位置无关。例如,随机访问

(3)

存储器系统采用随机存取方式,找到数据的时间只和地址译码时间有关。 (4)相联存取存储器。这是一种随机存储类的存储器,它允许对存储单元中的某些指定 位进行检查比较,看是否与特定的样式相匹配,而且能在整个存储器的各个单元中同时进行查 找。因此可以按指定内容找到其所在的位置及其他相关内容,每个存储位置有自己的寻址机制, 检索时间是固定的,而与所存位置无关。(见附录) 3.按读写功能分类

(1)只读存储器 ROM(Read Only Memory)。只读存储器是能对其存储的内容读出,而 不能对其写入的存储器。这种存储器一旦写入了原始信息后,在整个使用过程中,只能将内部 信息读出,而不能随意重新写入新的信息或改变原始信息,其数据也不会随着掉电而丢失。因 此,通常用它存放固定不变的程序、常数以及汉字字库,甚至用于操作系统的固化或某些语言 的编译程序及解释程序。

(2)随机存取存储器 RAM(Random Access Memory)。随机存取存储器为一种可读可写 的存储器,存储器的任何一个存储单元的内容都可以随机存取,即 CPU 可以从 RAM 中的任 一地址读取数据或写入数据,并且存取的时间与存储单元的物理位置无关。随机存取存储器可 以继续分为静态随机存储器(SRAM)和动态随机存储器(DRAM)。静态 RAM 速度非常快, 成本高,主要用于高速缓冲存储器;动态 RAM 速度比静态 RAM 慢,但成本低,适合作大容 量存储器。通常提到的计算机内存主要就是指动态 RAM。 4.按信息保存特性分类 用半导体材料制作的 RAM 存储器,断电后里面保存的信息就消失了,这种存储器称为易 失性存储器。如果存储器断电后仍能保存其内部信息,则称其为非易失性存储器。如磁性材料 作成的存储器和只读存储器 ROM,就属于非易失性存储器。 5.按在计算机中的作用分类 根据存储器在计算机系统中所起的作用,存储器可分为主存储器、辅助存储器、缓冲存 储器。 主存储器的主要特点是它可以和 CPU 直接交换信息。辅助存储器是主存储器的后援存储 器,用来存放当前暂时不用的程序和数据。它不能与 CPU 直接交换信息。缓冲存储器用在两 个速度不同的部件之间,如 CPU 与主存之间,起到缓冲和速度匹配的作用。 4.1.2 存储器的性能指标 存储器性能的主要技术指标为容量和速度。 存储器既然是用来存储程序和数据的容器,当然容量是关键性的特征。计算机可寻址的 最小信息单位是一个存储字,相邻的存储器地址表示相邻存储字,这种机器称为“字可寻址” 机器。一个存储字所包括的二进制位数称为存储字长。一个字又可划分为若干个“字节”,一 个字节为 8 个二进制位,因此,一个字的字长通常是 8 的倍数。有些计算机也可以按“字节” 寻址,因此,这种机器称为“字节可寻址”的计算机。以字或字节为单位来表示存储器存储信 息的总数,就得到了存储器的容量表示。 与速度相关的参数有:

(1)存取时间。又叫存储器的访问时间(Memory Access Time),它是指启动一次存储器 操作到完成该操作所需的全部时间。存取时间分读出时间和写入时间两种。读出时间是从存储

(4)

器接收到有效地址开始,到产生有效输出所需的全部时间。写入时间是从存储器接收到有效地 址开始,到数据写入被选中单元为止所需的全部时间。

(2)存储周期。存储周期(Memory Cycle Time)是指存储器进行连续两次独立的存储器 操作所需的最小间隔时间。通常存储周期大于存取时间,它包括一次存取时间加上下一次存取 开始之前的短暂附加时间,附加时间主要用于信号线上瞬变的消失或被破坏的数据的恢复。 (3)传输率。也叫存储器的带宽,指的是数据读出或写入存储器的速度,表示每秒从存 储器进出信息的最大数量,单位可用字节/秒或位/秒来表示。如存储周期为 100ns,每个存储 周期可访问 32 位数据,则它的传输率为 320Mb/s。 4.1.3 存储器的层次化结构 对于计算机系统中配置的存储器,归结起来有三个主要的参数要求:容量大,速度快, 价格低。一般来讲,速度高的存储器,每位价格也高,因此容量不能太大。所以对单一的存储 器部件来说,大容量、高速度、低价格三者是不能同时满足的。为了解决这个难题,在现代计 算机系统中采用了存储器分层结构,这样就不会仅仅依赖于某一个存储部件或技术了。 现代计算机中,存储器常用的分层结构如图 4-1 所示。 图 4-1 存储器层次化结构图 在图中,由上到下呈现出以下特点:每位的价格越来越低,速度越来越慢,容量越来越 大,CPU 访问的频度也越来越少。最上层的寄存器通常都制作在 CPU 芯片内,寄存器中的数 直接在 CPU 内部参与运算。现代 CPU 内可以有十几个、几十个寄存器,它们的速度最快、位 价(平均每位的价格)最高、容量最小。主存用来存放将要参与运行的程序和数据,但其速度 与 CPU 速度差距较大,为了使它们之间的速度更匹配,在主存与 CPU 之间插入了一种比主存 速度更快、容量更小的高速缓冲存储器 Cache。主存与缓存之间的数据调动是由硬件自动完成 的,对程序员来说是透明的。这三层都在主机内,多由各种半导体存储材料制成。辅助存储器 存储容量比主存储器大得多,主要用来存放暂时未用到的程序和数据文件。CPU 不能直接访 问辅存,辅存只能与主存交换信息,但它的位价是最便宜的。 存储器的层次结构实质上还是体现在缓存—主存和主存—辅存这两个存储层次上。从 CPU 的角度看,Cache—主存层次的速度接近于 Cache,容量与每位价格则接近于主存。因此, 解决了速度与成本之间的矛盾。而主存—辅存这一层次,从整体分析,其速度接近于主存,容 量接近于辅存,平均位价也接近于低速、廉价的辅存位价,这又解决了速度、容量、成本这三 者间的矛盾。这种多层次结构已成为现代计算机的典型存储结构。

(5)

范围与虚拟存储器的地址空间相对应。例如,机器指令地址码为 32 位,则虚拟存储器的存储单元 可达 4GB。可是这个数与主存的实际存储单元个数相比,要大得多。通常称这类指令地址码为虚 地址或叫逻辑地址,而把主存的实际地址称作实地址或物理地址。物理地址是程序在执行过程中 能够真正访问的地址,也是真实存在于主存的存储地址。对具有虚拟存储器的计算机系统而言, 编程时可用的地址空间远远大于主存空间,使程序员以为自己占有一个容量极大的主存,其实这 个主存并不存在,这就是将其称为虚拟存储器的原因。对虚拟存储器而言,其逻辑地址变换为物 理地址的工作,是由计算机系统的硬件设备和操作系统自动完成的,对应用程序员是透明的。当 虚地址的内容在主存储器中时,机器便可立即使用;若虚地址的内容不在主存,则必须先将此虚 地址的内容在辅存中找到,传递到主存储器的合适单元后再被机器所用。 主存储器是可以和 CPU 直接交换信息的存储器,它通常由存放程序和数据的随机读写存 储器 RAM 和存放某些固定内容的只读存储器 ROM 组成。 主存储器和 CPU 的连接是由总线支持的,总线包括数据总线、地址总线和控制总线。CPU 通过使用 MAR(主存地址寄存器)和 MDR(主存数据寄存器)与主存进行数据传送。若 MAR 为 K 位字长,则允许主存包含 2K 个可寻址单位(字节或字)。若 MDR 为 N 位字长,在一个 存储周期内,CPU 和主存之间通过总线能进行 N 位数据传送。此外,控制总线包括控制数据 传送的读(read)、写(write)控制线。主存储器与 CPU 的连接如图 4-2 所示。 为了从存储器中取出一个信息字,CPU 必须指定存储器字地址,并进行“读”操作。CPU 需要把信息字的地址送到 MAR,经地址总线送往主存储器,选择相应的存储空间。同时 CPU 应用控制线发出一个“读”请求。主存收到读命令后,将选中存储空间的内容读出,并放到数 据总线上送给 MDR。这时,取数操作完成。为了向存储器写入一个数据信息,CPU 先将信息 要写入主存单元的地址通过 MAR 发送到地址总线,同时将数据信息送入 MDR,然后通过控 制电路向主存发送“写”命令,主存收到命令之后将数据总线上的数据写入地址总线上地址所 指定的存储单元中,完成写操作。 在上述操作过程中,根据 MAR 中的地址访问某存储单元时,还需经过地址译码、驱动等 电路,才能找到所需访问的单元空间。读出时,需经过读出放大器,才能将被选中单元的存储 字送到 MDR。写入时,MDR 中的数据也必须经过写入电路才能真正写入到被选中的单元中。 可见,主存储器的实际结构应如图 4-3 所示。 图 4-2 主存储器与 CPU 的连接 图 4-3 主存储器的组成图

4.2 半导体随机存取存储器

半导体随机存取存储器按其存储信息的原理不同,可分为静态 RAM 和动态 RAM 两大类。

(6)

静态 RAM(SRAM,Static RAM)利用双稳态触发器来保存信息,只要不断电,信息是不会 丢失的;动态 RAM(DRAM,Dynamic RAM)利用 MOS 电容存储电荷来保存信息,使用时 需不断给电容充电才能使信息保持。 4.2.1 SRAM 存储器 1.基本存储单元 存储器中用于存放一位“0”或“1”二进制代码的电路叫做存储器的基本存储单元电路。 图 4-4 是 MOS 静态存储器的基本单元电路,由 6 个 MOS 管组成。 图 4-4 MOS 静态 RAM 的基本单元电路 T1~T4 几个 MOS 管组成了两个反相器,两反相器是交叉耦合连接的,它们组成一个触 发器。为了使触发器能成为读出与写入信息的存储单元,还需要 T5、T6 把它和字线、位线连 接起来。T5、T6 是读、写操作的控制门,它们的栅极和字选择线相连。与 T5、T6 相连的还 有两条位线,用来传送读、写数据信号。 当单元未被选中时,字选择线保持低电位,两条位线保持高电位,T5、T6 处于截止状态, 触发器和位线隔开。 读操作过程如下:字选择线送来高电位,单元被选中,T5、T6 导通。若原来单元处于“1” 态(T1 导通,T2 截止,即 A 为高电位,B 为低电位),A 点高电位通过 T6 后经位线 2 送出。 若原来单元处于“0”态,即 T1 截止,T2 导通,则与上述情况相反,在位线 2 上将产生低电 位。这样,根据位线 2 送出的高、低电平即可判断触发器原来的状态。由于静态 RAM 是触发 器存储信息,因此即使信息读出后,它仍然保持原状态,不需要再生。但电源掉电时,所存信 息就丢失了。 写入时,不论触发器原状态如何,只要在位线 1、位线 2 上分别送高电位和低电位,便可 迫使触发器状态发生变化,从而把信息写入单元。例如,位线 1 送低电位,位线 2 送高电位, 当单元被选中时,位线 2 便通过 T6 向 T1 栅极充电,使 T1 导通,而 T2 栅极通过 T5 和位线 1 放电,使 T2 截止,从而单元便处于“1”态。 2.静态 RAM 芯片结构与举例 半导体存储器芯片采用超大规模集成电路制造工艺,在一个芯片内集成了具有记忆功能 的存储矩阵、译码驱动电路和读写电路等。存储矩阵是由很多基本存储单元构成的存储信息的 主体部分。译码驱动电路能把地址总线送来的地址信号翻译成对应存储单元的选择信号,该信 号在读写电路的配合下完成对被选中单元的读写操作。读写电路包括读出放大器和写入电路,

(7)

在读写信号控制下用来完成读写操作。 存储芯片通过地址引脚、数据引脚和控制引脚与外部连接。地址引脚是单向输入的,数 据引脚是双向传输的,地址引脚和数据引脚的位数共同反映了存储芯片的容量。如地址线为 10 根,数据线为 4 根,则芯片容量为 210×4=4Kb。 控制引脚主要有读/写控制线与片选线两种。读/写控制线送来决定芯片读/写操作的控制信 号,片选线用来选择芯片。因为存储器通常由许多存储芯片组成,通过片选信号可用来确定哪 个芯片被选中能进行操作。 地址译码驱动通常有线性译码和复合译码两种方式,如图 4-5 和图 4-6 所示。 图 4-5 16×8 位线性译码结构图 图 4-6 1K×1 位复合译码结构图 图 4-5 是一个 16×8 位线性译码存储芯片的结构示意图。它的特点是用一根字选择线, 直接选中一个存储单元的各位。这种方式结构比较简单,但只适合容量不大的存储芯片。如 当地址线 A3A2A1A0 为 1111 时,则第 15 根字线被选中,图中最后一行 8 位代码便可直接读 出或写入。 图 4-6 是一个 1K×1 位复合译码存储芯片的结构示意图。只要用 64 根选择线(X、Y 两 个方向各 32 根),便可以选择 32×32 矩阵中的任一位。例如当地址线为全 1 时,译码输出 X31 和 Y31 有效,选中矩阵的第 31 行、31 列处单元进行操作。

(8)

复合译码由于需要的内部选择线条数比较少,获得了较广泛的应用。对图 4-6 所示的 1K ×1 位存储器,我们也可用图 4-7 来表示它的内部结构和功能。 图 4-7 1K 静态存储器结构框图 典型的静态 RAM 芯片如:Intel 2114(1K×4 位);6116(2K×8 位);6264(8K×8 位); 62128(16K×8 位)等。如图 4-8 为 2114 和 6116 芯片的外部引脚图。 图 4-8 典型 SRAM 芯片引脚图 可以看出 2114 芯片容量为 1K×4 位,所以引脚上具有地址引脚 10 位(A9~A0),数据 引脚 4 位(D3~D0),控制引脚中有读/写控制线 WE ,片选线 CS ,另外还有电源线 GND 和 VCC。而 6116 芯片容量为 2K×8 位,所以引脚上有地址引脚 11 位(A10~A0),数据引脚 8 位(D7~D0),控制引脚中有写允许信号 WE ,读允许信号 OE ,片选线 CS ,另外还有电源 线 GND 和 VCC。 3.静态 RAM 读写时序 静态存储器的片选、写允许、地址和数据信号在时间配合上有一定的要求,可以用时序 图来描述这种信号配合的顺序要求。  读周期时序。 图 4-9 是 SRAM 芯片读周期时序,在整个读周期中 WE 始终为高电平。 读周期 tRC是指芯片进行两次连续读操作的最小间隔时间。读时间 tA表示从地址有效到数 据稳定所需的时间,显然读时间小于读周期。图中 tCO是从片选有效到输出稳定的时间。可见 只有当地址有效经 tA后,且当片选有效经 tCO后,数据才能稳定输出,这两者必须同时具备。 根据 tA和 tCO的值,便可知当地址有效后,经 tA-tCO时间必须给出片选有效信号,否则数据不 能出现在数据线上。

(9)

图 4-9 SRAM 的读周期时序  写周期时序 图 4-10 是 SRAM 写周期时序。写周期 tWC是对芯片进行连续两次写操作的最小时间间隔。 写周期包括滞后时间 tAW、写入时间 tW和写恢复时间 tWR。在有效数据出现前,RAM 的数据 线上存在着前一时刻的数据,故在地址线发生变化后, CS , WE 均需滞后 tAW再有效,以避 免将无效数据写入到 RAM 的错误。但写允许 WE 失效后,地址必须保持一段时间,叫做写恢 复时间。此外,RAM 数据线上的有效数据必须在 CS 、WE 失效前的 tDW时刻出现,并延续一 段时间 tDH,以保证数据可靠写入。 图 4-10 SRAM 的写周期时序 4.2.2 DRAM 存储器 1.基本存储单元 常见的动态存储器基本单元电路有三管式和单管式两种,它们的共同特点都是靠电容存 储电荷的原理来寄存信息的。若电容上存有足 够多的电荷表示存“1”,电容上无电荷表示存 “0”。电容上的电荷一般只能维持 1~2ms, 因此即使电源不掉电,信息也会自动消失。为 此,必须在 2ms 内对其所有存储单元恢复一 次原状态,这个过程叫再生或刷新。

(10)

单元电路。 单管单元的优点是线路简单,单元占用面积小,速度快。但它的读出是破坏性的,并且 单元读出信号很小,要求有高灵敏度的读出放大器检测读出信号。 读出时,字线上的高电平使 T 导通,若 C 上有电荷,经 T 管在数据线上产生电流,可视 为读出“1”。若 C 无电荷,则数据线上无电流,可视为读出“0”。读操作结束时,C 上的电 荷已泄放完毕,故是破坏性读出,必须再生。 写入时,字线为高电平使 T 导通,若数据线上为高电平,经 T 管对 C 充电,使其存“1”; 若数据线为低电平,则 C 经 T 放电,使其无电荷而存“0”。 2.动态 RAM 芯片结构与举例 动态 RAM 与静态 RAM 一样,由许多基本存储单元按行和列排列成矩阵,也包括地址译 码电路和读写控制电路。但它为了提高集成度,减少引脚的封装数,地址线分成行地址和列地 址两部分,因此在对存储器访问时,总是先由行地址选通信号 RAS 把行地址送入内部设置的 行地址锁存器,再由列地址选通信号 CAS 把列地址送入列地址锁存器,然后再经译码电路译 码选中要操作的单元。另外,它利用电容存储电荷保存信息,电容会漏电,还需要定时对电容 充电刷新。所以刷新和地址两次打入是 DRAM 芯片的主要特点。 图 4-12 是 16K×1 位动态存储器的框图。 图 4-12 16K×1 动态存储器框图 16K×1 位存储器需 14 位地址码,为了减少引脚数,分两批(每批 7 位)送至存储器。先 送行地址,后送列地址。行地址由行地址选通信号 RAS 控 制送入,列地址由列地址选通信号 CAS 控制送入,16K 位 存储单元矩阵由两个 64×128 阵列组成。读出信号保存在 读出放大器(简称读放)中,读出放大器由触发器构成。 在读出时,读出放大器又使相应的存储单元的存储信息自 动恢复(重写),所以读出放大器还用作再生放大器。 典型的 DRAM 存储芯片如 Intel 2116(16K×1)、2117 (16K×1)、2118(16K×1)、2164(64K×1)等,如图 4-13 为 2164 的引脚图。 图 4-13 2164 引脚图

(11)

其中 A0~A7 为地址线;WE 为读/写控制线,WE =1 时为读出,WE =0 时为写入;RAS 为行选通信号, CAS 为列选通信号;Din 为数据输入,Dout 为数据输出;VCC 和 GND 为电 源;Nc(Not Connect)表示空引脚。一般 DRAM 芯片无片选信号,行选通信号 RAS 可认为 是片选信号。 2164 的 64K 存储体需要 16 位地址值寻址,设置了 8 条地址引脚。内部有 4 个 128×128 的存储矩阵,每个存储矩阵由 7 条行地址和 7 条列地址进行选择,再由 1/4 的 I/O 门选中一个 单元进行读写。刷新时由一个行地址同时对 4 个存储矩阵的同一行,即 4×128=512 个单元进 行刷新,可有效减少刷新操作所占用的时间。 3.DRAM 的刷新与控制 动态 MOS 存储器采用“读出”方式进行刷新。因为在读出过程中恢复了存储单元的 MOS 栅极电容电荷,并保持原单元的内容,所以,读出过程就是再生过程。但是 CPU 对存储器的 访问地址是随机的,不能保证所有的存储单元在一定的时间内都可以通过正常的读写操作进行 刷新,为此需要专门予以考虑,由专用的刷新电路来完成对基本单元电路的刷新。通常,在再 生过程中只改变行选择线地址,每次再生一行,依次对存储器的每一行进行读出,就可完成对 整个 RAM 的刷新。从上一次对整个存储器刷新结束到下一次对整个存储器全部刷新一遍为 止,这一段时间间隔称作再生周期,又叫刷新周期,一般为 2ms。 通常有两种刷新方式:集中式刷新和分布式刷新。  集中式刷新 集中式刷新指在一个刷新周期内,利用一段固定的时间,依次对存储器的所有行逐一刷 新,在此期间停止对存储器的读写操作。例如 2116 芯片排成 128×128 的阵列,假定读/写周 期为 500ns,刷新 128 行所需要的时间为 64s,采用集中式刷新的话,必须在 2ms 内集中 64s 的时间对存储器进行刷新。在刷新周期 2ms 内共包含 4000 个读/写周期,可分配前 3872 个周 期用于读/写操作或维持,后 128 个周期用于刷新,如图 4-14 所示。 图 4-14 集中式刷新时间分配图 这种刷新方式的缺点是出现了存储器不能被 CPU 访问的“死时间”,上例中死时间为 64s, 死时间占刷新周期的比值称为死时间率,上例中为 3.2%。  分布式刷新 分布式刷新的基本思想是将刷新操作平均分配到整个刷新时间间隔内进行。仍以 2116 芯 片为例,整个芯片 128 行,要求在 2ms 内刷新一遍,可以将 2ms 分成 128 段,每段时间间隔 为 15.5s,而在这 15.5s 内使用 0.5s 的时间刷新一行,就可保证在 2ms 时间内对整个芯片 进行刷新完。分布式刷新既克服了出现“死时间”,又充分利用了最大刷新时间间隔为 2ms 的 特点。对 CPU 的影响不是很大,对存储器的访问速度也没有什么影响。如图 4-15 为分布式刷

(12)

新的时间分配图。

图 4-15 分布式刷新时间分配图

DRAM 控制器是 CPU 与 DRAM 之间的接口电路,由它把 CPU 的信号转换成适合 DRAM 芯片的信号,解决 DRAM 芯片地址两次打入和刷新控制等问题。DRAM 控制器的逻辑框图如 图 4-16 所示,主要包括下列功能电路: 图 4-16 DRAM 控制器逻辑框图 (1)地址多路器:把来自 CPU 的地址转换成行地址和列地址,分两次送到 DRAM 芯片, 实现 DRAM 芯片地址的两次打入。 (2)刷新定时器:完成对 DRAM 芯片进行定时刷新的功能。 (3)刷新地址计数器:只用 RAS 的刷新操作,需要提供刷新地址计数器,来提供刷新行 地址。 (4)仲裁电路:来自 CPU 的访问存储器的请求和来自刷新定时电路的刷新请求同时产生 时,由仲裁电路对两者的优先权进行裁决。 (5)定时发生器:提供行地址选通信号 RAS 、列地址选通信号 CAS 和写信号 WR ,供 DRAM 芯片使用。 随着电路集成技术的发展,现在也能把 DRAM 控制器和存储芯片集成到一起,这样的 DRAM 芯片使用时就和 SRAM 一样方便了。 4.动态 RAM 读/写时序

动态 RAM 的行、列地址是分开先后传送的,因此分析时序时,要注意 RAS 、 CAS 与地 址的关系,如图 4-17 所示。

(13)

图 4-17 动态 RAM 行列选通信号与地址的关系 由图可见,首先,由 RAS 的下沿把行地址送入存储器的行地址锁存器,然后再由 CAS 的 下沿把列地址送入列地址锁存器,因此, CAS 的下沿要滞后于 RAS 的下沿一定时间。其次, RAS 和 CAS 的正电平和负电平宽度应大于某一规定值,以保证芯片内部电路能正常工作。第 三,行、列地址对 RAS 和 CAS 的下沿应有足够的地址建立时间和地址保持时间,以确定行、 列地址均能准确写入芯片。  读周期时序 图 4-18 是读工作方式的时序图。读工作周期 tCRD是指 DRAM 完成一次读所需的最短时间,

也是 RAS 的一个周期时间。为了确保能正常“读出”,WE =1 应在列地址送入前建立,WE =1 的撤除应在 CAS 的正沿来到后,输出读出信号可保持到 CAS 负电平撤消之后。 图 4-18 DRAM 的读周期时序  写周期时序 图 4-19 是写工作方式的时序图,在“写”工作方式时, RAS 的一个周期时间即“写工作 周期”tCWR。写工作方式的特点是 WE 的下沿早于 CAS 下沿到来。因为写入数据的写时钟是 由列时钟和 WE =0 共同作用产生的,所以实际是由 CAS 的下沿激发了数据写入。 图 4-19 DRAM 的写周期时序 5.动态 RAM 与静态 RAM 的比较 DRAM 有很多优点。首先,由于它使用简单的单管单元作为存储单元,因此,每片存 储容量较大;由于 DRAM 的地址是分批进入的,所以它的引脚数比 SRAM 要少得多,它

(14)

的封装尺寸也比较小。这些特点使得在同一块电路板上,使用 DRAM 的存储容量要比用 SRAM 大 4 倍以上。其次,DRAM 的价格比较便宜,大约只有 SRAM 的 1/4。第三,由于 使用动态元件,DRAM 所需功率大约只有 SRAM 的 1/6。由于上述优点,DRAM 的应用比 SRAM 要广泛的多。

动态 RAM 也有缺点。首先,由于使用动态元件,它的速度比 SRAM 要低。其次,DRAM 需要再生,这需要配套的再生电路,也要用一部分功率。

4.3 只读存储器

SRAM 和 DRAM 存储芯片都是易失性的,这意味着当电源关闭后,它们存储的信息将会 丢失。有很多应用要求存储器芯片在电源关闭后仍能保留它所存储的信息。例如,在典型的计 算机中,硬盘驱动器用来保存大量的信息,包括操作系统软件。当计算机开机时,必须把操作 系统从硬盘中装入内存,这需要执行一个引导操作系统的程序。由于引导程序很大,它的大部 分都存储在磁盘上,处理器必须执行一些指令把引导程序装入内存。如果整个存储器都是由易 失的存储器芯片构成的,那么处理器将没有办法访问这些指令。一种实用的解决办法是提供一 小块非易失性的存储器来保存从磁盘装入引导程序的指令。 现在已经开发了不同类型的非易失性存储器,一般可以像使用 SRAM 和 DRAM 一样读取 它们的内容。但是,把信息存入这些存储器需要特殊的写过程。因为它们一般的操作只涉及到 读取存储数据,因此这类存储器统称为只读存储器(ROM)。 根据半导体制造工艺的不同,只读存储器可分为掩膜 ROM、PROM、EPROM、EEPROM 和 Flash Memory 等。 1.掩膜 ROM(MROM) 掩膜式 ROM 中的信息是厂家根据用户给定的程序或数据对芯片图形掩膜进行两次光刻 而决定的。这类 ROM 可由二极管、双极型晶体管或 MOS 型晶体管构成,每个存储单元只用 一个耦合元件,以元件的“有/无”来表示该存储单元的信息,其存储内容是不会改变的。 图 4-20 是 MOS 型掩膜 ROM 结构图,其容量为 1K×1 位,采用复合译码方式。 图 4-20 1K×1 位 MOS 管掩膜 ROM

(15)

32 根行选择线和 32 根列选择线交叉处既可有耦合元件 MOS 管,也可没有。列选择线各 控制一个列控制管,32 个列控制管的输出端共连一个读放大器。当地址为全“0”时,第 0 行、 0 列被选中,其交叉处有耦合元件 MOS 管,因其导通而使列线输出为低电平,经读放反相为 高电平,输出“1”。当地址 A4~A0 为 11111,A9~A5 为 00000 时,选中第 31 行、第 0 列, 此行列交叉点处无 MOS 管,故 0 列线输出为高电平,经读放反相为“0”输出。可见,用行、 列交叉处是否有耦合元件 MOS 管,便可区分单元内存放的是“1”还是“0”。 在数量较少时,掩膜型 ROM 造价很贵,如果进行批量生产,就相当便宜了。适用于计算 机系统开发完成后的大批量使用。 2.可编程的只读存储器(PROM) PROM 是可以实现一次性编程的只读存储器,可由用户根据自己的需要来确定 ROM 中的 内容。常见的熔丝式 PROM 是以熔丝的接通和断开来表示所存的信息为“1”或“0”的。刚 出厂的产品,其熔丝是全部接通的,使用前,用户根据需要断开某些单元的熔丝。显然,断开 后的熔丝是不能再接通了,因此它是一次性写入的存储器。断电后不会影响其所存储的内容。 如图 4-21 表示一个由双极型电路和熔丝构成的基本单元电路。 在这个电路中,基极由行选择线控制,发射极与列线之间形成一条镍铬合金薄膜制成的 熔丝(可用光刻技术实现),集电极接电源 VCC。用户在使用前,可按需要将信息存入行、列 交叉的耦合元件内。若欲存“0”,则置耦合元件一大电流,将熔丝烧掉。若欲存“1”,则耦合 处不置大电流,熔丝不断。当被选中时,熔丝烧断处将读得“0”,熔丝未断处将读得“1”。 3.可擦除可编程的只读存储器(EPROM)

掩膜型 ROM 和 PROM 中的内容一旦写入,就无法改变,而 EPROM 却允许用户根据需 要对它编程,且可以多次进行擦除和重写,因而 EPROM 得到了广泛应用。 (1)EPROM 工作原理。 EPROM 基本存储单元由一个 MOS 管构成,但与其他电路相比管子内多增加了一个浮置 栅,它被一薄层绝缘层(SiO2)包围,如图 4-22 所示。 图 4-21 双极型熔丝式 PROM 单元电路 图 4-22 EPROM 存储单元和编程电压 平时浮置栅上没有电荷,编程写入时若在漏极和衬底、漏极和源极间加上+12V 电压,使 内部 PN 结反向击穿,形成较大的电流,部分电荷会在浮置栅上捕获注入。当电压移去后由于 绝缘层的包围,注入的电荷无法泄露,相当于管子的开启电压提高,控制栅上加上正向电压 (+5V)时,管子仍截止,ROM 存储信息为“0”。 平时浮置栅上的电荷由于没有放电通路,在一般条件下可保持 10 年左右,因此可以作为 只读存储器长期保存信息。EPROM 芯片上方有一个石英窗口,当紫外光源照到石英窗口上,

(16)

电路浮置栅上的电荷就会形成光电流泄露走,使电路恢复起始状态,从而把写入的信息擦去, 这样又可以对 EPROM 重新编程。 一块 EPROM 在初始状态下,所有的位均为“1”,写入时只能将“1”改变为“0”,用紫 外线照射后才能将“0”变为“1”。一般光照时间视器件型号而定,光照时间过长,会影响器 件使用寿命。 (2)EPROM 例子。 常用的 EPROM 芯片有 2716(2K×8)、2732(4K×8),2764(8K×8)、27128(16K×8)、 和 27256(32K×8)等。其中图 4-23 给出了 Intel 2764 的引脚。 图 4-23 2764 的引脚 由于 2764 是 8K×8 的 EPROM,所以芯片提供的引脚包括: A12~A0:地址线 13 根,输入,连地址总线。 D7~D0:数据线 8 根,编程时作数据输入,读出时为数据输出,连数据总线。 CE :芯片允许端,输入,低电平有效,作芯片片选。 OE :输出允许,输入,低电平有效。 PGM :编程脉冲控制端,输入,接编程控制信号。 VPP:编程时电压输入;VCC:电源电压,+5V;GND:接地。 4.电可擦除可编程只读存储器(EEPROM) EPROM 尽管可以擦除后重新进行编程,但擦除时需要用紫外线光源,而且不能单独对个 别需要改写的单元进行擦除改写,使用起来仍然不太方便。而 EEPROM 的编程原理与 EPROM 相同,但擦除原理完全不同,其栅极氧化层比较薄,所以可以用电来实现信息擦除。 EEPROM 有 4 种工作方式,即读方式、写方式、字节擦除方式和整体擦除方式。表 4-1 列出了 Intel 2815 EEPROM 的工作方式。 表 4-1 Intel 2815 的工作方式 信号端 VPP CE OE D7~D0 读方式 +5V 低电平 低电平 输出 写方式 +21V 高电平 TTL 高电平 输入 字节擦除方式 +21V 低电平 TTL 高电平 TTL 高电平 整体擦除方式 +21V 低电平 +9~+15V TTL 高电平

(17)

5.闪速存储器(Flash Memory) 在 20 世纪 80 年代出现了闪速存储器,也叫快擦除读写存储器。它是在 EPROM 和 EEPROM 工艺的基础上产生的一种性价比更好、可靠性更高的非易失性存储器。它既有 EPROM 的价格 便宜、集成度高的优点,又有 EEPROM 电可擦除重写的特点,并且擦除重写的速度快,已具 备 RAM 的功能。 在需要周期性地修改存储信息的应用场合,Flash Memory 是一个极为理想的器件。它在 便携式计算机、工控系统及单片机系统中得到了大量应用。

4.4 主存储器与 CPU 的连接

1.存储器容量扩展方式 单独 1 个存储器芯片的容量是有限的,它在字数或字长方面与实际存储器的要求都有很 大差距,所以需要在字向和位向进行扩展才能满足需要。通常存储器容量的扩展有字扩展、位 扩展和字位同时扩展三种方式。 (1)位扩展。位扩展指的是用多个存储芯片对存储器字长进行扩充,它的连接方式是将 多片芯片的地址线、片选 CS 、读/写控制端 WE 相应并联,数据端分别引出。如图 4-24 所示, 用两片 16K×4 位的芯片扩展在一起组成 16K×8 位的存储器,其中一片的数据线作为高 4 位 D7~D4,另一片的数据线作为低 4 位 D3~D0。 图 4-24 位扩展连接方式 (2)字扩展。字扩展指的是增加存储器中字的数量。静态存储器进行字扩展时,将各芯 片的地址线、数据线、读写控制线相应并联,而由片选信号来区分各芯片的地址范围。如图 4-25 所示为用 2 片 1K×8 位的存储器芯片组成一个 2K×8 位的存储器的连接。 在此,将 A10 用作片选信号。由于存储芯片的片选端要求低电平有效,所以当 A10 为低 时,选中左边的芯片;当 A10 为高时,选中右边的芯片。 动态存储器一般没有片选端 CS ,但可以用 RAS 端来扩展字数。由图 4-12 的 16K×1 位 DRAM 存储器结构框图可知,行地址锁存是由 RAS 的下降沿激发的行时钟来实现的,列地址 锁存是由行时钟及 CAS 下降沿共同激发的列时钟来实现的。当 RAS =1 时,存储器既不会产生 行时钟,也不会产生列时钟,因此地址码是不会进入存储器的,电路不工作。只有当 RAS 由 “1”变“0”时,才会激发出行时钟,存储器才会工作。

(18)

图 4-25 字扩展连接方式 (3)字位同时扩展。字位扩展是指既增加存储字的数量,又增加存储字长。一个存储 器的容量为 M×N 位,若使用 L×K 位的存储器芯片,那么,需要的芯片个数为(M/L)× (N/K)个。 图 4-26 是字位同时扩展的情况,用了 8 片 1K×4 位的存储器芯片,构成了 4K×8 位的存 储器。每片芯片具有 10 个地址端和 4 个数据端,每两片构成 1K×8 位的一组存储器,这属于 位扩展;4 组便构成了 4K×8 位的存储器,这属于字扩展。地址线 A11、A10 经译码器译得 4 个片选信号,分别用于选择其中的 1K×8 位的存储芯片组。 图 4-26 字位同时扩展连接方式 2.主存储器与 CPU 的连接 存储芯片与 CPU 连接时,特别要注意它们之间的地址线、数据线和控制线的连接。 (1)地址线的连接。存储芯片容量不同,其地址线数也不同,而 CPU 的地址线数往往比 存储芯片的地址线数要多。通常总是将 CPU 地址线的低位与存储芯片的地址线相连,CPU 地 址线的高位或作存储芯片扩充时用,或作其他用法。例如,若 CPU 地址线为 16 位 A15~A0, 1K×4 位的存储芯片仅有 10 根地址线 A9~A0,此时可将 CPU 的低位地址 A9~A0 与存储芯 片地址线 A9~A0 直接相连。

(2)数据线的连接。CPU 的数据线与存储芯片的数据线条数也不一定相同。此时,必须 对存储芯片进行位扩展,使其数据位数与 CPU 的数据线数相等。

(19)

(3)读/写命令线的连接。CPU 通常提供有读/写命令线,一般可与存储芯片的读/写控制 端直接连接,并且不论存储芯片是何种扩展形式,要把 CPU 的读/写命令接到所有的存储芯片 上,这时,CPU 发出的读/写命令尽管被所有的芯片都接收到,但只有片选有效的芯片才能进 行相应的操作。 (4)片选线的连接。片选信号的连接是 CPU 与存储芯片间能互相配合、正确工作的关键。 由于存储器是由许多存储芯片叠加组成的,哪一片被选中完全取决于该芯片的片选控制端 CS 是否能接收到来自 CPU 的片选有效信号。

片选有效信号一般与 CPU 的访存控制信号 MREQ#有关,因为只有当 CPU 要求访存时, 才要求选择存储芯片。若 CPU 访问 I/O,则 MREQ#为高,表示无效,不访问存储器。此外, 片选有效信号还和地址有关,因为 CPU 给出的存储单元地址的位数往往大于存储芯片的地址 线数,故那些未与存储芯片连上的高位地址常与访存控制信号一起,产生存储器的片选信号。 (5)合理选择存储芯片。合理选择存储芯片主要是指存储芯片类型和数量的选择。通常 选用 ROM 存放系统程序、标准子程序和各类常数等;RAM 则是为用户编程而设置的。此外, 在考虑芯片数量时,要尽量使连线简单方便。 在实际的应用中,两者的互连还会有时序配合的问题、速度问题、负载问题等,本书中 不再详细讨论。下面通过几个例子来看存储芯片与 CPU 的具体连接形式。 例:用 1024×4 位存储芯片组成 2K×8 位存储器。 解:扩展后的存储器容量为 2K×8 位,可计算出需要芯片的个数为 4 片。其中每两片合 为一组进行位扩展,达到 1K×8,然后两组间进行字扩展,达到 2K×8。 每个芯片具有地址线 10 条,数据线 4 条,所以用 CPU 的 A9~A0 地址线来选择每两片芯 片所组成的 1K 字的 8 位存储单元。用 A10 和 MREQ#来实现两组芯片间的片选信号。用 CPU 的读/写控制信号 WE 来控制存储器的读/写操作,如图 4-27 所示。

图 4-27 芯片扩展连接图

当 A10=0,MREQ#为低电平时,左 1K 工作;当 A10=1,MREQ#为低电平时,右 1K 工 作。所以可分析此存储器地址空间的分配情况,如表 4-2 所示。

(20)

表 4-2 存储器空间地址分配表 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 存储单元(字节) 0 0 0 0 0 0 0 0 0 0 0 000H 0 ……… ……… ………… …… 左 1K 0 1 1 1 1 1 1 1 1 1 1 3FFH 1 0 0 0 0 0 0 0 0 0 0 400H 1 ……… ……… ………… …… 右 1K 1 1 1 1 1 1 1 1 1 1 1 7FFH 例:设 CPU 有 16 根地址线,8 根数据线,并用 MREQ#作访存控制信号(低电平有效), 用 WR 作读/写控制信号(高电平为读,低电平为写)。现有下列存储芯片:1K×4 位 RAM; 4K×8 位 RAM;8K×8 位 RAM;2K×8 位 ROM;4K×8 位 ROM;8K×8 位 ROM 及 74LS138 译码器和各种门电路。画出 CPU 与存储器的连接图,要求:

(1)主存地址空间分配:6000H~67FFH 为系统程序区;6800H~6BFFH 为用户程序区。 (2)合理选用上述芯片,说明各选几片。

(3)详细画出存储芯片的片选逻辑图。

解:(1)先将 16 进制地址范围写成二进制地址码,并确定其总容量。 A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 系统程序区 … … … … 0 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 用户程序区 … … … … 0 1 1 0 1 0 1 1 1 1 1 1 1 1 1 1 可看出系统程序区大小为 211字节,即 2KB;用户程序区为 210字节,即 1KB。 (2)根据地址范围的大小以及该区域在计算机系统中的作用,选择存储芯片。对 6000H~ 67FFH 的系统程序区,大小为 2KB,应选 1 片 2K×8 位的 ROM。对 6800H~6BFFH 的用户 程序区,大小为 1KB,应选 2 片 1K×4 位的 RAM。因为选其他存储芯片的话都会造成空间的 浪费。

(3)分配 CPU 的地址线。将 CPU 的低 11 位地址线 A10~A0 与 2K×8 位的 ROM 地址 线相连;将 CPU 的低 10 位地址线 A9~A0 与 2 片 1K×4 位的 RAM 地址线相连。剩下的高位 地址与访存控制信号 MREQ#共同产生存储芯片的片选信号。

(4)片选信号的形成。由 74LS138 译码器功能可知,必须保证控制端 G1 为高,G2A 和 G2B 为低,译码器才能工作。而存储器地址范围中,A15 为 0,A14 为 1,所以可分别接到 G2A 和 G1 上,同时 CPU 的访存控制信号 MREQ#接 G2B ,保证了译码器三个控制端的要求。A13,A12, A11 接译码器的 C,B,A 三个输入端,根据地址范围可看出,当 A13,A12,A11 为 100 时,译 码器输出 Y4 有效,应选中 1 片 ROM;当 A13,A12,A11 为 101 时,Y5 有效,此时配合上 A10 为 0,应选中 2 片 RAM。

(21)

图 4-28 芯片扩展连接图 例:CPU 及其他芯片假设同上题,画出 CPU 与存储器的连接图。要求主存的地址空间满 足下列条件:最小 8K 地址空间为系统程序区,与其相邻的 16K 地址空间为用户程序区,最大 4K 地址空间为系统程序工作区。详细画出存储芯片的片选逻辑并指出存储芯片的种类和片数。 解:(1)根据题目的地址范围写出相应的二进制地址码,见表 4-3。 (2)根据地址范围的容量及其在计算机系统中的作用,确定最小 8K 的系统程序区选用 1 片 8K×8 位的 ROM;与其相邻的 16K 用户程序区选用 2 片 8K×8 位的 RAM;最大 4K 的系 统程序工作区选用 1 片 4K×8 位的 RAM。

(3)分配 CPU 的地址线。将 CPU 的低 13 位地址线 A12~A0 与 1 片 8K×8 位的 ROM 和两片 8K×8 位的 RAM 的地址线相连;将 CPU 的低 12 位地址线 A11~A0 与 1 片 4K×8 位 的 RAM 的地址线相连。

(4)形成片选信号。将 74LS138 译码器的控制端 G1 接+5V, G2A 和 G2B 接 MREQ#,以 保证译码器正常工作。CPU 的 A15、A14、A13 分别接在译码器的 C、B、A 输入端上,则其输出 Y0 、Y1、Y2 分别作 ROM、RAM1 和 RAM2 的片选信号。此外,由地址分配表,对最大 4K 地 址范围的系统程序工作区来说,要求 A15、A14、A13 为 111,且 A12 为 1,所以要用 Y7 和 A12 处 理后作 RAM3 的片选信号。经分析后可得存储芯片与 CPU 的连接及片选译码逻辑如图 4-29 所示。

(22)

表 4-3 存储空间地址分配表

A15 A14 A13 A12 A11A10A9A8 A7A6A5A4 A3A2A1A0 地址范围 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0000H ………… …… 系统程序区 8K*8 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1FFFH 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 2000H ………… …… 用户程序区 16K*8 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 5FFFH 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 F000H ………… …… 系统工作区 4K*8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 FFFFH

4.5 高性能存储器介绍

4.5.1 提高主存性能的措施 随着计算机应用领域的不断扩大,处理的信息量越来越多,对存储器的工作速度和容量 要求也越来越高;同时由于多道程序和多用户方式的使用,对主存的可靠性也有更高的要求, 如何提高主存的这些性能呢? 提高主存性能的方法比较多,在此分别予以介绍。 1.提高 CPU 与主存之间传输速度的对策 对传输速度的提高,可以采用以下几种方法:  采用存取时间短的存储器芯片来组成主存。这里,要注意 3 个基本问题:首先,要清 楚 SRAM 的存取时间比 DRAM 的短;第二,要清楚双极型存储器的存取时间要比 MOS 型存储器的短,MOS 型存储器的存取时间几乎是双极型存储器存取时间的 10 倍;第三,要注意随着微电子技术的飞速发展,不断地会有存储容量更大而存取时间 更短的存储器芯片出现。  多个存储器芯片并联使用,扩大字长,以提高主存频宽。假定一个存储器芯片的字长 为 w,那么 n 个这样的芯片并联,字长 W=w*n,按地址在一个存储周期内就可访问 w*n 位的指令或数据,使主存带宽提高了 n 倍。  多体存储器交叉编址,使得在一个存取周期内,可同时进行多个字的读或写。此方法 在下面详细介绍。

 在 CPU 和主存之间插入高速缓冲存储器(Cache),把使用频率高的数据存入 Cache,

从而提高数据的传输率。(关于 Cache 的详细介绍见 4.6 节) 2.提高主存容量的对策

主存容量受 CPU 地址线位数限制,其物理空间是一定的。为了使有限的主存空间能运行 大容量的程序,目前普遍采用虚拟存储器。(关于虚拟存储器的详细介绍见 4.7 节)

(23)

3.提高主存可靠性的对策 半导体存储器在运行过程中,由于各种原因会使数据的存储或传送发生差错,在现代的 存储器中大都包含检查错误和纠正错误的逻辑。检查或处理错误的处理过程一般为:当数据写 入存储器时,对数据进行某种计算处理产生一种代码(即校验码),这种代码同数据同时被存 储。因此假设存储数据字长为 N 位,而代码长为 K 位,那么实际存储的字长则为 N+K 位,增 加了硬件的开销。然后在将原存储数据读出时,将读出的 N 位数据再次产生一组代码,并与 取出的 K 位代码相比较。比较的结果有三种情况: (1)比较相同,未检测到错误,将读出的数据传送出去。 (2)比较不相同,检测到错误,而且错误可以纠正,则将数据位和纠错位一起发送给纠 正逻辑,由它产生新的正确的数据再发送出去。 (3)比较不相同,检测到错误,但错误不可以纠正,这时则报告错误。 此过程可用图 4-30 来表示。 图 4-30 数据校验过程图 存储过程或并行传送过程常用的数据校验编码有奇偶校验码和海明校验码,串行传送过 程常用的有循环冗余校验码(编码方法详见第三章)。 由于集成电路存储器芯片的可靠性是很高的,所以在计算机中,所谓存储器可靠性的含 义,应该说,除了指器件出现故障的几率外,还应该包括存储器的防止破坏和非法使用,这就 是存储器的保护问题。存储保护主要包括两个方面:存储区域保护和访问方式的保护。 (1)存储区域保护。对于主存系统可采用界限寄存器方式。由系统软件经特权指令设置 上、下界寄存器为每个程序划定存储区域,禁止越界访问。由于用户程序不能改变上、下界的 值,所以如果它出现错误,也只能破坏该用户自身的程序,侵犯不到别的用户程序及系统程序。 界限寄存器方式只适用于每个用户占用一个或几个连续的主存区域,如果一个用户程序能 离散地分布于主存中,则不能使用这种保护方式,此时可以用页表保护、键保护或环保护方式。 页表保护中每个程序都有自己的页表和段表,段表和页表本身都有自己的保护功能,无 论地址如何出错,也只能影响到相应的几个主存页面。 键保护方式的基本思想是为主存的每一页配一个键,称为存储键,它相当于一把锁,由 操作系统赋予。每个用户的程序所占主存区域的键都相同。为了打开这个锁,必须有钥匙,称 为访问键。访问键赋予每道程序,保存在该程序的状态寄存器中。当数据要写入主存的某一页 时,访问键要与存储键相比较。若两键相符,则允许访问该页,否则拒绝访问。 环状保护方式可以对正在执行的程序本身进行保护,它按系统程序和用户程序的重要性 及对整个系统的正常运行的影响程度进行分层,每层有一个环号,表示保护的级别。当程序要 转移或存取数据时,用现行环号和目的环号进行比较来决定能否进行相应的操作。

(24)

(2)访问方式保护。对主存信息的使用可以有三种方式:读(R)、写(W)和执行(E), “执行”指作为指令来用。所以,相应的访问方式保护就有 R、W、E 三种以及由这三种方式 形成的逻辑组合。 访问方式保护可以和上述区域保护结合起来使用。例如,在界限寄存器中加入一位访问 方式位,可增强保护的灵活性。 4.5.2 双口 RAM 和多模块存储器 1.双端口存储器 双端口存储器是由于同一个存储器具有两组相互独立的读写控制线路而得名。它可以进 行并行的独立操作,是一种高速工作的存储器,经常用于 CPU 与其周边控制器直接通信的情 况,作为两边都需要直接访问的同一个存储器或者缓冲器之类的器件。 如图 4-31 所示,是 2K×16 位双端口存储器的逻辑功能框图。这是一个存储容量为 2K、字 长 16 位的 SRAM,它提供了两个相互独立的端口,即左端口和右端口。它们分别具有各自的地 址线(A0~A10)、数据线(IO0~IO15)和控制线(R/ W , CE , OE , BUSY ),因而可以对 存储器中任何位置上的数据进行独立的存取操作。图中用 L 表示左端口,R 表示右端口。 图 4-31 双端口存储器框图 当两个端口的地址不相同时,在两个端口上进行读写操作,一定不会发生冲突。当任一端 口被选中驱动时,就可对整个存储器进行存取,每一个端口都有自己的片选控制( CE )和输 出驱动控制( OE )。读操作时,端口的 OE (低电平信号有效)打开输出驱动器,由存储矩阵 读出的数据就出现在 I/O 线上。 当两个端口同时存取存储器同一存储单元时,便发生读写冲突。为解决此问题,特设置了 BUSY 标志。在这种情况下,片上的判断逻辑可以决定对哪个端口优先进行读写操作,而对 另一个被延迟的端口置 BUSY 标志( BUSY 变为低电平),即暂时关闭此端口。换句话说,读 写操作对 BUSY 变为低电平的端口是不起作用的。一旦优先端口完成读写操作,才将被延迟 端口的 BUSY 标志复位,开放此端口,允许延迟端口进行存取。 2.多模块交叉存储器 多模块交叉存储器指用多个存储体交叉编址组成的存储器,每个存储体有相同的容量和 存取速度,各自有独立的地址寄存器、地址译码器、驱动电路和读写电路、数据寄存器等。 图 4-32 是按交叉编址的多体模块结构示意图,它包括 4 个存储体,可以称为是模 4 交叉 编址,如表 4-4 所示。这种编址方式使用地址码的低位字段经过译码选择不同的存储模块(存

(25)

储体),而高位地址字段指向相应的模块内部的存储字。这样,连续地址分布在相邻的不同模 块内,而同一模块内的地址都是不连续的。在理想情况下,如果程序段和数据段都连续地在主 存中存放和读取,那么,这种编址方式将大大提高主存的有效访问速度。 图 4-32 多体交叉编址方式 表 4-4 模 4 交叉编址表 体号 体内地址序号 最低两位地址 M0 0,4,8,12,…… 00 M1 1,5,9,13,…… 01 M2 2,6,10,14,…… 10 M3 3,7,11,15,…… 11 存储体经交叉编址后,可以在不改变每个模块存取周期的前提下,提高存储器的带宽。 如 4 个模块按一定的顺序轮流启动各自的访问周期,启动两个相邻模块的最小时间间隔等于单 模块访问周期的 1/4。如图 4-33 所示,对每个个体而言,存取周期均未缩短,但由于 CPU 交 叉访问各体,最终在一个存取周期内,实际上向 CPU 提供了 4 个存储字,大大加宽了存储器 的带宽。 图 4-33 交叉访问的时间关系

多体模块不仅要与 CPU 交换信息,还要与辅存、I/O 设备、乃至 I/O 处理机交换信息。因 此在某一时刻,决定主存究竟与哪个部件交换信息,要由存储器控制部件来控制。

4.5.3 DRAM 技术的发展

(26)

1.同步动态随机存储器(SDRAM) 典型的 DRAM 是异步工作的,处理器送地址和控制信号到存储器后,等待存储器进行内 部操作(选择行线和列线,读出信号放大并送到输出缓冲器等),此时处理器只能等待,因而 影响了系统性能。而 SDRAM 与处理器之间的数据传送是同步的,在系统时钟控制下,处理 器送地址和控制命令到 SDRAM 后,在经过一定数量(其值是已知的)的时钟周期后,SDRAM 完成读或写的内部操作。在此期间,处理器可以去进行其他工作,而不必等待。 图 4-34 显示了 SDRAM 的结构。它的单元阵列与异步动态存储器是一样的,地址和数据 连接通过寄存器进行缓冲。在每个读出放大器的输出端有一个锁存器,读操作使得选中行中的 所有单元的内容被装入锁存器。但是,如果只是为了刷新而访问,那么锁存器中的内容不会改 变,它只会刷新存储单元中的内容。读出时保存在选中列对应锁存器中的数据被传送到数据输 出寄存器中,然后就可以在数据输出引脚上获得这些数据。 图 4-34 同步动态随机存储器 SDRAM 有几种不同的操作模式,可以通过向模式寄存器中写入控制信息来选择这些模 式,例如可以指定不同长度的猝发方式操作。在 SDRAM 中,不需要在 CAS 线上提供外部产 生的脉冲去选择连续的列,芯片内部使用列计数器和时钟信号来提供需要的控制信号。新数据 在每个时钟周期内被放到数据线上,所有的操作由时钟信号的上升沿触发。 图 4-35 是一个典型的长度为 4 的猝发时序图。首先,行地址在 RAS 信号的控制下被锁存。 存储器通常使用 2 到 3 个时钟周期(图中用 2 个)激活选中的行。然后,列地址在 CAS 信号 的控制下被锁存。一个时钟周期后,第一组数据被放到数据线上。然后 SDRAM 自动增加列 地址去访问选定行中后面的三组数据,在随后的三个时钟周期内把这三组数据放到数据线上。 图 4-35 在 SDRAM 中长度为 4 的读脉冲串

(27)

SDRAM 有内置的刷新电路,其中一个部分是刷新计数器,提供要刷新的行地址。 商业 SDRAM 能够在超过 100MHz 的时钟频率下使用。例如,Intel 制定了 PC100 和 PC133 总线标准,分别规定系统总线受 100MHz 和 133MHz 的时钟控制,因此各主要存储器芯片生 产厂商都生产 100MHz 和 133MHz 的 SDRAM 芯片。 2.双倍数据速率同步动态存储器(DDR SDRAM) 通过对提高性能的不断探索,SDRAM 的更快版本被开发出来。标准 SDRAM 在时钟信号 的上升沿执行所有的动作,而现在有一种类似的存储器设备出现了,它以同样的方式访问存储 器单元阵列,但是它在时钟信号的两个边沿(即上升沿和下降沿)都传输数据。这种设备的延 迟与标准 SDRAM 一样,但是由于在时钟信号的两个边沿传输数据,因此在脉冲串传输时, 它们的实际带宽是原来的两倍。这就是双倍数据速率 SDRAM(double data rate SDRAM)。

为了能以足够高的速率访问数据,存储器单元阵列被组织成两个存储体,每个存储体都 能单独访问。一个给定块中连续的字被存储到不同的存储体中,这种字的交叉可以实现同时访 问在一个时钟信号的连续边沿上传输的两个字。 3.Rambus DRAM(RDRAM) 存储器系统的有效带宽不仅仅依赖于存储器芯片的结构,还依赖于连接到处理器的连线 性质。DDR SDRAM 和标准 SDRAM 都是连接到处理器总线上,因此传输速度不只是看存储 器设备的速度,还要看总线的速度。时钟频率为 133MHz 的总线最快每 7.5ns 传输一次,如果 时钟信号的两个边沿都使用的话,则传输两次。在有速度限制的总线上增加传输数据能力的唯 一办法就是增加数据线,但是这样会导致总线变宽。 过宽的总线成本很高,并且需要占用主板上很大的空间。另一个可用的办法是实现一个 较窄但是速度很快的总线。Rambus 公司采用了这种办法,他们开发了一种自己的设计方案, 称为 Rambus。Rambus 技术的关键是在芯片之间传输信息时使用了一种快速发送信号的方法。 它的信号由与参考电压有微小偏差的电压组成。参考电压大约是 2V,两个逻辑值用与参考电 压上下偏差 0.3V 的电压表示。这种类型的信号一般称为微分信号。小的电压浮动占用较短的 传输时间,因此可以实现更快的传输速度。 微分信号和高传输速率需要在设计通讯连接线时使用特殊的技术,这种需求增加了拓宽 总线的难度。它还需要为处理微分信号设计特别的电路接口。Rambus 提供了设计这种线路的 完整规范,称为 Rambus 通道。现在的 Rambus 设计允许 400MHz 的时钟频率,此外,数据在 时钟信号的两个边沿上传输,因此有效数据传输速率是 800MHz。 Rambus 需要特别设计的芯片,这些芯片使用基于标准 DRAM 技术的存储单元阵列,使 用多体单元阵列同时访问多个字,与 Rambus 通道交互需要的电路包含在芯片内部。这种芯片 称为 Rambus 动态随机存储器(RDRAM)。 Rambus 最初的标准提供了一个由 9 条数据线、一些控制线和电源线组成的通道,其中 8 条数据线用于传输一个字节的数据,第 9 根数据线可以用于奇偶校验等用途。后来的标准允许 附加的通道。两通道 Rambus 称为直接 RDRAM,它有 18 条数据线,能同时传输两字节数据, 没有单独的地址线。 前些年的微机主存市场是这三种存储器的三分天下,近两年来,DDR 存储器已经完全取 代了 SDRAM,因此变成了 Rambus 技术与 DDR SDRAM 技术的竞争,它们各自有自己的优 点和缺陷。

(28)

4.6 高速缓冲存储器

4.6.1 程序访问的局部性

据统计 CPU 的速度平均每年改进 60%,而组成主存的动态 RAM 速度平均每年只改进 7%, 结果是 CPU 和动态 RAM 之间的速度间隔平均每年增大 50%。为了解决 CPU 和主存之间速度 不匹配的问题,可以考虑在 CPU 和主存之间设置一个高速的容量相对较小的存储器,称为高 速缓冲存储器(Cache)。 通过大量典型程序的分析,可以发现 CPU 从主存取指令或取数据,在一定时间内,只是 对主存局部地址区域的访问。这是由于指令和数据在主存内都是连续存放的,并且有些指令和 数据往往会被多次调用(如子程序、循环程序和一些常数)。这种一定时间内对局部范围的存 储器地址频繁访问,而对此范围以外的地址则访问甚少的现象就称为程序访问的局部性。 根据这一原理,很容易设想,只要将 CPU 近期要用到的程序和数据,提前从主存送到 Cache,那么就可以做到 CPU 在一定的时间内不必从主存储器取指令和数据,而只需要访问 Cache,从而提高访问速度。一般 Cache 采用高速的 SRAM 制作,其价格比主存贵,但因其容 量远小于主存,因此能很好地解决速度和成本的矛盾。 为了尽量提高 Cache 存储器的速度,它的全部功能由硬件实现,并且对程序员是透明的。 4.6.2 Cache 的基本工作原理 1.Cache 的基本结构 图 4-36 表示 Cache 的基本结构。它一般由两部分组成,一部分存放由主存储器来的数据, 另一部分存放该数据在主存储器时的存放地址(此部分称为地址标记存储器,记为 Tag)。 图 4-36 Cache 的基本结构 设主存有 2n个字节,每个字节的地址码为 n 位,为了与 Cache 映射,将主存与缓存都分 成若干大小相同的块,每个块内又包含若干个字节。设块内有 B 个字节,则主存共分成 M=2n

(29)

/B 块,这就将主存的 n 位地址分成两段:高 m 位表示主存的块地址,低 b(B=2b)位表示块

内地址。设 Cache 地址码为(c+b)位,则 Cache 的块数为 2c块。 由于 Cache 容量小,所以

分得的块的数目少的多,主存中只有一部分块的内容可存放在 Cache 中。 在 Cache 中,每一块外加有一个标记,指明它是主存的哪一块信息的副本,所以该标记 的内容相当于主存中块的编号。当 CPU 发出读请求时,将主存地址 m 位(或 m 位中的一部 分)与 Cache 某块的标记相比较,根据其比较的结果是否相等而区分出两种情况:当比较结果 相等时,说明需要的数已在 Cache 块中,那么直接访问 Cache 就行了;当比较结果不相等时, 说明需要的数据尚未调入 Cache 中,那么就要把该数据所在的整个字块从主存中调进来。前一 种情况称为访问 Cache 命中,后一种情况称为访问 Cache 不命中。 2.Cache 的设计要素 在 Cache 系统的设计中,需要考虑的基本要素有:

(1)Cache 的容量:在设计 Cache 时,从价格的角度考虑,我们希望 Cache 的容量足够 小,这样它和主存的平均每位价格才会接近于单个主存储器位的价格。从速度的角度考虑,我 们希望 Cache 的容量足够大,这样才能在 Cache 里存放更多主存信息的副本,使得 CPU 对信 息的平均存取时间接近于单个 Cache 的存取时间。许多研究表明,Cache 容量为 1KB 到 512KB 将是最有效的,但随着芯片价格的下降,Cache 的容量还是不断增大。

(2)块的大小:主存和 Cache 都划分了同样大小的块,块的大小也称为块长,Cache 的 容量和块的大小是影响 Cache 效率的重要因素。通常用“命中率”来测量 Cache 的效率。命中 率指 CPU 所要访问的信息在 Cache 中的比率,而将所要访问的信息不在 Cache 中的比率称为 失效率。块长在由小变大的过程中,由程序局部性的原理,在已被访问字的附近的内容近期也 可能被访问到,所以命中率首先会增大。然后块长增大到一定值后,Cache 的块数会减少,此 时命中率反而会下降。通常块长的大小取一个主存周期所能调出的信息长度。例如,CRAY-1 机器的主存是模 16 交叉,每个分体为单字宽,其指令 Cache 的块长为 16 个字。 (3)Cache 的映像:由于 Cache 的数据块比主存的数据块要少得多,因此需要一种算法 把主存储器的数据块映射到 Cache 中。而且还需要一种方法来确定主存储器中的哪一块占用着 Cache 块,所以映射的功能决定了 Cache 的结构。通常,Cache 的映射采用三种技术:直接映 像、全相联映像和组相联映像。在 4.6.3 节中将详细讨论这三种映像方法。 (4)替换算法:当新的主存块需要被调入 Cache 时,如果它的可用空间被占满的话,Cache 中原存储的块需要被替换掉。如果新装入块的可用空间不只一个,就需要一种替换算法决定先 替换哪一个。替换算法也称为替换策略,一般由硬件实现,详见 4.6.4 节。 (5)写策略。在将驻留在 Cache 中的块替换之前,需要考虑这块数据驻留 Cache 期间是 否被修改过,同时在主存中对应的块有没有被修改。如果驻留期间没有被修改过,则可直接将 这块替换掉;如果被修改过,即这个 Cache 块至少被执行过一次写操作,那么在这个块被替换 掉之前必须对主存内相应的块作修改,常见的写策略有通写和回写等方法。

(6)Cache 数目。Cache 刚刚出现时,通常系统只有一个 Cache,近年来普遍采用多个 Cache。这个增多有两个方面,一个是增加 Cache 的级数,一个是将统一的 Cache 分成分立的 Cache。

1)一级缓存和二级缓存。当芯片集成度提高后,可以将 Cache 直接和处理器制作在同一 个芯片内,这也叫片内缓存。与通过外部总线连接的 Cache 相比,片内 Cache 使得 CPU 访问

(30)

Cache 时不必占用芯片之外的总线,并且片内 Cache 与 CPU 之间的数据通路更短,大大提高 了存取的速度。

但由于片内 Cache 嵌制在芯片内,容量一般都不大,这样也降低了系统的性能,此时可 以在处理器芯片外仍设置 Cache,叫做片外缓存。片外缓存可以有较大的容量,向片内缓存和

处理器高速提供数据。此时在处理器芯片内部的 Cache 称为第一级 Cache(L1),把片外的 Cache

称为第二级 Cache(L2)。 2)统一和分立缓存。计算机开始实现 Cache 时,是将指令和数据存放在一个 Cache 中的。 后来随着计算机技术的发展和处理速度的加快,存取数据的操作经常会与取指令的操作发生冲 突,从而延迟了指令的读取。当前的趋势是将指令 Cache 和数据 Cache 分开而成为两个相互独 立的 Cache。 在给定 Cache 总容量的情况下,统一 Cache 可以有较高的利用率。因为在执行不同程序 时,Cache 中指令和数据所占的比例是不同的,单一 Cache 可以自动调整指令和数据的空间, 而分立缓存则不具有这一优点。但在超标量或流水技术的计算机中,要求同时取数据和取指令, 必须将指令 Cache 和数据 Cache 分开。 4.6.3 Cache 与主存的地址映像方式 为了把信息放到 Cache 存储器中,必须应用某种函数把主存地址映像到 Cache,这称为地 址映像。在信息按照这种映像关系装入 Cache 后,执行程序时,应将 CPU 给出的主存地址变 换成 Cache 地址进行访问,这个变换过程叫做地址变换。地址的映像和变换是密切相关的。 下面介绍几种基本地址映像方式,它们是直接映像、全相联映像和组相联映像等。为了 说明这几种映像关系,假设主存储器空间被分成 Mm(0),Mm(1),……Mm(2 m -1)共 2m个块,字 块大小为 2b个字;Cache 存储空间被分成 M c(0),Mc(1),……Mc(2c-1)共 2c个同样大小的块。 1.直接映像 在直接映像中,主存块和 Cache 中字块的对应关系如图 4-37 所示。直接映像函数可定义为: j=i mod 2c 其中,j 是 Cache 的字块号,i 是主存的字块号。在这种映像关系中,主存的第 0 块,第 2c块,第 2c+1 块,……,只能映像到 Cache 的第 0 块,而主存的第 1 块,第 2c +1 块,第 2c+1+1 块,……,只能映像到 Cache 的第 1 块。 直接映像的优点是实现简单,只需要利用主存地址按某些字段直接判断,即可确定所需 字块是否已在 Cache 存储器中。如图 4-37,主存地址末 b 位是字块内地址;中间 c 位是 Cache 字块地址,又称组地址;高(m-c)=t 位就是主存字块标记,又称区地址,是记录在相应 Cache 块标记中的内容,当有效位为“1”时,它表明该数据块是主存哪一块数据的副本。Cache 在 接收到 CPU 送来的主存地址和读/写命令后,只需根据中间 c 位字段找到 Cache 存储器字块, 然后看其标记是否与主存地址高 t 位符合,如果符合且有效位为“1”,则可根据 b 位块内地址, 从 Cache 中取得所需指令或数据;如果不符合或有效位为“0”,就从主存读入新的字块来替换 旧的字块,并将 CPU 所需数据送往 CPU,同时修改 Cache 标记。假如原来有效位为“0”,还 要将有效位改置成“1”。

直接映像方式的缺点是不够灵活,即主存的 2t个字块只能对应唯一的一个 Cache 存储器

數據

表 4-2    存储器空间地址分配表  A10 A9    A8    A7 A6    A5 A4    A3 A2 A1 A0  存储单元(字节)  0      0      0      0      0      0      0      0    0    0    0  000H  0      ………………        ………        …………  …… 左 1K  0      1      1      1      1      1      1    1    1    1
表 4-3    存储空间地址分配表

參考文獻

相關文件

被賦予「算聖」之稱的關孝和,是和算史上最傑出的數學家之一,和算自他開始進入

利用這種說法一個 vector space 的 一組 basis 利用 Proposition 1.5.4 便可以說成就是該 vector space 中所有 spanning set 的 minimal element; 也可以說是該 vector

在 abelian group 最好用的性質就是其每個 subgroup 都 是 normal subgroup, 所以每次碰到有關 abelian group 的性質時, 我們都可先找一個 nontrivial subgroup 再利用其為

實務上在應用 SPSS 軟體 run 完主 成分分析後,應該進一步進行因素 轉軸,在社會科學研究中,varimax 法為最常使用的,varimax

在 abelian group 最好用的性質就是其每個 subgroup 都 是 normal subgroup, 所以每次碰到有關 abelian group 的性質時, 我們都可先找一個 nontrivial subgroup 再利用其為

 通貨僅為貨幣的其中一種型態,使用通貨完成 的商品交易占所有交易總額的極小比例,一般 日常小額付款已逐漸使用 支票、信用卡等

1.在系統內:有分為在 TOP N 裡跟在 Change Table 裡,在 TOP N 裡就將票數加上去 後利用 Jump Table 作排序,在 Change Table 裡的話就將票數加上去並拉回到 TOP N

介面最佳化之資料探勘模組是利用 Apriori 演算法探勘出操作者操作介面之 關聯式法則,而後以法則的型態儲存於介面最佳化知識庫中。當有