在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

關(guān)于CPU的12個必須知道的知識點

FPGA之家 ? 來源:FPGA之家 ? 作者:FPGA之家 ? 2020-11-05 18:10 ? 次閱讀

作為一名程序員,與計算機打交道的日子不計其數(shù),不管你玩硬件還是做軟件,你的世界自然都少不了計算機最核心的 —— CPU。

01 CPU是什么? CPU與計算機的關(guān)系就相當于大腦和人的關(guān)系,它是一種小型的計算機芯片,通常嵌入在電腦的主板上。 CPU的構(gòu)建是通過在單個計算機芯片上放置數(shù)十億個微型晶體管來實現(xiàn)。 這些晶體管使它能夠執(zhí)行運行存儲在系統(tǒng)內(nèi)存中的程序所需的計算,所以,也可以說CPU決定了你電腦的計算能力。 02 CPU實際做什么? CPU的工作核心是從程序或應(yīng)用程序中獲取指令并且執(zhí)行計算。 這個過程一共有三個關(guān)鍵階段:提取,解碼和執(zhí)行。 CPU先從系統(tǒng)的RAM中提取指令,隨后解碼該指令的實際內(nèi)容,最后再由CPU的相關(guān)部分執(zhí)行該指令。 03 CPU的內(nèi)部結(jié)構(gòu) 剛才提到了很多CPU的重要性,那么CPU的內(nèi)部結(jié)構(gòu)是什么呢?又是由什么組成的呢? 下圖展示了一般程序的運行流程(以C語言為例),一般來說,了解程序的運行流程是掌握程序運行機制的基礎(chǔ)和前提。

在這個流程中,CPU負責解釋和運行最終轉(zhuǎn)換成機器語言的內(nèi)容,CPU主要由兩部分構(gòu)成:控制單元和算數(shù)邏輯單元(ALU)。

控制單元:從內(nèi)存中提取指令并解碼執(zhí)行;

算數(shù)邏輯單元(ALU):處理算數(shù)和邏輯運算。

CPU和內(nèi)存都是由許多晶體管組成的電子部件,可以把它比作計算機的心臟和大腦。 它能夠接收數(shù)據(jù)輸入、執(zhí)行指令并且處理相關(guān)信息,它與輸入/輸出(I/O)設(shè)備進行通信,這些設(shè)備向 CPU 發(fā)送數(shù)據(jù)和從 CPU 接收數(shù)據(jù)。 從功能上來看,CPU的內(nèi)容是由寄存器、控制器、運算器和時鐘四部分組成的,各個部分之間通電信號來連通。 接下來簡單介紹一下內(nèi)存,為什么說到CPU需要講一下內(nèi)存呢?

因為內(nèi)存是與CPU進行溝通的橋梁,計算機中所有程序的運行都在內(nèi)存中得到運行的。 內(nèi)存一般又被稱為主存,它的作用是存放CPU中的運算數(shù)據(jù),以及與硬盤等外部存儲設(shè)備交換的數(shù)據(jù)。 CPU會在計算機運轉(zhuǎn)時,把需要運算的數(shù)據(jù)調(diào)到主存中進行運算。 在運算完成之后,CPU將結(jié)果傳送出來,主存的運行也決定了計算機的穩(wěn)定運行。 主存一般通過控制芯片與CPU相連,由可讀寫的元素構(gòu)成,每個字節(jié)都有一個地址編號。 CPU通過地址從主存中讀取數(shù)據(jù)和指令,也可以根據(jù)地址寫入數(shù)據(jù),注意一點:當計算機關(guān)機時,內(nèi)存中的指令和數(shù)據(jù)也會被清除。

04 CPU是寄存器的集合體 在CPU的四個結(jié)構(gòu)中,寄存器的重要性遠遠高于其余三個,為什么這么說?因為程序通常是把寄存器作為對象來進行描述的。 而說到寄存器,就不得不說到匯編語言,說到匯編語言,就不得不說到高級語言,說起高級語言也就不得不提及語言的概念。 05 計算機語言 人和人之間最古老和直接的溝通媒介是語言,但是和計算機溝通,就必須按照計算機指令來交換,其中就涉及到語言的問題。 最早,為了解決計算機和人類的交流的問題,出現(xiàn)了匯編語言。 但是匯編語言晦澀難懂,所以又出現(xiàn)了像是C、C++、Java的這種高級語言,因此計算機語言一般分為低級語言和高級語言。 使用高級語言編寫的程序,經(jīng)過編譯轉(zhuǎn)換成機器語言后才能運行,而匯編語言經(jīng)過匯編器才能轉(zhuǎn)換為機器語言。 06 匯編語言 我們先來看一段采用匯編語言表示的代碼清單:

