日記から戻る


2004/05 << >> 2004/02

[ ひさびさに ]
久々にOLKの新歓に行ってきました。ゴールシミュレーションです。
なんだか、懐かしい感じがしました。頭の中がアーキテクチャの
ことで一杯だったので、久々にリフレッシュした気分です。
一年生は若すぎです。もう自分は年なんだなあとつくづく感じました。
この一年で精神的にも体力的にも15歳ぐらい年とった気がします・・・まあそれは自分でも思っていたのですけど、
あまりにもそれを実感できちゃったのでショックですた・・・
がびょーん。若い人たちの間に入っていけない自分に
哀しくなっちゃいました(>_<)
それはともかくひさびさに休養の一日でした。また明日からは
篭もりきり。5月6日までにプロセッサに目処をつけなければばば。

そうそう、平木班のホームページが近日中にインターナショナル
な仕様になります。こうご期待。
2004/04/30(Fri)


[ TOEFL..... ]
なんというかリスニングの問題が本当に激しく簡単になっていくので
おどろきました。なんかレクチャーのレベルが1段階ぐらいかわりました。
というわけで、これからはリスニングを死ぬほど聞かなければやばそうです。
平木研のミーティングに間に合おうとして、TOEFLまで高速化したら、
リーディングが俊足で終わりました。あはははははは。
というわけで、リスニングがやばいです。というか何をいっているのか
わからん。状況把握する前に次の問題にいってしまう・・・ああああ。

スーパースカラーはなかなか設計が終わらない・・・
前作ってたCPUで、フォワーディングとかキャッシュとか、
なんだか簡単に思えてきました。きゃあああああ。

なんだか、世の中はそろそろGWというおめでたいイベントがあるようですね。
こちらは遊んでいる余裕なぞありません。ともかくスーパースカラー。
なんだか最近一日で一番多く発言している単語が
スーパースカラー。平木班のページを英語にします。
5月5日までは研究室にこもりかな。あああ。あああ。
2004/04/28(Wed)


[ 今日の授業は ]
Arvind and Gostelow
Ackermann Structure
Incremental Structure

要するに、Dynamic Dataflow Modelな話。

明日はTOEFLもう崩壊。

2004/04/27(Tue)


[ 演習3 1日目 ]
というわけで演習3の第一期がはじまりました。といっても
ミーティングがあったわけではなく、待ち遠しくなったので
課題の確認と論文を紹介してもらいにいったのですが。とい
うわけで、今日からスーパースカラプロセッサの設計&実装
を本格的に開始。研究室にもお邪魔して菅原さんにいろいろ
なことを教えて頂きました。論文の探し方とか、FPGA関係の
学会とか。どうもありがとうございます。ひとまず、
[Two-level adaptive training branch prediction]

[Combining Branch Predictors]
という、分岐予測に関する古典的な論文を読むことに。今日は学校終わってからベローチェ(池袋の
ベローチェは大変すいていて勉強には最適。)でTow-Level
の方の論文を読んでいました。簡単にいうと、
まず、分岐命令毎に、その分岐命令の成立・不成立の履歴を記録した
パターンが保存されています(History Register Table)。たとえば、
010001みたいな感じで。この履歴が更新されるときは左シフトして
一番右に最新の情報が付け加わります。要するにシフトレジスタです。
そのパターンをもとに、Pattern History Tableという、分岐パターン
ごとの履歴を保存してあるテーブルを引き、その結果をもとに
分岐するかしないかの予測を決定するという方法です。
それまでには、似たような方法ですが、あらかじめ教師データでPattern Tableを
生成しておく方法が考案されていたのですが、この方法だと、教師データに対してはいい結果を出すけれども、データが変わってしまうと
精度が落ちてしまう、ということがありました。なので、パターンに対応したテーブルも動的に、たとえば2bit飽和カウンタなどを用いて
テーブルを更新していこうという方法がこの方法です。
分岐命令のアドレスでindexingして分岐命令の成立・不成立の履歴を
保存していくのですが、そのテーブルの構成方法(ハッシュテーブルにするか
set-associativeにするか)などについても記述があります。
この方法を用いると、この論文のシミュレーションによると
平均して97%の精度で予測が成立するそうです。
分岐予測に関する論文を読むのは初めてなので、いろいろと学ぶところが
多かったです。もうひとつの論文はgshareに関する論文。今からよみます。

