JP5222941B2 - コンパクト命令セットの符号化 - Google Patents

コンパクト命令セットの符号化 Download PDF

Info

Publication number
JP5222941B2
JP5222941B2 JP2010506907A JP2010506907A JP5222941B2 JP 5222941 B2 JP5222941 B2 JP 5222941B2 JP 2010506907 A JP2010506907 A JP 2010506907A JP 2010506907 A JP2010506907 A JP 2010506907A JP 5222941 B2 JP5222941 B2 JP 5222941B2
Authority
JP
Japan
Prior art keywords
operand
bit
decoding
instruction
bits
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.)
Active
Application number
JP2010506907A
Other languages
English (en)
Other versions
JP2010526383A (ja
Inventor
メイ,マイケル,デービット
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xmos Ltd
Original Assignee
Xmos Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Xmos Ltd filed Critical Xmos Ltd
Publication of JP2010526383A publication Critical patent/JP2010526383A/ja
Application granted granted Critical
Publication of JP5222941B2 publication Critical patent/JP5222941B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30134Register stacks; shift registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30156Special purpose encoding of instructions, e.g. Gray coding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • G06F9/30178Runtime instruction translation, e.g. macros of compressed or encrypted 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)

Description

本発明は、プロセッサの命令符号化に関し、詳細には複数の命令スレッドのインタフェーシング用途および管理に適した命令形式に関するがこれに限定されない。
プロセッサ命令は、オペレーションコード部分とオペランド部分の2つの部分から成ると考えることができる。オペレーションコード部分内のオペレーションコードは、命令のタイプを定義し、プロセッサの実行ユニットによって復号されたときに、対応する演算(加算、減算、入出力など)をプロセッサに実行させる。オペランド部分は、1つまたは複数のオペランド指定子(operand specifier)を含む場合がある。そのようなオペランド指定子は、オペレーションコードによって定義された命令がある場合に、プロセッサのどのオペランドレジスタがその命令を実行すべきかを指定する。あるいはそれに加えて、オペランド部分は、「即時(immediate)」オペランド、すなわち指定されたレジスタから取り出されるのではなく命令のオペランド部分に直接含まれるオペランドを含む場合がある。命令がオペランドを何も含まない場合、オペランド部分は、使用されない場合もあり、あるいは追加のオペレーションコードを符号化するために使用される場合も多い。
命令が一般に所定のサイズまたは形式を有する場合は、プロセッサを設計するときにオペレーションコードのサイズとオペランド部分のサイズとをトレードオフをしなければならない。
小さいオペレーションコードを使用するときは、オペレーションコードビットの順列が限定されるので、限られた組の命令しか符号化できない。そのような命令セットは、通常、プロセッサの基本演算を実行する単純で低レベルのマシンコードだけを含むことになる。その結果、ソフトウェアでは複雑な演算を全体としてより低レベルの命令のシーケンスとして定義しなければならないので、1命令データ当たりに記憶できる演算が少なくなるので、コード密度が低下する。いくつかのあまり一般的でないプロセッサでは、小さなオペレーションコードを使用して少数のより複雑な命令を符号化することができ、それにより、複雑な演算がハードウェア内で実行され、専用命令によって呼び出される。しかしその一方で、使用できるオペレーションコードの数が限られると、プロセッサは、きわめて特殊化された組の演算しかできなくなる。いずれの場合も、小さなオペレーションコードは、命令セットのサイズを制限し、したがってプロセッサを制限する。しかしながら、小さなオペレーションコードを使用することは、命令においてオペランドに使用できるビットが多くなる場合があるという利点もある。
大きなオペレーションコードが使用されるときは、オペレーションコードビットの順列の数が増えるので、より多くのタイプの命令を符号化することができる。したがって、プロセッサ設計者は、種々様々な命令タイプを利用することができる。しかしながら、欠点は、命令においてオペランドに利用できるビットが少なくなることである。
したがって、オペレーションコードのサイズをオペランド部分のサイズと釣り合わせなければならないことが分かる。
例えば、図1は、16ビットi[15:0]を有する従来の命令形式を示す。16個の命令ビットは、命令レジスタ50から実行ユニットの復号ロジックにそれぞれ入力される。復号ロジックは、命令の4ビットオペレーションコード部分102を復号するオペレーションコード復号ロジック70と、命令の3つのそれぞれのオペランド部分104、106および108から3つの4ビットオペランド指定子を決定するオペランド復号ロジック80とを含む。この形式によれば、3つのオペランド指定子はそれぞれ、1組16個のオペランドレジスタのうちソースオペランドを読み出すかまたはディスティネーションオペランドを記憶するオペランドレジスタを指定するために、0(0000)〜15(1111)の値を取ることができる。
この従来の16ビット型命令の問題は、16個のオペランドレジスタと3個のオペランド指定子104、106および108を有する場合に、各命令の12ビットi[11:0]がオペランド指定子と共に取得されることである。これにより、命令オペレーションコード102用に4ビットi[15:12]しか残らず、これにより、異なる命令を16個しか符号化できない。この問題を克服する既存の技術は、限定されたオペランド指定子(3ビットしか使用しないARM Thumbなど)を提供するか、ほとんどの命令に2つのレジスタオペランドだけを提供することが必要であった。他の解決策は、16ビット命令形式から離れる必要がある。しかしながら、この解決策自体、命令サイズが従来通りのバイト数で表わされず、そうでない場合でも無駄に大きい24または32ビット命令を必要とするため、厄介な問題がある。
さらに、命令セットの複雑さが、プロセッサの速度に影響を及ぼす場合がある。大きな命令セットプロセッサは、複雑な演算を実行するために必要なコードが少ないので、小さな命令セットプロセッサより高速なことがある。しかしながら、実行ユニットの速度は、最も複雑な命令を復号する時間によって限定される。したがって、命令セット内にある余分な命令、未使用の命令、または無駄に複雑な命令が多すぎると、実際には大きな命令セットプロセッサの方が遅い場合がある。
さらに、大きな命令セットと比べて、小さな命令セットは、オペレーションコードを復号し実行するために実行ユニット内にあまり多くのハードウェアロジックを必要としないが、小さなセットは、通常、より多くのプログラムメモリを必要とし、またより多くのオペランドレジスタを使用する。したがって、命令セットのサイズは、特定の命令形式と関連して必要とされるオペランドレジスタ、復号ロジックおよびプログラムメモリに応じて、プロセッサのコスト、消費電力およびシリコン面積に関係する場合がある。
本発明の目的は、命令のオペレーションコードのサイズとそのオペランド部分のサイズとの好ましいバランスを求め、そのバランスを、オペレーションコードを所定の命令長に効率的に圧縮する一方で迅速に復号することができる符号化方式を使用して達成することである。本発明の特定の目的は、外部装置と接続するためにプロセッサで使用するのに好都合なバランスを求めることである。本発明の別の特定の目的は、複数のスレッドの実行を管理するためにプロセッサで使用するのに好都合なバランスを求めることである。
本発明の1つの態様によれば、オペレーションコード復号ロジック、オペランド復号ロジック、および16ビット入力を含み、プロセッサ内で命令を復号する復号ユニットが提供され、オペレーションコード復号ロジックは、入力の5ビットを使用してオペレーションコードを決定する働きをし、オペランド復号ロジックは、入力のうち残りの11ビットから、可能な12個の2進値のうちの1つをそれぞれ有する3つの4ビットオペランド要素を決定する働きをし、またオペランド復号ロジックは、前記11ビットの符号化グループを復号して3つのオペランド要素の各オペランド要素の第1の部分を決定し、前記11ビットの逐語的グループを逐語的に読み出して3つのオペランド要素の各オペランド要素の第2の部分を決定する働きをする。
発明者は、説明された符号化グループと逐語的グループを使用するこの5ビットと11ビットの分割が、インタフェースプロセッサ用と複数スレッドを処理するプロセッサ用の優れたコード密度を実現することを発見した。さらに、本発明は、迅速で効率的に復号できる命令形式を使用して比較的大きな命令セットを16ビットに圧縮することができ有利である。後述するような更に他の実施形態は、コード密度と復号効率を改善する。
実施形態では、符号化グループは5ビットでよく、逐語的グループは6ビットでよく、各オペランド要素の第1の部分は2ビットでよく、各オペランド要素の第2の部分は2ビットでよい。
復号ユニットは、前記入力の値が所定の条件を満たす場合に、前記11ビットのうちの少なくとも1ビットをオペランド復号ロジックからオペレーションコード復号ロジックに分流する働きをするスイッチングロジックを含んでもよく、オペレーションコード復号ロジックは、前記入力の値が所定の条件を満たす場合に、前記5ビットと分流された少なくとも1ビットを使用してオペレーションコードを決定する働きをしてもよい。オペランド復号ロジックは、前記入力の値が所定の条件を満たす場合に、前記11ビットのうちの残りのビットから少なくとも1つのオペランドを決定する働きをしてもよい。スイッチングロジックは、前記11ビットが、前記3つの4ビットオペランド要素を符号化するのに使用されない値を有する場合に、前記少なくとも1ビットを分流するように構成されてもよい。スイッチングロジックは、前記5ビットが所定の値または範囲の値を有する場合に、前記少なくとも1ビットを分流するように構成されてもよい。
前記入力は、16ビットの命令レジスタから送られるとよい。復号ユニットの入力は、64ビット命令バッファから命令を受け取るように構成されてもよい。
前記オペランド要素の少なくとも1つは、1組12個のオペランドレジスタのいずれかからオペランドレジスタを指定するオペランド指定子でよい。3つのオペランド要素はそれぞれ、前記組のいずれかからオペランドレジスタをそれぞれ指定するそれぞれのオペランド指定子を含んでもよい。3つのオペランド要素は、1つの即値オペランドと、前記組のいずれかから2つのオペランドレジスタをそれぞれ指定する2つのオペランド指定子とを含む。3つのオペランドは、3つのソースオペランドを含んでもよい。
3つのオペランド要素は、即時ソースオペランド、または、前記組のいずれかからそれぞれのソースオペランドレジスタを指定するためのソースオペランド指定子である2つのソースオペランド要素と、前記組のいずれかからディスティネーションオペランドレジスタを指定するための1つのディスティネーションオペランド指定子とを含んでもよく、復号ユニットは、ソースオペランドを処理し、前記処理の結果をディスティネーションオペランドレジスタに記憶することを示すオペレーションコードに従って対応する命令を実行する働きをしてもよい。
前記入力の値が所定の条件を満たす場合に、前記11ビットのうちの1ビットをオペランド復号ロジックからオペレーションコード復号ロジックに分流する働きをするスイッチングロジックを含み、オペレーションコード復号ロジックは、前記入力の値が所定の条件を満たす場合に、前記5ビットと前記分流された1ビットを使用してオペレーションコードを決定する働きをしてもよく、オペランド復号ロジックは、前記入力の値が所定の条件を満たす場合に、残りの10ビットから、組の12個のオペランドレジスタのいずれかからオペランドレジスタを指定するための可能な12個の2進値のうちの1つをそれぞれ有する2つの4ビットオペランド指定子を決定する働きをしてもよく、オペランド復号ロジックは、前記入力の値が所定の条件を満たす場合に、前記10ビットの符号化グループを復号して2つのオペランド指定子の各オペランド指定子の第1の部分を決定し、前記10ビットの逐語的グループを逐語的に読み出して2つのオペランド指定子の各オペランド指定子の第2の部分を決定する働きをしてもよい。
復号ユニットは、複数のスレッドの命令復号するように構成されてもよく、前記復号された命令のうちの少なくとも1つは、前記シーケンスのうちの1つのシーケンスの構成要素である。前記少なくとも1つの命令は、前記複数スレッドのうちの1つまたは複数スレッドのスケジューリングを管理するためのスレッドスケジューリング命令でよい。プロセッサは、複数組の12個のオペランドレジスタを含んでもよく、各組は、前記スレッドのそれぞれに関するオペランドを記憶するように構成される。
前記命令の少なくとも1つは、イベントと関連付けられた条件を設定するためのセットイベント条件命令と、イベント条件と関連付けられたデータを設定するためのセット条件データ命令と、イベントと関連付けられた継続点ベクトルを設定するためのセットベクトル命令と、イベントソースがイベントを生成することを可能にするソースイベントイネーブル命令と、スレッドがイベントに反応することを可能にするスレッドイベントイネーブル命令のうちの1つでよい。
復号ユニットは、プレフィックス命令のオペランドを、後で実行された命令のオペランドと連結する働きをしてもよい。
実行ユニットは、2つのそれぞれの16ビット命令を同時に並列に実行するように構成された少なくとも2つの並列パイプラインを含んでもよく、各パイプラインは、前述の命令のいずれかに従う復号ユニットを含んでもよい。実行ユニットは、デュアル発行モードとシングル発行モードで動作可能でよく、デュアル発行モードでは、2つのパイプラインが、2つのそれぞれの命令を同時に並列に実行し、シングル発行モードでは、常にパイプラインの一方だけが命令を実行する。2つのパイプラインは一緒に32ビット命令を実行する働きをしてもよい。
プロセッサは、前述の命令にいずれかに従う復号ユニットまたは実行ユニットを含んでもよく、プロセッサは、前記スレッドのそれぞれに関するオペランドを記憶するようにそれぞれ構成された複数組の12個のオペランドレジスタを含んでもよい。
プロセッサは、第1の外部装置と第2の外部装置を接続するためのインタフェースプロセッサでよい。第1の外部装置は、別のプロセッサでよく、第2の外部装置は周辺装置でよい。第1と第2の外部装置は、両方とも他のプロセッサでもよい。
前記命令の少なくとも1つは、前記外部装置のうちの1つから前記インタフェースプロセッサにデータを入力するための入力命令と、前記インタフェースプロセッサから前記外部装置のうちの1つにデータを出力するための出力命令のいずれかでよい。
本発明の別の態様によれば、オペレーションコード復号ロジックとオペランド復号ロジックと16ビット入力とを含む復号ユニットを使用してプロセッサ内で命令を復号する方法が提供され、この方法は、オペレーションコード復号ロジックを操作して、入力の5ビットを使用するオペレーションコードを決定するステップと、オペランド復号ロジックを操作して、入力の残りの11ビットから、可能な12個の2進値のうちの1つをそれぞれ有する3つの4ビットオペランド要素を決定するステップとを含み、3つのオペランド要素を決定するステップが、前記11ビットの符号化グループを復号して3つのオペランド要素の各オペランド要素の第1の部分を決定し、前記11ビットの逐語的グループを逐語的に読み出して3つのオペランド要素の各オペランド要素の第2の部分を決定するステップを含む。
本発明の別の態様によれば、モバイルアプリケーションプロセッサと、少なくとも1つの周辺装置と、モバイルアプリケーションプロセッサと周辺装置の間に接続されたインタフェースプロセッサとを有するモバイル端末が提供され、インタフェースプロセッサは、プロセッサ内で命令を復号するための復号ユニットを有し、復号ユニットは、オペレーションコード復号ロジックと、オペランド復号ロジックと、16ビット入力を含み、オペレーションコード復号ロジックは、入力の5ビットを使用してオペレーションコードを決定する働きをし、オペランド復号ロジックは、入力の残りの11ビットから、可能な12個の2進値のうちの1つをそれぞれ有する3つの4ビットオペランド要素を決定する働きをし、オペランド復号ロジックは、前記11ビットの符号化グループを復号して3つのオペランド要素の各オペランド要素の第1の部分を決定し、前記11ビットの逐語的グループを逐語的に読み出して3つのオペランド要素の各オペランド要素の第2の部分を決定する働きをする。
本発明の別の態様によれば、相互接続されたプロセッサのアレイが提供され、前記プロセッサの少なくとも1つは、プロセッサ内で命令を復号するための復号ユニットを有し、復号ユニットは、オペレーションコード復号ロジックと、オペランド復号ロジックと、16ビット入力を有し、オペレーションコード復号ロジックは、入力の5ビットを使用してオペレーションコードを決定する働きをし、オペランド復号ロジックは、入力の残りの11ビットから、可能な12個の2進値のうちの1つをそれぞれ有する3つの4ビットオペランド要素を決定する働きをし、オペランド復号ロジックは、前記11ビットの符号化グループを復号して3つのオペランド要素の各オペランド要素の第1の部分を決定し、前記11ビットの逐語的グループを逐語的に読み出して3つのオペランド要素の各オペランド要素の第2の部分を決定する働きをする。
本発明の別の態様によれば、命令を復号するための復号ユニットを含むプロセッサが提供され、復号ユニットは、オペレーションコード復号ロジックと、オペランド復号ロジックと、16ビット入力とを含み、オペレーションコード復号ロジックは、入力の5ビットを使用してオペレーションコードを決定する働きをし、オペランド復号ロジックは、入力の残りの11ビットから、可能な12個の2進値のうちの1つをそれぞれ有する3つの4ビットオペランド要素を決定する働きをし、オペランド復号ロジックは、前記11ビットの符号化グループを復号して3つのオペランド要素の各オペランド要素の第1の部分を決定し、前記11ビットの逐語的グループを逐語的に読み出して3つのオペランド要素の各オペランド要素の第2の部分を決定する働きをする。
本発明の別の態様によれば、プロセッサ内の命令を復号するための復号ユニットが提供され、復号ユニットは、16ビット入力手段と、入力の5ビットを使用してオペレーションコードを決定するためのオペレーションコード復号化手段と、入力の残りの11ビットから、可能な12個の2進値のうちの1つをそれぞれ有する3つの4ビットオペランド要素を決定するためのオペランド復号手段とを含み、オペランド復号手段は、前記11ビットの符号化グループを復号して3つのオペランド要素の各オペランド要素の第1の部分を決定し、前記11ビットの逐語的グループを逐語的に読み出して3つのオペランド要素の各オペランド要素の第2の部分を決定するためのものである。
本発明をよりよく理解しどのように実施できるかを示すために、次に例として、対応する図面について言及する。
従来のRISC命令形式を示す図である。 インタフェースプロセッサの応用例を示す図である。 インタフェースプロセッサの応用例を示す図である。 例示的なプロセッサ構造を示す図である。 係るプロセッサの例示的なレジスタ構造を示す図である。 第1の例示的な命令形式を示す図である。 第2の例示的な命令形式を示す図である。 第3の例示的な命令形式を示す図である。 第4の例示的な命令形式を示す図である。 デユアル命令発行機能の例を示す図である。
本発明を有利に使用することができる応用例として、図2は、携帯電話のモバイルアプリケーションプロセッサ2と関連して使用されるインタフェースプロセッサ14を示す。モバイルアプリケーションプロセッサ2は、複数の周辺装置8と通信する必要がある。アプリケーションプロセッサ2は、CPU4と、複数の周辺装置8c〜8lと通信するために必要な複数のポート7とを有する。モバイルアプリケーションプロセッサ2は、また、ハードドライブ(HDD)8aおよびSDRAMメモリ8bと接続するためのメモリコントローラ6を含む。インタフェースコントローラ6とポート7は、一般に、バス3によってCPU4に接続される。システムは、また、電力コントローラ10と無線プロセッサ12を含む。
この例では、カメラ8cおよび液晶ディスプレイ8dと接続するための汎用ポート7aおよび7bが提供され、マイクロフォン8e、スピーカ8fおよびヘッドセット8gと接続するための汎用ポート7cが提供され、キーボード8h、汎用シリアルバス(USB)デバイス8i、セキュアデジタル(SD)カード8j、マルチメディアカード(MMC)8kおよび汎用非同期レシーバ/トランスミッタ(UART)デバイス81と接続するための汎用ポート7dが提供される。
図2において、インタフェースプロセッサ14a、14bおよび14cが、関連ポート7の出力側に配置されており、第1のインタフェースプロセッサ14aは、画像装置8c〜8dと汎用ポート7a〜7bとの間に接続され、第2のインタフェースプロセッサ14bは、音声装置8e〜8gとポートcとの間に接続されて、第3のインタフェースプロセッサ14bは、ポート7dと様々な接続装置8h〜8mとの間に接続されている。後述するように、アプリケーション固有の表示機能、音声機能および接続機能は、インタフェースプロセッサ14a〜14cによって実現されるので、ポート7は汎用ポートでよい。インタフェースプロセッサ14aは、ポート7aおよび7bに接続されたポート22aおよび22bと、外部装置8cおよび8gに接続されたポート22c、22d、22eおよび22fを有する。インタフェースプロセッサ14bおよび14cは、図2に示されていない類似のポートを有する。
インタフェースプロセッサは、通常、インタフェースを介してデータを転送するために使用される固有プロトコルを実施する機能、パラレル形式とシリアル形式間の変換を含むデータを再フォーマットする機能、場合によってはデータを符号化し、圧縮し、暗号化するなどのより高度な機能に関与する。
インタフェースプロセッサの別の用途は、図2Aに示した多重プロセッサチップ202内のタイルとしてである。このチップ202は、チップ202上のプロセッサ14間の通信を支援する高性能相互接続204と、システムを複数のチップから容易に構成できるようにするチップ間リンク206とを使用する。各プロセッサ14は、ポート22を介して、そのチップ間リンク206と高性能相互接続204に接続される。
インタフェースプロセッサ14は、本発明による命令形式を使用し、この命令形式は、別のプロセッサ2と1つまたは複数の周辺装置8との間または複数のプロセッサ間を調停するために使用される様々な接続命令および入出力(I/O)命令を実施するように最適化されると好都合である。すなわち、命令形式は、そのような演算を実行するのに十分であるが余分でない数のオペレーションコードを提供し、同様に、十分であるが余分ではない数のオペランドまたはオペランドレジスタを指定するができる。また、命令は、迅速かつ効率的に復号することができ、必要な復号ロジックを減少させ、迅速なインタフェーシングを可能にする。
本発明の命令形式が持つ別の有利な特徴は、スレッドを管理する能力である。各プロセッサは、一連の命令をそれぞれ含むいくつかの同時プログラムスレッドを実行するためのハードウェア支援を有する。以下でより詳しく述べるように、ハードウェア支援には次のようなものがある。
−オペランドレジスタを含む各スレッド毎の1組のレジスタ。
−実行するスレッドを動的に選択するスレッドスケジューラ。
−入出力に使用される1組のポート(ポート22)。
−レジスタ間にチャネルを確立するための相互接続システム。
−実時間実行を制御する1組のタイマ。
−入出力をクロックするための1組のクロックジェネレータ。
本発明の命令形式は、また、適切な命令セットとオペランドレジスタがスレッドの初期化、終了、開始および停止を支援することと、ポートを介した入出力とチャネルを介したスレッド間通信を提供することを可能にする。
各プロセッサ上で小さな1組のスレッドを使用して、通信または入出力が、プロセッサによって処理される他の保留タスクと一緒に進行することを可能にし、また幾つかのスレッドを継続させながら同時に他のスレッドをサスペンドしてリモートインタフェースプロセッサとの間の通信を保留することによって相互接続における待ち時間を隠すことができる。
図3は、本発明の一実施形態によるインタフェースプロセッサ14の例示的な構造を概略的に示す。プロセッサ14は、スレッドスケジューラ18の制御下で命令のスレッドを実行する実行ユニット16を含む。ランダムアクセスメモリ(RAM)24は、バス13によって実行ユニットに接続され、プログラムコードおよび他のデータを保持する。また、プロセッサ15は、クロックおよびタイマ(図示せず)と、ブートコードなどの永久情報を記憶するための読み出し専用メモリ(ROM)(やはり図示せず)を含む。
スレッドスケジューラ18により検討中のm個のスレッドはそれぞれ、スレッドスケジューラ18がアクセスするレジスタ20のバンク内のそれぞれの組のスレッドレジスタ20i...20mによって表される。また、メモリ24からフェッチされた命令を実行ユニット16に発行する前に、その命令を一時的に保持するための命令バッファ(INSTR)19も提供される。
図4は、スレッドに関する情報を記憶するために使用されるスレッドレジスタ20の例示的なバンクを示す。バンク20は、複数組のレジスタを含み、各組は、スレッドスケジューラ18が現在検討中のそれぞれのスレッドT1〜Tmに対応する。この好ましい例では、各スレッドの状態は、2個の命令レジスタ、4個のアクセスレジスタ、および12個のオペランドレジスタの合計18個のレジスタによって表わされる。それらのレジスタは次の通りである。
命令レジスタ:
−PCはプログラムカウンタである。
−SRは状態レジスタである。
アクセスレジスタ:
−GPはグローバルプールポインタである。
−DPはデータポインタである。
−SPはスタックポインタである。
−LRはリンクレジスタである。
オペランドレジスタ:OP1...OP12
命令レジスタは、スレッドの状態に関する、スレッドの実行を制御する際に使用される情報を記憶する。詳細には、スレッドがイベントまたは割り込みを受け入れる能力は、スレッド状態レジスタSRに保持された情報によって制御される。状態レジスタSRは、後で更に詳しく述べるように、スレッドがシングル命令モードかデュアル命令モードかに関する情報を含む場合もある。アクセスレジスタは、プロシージャのローカル変数に使用されたスタックポインタ、プロシージャ間で共用されるデータに通常使用されるデータポインタ、および、大きな定数及びプロシージャエントリポイントにアクセスするために使用される一定のプールポインタとを含む。オペランドレジスタOP1...OP12は、算術および論理演算を実行し、データ構造にアクセスし、サブルーチンを呼び出す命令によって使用される。相互接続システム42は、オペランドレジスタの組の間で、好ましくはある組のオペランドレジスタから別の組のオペランドレジスタにデータを転送するための1つまたは複数のチャネルを提供する。
また、スレッドの実効命令を一時的に記憶するためのいくつかの命令バッファ(INSTR)19も提供される。各命令バッファは、好ましくは各命令が16ビット長で1バッファ当たり4つの命令を可能にする64ビット長であることが好ましい。命令は、スレッドスケジューラ18の制御下でプログラムメモリ24からフェッチされ、一時的に命令バッファ19に入れられる。
実行ユニットは、レジスタ20とバッファ19のそれぞれにアクセスする。さらに、スレッドスケジューラ18は、各スレッド毎に少なくとも状態レジスタSRにアクセスする。
スレッドスケジューラ18は、実行ユニット16が実行すべきスレッドを動的に選択する。従来、スレッドスケジューラの機能は、単に、プロセッサが完全に占有されたままになるようにプログラムメモリからのスレッドをスケジューリングすることである。しかしながら、本発明によれば、スレッドスケジューラ18によるスケジューリングは、ポート22、チャネル、クロックおよびタイマのアクティビティと関連付けられる。ポート、チャネル、クロックおよびタイマは、一般に、本明細書では「資源」と呼ばれる。この点で、資源におけるアクティビティの結果としてスレッドが実行可能になるときの遅延を最小にするために、スレッドスケジューラが様々な資源22に直接結合されてもよいことに注意されたい。
スレッドスケジューラ18は、m個のスレッドのうち、「実行(run)」と呼ばれる1組n個の実行可能スレッドを維持し、その実行可能スレッドから、好ましくはラウンドロビン方式で次々に命令を取り出す。スレッドが継続できないとき、そのスレッドは、実行セットから除外されることによりサスペンドされる。この理由は、例えば、スレッドが以下のタイプのアクティビティのうちの1つ又は複数を待っているからである。
−レジスタが、実行できる前に初期化されている。
−レジスタが、準備ができていないポート又はデータが利用可能でないポートから入力を試みた。
−レジスタが、準備ができていないポート又はデータの余地のないポートへの出力を試みた。
−所定の資源の特定の条件が満たされたときに生成される可能性のある1つまたは複数のイベントを待機させる命令を実行した。
スレッド内で入力または出力命令に遭遇するか、チャネルの関連ポートの準備ができていないとき、スレッドスケジューラは、ポートまたはチャネルからレディ信号を受け取るまで実行セットからスレッドを除外してスレッドを休止する。例えば、ポートまたはチャネルが、入力する準備のできたデータがない場合がり、ポートまたはチャネルの出力バッファが満杯で出力に利用できない場合もある。ポートまたはチャネルと関連付けられたロジックは、そのポートまたはチャネルが準備ができているかどうかをスレッドスケジューラに示すために、レディフラグをアサートまたはデアサートする。
入力または出力命令が実行される前にポートまたはチャネルの準備ができている場合は、休止することなく入力または出力が完了する。
スレッドは、イベントを処理するように資源をセットアップすることもできる。これを達成するために、スレッドは、実行されたときに、スレッド識別子、継続点ベクトルおよび条件を当該の資源に提供する命令を含む。スレッド識別子は、イベントが関連付けられたスレッドを識別し、継続点ベクトルは、イベントが生じた後で引き続き実行すべきコード内のポイントを識別し、条件は、検出されるべきイベントのタイプを定義する。さらに、別の命令が、必要に応じて、条件と関連付けられた条件データを送ってもよい。各資源は、スレッド識別子、継続点ベクトル、条件および条件データを記憶するための関連レジスタを有する。例えば、当該の資源がポートの場合、イベントは、ある特定のデータをポートで受け取ったことでもよい。この場合、条件は、イベントを入力イベントとして定義し、条件データは、検出される特定のデータを指定し、継続点ベクトルは、そのデータを処理するのに適したコードの始まりを指定する。資源がタイマの場合、イベントは、タイマが特定の値に達したことでもよく、あるいは資源がクロックの場合、イベントは、特定のクロックエッジが検出されたことでもよい。
イベントがセットアップされた後、スレッドは、待機命令を実行し、イベントが生じるまで実行セットからそのスレッドを除外することによってサスペンドされる。各資源は、資源で生じるアクティビティを条件と比較するロジックを有する。アクティビティが条件と一致するとき、このロジックは、イベントが生じたことを示すために、スレッド識別子をスレッドスケジューラに戻し、継続点ベクトルを実行ユニットに戻す。次に、スレッドは、実行セットに再び導入することにより再開される。
待機命令が実行される前に条件が満たされた場合、スレッドは、サスペンドされずに継続する。
更に他のイベント処理命令には、イベントを生成する資源をイネーブルしディスエーブルするための命令、スレッドがイベントを受け入れることをイネーブルしディスエーブルするための命令、および資源をスレッドに割り当てるための命令と、割り当てられた資源を解放するための命令がある。更に他のスレッド処理命令には、種々のスレッドレジスタに読み書きするための命令がある。
本発明による命令セットは、入出力とイベントを処理するための命令に加えて、スレッドを初期化するための命令、並びに算術演算、分岐、割り込み、例外、トラップ、デバッグ、処理スタック、プールなどのためのより通常のタイプの命令を必要とする場合がある。そのような従来のタイプの命令は、当業者にはよく知られている。
以下では、前述のスレッドスケジューリング、入出力、イベント処理などのプロセッサを操作するための他の命令に対応することができる命令セットと関連した、前述の12個のレジスタアーキテクチャに特に適した命令形式について説明する。
図5は、本明細書では「形式I」と呼ばれる本発明による3オペランド命令形式を、いくつかの関連付けられた復号ロジック72、82、84および90の回路例と共に示す。
命令形式は、i[15:0]で示された16個のビットを有する。命令の5ビットi[15:11]はオペレーションコード502であり、11ビットi[10:0]はオペランド部分である。オペランド部分i[10:0]は、最大3個のオペランド指定子を含むことができる。3個の4ビットオペランド指定子x[3:0]、y[3:0]およびz[3:0]が、命令の11ビットオペランド部分i[10:0]に符号化される。例えば、yとzがそれぞれソースオペランドレジスタを指定し、xがディスティネーションオペランドレジスタを指定してもよい。
各オペランド指定子x、yおよびzの2ビットは、以下のように命令から単純に「逐語的(verbatim)」に読み出される。これらの逐語的な2ビット部分は、図5では506、508および510と示される。
x[1:0]=i[5:4]
y[1:0]=i[3:2]
z[1:0]=i[1:0]
他の2ビットの各オペランド指定子x、yおよびz(合計6ビット)は、図5では510と示されたオペランド部分i[10:6]の残りの5ビットから復号されなければならない。復号例を以下に示す。復号は、ハードウェアロジックで実施されることが好ましいが、原理上はアルゴリズムまたは参照テーブルで実施されてもよい。
オペランド指定子ビットi[10:61] オペランド番地への復号
00000 x[3:2]=00, y[3:2]=00, z[3:2]=00
00001 x[3:2]=00, y[3:2]=00, z[3:2]=01
00010 x[3:2]=00, y[3:2]=00, z[3:2]=10
00011 x[3:2]=00, y[3:2]=01, z[3:2]=00
00100 x[3:2]=00, y[3:2]=01, z[3:2]=01
00101 x[3:2]=00, y[3:2]=01, z[3:2]=10
00110 x[3:2]=00, y[3:2]=10, z[3:2]=00
00111 x[3:2]=00, y[3:2]=10, z[3:2]=01
01000 x[3:2]=00, y[3:2]=10, z[3:2]=10
01001 x[3:2]=01, y[3:2]=00, z[3:2]=00
01010 x[3:2]=01, y[3:2]=00, z[3:2]=01
01011 x[3:2]=01, y[3:2]=00, z[3:2]=10
01100 x[3:2]=01, y[3:2]=01, z[3:2]=00
01101 x[3:2]=01, y[3:2]=01, z[3:2]=01
01110 x[3:2]=01, y[3:2]=01, z[3:2]=10
01111 x[3:2]=01, y[3:2]=10, z[3:2]=00
10000 x[3:2]=01, y[3:2]=10, z[3:2]=01
10001 x[3:2]=01, y[3:2]=10, z[3:2]=10
10010 x[3:2]=10, y[3:2]=00, z[3:2]=00
10011 x[3:2]=10, y[3:2]=00, z[3:2]=01
10100 x[3:2]=10, y[3:2]=00, z[3:2]=10
10101 x[3:2]-10, y[3:2]=01, z[3:2]=00
10110 x[3:2]=10, y[3:2]=01, z[3:2]=01
10111 x[3:2]=10, y[3:2]=01, z[3:2]=10
11000 x[3:2]=10, y[3:2]=10, z[3:2]=00
11001 x[3:2]=10, y[3:2]=10, z[3:2]=01
11010 x[3:2]=10, y[3:2]=10, z[3:2]=10
11011 Alt
11100 Alt
11101 Alt
11110 Alt
11111 Alt
従って、上記の方式を使用することにより、オペランド指定子x[3:0]、y[3:0]およびz[3:0]はそれぞれ、0(0000)〜11(1011)の値を取り出して、それぞれ以下の12個のオペランドレジスタのどれかを指定することができる、
オペランドレジスタ 番地
OP1 0000
OP2 0001
OP3 0010
OP4 0011
OP5 0100
OP6 0101
OP7 0110
OP8 0111
OP9 1000
OP10 1001
OP11 1010
OP12 1011
必要に応じて、代りに値x、yおよびzのうちのいくつかまたはすべてを使用して即値オペランドを提供してもよく、すなわち、指定されたレジスタから取り出されるのではなくオペランド自体が命令内に直接符号化されてもよい。好ましい形式では、1つのオペランド指定子だけを即値オペランドと置き換えることができる。指定子と同様に、即値オペランドは、範囲0〜11内でなければならない。値x、yおよびzはそれぞれ、オペランド指定子または即値オペランドを指すために、本明細書では総称的に「オペランド要素」と呼ばれる場合がある。
復号ロジックは、スイッチングロジック90、オペレーションコード復号ロジック72、オペランド復号ロジック82、84を含む。復号ロジックは命令レジスタ50から命令を受け取る。命令レジスタ50は、命令バッファ19から命令をフェッチする独立した16ビットレジスタでもよく、命令レジスタ自体は、命令バッファ19の一部でもよい。
形式Iを復号するために、スイッチングロジック90は、ビットi[15:11]をオペレーションコード復号ロジック72に供給する働きをする。また、スイッチングロジック90は、符号化したオペランドビットi[10:6]をオペランド復号ロジックの復号部分82に送り、逐語的ビットi[5:0]をオペランド復号ロジックの結合部分84に直接提供する働きをする。オペランド復号ロジックの復号部分82は、符号化ビットi[10:6]を復号してx[3:2]、y[3:2]、z[3:2]を決定する働きをする。オペランド復号ロジックの結合部分84は、x[3:2]をx[1:0]と組み合わせ、y[3:2]をy[1:0]と組み合わせ、z[3:2]をz[1:0]を組み合わせる働きをする。オペレーションコード復号ロジック72は、オペレーションコードに従って、指定されたオペランドレジスタおよび/または即値オペランドを処理する働きをする。
1スレッド当たり12個のレジスタしかないので、オペランド指定子x[3:0]、y[3:0]およびz[3:0]はそれぞれ、0(0000)〜11(1011)の値をとるだけでよい。これは、5ビットi[10:6]、すなわちオペランド部分の復号部分が、0(00000)〜26(11010)の範囲を有するだけでよいことを意味する。これにより、5つの値は範囲27(11011)〜31(11111)内のままになり、これは、上で「Alt」と示され、説明した3オペランド形式では未使用である。本発明の有利な実施形態によれば、これらの5つの値を使用して、代替形式に従って命令を復号することができる。
例えば、図6は、本明細書で「形式II」と呼ばれる本発明による代替の2オペランド命令形式を示す。この代替形式に重要なことは、スイッチングロジックが、5ビット部分i[10:6]を範囲27(11011)〜31(11111)として認識するように構成されることである。これにより、スイッチングロジック90は、命令を形式IIとして認識し、ビットを形式Iの代替方式で復号ロジックに供給する。
形式IIによれば、ビットi[15:11]およびi[4]は、図6に602と示したオペレーションコードである。したがって、6ビットオペレーションコードを作成するために、オペランドに通常使用されるビットのうちの1つが代用される。2個の4ビットオペランド指定子x[3:0]およびy[3:0]は、ビットi[10:5]およびi[3:0]から復号される。各オペランド指定子xおよびyからの2ビットは、以下のように命令から逐語的に読み出される。これらの逐語的2ビット部分は、図6で606と608と示されている。
x[1:0]=i[3:2]
y[1:0]=i[1:0]
各オペランド指定子xおよびyの他の2ビット(合計4ビット)は、オペランド部分i[10:5]の残りの6ビットから復号されなければならず、図6では604と示される。i[10:6]が、形式IIの27(11011)〜31(11111)でしか有効でなく、過剰ビット(extra bit)i[5]が含まれるときは可能な値は10個だけになることに注意されたい。例示的な復号を以下に示す。
オペランド指定子ビットi[10:5] オペランド番地への復号
110110 x[3:2]=00, y[3:2]=00
111000 x[3:2]=00, y[3:2]=01
111010 x[3:2]=00, y[3:2]=10
111100 x[3:2]=01, y[3:2]=00
111110 x[3:2]=01, y[3:2]=01
110111 x[3:2]=01, y[3:2]=10
111001 x[3:2]=10, y[3:2]=00
111011 x[3:2]=1O, y[3:23=01
111101 x[3:2]=10, y[3:2]=10
111111 Alt
したがって、オペランド指定子x[3:0]およびy[3:0]はそれぞれ、上記の12個のオペランドレジスタのどれかそれぞれ指定するために0(0000)〜11(1011)の値を取ることができる。
必要に応じて、オペランド指定子xおよびyのいずれかまたは両方を、即値オペランドと置き換えてもよい。好ましい形式では、一方のオペランド指定子だけを即値オペランドと置き換えることができる。この場合も、この即値オペランドは、範囲0〜11内でなければならない。
形式IIを復号するために、スイッチングロジック90は、ビットi[15:11]およびi[4]をオペレーションコード復号ロジック72に提供する働きをする。また、スイッチングロジック90は、また、符号化されたオペランドビットi[10;6]およびi[5]をオペランド復号ロジックの復号部分82に送り、逐語的ビットi[3:0]オペランド復号ロジックの結合部分84に直接提供する働きをする。オペランド復号ロジックの復号部分82は、符号化されたビットi[10:6]i[5]をx[3:2]、y[3:2]、z[3:2]に復号する働きをする。オペランド復号ロジックの結合部分84は、x[3:2]をx[1:0]と組み合わせ、y[3:2]をy[1:0]と組み合わせ、z[3:2]をz[1:0]と組み合わせる働きをする。オペレーションコード復号ロジック72は、オペレーションコードに従って、指定されたオペランドレジスタおよび/または即値オペランドを処理する働きをする。
1スレッド当たり12個のレジスタしかないので、オペランド指定子x[3:0]およびy[3;0]は、0(0000)〜11(1011)から値を取るだけでよい。すなわち、6ビットi[10:5]、すなわちオペランド部分の復号部分は、前述の「Alt」と示された形式IIの値1111111を利用しない。この値を使用して、別の代替形式に従って命令を復号してもよい。
例えば、図7は、本明細書で「形式III」と呼ぶ本発明による代替1オペランド命令形式を示す。この特定の代替形式に重要なことは、スイッチングロジックが、5ビット部分i[10:6]を31(11111)として認識し、ビットi[5]を1(1)として認識するように構成されることである。これにより、スイッチングロジック90は、命令を形式IIIと認識し、これに従ってビットを復号ロジックに提供する。
部分i[10:5]は、図7で704と示される。6ビットオペレーションコードは、ビットi[15:11]およびi[4]であり、図7に702と示される。オペランド指定子x[3:0]は、図7で706と示されたビットi[3:0]から逐語的に読み出され、前述の12個のオペランドレジスタのうちの1つを指定するために範囲0(0000)〜11(1011)にある。あるいは、オペランド指定子xは、範囲0〜11の即値オペランドによって置き換えられてもよい。
形式IIIを復号するために、スイッチングロジック90は、ビットi[15:11]とi[4]をオペレーションコード復号ロジック72に提供する働きをする。また、スイッチングロジック90は、結合または復号する必要なしに逐語的ビットi[3:0]を直接提供する働きをする。オペレーションコード復号ロジック72は、オペレーションコードに従ってオペランドレジスタまたは即値オペランドを処理する働きをする。
1スレッド当たり12個のレジスタしかないので、ビットi[3:0]は、形式IIIでは範囲12(1100)〜15(1111)を使用しない。これらの値を使用して、更に別の代替形式に従って、命令を復号することができる。
例えば、図8は、本明細書で「形式IV」と呼ぶ本発明による代替0オペランド命令形式を示す。ここで、ビットi[15:11]およびi[4]は、802と示されたオペレーションコードであり、ビットi[10:6]は31(11111)であり、ビットi[5]は、一緒に804と示された1(1)であり、ビットi[3:0]は、806と示された範囲12(1100)〜15(1111)内のどれでもよい。スイッチングロジック90は、ビットi[10:5]およびi[3:0]をこの範囲内にあると認識し、従って、ビットi[15:11]およびi[4]を復号ロジックのオペレーションコード復号部分72に提供するように構成される。
前述の形式I−IVの体系と異なる他の命令形式を符号化することができる。例えば、本明細書で「形式V」、「形式VI」、「形式VII」および「形式VIII」と呼ぶ複数の形式はそれぞれ、5ビット以上のオペレーションコードを使用する。これを行うために、スイッチングロジック90は、最初に、上位5ビットi[15:11]を特定の所定の値または範囲の値であると認識し、それにより、復号ロジック72、82、84および90は、命令を、形式I−IVの代わりに代替形式V−VIIIのうちの特定の1つの形式に従って復号する。具体的には、スイッチングロジックが、ビットi[15:11]を特定の値または特定の範囲の値を有すると認識したとき、少なくともビットi[10]と場合によってはさらに他のビットi[9...]を、オペランド復号部分82および84の代わりにオペレーションコード復号部分72に提供することが知られている。
形式Vは、1つのレジスタ指定子と1つの即値オペランドを含む。ビットi[15:10]はオペレーションコードであり、ビットi[9:6]はレジスタ指定子であり、ビットi[5:0]は即値オペランドである。形式Vでは、ビットi[9:6]は、0(0000)〜15(1111)の全範囲を取ることができ、したがって、16個のレジスタGP、DP1 SP、LR、およびOP1...OP12のうちのどのレジスタも処理することができる。レジスタGP、DP、SPおよびLRをそれぞれ、例えば1100、1101、1110および1111とアドレス指定してもよい。したがって、形式Vの命令は、例えばスタックとプールを処理するためにスレッドのレジスタのうちの他のものを処理することができる。
形式VIは、ビットi[9:6]が範囲0(0000)〜11(1011)に制限されることを除き形式Vと同じであり、したがって、レジスタ指定子は、オペランドレジスタOP1〜OP12のいずれかを指定するだけでよい。
形式VIIは、10ビットオペレーションコードと6ビットの即値オペランドを有する。ビットi[15:6]はオペレーションコードであり、ビットi[9:6]は、範囲12(1100)〜15(1111)である。ビットi[5:0]は、即値オペランドである。
形式VIIIは、6ビットオペレーションコードと10ビットの即値オペランドを有する。ビットi[15:10]はオペレーションコードであり、ビットi[9:0]は即値オペランドである。
スイッチングロジック90に関して、決して交換されないi[15:11]のようないくつかのビットは、図6〜図9に示したようなスイッチングロジック90を通らずに、命令レジスタ50からオペレーションコード復号部分72に直接提供されてもよいことに注意されたい。しかしそれにもかかわらず、実施形態では、スイッチングロジック90は、形式V〜VIIIのうちのいずれかに従って命令が復号されることを検出するために、ビットi[15:11]のうちの少なくともいくつかを読み出すことができなければならない。
好ましい実施形態によれば、実行ユニットは、プレフィックス命令(prefix instruction)を使用することができる。プレフィックスは、即値オペランドの範囲を拡張し、より多くのレジスタ間演算、またはより多くのオペランドを有するレジスタ間演算を提供するために使用される。プレフィックス命令は、コンパイラとアセンブラによって自動的に挿入される。プレフィックス命令は、以下の通りである。
PFIX この命令は、その10ビット即値オペランドをその後の16ビット命令の即値オペランドと連結する。これは、形式VIIIである、
EOPR この命令は、その11ビットオペランド部分をその後の命令と連結する。この命令は、単純にオペレーションコードとしてビットi[15:11]と即値オペランドとしてビットi[10:0]を有する別の形式を有する。
別の好ましい特徴は、図9に示したようにデュアル命令発行である。ここで、実行ユニット16は、実際に、少なくとも2つの並列実行ユニット、好ましくは並列パイプライン16aおよび16bを含む。実行ユニットは、それぞれ前述のような形式の2つの16ビット命令を2つのそれぞれのパイプライン16a、16bに発行できる発行ロジック60を含む。図2〜図4に関して説明したようなプロセッサでは、デュアル発行機能は、クロックレートを高めることなく用途により性能を50%〜90%高めることができる。プログラムメモリの使用では最大25%のオーバヘッドがある。
2つのパイプラインは、異なる性能を有することが好ましい。パイプライン16aによって実行される第1の命令は、算術論理演算ユニット(ALU)型命令、メモリアクセス命令、または分岐命令のいずれかでもよい。パイプライン16bによって実行される第2の命令は、ALU型命令または入出力命令のいずれでもよい。これは、追加のデコーダと追加のALUを必要とするだけでなく、単一のパイプラインがメモリアクセス命令と資源命令の両方を処理する必要がないので、複雑さを小さくし好都合である。さらに、プロセッサは、2つの16ビット命令の各対の依存性確認を行う必要がなく、その理由は、コンパイラが、それらの対の間の依存性がないように対に割り当てるからである。
利用可能な命令セットは、2つの命令長に基づく。16ビット命令、すなわち「短い」命令は、最大2つのソースオペランドと最大1つのディスティネーションオペランドを有する。これらの完全なセットは、汎用コード内で一般に使用される命令をすべて符号化する。32ビット命令、すなわち「長い」命令は、最大4つのソースオペランドと最大2つのディスティネーションオペランドを有する。これらは、(長い即値オペランドを有するものを含む)汎用コード内のあまり一般的でない命令を符号化し、またアプリケーション固有のコードのパフォーマンスを大幅に高めるいくつかのマルチオペランド命令を符号化する。
デュアル発行は、サイクルごとに、1対の16ビット命令50を2つの並列パイプラインに発行するか、単一の32ビット命令を1つのパイプラインに発行することによって動作する。シングル発行の場合、単一の16ビットが、単純に、適切なパイプラインに発行される。例えば、全ての資源命令が、第2のパイプライン16bにルーティングされてもよい。デュアル発行を実行するとき、分岐オフセットは、32ビットオフセットとして解釈され、常に、1対の16ビット命令または単一の32ビット命令に分岐する。
スレッド状態レジスタ(SR)内のフラグは、スレッドがデュアル発行またはシングル発行かを判定するために使用される。発行ロジック60は、各組のスレッドレジスタ20からSRレジスタにアクセスし、シングル発行モードまたはデュアル発行モードに従って命令50を発行するように構成される。したがって、状態レジスタSRによって、スレッドスケジューラ18によって検討されているスレッドTのいくつかは常にシングル発行モードでよく、同時にその他のスレッドはデュアル発行モードでよい。これにより、複数スレッドの管理の融通性を高めることができ好都合である。実施形態では、同じスレッドに関してデュアル発行とシングル発行の間で制御を移行できなくてもよい。
コードスケジューラによってデュアルコードがアセンブラで作成され、その結果、デュアルコードは、コンパイルされたソフトウェアとハンドコード化された(hand coded)ソフトウェアを最適化する。このコードは、通常の実行より大きいが、プログラムオフセットの範囲が大きすぎるので、再配列と「ノーオペレーション」命令のパディング以外の変更が不要になる(ノーオペレーション命令は、スケジューラスレッドがその命令バッファ内に命令を有しないときに発行される)。
プログラムメモリ24は、並列にアクセスできる2つのバンクとして実施されてもよい。一方のバンクは、偶数番号のアドレスを保持し、他方は奇数番号のアドレスを保持する。命令フェッチは、常に、64ビットをフェッチする(命令バッファ19はそれぞれ64ビット幅である)。32ビット命令と、16ビット命令の対は、メモリ内の32ビット境界に位置合わせされなければならない。デュアルプログラムアドレスはすべて32ビットで位置合わせされ、プログラムオフセットはすべて2倍ではなく4倍にされる。この配列は、命令フェッチのように両方のメモリバンクを使用してメモリアクセス命令を実行させることによって、64ビット実装にも有効である。64ビットデータ型の利点を除き性能には差がないことがある。
デュアル命令発行を支援する他の機能は、性能への影響が無視できるほどしかない4つの読み出しポートと2つの書き込みポートを支援するレジスタファイルを使用することと、2回以上トラップを立ち上げる状況を一度で処理することができるようにトラップ処理を修正することを必要とすることがある。この二重トラップ処理は、トラップが対のうちの第1の命令によって立ち上げられたか第2の命令によって立ち上げられたかを示す状態レジスタSR内のビットによって達成することができる。両方の命令がトラップを立ち上げる場合、それらの命令が1つずつトラップを処理することができる。
以下は、本発明に従って符号化することができる3個、2個、1個および0個のオペランド命令の例である。以下で使用される略語「reg」は、レジスタを指し、「op reg」はオペランドレジスタを指し、「imm」は即値オペランドを指し、「dest」はディスティネーションオペランドレジスタを指す。
ADDI dest, source, constant ソースを定数に加える(2つのop regと4ビットimm)
MUL dest, sourcel , source2 ソース1とソース2を掛ける(3つのop reg)
LSU dest, sourcel , source2 符号なし未満(3つのop reg)
STW data, base offset データをメモリに記憶する(3つのop reg)
LDW data, base, offset メモリからデータをロードする(3つのop reg)
LDWSP data, offset スタックからデータをロードする(任意のregと6ビットimm)
LDC data, constant 定数をロードする(任意のregと6ビットimm)
STB data, addr バイトをメモリに記憶する(2つのop reg)
BRFT flag, offset フラグが真の場合に前方に分岐する(op regと6ビットimm)
BRBF flag, offset フラグが偽の場合に後方に分岐(op regと6ビットimm)
BRFU offset 無条件に相対前方に分岐する(6ビットimm)
BLRF offset 分岐とリンク相対前方(10ビットimm呼出しサブルーチン)
GETR resource, type 資源をスレッドに割り当てる(2つのop reg)
IN resource, data 入力(2つのop reg)
OUT resource, data 出力(2つのop reg)
INSHR resource, data 入力し右にシフトする(2つのop reg)
NOT dest, source ビット単位でない(2つのop reg)
EET flag, resource フラグが真の場合にイベントをイネーブルする(2つのop reg)
EEU resource イベントを無条件にイネーブルする(1のop reg)
WAITEU 無条件にイベントを待つ(オペランドなし)
CLRE スレッドのイベントをクリアする(オペランドなし)
デュアル命令発行のいくつかの例がある。2つの命令が同一行に示された場合、これは、命令が2つの並列パイプラインに一緒に発行されたことを示す。
第1の例は、次のように2つのアレイaおよびbの乗累算を実行する。
MACC:
LDW x, a, i LSU go, i, limit
LDW y, b, i ADD i, i, 1
MUL prod, x, y
BRBF go, MACC ADD sum, sum, prod
次の2つは、DMA(直接記憶アクセス)コントローラによって通常実行されるのと同じ入出力機能を実行する。これらの機能は、メモリ内のアドレス基底で始まるチャネルcを使用してワードのブロックを転送する。
DMAI:
LSU go, i, limit IN c, x
STW x, base, i
BRBF go, DMAI ADDl i, i, 1
DMAO:
LDW x, base, i LSU go, I, limit
ADDI U, 1 OUT c.x
BRBF go, DMAO
次の例は、イーサネット(登録商標)によって使用されるメディア独立インタフェースから入力を実行する。これは、4ビットdportからのデータと1ビットvportからの有効信号をシフトインする。各対の4ビット値が、1バイトを形成し、各バイトがメモリに記憶される。有効信号をバイトごとに確認して一連のバイトが終了したことを判定する。
MACI:
STB data, ptr INSHR dport, data
ADDI ptr, ptr, 1 INSHR vport, valid
NOT go, valid INSHR dport, data
BRBF go, MACI INSHR vport, valid
最後の例は、1命令サイクル当たり1アイテム(ビット、ニブル、バイトなど)のポートレートで入力されたデータを示す。これは、トークンをずっとカウントしかつ/またはトークン値の終了をスキャンしている間に行うことができる。アイテムは、バイト、ハーフワードまたはワード間で変換され、メモリ間で転送されてもよい。
上記の実施形態が、例としてのみ示されたことを理解されよう。本発明の命令形式は、特にインタフェースプロセッサおよびスレッドスケジューリング、イベントハンドリングおよび入出力用の命令セットに関して有用であるように説明された。しかしながら、本発明はそのような実施形態に限定されず、当業者には、他の用途および命令セットが明らかな場合がある。さらに、他の実施形態では、別の符号化/復号方式、プレフィックスおよび/または並列パイプライン機構を使用することができる。本発明の範囲は、説明した実施形態によって限定されず、以下の特許請求の範囲によってのみ限定される。
72 オペレーションコード復号ロジック
82、84 オペランド復号ロジック
90 スイッチングロジック

Claims (56)

  1. オペレーションコード復号ロジック、オペランド復号ロジック、および16ビット入力を有し、プロセッサ内で命令を復号するための復号ユニットであって、
    前記オペレーションコード復号ロジックは、前記入力の5ビットを使用してオペレーションコードを決定する働きをし、前記オペランド復号ロジックは、前記入力の残りの11ビットから、可能な12個の2進値のうちの1つをそれぞれ有する3つの4ビットオペランド要素を決定する働きをし、
    前記オペランド復号ロジックは、前記11ビットの符号化グループを復号して3つのオペランド要素の各オペランド要素の第1の部分を決定し、前記11ビットの逐語的グループを逐語的に読み出して3つのオペランド要素の各オペランド要素の第2の部分を決定する働きをする復号ユニット。
  2. 前記入力の値が所定の条件を満たす場合に、前記11ビットの少なくとも1ビットを前記オペランド復号ロジックから前記オペレーションコード復号ロジックに分流する働きをするスイッチングロジックを含み、前記オペレーションコード復号ロジックは、前記入力の値が所定の条件を満たす場合に、前記5ビットと前記分流された少なくとも1ビットを使用してオペレーションコードを決定する働きをする、請求項1に記載の復号ユニット。
  3. 前記オペランド復号ロジックは、前記入力の値が所定の条件を満たす場合に、前記11ビットの残りのビットから少なくとも1つのオペランドを決定する働きをする、請求項2に記載の復号ユニット。
  4. 前記スイッチングロジックは、前記11ビットが、前記3つの4ビットオペランド要素を符号化するために使用されない値を有する場合に、前記少なくとも1ビットを分流するように構成された、請求項2に記載の復号ユニット。
  5. 前記スイッチングロジックは、前記5ビットが所定の値または範囲の値を有する場合に、前記少なくとも1ビットを分流するように構成された、請求項2に記載の復号ユニット。
  6. 前記符号化グループは5ビットであり、前記逐語的グループは6ビットであり、各オペランド要素の前記第1の部分は2ビットであり、各オペランド要素の前記第2の部分は2ビットである、請求項1に記載の復号ユニット。
  7. 前記入力は、16ビットの命令レジスタから送られる、請求項1に記載の復号ユニット。
  8. 前記オペランド要素の少なくとも1つは、1組12個のオペランドレジスタのうちのいずれかからオペランドレジスタを指定するためのオペランド指定子である、請求項1に記載の復号ユニット。
  9. 前記3つのオペランド要素はそれぞれ、前記組のいずれかからのオペランドレジスタをそれぞれ指定するそれぞれのオペランド指定子を含む、請求項8に記載の復号ユニット。
  10. 前記3つのオペランド要素は、
    1つの即値オペランドと、前記組のいずれかからの2つのオペランドレジスタをそれぞれ指定するための2つのオペランド指定子とを含む、請求項8に記載の復号ユニット。
  11. 前記3つのオペランド要素は、
    即値ソースオペランド、または、前記組のいずれかからそれぞれのソースオペランドレジスタを指定するためのソースオペランド指定子である2つのソースオペランド要素と、
    前記組のいずれかからのディスティネーションオペランドレジスタを指定するための1つのディスティネーションオペランド指定子と、を含み、
    前記復号ユニットは、前記ソースオペランドを処理し、前記処理の結果を前記ディスティネーションオペランドレジスタに記憶することを示す前記オペレーションコードに従って前記命令を実行する働きをする、請求項8に記載の復号ユニット。
  12. 前記3つのオペランドは、3つのソースオペランドを含む、請求項1に記載の復号ユニット。
  13. 前記入力の値が所定の条件を満たす場合に、前記11ビットのうちの1ビットを前記オペランド復号ロジックから前記オペレーションコード復号ロジックに分流する働きをするスイッチングロジックを含み、
    前記オペレーションコード復号ロジックは、前記入力の値が所定の条件を満たす場合に、前記5ビットと前記分流された1ビットを使用してオペレーションコードを決定する働きをし、前記オペランド復号ロジックは、前記入力の値が所定の条件を満たす場合に、残りの10ビットから2つの4ビットオペランド指定子を決定する働きをし、各4ビットオペランド指定子は、組の12個のオペランドレジスタのいずれかからオペランドレジスタを指定するための12個の可能な2進値のうちの1つを有し、
    前記オペランド復号ロジックは、前記入力の値が所定の条件を満たす場合に、前記10ビットの符号化グループを復号して前記2つのオペランド指定子の各オペランド指定子の第1の部分を決定し、前記10ビットの逐語的グループを逐語的に読み出して前記2つのオペランド指定子の各オペランド指定子の第2の部分を決定する働きをする、請求項に記載の復号ユニット。
  14. 前記復号ユニットは、複数スレッドの命令を復号するように構成され、各スレッドは、命令のシーケンスを含み、前記復号ユニットによって復号された命令の少なくとも1つは、前記シーケンスのうちの1つのシーケンスの構成要素である、請求項1に記載の復号ユニット。
  15. 前記少なくとも1つの命令は、前記複数スレッドのうちの1つまたは複数のスレッドのスケジューリングを管理するためのスレッドスケジューリング命令である、請求項14に記載の復号ユニット。
  16. 前記命令の少なくとも1つは、
    イベントと関連付けられた条件を設定するためのセットイベント条件命令と、イベント条件と関連付けられたデータを設定するためのセット条件データ命令と、イベントと関連付けられた継続点ベクトルを設定するためのセットベクトル命令と、イベントソースがイベントを生成することを可能にするソースイベントイネーブル命令と、スレッドがイベントに反応することを可能にするスレッドイベントイネーブル命令と、のいずれかである、請求項1に記載の復号ユニット。
  17. 前記復号ユニットは、プレフィックス命令のオペランドを、次に実行する命令のオペランドと連結する働きをする、請求項1に記載の復号ユニット。
  18. 前記入力は、64ビット命令バッファから命令を受け取るように構成された、請求項1に記載の復号ユニット。
  19. 2つのそれぞれの16ビット命令を同時に並列に実行する働きをする少なくとも2つの並列パイプラインを含み、各パイプラインが請求項1による復号ユニットを含む実行ユニット。
  20. 前記実行ユニットは、デュアル発行モードとシングル発行モードで動作可能であり、前記デュアル発行モードでは、前記実行ユニットは、2つの16ビット命令を2つのそれぞれのパイプラインに単一サイクルで発行する働きをし、シングル発行モードでは1つの16ビットの命令だけをパイプラインに単一サイクルで発行する働きをする、請求項19に記載の実行ユニット。
  21. 前記実行ユニットは、前記パイプラインのうちの1つのパイプラインに32ビット命令を単一サイクルで発行する働きをする、請求項19に記載の実行ユニット。
  22. 複数組の12個のオペランドレジスタを含み、各組が、前記スレッドのそれぞれの1つに関するオペランドを記憶するように構成された、請求項14による復号ユニットを含むプロセッサ。
  23. 前記プロセッサは、第1の外部装置と第2の外部装置とを接続するインタフェースプロセッサである、請求項1による復号ユニットを含むプロセッサ
  24. 前記第1の外部装置は、別のプロセッサであり、前記第2の外部装置は、周辺装置である、請求項23に記載のプロセッサ。
  25. 前記第1および第2の外部装置は、両方とも他のプロセッサである、請求項23に記載のプロセッサ。
  26. 前記命令の少なくとも1つは、
    前記外部装置のうちの1つから前記インタフェースプロセッサにデータを入力するための入力命令と、前記インタフェースプロセッサから前記外部装置のうちの1つにデータを出力するための出力命令のいずれかである、請求項23に記載のプロセッサ。
  27. オペレーションコード復号ロジック、オペランド復号ロジック、および16ビット入力を含む復号ユニットを使用して、プロセッサ内で命令を復号する方法であって、
    前記オペレーションコード復号ロジックを操作して、前記入力の5ビットを使用してオペレーションコードを決定するステップと、
    前記オペランド復号ロジックを操作して、前記入力の残りの11ビットから、可能な12個の可能な2進値のうちの1つをそれぞれ有する3つの4ビットオペランド要素を決定するステップとを含み、
    前記3つのオペランド要素を決定するステップは、前記11ビットの符号化グループを復号して前記3つのオペランド要素の各オペランド要素の第1の部分を決定し、前記11ビットの逐語的グループを逐語的に読み出して3つのオペランド要素の各オペランド要素の第2の部分を決定する方法。
  28. 前記入力の値が所定の条件を満たす場合に、前記11ビットの少なくとも1ビットを前記オペランド復号ロジックから前記オペレーションコード復号ロジックに分流するステップと、
    前記オペレーションコード復号ロジックを操作して、前記入力の値が所定の条件を満たす場合に、前記5ビットと前記分流された少なくとも1ビットを使用してオペレーションコードを決定するステップとを含む、請求項27に記載の方法。
  29. 前記オペランド復号ロジックを操作して、前記入力の値が所定の条件を満たす場合に、前記11ビットの残りのビットから少なくとも1つのオペランドを決定するステップを含む、請求項28に記載の方法。
  30. 前記少なくとも1ビットを分流する前記ステップは、前記11ビットが、前記3つの4ビットオペランド要素を符号化するために使用されない値を有する場合に実行される、請求項28に記載の方法。
  31. 前記少なくとも1ビットを分流する前記ステップは、前記5ビットが所定の値または範囲の値を有する場合に実行される、請求項28に記載の方法。
  32. 前記符号化グループが5ビットであり、前記逐語的グループが6ビットであり、各オペランド要素の前記第1の部分が2ビットであり、各オペランド要素の前記第2の部分が2ビットである、請求項27に記載の方法。
  33. 前記入力は、16ビットの命令レジスタから送られる、請求項27に記載の方法。
  34. 前記オペランド要素の少なくとも1つは、1組12個のオペランドレジスタのうちのいずれかからオペランドレジスタを指定するためのオペランド指定子である、請求項27に記載の方法。
  35. 前記3つのオペランド要素はそれぞれ、前記組のいずれかからのオペランドレジスタをそれぞれ指定するためのそれぞれのオペランド指定子を含む、請求項34に記載の方法。
  36. 前記3つのオペランド要素は、1つの即値オペランドと、前記組のいずれかからの2つのオペランドレジスタをそれぞれ指定するための2つのオペランド指定子とを含む、請求項34に記載の方法。
  37. 前記3つのオペランド要素は、
    即値ソースオペランド、または、前記組のいずれかからのそれぞれのソースオペランドレジスタを指定するためのソースオペランド指定子である2つのソースオペランド要素と、
    前記組のいずれかからのディスティネーションオペランドレジスタを指定するための1つのディスティネーションオペランド指定子とを含み、
    前記ソースオペランドを処理し、前記処理の結果を前記ディスティネーションオペランドレジスタに記憶するステップを含む、オペレーションコードに従って前記命令を実行するステップを含む、請求項34に記載の方法。
  38. 前記3つのオペランドは、3つのソースオペランドを含む、請求項27に記載の方法。
  39. 前記入力の値が所定の条件を満たす場合に、前記11ビットのうちの1ビットを前記オペランド復号ロジックから前記オペレーションコード復号ロジックに分流するステップと、
    前記オペレーションコード復号ロジックを操作して、前記入力の値が所定の条件を満たす場合に、前記5ビットと前記分流された1ビットを使用してオペレーションコードを決定するステップと、
    前記オペランド復号ロジックを操作して、前記入力の値が所定の条件を満たす場合に、残りの10ビットから、組の12個のオペランドレジスタのいずれかからのオペランドレジスタを指定するために、可能な12個の2進値のうちの1つをそれぞれ有する2つの4ビットオペランド指定子を決定するステップとを含み、
    前記2つのオペランド指定子を決定する前記ステップは、前記入力の値が所定の条件を満たす場合に、前記10ビットの符号化グループを復号して前記2つのオペランド指定子の各オペランド指定子の第1の部分を決定し、前記10ビットの逐語的グループを逐語的に読み出して前記2つのオペランド指定子の各オペランド指定子の第2の部分を決定するステップを含む、請求項27に記載の方法。
  40. 前記復号ユニットを操作して複数スレッドの命令を復号するステップを含み、各スレッドは、命令のシーケンスを含み、前記復号された命令の少なくとも1つが、前記シーケンスのうちの1つの構成要素である、請求項27に記載の方法。
  41. 前記少なくとも1つの命令は、前記複数スレッドの1つまたは複数のスレッドのスケジューリングを管理するためのスレッドスケジューリング命令である、請求項40に記載の方法。
  42. 前記命令の少なくとも1つは、
    イベントと関連付けられた条件を設定するためのセットイベント条件命令と、イベント条件と関連付けられたデータを設定するためのセット条件データ命令と、イベントと関連付けられた継続点ベクトルを設定するためのセットベクトル命令と、イベントソースがイベントを生成することを可能にするためのソースイベントイネーブル命令と、スレッドがイベントに反応することを可能にするスレッドイベントイネーブル命令のいずれかである、請求項27に記載の方法。
  43. 前記復号ユニットを操作して、プレフィックス命令のオペランドを、次に実行される命令のオペランドと連結するステップを含む、請求項27に記載の方法。
  44. 前記入力に64ビット命令バッファから命令を受け取るステップを含む、請求項27に記載の方法。
  45. 2つのそれぞれの並列パイプラインを含む実行ユニットを同時に使用して少なくとも2つの16ビット命令を実行するステップを含み、各パイプラインが請求項27に記載の方法により操作される、請求項27に記載の方法。
  46. 前記実行ユニットをデュアル発行モードで操作するかシングル発行モードで操作するかを選択するステップを含み、前記デュアル発行モードでは、前記実行ユニットは、2つの16ビット命令を2つのそれぞれのパイプラインに単一サイクルで発行する働きをし、シングル発行モードでは、実行ユニットは、1つの16ビット命令だけをパイプラインに単一サイクルで発行する働きをする、請求項45に記載の方法。
  47. 前記パイプラインのうちの1つを操作して32ビット命令を単一サイクルで実行する、請求項45に記載の方法。
  48. それぞれのスレッドに関するオペランドを、それぞれの組の12個のオペランドレジスタに記憶するステップを含む、請求項40に記載の方法。
  49. 前記プロセッサは、インタフェースプロセッサであり、前記プロセッサを使用して第1の外部装置と第2の外部装置を接続するステップを含む、請求項27に記載の方法。
  50. 前記第1の外部装置が別のプロセッサであり、前記第2の外部装置が周辺装置である、請求項49に記載の方法
  51. 前記第1と第2の外部装置が両方とも他のプロセッサである、請求項49に記載の方法
  52. 前記命令の少なくとも1つは、
    前記外部装置のうちの1つから前記インタフェースプロセッサにデータを入力するための入力命令と、前記インタフェースプロセッサから前記外部装置のうちの1つにデータを出力するための出力命令のいずれかである、請求項49に記載の方法
  53. モバイルアプリケーションプロセッサ、少なくとも1つの周辺装置、およびモバイルアプリケーションプロセッサと周辺装置の間に接続されたインタフェースプロセッサを有し、前記インタフェースプロセッサが、プロセッサ内で命令を復号するための復号ユニットを有し、前記復号ユニットが、オペレーションコード復号ロジック、オペランド復号ロジック、および16ビット入力を含むモバイル端末であって、
    前記オペレーションコード復号ロジックは、前記入力の5ビットを使用してオペレーションコードを決定する働きをし、前記オペランド復号ロジックは、前記入力の残りの11ビットから、可能な12個の2進値のうちの1つをそれぞれ有する3つの4ビットオペランド要素を決定する働きをし、
    前記オペランド復号ロジックは、前記11ビットの符号化グループを復号して前記3つのオペランド要素の各オペランド要素の第1の部分を決定し、前記11ビットの逐語的グループを逐語的に読み出して前記3つのオペランド要素の各オペランド要素の第2の部分を決定する働きをするモバイル端末。
  54. 相互接続プロセッサアレイにおいて、前記プロセッサのうちの少なくとも1つが、オペレーションコード復号ロジック、オペランド復号ロジック、および16ビット入力を有し、プロセッサ内で命令を復号するための復号ユニットを有する相互接続プロセッサアレイであって、
    前記オペレーションコード復号ロジックは、前記入力の5ビットを使用してオペレーションコードを決定する働きをし、前記オペランド復号ロジックは、前記入力の残りの11ビットから、可能な12個の2進値のうちの1つをそれぞれ有する3つの4ビットオペランド要素を決定する働きをし、
    前記オペランド復号ロジックは、前記11ビットの符号化グループを復号して3つのオペランド要素の各オペランド要素の第1の部分を決定し、前記11ビットの逐語的グループを逐語的に読み出して前記3つのオペランド要素の各オペランド要素の第2の部分を決定する働きをする、相互接続プロセッサアレイ。
  55. オペレーションコード復号ロジック、オペランド復号ロジック、および16ビット入力を含み、命令を復号するための復号ユニットを有するプロセッサであって、
    前記オペレーションコード復号ロジックは、前記入力の5ビットを使用してオペレーションコードを決定する働きをし、前記オペランド復号ロジックは、前記入力の残りの11ビットから、可能な12個の2進値のうちの1つをそれぞれ有する3つの4ビットオペランド要素を決定する働きをし、
    前記オペランド復号ロジックは、前記11ビットの符号化グループを復号して前記3つのオペランド要素の各オペランド要素の第1の部分を決定し、前記11ビットの逐語的グループを逐語的に読み出して前記3つのオペランド要素の各オペランド要素の第2の部分を決定する働きをするプロセッサ。
  56. プロセッサ内で命令を復号するための復号ユニットであって、
    16ビット入力手段と、
    前記入力の5ビットを使用してオペレーションコードを決定するためのオペレーションコード復号手段と、
    前記入力の残りの11ビットから、可能な12個の2進値のうちの1つをそれぞれ有する3つの4ビットオペランド要素を決定するためのオペランド復号手段と、を含み、
    前記オペランド復号手段は、前記11ビットの符号化グループを復号して前記3つのオペランド要素の各オペランド要素の第1の部分を決定し、前記11ビットの逐語的グループを逐語的に読み出して前記3つのオペランド要素の各オペランド要素の第2の部分を決定する復号ユニット。
JP2010506907A 2007-05-09 2008-05-02 コンパクト命令セットの符号化 Active JP5222941B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/797,968 2007-05-09
US11/797,968 US7676653B2 (en) 2007-05-09 2007-05-09 Compact instruction set encoding
PCT/EP2008/055436 WO2008138781A1 (en) 2007-05-09 2008-05-02 Compact instruction set encoding

Publications (2)

Publication Number Publication Date
JP2010526383A JP2010526383A (ja) 2010-07-29
JP5222941B2 true JP5222941B2 (ja) 2013-06-26

Family

ID=39651396

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010506907A Active JP5222941B2 (ja) 2007-05-09 2008-05-02 コンパクト命令セットの符号化

Country Status (6)

Country Link
US (1) US7676653B2 (ja)
EP (1) EP2145249B1 (ja)
JP (1) JP5222941B2 (ja)
KR (1) KR101528614B1 (ja)
CN (1) CN101720460B (ja)
WO (1) WO2008138781A1 (ja)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101084728B1 (ko) 2009-12-24 2011-11-22 서울대학교산학협력단 동적 암시 어드레싱 모드를 지원하는 파이프라인 방식의 프로세서
US20120284488A1 (en) * 2011-05-03 2012-11-08 Qualcomm Incorporated Methods and Apparatus for Constant Extension in a Processor
US9286072B2 (en) 2011-10-03 2016-03-15 International Business Machines Corporation Using register last use infomation to perform decode-time computer instruction optimization
US8612959B2 (en) 2011-10-03 2013-12-17 International Business Machines Corporation Linking code for an enhanced application binary interface (ABI) with decode time instruction optimization
US8756591B2 (en) 2011-10-03 2014-06-17 International Business Machines Corporation Generating compiled code that indicates register liveness
US9354874B2 (en) 2011-10-03 2016-05-31 International Business Machines Corporation Scalable decode-time instruction sequence optimization of dependent instructions
US10078515B2 (en) 2011-10-03 2018-09-18 International Business Machines Corporation Tracking operand liveness information in a computer system and performing function based on the liveness information
US9697002B2 (en) 2011-10-03 2017-07-04 International Business Machines Corporation Computer instructions for activating and deactivating operands
US9690583B2 (en) 2011-10-03 2017-06-27 International Business Machines Corporation Exploiting an architected list-use operand indication in a computer system operand resource pool
US9329869B2 (en) 2011-10-03 2016-05-03 International Business Machines Corporation Prefix computer instruction for compatibily extending instruction functionality
US8615745B2 (en) 2011-10-03 2013-12-24 International Business Machines Corporation Compiling code for an enhanced application binary interface (ABI) with decode time instruction optimization
US20150019845A1 (en) * 2013-07-09 2015-01-15 Texas Instruments Incorporated Method to Extend the Number of Constant Bits Embedded in an Instruction Set
US10061592B2 (en) * 2014-06-27 2018-08-28 Samsung Electronics Co., Ltd. Architecture and execution for efficient mixed precision computations in single instruction multiple data/thread (SIMD/T) devices
US9696992B2 (en) * 2014-12-23 2017-07-04 Intel Corporation Apparatus and method for performing a check to optimize instruction flow
US10394568B2 (en) 2015-09-30 2019-08-27 International Business Machines Corporation Exception handling for applications with prefix instructions
US10761852B2 (en) 2015-09-30 2020-09-01 International Business Machines Corporation Extending data range addressing
US10877759B2 (en) 2015-09-30 2020-12-29 International Business Machines Corporation Managing the capture of information in applications with prefix instructions
US9870305B2 (en) 2015-09-30 2018-01-16 International Business Machines Corporation Debugging of prefixed code
US10089077B1 (en) 2017-01-10 2018-10-02 Apple Inc. Parallel processing circuitry for encoded fields of related threads
CN110175048A (zh) * 2019-05-15 2019-08-27 童先娥 一种指令处理方法及处理器
US11288072B2 (en) * 2019-09-11 2022-03-29 Ceremorphic, Inc. Multi-threaded processor with thread granularity
CN110995285B (zh) * 2019-12-27 2023-05-05 成都达安众科技有限公司 一种uhf rfid分步式指令解码方法及芯片
CN113805942A (zh) * 2021-08-23 2021-12-17 北京奕斯伟计算技术有限公司 处理器核、处理器及指令处理方法

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5303358A (en) * 1990-01-26 1994-04-12 Apple Computer, Inc. Prefix instruction for modification of a subsequent instruction
JP3505266B2 (ja) * 1995-06-15 2004-03-08 三洋電機株式会社 プログラム実行装置
US5905893A (en) * 1996-06-10 1999-05-18 Lsi Logic Corporation Microprocessor adapted for executing both a non-compressed fixed length instruction set and a compressed variable length instruction set
AU3480897A (en) 1996-06-10 1998-01-07 Lsi Logic Corporation An apparatus and method for detecting and decompressing instructions from a variable-length compressed instruction set
US5933627A (en) * 1996-07-01 1999-08-03 Sun Microsystems Thread switch on blocked load or store using instruction thread field
EP0942357A3 (en) 1998-03-11 2000-03-22 Matsushita Electric Industrial Co., Ltd. Data processor compatible with a plurality of instruction formats
JP3472504B2 (ja) * 1998-03-11 2003-12-02 松下電器産業株式会社 命令解読方法、命令解読装置及びデータ処理装置
JP4457474B2 (ja) * 2000-04-04 2010-04-28 ソニー株式会社 情報記録装置、情報再生装置、情報記録方法、情報再生方法、および情報記録媒体、並びにプログラム提供媒体
US6976152B2 (en) * 2001-09-24 2005-12-13 Broadcom Corporation Comparing operands of instructions against a replay scoreboard to detect an instruction replay and copying a replay scoreboard to an issue scoreboard
US7428631B2 (en) * 2003-07-31 2008-09-23 Intel Corporation Apparatus and method using different size rename registers for partial-bit and bulk-bit writes

Also Published As

Publication number Publication date
CN101720460B (zh) 2013-02-13
EP2145249A1 (en) 2010-01-20
JP2010526383A (ja) 2010-07-29
US20080282066A1 (en) 2008-11-13
KR101528614B1 (ko) 2015-06-12
WO2008138781A1 (en) 2008-11-20
CN101720460A (zh) 2010-06-02
US7676653B2 (en) 2010-03-09
EP2145249B1 (en) 2015-12-09
KR20100017744A (ko) 2010-02-16

Similar Documents

Publication Publication Date Title
JP5222941B2 (ja) コンパクト命令セットの符号化
US5961628A (en) Load and store unit for a vector processor
EP1126368B1 (en) Microprocessor with non-aligned circular addressing
CN101681262B (zh) 用于执行线程的处理器及方法
JP2006004042A (ja) データ処理装置
US7401205B1 (en) High performance RISC instruction set digital signal processor having circular buffer and looping controls
JP3856737B2 (ja) データ処理装置
US20100146244A1 (en) Method for instructing a data processor to process data
US6832117B1 (en) Processor core for using external extended arithmetic unit efficiently and processor incorporating the same
KR100991700B1 (ko) 처리 장치, 처리 방법 및 컴퓨터로 판독가능한 기록 매체
EP1089167A2 (en) Processor architecture for executing two different fixed-length instruction sets
WO1990008355A1 (en) Microprocessor
JP2006500673A (ja) 処理装置、処理方法及びコンパイラ
JP3789583B2 (ja) データ処理装置
US7340591B1 (en) Providing parallel operand functions using register file and extra path storage
US6925548B2 (en) Data processor assigning the same operation code to multiple operations
US7051146B2 (en) Data processing systems including high performance buses and interfaces, and associated communication methods
US6857063B2 (en) Data processor and method of operation
JP2002229779A (ja) 情報処理装置
US7024540B2 (en) Methods and apparatus for establishing port priority functions in a VLIW processor
JP2006164279A (ja) プロセッサ・アーキテクチャ
US6389528B2 (en) Processor with a control instruction for sending control signals without interpretation for extension of instruction set
Pircher et al. Accelerator Interface for Patmos
JP2000029686A (ja) デ―タ処理装置及び命令フォ―マット
JP2004005738A (ja) データ処理装置及び命令セット拡張方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110420

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121023

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130123

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130212

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130311

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20160315

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 5222941

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250