當前位置:首頁 » 操作系統 » 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

熱點內容
ftp傳輸二進制 發布:2025-03-07 01:57:26 瀏覽:282
php網上商城源碼 發布:2025-03-07 01:57:20 瀏覽:703
c語言函數做參數 發布:2025-03-07 01:56:36 瀏覽:271
聯想f309如何設置密碼 發布:2025-03-07 01:55:00 瀏覽:216
python獲取list元素 發布:2025-03-07 01:47:34 瀏覽:141
網易雲雲課堂的緩存 發布:2025-03-07 01:46:39 瀏覽:428
我的世界大廳伺服器怎麼進 發布:2025-03-07 01:33:09 瀏覽:111
php讀文件 發布:2025-03-07 00:36:48 瀏覽:740
無線網如何分享密碼 發布:2025-03-07 00:27:33 瀏覽:428
dvr遠程訪問 發布:2025-03-07 00:24:37 瀏覽:779