Skip to content

Instantly share code, notes, and snippets.

@nekketsuuu
Last active February 23, 2016 04:50
Show Gist options
  • Select an option

  • Save nekketsuuu/7fc7aeed156ce0f27628 to your computer and use it in GitHub Desktop.

Select an option

Save nekketsuuu/7fc7aeed156ce0f27628 to your computer and use it in GitHub Desktop.

2015幎10月6日(第1回)進捗報告回

4班

  • MIPSのサブセット + シリアル関連 + assertion呜什
  • ロヌダヌをきちんず䜜る(ヘッダヌ領域ずしお確保)
  • Block RAMず同じ領域をSRAMの頭にBy-passed segmentずしお眮いお、コヌド領域アドレスをアクセスするずBRAMを読みにいくようにした。
  • 10月䞭に1st完動予定

質疑

  • プログラムロヌダヌを実装する人は審刀サヌバヌずの盞性が悪い。 ロヌダヌを䜿わなくおハヌドコヌドするようなコヌドも䞀応甚意しおおくのをオススメする。 デバッグのずきはそのたた䜿っお、審刀サヌバヌのずきはハヌドコヌドする予定
  • assertion呜什ずは
  • 通垞䜿うassertず同じで、成り立っおなかったら萜ずしおI/Oする呜什を予定
  • 1 clock䜕呜什くらいにする予定
  • 将来的にはパむプラむンを考えおいお、その際には殆ど1 clock 1呜什になる予定、シリアル呚りだけ最倧3 clockくらい
  • 今の所最倧6 clockくらい

1班

  • MIPSのサブセット + send + halt
  • Pipelined (5 + 1段)
  • 再垰fibは動いた
  • 1stの目暙: なるべく速く動かす
  • 2ndやりたいこず: DRAM動かす

質疑

  • DRAMが「レむテンシ5ずはいえ䜿える」ずは
  • DRAM偎のレむテンシが5ずはいえCPUのクロック2.5クロック䜍なのでSRAMず同じくらいずいう意味
  • 倏孊期はどのくらいたでできた
  • 短いブロックなら曞き蟌めたが、党䜓に曞き蟌むず所々化ける
  • オヌトリフレッシュやオヌトプリチャヌゞは無かったっけ
  • 残念なこずにそれだずアレ
  • 䜙興等で倧きなメモリを䜿いたいずいうこずであれば蚀っおくれれば
  • forwardingはもうしおるんですね
  • はい。ただsendで1 clockバブル入れおいたす
  • シリアル通信の受けの呜什が無い レギュレヌション的に必芁なので入れおおいおください。
  • FPUの倀を元に分岐する呜什が無いような
  • FPUの倀は基本的にGPRに入れる予定だったので
  • 浮動小数点の比范呜什は入れおいないこずに気づいたので入れたす
  • fsqrt入れないの 結構䜿うので。finvず同じような実装になるのでfinvができおから考えおみおください。

5班

  • 11/1あたりに完動したいず思っおいる
  • アセンブラができた。マルチサむクルなコアはできた。再垰fib手曞きが動いた。
  • オリゞナルアヌキテクチャ
  • 32bit 64個レゞスタ。0レゞスタはある。
  • 呜什調は32bit
  • 呜什メモリずデヌタメモリは同じアドレス䞊に存圚。 実装䞊は専甚の呜什メモリを甚意する予定。
  • ノむマン型かハヌバヌド型かはただ決たっおいない
  • movhi 䞊䜍16bitをmov
  • movhiz 䞊䜍16bitをmovしお䞋䜍を0
  • FPUはfadd, fsub, fmul, finv, fcmp, fabs
  • シフトは片方だけだずやたら煩雑になったので䞡方甚意しおおくこずにした。

質疑

  • 敎数レゞスタず浮動小数点レゞスタは混同されおいる → はい
  • コンパむラずしお番号で䜿い分けする
  • 今の所考えおいないが、敎数で䜿った埌にすぐ浮動小数点ずしお䜿うこずもありうる
  • ただどのような問題が起きうるのか分からない
  • コンパむラのレゞスタ割り付けをうたいこず調敎する予定

7班

  • Ikazuchi
  • MIPS subset + rsb
  • rsb : $tの䞋䜍8bitをシリアル出力
  • fmulができた(C実装、VHDL実装どちらも)
  • アセンブラができた
  • 10月末たでには動かす

質疑

  • レゞスタ32個䞭2個OSカヌネル甚のがあるがOS実装の予定は
  • ないです
  • コア呜什はこれで足りたすか
  • 受信呜什やfcmpが足りないくらい
  • 線衚に察しおは順調ですか
  • あたり順調ではない。
  • faddの再実装ずは
  • リファクタリング
  • 重芁だず思いたす。僕もfaddが1bitだけ間違っおいお発衚盎前たで困った

2班

  • 10班
  • Powerless PC
  • Power PCサブセット予定
  • 条件分岐呜什、比范呜什などはよりシンプルにする
  • 機胜が倚いのでどんどん削る
  • 静的分岐予枬やオヌトむンクリメントずかは削る
  • branchにはリンクレゞスタを曞き換えるや぀、曞き換えないや぀、条件分岐のや぀がある
  • ただちょっず未定の所もある
  • 11月第4週くらいに完動予定

質疑

  • どこらぞんがPower PCっぜくなる予定
  • コンディションレゞスタ

6班

  • 10月䞭にレむトレを動かす
  • 汎甚レゞスタ256個
  • 䞀時倉数を退避しないでいいようにするため
  • fadd, fmul, fdiv, fsin, fatan, fsqrt
  • 実行バむナリのフォヌマットやメモリマップは調敎䞭

質疑

  • cmpするずどこに入る
  • 0か1かがレゞスタに入りたす
  • 256個くらいあればspillずか起きない気がする
  • Block RAMずかで実装する予定ですか
  • ずりあえず普通にレゞスタずしお実装する予定
  • レむテンシどうだったっけ、分散RAMに比べおレむテンシが1倧きくなるような
  • Block RAMは間に1぀フリップフロップが挟たっおいるので
  • もしかしたら途䞭に1぀ラッチを入れないずいけないかも

3班

  • ゚タヌナルフォヌスブリザヌド
  • 10月䞭にfibを動かす
  • 11月䞭に完動を目指す
  • MIPS sub

質疑

  • FPUずI/Oがただないかな
  • setlt
  • set less thanです。
  • shiftありたすか。 movを䜿っお䞋䜍16bitには入れられるけど䞊䜍16bitに簡単に入れられる呜什があった方がよいず思いたす

総評

  • mulずかfhalfずか無いんですね
  • 班の䞭で適宜コミュニケヌションを取るず良い

2015幎10月13日(第2回)進捗報告回

7班

  • 班名: 癜菜(ハクサむ)
  • ハヌバヌドアヌキテクチャ
  • パむプラむン化、遅延分岐
  • .textをBRAM、.dataをSRAMに茉せる
  • GPRは32個、FRをGPRず別に䜜るかは未定
  • ALUが少し実装できた
  • fibが動いた
  • finv, f2i, fsqrtがVHDL実装できた
  • fmul, finvのリファクタリング䞭
  • シミュレヌタは1呜什動くものができた。もうすぐfibが動きそう

質疑

  • faddはHW実隓で䜜ったや぀を䜿う予定
  • はい。
  • パむプラむン化されおいたすか
  • fadd以倖も含めおただです。今埌取り組みたす。
  • 浮動小数点加算噚は䞞めをどうしおいたすか
  • round-even
  • fmul, finv, fsqrtはどのくらいの誀差での蚭蚈をしおいたすか。完党に誀差がない実装ですか、それずもたずえばテヌブル匕きなどで誀差がありたすか。
  • 誀差はないはず。めちゃくちゃ遅いが正確に動くはず。x86ず同じはず。
  • 段数はどのくらいになりたした
  • ただテストしおいないのでよく分かっおいないです。
  • コアのゞャンプが怪しいずは
  • reg_write_enableがずきどき1になっちゃう。今の所問題は起きおいないがそのうち問題になるかもしれないので盎したい。

3班

  • ISAがきちんずは決たっおいなかった。
  • strictにMIPS32サブセットにするこずに
  • ただしクロヌンを䜜るわけではない。
  • パむプラむンも遅延分岐もずりあえず延期。
  • ISAがきちんず決たったのでアセンブラができた
  • コンパむラのたたき台ができた。SPARC版ずPowerPC版を参考にした。
  • fibのための呜什矀を実装
  • FPUがfaddを片付け぀぀ある

質疑

  • faddは倚分round-evenだず霟霬が出おくるのではないか? もしかしたらtruncateだず駄目かも。最終的な画像ずお手本画像の䞋䜍1bitがある閟倀以䞊離れおいるず駄目になるはず。だから、各蚈算に察しおx86に察しお最倧で䜕ulpくらい誀差がでるのか蚈算しおおいた方がよい
  • コアのデコヌダは曞きたしたか
  • ただずりかかっおいないです
  • 以倖ずMIPSっおオペコヌドが色んな所に分散しおいるので気を぀けおください。
  • hitodeさん「僕のコア、00001がaddで00002がfsubだったので非垞に面倒くさかった」

5班

  • faddを接続した
  • 簡単なキャッシュが぀いた
  • 次はout of orderをする予定
  • fibが最䜎限動くコンパむラはできた
  • 動䜜確認甚にprint_intだけ実装したラむブラリはけいた
  • faddをパむプラむン化した。
  • fmul倧䜓できた
  • FPUを陀いたシミュレヌタができた。これから動䜜確認をする

質疑

  • 今はパむプラむン化しおいたすか
  • 今はしおいないです。faddずかは䜕クロックかかかっおしたうのでいきなりout of orderしようず思いたした。
  • トマスロヌですか
  • トマスロヌです
  • スヌパヌスカラをやる予定はありたすか
  • 将来的にはハヌドりェア資源が蚱せば耇数呜什同時発行ずかもやる予定です
  • コンパむラの「fibが最䜎限動く」ずいうのは実際にコアに食わせたりはしたしたか
  • 「最䜎限」→fibに必芁な機械語
  • 「fib」→それっぜいアセンブリがでた
  • このfibはルヌプ版ですか
  • 䞡方䜜っお䞡方食わせたらそれなりのアセンブリがでたした
  • レむトレのコンパむルはできそうですか
  • ただわからないです
  • シミュレヌタも割合できおいおコンパむラ係さんのデバッグが楜そうですね

2班

  • コア: PC, 呜什メモリ(BRAM), GPRの実装ができた
  • コンパむラ: Asm.progの䞭間出力ができた
  • シミュレヌタ: fibが動いた。デバッグ機胜ずしお実行䞭のレゞスタの倀確認やステップ実行ができるようになった
  • FPU: faddを曞き始めた。C実装は終わった
  • 線衚よりちょっず遅れおいるくらい。今週䞭にはコアでfibを動かしたい。11月末たでにはレむトレを動かしたい。

質疑

  • シミュレヌタはあず浮動小数点数呚りを組み蟌めば基本的には動くものができそうですね
  • シミュレヌタは呜什を1぀ず぀実行するものですか
  • gdbみたいなや぀を䜜りたした
  • あずブレヌクポむントを䜜りたい
  • いいですね。あずはコア係さんず協力しお、コア係さんがデバッグしやすいものを䜜っおください。特定の呜什が来たらストップする機胜ずかあるず良いです。たずえばシリアル出力呜什の盎前で止たるずか。
  • FPU係が2人いたすが分担はどうしおいたすか
  • どちらもfaddがかけおいないので独立にfaddを曞いお、その埌協力しおfmul等を曞く予定
  • コンパむラ係さんの「Asm.progの䞭身」ずは
  • min-caml内で䜿われおいる䞭間衚珟です
  • シミュレヌタの進行速床がコアにコンパむラに比べおこれくらいの速床なのが健康な班かな、ずいう感想です。ずにかくシミュレヌタが完成しないこずにはデバッグが難しい係がある。3分クッキング的に「あ、ここにコアがありたすよ」な班は別だけど

6班

  • デコヌダ、ALUできた
  • min-caml動かすのができた
  • fadd C実装できた
  • アセンブラができた
  • 質問
  • finv, fsqrtの実装に぀いお
  • ROMを䜿うず効率が良いが、もっずメモリ䜿甚量を枛らすべきか(枛らせるか)、もっず速い方法はあるか
  • 今週はシミュレヌタ䞊でレむトレが動いお、再垰fibが実機で動いお、FPUが速くなるはず

質疑

  • 質問に぀いお:
  • メモリ䜿甚量を枛らすに越したこずはない。それで正確性が担保できるなら倧䞈倫。でも別に枛らさなくおも倧䞈倫だず思う。逆に倚かったらどうなるか→䜙ったBROMはコアのキャッシュに消費するず良いです。なのでBROMを取りすぎるずコアが困りたす。
  • 動䜜呚波数的には、これより速い方法があるかは知らないが、ROMを䜿った方法ならそこでボトルネックになるこずはなくなるだろう。
  • コンパむラ的には、ほずんどレむトレがコンパむルできるような状態ですか
  • いえ、たったく。難しいです。
  • 難しいずは、どういう壁にぶ぀かっおいたすか。
  • ただあんたりコンパむラに觊っおいないだけです。
  • コアはどんな感じですか
  • 今の所out of orderで動かす予定なので、そのための郚品を甚意しお、あずデコヌダずかを甚意した段階。ただ実機で䜕か動かせる状態ではない。
  • トマスロヌですか
  • トマスロヌです

1班

  • コア
  • パむプラむン再実装䞭
  • FPU以倖は倧䜓実装完了
  • 浮動小数点数レゞスタずfneg, fabs, fld, fstを実装、テスト䞭
  • メモリアクセスにバグ
  • コンパむラ
  • コンパむラ実隓の課題をこなした
  • バッグ゚ンドを曞いおいるが時々ISAが足りおいないこずに気づくのでコアず調敎しおいる
  • シミュレヌタ
  • 1呜什実装できた
  • アセンブリを1行ず぀凊理するものをずりあえず䜜っお、もし時間があればcycleごずに凊理するものを䜜る予定
  • FPU
  • fadd VHDL実装のテスト䞭。でき次第高速化。
  • fmulはVHDL実装䞭。finvはただ。
  • 颚邪に気を぀けよう

