(57)【要約】【課題】メモリ制御装置の内部における調停処理を使用するメモリ制御の高速化を実現する。【解決手段】メモリ制御装置は、転送ＩＤを付して所定の領域毎に書込み制御データ及び読出し制御データを生成し、前記調停キューに格納された前記書込み制御データと前記読出し制御データとを対象として処理の優先順位を決定する調停を実行し、Ａｃｔｉｖａｔｅコマンドの実行に応じて、バースト回数を加算し、Ｒｅａｄ又はＷｒｉｔｅコマンドの実行に応じてバースト回数をデクリメントすることによって残存するバースト回数である残バースト回数を更新し、前記調停は、前記残バースト回数が予め設定された閾値未満となった場合には、前記バースト回数が多いトランザクションを実行するためのＡｃｔｉｖａｔｅコマンドの優先順位を上げる。【選択図】図１
2020109642.tif 000002
【特許請求の範囲】
【請求項１】
メモリを制御するためのメモリ制御装置であって、
書込みデータを含み、前記メモリへのデータの書込みを要求する書込み要求データセットと、前記メモリからのデータの読出しを要求する読出し要求データセットとを受信し、前記読出しの要求に応じて読み出された読出しデータを送信する送受信部と、
前記書込み要求データセットを使用し、前記書込みデータの書込み先を前記メモリ内の所定の領域毎に分割して転送ＩＤを付して前記所定の領域毎に書込み制御データを生成し、前記読出し要求データセットを使用し、前記読出しデータの読出し先を前記所定の領域毎に分割して転送ＩＤを付して前記所定の領域毎に読出し制御データを生成するデータ処理部と、
前記書込みデータを一時的に格納する書込みバッファと、
前記書込み制御データと前記読出し制御データとを格納する調停キューと、
前記調停キューに格納された前記書込み制御データと前記読出し制御データとを対象として処理の優先順位を決定する調停を実行する調停部と、
前記優先順位に基づいて選択された前記書込み制御データを使用して前記書込みバッファに格納された前記書込みデータを前記メモリに書き込み、前記優先順位に基づいて選択された前記読出し制御データを使用して前記メモリから読み出された読出しデータを一時的に読出しバッファに格納するためのコマンドを生成するコマンド生成部と、
トランザクションを実行するためのＡｃｔｉｖａｔｅコマンドの実行に応じて、前記トランザクションを完了するためのＲｅａｄコマンド又はＷｒｉｔｅコマンドのバースト回数を加算し、前記Ｒｅａｄコマンド又は前記Ｗｒｉｔｅコマンドの実行に応じてバースト回数をデクリメントすることによって残存するバースト回数である残バースト回数を更新する残バースト回数管理部と、
を備え、
前記調停部は、前記残バースト回数が予め設定された閾値未満となった場合には、前記バースト回数が多いトランザクションを実行するためのＡｃｔｉｖａｔｅコマンドの優先順位を上げるメモリ制御装置。
【請求項２】
請求項１記載のメモリ制御装置であって、
前記調停部は、前記残バースト回数が予め設定された閾値未満となった場合には、前記バースト回数が最も多いトランザクションを実行するためのＡｃｔｉｖａｔｅコマンドを選択するメモリ制御装置。
【請求項３】
請求項１又は２に記載のメモリ制御装置であって、さらに、
前記メモリの制御における処理の優先性を表す処理優先性データを生成する処理優先性データ生成部と、
前記処理優先性データを所定の時間経過毎に変動させる変動処理部と、
を備え、
前記データ処理部は、前記書込み要求データセットと前記処理優先性データとを使用し、前記書込みデータの書込み先を前記メモリ内の所定の領域毎に分割して前記処理優先性データと転送ＩＤを付して前記所定の領域毎に書込み制御データを生成し、前記読出し要求データセットと前記処理優先性データとを使用し、前記読出しデータの読出し先を前記所定の領域毎に分割して前記処理優先性データと転送ＩＤを付して前記所定の領域毎に読出し制御データを生成し、
前記調停部は、
前記変動によって前記処理優先性データが予め設定されている閾値を通過した場合には、前記処理優先性データを含んでいる前記書込み制御データ又は前記読出し制御データをタイムアウト要求として優先順位を上げ、
前記残バースト回数が予め設定された閾値未満となった場合には、前記タイムアウト要求の中で前記バースト回数が最も多いトランザクションを実行するためのＡｃｔｉｖａｔｅコマンドを選択するメモリ制御装置。
【請求項４】
請求項３記載のメモリ制御装置であって、
前記書込み要求データセット及び前記読出し要求データセットは、通信の優先性を表す通信優先性データを含み、
前記処理優先性データは、前記通信優先性データを使用して生成されるメモリ制御装置。
【請求項５】
請求項４記載のメモリ制御装置であって、
前記メモリは、複数のバンクを有し、前記所定の領域は、前記複数のバンクのうちのいずれか一つのバンク内の行であるメモリ制御装置。
【請求項６】
請求項５記載のメモリ制御装置であって、さらに、
入力された書込み要求データセットの書込み先のアドレス又は読出し要求データセットの読出し先のアドレスと少なくとも一部が重複しているアドレスへのアクセスを要求している書込み要求データセット又は読出し要求データセットである重複アクセス要求データを検出し、前記複数のバンクのうちで前記重複アクセス要求データがアクセスを要求しているバンクを特定する重複アドレス検出部を備え、
前記調停部は、前記特定されたバンクの調停を停止するメモリ制御装置。
【請求項７】
画像形成装置であって、
プロセッサと、
メモリと、
請求項４乃至６のいずれか１項に記載のメモリ制御装置と、
色材を使用して形成されるドット形成状態を表すピクセルデータを使用して印刷媒体上に画像を形成する画像形成部と、
を備え、
前記画像形成部は、前記通信優先性データを含む前記読出し要求データセットを使用して、前記ピクセルデータを前記メモリから読み出す画像形成装置。
【請求項８】
画像読取装置であって、
プロセッサと、
メモリと、
請求項４乃至６のいずれか１項に記載のメモリ制御装置と、
画像を読取ることによって画像データを生成する画像読取部と、
を備え、
前記画像読取部は、前記通信優先性データを含む前記書込み要求データセットを使用して、前記生成された画像データを前記メモリに書き込む画像読取装置。
【請求項９】
画像送信装置であって、
プロセッサと、
メモリと、
請求項４乃至６のいずれか１項に記載のメモリ制御装置と、
通信対象となる画像データを使用して画像を送信する画像送信部と、
を備え、
前記画像送信部は、前記通信優先性データを含む前記読出し要求データセットを使用して、前記画像データを前記メモリから読み出す画像送信装置。
【請求項１０】
メモリを制御するためのメモリ制御方法であって、
書込みデータを含み、前記メモリへのデータの書込みを要求する書込み要求データセットと、前記メモリからのデータの読出しを要求する読出し要求データセットとを受信し、前記読出しの要求に応じて読み出された読出しデータを送信し、
前記書込み要求データセットを使用し、前記書込みデータの書込み先を前記メモリ内の所定の領域毎に分割して転送ＩＤを付して前記所定の領域毎に書込み制御データを生成し、前記読出し要求データセットを使用し、前記読出しデータの読出し先を前記所定の領域毎に分割して転送ＩＤを付して前記所定の領域毎に読出し制御データを生成し、
前記書込みデータを一時的に書込みバッファに格納し、
前記書込み制御データと前記読出し制御データとを調停キューに格納し、
前記調停キューに格納された前記書込み制御データと前記読出し制御データとを対象として処理の優先順位を決定する調停を実行し、
前記優先順位に基づいて選択された前記書込み制御データを使用して前記書込みバッファに格納された前記書込みデータを前記メモリに書き込み、前記優先順位に基づいて選択された前記読出し制御データを使用して前記メモリから読み出された読出しデータを一時的に読出しバッファに格納するためのコマンドを生成し、
トランザクションを実行するためのＡｃｔｉｖａｔｅコマンドの実行に応じて、前記トランザクションを完了するためのＲｅａｄコマンド又はＷｒｉｔｅコマンドのバースト回数を加算し、前記Ｒｅａｄコマンド又は前記Ｗｒｉｔｅコマンドの実行に応じてバースト回数をデクリメントすることによって残存するバースト回数である残バースト回数を更新し、
前記調停は、前記残バースト回数が予め設定された閾値未満となった場合には、前記バースト回数が多いトランザクションを実行するためのＡｃｔｉｖａｔｅコマンドの優先順位を上げるメモリ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリ制御装置、メモリ制御方法及び画像形成装置プログラムに関する。
【背景技術】
【０００２】
画像形成装置（たとえばプリンター、多機能プリンター、又は複合機（Ｍｕｌｔｉｆｕｎｃｔｉｏｎ  Ｐｅｒｉｐｈｅｒａｌ））は、画像処理等に用いるメモリとしてＳＤＲＡＭ  （Ｓｙｎｃｈｒｏｎｏｕｓ  Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）を利用することが多くなっている。ＳＤＲＡＭは、高速な入出力インターフェースを備えている。近年では、さらに、ＤＤＲ  ＳＤＲＡＭ（Ｄｏｕｂｌｅ−Ｄａｔａ−Ｒａｔｅ  Ｓｙｎｃｈｒｏｎｏｕｓ  Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）が実現化され、インターフェース仕様としてのＡＸＩ（Ａｄｖａｎｃｅｄ  ｅＸｔｅｎｓｉｂｌｅ  Ｉｎｔｅｒｆａｃｅ）の導入に伴い、入出力インターフェースの高速化が進んでいる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１７−１５７２１７号公報
【特許文献２】特開２００７−７２９３０号公報
【特許文献３】特開２０１０−１３４６２８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来技術では、メモリ制御装置の内部における調停処理については十分な検討がなされていなかった。
【０００５】
本発明は、このような状況に鑑みてなされたものであり、メモリ制御装置の内部における調停処理を使用するメモリ制御の高速化を実現することを目的とする。
【課題を解決するための手段】
【０００６】
本発明のメモリ制御装置は、書込みデータを含み、前記メモリへのデータの書込みを要求する書込み要求データセットと、前記メモリからのデータの読出しを要求する読出し要求データセットとを受信し、前記読出しの要求に応じて読み出された読出しデータを送信する送受信部と、前記書込み要求データセットを使用し、前記書込みデータの書込み先を前記メモリ内の所定の領域毎に分割して転送ＩＤを付して前記所定の領域毎に書込み制御データを生成し、前記読出し要求データセットを使用し、前記読出しデータの読出し先を前記所定の領域毎に分割して転送ＩＤを付して前記所定の領域毎に読出し制御データを生成するデータ処理部と、前記書込みデータを一時的に格納する書込みバッファと、前記書込み制御データと前記読出し制御データとを格納する調停キューと、前記調停キューに格納された前記書込み制御データと前記読出し制御データとを対象として処理の優先順位を決定する調停を実行する調停部と、前記優先順位に基づいて選択された前記書込み制御データを使用して前記書込みバッファに格納された前記書込みデータを前記メモリに書き込み、前記優先順位に基づいて選択された前記読出し制御データを使用して前記メモリから読み出された読出しデータを一時的に読出しバッファに格納するためのコマンドを生成するコマンド生成部と、トランザクションを実行するためのＡｃｔｉｖａｔｅコマンドの実行に応じて、前記トランザクションを完了するためのＲｅａｄコマンド又はＷｒｉｔｅコマンドのバースト回数を加算し、前記Ｒｅａｄコマンド又は前記Ｗｒｉｔｅコマンドの実行に応じてバースト回数をデクリメントすることによって残存するバースト回数である残バースト回数を更新する残バースト回数管理部とを備え、前記調停部は、前記残バースト回数が予め設定された閾値未満となった場合には、前記バースト回数が多いトランザクションを実行するためのＡｃｔｉｖａｔｅコマンドの優先順位を上げる。
【０００７】
本発明のメモリ制御方法は、書込みデータを含み、前記メモリへのデータの書込みを要求する書込み要求データセットと、前記メモリからのデータの読出しを要求する読出し要求データセットとを受信し、前記読出しの要求に応じて読み出された読出しデータを送信し、前記書込み要求データセットを使用し、前記書込みデータの書込み先を前記メモリ内の所定の領域毎に分割して転送ＩＤを付して前記所定の領域毎に書込み制御データを生成し、前記読出し要求データセットを使用し、前記読出しデータの読出し先を前記所定の領域毎に分割して転送ＩＤを付して前記所定の領域毎に読出し制御データを生成し、前記書込みデータを一時的に書込みバッファに格納し、前記書込み制御データと前記読出し制御データとを調停キューに格納し、前記調停キューに格納された前記書込み制御データと前記読出し制御データとを対象として処理の優先順位を決定する調停を実行し、前記優先順位に基づいて選択された前記書込み制御データを使用して前記書込みバッファに格納された前記書込みデータを前記メモリに書き込み、前記優先順位に基づいて選択された前記読出し制御データを使用して前記メモリから読み出された読出しデータを一時的に読出しバッファに格納するためのコマンドを生成し、トランザクションを実行するためのＡｃｔｉｖａｔｅコマンドの実行に応じて、前記トランザクションを完了するためのＲｅａｄコマンド又はＷｒｉｔｅコマンドのバースト回数を加算し、前記Ｒｅａｄコマンド又は前記Ｗｒｉｔｅコマンドの実行に応じてバースト回数をデクリメントすることによって残存するバースト回数である残バースト回数を更新し、前記調停は、前記残バースト回数が予め設定された閾値未満となった場合には、前記バースト回数が多いトランザクションを実行するためのＡｃｔｉｖａｔｅコマンドの優先順位を上げる。
【発明の効果】
【０００８】
本発明によれば、メモリ制御装置の内部における調停処理を使用するメモリ制御の高速化を実現するための技術を提供することができる。
【図面の簡単な説明】
【０００９】
【図１】本開示の第１実施形態に係る画像形成装置１の機能構成を示すブロックダイアグラムである。
【図２】第１実施形態に係るメモリ制御部６０の機能構成を示すブロックダイアグラムである。
【図３】第１実施形態に係るメモリ制御回路６００の機能構成を示すブロックダイアグラムである。
【図４】第１実施形態に係るデータ制御部６２０の機能構成を示すブロックダイアグラムである。
【図５】第１実施形態に係る内部調停部６２３の機能構成を示すブロックダイアグラムである。
【図６】第１実施形態に係るバンク内調停部のコマンド要求の状態遷移図である。
【図７】第１実施形態に係るバンク内調停処理手順の内容を示すフローチャートである。
【図８】第１実施形態に係る要求ピックアップ処理の内容を示すフローチャートである。
【図９】第１実施形態に係るメモリ制御回路６００におけるデータ読出し処理に関する機能構成を示すブロックダイアグラムである。
【図１０】第１実施形態に係る順序管理部６７１の内容を示すブロックダイアグラムである。
【図１１】第１実施形態に係るデータ読出し処理手順の内容を示すフローチャートである。
【図１２】第１実施形態に係る転送ＩＤ登録処理の内容を示すフローチャートである。
【図１３】第１実施形態に係る読出しデータ出力処理の内容を示すフローチャートである。
【図１４】第１実施形態に係るメモリ制御回路６００におけるデータ書込み処理に関する機能構成を示すブロックダイアグラムである。
【図１５】第１実施形態に係るデータ書込み処理手順の内容を示すフローチャートである。
【図１６】第１実施形態に係るアドレス監視処理手順の内容を示すフローチャートである。
【図１７】第２実施形態に係る内部調停部６２３ａの機能構成を示すブロックダイアグラムである。
【図１８】第２実施形態に係るバンク間制御部６２３４ａの制御方向ステータスの状態遷移図である。
【図１９】第２実施形態に係るｔＦＡＷ制約の内容を示すタイミングチャートである。
【図２０】ｔＦＡＷ制約に起因するデータバスのストール状態を示すタイミングチャートである。
【図２１】第２実施形態に係る要求ピックアップ処理の内容を示すフローチャートである。
【図２２】第２実施形態に係る書込み要求ピックアップ処理（ステップＳ４４ａ）及び読出し要求ピックアップ処理の内容を示すフローチャートである。
【図２３】第３実施形態に係る画像形成装置の機能構成を示すブロックダイアグラムである。
【図２４】第３実施形態に係る内部調停部の機能構成を示すブロックダイアグラムである。
【図２５】第３実施形態に係るタイムアウトノード調停処理の内容を示すフローチャートである。
【図２６】第３実施形態に係るバンク間調停処理（方向制御（ＩＤＬＥ時））の内容を示すフローチャートである。
【図２７】第３実施形態に係るバンク間調停処理（方向制御（ＷＲＩＴＩＮＧ時：タイムアウトノード不存在の場合））の内容を示すフローチャートである。
【図２８】第３実施形態に係るバンク間調停処理（方向制御（ＷＲＩＴＩＮＧ時：タイムアウトノード存在の場合））の内容を示すフローチャートである。
【図２９】第３実施形態に係るＲＥＡＤ切替処理の内容を示すフローチャートである。
【図３０】第３実施形態に係るバンク間調停処理（方向制御（ＲＥＡＤＩＮＧ時：タイムアウトノード不存在の場合））の内容を示すフローチャートである。
【図３１】第３実施形態に係るバンク間調停処理（方向制御（ＲＥＡＤＩＮＧ時：タイムアウトノード存在の場合））の内容を示すフローチャートである。
【図３２】第３実施形態に係るＷＲＩＴＥ切替処理の内容を示すフローチャートである。
【図３３】第３実施形態に係るバンク間調停処理（方向制御（ＲＥＡＤ２ＷＲＩＴＥ時））の内容を示すフローチャートである。
【図３４】第３実施形態に係るバンク間調停処理（方向制御（ＷＲＩＴＥ２ＲＥＡＤ時））の内容を示すフローチャートである。
【発明を実施するための形態】
【００１０】
以下、本発明を実施するための形態（以下、「実施形態」という）を、図面を参照して説明する。
【００１１】
画像形成装置は、多くの機能を有し、高解像度化に伴って取り扱うデータ量も増大しつつあり、大容量の高速メモリ（たとえばＤＤＲメモリ）を採用するものがある。本願発明者は、高速メモリの読み書きにおけるレイテンシの要求が機能毎に異なる点に着目し、このような観点から大容量の高速メモリの読み書きにおける効率的な調停機能を有するメモリ制御技術を創作した。本願発明者は、特にｔＦＡＷ制約に対応して効率的な調停を実現する処理手順を創作した。
【００１２】
以下、本開示を実施するための形態（以下、「実施形態」という）を、図面を参照して以下の順序で説明する。
Ａ．第１実施形態に係る画像形成装置の機能構成：
Ｂ．第１実施形態に係るメモリ制御部の機能構成：
Ｃ．第１実施形態に係るバンク内調停処理手順：
Ｄ．第１実施形態に係るデータ読出し処理手順：
Ｅ．第１実施形態に係るデータ書込み処理手順：
Ｆ．第２実施形態に係る画像形成装置の機能構成（ｔＦＡＷ制約対応処理手順）：
Ｇ．第３実施形態に係る画像形成装置の機能構成（バンク間調停処理手順）：
Ｈ．変形例：
【００１３】
Ａ．画像形成装置の機能構成：
図１は、本開示の第１実施形態に係る画像形成装置１の機能構成を示すブロックダイアグラムである。画像形成装置１は、制御部１０と、画像処理部２０と、画像形成部３０と、記憶部４０と、画像読取部５０と、メモリ制御部６０と、これらを相互に接続するＡＸＩバス９０とを備えている。画像形成装置１は、さらに、メモリ制御部６０によって制御されるＤＤＲメモリ７０と、物理層のインターフェースとして機能するＤＤＲ物理層インターフェース８０とを備えている。画像処理部２０は、ＲＩＰ処理部２１を有している。画像形成部３０は、露光部３１を有している。ＤＤＲメモリ７０は、４つのバンク、すなわち、第１バンクＢ１と、第２バンクＢ２と、第３バンクＢ３と、第４バンクＢ４とを有している。
【００１４】
画像形成装置１は、さらに、制御部１０に接続されている第１ＡＸＩマスタ１０Ｍと、画像処理部２０に接続されている第２ＡＸＩマスタ２０Ｍと、画像形成部３０に接続されている第３ＡＸＩマスタ３０Ｍと、記憶部４０に接続されている第４ＡＸＩマスタ４０Ｍと、画像読取部５０に接続されている第５ＡＸＩマスタ５０Ｍと、メモリ制御部６０に接続されているＮｅｔｗｏｒｋ  Ｉｎｔｅｒｃｏｎｎｅｃｔ部（ＮＩＣ部（たとえばＡＭＢＡ  Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）とも呼ばれる。）６０Ｍとを備えている。
【００１５】
第１ＡＸＩマスタ１０Ｍ、第２ＡＸＩマスタ２０Ｍ、第３ＡＸＩマスタ３０Ｍ、第４ＡＸＩマスタ４０Ｍ、第５ＡＸＩマスタ５０Ｍ及びＮＩＣ部６０Ｍは、Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ（ＤＭＡ）制御機能を有し、それぞれ複数のＡＸＩ＿ＩＤを使用することができる。ただし、本実施形態では、第１ＡＸＩマスタ１０Ｍ、第２ＡＸＩマスタ２０Ｍ、第３ＡＸＩマスタ３０Ｍ、第４ＡＸＩマスタ４０Ｍ、第５ＡＸＩマスタ５０Ｍ及びＮＩＣ部６０Ｍは、説明を分かりやすくするために、それぞれ１つずつのＡＸＩ＿ＩＤを使用するものとする。ＡＸＩ＿ＩＤは、管理ＩＤとも呼ばれる。
【００１６】
ＡＸＩバス９０は、ＡＸＩプロトコルに従って各機器間の通信を可能とする。ＡＸＩバス９０は、ＡＸＩプロトコルに基づいてキューオーエス（Ｑｕａｌｉｔｙ  ｏｆ  Ｓｅｒｖｉｃｅ：ＱＯＳ）値をサポートしている。この例では、ＱＯＳ値は、値０乃至３の２ビットのデータとして通信の優先度を表している。具体的には、たとえばＱＯＳ値０は、専用帯域の使用の許可を示している。ＱＯＳ値１は、高優先度を示し、ＱＯＳ値２は、中優先度を示し、ＱＯＳ値３は、低優先度を示している。ＱＯＳ値は、通信優先性データとも呼ばれる。
【００１７】
制御部１０は、ＭＰＵ（Ｍｉｃｒｏ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）やＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）等のプロセッサを備えている。また、制御部１０は、各種Ｉ／Ｏ、ＵＳＢ（ユニバーサル・シリアル・バス）、バス、その他ハードウェア等のインターフェースに関連するコントローラ機能を備えている。制御部１０は、画像形成装置１の全体を制御する。
【００１８】
記憶部４０は、非一時的な記憶媒体であるハードディスクドライブやフラッシュメモリー等からなる記憶装置で、それぞれ制御部１０が実行する処理の制御プログラムやデータを記憶する。
【００１９】
画像読取部５０は、原稿から画像を読み取って（すなわちスキャンして）デジタルデータである画像データを生成する。画像読取部５０は、第５ＡＸＩマスタ５０ＭとＡＸＩバス９０とＮＩＣ部６０Ｍとメモリ制御部６０とを順に介して、ＤＤＲメモリ７０に画像データを書き込むことができる。第５ＡＸＩマスタ５０Ｍは、ＮＩＣ部６０Ｍのマスタモジュールとして機能する。ＮＩＣ部６０Ｍは、第５ＡＸＩマスタ５０Ｍのスレーブモジュールとして機能する。ＮＩＣ部６０Ｍは、メモリ制御部６０のマスタモジュールとして機能する。メモリ制御部６０は、ＮＩＣ部６０ＭのＡＸＩスレーブモジュールとして機能する。
【００２０】
第５ＡＸＩマスタ５０Ｍは、制御部１０からの指令に応じて、ＤＭＡ制御機能によって、ＱＯＳ値０を付して画像データを含む書込み要求パケットをＡＸＩバス９０に送信する。ＡＸＩバス９０は、第５ＡＸＩマスタ５０Ｍからの指令に応じて、帯域及びレイテンシを確保し、ＱＯＳ値０が付され、書込み対象である画像データを含む書込み要求パケットを、帯域を使用してＮＩＣ部６０Ｍに送信する。
【００２１】
ＮＩＣ部６０Ｍは、書込み要求パケットに応じてメモリ制御部６０を使用してＤＤＲメモリ７０に画像データを書き込む。これにより、画像読取部５０は、ＤＤＲメモリ７０に画像データを書き込むことができる。書込み要求パケットは、詳細については後述するが、書込み要求データセットとも呼ばれる。
【００２２】
画像処理部２０は、ＤＤＲメモリ７０から画像データを読出して画像データを受信することができる。具体的には、第２ＡＸＩマスタ２０Ｍは、画像処理部２０からの指令に応じて、ＤＭＡ制御機能によってＱＯＳ値３が付された読出し要求データセットをＡＸＩバス９０に送信する。ＡＸＩバス９０は、帯域を使用することなく、ＱＯＳ値３が付された読出し要求データセットをＮＩＣ部６０Ｍに送信する。
【００２３】
ＮＩＣ部６０Ｍは、読出し要求データセットに応じてメモリ制御部６０を使用してＤＤＲメモリ７０から画像データを読出してＡＸＩバス９０に送信する。ＡＸＩバス９０は、画像データを含む読出しデータパケットを第２ＡＸＩマスタ２０Ｍに送信する。
【００２４】
画像処理部２０のＲＩＰ（ｒａｓｔｅｒ  ｉｍａｇｅ  ｐｒｏｃｅｓｓｏｒ）処理部２１は、第２ＡＸＩマスタ２０Ｍから受信した画像データに対してＲＩＰ処理を実行する。これにより、ＲＩＰ処理部２１は、各色のピクセルマップデータであるピクセルデータを生成することができる。ＲＩＰ処理には、色変換処理と、ハーフトーン処理とが含まれている。
【００２５】
次に画像処理部２０は、第２ＡＸＩマスタ２０ＭとＡＸＩバス９０とＮＩＣ部６０Ｍとメモリ制御部６０とを順に介して、ＤＤＲメモリ７０にピクセルデータを書き込むことができる。これにより、画像形成装置１は、ピクセルデータを一時的に保存することができる。
【００２６】
画像形成部３０は、画像処理部２０と同様に、メモリ制御部６０とＮＩＣ部６０ＭとＡＸＩバス９０と第３ＡＸＩマスタ３０Ｍとを順に介して、ＤＤＲメモリ７０からピクセルデータを読出してピクセルデータを受信することができる。ただし、第３ＡＸＩマスタ３０Ｍは、ＱＯＳ値０を使用してＤＤＲメモリ７０からの読出し処理を実行する。
【００２７】
画像形成部３０の露光部３１は、各色のピクセルデータにハーフトーン処理を実行してドットデータを生成する。ドットデータは、色材を使用して印刷媒体上に形成されるドット形成状態を表すためのデータである。露光部３１は、ドットデータに基づいて各色の現像ドラム（図示略）に対して露光処理を実行することができる。画像形成部３０は、露光処理に引き続き、現像処理や定着処理を実行して画像形成処理を実行することができる。
【００２８】
ＡＸＩバス９０は、ＡＸＩプロトコルに基づいてキューオーエス（Ｑｕａｌｉｔｙ  ｏｆ  Ｓｅｒｖｉｃｅ：ＱＯＳ）値をサポートしている。ＡＸＩバス９０は、ＱＯＳ値を使用して画像データやピクセルデータの送受信のために帯域制御や優先制御を実行することができる。これにより、画像形成装置１は、効率的で信頼性の高い内部通信を実現することができる。
【００２９】
具体的には、第５ＡＸＩマスタ５０Ｍは、画像読取時においてＤＤＲメモリ７０に画像データを書き込む際には、画像読取部５０からＤＤＲメモリ７０への画像データの送信のための帯域及びレイテンシをＡＸＩバス９０に確保させることができる。これにより、画像形成装置１は、帯域を使用して画像データを送信することができるので、画像読取処理において順次生成される画像データの過度の送信遅延に起因するデータ廃棄（データ欠落）を排除することができる。
【００３０】
一方、画像処理部２０は、画像処理時においてＤＤＲメモリ７０から画像データを読出して受信する際には、一時的に低速となっても大きな問題とはならない。画像データは、ＤＤＲメモリ７０に格納されているので、画像データの過度の送信遅延があっても画像データが失われることはないからである。画像処理部２０は、画像処理後においてピクセルデータをＤＤＲメモリ７０に書き込む際にも、帯域及びレイテンシをＡＸＩバス９０に確保させる必要がない。
【００３１】
これに対して、制御部１０は、画像形成時においてＤＤＲメモリ７０からピクセルデータを読出して画像形成部３０の露光部３１に送信する際には、固定した速度、すなわち適切なレイテンシでピクセルデータを送信することが望まれる。これにより、画像形成装置１は、帯域を使用してピクセルデータを送信することができるので、画像形成処理において露光部３１に順次必要とされるピクセルデータの過度の送信遅延に起因するドット抜け（画像欠落）を排除することができる。
【００３２】
このように、画像形成装置１は、メモリ制御部６０と、他の機器（すなわち、制御部１０、画像処理部２０、画像形成部３０と、記憶部４０及び画像読取部５０）との間の通信においては、ＱＯＳ値を使用して効率的で信頼性の高い内部通信を実現することができる。
【００３３】
しかしながら、本願発明者は、メモリ制御部６０の内部処理に関しては、優先制御等について十分に検討されていない点に着目した。本願発明者は、メモリ制御部６０の制御対象となるメモリの容量拡大と読み書き速度の高速化の要請とを考慮し、メモリ制御部６０の内部処理の効率化について検討した。
Ｂ．メモリ制御部の機能構成：
【００３４】
図２は、第１実施形態に係るメモリ制御部６０の機能構成を示すブロックダイアグラムである。メモリ制御部６０は、通信調停部７００と、通信制御部８００と、メモリ制御回路６００とを備えている。メモリ制御部６０は、ＤＤＲメモリ７０へのデータの書込みと、ＤＤＲメモリ７０からのデータの読出しとを制御する。この例では、メモリ制御部６０は、ＡＸＩ仕様に基づいて、読出しは、読出しアドレスチャネル（Ｒ／Ａｄｄｒｅｓｓ）と、読出しデータチャネル（Ｒ／Ｄａｔａ）とを使用し、書込みは、書込みアドレスチャネル（Ｗ／Ａｄｄｒｅｓｓ）と、書込みデータチャネル（Ｗ／Ｄａｔａ）と、書込み応答チャネル（Ｗ／Ｒｅｓｐｏｎｓｅ）とを使用してＮＩＣ部６０Ｍと通信する。以下では、画像読取部５０からＤＤＲメモリ７０に画像データを書き込む処理を第１の例として説明する。
【００３５】
画像データを書き込む処理では、メモリ制御部６０は、書込みアドレスチャネル（Ｗ／Ａｄｄｒｅｓｓ）と、書込みデータチャネル（Ｗ／Ｄａｔａ）と、書込み応答チャネル（Ｗ／Ｒｅｓｐｏｎｓｅ）とを使用してＮＩＣ部６０Ｍと通信を行う。具体的には、メモリ制御部６０は、書込みアドレスチャネル（Ｗ／Ａｄｄｒｅｓｓ）を使用して制御データをパケット（制御パケットとも呼ばれる。）のような形で受信し、書込みデータチャネル（Ｗ／Ｄａｔａ）を使用して画像データをパケット（データパケットとも呼ばれる。）のような形で受信し、画像データの最終パケットの受信に応じて書込み応答チャネル（Ｗ／Ｒｅｓｐｏｎｓｅ）を使用して書込み応答信号をＮＩＣ部６０Ｍに送信する。制御データには、アドレスとＱＯＳ値とＡＸＩ＿ＩＤとが含まれる。書込み要求パケットは、書込みアドレスチャネル（Ｗ／Ａｄｄｒｅｓｓ）を使用して送信される制御データと、書込みデータチャネル（Ｗ／Ｄａｔａ）を使用して送信される画像データとの組み合わせであり、書込み要求データセットとも呼ばれる。
【００３６】
通信調停部７００は、ＤＤＲメモリ７０へのデータの書込み要求とデータの読出し要求との間の通信調停を実行する。ＤＤＲメモリ７０へのデータの書込みとデータの読出しは同時には実行できない一方、ＮＩＣ部６０Ｍは、書込み要求と読出し要求とを独立して調停するので、メモリ制御部６０は、書込み要求パケットと読出し要求パケットとを同時に受信することがあるからである。これにより、メモリ制御部６０は、データの書込みとデータの読出しが同時には実行できないＤＤＲメモリ７０の制御を行いつつ、ＮＩＣ部６０Ｍからの書込み要求パケットと読出し要求パケットの同時受信を可能としている。
【００３７】
通信制御部８００は、パケット受信部８１０と、分岐部８２０と、ＱＯＳ変換部８３０とを備えている。パケット受信部８１０は、通信調停部７００からパケットを受信し、制御データと書込みデータとを分岐部８２０に送信する。パケット受信部８１０は、さらに、制御パケットからＱＯＳ値を取り出して、ＱＯＳ変換部８３０に送信する。ＱＯＳ変換部８３０は、処理優先性データ生成部とも呼ばれる。通信制御部８００は、単に送受信部とも呼ばれる。
【００３８】
ＱＯＳ変換部８３０は、０乃至３の値を有するＱＯＳ値をメモリ内サイクル値（単にＤＣＶ（Ｄｕｅ  Ｃｙｃｌｅ  Ｖａｌｕｅ）値とも呼ばれる。）に変換する。具体的には、ＱＯＳ変換部８３０は、予め準備されているテーブル（図示略）を使用して、０乃至３のＱＯＳ値をそれぞれ１５０、２００、２５０及び３００のＤＣＶ値（初期値）に変換する。テーブルは、固有のＱＯＳ値の許容レイテンシ要求であるＱＯＳ値の優先性に応じて、たとえばシミュレーション等を使用して優先度の高いＱＯＳ値ほど小さなＤＣＶ値に変換できるようにすることが好ましい。ＤＣＶ値は、処理優先性データとも呼ばれる。
【００３９】
分岐部８２０は、制御パケットに含まれるアドレスを解析して処理が複数のバンク（後述、所定の領域とも呼ばれる。）や複数のＲｏｗ（行並びに所定の領域とも呼ばれる。）に渡る処理であると判断すると、バンク毎及びＲｏｗ毎のトランザクションＴに分割する。各トランザクションＴは、ＡＸＩ＿ＩＤ、書込みアドレス、書込みデータ及び転送ＩＤ（後述する書込みバッファ制御部６１１から供給）又はＡＸＩ＿ＩＤ、読出しアドレス及び転送ＩＤ（後述する読出しバッファ制御部６１２から供給）を格納している。書込みアドレスは、アドレスデータ（ＷｏｒＲ／Ａｄｄｒｅｓｓ）において書込みフラグが立っているデータである。分岐部８２０は、さらに、各トランザクションＴのＡＸＩ＿ＩＤに同一のＤＣＶ値を紐付けてメモリ制御回路６００に送信する。
【００４０】
図３は、第１実施形態に係るメモリ制御回路６００の機能構成を示すブロックダイアグラムである。メモリ制御回路６００は、バッファ制御部６１０と、データ制御部６２０と、コマンド生成部６３０と、書込み制御部６４０と、読出し制御部６５０と、バンク制御回路６６０と、順序制御部６７０と、書込みバッファ６８１と、書込みバッファテーブル６８２と、読出しバッファ６９１と、読出しバッファテーブル６９２とを備える。バッファ制御部６１０は、書込みバッファ制御部６１１と、読出しバッファ制御部６１２とを備えている。書込みバッファ６８１及び読出しバッファ６９１は、単にバッファとも呼ばれる。トランザクションＴには、書込みトランザクションＴと読出しトランザクションＴとがある。
【００４１】
書込みバッファ制御部６１１は、書込み処理用の転送ＩＤ（ＷｔｒａｎｓＩＤ）を管理し、分岐部８２０に供給する。具体的には、書込みバッファ制御部６１１は、書込みトランザクションＴ毎に空いている転送ＩＤを割り当てるとともに、書込みバッファ６８１内に格納領域を割り当て、転送ＩＤに紐づけして割り当て領域を表す情報を書込みバッファテーブル６８２に記録する。書込みバッファ制御部６１１は、割り当てられた格納領域に順次ＡＸＩマスタの書込みデータチャネル（Ｗ／Ｄａｔａ）からやってくる書込みデータを書込む。書込み制御部６４０は、書込みバッファ６８１内から書込みデータを読み出し、バンク制御回路６６０を介して、ＤＤＲメモリ７０に書込みデータが転送された後に転送ＩＤを解放する。
【００４２】
読出しバッファ制御部６１２は、読出し処理用の転送ＩＤ（ＲｔｒａｎｓＩＤ）を管理し、分岐部８２０に供給する。具体的には、読出しバッファ制御部６１２は、読出しトランザクションＴ毎に空いている転送ＩＤを割り当てるとともに、読出しバッファ６９１内に格納領域を割り当て、転送ＩＤに紐づけして割り当て領域を表す情報を読出しバッファテーブル６９２に記録する。読出し制御部６５０は、割り当てられた読出しバッファにＤＤＲメモリ７０から読み出した読出しデータを書込む。読出し制御部６５０は、読出しバッファ６９１内から読出しデータを読み出し、順序制御部６７０を介して、ＡＸＩの読出しデータチャネルでＡＸＩマスタに出力した後に転送ＩＤを解放する。
【００４３】
バッファ制御部６１０は、各トランザクションＴを受信して解析する。書込みバッファ制御部６１１は、書込みデータを書込みバッファ６８１に送信し、書込みバッファ６８１の各領域に、ＤＤＲメモリ７０への書込みまで一時的に格納する。書込みバッファ制御部６１１は、書込みバッファ６８１内における書込みデータの格納領域を特定するバッファ内アドレスを書込みバッファテーブル６８２に転送ＩＤと紐付けて格納する。一方、バッファ制御部６１０は、各トランザクションＴのうちの制御データ（アドレス及びＤＣＶ値を含む。）をデータ制御部６２０に送信する。
【００４４】
図４は、第１実施形態に係るデータ制御部６２０の機能構成を示すブロックダイアグラムである。データ制御部６２０は、デコード部６２１と、ＤＣＶカウントダウン部６２２と、内部調停部６２３（単に調停部とも呼ばれる。）と、第１バンク管理部ＢＭ１と、第２バンク管理部ＢＭ２と、第３バンク管理部ＢＭ３と、第４バンク管理部ＢＭ４とを備えている。第１バンク管理部ＢＭ１乃至第４バンク管理部ＢＭ４は、単に調停キュー又はバンク内調停キューとも呼ばれる。ＤＣＶカウントダウン部６２２は、変動処理部とも呼ばれる。
【００４５】
第１バンク管理部ＢＭ１、第２バンク管理部ＢＭ２、第３バンク管理部ＢＭ３及び第４バンク管理部ＢＭ４は、それぞれ調停キューとして機能する。第１バンク管理部ＢＭ１、第２バンク管理部ＢＭ２、第３バンク管理部ＢＭ３及び第４バンク管理部ＢＭ４は、それぞれＤＤＲメモリ７０の第１バンクＢ１、第２バンクＢ２、第３バンクＢ３及び第４バンクＢ４の読み書きの管理（制御）に利用される。第１バンク管理部ＢＭ１乃至第４バンク管理部ＢＭ４は、内部調停部６２３とともに書込み処理と読出し処理とで共有されている。ＤＤＲメモリ７０が内部データバス（図示略）を読出しと書込みで共有しているので、データ制御部６２０は、書込み処理と読出し処理とを同時に実行することができない。データ制御部６２０は、書込み処理と読出し処理とを区別しつつ、同一のロジックを使って処理して柔軟な調停を実現している。
【００４６】
デコード部６２１は、バッファ制御部６１０から受信した制御データをデコードすることによって、制御データに格納されているアドレスに基づいて第１バンク管理部ＢＭ１、第２バンク管理部ＢＭ２、第３バンク管理部ＢＭ３及び第４バンク管理部ＢＭ４のいずれか１つを選択する。この例では、第１バンク管理部ＢＭ１が選択されたものとする。
【００４７】
デコード部６２１は、制御データをデコードすることによって、さらに、Ｒｏｗ情報、Ｃｏｌ情報、ＢＬ情報（バースト回数情報）、Ｗ／Ｒ情報、ＩＤ情報及びＤＣＶ値を取得する。Ｒｏｗ情報は、データの読み書き先の行情報を示している。Ｃｏｌ情報は、データの読み書き先の列情報を示している。ＢＬ情報は、バースト長、すなわちバーストの回数（たとえば４又は８）を表す情報であり、換言すれば、１回のアクティベートでトランザクションＴを完了させるために必要なＲｅａｄ／Ｗｒｉｔｅコマンドの回数に相当する。Ｗ／Ｒ情報は、書込みと読出しのいずれかを表す情報である。ＩＤ情報は、トランザクションＴの転送ＩＤを示し、書込みバッファテーブル６８２を介して書込みバッファ６８１内の書込みデータ、あるいは読出しバッファテーブル６９２を介して読出しバッファ６９１内の読出しデータと紐付けられている。
【００４８】
デコード部６２１は、デコードされた制御データとして、Ｒｏｗ情報、Ｃｏｌ情報、ＢＬ情報、Ｗ／Ｒ情報、ＩＤ情報及びＤＣＶ値をＡｇｅ情報とともに、選択された第１バンク管理部ＢＭ１に保存する。Ａｇｅ情報は、上述の複数の情報が第１バンク管理部ＢＭ１乃至第４バンク管理部ＢＭ４に保存された順番を示すパラメータである。Ｗ／Ｒ情報が書込みを意味している制御データは、書込み制御データとも呼ばれる。Ｗ／Ｒ情報が読出しを意味している制御データは、読出し制御データとも呼ばれる。
【００４９】
図５は、第１実施形態に係る内部調停部６２３の機能構成を示すブロックダイアグラムである。内部調停部６２３は、内部調停部６２３の全体を制御するコントローラ６２３１と、４個のバンク内調停部６２３２と、重複アドレス検出部６２３３と、バンク間制御部６２３４とを備えている。コントローラ６２３１は、バンク内調停部６２３２と、重複アドレス検出部６２３３と、バンク間制御部６２３４とを制御する。
【００５０】
４個のバンク内調停部６２３２は、制御方向ステータスを考慮して、それぞれ第１バンクＢ１、第２バンクＢ２、第３バンクＢ３及び第４バンクＢ４のいずれかのバンク内（同一バンク）での書込み要求と読出し要求の調停を実行する。具体的には、たとえば制御方向ステータスが書込み処理であると仮定する。この場合には、第１バンクＢ１用のバンク内調停部６２３２は、第１バンクＢ１に対して書込み処理と読出し処理とが各１つ存在するときには、書込み処理を選択し、第２バンクＢ２用のバンク内調停部６２３２は、第２バンクＢ２に対して読出し処理のみが存在するときには、読出し処理を選択し、第３バンクＢ３用のバンク内調停部６２３２は、第３バンクＢ３に対して書込み処理のみが存在するときには、書込み処理を選択し、第４バンクＢ４用のバンク内調停部６２３２は、第４バンクＢ４に対して書込み処理と読出し処理とが各１つ存在するときには、書込み処理を選択する。なお、本処理の詳細については後述する。
【００５１】
４個のバンク内調停部６２３２は、各バンク内での調停結果をバンク間制御部６２３４に送信する。この例では、バンク間制御部６２３４は、３つの書込み処理と１つの読出し処理とを受領し、制御方向ステータスを書込み処理に維持する。このような処理によって、第１バンクＢ１、第２バンクＢ２、第３バンクＢ３及び第４バンクＢ４に対する書込み処理の要求比率が低下し、読出し処理の要求比率が増加することになる。これにより、バンク間制御部６２３４は、読出し処理の要求比率の増加に応じて、自然に制御方向ステータスを読出し処理に切り替えることになる。このような選択によって、制御方向ステータスの切替が抑制される。
【００５２】
重複アドレス検出部６２３３は、第１バンク管理部ＢＭ１乃至第４バンク管理部ＢＭ４に保存されている複数のトランザクションＴにおいて、新たに保存されたトランザクションＴと同一アドレスへのアクセスを要求しているトランザクションＴを検出する。重複アドレス検出部６２３３は、同一アドレスへのアクセスを要求している複数のトランザクションＴ（依存関係トランザクション又は依存関係制御データとも呼ばれる。）を特定して各バンク内調停部６２３２に通知する。バンク内調停部６２３２は、この通知に応じてバンク毎に順序制限モードに処理モードを遷移させる。順序制限モードの詳細については後述する（図１４乃至図１６参照）。依存関係トランザクションは、優先性に拘わらずＦＩＦＯで処理すべきトランザクションである。
【００５３】
図６は、第１実施形態に係るバンク内調停部６２３２のコマンド要求の状態遷移図である。ＤＤＲメモリ７０の第１バンクＢ１乃至第４バンクＢＭ４は、ＩＤＬＥ状態Ｓ１と、ＡＣＴ状態Ｓ２と、Ｗｒｉｔｉｎｇ状態Ｓ３と、ＡＣＴＩＶＥ状態Ｓ４と、Ｒｅａｄｉｎｇ状態Ｓ５と、ＷｒｉｔｉｎｇＡ状態Ｓ６と、Ｐｒｅｃｈａｒｇｉｎｇ状態Ｓ７と、ＲｅａｄｉｎｇＡ状態Ｓ８とを含む８個の状態を有している。ＷｒｉｔｉｎｇＡ状態Ｓ６は、Ｗｒｉｔｉｎｇに引き続きＰｒｅｃｈａｒｇｉｎｇを自動で実行する状態である。ＲｅａｄｉｎｇＡ状態Ｓ８は、Ｒｅａｄｉｎｇに引き続きＰｒｅｃｈａｒｇｉｎｇを自動で実行する状態である。
【００５４】
バンク内調停部６２３２は、次の４つの要素を使用して状態遷移を行う。第１の要素は、ｔＲＣやｔＲＰといったＤＤＲメモリ７０に関連するタイミングの制約である。第２の要素は、バンク内調停部６２３２が送信した要求がバンク間制御部６２３４での調停結果として受け付けられたことを示すＧｒａｎｔ信号である。第３の要素は、調停キューに保存されている複数のトランザクションＴの状態である。具体的には、選択されているトランザクションＴが最終バーストであるかどうかである。第４の要素は、バンク間制御部６２３４からのフィードバックＦＢである。フィードバックＦＢは、メモリ制御回路６００が書込み状態であるか読み出し状態のいずれであるかを示している。
Ｃ．バンク内調停処理手順：
【００５５】
図７は、第１実施形態に係るバンク内調停処理手順の内容を示すフローチャートである。バンク内調停処理手順では、バンク内調停部６２３２は、バンク内（同一バンク）での書込み要求と読出し要求の調停を実行する。
【００５６】
ステップＳ１０では、バンク内調停部６２３２は、ポーズ状態（ポーズオン）であるか否かを判断する。ポーズ状態は、バンク内調停部６２３２からバンク間制御部６２３４にＡｃｔｉｖａｔｅコマンドが受理され、Ａｃｔｉｖａｔｅコマンドに従属する書込み要求又は読出し要求のコマンド（Ｒｅａｄ／Ｗｒｉｔｅコマンド）の処理が完了するまでの間の状態である（図７参照）。Ａｃｔｉｖａｔｅコマンドに従属するＲｅａｄ／Ｗｒｉｔｅコマンドの処理とは、ＡｃｔｉｖａｔｅコマンドによってアクティベートされたバンクのＲｏｗに対する全てのＲｅａｄ／Ｗｒｉｔｅコマンドによって実行される処理を意味している。バンク間制御部６２３４は、Ｒｅａｄ／Ｗｒｉｔｅコマンドが実行される毎にＢＬ情報をデクリメントし、トランザクションＴを完了させるために必要なＲｅａｄ／Ｗｒｉｔｅコマンドの回数を管理する。
【００５７】
バンク内調停部６２３２は、ポーズ状態である場合には、処理をステップＳ９０に進め、ポーズ状態でない場合には、処理をステップＳ２０に進める。ステップＳ９０では、バンク内調停部６２３２は、現選択要求を維持、すなわち次の処理対象候補となっているトランザクションＴ２（図５参照）を変更することなく維持する。
【００５８】
これにより、バンク内調停部６２３２は、アクティベートされた特定のＲｏｗに対する全ての処理が完了される前に、他のＲｏｗをアクティベートし、特定のＲｏｗをアクティベートし直すことに伴う余計なＰｒｅＣｈａｒｇｅ処理及びＡｃｔｉｖａｔｅ処理を排除することができる。この結果、バンク内調停部６２３２は、効率的なＲｅａｄ／Ｗｒｉｔｅコマンドの処理を実現することができる。
【００５９】
ステップＳ２０では、バンク内調停部６２３２は、順序制限モードであるか否かを判断する。バンク内調停部６２３２は、順序制限モードである場合には、処理をステップＳ８０に進め、順序制限モードでない場合には、処理をステップＳ３０に進める。バンク内調停部６２３２は、調停することなく、すなわち全てのトランザクションＴをピックアップし、処理をステップＳ８０に進める。順序制限モードは、調停キュー固定処理に応じて設定される。調停キュー固定処理では、バンク内調停部６２３２は、特定されたバンクのキューの調停を停止させ、ＦＩＦＯの作動モードとする（図１４乃至図１６参照）。
【００６０】
ステップＳ８０では、バンク内調停部６２３２は、ＦＩＦＯの作動モードで作動し、Ａｇｅ情報に基づいて、第１バンク管理部ＢＭ１に最初に保存されたトランザクションＴを選択する。これにより、バンク内調停部６２３２は、依存関係トランザクションの依存関係を崩すことなく、各トランザクションＴを選択することができる。
【００６１】
ステップＳ３０では、たとえば第１バンク管理部ＢＭ１用のバンク内調停部６２３２は、第１バンク管理部ＢＭ１にタイムアウト要求が存在するか否かを判断する。タイムアウト要求は、第１バンク管理部ＢＭ１に長時間滞留することによって、所定の閾値未満となったＤＣＶ値を有するトランザクションＴである。ＤＣＶ値の詳細については後述する。
【００６２】
バンク内調停部６２３２は、少なくとも１つのタイムアウト要求が存在する場合には、処理をステップＳ５０に進め、タイムアウト要求が存在しない場合には、処理をステップＳ４０に進める。ステップＳ５０では、バンク内調停部６２３２は、タイムアウト要求のみをピックアップし、処理をステップＳ８０に進める。
【００６３】
ステップＳ８０では、バンク内調停部６２３２は、Ａｇｅ情報に基づいて、第１バンク管理部ＢＭ１に保存された少なくとも１つのタイムアウト要求のうちの最初に保存されたタイムアウト要求（トランザクションＴ）を選択する。具体的には、たとえば、バンク内調停部６２３２は、次の処理対象候補であるトランザクションＴ２（図５参照）の選択をトランザクションＴ３（図６参照）の選択に変更することができる。これにより、バンク内調停部６２３２は、第１バンク管理部ＢＭ１に過度に長期間滞留したトランザクションＴを優先的に処理することができる。
【００６４】
なお、詳細については後述するが、内部調停部６２３は、チェーンを形成している複数のスロットに登録されている転送ＩＤについて閾値未満のＤＣＶ値が検出された場合には、その検出された転送ＩＤのよりも先に処理されるべき上位側の転送ＩＤを有するトランザクションＴの全てを例外処理（タイムアウト要求処理）の対象とする。これにより、内部調停部６２３は、読出しデータの順序制限の要請を満たしつつ閾値未満のＤＣＶ値を有するトランザクションＴの円滑な処理を実現することができる。
【００６５】
図８は、第１実施形態に係る要求ピックアップ処理（ステップＳ４０）の内容を示すフローチャートである。要求ピックアップ処理は、制御方向ステータスに応じて、効率的な処理を実現するための書込み要求又は読出し要求をピックアップする処理である。ＤＤＲメモリ７０は、内部データバス（ＡＳＩＣなどのチップとＤＤＲメモリデバイスをつなぐ物理的な電気信号線、図示略）を読出しと書込みで共有しているので、書込み処理と読出し処理とを同時に実行することができず、データバスの方向を切り替えるためのターンアラウンドタイムの制約ペナルティーを有している。
【００６６】
よって、バンク内調停部６２３２は、前述のように制御方向ステータスに応じて書込み要求又は読出し要求をピックアップすることで読出しと書込みの切り替え抑制することによって効率的な処理を実現することができる。ただし、このような制御は、トランザクションＴの滞留の発生要因ともなっている。なお、タイマー（図示略）を装備し、一定時間の経過に応じて積極的に制御方向の切り替えを実行するようにしてもよい。
【００６７】
ステップＳ４１では、バンク内調停部６２３２は、制御方向ステータスが書込側ステータスと読出側ステータスのいずれであるかを判断する。書込側ステータスは、書込み処理が可能な書込みステータスと、読出し処理が可能な読出側ステータスから書込みステータスへの遷移中のステータスである書込み遷移ステータスとを含んでいる。読出側ステータスは、読出し処理が可能な読出側ステータスと、書込みステータスから読出側ステータスへの遷移中のステータスである読出し遷移ステータスとを含んでいる。なお、この例では、ＩＤＬＥ状態Ｓ１は、書込側ステータスに含まれる。したがって、リセット解除後の初期状態は、書込側ステータスとなる。
【００６８】
バンク内調停部６２３２は、制御方向ステータスが書込側ステータスであると判断した場合には、処理をステップＳ４２に進め、制御方向ステータスが読出側ステータスであると判断した場合には、処理をステップＳ４３に進める。
【００６９】
ステップＳ４２では、バンク内調停部６２３２は、書込み要求が存在する場合には、書込み要求をピックアップ（ステップＳ４４）し、書込み要求が存在しない場合には、読出し要求をピックアップする。これにより、バンク内調停部６２３２は、制御方向ステータスが書込側ステータスであると判断した場合には、書込み要求を優先的にピックアップすることができる。
【００７０】
ステップＳ４３では、バンク内調停部６２３２は、読出し要求が存在する場合には、読出し要求をピックアップ（ステップＳ４５）し、読出し要求が存在しない場合には、書込み要求をピックアップする。これにより、バンク内調停部６２３２は、制御方向ステータスが読出側ステータスであると判断した場合には、読出し要求を優先的にピックアップすることができる。
【００７１】
このように、要求ピックアップ処理（ステップＳ４０）は、制御方向ステータスに応じて、効率的な処理を実現するための書込み要求又は読出し要求をピックアップすることができる。
【００７２】
ステップＳ６０（図７参照）では、バンク内調停部６２３２は、現在処理中のトランザクションＴ１と同一Ｒｏｗへのアクセスを要求しているトランザクションＴが存在するか否かを判断する。バンク内調停部６２３２は、このようなトランザクションＴが存在する場合には、それをピックアップし（ステップＳ７０）、このようなトランザクションＴが存在しない場合には、処理をステップＳ８０に進める。
【００７３】
既にアクティベートされているＲｏｗへのアクセスは、ＰｒｅＣｈａｒｇｅおよびＡｃｔｉｖａｔｅの必要がない。よって、バンク内調停部６２３２は、既にアクティベートされているＲｏｗへのアクセスを要求しているトランザクションＴをピックアップすることによって効率的な処理を実現することができる。
【００７４】
ステップＳ８０では、バンク内調停部６２３２は、ピックアップされたトランザクションＴの中からＡｇｅ情報に基づいて、第１バンク管理部ＢＭ１に最初に保存されたタイムアウト要求（トランザクションＴ）を選択することができる。これにより、バンク内調停部６２３２は、効率的なＤＤＲメモリ７０の制御を実現するとともに、トランザクションＴの過度の滞留を抑制することによって効率的で信頼性のあるメモリ制御を実現することができる。
【００７５】
４個のバンク内調停部６２３２は、各バンク内での調停結果をバンク間制御部６２３４に送信する。バンク間制御部６２３４は、第１バンクＢ１、第２バンクＢ２、第３バンクＢ３及び第４バンクＢ４のバンク間（相違バンク）での書込み要求と読出し要求の調停を実行する。なお、実装上は、Ａｃｔｉｖａｔｅ＿ｆｏｒ＿Ｒｅａｄ、Ａｃｔｉｖａｔｅ＿ｆｏｒ＿Ｗｒｉｔｅ、Ｒｅａｄ、Ｗｒｉｔｅ及びＰｒｅＣｈａｒｇｅといったコマンドレベルの調停が行われることになる。
【００７６】
バンク間制御部６２３４は、第１バンクＢ１、第２バンクＢ２、第３バンクＢ３及び第４バンクＢ４のバンク間における状態遷移間の時間的制約を考慮してバンク間の調停を実行する。ただし、バンク間制御部６２３４は、タイムアウト要求処理を最優先で選択する点でバンク内調停部６２３２と共通している。これにより、バンク間制御部６２３４は、第１バンク管理部ＢＭ１乃至第４バンク管理部ＢＭ４に過度に長期間滞留したトランザクションＴを優先的に処理することができる。
【００７７】
内部調停部６２３は、次の処理対象候補となっているトランザクションＴの制御データをコマンド生成部６３０（図３参照）に送信する。書込み処理は、コマンド生成部６３０が生成するコマンド制御データと、書込み制御部６４０によるデータ出力とによって行われる。読出し処理は、コマンド生成部６３０が生成するコマンド制御データと、読出し制御部６５０によるデータ入力とによって行われる。
【００７８】
コマンド生成部６３０（図３参照）は、Ｗ／Ｒ情報に基づいてバンク制御回路６６０にコマンド制御データを送信する。コマンド制御データは、たとえばアクティベートやライトを実行するための制御データである。さらに、コマンド生成部６３０は、Ｗ／Ｒ情報が書込みを表している場合には、書込み制御部６４０に転送ＩＤを送信し、所定のタイミングでデータバスに書込みデータを供給させる。コマンド生成部６３０は、Ｗ／Ｒ情報が読出しを表している場合には、読出し制御部６５０に転送ＩＤを送信し、所定のタイミングでデータバスから読出しデータを取得させる。この例では、コマンド生成部６３０は、ＤＤＲメモリ７０に画像データを書き込む処理を実行する。コマンド制御データは、さらに、Ｒｏｗ情報、Ｃｏｌ情報、ＢＬ情報及びＩＤ情報を含んでいる。
【００７９】
書込み制御部６４０は、ＩＤ情報とＢＬ情報とを使用して書込みバッファテーブル６８２から書込みバッファ６８１内における書込みデータの格納領域を特定するバッファ内アドレスを取得する。書込みバッファテーブル６８２には、ＩＤ情報によって特定されるトランザクションＴの各バーストに紐付けられているバッファ内アドレスが格納されている。書込み制御部６４０は、バッファ内アドレスを使用して書込みバッファ６８１から書込みデータを取得する。
【００８０】
書込み制御部６４０は、Ｒｏｗ情報、Ｃｏｌ情報及びＢＬ情報を使用し、第１バンク管理部ＢＭ１の管理対象であるＤＤＲメモリ７０の第１バンクＢ１（図１参照）に書込みデータを格納する。書込みデータの格納は、アナログ回路として機能するバンク制御回路６６０を使用して行われる。
【００８１】
次に、ＤＤＲメモリ７０から画像形成部３０がピクセルデータを読み出す処理を第２の例として説明する。画像形成部３０は、第３ＡＸＩマスタ３０Ｍを使用して読出し要求パケットをメモリ制御部６０に送信する。読出し要求パケットには、第３ＡＸＩマスタ３０Ｍが使用するＡＸＩ＿ＩＤと、制御データ（アドレスとＱＯＳ値とを含む。）とが含まれ、読出し要求データセットとも呼ばれる。
【００８２】
画像データを読み出す処理では、メモリ制御部６０は、読出しアドレスチャネル（Ｒ／Ａｄｄｒｅｓｓ）と、読出しデータチャネル（Ｒ／Ｄａｔａ）とを使用してＮＩＣ部６０Ｍと通信を行う。具体的には、メモリ制御部６０は、読出しアドレスチャネル（Ｒ／Ａｄｄｒｅｓｓ）を使用して制御データをパケット（制御パケットとも呼ばれる。）のような形で受信し、読出しデータチャネル（Ｒ／Ｄａｔａ）を使用して画像データをパケット（データパケットとも呼ばれる。）のような形でＮＩＣ部６０Ｍに送信する。制御データには、アドレスとＱＯＳ値とＡＸＩ＿ＩＤとが含まれる。
【００８３】
分岐部８２０は、制御パケットに含まれるアドレスを解析して処理が複数のバンク（後述）や複数のＲｏｗに渡る処理であると判断すると、バンク毎やＲｏｗ毎のトランザクションＴに分割する。各トランザクションＴは、この例では、ＡＸＩ＿ＩＤと読出しアドレスとを格納している。読出しアドレスは、アドレスデータ（ＷｏｒＲ／Ａｄｄｒｅｓｓ）において書込みフラグが立っていないデータである。分岐部８２０は、さらに、各トランザクションＴのＡＸＩ＿ＩＤにＤＣＶ値を紐付けてメモリ制御回路６００に送信する。バッファ制御部６１０は、各トランザクションＴのうちの制御データ（アドレス及びＤＣＶ値を含む。）をデータ制御部６２０に送信する。
【００８４】
データ制御部６２０は、転送ＩＤの制御データをコマンド生成部６３０（図３参照）に送信する。コマンド生成部６３０は、Ｗ／Ｒ情報に基づいて読出し制御部６５０にコマンド制御データを送信する。
【００８５】
コマンド生成部６３０は、コマンド制御データを生成し、Ｒｏｗ情報、Ｃｏｌ情報及びＢＬ情報を使用してＤＤＲメモリ７０からデータを読出してデータバスに乗せ、読出し制御部６５０は、データバスから読出しデータを取得する。読出し制御部６５０は、ＩＤ情報を使用して読出しバッファテーブル６９２から、読出しバッファ６９１内における読出しデータの格納領域を特定するバッファ内アドレスを取得する。バッファ内アドレスは、その転送ＩＤによるアクセスが何回目のものであるかを表すＮＵＭ（アクセス回数）によって特定される。ＮＵＭは、読出しバッファテーブル６９２によって管理され、アクセス毎にインクリメントされる。読出し制御部６５０は、バッファ内アドレスを使用して取得した読出しデータを読出しバッファ６９１に格納する。
【００８６】
バッファ制御部６１０の読出しバッファ制御部６１２は、ＩＤ情報を使用して読出しバッファテーブル６９２から、読出しバッファ６９１内における読出しデータの格納領域を特定するバッファ内アドレスを取得する。読出しバッファ制御部６１２は、バッファ内アドレスを使用して読出しバッファ６９１から順序制御部６７０に読出しデータを転送する。
【００８７】
順序制御部６７０は、ＩＤ情報を使用して予め設定されている順序に読出しデータを並び替えて、通信制御部８００に読出しデータを送信する。通信制御部８００は、通信調停部７００を介することなく、画像形成部３０に読出しデータ（この例では、ピクセルデータ）を送信することができる。なお、ＤＤＲメモリ７０へのデータの書込み要求とデータの読出し要求は、前述のように通信調停部７００によって通信調停が実行される。
【００８８】
このように、メモリ制御回路６００は、制御方向ステータスに応じて効率的な処理を実現するための書込み要求又は読出し要求をピックアップする要求ピックアップ処理等を行うことによって効率的な処理を実現することができる。さらに、メモリ制御回路６００は、例外処理としてＤＣＶ値を使用する優先制御処理を実行することができる。
【００８９】
本願発明者は、たとえばＤＤＲメモリ７０がＳＤＲＡＭ（Ｓｙｎｃｈｒｏｎｏｕｓ  Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）デバイスである場合には、メモリ制御回路６００は、その制御に多くの制約が存在する点を考慮して設計されている点に着目した。具体的には、メモリ制御回路６００では、ＳＤＲＡＭの制御においては、ＡＣＴＩＶＡＴＥコマンド発行から次のＡＣＴＩＶＡＴＥコマンドが発行できるまでの期間（ｔＲＲＤ）やＡＣＴＩＶＡＴＥコマンド発行から、ＲＥＡＤコマンド発行できるまでの期間（ｔＲＣＤ）といった状態遷移間の時間的制約が発生する。
【００９０】
このような観点から設計されたメモリ制御回路６００は、全体としての処理効率を実現する一方、データ制御部６２０が書込み処理と読出し処理とを同時に実行することができない故に、時としてメモリ制御回路６００の内部にピックアップされない未処理の特定のデータを滞留させる可能性があることを本願発明者は見いだした。具体的には、簡単な例を挙げると、たとえば最初に読出し要求パケットを１個受信し、次に書込み要求パケットを１個受信し、その次に読出し要求パケットを１０００個連続して受信した場合には、書込み処理と読出し処理とを同時に実行することができないので、処理の全体の効率性の観点から書込み要求パケットが滞留することがある。
【００９１】
本願発明者は、このような問題を解決するために、制御パラメータとしてＤＣＶ値を新規に導入した。ＤＣＶカウントダウン部６２２は、メモリ制御回路６００内において全てのＤＣＶ値をカウントダウンする。すなわち、メモリ制御回路６００内の全てのＤＣＶ値は、所定時間の経過毎に「１」ずつ同期してデクリメント（減算）される。ＤＣＶ値は、０乃至３のＱＯＳ値に基づいて変換された初期値としての１５０、２００、２５０及び３００のＤＣＶ値から所定の時間経過毎に変動させる（たとえばデクリメント）される。
【００９２】
内部調停部６２３は、予め設定された閾値としての所定値（たとえば２０）を通過したＤＣＶ値（この例では、閾値未満のＤＣＶ値）が検出された場合には、例外処理（タイムアウト要求処理）としてＡｇｅ情報に拘わらず、最優先で処理、すなわち、このＤＣＶ値を含んでいる書込み制御データ又は読出し制御データを使用してＤＤＲメモリ７０を制御する。すなわち、内部調停部６２３は、所定値よりも小さなＤＣＶ値が検出された場合には、たとえば必要に応じてデータバスの方向を切り替えるとともに、書込み先又は読出し先のバンクが利用可能な状態でなくても利用可能な状態に遷移（アクティベート）させることによって処理を実行することができる。
【００９３】
このように、第１実施形態に係る画像形成装置１は、メモリ制御部６０と、画像処理部２０等の他の機器との間の通信において効率的で信頼性の高い内部通信を実現するために使用されるＱＯＳ値を継承し、メモリ制御部６０の内部における予期できない滞留が仮に発生しても効率的で信頼性の高い通信とすることができる。
【００９４】
具体的には、メモリ制御部６０は、ＤＣＶ値を使用して優先制御処理を実行することができるので、たとえば画像読取処理においては順次生成される画像データの過度の送信遅延に起因するデータ廃棄（データ欠落）を排除することができるとともに、画像形成処理においては露光部３１に順次必要とされるピクセルデータの過度の送信遅延に起因するドット抜け（画像欠落）を排除することができる。
Ｄ．データ読出し処理手順：
【００９５】
図９は、第１実施形態に係るメモリ制御回路６００におけるデータ読出し処理に関する機能構成を示すブロックダイアグラムである。バッファ制御部６１０の読出しバッファ制御部６１２は、ＲＩＤ管理部６１２１と、予約領域管理部６１２２とを備えている。ＲＩＤ管理部６１２１は、データ読出し処理で使用される転送ＩＤ（ＲＴｒａｎｓＩＤ）を管理する。予約領域管理部６１２２は、転送ＩＤに紐付けて読出しバッファ６９１内における読出しデータの格納領域を割り当てて予約する。
【００９６】
順序制御部６７０は、読出しデータの順序を整える整序キューとして機能する順序管理部６７１と、データ出力部６７２とを備えている。順序制御部６７０は、ＡＸＩマスタ（たとえば第１ＡＸＩマスタ１０Ｍ）が複数のデータ読出し処理をメモリ制御部６０に要求した場合に、同一のＡＸＩ＿ＩＤを使用してＡＸＩマスタが要求した順序に従って読出しデータを送信する機能を有している。すなわち、順序制御部６７０は、同一のＡＸＩ＿ＩＤを有する複数のデータ読出し要求を受信した場合には、そのデータ読出し要求の受信の順序で読出しデータを送信することができる。これにより、メモリ制御回路６００は、ＡＸＩの仕様を満たすことができる。なお、本実施形態では、説明を分かりやすくするために、各ＡＸＩマスタは、それぞれ１つずつのＡＸＩ＿ＩＤを使用するものとしている。
【００９７】
図１０は、第１実施形態に係る順序管理部６７１の内容を示すブロックダイアグラムである。順序管理部６７１は、＃０（Ｓｌｏｔ＃０と表記）乃至＃Ｎ−１（Ｓｌｏｔ＃Ｎ−１と表記）のＮ個のスロットを有している。各スロットは、ＡＸＩ＿ＩＤ格納領域と、ステータス格納領域と、親スロット格納領域と、第１転送ＩＤ格納領域（最上位）と、第２転送ＩＤ格納領域と、第３転送ＩＤ格納領域と、第４転送ＩＤ格納領域（最下位）とを有している。第１乃至第４転送ＩＤ格納領域は、転送ＩＤが有効に格納されていることを示す有効フラグＶＦとともに転送ＩＤを格納する。
【００９８】
ＡＸＩ＿ＩＤ格納領域は、読出し要求データセットの送信元であるＡＸＩマスタ（たとえば第１ＡＸＩマスタ１０Ｍ）のＡＸＩ＿ＩＤを格納する領域である。この例では、第１乃至第４転送ＩＤ格納領域は、それぞれ読出し要求データセットから生成される少なくとも１つ（この例では、最大２個）の転送ＩＤを格納可能であって、上位（先に処理されるべき格納位置）から下位（後に処理されるべき格納位置）順序づけられている。
【００９９】
ステータス格納領域は、メイン（Ｍａｉｎ）、スレーブ（Ｓｌａｖｅ）及び空き（Ｅｍｐｔｙ）のいずれかのステータス（Ｓｔａｔｕｓ）を格納する領域である。メインは、各ＡＸＩ＿ＩＤに紐付けられた転送ＩＤのうち最も古い転送ＩＤを格納しているスロットであることを示している。スレーブは、他のスロットに従属、すなわち従属先である他のスロットの後に処理されることを示している。親スロット格納領域は、ステータスがスレーブとなっているスロットにおいて、その従属先である親スロットを特定するための情報である親スロット特定情報を格納している。
【０１００】
具体的には、たとえば順序管理部６７１は、状態ＳＴ１において、メインである＃０スロットと、＃０スロットに従属する＃１スロットと、＃１スロットに従属する＃２スロットとを有している。この例では、順序制御部６７０は、＃０スロット、＃１スロット及び＃２スロットの順に各転送ＩＤを処理することになる。
【０１０１】
図１１は、第１実施形態に係るデータ読出し処理手順の内容を示すフローチャートである。ステップＳ１１０では、メモリ制御部６０は、たとえば画像形成部３０に接続されている第３ＡＸＩマスタ３０Ｍから読出し要求データセットを受信する。読出し要求データセットには、第３ＡＸＩマスタ３０Ｍを表すＡＸＩ＿ＩＤと、制御データ（アドレスとＱＯＳ値とを含む。）とが含まれている。
【０１０２】
ステップＳ１２０では、分岐部８２０は、読出し要求データセットの制御データ（アドレスやＡＸＩ＿ＢＬ情報）を解析してＲｏｗ情報、Ｃｏｌ情報及びＢＬ情報を取得して分割の要否を判断する。分岐部８２０（図２参照）は、分割が不要な場合には、処理をステップＳ１３０に進め、分割が必要な場合には、処理をステップＳ１４０に進める。
【０１０３】
ステップＳ１３０では、分岐部８２０は、バッファ制御部６１０（図９参照）に対してＡＸＩ＿ＢＬ情報を渡して単一の転送ＩＤを要求する。バッファ制御部６１０のＲＩＤ管理部６１２１は、空いている（不使用の）転送ＩＤの中から１つを選択する。予約領域管理部６１２２は、選択された転送ＩＤに紐付けて読出しバッファ６９１内の空き領域の一部を予約して予約領域を割り当てる。予約領域のサイズは、バーストの回数（たとえば４又は８）を表す情報であるＢＬ情報に基づいて決定される。予約領域管理部６１２２は、読出しバッファテーブル６９２に予約領域のアドレスとステータスを格納する。ステータスには、読出しバッファ６９１のアクティベート、割当済み、書込み完了及び転送済み（空き）の４つの状態がある。予約領域管理部６１２２は、予約領域のステータスとして割当済みを格納する。
【０１０４】
ステップＳ１４０では、分岐部８２０は、読出し要求データセットを複数（この例では、最大２個）のトランザクションＴに分割し、各トランザクションＴのＲｏｗ情報、Ｃｏｌ情報及びＢＬ情報を生成する。分岐部８２０は、複数のトランザクションＴのそれぞれに対して転送ＩＤを要求する。バッファ制御部６１０のＲＩＤ管理部６１２１は、複数の転送ＩＤを選択する。予約領域管理部６１２２は、選択された複数の転送ＩＤのそれぞれに紐付けて読出しバッファ６９１内の空き領域の一部を予約して複数の予約領域を割り当てる。予約領域管理部６１２２は、読出しバッファテーブル６９２に複数の予約領域のアドレスを格納する。予約領域管理部６１２２は、複数の予約領域のステータスとして割当済みを格納する。
【０１０５】
ステップＳ１５０では、バッファ制御部６１０は、分岐部８２０からトランザクションＴを受信する。各トランザクションＴには、ＡＸＩ＿ＩＤと転送ＩＤとが含まれている。バッファ制御部６１０のＲＩＤ管理部６１２１は、トランザクションＴの受信に応じて順序制御部６７０に対してＡＸＩ＿ＩＤと転送ＩＤ（ＲｔｒａｎｓＩＤ）とを渡して、転送ＩＤの登録を要求する。順序制御部６７０は、順序管理部６７１のＡＸＩ＿ＩＤ格納領域においてＡＸＩ＿ＩＤを検索する。
【０１０６】
図１２は、第１実施形態に係る転送ＩＤ登録処理（ステップＳ１６０）の内容を示すフローチャートである。ステップＳ１６１では、順序制御部６７０は、トランザクションＴに紐付けられているＡＸＩ＿ＩＤと同一のＡＸＩ＿ＩＤがＡＸＩ＿ＩＤ格納領域に格納されているスロットがあるか否かを判断する。順序制御部６７０は、このようなスロットが存在しない場合には、処理をステップＳ１６２に進め、このようなスロットが存在する場合には、処理をステップＳ１６４に進める。
【０１０７】
ステップＳ１６２では、ＲＩＤ管理部６１２１は、空きスロット、すなわち、ステータス格納領域に空き（Ｅｍｐｔｙ）のステータスが格納されているスロットの１つを選択し、選択されたスロットの最上位の格納領域である第１転送ＩＤ格納領域に転送ＩＤを登録する。ステップＳ１６３では、ＲＩＤ管理部６１２１は、ステータスをメイン（Ｍａｉｎ）に変更し、すなわち、転送ＩＤが登録されたスロットのステータス格納領域にメイン（Ｍａｉｎ）のステータスを格納する。
【０１０８】
なお、空きスロットが残存していない場合には、読出しバッファ制御部６１２は、読出し処理用の転送ＩＤ（ＲｔｒａｎｓＩＤ）を分岐部８２０に供給することができない。よって、分岐部８２０は、読出しトランザクションＴの生成を停止し、書込みトランザクションＴのみを生成することになる。
【０１０９】
ステップＳ１６４では、順序制御部６７０は、トランザクションＴに紐付けられているＡＸＩ＿ＩＤと同一のＡＸＩ＿ＩＤがＡＸＩ＿ＩＤ格納領域に格納されているスレーブスロットがあるか否かを判断する。順序制御部６７０は、このようなスロットが存在しない場合には、処理をステップＳ１６５に進め、このようなスロットが存在する場合には、処理をステップＳ１６９に進める。
【０１１０】
ステップＳ１６５では、順序制御部６７０は、スレーブスロットが従属していないメインスロットメイン（Ｍａｉｎ）のスロットの第１乃至第４転送ＩＤ格納領域に空き領域が存在するか否かを判断する。順序制御部６７０は、空き領域が存在しない場合には、処理をステップＳ１６６に進め、空き領域が存在する場合には、処理をステップＳ１６８に進める。ステップＳ１６８では、順序制御部６７０は、第１乃至第４転送ＩＤ格納領域の空き領域のうちの最も上位の格納領域に転送ＩＤを登録する。
【０１１１】
ステップＳ１６６では、順序制御部６７０は、空きスロットの１つを選択し、選択されたスロットの最上位の格納領域である第１転送ＩＤ格納領域に転送ＩＤを登録する。ステップＳ１６７では、順序制御部６７０は、ステータスをスレーブ（Ｓｌａｖｅ）に変更し、親スロット格納領域に従属先であるメイン（Ｍａｉｎ）のスロットのスロット番号を格納する。
【０１１２】
ステップＳ１６９では、順序制御部６７０は、スレーブスロットのうち最下層スロットに転送ＩＤを登録する。具体的には、たとえば図１０の状態ＳＴ１に示されるように、順序制御部６７０は、最下層スロットである＃２スレーブスロットに転送ＩＤを登録する。＃２スレーブスロットは、＃１スレーブスロットの下層スロットである。＃１スレーブスロットは、メインの＃０スロットの下層スロットである。このように、順序制御部６７０は、メインの＃０スロットから最下層スロットである＃２スレーブスロットまでの複数のスロット（転送ＩＤ）にチェーンを形成させている。
【０１１３】
なお、順序制御部６７０は、最下層スロットに空き領域が存在しない場合には、空きスロットの１つを選択し、選択されたスロットの最上位の格納領域である第１転送ＩＤ格納領域に転送ＩＤを登録し、ステータスをスレーブ（Ｓｌａｖｅ）に変更し、親スロット格納領域に従属先であるメインのスロットのスロット番号を格納する。
【０１１４】
一方、内部調停部６２３は、前述のようにチェーンを形成している複数のスロットに登録されている転送ＩＤについて閾値未満のＤＣＶ値が検出された場合には、その検出された転送ＩＤの上位側の転送ＩＤを有するトランザクションＴの全てを例外処理（タイムアウト要求処理）の対象とする。これにより、閾値未満のＤＣＶ値を有するトランザクションＴの円滑な処理を実現することができる。
【０１１５】
ステップＳ１７０では、バッファ制御部６１０は、各トランザクションＴのうちの制御データ（アドレス及びＤＣＶ値を含む。）をデータ制御部６２０に送信する。ステップＳ１８０では、内部調停部６２３は、調停処理を実行し、コマンド制御データを出力する。読出し制御部６５０は、コマンド制御データに基づいてＤＤＲメモリ７０からデータを読み出し、転送ＩＤとＮＵＭ（アクセス回数）とを使用して読出しバッファテーブル６９２から予約領域のアドレスを取得する。読出し制御部６５０は、予約領域のアドレスを使用して読み出したデータを読出しバッファ６９１内に書き込み、書き込みの完了に応じて読出しバッファテーブル６９２内の予約領域のステータスを書込み完了に変更（Ｕｐｄａｔｅ）する。
【０１１６】
図１３は、第１実施形態に係る読出しデータ出力処理（ステップＳ１９０）の内容を示すフローチャートである。ステップＳ１９１では、データ出力部６７２は、読出しバッファテーブル６９２内において、メインのスロットの最上位の格納領域に格納されている転送ＩＤのステータスを監視する。
【０１１７】
ステップＳ１９２では、データ出力部６７２は、メインのスロットの最上位の格納領域に格納されている転送ＩＤに紐づけられている予約領域の書込み完了へのステータス変更の検出に応じて、処理をステップＳ１９３に進める。
【０１１８】
ステップＳ１９３では、データ出力部６７２は、予約領域に書き込まれた読出しデータ（Ｒ／Ｄａｔａ）を出力する。データ出力部６７２は、メインのスロットの最上位の格納領域から転送ＩＤを削除するとともに、予約領域管理部６１２２は、読出しバッファテーブル６９２の対応するステータスを転送済み（空き）にする。
【０１１９】
ステップＳ１９４では、データ出力部６７２は、転送ＩＤの削除によってスロットが空きスロットになったか否かを判断する。データ出力部６７２は、空きスロットになった場合には、処理をステップＳ１９５に進め、空きスロットにならなかった場合には、読出しデータ出力処理（ステップＳ１９０）の処理を完了する。ステップＳ１９５では、データ出力部６７２は、スロットのステータスを空き（Ｅｍｐｔｙ）に変更する（図１０の状態ＳＴ１及びＳＴ２参照）。
【０１２０】
ステップＳ１９６では、データ出力部６７２は、空きスロットになったスロットに従属するスレーブスロットが存在するか否かを判断する。データ出力部６７２は、スレーブスロットが存在する場合には、処理をステップＳ１９７に進め、スレーブスロットが存在しない場合には、読出しデータ出力処理（ステップＳ１９０）の処理を完了する。
【０１２１】
ステップＳ１９７では、データ出力部６７２は、空きスロットになったスロットに従属し、空きスロットのスロット番号を親スロット格納領域に格納しているスレーブスロットのステータスをメイン（Ｍａｉｎ）に変更する（図１０の状態ＳＴ１及びＳＴ２参照）。これにより、データ出力部６７２は、新たにメインとなったスロットの最上位に格納されている転送ＩＤを監視対象とすることができる。
【０１２２】
一方、内部調停部６２３は、空きスロットの数を監視し、空きスロットの数が予め設定されている閾値未満となった場合には、制御方向ステータスの切替方法を調整する。具体的には、内部調停部６２３は、空きスロットの数が閾値未満となった場合には、読出側ステータスへ切り替えやすくする一方、書込側ステータスへの切替を抑制するように制御方向ステータスの切替方法を調整する。
【０１２３】
これにより、メモリ制御部６０は、読出しバッファ６９１内に過度に多くのバッファ領域を必要とすることなく、読出しバッファ６９１を効率的に使用して円滑な読出し処理を実現することができる。
Ｅ．データ書込み処理手順：
【０１２４】
図１４は、第１実施形態に係るメモリ制御回路６００におけるデータ書込み処理に関する機能構成を示すブロックダイアグラムである。バッファ制御部６１０の書込みバッファ制御部６１１は、ＷＩＤ管理部６１１１と、予約領域管理部６１１２とを備えている。ＷＩＤ管理部６１１１は、データ読出し処理で使用される転送ＩＤを管理する。予約領域管理部６１１２は、転送ＩＤに紐付けて書込みバッファ６８１内における書込みデータの格納領域を割り当てて予約する。
【０１２５】
データ書込み処理では、ＡＸＩマスタが複数のデータ書込みをメモリ制御部６０に要求しても書込み順序には、データ読出し処理におけるような制限が無い。よって、データ書込み処理には、順序制御部のような構成は不要である。
【０１２６】
図１５は、第１実施形態に係るデータ書込み処理手順（ステップＳ２００）の内容を示すフローチャートである。ステップＳ２１０では、メモリ制御部６０は、たとえば画像読取部５０に接続されている第５ＡＸＩマスタ５０Ｍから書込み要求データセットを受信する。書込み要求データセットには、第５ＡＸＩマスタ５０Ｍを表すＡＸＩ＿ＩＤと、制御データ（アドレスとＱＯＳ値とを含む。）とが含まれている。
【０１２７】
ステップＳ２２０では、データ制御部６２０の重複アドレス検出部６２３３は、アドレス監視処理を実行する。アドレス監視処理は、ステップＳ２３０乃至ステップＳ２９０の各処理と並行して実行され、必要に応じてバンク内調停部６２３２の作動モードを順序制限モードとする。アドレス監視処理の詳細については後述する。
【０１２８】
ステップＳ２３０では、分岐部８２０は、書込み要求データセットの制御データ（アドレスやＡＸＩ＿ＢＬ情報）を解析してＲｏｗ情報、Ｃｏｌ情報及びＢＬ情報を取得して分割の要否を判断する。分岐部８２０は、分割が不要な場合には、処理をステップＳ２４０に進め、分割が必要な場合には、処理をステップＳ２５０に進める。
【０１２９】
ステップＳ２４０では、分岐部８２０は、バッファ制御部６１０に対してＡＸＩ＿ＢＬ情報を渡して単一の転送ＩＤを要求する。バッファ制御部６１０のＷＩＤ管理部６１１１は、空いている（不使用の）転送ＩＤの中から１つを選択する。予約領域管理部６１１２は、選択された転送ＩＤに紐付けて書込みバッファ６８１内の空き領域の一部を予約して予約領域を割り当てる。予約領域のサイズは、バーストの回数（たとえば４又は８）を表す情報であるＢＬ情報に基づいて決定される。予約領域管理部６１１２は、書込みバッファテーブル６８２に予約領域のアドレスとステータスを格納する。ステータスには、書込みバッファ６８１の割当済み、書込み完了及び転送済み（空き）の３つの状態がある。予約領域管理部６１１２は、予約領域のステータスとして割当済みを格納する。
【０１３０】
ステップＳ２５０では、分岐部８２０は、書込み要求データセットを複数のトランザクションＴに分割し、各トランザクションＴのＲｏｗ情報、Ｃｏｌ情報及びＢＬ情報を生成する。分岐部８２０は、複数のトランザクションＴのそれぞれに対して転送ＩＤを要求する。バッファ制御部６１０のＷＩＤ管理部６１１１は、複数の転送ＩＤを選択する。予約領域管理部６１１２は、選択された複数の転送ＩＤのそれぞれに紐付けて書込みバッファ６８１内の空き領域の一部を予約して複数の予約領域を割り当てる。予約領域管理部６１１２は、書込みバッファテーブル６８２に複数の予約領域のアドレスを格納する。予約領域管理部６１１２は、複数の予約領域のステータスとして割当済みを格納する。
【０１３１】
ステップＳ２６０では、バッファ制御部６１０は、分岐部８２０からトランザクションＴと書込みデータとを受信する。各トランザクションＴには、ＡＸＩ＿ＩＤと転送ＩＤとが含まれている。バッファ制御部６１０は、書込みバッファ６８１内の予約領域のステータスが割当済みであることを確認し、書込みデータを書き込み、予約領域のステータスを書込み完了にする。
【０１３２】
ステップＳ２７０では、バッファ制御部６１０は、各トランザクションＴのうちの制御データ（アドレス及びＤＣＶ値を含む。）をデータ制御部６２０に送信する。ステップＳ２８０では、内部調停部６２３は、調停処理を実行し、コマンド制御データを出力する。
【０１３３】
ステップＳ２９０では、書込み制御部６４０は、データ書込み処理を実行する。データ書込み処理では、書込み制御部６４０は、コマンド制御データに基づいてＤＤＲメモリ７０からデータを読み出し、転送ＩＤとＮＵＭ（アクセス回数）とを使用して書込みバッファテーブル６８２から予約領域のアドレスを取得する。書込み制御部６４０は、予約領域のアドレスを使用して書込みバッファ６８１から読み出したデータをＤＤＲメモリ７０に書き込み、書き込みの完了に応じて書込みバッファ６８１内の予約領域のステータスを転送済み（空き）に変更（Ｕｐｄａｔｅ）する。
【０１３４】
図１６は、第１実施形態に係るアドレス監視処理手順の内容を示すフローチャートである。アドレス監視処理では、重複アドレス検出部６２３３は、書込み要求データセットの書込み先のアドレスと少なくとも一部が重複するアドレスを指定している書込み要求データセット及び読出し要求データセットである重複アクセス要求データを監視し、その入力に係る調停処理を制限する。態様としては、以下の３つの組み合わせが存在する。
（１）書込み要求データセット（先入力）と読出し要求データセット（後入力）の組合せ
（２）読出し要求データセット（先入力）と書込み要求データセット（後入力）の組合せ
（３）書込み要求データセット同士の組合せ
【０１３５】
（１）書込み要求データセット（先入力）と読出し要求データセット（後入力）の組合せでは、調停によって書込み要求データセット（先入力）よりも読出し要求データセット（後入力）が先に処理されると、書込み要求データセットによる書込み前の古いデータが読み出されてしまうという問題が生じる。よって、調停の停止が要請されることになる。この組合せは、第１の組合せとも呼ばれる。
【０１３６】
（２）読出し要求データセット（先入力）と書込み要求データセット（後入力）の組合せでは、調停によって読出し要求データセット（先入力）よりも書込み要求データセット（後入力）が先に処理されると、本来読み出すべきデータが書込み要求データセット（後入力）によって先に書き換えられてしまうという問題が生じる。よって、調停の停止が要請されることになる。この組合せは、第２の組合せとも呼ばれる。
【０１３７】
（３）書込み要求データセット同士の組合せでは、調停によって書込み要求データセット（先入力）よりも書込み要求データセット（後入力）が先に処理されると、書込み要求データセット（後入力）によって最終的に残存すべきデータが書込み要求データセット（先入力）によって書き換えられてしまうという問題が生じる。よって、調停の停止が要請されることになる。この組合せは、第３の組合せとも呼ばれる。
【０１３８】
メモリ制御部６０は、書込み要求データの受信に応じてＷｒｉｔｅ／Ｒｅｓｐｏｎｓｅ信号を送信する（図２参照）。メモリ制御部６０は、Ｗｒｉｔｅ／Ｒｅｓｐｏｎｓｅ信号の発信後において、その書込み要求データによる書込み処理が完了したことを前提として、書込み要求データセット及び読出し要求データセットが処理されることを保証するように構成されている。本実施形態では、この保証は、アドレス監視処理によって実現される。
【０１３９】
ステップＳ２２１では、バッファ制御部６１０の重複アドレス検出部６２３３は、アドレス管理処理を実行する。アドレス管理処理では、重複アドレス検出部６２３３は、書込み要求データセットの入力に応じて、その書込みトランザクションＴの書込み先のバンク情報、Ｒｏｗ情報及びＣｏｌ情報を監視対象アドレスとして管理する。
【０１４０】
ステップＳ２２２では、重複アドレス検出部６２３３は、重複アドレス監視処理を実行する。重複アドレス監視処理では、重複アドレス検出部６２３３は、書込み要求データセット又は読出し要求データセットの入力に応じて、書込み要求データセット及び読出し要求データセットによるトランザクションＴ（書込みトランザクションＴ及び読出しトランザクションＴ）が指定するバンク情報、Ｒｏｗ情報及びＣｏｌ情報を第１バンク管理部ＢＭ１乃至第４バンク管理部ＢＭ４において監視する。
【０１４１】
重複アドレス検出部６２３３は、読出し要求データセットの入力に応じて、読出し要求データセットで読出し対象となっているアドレスと監視対象アドレスとの重複である重複アドレスを探索する。重複アドレス検出部６２３３は、重複アドレスの検出に応じて、アドレスの重複が検出されたバンクを特定する。これにより、重複アドレス検出部６２３３は、第１の組合せに対応する問題を解決することができる。
【０１４２】
重複アドレス検出部６２３３は、書込み要求データセットの入力に応じて、書込み要求データセットで書込み対象となっているアドレスと監視対象アドレスとの重複である重複アドレスを探索し（第３の組合せ）、さらに書込み要求データセットで書込み対象となっているアドレスと第１バンク管理部ＢＭ１乃至第４バンク管理部ＢＭ４に既に格納されている読出し要求データセットの読出し対象となっているアドレスとの重複である重複アドレスを探索する（第２の組合せ）。重複アドレス検出部６２３３は、重複アドレスの検出に応じて、アドレスの重複が検出されたバンクを特定する。これにより、重複アドレス検出部６２３３は、第２及び第３の組合せに対応する問題を解決することができる。
【０１４３】
ステップＳ２２３では、バンク内調停部６２３２は、重複アドレスが検出されたバンクの特定に応じて、特定されたバンクの調停キュー固定処理を実行する（ステップＳ２２４）。調停キュー固定処理では、バンク内調停部６２３２は、特定されたバンクのキューの調停を停止させ、ＦＩＦＯの作動モード（順序制限モード）とする。これにより、バンク内調停部６２３２は、上述の第１の組合せ乃至第３の組合せにおける問題を回避するために調停を停止する。
【０１４４】
ステップＳ２２５では、重複アドレス検出部６２３３は、第１バンク管理部ＢＭ１乃至第４バンク管理部ＢＭ４において、重複アクセス要求データに係る監視対象アドレスを指定しているトランザクションＴのＢＬ情報に基づいて、その重複アドレスが解消したか否かを判断することができる。具体的には、重複アドレス検出部６２３３は、監視対象アドレスを指定しているトランザクションＴについて、バンク間制御部６２３４によってＲｅａｄ／Ｗｒｉｔｅコマンドが実行される毎にデクリメントされるＢＬ情報を監視し、最終バーストに対してＲｅａｄ／Ｗｒｉｔｅコマンドが実行されると、そのトランザクションＴが処理済みとなってその重複アドレスが解消したと判断することができる。
【０１４５】
重複アドレス検出部６２３３は、各バンク内の重複アドレスが残存していないと判断すると、バンク毎に調停キュー開放処理を実行する（ステップＳ２２６）。調停キュー開放処理では、バンク内調停部６２３２は、固定されたバンクのキューの作動モードをＦＩＦＯ（順序制限モード）から変更し、調停を再開する。
【０１４６】
一方、内部調停部６２３は、書込みバッファ６８１の不使用の記憶領域の量や利用可能な転送ＩＤの数を監視し、それぞれ予め設定されている閾値未満となった場合には、制御方向ステータスの切替方法を調整する。具体的には、内部調停部６２３は、書込みバッファ６８１の不使用の記憶領域の量等が閾値未満となった場合には、書込側ステータスへ切り替えやすくする一方、読出側ステータスへの切替を抑制するように制御方向ステータスの切替方法を調整する。
【０１４７】
これにより、メモリ制御部６０は、書込みバッファ６８１内に過度に多くのバッファ領域を必要とすることなく、書込みバッファ６８１を効率的に使用して円滑な読出し処理を実現することができる。
Ｆ．第２実施形態に係る画像形成装置の機能構成（ｔＦＡＷ制約対応処理手順）：
【０１４８】
図１７は、第２実施形態に係る内部調停部６２３ａの機能構成を示すブロックダイアグラムである。第２実施形態に係る内部調停部６２３ａは、ｔＦＡＷ制約を考慮して調停を実行することができる点で一の実施形態に係る内部調停部６２３と相違する。第２実施形態に係る内部調停部６２３ａは、バンク間制御部６２３４の代わりにバンク間制御部６２３４ａを備えている。バンク間制御部６２３４ａは、ｔＦＡＷ管理部６２３４Ｔ１と、ＢＬ情報管理部６２３４Ｔ２と、マスク処理部６２３４Ｔ３と、バンク間調停部６２３４Ｔ４とを備えている。ＢＬ情報管理部６２３４Ｔ２は、残バースト回数管理部とも呼ばれる。
【０１４９】
図１８は、第２実施形態に係るバンク間制御部６２３４ａの制御方向ステータスの状態遷移図である。制御方向ステータスは、ＩＤＬＥ状態ＳＢ１と、Ｗｒｉｔｉｎｇ状態ＳＢ２と、Ｒｅａｄｉｎｇ状態ＳＢ３と、Ｒｅａｄ２Ｗｒｉｔｅ状態ＳＢ４と、Ｗｒｉｔｅ２Ｒｅａｄ状態ＳＢ５とを含む５個の状態を有している。Ｒｅａｄ２Ｗｒｉｔｅ状態ＳＢ４は、書込み遷移ステータスとも呼ばれる。Ｗｒｉｔｅ２Ｒｅａｄ状態ＳＢ５は、読出し遷移ステータスとも呼ばれる。
【０１５０】
Ｒｅａｄ２Ｗｒｉｔｅ状態ＳＢ４は、Ｒｅａｄｉｎｇ状態ＳＢ３からＷｒｉｔｉｎｇ状態ＳＢ２への遷移状態である。Ｒｅａｄ２Ｗｒｉｔｅ状態ＳＢ４は、Ｒｅａｄコマンドを実行しつつＡｃｔｉｖａｔｅ＿ｆｏｒ＿Ｗｒｉｔｅコマンド（Ｗｒｉｔｅコマンド実行のための）を実行する状態である。Ｗｒｉｔｅ２Ｒｅａｄ状態ＳＢ５は、Ｗｒｉｔｉｎｇ状態ＳＢ２からＲｅａｄｉｎｇ状態ＳＢ３への遷移状態である。Ｗｒｉｔｅ２Ｒｅａｄ状態ＳＢ５は、Ｗｒｉｔｅコマンドを実行しつつＡｃｔｉｖａｔｅ＿ｆｏｒ＿Ｒｅａｄコマンド（Ｒｅａｄコマンド実行のための）を実行する状態である。
【０１５１】
図１９は、第２実施形態に係るｔＦＡＷ制約の内容を示すタイミングチャートである。ｔＦＡＷ制約（Ｆｏｕｒ  Ａｃｔｉｖａｔｅ  Ｗｉｎｄｏｗ  ｄｅｌａｙ）は、高効率のメモリ制御を実現するために重要なバンク間のタイミング制約の一つである。ｔＦＡＷ制約は、Ａｃｔｉｖａｔｅが４つ存在してもよい期間を定義したものである。ｔＦＡＷ制約は、Ａｃｔｉｖａｔｅにおける電力消費によってＳＤＲＡＭ  Ｄｅｖｉｃｅの機能が悪影響を受けないように定義されているものである。メモリ制御は、ｔＦＡＷ制約によって、ある一定期間内におけるＡｃｔｉｖａｔｅの多発を制限することができる。この例では、ｔＦＡＷ制約の期間は、３０クロックに設定されているものとする。
【０１５２】
クロックＣＬＫは、メモリ制御部６０の制御クロックを示している。バンク間制御部６２３４ａのｔＦＡＷ管理部６２３４Ｔ１は、４つのフラグＦＬ１乃至ＦＬ４を有している。ＢＬ情報管理部６２３４Ｔ２は、ＢＬ情報、すなわちバーストの回数の残存数である残ＢＬ数を管理している。残ＢＬ数には、残書込みＢＬ数（残ＢＬ数（Ｗ））と残読出しＢＬ数（残ＢＬ数（Ｒ））とがある。マスク処理部６２３４Ｔ３は、４つのフラグＦＬ１乃至ＦＬ４に基づいてマスクフラグＭを設定し、マスクフラグＭに基づいてＡｃｔｉｖａｔｅをマスク（制限）する。バンク間調停部６２３４Ｔ４は、制御方向ステータスを管理している。
【０１５３】
メモリ制御部６０は、時刻Ｔ１（クロック０）において、Ａｃｔｉｖａｔｅ＿ｆｏｒ＿ＷｒｉｔｅコマンドＷＡ１を実行している。これに応じて、ｔＦＡＷ管理部６２３４Ｔ１は、時刻Ｔ１に最初のフラグＦＬ１を所定の期間（この例ではｔＦＡＷ制約の期間である３０クロック）立てる。次に、メモリ制御部６０は、時刻Ｔ２（クロック４）において、Ａｃｔｉｖａｔｅ＿ｆｏｒ＿ＷｒｉｔｅコマンドＷＡ２を実行している。これに応じて、ｔＦＡＷ管理部６２３４Ｔ１は、時刻Ｔ２に２番目のフラグＦＬ２を立てる。さらに、次に、メモリ制御部６０は、時刻Ｔ３（クロック８）において、Ａｃｔｉｖａｔｅ＿ｆｏｒ＿ＷｒｉｔｅコマンドＷＡ３を実行している。これに応じて、ｔＦＡＷ管理部６２３４Ｔ１は、時刻Ｔ３に３番目のフラグＦＬ３を立てる。
【０１５４】
メモリ制御部６０は、時刻Ｔ４（クロック１２）において、Ａｃｔｉｖａｔｅ＿ｆｏｒ＿ＷｒｉｔｅコマンドＷＡ４を実行している。これに応じて、ｔＦＡＷ管理部６２３４Ｔ１は、時刻Ｔ４に４番目のフラグＦＬ４を立てる。マスク処理部６２３４Ｔ３は、４つのフラグＦＬ１乃至ＦＬ４がすべて立ったので、マスクフラグＭを立てる。マスク処理部６２３４Ｔ３は、マスクフラグＭが立ったので、Ａｃｔｉｖａｔｅを制限（禁止）する。
【０１５５】
メモリ制御部６０は、時刻Ｔ５（クロック３０）において、最初のフラグＦＬ１を降ろす。時刻Ｔ１（クロック０）から所定の期間（ｔＦＡＷ制約の期間である３０クロック）経過したからである。これにより、マスク処理部６２３４Ｔ３は、時刻Ｔ５において、マスクフラグＭを降ろして、Ａｃｔｉｖａｔｅを可能とする。
【０１５６】
メモリ制御部６０は、時刻Ｔ６（クロック３２）において、Ａｃｔｉｖａｔｅ＿ｆｏｒ＿ＷｒｉｔｅコマンドＷＡ２を実行している。これに応じて、ｔＦＡＷ管理部６２３４Ｔ１は、Ｔ６に再び最初のフラグＦＬ１を立てる。マスク処理部６２３４Ｔ３は、４つのフラグＦＬ１乃至ＦＬ４がすべて立ったので、マスクフラグＭを立てる。マスク処理部６２３４Ｔ３は、マスクフラグＭが立ったので、２番目のフラグＦＬ２が降りる時刻Ｔ７までＡｃｔｉｖａｔｅを制限（禁止）する。これにより、メモリ制御部６０は、は、Ａｃｔｉｖａｔｅにおける電力消費によってＳＤＲＡＭ  Ｄｅｖｉｃｅの機能が悪影響を受けないようにすることができる。
【０１５７】
一方、ＢＬ情報管理部６２３４Ｔ２は、書込みバーストの回数の残存数である残書込みＢＬ数を更新する。ＢＬ情報管理部６２３４Ｔ２は、時刻Ｔ１のＡｃｔｉｖａｔｅ＿ｆｏｒ＿ＷｒｉｔｅコマンドＷＡ１に関連するＢＬ情報に基づいて残書込みＢＬ数を更新する。この例では、ＢＬ情報管理部６２３４Ｔ２は、ＢＬ情報がＢＬ＝４なので、残書込みＢＬ数に４を加算して残書込みＢＬ数を「４」とする。次に、ＢＬ情報管理部６２３４Ｔ２は、時刻Ｔ２において、Ａｃｔｉｖａｔｅ＿ｆｏｒ＿ＷｒｉｔｅコマンドＷＡ２に関連するＢＬ情報（ＢＬ＝４）に基づいて残書込みＢＬ数を「８」に更新する。
【０１５８】
一方、ＢＬ情報管理部６２３４Ｔ２は、Ｗｒｉｔｅコマンドが実行される毎に残書込みＢＬ数を「１」だけデクリメント（減算して）し、残書込みＢＬ数を「７」に更新する。このように、ＢＬ情報管理部６２３４Ｔ２は、Ａｃｔｉｖａｔｅなしで処理される予定のバーストの回数の残存数を実時間で管理することができる。
【０１５９】
図２０は、ｔＦＡＷ制約に起因するデータバスのストール状態を示すタイミングチャートである。図２０は、図１９の例において、Ａｃｔｉｖａｔｅ＿ｆｏｒ＿ＷｒｉｔｅコマンドＷＡ１乃至ＷＡ４に関連するＢＬ数が小さいケースを示している。
【０１６０】
この例では、時刻Ｔ１１において、メモリ制御部６０は、残ＢＬ数がゼロとなってＤＤＲ物理層インターフェース８０の送信可能な書込みデータが枯渇することになる。時刻Ｔ６までは、ｔＦＡＷ制約の期間なので新たなＡｃｔｉｖａｔｅ＿ｆｏｒ＿ＷｒｉｔｅコマンドＷＡの発行が禁止されているからである。
【０１６１】
これにより、メモリ制御部６０は、最後のＷｒｉｔｅコマンドの実行で送信される書き込みデータをデータバスに送信した後に、すなわち遅れ時間Ｄ１の経過の後にメモリ制御部６０とＤＤＲ物理層インターフェース８０との間のＤＤＲ  ＰＨＹ  Ｉｎｔｅｒｆａｃｅ（ＤＦＩ）バスをストールさせることになる。さらに、ＤＤＲ  ＰＨＹ  Ｉｎｔｅｒｆａｃｅ（ＤＦＩ）バスのストールに伴って、遅れ時間Ｄ２の経過の後にメモリバス（Ｍバス）のストールも発生している。
【０１６２】
本願発明者は、ＤＦＩバスのストールの一因として、時刻Ｔ４の調停時に選択されたＡｃｔｉｖａｔｅ＿ｆｏｒ＿Ｗｒｉｔｅコマンドに伴う書き込みデータ  のバースト数が少ないことに着目し、新たなバンク間調停方法を創作した。この調停方法は、残バースト数に着目し、残バースト数が少なくなったらＢＬ数が大きな書込み又は読出しを伴うＡｃｔｉｖａｔｅ＿ｆｏｒ＿Ｗｒｉｔｅ又はＡｃｔｉｖａｔｅ＿ｆｏｒ＿Ｒｅａｄを調停結果として選択する  というインテリジェントな方法である。具体的には、メモリ制御部６０は、たとえば時刻Ｔ４においてインテリジェントな方法で調停を実行し、ＢＬ数が比較的に大きな数（たとえば７や８）のデータを伴うＡｃｔｉｖａｔｅ＿ｆｏｒ＿Ｗｒｉｔｅを選択  していればＤＦＩバス及びメモリバスのストールを防止又は短縮化することができたはずである。
【０１６３】
図２１は、第２実施形態に係る要求ピックアップ処理（ステップＳ４０ａ）の内容を示すフローチャートである。第２実施形態に係る要求ピックアップ処理（ステップＳ４０ａ）は、書込み要求ピックアップ処理（ステップＳ４４）及び読出し要求ピックアップ処理（ステップＳ４５）が書込み要求ピックアップ処理（ステップＳ４４ａ）及び読出し要求ピックアップ処理（ステップＳ４５ａ）に変更されている点で第１実施形態に係る要求ピックアップ処理（ステップＳ４０）と相違している。
【０１６４】
図２２は、第２実施形態に係る書込み要求ピックアップ処理（ステップＳ４４ａ）及び読出し要求ピックアップ処理（ステップＳ４５ａ）の内容を示すフローチャートである。図２２（ａ）は、書込み要求ピックアップ処理（ステップＳ４４ａ）の内容を示すフローチャートである。図２２（ｂ）は、読出し要求ピックアップ処理（ステップＳ４５ａ）の内容を示すフローチャートである。読出し要求ピックアップ処理（ステップＳ４５ａ）は、処理対象となる要求が書込み要求ではなく読出し要求である点を除いて、書込み要求ピックアップ処理（ステップＳ４４ａ）と同一の処理なので、書込み要求ピックアップ処理（ステップＳ４４ａ）についてのみ説明する。
【０１６５】
ステップＳ４４１では、バンク間調停部６２３４Ｔ４は、残書込みＢＬ数取得処理を実行する。残書込みＢＬ数取得処理では、バンク間調停部６２３４Ｔ４は、ＢＬ情報管理部６２３４Ｔ２から書込みバーストの回数の残存数である残書込みＢＬ数を取得する。
【０１６６】
ステップＳ４４２では、バンク間調停部６２３４Ｔ４は、残書込みＢＬ数と予め設定されている所定の閾値とを比較し、残書込みＢＬ数が所定の閾値未満であるか否かを判断する。バンク間調停部６２３４Ｔ４は、残書込みＢＬ数が所定の閾値未満である場合には、処理をステップＳ４４４に進め、残書込みＢＬ数が所定の閾値以上である場合には、処理をステップＳ４４３に進める。
【０１６７】
ステップＳ４４３では、バンク間調停部６２３４Ｔ４は、ラウンドロビン方式で書込み要求をピックアップする。これにより、バンク間調停部６２３４Ｔ４は、特定の書込み要求の滞留を抑制して円滑に調停することができる。
【０１６８】
ステップＳ４４４では、バンク間調停部６２３４Ｔ４は、ＢＬ数が最大の書込み要求をピックアップする。これにより、バンク間調停部６２３４Ｔ４は、残書込みＢＬ数が所定の閾値未満である場合、すなわちｔＦＡＷ制約によってＡｃｔｉｖａｔｅが制限されたときに、処理対象のバースト回数がゼロとなって書込み処理が停止してしまう可能性を抑制することができる。所定の閾値は、書込み処理の停止の可能性とＢＬ数が少ない書込み要求の滞留のトレードオフとして解析とシミュレーションとを利用して決定することができる。
【０１６９】
このように、第２実施形態に係るメモリ制御部６０は、ｔＦＡＷ制約に起因する性能低下を抑制し、効率的な調停を実現することができる。
Ｇ．第３実施形態に係る画像形成装置の機能構成（バンク間調停処理手順）
【０１７０】
図２３は、第３実施形態に係る画像形成装置１ａの機能構成を示すブロックダイアグラムである。画像形成装置１ａは、ＤＤＲメモリ７０がＤＤＲメモリ７０ａに変更され、メモリ制御部６０がメモリ制御部６０ａに変更されている点で画像形成装置１と相違する。ＤＤＲメモリ７０ａは、１６個のバンクを有しているＤｏｕｂｌｅ−Ｄａｔａ−Ｒａｔｅ４  Ｓｙｎｃｈｒｏｎｏｕｓ  Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙである。メモリ制御部６０ａは、論理回路として構成されているマスク処理部６０ＭＰを有している。
【０１７１】
ＤＤＲメモリ７０ａは、４個のバンクを含む４つのバンクグループＢＧ１乃至ＢＧ４と、４つのローカルバッファ７１乃至７４と、１つのグローバルバッファ７５とを有している。４つのバンクグループＢＧ１乃至ＢＧ４は、それぞれ４つのローカルバッファ７１乃至７４に接続されている。４つのローカルバッファ７１乃至７４は、いずれもグローバルバッファ７５に接続されている。グローバルバッファ７５は、物理層インターフェース８０に接続され、書込みデータ及び読出しデータの送受信に使用される。
【０１７２】
ＤＤＲメモリ７０ａは、タイミング制約として、同一バンクグループ内の比較的に長いカラムコマンド間（ｃｏｌｕｍｎ  ｔｏ  ｃｏｌｕｍｎ  ｄｅｌａｙ、すなわち間隔）の間隔ｔＣＣＤ＿Ｌ（ｔＣＣＤロング）と、相違するバンクグループ間の比較的に短いカラムコマンド間（ｃｏｌｕｍｎ  ｔｏ  ｃｏｌｕｍｎ  ｄｅｌａｙ、すなわち間隔）の間隔ｔＣＣＤ＿Ｓ（ｔＣＣＤショート）とを有している。
【０１７３】
すなわち、ＤＤＲメモリ７０ａでは、同一バンクグループ内においてバンクへの読み書きの処理が制限されるカラムコマンド間の間隔ｔＣＣＤ＿Ｌ（バンクグループ内制約時間とも呼ばれる。）は、相違するバンクグループ間においてバンクへの読み書きの処理が制限されるカラムコマンド間の間隔ｔＣＣＤ＿Ｓ（バンクグループ間制約時間とも呼ばれる。）よりも長い間隔の時間的制約がある。換言すれば、一のバンクグループ内のバンクへの読み書きのコマンドが実行されると、同一、すなわち最後にアクセスされたバンクグループ内のバンクへの読み書きよりも相違するバンクグループ内のバンクへの読み書きの方が短いタイミング制約で実行可能である。
【０１７４】
マスク処理部６０ＭＰには、４個のバンク内調停部６２３２においてタイミング制約を満たしていることが確認されているＡｃｔ、Ｒｅａｄ、Ｗｒｉｔｅ及びＰｒｅＣｈａｒｇｅの各要求が入力される。ただし、バンク内調停部６２３２は、バンクグループ内制約時間（ｔＣＣＤ＿Ｌ）及びバンクグループ間制約時間（ｔＣＣＤ＿Ｓ）を考慮することなく、各要求をマスク処理部６０ＭＰに送信する。マスク処理部６０ＭＰは、バンクグループ内制約時間（ｔＣＣＤ＿Ｌ）又はバンクグループ間制約時間（ｔＣＣＤ＿Ｓ）によって制限対象となっている要求をマスクする。
【０１７５】
これにより、メモリ制御部６０ａは、バンクグループ内制約時間（ｔＣＣＤ＿Ｌ）及びバンクグループ間制約時間（ｔＣＣＤ＿Ｓ）によって制限対象となっている要求を予め調停対象から排除することができるので、バンクグループ内制約時間（ｔＣＣＤ＿Ｌ）及びバンクグループ間制約時間（ｔＣＣＤ＿Ｓ）によって阻害されることなく円滑な処理を実現することができる。
【０１７６】
図２４は、第３実施形態に係る内部調停部６２３ｂの機能構成を示すブロックダイアグラムである。第３実施形態に係る内部調停部６２３ｂは、タイムアウトノード管理部６２３５と、バス方向制御部６２３６とに接続されている。第３実施形態に係る内部調停部６２３ｂは、第２実施形態に係るバンク間制御部６２３４ａの代わりにバンク間制御部６２３４ｂを備えている。バンク間制御部６２３４ｂは、タイムアウトノード検出部６２３４Ｔ５を備えている。
【０１７７】
バンク間制御部６２３４ｂには、バンク間制御部６２３４及びバンク間制御部６２３４ａと同様に、４個のバンク内調停部６２３２においてタイミング制約を満たしていることが確認されているＡｃｔ、Ｒｅａｄ、Ｗｒｉｔｅ及びＰｒｅＣｈａｒｇｅの各要求が入力される。
【０１７８】
バス方向制御部６２３６は、データ管理部６２３６Ｄと、方向ステートマシン６２３６Ｓと、切替タイマー６２３６Ｔとを有している。データ管理部６２３６Ｄは、書込み要求及び読出し要求の有無を管理している。方向ステートマシン６２３６Ｓは、内部データバスの５状態、すなわちＩＤＬＥ、Ｗｒｉｔｉｎｇ、Ｒｅａｄｉｎｇ、Ｒｅａｄ２Ｗｒｉｔｅ及びＷｒｉｔｅ２Ｒｅａｄの５つの状態を管理し、各ステータス（状態）を出力する。切替タイマー６２３６Ｔは、強制的な内部データバスの方向の切り替えのための時間を計測する。
【０１７９】
バス方向制御部６２３６は、切替タイマー６２３６Ｔの使用によって、書込み処理又は読出し処理の一方が内部データバスを占有し続けて、他方の処理が出来なくなることを抑制又は防止するために内部データバスのデータの流れる方向を切替（制御）することができる。切替タイマー６２３６Ｔは、方向ステートマシン６２３６Ｓが出力するステータス（状態）に基づいて、書込み処理又は読出し処理の一方が継続的に実行されている時間を計測し、すなわちカウンタを作動させ、予め設定されている一定期間に到達するとカウンタをリセットする。この一定期間は、図示しないレジスタで設定可能である。
【０１８０】
バス方向制御部６２３６は、データ管理部６２３６Ｄによる書込み要求及び読出し要求の有無に基づいて内部データバスの方向を制御する。すなわち、バス方向制御部６２３６は、たとえば書込み処理の継続に起因してカウンタがリセットされ、読出し要求が存在するとの情報をデータ管理部６２３６Ｄから取得した場合には、内部データバスの方向を書込み処理の方向から読出し処理の方向に切り替える。一方、バス方向制御部６２３６は、書込み処理の継続に起因してカウンタがリセットされ、読出し要求が存在しないとの情報をデータ管理部６２３６Ｄから取得した場合には、内部データバスの方向を書込み処理の方向のまま維持する。
【０１８１】
バス方向制御部６２３６は、書込み処理又は読出し処理の一方の処理中、たとえば書込み処理中に、書込み要求が無くなって読出し要求が存在するときには、切替タイマー６２３６Ｔによる計測時間が一定期間に到達する前に、内部データバスの方向を逆方向（この例では、読出し処理の方向）に切り替える。
【０１８２】
バス方向制御部６２３６は、さらに、閾値未満のＤＣＶ値が検出された場合には、例外処理（タイムアウト要求処理）として内部データバスの方向を逆方向に切り替えることができる。具体的には、バンク間制御部６２３４ｂのタイムアウトノード検出部６２３４Ｔ５は、閾値未満のＤＣＶ値を有する制御データを検出し、制御データの処理に必要な内部データバスの方向を特定する一方、方向ステートマシン６２３６Ｓから内部データバスの状態を表す状態信号ＤＳを取得して内部データバスの現在の方向を特定する。タイムアウトノード検出部６２３４Ｔ５は、制御データの処理に必要な内部データバスの方向が内部データバスの現在の方向と逆である場合には、バス方向制御部６２３６にタイムアウト信号ＤＣＣを送信し、内部データバスの方向を逆転させることができる。
【０１８３】
図２５は、第３実施形態に係るタイムアウトノード調停処理（ステップＳ３００）の内容を示すフローチャートである。タイムアウトノード調停処理は、閾値未満のＤＣＶ値を有する制御データであるタイムアウトノードと、ＤＣＶ値が閾値以上のノードである通常ノードとを対象とする調停処理である。タイムアウトノード調停処理では、タイムアウトノード管理部６２３５が使用される。タイムアウトノード管理部６２３５は、フラグ６２３５Ｆと、タイムアウトノードキュー６２３５Ｑとを有している。フラグ６２３５Ｆは、処理中のタイムアウトノードが存在するか否かを表すフラグである。タイムアウトノードキュー６２３５Ｑは、調停対象となるタイムアウトノードを保持するキューである。
【０１８４】
ステップＳ３１０では、バンク間制御部６２３４ｂは、フラグ６２３５Ｆの状態と状態信号ＤＳとに基づき、タイムアウトノードキュー６２３５Ｑに要求（たとえば書込み要求や読出し要求）を伴うタイムアウトノードが存在するか否かを判断する。
【０１８５】
バンク間制御部６２３４ｂは、タイムアウトノードキュー６２３５Ｑに登録されている要求を伴うタイムアウトノードが存在する場合には、処理をステップＳ３１５に進める。ステップＳ３１５では、バンク間制御部６２３４ｂは、タイムアウトノードキュー６２３５Ｑに登録されている要求を伴うタイムアウトノードの全てを最優先で処理する。バンク間制御部６２３４ｂは、タイムアウトノードキュー６２３５Ｑに登録されている要求を伴うタイムアウトノードが存在しない場合には、処理をステップＳ３２０に進める。
【０１８６】
ステップＳ３２０では、バンク間制御部６２３４ｂのタイムアウトノード検出部６２３４Ｔ５は、タイムアウトノードの検出処理を実行する。このように、バンク間制御部６２３４ｂは、要求を伴うタイムアウトノードが存在する場合には、新たにタイムアウトノードの検出処理及び調停処理を実行することなく、要求を伴うタイムアウトノードの処理を優先して実行し、要求を伴うタイムアウトが存在しない場合のみに、新たにタイムアウトノードの検出処理及び調停処理を実行することになる。これにより、バンク間制御部６２３４ｂは、新たなタイムアウトノードの検出に起因する処理中のタイムアウトノードの処理の阻害を予防し、タイムアウトノードの処理の円滑化を実現することができる。
【０１８７】
バンク間制御部６２３４ｂは、処理対象となっているタイムアウトノードが存在せず、タイムアウトノードが検出されなかった場合には、処理をバンク間調停処理（ステップＳ４００、Ｓ４００ａ、Ｓ４００ｃ、Ｓ４００ｅ及びＳ４００ｆ）に進める。これにより、バンク間制御部６２３４ｂは、通常ノードのみを対象とするバンク間調停処理を実行することができる。一方、バンク間制御部６２３４ｂは、タイムアウトノードが少なくとも１つでも検出された場合には、タイムアウトノードのみを調停の対象とするために処理をステップＳ３３０に進める。
【０１８８】
ステップＳ３３０では、バンク間制御部６２３４ｂは、タイムアウトノードピックアップ処理を実行する。タイムアウトノードピックアップ処理では、バンク間制御部６２３４ｂは、全てのタイムアウトノードをピックアップし、処理をバンク間調停処理（Ｓ４００，Ｓ４００ｂ，Ｓ４００ｄ〜Ｓ４００ｆ）に進める。これにより、バンク間制御部６２３４ｂは、タイムアウトノードのみを対象とするバンク間調停処理を実行することができる。バンク間調停処理の結果は、タイムアウトノードキュー６２３５Ｑに登録される。
【０１８９】
ステップＳ４００乃至Ｓ４００ｅでは、バンク間制御部６２３４ｂは、バンク間調停処理を実行する。バンク間調停処理は、タイムアウトノード検出部６２３４Ｔ５が複数のタイムアウトノードを検出した場合に、複数のタイムアウトノードをタイムアウトノードキュー６２３５Ｑに保持し、複数のタイムアウトノードの処理のための優先順位を決定する処理である。バンク間調停処理は、内部データバスの状態がＩＤＬＥ時、ＷＲＩＴＩＮＧ時、ＲＥＡＤＩＮＧ時、ＲＥＡＤ２ＷＲＩＴＥ時及びＷＲＩＴＥ２ＲＥＡＤ時のいずれであるかに応じて処理内容が異なる。以下では、状態毎にバンク間調停処理の内容が説明される。
【０１９０】
図２６は、第３実施形態に係るバンク間調停処理（方向制御（ＩＤＬＥ時：ステップＳ４００））の内容を示すフローチャートである。方向制御がＩＤＬＥ時には、処理対象となっているタイムアウトノードが存在せず、タイムアウトノードが検出されなかった場合には、バンク間制御部６２３４ｂは、通常ノードのみを対象とするバンク間調停処理を実行する。バンク間制御部６２３４ｂは、タイムアウトノードが検出されている場合には、タイムアウトノードのみを対象とするバンク間調停処理を実行する。
【０１９１】
ステップＳ４１０では、バンク間制御部６２３４ｂは、読出し要求又は書込み要求を伴うノード（タイムアウトノード又は通常ノード）が存在するか否かを判断し、読出し要求又は書込み要求を伴うノードが存在する場合には、処理をステップＳ４２０に進め、読出し要求又は書込み要求を伴うノードが存在しない場合には、処理をステップＳ４５０に進める。
【０１９２】
ステップＳ４２０では、バンク間制御部６２３４ｂは、読出し要求又は書込み要求を伴うノードが単一又は複数のいずれであるかを判断し、読出し要求又は書込み要求を伴うノードが単一である場合には、バンク間調停処理が不要なので、バンク間調停処理が完了し、複数である場合には、処理をステップＳ４３０に進める。
【０１９３】
ステップＳ４３０では、バンク間制御部６２３４ｂは、最終バンク、すなわち最後にアクセスしたバンクに対する要求を伴なうノードが存在する場合には、そのノードを選択して調停を終了し、最終バンクに対する要求を伴なうノードが存在しない場合には、ラウンドロビン方式で要求を選択する（ステップＳ４４０）。
【０１９４】
メモリ制御部６０ａは、複数ビートで構成される１トランザクションに１個のトランザクションＩＤを付与する。たとえば書込み処理の際には、このトランザクションＩＤに紐づく形で、書込みバッファテーブルの１エントリーに、書込みバッファテーブル６８２のどの位置にデータが保存されているかの情報が登録される。トランザクションＩＤは、そのすべてのデータがメモリに書き出されるまで保護されるので、効率よく書込みバッファ６８１及び書込みバッファテーブル６８２を使用するためには、既に書込みを開始したトランザクションＩＤは極力早く終了することが好ましい。この点は、読出しバッファ６９１及び読出しバッファテーブル６９２についても同様である。
【０１９５】
これにより、メモリ制御部６０ａは、書込みバッファ６８１、書込みバッファテーブル６８２、読出しバッファ６９１及び読出しバッファテーブル６９２といったハードウェアリソースを効果的に使用して円滑な処理を実現することができる。
【０１９６】
ステップＳ４５０では、バンク間制御部６２３４ｂは、ノードがＡｃｔｉｖａｔｅ要求、すなわちＡｃｔｉｖａｔｅ＿ｆｏｒ＿Ｒｅａｄ要求又はＡｃｔｉｖａｔｅ＿ｆｏｒ＿Ｗｒｉｔｅ要求であるか否かを判断し、ノードがＡｃｔｉｖａｔｅ要求である場合には、処理をステップＳ４８０に進め、ノードがＡｃｔｉｖａｔｅ要求でない場合には、処理をステップＳ４６０に進める。ノードは、Ａｃｔｉｖａｔｅ要求が存在しない場合には、ＰｒｅＣｈａｒｇｅ要求のみが存在することになる。
【０１９７】
ステップＳ４６０では、バンク間制御部６２３４ｂは、ノードがＰｒｅＣｈａｒｇｅ要求であるか否かを判断し、ＰｒｅＣｈａｒｇｅ要求でない場合には、バンク間調停処理が不要なので、バンク間調停処理が完了し、ＰｒｅＣｈａｒｇｅ要求である場合には、処理をステップＳ４６５に進める。
【０１９８】
ステップＳ４６５では、バンク間制御部６２３４ｂは、ＰｒｅＣｈａｒｇｅ要求を伴うノードが単一又は複数のいずれであるかを判断し、単一である場合には、バンク間調停処理が不要なので、バンク間調停処理が完了し、複数である場合には、ラウンドロビン方式で要求を選択する（ステップＳ４７０）。
【０１９９】
ステップＳ４８０では、バンク間制御部６２３４ｂは、Ａｃｔｉｖａｔｅ要求を伴うノードが単一又は複数のいずれであるかを判断し、単一である場合には、バンク間調停処理が不要なので、バンク間調停処理が完了し、複数である場合には、要求ピックアップ処理（ステップＳ４０ａ（図２１参照））で要求を選択する。
【０２００】
図２７は、第３実施形態に係るバンク間調停処理（方向制御（ＷＲＩＴＩＮＧ時：タイムアウトノード不存在の場合（ステップＳ４００ａ）））の内容を示すフローチャートである。方向制御がＷＲＩＴＩＮＧ時のバンク間調停処理は、ステップＳ４１０、ステップＳ４２０及びステップＳ４５０がそれぞれステップＳ４１０ａ、ステップＳ４２０ａ及びステップＳ４５０ａに変更されている点で、方向制御がＩＤＬＥ時のバンク間調停処理と相違する。
【０２０１】
ステップＳ４１０ａ、ステップＳ４２０ａ及びステップＳ４５０ａの処理は、バンク間制御部６２３４ｂが書込み要求を伴う通常ノードのみを処理の対象とする点で、読出し要求又は書込み要求を伴うノード（タイムアウトノード及び通常ノード）を処理の対象とするステップＳ４１０、ステップＳ４２０及びステップＳ４５０の処理と相違している。これにより、バンク間調停処理は、タイムアウトノード不存在の場合において、方向制御がＷＲＩＴＩＮＧ時には、書込み要求を伴う通常ノードのみを処理対象として円滑な処理を実現することができる。
【０２０２】
ステップＳ４３０では、バンク間制御部６２３４ｂは、最終バンク、すなわち最後にアクセスしたバンクに対する要求を伴なうノードが存在する場合には、そのノードを選択して調停を終了し、最終バンクに対する要求を伴なうノードが存在しない場合には、ラウンドロビン方式で要求を選択する（ステップＳ４４０）。この点では、ＷＲＩＴＩＮＧ時のバンク間調停処理は、ＩＤＬＥ時のバンク間調停処理と同一である。ただし、ＷＲＩＴＩＮＧ時には、最終バンクに対する要求を伴なうノードが存在する場合に、そのノードを選択すれば、書込みバッファ６８１及び書込みバッファテーブル６８２を効率的に使用することができる。
【０２０３】
図２８は、第３実施形態に係るバンク間調停処理（方向制御（ＷＲＩＴＩＮＧ時：タイムアウトノード存在の場合（ステップＳ４００ｂ）））の内容を示すフローチャートである。方向制御がＷＲＩＴＩＮＧ時において、タイムアウトノード存在の場合のバンク間調停処理は、ステップＳ４１０ａ、ステップＳ４２０ａ及びステップＳ４５０ａがそれぞれステップＳ４１０ｂ、ステップＳ４２０ｂ及びステップＳ４５０ｂに変更されている点と、ＲＥＡＤ切替処理（ステップＳ４９０）が追加されている点とにおいて、方向制御がＷＲＩＴＩＮＧ時において、タイムアウトノード不存在の場合のバンク間調停処理と相違する。
【０２０４】
ステップＳ４１０ｂ、ステップＳ４２０ｂ、ステップＳ４５０ｂ及びステップＳ４６０ｂの処理は、バンク間制御部６２３４ｂが書込み要求を伴うタイムアウトノードのみを処理の対象とする点で、書込み要求を伴う通常ノードのみを処理の対象とするステップＳ４１０ａ、ステップＳ４２０ａ、ステップＳ４５０ａ及びステップＳ４６０の処理と相違している。これにより、バンク間調停処理は、タイムアウトノードが存在する場合において、方向制御がＷＲＩＴＩＮＧ時には、書込み要求を伴うタイムアウトノードのみを処理対象として円滑な処理を実現することができる。
【０２０５】
図２９は、第３実施形態に係るＲＥＡＤ切替処理（ステップＳ４９０）の内容を示すフローチャートである。ステップＳ４９１では、バンク間制御部６２３４ｂは、読出し要求を伴うタイムアウトノードが存在するか否かを判断し、読出し要求を伴うタイムアウトノードが存在する場合には、処理をステップＳ４９２に進め、読出し要求を伴うタイムアウトノードが存在しない場合には、処理をステップＳ４９４に進める。
【０２０６】
ステップＳ４９２では、バンク間制御部６２３４ｂは、読出し要求を伴うタイムアウトノードが単一又は複数のいずれであるかを判断し、単一である場合には、バンク間調停処理が不要なので、バンク間調停処理が完了し、複数である場合には、ラウンドロビン方式で要求を選択する（ステップＳ４９３）。
【０２０７】
ステップＳ４９４では、バンク間制御部６２３４ｂは、タイムアウトノードがＡｃｔｉｖａｔｅ＿ｆｏｒ＿Ｒｅａｄ要求であるか否かを判断し、タイムアウトノードがＡｃｔｉｖａｔｅ＿ｆｏｒ＿Ｒｅａｄ要求である場合には、処理をステップＳ４９５に進め、タイムアウトノードがＡｃｔｉｖａｔｅ＿ｆｏｒ＿Ｒｅａｄ要求でない場合には、何らの処理も必要なく、処理を戻す（図２８参照）。
【０２０８】
ステップＳ４９５では、バンク間制御部６２３４ｂは、Ａｃｔｉｖａｔｅ＿ｆｏｒ＿Ｒｅａｄ要求を伴うタイムアウトノードが単一又は複数のいずれであるかを判断し、単一である場合には、バンク間調停処理が不要なので、バンク間調停処理が完了し、複数である場合には、要求ピックアップ処理（ステップＳ４０ａ（図２１参照））で要求を選択する。ステップＳ４９７では、バンク間制御部６２３４ｂは、内部データバスの方向をＷｒｉｔｉｎｇ状態からＲｅａｄｉｎｇ状態に変更させる。
【０２０９】
図３０は、第３実施形態に係るバンク間調停処理（方向制御（ＲＥＡＤＩＮＧ時：タイムアウトノード不存在の場合（ステップＳ４００ｃ）））の内容を示すフローチャートである。方向制御がＲＥＡＤＩＮＧ時のバンク間調停処理は、ステップＳ４１０、ステップＳ４２０及びステップＳ４５０がそれぞれステップＳ４１０ｃ、ステップＳ４２０ｃ及びステップＳ４５０ｃに変更されている点で、方向制御がＩＤＬＥ時のバンク間調停処理と相違する。
【０２１０】
ステップＳ４１０ｃ、ステップＳ４２０ｃ及びステップＳ４５０ｃの処理は、バンク間制御部６２３４ｂが読出し要求を伴う通常ノードのみを処理の対象とする点で、読出し要求又は書込み要求を伴うノード（タイムアウトノード及び通常ノード）を処理の対象とするステップＳ４１０、ステップＳ４２０及びステップＳ４５０の処理と相違している。これにより、バンク間調停処理は、タイムアウトノード不存在の場合において、方向制御がＲＥＡＤＩＮＧ時には、読出し要求を伴う通常ノードのみを処理対象として円滑な処理を実現することができる。
【０２１１】
ステップＳ４３０では、バンク間制御部６２３４ｂは、最終バンク、すなわち最後にアクセスしたバンクに対する要求を伴なうノードが存在する場合には、そのノードを選択して調停を終了し、最終バンクに対する要求を伴なうノードが存在しない場合には、ラウンドロビン方式で要求を選択する（ステップＳ４４０）。この点では、ＲＥＡＤＩＮＧ時のバンク間調停処理は、ＩＤＬＥ時のバンク間調停処理と同一である。ただし、ＲＥＡＤＩＮＧ時には、最終バンクに対する要求を伴なうノードが存在する場合に、そのノードを選択すれば、読出しバッファ６９１及び読出しバッファテーブル６９２を効率的に使用することができる。
【０２１２】
図３１は、第３実施形態に係るバンク間調停処理（方向制御（ＲＥＡＤＩＮＧ時：タイムアウトノード存在の場合（ステップＳ４００ｄ）））の内容を示すフローチャートである。方向制御がＲＥＡＤＩＮＧ時において、タイムアウトノード存在の場合のバンク間調停処理は、ステップＳ４１０ｃ、ステップＳ４２０ｃ及びステップＳ４５０ｃがそれぞれステップＳ４１０ｄ、ステップＳ４２０ｄ及びステップＳ４５０ｄに変更されている点と、ＷＲＩＴＥ切替処理（ステップＳ４９０ａ）が追加されている点とにおいて、方向制御がＲＥＡＤＩＮＧ時において、タイムアウトノード不存在の場合のバンク間調停処理と相違する。
【０２１３】
ステップＳ４１０ｄ、ステップＳ４２０ｄ、ステップＳ４５０ｄ及びステップＳ４６０ｄの処理は、バンク間制御部６２３４ｂが読出し要求を伴うタイムアウトノードのみを処理の対象とする点で、読出し要求を伴う通常ノードのみを処理の対象とするステップＳ４１０ｃ、ステップＳ４２０ｃ、ステップＳ４５０ｃ及びステップＳ４６０の処理と相違している。これにより、バンク間調停処理は、タイムアウトノードが存在する場合において、方向制御がＲＥＡＤＩＮＧ時には、読出し要求を伴うタイムアウトノードのみを処理対象として円滑な処理を実現することができる。
【０２１４】
図３２は、第３実施形態に係るＷＲＩＴＥ切替処理（ステップＳ４９０ａ）の内容を示すフローチャートである。ＷＲＩＴＥ切替処理は、ステップＳ４９１乃至ステップＳ４９５及びステップＳ４９７がそれぞれステップＳ４９１ａ乃至ステップＳ４９５ａ及びステップＳ４９７ａに変更され、処理対象が読出し要求から書込み要求に変更されている点でＲＥＡＤ切替処理（ステップＳ４９０）と相違する。ＷＲＩＴＥ切替処理（ステップＳ４９０ａ）では、さらに、バンク間制御部６２３４ｂは、内部データバスの方向をＲｅａｄｉｎｇ状態からＷｒｉｔｉｎｇ状態に変更（ステップＳ４９７ａ）させる点でＲＥＡＤ切替処理（ステップＳ４９０）と相違する。
【０２１５】
図３３は、第３実施形態に係るバンク間調停処理（方向制御（ＲＥＡＤ２ＷＲＩＴＥ時（ステップＳ４００ｅ）））の内容を示すフローチャートである。方向制御がＲＥＡＤ２ＷＲＩＴＥ時のバンク間調停処理は、ステップＳ４１０、ステップＳ４２０及びステップＳ４５０がそれぞれステップＳ４１０ｃ、ステップＳ４２０ｃ及びステップＳ４５０ｃに変更されている点で、方向制御がＩＤＬＥ時のバンク間調停処理と相違する。ＲＥＡＤ２ＷＲＩＴＥ時の状態は、Ｒｅａｄｉｎｇ状態からＷｒｉｔｉｎｇ状態への遷移状態なので、読出し要求を処理しつつ書込み要求のためのＡｃｔｉｖａｔｅ処理を実行する状態である。
【０２１６】
ステップＳ４１０ｃ、ステップＳ４２０ｃ及びステップＳ４５０ｃの処理は、バンク間制御部６２３４ｂが読出し要求を伴うタイムアウトノード及びＡｃｔｉｖａｔｅ＿ｆｏｒ＿Ｗｒｉｔｅ要求のみを処理の対象とする点で、読出し要求又は書込み要求を伴うタイムアウトノードを処理の対象とするステップＳ４１０、ステップＳ４２０及びステップＳ４５０の処理と相違している。これにより、バンク間調停処理は、方向制御がＲＥＡＤ２ＷＲＩＴＥ時には、読出し要求を処理しつつ書込み要求のためのＡｃｔｉｖａｔｅ処理を円滑に実行することができる。
【０２１７】
図３４は、第３実施形態に係るバンク間調停処理（方向制御（ＷＲＩＴＥ２ＲＥＡＤ時（ステップＳ４００ｆ）））の内容を示すフローチャートである。方向制御がＷＲＩＴＥ２ＲＥＡＤ時のバンク間調停処理は、ステップＳ４１０、ステップＳ４２０及びステップＳ４５０がそれぞれステップＳ４１０ｄ、ステップＳ４２０ｄ及びステップＳ４５０ｄに変更されている点で、方向制御がＩＤＬＥ時のバンク間調停処理と相違する。ＷＲＩＴＥ２ＲＥＡＤ時の状態は、ＷＲＩＴＥ状態からＲＥＡＤ状態への遷移状態なので、書込み要求を処理しつつ読出し要求のためのＡｃｔｉｖａｔｅ処理を実行する状態である。
【０２１８】
ステップＳ４１０ｄ、ステップＳ４２０ｄ及びステップＳ４５０ｄの処理は、バンク間制御部６２３４ｂは、書込み要求を伴うタイムアウトノード及びＡｃｔｉｖａｔｅ＿ｆｏｒ＿Ｒｅａｄ要求のみを処理の対象とする点で、読出し要求又は書込み要求を伴うタイムアウトノードを処理の対象とするステップＳ４１０、ステップＳ４２０及びステップＳ４５０の処理と相違している。これにより、バンク間調停処理は、方向制御がＷＲＩＴＥ２ＲＥＡＤ時には、書込み要求を処理しつつ読出し要求のためのＡｃｔｉｖａｔｅ処理を円滑に実行することができる。
【０２１９】
このように、第３実施形態に係るメモリ制御部６０ａは、バンクグループ内制約時間（ｔＣＣＤ＿Ｌ）及びバンクグループ間制約時間（ｔＣＣＤ＿Ｓ）によって制限対象となっている要求を予め調停対象から排除することができるので、バンクグループ内制約時間（ｔＣＣＤ＿Ｌ）及びバンクグループ間制約時間（ｔＣＣＤ＿Ｓ）によって阻害されることなく円滑な処理を実現することができる。さらに、メモリ制御部６０ａは、書込みバッファ６８１、書込みバッファテーブル６８２、読出しバッファ６９１及び読出しバッファテーブル６９２といったハードウェアリソースを効果的に使用して円滑な処理を実現することができる。
【０２２０】
Ｈ．変形例：
本開示は、上記各実施形態だけでなく、以下のような変形例でも実施することができる。
【０２２１】
変形例１：上記実施形態では、ＡＸＩプロトコルを使用し、ＡＸＩプロトコルに基づいてＱＯＳ値をサポートしているが、必ずしもＡＸＩプロトコルを使用する必要はなく、ＱＯＳ値の代わりに通信の優先性を表す他の通信優先性データを使用してもよい。本開示は、メモリ制御部の外部の機器との通信の優先性を表す通信優先性データを使用して優先的に処理を実行するものであればよい。
【０２２２】
変形例２：上記実施形態では、メモリ制御部の外部の機器との通信の優先性を表す通信優先性データ（たとえばＱＯＳ値）を使用してメモリの制御における処理の優先性を表すＤＣＶ値を生成しているが、必ずしも通信優先性データを使用してＤＣＶ値を生成する必要はない。本開示は、割り込み処理の実行に使用される処理優先性データ（たとえば初期値が同一）を生成するものであればよい。
【０２２３】
変形例３：上記実施形態では、通信優先性データを使用してＤＣＶ値を生成しているが、逆にＤＣＶ値に基づいて通信優先性データを調整するようにしてもよい。具体的には、通信制御部は、たとえば閾値未満のＤＣＶ値を有するトランザクションＴのＱＯＳ値を、たとえば「２」から「０」に変更するように、すなわちＤＣＶ値に応じて通信における優先性を高めるように構成されていてもよい。これにより、画像形成装置は、メモリ制御部での長時間の滞留に起因するシステム全体の処理の遅延を抑制することができる。
【０２２４】
変形例４：上記実施形態では、本開示は、画像読取部と画像形成部とを備える画像形成装置に適用されているが、画像送信部を有し、画像送信装置として機能するファクシミリ機能を有する画像形成装置に適用してもよい。ファクシミリ機能は、通信対象となる画像データをメモリから読出して送信する機能を含んでいる。
【０２２５】
変形例５：上記実施形態では、本開示は、画像形成装置に適用されているが、画像形成装置に限定されない。本開示は、画像形成装置以外の装置に利用されるメモリを制御するメモリ制御装置にも適用可能である。
【符号の説明】
【０２２６】
１  画像形成装置
１０  制御部
２０  画像処理部
３０  画像形成部
４０  記憶部
４１  校正用データ記憶領域
５０  画像読取部
６０  メモリ制御部
７０  ＤＤＲメモリ
【図１】
2020109642.tif 000003
【図２】
2020109642.tif 000004
【図３】
2020109642.tif 000005
【図４】
2020109642.tif 000006
【図５】
2020109642.tif 000007
【図６】
2020109642.tif 000008
【図７】
2020109642.tif 000009
【図８】
2020109642.tif 000010
【図９】
2020109642.tif 000011
【図１０】
2020109642.tif 000012
【図１１】
2020109642.tif 000013
【図１２】
2020109642.tif 000014
【図１３】
2020109642.tif 000015
【図１４】
2020109642.tif 000016
【図１５】
2020109642.tif 000017
【図１６】
2020109642.tif 000018
【図１７】
2020109642.tif 000019
【図１８】
2020109642.tif 000020
【図１９】
2020109642.tif 000021
【図２０】
2020109642.tif 000022
【図２１】
2020109642.tif 000023
【図２２】
2020109642.tif 000024
【図２３】
2020109642.tif 000025
【図２４】
2020109642.tif 000026
【図２５】
2020109642.tif 000027
【図２６】
2020109642.tif 000028
【図２７】
2020109642.tif 000029
【図２８】
2020109642.tif 000030
【図２９】
2020109642.tif 000031
【図３０】
2020109642.tif 000032
【図３１】
2020109642.tif 000033
【図３２】
2020109642.tif 000034
【図３３】
2020109642.tif 000035
【図３４】
2020109642.tif 000036