體系結構 記分牌實例

https://www.bilibili.com/video/av19929862?p=16
https://www.icourses.cn/web/sword/portal/shareDetails?&cId=3266#/course/chapter


在這裏插入圖片描述
初始狀態
在這裏插入圖片描述
第1個週期
流出第1條指令
源操作數R2已經就緒
在這裏插入圖片描述
第2個週期
第1條指令進入讀操作數階段
第2條指令需要整數部件,無空閒的整數部件,存在結構阻塞,不能流出
在這裏插入圖片描述
第3個週期
第1條指令完成地址計算(R2的內容+34),得到訪存地址
釋放R2,此處No不代表數據沒有就緒,而是指這個數據沒有用了
此時整數部件被佔用,仍不能流出第2條指令
根據約定,前面指令流出之前,後面指令也不能流出,故第3條指令也不能流出
在這裏插入圖片描述
第4個週期
得到第1條指令的結果
釋放整數部件
將結果寫到F6
在這裏插入圖片描述
第5個週期
第2條指令流出,使用整數部件,目標寄存器F2,源操作數R3有效
在這裏插入圖片描述
第6個週期
第2條指令推進一步,讀操作數
第3條指令流出,使用乘法部件1,目標寄存器F0,源操作數F2正在等待整數部件的結果(沒有就緒),F4就緒
在這裏插入圖片描述
第7個週期
第2條指令(LD)推進一步,完成執行階段(R3的值+45),形成地址。釋放R3,設置爲No
第3條指令(MULTD)仍沒有拿到F2,繼續等待
第4條指令(SUBD)需要的加法部件空閒,可以流出。目標寄存器F8,源操作數F6就緒,F2等待整數部件,沒有就緒
在這裏插入圖片描述
第8個週期(前半個週期)
第2條指令(LD)的結果產生,寫到F2中去。但並不能馬上供等待F2的部件(Mult1和Add)使用
第5條指令(DIVD)流出

在這裏插入圖片描述
第8個週期(後半個週期)
此時F2的數據送到了等待它的部件
Mult1和Add的所有源操作數狀態都變成了就緒
結果狀態表中,F2也已經就緒了
(即前半個週期讀Load結果,後半個週期寫寄存器,送到需要的部件)
在這裏插入圖片描述
第9個週期
第3條(MULTD)乘法指令和第3條(SUBD)減法指令的源操作數都是就緒狀態,可以啓動執行,進入讀操作數階段
又減法指令需要2個時鐘週期完成,乘法指令需要10個時鐘週期完成(前面的假設)
需要另外2個計數器記錄執行狀態
第6條(ADDD)加法指令需要加法部件,而加法部件正在被減法指令使用,沒有空閒,所以加法指令不能流出
在這裏插入圖片描述
第10個週期
乘法指令和減法指令都在計算中,無事發生
在這裏插入圖片描述
第11個週期
減法指令計算完成
在這裏插入圖片描述
第12個週期
第4條(SUBD)減法指令將結果寫到F8,檢查表格中有沒有等待F8的,發現沒有。釋放減法部件,減法指令結束
在這裏插入圖片描述
第13個週期
加法部件空出,加法指令可以流出,檢查源操作數,F0和F6都是就緒的
在這裏插入圖片描述
第14個週期
加法指令讀操作數,開始執行,執行需要2個時鐘週期
在這裏插入圖片描述
第15個週期
乘法和加法都在計算中,無事發生
在這裏插入圖片描述
第16個週期
加法計算完成
在這裏插入圖片描述
第17個週期
加法計算完成後,應該要寫回F6
但是此時檢查發現,除法指令的F6是就緒的,也就是說,除法指令需要使用F6但是還沒有讀走
發生了讀後寫相關
所以此時加法雖然計算完了,但是還不能寫到F6
需要等待到F6被除法指令讀走,才能寫F6,完成加法指令的執行
在這裏插入圖片描述
第18個週期
乘法指令仍在計算
除法指令等待乘法的計算結果
加法指令等待除法讀走F6
在這裏插入圖片描述
第19個週期
乘法終於算完了
在這裏插入圖片描述
第20個週期
乘法計算完後寫F0,乘法指令完成
除法指令拿到F0,兩個源操作數都就緒了
在這裏插入圖片描述
第21個週期
除法指令開始計算,需要40個時鐘週期
在這裏插入圖片描述
第22個週期
除法計算還剩39個週期
由於除法指令終於讀走了F6,加法指令可以把算出的數寫到F6了
加法指令完成
在這裏插入圖片描述
第61個週期
除法指令計算出來了
在這裏插入圖片描述
第62個週期
除法結果寫到F10,除法指令完成
在這裏插入圖片描述
所有指令都運行結束了
可以發現,指令流出是順序的,讀操作數、執行和寫結果是亂序的
在這裏插入圖片描述
記分牌中,指令順序流出,亂序執行,亂序寫回

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章