Cache的基本概念和原理

目錄

  • 一. Cache的工作原理
  • 二. 局部性原理
  • 三. 性能分析
  • 四. 待解決的問題

\quad

一. Cache的工作原理

\quad

存儲系統存在的問題

雖然雙端口RAM、多模塊存儲器提高存儲器的工作速度, 但是優化后的速度與CPU差距依然很大, 為了改善這個問題就出現了Cache, 來解決存儲器與CPU速度不匹配問題
\quad

在這里插入圖片描述
當我們啟動微信的時候, 微信里面的數據就會從輔存復制到內存
在視頻聊天的時候, "視頻聊天"的相關代碼會被頻繁的訪問
\quad

在這里插入圖片描述
對于被頻繁訪問的數據就可以復制到Cache, CPU在調用Cache里的數據就不會有太大的速度矛盾

注:實際上,Cache被集成在CPU內部, Cache用SRAM實現,速度快,成本高, 由于SRAM集成度比較低, 注定不能做得很大, 所以Cache的容量一般都很小

\quad

二. 局部性原理

\quad
在這里插入圖片描述

空間局部性:在最近的未來要用到的信息(指令和數據),很可能與現在正在使用的信息在存儲空間上是鄰近的(多出現在數組元素、順序執行的指令代碼)

時間局部性:在最近的未來要用到的信息,很可能是現在正在使用的信息(多出現在循環結構的指令代碼)

基于局部性原理,不難想到,可以把CPU目前訪問的地址“周圍”的部分數據放到cache中

\quad

三. 性能分析

\quad
在這里插入圖片描述
t c t_c tc?表示訪問Cache的時間
t m t_m tm?表示訪問Memory(內存)的時間
在這里插入圖片描述
\quad

那如果是同時訪問Cache和內存, 在Cache中找到, 就立即停止對內存的訪問
在這里插入圖片描述
\quad

在這里插入圖片描述

\quad

四. 待解決的問題

\quad
基于局部性原理,不難想到,可以把CPU目前訪問的地址“周圍”的部分數據放到cache中。如何界定“周圍”?

將主存的存儲空間“分塊”
如:每1KB為一塊。主存與Cache之間以“塊”為單位遂行數據交換

注:操作系統中,通常將主存中的 "一個塊”也稱為 —個頁/頁面/頁框”, Cache中的“塊”也稱為“行”
在這里插入圖片描述
4MB=22 + 220 =222
1KB=210
222÷210=212=4096

在這里插入圖片描述

\quad
在這里插入圖片描述
敬請期待…

\quad

王道考研計算機組成原理

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/211229.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/211229.shtml
英文地址,請注明出處:http://en.pswp.cn/news/211229.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

創作活動(五十一)———編程中常見的技術難題有哪些?

#編程中常見的技術難題有哪些?# 編程世界里的三大謎題:bug、性能優化與跨平臺兼容性 每個職業都有其固有的挑戰和困難,對于程序員來說,這些困難往往來自于技術本身。編程,就像是一個充滿謎題的世界,而程序…

大屏適配方案二——vw和vh

按照設計稿的尺寸,將px按比例計算轉為vw和vh,轉換公式如下 假設設計稿尺寸為 1920*1080(做之前一定問清楚 ui 設計稿的尺寸)即: 網頁寬度1920px 網頁高度1080px我們都知道 網頁寬度100vw 網頁寬度100vh所以&#xff0…

ubuntu安裝docker及docker常用命令

docker里有三個部分 daemon 鏡像 和 容器 我們需要了解的概念 容器 鏡像 數據卷 文章目錄 docker命令docker鏡像相關命令docker容器相關命令數據卷ubuntu安裝docker docker命令 #啟動,停止,重啟docker systemctl start docker systemctl stop docker s…

SpringBoot的依賴管理和自動配置

與其明天開始,不如現在行動! 文章目錄 1 依賴管理機制2 自動配置機制2.1 初步理解2.2 完整流程 💎總結 1 依賴管理機制 為什么導入starter-web后所有相關依賴都會導入進來? 開發什么場景,導入什么場景啟動器-spring-bo…

vscode調試pytorch分布式訓練

launch.json文件如下"cwd" "${fileDirname}"表示代碼調試的根目錄是當前你調試的文件,也就是pretrain.py所在的目錄。其他路徑參數都是相對這個目錄的 如果改成"cwd" "${workspaceFolder}" 表示代碼調試的根目錄是打開的工…

【Python百寶箱】構筑銅墻鐵壁:Python 認證與授權庫實戰指南

Python認證與授權:構建安全、可擴展的應用 前言 在當今數字化時代,用戶認證和授權是構建安全、可信任的應用程序的基石。Python生態系統提供了豐富而強大的庫和工具,以支持多種身份驗證和授權方案。本文將深入探討一系列Python庫&#xff0…

MyBatis框架中的5種設計模式總結

前言 MyBatis框架中使用的5種設計模式分別是:1、建造者模式(生成器模式)。2、工廠模式。3、單例模式。4、代理模式。5、適配器模式。 1、建造者模式(生成器模式) 在MyBatis環境的初始化過程中,SqlSessio…

