暑假讀書筆記第一天

今日文章:

小林coding:CPU 是如何執行程序的?

目錄

      • 內存
      • 中央處理器
      • 指令及其周期
        • 指令類型
        • MIPS指令類型
        • 指令周期
      • 指令的執行速度


馮諾依曼計算機遵循了圖靈機的設計,使用了電子元件構造,約定了用二進制進行計算和存儲

圖靈機基本由紙帶和和讀寫頭組成,讀寫頭上有存儲單元,控制單元和運算單元

馮諾依曼模型定義了計算機基本結構為5部分:運算器、控制器、存儲器、輸入設備、輸出設備

關系大致如圖,運算器和控制器在中央處理器中,存儲器為內存,輸入輸出設備則是計算器外接的設備

在這里插入圖片描述

內存

內存存儲數據的基本單位是字節(byte),1字節等于8位(8bit)

程序和數據都存儲在內存中,內存的存儲區域是線性的,地址從0開始編號,自增排列,所以內存讀寫任何一個數據的速度基本一致

中央處理器

即CPU,32位和64位CPU最主要的區別在于一次能處理多少字節數據

32位寄存器一次能計算的最大整數是4294967295,即 2 32 2^{32} 232

32CPU配32位地址總線理論最大尋址空間為4GB,若需訪問更大內存,需通過內存分段映射(如 PAE)等技術實現邏輯擴展。所以理論上32位CPU最大只能操作4GB內存,而64位CPU尋址范圍則很大,理論上最大的尋址空間為 2 64 2^{64} 264,但受硬件和系統限制,實際支持的內存通常為 GB 至 TB 級。

指令及其周期

指令類型

指令的類型指令從功能角度劃分,可以分為 5 大類:

  • 數據傳輸類型的指令,比如 store/load 是寄存器與內存間數據傳輸的指令,mov 是將一個內存地址的數據移動到另一個內存地址的指令;
  • 運算類型的指令,比如加減乘除、位運算、比較大小等等,它們最多只能處理兩個寄存器中的數據;
  • 跳轉類型的指令,通過修改程序計數器的值來達到跳轉執行指令的過程,比如編程中常見的 if-else、switch-case、函數調用等。
  • 信號類型的指令,比如發生中斷的指令 trap;
  • 閑置類型的指令,比如指令 nop,執行后 CPU 會空轉一個周期;
MIPS指令類型

MIPS指令集

  • R 指令,用在算術和邏輯操作,里面有讀取和寫入數據的寄存器地址。如果是邏輯位移操作,后面還有位移操作的「位移量」,而最后的「功能碼」則是再前面的操作碼不夠的時候,擴展操作碼來表示對應的具體指令的;
  • I 指令,用在數據傳輸、條件分支等。這個類型的指令,就沒有了位移量和功能碼,也沒有了第三個寄存器,而是把這三部分直接合并成了一個地址值或一個常數;
  • J 指令,用在跳轉,高 6 位之外的 26 位都是一個跳轉后的地址;
指令周期

CPU讀取程序計數器對應內存地址的指令,稱為Fetch

CPU對指令進行解碼,稱為Decode

CPU執行指令,這個部分稱為Execution

CPU將計算結果存回寄存器或者將寄存器的值存入內存,這個部分稱為Store

在這里插入圖片描述

CPU讀取[程序計數器]的值,這個值是指令的內存地址,然后CPU的[控制單元]通過[地址總線]通知內存,內存將對應數據通過[數據總線]傳給CPU,CPU的[控制單元]將收到的數據暫存到[指令寄存器],[程序計數器]自增指向下一條指令

[控制單元]解析[指令寄存器]中的指令,確定指令的類型和參數

將計算類型的指令,交給算數邏輯單元處理,其他指令由控制單元處理

最后有結果將結果寫回到內存或其他寄存器

指令的執行速度

CPU的時鐘頻率指每秒產生的脈沖信號次數,而每次脈沖信號高低電平的轉換就是一個周期,稱為時鐘周期

指令的執行主要看指令所需的CPU時鐘周期數以及CPU時鐘周期

在這里插入圖片描述

主頻越高,CPU時鐘周期越短,CPU工作速度就越快

