(57)【特許請求の範囲】
【請求項１】
１つのメモリに対して複数のアクセス要求元からのアクセスを制御するメモリアクセス制御装置において、
符号化されたデータを上記メモリに記憶させる第１のアクセス要求元と、
上記メモリに記憶された上記符号化されたデータを読み出す第２のアクセス要求元と、
読み出された上記符号化されたデータを復号する復号手段と、
上記メモリと復号手段との間に設けられ、上記符号化されたデータを一時的に記憶するバッファ手段と、
上記バッファ手段内のデータの消費速度を計測し、予め決められた基準値と比較する消費速度比較手段と、
上記消費速度比較手段の比較出力により、上記アクセス要求元のメモリアクセスの調停を行うメモリアクセス調停手段と、
調停された上記アクセス要求元のアクセス・リクエストに基づきデータの書き込み・読み出しを行うメモリ・コントローラとを有することを特徴とするメモリアクセス制御装置。
【請求項２】
前記バッファ手段は、２つのバンクを持つダブルバッファ構成を有し、上記アクセス要求元と上記メモリコントローラの双方から同時にアクセス可能である請求項１記載のメモリアクセス制御装置。
【請求項３】
前記バッファ手段内のデータの消費速度と比較される基準値は、上記符号化されたデータの平均圧縮率が１であった時に、上記符号化されたデータの読み出しに必要なメモリバンド幅に基づいて決定される請求項１または２記載のメモリアクセス制御装置。
【請求項４】
前記バッファ手段内のデータの消費速度の方が、予め設定された基準値よりも小さかったことを、前記消費速度比較手段の比較出力が示している時は、すべてのメモリアクセスをラウンドロビンで許容し、前記バッファ手段内のデータの消費速度の方が、予め設定された基準値よりも大かったことを、前記消費速度比較手段の比較出力が示している時は、上記符号化されたデータの書き込みメモリアクセスの代わりに上記符号化されたデータの読み出しメモリアクセスを行うように調停される請求項１、２または３記載のメモリアクセス制御装置。
【請求項５】
符号化されたデータを１つのメモリに記憶させるために上記メモリにアクセスし、上記メモリに記憶された上記符号化されたデータを読み出すために上記メモリにアクセスし、上記メモリから読み出した上記符号化されたデータを復号するメモリアクセス制御方法において、
上記メモリから読み出した上記符号化されたデータを所定のバッファに一時記憶するステップと、
上記符号化されたデータの復号のために上記バッファから上記符号化されたデータを読み出すステップと、
上記バッファ内のデータの消費速度を計測し、予め決められた基準値と比較するステップと、
上記比較の結果に基づいて上記メモリに対するアクセスを調停するステップとを有することを特徴とするメモリアクセス制御方法。
【請求項６】
符号化アルゴリズムの数に対応した複数の符号化されたデータを１つのメモリにそれぞれ記憶させる複数の第１のアクセス要求元と、
上記メモリに記憶された上記複数の符号化されたデータをそれぞれ読み出す複数の第２のアクセス要求元と、
上記複数の符号化されたデータをそれぞれ復号する複数の復号手段と、
前記複数の復号手段により復号された複数の復号されたデータを上記メモリにそれぞれ記憶させる複数の第３のアクセス要求元と、
上記メモリに記憶された上記複数の復号されたデータを読み出す複数の第４のアクセス要求元と、
上記メモリと上記複数の復号手段との間に設けられ、上記複数の符号化されたデータを一時的に記憶する符号データの種類に対応した複数のバッファ手段と、
上記複数のバッファ手段内のデータの消費速度をそれぞれ計測し、予め決められた基準値と比較する複数の消費速度比較手段と、
上記複数の消費速度比較手段の出力によりメモリアクセスの調停を行うメモリアクセス調停手段と、
調停されたアクセス要求元のアクセス・リクエストに基づきデータの書き込み・読み出しを行うメモリ・コントローラとを有し、
上記複数の復号されたデータをマージして出力装置に転送することを特徴とする画像復号装置。
【請求項７】
前記複数のバッファ手段内のデータの消費速度が、予め設定された基準値よりも大きいことを、前記複数の消費速度比較手段の比較出力のいづれかが示している時は、対応する符号化アルゴリズムで符号されたデータの書き込みメモリアクセスの代わりに、その符号化アルゴリズムで符号化されたデータの読み出しメモリアクセスを優先して行うように調停される請求項６記載の画像復号装置。
【請求項８】
符号化アルゴリズムの数に対応した複数の符号化されたデータを１つのメモリにそれぞれ記憶させる複数の第１のアクセス要求元と、
上記メモリに記憶された上記複数の符号化されたデータをそれぞれ読み出す複数の第２のアクセス要求元と、
上記複数の符号化されたデータをそれぞれ復号する複数の復号手段と、
前記複数の復号手段により復号された複数の復号されたデータを上記メモリにそれぞれ記憶させる複数の第３のアクセス要求元と、
上記メモリに記憶された上記複数の復号されたデータを読み出す複数の第４のアクセス要求元と、
上記メモリと上記複数の復号手段との間に設けられ、上記複数の符号化されたデータを一時的に記憶する符号データの種類に対応した複数のバッファ手段と、
上記複数のバッファ手段内のデータの消費速度をそれぞれ計測し、予め決められた基準値と比較する複数の消費速度比較手段と、
上記複数の消費速度比較手段の出力によりメモリアクセスの調停を行うメモリアクセス調停手段と、
調停されたアクセス要求元のアクセス・リクエストに基づきデータの書き込み・読み出しを行うメモリ・コントローラと、
上記複数の復号されたデータをマージして表示装置に転送する手段とを１チップ内に集積した半導体集積回路。
【請求項９】
１つのメモリに対して複数のアクセス要求元からのアクセスを制御するメモリアクセス制御装置において、
データを上記メモリに記憶させる第１のアクセス要求元と、
上記メモリに記憶された上記データを読み出す第２のアクセス要求元と、
上記メモリとデータ転送先先との間に設けられ、上記データを一時的に記憶するバッファ手段と、
上記バッファ手段内のデータの消費速度を計測し、予め決められた基準値と比較する消費速度比較手段と、
上記消費速度比較手段の比較出力により、上記アクセス要求元のメモリアクセスの調停を行うメモリアクセス調停手段と、
調停された上記アクセス要求元のアクセス・リクエストに基づきデータの書き込み・読み出しを行うメモリ・コントローラとを有することを特徴とするメモリアクセス制御装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、メモリアクセス制御技術、このメモリアクセス技術を適用した半導体集積回路および画像復号装置に関し、特に符号化された画像データを復号して、それをプリンタに転送するのに適した半導体集積回路および画像復号装置に関するものである。
【０００２】
【従来の技術】
近年、マルチメディアやインターネットなどの発展により計算機が扱わねばならないデータ量が飛躍的に伸びており、プリンタなどの表示装置にも高解像度で、高速な処理が要求されている。しかし、高解像度なデータは、蓄える時には大きな記憶容量を要求し、転送の際には大きなバンド幅を要求する。さもなければ大きな転送時間を要求し、特にシステムが、時間的制限のあるリアルタイム・システムであった時にはデータの損失を招くこともある。例えば、Ａ４サイズの紙、１ページに６００ｓｐｉ（ｓｐｏｔ  ｐｅｒ  ｉｎｃｈ）の解像度でフルカラー（イエロー、マゼンタ、シアン、ブラックがそれぞれ８−ｂｉｔ、つまり２５６階調）で印字する時は、約１３０ＭＢ（メガバイト）もの膨大な画像データを転送しなければならない。このような状況では、データの符号化（圧縮）、復号化（伸長）技術は必要不可欠なものである。
【０００３】
ところで、ゼログラフィを利用したプリンタ装置は、動作を開始したのちには、それに追従して印字する画像データを供給し続けなければならないという意味で、それを制御するシステムはリアルタイム・システムである。このようなリアルタイム・システムでかつ符号化されたデータを扱う時には、復号にもリアルタイム性が要求されるので、復号はハードウェアで行われるのが普通である。その際、高速動作が要求されるのは復号回路だけでなく、復号回路への符号化されたデータ（以降、符号データと呼ぶ）の供給や、復号されたデータ（以降、復号データと呼ぶ）の受け取りにも高速動作が要求される。それらが高速に動作できないと復号回路を待たせてしまうことになるからである。通常、符号データの供給元や復号データの転送先としてはメモリが使用され、メモリとして高速で高性能のものが必要とされる。しかも、大容量のメモリ領域が必要とされる。なぜなら、符号データおよび復号データ自体データ量が多く、さらに符号化アルゴリズムによっては復号時に必要となる参照画像データを記憶したり、ＪＰＥＧ（Ｊｏｉｎｔ  Ｐｈｏｔｏｇｒａｐｈｉｃ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ）のようなブロック符号化アルゴリズムを用いた時にはブロック・ラスタ変換に必要な記憶領域なども用意して管理しなければならないからだ。
【０００４】
そのため、従来は複数の高速なメモリを用意し、それらを並列にアクセスすることで高速性を確保していた。しかし、複数のメモリを使用することで装置の規模を大きくしたり、装置自身が半導体集積回路（ＬＳＩ）として実装される時にはピン数の増大を招き、結果としてコスト増大の原因となっていた。
【０００５】
本発明では、この点を鑑み考案されたもので、複数のメモリに分散されていたアクセスを１つのメモリに集中させ、その１つのメモリに効果的にアクセスする手段を提供することで回路規模、コストの増大を防ぐものである。
【０００６】
このような点に鑑み提案された従来例としては特開８−３１４７９３号公報あるが、そこでは符号量制御を用いた符号化アルゴリズムにより復号時の最大のバンド幅を計算し、それに見合うだけのメモリ・バンド幅を持つメモリシステムを、リフレッシュが必要なＤＲＡＭで構築し、そのメモリシステムを異なる形式のデータ（符号データと復号データ）で時分割的にアクセスしてメモリシステムの共有を行うシステムにおいて、内部処理などでメモリアクセスの発生しない無効期間にアクセス間隔に余裕のあるメモリアクセス（例えば、符号データの書き込みやリフレッシュ）を行うことでメモリバンド幅の有効利用を図り、また、プライオリティの低いメモリアクセスが長期間待たされないように、前回サービスされたメモリアクセスの種類によりプライオリティを変更して、メモリアクセスのスケジューリングを行うことで、メモリの有効利用を行うメモリアクセス制御方法ならびに、それを適用した半導体集積回路および画像復号装置について開示している。
【０００７】
しかし、この方法には以下のような問題がある。
【０００８】
▲１▼符号量制御しているので復号データにひずみが現れる。
▲２▼内部処理を高速化したり、もともと内部処理の軽い復号アルゴリズムには適用できない。また、現状の半導体集積回路の速度向上率と外部メモリデバイスの速度向上率を比較すると半導体内部での処理よりも外部デバイスの速度が基準となるケースがますます増えることが予想され、外部デバイスの速度がメモリアクセス上のボトルネックになる。
▲３▼メモリアクセスの種類によりプライオリティを変更して、メモリアクセスのスケジューリングを行っているが、所詮は数種類の固定スケジューリング・パターンを前回サービスされたメモリアクセスの種類により切り替えるものであって、半ば固定的で柔軟性に乏しい。また、その実現にもスケジューリングのパターン数分の調停回路が必要になり、あまりパターンを増やせない。特に複数の符号化アルゴリズムを採用したシステムには対応しにくく、複数の符号化アルゴリズムを採用すると、メモリアクセスの種類が数倍になってしまう。
【０００９】
ところで、このような画像復号装置では、出力の転送レートは接続される出力（表示）装置により一定であることが普通である。例えば、あるディスプレイ装置では１秒間に３０フレーム、あるプリンタ装置では１分間に６０枚というようにである。さらに通常は解像度も一定であるから、符号化されていないデータ、即ちオリジナルのデータや復号されたデータのリード／ライトに要求されるメモリバンド幅は固定である。これに対して符号化されたデータのリード／ライトに要求されるメモリバンド幅は、ある大きな時間単位、例えば、１フレームとか紙１ページあるいはそれらを数個に分割した単位であるバンドで考えれば、符号化後のデータ量に比例する。もし１／１０にデータ量が圧縮されていれば、必要なメモリバンド幅は平均で１／１０となる。しかし、これはどの小さな区間を取ってもデータ量が１／１０であることを意味しない。最悪の区間では符号化後のデータ量がオリジナルのデータ量よりも大きくなることもある。これは一時的に必要とするメモリバンド幅が大きくなることを意味する。
【００１０】
この必要メモリバンド幅の揺らぎに対する対応としては、一般的に符号化時にどの小さな区間でも復号データの量を一定量以下に制限する符号量制御を実行することと、メモリバンド幅の揺らぎを吸収できるだけの大きな、共有されないバッファを用意することであるが、前者は復号後の画像にひずみをもたらし、後者は、大きなバッファは集積回路の中に取り込めないし、外部に占有バッファを持つのは、集積回路のピン数を小さくする、メモリを有効に使うという本来の目的に対して本末転倒である。
【００１１】
次に、１つの画像データに対して１つの符号化アルゴリズムだけを適用するのではなく、１つの画像を形成する複数の要素に対してそれらにより適した別々な符号化アルゴリズムを適用して符号化効率を上げる手法がある。例えばＭＰＥＧ−４（Ｍｏｔｉｏｎ  Ｐｉｃｔｕｒｅ  Ｃｏｄｉｎｇ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ−４）の中間報告によれば１つの画像を形成する個々のオブジェクト毎に符号化するオブジェクト符号化が提案され審議されている。しかし、このようなシステムでは多くの異なる形式のデータ、異なる要求メモリバンド幅のデータがメモリ・バッファとの間でやりとりされ、特開８−３１４７９３号公報のように固定されたシーケンスでは、複数の符号データの圧縮率の変化には効率的に対応できない。
【００１２】
【発明が解決しようとする課題】
上述のように、本発明の目的は、バッファメモリの容量、メモリバス幅、半導体集積回路の入出力ピン数の増大および動作周波数の高速化を抑えて、効率の良いメモリシステムを実現することである。
【００１３】
【課題を解決するための手段】
本発明によれば、上述の目的を達成するために、１つのメモリに対して複数のアクセス要求元からのアクセスを制御するメモリアクセス制御装置において、符号化されたデータを上記メモリに記憶させる第１のアクセス要求元と、上記メモリに記憶された上記符号化されたデータを読み出す第２のアクセス要求元と、読み出された上記符号化されたデータを復号する復号手段と、上記メモリと復号手段との間に設けられ、上記符号化されたデータを一時的に記憶するバッファ手段と、上記バッファ手段内のデータの消費速度を計測し、予め決められた基準値と比較する消費速度比較手段と、上記消費速度比較手段の比較出力により、上記アクセス要求元のメモリアクセスの調停を行うメモリアクセス調停手段と、調停された上記アクセス要求元のアクセス・リクエストに基づきデータの書き込み・読み出しを行うメモリ・コントローラとを設けるようにしている。
【００１４】
さらに、本発明を詳細に説明する。本発明では、例えば、最悪の平均圧縮率を”１”と仮定して、それに見合うだけのメモリ・バンド幅を持つメモリシステムを構築し、復号回路と外部メモリ・バッファとの間に集積回路の中に取り込める少量のバッファを用意し、そのバッファ内のデータの消費速度を計測し、消費速度が基準値よりも大きいときには、外部メモリ・バッファから内部バッファへの符号データの読み出し転送により大きなメモリバンド幅を提供し、その分を符号データの書き込み転送に使用するメモリバンド幅から差し引くメモリアクセス制御手法を提案する。ここで最悪の平均圧縮率を”１”と仮定したが、復号後に完全にオリジナルのデータが復元される可逆符号化では、あらゆる画像データに対してこれを保証することはできない。しかし、符号化時にオリジナルのデータの大きさを越えている時には、符号化後のデータを送るのではなく、オリジナルのデータを送るとすれば、最悪の平均圧縮率が”１”でもリアルタイム復号を保証するということはすべてのデータに対してリアルタイムのプリントを保証すると言える。基準値とは、平均圧縮率が”１”であった時の平均メモリバンド幅、つまり符号化されていないデータの要求するメモリバンド幅と同じであり、少量バッファの消費速度が基準値を越えるということは、現在、復号回路で復号していた小さな区間では平均バンド幅以上のバンド幅を必要としていたということを意味している。
【００１５】
この手法によれば、１ぺージのデータがスキャン画像用と文字・図形画像用の２つの符号化アルゴリズムで符号化されている時は、１ページの中でスキャン画像の部分や文字・図形の部分はある程度連続しているのが普通なので、上記のように復号回路のデータ消費速度を計測し、その消費速度が基準値よりも大きかった符号データの読み出し転送を優先することで効果的な先読みができる。
【００１６】
【発明の実施の態様】
以下、本発明の実施例の画像復号装置について説明する。まず、この画像復号装置に関連する画像の処理フローについて説明する。
【００１７】
図１は、画像の処理フローを示しており、この図において、ホスト・システム（１）（図２参照）上では、ページ記述言語からプリントに必要な画像データを生成するデコンポーザ（１００）と呼ばれるソフトウェアが走っている。このデコンポーザ（１００）はページ記述言語を解釈することにより、生成する画像データを文字や図形などの文字・図形画像（１０１）と、自然画像などのスキャン画像（１０２）に分離して生成する。また、その時にそれらの切替え信号として働く切替えタグ（１０３）を生成する。さらに分離された画像は、ホスト・システム（１０１）により、それぞれその後の符号化アルゴリズムＡ、符号化アルゴリズムＢで符号化効率がよくなるようなダミー・データがパディングされて、２ページ分のデータとなる。パディングのデータは通常は白を表す８−ｂｉｔ値”ＦＦ”でよい。
【００１８】
次にパディングされたスキャン画像（１０２）は、スキャン画像に適した符号化アルゴリズムＢにより符号化され、パディングされた文字・図形画像（１０１）は、それに適したの符号化アルゴリズムＡにより符号化される。また、切替えタグも符号化アルゴリズムＡにより符号化されるものとする。以降、それらの符号化アルゴリズムで符号化されたデータをそれぞれ符号データＡ、符号データＢと呼ぶ。例えば符号化アルゴリズムＡは、注目画素を近隣の画素値から予測し、その予測誤差をハフマン符号化した予測符号化の１種類であり、符号化アルゴリズムＢは、８×８の画素ブロックに対してＤＣＴ（Ｄｉｓｃｒｅｔｅ  Ｃｏｓｉｎｅ  Ｔｒａｎｓｆｏｒｍ）変換を行って量子化をするＪＰＥＧに準じた符号化アルゴリズムである。
【００１９】
以上までが、ホスト・システム（１）を中心に行われる作業であり、以降できあがった符号データは、画像復号装置に送られ処理される。即ち、符号データＡ、符号データＢは、復号回路Ａ（９）、復号回路Ｂ（１０）により、復号データＡ、復号データＢにそれぞれ復号され、後述のマージ回路（１５）によりスキャン画像と文字・図形画像が適切なページ内位置に配置されるように出力の切替えが行われ、外部プリント装置（図示しない）に転送される。以上が、画像データがプリントされるまでの流れである。
【００２０】
つぎに本発明の実施例の構成を図２を参照して説明する。図２において、（１）はホスト・システムであり、すでに複数の符号化アルゴリズムで符号化された画像データを主記憶あるいは磁気記憶装置に蓄えている。（２）はホスト・システム（１）と外部処理装置を接続するバスである。（３）は本発明で提案する画像復号装置であり、ホスト・システム（１）から受け取った符号化された画像データを復号して外部プリント装置（図示しない）に転送するものである。（２０）は画像復号装置が画像の復号中に一時的な記憶エリアとして用いるメモリ・バッファである。（９）はある符号化アルゴリズムＡで符号化されたデータを復号する復号回路Ａである。（１０）はある符号化アルゴリズムＢで符号化されたデータを復号する復号回路Ｂである。（５）はライトバッファＡであり、は符号化アルゴリズムＡで符号化されたデータをホスト・システム（１）内の主記憶からメモリ・バッファに転送する際に一時的に蓄えておく少量のバッファである。（６）はライトバッファＢ１であり、符号化アルゴリズムＢで符号化されたデータをホスト・システム（１）内の主記憶からメモリ・バッファ（２０）に転送する際に一時的に蓄えておく少量のバッファである。（４）は、ホスト・システム（１）にある符号データをライトバッファＡ１（５）またはライトバッファＢ１（６）に転送するＤＭＡコントローラである。（７）はリードバッファＡ２であり、メモリ・バッファ（２０）に蓄えられた符号化データを復号回路Ａ（９）に転送する際の先読みバッファとして使用される少量のバッファである。（８）はリードバッファＢ２であり、メモリ・バッファ（２０）に蓄えられた符号化データを復号回路Ｂ（１０）に転送する際の先読みバッファとして使用される少量のバッファである。（１１）はライトバッファＡ３であり、復号回路Ａ（９）で復号されたデータをメモリ・バッファ（２０）に転送する際に使用される少量のバッファである。（１２）はライトバッファＢ３であり、復号回路Ｂ（１０）で復号されたデータをメモリ・バッファ（２０）に転送する際に使用される少量のバッファである。（１３）はリードバッファＡ４であり、符号化アルゴリズムＡで符号化され、復号回路Ａ（９）により復号されたメモリ・バッファ内（２０）の復号データをマージ回路（１５）に転送する際に使用される少量のバッファである。（１４）はリードバッファＢ４であり、符号化アルゴリズムＢで符号化され、復号回路Ｂ（１０）により復号されたメモリ・バッファ（２０）内の復号データをマージ回路（１５）に転送する際に使用される少量のバッファである。ところでこれらの少量のバッファ群（ライトバッファＡ１、ライトバッファＢ１、リードバッファＡ２、リードバッファＢ２、ライトバッファＡ３、ライトバッファＢ３、リードバッファＡ４、リードバッファＢ４）の大きさはすべて同じであり、メモリシステムに対して効率的なバースト転送をサポートするのに十分な量であり、なおかつ、集積回路に内蔵できるぐらいの小ささである。（１５）はマージ回路であり、符号化アルゴリズムＡ、Ｂで符号化され、復号回路Ａ（９）、復号回路Ｂ（１０）でそれぞれ復号されたデータを切替えタグにより選択し、プリンタ・インタフェース（Ｉ／Ｆ）回路（１９）に出力する。
【００２１】
なお図２では、切替えタグ自身も画像データと共に符号化アルゴリズムＡで符号化されており、復号回路Ａにより復号されているとしているが、符号化されない別のストリームとされていてもよい。
【００２２】
（１６）は、消費速度比較回路であり、リードバッファＡ２（７）とリードバッファＢ２（８）内のデータの消費速度を計測し、それらが基準値を越えていたかどうかをメモリ・アクセス調停回路（１７）に知らせる。（１７）はメモリ・アクセス調停回路であり、各バッファからのメモリ・アクセス・リクエストと消費速度比較回路（１６）の出力する結果をもとにメモリアクセスの調停を行う。（１８）はメモリ・コントローラであり、調停されたメモリ・アクセスに対応して、各リード／ライトバッファとメモリ・バッファ（２０）との間でデータの転送を行う。（１９）はプリンタＩ／Ｆ回路であり、外部プリント装置からの制御信号にタイミングを合わせてデータを出力するものである。
【００２３】
なお、図２は本発明の原理的構成を説明するためのものであり、出力は外部プリント装置ではなく、ディスプレイなどの表示装置でもよい。また、図２では符号化アルゴリズムをＡ、Ｂの２つとし、復号回路もＡ、Ｂの２つとしているが、これは２つに限定されるものではなく、３つ以上あってもよいし１つでもよい。
【００２４】
次に図２の各部について詳細に説明する。ホストシステム（１）は、汎用のパソコンまたはワークステーションであり上述したように、ページ記述言語より２つの符号データ（Ａ、Ｂ）を生成し、その符号化されたデータをその内部の主記憶あるいは磁気記憶装置（ハードディスク装置）に蓄えている。あるいは他のホストシステムにより生成された符号データ（Ａ、Ｂ）をネットワーク経由で受信し、自分自身の主記憶あるいは磁気記憶装置（ハードディスク装置）に蓄えていてもよい。また、ホスト・システム（１）は画像復号装置（３）の制御も行う。具体的には、後述するＤＭＡＣ（４）に転送開始アドレス、転送サイズなどを設定し、ＤＭＡ転送を開始させたり、画像復号装置（３）の発行するインタラプト信号を受信し適切な処理を行う。
【００２５】
バス（２）は、ホストシステム（１）と画像復号装置（３）とを接続するためのバスであり、これはホストシステムに予め用意されているＩ／Ｏ拡張の用の標準バスでも良いし、新たに設計されホストシステム（１）と接続されたバスのどちらでも良い。
【００２６】
画像復号装置（３）は、ホストシステム（１）からの指示により、ホスト・システム（１）内にある複数の符号データを復号して、その復号データを外部プリント装置のタイミングに合わせて出力するものである。また、ローカルなメモリ・バッファ（２０）を復号時のワークエアリアとして使用する。
【００２７】
ＤＭＡＣ（４）は、ＤＭＡコントローラであり、ホストシステム（１）からの指示により起動され、ライトバッファＡ１、ライトバッファＢ１の空き情報を監視して、ホストシステム内の符号データＡをライトバッファＡ１に、また符号データＢをライトバッファＢ１に転送する。
【００２８】
ライトバッファＡ１（５）は、符号化アルゴリズムＡで符号化された符号データＡをメモリ・バッファ（２０）に転送する際に使用される少量のバッファで、ＤＭＡＣ（４）によりライトされ、メモリコントローラ（１８）によりリードされる。同様に、ライトバッファＢ１（６）は、符号化アルゴリズムＢで符号化された符号データＢをメモリ・バッファ（２０）に転送する際に使用される少量のバッファで、ＤＭＡＣ（４）によりライトされ、メモリコントローラ（１８）によりリードされる。
【００２９】
リードバッファＡ２（７）は、メモリ・バッファ（２０）にある符号データＡを復号回路Ａ（９）に転送する際に使用されるバッファで、メモリコントローラ（１８）によりライトされ、復号回路Ａ（９）によってリードされる。同様に、リードバッファＢ２（８）は、メモリ・バッファ（２０）にある符号データＢを復号回路Ｂ（１０）に転送する際に使用されるバッファで、メモリコントローラ（１８）によりライトされ、復号回路Ａ（９）によってリードされる。これらのバッファは先読みバッファとして使用される。
【００３０】
復号回路Ａ（９）は、符号化アルゴリズムＡで符号化された符号データＡを復号する回路である。同様に、復号回路Ｂ（１０）は、符号化アルゴリズムＢで符号化された符号データＢを復号する回路である。
【００３１】
ライトバッファＡ３（１１）は、復号回路Ａ（９）で復号された復号データＡをメモリ・バッファ（２０）に転送する際に使用される少量のバッファで、復号回路Ａ（９）によりライトされ、メモリコントローラ（１８）によりリードされる。同様に、ライトバッファＢ３（１２）は、復号回路Ｂ（１０）で復号された復号データＢをメモリ・バッファ（２０）に転送する際に使用される少量のバッファで、復号回路Ｂ（１０）によりライトされ、メモリコントローラ（１８）によりリードされる。
【００３２】
リードバッファＡ４（１３）は、メモリ・バッファ（２０）にある復号回路Ａ（９）で復号された復号データＡをマージ回路（１５）に転送する際に使用される少量のバッファで、メモリコントローラ（１８）によりライトされ、マージ回路（１５）によってリードされる。同様に、リードバッファＢ４（１４）は、メモリ・バッファ（２０）にある復号回路Ｂ（１０）で復号された復号データＢをマージ回路（１５）に転送する際に使用される少量のバッファで、メモリコントローラ（１８）によりライトされ、マージ回路（１５）によってリードされる。
【００３３】
ところで、これら各バッファ群（ライトバッファＡ１、ライトバッファＢ１、リードバッファＡ２、リードバッファＢ２、ライトバッファＡ３、ライトバッファＢ３、リードバッファＡ４、リードバッファＢ４）は同じ大きさを持ち、リード用／ライト用ごとに共通な形態をしており、その形態とメモリ・アクセス・リクエストの仕方について図３および図４を用いて説明する。なお、図３において、ライトバッファＡ１、Ｂ１、Ａ３、Ｂ３を便宜上、符号（５）で参照する。また、図４において、リードバッファＡ２、リードバッファＢ２、リードバッファＡ４、リードバッファＢ４を便宜上、符号（７）で参照する。
【００３４】
図３がメモリへのライト時に使用されるライトバッファの構成で、図４がメモリのリード時に使用されるリードバッファの構成である。これらはどちらも２つのバンクで構成されたいわゆるダブル・バッファ形式になっており、左右両側のモジュールから異なるバンク（バンク１、バンク２）（２０１、２０２）に同時アクセスが可能であり、バンク切替え信号によりバンクスイッチ（２０３、２０４）が制御され、バンク（２０１、２０２）の切替えが行われる。各々のバンク（２０１、２０２）は８つの８バイト・レジスタにより構成されており、即ち、６４バイトをバッファリングできる。この６４バイトは後述するメモリ・コントローラ（１８）での効率的バースト転送をサポートするのに十分な値であると共に、ＬＳＩ化に支障のない大きさという点から選ばれている。
【００３５】
図３のライトバッファと図４のリードバッファとの間の違いは、単に左側のモジュール（メモリ・バッファに遠い側）がデータをライトして、右側のモジュール（メモリ・バッファ（２０）に近い側）がそのデータをメモリにライトするか、右側のモジュール（メモリ・バッファ（２０）に近い側）がメモリからデータをリードして、そのデータを左側のモジュール（メモリ・バッファ（２０）に遠い側）がリードするかだけの違いであるので、以下図３を中心に説明する。
【００３６】
図３において、左側にあるモジュール（メモリ・リクエスト信号を発行する側なので、以下”リクエスタ”と呼び、符号（２００）で参照する）がメモリ・バッファ（２０）にライトすべきデータがある時は、現在自分の使用しているバンク（２０１、２０２）に空きがあるかを調べ、空きがあればデータをライトする。その際、その使用中のバンクが一杯になり、かつ、もう一方のバンクをメモリ・コントローラ（１８）がリードしていなければ（Ｍｅｍｏｒｙ  Ｂｕｓｙがアクティブでなければ）、バンク・スイッチ信号を切り替えることでバンクを反転し、Ｍｅｍｏｒｙ  Ｒｅｑｕｅｓｔ信号を発行してメモリ・アクセス要求があることを知らせる。その後、まだライトすべきデータがある時は、反転したバンクにデータをライトする。メモリ・コントローラ（１８）は片方のバンクをリードし、そのバンクが空になったなら、Ｍｅｍｏｒｙ  Ｂｕｓｙ信号をデアクティブにし、同時にＭｅｍｏｒｙ  Ｄｏｎｅ信号をアクティブにするので、リクエスタ（２００）はＭｅｍｏｒｙ  Ｒｅｑｕｅｓｔ信号をデアクティブにする。
【００３７】
このように、図３のライトバッファ（５）等を用いるリクエスタ（２００）は、ライトバッファ（５）の一方のバンクが一杯になるたびに、Ｍｅｍｏｒｙ  Ｒｅｑｕｅｓｔ信号を発生し、メモリ・コントローラ（１８）が一杯になったバンクのデータをメモリ・バッファ（２０）へ書き込む。こうして、順次、データがメモリ・バッファ（２０）に書き込まれていく。
【００３８】
同様に、図４のリードバッファ（７）等を用いるリクエスタ（２００）は、リードバッファ（７）が一方のバンクのデータをすべて読み出すたびに、Ｍｅｍｏｒｙ  Ｒｅｑｕｅｓｔ信号を発生し、メモリ・コントローラ（１８）が空になったバンクにメモリ・バッファ（２０）からのデータを書き込んでいく。こうして、順次、メモリ・バッファ（２０）のデータが読み出されていく。
【００３９】
さらに、図２に戻って各部を説明する。図２において、マージ回路（１５）は、復号データＡ、Ｂと復号データＡに含まれる切替えＴａｇ情報により、リードバッファＡ４（１３）、リードバッファＢ４（１４）からの出力を取捨選択し、プリンタＩ／Ｆ回路（１９）に転送する。
【００４０】
消費速度比較回路（１６）は、図５に示すように、カウンタＡ（１６１）、レジスタＡ（１６２）、比較器Ａ（１６３）、カウンタＢ（１６４）、レジスタＢ（１６５）、比較器Ｂ（１６６）を含んで構成されている。リードバッファＡ２（７）からのメモリ・アクセス・リクエストＲｅｑＡ２をカウンタＡ（１６１）のクリア入力とレジスタＢ（１６２）のロード入力に接続ことにより、リクエストＲｅｑＡの間隔を常に更新してレジスタＡ（１６２）に記憶している。同様にリードバッファＢ（８）からのメモリ・アクセス・リクエストＲｅｑＢ２をカウンタＢ（１６４）のクリア入力とレジスタＢ（１６５）のロード入力に接続ことにより、リクエストＲｅｑＢ２の間隔を常に更新してレジスタＢ（１６５）に記憶している。
【００４１】
ところで、ＲｅｑＡ２、ＲｅｑＢ２は、同じ大きさで同じ構造のリードバッファ（図４）の片方のバンクが空になるたびにアクティブになるから、レジスタＡ、Ｂ（１６３、１６６）に記憶された値は片方のバンク（６４バイト）のデータを消費するのに要した時間を記録していることになる。
【００４２】
一方、圧縮率”１”、即ち圧縮なしとした時に画像データのリードに要求される平均のメモリバンド幅から、片方のバンクに相当する６４バイトのリードにかかる時間を基準値として、それをクロック数に換算して図５のように比較すれば、現在のリード速度が平均を越えてるかいなかが検出できる。図５では各々のリード速度が基準値を越える時には、ＦａｓｔＡ、ＦａｓｔＢの出力はそれぞれ”１”になる。
【００４３】
メモリ・アクセス調停回路（１７）は、図６のような構成であり、基本クロックを分周する分周回路（１７１）、その分周クロックをもとにしたＮ進カウンタ（１７２）、それと調停論理を実現するステートマシン（１７３）からできていて、調停結果を示す３−ｂｉｔの信号（ＳＥＬ［２：０］）とメモリ・コントローラ（１８）を起動するＭｅｍＳｔａｒｔ信号を発行する。
【００４４】
ステートマシン（１７３）の論理は、前述のように圧縮率”１”でも動作するように、圧縮率”１”の時に各リクエスタが要求するメモリバンド幅と消費速度比較回路（１６）の出力に基づいており、具体的に、６００ｓｐｉ、深さ８−ｂｉｔ（２５６諧調）のＡ４サイズの紙１ページ（３２ＭＢ相当）を１秒で復号してプリントするには、８つのリクエスタ（２００）それぞれに３２ＭＢ／ｓのバンド幅を提供する。
【００４５】
しかし実際の各リクエスタ（２００）の要求メモリバンド幅は、８つのリクエスタ（２００）のうち符号化されていないデータを扱う４つのリクエスタ（ＲｅｑＡ３，ＲｅｑＢ３，ＲｅｑＡ４，ＲｅｑＢ４）はそれぞれ３２ＭＢ／ｓ固定、符号データをメモリ・バッファにライトするＲｅｑＡ１、ＲｅｑＢ１は平均圧縮率に依存し、メモリ・バッファ（２０）から符号データをリードするＲｅｑＡ２、ＲｅｑＢ２では微小区間での最悪圧縮率に依存する。但し、リクエスタ（ＲｅｑＡ１，ＲｅｑＢ１）のデータの転送先は外部のメモリ・バッファ（２０）であるので、これらのデータの微小区間での圧縮率の揺らぎはメモリ・バッファ（２０）内にある程度大きなエリアを確保することにより吸収できる。
【００４６】
そのため、調停は図７に示したようラウンドロビン形式で行われ、分周回路（１７１）がタイムスロットの大きさを決定しており、ステートマシン（１７３）は、消費速度比較回路（１６）の出力に応じて、各タイム・スロットの割り付けを変更している。具体的には、ＲｅｑＡ２が基準値以上のメモリバンド幅を要求するときは、ＲｅｑＡ１用のタイムスロットをＲｅｑＡ２に与え、ＲｅｑＢ２が基準値以上のメモリバンド幅を要求するときは、ＲｅｑＢ１用のタイムスロットをＲｅｑＢ２に与える。そして微小区間で圧縮率が高く、次のデータを先読みする必要がない時は、ＲｅｑＡ２、ＲｅｑＢ２用のタイムスロットをそれぞれＲｅｑＡ１、ＲｅｑＢ１に与える。なお、８つのリクエスタがあるため、図６のＮ進カウンタ（１７２）は８進カウンタである。
【００４７】
具体的に図７のタイムチャートを説明すると、図７（ａ）はリードバッファＡ２、リードバッファＢ２の消費速度が共に基準値以下の場合のタイミングチャートであり、（ｂ）はリードバッファＡ２が基準値以上、リードバッファＢ２が基準値以下、（ｃ）はリードバッファＡ２が基準値以下、リードバッファＢ２が基準値以上、（ｄ）はリードバッファＡ２、リードバッファＢ２共に基準値以上、（ｅ）はタイムスロット４の時点でＲｅｑＡ２がアクティブでないケース（すなわち、まだリードバッファ内に十分なデータが残っている）、（ｆ）はタイムスロット５の時点でＲｅｑＢ２がアクティブでないケース、（ｇ）はタイムスロット４、５の時点でＲｅｑＡ２、ＲｅｑＢ２がそれぞれがアクティブでないケースである。これらの調停は以下のような簡単な論理で実行できる。なお、図７において、割当が変更されたタイムスロットを丸で囲んだ。
【００４８】
８進カウンタの値をｃｎｔ、メモリコントローラにＲｅｑＡ１のサービスを開始させる信号をＳＥＬ［２：０］＝”０００”、同様にＲｅｑＢ１に対して”００１”、ＲｅｑＡ２に対して”０１０”、ＲｅｑＢ２に対して”０１１”、ＲｅｑＡ３に対して”１００”、ＲｅｑＢ３に対して”１０１”、ＲｅｑＡ４に対して”１１０”、ＲｅｑＢ４に対して”１１１”とすると、
【００４９】
【表１】
0003702630.tif 000002
のように非常に簡単な論理で実現できる。  なお、通常復号には、図６、図７で示したメモリアクセス以外に、参照画像のメモリアクセスやラスタブロック変換用のメモリアクセスも必要となるが、それらは符号化されていないデータであるので、図７においてこれら用のタイムスロットを付け加えて、それに合わせてＮ進カウンタのＮを増やせばよい。  メモリコントローラ（１８）は、調停されたメモリ・アクセスに対応するメモリ・アドレスを生成し、メモリにアクセスする。具体的には図８に示したように、メモリアクセス調停回路（１７）からの出力信号ＳＥＬとＭｅｍＳｔａｒｔを受信することにより、８つのうちの１つのアドレス生成カウンタ（１８０）がバースト・サイズに合わせてアドレスをインクリメントする。
【００５０】
ところで、１つのメモリ・バッファ（２０）を８つのリクエスタが時分割で共有し、メモリに格納されるデータのタイプは符号データＡ、符号データＢ、復号データＡ、復号データＢの４種類あるので、それらは他の領域を犯さないようにアドレス範囲を制限する必要がある。図９にメモリ・バッファ（２０）のメモリマップと境界値を示す。すなわち、符号データＡの領域は境界値１〜境界値２であり、符号データＢの領域は境界値２〜境界値３、復号データＡの領域は境界値３〜境界値４、復号データＢの領域は境界値４〜境界値５である。よって図８に示した８つのアドレス生成回路（１８０）は常に境界値内の値をとるようにラッピングする機構が備わっている。なお、境界値１〜５はレジスタとして設定可能である。
【００５１】
プリンタＩ／Ｆ回路（１９）は、外部プリント装置からの制御信号に合わせてデータを出力するものである。
【００５２】
メモリ・バッファ（２０）は、画像復号装置が画像の復号中に一時的な記憶エリアとして用いるメモリ・バッファであり、そのメモリマップは図９である。
【００５３】
なお以上では、符号化をスキャン画像と文字・図形画像の２つのストリームに分けて行ったが、これらはもっと細かく、３つ以上のストリームに分解されていてもよいことは言うまでもない。
【００５４】
【発明の効果】
以上説明したように、本発明によれば、例えば最悪の平均圧縮率を”１”と仮定して、それに見合うだけのメモリ・バンド幅を持つメモリシステムを構築し、復号回路と外部メモリ・バッファとの間に集積回路の中に取り込める少量のバッファを用意し、そのバッファ内のデータの消費速度を計測する手段を具備し、消費速度が基準値よりも大きいときには、外部メモリ・バッファから内部バッファへの符号データのリード転送により大きなメモリバンド幅を提供し、その分を符号データのライト転送に使用するメモリバンド幅から差し引くメモリアクセス制御手法を用いることにより、画質をひずめることなく、効率の良いメモリシステムを実現することができる。
【図面の簡単な説明】
【図１】  ページ記述言語で記述されたページ記述が符号化され、画像復号装置により復号されるまでのデータの流れを説明する図である。
【図２】  本発明の実施例の全体構成を示すブロック図である。
【図３】  ライトバッファの構成とリクエスト生成を説明する図である。
【図４】  リードバッファの構成とリクエスト生成を説明する図である。
【図５】  消費速度比較回路の構成例を示すブロック図である。
【図６】  メモリアクセス調停回路の構成例を示すブロック図である。
【図７】  メモリアクセス調停の調停アルゴリズムを説明する図である。
【図８】  メモリコントローラの構成例を示すブロック図である。
【図９】  バッファメモリ内のメモリマップである。
【符号の説明】
１    ホストシステム
２    バス
３    画像復号装置
４    ＤＭＡＣ
５    ライトバッファＡ１
６    ライトバッファＢ１
７    リードバッファＡ２
８    リードバッファＢ２
９    復号回路Ａ
１０    復号回路Ｂ
１１    ライトバッファＡ３
１２    ライトバッファＢ３
１３    リードバッファＡ４
１４    リードバッファＢ４
１５    マージ回路
１６    消費速度計測回路
１７    メモリアクセス調停回路
１８    メモリコントローラ
１９    プリンタＩ／Ｆ回路
２０    メモリ・バッファ
【図１】
0003702630.tif 000003
【図２】
0003702630.tif 000004
【図３】
0003702630.tif 000005
【図４】
0003702630.tif 000006
【図５】
0003702630.tif 000007
【図６】
0003702630.tif 000008
【図７】
0003702630.tif 000009
【図８】
0003702630.tif 000010
【図９】
0003702630.tif 000011