這是采用匯編語言編寫程序的一部分,匯編語言采用助記符來編寫程序,每個原本是電信號的機器語言指令會有一個與其對應(yīng)的助記符。 比如,mov,add分別是數(shù)據(jù)的存儲(move)和相加(addition)的簡寫。 匯編語言和機器語言一一對應(yīng),這點和高級語言不同,我們通常把匯編語言編寫的程序轉(zhuǎn)換為機器語言的這個過程,稱之為匯編。

與之相反,將機器語言轉(zhuǎn)化為匯編語言的過程稱之為反匯編。 匯編語言可以幫助你理解計算機做了什么工作,機器語言級別的程序通過寄存器來處理,上面代碼中的eax,ebp都是表示的寄存器,它們是CPU內(nèi)部寄存器的名稱。 因此,可以說 CPU 是一系列寄存器的集合體。 一般,在內(nèi)存中的存儲通過地址編號來表示,寄存器的種類是通過名字來區(qū)分。 那些不同類型的CPU,其內(nèi)部寄存器的種類、數(shù)量以及寄存器存儲的數(shù)值范圍也都是不同的。 不過,根據(jù)功能的不同,我們可以將寄存器劃分為下面幾類:

其中,程序計數(shù)器、標志寄存器、累加寄存器、指令寄存器和棧寄存器只有一個,其他寄存器一般有好幾個。

07

程序計數(shù)器 程序計數(shù)器是用來存儲下一條指令所在單元的地址。 程序在執(zhí)行時,PC的初值作為程序第一條指令的地址,在順序執(zhí)行程序時,控制器先按照程序計數(shù)器所指出的指令地址,從內(nèi)存中取出一條指令,隨后分析和執(zhí)行該指令,并同時將PC的值加1指向下一條要執(zhí)行的指令。 我們可以通過一個事例來仔細看一下程序計數(shù)器的執(zhí)行過程:

這是一段進行相加的操作,程序啟動,在經(jīng)過編譯解析后,會經(jīng)由操作系統(tǒng)把硬盤中的程序復(fù)制到內(nèi)存中。 以上示例程序,就是將123和456執(zhí)行相加的操作,隨后將結(jié)果輸出到顯示器上,因為使用機器語言很難描述,所以這些都是經(jīng)過翻譯后的結(jié)果。 事實上,每個指令和數(shù)據(jù)都有可能分布在不同的地址上,但是為了更好的說明,就把組成一條指令的內(nèi)存和數(shù)據(jù)放在了一個內(nèi)存地址上。 地址0100是程序運行的起始位置,Windows等操作系統(tǒng)把程序從硬盤復(fù)制到內(nèi)存以后,就會將程序計數(shù)器作為設(shè)定為起始位置0100,然后再執(zhí)行程序,每次執(zhí)行一條指令后,程序計數(shù)器的數(shù)值就會增加1,或者是直接指向下一條指令的地址。 隨后,CPU會根據(jù)程序計數(shù)器的數(shù)值,從內(nèi)存中讀取命令并且執(zhí)行,換言之,程序計數(shù)器控制著程序的流程。

08

條件分支和循環(huán)機制 小伙伴們都學過高級語言,高級語言匯總的條件控制流程主要分為順序執(zhí)行、條件分支、循環(huán)判斷三種。

順序執(zhí)行是按照地址的內(nèi)容順序的執(zhí)行命令。

條件分支是根據(jù)條件執(zhí)行任意地址的指令。

循環(huán)是重復(fù)執(zhí)行同一地址的指令。

一般情況下,順序執(zhí)行的情況較簡單,每次執(zhí)行一條指令程序計數(shù)器的值就是+1。 條件和循環(huán)分支會使得程序計數(shù)器的值指向任意的地址,這樣一來,程序就可以返回到上一個地址來重復(fù)執(zhí)行同一個指令,或者跳轉(zhuǎn)到其它任意指令。 下面,我們就以條件分支舉例來說明程序的執(zhí)行過程:

程序的開始過程和順序流程是一樣的,程序的順序流程和開始過程相同。 CPU從0100處就開始執(zhí)行命令,在0100和0101中都是順序執(zhí)行,PC的值順序+1,執(zhí)行到0102地址的指令時,判斷0106寄存器的數(shù)值大于0,跳轉(zhuǎn)到0104地址的指令,再將數(shù)值輸?shù)斤@示器中,隨后結(jié)束程序,0103的指令就被跳過了。 這和我們程序中的if()判斷相同,在不滿足條件的情況下,指令一般會直接跳過。 因此,PC的執(zhí)行過程沒有直接+1,而是下一條指令的地址。

