计算机存储器又称内存,是一种利用半导体技术做成的电子设备,用来存储数据。电子电路的数据是以二进制的方式存储,存储器的每一个存储单元称做记忆元。
存储器以二进制计算容量,基本单位是Byte:
· 1KiB=1,024B
· 1MiB=1,024KiB
· 1GiB=1,024MiB
所谓存储器,是指用来存储指令或者数据的部件。发展至今,计算机内部往往包含多种不同容量、不同用途的存储器。
所谓存储容量,指的是存储器拥有的字节数。存储器的存储空间会被分成很多个存储单元,每个存储单元的大小通常为 8 个二进制位(也就是 1 个字节,单位用 B 表示),每个单元都有一个唯一的地址。
假设某存储器的存储容量为 64KB,则意味着它有 64 x 1024 = 65536 个存储单元,这些单元的存储地址从 0 到 65535。其中,存储器容量的单位有很多(比如 B、KB、MB 等)
计算机中各存储器的分类标准通常有以下 2 种。
首先,根据 CPU 能否直接访问,可将所有存储器分为内部存储器和外部存储器,CPU 可以直接访问所有的内部存储器,但无法直接访问外部存储器。例如,我们常说的内存条,就是一种内部存储器;而诸如硬盘、U 盘、光盘等,则属于外部存储器。
位于外部存储器中的数据,必须先移动至内部存储器,才能为 CPU 所用。
而根据能否永久地存储数据,又可以将所有存储器细分为以下 2 种类型:
易失性存储器:无法永久地存储数据,一旦突然断电或者关闭计算机,内部存储的数据就会丢失;
非易失性存储器:可以永久地存储数据,即便断电或者关闭计算机,存储的数据也不会丢失。
A:存储器相关基本定义
存储器相关基本定义:目前我们采用半导体器件来承担存储任务,一个半导体触发器由于有0和1两个状态,就可以记忆一个二进制代码关于存储器有如下五个非常重要的概念
- 存储元: 也可称为存储元件和存储基元,用来存放一位二进制信息
- 存储单元: 由若干个存储元组成,能存放多位二进制信息
- 存储体: 许多存储单元可组成存储体,也即存储矩阵
- 存储字: 每个存储单元中二进制代码的组合即为存储字,可代表数值、指令和地址等
- 存储字长: 每个存储单元中二进制代码的位数就是存储字长
主存储器由许多存储单元组成,每个存储单元包含多个存储元,每个存储元存储1位二进制代码0或1,故存储单元可存储一串二进制代码,称这串代码为存储字,而这串代码的位数称为存储字长,存储字长一般是一个字节(8位)或字节的偶数倍
B:存储器的基本结构
存储器基本结构:存储器主要分为
- 主存(内存):CPU可以直接访间;主要存放程序和数据,是计算机实现”存储程序”控制的基础,外存中信息必须加载进主存后CPU才可以访问
- 辅存(外存): CPU不可以直接访问
主存的基本构成如下图所示
基本上主存由三部分组成 :存储体,地址寄存器,数据寄存器
主存储器是存放指令和数据的,并能由 CPU 直接随机存取的随机存储器(RAM)。
地址寄存器(Memory Address Register,MAR)和数据寄存器(Memory Data Register,MDR)有共同的名词 —— 寄存。
- 存储体M:存放二进制信息
- MAR : 存储地址寄存器:用于保存当前 CPU 所访问的内存单元的地址。
- MDR : 存储数据寄存器:用于存放欲写入存储体中的数据,或暂存从存储体中读出的数据。是用于暂时存放 CPU 计算过程中所用到的操作数、结果和信息。
寄存器也是存储器 用来存放数据
一个读取操作就像是从菜鸟驿站拿快递一样,我需要提供取件码给店员(数据地址),然后从货架(存储体)中找到快递,放在柜台(数据寄存器中)我来取走
一个写入操作则和取快递稍微不同,我们需要先给地址寄存器一个地址,然后把数据给数据寄存器,这样主存就会帮我们把数据写入存储体。
存储体里有地址和存储单元,这也是MAR和MDR存取方式,通过MAR找到数据地址,再通过MDR取出存储单元中的数据.
内部原理如下:
那么,什么是存储体呢?我们把存储体放大来看,这里用我画的图做讲解。
存储体由哪些组成
存储体由许多的存储单元组成,每个存储单元里面又包含若干个存储元件,每个存储元件可以存储一位二进制数0/1。
存储单元:
存储单元表示存储二进制代码的容器,一个存储单元可以存储一连串的二进制代码,这串二进制代码被称为一个存储字,代码的位数为存储字长。
在存储体中,存储单元是有编号的,这些编号称为存储单元的地址号。而存储单元地址的分配有两种方式,分别是大端、大尾方式、小端、小尾方式。
存储单元是按地址寻访的,这些地址同样都是二进制的形式。
这个图只显示了存储单元,里面的存储元件忽略不看的话,图中的小方格就是存储单元了,外面最大的矩形就是我们的存储体,存储单元中的数字就是地址了。
对于存储体的组成,这里引用一个形象的比喻:
存储体,相当于一栋大楼,大楼内有很多个房间(存储单元),每个房间又有很多个床位(存储元件),二进制代码0表示一个对象,1表示另一个对象(事实上0表示低电平,1表示高电平)。
比如,CPU 要向地址为2的存储单元(存储体有许多存储单元,每个存储单元对应了一个地址)中写入一条数据,要在地址寄存器为2的地方写入这条数据。
数据在存储体内按地址存储着,存储体有存储单元、存储字、存储字长之分。
- 存储单元:在存储器中有大量的存储元,把它们按相同的位划分为组,这样的一组存储元称为一个存储单元。
- 存储字:一个存储字代表一个二进制数,如存储字为 0011011001111101。
- 存储字长:存储单元中的二进制代码位数,存储字长可以是8位、16位、32位等。
一个地址对应一个存储单元,存储单元按地址存储到 MAR 中,所以,MAR 的位数反映存储单元的个数。存储单元中的数据暂存到 MDR 中,同样,MDR 的位数反映存储单元可存放的位数。
比如,MAR = 4位,反映了存储体共有 2^4 个存储单元。MDR = 16位,反映了存储单元可以存放1个字。
这里的字(word)根据不同的计算机硬件设计,会有不同的字节规定,有可能1个字等于1个字节,也有可能是1个字等于2个字节等。补充:1字节(Byte)等于8位(bit),即1B=8b。
举例说明
把主存储器类比为物流仓库,物流仓库的货架为主存储体、货号为MAR、柜台为MDR。其中货号由货架号、层数以及物品号组成,如10号货架的第3层的5号物品,即 10-3-5 号货物。
工作人员作为整个物流仓库的核心角色是必不可少的,这一角色会接触到货号、柜台。货号需要为工作人员提供每一个货物在物流仓库存放的地址。柜台需要向工作人员提供订单的信息,包括货号、寄往地址等信息,并且它还要记录工作人员完成从货架取货到存放柜台这一过程的结果信息。
货号存储着货物的在物流仓库的具体位置,工作人员在柜台前获取订单。然后,工作人员利用货号从货架中取出货物后把货物暂存到柜台前,在柜台打勾完成这一项订单的工作。
参考资料:https://blog.51cto.com/u_15127663/3697454