存储器这个小话题(1)

什么是存储器


存储器, 想必大家都多少接触过, 电脑的硬盘、 内存条、 手机的 ROM、 SD 卡、 microSD卡、 光盘还有古董级别的软盘等等, 都是我们能够说得出来的存储器。 那么存储器是什么, 又是怎么样分类的呢?


存储器是计算机系统(包括嵌入式系统)中的记忆设备, 用来存放程序(二进制可执行文件)和数据。 计算机中的全部信息, 包括输入的原始数据、 计算机程序、 中间运行结果和最终运行结果都保存在存储器中。 存储器实际上有两个单词: 一个是Memory, 另一个是Storage。 开始时 Memory 指的通常就是 CPU 可以直接通过总线访问的随机存取存储器(RAM), 而 Storage 指得就是 CPU 无法直接通过总线访问的非易失性存储器(ROM、 Flash、 硬盘)。 Wiki 百科上还有这么一段话, 可以参考一下:

「Historically, memory has been called core memory, main memory, real storage or internal memory. Meanwhile, non-volatile storage devices have been referred to as secondary storage, external memory or auxiliary / peripheral storage. 」

译:「从传统上来说, memory 被称为核心 memory,主 memory, 实 storage 或者内部 memory。 对比之下, 非易失性 storage 设备则指代二级 storage、 外部 memory 或者辅助 / 次要 storage。


从 Wiki 的这段话中可以看到, 传统意义上的 Memory 就是指 RAM, 等同于 Internal Memory 和 Main Memory, 所以有些地方就把 Memory 翻译成内存。不过随着存储器的发展,这种说法变得并不准确。 比如我们在哈佛结构计算机中的一些 ROM 虽然是非易失性存储器,但与 CPU 是通过总线直接相连的,可以作为 Internal Memory。 这说明一些 storage 也同样可以作为内部存储器使用, 尤其是近些年来 Flash Memory 的发展。 所以我们这里就不区分这两个单词了, 我们对存储器的分类也不会使用这种说法。 这里我们了解一下就可以了, 纯粹当做扩展知识罢了。


存储器的分类


存储器分类的方法有很多, 比如按照存储介质可分为: 半导体存储器、 磁表面存储器、 光存储器、 磁芯存储器(磁芯存储器被半导体存储器取代了, 详细可查阅参考资料 [2])和纸带存储器(这也是老古董了)。 我们计算机里常使用的机械硬盘就属于磁表面存储器, 还有磁带(录音带)、 古董级的软盘等; 光存储器就是常见的光盘了, 实际上光盘的种类也很多: CD-ROM、 CD-R、 CD-RW、 DVD等。 如果对于它们的区别有兴趣的话可以查看参考资料 [3], 这里就不作详细讲解了; 现在大部分的存储器都是半导体存储器, 硬盘也有被固态硬盘(固态硬盘是俗称, 这种叫法是因为在 PC 机上固态硬盘和硬盘使用了相同的接口, 它实际上使用的是快闪存储器)取代的趋势。


内部存储器和外部存储器


按照存储介质对存储器进行分类不是本篇博文要讨论的重点, 下面我们会从内部和外部的角度存储器分为内部存储器(Internal Memory)和外部存储器(External Memory), 同时也让读者重新认识一下我们现在使用的存储器。


内部存储器

内部存储器是「CPU可以直接寻址/访问的存储器」,可以简称为内存,注意内存并不是指在系统内部的存储器。在生活中内存这个词的指向是很混乱的, 比如把硬盘容量叫作内存, TF / SD卡叫作内存卡等。给读者一个建议, 慎用内存这个词, 使用时要指向明确, 尤其是在论文当中。内存包含主存储器(Main Memory, 可以简称为主存)、 高速缓存(Cache寄存器(Register)。 高速缓存和寄存器分别是集成在 SoC 和 CPU 内部, 它们更像是「内部的内部存储器」, 有些地方说内存时不包括高速缓存和寄存器。 但是 CPU 是可以直接访问它们的,所以我就把它归到内存部分了。 我们可以用下图来表示:

                                                                             


从图上可以看到我把 Internal Memory(内部存储器)和 Main Memory(主存储器)的概念分开了。 个人认为这一种分法更加接近我们现有的存储器体系。 主存储器包括 RAM(Random Access Memory, 随机访问存储器)和部分ROM(Read-Only Memory)。 


一般在 PC 机(冯·诺依曼机)中, 主存指的是 RAM, 而一些嵌入式系统中,主存包括ROM。 ROM 可以作为内存也可以作为外部存储器, 关键是看它是否能被 CPU 直接寻址。 


寄存器则是 CPU 的组成部分, 由一些锁存器和触发器构成, 它通常存储一个字(Word, 计算机数据总线位长)的数据或者指令, CPU对其的访问速度非常快。 


高速缓存通常包括一级缓存(L1 Cache)和二级缓存(L2 Cache), 部分 CPU 还有三级缓存(L3 Cache)。 现在的高速缓存基本上都集成在 SoC 内部,而不需要像 RAM 一样需要外部芯片。 高速缓存的目的就是为了解决解决 CPU 运算速度与主存读写速度不匹配的矛盾, 从而提高计算机系统的性能。 它的读写速度要比CPU 寄存器慢, 但是远大于 CPU 对主存的访问速度。 


上述三者访问速度可以表示如下:主存 < 高速缓存 < 寄存器


外部存储器

外部存储器是「不通过总线直接与 CPU 相连, CPU 需通过主存间接访问的存储器。 外部存储器可以简称为外存, 也可以称为二级存储器或者辅助存储器(辅存), 外存可以分为 磁表面存储器、 光存储器 (准确的来说应该是所有的磁表面存储器和光存储器都是外存, 如果有例外的, 欢迎指正)和快闪存储器(Flash Memory, 闪存)一小部分闪存可以作为内存ROM使用, 同样看它是否能被CPU直接寻址。 可以用下图来表示外存的分类:





图中闪存我只写了一种, 但实际上闪存这个家族是十分庞大的, 在《存储器这个小话题(2)》和《存储器这个小话题(3)》二文中我会进行更加详细的分类, 比如 RAM 和 ROM 的分类、 闪存的分类


看完了上述对存储器的分类, 我想你应该大致理解了存储器是一个怎样的东西, 然后我们就可以进一步理解计算机存储器结构了, 下图是计算机的三级存储体系结构图(注意 Cache 的位置可能也可能在 CPU 内部):




2017 年 1 月 24 日

Kilento


参考资料

[1]存储器:http://baike.c114.net/view.asp?id=17491-10D43BD4#l7

[2]磁芯存储器:http://baike.baidu.com/view/2790431.htm

[3]各类光盘的区别:https://zhidao.baidu.com/question/574202211.html?qbl=relate_question_0



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章