热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

计算机高速缓冲存储器工作原理,高速缓冲存储器部件结构及原理解析

高速缓冲存储器部件结构及原理解析高速缓存CACHE用途设置在CPU和主存储器之间,完成高速与CPU交换信息,尽量避免CPU不必要地多次直接访问慢速的主存储器,从而提高计算机系统的运

高速缓冲存储器部件结构及原理解析

高速缓存 CACHE用途设置在 CPU 和 主存储器之间,完成高速与 CPU交换信息,尽量避免 CPU不必要地多次直接访问慢速的主存储器,从而提高计算机系统的运行效率。

高速缓存 CACHE实现原理把CPU最近最可能用到的少量信息(数据或指令)从主存复制到CACHE中,当CPU下次再用到这些信息时,它就不必访问慢速的主存,而直接从快速的CACHE中得到,从而提高了速度。

评价CACHE性能的关键指标要有足够高的命中率,当CPU需用主存中的数据时,多数情况下可以直接从CACHE中得到,尽量少读主存储器。称二者之比为命中率。

一、CACHE的基本运行原理

1、 CACHE的存储单元的组成

CACHE的存储单元是由三部分组成的

1位有效位:“0”表示该单元尚未使用,“1”表示数据有效

《计算机高速缓冲存储器工作原理,高速缓冲存储器部件结构及原理解析》

(1) CACHE单元不一定以字为单位与主存实现相互对应,因为存储一个完整的主存地址占用位数太多。

(2) CACHE与主存交换信息时,不一定每次以一个主存字为单位进行交换,常用的是以字块的形式(cache line size)进行数据传送。

二、CACHE的3种映像方式

地址映像:把主存地址的数据复制到cache时,还要把该主存的地址经过某种函数关系处理后写进CACHE的标志字段,这一过程称为CACHE的地址映像。

地址变换:在程序执行时,要把主存地址变换为访问CACHE的地址,这一过程称为CACHE的地址变换。

这二者的处理方案是密切相关的。

1、全相联映像方式

《计算机高速缓冲存储器工作原理,高速缓冲存储器部件结构及原理解析》

全相联映像方式的优缺点

地址映像:写入CACHE时,要将主存的全部地址写入CACHE的标志字段

地址变换:用读主存的整个地址去与CACHE中的每一个单元的标志字段进行比较。

优点:使用灵活、方便

缺点:比较地址字段必须与整个CACHE中每一个单元的标志字段都进行比较,所以线路复杂,成本太高,难以实现,只是适用于容量小的CACHE。

2、直接映射方式

《计算机高速缓冲存储器工作原理,高速缓冲存储器部件结构及原理解析》

直接映射方式

地址映像:写入CACHE时,仅将主存的区段号写入CACHE的标志字段

地址变换:要将读主存地址中的区段内偏移地址去访问CACHE的一个单元,只需用主存地址的区段号与标志字段内容进行比较。

3、多路(两路)组相联方式

《计算机高速缓冲存储器工作原理,高速缓冲存储器部件结构及原理解析》

多路(两路)组相联方式实现原理

把 CACHE存储器组织为同等容量的多体结构,例如2个存储体。主存仍然划分成容量等于每个CACHE存储体的多个区段。

主存地址格式如下:

区段号

区段内的偏移量

多路(两路)组相联方式

地址映像:写入CACHE时,仅将主存的区段号写入CACHE的标志字段

地址变换:要将读主存地址中的区段内偏移地址去访问每一个CACHE体的一个单元,只需用主存地址的区段号与标志字段内容进行比较。

三、 CACHE存储器实用中的几个问题

CACHE存储器的重要技术指标是它的命中率,影响 CACHE 命中率的因素有:

1.CACHE 的容量与命中率的关系

虽然容量大一些好,但CACHE 容量达到一定大小之后,再增加其容量对命中率的提高并不明显。

2、 Cache Line Size ( CACHE每次与内存交换信息的单位量)与命中率的关系:

每次交换信息的单位量适中,不是以一个字为单位,而是以几个字(称为CACHE行容量,通常为4~32个字节)在主存与CACHE之间实现信息传送。

3、多级的CACHE结构与命中率的关系:

《计算机高速缓冲存储器工作原理,高速缓冲存储器部件结构及原理解析》

4.CACHE的不同映像方式与命中率的关系:

全相联映像方式不适用

直接映像方式命中率低

多路组相联方式性能/价格比更好

直接映像方式中CACHE容量为8K字,被分成1024组,每组8个字,同时,主存也分成8个字的组,1024组构成一页。主存的0组只能映射到CACHE的0组,主存的1组只能映射到CACHE的1组,依次类推。地址结构如下:

