キャッシュ(作動記憶)とメインメモリ(短期記憶)。

 Swiftデビューをベースに、コンピューターのメモリをヒトの作動記憶(ワーキングメモリー)と短期記憶に例えてみる。

 4GHzのCPUの場合、ある演算を5クロックで完了させたならば1.25ナノ秒。マルチコアならソレを個数分処理できる。

 ※ITパスポート試験にも同様の計算があるので細かい説明はせずにリンクで済ませたい。

 一般的なメインメモリ(DDR4のDIMM)の最大転送速度は21.3GB/秒だから21.3バイト/ナノ秒。

 仮に半角のアルファベット500文字を配列に入れる場合、最低でも500バイトを使用するから、そのままメインメモリ(主記憶と言う。脳で言えば短期記憶)に展開しようものなら、高速なCPUの演算能力に対しメインメモリがボトルネックとなる。

 ※メモリに読み込むだけで23ナノ秒以上かかり、1.25ナノ秒で演算が終わるはずのCPUはデータ待ち状態になる。

 CPUには主記憶よりもはるかに高速な1〜3次キャッシュ(脳で言えば作動記憶)があり、ソコに収まればCPUの足を引っ張らずに済む。

 ※この時点で、演算能力(思考)に対し、作動記憶と短期記憶の容量と速度(帯域)が重要なことがわかる。マルチコアを右脳・左脳(またはCPUとGPU)に例えるならばその(脳梁)接続帯域も然り。

 仮に500バイトの配列を100万回分全てキャッシュすると500MBにもなり、一般的な1次キャッシュ64KB、二次キャッシュ256KB、3次キャッシュ8MBに収まらずメインメモリに展開される(わかりやすい構成図はこちら)。

 ※基本情報技術者試験にキャッシュとそこにデータがあった場合のヒット率、1-ヒット率分メインメモリにアクセスした場合の時間の計算があるのでこれもリンクで済ませたい。

 そこにも入りきれなければハードディスクやSSDなどの補助記憶装置(ストレージ)に展開される(スワップ)。メインメモリと比べても読み書き速度は極めて遅く、ボトルネックどころかレベル。全体に悪影響を及ぼす。

 ※ストレージは、脳で言えば長期記憶と言いたいところだが、ストレージへのアクセスは毎回辞書を引くようなものなので、ココでは「記憶(メモリ)にない」と見なした方が妥当だから長期記憶とは呼ばないでおく。

 データとは少なければ少ないほど“速い”というわけでもなく、ハードディスクで例えるなら1セクタ512バイトのところに640バイト書き込めば、2セクタ目は128バイト使用(384バイト無駄)となり、円盤上のセクタの集合が回転しているのだから(わかりやすい図はこちら)、この余白部分は“回転待ち”となり、CPUはデータ待ち時間が増える。同時に単位サイズ未満のセクタが増えるので記録できる容量も減る。

 ※基本情報処理技術者試験にこれらの計算問題があるので説明は省略したい。またSSDの時代なのでいずれ不要な知識になるが同じく基本情報処理技術者試験にもうちょっと構造理解を深めた問題があるので参考までに。

 またCPUに与える演算命令も単位があり、64bitなら処理単位である(8bit=1バイト)×8バイトのまとまりである場合に最も高速化される。これは8人乗りのエレベータに6人載せて運ぶより満員の方が効率が良いのと同じ。

/*
 ヒトの脳にも得意とする単位があり、遺伝子検査(ジーンライフ)の「情報処理速度」を見ると、私は-4-choice RT-が最も速いが-8-choice RT-では標準とある。人によって最適な処理単位が異なると考えられる。
*/

 メモリに対しても、できるだけ1つ1つの処理がキャッシュに収まるようなコードを書くのが高速化のノウハウだが、メインメモリに送られるくらいならいっそ毎回全て捨てた(フラッシュした)方が速い場合もある。

 ※Cambridge Brain Sciencesで言えば “DOUBLE TROUBLE”は毎回フラッシュした方が良い代表例。

 これらの判断を人の心理に例えると、「後で使うかも」意識が強すぎ必要のないものをいつまでも保持して保管場所が足りなくなる人と、何でもかんでも断捨離しすぎて必要な時に手元になく機動性に欠ける人といる。

 前者は効率良く使い回しできれば(=キャッシュヒット率が高ければ)モノを有効活用できるが、保管場所にコストがかかる場合はいつか必要になった時にもう一度購入する方が安上がりかもしれない。土地の高い都会は特に。

 後者は保管コストを抑えることができるが、捨てた途端必要になることもあり(=キャッシュヒット率が低い)、何度も同じものを購入しモノを無駄にするかもしれない。

 どちらが良いわけでもなくバランスが必要なことを意味する。後で使い道があるかないかの判断能力。または計画性(情報の仕分け)。或いは予測能力(CPUでは分岐予測力を高めている)。

 優秀なコンパイラや高速なインタプリタとはそこを最適化する機能が優れている。

 ヒトの脳でも同じで、入ってきた情報を「使い道がない」「さっきのソレと今のコレは関係ない」と判断してすぐ記憶から消してしまう人は“点”が“線”になっていかないし(細切れで「文脈」に弱い)シナプスの結合が弱い(狭い)。その反対に「あれとこれは関係あるかも」が強すぎて妄想性障害のようになる人もいる。偶然を偶然として処理できず変質的に拘ってしまう人。陰謀論に取り憑かれる人とか。

 演算(思考)だけが賢さの指標とはならず、このデータの仕分けセンスの方がより対外的に表出しやすい(評価対象となりやすい)。と私は感じる。

 という感じで、第三シーズンはこれからネイティブに情報処理教育を受ける人達向け(ITSSレベル1-2)の内容にしていきたい。