CPU的工作機制,比較繁瑣,他需要幾大部分協同工作,邏輯計算單元ALU,包含數學計算加減乘除,平方根等等,邏輯運算,與或非異左右位移.同時它還需要至少兩個資料暫存器,如精簡的A=A(+-*/)B,和經典的C=A+B三個暫存器.為了保證取資料的步驟不發生混亂。暫存器和alu協調工作。還需要控制匯流排與微碼譯碼器。控制匯流排,就是一堆使能線.例如A暫存器的使能線為高電平,B暫存器的使能線也為高電平,C暫存器與Alu中的加法器使能線也為高電平,同時開啟溢位標誌位CV,和0標誌位ZF,諸位看官,可以發現。這就是傳統的x86彙編指令。ADD A,B.微碼譯碼器的作用是根據時鐘時序,依次開啟這些使能線,這樣就由我們彙編宏指令,變成了能夠詳細控制CPU模組的微指令.講完這裡,暫存器中的資料是如何載入的呢?一定要透過記憶體或者外部裝置.那麼我們需要有地址匯流排,地址總線上我們需要有地址暫存器,還需要有定址計算器,他也是一個縮水版加減法alu,他實現了地址的任意數相加/減,累加和累減。比如,我們現在64位元的記憶體。就是64根地址引腳,64跟資料引腳,一根使能en線,給64位元的地址,返回64位元的資料。這裡就涉及到兩個經典的架構馮諾伊曼架構和哈佛架構,這個之間的區別,看相關的書籍大家就會很明白了,綜合我所講的.計算單元和資料單元以及地址單元。都需要靠微碼,根據時序正確的開啟。都在講微碼,去操作控制匯流排,這個東西,怎麼來的怎麼來的?這個東西是根據輸入的宏指令內建的翻譯機翻譯出來的。宏指令要輸入需要什麼?又涉及到另外一個獨立的模組。他由,程式計數器PC,指令暫存器IR他們把PC運算好的資料放入地址暫存器,從記憶體,或者rom.中取出相關的宏指令,放入指令計算器IR,這裡要講一個特別重要的知識點,就是時鐘的有效沿,alu相關的模組和暫存器 ,按國際慣例都是時鐘的上升沿有效。也就是說用的是斯密特觸發器。上升沿的時候觸發計算。而指令相關的模組,都是時鐘的下降沿生效。也就是反斯密特觸發器。本時鐘週期做好的時候,在下降沿,已經讀取了下一個時鐘週期,所要執行的指令。這樣CPU才能不間斷的迴圈往復。剩下的就是匯流排的擴充套件和外設的操作。CPU通常的做法是透過地址對映。把某一段地址區域。單獨劃出來。當操作這段地址的時候,並不去記憶體讀取資料。而是把它送到外部的一個簡單的,例如38譯碼器,或者是雙向三態門,實現GPIO。MCU的做法是,擴充套件了宏指令和微碼。控制匯流排可以直接讓暫存器輸出GPIO.有了這些功能,一個CPU的基本生態就已經形成了。不知道大家看明白了沒有。如果沒有下個答案,我把我模擬器中的整個CPU原形的圖片傳上來。
CPU的工作機制,比較繁瑣,他需要幾大部分協同工作,邏輯計算單元ALU,包含數學計算加減乘除,平方根等等,邏輯運算,與或非異左右位移.同時它還需要至少兩個資料暫存器,如精簡的A=A(+-*/)B,和經典的C=A+B三個暫存器.為了保證取資料的步驟不發生混亂。暫存器和alu協調工作。還需要控制匯流排與微碼譯碼器。控制匯流排,就是一堆使能線.例如A暫存器的使能線為高電平,B暫存器的使能線也為高電平,C暫存器與Alu中的加法器使能線也為高電平,同時開啟溢位標誌位CV,和0標誌位ZF,諸位看官,可以發現。這就是傳統的x86彙編指令。ADD A,B.微碼譯碼器的作用是根據時鐘時序,依次開啟這些使能線,這樣就由我們彙編宏指令,變成了能夠詳細控制CPU模組的微指令.講完這裡,暫存器中的資料是如何載入的呢?一定要透過記憶體或者外部裝置.那麼我們需要有地址匯流排,地址總線上我們需要有地址暫存器,還需要有定址計算器,他也是一個縮水版加減法alu,他實現了地址的任意數相加/減,累加和累減。比如,我們現在64位元的記憶體。就是64根地址引腳,64跟資料引腳,一根使能en線,給64位元的地址,返回64位元的資料。這裡就涉及到兩個經典的架構馮諾伊曼架構和哈佛架構,這個之間的區別,看相關的書籍大家就會很明白了,綜合我所講的.計算單元和資料單元以及地址單元。都需要靠微碼,根據時序正確的開啟。都在講微碼,去操作控制匯流排,這個東西,怎麼來的怎麼來的?這個東西是根據輸入的宏指令內建的翻譯機翻譯出來的。宏指令要輸入需要什麼?又涉及到另外一個獨立的模組。他由,程式計數器PC,指令暫存器IR他們把PC運算好的資料放入地址暫存器,從記憶體,或者rom.中取出相關的宏指令,放入指令計算器IR,這裡要講一個特別重要的知識點,就是時鐘的有效沿,alu相關的模組和暫存器 ,按國際慣例都是時鐘的上升沿有效。也就是說用的是斯密特觸發器。上升沿的時候觸發計算。而指令相關的模組,都是時鐘的下降沿生效。也就是反斯密特觸發器。本時鐘週期做好的時候,在下降沿,已經讀取了下一個時鐘週期,所要執行的指令。這樣CPU才能不間斷的迴圈往復。剩下的就是匯流排的擴充套件和外設的操作。CPU通常的做法是透過地址對映。把某一段地址區域。單獨劃出來。當操作這段地址的時候,並不去記憶體讀取資料。而是把它送到外部的一個簡單的,例如38譯碼器,或者是雙向三態門,實現GPIO。MCU的做法是,擴充套件了宏指令和微碼。控制匯流排可以直接讓暫存器輸出GPIO.有了這些功能,一個CPU的基本生態就已經形成了。不知道大家看明白了沒有。如果沒有下個答案,我把我模擬器中的整個CPU原形的圖片傳上來。