今日は計算幾何学のゼミ。ゼミははじめてなので、どういった
雰囲気なのかとドキドキでしたが、緊張感があって、ずっと
集中して聞いていられました。鋳型の話。鋳型の話を半平面の
共通部分に関する話が凸角形同士の共通部分を求める話で線形計画。
凸多角形同士の話はACMでも使えそう。あと、この本の日本語訳に
おもしろい訳文が。

今日は五十嵐研の大和田さんという方におかだいの紹介でお話を
伺いに行きました。テディーの応用。デモを見ているとうっとりして
しまいました。テディーが動いている様を見るのは初めてだったので、
3次元のCGは画面が4つあって云々なのに慣れている自分としては
それだけでも衝撃だったのに、いろいろな応用を見て衝撃爆発。
最近アーキテクチャに関することにほとんどを傾けていたので、新鮮でした。
そのあとはいろいろと貴重な話を聞かせて頂きました。ありがとうございます。

ひとまず、明日は高速化の授業。高速化。高速化。並列化。

そうそう、ICPCの勉強会のページをつくりました。
http://www.nvaca.com/
です。まちがえてトップページをftpの操作を誤って消してしまいました。あああ。あああ。
2004/04/20(Tue)


[ 頭フラフラ ]
というわけで、意識がもうろうとしていましたがバイト。
そのあとで、XilinxのページからWebPACKをダウンロードしていました。
これは、昨日制限がついたISEなんですが、まあ簡単な回路の検証にはつかえるので、家でもコーディングできるということもあるので、
インストールしてみました。このソフト自体はいままで使っていたので
何ら変わることはないのですが、
ModelSIMのスターター版を入れてみて、その使いやすさに感動しました。
大学だと、シミュレータはSciroccoしかないし、開発環境はWindowsで
シミュレータはソラリスなので、コピーがめんどくさくて
シミュレータ使っていなかったのですけど、
ModelSIMなら、ProjectNavigatorと親和性がよくて、
具体的に言えば、右クリックでシミュレーションできます。すばらしい!
40秒(以下略
ProjectNavigatorには、テストベンチのテンプレートを作ってくれる機能があるので、組み合わせ回路だったらほぼ一瞬でシミュレーションできます。
そうじゃなくてもちょっと変更すればいいので、楽勝の予感です。
CPU実験でプロセッサを作ったときは、シミュレータをつかわなかったので、デバッグは地獄でした。具体的にいえば、8個のLEDから
Xilinxの心を読み取るという技が必要でした。それはそれで
在る意味楽しかったのですけど、恐ろしい作業でした。というわけで、
これからシミュレータをいろいろいじってみることにしました。
もちろんスターターバージョンなので、回路規模には制限がありますが、
演算器のモジュールはそんなでかくないので、そこらへんの検討には使えそうです。
2004/04/18(Sun)


[ 歓迎会 ]
の記憶がほとんどないので、誰かおしえてください。一次会の途中で
焼酎をのんだあたりから記憶がなくなって、2次会では、カラオケに行った記憶があるのだけれども何を歌ったのか覚えてない・・・
3次会もあって、そこからちょっと記憶がよみがえってきたけれども
とても大変なプレゼンをしてしまった記憶がのこっていて
もう旅にでます。それから、なぜか学校で寝ていて、起きたら2時ごろ。
バイトやらなきゃならないのに頭ガンガン・・・
久しぶりに飲むときは、無理をするのはよくありませんでした。
迷惑をかけた方々、ごめんなさいm(__)m
あああ。あああ。あああ。。。
2004/04/17(Sat)


[ 演習3決定 ]
第1期は平木研にきまりました。高速化最高!!!
コンピュータが速くなる
→いろいろなことをがんがん処理できるようになる
→反応がよくなる
→コンピュータが使いやすくなる
ということで、高速化はとても大切なのです。高速化
なくしては今のコンピュータの使われかたはありえなかったのです。

というわけで、平木研の演習では、かねてから作りたかった
スーパースカラCPUの実現と、
あとは、FPGAに関する論文と投機的実行の論文などをがんがん読みまくります。
こんどこそスーパースカラーを実現します。もしできなかったら
単位はいりません。それほどスーパースカラーは重要なのです。
あとは、余裕があれば、並列化の文献も読みたい・・・Karp&Miller!!

ファイルとか意識しなくても使えるホームページ作成ソフトが
あればいいのに。。あとは、他のソフトと連携が優れたソフトとか。
画像編集ソフトで編集中の画像をドラッグアンドドロップしたら
ホームページにはりつけられて、もとの画像をかえると、かわったり。
それを、自然にできれば便利だなあと思いました。いちいちファイルの
保存をしたりするのはめんどい。あと、細かい設定がもっと
直感的にできるようになってほしいです。表の設定変更とか
めんどうです。でも、DreamweaverとFireworksの連携はすばらしいと
思いました。GoLiveを今まで使っていたけど、仕事で使ってから、
この2つの組み合わせのすばらしさに感動です。Flashは操作難しいけど・・・

この日記はどうも専門用語が多すぎて意味不明との声が多数あるので、
専門用語を使わないようにしようと思ったのですが、
そうすると日記がかけなくなってしまったので、
読者のみなさんは、これ
を読むことにより、現代社会の一般常識であるスーパースカラーについて
理解を深めることができます。むしろ、スーパースカラーについて
知らないと大変なことになります。今読んでいるのは、この本なんですが、
かなりすばらしいです。特に例外回復のあたりの解説がわかりやすくて、
今まであやふやだった分岐予測ミスからの回復の実装方法が明確に
イメージできました。結構昔の本なので、古さは否めませんが、
スーパースカラの概念を理解するには、かなりよい本ではないかと思います。訳も悪くありませんです。

地下室でTTLで回路を組んでいる3年生を見ると、昨年の自分を思い出します。がんばってゲート数を減らしたなあ。クリティカルパスを短くしようともしたなあ。やはり今年もハードウェアに熱意のある人が
いるようです。ぜひとも、20秒ぐらいでレイトレうごくCPUを作ってほしいものです。

メビウスは、やっと250点とれました。300点を越すのはまだまだ
遠そうです。

310点とりました。目標まであと190点
2004/04/16(Fri)


[ 演習3 ]
今何気なくソリティアをやっていたら、事故新記録79秒(いままでは84秒ぐらい)がでたので気分がよいです。

演習3は、結局
第一希望 平木研(もちろん)
第2希望 萩谷研(ラムダラムダラムダラムダラ厽ダ)
第3希望 須田研(シストリックアレイ)
第4希望 細谷研(ツリーオートマトンに興味あり)
第5希望 五十嵐研(高速化とは関係ないですが)
で出しました。最初の2つ以外はずいぶん予定とかわりました。
どれが通るかな・・・

演習3でトマスロを実装したいので、今設計中なのですが、
リネーミングユニットが大変なことになっています・・・
4ウェイスーパースカラはFPGAでは無理なのか・・・


2004/04/10(Sat)


[ 新学期 ]
新学期が始まりました。xmlと並列とインターフェイスの授業が
自分的におもしろそうな感じです。先学期までは、知っていることや、
必須の教科ばっかりだったので、それほど興味わかなかったんですが、
今学期は、自分の知らないことが授業なので、興味を引かれることが
しばしばです。

演習3のガイダンスを受けていました。当初の予定から大きく
揺れ動きそうです。平木研のガイダンスを受けたら、
ますます高速化が重要であると思いました。ともかく
今学期はなんとしてもトマスロを実装しなければ!!!
あとは、萩谷研、細谷研、五十嵐研のうちどの2つをとろうかと。

今日はユーザーインターフェイスの授業があったんだけれども、
1963年のサザーランドのビデオを見て衝撃・・・今から40年も前に、
ペンインターフェイスで絵を書いたりなんてことを
考えるなんてほんと感服です。
参照)http://www.sun.com/960710/feature3/sketchpad.html
そして
http://research.sun.com/async/
のメンバーを見てもっとびっくり・・・
要するにサザーランドも今は高速化(以下略
ちなみにSketchpadの論文はここにあります。

地下には新3年生が入ってきてにぎやかな感じです。
金曜日の計算機構成論の授業でどれだけの人が高速化への
情熱を植え付けられるか楽しみです。
うふふふふふ。
マニュアル購読で、MIPSが当たったら、いろいろ教えてあげます。
R10000は典型的なスーパースカラーです。うふふふふ。

トーフルはやばすぎですが、リーディングでトマスロがでてくれたら
とても嬉しいです。でるわけないけど。

プロセッサの高速化の道は険しそうです。Value Prediction、
Prescheduling、Cache Compression、Memory Dependence Prediction、などなどなんでもありです。
演習3で余裕があったら、どれかひとつぐらい実装してみたい今日このごろです。
でもその前に単純なスーパースカラーを完成させないと
大変なことになります。100万ゲート!!
2004/04/09(Fri)


[ 日記再開 ]
しますた。

久しく日記を書いていなかったので、3月などを振り返ってみました。
考えてみれば、すごい月だったなあ・・・寿命が1年くらいは確実に縮まった気がします。

<3月のはじめ>
CPU実験ラストスパート。ほぼ毎日泊り込み。3月はじめにレイトレ自体はバグなく動いたので、あとは高速化。
スーパースカラ、スーパーパイプラインを導入するか迷う。でも、
それまでに完成していたCPUを捨てきれず、スカラー50MHzのCPUを
できるだけ高速化する方針で。今思えば、100MHz狙っておけば
よかった・・・60MHzくらいでうごいたらいいなと思っていたのが
命取りに。

そんなこんなで、データーキャッシュのブロックサイズを増やしたり、
命令をふやしたり、sqrtとfdivを乗せられるように回路を変更したり、
なんとか80秒が60秒ぐらいで動くようになりました。
でも、50秒がなかなか切れない、というか絶望的。シンプルなアーキテクチャで、50MHzだったらここが限界か。

それでクロックをあげることを考えました。XilinxのVirtexIIには、
ディジタルクロックマネジャーという、クロックの速度を比較的フレキシブルに変えられるのがはいってます。それで、55MHzくらいで
回路を動かしてみることに・・・動かない・・・
動かない・・・何度やっても動かない・・・いろいろ試しても動かない・・・
しかも、挙動不信・・・なんだかうまくいかないので、
DCMを使うことはあきらめ、50MHzでなるべく詰め込む方針に。

命令別の命令実行数とにらめっこしながら、複合命令を作ったり、
即値命令(大量の即値命令によって、ハザードおよびアドレス計算の
レイテンシを減らすアーキテクチャをわが班は、Ultra ISO Architectureと名づけました。)を強化したりで、45秒まで行きました。かなり無謀なアーキテクチャです。でも、速さがすべてです。
平木班の名に恥じないために、一番を狙いました。速さで。でも、
それが、寿命を1年ぐらい短くした感じがします。あああ。あああ。

<3月14日>
CPU実験前日。コンパイラの最適化により、43秒程度になっていたので、もうここまでくれば勝ちかと思いきや、おかだいから昼にメールが。

「もろ班が133MHzで動いたらしいよ。4ドットの誤差があるらしいけど」

まじかよ。

頭の中はパニックです。ありえない、ありえない、と思いつつも、
どうやらマジらしいので、もう絶望的。
このままじゃ負ける・・・もし4ドットの誤差がなくなったら、大変なことに・・・
学校に向かう電車の中では、心拍数133MHz超えていたような気がします。

で、学校にいったら、133MHzはどうも誤差がとれないらしい、
とのことで、その策はあきらめていたようでしたけど、
今度は、66MHzでほぼ完動との声が。2回に1回くらいでうまくいくらしい。タイムは35.5秒。ありえず・・・
もしそれが安定して動作するようになったら終わりです。平木班崩壊。
もうほんと涙がでてきました。絶望の嵐。

ここからは、

<3月15日>

35.5秒と表示されている画面を見て、どうやったらうちの班がかてるか。ウルトラコンパイラーにより、42秒になっていたので、
差は7秒。複合命令は導入しつくしたし、
けんやにいまさら頼むわけにもいかないし。もう、アセンブリコードは
替えられない。最適化できない。その状況で7秒も減らせるか。無理。
普通に考えたら絶対無理です。もう絶望的な状況で
かなり精神破綻です。うしろで66MHzで動作させようとしているもろを
見て、もうやめてーーーひどいめにあわせてーーー(嘘)
という状況でした。

もし、66MHzで動かされたら、絶対負ける。でも、勝ちたい。
となったら、取れる策は2つ
1)画期的な案を考えて、50MHzで35秒にする
2)うちの班もクロックをあげる