想要程序跑的快,可以從以下三點進行優化:

  • 指令數,表示執行程序所需要多少條指令,以及哪些指令。這個層面是基本靠編譯器來優化,畢竟同樣的代碼,在不同的編譯器,編譯出來的計算機指令會有各種不同的表示方式。
  • 每條指令的平均時鐘周期數 CPI,表示一條指令需要多少個時鐘周期數,現代大多數 CPU 通過流水線技術(Pipeline),讓一條指令需要的 CPU 時鐘周期數盡可能的少;
  • 時鐘周期時間,表示計算機主頻,取決于計算機硬件。有的 CPU 支持超頻技術,打開了超頻意味著把 CPU 內部的時鐘給調快了,于是 CPU 工作速度就變快了,但是也是有代價的,CPU 跑的越快,散熱的壓力就會越大,CPU 會很容易奔潰。

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

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

相關文章

洛谷刷題9

B4355 [GESP202506 一級] 值日 B4355 [GESP202506 一級] 值日 - 洛谷 難度&#xff1a;入門 —— 入門 這道題有三種解法&#xff0c;第三種解法在一部分比賽中被禁用 AC代碼&#xff08;第一種方法&#xff1a;循環&#xff09; #include <iostream> #include <…

vuedraggable在iframe中無法使用問題

廢話不多說 直接看怎么解決 <draggable:list"staticContent":animation"340"group"selectItem"handle".option-drag"start"onDragStart"end"onDragEnd" ><divv-for"(item, index) in staticConten…

數據庫窗口函數詳解:語法、技巧與最佳實踐

數據庫窗口函數詳解&#xff1a;語法、技巧與最佳實踐 窗口函數是SQL中用于執行復雜分析的強大工具&#xff0c;它允許在結果集的"窗口"&#xff08;一組相關行&#xff09;上進行計算&#xff0c;而不會將行分組為單個輸出行。下面我將全面解析窗口函數的語法、應用…

基于開源AI大模型AI智能名片S2B2C商城小程序源碼的企業資金使用效率提升路徑研究

摘要&#xff1a;在中國創業市場&#xff0c;需求驗證后的激烈競爭與投資方對收益率和確定性的嚴苛要求&#xff0c;迫使企業必須實現資金使用的極致效率。開源AI大模型AI智能名片S2B2C商城小程序源碼的技術融合&#xff0c;通過重構用戶觸達、供應鏈協同與運營流程&#xff0c…

2025年- H92-Lc200-- 64.最小路徑和(多維動態規劃)--Java版

1.題目描述 2.思路 &#xff08;1&#xff09;dp[i][j] 表示從起點 (0,0) 走到位置 (i,j) 的最小路徑和 &#xff08;2&#xff09;對于位置 (i, j)&#xff0c;只能從 上面 (i-1,j) 或 左邊 (i,j-1) 走過來&#xff0c;所以&#xff1a; dp[i][j] grid[i][j] min(dp[i-1][j…

CHAIN(GAN的一種)訓練自己的數據集

簡介 簡介:作者針對數據有限場景下GANs訓練中的判別器過擬合問題,提出了CHAIN(Lipschitz連續性約束歸一化)方法。作者首先從理論角度分析了GAN泛化誤差,發現減少判別器權重梯度范數對提升泛化能力至關重要。然后深入研究了批歸一化(BN)在GAN判別器中應用困難的根本原因…

3D建模公司的能力與技術

在數字化時代&#xff0c;3D建模公司扮演著越來越重要的角色。它們是專業從事三維建模設計服務的機構或團隊&#xff0c;利用先進的三維建模軟件和技術&#xff0c;為客戶提供從概念設計到最終成品的全流程服務。這些服務廣泛應用于建筑設計、工程規劃、產品設計、動畫制作等多…

《深度剖析:5G網絡切片如何精準保障不同業務QoS需求》

5G網絡切片技術依托網絡功能虛擬化(NFV)和軟件定義網絡(SDN)兩大核心技術。NFV就像一位神奇的變形師,把傳統硬件網絡功能,如路由器、防火墻、基站等,轉化為軟件模塊,讓它們能運行在通用硬件平臺上。如此一來,硬件資源得以擺脫傳統網絡功能的束縛,實現靈活調配。例如,…

力扣hot100題(1)

目錄 1、兩數之和2、移動零3、相交鏈表4、有效的括號5、反轉鏈表6、回文鏈表7、環形鏈表8、環形鏈表II9、合并兩個有序鏈表10、二叉樹的中序遍歷 1、兩數之和 1. 兩數之和 - 力扣&#xff08;LeetCode&#xff09; 方法1&#xff1a; class Solution {public int[] twoSum(i…

C++的回顧與學習之C++入門基礎

