2019-07-12

  1. 概述

a.存储器可分为哪些类型?

aa.按照存储介质分类
半导体存储器:内存条、U盘,易失:当去掉电源,存储器中没有电时,存储器中的信息就会消失非易失:不给加电信息还是保存的。
磁表面存储器:磁盘、磁带,
磁芯存储器:xy方向上有两根线。磁芯存储器的数据的读出与写入?
光盘存储器:

bb.按照存取方式进行分类

存取时间和物理地址无关(随机访问)
不管信息存放在存储体中的什么位置,只要给出地址,不同的地址可以在相同的时间内将信息写入或者取出地址里面的信息,叫做随机访问,称为随机存储器,分成了两类:
随机存储器(RAM):在程序的执行过程中可读可写。
只读存储器(ROM):在程序的执行过程中只能进行读,一般存放一些系统的参数,系统程序。

存取时间和物理地址有关(串行访问)
顺序存取存储器:磁带,
直接存取存储器:磁盘,磁头先找到指定的磁道,磁头转动找到指定的扇区。

cc.按照在计算机中的作用进行分类

分为:主存储器、Flash Memory快闪存储器、高速缓冲存储器(cache)、辅助存储器

主存储器:分为RAM(静态RAM和动态RAM)和ROM。

Flash Memory快闪存储器:U盘就是用Flash Memory快闪存储器来做的,是半导体材料做的,速度比主存慢比辅助存储快;
还可以做计算机的硬盘;
还有一种就是:作为主存与辅存之间的辅助缓冲。

高速缓冲存储器(Cache):放在主存储器和CPU之间,通常由静态RAM来做,速度比Flash Memory快闪存储器快,比主存也快,作为主存与CPU之间的缓冲

辅助存储器:磁盘、磁带、光盘。

b.现代存储器的层次结构,为什么要分层?层次结构的基本组成是什么?

aa.存储器的层次结构

存储器的层次结构

存储器的层次结构用一个如上图所示的三角形来表示:

寄存器在CPU中(IO端口中也有寄存器),有些寄存器在编程语言指令中可以使用到,称为计算机体系结构寄存器;有些寄存器对编程语言的指令使用不到,对程序员来说是透明的,称为非体系结构寄存器。

缓存的一部分在CPU当中,CPU需要数据就可以从缓存中进行读取或者写入到缓存中速度会更快。
如果CPU中的缓存不能做到提高系统速度的目的,就可以将缓存放到CPU外。

寄存器+缓存+主存是放在主机当中的。

磁盘+光盘+磁带是放在辅助存储器中。

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

用户最关心存储器的速度、容量、价格。

如上图所示的存储器的层次结构图中:从上往下,存储器的速度越来越慢,容量越来越大,价格越来越低。

cc.为什么要进行分层
为了满足用户的要求,用户需要高速度、大容量、低价格,为了达到用户的这种需求,因为任何一种单一的存储器都无法满足要求,解决的方法就是采用层次结构形成这种存储体系。
存储体系:就是用两种或者两种以上的存储介质构成的存储器,用软件、硬件、或者软硬件相结合的方式把它连接成一个整体,使得从程序员某一个角度去看就有高速度、大容量、低价格的特点。
程序员的角度来看层次结构是透明的,在使用存储器的过程中不需要考虑到存储器的层次结构,信息在层次结构之间的调入调出都是由软件、硬件、或者软硬件相结合的结构自动来完成的。

dd.计算机中两个非常重要的存储层次结构:缓存-主存层次和主存-辅存层次

1.缓存-主存层次

主存的速度和CPU的速度也是有差异的,缓存-主存层次主要是为了解决主存和CPU之间速度的差距问题

在CPU和主存之间加了一层缓存(cache),cache的容量比主存小,功耗比主存大,速度比主存高很多,cache里面保存的信息是主存里面一些信息的副本,CPU可以直接访问缓存,通过访问缓存来访问主存,缓存和主存之间也进行信息交换,CPU需要的数据绝大多数都可以从缓存中获得的话,CPU的速度就会得到很大的提升(程序的局部性原理--时间局部性、空间局部性)。

采用硬件方法将缓存和主存连接为一个整体
为什么要采用硬件:因为这个层次主要是要解决速度的问题,主存和缓存之间数据的调入调出要非常快,所以使用硬件来完成。

2.主存-辅存层次

主要是为了解决主存容量问题
CPU可以从主存中读数据,也可以将结果保存到主存,但是主存的容量是有限的,需要辅助存储器来保存程序,当要运行程序时将程序从辅存调入主存,主存和辅存之间有数据交换,主存和辅存构成了一个存储层次,在这个层级上使用软硬件相结合的方法将主存和辅存构成一个整体,在应用程序员看来这个整体有主存的速度和辅存的容量、辅存的价格。
软件和硬件相结合的结构来负责完成辅存中数据程序的调入、哪部分数据在主存中,哪部分数据在辅存中。

