【计算机基础】程序猿需要了解的存储器知识

文章目录

  • 前言
  • 1. 存储原理概述
  • 2. 层次化存储结构
  • 3. 存储器的分类
    • 3.1 位置划分:内存/外存
    • 3.2 特征划分:RAM/ROM
    • 3.3 其它常见划分方式
  • 4. 内存原理概述
  • 5. 软考中级考点
    • 5.1 局部性原理与Cache命中率
    • 5.2 主存编址例题
    • 5.3 磁道寻址例题
  • 6. 补充与总结
    • 6.1 常见辅存基本原理
    • 6.2 相联存储器
    • 6.3 虚拟存储技术
    • 6.4 总结
  • 参考资料

程序猿需要了解的存储器知识

前言

在我们学习《计算机组成原理》的过程可谓是环环相扣。在学习前期,我们首先了解了计算机早期历史与冯诺依曼组成结构。了解了基本结构后,接下来我们要相对重点学习CPU基本原理。而在学习CPU基本原理之前,由于CPU里也会用到寄存器这一种存储器,而且内存与CPU也环环相扣,因此我们可以选择事先学习存储器的相关知识。

了解存储器的知识,一方面能为应付如大学期末考、软考等考试奠定知识基础,另一方面对我们的开发/运维过程中,磁盘空间管理能有更底层的理解。

通过本文,让我们一起了解存储器基本原理,计算机里常见的都有哪些存储器。即:计算机是如何存储数据的。

在正式开始学习之前,我们还需要对冯诺依曼结构的特点进行回顾,来体现存储器的必要性:
冯诺伊曼结构特点

  • 计算机由五大部件组成:运算器(ALU)、控制器(CU)、存储器、输入设备、输出设备;其中,现代计算机通常将 ALU 与 CU及其它元件集成在一起,成为CPU
  • 指令和数据以同等地位存储在存储器,可按地址寻访,以二进制表示。

冯诺伊曼结构离不开存储,这也是存储器的必要性。

下面我们开始!

1. 存储原理概述

我们之前学过,计算机的本质是电路。时至今日,晶体管依然是实现计算机计算/存储的电路的基本元件。通过晶体管与其它元件,我们可以实现可以进行简单计算的门电路。通过门电路之间的组合以及层层抽象,我们可以逐渐实现复杂的计算以及存储。【计算机基础】程序猿需要了解的存储器知识_第1张图片

图片来源于参考教程,侵删

如图所示,这是一个可以存储1位信息的锁存器。结合我们学过的数字电子技术知识,当复位RESET为1时,我们可以通过设置位SET设置锁存器的值,当我们重新设置复位SET的值为0时,这个锁存器的电路就"锁"住了最近一次设置SET的值。这便是通过门电路实现存储的基本原理。

当然,实际由于计算机内部有不同的存储需求,以及要考虑局部性问题,实际的存储器种类、原理也各不相同。作为软件开发人员而非硬件工程师,我们不必对各种各样的存储器详细原理深究,但通过简单的基本存储原理的学习与理解,对接下来的存储器以及其它硬件概念的理解也通畅一些。

2. 层次化存储结构

为了解决局部性问题,尽可能适配计算机各部件的速度差异以让计算机整体性能得到提升,计算机一般采用层次化的存储结构。【计算机基础】程序猿需要了解的存储器知识_第2张图片

图片来源于参考教程,侵删

如图所示,这是一个四层存储结构:CPU(寄存器)、缓存Cache、内存与外存的存储结构。其中,涉及的每一层存储都由不同类型的存储器实现。图中已经从上往下描述了各层存储器速度差异,同时,一般情况下,从上往下各层存储器容量也越大。这是由硬件成本决定的。

当然,层次的划分不是绝对的。在早期计算机成本还是很高的时候,部分计算机没有缓存。同时,在一些观点里,并未将CPU的寄存器划分为存储层次的一部分,而只划分为缓存Cache、内存与辅存三层存储结构。

同时,缓存并不是必须,也不是绝对会用到的,即便是缓存技术已广泛应用的当今,缓存也不一定会命中。当没有命中缓存时,CPU就会直接向内存请求数据。因此,在这种情况下,存储结构相对重要的是内存/外存。

3. 存储器的分类

本小节通过位置、特征等维度介绍存储器的分类,意在体现在计算机内部需求中,不同存储器的细微功能区别。

3.1 位置划分:内存/外存

内存
内存也称为主存。

  • 特点:相对于外存,其特点是容量小、速度快
  • 基本原理:通过锁存器、多路复用器等电路,及其它电路连接,可以实现通过地址寻访数据。

常见的内存为RAM。

外存
外存也称为辅存。

  • 特点:相对于内存,外存的容量大、速度慢。
  • 常见外存: 磁盘、磁带、光盘等。

