漫谈计算机组成原理(三)存储器概论

前言

在本系列文章的前两讲中,分别介绍了计算机组成原理这一系列文章的关注点——程序是如何跑起来的,以及系统总线的相关内容,具体能够看个人这两篇文章。在个人我的博客和CSDN上都已经发布了。在前面的这两章中,咱们一直讲,CPU是经过存储器这么一个部件,来获取指令和各类数据的。 可是,从没有更加深刻的去讲解这部分的内容。若是你有过装机的经验或者学过计算机的导论等等这些基础课程,确定会知道,计算机有硬盘、内存条、SSD等等,这些相似的就是咱们这一讲的主角——存储器。 你可能会说,我靠我学了这东西好像也没有什么用啊,好像知道了底层的东西对我并无太大的帮助啊,个人目标仅仅是编写程序啊! 这多是你们对基础内容的误解,之因此这个系列的文章叫作《程序猿内容心法》,就是由于这些内容对于程序猿来讲是十分重要的。**你须要了解存储器的层次结构,由于这将会对你编写的程序的性能产生巨大的影响。**缘由很简单,上面说了,CPU是经过存储器来访问你编写的程序的。你确定知道,CPU通常对于访问内存条的优先级确定是要高于硬盘的,由于内存条更快,因此内存条容量的大小对计算机的性能有着很大的影响。若是你的程序可以直接在内存区,确定执行速度是更快的,性能天然就更好。 顺便提一下,存储这部份内容较多,我分红几个部分来完成写做。第一步帮助读者创建起存储器结构层次的概念,接下来顺着这个层次结构分别介绍主存、高速缓冲存储器、辅助存储的顺序介绍。css

存储器的分类

存储器的分类是一门比较有意思的事情。存储器这个部件通过了几十年的发展,已经变得很是复杂了,从最开始的集成电路,到后面的磁带、光盘、磁盘等等,因此,存储器的分类也是比较复杂的。通常存储器能够按照容量、介质、存取方式、做用等来进行分类,可是比较重要的仍是后面两种。缓存

按照存取方式分类

  • 存取时间与物理地址无关(随机访问)微信

    • 随机存储器(RAM),可读可写随机存储器还能够分红动态的和静态的,动态的是采用电容保存电荷的原理实现的,静态的则是经过触发器或者说是电路方式实现的,这部份内容后面会详细说明。
    • 只读存储器(ROM),只读,通常用做储存系统信息,由于系统信息通常是不能让用户修改的,因此只读的最好,通常喜欢刷机的同窗可能会有更深的理解,所谓的ROM包嘛。
  • 存取时间与物理地址有关(串行访问)dom

    • 顺序存取:磁带,这没什么好说的,听过磁带的确定清楚,若是你想要找到某首特定的歌,须要不停地倒带。
    • 直接存取:磁盘,通常访问磁盘是经过给出的地址,访问磁盘上面的对应位置,从而实现数据的读取。

经过做用分类

  • 主存 所谓主存,就是以前讲的,内存条之类的,CPU主要利用的存储器。yii

  • FlashMemory 闪速存储器,可以在不加电的状况下能长期保持存储的信息。由于主存中的信息在断电之后就没法恢复了,因此闪速存储器颇有意义。ssh

  • 辅存 辅存就是辅助存储器,做为扩展存储资源,就是磁盘之类的大容量的存储器,能够辅助计算机读写数据。svn

  • 高速缓冲存储器(Cache) 高速缓冲存储器是存在于主存与CPU之间的一级存储器, 由静态存储芯片(SRAM)组成,容量比较小但速度比主存高得多, 接近于CPU的速度。关于SRAM后面也会介绍,此时你只须要知道高速缓冲存储器可以进一步提升计算机的性能。实际上,CPU的速度要比全部存储器的速度快上万甚至十几万倍,这就形成了CPU须要等待存储器送来的数据。为了实现CPU和存储器之间的速度匹配,是重中之重,因此才出现了高速缓冲存储器。性能

存储器的层次结构

存储器的分类并不过重要,只须要知道每种存储器的做用便可。重中之重是存储器的层次结构,只有理解好层次结构,才能设计出更棒的程序。 ui

存储器的层次结构如上图所示,是一个金字塔形状的东西。从上到下依次是寄存器、缓存、主存、磁盘、磁带等。寄存器通常存在于CPU内部,寄存器在第一篇文章中已经介绍过,剩下的就是这一节介绍的。设计

  • 对于金字塔的解释 这个金字塔看似简单,但实际上包含的信息不少。最重要也是最著名的,就是“三个特性之间的关系”。
    • 速度:由上到下,由高到低
    • 价格:由上到下,由高到低
    • 容量:由上到下,由低到高

这里还有一个十分重要的概念:存储体系(Memory System)。**两种或者两种以上介质,使用软件、硬件、软硬件结合的方式,造成一个总体,从而使得这个存储结构,在程序猿的角度看,是一种大容量、高速度的存储器,而程序猿只须要编写程序,而不须要知道究竟把程序存到哪一种存储器中。**历史上确实有过这样的一个很是惨的阶段,程序猿须要知道本身编写的程序什么时候、何地、什么状况下放入哪一个存储器中,这简直太使人抓狂了。还好咱们如今已经脱离了这个阶段。

上面的金字塔只是让你们创建起一个宏观的认识,这并非所谓的存储层次结构,真正的存储层次结构分红了两种,一种是缓存-主存结构,另一种是主存-辅存结构。示意图以下:

缓存-主存层次主要是用来解决CPU的速度和主存速度不匹配的问题,刚刚讲过,即使是内存条这样的高速设备,速度和CPU依然不在一个数量级上,因此须要这样一个层次来解决这个问题。而缓存,就是上面说的Cache。 主存-辅存结构主要是解决容量问题,从金字塔的结构中,其实咱们就可以明白,为何到今天,内存条的价格为什么会如此之高,一条DDR4 8G内存,就可以达到七八百RMB的样子,而一块1T的硬盘,也不过四百左右。对于用户来说,若是都用内存条做为存储器,那简直是人傻钱多。因此就须要使用主存-辅存层次来扩展容量。

总结

这些日子有读者向我反应,我写的东西太长了,又都是很是硬的内容,可能读多了就蒙了,因此我尝试用简短的话完成写做,同时缩短文章篇幅。 在本讲中,我重点介绍了存储器的重要性、存储器的两种分类方式以及存储器的层次结构。内容相对简单,你们重点掌握存储器的层次结构,这很是重要。

结语

感谢您的阅读,欢迎指正博客中存在的问题,也能够跟我联系,一块儿进步,一块儿交流!

微信公众号:进击的程序狗 邮箱:roobtyan@outlook.com 我的博客:http://roobtyan.cn

相关文章
相关标签/搜索