(57)【要約】      （修正有）【課題】複数のメモリから構成されるシステムメモリを用いるメモリアクセス装置において故障のおそれのあるメモリを除いてアドレス割り当てを再構成する。【解決手段】それぞれのメモリからの読み出しデータと読み出しデータのメモリごとに対応付けられた誤り訂正符号とから誤りがあるか否かを検出するＥＣＣ検出部２４０と、訂正可能か否かの情報を出力するＥＣＣ訂正部２５０と、ＥＣＣ誤り検出部およびＥＣＣ訂正部の結果から誤りが発生しているメモリを判定するメモリエラー判定部２６０と、処理装置からのアクセス要求のアドレスおよびデータに対して割り当てるメモリおよびメモリアドレスを管理し、メモリエラー判定部の結果に基づいて誤りが発生しているメモリを除外して割り当て変更するアドレス変換部２１０と、その割り当てに基づいて、読み出し要求があったときは、データを結合して出力するデータ並べ替え部２２０とを備える。【選択図】図１
2014109825.tif 000002
【特許請求の範囲】
【請求項１】
処理装置から同じメモリ単位のデータ幅を有する複数のメモリで構成されるシステムメモリへ書き込みデータの書き込み要求があったときに、前記書き込みデータに対して割り当てられた前記メモリごとの誤り訂正符号を生成するＥＣＣ生成部と、
前記誤り訂正符号を格納するＥＣＣ格納部と、
前記処理装置から前記システムメモリへデータ読み出し要求があったときに、前記読み出し要求された前記システムメモリ上のアドレスに割り当てられたそれぞれの前記メモリから読み出したデータおよびそれぞれの前記メモリから読み出したデータごとに対応付けられた前記誤り訂正符号から誤りを検出するＥＣＣ検出部と、
前記ＥＣＣ検出部が誤りを検出しなかった場合は前記読み出しデータを出力データとし、誤りを検出した場合は前記読み出しデータおよび前記誤り訂正符号に基づいて復号データを生成したものを前記出力データとし、訂正可能であったか否かの情報とともに前記出力データを出力するＥＣＣ訂正部と、
前記ＥＣＣ検出部およびＥＣＣ訂正部の結果から誤りが発生しているメモリを判定するメモリエラー判定部と、
前記処理装置から前記システムメモリへアクセス要求された前記システムメモリ上のアドレスおよびデータに対して割り当てる前記メモリおよび前記メモリのアドレスを管理するものであって、前記メモリエラー判定部の判定結果に基づいて誤りが発生していると判定されたメモリがある場合はそのメモリを除外して割り当てを変更するアドレス変換部と、
前記処理装置からの前記システムメモリへの書き込み要求があったときは、前記アドレス変換部の割り当てに基づいて書き込み要求されたアドレスのデータをそれぞれの前記メモリ単位のデータ幅に分割して前記ＥＣＣ生成部に出力し、前記処理装置からの前記システムメモリへの読み出し要求があったときは、前記アドレス変換部の割り当てに基づいて、前記ＥＣＣ訂正部からのそれぞれの前記出力データを結合して前記処理装置へ出力するデータ並べ替え部と
を備えたメモリアクセス装置。
【請求項２】
前記メモリエラー判定部は、それぞれの前記メモリに対して、前記ＥＣＣ検出部が誤りを検出し、前記ＥＣＣ訂正部から出力された前記訂正可能であったか否かの情報が訂正可能でなかったことを示す場合に、前記メモリが誤りを発生しているか否かを一時判定し、前記一時判定の結果が所定の回数以上継続して誤りを発生しているときに、どのメモリのどのビットに誤りが発生していたかを示す信号をメモリエラー判定結果として出力することを特徴とする請求項１に記載のメモリアクセス装置。
【請求項３】
前記アドレス変換部が割り当てを変更したとき、割り当て変更前の前記システムメモリ上のデータを一旦読み出し、読み出した前記データに対応付けられた誤り訂正符号を用いて前記ＥＣＣ誤り検出部および前記ＥＣＣ訂正部により誤り訂正をしたのち、割り当て変更後に割り当てられたそれぞれの前記メモリのメモリ領域に前記ＥＣＣ訂正部からの前記出力データを書き込む
ことを特徴とする請求項１または請求項２に記載のメモリアクセス装置。
【請求項４】
前記メモリエラー判定部は、前記アドレス変換部によって割り当てを除外された前記メモリへ所定のデータを書き込み、前記書き込み後に除外された前記メモリから前記所定のデータを読み出し、前記所定のデータに対応した誤り訂正符号と前記書き込み後に読み出した前記所定のデータとから前記ＥＣＣ誤り検出部が誤りがないと検出するか、または前記ＥＣＣ訂正部から出力された前記訂正可能であったか否かの情報が訂正可能であったことを示したときは、割り当てを除外されたメモリが正常動作に戻っていると判定することを特徴とする請求項１から請求項３のいずれか１項に記載のメモリアクセス装置。
【請求項５】
前記処理装置から前記システムメモリへ同じシステムメモリ上のアドレスに対して書き込みデータの書き込み要求があったときに、前記書き込みデータのビットのうち所定の期間または所定の書き込み回数以上０の書き込みを要求しているビットについて、前記処理装置が使用していない不使用ビットと判定する不使用ビット判定部をさらに備え、
前記メモリエラー判定部は、前記ＥＣＣ検出部の検出結果が前記不使用ビットと判定したビットによるものであれば、該当のメモリについて誤りが発生していないメモリであると判定することを特徴とする請求項１から請求項４のいずれか１項に記載のメモリアクセス装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、誤り訂正符号を用いたメモリアクセス装置に関する。
【背景技術】
【０００２】
近年の電子機器においては、コンピュータプログラムや映像、グラフィックスなどの演算処理データ、または通信データなどのデータを処理するためにＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）のような半導体メモリをシステムメモリとして搭載することが一般的である。また、システムメモリの容量は増加の一途をたどっており、通信機器や画像処理装置によっては、数ギガバイトから数テラバイトの容量が要求されるようになってきている。
【０００３】
システムメモリの容量が大きくなればなるほど、記憶されたデータにエラーが発生する可能性も高くなる。その結果、コンピュータプログラムが解読不能となったり、処理データが本来とるべき値とならなかったりするため、機器の正常運転を妨げることになる。この対策として、メモリチップにエラー訂正回路を内蔵して、データを書き込むときに書き込むデータの誤りを検出、訂正するための誤り検出訂正符号を生成し、データを読み出すときに読み出したデータとそのデータの誤り訂正符号とを照合することにより、１ビットの誤りを訂正でき、２ビットの誤りを検出する方法がある（例えば、特許文献１参照）。誤り検出訂正符号はＥＣＣ（Ｅｒｒｏｒ  Ｃｈｅｃｋｉｎｇ  ａｎｄ  Ｃｏｒｒｅｃｔｉｏｎ）とよぶこともある。
【０００４】
特許文献１の方法であれば、一般的にビット幅が２のＮ乗ビット（Ｎは正の整数）に対してＮ＋２の誤り訂正符号用の冗長ビットが必要になる。例えば、ビット幅が６４ビットの場合であればＮは６となるので冗長ビットとしてＮ＋２＝８ビットが必要になる。
【０００５】
また、システムメモリへの高速アクセスが必要な電子機器では、複数個の半導体メモリを並列に配置することで、ビット幅の大きいシステムメモリを構成するものがある。このような複数個にまたがる半導体メモリで構成されたシステムメモリの場合は、そのビット幅に対応した誤り検出訂正符号を生成して、誤り検出訂正符号格納用のメモリを別途用意してそこに誤り検出訂正符号用の冗長ビットを格納するというものもある。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平７−２６２７９４号公報（第５頁、第１図）
【発明の概要】
【発明が解決しようとする課題】
【０００７】
上述のような複数個の半導体メモリを用いてビット幅の大きいシステムメモリを構成している場合、半導体メモリごとに１つのアドレスに対応するデータについて１ビットの誤り訂正が可能であり、また、一時的な１ビットのエラーについては、正常なデータを再度書き直すことより、正常にメモリを使用することが可能である。つまり、複数個の半導体メモリのうち、ある半導体メモリの読み出しデータが１ビット誤っていたとしても、他のビットが正常に読み出せればそのまま誤り訂正されたデータを出力することができるので機器装置が正常に動作させることができた。
【０００８】
しかしながら、１つの半導体メモリが故障している場合、１つのアドレスに２ビット以上誤ったものを読み出すおそれが高くなり、システムメモリ全体で正しい読み出しデータを出力することができなくなる。これにより、電子機器装置が正常に動作しなくなる。このような状況になった場合、電子機器装置の動作を一旦停止して半導体メモリの交換または装置の交換を行なう必要が発生するという問題があった。
【０００９】
この発明は、上述のような課題を解決するためになされたもので、複数個の半導体メモリを用いたシステムメモリについて、エラーが発生している半導体メモリを除いてシステムメモリを再構成することができるメモリアクセス装置を得るものである。
【課題を解決するための手段】
【００１０】
この発明に係るメモリアクセス装置においては、処理装置から同じメモリ単位のデータ幅を有する複数のメモリで構成されるシステムメモリへ書き込みデータの書き込み要求があったときに、前記書き込みデータに対して割り当てられた前記メモリごとの誤り訂正符号を生成するＥＣＣ生成部と、前記誤り訂正符号を格納するＥＣＣ格納部と、前記処理装置から前記システムメモリへデータ読み出し要求があったときに、前記読み出し要求された前記システムメモリ上のアドレスに割り当てられたそれぞれの前記メモリから読み出したデータおよびそれぞれの前記メモリから読み出したデータごとに対応付けられた前記誤り訂正符号から誤りを検出するＥＣＣ検出部と、前記ＥＣＣ検出部が誤りを検出しなかった場合は前記読み出しデータを出力データとし、誤りを検出した場合は前記読み出しデータおよび前記誤り訂正符号に基づいて復号データを生成したものを前記出力データとし、訂正可能であったか否かの情報とともに前記出力データを出力するＥＣＣ訂正部と、前記ＥＣＣ検出部およびＥＣＣ訂正部の結果から誤りが発生しているメモリを判定するメモリエラー判定部と、前記処理装置から前記システムメモリへアクセス要求された前記システムメモリ上のアドレスおよびデータに対して割り当てる前記メモリおよび前記メモリのアドレスを管理するものであって、前記メモリエラー判定部の判定結果に基づいて誤りが発生していると判定されたメモリがある場合はそのメモリを除外して割り当てを変更するアドレス変換部と、前記処理装置からの前記システムメモリへの書き込み要求があったときは、前記アドレス変換部の割り当てに基づいて書き込み要求されたアドレスのデータをそれぞれの前記メモリ単位のデータ幅に分割して前記ＥＣＣ生成部に出力し、前記処理装置からの前記システムメモリへの読み出し要求があったときは、前記アドレス変換部の割り当てに基づいて、前記ＥＣＣ訂正部からのそれぞれの前記出力データを結合して前記処理装置へ出力するデータ並べ替え部とを備えたものである。
【発明の効果】
【００１１】
この発明は、複数のメモリから構成されるシステムメモリに接続されたメモリアクセス装置において、それぞれのメモリについて誤り訂正符号を用いた誤り検出の情報から誤りが発生しているメモリについてそのメモリを除外してアドレス割り当てを変更するので、故障のおそれのあるメモリを除いてシステムメモリを再構成することができる。
【図面の簡単な説明】
【００１２】
【図１】この発明の実施の形態１にかかるメモリアクセス装置を備えたシステム構成図である。
【図２】この発明の実施の形態１における正常時のメモリのデータ割り当てを示す図である。
【図３】この発明の実施の形態１における異常発生時のメモリのデータ割り当てを示す図である。
【図４】この発明の実施の形態１における正常時のメモリアクセス装置からメモリに対するアクセスを示す一例の図である。
【図５】この発明の実施の形態１におけるエラー発生時のメモリアクセス装置からメモリに対するアクセスを示す一例の図である。
【図６】この発明の実施の形態２にかかるメモリアクセス装置を備えたシステム構成図である。
【発明を実施するための形態】
【００１３】
実施の形態１．
図１は、この発明を実施するための実施の形態１におけるメモリアクセス装置を備えたシステム構成を示すものである。図１において、１００は処理装置、２００はメモリアクセス装置、３００はシステムメモリである。処理装置１００とメモリアクセス装置２００とはアドレスバス１１０とデータバス１２０とで接続される。アドレスバス１１０にはメモリアドレス情報を送るためのメモリアドレスバス１１１とアクセス要求の種類などを示すバス制御信号１１２とが含まれている。バス制御信号１１２には書き込み要求を示すライト信号、読み出し要求を示すリード信号、システムメモリへのアクセス要求であるかを示すチップセレクト信号などがある。また、データバス１２０は双方向バスであって、ここではメモリアクセス装置２００にとって入力データバスとなるライトデータバス１２１と、メモリアクセス装置２００にとって出力データバスとなるリードデータバス１２２とに分けて接続されているものとして説明する。
【００１４】
このシステムでは処理装置１００は、複数の半導体メモリで構成されたシステムメモリ３００にアクセスして書き込みまたは読み出しを行なう。処理装置１００は、例えばシステムメモリ３００から読み出したプログラムデータをもとに処理内容を決定して演算、制御等を行うものであったり、システムメモリ３００にデータを一時的に書き込むことで保存し、保存したデータを再度読み出して処理を行なったりするものである。
【００１５】
メモリアクセス装置２００は、処理装置１００からのアクセス要求に応じてシステムメモリ３００へ書き込みまたは読み出しを行ない対応する。これにより処理装置１００は、あたかも大きなメモリ領域をもつ一つのメモリへアクセスしているように要求することが可能となる。例えば、システムメモリ３００としてデータバスが３２ビットの半導体メモリを４つを並列に配置して構成している場合、データバスが１２８ビットバスのメモリのつもりで処理装置１００はアクセス要求することができる。
【００１６】
次にメモリアクセス装置２００の内部の構成について説明する。本実施の形態にかかるメモリアクセス装置２００は、アドレス変換部２１０、データ並び替え部２２０、ＥＣＣ生成部２３０、ＥＣＣ誤り検出部２４０、ＥＣＣ訂正部２５０、メモリエラー判定部２６０を備える。
【００１７】
アドレス変換部２１０は、処理装置１００からのシステムメモリ３００へのアクセス要求のメモリアドレスおよびデータに対して割り当てるメモリおよびメモリのアドレス２１１を管理する。例えば、それぞれのデータ幅がＬビットのメモリ０、メモリ１、メモリ２、およびメモリ３の４種類で４Ｌビットのシステムメモリを構成している場合、処理装置１００からのシステムメモリ３００へのアクセス要求のメモリアドレス０および４Ｌビット分のデータについて、メモリ０のアドレス０のＬビット分にｂｉｔ（０）からｂｉｔ（Ｌ−１）までを割り当てる。同様にメモリ１のアドレス０のＬビット分にｂｉｔ（Ｌ）からｂｉｔ（２Ｌ−１）までを割り当てる。メモリ２のアドレス０のＬビット分にｂｉｔ（２Ｌ）からｂｉｔ（３Ｌ−１）までを割り当てる。メモリ３のアドレス０のＬビット分にｂｉｔ（３Ｌ）からｂｉｔ（４Ｌ−１）までを割り当てる。
【００１８】
また、アドレス変換部２１０は、処理装置１００からのシステムメモリ３００へのアクセス要求のメモリアドレスおよびデータに対してバス制御信号１１２の要求に基づいて各メモリへのメモリ制御信号を生成してメモリ制御信号バス２１２を介して出力する。これは、例えば処理装置１００から書き込み要求されているシステムメモリ３００上のアドレスのデータが各メモリに一括して書き込めない場合は、該当のメモリに対して複数回書き込むためのメモリ制御信号を出力する。
【００１９】
上述の割り当ては、正常時、つまりメモリ０〜メモリ３全てのメモリが正常に動作している時に割り当てる場合であって、メモリ３を除外して構成する場合は、例えばメモリアドレス０および４Ｌビット分のデータについて、メモリ３のアドレス０のＬビット分にｂｉｔ（３Ｌ）からｂｉｔ（４Ｌ−１）までを割り当てずに、メモリ０のアドレス１のＬビット分にｂｉｔ（３Ｌ）からｂｉｔ（４Ｌ−１）までを割り当てるなどすれば、処理装置１００からすればメモリ３を除外して構成されていることを気にすることなくメモリアドレス０の４Ｌビット分をアクセス要求できることになる。ここではメモリ０のアドレス１のＬビット分にｂｉｔ（３Ｌ）からｂｉｔ（４Ｌ−１）までを割り当てるとしたが、元々使用頻度の少ないアドレスがある場合または確保している場合はそこに割り当てることにすれば元々の割り当てからの変更量が少なくて済むので望ましい。
【００２０】
データ並べ替え部２２０は、処理装置１００から書き込み要求のあったデータをシステムメモリを構成する個々のメモリ単位に分割し、読み出し要求のあったデータを出力するためにシステムメモリを構成する個々のメモリ単位から読み出されたデータを結合して出力する。アドレス変換部２１０がアドレス割り当てを変更した場合は、それに対応して処理装置１００からのアクセス要求にあうデータ分割または結合を行なう。
【００２１】
ＥＣＣ生成部２３０は、データ並べ替え部２２０が処理装置１００から書き込み要求のあったデータを分割したメモリ単位のデータごとに誤り訂正符号を生成する。ここで、メモリ単位のデータ幅を１ワードをよぶこともある。メモリ単位のデータごとに誤り訂正符号は、メモリ単位のデータのビット幅が（２のＮ乗＝）３２ビットであればＮは５であれば誤り訂正符号は（Ｎ＋２＝）７ビット必要となる。生成されたそれぞれの誤り訂正符号は割り当てたメモリとアドレスとに対応付けて格納される。
【００２２】
また、ＥＣＣ生成部２３０は、処理装置１００から書き込み要求のあった場合に、各メモリデータバス２１３を介してアドレス変換部２１０の割り当てに基づいて、データ並べ替え部２２０で分割したメモリ単位のデータを各メモリへ出力する。これは、例えば処理装置１００から書き込み要求されているシステムメモリ３００上のアドレスのデータが各メモリに一括して書き込めない場合は、該当のメモリに対して複数回書き込むため出力されたメモリ制御信号に合わせてデータ列に変換して出力する。データ列への変換はデータ並べ替え部２２０が行なってもよい。
【００２３】
ＥＣＣ誤り検出部２４０は、それぞれのメモリから読み出しがあったときに、各メモリデータバス２１３を介して読み出された読み出しデータと、その読み出しテータに対応付けて格納されているＥＣＣ生成部２３０で生成した誤り訂正符号とからそれぞれのメモリから読み出した読み出しデータに誤りがあったかどうかを検出しその検出結果を出力する。
【００２４】
ＥＣＣ訂正部２５０は、ＥＣＣ誤り検出部２４０が誤りを検出しなかった場合は、その読み出しデータをそのまま出力し、誤りを検出した場合は、読み出しデータとその読み出しデータに対応付けられた誤り訂正符号とから誤り訂正復号して出力し、訂正可能であったことを示す情報をメモリエラー判定部２６０に出力する。ただし、誤りを検出された場合であっても訂正不可能な場合は、訂正可能でなかったことを示す情報をメモリエラー判定部２６０に出力する。
【００２５】
このとき、システムメモリを構成する個々のメモリがＥＣＣ機能付きのメモリであれば、ＥＣＣ生成部２３０、ＥＣＣ誤り検出部２４０、およびＥＣＣ訂正部２５０は、個々のメモリのＥＣＣ機能を利用しても構わない。
【００２６】
メモリエラー判定部２６０は、ＥＣＣ誤り検出部２４０の検出結果とＥＣＣ訂正部２５０からの訂正可能であったか否かの情報とから誤りが発生しているメモリを判定する。このとき、どのメモリのどのビットに誤りが発生していたかが把握可能な信号としてメモリエラー判定結果を出力する。
【００２７】
上述のアドレス変換部２１０は、メモリエラー判定部２６０のメモリエラー判定結果から除外すべきメモリがあれば、処理装置１００からのシステムメモリ３００へのアクセス要求のメモリアドレスおよびデータに対して割り当てるメモリおよびメモリのアドレス２１１を変更し、その変更に伴い、データ並べ替え部２２０は対応することになる。
【００２８】
次に、本実施の形態にかかるメモリアクセス装置２００の動作について説明する。まず、処理装置１００からシステムメモリ３００へ書き込み要求があったときの動作について説明する。
【００２９】
図２は、正常時、つまりメモリ０〜メモリ３全てのメモリが正常に動作している時のメモリのデータ割り当てを示す図である。縦列はそれぞれの個々のメモリのアドレスを示しており、横にそれぞれのメモリのデータ割り当てと、その誤り訂正符号について示している。ここでは、システムメモリのアドレス０のｂｉｔ（０）からｂｉｔ（Ｌ−１）までをＤ０、ｂｉｔ（Ｌ）からｂｉｔ（２Ｌ−１）までをＤ１、ｂｉｔ（２Ｌ）からｂｉｔ（３Ｌ−１）までをＤ２、ｂｉｔ（３Ｌ）からｂｉｔ（４Ｌ−１）までをＤ３とする。これに続き、システムメモリのアドレス１のデータをＤ４〜Ｄ７で表し、システムメモリのアドレス２のデータをＤ８〜Ｄ１１で表す。このとき、Ｄ０〜Ｄ１１のそれぞれの誤り訂正符号をそれぞれＥ０〜Ｅ１１として表している。
【００３０】
このように、初期段階では、アドレス変換部２１０は、システムメモリのアドレスに対応して個々のアドレスを対応付けて割り当てる。データ並べ替え部２２０は、割り当てに対応してデータをメモリ単位に分割してＥＣＣ生成部２３０に出力する。
【００３１】
ＥＣＣ生成部２３０はそれぞれのメモリ単位のデータに対してそれぞれ誤り訂正符号を生成する。生成された誤り訂正符号は、メモリ０〜メモリ３のデータ対応付けて誤り訂正符号の格納領域に書き込まれる。
【００３２】
次に、処理装置１００からシステムメモリ３００へ読み出し要求があったときの動作について説明する。アドレス変換部２１０にて処理装置１００から読み出し要求があったシステムメモリアドレスに割り当てられたメモリの各アドレスに読み出し要求を行なって各データを読み出す。また、同様に対応付けて格納された誤り訂正符号についても読み出す。
【００３３】
ＥＣＣ誤り検出部２４０は、各メモリから読み出されたデータに対して、読み出されたデータ対応付けられた誤り訂正符号を用いて誤りがあるか否かを検出する。
【００３４】
ＥＣＣ訂正部２５０は、ＥＣＣ誤り検出部２４０で誤りがあると検出しなかった場合は各メモリから読み出されたデータをそのまま出力し、誤りがあると検出した場合は各メモリから読み出されたデータと誤り訂正符号とから誤り訂正を行いその結果を出力する。また、誤りを検出した場合は、訂正可能であったか否かを示す情報を出力する。
【００３５】
データ並べ替え部２２０は、ＥＣＣ訂正部２５０からの各メモリから読み出されたデータに対応した出力からデータを結合してリードデータ１２２として処理装置１００へ出力する。処理装置はこのリードデータ１２２を取得する。
【００３６】
メモリエラー判定部２６０は、ＥＣＣ誤り検出部２４０の検出結果とＥＣＣ訂正部２５０からの訂正可能であったか否かの情報とから誤りが発生しているメモリを判定する。ＥＣＣ誤り検出部２４０で誤りがあると検出していてもＥＣＣ訂正部２５０から訂正可能であったことを示す情報が取得できていれば、このときの処理装置１００からの読み出し要求があったシステムメモリアドレスのデータに関して正常に動作ができていると判断する。ＥＣＣ誤り検出部２４０で誤りがあると検出していてＥＣＣ訂正部２５０から訂正可能でなかったことを示す情報が取得されれば、どのメモリのどのビットに誤りが発生していたかが把握可能な信号をメモリエラー判定結果として出力する。
【００３７】
ここで、メモリエラー判定部２６０が出力するメモリエラー判定結果は、ＥＣＣ誤り検出部２４０の検出結果とＥＣＣ訂正部２５０からの訂正可能であったか否かの情報とが来るたびに出すのではなく、内部で所定の回数以上継続して誤りを発生しているかを判定した上で、所定の回数以上継続して誤りを発生していると判断された場合にメモリエラー判定結果を出力してもよい。このようにすることで、一時的に誤りを発生していると判断されていたが、その後に誤りを発生していると判断されていないメモリについて除外しないので、極力メモリを除外にせずにシステムメモリ容量を確保したい処理システムを構成する場合には、メモリが誤りを発生しているおそれが高くなるまで簡単に除外されずに割り当てができるという効果を奏する。
【００３８】
次に、ＥＣＣ誤り検出部２４０で誤りがあると検出していてＥＣＣ訂正部２５０から訂正可能でなかったことを示す情報が出力されたときのメモリアクセス装置２００の動作について説明する。メモリエラー判定部２６０は、ＥＣＣ誤り検出部２４０が誤りがあると検出していてＥＣＣ訂正部２５０から訂正可能でなかったことを示す情報が取得されれば、どのメモリのどのビットに誤りが発生していたかが把握可能な信号をメモリエラー判定結果として出力する。アドレス変換部２１０は、メモリエラー判定部２６０からのメモリエラー判定結果に基づいて誤りが発生しているメモリを除外して割り当てを変更する。
【００３９】
図３は、アドレス変換部２１０が、メモリ３を除外して割り当てをしたときの示す図である。縦列はそれぞれの個々のメモリのアドレスを示しており、横にそれぞれのメモリのデータ割り当てと、その誤り訂正符号について示している。ここでは、システムメモリのアドレス０のｂｉｔ（０）からｂｉｔ（Ｌ−１）までをＤ０、ｂｉｔ（Ｌ）からｂｉｔ（２Ｌ−１）までをＤ１、ｂｉｔ（２Ｌ）からｂｉｔ（３Ｌ−１）までをＤ２、ｂｉｔ（３Ｌ）からｂｉｔ（４Ｌ−１）までをＤ３とする。これに続き、システムメモリのアドレス１のデータをＤ４〜Ｄ７で表し、システムメモリのアドレス２のデータをＤ８〜Ｄ１１で表す。このとき、Ｄ０〜Ｄ１１のそれぞれの誤り訂正符号をそれぞれＥ０〜Ｅ１１として表している。図２の正常時では、システムメモリのアドレス０のＤ０〜Ｄ３について、メモリ０〜メモリ３のアドレス０に割り当てていたが、メモリ３を除外する時は、Ｄ３についてメモリ３のアドレス０を使用せずにメモリ０のアドレス１に割り当てている。
【００４０】
データ並べ替え部２２０は、この割り当てに対応する。つまり、処理装置１００からシステムメモリ３００のアドレス０へ書き込み要求があった場合は、ライトデータを分割してＤ３に当たるデータはメモリ０のアドレス１に書き込み要求をするように出力する。逆に、処理装置１００からシステムメモリ３００のアドレス０のデータについて読み出し要求があった場合は、メモリ０〜メモリ２それぞれのアドレス０を読み出したデータと、メモリ０のアドレス１を読み出したデータについてＥＣＣ誤り検出部２４０およびＥＣＣ訂正部２５０によりそれぞれ誤り訂正を施したデータを結合してリードデータ１２２として処理装置１００へ出力する。処理装置１００はこのリードデータ１２２を取得する。
【００４１】
次に処理装置１００からシステムメモリ３００へシステムメモリのアドレス０から８ワード分のデータ、つまりシステムメモリのアドレス０およびアドレス１のデータを読み出し要求した場合の動作について説明する。図４は、図２にある正常時のメモリの割り当てとなっている場合のアクセスの一例を示す図である。ここではシステムメモリ３００を構成するメモリをＤＲＡＭとする。処理装置１００からリードアドレス０から８ワードを読み出す読み出し要求を解析してリードアドレスがアドレス０であり、ワード数が８であることが取得される。これに応じて、アドレス変換部２１０が割り当てたメモリとそのアドレスを読み出すためのコマンドおよびアドレスをシステムメモリ３００に出力する。具体的にはＡＣＴコマンドと同時にＲＯＷアドレスを出力し、次にＲＥＡＤコマンドと同時にアドレス０を出力し、次にＲＥＡＤコマンドと同時にアドレス１を出力する。
【００４２】
システムメモリ３００からは、上記の読み出し指示に対応して各メモリのアドレス０にあたるデータ（Ｄ０〜Ｄ３）を出力し、次に各メモリのアドレス１にあたるデータ（Ｄ４〜Ｄ７）を出力する。このとき、各メモリのアドレス０にあたるデータに対応付けて格納された誤り訂正符号（Ｅ０〜Ｅ３）をシステムメモリ３００からのデータ（Ｄ０〜Ｄ３）と同時に出力されるように読み出され、各メモリのアドレス１にあたるデータに対応付けて格納された誤り訂正符号（Ｅ４〜Ｅ７）をシステムメモリ３００からのデータ（Ｄ４〜Ｄ７）と同時に出力されるように読み出される。そしてこれらの読み出しデータ（Ｄ０〜Ｄ７）とそれぞれに対応付けられた誤り訂正符号（Ｅ０〜Ｅ７）とからＥＣＣ誤り検出部２４０およびＥＣＣ訂正部２５０によりそれぞれ誤り訂正を施したデータを結合してリードデータ１２２に出力される。
【００４３】
図５は、図３にあるメモリ３を除外して割り当てをしたときのアクセスの一例を示す図である。この場合、アドレス変換部２１０が割り当てたメモリとそのアドレスを読み出すためのコマンドおよびアドレスは、ＡＣＴコマンドと同時にＲＯＷアドレスを出力し、次にＲＥＡＤコマンドと同時にアドレス０を出力し、次にＲＥＡＤコマンドと同時にアドレス１を出力する。そしてさらにＲＥＡＤコマンドと同時にアドレス２を出力する。
【００４４】
システムメモリ３００からは、上記の読み出し指示に対応して各メモリのアドレス０にあたるデータ（Ｄ０〜Ｄ２）を出力し、次に各メモリのアドレス１にあたるデータ（Ｄ３〜Ｄ５）を出力し、次に各メモリのアドレス２にあたるデータ（Ｄ６〜Ｄ８）を出力する。このとき、各メモリのアドレス０にあたるデータに対応付けて格納された誤り訂正符号（Ｅ０〜Ｅ２）をシステムメモリ３００からのデータ（Ｄ０〜Ｄ２）と同時に出力されるように読み出され、各メモリのアドレス１にあたるデータに対応付けて格納された誤り訂正符号（Ｅ３〜Ｅ５）をシステムメモリ３００からのデータ（Ｄ３〜Ｄ５）と同時に出力され、各メモリのアドレス２にあたるデータに対応付けて格納された誤り訂正符号（Ｅ６〜Ｅ８）をシステムメモリ３００からのデータ（Ｄ６〜Ｄ８）と同時に出力されるように読み出される。そしてこれらの読み出しデータ（Ｄ０〜Ｄ８）のうち読み出しデータ（Ｄ０〜Ｄ７）とそれぞれに対応付けられた誤り訂正符号（Ｅ０〜Ｅ７）とからＥＣＣ誤り検出部２４０およびＥＣＣ訂正部２５０によりそれぞれ誤り訂正を施したデータを結合してリードデータ１２２に出力される。
【００４５】
このようにメモリエラー判定部２６０からのメモリエラー判定結果に基づいて誤りが発生しているメモリを今後使用しないように除外して割り当てを変更することで、故障のおそれにより誤りが発生しているメモリを除外した状態で処理装置１００とのやり取りを継続することができる。これにより、システム全体の動作を一旦停止して故障のおそれのあるメモリの交換または装置の交換を行なう必要が発生しなくなるという効果を奏する。また、除外するメモリは１個に限るものではなく、２個以上を誤りが発生しているメモリと判定した場合においても同様の手順で除外したメモリ構成を再構築することが可能となる。
【００４６】
ここで、アドレス変換部２１０が割り当てを変更したとき、処理装置１００からの指示されることなくメモリアクセス装置２００内で割り当て変更前のシステムメモリ上のデータを一旦読み出して、割り当て変更後に割り当てられた各メモリのメモリ領域に書き換えることで、割り当て変更前に書き込まれたデータを割り当て変更後の処理装置１００からの読み出し要求に対応して出力することが可能となる。割り当て変更前に不使用であったメモリ領域がある場合は、その不使用であったメモリ領域に新たに割り当てられたデータから移行していくことで割り当て変更前に書き込まれたデータを無駄にすることなくデータを移行することができる。例えば、システムメモリの有効メモリ領域のうち先頭アドレス側から使用している場合は、最後尾アドレスに移行するデータから順に移行していくことで実現できる。さらに、一旦読み出した時に対応付けられた誤り訂正符号を用いてＥＣＣ誤り検出部２４０およびＥＣＣ訂正部２５０により誤り訂正を施した上で割り当て変更後のアドレスに書き換えることで、割り当て変更時点での誤りを訂正することができる。
【００４７】
また、アドレス変換部２１０によって割り当てを除外されたメモリについて、所定のデータに対応した誤り訂正符号をＥＣＣ生成部２３０により生成しておき、割り当てを除外されたメモリに所定のデータを書き込み、読み出してＥＣＣ誤り検出部２４０およびＥＣＣ訂正部２５０によって、ＥＣＣ誤り検出部２４０で誤りがないと検出するか、またはＥＣＣ誤り検出部２４０が誤りがあると検出していてＥＣＣ訂正部２５０から訂正可能となったことを示す情報が取得されれば、割り当てを除外されたメモリが正常動作に戻っていると判断してメモリエラー判定部２６０からのメモリエラー判定結果を変更することで、アドレス変換部２１０で改めて除外したメモリを割り当てするメモリに復帰させるとしても良い。このようにすることで、一時的に誤りを発生していると判断されていたが、その後に誤りを発生していると判断されていないメモリについて除外しないので、極力メモリを除外にせずにシステムメモリ容量を確保したい処理システムを構成する場合には、メモリが誤りを発生しているおそれが高くなるまで簡単に除外されずに割り当てができるという効果を奏する。
【００４８】
実施の形態２．
実施の形態１では、アドレス変換部で誤りが発生しているメモリを除外して割り当てを変更していたが、実施の形態２では、処理装置１００からシステムメモリ３００への書き込み要求のデータについて監視を行い、その結果を用いて割り当てを行なう。
【００４９】
図６は、この発明を実施するための実施の形態２におけるメモリアクセス装置を備えたシステム構成を示すものである。本実施の形態は、実施の形態１にかかるメモリアクセス装置に比べて不使用ビット判定部２７０をさらに備えるものである。
【００５０】
図６において、１００は処理装置、２００はメモリアクセス装置、３００はシステムメモリである。処理装置１００とメモリアクセス装置２００とはアドレスバス１１０とデータバス１２０とで接続される。アドレスバス１１０にはメモリアドレス情報を送るためのメモリアドレスバス１１１とアクセス要求の種類などを示すバス制御信号１１２とが含まれている。バス制御信号１１２には書き込み要求を示すライト信号、読み出し要求を示すリード信号、システムメモリへのアクセス要求であるかを示すチップセレクト信号などがある。また、データバス１２０は双方向バスであって、ここではメモリアクセス装置２００にとって入力データバスとなるライトデータバス１２１と、メモリアクセス装置２００にとって出力データバスとなるリードデータバス１２２とに分けて接続されているものとして説明する。
【００５１】
次にメモリアクセス装置２００の内部の構成について説明する。本実施の形態にかかるメモリアクセス装置２００は、アドレス変換部２１０、データ並び替え部２２０、ＥＣＣ生成部２３０、ＥＣＣ誤り検出部２４０、ＥＣＣ訂正部２５０、メモリエラー判定部２６０、不使用ビット判定部２７０を備える。ここで、実施の形態１と同じ符号のものに関しては構成及び作用が実施の形態１と同様であるため、説明を省略する。
【００５２】
不使用ビット判定部２７０は、処理装置１００からシステムメモリ３００への書き込み要求のデータについて監視を行なう。具体的にはシステムメモリ３００のデータ幅（例えば４ワード）のうち、処理装置１００が書き込み要求を行なう際に常に「０」を書き込んでいるワードがあるか否かを監視し、常に「０」を書き込んでいるワードの情報をそのシステムメモリアドレスと対応付けた監視結果として出力する。
【００５３】
アドレス変換部２１０は、メモリエラー判定部２６０からのメモリエラー判定結果から除外すべきメモリがある場合に、不使用ビット判定部２７０からの監視結果を参照して処理装置１００からのシステムメモリ３００へのアクセス要求のメモリアドレスおよびデータに対して割り当てるメモリおよびメモリのアドレス２１１を変更する。具体的には、不使用ビット判定部２７０からの監視結果である常に「０」を書き込んでいるワードについては、メモリエラー判定結果から除外すべきメモリとなったメモリに割り当てる。
【００５４】
データ並べ替え部２２０は、処理装置１００から読み出し要求があった場合に、アドレス変換部２１０が除外すべきメモリとなったメモリに割り当てたデータ領域については、ＥＣＣ訂正部の結果に関わらずそのワードを「０」として他のワードと結合してリードデータを生成して出力する。
【００５５】
これにより、システム全体で構成しているシステムメモリのデータ幅に対して、処理装置１００が一部のみのデータ幅のみ使用しているアドレスがあった場合には、書き込み要求または読み出し要求をしておきながら全てのデータ幅を必要としない場合がある。このような状況がある場合において除外するメモリに処理装置１００が必要としないデータの領域を割り当てることで使用できるメモリ領域を有効に使用することができ、メモリの除外によって削減されるメモリ量を抑えることができるという効果を奏する。
【００５６】
また、この場合、ＥＣＣ生成部２３０、ＥＣＣ誤り検出部２４０、ＥＣＣ訂正部２５０、およびメモリエラー判定部２６０は、除外すべきメモリとなったメモリに割り当てたデータ領域については処理をしないこととしても構わない。このようにすることで処理の簡素化が可能となり処理システム全体の処理速度が向上するという効果を奏する。
【符号の説明】
【００５７】
１００  処理装置
２００  メモリアクセス装置
２１０  アドレス変換部
２２０  データ並べ替え部
２３０  ＥＣＣ生成部
２４０  ＥＣＣ誤り検出部
２５０  ＥＣＣ訂正部
２６０  メモリエラー判定部
３００システムメモリ
【図１】
2014109825.tif 000003
【図２】
2014109825.tif 000004
【図３】
2014109825.tif 000005
【図４】
2014109825.tif 000006
【図５】
2014109825.tif 000007
【図６】
2014109825.tif 000008