2の策は、こないだの経験もあるので、確実ではないのですが、
1ではほぼ無理な気まんまんなので、1と2を両方やることにしました。
2の方は、こじた先生にいろいろ検証してもらって、それと同時に、
浮動小数点演算器の最適化も行ってもらいました。なんとか66MHzで
動かせるようにするために。
1の方は、アーキテクチャを替える必要があったので、僕がやりました。
でも、もう限界。。。命令表を眺めても案がうかばないというか、
すでに実行命令数が12億命令ぐらいなので、命令を減らすのは無理だし・・・
で、最新のハザード発生回数を見てみると、1億7千万回くらい。
もし、これをほとんど消せれば、3秒くらい縮まる。
でも、これで発生するハザードは、ロードのあとのロードなど、
普通に考えれば、消せないものばかり。どうしよう・・・どうしよう・・・
でも、向こうは必死にクロックをあげようとしているので、
恐怖。恐怖。恐怖。リポデーのまなくても覚醒状態。

ハザードを消せば3秒。そしたらあと4秒消せば・・・

ロードのあとのロードハザードを消しました。
キャッシュからでてきたデータがvalidかを確かめている間に
そのデータを次の命令で使えるようにしました。
1・7秒縮まった。。

もう消すすべが見つからない。。。
今、内部は50MHz、SRAMへのクロックも50MHz。SRAMは100MHzまで大丈夫。SRAMへのクロックをあげました。
キャッシュミス時のレイテンシが1へって、1.5秒短くなりました。

