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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > windows >内容正文

windows

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

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

本文主要是從程序運(yùn)行來看計(jì)算機(jī)組成原理

我們平時(shí)常說的程序, 大多指的是一個(gè)可執(zhí)行文件 .exe, 當(dāng)雙擊 .exe文件運(yùn)行時(shí), 操作系統(tǒng)就會(huì)讀取這個(gè)文件, 將其加載到內(nèi)存中, 由CPU中的寄存器讀取相應(yīng)指令, 運(yùn)算后返回內(nèi)存

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

1 計(jì)算機(jī)的大腦----CPU:中央處理器

1.1 簡介

  • 芯片:主要指的就是CPU
    在計(jì)算機(jī)中,機(jī)組,微機(jī)原理接口技術(shù),計(jì)算機(jī)系統(tǒng)結(jié)構(gòu),模電,數(shù)電…都是在講CPU的,這幾門課是計(jì)算機(jī)的基礎(chǔ)

1.1.1 引入: CPU與顯卡的區(qū)別

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

1.1.2 一些基本參數(shù)

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

1.2 內(nèi)部結(jié)構(gòu)

1.2.1 本質(zhì): 一系列的門電路

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

1.2.1.1 CPU內(nèi)部結(jié)構(gòu)的發(fā)展方向

底層設(shè)備結(jié)構(gòu)的變化, 對于程序員的代碼編寫方式, 也是有深遠(yuǎn)影響的

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

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

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

1.2.1.1.2 多核CPU

家用PC上, 好的CPU, 12核24線程 #并發(fā)編程
如果在服務(wù)器的CPU上, 核心數(shù)會(huì)更多

1.2.2 寄存器

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

1.3 CPU如何進(jìn)行工作

1.3.1 指令: 人給計(jì)算機(jī)發(fā)布的命令

1.3.1.1 人與計(jì)算機(jī)的交流

  • 人寫的: 高級語言

    • Java/C 等編程語言構(gòu)成的代碼
  • 計(jì)算機(jī)認(rèn)識的: 機(jī)器語言

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

1.3.1.2 CPU執(zhí)行一條指令的過程

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

    程序計(jì)數(shù)器中包含了一個(gè)"地址", 指示接下來要讀取哪個(gè)內(nèi)存里的指令

  • 解析指令

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

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

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

    負(fù)責(zé)讀指令的程序計(jì)數(shù)器讀完第一條, 緊接著讀第二條, 第三條…
    負(fù)責(zé)解析指令的解析完第一條, 緊接著解析第二條, 第三條…

    • 遇到條件判定, 循環(huán), 函數(shù)調(diào)用時(shí), 誰是第二條指令? 或 上一條指令還沒有解析完成時(shí), 負(fù)責(zé)執(zhí)行的已經(jīng)執(zhí)行完成, 怎樣執(zhí)行未知的下一條語句 能夠?qū)⒊绦蜻\(yùn)行效率最大化?
      CPU有很多相關(guān)的運(yùn)算形式, 如: 分支預(yù)測…
    1.3.1.3.1 分支預(yù)測

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

    1.3.1.3.2 時(shí)鐘周期

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

    • 1.9GHz CPU: 1s有19億個(gè)時(shí)鐘周期

    CPU, 存儲(chǔ)器, 輸入設(shè)備, 輸出設(shè)備… 都是"硬件"設(shè)備, 普通用戶要和硬件打交道, 還是有點(diǎn)難度. 于是誕生了操作系統(tǒng)這個(gè)軟件, 用于管理各種硬件設(shè)備給各種軟件提供穩(wěn)定的運(yùn)行環(huán)境
    Windows, MAC, 安卓…都是操作系統(tǒng), 廠商不同, 細(xì)節(jié)有差別, 但核心工作都是上面兩條

    2 操作系統(tǒng)

    2.1 結(jié)構(gòu)

    2.1.1 應(yīng)用程序

    2.1.2 系統(tǒng)調(diào)用

    如果你想在控制臺打印一個(gè) “hello”, 這個(gè)過程中你必須調(diào)用庫函數(shù) printf, 其內(nèi)部就要調(diào)用 操作系統(tǒng)提供的系統(tǒng)調(diào)用write, 調(diào)用write時(shí)就會(huì)進(jìn)入到內(nèi)核來執(zhí)行, 內(nèi)核就要進(jìn)一步控制硬件, 完成輸出過程

    2.1.3 操作系統(tǒng)的核心部分: 內(nèi)核

    內(nèi)核是操作系統(tǒng)實(shí)現(xiàn)其主要功能 (管理各種硬件設(shè)備, 并給各種軟件提供穩(wěn)定的運(yùn)行環(huán)境) 的部分

    當(dāng)我們使用操作系統(tǒng)進(jìn)入內(nèi)核時(shí), 涉及到 用戶態(tài) 到 內(nèi)核態(tài) 間的切換, 要運(yùn)行的程序有很多, 但內(nèi)核只有一個(gè), 就很可能要排隊(duì)等待

    2.1.4 驅(qū)動(dòng)程序

    是一個(gè)由 軟件廠商 提供的 軟件程序
    直接和硬件設(shè)備打交道, 驅(qū)動(dòng)程序相當(dāng)于在 硬件 和 內(nèi)核 之間來了一層轉(zhuǎn)換

    用軟件操作硬件一般都很簡單, 因?yàn)橛布话愣紩?huì)提供一些"寄存器"

    2.1.5 硬件設(shè)備

    • 操作系統(tǒng)結(jié)構(gòu)示意圖:

    總結(jié)

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

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。