09

標志寄存器 條件和循環(huán)分支會使用到 jump(跳轉(zhuǎn)指令),會根據(jù)當前的指令來判斷是否跳轉(zhuǎn),上面我們提到了標志寄存器,無論當前累加寄存器的運算結(jié)果是正數(shù)、負數(shù)還是零,標志寄存器都會將其保存。 CPU在進行運算時,標志寄存器的數(shù)值會根據(jù)當前運算的結(jié)果自動設(shè)定,運算結(jié)果的正、負和零三種狀態(tài)由標志寄存器的三個位表示。 標志寄存器的第一個字節(jié)位、第二個字節(jié)位、第三個字節(jié)位各自的結(jié)果都為1時,分別代表著正數(shù)、零和負數(shù)。

CPU的執(zhí)行機制比較有意思,假設(shè)累加寄存器中存儲的XXX和通用寄存器中存儲的YYY做比較,執(zhí)行比較的背后,CPU的運算機制就會做減法運算。 而無論減法運算的結(jié)果是正數(shù)、零還是負數(shù),都會保存到標志寄存器中。 結(jié)果為正表示 XXX 比 YYY 大,結(jié)果為零表示 XXX 和 YYY 相等,結(jié)果為負表示 XXX 比 YYY 小,程序比較的指令,實際上是在 CPU 內(nèi)部做減法運算。

10

函數(shù)調(diào)用機制 函數(shù)的調(diào)用和條件分支,循環(huán)機制有所不同,單純的跳轉(zhuǎn)指令無法實現(xiàn)函數(shù)的調(diào)用。 函數(shù)的調(diào)用需要在函數(shù)內(nèi)部處理后,處理流程在返回到函數(shù)調(diào)用點(函數(shù)調(diào)用指令的下一個地址)。 函數(shù)的調(diào)用處理是通過把程序計數(shù)器的值設(shè)定成函數(shù)的存儲地址來實現(xiàn)的。

11

通過地址和索引實現(xiàn)數(shù)組 接下來是基址寄存器和變址寄存器,通過這兩個寄存器,可以對主存上的特定區(qū)域進行劃分,以此實現(xiàn)類似數(shù)組的操作。 首先,可以用十六進制數(shù)將計算機內(nèi)存上的 00000000 - FFFFFFFF 的地址劃分出來。 這樣,凡是該范圍的內(nèi)存地址,只要有一個 32 位的寄存器,就可以查看全部地址。 但是,要是想像數(shù)組那樣,分割特定的內(nèi)存區(qū)域以達到連續(xù)查看的目的的話,使用兩個寄存器會更方便一些,比如,我們用兩個寄存器來表示內(nèi)存的值。

這種表示方式很像數(shù)組的構(gòu)造,數(shù)組是指同樣長度的數(shù)據(jù),在內(nèi)存中進行連續(xù)排列的數(shù)據(jù)構(gòu)造。 用數(shù)組名表示數(shù)組全部的值,通過索引來區(qū)分數(shù)組的各個數(shù)據(jù)元素,例如: a[0] - a[4],[]內(nèi)的 0 - 4 就是數(shù)組的下標。

12

CPU指令執(zhí)行過程 那說了這么多,CPU到底是怎么一條條的執(zhí)行指令的呢?幾乎全部的馮·諾伊曼型計算機的CPU,工作都可以分為5個階段:取指令、指令譯碼、執(zhí)行指令、訪存取數(shù)、結(jié)果寫回。 取指令階段就是將內(nèi)存中的指令讀取到CPU中寄存器的過程,程序寄存器用于存儲下一條指令所在的地址;

在取指令完成后,立馬進入指令譯碼階段,在指令譯碼階段,指令編碼器按照預(yù)先的指令格式,對取回的指令進行拆分和解釋,識別區(qū)分出不同的指令類別和各種獲取操作數(shù)的方法;

執(zhí)行指令階段的任務(wù)是完成指令所規(guī)定的各種操作,具體實現(xiàn)指令的功能;

訪問取數(shù)階段的任務(wù)是:根據(jù)指令地址碼,得到操作數(shù)在主存中的地址,并從主存中讀取該操作數(shù)用于運算;

