一.5 高速缓存至关重要

news2024/11/15 11:34:43

        这个简单的示例揭示了一个重要的问题,即系统花费了大量的时间把信息从一个地方挪到另一个地方。hello程序的机器指令最初是存放在硬盘上,当程序加载时,它们被复制到主存;当处理器运行程序时,指令又从主存复制到处理器。相似的,数据串“hello,world\n”开始时在硬盘上,然后被复制到主存,最后从主存复制到显示设备。从程序员的角度来看,这些复制就是开销,减慢了程序“真正”的工作。因此,系统设计者的一个主要目标就是使这些复制操作尽可能快地完成。

        根据机械原理,较大的储存设备要比较小的储存设备运行得慢,而快速设备的造价远高于同类的低俗设备。比如说,一个典型系统上的磁盘驱动器可能比主存大1000倍,但是对处理器而言,从磁盘驱动器上读取一个字的时间开销要比从主存中读取的开销大1000万倍。

        类似的,一个典型的寄存器文件只存储几百字节的信息,而主存里可存放几十亿字节。然而,处理器从寄存器文件中读取数据比从主存中读取几乎要快100倍。更麻烦的是,随着这些年半导体技术的进步,这种处理器与主存之间的差距还在持续增大。加快处理器的运行速度比加快主存的运行速度要容易和便宜的多。

        针对这种处理器与主存之间的差异,系统设计者采用了更小更快的存储设备,称为高速缓存存储器(cache memory,简称为cache或高速缓存),作为暂时的集结区域,存放处理器近期可能会需要的信息。图1-8展示了一个典型系统中的高速缓存存储器。位于处理器芯片上的L1高速缓存的容量可以达到数万字节,访问速度几乎和访问寄存器文件一样快。一个容量为数十万到数百万字节的更大的L2高速缓存通过一条特殊的总线连接到处理器。进程访问L2高速缓存的时间要比访问L1高速缓存的时间长5倍,但是这仍然比访问主存的时间快5~10倍。L1和L2高速缓存是用一种叫做静态随机访问存储器(SRAM)的硬件技术实现的。比较新的、处理能力更强大的系统甚至有三级高速缓存:L1、L2和L3。系统可以获得一个很大的存储器,同时访问速度也很快,原因是利用了高速缓存的局部性原理,即程序具有访问局部区域里的数据和代码的趋势。通过让高速缓存里存放可能经常访问的数据,大部分的内存操作都能在快速的高速缓存中完成。        本书得出的重要结论之一就是,意识到高速缓存存储器存在的应用程序员利用高速缓存将程序的性能提高一个数量级。你将在第六章里学习这些重要的设备以及如何利用它们。

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

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

相关文章

C++报警:warning: zero as null pointer constantstddef.h

源码和警告内容 解决办法: select(0,nullptr,nullptr,nullptr,&delay); 关于NULL和nullptr的区别: 在C中,nullptr和null(通常指的是NULL宏,因为C标准中并没有直接定义null关键字)都用于表示空指针&am…

基于eBPF的procstat软件追踪等待锁和持有锁的时间