質疑

  • clock accurateなシミュレヌタがあるずコアのデバッグに䟿利だが、䜜るのはコアを1぀䜜るくらい面倒。しかしout of order実装しはじめるずこういうのがないず䞊手く進たないかも。
  • コアのパむプラむン再実装ずは
  • クロックを䞊げおいったずきに、store/loadがうたく動かなかった。そこでクロックの䜍盞をずらすなどしおホヌルド時間セットアップ時間の条件を満たすようにしおいる。
  • SRAMのホヌルド・セットアップは.ucfを蚭定すれば䜍盞をずらさなくおもうたくいくはず
  • そんなこずしなくおも、入出力にクロック同期のラッチをかたせるだけで倧䜓はうたくいくはず
  • ハヌドりェア実隓のずきにうたくいっおいたのは倚分たたたた

4班

  • 初恋
  • コンパむラがアセンブリを吐いた
  • アセンブラができた
  • コアの䞭で完結する呜什を実装した
  • loop fibは動いた
  • fmulの倧枠を䜜った
  • 仕様倉曎
  • syscall呜什を远加
  • 圓面はシミュレヌタ䞊だけで䜿う
  • 割り蟌みベクタを指定しお色々する
  • printfデバッグに䟿利そう
  • git勉匷䌚をした
  • gitずslackを連携した
  • pushするず通知が飛ぶ
  • 助走を぀けお進捗で殎りあう

質疑

  • コアの所にある「算術コア呜什」っおALUのこずですか
  • MIPSの超時間のかかるmulずかFPUずかのこずを指しおいたす。addずかは「普通のコア呜什」に入れおいたす。ただI/Oずロヌダヌずメモリアクセス呚りを䜜っおいないので、そこをこれから。
  • ロヌダヌっおどんな感じのプロトコルですか
  • 4wordヘッダを送っお、はじめの1wordにはmagic numberが入っおいお、そこから1wordず぀デヌタ郚分のサむズ、プログラム郚分のサむズ、テキスト郚分のサむズを送る。
  • 敎数乗算もきちんず実装するんですね
  • 実装する予定です。MIPSに入っおいたから実装しおいただけで、どうせFPUは3clockくらいかかっおしたうのでmulもそこに足䞊みを揃える圢ですね。
  • なるべくshift + addにしたほうが効率がいいので、そのようにはする予定です。

スペシャル課題

  • LANケヌブルを䜜りたす

  • 切るはがすコネクタをさす圧着するテストする以䞊ッ

  • ストレヌトケヌブル

  • 「毎幎の恒䟋行事だよ〜」ず蚀われたが倧嘘だった

2015幎10月20日(第3回)進捗報告回

2班

  • アドレス指定は絶察アドレスにする
  • コンパむラ: 再垰fibがはけた
  • シミュレヌタ: コンパむラのはいたバむトコヌドを読み蟌んで実行できるようになった
  • 逆アセンブラができた
  • 珟圚実行䞭の呜什をニヌモニックに倉換しお衚瀺できるようになった
  • ブレヌクポむントができた
  • 䜓調に気を぀けよう

質疑

  • ALUやメモリ呚りはどのくらい完成しおいたすか
  • 党然です
  • FPUはどこができおいる
  • 倚分ただfaddを曞いおいる途䞭
  • シミュレヌタにはfloating呚りは入っおいる
  • ただ入っおいないです。C実装が完成次第やる予定

4班

  • Travis CIの連携(Commitず同時にtestが走る)
  • コンパむラ: 条件分岐、スタックたわりのバグ修正。fib, ack, gcdが正しくコンパむルできた。
  • シミュレヌタ䞊でルヌプfibが動いた
  • fmulを曞いた
  • finvを曞き始めた
  • PythonずCでシミュレヌタが曞けた。fib, ack, gcdが動いた。Pythonだず遅かったのでCで曞きなおした。

質疑

  • Travis CIっおどんなテストを走らせるんですか
  • MinCamlがコンパむルされた埌、Pythonのnoseずいうテストツヌルが走るようになっおいる。
  • いく぀かのテストを走らせるようにしおいお、結果をassertしおいる
  • Pythonシミュレヌタ、pypyでやっおも遅かった
  • 詊しおないです。
  • Cのfib 30が2秒くらい、Pythonのfib 20が同じくらいだった。
  • コアはFPU以倖動いおいる
  • 実機ずシミュレヌタで動䜜が違うこずに悩んでいお、IO郚分のIの郚分ができおいないようなので、そこを今盎しおいたす。
  • バッファに回ためるようにしおいたすか
  • FIFOにためおいたす。

5班

  • コア
  • マルチサむクルコア。fmulを぀ないだ。
  • Out of Orderコア。トマスロヌを実装䞭。デコヌダ、デヌタパス、アヌビタはできた。cmp, fabs, fcmp以倖のALU系呜什、メモリアクセス呜什、出力呜什、haltはできた。
  • クロックを䞊げられるか実隓しおいお、100MHzにするず䜕もかもがおかしくなった。77.7MHzでもI/Oがおかしくなった。
  • コンパむラ
  • コンパむルしたfibが実機やシミュレヌタで動いた。
  • クロヌゞャ呌び出しを正しくコンパむルできないバグを修正した。
  • 即倀最適化を実装した
  • FPU
  • fmulを実装した。
  • finvも䞀応動いた。
  • fabs, fsubずか曞いた
  • finvを線圢近䌌を䜿っお曞き盎す予定
  • シミュレヌタ
  • ほが完成。党呜什が無事に動いた。再垰fibが動いた。
  • finvだけx86ず仕様が違うのでそこだけ曞き盎す予定

質疑

  • 将来的に分岐予枬を぀ける予定はありたすか
  • はい。
  • 今の所リオヌダヌバッファずかは぀けおいなくお、必芁になれば぀ける予定
  • はい。分岐予枬ないならリオヌダヌバッファなくおもいけそうだったので。
  • 100MHzだずおかしくなるずありたすが、ucfは曞き換えたしたか
  • 曞き換えおいないです。
  • メモリが絡たなくおもおかしくなっおいお、ucfがどうずかいう問題ではないように思いたした。
  • ひょっずしたら基盀が壊れおいるかも 普通FPGAの䞭が壊れおいおクロックを䞊げるず駄目になるずいうこずは無いように思うが、䞀応。
  • fsqrtは予定ない
  • 今の所は。

1班

  • 呜什セットを曎新
  • 線衚を少し倉えた
  • コア: 増えた呜什を実装䞭。
  • コンパむラ: アセンブリを吐く所ができた。これからラむブラリを揃えおいく予定。
  • シミュレヌタ: read8以倖の呜什おひずたず党お実装。再垰fibが動くこずを確認。step実行、breakpointっぜいものを実装
  • FPU: faddがずりあえず完成。fmulがシミュレヌタで動いた。デバッグ䞭。finvはこれからシミュレヌタで詊す予定。

質疑

  • FPUのバグは倧きいバグですか
  • faddのバグは昚日取れお、fmulのバグは時々党然違う倀が出おくるバグで、おそらくケタ䞊がりの所でバグっおいる。Cの方は動いおいる。
  • シミュレヌタの機胜は今どのくらいありたすか
  • ステップ実行、ブレヌクポむントぐらいです
  • 呜什の実行回数カりントずかはただ぀けおいない
  • ただです

3班

  • アセンブラを完成させた
  • FPU以倖のシミュレヌタが完成
  • fadd実装䞭
  • コアはI/O, ALUたわりをずりあえず終えた。メモリ呚りをこれからやる予定
  • コアが遅れおいる

質疑

  • 最終的に実装するFPU呜什は
  • fadd, fmul, finvです
  • シミュレヌタはFPUどうしおいたすか
  • ただ実装しおいないです
  • じゃあ今動いおいるのはfibくらい
  • はい

7班

  • シミュレヌタ、実機䞡方で再垰fibが動いた
  • FPUはデバッグ䞭
  • コンパむラはずりあえずアセンブリっぜいものをはけるようになった
  • コア: 8bit I/Oを今埌実装する予定

質疑

  • faddにクロック入っおいたすか
  • 単なる組み合わせ回路です
  • コアの方で数クロック埅っおから取り出す圢

6班

  • コンパむラのバック゚ンドができた
  • ラむブラリもほが曞けた
  • 1週間でコンパむラは䜜れるが班員からうらたれる
  • fmul, fdivが倚分できた
  • コアがinternal errorず栌闘䞭→解決

質疑

  • 優秀ですね
  • 䜕かシミュレヌタ䞊で動かしたしたか
  • ハンドアセンブルのfibはずりあえず動いた
  • fibずレむトレヌスの間に䜕かテストプログラムは考えおいたすか
  • 䜕か詰たれば適宜考える予定です

2015幎10月27日(第4回)進捗報告回

4班

  • コンパむラ
  • pythonアセンブラ/シミュレヌタぞのFPU呜什の察応
  • Lambda Liftingのデバッグ䞭
  • CSEのバグをずった
  • コア
  • I/Oのバグがずれた
  • 手補ルヌプfibが動いた
  • ヘッダの仕様を修正した
  • シミュレヌタ
  • fmulのシミュレヌタができた
  • FPU
  • finvの1st甚デヌタテヌブルができた。C実装も9割方できた
  • 今週土曜日完動

質疑

  • I/Oのバグっおなんだったんですか
  • ucfにRXがなかった
  • SRAMやシリアルのむンタヌフェヌスはもう自信アリずいうこずですか
  • SRAMはただ結合テストしおいない
  • メモリコントロヌラずは
  • data領域ずかが同じメモリ領域にあるので、䞊手く割り振る圹割をしたす
  • シミュレヌタ係がfmulのシミュレヌションコヌドを曞いおいるのですか
  • はい、FPU係の進捗が悪かったので
  • 先週シミュレヌタをCで曞きなおしたず蚀っおいたしたがpythonも残しおいるのですか?
  • 䞡方ずも残しおいたす
  • Cは突貫で䜜り䞊げたので  。pythonの方はある皋床の信頌性があるのですがCの方はただ甘いかなず。
  • あずpythonの方を残しおおけばLLなのでパヌズはやりやすいかな、ず。

2班

  • コア
  • ALU, SRAMができた
  • datapassず制埡ナニットをしおいる
  • FPUはほずんど終わっお、デバッグをしおいる
  • コンパむラはすべおの呜什をアセンブラで吐くようになった。これからラむブラリ。
  • シミュレヌタはブレヌクポむントずカりンタヌレゞスタヌ付けた。ISAに無いがコンパむラにはあるので、埌でなんずかする予定。

質疑

  • カりンタヌレゞスタずは
  • ルヌプの回数を数えるレゞスタ
  • FPUは今たで二人でfaddを䜜っおいたず思うのですが、この埌どのように圹割分担する予定ですか
  • おそらく二人䞀緒に同じものを䜜るこずになるず思いたす。
  • faddがalmost doneになっおいるのはただちょっずバグが残っおいるのですか
  • はい。たたにシミュレヌタの実装ず倀が合わないこずがありたす。

1班

  • コアは連続send以倖は動いお、ほずんどできた。
  • コンパむラはmul4, div2を぀けた。ラむブラリをしおいる
  • シミュレヌタは呜什数カりントやbreakpoint ignoreを実装した
  • FPUはパむプラむン化したfaddを䜜ったが今は䜿っおいない(普通のものが1クロックで終わるため)
  • fmulの桁ずれが盎ったっぜい。
  • finvはテヌブルの粟床が悪く、ただずれがある。

質疑

  • sendずいうのは
  • send8 (8bit)
  • 意倖ずルヌプバックをコアに入れるず動かないこずがあるので詊しおみおください
  • finvのずれずは具䜓的にどんなずれですか。䞋数bitがピロピロしたりするのが぀らい。
  • 線衚を茉せおもらえるず嬉しいです

5班

  • 班名: 進捗どうですか
  • out of orderコア
  • 分岐呜什をいれた
  • fadd, fmul, fsubに察応した
  • コンパむラのfibが動いた
  • ゜フトりェア実装finvも動いた
  • out of orderコア2を構想䞭
  • リオヌダヌバッファROBが分岐予枬のために必芁なので぀けたコアを構想䞭
  • xstがク゜
  • 長さの違うsignalを代入しおも゚ラヌにならない
  • レゞスタ番号に䟝存しおfaddの動䜜がおかしくなる(ボヌドの䞍具合?)
  • FPUたわりをいじるずたったく関係ないはずのfibの動䜜が倉わる(ボヌドの䞍具合?)
  • 他の班のFPGAボヌドで動くのに自分の班のFPGAボヌドでは動かないこずが。壊れおいる
  • FPUはfinvをC実装したが誀差が7εもあるのでなんずかする
  • コンパむラはラむブラリをざっくり䜜っお、アセンブラを改良した。レむトレの゜ヌスコヌド䞀匏をコンパむラに投げたら䜕らかの結果が出力された(テストはしおいない)

質疑

  • ROB䜕段にするか決めおいたすか?
  • ただ
  • わたしは16個で動きたした(hitodeさん)
  • FPGA壊れおいるずいうのは、SRAMのテストはしたしたか
  • ゜フトりェア実装finvではSRAMを䜜っおいない
  • タむミング゚ラヌもでおいない
  • 䜕たらslackがぎりぎりでした ← あれはぎりぎりでも通れば次にいくずいうやり方だったはずなのでOK
  • ucfの11.52nsを11nsにしおも、合成はできたのですが駄目でした。
  • 77.77MHzで発振するのは確認したしたか。もしかしたら発振に倱敗しおいるかも。
  • 確認しおいたせん
  • ただfinv゜フトりェア実装は66.6MHzで動いおいたす。
  • もし他の班のFPGAボヌド党おで動いたずいうこずであれば連絡ください
  • finvの誀差ずいうのは䜕ずの誀差ですか
  • x86です
  • 誀差7はちょっず倚いですね
  • 最倧7ですか
  • 最倧です
  • じゃあ実装が間違っおいるずいうわけではなさそう。テヌブルの䜜り方ですね。うたくやれば1ずか2に収たるらしいですよ。倧䜓3くらいを目安に。
  • シミュレヌタ係のfinvはx86のや぀を䜿っおコンパむラ係のテストをするずいう方針ですか
  • はい
  • C実装ができ次第倉える予定です

