シンプルと複雑のバランス

 機械の仕組みはシンプルな方がいいと思う。

 作りやすいし、安くできるし、故障もしにくい。仮に故障しても、直すのも簡単だ。

 でも、確かに複雑じゃないと達成できない目標もあって、どのくらいのさじ加減でシンプルさと複雑さをバランスさせるかは難しいところだ。

 今のところ人が作った仕組みの複雑さの頂点あたりにチャットGPTがある。今のやり方を踏襲するならば、自然な受け答えを実現する言語モデルの制作には100兆とも言われる特徴量をぶっこまねばならなかったわけだ。流ちょうな言葉を操れるようになった代償として、中身は人間が理解できないほどに複雑になった。

 チャットGPT水準になっちゃうとわけがわからないけれど、もうちょっと理解の手が届く範囲にあるものだとキャッシュなんかいい例だと思う。キャッシュといっても現金のことではなく、記憶装置の効率化の仕組みのことだ。

 CPUはコンピューターの中核部品で、全体管理と演算を担う。

 超重要パーツだけれども、これだけでは仕事ができない。例えば演算ができても記憶しておけないなら演算した意味がない。そこで主記憶装置(メインメモリー)とつなぐことになる。

 ここでシンプルさをとるならば、CPUとメモリーを直結すべきだ。この上なくシンプルで迷いがない。いい設計だ。

 でも、今のコンピューターの仕組みでは、CPUとメモリーを直結したりしない。

 理由はいろいろあるけれど、一番大きいのは速度差だ。CPUは仕事が速い。信じられないくらい速い。メモリーは遅い、いや人間の感覚からしたらとんでもない速度で記憶をしたり吐き出したりするけれど、CPUと比べちゃうと隔世の感を覚えるほど遅い。

 従って、CPUとメモリーを直につないでしまうと、CPUが「これを覚えておいて」とメモリーに命じたとき、メモリーがもたもたもたもた記憶に取りかかるのを、CPUはずーーーーーーーーーーーーーーーーーーーーっと待っていることになる。桁が二つ三つ違うほどの速度差があるのだ。

 CPUは高い。高価な部品である。大枚はたいて購入した身としては、遊ばせておくなど論外である。そこで一工夫だ。高価かつちょっとしか記憶できない欠点を持つけれども、記憶の速度だけはやたらと速いキャッシュメモリーを、CPUとメモリーの間に挟む。

 CPUはキャッシュメモリーに記憶を依頼する。

 キャッシュメモリーはすぐにそれに応える。

 CPUはさっそく次の仕事に取りかかることができる。

 キャッシュメモリーはそれを見届けた後、おもむろにゆっくりゆっくり記憶をメモリーに移す。

 こうすることで、高っかいCPUを酷使して最大限の効率で使い倒すことができる。遅いメモリーにも無理をさせていない。速度差のある両者の間にキャッシュメモリーを置き、それを吸収するように振る舞わせることで全体の速度を一気に向上させたわけである。

 この仕組みはものすごくよく機能したので、現在ではキャッシュメモリーもさらに細分化され、CPUに近い場所に配置する超速くて超ちょっとしか記憶できないL1キャッシュ、それよりちょっと遅くて、でも多めに記憶できるL2、L3、L4・・・・・・くらいまで多層化している。

 そのぶん複雑になっているし、全体を管理するオーバーヘッドは増えているけれども、確かに複雑さによって達成される事象はあるのだ。目的のはっきりしない無駄な複雑さは願い下げだけど、ちゃんと機能している複雑な仕組みはとても美しい。

【著者略歴】

 岡嶋 裕史(おかじま ゆうし) 中央大学国際情報学部教授/学部長補佐。富士総合研究所、関東学院大学情報科学センター所長を経て現職。著書多数。近著に「思考からの逃走」(日本経済新聞出版)、「インターネットというリアル」(ミネルヴァ書房)、「メタバースとは何か」(光文社新書)など。

あなたにおススメの記事


関連記事

スタートアップ

スポーツ

ビジネス

地域

政治・国際

株式会社共同通信社