• 存储器层次结构


    存储技术

    随机访问存储器

    存储器是由许多触发器或其他记忆元件构成的用以存储一系列二进制数码的器件。若字长为n位,则一个存储单元内将含有n个记忆元件或记忆单元。存储器内的记忆单元有规则地排列成m×n的矩阵形式。

    存储单元的内容可按需随意取出或存入,且存取的速度与存储单元的位置无关的存储器。这种存储器在断电时将丢失其存储内容,故主要用于存储短时间使用的程序。 按照存储单元的工作原理,随机存储器又分为静态随机存储器(英文:Static RAM,SRAM)和动态随机存储器(英文Dynamic RAM,DRAM)。

    静态存储单元是在静态触发器的基础上附加门控管而构成的。因此,它是靠触发器的自保功能存储数据的。
     
    动态RAM的存储矩阵由动态MOS存储单元组成。动态MOS存储单元利用MOS管栅极电容来存储信息,但由于栅极电容的容量很小,而漏电流又不可能绝对等于0,所以电荷保存的时间有限。为了避免存储信息的丢失,必须定时地给电容补充漏掉的电荷。通常把这种操作称为“刷新”或“再生”,因此DRAM内部要有刷新控制电路,其操作也比静态RAM复杂。尽管如此,由于DRAM存储单元的结构能做得非常简单,所用元件少,功耗低,已成为大容量RAM的主流产品。
     
     

    磁盘存储

    磁盘存储器(magnetic disk storage),以磁盘为存储介质的存储器。它是利用磁记录技术在涂有磁记录介质的旋转圆盘上进行数据存储的辅助存储器。具有存储容量大、数据传输率高、存储数据可长期保存等特点。
     
    计算机系统中,磁盘存储器常用于存放操作系统、程序和数据,是主存储器的扩充。发展趋势是提高存储容量,提高数据传输率,减少存取时间,并力求轻、薄、短、小。磁盘存储器通常由磁盘、磁盘驱动器(或称磁盘机)和磁盘控制器构成。

    存储密度

    存储密度分道密度,位密度和面密度。道密度是沿磁盘半径方向单位长度上的磁道数,单位为道/英寸.位密度是磁道单位长度上能记录的二进制代码位数,单位为位/英寸.面密度是位密度和道密度的乘积,单位为位/平方英寸。

     

    存储容量

    一个磁盘存储器所能存储的字节总数,称为磁盘存储器的存储容量.存储容量有格式化容量和非格式化容量之分,格式化容量是指按照某种特定的记录格式所能存储信息的总量,也就是用户可以真正使用的容量。非格式化容量是磁记录表面可以利用的磁化单元总数。将磁盘存储器用于某计算机系统中,必须首先进行格式化操作,然后才能供用户记录信息。格式化容量一般是非格式化容量的60%―70%。3.5英寸的硬盘机容量可达4.29GB。

    磁盘操作

    磁盘以扇区大小的块来读写数据。

    访问时间的分类:

    (1)寻道时间

    ——移动传动臂所用的时间。

    依赖于读/写头以前的位置和传动臂在盘面上移动的速度。

    通常为3-9ms,最大可达20ms。

    (2)旋转时间

    ——驱动器等待目标扇区的第一个位旋转到读/写头下

    依赖于盘面位置和旋转速度。

    最大旋转延迟=1/RPM X 60secs/1min (s)

    平均旋转时间是最大值的一半。

    (3)传送时间

    依赖于旋转速度和每条磁道的扇区数目

    平均传送时间= 1/RPM x 1/(平均扇区数/磁道) x 60s/1min

    访问一个磁盘扇区内容的平均时间为平均寻道时间,平均旋转延迟和平均传送时间之和。

    根据课本393页的示例可以得出结论:

    1.主要时间是寻道时间和旋转延迟。

    2.将寻道时间x2是估计磁盘访问时间的简单而合理的方法。

    固态硬盘

    固态硬盘(Solid State Drives),简称固盘,固态硬盘(Solid State Drive)用固态电子存储芯片阵列而制成的硬盘,由控制单元存储单元FLASH芯片、DRAM芯片)组成。固态硬盘在接口的规范和定义、功能及使用方法上与普通硬盘的完全相同,在产品外形和尺寸上也完全与普通硬盘一致。

    优点:

    读写速度快:采用闪存作为存储介质,读取速度相对机械硬盘更快。固态硬盘不用磁头,寻道时间几乎为0。持续写入的速度非常惊人,固态硬盘厂商大多会宣称自家的固态硬盘持续读写速度超过了500MB/s!固态硬盘的快绝不仅仅体现在持续读写上,随机读写速度快才是固态硬盘的终极奥义,这最直接体现在绝大部分的日常操作中。与之相关的还有极低的存取时间,最常见的7200转机械硬盘的寻道时间一般为12-14毫秒,而固态硬盘可以轻易达到0.1毫秒甚至更低。
    防震抗摔性:传统硬盘都是磁碟型的,数据储存在磁碟扇区里。而固态硬盘是使用闪存颗粒(即mp3、U盘等存储介质)制作而成,所以SSD固态硬盘内部不存在任何机械部件,这样即使在高速移动甚至伴随翻转倾斜的情况下也不会影响到正常使用,而且在发生碰撞和震荡时能够将数据丢失的可能性降到最小。相较传统硬盘,固态硬盘占有绝对优势。
    低功耗:固态硬盘的功耗上要低于传统硬盘。
    无噪音:固态硬盘没有机械马达和风扇,工作时噪音值为0分贝。基于闪存的固态硬盘在工作状态下能耗和发热量较低(但高端或大容量产品能耗会较高)。内部不存在任何机械活动部件,不会发生机械故障,也不怕碰撞、冲击、振动。由于固态硬盘采用无机械部件的闪存芯片,所以具有了发热量小、散热快等特点。
    工作温度范围大:典型的硬盘驱动器只能在5到55摄氏度范围内工作。而大多数固态硬盘可在-10~70摄氏度工作。固态硬盘比同容量机械硬盘体积小、重量轻。固态硬盘的接口规范和定义、功能及使用方法上与普通硬盘的相同,在产品外形和尺寸上也与普通硬盘一致。其芯片的工作温度范围很宽(-40~85摄氏度)。
    轻便:固态硬盘在重量方面更轻,与常规1.8英寸硬盘相比,重量轻20-30克。

     缺点:

    容量:固态硬盘最大容量仅为4TB,由闪迪(SanDisk)发布的Optimus MAX(擎天柱)
    SATA固态硬盘,SSD固态硬盘
    寿命限制:固态硬盘闪存具有擦写次数限制的问题,这也是许多人诟病其寿命短的所在。闪存完全擦写一次叫做1次P/E,因此闪存的寿命就以P/E作单位。34nm的闪存芯片寿命约是5000次P/E,而25nm的寿命约是3000次P/E。随着SSD固件算法的提升,新款SSD都能提供更少的不必要写入量。一款120G的固态硬盘,要写入120G的文件才算做一次P/E。普通用户正常使用,即使每天写入50G,平均2天完成一次P/E,3000个P/E能用20年,到那时候,固态硬盘早就被替换成更先进的设备了(在实际使用中,用户更多的操作是随机写,而不是连续写,所以在使用寿命内,出现坏道的机率会更高)。另外,虽然固态硬盘的每个扇区可以重复擦写100000次(SLC),但某些应用,如操作系统的LOG记录等,可能会对某一扇区进行多次反复读写,而这种情况下,固态硬盘的实际寿命还未经考验。不过通过均衡算法对存储单元的管理,其预期寿命会延长。SLC有10万次的写入寿命,成本较低的MLC,写入寿命仅有1万次,而廉价的TLC闪存则更是只有可怜的500-1000次。
    售价高:市场上的128GB 固态硬盘产品的价格大约在在550元人民币左右,而256GB的产品价格大约在950元人民币(2014年价格)左右。计算下来,每GB价格在4.2元人民币(2014年价格)左右,依然比传统机械硬盘每 GB 0.3元人民币(2014年价格)的价格高出了十几倍。市场上128GB MLC(多层单元)固态硬盘,一般价格为550元(2014年)左右,部分较型号甚至达到750元左右。而这个价钱足够买一个容量3TB的传统硬盘了。128GB SLC(单层单元)固态硬盘价格则高达2000元以上。
     

     

    存储技术优势

    不同的存储技术有不同的价格和性能折中

    不同存储技术的价格和性能属性以截然不同的速率变化着

    增加密度从而降低成本比降低访问时间更容易

    DRAM和磁盘的性能滞后于cpu的性能

     

    局部性

    局部性原理:

    一个编写良好的计算机程序,常常倾向于引用临近于其他最近引用过的数据项的数据项,或者最近引用过的数据项本身。

     

    分类:

    时间局部性

    空间局部性

    对程序数据引用的局部性

    步长为k的引用模式:一个连续变量中,每隔k个元素进行访问,就被称为步长为k的引用模式。

    步长为1的引用模式:就是顺序访问一个向量的每个元素,有时也被称为顺序引用模式,它是程序中 空间局部性常见和重要的来源。

    一般来说,随着步长增加,空间局部性下降。

    多维数组(以二维数组为例)

    int sumarraycols(int a[M][N])
    {
    	int i,j,sum = 0;
    	
    	for(i=0;i<N;i++)
    		for(j=0;j<M;j++)
    			sum += a[i][j];
    	return sum;
    }

    int sumarraycols(int a[M][N])
    {
    	int i,j,sum = 0;
    	
    	for(j=0;j<M;j++)
    		for(i=0;i<N;i++)
    			sum += a[i][j];
    	return sum;
    }

    上面的代码是按照行优先顺序执行的,下面的代码是按照列优先顺序执行的,而c数组在存储器中是按照行顺序存放的,所以第一个空间局部性良好,第二个空间局部性很差。

    取指令的局部性

    程序指令是存放在存储器中的,CPU必须取出(读出)这些指令。

    但是代码区别于程序数据的一个重要属性是:在运行时它是不能被修改的。

     

    局部性小结

    量化评价一个程序中局部性的简单原则:

    重复引用同一个变量的程序有良好的时间局部性

    对于具有步长为k的引用模式的程序,步长越小,空间局部性越好

    对于取指令来说,循环有好的时间和空间局部性。循环体越小,循环迭代次数越多,局部性越好。

     参考资料:百度百科

                     www.cnblogs.com/20135222yjx

  • 相关阅读:
    【转】C语言实现C++面向对象的封装、继承、多态机制
    【读书笔记】线程栈属性
    实际用户ID,有效用户ID,设置用户ID
    与进程相关的文件结构
    关于printf()与fflush()
    文件描述符与FILE结构体
    【转】pthread_cleanup_push()/pthread_cleanup_pop()的详解
    SQL Server 2008数据库复制实现数据库同步备份(转载)
    Entity Framework快速入门
    C#实现组合键
  • 原文地址:https://www.cnblogs.com/huyufeng/p/4908942.html
Copyright © 2020-2023  润新知