热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

计算机体系结构——储存层次

计算机体系结构——储存层次计算机的储存层次定义了计算机如何储存数据,一种典型的储存层次为:代号名称说明L0寄存器寄存器的数据从内存缓存中获取数据L1
计算机体系结构——储存层次

计算机的储存层次定义了计算机如何储存数据,一种典型的储存层次为:

代号名称说明
L0寄存器寄存器的数据从内存缓存中获取数据
L1芯片内高速缓存( SRAM )L1 缓存从 L2 缓存获取数据
L2芯片外缓存( SRAM )L2 缓存从内存中获取数据
L3主存( DRAM )主存从本地硬盘获取数据
L4本地存储硬盘储存计算机产生的数据或者从网络中获取数据
L6远程储存包括网络分发文件系统, Web 服务等

这些储存结构从上到下依次:

  • 容量递增;
  • 价格递减‘;
  • 速度递减;
  • 体积递增。

储存层次中的缓存

储存层次第 k 层是第 k+1 层的缓存,缓存的主要作用是将那些在 k+1 层经常使用的数据块复制到第 k 层,这样就可以提高访问的速度。

缓存命中

当程序想要获取第 j 个数据块,发现第 k 层缓存缓存了这个数据块称为缓存命中。

一个好的程序通常需要具有好的缓存友好性,分为:

  1. 时间缓存友好性,指程序应该在短时间内访问同一个变量。
  2. 空间缓存友好性,程序应该连续访问数据,而不是跨越访问数据。

上面两点都能提高缓存命中的概率。

缓存失效

当程序想要获取第 j 个数据块,发现第 k 层缓存没有缓存第 j 个数据块,进而要从第 k+1 层获取第 j 个数据块,称为缓存失效。

如果第 k 层的缓存空间使用已满,这时需要用第 j 个数据块去覆盖某个数据块。被覆盖的数据块称为牺牲数据块,觉得被覆盖的数据块取决于缓存替换算法。例如,随机缓存替换随机选取一个数据块进行替换, LRU 缓存算法将替换距最后一次访问时间距离现在最长的那个数据块。

缓存失效的类型

如果第 k 层缓存是空的,即没有任何数据块,称为冷缓存。此时的缓存失效类型称为强制失效或者 冷失效 ,这种缓存失效持续时间不长,常发生在缓存预热之前。

第 k 层的储存通常比第 k+1 层小的很多,如何在第 k 层放置数据块和定位数据块成了一个严峻的问题。通常来说,使用一种取余策略,即将第 k + 1层第 i 个数据块放在第 k 层的第 imod4i \mod 4imod4 的位置上,假如第 k 层有 4 个可用的位置。

这种策略引发了一种 冲突性失效的缓存失效 的类型,例如程序连续访问 0,8,0,8,0,8 恰好这两个数据块共用一个缓存位置,那么每次查询缓存的时候都被另外一个占用,缓存永远无法发挥作用。

最后一种,当程序反复使用一段内存,但是这段内存大于缓存区的长度,那么这段内存将会重复载入缓存区,造成 容量缓存失效


推荐阅读
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • vue使用
    关键词: ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • Webpack5内置处理图片资源的配置方法
    本文介绍了在Webpack5中处理图片资源的配置方法。在Webpack4中,我们需要使用file-loader和url-loader来处理图片资源,但是在Webpack5中,这两个Loader的功能已经被内置到Webpack中,我们只需要简单配置即可实现图片资源的处理。本文还介绍了一些常用的配置方法,如匹配不同类型的图片文件、设置输出路径等。通过本文的学习,读者可以快速掌握Webpack5处理图片资源的方法。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • qt学习(六)数据库注册用户的实现方法
    本文介绍了在qt学习中实现数据库注册用户的方法,包括登录按钮按下后出现注册页面、账号可用性判断、密码格式判断、邮箱格式判断等步骤。具体实现过程包括UI设计、数据库的创建和各个模块调用数据内容。 ... [详细]
  • JavaScript设计模式之策略模式(Strategy Pattern)的优势及应用
    本文介绍了JavaScript设计模式之策略模式(Strategy Pattern)的定义和优势,策略模式可以避免代码中的多重判断条件,体现了开放-封闭原则。同时,策略模式的应用可以使系统的算法重复利用,避免复制粘贴。然而,策略模式也会增加策略类的数量,违反最少知识原则,需要了解各种策略类才能更好地应用于业务中。本文还以员工年终奖的计算为例,说明了策略模式的应用场景和实现方式。 ... [详细]
  • eclipse学习(第三章:ssh中的Hibernate)——11.Hibernate的缓存(2级缓存,get和load)
    本文介绍了eclipse学习中的第三章内容,主要讲解了ssh中的Hibernate的缓存,包括2级缓存和get方法、load方法的区别。文章还涉及了项目实践和相关知识点的讲解。 ... [详细]
  • 本文介绍了PhysioNet网站提供的生理信号处理工具箱WFDB Toolbox for Matlab的安装和使用方法。通过下载并添加到Matlab路径中或直接在Matlab中输入相关内容,即可完成安装。该工具箱提供了一系列函数,可以方便地处理生理信号数据。详细的安装和使用方法可以参考本文内容。 ... [详细]
  • 无损压缩算法专题——LZSS算法实现
    本文介绍了基于无损压缩算法专题的LZSS算法实现。通过Python和C两种语言的代码实现了对任意文件的压缩和解压功能。详细介绍了LZSS算法的原理和实现过程,以及代码中的注释。 ... [详细]
author-avatar
佳品h空投
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有