【北航計組】p3 單週期cpu
2. 控制器
3. 暫存器堆
4. 運算模組
5. 記憶體
二、cpu執行原理
三、電路圖及詳解
總結利用logisim繪製狀態機
利用verilog編寫狀態機
利用mars編寫遞迴程式
單週期cpu基本結構如下所示:
上圖cpu分為:取指模組、控制器、暫存器堆、運算模組、記憶體五個部分。
在32位機中,每一條指令都由乙個32位二進位制數表示,占用4個位元組。
例如 add $2, $0, $1 這條指令,意思是將暫存器0和暫存器1的值相加,結果存入暫存器2中。mars會將它翻譯成:其中31-26位和5-0位分別是,表示這條指令是加法指令;25-21,20-16,15-11位分別表示要操作的暫存器編號;對於加法指令,10-6位是空缺的,填充0。
其他指令也會按照類似的規則轉化成32位二進位製碼,存在指令暫存器中。
詳見 【北航計組】p3 pre 指令詳解
當程式執行時,由程式計數器記錄當前執行到第幾條指令,然後從指令暫存器中取出對應的指令(乙個32位數),傳遞給其他模組。
控制器的功能是識別指令,並對其他模組發出訊號。控制器通常要讀取opcode、function部分,有時也需要rs、rt、rd、shamat部分。當opcode(和function等其他部分)的組合符合某一條指令時,控制器識別到這條指令,並發出各個模組執行這條指令所需要的訊號。
例如,當opcode = ,function = 時,控制器識別到加法指令,然後發出regwrite(寫暫存器訊號)給暫存器堆,add(加法指令訊號)給運算模組,同時還要給需要用到的選擇器傳送訊號,例如選擇寫入暫存器位址的選擇器。
儲存32個暫存器的值,在mips-c暫存器中,0號暫存器永遠是0,無法被寫入;31號暫存器是跳轉位址暫存器,在jal指令時,存入指令位址。
暫存器堆有兩個資料輸出端、乙個資料輸入端。a1、a2、a3分別對應這三個埠的暫存器編號。
詳見【北航計組】p3 pre 暫存器堆
支援加、減、移位等運算。讀入兩個資料,根據控制器的訊號,做出對應的運算就可以了。
儲存資料,支援記憶體與暫存器堆之間的讀寫。
最初,程式計數器內值為0x3000,即從這一條指令開始執行。
讀取對應指令
在控制器解碼
從暫存器堆取出所需資料
將資料送入運算模組執行對應運算
將結果寫入暫存器堆
程式計數器+4(下一條指令的位置),返回1
例如:讀取對應指令
在控制器解碼
從暫存器堆取出所需資料
將資料送入運算模組執行對應運算
判斷分支條件是否成立,若成立,程式計數器跳轉到指定位置,否則程式計數器+4(下一條指令的位置),返回1
例如:讀取對應指令
在控制器解碼
從暫存器堆取出所需資料
如果有寫暫存器操作,需要將對應位址寫入暫存器堆。
程式計數器跳轉到指定位置,返回1
例如:讀取對應指令
在控制器解碼
從暫存器堆取出所需資料
將資料送入運算模組執行對應運算
讀取或寫入記憶體對應位置。如果是讀記憶體指令,需要將讀取的結果寫入暫存器
程式計數器+4(下一條指令的位置),返回1
例如:
p 3 與 p 3 的區別
p 3 與 p 3 的區別 int p 3 p是乙個陣列,此陣列有3個元素,每個元素都是int型別,也就是指向整型資料的指標型別。int a 10,b 20,c 30 int p 3 而int p 3 中的p是乙個指向陣列的指標,此陣列有3個int型別的元素。例如 int a 3 那麼p就是指向這個...
(P3)系統程式設計介紹
e2big 引數列表太長 eaccess 許可權不足 eagain 重試 ebady 錯誤的檔案描述符 ebusy 裝置或資源忙 echild 無子程序 edom 數學引數不再函式域內 eexist 檔案已存在 efault 位址錯誤 efbig 檔案太大 eintr 系統呼叫被中斷 include...
排序(左神初級)p3
穩定的排序演算法有 冒泡 插入 歸併 桶排序 不穩定的演算法 快排 選擇 堆排 1.計數排序不基於比較,準備max值 1個桶 2.遍歷陣列,數值為a時,把桶位置為a的數加一 3.重構陣列。class solution int minm int max int maxm int min 找到最大最小值...