(57)【要約】【課題】転送元エリアと転送先エリアとが重複している場合でもデータ破壊を招くことなくデータ転送を効率的に行なうことのできるメモリ制御装置を提供する。【解決手段】転送元エリアＡ２の先頭アドレスと転送先エリアの先頭アドレスとを大小比較し、（転送元エリアＡ２の先頭アドレス）＜（転送先エリアｂ１の先頭アドレス）の場合は、転送元エリアの先頭アドレスを読み出し開始アドレスとし、転送先エリアの先頭アドレスを書き込み開始アドレスとしてこれらのアドレスを順次増加させて昇順にデータ転送を行ない、（転送元エリアＡ２の先頭アドレス）＞（転送先エリアａ１の先頭アドレス）の場合は、転送元エリアの終端アドレスを読み出し開始アドレスとしかつ転送先エリアの終端アドレスを書き込み開始アドレスとして、これらのアドレスを順次減少させて降順にデータ転送を行なう。【選択図】図５
2007164552.tif 000002
【特許請求の範囲】
【請求項１】
指定された転送元エリアのデータを、指定された転送先エリアに転送するメモリ制御装置において、
前記転送元エリアの先頭アドレスと前記転送先エリアの先頭アドレスとを大小比較する比較手段と、  
前記転送元エリアの先頭アドレスが前記転送先エリアの先頭アドレスより小さいときは、前記転送元エリアの終端アドレスを読み出し開始アドレスとし、かつ前記転送先エリアの終端アドレスを書き込み開始アドレスとして、これらのアドレスを順次減少させてデータ転送を行なう転送手段と
を有する
ことを特徴とするメモリ制御装置。
【請求項２】
前記転送元エリアの先頭アドレスが前記転送先エリアの先頭アドレスより大きいときは、前記転送元エリアの先頭アドレスを読み出し開始アドレスとし、かつ前記転送先エリアの先頭アドレスを書き込み開始アドレスとして、これらのアドレスを順次増加させてデータ転送を行なう転送手段
を有する
ことを特徴とする請求項１に記載のメモリ制御装置。
【請求項３】
指定された転送元エリアのデータを、指定された転送先エリアに転送するメモリ制御装置において、
前記転送元エリアの先頭アドレスと前記転送先エリアの先頭アドレスとを大小比較する比較手段と、
前記転送元エリアの先頭アドレスが前記転送先エリアの先頭アドレスより大きいときは、前記転送元エリアの先頭アドレスを読み出し開始アドレスとし、かつ前記転送先エリアの先頭アドレスを書き込み開始アドレスとして、これらのアドレスを順次増加させてデータ転送を行なう転送手段と
を有する
ことを特徴とするメモリ制御装置。
【請求項４】
転送先の先頭アドレスと転送元の先頭アドレスの大小を比較し、比較した結果を出力する比較器と、
転送先の先頭アドレスと転送サイズとを加算する加算器と、
前記転送先の先頭アドレスと前記加算器の出力とが入力され、前記比較器の出力に基づいて、いずれか一方をカウント初期値として選択出力する第１のセレクタと、
前記転送先の先頭アドレスと前記加算器の出力とが入力され、前記比較器の出力に基づいていずれか一方をカウント終了値として選択出力する第２のセレクタと、
前記比較器と前記第１のセレクタと前記第２のセレクタとが入力されたカウンタと
を有し、
前記カウンタの出力をメモリに対するライトアドレスとして与える
ことを特徴とする請求項１乃至３に記載のメモリ制御装置。
【請求項５】
転送元の先頭アドレスと転送サイズとを加算する加算器と、
前記加算器の出力を反転させる第１の反転器と、
前記先頭アドレスと前記第１の反転器の出力とが入力され、前記比較器の出力に基づいて、いずれか一方を選択出力する第１のセレクタと、
前記第１のセレクタの出力がカウント初期値として入力されたカウンタと、
前記カウンタの出力するカウント値を反転させる第２の反転器と、
前記カウント値と前記第２の反転器の出力とが入力され、前記第１のセレクタが前記第１の反転器の出力を選択出力し、前記第１のセレクタが前記先頭アドレスを選択出力している場合は、前記カウント値を選択出力する第２のセレクタと
を備え、
前記第２のセレクタの出力をメモリに対するリードアドレスとして与える
ことを特徴とする請求項４に記載のメモリ制御装置。
【請求項６】
指定された転送元エリアのデータを、指定された転送先エリアに転送するメモリ制御装置において、
ライトアドレスを生成するライトアドレス生成部と、リードアドレスを生成するリードアドレス生成部とを備え、
前記ライトアドレス生成部は、
転送元エリアの先頭アドレスと転送先エリアの先頭アドレスとを比較する比較器と、
転送先エリアの先頭アドレスと転送サイズとを加算する第１の加算器と、
前記転送元エリアの先頭アドレスが前記転送先エリアの先頭アドレスより大きいことを前記比較器の出力が示すときは前記転送先エリアの先頭アドレスをカウント初期値として出力し、前記転送元エリアの先頭アドレスが前記転送先エリアの先頭アドレスより小さいことを前記比較器の出力が示すときは前記第１の加算器の出力をカウント初期値として出力する第１のセレクタと、
前記転送元エリアの先頭アドレスが前記転送先エリアの先頭アドレスより大きいことを前記比較器の出力が示すときは前記第１の加算器の出力をカウント終了値として出力し、前記転送元エリアの先頭アドレスが前記転送先エリアの先頭アドレスより小さいことを前記比較器の出力が示すときは前記転送先エリアの先頭アドレスをカウント終了値として出力する第２のセレクタと、
前記転送元エリアの先頭アドレスが前記転送先エリアの先頭アドレスより大きいことを前記比較器の出力が示すときは、前記第１のセレクタの出力するカウント初期値から前記第２のセレクタの出力するカウント終了値までを順次カウントアップし、前記転送元エリアの先頭アドレスが前記転送先エリアの先頭アドレスより小さいことを前記比較器の出力が示すときは、前記第１のセレクタの出力するカウント初期値から前記第２のセレクタの出力するカウント終了値までを順次カウントダウンするアップダウンカウンタと
を備え、該アップダウンカウンタが出力するカウント値をライトアドレスとして出力し、
前記リードアドレス生成部は、
転送元エリアの先頭アドレスと転送サイズとを加算する第２の加算器と、
前記第２の加算器の出力を反転させる第１の反転器と、
前記転送元エリアの先頭アドレスが前記転送先エリアの先頭アドレスより大きいことを前記比較器の出力が示すときは前記転送元エリアの先頭アドレスを第２のカウント初期値として出力し、前記転送元エリアの先頭アドレスが前記転送先エリアの先頭アドレスより小さいことを前記比較器の出力が示すときは前記第１の反転器の出力を第２のカウント初期値として出力する第３のセレクタと、
前記第３のセレクタの出力する第２のカウント初期値からカウントアップするアップカウンタと、
前記アップカウンタの出力するカウント値を反転させる第２の反転器と、
前記転送元エリアの先頭アドレスが前記転送先エリアの先頭アドレスより大きいことを前記比較器の出力が示すときは前記アップカウンタのカウント値を出力し、前記転送元エリアの先頭アドレスが前記転送先エリアの先頭アドレスより小さいことを前記比較器の出力が示すときは前記第２の反転器の出力を出力する第４のセレクタと
を備え、前記第４のセレクタの出力をリードアドレスとして出力する
ことを特徴とするメモリ制御装置。
【請求項７】
請求項１乃至６に記載されているメモリ制御装置を有する
ことを特徴とする画像形成装置。
【請求項８】
指定された転送元エリアのデータを、指定された転送先エリアに転送するデータ転送方法において、
前記転送元エリアの先頭アドレスと前記転送先エリアの先頭アドレスとを大小比較し、
前記転送元エリアの先頭アドレスが前記転送先エリアの先頭アドレスより小さいときは、前記転送元エリアの終端アドレスを読み出し開始アドレスとし、かつ前記転送先エリアの終端アドレスを書き込み開始アドレスとして、これらのアドレスを順次減少させてデータ転送を行なう
ことを特徴とするデータ転送方法。
【請求項９】
前記転送元エリアの先頭アドレスが前記転送先エリアの先頭アドレスより大きいときは、前記転送元エリアの先頭アドレスを読み出し開始アドレスとし、かつ前記転送先エリアの先頭アドレスを書き込み開始アドレスとして、これらのアドレスを順次増加させてデータ転送を行なう
ことを特徴とする請求項８に記載のデータ転送方法。
【請求項１０】
指定された転送元エリアのデータを、指定された転送先エリアに転送するデータ転送方法において、
前記転送元エリアの先頭アドレスと前記転送先エリアの先頭アドレスとを大小比較し、
前記転送元エリアの先頭アドレスが前記転送先エリアの先頭アドレスより大きいときは、前記転送元エリアの先頭アドレスを読み出し開始アドレスとし、かつ前記転送先エリアの先頭アドレスを書き込み開始アドレスとして、これらのアドレスを順次増加させてデータ転送を行なう
ことを特徴とするデータ転送方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリ内でデータを移動させるメモリ制御装置およびデータ転送方法に関する。
【背景技術】
【０００２】
メモリに様々なサイズのデータを書き込むと共に、書き込み時と異なる順序で読み出しては消去することを繰り返し行なうと、メモリ内に様々なサイズの空き領域が飛び飛びに存在する、所謂、断片化した状態が生じる。
【０００３】
たとえば、両面コピーが可能な複写機では、原稿読取開始時には、図６（ａ）〜（ｄ）に示すように、１枚目の原稿のおもて面Ａ１、裏面Ａ２、２枚目の原稿のおもて面Ｂ１、裏面Ｂ２という順序で、画像データが画像メモリに格納される。各画像データは圧縮されて格納されると共にその圧縮率は画像内容によって変化するため、各ページのデータ量は様々になっている。
【０００４】
出力時には、１枚目の転写紙のおもて面に画像形成した後、１枚目の転写紙の表裏を反転させている間に、２枚目の転写紙のおもて面に画像形成することが行なわれる。このため、画像形成の完了した順に画像データＡ１を消去し（図６（ｅ））、さらに画像データＢ１を消去すると、図６（ｆ）に示すように、空き領域ａ１、ｂ１が飛び飛びに存在する断片化した状態になってしまう。空き領域ａ１、ｂ１を合計すれば次ページの原稿読み取りに必要な空き容量を確保できる場合でも、次ページの保存には連続領域を要するので、このままでは、次ページの読み取り処理を進めることはできない。
【０００５】
このような両面印刷時の断片化を防止する技術として、画像メモリを、おもて面用エリアと裏面用エリアとに分割して使用する技術が提案されている（たとえば、特許文献１参照。）。すなわち、両面印刷する場合でも、おもて面と裏面のそれぞれを個別に見れば、入力ページ順に出力されるので、画像メモリをおもて面用エリアと裏面用エリアとに分けて使用することで、各エリア内においては画像データが入力順に出力されて断片化が防止されるようになっている。
【０００６】
また、空き領域の断片化を解消する一般的な方法としては、たとえば、図６（ｆ）に示すように２つの空き領域ａ１、ｂ１の間にデータＡ２が存在する場合に、該データＡ２を下側の空き領域の下端（図６（ｇ）参照）へ移動させるか、上隣りの画像データＢ２と繋がるように移動（図６（ｈ）参照）させて、（ａ１＋ｂ１）に相当する大きさの連続した空き領域Ｍを生成する方法がある。
【０００７】
【特許文献１】特開２００２−２９１０３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
おもて面用エリアと裏面用エリアとに分割して使用する技術では、各エリア内での断片化は防止されるが、たとえば、おもて面用エリアの空き領域と裏面用エリアの空き領域とを合計すれば次ページの読み取りに必要な容量を確保できる場合でも、２つのエリアに分割されているために次ページの読み取り処理を進めることができない場合が生じ、画像メモリ全体としては空き領域が必ずおもて面用エリアと裏面用エリアとに断片化されてしまう。また、両面印刷に特化された技術であり、一般的な断片化対策として使用できない。
【０００９】
一方、図６（ｇ）、（ｈ）に示すようなデータ移動においては、通常、転送元エリアの先頭アドレス（リード開始アドレス）と、転送先エリアの先頭アドレス（ライト開始アドレス）と、転送サイズとを指定したメモリｔｏメモリのＤＭＡ（Direct Memory Access）転送を用いてデータの移動が行なわれる。該ＤＭＡ転送では、指定された先頭アドレスからアドレスを順にインクリメントして昇順にデータ転送を行なうので、図６（ｆ）から（ｇ）へのように下方へデータを移動させる場合に転送元エリアと転送先エリアとが重複していると、ライト開始アドレスが転送元エリア内にあるので、図７に示すように、転送元エリアＡ２の先頭から順次転送されてくるデータで重複エリア内のデータが上書き（図中、破線表示）されて破壊されてしまう。
【００１０】
従来は、このようなデータ破壊が生じないように、転送元エリアを細分化し、複数回に分けてＤＭＡ転送していたので、データ移動のための処理が複雑化すると共に転送効率が低下するという問題があった。
【００１１】
本発明は、上記の問題を解決しようとするものであり、転送元エリアと転送先エリアとが重複している場合でもデータ破壊を招くことなくデータ転送を効率的に行なうことのできるメモリ制御装置およびデータ転送方法を提供することを目的としている。
【課題を解決するための手段】
【００１２】
以上の目的は以下のいずれかの構成によって達成される。
【００１３】
（１）指定された転送元エリアのデータを、指定された転送先エリアに転送するメモリ制御装置において、
前記転送元エリアの先頭アドレスと前記転送先エリアの先頭アドレスとを大小比較する比較手段と、  
前記転送元エリアの先頭アドレスが前記転送先エリアの先頭アドレスより小さいときは、前記転送元エリアの終端アドレスを読み出し開始アドレスとし、かつ前記転送先エリアの終端アドレスを書き込み開始アドレスとして、これらのアドレスを順次減少させてデータ転送を行なう転送手段と
を有する
ことを特徴とするメモリ制御装置。
【００１４】
上記発明では、転送元エリアの先頭アドレスが転送先エリアの先頭アドレスより小さい場合は、各エリアの終端を転送の開始位置にして降順にデータ転送が行なわれる。
【００１５】
（２）前記転送元エリアの先頭アドレスが前記転送先エリアの先頭アドレスより大きいときは、前記転送元エリアの先頭アドレスを読み出し開始アドレスとし、かつ前記転送先エリアの先頭アドレスを書き込み開始アドレスとして、これらのアドレスを順次増加させてデータ転送を行なう転送手段
を有する
ことを特徴とする（１）に記載のメモリ制御装置。
【００１６】
上記発明では、カウンタに与えるカウント初期値と該カウンタの出力するカウント値の双方を反転させるか否かを切り換えることで、先頭アドレスから順次増加するアドレス信号と、終端アドレスから順次減少するアドレス信号とを、カウントアップもしくはカウントダウンのいずれか一方のみ可能なカウンタを使用して発生させている。
【００１７】
（３）指定された転送元エリアのデータを、指定された転送先エリアに転送するメモリ制御装置において、
前記転送元エリアの先頭アドレスと前記転送先エリアの先頭アドレスとを大小比較する比較手段と、
前記転送元エリアの先頭アドレスが前記転送先エリアの先頭アドレスより大きいときは、前記転送元エリアの先頭アドレスを読み出し開始アドレスとし、かつ前記転送先エリアの先頭アドレスを書き込み開始アドレスとして、これらのアドレスを順次増加させてデータ転送を行なう転送手段と
を有する
ことを特徴とするメモリ制御装置。
【００１８】
（４）転送先の先頭アドレスと転送元の先頭アドレスの大小を比較し、比較した結果を出力する比較器と、
転送先の先頭アドレスと転送サイズとを加算する加算器と、
前記転送先の先頭アドレスと前記加算器の出力とが入力され、前記比較器の出力に基づいて、いずれか一方をカウント初期値として選択出力する第１のセレクタと、
前記転送先の先頭アドレスと前記加算器の出力とが入力され、前記比較器の出力に基づいていずれか一方をカウント終了値として選択出力する第２のセレクタと、
前記比較器と前記第１のセレクタと前記第２のセレクタとが入力されたカウンタと
を有し、
前記カウンタの出力をメモリに対するライトアドレスとして与える
ことを特徴とする（１）乃至（３）に記載のメモリ制御装置。
【００１９】
（５）転送元の先頭アドレスと転送サイズとを加算する加算器と、
前記加算器の出力を反転させる第１の反転器と、
前記先頭アドレスと前記第１の反転器の出力とが入力され、前記比較器の出力に基づいて、いずれか一方を選択出力する第１のセレクタと、
前記第１のセレクタの出力がカウント初期値として入力されたカウンタと、
前記カウンタの出力するカウント値を反転させる第２の反転器と、
前記カウント値と前記第２の反転器の出力とが入力され、前記第１のセレクタが前記第１の反転器の出力を選択出力し、前記第１のセレクタが前記先頭アドレスを選択出力している場合は、前記カウント値を選択出力する第２のセレクタと
を備え、
前記第２のセレクタの出力をメモリに対するリードアドレスとして与える
ことを特徴とする（４）に記載のメモリ制御装置。
【００２０】
（６）指定された転送元エリアのデータを、指定された転送先エリアに転送するメモリ制御装置において、
ライトアドレスを生成するライトアドレス生成部と、リードアドレスを生成するリードアドレス生成部とを備え、
前記ライトアドレス生成部は、
転送元エリアの先頭アドレスと転送先エリアの先頭アドレスとを比較する比較器と、
転送先エリアの先頭アドレスと転送サイズとを加算する第１の加算器と、
前記転送元エリアの先頭アドレスが前記転送先エリアの先頭アドレスより大きいことを前記比較器の出力が示すときは前記転送先エリアの先頭アドレスをカウント初期値として出力し、前記転送元エリアの先頭アドレスが前記転送先エリアの先頭アドレスより小さいことを前記比較器の出力が示すときは前記第１の加算器の出力をカウント初期値として出力する第１のセレクタと、
前記転送元エリアの先頭アドレスが前記転送先エリアの先頭アドレスより大きいことを前記比較器の出力が示すときは前記第１の加算器の出力をカウント終了値として出力し、前記転送元エリアの先頭アドレスが前記転送先エリアの先頭アドレスより小さいことを前記比較器の出力が示すときは前記転送先エリアの先頭アドレスをカウント終了値として出力する第２のセレクタと、
前記転送元エリアの先頭アドレスが前記転送先エリアの先頭アドレスより大きいことを前記比較器の出力が示すときは、前記第１のセレクタの出力するカウント初期値から前記第２のセレクタの出力するカウント終了値までを順次カウントアップし、前記転送元エリアの先頭アドレスが前記転送先エリアの先頭アドレスより小さいことを前記比較器の出力が示すときは、前記第１のセレクタの出力するカウント初期値から前記第２のセレクタの出力するカウント終了値までを順次カウントダウンするアップダウンカウンタと
を備え、該アップダウンカウンタが出力するカウント値をライトアドレスとして出力し、
前記リードアドレス生成部は、
転送元エリアの先頭アドレスと転送サイズとを加算する第２の加算器と、
前記第２の加算器の出力を反転させる第１の反転器と、
前記転送元エリアの先頭アドレスが前記転送先エリアの先頭アドレスより大きいことを前記比較器の出力が示すときは前記転送元エリアの先頭アドレスを第２のカウント初期値として出力し、前記転送元エリアの先頭アドレスが前記転送先エリアの先頭アドレスより小さいことを前記比較器の出力が示すときは前記第１の反転器の出力を第２のカウント初期値として出力する第３のセレクタと、
前記第３のセレクタの出力する第２のカウント初期値からカウントアップするアップカウンタと、
前記アップカウンタの出力するカウント値を反転させる第２の反転器と、
前記転送元エリアの先頭アドレスが前記転送先エリアの先頭アドレスより大きいことを前記比較器の出力が示すときは前記アップカウンタのカウント値を出力し、前記転送元エリアの先頭アドレスが前記転送先エリアの先頭アドレスより小さいことを前記比較器の出力が示すときは前記第２の反転器の出力を出力する第４のセレクタと
を備え、前記第４のセレクタの出力をリードアドレスとして出力する
ことを特徴とするメモリ制御装置。
【００２１】
（７）（１）乃至（６）に記載されているメモリ制御装置を有する
ことを特徴とする画像形成装置。
【００２２】
（８）指定された転送元エリアのデータを、指定された転送先エリアに転送するデータ転送方法において、
前記転送元エリアの先頭アドレスと前記転送先エリアの先頭アドレスとを大小比較し、
前記転送元エリアの先頭アドレスが前記転送先エリアの先頭アドレスより小さいときは、前記転送元エリアの終端アドレスを読み出し開始アドレスとし、かつ前記転送先エリアの終端アドレスを書き込み開始アドレスとして、これらのアドレスを順次減少させてデータ転送を行なう
ことを特徴とするデータ転送方法。
【００２３】
（９）前記転送元エリアの先頭アドレスが前記転送先エリアの先頭アドレスより大きいときは、前記転送元エリアの先頭アドレスを読み出し開始アドレスとし、かつ前記転送先エリアの先頭アドレスを書き込み開始アドレスとして、これらのアドレスを順次増加させてデータ転送を行なう
ことを特徴とする（８）に記載のデータ転送方法。
【００２４】
（１０）指定された転送元エリアのデータを、指定された転送先エリアに転送するデータ転送方法において、
前記転送元エリアの先頭アドレスと前記転送先エリアの先頭アドレスとを大小比較し、
前記転送元エリアの先頭アドレスが前記転送先エリアの先頭アドレスより大きいときは、前記転送元エリアの先頭アドレスを読み出し開始アドレスとし、かつ前記転送先エリアの先頭アドレスを書き込み開始アドレスとして、これらのアドレスを順次増加させてデータ転送を行なう
ことを特徴とするデータ転送方法。
【発明の効果】
【００２５】
本発明に係わるメモリ制御装置およびデータ転送方法によれば、転送元エリアと転送先エリアとが重複している場合でもデータ破壊を招くことなくデータ転送を効率的に行なうことができる。
【発明を実施するための最良の形態】
【００２６】
以下、図面に基づき本発明の実施の形態を説明する。
【００２７】
図１は、本発明に係わるメモリ制御装置としてのメモリ制御回路２０を備えた画像形成装置１０の構成を示している。画像形成装置１０は、原稿を光学的に読み取り、その複製画像を転写紙上に形成して出力する複写機としての機能を有する装置である。
【００２８】
画像形成装置１０は、原稿画像を読み取って対応する画像データを出力するスキャナ１１と、印刷データをイメージ展開した画像データを出力するプリントコントローラ１２と、これらの出力する画像データが入力された画像処理手段１３と、画像データを記憶するための画像メモリで構成された記憶手段１４と、画像データを圧縮・伸張する圧縮／伸張手段１５と、記憶手段１４に対するデータのリード・ライト動作などを制御するメモリ制御回路２０と、メモリ制御回路２０を通じて入力された画像データに基づいて転写紙上に画像形成して印刷出力する画像出力手段１６とを備えている。
【００２９】
スキャナ１１は、図示省略の原稿自動搬送装置を備えており、原稿の表裏両面を読み取り可能に構成されている。また画像出力手段１６は、転写紙に対して両面印刷可能に構成されている。
【００３０】
画像処理手段１３は、入力される画像データに対してガンマ補正、倍率変換、誤差拡散処理などを施す回路である。記憶手段１４は、データを書き換え可能な半導体メモリで構成される。メモリ制御回路２０は、記憶手段１４に対するデータのリード・ライト制御のほか、画像処理手段１３からの画像データの入力制御、圧縮／伸張手段１５に対する画像データの入出力制御および画像出力手段１６に対する画像データの出力制御を行なう機能などを備えている。
【００３１】
図１では、画像データの流れに関連する構成部分のみを示してあり、画像形成装置１０はこのほかに図示省略の操作部、表示部、ネットワークＩ／Ｆ（Interface）、システム制御部などを備えている。
【００３２】
画像形成装置１０におけるコピー動作や印刷データのプリント動作では、まず、スキャナ１１またはプリントコントローラ１２の出力する画像データが画像処理手段１３を経由してメモリ制御回路２０に順次入力される。メモリ制御回路２０は、画像処理手段１３から入力された画像データを圧縮／伸張手段１５で圧縮し、圧縮後の圧縮データを記憶手段１４に順次書き込む。次にメモリ制御回路２０は、記憶手段１４に格納されている圧縮データを出力時のページ順で読み出すと共に、該読み出した圧縮データを順次圧縮／伸張手段１５に送って伸張し、伸張後の画像データを画像出力手段１６に送信する。画像出力手段１６は、メモリ制御回路２０から入力される画像データに基づいて転写紙に画像形成して出力するようになっている。
【００３３】
記憶手段１４への圧縮データの入力順序や読み出し順序は、図６（ａ）から（ｆ）に示すものと同様となる場合があり、断片化を防止するために図６（ｇ）、（ｈ）のようにメモリ内でデータを移動させるデータ転送処理を必要に応じて行なうようになっている。
【００３４】
図２は、メモリ制御回路２０の概略構成を示している。メモリ制御回路２０は、圧縮／伸張手段１５や画像出力手段１６とのＩ／Ｆ回路なども備えているが、図２においては、記憶手段１４内でのデータ転送機能に関する部分を示し、他の部分は図示省略してある。
【００３５】
メモリ制御回路２０は、ＣＰＵ（Central Processing Unit）−Ｉ／Ｆ２１と、アドレス生成部２２と、メモリＩ／Ｆ２３とを備えている。ＣＰＵ−Ｉ／Ｆ２１は、システム制御部が有するＣＰＵ１７との間でデータの授受を行なう機能を果たし、ＣＰＵ１７から入力される各種の指示（信号Ａ）が図示省略した内部のレジスタに設定される。レジスタに設定された内容は、メモリ制御回路２０内の各部へ出力される（図中の信号Ｂ）。
【００３６】
詳細には、データ転送に関してＣＰＵ１７から、転送元エリアの先頭アドレスとしてのリード開始アドレスと、転送先エリアの先頭アドレスとしてのライト開始アドレスと、転送サイズを示す転送ワード数と、転送開始を指示するスタートコマンドとが入力される。転送ワード数については、「実際に転送するワード数−１」の値がＣＰＵ１７から入力される。
【００３７】
アドレス生成部２２は、記憶手段１４に対するリードアドレス（信号Ｄ）およびライトアドレス（信号Ｅ）を生成してメモリＩ／Ｆ２３へ出力する機能を果たす。アドレス生成部２２は、ライトアドレスを生成するライトアドレス生成部３０とリードアドレスを生成するリードアドレス生成部４０とを備えている。ライトアドレス生成部３０はデータ転送をアドレスの昇順に行なうか、降順に行なうかを示すフラグ信号Ｆを出力し、該信号Ｆはリードアドレス生成部４０に入力されている。
【００３８】
メモリＩ／Ｆ２３は、記憶手段１４に対する制御信号の生成、記憶手段１４から入力されたデータの一時格納、記憶手段１４へ出力するデータの一時格納、アドレス生成部２２からのリードアドレス信号／ライトアドレス信号を記憶手段１４へ出力する機能などを果たし、記憶手段１４に対するデータのリード／ライト動作を制御する。
【００３９】
図３は、ライトアドレス生成部３０の回路構成を示している。ライトアドレス生成部３０には、ＣＰＵ−Ｉ／Ｆ２１からライト開始アドレスＷ１と、転送ワード数Ｗ２と、ライトスタート信号Ｗ３と、リード開始アドレスＲ１とが入力される。ライトスタート信号Ｗ３は、１パルスの信号であり、ＣＰＵ１７からスタートコマンドを受けたＣＰＵ−Ｉ／Ｆ２１が生成して出力する。ライトカウンタイネーブル信号Ｗ４は、データ転送のシーケンスを制御しているメモリＩ／Ｆ２３から入力される。
【００４０】
ライトアドレス生成部３０は、第１の加算器３１と、比較器３２と、第１のセレクタ３３と、第２のセレクタ３４と、アップダウンカウンタ３５とを備えている。
【００４１】
比較器３２は、ライト開始アドレスＷ１とリード開始アドレスＲ１とが入力されており、これらの大小比較を行なう。比較器３２は、リード開始アドレスＲ１がライト開始アドレスＷ１より小さいとき値「１」を、リード開始アドレスＲ１がライト開始アドレスＷ１より大きいとき値「０」となるフラグ信号Ｆを出力する。該フラグ信号Ｆは、「０」のとき、データ転送をアドレス昇順で行なうことを示し、「１」のとき、データ転送をアドレス降順で行なうことを示している。
【００４２】
第１の加算器３１は、ライト開始アドレスＷ１と転送ワード数Ｗ２とが入力され、これらを加算した値を出力する。
【００４３】
第１のセレクタ３３は、ライト開始アドレスＷ１と第１の加算器３１の出力とフラグ信号Ｆとが入力されており、フラグ信号Ｆが「０」のときライト開始アドレスＷ１を選択出力し、フラグ信号Ｆが「１」のとき第１の加算器３１の出力を選択出力する。第１のセレクタ３３の出力はカウント初期値Ｗ５としてアップダウンカウンタ３５に入力される。
【００４４】
第２のセレクタ３４は、ライト開始アドレスＷ１と第１の加算器３１の出力とフラグ信号Ｆとが入力されており、フラグ信号Ｆが「１」のときライト開始アドレスＷ１を選択出力し、フラグ信号Ｆが「０」のとき第１の加算器３１の出力を選択出力する。第２のセレクタ３４の出力はカウント終了値Ｗ６としてアップダウンカウンタ３５に入力される。
【００４５】
アップダウンカウンタ３５にはさらにフラグ信号Ｆとライトスタート信号Ｗ３とライトカウンタイネーブル信号Ｗ４とが入力されている。アップダウンカウンタ３５は、昇順を示す値「０」のフラグ信号Ｆが入力されているときはカウント初期値Ｗ５からカウント終了値Ｗ６まで昇順にカウントアップし、降順を示す値「１」のフラグ信号Ｆが入力されているときは、カウント初期値Ｗ５からカウント終了値Ｗ６まで降順にカウントダウンするカウンタである。アップダウンカウンタ３５は、ライトスタート信号Ｗ３が入力された時点でカウントを開始し、ライトカウンタイネーブル信号Ｗ４が入力される毎に、カウントアップもしくはカウントダウン動作を行なう。アップダウンカウンタ３５のカウント値は、ライトアドレスＥとしてメモリＩ／Ｆ２３へ出力される。
【００４６】
図４は、リードアドレス生成部４０の回路構成を示している。リードアドレス生成部４０には、ＣＰＵ−Ｉ／Ｆ２１からリード開始アドレスＲ１と、転送ワード数Ｗ２と、リードスタート信号Ｒ３とが入力される。リードスタート信号Ｒ３は、１パルスの信号であり、ＣＰＵ１７からスタートコマンドを受けたＣＰＵ−Ｉ／Ｆ２１が生成して出力する。リードカウンタイネーブル信号Ｒ４は、データ転送のシーケンスを制御しているメモリＩ／Ｆ２３から入力される。またライトアドレス生成部３０の比較器３２からフラグ信号Ｆが入力されている。
【００４７】
リードアドレス生成部４０は、第２の加算器４１と、第１の反転器４２と、第３のセレクタ４３と、アップカウンタ４４と、第２の反転器４５と、第４のセレクタ４６とを備えている。
【００４８】
第２の加算器４１は、リード開始アドレスＲ１と転送ワード数Ｗ２とが入力され、これらを加算した値を出力し、第１の反転器４２は、第２の加算器４１の出力の各ビットを反転させる回路である。第３のセレクタ４３は、リード開始アドレスＲ１と第１の反転器４２の出力とフラグ信号Ｆとが入力されており、フラグ信号Ｆが「０」のときリード開始アドレスＲ１を選択出力し、フラグ信号Ｆが「１」のとき第１の反転器４２の出力を選択出力する。第３のセレクタ４３の出力はカウント初期値Ｒ５としてアップカウンタ４４に入力される。
【００４９】
アップカウンタ４４にはさらにリードスタート信号Ｒ３とリードカウンタイネーブル信号Ｒ４とが入力されている。アップカウンタ４４はカウント初期値Ｒ５から順にカウントアップするカウンタであり、リードカウンタイネーブル信号Ｒ４が入力された時点でカウントを開始し、リードカウンタイネーブル信号Ｒ４が入力される毎にカウントアップ動作を行なう。
【００５０】
第２の反転器４５は、アップカウンタ４４の出力するカウント値Ｄ１が入力され、その各ビットを反転させた反転カウント値Ｄ２を出力する回路である。第４のセレクタ４６は、カウント値Ｄ１と反転カウント値Ｄ２とフラグ信号Ｆとが入力されており、フラグ信号Ｆが「０」のときカウント値Ｄ１を選択出力し、フラグ信号Ｆが「１」のとき反転カウント値Ｄ２を選択出力する。第４のセレクタ４６の出力はリードアドレスＤとしてメモリＩ／Ｆ２３へ出力される。
【００５１】
ライトアドレス生成部３０とリードアドレス生成部４０とは同期して動作する。すなわち、ライトアドレス生成部３０が出力するリードアドレスＤを用いて記憶手段１４からデータを読み出してメモリＩ／Ｆ２３の内部に一時保存し、次に、該一時保存したデータをライトアドレス生成部３０が出力するライトアドレスＥを用いて記憶手段１４に書き込む。この動作をライトアドレスＥがカウント終了値Ｗ６に一致するまで繰り返し行なうことで、指定された転送ワード数Ｗ２分のデータ転送が連続的に行なわれるようになっている。
【００５２】
次に、メモリ制御回路２０による昇順、降順でのデータ転送について説明する。
【００５３】
ライトアドレス生成部３０の比較器３２は、ＣＰＵ１７からＣＰＵ−Ｉ／Ｆ２１を介して入力されたライト開始アドレスＷ１とリード開始アドレスＲ１とを比較し、ライト開始アドレスＷ１＜リード開始アドレスＲ１のときは、フラグ信号Ｆとしてアドレス昇順を示す「０」を出力し、ライト開始アドレスＷ１＞リード開始アドレスＲ１のときは、アドレス降順を示すフラグ信号Ｆとして「１」を出力する。
【００５４】
フラグ信号Ｆが「０」のときは、図６（ｆ）の状態から図６（ｈ）の状態へ圧縮データＡ２を移動させる場合と同様に、データをアドレスの小さい方へ移動させるデータ転送になる。フラグ信号Ｆが「０」のとき、ライトアドレス生成部３０のアップダウンカウンタ３５に与えられるカウント初期値Ｗ５はライト開始アドレスＷ１になり、カウント終了値Ｗ６は（ライト開始アドレスＷ１＋転送ワード数Ｗ２）になり、アップダウンカウンタ３５はアップカウンタとして動作する。したがって、ライトアドレスＥは、転送先エリアの先頭から１ずつ順に増加するように発生される。
【００５５】
フラグ信号Ｆが「０」のとき、リードアドレス生成部４０にはカウント初期値Ｒ５としてリード開始アドレスＲ１が入力され、第４のセレクタ４６はアップカウンタ４４の出力するカウント値Ｄ１を選択出力する。その結果、リードアドレス生成部４０はリード開始アドレスＲ１から１ずつ順に昇順で増加するリードアドレスＤを出力する。
【００５６】
リードアドレス生成部４０とライトアドレス生成部３０とが先に説明したように同期して動作することにより、転送ワード数Ｗ２で指定されたサイズのデータ転送が昇順に行なわれる。つまり、図５（ａ）に示すように、転送元エリアＡ２のデータをアドレスの小さい方向へ移動させるときは、各データをその読み出し位置よりも小さいアドレスの格納位置に転送するという動作Ｐ１が、転送元エリアＡ２の先頭からアドレスを昇順（図中の矢印Ｐ２方向）に変化させて順に行なわれるので、上書きにより未転送のデータが破壊されることなく、連続的にデータ転送を行なうことができる。
【００５７】
一方、フラグ信号Ｆが「１」のときは、図６（ｆ）の状態から図６（ｇ）の状態へ圧縮データＡ２を移動させる場合と同様に、データをアドレスの大きい方へ移動させるデータ転送になる。フラグ信号Ｆが「１」のとき、ライトアドレス生成部３０のアップダウンカウンタ３５に与えられるカウント初期値Ｗ５は（ライト開始アドレスＷ１＋転送ワード数Ｗ２）になり、カウント終了値Ｗ６はライト開始アドレスＷ１になり、アップダウンカウンタ３５はダウンカウンタとして動作する。したがって、ライトアドレスＥは転送先エリアの終端から１ずつ順に減少するように発生される。
【００５８】
フラグ信号Ｆが「１」のとき、リードアドレス生成部４０には、カウント初期値Ｒ５として、リード開始アドレスＲ１に転送ワード数Ｗ２を加算した値の各ビットを反転させた値が入力され、第４のセレクタ４６はアップカウンタ４４の出力するカウント値の各ビットを反転させた反転カウント値Ｄ２を選択出力する。その結果、リードアドレス生成部４０はリード開始アドレスＲ１に転送ワード数Ｗ２を加えたアドレス（転送元エリアの終端）から１ずつ順に減少するように変化するリードアドレスＤを出力する。
【００５９】
リードアドレス生成部４０とライトアドレス生成部３０とが同期して動作することにより、転送ワード数Ｗ２で指定されたサイズのデータ転送が、転送元エリアの終端から降順で行なわれる。すなわち、図５（ｂ）に示すように、転送元エリアＡ２のデータをアドレスの大きい方向へ移動させるときは、各データをその読み出し位置よりも大きいアドレスの格納位置に転送する動作Ｑ１が、転送元エリアＡ２の終端からアドレスを降順（図中の矢印Ｑ２方向）に変化させて順に行なわれるので、上書きにより未転送のデータが破壊されることなく、連続的にデータ転送を行なうことができる。
【００６０】
このように、転送元エリアの先頭アドレスであるリード開始アドレスＲ１と、転送先エリアの先頭アドレスであるライト開始アドレスＷ１とを大小比較し、その比較結果に応じて転送エリアの先頭から昇順に転送するか、転送エリアの終端から降順に転送するかを切り換えるので、データ破壊を招くことなく転送元エリア全体を連続的に一括してデータ転送することができ、領域を細分化してデータ転送するような場合に比べて、高速なデータ転送が可能になり、断片化の解消動作による画像形成装置１０のパフォーマンス低下を防止することができる。
【００６１】
特に、単にリード開始アドレスＲ１とライト開始アドレスＷ１とを大小比較するだけの判定で済むので、転送元エリアと転送先エリアとの重複の有無を判定するなどの複雑な判断を必要とせず、メモリ制御回路２０を簡単な回路構成にすることができる。
【００６２】
以上、本発明の実施の形態を図面によって説明してきたが、具体的な構成は実施の形態に示したものに限られるものではなく、本発明の要旨を逸脱しない範囲における変更や追加があっても本発明に含まれる。
【００６３】
たとえば、ライトアドレス生成部３０においてはアップダウンカウンタ３５を使用したが、リードアドレス生成部４０のように反転器とセレクタとを使用し、アップカウンタまたはダウンカウンタの一方の機能のみを有するカウンタでカウントアップとカウントダウンを行なうように構成してもよい。また、リードアドレス生成部４０のカウンタにアップカウンタ４４を使用したが、ダウンカウンタを使用し、第３のセレクタ４３および第４のセレクタ４６においてフラグ信号Ｆが「０」の場合に反転器４２、４５側の出力を選択するように構成してもよい。
【００６４】
また、実施の形態では、リード開始アドレスＲ１とライト開始アドレスＷ１の大小比較や、昇順／降順での転送の決定をメモリ制御回路２０で行なうようにしたが、これらの処理をＣＰＵ１７で行ない、リード開始アドレスＲ１と、ライト開始アドレスＷ１と、転送ワード数Ｗ２と、転送が昇順か降順かを示す情報とをＣＰＵ１７からメモリ制御回路に引渡すように構成してもよい。さらに、ライトアドレス生成部３０およびリードアドレス生成部４０の機能全体をソフトウェア処理でＣＰＵ１７が行なうように構成してもよい。
【００６５】
また、実施の形態では両面印刷可能な画像形成装置１０を例に説明したが、メモリ内の連続したエリアにあるデータを他のエリアに移動させる機能を要する装置であれば、いかなる装置に本発明を適用してもよい。また、データの移動は、断片化を解消する目的に限定されない。
【図面の簡単な説明】
【００６６】
【図１】本発明の実施の形態に係わる画像形成装置の構成を示すブロック図である。
【図２】本発明の実施の形態に係わる画像形成装置が有するメモリ制御回路の構成を示すブロック図である。
【図３】メモリ制御回路に含まれるライトアドレス生成部の構成を示す回路図である。
【図４】メモリ制御回路に含まれるリードアドレス生成部の構成を示す回路図である。
【図５】メモリ制御回路による昇順／降順のデータ転送過程を示す説明図である。
【図６】両面印刷時に画像メモリの断片化が生じる過程を示す説明図である。
【図７】転送元エリア内に転送先エリアの先頭アドレスが存在する場合のデータ転送においてデータが上書きされて破壊される過程を示す説明図である。
【符号の説明】
【００６７】
Ｄ…リードアドレス
Ｄ１…カウント値
Ｄ２…反転カウント値
Ｅ…ライトアドレス
Ｆ…フラグ信号
Ｒ１…リード開始アドレス
Ｒ３…リードスタート信号
Ｒ４…リードカウンタイネーブル信号
Ｒ５…カウント初期値
Ｗ１…ライト開始アドレス
Ｗ２…転送ワード数
Ｗ３…ライトスタート信号
Ｗ４…ライトカウンタイネーブル信号
Ｗ５…カウント初期値
Ｗ６…カウント終了値
１０…画像形成装置
１１…スキャナ
１２…プリントコントローラ
１３…画像処理手段
１４…記憶手段
１５…圧縮／伸張手段
１６…画像出力手段
１７…ＣＰＵ
２０…メモリ制御回路
２１…ＣＰＵ−Ｉ／Ｆ
２２…アドレス生成部
２３…メモリＩ／Ｆ
３０…ライトアドレス生成部
３１…第１の加算器
３２…比較器
３３…第１のセレクタ
３４…第２のセレクタ
３５…アップダウンカウンタ
４０…リードアドレス生成部
４１…第２の加算器
４２…第１の反転器
４３…第３のセレクタ
４４…アップカウンタ
４５…第２の反転器
４６…第４のセレクタ
【図１】
2007164552.tif 000003
【図２】
2007164552.tif 000004
【図３】
2007164552.tif 000005
【図４】
2007164552.tif 000006
【図５】
2007164552.tif 000007
【図６】
2007164552.tif 000008
【図７】
2007164552.tif 000009