5、写CACHE的策略和对系统的影响

(1)一个外设向主存写入了一个数据,该主存单元原先的副本在CACHE中,出现不一致,此时最简单的办法就是把CACHE中相应单元的有效位清除掉,当CPU再次需这一主存单元时,只能从主存重新取得而不会使用CACHE中的旧值。

(2)改写主存储器的策略

若CPU改写了 CACHE 一单元内容后且尚未改变主存相应单元内容,则出现数据不一致性。两种解决办法:

第1.接下来直接改写主存单元内容。简便易行, 但可能带来系统运行效率不高的问题,该后未被使用。

第2.拖后改写主存单元内容,一直拖到有另外的设备要读该内容过时的主存单元时。首先停止这一读操作,接下来改写主存内容,之后再起动已停下来的读操作,否则不必改写。

矛盾是如何检查是否应该改写,通过监视地址总线完成,记下无效单元地址用于比较。 控制复杂些,但可以提供更高系统的运行效率。


推荐阅读
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 本文介绍了操作系统的定义和功能,包括操作系统的本质、用户界面以及系统调用的分类。同时还介绍了进程和线程的区别,包括进程和线程的定义和作用。 ... [详细]
  • 上图是InnoDB存储引擎的结构。1、缓冲池InnoDB存储引擎是基于磁盘存储的,并将其中的记录按照页的方式进行管理。因此可以看作是基于磁盘的数据库系统。在数据库系统中,由于CPU速度 ... [详细]
  • LVS实现负载均衡的原理LVS负载均衡负载均衡集群是LoadBalance集群。是一种将网络上的访问流量分布于各个节点,以降低服务器压力,更好的向客户端 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 本文详细介绍了如何使用MySQL来显示SQL语句的执行时间,并通过MySQL Query Profiler获取CPU和内存使用量以及系统锁和表锁的时间。同时介绍了效能分析的三种方法:瓶颈分析、工作负载分析和基于比率的分析。 ... [详细]
  • 海马s5近光灯能否直接更换为H7?
    本文主要介绍了海马s5车型的近光灯是否可以直接更换为H7灯泡,并提供了完整的教程下载地址。此外,还详细讲解了DSP功能函数中的数据拷贝、数据填充和浮点数转换为定点数的相关内容。 ... [详细]
  • 本文介绍了使用Spark实现低配版高斯朴素贝叶斯模型的原因和原理。随着数据量的增大,单机上运行高斯朴素贝叶斯模型会变得很慢,因此考虑使用Spark来加速运行。然而,Spark的MLlib并没有实现高斯朴素贝叶斯模型,因此需要自己动手实现。文章还介绍了朴素贝叶斯的原理和公式,并对具有多个特征和类别的模型进行了讨论。最后,作者总结了实现低配版高斯朴素贝叶斯模型的步骤。 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了软件测试知识点之数据库压力测试方法小结相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 全面介绍Windows内存管理机制及C++内存分配实例(四):内存映射文件
    本文旨在全面介绍Windows内存管理机制及C++内存分配实例中的内存映射文件。通过对内存映射文件的使用场合和与虚拟内存的区别进行解析,帮助读者更好地理解操作系统的内存管理机制。同时,本文还提供了相关章节的链接,方便读者深入学习Windows内存管理及C++内存分配实例的其他内容。 ... [详细]
  • 本文介绍了在Android开发中使用软引用和弱引用的应用。如果一个对象只具有软引用,那么只有在内存不够的情况下才会被回收,可以用来实现内存敏感的高速缓存;而如果一个对象只具有弱引用,不管内存是否足够,都会被垃圾回收器回收。软引用和弱引用还可以与引用队列联合使用,当被引用的对象被回收时,会将引用加入到关联的引用队列中。软引用和弱引用的根本区别在于生命周期的长短,弱引用的对象可能随时被回收,而软引用的对象只有在内存不够时才会被回收。 ... [详细]
  • Python中sys模块的功能及用法详解
    本文详细介绍了Python中sys模块的功能及用法,包括对解释器参数和功能的访问、命令行参数列表、字节顺序指示符、编译模块名称等。同时还介绍了sys模块中的新功能和call_tracing函数的用法。推荐学习《Python教程》以深入了解。 ... [详细]
  • Spring框架《一》简介
    Spring框架《一》1.Spring概述1.1简介1.2Spring模板二、IOC容器和Bean1.IOC和DI简介2.三种通过类型获取bean3.给bean的属性赋值3.1依赖 ... [详细]
author-avatar
涩味122_508
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有