JP3547139B2 - プロセッサ - Google Patents

プロセッサ Download PDF

Info

Publication number
JP3547139B2
JP3547139B2 JP52828196A JP52828196A JP3547139B2 JP 3547139 B2 JP3547139 B2 JP 3547139B2 JP 52828196 A JP52828196 A JP 52828196A JP 52828196 A JP52828196 A JP 52828196A JP 3547139 B2 JP3547139 B2 JP 3547139B2
Authority
JP
Japan
Prior art keywords
instruction
field
instruction code
information
units
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.)
Expired - Fee Related
Application number
JP52828196A
Other languages
English (en)
Inventor
清和 西岡
和彦 田中
義文 藤川
徹 野尻
啓二 小島
光一 寺田
能毅 黒川
浩二 細木
Original Assignee
株式会社 日立製作所
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 株式会社 日立製作所 filed Critical 株式会社 日立製作所
Application granted granted Critical
Publication of JP3547139B2 publication Critical patent/JP3547139B2/ja
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, look ahead
    • 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, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
    • G06F9/3891Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute organised in groups of units sharing resources, e.g. clusters
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • 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/30105Register structure
    • G06F9/30112Register structure comprising data of variable length
    • 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
    • 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/30181Instruction operation extension or modification
    • 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/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • 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, look ahead
    • G06F9/3802Instruction prefetching
    • 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, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3816Instruction alignment, e.g. cache line crossing
    • 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, 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, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • 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, 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/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional 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, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]

Description

