CSAPP 第六章 存储器层次结构

2024-04-02 00:04

本文主要是介绍CSAPP 第六章 存储器层次结构,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、引入

        在计算机系统中,CPU负责执行指令,而存储器系统为CPU存储指令和数据

        存储器系统是一个具有不同容量、成本和访问时间的存储设备的层次结构。如下图:

        越接近高层,存储器的访问速度越快,存储能力越小,造价越高。

        

二、存储技术的介绍

1.寄存器:

        寄存器是CPU内部用来存放数据的一些小型存储区域,用来暂时存放参与运算的数据和运算结果。

2.随机访问存储器

        随机访问存储器又名为RAM,其分为两类:

        

  • 静态RAM,SRAM

        如上图层数 L1、L2、L3

  • 动态RAM,DRAM

        如上图层数 L4

        

        静态RAM(SRAM)比动态RAM(DRAM)更快,但也贵得多。SRAM用来作为高速缓存存储器。DRAM用来作为主存以及图形系统的帧缓冲区

(1)静态RAM,SRAM

        SRAM将每个bit位的信息存储在双稳态结构的存储器单元中,如下图。每个存储器单元需要六个晶体管实现。这个电路有这样一个属性,它可以无限期地保持在两个不同的电压配置( configuration)或状态( state)之一。其他任何状态都是不稳定的,在不稳定状态时,电路会迅速转移到两个稳定状态的一个。

  由于SRAM存储器单元的双稳态特性,只要有电,它就会永远地保持它的值。即使有干扰(例如电子噪音)来扰乱电压,当干扰消除时,电路就会恢复到稳定值

(2)动态RAM,DRAM

        DRAM的原理是电容充电,DRAM将每个位存储为对一个电容的充电。每个单元由一个电容和一个访问晶体管组成。但是,与SRAM不同,DRAM存储器单元对干扰非常敏感。当电容的电压被扰乱之后,它就永远不会恢复了。暴露在光线下会导致电容电压改变。

        并且DRAM会因为很多原因导致漏电,所以内存系统只有通过不断的读出数据,不断刷新内存每一位数据,才能保持数据。

总结:

只要有供电,SRAM就会保持不变。与DRAM不同,它不需要刷新。SRAM的存取比DRAM快。SRAM对诸如光和电噪声这样的干扰不敏感。代价是SRAM单元比DRAM单元使用更多的晶体管,因而密集度低,而且更贵,功耗更大。

传统的DRAM:

       如下图,展示的是16*8的DRAM芯片(16为超单元的个数、8为每个超单元可以存储8个bit的数据)。

        可以将芯片看成二维数组的形式,通过行i列j来寻找指定的超单元。

        信息通过称为引脚(pin)的外部连接器流入和流出芯片。每个引脚携带一个1位的信号。下图给出了两组引脚:8个data引脚,它们能传送一个字节到芯片或从芯片传出一个字节,以及2个addr引脚,它们携带2位的行和列超单元地址。其他携带控制信息的引脚没有显示出来。

        内存控制器 依次将行地址和列地址发送给 DRAM,DRAM 将对应的超单元的内容发回给内存控制器以实现读取数据。

        具体实现:

        首先内存控制器 Memory Controller 发送行地址2到DRAM芯片,然后DRAM芯片将第二行的数据放到缓存区Internal row buffer 中。

        接着内存控制器 Memory Controller又发送列地址1到DRAM芯片中,然后DRAM芯片将缓存区Internal row buffer的数据发送到内存控制器Memory Controller。

DRAM的内存模块:

        简单来说就是,将多个DRAM芯片叠在一起,然后通过读取每一个的相同行列(i,j)的数据,每个数据在拼凑在一起得到最终的数据。

3.磁盘

        磁盘在存储系统中为L5。

        随机访问存储器一般在不断电的情况下才能保存数据,但是磁盘可以在断电的情况下保存数据。其中主流的磁盘分为两类:

  •         机械磁盘

  •         固态硬盘

        

(1)机械磁盘:

        如下图,磁盘由多个盘片围绕主轴旋转而成,其一个盘片有两个表面(上表面和下表面)。

        每个表面就像下面的多圈同心圆一样,其中每圈同心圆有多个扇区,扇区与扇区之间会有一些间隙,间隙用来存放扇区的标识信息,不能用来存放数据。扇区才能存放数据。

        磁盘用读写头来读取数据(就像唱片),每个表面都有独立的读写头。

磁盘操作:

        磁盘操作主要有寻道、旋转和传送三个过程构成,操作磁盘的时间主要寻道时间和旋转时间的延迟,传送时间相比于两者基本可忽略。

  • 寻道:传动臂寻找正确的圈。
  • 旋转:传动臂不动,磁盘表面旋转。
  • 传送:驱动器开始读或者写该扇区的内容。

操作系统与磁盘:

        从操作系统的视角来看,磁盘被抽象成了一个个等大的逻辑块,有一个磁盘控制器通过“盘片、磁道、扇区”来映射实际的磁盘。(可以理解成,有钱人为了方便买房,直接找了个中介)

(2)固态硬盘:

        固态硬盘又叫SSD,结构如下图。

        

        相比于传统的机械硬盘的读与写操作,固态硬盘还多一个擦出的操作(只能让1变成0),所以page最开始就全是1。擦除是block为单位擦除。

        固态硬盘采用平均磨损算法来平摊擦除操作的磨损,以此来延长固态硬盘的寿命。

        SSD相对于旋转磁盘来说,好处是访问时间块,能耗低。反复写之后,闪存块也会磨损,一般要很多年才能磨损。

