深入理解计算机系统学习笔记

一、固态硬盘

固态硬盘(Solid State Disk, SSD)是一种基于闪存的存储技术,在某些情况下是传统旋转磁盘的极有吸引力的替代产品。下图中展示了它的基本思想。SSD 封装插到I/O总线上标准硬盘插槽(通常是 USB或SATA)中,行为就和其他硬盘一样, 处理来自CPU的读写逻辑磁盘块的请求。

下图中展示了典型SSD的性能特性。注意,读SSD比写要快。随机读和写的性能差别是由底层闪存基本属性决定的。

随机写很慢,有两个原因。首先,擦除块需要相对较长的时间,1ms级的,比访问页所需时间要高一个数量级。其次,如果写操作试图修改一个包含已经有数据(也就是不是全为1)的页那么这个块中所有带有用数据的页都必须被复制到一个新(擦除过的)块, 然后才能进行对页的写。

比起旋转磁盘,SSD有很多优点。它们由半导体存储器构成,没有移动的部件,因而随机访问时间比旋转磁盘要快,能耗更低,同时也更结实。缺点是也容易磨损。

二、存储技术趋势

不同的存储技术有不同的价格和性能折中。SRAM比DRAM快一点,而DRAM比磁盘要快很多。另一方面,快速存储总是比慢速存储要贵的。SRAM每字节的造价比 DRAM 高,DRAM的造价又比磁盘高得多。SSD位于DRAM和旋转磁盘之间。

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

DRAM 和磁盘的性能滞后于 CPU的性能。虽然SRAM的性能滞后于CPU的性能,但还是在保持增长。

三、 局部性

局部性原理:倾向于引用邻近于其他最近引用过的数据项的数据项,或者最近引用过的数据项本身。这种倾向性,被称为局部性原理,是一个持久的概念,对硬件和软件系统的设计和性能都有着极大的影响。

局部性通常有两种不同的形式:时间局部性(temporal locality)和空间局部性(spatial locality)。

有良好局部性的程序比局部性差的程序运行得更快。现代计算机系统的各个层次,从硬件到操作系统、再到应用程序,它们的设计都利用了局部性。

硬件层,局部性原理允许计算机设计者通过引人称为高速缓存存储器的小而快速的存储器来保存最近被引用的指令和数据项,从而提高对主存的访问速度。

操作系统级,局部性原理允许系统使用主存作为虚拟地址空间最近被引用块的高速缓存。

四、对程序数据引用的局部性

在这个图a中,变量 sum在每次循环迭代中被引用一次,因此,对于sum来说,有好的时间局部性。在图b中看到的,向量v的元素是被顺序读取的,一个接一个,按照它们存储在内存中的顺序。因此,对于变量v, 函数有很好的空间局部性,但是时间局部性很差。

sumvec这样顺序访问一个向量每个元素的函数,具有步长为1的引用模式。步长为 1 的引用模式为顺序引用模式(sequential reference pattern)。

对于引用多维数组的程序来说,步长也是一个很重要的问题。

五、取指令的局部性

因为程序指令是存放在内存中的,CPU必须取出(读出)这些指令,因此我们可以评价一个程序关于取指令的局部性。例如,上图中for循环体里的指令是按照连续的内存顺序执行的,因此循环有良好的空间局部性。因为循环体会被执行多次,所以它也有很好的时间局部性。

六、局部性小结

评价程序中局部性的一些简单原则:

(1)重复引用相同变量的程序有良好的时间局部性。

(2)对于具有步长为k的引用模式的程序,步长越小,空间局部性越好。具有步长为l的引用模式的程序有很好的空间局部性。在内存中以大步长跳来跳去的程序空间局部性会很差。

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

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2024-03-17 01:44:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-17 01:44:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-17 01:44:03       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-17 01:44:03       20 阅读

热门阅读

  1. 什么是UUID?

    2024-03-17 01:44:03       24 阅读
  2. Vue v-if 和 v-show的区别

    2024-03-17 01:44:03       21 阅读
  3. openssl3.2 - exp - generate ecc priv key

    2024-03-17 01:44:03       20 阅读
  4. PyTorch入门

    2024-03-17 01:44:03       20 阅读
  5. 指定元素懒加载

    2024-03-17 01:44:03       21 阅读
  6. 【爬虫介绍】了解爬虫的魅力

    2024-03-17 01:44:03       18 阅读
  7. linux下自定义显示文件拷贝进度

    2024-03-17 01:44:03       24 阅读
  8. 2024/3/26

    2024/3/26

    2024-03-17 01:44:03      19 阅读