もう策が見つからない。35秒なんて無理。無理。

アセンブリコードを見ていると、flessのあとのブランチは、必ず0レジスタと比較している。しかもオペランドの位置固定。何度コードを
読み直しても、そうなっている。fiszeroのあとのブランチもそう。
となれば、flessの結果を同時に実行しているブランチの命令で使えるかも。

使いました。1.5秒ぐらい減りました。かなりアグレッシブです。
ちょっと希望が見えてきました。あと2.3秒。
faddのパイプラインを切って、制約をかければ、faddのレイテンシを下げられる。
faddのレイテンシが2になれば、2.5秒ぐらい縮まる。そしたら勝てる。。。

でも、制約ガイドをみて制約をかけようとしても、どうしてもエラーがでてしまう。前にかけたときは大丈夫だったのに。。。
前にかけたときは、CPUの中に立ち下がりクロックで駆動するエレメントはなかったのだけど、今回は、それが存在する。だから、そこらへんでうまくいかない・・・うまくいかない・・・
もう無理か。

66MHz化を目指しているこじた先生も、やはりクロックを上げるとうまくいかないとのこと。でも、クロックをあげようとしているため、faddのクリティカルパスがどんどん短くなっている。

パイプライン化したfaddを50MHzでなんとか2クロックでうごかせれば・・・
無茶な要求だけど、やってもらうほかありません。
そしたら、それほど重くないバージョンのCPUでは、faddは2クロックでうごいた!との声が。キターーーー!!!
でも、今のバージョンのCPUは重い。。
ためしに乗せてコンパイルしたところ、やはりコンパイルとおらない。
あと一歩のところで通らない。今は10時。コンテストまで3時間。

