今天,咱們繼續更新【程序員進階系列】專題,冰河帶你從零入坑程序員。接下來,咱們一塊兒聊聊計算機的結構和體系分類。git
文章已收錄到:程序員
https://github.com/sunshinelyz/technology-binghegithub
https://gitee.com/binghe001/technology-binghe編程
計算機結構主要由運算器、控制器、存儲器、輸入設備和輸出設備組成。簡化的結構圖以下圖所示。微信
接下來,咱們再看看看其詳細的結構圖以下所示。
異步
其中,主存儲器又叫作內存儲器,也就是內存;輔助存儲器又叫作輔存,也就是外存儲器,例如磁盤;CPU的核心部件爲運算器和控制器。編程語言
CPU由運算器、控制器、寄存器組和內部總線組成。優化
運算器包含:算術邏輯單元、累加寄存器、數據緩衝寄存器、狀態條件寄存器。spa
控制器包含:程序計數器、指令寄存器、指令譯碼器、時序部件。
內存
首先,咱們先來看一個在計算機領域中,對計算機的體系結構進行分類的一種經典方法,就是Flynn分類法,Flynn分類法將計算機分紅單指令流單數據流、單指令流多數據流、多指令流單數據流、多指令流多數據流。
具體信息以下表所示。
體系結構類型 | 結構 | 關鍵特性 | 表明 |
---|---|---|---|
單指令流單數據流(SISD) | 控制部分:一個 處理器:一個 主存模塊:一個 | 單處理器系統 | |
單指令流多數據流(SIMD) | 控制部分:一個 處理器:多個 主存模塊:多個 | 各處理機以異步的形式執行同一條機靈 | 並行處理機、陣列處理機、超級向量處理機 |
多指令流單數據流(MISD) | 控制部分:多個 處理器:一個 主存模塊:多個 | 被證實是不可能的,至少是不實際的 | 目前沒有,有資料記載流水線處理機爲此類 |
多指令流多數據流(MIMD) | 控制部分:多個 處理器:多個 主存模塊:多個 | 可以實現做業、任務、指令等各級全面並行 | 多處理機系統、多計算機 |
一條指令就是機器語言的一個語句,它是一組有意義的二進制代碼,指令的格式以下所示。
其中,操做碼部分指出了計算機要執行什麼性質的操做,例如,加法、減法、取數、存數等。地址碼字段須要包含各操做數的地址及操做結果的存放地址等,從其地址結構的角度能夠分爲三地址指令、二地址指令、一地址指令和零地址指令。
例如,執行a+b=c操做時,就是使用的三地址指令。此時以下所示。
例如,執行a+=b操做時,執行的就是二地址指令,此時以下所示。
例如,執行a++操做時,執行的就是一地址指令,此時以下所示。
例如,宕機就是零地址指令。
整體來講,尋址方式能夠分爲:當即尋址、直接尋址、間接尋址、寄存器尋址、寄存器間接尋址。
CISC和RISC分別表示複雜指令集系統和精簡指令集系統,具體信息以下表所示。
指令系統類型 | 指令 | 存執方式 | 實現方式 | 其餘 |
---|---|---|---|---|
CISC(複雜) | 數量多、使用頻率差異大,可變長格式 | 支持多種 | 微程序控制技術(微碼) | 研發週期長 |
SISC(精簡) | 數量少,使用頻率接近,定長格式,大部分爲單週期指令,操做寄存器,只有Load/Store操做內存。 | 支持方式少 | 增長了通訊寄存器、硬佈線邏輯控制爲主,適合採用流水線 | 優化編譯,有效支持高級編程語言 |
如何比較CISC和RISC,分哪些維度?
指令數量、指令使用頻率、存執方式、寄存器、流水線支持、高級語言支持。
好了,今天就到這兒吧,我是冰河,你們有啥問題能夠在下方留言,也能夠加我微信:sun_shine_lyz,我拉你進羣,一塊兒交流技術,一塊兒進階,一塊兒牛逼~~