IBM i (AS/400) 単一レベル記憶:シングル・レベル・ストレージ(SLS)
お待ちかね?、IBM i (AS/400)のオハコ、SLSについて説明します。
IBM i の最も特徴的なアーキテクチャーの一つだと思います。初版はS/38実装時なのでなんと1978年に出荷開始しているという相当な歴史モノでもあります。
SLSの特徴
1.一般コンピューターではメインメモリとストレージは別々なアドレス空間として管理されています(メモリ⇔ストレージ間のデータ操作時にアドレス変換が必須になる)が、IBM i では1つのアドレスでメインメモリとストレージの両方を管理しています。管理するアドレスが1つしかないから、単一レベル記憶(Single Level Storage)ですね。
アドレス変換は地味にパフォーマンスを喰う処理なのでこれが無い事のメリットは特に大量データベース処理などでは顕著に貢献していると思います。
2.SLSのS/W的な実装はIBM iの下層レイヤーであるSLICマイクロコードでなされています。SLICより上位層のIBM i OS、ユーザーアプリケーションからはすべてのデータはメインメモリー上に存在しているのと同一に扱われます。
3.と言ってもメインメモリサイズは有限です。2023年現在のIBM i システムでは32GB~数TB辺りがメジャーではないでしょうか。ではメモリ上に存在しないデータは?というとSLICマイクロコードがストレージに探しにいってメインメモリ上にコピー操作を実行します。ここは純粋にマイクロコード層だけで関係し、IBM i OS(もユーザーアプリも)関係しません。
ココもパフォーマンス向上に貢献する実装だと思います。
4.メインメモリ上のデータは基本的にはLRU(Least Recently Used)アルゴリズムでストレージに書き出しされます。(※バリエーションは色々ありますがいくつかは別記事で紹介できると思います。)
5.SLSの特徴として物理的なストレージ装置から独立して設計されている点があります。このため物理的なストレージデバイスはHDD, SSD, NVMeなどが混在しても単一のストレージ空間として利用できます。上図は模式図です。あらゆるIBM i H/W構成で上記のような混在が可能という事ではありませんのでご注意ください。
IBM i はストレージ装置の階層管理機能をOSレイヤーで標準でもっている
IBM i SLSは一般のストレージ装置が持っているストレージ各デバイス毎の処理性能に応じてデータを階層管理する機能も標準で搭載しています。たとえば、よく使用されるホットデータはNVMeやSSDなど高速なストレージに寄せて、あまり使わないコールドデータはHDDに自動的に寄せてくれるような動作をオートマチックで実行しています。
SLSが生まれ出た経緯は‥?
・・・SLSの発端は、「すべてのプログラム、データがメインメモリ上に存在できるコンピューター(ディスクなどの補助記憶域の無いコンピューター)を考えようや」、という事だったと聞いています(日本でも有名なフランク・そるティス博士らがいたチームですね)。
ところで、その当時(197x年頃)の商用コンピューターのメインメモリサイズは128KB〜とかだったはずなので、まあ火星旅行みたいな構想だったのかなあ・・と個人的には思います。
こういう発想をする技術者の方々をホント尊敬します‥(凡人の自分には絶対無理・・^^;)
SLSの動作
つづく・・