JP2013521577A - 階層型の超長命令パケットを処理するシステムおよび方法 - Google Patents
階層型の超長命令パケットを処理するシステムおよび方法 Download PDFInfo
- Publication number
- JP2013521577A JP2013521577A JP2012556202A JP2012556202A JP2013521577A JP 2013521577 A JP2013521577 A JP 2013521577A JP 2012556202 A JP2012556202 A JP 2012556202A JP 2012556202 A JP2012556202 A JP 2012556202A JP 2013521577 A JP2013521577 A JP 2013521577A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- instructions
- sub
- packet
- execution unit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 41
- 238000012545 processing Methods 0.000 title claims abstract description 20
- 230000004044 response Effects 0.000 claims abstract description 3
- 238000010586 diagram Methods 0.000 description 8
- 230000008901 benefit Effects 0.000 description 5
- 238000012856 packing Methods 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3853—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/30149—Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Advance Control (AREA)
Abstract
階層型の超長命令語(VLIW)パケットを処理するシステムおよび方法が開示される。特定の一実施形態では、命令を処理する方法が開示される。この方法は、命令の階層型VLIWパケットを受信するステップと、命令が単一の命令であるか、または、命令が複数のサブ命令を含むサブパケットを含むかを決定するために、パケットから命令を復号するステップとを含む。この方法は、命令がサブパケットを含むことを決定したことに応答して、サブ命令の各々を実行するステップも含む。
Description
本開示は、一般に、階層型の超長命令語を符号化することに関する。
技術の進歩により、より小型でより高性能なコンピューティングデバイスが生まれてきた。たとえば、現在、小型で、軽量で、ユーザにより簡単に持ち運ばれる、携帯式のワイヤレス電話、携帯情報端末(PDA)、およびページングデバイスのような、ワイヤレスコンピューティングデバイスを含む、様々な携帯式の個人向けコンピューティングデバイスが存在する。より具体的には、携帯電話およびインターネットプロトコル(IP)電話のような、携帯式のワイヤレス電話は、ワイヤレスネットワークを通じて、音声およびデータパケットを通信することができる。さらに、多くのそのようなワイヤレス電話には、他の種類のデバイスが組み込まれている。たとえば、ワイヤレス電話は、デジタルスチルカメラ、デジタルビデオカメラ、デジタルレコーダー、およびオーディオファイルプレーヤも含み得る。また、そのようなワイヤレス電話は、ウェブブラウザアプリケーションなど、インターネットにアクセスするために使用され得るソフトウェアアプリケーションを含む実行可能な命令を処理することができる。したがって、これらのワイヤレス電話は、高いコンピューティング能力を含み得る。
計算を加速し、プログラムサイズ、および結果として生じるプログラムストレージの必要性を低減するために、より効率的に命令をパックすることが有用である。より効率的に命令をパックすることによって、命令キャッシュサイズを低減することができ、または同じ命令キャッシュサイズがより多くの命令を保持することができる。
特定の一実施形態では、命令を処理する方法が開示される。この方法は、命令のパケットを受信するステップを含む。パケットは、命令が単一の命令であるか、または、命令が複数のサブ命令を含むサブパケットを含むかを決定するために復号され得る少なくとも1つの命令を含む。この方法は、命令がサブパケットを含むことを決定したことに応答して、サブ命令の各々を実行するステップも含む。
別の特定の実施形態では、命令を処理する方法は、命令のパケットを受信するステップであり、パケットが、第1の解析値を有する第1の命令、および第2の解析値を有する第2の命令を含む、ステップを含む。この方法は、第1の実行ユニットに第1の命令を転送し、第2の命令を、第1のサブ命令および第2のサブ命令を含むサブパケット命令として識別するステップを含む。この方法は、第2の実行ユニットに第1のサブ命令を転送するステップも含む。
別の特定の実施形態では、プロセッサが開示される。プロセッサは、命令のパケットを受信するためのデコーダを含む。デコーダは、命令が第1のサブ命令および第2のサブ命令を含む第1のサブパケット命令であるかどうかを決定するためにパケット内の命令を復号するように動作可能である。プロセッサは、命令を実行する、または第1のサブ命令を実行するための実行ユニットも含む。
開示された実施形態のうちの少なくとも1つによって提供される1つの特定の利点は、命令がより密にパックされるので、命令キャッシュサイズを低減できるということである。命令を効率的にパックすることの利点は、より多くの命令を同じ量のキャッシュに格納できることである。開示された実施形態のうちの少なくとも1つによって提供される別の利点は、各パケットがより高密度の命令を含み、その結果、プログラムを実行するための命令を取り出すための呼び出しの総数が低減するため、メモリからコードをフェッチするために必要なエネルギーが低減することである。
本開示の他の態様、利点、および特徴は、以下のセクション、すなわち、図面の簡単な説明、発明を実施するための形態、および特許請求の範囲を含む、本出願全体の検討後に明らかになろう。
図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 実行ユニット
102 フェッチ段階
104 復号段階
106 実行段階
108 VLIWパケット
110 第1の命令
112 第2の命令
114 第Nの命令
116 第1のサブ命令
118 第2のサブ命令
120 実行ユニット
122 実行ユニット
124 実行ユニット
126 実行ユニット
Claims (25)
- 命令を処理する方法であって、
命令のパケットを受信するステップであり、前記パケットが命令を含む、ステップと、
前記命令が単一の命令であるか、または、前記命令が複数のサブ命令を含むサブパケットを含むかを決定するために前記命令を復号するステップと、
前記命令が前記サブパケットを含むことを決定したことに応答して、前記サブ命令の各々を実行するステップと
を含む方法。 - 命令の前記パケットが複数のサブパケットを含む、請求項1に記載の方法。
- 命令の第1のサブサブパケットを識別するために前記複数のサブ命令の第1のサブパケットを復号するステップをさらに含む請求項1に記載の方法。
- 前記復号するステップが、命令の前記パケット内の複数の命令を復号するように動作可能であるデコーダによって実行される、請求項1に記載の方法。
- 前記命令が、前記命令を前記サブパケットとして識別する解析インジケータを含む、請求項1に記載の方法。
- 前記命令が、命令の種別を識別するために使用される命令クラスフィールドを含む、請求項1に記載の方法。
- 前記パケットが超長命令語(VLIW)パケットである、請求項1に記載の方法。
- 前記パケットが複数の命令を含む、請求項1に記載の方法。
- 前記複数のサブ命令の各々が第1の実行ユニットで実行される、請求項1に記載の方法。
- 前記複数のサブ命令のうちの第1のものが第1の実行ユニットで実行され、前記複数のサブ命令のうちの第2のものが第2の実行ユニットで実行される、請求項1に記載の方法。
- 前記サブ命令のうちの前記第1のものおよび前記サブ命令のうちの前記第2のものが同時に実行される、請求項10に記載の方法。
- 前記パケットの各命令が超長命令語(VLIW)命令を含む、請求項1に記載の方法。
- 命令を処理する方法であって、
命令のパケットを受信するステップであり、前記パケットが、第1の解析値を有する第1の命令、および第2の解析値を有する第2の命令を含む、ステップと、
第1の実行ユニットに前記第1の命令を転送するステップと、
前記第2の命令を、第1のサブ命令および第2のサブ命令を含むサブパケット命令として識別するステップと、
前記第1のサブ命令を第2の実行ユニットに転送するステップと
を含む方法。 - 各解析値が、前記対応する命令を、前記パケットの末尾にある、ハードウェアループの末尾にある、または前記パケットの末尾にはないものと識別する、請求項13に記載の方法。
- 前記第2の解析値が、前記第2の命令を前記サブパケット命令として識別する、請求項13に記載の方法。
- 前記実行ユニットの各々が、算術実行ユニットまたはロード/ストアデータユニットを含む、請求項13に記載の方法。
- 前記第1のサブ命令および前記第2のサブ命令を同時に実行するステップをさらに含む請求項13に記載の方法。
- 前記第2のサブ命令を第3の実行ユニットに転送するステップをさらに含む請求項13に記載の方法。
- 命令のパケットを受信するためのデコーダであり、前記パケットが命令を含み、前記命令が第1のサブ命令および第2のサブ命令を含む第1のサブパケット命令であるかどうかを決定するために前記命令を復号するように動作可能であるデコーダと、
前記命令を実行する、または前記第1のサブ命令を実行するための実行ユニットと
を含むプロセッサ。 - 前記第2のサブ命令を実行するための第2の実行ユニットをさらに含む請求項19に記載のプロセッサ。
- 前記パケットが第2の命令をさらに含み、前記プロセッサが、前記第2の命令を実行するための第3の実行ユニットをさらに含む、請求項19に記載のプロセッサ。
- 前記パケットが複数の命令を含み、前記複数の命令の各命令が同じサイズを有する、請求項19に記載のプロセッサ。
- 前記第1のサブ命令および前記第2のサブ命令の各々に関連付けられたサイズが前記命令に関連付けられた前記サイズよりも小さい、請求項22に記載のプロセッサ。
- 前記命令が、パケット終了ステータスに関連付けられた第1の解析値を有する第1の解析インジケータを含み、前記第1の解析値が、前記第1の命令が前記第1のサブ命令および前記第2のサブ命令を含むことも示す、請求項19に記載のプロセッサ。
- 前記第1のサブ命令および前記第2のサブ命令の各々に関連付けられたサイズが前記命令に関連付けられたサイズよりも小さい、請求項19に記載のプロセッサ。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/716,359 US9678754B2 (en) | 2010-03-03 | 2010-03-03 | System and method of processing hierarchical very long instruction packets |
US12/716,359 | 2010-03-03 | ||
PCT/US2011/026815 WO2011109476A1 (en) | 2010-03-03 | 2011-03-02 | System and method of processing hierarchical very long instruction packets |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014150573A Division JP2014238859A (ja) | 2010-03-03 | 2014-07-24 | 階層型の超長命令パケットを処理するシステムおよび方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2013521577A true JP2013521577A (ja) | 2013-06-10 |
Family
ID=43827510
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012556202A Pending JP2013521577A (ja) | 2010-03-03 | 2011-03-02 | 階層型の超長命令パケットを処理するシステムおよび方法 |
JP2014150573A Ceased JP2014238859A (ja) | 2010-03-03 | 2014-07-24 | 階層型の超長命令パケットを処理するシステムおよび方法 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014150573A Ceased JP2014238859A (ja) | 2010-03-03 | 2014-07-24 | 階層型の超長命令パケットを処理するシステムおよび方法 |
Country Status (7)
Country | Link |
---|---|
US (1) | US9678754B2 (ja) |
EP (1) | EP2542963B1 (ja) |
JP (2) | JP2013521577A (ja) |
KR (1) | KR101449732B1 (ja) |
CN (1) | CN102822794B (ja) |
TW (1) | TW201203104A (ja) |
WO (1) | WO2011109476A1 (ja) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10620957B2 (en) * | 2015-10-22 | 2020-04-14 | Texas Instruments Incorporated | Method for forming constant extensions in the same execute packet in a VLIW processor |
US10719325B2 (en) * | 2017-11-07 | 2020-07-21 | Qualcomm Incorporated | System and method of VLIW instruction processing using reduced-width VLIW processor |
CN110381051A (zh) * | 2019-07-12 | 2019-10-25 | 苏州浪潮智能科技有限公司 | 一种报文解析的方法、系统、设备及计算机可读存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH10222368A (ja) * | 1997-01-31 | 1998-08-21 | Mitsubishi Electric Corp | データ処理装置 |
WO2000022515A1 (en) * | 1998-10-14 | 2000-04-20 | Conexant Systems, Inc. | Reconfigurable functional units for implementing a hybrid vliw-simd programming model |
WO2006102664A2 (en) * | 2005-03-23 | 2006-09-28 | Qualcomm Incorporated | Method and system for encoding variable length packets with variable instruction sizes |
US20060259740A1 (en) * | 2005-05-13 | 2006-11-16 | Hahn Todd T | Software Source Transfer Selects Instruction Word Sizes |
JP2009536769A (ja) * | 2006-05-10 | 2009-10-15 | クゥアルコム・インコーポレイテッド | ハードウェアエンドループ情報の命令へのコード化 |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2835103B2 (ja) | 1989-11-01 | 1998-12-14 | 富士通株式会社 | 命令指定方法及び命令実行方式 |
JP2931890B2 (ja) | 1995-07-12 | 1999-08-09 | 三菱電機株式会社 | データ処理装置 |
JP2806359B2 (ja) | 1996-04-30 | 1998-09-30 | 日本電気株式会社 | 命令処理方法及び命令処理装置 |
US8583895B2 (en) * | 1996-05-15 | 2013-11-12 | Nytell Software LLC | Compressed instruction format for use in a VLIW processor |
US5890009A (en) * | 1996-12-12 | 1999-03-30 | International Business Machines Corporation | VLIW architecture and method for expanding a parcel |
US5819058A (en) * | 1997-02-28 | 1998-10-06 | Vm Labs, Inc. | Instruction compression and decompression system and method for a processor |
JP3790607B2 (ja) | 1997-06-16 | 2006-06-28 | 松下電器産業株式会社 | Vliwプロセッサ |
US6157996A (en) * | 1997-11-13 | 2000-12-05 | Advanced Micro Devices, Inc. | Processor programably configurable to execute enhanced variable byte length instructions including predicated execution, three operand addressing, and increased register space |
US6101592A (en) | 1998-12-18 | 2000-08-08 | Billions Of Operations Per Second, Inc. | Methods and apparatus for scalable instruction set architecture with dynamic compact instructions |
US6366999B1 (en) * | 1998-01-28 | 2002-04-02 | Bops, Inc. | Methods and apparatus to support conditional execution in a VLIW-based array processor with subword execution |
US6356950B1 (en) | 1999-01-11 | 2002-03-12 | Novilit, Inc. | Method for encoding and decoding data according to a protocol specification |
US6385757B1 (en) * | 1999-08-20 | 2002-05-07 | Hewlett-Packard Company | Auto design of VLIW processors |
US6564264B1 (en) * | 1999-12-08 | 2003-05-13 | At&T Corp. | System, apparatus and method for automatic address updating of outgoing and incoming user messages in a communications network |
US6658551B1 (en) * | 2000-03-30 | 2003-12-02 | Agere Systems Inc. | Method and apparatus for identifying splittable packets in a multithreaded VLIW processor |
US7096343B1 (en) * | 2000-03-30 | 2006-08-22 | Agere Systems Inc. | Method and apparatus for splitting packets in multithreaded VLIW processor |
US7181595B1 (en) * | 2000-05-11 | 2007-02-20 | Mindspeed Technologies, Inc. | Method for decoding composite VLIW packets utilizing a tree structure |
KR100464406B1 (ko) * | 2002-02-08 | 2005-01-03 | 삼성전자주식회사 | 가변길이 vliw 명령어를 위한 디스패치 장치 및 방법 |
EP1367484B1 (en) * | 2002-05-31 | 2013-07-24 | STMicroelectronics Limited | Instruction encoding |
US7523295B2 (en) * | 2005-03-21 | 2009-04-21 | Qualcomm Incorporated | Processor and method of grouping and executing dependent instructions in a packet |
US7590824B2 (en) * | 2005-03-29 | 2009-09-15 | Qualcomm Incorporated | Mixed superscalar and VLIW instruction issuing and processing method and system |
US8775777B2 (en) * | 2007-08-15 | 2014-07-08 | Nvidia Corporation | Techniques for sourcing immediate values from a VLIW |
US8665996B2 (en) * | 2008-04-01 | 2014-03-04 | Qualcomm Incorporated | Efficient parallel sub-packet decoding using multiple decoders |
-
2010
- 2010-03-03 US US12/716,359 patent/US9678754B2/en active Active
-
2011
- 2011-03-02 CN CN201180016087.6A patent/CN102822794B/zh active Active
- 2011-03-02 WO PCT/US2011/026815 patent/WO2011109476A1/en active Application Filing
- 2011-03-02 EP EP11708631.4A patent/EP2542963B1/en active Active
- 2011-03-02 KR KR1020127026019A patent/KR101449732B1/ko active IP Right Grant
- 2011-03-02 JP JP2012556202A patent/JP2013521577A/ja active Pending
- 2011-03-03 TW TW100107221A patent/TW201203104A/zh unknown
-
2014
- 2014-07-24 JP JP2014150573A patent/JP2014238859A/ja not_active Ceased
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH10222368A (ja) * | 1997-01-31 | 1998-08-21 | Mitsubishi Electric Corp | データ処理装置 |
WO2000022515A1 (en) * | 1998-10-14 | 2000-04-20 | Conexant Systems, Inc. | Reconfigurable functional units for implementing a hybrid vliw-simd programming model |
WO2006102664A2 (en) * | 2005-03-23 | 2006-09-28 | Qualcomm Incorporated | Method and system for encoding variable length packets with variable instruction sizes |
US20060259740A1 (en) * | 2005-05-13 | 2006-11-16 | Hahn Todd T | Software Source Transfer Selects Instruction Word Sizes |
JP2009536769A (ja) * | 2006-05-10 | 2009-10-15 | クゥアルコム・インコーポレイテッド | ハードウェアエンドループ情報の命令へのコード化 |
Also Published As
Publication number | Publication date |
---|---|
CN102822794A (zh) | 2012-12-12 |
US20110219212A1 (en) | 2011-09-08 |
TW201203104A (en) | 2012-01-16 |
JP2014238859A (ja) | 2014-12-18 |
CN102822794B (zh) | 2016-08-03 |
WO2011109476A1 (en) | 2011-09-09 |
KR101449732B1 (ko) | 2014-10-13 |
EP2542963A1 (en) | 2013-01-09 |
US9678754B2 (en) | 2017-06-13 |
KR20120139773A (ko) | 2012-12-27 |
EP2542963B1 (en) | 2016-02-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8868888B2 (en) | System and method of executing instructions in a multi-stage data processing pipeline | |
JP4986431B2 (ja) | プロセッサ | |
JP6022581B2 (ja) | Fifoロード命令 | |
JP2016157463A (ja) | ループ制御システムおよび方法 | |
EP2261815A2 (en) | Multithread processor with efficient processing for convergence device applications | |
US8843730B2 (en) | Executing instruction packet with multiple instructions with same destination by performing logical operation on results of instructions and storing the result to the destination | |
KR101290493B1 (ko) | 선형 피드백-쉬프트 명령을 실행하기 위한 시스템 및 방법 | |
JP2010539598A (ja) | n−ウェイキャッシュを用いるシステムおよび方法 | |
US8707013B2 (en) | On-demand predicate registers | |
EP2256948A2 (en) | Arithmethic logic and shifting device for use in a processor | |
JP2014238859A (ja) | 階層型の超長命令パケットを処理するシステムおよび方法 | |
US8874884B2 (en) | Selective writing of branch target buffer when number of instructions in cache line containing branch instruction is less than threshold | |
KR20070118705A (ko) | 레지스터 파일에 액세스하기 위해 프리디케이트 값을이용하는 시스템 및 방법 | |
US20130042091A1 (en) | BIT Splitting Instruction |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20140205 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20140213 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20140304 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20140324 |