Wednesday, January 03, 2007
Saturday, December 09, 2006
老師給的雙核心範例
這個範例所使用的方法是使用兩個功能完全一樣的單核心CPU
藉由ROM所安排的工作來達到分工的效果
如下
rom_1[0] =8'b00100000; //000000 10001 01000 01000 00000 100000
rom_1[1] =8'b01000000; // op=0 rs=17 rt=8 rd=8 funct=32
rom_1[2] =8'b00101000; // add rd, rs, rt ** rd <- rs + rt
rom_1[3] =8'b00000010;
rom_2[0] =8'b00100010; //000000 10001 01000 01000 00000 100010
rom_2[1] =8'b01000000; // op=0 rs=17 rt=8 rd=8 funct=34
rom_2[2] =8'b00101000; // sub rd, rs, rt ** rd <- rs - rt
rom_2[3] =8'b00000010;
第一個CPU第一個工作所做的是add
而第二個CPU第一個工作所做的是sub
所以時間就節省一半了
因為sram的量變為兩倍
故有成本上升之疑慮
而且sram內部資料一致與否
並無加以判斷
如果預先安排的工作需要讀取另一個CPU有更變的參數
則會出現錯誤
藉由ROM所安排的工作來達到分工的效果
如下
rom_1[0] =8'b00100000; //000000 10001 01000 01000 00000 100000
rom_1[1] =8'b01000000; // op=0 rs=17 rt=8 rd=8 funct=32
rom_1[2] =8'b00101000; // add rd, rs, rt ** rd <- rs + rt
rom_1[3] =8'b00000010;
rom_2[0] =8'b00100010; //000000 10001 01000 01000 00000 100010
rom_2[1] =8'b01000000; // op=0 rs=17 rt=8 rd=8 funct=34
rom_2[2] =8'b00101000; // sub rd, rs, rt ** rd <- rs - rt
rom_2[3] =8'b00000010;
第一個CPU第一個工作所做的是add
而第二個CPU第一個工作所做的是sub
所以時間就節省一半了
因為sram的量變為兩倍
故有成本上升之疑慮
而且sram內部資料一致與否
並無加以判斷
如果預先安排的工作需要讀取另一個CPU有更變的參數
則會出現錯誤