実行制御ユニットを書き直しました。コンパイルとおりました。

34.5秒キターーーーーーーーーー!!!!!!

なんだか今までの苦労が報われた気がします。こじた先生ありがとう!!

そんなこんなで、長かった長かったCPU実験がおわりました。平木班の
みんなに感謝です。2週間で1.8倍に命令が膨れ上がった仕様を
よく受け入れてくれたと感謝です。しかも、そのほとんどは
実行命令数を減らすためではなく、ハザードをけすためだけ。すごい仕様だなあと自分でもびっくりです。

実験が終わったあとは、脱力感でいっぱい。でも、CPUのスピードコンテストのときはほんとドキドキしました。ありえないぐらい心臓がバクバグいってました。でも、動いたときは、感動でした。あと、プレゼンは最高でした!とくにムービー。芸術賞ものです。
あと、びっくりしたのは、月面着陸トロンの受けがおもいのほかよかった
ことです。怪我の功名ってやつですな。アンチエイリアス万歳!

実験が終わってからは、1週間ぐらい放心状態。家に帰っても、
ザイリンクスとかのページを読み漁る癖が抜けなくて、いまだに
ホームページはwww.xilinx.com。ほんとこのページにはお世話になりました。頭の中がCPUで埋め尽くされて、1週間ぐらいはほんとCPU以外のことは考えられないような状態ですた。

