(57)【特許請求の範囲】
【請求項１】
ベクトルアライメント命令を実行するための方法であって、
第1のプロセッサで作成された開始場所に、前記第1のプロセッサと第2のプロセッサとの間で共有されたスカラーレジスタファイル内のレジスタからアクセスするステップであって、前記第1のプロセッサは汎用(GP)プロセッサであり、前記第2のプロセッサは単一命令多重データ(SIMD)ベクトルプロセッサである、ステップと、
前記第2のプロセッサ上で、ベクトルレジスタファイル(VRF)のレジスタ内の前記開始場所で始まる1組のデータ値を、前記VRFの標的レジスタに1組のアライメントされたデータ値として記憶されるようにアライメントするステップと、
前記VRFの標的レジスタに前記アライメントされた１組のデータ値を記憶するステップとを含む方法。
【請求項２】
ベクトルアライメント命令を実行するための方法であって、
第1のプロセッサ上で作成された開始場所に、前記第1のプロセッサと第2のプロセッサとの間で共有されたスカラーレジスタファイル内のレジスタからアクセスするステップと、
前記第2のプロセッサ上で、ベクトルレジスタファイル(VRF)のレジスタ内の前記開始場所で始まる1組のデータ値を、前記VRFの標的レジスタに1組のアライメントされたデータ値として記憶されるようにアライメントするステップであって、スパンビットが、前記VRFの第1のレジスタ群のうちの第1のレジスタまたは前記VRFの第2のレジスタ群のうちの第2のレジスタを前記VRFの前記レジスタとして選択する、ステップと、
前記VRFの標的レジスタに前記アライメントされた１組のデータ値を記憶するステップと
を含む方法。
【請求項３】
前記スパンビットは前記開始場所の最上位ビットである、請求項2に記載の方法。
【請求項４】
前記第1のレジスタ群のうちの前記第1のレジスタは、前記ベクトルアライメント命令のVuフィールドによって識別され、前記第1のレジスタ群のそれ以外のレジスタは、レジスタの命令指定による順序付けに従って識別される、請求項2に記載の方法。
【請求項５】
ベクトルアライメント命令を実行するための方法であって、
第1のプロセッサ上で作成され、前記第1のプロセッサのスカラーレジスタファイル内のレジスタに記憶され、かつ前記第1のプロセッサと前記第2のプロセッサとの間で共有される値からスパンビットおよび開始場所にアクセスするステップと、
前記第2のプロセッサ上でベクトルレジスタファイル(VRF)の1組のレジスタ内の前記開始場所で始まる1組のデータ値を、前記VRFの標的レジスタの組に1組のアライメントされたデータ値として記憶されるようにアライメントするステップであって、前記VRFの前記1組のレジスタは前記スパンビットに基づいて第1のレジスタセットまたは第2のレジスタセットとして選択される、アライメントするステップと、
前記VRFの標的レジスタに前記アライメントされた１組のデータ値を記憶するステップと
を含む、方法。
【請求項６】
前記第1のレジスタセットは、Vu識別されたレジスタで始まるリニアプラスワン順序付けにおける3つのレジスタからなる組であるとともに前記第2のレジスタセットは、Vu+k識別されたレジスタで始まるリニアプラスkプラスワン順序付けにおける3つのレジスタからなる組であり、かつkは前記アライメント命令によって1以上の整数となるように指定される、請求項5に記載の方法。
【請求項７】
前記第1のレジスタセットは、Vu識別されたレジスタで始まるリニアプラスツー順序付けにおける3つのレジスタからなる組であるとともに前記第2のレジスタセットは、Vu+k識別されたレジスタで始まるリニアプラスkプラスツー順序付けにおける3つのレジスタからなる組であり、かつkは前記アライメント命令によって1以上の整数となるように指定される、請求項5に記載の方法。
【請求項８】
前記第1のレジスタセットはVu、Vu+P1、Vu+P2であり、前記第2のレジスタセットはVu+P1、Vu+P2、Vu+P3であり、かつP1、P2、P3はアクセス可能なVRFレジスタの範囲内に来るように前記アライメント命令によって指定された素数である、請求項5に記載の方法。
【請求項９】
前記スカラーレジスタファイルの前記レジスタ、および前記標的レジスタは、前記ベクトルアライメント命令内で指定され、前記VRFの前記レジスタは、ベクトルユニット(Vu)ベースレジスタに記憶された値によって間接的に識別される、請求項1、２、および５のうちのいずれか一項に記載の方法。
【請求項１０】
前記第1のプロセッサ上の演算に影響を及ぼすことなく開始場所のアクセスが発生可能なように、前記スカラーレジスタファイルの前記レジスタが、前記第2のプロセッサに割り当てられたデータポートを通じて共有される、請求項1、２、および５のうちのいずれか一項に記載の方法。
【請求項１１】
ベクトルアライメントおよび演算命令を実行するための方法であって、
第1のプロセッサ上で作成された開始場所に対して、前記第1のプロセッサと第2のプロセッサとの間で共有されたスカラーレジスタファイル内のレジスタからアクセスするステップであって、前記第1のプロセッサは汎用(GP)プロセッサであり、前記第2のプロセッサは単一命令多重データ(SIMD)ベクトルプロセッサである、ステップと、
前記第2のプロセッサ上でベクトルレジスタファイル(VRF)のレジスタ内の前記開始場所で始まる1組のデータ値を、1組のアライメントされたデータ値が作成されるようにアライメントするステップと、
前記VRFの標的レジスタに記憶される結果を作成するために前記アライメントされたデータ値に対して前記ベクトルアライメントおよび演算命令に従って演算をするステップと、
を含む方法。
【請求項１２】
前記第1のプロセッサ上の演算に影響を及ぼすことなく前記開始場所の前記アクセスが発生可能なように、前記スカラーレジスタファイル内の前記レジスタが、前記第2のプロセッサに割り当てられたデータポートを通じて共有される、請求項11に記載の方法。
【請求項１３】
前記スカラーレジスタファイル内の前記レジスタ、および前記標的レジスタは、前記ベクトルアライメントおよび演算命令において指定され、前記VRFの前記レジスタはベクトルユニット(Vu)ベースレジスタに記憶された値によって間接的に識別される、請求項12に記載の方法。
【請求項１４】
ベクトルマスクアライメント命令を実行するための方法であって、
第1のプロセッサ上で作成されたマスクおよび開始場所に対して、前記第1のプロセッサと第2のプロセッサとの間で共有されたスカラーレジスタファイル内の第1のレジスタおよび第2のレジスタからアクセスするステップであって、前記第1のプロセッサは汎用(GP)プロセッサであり、前記第2のプロセッサは単一命令多重データ(SIMD)ベクトルプロセッサである、ステップと、
前記マスク内のイネーブルビットに従って前記第2のプロセッサ上でベクトルレジスタファイル(VRF)の1組のレジスタを識別するように前記マスクを適用するステップと、
第2のプロセッサ上で前記VRFの前記識別された1組のレジスタ内の前記開始場所で始まる1組のデータ値を、前記VRFの標的レジスタの組に1組のアライメントされたデータ値として記憶されるようにアライメントするステップと、
前記VRFの標的レジスタの組に前記アライメントされた1組のデータ値を記憶するステップと
を含む方法。
【請求項１５】
前記第1のプロセッサ上の演算に影響を及ぼすことなく前記マスクおよび前記開始場所の前記アクセスが発生可能なように、前記第1のレジスタおよび前記第2のレジスタが、前記第2のプロセッサに割り当てられたデータポートを通じて共有される、請求項14に記載の方法。
【請求項１６】
ベクトルアライメント命令を実行するための装置であって、
1つまたは複数のレジスタ値を第2のプロセッサと共有するように構成された第1のプロセッサと関連付けされたスカラーレジスタファイルであって、前記1つまたは複数のレジスタ値はベクトルアライメント命令において指定されたRtアドレスに従って前記スカラーレジスタファイルからアクセスされ、前記第1のプロセッサは汎用(GP)プロセッサであり、前記第2のプロセッサは単一命令多重データ(SIMD)ベクトルプロセッサであり、前記1つまたは複数のレジスタ値は、前記GPプロセッサにより作成される、スカラーレジスタファイルと、
ベクトルレジスタファイル(VRF)の複数のレジスタ内の識別されたデータを、前記ベクトルアライメント命令、および前記1つまたは複数のレジスタ値から決定されたアライメント開始場所に従ってアライメントするように構成された前記第2のプロセッサ内のアライメント回路と、
前記アライメント回路から前記アライメントされたデータを選択し、前記ベクトルアライメント命令によって指定されたアライメント記憶アドレスに従って、前記アライメントされたデータを前記ベクトルレジスタファイル内に記憶するように構成された記憶回路と、
を備える装置。
【請求項１７】
前記開始場所は前記複数のレジスタの開始レジスタ内にある、請求項16に記載の装置。
【請求項１８】
ベクトルアライメント命令を実行するための装置であって、
1つまたは複数のレジスタ値を第2のプロセッサと共有するように構成された第1のプロセッサと関連付けされたスカラーレジスタファイルであって、前記1つまたは複数のレジスタ値はベクトルアライメント命令において指定されたRtアドレスに従って前記スカラーレジスタファイルからアクセスされる、スカラーレジスタファイルと、
ベクトルレジスタファイル(VRF)の複数のレジスタ内の識別されたデータを、前記ベクトルアライメント命令、および前記1つまたは複数のレジスタ値から決定されたアライメント開始場所に従ってアライメントするように構成された前記第2のプロセッサ内のアライメント回路と、
前記アライメント回路から前記アライメントされたデータを選択し、前記ベクトルアライメント命令によって指定されたアライメント記憶アドレスに従って、前記アライメントされたデータを前記ベクトルレジスタファイル内に記憶するように構成された記憶回路と
を備え、
ダブルアライメント命令は、スパンコードの状態に従って前記VRFの第1のレジスタセットまたは第2のレジスタセットを識別するために、前記1つまたは複数のレジスタ値から選択された前記スパンコードを指定する、装置。
【請求項１９】
マスクアライメント命令が、マスク内の1つまたは複数のイネーブルビットに従って、前記VRFから選択される1つまたは複数のレジスタ内に記憶されたデータのアライメントを識別するために、前記1つまたは複数のレジスタ値から選択されるマスクを指定する、請求項16に記載の装置。
【請求項２０】
前記第1のプロセッサ上の演算に影響を及ぼすことなく前記レジスタ値の前記アクセスが発生可能なように、前記第1のプロセッサ内の前記スカラーレジスタファイルからアクセスされる前記1つまたは複数のレジスタ値が、前記第2のプロセッサに割り当てられたデータポートを通じて共有される、請求項16に記載の装置。
【請求項２１】
コンピュータ読取り可能なプログラムデータおよびコードによって符号化されたコンピュータ可読記憶媒体であって、前記プログラムデータおよびコードは実行時に、
第1のプロセッサで作成された開始場所に対して、前記第1のプロセッサと第2のプロセッサとの間で共有されたスカラーレジスタファイル内のレジスタからアクセスすることであって、前記第1のプロセッサは汎用(GP)プロセッサであり、前記第2のプロセッサは単一命令多重データ(SIMD)ベクトルプロセッサである、こと、
第2のプロセッサ上でベクトルレジスタファイル(VRF)のレジスタ内の前記開始場所で始まる1組のデータ値を、前記VRF内の標的レジスタに1組のアライメントされたデータ値として記憶されるようにアライメントすること、および
前記VRFの標的レジスタに前記アライメントされた1組のデータ値を記憶すること
を行うように動作可能である、コンピュータ可読記憶媒体。
【請求項２２】
ベクトルアライメント命令を実行するための装置であって、
第1のプロセッサ内のスカラーレジスタファイルからアクセスされる1つまたは複数のレジスタ値を第2のプロセッサと共有するための手段であって、前記1つまたは複数のレジスタ値はベクトルアライメント命令において指定されたRtアドレスに従ってアクセスされ、前記共有されたレジスタ値のうちの1つから開始場所が決定され、前記第1のプロセッサは汎用(GP)プロセッサであり、前記第2のプロセッサは単一命令多重データ(SIMD)ベクトルプロセッサであり、前記1つまたは複数のレジスタ値は、前記GPプロセッサにより作成される、共有するための手段と、
前記ベクトルアライメント命令に従って、ベクトルレジスタファイル(VRF)の開始Vuレジスタ内の前記開始場所と前記VRFの最終Vuレジスタの終了場所との間で識別された前記第2のプロセッサ内のデータをアライメントするための手段と、
アライメント回路から前記アライメントされたデータを選択するとともに前記ベクトルアライメント命令によって指定されたアライメント記憶アドレスに従って前記アライメントされたデータを前記ベクトルレジスタファイル内に記憶するための手段と、
を備える装置。
【発明の詳細な説明】
【技術分野】
【０００１】
優先権出願
本出願は、参照によりその全体を本明細書に組み込むものとする2013年2月26日に出願された「VECTOR REGISTER ADDRESSING AND FUNCTIONS BASED ON A SCALAR REGISTER DATA VALUE」と題する米国特許出願第13/777,297号に対する優先権を主張するものである。
【０００２】
本開示は一般的には、データアライメントの分野に関し、またより詳細にはアライメントされていないメモリアドレスにある２倍幅のデータ値に効率よくアクセスすることに関する。
【背景技術】
【０００３】
携帯電話、ラップトップコンピュータ、パーソナルデータアシスタント(PDA)その他などの多くのポータブル製品は、通信やマルチメディアプログラムなどのプログラムを実行する処理システムを利用する。このような製品向けの処理システムは、複数のプロセッサ、マルチスレッドプロセッサ、命令およびデータを記憶するためのマルチレベルのキャッシュを含んだ複雑なメモリシステム、コントローラ、通信インターフェースなどの周辺デバイス、ならびに固定関数論理ブロックを、たとえば単一のチップ上に構成させて含んでよい。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
プロセッサ内で受け取られかつプロセッサによって演算を受けるデータは、情報を表すのに必要な計測精度のレベルに従ってバイナリ形式で量子化された情報の値である。標準クラスのデータまたはデータタイプは、8ビットのバイト、16ビットのハーフワード、32ビットのワード、64ビットの２倍ワード、128ビットの４倍ワードとして表された整数値や、32ビットの単精度値、64ビットの倍精度値、その他として表された浮動小数点値などのいくつかのバイナリビットに従ってグループ分けされる。多くのプロセッサは、複数のデータタイプをサポートするとともに、処理のためにデータにアクセスする効率のよい方法を要求する。一般に各データにはプロセッサのメモリシステム内のある場所(location)を表した1つのアドレスが割り当てられる。多くのメモリシステムではそのメモリは、4バイト、2つのハーフワード、または1つのワードを各32ビットの場所に記憶することを可能にする32ビットなどの標準精度ビット幅に従って編成される。パックされたデータの組に関する単一命令多重データ(SIMD)プロセッサやSIMDベクトルプロセッサなどのベクトルプロセッサと関連付けされたものなどの他の処理システムではそのメモリシステムは、256ビット、512ビット、その他の幅などの標準精度値の群に基づいたより大きなビット幅の辺りで編成され得る。たとえば512ビット幅のメモリ場所を有するメモリシステムでは各場所は、64バイトまたは32個のハーフワードまたは16個のワードまたは8個の２倍ワードまたは4個の４倍ワードを記憶することができる。このような大きな幅のメモリ場所は、SIMDベクトルプロセッサのレジスタファイル内に配置され得る。このようなシステムでは、標準プロセッサメモリアクセス命令を用いて効率よくアクセスするためにはアドレス可能なメモリ場所に対するデータアライメントが重要である。しかしこのようなデータアライメントは必ずしも実現が容易ではない。たとえばデータ構造がメモリ場所の幅の倍数にならないことがある。さらに、任意のサイズをもつデータ構造の開始や終了が適正にアライメントされている保証はない。したがって、アライメントされていないデータへの効率のよいアクセスは困難な問題である。
【課題を解決するための手段】
【０００５】
本開示は、そのいくつかの態様の中でも、データをアライメントするための効率がよりよい方法および装置を提供するので有利であると認識する。そうした目的のために、本発明の一実施形態は、ベクトルアライメント命令を実行するための方法に対処する。第1のプロセッサ上の開始場所が、第1のプロセッサと第2のプロセッサとの間で共有されたスカラーレジスタファイル内のレジスタからアクセスされる。第2のプロセッサ上において、ベクトルレジスタファイル(VRF)のレジスタ内の開始場所で始まる1組のデータ値が、VRFの標的レジスタの1組のアライメントされたデータ値として記憶されるようにしてアライメントされる。
【０００６】
別の実施形態は、ベクトルアライメントおよび演算命令を実行するための方法に対処する。第1のプロセッサ上に作成された開始場所が、第1のプロセッサと第2のプロセッサとの間で共有されたスカラーレジスタファイル内のレジスタからアクセスされる。第2のプロセッサ上において、ベクトルレジスタファイル(VRF)のレジスタ内の開始場所で始まる1組のデータ値は、1組のアライメントされたデータ値が作成されるようにアライメントされる。このアライメントされたデータ値は、VRFの標的レジスタに記録される結果を作成するためにベクトルアライメントおよび演算命令に従って演算される。
【０００７】
別の実施形態は、ベクトルマスクアライメント命令を実行するための方法に対処する。第1のプロセッサ上で作成されたマスクおよび開始場所が、第1のプロセッサと第2のプロセッサとの間で共有されたスカラーレジスタファイル内の第1のレジスタおよび第2のレジスタからアクセスされる。このマスクは、マスク内のイネーブルビットに従って第2のプロセッサ上でベクトルレジスタファイル(VRF)の1組のレジスタを識別するために適用される。第2のプロセッサ上において、ベクトルレジスタファイル(VRF)の識別された組のレジスタ内の開始場所で始まる1組のデータ値が、VRFの標的の組のレジスタにおいて1組のアライメントされたデータ値として記憶されるようにしてアライメントされる。
【０００８】
別の実施形態は、ベクトルアライメント命令を実行するための装置に対処する。第1のプロセッサに関連付けされたスカラーレジスタファイルは第2のプロセッサと1つまたは複数のレジスタ値を共有するように構成され、この1つまたは複数のレジスタ値は、ベクトルアライメント命令において指定されたRtアドレスに従ってスカラーレジスタファイルからアクセスされる。第2のプロセッサ内のアライメント回路は、ベクトルアライメント命令および1つまたは複数のレジスタ値から決定されたアライメント開始場所に従って、ベクトルレジスタファイル(VRF)の複数のレジスタ内の識別されたデータをアライメントするように構成されている。アライメント回路からアライメントされたデータが選択されるとともに、ベクトルアライメント命令によって指定されたアライメント記憶アドレスに従ってアライメントされたデータをベクトルレジスタファイル内に記憶するように記憶回路が構成されている。
【０００９】
別の実施形態は、コンピュータ読取り可能なプログラムデータおよびコードによって符号化されたコンピュータ読取り可能な非一時的媒体に対処する。第1のプロセッサ上の開始場所が、第1のプロセッサと第2のプロセッサとの間で共有されたスカラーレジスタファイル内のレジスタからアクセスされる。第2のプロセッサ上において、ベクトルレジスタファイル(VRF)のレジスタ内の開始場所で始まる1組のデータ値が、VRFの標的レジスタに1組のアライメントされたデータ値として記憶されるようにしてアライメントされる。
【００１０】
また別の実施形態は、ベクトルアライメント命令を実行するための装置に対処する。第1のプロセッサ内のスカラーレジスタファイルからアクセスされる1つまたは複数のレジスタ値を第2のプロセッサと共有するための手段が利用され、この1つまたは複数のレジスタ値はベクトルアライメント命令において指定されたRtアドレスに従ってアクセスされ、この共有されたレジスタ値のうちの1つから開始場所が決定される。ベクトルアライメント命令に従ってベクトルレジスタファイル(VRF)の開始Vuレジスタ内の開始場所とVRFの最終Vuレジスタの終了場所との間で識別された第2のプロセッサ内のデータをアライメントするための手段が利用されている。アライメントされたデータをアライメント回路から選択するとともに、ベクトルアライメント命令によって指定されたアライメント記憶アドレスに従って、このアライメントされたデータをベクトルレジスタファイル内に記憶するための手段が利用されている。
【００１１】
本発明の他の実施形態については、本発明の様々な実施形態を例証のために図示し説明する以下の詳細な説明から当業者には容易に明らかになることが理解されよう。本発明は他の異なる実施形態が可能であること、また本発明の精神および趣旨を逸脱することなくそのいくつかの詳細を様々な他の点で修正可能であることが理解されよう。したがって、この図面および詳細な説明は本質的に例示と見なすべきであり制限と見なすべきではない。
【００１２】
本発明の様々な態様について、添付の図面において限定ではなく一例として例証する。
【図面の簡単な説明】
【００１３】
【図１】第1のアライメント関数の実施形態を示した図である。
【図２Ａ】第2のアライメント関数の実施形態を示した図である。
【図２Ｂ】第2のアライメント関数の実施形態を示した図である。
【図３Ａ】第1のアライメントサブシステムの実施形態を示した図である。
【図３Ｂ】第2のアライメントサブシステムの実施形態を示した図である。
【図４】データアライメントのプロセスに関する実施形態を示した図である。
【図５】中央処理ユニット(CPU)とベクトルコプロセッサなどのコプロセッサ(CoP)とを有するポータブルデバイスであって、このコプロセッサはベクトルアライメント関数を提供するとともにポータブルデバイスのリアルタイムの要件を満たすように構成されているポータブルデバイスを示した図である。
【発明を実施するための形態】
【００１４】
添付の図面と関連して以下に示した詳細な説明は本発明の様々な例示的な実施形態の説明を意図したものであり、本発明を実施し得る唯一の実施形態を表すことを意図したものではない。この詳細な説明は、本発明の完全な理解を提供する目的で具体的な詳細を含んでいる。しかしこれらの具体的な詳細を伴うことなく、本発明を実施し得ることは当業者には明らかであろう。ある例として、本発明の考え方が不明瞭になるのを避けるためによく知られた構造や構成要素をブロック図形式で示す。
【００１５】
データアライメントの問題やスカラー開始アドレス値の効率のよい作成に対処するために、ベクトルプロセッサの命令の組アーキテクチャ(ISA)内にアライメントタイプ命令が生成される。ベクトルプロセッサのベクトルレジスタファイル内の512ビットまたは1024ビットのベクトルレジスタなどの広いメモリ場所に記憶されたパックされたデータ要素に関する開始アドレスは、たとえばベクトルレジスタ内の任意のバイト場所にあってよい。メモリまたはレジスタファイル内に記憶されたこのようなデータ構造に関する開始アドレスは一般に、パックされた大きなデータ要素を処理するベクトルプロセッサ上で１つの開始アドレス値を作成する場合と比較して、汎用(GP)プロセッサの方がより効率よく作成される。GPプロセッサおよびベクトルコプロセッサを有するシステムでは、このような開始アドレス値を共有することは時間の浪費やシステムのパフォーマンスへの影響を生じる可能性がある。プロセッサコンプレックスを、本明細書に記載したような共有データポートを通じて結合されたGPプロセッサとベクトルコプロセッサを含むように編成することによって、その開始アドレスは、GPプロセッサ上で作成されるとともに、システムパフォーマンスに対する影響を伴うことなくデータアライメント演算を取り扱うベクトルプロセッサに対して効率のよいやり方で共有または転送され得る。アライメントタイプ命令は、主にアライメントの目的で使用されるが、これは、様々な複雑性レベルのアライメントプラス関数タイプ命令を含むように拡張されてもよい。CビットのVd=valign(Vu@Rt)命令と2CビットのVdd=valign(Vu@RT)命令とがSIMDベクトルコプロセッサの命令の組アーキテクチャ(ISA)に含まれる。
【００１６】
図1は、有利に利用し得る第1のアライメント関数100の実施形態を示す。図1は、2つのプロセッサにデータを要求する命令である1kbワードのVRFVd=valign(Vu@Rt)命令104の演算を示しており、ここでRtフィールドは、結合されたGPプロセッサのレジスタファイルから、記憶された値が取得されるレジスタを識別し、それ以外のフィールドはコプロセッサにあると解釈される。ベクトルコプロセッサは、B×Cビット(B=32でありかつCビット=1024ビット(1kb)である)のベクトルレジスタファイル(VRF)によって編成される。Vd=valign(Vu@Rt)命令104は、演算コード(Opc)105、命令特定フィールド106、ベクトルレジスタアドレスソースフィールドVu107、ベクトルレジスタアドレス宛先フィールドVd108、およびGPプロセッサ開始場所レジスタアドレスソースフィールドGP Rt109を備える。Vu107値は、直接アドレスレジスタ値として使用されてよく、また別法では、VRFのVuレジスタがベクトルユニットベースレジスタに記憶された値によって間接的に識別されてよい。アライメント命令の実行には、3つのCビットベクトルレジスタが関わる。2つのソースオペランドレジスタはVu112およびVu+1 114であり、また結果宛先レジスタはVd122である。
【００１７】
Vd=valign(Vu@Rt)命令104が受け取られて復号化されると、GPプロセッサ内のレジスタファイルからGPプロセッサレジスタGP Rt109がアクセスされる。たとえば、GP Rtのビット[6:0]が読み取られるとともに、データポートを通してベクトルコプロセッサに送られる。この例示的なシナリオにおけるGP Rt[6:0]値は、アライメント関数に関するVuレジスタ112内のバイト開始場所「a50」126を表す十進法値50である。このバイト開始場所「a50」126はまた、バイト「a0」127からのオフセットとして参照される得る。演算時には、バイト開始場所「a50」126からバイト「a127」128までのデータ要素がVuレジスタ112から選択されるとともに、バイト「b0」128からRt[6:0]-1バイト「b49」130までがVu+1レジスタ114から選択される。Vd=valign(Vu@Rt)命令104を実行すると、バイト「a50」126から「a127」128までがVdレジスタ122内の「0」位置131で始まるバイト「77」位置132までのバイトに移される。さらに、アライメント命令を実行すると、バイト「b0」129からRt[6:0]-1バイト「b49」130までが、Vdレジスタ122内の「78」位置133で始まるバイト「127」位置134までのバイトに移される。このことはまた、Vuレジスタ112からのRt[6:0]位置にあるバイトがVdレジスタ122の最下位バイトとなりかつVu+1レジスタ114からのRt[6:0]-1位置にあるバイトがVdレジスタ122の最上位バイトとなると考察することも可能である。
【００１８】
図2Aおよび図2Bは、有利に利用し得る第2のアライメント関数200および201のそれぞれの実施形態を示す。図2Aは、Rt[7]などのスパンビットがゼロでありかつRt[6:0]が十進法の50に等しいときの例示的なアライメント演算219を示す。図2Aは、2つのプロセッサにデータを要求する命令である2kbワードVRFVdd=valign(Vu@RT)命令203の演算を示しており、ここでGP Rt値が、結合されたGPプロセッサのGP Rtアドレス(data@Rt)334にあるレジスタファイルから取得され、それ以外のフィールド(命令203)はコプロセッサにおいて解釈される。ベクトルコプロセッサは、B×Cビット(B=32でありかつCビット=1024ビット(1kb)である)のベクトルレジスタファイル(VRF)によって編成される。Vdd=valign(Vu@Rt)命令203は、演算コード(Opc)205、命令特定フィールド206、ベクトルレジスタアドレスソースフィールドVu207、ベクトルレジスタアドレス宛先フィールドVdd208、およびGPプロセッサ開始場所レジスタアドレスソースフィールドGP Rt209を備える。Vu207値は直接アドレスレジスタ値として使用されてよく、また別法では、VRFのレジスタはベクトルユニット(Vu)ベースレジスタに記憶された値によって間接的に識別される。第2のアライメント命令の実行には、6つのCビットベクトルレジスタが関わる。4つのソースオペランドレジスタはVu212、Vu+1 214、Vu+2 216およびVu+3 218であり、また2つの結果宛先レジスタは結果の下側128ビットに対するVdd.L 222および結果の上側128ビットに対するVdd.H 224である。
【００１９】
スパンビットはGP Rtアドレス(data@Rt)334にあるGPレジスタファイルから読み取られたRt値のビット７であり、また代替的な実施形態では、そのスパンビットはGP Rtフィールド(図2Aの209および図2Bの210)の最上位ビットである。スパンビットは、この例示的な事例では、256バイト要素とするダブルレジスタの組のパックされたデータ要素に及ぶ開始アドレスを指示す。Vdd=valign(Vu@RT)命令によって、図1に示したVd=valign(Vu@RT)命令のアライメント演算に比較して2倍のアライメントが可能となる。例示的なVddアライメント関数200は、そのスパンビットに応じて4つのレジスタVu212、Vu+1 214、Vu+2 216およびVu+3 218からなる群から下位レジスタの組を選択する。図2Aの例示的なVddアライメント演算220に関しては、そのスパンビットがゼロでありかつ正しい選択ソースレジスタがVu212、Vu+1 214およびVu+2 216である。
【００２０】
Rt[7]=0などのスパンビットについてVdd=valign(Vu@RT)命令203を実行することによって、Vuレジスタ212からのオフセットRt[6:0]要素a50からバイト127要素a127までのバイトと、Vu+1レジスタ214からのバイト0要素a128からオフセットRt[6:0]-1要素a177までのバイトと、が選択された後に移され、これによりオフセットRt[6:0]要素a50にあるVuバイトがVdd.Lレジスタ222の最下位バイトとなりかつオフセットRt[6:0]-1要素a177にあるVu+1バイトがVdd.Lレジスタ222の最上位バイトとなる。さらにアライメント命令の実行によって、Vu+1レジスタ214からのオフセットRt[6:0]要素a178からバイト127要素a255までのバイトと、Vu+2レジスタ216からのバイト0要素b0からオフセットRt[6:0]-1要素b49までのバイトと、が選択された後に移され、これによりオフセットRt[6:0]要素a178にあるVu+1バイトがVdd.Hレジスタ224の最下位バイトとなりかつオフセットRt[6:0]-1要素b49にあるVu+2バイトがVdd.Hレジスタ224の最上位バイトとなる。
【００２１】
図2Bはまた、Rt[7]などのスパンビットが1でありかつRt[6:0]が十進法の254に等しいときの例示的なアライメント関数201を示す。例示的なVddアライメント関数201はそのスパンビットに応じて、4つのレジスタVu212、Vu+1 214、Vu+2 216およびVu+3 218からなる群から下位レジスタの組を選択する。例示的なVddアライメント演算220では、そのスパンビットが1でありかつ選択される正しいソースレジスタの組はVu+1 214、Vu+2 216およびVu+3 218である。したがってスパンビットによって、開始アドレス管理およびソースレジスタ選択のために追加のプログラム命令の使用を要することなく適当な組のレジスタを選択することが可能となる。
【００２２】
Rt[7]=1についてVdd=valign(Vu@RT)命令204を実行すると、Vu+1レジスタ214からのオフセットRt[6:0] 226からバイト127 227までのバイトと、Vu+2レジスタ216からのバイト0 228からオフセット(Rt[6:0]-1)=253 229にあるバイトまでのバイトと、が選択された後に移され、これによりオフセットRt[6:0] 226にあるVu+1バイトがVdd.Lレジスタ222の最下位バイト230となりかつオフセットRt[6:0]-1 229にあるVu+2バイトがVdd.Lレジスタ222の最上位バイト231となる。さらに、アライメント命令の実行によって、Vu+2レジスタ216からのオフセットRt[6:0] 232からバイト127 233までのバイトと、Vu+3レジスタ218からのバイト0 234からオフセット(Rt[6:0]-1)=253 235までのバイトと、が選択された後に移され、これによりオフセットRt[6:0] 232にあるVu+2バイトがVdd.Hレジスタ224の最下位バイト236となりかつオフセットRt[6:0]-1 235にあるVu+3バイトがVdd.Hレジスタ224の最上位バイト237となる。Vdd=valign(Vu@RT)命令204によれば、Vd=valign(Vu@RT)命令104のアライメント容量と比較してアライメントされていないデータの2倍のスパンをアライメントできるので有利である。Rt[7]を用いることによって、ソフトウェアに0から255バイトの範囲でGP Rtポインタの場所を明示的に管理させることなくダブルアライメントスパンが実現される。
【００２３】
図3Aは、有利に利用し得る第1のアライメントサブシステム300の実施形態を示す。第1のアライメントサブシステム300は、レベル1(L1)キャッシュ、L2キャッシュ、L3キャッシュ、システムメモリなどのメモリ階層302と、ベクトルコプロセッサ304と、汎用(GP)プロセッサ306と、を含む。GPプロセッサ306は、GPプロセッサレジスタファイル307と、GPプロセッサ306およびコプロセッサ304の間のデータポート305の一部分と、を含む。コプロセッサ304は、ベクトルプロセッサ命令レジスタ308と、命令復号ユニット309と、ベクトルレジスタファイル(VRF)310と、ベクトル関数ユニット312と、オペランドフェッチユニット320と、結果書込みユニット330と、コプロセッサ304およびGPプロセッサ306の間のデータポート305の一部分と、を含む。GPレジスタファイル307の内容は、データポート305を通じてGPプロセッサ306とコプロセッサ304との間で共有される。ベクトル関数ユニット312は、アライメントユニット314と、ベクトル実行ユニット315と、アライメントユニット314からの結果またはベクトル実行ユニット315からの結果のいずれかを選択するとともに選択された結果をVRF310に記憶するための記憶回路316と、を含む。VRF310は、B×Cビットレジスタファイルとして構成されてよい(ここでたとえば、B=32エントリでありかつCビット=1024ビット(1kb)である)。
【００２４】
第1のアライメントサブシステム300を演算させると、アライメント命令(図1の104、図2Aの203または図2Bの204)などのアライメント命令がベクトル命令レジスタ308で受け取られる。受け取られたアライメント命令は、GP Rtアドレスフィールド333と、復号化演算コード335と、Vuレジスタアドレス338と、VdまたはVddレジスタアドレス(または、複数のアドレス)339と、を含む複数の復号化された結果を生成する命令復号ユニット309で復号化される。
【００２５】
図2Aまたは図2Bに関して説明したようなスパン方法は、GP Rtアドレス(data@Rt)334にあるGPレジスタファイルから読み取られたRt値のビット７を使用するか、または代替的な実施形態では、そのスパンビットはGP Rtフィールド(図2Aの209および図2Bの210)の最上位ビットである。Rt[6:0]の下側のビットは、オペランドフェッチユニット320内のベクトルユニット(VU)ベースレジスタに記憶されたVRFアドレスからのオフセットを指示する。GP Rtアドレス(data@Rt)334にあるGPレジスタファイルから読み取られたレジスタベースのスパンビットRt[7]は、VUベースレジスタに基づいて選択するためのVRFのスパンを指示する。たとえば、Rt[7]=0ではVu、Vu+1、Vu+2レジスタが選択されることになり、またRt[7]=1ではVu+1、Vu+2、Vu+3レジスタが選択されることになる。演算コードベースのスパンビット337は、VUベースレジスタに基づいて選択するためのVRFのスパンを指示する。たとえば、スパンビット337が「0」に等しい場合はVu、Vu+1、Vu+2レジスタが選択されることになり、またスパンビット337が「1」に等しい場合はVu+1、Vu+2、Vu+3レジスタが選択されることになる。
【００２６】
GP Rtアドレスフィールド333は、データポート305を通じてGPプロセッサ306に転送され、GPプロセッサ306において、GP Rtアドレス(data@Rt)334で選択されるデータをもたらすGPプロセッサレジスタファイル307にアクセスするために使用される。data@Rt334は、アライメントユニット314による使用のためにデータポート305を通じてベクトルコプロセッサ304に転送される。代替的な実装形態では、オペランドフェッチユニット320からのVRF選択は、データポート305を通じて共有されたdata@Rt334値から取得されてもよい。アライメントユニット314は、ベクトルアライメント命令によって識別されたデータ要素を選択する複数のマルチプレクサを伴って実装されることがあり、このベクトルアライメント命令はGPプロセッサからフェッチされた開始場所と組み合わせてスパンビットフィールドを含み、選択したデータ要素を例示的な図1、図2Aまたは図2Bに示したような指定されたアライメント場所に位置する。
【００２７】
アライメント命令の要件に基づいて、オペランドフェッチユニット320においてベクトルレジスタファイル(VRF)310に供給される2つまたは4つのソースレジスタアドレスが作成される。要求されたソースオペランドはVRF310から読み取られる。アライメント関数は、たとえば図1のアライメント命令および図2Aまたは図2Bのアライメント命令について説明したようにして供給されたソースオペランドに対して演算を行う。記憶回路316は、アライメントされた結果を選択するとともに、これらを、アライメントされたデータが結果書込みユニット330によって作成されたVd/Vddアドレス(または、複数のアドレス)に書き込まれる場所であるVRF310に送られる。記憶回路316は、命令復号ユニット309によって識別された命令復号情報に基づいてアライメントユニット314からの結果またはベクトル実行ユニット315からの結果のいずれかを選択する。
【００２８】
図3Bは、有利に利用し得る第2のアライメントサブシステム350の実施形態を示す。第2のアライメントサブシステム350は、レベル1(L1)キャッシュ、L2キャッシュ、L3キャッシュ、システムメモリなどのメモリ階層302と、ベクトルコプロセッサ354と、汎用(GP)プロセッサ356と、を含む。GPプロセッサ356は、GPプロセッサレジスタファイル357と、GPプロセッサ356およびコプロセッサ354の間のデータポート355の一部分と、を含む。コプロセッサ354は、ベクトルプロセッサ命令レジスタ308と、命令復号ユニット359と、ベクトルレジスタファイル(VRF)360と、ベクトル関数ユニット362と、オペランドフェッチユニット370と、結果書込みユニット380と、コプロセッサ354およびGPプロセッサ356の間のデータポート355の一部分と、を含む。GPレジスタファイル357の内容は、データポート355を通じてGPプロセッサ356とコプロセッサ354との間で共有される。ベクトル関数ユニット362は、マスクアライメントユニット364と、ベクトル実行ユニット365と、マスクアライメントユニット364からの結果またはベクトル実行ユニット365からの結果のいずれかを選択するとともにこの選択した結果をVRF360に記憶するための記憶回路366と、を含む。VRF360は、B×Cビットレジスタファイル(たとえばここで、B=32エントリでありかつCビット=1024ビット(1kb)である)として構成されてよい。
【００２９】
32エントリVRFに関する第2の例として、GPプロセッサのレジスタファイル357から選択される32ビットRt.H383は、各イネーブルビットが読み取られるVRFアドレスを指示する場所であるビットマスクとして設定され、ここではたとえばビットゼロがVRFアドレスゼロに対応し、ビット1がVRFアドレス1に対応し、続いてビット31までがVRFアドレス31に対応する。さらにGPプロセッサのレジスタファイル357から選択される32ビットRt.L384は、オフセットまたは開始場所として設定される。第2のアライメントサブシステム350を演算させると、アライメント命令(図1の104、図2Aの203または図2Bの204)などのアライメント命令がベクトル命令レジスタ308で受け取られる。受け取られたアライメント命令は、GP Rtアドレスフィールド382と、復号化済み演算コード385および386と、図2Aおよび図2Bに関連して説明したようなRt[7]などのスパンビット387と、Vuレジスタアドレス388と、VdまたはVddレジスタアドレス389と、を含む複数の復号化された結果を生成する命令復号ユニット359で復号化される。GP Rtアドレスフィールド382は、GPプロセッサ356に転送され、GPプロセッサ356において、data@Rt=Rt.Lオフセット値およびdata@Rt+1=Rt.Hマスク値をもたらすGPプロセッサレジスタファイル357にアクセスするために使用される。Rt.H383マスク値はデータポート355を通じてオペランドフェッチユニット370に転送され、またRt.L384オフセット値または開始アドレスはベクトル関数ユニット362に転送される。アライメント命令およびマスクの要件に基づいて、ベクトルVu関数(VuFn)ユニット372内に、ベクトルレジスタファイル(VRF)360に供給されるような複数のソースレジスタアドレスが作成される。たとえば、次式のようになる。
data@Rt+1=Rt.H=0100_0000_1000_0000_0000_0000_0000_0001
32エントリVRF360については、このマスク内の各イネーブルビットは、マスクの最下位ビットに対応するレジスタV0から開始して読み取られるVRFアドレスを指示する。イネーブルビットが「1」であるこの例示的なマスクでは、V0、V23およびV30にあるVRFレジスタが読み取られる。この方法では最大32個のレジスタを指定することが可能であり、またVRF360は同時読取り演算のこの回数を受け入れるのに十分な読取りポートを有しないことがある。したがって、32個の読取りポートを有することの代替として、コプロセッサ354の状態マシン関数によってオペランド読取り演算の連続した組を制御することが可能である。たとえば読取りポートが2つであれば、最大32のレジスタを読み取るために16回の連続した読取り演算(32のイネーブルマスクビットにより指定される場合)が提供されてよく、読取りポートが4つであれば、8回の連続した読取り演算が提供されよい。要求されるソースオペランドはVRF360から読み取られる。マスク値はまた、ベクトル実行ユニット362上の演算をマスクするために使用されてよい。アライメント関数は、たとえば図1のアライメント命令ならびに図2Aおよび図2Bのアライメント命令に関して説明したように供給されたソースオペランドに対して演算される。記憶回路366は、アライメントされた結果を選択するとともに、これらを、結果書込みユニット380によって作成されたVd/Vddアドレス(または、複数のアドレス)にアライメントされたデータが書き込まれる場所であるVRF360に送る。記憶回路366は、命令復号ユニット359により識別された命令復号情報に基づいて、アライメントユニット364からの結果またはベクトル実行ユニット365からの結果のいずれかを選択する。
【００３０】
図3AのベクトルVu関数(VuFn)ユニット322と図3BのVuFnユニット372は、第2のアライメント関数(図2Aの200および図2Bの201)に関して説明したようなインクリメントが線形的に1ずつである順序付け(Vu、Vu+1およびVu+2)などの異なる組のベクトルレジスタアドレスを実装し得る。さらに他の順序付けには、インクリメントが線形的に2ずつの順序付け(Vu、Vu+2、Vu+4)、素数インクリメントの順序付け(Vu、Vu+3、Vu+5)(第1の組のレジスタVu、Vu+P1、Vu+P2と第2の組のレジスタVu+P1、Vu+P2、Vu+P3などであり、ここでP1、P2、P3はアライメント命令によってアクセス可能なVRFレジスタの範囲内に来るように指定された素数である)、またはたとえばある特定のアライメント命令によって要求される他のアドレス順序付けを含んでよい。
【００３１】
アライメントユニット314および364は、アライメントと実行関数演算との融合を可能にするためにベクトル実行ユニット315と365のそれぞれに結合されることがあり、これによって、アライメント結果を先ず記憶し、以降の実行関数で使用され得る前にこれをVRFから再フェッチすることを必要としない。ベクトルアライメントおよび演算命令は、アライメントと実行関数とのこのような融合を指定するために使用され得る。演算は、ベクトル実行ユニット315または365によって提供される選択ベクトル実行関数を含み得る。
【００３２】
図3Aのデータポート305およびGPレジスタファイル307または図3Bのデータポート355およびGPレジスタファイル357は、GPプロセッサ306または356などの第1のプロセッサのスカラーレジスタファイルからアクセスされる1つまたは複数のレジスタ値を、コプロセッサ304または354などの第2のプロセッサと共有するための例示的な手段を提供する。さらにこの1つまたは複数のレジスタ値は、ベクトルプロセッサ命令レジスタ308でフェッチされたベクトルアライメント命令104、203または204において指定されたRtアドレス333または382に従ってアクセスされ、この共有されたレジスタ値のうちの1つから開始場所が決定される。
【００３３】
オペランドフェッチユニット320または370、ベクトルレジスタファイル(VRF)310または360、ならびにアライメントユニット314または364は、第2のプロセッサにおいてたとえば図1、図2Aおよび図2Bに示したようなベクトルアライメント命令に従って、ベクトルレジスタファイル(VRF)の開始Vuレジスタ内の開始場所とVRFの最終Vuレジスタの終了場所との間で識別されたデータをアライメントするための例示的な手段を提供する。
【００３４】
命令復号ユニット309または359、記憶回路316または366、ならびにVRF310または360は、アライメント回路からアライメントされたデータを選択するとともにベクトルアライメント命令によって指定されたアライメント記憶アドレスに従ってアライメントされたデータをベクトルレジスタファイル内に記憶するための例示的な手段を提供する。
【００３５】
図4は、有利に利用し得るデータアライメント400のプロセスのための実施形態を示す。データアライメントプロセス400における演算は、図1、図2A、図2B、図3Aおよび図3Bの要素と関連付けられる。ブロック404では、ベクトルプロセッサ命令レジスタ(308など)でベクトルアライメント命令が受け取られる。ブロック406では、受け取ったベクトルアライメント命令が命令復号ユニット309または359で実施される等で復号化される。ブロック408では、ベクトルアライメント命令が図1に示したようなVdベクトル結果向けであるかあるいは図2Aまたは図2Bに示したようなVddベクトル結果向けであるかの判定が実施される。復号によってVdベクトル結果を生成すべきであると指示されると、プロセス400はブロック410に進む。ブロック410では、ベクトルレジスタファイル(VRF)のVuおよびVu+1レジスタとポートGP Rtレジスタとが読み取られる。ブロック412では、Rt1アドレスについて読み取られたdata@Rtが図1の「a50」126などの開始バイトとして使用される。ブロック414では、VuおよびVu+1レジスタ内のデータが図1のVdレジスタ122に示したものなどの結果Vdを生成するVd=valign(Vu@RT)命令104に従ってアライメントされる。次いでプロセス400はブロック404に戻る。
【００３６】
ブロック408に戻り、ここでVddベクトル結果を生成すべきであると判定された場合、プロセス400はブロック418に進む。ブロック418では、ケース演算が判定される。スパンビットが2ビット以上に及ぶ場合、複数のレジスタアドレスが指定されてよい。たとえば、ケースゼロ(C0)はスパンビットが値0を有するのと同じであり、ケース1(C1)はスパンビットが値1を有するのと同じであるが、C2コードに関するプラス2の順序付け、またはC3コードに関するプラス素数の順序付け、その他などさらなるケースのアドレス作成タイプが指定されてよい。C0コードが決定されると、プロセス400はブロック420に進む。ブロック420では、Vu、Vu+1およびVu+2レジスタとポートGP Rtレジスタとが読み取られる。ブロック422では、Rt2アドレスについて読み取られたdata@Rtが開始バイトとして使用される。ブロック424では、Vu、Vu+1およびVu+2レジスタのデータが、結果Vddを生成するVdd=valign(Vu@RT)命令204に従ってアライメントされる。次いでプロセス400はブロック404に戻る。
【００３７】
ブロック418に戻り、ここでC1コードが決定された場合、プロセス400はブロック430に進む。ブロック430では、Vu+1、Vu+2およびVu+3レジスタとポートGP Rtレジスタとが読み取られる。ブロック422では、Rt2アドレスについて読み取られたdata@Rtが開始バイトとして使用される。ブロック424では、Vu+1、Vu+2およびVu+3レジスタのデータがVddレジスタ222および224に示したものなどの結果Vddを生成するVdd=valign(Vu@RT)命令204に従ってアライメントされる。次いでプロセス400はブロック404に戻る。
【００３８】
ブロック418に戻り、ここでCkコードが決定された場合、プロセス400はブロック432に進む。ブロック432では、たとえばVu+k、Vu+k+1およびVu+k+2レジスタとポートGP Rtレジスタとが読み取られる(ここで、kは1以上の整数となるようにアライメント命令によって指定され、Vu+k、Vu+k+1およびVu+k+2はVRFの容量域内にある)。上で説明した2または素数の順序付けあるいはある特定のアプリケーションの要求に従った順序付けなどベクトルレジスタに関して他の順序付けが読み取られてよい。ブロック422では、Rt2アドレスについて読み取られたdata@Rtが開始バイトとして使用される。ブロック424では、Vu+k、Vu+k+1およびVu+k+2レジスタのデータが結果Vddを生成するVdd=valign(Vu@RT)命令204に従ってアライメントされる。次いでプロセス400はブロック404に戻る。ブロック418でのスパンコードによる決定に従ったまたベクトルアライメント命令による指定に従った他の可能なレジスタ選択が存在する。たとえば、ブロック420、430および432に示したレジスタの組のうちの1つを選択するように第1のスパンコードが指定される可能性があり、また第1のスパンコードにより選択した組と異なる組のレジスタを選択するように第2のスパンコードが指定される可能性がある。たとえば、ブロック432に示したような第1の組のレジスタVu+k、Vu+k+1およびVu+k+2が第1のスパンコードによって選択される場合、Vu+k+1、Vu+k+2およびVu+k+3などの異なる組のレジスタ(図示せず)が第2のスパンコードによって第2の組のレジスタ向けに選択される可能性がある。別の例として、ブロック420に示したような第1の組のレジスタVu、Vu+1、Vu+2がスパンコードC0によって選択される可能性があり、またブロック432に示したような第2の組のレジスタVu+k、Vu+k+1、Vu+k+2がスパンコードCkによって選択される可能性がある。
【００３９】
図5は、汎用(GP)プロセッサ536と、ベクトルアライメント関数を提供するとともにポータブルデバイスのリアルタイム要件を満たすように構成されたベクトルコプロセッサなどのコプロセッサ(CoP)538と、を有するポータブルデバイス500を示す。ポータブルデバイス500は、ワイヤレス電子デバイスとするとともに、ソフトウェア命令510を有するシステムメモリ508に結合されたプロセッサコンプレックス506を含むシステムコア504を含んでよい。ポータブルデバイス500は、電源514と、アンテナ516と、キーボードなどの入力デバイス518と、液晶ディスプレイLCDなどのディスプレイ520と、ビデオ機能を備えた1つまたは2つのカメラ522と、スピーカ524と、マイクロフォン526と、を備える。システムコア504はまた、ワイヤレスインターフェース528と、表示コントローラ530と、カメラインターフェース532と、codec534と、を含む。プロセッサコンプレックス506は、ローカルレベル1命令キャッシュおよびレベル1データキャッシュ549を有するGPプロセッサ536とレベル1ベクトルメモリ554を有するコプロセッサ(CoP)538とからなるデュアルコア構成を含んでよい。CoP538のアライメント関数は、図1〜図4のアライメント関数に対応し得る。プロセッサコンプレックス506はさらに、モデムサブシステム540と、フラッシュコントローラ544と、フラッシュデバイス546と、マルチメディアサブシステム548と、レベル2キャッシュ550と、メモリコントローラ552と、を含んでよい。フラッシュデバイス546は、取外し可能フラッシュメモリを含んでもよいし、あるいはまた埋め込まれたメモリとしてもよい。
【００４０】
図示した例ではシステムコア504は、図1〜図4に示したまたは図1〜図4と関連付けされた実施形態のうちのいずれかに従って演算を行う。たとえば図3Aおよび図3Bに示したようにCoP538は、図1および図2に示したような例示的なデータアライメント関数を提供するためにL1 I&Dキャッシュ、L2キャッシュ550のメモリ内およびシステムメモリ508内に記憶されたプログラム命令にアクセスするように構成されている。
【００４１】
ワイヤレスインターフェース528は、アンテナ516およびワイヤレスインターフェース528を介して受け取ったワイヤレスデータをMSS540に提供され、CoP538と共有およびGPプロセッサ536と共有され得るようにプロセッサコンプレックス506に対してかつワイヤレスアンテナ516に対して結合されてよい。カメラインターフェース532はプロセッサコンプレックス506に結合され、またビデオ機能を備えたカメラ522などの1つまたは複数のカメラに結合される。表示コントローラ530は、プロセッサコンプレックス506に対してかつ表示デバイス520に対して結合される。プロセッサコンプレックス506には符号器/復号器(CODEC)534も結合される。1対のステレオスピーカを備え得るスピーカ524とマイクロフォン526とがCODEC534に結合される。周辺デバイスとその関連するインターフェースは例示であり、その数や容量が限定されるものではない。たとえば入力デバイス518は、ある特定のデバイス内に個別に実装されることや異なるデバイスに組み合わせて実装されることがあるようなユニバーサルシリアルバス(USB)インターフェースなど、QWERTYスタイルのキーボード、英数字キーボードおよびテンキーを含んでよい。
【００４２】
GPプロセッサ536およびCoP538は、システムメモリ508などの非一時的コンピュータ読取り可能媒体内に記憶され、かつデュアルコアプロセッサ536および538などのコンピュータに対して、図1および図2に示したようなデータアライメント関数を提供するためのプログラムを実行させるように実行可能であるソフトウェア命令510を実行するように構成されている。GPプロセッサ536およびCoP538は、GPプロセッサ536上で可変のRt(さらに、Rt.HおよびRt.Lに対応し得る)を計算するとともにこのGP Rtデータ値(または、複数の値)をCoP538と共有するVd=valign(Vu@Rt)やVdd=valign(Vu@Rt)などのソフトウェア命令510を実行するように構成されている。このソフトウェア命令は、L1命令メモリ549などの異なるレベルのキャッシュメモリおよびシステムメモリ508からアクセスされる。
【００４３】
ある特定の実施形態では、システムコア504は、システムインパッケージ内またはシステムオンチップデバイス上に物理的に編成されている。ある特定の実施形態では、システムオンチップデバイスとして編成されたシステムコア504は、図5に示したように電源514、ワイヤレスアンテナ516、入力デバイス518、表示デバイス520、カメラ522、スピーカ524、マイクロフォン526に物理的に結合され、また取外し可能フラッシュデバイス546に結合されることがある。
【００４４】
本明細書に記載した実施形態に従ったポータブルデバイス500は、セットトップボックス、エンターテインメントユニット、ナビゲーションデバイス、通信デバイス、パーソナルデジタルアシスタント(PDA)、固定ロケーションデータユニット、モバイルロケーションデータユニット、モバイルフォン、携帯電話、コンピュータ、ポータブルコンピュータ、タブレット、モニタ、コンピュータモニタ、テレビ、チューナー、ラジオ、衛星ラジオ、音楽プレーヤ、デジタル音楽プレーヤ、ポータブル音楽プレーヤ、ビデオプレーヤ、デジタルビデオプレーヤ、デジタルビデオディスク(DVD)プレーヤ、ポータブルデジタルビデオプレーヤ、データやコンピュータ命令を記憶または取り出すような他の任意のデバイス、あるいはこれらの任意の組合せなどの多種多様な電子デバイスに組み込まれ得る。
【００４５】
本明細書に開示した実施形態と関連して記載した様々な例示の論理ブロック、モジュール、回路、要素または構成要素は、汎用プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)または他のプログラム可能論理構成要素、離散ゲートやトランジスタロジック、離散ハードウェア構成要素、あるいは本明細書に記載した機能を実行するように設計されたこれらの任意の組合せと一緒に実装されること、あるいはこれらによって実行され得る。汎用プロセッサはマイクロプロセッサであり得るが、代替形態では、プロセッサを従来のプロセッサ、コントローラ、マイクロコントローラまたは状態マシンであってよい。プロセッサはまたたとえば、DSPとマイクロプロセッサの組合せ、複数のマイクロプロセッサ、DSPコアと連携した1つまたは複数のマイクロプロセッサ、あるいは所望の用途に適した他の任意のこうした構成など、コンピュータ構成要素の組合せとして実装され得る。
【００４６】
図5のデュアルコアプロセッサ536および538は、たとえば、プログラムの制御下でリアルタイムタスクをサービスするためにマルチプロセッサシステム内でデータアライメント関数への命令を実行するように構成されてよい。プログラムは、命令キャッシュ549を通じて利用可能になり得るなどプロセッサコンプレックス506と直接ローカルに関連付けさせるか、あるいはある特定の入力デバイス518またはワイヤレスインターフェース528を通じてアクセス可能とするかのいずれかとしたコンピュータ読取り可能非一時的記憶媒体上に記憶されている。入力デバイス518またはワイヤレスインターフェース528はまたたとえば、メモリデバイスにあるデータにプロセッサローカルデータキャッシュなどプロセッサと直接ローカルに関連付けさせるか、またはシステムメモリ508からアクセス可能とするかのいずれかとしてアクセスすることができる。本明細書に開示した様々な実施形態に関連して記載した方法は、ハードウェアで、プロセッサによって実行される1つまたは複数のプログラムを有するソフトウェアモジュールで、またはこれら2つの組合せで直接具現化され得る。ソフトウェアモジュールは、ランダムアクセスメモリ(RAM)、ダイナミックランダムアクセスメモリ(DRAM)、同期ダイナミックランダムアクセスメモリ(SDRAM)、フラッシュメモリ、読取り専用メモリ(ROM)、消去可能プログラム可能読取り専用メモリ(EPROM)、電気的消去可能プログラム可能読取り専用メモリ(EEPROM)、ハードディスク、取外し可能ディスク、コンパクトディスク(CD)-ROM、デジタルビデオディスク(DVD)または当技術分野で周知の他の任意の形式の非一時的記憶媒体の中に存在してよい。非一時的記憶媒体は、プロセッサが記憶媒体から情報を読み取り、記憶媒体に情報を書き込むことができるように、プロセッサに結合され得る。代替形態では、記憶媒体はプロセッサと一体化されてよい。
【００４７】
本発明は、プロセッサシステムで使用される例示の実施形態の文脈で開示されるが、上記の議論や添付の特許請求の範囲と矛盾しないような幅広い多種多様な実装形態を利用し得ることは当業者であれば理解されよう。たとえば固定関数の実装形態は、本発明の様々な実施形態を利用することもある。
【符号の説明】
【００４８】
100  アライメント関数
104  Vd=valign(Vu@Rt)命令
105  演算コード(Opc)
106  命令特定フィールド
107  ベクトルレジスタアドレスソースフィールドVu
108  ベクトルレジスタアドレス宛先フィールドVd
109  GPプロセッサ開始場所レジスタアドレスソースフィールドGP Rt
112  Vuレジスタ
114  Vu+1レジスタ
122  Vdレジスタ
200  アライメント関数
201  アライメント関数
203  Vdd=valign(Vu@RT)命令
204  Vdd=valign(Vu@RT)命令
205  演算コード(Opc)
206  命令特定フィールド
207  ベクトルレジスタアドレスソースフィールドVu
208  ベクトルレジスタアドレス宛先フィールドVdd
209  GPプロセッサ開始場所レジスタアドレスソースフィールドGP Rt
212  Vuレジスタ
214  Vu+1レジスタ
216  Vu+2レジスタ
218  Vu+3レジスタ
219  アライメント演算
222  Vdd.Lレジスタ
224  Vdd.Hレジスタ
300  アライメントサブシステム
302  メモリ階層
304  ベクトルコプロセッサ
305  データポート
306  汎用(GP)プロセッサ
307  GPプロセッサレジスタファイル
308  ベクトルプロセッサ命令レジスタ
309  命令復号ユニット
310  ベクトルレジスタファイル(VRF)
312  ベクトル関数ユニット
314  アライメントユニット
315  ベクトル実行ユニット
320  オペランドフェッチユニット
330  結果書込みユニット
333  GP Rtアドレスフィールド
334  GP Rtアドレス(data@Rt)
335  復号化演算コード
337  スパンビット
338  Vuレジスタアドレス
339  VdまたはVddレジスタアドレス
350  アライメントサブシステム
354  ベクトルコプロセッサ
355  データポート
356  汎用(GP)プロセッサ
357  GPプロセッサレジスタファイル
359  命令復号ユニット
360  ベクトルレジスタファイル(VRF)
362  ベクトル関数ユニット
364  マスクアライメントユニット
365  ベクトル実行ユニット
370  オペランドフェッチユニット
380  結果書込みユニット
382  GP Rtアドレスフィールド
384  32ビットRt.L
385  復号化済み演算コード
386  復号化済み演算コード
387  スパンビット
388  Vuレジスタアドレス
389  VdまたはVddレジスタアドレス
500  ポータブルデバイス
504  システムコア
506  プロセッサコンプレックス
508  システムメモリ
510  ソフトウェア命令
514  電源
516  アンテナ
518  入力デバイス
520  ディスプレイ
522  カメラ
524  スピーカ
526  マイクロフォン
528  ワイヤレスインターフェース
530  表示コントローラ
532  カメラインターフェース
534  codec
536  汎用(GP)プロセッサ
538  コプロセッサ(CoP)
540  モデムサブシステム
544  フラッシュコントローラ
546  フラッシュデバイス
548  マルチメディアサブシステム
549  L1 I&Dキャッシュ
550  L2キャッシュ
552  メモリコントローラ
554  L1ベクトルメモリ
【図１】
0006293795.tif 000002
【図２Ａ】
0006293795.tif 000003
【図２Ｂ】
0006293795.tif 000004
【図３Ａ】
0006293795.tif 000005
【図３Ｂ】
0006293795.tif 000006
【図４】
0006293795.tif 000007
【図５】
0006293795.tif 000008