見出し画像

#コンピュータ談義 #M1の誘惑と限界 #ボトルネック

ボトルネック

コンピュータ利用のノウハウのかなりの部分は、リソース不足(容量的、性能的)によるボトルネックを如何に現実の問題解決と摺り合わせるかという努力の歴史でもあります。

なので、リソース不足が解消されてしまうと不要な物となってしまいます。

例:
使用可能メモリ領域が640KB に制限されていたMS-DOS時代、EMSやハイメモリの使いこなし重要なノウハウでしたが、OSが32bit化されそういった制限が解消された後は必要なくなってしまいました。

伝統的にコンピュータシステムには2つの大きなボトルネック、HDD(外部記憶装置)とメインメモリが存在します。

HDD

最近ではあまり表記されなくなったHDDの性能表記に”平均シーク時間”という項目があります。
これはヘッド移動に要する時間の早さを示す性能指標で、単位はミリ秒です。

CPUのクロックがメガヘルツ(マイクロ秒)、ギガヘルツ(ナノ秒)の単位で記するのを考えると、絶望的に遅い数値になります。

最近ではHDDにそれなりの容量のキャッシュメモリを搭載して、こういった遅さを緩和する様になりましたが、それでも致命的に遅い事には変わりありません。

SSD 化してシステム全体のレスポンスが大幅に向上するのは、こういったHDDのシーク時間というボトルネックが解消される事が理由の一つです。

サーバーではHDDを複数使い、あるHDDがシーク待ちの間に別のHDDアクセスをオーバーラップして如何にシーク時間を隠匿するかがノウハウでした。
その為そういった多重処理が困難なIDE インタフェースでは無く、SCSI インタフェースがサーバーでは一般的に使われていました。

例:
ええとぉ、ブート・スターティック領域をHDD1のパーティション1に、ログ領域をHDD2 のパーティション2に、スワップ領域はHDD2 に、DB領域はHDD3に...
HDDの容量も小さかったので、この割り振りはかなり気を使う作業でした。

そういえばストレージ用インタフェース(SCSI、ST506、ESDI、IDE、HIPPI、FC-AL...)はどれも同時期のメモリインタフェースと比べ圧倒的に低速度だったので、ここでもボトルネックが発生していました。

メモリスワップという技術もメインメモリ容量不足を補うノウハウ的な技術でしたが、そろそろ必要無くなりそうな気配です。

フォンノイマン・ボトルネック

現在のCPUは未だにフォンノイマンの呪縛に縛られ、”基本的に”全てプログラム内蔵逐次処理系システムとなっています。

フォンノイマン・ボトルネックはCPUとメモリ間の速度差から、メモリインタフェースがボトルネックとなり、システム全体の性能向上の障害になる事を意味します。

CPUのクロック速度は年々向上しますが、メモリ帯域はそれに比べて向上速度が遅く、フォンノイマン・ボトルネックは常にシステム全体の速度向上の障害になります。

なのでCPUベンチマーク等で、CPU内部のキャッシュメモリ内で完結する処理速度(ベンチマーク結果)は向上しているのに、実際のアプリ使用上の体感がそれ程向上しないといった現象が発生します。

M1の誘惑

ボトルネックの説明はM1 へと繋げる大きな前振りでした。😝

アップルがリリースしたM1(M1Max、M1Pro) システムの評価が非常に高いですね。
性能が高く、発熱が少ない、良い事ずくめの様に見えます。
これらがどう実現されたかという大きな理由の一つが上記に述べたボトルネックの緩和です。

ハード屋観点から非常に大きな理由の一つが、メモリチップをCPUと同じパッケージに載せた事です。
基本的にこの事に対するデメリットは、コストと拡張性の2つだけです。
それに対してメリットは沢山!

メモリ帯域は広げられるし、遅延は少なく出来、メモリを含めた消費電力は大幅に削減出来る等々...

アップルは(独自インタフェースにて)SSD の搭載を始めたのも比較的早く、内蔵SSD の速度は既にかなり改善されていました。

ストレージとメインメモリのボトルネックの緩和により、システム全体の性能向上がはかられている訳です。

基本的にコンピュータシステムは水平分業体制が多数派であり、アップルといえどもハードウェア構成は基本的に同じでした。
CPU、メモリ、コントローラーチップ等は各専業メーカから購入し、それらを組み合わせてシステム化するという形態でした。

M1チップの革新性は、システムメーカー(アップル)主導でCPU設計を行い、モジュールとしてCPUとメモリを同一パッケージに搭載する方式を、コンシューマー業界で(多分)始めて行った事です。

今後インテルやAMDなどのCPU専業メーカーから同様にメモリチップも同一パッケージに搭載した製品がリリースされる事は間違いないですが、しばらくM1チップのアドバンテージは保たれる事と思います。
PentiumPro やPentiumII で既に同一パッケージにキャッシュメモリを搭載した事があるので、技術的には比較的容易に実現出来るハズです。
またダイの積層技術も進んで来ており、よりコスト的に有利な実装方式も用いられるようになるでしょう。

究極的にはCPUからストレージまでを単一のダイチップに載せる事です。
その実現にはまだまだ解決しなければならない事が多いですが、いつか実現されるかも知れません。

以上M1マックが欲しいなあという物欲と折り合いを付ける為に書いてきました。😝

余談 - 富岳 超並列スーパーコンピュータ

最近日本の誇るスーパーコンピュータ「富岳」が世界ランキング4期トップであるとか、4冠を達成したというニュースがありました。

富岳が使用しているスタイルが超並列というもので、この方式のメリットの一つがフォンノイマン・ボトルネックの大幅な緩衝です。

CPUとメモリ間の隘路を極端に広げる事は技術的に困難です。
現在は256bit 幅程度が一般的です。
ウルトラワイド・インタフェースといって2,048bit か、それ以上の幅のインタフェースも視野に入っていますが、せいぜいその程度です。

これを一気に10万bit とか100万bit に広げる事は技術的に出来ません。

そこで超並列の出番です。

CPUとメモリの幅を広げられないのなら、CPUとメモリのセット(ノード)数を増やしましょう(並列)。
それで”実質的”なメモリ帯域を増やす事ができます。

例えば一つのCPUとメモリの間が256bit 幅あるとすると、2つのノードを用意すれば”実質的に”512bit 幅あるのと同じです。
同時に演算リソースも2倍になります。

これを10ノード、100ノードなどチマチマした事を言わず、バーンと1万ノードを用意(超並列)すれば、超高性能システムの実現が行えます。

256bit で1万ノードならば、”実質的”に256万bit 幅のメモリ帯域を持ったシステムという事になります。

当然超並列システムはメリットだけでは無く、インターコネクト等の問題があって、普通の用途では実力を発揮できませんが、気象予報の様な大規模演算にて、その性能を遺憾なく発揮出来ます。


注意:上記の説明はある側面だけを取り上げて理由付けしています。
コンピュータシステムは、各エリア毎に涙ぐましい工夫を行い性能向上が図られています。
一点豪華主義的な物では無い事をご理解ください。

いいなと思ったら応援しよう!