それからは、調査の様子を見に行ったり、ジョイコンに参加したり。
ひさびさに地上世界での生活。おそらくもう女装なんてしないから
最後だと思って足をそったりしたら、今になって違和感ありまくり。
ぎゃーー。ぎゃーー。女性は大変だなあと思いました。
で、TOEFLの勉強。TOEFLの勉強。リスニングがやばすぎ!!!
Structureは意外と合っていることが多いのだけど、Listeningは
馬耳東風。というわけで、2ヶ月間聞きまくり大作戦。持ち運び型
CDプレイヤーの中身をリスニングCDに変更。もう耐えられない!!!


そんなこんなで終わったCPU実験ですが、自分の中ではまだ続いています。というか、終わってからますますアーキテクチャへの興味が湧きまくり。最近はもっぱら演習3でつくりたいスーパースカラープロセッサのための勉強をしています。トマスロを実装できなかったのでリベンジ
です。FPGAだと、バイパス回路が重くなったり、また、リザベーションステーションが重くなったりしそうなので、今はその解決策を考えています。クラスタリングとかすればバイパスを軽量にすることは可能だと思うのですが、RSの軽量化が問題です。目指せ4-Way!

あと、キャッシュもCPU実験の時は、かなり適当に作ったので、
もっと洗練されたものがつくりたい。キャッシュについてもっと勉強しないと。。あと、分岐予測。結局、ウルトラヒエラルキーは
分岐をIFに持ってきたから、分岐のペナルティがなかったけれども、
SuperscalarでもSuperpipelineでもどちらにせよ分岐のペナルティは大きくなるし、100MHzデザインを考えたら、明らかにIFに分岐を持ってくるのは不可能なので、分岐予測は必至です。

そんなこんなで早く平木研にいけたらいいなと思う今日このごろです。
早く演習3がはじまってほしいです。というか、TOEFLやばい。。。
2004/04/01(Thr)

My Diary Version 1.21
[ 管理者:nvaca 著作:じゃわ ]