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

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

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

 

www.blacklab-blog.net

教授の凄まじいドジっ子っぷりにより、放置系ブラックから一気に、激務系ブラックに変化したこの研究室。

 

調べてみると世の中には、忙しすぎて就活もさせてくれないようなブラック研究室があるようだ。

就活中はまだ放置系ブラックのままでいてくれて本当に良かった。

不幸中の幸いといったところだろうか。

 

さて、ふと俯瞰してみてみると、

・修士2年の夏〜卒業まで、何をそんなにセコセコと労働することがあるのか?

・てか、「動画圧縮のチップ製作」って一体なんなの?

と皆さん疑問に思うかもしれない。

 

そこで我々は立ち上がり、

今回は、その大変さを語って見たいと思います!(白目)

 

今明かされる、知られざるチップ設計の世界 〜影と影〜

そう、影と影なのです。光はない。

ずーっと日陰の作業。

 

そもそもチップというのは、こんなやつです。

f:id:blackLab:20180620101541j:plain

 

こういうのを見せた瞬間に、「え、やだ…ナニコレ…」とドン引きするでしょう。

特に20代女子勢。すぐドン引きしちゃうからね。やーね。

だから、絶対にこういう話は面と向かってしません。

 

で、この画像のチップは、いわば『完成品』。

ただ設計完了済みの電気の通り道(回路)を、大日本なんちゃらさんとか、凸版なんちゃらさん達がガンガン印刷して、大量生産しているものです。

 

今回の超絶激務ミッションは、パソコン上で動いている動画圧縮のC言語のプログラムを、上記の状態にもっていくこと。『実用化』・『製品化』とも言えますね。

 

なんでもできちゃう天才的な「ソフトウェア」から、原始的で電気的な「ハードウェア」に設計し直すのです。

それは、泣くほど大変なことなのです。

電気メーカーさん、マジお疲れ様なのです…。

 

ハードウェアの世界ってなんなの?何が大変なの?

ここが非常に重要なのです。

 

頭の良い子に勉強を教えるのと、超絶アホの子に勉強を教えるの、どっちが大変ですか?

超絶アホの子を教える方に決まってますよね。

それがハードウェアの世界!

 

例えば、あなたが「2+3=5」という計算をしたいとします。

すると、ソフトウェアでは、

『 i = 2 + 3; 』

とでも書けばできちゃいますよね。それ以外ないだろ?って話。

 

しかし、ハードウェアでは、

こんなイメージになるのですよ…。

f:id:blackLab:20180622161145p:plain

クロックという一定の波を見て、

最初に波が立ち上がった時(=1クロック目)、1コ目の記憶領域に「2」を記憶させときます。

で、2クロック目に、2コ目の記憶領域に「3」を記憶させます。

そして、3クロック目に、この記憶させた2つの数を加算させて、その結果を3コ目の記憶領域に記憶させます。

 

・・・という、世界でやりたいことを教え込んでやらなければいけないのです。

絶望しませんか?

え、そもそもそんな解説、読んでいられるかって?

ですよね、それが正しい反応だと思いますよ。

 

ただ、やりたいことを教え込む時、つまり設計する時は、

ソフトウェアと同じく、プログラミングでできる時代なので、この時代でほんとよかったって感じです。

 

といっても、こんな訳のわからん文法なんですけどね。

f:id:blackLab:20180622162220p:plain

 

Verilog-HDLという言語です。

ハードウェアの定義に使われます。

 

コツはですね、頭の中で回路や配線を思い浮かべて書くことです。(キモい)

 

f:id:blackLab:20180622162601p:plain

そう、こんな風にイメージして!

さぁ!さぁ!(ヤバイ人いるよ)

 

 

なんでわざわざそんなことしなきゃいけないの?バカなの?

え?なんでそんなことしなきゃいけないのって?

そりゃあ、そこに回路があるからだよ。

 

ではなくて!

一応、ちゃんと理由はあるんです。

 

■理由①

『ハードウェアの方が、計算が爆速だから』

です。

 

ソフトウェアと比べ物にならないぐらい早いです。

電気的に一瞬で処理してしまうので。

 

正直、動画像の処理は重たいです。

リアルタイムに処理したい!ってなってくると、今回みたいに『ハードウェア化』という恐ろしい選択肢が待っているかもしれません。

 

■理由②

『計算時間が決まっているので、完全に思い通りの処理ができるから』

です。

 

クロックという一定のリズムを刻む波に沿って、順々にガリガリ計算していくので、

計算が終わる時間も一定なのです。

 

ソフトウェアだと、仮想的に処理しちゃうので、マシンのスペックや状況によって、

計算時間が左右されます。一定じゃないんですね。

 

ピタゴラスイッチ的なものを作った時、

「このタイミングでドミノが倒れない!」っていう状況はかなり致命的になっちゃいますよね。

だからこそ、『時間が一定』というのは、結構大事になってきます。

 

 

 

よし、この調子で、次回ももうちょっと語ろうと思います。(まじかよ!)

 

では、また!!!