热门标签 | 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代码,提高开发效率。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • vue使用
    关键词: ... [详细]
  • 一、Hadoop来历Hadoop的思想来源于Google在做搜索引擎的时候出现一个很大的问题就是这么多网页我如何才能以最快的速度来搜索到,由于这个问题Google发明 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • PHP图片截取方法及应用实例
    本文介绍了使用PHP动态切割JPEG图片的方法,并提供了应用实例,包括截取视频图、提取文章内容中的图片地址、裁切图片等问题。详细介绍了相关的PHP函数和参数的使用,以及图片切割的具体步骤。同时,还提供了一些注意事项和优化建议。通过本文的学习,读者可以掌握PHP图片截取的技巧,实现自己的需求。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • qt学习(六)数据库注册用户的实现方法
    本文介绍了在qt学习中实现数据库注册用户的方法,包括登录按钮按下后出现注册页面、账号可用性判断、密码格式判断、邮箱格式判断等步骤。具体实现过程包括UI设计、数据库的创建和各个模块调用数据内容。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
  • 本文详细介绍了MysqlDump和mysqldump进行全库备份的相关知识,包括备份命令的使用方法、my.cnf配置文件的设置、binlog日志的位置指定、增量恢复的方式以及适用于innodb引擎和myisam引擎的备份方法。对于需要进行数据库备份的用户来说,本文提供了一些有价值的参考内容。 ... [详细]
  • JavaScript设计模式之策略模式(Strategy Pattern)的优势及应用
    本文介绍了JavaScript设计模式之策略模式(Strategy Pattern)的定义和优势,策略模式可以避免代码中的多重判断条件,体现了开放-封闭原则。同时,策略模式的应用可以使系统的算法重复利用,避免复制粘贴。然而,策略模式也会增加策略类的数量,违反最少知识原则,需要了解各种策略类才能更好地应用于业务中。本文还以员工年终奖的计算为例,说明了策略模式的应用场景和实现方式。 ... [详细]
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社区 版权所有