采用软硬件相结合的方法将主存和辅存构成一个整体
为什么采用软硬件相结合的方法:主要是为了解决主存的容量问题,速度并不是那么重要,所以采用软硬件相结合的方法。

主存和辅存构成的整体一般叫做虚拟存储器
虚拟存储器的地址空间的定义:不是构成虚拟存储器的主存的地址,也不是辅存的地址,而是由虚地址来定义,虚地址就是逻辑地址,我们编写程序时程序中使用到的就是虚地址。编写程序时的地址都是从0开始,真正的物理地址是在程序被装入到内存或是在指令要被执行的时候由特定的机构将虚拟地址进行转换得到的。

缓存-主存层次结构的地址使用的就是主存储器的地址,没有定义新的地址空间,也没有使用缓存地址
缓存是按照内容来进行查找的,即使给出地址,也是缓存块的编号。
所以程序在执行时缓存中指令的地址就是主存储器的地址,再将主存的地址转换为缓存的块号和缓存的块内偏移地址来完成相应操作。

主存储器的地址称为实地址,即物理地址。

  1. 主存储器

a.概述
1.主存的基本组成

主存的基本组成

主存包括3大部分:存储体、MAR、MDR;
存储体中保存了程序、数据、指令;MAR中保存了我们要访问的那个存储单元的地址,经过译码器进行译码之后选定指定的存储单元;MDR中保存了要读出或者写入的数据,数据的读出还是写入的控制通过读写电路和控制电路来进行,如果是写入就会将MDR中的数据送入MAR中指定的存储单元中,如果是读出那么指定存储单元的内容将会被送入MDR中。

2.主存与CPU之间的联系

主存和CPU之间的联系.png

CPU和主存之间的连接信号分为三类:数据总线 、地址总线、控制总线。

数据总线完成主存和CPU之间的信息传输,数据总线之间连接在CPU的MDR寄存器和主存的数据总线之间,是双向的,可能读出,也可能写入;
地址总线连接在CPU的MAR寄存器和主存的地址总线之间,里面是要访问的内存单元的地址,是单向的,从CPU送入内存。
控制总线也是单向的,从CPU送入主存。

3.主存中存储单元地址的分配
假设主存中存储单元的存储字长是32位,即对主存中某一个存储单元进行读或者写的话一次最多可以读出32位个0或者1;
主存的编址单位是字节,每一个字节都有一个地址;
一个存储字是32位,一个字节是8位,都有一个地址;
32位的二进制数正好可以保存在主存中的一个存储单元中;
那么32位的二进制数在存储单元中是如何进行保存的

数据在存储单元中是如何保存的.png

一个数从左往右,即从低位到高位。

大端(大尾)方式高位字节地址作为存储字地址(32位二进制数据)--4个字节对应4个地址,高位字节存放在低地址,低位字节存放在高地址 将高位的字节所在的地址定义为字地址

小端(小尾)方式低位字节地址为存储字地址--低位存放在低地址,高位存放在高地址,低位字节所在的地址定义为字地址。

寻址方式的改变导致的主存容量表示的改变.png

字长指的是计算机中CPU在单位时间内可以处理的二进制数的位数。

寻址范围:是一个数字范围,不带有单位,指寻址区间的大小,比如说:0-(2^20)-1;
寻址空间:指能够寻址的最大容量,单位一般用MB、B来表示,比如说寻址空间为1MB;
M和MB:M为数量单位,1024 = 1K;MB指容量大小,1024B = 1KB。
https://blog.csdn.net/lishuhuakai/article/details/8934540

按字节寻址
一组地址线每一个不同的状态对应一个字节的地址。计算机中主存的编址单位是字节,所以如果有24根地址线按字节寻址,24根地址线可以编址2^24个字节,即24根地址线的寻址空间为2 ^ 24B = 16MB。

按字寻址
一组地址线的每一个不同状态对应一个字的地址。一个字由若干个字节构成,所以计算机在按字寻址过程中会区分字里面的字节,会给字里面的字节编制,这样就会占用部分地址线。比如24根地址线,按字寻址,字长为16位,就会占用一根地址线来字内寻址,剩下的23根地址线来按字寻址,寻址空间为2 ^ 23 = 8MW,W是字长,所以存储容量为8MW。
https://blog.csdn.net/qq_33499861/article/details/80303174

存储容量 = 存储单元的个数 x 存储字长
https://zhidao.baidu.com/question/1669464536519323667.html

4.主存的技术指标
速度和容量;

存储容量
主存中存放二进制数的总位数

存储速度--三个衡量指标