結(jié)果寫回階段作為最后一個階段,把執(zhí)行指令階段的運行結(jié)果數(shù)據(jù)“寫回”到某種存儲形式:結(jié)果數(shù)據(jù)經(jīng)常被寫到CPU的內(nèi)部寄存器中,以便被后續(xù)的指令快速地存取。

責任編輯:xj

原文標題:關(guān)于CPU的12個硬核干貨!

文章出處:【微信公眾號:FPGA之家】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    11028

    瀏覽量

    215824
  • 計算機
    +關(guān)注

    關(guān)注

    19

    文章

    7625

    瀏覽量

    90071
  • 程序員
    +關(guān)注

    關(guān)注

    4

    文章

    954

    瀏覽量

    30246

原文標題:關(guān)于CPU的12個硬核干貨!

文章出處:【微信號:zhuyandz,微信公眾號:FPGA之家】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦
    熱點推薦

    C51單片機及C語言知識點必備秘籍

    單片機關(guān)鍵知識點一覽: 系列一 1:單片機簡敘 2:單片機引腳介紹 3:單片機存儲器結(jié)構(gòu) 4:第一單片機小程序 5:單片機延時程序分析 6:單片機并行口結(jié)構(gòu) 7:單片機的特殊
    發(fā)表于 05-15 14:00

    電機選型計算公式與知識點匯總

    純分享帖,需要者可點擊附件獲取完整資料~~~*附件:電機選型計算公式與知識點匯總.pdf 【免責聲明】內(nèi)容轉(zhuǎn)自今日電機,因轉(zhuǎn)載眾多,無法確認真正原始作者,故僅標明轉(zhuǎn)載來源。版權(quán)歸原出處所有,純分享帖,侵權(quán)請聯(lián)系刪除內(nèi)容以保證您的權(quán)益。
    發(fā)表于 04-29 16:10

    模擬電路入門100知識點

    電源之間必須加入一電阻。 5、電子技術(shù)分為模擬電子技術(shù)和數(shù)字電子技術(shù)兩大部分,其中研究在平滑、連續(xù)變化的電壓或電流信號下工作的電子電路及其技術(shù),稱為模擬電子技術(shù)。 6、PN結(jié)反向偏置時,PN結(jié)的內(nèi)
    發(fā)表于 04-25 15:51

    選購紅外熱像儀的12關(guān)鍵

    紅外熱像儀作為現(xiàn)代工業(yè)和科技領(lǐng)域不可或缺的工具,其應(yīng)用范圍日益廣泛。然而,面對市場上眾多品牌和型號,如何選購一款既符合預(yù)算又滿足需求的紅外熱像儀呢?小菲將為你詳細解析選購紅外熱像儀的12關(guān)鍵,助你精準投資!
    的頭像 發(fā)表于 04-10 14:13 ?320次閱讀

    電氣工程師必知必會的100電?知識點分享

    電??程師也都是從電?學徒??步?步積累成長起來的。積跬步?千?,匯細流成江海!朋友們,現(xiàn)在讓我們??捷徑,花半個?時的時間來積累100必知必會的電?知識點吧!
    的頭像 發(fā)表于 03-14 11:05 ?600次閱讀

    華邦電子安全閃存關(guān)鍵知識點

    黑客攻擊?高溫考驗?駕駛安全?通通沒在怕的!1月15日,華邦電子舉辦了“安全閃存強化車用電子安全性”為主題的線上研討會。為了讓沒能參加這場線上研討會的邦友們也可以清晰 Get 安全閃存關(guān)鍵知識點,邦
    的頭像 發(fā)表于 02-12 18:15 ?647次閱讀

    Docker-鏡像的分層-busybox鏡像制作

    容器修改了基礎(chǔ)鏡像的內(nèi)容,比如 /etc 下的文件,這時其他容器的 /etc 是否也會被修改? 可寫層的概念: Cpoy-on-Write 知識點6:制作一busybox鏡像 1、編寫Dockerfile ENTRYPOIN
    的頭像 發(fā)表于 01-15 10:44 ?492次閱讀
    Docker-鏡像的分層-busybox鏡像制作

    Aigtek功率放大器應(yīng)用:電感線圈的知識點分享

    電磁驅(qū)動是功率放大器的一大基礎(chǔ)應(yīng)用領(lǐng)域,其中我們最常見的就是用功放來驅(qū)動電感線圈,那么關(guān)于電感線圈的這10大知識點你都知道嗎?今天Aigtek安泰電子來給大家介紹一下電感線圈的基礎(chǔ)知識
    的頭像 發(fā)表于 01-07 15:43 ?452次閱讀
    Aigtek功率放大器應(yīng)用:電感線圈的<b class='flag-5'>知識點</b>分享

    后悔沒有早點看到:天線設(shè)計中的知識點

    Cat.1 bis R13架構(gòu),天線架構(gòu)精簡為單天線架構(gòu),去掉了分集接收天線,因此只需要一根天線。 ? 知識點: Cat.1 bis相對于Cat.1的區(qū)別是,后者為兩根天線(一根主天線,一根分集天線
    的頭像 發(fā)表于 12-24 17:11 ?952次閱讀
    后悔沒有早點看到:天線設(shè)計中的<b class='flag-5'>知識點</b>!

    硬件工程師面試基礎(chǔ)知識點

    皮爾斯振蕩器(Pierce oscillator) 上圖中,U1為增益很大的反相放大器,CL1、CL2為匹配電容,是電容三式電路的分壓電容,接地點就是分壓。以接地點即分壓為參考點,輸入和輸出是反相的,但從并聯(lián)諧振回路即石英
    的頭像 發(fā)表于 11-21 11:04 ?636次閱讀
    硬件工程師面試基礎(chǔ)<b class='flag-5'>知識點</b>

    接口測試理論、疑問收錄與擴展相關(guān)知識點

    本文章使用王者榮耀游戲接口、企業(yè)微信接口的展示結(jié)合理論知識,講解什么是接口測試、接口測試理論、疑問收錄與擴展相關(guān)知識點知識學院,快來一起看看吧~
    的頭像 發(fā)表于 11-15 09:12 ?629次閱讀
    接口測試理論、疑問收錄與擴展相關(guān)<b class='flag-5'>知識點</b>

    貼片電阻應(yīng)用須知

    貼片電阻應(yīng)用須知
    的頭像 發(fā)表于 10-16 09:47 ?856次閱讀

    JAVA應(yīng)用CPU自動DUMP工具

    背景 在做系統(tǒng)監(jiān)控時,CPU的使用率是一關(guān)鍵的指標,它反映了系統(tǒng)的性能穩(wěn)定性以及是否存在異常情況,能幫助我們了解系統(tǒng)的負載情況。通過監(jiān)控CPU使用率,可以判斷系統(tǒng)是否正常運行或者是否存在性能
    的頭像 發(fā)表于 08-05 17:48 ?696次閱讀

    MySQL知識點匯總

    大家好,這部分被稱為DQL部分,是每個學習MySQL必須要學會的部分,下面就讓我來介紹MySQL中的其他部分。
    的頭像 發(fā)表于 08-05 15:27 ?582次閱讀
    MySQL<b class='flag-5'>知識點</b>匯總

    BLDC橋驅(qū)動的兩端都會并聯(lián)很大的電容和一小一的電容,這個電容是必須的嗎?

    官方出的關(guān)于bldc電機控制的開發(fā)板,橋驅(qū)動的兩端都會并聯(lián)很大的電容和一小一的電容,這個電容是必須的嗎? 是否可以去掉? 希望得到回復(fù),謝謝!
    發(fā)表于 07-04 07:15
    主站蜘蛛池模板: 视色4se视频在线观看 | 97色在线视频观看香蕉 | 种子 在线播放 | 伊人久久影视 | 男人天堂资源网 | 天天操天天射天天操 | 天天插天天操天天干 | 欧美人与动欧交视频 | 亚洲三级网 | 天天爱天天做天天爽天天躁 | 手机看片福利1024 | 久久国产乱子伦精品免费看 | 麻豆色哟哟网站 | 欧美色视频日本片免费高清 | 日韩亚洲欧洲在线com91tv | 精品亚洲欧美无人区乱码 | 亚洲天堂网站在线 | 日产精品卡二卡三卡四卡乱码视频 | 久久精品久久久久 | 天天看天天射天天碰 | 四虎精品成人免费观看 | 国产成人精品午夜二三区 | 欧美午夜在线视频 | 精品成人网 | 狠狠色狠狠色综合婷婷tag | 天堂中文在线www | 国内精品久久影视 | 久久婷婷丁香 | 男人操女人视频网站 | 深点再深一点好爽好多水 | 加勒比啪啪 | 2018天天操夜夜操 | 三级黄色片在线播放 | 狠狠色综合久久久久尤物 | 日本大片成人免费播放 | 国产一级在线观看www色 | 日韩专区一区 | 色婷婷综合缴情综六月 | 8x8x极品国产在线 | 四虎影院视频 | 性夜黄a爽影免费看 |