(57)【要約】【課題】高価な高速メモリを使用することなくランダムアクセス性能を向上させることができるメモリアクセス方法を提供する。【解決手段】シンクロナスＤＲＡＭのメモリアクセス方法において、同一のデータをシンクロナスＤＲＡＭの複数のバンクにそれぞれ書き込み、複数のバンクに対して所定の順序で順次アクティブコマンドを発行し、次に複数のバンクに対して所定の順序で順次リードコマンドを発行する。【選択図】図３
2008041142.tif 000002
【特許請求の範囲】
【請求項１】
シンクロナスＤＲＡＭのメモリアクセス方法において、
同一のデータを前記シンクロナスＤＲＡＭの複数のバンクにそれぞれ書き込み、前記複数のバンクに対して所定の順序で順次アクティブコマンドを発行し、次に前記複数のバンクに対して所定の順序で順次リードコマンドを発行することを特徴とするメモリアクセス方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明はメモリアクセス方法に関する。
【背景技術】
【０００２】
画像データのリアルタイム処理を行う画像処理装置には、フレームメモリに対して高いリードランダムアクセス性能が要求される。特に、フレームメモリの内容をテーブル参照（例えば魚眼レンズを用いて撮影した画像データをＣＰＵ等で射影変換するときの像のゆがみを修正するためのテーブルを参照）するようなアルゴリズムを用いる場合には高いリードランダムアクセス性能が求められる。この要求を満たすためには、高価ではあるが効率のよいいわゆる高速メモリ（スタティックメモリ（ＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ））等）を使用する必要があった。また、並列接続した複数個の高速メモリに同時にアクセスし、その並列データを直列データに変換する等の処理により、見かけ上のサイクル時間をより短くする必要があった。
【０００３】
一方、高速メモリより安価なＳＤＲＡＭ（Ｓｙｎｃｈｒｏｎｏｕｓ  ＤＲＡＭ）をフレームメモリとして使用することもできる。
【非特許文献１】「ＳＤＲＡＭの使い方  ユーザーズマニュアル」Ｄｏｃｕｍｅｎｎｔ  Ｎｏ．Ｊ０１２３Ｎ６０（Ｖｅｒ．６．０）  発行年月：２００５年２月
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかし、ＳＤＲＡＭのリードランダムアクセス性能は高速メモリに比較して著しく劣る。例えば、１回のリードアクセスに５〜６クロック必要であるとともに、連続的なランダムアクセスに８〜９クロック必要であり、高速の動画画像処理には向かない。
【０００５】
この発明はこのような事情に鑑みてなされたもので、その課題は高価な高速メモリを使用することなくランダムアクセス性能を向上させることができるメモリアクセス方法を提供することである。
【課題を解決するための手段】
【０００６】
上記課題を解決するため請求項１記載の発明は、シンクロナスＤＲＡＭのメモリアクセス方法において、同一のデータを前記シンクロナスＤＲＡＭの複数のバンクにそれぞれ書き込み、前記複数のバンクに対して所定の順序で順次アクティブコマンドを発行し、次に前記複数のバンクに対して所定の順序で順次リードコマンドを発行することを特徴とする。
【発明の効果】
【０００７】
この発明によれば、高価な高速メモリを使用することなくランダムアクセス性能を向上させることができる。
【発明を実施するための最良の形態】
【０００８】
以下、この発明の実施の形態を図面に基づいて説明する。
【０００９】
図１はこの発明の一実施形態に係るメモリアクセス方法の使用が用いられた画像処理装置を説明するためのブロック図である。
【００１０】
画像処理装置１０はメモリコントローラ１１とフレームメモリとしてのＳＤＲＡＭ（シンクロナスＤＲＡＭ）１２とを備えている。
【００１１】
メモリコントローラ１１はバス１３を介してＳＤＲＡＭ１２との間でデータ・コマンドの転送を行う。また、メモリコントローラ１１はＳＤＲＡＭ１２へクロック信号を転送する。
【００１２】
メモリコントローラ１１はクロックの立ち上がりのタイミングに同期してコマンドを発行し、データを読み出す。
【００１３】
画像処理装置１０ではカメラ２０で取得された画像データがデジタル化し、デジタル化された画像データがメモリコントローラ１１によってＳＤＲＡＭ１２に記憶されるとともに、マイコン等（図示せず）で各種の画像処理が行われる。その後、デジタル化された画像データは画像表示又は画像処理回路（図示せず）等に出力される。
【００１４】
図２はこの発明の一実施形態のメモリアクセス方法の比較例に係るメモリアクセス方法のリードサイクルを説明するタイミング・チャート、図３はこの発明の一実施形態に係るメモリアクセス方法のリードサイクルを説明するタイミング・チャートである。
【００１５】
図２はＳＤＲＡＭに対する２回分のリードランダムアクセスについて説明するための図である。
【００１６】
コマンド発行のタイミングは次のとおりである（図２参照）。
【００１７】
まず、クロック１の立ち上がりに同期してバンク１に対する１回目のアクティブコマンド（使用するバンク番号（バンク１）と行（Ｒｏｗ）アドレスとを指定する情報）を発行し、バンク１を活性化する。なお、各バンクには１フレーム分の画像データが記憶されている。
【００１８】
次に、クロック２分はＳＤＲＡＭ１２の仕様上決められたｔＲＣＤ時間（Ｒｏｗ  ｔｏ  Ｃｏｌ  Ｄｅｌａｙ、行（Ｒｏｗ）アドレス指定から列（Ｃｏｌ）アドレス指定までの待ち時間）を満足するだけウエイト状態とする。ＳＤＲＡＭ仕様上アクティブコマンドに連続してリードコマンドを発行できないからである。
【００１９】
その後、クロック３の立ち上がりに同期してバンク１に対するリードコマンドを発行（使用するバンク番号（バンク１）と列（Ｃｏｌ）アドレスとを指定する情報）する。
【００２０】
次に、クロック４分はＳＤＲＡＭ１２の仕様上決められたＣＬ時間（ＣＡＳレーテンシ、列（Ｃｏｌ）アドレスを指定してから有効データが出力されるまでの時間）を満足するだけウエイト状態とする。
【００２１】
その後、クロック５の立ち上がりに同期してデータ１（１ワード）をリードする。
【００２２】
次に、クロック６分はＳＤＲＡＭ仕様のｔＲＣ時間（Ｒｏｗ  Ｃｙｃｌｅ、アクティブコマンドから次のアクティブコマンドまでの時間）を満足するだけウエイト状態とする。
【００２３】
その後、クロック７の立ち上がりに同期してバンク１に対する２回目のアクティブコマンドを発行し、バンク１を活性化する。
【００２４】
以下クロック信号にしたがってクロック２〜クロック６と同様の動作を繰り返す。
【００２５】
上述のようにメモリコントローラ１１からＳＤＲＡＭ１２に一連のコマンドを発行した後、１ワードのデータを読み出す（６クロックで１ワードを読み出す。）ので、この比較例のメモリアクセス方法ではランダムアクセスの効率が悪い。
【００２６】
ところで、ＳＤＲＡＭ１２は通常マルチバンク（通常４バンク）構成であり、バンク毎にコマンドを発行することができる。
【００２７】
そこで、この実施形態では読み出したいデータが毎回異なるバンクのデータであれば空き時間（同じバンクへのリードコマンドの発行から２回目のバンク１に対するアクティブコマンドの発行までの時間）を利用してコマンド発行の順番を以下のようにスケジューリングした。
【００２８】
あらかじめ複数のバンクに同一フレームの画像データ（例えば１フレーム分の画像データ）を書き込んでおき、毎回バンクを切り換えて異なるバンクからデータを読み出すことができるようにした。
【００２９】
コマンド発行のタイミングは次のとおりである（図３参照）。
【００３０】
まず、クロック１の立ち上がりに同期してバンク１に対するアクティブコマンド（使用するバンク番号（バンク１）と行アドレスとを指定する情報）を発行し、バンク１を活性化する。
【００３１】
次に、クロック２の立ち上がりに同期してバンク２に対するアクティブコマンド（使用するバンク番号（バンク２）と行アドレスとを指定する情報）を発行し、バンク２を活性化する。
【００３２】
その後、クロック３の立ち上がりに同期してバンク３に対するアクティブコマンド（使用するバンク番号（バンク３）と行アドレスとを指定する情報）を発行し、バンク３を活性化する。
【００３３】
次に、クロック４の立ち上がりに同期してバンク４に対するアクティブコマンド（使用するバンク番号（バンク４）と行アドレスとを指定する情報）を発行し、バンク４を活性化する。
【００３４】
その後、クロック５の立ち上がりに同期してバンク１に対するリードコマンド（使用するバンク番号（バンク１）と列アドレスとを指定する情報）を発行する。
【００３５】
次に、クロック６の立ち上がりに同期してバンク２に対するリードコマンド（使用するバンク番号（バンク２）と列アドレスとを指定する情報）を発行する。
【００３６】
その後、クロック７の立ち上がりに同期してバンク３に対するリードコマンド（使用するバンク番号（バンク３）と列アドレスとを指定する情報）を発行する。また、クロック7の立ち上がりに同期してデータ１をリードする。
【００３７】
次に、クロック８の立ち上がりに同期してバンク４に対するリードコマンド（使用するバンク番号（バンク４）と列アドレスとを指定する情報）を発行する。また、クロック８の立ち上がりに同期してデータ２をリードする。
【００３８】
その後、クロック９の立ち上がりに同期してバンク１に対するアクティブコマンド（使用するバンク番号（バンク１）と行アドレスとを指定）を発行する。また、クロック９の立ち上がりに同期してデータ３をリードする。
【００３９】
以下クロック信号にしたがってクロック２〜クロック８と同様の動作を繰り返す。
【００４０】
その結果、クロック１からクロック１０までの期間にデータ１〜データ４のリードランダムアクセスを行うことができる。また、その期間のうちの２つのクロック期間（クロック９，１０）は次のサイクルとオーバラップしているので、クロック１〜８の期間で実質的に４つのデータをリードすることになる。クロック１〜１１の期間で見た場合、比較例では２つのデータしかリードできないのに対して、この実施形態では同じクロック期間で６つのデータをリードすることができ、３倍の性能向上を見込むことができる。
【００４１】
なお、この方法ではあらかじめ複数のバンクに同一画像データの１フレーム分のデータを書き込む処理が必要であるため、データの書き込みに比較例より多くの時間が必要になる。しかし、書き込みデータは通常連続するアドレスのデータであり、効率よくＳＤＲＡＭ１２にバースト転送（連続したデータを転送する際、アドレスの指定等の手順を一部省略する転送方法であり、転送速度を上げることができる。）することができる。バースト転送によれば、オーバヘッド（データを書き込む処理を行うためにかかるシステムの負荷）は小さい。
【００４２】
この実施形態によれば、比較例と比較して３倍の性能向上を見込めるので、高価な高速メモリを使用することなくランダムアクセス性能を向上させることができる。その結果、動画画像処理等を安価に行うことができる。
【００４３】
また、上記実施形態ではクロック信号の立ち上がりに同期してコマンドを発行したが、クロック信号の立ち下がりに同期してコマンドを発行するようにしてもよい。
【００４４】
更に、上記実施形態ではシングルデータレートのＳＤＲＡＭを用いて説明したが、ダブルデータレートのＳＤＲＡＭ（ＤＤＲ  ＳＤＲＡＭ）等を用いてもよい。ＤＤＲ  ＳＤＲＡＭによれば転送レートをシングルデータレートのＳＤＲＡＭ１２の２倍とすることができる。
【図面の簡単な説明】
【００４５】
【図１】図１はこの発明の一実施形態に係るメモリアクセス方法の使用が用いられた画像処理装置を説明するためのブロック図である。
【図２】図２はこの発明の一実施形態のメモリアクセス方法の比較例に係るメモリアクセス方法のリードサイクルを説明するタイミング・チャートである。
【図３】図３はこの発明の一実施形態に係るメモリアクセス方法のリードサイクルを説明するタイミング・チャートである。
【符号の説明】
【００４６】
１２：ＳＤＲＡＭ（シンクロナスＤＲＡＭ）
【図１】
2008041142.tif 000003
【図２】
2008041142.tif 000004
【図３】
2008041142.tif 000005