计算机组成原理:大而快——层次化存储

news2024/11/24 19:37:42

原文链接www.xiaocr.fun/index.php/2023/11/14/计算机组成原理大而快-层次化存储/

引言

关于两种局部性

  • 时间局部性:如果某个数据被访问,那么在不久的将来它可能再次被访问
  • 空间局部性:如果某个数据项被访问,与它相邻的数据项可能也将被访问

存储系统

根据局部性原理,构建计算机的存储系统,也称为存储层次结构

存储层次结构包括不同速度和容量的多级存储,存储速度越快,价格越昂贵,容量越小。

file


Tips:

同样的数据也有相似的层次性:靠近处理器那一层中的数据时那些较远层次中数据的子集

层次化存储可以由不同的层次组成,但是数据只能在两个相邻层次之间复制。在相邻两层之间信息交换的最小单元称为(block)。

file


Tips:

如果处理器所需的数据在本层的存储中找到,称为命中(hit),否则为失效(miss)。

存储技术

主要有四种:

主存采用动态随机存储(DRAM);靠近处理器的存储层次使用静态随机访问(SRAM);第三种为闪存;第四种为磁盘(disk)

DRAM

在SRAM中,只要提供电源,数值会被一直保存。而在 DRAM 中,使用电容保存电荷的方式来存储数据。采用单个晶体管来访问存储的电荷,或者读取它,或者改写它。DRAM的每个比特仅使用单个晶体管来存储数据,它比SRAM的密度更高,每比特价格更低廉由于DRAM在单个晶体管上存储电荷,因此不能长久保持数据,必须进行周期性的刷新与SRAM相比,这也是该结构被称为动态的原因。

闪存

闪存是一种电可擦除的可编程只读存储器(EEPROM)内含耗损均衡技术的控制器,将写操作尽量分散

Cache基础

理解图示:

file

工作原理介绍

在cache中为每个存储中的数据进行位置分配的最简单方式,就是基于它在存储中的地址来分配cache中的位置,这称为直接映射

找对应数据块

(块地址) mod (cache中的数据块数量)

(图示映射)

file

  • cache中要添加标签

这些标签(tag)保存了所需的地址信息,用来确定请求字是否在cache中

  • cache中添加有效位

