日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

简单了解计算机组成原理 -- CPU与操作系统

發布時間:2024/1/8 windows 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 简单了解计算机组成原理 -- CPU与操作系统 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文主要是從程序運行來看計算機組成原理

我們平時常說的程序, 大多指的是一個可執行文件 .exe, 當雙擊 .exe文件運行時, 操作系統就會讀取這個文件, 將其加載到內存中, 由CPU中的寄存器讀取相應指令, 運算后返回內存

Java代碼也是同理.
寫了一個 .java 被編譯成 .class 后被 JVM 進行加載, .class中保存的就是一些二進制指令 (和CPU無關), 也就會先放在內存中

1 計算機的大腦----CPU:中央處理器

1.1 簡介

  • 芯片:主要指的就是CPU
    在計算機中,機組,微機原理接口技術,計算機系統結構,模電,數電…都是在講CPU的,這幾門課是計算機的基礎

1.1.1 引入: CPU與顯卡的區別

  • CPU:: 通用計算結構 -> 應對各種計算場景
    • 相當于大學生, 參加工作, 可以從事各種工作, 當然能計算1+1
  • 顯卡: 專用計算芯片 -> 特別擅長大量的簡單運算, 如: 大規模浮點數, 尤其是矩陣運算) - 相當于小學生, 只會算1+1,但有些場景下需要運算大量的1+1
    • 游戲: 畫面非常復雜, 需要很大運算量
    • 挖礦: 本質是狂算 哈希值, 相當于把自己電腦的算力貢獻出來, 替別人完成一些簡單運算, 當你的電腦算力為其他人提供了實質性幫助時, 他人就會給你一定報酬, 這個過程成為挖礦
    • 機器學習: 模型的訓練, 也需要巨大的運算量 (如: 對龐大數據進行分析等)

1.1.2 一些基本參數

  • 1.90GHz : CPU的主頻, 描述了CPU的運算速度
    • Hz: 一秒震動 (運算) 一次
    • G: 1G ≈10億

1.2 內部結構

1.2.1 本質: 一系列的門電路

半加器 (2bits輸入, 2bits輸出) + 全加器 (3bits輸入, 2bits輸出) -> 各種加法器 -> 各種門電路 -> 計算單元 / 控制單元/ 存儲單元… => CPU

1.2.1.1 CPU內部結構的發展方向

底層設備結構的變化, 對于程序員的代碼編寫方式, 也是有深遠影響的

1.2.1.1.1 制程 越來越小
  • 什么是制程?
    計算機芯片框架的運算速度
    - 運算速度: 每秒處理的百萬級的機器語言指令數. 微機一般用主頻來描述運算速度. 主頻越高, 運算速度越快

  • 為什么我們認為CPU的 制程 越小越好?
    一個CPU芯片的面積是固定的,制程越小,單個門電路體積越小, 整個CPU上能夠搭載的門電路數量越多, CPU上的功能模塊越多, 算的就更快

但從物理角度來說, 制程是無法無限小的, 縱使無限小, 在nm尺度上, 經典力學已經處在失效的邊緣了. 目前就小制程CPU的研究方向于 “量子計算機”, 它的計算能力會比經典計算機提升好多個數量級

1.2.1.1.2 多核CPU

家用PC上, 好的CPU, 12核24線程 #并發編程
如果在服務器的CPU上, 核心數會更多

1.2.2 寄存器

  • 功能: 存儲程序運行中的數據
    • 和內存相比, 功能差不多, 數據斷電就消失; 同時, 存儲空間更小, 訪問速度更快 (比內存又快3-4個數量級)
    • CPU的計算是針對寄存器中的值進行的, 輔助計算, 保存計算中所需要的中間結果
      • 示例: 計算10+20
      • 從 內存 中讀 10 到 寄存器A
      • 從 內存 中讀 20 到 寄存器B
      • 執行相加指令, 把兩個寄存器的值相加, 保存到 寄存器A 中
      • 把 寄存器A 中的值寫回內存
  • 大小: 一般就是幾百個字節, 最多幾K

1.3 CPU如何進行工作

1.3.1 指令: 人給計算機發布的命令

