LSIデザインコンテストin沖縄2009/作業用(前田)
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[LSIデザインコンテストin沖縄2009]]
*LSIデザインコンテストin沖縄2009/作業用 [#b10242f3]
#contents
----
**お知らせ [#q5885dbf]
〆切は1月30日です。&br;
計画的にやりましょう!
**進捗状況 [#vc844c3f]
-2008/11/07
--マルチサイクル版MIPS論理合成結果(cpu module単体)
|LE数|動作周波数(Mhz)|
|1,933|71.87|
-2008/11/16
--マルチサイクル版MIPS論理合成結果
---SW0でクロック可変(0:手動 1:100Hz)、KEY0でリセット、KEY1でクロック発生
|LE数|動作周波数(Mhz)|
|2,185|71.38|
-2008/12/4
--MCPの命令セット定義
-2008/12/23
--シングルサイクル版MCPの実装完了
-2008/12/27
--MCP命令セット準拠アセンブラBeta完成
-2009/01/19
--パイプライン版MCPのSchematic完成
-2009/01/20
--パイプライン版MCPの実装完了
|LE数|動作周波数(Mhz)|
|1,352|65.82|
-2009/01/28
--パイプライン版MCPの評価 case 1
|LE数|動作周波数(Mhz)|最大遅延(ns)|
|1,019|63.13|15.840|
CENTER:MCP on DE2
-2009/01/29
--SRPの評価
||最大遅延 (ns)|最大動作周波数 (MHz)|Total logic elements|Total Memory bits|単位時間|単位面積|
|SRP|29.497|33.92|6,698|0|||
|MCP|18.903|51.87|1,012|3,072|||
|MCP (最適化)|14.359|69.64|1,101|3,072|||
--バブルソートのCPU時間
||実行命令数|実行クロック数|CPI|動作周波数 (MHz)|CPU時間 (sec)|
|SRP|306|306|1|33.92|9.02μ|
|MCP|402|430|1.07|51.87|8.29μ|
|MCP (最適化)|402|430|1.07|69.64|6.17μ|
-2009/01/30
プロジェクト終了
**やること [#w0c4376a]
やることをメモしておきましょう。お互いが何をやろうとしてるかも把握出来ます。
***前田 [#l064dd24]
-MCP(Minimum Core Processor)の実装
--まず2オペランドで且つレジスタ数が8個へと減少するので効率的に
-メモリマップドI/Oについて調べる
-割り込みコントローラについて調べる
--とりあえずDE2ボードのLCDへの表示あたりで出力デバイスを暫定的にごにょごにょ
--でも割り込みが完成したところで周辺デバイスってこの前作り損ねたシンセサイザーしかないよな・・
**ネタ [#d7968b03]
-5段パイプライン化
-MIPS32
--FPGAボードに実装→完了
--パイプライン化
-メモリマップドIOによる周辺デバイス操作
-非同期回路(最終手段)
**メモ [#a95d20dd]
-MIPS16ライクな16bit命令長プロセッサの設計思想
--16bit命令長のプロセッサとして代表的な例であるSuperH,ARM Thumb,MIPS16e,PICO16等を参考にしつつ設計する
---通常、コンパイラによって生成される命令に対してCPUで用意されている命令をフル活用することは少ない(言い換えれば高度に最適化をコンパイラの方で施せば良いが難しい)。よって極力使わない命令を削除する
---CPUの処理能力は単位時間内に処理する命令数によって計られるので、クロックを高くできる回路形式が有効
---命令の処理としてパイプラインを利用した並列処理がある。これを最もローコストに利用できる方式として固定語長の命令によるレジスタ中心の演算回路があり、メモリを演算オペランドにしないロード・ストア方式が有効
---演算部を高速化したことに伴うデータのバスバンド不足は、キャッシュ搭載により解決可能。
---従来のRISCでの問題点として可変語長の命令セットに比べてコード効率が悪い(e.g. 分岐命令のオペランドや即値ロード命令)のにも関わらず利用頻度が高い。よって16bit命令長にすることにより改善
--オペランド数についてのメモ
---1オペランド~
俗に言うアキュムレータマシン。命令長の一例として8bit。プログラムがひたすら長くなる傾向かも。
---2オペランド~
演算結果が演算に使われたレジスタに代入される。よってc=a+bをしたいときは、レジスタcに事前にaを代入しておいてから、c+bのような命令実行する。ロードストア+演算で二命令など。命令長の一例として16bit。ソースコードの削減が可能。
---3オペランド : データロードやデータストアなどの対象がレジスタに限定。メモリを用いるときは結局2命令必要。さらに命令長の一例として32bitなので分岐命令や即値演算など、オペランドに複数レジスタを対象としない演算に対して不効率?でも使い勝手は良い。
-よって上記の考察を考慮し、以下のアーキテクチャを定義する
**MCP (Minimum Core Processor) [#pfe90bbd]
***MCPアーキテクチャ概要 [#y634021b]
MCPとはMinimum Core Processorの略であり、16bitの命令長で8個の32bit幅の汎用レジスタとスタックポインタ等の特殊レジスタを扱うことが可能なプロセッサ。
-設計思想
--従来の32bit命令長のプロセッサでは命令のフィールドをフルに使うことは無く、機械語の命令データ量の観点から無駄が多い。よって命令長を16bitにすることによって命令データの圧縮が可能となる。
--アーキテクチャはRISC(Reduced Instruction Set Computer)を採用し、回路の単純化による高クロック化によって単位時間内に処理する命令数を多くする。
--16bitの命令長では32bitのレジスタを操作するためには不十分であるので、それを補う命令や特殊レジスタを操作する命令を追加。
***MCP命令セット [#o38a7570]
CENTER:命令形式
|CENTER:命令区分|>|>|>|>|CENTER:フィールド|CENTER:説明|
|CENTER:フィールド長|CENTER:4ビット|CENTER:1ビット|CENTER:3ビット|CENTER:3ビット|CENTER:5ビット||
|M形式|CENTER:op|CENTER:sign bit|CENTER:rt|CENTER:rd|CENTER:address|メモリ操作命令|
|R形式|>|CENTER:op|CENTER:rd|CENTER:rs|CENTER:funct|算術命令|
|I形式|>|CENTER:op|CENTER:rd|>|CENTER:address/immediate|即値命令|
|J形式|CENTER:op|>|>|>|CENTER:target address|ジャンプ命令|
~
CENTER:機械語
|命令区分|名前|4ビット|1ビット|3ビット|3ビット|5ビット|記述例|
|M|lw|CENTER:1110|CENTER:0|CENTER:000|CENTER:010|CENTER:01000|lw $s0, 8($t0)|
|~|sw|CENTER:1111|CENTER:1|CENTER:000|CENTER:010|CENTER:11000|sw $s0,-8($t0)|
|R|mov|>|CENTER:00000|CENTER:010|CENTER:000|CENTER:00001|mov $s0, $t0|
|~|add|>|CENTER:00000|CENTER:010|CENTER:000|CENTER:00010|add $s0, $t0|
|~|sub|>|CENTER:00000|CENTER:010|CENTER:000|CENTER:00011|sub $s0, $t0|
|~|and|>|CENTER:00000|CENTER:010|CENTER:000|CENTER:00100|and $s0, $t0|
|~|or|>|CENTER:00000|CENTER:010|CENTER:000|CENTER:00101|or $s0, $t0|
|~|xor|>|CENTER:00000|CENTER:010|CENTER:000|CENTER:00110|xor $s0, $t0|
|~|cmp|>|CENTER:00000|CENTER:010|CENTER:000|CENTER:00111|cmp $s0, $t0|
|~|slt|>|CENTER:00000|CENTER:010|CENTER:000|CENTER:01101|slt $s0, $t0|
|~|jr|>|CENTER:00000|CENTER:???|CENTER:000|CENTER:10111|jr $ra|
|I|movi|>|CENTER:00001|CENTER:010|>|CENTER:00000001|movi $s0, 1|
|~|addi|>|CENTER:00010|CENTER:010|>|CENTER:00000001|addi $s0, 1|
|~|andi|>|CENTER:00100|CENTER:010|>|CENTER:11110000|andi $s0, 240|
|~|ori|>|CENTER:00101|CENTER:010|>|CENTER:00001111|ori $s0, 15|
|~|not|>|CENTER:00110|CENTER:010|>|CENTER:00000000|not $s0|
|~|cmpi|>|CENTER:00111|CENTER:010|>|CENTER:00001010|cmpi $s0, 10|
|~|lsr|>|CENTER:01000|CENTER:010|>|CENTER:00000000|lsr $s0|
|~|asr|>|CENTER:01001|CENTER:010|>|CENTER:00000000|asr $s0|
|~|beqz|>|CENTER:10100|CENTER:010|>|CENTER:00101000|beqz $s0, 40|
|~|bnez|>|CENTER:10101|CENTER:010|>|CENTER:00101000|bnez $s0, 40|
|J|jmp|CENTER:1100|>|>|>|CENTER:000100000000|jmp 512|
|~|jal|CENTER:1101|>|>|>|CENTER:000100000000|jal 512|
***MCPレジスタマップ [#c8b28112]
CENTER:汎用レジスタ
|レジスタ番号|変数名|退避|説明|
|0 (000)|$t0|n|一時的レジスタ|
|1 (001)|$t1|n|一時的レジスタ|
|2 (010)|$s0|y|データ用レジスタ|
|3 (011)|$s1|y|データ用レジスタ|
|4 (100)|$s2|y|データ用レジスタ|
|5 (101)|$s3|y|データ用レジスタ|
|6 (110)|$s4|y|データ用レジスタ|
|7 (111)|$s5|y|データ用レジスタ|
~
CENTER:特殊レジスタ
|変数名|退避|説明|
|$ra|n|関数戻り値|
|$sp|-|スタックポインタ|
***MCPデータパス [#a1f41406]
-シングルサイクル版MCPデータパス:&ref(MCP_Singlecycle_schematic.pdf);
-パイプライン版MCPデータパス:
**参考リンク [#y97c96ad]
-Design Wave Magazine HP
--http://www.cqpub.co.jp/DWM/
-LSI Design Contest
--http://www.lsi-contest.com/
終了行:
[[LSIデザインコンテストin沖縄2009]]
*LSIデザインコンテストin沖縄2009/作業用 [#b10242f3]
#contents
----
**お知らせ [#q5885dbf]
〆切は1月30日です。&br;
計画的にやりましょう!
**進捗状況 [#vc844c3f]
-2008/11/07
--マルチサイクル版MIPS論理合成結果(cpu module単体)
|LE数|動作周波数(Mhz)|
|1,933|71.87|
-2008/11/16
--マルチサイクル版MIPS論理合成結果
---SW0でクロック可変(0:手動 1:100Hz)、KEY0でリセット、KEY1でクロック発生
|LE数|動作周波数(Mhz)|
|2,185|71.38|
-2008/12/4
--MCPの命令セット定義
-2008/12/23
--シングルサイクル版MCPの実装完了
-2008/12/27
--MCP命令セット準拠アセンブラBeta完成
-2009/01/19
--パイプライン版MCPのSchematic完成
-2009/01/20
--パイプライン版MCPの実装完了
|LE数|動作周波数(Mhz)|
|1,352|65.82|
-2009/01/28
--パイプライン版MCPの評価 case 1
|LE数|動作周波数(Mhz)|最大遅延(ns)|
|1,019|63.13|15.840|
CENTER:MCP on DE2
-2009/01/29
--SRPの評価
||最大遅延 (ns)|最大動作周波数 (MHz)|Total logic elements|Total Memory bits|単位時間|単位面積|
|SRP|29.497|33.92|6,698|0|||
|MCP|18.903|51.87|1,012|3,072|||
|MCP (最適化)|14.359|69.64|1,101|3,072|||
--バブルソートのCPU時間
||実行命令数|実行クロック数|CPI|動作周波数 (MHz)|CPU時間 (sec)|
|SRP|306|306|1|33.92|9.02μ|
|MCP|402|430|1.07|51.87|8.29μ|
|MCP (最適化)|402|430|1.07|69.64|6.17μ|
-2009/01/30
プロジェクト終了
**やること [#w0c4376a]
やることをメモしておきましょう。お互いが何をやろうとしてるかも把握出来ます。
***前田 [#l064dd24]
-MCP(Minimum Core Processor)の実装
--まず2オペランドで且つレジスタ数が8個へと減少するので効率的に
-メモリマップドI/Oについて調べる
-割り込みコントローラについて調べる
--とりあえずDE2ボードのLCDへの表示あたりで出力デバイスを暫定的にごにょごにょ
--でも割り込みが完成したところで周辺デバイスってこの前作り損ねたシンセサイザーしかないよな・・
**ネタ [#d7968b03]
-5段パイプライン化
-MIPS32
--FPGAボードに実装→完了
--パイプライン化
-メモリマップドIOによる周辺デバイス操作
-非同期回路(最終手段)
**メモ [#a95d20dd]
-MIPS16ライクな16bit命令長プロセッサの設計思想
--16bit命令長のプロセッサとして代表的な例であるSuperH,ARM Thumb,MIPS16e,PICO16等を参考にしつつ設計する
---通常、コンパイラによって生成される命令に対してCPUで用意されている命令をフル活用することは少ない(言い換えれば高度に最適化をコンパイラの方で施せば良いが難しい)。よって極力使わない命令を削除する
---CPUの処理能力は単位時間内に処理する命令数によって計られるので、クロックを高くできる回路形式が有効
---命令の処理としてパイプラインを利用した並列処理がある。これを最もローコストに利用できる方式として固定語長の命令によるレジスタ中心の演算回路があり、メモリを演算オペランドにしないロード・ストア方式が有効
---演算部を高速化したことに伴うデータのバスバンド不足は、キャッシュ搭載により解決可能。
---従来のRISCでの問題点として可変語長の命令セットに比べてコード効率が悪い(e.g. 分岐命令のオペランドや即値ロード命令)のにも関わらず利用頻度が高い。よって16bit命令長にすることにより改善
--オペランド数についてのメモ
---1オペランド~
俗に言うアキュムレータマシン。命令長の一例として8bit。プログラムがひたすら長くなる傾向かも。
---2オペランド~
演算結果が演算に使われたレジスタに代入される。よってc=a+bをしたいときは、レジスタcに事前にaを代入しておいてから、c+bのような命令実行する。ロードストア+演算で二命令など。命令長の一例として16bit。ソースコードの削減が可能。
---3オペランド : データロードやデータストアなどの対象がレジスタに限定。メモリを用いるときは結局2命令必要。さらに命令長の一例として32bitなので分岐命令や即値演算など、オペランドに複数レジスタを対象としない演算に対して不効率?でも使い勝手は良い。
-よって上記の考察を考慮し、以下のアーキテクチャを定義する
**MCP (Minimum Core Processor) [#pfe90bbd]
***MCPアーキテクチャ概要 [#y634021b]
MCPとはMinimum Core Processorの略であり、16bitの命令長で8個の32bit幅の汎用レジスタとスタックポインタ等の特殊レジスタを扱うことが可能なプロセッサ。
-設計思想
--従来の32bit命令長のプロセッサでは命令のフィールドをフルに使うことは無く、機械語の命令データ量の観点から無駄が多い。よって命令長を16bitにすることによって命令データの圧縮が可能となる。
--アーキテクチャはRISC(Reduced Instruction Set Computer)を採用し、回路の単純化による高クロック化によって単位時間内に処理する命令数を多くする。
--16bitの命令長では32bitのレジスタを操作するためには不十分であるので、それを補う命令や特殊レジスタを操作する命令を追加。
***MCP命令セット [#o38a7570]
CENTER:命令形式
|CENTER:命令区分|>|>|>|>|CENTER:フィールド|CENTER:説明|
|CENTER:フィールド長|CENTER:4ビット|CENTER:1ビット|CENTER:3ビット|CENTER:3ビット|CENTER:5ビット||
|M形式|CENTER:op|CENTER:sign bit|CENTER:rt|CENTER:rd|CENTER:address|メモリ操作命令|
|R形式|>|CENTER:op|CENTER:rd|CENTER:rs|CENTER:funct|算術命令|
|I形式|>|CENTER:op|CENTER:rd|>|CENTER:address/immediate|即値命令|
|J形式|CENTER:op|>|>|>|CENTER:target address|ジャンプ命令|
~
CENTER:機械語
|命令区分|名前|4ビット|1ビット|3ビット|3ビット|5ビット|記述例|
|M|lw|CENTER:1110|CENTER:0|CENTER:000|CENTER:010|CENTER:01000|lw $s0, 8($t0)|
|~|sw|CENTER:1111|CENTER:1|CENTER:000|CENTER:010|CENTER:11000|sw $s0,-8($t0)|
|R|mov|>|CENTER:00000|CENTER:010|CENTER:000|CENTER:00001|mov $s0, $t0|
|~|add|>|CENTER:00000|CENTER:010|CENTER:000|CENTER:00010|add $s0, $t0|
|~|sub|>|CENTER:00000|CENTER:010|CENTER:000|CENTER:00011|sub $s0, $t0|
|~|and|>|CENTER:00000|CENTER:010|CENTER:000|CENTER:00100|and $s0, $t0|
|~|or|>|CENTER:00000|CENTER:010|CENTER:000|CENTER:00101|or $s0, $t0|
|~|xor|>|CENTER:00000|CENTER:010|CENTER:000|CENTER:00110|xor $s0, $t0|
|~|cmp|>|CENTER:00000|CENTER:010|CENTER:000|CENTER:00111|cmp $s0, $t0|
|~|slt|>|CENTER:00000|CENTER:010|CENTER:000|CENTER:01101|slt $s0, $t0|
|~|jr|>|CENTER:00000|CENTER:???|CENTER:000|CENTER:10111|jr $ra|
|I|movi|>|CENTER:00001|CENTER:010|>|CENTER:00000001|movi $s0, 1|
|~|addi|>|CENTER:00010|CENTER:010|>|CENTER:00000001|addi $s0, 1|
|~|andi|>|CENTER:00100|CENTER:010|>|CENTER:11110000|andi $s0, 240|
|~|ori|>|CENTER:00101|CENTER:010|>|CENTER:00001111|ori $s0, 15|
|~|not|>|CENTER:00110|CENTER:010|>|CENTER:00000000|not $s0|
|~|cmpi|>|CENTER:00111|CENTER:010|>|CENTER:00001010|cmpi $s0, 10|
|~|lsr|>|CENTER:01000|CENTER:010|>|CENTER:00000000|lsr $s0|
|~|asr|>|CENTER:01001|CENTER:010|>|CENTER:00000000|asr $s0|
|~|beqz|>|CENTER:10100|CENTER:010|>|CENTER:00101000|beqz $s0, 40|
|~|bnez|>|CENTER:10101|CENTER:010|>|CENTER:00101000|bnez $s0, 40|
|J|jmp|CENTER:1100|>|>|>|CENTER:000100000000|jmp 512|
|~|jal|CENTER:1101|>|>|>|CENTER:000100000000|jal 512|
***MCPレジスタマップ [#c8b28112]
CENTER:汎用レジスタ
|レジスタ番号|変数名|退避|説明|
|0 (000)|$t0|n|一時的レジスタ|
|1 (001)|$t1|n|一時的レジスタ|
|2 (010)|$s0|y|データ用レジスタ|
|3 (011)|$s1|y|データ用レジスタ|
|4 (100)|$s2|y|データ用レジスタ|
|5 (101)|$s3|y|データ用レジスタ|
|6 (110)|$s4|y|データ用レジスタ|
|7 (111)|$s5|y|データ用レジスタ|
~
CENTER:特殊レジスタ
|変数名|退避|説明|
|$ra|n|関数戻り値|
|$sp|-|スタックポインタ|
***MCPデータパス [#a1f41406]
-シングルサイクル版MCPデータパス:&ref(MCP_Singlecycle_schematic.pdf);
-パイプライン版MCPデータパス:
**参考リンク [#y97c96ad]
-Design Wave Magazine HP
--http://www.cqpub.co.jp/DWM/
-LSI Design Contest
--http://www.lsi-contest.com/
ページ名: