Linux之x86架構
x86是一個開放的平臺
計算機工作模式
基本組成
- CPU:中央處理器,計算機的大腦
- 匯流排:CPU和其他裝置通過匯流排連線,匯流排其實就是主機板上密密麻麻的積體電路,組成了CPU和其他裝置的高速通道
- 記憶體:單靠CPU是無法完成計算任務的,很多複雜計算任務都需要將中間結果儲存下來,基於中間結果進一步計算,中間結果由於量大,所以就需要依賴記憶體了。
CPU和記憶體配合工作
CPU包括三個部分:
- 運算單元:只負責計算,例如位移、加法等,但是不知道應該算哪些資料,運算結果放在哪
- 資料單元:包含CPU內部的快取和暫存器組,空間雖小,但速度快,暫時存放資料和運算結果。出現原因是不用運算單元去經過匯流排去記憶體裡拿(這種過於耗時)。
- 控制單元:指揮運算的地方,是一個統一的指揮中心,它可以獲得下一條指令,然後執行這條指令,這個指令會指導運算單元去取資料單元裡的某幾個資料,計算出結果,然後放到資料單元裡某個位置
每個專案都有一個專案執行計劃書,是一行行專案執行的指令,都是放在檔案庫裡面的。即每個程式都有一個程式放在磁碟上,是二進位制的,裡面是一行行的指令,操作一些資料。
程式一旦執行,比如上圖中程式A和程式B會有獨立的記憶體空間,互相隔離,程式會分別載入到程式A和程式B的記憶體空間裡,形成各自的程式碼段。
CPU如何將資料寫回記憶體
CPU控制單元裡有個指令指標暫存器,裡面存放的是下一條指令再記憶體中的地址。
控制單元會不停的將程式碼段的指令拿進來,先放入指令暫存器。
指令分兩部分:做什麼操作和操作哪些資料
具體執行指令需要
- 做什麼操作交給運算單元
- 操作哪些資料交給資料單元
具體執行
- 資料單元根據資料的地址,從資料段裡讀到資料暫存器裡,參與運算
- 運算單元做完運算,產生的結果會暫存再資料單元的資料暫存器裡
- 最終會有指令將資料寫回記憶體的資料段
CPU裡有兩個暫存器,專門用來儲存當前處理程式的程式碼段起始地址和資料段的起始地址,當程式切換的時候,這裡的地址就會發生變換。
CPU和記憶體傳資料靠的都是匯流排,匯流排有兩類
- 地址匯流排:地址資料,代表記憶體中那個位置
- 資料匯流排:真正儲存的資料
地址匯流排的位數決定了定址範圍,資料匯流排的位數決定了一次能拿的資料大小。
相關文章
- ARM和X86架構架構
- X86架構與ARM架構的區別:架構
- X86架構伺服器架構伺服器
- Linux系統檢視伺服器是arm架構還是x86架構Linux伺服器架構
- ARM與X86架構的對決架構
- 架構之:serverless架構架構Server
- [轉] 淺析x86架構中cache的組織結構架構
- 深入瞭解CPU兩大架構ARM與X86架構
- 架構之:資料流架構架構
- 前端架構之小小node架構前端架構
- 【細品架構4/100】架構之架構切分架構
- 架構演進之「微服務架構」架構微服務
- MySQL 高可用架構之 MMM 架構MySql架構
- 架構之:微服務架構漫談架構微服務
- 架構之:軟體架構漫談架構
- 軟體架構模式之微服務架構架構模式微服務
- IT架構之IT架構模型——思維導圖架構模型
- 架構設計之架構的演變架構
- Linux網站架構系列之Mysql----部署篇Linux網站架構MySql
- 專案重構之架構架構
- Hive之 hive架構Hive架構
- IT架構之IT架構標準——思維導圖架構
- 前端架構之移動端混合架構(hybrid)前端架構
- 深入 Nginx 之架構篇Nginx架構
- 架構之:REST和HATEOAS架構REST
- 架構之:REST和RESTful架構REST
- 精通MySQL之架構篇MySql架構
- MySQL之基礎架構MySql架構
- 架構思想之CAP原理架構
- MySQL 之開放架構MySql架構
- Biztalk 開發之架構架構
- react 之 fiber 架構React架構
- x86架構中的外部中斷結構-Part 1:中斷控制器的演化架構
- Linux-2.6.32 NUMA架構之記憶體和排程Linux架構記憶體
- 【細品架構2/100】架構之概念認知架構
- Linux 概念架構的理解Linux架構
- 11.Spring Cloud 分散式、微服務、雲架構企業快速開發架構之Linux 磁碟管理SpringCloud分散式微服務架構Linux
- 【細品架構3/100】架構之問題識別架構