(57)【特許請求の範囲】
【請求項１】
過渡的ロード命令、第2の命令、およびロードデータを記憶するための第1の手段と、
前記過渡的ロード命令および前記第2の命令を記憶するための第2の手段と、
記憶するための前記第1の手段および記憶するための前記第2の手段に結合された、データを処理するための手段と
を備え、
データを処理するための前記手段が、
記憶するための前記第1の手段から前記過渡的ロード命令を取り出すことと、
記憶するための前記第2の手段に前記過渡的ロード命令を記憶することと、
前記過渡的ロード命令に応答して、記憶するための前記第1の手段から前記ロードデータを取り出すことと、
前記過渡的ロード命令に応答して、記憶するための前記第2の手段に前記ロードデータを記憶することと、
前記ロードデータを使用して前記第2の命令を実行することと
を行うように構成される、装置。
【請求項２】
データを処理するための前記手段が、記憶するための前記第2の手段を参照することによって前記ロードデータを取り出し、前記ロードデータを取り出すために記憶するための前記第2の手段を参照することによって前記第2の命令を実行するようにさらに構成される、または、
データを処理するための前記手段が、前記過渡的ロード命令と、前記第2の命令とを含む超長命令語パケットを処理するように構成された超長命令語プロセッサである、または、
前記過渡的ロード命令が、複数の命令を含むパケット中の第1の命令である、請求項1に記載の装置。
【請求項３】
第3の命令をさらに含み、データを処理するための前記手段が、前記ロードデータを使用して前記第3の命令を実行するように構成される、請求項1に記載の装置。
【請求項４】
前記第3の命令が、1クロックサイクルで第2のメモリに対する読取りおよび書込みを可能にするメモリ書込み命令である、請求項3に記載の装置。
【請求項５】
データを処理するための前記手段が、1クロックサイクルで前記過渡的ロード命令を取り出し、前記ロードデータを取り出し、前記第2の命令を実行するようにさらに構成される、または、
データを処理するための前記手段が、複数のクロックサイクルで前記過渡的ロード命令を取り出し、前記ロードデータを取り出し、前記第2の命令を実行するようにさらに構成される、請求項1に記載の装置。
【請求項６】
前記装置が、音楽プレーヤ、ビデオプレーヤ、エンターテインメントユニット、ナビゲーションデバイス、通信デバイス、モバイルデバイス、モバイル電話、スマートフォン、携帯情報端末、固定位置端末、タブレットコンピュータ、コンピュータ、ウェアラブルデバイス、ラップトップコンピュータ、サーバ、および/または自動車車両内のデバイスから成るグループから選択されたデバイスに組み込まれるものである、請求項1に記載の装置。
【請求項７】
記憶するための前記第1の手段が、メモリであり、
記憶するための前記第2の手段が、命令レジスタであり、
データを処理するための前記手段が、プロセッサである、請求項1から6のいずれか一項に記載の装置。
【請求項８】
プロセッサによってメモリロード演算を実行するための方法であって、
メモリから過渡的ロード命令を取り出すステップと、
命令レジスタに前記過渡的ロード命令を記憶するステップと、
前記過渡的ロード命令に応答して、前記メモリからロードデータを取り出すステップと、
前記過渡的ロード命令に応答して、前記命令レジスタに前記ロードデータを記憶するステップと、
前記ロードデータを使用して第2の命令を実行するステップと
を含む、方法。
【請求項９】
前記命令レジスタを参照することによって前記ロードデータを取り出すステップと、前記ロードデータを取り出すために前記命令レジスタを参照することによって前記第2の命令を実行するステップとをさらに含む、請求項8に記載の方法。
【請求項１０】
前記命令レジスタに前記ロードデータを記憶するステップおよび前記第2の命令を実行するステップが、超長命令語型プロセッサによって実施され、前記過渡的ロード命令および前記第2の命令が、超長命令語パケットに含まれる、または、
前記過渡的ロード命令が、複数の命令を含むパケット中の第1の命令である、請求項8に記載の方法。
【請求項１１】
前記ロードデータを使用して第3の命令を実行するステップをさらに含む、請求項8に記載の方法。
【請求項１２】
前記第3の命令が、1クロックサイクルで第2のメモリに対する読取りおよび書込みを可能にするメモリ書込み命令である、請求項11に記載の方法。
【請求項１３】
前記過渡的ロード命令を取り出すステップ、前記ロードデータを取り出すステップ、および前記第2の命令を実行するステップが、1クロックサイクルで行われる、または、
前記過渡的ロード命令を取り出すステップ、前記ロードデータを取り出すステップ、および前記第2の命令を実行するステップが、複数のクロックサイクルで行われる、請求項8に記載の方法。
【請求項１４】
前記第2の命令を実行するステップが、音楽プレーヤ、ビデオプレーヤ、エンターテインメントユニット、ナビゲーションデバイス、通信デバイス、モバイルデバイス、モバイル電話、スマートフォン、携帯情報端末、固定位置端末、タブレットコンピュータ、コンピュータ、ウェアラブルデバイス、ラップトップコンピュータ、サーバ、および/または自動車車両内のデバイスから成るグループから選択されたデバイスに組み込まれるプロセッサによって実施される、請求項8に記載の方法。
【請求項１５】
プロセッサに請求項8から13のいずれか一項に記載の方法を行わせるように構成されたプロセッサ実行可能命令を含む、プロセッサ実行可能なコンピュータ記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、全般的にメモリロード演算に関し、より詳細には、超長命令語(VLIW)ベースのシステムのための一時的なロードベクトル演算に関する。
【背景技術】
【０００２】
コンピューティングにおいて、最適化コンパイラは、実行可能なコンピュータプログラムのいくつかの属性を最小化または最大化しようとするコンパイラである。最も一般的な要求は、プログラムを実行するのにかかる時間を最小化することであり、あまり一般的でない要求は、占有されるメモリの量を最小化することである。ポータブルコンピュータの成長は、プログラムによって消費される電力を最小化するための市場を作り出した。コンパイラ最適化は、一般に、一連の最適化変換、すなわち、プログラムを解釈し、より少ないリソースを使用する意味論的に等しい出力プログラムを生成するためにそれを変換するアルゴリズムを使用して実施される。過去には、コンピュータメモリ制限もまた、どの最適化を実施することができるかを制限する主な要因であった。これらのすべての要因により、最適化は「最適な」出力をめったに生成せず、むしろ、一般的なプログラムではリソース使用量を改善するためのヒューリスティックな方法を採用する。
【０００３】
コンパイラ最適化において、レジスタ割振りは、多数のターゲットプログラム変数を、少数のCPUレジスタに割り当てるプロセスである。レジスタ割振りは、基本ブロックについて行われることも(局所レジスタ割振り)、関数/プロシージャ全体について行われることも(大域レジスタ割振り)、またはコールグラフによりトラバースされる関数境界を越えて行われることもある(プロシージャ間レジスタ割振り)。関数/プロシージャごとに行われるとき、呼出規約は、各コールサイトの周りにセーブ/リストアの挿入を要求する場合がある。多くのプログラミング言語において、プログラマーは、多くの変数を任意に割り振るものと思い違いをする。しかしながら、コンピレーション中にコンパイラは、これらの変数を、小さい有限の1組のレジスタに割り振る方法を決定しなければならない。すべての変数が同時に使用中(または「ライブ」)であるとは限らないので、いくつかのレジスタは、2つ以上の変数に割り当てられることがある。しかしながら、同時に使用中の2つの変数が、その値を破損せずに同じレジスタに割り当てられることは不可能である。いずれかのレジスタに割り当てることができない変数は、RAMに保持し、読取り/書込みごとにロードイン/アウトしなければならない(スピルと呼ばれるプロセス)。RAMにアクセスすることは、レジスタにアクセスすることよりも著しく遅く、コンパイルされるプログラムの実行速度を落とすので、最適化コンパイラは、できるだけ多くの変数をレジスタに割り当てることを目指す。レジスタプレッシャは、利用可能なハードウェアレジスタが最適であろう場合よりも少ないときに使用される用語であり、通常、より高いプレッシャとは、より多くのスピルおよびリロードが必要とされることを意味する。
【０００４】
データがメモリからロードされ、1つの演算のためにしか必要とせず、次いで廃棄されるとき、これは、(特に内部ループをアンロールするとき)レジスタプレッシャにつながり、ロードをスケジュールすること、場合によっては「load to use」レイテンシを隠すことが困難になる可能性がある。したがって、従来のシステムでは、レジスタプレッシャが生じ、また(1サイクル/1パケットの間しか存在する必要がない)本質的に非常に過渡的であるデータの影響を最小限に抑えるということになる。データをロードし、次いで使用することが、レジスタへの書込み、それに続く使用、ならびに事実上一時的な値であるもののためのレジスタの使用のレイテンシという問題を引き起こす。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
したがって、本明細書で提供する改善された方法および装置を含む、従来の方法を改善する方法に対する長年にわたる産業界のニーズが存在する。
【０００６】
本教示を特徴付ける発明性がある特徴は、さらなる特徴および利点とともに、詳細な説明および添付の図からより十分に理解される。図面の各々は例示および説明のみのために与えられ、本教示を限定しない。
【課題を解決するための手段】
【０００７】
以下は、本明細書で開示する装置および方法に関連する1つまたは複数の態様および/または例に関する簡略化された概要を提示する。したがって、以下の概要は、すべての企図される態様および/または例に関する広範囲にわたる概説と見なされるべきではなく、また、以下の概要は、すべての企図される態様および/もしくは例に関する主要もしくは重要な要素を識別するか、または任意の特定の態様および/もしくは例に関連付けられた範囲を定めると見なされるべきでもない。したがって、以下の概要は、以下に提示される詳細な説明に先立って、本明細書で開示する装置および方法に関する1つまたは複数の態様および/または例に関する特定の概念を簡略化された形で提示することが唯一の目的である。
【０００８】
開示のいくつかの例は、専用の「load-op」のような、ただしメモリ上で動作する追加の命令を必要としない、現在のパケット内で直ちに使用することができる「フリーの」一時的なレジスタを獲得することによって、レジスタプレッシャを低減するためのシステム、装置、および方法を対象とする。
【０００９】
一態様では、装置が、過渡的ロード命令、第2の命令、およびロードデータを記憶したメモリと、過渡的ロード命令および第2の命令を記憶するように構成された命令レジスタと、メモリおよび命令レジスタに結合されたプロセッサであって、メモリから過渡的ロード命令を取り出し、命令レジスタに過渡的ロード命令を記憶し、過渡的ロード命令に応答してメモリからロードデータを取り出し、過渡的ロード命令に応答して命令レジスタにロードデータを記憶し、ロードデータを使用して第2の命令を実行するように構成された、プロセッサとを含む。
【００１０】
別の態様では、プロセッサによってメモリロード演算を実行するための方法が、メモリから過渡的ロード命令を取り出すステップと、過渡的ロード命令を命令レジスタに記憶するステップと、過渡的ロード命令に応答してメモリからロードデータを取り出すステップと、過渡的ロード命令に応答してロードデータを命令レジスタに記憶するステップと、ロードデータを使用して第2の命令を実行するステップとを含む。
【００１１】
さらに別の態様では、プロセッサ実行可能なコンピュータ記憶媒体上にあるコンピュータプログラム製品であって、このコンピュータプログラム製品は、プロセッサに、メモリから過渡的ロード命令を取り出すことと、過渡的ロード命令を命令レジスタに記憶することと、過渡的ロード命令に応答してメモリからロードデータを取り出すことと、過渡的ロード命令に応答してロードデータを命令レジスタに記憶することと、ロードデータを使用して第2の命令を実行することとを行わせるように構成されたプロセッサ実行可能命令を含む。
【００１２】
さらに別の態様では、装置が、過渡的ロード命令、第2の命令、およびロードデータを記憶するための第1の手段と、過渡的ロード命令および第2の命令を記憶するための第2の手段と、記憶するための第1の手段および記憶するための第2の手段に結合された、データを処理するための手段であって、記憶するための第1の手段から過渡的ロード命令を取り出し、記憶するための第2の手段に過渡的ロード命令を記憶し、過渡的ロード命令に応答して記憶するための第1の手段からロードデータを取り出し、過渡的ロード命令に応答して記憶するための第2の手段にロードデータを記憶し、ロードデータを使用して第2の命令を実行するように構成された、データを処理するための手段とを含む。
【００１３】
本明細書で開示する装置および方法に関連する他の特徴および利点は、添付の図面および詳細な説明に基づいて、当業者には明らかになるであろう。
【００１４】
添付の図面は、本教示の例を説明するために提示され、限定するものではない。添付の図面は、本開示の例の説明を助けるために提示され、各例の限定ではなく、例示のみを目的として提供される。
【００１５】
以下の詳細な説明を参照しながら、本開示を限定するためではなく単に例示するために提示される添付の図面とともに検討すれば、本開示の態様およびその付随する利点の多くがより良く理解されるようになるので、それらに関するより完全な諒解が容易に得られるであろう。
【図面の簡単な説明】
【００１６】
【図１】本開示のいくつかの例による例示的なロード命令パケットを示す図である。
【図２】本開示のいくつかの例による、メモリロード演算を実行するように動作可能な構成要素を含む例示的なVLIWプロセッサアーキテクチャを示す図である。
【図３】本開示のいくつかの例による、メモリロード演算のための方法の例示的な流れ図である。
【図４】本開示のいくつかの例による、メモリロード演算を実行するように動作可能な構成要素を含むワイヤレスデバイスの例示的なブロック図である。
【発明を実施するための形態】
【００１７】
慣例に従って、図面に示される特徴は、一定の縮尺で描かれていない場合がある。したがって、示された特徴の寸法は、図を明快にするために、任意に拡大または縮小されている場合がある。慣例に従って、図面のうちのいくつかは、明快にするために簡略化されている。したがって、図面は、特定の装置または方法のすべての構成要素を示すとは限らない。さらに、同様の参照番号は、本明細書および図を通して同様の特徴を示す。
【００１８】
本開示に関する具体例を示すために、以下の説明および関連する図面において様々な態様が開示される。代替的な例は、本開示を読んだときに当業者に明らかになり、本開示の範囲または趣旨を逸脱することなく構築され、実践されてもよい。加えて、本明細書で開示される態様および例の関連する詳細を不明瞭にしないように、よく知られている要素は詳細には説明されず、または省略される場合がある。
【００１９】
本開示のいくつかの例による高性能プロセッサは、プログラムにおける命令レベル並列性を利用するために、すなわち、2つ以上の命令/入力オペランドを一度に実行するために、スーパースカラおよび/または過渡的ロード命令(超長命令語(VLIW)など)技法に頼る。ASIC208など、これらのプロセッサは、複数の機能ユニットを含み、連続的な流れの命令/入力オペランドを実行し、メモリからクロックサイクル当たり2つ以上の命令/入力オペランドをフェッチすることができ、リソースの依存状態および利用可能性に従ってクロックサイクル当たり2つ以上の命令/入力オペランドをディスパッチすることができる。これらの能力は、VLIW特性などの、スーパースカラおよび/または過渡的ロード命令特性のために最適化されたコードを生成するコンパイラによって活用される。
【００２０】
連続的なプログラムにおいて、メモリロード演算は、メモリからデータを読取り、これをプロセッサレジスタにロードし、しばしば、ロードされたデータに依存する一連の動作を開始する。リソースが利用可能であるスーパースカラまたはVLIWプロセッサでは、できるだけ早くメモリロード演算を開始することが有効である。それが、通常ならばアイドルのリソースの使用につながることがあり、メモリにアクセスする際の遅延(潜在的なキャッシュミスを含む)を隠すことがあり、したがって、プログラムの実行時間を少なくするからである。ロード、ならびにロードに依存する動作は、厳密に連続したプログラムで実行されるよりも早く実行され、より短い実行時間を実現する。これは、非ブロッキングロードを実行する(すなわち、キャッシュミスを生み出すロードを超える命令を発行し続ける)能力、先行するストアの前にロードを発行する能力(すなわち、アウトオブオーダ(out-of-order)のロード)、先行する分岐の前にロードを移動させる能力(すなわち、推論)、およびロードに依存する動作を他の動作の前に移動させる能力を必要とする。
【００２１】
例示的なプロセッサは、64個の32ビットの汎用レジスタと、8個のシングルビットのコンディションコードレジスタと、4個のメモリアドレスレジスタと、プログラム状態語レジスタと、いくつかの特殊レジスタとからなるレジスタ状態を含んでもよい。各超長命令語は759ビットであり、以下を含む:
8個のALU演算
4個のロードまたはストア(ALU演算およびロードの和が8を超えてはならない)
7個の条件付き分岐(ツリーに7個のテストノード、8分岐を生成する)
ツリー命令の2進エンコーディング
【００２２】
レジスタ間演算(算術、論理、シフト)はRISCと同様であるが、ロード/ストア演算は、基本レジスタのようにメモリアドレスレジスタ(MAR)を使用する。ツリーパスごとに、次の情報が長命令において提供される:
パスを取るためには、どの条件コードがtrueでなければならないか、どの条件コードがfalseでなければならないか、どれがdon't careであるかを示すマスク、
パスのためのターゲット命令のアドレス、
パスが取られる場合、ALU/メモリ演算のどのサブセットがコミットされるべきか(すなわち、パス上の演算のセット)を示すマスク
【００２３】
一般的なVLIWは、パケットに最大4個の命令を含んでもよく、次のようになるが、パケット当たり4個よりも多いまたは少ない命令を含む場合があることを理解されたい:
パケットN: { V0 = VMEM(R0); }
//アドレスR0からレジスタV0へのメモリロード
//ロードとV0の使用との間のいくらかのレイテンシ
パケットN+1: { V2 = VADD(V0, V1); V3 = VSUB(V0,V1);}
//V0の使用
【００２４】
一般的なLoad-Opは、一意の命令エンコーディングを有し、メモリからどのオペランドを得られるかについて制限を有する場合もある専用のload-op命令を要求する。
1宛先レジスタ=演算(ソースレジスタ0,ソースレジスタ1)
2宛先レジスタ=演算(ソースレジスタ0,[メモリアドレス])
3宛先レジスタ=演算([メモリアドレス],ソースレジスタ0)
【００２５】
VLIW中のLoad-Opは、1つのパケットにおいて複数のメモリアドレスへのサポートを要求する。
パケットN+1: {  V2 = VADD(V0, [R0]); V3 = VSUB(V0,[R1]);}
//2つのメモリアクセスが異なる場所に対するものであるとき、これはサポートが困難である。
【００２６】
本開示のいくつかの例では、一時的なロード命令が、レイテンシを隠すことがある。一時的なロード命令は、load-opパイプラインおよびVFIFOを介してロードのレイテンシを隠すことがあり、したがってこれにより、パケットでロード値を直ちに使用することが可能になる。
パケットN: { V0.tmp = VMEM(R0); V2 = VADD(V0, V1); V3 = VSUB(V0,V1);}
パケットN+1: { V12.tmp = VMEM(R0); V2 = VADD(V12, V1); V3 = VMPY(V12,V12);}
【００２７】
上記のパケットでは、R0にあるメモリコンテンツは、一時的なバッファにロードされる。一時的なロード命令は、そのパケット内の命令に置換するようレジスタに示す。これは、いずれかの命令のオペランドがメモリから得られるとき、専用のload-op命令を与える必要を解消する。事実上、いかなる命令も、専用のエンコーディングを必要としないでload-opとすることができる。一時的なレジスタは、パケット内の複数の命令に転送されることが可能であり、したがって複数の命令が、あるパケット内のあるload-opのように作動することができる。一時的な値は、決してレジスタファイルに書き込まれず、したがってレジスタファイル書込みポートは消費されない。
【００２８】
図1は、本開示のいくつかの例による例示的なロード命令パケットを示す。図1に示すように、新しい命令、Vd.tmpが、コンパイラによって、特定のメモリアドレスと等しくなるように(Vd.tmp = VMEM(#address))設定される。Vd.tmp宛先は、現在のパケットのすべての命令におけるすべてのベクトルソースを置換する。
【００２９】
図示のように、図1は、第1のベクトル命令パケット110、第2のVLIW命令パケット120、および第3の命令パケット130を示す。第1の命令パケット110は、第1のベクトル命令111(過渡的ロードベクトル命令)、第2のベクトル命令112、および第3のベクトル命令113を含んでもよい。第1のベクトル命令111は、R0メモリロケーションの現在の値に等しいV1.tmp(過渡的ロード)を設定または定義する、一時的または過渡的ロードベクトル命令である。この一時的または過渡的な値は、次いで、書込みポートを消費することなく、同じパケット中の後続のベクトル命令によって使用されることがある。図からわかるように、第2のベクトル命令112は、VADD値を書き込むために利用可能な4つの書込みポートのうちの2つを使用し、第3のベクトル命令113は、VDMPY値を書き込むためにその他の2つの書込みポートを使用する。過渡的ロードベクトル命令を与えることによって、システムは、メモリロード演算のために書込みポートを使用することを避ける。したがって、過渡的ロード命令は、過渡的ロード命令がプロセッサに、ロードデータのためにメモリロケーションにアクセスし、次いでロードデータをレジスタに書き込むよう要求しないという点において、従来のロード命令とは異なる。これは、VLIW命令パケットの実行中にロード演算を実行するためにレジスタの書込みポートを消費する必要をなくす。
【００３０】
第2の命令パケット120は、第1の命令121、第2の命令122、第3の命令123、および第4の命令124を含む場合がある。第1の命令121は、R0メモリロケーションの現在の値に等しいV2.tmpを設定する一時的なロード命令である。この一時的な値は、次いで、書込みポートを消費することなく、同じパケット中の後続の命令によって使用されることがある(このために、V1.tmpをリサイクルしない)。図からわかるように、第2の命令122は、VADD値を書き込むために利用可能な4つの書込みポートのうちの1つを使用する。第3の命令123は、VALIGN値を書き込むために別の書込みポートを使用する。第4の命令124は、VDMPY値を書き込むために2つの残っている書込みポートを使用する。
【００３１】
第3の命令パケット130は、第1の命令131、および第2の命令132を含む場合がある。第1の命令131は、R0メモリロケーションの現在の値に等しいV3.tmpを設定する一時的なロード命令である。この一時的な値は、次いで、書込みポートを消費することなく、同じパケット中の後続の命令によって使用されることがある(このために、それらがすべて同じメモリロケーション/データを使用しても、V1.tmpまたはV2.tmpをリサイクルしない)。図からわかるように、第2の命令132は、VMEM値を書き込むために利用可能な4つの書込みポートのうちの1つを使用する。
【００３２】
たとえば、次の通りである。
{    V1.tmp = VMEM(R0)         // V1は一時的なロードである
V3:2     = VADD(V1:0, V5:4)
V13:12 = VDMPY(V1:0, R5)
}
{    V2.tmp = VMEM(R0)         // V2は一時的なロードである
V20      = VADD(V2, V2)
V5        = VALIGN(V10, V2, R7)
V13:12 = VDMPY(V3:2, R5)
}
{    V3.tmp = VMEM(R0)         // V3は一時的なロードである
VMEM(R1) = V3
}
【００３３】
本開示のいくつかの例は、専用の「load-op」のような現在のパケット内で直ちに使用することができるが、メモリ上で作動する追加の命令を必要としない、「フリーの」一時的なレジスタを獲得することによって、レジスタプレッシャを軽減する助けとなる。一時的なロードは、任意のベクトル命令がmemory-opになることを可能にし、任意のベクトルソースオペランドが、メモリソース(専用のload-op命令には不要)であり得る。一時的なロード命令は、レジスタファイルに書き込みしないので、レジスタプレッシャは軽減され、レジスタファイルポートがロード演算によって消費されることはない。パケットの初めに一時的なロード命令を置くことによって、メモリ/レジスタデータにアクセスするためのレイテンシも隠される。
【００３４】
図2は、本開示のいくつかの例による、メモリロード演算を実行するための例示的なVLIWプロセッサアーキテクチャを示す。図2に示すように、VLIWベースのプロセッサまたはマイクロプロセッサシステム200は、VLIWベースの命令パケットを記憶するための命令キャッシュ210と、コンパイラ(図示せず)が必要に応じてロード命令を一時的なロード命令と置換する間、VLIW命令パケットを一時的に記憶するための命令もしくは一時的なレジスタ220と、VLIW命令に基づいて論理演算を実行するための第1の実行ユニット230と、VLIW命令に基づいて論理演算を実行するための第2の実行ユニット240と、VLIW命令に基づいて論理演算を実行するための第3の実行ユニット250と、VLIW命令に基づいて論理演算を実行するための第4の実行ユニット260と、データを記憶するためのデータキャッシュ270と、実行ユニット230〜260によって使用されるデータを記憶するための永続的なレジスタ280とを含んでもよい。4つの実行ユニット230〜260は、プロセッサを備えてもよい。4つの実行ユニットおよび1つのレジスタファイルが示されているが、アーキテクチャ要件に基づいて、より多いまたはより少ない実行ユニットおよびレジスタファイルが使用される場合があることを理解されたい。4つの実行ユニットでは、各実行ユニットが、各複数の命令パケット(VLIW)において4つの可能な命令のうちの1つを完全に処理してもよい。全体を通してVLIWおよびベクトルベースのプロセッサについて説明するが、本明細書で開示する本発明の概念は、非ベクトルプロセッサ、ならびにベクトルプロセッサによって実施される非ベクトル命令に適用される場合があることを理解されたい。
【００３５】
従来のロード演算では、複数の命令パケット(たとえば、パケット110〜130)が、命令キャッシュ210から取り出され、命令レジスタ220を介して順次循環される。従来の命令パケットが命令レジスタ220の上部に到達すると、システム200は、その命令パケットを実行のために実行ユニット230〜260のうちの1つに送る。命令パケットが従来のロード命令である場合、命令パケットを処理する実行ユニットは、要求されたロードデータをデータキャッシュ270から取り出し、次いで、実行ユニット230〜260によるその後の使用に備えてロードデータをレジスタファイルに書き込むために、レジスタファイル280の2つの読取りまたは書込みポートのうちの1つを使用することになる。これは、他の実行ユニットもまた、この2つの読取り/書込みポートを介してレジスタファイル280にアクセスしようとしている場合、レジスタプレッシャを生み出すおそれがある。しかしながら、命令パケットが、本明細書のいくつかの例による過渡的ロード命令(たとえば、第1の命令パケット111)である場合、過渡的ロード命令を処理する実行ユニットは、データキャッシュ270からロードデータを取り出し、次いで、ロードデータを要求するその後の命令パケットによる使用に備えて命令レジスタ220にロードデータを書き込むことになる。したがって、過渡的ロード命令は、レジスタファイル280を更新(読取りまたは書込み)せずに、またその2つの読取り/書込みポートの1つを結び付けずに、処理され得る。
【００３６】
図3は、上記で説明した技法によるメモリロード演算のための例示的な方法を示す流れ図である。方法300は、たとえば、マイクロプロセッサシステム200において実施されてもよい(図2および図4参照)。ブロック302に示すように、システム300は、メモリロケーション(命令キャッシュ210など)および少なくとも1つのレジスタ(レジスタ280など)に結合されたプロセッサ(実行ユニット230〜260のいずれか1つまたは全部など)において過渡的ロード命令を受け取ってもよい。次にブロック304に示すように、システム300は、少なくとも1つのレジスタを更新せずに(たとえば、前の段落で説明したレジスタ280にロードデータを記憶せずに)、過渡的ロード命令に応答してメモリロケーション(命令キャッシュ210など)からロードデータを取り出してもよい。たとえば、実行ユニット230は、命令キャッシュ210から過渡的ロード命令を受け取り、この過渡的ロード命令に応答して、命令キャッシュ210からロードデータを受け取ってもよい。従来のシステムとは異なり、実行ユニット230は、ロードデータをレジスタ280に記憶せず、命令キャッシュ210、命令レジスタ220、または実行ユニット230〜260のいずれかなどの一時的な場所にロードデータを記憶してもよい。次にブロック306に示すように、システム300は、実行ユニット230において別の命令でロードデータを受け取ってもよい(代替的には、実行ユニット240などの別の実行ユニットが、ロードデータとともに命令を受け取ってもよい)。次にブロック308に示すように、実行ユニット230は、命令で受け取られたロードデータを利用して命令を実行してもよい。これにより、命令パケットで使用するデータを記憶し、その後ロードするために、レジスタ280の限られた読取り/書込みポートを使用することが回避される。命令を実行することは、超長命令語型プロセッサによって実施されてもよく、過渡的ロード命令および命令は、超長命令語パケットであってもよい。命令は、複数の命令であってもよく、複数の命令の少なくとも1つが、ロードデータを受け取る。たとえば、ロードデータを受け取る複数の命令の少なくとも1つが、1パケットサイクル内で第2のメモリロケーションに対する読取りおよび書込みを可能にするメモリ書込み命令であってもよい。さらに、ブロック302〜308は、1サイクルで、または複数のサイクルで行われてもよい。たとえば、過渡的ロード命令を受け取ることが最初に複数の命令パケットで行われ、その後ロードデータを含んだ命令が複数の命令パケットにあってもよい。
【００３７】
音声、データ、マルチメディアなどの様々なタイプの通信コンテンツを提供するために、ワイヤレス通信システムが広く展開されている。通常のワイヤレス通信システムは、利用可能なシステムリソース(たとえば、帯域幅、送信電力など)を共有することによって、複数のユーザとの通信をサポートすることが可能な多元接続システムである。そのような多元接続システムの例は、符号分割多元接続(CDMA)システム、時分割多元接続(TDMA)システム、周波数分割多元接続(FDMA)システム、直交周波数分割多元接続(OFDMA)システムなどを含む。これらのシステムは、しばしば、第3世代パートナーシッププロジェクト(3GPP)によって提供されるロングタームエボリューション(LTE:Long Term Evolution)、第3世代パートナーシッププロジェクト2(3GPP2)によって提供されるウルトラモバイルブロードバンド(UMB:Ultra Mobile Broadband)およびエボリューションデータオプティマイズド(EV-DO:Evolution Data Optimized)、米国電気電子技術者協会(IEEE:Institute of Electrical and Electronics Engineers)によって提供される802.11などの仕様に準拠して展開される。
【００３８】
セルラーネットワークにおいて、「マクロセル」アクセスポイントは、ある地理的エリアにわたって多数のユーザに接続およびカバレッジを提供する。その地理的領域にわたって良好なカバレッジを提供するために、マクロネットワーク展開が慎重に計画され、設計され、実現される。住宅およびオフィスビル用のような、屋内のカバレッジまたは他の特定の地理的なカバレッジを改善するために、最近では、通常は低電力のアクセスポイントである追加の「スモールセル」が、従来のマクロネットワークを補完するために展開され始めている。スモールセルアクセスポイントは、さらなる容量の増大、より豊かなユーザ体験などを提供することもできる。
【００３９】
最近では、スモールセルLTE動作は、たとえば、ワイヤレスローカルエリアネットワーク(WLAN)技術によって使用される免許不要全米情報インフラストラクチャ(Unlicensed National Information Infrastructure:U-NII)帯域のような、免許不要周波数帯へと拡張されている。スモールセルLTE動作のこの拡張は、LTEシステムのスペクトル効率を、したがって容量を向上させるように設計される。しかしながら、これは、通常は同じ免許不要帯域を利用する他の無線アクセス技術(RAT)、特に、一般に「Wi-Fi」と呼ばれるIEEE 802.11x WLAN技術の動作を侵害する場合もある。これらのワイヤレス技術は、ワイヤレスデバイス400などのワイヤレスデバイスにおいて具現化されてもよく、下記のように、ワイヤレスデバイス400は、本明細書で説明するメモリロード演算および関連する装置の態様を含んでもよい。
【００４０】
次に図4を参照すると、メモリロード演算を実施するように動作可能な構成要素を含むワイヤレスデバイスのブロック図が示され、全体的に400と表されている。ワイヤレスデバイス400は、上記で説明したように、第1の実行ユニット230と、第2の実行ユニット240と、第3の実行ユニット250と、第4の実行ユニット260とを備える図2のプロセッサ200を含む。プロセッサ200は、メモリ410に通信可能に結合されてもよい。命令キャッシュがこの図には明示的に示されていないが、プロセッサ200の一部であってもよく、または、当技術分野で知られているように、プロセッサ200とメモリ410との間に結合された別個のブロックであってもよい。ワイヤレスデバイス400は、図3の方法を実施するように構成されてもよく、いくつかの態様では、図3の方法を実施するためにメモリ410から取り出された命令を実行するようにさらに構成されてもよい。
【００４１】
図4は、プロセッサ200およびディスプレイ428に結合された、ディスプレイコントローラ426も示している。コーダ/デコーダ(コーデック)434(たとえば、オーディオおよび/または音声コーデック)は、プロセッサ200に結合することができる。(モデムを含んでもよい)ワイヤレスコントローラ440などの他の構成要素も示されている。スピーカー436およびマイクロフォン438は、コーデック434に結合することができる。図4は、ワイヤレスコントローラ440をワイヤレスアンテナ442に結合することができることも示している。ある特定の態様では、プロセッサ200、ディスプレイコントローラ426、メモリ410、コーデック434、およびワイヤレスコントローラ440は、システムインパッケージデバイスまたはシステムオンチップデバイス422に含まれる。
【００４２】
ある特定の態様では、入力デバイス430および電源444が、システムオンチップデバイス422に結合される。さらに、ある特定の態様では、図4に示すように、ディスプレイ428、入力デバイス430、スピーカー436、マイクロフォン438、ワイヤレスアンテナ442、および電源444は、システムオンチップデバイス422の外部に位置する。ただし、ディスプレイ428、入力デバイス430、スピーカー436、マイクロフォン438、ワイヤレスアンテナ442、および電源444の各々は、インターフェースまたはコントローラのような、システムオンチップデバイス422の構成要素に結合することができる。
【００４３】
図4は、ワイヤレス通信デバイスを示すが、プロセッサ200およびメモリ410が、音楽プレーヤ、ビデオプレーヤ、エンターテインメントユニット、ナビゲーションデバイス、通信デバイス、モバイルデバイス、モバイル電話、スマートフォン、携帯情報端末、固定位置端末、タブレットコンピュータ、コンピュータ、ウェアラブルデバイス、ラップトップコンピュータ、サーバ、および自動車車両内のデバイス、または他の同様のデバイスから成るグループから選択されたデバイスに組み込まれる場合もあることに留意されたい。
【００４４】
本説明または特許請求の範囲に開示された方法は、本方法のそれぞれのステップまたは動作を実行するための手段を含むデバイスによって実行することが可能であることにさらに留意されたい。たとえば、装置が、過渡的ロード命令、第2の命令、およびロードデータを記憶するための第1の手段(たとえば、命令キャッシュ210)と、過渡的ロード命令および第2の命令を記憶するための第2の手段(たとえば、命令レジスタ220)と、記憶するための第1の手段および記憶するための第2の手段に結合された、データを処理するための手段であって、記憶するための第1の手段から過渡的ロード命令を取り出し、記憶するための第2の手段に過渡的ロード命令を記憶し、過渡的ロード命令に応答して記憶するための第1の手段からロードデータを取り出し、過渡的ロード命令に応答して記憶するための第2の手段にロードデータを記憶し、ロードデータを使用して第2の命令を実行するように構成された、データを処理するための手段とを含んでもよい。
【００４５】
「例示的な」という単語は、本明細書では、「例、実例、または例証として機能する」を意味するために使用される。「例示的」として本明細書に記載されるいずれの詳細事項も、必ずしも他の例よりも好ましいか、または有利であると解釈されるべきでない。同様に、「例」という用語は、すべての例が説明する特徴、利点または動作モードを含むことを必要としない。本明細書において「一例では」、「例」、「1つの特徴では」、および/または「特徴」という用語を使用する場合、必ずしも同じ特徴および/または例を指すとは限らない。さらに、特定の特徴および/または構造は、1つもしくは複数の他の特徴および/または構造と組み合わせることができる。その上、本明細書で説明する装置の少なくとも一部分は、本明細書で説明する方法の少なくとも一部分を実行するように構成することができる。
【００４６】
本明細書で使用される用語は、特定の例を説明することのみを目的とし、本開示の例を限定することは意図されない。本明細書で使用される単数形「a」、「an」、および「the」は、文脈が別段に明確に示さない限り複数形を含むことを意図する。本明細書で使用するとき、「備える(comprises)」、「備えている(comprising)」、「含む(includes)」、および/または「含んでいる(including)」という用語は、述べられた特徴、整数、ステップ、動作、要素、および/または構成要素の存在を明示するが、1つまたは複数の他の特徴、整数、ステップ、動作、要素、構成要素、および/またはそれらのグループの存在または追加を排除するものではないことがさらに理解されよう。
【００４７】
「接続される」、「結合される」という用語、またはそれらのいかなる変形形態も、要素間の直接的または間接的な任意の接続または結合を意味し、仲介要素を介して互いに「接続」または「結合」される2つの要素間の仲介要素の存在を含むことができることに留意されたい。要素間の結合および/または接続は、物理的、論理的、またはそれらの組合せであってもよい。本明細書で使用する要素は、たとえば、1つまたは複数のワイヤ、ケーブル、および/またはプリントされた電気接続部を使用することによって、互いに「接続」または「結合」できる。これらは、いくつかの非限定的かつ非網羅的な例である。
【００４８】
本明細書における「第1の」、「第2の」などの呼称を使用する要素へのあらゆる参照は、これらの要素の数量および/または順序を限定するものではない。むしろ、これらの呼称は、2つ以上の要素、および/または要素の実例を区別する都合のよい方法として使用されている。したがって、第1および第2の要素への参照は、2つの要素のみを使用することができること、または第1の要素が第2の要素に必ず先行しなければならないことを意味しない。また、別段に記載されていない限り、1組の要素は、1つまたは複数の要素を含むことができる。加えて、本説明または特許請求の範囲で使用する「A、B、またはCのうちの少なくとも1つ」という形態の用語は、「AまたはBまたはCまたはこれらの要素の任意の組合せ」と解釈することができる。
【００４９】
さらに、多くの例について、たとえば、コンピューティングデバイスの要素によって実行されるべきアクションのシーケンスの観点から説明する。本明細書において説明される様々なアクションは、特定の回路(たとえば、特定用途向け集積回路(ASIC))によって実行することも、あるいは1つまたは複数のプロセッサによって実行されるプログラム命令によって実行することも、あるいはその両方の組合せによって実行することも可能であることが認識されよう。加えて、本明細書で説明するこれらの一連のアクションは、実行されると、関連するプロセッサに本明細書で説明する機能を実行させる、対応するコンピュータ命令のセットを記憶した任意の形態のコンピュータ可読記憶媒体内において完全に具現化されるものと見なすことができる。したがって、本開示の様々な態様は、そのすべてが特許請求される主題の範囲内にあると考えられるいくつかの異なる形態において具現化されてもよい。加えて、本明細書で説明する例ごとに、任意のそのような例の対応する形態は、本明細書では、たとえば、説明するアクションを実行する「ように構成された論理」として記載される場合がある。
【００５０】
本出願に記述されるか、例示されるか、または図示されるもののいずれも、任意の構成要素、ステップ、特徴、利益、利点、または均等物が特許請求の範囲に記載されているかどうかにかかわらず、それらの構成要素、ステップ、特徴、利益、利点、または均等物を公衆に献呈することを意図していない。
【符号の説明】
【００５１】
110  パケット
120  パケット
130  パケット
200  マイクロプロセッサシステム
210  命令キャッシュ
220  命令レジスタ
230  第1の実行ユニット
240  第2の実行ユニット
250  第3の実行ユニット
260  第4の実行ユニット
270  データキャッシュ
280  永続的なレジスタ
400  ワイヤレスデバイス
410  メモリ
422  システムオンチップデバイス
426  ディスプレイコントローラ
428  ディスプレイ
430  入力デバイス
434  コーデック
436  スピーカー
438  マイクロフォン
440  ワイヤレスコントローラ
442  ワイヤレスアンテナ
444  電源
【図１】
0006759249.tif 000002
【図２】
0006759249.tif 000003
【図３】
0006759249.tif 000004
【図４】
0006759249.tif 000005