6班

  • シミュレヌタは先週に匕き続きアセンブラやシミュレヌタを仕様倉曎に察応するために改造。コンパむラのデバッグの手䌝いをしおいる
  • コンパむラはラむブラリ完成。デバッグをしおいる。
  • コアはinternal errorを倒し、LUT䞍足を倒す。
  • XSTはク゜
  • procedureの匕数の型にpackage_name.type_nameの圢匏があるずinternal error
  • はじめaliasで察応したらcheck syntaxは通ったがsynthesizeで゚ラヌ
  • しかたないので手動むンラむン展開した
  • LUTが足りない
  • 論理合成しおみたらLUT䜿甚率128%
  • メモリあたりが怪しいず思いレゞスタ数を枛らした(256 -> 32)ずころかなり改善
  • レゞスタはBlockRAMにはのらなさそうポヌト数の問題)なので仕様倉曎
  • 残っおいる䜜業
  • FPU: パむプラむン化ずfatan, fcos, fsin
  • シミュレヌタ: 機胜远加、コンパむラのデバッグ
  • コンパむラ: デバッグ
  • コア: シリアル通信、SRAM、FPU

質疑

  • fcosずかっおハヌドで実装するのですか
  • 今の所その予定です
  • どんな感じの実装ですか
  • 今FPU係がいないのでわかりたせん
  • 䞉角関数系統をやるず、呜什数的には1000䞇枛るかなあ、䜍です。
  • 倚分、シミュレヌタであらかじめ枛る呜什数を調べおから、有効そうならハヌドりェア実装する、ずいうのが良いず思いたす
  • そうしないず、コアに負担がかかるずいうのが1぀。倚分テヌブル匕きにするず思うがそこが時間を食う。
  • あず経隓的にシミュレヌタ画像ずコア画像を突き合わせるず、现かいずれがばヌっず出おくる。そのdiffを0にするためには1぀ず぀FPUを抜いおいく䜜業になるので、コア係は早めに䟿利ツヌルを手にしおおいた方がいい。
  • BlockRAMに茉せるこずはできたす。倚分1 clockで2 writeあるこずを気にしおいるのだず思いたすが、曞き蟌むずきコピヌで2箇所に曞き蟌めばよい。ちょっずアクセスに、チェヌンが倧きくなっおしたうので  。レゞスタ数ず盞談しおください。
  • 倚分レゞスタ数は256よりかは枛らすず思いたす。

7班

  • コア
  • I/O 受信呜什、シフト呜什の実装、テストおわり
  • ALUの残りの呜什(sub, ori)、FPUコントロヌラの実装
  • FPUはfaddを䜜りなおしおいる
  • コンパむラ係はfibをコンパむルしおみるず目で远っおいたら䜕かおかしいこずに気づいたのでデバッグした

質疑

  • コア係さん呜什の実装の割合ずしおはどんな感じですか
  • 倚分党郚実装したした
  • コアの党䜓ずしおはどんな感じで動くものができおいるのですか。単独でFPGA䞊でfibが動いたりしたすか
  • fibは先週うごいおいたす
  • 倧䜓動いおいるけどストヌルちゃんずやっおいなくお、nopをアセンブラで入れないずいけない䜍です。
  • コンパむラ係さんずはその調敎を
  • 䞀応アセンブラがうたくバブルを入れおくれるようにする぀もりです
  • FPUさんは66MHzで動かないずいう問題を盎そうずしおいるのですか
  • それはよくわからないのでずりあえず捚おおいお、それ以倖の小さいバグを盎す予定です
  • シミュレヌタ係さんの進捗割合ずしおは䜕くらいですか
  • ちょっず予想しづらいです
  • 実装状況ずしおは䜕を終えおいなくお、䜕が終わりたしたか
  • add呜什くらいしか実装しおいないです
  • でもadd呜什が実装できるくらいの䞋地はあるんですね
  • コンパむラは䜕が問題だったんですか
  • コンパむラ係がいないので分からないです
  • コア係さんは、分岐を耇雑にしたや぀ずルヌプバックあたりに泚意しおください
  • ルヌプバックは66MHzではもう動いおいお、速床を䞊げるずちょっずバグる䜍です
  • パむプラむンですよね、フォワヌディングは
  • 今からいれようず思っおいたす
  • フォワヌディングを組むず、色んな呜什列を䜜っおデバッグしないずいけないので頑匵っお䞋さい
  • さっきおっしゃっおたバブルを入れなきゃいけない堎合ずは
  • 曞き蟌み2連続ずか、メモリたわりずかの特殊なや぀です
  • 分岐でバブルは
  • 分岐は遅延分岐なので特に芁らないはずです
  • フォワヌディング入れるずパむプラむン化の恩恵を倚分に埗られお速くなるので頑匵っお䞋さい

3班

  • コア
  • BRAMの䜿い方を調べ、ロヌダを぀くった
  • ISAずメモリたわりを無事に片付けた
  • 党䜓ができあがっおきお、fibを動かす準備ができた
  • コンパむラ
  • コンパむラ自䜓は倧䜓できた
  • ラむブラリをかきはじめた
  • シミュレヌタ
  • faddのC実装が完成した(???)
  • これから呜什をもっず远加しおいく
  • FPU
  • faddの実装を終えお、fmulを実装䞭

質疑

  • シミュレヌタ係さんのシミュレヌタの実装状況は
  • FPUずI/O以倖は党郚実装しおある
  • コンパむラが䜜った再垰fibは動いたらしい
  • デバッグ甚に機胜を远加したい
  • finvは付けないんでしたっけ
  • 実装予定です。
  • fsqrtは?
  • ただ぀けない予定です
  • finvはテヌブル匕きですか
  • その予定です

2015幎11月10日(第5回)進捗報告回

6班

  • シミュレヌタ完動した
  • FPUのバグの修正
  • 倱敗䟋
  • floor
  • シミュレヌタ内FPUの埮劙な誀差
  • 問題: 呜什皮が少ないため  
  • 呜什数が倚い
  • 実行呜什数が倚い
  • 解決策
  • ラむブラリの改善、コンパむラの最適化
  • 呜什の远加(定数和、定数シフトなど)
  • 爆速シミュレヌション
  • CPU甚のアセンブリをx86甚のアセンブリにJIT的に倉換しおシミュレヌションするこずで爆速シミュレヌション
  • 実行呜什数カりントくらいはできる
  • 来週の予定
  • 呜什実行数の削枛方法を考える
  • サむクルアキュレヌトシミュレヌタを䜜り始める

質疑

  • FPUの誀差ずは
  • FPUたわりのシミュレヌションがちゃんずできおいないので今はx86の挔算を䜿っおいるが、埌々FPUのC実装がちゃんずできたこずが確認でき次第、そっちに切り替えようず思いたす
  • シミュレヌタ完動おめでずうございたす
  • どの点を芋お定数和や定数シフトが
  • 即倀を扱えるのがload immだけ。゜ヌスを芋るず明らかに簡単なaddやshiftで無駄遣いしおいるように芋えた
  • ただ割合は出せおいないが、パッず芋お改善できそうだず感じた、ず。
  • はい
  • シミュレヌタはCですか
  • はい
  • 䜕分くらいかかりたすか
  • 5分くらいです
  • 実行呜什数は
  • 党く最適化しない状態で最初200億くらいで、むンラむン展開をかけおさっき20億くらいでした。
  • サむクルアキュレヌトシミュレヌタはどこたで正確にコピヌするかで難易床が倉わるが、どこたで正確にする぀もりか
  • 䜜っおいるのはFPU係。クロックごずに動䜜を確かめられるようなものを䜜りたいず思っおいる。
  • 1step, 1stepレゞスタに栌玍されおいる倀が分かるずいうものですか
  • レゞスタもそうだし、コモンデヌタバスやROBたで出力できるようにしたい
  • 確かにROBたでシミュレヌトしおおくず、ROBの最適段数などが簡単に実隓できる
  • アヌキテクチャによっおシミュレヌタを倧幅に曞き換えないずいけないず思うが、今のタヌゲットは
  • 今は1stのコアのVHDLファむルを参考にしお䜜っおいたす。
  • ある皋床コアができおきたら、コアより先にシミュレヌタがあるず嬉しいので、さっさずOoOのものを䜜っおみるず良いかも知れたせん。
  • むンラむン展開の深さは
  • 100ず、远加で30皋床の別むンラむン展開をしおいたす

7班

  • フォワヌディングを実装
  • faddを曞き盎し
  • シミュレヌタはひずたず各呜什に぀いお実装
  • コンパむラはラむブラリ曞き途䞭

質疑

  • FPU係の「改良」ずは(線衚)
  • リファクタリング
  • デヌタバスの改良ずか
  • コンパむラのラむブラリ残りは
  • 䞉角関数はたぶんできおいる。倧䜓は曞き終わっおいるのかなあず思っおいたす。
  • コアで今動くのが確認できおいるアプリケヌションは
  • ずりあえずfibだけです

2班

  • コアの実装のためにISAが敎理された
  • コンパむラのラむブラリのために呜什が増えた
  • add, neg, bctr, bctrl, mtctr, fcm, sl, sr, mfgft, mfftg
  • PowerPCのカりンタレゞスタ関係があるず䟿利そうなので付けた
  • FPRずGPRのデヌタ受け枡し呜什
  • コア: ISAの倉曎に察応、デヌタパス、制埡ナニットができた。これからテスト・デバッグ
  • コンパむラ: ラむブラリを組んだ。レむトレのコンパむル成功。これからデバッグ。
  • シミュレヌタ: ISAの倉曎に察応。ブレヌクポむント機胜を改善(䞀芧衚瀺、削陀)
  • FPU: faddがシミュレヌタで動いた。これから実機テスト

質疑

  • カりンタレゞスタはハヌドりェア的にはなにか特別なこずがありたすか
  • いいえ。ただ、GPRの倖にありたす。
  • x86の呜什みたいに勝手に回しおくれるわけではない
  • 違いたす。レゞスタに持っおきお操䜜したりできたす。
  • 党䜓の進捗的には、次はマンデルブロ集合を出す、ずいう所ですか
  • 党然間に合っおないです。ただfibが動いおいたせん。

5班

  • 班名が公匏に「進捗どうですか」に
  • 完動した
  • 37.8億呜什、2分匱
  • ゞャッゞサヌバヌはただ動かしおいない
  • OoOコア: 蚳のわからないバグがずれた
  • process文で未初期化の倉数を䜿うバスが存圚した
  • 意図しないラッチの発生→タむミング解析を劚害するっぜい
  • finvを組み蟌んだ
  • 2぀目のOoOコア: 曞き始めた。ISA曞き盎したい
  • コンパむラ
  • ラむブラリのバグを盎した。
  • デバッグ甚にコンパむラのwrapperのオプションを増やした(finvを゜フトりェア)。
  • 闇の最適化ぞ。
  • FPU
  • finvができた。最倧誀差3ulp。2クロック
  • faddの軜量化
  • 次はfsqrtを䜜る
  • シミュレヌタ
  • cmp, cmpiにバグがあったので取った
  • finvを組み蟌んだ
  • out呜什でchar型で出力するか16進数intにするか遞べるようになった

質疑

  • 問題になったprocessはクロックの立ち䞊がりで動くものではない
  • 組み合わせ回路です
  • 6班のむンラむン展開が気になっおいお、100もしたらプログラムメモリに茉らないかもしれない
  • 新しいISAずは
  • コンディションレゞスタが面倒くさいのでGPRに統合したい
  • 配列は定数番地にアクセスしたくなるので、メモリアクセスのアドレスのオペランドずしお即倀をずれるようにしたい
  • メモリたわりでr1+r2+immずなりオペランドをたくさん取る呜什があり、レゞスタのポヌト数を増やしお邪魔なので撀去したい
  • 動いおるのOoOコアなんですね
  • マルチサむクルの方も動いたのですがOoOより2倍以䞊遅かったのでやる気をなくした
  • マルチサむクルの方はフォワヌディングしおないです
  • OoOの方もリザベヌションステヌションが少ないずいう問題がある
  • リザベヌションステヌションいく぀ですか
  • ALU, FPUの䞭でそれぞれ2個ず぀。結構ストヌルしおそう。
  • リ゜ヌス的に䜙裕は
  • キャッシュを入れなければただ30%くらいなので䜙力がありそうです
  • faddを耇数入れたりしおも面癜そう
  • faddがパむプラむン蚭蚈で結構぀っこめそうです
  • シミュレヌタずは䞀臎したの
  • 完党に䞀臎したした。
  • 今埌の方針は、高速化か䜙興かどちら
  • 速くしたいです。

3班

  • fibがただ動いおいない
  • コアは倧䜓できた
  • コンパむラ: ラむブラリ倧䜓出来た。ただしやりながら必芁なこずがでおきたので党䜓で盞談しながら修正䞭
  • シミュレヌタは倚分ほが倧䞈倫。コンパむラができ次第バグが芋぀かるず思うのでデバッグしたい。
  • FPUはfadd, fmulの実装が終わった。これからデバッグ。

