计算机存储器简介

   

      计算机完成数据处理后,需要把数据保存到存储器中。计算机又需要从存储器中拿出数据,进行处理。存储器的重要性,不言而喻。

      而且,“冯诺依曼结构”的基本原理是程序存储。存储器的必要性,同样显而易见。

      来看看我们熟悉的存储器,如下是存储容量几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和汇编语言进行介绍。

       不见不散。

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值