存取时间:存储器的访问时间--即从存储器给出地址,到得到稳定的数据输出或输入的时间;根据是读出操作还是写入操作分为读出时间和写入时间,读出时间:从给出地址信号开始到数据线上有稳定的数据输出的时间,写入时间:从给定地址信号开始到写入给定的地址单元中的时间。

存取周期:连续两次独立的存储器操作(读或者写)所需的最小间隔时间。
存取周期要比存取时间要长。
根据是读操作还是写操作将存取周期分为:读操作和写操作。

存储器的带宽:单位为 位/秒,单位时间里我们可以从存储器中读出或者写入的数据的位数。

b.半导体存储芯片简介

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

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

基本结构:
存储矩阵(存放0和1数据);读写电路;译码驱动电路;数据接口( 与CPU进行连接,和外设的控制器进行连接与外部设备进行数据交换)。

地址线是单向的是输入的--CPU给出地址、外部设备给出地址表示要存或是要取、要存或取的数据在存储矩阵的哪一个存储单元,经过译码驱动电路选择指定的存储单元,完成读写操作。

数据线是双向的,读是向外的,写是向内的送入到存储单元中。

控制线里的片选线:片选线是芯片选择信号,指出了这次操作给出的地址是不是这个存储芯片的地址,被选择的存储单元是不是在这个芯片当中。
由片选线来确定这次选择的地址是在哪一个或者哪几个芯片当中的。

半导体存储芯片的片选线一般有2种标识方式:

片选线的两种标识方式.png

CS标识方式:CS是芯片选择的缩写,CS上的横线表示低电平有效,表示如果是低电平的话这次数据访问的地址就是在这个存储芯片中。
CE标识方式:芯片使能信号,先片选再使能芯片才能工作?CE是怎么使能工作的?


单片的存储芯片的容量是有限的,整体的存储器是由若干芯片组成的,CPU在进行存储器操作时,先进行片选,再从选中芯片中根据地址译码选择存储单元进行数据的存取

存储空间的划分和地址编码是靠地址线来实现的,一般CPU可以提供的地址线根数大于存储芯片地址线根数,多片存储芯片构成的存储器的地址编码原则:低地址片内选址、高地址进行片选(选择芯片)

https://www.docin.com/p-1239143169.html

片选线的作用:https://zhidao.baidu.com/question/550296703.html
什么是片选:https://zhidao.baidu.com/question/582453652880369805.html

控制线里面的读写控制线:表示对半导体芯片的操作到底是读操作还是写操作,可以用一根线也可以用两根线表示。

读写控制线.png

一根线的话用WE表示:WE上面的横线表示低电平有效,表示当这个信号是低电平时我们对这个芯片进行写操作,高电平时进行读操作;
两根信号线来表示:OE低电平有效时表示数据要进行输出,将存储矩阵中指定存储单元的数据输出到数据总线上;WE低电平有效时进行写操作,将数据总线上的数据写道存储单元中。

片选线例子:用16K x 1位的存储芯片组成64 K x 8位的存储器

16K x 1位组成64K x 8位.png

对8个16K x 1位的存储芯片同时进行读或者写操作每一个芯片就会给出或者写入1位二进制信息,8个芯片连在一起就构成了一个16K x 8位的存储器,将8个芯片的片选线连接在一起,使得8个芯片可以同时工作;
将4组16K x 8位的存储器放在一起就构成了64 K x 8位的存储器,64K的空间分别划分到4组16K x 8位的存储器中,64K地址有26根地址线,26根地址线的低24位是进行每一个16K芯片的片内选址的;26根地址线的高2根是进行选择哪一个16K的存储芯片的,当选择好了哪一组存储芯片之后就可以对这一组的8个存储芯片相同的位置同时进行读或者写操作。

2.半导体存储芯片的译码驱动方式--给定了存储单元的地址之后怎么找到指定的存储单元

线选法(单译码器法)--实际上布局为一个线性的数组

地址译码驱动电路-线选法.png

如上图:
因为有A0到A3有4位地址,所以可以选择16个存储单元。由D0到D7得知每一个存储单元有8位。

A0到A3的4个地址线经过地址译码选择合适的存储单元,
A0到A3中给定输入通过地址译码器之后得到一个输出确定哪一个存储单元是有效的。

缺点:当存储器的容量是1M时,有20根地址线经过地址译码器译码后得到1M根线,1M根线中每次只有一根线是有效的其他是无效的。

重合法(双译码器法)--把所有的存储单元布局成一个二维的阵列

地址译码驱动电路-重合法.png

将地址分成2部分:行地址(X)和列地址(Y),行列地址分别进行译码,译码后行列地址都是只有一条线是有效的。

