首页 > 其他分享 >第六章 存储器层次结构

第六章 存储器层次结构

时间:2024-02-14 16:55:24浏览次数:25  
标签:缓存 读写 存储器 扇区 DRAM 层次结构 内存 第六章 磁盘

1. 随机访问存储器(RAM)

1. 静态RAM(SRAM)

常用来做cache。

SRAM存储器单元只要有电,就会永远保持它的值。

2. 动态RAM(DRAM)

常用来做内存。

DRAM每个位存储为电容充电。因为有很多原因会导致漏电,所以内存系统必须周期性地通过读出数据,重写来刷新内存的每一位。

3. 传统DRAM

下图是一个16*8的DRAM芯片。

16是超单元的个数,8表示每个超单元可以存储8bit的数据

整个DRAM芯片通过内存引脚和数据引脚与内存控制器相连

当我们需要从DRAM芯片中读出图中所示的超单元(2,1)

  • 首先内存控制器发送行地址2到DRAM芯片,DRAM所作出的响应是将整个第二行的内容全部复制到内部的行缓冲区中。

  • 然后内存控制器发送列地址1到DRAM芯片,DRAM从这个行缓冲区中复制出对应的数据位,并发送到内存控制器。

  • 为什么分两次发送:
    DRAM是一个二维的阵列,而不是一个线性数组。
    若是一个0-15的数组,那么需要四个地址引脚。但用4*4的阵列分两次发送就只需要两个地址引脚

4. 内存模块

下图是一个用DRAM芯片封装成的内存模块,一共有8个DRAM芯片

每个芯片的大小为8M*8,也就是8MB
因此整个模块的大小为64

每个超单元存储8bit的数据,对于8字节的数据需要8个超单元来存储。

这8个超单元分布在八个芯片上,具有相同的i,j(行、列地址)
DRAM0存储最低8位,DRAM7存储最高八位

5. 访问主存

数据流通过总线在处理器和DRAM主存之间来来回回。

cpu和主存之间的数据传送称为总线事务。

  • 读事务:从主存传送数据到cpu
  • 写事务:从cpu传送数据到主存


当cpu执行一个如下操作

movq A , %rax  //地址A的内容加载到寄存器rax中
  • cpu将地址A放到系统总线上,I/O桥将系统总线的电子信号翻译成内存总线的电子信号
  • 主存感觉到内存总线上的地址信号,从内存总线读地址,从DRAM取出数据,并将数据写到内存总线上
  • I/O桥将内存总线上的电子信号转化为系统总线。cpu感觉到系统总线上的信号,从总线上读数据,并将数据复制到寄存器

2. 磁盘存储

无论是SRAM还是DRAM,都需要有电的情况下才能保存数据。
磁盘是在断电下也能保存数据的存储介质

目前市面上主流的磁盘有两类:机械磁盘和固态硬盘

1. 磁盘构造


盘片表面有磁性的记录材料,主轴带动盘片高速旋转。如图有三个盘片,一共六个表面可以存储数据。

盘片的表面被划分成一圈圈磁道(左图),像同心圆一样。

每个磁道被划分成多个扇区(右图)。扇区之间有一些间隙,是用来存放扇区标识信息,不能用来存储数据


磁盘通过读写头来读写存在盘片表面的数据。

盘片每个表面都对应着一个独立的读写头,所有的读写头连接在一个传送臂上,通过传送臂的移动读取数据。这种机械运动是寻道

2. 磁盘操作

磁盘以扇区大小的块来读写数据。对扇区的访问时间有三个主要部分

  • 寻道时间
    当目标扇区所处的磁道与读写头当前所处的磁道不同时,传动臂需要将读写头移动到目标扇区所处的磁道。传送臂移动的时间就是寻道时间

  • 旋转时间
    当读写头位于目标扇区所在的磁道,驱动器等待目标扇区的第一个位旋转到读写头下。

    主要取决于读写头到达目标扇区时的位置和磁盘的旋转速度

  • 传送时间
    当目标扇区的第一个位位于读写头下,驱动器就可以开始读或者写该扇区的内容。

    假如每条磁道的平均扇区有400个,转一圈需要8ms,所以转过一个扇区需要0.02ms,传送时间为0.02ms

3. 逻辑磁盘块

从操作系统角度看,每个磁盘抽象成一个个逻辑块序列,每个逻辑块和一个扇区的容量一致,都是512个字节。

磁盘内部有一个硬件/固件设备:磁盘控制器。维护逻辑块号与实际磁盘扇区的映射关系

当操作系统执行读一个磁盘扇区数据到主存。

  • 操作系统发送一条命令到磁盘控制器,让它读某个逻辑块号
  • 控制器上的固件执行一个快速表查找,将一个逻辑块号翻译成一个(盘面,磁道,扇区)三元组
  • 控制器上的硬件解释这个三元组,并将读到的数据写入控制器上的缓冲区中,然后复制到主存。

3. 固态硬盘


闪存翻译层扮演着和磁盘控制块相同的角色,将对逻辑块的请求翻译成对底层物理设备的访问

4. 局部性

  • 有良好的时间局部性的程序中
    被引用过一次的内存位置很可能在不远的将来再次被多次引用

  • 有良好的空间局部性的程序中
    如果一个内存位置被引用了一次,那么程序很可能在不远的将来引用附近的一个内存位置


在下面这个程序中

