CPU工做原理

CPU存儲器高速緩衝存儲器中取出指令,放入指令寄存器,並對指令譯碼。它把指令分解成一系列的微操做,而後發出各類控制命令,執行微操做系列,從而完成一條指令的執行。架構

  指令是計算機規定執行操做的類型和操做數的基本命令。指令是由一個字節或者多個字節組成,其中包括操做碼字段、一個或多個有關操做數地址的字段以及一些表徵機器狀態的狀態字以及特徵碼。有的指令中也直接包含操做數自己。ide

提取spa

  第一階段,提取,從存儲器或高速緩衝存儲器中檢索指令(爲數值或一系列數值)。由程序計數器(Program Counter)指定存儲器的位置,程序計數器保存供識別目前程序位置的數值。換言之,程序計數器記錄了CPU在目前程序裏的蹤影。設計

  提取指令以後,程序計數器根據指令長度增長存儲器單元。指令的提取必須經常從相對較慢的存儲器尋找,所以致使CPU等候指令的送入。這個問題主要被論及在現代處理器的快取和管線化架構。code

解碼htm

  CPU根據存儲器提取到的指令來決定其執行行爲。在解碼階段,指令被拆解爲有意義的片段。根據CPU的指令集架構(ISA)定義將數值解譯爲指令。ci

  一部分的指令數值爲運算碼(Opcode),其指示要進行哪些運算。其它的數值一般供給指令必要的信息,諸如一個加法(Addition)運算的運算目標。這樣的運算目標也許提供一個常數值(即當即值),或是一個空間的定址值:暫存器或存儲器位址,以定址模式決定。get

  在舊的設計中,CPU裏的指令解碼部分是沒法改變的硬件設備。不過在衆多抽象且複雜的CPU和指令集架構中,一個微程序時經常使用來幫助轉換指令爲各類形態的訊號。這些微程序在已成品的CPU中每每能夠重寫,方便變動解碼指令。it

執行io

  在提取和解碼階段以後,接着進入執行階段。該階段中,鏈接到各類可以進行所需運算的CPU部件。

  例如,要求一個加法運算,算數邏輯單元(ALU,Arithmetic Logic Unit)將會鏈接到一組輸入和一組輸出。輸入提供了要相加的數值,而輸出將含有總和的結果。ALU內含電路系統,易於輸出端完成簡單的普通運算和邏輯運算(好比加法和位元運算)。若是加法運算產生一個對該CPU處理而言過大的結果,在標誌暫存器裏,運算溢出(ArithmeticOverflow)標誌可能會被設置。

寫回

  最終階段,寫回,以必定格式將執行階段的結果簡單的寫回。運算結果常常被寫進CPU內部的暫存器,以供隨後指令快速存取。在其它案例中,運算結果可能寫進速度較慢,但容量較大且較便宜的主記憶體中。某些類型的指令會操做程序計數器,而不直接產生結果。這些通常稱做「跳轉」(Jumps),並在程式中帶來循環行爲、條件性執行(透過條件跳轉)和函式。

  許多指令也會改變標誌暫存器的狀態位元。這些標誌可用來影響程式行爲,原因於它們時常顯出各類運算結果。

  例如,以一個「比較」指令判斷兩個值的大小,根據比較結果在標誌暫存器上設置一個數值。這個標誌可藉由隨後的跳轉指令來決定程式動向。

  在執行指令並寫回結果以後,程序計數器的值會遞增,反覆整個過程,下一個指令週期正常的提取下一個順序指令。若是完成的是跳轉指令,程序計數器將會修改爲跳轉到的指令位址,且程序繼續正常執行。許多複雜的CPU能夠一次提取多個指令、解碼,而且同時執行。這個部分通常涉及「經典RISC管線」,那些其實是在衆多使用簡單CPU的電子裝置中快速普及(常稱爲微控制(Microcontrollers))

相關文章
相關標籤/搜索