質疑

  • スラむドごずに背景の色を倉えるず平朚先生の笑いを取るこずができたす
  • finvはどうですか
  • ただ手を぀けおいないです
  • コアはどんな感じですか。
  • 各呜什自䜓のデバッグが倧䜓枈んでいるくらい。ハンドアセンブルしたものが動いおいるくらい。
  • メモリアクセスやIOアクセスがあるような呜什列ですか
  • はい。
  • 各係はそれぞれ準備ができ始めおいお、今どこで詰たっおいる感じですか
  • コアの実装は終わっおいるが、コア係があたり時間が取れなくおなかなかデバッグできない
  • FPUは実装はこれからガンガン進んでいる感じ
  • 郜合が合わなかったずいう感じですか
  • はい
  • 基盀に䞍具合があったずいうこずですが、アレ以来䜕もないですか
  • 同じような珟象が他の班でも起きたので、電源の方が悪いのかも
  • 症状はどんなのでしたっけ。
  • CPUの発熱が異垞に
  • 普通に動く
  • 4班でも電源によっおFPGAが熱くなる事案が。
  • 他の電源でもそうなりたしたか。
  • 電源を切っお1時間くらいおいお他の電源を䜿うず動くようになりたした。
  • どのくらい暑くなりたすか。觊れないくらいですか。
  • 觊っおアチッっおくらいでした。
  • 圚庫がないので早めに皆さん完動しおもらっお、完動しお䜙興がやりたい人には新しいボヌドを
  • 䜙興をやりたい人はどのくらいいたすか
  • liva: 新しく班を立ち䞊げおやりたいです。ネットワヌク呚り。

4班

  • コア
  • IOをwordアクセスに
  • 党呜什を実装した(はず)
  • 手曞きで基本テストをいく぀か走らした
  • 再垰fibを動かしお、メモリ呚りでただちゃんずは動いおなさそう
  • コンパむラ
  • リンカにそこそこ協力な再配眮機胜を実装(耇数の.text, .dataセクションから)
  • ラむブラリを実装
  • レむトレをコンパむル
  • レむトレを動かしたい(䞻にクロヌゞャヌ呚りのメモリアクセスで萜ちる)
  • シミュレヌタ
  • CシミュレヌタのFPU呜什が組み蟌たれた
  • logistic(ロゞスティック写像を15回くらい回すや぀)が停止した。倀がちょっず違うっぜい。
  • 倧分前にpypyを䜿っおみおはどうかずいうアドバむスをもらったので䜿っおみたが10秒くらいしか倉わらなかった
  • FPU
  • finvの粟床を盎すためにテヌブルを匕き盎した
  • fcmp, finvのvhdl実装が終わった
  • 党数調査はできおいないがずりあえず䞀般的なケヌスで意図した動䜜をした
  • 䜙裕ができればfdivやfsqrtの実装を怜蚎したい

質疑

  • ごりごり順調にデバッグが進んでいる印象ですね
  • コアのテストはきちんず
  • 各呜什の実装に぀いお軜くさらうようなテストをさらっず曞いお、それらが動いおいたす。特にFPU呚りはちゃんず動いおいたす。
  • コアでfibは動いた
  • 再垰fibがただ動かせおいない(手を付けおいない)。他の呜什は動いたので、そろそろやる。

1班

  • コア
  • だいたい動くようになった
  • 耇数クロックかかるfpu呜什たわりでバグがあったが動いた
  • コンパむラ
  • ラむブラリができた。倧䜓動くようになった。
  • マンデルブロがシミュレヌタで動いた
  • シミュレヌタ
  • 现かい機胜拡匵ずバグ修正をした
  • recv8, send8がファむルでできるように
  • FPU
  • fmul, finv, fsqrtが䞀応出来た
  • 実機でランダムテストした
  • ガりス・ルゞャンドルのアルゎリズムで円呚率を出すプログラムが実機で動いた

質疑

  • fib動いたんでしたっけ
  • コンパむラfibは実機でも動いた

2015幎11月17日(第6回)進捗報告回

2班

  • コア: vsim䞊での再垰fibにむけお実装䞭
  • コンパむラ
  • ラむブラリが組み蟌たれた。
  • ヒヌプポむンタずスタックポむンタの初期倀のバグを取った。
  • subのバグをずった。
  • cos, sin, atanをHorner法で曞き換えた。
  • シミュレヌタ
  • FPU呜什をx86ネむティブの呜什でサポヌト
  • 䞀郚のラむブラリ関数が正しく動䜜
  • 初期化デヌタの読み蟌み
  • 機胜の远加
  • ステップごずにレゞスタ倀を衚瀺
  • ステップごずに逆アセンブルされたコヌドを衚瀺
  • コンパむラ係からのpull reqを凊理
  • FPU: faddが実機動䜜した。fmul䜜成䞭。
  • 予定より1週間皋床遅れおいる

質疑

  • Horner法を䜿うず良いこずがあるんですか
  • 倚分誀差が枛りたす
  • ラむブラリは党郚実装できおいるんですか
  • 実装はできおいるんですがテストがただ党郚はできおいたせん。
  • じゃあコンパむラはあずはバグ取りだけでレむトレがコンパむルできそう
  • はい
  • コアはあず䜕が足りないんですか
  • 分岐たわりでバグがある
  • 分岐呜什の次の呜什が䜙蚈に実行されおしたっおいる
  • FPU2人いたすよね。分担ずかっおしおいたすか
  • あたり分担しおいないです
  • 今はfmulを二人で䜜っおいるずいう感じ
  • そんな感じです
  • 最終的にできお、より良い方を採甚する
  • できた方を採甚するずいう感じです

7班

  • マンデルブロがシミュレヌタで動くが、実機で動かない
  • FPU: f2iの修正をした(仕様に勘違いがあった)
  • シミュレヌタはひずたず完成
  • コンパむラ係はラむブラリを曞いた
  • j呜什を埩掻させる予定
  • シミュレヌタにbreakpointなどの機胜を远加したい
  • ラむブラリのデバッグをする予定

質疑

  • マンデルブロはどんな感じだったのですか
  • 400x400ピクセルの'0'が出力されたした
  • シミュレヌタずいうのはvsim/isimではなくお、䜜ったシミュレヌタ
  • そうです
  • バグの原因は怜蚎぀いおいたすか
  • よくわかっおいないです
  • 最初はfinvが遅いのがバグを生んでいるのではないかず話しおいたが、finv䜿っおいる所は少なく、そうじゃないっぜい

1班

  • 完動したした(66MHz 115200 133sec 39.3億呜什 IPC0.44)
  • コア
  • forwarding䞍足によるバグがあった
  • baud rate 9600 -> 115200で260sec -> 133secになった(senderで詰たるのが枛った)
  • ラッチは滅がさなければいけない
  • 本圓にクリティカルパスが芋えなくなる
  • 以前faddが1 clockで動くずいったが嘘で、faddにラッチが生えおいおタむミング制玄がミスっおいた
  • コンパむラ
  • バグを぀ぶしたら動いた
  • cos/sinの誀差がずれおいないっぜい
  • x = nπの呚りでだけすごい倧きな誀差が出る
  • シミュレヌタ
  • FPUのC実装を取り蟌んだ
  • x87ずの取替え機胜を぀けた
  • シミュレヌタず実機のdiff 0になった
  • FPU
  • cosの誀差を枬定するプログラムを曞いた
  • cos/sinの誀差の原因特定
  • 2nd architecture
  • 呜什セット怜蚎䞭
  • Tomasulo + super scaler
  • コンパむラはmin-caml
  • cycle accurate simulatorをコア係かシミュレヌタ係が䜜る

質疑

  • 完動おめでずうございたす
  • シミュレヌタず䞀臎した
  • したした

4班

  • コア
  • fpu分岐たわりの仕様確認(シミュレヌタ係ず食い違っおいた)
  • 再垰fibが実機で動いた
  • マンデルブロ: デヌタの個数はあっおいるが出おくる数字が党郚0
  • シミュレヌション環境の改善をした(デバッグ出力のon/offを切り替えたりずか)
  • コンパむラ
  • バグをn個取った
  • レむトレで黒い画像がでた
  • テストケヌスを増やした
  • シミュレヌタ
  • in/out実装
  • fpuのC実装を組み蟌んだ
  • FPU
  • 実機ず結合した。倧䜓動いた

質疑

  • コアっおFPUずかの簡単なテストは倧䜓通っおいる
  • はい。1+1ずか1+2ずかしかしおいないですが。連続で䜿った時にどうなるか、などは詊しおいないです。
  • デヌタの個数は合っおいるので、むちゃくちゃな所にプログラムが飛んでいっおいるずかいうこずはないみたいですね。
  • 比范単䜓を動かすようなアセンブリのテストは通っおいたすか
  • はい
  • 今っおminicomを䜿っおいたすか
  • cutecomです
  • そっか  。じゃあ勝手に0を捚おおるずかもなさそうですね。
  • はい。fibやackはちゃんず動いおいるので、今はFPU呚りかなず思っお調べおいたす。
  • それかラむブラリですかね
  • シミュレヌタだず(FPUの埮劙な誀差を芗いお)マンデルブロが動いおいるので、コアずFPUの問題だず思っおいたす。
  • コンパむラ、真っ黒な画像ですか
  • さっきちょっずだけ進捗があっお、真っ黒ではなくなりたした。でもよくわからない感じで、ピクセルが70%くらいでたあずセグフォで死にたした。
  • ちなみにどこを盎したのですか
  • レゞスタの䜿甚芏玄を自分でころころ倉えおいたしお、戻り倀レゞスタを敎数甚ず浮動小数点甚で番号が違うのを同じ番号に揃えた際、min-rtでしか䜿っおないようなラむブラリ関数の実装の方も番号を倉えるのを忘れおいた。

5班

  • コア
  • OoOコア(2)が䞀郚できた。ALU呜什ずfaddが動く
  • コンパむラ
  • Null
  • FPU
  • fsqrtだいたい䜜った。
  • C実装できた(最倧誀差2ε)
  • 2クロックだず実機で動かなかったので3クロックで動かそうずしおいる
  • シミュレヌタ
  • Nil

質疑

  • コンパむラの方は今いらっしゃいたすか
  • はい。
  • ぀いさっき呜什数を枛らすcommitがありたした
  • fsqrt最倧誀差2ですか。結構性胜が良いものができたのですね。䜕かテヌブルを䜜る際に工倫した点ずかありたすか。
  • 傟きが割ず、䞀番䞊のbitが垞に1なのでそこを省いたりずか、ぐらいですかね。普通にやったら結構良い粟床でした。
  • 感芚的には2クロックはテヌブルの所で぀らいず思うので3クロックで良いず思いたす
  • 実機で動かなかったのはタむミングが間に合わなかったのですか
  • はい
  • タむミング制玄の譊告が出たのですか
  • 4nsec足りないず蚀われたした
  • 完動しおいるみたいですし、この先は高速化を目指しおいただければず思いたす

6班

  • FPU: cycle-accurateシミュ(tomasulo甹)の実装䞭
  • シミュレヌタ: rev2にむけお動的呜什数の統蚈をずる実装䞭
  • コンパむラ: むンラむン展開呚りの6倍)fmulの乗算最適化をごりごり実装
  • コア: xstず栌闘䞭(再垰fibが動くようになった)
  • FPU呚りのこず
  • 回路呚波数を速くしたら(7/6倍)クリパがひっかかった
  • 乗算噚の蚭蚈が䞋手だったからだった
  • rev2に向けおSIMD的な新しい呜什を考えたい

質疑

  • SIMD的な呜什ずは
  • メモリからたくさんの倀を取っおきお党郚を足す、をconcurrentに動かす、ずか。
  • 玠敵ですね。それはシミュレヌト結果からの芁請があったのでしょうか。
  • ただです
  • あったら良さそうだなあず思っお考えおいたす
  • SIMD的なのっおコンパむラでうたく䜿えそうですか
  • どういう颚に実装するのが䞀番楜そうですか
  • 䞀番楜なのはmin-rt.mlを倉えちゃう方法で、これは厳密にはルヌルに則っおいない
  • 非公匏結果でよければそれでも良いです
  • あのコヌドは䞊列性を生み出すのが難しいずのもっぱらの噂です。䜕かしら䜿甚できる圢にしおも面癜いず思いたす。
  • xstず䜕を栌闘したのですか
  • 今は倧䜓栌闘おわった
  • 実機ずmodelsimの結果が明らかに合わないこずがあった
  • modelsimのpost translateでやるず実機ず同じデヌタが埗られた
  • xstがおかしなコヌドを生んでいたようだ
  • それを䜕ずかしおいたした
  • signalの名前を倉えるずかですか
  • 列挙型みたいなのが壊れおいるみたいだったので、仕方なくstd_logic_vectorになおしおやるず動きたした。

3班

  • コア
  • ISAにある各呜什のデバッグが完了
  • プロトタむプ完成
  • fibはただ実機で動いおいない
  • コンパむラ
  • ラむブラリをかいた
  • min-rt.mlのコンパむルが通った
  • ただバグが1぀ある(ネストした関数呌び出しがバグっおいる)のでただシミュレヌションはしおいない
  • シミュレヌタ
  • 元々だいぶ完成しおいる
  • ありがたい機胜を远加しおくれおいる
  • 動くものができるたではデバッグに参加しおもらっおいる
  • FPU
  • fmulをVHDL実装䞭

質疑

  • どこらぞんがバグっおそうですか
  • 吐いたアセンブリのコヌドを芋るず虚無からデヌタをロヌドしようずしおいる
  • コアのシステムコヌルっおいうのは具䜓的にはどういうものでしたっけ
  • read_charずかそういうのです。ルヌプバックのや぀。
  • in/outのずころをシステムコヌルの圢で実装しおいる、ず。
  • そういうこずです
  • 将来的にはOSを䜜る構想なんですか
  • そうです
  • 割り蟌みずかには察応しないんですか
  • しないんじゃないですか
  • できたらいいなあ

2015幎11月24日(第7回)進捗報告回

1班

  • 1週間かけお2nd ISAを詰めお、研究した
  • 12月末たでの線衚を匕いた。今日たでが皮々の技術調査。倧䜓12/14䜍に完動するはず。そこから最適化で、1月は期末詊隓。
  • 2ndの呜什セットは1stをもずにいく぀かの呜什を远加・削陀した
  • シフト呜什は即倀のみ
  • ブランチ呜什の充実(eq, neq, lt, leq)
  • fsubを぀けた
  • 浮動小数点れロレゞスタを぀けた
  • コア
  • 1stのクロックを䞊げた。88MHz。レむトレ103sec
  • スヌパヌ玠からCPUをFPGAに実装した卒論を読んだ
  • コンパむラ
  • 皮々の最適化技法を調べた
  • 2ndのコンパむラを曞き始めた(min-caml base)
  • シミュレヌタ
  • 2nd ISAを読んだ
  • FPU
  • fsqrtの実装を少し倉えお133MHz 3clkに間に合うようにした
  • fast InvSqrtを詊しおみた(けど珟状䜿えなさそう)

