在整个计算机系统中,存储系统的地位无疑很重要。这章介绍下计算机内部存储器的组成和工作原理。如下是关于内部存储器的一张简单的思维导图。
首先第一个问题:为什么会有那么多不同种类的存储器呢?存储器无疑是为了存储数据,既然这样那么用全都是一样的或者全都是最好的不就行了吗?这个问题的答案要从构成存储器的物理介质上寻找。目前已知的存储器按照存储介质划分大致分三类:半导体存储器、磁表面存储器、激光存储器。这三种在集成度、容量、体积、存取速率、功耗、价格、维护等方面具有不同的表现。这也是为什么会存在存储器分类的原因。
按照不同介质的特性对存储器进行分类,则它们的访问存储速率是不同的。对计算机存储器的访问速率优先级大致做出了如下的划分:CPU内部通用寄存器、Cache、主存储器、联机磁盘存储器、光盘磁盘等。
寄存器是中央处理器内的组成部分。寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和地址。在中央处理器的控制部件中,包含的寄存器有指令寄存器(IR)和程序计数器(PC)。在中央处理器的算术及逻辑部件中,存器有累加器(AC)。在对寄存器组划分时将它们划分为两种:通用寄存器和专用寄存器。其中通用寄存器是那些你可以根据自己的意愿使用的寄存器,修改它们的值通道不会对计算机的运行造成很大的影响,通用寄存器多用于计算;专用寄存器主要用来反映处理器的状态和运算结果的某些特征。一般认为CPU中的所有寄存器都是专用寄存器,但是也有人认为累加寄存器是属于通用寄存器。
按访问方式可以分为按地址访问存储器、按内容访问存储器;其中按地址访问存储器可以再分为:顺序、随机、直接存储器三类;按内容访问可以分为相联存储器;
主存储器(Main memory),简称主存,又称内存(PC机的内存条)。是计算机硬件的一个重要部件,其作用是存放指令和数据,并能由中央处理器(CPU)直接随机存取。主存储器是由一片或多片存储器配以控制电路构成的。那么如何对主存储器中的储存的数据进行地址编码呢?在此之前先要了解计算机的运行单位及换算机制。
我们都知道目前的计算机能识别的信号量只有0和1,也就是二进制计算机。Bite(位)就是计算机里二进制的意思。它是计算机处理信息的最小单位,也是基本单位组成。
1M=1024KB;
1KB=1024 Byte(字节),;
1 Byte = 8 Bite(位);
1字 = 4 Bite。
紧接上文,计算机主存采用随机存储方式,需要对每一个数据块进行编码,在主存储器中数据块是以word(字)(或字节)来识别的,一个字一个地址,通常采用16 进制表示。
高速缓冲存储器(Cache)其意义是指存取速度比一般随机存取记忆体(RAM)来得快的一种RAM,一般而言它不像系统主记忆体那样使用DRAM技术,而使用昂贵但较快速的SRAM技术,也有快取记忆体的名称。
高速缓冲存储器是存在于主存与CPU之间的一级存储器,它的存储速度比主存快、成本高、容量小。
当CPU发生访问请求时,会先让Cache判断是否包括,如果命中(cache里有请求数据)则直接使用。这个过程有三种方式:直接映射、间接映射、组相联映射。
直接映射下主存和cache的地址转换关系:
转换规则:主存存储器是一个(word)字为一个地址,既1字 = 4位二进制。则每一块的大小为16 B。
为了使主存和cache 方便寻找,产生了区表存储器。
当CPU方式数据访问时,如果对cache使用直接映射判断则会产生如下过程:
1.将主存地址中的区号拿出;
2.若区号在区存储器中,则该数据在cache中,cache命中;若不在,则主存命中,直接从主存中调取所需块;
全相联映射:主存与cache均分成大小相等的块。主存中的任意一块都可以映射到cache中。
全相联映射机制地址转换原则:
为了使主存和cache 方便寻找,产生一个目录表,里面储存着主存地址和cache地址相对应的信息;
取出主存块号,如在目录表中有相等的cache块号,则cache命中,反之则反;
组相联映射:它是将前两种方式折中形成的。组相联映射就是规定组采用直接映射方式而块采用全相联映射方式。
具体方式就是将cache中的块再分组。例如cache有16块,则将每两块分成一组,cache就分成8组。主存同样分区,每区16块,两块一组,分8组;主存任何区的O组只能存到cache的O组,1组只能存到cache的1组,依次类推。组内的块可以任意放(主存中的任一块可以存入cache相应组的任一块中)。
针对CPU的访问,Cache与主存是一对互斥事件;访问Cache的机率为h,则访问主存的机率为1-h,则Cache的失效率为1-h。
例:若Cache的访问周期为t1,主存储器的访问周期为t2,则整个系统平均的访问时间t3为:
T3= h * t1 + (1-h) * t2
关于内部存储器的知识还有介绍不到位的地方,另外关于Cache的淘汰算法也没有介绍,这些知识以后在介绍。这部分内容重点是Cache和主存之间的映射机制是如何进行转地址的。看这部分内容时多看图,方便理解。