(57)【要約】【課題】ＣＰＵに大きな負担をかけることなく、メモリに記憶されたデータにエンディアン変換を行う。【解決手段】デジタル複合機１は、ＤＤＲ−ＳＤＲＡＭ１０４からＤＭＡ転送されてきたデータを一時的に保持するバッファであるＦＩＦＯメモリ１１２と、ＤＤＲ−ＳＤＲＡＭ１０４へＤＭＡ転送するデータを一時的に保持するバッファであるＦＩＦＯメモリ１１４とを備える。スワップ部１１８は、ＦＩＦＯメモリ１１２からレジスタへデータをロードし、レジスタからＦＩＦＯメモリ１１４へデータをストアする際にデータの配列を変更することにより、エンディアン変換を行う。【選択図】図１
2008152702.tif 000002
【特許請求の範囲】
【請求項１】
データを記憶するメモリと、
前記メモリを転送元または転送先とし、ホストＣＰＵを迂回してデータをＤＭＡ転送するＤＭＡコントローラと、
前記ＤＭＡコントローラにより第１チャネルを経由して前記メモリからＤＭＡ転送されてきたデータを保持する第１データ保持部と、
前記ＤＭＡコントローラにより第２チャネルを経由して前記メモリへＤＭＡ転送するデータを保持する第２データ保持部と、
前記第１データ保持部から入力されたデータにエンディアン変換を行って前記第２データ保持部へ出力するエンディアン変換部と、
を備えるデータ処理装置。
【請求項２】
前記第１データ保持部は、データの保持量が所定量以下となるのに同期して第１データリクエストを前記ＤＭＡコントローラへ出力し、前記第２データ保持部は、データの保持量が所定量以上となるのに同期して第２データリクエストを前記ＤＭＡコントローラへ出力する、請求項１に記載のデータ処理装置。
【請求項３】
前記第１データ保持部は、前記ホストＣＰＵから与えられたエンディアン変換命令に同期して前記第１データリクエストを前記ＤＭＡコントローラへ出力する、請求項２に記載のデータ処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリに記憶されたデータにエンディアン変換を行うデータ処理装置に関する。
【背景技術】
【０００２】
エンディアンとは、２バイト以上のデータをメモリに記憶させる際のデータの配列方式である。例えば、図４に示すように、「01234567h」という４バイトのデータをメモリに記憶させる際に、「01h」を１バイト目に記憶させ、「23h」を２バイト目に記憶させ、「45h」を３バイト目に記憶させ、「67h」を４バイト目に記憶させる場合、すなわち、上位バイトから下位バイトへとデータを配列する場合は、ビッグエンディアンと呼ばれる。逆に、図５に示すように、「67h」を１バイト目に記憶させ、「45h」を２バイト目に記憶させ、「23h」を３バイト目に記憶させ、「12h」を４バイト目に記憶させる場合、すなわち、下位バイトから上位バイトへとデータを配列する場合は、リトルエンディアンと呼ばれる。さらに、エンディアンを動的に切り替えることができる場合は、バイエンディアンと呼ばれる。
【０００３】
ここで、１つの装置の内部に異なるエンディアンを共存させる必要がある場合、例えば、ビッグエンディアンを採用しているＣＰＵを備えたコンピュータが組み込まれた装置に、リトルエンディアンを採用しているＵＳＢコントローラを設ける場合には、当該装置の内部でエンディアン変換を行う必要がある。
【０００４】
係るエンディアン変換を行うデータ処理装置としては、特許文献１や特許文献２のものが知られている。特許文献１のデータ処理装置は、データをメモリから読み出して再びメモリに書き込む際にアドレスを変更することによりエンディアン変換を行っている。また、特許文献２のデータ処理装置は、一のメモリから他のメモリへデータをＤＭＡ転送する際にアドレスを変更することによりエンディアン変換を行っている。
【０００５】
【特許文献１】特開平８−７７０６４号公報
【特許文献２】特開２００４−２８７４８１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかし、特許文献１や特許文献２のデータ処理装置では、エンディアン変換を行う際にＣＰＵに大きな負担をかけるという問題があった。本発明は、この問題を解決するためになされたもので、ＣＰＵに大きな負担をかけることなく、メモリに記憶されたデータにエンディアン変換を行うことを目的とする。
【課題を解決するための手段】
【０００７】
上記課題を解決するため、請求項１の発明は、データを記憶するメモリと、前記メモリを転送元または転送先とし、ホストＣＰＵを迂回してデータをＤＭＡ転送するＤＭＡコントローラと、前記ＤＭＡコントローラにより第１チャネルを経由して前記メモリからＤＭＡ転送されてきたデータを保持する第１データ保持部と、前記ＤＭＡコントローラにより第２チャネルを経由して前記メモリへＤＭＡ転送するデータを保持する第２データ保持部と、前記第１データ保持部から入力されたデータにエンディアン変換を行って前記第２データ保持部へ出力するエンディアン変換部とを備えるデータ処理装置である。
【０００８】
請求項２の発明は、前記第１データ保持部は、データの保持量が所定量以下となるのに同期して第１データリクエストを前記ＤＭＡコントローラへ出力し、前記第２データ保持部は、データの保持量が所定量以上となるのに同期して第２データリクエストを前記ＤＭＡコントローラへ出力する、請求項１に記載のデータ処理装置である。
【０００９】
請求項３の発明は、前記第１データ保持部は、前記ホストＣＰＵから与えられたエンディアン変換命令に同期して前記第１データリクエストを前記ＤＭＡコントローラへ出力する、請求項２に記載のデータ処理装置である。
【発明の効果】
【００１０】
本発明によれば、ＣＰＵに大きな負担をかけることなく、メモリに記憶されたデータにエンディアン変換を行うことができる。
【００１１】
請求項２の発明によれば、エンディアン変換を自律的に継続することができる。
【００１２】
請求項３の発明によれば、エンディアン変換を開始する際以外はＣＰＵに負担をかけることがない。
【発明を実施するための最良の形態】
【００１３】
図１は、本発明の望ましい実施形態に係るデジタル複合機１の主要部のブロック図である。デジタル複合機１は、ＭＦＰ（Multi Function Peripherals）とも呼称され、ファクシミリ機能、コピー機能、スキャン機能およびプリント機能等を有している。
【００１４】
図１に示すように、デジタル複合機１は、デジタル複合機１を統括制御するホストであるＣＰＵ（Central Processing Unit）１０２と、データを記憶するメモリであるＤＤＲ−ＳＤＲＡＭ（Double Data Rate Synchronous Dynamic Random Access Memory）１０４と、ＤＤＲ−ＳＤＲＡＭ１０４とデバイス（スキャナ１０８、プリンタ１１０、ＦＩＦＯメモリ１１２、ＦＩＦＯメモリ１１４、ＵＳＢコントローラ１１６）との間でデータを転送するＤＭＡ（Direct Memory Access）コントローラ１０６とを備える。ＤＤＲ−ＳＤＲＡＭ１０４とＤＭＡコントローラ１０６とは、アドレスバス１５２およびデータバス１５４を介して接続されている。また、ＤＭＡコントローラ１０６には、ＤＭＡチャネル１５４，１５６，１５８，１６０，１６２を介して、原稿を読み取って画像データを生成するスキャナ１０８、画像データに係る画像を記録媒体上に形成するプリンタ１１０、ＤＤＲ−ＳＤＲＡＭ１０４からＤＭＡ転送されてきたデータを一時的に保持するバッファであるＦＩＦＯメモリ（First In First Out memory）１１２、ＤＤＲ−ＳＤＲＡＭ１０４へＤＭＡ転送するデータを一時的に保持するバッファであるＦＩＦＯメモリ１１４、接続されたＵＳＢ（Universal Serial Bus）機器を制御するＵＳＢコントローラ１１６が接続される。さらに、デジタル複合機１は、ＦＩＦＯメモリ１１２から入力されたデータにスワップ処理を行ってＦＩＦＯメモリ１１４へ出力するスワップ部１１８を備える。
【００１５】
ＣＰＵ１０２は、ＤＤＲ−ＳＤＲＡＭ１０４からＵＳＢコントローラ１１６に接続されたＵＳＢ機器へデータをＤＭＡ転送するのに先立って、エンディアン変換の開始のトリガーとなるエンディアン変換命令として、変換イネーブル信号をＦＩＦＯメモリ１１２に与える。
【００１６】
ＤＤＲ−ＳＤＲＡＭ１０４の画像データ領域１０４２には、スキャナ１０８から転送されてきた画像データやプリンタ１１０へ転送する画像データが、ＣＰＵ１０２が採用しているビッグエンディアンで記憶される。また、ＤＤＲ−ＳＤＲＡＭ１０４のＵＳＢ転送用データ領域１０４４には、ＵＳＢコントローラ１１６に接続されたＵＳＢ機器へ転送されるデータが、ＵＳＢコントローラ１１６が採用しているリトルエンディアンで記憶される。ＵＳＢ転送領域１０４４は、少なくとも１フレームまたは１マイクロフレームで転送することができるデータを記憶することができる容量（例えば、ＵＳＢ２．０規格においてバルク転送を行う場合は５１２バイトのデータを記憶することができる容量）を有している。
【００１７】
ＤＭＡコントローラ１０６は、デバイスが出力したデータリクエストに応答して、ＤＤＲ−ＳＤＲＡＭ１０４を転送元、データリクエストを出力したデバイスを転送先として、当該デバイスが接続されたＤＭＡチャネルを経由してデータをＤＭＡ転送する。または、ＤＭＡコントローラ１０６は、デバイスが出力したデータリクエストに応答して、データリクエストを出力したデバイスを転送元、ＤＤＲ−ＳＤＲＡＭ１０４を転送先として、当該デバイスが接続されたＤＭＡチャネルを経由してデータをＤＭＡ転送する。ＤＭＡコントローラ１０６は、ＣＰＵ１０２を迂回してデータをＤＭＡ転送することができる。
【００１８】
ＦＩＦＯメモリ１１２は、書き込んだ順番でのみデータの読み出しが可能なメモリであり、データを保持するメモリアレイ１１２２と、メモリアレイ１１２２へのアクセスを管理するＦＩＦＯ管理部１１２４とを備える。ＦＩＦＯ管理部１１２４は、データの入力に同期してライトポインタを移動させ、データに出力に同期してリードポインタを移動させることにより、ＦＩＦＯメモリ１１２の先入れ先出し動作を実現する。また、ＦＩＦＯ管理部１１２４は、メモリアレイ１１２２におけるデータの保持量が所定量以下となったことを示すフラグを立て、これに同期してデータリクエストをＤＭＡコントローラ１０６へ出力する。換言すれば、ＦＩＦＯ管理部１１２４は、メモリアレイ１１２２におけるデータの保持量が所定量以下となり、１回のＤＭＡ転送で転送されるデータ（以下、「転送単位データ」という）を保持することができる空容量をメモリアレイ１１２２に確保すると、データリクエストをＤＭＡコントローラ１０６へ出力する。さらに、ＦＩＦＯ管理部１１２４は、ＣＰＵ１０２から与えられた変換イネーブル信号に同期して、データリクエストをＤＭＡコントローラ１０６へ出力する。
【００１９】
ＦＩＦＯメモリ１１４も、ＦＩＦＯメモリ１１２と同様に、書き込んだ順番でのみデータの読み出しが可能なメモリであり、データを保持するメモリアレイ１１４２と、メモリアレイ１１４２へのアクセスを管理するＦＩＦＯ管理部１１４４とを備える。ＦＩＦＯ管理部１１４４も、ＦＩＦＯ管理部１１２４と同様に、データの入力に同期してライトポインタを移動させ、データに出力に同期してリードポインタを移動させることにより、ＦＩＦＯメモリ１１４の先入れ先出し動作を実現する。また、ＦＩＦＯ管理部１１４４は、メモリアレイ１１４２におけるデータの保持量が所定量以上となったことを示すフラグを立て、これに同期してデータリクエストをＤＭＡコントローラ１０６へ出力する。換言すれば、ＦＩＦＯ管理部１１４４は、メモリアレイ１１４２におけるデータの保持量が所定量以上となり、転送単位データを確保すると、データリクエストをＤＭＡコントローラ１０６へ出力する。
【００２０】
スワップ部１１８は、ＦＩＦＯメモリ１１２からレジスタへデータをロードし、レジスタからＦＩＦＯメモリ１１４へデータをストアする際にデータの配列を変更することにより、エンディアン変換を行う。係るデータ配列の変更は、例えば、ＦＩＦＯメモリ１１２と当該レジスタとを接続するバスと、ＦＩＦＯメモリ１１４と当該レジスタとを接続するバスとで結線を反転することにより行うことができる。もちろん、これ以外の方法によるエンディアン変換を行うことも差し支えない。
【００２１】
デジタル複合機１は、画像データ領域１０４２から読み出した画像データにエンディアン変換を行い、エンディアン変換を行った画像データをＵＳＢ転送用データ領域１０４４に書き込むデータ処理装置の機能を有している。
【００２２】
図２は、デジタル複合機１でエンディアン変換を行う際の手順を示すフローチャートである。図２に示すように、エンディアン変換に当たっては、最初に、ＣＰＵ１０２がＦＩＦＯメモリ１１２に変換イネーブル信号を与える（ステップＳ１０１）。続いて、転送単位データのエンディアン変換が繰り返し行われ（ステップＳ１０２）、全データのエンディアン変換が完了すると、処理が終了する（ステップＳ１０３で"YES"）。
【００２３】
図３は、転送単位データのエンディアン変換（図２のステップＳ１０２）を行う際の手順を示すフローチャートである。図３に示すように、転送単位データのエンディアン変換に当たっては、最初に、ＦＩＦＯメモリ１１２が、ＤＭＡコントローラ１０６へデータリクエストを出力し（ステップＳ１１１）、ＤＭＡコントローラ１０６が、画像データ領域１０４２から読み出した転送単位データをＦＩＦＯメモリ１１２へＤＭＡ転送する（ステップＳ１１２）。続いて、スワップ部１１８が、ＦＩＦＯメモリ１１２から入力された転送単位データにスワップ処理を行ってＦＩＦＯメモリ１１４へ出力する（ステップＳ１１３）。さらに続いて、ＦＩＦＯメモリ１１４がＤＭＡコントローラ１０６へデータリクエストを出力し（ステップＳ１１４）、ＤＭＡコントローラ１０６が、ＵＳＢ転送用データ領域１０４４へ書き込む転送単位データをＦＩＦＯメモリ１１４から転送する（ステップ１１５）。
【００２４】
デジタル複合機１では、ＦＩＦＯメモリ１１２からのデータリクエストの出力は、１回目については、ＣＰＵ１０２から変換イネーブル信号が与えられるのに同期して行われるが、２回目以降については、転送単位データを保持することができる空容量をメモリアレイ１１２２に確保するのに同期して行われ、ＦＩＦＯメモリ１１４からのデータリクエストの出力は、転送単位データをメモリアレイ１１４２に確保するのに同期して行われるので、エンディアン変換を開始する際以外はＣＰＵ１０２に負担をかけることなく、エンディアン変換を自律的に継続することができる。また、デジタル複合機１では、転送単位データを保持することができる空容量をメモリアレイ１１２２に確保することができれば、前回のＤＭＡ転送で転送された転送単位データのスワップ処理が完了しているか否かにかかわらず、ＤＤＲ−ＳＤＲＡＭ１０４からＦＩＦＯメモリ１１２へ新たな転送単位データをＤＭＡ転送することができるので、エンディアン変換を効率的に行うことができる。
【００２５】
なお、転送単位データのサイズと１回のスワップ処理でエンディアン変換されるデータのサイズとを同じにすることは必須ではない。また、ＦＩＦＯメモリ１１２，１１４の記憶容量を大きくすれば、バースト転送によりＤＭＡ転送の効率を向上することもできる。
【００２６】
上述の説明では、画像データにエンディアン変換を行う場合について説明したが、画像データ以外のデータにエンディアン変換を行ってもよい。また、上述の説明では、デジタル複合機１におけるエンディアン変換に本発明を適用した例を示したが、デジタル複合機１以外の機器におけるエンディアン変換にも本発明を適用することができる。
【図面の簡単な説明】
【００２７】
【図１】本発明の望ましい実施形態に係るデジタル複合機の主要部のブロック図である。
【図２】エンディアン変換を行う際の手順を示すフローチャートである。
【図３】転送単位データのエンディアン変換を行う際の手順を示すフローチャートである。
【図４】ビッグエンディアンについて説明する図である。
【図５】リトルエンディアンについて説明する図である。
【符号の説明】
【００２８】
１  デジタル複合機
１０２  ＣＰＵ
１０４  ＤＤＲ−ＳＤＲＡＭ
１０６  ＤＭＡコントローラ
１１２，１１４  ＦＩＦＯメモリ
１１８  スワップ部
【図１】
2008152702.tif 000003
【図２】
2008152702.tif 000004
【図３】
2008152702.tif 000005
【図４】
2008152702.tif 000006
【図５】
2008152702.tif 000007