思考
Cache 缓存属于内存还是外存?由于 Cache 不是必要的,一般认为 Cache 也属于特殊的外存。

3.2 特征划分:RAM/ROM

存储器按特征(工作方式)可划分为读写存储器和可读存储器。

RAM
Random Access Memory,既能读取数据又能存入数据。断电后数据就丢失了,重开电源后再重新写入和读取数据。RAM 常用于内存、Cache等。

  • RAM 分类
    • DRAM:Dynamic RAM,动态RAM
    • SRAM:Static RAM,静态RAM

ROM
Read Only Memory,只读存储器,在生产时只写入一次,之后内容只能读出,不能改变。断电后数据也不会丢失。ROM 常用于存储 BIOS 和 微程序控制。

  • ROM 详细分类
    • PROM: Programmable Read Only Memory,可编程的只读存储器,其内容用户可一次性写入,写入后不能再修改。
    • EPROM: Erasable Programmable Read Only Memory,可编程的只读存储器,其内容可以由用户写入,写入后还能紫外线照射方式进行擦除,再由特殊设备写入信息。
    • EEPROM: Electrically Erasable Programmable Read Only Memory, 相比可编程的只读存储器,使用电擦除的方式进行数据改写。

这里还有一个稍微特殊的存储器要介绍一下:
闪存: Flash Memory,类似于EEPROM,特性介于 EEPROM 与EPROM 之间,但速度远快于EPROM。

3.3 其它常见划分方式

访问方式
按访问方式划分:

  • 按地址访问,举例:内存
  • 按内容访问,举例: Cache

寻址方式

  • 随机存储器:RAM
  • 顺序存储器: Squentially Addressed Memory,SAM。如磁带
  • 直接存储器: Direct Address Memory,DAS。介于RAM 和SAM 的一种寻址方式。如磁盘。磁盘的磁道是随机的,但在一个磁道里是顺序寻址。

4. 内存原理概述

上文我们提到过锁存器的原理。内存的原理基于锁存器。但是为什么内存可以寻址呢?

内存是基于锁存器的,我们了解过锁存器可以通过复位键决定是否启用该锁存器,并由数据键输入数据并锁存。那么我们可以将多个锁存器矩阵排列,通过多路复用器来决定操作哪一块具体的锁存器。

多路复用器
多路复用器是一种电路,用于决定目标内存操作块的位置。类似于矩阵的坐标,当多路复用器对应内存行列的值都为某个规定的值,如1时,允许该内存块操作,而这个坐标的表示即为二进制的地址。

内存的集成度决定了其大小,其大小决定了寻址范围。

当然,实际的内存其电路可能不同,涉及的电子元件会多更多,但目标与基本原理是一致的:存储数据、提高效率、增大空间。

5. 软考中级考点

软考中级对计算机存储器相关考点的考查知识点与大学期末考试相当,对考研的同学也有一定参考价值。本章节我们通过一些例题来对存储器相关知识点做一个练习吧。

5.1 局部性原理与Cache命中率

冯诺依曼瓶颈
CPU 与 存储系统间数据传送带宽的限制

为了突破冯诺伊曼瓶颈,科学家与科技工作者们在计算机中引入了Cache。

局部性原理
通常,Cache 比 CPU内部寄存器大很多,比主存小很多,而速度层面仅次于CPU内部寄存器。那么为什么加了缓存之后,程序整体执行效率就提升了那么多了呢?

设 Cache 的访问命中率为 h, t1 表示 Cache 的周期时间, t2 表示主存的周期时间。那么单条指令平均时间T = h*t1 + (1-h)*t2

假设没有 Cache,那么 全为 t2 周期时间。设每执行一条指令 t2 = 100ns, 执行 100 条,总时间 为 10000 ns;

设 h = 90%, 引入 Cache ,t1 = 10 ns。理想状态:全部命中Cache,执行 100 条指令总时间为 :1000ns ;

理论计算平均用时: 90 * 10 + 10 * 100 = 1900ns也比没有引用 Cache 快得多!

空间局部性与时间局部性
细分局部性,还分有空间局部性与时间局部性。Cache 主要为时间局部性。至于空间局部性,举个例子,数组查询效率比链表查询效率要高,就是空间局部性原理。

5.2 主存编址例题

题目描述
内存地址从 AC000H 到 C7FFFH ,问共有多少 K 个地址单元?
如果该内存地址按字(16 bit )编址,由28片存储芯片构成。已知构成此内存的芯片每片有16K个存储单元,则该芯片每片每个存储单元存储多少位数据?

解题
先计算有多少个地址单元:
C7FFFH - AC000H + 1 = 1C000H
1 K = 2^10D , 因此:1C000H / 2^10D = 112 * 2^10即112K个地址单元。

