C++ 并發編程指南(11)原子操作 | 11.6、計算機內存結構

文章目錄

  • 一、計算機內存結構
    • 1、內存的基本組成
    • 2、內存的類型
    • 3、內存的結構層次
    • 4、CPU架構
    • 5、局部性原理
    • 6、總結

前言

在探討計算機的運行效率和數據處理能力時,內存結構無疑是一個至關重要的部分。內存,作為計算機系統中的關鍵組件,承擔著存儲數據和指令以供處理器(CPU)快速訪問的重要任務。

一、計算機內存結構

1、內存的基本組成

計算機內存的基本組成單元是存儲單元。每個存儲單元由一個電容和一個晶體管組成,其中電容用于存儲數據,而晶體管則負責控制數據的讀取和寫入。這種設計使得內存能夠在計算機運行時快速、準確地存取數據。

2、內存的類型

  • 靜態隨機存取存儲器(SRAM):SRAM使用觸發器來存儲數據,因此具有較快的讀寫速度。然而,由于其制造成本較高,SRAM通常被用于高速緩存(Cache)等需要快速訪問的場景。
  • 動態隨機存取存儲器(DRAM):DRAM使用電容來存儲數據,雖然讀寫速度稍慢于SRAM,但其制造成本較低,因此被廣泛應用于主存儲器(內存條)中。DRAM需要周期性地進行刷新以保持數據的穩定性。

3、內存的結構層次

計算機內存結構通常呈現出一種層次化的特點,從高到低依次為:寄存器、高速緩存(Cache)、主存儲器(內存條)和輔助存儲器(如硬盤、固態硬盤等)。

  • 寄存器:寄存器是離CPU最近的存儲單元,其讀寫速度最快。CPU可以直接訪問寄存器中的數據,無需經過其他存儲層次。寄存器通常用于存儲CPU正在處理的數據和指令。
  • 高速緩存(Cache):高速緩存位于CPU和主存儲器之間,用于緩存主存儲器中常用的數據和指令。當CPU需要訪問數據時,首先會檢查高速緩存中是否存在所需數據。如果存在,則直接從高速緩存中讀取數據,從而提高了數據的訪問速度。高速緩存通常分為多個層次,如L1 Cache、L2 Cache和L3 Cache等。
  • 主存儲器(內存條):主存儲器是計算機系統中的主要內存,用于存儲正在運行的程序和數據。主存儲器通常由多個存儲體組成,每個存儲體中有許多存儲單元。每個存儲單元可以存儲一個二進制數或一串二進制代碼(稱為存儲字)。存儲字的長度可以是8位、16位、32位等。主存儲器通過地址線、數據線和控制線等接口與CPU相連,實現數據的快速讀寫。
  • 輔助存儲器:輔助存儲器包括硬盤、固態硬盤等存儲介質,用于存儲大量數據和程序。與主存儲器相比,輔助存儲器的讀寫速度較慢,但容量較大且價格相對較低。輔助存儲器中的數據在需要時會被加載到主存儲器中供CPU處理。

4、CPU架構

下面是一個的多核CPU架構圖,如下:

在這里插入圖片描述

  • Core:每個Core獨享SB與L1
  • SB(Store Buffer):Store Buffer是一個緩沖區,用于暫存CPU的寫操作,它允許CPU把數據先寫入Store Buffer,然后繼續執行其他操作,而不是等待數據被寫入緩存或內存后再進行下一步。這樣設計的好處是顯著降低了內存寫延遲對CPU性能的影響。
  • L1 Cache:存儲了CPU近期可能訪問的數據和指令,且兩個L1 Cache獨享一個L2 Cache

注意:上面的CPU架構只是部分CPU采用的架構,并不能代表全部。

為什么需要使用Cache?

如果沒有Cache,CPU每執行一條指令就要到內存中取數據。執行一條指令只需要幾個時鐘周期,而取指令需要上百個時鐘周期,這就將導致CPU大部分時間都處于等待狀態,進而導致執行效率低下,引入了Cache主要解決CPU等待問題。

