(57)【要約】      （修正有）【課題】階層型の超長命令語(VLIW)パケットを処理するシステムおよび方法、命令を処理する方法を提供する。【解決手段】命令の階層型VLIWパケット１０８を受信するステップ１０２と、命令が単一の命令１１０、１１２であるか、または、命令が複数のサブ命令１１６、１１８を含むサブパケット１１４を含むかを決定するために、パケット１０８から命令を復号するステップ１０４とを含む。命令がサブパケット１１４を含むことを決定したことに応答して、サブ命令１１６、１１８の各々を実行するステップ１０６も含む。【選択図】図１
2014238859.tif 000002
【特許請求の範囲】
【請求項１】
命令を処理する方法であって、
前記方法が、
命令を含むパケットを受信するステップと、
前記命令に含まれる解析インジケータに基づいて、前記命令が第1のサブパケットを含むかどうかを決定するために前記命令を復号するステップとを含み、前記解析インジケータが、前記命令が前記パケットの末尾に位置しているかどうかを識別するとともに、前記第1のサブパケットが複数のサブ命令を含み、
前記方法が、
前記命令が前記サブパケットを含むとの決定に応答して、前記サブ命令の各々を実行するステップを含む方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、一般に、階層型の超長命令語を符号化することに関する。
【背景技術】
【０００２】
技術の進歩により、より小型でより高性能なコンピューティングデバイスが生まれてきた。たとえば、現在、小型で、軽量で、ユーザにより簡単に持ち運ばれる、携帯式のワイヤレス電話、携帯情報端末(PDA)、およびページングデバイスのような、ワイヤレスコンピューティングデバイスを含む、様々な携帯式の個人向けコンピューティングデバイスが存在する。より具体的には、携帯電話およびインターネットプロトコル(IP)電話のような、携帯式のワイヤレス電話は、ワイヤレスネットワークを通じて、音声およびデータパケットを通信することができる。さらに、多くのそのようなワイヤレス電話には、他の種類のデバイスが組み込まれている。たとえば、ワイヤレス電話は、デジタルスチルカメラ、デジタルビデオカメラ、デジタルレコーダー、およびオーディオファイルプレーヤも含み得る。また、そのようなワイヤレス電話は、ウェブブラウザアプリケーションなど、インターネットにアクセスするために使用され得るソフトウェアアプリケーションを含む実行可能な命令を処理することができる。したがって、これらのワイヤレス電話は、高いコンピューティング能力を含み得る。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
計算を加速し、プログラムサイズ、および結果として生じるプログラムストレージの必要性を低減するために、より効率的に命令をパックすることが有用である。より効率的に命令をパックすることによって、命令キャッシュサイズを低減することができ、または同じ命令キャッシュサイズがより多くの命令を保持することができる。
【課題を解決するための手段】
【０００４】
特定の一実施形態では、命令を処理する方法が開示される。この方法は、命令のパケットを受信するステップを含む。パケットは、命令が単一の命令であるか、または、命令が複数のサブ命令を含むサブパケットを含むかを決定するために復号され得る少なくとも1つの命令を含む。この方法は、命令がサブパケットを含むことを決定したことに応答して、サブ命令の各々を実行するステップも含む。
【０００５】
別の特定の実施形態では、命令を処理する方法は、命令のパケットを受信するステップであり、パケットが、第1の解析値を有する第1の命令、および第2の解析値を有する第2の命令を含む、ステップを含む。この方法は、第1の実行ユニットに第1の命令を転送し、第2の命令を、第1のサブ命令および第2のサブ命令を含むサブパケット命令として識別するステップを含む。この方法は、第2の実行ユニットに第1のサブ命令を転送するステップも含む。
【０００６】
別の特定の実施形態では、プロセッサが開示される。プロセッサは、命令のパケットを受信するためのデコーダを含む。デコーダは、命令が第1のサブ命令および第2のサブ命令を含む第1のサブパケット命令であるかどうかを決定するためにパケット内の命令を復号するように動作可能である。プロセッサは、命令を実行する、または第1のサブ命令を実行するための実行ユニットも含む。
【０００７】
開示された実施形態のうちの少なくとも1つによって提供される1つの特定の利点は、命令がより密にパックされるので、命令キャッシュサイズを低減できるということである。命令を効率的にパックすることの利点は、より多くの命令を同じ量のキャッシュに格納できることである。開示された実施形態のうちの少なくとも1つによって提供される別の利点は、各パケットがより高密度の命令を含み、その結果、プログラムを実行するための命令を取り出すための呼び出しの総数が低減するため、メモリからコードをフェッチするために必要なエネルギーが低減することである。
【０００８】
本開示の他の態様、利点、および特徴は、以下のセクション、すなわち、図面の簡単な説明、発明を実施するための形態、および特許請求の範囲を含む、本出願全体の検討後に明らかになろう。
【図面の簡単な説明】
【０００９】
【図１】パイプライン型プロセッサに入る超長命令語(VLIW)パケットの特定の例示的な実施形態のブロック図である。
【図２】サブパケット命令を含むVLIWパケットの特定の例示的な実施形態のブロック図である。
【図３】サブパケット命令を含むVLIWパケットを処理しているパイプライン型プロセッサの特定の例示的な実施形態のブロック図である。
【図４】サブパケット命令を含むVLIWパケットを処理しているパイプライン型プロセッサの別の特定の例示的な実施形態のブロック図である。
【図５】サブパケット命令を含むVLIWパケットを処理しているパイプライン型プロセッサの別の特定の例示的な実施形態のブロック図である。
【図６】サブパケット命令を含むVLIWパケットを処理しているパイプライン型処理ユニットの別の特定の例示的な実施形態のブロック図である。
【図７】サブパケット命令を含むVLIWパケットを処理する方法の特定の例示的な実施形態のフローチャートである。
【図８】サブパケット命令を含むVLIWパケットを処理する方法の別の特定の例示的な実施形態のフローチャートである。
【図９】サブ命令を含むVLIWパケットを処理するためのデジタル信号プロセッサを含むワイヤレスデバイスのブロック図である。
【発明を実施するための形態】
【００１０】
図1を参照すると、超長命令語(VLIW)パケットの特定の例示的な実施形態が開示されている。VLIWパケット108は、第1の命令110、第2の命令112、および第Nの命令114までの追加命令を含むN個の命令を含む。パイプライン型プロセッサ100のフェッチ段階102で、VLIWパケット108は、最初にストレージ(図示せず)からフェッチされ、パイプライン型プロセッサ100の復号段階104に入る。
【００１１】
復号段階104で、命令114は、サブ命令116および118を含むサブパケット命令として識別される。VLIWパケット108内の複数のN個の命令は、復号段階104から、実行段階106に進む。実行段階106は、実行ユニット120、122、124、および126を含むM個の実行ユニットを含む。特定の例示的な実施形態では、Mは、Nを上回っていてもよい。別の特定の例示的な実施形態では、Mは、N未満でもよい。別の特定の例示的な実施形態では、Mは、Nに等しくてもよい。
【００１２】
実行段階106で、第1の命令104は、実行ユニット120に入る。第2の命令112は、実行ユニット122に入る。第1のサブ命令116は実行ユニット124に入り、第2のサブ命令118は実行ユニット126に入る。特定の例示的な実施形態では、VLIWパケット108内の他の命令の各々は、実行段階106で対応する実行ユニットに入ることができる。
【００１３】
特定の例示的な実施形態では、VLIWパケット108内の命令のうちの1つまたは複数は、2つ以上のサブ命令を含むサブパケット命令である。1つまたは複数のサブ命令パケットを含むVLIWパケットは、階層型VLIWと呼ばれる。図1に示される例示的な実施形態では、サブ命令116および118の各々は、異なる実行ユニットに入り、サブ命令116および118が同時に実行される。あるいは、サブ命令116および118の各々は、サブ命令116と118の両方を実行する単一の実行ユニットに転送され得る。
【００１４】
特定の例示的な実施形態では、VLIWパケットは、複数のサブパケット命令を含み、各サブパケット命令は、2つ以上のサブ命令を含む。特定の例示的な実施形態では、サブパケット命令は、命令のサブサブパケット(sub-sub-packet)(図示せず)を識別するために復号することができ、サブサブパケットは、サブサブ命令と呼ばれる複数の命令を含む。別の特定の例示的な実施形態では、VLIWパケットの各命令は、1つまたは複数の入れ子形命令を含む超長命令語を含み、そのうちの少なくとも1つは、2つ以上のサブ命令を含むサブパケット命令である。
【００１５】
実行段階106に、M個の実行ユニットがある。数Mが命令110、112、ならびにサブ命令116および118を含むVLIWパケットの各命令に対応するのに十分大きいとき、MはNよりも大きく、VLIWパケット108の命令のすべてを同時に実行することができる。VLIWパケット108内のすべての命令の並列処理の利点は、VLIWパケット108に含まれる命令のいくつかの順次処理と比較してより速い処理である。
【００１６】
図2を参照すると、VLIWパケットの特定の例示的な実施形態が開示され、全般に200と称される。VLIWパケット200は、命令202、204、206、および208を含む。命令202、204、206、および208の各々は、一般的に固定数のビットを含む。たとえば、命令202、204、206、および208の各々は、32ビットを含み得る。命令の各々は、解析フィールドを含むことができる。特定の例示的な実施形態では、解析フィールドは、2ビットを含む。特定の例示的な実施形態では、第1の解析値は第1の命令の2つの隣接する内部ビットに格納され、第2の解析値は第2の命令の2つの隣接する内部ビットに格納される。たとえば、01の解析値は命令206の2つの隣接する内部ビットに格納され、00の解析値は命令208の2つの隣接する内部ビットに格納される。特定の例示的な実施形態では、解析フィールドは、対応する命令の真ん中のビットに位置する。解析フィールドの一例として、命令202は、10の格納値を有する解析フィールド210を含み、命令204は、01の格納値を有する解析フィールド212を含み、命令206は、01の格納値を有する解析フィールド214を含み、命令208は、00の格納値を有する解析フィールド216を含む。
【００１７】
解析フィールドは、命令がパケット終了命令(end-of-packet instruction)であるかどうかのインジケータであり得る。特定の例では、解析フィールド10は、パケットがパケット終了ではないことを示し、また、パケットがハードウェアループの末尾にあることも示す。特定の例示的な例では、01の値を有する解析フィールドは、パケット終了ではない命令を示す。特定の例示的な例では、11の値を有する解析フィールドは、パケット終了命令を示す。特定の一実施形態では、00の値を有する解析フィールドを有する命令もパケット終了命令を示す。00の値を有する解析フィールドを有する命令は、命令がサブパケット命令であることも示す。サブパケット命令は、2つ以上のサブ命令を含む命令である。
【００１８】
たとえば、命令208は、00の値を有する解析フィールド216を含む。したがって、命令208は、サブパケット命令であり、パケット終了命令でもある。命令208の詳細な図(図2の下側部分)を見ると、第1のサブ命令218および第2のサブ命令220は、命令208内に含まれる。第1のサブ命令218はAと標示されたデータを含み、第2のサブ命令220はBと標示されたデータを含む。
【００１９】
サブ命令218および220に加えて、命令208は、第1の命令クラスフィールド222および第2の命令クラスフィールド224を含む。命令クラスフィールド222および224は、ロード、ストア、算術など、命令の種別を示すことができる。命令クラスフィールド222および224の内容は、パイプライン型プロセッサの復号段階で有用であり得る。
【００２０】
特定の例示的な実施形態では、命令208は32ビットを含み、各サブ命令218および220は13ビットを含み、解析フィールド216は2ビットを含み、第1の命令クラスフィールド222は3ビットを含み、第2の命令クラスフィールド224は1ビットを含む。
【００２１】
特定の例示的な実施形態では、サブ命令218および220は、パイプライン型プロセッサの実行段階で同時に実行される。別の特定の例示的な実施形態では、サブ命令218および220は、パイプライン型プロセッサの実行段階で連続的に実行される。
【００２２】
図3を参照すると、パイプライン型プロセッサの特定の例示的な実施形態が開示され、全般に300と称される。パイプライン型プロセッサ300は、複数の段階を含む。図3は、3つの段階、すなわちフェッチ段階302、復号段階304、および実行段階306を示す。別の実施形態では、パイプライン型プロセッサ300は、ライトバック段階など他の段階を含むことができる。特定の例示的な例では、命令パケット308は、フェッチ段階302でフェッチされる。命令パケット308は、復号段階304で復号され、その後、命令パケット308に含まれる複数の命令が実行段階306に送られ、命令の各々がそこで実行される。
【００２３】
特定の例示的な例では、命令パケット308は、命令202、204、206、および208を含む。特定の例示的な実施形態では、命令パケット308は、プロセッサ300に関連付けられた密結合メモリ(図示せず)から取り出される。別の特定の例示的な実施形態では、命令パケットは、プロセッサ300に関連付けられた命令キャッシュ(図示せず)から取り出される。特定の例示的な実施形態では、命令パケット308の命令202、204、206、および208の各々は、同じサイズを有する(すなわち、同数のビットを含む)。特定の例示的な実施形態では、命令202、204、206、および208の各々は、32ビットのサイズを有する。
【００２４】
特定の例示的な実施形態では、命令パケット308は、超長命令語(VLIW)パケットである。VLIWパケット308内の命令のうちの1つ、たとえば命令208は、第1のサブ命令218および第2のサブ命令220を含むサブパケット命令である。命令202、204、206、および208の各々は、解析フィールドを含む。命令202は、解析フィールド210を含み、解析フィールド210は、図3に示される例では、命令202がパケット終了命令ではなく、命令202がハードウェアループ終了命令であることを示す10の値を有する。命令204および206は、対応する解析フィールド212および214を有し、その各々は、対応する命令がパケット終了命令ではないことを示す01の値を有する。命令208は、サブパケット命令であり、命令208がサブパケット命令であることを示し、また、命令208がパケット終了命令であることも示す00の値を有する解析フィールド216を含む。特定の例示的な実施形態では、命令208は2つのサブ命令218および220を含み、その各々は命令316よりも小さいサイズを有する(すなわち、より少ない数のビットを含む)。
【００２５】
復号段階304で、VLIW命令パケット308は、命令202、204、206、ならびにサブ命令218および220に復号される。各命令は、命令が実行可能命令であるか、複数のサブ命令を含むサブパケット命令であるかを決定するために評価され得る。たとえば、解析フィールド220の内容は、サブパケット命令を示す定義された値と比較され得る。サブパケット命令として示されない命令は、直ちに実行段階に転送され得る。サブパケット命令であると決定された命令は、それらの構成要素のサブ命令(たとえばサブパケット命令218および220)に復号され得る。いくつかの実施形態では、サブ命令は、次いで実行ステージ306に並行して転送される。サブ命令は、単一の実行ユニットにおいて、または複数の実行ユニットにおいて並行して実行され得る。他の実施形態では、サブ命令は、連続的に転送される。実行段階306は、使用可能なプロセッサリソースに基づいて、サブ命令を連続的に実行すべきか、並行して実行すべきかを決定するように構成され得る。
【００２６】
実行段階306に移動して、特定の例示的な例では、復号段階を離れた命令の各々は、対応する実行ユニットに入る。命令202は実行ユニット330に入り、命令204は実行ユニット332に入り、命令206は実行ユニット334に入り、サブ命令218は実行ユニット336に入り、サブ命令220は実行ユニット338に入る。特定の例示的な実施形態では、命令202、204、206、218、および220のすべては、同時に実行される。図3の例示的な実施形態では、実行ユニット334、336、および338は、ロード命令およびストア命令など、データキャッシュ関連の命令を実行し、実行ユニット330および332は、算術実行ユニット、たとえば算術論理ユニット(ALU)である。実行後、各実行ユニットの出力は、ライトバック段階(図示せず)の間、結果を提供し続ける。
【００２７】
特定の一実施形態では、VLIWパケット内の命令のすべてが並行して実行され得る。たとえば、命令のすべてがプロセッサ300によって並行して実行され得、そうではなければ、障害が起こる。別の特定の実施形態では、プロセッサ300が命令202、204、206、ならびにサブ命令218および220を並行して実行するのに十分なリソースを有していないとき、VLIWパケット内の他の命令が実行された後、サブ命令(たとえば218または220)が実行され得る。
【００２８】
特定の一実施形態では、VLIWパケット内の命令の位置は、どの実行ユニットが命令を受信するかを決定する。たとえば、図3で、命令202は、VLIWパケット308の第1の命令であり、実行ユニット330に転送され、第2の命令204は実行ユニット332に転送され、第3の命令206は実行ユニット334に転送される。
【００２９】
したがって、VLIWパケットは、並行して処理すべき命令、および各命令が転送されるべき実行ユニットをプロセッサに指示することができる。そのような実施形態では、プロセッサは、複数のサイクルにわたって単一のパケット内の命令を処理すること、またはVLIWパケット内の命令の位置によって示される実行ユニット以外の実行ユニットに命令を転送することが許可されない場合がある。
【００３０】
サブ命令を含むVLIWパケットにパックされる命令の総数がサブ命令のないVLIWパケットにパックされる命令の総数よりも大きい可能性があるので、プログラム命令のためのメモリへのフェッチの総数を低減することができ、結果として計算時間の効率が増す。各フェッチがエネルギーコストを有するので、フェッチの総数の低減によって、プログラムの実行に関連付けられた消費電力の低減がもたらされ得る。
【００３１】
図4を参照すると、パイプライン型プロセッサの特定の例示的な実施形態が開示され、全般に400と称される。パイプライン型プロセッサ400は、フェッチ段階402、復号段階404、および実行段階406を含む。ライトバック段階を含むパイプラインの追加の段階は、図示されていない。フェッチ段階402で、超長命令語(VLIW)命令408は、命令キャッシュなどのメモリまたは他のメモリからフェッチされる。VLIW命令408は、4つの命令202、204、206、および208を含む。命令202は、10の値を有する解析フィールド210を含み、命令204は、01の値を有する解析フィールド212を含み、命令206は、01の値を有する解析フィールド214を含み、命令208は、00の値を有する解析フィールド216を含む。解析フィールド210、212および214は、それらの対応する命令がパケット終了命令ではないことを示す値を有する。00の値を有する解析フィールド216は、命令208がサブパケット命令であり、命令208がパケット終了命令であることを示す。命令208は、第1のサブ命令218および第2のサブ命令220を含む。第1のサブ命令218はAによって示されたデータを含み、第2のサブ命令220はBによって示されたデータを含む。
【００３２】
復号段階404に進むと、VLIWパケット408は、命令202、204、206、ならびに2つのサブ命令218および220の各々に分離される。実行段階406に進むと、4つの実行ユニット430、432、434、および436がある。特定の例示的な実施形態では、実行ユニット430および432は、算術命令(文字Xによって示される)を実行し、実行ユニット434および432は、データロードおよびストア実行ユニット(文字Dによって示される)である。特定の例示的な例では、命令202は実行ユニット430において実行され、命令204は実行ユニット432において実行され、命令206は実行ユニット434において実行され、第1のサブ命令218は実行ユニット436において実行される。命令202、204、206、および第1のサブ命令218は、同時に実行することができる。第1のサブ命令218が実行ユニット436において実行された後、第2のサブ命令220は次のクロックサイクルの間、実行ユニット436において実行される。したがって、図4に図示された例では、サブ命令218および220は、実行ユニット436において連続的に実行される。別の特定の例示的な例(図4には図示せず)では、実行ユニット436は、サブ命令218と220の両方の同時の実行を可能にするように構成される。この構成では、命令202、204、206、218、および220は、同時に実行することができる。
【００３３】
図5に示されるさらに別の特定の例示的な例では、解析フィールドではない、すなわち、210、212、214、または216内にないインジケータフィールド502は、特定の命令がサブパケット命令であるインジケータとして働くことができる。たとえば、命令204は、設定されたとき、命令204が、第1のサブ命令C504および第2のサブ命令D506を含むサブパケット命令であることを示すインジケータフィールド502を含むことができる。代わりに、VLIWパケット408内の各命令は、サブパケットインジケータフィールドを含むことができる。サブパケット命令204を、復号段階404で復号することができ、次いでサブ命令504および506を実行することができる。図5に示される特定の例示的な例では、プロセッサ500は、2つのサブ命令を同時に実行するよう構成された実行ユニット532を含み、サブ命令504および506を命令202、206、およびサブ命令218と同時に実行できるようにする。別の特定の例示的な例(図4または図5に図示せず)では、実行ユニット432および436の各々は、2つのサブ命令を同時に実行するように構成され、サブ命令218および220、ならびにサブ命令504および506を命令202および206と同時に実行できるようにする。
【００３４】
図6を参照すると、パイプライン型プロセッサの特定の例示的な実施形態が開示され、全般に600と称される。パイプライン型プロセッサ600は、制御ユニット606、および実行ユニット608、610、612、および614を含む。制御ユニット606は、デコーダ616および汎用レジスタファイル620を含む。
【００３５】
動作時、複数の命令を含むVLIWパケットなど、命令のパケットが取り出され、バス634を介して制御ユニットに供給される。デコーダ616は、命令のパケット内の複数の命令を復号するように動作可能である。VLIWパケットは、デコーダ616で個々の命令にアンパックされる。VLIWパケットは、命令202、命令204、ならびにサブ命令218およびサブ命令220を含むサブパケット命令を含む複数の命令を含む。特定の例示的な実施形態では、サブ命令218および220は、それらの各々のサイズがVLIWパケットにパックされるサブパケット命令よりも小さい(すなわちより少ないビットを含む)命令である。
【００３６】
デコーダ616でVLIWパケットを復号した後、復号された命令は、実行段階に送られる。命令202、204、218、および220の各々は、対応する実行ユニットに入る。図6に示すように、命令202は実行ユニット614において実行され、命令204は実行ユニット612において実行され、サブ命令218は実行ユニット610において実行され、サブ命令220は実行ユニット608において実行される。したがって、図6に示される例では、命令202、204、218、および220は、同時に実行される。実行後、実行ユニット608、610、612、および614の各々の出力は、汎用レジスタファイル620に書き込まれる。実行ユニット608、610、612、および614の出力を、バス634を介して記憶メモリに送ることもできる。
【００３７】
図7を参照すると、命令を転送する方法の特定の例示的な実施形態が示され、全般に700と称される。710で、第1の解析値を有する第1の命令および第2の解析値を有する第2の命令を含む命令のパケットが受信される。たとえば、図3で、命令206は01の第1の解析値を有する解析フィールド214を有し、命令208は00の第2の解析値を有する解析フィールド216を有する。特定の例示的な実施形態では、命令のパケットは、VLIWパケットである。たとえば、図3で、パケット308は、VLIWパケットである。720で、第1の命令が第1の実行ユニットに転送される。たとえば、図3で、命令206は、実行ユニット334に転送される。730に進むと、第2の命令は、第1のサブ命令および第2のサブ命令を含むサブパケット命令として識別される。たとえば、図3で、命令208は、解析フィールド216内の第2の解析値00によるサブパケット命令として識別される。命令208は、第1のサブ命令218および第2のサブ命令220を含む。740に進むと、第1のサブ命令は、第2の命令ユニットに転送される。たとえば、図3で、第1のサブ命令218は、実行ユニット336に転送される。750に進むと、第2のサブ命令は、第3の実行ユニットに転送される。たとえば、図3で、第2のサブ命令220は、実行ユニット338に転送される。随意に、760で、第1のサブ命令、第2のサブ命令、および第1の命令が同時に実行される。たとえば、図3で、命令206、ならびにサブ命令218および220が同時に実行される。770で方法が終わる。他の実施態様では、第2のサブ命令は、第1のサブ命令と連続的に実行されるように第2の命令ユニットに転送され得る。
【００３８】
図8を参照すると、命令を実行する方法の特定の例示的な実施形態が開示され、全般に800と称される。810で、第1の命令を含む命令のパケットが受信される。たとえば、図3で、パケット308は、命令208を含む。820で、第1の命令が復号される。830で、第1の命令がサブパケット命令であるかどうかに関する決定がなされる。第1の命令が複数のサブ命令を含む第1のサブパケット命令であると決定されると、方法がブロック840に進む。たとえば、図3で、命令208は、第1のサブ命令218および第2のサブ命令220を含むサブパケット命令である。第1の命令は、第1の命令をサブパケット命令として識別し、第1の命令のパケット終了ステータスを示す解析インジケータを含む(パケット内の命令のいずれかは、復号中に、その解析インジケータの値を介して、サブパケット命令として、または、サブパケット命令を識別する代替の方法を介して識別され得る)。たとえば、図3で、命令208は、00の値を有し、命令208をサブパケット命令として識別し、命令208がパケット終了命令であることを示す解析インジケータ216を含む。ブロック840で、複数のサブ命令の各々が実行される。たとえば、図3で、第1のサブ命令218、および第2のサブ命令220が実行される。特定の例示的な実施形態では、複数のサブ命令のすべては、同時に実行される。たとえば、図3で、第1のサブ命令218および第2のサブ命令220が同時に実行される。決定ブロック830に戻ると、第1の命令がサブパケット命令ではないとき、850で、第1の命令が実行される。たとえば、図3で、復号段階304で、命令206がサブパケット命令ではないことが決定され、命令206は復号段階304から実行段階306に進み、ここで実行される。860で方法が終わる。
【００３９】
図9を参照すると、サブ命令を含むVLIWパケットを処理するためのデジタル信号プロセッサを含むワイヤレスデバイスの特定の例示的な実施形態のブロック図が示され、全般に900と称される。デバイス900は、VLIWパケット964内の複数の命令を処理するためのデジタル信号プロセッサ(DSP)910などのプロセッサを含む。VLIWパケット964は、命令966、968、970、および972を含む。VLIWパケット964は、複数のサブパケット命令を含む階層型命令パケットである。VLIWパケット964は、3レベルの命令を階層に含む。各サブパケット命令は、複数のサブ命令を含む。たとえば、命令972は、サブ命令974および976を含むサブパケット命令(階層の第2のレベル)である。サブ命令974は、サブサブ命令978および980を含むサブサブパケット命令(階層の第3のレベル)であり、サブ命令976はサブサブ命令982および984を含むサブサブパケット命令(階層の第3のレベル)である。
【００４０】
DSP910の復号段階で、VLIWパケット964は、命令966、968、970、および972に復号される。サブパケット命令972は、サブ命令974および976に復号される。サブ命令974は、サブサブ命令978および980に復号され、サブ命令976は、サブサブ命令982および984に復号される。例示的な例では、DSP910は、図3〜図5のうちの1つまたは複数に従って、ならびに図6および図7の方法のうちの1つまたは複数に従って、またはそれらの任意の組合せに従って、命令966、968、970、978、980、982、および984を処理する。
【００４１】
図9は、デジタル信号プロセッサ910およびディスプレイ928に結合されたディスプレイコントローラ926も示す。コーダ/デコーダ(コーデック)934は、デジタル信号プロセッサ910に結合することもできる。スピーカー936およびマイクロフォン938がコーデック934に結合され得る。
【００４２】
図9は、ワイヤレスコントローラ940をデジタル信号プロセッサ910およびワイヤレスアンテナ942に結合することができることも示す。特定の一実施形態では、DSP910、ディスプレイコントローラ926、メモリ932、コーデック934、およびワイヤレスコントローラ940は、システムインパッケージデバイスまたはシステムオンチップデバイス922に含まれる。特定の一実施形態では、入力デバイス930および電源944が、システムオンチップデバイス922に結合される。その上、特定の一実施形態では、図9に示すように、ディスプレイ928、入力デバイス930、スピーカー936、マイクロフォン938、ワイヤレスアンテナ942、および電源944は、システムオンチップデバイス922の外部にある。ただし、ディスプレイ928、入力デバイス930、スピーカー936、マイクロフォン938、ワイヤレスアンテナ942、および電源944の各々は、インターフェースまたはコントローラなど、システムオンチップデバイス922の構成要素に結合され得る。
【００４３】
さらに、本明細書で開示した実施形態に関して説明した様々な例示的な論理ブロック、構成、モジュール、回路、およびアルゴリズムステップは、電子ハードウェア、コンピュータソフトウェア、または両方の組合せとして実装され得ることを、当業者は諒解されよう。ハードウェアとソフトウェアのこの互換性を明確に示すために、様々な例示的な構成要素、ブロック、構成、モジュール、回路、およびステップを、上記では概してそれらの機能に関して説明した。そのような機能をハードウェアとして実装するか、ソフトウェアとして実装するかは、特定の適用例および全体的なシステムに課される設計制約に依存する。当業者は、説明した機能を特定の適用例ごとに様々な方法で実装し得るが、そのような実装の決定は、本開示の範囲からの逸脱を生じるものと解釈すべきではない。
【００４４】
本明細書で開示する実施形態に関して説明した方法またはアルゴリズムのステップは、直接ハードウェアで実施されるか、プロセッサによって実行されるソフトウェアモジュールで実施されるか、またはその2つの組合せで実施され得る。ソフトウェアモジュールは、ランダムアクセスメモリ(RAM)、フラッシュメモリ、読取り専用メモリ(ROM)、プログラマブル読取り専用メモリ(PROM)、消去可能プログラマブル読取り専用メモリ(EPROM)、電気消去可能プログラマブル読取り専用メモリ(EEPROM)、レジスタ、ハードディスク、リムーバブルディスク、コンパクトディスク読取り専用メモリ(CD-ROM)、または当技術分野で知られている任意の他の形態の記憶媒体中に存在し得る。例示的な記憶媒体は、プロセッサが記憶媒体から情報を読み取り、記憶媒体に情報を書き込むことができるように、プロセッサに結合される。代替として、記憶媒体はプロセッサと一体であり得る。プロセッサおよび記憶媒体は、特定用途向け集積回路(ASIC)に存在し得る。ASICは、コンピューティングデバイスまたはユーザ端末に存在し得る。代替として、プロセッサおよび記憶媒体は、コンピューティングデバイスまたはユーザ端末の中に、個別のコンポーネントとして存在し得る。
【００４５】
開示された実施形態の上記の説明は、任意の当業者が開示された実施形態を製作または使用できるようにするために提供されている。これらの実施形態への様々な修正が、当業者には容易に明らかであり、本明細書で定義される原理は、本開示の範囲から逸脱することなく、他の実施形態に適用され得る。したがって、本開示は、本明細書で示される実施形態に限定されることは意図されず、以下の特許請求の範囲で定義されるような原理および新規の特徴と矛盾しない、可能な最大の範囲を認められるべきである。
【符号の説明】
【００４６】
100  パイプライン型プロセッサ
102  フェッチ段階
104  復号段階
106  実行段階
108  VLIWパケット
110  第1の命令
112  第2の命令
114  第Nの命令
116  第1のサブ命令
118  第2のサブ命令
120  実行ユニット
122  実行ユニット
124  実行ユニット
126  実行ユニット
【図１】
2014238859.tif 000003
【図２】
2014238859.tif 000004
【図３】
2014238859.tif 000005
【図４】
2014238859.tif 000006
【図５】
2014238859.tif 000007
【図６】
2014238859.tif 000008
【図７】
2014238859.tif 000009
【図８】
2014238859.tif 000010
【図９】
2014238859.tif 000011
【手続補正書】
【提出日】平成26年8月19日(2014.8.19)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
命令を処理する方法であって、
前記方法が、
命令を含むパケットを受信するステップと、
前記命令に含まれる解析インジケータに基づいて、前記命令が第1のサブパケットを含むかどうかを決定するために前記命令を復号するステップとを含み、前記第1のサブパケットが複数のサブ命令を含み、前記命令が前記第1のサブパケットを含む場合、前記命令が第1のサブ命令および第2のサブ命令を含み、前記第1のサブ命令が第1のサブ・サブパケットを含む場合、前記第1のサブ・サブパケットが複数のサブ・サブ命令を含み、
前記方法が、
前記命令が前記サブパケットを含むとの決定に応答して、前記サブ命令の各々を実行するステップを含む方法。
【請求項２】
前記パケットが複数のサブパケットを含む、請求項1に記載の方法。
【請求項３】
前記複数のサブ・サブ命令の各サブ・サブ命令が実行ユニットにおいて実行される、請求項1に記載の方法。
【請求項４】
前記パケットが複数の命令を含むとともに、前記復号するステップが、前記複数の命令を復号するように動作可能であるデコーダによって実行される、請求項1に記載の方法。
【請求項５】
前記命令が、命令の種別を識別するために使用される命令クラスフィールドを含む、請求項1に記載の方法。
【請求項６】
前記パケットが超長命令語(VLIW)パケットであり、前記VLIWが複数の命令を含み、前記複数の命令の各命令が対応する解析インジケータを含む、請求項1に記載の方法。
【請求項７】
前記パケットが複数の命令を含む、請求項1に記載の方法。
【請求項８】
前記複数のサブ命令の各サブ命令が実行ユニットで実行される、請求項1に記載の方法。
【請求項９】
前記複数のサブ命令のうちの前記第1のサブ命令が第1の実行ユニットで実行され、前記複数のサブ命令のうちの前記第2のサブ命令が第2の実行ユニットで実行される、請求項1に記載の方法。
【請求項１０】
前記第1のサブ命令および前記第2のサブ命令が同時に実行される、請求項9に記載の方法。
【請求項１１】
前記パケットは複数の命令を含むとともに、前記複数の命令の各命令が超長命令語(VLIW)命令を含む、請求項1に記載の方法。
【請求項１２】
命令を処理する方法であって、
前記方法が、
パケットを受信するステップを含み、前記パケットが、第1の解析インジケータを含む第1の命令、および第2の解析インジケータを含む第2の命令を含み、
前記方法が、
第1の実行ユニットに前記第1の命令を転送するステップと、
前記第2の解析インジケータに基づいて、前記第2の命令をサブパケット命令として識別するステップとを含み、前記サブパケット命令が第1のサブ命令および第2のサブ命令を含み、前記第2の命令が前記サブパケット命令として識別された場合、前記第2の命令が前記第1のサブ命令および第2のサブ命令を含み、前記第1のサブ命令が第1のサブ・サブパケットを含む場合、前記第1のサブ・サブパケットが複数のサブ・サブ命令を含み、
前記方法が、
前記第1のサブ命令を第2の実行ユニットに転送するステップを含む方法。
【請求項１３】
前記第2の解析インジケータの値が、前記第2の命令がハードウェアループの末尾に位置しているどうかを識別する、請求項12に記載の方法。
【請求項１４】
前記第1の実行ユニットが、算術実行ユニットまたはロード/ストアデータユニットを含む、請求項12に記載の方法。
【請求項１５】
前記第1のサブ命令および前記第2のサブ命令を同時に実行するステップをさらに含む請求項12に記載の方法。
【請求項１６】
前記第2のサブ命令を第3の実行ユニットに転送するステップをさらに含む請求項12に記載の方法。
【請求項１７】
デコーダを含むプロセッサであり、
前記デコーダが、
第1の命令を含む命令のパケットを受信し、
前記命令に含まれる解析インジケータに基づいて、前記第1の命令がサブパケット命令を含むかどうかを決定するために前記第1の命令を復号するように動作可能であり、前記サブパケット命令が第1のサブ命令および第2のサブ命令を含み、前記第1の命令が前記サブパケット命令を含む場合、前記第1の命令が第1のサブ命令および第2のサブ命令を含み、前記第1のサブ命令が第1のサブ・サブパケットを含む場合、前記第1のサブ・サブパケットが複数のサブ・サブ命令を含み、
前記プロセッサが、
前記第1の命令が前記サブパケット命令を含む場合、前記第1のサブ命令を実行するように構成された第1の実行ユニットを含むプロセッサ。
【請求項１８】
前記第2のサブ命令を実行するように構成された第2の実行ユニットをさらに含む請求項17に記載のプロセッサ。
【請求項１９】
前記パケットが第2の命令をさらに含み、前記プロセッサが、前記第2の命令を実行するように構成された第3の実行ユニットをさらに含む、請求項17に記載のプロセッサ。
【請求項２０】
前記パケットが複数の命令を含み、前記複数の命令の各命令が同じサイズを有する、請求項17に記載のプロセッサ。
【請求項２１】
前記第1のサブ命令および前記第2のサブ命令の各々に関連付けられたサイズが前記命令に関連付けられたサイズよりも小さい、請求項20に記載のプロセッサ。
【請求項２２】
前記解析インジケータが、前記パケットがハードウェアループの末尾に位置しているかどうかを示す、請求項17に記載のプロセッサ。
【請求項２３】
前記第1のサブ命令および前記第2のサブ命令の各々に関連付けられたサイズが前記第1の命令に関連付けられたサイズよりも小さい、請求項17に記載のプロセッサ。