2015.4.5 随机访问存储器

随机访问存储器分为两种,静态(S)和动态(D),静态(SRAM)比动态(DRAM)要快也要贵,因为SRAM作为高速缓存,DRAM作为主存以及图形系统的帧缓冲区。

1.静态RAM

SRAM的每一个数据位都存在一个双稳态的存储单元中(双稳态:只有两个稳定平衡状态,注意,不仅平衡,而且要稳定平衡,意味着受到一点小小的干扰也不会状态发生改变,如果处于不稳定的状态,则会转化到稳定状态),因此只要有电,数据就绝对不会改变。

2.动态RAM

DRAM采用电容来保存数据位,因此电压的稳定程度代表了数据位的稳定程度。正是因为在物理结构上的差别使得DRAM和SRAM所占空间不同,所用材料不同,价格也就不同,稳定程度也不同。

由于是电容,因此会时不时的漏电,也就需要时不时的刷新。当然,也可以使用纠错码来纠正错误的位。

SRAM和DRAM的物理结构不同导致了两者所占空间的大小,数据存储的稳定程度,以及市场价格。

3.传统DRAM

DRAM中的所有的位被分成超单元,也就是我们俗称的(字节)。分成了一个一个的小单元,然后通过矩形排布来布置这些小单元,这样取得小单元所用的数据的时候,所需要的引脚也会比较少(引脚:一个引脚可以传输一位数据,这里面的引脚是为了传输地址用),通过引脚来传输地址之后我们就可以从DRAM的芯片中读取数据了。

在芯片中如何读取数据呢?每个DRAM芯片连接到存储控制器中,这个电路可以传输地址到芯片中,分别传入RAS和CAS,也就是行号和列号,因为数据芯片的矩阵中,行号了列号确定之后我们就可以唯一的确定一个超单元。

当然,行号和列号的传输是有一个时间差的,先行,因此,在传入行号之后,我们把芯片中的一行数据都拷到芯片中的内部行缓冲区中,然后再从内部行缓冲区中读取那一列的超单元中的数据。

4.存储器模块

对于一个字,因为所组成的字节都分别属于一个超单元,因此分布在不同的芯片上,因此当我传输的时候,需要给不同的芯片传入相同的坐标,取得一个字不同字节中的数据,之后再合并,才能够取得这个字的数据。

这个字中每一个字节的取得从芯片中的内部行缓冲区取得,而合并实在存储控制器中合并。

5.增强的DRAM

在原始的DRAM结构中,我们可以看出其效率稍微有些低,因此可以做多方面的改进

快页模式DRAM(Fast Page Mode DRAM,FPM DRAM)第一个改进是比如我要读取芯片中一行的数据(根据空间局部性,这是很可能的),我没有必要每次都把数据拷到内部行缓冲区中,而可以直接从缓冲区中获得。

扩展数据输出DRAM(Extenged Data Out DRAM,EDO DRAM)。是FPM DRAM的一种增强行驶,允许CAS信号更紧密

同步DRAM(Synchronous DRAM,SDRAM),与存储控制器使用同一个时钟信号,细节不讨论,总之更快。

双倍数据速率同步DRAM(Double Data-rate Synchronous DRAM,DDR DRAM)是对SDRAM的一种增强,使用两个时钟沿作为控制信号,读取速度翻倍。

进化进程:FPM DRAM-EDO DRAM-SDRAM和DDR SDRAM

6.非易失行存储器

如果断电,RAM丢失数据,ROM能够保存数据。

PROM可一次性变成的ROM

EPROM(erase)可擦写的可编程的ROM

Flash非易失,基于EPROM,快速而持久的非一时性存储,基于闪存发明出固态硬盘。

存储在ROM的程序成为固件(firmware)

7.访问主存

数据、地址、指令等通过总线来进行传输,总线根据数据、地址和指令分为数据总线、地址总线、指令总线。指令总线携带指令,数据总线携带数据,地址总线携带地址。

在CPU和I/O桥之间通过系统总线相连,I/O桥和驻村之间通过存储器总线相连。现在哥哥计算机系统的设计罪域总线有不同的设计。但是三条总线相互协作,指令决定要做什么,地址决定在哪儿做,数据决定做什么的内容,三者相互协调,可以从CPU访问主存或者存储数据到主存。

时间: 2024-11-10 15:02:38

2015.4.5 随机访问存储器的相关文章

随机访问存储器、存储器模块数据的存取、局部性_15.09.15/2-第六章(6.2)

