(57)【特許請求の範囲】
【請求項１】
メモリに記憶されたテーブル内のエレメントの位置を識別するために単一の命令をプロセッサが実行することにより、第１のレジスタからビットフィールドデータを抽出することであって、該第１のレジスタは、オフセット情報を含むことと、
該単一の命令をプロセッサが実行することにより、該ビットフィールドデータを、テーブルアドレスを含む第２のレジスタのインデックス部内に挿入することと、
該単一の命令をプロセッサが実行することにより、該オフセット情報によって定義される、該テーブルに記憶された該エレメントのデータのタイプに基づいて該インデックス部内の挿入点を選択することと、を具備する方法であって、
該テーブルアドレスおよび該ビットフィールドデータは結合して該テーブル内の該エレメントへのインデックスされたアドレスを形成するものである、方法。
【請求項２】
該インデックスされたアドレスで該メモリにアクセスするために第２の命令を実行することをさらに具備し、該第２の命令に基づいて、該テーブル内の該インデックスされたアドレスからデータを読み出すことまたは該アドレスにデータを書き込むことを該プロセッサが実行可能である、請求項１記載の方法。
【請求項３】
該テーブルは該テーブルのサイズより大きいかまたは等しい２の累乗のサイズであるメモリ境界に整列される、請求項１記載の方法。
【請求項４】
該テーブルは４キロバイトテーブルを具備するおよび該テーブルは該メモリの４キロバイト境界に整列される、請求項３記載の方法。
【請求項５】
ビットフィールドを含んでいる第１のレジスタであって、該第１のレジスタは、オフセット情報を含む第１のレジスタと、
テーブルアドレス部およびインデックス部を含んでいる第２のレジスタと、
実行ユニットとを具備するプロセッサであって、
該テーブルアドレス部はメモリに記憶されたテーブルのテーブルアドレスを含んでいるものであり、
該実行ユニットは、該オフセット情報によって定義される、該テーブル内のエレメントのデータのタイプに基づいて該インデックス部内の挿入点を選択するように適合されており、
該挿入点は、各データのタイプに対して異なっており、
該実行ユニットは、単一の命令を処理する際に、該第１のレジスタの該ビットフィールドからビットフィールドデータを抽出し、該第２のレジスタの該インデックス部内の該挿入点に該抽出されたビットフィールドデータを挿入することによって、該テーブル内の該エレメントへのインデックスされたアドレスを生成するように適合されている、プロセッサ。
【請求項６】
該実行ユニットはビットをシフトするためにシフタを含む、請求項５記載のプロセッサ。
【請求項７】
該シフタは該抽出されたビットフィールドデータを所定数のビットだけシフトするように適合され、およびシフトされたビットフィールドデータは付加演算を使用して該インデックス部に挿入される、請求項６記載のプロセッサ。
【請求項８】
該シフタは双方向シフタを具備する、請求項６記載のプロセッサ。
【請求項９】
該テーブルは該テーブルのサイズより大きいかまたは等しい２の累乗であるメモリ境界に整列される、請求項５記載のプロセッサ。
【請求項１０】
該テーブルアドレス部は該第２のレジスタの最上位ビット部を具備する、請求項５記載のプロセッサ。
【請求項１１】
該抽出されたビットフィールドデータは該第２のレジスタの最下位ビット部内に挿入される、請求項５記載のプロセッサ。
【請求項１２】
該抽出されたビットフィールドデータは該テーブル内に記憶された該データのタイプを示す該最下位ビット部内の挿入点で挿入される、請求項１１記載のプロセッサ。
【請求項１３】
該挿入点はコンパイルタイムでアセンブラによって符号化される、請求項１２記載のプロセッサ。
【請求項１４】
テーブル内のエレメントのアドレスを決定する方法であって、
第１のレジスタからビットフィールドデータを抽出することであって、該第１のレジスタは、オフセット情報を含むことと、
第２のレジスタのインデックス部内のビットオフセットを決定することと、
該ビットオフセットに基づいて該第２のレジスタの該インデックス部内に該抽出されたビットフィールドデータを挿入することとを具備し、
該ビットオフセットは、該オフセット情報によって定義される、該テーブル内の該エレメントのデータのタイプに基づいており、
該ビットオフセットは各タイプに対して異なっており、
該第２のレジスタはテーブルアドレスデータを含むものであり、
該テーブルアドレスデータおよび該抽出されたビットフィールドデータは該テーブル内の該エレメントへのインデックスされたアドレスを供給するものである、方法。
【請求項１５】
該インデックスされたアドレスに基づいて該テーブル内の該エレメントにアクセスすることをさらに具備する、請求項１４記載の方法。
【請求項１６】
該ビットフィールドデータを抽出することおよび該抽出されたビットフィールドデータを挿入することは単一の命令のプロセッサによる実行に応じて実行される、請求項１４記載の方法。
【請求項１７】
該ビットフィールドデータを抽出することおよび該抽出されたビットフィールドデータを挿入することは単一の実行サイクル内で実行される、請求項１４記載の方法。
【請求項１８】
該第１のレジスタおよび該第２のレジスタは汎用レジスタファイル内のレジスタである、請求項１４記載の方法。
【請求項１９】
データのタイプは、バイト、ハーフワード、ワード、およびダブルワードである、請求項１４記載の方法。
【請求項２０】
該テーブルに記憶された該エレメントの該データのタイプは、バイト、ハーフワード、ワード、またはダブルワードである、請求項１記載の方法。
【請求項２１】
該テーブルに記憶された該エレメントの第１のデータのタイプに対応する第１のビットオフセットを決定することと、
該第１のビットオフセットに基づいて該抽出されたビットフィールドデータをシフトすることとを、更に具備する請求項１記載の方法。
【請求項２２】
該挿入点は該第１のビットオフセットに基づいている、請求項２１記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は一般にテーブル内のエレメントのアドレスを決定するシステムおよび方法に関する。
【背景技術】
【０００２】
ディジタル信号プロセッサ（ＤＳＰｓ）は、無線電話機、パーソナルコンピュータ、パーソナルディジタルアシスタント（ＰＤＡｓ）、オーディオプレイヤ、他の電子装置、またはこれらの任意の組合せのような、携帯型パーソナルコンピューティング装置内でしばしば使用される。そのようなＤＳＰｓはビデオおよびオーディオ機能を提供するために、受信データを処理するために、または他の機能を実行するために使用されることができる。そのようなＤＳＰｓはマルチスレッドのアーキテクチャを使用することができ、それは複数のプログラム命令スレッドを処理することができ、そして並列実行ユニットを含むことができる。
【０００３】
ＤＳＰのようなプロセッサは、典型的に、メインメモリからデータを検索するための、またはＤＳＰによって生成されたデータを記憶するためのメモリアドレスを発生するメモリアドレス発生器を含む。ある事例では、メモリアドレスは検索された値に基づいて計算されることができる。この値が検索された後に、算術および論理ユニット（ＡＬＵ）はその値に対するビットシフト演算を実行し、そしてこのシフトされた値はレジスタ内に記憶される。次の命令サイクルでは、このシフトされた値はレジスタから読み出されることができ、そして数値演算はメモリアドレスを生成するためにこのシフトされた値に対して実行されることができる。プロセッサは、他の結果を書き込むかまたはデータを検索するかのどちらかのために、メモリ内の位置にアクセスするためにこのメモリアドレスを使用することができる。
【０００４】
現プロセッサ(current processors)では、ある構成におけるいくつかのビット数に基づいてテーブル内のデータをルックアップ(look up)するのが一般的である。しかしながら、テーブル内へのアドレスを計算することは２またはそれ以上の実行サイクルを必要とすることがありうる。よって、アドレス計算の機能を高める必要性がある。
【発明の概要】
【０００５】
特定の実施形態では、メモリに記憶されたテーブル内の位置を識別するために単一の命令を実行することを含む方法が開示される。単一の命令は第１のレジスタからビットフィールドデータを抽出すること、およびこのビットフィールドデータを第２のレジスタのインデックス部内に挿入することをプロセッサによって実行可能である。第２のレジスタはテーブルアドレス部およびインデックス部を含む。テーブルアドレス部はテーブルに関連するメモリ位置を識別するテーブルアドレスを含む。テーブルアドレスおよびビットフィールドデータは結合してテーブル内のエレメントへのインデックスされたアドレスを形成する。
【０００６】
別の特定の実施形態では、ビットフィールドを含んでいる第１のレジスタおよびテーブルアドレス部とインデックス部とを含んでいる第２のレジスタを含むプロセッサが開示される。テーブルアドレス部はメモリ内のテーブルの位置を識別するテーブルアドレスを含む。プロセッサはまた第１のレジスタのビットフィールドからビットフィールドデータを抽出するため、および第２のレジスタのインデックス部内にこの抽出されたビットフィールドデータを挿入しテーブル内のエレメントへのアドレスを生成するために単一の命令を処理することによってアドレスを生成するように適合された実行ユニットも含む。
【０００７】
さらに別の特定の実施形態では、テーブル内へのアドレスを決定する方法が開示される。この方法は第１のレジスタからビットフィールドデータを抽出することおよびこの抽出されたビットフィールドデータをテーブルアドレス部およびインデックス部を含む第２のレジスタのインデックス部内に挿入することを含む。第２のレジスタはテーブルに関連するメモリ位置を識別するテーブルアドレス部内に記憶されたテーブルアドレスデータを含む。テーブルアドレスデータおよび抽出されたビットフィールドデータはメモリ位置およびテーブル内のエレメントへのテーブルインデックスを供給する。
【０００８】
ここに開示されたシステムおよび方法の実施形態によって提供される１つの特定の利点は、シフト演算および算術演算の組合せを含む演算が単一の実行サイクルにおいて実行されうることである。
【０００９】
この方法の実施形態によって提供される別の特定の利点は、アドレスが迅速に計算されうること、およびルックアップテーブルを使用する演算が改善されうることにおいて提供される。例えば、この特定の方法および関連する命令をサポートするＤＳＰは削減された数の命令サイクルにおいてインデックスおよびベースアドレスを使用してテーブル内のアドレスを生成することができる。
【００１０】
さらに別の特定の利点は、巡回冗長検査および他の一般的なＤＳＰ動作において使用されることができる、シフト演算およびマスキング演算が、レジスタ読出し／書込み動作のためのバスアクセスを減少させて、単一の命令においておよび単一の実行サイクルにおいて実行されることができることにおいて提供される。そのうえ、特定の動作を実行するために使用される命令数は減少される。
【００１１】
また、さらに別の利点はアドレス計算が簡略化されることにおいて提供される。別の特定の利点はアドレスを決定するための実行サイクル数を減少させることがプロセッサ性能効率を高めることにおいて提供される。
【００１２】
本開示の他の観点、利点および特徴は、以下のセクション：図面の簡単な説明、詳細な説明、および特許請求の範囲を含む、出願全体を検討した後に明白になるであろう。
【図面の簡単な説明】
【００１３】
【図１】テーブル内のエレメントのアドレスを決定するために命令を実行するように適合された処理システムの特定の例示的な実施形態のブロック図。
【図２】テーブル内のエレメントのアドレスを決定するために命令を実行するように適合された処理システムの第２の例示的な実施形態の図。
【図３】テーブル内のエレメントへのアドレスを形成するために使用される第１および第２のレジスタの特定の例示的な実施形態の図。
【図４】テーブル内のエレメントのアドレスを決定する方法の特定の例示的な実施形態のフローチャート。
【図５】テーブル内のエレメントのアドレスを決定する方法の第２の特定の例示的な実施形態のフローチャート。
【図６】テーブル内のエレメントのアドレスを決定するためのプロセッサを含む典型的な無線通信装置を示すブロック図。
【詳細な説明】
【００１４】
図１は（図２に図示されたテーブル２０６内のエレメント２０７のような）テーブル１０３内のエレメントのアドレスを決定するために抽出シフト付加命令(extract-shift-add instruction)１１６を実行するように適合された処理システム１００の特定の例示的な実施形態のブロック図である。処理システム１００はテーブル１０３を含むメモリ１０２を含む。メモリ１０２はバスインターフェイス１０８を介して命令キャッシュ１１０に結合される。処理システム１００はまたバスインターフェイス１０８を介してメモリ１０２に結合されるデータキャッシュ１１２も含む。命令キャッシュ１１０はバス１１１を介してシーケンサ１１４に結合される。特定の実例では、シーケンサ１１４はまた、割込みレジスタ（図示せず）から検索されうる汎用割込み(general interrupts)も受信することができる。特定の実施形態では、命令キャッシュ１１０は複数の現命令レジスタ(current instruction registers)を介してシーケンサ１１４に結合されてもよく、それらはバス１１１に結合され、処理システム１００の特定のスレッドに関連付けられてもよい。特定の実施形態では、処理システム１００は６個のスレッドを含むインターリーブされたマルチスレッドプロセッサである。
【００１５】
特定の実施形態では、バス１１１は６４ビットバスであり、そしてシーケンサ１１４は各々３２ビットの長さを有する複数の命令を含む命令パケットによりメモリ１０２から命令を検索するように構成される。シーケンサ１１４は第１の命令実行ユニット１１８、第２の命令実行ユニット１２０、第３の命令実行ユニット１２２、および第４の命令実行ユニット１２４に結合されている。各命令実行ユニット１１８，１２０，１２２，１２４は第２のバス１２８を介して汎用レジスタファイル１２６に結合されることができる。汎用レジスタファイル１２６はまた第３のバス１３０を介してシーケンサ１１４、データキャッシュ１１２、およびメモリ１０２にも結合されることができる。特定の例示的な実施形態では、汎用レジスタファイル１２６はテーブル内のエレメントに関するデータを記憶するために第１のレジスタ１３２および第２のレジスタ１３３を含んでもよい。
【００１６】
処理システム１００はまた、命令の実行を制御するため、および割込みを受け入れるかどうかを決定するためにシーケンサ１１４内の制御論理によってアクセスされることができるビットを記憶するためのスーパバイザ制御レジスタ１３４およびグローバル制御レジスタ１３６を含んでもよい。
【００１７】
特定の例示的な実施形態では、実行ユニット１１８はシーケンサ１１４を介して命令キャッシュ１１０から抽出シフト付加命令１１６を受信することができる。実行ユニット１１８は第１のレジスタ１３２からビットフィールドデータを検索（抽出）し、検索されたビットフィールドデータを所定数のビットだけシフトし、そして第２のレジスタ１３３内のデータにこのシフトされたビットフィールドデータを加える（即ち、検索されたビットフィールドデータを挿入する）ことができる。特定の例では、実行ユニット１１８はビットフィールドデータを第１のレジスタ１３２から検索し、第２のレジスタ１３３内の挿入点を決定して、第２のレジスタ１３３内の挿入点にこの検索されたビットフィールドデータを挿入する。特定の例では、ビットオフセットはテーブルがバイト、ハーフワード、ワードまたはダブルワードを記憶しているかどうかを表すことができる。挿入点はテーブル内に記憶されたデータに基づいて決定されることができ、そして検索されたビットフィールドデータは第２のレジスタ１３３内の挿入点に挿入されることができる。第２のレジスタ１３３はアドレス部内にテーブルと関連するメモリ位置を記憶することができ、そして第２のレジスタ１３３のインデックス部内に検索されたビットフィールドデータを受信できる。検索されたビットフィールドデータが挿入された後で第２のレジスタ１３３内に記憶されたデータはテーブル内のエレメントのアドレスを表す。テーブル内のエレメントのアドレスはその後第２のレジスタ１３３内のデータによって指定されたアドレスでメモリ１０２内のエレメントにアクセスするために使用されることができる。特定の実施形態では、アドレスは単一の命令または実行サイクルにおいて決定されることができる。特定の実施形態では、命令サイクルは一般に１つまたはそれ以上の命令フェッチステージ、復号ステージ、読出しレジスタファイルステージ、１つまたはそれ以上の実行ステージ、および書戻しステージを含む、複数のステージを含む。一般に、命令サイクルが特定のスレッドでの特定の命令のための命令実行サイクルを表すことは理解されるべきである。
【００１８】
特定の実施形態では、実行ユニット１１８，１２０，１２２および１２４の少なくとも１つは第１のレジスタ１３２から抽出された抽出ビットフィールドデータを所定数のビットだけシフトするように適合されたシフタを含むことができる。シフトされたビットフィールドデータはその後付加演算を使用して第２のレジスタのインデックス部内に挿入されることができる。シフタはビットを左右にシフトするように適合された双方向シフタであってもよい。
【００１９】
図２はテーブル内のエレメントのアドレスを決定するために命令を実行するように適合されたプロセッサを含むシステム２００の第２の特定の実施形態のブロック図である。システム２００は２キロバイトメモリ空間（memory space）を定義する、メモリ境界(memory boundaries)２０４のような、１つまたはそれ以上の論理メモリ境界を含むメモリ２０２を含む。メモリ２０２はメモリ境界２０４に整列されるテーブル２０６を記憶するように適合されている。テーブル２０６はバイト、ハーフワード、ワード、ダブルワード、またはそれらの任意の組合せのエントリを保持するように適合されている。テーブル２０６はテーブルインデックス情報を含むメモリ位置でアクセスできるエレメント（Ｅ）２０７を含んでもよい。
【００２０】
特定の例では、テーブル２０６は、メモリ２０２内の境界２０４のような、論理境界に整列されることができる。一般に、境界２０４はテーブル２０６のサイズより大きいか等しい２の累乗（即ち、２N）の境界に相当する位置を有する論理境界である。例えば、もしテーブル２０６が２キロバイトテーブルであれば、テーブル２０６はメモリ空間の２ｋｂ隣接(contiguous)ブロックを含むゼロメモリ境界、メモリ空間の少なくとも２ｋｂ隣接ブロックを有する２ｋｂメモリ境界、４ｋｂメモリ境界、等でメモリ境界２０４に整列されることができる。例えば、もしテーブル２０６が４キロバイトテーブルであれば、テーブル２０６は、メモリ空間の隣接４キロバイトブロックを含むゼロメモリ境界（即ち、メモリアドレスゼロおよびシーケンス）、４ｋｂ境界、８ｋｂ境界、等のような、４ｋｂ論理境界に整列されることができる。メモリ境界はテーブル２０６のサイズより大きい使用可能な空間を有してもよい。特定の例では、テーブル２０６をメモリ２０２内で２の累乗の論理境界２０４に整列することによって、テーブル２０６のメモリアドレスはレジスタの最上位ビットから決定されることができ、そして最下位ビットはテーブル２０６内への対応するインデックスとして使用されることができ、例えば、テーブル２０６内のエレメント（Ｅ）２０７にアドレスするためにアドレス計算を使用することができる。
【００２１】
メモリ２０２は汎用レジスタ２２０に結合されたバス２３２を介して、そして命令キャッシュ２１０に結合されたバス２０９を介してプロセッサと通信するように適合されている。一般に疑似ライン２０８によって示された、プロセッサは抽出シフト付加命令２１６を記憶することができる、命令キャッシュ２１０を含む。命令キャッシュ２１０はバス２１２を介してシーケンサ２１４と通信する。シーケンサ２１４は１つまたはそれ以上の実行ユニット２１８に命令を供給する。１つまたはそれ以上の実行ユニット２１８はデータを検索して記憶するために汎用レジスタ２２０と通信する。汎用レジスタ２２０は第１のレジスタ２２２および第２のレジスタ２２４を含む。第１のレジスタ２２２はビットフィールド２２６を含む。第２のレジスタ２２４はテーブルアドレス部２２８およびインデックス部２３０を含む。
【００２２】
特定の例示的な実施形態では、データは計算され、ロードされ、あるいは、そうではなければ第１および第２のレジスタ２２２および２２４内において検索され、そして記憶される。シーケンサ２１４は命令キャッシュ２１０から抽出シフト付加命令２１６を検索し、そしてこの抽出シフト付加命令２１６を１つまたはそれ以上の実行ユニット２１８の少なくとも１つに供給するように適合されている。１つまたはそれ以上の実行ユニット２１８は第１のレジスタ２２２からビットフィールド２２６に関連するデータを抽出し、メモリ２０２のテーブル２０６内のエレメント２０７にアクセスするためのアドレスを形成するために第２のレジスタ２２４のインデックス部２３０内にこの抽出されたデータを挿入するように適合されている。第２のレジスタのアドレス部２２８はテーブルアドレスを含む。特定の例では、１つまたはそれ以上の実行ユニット２１８は単一の実行サイクルにおいてテーブル２０６内のテーブルエレメント２０７のアドレスを計算することができる。
【００２３】
特定の例では、１つまたはそれ以上の実行ユニット２１８は第１のレジスタ２２２のビットフィールド２２６から抽出されたデータを第２のレジスタ２２４のインデックス部２３０内に挿入するように適合されている。第２のレジスタ２２４のインデックス部２３０は第２のレジスタ２２４の最下位ビットを示すことができる。第２のレジスタ２２４のテーブルアドレス部２２８は第２のレジスタ２２４の最上位ビットを示すことができる。特定の例示的な例では、１つまたはそれ以上の実行ユニット２１８は第２のレジスタ２２４のインデックス部２３０内の挿入位置に第１のレジスタ２２２のビットフィールド２２６から抽出されたデータを選択的に挿入するように適合されている。
【００２４】
例えば、特定の例示的な実施形態では、１つまたはそれ以上の実行ユニット２１８はテーブル２０６内に記憶されたデータのタイプに基づいてインデックス部２３０内の挿入点を選択するように適合されることができる。例えば、もしテーブル２０６がバイトのデータを記憶すれば、挿入点は第２のレジスタ２２４のインデックス部２３０内のビット０でありうる。テーブルがハーフワードを記憶する時は、挿入点は第２のレジスタ２２４のインデックス部２３０のビット１でありうる。テーブル２０６がワードのデータを記憶する時は、インデックス部２３０内の挿入点は第２のレジスタ２２４のインデックス部２３０内のビット２でありうる。テーブル２０６がダブルワードのデータを記憶する時は、挿入点は第２のレジスタ２２４のインデックス部２３０内のビット３でありうる。挿入点は抽出されるべきフィールドに関連するオフセット値を示すために使用されることができる。特定の例示的な実施形態では、第１のレジスタ２２２は幅およびオフセット情報の両者を有することができるビットフィールド２２６を含んでもよい。オフセット情報はどの挿入位置を使用すべきかを決定するために使用されることができる。
【００２５】
一般に、抽出シフト付加命令２１６は単に、単一の命令サイクルにおいてテーブル２０６内のエレメント２０７へのインデックスおよびテーブル２０６のアドレスを計算するために使用されることができる特定の命令パケットを記述するために使用されるラベルであることは理解されるべきである。しかしながら、命令は異なるラベルを使用して記述されることができる。そのうえ、抽出シフト付加命令２１６のような、テーブルアドレス／インデックス計算命令を含む命令のパケットはまた他の命令、マイクロ命令(microinstructions)、オペレーション、またはそれらの任意の組合せを含みうることも理解されるべきである。さらに、そのような命令のパケットは追加のオペレーション、マイクロ命令、命令、またはそれらの任意の組合せの実行を発生することができる。
【００２６】
図３はテーブル内のエレメントへのアドレスを形成するために使用される第１および第２のレジスタの特定の例示的な実施形態の図である。この図はバイトのテーブルにアクセスするために第１および第２のレジスタ３０２および３０４の第１のセット３００を含む。この図はまたハーフワードのテーブルにアクセスするために第１および第２のレジスタ３１２および３１４の第２のセット３１０も含む。そのうえ、この図はワードのテーブルにアクセスするために第１および第２のレジスタ３２２および３２４の第３のセット３２０を含む。さらに、この図はダブルワードのテーブルにアクセスするために第１および第２のレジスタ３３２および３３４の第４のセット３３０を含む。
【００２７】
第１のセット３００は第１のレジスタ３０２を含み、それはビットフィールドデータ３０６を含んでいるビットフィールドを含む。第１のレジスタ３０２はまたオフセットビット３０７も含むことができる。第２のレジスタ３０４はテーブルアドレス情報部３０８およびインデックス部３０９を含む。抽出シフト付加命令（即ち、図２に図示された抽出シフト付加命令２１６）を使用して、第１のレジスタ３０２からのビットフィールドデータ３０６はバイトのデータを記憶するテーブル内のエレメントへのアドレスを形成するために第２のレジスタ３０４のインデックス部３０９に書き込まれる。この例では、挿入点３０３は第２のレジスタ３０４のビット０にある。
【００２８】
第２のセット３１０は第１のレジスタ３１２を含み、それはビットフィールドデータ３１６を含んでいるビットフィールドを含む。第１のレジスタ３１２はまたオフセットビット３１７も含むことができる。第２のレジスタ３１４はテーブルアドレス情報部３１８およびインデックス部３１９を含む。抽出シフト付加命令（即ち、図２に図示された抽出シフト付加命令２１６）を使用して、第１のレジスタ３１２からのビットフィールドデータ３１６はハーフワードのデータを記憶するテーブル内のエレメントへのアドレスを形成するために第２のレジスタ３１４のインデックス部３１９に書き込まれる。この例では、挿入点３１３は第２のレジスタ３１４のビット１にある。
【００２９】
第３のセット３２０は第１のレジスタ３２２を含み、それはビットフィールドデータ３２６を含んでいるビットフィールドを含む。第１のレジスタ３２２はまたオフセットビット３２７も含むことができる。第２のレジスタ３２４はテーブルアドレス情報部３２８およびインデックス部３２９を含む。抽出シフト付加命令（即ち、図２に図示された抽出シフト付加命令２１６）を使用して、第１のレジスタ３２２からのビットフィールドデータ３２６はワードのデータを記憶するテーブル内のエレメントへのアドレスを形成するために第２のレジスタ３２４のインデックス部３２９に書き込まれる。この例では、挿入点３２３は第２のレジスタ３２４のビット２にある。
【００３０】
第４のセット３３０は第１のレジスタ３３２を含み、それはビットフィールドデータ３３６を含んでいるビットフィールドを含む。第１のレジスタ３３２はまたオフセットビット３３７も含むことができる。第２のレジスタ３３４はテーブルアドレス情報部３３８およびインデックス部３３９を含む。抽出シフト付加命令（即ち、図２に図示された抽出シフト付加命令２１６）を使用して、第１のレジスタ３３２からのビットフィールドデータ３３６はダブルワードのデータを記憶するテーブル内のエレメントへのアドレスを形成するために第２のレジスタ３３４のインデックス部３３９に書き込まれる。この例では、挿入点３３３は第２のレジスタ３３４のビット３にある。
【００３１】
アセンブリレベル(assembly level)のプログラミングシンタックス(programming syntax)では、オフセット情報はオフセットによってビットインデックス値を調整するためにアセンブラによって使用される抽出情報を含むことができる。特定の例では、バイトを記憶するテーブルについては、調整は必要がなく、ビットゼロでの挿入位置３０３が使用されることができる。ハーフワードを記憶するテーブルについては、アセンブラは、第２のレジスタファイル３１４のインデックス部３１９内の１ビットオフセットとしてオフセットデータを符号化することができ、インデックス部３１９内のビット１に挿入位置３１３を提供する。ワードを記憶するテーブルについては、アセンブラは、第２のレジスタファイル３２４の無符号(unsigned)の即値フィールド(immediate field) 内の２ビットオフセットとしてオフセットデータ３２７を符号化することができ、インデックス部３２９内のビット２に挿入位置３２３を提供する。ダブルワードを記憶するテーブルについては、アセンブラは、第２のレジスタ３３４の無符号の即値フィールド内の３ビットオフセット内でオフセット情報３３７を符号化することができ、インデックス部３３９内のビット３に挿入位置３３３を提供する。
【００３２】
一般に、（それぞれの第１のレジスタファイル３０２，３１２，３２２，および３３２のそれぞれのビットフィールドデータ３０６，３１６，３２６，および３３６の挿入後に）第２のレジスタファイル３０４，３１４，３２４および３３４はテーブル部３０８，３１８，３２８および３３８内にテーブルへのアドレスおよび、インデックス部３０９，３１９，３２９および３３９内にテーブル内のエレメントへのインデックスを含む。挿入位置３０３，３１３，３２３，および３３３はテーブル内のデータエレメントのサイズに翻訳される(translates to)ビットオフセットを提供する。テーブルをテーブルサイズと等しいかそれより大きい２の累乗のサイズであるメモリ内の論理境界に整列することによって、このテーブル内のエレメントは図３に図示された抽出シフト挿入テクニックを使用してアクセスされることができる。
【００３３】
特定の実施形態では、第２のレジスタに記憶されたデータは、図２に図示されたメモリ２０２のテーブル２０６内に記憶されたエレメント２０７のような、メモリの中のテーブル内のエレメントへの無符号の即値アドレスとして使用されることができる。このアドレスはテーブル内のエレメントに書き込むためかまたはこのエレメントからデータを読み出すために使用されることができる。
【００３４】
図４はテーブル内のエレメントのアドレスを決定する方法の特定の例示的な実施形態のフローチャートである。４０２で、この方法はメモリに記憶されたテーブル内の位置を識別するために単一の命令を実行することを含む。単一の命令は第１のレジスタからビットフィールドデータを抽出すること、およびこのビットフィールドデータを第２のレジスタのインデックス部内に挿入することをプロセッサによって実行可能であり、ここで第２のレジスタはテーブルアドレス部およびインデックス部を含む。テーブルアドレス部はテーブルと関連するメモリ位置を識別するテーブルアドレスを含み、ここでテーブルアドレスおよびビットフィールドデータは結合してテーブル内のエレメントへのインデックスアドレスを形成する。４０４に進んで、この方法はこのインデックスされたアドレスでメモリにアクセスするために第２の命令を実行することを含む。第２の命令はこのテーブル内のインデックスされたアドレスからデータを読み出すことまたはこのアドレスへデータを書き込むことをプロセッサによって実行可能である。この方法は４０６で終る。
【００３５】
特定の例示的な実施形態では、この方法はまたテーブルアドレスおよびテーブルインデックスに基づいてテーブル内のエレメントにアクセスすることも含むことができる。別の特定の実施形態では、単一の実行サイクルにおいて、ビットフィールドデータが抽出され、第２のレジスタ内に挿入される。第１および第２のレジスタは図１に図示された汎用レジスタファイル１２６の汎用レジスタのような、汎用レジスタファイル内のレジスタであってもよい。別の特定の実施形態では、抽出されたビットフィールドデータはテーブル内に記憶されたデータ構造に関連する挿入点に挿入される。例えば、図３に図示されたオフセット情報３０７，３１７，３２７，および３３７のような、オフセット情報は抽出されたビットフィールドデータの挿入のための（図３に図示された挿入位置３０３，３１３，３２３，および３３３のような）挿入位置を決定するために１つまたはそれ以上の実行ユニットによって使用されることができる。特に、オフセット情報はそのテーブルがバイト、ハーフワード、ワード、またはダブルワードを記憶するかどうかに応じて変化する挿入点を定義することができる。特に、オフセット情報は特定のテーブル内に記憶されたデータのタイプを定義することができる。実行ユニットは、テーブル内のエレメントへのアドレスを計算するために、そしてこのテーブルから適当なサイズのデータ構造を検索するために、論理境界に関連するメモリ内のテーブルの位置を使用し、そしてオフセット情報を使用することができる。
【００３６】
図５はテーブル内のエレメントのアドレスを決定する方法の第２の特定の例示的な実施形態のフローチャートである。５０２で、この方法はビットフィールドデータを第１のレジスタから抽出することを含む。５０４に進んでこの方法はテーブルアドレス部およびインデックス部を含む第２のレジスタのインデックス部内にこの抽出されたビットフィールドデータを挿入することを含む。第２のレジスタはテーブルと関連するメモリ位置を識別するテーブルアドレス部内に記憶されたテーブルアドレスデータを含む。テーブルアドレスデータおよび抽出されたビットフィールドデータはメモリ位置およびテーブル内のエレメントへのテーブルインデックスを定義する。５０６に進んで、この方法はまたテーブルアドレスおよびテーブルインデックスに基づいてテーブル内のエレメントにアクセスすることも含む。この方法は５０８で終る。
【００３７】
特定の実例では、図１〜５に関して記述された抽出シフト付加命令はテーブル内への非常に高速なルックアップを供給する。別の特定の実施形態では、抽出シフト付加命令はテーブル内の特定のエレメントへのアクセスを供給するためにシングルシフトおよびマスキングを使用することができる。
【００３８】
図６はテーブル内のエレメントのアドレスを決定するためのプロセッサを含む典型的な無線通信装置６００のブロック図である。携帯型通信装置６００はビットフィールドデータを備える第１のレジスタ６６２、テーブルアドレス部およびインデックス部を備える第２のレジスタ６６４、および図１〜５に関して記述されたような抽出シフト付加演算を実行することをＤＳＰ６１０内の実行ユニットによって実行可能である抽出シフト付加命令６６８を含むディジタル信号プロセッサ（ＤＳＰ）６１０を含むことができる。携帯型通信装置６００はまたテーブルエレメント６６１を含んでいるテーブル６６０を含むメモリ６３２も含む。特定の実施形態では、ＤＳＰ６１０の実行ユニットは第１のレジスタ６６２からビットフィールドを抽出するため、および第２のレジスタ６６４のインデックス部内にこのビットフィールドを挿入しテーブル６６０内のエレメント６６１と関連するアドレスを決定するために抽出シフト付加命令６６８を実行することができる。エレメント６６１に記憶されたデータは図１〜５に関して記述されたように、決定されたアドレスを使用して検索されることができる。
【００３９】
図６はまたディジタル信号プロセッサ６１０に、およびディスプレイ６２８に結合されたディスプレイコントローラ６２６も示す。さらに、入力装置６３０はディジタル信号プロセッサ６１０に結合されている。そのうえ、メモリ６３２はディジタル信号プロセッサ６１０に結合されている。コーダ／デコーダ（ＣＯＤＥＣ）６３４もまたディジタル信号プロセッサ６１０に結合されることができる。スピーカ６３６およびマイクロホン６３８はＣＯＤＥＣ６３４に結合されることができる。
【００４０】
図６はまた無線コントローラ６４０がディジタル信号プロセッサ６１０にそして無線アンテナ６４２に結合されうることも示す。特定の実施形態では、電源６４４はオンチップシステム６２２に結合されている。さらに、特定の実施形態では、図６に図示されたように、ディスプレイ６２８、入力装置６３０、スピーカ６３６、マイクロホン６３８、無線アンテナ６４２、および電源６４４はオンチップシステム６２２の外部にある。しかしながら、各々はオンチップシステム６２２のコンポーネントに結合されている。
【００４１】
ビットフィールドを含んでいる第１のレジスタ６６２およびテーブルアドレス部とインデックス部とを含んでいる第２のレジスタ６６４がディジタル信号プロセッサ６１０の別々のコンポーネントとして描写されているが、両エレメント６６２および６６４が、そうではなく図１に図示された汎用レジスタファイル１２６のような、汎用レジスタに統合されうることは理解されるべきである。そのうえ、ビットフィールドを含んでいる第１のレジスタ６６２およびテーブルアドレス部とインデックス部とを含んでいる第２のレジスタ６６４がＤＳＰ６１０内に描写されているが、他の処理エレメントはまた、テーブル６６０内のエレメント６６１へのテーブルアドレスおよびインデックスを生成するために２つの異なるレジスタからのレジスタデータとともに抽出シフト付加命令６６８を使用することができることも理解されるべきである。例えば、（プロセッサを含むことができる）ディスプレイコントローラ６２６、（プロセッサを含むことができる）無線コントローラ６４０、他のプロセッサ回路、またはそれらの任意の組合せを含んでいる、例えば、他のコンポーネントは単一クロックサイクル内において抽出シフト付加命令を実行するように適合されているプロセッサを含んでもよい。
【００４２】
当業者は本書中に開示された実施形態に関連して記述された様々な例示的な論理ブロック、構成、モジュール、回路、およびアルゴリズムステップは電子ハードウェア、コンピュータソフトウェア、または両者の組合せとして実施されうることをさらに認識するであろう。ハードウェアおよびソフトウェアのこの互換性を明確に説明するために、様々な例示的なコンポーネント、ブロック、構成、モジュール、回路、およびステップは、一般にそれらの機能に関して上述されている。そのような機能がハードウェアまたはソフトウェアとして実施されるかどうかは特定のアプリケーションとシステム全体に課された設計の制約とによる。当業者は特定のアプリケーション毎に様々な方法で記述された機能を実施できるが、しかしそのような実施の決定が本開示の範囲からの逸脱を引き起こすものとして解釈されてはならない。
【００４３】
本書中に開示された実施形態に関連して記述されたアルゴリズムまたは方法のステップはハードウェアで、プロセッサにより実施されるソフトウェアモジュールで、またはこの２つの組合せで直接具現化されることができる。ソフトウェアモジュールはＲＡＭメモリ、フラッシュメモリ、ＲＯＭメモリ、ＰＲＯＭメモリ、ＥＰＲＯＭメモリ、ＥＥＰＲＯＭメモリ、レジスタ、ハードディスク、着脱可能型ディスク、ＣＤ−ＲＯＭ、あるいはこの技術分野において知られている任意の他の形式の記憶媒体の中に存在してもよい。典型的な記憶媒体はプロセッサが記憶媒体から情報を読み取ることができ、そして記憶媒体へ情報を書き込むことができるようにプロセッサに結合される。代替例では、記憶媒体はプロセッサに一体化されることができる。プロセッサおよび記憶媒体はＡＳＩＣ内に存在してもよい。ＡＳＩＣは計算装置またはユーザ端末内に存在してもよい。代替例では、プロセッサおよび記憶媒体はディスクリートコンポーネントとして計算装置またはユーザ端末内に存在してもよい。
【００４４】
開示された実施形態の以上の説明は、当業者が開示された実施形態を製作または使用することを可能とするために提供される。これらの実施形態への様々な変更は当業者にはたやすく明白であるだろうし、そしてこの中に定義された一般的な原理はこの開示の精神または範囲から逸脱すること無しに他の実施形態に適用されてもよい。したがって、本開示は本書中に示された実施形態に限定されることは意図されておらず、特許請求の範囲によって規定されたような原理および新規な特徴と整合する可能な限り最も広い範囲が許容されるべきである。
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
［Ｃ１］
下記を具備する方法：
メモリに記憶されたテーブル内の位置を識別するために単一の命令を実行すること、該単一の命令はプロセッサによって下記を実行可能である：
第１のレジスタからビットフィールドデータを抽出すること；および
該ビットフィールドデータを第２のレジスタのインデックス部内に挿入すること、該第２のレジスタはテーブルアドレス部およびインデックス部を含む、該テーブルアドレス部はテーブルに関連するメモリ位置を識別するテーブルアドレスを含む；
ここにおいて該テーブルアドレスおよび該ビットフィールドデータは結合して該テーブル内のエレメントへのインデックスされたアドレスを形成する。
［Ｃ２］
該インデックスされたアドレスで該メモリにアクセスするために第２の命令を実行することをさらに具備し、該第２の命令は該テーブル内の該インデックスされたアドレスからデータを読み出すことまたは該アドレスにデータを書き込むことを該プロセッサによって実行可能である、Ｃ１記載の方法。
［Ｃ３］
該テーブルは該テーブルのサイズより大きいかまたは等しい２の累乗のサイズであるメモリ位置に整列される、Ｃ１記載の方法。
［Ｃ４］
該テーブルは４キロバイトテーブルを具備するおよび該テーブルは該メモリの４キロバイト境界に整列される、Ｃ３記載の方法。
［Ｃ５］
該抽出されたビットフィールドデータは該テーブル内に記憶されたテーブルエントリのタイプに基づいた挿入点で挿入される、Ｃ１記載の方法。
［Ｃ６］
該テーブルがバイトのデータを記憶する時には該挿入点はビット０である、Ｃ５記載の方法。
［Ｃ７］
該テーブルがハーフワードを記憶する時には該挿入点はビット１である、Ｃ５記載の方法。
［Ｃ８］
該テーブルがワードを記憶する時には該挿入点はビット２である、Ｃ５記載の方法。
［Ｃ９］
該テーブルがダブルワードを記憶する時には該挿入点はビット３である、Ｃ５記載の方法。
［Ｃ１０］
下記を具備するプロセッサ：
ビットフィールドを含んでいる第１のレジスタ；
テーブルアドレス部およびインデックス部を含んでいる第２のレジスタ、該テーブルアドレス部はメモリ内のテーブルの位置を識別するテーブルアドレスを含んでいる；およ  び、
該第１のレジスタの該ビットフィールドからビットフィールドデータを抽出するために、および、該第２のレジスタの該インデックス部内に該抽出されたビットフィールドデータを挿入して該テーブル内のエレメントへのアドレスを生成するために、単一の命令を処理することによってアドレスを生成するように適合された実行ユニット。
［Ｃ１１］
該実行ユニットはビットをシフトするためにシフタを含む、Ｃ１０記載のプロセッサ。
［Ｃ１２］
該シフタは該抽出されたビットフィールドデータを所定数のビットだけシフトするように適合され、およびシフトされたビットフィールドデータは付加演算を使用して該インデックス部に挿入される、Ｃ１１記載のプロセッサ。
［Ｃ１３］
該シフタは双方向シフタを具備する、Ｃ１１記載のプロセッサ。
［Ｃ１４］
該テーブルは該テーブルのサイズより大きいかまたは等しい２の累乗であるメモリ境界に整列される、Ｃ１０記載のプロセッサ。
［Ｃ１５］
該テーブルアドレス部は該第２のレジスタの最上位ビット部を具備する、Ｃ１０記載のプロセッサ。
［Ｃ１６］
該抽出されたビットフィールドデータは該第２のレジスタの最下位ビット部内に挿入される、Ｃ１０記載のプロセッサ。
［Ｃ１７］
該抽出されたビットフィールドデータは該テーブル内に記憶されたデータのタイプを示す該最下位ビット部内の挿入点で挿入される、Ｃ１６記載のプロセッサ。
［Ｃ１８］
該挿入点はコンパイルタイムでアセンブラによって符号化される、Ｃ１７記載のプロセッサ。
［Ｃ１９］
テーブル内へのアドレスを決定する方法、該方法は下記を具備する：
第１のレジスタからビットフィールドデータを抽出すること；および
テーブルアドレス部およびインデックス部を含む第２のレジスタの該インデックス部内に該抽出されたビットフィールドデータを挿入すること、該第２のレジスタはテーブルに関連するメモリ位置を識別する該テーブルアドレス部内に記憶されたテーブルアドレスデータを含み、該テーブルアドレスデータおよび該抽出されたビットフィールドデータは該メモリ位置および該テーブル内のエレメントへのテーブルインデックスを供給する。
［Ｃ２０］
該テーブルアドレスおよび該テーブルインデックスに基づいて該テーブル内の該エレメントにアクセスすることをさらに具備する、Ｃ１９記載の方法。
［Ｃ２１］
該ビットフィールドデータを抽出することおよび該抽出されたビットフィールドデータを挿入することは単一の命令のプロセッサによる実行に応じて実行される、Ｃ１９記載の方法。
［Ｃ２２］
該ビットフィールドデータを抽出することおよび該抽出されたビットフィールドデータを挿入することは単一の実行サイクル内で実行される、Ｃ１９記載の方法。
［Ｃ２３］
該第１のレジスタおよび該第２のレジスタは汎用レジスタファイル内のレジスタである、Ｃ１９記載の方法。
［Ｃ２４］
該抽出されたビットフィールドデータは該テーブル内に記憶されたデータ構造によって決定される挿入点で挿入される、Ｃ１９記載の方法。
［Ｃ２５］
該挿入点は該データ構造がバイト、ハーフワード、ワード、またはダブルワードかどうかによって異なる、Ｃ２４記載の方法。
【図１】
0005490711.tif 000002
【図２】
0005490711.tif 000003
【図３】
0005490711.tif 000004
【図４】
0005490711.tif 000005
【図５】
0005490711.tif 000006
【図６】
0005490711.tif 000007