(57)【特許請求の範囲】
【請求項１】
複数のＲＡＭと、メモリコントローラーとを備えた主記憶装置において、
前記複数のＲＡＭがそれぞれ複数のバンクに分割され、且つ、
前記メモリコントローラーが、
第１の物理アドレス生成論理あるいは第２の物理アドレス生成論理を選択する選択情報が設定されるアドレスモードレジスタと、
前記選択情報によって第１の物理アドレス生成論理が選択されている場合は、連続する論理アドレスを、ＲＡＭの先頭バンクから最終バンクを順次アクセスし、該最終バンクをアクセスした後、別ＲＡＭの先頭バンクをアクセスする物理アドレスに変換するという第１の物理アドレス生成論理により、演算処理装置から発行された論理アドレスを物理アドレスへ変換し、前記選択情報によって第２の物理アドレス生成論理が選択されている場合は、連続する論理アドレスを、ＲＡＭの先頭バンクから最終バンクまでを繰り返しアクセスし、該最終バンク内の最終位置までアクセスした後、別ＲＡＭの先頭バンクをアクセスする物理アドレスに変換するという第２の物理アドレス生成論理により、前記演算処理装置から発行された論理アドレスを物理アドレスに変換するアドレス生成回路と、
任意の期間に前記主記憶装置が処理したメモリアクセスリクエスト数をカウントするスループットカウンタと、
任意の期間に発生したビジーによるリクエスト発行待ち時間をカウントするビジーカウンタと、
前記アドレス生成回路の物理アドレス生成論理を前記第１の物理アドレス生成論理にしてプログラムを実行したときの前記スループットカウンタのカウント値と前記ビジーカウンタのカウント値との比率と、前記アドレス生成回路の物理アドレス生成論理を前記第２の物理アドレス生成論理にして前記プログラムを実行したときの前記スループットカウンタのカウント値と前記ビジーカウンタのカウント値との比率とに基づいて、前記選択情報によって選択する物理アドレス生成論理を決定する制御手段とを備えたことを特徴とする主記憶装置。
【請求項２】
請求項１記載の主記憶装置において、
メモリ保存用ディスク装置を備え、
前記制御手段が、前記アドレスモードレジスタに選択情報を設定する前に前記各ＲＡＭに記憶されているデータを前記メモリ保存用ディスク装置に退避させ、前記選択情報を設定した後、該設定した選択情報によって示される物理アドレス生成論理を用いて前記メモリ保存用ディスク装置に退避させておいたデータを前記各ＲＡＭに書き戻すことを特徴とする主記憶装置。
【請求項３】
複数のＲＡＭを備え、且つ前記複数のＲＡＭがそれぞれ複数のバンクに分割された主記憶装置のアドレス制御方法であって、
第１の物理アドレス生成論理あるいは第２の物理アドレス生成論理を選択する選択情報が設定されるアドレスモードレジスタと、
任意の期間に前記主記憶装置が処理したメモリアクセスリクエスト数をカウントするスループットカウンタと、
任意の期間に発生したビジーによるリクエスト発行待ち時間をカウントするビジーカウンタとを設け、
アドレス生成回路が、前記選択情報によって第１の物理アドレス生成論理が選択されている場合は、連続する論理アドレスを、ＲＡＭの先頭バンクから最終バンクを順次アクセスし、該最終バンクをアクセスした後、別ＲＡＭの先頭バンクをアクセスする物理アドレスに変換するという第１の物理アドレス生成論理により、演算処理装置から発行された論理アドレスを物理アドレスへ変換し、前記選択情報によって第２の物理アドレス生成論理が選択されている場合は、連続する論理アドレスを、ＲＡＭの先頭バンクから最終バンクまでを繰り返しアクセスし、該最終バンク内の最終位置までアクセスした後、別ＲＡＭの先頭バンクをアクセスする物理アドレスに変換するという第２の物理アドレス生成論理により、前記演算処理装置から発行された論理アドレスを物理アドレスに変換し、
制御手段が、前記アドレス生成回路の物理アドレス生成論理を前記第１の物理アドレス生成論理にしてプログラムを実行したときの前記スループットカウンタのカウント値と前記ビジーカウンタのカウント値との比率と、前記アドレス生成回路の物理アドレス生成論理を前記第２の物理アドレス生成論理にして前記プログラムを実行したときの前記スループットカウンタのカウント値と前記ビジーカウンタのカウント値との比率とに基づいて、前記選択情報によって選択する物理アドレス生成論理を決定することを特徴とする主記憶装置のアドレス制御方法。
【請求項４】
請求項３記載の主記憶装置のアドレス制御方法において、
メモリ保存用ディスク装置を設け、
前記制御手段が、前記アドレスモードレジスタに選択情報を設定する前に前記各ＲＡＭに記憶されているデータを前記メモリ保存用ディスク装置に退避させ、前記選択情報を設定した後、該設定した選択情報によって示される物理アドレス生成論理を用いて前記メモリ保存用ディスク装置に退避させておいたデータを前記各ＲＡＭに書き戻すことを特徴とする主記憶装置のアドレス制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータシステムの主記憶装置に関し、特に、主記憶装置のスループットを向上させるアドレス制御技術に関する。
【背景技術】
【０００２】
複数のＲＡＭを備え、且つ、各ＲＡＭが複数のバンクに分割されている主記憶装置においては、一般的に、連続する論理アドレスを、ＲＡＭの先頭バンクから最終バンクまでを繰り返しアクセスし、最終バンク内の最終位置までアクセスしたら、別ＲＡＭの先頭バンクから最終バンクまでを繰り返しアクセスする物理アドレスに変換するという物理アドレス生成論理により、演算処理装置から発行された論理アドレスを物理アドレスに変換するようにしている。従って、例えば、ＲＡＭ＃１、＃２を備えた主記憶装置においては、演算処理装置から連続する論理アドレスが発行された場合には、図１２に示すように、ＲＡＭ＃１のＢＡＮＫ００〜ＢＡＮＫ０７が繰り返しアクセスされ、ＢＡＮＫ０７内の最終アドレスがアクセスされた後、ＲＡＭ＃２のＢＡＮＫ０８〜ＢＡＮＫ１５が繰り返しアクセスされる。
【０００３】
一方、特許文献１には、コンピュータシステムのメモリに関し、ＲＡＭインタフェースが異なる（メモリコントローラーとＲＡＭ間の電気的・論理的インタフェースが異なる）ＲＡＭ毎に、アドレス生成論理を切り替える技術が記載されている。
【０００４】
【特許文献１】特開２００４−２１３３３７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ＲＡＭ＃１、＃２がサイクルタイムが短い高速ＲＡＭの場合には、演算処理装置から連続する論理アドレスが発行された際に、図１２に示すようにＲＡＭ＃１のＢＡＮＫ００〜ＢＡＮＫ０７を繰り返しアクセスし、その後、ＲＡＭ＃２のＢＡＮＫ０８〜ＢＡＮＫ１５を繰り返しアクセスするようにしても問題は生じないが、ＲＡＭ＃１、＃２が低速ＲＡＭの場合には、主記憶装置のスループットが低下するという問題が生じる。即ち、ＲＡＭ＃１、＃２が低速ＲＡＭの場合には、最終バンクＢＡＮＫ０７、１５をアクセスした後、先頭バンクＢＡＮＫ００、０８をアクセスしようとするが、その時点では、ＢＡＮＫ００、０８の出力が確定していないため、ＢＡＮＫ００、０８の出力が確定するのを待たなければならず（バンクコンフリクト）、その分、主記憶装置のスループットが低下してしまう。
【０００６】
また、特許文献１には、コンピュータシステムのメモリに関し、ＲＡＭインタフェースが異なるＲＡＭ毎に、アドレス生成論理を切り替える技術は記載されているが、上記した課題、その解決手段については全く記載されていない。
【０００７】
〔発明の目的〕
そこで、本発明の目的は、主記憶装置が低速ＲＡＭによって構成されている場合であっても、スループットを大きくできるようにすることにある。
【課題を解決するための手段】
【０００８】
本発明にかかる第１の主記憶装置は、
複数のＲＡＭと、メモリコントローラーとを備えた主記憶装置において、
前記複数のＲＡＭがそれぞれ複数のバンクに分割され、且つ、
前記メモリコントローラーが、
連続する論理アドレスを、ＲＡＭの先頭バンクから最終バンクを順次アクセスし、該最終バンクをアクセスした後、別ＲＡＭの先頭バンクをアクセスする物理アドレスに変換するという第１の物理アドレス生成論理により、演算処理装置から発行された論理アドレスを物理アドレスへ変換するアドレス生成回路を備えたことを特徴とする。
【０００９】
本発明にかかる第１の主記憶装置のアドレス制御方法は、
複数のＲＡＭを備え、且つ前記複数のＲＡＭがそれぞれ複数のバンクに分割された主記憶装置のアドレス制御方法であって、
アドレス生成回路が、連続する論理アドレスを、ＲＡＭの先頭バンクから最終バンクを順次アクセスし、該最終バンクをアクセスした後、別ＲＡＭの先頭バンクをアクセスする物理アドレスに変換するという第１の物理アドレス生成論理により、演算処理装置から発行された論理アドレスを物理アドレスへ変換することを特徴とする。
【発明の効果】
【００１０】
本発明によれば、主記憶装置を構成するＲＡＭが低速ＲＡＭであっても、主記憶装置のスループットを大きなものにすることにある。
【発明を実施するための最良の形態】
【００１１】
次に、本発明を実施するための最良の形態について図面を参照して詳細に説明する。
【００１２】
〔本発明の実施の形態〕
図１を参照すると、本実施の形態にかかるコンピュータシステムは、中央処理装置（ＣＰＵ）１と、主記憶装置（ＭＭＵ）２と、磁気ディスク装置などによって実現されるメモリ保存用ディスク装置５とから構成されている。
【００１３】
主記憶装置２は、メモリコントローラー３と、記憶部４とを備えている。
【００１４】
記憶部４は、複数のＲＡＭ４−１〜４−４から構成されており、各ＲＡＭ４−１〜４−４は、それぞれ８バンク構成になっている。また、ＲＡＭ４−１、４−２はメモリチャネル（メモリＣＨ）番号＃０のバスによりメモリコントローラー３と接続され、ＲＡＭ４−３、４−４はメモリＣＨ番号＃１のバスによりメモリコントローラー３と接続されている。
【００１５】
メモリコントローラー３は、アドレスモードレジスタ３−１と、メモリアクセス制御回路３−２と、スループットカウンタ３−３と、ビジーカウンタ３−４と、アドレス生成回路３−５とから構成されている。
【００１６】
アドレスモードレジスタ３−１は、アドレス生成回路３−５の物理アドレス生成論理を切り替えるために使用するレジスタであり、第１或いは第２の物理アドレス生成論理Ａ、Ｂを選択するための選択情報として、“０”あるいは“１”が格納される。アドレスモードレジスタ３−１の設定は、オペレーティングシステム（ＯＳ）やメモリアクセス制御部３−２によって行われる。
【００１７】
メモリアクセス制御部３−２は、演算処理装置１が発行する主記憶装置に対するアクセスリクエスト（書き込み、読み出し命令）に従って記憶部４を構成するＲＡＭを制御するためのチップイネーブル信号やライト・リードイネーブル信号などを生成する他、ＲＡＭスペックに従い、ＲＡＭへの制御信号の送出タイミング間隔制御（ビジー制御）を行う。更に、メモリアクセス制御部３−２は、ＯＳからカウンタ測定開始指示があった場合、スループットカウンタ３−３、ビジーカウンタ３−４のカウント動作を開始させ、ＯＳからカウンタ読み出し指示があった場合、スループットカウンタ３−３、ビジーカウンタ３−４のカウント値をＯＳに渡す。更に、ＯＳからアドレス割付け切り替え指示があった場合は、その内部に設けられているアドレス切り替え中フラグをセットする処理、記憶部４の内容をメモリ保存用ディスク装置５にコピー（退避）する処理、アドレスモードレジスタ３−１に設定する選択情報の値を物理アドレス切り替え指示によって指示された物理アドレス割付け種別に対応した値に変更する処理、メモリ保存用ディスク装置５に退避しておいたデータをＯＳから指示された物理アドレス割付け種別の割付方法で記憶部４に書き戻す処理、アドレス切り替え中フラグをリセットする処理を順次行う。
【００１８】
アドレス生成回路３−５は、演算処理装置１から発行されたアドレス（論理アドレス）を、記憶部４を構成するＲＡＭを制御するための物理アドレスに変換する。その際、アドレスモードレジスタ３−１の値が“０”であれば、第１の物理アドレス生成論理Ａを用いて論理アドレスを物理アドレスに変換し、“１”であれば第２の物理アドレス生成論理Ｂを用いて論理アドレスを物理アドレスに変換する。なお、第１、第２の物理アドレス生成論理Ａ、Ｂについては後で詳しく説明する。
【００１９】
スループットカウンタ３−３は、任意の期間に主記憶装置２が処理したメモリアクセスリクエスト数をカウントするためのカウンタである。ビジーカウンタ３−４は、任意の期間に発生したビジーによるリクエスト発行待ち時間をカウントするためのカウンタであり、図２に示すように、ビジーの種類毎のカウンタ３−４ａ〜３−４ｃを備えている。カウンタ３−４ａは、図３（ａ）に示すような同一バンク連続アクセス時の待ち時間（ビジー時間）をカウントし、カウンタ３−４ｂは図３（ｂ）に示すような同一ＲＡＭ内の別バンクへの連続アクセス時の待ち時間をカウントし、カウンタ３−４ｃは図３（ｃ）に示すようなメモリＣＨ内のデータバスに接続される異ＲＡＭ間連続アクセス時の待ち時間をカウントする。なお、図３（ｃ）に示す待ち時間（バスコンフリクト時間）は、一般的にＲＡＭ単体のスピードランク（サイクルタイム）とは無関係であり、バスの物理構成（配線長、バスに接続されるデバイス数）に依存する。
【００２０】
〔実施の形態の動作の説明〕
次に、本実施の形態の動作について詳細に説明する。なお、本実施の形態にかかるコンピュータシステムは、通常モード、ダイナミック割付けモード、自動最適化モードの３つのモードで動作可能になっている。
【００２１】
〔通常モード時の動作〕
先ず、通常モード時の動作について説明する。通常モード時で動作させる場合には、先ず、記憶部４を構成するＲＡＭ４−１〜４−４のスピード（サイクルタイム）に応じた値をアドレスモードレジスタ３−１に設定する。ＲＡＭ４−１〜４−４が低速のＲＡＭである場合には、“０”を設定し、高速のＲＡＭである場合には“１”を設定する。この設定は、例えば、管理者がＯＳに対してアドレスモードレジスタ３−１に設定する値を指示し、この指示を受けたＯＳが指定された値をアドレスモードレジスタ３−１に設定する。その後、ＯＳはプログラムの実行を指示する。
【００２２】
メモリアクセス制御部３−２は、プログラムの実行に伴って演算処理装置１が発行する主記憶装置２に対するアクセスリクエスト（書き込み、読み出し命令）に従って記憶部４を構成するＲＡＭを制御するためのチップイネーブル信号やライト・リードイネーブル信号などを生成する。また、アドレス生成回路３−５は、演算処理装置１から発行されたアドレス（論理アドレス）を、記憶部４を構成するＲＡＭを制御するための物理アドレスに変換する。その際、アドレス生成回路３−５は、図４のフローチャートに示すように、アドレスモードレジスタ３−１の値が“０”であれば（ステップＳ４０１がＹＥＳ）、第１の物理アドレス生成論理Ａを用いて物理アドレスを生成し（ステップＳ４０２）、“１”であれば（ステップＳ４０１がＮＯ）、第２の物理アドレス生成論理Ｂを用いて物理アドレスを生成する（ステップＳ４０３）。
【００２３】
図５（Ａ）、（Ｂ）は、それぞれ第１、第２の物理アドレス生成論理Ａ、Ｂを用いて物理アドレスを生成した際のアドレス割付けを示した図である。第１の物理アドレス生成論理Ａでは、図５（Ａ）に示すように、論理アドレスの最下位ビット［第０ビット］を物理アドレスのメモリＣＨ番号を示すビット位置に配置し、論理アドレスの次の３ビット［第１ビット〜第３ビット］を物理アドレスのＲＡＭ内バンク番号を示すビット位置に配置し、論理アドレスの次の１ビット［第４ビット］を物理アドレスのメモリＣＨ内グループ（ＧＲＰ）番号を示すビット位置に配置し、論理アドレスの残りのビット［第５ビット〜第（ｎ−１）ビット］を物理アドレスのバンク内アドレスを示すビット位置に配置することにより、物理アドレスを生成する。このようなアドレス割付けを第１のアドレス割付けＡと称す。また、第２の物理アドレス生成論理Ｂでは、図５（Ｂ）に示すように、論理アドレスの最下位ビット［第０ビット］を物理アドレスのメモリＣＨ番号を示すビット位置に配置し、論理アドレスの次の３ビット［第１ビット〜第３ビット］を物理アドレスのＲＡＭ内バンク番号を示すビット位置に配置し、論理アドレスの最上位ビット［第（ｎ−１）ビット］を物理アドレスのグループ番号を示すビット位置に配置し、論理アドレスの残りのビット［第４ビット〜第（ｎ−２）ビット］を物理アドレスのバンク内アドレスを示すビット位置に配置することにより、物理アドレスを生成する。このようなアドレス割付けを第２のアドレス割付けＢと称す。
【００２４】
従って、第１の物理アドレス生成論理Ａを用いた場合に、例えば、論理アドレスオール“０”番地から連続アクセスすると、ＢＡＮＫ００→ＢＡＮＫ０１→ＢＡＮＫ０２→…→ＢＡＮＫ３１→ＢＡＮＫ００→ＢＡＮＫ０１→…の順でアクセスされることになる。これを１つのメモリＣＨ内に限定すると、メモリＣＨ＃０では、ＢＡＮＫ００→ＢＡＮＫ０２→…→ＢＡＮＫ３０→ＢＡＮＫ００の順となり、ＲＡＭを跨ぐアクセスが行われたとき、即ちＢＡＮＫ１４→ＢＡＮＫ１６のときにバスコンフリクトが生じる可能性がある。
【００２５】
一方、第２の物理アドレス生成論理Ｂを用いた場合には、論理アドレスオール“０”番地から連続アクセスすると、ＢＡＮＫ００→ＢＡＮＫ０１→…→ＢＡＮＫ１４→ＢＡＮＫ１５の順のアクセスが複数回（グループ番号＃０のＲＡＭの全アドレスがアクセスされるまで）行われ、その後、ＢＡＮＫ１６→ＢＡＮＫ１７→…→ＢＡＮＫ３０→ＢＡＮＫ３１の順のアクセスが複数回行われる。これをメモリＣＨ内に限定すると、メモリＣＨ＃０では、ＢＡＮＫ００→ＢＡＮＫ０２→…→ＢＡＮＫ１４の順のアクセスが複数回行われた後、ＢＡＮＫ１６→ＢＡＮＫ１８→…→ＢＡＮＫ３０の順のアクセスが複数回行われる。この場合も、ＢＡＮＫ１４→ＢＡＮＫ１６のときにバスコンフリクトが発生する可能性があるが、第１の物理アドレス生成論理Ａを用いた場合に比較して、ＲＡＭを跨ぐアクセスが行われる頻度が少なくなるので、バスコンフリクトが発生する危険性が少なくなる。
【００２６】
図６にビジー時間の一例を示す。一般的なＤＤＲ−ＳＤＲＡＭ系のメモリデバイスは、データバス速度が数ｎｓであるのに対し連続アクセス時間が数十ｎｓであるため、ＲＡＭ内部を複数バンクに分割しインタリーブすることでバンク内のビジー時間を隠蔽している。従って、ビジーサイクルの内訳はおおよそ図６に示すようになる。図６では、低速、高速ＲＡＭそれぞれについて、同一ＲＡＭ内の同一バンクをライトアクセスする際のビジー時間、同一ＲＡＭ内の同一バンクをリードアクセスする際のビジー時間、同一ＲＡＭ内の異なるバンクを連続してリード或いはライトアクセスする際のビジー時間、同一ＲＡＭ内の異なるバンクに対してリードアクセス及びライトアクセスを順次行う場合のビジー時間、同一ＲＡＭ内の異なるバンクに対してライトアクセス及びリードアクセスを順次行う場合のビジー時間、異なるＲＡＭを連続してリード或いはライトアクセスする場合のビジー時間、異なるＲＡＭに対してリードアクセス及びライトアクセスを順次行う場合のビジー時間、異なるＲＡＭに対してライトアクセス及びリードアクセスを順次行う場合のビジー時間を示している。
【００２７】
図６から分かるように、低速ＲＡＭの場合、メモリスループットのネックとなるのは、ランダムアクセス（数バイト〜数百バイト程度の小規模アクセス）時の同一バンクアクセスによるところが大きい。従って、低速ＲＡＭの場合は、連続アドレス中のインタリーブ数（バンク数）が多いほど、メモリスループットが良いことになる。例えば、１メモリアドレス当たりのデータ幅を４バイトとした場合、連続２５６バイト内のインタリーブ数は、図５（Ａ）に示したアドレス割付けＡの場合には３２となり、同図（Ｂ）に示したアドレス割付けＢの場合には１６となるので、アドレス割付けＡの方が好ましいことになる。
【００２８】
一方、高速ＲＡＭ（例えば、ＦＣＲＡＭ）の同一バンクアクセスのビジー時間は低速ＲＡＭに比較して大幅に短く、バスコンフリクト時間の影響が無視できなくなり、実行するプログラムのメモリアクセス特性によっては、バスコンフリクトによるメモリスループット低下の影響が顕著に現れるケースがある。
【００２９】
図７にバンクコンフリクト、バスコンフリクトの影響を簡易的に計算した結果を示す。図７（Ａ）、（Ｂ）は、それぞれアドレス割付けＡ、Ｂについてのバンクコンフリクト、バスコンフリクトの影響を簡易計算した結果を示している。
【００３０】
アドレス割付けＡの場合は、図５（Ａ）に示すように、メモリＣＨ当たりのバンク数は１６であり、この１６バンクには連続するアドレスが割り振られているので、主記憶アクセス命令発行レートを１００％とすると、同一バンクを連続アクセスする確率は１／１６、同一ＲＡＭ内の異なるバンクをアクセスする確率は７／１６、メモリＣＨ内の他のＲＡＭをアクセスする確率は８／１６となる。上記した各場合の確率（ａ）と、上記した各場合の低速、高速ＲＡＭのビジー時間（ｂ）、（ｂ'）を掛け合わせた値が、上記した各場合の低速、高速ＲＡＭのビジー時間の指標値（期待値）となる。ここで、高速ＲＡＭ、低速ＲＡＭそれぞれについて、指標値の合計値を求めると、それぞれ「１４．２５」、「１７．２５」となる。この値が少ないほど、バンクコンフリクト、バスコンフリクトによるメモリスループットの低下が少ないことになる。
【００３１】
一方、アドレス割付けＢの場合も、図５（Ｂ）に示すように、メモリＣＨ当たりのバンク数は１６であるが、連続するアドレスが割り当てられるのは８バンクである。従って、バスコンフリクトが発生するのは、主記憶装置の記憶容量をｍバイトとした場合、ｍ／２バイト境界を跨ぐ連続アクセス時のみとなる。例えば、図５（Ｂ）に示した１個のＲＡＭの容量が１Ｇバイトであるとすると、１メモリＣＨ当たりのメモリ容量は２Ｇバイトとなる。プログラム実行時の主記憶アクセスの局所性に着目した場合、局所的なアドレス範囲が数Ｋバイト〜数Ｍバイトのプログラムを想定すると、上記ｍ／２バイト境界を跨ぐメモリアクセスによるバスコンフリクトの影響はほとんど無視できることが容易に推測できる。バスコンフリクトの影響を無視し、アドレス割付けＡの場合と同様にして低速、高速ＲＡＭのビジー時間の指標値を求めると図７（Ｂ）に示すものとなる。図７（Ｂ）に示すように、アドレス割付けＢの場合における、高速ＲＡＭ、低速ＲＡＭの指標値の合計値は、それぞれ「１３．５」、「１９．５」となる。
【００３２】
図７（Ａ）、（Ｂ）から分かるように、高速ＲＡＭの場合は、アドレス割付けＢの方が指標値の合計値が小さくなり、低速ＲＡＭの場合は逆にアドレス割付けＡの方が指標値の合計値が小さくなる。
【００３３】
従って、記憶部４を構成するＲＡＭ４−１〜４−４が低速ＲＡＭの場合には、アドレスモードレジスタ３−１に“０”を設定してアドレス割付けＡが行われるようにし、高速ＲＡＭの場合にはアドレスモードレジスタ３−１に“１”を設定してアドレス割付けＢが行われるようにすることにより、主記憶スループットの低下を最小限に留めることができる。
【００３４】
〔ダイナミック割付けモード時の動作〕
次に、ダイナミック割付けモード時の動作について、図８及び図９を参照して説明する。本モードは、実行する各プログラムのアドレス割付け種別（アドレス割付けＡ、或いはアドレス割付けＢを示す）が予め決まっている場合に利用される。アドレス割付け種別は、例えば、プログラムのコンパイルオプション等で指定し、ＯＳはこの指定に基づいて、必要に応じてアドレス割付け種別を切り替える。なお、各プログラムのアドレス割付け種別は、各プログラムの特性（アクセスするアドレスの規則性）に基づいて、主記憶スループットの低下が少なくなるものを選択する。
【００３５】
アドレス割付け種別が予め決まっているプログラムＡ，Ｂがあって、プログラムＡの次にプログラムＢを実行する場合、図８のフローチャートに示すように、ＯＳは、現在実行中のプログラムＡが終了すると、次に実行するプログラムＢのアドレス割付け種別を調べ（ステップＳ８０１）、更に、アドレスモードレジスタ３−１を参照して現在のアドレス割付け種別を調べる（ステップＳ８０２）。その後、ＯＳはステップＳ８０１、Ｓ８０２で調べたアドレス割付け種別を比較する（ステップＳ８０３）。
【００３６】
そして、両者が一致する場合（ステップＳ８０３がＹＥＳ）は、直ちに次のプログラムＢの実行を指示する（ステップＳ８０６）。これに対して、両者が一致しない場合（ステップＳ８０３がＮＯ）は、メモリアクセス制御部３−２に対して、プログラムＢのアドレス割付け種別を含んだアドレス割付け切り替え指示を出力し（ステップＳ８０４）、アドレス切り替え中フラグがリセットされるのを待つ（ステップＳ８０５）。そして、アドレス切り替え中フラグがリセットされると（ステップＳ８０５がＹＥＳ）、プログラムＢの実行を指示する（ステップＳ８０６）。
【００３７】
次に、図９を参照して、アドレス割付け切り替え指示が入力されたときの、メモリアクセス制御部３−２の動作を説明する。但し、図９は現在のアドレス割付け種別がアドレス割付けＡであり、次に実行するプログラムＢのアドレス割付け種別がアドレス割付けＢである場合を示している。
【００３８】
ＯＳは、プログラムＡの実行が終了すると、プログラムＢのアドレス割付け種別（アドレス割付けＢ）を含んだアドレス割付け切り替え指示をメモリアクセス制御部３−２に対して出力する。
【００３９】
これにより、メモリアクセス制御部３−２は、先ず、アドレス切り替え中フラグをセットし（図９のステップＳ９０１）、演算処理装置１に対して主記憶アクセスの禁止を伝える。次いで、メモリアクセス制御部３−２は、記憶部４のデータをメモリ保存用ディスク装置５にコピーし（ステップＳ９０２）、コピーが終了した時点でアドレスモードレジスタ３−１の値をアドレス割付けＢに対応する値“１”に更新する（ステップＳ９０３）。その後、メモリアクセス制御部３−２は、アドレス割付けＢで、メモリ保存用ディスク装置５の内容を記憶部４に書き戻す（ステップＳ９０４）。この時点で、記憶部４のデータは、アドレス割付けＢに対応したものとなる。アドレス変換は、主記憶装置２内部に閉じているため、演算処理装置１−主記憶装置２間のアドレス読み替えは不要である。その後、メモリアクセス制御部３−２は、アドレス切り替え中フラグをリセットする（ステップＳ９０５）。これにより、ＯＳはプログラムＢの実行を指示する。
【００４０】
〔自動最適化モード時の動作〕
次に、自動最適化モード時の動作について、図１０及び図１１を参照して説明する。
【００４１】
ＯＳは、新たなプログラムの実行を指示する場合には、先ず、アドレスモードレジスタ３−１を参照して現在のアドレス割付け種別を調べる（図１０のステップＳ１００１）。今、例えばアドレス割付け種別がアドレス割付けＡであったとする。その後、ＯＳはメモリアクセス制御部３−２に対してカウンタ測定開始指示を出力すると共にプログラム実行指示を出力する（ステップＳ１００２、Ｓ１００３）。なお、ステップＳ１００３では、実行対象プログラムの代わりに、ユーザが用意している上記実行対象プログラムに対するテストプログラム（例えば、実行プログラムのデータ配列を小さくしたプログラム）の実行を指示するようにしても良い。
【００４２】
メモリアクセス制御部３−２は、カウンタ測定開始指示が入力されると、図１１に示すように、スループットカウンタ３−３及びビジーカウンタ３−４に対するカウンタリセット信号を出力した後、カウンタイネーブル信号を出力する。これにより、スループットカウンタ３−３は、主記憶装置２が処理するメモリアクセスリクエスト数のカウントを開始し、スループットカウンタ３−４は、リクエスト発行待ち時間のカウントを開始する。
【００４３】
一方、ＯＳは、プログラム実行指示を出力してから所定時間Ｔが経過すると、プログラムの停止を指示すると共に、メモリアクセス制御部３−２に対してカウンタ読み出し指示を出力する（ステップＳ１００４）。なお、テストプログラムを実行するようにした場合は、テストプログラムが終了してからカウンタ読み出し指示を出力する。
【００４４】
これにより、メモリアクセス制御部３−２は、カウンタイネーブル信号を“０”とし、スループットカウンタ３−３及びビジーカウンタ３−４のカウント値をＯＳに伝える。ＯＳは、アドレス割付けＡのときの両カウンタのカウント値を保持する（ステップＳ１００５）。なお、ビジーカウンタ３−４については、各カウンタ３−４ａ〜３−４ｃのカウント値の合計値を保持する。以下では、この合計値をビジーカウンタ３−４の合計値という。
【００４５】
その後、ＯＳは、アドレス割付けＡ、Ｂの内、アドレス割付けＡでしかスループット、リクエスト発行待ち時間を測定していないので（ステップＳ１００６がＮＯ）、アドレス割付け種別をアドレス割付けＢに変更するために、メモリアクセス制御部３−２に対してアドレス割付け切り替え指示を出力する（ステップＳ１００７）。これにより、メモリアクセス制御部３−２では、前述したステップＳ９０１〜Ｓ９０５と同様の処理を行う（図１１のステップＳ１１０１〜１１０５）。
【００４６】
ＯＳは、アドレス切り替え中フラグがリセットされると、再び、前述したステップＳ１００２〜Ｓ１００５の処理を行い、アドレス割付けＢのときの両カウンタのカウント値を保持する。
【００４７】
その後、ＯＳは、アドレス割付けがＡのときのスループットカウンタ３−３、ビジーカウンタ３−４のカウント値と、アドレス割付けがＢのときのスループットカウンタ３−３、ビジーカウンタ３−４のカウント値と、予め定められている判定基準とに基づいて、アドレス割付けＡ、Ｂの内のどちらを使用するか決定する（ステップＳ１００９）。ここで、判定基準としては、次のようなものを使用することができる。スループットカウンタ３−３のカウント値は、スループットが大きいほど大きくなり、ビジーカウンタ３−４のカウント値はスループットが大きいほど小さくなる。従って、例えば、アドレス割付けＡ、Ｂの内、スループットカウンタ３−３のカウント値が大きくなった方を使用するという判定基準を採用することができる。また、アドレス割付けＡ、Ｂの内、ビジーカウンタ３−４のカウント値が小さくなった方を使用するという判定基準を採用することもできる。また、アドレス割付けＡ、Ｂの内、スループットカウンタ３−３のカウント値とビジーカウンタ３−４のカウント値との比率（スループットカウンタ３−３のカウント値／ビジーカウンタ３−４のカウント値）が大きい方を使用するという判定基準を採用することもできる。
【００４８】
そして、ステップＳ１００９で決定したアドレス割付け種別と現在のアドレス割付け種別が同じ場合（Ｓ１０１０がＹＥＳ）は、直ちにプログラム実行指示を出力する（Ｓ１０１３)。これに対して、決定したアドレス割付け種別と現在のアドレス割付け種別とが異なる場合（ステップＳ１０１０がＮＯ）は、アドレス割付け種別を変更するために、メモリアクセス制御部３−２に対してアドレス割付け切り替え指示を出力し（ステップＳ１０１１）、アドレス切り替え中フラグがリセットされるのを待って（Ｓ１０１２がＹＥＳ）、プログラム起動指示を出力する（ステップＳ１０１３）。
【００４９】
〔実施の形態の効果〕
本実施の形態によれば、主記憶装置２を構成するＲＡＭ４−１〜４−４が低速ＲＡＭであっても、主記憶装置２のスループットを大きなものにすることができる。その理由は、連続する論理アドレスを、ＲＡＭの先頭バンクから最終バンクを順次アクセスし、上記最終バンクをアクセスした後、別ＲＡＭの先頭バンクをアクセスする物理アドレスに変換するという第１の物理アドレス生成論理により、演算処理装置１から発行された論理アドレスを物理アドレスへ変換するアドレス生成回路３−５を備えているからである。
【００５０】
また、本実施の形態によれば、主記憶装置２を構成するＲＡＭ４−１〜４−４が低速ＲＡＭであっても高速ＲＡＭであっても、主記憶装置１のスループットを大きなものにすることができる。その理由は、アドレスモードレジスタ３−１に設定されている値に基づいて、第１あるいは第２の物理アドレス生成論理により論理アドレスを物理アドレスに変換するアドレス生成回路を備えているからである。
【００５１】
更に、本実施の形態によれば、実行するプログラムの特性（主記憶アクセスアドレス特性）に応じて第１あるいは第２の物理アドレス生成論理を使用するようにしているので、実行するプログラム毎にスループットを最適なものにすることができるという効果もある。
【産業上の利用可能性】
【００５２】
本発明は、主記憶装置のアドレス制御に適用すると好適である。
【図面の簡単な説明】
【００５３】
【図１】本発明の実施の形態のブロック図である。
【図２】ビジーカウンタ３−４の構成例を示すブロック図である。
【図３】ビジー種別を説明するための図である。
【図４】アドレス生成回路３−５の処理例を示すフローチャートである。
【図５】物理アドレス生成論理の違いによるアドレス割付けの違いを示した図である。
【図６】ビジー時間の一例を示す図である。
【図７】ビジー時間の簡易計算結果を示す図である。
【図８】ダイナミック割付けモード時のＯＳの処理例を示すフローチャートである。
【図９】ダイナミック割付けモード時の動作を説明するための図である。
【図１０】自動最適化モード時のＯＳの処理例を示すフローチャートである。
【図１１】自動最適化モード時の動作を説明するための図である。
【図１２】従来技術を説明するための図である。
【符号の説明】
【００５４】
１…演算処理装置
２…主記憶装置
３…メモリコントローラー
３−１…アドレスモードレジスタ
３−２…メモリアクセス制御部
３−３…スループットカウンタ
３−４…ビジーカウンタ
３−５…アドレス生成回路
４−１〜４−４…ＲＡＭ
５…メモリ保存用ディスク装置
【図１】
0004992114.tif 000002
【図２】
0004992114.tif 000003
【図３】
0004992114.tif 000004
【図４】
0004992114.tif 000005
【図５】
0004992114.tif 000006
【図６】
0004992114.tif 000007
【図７】
0004992114.tif 000008
【図８】
0004992114.tif 000009
【図９】
0004992114.tif 000010
【図１０】
0004992114.tif 000011
【図１１】
0004992114.tif 000012
【図１２】
0004992114.tif 000013