當前位置:首頁 » 操作系統 » ffd演算法

ffd演算法

發布時間: 2023-08-25 22:41:57

㈠ 加拿大pc演算法教程

1.三級流水線:其實對於PC = PC +8這個問題很簡單,這兩個PC其實代表著不同的意義,第一個PC是對於CPU而言,而第二個PC而言是我們通過編譯器看到的PC(PC指向程序正在運行的那一條指令),但是對於CPU的PC是永遠指向取指那個步,故PC = PC +8。

2.五級流水線; ARM9流水線包括取指(fetch)、解碼(decode)、執行(excute)、緩沖/數據(buffer/data)、回寫(write-back)寄存器堆。ARM9流水線在解碼階段已經開始讀取操作數寄存器,因此解碼階段的PC值和取指階段的PC值關系為:PC(decode)=PC(fetch)+4。因此執行階段的PC值和解碼階段的PC值關系為:PC(excute)=PC(decode)+4。

3.對於軟中斷函數的返回時的PC:如下

ARM Thumb

SWI PC-8 PC-4

xxx 》 PC -4 PC-2 (異常返回將執行這條指令)

yyy PC PC

因此返回指令為: MOV PC , LR

原因:異常是由指令本身引起的,因此內核在計算LR時的PC值並沒有被更新。對於ARM狀態,因為SWI指令表示將跳到異常處理函數,此時SWI這條指令的PC = PC -8,當進入異常處理函數之前,硬體會自動把PC-4保存到LR寄存器中,所以異常處理函數結束後直接MOV PC, LR就行,就會跳到xxx這一條指令去執行。對於Thumb狀態同理。

4.對於IRQ和FIQ中斷函數返回時的PC:

ARM Thumb

xxx PC-12 PC-6 (程序在運行這條代碼時就產生了中斷信號)

yyy 》 PC-8 PC-4 (異常返回將執行這條指令)

zzz PC-4 PC-2

www PC PC

返回指令為: SUBS PC, LR, #4

原因:異常在當前指令執行完成後才會被響應,因此內核在計算LR時的PC值已被更新。對於ARM狀態,程序在執行xxx這條指令時,中斷信號產生,但是由於中斷必須在這一條指令執行完之後才會被響應,執行完後,則此時對於CPU的PC已經指向了www這條指令的取指,在中斷函數函數時應該執行yyy這條指令,雖然硬體會把PC-4的值賦值給LR寄存器,但是這是指向zzz這條指令的,所以返回時應該SUBS PC, LR, #4。對於Thumb狀態同理。

㈡ 急需一個裝箱演算法的MATLAB程序!謝謝啦~願出高分!

%裝箱問題FFD演算法實現
%物品的體積
W = [0.125,0.268,0.159,0.168,0.126,0.168,0.249,0.536,0.427,0.179,0.182,0.149,0.156,0.152,0.135,0.161,0.191,0.183,0.174,0.198];
%箱子的編號
V = 1:1:20;
%箱子的體積
U = [1.4,1.3,1.0,1.1];
%箱子的狀態
state = zeros(20,4);

%第一步:將物品體積按照從大到小排序
for i = 1:length(W) - 1
for j = i + 1 :length(W)
if W(i) < W(j)
temp = W(i);
temp_v = V(i);
W(i) = W(j);
V(i) = V(j);
W(j) = temp;
V(j) = temp_v;
end
end
end

%第二步:每次將體積最大的物品放到剩餘體積最小的箱子中
for i = 1:length(W)
%找到剩餘體積最大的箱子
max = 0;%保存剩餘體積最大的體積
max_k = 0;%保存最大體積的箱子的編號
for j = 1:length(U)
if max < U(j)
max = U(j);
max_k = j;
end
end
%將最大的物品放到剩餘體積最大的箱子
if W(i) < U(max_k) & state(V(i),max_k) == 0%如果物品的體積比剩餘的箱子的體積大
state(V(i),max_k) = 1;%狀態發生變化
U(max_k) = U(max_k) - W(i);%箱子的體積變化
else%如果物品的體積比箱子的體積小,則找到下一個剩餘體積最小的箱子
maxx = 0;
maxx_k = 0;
for j = 1:length(U)%找到下一個剩餘空間最小的箱子
if maxx < U(j) & U(j) > U(max_k)
maxx = U(j);
maxx_k = j;
end
end
%將物品放到這個箱子中
if W(i) < U(maxx_k) & state(V(i),maxx_k) == 0
state(V(i),maxx_k) =1;%狀態發生變化
U(maxx_k) = U(maxx_k) - W(i);%箱子的體積變化
else
continue;%否則的話繼續循環下一個物品
end
end
end

熱點內容
家用電腦改成伺服器並讓外網訪問 發布:2025-02-01 15:30:23 瀏覽:354
javac工資 發布:2025-02-01 15:24:28 瀏覽:22
如何刪除伺服器登錄賬號 發布:2025-02-01 15:21:05 瀏覽:498
瑞薩編程器 發布:2025-02-01 15:19:18 瀏覽:85
上海ntp伺服器搭建 發布:2025-02-01 15:03:38 瀏覽:991
c游戲編程基礎 發布:2025-02-01 15:00:17 瀏覽:993
routejs怎麼動態配置 發布:2025-02-01 14:59:07 瀏覽:502
家用電腦安裝伺服器內存 發布:2025-02-01 14:38:50 瀏覽:257
增量調制編解碼實驗報告 發布:2025-02-01 14:30:30 瀏覽:787
不良人2無敵傷害腳本 發布:2025-02-01 14:23:04 瀏覽:398