在上图中数据线只有一条,每一个存储单元的位数也只有一位,行地址和列地址将所给的地址平分分别进行译码,行地址译码后确定所在的行,列地址译码后确定所在的列,这样就确定了一个存储单元的位置,就可以进行读或者写操作。
使用重合法会有效降低线的条数,芯片的集成度会比较高。

例如:
行地址和列地址都是6位,经过译码之后在行和列的交叉点上的存储单元会被选中,这个存储单元只包括了一个存储元,就可以对这个存储单元进行读出和写入操作。
行地址是0,列地址也是0,行地址译码器经过译码之后只有x0这条线是有效的被选中的,即只有x0条线上的存储单元的信息可以进行读出或者写入,因为列地址是全0所以经过列地址译码器译码之后只有y0线是有效的,当y0线有效时y0周围的两个开关才是打开的有效的,这个时候被x0和y0线选中的存储单元(0,0)的数据线是畅通的,这个时候这个存储单元的数据就可以进行输出。
因为x0线选中了x0线上的存储单元,但是因为所在的y线没有选中,所以数据不可以进行输出到数据线上。

线选法和重合法比较
如果有20根地址线:
采用线选法:20根地址线使用一个译码器进行译码,将会在1M根线进行选择一条线;
采用重合法:20根地址线分为行地址和列地址两部分,由行译码器和列译码器分别进行译码,行译码器和列译码器分别在1K条线中进行选择一条线。

c.随机存取存储器(RAM)

1.静态RAM(SRAM)

aa.存储器的存储元件保存0和1的原理是什么?

使用触发器来保存0和1。

存储元结构图.png

如上图所示:是存储元的结构图,它是使用两个MOS反向器交叉耦合而成的触发器
使用存储元来存储一位二进制信息0或者1,如果一个存储单元为n位,则需要n个存储元才能组成一个存储单元。
T3、T4是负载管,T1、T2是工作管:T1截止,A点为高电位,使得T2管导通,这个时候B处于低电位,B的低电位使得T1更加截止,这是一个稳定状态;T1导通,则A处于低电位,使得T2管截止,这个时候B处于高电位,B的高电位使得T1管更加导通,这是一个稳定状态。并且A与B两点的电位总是相反的,如果假定A点的高电位代表。
T5、T6、T7、T8为控制管或者开门管,由存储元组成存储器时,必须能够控制按地址选择存储元的操作。如果存储元被选中,则X地址译码线和Y地址译码线都处于高电位,这个时候T5、T6、T7、T8四个晶体管都是导通的,输入输出电路I/O以及IO上横线分别与A和B点相连接,这个时候A点和B点的点位状态0或者1就可以输出到IO线上。

bb.基本单元电路的构成是什么?(存储0和1电路、读出和写入电路是怎么构成的)

随机存取存储器-静态RAM的基本电路.png

1.存储0和1的电路
随机存取存储器的静态RAM是利用触发器来保存0和1的
如上图T1~T4构成保存0和1的触发器,T1到T4构成的触发器是一个双稳态的触发器,在它的两端来存储信息,它的两端:一端是触发器的Q端,一端是触发器的非Q端,

2.读出或者写入电路的结构
如上图的T5、T6、T7、T8用于解决对这个存储元件进行读或者写。
T5、T6是行开关,T5、T6都是由行地址选择来进行控制。行地址选择会控制一行的存储元,行地址有效时T5与T6就会导通。
T7、T8是列开关,T7、T8都是由列地址选择来进行控制。列地址选择会控制一列的存储元,T7和T8是一列上的存储元共用的,列地址选择有效时T7、T8就会导通。
只有行地址选择和列地址选择选中的交叉位置才会进行读写操作。

静态RAM一个存储元包括了两部分:存放0和1的电路部分、控制对存储元进行读写的电路部分。

3.对单元电路如何读出和写入:静态RAM基本电路的读操作和写操作

读写操作图同上静态RAM基本电路图。

读操作
读操作时给出行选信号,行选信号控制T5、T6,使得T5、T6打开;给出列选信号,列选信号控制T7、T8,使得T7、T8打开;
之后因为读选择有效,存储在A的数据就会经过晶体管T6送至位线A上,之后数据就会被送至T8晶体管,之后一直送至数据总线上就完成了读操作。
同时在这个过程中T5、T7晶体管也是打开的,所以触发器的非A数据也会被输送,但是到写放大器时数据就会被截至。

写操作
写入时将数据分为两个方向,一个方向写入原数据,另一个方向写入原数据的非。