sum在每次循环迭代中都被引用一次,具有良好的时间局部性
数组是行优先存储的,先循环行再循环列有良好的空间局部性

int sum = 0;
for(int i=0;i<n;i++)
{
  for(int j=0;j<n;j++)
  sum+=a[i][j]
}

5. 存储器层次结构

存储器层次结构示意图:


存储器层次结构的中心思想是:

对于每个k,位于k层的更快更小的存储设备作为位于k+1层的更大更慢的存储设备的缓存。

第k层的缓存包含第k+1层块的一个子集的副本。

数据总是以块大小为传送单元在第k层和第k+1层来回复制的

缓存命中

当程序需要第k+1层的某个数据对象d时,它首先在第k层找d。
如果d刚好在第k层,就是缓存命中

缓存不命中

当第k层中没有缓存数据对象d,也就是缓存不命中

当缓存不命中,第k层的缓存从第k+1层缓存中取出包含d的那个块。如果第k层缓存已满,可能会覆盖现存的一个块

标签:缓存,读写,存储器,扇区,DRAM,层次结构,内存,第六章,磁盘
From: https://www.cnblogs.com/algoshimo/p/18015300

相关文章

  • 《程序是怎样跑起来的》第六章读后感
    读完第六章后,我对函数的理解更加深入了。这一章详细介绍了函数的定义、调用、参数传递以及作用域等重要概念。我明白了函数是将复杂任务分解为可重复使用的模块,提高了代码的可读性和可维护性。通过定义函数并传入相应的参数,我们可以在不同的地方调用它们,避免代码的重复编写。此......
  • 读程序是怎样跑起来的第六章有感
    这一章深入浅出地介绍了计算机的底层运作机制,特别是CPU的工作原理。一直以来,我们都知道程序是由代码构成的,但很少有人真正去探究这些代码是如何被机器执行并转化为实际的操作的。通过这一章,我得以一窥计算机内部的世界,了解那些看似抽象的指令是如何被具体执行的。书中对于CPU......
  • 《程序是怎样跑起来的》第五章,第六章读书感悟
    第五章一,主要内容1,主要介绍了计算机的输入输出设备,包括键盘、鼠标、显示器、打印机、硬盘和网络等,以及它们与计算机主机之间的接口和通信方式。2,介绍了输入输出设备与计算机主机之间的接口和通信方式,包括USB、HDMI、SATA等接口标准,以及中断、DMA等通信方式。二,读书感悟总......
  • DMA直接存储器存取
    一.DMA简介存储器到存储器的转运,一般用软件触发外设到存储器的转运,一般用硬件触发二.存储器映像终止地址取决于存储容量三.DMA框图四.DMA基本结构传输计数器:自减计数器自动重装器:是否将传输计数器恢复M2M:选择触发方式软件触发和循环模式不能同时使用五.DMA请求......
  • 问题:半导体存储器按功能分为两大类,即()
    问题:半导体存储器按功能分为两大类,即()A、ROM,RAMB、ROM,EPROMC、SRAM,DRAMD、ROM,EEPROM参考答案如图所示......
  • 既可以通过从层次结构更高层组件(如 FilterableProductTable)开始“自上而下”构建,也可
    既可以通过从层次结构更高层组件(如FilterableProductTable)开始“自上而下”构建,也可以通过从更低层级组件(如ProductRow)“自下而上”进行构建。在简单的例子中,自上而下构建通常更简单;而在大型项目中,自下而上构建更简单。为什么这么说呢?合理吗?在构建React应用时,"自上而下"(Top-Do......
  • 【COM3D2Mod制作教程】第六章:实战!制作衣服部分(上)
    【COM3D2Mod制作教程】第六章:实战!制作衣服部分(上)教程介绍隔了N个月终于迎来了第二期的Mod教程部分,这一期我们将开始制作人物的衣服部分。因为体型适配的原因,衣服部分要比身体部分难得多,但主要也就是多了个刷权重和制作形态键的任务,只要掌握技巧,勤加练习,做起来也不会太难。由于......
  • 使用 Python 和 Pygame 制作游戏:第六章到第八章
    第六章:贪吃虫原文:inventwithpython.com/pygame/chapter6.html译者:飞龙协议:CCBY-NC-SA4.0    如何玩贪吃虫贪吃虫是Nibbles的克隆。玩家开始控制一个不断在屏幕上移动的短蠕虫。玩家无法停止或减慢蠕虫,但他们可以控制它转向的方向。红苹果随机出现在屏幕上,玩家必......
  • Microsoft 365 新功能速递:Teams即将发布一线运营层次结构功能
    51CTOBlog地址:https://blog.51cto.com/u_13969817微软将在2024年1月份发布FrontlineOperationalHierarchy新功能,将使管理员能够将其组织的一线团队/地点结构映射到团队管理中心的层次结构。管理员可以为每个团队/地点定义从部门信息到品牌信息元数据的元数据。操作层次结构与此......
  • EPROM 作为存储器的 8 位单片机
    一、基本概述TX-P01I83是以EPROM作为存储器的8位单片机,专为多IO产品的应用而设计,例如遥控器、风扇/灯光控制或是玩具周边等等。采用CMOS制程并同时提供客户低成本、高性能等显着优势。TX-P01I83核心建立在RISC精简指令集架构可以很容易地做编程和控制,共有55条指令......