使用Cache會引入一些新的問題,例如:Cache的一致性、Cache的缺失等,為了解決這些問題,各CPU平臺(ARM/X86/IA64)都有自己的解決方案。軟件層面(編譯器)也會有對應的優化,這導致了CPU執行的程序并不是你寫的那個版本,只是從結果上看不出差異而已。

5、局部性原理

在計算機存儲結構中,局部性原理是一個重要的概念。局部性原理包括時間局部性和空間局部性兩個方面。時間局部性指的是如果一個數據項被訪問了,那么它在不久的將來很可能還會被再次訪問;空間局部性指的是如果一個數據項被訪問了,那么與其相鄰的數據項也很可能被訪問。基于局部性原理,計算機內存結構通常采用緩存機制來提高數據的訪問速度。

6、總結

計算機內存結構是計算機系統中的核心組成部分,其性能直接影響到計算機的運行效率和數據處理能力。通過對內存的基本組成、類型、結構層次以及局部性原理等概念的深入剖析,可以更好地理解計算機內存的工作原理和重要性。

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

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

相關文章

vue從入門到精通(一):Vue模板語法

一,模板語法 Vue 使用一種基于 HTML 的模板語法,使我們能夠聲明式地將其組件實例的數據綁定到呈現的 DOM 上。所有的Vue模板都是語法層面合法的 HTML,可以被符合規范的瀏覽器和 HTML 解析器解析。 Vue模板語法有2大類: 插值語法: 功能:用于解…

請介紹下H264的多參考幀技術及其應用場景,并請說明下為什么要有多參考幀?

H.264(也稱為H.264/AVC)的多參考幀機制是其編碼效率和質量提升的關鍵部分。這個機制允許編碼器在編碼當前幀時,參考多個之前已編碼的幀。這種多參考幀的方法為編碼器提供了更多的選擇,使其能夠更準確地預測當前幀的內容&#xff0…

【保姆級介紹自動化的講解】

🌈個人主頁: 程序員不想敲代碼啊 🏆CSDN優質創作者,CSDN實力新星,CSDN博客專家 👍點贊?評論?收藏 🤝希望本文對您有所裨益,如有不足之處,歡迎在評論區提出指正,讓我們共…

SCP‘s Story

越過“第二夜”的星星,越過“邁克爾連續線”和“禁運線”,在“煤炭之路”最遠的一站,有一顆眼淚。這不是織物或紙上的撕裂,而是現實中的撕裂,是物理定律和常識失效的地方。 有些人稱之為黑洞,銀河系中最大…

【C語言】4.C語言數組(2)

文章目錄 6. 二維數組的創建6.1 ?維數組的概念6.2 ?維數組的創建 7. 二維數組的初始化7.1 不完全初始化7.2 完全初始化7.3 按照?初始化7.4 初始化時省略?,但是不能省略列 8. 二維數組的使用8.1 ?維數組的下標8.2 ?維數組的輸?和輸出 9. 二維數組在內存中的存…

利用一段代碼輕松繞過PHP授權系統

利用一段代碼輕松繞過PHP授權系統 第一步:首先你需要改名全局文件 比如說全局文件 common.php,那么 你將他改為core.php 第二步:創建文件 創建一個文件,和改名前的全局文件名稱一樣,然后把以下代碼復制進去就OK了 …

行列視在做報表之前需要準備哪些前期工作

行列視是一款功能強大的生產數據分析和報表生成工具,使用它進行報表制作之前,確實需要一些前期準備工作,以確保報表的準確性和有效性。以下是進行行列視報表制作前需要準備的一些關鍵步驟: 1.明確報表需求: - 確定報表…

【MySQL01】【 Explain 命令詳解】

文章目錄 一、前言二、Explain 概覽三、Explain 詳解1. id2. select_type3. table4. type5. possible_keys6. key7. key_len8. ref9. rows10. filtered11. extra 列 四、補充1. EXPLAIN 擴展1.1 Extend EXPLAIN1.2 JSON 格式的執行計劃 2. Intersection、Union、Sort-Union 索引…

使用C++實時讀取串口數據(window使用已編譯LibModbus庫并用QT實現一個實時讀取串口數據)

