当前位置: 首页 > news >正文

深入理解计算机系统之存储器层次结构学习笔记

一、存储技术

  (一)随机访问存储器

     随机访问寄存器(RAM)分为静态随机访问寄存器(SRAM)和动态随机访问寄存器(DRAM)。静态RAM可以作为高速缓存寄存器,动态RAM可以用作主存以及图形系统的帧缓冲区。静态RAM将每一个位存储在一个双稳态的存储器单元里,构成静态RAM 的电路可以无限期的保持在两个不同的电压配置或状态之一。动态RAM将每一个位存储为对电容的充电,所以动态RAM要比静态RAM对干扰的敏感度更高。构成动态RAM的电路被干扰后就不会恢复了。

       1 传统的DRAM

  常规DRAM芯片中的单元被分成了d个超单位(supercall),每个超单位都是由w个DRAM单元组成的。一个d*w的DRAM总共存储了dw位信息。超单元被组织成一个r行r列的长方形矩阵列,rc=d。每个DRAM被连接到存储控制器这个电路,该电路能一次传w位到每个DRAM芯片或一次从每个DRAM芯片传出w位。下图是一个128位16*8的DRAM芯片的高级视图。

要读取图中的超单元(2,1),存储控制器将把2发送出去,DRAM的响应是将2行的整个内容都拷贝到内部缓冲区。接下来,存储控制器将发送1,DRAM的响应是从缓冲区中拷贝出单元(2,1)中的八位并将它们发送到存储控制器。

    2 存储器模块

 DRAM 芯片包装在存储器模块中,它是直接插到主板的扩展槽上的,常见的包装包括168个引脚的双列直插存储器模块,其以64位为块传送数据到存储控制器和从该控制器中传出数据,还包括72个引脚的单列直插存储器模块,它是以32位为块传送数据的。

    3增强的DRAM

 快页模式DRAM(FPM DRAM)、扩展数据输出DRAM(EDO DRAM)、双倍数据速率同步DRAM (DDR SDRAM)、Rambus DRAM(RDRAM)、视频RAM

    4 非易失性存储器

非易失性存储器不同于DRAM与SRAM,它在断电后也仍然可以保存它的信息。ROM和闪存就是非易失性存储器。

  4.1 ROM以能够被重编程的次数和它们进行重编程所用的机制来区分的

可编程ROM (PROM):只能被编程一次。

可擦写可编程ROM(EPROM):EPROM能够被擦写和重编程的次数的数量级可以达到1000次。

电子可擦除PROM(EEPROM):EEPROM能够被擦写和重编程的次数的数量级可以达到100000次。

   4.2

闪存:闪存是基于EEPROM的非易失性存储器,是一种较为普遍的非易失性存储器。

 5 访问主存

  数据流通过称为总线的共享电子电路在处理器和DRAM主存之间来来回回。每次CPU与主存之间的数据都是由总线事务来完成的,总线事务包括读事务和写事务。

(二)磁盘存储

磁盘是用来保存大量数据的存储设备,能比基于RAM的存储器存更多的数据,但是读取数据的速度却远远低于基于RAM的存储器。

1 磁盘构造

磁盘是由盘片构成的。每个盘片上是由一组成为磁道的同心圆组成的。每个磁道被划分为一组扇区。扇区之间存在间隙。

2 磁盘容量

磁盘容量是由以下因素决定的:记录密度、磁道密度、面密度

3磁盘操作

传动臂通过寻道操作将读写头定位到相应的磁道上。磁盘以扇区大小的块来访问数据,对于扇区的访问时间有三个部分:寻道时间、旋转时间和传送时间。

4逻辑磁盘块

现代磁盘构造呈现为一个简单的视图,一个B个扇区大小的逻辑块的序列,编号为0,1......,B-1.磁盘中有一个小的硬件/固件设备,称为磁盘控制器,维护着逻辑块号和实际磁盘扇区的映射关系。

5连接到I/O设备

像图形卡、监视器、鼠标、键盘和磁盘这样的I/O设备,都是通过I/O总线连接到CPU和主存的。

6访问磁盘

CPU使用一种称为存储器映射I/O的技术向I/O设备发出命令。在使用存储器映射I/O的系统中,地址空间有一块地址是为与I/O设备通信保留的,每个这样的地址称为一个I/O端口。当一个设备连接到总线时,它与一个或多个端口相关联。

(三)固态硬盘

 固态硬盘(SSD)是一种基于闪存的存储技术。一个SSD包由一个或多个闪存芯片和闪存翻译层组成,闪存芯片替代传统旋转磁盘中的机械驱动器,而闪存翻译是一个硬件/固件设备,扮演与磁盘控制器相同的角色,将对逻辑块的请求翻译成对底层物理设备的访问。

 

 

二 局部性  

一个计算机程序通常具有良好的局部性,也就是说,它们倾向于引用于其他最近引用过的数据项的数据项,或者最近引用过的数据项本身。局部性通常有两种不同的形式:时间局部性和空间局部性。

  对程序数据引用的局部性

一个连续向量中,每隔k个元素进行访问,就被称为步长为k的引用模式。步长为的引用模式是程序中空间局部性常见和重要的来源。一般而言,随着步长的增加,空间局部性下降。

 

