作成したプロセッサ上で1024個の符号付き16bit整数を昇順ソートする プログラムを組んでもらい、その速度を競います。 データは、ランダム/昇順ソート済み/降順ソート済みの3種類があり、 それらの実行時間(実行完了までのクロック・サイクル数÷動作クロック周波数) の平均を競ってもらいます。
まず、以下の準備をしてもらいます。
そのうえで、教官&TAを呼び、 以下の手順で3種類のソートのデモを行う。
ブロック図やアセンブリにずるしている部分がなく、 ちゃんとデータをソートできたならば、 教官がそのデモのデータをウェブに登録します。
データは0x400から0x7FFに格納してあります。 0x000から0x3FFまでは、プログラムを格納するのに使うと良いでしょう。
最終報告のデモを締切とし、 1位〜3位の人に副賞として スルッとKANSAIカード を贈呈します(sponsored by 嶋田)。
注:実行時間/実行サイクル数は3種類のデータを実行した時の平均です。
順位 | グループ | 時間 |
サイクル数 (ランダム/昇順/降順) | 周波数 | アルゴリズム | プロセッサの特徴 |
---|---|---|---|---|---|---|
1 | B12(平澤/長島) | 0.846375ms |
67,710 (87,097 / 44,817 / 71,217) | 80MHz | シェル・ソート | 4段パイプライン、ハーバード・アーキテクチャ、 ループ・アンローリング、分岐命令と他の命令の並列実行、 遅延分岐(2スロット) |
2 | B8(西田/粟野) | 1.6009ms |
64,036 (100,389 / 44,446 / 47,273) | 40MHz |
クイック・ソート →インサート・ソート | 5段パイプライン、2演算VLIW、ハーバード・アーキテクチャ |
3 | B9(八田/田中) | 2.5627ms |
102,508 (180,386 / 64,615 / 62,525) | 40MHz |
クイック・ソート →インサート・ソート | 3オペランド形式命令、 ハーバード・アーキテクチャ |
4 | A2(青戸/境) | 25.8894ms |
258,894 (315,044 / 217,835 / 243,803) | 10MHz | クイック・ソート | スタック・ポインタ追加(Call/Return命令追加)、 P4/P1とP5/P2の並列実行、 演算命令が即値を扱えるように拡張 |
5 | A5(阿曽/杉山) | 368.680075ms |
14,747,203 (14,745,712 / 93,137 / 29,402,760) | 40MHz | インサート・ソート | 変則3オペランド形式命令(Rt=Rt+Rs+imm)、 7フェーズ実行 |
参考 (更新済) | B12(平澤/長島) | 3.08565ms |
123,426 (137,389 / 117,980 / 114,910) | 40MHz | マージ・ソート | 4段パイプライン、ハーバード・アーキテクチャ |