1.3.1.1 人與計算機的交流

  • 人寫的: 高級語言

    • Java/C 等編程語言構成的代碼
  • 計算機認識的: 機器語言

    • 二進制的指令
      • [[attachment/未命名#^326d9f|指令表]] (極簡版本, 實際上指令有很多)
  • 編譯: 把 高級語言 翻譯成 機器語言

1.3.1.2 CPU執行一條指令的過程

  • 從程序計數器中獲取要讀的指令, 再去內存中讀取指令
  • 1.3.1.2.1 程序計數器(PC指針)
    在x86_32CPU叫做eip寄存器

    程序計數器中包含了一個"地址", 指示接下來要讀取哪個內存里的指令

  • 解析指令

    • 按照設定進行解讀. 如: 一個8bit 指令, 前4bit 是其操作碼(opcode), 表示指令要干什么; 后4bit 是操作數
      • 指令00101110 => 從11010這個地址中讀取一個字節進到A寄存器中
        • 0010 Load_A
        • 1110 要讀取的內存地址
  • 執行指令

  • 然后, 程序計數器 進行累加, 再去讀取下一條指令(針對單純的順序語句)

    1.3.1.3 CPU如何執行多條指令: “流水線”

    負責讀指令的程序計數器讀完第一條, 緊接著讀第二條, 第三條…
    負責解析指令的解析完第一條, 緊接著解析第二條, 第三條…

    • 遇到條件判定, 循環, 函數調用時, 誰是第二條指令? 或 上一條指令還沒有解析完成時, 負責執行的已經執行完成, 怎樣執行未知的下一條語句 能夠將程序運行效率最大化?
      CPU有很多相關的運算形式, 如: 分支預測…
    1.3.1.3.1 分支預測

    通俗來講, 就是CPU去猜測下一條指令, 如果猜中了, 流水線就繼續跑, 如果猜錯了, 重新按照實際情況再讀一遍指令
    即: 第N條指令還沒執行完, 就要猜測第N+1條指令是什么, 并為其安排流水線
    #問題 重讀一遍指的是繼續猜嗎? : 邊執行邊猜, 猜不中就等其按照流程執行完就行了
    比如: 御魂計算器正在計算你的御魂需求, 然后你同時也亂配御魂, 如果你亂配的剛好滿足了你的御魂需求, 就不用繼續計算了. 但如果直到算完了也配不出來, 問題不大, 因為已經算完了, 然后就可以接著算下一套御魂…

    1.3.1.3.2 時鐘周期

    流水線之間為了相互配合而確定, 每個指令的執行都需要消耗幾個時鐘周期

    • 1.9GHz CPU: 1s有19億個時鐘周期

    CPU, 存儲器, 輸入設備, 輸出設備… 都是"硬件"設備, 普通用戶要和硬件打交道, 還是有點難度. 于是誕生了操作系統這個軟件, 用于管理各種硬件設備給各種軟件提供穩定的運行環境
    Windows, MAC, 安卓…都是操作系統, 廠商不同, 細節有差別, 但核心工作都是上面兩條

    2 操作系統

    2.1 結構

    2.1.1 應用程序

    2.1.2 系統調用

    如果你想在控制臺打印一個 “hello”, 這個過程中你必須調用庫函數 printf, 其內部就要調用 操作系統提供的系統調用write, 調用write時就會進入到內核來執行, 內核就要進一步控制硬件, 完成輸出過程

    2.1.3 操作系統的核心部分: 內核

    內核是操作系統實現其主要功能 (管理各種硬件設備, 并給各種軟件提供穩定的運行環境) 的部分

    當我們使用操作系統進入內核時, 涉及到 用戶態 到 內核態 間的切換, 要運行的程序有很多, 但內核只有一個, 就很可能要排隊等待

    2.1.4 驅動程序

    是一個由 軟件廠商 提供的 軟件程序
    直接和硬件設備打交道, 驅動程序相當于在 硬件 和 內核 之間來了一層轉換

    用軟件操作硬件一般都很簡單, 因為硬件一般都會提供一些"寄存器"

    2.1.5 硬件設備

    • 操作系統結構示意圖:

    總結

    以上是生活随笔為你收集整理的简单了解计算机组成原理 -- CPU与操作系统的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。