首先说一个概念: DMA(Direct Memory Access,直接存储器访问) 是所有现代电脑的重要特色,它允许不同速度的硬件装置来沟通,而不需要依赖于 CPU 的大量中断负载。否则,CPU 需要从来源把每一片段的资料复制到暂存器,然后把它们再次写回到新的地方。在这个时间中,CPU 对于其他的工作来说就无法使用。
存储介质是指能够寄存0,1两种代码并能区分两种状态的介质或元器件。存储介质主要有半导器件,磁性材料,和光盘。
储存元件由巴脑体期间组成的存储称为半导体储存器。现代半导体存储元件都使用超大规模集成电路工艺支撑芯片,像现在的内存条固态硬盘都是半导体储存器。 优点: 半导体存储器具有存取速度快、存储容量大、体积小等优点,并且存储单元阵列和主要外围逻辑电路兼容,可制作在同一芯片上,使输入输出接口大为简化。 缺点: 当电源消失时,所存信息也会随即丢失,他是一种易失性的存储器。 但是近年来Flash闪存的发展,是的半导体存储器作为长期存储器成为了可能。
磁表面存储器是利用涂覆在载体表面的磁性材料具有两种不同的磁化状态来表示二进制信息的“0”和“1”。将磁性材料均匀地涂覆在圆形的铝合金或塑料的载体上就成为磁盘,涂覆在聚酯塑料带上就成为磁带。 磁头是磁表面存储器用来实现“电←→磁”转换的重要装置,一般由铁磁性材料(铁氧体或玻莫合金)制成,上面绕有读写线圈,在贴近磁表面处开有一个很窄的缝隙。 优点: 磁表面存储器的优点为存储容量大、单位价格低、记录介质可以重复使用、记录信息可以长期保存而不丢失,甚至可以脱机存档、非破坏性读出,读出时不需要再生信息 缺点: 存取速度较慢,机械结构复杂,对工作环境要求较高。磁表面存储器由于存储容量大,单位成本低,多在计算机系统中作为辅助大容量存储器使用,用以存放系统软件、大型文件、数据库等大量程序与数据。
1970年左右被淘汰,不提了。
光盘存储器是(ODM Optical Disk Memory)是用于记录的薄层涂覆在基体上构成的记录介质。不同的是基体的圆形薄片由热传导率很小、耐热性很强的有机玻璃制成。在记录薄层的表面再涂覆或沉积保护薄片,以保护记录面。记录薄层有非磁性材料和磁性材料两种,前者构成光盘介质,后者构成磁光盘介质。 优点:存储量很大且盘片易于更换非易失 缺点:满,比磁盘还有慢一个数量级
“随机存取”,指的是当存储器中的数据被读取或写入时,所需要的时间与这段信息所在的位置或所写入的 位置无关。也叫主存,是与CPU直接交换数据的内部存储器。它可以随时读写(刷新时除外),而且速度很快,通常作为操作系统或其他正在运行中的程序的临时数据存储介质。RAM工作时可以随时从任何一个指定的地址写入(存入)或读出(取出)信息。它与ROM的最大区别是数据的易失性,即一旦断电所存储的数据将随之丢失。RAM在计算机和数字系统中用来暂时存储程序、数据和中间结果。 分类: 静态随机存储器(SRAM) 动态随机存储器(DRAM)
只读存储器(ROM)是一种在正常工作时其存储的数据固定不变,其中的数据只能读出,不能写入,即使断电也能够保留数据,要想在只读存储器中存入或改变数据,必须具备特定的条件。按存取信息的不同方式,存储器可以分为随机存取存储器(RAM)和非随机存取存储器。只读存储器就属于非随机存取存储器。 根据编程方式的不同,只读存储器共分为以下 5 种:
如果对存储单元进行读/写操作时,需按其物理位置的先后顺序寻找地址,则这种存储器称为串行访问存储器。
存储器有3个主要性能指标:速度、容量和每位价格(简称位价)。
一般来说,速度越高,位价就越高;容量越大,位价就越低,而且容量越大,速度必越低。
实际上,存储系统体系结构主要体现在缓存-主存和主存-辅存这两个层次结构上
缓存–主存层次 缓存-主存层次主要解决CPU和主存速度不匹配的问题
从CPU角度来看,缓存-主存这一层次的速度接近于缓存,高于主存;其容量和位价却接近于主存,这就从速度和成本的矛盾中获得了理想的解决办法
主存-辅存层次 主存-辅存层次主要解决存储系统的容量问题
主存-辅存这一层次,从整体分析,其速度接近于主存,容量接近于辅存,平均为假也接近于低速、廉价的辅存位价,这有解决了速度、容量、成本这三者的矛盾
从主存-辅存这一层次的不断发展中,逐渐形成了虚拟存储系统 主存的基本组成
存储体由若跟个存储单元组成,存储单元由多个存储元件组成 存储体----存储单元(存储一串二进制串)----存储元件(存储一个0/1) 存储单元:存放一串二进制代码。 存储字:存储单元中的二进制代码 存储字长:存储单元中二进制代码位数。 存储单元按照地址进行寻址 MAR:存储器地址寄存器,反应存储单元个数。保存了存储体的地址(存储单元的编号),反应了存储单元的个数。所以MAR的位数和存储单元的个数有关。 MDR:存储器数据寄存器,反应存储字长(存储单元长度)。保存了要送入CPU中的数据或要保存到存储体中的数据或者刚刚从存储体中取出来来的数据。这个寄存器的长度和存储单元的长度相同。
主存中存储单元的地址分配 如12345678 H 在主存储器中如何进行存储?
1、高位字节地址为字地址(大端大尾)
2、低位字节地址为字地址(小端小尾)
寻址方式及寻址范围计算: 地址线24根,按字节寻址,地址个数 = 2^24 * 1B = 16MB 如果字长16位,按字寻址,地址个数 = 8MW 如果字长32位,按字寻址,地址个数 = 4MW
容量计算
地址线(单向) | 数据线 (双向) | 芯片容量 |
---|---|---|
10 | 4 | 2^10 * 4 = 1K * 4 |
14 | 1 | 2^14 * 1 = 16K * 1 |
13 | 8 | 2^13 * 1 = 8K * 8 |
片选线作用 让某一组芯片同时进行工作。如下图所示,使用32片 16K * 1位的存储器组成 64K * 8 位的存储器。16 K * 1说明每个存储器的数据线为1根,要组成64K * 8 位的存储器,只需使得每次读数据是从8个16 K * 1存储器中各读取一位即可,这时候就可以使用片选线同时选中8个 16K * 1的存储器。
半导体芯片译码驱动方式 1、线选法
从上图可以看出,地址总线为4,数据总线为8,按照字节进行寻址,内存大小为16 * 8 b。通过地址线判断从那个字节进行数据的读取,换句话说,如果地址输入为0000,在只有字线0有效,其他字线无效。 线选法存在的问题: 如果容量稍大,比如为1M * 1 ,则此时有20根地址线,相应的有2^20 = 100万根字线,这样导致芯片字线非常密集,并且很难把芯片的密集程度做的很高。
2、重合法
对于重合法,同样如果有1M * 1的容量,此时X(行)、Y(列)各有十根地址线,对应的字线各有1024条,则公有2048跟字线。
随机存储器(RAM) (一) 静态RAM 1、静态RAM保存0和1的原理是什么? 静态RAM使用的是触发器进行存储数据,触发器由四根晶体管构成,属于双稳态触发器,具有源端和非端用于存储数据,一方为0另一方为1,一方为1,另一方为0。 2、静态RAM基本单元电路的构成是什么?
图中是保存一个0位或者1位的电路。 行地址线选择:相当于重合法图中的Xn,每行有多个基本单元电路,行地址选中一行中所有的基本单元电路。 列地址选择:相当于重合法图中的Yn,每列有多个基本单元电路,列地址选中一列中所有的基本单元电路。 每次读取数据,需要行和列同时被选中。 T1 ~ T4为触发器,T1和T4用于存储0和1,T5和T6用于控制读取哪一端数据。 在实际的芯片中,会将虚框中的内容(T1 ~ T 4, T5和T6)进行列分布而非单独一个,T7和T8属于列开关,行列交叉点会有多个基本单元电路,能读出多位数据。 3、静态RAM对单元电路如何进行读出和写入?
(1)读操作:
读数据时,虽然T5开,T7开,但是非端数据到写放大器就终止了。
(2)写操作
写数据时,左边的写放大器把右边的写放大器的值取非后进行输出,保证A和非A端的值相反。
4、Intel 2114静态RAM芯片的结构及读写操作? 以Intel 2114芯片举例,Intel 2114 外特性如下图:
2114RAM芯片结构示意图
Intel 2114 芯片是由64 * 64位矩阵构成。由图中可知,芯片地址线9根,数据线4根,那芯片内部是如何进行布局的呢?具体布局如下图:
如图所示,地址线共10位,其中行地址线6位,列地址线4位,行字线2^ 6 = 64,列字线 2^ 4 = 16。读取数据时如下所示:
将64列数据分为四组,每组16列。数据读取的时候,如,行地址为000000,列地址为0000,此时,行位线选中第一行中所有的元件,列地址选中每组中的第一列,这样就从每组中读取一位,共读取四位数据。写数据和读数据同理。
(二)动态RAM 1、动态RAM保存0和1的原理是什么? 动态RAM使用电容,电容中保存了电荷为1,电容没有被充电为0。 2、动态RAM基本单元电路的构成是什么?
动态RAM基本电路有两种,如上图左(三管动态RAM)、右(单管动态RAM)。
3、动态RAM对单元电路如何进行读出和写入? (1)左侧电路读写操作 读操作: T4为预充电信号,如果预充电信号有效,T4会被打开,Vdd通过T4对读数据线进行充电,使得读数据线成为高电平,如果是进行读操作,则读选择信号有效,T2打开,如果此时CG中保存的数据是0,也就是CG没有充电,则T1不会导通,则读数据线就会保持高电平,所以,如果保存的数据是0,则在读数据时候,读出的数据是1。如果CG电容中保存的数据是1,T1导通,此时读数据线上的电平通过T2,T1线路进行放电,读数据线低电平,读出的数据为0。所以电容读出的信息和原存的信号是相反的。 写操作: 写入和输入信息相同。如果是写操作,写选择线有效,T3导通 写数据线会通过T3向CG充电,或者CG通过T3进行放电,如果写入的数据是1高电平,写数据线会通过T3向CG充电,CG写入1.如果写入是0,则CG通过T3进行放电,CG放电为0。
(2)右侧电路读写操作 读操作: 如果相应的行被选中,字线连接的T被打开,电容就会通过T进行充电或者放电,如果CG中有电位1,此时放电,则数据线有电流,如果CS中没有充电,则数据线无电流,通过数据数据线有无电流判断CS中保存的是1还是0。 写操作: 写入时,写入1,数据线有电流,进行充电为1。写入0,数据线无电流,放电为0。
4、动态RAM芯片的结构及读写操作? (1) 三管动态RAM(Intel 1103)
三管动态RAM读写操作:
(2)单管动态RAM(Intel 4116)
单管动态RAM外特性:
上图中,大小为16k X 1,所以有14根地址线,图中地址线只有A0 – A6共7根线,此时行地址和列地址分为两次传输,将行地址和列地址分别保存早缓存器中。
单管动态RAM读写操作:
图中的读放大器的工作原理像一个撬撬板电路,一端为0,另一端就是1,一端为1,另一端就是0。 读操作: 如果选中63行,0列。则63行中所有的开关都被打开,如果电容中有电,则读放大器左端为1,则右端为0,此时读出的数据为0。如果电容中没有电,读放大器左端为0,则右端为1,此时读出数据为1。 写操作: 如果如果选中63行,0列。写入1,读放大器右端为1,左端为0,写入0。如果写入0,读放大器右端为0,左端为1,写入1。 以上电容中实际数据和写入读出数据相反,但是读出和写入的数据相同。
三管动态RAM和单管动态RAM电路比静态RAM电路多出放大器,放大器所用:电容存在漏掉,需要刷新放大器没过一段时间对每一列上的电容进行刷新重现。
5、动态RAM为什么要进行刷新,刷新方法是什么? 由于动态RAM使用电容存储信息,电容容易漏电,经过一段时间,电容漏电,会导致数据有1变为0,。动态RAM刷新只和行地址有关,和列地址无关,每次刷新的是一行中的所有基本电容电路。给出行地址,某一行被全部选中,这个行上所有电容中的信息都会被送到读电路,如果在读数据线和写数据线之间增加一个刷新放大器(每一列都加),就会完成对一行数据的刷新。
(1) 集中刷新:以128 * 128矩阵为例 首先主存储器的存储周期 为0.5us。
上图中的集中式刷新:每隔2ms对128行进行全部刷新,存取周期为0.5us,所以刷新每行也需要0.5us,2ms内,刷新需要64us。在这段死区内,CPU无法对动态RAM进行读写操作。
(2)分散刷新:以128 * 128矩阵为例
上图的分散式刷新:延长存取周期为正常存取周期的两倍(0.5us * 2 = 1us)。每1us对其中的一行进行刷新,128us刷新全部的128行。虽然没有死区,但是刷新过于频繁,并且延长了CPU的读写周期。
(3)分散集中相结合:以128 * 128矩阵为例
这种方式存取周期为0.5us,在集中式刷新中,每隔2ms对128行进行全部刷新,2ums= 2000us,即如果平均分到每行,则每15.6um刷新一行。若将刷新安排在指令译码阶段,就不会出现死区。
(三)静态RAM和动态RAM比较
DRAM用于做主存,SRAM用于主存和CPU之间的缓存。这样就可以降低成本同时加快访问速度。
只读存储器ROM (一)只读存储器发展历史 早期的只读存储器,在厂家就写好了内容,无法修改。 改进1:用户可以自己写,一次性修改。 改进2:可以多次写,能对信息进行擦除。 改进3:电可擦写,特定设备。 改进4:电可擦写,直接连接到计算机上。 (二)只读存储器(ROM类型) 1、掩模 ROM ( MROM )
行列选择线交叉处有 MOS 管为“1” 行列选择线交叉处无 MOS 管为“0”
2、PROM (一次性编程)
熔丝断为 “0” 熔丝未断为 “1”
3、EPROM (多次性编程 )
G:栅极 S:源 D:漏 使用紫外线进行擦洗
D 端加正电压形成浮动栅,S 与 D 不导通为 “0”。 D 端不加正电压不形成浮动栅,S 与 D 导通为 “1”。
4、EEPROM (多次性编程 )
使用电擦写,可局部擦写,也可全部擦写。
5、Flash Memory (闪速型存储器)
第三种EPROM价格便宜,集成度高。 第四种EEPROM,电可擦洗重写。 Flash Memory比 EEPROM快,具备 RAM 功能。
存储器容量的扩展 1、位扩展(增加存储字长)
上图为用两个 1k * 4 位存储芯片组成一个1K * 8位的存储芯片。在读取数据的时候,通过cs片选线同时选中两个芯片,将每个芯片中的四位组成8位传送到数据线上。
2、字扩展
图中是将连个1k * 8的存储芯片组成一个2k * 8的存储芯片。共需要11根地址线 ,8根数据线,其中10根地址线选中具体的一个地址,第十根地址线用作片选线,当第十根为0时候,使用芯片1,当第十根为1时候,使用芯片2。
3、字和位同时扩展
用8片 1K * 4位的芯片组成4K * 8位的芯片。其中有12根地址线,8根数据线,其中两根地址线作为片选线,一个片选地址选中两片芯片。