欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

编程必备基础知识|计算机组成原理篇(08):存储器

程序员文章站 2023-10-16 17:10:32
计算机基础方面的知识,对于一些非科班出身的同学来讲,一直是他们心中的痛,而对于科班出身的同学,很多同学在工作之后,也意识到自身所学知识的不足与欠缺,想回头补补基础知识。关于计算机基础的课程很多,内容繁杂,但无论是相关书籍还是大学课程,都有点脱离工作。特别地,计算机基础知识体系庞杂,想要从零学习或者复 ......

计算机基础方面的知识,对于一些非科班出身的同学来讲,一直是他们心中的痛,而对于科班出身的同学,很多同学在工作之后,也意识到自身所学知识的不足与欠缺,想回头补补基础知识。关于计算机基础的课程很多,内容繁杂,但无论是相关书籍还是大学课程,都有点脱离工作。特别地,计算机基础知识体系庞杂,想要从零学习或者复习都耗时耗力。

有鉴于此,本系列文章将带你更快的补足编程必备基础知识,涵盖计算机领域三大基础知识:计算机组成原理、操作系统、计算机网络,这些都是大学计算机课程里面最重要的内容。文章对这些内容做了提炼和总结,摒弃了作为程序员不需要掌握的知识。

目的是:

  • 帮助大家形成计算机知识的结构体系
  • 帮助大家理解计算机底层原理
  • 帮助大家在工作实践中借鉴其中的优秀设计

本篇是计算机组成原理之计算机的存储器

欢迎关注、转发、收藏、评论

1.什么是存储器

存储器,顾名思义,是用来储存物质的。在计算机中,这些储存的物质就是数据和指令,有了存储器,计算机就有了记忆功能。

存储器由一些编号的单元所组成,单元的编号叫做地址。打个比方,存储器就像是一个大型仓库,仓库里面有很多个房间存放着货物,每个房间都有自己的房号;而存储器单元好比房间,房间里的货物好比数据和指令,而单元的编号(地址)就好比房间号,我们的计算机就是根据这个地址来存放或取出数据和指令的。

计算机中的全部信息,包括输入的原始数据、计算机程序、中间运行结果和最终运行结果都保存在存储器中。

2.存储器的分类

按存储介质来划分,存储器可分为半导体存储器和磁存储器。其中,半导体存储器存储的元器件是由半导体组成的,常见的如:内存、u盘、固态硬盘等;磁存储器,是由表面涂有磁性材料的存储介质组成的,常见的有:磁带、磁盘。

编程必备基础知识|计算机组成原理篇(08):存储器

按存取方式来分类,可以将存储器分为随机存储器(ram)、串行存储器、只读存储器(rom),

编程必备基础知识|计算机组成原理篇(08):存储器

3.存储器的层次结构

在选取计算机的存储器时,通常需要考虑的因素是存储器的读写速度、存储容量、价格,我们希望读写速度越快越好、存储容量越大越好、价格则越低越好。有一个专门的单位,用来量化存储器的性价比——位价。位价综合地把容量和价格都考虑进去了,它的含义是每比特位的价格,使用位价可以客观地描述存储器的性价比。

编程必备基础知识|计算机组成原理篇(08):存储器

按照位价和读写速度的关系,可以把存储器划分为几个层次:缓存、主存、辅存。

缓存指的是cpu里的寄存器以及高速缓存,速度快,位价高。

主存指的主要是计算机里的内存,速度适中,价格适中。

辅存指的是外部储存设备,如磁盘、u盘、移动硬盘等,速度慢,价格低。

编程必备基础知识|计算机组成原理篇(08):存储器

之前文章里已经提到过,cpu是高速运算的,处理速率极快,而存储器没有cpu快,传输数据和程序到cpu里时速度慢,这会导致cpu经常空转等待数据传输,两者在速度上是不匹配的。理论上,不考虑价格的话,我们肯定希望缓存越大越好,但是由于位价的存在,缓存不可能做的越大越好,因此才有了这个层次结构。

存储器的层次结构也可以使用如下图来表达:

编程必备基础知识|计算机组成原理篇(08):存储器

图示里,cpu与高速缓存是直接通信的,也可以跟主存进行通信。而高速缓存和主存之间也可以相互通信,称之为缓存-主存层次,除了缓存-主存层次,还有主存和辅存之间的通信,这个通信,cpu是不参与的,称之为主存-辅存层次。

缓存-主存层次,是在cpu与主存之间增加一层速度快容量小的cache,目的是解决主存与cpu速度不匹配的问题。有了高速缓存的存在,cpu就可以通过一定的策略,尽可能地去访问这个高速缓存而不是主存,从而有效提高cpu的利用效率以及计算机的运行速度。cpu选取数据时,首先会从缓存中去取,缓存中没有的话,再会去取主存中的。

主存-辅存层次,是在主存之外增加辅助存储器(磁盘、sd卡、u盘等),目的是解决主存容量不足的问题。假设我们运行一个超大型游戏,而内存通常只有8g,此时,就可以把游戏当前使用的数据加载到内存中,把不使用的数据放在辅存中。