森/Report
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[森/メモ]]
**3月 16日 [#t18f6b31]
-執筆作業の進め方
+レポートの大まかな構成を練る。
+改めて、関連文献を洗い直す。
+レポートの構成を完璧に決める。
+ともかく一度、一挙に全部かいてみる。
+書きやすい章から仕上げにかかる。
+レポートを部分放置して頭を冷やす。
-大まかな構成
+設計の目標
+設計内容
+CPU アーキテクチャー
3.1 パイプライン化について
3.2 APPNAについて
3.3 命令追加について
3.4 OPT_MAPについて
+コンパイラ
+結果
5.1 動作検証
5.2 結果の評価
+考察
6.1 結論
-関連文献
--ディジタル数値演算回路の実用設計(APPNA部分)
--作りながら学ぶ コンピュータアーキテクチャ(pico16の全般)
--コンピュータ設計の基礎知識(パイプラインについて)
--第12回パルテノン講習会 テキスト(OPT_MAP部分とsfl記述)
--http://www.kecl.ntt.co.jp/parthenon/hajimete/7shou.htm(OPT_MAP部分とsfl記述)
--http://www.am.ics.keio.ac.jp/arc/(パイプラインについて)
--廣本 正之, 藤田 憲正 第11回 ASIC デザインコンテスト 規定課題 16 bit CPU "PCA-16"
--進藤 陽広, 大堀 文子, 大和田 大輔, 柴田 浩一 第12回 ASIC デザインコンテスト 規定課題 16 bit CPU "はないずみ"
--猪狩 修平, 増田 昌士, 滋賀 瑞穂 第13回 ASIC デザインコンテスト 規定課題 16 bit CPU "いずみかわ"
--http://zxp044.u-aizu.ac.jp/~m5121216/wiki/index.php?SFL
--http://www.aoki.ecei.tohoku.ac.jp/arith/mg/algorithm.html(APPNA部分)
*参照『これから レポート・卒論を書く 若者のために』 酒井 聡樹 著
- 関連文献はWebページも含む、と思われます。 -- [[大和田]] &new{2009-03-16 (月) 17:12:13};
- Webページでは、学内専用のページなども記載すべきでしょうか? -- [[森]] &new{2009-03-16 (月) 17:37:33};
- 学内専用は無理だな。http://zxp044.u-aizu.ac.jp/~m5121216/wiki/にPICO関連は載せたので、そっちを使ってみてください。 -- [[大和田]] &new{2009-03-16 (月) 20:14:17};
- ありがとうございます。使わせていただきます。 -- [[森]] &new{2009-03-17 (火) 16:49:14};
#comment
**3月 17日 [#v53b12b8]
-パイプラインについて
--3段のパイプラインをつくった。
--IR-stage
---分岐命令か判定し、もし分岐命令ならex_bch_adrsをpcとしてとる。違うときは現在のpcよりirを決定し、pcをインクリメントする。
--RF-stage
---OP、FUNCにより命令をデコードする。各命令に必要なパイプラインレジスタをEXステージに渡す。
--EX-stage
---命令ごとにALUでの演算を行う場合は行い、レジスタにライトバックする。
全ての命令を3ステージで実行するようにした。
-APPNAについて
--Ladner-Fischer adder
---論理段数は最小な構成になるが、ファンアウトが大きくなる加算器。
--Kogge-Stone adder
---回路規模が大きくなるが、最も最大遅延を抑える加算器。ファンアウトが最小。
--Brent-Kung adder
---回路規模は最小な構成になるが、論理段数が大きくなる(最大遅延が増える)加算器。
--Han-Carlson adder
---回路規模と論理段数のバランスのとれた加算器。Kogge-StoneとBrent-Kungの構成を混合させたような構成になる。
-追加命令について
--PUSH、POP
---関数に入る際に、レジスタを退避、復帰させる命令は各2命令ずつかかっていたので、push、pop命令に書き換えることで、1命令で済むようにした。
今日(3月17日)の分は、わかりにくいのでメモ程度として使おう。。。
#comment
**3月 22日 [#m01c748c]
-命令セット
|命令|機械語|アセンブリ言語|形式|処理の内容|
|nop|00000uuuuuuuuuuu|nop|R|有効な操作を行わない|
|mv|00000dddsss00001|mv d s|R|レジスタsの値をdにコピーする|
|or|00000dddsss00011|or d s|R|dとsとの論理和をdに格納する|
|not|00000dddsss00101|not d s|R|sの否定をdに格納する|
|add|00000dddsss00101|add d s|R|d+sをdに格納する|
|sub|00000dddsss00101|sub d s|R|d-sをdに格納する|
|slt|00000dddsss00101|slt d s|R|d > s ならdに0を、d < sならdに1を格納する|
|ld|00000dddsss00101|ld d (s)|R|sで示すアドレスの中身をdに格納|
|st|00000dddsss00101|st (d) s|R|sをdで示すアドレスに格納|
|ori|00011dddxxxxxxxx|ori d #x|I|dとxの論理和をdに格納|
|addi|00110dddxxxxxxxx|addi d #x|I|d+xをdに格納|
|subi|00111dddxxxxxxxx|subi d #x|I|d-xをdに格納|
|bnez|01001dddxxxxxxxx|bnez d #x|I|d != 0なら相対分岐|
|beqz|01010dddxxxxxxxx|beqz d #x|I|d = 0なら相対分岐|
|bmi|01011dddxxxxxxxx|bmi d #x|I|d < 0なら相対分岐|
|bpl|01100dddxxxxxxxx|bpl d #x|I|d >= 0なら相対分岐|
|jal|01101xxxxxxxxxxx|jal #x|J|r7に戻り番地を格納して相対分岐|
|jr|01110ddduuuuuuuu|jr d|d|dの中身に絶対分岐|
|jump|01111xxxxxxxxxxx|jump #x|J|無条件相対分岐|
|ldli|11100dddxxxxxxxx|ldli d #x|I|xをdの下位8ビット|
|ldhi|11101dddxxxxxxxx|ldhi d #x|I|xをdの上位8ビット|
|hlt|11111uuuuuuuuuuu|hlt||プロセッサの終了|
|push|10000ddduuuuuuuu|push d|d|dをスタックポインタの示すアドレスに格納|
|pop|10001ddduuuuuuuu|pop d|d|スタックポインタの示すアドレスの中身をdに格納|
-命令形式
--add,sub,or,mv,not,slt,ld,st(R形式)
|OP(5)|RD(3)|RS(3)|FUNC(5)|
--ori,addi,subi,beqz,bnez,bmi,bpl,ldli,ldhi(I形式)
|OP(5)|RD(3)|IMM(8)|
--jal,jump(J形式)
|OP(5)|OFFSET(11)|
--jr,push,pop(D形式)
|OP(5)|RD(3)|u(8)|
-d:Rd
-s:Rs
-u:undecide
#comment
**3月 29日 [#kcd3b7fd]
-各プログラムの演算子のメモ。
--sort.pc
---for,>,<,++,--
--recur.pc
---foo,if
--test.pc
---else,>=,<=,==,!=,while
a = 0;
b = 2;
while(a < b){
if(a>0){
foo(5);
}
else{
foo(13);
}
a++;
}
void foo(int arg){
c[arg] = a < b;
c[arg+1] = a <= b;
c[arg+2] = a > b;
c[arg+3] = a >= b;
c[arg+4] = a == b;
c[arg+5] = a != b;
}
halt;
#comment
終了行:
[[森/メモ]]
**3月 16日 [#t18f6b31]
-執筆作業の進め方
+レポートの大まかな構成を練る。
+改めて、関連文献を洗い直す。
+レポートの構成を完璧に決める。
+ともかく一度、一挙に全部かいてみる。
+書きやすい章から仕上げにかかる。
+レポートを部分放置して頭を冷やす。
-大まかな構成
+設計の目標
+設計内容
+CPU アーキテクチャー
3.1 パイプライン化について
3.2 APPNAについて
3.3 命令追加について
3.4 OPT_MAPについて
+コンパイラ
+結果
5.1 動作検証
5.2 結果の評価
+考察
6.1 結論
-関連文献
--ディジタル数値演算回路の実用設計(APPNA部分)
--作りながら学ぶ コンピュータアーキテクチャ(pico16の全般)
--コンピュータ設計の基礎知識(パイプラインについて)
--第12回パルテノン講習会 テキスト(OPT_MAP部分とsfl記述)
--http://www.kecl.ntt.co.jp/parthenon/hajimete/7shou.htm(OPT_MAP部分とsfl記述)
--http://www.am.ics.keio.ac.jp/arc/(パイプラインについて)
--廣本 正之, 藤田 憲正 第11回 ASIC デザインコンテスト 規定課題 16 bit CPU "PCA-16"
--進藤 陽広, 大堀 文子, 大和田 大輔, 柴田 浩一 第12回 ASIC デザインコンテスト 規定課題 16 bit CPU "はないずみ"
--猪狩 修平, 増田 昌士, 滋賀 瑞穂 第13回 ASIC デザインコンテスト 規定課題 16 bit CPU "いずみかわ"
--http://zxp044.u-aizu.ac.jp/~m5121216/wiki/index.php?SFL
--http://www.aoki.ecei.tohoku.ac.jp/arith/mg/algorithm.html(APPNA部分)
*参照『これから レポート・卒論を書く 若者のために』 酒井 聡樹 著
- 関連文献はWebページも含む、と思われます。 -- [[大和田]] &new{2009-03-16 (月) 17:12:13};
- Webページでは、学内専用のページなども記載すべきでしょうか? -- [[森]] &new{2009-03-16 (月) 17:37:33};
- 学内専用は無理だな。http://zxp044.u-aizu.ac.jp/~m5121216/wiki/にPICO関連は載せたので、そっちを使ってみてください。 -- [[大和田]] &new{2009-03-16 (月) 20:14:17};
- ありがとうございます。使わせていただきます。 -- [[森]] &new{2009-03-17 (火) 16:49:14};
#comment
**3月 17日 [#v53b12b8]
-パイプラインについて
--3段のパイプラインをつくった。
--IR-stage
---分岐命令か判定し、もし分岐命令ならex_bch_adrsをpcとしてとる。違うときは現在のpcよりirを決定し、pcをインクリメントする。
--RF-stage
---OP、FUNCにより命令をデコードする。各命令に必要なパイプラインレジスタをEXステージに渡す。
--EX-stage
---命令ごとにALUでの演算を行う場合は行い、レジスタにライトバックする。
全ての命令を3ステージで実行するようにした。
-APPNAについて
--Ladner-Fischer adder
---論理段数は最小な構成になるが、ファンアウトが大きくなる加算器。
--Kogge-Stone adder
---回路規模が大きくなるが、最も最大遅延を抑える加算器。ファンアウトが最小。
--Brent-Kung adder
---回路規模は最小な構成になるが、論理段数が大きくなる(最大遅延が増える)加算器。
--Han-Carlson adder
---回路規模と論理段数のバランスのとれた加算器。Kogge-StoneとBrent-Kungの構成を混合させたような構成になる。
-追加命令について
--PUSH、POP
---関数に入る際に、レジスタを退避、復帰させる命令は各2命令ずつかかっていたので、push、pop命令に書き換えることで、1命令で済むようにした。
今日(3月17日)の分は、わかりにくいのでメモ程度として使おう。。。
#comment
**3月 22日 [#m01c748c]
-命令セット
|命令|機械語|アセンブリ言語|形式|処理の内容|
|nop|00000uuuuuuuuuuu|nop|R|有効な操作を行わない|
|mv|00000dddsss00001|mv d s|R|レジスタsの値をdにコピーする|
|or|00000dddsss00011|or d s|R|dとsとの論理和をdに格納する|
|not|00000dddsss00101|not d s|R|sの否定をdに格納する|
|add|00000dddsss00101|add d s|R|d+sをdに格納する|
|sub|00000dddsss00101|sub d s|R|d-sをdに格納する|
|slt|00000dddsss00101|slt d s|R|d > s ならdに0を、d < sならdに1を格納する|
|ld|00000dddsss00101|ld d (s)|R|sで示すアドレスの中身をdに格納|
|st|00000dddsss00101|st (d) s|R|sをdで示すアドレスに格納|
|ori|00011dddxxxxxxxx|ori d #x|I|dとxの論理和をdに格納|
|addi|00110dddxxxxxxxx|addi d #x|I|d+xをdに格納|
|subi|00111dddxxxxxxxx|subi d #x|I|d-xをdに格納|
|bnez|01001dddxxxxxxxx|bnez d #x|I|d != 0なら相対分岐|
|beqz|01010dddxxxxxxxx|beqz d #x|I|d = 0なら相対分岐|
|bmi|01011dddxxxxxxxx|bmi d #x|I|d < 0なら相対分岐|
|bpl|01100dddxxxxxxxx|bpl d #x|I|d >= 0なら相対分岐|
|jal|01101xxxxxxxxxxx|jal #x|J|r7に戻り番地を格納して相対分岐|
|jr|01110ddduuuuuuuu|jr d|d|dの中身に絶対分岐|
|jump|01111xxxxxxxxxxx|jump #x|J|無条件相対分岐|
|ldli|11100dddxxxxxxxx|ldli d #x|I|xをdの下位8ビット|
|ldhi|11101dddxxxxxxxx|ldhi d #x|I|xをdの上位8ビット|
|hlt|11111uuuuuuuuuuu|hlt||プロセッサの終了|
|push|10000ddduuuuuuuu|push d|d|dをスタックポインタの示すアドレスに格納|
|pop|10001ddduuuuuuuu|pop d|d|スタックポインタの示すアドレスの中身をdに格納|
-命令形式
--add,sub,or,mv,not,slt,ld,st(R形式)
|OP(5)|RD(3)|RS(3)|FUNC(5)|
--ori,addi,subi,beqz,bnez,bmi,bpl,ldli,ldhi(I形式)
|OP(5)|RD(3)|IMM(8)|
--jal,jump(J形式)
|OP(5)|OFFSET(11)|
--jr,push,pop(D形式)
|OP(5)|RD(3)|u(8)|
-d:Rd
-s:Rs
-u:undecide
#comment
**3月 29日 [#kcd3b7fd]
-各プログラムの演算子のメモ。
--sort.pc
---for,>,<,++,--
--recur.pc
---foo,if
--test.pc
---else,>=,<=,==,!=,while
a = 0;
b = 2;
while(a < b){
if(a>0){
foo(5);
}
else{
foo(13);
}
a++;
}
void foo(int arg){
c[arg] = a < b;
c[arg+1] = a <= b;
c[arg+2] = a > b;
c[arg+3] = a >= b;
c[arg+4] = a == b;
c[arg+5] = a != b;
}
halt;
#comment
ページ名: