存储器的层次结构
其中CPU可以直接和cache和主存进行交互。辅存内的数据需要调到主存内才能被CPU访问,这很好理解,计算机中的IO操作很多,CPU速度很快,如果CPU直接和辅存交互那就会导致每个线程一旦使用IO基本就得进行等待队列被挂起等待。其中主存和cache的数据交换一般是硬件内部自动完成的,而主存和辅存的数据交换是操作系统和硬件完成的,这也很好理解,操作系统需要对底下的硬件进行管理,例如缺页中断,实施页面置换算法等等。
主存和cache 的数据交互是硬件自动完成的,对于所有程序员都是透明的,这很好理解,程序员根本不用管这个,内部就直接实现了算法了。
主存和辅存的交互需要硬件和操作系统共同完成,对应用程序员是透明的,这里的应用程序员应该是操作系统之上,处于用户层的程序员,对于系统程序员来说是可见的。
主存和辅存:实现了虚拟存储系统,解决了主存容量不够的情况,通过操作系统的干涉,使用页表置换算法,缺页中断的措施解决了主存容量不够的情况。
Cache的存在:解决主存和CPU速度不匹配的问题,这也很理解,cache的速度是主存的几十上百倍。
在存储系统的所有分级层次结构中,上一级的内容都是下一级内容的拷贝。即上一级是下一级的缓冲。
cache-主存
主存-副存
TLB快表-页表
…
计算机的存储系统由什么组成?
计算机的存储系统由CPU内部寄存器,cache,主存,外存构成。
多级存储系统的存在降低了存储成本。
cache-主存的速度接近于cache,但是价格缺和主存差不多。主存-副存的速度接近于主存,但是价格缺和副存差不多。通过多级存储系统解决了速度,容量,成本三者之间的矛盾。
存储器的分类
(存储介质分类)
( 1 ) (1) (1)半导体存储器
特征:以半导体器件存储信息
例如:DRAM(MOS管+栅极电容),SRAM(双稳态触发器),闪存(mos管)其中mos管和触发器都是半导体元器件。
( 2 ) (2) (2)磁存储器
特征:使用磁性材料存储信息
例如:机械硬盘
例如:磁带,机械硬盘
( 3 ) (3) (3)光存储器
特征:使用光介质存储信息
例如:光盘
存取方式分类
( 1 ) (1) (1)相联存储器
工作模式:根据内容检索,同时也可以做到根据地址选择内容,其根据内容选择数据的速度很快,
例如TLB快表。
( 3 ) (3) (3)随机存取存储器(Randmo Access memory)RAM
工作模式:根据存储地址选择内容
特征:读写任何一个存储单元需要的时间都相同,即不受存储数据位置的限制
用处:其主要用主存或者cache,主存是具有地址的,访问主存的某个存储单元的时候我们要进行寻址,使用随机存取存储器我们就可以直接访问主存某个存储单元里的数据,就不用从地址开始的地址00000一直检索到对应地址。
( 3 ) (3) (3)顺序存取存储器(Sequential Access Memory)SAM
工作模式:根据存储地址检索内容
特征:读写存储单元需要的时间由存储单元所在位置决定。
例如:磁带
在磁带中,读写头的位置是固定的,磁带在滚轮的带动下会进行运动,读写头会读写当前指向的磁带里的数据,所以读写头要读取的数据和数据的存储位置有关。
( 4 ) (4) (4)直接存取存储器(Direct Access Memory)DAM
工作模式:根据存储地址选择内容
特征:具有随机存取和顺序存储特性。
注:其虽然具有随机存储特性,但是其并不像普通的随机存储存储器一样随机,因为其并不是所有位置的数据都能够立马读出,而不受位置的约束。
例如:机械硬盘
在机械硬盘中,读写磁头是可以动的,所以我们可以直接将读写磁盘先放到想要读取的位置,这也是为什么直接存储存储器具有随机存取的特性,但是其放到对应位置以后还需要进行顺序的将数据读取下来,并且读写磁头大小有限,不是所有位置的数据在读取前都能先放到对应位置,所以直接存取存储器的随机读取特性是不完整的。
读写方式分类(是否可读可写)
( 1 ) (1) (1)读写存储器(Read\write Memory)
特征:可读可写
例如:cache,主存,磁盘。
( 2 ) (2) (2)只读存储器(Read Only Memory)ROM
特征:只能读不能写(事实上,现在的一些ROM也支持写入了)。
例如:CD唱片
特征:可以做到随机读取,有点类似随机存储存储器。
现在的主存一般由ROM和RAM组成。因为我们知道RAM存储芯片一断电就会导致数据全部丢失,但是我们开机的时候是需要将硬盘中操作系统加载到内存中,所以在主板的bios芯片(ROM)里存储了操作系统的开机程序,每次开机cpu都会固定到bios芯片读取指令,完成操系统的装载工作。因为计算机需要bios来完成开机指导工作,将操作系统装到主存,所以主板上的bios芯片在逻辑上也被看作是主存的一般分。有点类似MAR和MDR,但是其关系又比MAR和MDR更加紧密。因为在编址的时候,bios芯片也参与了主存的编址,也就是说通过寻址我们也是能够找到bios的,即ROM。
但是需要注意的是,操作系统是被加载到RAMA中的。
( 1 ) (1) (1) MROM
其通过掩模技术完成,在生产的时候根据客户的要去进行信息的写入,也就是说其也只能够在生产的时候进行一次写入,不支持反复写入,特点是可靠性高(内容不容易被人串改),灵活性差(出了生产以外即无法修改),生产周期长,只适合批量定值。(可以认为掩模技术比较复杂,所以生产周期比较高,一般只有数量比较多的时候才会进行定制,不然不划算。)
( 2 ) (2) (2)PROM
PROM我们可以将其看作就是一个普通的存储器,即我们买来的时候这个存储器里面是没有任何内容的,但是我们可以使用PROM写入器进行写入,重点是我们也只能够写入一次,只不过是由我们用户自己完成这次的写入。
( 3 ) (3) (3)EPROM
EPROM允许用户多次重写,但是其写入的时间很长,并且虽然说支持重复写入,但是实际上重复写入的次数是有限的,根据擦除的方式EPROM又分为以下两种:
( 4 ) (4) (4)FLASH memory
其特点就是可以反复重写,并且重写和擦除的速度较快,但是写的速度比读要慢。我们可以这样理解:因为在写的过程中,可能原来的空间上已经有数据了,而闪存不能直接对数据进行覆盖写入,其需要先擦除然后写入,所以说速度较慢。
并且闪存的集成度和位密度相比RAM来说要高,因为闪存的存储元只需要使用一个MOS管,而即使是DRAM也需要MOS管和栅极电容,存储元体积更小,集成度更高,在相同物理面积下,闪存可以容纳更多的存储元,所以位密度更高。
( 5 ) (5) (5)SSD
固态硬盘的存储芯片用的也是闪存芯片,事实上SSD和U盘没什么区别,只不过固态硬盘内加了控制电路,其特性是速度快,功耗低(这里的功耗我们应该理解为机械硬盘寻址非常慢,需要读写头,定位盘片,扇区等操作,其读写需要花费的时间长,所以耗能就比较高),价格高但是(这里的价格我们应该使用固态硬盘和机械硬盘进行比较),寿命相比机械硬盘要短,因为每个页的擦除次数都是有限的,机械硬盘基本上可以一直使用。ROM中写的速度一般都是比读的速度慢,因为写入可能是要先擦除的。要记住,固态硬盘无法做到覆盖写入,当写入的块有数据时,固态必须先进行擦除。
注:现在一些手机也使用闪存芯片,但是手机使用的闪存芯片更优质,集成度更高,功耗低,价格也更贵。
断电后信息是否丢失
( 1 ) (1) (1)易失性存储器:断电后信息消失
例如:RAM
( 2 ) (2) (2)易失性存储器:断电后信息不消失
例如:磁盘,光盘,ROM
信息是否被破坏
破坏性读出:信息读出后,原存储信息会被破坏,需要进行重写。
例如:DRAM
非破坏性读出:信息读出后,原存储信息不会被破坏。
例如:光盘,磁盘,SRAM。
存储器的性能指标
( 1 ) (1) (1)存储容量
存储容量=存储单元个数 * 存储字长
( 2 ) (2) (2)单位成本
即存储容量中每个bit位需要的价格,例如1000bit的硬盘要1000元,那么该硬盘1bit的价格就是1000/1000也就是1元,那么该硬盘的单位成本就是1元。
( 3 ) (3) (3)存储速度
数据传输率(主存带宽)=数据传输的宽度(存储字长)/存储周期
数据传输率(主存带宽)表示每秒从主存进出信息的最大数量,单位是字/秒,字节/秒,bit/位每秒。
疑惑:主存带宽和数据通路带宽的联系是什么?
什么是存储周期
一个存储周期由存取时间和恢复时间构成,一个存取周期可以存取一个存储字(存储单元?)
存取时间(Ta):存储时间是指从开始一次存储器操作到完成该操作所经历的时间,分为读出时间或者写入时间。这里的时间可以是平均时间。存取时间又可以叫做读写时间或者总线传输时间,这很好理解,因为无论是写入数据还是读出数据,这整个过程都是需要总线作为中间介质来进行传输。
存储周期Tm:存取周期又称为读写周期或者访问周期,指存储器进行一次完整的读写操作需要的全部时间,即连续两次独立访问存储器所需的最小时间间隔。