存储器层次结构 --《深入理解计算机系统》第六章读书笔记

简介: 1.几种存储技术 随机访问存储器RAM,RAM又分为两类:静态的SRAM和动态的DRAM。 静态SRAM特点:容量较小,速度较之动态DRAM要快很多,故而价格也较高。一般用作CPU与内存的缓存。

1.几种存储技术

  • 随机访问存储器RAM,RAM又分为两类:静态的SRAM和动态的DRAM。
    • 静态SRAM特点:容量较小,速度较之动态DRAM要快很多,故而价格也较高。一般用作CPU与内存的缓存。
    • 动态DRAM特点:容量较大,速度比SRAM慢,价格相对较低。一般用作系统内存。
  • 磁盘存储,存盘属于外部I/O设备,其特点是存储容量大,但读取速度更慢,价格也更加便宜。一般而言,从磁盘上读信息的时间为毫秒级,从DRAM读比从磁盘读快10万倍,从SRAM读比从磁盘读快100万倍。
    • 因为磁盘的构造是一个圆盘,盘上分布着一条条磁道(不同半径就有不同的磁道),每次访问都要找到相应的磁道,然后磁盘旋转到对应的启示位置,故而,磁盘扇区访问时间=寻道时间+旋转时间+传输时间。

2.局部性

  在程序中,程序倾向于引用邻近于其他最近引用过的数据项的数据项,或者就是最近引用的数据项本身,这种倾向,称为局部性原理。打个比方,在如下一个二维数组的循环中,循环1的局部性就比循环2的更优秀。

/*有良好局部性的程序*/
int
loop1( int array[M][N] ){ int i = 0,j = 0,sum = 0; for( i = 0;i < M;i++ ){ for( j = 0;j < N;j++ ) sum += a[i][j]; return sum; }
/*局部性很差的程序*/
int loop2( int array[M][N] ){ int i = 0,j = 0,sum = 0; for( i = 0;i < M;i++ ){ for( j = 0;j < N;j++ ) sum += a[j][i]; return sum; }

   程序局部性可以总结为以下:

  • 重复引用一个变量的程序有良好的时间局部性。
  • 对于具有步长为k的引用模式的程序,步长越小,空间局部性越好。相对得,在存储器中以大步长跳来跳去的程序空间局部性会很差。
  • 对于取指令来说,循环有好的时间和空间局部性。循环体越小,循环迭代次数越多,局部性越好。

3.高速缓存存储器

  随着CPU与主存之间的速度差距不见增加,故而早期的系统设计者被迫在CPU寄存器和主存之间插入了一个小的SRAM告诉缓存存储器。而后来随着系统内部各存储器结构之间速度差距的不断增大,缓存这项技术也被用到了各存储器结构之间,比如磁盘和内存。

  缓存是为了减少各存储器层次结构之间的速度差异而存在的,其作用就是在访问更低级的存储器结构的时候,直接低层次存储器结构的一个较大的块存放到缓存存储器中。这样,下次要访问之前数据的邻近数据时,就能快速得从缓存存储器中得到数据。要编写局部性良好的程序也是基于这个原因。

相关文章
|
6月前
|
存储 编解码 并行计算
【软件设计师备考 专题 】计算机系统的组成、体系结构分类及特性
【软件设计师备考 专题 】计算机系统的组成、体系结构分类及特性
116 0
|
6月前
|
存储 C语言
深入理解计算机系统第七章知识点总结(上)
深入理解计算机系统第七章知识点总结
73 0
|
5月前
|
存储 数据库 芯片
计算机系统论述与相关概念-思维导图
计算机系统论述与相关概念-思维导图
|
3月前
|
存储 算法 安全
【第一章】软件设计师 之 计算机组成与体系结构
这篇文章是软件设计师备考资料的第一章,涵盖了计算机组成与体系结构的基础知识,包括不同进制之间的转换方法、数据表示、计算机结构、流水线概念、存储系统、校验码等内容。
【第一章】软件设计师 之 计算机组成与体系结构
|
6月前
|
存储 缓存 网络虚拟化
深入理解计算机系统第九章知识点总结
深入理解计算机系统第九章知识点总结
115 0
|
6月前
|
算法 编译器 Linux
深入理解计算机系统第七章知识点总结(下)
深入理解计算机系统第七章知识点总结(下)
79 0
|
SQL 算法
数据库系统概论之第九章要点
数据库系统概论之第九章要点
|
算法 安全 架构师
软件编程概念与入门
软件编程概念与入门 1.概要 2 项目开发流程 3.编程提升
|
存储
软考中级(软件设计)----计算机体系结构分类与指令系统
软考中级(软件设计)----计算机体系结构分类与指令系统
337 0
软考中级(软件设计)----计算机体系结构分类与指令系统
下一篇
无影云桌面