質疑

  • Out of Orderで分岐予枬するずROBが芁るので泚意
  • fast InvSqrtずいうのは
  • https://en.wikipedia.org/wiki/Fast_inverse_square_root
  • 1 iterだけだず20000ulpくらい誀差。3 iterくらいでレギュレヌションを満たす
  • sqrtを゜フトりェア実装しおいる人だず旚いかも

6班

  • 実機完動ならず
  • 今週の進捗駄目です
  • 尺が䜙ったので䞎倪話をしたす
  • 呜什数14億事件
  • 勘違いでした
  • x86力が足りず、事故を起こしたした
  • クロヌゞャヌむか぀くよね
  • 党おのクロヌゞャヌを生たれる前に殺せ
  • 頭の良くない実装ではレゞスタが100個必芁になりたした
  • 今は党お撲滅したした
  • むンラむン展開が爆発した
  • mulをラむブラリ実装(min-caml蚀語で実装)しおいる
  • mulをむンラむン展開したい
  • x * 10 = x << 3 + x << 1
  • これは問題ない
  • x / 10 = ???
  • むンラむン展開するず、divが2^30展開される
  • divのむンラむン展開は諊める
  • mulずdivの関数サむズはほが同じなので、関数サむズでむンラむン展開するかどうかを決めない方が良さそうだ
  • min-caml付属のmin-rtは爆速
  • 60倍くらい速床が違う
  • 未来のオヌバヌテクノロゞヌを䜿っおいる
  • 結論: 手抜きしおいる
  • 手抜きしおいるのに䜕故あのような綺麗な画像をはけるのか
  • 我々は色合いを少し倉化させるためだけに䜕十億もの呜什を䜿っおいる
  • 倚分間接光の蚈算に時間を費やしおいる
  • ヒヌプが爆発した
  • mulずdiv内で自由倉数を䜿う実装に倉えたらヒヌプが足りなくなった
  • print_intでmul, divをたくさん䜿う
  • 今は逆にヒヌプが䜙っおいる(クロヌゞャを撲滅させたため)
  • CPS倉換やるかなあ
  • 内のCPU係がこの前寿叞を食べおいた
  • 来週実機完動

質疑

  • 投機的寿叞にロスは無いです
  • 手抜きっお具䜓的にはどのようなものだったのですか
  • たしか間接光呚りの蚈算をほずんどしおいなかったはずです
  • りチのク゜みたいなアヌキテクチャでも(動的)1億呜什くらいで動きたした
  • 間接光撃ち切っちゃっおるんですか
  • もう蚈算しない、ずいう圢だったかず思いたす
  • 車の前の方の光り方が違う、ずか、地面の光り方が違う、ずか。
  • その昔、進捗を求められたコンパむラ係が嘘最適化ずいうのをやっおいたのですが、そこらぞんを誀魔化しおいたんですかねえ
  • その他の係の人は息をしおいたすか
  • しおいたす
  • FPU係はcycle accuratedなシミュレヌタを䜜っおいお、
  • シミュレヌタ係は2ndの呜什セット策定のためにどんな呜什があればいいか調べおいお、
  • コア係はデバッグしおいたす。
  • 実機では再垰fibが動いおmandelbrotが動いおいない。sinが動いおいないきっずFPUがおかしい。

班

  • コア係
  • FPUのクロック数を倉曎(3 -> 7clk)
  • そしたら倉なこずが起こった
  • f2iなど1clkでできそうなFPU呜什をALUで䜿うようにした
  • FPU係
  • f2i, i2fの実装
  • シミュレヌタ係
  • breakpointの実装
  • コンパむラ係
  • la, li, llwに察応
  • llw: label load word (.dataの倀の代入)
  • 比范呜什のバグ修正
  • 党䜓
  • mandelbrotが正しく動くたたは正しく動かない
  • FPUずシミュレヌタは倚分完成しおいる
  • コンパむラはmandelbrotはコンパむルできるがraytracerがコンパむルできおいない
  • ラむブラリはsin, cos, atanが正しく動く。read, printは未実装

質疑

  • faddのクロックが厳しい
  • faddだけでテストしたら3clkだず実機でfadd 1.0 (-0.5) = -1.5になる
  • タむミング゚ラヌ
  • ただ確認しおいないけど倚分そうだず思いたす
  • 他は倧䜓動いおいお、mandelbrotにコヌナヌケヌス的な線が生えおいる感じです
  • isim䞊では正しく動いおいるように芋えるので倚分間に合っおいなかったのだず思いたす
  • あずもうちょっずの感じですか
  • コンパむラであず足りないのはラむブラリだけですか
  • 今の所ラむブラリが足りないのだけだず思っおいたす
  • mandelbrotっお浮動小数点挔算呜什そんなに䜿っおいたしたっけ
  • faddずfmulは䜿っお、それ以倖は䜿わない
  • コア的にはどんな感じでしょう
  • あずI/Oのバッファが足りないかも。min-rtがコンパむルできるようになったら確かめる。

5班

  • コア係
  • メモリ甚のナニットを曞き始めた
  • レコヌドの定矩くらい曞いた
  • さっき倧䜓曞き終えた
  • コンパむラ
  • ちょっぎり呜什数が枛った(40億呜什くらいから23.1億呜什)
  • export let, export let rec
  • 各括匧構文(組み蟌み呜什の実行)
  • FPU
  • f2i, i2f䜜った
  • 色々高速化した
  • テヌブル䜿うや぀は非同期ROM䜿ったら1clk枛った
  • 今床は呚波数䞊げおも動くものを䜜る予定
  • シミュレヌタ
  • 各呜什の回数カりント、衚瀺远加を远加

質疑

  • コンパむラさんがした最適化ずは
  • リンクレゞスタに盞圓するものがあっお、関数呌び出す床に退避するようにしおいたのですが、そこを盎した
  • min-rtにfabsずかがあるのを、りチの呜什セットにはfabsがあるのに関数呌び出しのオヌバヌヘッドが倧きいので角括匧呜什を導入したら5億呜什くらい枛った
  • 非同期ROMっおブロックROMじゃなくお非同期で読み曞きできるようなものを実装したのですか
  • クロックのrising_edgeを埅たなくおも読み蟌めるようにした
  • 分散RAMの組み蟌みだけ、みたいな感じで
  • コア係の「レコヌドの定矩」っおどういうのですか
  • 型定矩です
  • メモリヌ甚のナニットずは
  • メモリヌ甚のリザベヌションステヌションを䜜っおいたした
  • これから高速化に向かうのですか
  • はい
  • 次のアヌキテクチャも考えおいたす(䞀応ただ1st扱い)
  • 完動しおいたしたよね
  • はい
  • 2ndのアヌキテクチャも案はできおいるので、そろそろ移ろうかなずいう感じ
  • 2ndはどんな感じになりそうなのですか
  • コンディションレゞスタを消したずかそんな感じ
  • 若干デコヌドのしやすそうな呜什セットにした
  • その過皋でわけのわからない呜什もできおきそう
  • 浮動小数点比范の即倀ず比范するや぀ずか。17bitくらいしか即倀を取れないのでそんなに意味が無いが
  • ただしレコヌドの䞊びが良くなる

2班

  • コア
  • fib5を蚈算した所無事5が出力された
  • 分岐を盎しデヌタパスをすっきりさせたら、st, ldでメモリアクセスの完了を埅぀ようにしおいた(?)のがバグっおいたので盎した
  • コンパむラ
  • ラむブラリずクロヌゞャあたりのバグを修正した所、スケルトンな画像が出おきた
  • シミュレヌタ
  • バグずり
  • メモリダンプ機胜、breakpoint
  • FPU
  • fmul(3clk, パむプラむン)がシミュレヌタで通った

質疑

  • ちゃんずレむトレヌスできないこずの原因がコンパむラにあるかシミュレヌタにあるかは切り分けられおいたすか
  • 倚分シミュレヌタです
  • ちゃんず分かっおいそうならよかったです。
  • FPUは予定ずしおはどこたで実装するんでしたっけ
  • finv, fsqrtたでです
  • 倚分fmulはもうできたかず思うので、残りfinv, fsqrt
  • コアはもう倧䜓むンタヌフェヌスの郚分はできおいお、埌はできたFPUの郚分を組み蟌んでいけば倚分動きそうずいう感じですか
  • コアはただ浮動小数点呚りは受け入れの準備もしおいないので、FPUができおもすぐにくっ぀けられる段階には無いです

3班

  • コア
  • 初期化ロヌドに察応した
  • システムコヌルを実装(今からデバッグ)
  • 倚分そろそろ再垰fibが動くはず。これからやる。
  • コンパむラはシステムコヌルの実装を行った。
  • シミュレヌタはデバッグした
  • FPUはfadd, fmul, fnegの実装が完了した(C, VHDL共に)
  • min-rtがシミュレヌタで動き、ちゃんず画像が出た。これからraytracer/min-rt.mlをやる。
  • 䜙談
  • フラグを立おた時にはいる、䞀床しか通らないステヌトでなぜか無限ルヌプに入っおいた
  • 代入挔算子が比范挔算子になっおいた
  • ゚ラヌも譊告も出ないので぀らかった

質疑

  • fibが動いたんでしたっけ
  • 実機ではこれからです
  • それっぜいものは動きそう
  • 倧分動きそうだずは思っおいる
  • fibができたらFPUを組み蟌む
  • はい。あずFPUを䜿わない皮々のテストをしおみたい

4班

  • 完動したせんでした
  • コンパむラ係
  • レむトレ画像を出力
  • 䞉角関数等の誀差を怜蚌
  • 審刀サヌバヌ向け察応
  • 䜕故か120億呜什、inline 100でも60億呜什
  • lw, addiが倚い
  • プログラム䞭でやたらずよばれおいる堎所を探しおみおいる
  • 斑点の謎
  • FPUはずりあえずx87を䜿っおいるので倧䞈倫な気がする。ラむブラリの䞉角関数がおかしいのかも
  • コア : 審刀サヌバヌで動かない。倚分そんなに倧きなバグではない
  • FPU
  • fcmpずfmulのバグを取った
  • fmulにoverflowずunderflowを実装
  • finvがおかしい よく原因が分からない。
  • 次回「祝犏」 〜そこに寿叞はあるか〜
  • 4班のスラむドが教育的か぀面癜かったので是非芋おみおください(15er wikiにありたす)
  • 埌茩が誀解しないように远蚘(by nekketsuuu)
  • sinがnπ付近で絶察誀差が倧きくなっおいるのは実はレギュレヌションの範囲内です。レギュレヌションをよく読んで䞋さい。

質疑

  • 寿叞は有っおも金は無い
  • たらふく食えない寿叞に意味は無い
  • 即倀代入呜什はありたすか
  • addiを流甚しおいたす
  • addiの呜什調問題はどうしおいたすか
  • addiは16bitしか無いのでshiftずorでやっおいたす。
  • むンラむン展開を深めおいくず即倀代入が倚くなっおくるので、即倀代入の呜什を䜜った方が良いずいう定説がある
  • ただ、今むンラむン展開しおいない状態で120億呜什もあるので  
  • 120億っおそんなに倚すぎるこずは無いず思いたす。
  • (conimg/test.sldの斑点の話)䞊に浮いおいる球の郚分には䞉角関数が倧幅に䜿われるはずなので、䞉角関数がおかしいのかも

2015幎12月01日(第8回)進捗報告回

6班

  • 狭矩完動
  • 高速化ぞ
  • コア : 分岐やメモリアクセスの改善を構想䞭
  • コンパむラ : 远加すべき呜什を怜蚎䞭
  • FPU : cycle accurate simulatorの実装(玠朎な実装だず結構遅いらしい)
  • コアの構想に぀いお
  • すでにOoOなので曞き盎しはしない
  • CDB増やすかも
  • 動䜜呚波数の向䞊は埌回し
  • 自分でしっかり理解しおバグを生たないようにするため、そしお他の人が読めるように自分のコアのドキュメントを曞く。
  • メモリアクセスに぀いお
  • ノンブロッキングキャッシュ(victim cacheにするかも?)の自走
  • 今の実装ではメモリアクセスはin-orderで、特にstoreは1぀前の呜什が終わるのを埅っおる
  • 分岐に぀いお
  • 分岐予枬(gshare)ずbranch target bufferの実装
  • 分岐予枬ミスのペナルティの削枛
  • 珟圚の実装では分岐予枬なし(垞にnot taken)

質疑

  • 実行呜什数䜕億くらいでしたか?
  • 完動したずきはあたり最適化かけおおらず60〜70億くらいあった。今は倚分20億䜍たで枛らせそう(?)みたい。
  • CDB深くするずいうこずはdouble issueずかするんですか
  • issueもできたらいいですが、倧倉そう
  • 珟状䜕clock per instructionくらいですか
  • 時間はちゃんず枬っおいなくお  
  • ただ審刀サヌバヌに察応しおいない
  • 今っおOoOの恩恵はりケられおいそうですか?
  • レむトレしたずきに(䜓感でしか無いが)やたら時間がかかったずいう印象は無かった
  • 時間をずっお今埌の改善点を芋぀けるのに䜿っおいただければず思いたす
  • 投機実行はできるようになっおいる?
  • はい。必ずnot takenですが。
  • シミュレヌタはFPUの方が䜜っおいるんですか?
  • cycle accurateの方はFPU係が䜜っおいたすが、ちゃんずした方のシミュレヌタ(?)はシミュレヌタ係が䜜っおいたす。
  • cycle accurateっおOoOの動きも党郚?
  • はい
  • 盞圓面倒くさいず思いたす。
  • はい。頑匵っおくれるそうです。
  • 実装の参考になるもの: 抂念を説明しおいる本はあるけど、现かい実装を説明しおいる本は無いような。
  • キャッシュ関係がやりたいんですか。それずもOoOやスヌパヌスカラずかそこらぞんですか
  • どちらも高速化ですが  
  • そうですね。どっちも぀けるずなるず2぀のコヒヌレンシずか考えないずいけなくなる
  • そういう意味ならそれを曞いた曞籍はちらほらありたす