技術分野
本発明は、デジタル動画や3次元グラフィックスのようなマルチメディア処理に適したプロセッサに関わり、特に、並列度の高い処理を少ないコードサイズで実現するプロセッサに関する。
背景技術
近年、パソコン、ワークステーションを中心にして、マルチメディア対応が進展している。マルチメディア対応に必要な機能は、主として、動画圧縮・伸張、音声圧縮・伸張、3次元グラフィックス、及び各種認識処理である。音声処理などには、従来から、数10MOPS性能のDSP(Digital Signal Processor)が利用されている。しかしながら、動画、グラフィックスを扱うには、かなり高性能なプロセッサが要求されている。例えば、動画伸張には約2GOPS、動画圧縮には約50GOPS程度の性能が必要である。この性能を達成するためには、演算器の高性能化が必要である。そのための手法には、動作周波数の高速化と、演算処理の並列化がある。
前者は、比較的単純に高性能化できるが、実装設計の難易度が高く、コスト増の要因になる。そのため、妥当なコストで実現するには、後者の手法も必須になると思われる。一方、後者は、アプリケーションが並列性を有しているかということと、複数演算器を有効な活用するための制御が複雑になることが課題となる。アプリケーションに関しては、上述したマルチメディアに焦点を絞ると、かなり高度な並列性がある。例えば、動画圧縮処理では、8演算が同時に実行可能である。
また、複数演算器を活用するための手法として、スーパースカラやVLIW(Very Long Instruction Word)がある。前者は、汎用プロセッサが主として採用している手法であり、複数演算を同時に実行するためのスケジューリングをプロセッサが行うものである。この手法は、既存の単一処理プロセッサとのオブジェクトとの互換性を確保できるという利点があるものの、スケジューリングをプロセッサが動的に行うので、そのハードウエアが極めて複雑になっている。一方、VLIWは、既存プロセッサとの互換性の確保に難点があるが、命令デコード回路が不要であり、そのハードウエアを簡略化できる利点がある。
VLIWにおけるハードウエア簡略化の要点のひとつは、命令フォーマットにある。その命令フォーマットは、演算器を直接制御するフィールドで構成されており、ハードウエアによる制御を極めて単純なものにする。このような命令フォーマットを有するプロセッサの一例として、特開昭63−98733「演算回路制御方式」がある。この引例では、演算用マイクロ命令が演算用命令であることを指示するオペレーションフィールドと、演算回路の制御用の複数のコントロールビットを設け、複数のコントロールビット各々で直接演算回路の各部の制御を行っている。このように、VLIWは比較的簡単なハードウエアで並列処理を実現できる。
上述したように、スーパースカラやVLIWなどは、性能を引き出すために、処理の並列度を向上する有効な手段である。しかしながら、並列度を十分引き出すためには、コンパイラの助けが必要である。具体的には、ループ展開などの手法が知られている。これは、プログラム中のループ本体を複数回複写(展開)し、展開したループ内のコードをスケジューリングする手法である。すなわち、ループ戻りの分岐間で実行する命令数を増加させると、複数命令を同時に実行できる可能性が大きくなる。
この手法においては、ループを複写するので、コードサイズが大きくなるという課題がある。つまり、コードサイズが大きくなると、プログラムを格納するメモリ容量を大きくとる必要があり、システムのコスト増につながる。また、キャッシュメモリを有するプロセッサにおいては、コードサイズが大きくなるとヒット率が下がり、システム性能が低下する要因になる。
また、プロセッサの並列度を増やすと、演算器の数が増加する。したがって、回路規模が大きくなり、それにしたがって開発工数が増えるという課題がある。パソコン等を中心とするコンピュータ市場においては、適時に新製品を投入することが事業的に重要となっており、開発工数の低減が重要になる。
本発明の目的は、上記課題を解決すべく、性能向上のため処理の並列度を向上しつつ、コードサイズを少なく抑えることができるアーキテクチャを有するプロセッサを提供することにある。
本発明の他の目的は、少ない命令コードで多くの演算を実行可能なプロセッサを提供することである。
本発明の他の目的は、静的なスケジューリングを前提にするVLIW型プロセッサを提供することにある。
本発明の他の目的は、各種アプリケーションに対応可能であり、各演算器の稼動率を高めたVLIW型プロセッサを提供することにある。
本発明の他の目的は、マルチメディア処理など同一種類の演算を繰り返し実行するような並列プロセッサの命令コード量の削減に有効なマルチメディア処理に適するプロセッサを提供することにある。
本発明の他の目的は、コードサイズ削減に有効なスーパースカラ型プロセッサを提供することにある。
本発明の他の目的は、処理の並列度を増加しつつ開発工数を抑えることが可能なプロセッサアーキテクチャを提供することにある。
発明の開示
上記第一の課題を解決するために、本発明は、マルチメディア処理については、同一種類の複数演算を同時に実行するケースが多いことに着目し、一つの命令で複数の演算器を制御できるようなモード情報を命令フォーマット中に用意した。
例えば、複数の演算器を有し一命令で複数演算を実行するために、各演算器を制御するフィールド複数で1命令を構成するVLIWプロセッサにおいては、一つのフィールド中に複数の演算器を制御可能にするモード情報を設けた。さらに、1命令中の一つのフィールドから複数のフィールドを生成する命令伸張回路を設けると共に、同一機能の演算器を複数並べて上記複数の演算器を構成した。
また、スーパースカラプロセッサにおいては、1命令中に複数の演算器を同時に制御するモード情報を設けた。また、一つの命令から複数の命令を生成する命令伸張回路を設けると共に、上記生成した複数の命令を同時に実行できるように同一機能の演算器を複数並べる構成とした。
また、3つ以上の演算器を有するプロセッサにおいては、必要数の演算器だけを使用できるように、同時に実行する演算器を指定する指定情報を設けると共に、前記指定情報にしたがって、VLIWにおいては必要な数の命令フィールドを、スーパースカラプロセッサにおいては命令を生成する機能を上記命令伸張回路を設けた。
上記第二の課題を解決するために、本発明は、同一種類の演算を複数同時に実行するための演算器と、主にこの演算器に供給するオペランドをメモリから読み込む整数演算器と、上記2種類の演算器が使用するオペランドを格納するレジスタファイルとで構成された演算ユニットを複数設けた。
即ち、本発明は、命令コードを格納するメモリと、該メモリから読みだした複数の命令コードを保持する命令コード保持手段と、該命令コード保持手段に保持した複数の命令コードにしたがって並列に演算動作可能な複数の演算ユニットとを有するプロセッサであって、上記メモリに格納された命令コード中に、複数の演算ユニットにおける演算の実行を指示する指定情報を有し、該指定情報を解析して命令コードが指定する複数の演算ユニットを決定して上記命令コードを指定された複数の演算ユニットへ投入する解析手段を設け、単一命令コードで上記複数の演算ユニットにおける複数の演算を制御可能に構成したことを特徴とするプロセッサである。
また本発明は、命令コードを格納するメモリと、該メモリから読みだした複数の命令コードを保持する命令コード保持手段と、該命令コード保持手段に保持した複数の命令コードにしたがって並列に演算動作可能な複数の演算ユニットとを有するプロセッサであって、上記メモリに格納された命令コード中に、複数の演算ユニットにおける演算の実行を指示する指定情報を有し、該指定情報を解析して命令コードが指定する複数の演算器を決定して上記命令コードを指定された複数の演算ユニットへ投入する解析手段を設け、上記複数の演算ユニットにおいて単一命令コードで複数命令に相当する演算を上記複数の演算ユニットにおいて実行するように構成したことを特徴とするプロセッサである。
また本発明は、命令コードを格納するメモリと、該メモリから読みだした複数の命令コードを保持する命令コード保持手段と、該命令コード保持手段に保持した複数の命令コードにしたがって並列に演算動作可能な複数の演算ユニットとを有するプロセッサであって、上記メモリに格納された命令コード中に、演算種類を示すオペコードと、オペランドに加えて、指定情報として実行モードを指定するフィールドを有し、該フィールドを解析して上記実行モードが有効となっている命令の少なくともオペコードとオペランドとを複数の演算ユニットへ投入する解析手段を設け、同一種類の演算を上記複数の演算ユニットにおいて実行可能に構成したことを特徴とするプロセッサである。
また本発明は、命令コードを格納するメモリと、該メモリから読みだした複数の命令コードを保持する命令コード保持手段と、該命令コード保持手段に保持した複数の命令コードに従って並列に演算動作可能な複数の演算ユニットとを有するプロセッサであって、上記メモリに格納された命令コード中に、演算種類を示すオペコードと、オペランドに加えて、指定情報として実行モードを指定するフィールドと演算ユニットを指定する演算ユニット指定フィールドとを有し、該フィールドを解析して上記実行モードが有効となっている命令の少なくともオペコードとオペランドとを、演算ユニット指定フィールドで指定された演算ユニットへ投入する解析手段を設け、上記複数の演算ユニットにおいて上記指定した数同一種類の演算を実行可能に構成したことを特徴とするプロセッサである。
また本発明は、上記プロセッサにおいて、上記各演算ユニットが固有のレジスタファイルを有することを特徴とする。また本発明は、上記プロセッサにおいて、上記各演算ユニットが固有のレジスタファイルを有し、オペランドフィールドが各演算ユニット固有のレジスタファイルの中のレジスタ指定することにより、演算データが各演算ユニットで異なることを特徴とする。また本発明は、上記プロセッサにおいて、上記各演算ユニットが共通のレジスタファイルを有することを特徴とする。
また本発明は、上記プロセッサにおいて、上記各演算ユニットが共通のレジスタファイルを有し、該レジスタファイルの中からレジスタ番号を指定するオペランドフィールドを有し、該オペランドフィールドの値に、指定する演算ユニットに固有のオフセット値を加えることで、各演算ユニットが異なるレジスタを使用可能にして、異なる演算データで演算可能に構成したことを特徴とする。
また本発明は、命令コードを格納するメモリと、該メモリから読みだした命令コードを保持する命令コード保持手段と、複数の演算ユニットとを有するプロセッサであって、上記命令コードは上記演算ユニット数に対応する複数フィールドから構成し、この命令コード中の任意の一つのフィールドにおいて、複数の演算ユニットを制御することを示す制御情報と各フィールドが対応する演算ユニットを指定するフィールド情報とを有し、該フィールド情報と上記制御情報を解析して上記フィールドが制御する演算ユニットを特定し、この特定された演算ユニットに対して上記フィールドを投入する解析手段を設け、上記命令コード中の一つのフィールドが複数の演算ユニットを制御して上記演算数よりも少ないフィールド数で構成した短い命令コードで複数演算が実行可能に構成したことを特徴とするプロセッサである。
また本発明は、命令コードを格納するメモリと、該メモリから読みだした命令コードを保持する命令コード保持手段と、複数の演算ユニットとを有するプロセッサであって、上記命令コードは演算ユニット数に対応する複数フィールドから構成し、この命令コード中の任意の一つのフィールドが複数の演算ユニットを制御することを示す制御情報と上記命令コード中に存在するフィールド数を示すヘッダ情報とを上記メモリに格納しておき、上記ヘッダ情報と上記制御情報を解析して上記フィールドが制御する演算ユニットを特定し、この特定された演算ユニットに対して上記フィールドを投入する解析手段を設け、命令コード中の一つのフィールドが複数の演算ユニットを制御して上記ヘッダ情報を用いて少ないフィールド数で構成した短い命令コードで複数演算が実行可能に構成したことを特徴とするプロセッサである。
また本発明は、命令コードを格納するメモリと、該メモリから読みだした命令コードを保持する命令コード保持手段と、該命令コード保持手段に保持された情報で制御される少なくとも一つの演算器及び該演算器のオペランド情報を格納するレジスタファイルで構成された複数の演算ユニットとを備えたプロセッサであって、上記命令コードは演算ユニット数に対応する複数フィールドから構成してこの一つの命令コードで複数の演算ユニットを操作可能に構成し、上記全ての演算ユニット内に、同一機能を有する演算器を少なくとも一つ設けることで、全ての各演算ユニットが同一の演算を実行可能に構成したことを特徴とするプロセッサである。
また本発明は、命令コードを格納するメモリと、該メモリから読みだした命令コードを保持する命令コード保持手段と、該命令コード保持手段に保持した情報で制御される少なくとも一つの演算器及び該演算器のオペランド情報を格納するレジスタファイルで構成した複数の演算ユニットとを備えたプロセッサであって、上記命令コードは演算ユニット数に対応する複数フィールドから構成し、上記全ての演算ユニット内に、同一機能を有する演算器を少なくとも一つ設け、更に上記各演算ユニット内に上記レジスタファイル内のレジスタで指定不可能なビット幅の広いデータタイプを保持するための特殊レジスタを設け、上記レジスタファイル内のレジスタで指定可能なビット幅のデータタイプと上記特殊レジスタに格納したデータタイプの両方の演算処理を可能に構成したことを特徴とするプロセッサである。
また本発明は、複数の演算ユニットの実行を指示する指定情報を有する命令コードを格納するメモリと、該メモリに格納された命令コード中に有する指定情報を解析して命令コードが指定する複数の演算ユニットを決定する解析手段と、該解析手段で決定された複数の演算ユニットを指定する命令コードを保持する命令コード保持手段と、該命令コード保持手段に保持された命令コードに従って、各々が並列に演算を実行する複数の演算ユニットとを備えたことを特徴とするプロセッサである。
また本発明は、複数の演算ユニットの実行を指示する指定情報を有する命令コードを格納するメモリと、該メモリに格納された命令コード中に有する指定情報を解析して単一命令コードで複数命令に相当する演算を実行するように上記単一命令コードが指定する複数の演算ユニットを決定する解析手段と、該解析手段で決定された複数の演算ユニットを指定する単一命令コードを保持する命令コード保持手段と、該命令コード保持手段に保持された単一命令コードに従って、各々が並列に演算を実行する複数の演算ユニットとを備えたことを特徴とするプロセッサである。
また本発明は、上記プロセッサにおいて、上記複数の演算ユニットの各々は、異なる種類の演算を実行するように構成したことを特徴とする。
また本発明は、演算種類を示すオペコードと、オペランドに加えて、指定情報として実行モードを指定するフィールドを有する命令コードを格納するメモリと、該メモリから読みだした命令コード中のフィールドを解析して上記実行モードが有効となっている命令の少なくともオペコードとオペランドとを複数の演算ユニットへ投入する解析手段と、該解析手段で投入された複数の演算ユニットへの実行モードが有効となっている命令の少なくともオペコードとオペランドとを保持する命令コード保持手段と、該命令コード保持手段に保持された少なくともオペコードとオペランドとに従って同一種類の演算を並列に実行する複数の演算ユニットとを備えたことを特徴とするプロセッサである。
また本発明は、演算種類を示すオペコードと、オペランドに加えて、指定情報として実行モードを指定するフィールドと演算ユニットを指定する演算ユニット指定フィールドとを有する命令コードを格納するメモリと、該メモリから読みだしたフィールドを解析して上記実行モードが有効となっている命令の少なくともオペコードとオペランドとを、演算ユニット指定フィールドで指定された演算ユニットへ投入する解析手段と、該解析手段で投入された演算ユニット指定フィールドで指定された演算ユニットへの実行モードが有効となっている命令の少なくともオペコードとオペランドとを保持する命令コード保持手段と、該命令コード保持手段に保持された少なくともオペコードとオペランドとに従って上記指定された数同一種類の演算を並列に実行可能に構成した複数の演算ユニットとを備えたことを特徴とするプロセッサである。
また本発明は、上記プロセッサにおいて、上記各演算ユニットが固有のレジスタファイルを有することを特徴とする。また本発明は、上記プロセッサにおいて、上記各演算ユニットが固有のレジスタファイルを有し、オペランドフィールドが各演算ユニット固有のレジスタファイルの中のレジスタ指定することにより、演算データが各演算ユニットで異なることを特徴とする。また本発明は、上記プロセッサにおいて、上記各演算ユニットが共通のレジスタファイルを有することを特徴とする。また本発明は、上記プロセッサにおいて、上記各演算ユニットが共通のレジスタファイルを有し、該レジスタファイルの中からレジスタ番号を指定するオペランドフィールドを有し、該オペランドフィールドの値に、指定する演算ユニットに固有のオフセット値を加えることで、各演算ユニットが異なるレジスタを使用可能にして、異なる演算データで演算可能に構成したことを特徴とする。
また本発明は、演算ユニット数に対応する複数フィールドから構成され、この中の任意の一つのフィールドにおいて、複数の演算ユニットを制御することを示す制御情報と各フィールドが対応する演算ユニットを指定するフィールド情報とを有する命令コードを格納するメモリと、該メモリから読みだした命令コードのフィールド情報と上記制御情報を解析して上記フィールドが制御する演算ユニットを特定し、この特定された演算ユニットに対して上記フィールドを投入する解析手段と、該解析手段で上記フィールドを保持する命令コード保持手段と、該命令コード保持手段に保持されたフィールドに従って並列演算を実行する複数の演算ユニットとを備え、上記命令コード中の一つのフィールドが上記複数の演算ユニットを制御して上記演算数よりも少ないフィールド数で構成した短い命令コードで複数演算が実行可能に構成したことを特徴とするプロセッサである。
また本発明は、演算ユニット数に対応する複数フィールドから構成され、この中の任意の一つのフィールドが複数の演算ユニットを制御することを示す制御情報を有する命令コードと該命令コード中に存在するフィールド数を示すヘッダ情報とを格納するメモリと、該メモリから読みだした上記ヘッダ情報と上記制御情報を解析して上記フィールドが制御する演算ユニットを特定し、この特定された演算ユニットに対して上記フィールドを投入する解析手段と、該解析手段で投入されたフィールドを保持する命令コード保持手段と、該命令コード保持手段に保持されたフィールドに従って並列演算を実行する複数の演算ユニットとを備え、上記命令コード中の一つのフィールドが上記複数の演算ユニットを制御して上記ヘッダ情報を用いて少ないフィールド数で構成した短い命令コードで複数演算が実行可能に構成したことを特徴とするプロセッサである。
また本発明は、上記プロセッサにおいて、上記解析手段には、上記メモリから圧縮された命令コードを読みだして直接実行可能な伸帳命令コードに変換する命令伸帳手段を有することを特徴とする。
また本発明は、上記プロセッサにおいて、上記解析手段には、上記メモリから圧縮された1命令コード中の少なくとも一つのフィールドを読みだして直接実行可能な複数のフィールドからなる伸帳命令コードに変換する命令伸帳手段を有することを特徴とする。また本発明は、上記プロセッサにおいて、上記解析手段には、上記メモリから圧縮された命令コードをラッチするインストラクションバッファと、上記命令コード中に存在するフィールド数を示すヘッダ情報を解析するフィールドコントローラと、該フィールドコントローラから解析されたフィールドの選択信号及びフィールドの有無を示す信号に基づいて各フィールドの有無を含めて並び替えて伸帳フィールドを形成する各フィールドに対応したセレクタとを備えたことを特徴とする。また本発明は、上記プロセッサにおいて、上記解析手段には、上記命令コードの各フィールドの実行モード(Sモード)とSIMDとを解析して各フィールドの複写元フィールドを選択して決定するSIMDコントローラと、該SIMDコントローラで選択して決定された複写元フィールドを複写して各演算ユニットに対して投入するセレクタとを備えたことを特徴とする。
また本発明は、演算ユニット数に対応する複数フィールドから構成してこの一つで複数の演算ユニットを操作可能に構成した命令コードを格納するメモリを備え、該メモリから読みだした命令コードを保持する命令コード保持手段を備え、該命令コード保持手段に保持された情報で制御される少なくとも一つの同一機能を有する演算器及び該演算器のオペランド情報を格納するレジスタファイルで構成された演算ユニットを複数備え、これら複数の演算ユニットが同一の演算を実行可能に構成したことを特徴とするプロセッサである。
また本発明は、演算ユニット数に対応する複数フィールドから構成された命令コードを格納するメモリを備え、該メモリから読みだした命令コードを保持する命令コード保持手段を備え、該命令コード保持手段に保持した情報で制御される少なくとも一つの同一機能を有する演算器及び該演算器のオペランド情報を格納するレジスタファイル及び該レジスタファイル内のレジスタで指定不可能なビット幅の広いデータタイプを保持するための特殊レジスタで構成した演算ユニットを複数備え、これら複数の演算ユニットにおいて上記レジスタファイル内のレジスタで指定可能なビット幅のデータタイプと上記特殊レジスタに格納したデータタイプの両方の演算処理を可能に構成したことを特徴とするプロセッサである。
また本発明は、命令コード及びデータを格納するメモリと、上記メモリから読みだした複数の命令コードを保持する命令コード保持手段と、上記命令コード保持手段に保持した複数の命令コードにしたがって並列に動作可能な複数の演算ユニットを有するプロセッサであって、複数の演算器と複数アクセスポートレジスタファイルとで演算ユニットを構成し、上記各演算器が、対応するアクセスポートから上記レジスタファイルの内容を読み出して演算可能で、かつ、上記複数の演算ユニットが同一機能であることを特徴とするプロセッサである。
また本発明は、命令コード及びデータを格納するメモリと、上記メモリから読みだした複数の命令コードを保持する命令コード保持手段と、上記命令コード保持手段に保持した複数の命令コードにしたがって並列に動作可能な複数の演算ユニットを有するプロセッサであって、複数の演算器と複数アクセスポートレジスタファイルとで演算ユニットを構成し、上記各演算器が、対応するアクセスポートから上記レジスタファイルの内容を読み出して演算可能で、かつ、上記複数の演算ユニットが同一機能のサブセットを有することを特徴とするプロセッサである。
また本発明は、上記プロセッサにおいて、演算ユニット内の少なくとも一つの演算器が上記メモリと上記レジスタファイル間のデータ転送を行うデータ転送命令を実行可能であることを特徴とする。
本発明によれば、VLIWプロセッサが8つの演算器を有する場合、1命令は8つのフィールドで構成される。一つのフィールドが、オペレーション情報、オペランド情報、及び上記モード情報を有しており、そのモード情報が、複数の演算器を制御する同時演算モードを指定している時、残りの7つのフィールドは命令読み込み時、メモリ上に実存していない。そこで、命令伸張回路が、前記一つのフィールド中で指定したオペレーション情報とオペランド情報を複写することによって、残り7つのフィールドを生成する。これにより、1フィールド分のコードサイズで8フィールドに相当する1命令を生成し、各演算器が同一機能を有しているので、問題なく複数演算命令が並列に実行可能になり、コードサイズが1/8に圧縮できる。とくに、モード情報に演算器の指定情報を設定すると、その設定情報に対応するフィールドだけが生成されるので、設定情報を3ビット設けると同時演算数を2〜8の範囲で制御できる。
また、上述したスーパースカラプロセッサが4つの演算器を有する場合、1命令が、オペレーション情報、オペランド情報、及び上記モード情報を有しており、そのモード情報が、同時演算モードを指定している時、命令伸張回路が、前記命令中で指定したオペレーション情報とオペランド情報を生成することによって、3つの命令を生成する。この場合、各演算器が同一機能を有しているので、1命令分のコードサイズで4命令に相当する複数演算命令が実行可能になり、コードサイズが1/4に圧縮できる。とくに、モード情報に演算器の指定情報を設定すると、その設定情報に対応する分の命令だけが新たに生成されるので、設定情報を2ビット設けると同時演算数を2〜4の範囲で制御できる。
以上のように、本発明によると、同時演算の処理の並列度を向上しつつ、コードサイズを少なく抑えることができる。
また、上述したとおり、演算ユニット単位で処理の並列度を増減するアーキテクチャとすることにより、例えば、2演算ユニット構成のプロセッサの開発において、1演算ユニットの回路を開発すれば、この演算ユニットの回路を複写することで2演算ユニット分の演算器を開発できる。したがって、2演算ユニットの演算器の開発工数は、1演算ユニットの演算器の開発工数とほぼ同一となる。将来、半導体の微細化技術が進歩して、4演算ユニットや8演算ユニットの高並列処理プロセッサを開発する場合でも、演算器の開発工数が増加することはない。
前述したとおり、マルチメディア処理においては、同一種類の演算が複数回繰り返し実行される特性を持っているので、処理の並列度を増やすことにより、確実に性能向上できる。
また、一つの演算ユニット内で、マルチメディア演算器の処理と同時に、整数演算器が次のサイクルで処理するデータをロードできる。ロードしたデータは、演算ユニット内のレジスタファイルに格納されるのでマルチメディア演算器が処理するオペランドとして使用できる。
このように、演算ユニット単位で処理するソフトウエア構造とすることにより、演算ユニットを対象にしたプログラムの単位で演算ユニットの増減に対応できる。したがって、演算ユニット数を変更したプロセッサに、開発済みプログラムを移植する場合などにも、演算ユニット数の増減に伴うソフトウエアの開発工数を低減できる。
以上のように、本発明によると、プロセッサ処理の並列度を向上しつつ、ハードウエアの開発工数だけでなくソフトウエアの開発工数も削減することが可能になる。
【図面の簡単な説明】
第1図は本発明の第1の実施例を示すプロセッサのブロック図である。第2図はプロセッサの命令フォーマットを示す図である。第3図はインストラクションメモリ1内へのプログラム格納例を示す図である。第4図はヘッダのフォーマットを示す図である。第5図は命令コードの具体例を示す図である。第6図は命令コードの具体例を示す図である。第7図は命令伸張回路2の詳細ブロック図である。第8図はフィールドコントローラ42の詳細ブロック図である。第9図はプログラムの格納例を示す図である。第10図はフィールドコントローラ42の動作フローを示す図である。第11図はヘッダアナライザ60の詳細ブロック図である。第12図はパーシャルライトコントローラ62の詳細ブロック図である。第13図はアドレスコントローラ61の詳細ブロック図である。第14図はセレクトシグナルジェネレータ63の詳細ブロック図である。第15図はオフセット生成回路120の詳細ブロック図である。第16図はSIMDコントローラ46の詳細ブロック図である。第17図は本発明の第2の実施例を示すプロセッサのブロック図である。第18図は第2の実施例を示す命令フォーマットを示す図である。第19図は命令伸張回路200の詳細ブロック図である。第20図はフィールドコントローラ201の詳細ブロック図である。第21図はシンクロナイザ210の詳細ブロック図である。第22図はセレクトシグナルジェネレータ211の詳細ブロック図である。第23図は本発明の第3の実施例を示すプロセッサのブロック図である。第24図は第3の実施例を示す命令フォーマットを示す図である。第25図は命令伸張回路241の詳細ブロック図である。第26図はレジスタアジャスタ250の機能を実現する真理値表を示す図である。第27図は本発明の第4の実施例を示すプロセッサのブロック図である。第28図は第4の実施例を示す命令フォーマットを示す図である。第29図は命令伸張回路260の詳細ブロック図である。第30図は本発明に係るIFG演算器の一実施例を示す構成図である。
発明を実施するための最良の形態
以下、本発明を説明する。第1図は、本発明を適用したVLIWプロセッサのブロック図である。同図において、1はプロセッサ命令コードを圧縮して格納するインストラクションメモリ、2は本発明の主要ブロックでありインストラクションメモリ1から読みだした圧縮命令コードを実際に実行可能なコードに伸張する命令伸張回路、3はインストラクションメモリ1のアドレスバス、4はインストラクションメモリ1のデータバス、5〜12は命令伸張回路2が伸張コードを出力するフィールドバス、14〜21は各々フィールドバス5〜12を介して転送される伸張コードを保持する命令レジスタ、22〜25は同一構成であり、各々命令レジスタ14〜21に保持した伸張コードにしたがって各種演算を実行する演算ユニット、26は8ビットや16ビット単位で複数演算を実行するマルチメディア演算及び乗算など複雑な演算を実行するIFG(Integer Floating Graphics)演算器、27はデータメモリ30とレジスタファイルとの間のデータ転送を実行するデータ転送命令や論理演算など簡単な演算を実行するINT(Integer)演算器、28は演算する値や演算結果の値を保持するものであり、32個の64ビットレジスタで構成し、4個のリードポートと3個のライトポートを有するレジスタファイル、29は演算ユニット22〜25の演算結果を他の演算ユニットへ転送可能にする選択回路、30は演算ユニット22〜25内のレジスタファイルとの間でデータ転送が可能なデータメモリである。
なお、この図において、このVLIWプロセッサは1つのLSIにまとめられている。又、命令コードなどを一旦蓄えるキャッシュメモリ、命令コードなどをプロセッサ外部から読み込み、演算結果を外部へ出力する等のLSI端子の記述は省略している。
本発明の特徴は、演算ユニット22がIFG演算器26とINT演算器27及びレジスタファイル28で構成されており、同一の演算ユニット23〜25が複数並列に並んだ構成となっていることである。
以下、第1図の動作を説明する。
同図において、命令伸張回路2は、アドレスバス3を介して与えたアドレス情報によりインストラクションメモリ1から圧縮された命令コードを読み出し、演算ユニット22〜25が直接実行可能になる伸張命令コードに変換する。1命令に相当する伸張命令コードは、8つのフィールドで構成されており、各フィールドは各々対応する命令レジスタ14〜21へ転送される。フィールドには、IFGフィールドとINTフィールドの2種類がある。IFGフィールドは、命令レジスタ14、16、18、20に、INTフィールドは命令レジスタ15、17、19、21に転送される。
命令レジスタ14に格納されたIFGフィールドは、演算ユニット22内のIFG演算器26に関する演算を制御する。一方、命令レジスタ15に格納されたINTフィールドは、演算ユニット22内のINT演算器27に関する演算を制御する。同様に、命令レジスタ16と17は演算ユニット23、命令レジスタ18と19は演算ユニット24、命令レジスタ20と21は演算ユニット25内のIFG演算器及びINT演算器を制御する。
IFG演算器26及びINT演算器27において演算するデータは、レジスタファイル28から読みだす。演算結果は、選択回路29へ出力され、いずれの演算ユニット内のレジスタファイル28へも書き込むことができる。
また、データ転送命令が発行されると、選択回路29を通して、レジスタファイル28とデータメモリ30間でデータ転送が行われる。つまり、IFG演算器26が演算命令を実行すると同時に、データ転送命令によって、次サイクルでIFG演算器26が演算するデータをメモリ30からレジスタファイル28へ転送する命令をINT演算器27が実行できる。INT演算器27によってレジスタファイル28に転送されたデータは、IFG演算器22からも読み出し可能なので、IFG演算器は毎サイクル演算命令を実行できる。
画像処理のようなマルチメディア処理を考慮すると、処理する画像の領域を4分割し、各領域の処理を各4つの演算ユニットに割り当てるようなプログラム構造にすることができる。この場合、各領域の処理内容と各演算ユニットの機能が同じであるため、基本的に、各演算ユニットで実行するプログラムは同一である。したがって、一つの演算ユニットのプログラムを開発し、それを他3つの演算ユニットにも流用できる。本実施例では、演算ユニット数が4であるが、半導体技術の進歩により、演算ユニット数を8に増やした場合でも、処理する画像領域を8分割するプログラム構造とすれば、各演算ユニットで実行するプログラムは、流用可能であり、ソフトウエアの開発工数を削減できる。
これらの効果は、上述した画像処理のようなマルチメディア処理においては、同一の演算の繰り返し処理が頻発することを利用して、繰り返し処理を並列化することによって処理性能を向上した結果である。演算ユニットは、基本的に同一回路なので、当然、複数の演算ユニットを有するプロセッサのハードウエア開発工数も削減できる。
また、第1図の実施例では、上述したように同時演算の処理の並列度を向上しつつ、コードサイズを少なく抑えることもできる。
次に、各演算ユニット22〜25を制御する伸張命令コードのフィールドについて、詳細を説明する。
第2図は、IFGフィールドとINTフィールドのフォーマットを示している。
(1)まず、IFGフィールドを構成する各ブロックについて説明する。
即ち、ビット0〜ビット7のオペコードブロック(以下、“オペコード”と記す)は演算の種類を示しており、最大256種類を指定できる。なお、オペコード=0の時は、ノーオペレーション(NOP)とする。ビット8のイミディエートブロック(以下、“イミディエート”と記す)は、ビット22〜ビット26のソース1ブロック(以下、“ソース1"と記す)の内容の意味を示しており、1の時にイミディエート値、0の時にレジスタ番号を示している。レジスタ番号は、当該演算ユニット内のレジスタファイルにある32個のレジスタのうちの一つを示す。ビット17〜ビット21のソース0ブロック(以下、“ソース0"と記す)も同様に、当該演算ユニット内のレジスタファイルにある32個のレジスタのうちの一つを示す。
ビット27のSモードブロック(以下、“Sモード”と記す)(1ビットのフィールド)は、本発明のポイントとなる同時演算モードを指定する。本ビット(“Sモード”)が、0の時ノーマルモード、1の時SIMD(単一命令複数データ流:Single Instruction Multiple Datastream)モード(同時演算モード)を示す。
ビット9〜ビット11のSIMD/デストバンクブロックは、ノーマルモードの時、“デストバンク”と記し、SIMDモードの時、“SIMD"と記す。
ノーマルモード(“Sモード”が0)の時には、各演算ユニットの演算結果は、他の演算ユニット内のレジスタファイル内のレジスタへ書き込むことができる。したがって、ノーマルモード時は、“デストバンク”で演算ユニットを特定し、ビット12〜ビット16のデスティネーションブロック(以下、“デスティネーション”と記す)でその演算ユニット内のレジスタを特定する。演算ユニット22がバンク0、演算ユニット23がバンク1、演算ユニット24がバンク2、演算ユニット25がバンク3に対応している。“デスティネーション”は、32種類のレジスタ番号を指定可能であり、デストバンクは、8種類の演算ユニットを指定可能である。本実施例では、4個の演算ユニット22〜25で構成しているが、命令フォーマット自身は、8個の演算ユニットで構成するVLIWプロセッサに適用できるようになっている。
一方、SIMDモードの時(“Sモード”が1の時)には、一つのIFGフィールドで複数の演算ユニットを制御可能にするため、各演算ユニットの演算結果は、当該演算ユニット内のレジスタファイル内のレジスタへのみ書き込みができるようにする。従って、SIMDモード時には、“デスティネーション”で、32種類のレジスタ番号を指定することで演算結果を書き込むレジスタを指定する。更に、同時に演算する他の演算ユニットを指定するために、デストバンクとフィールドを共用する“SIMD"を用いる。
“SIMD"は、3ビットで構成され、他の3つの演算ユニットが各々同一演算を実行するか否かを示す。1は同一命令実行を示し、0は実行しない、つまり、ノーオペレーション(以下、NOPと略記する)を示す。3つのビットと各演算ユニットとの対応関係は、IFGフィールドが保持される命令レジスタに依存する。つまり、IFGフィールドがバンク0に対応する命令レジスタ14に保持される場合、“SIMD"の3ビットは、バンク1、バンク2、バンク3に対応する。従って、“SIMD"が110(2進数)ならば、命令レジスタ14と15、16と17、18と19に、同じ命令が設定される。IFGフィールドがバンク1に対応する命令レジスタ16に保持される場合、“SIMD"の3ビットは、バンク0、バンク2、バンク3に対応する。IFGフィールドがバンク2に対応する命令レジスタ18に保持される場合、“SIMD"の3ビットは、バンク0、バンク1、バンク3に対応する。IFGフィールドがバンク3に対応する命令レジスタ20に保持される場合、“SIMD"の3ビットは、バンク0、バンク1、バンク2に対応する。
なお、“デステネーション”、“ソース0"、“ソース1"でオペランドを形成する。
(2)次に、INTフィールドについて説明する。
即ち、INTフィールドのIFGフィールドとの相違点は、3つある。一つ目は、“オペコード”が1ビット削減され、指定できる演算種類が128種類になっていることである。2つ目は、“ソース1"のビット数が8ビットに拡張され、イミディエート値が0〜255まで指定できるようになっていることである。最後は、IFGフィールドにないブランチテストブロック(以下、“ブランチテスト”)が加わっていることである。“ブランチテスト”は、プログラムの分岐制御用である。各演算ユニット22〜25は、条件分岐用に各1ビットのブランチバンクレジスタを6個有している。これらは1の時分岐、0の時分岐しないことを示す。“ブランチテスト”が、000(2進数)の時、分岐は発生しない。001の時、無条件分岐が発生する。010〜111の時、対応するブランチバンクレジスタの内容に応じて分岐(条件分岐)が発生する。
以下に、これらのIFGフィールド、INTフィールドで構成した命令が、インストラクションメモリ1へ格納される過程について説明する。即ち、第3図は、インストラクションメモリ1へのプログラム格納例を示している。図中、0〜95番地に8命令が格納されており、ヘッダは各命令のフィールドの有無を示す情報であり、4命令単位にひとつの割合で設けてある。また、フィールド0、1、2、3、4、5、6及び7は、各々命令レジスタ14、15、16、17、18、19、20及び21に対応している。また、フィールド無しは、NOPまたはSIMDモードを使用することで省略されたフィールドを意味する。
ここでは、NOPのフィールドが格納されおらず、1番目の命令はフィールド0、1、4、6、7で、2番目の命令はフィールド0、1、2で、3番目の命令はフィールド0、1、2、4、6、7で、4番目の命令はフィールド4、7で、5番目の命令はフィールド0、1で、6番目の命令はフィールド2、3で、7番目の命令はフィールド6で、8番目の命令はフィールド4で構成されている。
以下、さらに詳細な説明を行う。即ち、第4図は、第3図に示すヘッダのフォーマットを示している。一つのヘッダは、1フィールドと同一サイズの32ビットで構成されており、連続する4命令分のフィールド有無情報(4×8=32)を示している。
具体的な例として、第3図で示したヘッダ0とそれに対応する1〜4番目の伸張後の命令フォーマットを第5図に示す。この4命令は全てノーマルモードを指定しているものとする。伸張後の命令フォーマットとは、命令伸張回路2がヘッダのフィールド有無情報から生成するものであり、インストラクションメモリ1内では省略されていたNOPフィールドが生成されるとともに、フィールドの並び替えが行われている。
一方、SIMDモードを指定した具体例として、第3図で示したヘッダ1とそれに対応する5〜8番目の伸張後の命令フォーマットを第6図に示す。これらの命令の“Sモード”と“SIMD"はそれぞれ図中に記載された値になっているものとする。
図中、5番目の命令では、フィールド0において“Sモード”=1によりSIMDモードを指定されており、且つ、“SIMD"が111のため、フィールド0と1の内容がフィールド2と3、フィールド4と5、フィールド6と7へ複写される。6番目の命令では、フィールド2において“Sモード”=1によりSIMDモードを指定されており、且つ、“SIMD"が010のため、フィールド2と3の内容がフィールド4と5へ複写される。7番目の命令では、フィールド6において“Sモード”=1によりSIMDモードを指定されており、且つ、“SIMD"が101のため、フィールド6と7の内容がフィールド0と1、フィールド4と5へ複写される。8番目の命令では、フィールド4においてSIMDモードを指定されており、且つ、“SIMD"が001(0がNOP、1が同一命令実行)のため、フィールド4と5の内容がフィールド6と7へ複写される。
以上が本実施例において、圧縮された命令コードを伸張する方式である。
以下に、この方式を実現する命令伸張回路2の詳細について説明する。即ち、第7図は、命令伸張回路2の詳細を示すブロック図である。同図において、第1図と同一機能を有する回路ブロック及び同一信号線には同一符号を付してある。40はデータバス4からの圧縮命令コード(32バイト)をラッチするインストラクションバッファ、41(41a〜41h)は4バイト(1フィールド叉は1ヘッダ)×8本構成の圧縮フィールドバス、42はヘッダ情報を解析するフィールドコントローラ、43は4バイト単位で独立に書き込みを可能にするため8本の信号で構成したライトイネーブルバス、44はフィールドの並べ替えを行うためのフィールド選択信号線、45aから45hは圧縮フィールドバス41の8本の4バイト信号から1本を選択するセレクタ、67はフィールド0〜7の各フィールドの有無を示す8本フィールド信号線、49はフィールド並べ替え後の伸張フィールドバス、46は各命令のSIMDモード時のフィールド複写動作を制御するSIMDコントローラ、47は複写するフィールドの選択を制御するSIMD選択信号線、48はいずれかの2フィールド(IFGフィールドとINTフィールド)を選択するデュアルセレクタである。
以下に、その詳細動作を説明する。即ち、フィールドコントローラ42は、インストラクションバッファ40に保持した情報を参照して、ヘッダ情報を切り出し解析する。その解析結果から、インストラクションバッファ40へフェッチするべき命令のアドレス情報をアドレスバス3へ、4バイト単位でインストラクションバッファ40へフェッチ可能とする情報をライトイネーブルバス43へ、圧縮フィールドバス41の中からその命令のフィールド0を選択するための情報をフィールド選択信号線44へ出力する。同様に、フィールド1〜7の選択情報も各々該当するセレクタ45bから45hへ出力する。また、各フィールドの有無を示す情報をフィールド信号線67へ出力する。
インストラクションバッファ40は、32バイトなので、ヘッダと8つのフィールドで構成する最長命令を一度に保持することができない。従って、この場合、2回のフェッチが必要になる。この場合、フィールドコントローラ42は、2回目のフェッチサイクルであることを示す情報を再フェッチ信号線13へ出力する。この信号は、第1図に示す命令レジスタ14〜21へ送られる。再フェッチサイクルで出力されるのは、フィールド7の情報に限られるので、このサイクルにおいては、フィールド7に対応する命令レジスタ21だけがフィールドデータをラッチ(更新)する。
セレクタ45aは、フィールド信号線67のフィールド0に対応する信号線がフィールド無しを示していると、0をフィールド情報として出力する。つまり、この実施例では、オペコード=0をNOPとしているので、NOPが出力される。逆に、フィールド有りを示していると、フィールド選択信号線44の情報に従って、圧縮フィールドバス41からフィールド0の情報を選択して、伸張フィールドバス49へ出力する。同様、各フィールドに対応するセレクタ45bから45hが、フィールドコントローラ42からの情報に従って、各々のフィールドを選択して、伸張フィールドバス49へ出力する。このように、伸張フィールドバス49には、伸張され、並び換えられた後の命令コードが出力される。
SIMDコントローラ46は、伸張フィールドバス49内のフィールド0、2、4、6の“Sモード”と“SIMD"を解析して、各フィールドの複写元フィールドを決定して、その複写元フィールドを選択する情報を、デュアルセレクタ48aへ出力する。
ノーマルモード時には、SIMDコントローラ46は、複写元フィールド0と1の選択情報をデュアルセレクタ48aへ出力する。この選択情報にしたがって、デュアルセレクタ48aは、伸張フィールドバス49内の8つのフィールドから2つを選択して、フィールド0をフィールドバス5へ、フィールド1をフィールドバス6へ出力する。
同様に、フィールド2と3、4と5及び6と7の複写元フィールドを選択する情報が、対応する各デュアルセレクタ48b〜dへ出力される。各デュアルセレクタ48b〜dは、伸張フィールドバス49内の8つのフィールドから2つを選択して、フィールド2をフィールドバス7へ、フィールド3をフィールドバス8へ、フィールド4をフィールドバス9へ、フィールド5をフィールドバス10へ、フィールド6をフィールドバス11へ、フィールド7をフィールドバス12へ出力する。このように、SIMDモード時には、命令中に指定した情報にしたがって、特定のフィールドの内容を別のフィールドへ複写できる。これにより、少ない命令で多くの演算が可能になる。
例えば、第3図に示した例の1番目の命令動作を説明する。インストラクションバッファ40には、ヘッダ0から2番目の命令のフィールド1までが保持されている。この状態から、各フィールドに対応するセレクタ45a〜hが、フィールドコントローラ42におけるヘッダ0の解析情報にしたがって、第5図に示した1番目の命令フォーマットを生成して、伸張フィールドバス49へ出力する。
この際、フィールドコントローラ42は、インストラクションバッファ40内の、ヘッダ0と1番目の命令に相当する5フィールド分との合計24バイトに、次の命令をフェッチするための情報を、ライトイネーブルバス43へ出力する。ライトイネーブルバス43へ出力される情報は、各々4バイト境界での書き込みを制御するために、8ビットで構成してある。
一方、アドレスバス3のアドレス情報は、次の命令の先頭(第3図の2番目の命令のフィールド0)を示しており、データバス4にはそのアドレスから連続する32バイトのデータ(24番地〜55番地)が読み出される。この状態で、次のサイクルでは、上記ライトイネーブルバス43の情報に従って、24バイト分のデータ(32番地〜55番地)が更新される。従って、インストラクションバッファ40は、32番地〜55番地及び24番地〜31番地の32バイトの情報を保持する。この状態から、各フィールドに対応するセレクタ45a〜hが、フィールドコントローラ42におけるヘッダ0の解析情報に従って、第5図に示した2番目の命令フォーマットを生成して、伸張フィールドバス49へ出力する。
この際、フィールドコントローラ42は、2番目の命令に相当する3フィールド分の合計12バイトをインストラクションバッファ40へフェッチするための情報を、ライトイネーブルバス43へ転送する。一方、アドレスバス3のアドレス情報は、次の命令の先頭(第3図の3番目の命令のフィールド0)を示しており、データバス4にはそのアドレスから連続する32バイトのデータ(36番地〜67番地)が読み出される。この状態で、次のサイクルでは、上記ライトイネーブルバス43の情報に従って、12バイト分のデータ(56番地〜67番地)が更新される。従って、インストラクションバッファ40は、64番地〜67番地及び36番地〜63番地の32バイトの情報を保持する。このように、フィールドコントローラ42は、アドレスバス3とライトイネーブルバス43を介して、インストラクションバッファ40にデータが常時充満するように制御する。このようなフィールドコントローラ42の詳細については、後述する。
以上のように生成した、伸張フィールドバス49上の各フィールドの“Sモード”は、SIMDコントローラ46において、チェックされる。“Sモード”ビットが有効の場合、SIMDコントローラ46は、第6図に示したように、複写するフィールドと複写されるフィールドを特定する。
例えば、フィールド0と1へ複写する場合には、複写元のフィールド選択情報をSIMD選択信号線47を介して、デュアルセレクタ48aへ送る。ノーマルモード時(“Sモード”=0の時)、或いはSIMDモード時(“Sモード”=1の時)でフィールド0と1が複写元の場合、フィールド選択情報は、それ自身のフィールド、つまりフィールド0と1を選択する。フィールド2と3、フィールド4と5、フィールド6と7のフィールド選択情報も、同様に、各々該当するデュアルセレクタ48b〜dへ送られる。
フィールドバス5と6は、デュアルセレクタ48aから出力され、フィールドバス5のフィールド0は伸張フィールドバス49のフィールド0、2、4、6の中から選択され、一方、フィールドバス6のフィールド1は伸張フィールドバス49のフィールド1、3、5、7の中から選択される。以下同様に、フィールドバス7〜12上のフィールド2〜7が生成される。このSIMDコントローラ46の詳細は、後述する。
以下に、フィールドコントローラ42とSIMDコントローラ46の詳細構成について説明する。
まず、フィールドコントローラ42の詳細構成を第8図に示す。同図において、第7図と同一機能を有する回路ブロック及び同一信号線には同一符号を付してある。図中、60はヘッダ情報を解析するヘッダアナライザ、67はヘッダ内のフィールド構成を示す8ビットのフィールド信号線、68は圧縮時の命令長(0〜33)を示す6ビットの命令長信号線、61はアドレスバス3へ与えるアドレス情報を生成するアドレスコントローラ、64は実行中の命令アドレス情報を転送する命令アドレスバス、65はヘッダに含まれる4命令のうちの一つを示す2ビットのヘッダアドレスバス、66はヘッダアドレスが0の時アサートされるヘッダ0信号線、62はライトイネーブルバス43へ与えるフェッチ情報を生成するパーシャルライトコントローラ、63はフィールド選択信号線44などへ与えるフィールド選択情報を生成するセレクトシグナルジェネレータである。以下に、具体例を挙げて、動作説明を行う。
第9図は、インストラクションメモリ1に格納されている命令列である。ここでは、0〜127番地までに、7命令が格納されている。
これらの命令を順次実行する場合の、動作を示すタイムチャートが第10図である。同図では、T0〜T8までの9サイクル間の動作を示している。各命令は、基本的には、4ステージのパイプラインで実行される。4ステージの内訳としては、IFは命令フェッチステージ、EXPは命令伸張ステージ、EXEは演算実行ステージ、WBは演算結果の書き込みステージである。図中、命令1〜命令6までのタイムチャートを示している。
まず、命令1に着目する。命令1は、初期状態からスタートしており、T0サイクルの各信号線は初期値を示している。命令アドレスバス64が0のためインストラクションメモリ1からは、0番地〜31番地までが読み出される。さらに、ライトイネーブルバス43が11111111(2進数)であり、インストラクションバッファ40へは、T0からT1サイクルへの遷移時に、0番地〜31番地までがラッチされる。
T1サイクルでは、命令1のEXPステージが実行される。
具体的に、ヘッダアナライザ60は、命令アドレスバス64とヘッダアドレスバス65から入力した情報に従って、圧縮フィールドバス41から入力されたインストラクションバッファ40にラッチされている情報の中から、ヘッダ情報を特定する。つまり、命令アドレスバス64が0であることから、命令1〜4のヘッダは0〜3番地に存在していることが判り、この4バイトの情報をラッチする。さらに、ヘッダアドレスバス65が0であることから、命令1に相当するヘッダ情報は0番地の8ビットであることが判る。
この情報から、ヘッダアナライザ60は、命令1が5つのフィールドから構成され、その内訳はフィールド0、1、4、6、7である、ことが判る。従って、フィールド信号線67へは命令1のヘッダ情報11001011(2進数)がそのまま出力される。さらに、命令1はヘッダを含めてその命令長が24バイトであり、命令長信号線68へは24であることを示す011000(2進数)の情報が出力される。命令長が32を越えてないので、再フェッチ信号線13はアサートされない。
アドレスコントローラ61は、初期状態のサイクル以外では命令アドレスバス64の値に32を加算した値をアドレスバス3へ出力する。従って、T1サイクルでは、32がアドレスバス3へ出力される。
パーシャルライトコントローラ62は、命令長信号線68と命令アドレスバス64の情報から、インストラクションバッファ40において保持されている命令1のフィールドの位置情報をライトイネーブルバス43へ出力する。この位置情報は、4バイト単位で管理されており、8ビットで構成してある。T2サイクルにおいては、命令アドレスバス64が0、命令長信号線68が24であることから、インストラクションバッファ40の先頭から24バイトが命令1に相当することが判り、11111100(2進数)がライトイネーブルバス43へ出力される。
セレクトシグナルジェネレータ63は、命令アドレスバス64、ヘッダ0信号線66及びフィールド信号線67から、各フィールド情報をインストラクションバッファ40の中から選択する情報を生成し、出力する。例えば、フィールド0の選択情報は、フィールド選択信号線44へ出力される。同様に、フィールド1〜7の選択情報は、該当するフィールド選択信号線へ出力される。選択情報は、インストラクションバッファ40において4バイト境界のどの位置から読み出すかを示す3ビットで構成する。T1サイクルにおける命令アドレスバス64が0、ヘッダ0信号線66がアサートされていることから、命令1のフィールドは、インストラクションバッファ40の2番目の32ビット境界以降に保持されていることが判る。さらに、どのフィールドが存在するかは、フィールド信号線67の情報から判る。従って、2番目の32ビット境界には、フィールド0が保持されていることが判り、フィールド0を示す選択情報は1となり、フィールド選択信号線44へ出力される。同様に、フィールド1を示す選択情報は2、フィールド4は3、フィールド6は4、フィールド7は5となる。
T1からT2サイクルへの遷移時に、アドレスバス3が32、ライトイネーブルバス43が11111100(2進数)であることから、インストラクションバッファ40へは32番地〜55番地までが新たにラッチされ、既に保持している24番地〜31番地の情報はそのまま保持されている。同時に、命令長信号線68が24であることから、命令アドレスバス64の情報は、0に24が加算されて24に、ヘッダアドレスバス65の情報は1が加算されて1となる。
次に、命令2に着目すると、上述したT1サイクルがIFステージとなり、T2サイクルにおいては、インストラクションバッファ40に命令2が保持されている。T2サイクルでは、命令2のEXPステージが実行される。
具体的に、ヘッダアナライザ60は、ヘッダアドレスバス65が1であることから、命令2に相当するヘッダ情報はT1サイクルでラッチした情報のうち1番地の8ビットであることが判る。この情報から、ヘッダアナライザ60は、命令2が3つのフィールドから構成され、その内訳はフィールド0、1、2である、ことが判る。従って、フィールド信号線67へは命令2のヘッダ情報11100000(2進数)がそのまま出力される。さらに、命令2はその命令長が12バイトであり、命令長信号線68へは24であることを示す001100(2進数)の情報が出力される。命令長が32を越えてないので、再フェッチ信号線13はアサートされない。
アドレスコントローラ61は、初期状態のサイクル以外では命令アドレスバス64の値に32を加算した値をアドレスバス3へ出力する。従って、T2サイクルでは、56がアドレスバス3へ出力される。
パーシャルライトコントローラ62は、T2サイクルにおける命令アドレスバス64が24、命令長信号線68が12であることから、インストラクションバッファ40の7番目の4バイト境界から3バイトが命令2に相当することが判り、10000011(2進数)がライトイネーブルバス43へ出力される。
セレクトシグナルジェネレータ63は、T2サイクルにおける命令アドレスバス64が24、ヘッダ0信号線66がアサートされてないことから、命令2のフィールドは、インストラクションバッファ40の7番目の32ビット境界以降に保持されていることが判る。さらに、どのフィールドが存在するかは、フィールド信号線67の情報から判る。従って、7番目の32ビット境界には、フィールド0が保持されていることが判り、フィールド0を示す選択情報は6となり、フィールド選択信号線44へ出力される。同様に、フィールド1を示す選択情報は7、フィールド2は0となる。
T2からT3サイクルへの遷移時に、アドレスバス3が56、ライトイネーブルバス43が10000011(2進数)であることから、インストラクションバッファ40へは56番地〜67番地までが新たにラッチされ、既に保持している36番地〜55番地の情報はそのまま保持されている。同時に、命令長信号線68が12であることから、命令アドレスバス64の情報は、24に12が加算されて36に、ヘッダアドレスバス65の情報は1が加算されて2となる。
次に、命令3に着目すると、上述したT2サイクルがIFステージとなり、T3サイクルにおいては、インストラクションバッファ40に命令3が保持されている。T3サイクルでは、命令3のEXPステージが実行される。
具体的に、ヘッダアナライザ60は、ヘッダアドレスバス65が2であることから、命令3に相当するヘッダ情報はT1サイクルでラッチした情報のうち2番地の8ビットであることが判る。この情報から、ヘッダアナライザ60は、命令3が8つのフィールドから構成され、その内訳はフィールド0、1、2、3、4、5、6、7である、ことが判る。従って、フィールド信号線67へは命令3のヘッダ情報11111111(2進数)がそのまま出力される。さらに、命令3はその命令長が32バイトであり、命令長信号線68へは32であることを示す100000(2進数)の情報が出力される。命令長が32を越えてないので、再フェッチ信号線13はアサートされない。
アドレスコントローラ61は、初期状態のサイクル以外では命令アドレスバス64の値に32を加算した値をアドレスバス3へ出力する。従って、T3サイクルでは、68がアドレスバス3へ出力される。パーシャルライトコントローラ62は、T3サイクルにおける命令アドレスバス64が36、命令長信号線68が32であることから、インストラクションバッファ40の2番目の4バイト境界から32バイトが命令3に相当することが判り、11111111(2進数)がライトイネーブルバス43へ出力される。
セレクトシグナルジェネレータ63は、T3サイクルにおける命令アドレスバス64が36、ヘッダ0信号線66がアサートされてないことから、命令3のフィールドは、インストラクションバッファ40の2番目の32ビット境界以降に保持されていることが判る。さらに、どのフィールドが存在するかは、フィールド信号線67の情報から判る。従って、2番目の32ビット境界には、フィールド0が保持されていることが判り、フィールド0を示す選択情報は1となり、フィールド選択信号線44へ出力される。同様に、フィールド1を示す選択情報は2、フィールド2は3、フィールド3は4、フィールド4は5、フィールド5は6、フィールド6は7、フィールド7は0となる。
T3からT4サイクルへの遷移時に、アドレスバス3が68、ライトイネーブルバス43が11111111(2進数)であることから、インストラクションバッファ40へは68番地〜99番地までが新たにラッチされる。同時に、命令長信号線68が32であることから、命令アドレスバス64の情報は、36に32が加算されて68に、ヘッダアドレスバス65の情報は1が加算されて3となる。
次に、命令4に着目すると、上述したT3サイクルがIFステージとなり、T4サイクルにおいては、インストラクションバッファ40に命令4が保持されている。T4サイクルでは、命令4のEXPステージが実行される。
具体的に、ヘッダアナライザ60は、ヘッダアドレスバス65が3であることから、命令4に相当するヘッダ情報はT1サイクルでラッチした情報のうち3番地の8ビットであることが判る。この情報から、ヘッダアナライザ60は、命令4が1つのフィールドから構成され、その内訳はフィールド0である、ことが判る。従って、フィールド信号線67へは命令4のヘッダ情報10000000(2進数)がそのまま出力される。さらに、命令4はその命令長が4バイトであり、命令長信号線68へは4であることを示す000100(2進数)の情報が出力される。命令長が32を越えてないので、再フェッチ信号線13はアサートされない。
アドレスコントローラ61は、初期状態のサイクル以外では命令アドレスバス64の値に32を加算した値をアドレスバス3へ出力する。従って、T4サイクルでは、100がアドレスバス3へ出力される。
パーシャルライトコントローラ62は、T4サイクルにおける命令アドレスバス64が68、命令長信号線68が4であることから、インストラクションバッファ40の2番目の4バイト境界から4バイトが命令4に相当することが判り、01000000(2進数)がライトイネーブルバス43へ出力される。
セレクトシグナルジェネレータ63は、T4サイクルにおける命令アドレスバス64が68、ヘッダ0信号線66がアサートされてないことから、命令4のフィールドは、インストラクションバッファ40の2番目の32ビット境界以降に保持されていることが判る。さらに、どのフィールドが存在するかは、フィールド信号線67の情報から判る。従って、2番目の32ビット境界には、フィールド0が保持されていることが判り、フィールド0を示す選択情報は1となり、フィールド選択信号線44へ出力される。
T4からT5サイクルへの遷移時に、アドレスバス3が68、ライトイネーブルバス43が01000000(2進数)であることから、インストラクションバッファ40へは100番地〜103番地までが新たにラッチされ、既に保持している72番地〜99番地の情報はそのまま保持されている。同時に、命令長信号線68が4であることから、命令アドレスバス64の情報は、68に4が加算されて72に、ヘッダアドレスバス65の情報は3に1が加算されて0(加算結果は0〜3のラップアラウンド)となる。
次に、命令5に着目すると、上述したT4サイクルがIFステージとなり、T5サイクルにおいては、インストラクションバッファ40に命令5が保持されている。T5サイクルでは、命令5のEXPステージが実行される。
具体的に、ヘッダアナライザ60は、命令アドレスバス64が72であることから、命令5〜8のヘッダは72〜75番地に存在していることが判り、インストラクションバッファ40に保持されているこの4バイトの情報をラッチする。さらに、ヘッダアドレスバス65が0であることから、命令5に相当するヘッダ情報は72番地の8ビットであることが判る。この情報から、ヘッダアナライザ60は、命令5が8つのフィールドから構成されていることが判る。従って、フィールド信号線67へは命令5のヘッダ情報11111111(2進数)がそのまま出力される。さらに、命令5はヘッダを含めてその命令長が36バイトであり、命令長信号線68へは36であることを示す100100(2進数)の情報が出力される。命令長が32を越えるので、T5〜T6への遷移時に再フェッチ信号線13はアサートされる。
アドレスコントローラ61は、初期状態のサイクル以外では命令アドレスバス64の値に32を加算した値をアドレスバス3へ出力する。従って、T5サイクルでは、104がアドレスバス3へ出力される。
パーシャルライトコントローラ62は、T5サイクルにおける命令アドレスバス64が72、命令長信号線68が36であることから、インストラクションバッファ40の3番目の4バイト境界から32バイトが命令5に相当することが判り、11111111(2進数)がライトイネーブルバス43へ出力される。
セレクトシグナルジェネレータ63は、T5サイクルにおける命令アドレスバス64が72、ヘッダ0信号線66がアサートされていることから、命令5のフィールドは、インストラクションバッファ40の4番目の32ビット境界以降に保持されていることが判る。さらに、どのフィールドが存在するかは、フィールド信号線67の情報から判る。従って、4番目の32ビット境界には、フィールド0が保持されていることが判り、フィールド0を示す選択情報は3となり、フィールド選択信号線44へ出力される。同様に、フィールド1を示す選択情報は4、フィールド2を示す選択情報は5、フィールド3を示す選択情報は6、フィールド4を示す選択情報は7、フィールド5を示す選択情報は0、フィールド6を示す選択情報は1となる。命令長が32を越えたことから、フィールド7の情報はインストラクションバッファ40に保持されてないことが判るので次サイクル(T6)にて選択情報を出力する。
T5からT6サイクルへの遷移時に、アドレスバス3が104、ライトイネーブルバス43が11111111(2進数)であることから、インストラクションバッファ40へは104番地〜135番地までが新たにラッチされる。同時に、命令長信号線68が36であることから、命令アドレスバス64の情報は、72に36が加算されて108に、ヘッダアドレスバス65の情報は0に1が加算されて1となる。
上述したように、T5サイクルでは、命令5のフィールド7を生成できないので、命令5の付加的なEXP(EXP2)ステージとしてT6サイクルが必要になる。
T6サイクルでは、再フェッチ信号線13がアサートされていることで、EXP2ステージであることが判る。再フェッチ信号線13がアサートされていると、ヘッダアナライザ60、アドレスコントローラ61、パーシャルライトコントローラ62及びセレクトシグナルジェネレータ63は特殊な動作となる。
具体的に、アドレスコントローラ61は、命令アドレスバス64の108に28を加算した136をアドレスバス3へ出力する。また、T6からT7への遷移時に、ヘッダアドレスは1を加算されずに1のままとなる。
ヘッダアナライザ60は、0を命令長信号線68へ出力する。従って、T6からT7への遷移時に命令アドレスバス64の情報は108のまま変化しない。パーシャルライトコントローラ62は、命令アドレスバス64が108であり、命令5のフィールド7は、インストラクションメモリ1の104番地に存在していることから、インストラクションバッファ40の3番目の4バイト境界にあることが判り、00100000(2進数)をライトイネーブルバス43へ出力する。
同様に、セレクトシグナルジェネレータ63は、命令アドレスバス64が108であ、命令5のフィールド7は、インストラクションメモリ1の104番地に存在していることから、インストラクションバッファ40の3番目の4バイト境界にあることが判り、3をフィールド7に対応するフィールド選択信号線へ出力する。
T5からT6サイクルへの遷移時に、アドレスバス3が136、ライトイネーブルバス43が00100000(2進数)であることから、インストラクションバッファ40へは136番地〜139番地までが新たにラッチされ、既に保持している108番地〜135番地の情報はそのまま保持されている。
次に、命令6に着目すると、上述したT6サイクルがIFステージとなり、T7サイクルにおいては、インストラクションバッファ40に命令6が保持されている。T7サイクルでは、命令6のEXPステージが実行される。
具体的に、ヘッダアナライザ60は、ヘッダアドレスバス65が1であることから、命令6に相当するヘッダ情報はT5サイクルでラッチした情報のうち2番目のバイト境界であることが判る。この情報から、ヘッダアナライザ60は、命令6が3つのフィールドから構成され、その内訳はフィールド1、2、3である、ことが判る。従って、フィールド信号線67へは命令6のヘッダ情報01110000(2進数)がそのまま出力される。さらに、命令6はその命令長が12バイトであり、命令長信号線68へは12であることを示す001100(2進数)の情報が出力される。命令長が32を越えてないので、再フェッチ信号線13はアサートされない。
アドレスコントローラ61は、初期状態のサイクル以外では命令アドレスバス64の値に32を加算した値をアドレスバス3へ出力する。従って、T7サイクルでは、140がアドレスバス3へ出力される。
パーシャルライトコントローラ62は、T7サイクルにおける命令アドレスバス64が108、命令長信号線68が12であることから、インストラクションバッファ40の4番目の4バイト境界から12バイトが命令6に相当することが判り、00011100(2進数)がライトイネーブルバス43へ出力される。
セレクトシグナルジェネレータ63は、T7サイクルにおける命令アドレスバス64が108、ヘッダ0信号線66がアサートされてないことから、命令6のフィールドは、インストラクションバッファ40の4番目の32ビット境界以降に保持されていることが判る。さらに、どのフィールドが存在するかは、フィールド信号線67の情報から判る。従って、4番目の32ビット境界には、フィールド1が保持されていることが判り、フィールド1を示す選択情報は3となり、フィールド選択信号線44へ出力される。同様に、フィールド2を示す選択情報は4、フィールド3は5となる。
T7からT8サイクルへの遷移時に、アドレスバス3が140、ライトイネーブルバス43が00011100(2進数)であることから、インストラクションバッファ40へは140番地〜151番地までが新たにラッチされ、既に保持している120番地〜139番地の情報はそのまま保持されている。同時に、命令長信号線68が12であることから、命令アドレスバス64の情報は、108に12が加算されて120に、ヘッダアドレスバス65の情報は1に1が加算されて2となる。
命令6以降が順次同様のシーケンスで繰り返し実行される。各命令のEXPステージからEXEステージに遷移する時に、各命令レジスタ14〜21に、伸張された命令フィールドがラッチされる。従って、EXEステージでは、各命令レジスタ14〜21に制御下で各演算ユニット22〜25が演算を実行する。実行結果は、WBステージにおいて、命令フィールドで指定されたレジスタへ書き込まれて、命令が終了する。
以上が、フィールドコントローラ42の動作説明である。以下、その構成要素であるヘッダアナライザ60、アドレスコントローラ61、パーシャルライトコントローラ62及びセレクトシグナルジェネレータ63の詳細構成を説明する。
第11図は、ヘッダアナライザ60の詳細を示すブロック図である。同図において、第8図と同一機能を有する回路ブロック及び同一信号線には同一符号を付してある。図中、80は8個の4バイトデータから1個を選択するセレクタ、81〜83は各々1バイトデータのラッチ回路、84は4個の1バイトデータから1個を選択するセレクタ、85は1ビット9入力の加算器、86は4ビットのデコーダ、87は論理積回路87、88は1ビットのラッチ回路、89は1ビットの反転回路、90は論理積回路90である。
セレクタ80は、32ビットの命令アドレスバス64(IA31〜IA0)のうち、IA4〜IA2の3ビットからヘッダの位置を特定して、4バイト(4命令分の)ヘッダ情報を出力する。ヘッダ0信号線66はアサートされていると、ヘッダ情報のうち、1番目の命令ヘッダはセレクタ84へ、2番目の命令ヘッダはラッチ回路81へ、3番目の命令ヘッダはラッチ回路82へ、4番目の命令ヘッダはラッチ回路83へ出力される。
セレクタ84は、ヘッダアドレスバス65の情報に従って、0ならば上記1番目のヘッダ情報、1ならば上記ラッチ回路81へ保持したヘッダ情報、2ならば上記ラッチ回路82へ保持したヘッダ情報、3ならば上記ラッチ回路83へ保持したヘッダ情報を選択してフィールド信号線67へ出力する。
フィールド信号線67の情報から、加算器85は命令長情報を生成する。9入力の内訳は、フィールド信号線67の8ビットとヘッダ0信号線66の1ビットである。基本的には、フィールド信号線67のフィールド数を数えることで命令長が判る。さらに、ヘッダ0信号線66がアサートされているサイクルでは、命令がヘッダ情報を含んでいるので、フィールド数から生成した命令長に1を加算する。従って、加算器85の加算結果は0〜9の範囲であり、命令長を4ビットの情報で出力する。実際の命令長は、上記加算結果に4を乗算した値であり、0〜36バイト長となる。
デコーダ86は、36バイト長の命令を検出する回路であり、入力情報が9の時出力をアサートする。
デコーダ86の出力がアサートされると、サイクルが遷移するタイミングで、ラッチ回路88は、再フェッチ信号線13をアサートする。
再フェッチ信号線13がアサートされると、反転回路89の出力がネゲートされ、論理積回路87はデコーダ86の出力をマスクする。
この状態において、サイクルが遷移するタイミングで、ラッチ回路88は、再フェッチ信号線13をネゲートする。すなわち、再フェッチ信号線13は、アサートされた次のサイクルでは、必ずネゲートされる。再フェッチ信号線13がアサートされると、反転回路89の出力が加算器85の出力をマスクし、論理積回路90は命令長0の情報を命令長信号線68へ出力する。アサートされなければ、加算器85が出力する命令長情報は、命令長信号線68へ出力される。
以上のように、ヘッダアナライザ60は、命令長信号線68、フィールド信号線67、再フェッチ信号線13の各々へ必要な情報を出力できる。
次に、パーシャルライトコントローラ62の詳細動作を説明する。第12図は、パーシャルライトコントローラ62の詳細構成を示すブロック図である。同図において、第8図と同一機能を有する回路ブロック及び同一信号線には同一符号を付して有る。
図中、100は4ビット入力8ビット出力のデコーダ、101は8ビットのバレルシフタ、102は3ビットの加算器、103はアドレスバス3ビット入力8ビット出力のデコーダ、104はバレルシフタ101とデコーダ103の出力を選択してライトイネーブルバス43へ出力するセレクタである。
デコーダ100は、同図に示す変換テーブルに従って、8ビットの情報を生成する。
この情報は、バレルシフタ101において、命令アドレスバス64の3ビット(IA4〜IA2)の情報に従って、ローテートされる。これにより、バレルシフタ101が出力する情報は、命令アドレスバス64が示す命令が、インストラクションバッファ40内のどこに保持されているかを4バイト単位で示している。すなわち、この情報は、次のサイクルへの遷移時に、更新するべきインストラクションバッファ40の場所を示している。
従って、再フェッチ信号線13がアサートされてない場合、セレクタ104がこの情報を選択してライトイネーブルバス43へ出力される。一方、再フェッチ信号線13がアサートされたサイクルでは、命令アドレスバス64は次の命令の先頭番地を示しているので、その番地から4を減じた値が命令のフィールド7の格納番地となる。
インストラクションバッファ40におけるこのフィールド7の格納位置を求めるために、加算器102は、命令アドレスバス64の3ビット(IA4〜IA2)の情報に7(110、2進数)を加算する。その加算結果は、デコーダ103の図中に示す変換テーブルに従って、ライトイネーブルバス43へ出力する情報を生成する。
そのために、セレクタ104は、再フェッチ信号線13がアサートされると、デコーダ103の出力を選択する。
以上のように、パーシャルライトコントローラ62はライトイネーブルバス43へ必要な情報を出力できる。
次に、アドレスコントローラ61の詳細動作を説明する。第13図は、アドレスコントローラ61の詳細構成を示すブロック図である。同図において、第8図と同一機能を有する回路ブロック及び同一信号線には同一符号を付して有る。
図中、110は32ビットのアドレス命令アドレス情報を保持するプログラムカウンタ、111は32ビットの加算器、112は2ビットのヘッダカウントレジスタ、113は2ビットの加算器、114は論理和の否定情報を出力する2入力のNOR回路、115は32と28のどちらかを選択するセレクタ、116はセレクタ115の出力か0かを選択するセレクタ、117は32ビットの加算器である。
プログラムカウンタ110は、サイクルが遷移する毎に、命令アドレス情報を更新する。更新情報は、加算器111が命令長信号線68の情報とプログラムカウンタ110の命令アドレス情報を加算することで生成される。生成した情報は、命令アドレスバス64へ出力される。
ヘッダカウントレジスタ112はヘッダアドレス情報(0〜2)を保持しており、プログラムカウンタ110と同様に、サイクルが遷移する毎に、ヘッダアドレス情報を更新する。更新情報は、加算器111がヘッダアドレス情報に1を加算することで生成される。生成した情報は、ヘッダアドレスバス65へ出力される。
NOR回路114は、ヘッダアドレス情報が0であることを検出して、ヘッダ0信号線66をアサートする。
セレクタ115は、再フェッチ信号線13がアサートされてない場合“32"を、再フェッチ信号線13がアサートされている場合“28"を選択して出力する。
セレクタ116は、初期状態の場合のみ0を選択し、それ以外はセレクタ115の出力を選択する。
加算器117は、命令アドレスバス64の情報とセレクタ116の出力情報を加算した結果をアドレスバス3へ出力する。
以上のように、アドレスコントローラ61は、命令アドレスバス64、ヘッダアドレスバス65、ヘッダ0信号線66及びアドレスバス3へ必要な情報を出力できる。
次に、セレクトシグナルジェネレータ63の詳細動作を説明する。第14図は、セレクトシグナルジェネレータ63の詳細構成を示すブロック図である。同図において、第8図と同一機能を有する回路ブロック及び同一信号線には同一符号を付して有る。
図中、120はオフセット生成回路、121は3ビットの加算器、122〜128は3ビットの加算器、129は3ビットの加算器、130はセレクタである。
オフセット生成回路120は、第1番目のフィールドの位置を0とした場合の、フィールド1〜7の相対位置を示す各3ビットの情報を生成する。相対位置は、インストラクションメモリ1に格納してある圧縮状態での相対位置である。従って、オフセット生成回路120は、存在するフィールドの相対位置のみ有効な情報を出力する。オフセット生成回路120の詳細は、後述する。
加算器121は、命令アドレスバス64の3ビット(IA4〜IA2)の情報に、ヘッダ0信号線66の1ビット情報を加えた結果を出力する。ヘッダを含む命令において、命令アドレスバス64の情報はヘッダの位置を指しているので、その命令の第1番目のフィールド位置を知るために、加算器121での加算が必要になる。加算結果は、フィールド0が存在する場合、フィールド0の位置を示しているので、フィールド選択信号線44へ出力される。
加算器122は、オフセット生成回路120が出力するフィールド1の相対位置情報と第1番目のフィールド位置情報を加算することで、フィールド1の絶対位置情報を生成する。以下同様に、加算器123〜128は、オフセット生成回路120が出力するフィールド2〜7の各々の相対位置情報と第1番目のフィールド位置情報を加算することで、フィールド2〜7の絶対位置情報を生成する。
とくに、セレクタ130は、再フェッチ信号線13がアサートされてない場合にレジスタファイル28の出力を選択し、再フェッチ信号線13がアサートされている場合は加算器129の出力を選択して、フィールド7の選択情報として出力する。
再フェッチ信号線13がアサートされている状態では、命令アドレスバス64は次の命令アドレス情報を示しているので、フィールド7のアドレス情報は、上記アドレス情報から4を減算した結果となる。従って、加算器129は、加算器121と同様に、命令アドレスバス64の3ビット(IA4〜IA2)の情報に−1(111、2進数)を加算することで、フィールド7の選択情報を生成する。
以上のように、セレクトシグナルジェネレータ63は、フィールド選択信号線44などへ必要な選択情報を出力できる。
第15図は、前述したオフセット生成回路120の詳細構成図である。同図において、第14図と同一回路ブロック及び同一信号線には同一符号を付してある。
図中、131は1ビット2入力の加算器、132は1ビット3入力の加算器、133は1ビット4入力の加算器、134は1ビット5入力の加算器、135は1ビット6入力の加算器、136は1ビット7入力の加算器である。
オフセット生成回路120において、フィールド1の相対位置情報は、フィールド0が存在する場合1、存在しない場合0なので、フィールド信号線67のフィールド0の情報そのものとなる。フィールド2の相対位置情報は、フィールド0とフィールド1の有無に依存しており、両方存在しない場合0、どちらか一方が存在する場合1、両方が存在する場合2となる。したがって、加算器131において、フィールド0とフィールド1の各1ビット情報を加算することで、相対位置情報が生成される。
同様に、フィールド3の相対位置情報は、フィールド0〜2の有無に依存しており、加算器132において、フィールド0〜2の各1ビット情報を加算することで、生成される。同様に、フィールド4の相対位置情報は、フィールド0〜3の有無に依存しており、加算器133において、フィールド0〜3の各1ビット情報を加算することで、生成される。同様に、フィールド5の相対位置情報は、フィールド0〜4の有無に依存しており、加算器134において、フィールド0〜4の各1ビット情報を加算することで、生成される。同様に、フィールド6の相対位置情報は、フィールド0〜5の有無に依存しており、加算器135において、フィールド0〜5の各1ビット情報を加算することで、生成される。同様に、フィールド7の相対位置情報は、フィールド0〜6の有無に依存しており、加算器136において、フィールド0〜6の各1ビット情報を加算することで、生成される。
以上がフィールドコントローラ42の詳細説明であり、以下、SIMDコントローラ46の詳細を説明する。
即ち、第16図は、SIMDコントローラ46の詳細を示すブロック図である。同図において、第7図と同一機能を有する回路ブロック及び同一信号線には同一符号を付して有る。図中、140はイネーブルアナライザ140、141〜143は140と同一機能のイネーブルアナライザ、144はシグナルジェネレータ、145〜147は144と同一機能のシグナルジェネレータ、148〜150は2入力の論理積回路、151〜154と156は左側の入力1ビットが0の場合0、1の場合右側の2ビットの情報を出力する論理積回路、155は4入力の1ビット論理和の否定情報を出力するNOR回路155である。
イネーブルアナライザ140は、フィールド0でSIMDモードを指定しているかを検出するものであり、伸張フィールドバス49からフィールド0のビット9〜11(“SIMD")とビット27(“Sモード”)の4ビットを入力する(第2図参照)。“Sモード”が0の場合、論理積回路148、149及び150は、0を出力する。一方、Sモードビットが1の場合、論理積回路148はビット9の情報を、論理積回路149はビット10の情報を、論理積回路150はビット11の情報を出力する。第2図に示した“SIMD"の意味にしたがって、論理積回路148の情報が1の場合、フィールド0と1の内容をフィールド1と2へ複写することを示す。同様に、論理積回路149の情報が1の場合フィールド0と1の内容を4と5へ、論理積回路150の情報が1の場合フィールド0と1の内容を6と7へ複写することを示す。
同様に、イネーブルアナライザ141はフィールド2で、イネーブルアナライザ142はフィールド4で、イネーブルアナライザ143はフィールド6で、SIMDモードを指定しているかを検出して、複写先を特定する。各イネーブルアナライザ140〜143からの複写指示は、各シグナルジェネレータへ送られる。具体的に、シグナルジェネレータ144は、フィールド0と1がどのフィールドから複写されるかを決定するものであり、フィールド2と3からの複写指示は論理積回路152へ、フィールド4と5からの複写指示は論理積回路153へ、フィールド6と7からの複写指示は論理積回路154へ送られる。これらの複写指示が複数のイネーブルアナライザから同時に送られることはない。このことは、基本的に、コンパイラが保証している。また、同様の理由から、シグナルジェネレータ144においてイネーブルアナライザ140から複写指示が挙げられることはないので、論理積回路151の入力は、0で固定している。
論理積回路152は複写指示を受けると複写元としてフィールド2と3を選択するための情報である1を出力する。同様に、論理積回路153は2、論理積回路154は3を出力する。複写指示がない(SIMDモードでない)場合、NOR回路155はこれを検出し、論理積回路156は、フィールド0と1が選択されるように選択情報0を出力する。最終的には、論理和回路157が、論理積回路151から154と156が出力する3ビット情報の論理和を、フィールド0と1の選択情報としてSIMD選択信号線47へ出力する。
シグナルジェネレータ145は、基本的には、シグナルジェネレータ144と同様に動作する。ただし、フィールド2と3の選択情報を出力するので、イネーブルアナライザ141から複写指示が送られることはないのでそれに対応する入力は0で固定すると共に、複写指示がない(SIMDモードでない)ことを検出するとフィールド2と3が選択されるように選択情報1を出力する。
同様に、シグナルジェネレータ146も、基本的には、シグナルジェネレータ144と同様に動作する。ただし、フィールド4と5の選択情報を出力するので、イネーブルアナライザ142から複写指示が送られることはないのでそれに対応する入力は0で固定すると共に、複写指示がない(SIMDモードでない)ことを検出するとフィールド4と5が選択されるように選択情報2を出力する。
さらに、シグナルジェネレータ147も、基本的には、シグナルジェネレータ144と同様に動作する。ただし、フィールド6と7の選択情報を出力するので、イネーブルアナライザ143から複写指示が送られることはないのでそれに対応する入力は0で固定すると共に、複写指示がない(SIMDモードでない)ことを検出するとフィールド6と7が選択されるように選択情報3を出力する。
以上が、第1図に示した第一の実施例である。本実施例は、NOPの圧縮用のヘッダがあることを前提にして、そのヘッダをSIMDモードでも活用する方式である。
通常、VLIWにおいては、オブジェクトの約80%をNOPが占めている。従って、NOP圧縮は、メモリの使用効率を考慮すると必須の技術である。この技術で用いるヘッダをSIMDモードでも活用することで、オーバーヘッドを軽減できることが、本実施例の特徴である。
本実施例では、各フィールド当たり4ビットの追加で、SIMDモードを実現しているが、ヘッダを前提にしない場合には、各フィールドに7ビットを追加する必要がある。つまり、本実施例で使用した4ビットに加えて、フィールドアドレスの2ビットと同期制御の1ビットが必要になる。
SIMDモード時に省略されたフィールドが存在するので、各フィールド自身がフィールド0、1、または2、3、または4、5、または6、7のどれかを知っている必要がある。このために必要なのがフィールドアドレスの2ビットである。さらに、1命令のフィールド数が不定なので、命令の切れ目が不明である。このために必要なのが同期制御の1ビットであり、1命令毎にビットの情報を反転することで、命令の切れ目検出が可能になる。従って、実施例と同様に1フィールド単位で圧縮を可能にすることまで考慮すると、1命令(32ビット×8=256ビット)当たり、
Figure 0003547139
ただし、[]内は、その数字の意味を示す
が必要になる。2フィールド単位での圧縮に限ると、1命令当たり、
8/2×(2+1)+8/2×(3+1)=28ビット
になる。一方、本実施例では、ヘッダを含めた1命令当たり、
8[ヘッダ]+8/2×(3+1)=24ビット
で済むことになり、SIMDモードを実現する上でのオーバーヘッドを軽減できる。
次に、上述したヘッダを前提にしない方式を第2の実施例として、第17図を用いて説明する。とくに、本実施例では、上記したうちの、2フィールド単位で圧縮することを前提に考える。同図は、VLIWプロセッサの全体ブロック図である。同図において、第1図と同一機能を有する回路ブロック及び同一信号線には同一符号を付して有る。図中、200は、第1図とは異なる命令伸張回路である。本実施例では、ヘッダを使用しないので、必ず、1命令は32バイト以内に収まり、第1図の再フェッチ信号線13は不要となる。すなわち、第10図に示した命令5で必要になったEXP2ステージは、存在しない。この点が、本実施例の特徴のひとつである、この点と命令伸張回路200の内部動作を除いては、第1図と同じである。
第18図に、本実施例の命令フォーマットを示す。同図においては、INTフィールドとIFGフィールドの0〜27ビットは、第1の実施例と同じである。IFGフィールドの28、29ビットは、そのフィールドのアドレスを示している。IFGフィールドは、フィールド0、2、4及び6の何れかであり、ビット割付は図中のとおりである。また、IFGフィールドのビット30(シンク)は同期信号である。1命令毎に、シンクビットを反転することで、命令の切れ目を認識できるようになる。図中、偶数番目の命令はシンクビットが0、奇数番目の命令はシンクビットが1となる仕様としてある。このような命令フォーマットをベースにして、以下に、本実施例のポイントである命令伸張回路200の詳細動作を説明する。
第19図は命令伸張回路200の詳細を示すブロック図である。同図において、第17図及び第7図と同一機能を有する回路ブロック及び同一信号線には同一符号を付して有る。
図中、201は1命令を生成する各フィールドを、圧縮フィールドバス41から選択する情報を生成するフィールドコントローラ、206〜209は上記選択情報を転送する選択情報線、202はフィールド0と1を生成するデュアルセレクタ、203はフィールド2と3を生成するデュアルセレクタ、204はフィールド4と5を生成するデュアルセレクタ、205はフィールド6と7を生成するデュアルセレクタである。図中明示していないが、デュアルセレクタ203〜205は、デュアルセレクタ202と同一の回路構成である。インストラクションバッファ40から同時に読み出される32バイトは、1フィールドに相当する4バイト単位の8本の信号線(41a〜41h)で構成されている。41aは(32×N)番地、41bは(32×N+4)番地、・・・・・・、41hは(32×N+28)番地から読み出されたデータに対応している。
デュアルセレクタ202は、選択情報線206の選択情報に従って、圧縮フィールドバス41a、41c、41e、41gの中から選択したフィールド0のデータをフィールドバス5へ、圧縮フィールドバス41b、41d、41f、41hの中から選択したフィールド1のデータをフィールドバス6へ出力する。選択情報線206の選択情報は、4ビットで構成されており、基本的にはその中の1ビットがアサートされるが、全てがアサートされてない場合NOPフィールドであるとみなし、NOPコードに相当する0を出力する。これにより、2フィールド単位でのNOP圧縮が可能になる。デュアルセレクタ203〜205も同様に、フィールド2〜7のデータを生成して出力する。
次に、フィールドコントローラ201の詳細を説明する。第20図は、フィールドコントローラ201の詳細を示すブロック図である。同図において、第8図と第19図と同一機能を有する回路ブロック及び同一信号線には、同一符号を付して有る。
図中、210は圧縮フィールドバス41と命令アドレスバス64の情報から命令長信号線68とライトイネーブルバス43へ出力する情報を生成するシンクロナイザ、211は圧縮フィールドバス41とライトイネーブルバス43の情報から選択情報線206〜209への選択情報を生成するセレクトシグナルジェネレータである。アドレスコントローラ61は第8図に示したアドレスコントローラ61と基本的に同一機能を有している。
シンクロナイザ210は、圧縮フィールドバス41から41a、c、e及びgのシンクビットを入力する。また、命令アドレスバス64から命令アドレスを入力することで、処理中の命令が上記どのシンクビットであるかを特定できる。さらに、シンクビットの変化点を調べることで、その命令長をしることができる。さらに、その命令が存在する上記圧縮フィールドバス41内のデータを特定し、次にインストラクションバッファ40へ書き込むべき位置を示す情報を命令長信号線68へ出力する。
セレクトシグナルジェネレータ211は、ライトイネーブルバス43の情報と、圧縮フィールドバス41から41a、c、e及びgの“SIMD"、“Sモード”及びアドレス情報を入力する。また、これらの情報から、フィールド0の位置情報4ビット(41a、c、eまたはhの4つのうちの何れかを示す情報)を選択情報線206へ出力する。フィールド0がNOP圧縮されていると4ビット全てが0になる。これは、同時に、フィールド1の選択情報(41b、d、fまたはgの4つのうちの何れかを示す情報)でもある。同様に、フィールド2の位置情報4ビット(41a、c、eまたはhの4つのうちの何れかを示す情報)を選択情報線207へ、フィールド4の位置情報4ビット(41a、c、eまたはhの4つのうちの何れかを示す情報)を選択情報線208へ、フィールド6の位置情報4ビット(41a、c、eまたはhの4つのうちの何れかを示す情報)を選択情報線209へ、出力する。以下に、シンクロナイザ210とセレクトシグナルジェネレータ211の詳細動作を説明する。
第21図は、シンクロナイザ210の詳細を示すブロック図である。同図において、第20図同一機能を有する回路ブロック及び同一信号線には同一符号を付して有る。
図中、220はインストラクションバッファ40の41aとbへの書き込み有効になる情報を生成するライトイネーブル生成回路、221〜223は、ライトイネーブル生成回路220と同一機能を有しており、各々、インストラクションバッファ40の41cとdへ、41eとfへ、41gとhへの書き込み有効になる情報を生成するライトイネーブル生成回路、224は命令アドレスバス64の情報のうち、IA4とIA3の2ビットをデコードするデコーダである。デコーダ224が出力する4本の信号線は、セレクトシグナルジェネレータ63が41aと41bを示す信号、41cと41dを示す信号、41eと41fを示す信号及び41gと41hを示す信号である。
ライトイネーブル生成回路220は、41aとbの書き込み有効情報を生成する。圧縮フィールドバス41から41aと41gのシンク情報、デコーダ224から41aとbのデコード信号及びライトイネーブル生成回路223から書き込み有効情報を入力する。デコーダ224からのデコード信号が、アサートされると、ライトイネーブル生成回路220は書き込み有効情報をアサートする。デコード信号がアサートされてない場合、ライトイネーブル生成回路223の出力がアサートされてないと、書き込み有効情報をネゲートする。デコード信号がアサートされてなく、かつ、ライトイネーブル生成回路223がアサートされている場合、41aのシンク情報と41gのシンクビットを比較して、同一ならば命令の切れ目でないと判断して書き込み有効情報をアサートする。逆に、比較結果が同一でない場合、命令の切れ目であると判断して、書き込み有効情報をネゲートする。
このように、ライトイネーブル生成回路220は、41aとbの書き込み有効情報を生成する。これにより、次サイクルへの遷移時に、インストラクションバッファ40へ書き込むか否かを制御する。同様の考え方で、ライトイネーブル生成回路221は41cとd書き込み有効情報を、ライトイネーブル生成回路222は41eとf書き込み有効情報を、ライトイネーブル生成回路223は41gとh書き込み有効情報を生成して、ライトイネーブルバス43へ出力する。加算器225は、ライトイネーブル生成回路220〜223の4つの信号を入力して、1ビットの4入力加算結果を命令長信号線68へ出力する。1ビットは8バイト(2フィールド分)なので、加算結果は、最大32バイトである。加算結果は、命令長情報として命令長信号線68へ出力される。
次に、セレクトシグナルジェネレータ211の詳細動作を説明する。第22図はセレクトシグナルジェネレータ211の詳細を示すブロック図である。同図において、第20図と同一機能を有する回路ブロック及び同一信号線には同一符号を付して有る。
230〜233は、同一機能を有する行き先信号生成回路である。行き先信号生成回路230においては、234が図中に示した真理値表を実現する組み合わせ回路、235が2ビットのデコーダ、236〜239は同一機能を有する論理回路である。
行き先信号生成回路230は、41aとcがどのフィールドに相当するかを決定している。論理回路236はフィールド0と1に相当することを、論理回路237はフィールド2と3に相当することを、論理回路238はフィールド4と5に相当することを、論理回路239はフィールド6と7に相当することを示す。したがって、41aとbがフィールド0と1に相当すると論理回路236の出力が、フィールド2と3に相当すると論理回路237の出力が、フィールド4と5に相当すると論理回路238の出力が、フィールド6と7に相当すると論理回路239の出力が、アサートされる。また、41aの命令がSIMDモードを指定していると、行き先信号生成回路230は複数の信号を同時にアサートする。例えば、他の3つのフィールド全てに複写する場合、論理回路236〜239の出力信号が全てアサートされる。
行き先信号生成回路230は、圧縮フィールドバス41の中から41aの“SIMD"、“Sモード”及びアドレスを入力する。これらの入力情報から、組み合わせ回路234は、図に示した真理値表にしたがって、sf0〜3の出力情報を生成する。sf0〜3は、41aのフィールドがSモードを指定時に、41aの複写先フィールドを指定する信号である。図中、a、b及びcは“SIMD"3ビットの論理値を示す。したがって、sf0〜3のa、b及びcは、その論理値をそのまま出力することを示している。sf0は、41aフィールドがSIMDモードを指定しており、複写先としてフィールド0が指定されている時にアサートされる。同様に、sf1〜3は、複写先としてフィールド2、4、6が指定されている時にアサートされる。
デコーダ235は、フィールドのアドレス情報をデコードして、41aがどのフィールドであるかを示す。フィールド0ならば論理回路236への出力を、フィールド2ならば論理回路237への出力を、フィールド4ならば論理回路238への出力を、フィールド6ならば論理回路239への出力を、アサートする。
また、行き先信号生成回路230は、ライトイネーブルバス43の中から43aの書き込み有効情報を入力する。この情報がアサートされていることは、43aが実行命令のフィールドであることを示す。したがって、この信号がアサートされてない場合、論理回路236〜239の出力は、全てアサートされることはない。逆に、アサートされている場合、デコーダ235の出力線の中のアサートされている一つの信号線が接続されている論理回路が出力信号をアサートする。アドレスが00(2進数)ならば論理回路236が、アドレスが01(2進数)ならば論理回路237が、アドレスが10(2進数)ならば論理回路238が、アドレスが11(2進数)ならば論理回路239が、出力信号をアサートする。例えば、論理回路236がアサートしており、SIMDモードでフィールド2と4への複写を指定していると、行き先信号生成回路230が論理回路237と238への信号をアサートするので、論理回路236と237の出力信号もアサートされる。
以上のように、行き先信号生成回路230は、41aがどの命令フィールドに相当するかを、さらに、SIMDモード時の複写先フィールドを解析した上で、41aの行き先フィールドを、選択情報線206を介してデュアルセレクタ202に対して指定する。同様に、行き先信号生成回路231は41c、行き先信号生成回路232は41e、行き先信号生成回路233は41g、がどの命令フィールドに相当するかを、さらに、SIMDモード時の複写先フィールドを解析した上で、各々41c、41e、41gのフィールド情報の行き先フィールド番号を各デュアルセレクタに対して指定する。
これら行き先信号生成回路230〜233の出力信号で出力する行き先がフィールド0であるものは選択情報線206へ出力される。同様に、これら行き先信号生成回路230〜233の出力信号で出力する行き先が、フィールド2であるものは選択情報線207へ、フィールド4であるものは選択情報線208へ、フィールド6であるものは選択情報線209へ、出力される。これらの選択情報を使って、第19図におけるデュアルセレクタ202〜205が圧縮フィールドバス41の情報から各フィールド情報を選択することができる。
以上が、第2の実施例である。この実施例の特徴は、第1の実施例のようにヘッダ情報を用いることなく、SIMDモードを実現している点である。これによる利点は、最大命令長が32バイトのため、次に実行する命令が必ずインストラクションバッファ40(32バイト)内に揃っていることが保証されるので、1命令を揃えるために1サイクル余分に必要とするケースがなくなり、パイプラインの制御が容易になることである。第1の実施例において上記余分な1サイクルを不要にするためには、64バイトのバッファを用意する必要がある。しかし、本実施例では、これを必要とせず、ハードウエア量が少なくて済むという特徴がある。
次に、第3の実施例について、第23図を用いて説明する。同図において、第17図と同一機能有する回路ブロック及び同一信号線には同一符号を付して有る。
図中、240は各演算ユニットに共通のレジスタファイル、241は本実施令特有の命令伸張回路である。本実施例は、レジスタファイル240が各演算ユニット共通な構成となっている点が特徴である。この場合、命令フォーマットにおいて、レジスタを指定する方法が異なる。
本実施例の具体的な命令フォーマットを第24図に示す。同図は、基本的には、第18図と同様であるが、以下の点で異なっている。デスティーションとしてバンク指定が不要になるため、IFGフィールドのビット9〜11は、SIMDモード時にだけ有効となり、ノーマルモード時には意味を持たない。同様に、INTフィールドのビット11〜13も無効となっている。この場合、SIMDモード時に問題が発生する。つまり、各フィールドが指定するレジスタ番号が物理的に同じレジスタを示すため、レジスタリソースの競合が発生する。このため、SIMDモードによって複写されたフィールドのレジスタ番号を調整して、競合発生を避ける必要がある。これは、命令伸張回路241によって行われる。
第25図は命令伸張回路241の詳細ブロック図である。同図において、第23図及び第19図と同一機能を有する回路ブロック及び同一信号線には同一符号を付して有る。
図中、250〜253は、レジスタアジャスタである。レジスタアジャスタ250は、入力したフィールドのビット27をチェックする。もしノーマルモードならば、そのフィールド内のレジスタ番号の変更は行わない。逆に、SIMDモードならば、ビット28と29のアドレスをチェックする。その結果、アドレスがフィールド0ならば複写元フィールドであると判断できるので、レジスタ番号の変更を行わない。逆に、これ以外のフィールドならば、複写先のフィールドであると判断してレジスタ番号(ビット12〜16、17〜21、22〜26)を更新する。具体的に、フィールド3ならばオフセット値1、フィールド2ならばオフセット値2、フィールド1ならばオフセット値3を各レジスタ番号に加える。
同様に、レジスタアジャスタ251も動作する。レジスタアジャスタ251は、入力したフィールドのビット27をチェックする。もしノーマルモードならば、そのフィールド内のレジスタ番号の変更は行わない。逆に、SIMDモードならば、ビット28と29のアドレスをチェックする。その結果、アドレスがフィールド1ならば複写元フィールドであると判断できるので、レジスタ番号の変更を行わない。逆に、これ以外のフィールドならば、複写先のフィールドであると判断してレジスタ番号(ビット12〜16、17〜21、22〜26)を更新する。具体的に、フィールド0ならばオフセット値1、フィールド3ならばオフセット値2、フィールド2ならばオフセット値3を各レジスタ番号に加える。以下、レジスタアジャスタ252と253も同様に動作する。このようなレジスタアジャスタ250〜253は、上記した動作を簡単な組み合わせ回路で実現できる。
組み合わせ回路を実現するための真理値表を第26図に示す。同図において、入力フィールドのSモードはビット27、アドレスはビット28と29、レジスタ#はビット12〜16、17〜21、22〜26の各入力値(0〜31)を示している。出力フィールドのレジスタ#は、ビット12〜16、17〜21、22〜26の各出力値を示している。とくに、出力レジスタ#が31を越えた場合は、32を引いた値とする。
このように、レジスタファイルが複数の演算器で共通に使用される構成のプロセッサにも本発明は、適用可能である。
なお、上記第1、2、3の実施例での命令フォーマットは一例であって、これに限るものではない。
また、第1、2、3の実施例共に、静的なスケジューリングを前提にするVLIWプロセッサに適用したものであるが、本発明は、このアーキテクチャに限定するものではない。例えば、動的にスケジューリングを行うスーパースカラ型プロセッサにも、本発明は適用できる。スーパースカラ型プロセッサの1命令は、基本的に前述の実施例で言うところの1フィールドの固定長で構成されている。このようなプロセッサは、複数の演算ユニットと命令キューを内蔵しており、キューの中に存在する複数命令の依存関係を調べて、その結果、依存関係がなく、実行可能な複数の命令が存在すると、それらの命令を同時に複数の演算ユニットへ転送するディスパッチャを備えている。したがって、本発明の第2図で示したように、“Sモード”と“SIMD"によってSIMDモードが命令フォーマット中で指定されていると、上記ディスパッチユニットがその命令を複数の演算ユニットへ転送することで、スーパースカラ型プロセッサのSIMDモードが容易に実現できる。
具体的な全体ブロック図は、第27図に示す。同図において、第23図と同一機能を有する回路ブロック及び同一信号線には同一符号を付して有る。図中、260はスーパースカラ型アーキテクチャに対応した命令伸張回路である。
また、この実施例における命令フォーマットを第28図に示す。同図に示すとおり、IFG及びINTフィールドが各々1命令である。したがって、命令がどちらのフォーマットであるかを知る必要があるため、ビット31が0の時にIFGフォーマット、1の時のINTフォーマットであることを示す。このビット以外は、第24図と同様である。ただし、INT命令フォーマットの“デスティネーション”、“ソース0"、“ソース1"及びスペアブロックは、そのビット位置が異なっている。したがって、命令伸張回路260が、同時に実行可能な複数の命令を抽出して、各演算ユニットへ投入することになる。
命令伸張回路260の詳細構成を第29図に示す。同図において、第27図及び第25図と同一機能を有する回路ブロック及び同一信号線には、同一符号を付してある。
図中、270は命令のスケジューリングを行い各演算器への命令投入を制御するディスパッチャ、271は命令キューである。同図において命令キュー271は、最大8命令を格納することができる。これらの命令は、圧縮フィールドバス41a〜41hを通して、ディスパッチャ270が、全て知ることができる。
ディスパッチャ270は、各命令フィールドの内容を解析して、プロセッサの内部資源の依存性を調べる。その結果、相互に非依存な複数の命令を決定して、それらの命令を然るべき演算ユニットへ投入するための情報を、デュアルセレクタ202〜205へ転送する。一方、ライトイネーブルバス43は、命令キュー271内のどの命令が実行されたかを命令キュー271へ知らせると共に、アドレスバス3を介して、次に、命令キュー271が保持する命令コードが存在するアドレス情報をアドレスバス3へ出力する。例えば、41a〜41cの3命令が実行されると、命令キュー271は、41d〜41hの5命令を41a〜41eの位置へ転送すると同時に、41f〜41hへアドレスバス3の情報にしたがって転送されてくる3つの命令をラッチする。
このような構成のスーパースカラ型プロセッサにおいて、ディスパッチャ270が“SIMD"を解析して、1命令を複数の演算ユニットへ投入することは、第19図のフィールドコントローラ201の構成を参考すれば、容易に実現可能である。
このようなスーパースカラ型プロセッサは、動的なスケジューリングを行うものの、実際には、並列性を引き出すために、コンパイラが命令の並び替え(例えば、ループ展開)を行っている。これにより、オブジェクトコードサイズが大きくなるため、1命令で複数命令の実行が可能になる本発明は、スーパースカラ型プロセッサのコードサイズ削減にも有効である。
また、本発明において、第1図に示した実施例では、演算ユニット22〜25の演算ユニットは、全く同一の機能を有することを前提にしてあるが、本発明は、これに限ったわけではない。例えば、SIMDモードで動作可能な命令を限定する場合もある。具体的には、各演算ユニット22〜25が、マルチメディアに有効な演算の命令セットだけをSIMDモードに対応し、分岐命令などに対応していない場合には、各演算ユニット22〜25が必ずしも全く同一である必要はない。この場合の利点は、演算ユニットがサポートするオペレーション数を多くとれることである。
例えば、第2図に示したIFGフィールドにおいては、8ビットの“オペコード”と1ビットの“Sモード”により、256種類の命令に対応可能であり、各命令全てに対してSIMDモードを指定できる仕様となっている。ここで、SIMDモードで動作可能な命令を128種類に絞ると、演算ユニット22〜25は最大384種類の命令をサポートできる。つまり、8ビットの“オペコード”で指定する半分の128種類の命令がSIMDモードを指定しないので、“Sモード”の1ビットを“オペコード”の一部として使用可能になり、結果として、SIMDモードに対応しない命令は256種類をサポートできることになる。
さらに、本発明は、SIMDモードを使用するため、第1図における演算ユニット22〜25が同一機能を有している。この構成は、SIMDモードに使用する以外にも次のような効果もある。
第一に、プロセッサの開発工数削減効果である。つまり、演算ユニット22の回路をコピーすることで、演算ユニット23〜25の回路を開発できる。つまり、回路規模に対する開発工数が通常の25%で済むことになる。
第二に、各演算ユニットの稼動率を向上できる効果である。各演算ユニット内のIFG演算器が、数値演算命令とマルチメディア処理命令など複数用途に対応できる構成とすることがポイントである。このような構成により、数値演算が必要なアプリケーションに対しては4つの演算ユニット22〜25の各IFG演算器が数値演算命令を実行し、マルチメディア処理が必要なアプリケーションに対しては4つの演算ユニットの各IFG演算器がマルチメディア処理命令を実行することで、IFG演算器の能力を多様なアプリケーションに対してフルに発揮できる。
ここで、ポイントとなるIFG演算器の構成例について説明する。数値演算で使用する32×32ビットの乗算命令と、マルチメディアに使用する128ビットデータを、8×8ビットの演算を同時に16個実行して行う分割乗算命令とを実行できるIFG演算器の構成方法について述べる。通常32×32ビットの乗算の結果は、データを4つの8ビットに分割して、16個の8×8ビットの乗算に分割して、各乗算結果の総和を求めることで得られる。従って、16個の8ビット乗算器が必要になる。この点に着目すると、マルチメディア処理で多用される8ビットの乗算を16演算同時に実行することができる。よって、ほとんどの回路部分を共通にしながら、多様なアプリケーションに対応できるIFG演算器を実現できる。この詳細なIFG演算器構成を第30図を用いて以下に説明する。
第30図において、第1図と同一機能を有する回路ブロック及び同一信号名には同一符号を付してある。
図中、300と301はマルチメディアに使用する分割乗算命令のオペランドを保持する128ビットのレジスタ、302は32ビットの乗算命令用のデータを8ビット単位に分配するオペランドルータ、303は256ビットの2入力セレクタ、304は8ビット乗算器、305は乗算結果の加算を行う加算器である。
先ず、分割乗算命令の動作を説明する。分割乗算命令は、レジスタ300に格納された16個の8ビットデータ(a0〜a15)とレジスタ301に格納された16個の8ビットデータ(b0〜b15)に対して、(a0×b0+a1×b1+a2×b2+a3×b3+a4×b4+a5×b5+a6×b6+・・・・+a15×b15)の計算を行う。このため、先ず、この乗算命令を実行する前に、レジスタ300と301にデータをセットする。
この命令が実行されると、セレクタ303は、レジスタ300と301のデータを選択して各乗算器に出力する。乗算器304は、a0×b0の項を計算する。残りの15個の乗算器は、同様に、a1×b1、a2×b2、a3×b3、・・・・、a15×b15を計算する。各乗算結果は、加算器305へ送られる。この命令が実行されていると、加算器305は、16個の乗算結果の総和を計算した結果を出力する。
一方、32ビット×32ビットの乗算命令は、4個の8ビットデータ(a0〜a3とb0〜b3)に分割して、次の16個の8ビット乗算に分割する。
(c0=a0×b0、c1=a0×b1、c2=a0×b2、c3=a0×b3、c4=a1×b0、c5=a1×b1、c6=a1×b2、c7=a1×b3、c8=a2×b0、c9=a2×b1、c10=a2×b2、c11=a2×b3、c12=a3×b0、c13=a3×b1、c14=a3×b2、c15=a3×b3)
このような16個の8ビット乗算ができるように、オペランドルータ302は、各乗算器に供給するオペランドデータを出力する。
乗算命令の実行時には、セレクタ303が、オペランドルータ302の出力を選択して各8ビット乗算器へ出力する。さらに、乗算結果は、加算器305へ送られる。加算器305は上記16個の乗算結果を以下のように、計算する。
(c0+(c1+c4)×16+(c2+c5+c8)×162+(c3+c6+c9+c12)×163+(c7+c10+c13)×164+(c11+c14)×165+c15×166
この計算結果が32ビット×32ビットの乗算結果として出力される。
以上述べたように、回路の大半を占める16個の8ビット乗算器を、通常の乗算命令と分割乗算命令で兼用できる。このように構成した演算器で構成した演算ユニットを複数並べることで、各種アプリケーションに対応可能になり、各演算ユニットの稼動率を高めたVLIW型プロセッサを実現可能になる。
産業上の利用可能性
以上述べたように、本発明によれば、マルチメディア処理など同一種類の演算を繰り返し実行するような並列プロセッサの命令コード量の削減に有効である。また、本発明は、同一機能の演算ユニットを複数並べた構成となっているため、演算ユニットの設計工数を削減できることに加えて、並列度向上に対しても演算ユニットの数を増加するだけで簡単にハードウエアを実現できる効果がある。
さらに、画像処理のようなマルチメディア処理を考慮すると、処理する画像の領域を複数に分割し、各領域の処理を各実行ユニットに割り当てるようなプログラム構造にすることができる。したがって、一つの実行ユニットのプログラムを開発し、それを他3つの実行ユニットにも流用することでソフトウエアの開発工数を削減できる効果もある。
さらに、本発明は、VLIWやスーパースカラなど多用なアーキテクチャのプロセッサに適用可能である。

Claims (28)

  1. プロセッサであって、
    命令コードを格納するメモリと、
    命令コード保持手段と、
    前記命令コード保持手段に保持された命令コードを実行可能な複数の演算ユニットと、
    前記メモリに格納された命令コード中の指定情報に基づき、前記命令コードを実行する複数の演算ユニットを指定して、当該指定された複数の演算ユニット数だけ前記命令コードと同じ命令コード作成し、当該作成された命令コードを前記命令コード保持手段へ投入する手段とを有することを特徴とするプロセッサ。
  2. プロセッサであって、
    命令コードを格納するメモリと、
    命令コード保持手段と、
    前記命令コード保持手段に保持された命令コードを実行する演算器を有する複数の演算ユニットと、
    前記メモリに格納された命令コード中の指定情報に基づき、前記命令コードを実行する複数の演算器を指定して、当該指定された複数の演算器数だけ前記命令コードと同じ命令コード作成し、当該作成された命令コードを前記命令コード保持手段へ投入する手段とを有することを特徴とするプロセッサ。
  3. 命令コードを格納するメモリと、該メモリから読みだした複数の命令コードを保持する命令コード保持手段と、該命令コード保持手段に保持した複数の命令コードにしたがって並列に演算動作可能な複数の演算ユニットとを有するプロセッサであって、
    前記メモリに格納された命令コード中に、演算種類を示すオペコードと、オペランドに加えて、指定情報として実行モードを指定するフィールドと、該命令コードを実行する演算ユニットと該命令コードと同一の命令を実行させる他の演算ユニットを指定する情報を有し、該フィールドを解析して前記実行モードが有効となっている命令の少なくともオペコードとオペランドとを複数の演算ユニットのうちで前記指定情報により指定された演算ユニットおよび他の演算ユニットへ投入する解析手段を設け、同一種類の演算を前記指定された複数の演算ユニットにおいて実行可能に構成したことを特徴とするプロセッサ。
  4. 命令コードを格納するメモリと、該メモリから読みだした複数の命令コードを保持する命令コード保持手段と、該命令コード保持手段に保持した複数の命令コードに従って並列に演算動作可能な複数の演算ユニットとを有するプロセッサであって、
    前記メモリに格納された命令コード中に、演算種類を示すオペコードと、オペランドに加えて、指定情報として実行モードを指定するフィールドと、該命令コードを実行する演算ユニットと該命令コードと同一の命令を実行させる他の演算ユニットを指定する演算ユニット指定フィールドとを有し、該フィールドを解析して前記実行モードが有効となっている命令の少なくともオペコードとオペランドとを、前記演算ユニット指定フィールドで指定された演算ユニットおよび他の演算ユニットへ投入する解析手段を設け、前記指定された演算ユニットにおいて前記指定情報で指定した数の同一種類の演算を実行可能に構成したことを特徴とするプロセッサ。
  5. 前記各演算ユニットが固有のレジスタファイルを有することを特徴とする請求項3又は4記載のプロセッサ。
  6. 前記各演算ユニットが固有のレジスタファイルを有し、オペランドフィールドが各演算ユニット固有のレジスタファイルの中のレジスタ指定することにより、演算データが各演算ユニットで異なることを特徴とする請求項3又は4記載のプロセッサ。
  7. 前記各演算ユニットが共通のレジスタファイルを有することを特徴とする請求項3又は4記載のプロセッサ。
  8. 前記各演算ユニットが共通のレジスタファイルを有し、該レジスタファイルの中からレジスタ番号を指定するオペランドフィールドを有し、該オペランドフィールドの値に、指定する演算ユニットに固有のオフセット値を加えることで、各演算ユニットが異なるレジスタを使用可能にして、異なる演算データで演算可能に構成したことを特徴とする請求項3又は4記載のプロセッサ。
  9. 命令コードを格納するメモリと、該メモリから読みだした命令コードを保持する命令コード保持手段と、複数の演算ユニットとを有するプロセッサであって、
    前記命令コードは演算ユニット数に対応する複数フィールドから構成し、この命令コード中の任意の一つのフィールドにおいて、複数の演算ユニットを制御することを示す制御情報と各フィールドが対応する演算ユニットを指定するフィールド情報とを有し、該フィールド情報と前記制御情報を解析して前記フィールドが制御する演算ユニットを特定し、この特定された演算ユニットに対して前記フィールドを投入する解析手段を設け、前記命令コード中の一つのフィールドが複数の演算ユニットを制御して前記演算ユニット数よりも少ないフィールド数で構成した短い命令コードで複数演算が実行可能に構成したことを特徴とするプロセッサ。
  10. 命令コードを格納するメモリと、該メモリから読みだした命令コードを保持する命令コード保持手段と、複数の演算ユニットとを有するプロセッサであって、
    前記命令コードは演算ユニット数に対応する複数フィールドから構成し、この命令コード中の任意の一つのフィールドが複数の演算ユニットを制御することを示す制御情報と前記命令コード中に存在するフィールド数を示すヘッダ情報とを前記メモリに格納しておき、前記ヘッダ情報と前記制御情報を解析して前記フィールドが制御する演算ユニットを特定し、この特定された演算ユニットに対して前記フィールドを投入する解析手段を設け、前記命令コード中の一つのフィールドが複数の演算ユニットを制御して前記ヘッダ情報を用いて少ないフィールド数で構成した短い命令コートで複数演算が実行可能に構成したことを特徴とするプロセッサ。
  11. 命令コードを格納するメモリと、該メモリから読みだした命令コードを保持する命令コード保持手段と、該命令コード保持手段に保持された情報で制御される少なくとも一つの演算器及び該演算器のオペランド情報を格納するレジスタファイルで構成された複数の演算ユニットとを備えたプロセッサであって、
    前記命令コードは演算ユニット数に対応する複数フィールドから構成してこの一つの命令コードで複数の演算ユニットを操作可能に構成し、前記全ての演算ユニット内に、同一機能を有する演算器を少なくとも一つ設けることで、全ての各演算ユニットが同一の演算を実行可能に構成したことを特徴とするプロセッサ。
  12. 命令コードを格納するメモリと、該メモリから読みだした命令コードを保持する命令コード保持手段と、該命令コード保持手段に保持した情報で制御される少なくとも一つの演算器及び該演算器のオペランド情報を格納するレジスタファイルで構成した複数の演算ユニットとを備えたプロセッサであって、
    前記命令コードは演算ユニット数に対応する複数フィールドから構成し、前記全ての演算ユニット内に、同一機能を有する演算器を少なくとも一つ設け、更に前記各演算ユニット内に前記レジスタファイル内のレジスタで指定不可能なビット幅の広いデータタイプを保持するための特殊レジスタを設け、前記レジスタファイル内のレジスタで指定可能なビット幅のデータタイプと前記特殊レジスタに格納したデータタイプの両方の演算処理を可能に構成したことを特徴とするプロセッサ。
  13. 複数の演算ユニットの実行を指示する指定情報を有する命令コードを格納するメモリと、該メモリに格納された命令コード中に有する指定情報を解析して命令コードが指定する複数の演算ユニットを決定する解析手段と、該解析手段で決定された複数の演算ユニットを指定する命令コードを保持する命令コード保持手段と、該命令コード保持手段に保持された命令コードに従って、各々が並列に演算を実行する複数の演算ユニットとを備えたことを特徴とするプロセッサ。
  14. 複数の演算ユニットの実行を指示する指定情報を有する命令コードを格納するメモリと、該メモリに格納された命令コード中に有する指定情報を解析して単一命令コードで複数命令に相当する演算を実行するように前記単一命令コードが指定する複数の演算ユニットを決定する解析手段と、該解析手段で決定された複数の演算ユニットを指定する単一命令コードを保持する命令コード保持手段と、該命令コード保持手段に保持された単一命令コードに従って、各々が並列に演算を実行する複数の演算ユニットとを備えたことを特徴とするプロセッサ。
  15. 前記複数の演算ユニットの各々は、異なる種類の演算を実行するように構成したことを特徴とする請求項13又は14記載のプロセッサ。
  16. 演算種類を示すオペコードと、オペランドに加えて、指定情報として実行モードを指定するフィールドを有する命令コードを格納するメモリと、該メモリから読みだした命令コード中のフィールドを解析して前記実行モードが有効となっている命令の少なくともオペコードとオペランドとを複数の演算ユニットへ投入する解析手段と、該解析手段で投入された複数の演算ユニットへの実行モードが有効となっている命令の少なくともオペコードとオペランドとを保持する命令コード保持手段と、該命令コード保持手段に保持された少なくともオペコードとオペランドとに従って同一種類の演算を並列に実行する複数の演算ユニットとを備えたことを特徴とするプロセッサ。
  17. 演算種類を示すオペコードと、オペランドに加えて、指定情報として実行モードを指定するフィールドと演算ユニットを指定する演算ユニット指定フィールドとを有する命令コードを格納するメモリと、該メモリから読みだしたフィールドを解析して前記実行モードが有効となっている命令の少なくともオペコードとオペランドとを、演算ユニット指定フィールドで明示された演算ユニットへ投入する解析手段と、該解析手段で投入された演算ユニット指定フィールドで指定された演算ユニットへの実行モードが有効となっている命令の少なくともオペコードとオペランドとを保持する命令コード保持手段と、該命令コード保持手段に保持された少なくともオペコードとオペランドとに従って前記演算ユニット指定フィールドで指定された数の同一種類の演算を並列に実行可能に構成した複数の演算ユニットとを備えたことを特徴とするプロセッサ。
  18. 前記各演算ユニットが固有のレジスタファイルを有することを特徴とする請求項16又は17記載のプロセッサ。
  19. 前記各演算ユニットが固有のレジスタファイルを有し、オペランドフィールドが各演算ユニット固有のレジスタファイルの中のレジスタ指定することにより、演算データが各演算ユニットで異なることを特徴とする請求項16又は17記載のプロセッサ。
  20. 前記各演算ユニットが共通のレジスタファイルを有することを特徴とする請求項16又は17記載のプロセッサ。
  21. 前記各演算ユニットが共通のレジスタファイルを有し、該レジスタファイルの中からレジスタ番号を指定するオペランドフィールドを有し、該オペランドフィールドの値に、指定する演算ユニットに固有のオフセット値を加えることで、各演算ユニットが異なるレジスタを使用可能にして、異なる演算データで演算可能に構成したことを特徴とする請求項16又は17記載のプロセッサ。
  22. 演算ユニット数に対応する複数フィールドから構成され、この中の任意の一つのフィールドにおいて、複数の演算ユニットを制御することを示す制御情報と各フィールドが対応する演算ユニットを指定するフィールド情報とを有する命令コードを格納するメモリと、該メモリから読みだした命令コードのフィールド情報と前記制御情報を解析して前記フィールドが制御する演算ユニットを特定し、この特定された演算ユニットに対して前記フィールドを投入する解析手段と、該解析手段で前記フィールドを保持する命令コード保持手段と、該命令コード保持手段に保持されたフィールドに従って並列演算を実行する複数の演算ユニットとを備え、前記命令コード中の一つのフィールドが前記複数の演算ユニットを制御して前記演算ユニット数よりも少ないフィールド数で構成した短い命令コードで複数演算が実行可能に構成したことを特徴とするプロセッサ。
  23. 演算ユニット数に対応する複数フィールドから構成され、この中の任意の一つのフィールドが複数の演算ユニットを制御することを示す制御情報を有する命令コードと該命令コード中に存在するフィールド数を示すヘッダ情報とを格納するメモリと、該メモリから読みだした前記ヘッダ情報と前記制御情報を解析して上記フィールドが制御する演算ユニットを特定し、この特定された演算ユニットに対して前記フィールドを投入する解析手段と、該解析手段で投入されたフィールドを保持する命令コード保持手段と、該命令コード保持手段に保持されたフィールドに従って並列演算を実行する複数の演算ユニットとを備え、前記命令コード中の一つのフィールドが前記複数の演算ユニットを制御して前記ヘッダ情報を用いて少ないフィールド数で構成した短い命令コードで複数演算が実行可能に構成したことを特徴とするプロセッサ。
  24. 前記解析手段には、前記メモリから圧縮された命令コードを読みだして直接実行可能な伸帳命令コードに変換する命令伸帳手段を有することを特徴とする請求項16又は17又は22又は23記載のプロセッサ。
  25. 前記解析手段には、前記メモリから圧縮された1命令コード中の少なくとも一つのフィールドを読みだして直接実行可能な複数のフィールドからなる伸帳命令コードに変換する命令伸帳手段を有することを特徴とする請求項16又は17又は22又は23記載のプロセッサ。
  26. 前記解析手段には、前記メモリから圧縮された命令コードをラッチするインストラクションバッファと、前記命令コード中に存在するフィールド数を示すヘッダ情報を解析するフィールドコントローラと、該フィールドコントローラから解析されたフィールドの選択信号及びフィールドの有無を示す信号に基づいて各フィールドの有無を含めて並び替えて伸帳フィールドを形成する各フィールドに対応したセレクタとを備えたことを特徴とする請求項16又は17又は22又は23記載のプロセッサ。
  27. 前記解析手段には、前記命令コードの各フィールドの実行モード(Sモード)とSIMDとを解析して各フィールドの複写元フィールドを選択して決定するSIMDコントローラと、該SIMDコントローラで選択して決定された複写元フィールドを複写して各演算ユニットに対して投入するセレクタとを備えたことを特徴とする請求項16又は17又は22又は23記載のプロセッサ。
  28. 演算ユニット数に対応する複数フィールドから構成された命令コードを格納するメモリを備え、該メモリから読みだした命令コードを保持する命令コード保持手段を備え、該命令コード保持手段に保持した情報で制御される少なくとも一つの同一機能を有する演算器及び該演算器のオペランド情報を格納するレジスタファイル及び該レジスタファイル内のレジスタで指定不可能なビット幅の広いデータタイプを保持するための特殊レジスタで構成した演算ユニットを複数備え、これら複数の演算ユニットにおいて前記レジスタファイル内のレジスタで指定可能なビット幅のデータタイプと前記特殊レジスタに格納したデータタイプの両方の演算処理を可能に構成したことを特徴とするプロセッサ。
JP52828196A 1995-03-17 1996-03-15 プロセッサ Expired - Fee Related JP3547139B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP5879095 1995-03-17
PCT/JP1996/000673 WO1996029646A1 (fr) 1995-03-17 1996-03-15 Processeur

Publications (1)

Publication Number Publication Date
JP3547139B2 true JP3547139B2 (ja) 2004-07-28

Family

ID=13094375

Family Applications (1)

Application Number Title Priority Date Filing Date
JP52828196A Expired - Fee Related JP3547139B2 (ja) 1995-03-17 1996-03-15 プロセッサ

Country Status (4)

Country Link
US (3) US6401190B1 (ja)
JP (1) JP3547139B2 (ja)
KR (1) KR100325658B1 (ja)
WO (1) WO1996029646A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPWO2006049331A1 (ja) * 2004-11-05 2008-05-29 日本電気株式会社 Simd型並列演算装置、プロセッシング・エレメント、simd型並列演算装置の制御方式

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3547139B2 (ja) * 1995-03-17 2004-07-28 株式会社 日立製作所 プロセッサ
JP3790607B2 (ja) * 1997-06-16 2006-06-28 松下電器産業株式会社 Vliwプロセッサ
US6859870B1 (en) * 2000-03-07 2005-02-22 University Of Washington Method and apparatus for compressing VLIW instruction and sharing subinstructions
WO2001067234A2 (en) * 2000-03-08 2001-09-13 Sun Microsystems, Inc. Vliw computer processing architecture having a scalable number of register files
US6895494B1 (en) * 2000-06-26 2005-05-17 Texas Instruments Incorporated Sub-pipelined and pipelined execution in a VLIW
US7233998B2 (en) * 2001-03-22 2007-06-19 Sony Computer Entertainment Inc. Computer architecture and software cells for broadband networks
US6848074B2 (en) * 2001-06-21 2005-01-25 Arc International Method and apparatus for implementing a single cycle operation in a data processing system
ITMI20022003A1 (it) * 2002-09-20 2004-03-21 Atmel Corp Apparecchio e metodo per la decompressione dinamica di programmi.
US20040128482A1 (en) * 2002-12-26 2004-07-01 Sheaffer Gad S. Eliminating register reads and writes in a scheduled instruction cache
JP2005056311A (ja) * 2003-08-07 2005-03-03 Matsushita Electric Ind Co Ltd 情報処理装置及びそれを用いた電子機器
JP4283131B2 (ja) * 2004-02-12 2009-06-24 パナソニック株式会社 プロセッサ及びコンパイル方法
JP4300151B2 (ja) * 2004-04-19 2009-07-22 Okiセミコンダクタ株式会社 演算処理装置
AT501213B1 (de) * 2004-12-03 2006-10-15 On Demand Microelectronics Gmb Verfahren zum steuern der zyklischen zuführung von instruktionswörtern zu rechenelementen und datenverarbeitungseinrichtung mit einer solchen steuerung
US7954062B2 (en) * 2005-01-03 2011-05-31 International Business Machines Corporation Application status board mitigation system and method
US7523295B2 (en) * 2005-03-21 2009-04-21 Qualcomm Incorporated Processor and method of grouping and executing dependent instructions in a packet
US20110152392A1 (en) * 2009-12-17 2011-06-23 Honeywell International Inc. Catalysts For Polyurethane Foam Polyol Premixes Containing Halogenated Olefin Blowing Agents
US7631168B1 (en) * 2006-05-10 2009-12-08 The Math Works, Inc. Graphical interface for grouping concurrent computing units executing a concurrent computing process
US9405564B2 (en) * 2006-05-10 2016-08-02 The Mathworks, Inc. System and method for targeting commands to concurrent computing units executing a concurrent computing process
JP4934356B2 (ja) * 2006-06-20 2012-05-16 株式会社日立製作所 映像処理エンジンおよびそれを含む映像処理システム
DE602006006990D1 (de) * 2006-06-28 2009-07-09 St Microelectronics Nv SIMD-Prozessorarchitektur mit gruppierten Verarbeitungseinheiten
JP5481793B2 (ja) 2008-03-21 2014-04-23 富士通株式会社 演算処理装置および同装置の制御方法
JP5206240B2 (ja) * 2008-08-29 2013-06-12 日本電気株式会社 情報処理装置および情報処理方法
EP2335149A1 (en) 2008-09-08 2011-06-22 Bridgeco, Inc. Very long instruction word processor with multiple data queues
US8135941B2 (en) * 2008-09-19 2012-03-13 International Business Machines Corporation Vector morphing mechanism for multiple processor cores
KR101586770B1 (ko) * 2008-10-14 2016-01-19 고쿠리츠다이가쿠호징 나라 센탄카가쿠기쥬츠 다이가쿠인 다이가쿠 데이터 처리 장치
KR101520624B1 (ko) * 2008-12-31 2015-05-15 삼성전자주식회사 비트 맵 방식의 영상 인코딩/디코딩 방법 및 장치
JP5495707B2 (ja) * 2009-10-16 2014-05-21 三菱電機株式会社 並列信号処理装置
JP5511400B2 (ja) * 2010-01-12 2014-06-04 三菱電機株式会社 並列信号処理プロセッサ
US8527804B2 (en) * 2010-11-01 2013-09-03 Qualcomm Incorporated Architecture and method for eliminating store buffers in a DSP/processor with multiple memory accesses
KR102056730B1 (ko) * 2013-04-22 2019-12-17 삼성전자주식회사 Vliw 프로세서를 위한 명령어 압축 장치 및 방법과, 명령어 인출 장치 및 방법
KR102149509B1 (ko) * 2014-03-27 2020-08-28 삼성전자주식회사 구성 데이터를 압축 및 복원하는 방법
US10514928B2 (en) * 2014-04-17 2019-12-24 Arm Limited Preventing duplicate execution by sharing a result between different processing lanes assigned micro-operations that generate the same result
US10346170B2 (en) * 2015-05-05 2019-07-09 Intel Corporation Performing partial register write operations in a processor
JP6694284B2 (ja) * 2016-01-29 2020-05-13 シナプティクス・ジャパン合同会社 画像データ伝送システム、送信回路及び受信回路

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6397833A (ja) 1986-10-13 1988-04-28 Mitsui Eng & Shipbuild Co Ltd 固体燃料のガス化生成ガスを燃料とするガスタ−ビンプラント
JPS6398733A (ja) 1986-10-16 1988-04-30 Fujitsu Ltd 演算回路制御方式
US5057837A (en) * 1987-04-20 1991-10-15 Digital Equipment Corporation Instruction storage method with a compressed format using a mask word
JP2729795B2 (ja) * 1987-11-19 1998-03-18 株式会社日立製作所 並列計算機及びその制御方法
JP2617974B2 (ja) * 1988-03-08 1997-06-11 富士通株式会社 データ処理装置
US5313551A (en) * 1988-12-28 1994-05-17 North American Philips Corporation Multiport memory bypass under software control
US5226166A (en) * 1989-02-10 1993-07-06 Mitsubishi Denki K.K. Parallel operation processor with second command unit
US5293500A (en) * 1989-02-10 1994-03-08 Mitsubishi Denki K.K. Parallel processing method and apparatus
US5471593A (en) * 1989-12-11 1995-11-28 Branigin; Michael H. Computer processor with an efficient means of executing many instructions simultaneously
EP0474297B1 (en) * 1990-09-05 1998-06-10 Koninklijke Philips Electronics N.V. Very long instruction word machine for efficient execution of programs with conditional branches
DE69130723T2 (de) * 1990-10-05 1999-07-22 Koninkl Philips Electronics Nv Verarbeitungsgerät mit Speicherschaltung und eine Gruppe von Funktionseinheiten
US5301340A (en) * 1990-10-31 1994-04-05 International Business Machines Corporation IC chips including ALUs and identical register files whereby a number of ALUs directly and concurrently write results to every register file per cycle
JP2883465B2 (ja) * 1991-04-05 1999-04-19 株式会社東芝 電子計算機
JPH0553805A (ja) * 1991-08-29 1993-03-05 Toshiba Corp 電子計算機
JP2848727B2 (ja) * 1991-11-18 1999-01-20 株式会社東芝 並列演算処理装置
US5437043A (en) * 1991-11-20 1995-07-25 Hitachi, Ltd. Information processing apparatus having a register file used interchangeably both as scalar registers of register windows and as vector registers
JP2761688B2 (ja) * 1992-02-07 1998-06-04 三菱電機株式会社 データ処理装置
JPH05233281A (ja) * 1992-02-21 1993-09-10 Toshiba Corp 電子計算機
US5367650A (en) * 1992-07-31 1994-11-22 Intel Corporation Method and apparauts for parallel exchange operation in a pipelined processor
WO1994027216A1 (en) * 1993-05-14 1994-11-24 Massachusetts Institute Of Technology Multiprocessor coupling system with integrated compile and run time scheduling for parallelism
US5513363A (en) * 1994-08-22 1996-04-30 Hewlett-Packard Company Scalable register file organization for a computer architecture having multiple functional units or a large register file
US5600810A (en) * 1994-12-09 1997-02-04 Mitsubishi Electric Information Technology Center America, Inc. Scaleable very long instruction word processor with parallelism matching
JP3547139B2 (ja) * 1995-03-17 2004-07-28 株式会社 日立製作所 プロセッサ
JP3526976B2 (ja) * 1995-08-03 2004-05-17 株式会社日立製作所 プロセッサおよびデータ処理装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPWO2006049331A1 (ja) * 2004-11-05 2008-05-29 日本電気株式会社 Simd型並列演算装置、プロセッシング・エレメント、simd型並列演算装置の制御方式
JP5240424B2 (ja) * 2004-11-05 2013-07-17 日本電気株式会社 Simd型並列演算装置、プロセッシング・エレメント、simd型並列演算装置の制御方式

Also Published As

Publication number Publication date
KR19980703033A (ko) 1998-09-05
US20020099924A1 (en) 2002-07-25
US20060053271A1 (en) 2006-03-09
WO1996029646A1 (fr) 1996-09-26
US6965981B2 (en) 2005-11-15
US6401190B1 (en) 2002-06-04
KR100325658B1 (ko) 2002-08-08

Similar Documents

Publication Publication Date Title
JP3547139B2 (ja) プロセッサ
US6334176B1 (en) Method and apparatus for generating an alignment control vector
US5996057A (en) Data processing system and method of permutation with replication within a vector register file
EP2241968B1 (en) System with wide operand architecture, and method
US6295599B1 (en) System and method for providing a wide operand architecture
US7458069B2 (en) System and method for fusing instructions
JP3983857B2 (ja) ベクトルレジスタの複数バンクを用いた単一命令複数データ処理
US20040049663A1 (en) System with wide operand architecture and method
US7487338B2 (en) Data processor for modifying and executing operation of instruction code according to the indication of other instruction code
US5802339A (en) Pipeline throughput via parallel out-of-order execution of adds and moves in a supplemental integer execution unit
Yu et al. Vector processing as a soft-core CPU accelerator
JP2010532063A (ja) 条件命令を無条件命令および選択命令へと拡張する方法およびシステム
US11635957B2 (en) Hardware-implemented universal floating-point instruction set architecture for computing directly with human-readable decimal character sequence floating-point representation operands
US20140075157A1 (en) Methods and Apparatus for Adapting Pipeline Stage Latency Based on Instruction Type
JP2007533006A (ja) 複合命令形式および複合オペレーション形式を有するプロセッサ
CN108319559B (zh) 用于控制矢量内存存取的数据处理装置及方法
EP2309383A1 (en) System with wide operand architecture and method
US5815420A (en) Microprocessor arithmetic logic unit using multiple number representations
US6609191B1 (en) Method and apparatus for speculative microinstruction pairing
US6728741B2 (en) Hardware assist for data block diagonal mirror image transformation
EP1220091A2 (en) Circuit and method for instruction compression and dispersal in VLIW processors
US11714641B2 (en) Vector generating instruction for generating a vector comprising a sequence of elements that wraps as required
KR20000048531A (ko) 데이터 처리장치에서의 입력 오퍼랜드 제어
JPH0816392A (ja) コンピュータシステム、コンピュータシステム動作方法、及びコンピュータ命令シーケンス実行方法
CN117591176A (zh) 处理装置、处理方法以及计算机可读存储介质

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20031216

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040216

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20040413

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

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

Free format text: PAYMENT UNTIL: 20080423

Year of fee payment: 4

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

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

Free format text: PAYMENT UNTIL: 20080423

Year of fee payment: 4

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

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

Free format text: PAYMENT UNTIL: 20080423

Year of fee payment: 4

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

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

Free format text: PAYMENT UNTIL: 20080423

Year of fee payment: 4

R370 Written measure of declining of transfer procedure

Free format text: JAPANESE INTERMEDIATE CODE: R370

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

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

Free format text: PAYMENT UNTIL: 20080423

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20090423

Year of fee payment: 5

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

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

Free format text: PAYMENT UNTIL: 20090423

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20100423

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20100423

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20110423

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20110423

Year of fee payment: 7

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

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

Free format text: PAYMENT UNTIL: 20110423

Year of fee payment: 7

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

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

Free format text: PAYMENT UNTIL: 20120423

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20120423

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20130423

Year of fee payment: 9

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

Free format text: PAYMENT UNTIL: 20140423

Year of fee payment: 10

LAPS Cancellation because of no payment of annual fees