在静态RAM基本电路图中,有一个写选择电路,与写选择相连的是写放大器,其中一个写放大器是对信号进行取非之后进行输出的,这样保证了在由T1~T4构成的触发器的基本结构中A端与A非端写入的是相反的信号;
如果存储元被选中,行地址经过行译码器之后产生的行地址选择信号有效,使得T5、T6打开,同时列地址通过列译码之后产生的列地址选择信号有效,使得T7和T8打开;
因为要进行写入,写选择信号有效,这个时候两个写放大器导通,数据写入沿着写放大器与写放大器的非两条线分别输入到A和A非中;
因为写放大器的取反保证了A和A非中的信号是相反的。

4.典型RAM芯片的结构是什么样子?静态RAM芯片如何进行读出和写入操作--工作原理?

具体SRAM芯片的外特性结构.png

WE是读写控制信号,低电平进行写操作,高电平进行读操作;对某一个存储单元进行读或者是写要给出相应的WE信号是高电平还是低电平;
CS信号是片选信号,CS为低电平时这个存储芯片被选中;
A0到A9是10条地址线;
IO1到IO4是数据线,每一个存储单元被选中可以读出或者写入4位信号,说明每一个存储单元有4个存储元;

这个存储芯片容量是1K x 4位,一共有4K个存储元,可以将4K的存储元布局成64 x 64的矩阵阵列,通过译码驱动的方式来选择给定的存储单元和存储元。

使用重合法来实现选一次四列
行地址6位、列地址都是4位,经过译码之后在行和列的交叉点上的存储单元会被选中,这个存储单元包括了4个存储元,就可以对这个存储单元进行读出和写入操作。
因为上面存储芯片的数据线有4条,所以在列译码的时候产生的列选择信号要同时控制4列进行输出,才能保证每一个存储元被选中以后可以读出或者写入4位信号。

如下图:

具体SRAM芯片的结构.png

64列分成4组,每一组16列;行地址6位产生0到63一共64个行选信号;
行地址会选择其中的一行,列地址会选中其中的一列,这一列控制4列存储元进行输入输出;
4位列地址产生的16个列选信号分别控制了4组中每一组中的一列,这样在4个组每一组中就会产生1位0或者1的输入输出,4组就会完成4位的输入或者输出。

例如:如何行地址是6个0,列地址是4个0,那么经过行地址译码器第0行就会被选中,第0行所有的单元都会被选中;
经过列地址译码,4个组中每一组中的第0列就会被选中;

在进行读操作时,第0行的每一组的第0列就会被选中,数据就会被输出到相应的数据线上;
在进行写操作时,数据通过IO1到IO4进行输入,读写电路有效,数据通过读写电路写入4个组选中的存储元的A端和非A端。

2.动态RAM(DRAM)

aa.基本单元电路的构成是什么:存储0和1的电路、读出或者写入电路的结构;对单元电路如何读出和写

不同于静态RAM保存0和1时使用的触发器,动态RAM使用电容来保存0和1
电容中如果保存了电荷认为存储的信息为1,电容中没有电荷即没有被充电时认为存储的信息为0。

动态RAM的两种基本单元电路

动态RAM的两种基本单元电路.png

第一种电路--三管动态RAM
信息保存在电容Cg上;T1、T2、T3是控制管,通过这3个控制管进行读出和写入;
读选择线有效时,T2会导通,写选择线有效时,T3会导通,通过T3读出电容的数据或是将外部数据写入电容。

第二种电路--单管动态RAM
信息保存在电容Cg上;缩小了体积,提高了集成度。

三管动态RAM的基本工作过程:读出和写入过程->读出与原存信息相反写入与输入信息相同

读出过程:
在对基本单元电路进行读出时,使得预充电信号有效,预充电信号使得预充电管T4导通,Vdd会通过T4对读数据线进行充电,使得读数据线变为高电平为1;
在读操作时读选择线有效,T2会导通;
如果这个时候Cg没有进行充电保存的信息是0,T1是低电平所以T1不会导通。这个时候读数据线是1,保存的信息是0,在读数据线上读出的信息是1
如果这个时候Cg是被充电保存的信息是1,T1是高电平,所以T1是导通的。这个时候读数据线是1,通过T2和T1的放电使得读数据线变为低电平0,所以在读数据线上读出的信息是0
可以看到:读出与原存信息相反

写入过程:
写入过程时写选择线有效,T3会导通;写数据线会通过T3向Cg进行充电或者放电;
如果写入的信息是1,写数据线是高电平,写数据线会通过T3向Cg充电,Cg中保存的是1;如果写入的是0,Cg会通过T3进行放电,Cg中保存的就是0。
可以看到:写入与输入信息相同

单管动态RAM的基本工作过程:读出和写入过程

如上单管动态RAM的基本单元电路图中,字线是控制线,相应的行被选中时字线控制的T就会被导通,电容就会通过T进行充电或者放电。

读出过程:读出时数据线有电流表示存储为1,没有电流表示存储为0
如果电容中保存的是0,数据线上就不会有电流,如果电容中保存的是1是高电平,数据线上就会有电流;通过数据线上有还是没有电流来判断电容中保存的是1还是0。