三、局部性

        CPU的读取速度越来越快,实际上弥补CPU和内存之间差距的关键,是程序的局部性。

        局部性是程序的一个基本属性。具有良好局部性的程序倾向于重复地访问相同的数据 (时间局部性),缓存思想,或倾向于访问邻近的数据 (空间局部性),快查思想,因此运行更快。

        1.存储的缓存思想

        不同存储技术的访问时间差异很大,速度快的成本高,慢的成本低。如果数据在寄存器中,指令执行期间,访问需要1个时钟周期;在高速缓存SRAM中,需要4~75个周期;在主存DRAM中,需要上百个周期;在磁盘中,大约要几千万个周期

        为了方便数据快速读写,数据需要经过层层缓存,以此来优化存储器结构。

        存储器结构的中心思想是:快的缓存慢的。(上层缓存下层)

        如下图:第k层是第k+1层的上层,第k层缓存着第k+1层的部分数据。

        

未完待续。。。。。

这篇关于CSAPP 第六章 存储器层次结构的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/868474

相关文章

第六章习题11.输出以下图形

🌏个人博客:尹蓝锐的博客 希望文章能够给到初学的你一些启发~ 如果觉得文章对你有帮助的话,点赞 + 关注+ 收藏支持一下笔者吧~ 1、题目要求: 输出以下图形

程序存储器编址及程序执行顺序

对于内部有ROM的芯片,根据情况也可以扩展外部ROM,虽然内、外程序存储器总容量可以超过64KB,但其有效存储空间只有64KB,内、外程序存储器逻辑上将共用64K存储空间。片内程序存储器地址空间和片外程序存储器的低地址空间重叠。51子系列重叠区域为0000H~0FFFH,52子系列重叠区域为0000H~1FFFH。        单片机在执行指令时,对于低地址部分,是从片内程序存

Go语言设计与实现 学习笔记 第六章 并发编程(3)

系统调用 系统调用对于Go语言调度器的调度也有比较大的影响,为了处理这些特殊的系统调用,我们甚至专门在Goroutine中加入了_Gsyscall这一状态,Go语言通过Syscall和Rawsyscall等使用汇编语言编写的方法封装了操作系统提供的所有系统调用,其中Syscall在Linux 386上的实现如下: // 定义名为.Syscall的函数,该函数不允许栈分割,栈帧大小为0,有28字

stm32之软件SPI读写W25Q64存储器应用案例

系列文章目录 1. stm32之SPI通信协议 文章目录 系列文章目录前言一、电路接线图二、应用案例代码三、应用案例分析3.1 SPI通信模块3.2 W25Q64模块3.3 主程序 前言 提示:本文主要用作在学习江科大自化协STM32入门教程后做的归纳总结笔记,旨在学习记录,如有侵权请联系作者 本案例使用软件SPI通信的方式实现了STM32与W25Q64 Flas

计算机三级网络技术总结 第六章交换机及其配置

采用直通交换模式的交换机开始转发数据帧时已经接收到的帧长度时14字节建立VALN的命令格式: vlan <vlan_ID> name <vlan_name> 为端口分配VLAN的命令格式为: switchport access vlan <vlan_num>  不给定名字的VLAN,系统自动按缺省的VLAN名(VLAN00xxx)配置交换机Catalyst 6500管理IP地址命令格式: (ena

【计算机组成原理】计算机系统层次结构

计算机系统层次结构 计算机系统是一个层次结构系统,每一层都通过向上层用户提供一个抽象的简洁接口而将低层的实现细节隐藏起来。计算机解决应用问题的过程就是不同抽象层进行转换的过程 计算机系统抽象层的转换 下图描述了从最终用户希望计算机完成的应用(问题)到电子工程师使用器件完成基本电路设计的整个转换过程 通常用自然语言对应用(问题)进行描述,但计算机硬件只能理解机器语言,要将一个自然语言描述

第六章 详细设计简记

第六章  详细设计       详细设计不是具体的编程,而是要设计出程序的“蓝图”,详细设计不仅仅是逻辑上正确的实现每个模块的功能,更重要的是设计出来的处理工程应该简明易懂。       详细设计的目的:为软件结构图中的每一个模块确定使用的算法和块内的数据结构,并用某种选定的表达工具给出清晰的描述。       详细设计的任务:           1.为每

第三章 多层次的存储器笔记简记

第三章 多层次的存储器 1.存储器的分类 存储器分类标准: (1)存储介质:半导体存储器和磁表面存储器;(按存储介质) (2)存取方式:随机存储器和顺序存储器;(按存取方式) (3)存储内容可变性:只读存储器和随机读写存储器;(按读写功能) (4)信息易失性:易失性存储器和非易失性存储器;(按信息的可保存性) (5)系统中的作用:可分为内部存储器和外

Java学习Day37:HTML 第六章:黄金国(项目思路梳理)

第一天:后端思路梳理及代码实现 1.数据库设计 数据库设计使用一张表(course)设计 CREATE TABLE course(id INT PRIMARY KEY AUTO_INCREMENT COMMENT '课程ID',cname VARCHAR(255) NOT NULL COMMENT '课程名称',price DOUBLE NOT NULL COMMENT '售卖价格

[学习笔记]《CSAPP》深入理解计算机系统 - Chapter 3 程序的机器级表示

总结一些第三章的一些关键信息 Chapter 3 程序的机器级表示结构 updating... Chapter 3 程序的机器级表示 局部变量通常保存在寄存器中,而不是内存中,访问寄存器比内存快的多. 有些时候,局部数据必须存放在内存中, 寄存器不足够存放所有的本地数据对一个局部变量使用地址运算符 &, 因此必须能够为它产生一个地址某些局部变量是数组或结构,因此必须能够通过数组或