一顆CPU是如何執行的?

時間 2021-06-17 14:30:45

1樓:Trustintruth

這本書會給你很多答案

先從指令說起

首先我們的程式的執行過程其實是指令的執行過程。指令是一段定長的01序列。指令就是用cpu讀得懂的方式告訴cpu對應的操作。

mips指令分r型i型j型,這是由指令不同的結構進行分類的。cpu通過識別指令前6位(op)來判別指令是什麼型別的。不同類別的指令有的是進行暫存器之間操作的,還是進行暫存器裡面的值和指令提供的數進行運算,還是把乙個特定數存到暫存器中或從暫存器中取出來。

除此之外,指令還有條件分支指令,也就是滿足條件就跳轉到某一條指令。還有直接跳轉,不管如何都跳到某一指令。一般的操作指令都是按順序來執行的,當遇到上面兩種指令的時候指令執行的順序就會變化,完成選擇或者迴圈的操作。

像乙個簡單的程式,可能是先進行一些存數的操作,把要操作的數值存到暫存器堆中,在採取暫存器堆之間的資料操作,把計算結果再存回暫存器堆。以後使用條件分支語錄來判別得到的答案是否滿足要求,滿足就把它讀出來,不滿足就跳轉語句,跳回去再從新做。

上面提到的很多選擇模組,包括進行運算操作的ALU,都是根據邏輯功能進行設計,設計好之後的實現到互補cmos結構,比如乙個簡單的加法器,就可以使用nmos和pmos搭起來

而涉及到時序單元的部分設計就包括了暫存器,暫存器也是由管子組成的。

2樓:名字只是pointer

首先,我認為問題有誤,電路的通斷不是通過PN結實現的,而是MOSFET,PN結在mos裡只負責「斷」不負責「通」。當然更先進的還有FinFet和nano sheet,不過咱們還是說簡單的吧。從下到上說。

為什麼是0和1?最底層

MOS在數字ic中很簡單,收到高電壓(nmos)或者低電壓(pmos)我就導電,變成乙個「導線」,這就是我們所說的,開關。現在的數字積體電路中,用的都是cmos,也就是說,一套pmos負責拉高電壓,一套nmos負責拉低電壓。兩套系統必須互補,乙個發生,另乙個一定不會發生。

而cmos只會把電壓拉到最高和最低,所以在數字邏輯中只有0和1(理想情況,實際在電路中並非如此)。

邏輯門

用不同的CMOS設計,就可以出現不同的邏輯門。比如1和0等於0,1或0等於1。用不同的基本邏輯門,可以設計出更高階的基礎部件,特別是和時鐘有關的,比如暫存器(可以記住上次「敲鐘」的時候是0還是1)。

時鐘在電路裡並不是時間,只是乙個訊號說01010101……否則電路怎麼知道你是0還是00還是000呢?

計算機架構

這裡用最基本的risc-v架構。有了邏輯門之後,我們就可以做出CPU的基礎部件了。乙個基本的cpu有五個部件,指令記憶體,指令解碼器,Register File(中文不知道,即時儲運需要運算的資料),計算單位和資料記憶體。

那cpu幹啥呢,接受指令,搞清楚指令要幹嘛,從RF找到資料,用計算單位進行某種計算,讀東西或者寫東西到資料記憶體,存資料(從資料記憶體或者計算結果)到RF。

機械語言,組合語言和其他高階語言

那CPU怎麼執行軟體呢?很簡單,編譯器會把軟體翻譯成組合語言(為了好讀的機械語言,可以和機械語言一對一對應)。彙編器把組合語言翻譯成機械語言,機械語言存入指令記憶體,然後cpu幹上面說的那些事。

還有很多東西沒提到,但是總而言之,電腦執行,從軟到硬,頂層到底層,就是把很簡單的一件事,快速的大量的做。

宇宙中是否存在一顆恆星是另外一顆恆星的衛星的情況?

來不及解釋了 不存在。原因 從定義上講,衛星不可能是恆星。恆星也不可能擁有自己的衛星。當然,這本來就是人類自己給出的定義,你可以向世界天文學會申請修改恆星和衛星的定義,並得到通過,被廣大天文學家和天文工作者接受,那麼也許就會出現 一顆恆星是另一顆恆星的衛星 的情況了。具體解釋如下 如果一顆星體能夠自...

太陽是一顆怎樣的恆星?

我是錘錘 太陽是一顆非常普通的主序星,太陽系的千分之九百九十八在太陽身上。太陽一共有八顆大行星,分別是水星,金星,地球,火星,木星,土星,天王星,海王星。 橫山老屍 太陽直徑大約是1392000 1.392 106 千公尺,相當於地球直徑的109倍 體積大約是地球的130萬倍 其質量大約是2 103...

如何造就一顆強大的內心?

緣故浮動 不管世界怎樣對我,我也不奢求這個世界怎樣對我。我願意像我所希望的世界能怎樣對我一樣,去對待這個世界。因為我也是這個世界的一部分,或許我不能改變整個世界,但是我能夠改變我自己。人心思變,我唯一明白的,只有我自己。曾經嚮往浮萍的那種自由無所依賴 隨風而動 但憑心定。曾經以為乙個人便是浮萍,自由...