写入过程:写入是1,就是对电容进行充电,写入的是0,就是对电容进行放电。

bb.典型RAM芯片的结构是什么样子?动态RAM芯片如何进行读出和写入操作--工作原理?

具体三管动态RAM的芯片结构

具体三管动态RAM芯片结构.png

如上图:每次读出和写入只有一位数据,是一个1K x 1的容量。
地址经过行地址译码器和列地址译码器选中行地址和列地址交叉位置的存储元;
每一个行地址经过译码之后得到的行地址选择都对应两个信号:读选择线和写选在线,读和写使用不同的信号来进行控制,在行地址译码部分参加译码的除了地址部分还有读写控制信号,如果是读信号则读选择线有效,如果是写信号则写选择线有效。

读操作过程:
如果给出的行地址是0,经过行译码之后选中了第0行,并且是读操作。这个时候第0行所有的存储元都被选中,要进行读操作;
如果列地址是0,经过列译码器之后选中了第0列,这个时候第0行和第0列交叉位置的存储元被选中,这个存储元经过读数据线将电容中存储的数据送到读写控制电路上向往进行传输。

写操作过程:
如果行地址是5个1,经过行地址译码器之后第31行被选中,因为是写操作,所以第31行的写选择线被选中,第31行所有的单元都被选中进行写操作。
如果列地址是5个1,经过列地址译码器之后选中了第31列,这个时候31行和31列交叉位置的存储元被选中,数据经过写数据线被写入到选中位置。

上图中的三角形的电子器件的作用:
它是一个刷新放大器,因为是采用电容存储电荷的原理来保存0和1,电容会漏电,经过一段时间之后电容上的信息会消失,所以使用刷新放大器对电容上保存的信息进行存现,所以每经过一段时间都会对给定的存储元中的电容进行刷新。

具体单管动态RAM的芯片结构

具体单管动态RAM芯片结构.png

这是一个16K x 1位的芯片,但是它的地址线只有7根,14位地址是经过两次进行传送的。第一次芯片接收到的是7位行地址,行地址被放入行地址缓冲器中,第2次收到列地址放入列地址缓冲器中。行地址和列地址经过译码之后选中给定的存储单元进行输入输出。IO缓冲器完成输入输出的缓冲。

上图所示芯片的时序与控制电路中:有行选中信号、列选中信号、读写控制信号作为输入产生行时钟、列时钟、写时钟来控制芯片内部的读操作、写操作。

cc.动态RAM为什么要进行刷新,刷新方法?
因为电容十分容易漏电,经过一段时间漏电电容中保存的1就会变为0,经过一段时间如果不对电容中的信息进行再生的话电容信息就会丢失。
对动态RAM进行刷新和行地址有关,和列地址无关,即每一次刷新的是动态RAM中一行所有的存储元。
给出行地址之后行中每一个存储元都会被选中送到读数据线上,在读数据线和写数据线之间加上一个刷新放大器,就可以完成对某一行的全部信息的刷新。

刷新有3种方法:
集中式刷新
就是将刷新集中在一个较集中的时间段进行。
假设存取周期为0.5us,动态RAM中的电容要进行刷新的时间是2ms,即动态RAM中所有的存储元都要在2ms中完成一次刷新操作,以128 x 128矩阵为例:

DRAM集中式刷新.png

前3872个周期,CPU、IO等可以对芯片进行读出写入操作。3872到3999的128个周期专用于芯片的刷新操作,这段时间无论是CPU还是IO都无法对芯片进行读写操作等信息交换,就是芯片是不能用的,这段时间时CPU、IO只能进行等待。

分散刷新

DRAM分散式刷新.png

存储周期变为1us,动态RAM读写周期变长。
图中tm是原来的读写周期,tr专门用于刷新操作,这样将动态RAM读写周期变为原来的两倍;如果是集中式刷新的话,2ms刷新128行,在分散式刷新时,128us刷新完128行,2ms刷新每一行15.6次,刷新操作太频繁、太过度。

分散式和集中式相结合的刷新(异步刷新)
因为2ms要刷新128行,所以每经过15.6us刷新一行;相对于一行来说是集中式刷新,对于整体来说是分散式刷新。

2ms进行一次刷新,15.6us中有0.5us为死区,将刷新安排在指令译码阶段的话,不会出现死区。

3.动态RAM和静态RAM的比较

