编程必备基础知识|计算机组成原理篇(08):存储器
计算机基础方面的知识,对于一些非科班出身的同学来讲,一直是他们心中的痛,而对于科班出身的同学,很多同学在工作之后,也意识到自身所学知识的不足与欠缺,想回头补补基础知识。关于计算机基础的课程很多,内容繁杂,但无论是相关书籍还是大学课程,都有点脱离工作。特别地,计算机基础知识体系庞杂,想要从零学习或者复习都耗时耗力。
有鉴于此,本系列文章将带你更快的补足编程必备基础知识,涵盖计算机领域三大基础知识:计算机组成原理、操作系统、计算机网络,这些都是大学计算机课程里面最重要的内容。文章对这些内容做了提炼和总结,摒弃了作为程序员不需要掌握的知识。
目的是:
- 帮助大家形成计算机知识的结构体系
- 帮助大家理解计算机底层原理
- 帮助大家在工作实践中借鉴其中的优秀设计
本篇是计算机组成原理之计算机的存储器
欢迎关注、转发、收藏、评论
1.什么是存储器
存储器,顾名思义,是用来储存物质的。在计算机中,这些储存的物质就是数据和指令,有了存储器,计算机就有了记忆功能。
存储器由一些编号的单元所组成,单元的编号叫做地址。打个比方,存储器就像是一个大型仓库,仓库里面有很多个房间存放着货物,每个房间都有自己的房号;而存储器单元好比房间,房间里的货物好比数据和指令,而单元的编号(地址)就好比房间号,我们的计算机就是根据这个地址来存放或取出数据和指令的。
计算机中的全部信息,包括输入的原始数据、计算机程序、中间运行结果和最终运行结果都保存在存储器中。
2.存储器的分类
按存储介质来划分,存储器可分为半导体存储器和磁存储器。其中,半导体存储器存储的元器件是由半导体组成的,常见的如:内存、u盘、固态硬盘等;磁存储器,是由表面涂有磁性材料的存储介质组成的,常见的有:磁带、磁盘。
按存取方式来分类,可以将存储器分为随机存储器(ram)、串行存储器、只读存储器(rom),
3.存储器的层次结构
在选取计算机的存储器时,通常需要考虑的因素是存储器的读写速度、存储容量、价格,我们希望读写速度越快越好、存储容量越大越好、价格则越低越好。有一个专门的单位,用来量化存储器的性价比——位价。位价综合地把容量和价格都考虑进去了,它的含义是每比特位的价格,使用位价可以客观地描述存储器的性价比。
按照位价和读写速度的关系,可以把存储器划分为几个层次:缓存、主存、辅存。
缓存指的是cpu里的寄存器以及高速缓存,速度快,位价高。
主存指的主要是计算机里的内存,速度适中,价格适中。
辅存指的是外部储存设备,如磁盘、u盘、移动硬盘等,速度慢,价格低。
之前文章里已经提到过,cpu是高速运算的,处理速率极快,而存储器没有cpu快,传输数据和程序到cpu里时速度慢,这会导致cpu经常空转等待数据传输,两者在速度上是不匹配的。理论上,不考虑价格的话,我们肯定希望缓存越大越好,但是由于位价的存在,缓存不可能做的越大越好,因此才有了这个层次结构。
存储器的层次结构也可以使用如下图来表达:
图示里,cpu与高速缓存是直接通信的,也可以跟主存进行通信。而高速缓存和主存之间也可以相互通信,称之为缓存-主存层次,除了缓存-主存层次,还有主存和辅存之间的通信,这个通信,cpu是不参与的,称之为主存-辅存层次。
缓存-主存层次,是在cpu与主存之间增加一层速度快容量小的cache,目的是解决主存与cpu速度不匹配的问题。有了高速缓存的存在,cpu就可以通过一定的策略,尽可能地去访问这个高速缓存而不是主存,从而有效提高cpu的利用效率以及计算机的运行速度。cpu选取数据时,首先会从缓存中去取,缓存中没有的话,再会去取主存中的。
主存-辅存层次,是在主存之外增加辅助存储器(磁盘、sd卡、u盘等),目的是解决主存容量不足的问题。假设我们运行一个超大型游戏,而内存通常只有8g,此时,就可以把游戏当前使用的数据加载到内存中,把不使用的数据放在辅存中。