计算机完成数据处理后,需要把数据保存到存储器中。计算机又需要从存储器中拿出数据,进行处理。存储器的重要性,不言而喻。
而且,“冯诺依曼结构”的基本原理是程序存储。存储器的必要性,同样显而易见。
来看看我们熟悉的存储器,如下是存储容量几G的U盘:
如下是存储容量4T的硬盘:
事实上,存储器的类型有很多,远远不止这两种。
从不同的角度看,存储器可以分为不同的类型,比如:
分类标准 |
分类1 |
分类2 |
… |
按具体用途 |
主存(内存) |
辅助(外存) |
缓存和闪存等 |
按存储介质 |
磁性 |
半导体 |
光盘 |
按存取方式 |
随机 |
顺序 |
… |
按读写功能 |
RAM |
ROM |
… |
按可保存性 |
掉电丢失数据 |
掉电保留数据 |
… |
把上述分类整理一下,大致如下图所示:
顺便说一下,大众经常说,某某手机内存是256G,这种说法并不准确,这里所谓的手机内存,是ROM,是手机的存储内存,或者叫机身内存,可用来存音频、视频等资料,相当于PC中外存的概念。而真正的手机内存(比如4G容量),是RAM,是指手机的运行内存:
大众常用描述 |
手机中的实际含义 |
对应PC中的实际含义 |
手机内存 |
手机存储内存(ROM) |
外存(如磁盘) |
手机内存 |
手机运行内存(RAM) |
内存 |
我们也常说,某某手机的运行内存是4G, 这和4G信号的手机没有半分钱的关系。前者的G是Giga的缩写,后者的G是Generation的缩写。
存储器结构和材料不同,决定了它们有不同的特点,进而决定了它们有不同的用途。下图是典型的计算机存储器层级:
在之前文章中,我们说过,计算机中处理的是二进制数据,而且详细阐述了使用二进制的原因。基于同样的原因,计算机中存储的也是二进制数据。
下图厕所共有8个坑位,每个坑位要么有人占着,要么没有人占着:
当坑位有人时,记为1,当坑位没人时,记为0. 这8个坑位总共有256(2的8次方)种可能,看下表便知:
8个坑位状态 |
二进制数据 |
十进制数据 |
00000000 |
00000000 |
0 |
00000001 |
00000001 |
1 |
00000010 |
00000010 |
2 |
00000011 |
00000011 |
3 |
… |
… |
… |
11111111 |
11111111 |
255 |
每个坑位,都是一个二进制位,能表示两种状态,要么有人,要么没人。在计算机中,我们把这样的一个坑位叫做一个比特,英文是bit, 是binary digit的缩写, 而binary digit翻译过来就是“二进制位”。
一个厕所坑位,就是一个bit, 其容量就是1bit, 能存1bit的数据,其中存的数据,要么是0,要么是1.
上图总共有8个厕所坑位,对应8个bit, 其容量就是8bit, 能存8bit的数据。在计算机中,8个bit称为一个字节,英文是Byte, 所以上图厕所的存储容量是1Byte, 简记为1B, 即: 1B=8bit.
我们常说,写了1K的word文档,下载了1M的歌曲,拷贝了1G的视频,买了1T的硬盘,这些描述中,默认单位都是字节(B),看下表的换算关系:
存储容量 |
换算关系 |
厕所坑位数 |
1TB |
1024GB |
1024*1024*1024*1024*8 |
1GB |
1024MB |
1024*1024*1024*8 |
1MB |
1024KB |
1024*1024*8 |
1KB |
1024B |
1024*8 |
1B |
8 bit |
8 |
1 bit |
1 bit |
1 |
至此,计算机存储器的逻辑,应该基本清楚了:用坑位来表示并记录数据。
虽然可以用厕所坑位来存储数据,但厕所坑位毕竟太大,不可能把厕所坑位都塞到计算中去,得另想办法。
古老的办法是用下图中的磁芯(magnetic core), 这32个磁芯被套在横竖电线上(也有资料说是横竖斜三根电线),有的磁芯歪向左边(表示0),有的磁芯歪向右边(表示1)。每个磁芯能表示1位二进制数据,即1个bit. 由于电流具有磁效应,所以当电线的电流改变方向时,磁芯就会改变歪向的方向,表示的值也随之变更:
显而易见,每行的8个磁芯表示8个bit, 即1B. 所以,上图存储容量是4B, 这个磁芯存储阵列,比之前的厕所坑位存储好多了。
熟悉linux C/C++程序开发的人,应该都听说过core dump, 它会造成进程崩溃。core dump其实就是进程异常时,保存当时的“内存信息”,便于分析程序异常,这里的core就借用了当年的magnetic core, 都是指存储。
磁芯存储器,是华裔科学家王安发明的,1984年,美国授予王安“电子及信息技术最高荣誉成就奖”,1986年,王安被选为全美最杰出的12位移民之一,获“总统自由勋章”。1988年,王安被列入美国发明家名人堂。不过,后来,磁芯存储器还是败给了时代,败给了半导体集成电路。
在之前文章中,我们介绍了D锁存器,它可以锁存1位二进制数据,如下图所示(E端可以看作是允许写的信号):
我们把8个D锁存器组装在一起,就可以锁存8位二进制数据,也即1B, 把2048*8个D锁存器组装在一起,就可以锁存2KB的数据,这就形成了存储器。我们没法也没有必要画出2048*8个D锁存器,直接来抽象一下, 如下图的RAM所示:
RAM在断电后,数据会丢失,常用作内存。
再来看之前文章用到的ROM,即使断电后,数据也不会丢失。我们不对ROM的内部电路做详细介绍,仅从抽象的角度来看ROM:
可以看到,A11-A0这12根地址线,可以表示4096个不同的存储单元(厕所间),而D7-D0是每个存储单元中的8个二进制数字(厕所间的8个坑位)。类比上面提到的厕所,那么该ROM中对应4096个厕所间,每个厕所间有8个坑位。
我们来向ROM中塞数据,看如下汇编程序:
ORG 0000H
DB 00H
DB 02H
DB 04H
DB 08H
END
这段程序的意思是,在ROM的头4个字节,分别塞入00H, 02H, 04H, 08H这四个数据。
用汇编器工具对上述汇编程序进行转换,得到对应的机器二进制代码,塞入到ROM中后,用proteus查看的结果如下:
在ROM中是按照二进制来存储的,但为了方便显示,一般按照十六进制进行呈现。很显然,有如下表格关系:
第n号厕所间 |
厕所间标号A1A0 |
厕所间坑位值D7-D0 |
0 |
00 |
00000000 |
1 |
01 |
00000010 |
2 |
10 |
00000100 |
3 |
11 |
00001000 |
存储器的类型可能有千差万别,但里面存储数据的逻辑却基本一致。
在之前的自制简易计算机中,还提到过用D触发器组成的4位触发器,它也经常被称为寄存器(由n位触发器构成), 通常存在于CPU中,了解8086 CPU的朋友们,肯定对寄存器这个概念有很深的印象。如下是4个D触发器构成的4-D触发器,即寄存器:
本文主要介绍了存储器相关的一些基础知识,相对简单。
我们再看“冯诺依曼结构”的五大部件(下图红框):
再看之前文章中的自制计算机,其中基本就包含了“冯诺依曼结构”的五大部件:
在“冯诺依曼结构”的五大部件中,最核心的是CPU和存储器(人们常说的芯片通常是指CPU芯片和存储器芯片),而最最最核心的是CPU, 在后续文章中,我们将对CPU和汇编语言进行介绍。
不见不散。
今天的文章计算机存储器简介_存储器的概念「建议收藏」分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/62576.html