三 存储器层次结构

 

所有的现代计算机系统中都使用存储器结构层次来使得软件和硬件互相补充。

一般而言,从高层往底层走,存储设备变得更慢、更便宜和更大。

(一)存储器层次结构中的缓存

一般而言,高速缓存是一个小而快速的存储设备,它作为存储在更大也更慢的存储设备中的数据对象的缓冲区域。使用高速缓存的过程称为缓存。

 

(二)存储器层次结构概念小结

概括来说,基于缓存的存储器层次结构行之有效,是因为较慢的存储设备比较快的存储设备更便宜,还因为程序往往展现局部性:利用时间局部性和利用空间局部性。

四 高速缓存存储器

早期计算机系统的存储结构只有三层:CPU寄存器、DRAM主存储器和磁盘存储。不过,由于CPU和主存之间逐渐增大的距离,系统设计者被迫在CPU寄存器文件和主存之间插入了一个小的SRAM高速缓存存储器,称为L1高速缓存。随着CPU和主存之间的性能差距不断增大,系统设计者在L1高速缓存更大的高速缓存,称为L2高速缓存。有些现代计算机还包括一个更大的高速缓存,称为L3缓存。

(一)通用的高速缓存存储器结构

一般而言,高速缓存的结构可以用元组(S,E,B,m)来描述。高速缓存的大小(或容量)C指的是所有块的大小的和。标记位和有效位不包括在内。因此,C=S*E*B。

(二)直接映射高速缓存

根据E(每个组的高速缓存行数)高速缓存被分为不同的类。每个组只有一行(E=1)的高速缓存称为直接映射高速缓存。

(三)组相联高速缓存

直接映射高速缓存中冲突不命中造成的问题是源于每个组只有一行这个限制,组相联高速缓存放松了这条限制,所以每个组都保存多余一个的高速缓存行。

(四)全相联高速缓存

一个全相联高速缓存是由一个包含所有高速缓存行的组。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  

转载于:https://www.cnblogs.com/xxp17457741/p/6618293.html

相关文章:

  • hihocoder offer收割编程练习赛12 C 矩形分割
  • css 样式表 基础 样式
  • 函数装饰器
  • 第二百一十节,jQuery EasyUI,SearchBox(搜索框)组件
  • UVa 10917 林中漫步
  • Ruby 写文件
  • Python学习日记之读取中文目录
  • STL List::sort() 解析
  • 饥饿鲨鱼进化-破解篇
  • 内存操作函数memcpy和memmove详解
  • 【原】STM32的USART与SPI是可以直接通讯
  • django自定义signal的发送和接收样例
  • MVC开发中的常见错误-07-“System.IO.DirectoryNotFoundException”类型的未经处理的异常在 mscorlib.dll 中发生...
  • 你必须要了解的几种排序方法
  • 补交 作业二:个人博客作业内容:需求分析
  • php的引用
  • 【译】理解JavaScript:new 关键字
  • CEF与代理
  • Cookie 在前端中的实践
  • extract-text-webpack-plugin用法
  • IndexedDB
  • Invalidate和postInvalidate的区别
  • JAVA SE 6 GC调优笔记
  • Java多线程(4):使用线程池执行定时任务
  • Leetcode 27 Remove Element
  • opencv python Meanshift 和 Camshift
  • SpiderData 2019年2月25日 DApp数据排行榜
  • 回流、重绘及其优化
  • 入门级的git使用指北
  • 手写一个CommonJS打包工具(一)
  • 线上 python http server profile 实践
  • 小程序、APP Store 需要的 SSL 证书是个什么东西?
  • 用element的upload组件实现多图片上传和压缩
  • 原创:新手布局福音!微信小程序使用flex的一些基础样式属性(一)
  • 我们雇佣了一只大猴子...
  • ​油烟净化器电源安全,保障健康餐饮生活
  • "无招胜有招"nbsp;史上最全的互…
  • (2/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (22)C#传智:复习,多态虚方法抽象类接口,静态类,String与StringBuilder,集合泛型List与Dictionary,文件类,结构与类的区别
  • (C++17) std算法之执行策略 execution
  • (动态规划)5. 最长回文子串 java解决
  • (附源码)springboot家庭装修管理系统 毕业设计 613205
  • (免费领源码)python+django+mysql线上兼职平台系统83320-计算机毕业设计项目选题推荐
  • (十八)三元表达式和列表解析
  • (转)IOS中获取各种文件的目录路径的方法
  • .h头文件 .lib动态链接库文件 .dll 动态链接库
  • .NET CLR Hosting 简介
  • .net core MVC 通过 Filters 过滤器拦截请求及响应内容
  • .NET Core 版本不支持的问题
  • .net 中viewstate的原理和使用
  • [ 环境搭建篇 ] 安装 java 环境并配置环境变量(附 JDK1.8 安装包)
  • [ 隧道技术 ] cpolar 工具详解之将内网端口映射到公网
  • [ 云计算 | Azure 实践 ] 在 Azure 门户中创建 VM 虚拟机并进行验证
  • [] 与 [[]], -gt 与 > 的比较
  • [1] 平面(Plane)图形的生成算法