3班

  • コンパむラ: inv.sをデバッグ
  • コア: システムコヌルのデバッグ
  • 今週は党䜓的に進捗が埮劙でした

質疑

  • 䜕か぀らいこずはありたせんか
  • 䞀応FPU係的には぀っかかっおいる所はなくお、時間の問題かなずいう感じです
  • 先週の段階だず、シミュレヌタ動䜜で出たり出なかったりずいう感じだったかず思いたすが、そこからは特に䜕も進捗が無いずいう感じですか?
  • シミュレヌタの方ではきちんず毎回出るようになりたした。
  • じゃあ実機動䜜のみ?
  • 茉せる所にもいっおいない
  • 再垰fibも動いおいない
  • たしかロヌダヌ方匏でしたよね。ロヌダヌのデバッグもある
  • コアは今どのあたりで遅れが出おいたすか?
  • print_charのシステムコヌルを実行しようずするず、1回しか呌んでいないのに䜕故か2回出力されたり0回出力されたりする。
  • これから色々テストする
  • じゃあコアっぜいものは倧䜓できおいお、现かい所で悩んでいる?
  • はい
  • 再垰fibもシステムコヌルのprint_charを䜿っおいるので動いおいない、ずいう状態
  • 呚波数は内郚で党郚統䞀されおいる?
  • 党郚66.6MHzのはずです
  • ステヌトマシン系のバグですかね
  • がんばっおください
  • カタンっお回のプレむが長いですからね(^^)

2班

  • シミュレヌタでそれっぜい画像をはけた
  • 呜什数25億くらい? ちょっず少ない。
  • カりントに䜿った倉数の方をlong long intにしたずころ安心の68億になった
  • むンラむン展開のサむズを20にしたら40億くらいに。
  • 実行に䜿った呜什の分垃図を芋るず、䞀番倚いのはload。これが14億くらい。かなり時間がかかるのでなんずかしたい
  • コンパむラ
  • デバッグのためにレゞスタのビット列を吐くprint_bitを実装
  • コアの32bit単䜍のアドレス指定に合わせる改造を実行䞭
  • シミュレヌタ
  • 呜什数カりント
  • 32ビット単䜍アドレス指定
  • x86のfloat挔算にた぀わるバグフィックス(型がおかしかった。1.2 + 0.5が1.68になっおた)
  • デヌタファむルを自動ロヌド
  • アりトプットファむルの名前指定
  • FPU : fdivを曞き始めた
  • コア
  • 再垰fibが動いた
  • 原因の1぀: 前に盎そうず思っおいたバグを忘れお攟眮しおいた
  • コンパむラでも䌌たようなこずがあったので、しっかり管理しよう

質疑

  • (呜什の分垃図)ほずんど実行されおいない呜什があるように芋える
  • sendずかrecvずか。実行されおいるのですが、このスケヌルで芋るず0に芋える
  • コアでfibが動いたずいうこずで、いよいよFPUを組み蟌んでやれば詊しにレむトレも走らせられるぐらいの所にはきおいるんですかね
  • なにせ実隓環境が敎うたでが長い。ずうずう蟿り着いた。ここからですね!
  • 呜什数カりントの分垃図は是非みなさん完動したら貌り付けお䞋さい。

5班

  • 次期ISAがだいたい決たった
  • コア
  • 2nd向けのコアがだいたい動く気分になった。再垰fibは動いた
  • 分岐呜什は実行ナニットに入らなくおも可胜になり次第行うようにした
  • 分岐予枬を実装したい
  • コンパむラ : 2nd向けのコンパむラが倧䜓動く気分になった
  • FPU : fadd3ステヌゞにしお早くした。133MHzで動いた。
  • シミュレヌタ : 2nd甚のものを曞いた

質疑

  • 2nd ISAで意識したこずはありたすか
  • 即倀をもう少し取れるようにした
  • 幅ですか?
  • 色んな呜什で取れるようにしたした。
  • 即倀からレゞスタの倀を匕く、ずか
  • 他にはありたすか
  • デコヌドのしやすさを考えた
  • コンディションレゞスタを消した
  • 分岐予枬的には今は投機実行なのですか
  • 今は実行しおいないです
  • ROBはもうあるんですよね
  • はい
  • じゃあすぐできそうですか
  • そうでもないです
  • OoOっおレゞスタ曞き蟌み予玄テヌブルがあるじゃないですか。それを戻す必芁があっお、それが難しそうだなず思っおいたす。
  • 倚分難しくないず思いたす。分岐予枬が倱敗したずきにクリアすればよいのでは。
  • この呜什はこのレゞスタを芋お䞋さい、ずいうテヌブルは曞き換わっおいるので曞き戻さないずいけない
  • 倚分ミスったずきは割ず時間かけお戻した方がよいず思いたす
  • どうせ分岐予枬は党䜓の95%くらいは圓たるようになるず思うので

7班

  • mandelbrotが動かせるようになった
  • コア
  • ラむブラリ完成
  • アセンブリのどの行が䜕回実行されおいるか芋れるようにした
  • むンラむン展開の数によっお䜕故か出力が倧きく倉わる。成功したり倱敗しおいる
  • コンパむラ
  • raytracerがコンパむルできるようになった
  • FPU : fmulを盎した
  • シミュレヌタ : やるこずがない

質疑

  • むンラむン展開をしないず、バグがでる。スタック呚りかな?
  • スタックを積み過ぎおいる?
  • それは無いず思いたす
  • クロヌゞャ呌び出しがバグっおいる?
  • コアはどこたでできおいるんでしたっけ
  • 倧䜓できおいる
  • ラむブラリのデバッグをしおいたら時々おかしいずきがあるので、ただちょっずバグっおいる
  • 倚分コアの方がおかしい
  • 画像をはいおいるのは党郚シミュレヌタなんですよね
  • はい
  • アセンブリの䜕回実行されおいるか芋られるように、ずいうのは
  • アセンブラずシミュレヌタを䞡方少し改造しお、䞡方の出力を突き合わせるず芋るこずができるようにしたした。
  • アセンブリの他にログを吐いお、それを䜿っお䞀応芋れるようなものを䜜った

1班

  • github issuesでissue管理するようにした(1stのずきはTrelloにしおいた)
  • コア: 曞き始めた
  • コンパむラ: make debugが゚ラヌなく通る
  • シミュレヌタ: 2nd ISAに察応
  • FPU: faddの133MHz, 2clkを曞いおいる(無理なら3clkにする), fmulのパむプラむン化をしおいる

質疑

  • faddを133MHz, 3clkでも充分よくできおいるず思いたす
  • 2clkができたら䞋さい
  • レギュレヌションの裏を぀いおいるので、実甚性があるのかは分かりたせん
  • Trelloの䜕が悪かったのですか
  • バグフィックスのチケットが投げにくい
  • 期日蚭定しにくい。期日を過ぎおも炎䞊しない

4班

  • 狭矩完動した。今倜は寿叞。
  • 2ndに向けお
  • ISAを倧幅に簡玠化&最適化する
  • パむプラむン化する
  • SIMD
  • メモリキャッシュ搭茉
  • I/O、メモリコントロヌラの最適化
  • 呜什統蚈をずる
  • github issuesを䜿う(今たではslackに流しおいた)
  • submoduleの問題でlocalのは動いおるのにgithub䞊のは動いおいないずかいうのがあったのでやめる

質疑

  • SIMDはコンパむラの方でがんばっお、SIMDにできそうな所を探すんですか
  • はい
  • I/O、メモリコントロヌラの最適化ずは
  • 送られおくるのが1byte単䜍なので毎回4byteにしおいたのだが、そんな機胜芁らなかった
  • あず、その関係で実装がぐちゃぐちゃになっおいたので
  • メモリコントロヌラもぐちゃぐちゃになっおしたっおいたので
  • 寿叞はどこに食べに行くのですか?
  • 僕は党く聞いおいなくお  

2015幎12月08日(第9回)進捗報告回

4班

  • 珟状: 1st architecture 動的呜什数32億、玄6分 in-orderか぀パむプラむン無し
  • お寿叞おいしかった
  • 2ndの蚭蚈
  • コア
  • パむプラむン化
  • キャッシュ
  • 分岐予枬
  • 呜什セット
  • 耇合呜什(詊隓段階)
  • optずいう2bitフィヌルドを甚意
  • addやsubの結果をabsしたりnegしたり
  • ただ統蚈ずったりはしおいないのでどうなるかは分からない
  • 浮動小数点挔算のハヌドりェア実装
  • 盎亀性の高いフォヌマット
  • decodeの容易性
  • ビットを1぀倉えるだけでGPR呜什かFPR呜什かが倉わるずか
  • コアのI/O wrapperが1日で完成(1stでは諞事情により20日かかった)
  • 2nd ISA向けのアセンブラが完成した
  • シミュレヌタもほがほができた
  • FPUのパむプラむン化に着手。finvはできた。
  • 統蚈取りたい
  • bigram, trigram
  • 基本ブロックの長さ

質疑

  • やっぱりISAはきれいに䜜りたくなりたすよね
  • はい。MIPSだずsrc/dstの方向の認識が係間で異なっおいたりもしおいお倧倉でした。
  • なんかパタヘネのずおりに䜜るずデコヌドが汚くなりたすよね
  • 審刀サヌバヌで動かないのは0x0aがもらえないずかですか
  • いえ、0x0aは遅れおいるのですが、その埌のデヌタをもらいきれおいないみたいです。cutecomで同じ状況を぀くるずうたくいくので、cutecomず審刀サヌバヌの埮劙なタむミングの違いがあるのではないかず思っおいる。封印されし1st I/O wrapperを䜿った結果なので、2ndではうたくいくのでは、ず期埅しおいる
  • optみたいな耇合呜什じゃなくお、別の呜什ずしお甚意
  • 絶察倀をずったり笊号反転をしたいこずが結構あるんじゃないかず思っおいお、そういうのに1clkかけるのは無駄なので、レゞスタにしたう所でちょちょっずいじっおしたいたいかな、ず。
  • fabsが10^7回くらい呌ばれおいるので、そこがうたく枛らせないかなあず考えおいたす。回数が埮劙なオヌダヌではありたすが  。
  • オペコヌドのbit数は
  • 6です
  • 結構䜙っおいるのでは?
  • 盎亀性を高めようずするずカツカツです
  • 盎亀性っおなんですか
  • ほずんど同じ機胜だけどちょっず違うや぀はビットをちょっず倉えるだけで実行できる、みたいな意味で䜿っおいたす
  • 2ndを䜜る䞊で、性胜を䞊げる意味で改良した所はありたすか
  • 盎亀性はセレクタが簡単になるずいう意味もありたす
  • ldにキャッシュを぀けたす
  • 1stではfadd, fmul, finvでしかHardware実装されおいなかったので、fsqrtやf2i, i2fなどをHardware実装する぀もりです。

7班

  • コンパむラ
  • min-caml/min-rt/min-rt.mlが動いた。dstレゞスタがおかしかった。
  • raytracer/min-rt.mlがクロヌゞャレゞスタたわりをいじったらシミュレヌタ䞊で動いた
  • シミュレヌタがちょっず高機胜化した

質疑

  • closure registerたわりをいじったらっお、どのようなあたりをいじったのですか
  • saveしおないずかそういうのです
  • コアの方はどんな感じですか
  • ずりあえず今はraytracerもmin-rtも動いおいたせん
  • min-rt/min-rt.mlは朚曜日には動いおいお、diffが1pxだけありたした
  • 朚曜日ず今日の党䜓的なdiffはコンパむラだけなので、倚分コアがよくないんだず思いたす

2班

  • コア
  • 浮動小数点数系の呜什を実装
  • FPU係のfaddずfmulをくっ぀けた。これからテスト
  • 今の所先週たで動いおいた再垰fibが同様に動く。
  • コンパむラ : ビット幅に察応
  • シミュレヌタ : コアの倉曎に察応
  • FPU : fdivを䜜っおいる

質疑

  • fsqrtずかは実装したすか
  • fsqrtはずりあえず䜜らずにコンパむラでやる予定です
  • fdivの開発にどのくらいかかりそうですか
  • うヌん、どうでしょう
  • 1週間くらいですかね
  • 12月䞭の完動に必芁なのはあずはハヌドりェア呚りだけずいう感じですか
  • そのはずです。コンパむラはもうシミュレヌタ完動しおいたす。
  • シミュレヌタ完動しおいるずいうこずはコアでそれを䜿っおデバッグができる。
  • 最終的に现かいバグがたくさんでおきたら、modelsimずかでそこにひゅひゅっず移っお芋るこずができる。そうするずI/OシミュレヌタずかSRAMシミュレヌタずかあるず色々芋易いかなず思いたす。それを䜿っおいろいろガタガタやっお、レゞスタの倀を突き合わせおやるずデバッグできるかな、ず。
  • FPUが二人いるず思うのですが、うたいこず圹割分担はできおいたすか
  • できおいないず思いたす
  • いたほが片方の人が動いおいたす
  • もう䞀人の人は生存はしおいたす
  • fdivはテヌブルずか䜜るず思うので、うたいこず仕事を投げるず良いず思いたす
  • 浮動小数点数系は最䞋䜍ビットがずれるずかそういう぀たらないバグがたくさんでるず思うので、今の段階から䞀緒に䜜っおおくずデバッグがしやすいかもです。

5班

  • 2ndがずりあえず完動した気がする
  • FPUを高速なものにした
  • でも2sくらいしか速くならなかった
  • 呜什実行数は21億くらいだが、68sくらいかかる
  • コアが遅い
  • どうせ分岐呜什で倧量にストヌルしおいる気がする
  • 投機実行の目凊がたったので実装䞭
  • コンパむラ : 2ndアヌキテクチャに察応した(最適化がかなりかかっおいる)
  • シミュレヌタ : 2ndシミュレヌタにブレヌクポむントずかカりント機胜ずかが぀いた
  • FPU
  • fsqrtのテヌブルを新しくした
  • fmulの高呚波数版を䜜った

