(57)【要約】【課題】データとＥＣＣデータが同じメモリに配置されている場合に、パーシャルアクセスにおけるメモリアクセスの高速化を図る。【解決手段】領域管理部１１は、メモリ２をキャッシュ領域とキャッシュ不可領域に分け、キャッシュ不可領域はＥＣＣデータが対象とする制御対象データサイズをパーシャルアクセスに対応させて１バイト等とし、制御対象データサイズ分のデータに対してＥＣＣデータを設ける。ＣＰＵ１からのアクセス要求がキャッシュ不可領域の場合、キャッシュ不可領域における制御対象データサイズに従ってデータの読み出し、書き込みが行われ、読み出し時の誤り訂正及び書き込み時のＥＣＣデータの生成もキャッシュ不可領域における制御対象データサイズ分のデータに対して行われ、リードデータ又はライトデータ以外のデータに対する処理を待つ必要がなく、パーシャルアクセスにおけるメモリアクセスを高速化できる。【選択図】図１
2011150486.tif 000002
【特許請求の範囲】
【請求項１】
データとデータに対する誤り制御用コードが格納される記憶装置と、前記記憶装置からのデータ読み出しを要求するデータ要求装置に接続されたデータ処理装置であって、
前記記憶装置を複数の領域に区分して管理し、誤り制御用コードが誤り制御の対象とするデータサイズである制御対象データサイズを領域ごとに変えて定義し、制御対象データサイズ分のデータごとに誤り制御用コードが領域内の所定位置に配置されるように各領域を管理し、読み出しアドレスが示されるデータ読み出し要求を前記データ要求装置から入力した際に、前記読み出しアドレスに基づいてデータ読み出しの対象となる領域を前記複数の領域の中から読み出し領域として判別するとともに、前記読み出し領域における前記読み出しアドレスに相当するアドレスを導出し導出したアドレスをデータアドレスとして前記記憶装置に出力し、前記読み出し領域における誤り制御用コードの配置に基づき読み出しの対象となる誤り制御用コードのアドレスを導出し導出したアドレスをコードアドレスとして前記記憶装置に出力する領域管理部と、
前記記憶装置から、前記データアドレスに対応するデータを制御対象データサイズ分取得するとともに、当該制御対象データサイズ分のデータに対する誤り制御用コードを取得するデータ読み出し部と、
前記データ読み出し部により取得された誤り制御用コードを用いて、前記データ読み出し部により取得された制御対象データサイズ分のデータの誤り制御を行う誤り制御実施部を有することを特徴とするデータ処理装置。
【請求項２】
前記領域管理部は、
キャッシュメモリに格納され得るデータが格納され、制御対象データサイズが前記キャッシュメモリにおけるキャッシュラインサイズに基づいて定められているキャッシュ領域と、
前記キャッシュメモリに格納されないデータが格納され、制御対象データサイズが前記キャッシュメモリにおけるキャッシュラインサイズから独立して定められているキャッシュ不可領域に区分して前記記憶装置を管理することを特徴とする請求項１に記載のデータ処理装置。
【請求項３】
前記領域管理部は、
前記キャッシュ領域と、制御対象データサイズが各キャッシュ不可領域で異なる複数のキャッシュ不可領域に区分して前記記憶装置を管理することを特徴とする請求項２に記載のデータ処理装置。
【請求項４】
前記領域管理部は、
論理アドレスである読み出しアドレスが示されているデータ読み出し要求を前記データ要求装置から入力し、論理アドレスである読み出しアドレスに基づき読み出し領域を前記複数の領域の中から判別する領域判定部と、
各々が前記複数の領域のうちのいずれかの領域を対象領域とし、自身の対象領域において前記読み出しアドレスに相当する物理アドレスを導出するとともに、導出した前記物理アドレスに対応する制御対象データサイズ分のデータに対する誤り制御用コードの物理アドレスを導出する複数の領域アクセス制御部と、
前記領域判定部により前記読み出し領域として判別された領域を対象領域とする領域アクセス制御部により導出されたデータの物理アドレスを前記データアドレスとして前記記憶装置に出力し、前記誤り制御用コードの物理アドレスを前記コードアドレスとして前記記憶装置に出力するセレクタを有することを特徴とする請求項１〜３のいずれかに記載のデータ処理装置。
【請求項５】
前記領域管理部は、
各々が前記複数の領域のうちのいずれかの領域を対象領域とし、
論理アドレスである読み出しアドレスが示されているデータ読み出し要求を前記データ要求装置から入力し、論理アドレスである読み出しアドレスに基づき、自身の対象領域が前記読み出し領域であるか否かを判断し、
自身の対象領域が前記読み出し領域である場合に、自身の対象領域において前記読み出しアドレスに相当する物理アドレスを導出するとともに、導出した前記物理アドレスに対応する制御対象データサイズ分のデータに対する誤り制御用コードの物理アドレスを導出し、導出したデータの物理アドレスを前記データアドレスとして前記記憶装置に出力し、導出した前記誤り制御用コードの物理アドレスを前記コードアドレスとして前記記憶装置に出力する複数の領域アクセス制御部を有することを特徴とする請求項１〜３のいずれかに記載のデータ処理装置。
【請求項６】
前記データ処理装置は、更に、
誤り制御用コードをキャッシュするコードキャッシュ部を有し、
前記データ読み出し部は、
前記読み出しアドレスに対応する制御対象データサイズ分のデータを前記記憶装置から取得するとともに、当該制御対象データサイズ分のデータに対する誤り制御用コードが前記コードキャッシュ部にキャッシュされている場合に前記コードキャッシュ部から誤り制御用コードを取得し、対象の誤り制御用コードが前記コードキャッシュ部にキャッシュされていない場合に前記記憶装置から誤り制御用コードを取得し、
前記誤り制御実施部は、
前記コードキャッシュ部から誤り制御用コードが取得された場合に、前記コードキャッシュ部から取得された誤り制御用コードを用いて、前記記憶装置から取得された制御対象データサイズ分のデータの誤り制御を行うことを特徴とする請求項１〜５のいずれかに記載のデータ処理装置。
【請求項７】
前記領域管理部は、
書き込みアドレスが示され書き込みデータが含まれるデータ書き込み要求を前記データ要求装置から入力した際に、前記書き込みアドレスに基づき書き込みの対象となる領域を前記複数の領域の中から書き込み領域として判別するとともに、前記書き込み領域における前記書き込みアドレスに相当するアドレスを導出し導出したアドレスをデータアドレスとして前記記憶装置に出力し、前記書き込み領域における誤り制御用コードの配置に基づき書き込みの対象となる誤り制御用コードのアドレスを導出し導出したアドレスをコードアドレスとして前記記憶装置に出力し、
前記データ処理装置は、更に、
前記書き込みデータの内容を反映させて、前記データアドレスに対応する制御対象データサイズ分のデータを誤り制御の対象とする誤り制御用コードを生成する誤り制御用コード生成部と、
前記書き込み領域の制御対象データサイズ単位で前記データアドレスに前記書き込みデータの書き込みを行うとともに、前記コードアドレスに前記誤り制御用コード生成部により生成された誤り制御用コードの書き込みを行うデータ書き込み部を有することを特徴とする請求項１〜６のいずれかに記載のデータ処理装置。
【請求項８】
前記領域管理部は、
キャッシュメモリに格納され得るデータが格納され、制御対象データサイズが前記キャッシュメモリにおけるキャッシュラインサイズに基づいて定められているキャッシュ領域と、
前記キャッシュメモリに格納されないデータが格納され、制御対象データサイズが前記キャッシュメモリにおけるキャッシュラインサイズから独立して定められているキャッシュ不可領域に区分して前記記憶装置を管理することを特徴とする請求項７に記載のデータ処理装置。
【請求項９】
前記領域管理部は、
前記キャッシュ領域と、制御対象データサイズが各キャッシュ不可領域で異なる複数のキャッシュ不可領域に区分して前記記憶装置を管理することを特徴とする請求項８に記載のデータ処理装置。
【請求項１０】
前記領域管理部は、
論理アドレスである書き込みアドレスが示されているデータ書き込み要求を前記データ要求装置から入力し、論理アドレスである書き込みアドレスに基づき書き込み領域を前記複数の領域の中から判別する領域判定部と、
各々が前記複数の領域のうちのいずれかの領域を対象領域とし、自身の対象領域において前記書き込みアドレスに相当する物理アドレスを導出するとともに、導出した前記物理アドレスに対応する制御対象データサイズ分のデータに対する誤り制御用コードの物理アドレスを導出する複数の領域アクセス制御部とを有し、
前記領域判定部は、
判別した前記書き込み領域を前記誤り制御用コード生成部に通知し、前記書き込み領域として判別した領域を対象領域とする領域アクセス制御部に、導出されたデータの物理アドレスを前記データアドレスとして前記データ書き込み部に出力させ、前記誤り制御用コードの物理アドレスを前記コードアドレスとして前記データ書き込み部に出力させることを特徴とする請求項７〜９のいずれかに記載のデータ処理装置。
【請求項１１】
前記領域管理部は、
各々が前記複数の領域のうちのいずれかの領域を対象領域とし、
論理アドレスである書き込みアドレスが示されているデータ書き込み要求を前記データ要求装置から入力し、論理アドレスである書き込みアドレスに基づき、自身の対象領域が前記書き込み領域であるか否かを判断し、自身の対象領域が前記書き込み領域である場合に、前記書き込み領域として自身の対象領域を前記誤り制御用コード生成部に通知し、
自身の対象領域が前記書き込み領域である場合に、自身の対象領域において前記書き込みアドレスに相当する物理アドレスを導出し、導出した前記物理アドレスに対応する制御対象データサイズ分のデータに対する誤り制御用コードの物理アドレスを導出し、導出したデータの物理アドレスを前記データアドレスとして前記データ書き込み部に出力し、導出した前記誤り制御用コードの物理アドレスを前記コードアドレスとして前記データ書き込み部に出力する複数の領域アクセス制御部を有することを特徴とする請求項７〜９のいずれかに記載のデータ処理装置。
【請求項１２】
前記データ処理装置は、更に、
誤り制御用コードをキャッシュするコードキャッシュ部を有し、
前記データ書き込み部は、
前記誤り制御用コード生成部により生成された誤り制御用コードを前記書き込み領域に書き込むとともに、前記コードキャッシュ部にも書き込むことを特徴とする請求項７〜１１のいずれかに記載のデータ処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリアクセスを高速化する技術に関し、例えば、高性能、高信頼化、小型化の要求される組込み情報処理装置におけるメモリアクセスを高速化する技術に関する。
【背景技術】
【０００２】
パソコン、サーバなどの高性能、高信頼化が要求される情報処理装置においては、メモリとして、データを格納するデータメモリと、ＥＣＣ（Ｅｒｒｏｒ  Ｃｈｅｃｋｉｎｇ  ａｎｄ  Ｃｏｒｒｅｃｔｉｎｇ）チェックコードを格納するＥＣＣメモリが実装され、データとＥＣＣチェックコード（以下、ＥＣＣチェックデータともいう）を同時にアクセスし、ＥＣＣの誤り訂正を行うことで、高性能、高信頼化を両立している（例えば、特許文献１）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平１０−６３５６９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
例えば、組み込み情報処理装置は、基板への実装部品の制約や、小型基板による配線エリアの制約から、ＥＣＣチェックコードを格納する専用のＥＣＣメモリを実装することが困難にもかかわらず、組み込み情報処理装置が提供するサービスの多様化から、高性能、高信頼化が求められている。
ＥＣＣチェックコード専用のＥＣＣメモリを実装することなく、高信頼化を実現するには、データメモリにＥＣＣチェックコードも配置し、データの読み出し後、ＥＣＣチェックコードを読み出す必要がある。
しかし、このようなメモリアクセス方法では、ＥＣＣチェックコードの対象となるデータを全て読み出さなければならず、メモリアクセスの高性能化の課題となっている。
【０００５】
つまり、例えば、図７に示す構成のように、ＥＣＣチェックコード専用のＥＣＣメモリを設けず、データメモリにＥＣＣチェックコードも配置している構成では、メモリ制御装置１１０は、複数個所のデータ読み出しを行い、ＥＣＣ誤り訂正部１８０が、読み出したデータ群とＥＣＣチェックコードにより、データの正当性を保障している。
この場合、パーシャルアクセスであっても、ブロックアクセスと同様に、複数個所のデータをすべて読み出さなければならず、パーシャルアクセスのレイテンシ増加を引き起こしている。
以下にて、具体例を用いて説明する。
【０００６】
図８は、ＥＣＣチェックコード専用のＥＣＣメモリを設けず、データメモリにＥＣＣチェックコードも配置している構成におけるデータメモリ上のデータの配置例を示している。
図８の例では、４バイトのデータに対して１バイトのＥＣＣチェックコードを設けている例を示している。
図８の例では、４バイトのデータについて１バイトごとの読み出しを４回行い、更に、１バイトのＥＣＣチェックデータの読み出しを１回行って、データの保障を実現している。
ブロックリードでは、４バイトのデータについて１バイトごとの読み出しを４回行い、更に、１バイトのＥＣＣチェックデータの読み出しを１回行って、全データ（４バイト）を返答する。
パーシャルリードでも、４バイトのデータについて１バイトごとの読み出しを４回行い、更に、１バイトのＥＣＣチェックデータの読み出しを１回行い、データの確認後に、必要データ（一部のデータ）のみを返答する。
ブロックライトでは、４バイトのデータについて１バイトごとの書き込みを４回行い、更に、１バイトのＥＣＣチェックデータの書き込みを１回行って、全データの更新を行う。
パーシャルライトでは、４バイトのデータについて１バイトごとの読み出しを４回行い、更に、１バイトのＥＣＣチェックデータの読み出しを１回行って、データの確認後に、ライトデータをマージして、チェックデータを再生成し、書き込む。
このように、図８の構成では、４バイトのデータをすべて読み出さないとＥＣＣチェックコードによる誤り制御又はＥＣＣチェックデータの生成ができないため、例えば、１バイトのデータのみを対象とするパーシャルリード又はパーシャルライトであっても、４バイトのデータを読み出す必要がある。
このため、リード対象のデータ、ライト対象のデータ以外のデータの読み出しが完了するのを待たなければならず、パーシャルアクセスにおいてレイテンシが発生するという課題がある。
【０００７】
本発明は、上述の課題を解決することを主な目的としており、ＥＣＣチェックデータの配置を工夫することで、メモリアクセスの高性能化を図ることを主な目的としている。
【課題を解決するための手段】
【０００８】
本発明に係るデータ処理装置は、
データとデータに対する誤り制御用コードが格納される記憶装置と、前記記憶装置からのデータ読み出しを要求するデータ要求装置に接続されたデータ処理装置であって、
前記記憶装置を複数の領域に区分して管理し、誤り制御用コードが誤り制御の対象とするデータサイズである制御対象データサイズを領域ごとに変えて定義し、制御対象データサイズ分のデータごとに誤り制御用コードが領域内の所定位置に配置されるように各領域を管理し、読み出しアドレスが示されるデータ読み出し要求を前記データ要求装置から入力した際に、前記読み出しアドレスに基づいてデータ読み出しの対象となる領域を前記複数の領域の中から読み出し領域として判別するとともに、前記読み出し領域における前記読み出しアドレスに相当するアドレスを導出し導出したアドレスをデータアドレスとして前記記憶装置に出力し、前記読み出し領域における誤り制御用コードの配置に基づき読み出しの対象となる誤り制御用コードのアドレスを導出し導出したアドレスをコードアドレスとして前記記憶装置に出力する領域管理部と、
前記記憶装置から、前記データアドレスに対応するデータを制御対象データサイズ分取得するとともに、当該制御対象データサイズ分のデータに対する誤り制御用コードを取得するデータ読み出し部と、
前記データ読み出し部により取得された誤り制御用コードを用いて、前記データ読み出し部により取得された制御対象データサイズ分のデータの誤り制御を行う誤り制御実施部を有することを特徴とする。
【発明の効果】
【０００９】
本発明によれば、記憶装置を複数の領域に区分して管理し、制御対象データサイズを領域ごとに変えて定義し、制御対象データサイズ分のデータごとに誤り制御用コードが配置されるようにしているので、いずれかの領域の制御対象データサイズをパーシャルアクセスのデータサイズに合わせることにより、パーシャルアクセスにおいて、誤り制御のため又は誤り制御用コードの生成のためにアクセス対象データ以外のデータに対する処理の完了を待つ必要がなく、パーシャルアクセスにおけるメモリアクセスを高速化することができる。
【図面の簡単な説明】
【００１０】
【図１】実施の形態１に係るメモリ制御装置の構成例を示す図。
【図２】実施の形態１に係るデータとＥＣＣチェックコードの配置例を示す図。
【図３】実施の形態２に係るメモリ制御装置の構成例を示す図。
【図４】実施の形態２に係るデータとＥＣＣチェックコードの配置例を示す図。
【図５】実施の形態３に係るメモリ制御装置の構成例を示す図。
【図６】実施の形態３に係るメモリ制御装置の処理フローを示すフローチャート図。
【図７】従来のメモリ制御装置の構成例を示す図。
【図８】従来のデータとＥＣＣチェックコードの配置例を示す図。
【発明を実施するための形態】
【００１１】
実施の形態１．
本実施の形態及び以降の実施の形態では、上述の課題を解決すべく、データメモリをアクセスするサイズ（例えば、キャッシュ領域であればキャッシュメモリの１ラインがアクセスサイズとなる）に応じて、領域を分割し、アクセスサイズにあったＥＣＣチェックデータの配置を行うことで、メモリアクセスの高性能化を図っている。
以下にて、詳細を説明する。
【００１２】
図１は、本実施の形態に係るメモリ制御装置１０を含む全体構成例を示すブロック図である。
【００１３】
本実施の形態に係るメモリ制御装置１０は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１及びメモリ２に接続されている。
なお、ＣＰＵ１は、メモリ制御装置１０に対して、メモリ２からのデータ読み出し、及びメモリ２へのデータ書き込みを要求し、データ要求装置の例である。
また、メモリ２は、データとＥＣＣチェックコード（誤り制御用コード）を記憶しており、記憶装置の例である。
また、メモリ制御装置１０は、データ処理装置の例である。
【００１４】
次に、メモリ制御装置１０の内部構成について説明する。
【００１５】
領域判定部１１はＣＰＵ１がアクセスしたアドレスがキャッシュ領域か、キャッシュ不可領域かを判定する。
【００１６】
キャッシュ領域は、プロセッサのキャッシュメモリに格納され得るメモリ領域であり、制御対象データサイズがキャッシュメモリにおけるキャッシュラインサイズに基づいて定められている。
キャッシュ不可領域は、プロセッサのキャッシュメモリに格納できないメモリ領域であり、制御対象データサイズがキャッシュメモリにおけるキャッシュラインサイズから独立して定められている。
キャッシュ不可領域は、例えば、複数のプロセッサなどで共有されるメモリエリアなどである（高価なプロセッサでは、キャッシュメモリにデータの一貫性を維持する機能を持っているが、廉価なプロセッサでは、キャッシュメモリにデータの一貫性を維持する機能を持っておらず、複数のプロセッサで共有されるデータをキャッシュメモリに格納しないことで共有を実現している）。
なお、制御対象データサイズとは、ＥＣＣチェックコードが誤り制御の対象とするデータサイズ（ＥＣＣチェックコードに対応するデータのデータサイズ）である。
【００１７】
詳細は後述するが、領域判定部１１は、メモリ２をキャッシュ領域とキャッシュ不可領域に分け、キャッシュ不可領域は制御対象データサイズをパーシャルアクセスに対応させて１バイト等の小さいデータサイズとし、制御対象データサイズ分のデータに対してＥＣＣチェックデータを設けるよう管理する。
ＣＰＵ１からのアクセス要求がキャッシュ不可領域の場合は、キャッシュ不可領域における制御対象データサイズに従ってデータの読み出し、書き込みが行われ、読み出しの際のＥＣＣチェックデータによる誤り訂正及び書き込みの際のＥＣＣチェックデータの生成もキャッシュ不可領域における制御対象データサイズ分のデータサイズに対して行われるため、リードデータ又はライトデータ以外のデータに対する処理を待つ必要がなく、パーシャルアクセスにおけるメモリアクセスを高速化できる。
【００１８】
キャッシュ領域アクセス制御部１２は、ＣＰＵ１のアクセスがキャッシュ領域であると想定し、メモリ２に対してデータのアドレスとしてキャッシュ領域内の物理アドレスを生成し、また、ＥＣＣチェックデータのアドレスとしてキャッシュ領域内の物理アドレスを生成する。
【００１９】
キャッシュ不可領域アクセス制御部１３は、ＣＰＵ１のアクセスがキャッシュ不可領域であると想定し、メモリ２に対してデータのアドレスとしてキャッシュ不可領域内の物理アドレスを生成し、また、ＥＣＣチェックデータのアドレスとしてキャッシュ不可領域内の物理アドレスを生成する。
【００２０】
セレクタ１６は、領域判定部１１による判定結果によりキャッシュ領域アクセス制御部１２のアドレス出力又はキャッシュ不可領域アクセス制御部１３のアドレス出力を選択する。
前述のように、領域判定部１１は、ＣＰＵ１からのアクセスアドレスの領域がキャッシュ領域であるか、キャッシュ不可領域であるかを判定するため、セレクタ１６は領域判定部１１の判定結果に基づきキャッシュ領域アクセス制御部１２のアドレス出力又はキャッシュ不可領域アクセス制御部１３のアドレス出力を選択する。
なお、データ読み出しの場合は、領域判定部１１により選択され、セレクタ１６によりメモリ２に出力されるデータのアドレスはデータアドレスに相当し、ＥＣＣチェックデータのアドレスはコードアドレスに相当する。
また、データ書き込み場合は、領域判定部１１により選択され、ＥＣＣ生成部１４に出力されるデータのアドレスはデータアドレスに相当し、ＥＣＣチェックデータのアドレスはコードアドレスに相当する。
【００２１】
ＥＣＣ生成部１４は、ＣＰＵ１からの書き込み要求に従い、領域判定部１１で判定された書き込みアドレスに対応する領域がキャッシュ領域及びキャッシュ不可領域のどちらであるかという領域情報と、ライトデータからＥＣＣチェックデータを生成する。
つまり、ＥＣＣ生成部１４は、書き込み領域がキャッシュ領域である場合は、キャッシュ領域における制御対象データサイズ分のデータ（例えば、４バイトのデータ）に対するＥＣＣチェックデータを書き込みデータの内容を反映させて生成する。一方、書き込み領域がキャッシュ不可領域である場合は、キャッシュ不可領域における制御対象データサイズ分のデータ（例えば、１バイトのデータ）に対するＥＣＣチェックデータを書き込みデータの内容を反映させて生成する。
また、ＥＣＣ生成部１４は、キャッシュ領域アクセス制御部１２又はキャッシュ不可領域アクセス制御部１３から書き込みデータ及びＥＣＣチェックデータの書き込み先の物理アドレスを入力し、入力した物理アドレスに書き込みデータ及びＥＣＣチェックデータを書き込み。
ＥＣＣ生成部１４は、誤り制御用コード生成部及びデータ書き込み部の例である。
【００２２】
ＥＣＣ誤り訂正部１５は、ＣＰＵ１からの読み出し要求に従い、領域判定部１１で判定された読み出しアドレスに対応する領域がキャッシュ領域及びキャッシュ不可領域のどちらであるかという領域情報と、メモリ２から読み出したデータとＥＣＣチェックデータからＥＣＣ誤り訂正を行う。
つまり、メモリ２から、データアドレスに対応する制御対象データサイズ分のデータを取得するとともに、当該制御対象データサイズ分のデータに対するＥＣＣチェックデータを取得し、取得したＥＣＣチェックデータを用いて、取得した制御対象データサイズ分のデータの誤り訂正を行う。
ＥＣＣ誤り訂正部１５は、データ読み出し部及び誤り制御実施部の例である。
【００２３】
なお、領域判定部１１、キャッシュ領域アクセス制御部１２、キャッシュ不可領域アクセス制御部１３、ＥＣＣ生成部１４、ＥＣＣ誤り訂正部１５は、それぞれ、回路等のハードウェアであってもよいし、ソフトウェアであってもよい。ソフトウェアである場合は、メモリ制御装置１０内の所定の記憶領域に格納され、メモリ制御装置１０内の所定の演算装置により読み出されて、各部が実行される。
【００２４】
図２は、データ幅３２ｂｉｔのメモリに配置されたデータとＥＣＣチェックデータの配置例である。
キャッシュ領域において、データ０００からデータ００３の４バイトに対応するＥＣＣチェックデータがＥＣＣ０００（１バイト分）であり、データ００４からデータ００７の４バイトに対応するＥＣＣチェックデータがＥＣＣ００４（１バイト分）である。
また、データ０００からデータ００Ｆの１６バイトがキャッシュメモリの１ライン分であり、ＥＣＣ０００からＥＣＣ００Ｃの４バイトが１ラインに対応するＥＣＣチェックデータである。
キャッシュ不可領域において、データ１００の１バイトに対応するＥＣＣチェックデータがＥＣＣ１００（１バイト）であり、データ１０１の１バイトに対応するＥＣＣチェックデータがＥＣＣ１０１（１バイト）である。
【００２５】
このように、本実施の形態では、領域判定部１１が、メモリ２の領域をキャッシュ領域とキャッシュ不可領域という複数の領域に区分して管理し、誤り制御用コードが誤り制御の対象とする制御対象データサイズを領域ごとに変えて定義し、また、制御対象データサイズ分のデータごとにＥＣＣチェックコードが領域内の所定位置に配置されるように各領域を管理している。
具体的には、キャッシュ領域では制御対象データサイズが４バイトであり、４バイト分のデータごとにＥＣＣチェックコードがキャッシュ領域内に配置されている。また、キャッシュ不可領域では制御対象データサイズが１バイトであり、１バイト分のデータごとにＥＣＣチェックコードがキャッシュ領域内に配置されている。
キャッシュ領域では、制御対象データサイズは、キャッシュラインサイズに基づいて定められている。一方、キャッシュ不可領域では、制御対象データサイズはキャッシュラインサイズから独立して定めることができ、例えば、パーシャルアクセスで頻繁に用いられるデータサイズを制御対象データとすることができる。
キャッシュ領域では、データの配置領域とＥＣＣチェックコードの配置領域が分けられ、キャッシュ１ライン分のデータ（１６バイト）に対する４つのＥＣＣチェックコード（４バイト）がデータの順序に従って連続して配置されている。
一方、キャッシュ不可領域では、１バイトのデータに後続して対応するＥＣＣチェックコードが配置されている。
また、領域判定部１１は、ＣＰＵ１からアクセスアドレス（読み出しアドレス又は書き込みアドレス）が示されるアクセス要求（データ読み出し要求又はデータ書き込み要求）を入力した際に、アクセスアドレスに基づいて読み出し又は書き込みの対象となる領域としてキャッシュ領域又はキャッシュ不可領域を選択する。
なお、読み出しの対象の領域として選択した領域を読み出し領域とも呼ぶ。
また、書き込みの対象の領域として選択した領域を書き込み領域とも呼ぶ。
【００２６】
ＣＰＵ１からのアクセスアドレスは、データの論理アドレスを示している。
領域判定部１１は、アクセスアドレス（論理アドレス）から、アクセス対象となる領域がキャッシュ領域又はキャッシュ不可領域でいずれであるかを判別し、セレクタ１６を操作する。
また、キャッシュ領域アクセス制御部１２は、アクセスアドレス（論理アドレス）から、キャッシュ領域におけるデータの物理アドレスとＥＣＣチェックデータの物理アドレスを導出し、また、キャッシュ不可領域アクセス制御部１３も、アクセスアドレス（論理アドレス）から、キャッシュ不可領域におけるデータの物理アドレスとＥＣＣチェックデータの物理アドレスを導出する。
メモリ２にデータとＥＣＣチェックデータを混在して配置するため、このようなアドレス変換が発生する。
そして、キャッシュ領域アクセス制御部１２で導出されたデータの物理アドレスとＥＣＣチェックコードの物理アドレス又はキャッシュ不可領域アクセス制御部１３で導出されたデータの物理アドレスとＥＣＣチェックコードの物理アドレスが領域判定部１１による判断に従ってセレクタ１６により選択され、メモリ２に出力される。
【００２７】
本実施の形態に係る領域判定部１１、キャッシュ領域アクセス制御部１２、キャッシュ不可領域アクセス制御部１３及びセレクタ１６は、このように動作し、それぞれ、領域管理部に相当する。
【００２８】
ここで、領域判定部１１における領域判定手順、キャッシュ領域アクセス制御部１２とキャッシュ不可領域アクセス制御部１３におけるデータアドレスとＥＣＣチェックデータアドレス（ＥＣＣアドレスとも表記する）の生成手順を例を用いて説明する。
【００２９】
例えば、キャッシュ領域はメモリ２の先頭（０番地）から配置されているものとする。
また、キャッシュ領域は、データαバイトに対してＥＣＣチェックデータが１バイト設けられているとする。また、データ用の領域がβＭバイトであり、ＥＣＣチェックデータ用の領域がβ／αＭバイトであるとする。
キャッシュ不可領域では、データγバイトに対してＥＣＣチェックデータが１バイト設けられているとする。また、データ用の領域がδＭバイトであり、ＥＣＣチェックデータ用の領域がδ／γＭバイトであるとする。
なお、このような情報は予め、領域判定部１１、キャッシュ領域アクセス制御部１２とキャッシュ不可領域アクセス制御部１３に設定されている。
【００３０】
上記のメモリ構成では、データ用の領域は、キャッシュ領域βＭバイト、キャッシュ不可領域δＭバイトであるため、これに合わせて領域判定部１１は、以下の情報を持ち、アクセスアドレスＸの値によりいずれの領域が対象となっているかを判定することができる。
０〜（βＭ−１）番地：キャッシュ領域
βＭ〜（βＭ＋δＭ−１）番地：キャッシュ不可領域
【００３１】
また、キャッシュ領域アクセス制御部１２は、アクセスアドレスＸに対して以下の計算を行って、データアドレスとＥＣＣチェックコードアドレスを生成する。
データアドレス＝Ｘ（番地）
ＥＣＣアドレス＝Ｘ／α＋βＭ（番地）
また、キャッシュ不可領域アクセス制御部１３は、アクセスアドレスＸに対して以下の計算を行って、データアドレスとＥＣＣチェックコードアドレスを生成する。
データアドレス＝Ｘ＋β／αＭ（番地）
ＥＣＣアドレス＝（Ｘ−βＭ）／γ＋βＭ＋β／αＭ＋δＭ（番地）
【００３２】
次に、本実施の形態に係るメモリ制御装置１０の動作例を説明する。
以下では、キャッシュ領域からの読み出し、キャッシュ領域への書き込み、キャッシュ不可領域からの読み出し、キャッシュ不可領域への書き込みの順に説明する。
【００３３】
ＣＰＵ１から、キャッシュ領域（データ０００からデータ００Ｆ）に対して読み出し要求が発行されると、キャッシュ領域アクセス制御部１２にて、メモリ２を読み出すためのデータアドレスとＥＣＣアドレスが生成される。
同時に、キャッシュ不可領域アクセス制御部１３にて、メモリ２を読み出すためのデータアドレスとＥＣＣアドレスが生成される。
領域判定部１１では、キャッシュ領域への読み出しと判断し、セレクタ１６にキャッシュ領域アクセス制御部１２からのアドレス出力を選択する選択信号を出力する。
キャッシュ領域アクセス制御部１２からの読み出しアドレスに従い、メモリ２からデータ（１バイトを４回）及びＥＣＣチェックデータの読み出しを行う。
読み出されたデータ及びＥＣＣチェックデータは、ＥＣＣ誤り訂正部１５において、ビット誤りのチェックを行う。
その際、領域判定部１１からの領域情報（キャッシュ領域）を元に、データ、ＥＣＣチェックデータの配置が解析される。
１ビット誤りの場合は、誤り訂正を行い、ＣＰＵ１に読み出しデータを送出する。
図示していないが、誤り訂正を行ったデータは、メモリ２に書き戻される。
【００３４】
ＣＰＵ１から、キャッシュ領域（データ０１０からデータ０１Ｆ）に対して書き込み要求（書き込み要求には、書き込みデータが含まれている）が発行されると、キャッシュ領域アクセス制御部１２にて、メモリ２に書き込むためのデータアドレスとＥＣＣアドレスが生成される。
同時に、キャッシュ不可領域アクセス制御部１３にて、メモリ２に書き込むためのデータアドレスとＥＣＣアドレスが生成される。
領域判定部１１では、キャッシュ領域への書き込みと判断し、セレクタ１６にキャッシュ領域アクセス制御部１２からのアドレス出力を選択する選択信号を出力する。
また、ＥＣＣ生成部１４は、ＣＰＵ１からの書き込みデータの内容を反映させて、４バイトのデータを対象とするＥＣＣチェックデータの生成を行う。
その際、領域判定部１１からの領域情報（キャッシュ領域）を元に、データ、ＥＣＣチェックデータの配置が決められる。
また、ＥＣＣ生成部１４は、キャッシュ領域アクセス制御部１２からの書き込みアドレスに従い、メモリ２にデータ及びＥＣＣチェックデータの書き込みを行う。
【００３５】
ＣＰＵ１から、キャッシュ不可領域（データ１００）に対して読み出し要求が発行されると、キャッシュ不可領域アクセス制御部１３にて、メモリ２を読み出すためのデータアドレスとＥＣＣアドレスが生成される。
同時に、キャッシュ領域アクセス制御部１２にて、メモリ２を読み出すためのデータアドレスとＥＣＣアドレスが生成される。
領域判定部１１では、キャッシュ不可領域への読み出しと判断し、セレクタ１６にキャッシュ不可領域アクセス制御部１３からのアドレス出力を選択する選択信号を出力する。
キャッシュ不可領域アクセス制御部１３からの読み出しアドレスに従い、メモリ２からデータ（１バイトを１回）及びＥＣＣチェックデータの読み出しを行う。
読み出されたデータ及びＥＣＣチェックデータは、ＥＣＣ誤り訂正部１５において、ビット誤りのチェックを行う。
その際、領域判定部１１からの領域情報（キャッシュ不可領域）を元に、データ、ＥＣＣチェックデータの配置が解析される。
１ビット誤りの場合は、誤り訂正を行い、ＣＰＵ１に読み出しデータを送出する。
図示していないが、誤り訂正を行ったデータは、メモリ２に書き戻される。
【００３６】
ＣＰＵ１から、キャッシュ不可領域（データ１０４）に対して書き込み要求（書き込み要求には、書き込みデータが含まれている）が発行されると、キャッシュ不可領域アクセス制御部１３にて、メモリ２に書き込むためのデータアドレスとＥＣＣアドレスが生成される。
同時に、キャッシュ領域アクセス制御部１２にて、メモリ２に書き込むためのデータアドレスとＥＣＣアドレスが生成される。
領域判定部１１では、キャッシュ不可領域への書き込みと判断し、セレクタ１６にキャッシュ不可領域アクセス制御部１３からのアドレス出力を選択する選択信号を出力する。
また、ＥＣＣ生成部１４は、ＣＰＵ１からの書き込みデータの内容を反映させて、１バイトのデータを対象とするＥＣＣの生成を行う。
その際、領域判定部１１からの領域情報（キャッシュ不可領域）を元に、データ、ＥＣＣチェックデータの配置が決められる。
また、ＥＣＣ生成部１４は、キャッシュ不可領域アクセス制御部１３からの書き込みアドレスに従い、メモリ２にデータ及びＥＣＣチェックデータの書き込みを行う。
【００３７】
なお、上記では、両アクセス制御部１２、１３がデータの物理アドレスとＥＣＣチェックコードの物理アドレスを生成することとしているが、各アクセス制御部１２、１３にアドレス情報を持たせれば、両者でアドレスを生成する必要はない。
つまり、キャッシュ領域アクセス制御部１２とキャッシュ不可領域アクセス制御部１３のそれぞれが、アクセスアドレスが自制御部で処理すべきエリアに属しているかを判別できるようにすればよい。
自身の対象領域が読み出し領域又は書き込み領域である場合は、各アクセス制御部は、アクセスアドレスに基づいて対象領域におけるデータの物理アドレスを導出するとともに、導出した物理アドレスに対応するＥＣＣチェックコードの物理アドレスを導出する。
そして、導出したデータアドレス及びＥＣＣチェックデータアドレスをメモリ２に出力し、また、書き込み要求であればＥＣＣ生成部１４に書き込み領域を通知し、読み出し領域であればＥＣＣ誤り訂正部１５に読み出し領域を通知する。
更に、ＥＣＣ生成部１４又はＥＣＣ誤り訂正部１５にデータアドレス及びＥＣＣチェックデータアドレスを出力する。
このとき、他方の制御部は、物理アドレスの導出及び出力は行わない。
また、この場合、領域判定部１１で領域を判定する必要はない。
【００３８】
また、上記では、キャッシュ不可領域の制御対象データサイズを１バイトとしたが、キャッシュ不可領域全体で同じデータ構成であれば、制御対象データサイズを他のサイズ、例えば、２バイト、４バイト、８バイトとしてもよい。
１バイトデータに対するＥＣＣは５ｂｉｔ、２バイトデータに対するＥＣＣは６ｂｉｔ、４バイトデータに対するＥＣＣは７ｂｉｔ、８バイトデータに対するＥＣＣは８ｂｉｔとなる。
【００３９】
以上のように、本実施の形態によれば、キャッシュ領域、キャッシュ不可領域と領域を分割し、アクセスサイズにあったＥＣＣチェックデータの配置を行うことで、余分なメモリアクセスを行うことなく、メモリアクセスを行い、メモリアクセスの高性能化を図ることが可能となる。
つまり、本実施の形態では、パーシャルアクセスが行われるデータサイズに合わせてキャッシュ不可領域の制御対象データサイズを定め、また、制御対象データサイズ分のデータごとにＥＣＣチェックデータを設けている。
このため、パーシャルアクセスにおいて、誤り訂正のため又はＥＣＣチェックデータの生成のためにアクセス対象データ以外のデータに対する処理の完了を待つ必要がなく、パーシャルアクセスにおけるメモリアクセスを高速化することができる。
【００４０】
以上、本実施の形態では、
プロセッサとメモリと前記メモリを制御するメモリ制御装置で構成される組込み情報処理装置において、
アクセスアドレスから、キャッシュ領域またはキャッシュ不可領域へのアクセスを判定する領域判定部と、
キャッシュ領域へのアクセスとしてメモリを制御するキャッシュ領域アクセス制御部と、
キャッシュ不可領域へのアクセスとしてメモリを制御するキャッシュ不可領域アクセス制御部と、
アクセス領域により、キャッシュ領域への書き込み用のＥＣＣまたはキャッシュ不可領域への書き込み用ＥＣＣを生成するＥＣＣ生成部と、
アクセス領域により、キャッシュ領域からの読み出し用ＥＣＣ誤り訂正またはキャッシュ不可領域からの読み出し用ＥＣＣ誤り訂正を行うＥＣＣ誤り訂正部と
で構成され、
領域により、ＥＣＣのチェックコード配置場所を変更する組込み情報処理装置について説明した。
【００４１】
実施の形態２．
図３は、キャッシュ不可領域のアクセスサイズ毎に領域分割した場合のブロック図である。
【００４２】
図３において、領域判定部１１ａはＣＰＵ１がアクセスしたアドレスが、キャッシュ領域か、または、キャッシュ不可領域のうちの１バイトアクセス領域か、２バイトアクセス領域か、４バイトアクセス領域かを判定する。
キャッシュ不可領域アクセス制御部（１バイト）１３ａは、ＣＰＵ１のアクセスがキャッシュ不可の１バイトアクセス領域であると想定し、メモリ２に対してデータアドレスとＥＣＣアドレスを生成する１バイト領域用のキャッシュ不可領域アクセス制御部である。
キャッシュ不可領域アクセス制御部（２バイト）１３ｂは同じく２バイト領域用、キャッシュ不可領域アクセス制御部（４バイト）１３ｃは同じく４バイト領域用のキャッシュ不可領域アクセス制御部である。
ＥＣＣ生成部１４ａは、ＣＰＵ１からの書き込み要求に従い、領域判定部１１からの書き込みアドレスの対象領域がキャッシュ領域か何バイト用のキャッシュ不可領域かという領域情報と、ライトデータからＥＣＣチェックデータを生成する。
ＥＣＣ誤り訂正部１５ａは、ＣＰＵ１からの読み出し要求に従い、領域判定部１１からの読み出しアドレスの対象領域がキャッシュ領域か何バイト用のキャッシュ不可領域かという領域情報と、メモリから読み出したデータとＥＣＣチェックデータからＥＣＣ誤り訂正を行う。
セレクタ１６ａは、領域判定部１１ａによる判定結果によりキャッシュ領域アクセス制御部１２のアドレス出力又はキャッシュ不可領域アクセス制御部１３ａ〜１３ｃのいずれかのアドレス出力を選択する。
【００４３】
図４は、データ幅３２ｂｉｔのメモリに配置されたデータとＥＣＣチェックデータの配置例である。
なお、キャッシュ領域は、図２と同様であるため、図示を省略している。
【００４４】
キャッシュ不可領域において、データ１００の１バイトに対応するＥＣＣチェックデータがＥＣＣ１００（１バイト）であり、データ１０１の１バイトに対応するＥＣＣチェックデータがＥＣＣ１０１（１バイト）である。
キャッシュ不可領域において、データ２００〜２０１の２バイトに対するＥＣＣチェックデータがＥＣＣ２００（１バイト）であり、データ２０２〜２０３の２バイトに対するＥＣＣチェックデータがＥＣＣ２０２（１バイト）である。
キャッシュ不可領域において、データ３００〜３０３の４バイトに対するＥＣＣチェックデータがＥＣＣ３００（１バイト）であり、データ３０４〜３０７の２バイトに対するＥＣＣチェックデータがＥＣＣ３０４（１バイト）である。
【００４５】
次に、本実施の形態に係るメモリ制御装置１０の動作例を説明する。
キャッシュ領域への読み出し、書き込み要求は、実施の形態１と同じため、記載を省略する。
また、以下では、１バイト領域からの読み出し、１バイト領域への書き込み、２バイト領域からの読み出し、２バイト領域への書き込み、４バイト領域からの読み出し、４バイト領域への書き込みの順に説明する。
【００４６】
ＣＰＵ１から、キャッシュ不可領域（データ１００）に対して１バイトの読み出し要求が発行されると、キャッシュ不可領域アクセス制御部（１バイト）１３ａにて、メモリ２を読み出すためのデータアドレスとＥＣＣアドレスが生成される。
同時に、キャッシュ領域アクセス制御部１２及びキャッシュ不可領域アクセス制御部（２バイト）１３ｂ、キャッシュ不可領域アクセス制御部（４バイト）１３ｃにて、メモリ２を読み出すためのデータアドレスとＥＣＣアドレスが生成される。
領域判定部１１ａでは、キャッシュ不可領域（１バイト）への読み出しと判断し、セレクタ１６ａにキャッシュ不可領域アクセス制御部（１バイト）１３ａからのアドレス出力を選択する選択信号を出力する。
キャッシュ不可領域アクセス制御部（１バイト）１３ａからの読み出しアドレスに従い、メモリ２からデータ及びＥＣＣチェックデータの読み出しを行う。
読み出されたデータ及びＥＣＣチェックデータは、ＥＣＣ誤り訂正部１５ａにおいて、ビット誤りのチェックを行う。
その際、領域判定部１１ａからの領域情報（キャッシュ不可領域、１バイト）を元に、データ、ＥＣＣチェックデータの配置が解析される。
１ビット誤りの場合は、誤り訂正を行い、ＣＰＵ１に読み出しデータを送出する。
図示していないが、誤り訂正を行ったデータは、メモリ２に書き戻される。
【００４７】
ＣＰＵ１から、キャッシュ不可領域（データ１０４）に対して１バイトの書き込み要求が発行されると、キャッシュ不可領域アクセス制御部（１バイト）１３ａにて、メモリ２に書き込むためのデータアドレスとＥＣＣアドレスが生成される。
同時に、キャッシュ領域アクセス制御部１２及びキャッシュ不可領域アクセス制御部（２バイト）１３ｂ、キャッシュ不可領域アクセス制御部（４バイト）１３ｃにて、メモリ２に書き込むためのデータアドレスとＥＣＣアドレスが生成される。
領域判定部１１では、キャッシュ不可領域（１バイト）への書き込みと判断し、セレクタ１６にキャッシュ不可領域アクセス制御部（１バイト）１３ａからのアドレス出力を選択する選択信号を出力する。
また、ＥＣＣ生成部１４は、ＣＰＵ１からの書き込みデータの内容を反映させてＥＣＣの生成を行う。
その際、領域判定部１１ａからの領域情報（キャッシュ不可領域、１バイト）を元に、データ、ＥＣＣチェックデータの配置が決められる。
また、ＥＣＣ生成部１４は、キャッシュ不可領域アクセス制御部（１バイト）１３ａからの書き込みアドレスに従い、メモリ２にデータ及びＥＣＣチェックデータの書き込みを行う。
【００４８】
ＣＰＵ１から、キャッシュ不可領域（データ２００）に対して２バイトの読み出し要求が発行されると、キャッシュ不可領域アクセス制御部（２バイト）１３ｂにて、メモリ２を読み出すためのデータアドレスとＥＣＣアドレスが生成される。
同時に、キャッシュ領域アクセス制御部１２及びキャッシュ不可領域アクセス制御部（１バイト）１３ａ、キャッシュ不可領域アクセス制御部（４バイト）１３ｃにて、メモリ２を読み出すためのデータアドレスとＥＣＣアドレスが生成される。
領域判定部１１ａでは、キャッシュ不可領域（２バイト）への読み出しと判断し、セレクタ１６ａにキャッシュ不可領域アクセス制御部（２バイト）１３ｂからのアドレス出力を選択する選択信号を出力する。
キャッシュ不可領域アクセス制御部（２バイト）１３ｂからの読み出しアドレスに従い、メモリからデータ及びＥＣＣチェックデータの読み出しを行う。
読み出されたデータ及びＥＣＣチェックデータは、ＥＣＣ誤り訂正部１５ａにおいて、ビット誤りのチェックを行う。その際、領域判定部１１ａからの領域情報（キャッシュ不可領域、２バイト）を元に、データ、ＥＣＣチェックデータの配置が解析される。１ビット誤りの場合は、誤り訂正を行い、ＣＰＵ１に読み出しデータを送出する。
図示していないが、誤り訂正を行ったデータは、メモリ２に書き戻される。
【００４９】
ＣＰＵ１から、キャッシュ不可領域（データ２０４）に対して２バイトの書き込み要求が発行されると、キャッシュ不可領域アクセス制御部（２バイト）１３ｂにて、メモリ２に書き込むためのデータアドレスとＥＣＣアドレスが生成される。
同時に、キャッシュ領域アクセス制御部１２及びキャッシュ不可領域アクセス制御部（１バイト）１３ａ、キャッシュ不可領域アクセス制御部（４バイト）１３ｃにて、メモリ２に書き込むためのデータアドレスとＥＣＣアドレスが生成される。
領域判定部１１ａでは、キャッシュ不可領域（２バイト）への書き込みと判断し、セレクタ１６ａにキャッシュ不可領域アクセス制御部（２バイト）１３ｂからのアドレス出力を選択する選択信号を出力する。
また、ＥＣＣ生成部１４は、ＣＰＵ１からの書き込みデータの内容を反映させてＥＣＣチェックデータの生成を行う。
その際、領域判定部１１ａからの領域情報（キャッシュ不可領域、２バイト）を元に、データ、ＥＣＣチェックデータの配置が決められる。
また、ＥＣＣ生成部１４は、キャッシュ不可領域アクセス制御部（２バイト）１３ｂからの書き込みアドレスに従い、メモリ２にデータ及びＥＣＣチェックデータの書き込みを行う。
【００５０】
ＣＰＵ１から、キャッシュ不可領域（データ３００）に対して４バイトの読み出し要求が発行されると、キャッシュ不可領域アクセス制御部（４バイト）１３ｃにて、メモリ２を読み出すためのデータアドレスとＥＣＣアドレスが生成される。
同時に、キャッシュ領域アクセス制御部１２及びキャッシュ不可領域アクセス制御部（１バイト）１３ａ、キャッシュ不可領域アクセス制御部（２バイト）１３ｂにて、メモリ２を読み出すためのデータアドレスとＥＣＣアドレスが生成される。
領域判定部１１ａでは、キャッシュ不可領域（４バイト）への読み出しと判断し、セレクタ１６ａにキャッシュ不可領域アクセス制御部（４バイト）１３ｃからのアドレス出力を選択する選択信号を出力する。
キャッシュ不可領域アクセス制御部（４バイト）１３ｃからの読み出しアドレスに従い、メモリ２からデータ及びＥＣＣチェックデータの読み出しを行う。
読み出されたデータ及びＥＣＣチェックデータは、ＥＣＣ誤り訂正部１５ａにおいて、ビット誤りのチェックを行う。
その際、領域判定部１１ａからの領域情報（キャッシュ不可領域、４バイト）を元に、データ、ＥＣＣチェックデータの配置が解析される。
１ビット誤りの場合は、誤り訂正を行い、ＣＰＵ１に読み出しデータを送出する。
図示していないが、誤り訂正を行ったデータは、メモリ２に書き戻される。
【００５１】
ＣＰＵ１から、キャッシュ不可領域（データ４０４）に対して４バイトの書き込み要求が発行されると、キャッシュ不可領域アクセス制御部（４バイト）１３ｃにて、メモリ２に書き込むためのデータアドレスとＥＣＣアドレスが生成される。
同時に、キャッシュ領域アクセス制御部１２及びキャッシュ不可領域アクセス制御部（１バイト）１３ａ、キャッシュ不可領域アクセス制御部（２バイト）１３ｂにて、メモリ２に書き込むためのデータアドレスとＥＣＣアドレスが生成される。
領域判定部１１ａでは、キャッシュ不可領域（２バイト）への書き込みと判断し、セレクタ１６ａにキャッシュ不可領域アクセス制御部（４バイト）１３ｃからのアドレス出力を選択する選択信号を出力する。
また、ＥＣＣ生成部１４は、ＣＰＵ１からの書き込みデータの内容を反映させてＥＣＣの生成を行う。
その際、領域判定部１１ａからの領域情報（キャッシュ不可領域、４バイト）を元に、データ、ＥＣＣチェックデータの配置が決められる。
また、ＥＣＣ生成部１４は、キャッシュ不可領域アクセス制御部（４バイト）１３ｃからの書き込みアドレスに従い、メモリ２にデータ及びＥＣＣチェックデータの書き込みを行う。
【００５２】
以上のように、キャッシュ領域、キャッシュ不可領域と領域を分割し、更にキャッシュ不可領域もアクセス単位に領域を分割し、アクセスサイズにあったＥＣＣチェックデータの配置を行うことで、余分なメモリアクセスを行うことなく、メモリアクセスを行い、メモリアクセスの高性能化を図ることが可能となる。
【００５３】
以上、本実施の形態では、
アクセスアドレスから、キャッシュ領域またはＮバイトアクセスのキャッシュ不可領域へのアクセスを判定する領域判定部と、
キャッシュ不可領域のＮバイトのアクセスとしてメモリ制御を行うＮバイトキャッシュ不可領域アクセス制御部と、
アクセス領域により、キャッシュ領域への書き込み用のＥＣＣまたはキャッシュ不可領域へのＮバイト書き込み用ＥＣＣを生成するＥＣＣ生成部と、
アクセス領域により、キャッシュ領域からの読み出し用ＥＣＣ誤り訂正またはキャッシュ不可領域からのＮバイト読み出用ＥＣＣ誤り訂正を行うＥＣＣ誤り訂正部と
で構成され、
キャッシュ不可領域へのアクセスサイズに応じて、ＥＣＣのチェックコード配置場所を変更する組込み情報処理装置を説明した。
【００５４】
実施の形態３．
図５は、キャッシュ不可領域のアクセスサイズ毎に領域分割し、ＥＣＣキャッシュを搭載した場合のブロック図である。
【００５５】
図５で、ＥＣＣキャッシュ２０は、格納されているＥＣＣチェックデータのアドレスを保持するキャッシュタグ２１とＥＣＣチェックデータを保持するキャッシュＥＣＣ２２で構成されている。
ＥＣＣキャッシュ２０は、コードキャッシュ部の例である。
セレクタ２３は、セレクタ１６ａで選択されたデータアドレスと、ＥＣＣキャッシュ２０を参照し、キャッシュミスとなったＥＣＣチェックデータアドレスを選択する。
なお、本実施の形態においても、メモリ２のデータ配置は、図４と同様である。
【００５６】
図６は、ＣＰＵ１からメモリリード要求が発行された場合の処理フローとメモリライト要求が発行された場合の処理フローを示している。
図６（ａ）は、メモリリード要求が発行された場合の処理フローであり、図６（ｂ）は、メモリライト要求が発行された場合の処理フローである。
図６に従い、処理フローを説明する。
【００５７】
図６（ａ）において、ＣＰＵ１からメモリリード要求が発行（Ｓ１００）されると、メモリ２からデータのみがリード（Ｓ１０１）される。
同時に、ＥＣＣチェックデータアドレスでＥＣＣキャッシュ２０内のキャッシュタグ２１を参照（Ｓ１０２）する。
ＥＣＣキャッシュ２０にヒット（キャッシュタグ２１に該当アドレスが格納済）した場合は、キャッシュＥＣＣ２２から、ＥＣＣチェックデータの読み出し（Ｓ１０３）を行う。
ＥＣＣキャッシュ２０にミス（キャッシュタグ２１に該当アドレスが未格納）した場合は、メモリ２からＥＣＣチェックデータの読み出し（Ｓ１０４）を行い、ＥＣＣキャッシュ２０の更新（Ｓ１０５）を行う。
ＥＣＣキャッシュ２０の更新は、キャッシュタグ２１への該当アドレスの格納と、キャッシュＥＣＣ２２へのＥＣＣチェックデータの格納である。
ＥＣＣ誤り訂正部１５ａにメモリ２から読み出したデータと、ＥＣＣキャッシュ２０から読み出したＥＣＣチェックデータを入力し、ビット誤りのチェック（Ｓ１０６）を行う。
１ビット誤りの場合は、誤り訂正（Ｓ１０７）を行い、ＥＣＣキャッシュ２０の更新を行う（データに誤りがある場合には、図示していないが、Ｓ１０７に代わり、メモリ２への書き込み処理を行う）。
ビット誤りがない場合は、ＣＰＵ１に読み出しデータを送出（Ｓ１０８）する。
【００５８】
図６（ｂ）において、ＣＰＵ１からメモリライト要求が発行（Ｓ１１０）されると、ＥＣＣ生成部１４ａにて、ＥＣＣチェックデータの生成（Ｓ１１２）を行い、メモリ２にデータの書き込み（Ｓ１１２）を行う。
同時に、ＥＣＣチェックデータアドレスでＥＣＣキャッシュ２０内のキャッシュタグ２１を参照（Ｓ１０２）する。
ＥＣＣキャッシュ２０にヒット（キャッシュタグ２１に該当アドレスが格納済）した場合は、キャッシュＥＣＣ２２へのＥＣＣチェックデータの格納（Ｓ１１４）を行う。
ＥＣＣキャッシュ２０にミス（キャッシュタグ２１に該当アドレスが未格納）した場合は、ＥＣＣキャッシュ２０の更新（Ｓ１１５）を行う。
ＥＣＣキャッシュ２０の更新は、キャッシュタグ２１への該当アドレスの格納と、キャッシュＥＣＣ２２へのＥＣＣチェックデータの格納である。ＥＣＣキャッシュ２０へのライトで、メモリ書き込み処理が完了（Ｓ１１７）する。
【００５９】
ＥＣＣキャッシュ２０のリプレースは、通常のキャッシュメモリと同様の動作を行うため、記述は省略する。
【００６０】
このように、本実施の形態では、データ読み出しの場合は、ＥＣＣ誤り訂正部１５ａは、ＣＰＵ１からのアクセスアドレスに対応する制御対象データサイズ分のデータをメモリ２から取得するとともに、当該制御対象データサイズ分のデータに対するＥＣＣチェックデータがＥＣＣキャッシュ２０にキャッシュされている場合にＥＣＣキャッシュ２０からＥＣＣチェックデータを取得する。
対象のＥＣＣチェックデータがＥＣＣキャッシュ２０にキャッシュされていない場合はメモリ２からＥＣＣチェックデータを取得する。
そして、ＥＣＣ誤り訂正部１５ａは、ＥＣＣキャッシュ２０からＥＣＣチェックデータを取得した場合は、ＥＣＣキャッシュ２０からのＥＣＣチェックデータを用いて誤り訂正を行う。
【００６１】
更に、本実施の形態では、データ書き込みの場合は、ＥＣＣ生成部１４ａは、生成したＥＣＣチェックデータをメモリ２の書き込み領域に書き込むとともに、ＥＣＣキャッシュ２０にも書き込む。
【００６２】
以上のように、ＥＣＣチェックデータのみをＥＣＣキャッシュに保持することで、データの読み出しと並行して、ＥＣＣチェックデータを読み出すことで、メモリアクセスの高速化を図ることが可能になる。
【００６３】
以上、本実施の形態では、
ＥＣＣチェックコードをＥＣＣキャッシュメモリに蓄え、アクセスアドレスに対応するＥＣＣチェックコードがＥＣＣキャッシュメモリに存在する場合には、ＥＣＣキャッシュメモリからＥＣＣチェックコードを参照し、アクセスアドレスに対するＥＣＣチェックコードがＥＣＣキャッシュメモリに存在しない場合には、前記メモリからＥＣＣチェックコードを読み出す組込み情報処理装置を説明した。
【００６４】
なお、以上では、データ処理装置の例としてのメモリ制御装置１０について説明したが、実施の形態１〜３に示した手順によりメモリ制御方法を実現することもできる。
【符号の説明】
【００６５】
１  ＣＰＵ、２  メモリ、１０  メモリ制御装置、１１  領域判定部、１２  キャッシュ領域アクセス制御部、１３  キャッシュ不可領域アクセス制御部  １４  ＥＣＣ生成部、１５  ＥＣＣ誤り訂正部、１６  セレクタ、２０  ＥＣＣキャッシュ、２１  キャッシュタグ、２２  キャッシュＥＣＣ、２３  セレクタ。
【図１】
2011150486.tif 000003
【図２】
2011150486.tif 000004
【図３】
2011150486.tif 000005
【図４】
2011150486.tif 000006
【図５】
2011150486.tif 000007
【図６】
2011150486.tif 000008
【図７】
2011150486.tif 000009
【図８】
2011150486.tif 000010