Redis 環境搭建2

文章目錄 第2關:使用 Redis 第2關:使用 Redis 本文是接著上篇文章寫的第二關代碼,部分人再進入第二關時不會保留第一關的配置的環境,可以通過下面一句代碼進行檢驗。 redis-cli -p 7001 -c如果進入到了redis界面就是有環境&…

問題:batchnormal訓練單個batch_size就會報錯嗎

Batch Normalization(批標準化)是一種深度學習中的正則化技巧,它可以改進網絡的訓練過程。在訓練神經網絡時,Batch Normalization可以幫助解決內部協變量偏移(Internal Covariate Shift)的問題。 在標準的…

pytorch serve開始-Getting started

官網鏈接 Getting started — PyTorch/Serve master documentation 安裝TorchServe和torch-model-archiver 安裝依賴 注意::對于Conda,運行Torchserve需要Python >3.8。 對于基于Debian的系統/ MacOS CPU python ./ts_scripts/install_dependencies.py 對…

【Hadoop】高可用集群搭建

知識目錄 一、寫在前面💕二、Zookeeper安裝?三、Hadoop配置?四、Hadoop HA自動模式?五、HA腳本分享?七、結語💕 一、寫在前面💕 大家好!這篇文章是我在搭建Hdfs的HA(高可用)時寫下的詳細筆記與感想,希望能幫助到大…

Notes數據直接在Excel中統計

大家好,才是真的好。 我希望你看過前面兩篇內容《Domino REST API安裝和運行》和《Domino REST API安裝和運行》,因為今天我們正是使用REST API方式在Excel中查詢和統計Notes數據。 不過首先你得知道一個OData協議,全名Open Data Protocol(…

五花八門客戶問題(BUG) - 用好strace2

目錄 前言 strace與gdb的沖突 細看strace 前言 上文通過strace trace它自個看到了strace的原理:確實是調用了ptrace函數實現的。今天我們再細看一看。 strace與gdb的沖突 既然它兩底層都是用ptrace,那么一定不能同時用在同一個進程上。實例驗證: [root]# strace sleep…

布隆過濾器,Redis之 bitmap,場景題【如果微博某個大V發了一條消息,怎么統計有多少人看過了】

文章目錄 一、什么是 bitmap1-1、Bitmap 相關命令二、bitmap 和 set 對比2-1、數據準備2-2、內存對比2-3、性能對比三、布隆過濾器3-1、理論主要作用如何將數據放到過濾器內呢?注意事項布隆過濾器 有兩個重要的參數3-2、代碼實現3-3、Java中的hash函數最近面試,面試官問了一個…

Windows系統Java開發環境安裝

總結一下Java軟件開發工程師常見的環境的安裝,僅限Windows環境。 以下下載鏈接均來自官網,網絡條件自己克服。 目錄 1. JDKJDK Oracle 官網下載地址配置系統環境變量 2. Mavenapache maven 官網地址本地倉庫和中央倉庫配置配置系統環境變量 3. GitGit 官…

springboot3 liquibase SQL執行失敗自動回滾,及自動打tag

一&#xff1a; 自動執行回滾&#xff0c; 已執行成功的忽略&#xff0c;新sql執行失敗則執行新sql文件中的回滾sql pom.xml <dependency> <groupId>org.liquibase</groupId> <artifactId>liquibase-core</artifactId> <version>4.25.0&…

【工廠方法】設計模式項目實踐

前言 以采集數據處理邏輯為例&#xff0c;數據采集分為不同種類如&#xff1a;MQTT、MODBUS、HTTP等&#xff0c;不同的采集數據有不同的解析處理邏輯。但總體解析處理步驟是固定的。可以使用工廠方法設計模式簡化代碼&#xff0c;讓代碼變得更加優雅。 代碼實踐 抽象類 總體…

分布式環境下的session 共享-基于spring-session組件和Redis實現

1、問題概述 不是所有的項目都是單機模式的&#xff0c;當一個項目服務的局域比較廣&#xff0c;用戶體量比較大&#xff0c;數據量較大的時候&#xff0c;我們都會將項目部署到多臺服務器上&#xff0c;這些個服務器都是分布在不同的區域&#xff0c;這樣實現了項目的負載和并…

Redis有序集合對象

一.編碼 有序集合的編碼可以是ziplist或者skiplist。 ziplist編碼的有序集合對象使用壓縮列表作為底層實現&#xff0c;每一個集合元素使用緊挨在一起的兩個壓縮列表節點來保存。第一個節點保存元素的成員(member)&#xff0c;而第二個元素則保存元素的分值(score)。 127.0.0.…

鴻蒙app獲取文本控件按鈕控件_修改控件名稱_按鈕觸發事件_提示信息顯示

鴻蒙app獲取文本控件按鈕控件_修改控件名稱_按鈕觸發事件_ 點擊啟動&#xff1a;提示信息顯示 package com.example.myapplication.slice;import com.example.myapplication.ResourceTable; import ohos.aafwk.ability.AbilitySlice; import ohos.aafwk.content.Intent; impor…