(57)【特許請求の範囲】
【請求項１】
入力データに圧縮処理を行って圧縮データを生成する圧縮手段と、
前記圧縮データを記憶するための記憶手段と、
前記圧縮データの容量を計数する計数手段と、
前記圧縮データを前記記憶手段へ転送するか否かを設定する設定手段と、
前記設定手段が前記圧縮データを前記記憶手段へ転送しない第１の設定をしている場合は前記圧縮データの前記記憶手段への転送を実行せず、前記設定手段が前記圧縮データを前記記憶手段へ転送する第２の設定をしている場合は前記圧縮データの前記記憶手段への転送を実行するよう制御する転送制御手段とを有し、
前記計数手段により計数された前記圧縮データの容量が前記記憶手段に記憶可能な容量である場合、前記設定手段は前記第１の設定を前記第２の設定に変更し、前記圧縮手段は前記入力データの圧縮処理を再び行い、前記転送制御手段は該圧縮処理により生成された圧縮データを前記記憶手段へ転送することを特徴とするデータ処理装置。
【請求項２】
前記転送制御手段は、ＤＭＡコントローラであり前記圧縮データの前記記憶手段へのＤＭＡ転送を制御することを特徴とする請求項１に記載のデータ処理装置。
【請求項３】
前記入力データは、外部装置から受信するページ記述言語に基づくＰＤＬデータから作成される中間データをレンダリングして生成されるラスタイメージデータとすることを特徴とする請求項１に記載のデータ処理装置。
【請求項４】
データを入力する入力工程と、
前記入力工程にて入力された入力データに圧縮処理を行って圧縮データを生成する圧縮工程であって、前記圧縮データを記憶手段へ転送せずに前記圧縮データの容量を計数する第１の圧縮工程と、
前記第１の圧縮工程にて計数された前記圧縮データの容量が前記記憶手段に記憶可能な容量であるか否かを判定する判定工程と、
前記判定工程にて前記圧縮データの容量が前記記憶手段に記憶可能な容量であると判定された場合に、前記入力工程にて入力されたデータに再び圧縮処理を行って圧縮データを生成する圧縮工程であって、前記圧縮データを前記記憶手段へ転送する第２の圧縮工程とを有することを特徴とするデータ処理装置のデータ処理方法。
【請求項５】
前記転送工程は、前記第２の圧縮工程により生成された前記圧縮データを前記記憶手段にＤＭＡ転送することを特徴とする請求項４に記載のデータ処理方法。
【請求項６】
前記入力データは、外部装置から受信するページ記述言語に基づくＰＤＬデータから作成される中間データをレンダリングして生成されるラスタイメージデータとすることを特徴とする請求項４に記載のデータ処理装置のデータ処理方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、入力されたデータに圧縮処理を行い記憶手段に記憶させる処理を行うデータ処理装置およびそのデータ処理方法に関するものである。
【０００２】
【従来の技術】
従来、所定容量のメモリ上で所定のデータに対して圧縮処理を行い、あるいは該圧縮処理された圧縮データを伸長処理するデータ処理装置あるいは該データ処理装置を備えるプリンタ制御装置では、データ圧縮を行なう場合、あらかじめ圧縮後のデータサイズを知ることはできないように構成されていた。
【０００３】
【発明が解決しようとする課題】
従来のデータ処理装置あるいはプリンタ制御装置は上記のように構成されているので、所定のデータに対してデータ圧縮を行なう場合、あらかじめ圧縮後のデータサイズが分からないため圧縮コードを保存するメモリ容量が十分でないと、圧縮処理中にメモリオーバーフローが起きてしまうという問題点があった。
【０００４】
本発明は、上記の問題点を解決するためになされたもので、本発明の目的は、記憶手段に記憶できない容量の圧縮データを記憶手段へ転送するのを適切に制限することができる仕組みを提供することである。
【０００５】
【課題を解決するための手段】
本発明に係るデータ処理装置は、下記の特徴的構成を備える。
入力データに圧縮処理を行って圧縮データを生成する圧縮手段と、前記圧縮データを記憶するための記憶手段と、前記圧縮データの容量を計数する計数手段と、前記圧縮データを前記記憶手段へ転送するか否かを設定する設定手段と、前記設定手段が前記圧縮データを前記記憶手段へ転送しない第１の設定をしている場合は前記圧縮データの前記記憶手段への転送を実行せず、前記設定手段が前記圧縮データを前記記憶手段へ転送する第２の設定をしている場合は前記圧縮データの前記記憶手段への転送を実行するよう制御する転送制御手段とを有し、前記計数手段により計数された前記圧縮データの容量が前記記憶手段に記憶可能な容量である場合、前記設定手段は前記第１の設定を前記第２の設定に変更し、前記圧縮手段は前記入力データの圧縮処理を再び行い、前記転送制御手段は該圧縮処理により生成された圧縮データを前記記憶手段へ転送することを特徴とする。
本発明に係るデータ処理装置のデータ処理方法は、下記の特徴的構成を備える。
データを入力する入力工程と、前記入力工程にて入力された入力データに圧縮処理を行って圧縮データを生成する圧縮工程であって、前記圧縮データを記憶手段へ転送せずに前記圧縮データの容量を計数する第１の圧縮工程と、前記第１の圧縮工程にて計数された前記圧縮データの容量が前記記憶手段に記憶可能な容量であるか否かを判定する判定工程と、前記判定工程にて前記圧縮データの容量が前記記憶手段に記憶可能な容量であると判定された場合に、前記入力工程にて入力されたデータに再び圧縮処理を行って圧縮データを生成する圧縮工程であって、前記圧縮データを前記記憶手段へ転送する第２の圧縮工程とを有することを特徴とする。
【００２０】
【発明の実施の形態】
本発明の実施形態について以下に添付図面を参照しながら詳細に説明する。
【００２１】
図１は、本発明の一実施形態を示すデータ処理装置を適用可能なプリンタ制御システムの構成を説明するブロック図であり、ホスト１０００とホストＩ／Ｆ１０４を介してプリンタ３０００とが通信可能なプリンタ制御システムに対応する。
【００２２】
図において、１０００はホストコンピュータであり、いわゆるＣＰＵ，ＲＯＭ，ＲＡＭ等を備える制御ボードにＦＤＤ，ハードディスク（ＨＤＤ）を接続してハードディスクに記憶されたワープロソフトや表計算等の種々のアプリケーションソフトを実行し、ＲＡＭ上でデータ作成処理を行う。
【００２３】
さらに、ホストコンピュータ１０００は、印刷を行うときにはプリンタドライバソフトウエアを実行し、プリンタ固有の制御言語（以下、「ページ記述言語」と記す）で表現された印刷情報を作成する。そして、ページ記述言語で表現された印刷情報はインタフェース線２０００を介してプリンタ３０００に送出される。また、双方のステータス情報等のやり取りも行っている。
【００２４】
プリンタコントローラ３００１において、１０１はＣＰＵで、ＲＯＭ１０７に記憶された制御プログラムに基づきシステムバス１０５に接続された各種のデバイスヘのアクセスを統括的に制御し、印刷部インタフェース１０９を介して接続される印刷部（プリンタエンジン）３００２に出力情報としての画像信号を出力する。
【００２５】
また、このＲＯＭ１０７のプログラムＲＯＭには、図２〜図４に示すフローチャートで示されるようなＣＰＵ１０１の制御プログラム等が、ＲＯＭ１０７のフォントＲＯＭには上記出力情報を作成する際に使用するフォントデータ等が、ＲＯＭ１０７のデータＲＯＭには帳票データ等のフォーム情報が記憶されている。
【００２６】
１０８はＲＡＭで、ＣＰＵ１０１の主メモリ、ワークエリア等として機能し、図示しない増設ポートに接続されるオプションＲＡＭによりメモリ容量を拡張することができるように構成されている。なお、ＲＡＭ１０８は、出力イメージ展開領域、環境データ格納領域等に用いられる。
【００２７】
１０６はメモリコントローラ（ＭＣ）で、前記ＲＯＭ１０７、ＲＡＭ１０８、またはＨＤ（ハードディスク）等の不図示の外部メモリの制御を行う。１０２はレンダリングＩＣであり、ＣＰＵ１０１が印刷情報から作成する中間言語（以下、「オブジェクト」と記す）を解釈し、ＲＡＭ１０８の出力イメージ展開領域に出力イメージを展開する。
【００２８】
１０３は圧縮・伸長ＩＣで、出力イメージの圧縮処理または伸長処理を行う。３００２は印刷部で、印刷部インタフェース１０９を介して画像データを受信して、記録媒体に画像を出力する。３００３は操作部で、スイッチ、ＬＥＤ、液晶表示器等が配されており、外部からスイッチによりプリンタの種々の設定を行うことができる。
【００２９】
このように構成されたプリンタ制御システムにおいて、本発明を適用したデータ処理を図２〜図４に示される制御フローを参照しながら説明する。
【００３０】
図１において、ホストコンピュータ１０００からページ記述言語で表現された印刷情報がインタフェース線２０００を介して送出されると、プリンタコントローラ３００１は図２〜図４に示される制御フローで動作する。
【００３１】
図２〜図４は、本発明の実施形態を示すデータ処理装置におけるデータ処理手順の一例を示すフローチャートである。なお、（２０１）〜（２１２），（３０１）〜（３１４），（４０１）〜（４１０）はそれぞれステップを示す。特に、図３は、動作ステップ（２０５）からイリーガル処理である動作ステップ（２０８）へ移行したときの処理手順を示す制御フローに対応する。
【００３２】
図２において、ステップ（２０１）では、内蔵メモリ、各種デバイス、Ｉ／Ｏ等の初期化を行いプリンタはレディ状態となる。
【００３３】
次に、ステップ（２０２）では、図１におけるＲＡＭ１０８のページバッファ領域に印刷情報が入っているかどうか判断して、ページバッファに印刷情報が入っていると判断した場合には動作ステップをステップ（２０３）に移し、入っていないと判定した場合には、ステップ（２０２）を繰り返して、ページバッファの監視を続ける。
【００３４】
ステップ（２０２）でページバッファに印刷情報が入っていると判断した場合は、ステップ（２０３）で、ページバッファに格納されている印刷情報の解析を行い、ステップ（２０４）で、ステップ（２０３）の解析結果に基づき、レングリングＩＣ１０２が解釈するオブジェクトを作成し、該作成されたオブジェクトは図１に示したＲＡＭ１０８のオブジェクト領域に格納する。
【００３５】
次に、ステップ（２０５）では、オブジェクト領域の使用可能容量を監視して、オブジェクト数が大量でオブジェクト領域を超えてしまうかどうかを判定して、超えてしまうと判定した場合には、ステップ（２０８）に進み、イリーガル処理を実行する。
【００３６】
一方、ステップ（２０５）で、超えないと判定した場合には、ステップ（２０６）に進み、１ページ分のオブジェクトが作成されたかどうか判断し、１ページ分のオブジェクトが作成されていないと判断した場合は、ステップ（２０３）へ戻る。
【００３７】
一方、ステップ（２０６）で、１ページ分のオブジェクトが作成されていると判断した場合は、ステップ（２０７）へ進み、バンド処理を行うために、各バンドを構成するオブジェクトを調べ、全バンドで後述するバンドレンダリングが可能かどうか判断し、全バンドでバンド処理が可能でないと判定した場合には、ステップ（２０８）へ進み、後述するイリーガル処理を実行する。なお、ここで言うバンド処理とは作成する１ページ分の印刷イメージを複数のバンドに分割して行うことを言い、バンドレンダリング、プリンタエンジンヘの出力を同期させることで省メモリを図る技術である。また、オブジェクトはどのバンドを構成するオブジェクトであるか管理されているものとする。
【００３８】
一方、ステップ（２０７）で、全バンドでバンド処理が可能であると判定した場合には、ステップ（２０９）へ進み、バンドレンダリングを行う。
【００３９】
次に、ステップ（２１０）では、プリンタエンジンにバンド展開した印刷イメージを送出する。この時、次のバンドのレンダリング処理が並行して行われる。
【００４０】
そして、ステップ（２１１）では、全バンドがすべて処理されたか判断し、全バンドが終了していないと判定した場合には、ステップ（２０９）へ戻る。
【００４１】
一方、ステップ（２１１）で、全バンドがすべて処理されていると判断した場合には、ステップ（２１２）へ進み、印刷が全ページ終了したかどうかを判断し、全ページ終了していれば、印刷処理を終了する。
【００４２】
一方、ステップ（２１２）で、印刷が全ページ終了していないと判断された場合には、ステップ（２０３）へ戻り、印刷情報の解析、オブジェクトの作成等を含む一連の印刷処理を繰り返す。
【００４３】
次に、上記ステップ（２０８）におけるイリーガル処理手順を詳細に説明する。
【００４４】
まず、図３において、ステップ（３０１）では、オブジェクトメモリが飽和状態にあるのでオブジェクトメモリを空けるため、それまで作成したオブジェクトでバンドにレンダリングを行う。次に、ステップ（３０２）では、仮圧縮を使って圧縮コードを計数し、ステップ（３０３）では、圧縮コードサイズを調べ、圧縮コード格納領域の残容量が圧縮コードサイズ未満かどうかを判断し、圧縮コード格納領域の残容量が圧縮コードサイズ未満であると判断した場合には、ステップ（３０５）に進み、プリントエラー処理、例えばメモリ搭載量が不十分であることをユーザに通知し、プリント動作を終了するとともにエラー復帰待ち状態となる処理を実行する。
【００４５】
一方、ステップ（３０３）で、圧縮コード格納領域の残容量が十分であると判断した場合は、バンドにレンダリングされたラスタイメージを圧縮・伸長処理装置としての圧縮／伸長ＩＣ１０３を用いて圧縮する（３０４）。
【００４６】
そして、ステップ（３０６）に進み、レンダリングが完了したオブジェクトをＲＡＭ１０８上から破葉する。
【００４７】
そして、ステップ（３０７）では、ステップ（３０６）において破棄されたオブジェクト領域をフリー状態にして、改めて続いて作られるオブジェクト領域として確保する。次に、ステップ（３０８）で、印刷情報を解析する。
【００４８】
そして、ステップ（３０９）では、印刷情報の解析に基づきオブジェクトの作成を行い、該作成されたオブジェクトはステップ（３０７）で、ＲＡＭ１０８上に確保されたオブジェクト領域に格納される。
【００４９】
次に、ステップ（３１０）で、オブジェクト領域の使用可能容量を監視して、すなわち、オブジェクトメモリの残容量が「０」以上かどうかを判定して、ＮＯならばステップ（３０１）へ戻り、ＹＥＳならばステップ（３１１）で、１ページ分のオブジェクトを作成したかを判断し、作成が完了していないと判断した場合には、ステップ（３０１）へ戻り、一連の処理を続ける。
【００５０】
一方、ステップ（３１１）で、１ページ分のオブジェクトの作成が完了していると判定した場合には、ステップ（３１２）で、１ページ分のラスタイメージの作成、圧縮が完了したので、次に、バンドメモリにラスタイメージを伸長する。そして、ステップ（３１３）で、先に伸長したラスタイメージをプリンタエンジン（印刷部３００２）に送出する。この時、次に出力するバンドの伸長処理が並行して行われる。
【００５１】
そして、ステップ（３１４）で、全バンドがすべて処理されたかどうかを判断し、全バンドが終了していると判断した場合には、当該イリーガル処理を抜けて、図２に示したステップ（２１２）へ戻る。
【００５２】
一方、ステップ（３１４）で、全バンドがすべて処理が終了していないと判断した場合は、ステップ（３１２）へ戻り、イメージラスタの伸長処理を繰り返す。
【００５３】
次に、図４に示すフローチャートを参照しながら、図２に示したステップ（２０７）からイリーガル処理であるステップ（２０８）ヘ移行したときの処理手順について説明する。
【００５４】
まず、ステップ（４０１）では、一定時間内にレンダリングできないバンドを先行してレンダリングしておく。そして、ステップ（４０２）で、仮圧縮を使って圧縮コードを計数し、ステップ（４０３）では、圧縮コードサイズを調べ、圧縮コード格納領域の残容量が圧縮コードサイズ未満かどうかを判断し、圧縮コード格納領域の残容量が圧縮コードサイズ未満であると判断した場合には、ステップ（４０５）に進み、プリントエラー処理、例えばメモリ搭載量が不十分であることをユーザに通知し、プリント動作を終了するとともにエラー復帰待ち状態となる処理を実行する。
【００５５】
一方、ステップ（４０３）で、ＲＡＭ１０７上の圧縮コード格納領域の残容量が十分であると判断した場合は、ステップ（４０４）で、バンドにレンダリングされたラスタイメージを圧縮・伸長処理装置としての圧縮／伸長ＩＣ１０３を用いて圧縮する。
【００５６】
次に、ステップ（４０６）に進み、プリンタエンジン（印刷部３００２）ヘの出力準備をはじめ、処理バンドが先のステップ（４０１）、ステップ（４０４）で処理されたバンドかどうか判断し、すなわち圧縮されているバンドであるかどうかを判断し、圧縮されているバンドでないと判定した場合には、ステップ（４０８）へ進み、オブジェクトを解析し、バンドレンダリングを行い、ステップ（４０９）以降へ進む。
【００５７】
一方、ステップ（４０６）で、圧縮されているバンドであると判定した場合には、ステップ（４０７）で、イメージラスタをバンドメモリに伸長して、ステップ（４０９）へ進み、バンドに展開されたラスタイメージをプリンタエンジンに送出する。この時、次に出力するバンドの伸長処理、またはバンドレンダリングが並行して行われる。
【００５８】
そして、ステップ（４１０）で、全バンドがすべて処理されたかどうかを判断し、全バンドが終了していると判断した場合には、当該イリーガル処理を抜けて、図２に示したステップ（２１２）に戻る。
【００５９】
一方、ステップ（４１０）で、全バンドが終了していないと判断した場合には、ステップ（４０６）に戻り、一連の処理を続ける。以上、説明した処理を行うことで印刷処理がなされる。
【００６０】
次に、図５，図６を参照しながら、図３に示したステップ（３０２）、図４に示したステップ（４０２）で行うイメージラスタ圧縮を説明する。
【００６１】
図５は、図１に示した圧縮／伸長処理ＩＣ１０３の構成の一例を示すブロック図である。
【００６２】
図において、５０１はソースＦＩＦＯメモリ（本実施形態では８ワードｘ３２ビット）で、圧縮を行う際には読み込んだイメージラスタを、また伸長を行う際には読み込んだ圧縮コードを一時保存する。
【００６３】
５０２はデスティネーションＦＩＦＯメモリ（本実施形態では８ワードｘ３２ビット）で、圧縮を行う際には圧縮／伸長コア５０３がエンコードした圧縮コードを、また伸長を行う際には圧縮／伸長コア５０３がデコードしたラスタイメージを一時保存する。
【００６４】
５０４はＤＭＡコントローラで、システムバスの使用権の要求等一連のメモリアクセスサイクルを発生させる。本実施形態では説明を簡単にするため４ワードのバースト転送のみをサポートし、ソース及びデスティネーションＤＭＡの２チヤンネルがあるものとする。
【００６５】
５０５はＩ／Ｏコントローラで、図１に示したＣＰＵ１０１による内部レジスタ５０６の設定等を制御する。なお、内部レジスタ５０６は「０ｘ８０００００００」〜「０ｘ８０００００３Ｃ」に、またソースデータ（ラスタイメージ）の格納アドレスは「０ｘ１００００００」〜「０ｘ１ＦＦＦＦＦＦＦ」、圧縮コード（デスティネーションデータ）格納アドレスは「０ｘ２０００００００」〜「０ｘ２ＦＦＦＦＦＦＦ」にマッピングされているものとして説明するが、これは一意なものではなくシステム構成に応じて任意である。以下、内部レジスタ５０６の構成を図６に示す。なお、実施形態を説明する上で不必要なものは図示しない。
【００６６】
図６は、図５に示した内部レジスタ５０６の構成の一例を示す図である。
【００６７】
図において、コントロールレジスタのビット「０」に割り当てられたＥＮＣ（ＥＮＣｏｄｅ）に、「１」をセットすると圧縮モード、「０」をセットすると伸長モードとなる。
【００６８】
また、ビット「１」に割り当てられたＮＤＷ（Ｎｏ  Ｄｅｓｔｉｎａｔｏｎ  Ｗｒｉｔｅ）に、「１」をセットすると、圧縮時にデスティネーションＦＩＦＯメモリ５０２に保持された圧縮コードをメモリ（例えば図１に示したＲＡＭ１０８）にライトしないモードが選択される。また、ビット「１」に割り当てられたＮＤＷに「０」がセットされると、通常のメモリライトを行うモードとなる。
【００６９】
ＳＡ（Ｓｏｕｒｃｅ  Ａｄｒｅｓｓ）レジスタは、圧縮時には、圧縮するラスタイメージの格納アドレスをセットし、伸長時には、圧縮コードの格納アドレスをセットするものである。ＳＤ（Ｓｏｕｒｃｅ  Ｄａｔａ）レジスタは、読み込むソースデータのワード数をセットするものである。
【００７０】
ＤＡ（Ｄｅｓｔｉｎａｔｉｏｎ  Ａｄｄｒｅｓｓ）レジスタは、圧縮時には、ラスタイメージを圧縮して生成された圧縮コードを格納するアドレスをセットし、伸長時には、圧縮コードを伸長し戻されたラスタイメージの格納アドレスをセットするものである。ＤＤ（Ｄｅｓｔｉｎａｔｉｏｎ  Ｄａｔａ）レジスタは、メモリに書き込むソースデータのワード数をセットするものである。
【００７１】
ＤＭＡレジスタの、ビット「０」に割り当てられたＳＥＱＥＮ（ＳＥＱｕｅｎｃｅ  ＥＮａｂｌｅ）に「１」をセットすることで一連のＤＭＡデクセスが開始される。なお、圧縮、または伸長動作が終了すると、ビット「１」に割り当てられたＩＮＴ（ＩＮＴｅｒｒｕｐｔ）が「１」にセットされ出力ピンを通じてＣＰＵ１０１に知らせる。
【００７２】
ＤＷＷＣ（Ｄｅｓｔｉｎａｔｉｏｎ  Ｗｒｉｔｅ  Ｗｏｒｄ  Ｃｏｕｎｔ）レジスタは、圧縮時、デスティネーションＤＭＡでメモリに書き込まれる圧縮コードのワード数をカウントするものである。
【００７３】
このように構成された圧縮／伸長ＩＣ１０３は、上述した印刷工程において、圧縮処理ルーチンが呼び出されると、ＣＰＵ１０１は、圧縮／伸長ＩＣ１０３の内部レジスタの設定を行う。まず、圧縮率を調べるために、コントロールレジスタには、「０ｘ０００００００３」をセットする。
【００７４】
また、ＳＡレジスタには、ラスタイメージの格納アドレス、例えば「０ｘ１０００００００」を、ＳＤレジスタには、読み込むラスタイメージのワード数、例えば５１２（ワード）を、ＤＡレジスタには、圧縮コードの格納アドレス、例えば「０ｘ２０００００００」を、ＤＤレジスタには、書き込む圧縮コードのワード数、例えばＳＤレジスタにセットする値と同じ「５１２」をセットする。
【００７５】
なお、ＤＤレジスタにＳＤレジスタにセットする値と同じ値をセットしたのは、無損失圧縮アルゴリズムではデータによっては圧縮率が極端に悪く、場合によっては元データよりも圧縮コードの方がデータ数が多くなってしまう場合があるため、先に示したように設定する。
【００７６】
以上の設定が終了した後、ＤＭＡレジスタに「０ｘ０００００００１」をセットし、該セットが完了すると、圧縮／伸長ＩＣ１０３は動作を開始する。
【００７７】
ＤＭＡシーケンサ（ＤＭＡコントローラ５０４）はソースＦＩＦＯメモリ５０１、及びデスティネーションＦＩＦＯメモリ５０２のフラグ（ＥＭＰＴＹ＝０、ＨＡＬＦ＝４、ＦＵＬＬ＝８）をセンスしており、ソースＤＭＡでは、「ＥＭＰＴＹ」ｏｒ「ＨＡＬＦ」で起動がかかり、デスティネーションＤＭＡでは、「ＨＡＬＦ」ｏｒ「ＦＵＬＬ」ａｎｄ（ｎｏｔＮＤＷ）で起動がかかるように設計されている。
【００７８】
デスティネーションＤＭＡに付加されている（ｎｏｔＮＤＷ）の論理は、デスティネーションＤＭＡを行わないモードを指定するためのものである。
【００７９】
まず、ソースＤＭＡが起動され、前述の論理が「正」であるうちはラスタイメージの読み込みを行う。
【００８０】
その際、ＤＭＡコントローラ５０４からソースＦＩＦＯメモリ５０１に出力されるＷＲパルス信号によってソースＦＩＦＯメモリ５０１ヘの保持がなされる。一方、圧縮コアはソースＦＩＦＯメモリ５０１に対し、ＲＤパルス信号を出力し、ソースＦＩＦＯメモリ５０１からコア内部へラスタイメージデータの取り込みを行う。なお、ＷＲパルス、ＲＤパルスの出力は非同期である。
【００８１】
圧縮／伸長コア５０３内部にラスタイメージが取り込まれると、圧縮／伸長コア５０３は順次無損失圧縮アルゴリズムを実行し、圧縮コードの生成を行う。圧縮コードが一定量貯まると、圧縮／伸長コア５０３はデスティネーションＦＩＦＯメモリ５０２、ＤＷＷＣレジスタに対しＷＲパルスを出力する。そして、デスティネーションＦＩＦＯメモリ５０２では、圧縮／伸長コア５０３が出力するＷＲパルスによって圧縮コードの保持がなされる。
【００８２】
また、ＤＷＷＣレジスタでは、ＷＲパルスをカウントパルスとし、カウントアップ「＋１」がなされる。デスティネーションＦＩＦＯメモリ５０２が一定量（ＨＡＬＦ、またはＦＵＬＬ）貯まると、通常ではデスティネーションＤＭＡが起動し、ＤＭＡコントローラ５０４から出力されるＲＤパルス信号によって読み出され、起動したＤＭＡサイクルでメモリ（例えばＲＡＭ１０８）に書き込まれるが、この場合は、ＮＤＷレジスタ（コントロールレジスタのビット「１」に割り当てられる）が設定されているためデスティネーションＤＭＡが起動されず、デスティネーションＦＩＦＯメモリ５０２へのアクセスは圧縮／伸長コア５０３からの圧縮コードのライトアクセスのみである。
【００８３】
この際、デスティネーションＦＩＦＯメモリ５０２内部では、アドレスポインタは読み込みアクセスがないため書き込みワード数が８ワード以上ではアドレスポインタは動かず、最上位アドレスにオーバーライトが発生していることとなる。そして、この一連の動作をすべての処理が終了し、ＣＰＵ１０１への割り込みが発生するまで行う。そして、割り込みルーチンで、前述のＤＷＷＣレジスタを読むことで、圧縮／伸長コア５０３が生成した圧縮コードのワード数を知ることができる。
【００８４】
つまり、ソースＤＭＡ、圧縮／伸長コア５０３のみを動作させ、デスティネーションＤＭＡを起動させないことにより、圧縮コードをメモリに書き込まず、圧縮コードのワード数を知ることができる。次に、通常の圧縮動作に移る。
【００８５】
コントロールレジスタには、「０ｘ０００００００１」をセットする。ＳＡレジスタには、ラスタイメージの格納アドレス、例えば「０ｘ１０００００００」を、ＳＤレジスタには、読み込むラスタイメージのワード数、例えば５１２（ワード）を、ＤＡレジスタには、圧縮コードの格納アドレス、例えば０ｘ２０００００００を、ＤＤレジスタには、圧縮率を調べる処理で得た圧縮コードのワード数をセットする。
【００８６】
以上の設定が終了した後、ＤＭＡレジスタに「０ｘ０００００００１」をセットし、該セットが完了すると、圧縮／伸長ＩＣ１０３は動作を開始し、ソースデータの読み出し、圧縮処理、圧縮コードの書き込みの通常処理がなされ、割り込みによってＣＰＵに圧縮終了を知らせる。
【００８７】
以上説明したように、ソースＤＭＡ、圧縮／伸長コア５０３の圧縮コアのみを動作させることで、圧縮コードのワード数を知ることが可能となり、その結果圧縮率を知ることが可能となり、メモリオーバーフローを事前に知ることができる。また、ＲＡＭ１０７等のプリンタメモリの有効活用にもつながる。
【００８８】
上記実施形態によれば、圧縮率を調べるモードを用意することで、事前にメモリオーバーフローするか否かの判断が可能となる。また少ないメモリの有効活用にもつながる。
【００８９】
以下、図７に示すメモリマップを参照して本発明に係るデータ処理装置で読み出し可能なデータ処理プログラムの構成について説明する。
【００９０】
図７は、本発明に係るデータ処理装置で読み出し可能な各種データ処理プログラムを格納する記憶媒体のメモリマップを説明する図である。
【００９１】
なお、特に図示しないが、記憶媒体に記憶されるプログラム群を管理する情報、例えばバージョン情報，作成者等も記憶され、かつ、プログラム読み出し側のＯＳ等に依存する情報、例えばプログラムを識別表示するアイコン等も記憶される場合もある。
【００９２】
さらに、各種プログラムに従属するデータも上記ディレクトリに管理されている。また、各種プログラムをコンピュータにインストールするためのプログラムや、インストールするプログラムが圧縮されている場合に、解凍するプログラム等も記憶される場合もある。
【００９３】
本実施形態における図２〜図４に示す機能が外部からインストールされるプログラムによって、ホストコンピュータにより遂行されていてもよい。そして、その場合、ＣＤ−ＲＯＭやフラッシュメモリやＦＤ等の記憶媒体により、あるいはネットワークを介して外部の記憶媒体から、プログラムを含む情報群を出力装置に供給される場合でも本発明は適用されるものである。
【００９４】
以上のように、前述した実施形態の機能を実現するソフトウエアのプログラムコードを記録した記憶媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読出し実行することによっても、本発明の目的が達成されることは言うまでもない。
【００９５】
この場合、記憶媒体から読み出されたプログラムコード自体が本発明の新規な機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【００９６】
プログラムコードを供給するための記憶媒体としては、例えば、フロッピーディスク，ハードディスク，光ディスク，光磁気ディスク，ＣＤ−ＲＯＭ，ＣＤ−Ｒ，磁気テープ，不揮発性のメモリカード，ＲＯＭ，ＥＥＰＲＯＭ等を用いることができる。
【００９７】
また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているＯＳ（オペレーティングシステム）等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【００９８】
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵ等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【００９９】
【発明の効果】
以上説明したように、本発明によれば、入力データを圧縮した圧縮データの容量が記憶手段に記憶可能な容量であることを確認した上で、入力データを圧縮して記憶手段に記憶させることができるという効果を奏する。
【図面の簡単な説明】
【図１】本発明の一実施形態を示すデータ処理装置を適用可能なプリンタ制御システムの構成を説明するブロック図である。
【図２】本発明の実施形態を示すデータ処理装置におけるデータ処理手順の一例を示すフローチャートである。
【図３】本発明の実施形態を示すデータ処理装置におけるデータ処理手順の一例を示すフローチャートである。
【図４】本発明の実施形態を示すデータ処理装置におけるデータ処理手順の一例を示すフローチャートである。
【図５】図１に示した圧縮／伸長処理ＩＣの構成の一例を示すブロック図である。
【図６】図５に示した内部レジスタの構成の一例を示す図である。
【図７】本発明に係るデータ処理装置で読み出し可能な各種データ処理プログラムを格納する記憶媒体のメモリマップを説明する図である。
【符号の説明】
１０００  ホストコンピュータ
２０００  インタフェース線
３０００  プリンタ
３００１  プリンタコントローラ
３００２  プリンタエンジン
３００３  プリンタ操作部
１０１  ＣＰＵ
１０２  レングリングＩＣ
１０３  圧縮／伸長ＩＣ
１０４  ホストインタフェース制御部
１０５  システムバス
１０６  メモリコントローラ
１０７  ＲＯＭ
１０８  ＲＡＭ
１０９  印刷部Ｉ／Ｆ
Ｓｘｘｘ  動作ステップ
【図１】
0003847995.tif 000002
【図２】
0003847995.tif 000003
【図３】
0003847995.tif 000004
【図４】
0003847995.tif 000005
【図５】
0003847995.tif 000006
【図６】
0003847995.tif 000007
【図７】
0003847995.tif 000008