(57)【要約】【課題】制御ソフトが介在する余地を大きくすることなく、ＤＭＡマスタがメモリに不正にアクセスする前にメモリへの不正アクセスを検出する情報処理装置を提供すること。【解決手段】データが記憶されるデータ記憶手段４１と、周辺機器毎に配置され前記データ記憶手段からデータを読みだすか又は前記データ記憶手段にデータを書き込むデータ転送手段３６と、を有する情報処理装置１００において、データ転送手段がメモリから周辺機器又は周辺機器からメモリにデータを転送する際に、データが記憶されるメモリのアドレス情報をメモリに書き込むＣＰＵ３８と、データ転送手段からアドレス情報を取得し、他のデータ転送手段のアドレス情報との間に重複があるか否かを判定する重複判定手段３５３とを有し、データ転送手段は、重複判定手段が重複していないと判定したため重複判定手段から転送許可信号が入力された場合にデータの転送を開始する、ことを特徴とする。【選択図】図３
2014081805.tif 000002
【特許請求の範囲】
【請求項１】
データが記憶されるデータ記憶手段と、
データを出力又は処理する周辺機器毎に配置され、前記データ記憶手段から周辺機器に又は周辺機器から前記データ記憶手段にデータを転送するデータ転送手段と、
前記データ転送手段が前記データ記憶手段から周辺機器に、又は、周辺機器から前記データ記憶手段にデータを転送する際に、データが記憶される前記データ記憶手段のアドレス情報を前記データ記憶手段に書き込むアドレス情報記録手段と、
前記データ転送手段が前記データ記憶手段から取得した前記アドレス情報を受け取り、他の前記データ転送手段から受け取った前記アドレス情報との間に重複があるか否かを判定する重複判定手段と、を有し、
前記データ転送手段は、前記重複判定手段が重複していないと判定したため前記重複判定手段から転送許可信号が入力された場合にデータの転送を開始する、
ことを特徴とする情報処理装置。
【請求項２】
前記データ転送手段は前記重複判定手段に前記アドレス情報を出力する際、自身と連動して前記データ記憶手段にアクセスする他の前記データ転送手段を指定する連動転送手段指定信号を前記重複判定手段に出力しており、
前記重複判定手段は、前記データ転送手段の前記アドレス情報と、前記連動転送手段指定信号で指定された前記データ転送手段がアクセスする前記アドレス情報との重複を判定しない、
ことを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記重複判定手段は、前記データ転送手段から取得した前記アドレス情報と、他の前記データ転送手段の前記アドレス情報との間に重複があると判定した場合、
後から前記アドレス情報を出力した前記データ転送手段に対し不正アクセス割込み信号を出力し、該不正アクセス割込み信号が入力された前記データ転送手段は前記データ記憶手段へのアクセスを中止する、
ことを特徴とする請求項１又は２記載の情報処理装置。
【請求項４】
前記データ転送手段が出力する前記アドレス情報、前記重複判定手段が重複すると判定した他の前記データ転送手段の前記アドレス情報、及び、前記重複判定手段が前記不正アクセス割込み信号を出力した前記データ転送手段の識別情報、を記憶する不正アクセスデータ転送手段情報記憶手段、
を有することを特徴とする請求項３記載の情報処理装置。
【請求項５】
前記重複判定手段は、前記データ転送手段から取得した前記アドレス情報と、他の前記データ転送手段の前記アドレス情報との間に重複があると判定した場合、所定のＩＣに不正アクセス割込み信号を出力し、
前記不正アクセス割込み信号の入力を受け付けた前記ＩＣは、前記不正アクセスデータ転送手段情報記憶手段から前記アドレス情報、及び、前記データ転送手段の識別情報を読み出す不正アクセス情報読み出し手段を提供する、
ことを特徴とする請求項４記載の情報処理装置。
【請求項６】
請求項１〜５いずれか１項記載の情報処理装置と、
原稿を光学的に読み取り画像データを作成する画像データ作成手段と、
記録媒体に画像を形成する画像形成手段と、を有し、
前記データ転送手段は、前記周辺機器である前記画像データ作成手段が作成した画像データを前記データ記憶手段に転送し、前記データ記憶手段から読みだした画像データを前記周辺機器である前記画像形成手段に転送する、
ことを特徴とする画像形成装置。
【請求項７】
データが記憶されるデータ記憶手段と、
データを出力又は処理する周辺機器毎に配置され、前記データ記憶手段から周辺機器に又は周辺機器から前記データ記憶手段にデータを転送するデータ転送手段と、を有する情報処理装置のデータ転送方法であって、
前記データ転送手段が前記データ記憶手段から周辺機器又は周辺機器から前記データ記憶手段にデータを転送する際に、アドレス情報記録手段が、データが記憶される前記データ記憶手段のアドレス情報を前記データ記憶手段に書き込むステップと、
前記データ転送手段が前記データ記憶手段から前記アドレス情報を読み出すステップと、
重複判定手段が、前記データ転送手段から前記アドレス情報を取得するステップと、
重複判定手段が、他の前記データ転送手段の前記アドレス情報との間に重複があるか否かを判定するステップと、
重複していないと判定した場合に、前記重複判定手段が前記データ転送手段に転送許可信号を入力するステップと、
転送許可信号が入力された場合に、前記データ転送手段がデータの転送を開始するステップと、
を有することを特徴とするデータ転送方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリから周辺機器又は周辺機器からメモリにデータを転送する複数のＤＭＡコントローラを有する情報処理装置に関する。
【背景技術】
【０００２】
情報処理装置にはＤＭＡＣ（Direct Memory Access Controller）が搭載されることが一般的になっている。ＤＭＡＣは、メモリとメモリ又はメモリとＩ／Ｏデバイスの間で直接（ＣＰＵが転送するのでなく）、データを転送するＩＣである。ＣＰＵはＤＭＡＣに転送指示を設定した後、転送処理から解放されるので、ＣＰＵの負荷が低減される。
【０００３】
しかし、ＤＭＡＣはＣＰＵを介さずに独立してメモリにアクセス（主に、リード・ライト）するため、ＤＭＡＣに誤った転送先アドレスが設定された場合、メモリに書き込まれている必要なデータを上書きしてしまう可能性がある。また、本来、読み出すべきでない別のデータを読み出す可能性もある。
【０００４】
ところで、独立したＤＭＡＣを有するのでなくＤＭＡＣの機能を備えたデバイス（周辺機器）をＤＭＡマスタという。プリンターや複写機などの機能を備えた複合機の多機能化に伴い、複写機においてもメモリにアクセスするＤＭＡマスタが増加している。このため、ＤＭＡマスタに転送指示などを設定するソフト（以下、制御ソフトという）も複雑化しており、共有メモリ領域に対するデータの上書きや別のデータの読み出しが起こる可能性も高くなっている。
【０００５】
このような不都合に対し、ＤＭＡＣによるメモリの上書きを検出する技術が考案されている（例えば、特許文献１、２参照。）。
【０００６】
図１は、特許文献１における上書き検知について説明する図の一例である。マイクロプロセッサに２つのタイマＡ，Ｂが搭載されている。予め、タイマＡのタイムアウト時間が不正アクセス境界アドレスに保存されており、このタイムアウト設定値はある一定周期（タイマＢによって決まる）毎にタイマＡにロードされる。不正アクセス境界アドレスは、不正なアクセスの検知対象となるアドレス領域と他のアドレス領域の境界のアドレスである。不正アクセス境界アドレスに保存したタイマＡのタイムアウト設定値が、不正アクセス境界アドレスへの不正アクセスにより小さい時間に上書きされてしまうとタイマＡがタイムアウトする。したがって、ＣＰＵはタイマＡがタイムアウトすることで、ＤＭＡＣによるメモリの上書きを検出できる。
【０００７】
図２は、特許文献２における上書き検知について説明する図の一例である。特許文献２では、あらかじめ制御ソフトによりトリガ条件設定レジスタに不正アクセスの監視先のアドレスを設定しておき、ＤＭＣコントローラが出力するアドレスと比較することで、メモリの上書きを検出する技術が開示されている。
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら従来技術を使用する場合、以下の課題がある。
・特許文献１では、不正アクセス検出用のメモリ領域（不正アクセス境界アドレス）を必要としており、メモリリソースが減ってしまう。
・特許文献１，２のいずれも不正アクセス検出タイミングが不正アクセスを犯した時点となっており、メモリ上書きの被害を"減らす"ことはできるが、"無くす"ことは困難である。
・特許文献２では不正アクセス検出のためにソフト制御を必要としている。しかし、複合機では複数のアプリケーションが複合動作するため、各ＤＭＡマスタの設定ミスに起因する誤動作が多く、制御ソフトのデバッグ効率の向上が求められている。不正アクセス検出のためにソフト制御を用いると、ソフト制御が煩雑になることでかえってデバッグ効率を悪くしてしまう可能性がある。
【０００９】
本発明は、制御ソフトが介在する余地を大きくすることなく、ＤＭＡマスタがメモリに不正にアクセスする前にメモリへの不正アクセスを検出する情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【００１０】
本発明は、データが記憶されるデータ記憶手段と、データを出力又は処理する周辺機器毎に配置され、前記データ記憶手段から周辺機器に又は周辺機器から前記データ記憶手段にデータを転送するデータ転送手段と、前記データ転送手段が前記データ記憶手段から周辺機器に、又は、周辺機器から前記データ記憶手段にデータを転送する際に、データが記憶される前記データ記憶手段のアドレス情報を前記データ記憶手段に書き込むアドレス情報記録手段と、前記データ転送手段が前記データ記憶手段から取得した前記アドレス情報を受け取り、他の前記データ転送手段から受け取った前記アドレス情報との間に重複があるか否かを判定する重複判定手段と、を有し、前記データ転送手段は、前記重複判定手段が重複していないと判定したため前記重複判定手段から転送許可信号が入力された場合にデータの転送を開始する、ことを特徴とする。
【発明の効果】
【００１１】
制御ソフトが介在する余地を大きくすることなく、ＤＭＡマスタがメモリに不正にアクセスする前にメモリへの不正アクセスを検出する情報処理装置を提供することができる。
【図面の簡単な説明】
【００１２】
【図１】特許文献１における上書き検知について説明する図の一例である。
【図２】特許文献２における上書き検知について説明する図の一例である。
【図３】本実施形態の画像形成装置の概略的な特徴を説明する図の一例である。
【図４】画像形成装置の全体構成図の一例である。
【図５】ＤＭＡＣの構成図の一例、ディスクリプタ領域に記述される情報の一例を示す図である。
【図６】不正アクセス検出部の内部構成と、バスマスタである各ＤＭＡＣ及びＣＰＵとの接続関係を説明する図の一例である。
【図７】ＤＭＡＣが２つの場合の領域比較部の動作手順を示すフローチャート図の一例である。
【図８】メモリのアクセス領域を模式的に示す図の一例である。
【図９】ＤＭＡＣが３つ以上（ｎ個）の場合の領域比較部の動作手順を示すフローチャート図の一例である。
【図１０】ＤＭＡＣと不正アクセス検出部の一連の動作手順を示すフローチャート図の一例である。
【図１１】不正アクセスでないケースのDMAC_1、DMAC_2及び不正アクセス検出部のシーケンス図の一例である。
【図１２】不正アクセスのケースのDMAC_1、DMAC_2及び不正アクセス検出部のシーケンス図の一例である。
【発明を実施するための形態】
【００１３】
以下、本発明を実施するための形態について図面を参照しながら説明する。しかしながら、本発明の技術的範囲が、本実施の形態に限定されるものではない。
【００１４】
図３は、本実施形態の画像形成装置の概略的な特徴を説明する図の一例である。
（１）ＣＰＵはメモリのディスクリプタ領域にＤＭＡＣがアクセスすべきアドレス情報等を書き込む。これがシーケンス図のＳ１に対応している。
（２）ＤＭＡＣはアドレス情報に基づきメモリのアクセス先を特定する。なお、ディスクリプタ領域への書き込みは、アクセスの契機となるＤＭＡＣへの指示なので制御ソフトの動作に含まれない。この結果、ＤＭＡＣ＿ＡはアドレスＳＡ＿ＡからＥＡ＿Ａの領域にすでにアクセスしているものとする。
（３）また、ＤＭＡＣ＿ＢはアドレスＳＡ＿ＢからＥＡ＿Ｂの領域というアクセス情報を取得する。これがシーケンス図のＳ２に対応している。
（４）ＤＭＡＣ＿Ｂはアドレス情報を不正アクセス検出部に出力する。これがシーケンス図のＳ３に対応している。ＤＭＡＣ＿Ａもすでにアドレス情報を不正アクセス検出部に出力している。
（５）不正アクセス検出部は、ＤＭＡＣ＿ＡとＤＭＡＣ＿Ｂのアドレス情報を比較する。（６）図の例では２つの領域は重複していないが、仮に重複していた場合、不正アクセス検出部はＤＭＡＣ＿Ｂに不正アクセス割込み信号をアサートする。これにより、ＤＭＡＣ＿Ｂはメモリにアクセスできないので、ＤＭＡＣ＿Ｂがメモリにアクセスする前に上書きなどの不正アクセスを禁止できる。
【００１５】
このように、不正アクセス検出部には、メモリにアクセスするすべてのＤＭＡＣ（ＤＭＡマスタ）のアドレス情報が収集され、全てのＤＭＡＣが使用しているメモリ領域をハード的に自動検出できる。このため、上書きしてはいけないアクセス禁止領域を制御ソフトで設定したり、ソフト的に検出したりする必要がない。
【００１６】
また、ＤＭＡＣがメモリにアクセスする前に不正アクセス検出部がメモリ領域の重複を判定するので早期に設定ミスを発見でき、不正アクセスを検出した場合は、不正アクセス割り込み信号をＤＭＡＣに通知するので、メモリの上書きを未然に防止できる。
【００１７】
なお、以下では、主に書き込み時の処理について説明するが（上書きを未然に防止する）、重複したアドレスからの読み出しを未然に防止することも可能である。
【００１８】
〔構成例〕
図４は、画像形成装置の全体構成図の一例である。画像形成装置１００は、主に、エンジン部２０、コントローラ部３０、メモリ４１、ＣＰＵ３８、及び、ＨＤＤ（Hard Disk Drive）３９を有している。エンジン部２０は、アクチュエータやクラッチなどの駆動部を制御して画像の読み取り・印刷などを行い、コントローラ部３０は画像の回転、編集（１in２ページ等）、ビットマップデータの作成などを行う。ＣＰＵ３８はコントローラ部３０及びエンジン部２０を含む画像形成装置１００の全体を制御して複写、印刷、スキャンなどのジョブを実行する。ＨＤＤ３９はフォントデータ、画像データ、及び、プログラム等を蓄積する記憶手段である。プログラムはＤＭＡＣを制御する制御ソフトの機能を有している。なお、図中の実線の矢印の向きは画像データの転送方向を示している。
【００１９】
まずエンジン部２０について説明する。エンジン部２０はスキャナ２１、プロッタ２２、及び、エンジン処理部２３を有しており、エンジン処理部２３はスキャナ特性補正部２４、プロッタ出力処理部２５、及び、PCI Express I/F２６を有している。スキャナ２１はコンタクトガラスやＡＤＦ（Auto Document Feeder）に載置された原稿を、ＣＣＤなどで構成されるラインセンサで光学的に読み取る装置である。ＣＣＤではカラーフィルター（ＲＧＢ）を通過した光が光電変換され、所定の解像度で原稿の濃淡が反映されたカラーの画像データが生成される。
【００２０】
スキャナ２１で使用しているＣＣＤの特性の差異により、エンジン処理部２３に入ってくる画像データの特性は様々である。エンジン処理部２３のスキャナ特性補正部２４はこの特性の補正を行う処理を行う。例えば、シェーディング補正や、γ変換、フィルタ処理、色変換などである。補正により、スキャナ２１の違いに影響されず同じ原稿から同じ画像データが生成される。なお、ここで行う色変換は、ＲＧＢからＣＭＹＫへの色変換ではなく、ＲＧＢからＲＧＢへの変換である。画像データはPCI Express I/F２６に出力される。エンジン処理部２３には図示しないがＤＭＡコントローラが内蔵されている。
【００２１】
プロッタ２２は、感光体、帯電器、露光手段、現像器、クリーニング装置、除電器、転写ベルト、紙搬送機構、定着器、給紙トレイ、排紙トレイ、などを有する画像形成手段である。このような電子写真方式の画像形成手段でなくインクジェット方式の画像形成手段でもよい。
【００２２】
電子写真方式のプロッタ２２には、ＣＭＹＫの色毎に感光体等を用意するタンデム方式、４サイクル方式（中間転写体に順次４色のトナー画像を重ねて転写した後，中間転写体上の4色トナー画像を1回で用紙に転写する方式）などがある。
【００２３】
プロッタ出力処理部２５は、ＣＭＹＫのカラー毎に用意されている。プロッタ出力処理部２５は、スキュー補正、倍密処理、ジャギー補正、トリミング処理、地紋などの内部パターンの負荷などを行う。プロッタ出力処理部２５はＣＭＹＫのそれぞれの画像を、別々のタイミングでプロッタ２２へ送信する。各プロッタ出力処理部２５には図示しないがＤＭＡコントローラが内蔵されている。
【００２４】
PCI Express I/F２６は、PCI Expressを介して接続されるコントローラ部３０との間で画像データの授受を行う。複写ジョブの場合、スキャナ２１が読み取った画像データはコントローラ部３０に送信され、コントローラ部で画像処理された後、エンジン部２０送信される。また、ＰＣから送信された印刷データはコントローラ部３０で画像処理された後、エンジン部２０に送信される。
【００２５】
コントローラ部３０について説明する。コントローラ部３０は、メモリ４１に接続されたメモリアービタ３７と、不正アクセス検出部３５と、メモリアービタ３７及び不正アクセス検出部３５に接続された複数のＤＭＡＣ３６を有している。ＤＭＡＣ３６はエンジン部側のPCI Express I/F２６と通信するPCI Express I/F３１、圧縮伸長器３２、ＨＤＤ I/F３３ 、及び、ＳＤ  I/F３４に対し、それぞれ設けられている。これらPCI Express I/F３１、圧縮伸長器３２、ＨＤＤ I/F３３ 、及び、ＳＤ  I/F３４を周辺機器と呼ぶ場合がある。各周辺機器に設けられたＤＭＡＣ３６は、周辺機器からデータを読み出しメモリ４１に書き込むライトＤＭＡＣ３６ｗと、メモリ４１からデータを読み出し周辺機器に出力するリードＤＭＡＣ３６ｒの２つが１対となっている（以下、区別しない場合は単にＤＭＡＣ３６という）。ＤＭＡＣ３６は特許請求の範囲のデータ転送手段の一例である。
【００２６】
なお、メモリ４１はＲＡＭ，ＤＲＡＭ、ＳＤＲＡＭなどの高速なランダムアクセスメモリ４１である。メモリ４１は特許請求の範囲のデータ記憶手段の一例である。ＳＤ  I/F３４はＳＤカード４０にデータを読み書きする。メモリアービタ３７は各種レジスタを有し、ＣＰＵ３８及び各周辺機器の優先順位に基づきメモリ４１へのアクセスを調停する。
【００２７】
例えば、スキャナ２１から送信された画像データは、PCI Expressなどの汎用バスを通してコントローラ部３０に送られ、メモリアービタ３７による調停の後、ライトＤＭＡＣ３６ｗによりメモリ４１に書き込まれる。また、印刷時は、リードＤＭＡＣ３６ｒがメモリアービタ３７による調停を受けた後、メモリ４１から画像データを読み出してコントローラ部３０からエンジン部２０に送信する。
【００２８】
さらに、コントローラ部３０はリードＤＭＡＣ３６ｒにより、メモリ４１からデータを読み出してＨＤＤ３９やＳＤカード４０、圧縮伸張回路３２に格納し、ライトＤＭＡＣ３６ｗによりＨＤＤ３９やＳＤカード４０、圧縮伸張回路３２からデータを読み出してメモリ４１に書き込む。なお、圧縮伸長回路３２はデータに圧縮処理を施してメモリの占有領域を低減させ、また、メモリから読み出した画像データを伸張する（圧縮されたデータは符号データとして再びメモリ４１に記憶されても良く、この圧縮伸長器３２は必ずしも必須要素ではない）。
【００２９】
このように、本実施形態のＤＭＡＣは画像形成装置に好適に適用できるが、周辺機器とデータをやり取りするＰＣ（Personal Computer）などの汎用的な情報処理装置にも適用可能である。
【００３０】
＜ＤＭＡＣについて＞
図５（ａ）はＤＭＡＣ３６とＣＰＵ３８の構成図の一例を、図５（ｂ）はメモリ上のディスクリプタ領域に記述される情報の一例を示す図である。ＣＰＵ３８は、ディスクリプタ情報作成部３８１、起動指示部３８２、及び、不正アクセス情報読み出し部３８３を有している。これらはＣＰＵ３８がプログラムを実行して各種のハードウェアを協働することで実現される。
【００３１】
ディスクリプタ情報作成部３８１は、メモリ上のディスクリプタ領域に、図５（ｂ）に示すアクセスに必要な情報（以下、ディスクリプタ情報という）を書き込む。ディスクリプタ情報作成部３８１は特許請求の範囲のアドレス情報記録手段の一例である。ディスクリプタ情報とは、エンジン部２０がメモリを効率的に使用できるように、メモリの使用領域をＣＰＵがエンジン部に対し指定する情報である。ディスクリプタ情報作成部３８１はメモリを帯状領域に区切って、各帯状領域のスタートアドレスと転送データ量などをディスクリプタ情報としてエンジン部２０に通知する。エンジン部２０が帯状領域の最後のアドレスまでデータを書き込むとＣＰＵに割込みが発生し、ディスクリプタ情報作成部３８１は次のディスクリプタ情報を用意する。エンジン部は、ディスクリプタ情報に従い帯状領域を使用していく。１つの帯状領域は繰り返し使用できるようになっていて、画像データサイズよりもメモリのサイズを小さくすることが可能になっている。また、エンジン部（例えばスキャナ）が作成する画像データのサイズが不定でも、ディスクリプタ情報作成部３８１は必要に応じて帯状領域を指示できる。
【００３２】
最初のディスクリプタ領域は予め決まっており、以降のディスクリプタ領域は次述する「次ディスクリプタポインタ」で指定される。ディスクリプタ領域には、「スタートアドレス」「次ディスクリプタポインタ」「転送データ量」「各種コマンド領域」が設けられている。
・スタートアドレス：各ＤＭＡＣがアクセスするメモリ４１上の最初のアドレスが設定される
・次ディスクリプタポインタ：次のディスクリプタが記載されているポインタ（ネクストディスクリプタポインタ）が記述される
・転送データ量：データ転送量が記述される
・各種コマンド領域：その他のコマンドが設定される（例えば、１次元／２次元情報はＤＭＡＣによるデータ転送の態様を示す）
リードＤＭＡＣ３６ｒにとってスタートアドレスはメモリの転送元のアドレスであり、この場合の転送先は各周辺機器である。ライトＤＭＡＣ３６ｗにとってスタートアドレスはメモリの転送先のアドレスであり、この場合の転送元は各周辺機器である。すなわち、ＤＭＡＣ３６はディスクリプタ領域からこれらを読み出すことでデータの転送が可能になる。
【００３３】
ＤＭＡＣ３６は、レジスタ部３６１、メモリアクセス部３６３及びディスクリプタ制御部３６２を備えている。レジスタ部３６１は、ＣＰＵ３８の起動指示部３８２から起動指示を取得し、該起動指示をディスクリプタ制御部３６２に送出する。ディスクリプタ制御部３６２は、レジスタ部３６１からの起動指示を受け取ると、アービターを介してメモリ４１のディスクリプタ領域を読み取る読取動作を開始する。読み出したディスクリプタ情報は転送開始指示と共にメモリアクセス部３６３に送出される。メモリアクセス部３６３は、ディスクリプタ制御部３６２から取得したディスクリプタ情報に基づいて、メモリアドレスを生成しながらメモリ４１との間でデータ転送を行う。
【００３４】
＜不正アクセス検出部について＞
図６を用いて不正アクセス検出部について説明する。図６は不正アクセス検出部３５の内部構成と、バスマスタである各ＤＭＡＣ３６及びＣＰＵ３８との接続関係を説明する図の一例である。この図ではＤＭＡＣ３６が２つ（DMAC_1とDMAC_2）だが、不正アクセス検出部３５は各ＤＭＡＣ３６に対し同様の構成を有している。
【００３５】
不正アクセス検出部３５は、領域検出部３５１、領域比較部３５３、及び、不正アクセス表示レジスタ３５２とを有している。領域検出部３５１は、接続される各ＤＭＡＣ３６に対して1つずつ配置される（DMAC_1 に対し領域検出部_1、DMAC_2 に対し領域検出部_2等）。領域検出部３５３と不正アクセス表示レジスタ３５２は１つである。
【００３６】
ＤＭＡＣ３６から領域検出部３５１には以下の信号が出力される。
・ＤＭＡＣ起動フラグ信号
・スタートアドレス信号
・バイト量信号
・ライン数信号
・２次元指示信号
・回転指示信号
領域検出部３５１は、ＤＭＡＣ３６から受けるＤＭＡＣ起動フラグ信号のアサートを契機にして、スタートアドレスとエンドアドレスを算出する。スタートアドレスはＤＭＡＣ３６がメモリ４１にアクセスする際の始点となるアドレス、エンドアドレスは終点となるアドレスである。
【００３７】
スタートアドレスとエンドアドレスの算出には、ＤＭＡＣ３６から出力されるディスクリプタ情報に含まれる、「スタートアドレス」、「転送データ量」、及び、「各種コマンド領域」を利用する。「スタートアドレス」はスタートアドレス信号として、「転送データ量」のうち転送幅はバイト量信号として、「転送データ量」のうち転送幅はライン数信号として、「転送データ量」のうち回転指示は回転指示信号として、各種コマンド領域は２次元指示信号として出力される。
【００３８】
回転指示信号が"０"の場合（回転しない場合）、スタートアドレスはＤＭＡＣ３６から取得するスタートアドレス信号とイコールとなる。エンドアドレスは、「スタートアドレス」＋「転送データ量」となる。
【００３９】
一方、回転指示信号が"１"の場合（回転する場合）、エンドアドレスはＤＭＡＣ３６から取得するスタートアドレス信号とイコールとなる。スタートアドレスは、「スタートアドレス」＋「転送データ量」となる。
【００４０】
回転指示信号に関わりなく「転送データ量」は、２次元指示信号が"０"の場合は（１次元転送の場合）、バイト量信号とイコールとなり、2次元指示信号が"１"の場合は（２次元転送の場合）、「バイト量信号×ライン数（バイト量信号とライン数信号の乗算）となる。
【００４１】
領域検出部３５１は、スタートアドレスとエンドアドレスの算出と同時に（あるいは適当な遅延の後）、スタートアドレス信号、エンドアドレス信号、及び、アドレス更新パルス信号を領域比較部３５３にアサートする。したがって、各ＤＭＡＣ３６から領域比較部３５３にこの３つの信号が出力される。
【００４２】
また、ＤＭＡＣ３６から領域比較部３５３には以下の信号が出力される。
・連動指示信号
・連動先ＤＭＡＣ指定信号
領域比較部３５３からＤＭＡＣ３６には以下の信号が出力される。
・ＤＭＡＣ不正アクセス割込み信号
・ＤＭＡＣ転送許可信号
領域比較部３５３は、各領域検出部３５１から出力された各ＤＭＡＣ３６のメモリアクセス領域のスタートアドレスとエンドアドレスを比較し、各ＤＭＡＣ３６のメモリ４１へのメモリアクセス領域が重複しているか否かを判別することで不正アクセスを検出する。つまり、あるＤＭＡＣ３６がアクセス要求した場合、そのＤＭＡＣ３６のメモリアクセス領域と残りの全てのＤＭＡＣ３６のメモリアクセス領域の重複を判定する。
【００４３】
比較の対象となるのは、すでにＤＭＡＣ起動フラグ信号を領域検出部３５３に出力しているＤＭＡＣ３６である。ＤＭＡＣ３６のメモリアクセスが完了し領域検出部３５１がＤＭＡＣ起動フラグ信号の出力を停止すると、スタートアドレス信号とエンドアドレス信号を停止するので、領域比較部３５３はメモリアクセス領域の比較対象から除外する。領域比較部３５３にスタートアドレス信号とエンドアドレス信号が出力されていることを、ＤＭＡＣが起動中であると記載したり、メモリアクセス領域を保持していると記載する場合がある。
【００４４】
領域比較部３５３は、原則的にメモリアクセスしているすべてのＤＭＡＣ３６のメモリアクセス領域に重複があるか否かに基づき不正アクセスを判別するが、例外的に連動動作するＤＭＡＣ間についてはメモリアクセス領域の重複を許容する。連動動作とは、一方のＤＭＡＣ３６がメモリ４１に書き込んだデータをもう一方のＤＭＡＣ３６が読み出す動作である。連動動作する２つのＤＭＡＣ３６は、メモリ４１に書き込むＤＭＡＣ３６とメモリ４１から読み出すＤＭＡＣ３６のメモリ４１のメモリアクセス領域が同じになるため（少なくとも一部が重複する）、これを不正アクセス検出の対象外とする必要がある。このため、領域比較部３５３は、ＤＭＡＣ３６から連動指示信号と連動ＤＭＡＣ指定信号を取得している。
【００４５】
また、重複したメモリアクセス領域から２つのＤＭＡＣが読み出すことを禁止するかどうかは装置の設計によるが、連動指示信号により禁止することも許可することも可能である。
【００４６】
あるＤＭＡＣ３６が他のどのＤＭＡＣ３６と連動するかは、ＤＭＡＣ毎に予め定められているか又はディスクリプタ情報に含まれている。
【００４７】
領域比較部３５３は、アドレス更新パルス信号のアサートを取得した時に、連動指示信号が"１"である場合には、連動ＤＭＡＣ指定信号が示すＤＭＡＣ３６との領域比較をキャンセルする。たとえば、DMAC_1のアドレス更新パルス信号のアサート時、その連動指示信号が"１"で、連動ＤＭＡＣ指定信号が"２"である場合、DMAC_1とDMAC_2のメモリアクセス領域の比較を実施しない。
【００４８】
なお、ＤＭＡＣ不正アクセス割込み信号は、メモリアクセス領域に重複があることが検出された場合にＤＭＡＣ３６に出力され、ＤＭＡＣ３６はメモリアクセスすることなく処理を中止する。ＤＭＡＣ転送許可信号はメモリアクセス領域に重複がない場合にＤＭＡＣ３６に出力され、ＤＭＡＣ３６が転送を開始するための信号である。
【００４９】
不正アクセス表示レジスタ３５２には、各領域検出部３５１が出力するスタートアドレス信号とエンドアドレス信号、領域比較部３５３が出力する不正アクセスＤＭＡＣＩＤ信号、及び、不正アクセス割込み信号が供給される。不正アクセス表示レジスタ３５２は、不正アクセスを行ったＤＭＡＣ３６とメモリ４１のメモリアクセス領域を不正アクセス情報読み出し部３８３が読み出すためのレジスタである。詳しくはフローチャート図において説明する。
【００５０】
〔動作手順〕
図７はＤＭＡＣ３６が２つの場合の領域比較部３５３の動作手順を示すフローチャート図の一例であり、図８（ａ）〜（ｄ）はメモリ４１のメモリアクセス領域を模式的に示す図の一例である。SA_1はDMAC_1のスタートアドレス、SA_2はDMAC_2のスタートアドレス、EA_1はDMAC_1のエンドアドレス、EA_2はDMAC_2のエンドアドレスを示している。図７のフローチャート図の点線に添えたａ〜ｄは図８の（ａ）〜（ｄ）に対応している。
【００５１】
図８（ａ）に基づき説明する。
Ｓ１０：領域比較部３５３は、SA_1がSA_2よりも大きいか否かを判定する。
Ｓ２０：SA_1がSA_2よりも大きい場合、SA_1がEA_2よりも大きいか否かを判定する。SA_1がEA_2よりも大きい場合（Ｓ２０のＹｅｓ）、図８（ａ）のように、DMAC_1とDMAC_2 のメモリアクセス領域とは重複しないので、領域比較部３５３は２つのＤＭＡＣ３６のメモリアクセス領域が重複しないと判定する。
【００５２】
図８（ｂ）に基づき説明する。
Ｓ１０：領域比較部３５３は、SA_1がSA_2よりも大きいか否かを判定する。
Ｓ３０：SA_1がSA_2よりも大きくない場合、SA_2がEA_1よりも大きいか否かを判定する。SA_2がEA_1よりも大きい場合（Ｓ３０のＹｅｓ）、図８（ｂ）のように、DMAC_1とDMAC_2 のメモリアクセス領域とは重複しないので、領域比較部３５３は２つのＤＭＡＣ３６のメモリアクセス領域が重複しないと判定する。
【００５３】
図８（ｃ）に基づき説明する。
Ｓ１０：領域比較部３５３は、SA_1がSA_2よりも大きいか否かを判定する。
Ｓ３０：SA_1がSA_2よりも大きくない場合、SA_2がEA_1よりも大きいか否かを判定する。SA_2がEA_1よりも大きくないい場合（Ｓ３０のＮｏ）、図８（ｃ）のように、SA_2からEA_1の間でDMAC_1 のメモリアクセス領域とDMAC_2 のメモリアクセス領域とが重複している。
Ｓ４０：よって、領域比較部３５３は不正アクセスを検出し、不正アクセス割込みを発行する。
【００５４】
図８（ｄ）に基づき説明する。
Ｓ１０：領域比較部３５３は、SA_1がSA_2よりも大きいか否かを判定する。
Ｓ２０：SA_1がSA_2よりも大きい場合、SA_1がEA_2よりも大きいか否かを判定する。SA_1がEA_2よりも大きくない場合（Ｓ２０のＮｏ）、図８（ｄ）のように、SA_1からEA_2の間でDMAC_1 のメモリアクセス領域とDMAC_2 のメモリアクセス領域とが重複している。
Ｓ４０：よって、領域比較部３５３は不正アクセスを検出し、不正アクセス割込みを発行する。
【００５５】
図９はＤＭＡＣが３つ以上（ｎ個）の場合の領域比較部３５３の動作手順を示すフローチャート図の一例である。具体的には、ＤＭＡＣ起動フラグ信号を出力するＤＭＡＣに対し、ＤＭＡＣ起動フラグ信号をすでに出力している他の全てのＤＭＡＣに対し図７と同様の比較を行う。図９では新たにＤＭＡＣ起動フラグ信号を出力するＤＭＡＣ３６をDMAC_1としている。
S9-1：領域比較部３５３は、連動指示信号が"１"でありかつ連動先ＤＭＡＣ指定信号が"２"か否かを判定し、"２"でない場合にだけＳ１１〜Ｓ４１を行う。
S11-1：SA_1がSA_2よりも大きいか否かが判定される。
S21-1：SA_1がSA_2よりも大きい場合、SA_1がＥA_2よりも大きいか否かが判定される。
S31-1：SA_1がSA_2よりも大きくない場合、SA_2がＥA_1よりも大きいか否かが判定される。
S41-1：S21-1又はS31-1でＮｏと判定されると、領域比較部３５３は不正アクセスを検出し、不正アクセス割込みを発行する。
【００５６】
以降は、DMAC_1に対しDMAC_3が比較され、その次はDMAC_1に対しDMAC_4が比較され、DMAC_nまで比較すると終了する。
【００５７】
＜ＤＭＡＣと不正アクセス検出部の全体動作＞
図１０は、ＤＭＡＣと不正アクセス検出部３５の一連の動作手順を示すフローチャート図の一例である。フローチャートのステップに処理の主体が示されている。
【００５８】
S100：起動指示部３８２は、ＤＭＡＣのレジスタ部３６１に「起動指示」をアサートする。ＤＭＡＣのレジスタ部３６１は、ディスクリプタ制御部３６２に「起動指示」を出力する。ディスクリプタ制御部３６２は起動指示を受け取ると、メモリ４１へディスクリプタ情報を読みにいきディスクリプタ情報を取得すると、メモリアクセス部３６３に「転送開始指示」を出力する。該「転送開始指示」にはディスクリプ情報（スタートアドレス、1次元転送であるのか、２次元転送であるのかの転送種類、１次元転送の場合には転送サイズ、2次元転送の場合には、転送幅と転送ライン数など）が含まれている。
【００５９】
S101：メモリアクセス部３６３はディスクリプタ情報を取得するまで待機する。
【００６０】
S102：ディスクリプタ制御部３６２がメモリアクセス部３６３に「転送開始指示」を出すと同時に（あるいは適切な時間遅延して）、メモリアクセス部３６３は不正アクセス検出部３５へＤＭＡＣ起動フラグ信号をアサートする。
【００６１】
S103：領域検出部３５１は、ＤＭＡＣから受け取ったディスクリプタ情報を使って該ＤＭＡＣのメモリアクセス領域（スタートアドレス、エンドアドレス）を算出し、アドレス更新パルス信号をアサートする。
【００６２】
S104：領域比較部３５３は、アドレス更新パルス信号のアサートを受けると、領域検出部３５１から受け取ったスタートアドレスとエンドアドレスにより各ＤＭＡＣのメモリアクセス領域との比較を行う。
【００６３】
S105：但し、このとき比較対象のＤＭＡＣが連動対象となっているＤＭＡＣである場合は比較を実施しない。
【００６４】
S106,S107：領域比較をした結果、不正アクセスを検出すると、領域比較部３５３は以下の信号を出力する。
・ＣＰＵ３８に不正アクセス割り込み信号
・不正アクセスを起こしたＤＭＡＣに対して不正アクセス割り込み信号
・不正アクセス表示レジスタ３５２へ不正アクセスを起こしたＤＭＡＣのID
この他、不正アクセス表示レジスタ３５２には不正アクセスを起こしたＤＭＡＣのスタートアドレスとエンドアドレスが出力される。
【００６５】
ＣＰＵ３８は不正アクセス割り込みを検知し、不正アクセス情報読み出し部３８３が該不正アクセス表示レジスタ３５２のデータを読み出すことで、設定ミスを犯したＤＭＡＣの特定と、そのスタートアドレスとエンドアドレスを知ることができる。一方、ＤＭＡＣは不正アクセス割り込み信号を取得すると、データ転送の開始を取りやめる。
【００６６】
S108、S109：全てのＤＭＡＣと領域比較をした結果、不正アクセスを検出しなかった場合は、領域比較部３５３はＤＭＡＣへ転送許可信号をアサートする。
【００６７】
S110：ＤＭＡＣのメモリアクセス部３６３は転送許可信号のアサートを取得すると、「転送開始指示」に基づいたデータ転送を開始する。
【００６８】
S111,S112：データ転送が終了すると、メモリアクセス部３６３はディスクリプタ制御部３６２及びレジスタ部３６１に転送終了通知を出力し、不正アクセス検出部３５へ供給しているＤＭＡＣ起動フラグ信号もディアサートする。
【００６９】
S113：不正アクセス検出部３５は、ＤＭＡＣ起動フラグ信号のディアサートを取得すると、領域検出部内のディスクリプタ情報をクリアする。
【００７０】
〔シーケンス〕
図１１は、不正アクセスでないケースのDMAC_1、DMAC_2及び不正アクセス検出部３５のシーケンス図の一例を示す。
S1：起動指示部３８２がDMAC_1のレジスタ部３６１に起動指示を出力する。
S2：レジスタ部３６１はディスクリプタ制御部３６２に起動指示を出力する。
S3：ディスクリプタ制御部３６２はメモリ４１のディスクリプタ領域からディスクリプタ情報を読み出す。
S4：ディスクリプタ制御部３６２は転送開始指示と共に読み出したディスクリプタ情報をメモリアクセス部３６３に出力する。
S5：メモリアクセス部３６３は転送開始指示と同時に、領域検出部３５１にDMAC_1のＤＭＡＣ起動フラグ信号をアサートする。
S6：領域検出部３５１はDMAC_１のスタートアドレスとエンドアドレスを更新し、領域比較部３５３にスタートアドレス信号、エンドアドレス信号及びアドレス更新パルス信号を出力する。
S7：領域比較部３５３は、起動中のDMACとDMAC_1のメモリアクセス領域を比較する。なお、領域比較部３５３はDMAC_1が起動中に限りDMAC_1のスタートアドレスとエンドアドレスを保持している。
S8：メモリアクセス領域が重複していなければ、領域比較部３５３は転送許可信号をDMAC_1に出力する。
S9：メモリアクセス部３６３はメモリアービタ３７に対しデータ転送を開始する。
S10：次に、起動指示部３８２がDMAC_2のレジスタ部３６１に起動指示を出力する。これが図１０のステップS100に対応する。
S11：レジスタ部３６１はディスクリプタ制御部３６２に起動指示を出力する。
S12：ディスクリプタ制御部３６２はメモリ４１のディスクリプタ領域からディスクリプタ情報を読み出す。
S13：ディスクリプタ制御部３６２は転送開始指示と共に読み出したディスクリプタ情報をメモリアクセス部３６３に出力する。
S14：メモリアクセス部３６３は転送開始指示と同時に、領域検出部３５１にDMAC_2のＤＭＡＣ起動フラグ信号をアサートする。これが図１０のステップS102に対応する。
S15：領域検出部３５１はDMAC_2のスタートアドレスとエンドアドレスを更新し、領域比較部３５３にスタートアドレス信号、エンドアドレス信号及びアドレス更新パルス信号を出力する。これが図１０のステップS103に対応する。
S16：領域比較部３５３は、起動中のDMAC_1及び他のDMACとDMAC_2のメモリアクセス領域を比較する。なお、領域比較部３５３はDMAC_2が起動中に限りDMAC_2のスタートアドレスとエンドアドレスを保持している。
S17：メモリアクセス領域が重複していなければ、領域比較部３５３は転送許可信号をDMAC_2に出力する。これが図１０のステップS109に対応する。
S18：メモリアクセス部３６３はメモリアービタ３７に対しデータ転送を開始する。
S19：DMAC_1のメモリアクセス部３６３はデータ転送が終了することでDMAC_1のＤＭＡＣ起動フラグ信号をディアサートする。
S20：領域検出部３５１は領域比較部３５３に対しDMAC_1のスタートアドレスとエンドアドレスをクリアする。これにより、領域比較部３５３はDMAC_1のスタートアドレスとエンドアドレスの保持を終了する。
S21：DMAC_2のメモリアクセス部３６３はデータ転送が終了することでDMAC_2のＤＭＡＣ起動フラグ信号をディアサートする。これが図１０のステップS112に対応する。
S22：領域検出部３５１は領域比較部３５３に対しDMAC_2のスタートアドレスとエンドアドレスをクリアする。これが図１０のステップS113に対応する。これにより、領域比較部３５３はDMAC_2のスタートアドレスとエンドアドレスの保持を終了する。
【００７１】
図１２は、不正アクセスのケースのDMAC_1、DMAC_2及び不正アクセス検出部３５のシーケンス図の一例を示す。S1〜S16までは図１１と同様になる。
S1：起動指示部３８２がDMAC_1のレジスタ部３６１に起動指示を出力する。
S2：レジスタ部３６１はディスクリプタ制御部３６２に起動指示を出力する。
S3：ディスクリプタ制御部３６２はメモリ４１のディスクリプタ領域からディスクリプタ情報を読み出す。
S4：ディスクリプタ制御部３６２は転送開始指示と共に読み出したディスクリプタ情報をメモリアクセス部３６３に出力する。
S5：メモリアクセス部３６３は転送開始指示と同時に、領域検出部３５１にDMAC_1のＤＭＡＣ起動フラグ信号をアサートする。
S6：領域検出部３５１はDMAC_１のスタートアドレスとエンドアドレスを更新し、領域比較部３５３にスタートアドレス信号、エンドアドレス信号及びアドレス更新パルス信号を出力する。
S7：領域比較部３５３は、起動中のDMACとDMAC_1のメモリアクセス領域を比較する。なお、領域比較部３５３はDMAC_1が起動中に限りDMAC_1のスタートアドレスとエンドアドレスを保持している。
S8：メモリアクセス領域が重複していなければ、領域比較部３５３は転送許可信号をDMAC_1に出力する。
S9：メモリアクセス部３６３はメモリアービタ３７に対しデータ転送を開始する。
S10：次に、起動指示部３８２がDMAC_2のレジスタ部３６１に起動指示を出力する。これが図１０のステップS100に対応する。
S11：レジスタ部３６１はディスクリプタ制御部３６２に起動指示を出力する。
S12：ディスクリプタ制御部３６２はメモリ４１のディスクリプタ領域からディスクリプタ情報を読み出す。
S13：ディスクリプタ制御部３６２は転送開始指示と共に読み出したディスクリプタ情報をメモリアクセス部３６３に出力する。
S14：メモリアクセス部３６３は転送開始指示と同時に、領域検出部３５１にDMAC_2のＤＭＡＣ起動フラグ信号をアサートする。これが図１０のステップS102に対応する。
S15：領域検出部３５１はDMAC_2のスタートアドレスとエンドアドレスを更新し、領域比較部３５３にスタートアドレス信号、エンドアドレス信号及びアドレス更新パルス信号を出力する。これが図１０のステップS103に対応する。
S16：領域比較部３５３は、起動中のDMAC_1及び他のDMACとDMAC_2のメモリアクセス領域を比較する。ここでは不正アクセスを検出したものとする。
S17：不正を検出したので、領域比較部３５３はメモリアクセス部３６３に不正アクセス割込み信号をアサートする。これが図１０のステップS107に対応する。なお、ＣＰＵ３８への不正アクセス割込み信号と不正アクセス表示レジスタ３５２への不正アクセスＤＭＡＣＩＤ信号は図示されていない。メモリアクセス部３６３は、不正アクセス割込み信号によりＤＭＡ転送することができない。
S18：DMAC_1のメモリアクセス部３６３はデータ転送が終了することでDMAC_1のＤＭＡＣ起動フラグ信号をディアサートする。
S19：領域検出部３５１は領域比較部３５３に対しDMAC_1のスタートアドレスとエンドアドレスをクリアする。領域比較部３５３は不正アクセス表示レジスタ３５２に対し、DMAC_1のスタートアドレスとエンドアドレスを保持させたままにする。DMAC_2のスタートアドレスとエンドアドレスは保持されたままである。
【００７２】
以上説明したように、本実施形態の画像形成装置１００は、不正アクセス検出部３５にすべてのＤＭＡＣのアドレス情報が収集されるので、制御ソフトが判定することなくメモリアクセス領域の重複を検出できる。また、ＤＭＡＣは転送許可信号によりメモリアクセスできるので、不正アクセスが検出された場合は、メモリ４１の上書きを未然に防止できる。
【符号の説明】
【００７３】
２０    エンジン部
３０    コントローラ部
３５    不正アクセス検出部
３６    ＤＭＡＣ
３７    メモリアービタ
３８    ＣＰＵ
４１    メモリ
１００  画像形成装置
３５１  領域検出部
３５２  不正アクセス表示レジスタ
３５３  領域比較部
３６１  レジスタ部
３６２  ディスクリプタ制御部
３６３  メモリアクセス部
【先行技術文献】
【特許文献】
【００７４】
【特許文献１】特開２０１１−１４５８４１号公報
【特許文献２】特開２００３−２８１０７６号公報
【図１】
2014081805.tif 000003
【図２】
2014081805.tif 000004
【図３】
2014081805.tif 000005
【図４】
2014081805.tif 000006
【図５】
2014081805.tif 000007
【図６】
2014081805.tif 000008
【図７】
2014081805.tif 000009
【図８】
2014081805.tif 000010
【図９】
2014081805.tif 000011
【図１０】
2014081805.tif 000012
【図１１】
2014081805.tif 000013
【図１２】
2014081805.tif 000014