存储原理:DRAM采用电容存储0和1,SRAM使用触发器存储0和1;
集成度:DRAM每一个存储元包含1个晶体管一个电容,SRAM每一个存储元包含6个晶体管,DRAM集成度较SRAM更高;
芯片引脚:DRAM行地址和列地址可以分别进行传送,地址线的条数可以减少为原来的一半,管脚数也会减少,芯片封装的体积也会减小;SRAM速度快,价格贵,行地址和列地址不会分别进行传送,分别进行传送就要花费时间,芯片引脚数比较多;
功耗:DRAM功耗小,只是需要对电容进行充电;功耗较大;
功耗:DRAM价格低;SRAM价格高,结构复杂;
速度:DRAM速度慢;SRAM速度快;
刷新:DRAM需要;SRAM不需要。

DRAM用于做主存,SRAM用于做缓存,速度快,功耗高、价格贵,没有办法大规模使用,所有将小容量的高速度的SRAM放在CPU和主存之间作为主存信息的缓存

d.只读存储器(ROM)

ROM一般用于保存系统程序或是系统的配置信息,ROM只读存储器只能读出,不能写入,只读ROM具有不易失性,切断电源里面的信息也不会丢失。

将一个给定的地址码加到ROM的地址输入端,就可以在它的输出端得到一个事先存入的确定数据。

ROM的分类:
MROM掩模式:芯片中的数据只能读出不能再进行改变,不能重写。

一次编程只读PROM:只能进行一次性改写,一旦编写完毕,内容是永久性的,无法再进行更改。

多次编程只读EPROM和EEPROM:先擦除原来的信息再利用电重新写入。

e.CPU和存储器之间的连接

aa.存储器容量的扩展

CPU的条数比较多,寻址范围很大,需要多个存储芯片共同组成一个存储器。

1.位扩展

为什么需要位扩展:
位扩展的目的是为了增加存储字的字长。

如何位扩展:比如将1K x 4位的存储芯片组成1K x 8位的存储器:

使用两个1K x 4位的存储芯片组成1K x 8位的存储器,这两个芯片采用相同的片选同时被选中,两个芯片一起输出8位的数据
位扩展就是要将两个芯片当成一个芯片使用,让两个芯片同时工作。为了保证同时工作就是要将两个芯片的CS片选信号用相同的信号控制。

实现:
将10根地址线分别连接在两个芯片的地址线上,将两个芯片4位的输出分别连接在8根数据线上;CS线选和WE读写控制线同时控制这两个芯片。
在片选信号有效时两个芯片被同时选中,当有读写信号时,两个芯片会进行地址译码选中两个芯片中相同的存储元进行数据输出。

两个芯片的地址线是否需要按序的和系统的地址线进行连接?数据线是否需要按序的和系统的数据线进行连接?

2.字扩展

字扩展就是增加存储字的数量,增加存储器的容量。

如何字扩展:比如将1K x 8位的存储芯片组成2K x 8位的存储器:

使用两个1K x 8位的存储芯片组成2K x 8位的存储器,一共11根地址线,8根数据线。将2K存储空间分为两部分,使用11根地址线中的一根进行片选,选择2片存储芯片中的一个进行相应的操作

实现:
地址线A0到A9作为两个存储芯片的地址输入,两个存储芯片8位数据线都可以提供8位数据输出到系统的数据线,CS进行片选选择不同的芯片,WE读写控制线同时控制两个芯片。
两个芯片不可以同时进行工作:将2K存储空间分为两个1K的存储空间,使用11根地址线中的1根进行芯片选择。

3.字位同时扩展

例如:将1K x 4位的存储芯片组成4K x 8位的存储器;

使用8片1K x 4位的存储芯片来完成。

使用2片1K x 4位的存储芯片组成1K x 8位的存储芯片;使用4个1K x 8位的存储芯片组成4K x 8位的存储器。
一共12根地址线,12根地址线的10根分别与4个1K x 8位的存储芯片相连接,进行地址译码选择相应的存储元;12根地址线中的2根根据地址范围进行片选选择4个1K x 8位的存储芯片中的一个进行相应的操作;片选线选中了1K x 8位的存储芯片之后同时控制构成1K x 8位的存储芯片的2个1K x 4位的存储芯片。

bb.存储器与CPU的连接

完成地址线的连接
CPU给出地址,存储器根据CPU所给的地址找到相应的存储单元所在的芯片所在的存储元。
一般是将CPU的地址线的低位送入存储器的地址线中,高位作为存储芯片的选择。

数据线的连接
CPU的数据线的条数可能比存储器的数据线的条数多时就要进行存储器的位扩展,使得存储器输出的数据满足CPU的要求。

读写命令线的连接
将CPU给出的读写线连接到每一个存储芯片上的读写控制端上。
ROM要注意的是只能读不能写。

片选线
由片选线决定这一次的访问在哪一个或者哪几个存储芯片上。

合理选择存储芯片
合理选择RAM、ROM。
用户程序运行、系统程序运行都是运行在RAM中的。
选择时芯片数量尽可能少,片选逻辑尽可能简单。

