「トップページ」の編集履歴(バックアップ)一覧に戻る

トップページ - (2007/03/11 (日) 03:42:47) の編集履歴(バックアップ)


simulator高速化&コンパイラinline展開100段&fneg改良&新命令の呼び出し最適化 3/11 03:41

contest=4,398,155,842
base=373,005,090
simulatorは今までbaseで1minだったのを20secまで早くしときますた。

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)

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
こんなのありますた。
Win版しか試してないけど、アセンブル、シミュレーションをやってくれます。
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。