先看這篇文章,寫得很詳細: QT應用篇 四、window編譯LibModbus庫并用QT編寫一個Modbus主機 手把手教學 編譯好的LibModbus庫可以在上面文章里下載,也可以在我的鏈接里下載: 為了在Qt Creator中創建新項目并嵌入上述C代碼,請執行以…

Linux監控apache腳本

監控apache腳本: 1、每十分鐘檢查apache是否正常運行 分析:進程在運行如何判斷 1)lockfile是否存在 2)pid是在后臺存在 3)能否正常訪問頁面 2、如果apache運行不正常(進程死亡、頁面訪問也不正常等情況&am…

C++進階:紅黑樹介紹及模擬實現(圖示詳解過程)

C進階:紅黑樹介紹及模擬實現 上次介紹了AVL樹:C進階:AVL樹詳解及模擬實現(圖示講解旋轉過程) 今天就來緊接著來紅黑樹啦!!! 文章目錄 1.紅黑樹介紹約束規則 2.項目文件規劃3.整體框架(節點和Tree&#xf…

whisper報錯:hp, ht, pid, tid = _winapi.CreateProcess [WinError 2] 系統找不到指定的文件。

in _execute_child hp, ht, pid, tid _winapi.CreateProcess(executable, args, FileNotFoundError: [WinError 2] 系統找不到指定的文件。 原因: 沒裝ffmpeg 或者 ffmpeg沒添加到…

k8s pod就緒探針

Pod 可能需要時間來加載配置或數據,或者可能需要執行預熱過程以防止第一個用戶請求時間太長影響了用戶體驗。在這種情況下,不希望該 pod 立即開始接收請求,尤其是在運行的實例可以正確快速地處理請求的情況下。不要將請求轉發到正在啟動的 po…

YOLOv5獨家改進:backbone改進 | 微軟新作StarNet:超強輕量級Backbone | CVPR 2024

??????創新點:star operation(元素乘法)在無需加寬網絡下,將輸入映射到高維非線性特征空間的能力,這就是StarNet的核心創新,在緊湊的網絡結構和較低的能耗下展示了令人印象深刻的性能和低延遲 ??????如何跟YOLOv5結合:替代YOLOv5的backbone 收錄 YOL…

電容筆記匯總

電容 一、電容理論基礎 1、電容的本質 兩個相互靠近的導體,中間夾一層不導電的絕緣介質,這就構成了電容器。當電容器的兩個極板之間加上電壓時,電容器就會儲存電荷。 兩個相互靠近的金屬板中間夾一層絕緣介質組成的器件,當兩端…

豆漿機缺水檢測功能如何實現的

豆漿機缺水檢測功能的實現是通過光學液位傳感器來完成的。這種傳感器具有多種優勢,如內部所有元器件經過樹脂膠封處理,沒有任何機械活動部件,免調試、免檢驗、免維護等特點。它采用了光電液位傳感器內置的光學電子元件,體積小、功…

Docker常用鏡像安裝

1. mysql 1.1 安裝 獲取鏡像 docker pull mysql:8.0.30創建文件掛載目錄 創建容器并運行 docker run -p 3306:3306 --name mysql8 \ -v /home/docker/mysql8/log:/var/log/mysql \ -v /home/docker/mysql8/data:/var/lib/mysql \ -v /home/docker/mysql8/mysql-files:/va…

保研機試之【設備驅動程序】

B選項: 綜上,我認為這道題選擇D~

一些近來對內網攻防的思考

我知道我最近托更托了很久了,其實也不是小編懶啊 這小編也是一直在寫,但是遇到的問題比較多(我太菜了),所以一直拖著。 但是總不能不更吧 那就講一下進來的一些內網攻防的思考吧 1.CrossC2上線Linux到CS(成功) …

用友網絡的危與機:2023年虧損約10億元,王文京面臨嚴肅拷問

“企業在新的產業浪潮來臨時,應該主動推進新階段的產品和業務創新,這樣才能夠在新的浪潮成為主流的時候,走到行業前面,否則就會從產業發展的潮流中掉下來”。用友網絡創始人王文京,曾用“沖浪理論”形容一家企業成功的…