例1:
CPU的地址总线有16根,8根数据线,用MREQ上面横线作为访存控制信号。存储芯片有RAM:1K x 4 位,4K x 8位,8K x 8位,ROM:2K x 8位,4K x 8位,8K x 8位。要求从6000H到67FFH是系统程序区,从6800H到6DFFH是用户程序区。要求用所给的存储芯片组成一个存储器。

MREQ上面横线:表示低电平有效,CPU的MREQ线是低电平时表示CPU上的地址访问是要访问存储器的,如果是高电平表示CPU的地址访问是要访问IO的。

实现:
写出对应的二进制地址码
根据题目中给出的地址范围写出对应的二进制地址码,根据二进制地址码确定地址空间范围。

上题中:系统程序区的地址空间范围为2K x 8位,用户程序区的地址空间范围为1K x 8位。

确定芯片的数量及类型
根据已经确定的地址空间范围来确定芯片的数量以及类型。

上题中:系统程序区选择1片2K x 8位的ROM芯片;用户程序区选择2片1K x 4位的RAM芯片。

分配地址线
CPU所给出的地址线的低位地址线用于分配给存储芯片,高位地址线用于片选--选择芯片。
根据所选的芯片的大小来确定芯片的地址线的条数;根据题目中要求的地址范围还有芯片所处的地址范围找出片选逻辑。

上题中:
ROM芯片需要的地址线的条数是11条,所以CPU给出的地址线的低11根用于芯片内寻址,CPU给出地址线的高5根用于片选逻辑;
RAM芯片需要10根地址线,所以CPU给出的地址线的低10根用于芯片内寻址,CPU给出地址线的高6根用于片选逻辑;

确定片选信号
可以使用138译码器来完成译码片选逻辑,138译码器有A、B、C端3个输入,8个输出,根据输入的不同得到不同的输出来片选不同的芯片。
138译码器有3个控制端G1、G2A低有效、G2B低有效,3个控制端要有相应的信号输入,才能进行工作。
这个题目中还要注意的是MREQ,只有MREQ低有效时才进行存储器的访问,在进行片选时要注意这一点,要将MREQ信号连接在片选信号上。

上题中:将地址线A11到A13作为3-8译码器A、B、C端的输入;将MREQ连接在3-8译码器的3个控制端的其中一个上,使得MREQ信号低有效时参与到片选中控制片选。

数据线还有读写控制线的连接

最后连接如下:

CPU和存储器的连接1.png

例2:
假设同前,要求:最小的4K为系统程序区,相邻8K为用户程序区。

CPU和存储器的连接2.png

f.存储器的校验

aa.为什么要对存储器的信息进行校验
DRAM或者SRAM受到外界环境的影响使得电容的充电放电或者是触发器的反转,使得存储器中存放的信息出错,因此需要对存储器中的信息进行校验。

合法代码集合:在计算机中保存的、传输的代码中哪些代码是合法的,哪些代码不在代码集合中当它出现了就能确认这个代码是错误的
一个代码(合法代码集合中的代码)具有检错、纠错能力,这个代码应该符合的条件:
编码的检测能力和纠错能力的关系:合法代码集合中,任意两组合法代码之间二进制位的最少差异数有关,差异的位数越多,检错能力和纠错能力就越差。

编码的最小距离:
合法代码集合中任意两组合法代码之间二进制位数的最少差异。
即将合法集合中的合法代码变成合法集合中另外一个合法代码需要改变的最少的二进制位数。
编码的纠错、检错能力与编码的最小距离有关

bb.为了能够校验出信息是否正确,如何进行编码?
cc.纠错或者检错能力与什么因素有关?
dd.检验出信息出错之后如何进行纠错?

e.提高访存速度的措施

采用高速器件
使得内存速度更快、带宽更大、延迟更小;

采用缓存Cache-主存层次结构
将CPU常用的信息放到Cache中。

调整主存结构--增加存储器的带宽

1.单体多字系统
将存储器的存储字长加长

比如CPU字长是16位,将存储器的存储字长设为64位。CPU每一次访问存储器都可以访问出4个机器字长,4个机器字长每一个都是一个机器指令,CPU一次将4个机器取出放到数据寄存器中,要用的时候直接从数据寄存器取值就可以了。

缺点:
CPU要向存储器中写入16位的字,要先将字写入64位的数据寄存器中,再写入存储器中;可能会造成另48位发生错误,也会使得存储器比较复杂。

2.多体并行系统

高位交叉

  1. 高速缓冲存储器
  2. 辅助存储器

为什么存取周期要比存取时间要长?
片选线的CE?
先片选再使能芯片才能工作?CE是怎么使能工作的?

你可能感兴趣的:(2019-07-12)