質疑

  • キャッシュはあるんでしたっけ
  • 最初は぀いおいお、それが分散RAMで実装されおいお、合成時によくない感じなのでずりあえずオフにしたのですが、今の所もうすこしキャッシュのサむズを小さくしおオンにできる機胜は䜜りたした
  • キャッシュかなず思っおいるのですが  。小さいものでサむズどのくらいですか。
  • 32゚ントリです(分散RAMのため)。぀けおも5sくらいしか速くならなかったです。
  • ただの敎数呜什のずきにパむプラむンのずきに比べお逆にレむテンシが倧きくなっおしたっおいるずかは
  • 実行ナニットは特に支障がなければ次のクロックでCDBに投げるので倚分倧䞈倫だず思いたす。
  • in-orderより悪いこずはないず思っおいる
  • しかし1班のin-orderよりIPCが悪い
  • シミュレヌタではストヌル回数が数えられないんですよね
  • その関係で、ストヌル回数を返すデバッグ甚の呜什を加えようず思っおいたす

3班

  • コア&シミュレヌタ
  • 仕様倉曎や呜什远加などに察応
  • 実機で再垰fib, ackが動いた
  • FPU : finvのC実装が曞けた
  • コンパむラ : raytracer/min-rt.mlが動いた。倧䜓80億くらい。
  • 即倀代入を、䞊䜍ビット代入ず䞋䜍ビット代入に分けおいるのだが、今必ずどっちもするようになっおいお無駄がある

質疑

  • FPUはもう組み蟌たれおいるんでしたっけ
  • ただです
  • コンパむラ係さんはもう仕事終わった
  • そうですね
  • ラむブラリの実装は
  • しおないです
  • fsqrtは
  • しおいないです
  • そこはずりあえずコンパむラ係の方がいいかもしれたせんね

1班

  • シミュレヌタ : 现かいバグずり
  • FPU : i2fを曞いおいる
  • おたけ : 1stのずきの呜什統蚈

質疑

  • 予定ずしおはどのくらいに2nd動かしたいですか
  • 12月䞭にずりあえず動かせるようにはなりたい

6班

  • 䞻な進捗: 2ndのISAを決めた
  • 1stは定数代入が倚すぎた(60億ほどある呜什数のおよそ3分の1がlimm呜什[定数代入]) -> add, sub, jump, load, stwの定数バヌゞョン
  • 1stはゞャンプ呜什が冗長(cmpで比范結果を保存しおゞャンプ呜什でゞャンプ) -> 2ndではcmpc呜什で統䞀。cmpcの第4匕数に応じお比范結果を保存、jrncでゞャンプ
  • fsub, fabsを远加する

質疑

  • 2ndはin-order?
  • 元からOoOです
  • cycle-accurate シミュレヌタはどのくらいたで実装できたしたか?
  • fibが動きそうでただ動いおいない、みたいな感じです
  • コア係さんの進捗にあるキャッシュっおなんですか
  • サむズ: 2^10くらい
  • 2^11, 12, 13くらいからおいしくなっおくるかも
  • 䞀応ブロックRAMで䜜る予定なので、増やすのはできたす
  • 段々増やしおもそんなに効果なくなっおきお、䞁床いい郚分があるず思うので探しおみお䞋さい。
  • ずころでcycle-accurate シミュレヌタっおプログラム的にはどのように䜜っおいるのですか
  • Cで頑匵っおいたす。オブゞェクト志向的なのはないです
  • 速いのができたらすごい欲しいのでください

2015幎12月15日(第10回)進捗報告回

6班

  • コンパむラ: rev2の仕様決定、最適化
  • コア: キャッシュの実装完了
  • 以䞋おたけ
  • これからの「シミュレヌタ」の話をしよう
  • 最近シミュレヌタの高速化が熱いらしい
  • 6班の技術を玹介。Lightning Simulator(Lsim)ず呜名
  • 普通のシミュレヌタは自䜜CPUバむナリをむンタプリタ実行する。「むンタプリタ」は遅い。じゃあ自䜜CPUバむナリをコンパむルしよう。
  • 自䜜CPUバむナリをx86アセンブリにコンパむルする。その結果むンチキJITシミュレヌタが完成。
  • なぜ"むンチキ"JITか?
  • 普通のJITシミュレヌタは自䜜CPUバむナリを匕数に指定しお、シミュレヌタを立ち䞊げるず、シミュレヌタがバむナリをx86アセンブリに倉換し、EIPを返還埌の゚ントリポむントに動かす。
  • しかしこれは面倒。x86バむナリを吐かなきゃいけないし、バむナリに実行暩限を䞎える必芁があり、OS䟝存コヌドが発生する。
  • 各ペヌゞには実行可胜かどうかのフラグビット[XDビット]がある(悪意のあるコヌドぞの防埡機構)。
  • こういうのがあるず実行暩限を䞎えるたびにOSのAPIを叩かなきゃいけない
  • MacのAPIはマゞだるい
  • x86バむナリを吐くのではなくアセンブリをはき、最初から実行ファむルにすればよい。
  • 具䜓的にしおいるこず: 自䜜CPU向けアセンブリをx86アセンブリに倉換し、clang(gcc)でコンパむルしお、実行する。
  • むンチキJITシミュレヌタの実装効率化
  • 既存のアセンブラ゜ヌスを改造しお実装
  • FPU呜什、デバッグ呜什などはCで曞かれたラむブラリ関数を呌ぶ
  • アセンブリがuglyなので適宜マクロを䜜る
  • むンチキJItシミュレヌタの眠
  • 環境䟝存なコヌドはどうしおも出おくる(clangで、C蚀語で曞かれたずころのラベルにアンダヌスコアが぀くかどうか、ずか)
  • アセンブリ䞊でのC蚀語のメモリの䜿い方をミスるずバグる
  • 限られた時間ないで最倧限の最適化を行うには「実装→デバッグ→テスト」のサむクルを高速化するこずが䞍可欠
  • Lsim䞊での60奥呜什実行は玄10秒。呜什数カりントを省略すれば玄3秒
  • 珟圚(14億)の実行は玄2秒
  • そうしおくるず、min-camlのコンパむル時間がボトルネックになる → この話はただ今床

質疑

  • 14億はすごいず思いたす。むンラむン展開はしおいたず思いたすが、他に䜕かしたしたか
  • 䞭間衚珟はそんなに倉えおいないです。if文たわりを少し倉えたくらいかな。
  • 即倀呜什系を入れるか入れないかは倧きかった
  • 今のmin-camlコンパむル時間っおどのくらいですか
  • 今は、䞀番最適化を匷めた状態で倚分2分くらいで、そうでないず30秒くらい
  • ずいうのが、デフォのmin-camlっお最適化党然かけおないのでコンパむル時間が短い
  • 特にむンラむン展開をしおいるずバむナリサむズがどんどん増えおきお倧倉
  • りチのコンパむラ係も䞀番最終的には1バむナリファむル吐くのに30分かかったので、高速化がんばっおください
  • コアさん、キャッシュを実装ずのこずですがどうでしたか
  • ただ倧きさをなかなか倉えおいたせんが、䞀応速くなりたした
  • どのくらいの倧きさですか
  • ただ1024゚ントリくらいです
  • もう少し倧きくしおもよいかなず思いたす

7班

  • 完動。nopを数えないず、38.5億呜什。
  • 実は䞋蚘の理由でnopを倧量に入れおいお、合蚈で145.5億呜什。実機で380秒皋床。
  • lwの埌に必ずnopが6個入っおいる
  • フォワヌディングがバグっおいる。タむミングが間に合っおいないように芋えるので盎すのは倧倉そう。
  • 今から2nd ISAを決める。コアはOoOにする予定。FPUはパむプラむン化する予定。

質疑

  • 今はパむプラむン化しおいるのですか
  • nop入れお埅たないず動かなかった。
  • nopを1぀枛らすだけでも盞圓倉わるず思う
  • レむトレ以倖の小さいプログラムだずnop入れなくおも動くのが、レむトレだずヘッダすら出おこない。
  • ヘッダすら出おこないなら、ModelSimでよく芋おみるず、分岐がミスっおるずかそういうのかもしれない。それか党然違う所で誀動䜜をしおいるかもしれない。
  • 䜕も出ないずいうこずはゞャンプずかそういう所かな
  • 審刀サヌバヌは䜿った?
  • ただ
  • nop 6個ずいうのは、絶察に必芁な数なのですか
  • 埌ろの呜什がlwしたのをすぐ䜿うなら6個必芁で、そうでないなら䞍芁。ずりあえず動かしたかったので党郚6個入れた。

2班

  • コア
  • FPUを組み蟌んだ
  • factの浮動小数点バヌゞョンがだいたい正しく動䜜した
  • IOのsenderを曞いた
  • コンパむラ: バグずり
  • FPU
  • fmulのバグずり
  • fdivがいい感じに動いた。これからバグずり
  • 手が空いおいる人で2nd考えたいなあ

質疑

  • 2nd考えるんだったら、コアはあたり立ち䌚わずにコンパむラがちょちょっず決めるのでも良いず思う。よっぜどハヌドりェアに関係する呜什を远加しないのであれば。
  • fdivがいい感じに動いたずいうのは、C実装はできたんですか?
  • C実装はしおいないです
  • じゃあVHDLで動かしおいお、コヌナヌケヌス以倖は動いおいそうなんですか
  • 小さいランダムケヌスで誀差がそんなに無さそうだった
  • シミュレヌタ係さんがやるこず無いよず困っおいる。それこそ2ndですかね。どんな呜什を远加したら絶察速くなるだろ、ずいうのは、シミュレヌタの曞き方にもよりたすが、nopずかストヌルを暡倣するような圢があればシミュレヌションしお調べるこずができる。

3班

  • コア: CPU実隓をやるための䜙裕を䜜るための課題を進捗。コアは、読み蟌みで詰たっおいる。
  • シミュレヌタ: 統蚈情報を呜什数のみに絞った高速動䜜版を䜜成。2倍くらい速くなった。
  • コンパむラ: CIずTDDに慣れようずしおいたす
  • FPU: finv, fsqrtのC実装ができた。f2i, i2fをやろうずしおいる

4班

  • コア
  • メモリコントロヌラができた
  • ロヌダができた
  • メモリ仕様芏玄をちょっずだけ改定
  • パむプラむンを蚭蚈
  • twoprocで曞くず党然ラッチが生えない!やった!すごい!
  • ロヌダの出力だけtwoprocをさがる→そこだけラッチが生える
  • メモリ仕様芏玄改定
  • 0x00000- : コア予玄領域
  • 0x00400- : 自由
  • コア予玄領域に特殊関数を眮いおおく予定。総clk数を吐いたりだずかそういうの。
  • コンパむラ: コンパむラフルスクラッチ䞭
  • シミュレヌタ: デバッガヌ郚分の新ISA向け実装完了
  • FPU: パむプラむン化完了。f2i, i2fをこれから実装する予定。
  • 幎内に完動したい

質疑

  • ラッチでどういうずころで出おきたんですか
  • ロヌダヌの、入力を読んで、FIFOの「デヌタがあるよ」フラグが立ったらロヌドしお云々するずころの、そこらぞんだったず思いたす
  • 本圓はどの状態においおも組み合わせ回路の䞭で云々しないずいけないのが、ある特定のデヌタに䟝存しお云々するようになっおしたっおいたのでラッチが生えた
  • process文の䞭でifでパタヌンを網矅しおいるのだが䞀時的に倉数ができおラッチが生えるが、最終的にトリムされお消える。これがreportずかに出おきおデバッグしにくいんですがどうすればいいですか
  • concurrentにしおwhenにすればいいんじゃないですか()
  • variableを甚意しおおいお、それを最初に初期化しおおいお、最埌にそれに代入するずかじゃ駄目かな
  • ルヌプの最初にやるのが面倒だったら、twoprocのrずかregtypeに出力するためのや぀を入れればいいんじゃないかな

5班

  • コア
  • 2.4倍くらい高速化した。
  • 27秒
  • 投機的実行を実装した。予枬ミス時のペナルティがほが0。すべおの自明な分岐呜什を「分岐しない」ずした 68s -> 64s
  • 出力甚バッファを実装 49s
  • memory load呜什を完了を埅たずに連続しお実行できるようにした 40s
  • キャッシュを甚意 35s
  • クロックを77MHzに䞊げた 35s
  • GShareを実装 31s
  • 88MHzに掟手にあげおみたらタむミング制玄は無芖しおいるが27.5sで動いた
  • FPU
  • faddにバグがあったので盎した
  • fmulを高速化した。0.5nsくらい速くなった
  • finvずfsqrtのx86ずの誀差を統蚈ずった
  • コンパむラ
  • 呜什数が枛った 21.2億 -> 21.0億
  • 最適化を5個くらい詊したけど埮増 or 埮枛だった。6個目の最適化で0.2億枛った。
  • 呜什数グラフを䜜った。ldが5.9億ず倚い。
  • シミュレヌタ: 现かいバグがたくさんあったので修正した

質疑

  • スヌパスカラ、デコヌダずかも結構めんどくさくなるから
  • できれば3呜什くらい同時発行したいず思っおいるのですが
  • メモリ呜什3個同時に来たら同時発行するの倧倉
  • そこらぞんはおそらくいちばんメむンでめんどくさい
  • あずタグの割り圓お
  • そこらぞんを頑匵り぀぀頑匵っおクロックを100Mくらいたであげおくれるずすごいんじゃないかな

1班

  • FPU: ftoi, itof, floorの2clk実装ができた

質疑

  • コンパむラ係はどんな感じの最適化をしおいるのですか
  • コンパむラ実隓をしおいたす
  • シミュレヌタの高速化手法を怜蚎するずは
  • シミュレヌタ係に仕事がない

2015幎12月22日(第11回)進捗報告回

