(57)【要約】  デジタル・カメラ内のメモリ・アクセス帯域幅が、各リクエスタに「スナップショットあたりトークン」（ＴＰＳ）値を割り当てることによって、いくつかのリクエスタの中において割り付けられる。各リクエスタは、ＤＭＡエンジンとＤＭＡエントリ・キューを有する。リクエスタが、メモリにアクセスすることを望む場合、ＤＭＡエントリが、リクエスタのＤＭＡエントリ・キューにプッシュされる。アービタが、ＴＰＳ値を使用して、「スナップショット」に組み込まれるＤＭＡエントリを様々なキューから選択する。次いで、アービタは、メモリにアクセスする際にメモリ・アクセス・オーバーヘッドが低減されるようにサービスする順序でスナップショットからＤＭＡエントリを選択する。スナップショットのすべてのＤＭＡエントリが処理された後でのみ、エントリの別のスナップショットが選択される。キューをサービスする最大レイテンシは、各キューにタイム・アウト値（ＴＯＶ）を割り当てることによって制御される。キューがタイム・アウトする場合、そのキューは、サービスの順序が繰り上がる。
2007525876.tif 000002
【特許請求の範囲】
【請求項１】
画像情報を記憶するメモリと、
第１ＤＭＡエンジンと、
前記第１ＤＭＡエンジンのためにＤＭＡ要求エントリを記憶する第１キューと、
スナップショットあたり第１トークン（ＴＳＰ１）を記憶する回路と、
第２ＤＭＡエンジンと、
前記第２ＤＭＡエンジンのためにＤＭＡ要求エントリを記憶する第２キューであって、前記第１キューの各ＤＭＡ要求エントリと前記第２キューの各ＤＭＡエントリが、関連するデータ移動量を示す、第２キューと、
第２スナップショットあたりトークン数（ＴＰＳ２）を記憶する回路と、
前記第１キューからのＤＭＡ要求エントリの第１数と、前記第２キューからのＤＭＡ要求エントリの第２数とを有するＤＭＡ要求エントリの第１スナップショットを選択するアービタと
を備え、ＴＰＳ１が前記第１数を決定するために使用され、ＴＰＳ２が前記第２数を決定するために使用され、前記アービタが、前記第１スナップショットの前記ＤＭＡ要求エントリが前記第１ＤＭＡエンジンと前記第２ＤＭＡエンジンによって処理される順序を決定する、カメラ。
【請求項２】
画像センサをさらに備え、前記第１ＤＭＡエンジンが、前記画像センサから受信した未処理画像データを前記メモリ内に移動させる請求項１に記載のカメラ。
【請求項３】
ズーム・エンジンと、
圧縮エンジンと
をさらに備え、前記第１ＤＭＡエンジンが前記ズーム・エンジンと前記メモリとの間でデータを移動させ、前記第２ＤＭＡエンジンが前記圧縮エンジンと前記メモリとの間でデータを移動させる請求項１に記載のカメラ。
【請求項４】
前記アービタが、ＤＭＡ要求エントリの第２スナップショットを選択し、前記第１スナップショットのすべての前記ＤＭＡ要求エントリが、前記第２スナップショットの任意のＤＭＡ要求エントリが処理される前に処理される請求項１に記載のカメラ。
【請求項５】
前記ＤＭＡ要求エントリのそれぞれがアドレスを含み、また、前記アービタが、前記第１スナップショットのＤＭＡ要求エントリのアドレスを調査することによって、前記順序を決定し、さらに、いくつかが他より高いメモリ・オーバーヘッドを有する前記メモリにアクセスする複数の可能な異なる順序が存在し、さらに前記アービタが、メモリ・アクセス・オーバーヘッドを最小限に抑えるように、前記第１スナップショットの前記ＤＭＡ要求エントリを順序付けする請求項１に記載のカメラ。
【請求項６】
メモリ・インタフェース・ユニット（ＭＩＵ）をさらに備え、前記第１ＤＭＡエンジンと前記第２ＤＭＡエンジンがある順序で前記ＭＩＵにメモリ・アクセス要求を発行し、前記メモリ・アクセス要求の前記順序が、前記第１スナップショットの前記ＤＭＡ要求エントリが処理される順序である請求項１に記載のカメラ。
【請求項７】
前記ＭＩＵが前記メモリ・アクセス要求を対応するメモリ・コマンドに変換し、前記メモリ・コマンドが前記メモリに供給される請求項６に記載のカメラ。
【請求項８】
前記メモリが、コマンド・バスとデータ・バスを介して前記ＭＩＵとインタフェースし、前記ＭＩＵが、データが前記ＭＩＵと前記メモリとの間で前記データ・バスにわたって転送されるのと同時に、前記コマンド・バスを介してコマンドを前記メモリに対して発行する請求項６に記載のカメラ。
【請求項９】
前記メモリが、同期ダイナミック・ランダム・アクセス・メモリ（ＳＤＲＡＭ）集積回路である一方、前記第１ＤＭＡエンジン、前記第１キュー、ＴＰＳ１を記憶する前記回路、前記第２ＤＭＡエンジン、前記第２キュー、ＴＰＳ２を記憶する前記回路、前記アービタが、前記ＳＤＲＡＭ集積回路の一部ではない請求項１に記載のカメラ。
【請求項１０】
前記第１スナップショットあたりトークン（ＴＰＳ１）数が時間量を表す数である請求項１に記載のカメラ。
【請求項１１】
前記第１スナップショットあたりトークン（ＴＰＳ１）数がデータ量を表す数である請求項１に記載のカメラ。
【請求項１２】
前記第１スナップショットあたりトークン（ＴＰＳ１）数がＤＭＡ要求エントリの数である請求項１に記載のカメラ。
【請求項１３】
前記アービタが前記第１ＤＭＡエンジンに関連付けられる時間期間が経過したかを判定するタイマを有し、前記時間期間が経過した場合、前記アービタが、前記第１キューからの前記第１スナップショットのＤＭＡ要求を、前記第１スナップショットの他のあらゆるＤＭＡ要求エントリが処理されるより前に処理することを決定する請求項１に記載のカメラ。
【請求項１４】
ＤＭＡ要求エントリの前記第１スナップショットが選択された後、前記アービタがＤＭＡ要求エントリの第２スナップショットを選択し、かつ、前記第１スナップショットのＤＭＡ要求エントリの前記数が前記第２スナップショットのＤＭＡ要求エントリの前記数と同一である請求項１に記載のカメラ。
【請求項１５】
ＤＭＡ要求エントリの前記第１スナップショットが選択された後、前記アービタがＤＭＡ要求エントリの第２スナップショットを選択し、かつ、前記第１スナップショットのＤＭＡ要求エントリの前記数が、前記第２スナップショットのＤＭＡ要求エントリの前記数とは異なる請求項１に記載のカメラ。
【請求項１６】
前記アービタが、ＤＭＡ要求エントリのスナップショットを連続的に選択し、ＤＭＡ要求エントリの各スナップショットが時間ウィンドウにおいて処理され、前記スナップショットのそれぞれの前記時間ウィンドウが同一時間量である請求項１に記載のカメラ。
【請求項１７】
前記アービタが、ＤＭＡ要求エントリのスナップショットを連続的に選択し、ＤＭＡ要求エントリの各スナップショットが時間ウィンドウにおいて処理され、様々なスナップショットの前記時間ウィンドウが異なる時間量である請求項１に記載のカメラ。
【請求項１８】
デジタル・カメラの複数の要求エンティティの中でメモリ・アクセス帯域幅を割り付け、前記要求エンティティのそれぞれがＤＭＡ要求エントリを記憶するキューを有し、各ＤＭＡ要求エントリが、前記デジタル・カメラにおいてメモリ集積回路のアクセスを実施する要求であり、その際、前記要求エンティティのそれぞれがスナップショットあたりトークン（ＴＰＳ）値を有する方法であって、
（ａ）各キューについて、前記キューに関連付けられる前記要求エンティティの前記ＴＰＳ値に基づいて、ＤＭＡ要求エントリの数を選択することによって、ＤＭＡ要求エントリのスナップショットを選択することと、
（ｂ）前記スナップショットの前記ＤＭＡ要求エントリによって要求される前記メモリ・アクセスの実施に関連するメモリ・アクセス・オーバーヘッドを低減する順序で、前記スナップショットにおいて前記ＤＭＡ要求エントリをサービスすることと、
（ｃ）ステップ（ａ）と（ｂ）を繰り返すこととを含む方法。
【請求項１９】
各スナップショットあたりトークン（ＴＰＳ）値がトークンの数であり、トークンが１つのＤＭＡ要求エントリを表している請求項１８に記載の方法。
【請求項２０】
各スナップショットあたりトークン（ＴＰＳ）値がデータ移動量の表示であり、各ＤＭＡ要求エントリがデータ移動量の表示を備える請求項１８に記載の方法。
【請求項２１】
各スナップショットあたりトークン（ＴＰＳ）値が時間量の表示である請求項１８に記載の方法。
【請求項２２】
前記要求エンティティの１つが圧縮エンジンである請求項１８に記載の方法。
【請求項２３】
キューにＤＭＡ要求エントリが存在しない場合、どのＤＭＡ要求エントリも（ａ）において前記キューから選択されない請求項１８に記載の方法。
【請求項２４】
前記メモリ集積回路がダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）集積回路であり、（ｂ）において低減された前記メモリ・アクセス・オーバーヘッドが、前記ＤＲＡＭ集積回路上でリフレッシュ・オペレーションを実施することに伴うオーバーヘッドを含む請求項１８に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、限定されたメモリ・アクセス帯域幅を有するメモリにアクセスすることを必要とする複数の機能部分を有するデジタル・カメラに関する。
【背景技術】
【０００２】
従来の消費者市場のデジタル・カメラは、通常画像処理回路や個別のメモリ集積回路を含む。メモリ集積回路は、たとえば、同期ダイナミック・ランダム・アクセス・メモリ（ＳＤＲＡＭ）とすることが可能である。
【０００３】
画像は画像センサによって取り込まれる。画像センサは、メモリに記憶される未処理画像情報ストリームを出力する。ビデオまたは静止画像の高速シーケンスの場合、画像情報の流れは、かなり一定のストリームとすることができる。ストリームにおいて後続の未処理画像情報がメモリに記憶されるのと同時に、ストリームにおける先行する画像情報が、デジタル画像パイプライン（ＤＩＰ）による画像処理のために、メモリから読み出される。デジタル画像パイプラインはいくつかの処理ブロックを含む。第１画像処理ブロックが、画像ストリームの第１部分について動作し、一方、第２画像処理ブロックが、画像ストリームの第２部分について動作している。各ブロックは、メモリから画像情報を読み取り、処理を実施し、次いで、その結果得られた処理情報を再びメモリに書き込む。したがって、デジタル画像パイプラインのいくつかのブロックが、同時にメモリにアクセスすることがある。
【０００４】
デジタル画像パイプラインの異なるブロックがメモリにアクセスすることを必要とするだけでなく、メモリ・アクセスを必要とする他の機能ブロックも、デジタル・カメラに存在する。一例では、デジタル・カメラは、ＪＰＥＧ圧縮ブロックを含む。ＪＰＥＧ圧縮ブロックは、メモリから画像を読み取り、その画像を圧縮し、次いでその画像の圧縮バージョンを出力して、その圧縮バージョンを再びメモリに記憶する。デジタル・カメラは、画像をメモリから読み取り、「サムネール」と呼ばれる画像のより小さいバージョンを作成し、次いで、このサムネールを再びメモリに書き込むズーム・エンジンを通常有する。デジタル・カメラは、取り込まれる画像をユーザが閲覧するディスプレイを通常有する。サムネールは、メモリから読み取られ、閲覧のためにディスプレイに供給される。デジタル・カメラは、画像の上にアイコンまたはテキスト情報を重ねる能力をも有する。オンスクリーン・ディスプレイ（ＯＳＤ）・エンジンが、メモリから背景画像を読み取り、アイコンまたはテキストもしくは他の視覚特徴を背景画像の上に重ね合わせ、次いで、カメラのディスプレイ上での閲覧のために、その合成画像をメモリに再び書き込むことが可能である。カメラは、たとえばＭＰＥＧ２コーデックなど、ビデオ符号器／復号器を含むことも可能である。画像情報は、メモリから読み取られ、ＭＰＥＧ２コーデックにより送信される。ＭＰＥＧ２コーデックによって出力され、その結果得られたＭＰＥＧ２ストリームは、次いで、メモリに戻される。
【０００５】
メモリ集積回路は、情報をメモリに書き込むために使用され、情報をメモリから読み取るために使用される単一アクセス・ポートを通常有する。画像情報をメモリ集積回路から読み取ることを必要とし、また画像情報をメモリ集積回路に書き込むことを必要とする複数の異なるエンティティのために、メモリ集積回路のアクセス・ポートは、カメラのスループット・ボトルネックとなることが多い。単位時間当たりにアクセス・ポートに移動させることができるデータ量は、限定される。カメラが適切に動作するために、アクセス・エンティティのそれぞれによってメモリ内外に移動させる全データ量は、全体で、メモリ集積回路の最大メモリ・アクセス帯域幅より小さい数でなければならない。
【０００６】
すべてのアクセス・エンティティによって必要とされる全メモリ・アクセス帯域幅が、長期にわたって利用可能である利用可能メモリ・アクセス帯域幅より小さくなければならないだけでなく、アクセス・エンティティのそれぞれが、メモリにアクセスすることを過度に長期に待つことがあってはならない。アクセス・エンティティのそれぞれがメモリにアクセスするのに必要な時間量は、レイテンシと呼ばれることがある。アクセス・エンティティが過度に待たされる場合、そのエンティティのオペレーションは、失敗し、または遅くなり、あるいは停止され、それにより、カメラの全体のスループットが低下する。いくつかのアクセス・エンティティは、他のエンティティと同程度のレイテンシに対応することができないこともある。画像センサからメモリへのビデオ画像情報の流れは、少量のレイテンシしか通常許容することができないという類のプロセスである。画像センサから出力されている未処理ビデオ画像情報をある時間量内に記憶することができない場合、その情報は上書きされる可能性があり、それにより、未処理画像情報が失われる。他のアクセス・エンティティは、対照的に、それらのエンティティがメモリへアクセスする必要な量を受け取るのと同程度の長期間にわたって、メモリにアクセスすることを通常待つことができる。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
１つの従来のデジタル・カメラでは、全体的なメモリ・アクセス帯域幅とレイテンシの問題は、アービタを使用して対処される。アクセス・エンティティのそれぞれが、それ自体の１つまたは複数の専用ＤＭＡエンジンを有する。各アクセス・エンティティ内に、メモリにアクセスするサブエンティティが存在することがある。アクセス・エンティティの１つがメモリにアクセスする必要があるとき、そのＤＭＡエンジンがアービタに要求する。要求するＤＭＡエンジンが１つのみである場合、要求は許可され、アクセス・エンティティは、メモリへのアクセスを得る。複数のＤＭＡエンジンが同時に要求する場合、そのＤＭＡエンジンの１つが、厳密な優先順位またはラウンド・ロビン・アービトレーション方式に基づいて選択される。たとえば、未処理画像データを画像センサからメモリに移動させるＤＭＡエンジンが、ズーム・エンジンのＤＭＡエンジンが要求するのと同時に要求する場合、未処理画像データのＤＭＡエンジンは、通常、その許可された要求を有し、ズーム・エンジンのＤＭＡエンジンは、通常、待たなければならない。レイテンシの問題を防止するために、このシステムは、最低優先順位ＤＭＡエンジンのレイテンシと帯域幅の要件が無効となるほどの短時間において、非常に多くの高優先順位要求を提出することができないように設計される。ＤＭＡエンジンがいつ要求することができるかを制御し、要求エンティティのそれぞれのレイテンシとスループットの要件が無効にならないことを保証するために、困難なシステム設計問題が生じることがある。たとえば、システムが変更される場合、様々なＤＭＡエンジンのタイミングやその要求のタイミングが、複雑に変化することがある。システムの様々な処理ブロック間の相互作用の再分析も必要であろう。帯域幅とレイテンシの問題に対処するために、ネットワーキングや電気通信の技術分野では、流れの成形とスケジューリングがルータやスイッチの設計において使用される。しかし、これらの技法は、一般に複雑で、実施が高価で厄介な傾向がある。価格に敏感な消費者市場のデジタル・カメラにおいて使用するのに適切である安価な解決法が望ましい。
【課題を解決するための手段】
【０００８】
デジタル・カメラのメモリ（たとえば、同期動的読取り専用メモリ−ＳＤＲＡＭ）が、画像情報を記憶し、単一アクセス・ポートを有する。画像情報は、この単一アクセス・ポートで、メモリから読み取られ、メモリに書き込まれる。このアクセス・ポートのメモリ・アクセス帯域幅は、各リクエスタに「スナップショットあたりトークン」（ＴＰＳ）値を割り当てることによって、画像情報のリクエスタのうちのいくつかに割り付けられる。スナップショットあたりトークン値は、たとえば、ＤＭＡ要求エントリの数を示す数とすることが可能である。リクエスタのそれぞれは、ＤＭＡエンジンとＤＭＡ要求エントリ・キューを有する。リクエスタがメモリにアクセスすることを望む場合、ＤＭＡ要求エントリが、リクエスタのＤＭＡ要求エントリ・キューにプッシュされる。このＤＭＡ要求エントリは、とりわけ、アクセスが読取りであるか書込みであるか、および開始アドレスがメモリ内においてアクセスされるものであるかを示す。
【０００９】
アービタ・ブロックが、様々なＤＭＡ要求キューからＤＭＡ要求エントリを選択するために、様々なリクエスタのＴＰＳ値を使用する。たとえば、所与のリクエスタが２のＴＰＳ値を割り当てられている場合、そのアービタ・ブロックは、（２つのＤＭＡエントリがそのキューにあるとすれば）キューから２つのＤＭＡ要求エントリを選択することができる。２つより少ないＤＭＡ要求エントリがキューに存在する場合、そのアービタ・ブロックは、キューから選択することができる可能な限り多くのＤＭＡエントリを選択する。このようにして、アービタ・ブロックは、各キューからＤＭＡ要求エントリを選択する。選択されたＤＭＡ要求エントリの結果的なセットは、「スナップショット」と呼ばれる。
【００１０】
スナップショットが選択された後、アービタ・ブロックは、メモリにアクセスする際にメモリ・アクセス・オーバーヘッドが低減される、または最小限に抑えられるようにサービスする順序で、スナップショットからＤＭＡ要求エントリを選択する。しかし、ＤＭＡ要求エントリがサービスのために選択される前に、各キューに関連して記憶されている「サービス・タイム・アウト値」（ＳＴＯＶ）が検査される。サービス・タイム・アウト値は、ある時間を示す値であり、その時間の後、ＤＭＡ要求エントリのサービスを瞬時にサービスしても、最小限のメモリ・アクセス・オーバーヘッドとはならないＤＭＡ要求エントリのサービス順序になるということとは関係なく、キューのＤＭＡ要求エントリがサービスされるはずである。したがって、アービタ・ブロックは、サービス・タイム・アウト値のいずれかが経過しているかを確認するために、タイマを検査する。キューがタイム・アウトしたと判定される場合、サービスのためにスナップショットから選択される次のＤＭＡ要求エントリは、そのキューの最も古いＤＭＡ要求エントリである。
【００１１】
各キューは、タイム・アウト値（ＴＯＶ）が記憶されているレジスタを有する。ＤＭＡ要求エントリがアービタ・ブロックによってサービスのために選択されるとき、タイマによって示される現在時間は、タイム・アウト値（ＴＯＶ）に追加される。結果的な時間は、キューのサービス・タイム・アウト値（ＳＴＯＶ）となる。
【００１２】
スナップショットのすべてのＤＭＡ要求エントリが、サービスのために選択された後、次いでアービタ・ブロックは、ＤＭＡ要求エントリの次のスナップショットを選択する。ＤＭＡ要求エントリがアービタ・ブロックによってサービスのために選択されるとき、ＤＭＡ要求エントリに関連付けられるＤＭＡエンジンは、メモリ・インタフェース・ユニット（ＭＩＵ）を介して読取りおよび／または書込みをＳＤＲＡＭに対して発行する。ＭＩＵは、読取りおよび／または書込みを、使用される特定のメモリによって理解されるメモリ・コマンドに変換する。可能であれば、ＭＩＵは、起動コマンド、カラム読取りコマンド、カラム書込みコマンド、プレチャージ・コマンドなどのあらゆる必要なメモリ・コマンドを、データがメモリ内外に転送されるのと同時にメモリに供給する。起動、カラム読取り、カラム書込み、プレチャージ・コマンドをこのように供給することにより、メモリ・アクセス・オーバーヘッドが低減される。
【００１３】
各キューのスナップショットあたりトークン（ＴＰＳ）値とタイム・アウト（ＴＯＶ）値の両方をプロセッサによって書き込むことができる。キューのスナップショットあたりトークン（ＴＰＳ）値を増大させることにより、他のリクエスタに関するキューに関連付けられたリクエスタに割り当てられるメモリ・アクセス帯域幅の量が増大する。キューのタイム・アウト（ＴＯＶ）値を減少させることにより、キューのＤＭＡ要求エントリの連続サービス間の最大時間量が低減され、したがって、関連付けられたリクエスタのメモリ・アクセスレイテンシが低減される。
【００１４】
上記の例では、トークンはＤＭＡ要求エントリを示すが、トークンは、多くのリクエスタの中でメモリ・アクセス帯域幅を割り付けるためにＴＰＳ値を使用することができる他の量を表すことが可能である。たとえば、トークンは、リクエスタがメモリのアクセス・ポートを使用することができる時間量を表してもよい。たとえば、トークンは、リクエスタのＤＭＡエンジンがメモリ内外に移動させるデータ量を表すことが可能である。
【００１５】
上記の例では、すべてのＤＭＡ要求エントリが等しいデータ移動量に対応するが、これは必要ではない。一例では、ＤＭＡ要求エントリは、異なるデータ移動量を示すことができる。キューの底部におけるＤＭＡ要求エントリのデータ移動量は、キューのスナップショットあたりトークン（ＴＰＳ）値になるキューの末尾にあるＤＭＡ要求エントリの数を決定するために合計される。代替として、ＤＭＡエントリは、キューのスナップショットあたりトークン（ＴＰＳ）値となるキューの末尾にあるＤＭＡ要求エントリの数を決定するために、キューの末尾にあるＤＭＡ要求エントリの時間量が合計されるように、異なる時間量を示すことができる。
【発明を実施するための最良の形態】
【００１６】
他の実施形態および利点を、以下の詳細な説明において説明する。この概要は、本発明を定義するものではない。本発明は、特許請求の範囲によって定義される。
【００１７】
同様の番号が同様の構成要素を示す添付の図面は、本発明の実施形態を示す。
【００１８】
ここで、添付の図面において例が示されている本発明のいくつかの実施形態を詳細に参照する。
【００１９】
図１は、本発明の一実施形態によるデジタル・カメラ１の簡略化されたブロック図である。カメラ１は、画像処理回路２とメモリ集積回路３を含む。メモリ集積回路３は、たとえば、画像情報を記憶する単一の同期ダイナミック・ランダム・アクセス・メモリ（ＳＤＲＡＭ）集積回路である。
【００２０】
画像処理回路２は、複数の要求エンティティを含む。これらの要求エンティティのそれぞれは、ＤＭＡエンジンを含む。図１は、未処理画像情報出力を画像センサからＳＤＲＡＭ３に転送するＤＭＡエンジン４、デジタル画像パイプラインのＤＭＡエンジン５、ズーム・エンジンのＤＭＡエンジン６、情報をＬＤＣディスプレイなどのディスプレイに転送するＤＭＡエンジン７、ＪＰＥＧ圧縮エンジンのＤＭＡエンジン８を示す。画像処理回路２は、メモリ・インタフェース・ユニット（ＭＩＵ）９、アービタ・ブロック１０、複数のキュー１１〜１５をさらに含む。ＤＭＡエンジンがＳＤＲＡＭ３にアクセスする場合、ＭＩＵ９を経てそれを実施する。たとえば、ＤＭＡエンジン４がＳＤＲＡＭ３から読み取るとすると、ＤＭＡエンジン４は、アービタによって並列ＤＭＡバス１６を介して一連の読取りをＭＩＵ９に対して発行することができるとき、それを実施する。読取りは、ＭＩＵ９内の先入れ先出しメモリ１７においてバッファされる。次いで、ＭＩＵ９は、ＳＤＲＡＭ３によって理解されるメモリ・コマンドに、読取りを変換する。たとえば、メモリ位置をＳＤＲＡＭ３から読み取ることができるようになる前に、ＳＤＲＡＭ３は、所望の位置を含むメモリ・バンクが「起動される」ことを必要とする可能性がある。ＭＩＵ９は、バンクが起動される必要があることを認識する知能を有し、ＳＤＲＡＭ３にバンクを起動させるのに必要な起動コマンドを生成する。起動コマンドは、その後のメモリ・アクセスの行アドレスと共に、ＳＤＲＡＭ３のコマンド・バス１８に供給される。起動コマンドと行アドレスをコマンド・バス１８上において送信した後、ＭＩＵ９は、適切なメモリ読取りコマンドをＳＤＲＡＭ３に送信する。その後のメモリ・アクセスの列アドレスが、コマンド・バス１８を介して、メモリ読取りコマンドと共に供給される。ＳＤＲＡＭ３は、バンクによって示される位置の内容、行アドレス、列アドレスを１６ビット幅の平行データ・バス１９を介してＭＩＵ９に戻す。コマンド・バス１８とデータ・バス１９は、共に、ＳＤＲＡＭ３の２重データ率（ＤＤＲ２）アクセス・ポートを備える。ＳＤＲＡＭ３へのすべての読取りと書込みは、この単一アクセス・ポート上において生じる。アクセス・ポートのオペレーションに関するさらなる情報については、ＪＥＤＥＣ  Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｔｅｃｈｎｏｌｏｇｙ  Ａｓｓｏｃｉａｔｉｏｎ（２５００  Ｗｉｌｓｏｎ  Ｂｏｕｌｅｖａｒｄ、Ａｒｌｉｎｇｔｏｎ、ＶＡ２２２０１）発行のＪＥＤＥＣ  Ｓｔａｎｄａｒｄ「ＤＤＲ２  ＳＤＲＡＭ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ」（ＪＥＳＤ７９−２Ａ、２００４年１月）を参照されたい（この主題は、参照によって本明細書に組み込まれている）。
【００２１】
アービタ・ブロック１０は、アービタ２０、タイマ２１、複数のスナップショットあたりトークン（ＴＰＳ）レジスタ２２〜２６、複数のタイム・アウト値（ＴＯＶ）レジスタ２７〜３１を含む。ＤＭＡエンジンのそれぞれについて、１つのＴＰＳレジスタと１つのＴＯＶレジスタが存在する。画像処理回路２の様々なブロックのオペレーションを制御するプロセッサ（図示せず）が、平行バス３２を介して、様々なＴＰＳレジスタとＴＯＶレジスタに対して書込みを行う。一実施形態では、このプロセッサは、ＡＲＭプロセッサであり、バス３２は、ＡＭＢＡ準拠の３２ビット・データ・バスである。
【００２２】
カメラ１が動作しているとき、様々な要求エンティティは、それぞれのＤＭＡエンジンを介してＤＭＡ要求エントリをそれぞれのキューにプッシュする。図では、ＤＭＡ要求エントリが、キューの既存ＤＭＡエントリの上にプッシュされる。各ＤＭＡ要求エントリは、ある量のデータをＳＤＲＡＭから読み取る要求、またはある量のデータをＳＤＲＡＭに書き込む要求である。データ量は、この例では、読取り要求エントリと書込み要求エントリの両方について、１６バイトである。各ＤＭＡ読取り要求エントリは、ＳＤＲＡＭから読み取られる第１バイトの開始アドレスと、要求が読取り要求であることを示すインジケータ・ビットを含む。各ＤＭＡ書込み要求エントリは、データが書き込まれるＳＤＲＡＭの第１位置の開始アドレス、ならびに要求が書込み要求であることを示すインジケータ・ビットを含む。
【００２３】
この例では、ＤＭＡエンジン４は書込み要求をキュー１１にプッシュする。ＤＭＡエンジン４は、アービタ・ブロック１０によってそのように実施する許可を与えられるとき、カメラの画像センサ（図示せず）から来る未処理画像情報をＳＤＲＡＭ３に移動させる。ＤＭＡエンジン５は、デジタル撮像パイプライン（ＤＩＰ）のＤＭＡエンジンである。ＤＭＡエンジン５は、ＤＭＡ読取り要求エントリをキュー１２にプッシュする。アービタ・ブロック１０によってそのように実施する許可を与えられるとき、ＤＭＡエンジン５は、ＳＤＲＡＭ３から未処理画像情報を読み取り、情報をＤＩＰに転送する。ＤＩＰは、画像情報を処理する。次いで、ＤＭＡエンジン５は、ＤＩＰの出力を再びＳＤＲＡＭ３に書き込む許可を与えられるように、ＤＭＡ書込み要求エントリをキュー１２にプッシュする。同様に、ズーム・エンジンのＤＭＡエンジン６は、読取り要求と書込み要求の両方をキュー１３にプッシュする。ＤＭＡエンジン７は、読取り要求をキュー１４にプッシュする。ＪＰＥＧエンジンのＤＭＡエンジン８は、読取り要求と書込み要求をキュー１５にプッシュする。図１は、ＤＭＡ要求エントリを含むキュー１１〜１５のそれぞれを示す。図１の「ＳＡ」表示は、ＤＭＡ要求エントリの「開始アドレス」部分を示す。
【００２４】
アービタ・ブロック１０は、ＤＭＡ要求エントリのどれがまず許可され、したがって、ＤＭＡエンジンのどれがまずＳＤＲＡＭ３にアクセスすることができるかを決定する。アービタ・ブロック１０は、どのＤＭＡ要求エントリが許可されたかを決定した後、専用肯定応答信号線によって、許可信号を適切なＤＭＡエンジンに戻す。許可信号は、それぞれの許可線によって他のＤＭＡエンジンに供給されることはない。許可線は、番号３３〜３７によって示されている。許可を受け取ったＤＭＡエンジンは、次いで、それ自体のキュー上において最も古いＤＭＡ要求を取り出す。図１の例における各キューの最も古いＤＭＡ要求エントリは、キューの末尾にあるＤＭＡ要求エントリである。ＤＭＡエンジンは、読取りおよび／または書込みをＭＩＵ９に対して発行することによって、上記で記述されたように、この最も古いＤＭＡ要求エントリをサービスする。ＭＩＵ９は、上記で参照されたＪＥＤＥＣ規格に従って、読取りおよび／または書込みをＳＤＲＡＭ３に適切なメモリ・コマンドに変換する。
【００２５】
ＤＭＡエンジンは、読取りおよび／または書込みをＭＩＵ９に対して発行することによって最も古いＤＭＡ要求をサービスするとき、専用実施信号線を介して、実施信号をアービタ・ブロック１０に送信する。実施信号線は、番号３８〜４２によって示されている。アービタ・ブロック１０が実施信号を受信すると、アービタ・ブロック１０は、許可された次のＤＭＡ要求エントリを決定する。
【００２６】
アービタ・ブロック１０が、どのＤＭＡ要求エントリが許可されたかを決定する方法は、以下の通りであり、図２に記載されている。まず（図２のステップ１００）、アービタ・ブロック１０が、各ＤＭＡキューから選択されるＤＭＡ要求エントリの数を決定するために、キューのそれぞれについてスナップショットあたりトークン（ＴＰＳ）値を使用する。この例では、スナップショットあたりトークン（ＴＰＳ）数は、ＤＭＡ要求エントリのユニットの数である。たとえば、２のスナップショットあたりトークン（ＴＰＳ）数は、２つのＤＭＡ要求エントリを示す。
【００２７】
選択されたＤＭＡ要求エントリのセットは、本明細書では、ＤＭＡ要求エントリの「スナップショット」と呼ばれる。スナップショットのすべてのＤＭＡ要求エントリは、他のあらゆるＤＭＡ要求エントリが許可される前に許可される。エントリの第１スナップショットが許可された後、エントリの第２スナップショットを選択することができる。ＤＭＡ要求エントリの第１スナップショットが許可された後でのみ、ＤＭＡ要求エントリの第２スナップショットを許可することができる。このプロセスは反復される。第１ＤＭＡエンジンが、第２ＤＭＡエンジンとしてメモリ・アクセス帯域幅の量の２倍を割り付けられる場合、第１ＤＭＡエンジンは、第２ＤＭＡエンジンが受信するのと同数程度のスナップショットあたりＤＭＡエントリを平均して割り付けられるべきである。したがってこの第１ＤＭＡエンジンのスナップショットあたりトークン（ＴＰＳ）値は、第２ＤＭＡエンジンのスナップショットあたりトークン（ＴＰＳ）値の２倍となるように設定される。
【００２８】
図３は、ＤＭＡ要求エントリの第１スナップショットが選択される一例を示す。ＤＭＡエンジン４〜８のそれぞれのスナップショットあたりトークン（ＴＰＳ）値は、それぞれ、１、４、２、２、６である。ＤＭＡ要求エントリは、キュー１１には存在しない。したがって、ＤＭＡ要求エントリは、キュー１１のスナップショットあたりトークン（ＴＰＳ１）が１である場合でも、キュー１１から選択されない。キュー１２の先頭の４つのＤＭＡエントリが選択され、キュー１３の先頭の２つのＤＭＡエントリが選択され、キュー１４の先頭の２つのＤＭＡエントリが選択され、キュー１５の先頭の３つのＤＭＡエントリが選択される。キュー１５の３つのＤＭＡエントリのみが、ＤＭＡエンジン８のＴＰＳ値が６である場合でも選択される。これは、キュー１５が、３つのＤＭＡエントリのみを含むからである。図３の線２００が、選択されたＤＭＡエントリを表している。
【００２９】
ＤＭＡエントリの第１スナップショットが選択された後、アービタ２０は、以下のように、許可されたＤＭＡ要求エントリを選択する（図２のステップ１０１）。特定のＤＭＡエンジンのＤＭＡ要求エントリが許可されたとき（たとえば、ＤＭＡエンジンから実施信号を受信することによって示される）、ＤＭＡエンジンのサービス・タイム・アウト値ＳＴＯＶ（図示せず）が、タイマ２１によって維持される現在時間に、ＤＭＡエンジンに対応するＴＯＶレジスタに記憶されているタイム・アウト値ＴＯＶを加えたものに再設定される。ＤＭＡエンジンが、サービス・タイム・アウト値ＳＴＯＶが到着する時間（タイマ２１によって示される）までに許可されたそれ自体の次のＤＭＡ要求エントリを有していない場合、アービタ２０は、そのＤＭＡエンジンの最も古いＤＭＡ要求エントリであると認められた次のＤＭＡ要求エントリを選択する。したがって、アービタ２０は、ＤＭＡキューのいずれかがタイム・アウトしたかを確認するために検査する（図２のステップ１０１）。
【００３０】
ＤＭＡキューがタイム・アウトした場合、タイム・アウトしたＤＭＡキューの次のＤＭＡエントリは、許可された次のＤＭＡ要求である。タイム・アウトしたＤＭＡキューがない場合、アービタ２０は、ＳＤＲＡＭアクセス・オーバーヘッドを最小限に抑えられると認められ、スナップショットの次のＤＭＡ要求エントリを選択する（図２のステップ１０１）。ＳＤＲＡＭアクセス・オーバーヘッドを最小限に抑える方法が、以下においてさらに詳細に説明される。スナップショットのすべてのＤＭＡ要求エントリが許可されていない場合（図２のステップ１０４）、ＤＭＡ要求エントリを許可するプロセス（ステップ１０１）は、スナップショットのすべてのＤＭＡ要求エントリが許可されるまで続行される。スナップショットのすべてのＤＭＡ要求エントリが許可された後、処理は、ステップ１００に戻り、ＤＭＡ要求のその後のスナップショットが選択される。
【００３１】
ＤＭＡ要求エントリがスナップショット内において許可される順序は、メモリ・アクセス・オーバーヘッドが低減される、または最小限に抑えられるように選択される。ＤＭＡ要求エントリの許可を行うある種の順序では、メモリ・アクセス・オーバーヘッドが他の順序より多くなることもある。アービタ２０は、アクセスされる特定のタイプのメモリについて、このオーバーヘッドを低減する、または最小限に抑えるＤＭＡ要求エントリ許可の順序を選択することができる知能を有する。これを実施する方法を、図４に関して説明する。
【００３２】
図４は、通常のＳＤＲＡＭ集積回路３０を示す。ＳＤＲＡＭ３０は、メモリ・セルの４つのバンク３１〜３４を有する６４メガバイトのＳＤＲＡＭである。各バンクは、１６メガバイトのメモリ・セルを有する。各バンクは、メモリ・セルの多くの１ｋバイトのページで作成される。第１バンクの１ページがアクセスされ、次のアクセスが同じバンクの同じページへのアクセスである場合、ＳＤＲＡＭ集積回路は、バンクがプレチャージされる、または起動されることを必要としない（リフレッシュなど、ある他の介入非アクセス関係事象が存在しない限り）。第２アクセスは、第２アクセスを実施することができるようになる前にＳＤＲＡＭに送信されなければならない任意の特別なプレチャージ・コマンドまたは任意の特別な起動コマンドを有さずに、第１アクセスに続くことができる。
【００３３】
しかし、第１アクセスがバンク内のページであり、次のアクセスが同じバンクの別のページである場合、第２ページは、第２アクセスを実施することができるようになる前に、起動されなければならない。起動コマンドが、コマンド・バス１８を介してＳＤＲＡＭ３に送信される。第２ページが起動された後でのみ、第２アクセスを実施することができる。したがって、この順序のメモリ・アクセスを実施することに対して、メモリ・アクセス帯域幅ペナルティが存在する。
【００３４】
第１アクセスが第１バンク内のページであり、次のアクセスが別のバンクのページである場合、メモリ・アクセス帯域幅ペナルティが存在することも、存在しないこともある。第２アクセスを実施することができるようになる前に、第２ページは起動されなければならない。しかし、読取り遅延または書込み遅延の起動が満たされるように、より早期にこの起動を実施するようにＳＤＲＡＭに命令することができる。読取り時間または書込み時間の起動の前に、起動コマンドをコマンド・バス１８を介してＳＤＲＡＭに送信することができる場合（ある以前の読取りアクセスまたは書込みアクセスのためのデータ転送と重なる）、このアクセス順序に関連するメモリ・アクセス帯域幅ペナルティは、最小限に抑えられる。一方、読取り遅延または書込み遅延の起動を満たすように十分早く第２アクセスの起動コマンドをＳＤＲＡＭに送信することができない場合、第２アクセスを遅延させ、メモリ・アクセス帯域幅ペナルティを構築する。アービタ２０は、ＳＤＲＡＭ３にアクセスすることに伴うメモリ・アクセス帯域幅ペナルティが低減される、または最小限に抑えられるように、第１スナップショット２００内のＤＭＡエントリの許可をどのように順序付けるかを認識する（図３参照）。
【００３５】
一実施形態では、アービタ２０は、スナップショットのＤＭＡエントリがそれらの様々なキューに依然としてある間、スナップショットのすべてのＤＭＡエントリの開始アドレスを調査する。アービタ２０は、キューの任意のＤＭＡエントリを除去し、除去されたＤＭＡエントリがスナップショット内にあるとすれば、ＤＭＡエントリがそのキュー上において最も底の（最も古い）ＤＭＡエントリでない場合でも、そのＤＭＡエントリをそれ自体の対応するＤＭＡエンジンに渡すことができる。これにより、アービタ２０は、スナップショットのＤＭＡエントリを除去し、メモリ・アクセス帯域幅ペナルティが低減される、または最小限に抑えられるような任意の順序でそれらをＤＭＡエンジンに渡すことが可能になる。
【００３６】
図５は、ＤＭＡ要求エントリが、メモリ・アクセスを行わせるコマンドに変換される方法を示す流れ図である。まず（図５のステップ１０２）、それ自体の許可線を介して許可を受け取るＤＭＡエンジンが、ＤＭＡエンジンがＭＩＵ９から読み取っている、または書き込んでいるかのように、ＤＭＡバス１６上においてメモリ読取りまたはメモリ書込みを発行する。様々なＤＭＡエンジンからのメモリ読取りとメモリ書込みは、ＭＩＵ９内のＦＩＦＯ１７において累積する。次に（図５のステップ１０３）、ＭＩＵ９は、ＦＩＦＯ１７のメモリ読取りとメモリ書込みのストリームを調査し、任意の必要なプレチャージをパイプライン化し、そうすることが可能であれば、以前のメモリ・アクセスを用いてコマンドを起動する。したがって、アービタ２０とＭＩＵ９は、メモリ・アクセス・オーバーヘッドを低減するために使用される特定のＳＤＲＡＭの特異性に対処するように、共に作用する。ＭＩＵ９は、ＦＩＦＯ１７のメモリ読取りとメモリ書込みを、コマンド・バス１８上においてＳＤＲＡＭ３に供給される適切なメモリ・コマンドに変換する。ＭＩＵ９はまた、メモリ書込みのためにデータ・バス１９を介してデータをＳＤＲＡＭ３に供給し、メモリ読取りのためにデータ・バス１９を介してデータをＳＤＲＡＭ３から受け取る。
【００３７】
図６は、図３のＤＭＡエントリの第１スナップショット２００が選択された直後に、ＤＭＡ要求エントリがキュー１１、１５にプッシュされることを示す。ＤＭＡ要求エントリ２０１は、キュー１１にプッシュされる新しいＤＭＡ要求エントリである。この例では、キュー１５にプッシュされる新しいＤＭＡ要求エントリも存在する。上記で詳しく説明されたように、第１スナップショットのすべてのエントリが許可され、その後、これらの新しくプッシュされるＤＭＡ要求エントリのいずれかが、スナップショットに組み込まれるために選択される。
【００３８】
図７は、ＤＭＡ要求エントリの第２スナップショット２０２が取り入れられるその後のステップを示す。再び、アービタ２０は、レジスタ２７〜３１内のスナップショットあたりトークン（ＴＰＳ）値を使用して、存在するならば、各キューから選択されるＤＭＡ要求エントリの数を決定する。ＤＭＡエンジン４のスナップショットあたりトークン値ＴＰＳ１は１であり、したがって、新しく追加されたＤＭＡエントリ２０１は、第２スナップショットに組み込まれるために選択される。ＤＭＡエンジン５のスナップショットあたりトークン値ＴＰＳ２は４であるが、キュー１２には２つのＤＭＡエントリしか存在しない。したがって、２つのＤＭＡエントリのみがキュー１２から選択される。ＤＭＡエンジン８のスナップショットあたりトークンＴＰＳ５は６であり、キュー１５には６つのＤＭＡエントリが存在し、したがって、６つのＤＭＡエントリが、キュー１５から選択される。選択されたＤＭＡ要求エントリは、図７において線２０２で囲まれて示されている。
【００３９】
図８は、図３、６、７の状況において出現することがあるレイテンシの問題を示す。キュー１１からＤＭＡエントリを許可する最大時間量は、メモリ・アクセス時間のほぼ２つのスナップショットに値する。これは、ＤＭＡ要求エントリ２０１などのＤＭＡ要求エントリが、第１スナップショットのエントリの選択直後に到達し、ＤＭＡ要求エントリ２０１が、第２スナップショットにおいて許可された最後のＤＭＡ要求エントリになる状況において生じる。図８は、そのような状況を示す。
【００４０】
図８の状況に関連するレイテンシをＤＭＡエンジン４によって許容することができない場合、キュー１１のタイム・アウト値ＴＯＶ１は、ＤＭＡキュー１１がより早い時間にタイム・アウトするように設定される。画像センサからの未処理画像情報を転送し、その未処理画像情報をＳＤＲＡＭ３の中に配置するＤＭＡエンジン４は、たとえば、データをＳＤＲＡＭ３に転送しようとするとき、比較的少量のレイテンシしか許容することができないこともある。ＤＭＡエンジン４が、未処理画像情報をＳＤＲＡＭ３に書き込もうとしているときに、過度に長期に待たされる場合、その未処理画像情報は、上書きされる可能性があり、それにより、未処理画像情報が失われることになる。こうしたレイテンシの問題は、回避されるべきである。
【００４１】
図９は、タイム・アウト値ＴＯＶ１が、１１個のＤＭＡ要求（第１スナップショットの１１個のＤＡＭ要求）を許可するのにかかる時間量より小さく設定される一例を示す。したがって、キュー１１の末尾にないエントリがこの時間量では認められていないので、ＤＭＡキュー１１は、ＤＭＡ要求エントリの第１スナップショットの許可中にタイム・アウトする。ＤＭＡ要求エントリの第２スナップショットが選択され、第２スナップショットにおけるどのＤＭＡ要求エントリが認められたかの選択が開始されるとき、ＤＭＡ要求エントリ２０１は、キューがタイム・アウトしていない第２スナップショットの他のＤＭＡ要求エントリよりも前に認められたために選択される。図９のＤＭＡ要求エントリ２０１は、図８に示される第２スナップショットの１３個のＤＭＡ要求エントリの許可の終了時ではなく、第２スナップショットの１３個のＤＭＡ要求エントリの許可の開始時に許可されたことに留意されたい。
【００４２】
本発明は、説明の目的のためにある特定の実施形態に関連して説明されてきたが、本発明は、それに限定されるものではない。ＤＭＡ要求エントリのスナップショットを選択する技法は、デジタル・カメラでの使用に限定されず、それよりもむしろメモリへのアクセスを制御するのに有用な汎用技法である。メモリにアクセスすることを要求するエンティティは、いくつかの実施形態ではＤＭＡエンジンとすることができるが、他のタイプのエンティティを要求エンティティとすることもできる。プロセッサや特定用途状態機械を要求エンティティとすることもできる。本発明は、１つのメモリ集積回路へのアクセスを制御することに関連して説明されたが、本発明は、複数の集積回路へのアクセスを制御するのに有用である。アクセスが制御されるメモリは、アービタ回路とは別の集積回路である必要はなく、それよりもむしろアービタ回路とメモリの両方を同じ集積回路に組み込むことができる。バス１６は、バス・コンダクタの単一グループが、ＤＭＡエンジン４〜８のうちの選択された１つからＭＩＵ９へ情報を搬送するバスとして示されているが、これは必要ではない。ＤＭＡバス１６は、上において信号が双方向に渡されるコンダクタを有する必要はない。たとえば、ＤＭＡエンジン４〜８の出力は、マルチプレクサのデータ入力リードに供給することができ、マルチプレクサの選択入力リードは、ＤＭＡエンジン４〜８のうちの選択された１つをＭＩＵ９に結合するように、アービタによって制御することができる。メモリ・アクセス帯域幅を割り付けるためにスナップショットを使用する技法が、デジタル・カメラと関連して上記で説明されたが、この技法は、メモリを含む任意のシステムにおいて適用可能である。したがって、特許請求の範囲において詳しく記載される本発明の範囲から逸脱せずに、ここに説明した実施形態の様々な特徴の変更形態、適合、および組合せを実施することができる。
【図面の簡単な説明】
【００４３】
【図１】本発明の一実施形態によるデジタル・カメラの図である。
【図２】スナップショットに組み込まれるＤＭＡ要求エントリを選択し、スナップショットのＤＭＡ要求エントリをその後許可する簡略化された流れ図である。
【図３】ＤＭＡ要求エントリの２つの連続するスナップショットの選択を示す図である。
【図４】ＳＤＲＡＭ集積回路の１つの可能な構造を示す図である。
【図５】どのように許可されたＤＭＡ要求エントリがＭＩＵを通過し、ＭＩＵによってメモリ・コマンドに変換されるかを示す簡略化された流れ図である。
【図６】ＤＭＡ要求エントリの２つの連続するスナップショットの選択を示す図である。
【図７】ＤＭＡ要求エントリの２つの連続するスナップショットの選択を示す図である。
【図８】図３、６、および７の例に付随する潜在的なレイテンシの問題を示す図である。
【図９】本発明の一実施形態に従って、図８に示されたレイテンシの問題が解決される方法を示す図である。
【図１】
2007525876.tif 000003
【図２】
2007525876.tif 000004
【図３】
2007525876.tif 000005
【図４】
2007525876.tif 000006
【図５】
2007525876.tif 000007
【図６】
2007525876.tif 000008
【図７】
2007525876.tif 000009
【図８】
2007525876.tif 000010
【図９】
2007525876.tif 000011