了解存储器的层次结构可以帮助程序员更好地了解系统如何将数据在存储器层次中上下移动,从而可以将自己编写的程序的数据放于较高的层次上,使得CPU能够更快地访问它们.  随机访问存储器: S(静态)RAM:其每个位存储在一个具有双稳态的bistable存储器单元里.该存储器单元的特性是只能稳定地保持在两个稳定状态中的任意一种,就像倒立的钟摆只有左边或者右边两种稳定状态一样,这种性质使得SRAM会从任意状态迅速地转移到两个稳定状态之一的状态.由于这种性质的存在,使这种存储器在有电的情况下会永久地保持它的

Java基础知识强化之IO流笔记63:随机访问流RandomAccessFile

1. 随机访问流RandomAccessFile RandomAccessFile类不属于流,是Object类的子类.但它融合了InputStream和OutputStream的功能.支持对随机访问文件的读取和写入. RandomAccessFile的构造方法: 构造方法摘要 RandomAccessFile(File file, String mode)           创建从中读取和向其中写入(可选)的随机访问文件流,该文件由 File 参数指定. RandomAccessFile(St

随机访问文件RandomAccessFile 与 内存映射文件MappedByteBuffer

一.RandomAccessFile RandomAccessFile是用来访问那些保存数据记录的文件的,你就可以用seek( )方法来访问记录,并进行读写了.这些记录的大小不必相同:但是其大小和位置必须是可知的.但是该类仅限于操作文件. RandomAccessFile不属于InputStream和OutputStream类系的.实际上,除了实现DataInput和DataOutput接口之外(DataInputStream和DataOutputStream也实现了这两个接口),它和这两个类系

python list 线性访问和随机访问比较

线性访问速度是随机访问的2倍左右 一下是数组长度和两种访问的时间,单位是秒 数组长度 线性 随机 100 0.01 0.01 1000 0.01 0.01 10000 0.015 0.015 100000 0.02 0.03 1000000 0.1 0.2 10000000 1 2 比较的时候把产生随机数的时间减掉了,长度是一亿的时候程序直接挂了 线性访问 import random a = range(10000) b = 0 for i in xrange(10000): b = rando

MappedByteBuffer高速缓存文件、RandomAccessFile随机访问

说到高速缓存存储,处理读写文件,那就不得不说MappedByteBuffer. 看了好多文章以后写一下自己的总结. 在这里先介绍一下相关的类与方法. 先说一下Buffer.ByteBuffer.MappedByteBuffer这几个类之间的关系. public abstract class Buffer { // Invariants: mark <= position <= limit <= capacity private int mark = -1; private int pos

&lt;顺序访问&gt;&lt;随机访问&gt;&lt;HDFS&gt;

Overview 如果你了解过HDFS,至少看过这句话吧: HDFS is a filesystem designed for storing very large files with streaming or sequential data access patterns. That's to say, "Hadoop is good for sequential data access" 那么第一个问题一定是sequential access VS random access ?

黑马程序员——————&gt; 随机访问流

RandomAccessFile是java输入/输出流体系中功能最丰富的问几十年内容访问类,它提供了众多的方法来访问文件内容,它既可以读取文件内容,也可以向文件输出数据.与普通的输入/输出流不同的是,RandomAccessFile支持“随机访问”的方式.程序可以直接跳转到文件的任意地方来读写数据. 由于RandomAccessFile可以自由访问文件的任意位置,所以如果只需要访问文件部分内容,而不是把文件从头读到尾,使用RandomAccessFile将是更好的选择. 与OutputStrea

java 21 - 12 随机访问流(不属于IO流)

随机访问流: RandomAccessFile类不属于流,是Object类的子类. 但它融合了InputStream和OutputStream的功能. 支持对文件的随机访问读取和写入. public RandomAccessFile(String name,String mode):第一个参数是文件路径,第二个参数是操作文件的模 mode:参数指定用以打开文件的访问模式.允许的值及其含意为: 值 含意 "r" 以只读方式打开.调用结果对象的任何 write 方法都将导致抛出 IOExc

Java API —— IO流(数据操作流 &amp; 内存操作流 &amp; 打印流 &amp; 标准输入输出流 &amp; 随机访问流 &amp; 合并流 &amp; 序列化流 &amp; Properties &amp; NIO)

1.操作基本数据类型的流 1) 操作基本数据类型 · DataInputStream:数据输入流允许应用程序以与机器无关方式从底层输入流中读取基本 Java 数据类型.应用程序可以使用数据输出流写入稍后由数据输入流读取的数据. · DataOutputStream:数据输出流允许应用程序以适当方式将基本 Java 数据类型写入输出流中.然后,应用程序可以使用数据输入流将数据读入. package datastreamdemos; import java.io.*; /** * Created b