(57)【要約】【課題】ＣＰＵとＦＩＦＯとの間のバーストモードデータ転送のための方法及び装置【解決手段】ＣＰＵとＦＩＦＯとの間のバーストモードデータ転送のための方法及び装置。ＣＰＵは複数のメモリアドレスを定義するバーストモードメモリアクセスを実行する。複数のメモリアドレスは、複数のメモリアドレスの各々について同一の出力を生成するように復号化される。出力を用いて、複数の各メモリアドレスごとに、ＦＩＦＯを繰り返しアクセスする。【選択図】  図７Ｂ
2005235199.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵとＦＩＦＯとの間のバーストモードデータ転送のための方法であって、ＣＰＵは複数のメモリアドレスを定義するバーストモードメモリアクセス命令を実行するようになっており、
複数のメモリアドレス各々について同一の出力を生成するように複数のメモリアドレスを復号化するステップと、
前記出力を用いて、複数の各アドレスごとに、ＦＩＦＯを繰り返しアクセスするステップと、
を有する方法。
【請求項２】
複数のメモリアドレスを順次バスに乗せ、前記復号化のステップのためにバスから複数のメモリアドレスを順次読み出すステップをさらに有する、請求項１に記載の方法。
【請求項３】
前記アクセスのステップはリードアクセスである、請求項１に記載の方法。
【請求項４】
前記アクセスのステップはライトアクセスである、請求項１に記載の方法。
【請求項５】
ＣＰＵによるバーストモードデータ転送のための装置であって、ＣＰＵは複数のメモリアドレスを定義するバーストモードメモリアクセス命令を実行するようになっており、
ＦＩＦＯと、
デコーダとを有し、当該デコーダは複数のメモリアドレスを受け取り、当該複数のメモリアドレスの各々について同一の出力を生成するように複数のメモリアドレスを復号化し、前記ＦＩＦＯをアクセスするために当該出力を前記ＦＩＦＯに供給するようになっている、装置。
【請求項６】
ＣＰＵ及び前記デコーダはバスに接続され、前記デコーダはバスから複数のメモリアドレスを順次受け取るようになっている、請求項５に記載の装置。
【請求項７】
前記デコーダの前記出力は前記ＦＩＦＯをリードアクセスするためである、請求項５に記載の装置。
【請求項８】
前記デコーダの前記出力は前記ＦＩＦＯをライトアクセスするためである、請求項５に記載の装置。
【請求項９】
ＣＰＵとＦＩＦＯとの間のバーストモードデータ転送のための方法を実行するために機械が実行可能な命令プログラムを実装した機械可読媒体であって、ＣＰＵは複数のメモリアドレスを定義するバーストモードアクセス命令を実行するようになっており、この方法は、
複数のメモリアドレスの各々について同一の出力を生成するように複数のメモリアドレスを復号化するステップと、
前記出力を用いて、複数の各アドレスごとに、ＦＩＦＯを繰り返しアクセスするステップとを有する、機械可読媒体。
【請求項１０】
方法は、複数のメモリアドレスを順次バスに乗せ、前記復号化のステップのためにバスから複数のメモリアドレスを順次読み出すステップをさらに有する、請求項９に記載の機械可読媒体。
【請求項１１】
方法はさらにＦＩＦＯをリードアクセスするステップをさらに有する、請求項９に記載の機械可読媒体。
【請求項１２】
方法はさらにＦＩＦＯをライトアクセスするステップをさらに有する、請求項９に記載の機械可読媒体。
【請求項１３】
バーストモードデータ転送のためのシステムであって、
複数のメモリアドレスを定義するバーストモードメモリアクセス命令を実行するようになっているＣＰＵと、
ＦＩＦＯと、
デコーダとを備え、当該デコーダは複数のメモリアドレスを受け取り、前記複数のメモリアドレスの各々について同一の出力を生成するように複数のメモリアドレスを復号化し、前記ＦＩＦＯをアクセスするために当該出力を前記ＦＩＦＯに供給するようになっている、システム。
【請求項１４】
さらにバスを備え、前記ＣＰＵ及び前記デコーダは当該バスに接続され、前記デコーダは複数のメモリアドレスを前記バスから順次受け取るようになっている、請求項１３に記載のシステム。
【請求項１５】
前記デコーダの前記出力は前記ＦＩＦＯをリードアクセスするためである、請求項１３に記載のシステム。
【請求項１６】
前記デコーダの前記出力は前記ＦＩＦＯをライトアクセスするためである、請求項１３に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＣＰＵとＦＩＦＯ（先入れ先出し）メモリとの間のバーストモードデータ転送のための方法及び装置に関する。
【背景技術】
【０００２】
ＦＩＦＯメモリは、データの転送を容易にするために、ＣＰＵと周辺装置間とのバッファとして使用されることが多い。例えば、携帯電話にはＦＩＦＯを介して周辺装置のカメラとインタフェースをとるようになっているＣＰＵが含まれている。別の例は、ＵＡＲＴ（Universal Asynchronous Receiver Transmitter）におけるＦＩＦＯメモリの使用である。ＵＡＲＴは、シリアル通信に対応できるようになっている周辺装置とＣＰＵに接続されたパラレルバスとの間でインタフェースをとる。ＦＩＦＯメモリは普通、単一メモリアドレスによってのみアクセス可能である。
【０００３】
ＣＰＵには一般に、対応するメモリ空間とメモリ空間との間でデータを転送するための「バースト」モード命令が備わっている。例えば、商品名"ARM"で知られているプロセッサは、一つの連続したメモリ空間からもう一つのメモリ空間にデータブロックを効率よく転送する「リード・マルチプル」命令及び「ライト・マルチプル」命令に対応できるようになっている。具体的には、ARMプロセッサの「リード・マルチプル」命令は、連続したメモリ空間から３２バイトのデータの読み出し、その３２バイトデータを単一フェッチ命令で内部レジスタに格納することができる。同様に、「ライト・マルチプル」命令は、単一フェッチ命令で、３２バイトのデータを内部レジスタから連続したメモリ空間に書き込むことができる。そうしたバーストモード機能がなければ、このプロセッサは命令フェッチごとに４バイトしか読み書きできず、アドレスレジスタのコンテンツを毎回インクリメントしなければならない。その上、リード・マルチプル命令またはライト・マルチプル命令をソフトウェアでインプリメントするにはループの実行が欠かせないので、さらに処理オーバーヘッドが増える。
【０００４】
【特許文献１】米国特許第6,557,053号明細書
【発明の開示】
【発明が解決しようとする課題】
【０００５】
バーストモード命令「リード・マルチプル」及び「ライト・マルチプル」は、従って、普通は必要になる多数のクロックサイクルを節約することによって、ＣＰＵがはるかに効率よく機能できるようにする。しかしながら、バーストモード命令は、対話の対象となるシーケンシャルアドレスで識別される連続したメモリブロックを必要とするので、単一アドレスで識別されるＦＩＦＯではうまくいかない。ついては、ＣＰＵとＦＩＦＯとの間のバーストモードデータ転送のための方法及び装置が求められている。
【課題を解決するための手段】
【０００６】
ＣＰＵとＦＩＦＯと間のバーストモードデータ転送のための好適な方法及び装置を提供する。ＣＰＵは、複数のメモリアドレスを定義するバーストモードメモリアクセス命令を実行する。複数のメモリアドレスは、複数のメモリアドレスの各々について同一の出力を生成するように復号化される。ＦＩＦＯは、複数の各メモリアドレスごとに、出力を使って繰り返しアクセスされる。複数のアドレスはバスに順次乗せられる一方、復号化のためにバスから順次受け取られるのが好ましい。
【発明を実施するための最良の形態】
【０００７】
以下、本発明の実施形態を図面に基づいて説明する。
【実施例１】
【０００８】
図１に、模式的コンピュータシステム１０を示す。コンピュータシステム１０は、携帯電話、パーソナルデジタルアシスタント、ページャ、パーソナルコンピュータ、又はその他の同じようなシステムで構わない。システム１０にはＣＰＵ１２及びメモリ１４が含まれている。ＣＰＵ１２はバス１６でメモリ１４とインタフェースをとり、他のコンピュータ、デバイス、周辺装置はバスに接続されていて構わない。特に、周辺装置１８は、少なくとも１つのＦＩＦＯメモリを含んでいる回路２０を介してバスに接続されている。バス１６は、制御バス３０及びアドレス／データバス３２（図２に表示）からなる。
【０００９】
より具体的に言えば、本発明の模式的文脈として、回路２０は、例えば、リードＦＩＦＯＲＸ（２２）及びライトＦＩＦＯＴＸ（２４）といった２つのＦＩＦＯを含んだＵＡＲＴでいい。しかしながら、単一ＦＩＦＯを読み書き両方に使用しても構わないことを理解するだろう。２つのＦＩＦＯがあるから、回路２０は、例えば、ＦＩＦＯＲＸ（２２）を制御するための読み取り制御回路２６及びＦＩＦＯＴＸ（２４）を制御するための書き込み制御回路２８といったように、各ＦＩＦＯを制御する別々の制御回路を有しているのが好ましい。しかしながら、両方の機能を組み入れた単一制御回路を使用することもできることを理解するだろう。
【００１０】
読み取り制御回路の出力はREAD信号４２で、READ信号４２はアクティブのときＦＩＦＯＲＸ（２２）に４バイトをバス１６に対して出力させる。同様に、書き込み制御回路２８はWRITE信号４３をＦＩＦＯＴＸ（２４）に出力してＦＩＦＯＴＸにバス１６から４バイトをサンプリングさせるようにする。
【００１１】
図２に、図１のＵＡＲＴを部分的に示すブロック図である。メモリ転送を実行するために、ＣＰＵ１２は概してバス１６でアドレス信号及び制御信号を発する。具体的には、制御信号は制御バス３０で運ばれるが、アドレス及びデータはアドレス／データバス３２で運ばれる。この例における制御信号は、アドレスイネーブル３０ａ、リードイネーブル３０ｂ、及びライトイネーブル３０ｃからなる。ＣＰＵは、メモリ１４とＦＩＦＯ２２及び２４との間、ＣＰＵの中の内部メモリレジスタとＦＩＦＯとの間、もしくはＦＩＦＯとバスに接続された任意の他のデバイス又はメモリとの間のメモリ転送を指図することができる。
【００１２】
図３において、模式的タイミング図はＣＰＵ１２が実行する典型的なREAD命令のアドレスサイクル３４及びデータサイクル＃１（３６）を部分的に示している。（ADDRESS ENABLE #(30a)信号及びREAD ENABLE #(30b)信号はアクティブ・ローである。）READ命令は単一メモリアドレス"SA"を定義する。最初、READ Enable #はハイで、ＣＰＵはメモリアドレス"SA"をアドレス／データバス３２に乗せる。続いて、ADDRESS ENABLE#信号がローからハイに遷移し、それによりメモリアドレス"SA"が読み取り制御回路２６の中にラッチされる。これでアドレスサイクル３４が完了する。
【００１３】
メモリアドレス"SA"は読み取り制御回路２６によって復号化され、ＦＩＦＯＲＸ（２２）のための読み取りアドレスレジスタ（未表示）のアドレスとマッチしていれば、読み取り制御回路２６はＦＩＦＯＲＸ２２に格納していたデータ"RD"をバス３２に乗せさせるようにする。データサイクル３６中、ADDRESS ENABLE #はハイで、READ ENABLE #がローからハイに遷移すると、ＣＰＵがバス３２からデータ"RD"をサンプリングする。
【００１４】
WRITE命令の場合は、ＦＩＦＯＴＸ（２４）の書き込みアドレスレジスタ（未表示）を用いて、同じ操作原理を逆に適用する。
【００１５】
よく知られているようにソフトウェアループを採用することによってＣＰＵのREAD及びWRITE命令を用いて擬似「バーストモード」を発生させることができる。しかしながら、ＣＰＵ１２はハードウェアのバーストメモリアクセス命令もサポートしている。本書で説明しているシステムは、例えば、ARM7TDMIなど、ARMプロセッサ用の命令を有していると仮定しているが、同じような機能を有する任意の他のプロセッサを使用しても構わないことを理解するだろう。模式的ARM7TDMI CPUは、３２バイトのデータを連続した指定メモリロケーションからバーストで読み出して内部レジスタに格納する「リード・マルチプル」命令を出すと共に、対応した３２バイトのデータをバーストでＣＰＵの内部レジスタから指定された連続メモリロケーションに書き込む「ライト・マルチプル」命令を出す。バーストモード命令はＣＰＵの内部にあるレジスタを採用するのが好ましいが、しかるべき時間枠内にＣＰＵがアクセスできるならば、本発明の原理から逸脱することなく、ＣＰＵの外にあるレジスタを採用しても構わない。
【００１６】
ＣＰＵからメモリへのバーストモード転送においては、最低限の処理オーバーヘッドで、複数のメモリロケーションをそれぞれアクセスできるように或る範囲の複数のアドレスを提供するために、メモリアドレスをハードウェアでインクリメントする。ARMプロセッサの場合と同様に、バーストモード命令は、普通は１のステップで単調にメモリアドレスをインクリメントし、このメモリアドレスのインクリメントはメモリ空間のブロックを画定する連続したメモリローケーションに対応するが、これは不可欠なことではない。これらの命令を用いると、図３に表示したバスのタイミングは同じに見えるけれども、ＣＰＵ１２はもっと効率よく動作する。しかしながら、先に述べたように、ＦＩＦＯが単一アドレスで識別されるので、バーストモード命令はＦＩＦＯのアドレス指定には使用できない。
【００１７】
本発明によれば、ＣＰＵはバーストモードでリードＦＩＦＯＲＸ（２２）及びライトＦＩＦＯＴＸ（１２４）をアクセスし、これにおいては所定の複数アドレスの集合を用いてＦＩＦＯを繰り返しアクセスする。図４に示すのは、図１の回路２０に対応する回路４１である。回路４１は、ＦＩＦＯＲＸ（２２）を制御するための本発明の読み取り制御回路４６と、ＦＩＦＯＴＸ（２４）を制御するための本発明の書き込み制御回路４８を含んでいる。図２に図１の回路２０を部分的に表示したと同様に、図５に図４の回路４１を部分的に示した。
【００１８】
図５に、入力として上述の図３に示した信号が供給されるとして読み取り制御回路４６を表示している。読み取り制御回路４６の出力はREAD信号４２であり、READ信号４２はアクティブならばＦＩＦＯＲＸ（２２）に４バイトをバス１６に対して出力させる。同様に、書き込み制御回路４８（図４に表示、図５では省略）には、WRITE信号４３を受け取った結果、ＦＩＦＯＴＸ（２４）に４バイトをバス１６からサンプリングさせるための同一の信号が供給される。
【００１９】
図６に、図５の読み取り制御回路４６をより詳細に示している。回路４６は、制御バス３０から制御信号を受け取ると、アドレス／データバス３２から受け取ったアドレスビットをラッチする。アドレス又はデータの各ビットはＤフリップフロップ（D1...DN）をトリッガするそれぞれの立ち上がりエッジでラッチされ、フリップフロップの出力はデコーダ４４で復号化される。デコーダ４４はアドレスが所定のアドレス範囲内にあるといつでもREAD信号４２をアサートする。デコーダ４４を組合せ論理でインプリメントして構わない。READデコーダは、アドレスが下位アドレスと上位アドレスとの間で増分変化するとREAD信号をアサートする一方、アドレスが他の値を有しているとREAD信号をデアサートするようになっているのが好ましい。書き込み制御回路４８についても同じインプリメンテーションを用いることができる。その場合、デコーダはWRITE信号をアサートして、先に示したように、ＦＩＦＯＴＸ（２４）に書き込まれるようにする。
【００２０】
発明はＣＰＵオーバーヘッドの著しい節約を可能にする。図７Ａに示すのは、メモリからＦＩＦＯに３２バイトを転送するための従来方法のタイミング図である。模式的ARM CPUは一度に４バイトのデータを読み書きすることができる。図を簡単にするために、命令フェッチ、メモリ読み出し、及びＦＩＦＯ書き込みは全て１クロックサイクルしか要らないと仮定している。
【００２１】
セットアップのステップ３９において、第１ソースアドレス及びＦＩＦＯ宛先アドレスを確立するのに先ず４クロックサイクルが必要である。それから、次の動作の結果、すなわち、（１）「リード・メモリ」命令をフェッチ（クロックサイクルC1）、（２）メモリから４バイト読み出す（クロックサイクルC2）、（３）「ライトＦＩＦＯ」命令をフェッチ（クロックサイクルC3）、（４）ＦＩＦＯに４バイト書き込む（クロックサイクルC4）、（５）「インクリメント・ソースアドレス」命令をフェッチ（クロックサイクルC5）、（６）ソースアドレスをインクリメントする（クロックサイクルC6）、（７）「チェック・アドレス」命令をフェッチ（クロックサイクルC7）、及び（８）アドレスをチェックして３２バイトが転送されたかどうか判定する（クロックサイクルC8）といった動作の結果、４バイトデータの連続ブロックを転送するのに８クロックサイクルが必要である。したがって、３２バイトを転送するには、４＋（Ｎ×８）＝６８クロックサイクルが必要である（ここで、Ｎ＝３２÷４＝８）。
【００２２】
３２バイトを転送するために従来方法で必要な６８クロックサイクルは、図７Ｂに示すようにわずか２２クロックサイクルに減る。前と同じようにソース及び宛先アドレスを確立するために最初に４クロックサイクルは必要である（ステップ３９）。しかしながら、メモリから３２バイト読み出すには、８ブロック（CM2-9）を読み出すための８リードサイクルが後に続く命令"Read Multiple"（CM1）のための一回の命令フェッチと、８ブロック（CM11-18）を書き込むための８ライトサイクルが後に続く命令"Write Multiple"（CM10）のための一回の命令フェッチとだけしか要らない。各ブロックは４バイトのデータを有する。したがって、ＣＰＵ時間が２/３（三分の二）以上減る。容易に分かるように、ＦＩＦＯから３２バイトのデータを転送する場合にも同じような結果を得る。
【産業上の利用可能性】
【００２３】
上述の機能性をいろいろな異なる手段によってハードウェアで実現できることを当業者ならばすぐに理解するだろう。さらに、本発明の方法及び装置はハードウェアまたはソフトウェアで、もしくはその両方で実現することができるし、発明の一つ以上の方法を実行するために機械が実行可能な一つ以上の命令プログラムを実装した機械可読媒体を提供してもいい。さらに、ＦＩＦＯとＲＡＭとの間の効率のよい転送のための方法及び装置を具体的に表示すると共に好適な例として説明してきたが、こうしたすでに述べた構成及び方法のほかに、発明の原理から逸脱することなく、他の構成及び方法を活用できることを認識するべきである。
【００２４】
本明細書で使用した用語や表現は説明のためであって限定のためではない。また、そうした用語や表現の使用によって、表示及び説明した構成と同等のものを又はその一部を除外するつもりはない。発明の範囲は以下の請求項によってのみ定義及び限定されるものと考える。
【図面の簡単な説明】
【００２５】
【図１】ＣＰＵ、メモリ、及びリードＦＩＦＯ及びライトＦＩＦＯを有する先行技術のＵＡＲＴを採用した先行技術のメモリシステムのブロック図。
【図２】ＦＩＦＯとインタフェースをとるための先行技術の読み取り制御回路を表示している、図１のＵＡＲＴの部分的ブロック図。
【図３】図１のリードＦＩＦＯからデータを読み取るための単純なアドレス及びデータサイクルを例証したタイミング図。
【図４】ＣＰＵ、メモリ、及びリードＦＩＦＯ及びライトＦＩＦＯを有する本発明のＵＡＲＴを採用したメモリシステムのブロック図。
【図５】図４のリードＦＩＦＯ及びＵＡＲＴと使用するための本発明の読み取り制御モジュールを表示している、図４のＵＡＲＴの部分的ブロック図。
【図６】図５の読み取り制御モジュールをより詳細に表示したブロック図。
【図７Ａ】３２バイトデータをＦＩＦＯに転送する従来方法のタイミング図。
【図７Ｂ】３２バイトデータをＦＩＦＯに転送する本発明の方法のタイミング図。
【符号の説明】
【００２６】
１０・・・コンピュータシステム
１２・・・ＣＰＵ
１４・・・メモリ
１６・・・バス
１８・・・周辺装置
２０・・・回路
３０・・・制御バス
３２・・・アドレス／データバス
２２・・・リードＦＩＦＯＲＸ
２４・・・ライトＦＩＦＯＴＸ
２６・・・読み取り制御回路
２８・・・書き込み制御回路
４２・・・READ信号
４３・・・WRITE信号
３０ａ・・・アドレスイネーブル
３０ｂ・・・リードイネーブル
３０ｃ・・・ライトイネーブル
３４・・・アドレスサイクル
３６・・・データサイクル＃１
４６・・・読み取り制御回路
４４・・・デコーダ
４８・・・書き込み制御回路
【図１】
2005235199.tif 000003
【図２】
2005235199.tif 000004
【図３】
2005235199.tif 000005
【図４】
2005235199.tif 000006
【図５】
2005235199.tif 000007
【図６】
2005235199.tif 000008
【図７Ａ】
2005235199.tif 000009
【図７Ｂ】
2005235199.tif 000010