在并发编程中,锁的使用是保证线程安全的重要手段。然而,过度使用锁或者锁竞争可能导致性能瓶颈。为了分析程序中锁的使用情况,我们可以借助procstat软件来追踪程序加锁时间和等待锁的时间。procstat是一个基于eBPF(extended Berke…

uniapp安卓端实现语音合成播报

最初尝试使用讯飞语音合成方式,能获取到语音数据,但是数据是base64格式的,在安卓端无法播放,网上有说通过转成blob格式的url可以播放,但是uniapp不支持转换的api;于是后面又想其他办法,使用安卓插件播报原生安卓语音播报插件 - DCloud 插件市场 方案一(讯飞语音合成) 1.在讯飞…

AGE Cypher 查询格式

使用 ag_catalog 中的名为 cypher 的函数构建 Cypher 查询,该函数返回 Postgres 的记录集合。 Cypher() Cypher() 函数执行作为参数传递的 Cypher 查询。 语法:cypher(graph_name, query_string, parameters) 返回: A SETOF records 参…

[240709] X-CMD 发布 v0.3.15:新增 uname、coin、df 和 uptime 模块;优化非 Posix Shell

目录 X-CMD 发布 v0.3.15✨ uname✨ coin✨ df✨ uptime✨ fish | onsh | nu | elv✨ go✨ env X-CMD 发布 v0.3.15 ✨ uname 新增了 uname 模块,用于增强 uname 命令的功能。 ✨ coin 新增了 coin 模块,作为 CoinCap 平台信息查看器。 ✨ df 新增了…

Prometheus+Grafana监控Linux主机

1、安装Prometheus 1.1 、下载Prometheus 下载网址 https://github.com/prometheus/prometheus/releases选择需要的版本 wget https://github.com/prometheus/prometheus/releases/download/v2.53.0/prometheus-2.53.0.linux-amd64.tar.gz1.2、安装Prometheus软件 1.2.1、…

命名空间namespace--c++入门基础等

个人主页点这里~ 1.命名空间-namespace 简介 :在C/C中,变量、函数和后面要学到的类都是大量存在的,这些变量、函数和类的名称将都存在于全局作用域中,可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地化&#xf…

递归、搜索与回溯算法 2024.7.4-24.7.9

专题介绍&#xff1a; 一、递归 1、汉诺塔问题 class Solution {public void hanota(List<Integer> A, List<Integer> B, List<Integer> C) {int n A.size();move(n,A,B,C);// 将A柱上的n个盘子通过借助B盘子全部挪到C柱子上}void move(int m,List<Integ…

UI组件库---vantList组件接口多次调用大坑问题

问题描述&#xff1a;当使用refesh下拉操作时&#xff0c;vanlist组件会多次调用&#xff08;大概三次&#xff09;&#xff01; 解决方案&#xff1a; 1、接口错误的时候&#xff0c;大量重复请求。 可能接口错误时vant3内部某些变量没重置&#xff0c;导致一直重复请求&am…

08.C2W3.Auto-complete and Language Models

往期文章请点这里 目录 N-Grams: OverviewN-grams and ProbabilitiesN-gramsSequence notationUnigram probabilityBigram probabilityTrigram ProbabilityN -gram probabilityQuiz Sequence ProbabilitiesProbability of a sequenceSequence probability shortcomingsApproxi…

tauri如何实现窗口拖动,自定义标题栏

文章目录 一、tauri是什么&#xff1f;二、封装好的标题栏&#xff0c;引用修改即可使用三 相关配置实现细节实现窗口拖动 一、tauri是什么&#xff1f; Tauri是一个开源框架&#xff0c;用于创建跨平台的桌面应用程序。它使用Rust编程语言&#xff0c;并结合了现有的Web技术&…

javascript DOM BOM 笔记

Web API API的概念 API&#xff08;Application Programming Interface,应用程序编程接口&#xff09;是一些预先定义的函数&#xff0c;目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力&#xff0c;而又无需访问源码&#xff0c;或理解内部工作机制的细…

PLM系统供应商:PLM系统供应商哪家好

PLM系统供应商&#xff1a;PLM系统供应商哪家好 在智能制造时代&#xff0c;产品生命周期管理&#xff08;PLM&#xff09;系统已成为企业提升产品创新能力、优化生产流程、加速产品上市的关键工具。作为这一领域的核心力量&#xff0c;PLM系统供应商正以前所未有的速度和深度&…

vue3实现无缝滚动 列表滚动 vue3-seamlessscroll

vue3框架内使用无缝滚动&#xff0c;使用一个插件比较合适&#xff08;gitee地址&#xff09;&#xff1a; vue3-seamless-scroll: Vue3.0 无缝滚动组件 具体更多配置请看&#xff1a; 组件配置 | vue3-scroll-seamless 1. 安装&#xff1a; npm install vue3-seamless-sc…

红酒与电影经典:那些银幕上的醉人瞬间

在光影交织的银幕世界里&#xff0c;红酒不仅是品味生活的象征&#xff0c;更是情感与故事的催化剂。每当夜幕降临&#xff0c;一杯色泽深邃的红酒&#xff0c;便能带我们走进那些令人陶醉的影片瞬间&#xff0c;感受不同的人生百态。今天&#xff0c;就让我们一起回味那些银幕…

【北京迅为】《i.MX8MM嵌入式Linux开发指南》-第一篇 嵌入式Linux入门篇-第十二章 Linux 权限管理

i.MX8MM处理器采用了先进的14LPCFinFET工艺&#xff0c;提供更快的速度和更高的电源效率;四核Cortex-A53&#xff0c;单核Cortex-M4&#xff0c;多达五个内核 &#xff0c;主频高达1.8GHz&#xff0c;2G DDR4内存、8G EMMC存储。千兆工业级以太网、MIPI-DSI、USB HOST、WIFI/BT…

25考研,数二全程跟的张宇老师请问660(做了一半)880和张宇1000题应该怎么选择?

跟张宇老师&#xff0c;也可以做其他的题集&#xff0c;不一定非要做1000题 我当初考研复习的时候&#xff0c;也听了张宇老师的课程&#xff0c;但是我并没有做1000题 因为1000题对于我来说太难了。做了一章之后&#xff0c;就换成其他的题目了。 对于大家来说&#xff0c;…

MySQL——第一次作业

部署MySQL 8.0环境 1&#xff0c;删除之前存在的MySQL程序 控制面板删除 2&#xff0c;删除完成后下载MySQL 官网&#xff1a; https://www.mysql.com 在window下下载MSI版本 3&#xff0c;自定义安装 4&#xff0c;配置环境变量 1&#xff0c;系统高级系统设置 2&#xff…

网络通信、BIO、NIO

1. 涉及的网络基础知识 Socket&#xff1a; 操作系统提供的api&#xff0c;介于应用层和tcp/ip层之间的软件层&#xff0c;封装服务器客户端之间网络通信相关内容&#xff0c;方便调用 IO多路复用&#xff1a; &#xff08;I/O Multiplexing&#xff09;是一种IO操作模式&a…

《算法笔记》总结No.5——递归

一.分而治之 将原问题划分为若干个规模较小而结构与原问题相同或相似的子问题&#xff0c;然后分别解决这些子问题&#xff0c;最后合并子问题的解&#xff0c;即可得到原问题的解&#xff0c;步骤抽象如下&#xff1a; 分解&#xff1a;将原问题分解为若干子问题解决&#x…