上の無料画像はいわゆる学校カーストめいたものを拝借してきましたが。昨今では会社ではフラット組織の方が経営成績良かったりする反面、就学の場ではカースト的な身分制度現象が意識されがちです。
実はメモリー階層というのはこのカースト的身分階層と結構似ています。あまり身分差別的な発言は好きではないので濁しますが学校カーストでは上位なほどメンバーへの「影響力」が強い、くらいにと表現しておきましょう。
メモリー階層をピラミッドの上下順に並べてみましょう。
- レジスタ
- キャッシュ一次
- キャッシュ二次
- キャッシュ三次
- 主記憶装置(RAM)
- 補助記憶装置(ROM、PCとかではSSDやHDD)
※アウトローな記憶装置とか
- 外部記憶装置(micro-SD/SDHC/SDXC)
- クラウドや外付けHDDなど真の意味で外部設置の記憶装置
スマホメモリーの最上位層、レジスタや一次キャッシュメモリ
最上位層の特徴はカーストで説明するとメンバーに対する発言力・影響力が大きいとか、人数が少ないことを意味しますね。
メモリーの最上位層であるレジスタや一次キャッシュ(L1 cashe memory) も同様です。L1キャッシュは容量がとっても少ない(※64バイトXライン本数とか)ですが、とっても高速なメモリーを使っています。実は高級品なのであまり奮発して使えないのです。
CPUのコア毎にL1キャッシュを置いたほうが距離的に近く速度も出やすいためそうした配置(コアごとにL1を与える)になっています。また役割別に少なくとも二種類(R/W)のL1キャッシュが必要です。
レジスタ(register) とはマシン(機械)語で扱うバイナリデータの入れ物です。容量はL1よりもさらに小さく4バイトとかせいぜい8バイト(に加えて隠しバイトがあったりするが)程度です。その代わりCPU上には幾種類ものレジスタがあり、それぞれ役割分担して異なった用途のデータを一時的保管します。
なお、バイナリとは0と1の並びのことですが、回路的には二種類の電圧です。ですがコンピュータのデータは数学的に置き換えることが可能ですから二進法とか16進法で表現しても大丈夫なのです。
スマホの処理速度を高めるための覚え書き=L2, L3キャッシュメモリ
キャッシュメモリーはRAMに一度入ったデータを再び再利用するための記憶装置です。すでに説明したとおり一次から三次までのキャッシュメモリーはその順番で容量と速度のトレードオフ(二律背反)の関係にあります。とはいえ主記憶装置であるRAMよりはるかに高速処理(※高速なデータ転送)ができます。
しかもL1キャッシュよりは幾分容量に余裕が有ります。ラインやR/W(読み、書き)に分かれてはいますが総容量ではL2やL3は数M(メガ)バイトから10数メガバイトといった大容量なので実践的かつ大量の覚え書きが可能なのです。
L2キャッシュは各CPUコア(※マルチコアCPUを組織している、単体の実CPU)にそれぞれ割り当てられがちですが、L3は各コア共通の場合が多いようです。最近のスマホでは4X2のように2段階の仕事レベルにコアが分配されていますが、その場合はL3も上位コア4つ用と低位コア4つ用に分けたほうが効率的かもしれませんね。
スマホの主メモリー、RAM(ラム)の重要性
このサイトでは少しくどいくらいにRAMを多めに積んだスマホを選びましょう、と言ってきました。その理由説明にはなるでしょうか。
レジスタはいうにおよばず、キャッシュメモリーは高価である為たくさんの容量をまかないきれません。データを入れる上限がせいぜい数Mバイトとかですから、GB(ギガバイト)であらわすと、0.004GBとかになってしまいます。
4MBは0.004GB。
android スマホのRAM(ラム)は2GB(ギガバイト)以上欲しいですね、とこのサイトではたびたび主張してきました。そうです、キャッシュメモリーだけでは実際の処理では容量的に不足なのです。
RAMは主記憶装置というくらいですから、CPU(中央演算処理装置)が計算等処理するための一時的もしくは起動中のデータ(※プログラムも含むしOS実行形式等も含む)のおき場所がRAMであります。
キャッシュメモリー(L1,L2,L3)はいわばチート(いんちき?)行為なのです本来の意味では。CPUの速度を飛躍的に高めるための。
ですから本来の処理速度はRAMの容量と密接な関係にあります。もしRAMが足りないと、それでももっとよこせとCPUがおっしゃる場合には。記憶装置・記憶容量の助っ人が必要になってくるし外部から調達するわけです。
外部から調達する擬似的・一時的な主記憶(のかわり)を担当するのが、スマホではROM(ロム)と呼ばれている補助記憶装置の役割となります。
ROM(ロム)と呼ばれる補助記憶装置はスワップ領域でもある
ROM(ロム)は本来、半永久的(まあ数年レベルですが)にデータを保存するための記憶装置です。具体例をあげますと、OSプログラムや予備データ、各種アプリのプログラムや予備データ。及びスマホを扱う本人の個人情報とか画像や動画やゲーム記録やダイエット記録、ブラウザの閲覧記録やブックマークその他もろもろ・・・がROM上に保管されます。
そしてもう一つの使われ方が、スワップ領域としてです。主記憶RAM(ラム)の代替的使用を兼ねるのがROM(ロム)の空いた領域で行われます。
具体的には、RAM(ラム)でしばらくアクセスされないことがまず確実である変更されないであろうデータ郡を、ROM(ロム)の空いた領域へ一時的に退避します。RAM上の不変的データを外部に逃がす事により、可変的・変更を伴うデータを入れるための領域を確保する訳ですね。
何故そんなことをするのかというと。そうやってRAM(ラム)を空けることで、滞っているCPUの仕事のための主記憶容量を確保するのです。ちなみにROMとCPUでやりとりするのは処理が遅くなりすぎるので、RAMをなんとか空けようとするわけですが。
以上がスワップ処理なのですが。
でもRAMが頻繁(ひんぱん)にROMへ退避したりとか、ROMの空きがないため退避ができないといった状況になると、スワップ処理への抵抗が重いとかスワップ不可能な状況を意味します。
結果としてアプリが重くなったり、アプリが落ちたり(突如終了)、最悪スマホがフリーズして反応しなくなったりします。スワップすら困難な状況になると往々にしてそうした現象に見回れます。
メモリー階層における、アウトローな存在(外部記憶装置)
海外の学校カーストですと、ヤンキーとかハイソサイエティの子女がそれに相当しますが。メモリー階層ではmicro-SD(SDHC/SDXC)とかクラウドなどがスマホにとってはアウトローなメモリーたちです。
スマホに搭載されているかもしれない外部記憶装置
かもしれない、と言ったのは搭載されないスマホも一部あるからです。iPhoneとかが代表的ですが、一部のandroid スマホでもmicro-SDシリーズを搭載していない端末があります。
これは取り外し可能な拡張補助記憶装置、ととらえるとよいでしょう。ROM(ロム:補助記憶装置)に入りきらない、入れるのにはどっちかというとふさわしくないデータを保管するのに適しています。
代表的なものが音楽データとか動画データ、写真などですね。
本当に外部にある、スマホ用外部記憶装置
一つはクラウド。スマホを契約すると無条件で使えるクラウドが幾つかあります。ネットを経由して使うアプリの中でもクラウドや同等のサーバーを用意してくれているサービスがたくさんあるようです。
クラウドは容量も大きいものが多くて気軽に使える印象がありますが、実はセキュリティリスクやデータ紛失リスクと背中合わせです。
もちろんクラウドの運営会社は最大限の注意を払ってクラウドを運営管理している、はずですが。でもスマホユーザーがほとんど皆クラウドを使うという状況を一度想像してみてください。そうです、頻繁にアクセスされデータの出し入れがたくさん行われている状況なのです。
行動回数が増えればミスが発生する確率は高くなります。予期しない行動によりクラウド(サーバー)が落ちたり個人情報を流出させたりといった可能性も少なからずあり(そして実際に起こったりしてい)ます。
二つ目は、自前で用意するサーバー、あるいは自宅や会社に用意する外部記憶装置。
事実上公的な存在であるクラウドと比べると。自己責任ではありますが、管理がうまくいっていれば問題は発生しません。他者の失敗や不手際による情報流出とかデータ紛失の心配がない、という意味では。
でも面倒ですよね、自分で外部データへの移し変えをしたりバックアップしたりとか。だからクラウド利用上のメリットが大きいのですが。
セキュリティ重視派はクラウドより自前サーバー、自前の外部記憶装置にそれ用のデータを保管する傾向があるようです。