用来标识该表现中是否保存着有效数据

  • cache还可以利用时间局部性,使用最近访问的数据替换不常访问的数据

    Cache进一步

    • 64 位地址。
    • 直接映射 cache。
    • cache大小为2"数据块,因此索引字段为n位。
    • 数据块大小为2”个单字(2"m+2字节),因此在单个数据块中使用m位来索引单字,使用地址的最低2位来索引字节。

file


例题加深理解:

file

关于cache容量

该直接映射的cache总容量:

  • 2^n * (单个block大小 + tag位数 + 有效位一位)

处理cache失效

定义:由于所需的数据不在cache之中,对cache发送的数据请求不能被响应

处理步骤:

  • 1.将PC的原始值(当前PC-4)发送到内存。
  • 2.对主存进行读操作,等待主存完成本次访问
  • 3.写cache 表项,将从内存获得的数据写人到该表项的数据部分,将地址的高位(来自 于ALU)写入标签字段,并将有效位置为有效。
  • 4.重启指令执行。这将会重新取指,本次取指将在指令 cache 中命中。与上述相比,数据访问的 cache 控制本质上是相同的。一旦失效,简单地暂停处理器,直到内存返回数据。

处理写操作

目的就是保持主存与cache一致

  • 写穿透(write through)

写穿透是总是同时更新cache和下一级存储,保证二者数据相同。但写每次都相当于访问主存,相当于miss,效率低

  • 写返回(write back)

处理写操作时,只更新cache对于数据块的数值。当数据块被替换时,再将更新后的数据块写入主存

cache的性能

  • 计算cache性能例题

file

  • 计算存储平均访问时间

file


虚拟存储

主存可以通常由磁盘实现的辅助存储当cache,这种技术成为虚拟存储 file


虚拟存储提出动机

  • 程序只读写分配给它的那部分主存,主存只需存储众多虚拟机中活跃的部分,就像cache只存放一个程序活跃部分
  • 我们只希望每个程序否编译到它自己的地址空间中——只有这个程序能访问的一系列存储位置,而虚拟存储实现了将程序地址空间转换为物理地址,这地址转换处理加强了各个程序之间的保护

Tips

  • 虚拟存储块被称为页(page),而不是block/line,这个是由于历史原因
  • 虚拟存储失效称为页失效(page fault)
  • 虚拟存储中,处理器产生一个虚拟地址,该地址通过软硬件转换为一个物理地址,物理地址可访问主存。
  • 虚拟存储中,地址被划分为虚拟页号(VPN,virtual page number)和页内偏移(Page Offset)

缺页失效的penalty有millions of cycles!

(图示)

file

file


页的存放与查找

  • 全相联映射的困难在于项的定位,全部进行检索是不切实际的

在虚拟存储中,我们实验一个索引主存的表来定位页,这个结果称为页表(PT,PageTable),位于主存

页表使用虚拟地址中的页号作为索引,找到相应的物理页号

file


关于缺页失效

如果虚拟也的有效位为无效,则会发生缺页失效

file

关于写

在虚拟存储系统中,写入存储层次结构的下一级(磁盘)可能需要数百万个时钟周期,因此写穿透是不可行的。

虚拟存储系统必须使用写回策略,对内存中的页进行单路写操作。并且当页被从主存中替换出时,将其复制到辅助存储

加快地址转换TLB

TLB(Translation Lookaside Buffer),也就是俗称的快表。由于页表存储在主存中,则程序每个访存请求至少需要两次访存。一次获得物理地址,一次访存获得数据

file


file


file


cache执行总结

file

虚拟存储中的保护

虚拟存储最重要的功能就是允许多个进程共享一个主存,同时为这些进程和OS提供内存保护

无论有意还是无意,一个恶意进程不能写另一个进程或OS的地址空间

file


本文由博客一文多发平台 OpenWrite 发布!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1208762.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

接口自动化测试(Python+Requests+Unittest)合集详解教程

(1)接口自动化测试的优缺点 优点: 测试复用性。维护成本相对UI自动化低一些。回归方便。可以运行更多更繁琐的测试。 自动化的一个明显的好处是可以在较少的时间内运行更多的测试。为什么UI自动化维护成本更高? 因为前端页面变…

工作记录-------MySql主从同步

MySql主从同步简述: MySQL主从同步,可以实现将数据从一台数据库服务器同步到多台数据库服务器。MySQL数据库自带主从同步功能,经过配置,可以实现基于库、表结构的多种方案的主从同步。 Redis是一种高性能的内存数据库&#xff1…

【Hello Go】初识Go语言

初识Go语言 Go语言介绍Go语言是什么Go语言优势Go语言能用来做什么 Go语言环境安装第一个GO语言程序运行Go语言程序 Go语言介绍 Go语言是什么 go语言是是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言. 静态类型:在静态类型…

【左程云算法全讲10】打表技巧和矩阵处理技巧

系列综述: 💞目的:本系列是个人整理为了秋招面试的,整理期间苛求每个知识点,平衡理解简易度与深入程度。 🥰来源:材料主要源于左程云算法课程进行的,每个知识点的修正和深入主要参考…

算法笔记-其他高效的技巧与算法(未处理完)

算法笔记-其他高效的技巧与算法 前缀和 前缀和 #include <cstdio> #include <vector> using namespace std; const int MAXN 10000; int n, a[MAXN]; int sum[MAXN] { 0 };int main() {scanf("%d", &n);for (int i 0; i < n; i) {scanf("…

数据银行:安全保障的重要一环

随着信息技术的快速发展&#xff0c;数据银行已经成为了我们日常生活中不可或缺的一部分。它存储了我们的个人信息、财务数据、医疗记录等重要信息&#xff0c;这些信息对于我们的生活和工作至关重要。然而&#xff0c;由于数据的安全性备受关注&#xff0c;因此&#xff0c;对…

JavaWeb——HTML常用标签

目录 1. 标题标签 2. 段落标签 3. 换行/分割线标签 4. 列表标签 4.1. 有序列表 4.2. 无序列表 5. 超链接标签 6. 多媒体标签 6.1. img 图片标签 6.2. audio 音频标签 6.3. video 视频标签 7. 表格标签(重点) 8. 表单标签&#xff08;重点&#xff09; 1. 标题标签 …

【unity插件】UGUI的粒子效果(UI粒子)—— Particle Effect For UGUI (UI Particle)

文章目录 前言插件地址描述特征Demo 演示如何玩演示对于 Unity 2019.1 或更高版本对于 Unity 2018.4 或更早版本 用法基本上是用法使用您现有的 ParticleSystem 预制件带 Mask 或 RectMask2D 组件脚本用法UIParticleAttractor 组件开发说明常见问题解答&#xff1a;为什么我的粒…

计算机组成原理——指令系统题库21-40

21、假定指令地址码给出的是操作数的存储地址&#xff0c;则该操作数采用的是什么寻址。 A、 立即    B、 直接     C、 基址     D、 相对 22、寄存器间接寻址方式的操作数存储在什么中 A、 通用寄存器    B、 存储单元     C、 程序计数器     …

error: C3867: “MainWindow::copyFileCallBack”: 非标准语法;请使用 ““

error: C3867: “MainWindow::copyFileCallBack”: 非标准语法&#xff1b;请使用 “&” 这时候我们按照提示将t.testFun前面加上&又会出现error C2276: “&”: 绑定成员函数表达式上的非法操作&#xff0c; 解决 在函数前面加上static声明

MySQL(16):变量、流程控制与游标

变量 在MySQL数据库的存储过程和函数中&#xff0c;可以使用变量来存储查询或计算的中间结果数据&#xff0c;或者输出最终的结果数据。 在 MySQL 数据库中&#xff0c;变量分为 系统变量 以及 用户自定义变量 。 系统变量 变量由系统定义&#xff0c;不是用户定义&#xff…

缩点+图论路径网络流:1114T4

http://cplusoj.com/d/senior/p/SS231114D 重新梳理一下题目 我们先建图 x → y x\to y x→y&#xff0c;然后对点分类&#xff1a;原串出现点&#xff0c;原串未出现点。 假如我们对一个原串出现点进行了操作&#xff0c;那么它剩余所有出边我们立刻去操作必然没有影响。所…

由于找不到msvcp140.dll无法继续执行代码有哪些解决方法

msvcp140.dll是Microsoft Visual C 2015 Redistributable的一个组件&#xff0c;它是运行许多Windows应用程序所必需的。当msvcp140.dll丢失或损坏时&#xff0c;可能会导致以下问题&#xff1a; 1. 程序无法启动或崩溃。 2. 系统出现错误提示&#xff0c;如“找不到msvcp140…

SQL-LABS

less8 and 11-- 12 发现存在注入点 接下来我们会接着用联合查询 和以往的题目不一样没显错位&#xff0c;也就是没有报错的内容&#xff0c;尝试用盲注 布尔型 length&#xff08;&#xff09;返回长度 substr&#xff08;&#xff09;截取字符串&#xff08;语法substr&a…

取消Element UI响应式设计——打造固定布局的菜单

引言 在当今的Web开发中&#xff0c;响应式设计已经成为了一个不可或缺的部分。然而&#xff0c;有时候我们可能需要取消这种响应式特性&#xff0c;尤其是对于一些特定的界面元素&#xff0c;如导航菜单。在Element UI框架中&#xff0c;导航菜单&#xff08;el-menu&#xff…

c++范围for语句

语法格式 for(declaration:expression)statement 基本使用 遍历输出 vector<int> nums { 1,2,3,4,5}; for (int num : nums) {num;cout << num << " "; } cout << endl; 遍历时修改 vector<int> nums { 1,2,3,4,5}; for (int&…

软件外包的需求整理技巧

在软件开发中&#xff0c;整理需求是确保项目成功的重要步骤之一。以下是一些整理需求的技巧&#xff0c;这些技巧有助于确保需求的清晰性、完整性和可行性&#xff0c;为项目的成功打下坚实的基础。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢…

clickhouse的安装和配置

使用虚拟机测试, 系统为ubuntu 22.04 一 安装 sudo apt-get install -y apt-transport-https ca-certificates dirmngr sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 8919F6BD2B48D754echo "deb https://packages.clickhouse.com/deb stable ma…

单链表经典OJ题(三)

目录 1、反转链表 2、合并两个有序链表 3、链表的中间结点 4、环形链表的约瑟夫问题 5、移除链表元素 6、移除元素 1、反转链表 206. 反转链表 - 力扣&#xff08;LeetCode&#xff09; 翻转链表的实质就是更改当前结点的前驱结点和后继结点 假设原链表为:1->2->…