Hi,我是小余。 本文已收录到 GitHub Androider-Planet 中。这儿有 Android 进阶生长知识系统,关注大众号 [小余的自习室] ,在成功的路上不走失!

前言

生活中经常听到这句话“一分钱一分货,哪有那么多又便宜又好用”,在计算机存储系统中,也是如此,存储速度越快的,也就越贵,并且是呈指数的贵。计算机存储呈如下金字塔排布。

理想情况下,咱们肯定期望具有无限大的内存容量,这样就能够立刻拜访任何一个特定的机器字,但咱们不得不认识到有或许需求构建分层结构的存储器,每一层次容量都要大于前一层次,但其拜访速度也要更慢一些。

计算机组成原理系列(三):计算机存储器结构体系详解

你是不是经常被以下名词弄得晕头转向。ROM/RAM/DRAM/SRAM/SDRAM/DDR SDRAM等等,下面,我尽力以上图为参阅,从上到下,说明各个层次存储器的特色和差异,并对它们的作业原理做一些扼要的说明

1.寄存器(Register

寄存器是CPU中的一部分。它是一个高速存贮部件,能够用来暂存指令、数据和地址。每个CPU中有多个寄存器,例如8086CPU中含有14个寄存器。

寄存器是CPU的内部组成单元,是CPU运算时取指令和数据最快的当地。它能够用来暂存指令、数据和地址。在CPU的控制部件中,包括的寄存器有指令寄存器(IR)和程序计数器(PC)。CPU的算术逻辑部件中,包括的寄存器有累加器(ACC)。 下图中蓝色小框里边,满是寄存器。

计算机组成原理系列(三):计算机存储器结构体系详解

2.高速缓存(Cache)与主存

2.1 引入cache的意图

计算机在运行程序时,首先将程序从磁盘读取到主存,然后CPU按规则从主存中取出指令,数据并履行指令,但是直接从主存(一般是DRAM)中读写是很慢的,所以引入了高速缓存(Cache)。

在程序运行前首先会企图将指令,数据从主存中读取到Cache中,然后在程序履行时直接拜访Cache,假如指令和数据能够从Cache中读取到,那么就说是“射中(hit)”,反之便是“不射中(miss)”,miss情况下需求从主存中读取指令或许数据,这样会直接影响CPU的性能,所以射中率对CPU来说至关重要。

现代处理器一般有三层cache,别离称为L1 cache、L2 cache、L3 cache。L1 cache离CPU核最近,存储信息的读取速度挨近CPU核的作业速度,容量较小,一般分红I-cache和D-cache两块,别离存储指令和数据;L2 cache比L1更远,速度慢一些,但是容量更大,不分I-cache和D-cache;L3更慢、更大,现在流行多核处理器,L3一般由多个处理器核共享,而L1、L2是单核私有的。

计算机组成原理系列(三):计算机存储器结构体系详解

实际上cache是一个广义的概念,能够以为主存是磁盘的cache,而CPU内cache又是主存的cache,运用cache的意图便是伪造出一个容量有低层次存储器(如磁盘)那么大,而速度又有寄存器(如通用寄存器)那么快的存储器,简略来说就要让存储单元看起来又大又快

2.2 cache的理论基础

cache之所以能work,首要根据两个认识,即程序运行时数据具有时刻局部性空间局部性

时刻局部性是指一个数据假如当时被运用到,那么接下去一段时刻它很或许被再次用到;空间局部性是指一个数据假如当时被运用到,那么接下去一段时刻它周围的数据很或许也会被用到,比方数组。

2.3 Cache的组成方法

cache容量较小,所以数据需求依照必定的规则从主存映射到cache。一般把主存和cache分割成必定巨细的块,这个块在主存中称为data block,在cache中称为cache line。 举个比方,块巨细为1024个字节,那么data block和cache line都是1024个字节。当把主存和cache分割好之后,咱们就能够把data block放到cache line中,而这个“放”的规则一般有三种,别离是“直接映射”、“组相联”和“全相联”。

直接映射

直接映射选用“取模”的方法进行一对一映射。举个比方,假如cache中共有8个cache line,那么0、8、16、24…号data block会被映射到0号cache line中,同理1、9、17….号data block会被映射到1号cache line中,详细能够参阅下面的联系图。

计算机组成原理系列(三):计算机存储器结构体系详解

组相联:

直接映射中主存中的每一个data block都有一个确认的cache line进行映射,这是有缺陷的。当程序连续读取0、8、0、8号data block的数据时,因为只要一个cache line供映射,所以当第二次读取0号block时,第一次读到cache中的0号block早被顶替出去了,这时候又会产生miss,miss会极大地影响履行功率。

为了处理上面的问题,提出运用“组相联”的方法。组相联的主存-cache对应联系见下图。

计算机组成原理系列(三):计算机存储器结构体系详解

根据上图咱们很容易发现比起直接映射,组相联翻倍了block能够映射的cache line的数量,图上数量为2,咱们称每两个cache line为一个cache set。

全相联

全相联是极端的组相联,即cache只要一个cache set。每一个data block都能够存进任何一个cache line。下图是对应联系。

计算机组成原理系列(三):计算机存储器结构体系详解

2.4.RAM与ROM

计算机中按存储类型划分为随机存储器(Random Access Memory, RAM)和只读存储器(Read Only Memory, ROM)

  • (1)随机存储器(Random Access Memory, RAM)

    RAM是一种可读/写存储器,其特色是存储器的任何一个存储单元的内容都能够随机存取,并且存取时刻域存储单元的物理位置无关。

  • (2)只读存储器(Read Only Memory, ROM)

    望文生义,ROM只能对其存储的内容读出,不能对其重新写入。因而,一般用它寄存固定不变的程序、常数、汉字字库等。寄存在ROM设备中的程序一般称为固件(firmware)。比方咱们计算机的BIOS,便是寄存在ROM中的。   随着半导体技术的发展,出现了可编程只读存储器(Programmable ROM, PROM)、可擦除可编程只读存储器(Erasable Programmable ROM, EPROM)及用电可擦除可编程只读存储器(Electrically Erassable Programmable ROM, EEPROM)。近年来还出现了闪速存储器(Flash Memory),它根据EEPROM。

高速缓存和主存都是RAM(Random-Access Memory,随机拜访存储器),它分为静态的(SRAM)和动态的(DRAM),别离对应高速缓存和主存。

SRAM

SRAM只要贮存器坚持通电,里边贮存的数据就能够坚持不变。咱们也把它叫做双安稳态,即便有干扰,当干扰消除的时候,电路就会恢复安稳值。它的每个单元都是由六个晶体管电路来实现。如下图。

计算机组成原理系列(三):计算机存储器结构体系详解

DRAM

DRAM芯片中的单元被分红d个超单元,每个超单元都由w个DRAM单元组成。一个d*w的DRAM一共便是存储dw位的信息了。(在这儿我觉得《深化了解计算机原理》的作者翻译有问题,本书许多当地的翻译都让人读的不行顺利,这儿的有三个‘单元’,其实能够彻底还另外一种说法,简略的说便是一个块被分红d个组,每个组都是w个DRAM单元。)超单元被组织成r行c列的长方形阵列,这儿d=rc。每个超单元都有形如(i,j)的地址,这儿i表明行,j表明列。如下图。

计算机组成原理系列(三):计算机存储器结构体系详解

如上图,每个RDAM芯片被连接到某个称为存储寄存器的电路,它的2个addr引脚,携带2位的行和列超单元引脚。当要拜访一个超单元时,行地址i称为RAS(Row Access Strobe,行拜访选通脉冲)恳求。列地址j称为CAS(Column Access Strobe,列拜访选通脉冲)恳求。两者共享相同的DRAM地址引脚。详细读取过程如下图。

计算机组成原理系列(三):计算机存储器结构体系详解

DRAM每个单元是由一个电容和一个拜访晶体管组成的,每一位存储便是对一个电容充电。使用电容内部存储电荷的多少来代表这一位是0还是1。但是因为电容有漏电的现象,当有干扰存在时,或许会导致电压被扰乱,从而使数据丢掉。所以它需求周期性的充电。因为多种原因导致的漏电,DRAM单元会在10~100毫秒时刻内失去电荷。例如因为电容暴露在阳光下会导致电压的改动,使用这一特性,数码相机和摄像机的传感器本质便是DRAM的单元阵列。下表是SRAM和DRAM的对比。

计算机组成原理系列(三):计算机存储器结构体系详解

ROM与闪存(flash memory)

ROM(Read OnlyMemory,只读存储器)有的类型是能够读也能够写,但是因为历史原因,统称为只读存储器。它寄存的数据非常安稳,断电后所存的数据也不会改动,它的结构相对较简略,读出方便,因而常用于存储各种固定程序与数据。寄存在ROM设备中的程序一般称为固件(firmware)。比方咱们计算机的BIOS,便是寄存在ROM中的。

PROM(ProgrammableROM,可编程ROM) 只能被编程一次。PROM的每个存储器单元有一种熔丝,它只能用高电流熔断一次。

EPROM(ErasableProgrammable ROM,可擦写可编程ROM)有一个通明的石英窗口,答应光到达存储单元。紫外线光经过窗口照射进来,EPROM单元就被清楚为0。EEPROM(Electrically Erasable ROM,电子可擦写ROM)类似于EPROM,但是它不需求一个物理上独立的编程设备,因而能够直接在印制电路卡上编程。

3.磁盘

磁盘包括硬盘和软盘,这儿咱们以硬盘为例,硬盘是咱们最长接触到的存储器之一,拆开后它就长下面这个姿态

计算机组成原理系列(三):计算机存储器结构体系详解

假如把它的结构图花下来,它便是下面这个姿态的。它是由盘片、磁头、盘片主轴、控制电机、磁头控制器、数据转换器、接口、缓存等部分组成的。

计算机组成原理系列(三):计算机存储器结构体系详解

下面介绍最重要的几个概念,扇区、磁道、柱面、盘面。

1、盘面

硬盘的盘片一般用铝合金材料做基片,高速硬盘也或许用玻璃做基片。硬盘的每一个盘片都有两个盘面(Side),即上、下盘面,一般每个盘面都会使用,都能够存储数据,成为有用盘片,也有极个别的硬盘盘面数为单数。每一个这样的有用盘面都有一个盘面号,按次序从上至下从“0”开端顺次编号。在硬盘系统中,盘面号又名磁头号,因为每一个有用盘面都有一个对应的读写磁头。硬盘的盘片组在2~14片不等,一般有2~3个盘片,故盘面号(磁头号)为0~3或 0~5。

2、磁道

磁盘在格局化时被划分红许多同心圆,这些同心圆轨迹叫做磁道(Track)。磁道从外向内从0开端次序编号。硬盘的每一个盘面有300~1 024个磁道,新式大容量硬盘每面的磁道数更多。信息以脉冲串的方法记载在这些轨迹中,这些同心圆不是连续记载数据,而是被划分红一段段的圆弧,这些圆弧的角速度相同。因为径向长度不相同,所以,线速度也不相同,外圈的线速度较内圈的线速度大,即相同的转速下,外圈在相同时刻段里,划过的圆弧长度要比内圈划过的圆弧长度大。每段圆弧叫做一个扇区,扇区从“1”开端编号,每个扇区中的数据作为一个单元同时读出或写入。一个规范的3.5寸硬盘盘面一般有几百到几千条磁道。磁道是“看”不见的,仅仅盘面上以特别方法磁化了的一些磁化区,在磁盘格局化时就已规划结束。

3、柱面

一切盘面上的同一磁道构成一个圆柱,一般称做柱面(Cylinder),每个圆柱上的磁头由上而下从“0”开端编号。数据的读/写按柱面进行,即磁头读/写数据时首先在同一柱面内从“0”磁头开端进行操作,顺次向下在同一柱面的不同盘面即磁头上进行操作,只在同一柱面一切的磁头全部读/写结束后磁头才转移到下一柱面(同心圆的再往里的柱面),因为选取磁头只需经过电子切换即可,而选取柱面则必须经过机械切换。电子切换相当快,比在机械上磁头向附近磁道移动快得多,所以,数据的读/写按柱面进行,而不按盘面进行。也便是说,一个磁道写满数据后,就在同一柱面的下一个盘面来写,一个柱面写满后,才移到下一个扇区开端写数据。读数据也依照这种方法进行,这样就提高了硬盘的读/写功率。 一块硬盘驱动器的圆柱数(或每个盘面的磁道数)既取决于每条磁道的宽窄(相同,也与磁头的巨细有关),也取决于定位组织所决议的磁道间步距的巨细。

4、扇区

操作系统以扇区(Sector)方法将信息存储在硬盘上,每个扇区包括512个字节的数据和一些其他信息。一个扇区有两个首要部分:存储数据地点的标识符和存储数据的数据段。

在开始的时候,将每个磁道都是分为数目相同的扇区的,扇区的数目都是由最靠近里边的磁道的扇区数来决议的。为了确保每个磁道具有固定的扇区数,那么越往外,它的数据密度就会越低,造成磁盘空间的浪费。现代大容量磁盘运用了一种称为多区记载的技术,说白了便是使用柱面,把相邻的几个柱面分红一个区,(盘面上的磁道都是一个个同心圆,咱们将这些同心圆分组,相邻的几个同心圆为一组,扩展到柱面,也是这样分。)一个区中的每个柱面中的每条磁道都有相同数量的扇区,这个扇区的数量是由该区中最里边的磁道所包括的扇区数所确认的。

磁盘操作

磁盘用读/写头来读写存储在磁性外表的位,而读写头连接到一个传动臂一端。经过沿着半径轴前后移动这个传动臂,驱动器能够将读/写头定位到盘面上的任何磁道上。这样的机械运动称为寻道。

计算机组成原理系列(三):计算机存储器结构体系详解

在传动臂末端的读/写头在磁盘外表高度大约0.1微米处的一层薄薄的气垫上飞翔,速度大约是80km/h。

磁盘以扇区巨细的块来读写数据。对扇区的拜访时刻有三个首要的部分:寻道时刻、旋转时刻和转送时刻。在拜访一个磁盘扇区时,时刻首要花在寻道时刻和旋转时刻,并且寻道时刻和旋转时刻根本持平。

5.闪存(flash)和固态硬盘(SSD)

闪存(flash memory)是一类非易失性存储器,根据EEPROM,能够对块的存储器单元进行擦写和再编程。任何闪存器件的写入操作只能在空或已擦除的单元内进行,所以在大多数情况下,在进行写操作实现必须先履行擦除。闪存的存储单元为三端器件,与场效应管有相同的名称:源极、漏极和栅极。如下图。

计算机组成原理系列(三):计算机存储器结构体系详解

Flash咱们分为NOR和NAND,这两者的差异是什么呢?NAND型闪存的擦和写均是根据地道效应,电流穿过浮置栅极与硅底层之间的绝缘层,对浮置栅极进行充电(写数据)或放电(擦除数据)。而NOR型闪存擦除数据仍是根据地道效应(电流从浮置栅极到硅底层),但在写入数据时则是选用热电子注入方法(电流从浮置栅极到源极)。NOR的读速度比NAND稍快一些。NAND的写入速度比NOR快许多。因为NAND的擦除单元更小,相应的擦除电路更少。而 大多数写入操作需求先进行擦除操作。所以NAND的4ms擦除速度远比NOR的5s快得多。

计算机组成原理系列(三):计算机存储器结构体系详解

参阅资料

《深化了解计算机系统》

blog.csdn.net/hguisu/arti…

计算机系统之存储器系统结构

blog.csdn.net/weixin_4170…

blog.csdn.net/weixin_4359…

blog.csdn.net/iva_brother…

blog.csdn.net/ccz4854/art…

计算机系统结构-cache高速缓存