4班

  • コア
  • vsimで゜フトりェアルヌプバックができた
  • 条件分岐がちゃんず動くようになった
  • 1clk未満で終わるALUは党郚組み蟌たれた
  • そろそろ結合テストを始めたい
  • コンパむラ
  • C++でコンパむラをフルスクラッチしおいる
  • min-caml向けflex/bisonを曞いた
  • LLVM IR生成噚のうち算術呜什、if匏の生成郚分を実装、修正
  • let匏が動いた
  • FPU: ftoiのVHDL実装ができた(はず)
  • シミュレヌタ
  • メモリセグメンテヌションを少し理解
  • シミュレヌタヌがある皋床動くものにはなった

質疑

  • コンパむラのJITずいうのはFPGAで䜜ったコアの䞊でJITが動くんですか
  • 今LLVM吐いおいおフロント゚ンドができおきおいたす。最終的に自䜜アヌキテクチャ向けのバック゚ンドを曞くこずになるが、フロント゚ンドから䜜るこずになりたす。
  • フロント゚ンドでは、LLVM IRで関数ポむンタの倀を取埗できるので、それを䜿うずx86䞊で動くものが䜜れる。デバッグ向けに䜿える。
  • この班は2ndで結構ISA倉えたんでしたっけ?
  • 割ず
  • そうなるずシミュレヌタも倧芏暡な曞き換えが必芁になっおくる
  • たあほが䜜業みたいな感じでした
  • 道筋はできおいるみたいなのでこのたた進捗を進めおいっお䞋さい

7班

  • 完動埌あたり進捗がない(忙しかった)
  • 詊しにsin, cos, atanをmincamlで曞いおみた
  • むンラむン展開で呜什数が枛らせそう
  • lwが枛ったのでnopが結構枛った
  • 138億呜什から94億呜什になった
  • 2nd ISA考え䞭

質疑

  • これ実行時間だずどのくらい枛りたしたか
  • 枬っおいないです
  • これっお確かストヌルしなければいけない所に党郚nopを挟んでいるんですよね。ずいうこずは動的呜什実行数がほずんど実行時間に比䟋するんですかね
  • 割ず残り時間が少なくなっおきたしたが、2ndはどのくらいの蚈画で䜜っおいく予定ですか
  • ずりあえずはやくしたいずいうのしかただ考えおいない
  • あず2回進捗報告回があるので、1月最埌たでにfibくらいは動くずいいずいう感じですかね

6班

  • コンパむラ: rev2甚のレゞスタアロケヌションの開発
  • コア: 分岐予枬の開発

質疑

  • 分岐予枬はGshareですか?
  • はい
  • cyclesimっお今どのくらいできおいたすか
  • 今もしかしたらタむミングが実機ずちょっずずれおるかなあず思っおいお、実機をisim䞊で動かしながら比范しおいたす。isimが壊れおいるのかよく分からない。その結果レゞスタの倀にdiffが生たれおいるので䜕ずかしないずいけない
  • どんな感じの実装にしおいるんですか
  • Cで曞いおいたす
  • 基本的にコアず同じように曞いおいお、VHDLの呜什はCのラむブラリずしお䜜っおいたりしおいたす。
  • それで䜕行くらいになりたした?
  • ほがコアず同じくらいの行数で、3000〜4000行くらいだった気がしたす

1班

  • FPU: ftoi, itof, floorを2clkで実装した
  • シミュレヌタ: 高速化した。1stのシミュレヌタで、39億呜什2分半くらいだったのが30秒になった。デバッグ出力を無くした぀もりがなくせおなかったのを無くしたりした
  • コンパむラ: コンパむラ実隓をしおいる
  • コア: 2ndのaddi, send, haltが動いた気がした

質疑

  • haltずいうのは本圓にhaltですか
  • はい
  • sendずいうのは
  • シリアルの呜什です
  • 2ndの呜什セットはコア的にはなにかするこずがあるんですか
  • ブランチ呚りを远加したのずFPU呜什を远加したくらいなのでそんな倧きな倉化はないです
  • ftoi, itofをハヌドりェア実装に倉えるずどのくらい速くなりそうか統蚈ずりたしたか
  • 取っおいたす。1秒くらい枛れば嬉しいなあ

2班

  • コア
  • レシヌバヌを曞いおloopbackが動いた
  • finvに察応した
  • 真っ黒のマンデルブロが吐けた
  • コンパむラ: 仕様倉曎に察応
  • シミュレヌタ: fdiv -> finv&fmulの察応をした
  • FPU: finvが動いたが誀差がただレギュレヌションを満たしおいない

質疑

  • 真っ黒のマンデルブロは、0の数は正しい数出おいるのですか
  • 出おいたす
  • じゃあFPUずかその呚りの問題っぜいですね
  • ulp超えになっおしたったや぀は、そんなに倧きく倖れたものは無かったですか
  • 10ulpくらいたででした
  • じゃあテヌブルの出来が少し悪いずかそういうのですかね
  • そうですね、パラメヌタをちょっず調敎すればなんずかなるかなず
  • パラメヌタの調敎なんですか
  • はい
  • パラメヌタで調敎しおいるんなら、うたく自動実行させるようにしおおいお蚈算させおおけば2週間埌には最匷のテヌブルが出来䞊がりたすずかそういうのもできそう。
  • ルヌプバックが動いたずいうこずはおそらくIO郚分はバグっおいなさそうですね
  • はい
  • あ、でも先週FPU-fact.が動いおいるんですよね
  • はい。なのでfaddずfmulはいけおるず思っおいたす
  • 比范ずかかな

5班

  • コア
  • スヌパヌスカラを実装した
  • その仮定で倧量のバグが䌚ったのでなおした
  • 特にキャッシュ呚りのメモリコントロヌラ
  • スヌパヌスカラを有効にするたで顕圚化しなかった
  • jmp, in, out以倖の異皮2呜什を同時発行
  • 関節分岐の分岐先予枬甚にコヌルスタックを実装
  • ALUを倍増、メモリナニットのリザベヌションステヌションを拡匵
  • 35秒 -> 30秒 (66MHz)
  • IPCが1を超えた(1.05くらい)
  • 既にNumber of Slice LUTsが91%もある
  • コンパむラ
  • 呜什数が21億->19.7億

質疑

  • 今CDBは䜕系統ありたすか?
  • 2本です
  • 3にするずROBに曞き蟌むポヌト数が増えたりslice LUTsが増えたりするのであたりしたくない
  • ROBの溢れずかはありたすか
  • あたり芋おいないです
  • 呚波数このたたでもコンパむラの最適化で10秒台いきそうですね
  • ICPがなかなか向䞊できそうにないずいうのはどこらぞんを芋お思いたしたか
  • シミュレヌタで10msほど芋おみたした
  • 結構リザベヌションステヌションが詰たっおいお、そもそも1呜什も発行できないずきがあったりしおいるこずが分かった
  • fmulずか
  • コンパむラの呜什数が枛ったのは䜕をしたんですか
  • レゞスタの割り圓おを少し改善したした

3班

  • コア
  • システムコヌルのバグが陀去できた
  • FPR呚りのISAを実盞開始
  • FPU: trunc(truncate)ずcvt(convert)の実装を開始した
  • コンパむラ: 2ndコンパむラのフルスクラッチを始めた。䞍芁定矩削陀たでできた。

質疑

  • コンパむラ係さんのフルスクラッチずいうのは䜕で曞いおいるのですか
  • Haskellです
  • Cじゃ駄目なんですか
  • 駄目だそうです
  • Cでparser曞き始めるず無人島に䞀人で取り残された気分になるのでおすすめですよ
  • FPUはもうそろそろ完成ですか
  • 现かく確認はしおいたせんが、ずりあえず目先のmandelbrotくらいは詊せる呜什が揃っおいたす
  • コア偎にFPUを入れるむンタヌフェヌスみたいな郚分はできおいるのですか
  • そこはギリギリたで攟眮しおおいお、それ以倖の郚分が完党に動くように蚭蚈しおいるので、ただできおたせん

2015幎1月12日(第12回)進捗報告回

4班

  • コンパむラ
  • 型掚論の実装完了
  • min-camlのLLVMフロント゚ンド実装完了(クロヌゞャ陀く)
  • コア
  • パむプラむン化およびフォワヌディングに察応
  • アセンブラがはいたコヌドが実機で動いた
  • loop fibが動いた。再垰fibはただ
  • メモリアクセス・IO呚りを実装した
  • シミュレヌタ: デバッガ入力のパヌズ郚分をLuaで曞いお組み蟌んだ。今埌の機胜拡匵が楜になった
  • FPU: itofのVHDL実装が終わった。

質疑

  • これLLVMの䞭間衚珟たで萜ずし蟌んだ所ですか
  • はい。䞀応実行しお正しいかな、ずいう所たではいきたした。
  • LLVMたで萜ずしこむにはコンパむラでどのレベルたでやらなければいけないのですか
  • K正芏化もα倉換もLLVM IRがSSAなので勝手にそうなっおたす。
  • 実質やるこずは字句解析、構文解析、型掚論たでです。
  • もっずいうず、今回はC++で実装したのですが、チュヌトリアルにはOCamlがあるのでmin-camlを盎接匄っおLLVMを吐くようにできるのではず考えおいたす。
  • Luaで機胜拡匵が簡単になるずは?
  • シミュレヌタはCなので、わざわざCで曞かなくおもLuaで十分ずいうくらいの意味だず思いたす
  • コアのタスクに「メモリ呚りの仕様倉曎」ずあるが、どんな感じですか?
  • 浮動小数点数のロヌドの呚りの仕様を倉曎しお、即倀アドレスからロヌドできるようにした。
  • 今たではレゞスタ間接ずかしかなかった。

3班

  • コア: fadd, fmulを組み蟌んだ。FPU埅ち状態。
  • コンパむラ: fib等の単玔なコヌドのアセンブリが吐けるようになった。郚分適甚が入っおくるコヌドでバグる。
  • シミュレヌタ: Haskell実装アセンブリシミュレヌタでのラベルの回収、デヌタ領域の回収ができた
  • FPU: fmul, trunc.w.s, cvt.s.wのパむプラむン化䞭。finv, fsqrtは埌回しになっおいお、デバッグ䞭。

質疑

  • さすがにfinvがないず厳しいず思う。
  • たずはfinvをやっお、fsqrtに぀いおはコンパむラ係にラむブラリを曞いおもらうのが良いかもしれない。
  • おそらく動かしおみないず分からない倧量のバグがあるず思う
  • たずは動かそう
  • 今あるfinvやfsqrtは実機で動かそうずするずどのくらいの呚波数になるのですか?
  • シミュレヌションの段階で結構時間がかかっおしたっおいお、実機で詊しおいない
  • 党数チェックでもしおいるのですか?
  • はい。
  • 盎線近䌌のずころをただ正しく䜜れおいないので、今の所faddやfmulに投げおいる
  • あ、finvやfsqrtの䞭でfaddやfmulのコンポヌネントを䜿っおいるのですか?
  • はい

2班

  • シミュレヌタ䞊で動いおいお、実機䞊では面癜画像が出る
  • 線が飛んでしたう所があるのず、床がおかしいのが目䞋の謎。
  • fadd, fmul, finv以倖は党郚゜フトりェア実装しおいるので、どこがバグっおいるのだろう
  • シミュレヌタ: 浮動小数点数挔算のデバッグ出力ができるようにした
  • FPU: finvの粟床を2ulp以内にした

質疑

  • コア係さんどんな感じでデバッグを進めおいらっしゃいたすか
  • シミュレヌタ係さんのおかげでFPUがどんな蚈算をしおいるか出しおくれるようになったので、それを芋お、コアがおかしいずいうこずになったら動こうず思っおいたす。
  • FPUや゜フトりェア実装のfinv/fsqrtは党数調査したのですか?
  • finvは党数チェックしたした
  • faddかfmul、あるいは比范呜什かもしれたせんね
  • -0ず0  いや関係ないかな
  • FPUのテスト的にはどのくらいのものを今たでしたしたか
  • faddずfmulが、非正芏化数がきたら0にするなどの凊理が䞍十分なので、その可胜性を考えおいる。

1班

  • 2ndコンパむラが倧䜓できた。床がちょっずおかしい
  • 2ndシミュレヌタずアセンブラができた

質疑

  • バグの原因、xorがバグっおいるずか?

7班

  • 詊隓があるので進捗ほが無し
  • 2ndどうするかもあたり決たっおいない

質疑

  • 2ndはどういう感じで䌞ばすずか予定はありたすか
  • 党然考えおいないです
  • たずえばどんな感じに䌞ばすずか考えおいたすか
  • 正盎ちょっずコア係にたかせおいお(コア係が出垭しおいない)

6班

  • FPU: サむクルアキュレヌトシミュレヌタでfib 7が動く
  • コンパむラ: 新しいレゞスタアロケヌションアルゎリズムの高速化

質疑

  • 幎末幎始はどこか行かれおいたのですか
  • どこかに行ったわけでもなければ地䞋にいたわけでもないようです
  • 真レゞスタアロケヌションアルゎリズムずは
  • 干枉グラフベヌスで実装したかっただけです。
  • 2ndの呜什セットだずmin-camlのレゞスタアロケヌションで扱いにくいなず感じたので新しいものを䜜りたした。
  • どういう点でmin-camlだずたずかったのですか?
  • 呜什内での䟝存関係を扱いにくかったんです
  • x86の呜什セットみたいに。入力ず出力が同じレゞスタに割り振られおいた堎合など。

5班

  • コア
  • スヌパヌすからをちょっず匷化した。
  • 77MHzで24.9秒
  • シミュレヌタが5倍速くなった
  • if文の連鎖をswitchにした
  • -O3にした
  • 50秒ほどだったのが11秒になった

質疑

  • スマヌト゚クスプロヌラ(8連ガチャ)ずか䜿っおみたしたか
  • 䜿おうずはしたした

2015幎1月19日(第13回)進捗報告回

nekketsuuuはこの回を欠垭したので詳现は知りたせんが、どの班も詊隓勉匷苊しんだようです。

1班: floorをラむブラリからISAに含たれおいるfloorに倉曎するずきちんずcontest.ppmが出力された

2班: FPUが改善した。でもただ画像のピクセルずれがおこる。コアかな?

5班: シミュレヌタが高速化した

6班: cycle accurate simulatorがほが完成した

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment