JP2005227942A - プロセッサ及びコンパイラ - Google Patents

プロセッサ及びコンパイラ Download PDF

Info

Publication number
JP2005227942A
JP2005227942A JP2004034660A JP2004034660A JP2005227942A JP 2005227942 A JP2005227942 A JP 2005227942A JP 2004034660 A JP2004034660 A JP 2004034660A JP 2004034660 A JP2004034660 A JP 2004034660A JP 2005227942 A JP2005227942 A JP 2005227942A
Authority
JP
Japan
Prior art keywords
register
instruction
registers
processor
temporary
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.)
Granted
Application number
JP2004034660A
Other languages
English (en)
Other versions
JP4283131B2 (ja
Inventor
Takahiro Kageyama
貴洋 影山
Hideshi Nishida
英志 西田
Takeshi Tanaka
健 田中
Hiroji Nakajima
廣二 中嶋
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.)
Panasonic Holdings Corp
Original Assignee
Matsushita Electric Industrial Co 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 Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Priority to JP2004034660A priority Critical patent/JP4283131B2/ja
Priority to US10/949,230 priority patent/US7383422B2/en
Priority to CNB2004100817555A priority patent/CN1327340C/zh
Publication of JP2005227942A publication Critical patent/JP2005227942A/ja
Priority to US12/103,372 priority patent/US8738892B2/en
Application granted granted Critical
Publication of JP4283131B2 publication Critical patent/JP4283131B2/ja
Priority to US14/247,735 priority patent/US9697004B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
    • 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
    • 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
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3818Decoding for concurrent execution
    • G06F9/3822Parallel decoding, e.g. parallel decode units
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)

Abstract

【課題】 レジスタを指定するのに必要なビット数が少なくて済む縮小化された命令セットをもつVLIWプロセッサを提供する。
【解決手段】 レジスタファイル12、第1〜第3演算器14a〜14c演算器等を備え、長命令語を実行するVLIWプロセッサ10であって、長命令語には、レジスタファイル12の中から少なくとも1つを指定するレジスタ指定フィールドと複数の命令とが含まれ、各命令のオペランドには、レジスタ指定フィールドで指定されたレジスタをソースレジスタ及びデスティネーションレジスタとして使用するか否かを示すビットsrc1、src2、dstが含まれる。
【選択図】 図1

Description

本発明は、プロセッサ及びそのコンパイラに関し、特に、複数の命令を同時に実行するVLIWプロセッサ等に関する。
従来、複数の実行ユニットを備え、長命令語に含まれる複数の命令を各クロックサイクルで同時に実行するVLIWプロセッサが各種提案されている(たとえば、特許文献1参照)。
図15(a)は、従来のVLIWプロセッサが実行する長命令語の命令フォーマットの例を示す図である。ここでは、並列実行可能な3つの命令#1〜#3が置かれる3つの命令フィールドからなる長命令語が示されている。各命令フィールドは、レジスタ演算命令であれば、その演算の種類を示すオペコードと、演算の対象を示すオペランド(例えば、2つのソースレジスタsrc1及びsrc2と、1つのデスティネーションレジスタdstを指定するレジスタ指定部)とからなる。
図15(b)は、このような長命令語を実行する従来のVLIWプロセッサのアーキテクチャ(ここでは、レジスタへの入出力に着目したアーキテクチャ)の例を示す図である。ここでは、レジスタファイルと、3つの演算器を備えるアーキテクチャが示されている。
このような従来のVLIWプロセッサによって、例えば、2つのレジスタに格納された値を演算し、その結果を1つのレジスタに格納するというレジスタ演算命令が最大3つまで同時に実行され、処理の高速化が図られている。
特開2004−005733号公報
しかしながら、上記のような従来のVLIWプロセッサの長命令語は、図15(a)に示されるように、各命令フィールドについて最大3つのレジスタ指定部(src1、src2、dst)をもつために、1つの長命令語に含まれるレジスタ指定部の総ビット数が極めて大きくなるという問題ある。
たとえば、32個のレジスタからなるレジスタファイルを備えるVLIWプロセッサであれば、1つのレジスタを指定するのに5ビットが必要となるので、図15(a)に示された命令フォーマットであれば、各命令フィールドについて最大15ビットのレジスタ指定部、つまり、長命令語全体として、最大45ビットものレジスタ指定部が必要となる。そのために、VLIWプロセッサの命令パスに関連する回路の規模が大きくなってしまう。
さらに、図15(a)に示されるような命令フォーマットによれば、演算器の入力ポートに同時に接続するレジスタ数は最大6個となるために、図15(b)に示されるように、レジスタファイルに6個の出力ポートを設けておく必要があり、この点においても回路規模が大きくなってしまうという問題がある。
そこで、本発明は、このような問題点に鑑みてなされたものであり、レジスタを指定するのに必要なビット数が少なくて済む縮小化された命令セットをもつVLIWプロセッサ等を提供することを目的とする。
上記目的を達成するために、本発明に係るプロセッサは、複数のレジスタと複数の演算器を備える、長命令語を実行するプロセッサであって、前記長命令語には、前記複数のレジスタの中から少なくとも1つを指定するレジスタ指定フィールドと、前記演算器を用いた演算を指定する複数の命令と、前記レジスタ指定フィールドで指定されたレジスタと当該レジスタを使用する命令との対応関係を示すレジスタ割当情報とが含まれ、前記プロセッサはさらに、前記レジスタ指定フィールドで指定されたレジスタの値を出力する出力ポートと、前記レジスタ割当情報が示す対応関係に従って、前記出力ポートから出力された値が前記演算器に入力されるように選択制御をする入力選択制御手段とを備えることを特徴とする。つまり、ソースレジスタについて、長命令語に含まれる各命令のオペランド指定の共通化が図られている。
そして、前記プロセッサはさらに、前記レジスタ指定フィールドで指定されたレジスタに値を格納するための入力ポートと、前記レジスタ割当情報が示す対応関係に従って、前記演算器で得られた演算結果が前記入力ポートを介して前記レジスタに格納されるように選択制御をする出力選択制御手段とを備えてもよい。つまり、デスティネーションレジスタについても、長命令語に含まれる各命令のオペランド指定の共通化が図られていてもよい。
ここで、前記レジスタ割当情報は、前記複数の命令中のレジスタオペランドとして分散して配置され、各命令中のレジスタオペランドは、当該命令のソースレジスタ及びデスティネーションレジスタとして前記レジスタ指定フィールドで指定されたレジスタを使用するか否かを示す構成としてもよい。
これによって、長命令語には、各命令で使用されるレジスタをまとめて指定するレジスタ指定フィールドが置かれ、各命令中には、レジスタ指定フィールドで指定されたレジスタを使用するか否かを示す短い情報だけが置かれるので、長命令語のサイズがコンパクト化される。
そして、1つの長命令語で使用可能なレジスタの個数は、レジスタ指定フィールドで指定可能な個数に制限されるので、例えば、最高で3個のソースレジスタと1個のデスティネーションレジスタを使用することができると制限することで、レジスタファイルに設ける出力ポート及び入力ポートの個数が少なくて済む。
なお、前記レジスタ割当情報は、前記長命令語中の連続するビット位置に配置され、前記レジスタ指定フィールドで指定されたレジスタを使用する命令を前記複数の命令の中から特定する情報を含んでもよい。つまり、各命令のオペランドに関する情報を長命令語中の1箇所にまとめて配置する命令フォーマットであってもよい。
また、前記レジスタ指定フィールドは、複数のレジスタを指定し、前記レジスタ割当情報は、前記レジスタ指定フィールドで指定された複数のレジスタを予め定められた順序に従って前記複数の命令に割り当てる情報であってもよい。たとえば、前記レジスタ指定フィールドは、複数のレジスタを指定する複数のレジスタ部を含み、前記レジスタ割当情報は、前記長命令語における前記複数のレジスタ部の並び順と前記複数の命令の並び順とに従って、前記レジスタを重複することなく前記命令に割り当てていってもよい。つまり、レジスタ指定部の並び順及び命令フィールドの並び順で優先的にレジスタを暗黙的に割り当ててもよい。
また、前記プロセッサはさらに、前記演算器による演算結果を保持するテンポラリレジスタを備え、前記レジスタ指定フィールドは、前記複数のレジスタ及び前記テンポラリレジスタの中から少なくとも1つを指定してもよい。つまり、汎用レジスタだけでなく、演算結果を一時的に保持する専用のレジスタを各命令のオペランドの対象としてもよい。
ここで、前記プロセッサは、前記複数の演算器それぞれに対応する複数のテンポラリレジスタを備えてもよいし、前記テンポラリレジスタは、対応する前記演算器が新たな演算結果を生成する度に当該演算結果を新たに保持するパイプラインステージ間のレジスタであってもよいし、前記プロセッサは、前記複数の演算器のうちの2以上の演算器による演算結果を選択的に保持するテンポラリレジスタを備えてもよい。つまり、テンポラリレジスタとして、各演算器に固有のレジスタであってもよいし、パイプラインステージ間のレジスタであってもよいし、複数の演算器によって共用されるレジスタであってもよい。
また、上記目的を達成するために、本発明に係るコンパイラは、複数のレジスタと複数の演算器を備えるプロセッサを対象とし、命令列を長命令語列に変換するコンパイラであって、前記命令列を同時実行可能な複数の命令からなる命令グループに分類する命令グループ分類ステップと、分類された各命令グループを、当該命令グループで使用されるレジスタを指定するレジスタ指定フィールドと、前記複数の命令を特定する複数の命令コードと、前記レジスタ指定フィールドで指定されたレジスタと当該レジスタを使用する命令との対応関係を示すレジスタ割当情報とが含まれる長命令語フォーマットに変換するフォーマット変換ステップと、長命令語フォーマットに変換された各命令グループを対応する機械語に変換する機械語命令変換ステップとを含むことを特徴とする。つまり、通常のフォーマットの長命令語を本発明のプロセッサに固有のフォーマットに変換する特徴的なステップを含む。
ここで、前記命令グループ分類ステップは、前記レジスタ指定フィールドで指定可能なレジスタの個数を考慮することなく、前記演算器の個数を考慮して命令グループを生成するグループ化ステップと、生成された命令グループで使用されるレジスタの個数が前記レジスタ指定フィールドで指定可能なレジスタの個数を超えているか否かを判定する制約判定ステップと、超えていると判定された場合に、当該命令グループを、前記レジスタ指定フィールドで指定可能な個数のレジスタを用いる命令グループに分割する命令分割ステップとを含んでもよい。つまり、レジスタ制約を考慮することなく命令グループを作成し、レジスタ制約を違反した命令グループを分割する。
また、前記プロセッサはさらに、前記演算器による演算結果を保持するテンポラリレジスタを備え、前記レジスタ指定フィールドは、前記複数のレジスタ及び前記テンポラリレジスタの中から少なくとも1つを指定してもよい。このとき、前記コンパイラはさらに、前記複数のレジスタ及び前記テンポラリレジスタのうち、前記複数のレジスタだけを前記命令に割り付ける汎用レジスタ割付ステップと、前記レジスタが割り付けられた命令について、オペランドを前記テンポラリレジスタに置き換えることが可能か否かを判定する置換判定ステップと、置き換え可能と判定された命令のオペランドを前記テンポラリレジスタに置き換える置換ステップとを含む構成とすればよい。これによって、汎用レジスタだけでなく、テンポラリレジスタを含めて、共通のレジスタ指定フィールドを持つ特徴的な命令フォーマットの長命令語を生成するコンパイラが実現される。
本発明により、長命令語に含まれる各命令で使用されるレジスタをまとめて指定するレジスタ指定フィールドが長命令語に含まれ、長命令語に含まれる各命令のオペランドとしては、レジスタ指定フィールドで指定されたレジスタの使用に関する短い情報だけが配置されるので、長命令語のサイズが小さくなる。よって、命令メモリへのバス幅を減らす、もしくは命令メモリへのアクセス回数を減らす事が可能になるため、命令メモリへのバストラフィックが改善される事による性能の向上、および命令メモリアクセスによる消費電力を抑える事につながる。つまり、本発明のプロセッサは、長命令語のフェッチ、保持、解読等に関連する回路規模が小さくて済む。
また、長命令語で使用されるレジスタの総数は、レジスタ指定フィールドで指定されるレジスタの個数に限定されるので、その個数を小さい値とすることで、レジスタファイルに設けるべき出力ポートの数や入力ポートの数が少なくて済み、この点においても、プロセッサの回路規模が小さくて済む。
以上のように、本発明により、小さい回路規模で複数の演算を並列に実行するパフォーマンスの高いVLIWプロセッサが実現され、特に、機器組み込み用のプロセッサとして実用的価値が極めて高い。
以下、本発明に係るVLIWプロセッサ及びコンパイラについて図面を用いて詳細に説明する。
(実施の形態1)
図1は、実施の形態1におけるVLIWプロセッサが実行する長命令語の命令フォーマットを示す図である。本図に示されるように、この長命令語は、47ビット長であり、1つのレジスタ指定フィールドと3つの命令フィールドとから構成される。
レジスタ指定フィールドは、3つの命令フィールドで使用されるレジスタを指定する共通のフィールドであり、4つのレジスタ指定部(1つのデスティネーションレジスタdst、3つのソースレジスタsrcA〜Cを指定するビットフィールド)からなる。各レジスタ指定部dst、srcA〜Cは、本VLIWプロセッサが備える32個の汎用レジスタ(レジスタファイル)のうちの1個を指定するための5ビットからなる。
3つの命令フィールド(第1〜第3命令フィールド)は、並列実行可能な3つの命令(命令#1〜#3)を配置するフィールドであり、各命令フィールドには、レジスタ演算命令であれば、6ビットのオペコードと3ビットのオペランドが置かれる。
3ビットのオペランドは、その長命令語のレジスタ指定フィールドで指定されているレジスタを使用するか否かを示す。具体的には、オペランドの第1ビットsrc1は、レジスタ指定フィールドで指定されているソースレジスタ(srcA〜Cの1つ)を、その命令の第1ソースレジスタとして使用する(「1」)か否か(「0」)を示し、第2ビットsrc1は、レジスタ指定フィールドで指定されているソースレジスタ(srcA〜Cの1つ)を、その命令の第2ソースレジスタとして使用する(「1」)か否か(「0」)を示し、第3ビットdstは、レジスタ指定フィールドで指定されているデスティネーションレジスタdstを、その命令のデスティネーションレジスタとして使用する(「1」)か否か(「0」)を示す。
ここで、各命令で使用される具体的なレジスタの割り当てについては、以下のルールが存在する。つまり、
(1)レジスタ指定フィールドで指定された4つのレジスタ(dst、srcA〜C)は、その長命令語に含まれる3つの命令のいずれかによって使用され、2以上の命令によって重複的に使用されることはない。
(2)レジスタ指定フィールドで指定された3つのソースレジスタsrcA〜Cは、優先順位の高い方から、srcA、srcB、srcCの順で各命令によって使用される。
(3)レジスタ指定フィールドで指定された3つのソースレジスタsrcA〜Cは、優先順位の高い方から、命令#1、命令#2、命令#3の順で割り当てられる。
たとえば、命令#1〜命令#3のオペランド(src1、src2、dst)が、それぞれ、「100」、「111」、「000」である場合には、命令#1は、レジスタsrcAをソースとし、命令#2は、レジスタsrcB及びsrcCをソース、レジスタdstをデスティネーションとし、命令#3は、レジスタをオペランドに含まないことを意味する。
図2は、本実施の形態におけるVLIWプロセッサ10のハードウェア構成を示すブロック図である。なお、本図では、本VLIWプロセッサ10の特徴的な箇所、つまり、レジスタ演算に関連する構成要素だけが示され、メモリとのデータ転送を行う入出力ポート等の一般的な構成要素は省略されている。また、図中の実線は主にデータの流れを示し、破線は主に制御の流れを示す。
本図に示されるように、VLIWプロセッサ10は、命令レジスタ11、レジスタファイル12、入力セレクタ13、第1〜第3演算器14a〜14c、出力セレクタ15、解読器16を備える。
命令レジスタ11は、メモリからフェッチした長命令語を保持するレジスタである。
レジスタファイル12は、32個の汎用レジスタの集まりであり、命令レジスタ11に保持された長命令語のレジスタ指定フィールドにおける3つのソースレジスタ指定部srcA〜Cが示す3つのレジスタの値を入力セレクタ13に出力する3つの出力ポートと、その長命令語のレジスタ指定フィールドにおけるデスティネーションレジスタ指定部dstが示す1つのレジスタに出力セレクタ15から出力される値を格納するための1つの入力ポートを有する。
入力セレクタ13は、解読器16による制御の下で、レジスタファイル12から出力された3つの値を第1〜第3演算器14a〜14cのいずれかに振り分けて出力する。
第1〜第3演算器14a〜14cは、ALU等であり、最大2つの入力値を演算し、その結果を出力セレクタ15に出力する。
出力セレクタ15は、解読器16による制御の下で、第1〜第3演算器14a〜14cの中から選択した1つの演算器からの出力値をレジスタファイル12(命令レジスタ11に保持された長命令語のレジスタ指定フィールドにおけるデスティネーションレジスタ指定部dstが示す1つのレジスタ)に出力する。
解読器16は、命令レジスタ11に保持された長命令語に含まれる3つの命令を解読して各構成要素を制御する回路であり、例えば、3つの命令#1〜#3に含まれるソースレジスタ指定ビットsrc1及びsrc2に従って入力セレクタ13を制御するとともにデスティネーションレジスタ指定ビットdstに従って出力セレクタ15を制御することで、長命令語のレジスタ指定フィールドで指定されたレジスタが上記ルールに従って命令#1〜#3のソース又はデスティネーションとして使用されるように制御する。
次に、以上のように構成された本実施の形態におけるVLIWプロセッサ10の具体的な動作について説明する。
図3(a)は、長命令語の例を示す。ここでは、3つの命令#1〜#3を含む長命令語が示されている。命令#1(add r4、r1、r2)は、レジスタr1の値とレジスタr2の値とを加算し、その結果をレジスタr4に格納する命令であり、命令#2(st (0)、r3)は、レジスタr3の値をメモリの第0番地に格納する命令であり、命令#3(br AAA)は、番地AAAに分岐する命令である。
図3(b)は、図3(a)に示された長命令語のビットパターン(あるいは、その意味)を示す図である。図3(b)に示されるように、レジスタ指定フィールドのデスティネーションレジスタ指定部dstはレジスタr4を示し、ソースレジスタ指定部srcA〜Cはそれぞれレジスタr1、r2、r3を示し、命令#1はオペコード「add」とオペランド「111」を示し、命令#2はオペコード「st (0)」とオペランド「100」を示し、命令#3はオペコード「br AAA」とオペランド「000」を示している。
このような長命令語をフェッチしたVLIWプロセッサ10は、次の動作をする。
命令レジスタ11に保持された長命令語のレジスタ指定フィールドに含まれる3つのソースレジスタ指定部srcA〜Cの値に基づいて、レジスタファイル12は、3つのレジスタr1、r2、r3の格納値を3つの出力ポートを介して入力セレクタ13に出力する。同様に、デスティネーション指定部dstの値に基づいて、出力セレクタ15から出力される値が入力ポートを介してレジスタr4に入力されるように接続制御する。
一方、解読器16は、命令#1のオペランドが「111」であることから、ソースレジスタ指定部srcA及びsrcBで指定されたレジスタr1及びr2の値が第1演算器14aに入力されるように入力セレクタ13を制御するとともにその演算結果がデスティネーションレジスタ指定部dstで指定されたレジスタr4に格納されるように出力セレクタ15を制御し、命令#2のオペランドが「100」であることから、ソースレジスタ指定部srcCで指定されたレジスタr3の値が第2演算器14bに入力されるように入力セレクタ13を制御する。なお、レジスタ演算と関連しない制御(命令「st」に関るメモリ転送、命令「br」に関るプログラムカウンタの更新等)については、通常のVLIWプロセッサと同様の動作をする。
その結果、第1演算器14aにおいてレジスタr1の値とレジスタr2の値とが加算され、その結果がレジスタr4に格納され(つまり、「add r4、r1、r2」が実行され)、第2演算器14bにおいてレジスタr3の値が(第2演算器14bを通過した後に)メモリの第0番地に格納され、実行制御が番地AAAに分岐するという処理が並列実行される。
以上のように、本実施の形態におけるVLIWプロセッサ10によれば、長命令語には、各命令フィールドに共通のレジスタ指定部が置かれるとともに、各命令フィールドにはレジスタを使用するか否かを示す小さな情報だけが配置される。よって、命令サイズがコンパクト化され、本発明に係るVLIWプロセッサ10は、従来よりも小さな回路規模で実現され得る。さらに、本実施の形態におけるVLIWプロセッサ10のレジスタファイル12は、3つの出力ポートと1つの入力ポートを備えるだけで済むので、この点においてもハードウェアの複雑度が軽減される。
図4は、本発明に係るVLIWプロセッサ10をターゲットとするコンパイラ20の構成を示す機能ブロック図である。このコンパイラ20は、C言語等の高級言語で記述されたソースプログラム25をVLIWプロセッサ10用の機械語プログラム26に変換するコンパイラであり、中間言語変換部21、命令グループ化部22、フォーマット変換部23及び機械語命令変換部24から構成される。
中間言語変換部21は、高級言語で記述されたソースプログラム25を構文解析等することで、中間言語の命令列に変換する。ここで、中間言語は、このコンパイラ20に特有の言語であり、機械語命令に1対1に対応するアセンブラ命令に近い表現形式であるが、具体的なリソース(32個のレジスタ等)が割り当てられる前の論理的な表現形式で記述される。
命令グループ化部22は、中間言語変換部21で出力された命令列を長命令語の単位でグループ化することで、並列化スケジューリングを行う。このとき、VLIWプロセッサ10が備えるリソースの範囲内で可能な限り3つの命令が1つの長命令語にパック化されるようにグループ化する。たとえば、レジスタに関しては、ソースとして最大3個のレジスタが使用され、デスティネーションとして最大1個のレジスタが使用される範囲内で3つの命令を1つの長命令語にグループ化する。
フォーマット変換部23は、命令グループ化部22で生成された命令グループごとに、命令グループに含まれる複数の命令を、図1に示される命令フォーマットに変換する。つまり、1つの命令グループに含まれる複数の命令で使用される全てのレジスタを抽出することで、レジスタ指定フィールドを生成し、各命令が使用するレジスタとレジスタ指定フィールドとを対応づけることで、各命令中のオペランドを生成する。たとえば、図3(a)に示される3つの命令からなる命令グループを図3(b)に示されるフォーマットの長命令語に変換する。このときに、レジスタ等のリソースの割り当ても行う。
機械語命令変換部24は、フォーマット変換部23によるフォーマット変換が終わった長命令語の列に対して、長命令語に含まれる各命令を対応する機械語命令に置き換えることで、機械語プログラム26を生成する。
図5は、以上のように構成されたコンパイラ20の特徴的な動作を示すフローチャートである。ここでは、命令グループ化部22によるグループ化、つまり、図1に示される長命令語のフォーマットに依存する命令のグループ化の詳細な手順が示されている。
命令グループ化部22は、まず、中間言語変換部21から出力された命令列に対して、レジスタ制約(ここでは、1つの長命令語で使用されるソースレジスタの最大個数が3で、デスティネーションレジスタの最大個数が1)を考慮することなく、3つの命令が1つの長命令語にパック化されるように、グループ化を行う(S10)。
次に、命令グループ化部22は、いまグループ化した長命令語について、上記レジスタ制約が満たされているか否かを判定する(S11)。
その結果、レジスタ制約が満たされていない場合には(S12でNo)、その長命令語を、レジスタ制約が満たされた長命令語の集まりとなるように、分割する(S13)。
たとえば、2つのソースレジスタと1つのデスティネーションレジスタを使用する命令#1と、1つのソースレジスタを使用する命令#2と、2つのソースレジスタと1つのデスティネーションレジスタを使用する命令#3とがパック化された長命令語については、レジスタ制約が満たされていないので、例えば、命令#1及び命令#2からなる第1の長命令語と、命令#2だけからなる第2の長命令語に分割する。なお、分割によって得られた長命令語のうち、レジスタ制約に余裕がある長命令語(例えば、上記例における第2の長命令語)については、上記ステップS10以下を繰り返すことで、他の命令とのパック化の対象としてもよい。
以上のように、本実施の形態におけるコンパイラ20によれば、ソースプログラム25からVLIWプロセッサ10用の機械語プログラム26が生成される。つまり、VLIWプロセッサ10の長命令語の命令フォーマットに依存するレジスタ制約を考慮した長命令語列が生成される。
なお、本実施の形態のVLIWプロセッサ10では、長命令語のレジスタ指定フィールドで指定された4つのレジスタを各命令が重複して使用しないこととなっていたが(ルール(1))、若干のハードウェア規模の増大を許容するならば、この制約を外してもよい。たとえば、レジスタ指定フィールドで指定しているレジスタr1を命令#1と命令#2がソースレジスタとして同時に使用してもよい。この場合には、各命令のソースレジスタ指定部及びオペランド指定部として、srcA〜Cのいずれかを特定する2ビットを割り当てればよい。レジスタを指定するために各命令中に5ビットが必要とされた従来の長命令語よりも命令サイズが全体として縮小化されることには変りない。
また、本実施の形態の長命令語では、各命令中のオペランドがレジスタ指定フィールドで指定されたレジスタを使用するか否かを示したが、レジスタを使用しない場合には、そのことをオペコードが示すように命令マップを定義してもよい。たとえば、オペコードによって、その命令が使用するソースレジスタ及びデスティネーションレジスタの個数が特定され、オペランドでは、その個数に対応した可変長のビット数が割り当てられるように命令マップを定義してもよい。
(実施の形態2)
次に、本発明の実施の形態2におけるVLIWプロセッサ及びコンパイラについて説明する。本実施の形態におけるVLIWプロセッサは、実施の形態1と同様の特徴的な命令フォーマットの長命令語を実行するプロセッサであるが、レジスタファイルとは別個に、演算結果を一時的に格納するテンポラリレジスタをさらに備えることを特徴とする。以下、実施の形態1と異なる点を中心に説明する。
図6は、実施の形態2におけるVLIWプロセッサが実行する長命令語の命令フォーマットを示す図である。本図に示されるように、この長命令語は、56ビット長であり、1つのレジスタ指定フィールドと3つの命令フィールドとから構成される。
レジスタ指定フィールドを構成する各レジスタ指定部dst、srcA〜Cは、それぞれ、本実施の形態のVLIWプロセッサが備える32個の汎用レジスタのうちの1個を指定するための5ビットからなる点で実施の形態1と同様であるが、各命令フィールドのオペランドが6ビットである点で実施の形態1と異なる。
6ビットのオペランドは、第1ソースレジスタを指定する2ビットの第1ソース指定部src1と、第2ソースレジスタを指定する2ビットの第2ソース指定部src2と、デスティネーションレジスタを指定する2ビットのデスティネーション指定部dstとからなる。
2ビットの各指定部src1、src2及びdstのうちの第1ビット(各2ビットのうちの上位ビット)は、実施の形態1における各命令フィールドのオペランドと同様であり、その長命令語のレジスタ指定フィールド(dst、srcA〜C)で指定されているレジスタ(つまり、汎用レジスタ)を使用するか否かを示す。一方、第2ビット(各2ビットのうちの下位ビット)は、本実施の形態におけるVLIWプロセッサが備える3つのテンポラリレジスタのうち、その命令フィールドに対応するテンポラリレジスタを使用する(「1」)か否か(「0」)を示す。
たとえば、命令#1のソース指定部src1が「01」であれば、その命令#1は、第1演算器用のテンポラリレジスタをソースレジスタとして使用することを意味し、命令#2のデスティネーション指定部dstが「01」であれば、その命令#2は、第2演算器用のテンポラリレジスタをデスティネーションレジスタとして使用することを意味し、命令#3のソース指定部src2が「10」であれば、その命令#3は、その長命令語のレジスタ指定フィールドで指定されたレジスタをソースレジスタとして使用することを意味する。
図7は、本実施の形態におけるVLIWプロセッサ30のハードウェア構成を示すブロック図である。本図に示されるように、VLIWプロセッサ30は、命令レジスタ31、レジスタファイル12、入力セレクタ33、第1〜第3演算器14a〜14c、出力セレクタ15、解読器36及び3つのテンポラリレジスタ37a〜37cを備える。なお、実施の形態1と同様の構成要素には同一の符号を付し、その説明を省略する。
命令レジスタ31は、メモリからフェッチした56ビット長の長命令語を保持するレジスタである。
入力セレクタ33は、解読器36による制御の下で、レジスタファイル12から出力された3つの値及び3つのテンポラリレジスタ37a〜37cから出力された値を第1〜第3演算器14a〜14cのいずれかに振り分けて出力する。
解読器36は、命令レジスタ31に保持された長命令語に含まれる3つの命令を解読して各構成要素を制御する回路であり、例えば、3つの命令#1〜#3に含まれるソースレジスタ指定ビットsrc1及びsrc2に従って入力セレクタ33及びテンポラリレジスタ37a〜37cへの格納を制御するとともにデスティネーションレジスタ指定ビットdstに従って出力セレクタ15を制御することで、長命令語のレジスタ指定フィールドで指定されたレジスタ及びテンポラリレジスタ37a〜37cが上記ルールに従って命令#1〜#3のソース又はデスティネーションとして使用されるように制御する。
テンポラリレジスタ37a〜37cは、それぞれ、第1〜第3演算器14a〜14cの演算結果を一時的に格納するレジスタであり、解読器36からの格納指示を受けたときにだけ、演算結果を取り込む。
次に、以上のように構成された本実施の形態におけるVLIWプロセッサ30の具体的な動作について説明する。
図8(a)は、長命令語の例を示す。ここでは、3つの命令#1〜#3を含む長命令語が示されている。命令#1(add r8、RegA、r2)は、テンポラリレジスタ37a(RegA)の値とレジスタr2の値とを加算し、その結果をレジスタr8に格納する命令であり、命令#2(not RegB、r5)は、レジスタr5の値を反転し、その結果をテンポラリレジスタ37b(RegB)に格納する命令であり、命令#3(st (0)、r1)は、レジスタr1の値をメモリの第0番地に格納する命令である。
図8(b)は、図8(a)に示された長命令語のビットパターン(あるいは、その意味)を示す図である。図8(b)に示されるように、レジスタ指定フィールドのデスティネーションレジスタ指定部dstはレジスタr8を示し、ソースレジスタ指定部srcA〜Cはそれぞれレジスタr2、r5、r1を示し、命令#1はオペコード「add」とオペランド「011010」を示し、命令#2はオペコード「not」とオペランド「100001」を示し、命令#3はオペコード「st (0)」とオペランド「100000」を示している。
このような長命令語をフェッチしたVLIWプロセッサ30は、次の動作をする。
命令レジスタ31に保持された長命令語のレジスタ指定フィールドに含まれる3つのソースレジスタ指定部srcA〜Cの値に基づいて、レジスタファイル12は、3つのレジスタr2、r5、r1の格納値を3つの出力ポートを介して入力セレクタ33に出力する。同様に、デスティネーション指定部dstの値に基づいて、出力セレクタ15から出力される値が入力ポートを介してレジスタr8に入力されるように接続制御する。
一方、解読器36は、命令#1のオペランドが「011010」であることから、テンポラリレジスタ37aの値及びソースレジスタ指定部srcAで指定されたレジスタr2の値が第1演算器14aに入力されるように入力セレクタ33を制御するとともにその演算結果がデスティネーションレジスタ指定部dstで指定されたレジスタr8に格納されるように出力セレクタ15を制御し、命令#2のオペランドが「100001」であることから、ソースレジスタ指定部srcBで指定されたレジスタr5の値が第2演算器14bに入力されるように入力セレクタ33を制御するとともにその演算結果がテンポラリレジスタ37bに格納されるようにテンポラリレジスタ37bを制御し、命令#3のオペランドが「100000」であることから、ソースレジスタ指定部srcCで指定されたレジスタr1の値が第3演算器14cに入力されるように入力セレクタ33を制御する。
その結果、第1演算器14aにおいてテンポラリレジスタ37a(RegA)の値とレジスタr2の値とが加算され、その結果がレジスタr8に格納され(つまり、「add r8、RegA、r2」が実行され)、第2演算器14bにおいてレジスタr5の値が反転され、その結果がテンポラリレジスタ37b(RegB)に格納され(つまり、「not RegB、r5」が実行され)、第3演算器14cにおいてレジスタr1の値が(第3演算器14cを通過した後に)メモリの第0番地に格納されという処理が並列実行される。
以上のように、本実施の形態におけるVLIWプロセッサ30によれば、長命令語には、各命令フィールドに共通のレジスタ指定部が置かれるとともに、各命令フィールドには汎用レジスタ及びテンポラリレジスタを使用するか否かを示す小さな情報だけが配置される。よって、実施の形態1と同様に、命令サイズがコンパクト化され、本発明に係るVLIWプロセッサ30は、従来よりも小さな回路規模で実現され得る。さらに、本実施の形態におけるVLIWプロセッサ30のレジスタファイル12は、3つの出力ポートと1つの入力ポートを備えるだけで済むので、この点においてもハードウェアの複雑度が軽減される。
また、本実施の形態におけるVLIWプロセッサ30は、演算結果を一時的に格納するテンポラリレジスタを備えるので、32個の汎用レジスタだけを備える実施の形態1に比べ、レジスタ制約が緩やかとなり、長命令語のパック化率、つまり、命令の並列度が向上され得る。
図9(a)及び(b)は、本実施の形態におけるVLIWプロセッサ30が備えるテンポラリレジスタ37a〜37cの効果を説明するための図であり、図9(a)は、テンポラリレジスタを使用しないときのプログラムリストを示し、図9(b)は、テンポラリレジスタを使用した同一処理内容のプログラムリストを示す。
これら2つのプログラムを比較して分かるように、テンポラリレジスタを使用することで、必要な汎用レジスタの個数が減少し、第2〜第5命令の3つの命令を1つの長命令語(この長命令語は図8に示されたものと同一)にパック化することが可能となっている。つまり、図9(a)に示された第2〜第5命令の3つの命令に着目すると、合計4つのソースレジスタと2つのデスティネーションレジスタを使用しているのでレジスタ制約(最高3つのソースレジスタと1つのデスティネーションレジスタ)を満たしていないが、図9(b)に示された第2〜第5命令の3つの命令はレジスタ制約を満たしている。したがって、テンポラリレジスタを割り当てることで、3つの命令を1つの長命令語にまとめることが可能となり、命令の並列化の度合いが向上している。
なお、本実施の形態におけるVLIWプロセッサ30をターゲットとするコンパイラは、基本的には、実施の形態1と同様の機能構成を備える。ただし、本実施の形態におけるコンパイラの命令グループ化部は、実施の形態1の機能に加えて、テンポラリレジスタ37a〜37cの割り付けを考慮した命令のグループ化を行う。
図10は、本実施の形態におけるコンパイラの命令グループ化部によるテンポラリレジスタを考慮したグループ化の詳細な手順が示されている。
命令グループ化部は、まず、中間言語変換部21から出力された命令列に対して、レジスタ制約(ここでは、1つの長命令語で使用されるソースレジスタの最大個数が3で、デスティネーションレジスタの最大個数が1)を考慮することなく、3つの命令が1つの長命令語にパック化されるように、グループ化を行う(S20)。
次に、命令グループ化部は、いまグループ化した長命令語について、上記レジスタ制約が満たされているか否かを判定する(S21)。このとき、オペランドのレジスタについて、テンポラリレジスタを使用することが可能か否かも検討する。つまり、命令列において、演算結果をレジスタに格納し、その後にそのレジスタを参照している箇所があるときには、そのレジスタをテンポラリレジスタに割り当てることによって、可能な限り、上記レジスタ制約が満たされるように検討する。
その結果、テンポラリレジスタを使用することによってレジスタ制約が満たされる場合には(S22でYes)、汎用レジスタをテンポラリレジスタに置き換え(S24)、レジスタ制約が満たされない場合には(S22でNo)、その長命令語を、レジスタ制約が満たされた長命令語の集まりとなるように、分割する(S23)。これによって、可能な限りテンポラリレジスタを使用した機械語プログラム26が生成される。
以上のように、本実施の形態におけるコンパイラによれば、ソースプログラム25からVLIWプロセッサ30用の機械語プログラム26が生成される。つまり、VLIWプロセッサ30の長命令語の命令フォーマットに依存するレジスタ制約を考慮し、かつ、可能な限りテンポラリレジスタを使用した並列度の高い長命令語列が生成される。
なお、本実施の形態のVLIWプロセッサ30では、第1〜第3演算器14a〜14cごとに、それぞれ、1個のテンポラリレジスタ37a〜37cが備えられていたが、図11に示されるVLIWプロセッサのように、2以上の演算器が1つのテンポラリレジスタを共用する構成であってもよい。この場合には、同一の長命令語内の2以上の命令によって共用テンポラリレジスタに同時に演算結果を格納することがないように、また、共用テンポラリレジスタの生存区間において、その値が共用している演算器によって破壊されることがないように、コンパイラが保証すればよい。
また、本実施の形態のVLIWプロセッサ30では、第1〜第3演算器14a〜14cからの演算結果をテンポラリレジスタ37a〜37cに格納するか否かが選択可能であったが、図12に示される回路図のように、演算結果をテンポラリレジスタに常に格納する構成であってもよい。言い換えると、演算結果をラッチするようなパイプライン間のレジスタを本実施の形態のテンポラリレジスタとして使用してもよい。このようなレジスタは、演算器からの出力値を保持した後、演算器が次の新たな演算を実行するまでの間、その値を保持し続けているので、この期間において、本実施の形態におけるテンポラリレジスタと同様の扱いをすることができるからである。
以上、本発明に係るVLIWプロセッサ及びコンパイラについて、実施の形態に基づいて説明したが、本発明は、これらの実施の形態に限定されるものではない。
たとえば、上記実施の形態では、長命令語の各命令中にオペランドレジスタの使用に関する情報(使用する/しない)が置かれたが、本発明は、このような命令フォーマットだけに限られず、図13(a)に示される命令フォーマットのように、各命令のオペランドレジスタの割り当てに関する情報だけをまとめたレジスタ割当フィールドを長命令語に設けてもよい。
図13(a)に示される命令フォーマットは、図1に示される命令フォーマットの変形例に相当し、例えば、長命令語の最下位5ビットに、命令#1〜命令#3のオペランドレジスタの割り当てルールを示すレジスタ割当フィールドが置かれている。このレジスタ割当フィールドは、ソースレジスタの割り当てを指定する3ビットのソース指定部srcとデスティネーションレジスタの割り当てを指定する2ビットのデスティネーション指定部dstからなる。ソース指定部srcは、図13(b)に示されるように、命令#1〜命令#3それぞれで使用するソースレジスタの個数の組み合わせを示し、デスティネーション指定部dstは、デスティネーションレジスタを使用する命令の位置(「命令#1」、「命令#2」、「命令#3」、「いずれも命令も使用せず」等)を示す。このような割り当てルールを示すレジスタ割当フィールドを長命令語中に配置することで、各命令中にレジスタオペランドに関する情報を配置する必要がなくなり、全体として、長命令語のサイズが縮小され得る。
また、実施の形態2では、テンポラリレジスタを使用する命令フォーマットの例として、図6及び図8(b)に示されたが、本発明は、このような命令フォーマットに限定されるのではない。たとえば、図14に示されるように、各命令のオペランドを5ビットで構成してもよい。図14は、図8(b)と同一内容の他の命令フォーマットの例を示している。ここでは、5ビットのオペランドは、上位から、2ビットの各ソース指定部src1、src2と、1ビットのデスティネーション指定部dstとからなる。2ビットの各ソース指定部src1、src2は汎用レジスタまたはどのテンポラリレジスタをソースレジスタとして使用するかを示し、デスティネーション指定部dstは汎用レジスタまたは各演算器付属のテンポラリレジスタのどちらを使用するかを示す。なお、レジスタ指定を行う必要がないという情報はオペコード部に含まれる。この命令フォーマットによれば、いずれの命令#1〜#3であっても、ソースレジスタとして指定できるテンポラリレジスタは、その位置に対応するテンポラリレジスタに制限されることがない(いずれのテンポラリレジスタRegA〜Cをも指定することができる)。
また、上記実施の形態では、長命令語に3つの命令が含まれたが、本発明は、このような並列度に限定されるものではなく、4つの命令や、それ以上の命令が含まれてもよい。並列度が大きくなるほど、本発明の命令フォーマットによる効果(命令サイズの縮小化)が顕著となってくる。
本発明に係るプロセッサは、複数の命令を同時に実行するVLIWプロセッサ等として、特に、小さな回路規模で高い処理性能が要求されるプロセッサとして、例えば、DVDプレーヤや携帯電話機等の電子機器に組み込まれるプロセッサとして利用することができる。
実施の形態1におけるVLIWプロセッサが実行する長命令語の命令フォーマットを示す図である。 VLIWプロセッサのハードウェア構成を示すブロック図である。 (a)は、長命令語の例を示し、(b)は、そのビットパターン(あるいは、その意味)を示す図である。 本発明に係るVLIWプロセッサをターゲットとするコンパイラの構成を示す機能ブロック図である。 コンパイラの特徴的な動作を示すフローチャートである。 実施の形態2におけるVLIWプロセッサが実行する長命令語の命令フォーマットを示す図である。 VLIWプロセッサのハードウェア構成を示すブロック図である。 (a)は、長命令語の例を示し、(b)は、そのビットパターン(あるいは、その意味)を示す図である。 (a)は、テンポラリレジスタを使用しないときのプログラムリストを示し、(b)は、テンポラリレジスタを使用した同一内容のプログラムリストを示す。 実施の形態2におけるコンパイラの命令グループ化部によるテンポラリレジスタを考慮したグループ化の詳細な手順を示すフローチャートである。 テンポラリレジスタを共用するVLIWプロセッサのハードウェア構成を示すブロック図である。 パイプラインステージ間のレジスタをテンポラリレジスタとするVLIWプロセッサのハードウェア構成を示すブロック図である。 各命令のオペランドレジスタの割り当てに関する情報をまとめたレジスタ割当フィールドをもつ長命令語の命令フォーマットの例を示す図である。 テンポラリレジスタの指定が可能な命令フォーマットの他の例を示す図である。 (a)は、従来のVLIWプロセッサが実行する長命令語の命令フォーマットの例を示す図であり、(b)は、このような長命令語を実行する従来のVLIWプロセッサのアーキテクチャの例を示す図である。
符号の説明
10、30 VLIWプロセッサ
11、31 命令レジスタ
12 レジスタファイル
13、33 入力セレクタ
14a〜14c 演算器
15 出力セレクタ
16、36 解読器
20 コンパイラ
21 中間言語変換部
22 命令グループ化部
23 フォーマット変換部
24 機械語命令変換部
25 ソースプログラム
26 機械語プログラム
37a〜37c テンポラリレジスタ

Claims (14)

  1. 複数のレジスタと複数の演算器を備える、長命令語を実行するプロセッサであって、
    前記長命令語には、前記複数のレジスタの中から少なくとも1つを指定するレジスタ指定フィールドと、前記演算器を用いた演算を指定する複数の命令と、前記レジスタ指定フィールドで指定されたレジスタと当該レジスタを使用する命令との対応関係を示すレジスタ割当情報とが含まれ、
    前記プロセッサはさらに、
    前記レジスタ指定フィールドで指定されたレジスタの値を出力する出力ポートと、
    前記レジスタ割当情報が示す対応関係に従って、前記出力ポートから出力された値が前記演算器に入力されるように選択制御をする入力選択制御手段とを備える
    ことを特徴とするプロセッサ。
  2. 前記プロセッサはさらに、
    前記レジスタ指定フィールドで指定されたレジスタに値を格納するための入力ポートと、
    前記レジスタ割当情報が示す対応関係に従って、前記演算器で得られた演算結果が前記入力ポートを介して前記レジスタに格納されるように選択制御をする出力選択制御手段とを備える
    ことを特徴とする請求項1記載のプロセッサ。
  3. 前記レジスタ割当情報は、前記複数の命令中のレジスタオペランドとして分散して配置され、
    各命令中のレジスタオペランドは、当該命令のソースレジスタ及びデスティネーションレジスタとして前記レジスタ指定フィールドで指定されたレジスタを使用するか否かを示す
    ことを特徴とする請求項1記載のプロセッサ。
  4. 前記レジスタ割当情報は、前記長命令語中の連続するビット位置に配置され、前記レジスタ指定フィールドで指定されたレジスタを使用する命令を前記複数の命令の中から特定する情報を含む
    ことを特徴とする請求項1記載のプロセッサ。
  5. 前記レジスタ指定フィールドは、複数のレジスタを指定し、
    前記レジスタ割当情報は、前記レジスタ指定フィールドで指定された複数のレジスタを予め定められた順序に従って前記複数の命令に割り当てる情報である
    ことを特徴とする請求項1記載のプロセッサ。
  6. 前記レジスタ指定フィールドは、複数のレジスタを指定する複数のレジスタ部を含み、
    前記レジスタ割当情報は、前記長命令語における前記複数のレジスタ部の並び順と前記複数の命令の並び順とに従って、前記レジスタを重複することなく前記命令に割り当てていく
    ことを特徴とする請求項5記載のプロセッサ。
  7. 前記プロセッサはさらに、前記演算器による演算結果を保持するテンポラリレジスタを備え、
    前記レジスタ指定フィールド及び前記レジスタ割当情報の少なくとも1つは、前記複数のレジスタ及び前記テンポラリレジスタの中から少なくとも1つを指定する
    ことを特徴とする請求項1記載のプロセッサ。
  8. 前記プロセッサは、前記複数の演算器それぞれに対応する複数のテンポラリレジスタを備える
    ことを特徴とする請求項7記載のプロセッサ。
  9. 前記テンポラリレジスタは、対応する前記演算器が新たな演算結果を生成する度に当該演算結果を新たに保持するパイプラインステージ間のレジスタである
    ことを特徴とする請求項8記載のプロセッサ。
  10. 前記プロセッサは、前記複数の演算器のうちの2以上の演算器による演算結果を選択的に保持するテンポラリレジスタを備える
    ことを特徴とする請求項7記載のプロセッサ。
  11. 複数のレジスタと複数の演算器を備えるプロセッサを対象とし、命令列を長命令語列に変換するコンパイラであって、
    前記命令列を同時実行可能な複数の命令からなる命令グループに分類する命令グループ分類ステップと、
    分類された各命令グループを、当該命令グループで使用されるレジスタを指定するレジスタ指定フィールドと、前記複数の命令を特定する複数の命令コードと、前記レジスタ指定フィールドで指定されたレジスタと当該レジスタを使用する命令との対応関係を示すレジスタ割当情報とが含まれる長命令語フォーマットに変換するフォーマット変換ステップと、
    長命令語フォーマットに変換された各命令グループを対応する機械語に変換する機械語命令変換ステップと
    を含むことを特徴とするコンパイラ。
  12. 前記命令グループ分類ステップは、
    前記レジスタ指定フィールドで指定可能なレジスタの個数を考慮することなく、前記演算器の個数を考慮して命令グループを生成するグループ化ステップと、
    生成された命令グループで使用されるレジスタの個数が前記レジスタ指定フィールドで指定可能なレジスタの個数を超えているか否かを判定する制約判定ステップと、
    超えていると判定された場合に、当該命令グループを、前記レジスタ指定フィールドで指定可能な個数のレジスタを用いる命令グループに分割する命令分割ステップとを含む
    ことを特徴とする請求項11記載のコンパイラ。
  13. 前記プロセッサはさらに、前記演算器による演算結果を保持するテンポラリレジスタを備え、
    前記レジスタ指定フィールドは、前記複数のレジスタ及び前記テンポラリレジスタの中から少なくとも1つを指定する
    ことを特徴とする請求項11記載のコンパイラ。
  14. 前記コンパイラはさらに、
    前記複数のレジスタ及び前記テンポラリレジスタのうち、前記複数のレジスタだけを前記命令に割り付ける汎用レジスタ割付ステップと、
    前記レジスタが割り付けられた命令について、オペランドを前記テンポラリレジスタに置き換えることが可能か否かを判定する置換判定ステップと、
    置き換え可能と判定された命令のオペランドを前記テンポラリレジスタに置き換える置換ステップとを含む
    ことを特徴とする請求項13記載のコンパイラ。
JP2004034660A 2004-02-12 2004-02-12 プロセッサ及びコンパイル方法 Expired - Fee Related JP4283131B2 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP2004034660A JP4283131B2 (ja) 2004-02-12 2004-02-12 プロセッサ及びコンパイル方法
US10/949,230 US7383422B2 (en) 2004-02-12 2004-09-27 Very long instruction word (VLIW) computer having an efficient instruction code format
CNB2004100817555A CN1327340C (zh) 2004-02-12 2004-12-30 处理器和编译器
US12/103,372 US8738892B2 (en) 2004-02-12 2008-04-15 Very long instruction word (VLIW) computer having efficient instruction code format
US14/247,735 US9697004B2 (en) 2004-02-12 2014-04-08 Very-long instruction word (VLIW) processor and compiler for executing instructions in parallel

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004034660A JP4283131B2 (ja) 2004-02-12 2004-02-12 プロセッサ及びコンパイル方法

Publications (2)

Publication Number Publication Date
JP2005227942A true JP2005227942A (ja) 2005-08-25
JP4283131B2 JP4283131B2 (ja) 2009-06-24

Family

ID=34836184

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004034660A Expired - Fee Related JP4283131B2 (ja) 2004-02-12 2004-02-12 プロセッサ及びコンパイル方法

Country Status (3)

Country Link
US (3) US7383422B2 (ja)
JP (1) JP4283131B2 (ja)
CN (1) CN1327340C (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007145319A1 (ja) * 2006-06-15 2007-12-21 Nec Corporation プロセッサ、および、命令制御方法
JP2009516238A (ja) * 2005-10-05 2009-04-16 クゥアルコム・インコーポレイテッド Vliwアーキテクチャを有する他のdspのための高速dctアルゴリズム
JP2009230375A (ja) * 2008-03-21 2009-10-08 Fujitsu Ltd 演算装置および演算方法

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2370380B (en) 2000-12-19 2003-12-31 Picochip Designs Ltd Processor architecture
GB2420884B (en) * 2004-12-03 2009-04-15 Picochip Designs Ltd Processor architecture
GB2454865B (en) * 2007-11-05 2012-06-13 Picochip Designs Ltd Power control
EP2210171A1 (en) * 2007-11-05 2010-07-28 Sandbridge Technologies, Inc. Method of encoding register instruction fields
KR101418969B1 (ko) * 2008-02-27 2014-08-13 삼성전자주식회사 프로세서 및 컴파일 방법
US8458439B2 (en) * 2008-12-16 2013-06-04 International Business Machines Corporation Block driven computation using a caching policy specified in an operand data structure
US8285971B2 (en) * 2008-12-16 2012-10-09 International Business Machines Corporation Block driven computation with an address generation accelerator
US8327345B2 (en) * 2008-12-16 2012-12-04 International Business Machines Corporation Computation table for block computation
US8407680B2 (en) * 2008-12-16 2013-03-26 International Business Machines Corporation Operand data structure for block computation
US8281106B2 (en) * 2008-12-16 2012-10-02 International Business Machines Corporation Specifying an addressing relationship in an operand data structure
JP5576605B2 (ja) * 2008-12-25 2014-08-20 パナソニック株式会社 プログラム変換装置およびプログラム変換方法
GB2466661B (en) * 2009-01-05 2014-11-26 Intel Corp Rake receiver
GB2470037B (en) 2009-05-07 2013-07-10 Picochip Designs Ltd Methods and devices for reducing interference in an uplink
GB2470771B (en) 2009-06-05 2012-07-18 Picochip Designs Ltd A method and device in a communication network
GB2470891B (en) 2009-06-05 2013-11-27 Picochip Designs Ltd A method and device in a communication network
GB2474071B (en) 2009-10-05 2013-08-07 Picochip Designs Ltd Femtocell base station
CA2726566A1 (en) * 2010-01-11 2011-07-11 Baxter International Inc. Pipette system, pipette tip assembly and kit
US8495341B2 (en) * 2010-02-17 2013-07-23 International Business Machines Corporation Instruction length based cracking for instruction of variable length storage operands
KR20110103256A (ko) * 2010-03-12 2011-09-20 삼성전자주식회사 다중 입출력 오퍼레이션 지원 프로세서 및 그 방법
GB2482869B (en) 2010-08-16 2013-11-06 Picochip Designs Ltd Femtocell access control
GB2489919B (en) 2011-04-05 2018-02-14 Intel Corp Filter
GB2489716B (en) 2011-04-05 2015-06-24 Intel Corp Multimode base system
US9910823B2 (en) 2011-05-16 2018-03-06 Cypress Semiconductor Corporation Stack processor using a ferroelectric random access memory (F-RAM) having an instruction set optimized to minimize memory fetch
US9588881B2 (en) * 2011-05-16 2017-03-07 Cypress Semiconductor Corporation Stack processor using a ferroelectric random access memory (F-RAM) for code space and a portion of the stack memory space having an instruction set optimized to minimize processor stack accesses
GB2491098B (en) 2011-05-16 2015-05-20 Intel Corp Accessing a base station
JP5813484B2 (ja) 2011-11-30 2015-11-17 ルネサスエレクトロニクス株式会社 Vliwプロセッサと命令構造と命令実行方法
TWI464583B (zh) * 2012-03-02 2014-12-11 Wistron Corp 取得觸發功能之指令的方法
US9513915B2 (en) * 2012-03-28 2016-12-06 International Business Machines Corporation Instruction merging optimization
US9395988B2 (en) * 2013-03-08 2016-07-19 Samsung Electronics Co., Ltd. Micro-ops including packed source and destination fields
US9430369B2 (en) 2013-05-24 2016-08-30 Coherent Logix, Incorporated Memory-network processor with programmable optimizations
CN106293627B (zh) * 2016-07-27 2019-01-11 珠海市杰理科技股份有限公司 寄存器调用及调用指令编码的方法、装置
KR102593320B1 (ko) * 2016-09-26 2023-10-25 삼성전자주식회사 전자 장치, 프로세서 및 그 제어 방법
US11593110B2 (en) 2021-01-07 2023-02-28 Texas Instruments Incorporated Instruction packing scheme for VLIW CPU architecture
CN115113933B (zh) * 2022-08-25 2022-11-15 旋智电子科技(上海)有限公司 用于加速数据运算的装置

Family Cites Families (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5333280A (en) * 1990-04-06 1994-07-26 Nec Corporation Parallel pipelined instruction processing system for very long instruction word
CA2045773A1 (en) * 1990-06-29 1991-12-30 Compaq Computer Corporation Byte-compare operation for high-performance processor
DE69129569T2 (de) * 1990-09-05 1999-02-04 Philips Electronics Nv Maschine mit sehr langem Befehlswort für leistungsfähige Durchführung von Programmen mit bedingten Verzweigungen
JPH05233281A (ja) * 1992-02-21 1993-09-10 Toshiba Corp 電子計算機
EP0605927B1 (en) 1992-12-29 1999-07-28 Koninklijke Philips Electronics N.V. Improved very long instruction word processor architecture
US6002880A (en) 1992-12-29 1999-12-14 Philips Electronics North America Corporation VLIW processor with less instruction issue slots than functional units
WO1994027216A1 (en) * 1993-05-14 1994-11-24 Massachusetts Institute Of Technology Multiprocessor coupling system with integrated compile and run time scheduling for parallelism
SG44642A1 (en) * 1994-01-10 1997-12-19 Dow Chemical Co A massively multiplexed superscalar harvard architecture computer
US5600810A (en) * 1994-12-09 1997-02-04 Mitsubishi Electric Information Technology Center America, Inc. Scaleable very long instruction word processor with parallelism matching
US6401190B1 (en) * 1995-03-17 2002-06-04 Hitachi, Ltd. Parallel computing units having special registers storing large bit widths
US5669001A (en) * 1995-03-23 1997-09-16 International Business Machines Corporation Object code compatible representation of very long instruction word programs
JP2931890B2 (ja) * 1995-07-12 1999-08-09 三菱電機株式会社 データ処理装置
JP3623840B2 (ja) * 1996-01-31 2005-02-23 株式会社ルネサステクノロジ データ処理装置及びマイクロプロセッサ
US5826054A (en) * 1996-05-15 1998-10-20 Philips Electronics North America Corporation Compressed Instruction format for use in a VLIW processor
WO1998006042A1 (en) * 1996-08-07 1998-02-12 Sun Microsystems, Inc. Wide instruction unpack method and apparatus
JP3737573B2 (ja) 1996-09-09 2006-01-18 株式会社東芝 Vliwプロセッサ
US5805850A (en) * 1997-01-30 1998-09-08 International Business Machines Corporation Very long instruction word (VLIW) computer having efficient instruction code format
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プロセッサ
US6879341B1 (en) * 1997-07-15 2005-04-12 Silverbrook Research Pty Ltd Digital camera system containing a VLIW vector processor
JP3414209B2 (ja) * 1997-07-30 2003-06-09 松下電器産業株式会社 プロセッサ
JP3327818B2 (ja) * 1997-08-29 2002-09-24 松下電器産業株式会社 プログラム変換装置及び記録媒体
US5974537A (en) * 1997-12-29 1999-10-26 Philips Electronics North America Corporation Guard bits in a VLIW instruction control routing of operations to functional units allowing two issue slots to specify the same functional unit
US6076154A (en) * 1998-01-16 2000-06-13 U.S. Philips Corporation VLIW processor has different functional units operating on commands of different widths
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
USRE41012E1 (en) * 1998-03-12 2009-11-24 Altera Corporation Register file indexing methods and apparatus for providing indirect control of register addressing in a VLIW processor
US6446190B1 (en) * 1998-03-12 2002-09-03 Bops, Inc. Register file indexing methods and apparatus for providing indirect control of register addressing in a VLIW processor
JP3541669B2 (ja) * 1998-03-30 2004-07-14 松下電器産業株式会社 演算処理装置
JP3601758B2 (ja) * 1998-08-07 2004-12-15 富士通株式会社 情報処理装置及びその処理方法
JP5052713B2 (ja) * 1998-10-09 2012-10-17 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 条件付き命令を備えるベクトルデータプロセッサ
JP3830683B2 (ja) * 1998-12-28 2006-10-04 富士通株式会社 Vliwプロセッサ
US6654870B1 (en) * 1999-06-21 2003-11-25 Pts Corporation Methods and apparatus for establishing port priority functions in a VLIW processor
US6457173B1 (en) * 1999-08-20 2002-09-24 Hewlett-Packard Company Automatic design of VLIW instruction formats
US6704857B2 (en) * 1999-12-23 2004-03-09 Pts Corporation Methods and apparatus for loading a very long instruction word memory
US6892380B2 (en) * 1999-12-30 2005-05-10 Texas Instruments Incorporated Method for software pipelining of irregular conditional control loops
US6889242B1 (en) * 2001-06-29 2005-05-03 Koninklijke Philips Electronics N.V. Rounding operations in computer processor
US6886091B1 (en) * 2001-06-29 2005-04-26 Koninklijke Philips Electronics N.V. Replacing VLIW operation with equivalent operation requiring fewer issue slots
JP3564445B2 (ja) * 2001-09-20 2004-09-08 松下電器産業株式会社 プロセッサ、コンパイル装置及びコンパイル方法
US6779089B2 (en) * 2002-01-09 2004-08-17 Intel Corporation Locked content addressable memory for efficient access
EP1378824A1 (en) * 2002-07-02 2004-01-07 STMicroelectronics S.r.l. A method for executing programs on multiple processors and corresponding processor system
US6865662B2 (en) * 2002-08-08 2005-03-08 Faraday Technology Corp. Controlling VLIW instruction operations supply to functional units using switches based on condition head field
JP2004005733A (ja) 2003-07-31 2004-01-08 Matsushita Electric Ind Co Ltd Vliwプロセッサ
US7370136B2 (en) * 2005-01-26 2008-05-06 Stmicroelectronics, Inc. Efficient and flexible sequencing of data processing units extending VLIW architecture
US7401329B2 (en) * 2005-04-25 2008-07-15 Arm Limited Compiling computer programs to exploit parallelism without exceeding available processing resources
US7739481B1 (en) * 2007-09-06 2010-06-15 Altera Corporation Parallelism with variable partitioning and threading

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009516238A (ja) * 2005-10-05 2009-04-16 クゥアルコム・インコーポレイテッド Vliwアーキテクチャを有する他のdspのための高速dctアルゴリズム
JP4801163B2 (ja) * 2005-10-05 2011-10-26 クゥアルコム・インコーポレイテッド Vliwアーキテクチャを有する他のdspのための高速dctアルゴリズム
US8396916B2 (en) 2005-10-05 2013-03-12 Qualcomm, Incorporated Fast DCT algorithm for DSP with VLIW architecture
WO2007145319A1 (ja) * 2006-06-15 2007-12-21 Nec Corporation プロセッサ、および、命令制御方法
US8131978B2 (en) 2006-06-15 2012-03-06 Nec Corporation Restoring plural instructions for same cycle execution from partial instructions and combined supplementing portions generated for compact storage
JP5168143B2 (ja) * 2006-06-15 2013-03-21 日本電気株式会社 プロセッサ、および、命令制御方法
JP2009230375A (ja) * 2008-03-21 2009-10-08 Fujitsu Ltd 演算装置および演算方法
US9513914B2 (en) 2008-03-21 2016-12-06 Fujitsu Limited Apparatus and method for processing an instruction that selects between single and multiple data stream operations with register specifier field control

Also Published As

Publication number Publication date
US7383422B2 (en) 2008-06-03
JP4283131B2 (ja) 2009-06-24
US20050182916A1 (en) 2005-08-18
US9697004B2 (en) 2017-07-04
US8738892B2 (en) 2014-05-27
CN1655118A (zh) 2005-08-17
CN1327340C (zh) 2007-07-18
US20080201560A1 (en) 2008-08-21
US20140223142A1 (en) 2014-08-07

Similar Documents

Publication Publication Date Title
JP4283131B2 (ja) プロセッサ及びコンパイル方法
US9383999B2 (en) Conditional compare instruction
US6490673B1 (en) Processor, compiling apparatus, and compile program recorded on a recording medium
KR100705507B1 (ko) 확장가능한 프로세서 아키텍처에 진보된 명령어들을부가하는 방법 및 장치
JP3797471B2 (ja) マルチスレッドvliwプロセッサにおける分割可能なパケットを識別するための方法および装置
KR100464406B1 (ko) 가변길이 vliw 명령어를 위한 디스패치 장치 및 방법
US6948158B2 (en) Retargetable compiling system and method
JP6849274B2 (ja) 融合された単一のサイクルのインクリメント−比較−ジャンプを実施するための命令及びロジック
CN104115113B (zh) 用于循环剩余掩码指令的系统、装置和方法
CN109144568B (zh) 将有效位通道作为矢量断言暴露于cpu
US20120265967A1 (en) Implementing instruction set architectures with non-contiguous register file specifiers
US9965275B2 (en) Element size increasing instruction
EP1267257A2 (en) Conditional execution per data path slice
JP2018500657A5 (ja)
WO2015114305A1 (en) A data processing apparatus and method for executing a vector scan instruction
US20180181398A1 (en) Apparatus and methods of decomposing loops to improve performance and power efficiency
US8707013B2 (en) On-demand predicate registers
US6857063B2 (en) Data processor and method of operation
CN109643235A (zh) 用于多源混合操作的装置、方法和系统
WO2010067522A1 (ja) 演算ユニット、プロセッサ及び並列演算方法
US20050223198A1 (en) Optimized processors and instruction alignment
JP3737573B2 (ja) Vliwプロセッサ
JP4006887B2 (ja) コンパイラ、プロセッサおよび記録媒体
Jeroen van Straten ρ-VEX user manual
JP2011145886A (ja) 情報処理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070209

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080916

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081021

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20081118

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090107

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20090127

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: 20090217

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090318

R150 Certificate of patent or registration of utility model

Ref document number: 4283131

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20120327

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20120327

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20130327

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20130327

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20140327

Year of fee payment: 5

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

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

LAPS Cancellation because of no payment of annual fees