存储器基础-种类、容量和寻址方式

本篇是存储器的基础向内容,旨在更好地了解ROM、RAM的结构。

1.主要存储器种类

存储器是用来存储程序和各种数据信息的记忆部件。下图根据存储器的定义和组成、以及根据不同功能和性质对存储器进行分类。后续我会根据分类介绍这些常见的存储器的特点、结构、存储原理功能。
在这里插入图片描述

2.容量相关概念

存储容量:指存储器可以容纳的字节数。
举个例子:存储容量为16MB的存储器,能存放16x220 = 224Byte的数据,也就是 227bit的二进制数。计算容量时,单位通常是Byte。
存储字长:存储器中一个存储单元(一个存储地址)所存储的二进制数据或者二进制指令的位数。
一个字可能有一个字节,也可能多个字节,所以给存储单元赋予地址号的时候,要么按字节编号,要么按字编号。假设上述16MB的存储器1字 = 1 Byte = 8 bit,则
存储单元:通常是存储器读写的最小单位,每个存储单元都有一个地址。注意,还有一个概念叫存储位元,其作用是用来存放一位二进制代码0或1。它们之间的关系就类似Byte和bit。
我们将16MB切分为存储字长为8位的存储单元,那么,用存储容量(224Byte)除以存储字长(1Byte),就得到存储单元的个数,即存储单元个数=224

3.寻址方式

在介绍寻址方式之前,先介绍一下存储器的构成。存储器由三个基本模块构成:地址译码器、存储矩阵和输入输出缓冲器
地址译码器是地址出入的地方,其与存储位元相连的线叫字线。真正的存储器中,字线可能不止一根(例如双译码寻址就有两根),根数多了之后可能还有其他称呼(如行选择线、列选择线),但只要功能上是为了选中某些存储位元,就是字线。
存储矩阵用于存储数据,由存储位元堆叠而成。
数据输出缓冲器则是数据出入的地方,其与存储单元相连的线就是位线。通常位线的根数决定了存储器的存储单元由多少位构成。
在这里插入图片描述

3.1 单译码方式

在这种译码方式中,只有一个译码器,也就是上面图片所示的那样。通过地址线译码得出选通的存储单元(例如与选择线0相连的所有单元),再通过输入输出缓冲器向选中的整行单元写入或读取数据。

这种结构只能用于小容量存储器,因为容量一旦过大,例如1GB的存储器,就需要一个30线-230线译码器,进而需要非常多的门电路,且存储单元结构上呈现一个长条型的不合理结构。双译码方式优化了这一缺点。

3.2 双译码方式

双译码方式中,通常行译码器和列译码器都是相同的位数,使其结构较为方正;对于下面1024x1bit的存储器,如果是单译码方式,需要一个10线-210线译码器,而双译码方式仅需要两个5线-25线译码器,使其门电路数量大大减少。只有当行译码器和列译码器均选中的单元,才能输入或者输出。
在这里插入图片描述

你可能注意到,图中会有非常多的位线,但其实对于单次的输入输出,行译码器和列译码器的字线均选中的存储单元只有一个,有效的位线只有1根,也就是图中的数据线(上面有左右两根是因为这张图我从SRAM的组成结构中截的,这两根线是互补的)。如果要扩展字长,例如8bit,仅需在每个红色位置将8个基本存储单元并联,这样单次读取的有效位线就有8根了。
在这里插入图片描述

3.3闪存转换层

这种译码方式主要用于NAND Flash。NAND Flash的存储位元很小,使得其存储容量很大。但是其特异的结构(之后会专门介绍)且自身存在固有坏块并在擦除和编程中又随机产生坏块,使得其使用上极不稳定。为了提高设备的可靠性应该将这两种操作分散在闪存不同的块中,以避免对某块的过度操作,发明了闪存转换层FTL。
闪存转换层(Flash Translation Layer)简单来讲,就是一种逻辑地址和物理地址的映射。逻辑地址方便使用者使用,每次我们可能只操作一个地址,但内部实际的逻辑地址上的擦写却可能要很多步操作。

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值