每个单元存储数据位数:
16K 个 存储单元 * 每个单位数据 * 28 片 = 112 K个地址单元 * 每个单元 16 bit ; 因此 位数 = 112 K * 16 / 28 / 16 K = 4位。

5.3 磁道寻址例题

题目描述
设某磁盘的每个磁道划分成11个物理块,每块存放1个逻辑记录。逻辑记录从R0~R10 顺序存放到同一个磁道上。如果磁盘的旋转周期为33ms,磁头当前处在R0的开始处,若系统采用单缓冲区处理这些记录,每个记录处理时间为3ms,则处理这11个记录的最长时间为多少?若对信息进行优化分布后,处理11个记录的最少时间为?

解题
由于采取单缓冲区,即读到的数据先由缓冲区缓存,则处理11个记录的最长时间为:R0~R9 均需要等待1个周期,处理第一个的时间磁头已到了下一个节点,因此,最后一个则会使用1个处理时间,因此:33*11+3=366ms
,也可计算为每个读取并执行:(33+3)ms,最后一个旋转到达并执行需要3ms+3ms,因此:(33+3)*10+6=366ms

优化分布后,第一个处理完成,刚好到达下一个节点,缓冲并执行。依次类推,刚好2圈,因此33*2=66

6. 补充与总结

这一小节补充一些知识,供读者参考。

6.1 常见辅存基本原理

磁盘
磁盘是我们见得比较多的,如今依然经常使用的辅存。我们常在较老的计算机中听到"滋滋滋"的声音通常是磁盘转动的声音。【计算机基础】程序猿需要了解的存储器知识_第3张图片

如图所示,这是一个经典的磁盘,我们可以得知磁盘的大概样貌:像爱迪生的留声机,有一个磁头,通过一圈圈旋转磁盘访问数据。

一些教程上对磁盘的组成原理描述非常专业,但我们非必要不必了解这下专业的硬件名词,我们重点关注磁头、磁道即可:磁盘的控制器通过磁头读写数据,通过一圈圈的转来遍历数据。数据由以磁信号的方式存储在磁盘的一圈圈磁道中。

读写数据原理:电磁信号转换。

因此,磁盘通过转圈圈的方式就能读写数据啦。

光盘
光盘,随着时代的发展,已逐渐淡出公众视野。小时候我们常看的DVD就属于光盘。

光盘通常由光学、电学、机械部件等组成。光盘在计算机中也是由旋转等位移方式读取数据的。

【计算机基础】程序猿需要了解的存储器知识_第4张图片

固态硬盘
固态硬盘如今应用非常广泛,我们有必要了解一下。

固态硬盘,也被称为SSD(Solid State Drive),基于闪存和控制器及技术,采用固态存储芯片阵列作为存储介质的硬盘。与传统的机械硬盘相比,固态硬盘具有更快的读写速度、更低的能耗和更高的可靠性,因而在计算机和移动设备中得到了广泛的应用。

6.2 相联存储器

相联存储器是一种按内容访问的存储器。其工作原理是将数据或数据的某一部分作为关键字,将该关键字与存储器中的每一单元进行比较,找出存储器中所有与关键字相同数据的字。Cache 缓存主要由相联存储器实现。

6.3 虚拟存储技术

虚拟存储技术(virtual)的概念是,将很大程序或数据分成许多小块,全部存储在辅存中。运行时,将需要的程序或数据调入主存中,并将频繁用到或马上用到的数调入高速缓存。程序在运行过程中,只需要及时提供所需处理的程序与数据所需要的空间和资源,即可完成程序整体的执行。而且,这个过程以及对应的程序运行对用户来说是透明的。

这样,通过局部性原理,程序的整体性能得到提升,CPU与主存利用率也得到提升。

简单来说,虚拟存储技术可以让计算机运行看起来比主存要大得多的程序,又由于对用户透明的特性,让我们从用户视角看起来主存好像有一个比实际程序大得多的虚拟存储空间。

举个例子,有些很大的主机游戏,特别是3A大作,运行起来也是用虚拟存储技术的。

6.4 总结

通过本文,我们学习了:

  • 存储器的基本原理——由晶体管门电路及其它电子元件组成的锁存器

  • 存储器分类: RAM/ROM (重点) 、 按访问方式划分:按地址访问,按内容访问;按寻址划分

  • Cache 的作用与局部性原理

  • RAM 为什么可以寻址

  • 了解磁盘、光盘原理

以及需要考试的同学可能会涉及的一些考点及例题。

参考资料

  • 希赛王勇软件设计师教程
  • Youtube计算机科学速成课——BilibiliCrashCourse字幕组搬运
  • 《软件设计师教程》胡圣明等主编

你可能感兴趣的:(计算机基础,linux,运维,服务器)