以下、本発明の構成,動作について図面に基づいて説明する。図1は、本発明による画像形成融合機1の一実施例の構成図を示す。画像形成融合機1は、ソフトウェア群2と、融合機起動部3と、ハードウェア資源4とを含むように構成される。
融合機起動部3は融合機1の電源投入時に最初に実行され、アプリケーション層5およびプラットフォーム6を起動する。例えば融合機起動部3は、アプリケーション層5およびプラットフォーム6のプログラムを、内部のハードディスク装置(以下、HDDという)あるいは外部記憶手段から読み出し、読み出した各プログラムをメモリ領域に転送して起動する。ハードウェア資源4は、白黒レーザプリンタ(B&W LP)11と、カラーレーザプリンタ(Color LP)12と、画像データの変換処理を行うMLC(Media Link Controller)43と、スキャナやファクシミリなどのハードウェアリソース13とを含む。
また、ソフトウェア群2は、UNIX(登録商標)などのオペレーティングシステム(以下、OSという)上に起動されているアプリケーション層5とプラットフォーム6とを含む。アプリケーション層5は、プリンタ,コピー,ファックスおよびスキャナなどの画像形成にかかるユーザサービスにそれぞれ固有の処理を行うプログラムを含む。
アプリケーション層5は、プリンタ用のアプリケーションであるプリンタアプリ21と、コピー用アプリケーションであるコピーアプリ22と、ファックス用アプリケーションであるファックスアプリ23と、スキャナ用アプリケーションであるスキャナアプリ24とを含む。
また、プラットフォーム6は、アプリケーション層5からの処理要求を解釈してハードウェア資源4の獲得要求を発生するコントロールサービス層9と、1つ以上のハードウェア資源4の管理を行ってコントロールサービス層9からの獲得要求を調停するシステムリソースマネージャ(以下、SRMという)39と、SRM39からの獲得要求に応じてハードウェア資源4の管理を行うハンドラ層10とを含む。
コントロールサービス層9は、ネットワークコントロールサービス(以下、NCSという)31、デリバリーコントロールサービス(以下、DCSという)32、オペレーションパネルコントロールサービス(以下、OCSという)33、ファックスコントロールサービス(以下、FCSという)34、エンジンコントロールサービス(以下、ECSという)35、メモリコントロールサービス(以下、MCSという)36、ユーザインフォメーションコントロールサービス(以下、UCSという)37、システムコントロールサービス(以下、SCSという)38など、一つ以上のサービスモジュールを含むように構成されている。
なお、プラットフォーム6は予め定義されている関数により、アプリケーション層5からの処理要求を受信可能とするAPI(Application Programming Interface) 53を有するように構成されている。OSは、アプリケーション層5およびプラットフォーム6の各ソフトウェアをプロセスとして並列実行する。
NCS31のプロセスは、ネットワークI/Oを必要とするアプリケーションに対して共通に利用できるサービスを提供するものであり、ネットワーク側から各プロトコルによって受信したデータを各アプリケーションに振り分けたり、各アプリケーションからのデータをネットワーク側に送信する際の仲介を行う。
例えばNCS31は、ネットワークを介して接続されるネットワーク機器とのデータ通信をhttpd(Hypertext Transfer Protocol Daemon)により、HTTP(Hypertext Transfer Protocol)で制御する。
DCS32のプロセスは、蓄積文書の配信などの制御を行う。OCS33のプロセスは、オペレータと本体制御との間の情報伝達手段となるオペレーションパネルの制御を行う。FCS34のプロセスは、アプリケーション層5からPSTN(Public Switched Telephone Network)またはISDN(Integrated Services Digital Network)を利用したファックス送受信,バックアップ用のメモリで管理されている各種ファックスデータの登録/引用,ファックス読み取り,ファックス受信印刷などを行うためのAPIを提供する。ECS35のプロセスは、白黒レーザプリンタ11、カラーレーザプリンタ12、ハードウェアリソース13などのエンジン部の制御を行う。
MCS36のプロセスは、メモリの取得および開放、HDDの利用などのメモリ制御を行う。UCS37は、ユーザ情報の管理を行うものである。SCS38のプロセスは、アプリケーション管理,操作部制御,システム画面表示,LED表示,ハードウェア資源管理,割り込みアプリケーション制御などの処理を行う。SRM39のプロセスは、SCS38と共にシステムの制御およびハードウェア資源4の管理を行うものである。例えばSRM39のプロセスは、白黒レーザプリンタ11やカラーレーザプリンタ12などのハードウェア資源4を利用する上位層からの獲得要求に従って調停を行い、実行制御する。具体的に、SRM39のプロセスは獲得要求されたハードウェア資源4が利用可能であるか(他の獲得要求により利用されていないかどうか)を判定し、利用可能であれば獲得要求されたハードウェア資源4が利用可能である旨を上位層に通知する。また、SRM39のプロセスは上位層からの獲得要求に対してハードウェア資源4を利用するためのスケジューリングを行い、要求内容(例えば、プリンタエンジンによる紙搬送と作像動作、メモリ確保、ファイル生成など)を直接実施している。
また、ハンドラ層10は後述するファックスコントロールユニット(以下、FCUという)の管理を行うファックスコントロールユニットハンドラ(以下、FCUHという)40と、プロセスに対するメモリの割り振り及びプロセスに割り振ったメモリの管理を行うイメージメモリハンドラ(以下、IMHという)41とを含む。SRM39およびFCUH40は、予め定義されている関数によりハードウェア資源4に対する処理要求を送信可能とするエンジンI/F54を利用して、ハードウェア資源4に対する処理要求を行う。上書きオプションモジュール42は、IMH41と通信をやりながら消去すべき画像エリアを自動認識して画像の上書きを実行制御する。
融合機1は、各アプリケーションで共通的に必要な処理をプラットフォーム6で一元的に処理することができる。次に、融合機1のハードウェア構成について説明する。
図2−1は、本発明による融合機の一実施例のハードウェア構成図を示す。融合機1は、コントローラ60と、オペレーションパネル70と、FCU80と、USB(Universal Serial Bus)デバイス90と、IEEE1394デバイス100と、エンジン部120とを含む。コントローラ60は、CPU61と、システムメモリ(MEM−P)62と、ノースブリッジ(以下、NBという)63と、サウスブリッジ(以下、SBという)64と、ASIC(Application Specific IC)66と、ローカルメモリ(MEM-C)67と、HDD68とを含む。
オペレーションパネル70は、コントローラ60のASIC66に接続されている。また、MLC43,FCU80,USBデバイス90,IEEE1394デバイス100およびエンジン部120は、コントローラ60のASIC66にPCIバス(Peripheral Component Interconnect)で接続されている。
コントローラ60では、ASIC66にローカルメモリ67,HDD68などが接続されると共に、CPU61とASIC66とがCPUチップセットのNB63を介して接続されている。このように、NB63を介してCPU61とASIC66とを接続すれば、CPU61のインタフェースが公開されていない場合に対応できる。
なお、ASIC66とNB63とはPCIバスを介して接続されているのでなく、AGP(Accelerated Graphics Port)65を介して接続されている。このように、図1のアプリケーション層5やプラットフォーム6を形成する一つ以上のプロセスを実行制御するため、ASIC66とNB63とを低速のPCIバスでなくAGP65を介して接続し、パフォーマンスの低下を防いでいる。
CPU61は、融合機1の全体制御を行うものである。CPU61は、NCS31,DCS32,OCS33,FCS34,ECS35,MCS36,UCS37,SCS38,SRM39,FCUH40およびIMH41をOS上にそれぞれプロセスとして起動して実行させると共に、アプリケーション層5を形成するプリンタアプリ21,コピーアプリ22,ファックスアプリ23,スキャナアプリ24を起動して実行させる。
NB63は、CPU61,システムメモリ62,SB64およびASIC66を接続するためのブリッジである。システムメモリ62は、融合機1の描画用メモリなどとして用いる、電源オフにより記憶データが消失する揮発性のメモリである。SB64は、NB63とROM,PCIバス,周辺デバイスとを接続するためのブリッジである。また、ローカルメモリ67は、画像データ,文書データ,プログラムデータ,フォントデータ,フォーム(書式)データ,システムの制御情報,設定情報およびその他の情報(以上すべてを包括して各種情報という)の一時格納(コピー用画像バッファ,符号バッファ,その他入出力情報のバッファ)に用いるメモリである。このローカルメモリ67も、電源オフにより記憶データが消失する揮発性のメモリである。
HDD68は、上記各種情報の一時保管用に、また、蓄積,登録,保存用に用いるストレージであり、電源オフによっても記憶データが消失しない不揮発性メモリである。ASIC66は、画像処理用のハードウェア要素を有する画像処理用途向けのICである。また、オペレーションパネル70は、オペレータからの入力操作を受け付けると共に、オペレータに向けた表示を行う操作部(操作ボード)である。
図2−2に示す様に、オペレーションパネル70には、液晶タッチパネル79のほかに、テンキー70a,クリア/ストップキー70b,スタートキー70c,初期設定キー70d,モードクリアキー70e,テスト印刷キー70fがある。テスト印刷キー70fは、設定されている印刷部数に係らず1部だけを印刷し、印刷結果を確認するためのキーである。初期設定キー70dを押す事で、機械の初期状態を任意にカスタマイズする事が可能である。機械が収納している用紙サイズを設定したり、コピー機能のリセットキーを押したときに設定される状態を任意に設定可能である。初期設定キ−70dが操作されると、各種初期値を設定するための各種「初期値設定」機能を指定するための選択キーが表示される。また、一定時間操作が無いときに優先して選択されるアプリケーション等も選択する事、国際エネルギースター計画に従った低電力への移行時間の設定や、オートオフ/スリープモードへの移行する時間を設定する事が可能である。
液晶タッチパネル79には、各種機能キー及び画像形成装置の状態を示すメッセージなどが表示される。液晶液晶タッチパネル79には、「コピー」機能,「スキャナ」機能,「プリント」機能,「ファクシミリ」機能,「蓄積」機能,「編集」機能,「登録」機能およびその他の機能の選択用および実行中を表わす機能選択キー70gが表示される。機能選択キー70gで指定された機能に定まった入出力画面が表示され、例えば「複写」機能が指定されているときには、図2−2に示すように、機能キー79a,79bならびに部数及び画像形成装置の状態を示すメッセージが表示される。オペレータが液晶タッチパネル79に表示されたキーにタッチする事で、選択された機能を示すキーが灰色に反転する。また、機能の詳細を指定しなければならない場合(例えばページ印字の種類等)はキーにタッチする事で詳細機能の設定画面が表示される。このように、液晶タッチパネルは、ドット表示器を使用している為、その時の最適な表示をグラフィカルに行う事が可能である。
図2−3に、オペレータが初期設定キ−70dを操作し、これに応答して液晶タッチパネル79に表示された初期値設定メニューの中の「画像セキュリティ」の欄の「画像消去モード」の項目にタッチしたときに、これに応答して液晶タッチパネル79に表示される「画像消去モード」を設定するための入力画面を示す。なお、図2−3に示す表示は以前の設定状態(登録情報)を示す。ここでユーザが変更入力をして表示画面上の「設定」キーにタッチすると、変更後の情報に登録が書き変えられる。
図2−3の表示は、「何もしない」を選択設定していることを意味する。この「何もしない」モードは、消去が指定された画像を特定する情報(画像ID他)を消去(クリア)するだけで、画像データを積極的に消滅させるものではない。すなわち、画像消去を確実にするための、消去用のデータを消去対象画像の記憶領域に上書するものではない。択一指定領域FSCの「上書きする」にオペレータがタッチすると、「上書きする」の先頭の丸内に、指定状態であることを示す黒小丸が表示され、「何もしない」の先頭の丸内の黒小丸が、非指定であることを示す白小丸に変り、下位の択一指定領域SSC1およびSSC2が、共に入力可(選択指定可)になる。
下位の択一指定領域SSC1は、コピー,ファクシミリ送,受信あるいは外部へのスキャナ読取データの転送などにおいて、一時的にHDDに蓄積した画像(画像データを圧縮した符号化データ;圧縮データとも言う)を、コピー終了後,ファクシミリ送信終了後,ファクシミリ受信のプリントアウト後あるいはスキャナ読取と転送の終了後に、画像廃棄の安全性を確保するために、HDDの該当画像記憶領域に、画像消去用のデータを上書きするときの、上書きモードを選択指定するものであり、そこに表記の「セキュリティ優先(低速)」,「標準(中速)」および「速度優先(高速)」の1つを選択できる。
融合機1を画像(文書)サーバあるいはライブラリとして活用するために、スキャナで画像を読込んでHDDに蓄積し、ファクシミリ受信画像やPC(パソコン)の画像をHDDに蓄積し、また外部(例えばPC)の書画情報をHDDに登録して、必要なときにプリントアウト又は外部に転送するが、HDDに蓄積又は登録した画像又は書画は、個別に指定して消去することができる。ユーザが消去を指示し、これに応じて消去が指定された画像を特定する情報(画像ID他)をHDDから消去(クリア)するだけでは、HDDの画像データは消滅しない。この登録画像,文書の消去時にも、画像廃棄の安全性を確保するために、HDDの該当画像記憶領域に、画像消去用のデータを上書きすることができる。もう1つの下位の択一指定領域SSC2は、このときの上書きモードを選択指定するものであり、そこに表記の「セキュリティ優先(低速)」,「標準(中速)」および「速度優先(高速)」の1つを選択できる。
例えばコピーを実行するときには、融合機120のスキャナが発生する、原稿画像を表す画像データがASIC66に与えられ、ASIC66が読取歪を補正する画像補正をして、補正した画像データをローカルメモリ67に書込み、1画像(1原稿)の書込みを終えると圧縮符号化してHDD68に書込む。そしてHDD68から読み出して伸張して画像データに戻して、ASIC66で融合機1のハードウエア120のプリンタに適合する印刷用の画像データに変換して直接に、又は一旦ローカルメモリ67に書込んでから読み出して、プリンタに出力する。ローカルメモリ67に画像データを書込むときに、該メモリ67に対する記憶領域の取得が必要であり、HDD68に書込むときには該HDD68に対する記憶領域の取得が必要である。また、コピーを完了すると、メモリ67およびHDD68の、コピー画像の消去すなわち記憶領域の解放が必要である。また、コピーに限らず、ローカルメモリ67,HDD68を利用する画像,書画およびその他の情報の蓄積,登録,保存において、記憶領域の取得が必要であり、蓄積,登録,保存の抹消(消去)のときは、記憶領域の解放が必要である。
ローカルメモリ67には、入出力する各種情報の一時格納用に1次記憶部FME(揮発性)が定められている。HDD68には、該入出力情報の一時格納用に、1次記憶部に対応付けた2次記憶部SME(不揮発性)が定められ、しかも、各種情報の蓄積,登録,保存用に3次記憶部TME(不揮発性)が定められている。
次に、ローカルメモリ67の一部に定めた、画像データ一時格納用の1次記憶部FMEの記憶領域の取得、解放を実行する第1組の管理テーブルと動作フローについて説明する。1次記憶部FMEに対する情報書込領域の取得,開放を管理するには、画像ID(Identifier)テーブルIITa,ディスクリプタテーブルDRTa,ブロックテーブルBLT1aの3つの管理テーブルを用いて実現している。まず、画像IDテーブルIITaについて説明する。
図3−1に示すように、画像IDテーブルIITaは、1つの欄(配列No.)が、画像IDおよび開始ディスクリプタIDで構成されている。画像IDは、1次記憶部FMEと2次記憶部SME間で共通のユニークなIDであり、各記憶部で異なった画像で重複したIDが存在してはならない。また、画像IDは0(NULL)を画像IDテーブル上の初期状態とするためにシステム予約IDとして使用できないものとしている。開始ディスクリプIDは、最初に取得したディスクリプタIDを示す。画像IDテーブルIITaの初期状態は、画像IDがNULL、開始ディスクリプタIDがEOD(End Of Discriptor)である。
図3−2に示すように、ディスクリプタテーブルDRTaは、1つの欄(配列No.)が、開始ブロック,使用ブロック数および次ディスクリプタIDで構成されている。使用ブロック数は、開始ブロックから連続的に取得しているブロック数を意味する。ここでブロックとは、1次記憶部FMEを固定長サイズに細分化した1領域である。次ディスクリプタIDは、1次記憶部FMEの記憶領域を連続的に使用できない場合にチェーン構造にして非連続的に取得し、管理可能にするための手段である。開始ブロックは、EOB(End Of Block)コードが挿入されていると未使用ディスクリプタと判定し、次ディスクリプタIDはEOT(End Of Table)が挿入されている場合はチェーンの最後と判定する(図3−2)。ディスクリプタテーブルDRTaの初期状態も同様に、開始ブロックはEOB、使用ブロック数は0、そして次ディスクリプタIDはEOT、である。
図3−3にブロックテーブルBLT1aを示す。ブロックテーブルBLT1aは、1次記憶部FMEの記憶領域を固定長サイズに細分化(ブロック化、以降ブロックと呼ぶ)した、各ブロックに1ビットを割当てて、未使用ブロック宛てのビットは「0」に、使用ブロック宛てのビットは「1」として、1次記憶部の使用状態を表すものである。ブロックテーブルBLT1aの初期状態は、全てのビットが0(未使用状態)である。
また、1画像につきその管理情報が、最小で1画像ID+1ディスクリプタ+1ブロックになるため、画像IDとディスクリプタの各テーブルの、使用可能な欄数(配列No.)の最大値は、1次記憶部FMEの記憶領域のブロック数すなわち分割数であればよい。
図4−1,図4−2および図4−3に、画像データを書込むための1次記憶部FMEの取得処理の動作フローを示す。これはMCS36の要求に応答してIMH41が行うものである。動作フロー中に記述されているテーブルIDカウンタと取得済ブロックカウンタは、取得処理時に使用する変数を生成するものである。
図4−1を参照すると、取得要求が発生すると[4−1]、まず入力値に画像IDと、取得するブロックの連続性を指示する連続ブロック数と、該連続ブロック数を複数取得指示可能にするディスクリプ個数が必要なためこの入力値に異常がないか評価する[4−2]。入力値に異常があれば入力パラメータ異常をMCS36に返し処理を抜ける[4−3]。入力値に異常がないときには、画像IDテーブルへの登録処理時に必要なテーブルIDカウンタと取得済ディスクリプタカウンタの初期化を行う[4−4]。入力値が正常ならば最初に画像IDテーブル取得(画像IDテーブル上の登録欄(配列No.)の取得)を試みる[4−5]。画像IDテーブル取得は、画像IDテーブル上の、画像IDがNULL値になっている欄(配列No.)を、画像IDテーブルの先頭からループ検索する。テーブルIDカウンタが最終ID値になった場合は[4−6]、全て使用されているため画像IDテーブル取得不能と判定し画像IDテーブルフルをMCS36に返し処理を抜ける[4−7]。画像IDテーブルを検索した結果[4−8]、NULL値でない画像IDが存在した場合はテーブルIDカウンタを加算し[4−9]、再度[4−6]へ戻る。空き(NULL値の)画像ID欄(配列No.)が存在した場合は、そこに要求画像IDを設定する[4−10]。次にディスクリプタ取得を試みる[4−11]。
図4−2を参照すると、最初にディスクリプタ取得処理(ディスクリプタテーブルDRTa上の登録欄(配列No.)の取得)に必要なテーブルIDカウンタを0に、前ディスクリプタIDをEODに初期化する[4−12]。ディスクリプタの取得は、開始ブロックがEOBになっているテーブルをディスクリプタテーブルDRTaの先頭からループ検索する。テーブルIDカウンタが最終ID値になった場合[4−13]は、全ての登録欄(配列No.)が使用されているため、ディスクリプタ取得不能と判定しディスクリプタテーブルフルをMCS36に返し処理を抜ける[4−14]。ディスクリプタテーブルDRTaを検索した結果[4−15]、開始ブロックがEOB以外の値の場合は、テーブルIDカウンタを加算し[4−16]、再度[4−13]へ戻る。空き登録欄(配列No.)が存在した場合は、前ディスクリプタIDがEODの場合は[4−17]、最初のディスクリプタ書込欄と判定し、画像IDテーブルに取得(登録)済の画像IDの開始ディスクリプタID(図3−1)に、検索したディスクリプタID(図3−2)を設定する[4−18]。前ディスクリプタIDにEOD以外の値が代入されている場合は、前ディスクリプタIDに設定されているディスクリプタの次ディスクリプタIDに、検索したディスクリプタIDを設定する[4−19]。ディスクリプタ登録欄(配列No.)を取得できたことで前ディスクリプタIDに、取得したテーブルIDカウンタのカウント値を設定し、取得済ディスクリプタカウンタを加算する[4−20]。最後にブロックテーブルBLT1aを参照してブロック(1次記憶部FME上の記憶領域)の取得を試みる[4−21]。
図4−3を参照すると、最初に、ブロック取得処理に必要なブロックIDカウンタおよび開始ブロックIDと未使用ブロックカウンタをそれぞれ0に初期化する[4−22]。ブロックの取得は、ブロックテーブル1の、0(未使用)になっているビットをブロックテーブル1の先頭からループ検索する。ブロックIDカウンタが最終ブロックID値になった場合は[4−23]、全て使用されているためブロック取得不能と判定しブロックテーブルフルをMCS36に返し処理を抜ける[4−24]。ブロックテーブルBLT1a1を検索した結果、ビットが1(使用中)の場合は[4−25]、未使用ブロックカウンタをリセットし[4−26]、ブロックIDカウンタを加算し[4−27]、再度[4−23]へ戻る。空きブロックが存在した場合は、未使用ブロックカウンタが初期化されているか判定し[4−28]、初期化されている場合は連続取得を開始する開始ブロックと判断し開始ブロックIDにブロックIDカウンタのカウント値を保持(設定)する[4−29]。その後未使用ブロックカウンタを1加算[4−30]する。加算した結果、要求されたブロック数分取得できたか判定し[4−31]、取得していない場合は[4−27]まで戻る。取得できた場合は、ディスクリプタ(図3−2)の開始ブロックに開始ブロックIDを、使用ブロック数には未使用ブロックカウンタのカウント値を、それぞれ設定する[4−32]。最後に入力パラメータ中のディスクリプタ個数と取得済ディスクリプタカウンタを比較し[4−33]、一致した場合は取得完了と判断し取得完了をMCS36に返し、処理を抜ける[4−34]。一致しない場合は次ディスクリプタを取得するため[4−11]へ戻る。
以上の処理で、画像記憶のために1次記憶部FMEの記憶領域を取得することができる。
図5−1および図5−2に、1次記憶部FMEの解放処理の動作フローを示す。この解放処理も、MCS36の要求に応答してIMH41が実行する。まず図5−1を参照する。解放要求が発生すると[5−1]、すなわちMCS36が画像ID(入力画像ID)を与えてその消去を指示すると、IMH41は、まず入力値に画像IDが必要なためこの入力値に異常がないか評価する[5−2]。入力値に異常があれば入力パラメータ異常をMCS36に返し[5−3]、処理を抜ける。次に画像IDテーブル検索処理時に必要なテーブルIDカウンタの初期化を行う[5−4]。入力値が正常ならば最初に画像IDテーブルに、与えられた画像IDが存在するか検索を試みる[5−5]。画像IDテーブルIITaの画像IDに入力パラメータの画像IDが一致するまで、画像IDテーブルIITaの先頭からループ検索する。テーブルIDカウンタが最終ID値になった場合は[5−6]、画像IDテーブルIITaに該当画像IDなしと判定し、該当画像IDなしをMCS36に返し処理を抜ける[5−7]。それまでの過程では、画像IDテーブルIITaを検索した結果[5−8]、画像IDが異なった場合はテーブルIDカウンタを加算し[5−9]、再度[5−6]へ戻る。画像IDテーブルIITaに、入力画像IDが存在した場合は、ディスクリプタテーブルの解放(書換え)、ブロックテーブル1の解放(書換え)を試みる[5−10]。
図5−2を参照すると、ディスクリプタテーブルDRTaの解放では、検索した画像IDテーブルIITaの、入力画像IDの欄(配列No.)にある開始ディスクリプタIDをもとに、解放画像ID(入力画像ID)が使用している最終ディスクリプタを検索していく。最終ディスクリプタは、ディスクリプタテーブルDRTaの次ディスクリプタIDがEOTになっていることで判定できる。ディスクリプタの解放順は、チェーン構造上、最後の欄(配列No.)から解放するようにしなければならない。まず画像IDテーブルIITaに入力されている開始ディスクリプタIDをディスクリプタIDカウンタに、前ディスクリプタIDをEOTに設定し[5−11]、ディスクリプタIDカウンタからディスクリプタテーブルDRTaをループ検索する。テーブルIDカウンタのカウント値が最終ID値になった場合は[5−12]、ディスクリプタ管理テーブル異常と判定しディスクリプタテーブル異常をMCS36に返し処理を抜ける[5−13]。ディスクリプタテーブルDRTaを検索した結果[5−14]、次ディスクリプタIDがEOT以外の値の場合、前ディスクリプタIDにテーブルIDカウンタを設定し、テーブルIDカウンタに次ディスクリプタIDを再設定し[5−15]、再度[5−12]へ戻る。次ディスクリプタIDがEOTの場合は、前ディスクリプタIDに設定されているディスクリプタIDの次ディスクリプタIDをEOTに設定する[5−16]。
解放対象ディスクリプタIDが決定すると、最後にブロックの解放を試みる。ブロックの解放では、ディスクリプタテーブルDRTa中の開始ブロックから使用ブロック数分の、ブロックテーブルBLT1a上のビットを、0に書換える[5−17]。解放処理が完了すると前ディスクリプタIDを参照し[5−18]、EOTの場合はディスクリプタテーブルDRTaとブロックテーブルBLT1aの解放が完了したと判定し処理を抜ける[5−19]。EOTでない場合は[5−12]へ戻り解放処理を継続する。
以上の処理で、画像データを記憶した領域の、画像データが消去されたことになる。ただしこれは、該当領域の画像データを消滅させるものものではなく、画像管理データを消去して、管理上該当画像無しにするものである。コピーのための、または他の情報の入出力のための、情報の一時格納が不要になったときに、この記憶部の解放処理(第1組の管理情報の消去)が行われる。ここで、消去のときブロックテーブルBLT1a上の、画像データ記憶領域に対応するビットが0に書き変えられる点に注目されたい。
HDD68に割当てた2次記憶部SMEの取得および解放処理は、上述の、1次記憶部FMEの取得および解放処理と構造が共通のため、図3〜5と同様になる。但し、2次記憶領域SMEには、画像の上書き対象のブロックを特定する為、第1ブロックテーブルBLT1aと同様な第2ブロックテーブルBLT2aを上書きオプションモジュール42に専用のブロックテーブルとして用意し、第2ブロックテーブルBLT2a内の、各配列No.のBit n個中にBit 1が何個立っているのかを示すカウント数を保存する配列(以下、第2カウント数テーブルCNT2a)も用意している。
該第2カウント数テーブルCNT2aは、上書きオプションモジュール42による上書処理のための上書領域の特定(判定)を簡易にするために用いたものである。これに合せて、説明は前後するが、第2カウント数テーブルCNT2aと同様な、第1ブロックテーブルBLT1a内の、各配列No.のBit n個中にBit 1が何個立っているのかを示すカウント数を保存する配列である第1カウント数テーブルCNT1aも用意している。これを図3−4に示す。第1および第2カウント数テーブルCNT1aおよびCNT2aのデータは、それぞれ第1および第2ブロックテーブルBLT1aおよびBLT2a内のビットに「0」から「1」への変化、又は、「1」から「0」への変化があったときに、変化があった配列No.のカウント値がその分アップ又はダウンされる。
上述の1次記憶部FMEの解放により、ある画像IDの管理情報が第1組の管理テーブルから消去されると、その画像データが記憶されていたブロックに宛てられていた、第1ブロックテーブルBLT1a上のビットが「1」から「0」に変化し、これによりビット変化があった配列No.宛ての、第1カウント数テーブルCNT1aのカウント値がその配列No.で変化があったビット数分小さい値に変る。しかし第2ブロックテーブルBLT2a上のビットは操作されないので、第2カウント数テーブルCNT2aのカウント値は変化せず、第1カウント数テーブルCNT1aと第2カウント数テーブルCNT2aの対応配列No.のカウント値が異なるものとなる。したがって、第1カウント数テーブルCNT1aと第2カウント数テーブルCNT2aの各対応配列No.のカウント値を、照合してカウント値に差があるかを検索することにより、消去指示(管理情報の消去)があったブロック配列No.とブロック数(差値)が分る。ブロック配列No.内のブロック位置は、第1および第2ブロックテーブルBLT1aおよびBLT2aの該当配列No.上の、対応ビットの排他的論理和が「1」となる(すなわち対応ビットの状態が異なる)ビット位置に対応する、1次記憶部FMEおよび2次記憶部SME上のブロックが消去対象ブロックである、と決定できる。
第1および第2ブロックテーブルBLT1aおよびBLT2aの対応する、各配列No.の各ビットの排他的論理和をとることにより、第1,第2カウント数テーブルCNT1a,CNT2aを用いなくても、消去指示があったブロック位置の判定ができる。しかしながらこの場合は、テーブル上の全ビットに対する比較処理が必要となる。第1カウント数テーブルCNT1aと第2カウント数テーブルCNT2aを用いる各配列No.のカウント値の比較により、消去対象ブロックを決定する処理が簡易になり高速になる。
ブロックテーブルBLT2a及びカウント数テーブルCNT2aは、ブロックテーブルBLT2aおよびカウント数テーブルCNT1aの初期状態時に一緒に作成され、初期化される。このとき、2次記憶領域SMEに前回起動時のブロックテーブルBLT2aおよびカウント数テーブルCNT1aが保存されていれば、読み出して、展開する。
これらは、第1ブロックテーブルBLT1にBit 1が立った際には、第2ブロックテーブルBLT2aに対しても対応位置のBitに1を立て、第1,第2カウント数テーブルCNT1a,CNT2aのカウント数も、変化したビット数分更新する。そして第2ブロックテーブルBLT2a及び第2カウント数テーブルCNT2aは、2次記憶領域SMEに対応付けてHDD68に保存する。
なお、第2ブロックテーブルBLT2aは、1次記憶部FMEの記憶領域に比べ2次記憶部SMEの記憶領域の容量が大きいため固定長サイズにブロック化する際の単位を論理アドレス上連続的な複数のセクタの固まりで管理している。そして、2次記憶部SMEには、アクセス不可能な領域を保存するためにアクセス禁止テーブルAETを設けている。2次記憶部SMEは大容量記憶装置をターゲットにしており、本実施例ではHDD68に割当てている。ハードディスクドライブへのアクセスは、物理アドレスでなく論理アドレス方式で行い、論理アドレス指定したセクタが不良セクタだった場合、ハードディスクドライブは自動的に代替セクタ領域に割り当て直し論理アドレス上は連続して使用可能なように制御してしまう。しかし物理アドレス上では不良セクタを代替セクタに割り当ててしまった結果上、不良セクタアドレス前後は非連続になるためヘッドシークが発生してしまい、データ転送時間に微妙な影響を与える。該アクセス禁止テーブルAETは、ハードディスクドライブの代替セクタ処理を抑制するために、不良セクタが発生したアドレスをアクセス禁止にする管理をしておくテーブルである。
図6に、2次記憶部SMEを対象にするアクセス禁止テーブルAETを示す。初期状態は0とするが、0だとセクタ0がアクセス禁止セクタと誤検出してしまうため、これを抑制するためにアクセス禁止テーブルAETに登録されているセクタ個数を示す登録カウンタも用意し、登録カウンタが0になっている場合はアクセス禁止セクタが登録されていないことを表すようにする。アクセス禁止テーブルAETと登録カウンタは2次記憶部SMEに対応付けてHDD68に保存されている。
また、アクセス禁止単位を前述のブロック単位でなく、セクタ単位で管理している理由は、ブロック化する際のセクタ数が変更になったり、2次記憶部SMEのパーティション変更等で使用可能な先頭セクタアドレスが変更になりその結果、先頭ブロックの開始セクタずれが生じて、登録しておいた不良セクタとブロックとの整合性がとれなくなってしまうのを回避するためである。
図7に、アクセス禁止セクタとして不良セクタを対象にした場合の登録動作フローを示す。不良セクタは、通常ハードディスクドライブ読み出し時に検出されるため、読み出し動作で登録制御が発生する。読み出し制御を行った結果、読み出しセクタが不良セクタだったかどうか評価する[7−1]。不良セクタが発生していなければ処理を抜ける。不良セクタだった場合は、登録カウンタを1つ加算し、アクセス禁止テーブルAET上の、“登録カウンタ − 1”の配列No.に不良セクタアドレスを登録し処理を抜ける[7−2]。
また、図示は省略したが、登録カウンタを有限にして管理し登録カウンタ数を超えてしまった場合は、不良セクタ等でアクセス禁止セクタが多発しているためハードディスクドライブの信頼性が低下していることを理由として、HDD68の交換を促す報知を発生する。
図8に、アクセス禁止セクタを、第1組および第2組の、第1,第2ブロックテーブルBLT1a,BLT2a,BLT1b,BLT2bに反映する動作フローを示す。各ブロックテーブルの初期化終了後、内部ループ処理用のカウンタの初期化を行い[8−1]、ループカウンタと登録カウンタ値を比較し[8−2]、値が等しければ処理を抜ける。値が一致しなければアクセス禁止セクタが存在すると判断し、アクセス禁止テーブルAETにセクタ書込欄(配列No.)を取得し、さらにブロック変換して登録カウンタを加算し[8−3]、各ブロックテーブル中の対象ブロックを予め使用ブロック状態(ビット 1)に設定し、ループカウンタを加算し[8−4],[8−2]に戻る。
1次記憶部FMEの取得手段と2次記憶部SMEの取得手段を用いることで、1次記憶部FMEに画像データを格納してからASIC66の圧縮伸長器で圧縮符号化(データ変換)して2次記憶部SMEに格納する場合に、両記憶部に対する任意の容量取得も、固定の容量取得も可能となる。データ転送を分割する場合は、1次記憶部FMEを固定容量で確保し固定容量分データ変換完了してから2次記憶部SMEに転送することを繰り返すことで分割転送が可能になる。
図9に、ローカルメモリ67およびHDD68を、コントローラ60に対して入出力するデータの1時格納用(バッファメモリ)に使用する場合の、入出力データ転送制御の動作フローを示す。これをコピーを実行する場合を例にして説明する。コピーを実行するときには、融合機120のスキャナが発生する、原稿画像を表す画像データがASIC66に与えられ、ASIC66が読取歪を補正する画像補正をして、補正した画像データをローカルメモリ67に書込む。この過程の最初に、MCS36からの要求に応じてIMH41が、上述の、1次記憶部FMEおよび2次記憶部SMEに共通の記憶領域(記憶ブロック)の取得を行う[9−1]。次にMCS36が、スキャナが発生しASIC66が読取補正を加えた画像データを、1次記憶部FME上の、取得済(取得1)の記憶領域に書込み[9−2]、そして1次記憶部FME上の画像データを読み出して圧縮符号化して、2次記憶部SME上の、取得済の記憶領域に書込む[9−3]。つぎにMCS36の要求に応じてIMH41が、上述の、1次記憶部FMEおよび2次記憶部SMEに共通の記憶領域(記憶ブロック)の取得を行う[9−4]。次にMCS36は、2次記憶部SME上の圧縮符号データを読み出してASIC66で画像データに伸張し、そして融合機1のプリンタの印刷に適する印刷用の画像データに変換して、1次記憶部FME上の、取得済(取得2)の記憶領域に書込む[9−5]。そして1次記憶部FME上の印刷用の画像データをコピー設定枚数に相当する回数繰返して融合機1のプリンタに出力する[9−6]。これを終えるとMCS36が記憶領域の解放をIMH41に指示し、これに応答して、上記のデータ転送のために取得した取得1,2の記憶領域を開放する。すなわち、画像IDテーブルIITa,ディスクリプタテーブルDRTa上の該当の画像IDおよびそれにリンクした管理上法を消去し、第1ブロックテーブルBLT1a上の取得したブロックに宛てたビットを「0」に切換え、第1カウント数テーブルCNT1aの、ビット切換えがあった配列No.宛てのカウント値を変更する。しかし、この時点では第2ブロックテーブルBLT2aおよび第2カウント数テーブルCNT2aのデータは変更しない。
図10には、HDD68に対して各種情報の蓄積,登録あるいは保管する場合の、入出力データ転送制御の動作フローを示す。この場合は、HDD68に割当てた3次記憶部TMEにデータを書込む(蓄積,登録あるいは保管)するが、その書込に、1次記憶部FMEおよび2次記憶部SMEをも用いる。
3次記憶部TMEは2次記憶部SMEと重複しないように定められており、3次記憶部TMEに対するデータの書込み,消去を管理するために、上述のデータ一時格納に用いる上述の管理情報である、画像IDテーブルIITa,ディスクリプタテーブルDRTa,ブロックテーブルBLT1a,BLT2aおよびカウント数テーブルCNT1a,CNT2aのそれぞれに対応し内容および機能が同様な、第2組の、情報IDテーブルIITb,ディスクリプタテーブルDRTb,ブロックテーブルBLT1b,BLT2bおよびカウント数テーブルCNT1b,CNT2bが、3次記憶部TMEに対応付けてHDD68に記憶されている。
3次記憶部TMEに対するデータの書込み,消去を、融合機1のスキャナで画像を読取って3次記憶部TMEに蓄積する場合を例にして説明する。スキャナ画像蓄積を実行するときには、融合機120のスキャナが発生する、原稿画像を表す画像データがASIC66に与えられ、ASIC66が読取歪を補正する画像補正をして、補正した画像データをローカルメモリ67に書込む。この過程の最初に、MCS36からの要求に応じてIMH41が、上述の、1次記憶部FMEおよび2次記憶部SMEに共通の記憶領域(記憶ブロック)の取得(取得1)を行う[10−1]。次にMCS36が、スキャナが発生しASIC66が読取補正を加えた画像データを、1次記憶部FME上の、取得済(取得1)の記憶領域に書込み[10−2]、そして1次記憶部FME上の画像データを読み出して圧縮符号化して、2次記憶部SME上の、取得済の記憶領域に書込む[10−3]。つぎにMCS36の要求に応じてIMH41が、1次記憶部FMEおよび2次記憶部SMEに共通の記憶領域(記憶ブロック)の取得(取得2)を行う[10−4]。次にMCS36は、2次記憶部SME上の圧縮符号データを読み出してそれをそのまま1次記憶部FMEに書込む[10−5]。次にMCS36は、上述の記憶領域(記憶ブロック)の取得と同様な処理により、第2組の管理情報を参照して3次記憶部TMEに対する記憶ブロックの取得を行う[10−6]。そして1次記憶部FMEの圧縮符号データを、3次記憶部TME上の取得(取得3)したブロックに書込む[10−6]。これで、スキャナ読取画像のHDD68に対する蓄積が終了し、第2組の情報IDテーブルIITbには、スキャナ読取画像に与えたIDが登録されている。
次にMCS36は、取得1,2で取得した、1次記憶部FME,2次記憶部SMEの使用ブロックを解放する[10−8]。すなわち、第1組の第1ブロックテーブルBLT1aの、該当ブロックに宛てられたビットを「0」に書換え、その分、第1組の第1カウント数テーブルCNT1aのカウント値も更新し、第1組の画像IDテーブル(これも情報IDテーブルである)IITaから、該当の画像IDおよびそれに付帯するディスクリプタを消去する。しかし、この段階では、第1組の、第2ブロックテーブルBLT2aおよび第2カウント数テーブルCNT2aのデータは変更されない。上書きをしていないので、1次記憶部FMEおよび2次記憶部SMEの該当ブロックには、画像データが残存している。第1組の管理情報(IITa,DRTa,BLT1a,CNT1a)が消去されているので、取得1,2で取得したブロックの画像データには正規にはアクセスできないが、仮に1次記憶部FMEおよび2次記憶部SMEの全面のデータを収集して解析すると、取得1,2で取得したブロックの画像データを収集できる。
この場合はHDD68に対する画像の蓄積であるので、第2組の管理情報は変更しない。後に、蓄積画像が不要になり、その廃棄が指示されるとMCS36は、IMH41に、消去対象の情報IDを与える。IMH41はこれに応答して、前述の解放処理と同様にして、第2組の第1ブロックテーブルBLT1bの、該当ブロックに宛てられたビットを「0」に書換え、その分、第2組の第1カウント数テーブルCNT1bのカウント値も更新し、第2組の情報IDテーブルIITbから、該当の情報IDおよびそれに付帯するディスクリプタを消去する。しかし、この段階では、第2組の、第2ブロックテーブルBLT2bおよび第2カウント数テーブルCNT2bのデータは変更されない。上書をしていないので、3次記憶部TMEの該当ブロックには、蓄積情報が残存している。第2組の管理情報(IITb,DRTb,BLT1b,CNT1b)が消去されているので、取得3で取得したブロックに書き込んだデータには正規にはアクセスできないが、仮に3次記憶部TMEの全面のデータを収集して解析すると、取得3で取得したブロックのデータを収集できる。
以上が、上書きオプションモジュール42の有無にかかわらず実施される共通の処理である。上書きオプションモジュール42は、設定されたタイミングで、メモリ上データの消去のための上書きが必要かをチェツクし、必要と判定すると「上書」を行う。
図11に、上書きオプションモジュール42によるメモリ上不要データの消去での、参照テーブルを示す。設定されたタイミングになり、しかもMCS36およびIMH41のいずれもローカルメモリ67およびHDD68に対してアクセスしていない場合に、上書オプションモジュール42は、画像消去モードの設定(図2−3)が、「上書きする」であって、一時格納用にメモリを使用する場合の消去モード入力欄SSC1の「セキュリティ優先(低速)」,「標準(中速)」又は「速度優先(高速)」のいずれかが指定されていると、第1組の第1および第2カウント値テーブルCNT1a,CNT2aの、対応配列No.のカウント値が不一致かを、配列No.の順番でチェックして、不一致の配列No.と差値をセーブして、MCS36に転送する。MCS36は、不一致の配列No.と差値を受けると、第1組の第1および第2ブロックテーブルBLT1a,BLT2a上の、対応する不一致配列No.のビットの排他的論理和をとって不一致ビットのブロックを判定し、その数が前記差値と同一であると、データ処理が正常と見て、不一致ビットのブロックの、1次記憶部FME(67)および2次記憶部SME(68)上のデータ記憶アドレスを与えて上書きを指示する。上書オプションモジュール42は、与えられたアドレスに、データ消去用のデータを上書きする。この上書きを終えると上書オプションモジュール42は、MCS36に上書き終了を報知し、MCS36はこれに応答して管理情報の更新をIMH41に指示し、IMH41が、第1組の、第2ブロックテーブルBLT2aの、上書きを終えたブロックのビットデータを「0」に書換え、これに対応して第2カウント数テーブルCNT2aのデータも更新する。
また、上書オプションモジュール42は、画像消去モードの設定(図2−3)が、「上書きする」であって、HDD68に蓄積,登録又は保管したデータの消去モード入力欄SSC2の「セキュリティ優先(低速)」,「標準(中速)」又は「速度優先(高速)」のいずれかが指定されていると、第2組の第1および第2カウント値テーブルCNT1b,CNT2bの、対応配列No.のカウント値が不一致かを、配列No.の順番でチェックして、不一致の配列No.と差値をセーブして、MCS36に転送する。MCS36は、不一致の配列No.と差値を受けると、第2組の第1および第2ブロックテーブルBLT1b,BLT2b上の、対応する不一致配列No.のビットの排他的論理和をとって不一致ビットのブロックを判定し、その数が前記差値と同一であると、データ処理が正常と見て、不一致ビットのブロックの、3次記憶部TME(68)上のデータ記憶アドレスを与えて上書きを指示する。上書オプションモジュール42は、与えられたアドレスに、データ消去用のデータを上書する。この上書きを終えると上書オプションモジュール42は、MCS36に上書き終了を報知し、MCS36はこれに応答して管理情報の更新をIMH41に指示し、IMH41が、第2組の、第2ブロックテーブルBLT2bの、上書きを終えたブロックのビットデータを「0」に書換え、これに対応して第2カウント数テーブルCNT2bのデータも更新する。
所望のセキュリティーレベルやパフォーマンスに対応して、オペレータ又はサービスマンが、「何もしない」(データ消去用の上書無し),「セキュリティ優先(低速)」,「標準(中速)」又は「速度優先(高速)」を、オペレーションパネル70(図2−3)を用いて設定しており、「セキュリティ優先(低速)」,「標準(中速)」又は「速度優先(高速)」のいずれが設定されているかに対応して、上書オプションモジュール42は、上記上書きの動作モードを選択する。
上記上書きにおいて上書オプションモジュール42は、「セキュリティ優先(低速)」が設定されているときには、図12−1に示すように、乱数を生成して、順次に発生する乱数(図上の1,2,3,・・・は第1,2,3,・・・番に発生した乱数を指す)をASIC66内のメモリ上に用意されたデータバッファに書込み、上書対象ブロックに対する書込単位量をデータバッファに書込むと、それを上書対象ブロックに書込み、また新たに発生する乱数をデータバッファに書込み書込単位量になると上書対象ブロックに書込むというプロセスを、対象領域の全領域を埋めるように繰返す。「標準(中速)」が設定されているときには、図12−2に示すように、乱数を生成して、順次に発生する乱数をn個コピーして、該n個の乱数群を、データバッファ内にランダムピッチで書込んでいき、上書対象ブロックに対する書込単位量をデータバッファに書込むと、それを上書対象ブロックに書込み、また乱数をn個コピーして、該乱数群をデータバッファ内にランダムピッチで埋め込んで書込単位量になると上書対象ブロックに書込むというプロセスを、対象領域の全領域を埋めるように繰返す。「速度優先(高速)」が設定されているときには、図12−3に示すように、乱数を生成して、発生した1つの乱数をデータバッファ内に繰返し書込んで、上書対象ブロックに対する書込単位量をデータバッファに書込むと、それを上書対象ブロックに書込み、また発生した1つの乱数をデータバッファ内に繰返し書込んで、上書対象ブロックに対する書込単位量をデータバッファに書込むと、それを上書対象ブロックに書込むというプロセスを、対象領域の全領域を埋めるように繰返す。
なお、設定されたタイミングになり、しかもMCS36およびIMH41のいずれもローカルメモリ67およびHDD68に対してアクセスしていない場合に、上書オプションモジュール42は、上述の上書き要否判定および要のときの上書き処理を実行するが、上書き処理に進んだ上書き要否判定以下のいずれのタイミングでも、MCS36がメモリアクセス要求(メモリ取得,解放の要求)を発生すると、そこで上記上書き処理を中止する。これにより、上書オプションモジュール42のメモリデータ消去用の上書き処理が、新たなデータのメモリへの格納又は蓄積に、上書き終了を待たなければならない等の支障を与えることはない。
上書き消去が完了しないブロックに対して、第2ブロックテーブルBLT2a(BLT2b)のビットデータは「1」(書込あり)であっても、第1ブロックテーブルBLT1a(BLT1b)のビットデータが「0」(書込なし)であるので、MCS36の新たな記憶領域取得要求に応答して、IMH41が、第1ブロックテーブルBLT1a(BLT1b)の、上書き消去が完了しないブロックに宛てられたビットを「1」に変更し(これと同じく第2ブロックテーブルBLT2a(BLT2b)の対応ビットデータも「1」にするが、その前から「1」である)、上書き消去が完了しないブロックが書込みに指定されることがある。これは、同一メモリに対する新たな入力データの上書き指定であり、問題を生じない。すなわち、この場合、先の、上書き消去が完了しないブロックの残存データが、新たな入力データの上書によって消去される。