目錄 1、C入門 1&#xff09;C關鍵字 2&#xff09;命名空間 3&#xff09;C中的輸入輸出 4&#xff09;缺省參數 5&#xff09;函數重載 6&#xff09;引用 引用和指針的不同點&#xff1a; 7&#xff09;auto關鍵字 8&#xff09;內聯函數 9&#xff09;指針空值nu…

【使用Android Studio調試手機app時候手機老掉線問題】

如果你各種方式都嘗試失敗了&#xff0c; 請看這里 連接時候通過logcat查看你手機Android的平臺去SDK下載所有對應的平臺SDK重新連接嘗試

二叉樹題解——驗證二叉搜索樹【LeetCode】前序遍歷

98. 驗證二叉搜索樹 &#x1f50d; 題目目標 判斷一棵二叉樹是否為有效的二叉搜索樹&#xff08;BST&#xff09;&#xff0c;定義如下&#xff1a; 左子樹所有節點 < 根節點 右子樹所有節點 > 根節點 且左右子樹也必須是二叉搜索樹 一、算法邏輯&#xff08;逐步通…

Javaweb - 10.3 Servlet 生命周期

目錄 生命周期簡介 生命周期測試 load-on-startup 補充&#xff1a;defaultServlet Servlet 的繼承結構 1. 頂級的 Servlet 接口 2. 抽線的類 GenericServlet 3. HttpServlet 抽象類 4. 自定義 Servlet 補充&#xff1a; 完&#xff01; 生命周期簡介 什么是生命周…

RSA數字簽名方案的C語言實現(帶測試)

RSA 算法的 C語言實現通常比較復雜&#xff0c;但已經有許多密碼算法庫實現了 RSA 算法&#xff0c;例如OpenSSL、Libgcrypt? 和 Botan ?等。我們可以在這些庫的基礎上進行配置或移植&#xff0c;從而快速實現密碼算法。但這些庫主要面向大量設備進行優化&#xff0c;如通用計…

創客匠人視角:知識變現與創始人 IP 打造的破局之道

當知識付費從流量紅利期進入精耕細作階段&#xff0c;為何專業能力強的內容創作者反而難以變現&#xff1f;創客匠人通過 1500 案例陪跑發現&#xff1a;缺乏 IP 思維的知識輸出如同霧中航行&#xff0c;而創始人 IP 打造正是連接知識價值與商業變現的核心橋梁。一、定位重構&…

結構分析設計軟件 SCIA Engineer 25.0 x64

詳情 Nemetschek SCIA Engineer是一家從事多項目編程、分析和軟件設計的公司。該軟件具有廣泛的不同功能。該軟件可用于以簡單的方式設計建筑物、工業工廠和橋梁。 Nemetschek SCIA Engineer軟件的特點和功能&#xff1a; BIM模型人 使用網格和故事 3D風 自由負載 互聯網…

怎么處理[TOO_MANY_REQUESTS/12/disk usage exceeded flood-stage watermark

這個錯誤說明 Elasticsearch 的磁盤空間嚴重不足&#xff0c;已觸及最高級別&#xff08;flood-stage&#xff09;的水位線。作為自我保護機制&#xff0c;Elasticsearch ?自動將受影響的索引設置為只讀模式 (read-only-allow-delete)?&#xff0c;從而阻止寫入操作&#xff…

pytorch學習-11卷積神經網絡(高級篇)

2.線性模型 3.梯度下降算法 4.反向傳播(用pytorch算梯度) 5.用pytorch實現線性回歸 6.logistic回歸 7.處理多維特征的輸入 8.加載數據集 9.多分類問題 10.卷積神經網絡(基礎篇) 11.卷積神經網絡&#xff08;高級篇&#xff09;_嗶哩嗶哩_bilibili 11.1 GoogleNet Google…

ubuntu 安裝QT

在 Ubuntu 系統上安裝 Qt 可以通過以下步驟完成&#xff0c;以下是詳細的安裝指南 &#xff1a; 1. 安裝前的準備工作 在開始安裝 Qt 之前&#xff0c;需要確保你的 Ubuntu 系統已經更新到最新版本&#xff0c;并且安裝了一些必要的依賴。 1.1 更新系統 首先&#xff0c;打…

CppCon 2018 學習:RAPID PROTOTYPING OF GRAPHICS SHADERS IN

這段內容在講**著色器&#xff08;Shader&#xff09;**的基礎概念&#xff0c;尤其是它在現代 GPU&#xff08;圖形處理單元&#xff09;中的作用。以下是逐條解釋與理解&#xff1a; “Depicting depth perception in 3D models or illustrations by varying levels of darkn…