(57)【要約】【課題】  メモリアクセスのタイミングを制御することで、メモリアクセスにおけるオーバヘッドを軽減してデータ転送の高速化を行うメモリコントローラおよび高速データ転送方法を提供する。【解決手段】  ＣＰＵ１０１からのデータを転送するシステムバスＢ０１のバス幅とＳＤＲＡＭ１０５をコントロールＬＳＩ１０４に接続するメモリバスＢ０５のバス幅の違いを吸収する一時保管回路であるＦＩＦＯ部１１０を設け、タイミング制御部１１３からコマンド制御部１１４へのＣＰＵスタート信号に基づいてＦＩＦＯ部１１０に格納されたデータをバースト転送する。【選択図】図１
2006195810.tif 000002
【特許請求の範囲】
【請求項１】
外部素子との接続を実現するシステムバスのバス幅とバースト転送が可能なメモリとの接続を実現するメモリバスのバス幅が異なるメモリコントローラにおいて、
前記システムバスを介してデータを受信し、受信したデータを一時的に格納する一時格納手段と、
前記一時格納手段による前記データの格納タイミングに基づき、前記メモリへの書込みタイミングを制御するタイミング制御手段と、
前記タイミング制御手段により制御されたメモリへのアクセスタイミングでデータを前記メモリへバースト転送する第１のデータ転送手段と
を具備することを特徴とするメモリコントローラ。
【請求項２】
前記一時格納手段は、
前記受信したデータを先入れ先出しによって格納するＦＩＦＯ格納手段を具備し、
前記第１のデータ転送手段は、
前記ＦＩＦＯ格納手段により格納された順にデータを転送する
ことを特徴とする請求項１記載のメモリコントローラ。
【請求項３】
前記タイミング制御手段は、
前記メモリへ送出するデータの書込みを可能とするアクティブコマンドからデータの書込みを行うライトコマンドまでの時間を算出する時間算出手段
を具備し、
前記第１のデータ転送手段は、
前記時間算出手段により算出された時間に基づいてデータ転送を行う
ことを特徴とする請求項１記載のメモリコントローラ。
【請求項４】
バス幅の異なる複数の外部バスによって外部素子が接続され、該外部バスのバス幅がバースト転送可能なメモリを接続するメモリバスのバス幅と少なくとも１つ同じであるメモリコントローラにおいて、
前記メモリバスとの通信を実現する前記外部バスを特定する外部バス特定手段と、
前記外部バス特定手段により特定された前記外部バスのバス幅が前記メモリバスのバス幅と等しいか判断する判断手段と、
前記判断手段により異なると判断されたバス幅を持つ前記外部バスからのデータを前記一時的に格納し、前記判断手段により等しいと判断されたバス幅を持つ前記外部バスからのデータを前記メモリにバースト転送する第２のデータ転送手段と、
前記データ転送手段により一時的に格納されたデータのバースト転送タイミングを最適化する転送タイミング制御手段
を具備することを特徴とするメモリコントローラ。
【請求項５】
前記転送タイミング制御手段は、
前記一時的に格納されたデータの転送開始を示すスタート信号を前記判断手段により等しいバス幅を持つ外部素子からのデータ転送の完了を示すプレチャージコマンド直後に発信する
ことを特徴とする請求項４記載のメモリコントローラ。
【請求項６】
外部素子との接続を実現するシステムバスのバス幅とバースト転送が可能なメモリとの接続を実現するメモリバスのバス幅が異なるメモリコントローラにおける高速データ転送方法において、
前記システムバスを介してデータを受信し、受信したデータを一時格納手段で一時的に格納し、
前記一時格納手段による前記データの格納タイミングに基づき、前記メモリへの書込みタイミングをタイミング制御手段で制御し、
前記タイミング制御手段により制御されたメモリへのアクセスタイミングでデータを前記メモリへバースト転送する
ことを特徴とするメモリコントローラにおける高速データ転送方法。
【請求項７】
バス幅の異なる複数の外部バスによって外部素子が接続され、該外部バスのバス幅がバースト転送可能なメモリを接続するメモリバスのバス幅と少なくとも１つ同じであるメモリコントローラにおける高速データ転送において、
前記メモリバスとの通信を実現する前記外部バスを外部バス特定手段で特定し、
前記外部バス特定手段により特定された前記外部バスのバス幅が前記メモリバスのバス幅と等しいか判断手段で判断し、
前記判断手段により異なると判断されたバス幅を持つ前記外部バスからのデータを前記一時的に格納し、前記判断手段により等しいと判断されたバス幅を持つ前記外部バスからのデータを第２のデータ転送手段で前記メモリにバースト転送し、
前記データ転送手段により一時的に格納されたデータのバースト転送タイミングを最適化する
ことを特徴とするメモリコントローラにおける高速データ転送。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、高速データ転送を実現するメモリコントローラおよび高速データ転送方法に関し、特に、バースト転送が可能なメモリへのアクセスにかかるオーバヘッドを軽減してデータ転送の高速化を行うメモリコントローラおよび高速データ転送方法に関する。
【背景技術】
【０００２】
近年、パーソナルコンピュータの処理性能や記憶領域が飛躍的に向上しているため、本来、周辺機器で行う処理をパーソナルコンピュータ上で行うような構成が可能となっている。そのため、周辺装置に搭載するＣＰＵ（Central Processing Unit：中央演算装置）の処理能力を低くすることができ、これによって、周辺機器の低コストを実現することができる。
【０００３】
しかしながら、接続された周辺機器に大容量のデータを送信した場合には周辺機器におけるＣＰＵの処理能力を超えてしまい、機能停止や不安定な状態に陥ってしまう可能性が高くなる。また、周辺機器によっては入出力データを一括して送信しなければならないものがあり、通信におけるバス幅を同等以上にする必要がある。
【０００４】
この問題に対応した従来技術として特許文献１に開示されたものがある。この特許文献１に開示された従来技術では、ＣＰＵにおるデータの書込み又は読み出しサイクル別にデータの一部をＩ／Ｏバッファに一時保存しておき、この保存データと残りのデータを一括してＩ／Ｏデバイスに書込み又は読み出すことにより、ＣＰＵのデータバス幅がＩ／Ｏデバイスのレジスタ幅よりも小さい場合にもＩ／Ｏデバイスを１回アクセスすることでデータを転送できるようにしている。
【特許文献１】特開２０００−１３２５０１
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１に示された従来技術においては、ＣＰＵのデータバス幅がＩ／Ｏデバイスのレジスタ幅よりも小さい場合により高速にデータを転送できるようにした技術ではあるが、データ転送における過程の中でＣＰＵで処理するデータをＩ／Ｏバッファに一時的に保存するためデータの入出力にかかる時間が必要となり、オーバーヘッド時間を軽減できていないという問題がある。
【０００６】
そこで、本発明は、メモリアクセスのタイミングを制御することで、メモリアクセスにおけるオーバヘッドを軽減してデータ転送の高速化を行うメモリコントローラおよび高速データ転送方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記目的を達成するため、請求項１の発明は、外部素子との接続を実現するシステムバスのバス幅とバースト転送が可能なメモリとの接続を実現するメモリバスのバス幅が異なるメモリコントローラにおいて、前記システムバスを介してデータを受信し、受信したデータを一時的に格納する一時格納手段と、前記一時格納手段による前記データの格納タイミングに基づき、前記メモリへの書込みタイミングを制御するタイミング制御手段と、前記タイミング制御手段により制御されたメモリへのアクセスタイミングでデータを前記メモリへバースト転送する第１のデータ転送手段とを具備することを特徴とする。
【０００８】
また、請求項２の発明は、請求項１の発明において、前記一時格納手段は、前記受信したデータを先入れ先出しによって格納するＦＩＦＯ格納手段を具備し、前記第１のデータ転送手段は、前記ＦＩＦＯ格納手段により格納された順にデータを転送することを特徴とする。
【０００９】
また、請求項３の発明は、請求項１の発明において、前記タイミング制御手段は、前記メモリへ送出するデータの書込みを可能とするアクティブコマンドからデータの書込みを行うライトコマンドまでの時間を算出する時間算出手段を具備し、前記第１のデータ転送手段は、前記時間算出手段により算出された時間に基づいてデータ転送を行うことを特徴とする。
【００１０】
また、請求項４の発明は、バス幅の異なる複数の外部バスによって外部素子が接続され、該外部バスのバス幅がバースト転送可能なメモリを接続するメモリバスのバス幅と少なくとも１つ同じであるメモリコントローラにおいて、前記メモリバスとの通信を実現する前記外部バスを特定する外部バス特定手段と、前記外部バス特定手段により特定された前記外部バスのバス幅が前記メモリバスのバス幅と等しいか判断する判断手段と、前記判断手段により異なると判断されたバス幅を持つ前記外部バスからのデータを前記一時的に格納し、前記判断手段により等しいと判断されたバス幅を持つ前記外部バスからのデータを前記メモリにバースト転送する第２のデータ転送手段と、前記データ転送手段により一時的に格納されたデータのバースト転送タイミングを最適化する転送タイミング制御手段を具備することを特徴とする。
【００１１】
また、請求項５の発明は、請求項４の発明において、前記転送タイミング制御手段は、前記一時的に格納されたデータの転送開始を示すスタート信号を前記判断手段により等しいバス幅を持つ外部素子からのデータ転送の完了を示すプレチャージコマンド直後に発信することを特徴とする。
【００１２】
また、請求項６の発明は、外部素子との接続を実現するシステムバスのバス幅とバースト転送が可能なメモリとの接続を実現するメモリバスのバス幅が異なるメモリコントローラにおける高速データ転送方法において、前記システムバスを介してデータを受信し、受信したデータを一時格納手段で一時的に格納し、前記一時格納手段による前記データの格納タイミングに基づき、前記メモリへの書込みタイミングをタイミング制御手段で制御し、前記タイミング制御手段により制御されたメモリへのアクセスタイミングでデータを前記メモリへバースト転送することを特徴とする。
【００１３】
また、請求項７の発明は、バス幅の異なる複数の外部バスによって外部素子が接続され、該外部バスのバス幅がバースト転送可能なメモリを接続するメモリバスのバス幅と少なくとも１つ同じであるメモリコントローラにおける高速データ転送において、前記メモリバスとの通信を実現する前記外部バスを外部バス特定手段で特定し、前記外部バス特定手段により特定された前記外部バスのバス幅が前記メモリバスのバス幅と等しいか判断手段で判断し、前記判断手段により異なると判断されたバス幅を持つ前記外部バスからのデータを前記一時的に格納し、前記判断手段により等しいと判断されたバス幅を持つ前記外部バスからのデータを第２のデータ転送手段で前記メモリにバースト転送し、前記データ転送手段により一時的に格納されたデータのバースト転送タイミングを最適化することを特徴とする。
【発明の効果】
【００１４】
本発明によれば、ＣＰＵなどの外部素子からメモリへのデータ格納のタイミングを制御することによりデータの書き込みを指示するＣＰＵスタート信号の発信タイミングを制御するように構成したので、メモリアクセスにかかるオーバヘッドを最小限に抑制することができ、高速データ転送が可能になるという効果を奏する。
【発明を実施するための最良の形態】
【００１５】
以下、本発明に係わるメモリコントローラおよび高速データ転送方法の一実施例を添付図面を参照して詳細に説明する。
【００１６】
なお、本願発明のメモリコントローラをプリンタに搭載した実施例を以下に示す。
【実施例】
【００１７】
図１は、この発明に係わるメモリコントローラおよび高速データ転送方法を適用して構成した機器のシステム構成図である。
【００１８】
図１には、メモリコントローラの周辺構成として、ＣＰＵ（Central Processing Unit：中央演算装置）１０１、ＵＳＢ（Universal Serial Bus：シリアル通信バス）インターフェース１０２、プリンタエンジン１０３、プリンタコントロールＬＳＩ（Large Scale Integration：大規模集積回路）１０４、ＳＤＲＡＭ（Synchronous Dynamic Random Access Memory：高速メモリ）１０５を含んだ構成を示している。
【００１９】
ＣＰＵ１０１、ＵＳＢインターフェース１０２、プリンタエンジン１０３、ＳＤＲＡＭ１０５は、プリンタコントロールＬＳＩ１０４に接続された構成をしており、ＣＰＵ１０１とＳＤＲＡＭ１０５はプリンタコントロールＬＳＩ１０４とそれぞれシステムバス、メモリバスによって接続されている。また、ＵＳＢインターフェース１０２とプリンタエンジン１０３は、外部バスによって接続されている。
【００２０】
このときのシステムバスは、データの格納位置を示すアドレスと転送するデータ自身とで時分割で共用しており、そのバス幅は３２ｂｉｔとする。さらに、１回のアドレス指定で複数のデータをまとめて連続的に転送するバースト転送時のバースト長は、８バーストとする。
【００２１】
ＣＰＵ１０１は、プリンタにおける主制御を行う。
【００２２】
ＵＳＢインターフェース１０２は、ＵＳＢ規格により接続された外部装置との通信を実現する。
【００２３】
プリンタエンジン１０３は、印刷出力を行う印刷出力部などの駆動部を示し、ＣＰＵ１０１により印刷制御された印刷データの印刷出力を実現する。
【００２４】
プリンタコントロールＬＳＩ１０４は、ＣＰＵ制御部１０６、ＵＳＢ制御部１０７、画像処理制御部１０８、メモリコントローラ１０９を具備して構成される。
【００２５】
ＣＰＵ制御部１０６は、ＣＰＵ１０１により制御された信号に基づいてプリンタコントロールＬＳＩ１０４内のアクセス制御を行う。
【００２６】
例えば、ＣＰＵによって指定されたＳＤＲＡＭ１０５のアドレスをデコードするデコード時間やＳＤＲＡＭ１０５へのアクセスタイミングを考慮してアクセス開始するなどの制御を行う。
【００２７】
ＵＳＢ制御部１０７は、ＵＳＢインターフェース１０２とのデータの送受信を行い、ＣＰＵ１０１を介さずにＵＳＢインターフェース１０２に接続された外部装置とメモリとの間でデータをやりとりするＤＭＡ（Direct Memory Access：ダイレクトメモリ転送）によって書き込むことができる。
【００２８】
画像処理制御部１０８は、ＳＤＲＡＭ１０５に格納された印刷データの画像処理を行い、該印刷データをプリンタエンジン１０３に対して上記ＤＭＡによって転送する。
【００２９】
メモリコントローラ１０９は、ＣＰＵ制御部１０６によりアクセス制御されたデータやＵＳＢ制御部１０７により制御された外部装置からのデータ、そして印刷出力を行うために画像処理制御部１０８に転送するデータなどをメモリに記憶したり、メモリから取り出したりするなどＳＤＲＡＭ１０５に記憶されたデータの制御を行う。
【００３０】
例えば、印刷要求を受け付けて画像処理制御部１０８が直接、ＳＤＲＡＭ１０５に記憶された印刷データをメモリコントローラ１０９を介して取得し、プリンタエンジン１０３に出力する。データをＳＤＲＡＭ１０５に記憶したり取得したりするなどの制御を行う。
【００３１】
メモリコントローラ１０９は、ＦＩＦＯ（First-In First-Out：先入れ先出し法）部１１０、アドレスデコード部１１１、セレクタ１１２、タイミング制御部１１３、コマンド制御部１１４を具備して構成されている。
【００３２】
ＦＩＦＯ部１１０は、入力元と出力先のバス幅の違いによるデータ転送レートの違いを吸収し、これらの接続を実現するためのデータの一時的な保管回路である。出力先のバス幅に合わせたデータ量を入力元から入力された順序にしたがって処理する。
【００３３】
アドレスデコード部１１１は、バスマスタであるＣＰＵ制御部１０６、ＵＳＢ制御部１０７、画像処理制御部１０８からのアドレスを抜き出し、抜き出したアドレスをデコードする。このとき各バスマスタからのスタート信号をトリガにしてデコードを開始し、ＳＤＲＡＭ１０５へのＣＳ（Chip Select：チップセレクト）信号の選択を行う。
【００３４】
セレクタ１１２は、アクセス中のバスマスタの種類を検出することにより、そのバスマスタとのバス幅によってＦＩＦＯ部１１０と送受信を行うか直接送受信を行うかを選択する。
【００３５】
タイミング制御部１１３は、各バスマスタ（ＣＰＵ制御部１０６、ＵＳＢ制御部１０７、画像処理制御部１０８）からのアクセス状況を把握し、起動信号であるスタート信号を出力する。例えば、ＣＰＵ制御部１０６からのアクセス時には「ＣＰＵスタート信号」を出力し、ＵＳＢ制御部１０７からのアクセス時には「ＵＳＢスタート信号」を出力し、画像処理制御部１０８からのアクセス時には「画像処理スタート信号」を出力する。
【００３６】
すなわち、ＦＩＦＯ部１１０とＳＤＲＡＭ１０５のアクセスタイミングを考慮し、メモリアクセスのスタートタイミングを制御することができる。
【００３７】
コマンド制御部１１４は、タイミング制御部１１３からのＣＰＵスタート信号、ＵＳＢスタート信号、画像処理スタート信号を受け付け、信号の種類に応じたメモリコマンドを生成し、ＳＤＲＡＭ１０５に対して送出する。
【００３８】
これによりメモリコントローラ１０９は、各バスマスタからのメモリアクセスを制御することができる。
【００３９】
ＳＤＲＡＭ１０５は、画像処理が行われる印刷データを記憶しておく。タイミング制御部１１３から送出されてくるいずれかのスタート信号に基づいてコマンド制御部１１４で生成したメモリコマンドに基づくアドレスのデータを取り出し可能とする。
【００４０】
このような構成によると、メモリアクセスにおけるアクセスタイミングを統一することができ、オーバヘッドを軽減することができる。
【００４１】
図２は、本発明に係わるメモリコントローラおよび高速データ転送方法を適用したタイミングチャートを示す図である。
【００４２】
図２において、システムクロック（SYSCLK）としてＴ１〜Ｔ１９まで刻まれており、クロック単位でデータ通信が行われる。図１に示す３２ビットのバス幅を持つシステムバスＢ０１、同じく３２ビットのバス幅を持つＣＰＵメモリデータバスＢ０２、ＦＩＦＯ部１００のそれぞれにおけるタイミングチャートが示されており、ＦＩＦＯ部１１０に格納されたデータはＣＰＵスタート信号を受信したタイミングでＦＩＦＯ部１１０からＳＤＲＡＭ１０５に対して書込みが可能となる。このときのＦＩＦＯ部１１０はシステムバスＢ０１のバス幅（３２ビット）とメモリバスＢ０５のバス幅（６４ビット）の違いを吸収するために設けられており、ＦＩＦＯ部１１０に全てのデータがそろうタイミングでＳＤＲＡＭ１０５にデータの書込みを終了するようにＣＰＵスタート信号を送信する。
【００４３】
図２に示すようにシステムクロックＴ１のタイミングでシステムバスＢ０１上をヘッダー（Ａcpu）が送られ、Ｔ２〜Ｔ９のタイミングにそれぞれＤ１〜Ｄ８のデータがバースト転送される。続いて、ＣＰＵメモリデータバスＢ０２にはＴ２のタイミングでヘッダー（Ａcpu）が送られ、Ｔ３〜Ｔ１０のタイミングにそれぞれＤ１〜Ｄ８のデータが同様にバースト転送される。
【００４４】
このとき、ＦＩＦＯ部の１つ目の格納領域（ＦＩＦＯ１）には、Ｔ５〜Ｔ１２の間、Ｄ１、Ｄ２のデータが格納された状態になり、また、２つ目の格納領域（ＦＩＦＯ２）には、Ｔ７〜Ｔ１２の間、Ｄ３、Ｄ４のデータが格納された状態になる。また、同様に、３つ目の格納領域（ＦＩＦＯ３）には、Ｔ９〜Ｔ１２の間、Ｄ５、Ｄ６のデータが格納された状態になり、４つ目の格納領域（ＦＩＦＯ４）には、Ｔ１１とＴ１２の間、Ｄ７、Ｄ８のデータが格納された状態になる。
【００４５】
これらシステムバスＢ０１、ＣＰＵメモリデータバスＢ０２、ＦＩＦＯ部１１０でのタイミングチャートに基づいてそれぞれのシステムに応じたＣＰＵスタート信号を送信するタイミングを示す。
【００４６】
まず、図２の２０１に示したＦＩＦＯ部１１０にそろうタイミングを計算し、ＣＰＵスタート信号を送信するシステムでは、ＦＩＦＯ部１１０に全てのデータが格納されるタイミングを計算する。図に示す例では、Ｔ１２のタイミングに全てのデータがＦＩＦＯ部１１０に格納される。
【００４７】
すなわち、メモリバスＢ０５のバス幅（６４ビット）とシステムバスＢ０１のバス幅（３２ビット）乃至ＣＰＵメモリデータバスＢ０２のバス幅（３２ビット）とを考慮してＴ１２のタイミングで全てのデータ（Ｄ１〜Ｄ８）がＳＤＲＡＭ１０５に書き込まれるようにタイミング制御を行う。この場合、システムバスＢ０１乃至ＣＰＵメモリデータバスＢ０２のバス幅が３２ビットであるのに対して、メモリバスＢ０５のバス幅が６４ビットであるため、メモリバスＢ０５では、システムバスＢ０１乃至ＣＰＵメモリデータバスＢ０２でデータを送るのに要した半分の時間でデータを送ることができる。図２に示す例では、３２ビット幅のシステムバスＢ０１、ＣＰＵメモリデータバスＢ０２でＤ１〜Ｄ８の８つの３２ビットを１ワードとしたデータを送るのに要した時間がＴ２〜Ｔ９の８クロックであるのに対して、６４ビット幅のメモリバスＢ０５では半分の４クロックで送ることができる。
【００４８】
これらのことから、Ｔ１２のタイミングでＤ１〜Ｄ８の８つの３２ビットを１ワードとしたデータを書き込むには、４クロック前のＴ９のタイミングで送信を開始すればよいことがわかる。
【００４９】
データをＳＤＲＡＭ１０５への書込み開始を示すメモリコマンドのＷＲコマンドは、データを送るクロックタイミングで送信すればよいため、データの送信開始タイミングであるＴ９のタイミングに送る。さらにＳＤＲＡＭ１０５への書込みを可能とするＡＣＴコマンドは、ＷＲコマンドの２クロック前に送信するためＴ７のタイミングで送信する。またさらに、Ｔ７のタイミングでＡＣＴコマンドを発行するにはその直前のクロックであるＴ６のタイミングでＣＰＵスタート信号を送信すればよい。
【００５０】
以上のことからＣＰＵスタート信号をＴ６のタイミングで送信することによってＦＩＦＯ部１１０に送られてくるタイミングとメモリバスＢ０５でＳＤＲＡＭ１０５に書き込まれるタイミングとが一致し、メモリへのデータ書込みにおけるオーバヘッドを最小限に軽減することができる。
【００５１】
次に、図２の２０２に示したメモリコマンドのＡＣＴコマンドの発行からＷＲコマンドの発行までに２クロック以上必要なシステムにおけるＣＰＵスタート信号の送信タイミングを求める。
【００５２】
メモリコマンドの書込み開始を示すＷＲコマンドの発行タイミングを算出するまでの過程は、上記２０１に示すシステムと同じであるが、ＡＣＴコマンドを発行してからＷＲコマンドを発行するまでに２クロック必要であるので、ＷＲコマンドをＴ９のタイミングで発行するためにはＴ６のタイミングでＡＣＴコマンドを発行する必要がある。さらにＴ６のタイミングでＡＣＴコマンドを発行するには、その直前のＴ５のタイミングでＣＰＵスタート信号を送信する必要がある。よってこのようなシステムでは、Ｔ１２のタイミングでデータをそろえるためにはＴ５のタイミングでＣＰＵスタート信号を送信する。
【００５３】
このようにシステム固有のタイミングを考慮してＣＰＵスタート信号を送信することができるので、ＡＣＴコマンドからＷＲコマンドまでの時間を多く必要とするシステムにおいて、よりオーバヘッドを軽減することができる。
【００５４】
なお、ＡＣＴコマンドの発行からＷＲコマンドの発行までに要する時間が２クロックであるシステムにおいて説明したが、２クロックに限定されることなく、システムの発行までに要する時間に応じてタイミングを制御することができる。
【００５５】
次に、メモリコマンドのＡＣＴコマンドの発行からＷＲコマンドの発行までに２クロック以上必要であり、かつ、ＣＰＵ制御部１０６からＳＤＲＡＭ１０５に書き込むアドレス情報をメモリコントローラ１０９が受信し、どの素子に対して読み出しや書込みを行うのかを指定するチップセレクト信号のデコード時間が１クロック以上必要なシステムにおけるＣＰＵスタート信号の送信タイミングを求める。
【００５６】
メモリコマンドのＡＣＴコマンドの発行からＷＲコマンドの発行までに２クロック以上必要な場合のＣＰＵスタート信号の送信タイミングは、上記よりＴ５のタイミングと算出することができる。そして、チップセレクト信号のデコード時間が１クロック必要であるため、Ｔ５のタイミングよりも更に１クロック分、先にＣＰＵスタート信号を送信する。すなわちＴ４のタイミングでＣＰＵスタート信号を送信する。
【００５７】
これによって、ＡＣＴコマンドの発行からＷＲコマンドの発行までに２クロック要し、さらにチップセレクト信号のデコード時間が１クロック必要なシステムにおいてもその必要なクロックを考慮してＣＰＵスタート信号を送信することができるため、さらなるオーバヘッドの軽減が図れる。
【００５８】
以上に示すそれぞれ送信タイミングが異なるシステムにおいて、データの書込みタイミングを合わせることができるためオーバヘッドが軽減される。これによって、バーストアクセスが可能なＳＤＲＡＭ１０５への高速データ転送が行われる。
【００５９】
図３は、本発明に係わるメモリコントローラおよび高速データ転送方法を適用した他のタイミングチャートを示す図である。
【００６０】
図３には、ＳＤＲＡＭ１０５へのアクセス要求を行うバスマスタとしてＣＰＵ１０１、画像処理制御部１０８があり、その画像処理制御部１０８がＳＤＲＡＭ１０５に直接アクセスする（ＤＭＡ：Direct Memory Access）ために接続された画像処理メモリデータバスＢ０４のバス幅は６４ビットであってこのバス幅はメモリバスＢ０５のバス幅と同じである。
【００６１】
ＣＰＵ１０１からＳＤＲＡＭ１０５へのアクセスと画像処理制御部１０８からＳＤＲＡＭ１０５へのアクセスが競合した場合におけるＣＰＵスタート信号の送信タイミングを示す図である。
【００６２】
図２に示すのと同様、Ｔ３のタイミングでＣＰＵからヘッダー（Ａcpu）が送られてきて、Ｔ４〜Ｔ１１のタイミングにそれぞれのデータ（Ｄ１〜Ｄ８）がバースト転送される。続いて、ＣＰＵメモリデータバスＢ０２にＴ４のタイミングからＴ１２のタイミングでデータがバースト転送される。
【００６３】
このとき、ＦＩＦＯ部の１つ目の格納領域（ＦＩＦＯ１）には、Ｔ７〜Ｔ１４の間、Ｄ１、Ｄ２のデータが格納された状態になり、また、２つ目の格納領域（ＦＩＦＯ２）には、Ｔ９〜Ｔ１４の間、Ｄ３、Ｄ４のデータが格納された状態になる。また、同様に、３つ目の格納領域（ＦＩＦＯ３）には、Ｔ１１〜Ｔ１４の間、Ｄ５、Ｄ６のデータが格納された状態になり、４つ目の格納領域（ＦＩＦＯ４）には、Ｔ１３とＴ１４の間、Ｄ７、Ｄ８のデータが格納された状態になる。
【００６４】
またさらに、画像処理制御部１０８からもＴ２のタイミングでビデオデータのヘッダー（Ａvideo）が送られてくる。続いて６４ビットを１ワードとしたデータをＴ３のタイミングからＴ６のタイミングでバースト転送する。これは、画像処理メモリデータバスＢ０４のバス幅が６４ビットであるため、３２ビットを１ワードとした８つのデータは、Ｔ３からＴ６までの４クロックで転送（送信）することができる。
【００６５】
このようにシステムバスＢ０１と画像処理メモリデータバスＢ０４それぞれからデータの送信があった場合、先行して送出されてきた画像処理メモリデータバスＢ０４からのデータをＳＤＲＡＭ１０５に書き込む処理を優先して行い、その後にシステムバスＢ０１から送信されてきたデータを書き込む処理を行う。
【００６６】
まず、画像処理メモリデータバスＢ０４のデータをＳＤＲＡＭ１０５に書き込むために画像処理スタート信号を送信するタイミングを求め、次にシステムバスＢ０１のデータの書込みを行うためのＣＰＵスタート信号を送信するタイミングを求める。
【００６７】
画像処理メモリデータバスＢ０４のデータをＴ８のタイミングでデータが揃うようにするためには４クロック前のＴ５にデータの送信を開始すればよい。つまり、Ｔ５のタイミングでメモリコマンドのＷＲコマンドを送信する。この場合、上記にも示すようにメモリへの書込み可能状態を示すＡＣＴコマンドをＷＲコマンドの２クロック前に送信することからＴ３のタイミングで送信することになる。そして、その直前のＴ２のタイミングで画像処理スタート信号を送信すれば、Ｔ８のタイミングでデータが揃うことになる。また、Ｔ８のタイミングでデータが書き込まれた後のＴ９のタイミングにデータの終了を示すＰＲＥコマンドを送信することによって画像処理制御部からのデータ転送の終わりを判断する。
【００６８】
ＰＲＥコマンドが送信されると画像処理制御部１０８からのデータ転送が終了したと判断されるので、次にＣＰＵスタート信号を送信することによってシステムバスＢ０１のデータをＳＤＲＡＭ１０５に対して書込み処理を行う。この際の書込み処理の処理内容は、図２に示す書込み処理と同じである。
【００６９】
これによって、画像処理制御部１０８とＣＰＵ１０１からＳＤＲＡＭ１０５へのアクセスが競合した場合であってもオーバヘッドを軽減したデータ転送が可能となる。
【００７０】
図４は、従来技術におけるＣＰＵ１０１からメモリへのアクセスタイミングを示すタイミングチャート図である。
【００７１】
図４において、システムクロック（SYSCLK）としてＴ１〜Ｔ１９まで刻まれており、クロック単位でデータ通信が行われる。また、タイミングチャートの項目としてシステムバスＢ０１、ＣＰＵメモリデータバスＢ０２、ＦＩＦＯ部１０（１〜４）、ＣＰＵスタート信号、メモリコマンド、メモリバスＢ０５が示されている。このとき、システムバスＢ０１およびＣＰＵメモリデータバスＢ０２のバス幅は３２ビット幅であり、メモリバスＢ０５のバス幅は６４ビット幅である。これは、１クロック当りに送信することができるビット数を示している。
【００７２】
システムバスＢ０１は図１に示すようにＣＰＵ１０１からプリンタコントロールＬＳＩ１０４のＣＰＵ制御部１０６とを接続したバスであり、ＣＰＵ１０１からの処理内容をＣＰＵ制御部１０６に伝える。また、ＣＰＵメモリデータバスＢ０２は、プリンタコントロールＬＳＩ１０４内でアクセス制御を行うＣＰＵ制御部１０６からＦＩＦＯ部１１０に対してデータを送出する。
【００７３】
図４のタイミングチャートに示された項目としてシステムバスＢ０１を流れるデータ、ＣＰＵメモリデータバスＢ０２を流れるデータ、ＦＩＦＯ部１１０におけるデータ、ＣＰＵスタート信号、メモリコマンド、メモリバスＢ０５を流れるデータが示されている。
【００７４】
システムバスＢ０１のタイミングチャートとして、１クロック目に示すヘッダー（Ａcpu）と２クロック目から９クロック目までの各クロックに示した３２ビットを１ワードとしたデータ（Ｄ１〜Ｄ８）が流れると、続いてＣＰＵメモリデータバスＢ０２のタイミングチャートとして２クロック目に示すヘッダー（Ａcpu）と３クロック目から１０クロック目までのデータ（Ｄ１〜Ｄ８）が流れる。
【００７５】
このとき、ＦＩＦＯ部の１つ目の格納領域（ＦＩＦＯ１）には、５クロック目から１２クロック目でＤ１、Ｄ２のデータが格納された状態になり、また、２つ目の格納領域（ＦＩＦＯ２）には、７クロック目から１２クロック目でＤ３、Ｄ４のデータが格納された状態になる。
【００７６】
また同様に、３つ目の格納領域（ＦＩＦＯ３）には、９クロック目から１２クロック目でＤ５、Ｄ６のデータが格納された状態になり、４つ目の格納領域（ＦＩＦＯ４）には、１１クロック目から１２クロック目でＤ７、Ｄ８のデータが格納された状態になる。
【００７７】
そして、ＦＩＦＯ４にデータが格納されると同時にタイミング制御部１１３からＣＰＵスタート信号が発信され、信号を受信したコマンド制御部１１４は、メモリコマンドとしてＳＤＲＡＭ１０５にデータの書込みが可能になったことを示すＡＣＴコマンドを送信する。これによって、メモリは書込み可能な状態になる。
【００７８】
このときのＣＰＵスタート信号は、ＣＰＵアクセスのバス幅の差によるオーバヘッドによってビデオなどのＤＭＡ（Direct Memory Access：ダイレクトメモリ転送）が遅延されることがないようにするため、全てのデータ（Ｄ１〜Ｄ８）がそろうまでＣＰＵのメモリアクセスをスタートさせることができない。
【００７９】
ＦＩＦＯ部１１０へのデータ格納が終了すると（１２クロック目）、同時にメモリコマンドはＷＲコマンドをＳＤＲＡＭ１０５に送信し、ＦＩＦＯ部１１０に格納されたＤ１〜Ｄ８をメモリバスＢ０５に流す。このとき、メモリバスＢ０５はシステムバスＢ０１乃至ＣＰＵメモリデータバスＢ０２の２倍のバス幅である６４ビットであるため、システムバスＢ０１、ＣＰＵメモリデータバスＢ０２の２クロック分のデータを１クロックで送信することができる。
【００８０】
すなわち、１クロック単位で３２ビットを１ワードとしたデータを２つ送信することができるため、１３クロック目で送信を開始したデータは１６クロック目で送信を終了する。そして、１７クロック目に全てのデータがＳＤＲＡＭ１０５に送信したことを示すＰＲＥコマンドを送る。これによってＣＰＵ１０１からメモリ（ＳＤＲＡＭ１０５）への書込みが行われたことになる。
【００８１】
図４に示す従来技術では、ＣＰＵ１０１からＳＤＲＡＭ１０５への書込みにかかる時間は１７クロックを必要とすることになる。それに対して、本願発明では、図２に示すように１３クロックで書込みが終了する。
【００８２】
以上の処理によって、本発明のメモリコントローラおよび高速データ転送方法によって、メモリアクセスのタイミングを統一することができ、メモリアクセス時のオーバヘッドを軽減することができる。
【００８３】
これにより、ＳＤＲＡＭなどのメモリのバス幅に対してバス幅の小さいＣＰＵが搭載されたプリンタにおいて、データの高速転送が可能となる。
【００８４】
従って、本発明を適用することにより、ＣＰＵからメモリへのアクセス時のタイミングを制御することにより、ＣＰＵの処理能力の小さい電子機器においてもデータの高速転送が可能になるという効果を期待できる。
【００８５】
さらに、高速で低価格な電子機器を提供可能であるという効果をも期待できる。
【００８６】
本発明は、上記し、且つ図面に示す実施例に限定することなく、その要旨を変更しない範囲内で適宜変形して実施できるものである。
【産業上の利用可能性】
【００８７】
本発明は、ＣＰＵのバス幅に対してバス幅の大きいメモリが接続されたメモリコントローラおよび高速データ転送方法に適用可能であり、特に、バーストアクセスが可能なＳＤＲＡＭが搭載された場合にそのＳＤＲＡＭへのアクセスタイミングを制御することにより高速データ転送するのに有用である。
【図面の簡単な説明】
【００８８】
【図１】この発明に係わるメモリコントローラおよび高速データ転送方法を適用して構成した機器のシステム構成図。
【図２】本発明に係わるメモリコントローラおよび高速データ転送方法を適用したタイミングチャートを示す図。
【図３】本発明に係わるメモリコントローラおよび高速データ転送方法を適用した他のタイミングチャートを示す図。
【図４】従来技術におけるＣＰＵからメモリへのアクセスタイミングを示すタイミングチャート図。
【符号の説明】
【００８９】
１０１      ＣＰＵ
１０２      ＵＳＢインターフェース
１０３      エンジン
１０４      プリンタコントロールＬＳＩ
１０５      ＳＤＲＡＭ
１０６      ＣＰＵ制御部
１０７      ＵＳＢ制御部
１０８      画像処理制御部
１０９      メモリコントローラ
１１０      ＦＩＦＯ部
１１１      アドレスデコード部
１１２      セレクタ
１１３      タイミング制御部
１１４      コマンド制御部
【図１】
2006195810.tif 000003
【図２】
2006195810.tif 000004
【図３】
2006195810.tif 000005
【図４】
2006195810.tif 000006