ブラック研究室へようこそ!

ブラック研究室。それは大学院生が放り込まれるかもしれない闇のアジト。在籍時代のエピソード・Web/アプリ開発の備忘録など。

Phase28 チップ設計は果てしなくてブラック その2

 

www.blacklab-blog.net

 

前回、「今明かされる、知られざるチップ設計の世界 〜影と影〜」と題して、

大変に変態な記事を紹介しましたね。

 

とにかく、演算用の組み込みハードウェアや、チップの製作は死ぬほど大変だということを、みなさんに知ってほしいのです。

そして、絶望感を存分に共有したいと考えてる所存です、はい。

 

あと、前回「ハードウェアにするとこんなに素晴らしいんだよ!」的な、こいつの肩を持つような言い方もしちゃいましたが、そんなことはない。

こんな作業はほんとにクソだと言っていい。

 

せっかくなので、もうちょっとチップ設計の大変さについて、踏み込んでお伝えしましょう!(白目)

 

波形とにらめっこして、精神崩壊しちゃう

チップの回路は、今やPCでプログラミングで定義できる便利な時代ですよ〜なんて言いましたけど、

こんなシミュレーション画面と、ずっとにらめっこすることになります。

f:id:blackLab:20180622175155j:plain

 

おうちがえりだいよ〜(おうち帰りたいよ〜)

 

 

■おうちに帰れない理由

動画像なので、一番左上のピクセルから、右方向へ順々にピクセルを読み取って処理を進めていきます。

1行目のピクセルを左から右へ読み取り終わったら、今度は、2行目のピクセルを左から右へと読み取りにいきます。

なんですが、だいたいそういうイレギュラーなパターンのとき、

計算タイミングが合わないとか、変なバグが起こっちゃうんですよね。

 

画像を1枚処理し終わって確認してみたら、「あれ、このあたりから画像ぐっちゃぐちゃ…」っていう状況になってます。

 

そうなると、上の波形とにらめっこしながら、

「110クロック目までは計算合ってるけど、111クロック目から計算ずれてるな…」とかいうデバッグ。そう、デヴァッグが延々と続くのです…。

 

これはやってて精神がおかしくなります。

いいえ、おかしくなりました。

 

夜中、「なんで計算合わねぇんだよぉ!!」と叫びながら、研究室にあるソファーを10分ぐらい永遠と蹴り続けていた記憶があります。

 

お分かりいただけただろうか。

僕が今、生きているという奇跡を。

 

計算時間が一定なのは、嬉しいことばかりじゃない。

バグをひたすら取り続けて、ホッとしているのも束の間。

新たなる壁にぶち当たるのだ。

「計算時間が間に合わない」という壁に…!

 

前回と同じイメージで説明しよう。

f:id:blackLab:20180622181653p:plain

 

3クロック目の処理が「タイムオーバー」、つまり計算時間が間に合わなかったパターンとしましょう。

 

「2+3を計算して、結果を記憶する」という処理はどう見ても軽いので、実際に間に合わないということはまずありえないのですが、めちゃめちゃ手間がかかる処理だったとしましょう。

 

実は、タイムリミットがありまして、

この3クロック目の処理は、4クロック目までに処理を終えないといけないのです!

 

処理を終えないまま4クロック目を迎えてしまっても、

時間は有限。待ってくれません。

「5」ではなく「不定状態(どっちつかずの謎の値)」として、以降ガリガリと処理は進んでいってしまいます。

で、もちろんこの謎の値が以降で使われていってしまうのです。

 

よく変態さんな先生達は、電流は「川」だ!って例えるんですけど、まさにそれ。

 

結局、このままだと設計は失敗なのです…。

ロジックを見直し、またバグ取りもやるのです。

エンドレス。もうおうちには帰れませんね。

 

前回、「計算時間が一定だから、ピタゴラスイッチ的な精密なシステムが組めるね、やった!!」なんて言いましたが、そのロジック達は、エンジニアさんの汗と涙の結晶なのかもしれない…。

 

(こぼれ話)CPUってすっげぇ!!

さぁ、ここまでで、ハードウェアの世界観に絶望された方々に向けてのどうでも良い、こぼれ話です。

 

PCに積まれてる、CPUって実はものすげぇという話。

何故かと言うと、2〜3GHzのクロック周波数で、何不自由なく動いているから!

 

※クロック周波数=1秒の間に、先程のクロックの波が立ち上がる回数

 

つまり、1クロックの計算時間のタイムリミットは、『1/(3✕10の9乗)』秒しかないのですよ。

 

僕がこんなにも悩んでロジックを作ってたチップのクロック周波数は、せいぜい100MHzぐらいでした。

(僕の課せられたタイムリミット:『1/(1✕10の8乗)』秒)

 

桁が違いますよ!

それで、「計算時間が間に合わない、ひぃひぃ!」と言っていたのがバカらしく感じられませんか?

 

そんなわけで、ボキャブラリーも乏しいながらも単純に「すごい」と思った話でした。

 

 

さぁ、果たしていつおうちに帰れるのでしょうか!

では、また!!!

 

>>Next Phase

Phase29 金縛りにあったあの夏の日はブラック