(57)【要約】【課題】ＤＭＡ転送によるデータの上書き防止の設定／解除について、ソフトウェア処理による煩雑さを無くすとともに、ソフトウェアによって誤った制御をされたＤＭＡＣが原因で発生する異常画像の発生防止と解析を容易に行うことができる半導体集積回路を提供する。【解決手段】複数のメモリアクセス手段によるメモリへのアクセスの調停を行うアクセス調停手段は、所定のメモリアクセス手段によりメモリに書き込みが行われたアドレスの範囲を上書き禁止領域として設定し、書き込みを行ったメモリアクセス手段以外の他のメモリアクセス手段により上書き禁止領域への書き込みが要求された場合、上書きの発生を制御手段に通知するための割込みを発生させ、上書き禁止領域に対して所定のメモリアクセス手段により読み出しが行われた場合、当該読み出しが行われたアドレスの範囲に設定されている上書き禁止領域の設定を解除する。【選択図】図３
2011243185.tif 000002
【特許請求の範囲】
【請求項１】
メモリに対してアクセスを行う複数のメモリアクセス手段と、前記複数のメモリアクセス手段による前記メモリへのアクセスの調停を行うアクセス調停手段と、を有する半導体集積回路であって、
前記アクセス調停手段は、
所定のメモリアクセス手段により前記メモリに書き込みが行われたアドレスの範囲を、上書き禁止領域として設定し、
前記上書き禁止領域に対して、前記書き込みを行ったメモリアクセス手段以外の他のメモリアクセス手段により書き込みが要求された場合、上書きの発生を制御手段に通知するための割込みを発生させ、
前記上書き禁止領域に対して所定のメモリアクセス手段により読み出しが行われた場合、当該読み出しが行われたアドレスの範囲に設定されている上書き禁止領域の設定を解除することを特徴とする半導体集積回路。
【請求項２】
データのＤＭＡ（Direct Memory Access）転送を行う複数のＤＭＡコントローラと、ＣＰＵ（Central Processing Unit）及びメモリと接続され、前記複数のＤＭＡコントローラからの前記メモリへのアクセスの調停を行うメモリアービタとを有する半導体集積回路であって、
前記メモリアービタは、
所定のＤＭＡコントローラにより前記メモリに書き込みが行われた場合、当該書き込みが行われたアドレスの範囲を、上書き禁止領域としてレジスタに設定する設定回路と、
前記レジスタに設定された上書き禁止領域に対して所定のＤＭＡコントローラにより読み出しが行われた場合、当該読み出しが行われたアドレスの範囲に設定されている上書き禁止領域の設定を解除するクリア回路と、
前記レジスタに設定された上書き禁止領域に対して、前記書き込みを行ったＤＭＡコントローラ以外の他のＤＭＡコントローラにより書き込みが要求された場合、上書きの発生を前記ＣＰＵに通知するための割込みを発生させるアドレス比較回路と、
を有することを特徴とする半導体集積回路。
【請求項３】
前記アドレス比較回路は、
所定のＤＭＡコントローラによる書き込み先のアドレスが、前記レジスタに設定された上書き禁止領域内である場合、前記割込みを発生させることを特徴とする請求項２記載の半導体集積回路。
【請求項４】
前記アドレス比較回路は、
所定のＤＭＡコントローラによる読み出し先のアドレスが、前記レジスタに設定されている上書き禁止領域外である場合、かつ、書き込みが行われたアドレスと異なるアドレスから読み出しを行う旨が予め設定されていない場合、読み出し先と書き込み先のアドレスの不一致を前記ＣＰＵに通知するための割込みを発生させることを特徴とする請求項２又は３記載の半導体集積回路。
【請求項５】
前記設定回路は、
前記書き込みが開始されたアドレスであるライト先頭アドレスを前記レジスタに記録し、
前記クリア回路は、
前記ライト先頭アドレス以降のアドレスから所定のＤＭＡコントローラが読み出しを開始した場合、かつ、書き込みが行われたアドレスと異なるアドレスから読み出しを行う旨が予め設定されている場合、前記ライト先頭アドレスから前記読み出しが開始されたアドレスまでの範囲に設定されている、上書き防止領域の設定を解除することを特徴とする請求項２から４のいずれか１項に記載の半導体集積回路。
【請求項６】
前記設定回路は、
前記書き込みのうち直近のものが行われたアドレスであるライト後端アドレスを前記レジスタに記録し、
前記クリア回路は、
前記ライト後端アドレス以前のアドレスを所定のＤＭＡコントローラが読み出した段階で、当該ＤＭＡコントローラからデータのＤＭＡ転送が完了した旨の通知がされた場合、かつ、書き込みが行われたアドレスと異なるアドレスから読み出しを行う旨が予め設定されている場合、
前記データのＤＭＡ転送が完了したアドレスから前記ライト後端アドレスまでの範囲に設定されている、上書き防止領域の設定を解除することを特徴とする請求項２から５のいずれか１項に記載の半導体集積回路。
【請求項７】
前記ＤＭＡコントローラのレジスタ又はディスクリプタに、
前記書き込みが行われたアドレスと異なるアドレスから読み出しを行うか否かが予め設定されることを特徴とする請求項２から６のいずれか１項に記載の半導体集積回路。
【請求項８】
前記レジスタは、
前記複数のＤＭＡコントローラ毎に割り振られた固有の識別子が記録されたＤＭＡコントローラ識別情報と、
所定のＤＭＡコントローラが書き込みを開始したアドレスが記録されたライト先頭アドレスと、
前記ＤＭＡコントローラが直近に書き込みを行ったアドレスが記録され、書き込みが発生する度に更新されるライト後端アドレスと、
で構成されることを特徴とする請求項２から７のいずれか１項に記載の半導体集積回路。
【請求項９】
前記複数のＤＭＡコントローラとして、前記メモリに書き込みを行う書込ＤＭＡコントローラが少なくとも１つ含まれ、かつ、前記メモリから読み出しを行う読出ＤＭＡコントローラが少なくとも１つ含まれる場合に、所定の書込ＤＭＡコントローラと所定の読出ＤＭＡコントローラとの紐付けが設定され、
前記クリア回路は、
前記レジスタに設定された上書き禁止領域に対して所定の読出ＤＭＡコントローラにより読み出しが行われたときに、当該読出ＤＭＡコントローラが、前記メモリに書き込みを行った書込ＤＭＡコントローラに紐付けられている場合のみ、当該読み出しが行われたアドレスの範囲に設定されている上書き禁止領域の設定を解除することを特徴とする請求項２から８のいずれか１項に記載の半導体集積回路。
【請求項１０】
前記レジスタに設定された上書き禁止領域に対して所定の読出ＤＭＡコントローラにより読み出しが行われたときに、当該読出ＤＭＡコントローラが、前記メモリに書き込みを行った書込ＤＭＡコントローラに紐付けられていない場合、
前記クリア回路は、
当該読み出しが行われたアドレスの範囲に設定されている上書き禁止領域の設定を解除せず、
前記アドレス比較回路は、
紐付けがされていない読出ＤＭＡコントローラからの読み出しの発生を前記ＣＰＵに通知するための割込みを発生させることを特徴とする請求項９記載の半導体集積回路。
【請求項１１】
前記書込ＤＭＡコントローラと前記読出ＤＭＡコントローラとの紐付けは、レジスタ又はディスクリプタで設定することを特徴とする請求項９又は１０記載の半導体集積回路。
【請求項１２】
前記書込ＤＭＡコントローラと前記読出ＤＭＡコントローラとの紐付けは、１つの書込ＤＭＡコントローラに対して複数の読出ＤＭＡコントローラが設定される、又は、１つの読出ＤＭＡコントローラに対して複数の書込ＤＭＡコントローラが設定されることを特徴とする請求項９から１１のいずれか１項に記載の半導体集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリアービタに接続された複数の機能モジュールが、データのＤＭＡ転送を同時に行い、メモリに対してアクセスを行う半導体集積回路に関する。
【背景技術】
【０００２】
半導体集積回路の一例として、データのＤＭＡ（Direct Memory Access）転送を行う複数の機能モジュールがメモリアービタに接続されているＡＳＩＣ（Application Specific Integrated Circuit）がある。このＡＳＩＣでは、複数の機能モジュールが同時にＤＭＡ転送を行い、メモリに対して、リード（Read：読み出し）、ライト（Write：書き込み）のアクセスを行っている。
【０００３】
例えば、上記ＡＳＩＣを備えたＭＦＰ（Multi Function Peripheral）では、スキャナで読み取った画像データをメモリにライトしながら、同時にＨＤＤ（Hard Disc Drive）への蓄積や画像の回転等を行う。その際、複数のＷＤＭＡＣ（Write Direct Memory Access Controller）やＲＤＭＡＣ（Read Direct Memory Access Controller）が同時に動作することとなる。これら各ＤＭＡＣ（Direct Memory Access Controller）は、ソフトウェアにより設定された情報（メモリアドレス、転送データ量など）に基づいて動作を行う。
【０００４】
上記動作時において、ＤＭＡを動作させるための制御プログラムのバグによって間違った設定がされてしまった場合、ＷＤＭＡＣがメモリ上の画像データを上書きしてしまい、異常画像となってしまうことや、ＲＤＭＡＣが意図しない領域からリードし、画像にごみがのってしまうことなどが発生する。しかし、このような異常画像が発生した場合、問題の解析には非常に時間がかかってしまうケースがある。
【０００５】
ソフトウェアのメモリ上書き防止の方法としては、従来から、仮想アドレスと物理アドレスとの間のアドレス変換やメモリ保護等を目的としたメモリ管理ユニット（Memory Management Unit:ＭＭＵ）が知られている（技術例１）。一般的にＭＭＵは、物理メモリをページと呼ばれるブロックごとに分割して、仮想アドレス空間に割り当て（マッピングし）、またマッピングされた仮想アドレスから物理アドレスを検索する機能を有する。これによりＭＭＵは、個々のソフトウェアに別々の仮想的なアドレス空間を用意し、お互いが物理メモリ上で干渉しないようにする保護機能が実現できるなど、ソフトウェアに対して非常に便利な機能を提供できる。
【０００６】
しかし、例えばＭＦＰなどの組込み機器では、ＭＭＵのようなメモリ管理機能を備えていないプロセッサやＯＳを使用する場合も多い。そのような組込み機器では、タスク別のアクセス許可／禁止領域の設定情報を記憶するプロテクトメモリと、動作すべきタスクに応じたアクセス許可／禁止領域の設定情報とを用い、共有メモリのアクセスを管理する方法が既に知られている（技術例２）。
【０００７】
また、ＣＰＵ（Central Processing Unit）を介さないＤＭＡ転送を行うハードウェアによる上書き防止の方法として、ＤＭＡＣの転送要求の調停を行うアービタに予めＤＭＡＣによるメモリのアクセス禁止領域を設定し、そのメモリ領域にＤＭＡＣがライトアクセスしようとした場合、割込みを発生させてＣＰＵに通知するという方法が既に知られている（技術例３）。
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、上記技術例１や技術例２では、ソフトウェアのメモリアクセス管理のみしかできないため、ＤＭＡ転送を行うハードウェアの上書きを検知することはできない。
【０００９】
一方、上記技術例３では、予めアクセス禁止領域を設定する必要がある。この方法を用いて、ＤＭＡＣによってメモリライトされたデータに対する上書きの防止を行おうとすると、ＤＭＡＣの転送完了後に、当該ＤＭＡＣがメモリライトした領域をソフトウェアで設定しなくてはならない。また、ソフトウェアで上書き防止設定したアドレス範囲はデータ処理完了後に、ソフトウェアで上書き設定の解除も行わなくてはならず、ソフトウェア処理が煩雑になってしまうという問題がある。
【００１０】
通常ハードウェアによる処理は速度が要求されていることが多く、なるべくソフトウェア処理の介在が無いほうが好ましい。上書き防止のためのソフトウェア処理の量が増えると、パフォーマンスに影響する可能性も考えられるためである。仮にソフトウェアで上書き防止の設定や解除を行ったとしても、開発途中で不完全なソフトウェアの場合、設定したアクセス禁止領域自体が誤っている場合も考えられ、その場合はデータの上書きを防ぐことはできないという問題がある。
【００１１】
なお、上記技術例３の具体例として、特許文献１に開示されている発明がある。この特許文献１の発明は、固定された領域（例えば、画像処理のＬＵＴ（ルックアップテーブル）やディスクリプタ領域、ＯＳ（Operating System）などソフトウェアで使用する領域）に対してＷＤＭＡＣによる上書きを防止することを防ぐことを主な目的としている。その目的を達成するために、特許文献１の発明は、ＤＭＡＣと、外部設置されたＣＰＵとメモリに接続されたメモリアービタとを備えた半導体集積回路において、メモリアービタは、メモリ上の特定領域をアドレスで指定するレジスタを設け、ＤＭＡＣからの画像データのライトアクセスが特定領域へのアクセスであるときに、メモリアービタはレジスタの指定アドレスを参照して割り込みを発生させＣＰＵに通知する構成となっている。
【００１２】
しかし、特許文献１の発明を用いてＷＤＭＡＣでライトした画像データについて上書き防止を行おうとすると、上述したように、ソフトウェアのバグにより予め設定された特定領域が間違っていた場合のメモリ上書き防止や、随時メモリの上書き防止設定及び解除をソフトウェアで行わなければならず、ソフトウェア処理の煩雑さという問題は解消できていない。
【００１３】
本発明は、上記事情に鑑みてなされたものであり、ＤＭＡ転送によるデータの上書き防止の設定／解除について、ソフトウェアによる処理を用いることなく、ハードウェアにより自動的に行うことで、ソフトウェア処理による煩雑さを無くすとともに、ソフトウェアによって誤った制御をされたＤＭＡＣが原因で発生する異常画像の発生防止と解析を容易に行うことができる半導体集積回路を提供することを目的とする。
【課題を解決するための手段】
【００１４】
かかる目的を達成するために、本発明の半導体集積回路は、第１の態様として、メモリに対してアクセスを行う複数のメモリアクセス手段と、複数のメモリアクセス手段によるメモリへのアクセスの調停を行うアクセス調停手段と、を有する半導体集積回路であって、アクセス調停手段は、所定のメモリアクセス手段によりメモリに書き込みが行われたアドレスの範囲を、上書き禁止領域として設定し、上書き禁止領域に対して、書き込みを行ったメモリアクセス手段以外の他のメモリアクセス手段により書き込みが要求された場合、上書きの発生を制御手段に通知するための割込みを発生させ、上書き禁止領域に対して所定のメモリアクセス手段により読み出しが行われた場合、当該読み出しが行われたアドレスの範囲に設定されている上書き禁止領域の設定を解除することを特徴とする。
【００１５】
本発明の半導体集積回路は、第２の態様として、データのＤＭＡ（Direct Memory Access）転送を行う複数のＤＭＡコントローラと、ＣＰＵ（Central Processing Unit）及びメモリと接続され、複数のＤＭＡコントローラからのメモリへのアクセスの調停を行うメモリアービタとを有する半導体集積回路であって、メモリアービタは、所定のＤＭＡコントローラによりメモリに書き込みが行われた場合、当該書き込みが行われたアドレスの範囲を、上書き禁止領域としてレジスタに自動的に設定する設定回路と、レジスタに設定された上書き禁止領域に対して所定のＤＭＡコントローラにより読み出しが行われた場合、当該読み出しが行われたアドレスの範囲に設定されている上書き禁止領域の設定を自動的に解除するクリア回路と、レジスタに設定された上書き禁止領域に対して、書き込みを行ったＤＭＡコントローラ以外の他のＤＭＡコントローラにより書き込みが要求された場合、上書きの発生をＣＰＵに通知するための割込みを発生させるアドレス比較回路と、を有することを特徴とする。
【発明の効果】
【００１６】
本発明によれば、ＤＭＡ転送によるデータの上書き防止の設定／解除について、ソフトウェアによる処理を用いることなく、ハードウェアにより自動的に行うことで、ソフトウェア処理による煩雑さを無くすとともに、ソフトウェアによって誤った制御をされたＤＭＡＣが原因で発生する異常画像の発生防止と解析を容易に行うことができる。
【図面の簡単な説明】
【００１７】
【図１】本発明の一実施形態に係るＡＳＩＣにおける内部構成及び外部装置との接続状態の一例を示すブロック図である。
【図２】本発明の一実施形態に係るＡＳＩＣにおけるメモリ上書き防止動作の概要を説明するイメージ図である。
【図３】本発明の一実施形態に係るメモリアービタの内部構成の一例を示すブロック図である。
【図４】本発明の一実施形態に係るメモリアクセス記録レジスタの構成の一例を示す図である。
【図５】本発明の一実施形態に係るＲＤＭＡＣ用のディスクリプタフォーマットの構成の一例を示す図である。
【図６】本発明の一実施形態に係るＡＳＩＣにおけるメモリ上書き防止動作の概要の別の例を説明するイメージ図である。
【図７】本発明の一実施形態に係るメモリアービタの内部構成の別の例を示すブロック図である。
【図８】本発明の一実施形態に係るＲＤＭＡＣ用のディスクリプタフォーマットの構成の別の例を示す図である。
【発明を実施するための形態】
【００１８】
本発明を実施するための形態（実施形態）について説明する。本発明の一実施形態である半導体集積回路（ＡＳＩＣ）は、ＤＭＡＣの転送処理に際して、以下の特徴を有する。要するに、メモリアービタが、ＷＤＭＡＣがライトした領域を順次記録し、その領域を上書き禁止領域として設定する。上書き禁止領域に対して他のＷＤＭＡＣがアクセスしようとした場合は、そのアクセスを許可せずに、ＣＰＵに割込みを通知するようにする。また、上書き禁止領域をＲＤＭＡＣがリードした場合は、その領域における上書き禁止の設定を順次解除していく。さらに、ＲＤＭＡＣがリードした領域が、ＷＤＭＡＣがライトした領域（＝上書き禁止領域）と異なっていた場合は、これを割込みとして通知する。以下、上記特徴について、添付図面を参照して詳細に解説する。
【００１９】
図１は、本実施形態のＡＳＩＣにおける内部構成及び外部装置との接続状態の一例を示すブロック図である。本実施形態のＡＳＩＣ１は、図１に示すように、内部構成として、メモリアービタ１０、入力制御部１１、出力制御部１２、ＨＤＤ Ｉ／Ｆ（インタフェース）１３、回転器１４、割込み制御部１５を備えている。また、ＡＳＩＣ１は、図１に示すように、外部装置としての、ＣＰＵ２、メモリ３、スキャナ部４、プロッタ部５、ＨＤＤ６と接続されている。本実施形態において、ＡＳＩＣ１は、例えば画像処理装置として機能するものとする。
【００２０】
メモリアービタ１０（アクセス調停手段の一例）は、各種レジスタ（後述）を有しており、メモリ３へのアクセスを調停する。入力制御部１１は、画像を読み取るスキャナ部４とのインタフェースである。出力制御部１２は、所定の記録媒体（例えば用紙）に画像を印刷するプロッタ部５とのインタフェースである。ＨＤＤ Ｉ／Ｆ１３は、各種データが格納されるＨＤＤ６とのインタフェースである。回転器１４は、メモリ３からリードされたデータの回転を行う。割込み制御部１５は、各機能モジュール（入力制御部１１、出力制御部１２、ＨＤＤ Ｉ／Ｆ１３、回転器１４）からの割込み信号を処理し、ＣＰＵ２（制御手段の一例）に通知する。
【００２１】
入力制御部１１は、ＷＤＭＡＣ１６を有する。また、出力制御部１２は、ＲＤＭＡＣ１７を有する。また、ＨＤＤ Ｉ／Ｆ１３は、ＷＤＭＡＣ１８とＲＤＭＡＣ１９を有する。また、回転器１４は、ＷＤＭＡＣ２０とＲＤＭＡＣ２１を有する。これらＲＤＭＡＣとＷＤＭＡＣ（メモリアクセス手段の一例）は、各インタフェースとメモリアービタ１０との間でデータを授受する。
【００２２】
スキャナ部４で読み取られたデータ（画像データ）は、ＰＣＩバス／ＰＣＩ  Ｅｘｐｒｅｓｓなどの汎用Ｉ／Ｆを通して、ＡＳＩＣ１に送られ、メモリ３にライトされる。このデータは、メモリ３からリードされ、ＡＳＩＣ１を介してプロッタ部５に出力される。さらに、ＡＳＩＣ１は、メモリ３からデータをリードしてＨＤＤ６に格納する。なお、以下では、メモリ３へデータをライトするアクセスを「メモリライト」と呼び、メモリ３からデータをリードするアクセスを「メモリリード」と呼ぶ。メモリライト及びメモリリードは、メモリアクセスの一例である。
【００２３】
メモリアービタ１０は、メモリアクセス記録部２２を有する。このメモリアクセス記録部２２は、各ＤＭＡＣのアクセスに応じて、メモリ３に対するデータの上書き禁止の設定及びその解除を動的に行う。
【００２４】
図２は、ＡＳＩＣ１におけるメモリ上書き防止動作の概要を説明するイメージ図である。図２では、入力制御部１１のＷＤＭＡＣ１６で画像データのメモリライトを行い、その後回転器１４のＲＤＭＡＣ２１でメモリリードを行う場合を例としている。
【００２５】
入力制御部１１のＷＤＭＡＣ１６は、アドレス１から順次アドレスをバーストアクセスの単位（図中の両矢印で示す範囲）でインクリメントしてメモリライトを行う。このとき、メモリアービタ１０のメモリアクセス記録部２２は、メモリライトが行われたアドレス範囲を順次記録していき、記録した領域（アドレス範囲、アドレス領域）を、メモリアクセスを禁止する領域（上書き禁止領域）として設定する。図２では、色塗りの部分が上書き禁止領域となる。この上書き禁止領域に対して、ＷＤＭＡＣ１６以外のＷＤＭＡＣからアクセスがあった場合、メモリアービタ１０は、割込み（メモリ上書き発生割込み）を発生させ、割込み制御部１５を介してＣＰＵ２にメモリ上書き発生割込みを通知する。
【００２６】
メモリアクセス記録部２２は、回転器１４のＲＤＭＡＣ２１によるメモリリードの開始をトリガにして、上書き禁止領域の設定の解除を順次行う。
【００２７】
なお、回転器１４のＲＤＭＡＣ２１が、入力制御部１１のＷＤＭＡＣ１６がライトしたアドレスと異なるアドレスから、データのリードを行った場合（例えば、アドレス１より前のアドレスからリードを開始した場合、アドレス１と２の間のアドレスからリードを開始した場合、アドレス２を超えてリードした場合など）、メモリアービタ１０は、割込み（リードアドレス不一致割込み）を発生させる。このリードアドレス不一致割込みも、割込み制御部１５を介してＣＰＵ２に通知される。ただし、予め、ＲＤＭＡＣの設定として、ＷＤＭＡＣのライト先のアドレスと異なる（ずれた）アドレスからリードを行うことが明示されている場合は、リードアドレス不一致割込みは発生させない。これは、ＲＤＭＡＣを用いて画像の先端後端削除や追加といった編集処理を行う場合や、ソフトによって用意されたデータをリードするケースに対応するためである。このようなことから、ＲＤＭＡＣは、ＷＤＭＡＣでライトしたデータと完全に一致するデータをリードするのか否か（ＷＤＭＡＣでライトしたアドレスと異なるアドレスからリードを行うか否か）を設定する。この設定は、レジスタ又はディスクリプタに行われる。また、この設定の内容は、ＲＤＭＡＣ設定情報としてメモリアービタ１０に通知される。
【００２８】
具体的な例として、画像の副走査先端、後端削除をＲＤＭＡＣの読み取りアドレスをずらすことによって行う場合、予めＲＤＭＡＣに、ＷＤＭＡＣデータと完全に一致しないアドレスからリードする旨を設定し、アドレス３からリードを開始する。この場合は、予めＷＤＭＡＣデータと完全に一致しないアドレスからリードする旨が設定されているので、上記リードアドレス不一致割込みは発生しない。また、アドレス１〜３の領域に関しては、アドレス３のリードアクセスによって、上書き禁止領域の設定の解除が行われる。
【００２９】
また、アドレス４〜アドレス３の領域は、ＲＤＭＡＣのコンプリート信号（ＤＭＡＣコンプリート情報）をもって、上書き禁止領域の設定の解除が行われる。
【００３０】
図３は、メモリアービタ１０の内部構成の一例を示すブロック図である。図３の例では、メモリアービタ１０に、ＷＤＭＡＣ（図１に示す１６、１８、２０）及びＲＤＭＡＣ（図１に示す１７、１９、２１）がそれぞれ３つずつ接続されている。
【００３１】
メモリアービタ１０は、上述したＷＤＭＡＣによりメモリライトが行われたアドレス範囲を記録するメモリアクセス記録部２２の他に、各ＤＭＡＣからのアクセス要求の調停を行うアービトレーション制御部２３と、各ＤＭＡＣからのアクセス情報とメモリアクセス記録部２２に記録されたアドレスとの比較を行うアドレス比較回路２４とを備えている。
【００３２】
メモリアクセス記録部２２は、メモリアクセス記録レジスタ２５、メモリアクセス記録レジスタ設定回路２６、メモリアクセス記録レジスタクリア回路２７を有する。
【００３３】
メモリアクセス記録レジスタ２５の構成の詳細については、図４を用いて後述する。メモリアクセス記録レジスタ２５に設定されているアドレス範囲が上書き禁止領域となる。メモリアクセス記録レジスタ設定回路２６は、ＷＤＭＡＣによりメモリライトが行われたメモリアドレスに応じて、アドレス範囲を上書き禁止領域として、メモリアクセス記録レジスタ２５に順次設定していく。一方、メモリアクセス記録レジスタクリア回路２７は、ＲＤＭＡＣによるメモリリードの開始をトリガとして、メモリアクセス記録レジスタ２５になされた上書き禁止領域の設定を順次クリア（解除）していく。これにより、メモリアクセス記録レジスタ２５の上書き禁止領域は、随時更新される。
【００３４】
アドレス比較回路２４は、メモリアクセス記録レジスタ２５に設定されている上書き禁止領域と、各ＤＭＡＣのアクセス先のアドレスとを比較し、その比較結果をアービトレーション制御部２３へ通知する。
【００３５】
アドレス比較回路２４は、上記比較の結果、ＷＤＭＡＣによるアクセス（ライトアクセス）先のアドレスが、メモリアクセス記録レジスタ２５に設定されている上書き禁止領域内にある場合、上述したメモリ上書き発生割込みを割込み制御部１５へ通知する。割込み制御部１５は、通知された割込みをＣＰＵ２に通知する。
【００３６】
また、アドレス比較回路２４は、上記比較の結果、ＲＤＭＡＣによるアクセス（リードアクセス）先のアドレスが、メモリアクセス記録レジスタ２５に設定されている上書き禁止領域と不一致の箇所（上書き禁止領域外）であり、かつ、入力されたＲＤＭＡＣ設定情報に、ＷＤＭＡＣでライトしたアドレス（位置）と異なるアドレスからリードを行う旨が設定されていない場合、上述したリードアドレス不一致割込みを割込み制御部１５へ通知する。割込み制御部１５は、通知された割込みをＣＰＵ２に通知する。
【００３７】
通常のＲＤＭＡＣの動作としては、ＷＤＭＡＣでライトしたデータをそのまま（完全に同じアドレスからリード）するが、意図的に、ＲＤＭＡＣのリード先のアドレスをＷＤＭＡＣでライトしたアドレスとずらす（ＷＤＭＡＣのライトしたアドレス範囲とＲＤＭＡＣのリードしたアドレス範囲を意図的に不一致にする）場合もある。例えば、リード先のアドレスをずらすことによる画像データの先端後端削除を行うケースや、ソフトで画像端部データを追加してＲＤＭＡＣでリードするケース、ＷＤＭＡＣではなくソフト描画によるデータのリードを行うケースなどがある。このようなケースでは、ＲＤＭＡＣのレジスタに、ＷＤＭＡＣでライトしたアドレスと異なるアドレスからリードを行う旨（ライト・リードアドレス一致期待設定）を設定する。設定された内容は、ＲＤＭＡＣ設定情報としてメモリアービタ１０のアドレス比較回路２４に入力される。なお、この設定は、レジスタ設定ではなくディスクリプタに設定しておくことも可能である。このディスクリプタフォーマットの構成の詳細については、図５を用いて後述する。
【００３８】
ここで、上述した図３のメモリアクセス記録レジスタ２５の構成例について、図４を参照して説明する。メモリアクセス記録レジスタ２５は、例えば図４に示すように、ＤＭＡＣ識別情報、ライト先頭アドレス、ライト後端アドレスの３種類のレジスタを持ち、これら３種類のレジスタを１つのセットとして、このセットを複数有する構成となっている。
【００３９】
ＤＭＡＣ識別情報には、各ＤＭＡＣに割り振られたＤＭＡＣ識別番号（１〜Ｍ）が設定（記録）される。これによって、どのＤＭＡＣによってライトされたデータであるかを識別できる。ＤＭＡＣ識別情報は、初期値として０が設定されており、初期値が０に設定されているメモリアクセス記録レジスタ２５のセットは空き状態となり、アドレス比較回路２４は、ＤＭＡＣ識別情報＝０のレジスタのアドレスは比較対象としない。また、メモリアクセス記録レジスタ設定回路２６は、新たなＷＤＭＡＣアクセスが発生した場合、ＤＭＡＣ識別情報＝０のレジスタを選択して、アドレスの設定を行う。
【００４０】
ライト先頭アドレスには、ＷＤＭＡＣがライトアクセスを開始した先頭のアドレスが設定（記録）される。
【００４１】
ライト後端アドレスは、ＷＤＭＡＣが直近にライトアクセスをしたアドレスが設定（記録）され、ライトアクセスが発生する度に順次更新される。また、ＷＤＭＡＣのコンプリート信号やディスクリプタ転送を行った場合のチェーン信号により、ライト後端アドレスの更新は終了となる。
【００４２】
メモリアクセス記録部クリア回路２７は、ＷＤＭＡＣがライトしたアドレスと異なるアドレスからリードを行う旨が予め設定されている場合、かつ、メモリアクセス記録レジスタ２５に設定されているライト先頭アドレス以降のアドレスから、ＲＤＭＡＣがリードを開始した場合、ライト先頭アドレスからＲＤＭＡＣがリードを開始したアドレスまでの範囲に設定されている、上書き防止領域の設定を解除する。また、メモリアクセス記録部クリア回路２７は、ＷＤＭＡＣがライトしたアドレスと異なるアドレスからリードを行う旨が予め設定されている場合、かつ、メモリアクセス記録レジスタ２５に設定されているライト後端アドレス以前のアドレスをＲＤＭＡＣがリードした段階で、そのＲＤＭＡＣからデータのＤＭＡ転送が完了した旨（図３に示すＤＭＡＣコンプリート情報）の通知がされた場合、そのＲＤＭＡＣがデータのＤＭＡ転送を完了したアドレスからライト後端アドレスまでの範囲に設定されている、上書き防止領域の設定を解除する。
【００４３】
次に、上述したＲＤＭＡＣ用のディスクリプタフォーマットの構成例について、図５を参照して説明する。チェーン先アドレスは、チェーンする次のディスクリプタのアドレスを示す。データ格納先アドレスは、データ転送の開始アドレスを示す。データ量情報は、当該ディスクリプタによってリード／ライトするデータの量（サイズ）を示す。データ量情報は、画像データのような２次元データの場合はライン数、符号データのような１次元情報の場合はByte数などになる。また、モード情報は、ＤＭＡＣの動作設定を示す。ライト・リードアドレス一致期待設定は、ＲＤＭＡＣでリードするデータがＷＤＭＡＣでライトされたデータと完全に一致したアドレスからリードすることを想定しているか、そうでないかの設定を示す。ライト・リードアドレス一致期待設定は、デフォルトでは１（ＲＤＭＡＣでリードするデータがＷＤＭＡＣでライトされたアドレスと完全に一致したアドレスからリードする）が設定されており、ＲＤＭＡＣによるデータの先端後端削除やソフトによってメモリ上に用意されたデータをリードするときに０が設定される。
【００４４】
以上説明したように、本実施形態のＡＳＩＣは、メモリアクセス記録レジスタ設定回路が、ＷＤＭＡＣがライトアクセスしたアドレス範囲を自動的に上書き禁止領域として順次設定し、その上書き禁止領域に他のＷＤＭＡＣがアクセスを行った場合、割込みを発生させＣＰＵに通知する。また、その上書き禁止領域に指定されたアドレスに対してＲＤＭＡＣがリードアクセスを行った際に、メモリアクセス記録レジスタクリア回路が、上書き禁止領域の設定を自動的に順次解除していく。これにより、本実施形態によれば、ＷＤＭＡＣによりメモリライトされたデータに対して、他のＷＤＭＡＣによる意図しない上書きを防止する場合に、解析に時間がかかっていたソフトのバグを、追加のソフトウェア処理を行うことなく、ハードウェアのみで容易に検出できる。すなわち、ソフトウェアによる上書き防止の設定／解除処理を用いることなく、ハードウェアにより自動的にＤＭＡ転送によるデータの上書き防止の設定／解除を行うことで、ソフトウェア処理による煩雑さを無くすことができ、ソフトウェアによって誤った制御をされたＤＭＡＣが原因で発生する異常画像の発生防止と解析を容易に行うことができる。また、他の効果として、ＷＤＭＡＣによる上書きの検出だけでなく、ＲＤＭＡＣの設定ミスを検出する効果もある。
【００４５】
なお、上述した特許文献１の発明は、本実施形態と比べると、画像データの書き込みを禁止する領域のスタートアドレスとエンドアドレスを備え、ＤＭＡＣが書き込みを禁止する領域にアクセスした際、ＣＰＵに通知する点で似ている。しかし、特許文献１には、上書きを禁止する領域のスタートアドレスとエンドアドレスの設定方法に関しては特に明示されていない。これに対し、本実施形態は、ＷＤＭＡＣがライトしたデータに対して、データ処理前に他のＷＤＭＡＣが誤って上書きしてしまうことを防止することを目的としている。そのための手段として、本実施形態は新たに、ＷＤＭＡＣのメモリアクセスに応じて上書き禁止領域の設定を自動的に行うメモリアクセス記録レジスタ設定回路と、ＲＤＭＡＣのメモリアクセスに応じて上書き禁止領域の設定の解除を自動的に行うメモリアクセス記録レジスタクリア回路とをハードウェアとして備えており、この点が特許文献１の発明と異なる。
【００４６】
次に、上記本実施形態の別の例について説明する。本例では、ＷＤＭＡＣとＲＤＭＡＣを紐付けておき、紐付けられたＲＤＭＡＣによるリードのときのみ上書き防止を解除するようにする。これにより、誤ったＲＤＭＡＣの制御により上書き防止が解除されることを防止する。なお、本例で用いる「紐付ける」とは、「互いに関連付ける」という意味である。
【００４７】
本例の構成は図１と同様であるので説明を省略するが、図１において、例えば、入力制御部１１のＷＤＭＡＣ１６と回転器１４のＲＤＭＡＣ２１とが紐付けされている一方で、入力制御部１１のＷＤＭＡＣ１６とＨＤＤ Ｉ／Ｆ１３のＲＤＭＡＣ１９とは紐付けされていないとする。このような場合におけるＡＳＩＣ１のメモリ上書き防止動作の概要について、図６のイメージ図を用いて説明する。
【００４８】
図６に示すように、入力制御部１１のＷＤＭＡＣ１６のライト開始後、上書き防止が設定された領域に対し、誤ってＨＤＤ Ｉ／Ｆ１３のＲＤＭＡＣ１９がアクセスした場合、ＷＤＭＡＣ１６とＲＤＭＡＣ１９とが紐付けされていないため、メモリアービタ１０は、上書き防止は解除せずにこの旨を「ＤＭＡＣ紐付け不一致割込み」としてＣＰＵ２に通知する。上書き防止の解除は、ＷＤＭＡＣ１６に紐付けられている回転器１４のＲＤＭＡＣ２１のアクセスがあった場合に、メモリアクセス記録部２２によって行われる。このようにすることで、本例では、ＲＤＭＡＣの誤った動作を検出するとともに、上書き防止の解除がされることを防ぐ。
【００４９】
なお、ＷＤＭＡＣとＲＤＭＡＣの紐付けが固定でなく動作モード等によって変化する場合は、ＷＤＭＡＣとＲＤＭＡＣの紐付けを、レジスタ（後述する図７参照）やディスクリプタ（後述する図８参照）に設定するようにしてもよい。
【００５０】
また、本例においては、１つのＷＤＭＡＣに対して複数のＲＤＭＡＣの紐付け設定がされてもよい。また同様に、１つのＲＤＭＡＣに対して複数のＷＤＭＡＣの紐付け設定がされてもよい。
【００５１】
図７は、本例におけるメモリアービタ１０の内部構成の一例を示すブロック図である。図７に示す構成は、図３示す構成と比べると、メモリアクセス記録部２２にＤＭＡＣ紐付けレジスタ２８が追加されている点が異なる。ＤＭＡＣ紐付けレジスタ２８以外の構成は図３と同様であるので、ここでの説明は省略する。
【００５２】
ＤＭＡＣ紐付けレジスタ２８には、所定のＷＤＭＡＣと所定のＲＤＭＡＣの紐付けが設定される。この紐付け設定は、レジスタで直接設定してもよいし、あるいは、ディスクリプタに設定し、ディスクリプタロード時にＤＭＡＣ紐付け設定レジスタ２８に値をロードして設定してもよい。また、ＷＤＭＡＣに紐付けされたＲＤＭＡＣによるリード時のみ上書き防止制御を解除する機能（紐付け時上書き防止解除機能）のオン・オフの設定も、ＤＭＡＣ紐付けレジスタ２８に設定される。紐付け時上書き防止解除機能機能がオフの場合は、図３を用いた説明と同じ動作となるので、ここでの説明は省略する。以下、紐付け時上書き防止解除機能機能がオンの場合の動作について説明する。
【００５３】
メモリアクセス記録レジスタ設定回路２６は、ＷＤＭＡＣによりメモリライトが行われたメモリアドレスに応じて、アドレス範囲を上書き禁止領域として、メモリアクセス記録レジスタ２５に順次設定していく。なお、メモリアクセス記録レジスタ２５の構成は図４に示す通りである。
【００５４】
メモリアクセス記録レジスタクリア回路２７は、ＤＭＡＣ紐付けレジスタ２８の紐付け設定を参照し、メモリライトを行ったＷＤＭＡＣに紐付けされたＲＤＭＡＣによるリードアクセスがあった場合のみ、メモリアクセス記録レジスタ２５に設定されているアドレス範囲を順次更新（クリア）していく。その後は、アドレス比較回路２４において、図３の説明で述べた「設定された上書き禁止領域とアクセス先のアドレスとの比較」が行われる。
【００５５】
一方、メモリライトを行ったＷＤＭＡＣに紐付けされていないＲＤＭＡＣによるリードアクセスがあった場合、メモリアクセス記録レジスタクリア回路２７は、メモリアクセス記録レジスタ２５に設定されているアドレス範囲を更新（クリア）しない。またこの場合、アドレス比較回路２４は、紐付けされていないＲＤＭＡＣからのリードアクセスである旨を、「ＤＭＡＣ紐付け不一致割込み」として割込み制御部１５へ通知する。割込み制御部１５は、通知された割込みをＣＰＵ２に通知する。
【００５６】
次に、本例におけるＲＤＭＡＣ用のディスクリプタフォーマットの構成例について、図８を参照して説明する。図８に示すチェーン先アドレス（ディスクリプタのオフセット＋０×００）、データ格納先アドレス（ディスクリプタのオフセット＋０×０４）、データ量アドレス（ディスクリプタのオフセット＋０×０８）、モード情報（ディスクリプタのオフセット＋０×０Ｃ）、ライト・リードアドレス一致期待設定（ディスクリプタのオフセット＋０×１０）は、図５で説明したものと同様であるので、ここでの説明は省略する。
【００５７】
図８に示すＤＭＡＣ紐付け設定（ディスクリプタのオフセット＋０×１４）は、上述したＤＭＡＣ（ＷＤＭＡＣとＲＤＭＡＣ）の紐付けの設定を示す。このＤＭＡＣ紐付け設定では、図８に示すように、bit０をイネーブル制御bitとし、紐付け時上書き防止解除機能機能のオン・オフを切り替える。また、図８に示すように、bit１〜bit３１にＤＭＡＣの紐付けの設定が行われる。各ＤＭＡＣには個別の識別番号が振られており、各ＤＭＡＣの識別番号に対応するbitに１を設定することで、ＤＭＡＣの紐付けを行う。ＤＭＡＣの紐付け設定は、ＲＤＭＡＣ側・ＷＤＭＡＣ側どちらのディスクリプタに設定してもよい。
【００５８】
以上、本発明の実施形態について説明したが、上記実施形態に限定されるものではなく、その要旨を逸脱しない範囲において種々の変形が可能である。
【符号の説明】
【００５９】
１    ＡＳＩＣ
２    ＣＰＵ
３    メモリ
４    スキャナ部
５    プロッタ部
６    ＨＤＤ
１０    メモリアービタ
１１    入力制御部
１２    出力制御部
１３    ＨＤＤ Ｉ／Ｆ
１４    回転器
１５    割込み制御部
１６、１８、２０    ＷＤＭＡＣ
１７、１９、２１    ＲＤＭＡＣ
２２    メモリアクセス記録部
２３    アービトレーション制御部
２４    アドレス比較回路
２５    メモリアクセス記録レジスタ（レジスタの一例）
２６    メモリアクセス記録レジスタ設定回路（設定回路の一例）
２７    メモリアクセス記録レジスタクリア回路（クリア回路の一例）
２８    ＤＭＡＣ紐付けレジスタ
【先行技術文献】
【特許文献】
【００６０】
【特許文献１】特開２００６-１１６４５号公報
【図１】
2011243185.tif 000003
【図２】
2011243185.tif 000004
【図３】
2011243185.tif 000005
【図４】
2011243185.tif 000006
【図５】
2011243185.tif 000007
【図６】
2011243185.tif 000008
【図７】
2011243185.tif 000009
【図８】
2011243185.tif 000010