(57)【要約】【課題】予備領域や予備メモリモジュールを設けることなく主メモリの領域を有効に活用することのできる情報処理装置を提供する。【解決手段】本発明に係る情報処理装置は、主メモリと、Ｉ／Ｏデバイスと、主メモリ及びＩ／Ｏデバイスにアクセスする主制御部と、主メモリ及びＩ／Ｏデバイスのアドレスを制御するアドレス制御部と、を備え、アドレス制御部は、Ｉ／Ｏデバイスのアドレスと主メモリのアドレスとが重複する重複アドレスを判定してアドレス制御することを特徴とする。【選択図】  図５
2007122259.tif 000002
【特許請求の範囲】
【請求項１】
主メモリと、
Ｉ／Ｏデバイスと、
前記主メモリ及び前記Ｉ／Ｏデバイスにアクセスする主制御部と、
前記主メモリ及び前記Ｉ／Ｏデバイスのアドレスを制御するアドレス制御部と、
を備え、
前記アドレス制御部は、前記Ｉ／Ｏデバイスのアドレスと前記主メモリのアドレスとが重複する重複アドレスを判定してアドレス制御することを特徴とする情報処理装置。
【請求項２】
前記主メモリのエラーを検出するエラー検出部をさらに備え、
前記アドレス制御部は、前記主制御部がアクセスする前記主メモリのアクセスアドレスが、前記エラー検出部で検出された主メモリのエラーのアドレスに相当し、かつそのアドレスが前記重複アドレス以外の場合には、前記アクセスアドレスを前記主メモリの重複アドレスに交替させる、ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記主メモリのエラーを検出するエラー検出部と、
メモリ縮退処理を含むメモリエラー処理を行うエラー処理部と、
をさらに備え、
前記アドレス制御部において、前記主制御部がアクセスする前記主メモリのアクセスアドレスが、前記エラー検出部で検出された主メモリのエラーのアドレスに相当し、かつそのアドレスが前記重複アドレスであると判定された場合には、前記エラー処理部は、前記メモリエラー処理を行わない、
ことを特徴とする請求項１に記載の情報処理装置。
【請求項４】
前記アドレス制御部は、
前記エラー検出部で検出された前記エラーのアドレスと前記重複アドレスとを関連付ける変換テーブルを生成し、前記主制御部が前記エラーのアドレスをアクセスした場合には、前記変換テーブルに基づいて前記主メモリの重複アドレスに交替させる、ことを特徴とする請求項２に記載の情報処理装置。
【請求項５】
主メモリとＩ／Ｏデバイスとを具備する情報処理装置のメモリ制御方法において、
前記主メモリ及び前記Ｉ／Ｏデバイスにアクセスする主制御ステップと、
前記主メモリ及び前記Ｉ／Ｏデバイスのアドレスを制御するアドレス制御ステップと、
を備え、
前記アドレス制御ステップは、前記Ｉ／Ｏデバイスのアドレスと前記主メモリのアドレスとが重複する重複アドレスを判定してアドレス制御することを特徴とする情報処理装置のメモリ制御方法。
【請求項６】
前記主メモリのエラーを検出するエラー検出ステップをさらに備え、
前記アドレス制御ステップは、前記主制御ステップでアクセスする前記主メモリのアクセスアドレスが、前記エラー検出ステップで検出された主メモリのエラーのアドレスに相当し、かつそのアドレスが前記重複アドレス以外の場合には、前記アクセスアドレスを前記主メモリの重複アドレスに交替させる、ことを特徴とする請求項５に記載の情報処理装置のメモリ制御方法。
【請求項７】
前記主メモリのエラーを検出するエラー検出ステップと、
メモリ縮退処理を含むメモリエラー処理を行うエラー処理ステップと、
をさらに備え、
前記アドレス制御ステップにおいて、前記主制御ステップでアクセスする前記主メモリのアクセスアドレスが、前記エラー検出ステップで検出された主メモリのエラーのアドレスに相当し、かつそのアドレスが前記重複アドレスであると判定した場合には、前記エラー処理ステップは、前記メモリエラー処理を行わない、
ことを特徴とする請求項５に記載の情報処理装置のメモリ制御方法。
【請求項８】
前記アドレス制御ステップは、
前記エラー検出ステップで検出された前記エラーのアドレスと前記重複アドレスとを関連付ける変換テーブルを生成し、前記主制御ステップで前記エラーのアドレスをアクセスした場合には、前記変換テーブルに基づいて前記主メモリの重複アドレスに交替させる、ことを特徴とする請求項６に記載の情報処理装置のメモリ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、およびそのメモリ制御方法に係り、特に、メモリエラー制御機能を有する情報処理装置、およびそのメモリ制御方法に関する。
【背景技術】
【０００２】
従来からパーソナルコンピュータ等の情報処理装置においては、起動時にメモリチェックが行われ、メモリ異常の有無の検出を行っている。また、特に高い信頼性が要求されるサーバ等の情報処理装置においては、ＥＣＣ（Error  Correcting  Code）をメモリ記憶データに付加することによって、起動時のみならず使用中においてもメモリ異常の有無の検出を行っている。
【０００３】
起動時や使用中にメモリ異常が検出されると、システム停止やメモリ縮退処理等のエラー処理を行う。メモリ縮退処理では、例えば、異常が検出されたメモリを含む所定範囲のアドレス領域を使用不可とし、このアドレス領域へのアクセスが発生した場合には他の正常なメモリ領域に代替させるメモリ制御を行っており、メモリ全体としては使用可能な領域を縮退させている。
【０００４】
また、予めメモリの特定の領域に予備領域を設ける形態や、予備メモリモジュールを付加する形態も多く用いられている。これらの形態では、メモリ異常が検出された領域にアクセスが発生した場合には、予備領域や予備メモリモジュールに代替させ、通常使用しているメモリ領域の大きさはメモリ異常時にも一定に保つことができる。
【０００５】
例えば、特許文献１には、メモリの軽微な障害を検出し、障害の発生した局所的な領域を予備メモリに代替させることにより高い信頼性を図ることができる、とする技術が開示されている。
【特許文献１】特開平１１−１７５４０９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
上記のように、メモリ縮退処理を行った場合、当然のことながらメモリの使用可能領域は縮小する。また、メモリ異常の発生に備えて予備領域を予め確保する形態も、本来使用可能な領域を犠牲にする形態である。
【０００７】
さらに、予備メモリモジュールを付加する形態は、コスト増となり、また実装上も小型軽量化の阻害要因となる。
【０００８】
ところで、近時、主メモリの大容量化は着実に進んでおり、これに伴って従来では予想されなかった新たな事象が発生してきている。具体的には、主メモリ（ＲＡＭ）のアドレスとＩ／Ｏデバイスに関連するアドレスが重複するという事象である。
【０００９】
今日、サーバ等の一部の情報処理装置においては、主メモリの実アドレスとして４ＧＢを超える容量のデータを記憶することができる主メモリが実装可能となってきており、現実に４ＧＢの実アドレスを超えるメモリを実装している情報処理装置も出現してきている。
【００１０】
他方、ＣＰＵが取り扱うことができるアドレス空間は、基本的にはアドレスバス幅で決定される。例えば、３２ビットのアドレスバス幅をもつシステムでは約４ＧＢのアドレス空間を取り扱うことができる。この約４ＧＢのアドレス空間の中には、主メモリに割り付けられるアドレスの他に、ＢＩＯＳ用のＲＯＭや各種ＰＣＩデバイス等のＩ／Ｏデバイスに割り付けるアドレスや各種割り込み用のアドレス（以下、単にＩ／Ｏデバイスアドレスという。）が含まれる。
【００１１】
従って、主メモリの実アドレスが４ＧＢと同等或いはこれを超える場合には、主メモリの実アドレスとＩ／Ｏデバイスアドレスとが重複することになる。この場合、起動時におけるメモリチェック段階では、メモリ異常の有無を検出するため主メモリの総ての実アドレスに対してアクセスが行われるものの、ＯＳの制御下での動作に入ると、重複したアドレスについてはＩ／Ｏデバイスアドレスとして管理されるため、主メモリに対するアクセスは発生しない。
【００１２】
即ち、ＯＳ制御下の通常動作においては、重複したアドレスに対応する主メモリの領域は使用されることが無く、いわば“遊んでいる”領域となっている。このため、この“遊んでいる”領域を有効に活用する技術が要望される。
【００１３】
また、重複したアドレスに対応する主メモリの領域にメモリ異常が検出された場合、このメモリ異常検出によってシステム停止やメモリ縮退処理を行う動作はある意味では“無駄な”動作となる。
【００１４】
本発明は、上記事情に鑑みてなされたもので、予備領域や予備メモリモジュールを設けることなく主メモリの領域を有効に活用することのできる情報処理装置、およびそのメモリ制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１５】
上記課題を解決するため、本発明に係る情報処理装置は、請求項１に記載したように、主メモリと、Ｉ／Ｏデバイスと、前記主メモリ及び前記Ｉ／Ｏデバイスにアクセスする主制御部と、前記主メモリ及び前記Ｉ／Ｏデバイスのアドレスを制御するアドレス制御部と、を備え、前記アドレス制御部は、前記Ｉ／Ｏデバイスのアドレスと前記主メモリのアドレスとが重複する重複アドレスを判定してアドレス制御することを特徴とする。
【００１６】
また、上記課題を解決するため、本発明に係る情報処理装置のメモリ制御方法は、請求項５に記載したように、主メモリとＩ／Ｏデバイスとを具備する情報処理装置のメモリ制御方法において、前記主メモリ及び前記Ｉ／Ｏデバイスにアクセスする主制御ステップと、前記主メモリ及び前記Ｉ／Ｏデバイスのアドレスを制御するアドレス制御ステップと、を備え、前記アドレス制御ステップは、前記Ｉ／Ｏデバイスのアドレスと前記主メモリのアドレスとが重複する重複アドレスを判定してアドレス制御することを特徴とする。
【発明の効果】
【００１７】
本発明に係る情報処理装置、およびそのメモリ制御方法によれば、予備領域や予備メモリモジュールを設けることなく主メモリの領域を有効に活用することができる。
【発明を実施するための最良の形態】
【００１８】
本発明に係る情報処理装置、およびそのメモリ制御方法の実施形態に付いて、添付図面を参照して説明する。
【００１９】
（１）構成
図１は、本実施形態に係る情報処理装置１のシステム構成例を示す図である。情報処理装置１の具体的な種類は特に限定するものではないが、例えば、各種サーバやパーソナルコンピュータ等を含むものである。
【００２０】
情報処理装置１は、装置全体の制御を行う主制御部１０、ＲＡＭ等で構成され各種データを一時的に記憶し主制御部１０のワークエリアとして機能する主メモリ２０、主制御部１０との間でデータ授受を行って各種情報処理を実行するＩ／Ｏデバイス８０を備えて構成される。
【００２１】
また、主制御部１０と主メモリ２０との間にはＭＣＨ（Memory  Controller  Hub）３０と呼ばれるチップセットが設けられており、ＭＣＨ３０とＩ／Ｏデバイス８０との間にはＩＣＨ（I/O  Controller  Hub）４０と呼ばれるチップセットが設けられている。
【００２２】
主制御部１０は、単独或いは複数のＣＰＵ１１から構成される。パーソナルコンピュータでは単独のＣＰＵ１１を備える形態が多いが、高い処理速度が要求されるサーバでは複数のＣＰＵ１１を備えることも多い。
【００２３】
主制御部１０とＭＣＨ３０との間はＦＳＢ（Front  Side  Bus）と呼ばれる高速バスで接続されており、主メモリ２０とＭＣＨ３０との間も高速のメモリバス２３を介して接続されている。
【００２４】
主メモリ２０は、例えばＤＩＭＭ（Dual  Inline  Memory  Module）と呼ばれるメモリモジュール２１を複数備えて構成されている。各メモリモジュール２１には、例えば複数のＤＲＡＭ（Dynamic  Random  Access  Memory）ＩＣが着脱可能な小型のプリント基板に実装されて構成されている。
【００２５】
ＭＣＨ３０と接続されるＩＣＨ４０には、各種のＩ／Ｏデバイス８０が接続されている。ここでいうＩ／Ｏデバイス８０には、ＰＣＩバス５１を介して接続される各種のＰＣＩデバイス５０、ＢＩＯＳが記憶されているＢＩＯＳ  ＲＯＭ６０、IＤＥバス７１等を介して接続されるＨＤＤ７０等の外部記憶装置等を含むものである。
【００２６】
主制御部１０（ＣＰＵ１１）のアクセス先は、大きくは主メモリ２０とＩ／Ｏデバイス８０とに分類される。主制御部１０側から見たアドレス空間（論理アドレス）と主メモリ（物理メモリ）２０のアドレスは相互に対応付け必要であり、アドレス変換処理によって両者を対応付けている。
【００２７】
図１で例示した形態は、このアドレス変換処理を行うアドレス制御部３１をＭＣＨ３０に設ける形態としている。この他、アドレス制御部３１をＢＩＯＳ  ＲＯＭ６０に設ける形態でもよい。この場合、ＢＩＯＳ  ＲＯＭ６０に設けられたアドレス制御部３１の機能を主制御部１０が実行することになる。
【００２８】
上記のように構成された情報処理装置１の動作、特に、主メモリ２０のメモリ制御動作について説明する。
【００２９】
（２）動作
図２は、情報処理装置１の論理アドレスと主メモリ（物理メモリ）２０のアドレスとの対応関係の一例を示す図である。
【００３０】
情報処理装置１の主制御部１０（ＣＰＵ１１）が３２ビット系（アドレスバスの幅が３２ビット）の場合、仮想メモリを除外して考えるとその論理アドレス空間の大きさは約４ＧＢとなる。図２の左図は、それよりもやや大きな論理アドレス空間を想定して図示したものである。
【００３１】
この論理アドレス空間には、主メモリ２０に対応するアドレスと、Ｉ／Ｏデバイス８０に対応するアドレスとが含まれている。
【００３２】
Ｉ／Ｏデバイス８０に対応するアドレスとしては、ＢＩＯＳ  ＲＯＭ６０に対応するアドレスＡ１、主にＰＣＩデバイス５０に対応するアドレスＡ２、ＵＭＢに対応するアドレスＡ３等が含まれている。
【００３３】
ＵＭＢ（Upper  Memory  Block）はビデオＲＡＭや拡張ＢＩＯＳに対応するアドレスであり、通常、６４０ＫＢから１ＭＢの領域に設けられるものである。また、アドレスＡ２の領域には、ＡＰＩＣ（Advanced  Programmable  Interrupt  Controller）と呼ばれるＣＰＵ１１に対する割り込みに対応するアドレスも含まれている。Ｉ／Ｏデバイス８０に対応するアドレスの他、これら割り込み用のアドレスも含めて、以下、単にＩ／Ｏデバイスアドレスと呼ぶものとする。
【００３４】
Ｉ／Ｏデバイスアドレスは、装置に接続されるＩ／Ｏデバイス８０の種類や数によって異なってくる。このため、例えば装置の起動時に、装置に接続されているＩ／Ｏデバイス８０を検出し、その種類や数に応じてＩ／Ｏデバイスアドレスを割り付けることによって図２の左側の論理アドレスマップを生成している。
【００３５】
また、今日多くのＩ／Ｏデバイス８０は、未だ３２ビット系以下にしか対応しておらず、このため、Ｉ／Ｏデバイスアドレスは０から約４ＧＢ以下の範囲に設定される。
【００３６】
論理アドレスマップのうち、Ｉ／Ｏデバイスアドレス以外のアドレスが主メモリ２０に対応するアドレス（主メモリ２０に対してアクセス可能なアドレス）ということになる。
【００３７】
この論理アドレスマップからわかるように、主メモリ２０の領域のうち、Ｉ／Ｏデバイスアドレスに対応する領域にはアクセスされないことになる。即ち、この論理アドレスマップに従ってアドレス制御を行うことによって、Ｉ／Ｏデバイスアドレスと主メモリ２０のアドレスとが重複する重複アドレスにおいて互いにデータが衝突することを回避している。
【００３８】
この結果、主メモリ２０のうち、重複アドレスに対応する領域（図２の右側の図において、Ｍ１、Ｍ２、およびＭ３の領域）は主制御部１０からアクセスされることが無い領域となり、いわば“遊んでいる”領域ということになる。
【００３９】
主メモリ２０の容量が、アドレスの大きさとして、例えば、１ＧＢ程度であれば、ＵＭＢに対応する領域（Ｍ３）を除いて、このような“遊んでいる”領域が生じることはほとんど無い。この理由は、ＢＩＯＳ  ＲＯＭ６０やＰＣＩデバイス等のＩ／Ｏデバイスアドレスが論理アドレス空間の高い領域（４ＧＢに近い領域）に設定されているためである。逆に言えば、Ｉ／Ｏデバイスアドレスと主メモリ２０のアドレスが衝突することが無いように、Ｉ／Ｏデバイスアドレスのアドレスを高い領域に設定している。
【００４０】
しかしながら、装置に実装する主メモリ２０の容量は急速に増加してきており、図２の右側に示したように、アドレスの大きさとして４ＧＢを超えるものも現実に現れてきている。
【００４１】
このため、従来想定していなかった、Ｉ／Ｏデバイスアドレスと主メモリ２０のアドレスとの重複が発生し、この結果、主メモリ２０に“遊んでいる”領域（メモリホール）が生じることになる。
【００４２】
例えば、ある種の大容量のサーバによる実例では、４ＧＢの主メモリ２０を実装した場合、約３８４ＭＢの“遊んでいる”領域が生じることになる。この量は、主メモリ２０全体の実に約１０％にも達する量である。
【００４３】
本実施形態では、この“遊んでいる”領域に対して効果的なメモリ制御を行っている。このメモリ制御について以下に具体的に説明する。
【００４４】
（３）第１の実施形態
第１の実施形態に係る情報処理装置１は、上記の“遊んでいる”領域にメモリエラーが発生した場合には、システム停止やメモリ縮退処理等のエラー処理を行わないとする形態である。
【００４５】
図３は、図２と同様に論理アドレスマップと主メモリ２０のアドレス関係を示す図である。論理アドレスマップは、システム起動時に、装置に接続されているＩ／Ｏデバイス８０を検出し、検出したＩ／Ｏデバイス８０にＩ／Ｏデバイスアドレスを割り付けることで生成される。この論理アドレスマップは、例えば、図３の中央に示したアドレス制御部３１によって生成される。
【００４６】
一方、システム起動時には、ＢＩＯＳの制御下でＰＯＳＴ（Power-On  Self  Test）が通常行われる。このとき主メモリ２０のメモリチェックが行われ、主メモリ２０上のメモリ異常の有無の判定や、異常があった場合には異常メモリのアドレスの特定が行われる。これらのエラー検出は、例えばＢＩＯＳに設けられるエラー検出部によって行われる。
【００４７】
従来、メモリチェックによってメモリ異常が検出された場合には、この段階でシステム停止や、メモリ縮退処理等のエラー処理を、例えばＢＩＯＳに設けられるエラー処理部が行っていた。これらのエラー処理は、異常メモリのアドレス位置を考慮すること無く行われていた。
【００４８】
これに対して、本実施形態では、アドレス制御部３１が論理アドレスマップを生成し、この論理アドレスマップに基づいてアドレス制御を行う形態としている。論理アドレスマップには、主メモリ２０のアドレスと重複するアドレス（重複アドレス）がＩ／Ｏデバイスアドレスとして明示されている。このため、アドレス制御部３１では、メモリ異常が生じている主メモリ２０のアドレスがこの重複アドレスと一致しているか否かを判断することが可能となる。
【００４９】
本実施形態では、メモリ異常が生じている主メモリ２０のアドレスがこの重複アドレスと一致している場合、エラー処理を行うことなく放置する形態としている。
【００５０】
メモリ異常が生じているこのアドレスは、Ｉ／Ｏデバイスアドレスと重複しているアドレスであり、主制御部１０からアクセスされることの無い領域である。このため、エラー処理を行わなくとも問題は生じない。逆にエラー処理を行うことで、無駄な処理時間を費やし、また、メモリ縮退処理によって不要なメモリ縮小を行ってしまうことになる。
【００５１】
本実施形態に係る情報処理装置１によれば、Ｉ／Ｏデバイスアドレスとの重複アドレスにメモリ異常が発生したとしてもエラー処理を行わないことによって、主メモリ全体の利用効率を改善することができる。
【００５２】
（４）第２の実施形態
第１の実施形態は、重複アドレスにメモリ異常が発生した場合にはエラー処理を行わないという方策でメモリの利用効率の改善を図るものである。
【００５３】
これに対して、第２の実施形態に係る情報処理装置１では、重複アドレスにおける主メモリ２０を予備領域として積極的に活用しようとする形態である。第２の実施形態に係るアドレス制御の概要は以下の通りである。
【００５４】
まず、アドレス制御部３１は、第１の実施形態と同様に、図３に示す論理アドレスマップをシステム起動時に生成する。
【００５５】
また、システム起動時には、ＢＩＯＳ制御下でのメモリチェックが行われる。この時、図４の右図に示したようにエラー検出部でメモリ異常が検出されると、エラーメモリのアドレス情報は、アドレス制御部３１に通知される。
【００５６】
システム起動時における主メモリ２０のメモリチェックでは、通常、主メモリ２０の全領域がチェック対象とる。このため、Ｉ／Ｏデバイスアドレスに対応する重複アドレス（通常動作時にはアクセスされない領域）とそれ以外の領域（通常使用可能な領域）のいずれからもエラーが検出される可能性があり、いずれのエラーアドレスもアドレス制御部３１に通知されることになる。図４の右図は、このうち、通常使用可能な領域にエラーが発生した場合の状態を示している。
【００５７】
システム起動後は、主にＯＳ制御下の動作となる。この場合であっても、主メモリ２０がＥＣＣ等を用いたエラー検出機能を有している場合には、通常動作時にもメモリ異常が検出される。検出されたエラーメモリのアドレスも同様にアドレス制御部３１へ通知される。
【００５８】
このようにして、アドレス制御部３１では、Ｉ／Ｏデバイスアドレス（重複アドレス）と主メモリ２０のエラーメモリのアドレスの双方を認識することができる。
【００５９】
ここで、主制御部１０から主メモリ２０のエラーメモリアドレスに対してアクセスが発生した場合、アドレス制御部３１は、アドレス交替処理を行う。
【００６０】
具体的は、図５に例示したように、主制御部１０から主メモリ２０のエラーメモリ領域にアクセスが発生した場合、主メモリ２０上の通常アクセスされない領域（Ｉ／Ｏデバイスアドレスと重複するアドレスの一部：図５の例では領域Ｍ２の一部）を交替領域Ｃとして割り当ててアドレス交替処理を行う。
【００６１】
このアドレス交換処理によれば、起動時或いは動作時に主メモリ２０にエラーが検出された場合であっても、Ｉ／Ｏデバイスアドレスと重複するアドレスの主メモリ２０の領域を交替領域として使用することができる。このため、別途予備メモリモジュール等を設けることなく、主メモリ２０上の“遊んでいる”領域を有効活用することで、主メモリ２０全体の利用効率を向上させることができる。
【００６２】
なお、起動時のメモリチェックにおいてエラーが検出された領域が重複領域に相当する場合には、この領域は交替領域として利用することができないため、予め交替領域の対象から除外する形態としてもよい。
【００６３】
アドレス制御部３１におけるアドレス交替処理（アドレス制御処理）は、より具体的には、アドレス変換テーブル等を用いて実現することができる。
【００６４】
図６は、アドレス変換テーブルの簡単な具体例を示したものである。また、図７は、アドレス変換テーブルを用いたアドレス制御処理の流れの一例を示すフローチャートである。図６及び図７を用いて、第２の実施形態に係る情報処理装置１のアドレス制御について、より詳細に説明する。
【００６５】
図６（ａ）は、アドレス変換テーブル（登録前の状態）の概念を示す図である。アドレス変換テーブルは、テーブルの縦方向に複数のエントリ欄が設けられており、１つのエントリ欄には、１つのエラーメモリアドレスとこれに対応する１つの代替メモリアドレスとを登録するフィールドが設けられている。またそれぞれのメモリアドレスには、登録の有効／無効を示す有効／無効ビットが設けられている。
【００６６】
３２ビットのアドレス幅を有するシステムでは、各アドレスフィールドは３２ビットであり、また各有効／無効ビットは１ビットであるから、１つのエントリの大きさは６６ビットとなる。
【００６７】
アドレス変換テーブルが有するエントリの数は、交替の対象となる交替領域の範囲、即ち、Ｉ／Ｏデバイスアドレスと重複する重複アドレスの範囲と、交替するアドレスの単位に依存して決定される。
【００６８】
例えば、上述したサーバの実例では、重複アドレスの範囲は約３８４ＭＢとなる。交替するアドレスの単位は、１Byte、８Byte、１６Byte、４ｋByte等が考えられるが、あまり単位が小さいとアドレス変換テーブルのエントリ数が膨大となってしまう。例えば、アドレスの単位を１Byteとすると、上述のサーバの実例では、エントリ数が約３８４Ｍとなり、あまり現実的ではない。
【００６９】
主メモリ２０を構成するＤＩＭＭでは、アクセスするアドレスの単位は通常８Byteとなっており、また、デュアルチャネル構成のＤＩＭＭでは、１６Byteの単位でアクセスする形態となっている。このため、アドレス変換テーブルの交替アドレスの単位もこれらと整合を取って、８Byteまたは１６Byte単位で構成する形態が望ましい。
【００７０】
このように構成されたアドレス変換テーブルに対して、図７のステップＳＴ１において、アドレス制御部３１が、代替アドレスを登録していく。
【００７１】
代替メモリアドレスは、起動時に接続されているＩ／Ｏデバイス８０を検出し、論理アドレスマップに割り当てられたＩ／Ｏデバイスアドレス（主メモリ２０のアドレスに対する重複アドレス）に対応するものであり、これを交替メモリアドレスとしてアドレス変換テーブルに登録していく。
【００７２】
図６（ｂ）は、交替アドレスメモリの登録後の状態を４エントリ分だけ例示したものである。この例では、Ｉ／Ｏデバイス８０の１つとしてのビデオＲＡＭを具備し、ビデオＲＡＭのＩ／Ｏデバイスアドレスが論理アドレスの「０００Ａ００００ｈ」から「０００ＢＦＦＦＦｈ」に割り付けられるものとしている。さらに主メモリ２０の交替アドレスの交替単位を８Byteの単位で交替させるものとしている。この場合、アドレス変換テーブルには、交替メモリアドレスは「０００Ａ００００ｈ」から８Byte単位で順次登録することになる。
【００７３】
登録後の交替メモリアドレスの有効／無効ビット欄には、ビット「１」を設定して登録内容が有効であることを示す。アドレスフィールドの値が「００００００００」の場合、未登録の状態なのか実際に登録したアドレス値がゼロを示すのか不明であるため、有効／無効ビットによって両者を区別することができる。
【００７４】
次に、メモリチェックによってメモリエラーが検出されたか否かを判定する（図７のステップＳＴ２）。起動時のメモリチェックによってメモリエラーが検出された場合には、直ちに検出されたエラーメモリのアドレスをアドレス変換テーブルに登録する（ステップＳＴ３）。例えば、主メモリ２０のアドレス「１０００００ｈ」でエラーが検出された場合には、エラーメモリアドレス欄の有効／無効ビットが「０」のエントリを探し、図６（ｃ）に示したように、「１０００００ｈ」をエラーメモリアドレスとしてアドレス変換テーブルに登録する。その後、有効／無効ビットを「１」に設定する。
【００７５】
なお、起動時のみでなく動作中もメモリエラーの検出を行う形態の場合には、ステップＳＴ２でメモリエラーのモニタを継続的に行い、新たにメモリエラーが発生した場合にはそのエラーメモリのアドレスをアドレス変換テーブルに登録し、アドレス変換テーブルを更新していく。
【００７６】
情報処理装置１の動作中は、主制御部１０から主メモリ２０に対して適宜アクセス（書き込み、読み出し）が発生する（ステップＳＴ４）。
【００７７】
アドレス制御部３１は、主制御部１０からの主メモリ２０へのアクセスアドレスをモニタし、このアクセスアドレスがアドレス変換テーブルに登録されたエラーメモリアドレスに該当するか否かを判定する（ステップＳＴ５）。
【００７８】
アクセスアドレスがエラーメモリアドレスに該当する場合には（ステップＳＴ５のＹｅｓ）、アドレス変換テーブルの同一エントリに登録されている代替アドレスにアドレス変換を行い、主メモリ２０の代替アドレスに対してアクセスする（ステップＳＴ６）。
【００７９】
一方、主制御部１０からのアクセスアドレスがエラーメモリアドレスに該当しない場合には（ステップＳＴ５のＮｏ）、ステップＳＴ６をバイパスし、そのアクセスアドレスをそのまま用いて主メモリ２０に対してアクセスする。
【００８０】
第２の実施形態によれば、Ｉ／Ｏデバイスアドレスと重複するアドレスの主メモリ２０の領域をエラーメモリの交替領域として利用する形態であるため、メモリエラーが発生した場合であっても、予め予備領域や予備メモリモジュールを設けることなく、主メモリ２０の領域を有効に活用することができる。
【００８１】
なお、本発明は上記の各実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記各実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせても良い。
【図面の簡単な説明】
【００８２】
【図１】本発明に係る情報処理装置の一実施形態のシステム構成例を示す図。
【図２】本発明に係る情報処理装置の論理アドレスと主メモリ（物理メモリ）のアドレスとの対応関係の一例を示す図。
【図３】論理アドレスマップと主メモリのアドレス関係、およびアドレス制御部の動作例を示す第１の図。
【図４】論理アドレスマップと主メモリのアドレス関係、およびアドレス制御部の動作例を示す第２の図。
【図５】論理アドレスマップと主メモリのアドレス関係、およびアドレス制御部の動作例を示す第３の図。
【図６】アドレス変換テーブルの簡単な具体例を示す図。
【図７】本発明に係る情報処理装置のアドレス制御方法の処理例を示すフローチャート。
【符号の説明】
【００８３】
１  情報処理装置
１０  主制御部
１１  ＣＰＵ
２０  主メモリ
２１  ＤＩＭＭ
３０  ＭＣＨ
３１  アドレス制御部
５０  ＰＣＩデバイス
６０  ＢＩＯＳ  ＲＯＭ
７０  ＨＤＤ
８０  Ｉ／Ｏデバイス
【図１】
2007122259.tif 000003
【図２】
2007122259.tif 000004
【図３】
2007122259.tif 000005
【図４】
2007122259.tif 000006
【図５】
2007122259.tif 000007
【図６】
2007122259.tif 000008
【図７】
2007122259.tif 000009