AS/400発表時にはアーキテクチャの資料が色々あったのですが最近見ないので再録してみたいと思います。
古い情報がベースのものもあり、最新では変わっているところもあるかもしれません。。アーキテクチャー的な根本は現代のIBM i でも変わっていないと思います。
もし、ここ違うよ!をご存じの方がいればご教示ください‥^^;
IBM i 複数論理コピー Multiple Logical Copies
・IBM i のOPM, ILEプログラムはコンパイルで生成されるプログラム・コードは内部的にプログラムコード部分とデータ域部分に分類できます。
・このプログラムを実行するとメインメモリ(SLS)上にロードされます。一般的なコンピューターでは1つのプログラムでも複数ユーザー・ジョブが実行すると複数のプログラム・コードがメモリ上に存在していると思いますが、IBM i ではメインメモリ上ではプログラムコードは1つしか存在しません。
・個々のユーザー・ジョブが使用するデータ域はそれぞれ個別に作成されます。このデータ域をPAG(Process Access Group)と呼びます。
※PAGは別記事にしたいと思います。
メインメモリ上に展開されたプログラムコードはユーザー・ジョブの実行形態(たとえば5250対話型ジョブ、SBMJOB、外部からのプログラムコール,etc.)に関わらず全てのジョブで共用されます。
プログラムコードとPAGは、プログラム実行時に必要部分がメインメモリ上に存在している必要があります。
MLPのパフォーマンス上のメリット
以下の3点があります。
1.同時に同一プログラムが複数実行された際に使用されるメインメモリの節約
2.プログラム・コードを複数ジョブのそれぞれからストレージ->メインメモリにロードする必要が無いためディスクアームビジー率※1が低減される
3.プログラム・コードを共有したジョブはプログラム・コードのロードに要するディスクI/Oの時間が節約される。結果、応答時間の向上が期待できる。
以上はIBM i OS(含むマイクロコード層)が自動的に実現し、ユーザーが何らかの操作を指定する必要はありません。
プログラム・コードがストレージからメモリにロードされる際は、4KBのページ単位で実行されます。
※1ディスクアームビジー率
元来はHDDを前提にした用語。HDDにはそれぞれのHDD装置に装備されたアームを物理的に動作(シーク)させて円盤上に記録されたデータを探しに行き、目的のデータを読み取りします。このシーク時間やデータを実際に読み取っている時間をアームビジー率と呼びます。近年のSSD,NVMeでは物理的に動作するアームのような部品は無いため、アームビジー率=ストレージ装置がI/O命令を実行(ストレージ上のデータを探しに行く、データを取得する、等)している単位時間当たりの割合、というべきでしょうか。