(57)【特許請求の範囲】
【請求項１】
第1のレジスタおよび第1のメモリ位置を識別する第1の命令を記憶するメモリであり、前記第1の命令によってプロセッサは、
前記第1のメモリ位置から第1のアイテムをロードするステップと、
前記第1のレジスタにおけるデータアイテムをシフトし、前記第1のレジスタにおける最初の位置からデータアイテムのうちの第1のデータアイテムを削除するために、シフト操作を実行するステップと、
前記第1のレジスタの最後の位置に前記第1のアイテムを挿入するために、挿入操作を実行するステップと
を含む操作を実行可能であり、前記第1の命令の実行が、前記プロセッサの単一の実行サイクルで完了する、メモリ
を備え、
前記第1の命令が、ビデオデータにおいて動き推定を実行するための他の実行可能な命令と連携して実行可能である、
装置。
【請求項２】
前記第1のアイテムの長さが1バイトである、請求項1に記載の装置。
【請求項３】
前記シフト操作を実行するステップは、前記プロセッサのシフタによって実行され、このシフタは、前記第1のレジスタからデータを受信して、データから第1のデータアイテムを削除し、かつデータのうちの他のデータアイテムの順序を維持するように構成されていて、
更に、前記シフタの出力および前記第1のメモリ位置からの第1のアイテムを受信するように構成されたマルチプレクサと、
前記マルチプレクサのマルチプレクサ出力を受信するように構成された第2のレジスタとを備えている、
請求項1に記載の装置。
【請求項４】
前記第1のアイテムは第2のレジスタの最後の位置に存在し、かつ他のデータアイテムは第2のレジスタの他の位置に順序を維持して存在する、
請求項3に記載の装置。
【請求項５】
前記第1のアイテムは、第1のメモリ位置からマルチプレクサへの第1のアイテムのロードの間に、位置合わせされ、複製され、ゼロパディングされ、符号拡張され、またはこれらの組み合わせが行われる、
請求項3に記載の装置。
【請求項６】
前記第1の命令の前記実行が前記プロセッサのロードハードウェアユニットによって実行され、前記シフト操作および挿入操作は、第1のレジスタからのデータの一部分を第1のメモリ位置からのデータの一部分に置き換える、
請求項1に記載の装置。
【請求項７】
前記第1の命令および第2の命令を含む超長命令語(VLIW)パケットをさらに備える、請求項1に記載の装置。
【請求項８】
前記第2の命令が第2のレジスタおよび第2のメモリ位置を識別し、前記第2の命令が前記プロセッサによって実行されると、第2のアイテムが前記第2のメモリ位置からロードされ、前記第2のレジスタにおけるデータアイテムをシフトし、前記第2のレジスタにおける最初の位置から前記第2のレジスタにおけるデータアイテムのうちの特定の第1のデータアイテムを削除するために、第2のシフト操作が実行され、前記第2のアイテムを前記第2のレジスタの最後の位置に挿入するために、第2の挿入操作が実行され、前記第2の命令が前記第1の命令の実行と並行して実行される、請求項7に記載の装置。
【請求項９】
前記第1の命令が、フィルタリング演算を実行するための他の実行可能な命令と連携して実行可能である、請求項1に記載の装置。
【請求項１０】
前記フィルタリング演算が有限インパルス応答(FIR)演算である、請求項9に記載の装置。
【請求項１１】
第1のレジスタおよび第1のメモリ位置を識別する第1の命令を受信するステップと、
プロセッサを使用して前記第1の命令を実行するステップであり、
前記第1のメモリ位置から第1のアイテムをロードするステップと、
前記第1のレジスタにおけるデータアイテムをシフトし、前記第1のレジスタにおける最初の位置からデータアイテムのうちの第1のデータアイテムを削除するステップと、
前記第1のアイテムを前記第1のレジスタの最後の位置に挿入するステップと
を含むステップと
を含み、前記第1の命令の実行が、前記プロセッサの単一の実行サイクルで完了し、
前記第1の命令が、ビデオデータにおいて動き推定を実行するための他の実行可能な命令と連携して実行可能である、
方法。
【請求項１２】
第2のレジスタおよび第2のメモリ位置を識別する第2の命令を受信するステップと、
前記第2の命令を、前記第1の命令の前記実行と並行して実行するステップであり、
前記第2のメモリ位置から第2のアイテムをロードするステップと、
前記第2のレジスタにおけるデータアイテムをシフトし、前記第2のレジスタにおける最初の位置からデータアイテムのうちの特定の第1のデータアイテムを削除するステップと、
前記第2のアイテムを前記第2のレジスタの最後の位置に挿入するステップと
を含むステップと
をさらに含む請求項11に記載の方法。
【請求項１３】
乗算命令および加算命令を、前記第1の命令を実行するステップと並行して実行するステップをさらに含む請求項11に記載の方法。
【請求項１４】
絶対値差分和演算を、前記第1の命令を実行するステップと並行して実行するステップをさらに含む請求項11に記載の方法。
【請求項１５】
前記第1のレジスタが先入れ先出し(FIFO)バッファとして動作する、請求項11に記載の方法。
【請求項１６】
第1のレジスタおよび第1のメモリ位置を識別する第1の命令を記憶するための手段と、
前記第1の命令を実行するための手段であり、
前記第1のメモリ位置から第1のアイテムをロードするための手段と、
前記第1のレジスタにおけるデータアイテムをシフトし、前記第1のレジスタにおける最初の位置からデータアイテムのうちの第1のデータアイテムを削除するための手段と、
前記第1のアイテムを前記第1のレジスタの最後の位置に挿入するための手段と
を備える手段と
を備え、前記第1の命令の実行が、前記第1の命令を実行するための前記手段の単一の実行サイクルで完了し、
前記第1の命令が、ビデオデータにおいて動き推定を実行するための他の実行可能な命令と連携して実行可能である、
装置。
【請求項１７】
第2の命令を、前記第1の命令を実行することと並行して実行するための手段であり、前記第2の命令が第2のレジスタおよび第2のメモリ位置を識別する、手段をさらに備える請求項16に記載の装置。
【請求項１８】
プロセッサによって実行されると、前記プロセッサに、
第1のレジスタおよび第1のメモリ位置を識別する第1の命令を受信させ、
前記第1の命令を実行させるプログラムコードであり、前記第1の命令を実行するステップが、
前記第1のメモリ位置から第1のアイテムをロードするステップと、
前記第1のレジスタにおけるデータアイテムをシフトし、前記第1のレジスタにおける最初の位置からデータアイテムのうちの第1のデータアイテムを削除するステップと、
前記第1のアイテムを前記第1のレジスタの最後の位置に挿入するステップと
を含み、
前記第1の命令の実行が、前記プロセッサの単一の実行サイクルで完了し、
前記第1の命令が、ビデオデータにおいて動き推定を実行するための他の実行可能な命令と連携して実行可能である、
プログラムコードを記憶するコンピュータ可読媒体。
【請求項１９】
第1のアイテムの長さが1ワードである、請求項18に記載のコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、一般に、先入れ先出し(FIFO)ロード命令に関する。
【背景技術】
【０００２】
技術の進歩によって、コンピューティングデバイスはより小型にかつより高性能になっている。たとえば、現在、小型で、軽量で、ユーザが簡単に持ち運べる、携帯式のワイヤレス電話、携帯情報端末(PDA)、およびページングデバイスなどの、ワイヤレスコンピューティングデバイスを含む、様々な携帯式の個人向けコンピューティングデバイスが存在する。より具体的には、セルラー電話やインターネットプロトコル(IP)電話などの携帯式のワイヤレス電話は、ボイスおよびデータパケットを、ワイヤレスネットワークを介して通信することができる。さらに、多くのそのようなワイヤレス電話には、内部に他の種類のデバイスが組み込まれている。たとえば、ワイヤレス電話は、デジタルスチルカメラ、デジタルビデオカメラ、デジタルレコーダ、およびオーディオファイルプレーヤも含み得る。また、そのようなワイヤレス電話は、ウェブブラウザアプリケーションなど、インターネットにアクセスするために使用され得るソフトウェアアプリケーションを含む実行可能な命令を処理することができる。したがって、これらのワイヤレス電話は、高いコンピューティング能力を含み得る。
【０００３】
ワイヤレス電話およびデジタルカメラなどのマルチメディアデバイスは、マルチメディアデジタル信号プロセッサを含むことができる。マルチメディアデジタル信号プロセッサによって実行される1つのプロセスは、有限インパルス応答(FIR)フィルタリングである。FIRフィルタリングでは、スライディングウィンドウFIRは、入力データストリームに再帰的に適用され得、各ウィンドウにおけるデータが積和演算(multiply and accumulate operations)にかけられる。たとえば、メモリに記憶された入力データストリームがロードされ得、第1の出力を取得するために、スライディングウィンドウフィルタがデータストリームの第1の部分に適用され得る。次に、データストリームが(たとえば、残りのデータストリーム上にウィンドウを「スライドさせる」ために)ある値だけシフトされ得、第2の出力を取得するために、スライディングウィンドウフィルタがデータストリームの第2の部分に適用され得る。マルチメディア信号プロセッサによって実行される別のプロセスは、動き推定であり、これによって、各ウィンドウにおけるデータが絶対差および累積演算(absolute difference and accumulate operations)にかけられ得る。
【０００４】
現在のFIRおよび動き推定技法は、任意のバイトアラインメントでのデータストリームのメモリへのロードをサポートするハードウェア(たとえば、任意のバイトアドレスからロードアライン操作(load align operation)を実行するためのカスタムハードウェア)を使用し得る。しかしながら、そのようなカスタムハードウェアは、高価であり得、カスタムハードウェアによって占められる追加のスペースのために、小さいデバイス(たとえば、携帯電話)では望ましくない場合がある。他の技法は、メモリからターゲットデータストリームをロードして、シフト操作を実行するために複数の命令を使用することを採用し得る。たとえば、第1の命令は、メモリから第1のレジスタ(たとえば、RF(0))にターゲットデータストリーム(たとえば、D7 D6 … D0)をロードし、第2の命令は、ターゲットデータストリームにおいて左シフト操作を実行し、第2のレジスタ(たとえば、RF(1))に前もって記憶されたデータにおいて右シフト操作を実行することができる。次いで、シフトされたターゲットデータが挿入され、第3のレジスタ(たとえば、RF(2))にシフトされ得る。
【発明の概要】
【課題を解決するための手段】
【０００５】
データのロード、シフト(すなわち、アラインメント)、および挿入操作を実行する単一の命令が開示される。たとえば、電子デバイス(たとえば、モバイルデバイスおよびデジタルカメラなど)でFIRフィルタリングおよび動き推定を実行するための他の実行可能な命令と連動して、データのロード、シフト、および挿入操作を実行するために、命令が使用され得る。たとえば、FIRフィルタリングの間に、積和演算が実行され得る。別の例として、動き推定の間に、絶対値差分和演算が実行され得る。一実装形態では、命令は、レジスタおよびメモリ位置を識別することができる。レジスタは、前もって記憶されたデータ(たとえば、FIFOバッファを表す)を含み得、メモリ位置は、レジスタに挿入されるべきアイテム(たとえば、1バイト、ハーフワード、または1ワード)を含み得る。命令がプロセッサによって実行されると、アイテムがメモリ位置からレジスタにロードされ得、レジスタにおける前のデータをシフトし、アイテムをレジスタに挿入するために、シフトおよび挿入操作が実行され得る。ロード操作、シフト操作、および挿入操作は、命令の同じ実行サイクルで実行され得る。さらに、命令は、超長命令語(VLIW)アーキテクチャの命令レベルの並列性を利用することができる。たとえば、単一のVLIWパケットは、並行して実行可能なそのような複数の命令を含むことができる。
【０００６】
特定の実施形態では、装置は、レジスタおよびメモリ位置を識別する命令を記憶するメモリを含む。命令がプロセッサによって実行されると、アイテムがメモリ位置からロードされ得、レジスタにおけるデータをシフトし、アイテムをレジスタに挿入するために、シフトおよび挿入操作が実行され得る。
【０００７】
別の特定の実施形態では、方法は、レジスタおよびメモリ位置を識別する命令を受信するステップを含む。この方法は、命令を実行するステップを含む。命令を実行するステップは、メモリ位置からアイテムをロードするステップと、レジスタにおけるデータをシフトするステップと、アイテムをレジスタに挿入するステップとを含む。
【０００８】
別の特定の実施形態では、装置は、レジスタおよびメモリ位置を識別する命令を記憶するための手段を含む。この装置は、命令を実行するための手段も含む。命令を実行するための手段は、メモリ位置からアイテムをロードするための手段と、レジスタにおけるデータをシフトするための手段と、アイテムをレジスタに挿入するための手段とを含む。
【０００９】
別の特定の実施形態では、非一時的コンピュータ可読媒体は、プロセッサによって実行されると、プロセッサに、レジスタおよびメモリ位置を識別する単一の命令を受信させ、単一の命令を実行させるプログラムコードを含む。単一の命令を実行するステップは、メモリ位置からアイテムをロードするステップと、レジスタにおけるデータをシフトするステップと、アイテムをレジスタに挿入するステップとを含む。
【００１０】
開示された実施形態のうちの少なくとも1つによって提供される1つの特定の利点は、データのロード、シフト(すなわち、アラインメント)、および挿入機能を実行するための単一の命令の使用による、アプリケーション(たとえば、埋込み型マルチメディア処理アプリケーション)のためのより少ない実行サイクルおよびコードサイズの低減である。別の特定の利点は、余分のカスタマイズされたハードウェアの使用なしに、不整合なデータをサポートする開示された命令の能力による、より小さく、より安価で、あまり電力集約型でない電子デバイスである。
【００１１】
本開示の他の態様、利点、および特徴は、以下のセクション、すなわち、図面の簡単な説明、発明を実施するための形態、および特許請求の範囲を含む、本出願全体の検討後に明らかになろう。
【図面の簡単な説明】
【００１２】
【図１】レジスタおよびメモリ位置を識別する命令を実行するステップを示す図である。
【図２】レジスタおよびメモリ位置を識別する命令を実行するステップを示す別の図である。
【図３】レジスタおよびメモリ位置を識別する命令を記憶するメモリを含むシステムの特定の例示的な実施形態の図である。
【図４】レジスタおよびメモリ位置を識別する命令を実行する方法の特定の例示的な実施形態のフローチャートである。
【図５】レジスタおよびメモリ位置を識別する命令を実行するステップを示す別の図である。
【図６】レジスタおよびメモリ位置を識別する命令を実行するよう動作可能なプロセッサを含むワイヤレスデバイスの特定の実施形態のブロック図である。
【発明を実施するための形態】
【００１３】
データのロード、シフト、および挿入機能を実行するための命令は、レジスタおよびメモリ位置を識別することができる。命令が実行されると、アイテム(たとえば、1バイト、ハーフワードまたは1ワード)がメモリ位置からロードされ、レジスタにおけるデータをシフトし、アイテムをレジスタに挿入するために、シフトおよび挿入操作が実行され得る。ロード、シフト、および挿入操作は、同じ実行サイクルの間に実行され得る。シフトおよび挿入操作は、アイテムがレジスタに挿入される空間を作成するために、レジスタからデータの一部分を削除することができる。削除された部分は、データ要素が先入れ先出し方式(FIFO)バッファの前から「ポンと出される」ことを表し、新しく追加されたアイテムは、データ要素がFIFOバッファの後ろに「押し込まれる」ことを表し得る。命令は、レジスタに記憶されたデータにおいてフィルタリング演算を実行するために、他の実行可能な命令(たとえば、積和命令)と連動して実行可能であり得る。フィルタリング演算は、有限インパルス応答(FIR)演算(たとえば、モデム、音声コーダ/デコーダ(CODEC)、音声コーデック、画像プロセッサ、またはビデオコーデックによって使用される)でもよい。命令は、レジスタに記憶されたデータにおいて動き推定を実行するために、他の実行可能な命令(たとえば、絶対値差分和命令)と連動して実行可能でもあり得る。
【００１４】
図1〜図2は、レジスタおよびメモリ位置を識別するFIFOロード命令の実行の2つの例を示す。図1を参照すると、FIFOロード命令の実行の第1の例示的な例が開示されて、全般が100で表される。
【００１５】
FIFOロード命令は、レジスタおよびメモリ位置を識別することができ、メモリ位置は、レジスタにロードされるアイテムを含む。レジスタは、レジスタ対または単一のレジスタでもよい。たとえば、図1に示すように、FIFOロード命令は、「R1:0=MEM_FIFO(Rs)」とすることができ、ただし、「MEM_FIFO」は、FIFOロード命令のオペコードであり、「Rs」は、アイテム150のアドレスを記憶するメモリ102におけるレジスタであり、「R1」は、アイテム150がロードされるデータ144、143、142、および141(たとえば、X4 X3 X2 X1)を含むレジスタ140である。レジスタ140は、データ141〜144に関するFIFOバッファとして動作し得る(たとえば、データX1 141はFIFOバッファの前に位置し得、データX4はFIFOバッファの後ろに位置し得る)。
【００１６】
特定の実施形態では、アイテム150は、1バイト、ハーフワード、または1ワードとすることができる。FIFOロード命令は、アイテムが1バイトであるか、ハーフワードであるか、または1ワードであるかを指定することもできる。アイテムが任意の他の長さでもよいことに留意されたい。たとえば、「MEMB_FIFO」オペコードは、アイテム150が1バイトであることを示し得(たとえば、命令は「R0=MEMB_FIFO(Rs)」であり得る)、「MEMH_FIFO」オペコードは、アイテム150がハーフワードであることを示し得(たとえば、命令はR1=MEMH_FIFO(Rs)であり得る)、「MEMW_FIFO」オペコードは、アイテム150が1ワードであることを示し得る。命令は、レジスタ140におけるデータ144〜141においてフィルタリング演算を実行するための他の実行可能な命令と連携してプロセッサの実行ユニットまたはロード/ストアユニットによって実行可能であり得る。フィルタリング演算は、(たとえば、モバイルデバイスまたはデジタルカメラのビデオデータの)有限インパルス応答フィルタリングまたは動き推定を実行するために使用され得る。たとえば、命令は、図3を参照しながらさらに説明するように、1つのビデオフレームの複数の領域のまたは複数のビデオフレームの動き推定を並行して実行するための他の実行可能な命令と連携して使用され得る。
【００１７】
動作中、アイテム150についてのレジスタ140およびメモリ位置を識別するFIFOロード命令が、メモリ102(たとえば、ランダムアクセスメモリ(RAM))から取り出され、プロセッサの実行ユニットまたはロード/ストアユニット(たとえば、ロードハードウェアユニットまたはロードアライナーユニット)によって実行され得る。実行されると、FIFOロード命令によって、アイテム150は、図示のように、メモリ位置からロードされ得る。さらに、レジスタ140におけるデータ141〜144をシフトし、アイテム150をレジスタ140に挿入するために、シフトおよび挿入操作が実行され得る。特定の実施形態では、プロセッサの同じ実行サイクルの間に、メモリ位置からアイテム150をロードするステップ、ならびにシフトおよび挿入操作が実行され得る。
【００１８】
図1に示すように、メモリ位置からアイテム150をロードした後、レジスタ140におけるデータ141〜144は、右にシフトされ得、アイテム150は、レジスタ140に記憶されたFIFOバッファの後ろに挿入され得る。たとえば、レジスタ140におけるデータ144〜141(すなわち、X4 X3 X2 X1)は右にシフトされ得、それによって、図1に示すように、データ141(すなわち、X1)がレジスタ140から削除され、アイテム150がレジスタ140に挿入され得る。したがって、図1のMEM_FIFO命令は、単一の命令の使用によって、データのロード、シフト、および挿入操作を可能にすることができる。
【００１９】
図2を参照すると、FIFOロード命令「R1:0=MEM_FIFO(Rs)」の実行の第2の例示的な例が開示されて、全般が200で表される。図1は、レジスタ140の左側(たとえば、最上位部分)にアイテム150を挿入するために空間を作るための右シフト操作を示すが、図2は、レジスタ140の右側(たとえば、最下位部分)にアイテム150を挿入するために空間を作るための左シフト操作を示す。FIFOロード命令が実行されると、アイテム150がメモリ位置からロードされ得、レジスタ140におけるデータ141〜144をシフトするために左シフト操作が実行され得、アイテム150をレジスタ140に挿入するために挿入操作が実行され得る。したがって、開示されたFIFOロード命令は、レジスタにおける左から右と右から左との両方の方向に配向されるFIFOバッファで使用され得る。
【００２０】
図3を参照すると、複数のFIFOロード命令351、352を含む命令パケット(たとえば、VLIW命令パケット350)を記憶し、処理するように動作可能なシステムの特定の例示的な実施形態が開示されて、全般が300で表される。
【００２１】
システム300は、命令パケット350を記憶するメモリ102を含み得る。メモリ102は、バスインターフェース308を介して命令キャッシュ310に結合され得る。第1のFIFOロード命令351は、第1のアイテム150(たとえば、アイテム1と示される)についての第1のレジスタ(たとえば、R1と示されるレジスタ140)および第1のメモリ位置を識別することができる。第2のFIFOロード命令352は、第2のアイテム360(たとえば、アイテム2と示される)についての第2のレジスタ(たとえば、R2と示されるレジスタ340)および第2のメモリ位置を識別することができる。アイテム150、360は、メモリ102および/またはデータキャッシュ312に記憶され得る。たとえば、図3は、第1のアイテム150がメモリ102に記憶され、第2のアイテム360がデータキャッシュ312とメモリ102の両方に記憶されることを示す。第1のレジスタ140および第2のレジスタ340は、汎用レジスタファイル326の一部であってもよい。特定の実施形態では、システム300の全部または一部分が、プロセッサに統合され得る。あるいは、メモリ102およびバス330は、プロセッサの外部にあってもよい。
【００２２】
メモリ102は、バスインターフェース308を介して、命令キャッシュ310に命令パケット350を送信することができる。データキャッシュ312も、バスインターフェース308を介してメモリ102に結合されてよい。特定の実施形態では、メモリ102は、データにおいてフィルタリング演算を実行する、データにおいて有限インパルス応答演算を実行する、ビデオデータの動き推定、またはそれらの任意の組合せを実行するように動作可能であるプロセッサ(たとえば、デジタル信号プロセッサ)によってアクセス可能であり得る。プロセッサは、データのロード、シフト、および挿入操作を実行するためにFIFOロード命令351および352を実行することができる。
【００２３】
命令キャッシュ310は、バス311を介してシーケンサ314に結合され得る。シーケンサ314は、汎用割込み316を受信することができ、この割込みは、割込みレジスタ(図示せず)から取り出すことができる。特定の実施形態では、命令キャッシュ310は、複数の現在の命令レジスタ(図示せず)を介してシーケンサ314に結合され、シーケンサ314は、バス311に結合され、プロセッサ300の特定のスレッド(たとえば、ハードウェアスレッド)に関連付けられ得る。特定の一実施形態では、プロセッサ300は、6つのスレッドを含むインタリーブ型マルチスレッドプロセッサであり得る。
【００２４】
特定の実施形態では、バス311は128ビットバスでよく、シーケンサ314は、各々が32ビット長を有する、複数のFIFOロード命令(たとえば第1のFIFOロード命令351および第2のFIFOロード命令352)を含む命令パケット(たとえば、VLIW命令パケット350)により、メモリ102から命令を取り出すように構成され得る。シーケンサ314は、第1のロード/ストアユニット318、第2のロード/ストアユニット320、第1の命令実行ユニット322、および第2の命令実行ユニット324に結合され得る。示されているよりもより少ない、またはより多いロード/ストアユニットおよび命令実行ユニットが存在してもよいことに留意されたい。各ユニット318〜324は、FIFOロード命令を実行するように動作可能な1つまたは複数のロードアライナーユニットまたはロードハードウェアユニットを含むことができる。各ユニット318〜324は、第1のバス328を介して汎用レジスタファイル326に結合することができる。汎用レジスタファイル326はまた、第2のバス330を介してシーケンサ314、データキャッシュ312、およびメモリ302に結合可能である。汎用レジスタファイル326は、第1のレジスタ140および第2のレジスタ340を含み得る。
【００２５】
システム300は、割込み(たとえば、汎用割込み316)を受け入れるか否かを決定し、命令の実行を制御するためにシーケンサ314内の制御論理によってアクセスされ得るビットを記憶するためのスーパバイザ制御レジスタ332およびグローバル制御レジスタ336も含み得る。
【００２６】
特定の実施形態では、ロード/ストアユニット318〜320のうちの1つ(たとえば、第1のロード/ストアユニット318)は、第1のFIFOロード命令351を実行することができる。第1のFIFOロード命令351が実行されると、第1のアイテム150がメモリ102からロードされ得、第1のレジスタ140におけるデータをシフトし、第1のアイテム150を第1のレジスタ140に挿入するために、シフトおよび挿入操作が実行され得る。データキャッシング原理に従って、第1のアイテム150がデータキャッシュ312に記憶されてもよい。さらに、ロード/ストアユニット318〜320のうちの別の1つ(たとえば、第2のロード/ストアユニット320)が第2のFIFOロード命令352を実行することができる。第2のFIFOロード命令352が実行されると、第2のアイテム360がデータキャッシュ312からロードされ得、第2のレジスタ340におけるデータをシフトし、第2のアイテム360を第2のレジスタ340に挿入するために、シフトおよび挿入操作が実行され得る。特定の実施形態では、第1のFIFOロード命令351および第2のFIFOロード命令352がそれぞれ、同じ実行サイクルの間に、ロード/ストアユニット318およびロード/ストアユニット320によって並行して実行され得る。例示のために、アイテム150および360が(たとえば、メモリ102およびデータキャッシュ312から)ロードされ得、レジスタ140および340におけるデータがシフトされ得、同じ実行サイクルの間に、アイテム150および360がレジスタ140および340に挿入され得る。他の命令がFIFOロード命令351、352と並行して実行されてもよい。たとえば、乗算命令、加算命令、乗算および加算命令、ならびに絶対値差分和命令がFIFOロード命令351、352と並行して実行されてもよい。例示のために、ユニット318〜324のうちの1つまたは複数は、ユニット318〜324のうちの別のものが乗算命令、加算命令、乗算および加算命令、または絶対値差分和命令を実行している間に、FIFOロード命令を実行することができる。
【００２７】
したがって、図3のシステム300は、単一のVLIWパケットへの複数のFIFOロード命令のパケット化を可能にすることができ、ビデオオブジェクトの動き推定を実行することに関連して、そのような命令が使用され得る。たとえば、単一の命令へのロード、シフトおよび挿入操作のカプセル化によって、プロセッサは、1つのビデオフレームの複数の領域、または複数のビデオフレームの動き推定を並行して実行することができる。例示のために、VLIW命令パケット350における命令351、352の各々は、ビデオフレームの異なる領域のフィルタリング演算を表し得る。ビデオデータのそのような並行処理は、マルチメディアアプリケーションの性能の向上につながり得る。
【００２８】
図4を参照すると、レジスタおよびメモリ位置を識別する命令を処理する方法の特定の例示的な実施形態のフローチャートが示され、全般が400で表される。例示的な実施形態では、方法400は、図3のシステム300において実施することができ、図1〜図2を参照して説明され得る。
【００２９】
方法400は、410で、アイテムのレジスタおよびメモリ位置を識別する命令を受信するステップを含むことができる。たとえば、命令は、図1または図2のメモリ102および/または図3の命令キャッシュ310で記憶され得る。メモリは、レジスタベースのメモリ、ランダムアクセスメモリ(RAM)、別のタイプのメモリ、またはそれらの任意の組合せでもよい。アイテムは、1バイト、ハーフワード、または1ワードとすることができる。たとえば、図3に示すように、第1のFIFOロード命令351および第2のFIFOロード命令352を含むVLIW命令パケット350が、そのプロセッサまたは構成要素(たとえば、命令キャッシュ310)で受信され得る。代わりに、単一のFIFOロード命令のみを含む命令パケットが受信され得る。
【００３０】
方法400は、420で、命令を実行するステップをさらに含んでもよい。たとえば、図3を参照すると、第1のFIFOロード命令351が第1のロード/ストアユニット318によって実行され得、第2のFIFOロード命令352が第2のロード/ストアユニット320によって実行され得る。第1のFIFOロード命令351は、第2のFIFOロード命令352を実行するのと同じクロックサイクルと並行して、および第2のFIFOロード命令352を実行するのと同じクロックサイクルの間に実行され得る。さらに、FIFOロード命令351〜352のうちの一方または両方は、乗算命令または絶対値差分和命令を実行することと並行して実行され得る。したがって、図4の方法400は、単一の命令パケットへの複数のFIFOロード命令のカプセル化およびその処理を可能にすることができ、これによって、高密度のビデオ処理コードとなり得る。
【００３１】
命令を実行するステップは、422で、メモリ位置からアイテムをロードするステップを含み得る。たとえば、図3で、命令パケット350を実行するステップは、メモリ102から第1のアイテム150をロードするステップと、データキャッシュ312から第2のアイテム360をロードするステップとを含み得る。命令を実行するステップは、424で、レジスタにおけるデータをシフトするステップも含み得る。特定の実施形態では、図1に示すように、シフトは、右シフト操作である。別の特定の実施形態では、図2に示すように、シフトは、左シフト操作である。別の特定の実施形態では、第1のFIFOロード命令351を実行するステップは、右シフト操作を実行するステップを含み得、第2のFIFOロード命令352を実行するステップは、左シフト操作を実行するステップ(またはその逆)を含み得る。たとえば、図3で、第1のレジスタ140におけるデータが左にシフトされ得、第2のレジスタ340におけるデータが右にシフトされ得る。したがって、レジスタ140、340におけるデータは、同じ方向または異なる方向にシフトされ得る。
【００３２】
命令を実行するステップは、426で、アイテムをレジスタに挿入するステップをさらに含み得る。たとえば、図3で、第1のアイテム150が第1のレジスタ140に挿入され得、第2のアイテム360が第2のレジスタ340に挿入され得る。
【００３３】
図1〜図4で説明した実施形態は、データを同じレジスタからシフトすること、およびデータを同じレジスタにロードすることを伴い得る。代わりに、マルチレジスタ実装が使用されてもよい。たとえば、図5は、複数のレジスタを使用してFIFOロード命令を実行する一実施形態を示し、全般が500で表される。
【００３４】
例示のために、FIFOバッファのX4X3X2X1 144〜141は、第1のレジスタ510に記憶され得る。FIFOロード命令の実行中、データX4X3X2X1 144〜141がシフタ530にロードされ得、シフタ530の出力がマルチプレクサ540に提供され得る。マルチプレクサ540は、メモリ102からFIFOバッファにロードされるアイテム150を受信することもできる。特定の実施形態では、アイテム150は、データロードプロセスの間に、必要に応じて、位置合わせされ、複製され、ゼロパディングされ、および/または符号拡張され得る。図5に示すように、マルチプレクサ540の出力は、第2のレジスタ520に記憶され得る。したがって、ソースレジスタと宛先レジスタとが異なるとき、FIFOロード命令は、ロード、シフト、および挿入操作を実行するために使用され得る。
【００３５】
図6を参照すると、レジスタおよびメモリ位置を識別するFIFOロード命令を記憶するメモリを含むワイヤレスデバイスの特定の例示的な実施形態のブロック図が示され、全般が600で表される。デバイス600は、メモリ102に結合されたデジタル信号プロセッサ(DSP)664などのプロセッサを含む。特定の実施形態では、メモリ102は、FIFOロード命令351など、DSP664によって実行可能な命令を記憶し、送信し得る。メモリ102は、アイテム150など、ロードされるデータを記憶することもできる。DSPは、FIFOバッファを表すデータ144-141(すなわち、「X4 … X1」)を記憶するレジスタ140を含むことができる。FIFOロード命令351が実行されると、アイテム150がメモリ102におけるメモリ位置からロードされ得、レジスタ140におけるデータ144〜141をシフトし、アイテム150をレジスタ140に挿入するために、シフトおよび挿入操作が実行され得る。たとえば、図6で、左シフト操作がデータ144〜141において実行され得、レジスタ140からデータX4 144が削除され、アイテム150がレジスタ140の最下位部分でレジスタ140に挿入され得る。代わりに、レジスタ140におけるデータ144〜141が右にシフトされ得(図示せず)、レジスタ140からデータX1 141が削除され、アイテム150がレジスタ140の最上位部分でレジスタ140に挿入され得る。
【００３６】
図6はまた、DSP664およびディスプレイ628に結合されたディスプレイコントローラ626も示す。コーダ/デコーダ(コーデック)634(たとえば、オーディオおよび/またはボイスコーデック)がDSP664に結合され得る。たとえば、コーデック634によって、符号化または復号プロセスの一部としてFIFOロード命令351の実行がもたらされ得る。たとえばディスプレイコントローラ626(ビデオコーデックおよび/または画像処理プロセッサを含み得る)、およびワイヤレスコントローラ640(モデムを含み得る)など他の構成要素によって、信号処理の間に、FIFOロード命令351の実行がもたらされる場合もある。スピーカー636およびマイクロフォン638がコーデック634に結合され得る。図6は、ワイヤレスコントローラ640が、ワイヤレスアンテナ642に結合され得ることも示している。ある特定の実施形態では、DSP664、ディスプレイコントローラ626、メモリ632、コーデック634、およびワイヤレスコントローラ640は、システムインパッケージデバイスまたはシステムオンチップデバイス622に含まれる。
【００３７】
特定の一実施形態では、入力デバイス630および電源644がシステムオンチップデバイス622に結合される。その上、特定の一実施形態では、図6に示すように、ディスプレイ628、入力デバイス630、スピーカー636、マイクロフォン638、ワイヤレスアンテナ642、および電源644は、システムオンチップデバイス622の外部にある。ただし、ディスプレイ628、入力デバイス630、スピーカー636、マイクロフォン638、ワイヤレスアンテナ642、および電源644の各々は、インターフェースまたはコントローラなど、システムオンチップデバイス622の構成要素に結合され得る。
【００３８】
図6はワイヤレス通信デバイスを示しているが、DSP664およびメモリ632がセットトップボックス、音楽プレーヤ、ビデオプレーヤ、エンターテインメントユニット、ナビゲーションデバイス、携帯情報端末(PDA)、固定ロケーションデータユニット、またはコンピュータに統合されてもよいことに留意されたい。プロセッサ(たとえば、DSP664または図3のロード/ストアユニット318〜320のうちの1つまたは複数を含むプロセッサ)は、そのようなデバイスに統合されてもよい。
【００３９】
記載した実施形態とともに、レジスタおよびメモリ位置を識別する命令を記憶するための手段を含む装置が開示される。たとえば、記憶するための手段は、図1〜図3および図6のメモリ102、図3の命令キャッシュ310、命令を記憶するように構成された1つもしくは複数の他のデバイス、またはそれらのどの組合せでもよい。
【００４０】
この装置は、命令を実行するための手段も含み得る。たとえば、実行するための手段は、図3のユニット318、320、322、および324のうちの1つまたは複数、図5のシフタ530、図5のマルチプレクサ540、図6のDSP664、ロードハードウェアユニット、ロードアライナーユニット、命令を実行するように構成された1つまたは複数の他のデバイス、またはそれらの任意の組合せを含むことができる。
【００４１】
この装置は、メモリ位置からアイテムをロードするための手段をさらに含み得る。たとえば、ロードするための手段は、図3のユニット318〜324のうちの1つまたは複数、ロードハードウェアユニット、ロードアライナーユニット、メモリからアイテムをロードするように構成された1つまたは複数の他のデバイス、またはそれらの任意の組合せとすることができる。
【００４２】
この装置は、レジスタにおけるデータをシフトするための手段を含むことができる。たとえば、シフトするための手段は、図3のユニット318〜324のうちの1つまたは複数、ロードハードウェアユニット、ロードアライナーユニット、データシフトユニット、データをシフトするように構成された1つまたは複数の他のデバイス、またはそれらの任意の組合せとすることができる。
【００４３】
この装置は、アイテムをレジスタに挿入するための手段を含むこともできる。たとえば、挿入するための手段は、図3のユニット318〜324のうちの1つまたは複数、図5のシフタ530、ロードハードウェアユニット、ロードアライナーユニット、データをロードするように構成された1つまたは複数の他のデバイス、またはそれらの任意の組合せとすることができる。
【００４４】
この装置は、命令を実行することと並行して第2の命令を実行するための手段をさらに含むことができ、第2の命令は、第2のレジスタおよび第2のメモリ位置を識別する。たとえば、実行するための手段は、図3のユニット318〜324のうちの1つまたは複数、図5のシフタ530、図5のマルチプレクサ540、図6のDSP664、ロードハードウェアユニット、ロードアライナーユニット、第1の命令と並行して第2の命令を実行するように構成された1つまたは複数の他のデバイス、またはそれらの任意の組合せを含むことができる。
【００４５】
さらに、本明細書で開示された実施形態に関して説明された様々な例示的な論理ブロック、構成、モジュール、回路、およびアルゴリズムのステップは、電子ハードウェア、コンピュータソフトウェア、または両方の組合せとして実装され得ることを、当業者は諒解されよう。様々な例示的な構成要素、ブロック、構成、モジュール、回路、およびステップについて、それらの機能に関して概略的に説明した。そのような機能をハードウェアとして実装するか、ソフトウェアとして実装するかは、特定の適用例および全体的なシステムに課される設計制約に依存する。当業者は、説明した機能を特定の適用例ごとに様々な方法で実装し得るが、そのような実装の決定は、本開示の範囲からの逸脱を生じるものと解釈すべきではない。
【００４６】
本明細書で開示した実施形態に関連して説明した方法またはアルゴリズムのステップは、直接ハードウェアで具体化されるか、プロセッサによって実行されるソフトウェアモジュールで具体化されるか、またはその2つの組合せで具体化され得る。ソフトウェアモジュールは、ランダムアクセスメモリ(RAM)、フラッシュメモリ、読取り専用メモリ(ROM)、プログラマブル読取り専用メモリ(PROM)、消去可能プログラマブル読取り専用メモリ(EPROM)、電気消去可能プログラマブル読取り専用メモリ(EEPROM)、レジスタ、ハードディスク、リムーバブルディスク、コンパクトディスク読取り専用メモリ(CD-ROM)、または当技術分野で知られている任意の他の形態の記憶媒体中に存在し得る。例示的な非一時的(たとえば、有形)記憶媒体は、プロセッサが記憶媒体から情報を読み取り、記憶媒体に情報を書き込むことができるように、プロセッサに結合される。代替として、記憶媒体はプロセッサと一体であり得る。プロセッサおよび記憶媒体は、特定用途向け集積回路(ASIC)に存在し得る。ASICは、コンピューティングデバイスまたはユーザ端末内に存在し得る。代替として、プロセッサおよび記憶媒体は、コンピューティングデバイスまたはユーザ端末の中に、個別の構成要素として存在し得る。
【００４７】
開示された実施形態の上記の説明は、当業者が、開示された実施形態を作成または使用することができるように与えられる。これらの実施形態に対する様々な修正が、当業者には容易に明らかとなり、本明細書で定義される原理は、本開示の範囲から逸脱することなく、他の実施形態に適用され得る。したがって、本開示は、本明細書に示す実施形態に限定されることは意図されず、以下の特許請求の範囲によって定義されるような、原理および新規の特徴と矛盾しない、可能な最大の範囲を認められるべきである。
【符号の説明】
【００４８】
102  メモリ
140  レジスタ
141  データ
142  データ
143  データ
144  データ
150  アイテム
300  システム
300  プロセッサ
308  バスインターフェース
310  命令キャッシュ
311  バス
312  データキャッシュ
314  シーケンサ
316  汎用割込み
318  第1のロード/ストアユニット
320  第2のロード/ストアユニット
322  第1の命令実行ユニット
324  第2の命令実行ユニット
326  汎用レジスタファイル
328  第1のバス
330  バス
332  スーパバイザ制御レジスタ
336  グローバル制御レジスタ
340  レジスタ
350  VLIW命令パケット
351  FIFOロード命令
352  FIFOロード命令
360  第2のアイテム
510  第1のレジスタ
520  第2のレジスタ
530  シフタ
540  マルチプレクサ
600  デバイス
622  システムオンチップデバイス
626  ディスプレイコントローラ
628  ディスプレイ
630  入力デバイス
632  メモリ
634  コーダ/デコーダ(コーデック)
636  スピーカー
638  マイクロフォン
640  ワイヤレスコントローラ
642  ワイヤレスアンテナ
644  電源
664  DSP
【図１】
0006022581.tif 000002
【図２】
0006022581.tif 000003
【図３】
0006022581.tif 000004
【図４】
0006022581.tif 000005
【図５】
0006022581.tif 000006
【図６】
0006022581.tif 000007