**直近24hour 3/11 16:30 base=668,718,046 -> 334,706,332 contest=9,075,570,267 -> 4,050,016,257 多分これで900secは切るはず。よほどのことが無ければ。 あとはsetl命令の実装で何もしなくても base->315,000,000 contest->3.900,000,000 ぐらいはいくはずです。 **FPU命令の追加 |fabs(111010) $rd,$rs|rd = abs(rs)| |fiszero $rd, $rs(111001)|if rs = 0 then $rd = 1(0x1) else $rd = 0(0x0)| |fispos $rd, $rs(111000)|if rs >= 0 then $rd = 1(0x1) else $rd = 0(0x0)| |fisneg $rd, $rs(111011)|if rs < 0 then $rd = 1(0x1) else $rd = 0(0x0)| |fless $rd, $rs, $rt(111100)|if rs < rt then $rd = 1(0x1) else $rd = 0(0x0)| |setl $rd(31-26), label(25-0)|$rd = label| **simulator高速化&コンパイラinline展開100段&fneg改良&新命令の呼び出し最適化 3/11 03:41 contest=4,398,155,842 base=373,005,090 simulatorは今までbaseで1minだったのを20secまで早くしときますた。 **sqrt最適化 3/11 01:37 base = 517626091 コンパイラのinline展開をしてないので、したら4億弱まではいくぽ。 **finv最適化 3/10 23:57 base = 557239562 **cmpiのバグ取れた 3/10 22:41 base.sld = 567010433 **16bit即値最適化 3/10 22:15 base.sld = 597859356に削減 cmpiのバグが取れませんが。。。 **li命令の最適化 3/10 20:36 base.sld = 631809300に削減 llo命令の実装を rd = Hi(rd) or Lo(rs) -> rd = 0 or Lo(rs) に変更しました。 *ライブラリ完成 3/10 17:57 sqrtの実装が完了 print_int,print_char,read_int,read_floatに関しては、 PPM(画像データ)の出力をバイナリで行うことでprint_byte,read_word以外は不要になりました。 現在sqrt入れてbaseでdiff=6 命令数はbase.sld&&P3(txt data)出力で668718046になりました。 ライブラリの見直しでまだ20%ぐらいは削れそうですが、 それ以上は全体的な見直しが必要かも。 contest2.sld=9075570267instructions(P6) *todo & コンパイラ係進捗 3/9 22:34 fdivの実装完了instructionが若干増えたけど若干。 現在baseでdiff=4。 のこりはsqrt,print_int,print_char,read_int,read_floatの実装、sin,cos,atanの新fdiv向け変更 ハードウェアと協調したアセンブラの最終確認 及び、それに伴うシミュレータの改造 *simulatorバグ 3/9 19:41 ライブラリファイルの最後のjrでリターンできずに終了してしまう。 用はinstructionの最後でjrを行ったときに終了フラグがたってる? 今はライブラリの最後に hoge: jr とか書いてごまかしてます。 *fdiv実装について 3/9 17:38 floatの実数値って-126<=e<=127でおk?by m とりあえず64エントリのテーブル作って実装してます。 *simulator仕様変更について 3/9 10:24 RS232Cの通信基盤が完成したら、 simulator上でstackの最大サイズを求められる拡張をしてください。 同時にheapのサイズも測定できるようにしてください。 *simulatorのfcmp命令にバグあり。3/07 19:04 floatの比較をintのまま行っていたので直しておきました。 by森口 --- 本当に申し訳ないでした。 by ゲェン *out命令の変更 3/05 1:40 out命令をByte出力用のoutb、4Byte(Word)出力用のoutwに分けました。 *li,ll命令の変更 3/03 20:58 li,llをaddiのシンタックスシュガーにしていましたが、 32bit即値を扱えないので、 新しくllo,lhi命令をハード実装にして、 li rd Imm -> llo rd Lo(Imm); lhi rd Hi(Imm) ll rd label -> llo rd Lo(Address[label]); lhi rd Hi(Address[label]) を加えてください。 *fnegの実装 3/04 1:06 ハード実装にします。 というか、FPU実装でもなく、アーキテクチャ側で符号ビットの反転でいいかと。 *コンパイラ大課題完成しますた。 その勢いでsin,cos,atanのライブラリ実装も完了 2/28 12:28 *今後の目標、優先順位など思ってることby森口 **ハードウェア側 1.SRAMを用いたLoad,Storeの実装 2.通信回路rs232c周辺の作成 3.FPU bag-fix 4.インストラクションキャッシュktkrの実装 **ソフトウェア側 5.ライブラリ作成(scanf,printf,fdiv) 6.アセンブラ作成 2/28中に完成させてアップしてください。 7.シミュレータ作成 **コンパイラのみ 8.コンパイラ bag-fix **役割分担(優先順位 高→低) そうだ:1,4,2,3 あらい:2,1,3,4 グェン:6,7 もりぐち:5,8 *注意事項 あらい氏の優先順位は適当につけますた。 自分で決めていいと思います。 ハードウェアは二人で相互に成果物を理解しながら進めたほうが後々楽だと思います。 具体的にハードは僕には詳しいことまではわからないのでお任せします。 ライブラリの実装は3/3までにはもりぐちが全てやります。 アセンブラは28日中に実装完了してください。 そうだ氏との連絡不足でオペコードが策定できなかった場合は 期限を明日午前中まで伸ばします。 シミュレータはバイトコードを受け取り、シミュレーションを行ってください。 3/3までに命令を言語のプリミティブで表現したシミュレータを、 (たとえば、 fmul,mul を * で表現して実装するシミュレータ) 3/8までにCPU内部のビット操作を模倣したシミュレータを完成させてください。 デコード操作などはCPUの操作を研究して作るほうが後々楽だと思います。 3/3締め切りのシミュレータは動作スピードもそれなりに考えて実装してください。 10M Instructionを100秒ぐらいを期待してます。 *命令セット一部変更 2/27 22:26 ジャンプ命令において、 ジャンプ先がラベルである場合と、レジスタの内容である場合があるので、 今まで j, jal 命令であったものを、 |j rs|pc = rs| |jl label|pc = label| |jal rs|pc = rs| |jall label|pc = label| の4命令に分割しました。 またjr命令の引数を無しとしました。 |jr|pc = $ra| ---- **では とりあえずソースとかをアップするための UPLOADERとしてでも使ってください。 [[うぷろだ]] 全員分のページを用意しときました。 こんなことやったよ~とか、 いついるよ~とか書いたらいいかな~と思いまして。 なので、適当に書き換えといてください。 wikiについての要望は森口に伝えてくれれば何とかします。 **今後の予定 関数呼出規約の制定 SRAM,USBを月曜までにできるといいな。 発表資料作成 **SPIM MIPS simulator [[SPIM homepage>http://www.cs.wisc.edu/~larus/spim.html]] こんなのありますた。 Win版しか試してないけど、アセンブル、シミュレーションをやってくれます。
下から選んでください: