JPWO2004021172A1 - 計算機システム - Google Patents

計算機システム Download PDF

Info

Publication number
JPWO2004021172A1
JPWO2004021172A1 JP2004532742A JP2004532742A JPWO2004021172A1 JP WO2004021172 A1 JPWO2004021172 A1 JP WO2004021172A1 JP 2004532742 A JP2004532742 A JP 2004532742A JP 2004532742 A JP2004532742 A JP 2004532742A JP WO2004021172 A1 JPWO2004021172 A1 JP WO2004021172A1
Authority
JP
Japan
Prior art keywords
entry
instruction
contents
written
computer system
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
JP2004532742A
Other languages
English (en)
Other versions
JP3706384B2 (ja
Inventor
関 一
一 関
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Individual
Original Assignee
Individual
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 Individual filed Critical Individual
Application granted granted Critical
Publication of JP3706384B2 publication Critical patent/JP3706384B2/ja
Publication of JPWO2004021172A1 publication Critical patent/JPWO2004021172A1/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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30134Register stacks; shift registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or 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/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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • 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
    • 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/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming
    • 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/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3863Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • 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)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Storage Device Security (AREA)

Abstract

発行済のオペレーションの各々はout−of−orderで実行され、正常終了すると、これに応じて状態保持手段群の対応する部分が書き換えられるようになっており、状態変更キューの先頭のエントリの内容で示される前進マッピング・ファイルの内容変更と組み合わさったオペレーション群に含まれるオペレーションが全て正常終了したことが対応する状態保持手段によって示された後に、該状態変更キューの該先頭のエントリの該内容に基づき完了マッピング・ファイルの内容変更を行い、該状態変更キューから該先頭のエントリを除外するようになっている計算機システムである。

Description

本発明は、高度の命令レベル並列性を実現することにより高性能化の可能な新規な構成の計算機方式に関するものである。
従来、汎用の計算機として実用化されてきた計算機方式は、スタック・マシンとレジスタ・ベースのマシンの2つに大きく分けることができる。スタック・マシンは、プログラムのコード・サイズが小さくてすみ、高速な割り込み処理やコンテキスト・スイッチングに優れているが、高速化が困難であった。他方、レジスタ・ベースのマシンは比較的高速化が容易であるが、その他の面ではスタック・マシンに劣る点が多い。
スタック・マシンとレジスタ・ベースのマシンは、互いにプログラムの互換性が無く、また上述のように、いずれかが絶対的に優れているというものではない。
本発明の目的は、スタック・マシンの命令形式ともレジスタ・ベースのマシンの命令形式とも親和性があり、かつ、高性能化の可能な計算機方式を実現することにある。
本発明による計算機方式は、基本的にout−of−order実行の可能なスーパースカラ・アーキテクチャと同様なものであるが、ビット長の長い命令フォーマットを採用し、その中にオペレーション群の内容及び仮想のオペランド・スタックあるいは論理レジスタ群の状態変更の内容を記述するようになっている。
本発明による計算機システムは、各々のエントリにデータが書き込まれるようになっているデータ・ファイルと、各々のエントリにデータ・ファイルのエントリのアドレスが書き込まれるようになっている前進マッピング・ファイル及び完了マッピング・ファイルと、各々のエントリに個々の命令によるマッピング・ファイルの状態変更の内容が書き込まれるようになっている状態変更キューと、それぞれ状態変更キューの個々のエントリに対応して設けられたオペレーション群の実行状態を保持する状態保持手段群と、発行済のオペレーションをout−of−orderで処理する手段とを具備する。上記発行済のオペレーションをout−of−orderで処理する手段は様々な構成のものが考えられるが、基本的には、発行済のオペレーションの内容を保持するバッファであるオペレーション・ウインドウ、オペレーションを実行する機能ユニット群等によって実現される。
本発明の計算機システムは、1サイクル当り1命令を発行して、前進マッピング・ファイルの内容変更、その変更の内容の状態変更キューへの書き込み、及びオペレーション群の発行(オペレーション・ウインドウへの書き込み)を行うようになっている。結果データを生ずるオペレーションの発行の場合、結果データを保持すべくデータ・ファイルのエントリが新たに割り付けられ、これがデスティネーション・レジスタとなる。また、発行される各オペレーションにおいて、ソース・レジスタとなるのは、アドレスが前進マッピング・ファイルをアクセスして得られるデータ・ファイルのエントリ、あるいは、同じ命令に含まれるオペレーションにおいてデスティネーション・レジスタとして割り付けられるデータ・ファイルのエントリである。
発行済のオペレーションは各々out−of−orderでいずれかの機能ユニットによって実行され、正常終了すると、これに応じて上記状態保持手段群の対応する部分が書き換えられるようになっている。
状態変更キューの先頭のエントリの内容と同じ命令の発行に基づくオペレーションが全て正常終了したことが対応する状態保持手段によって示された後に、状態変更キューの先頭のエントリの内容に基づき、その命令が発行された際の前進マッピング・ファイルの内容変更を再現すべく、完了マッピング・ファイルの内容変更を行い、状態変更キューから上記先頭のエントリを除外するようになっている。
本発明による計算機システムは、スタック・モードとレジスタ・モードの2つのモードで動作することができる。スタック・ベースのプロセッサの機械語で記述されたプログラムを本発明の計算機システムの命令形式に変換して実行する場合に、スタック・モードとなる。他方、RISCあるいはCISCのレジスタ・ベースのプロセッサの機械語で記述されたプログラムを本発明の計算機システムの命令形式に変換して実行する場合に、レジスタ・モードとなる。スタック・マシンあるいはレジスタ・マシンの複数の命令を、本発明の計算機システムにおける1つの命令に簡単に変換できるので、広範なプログラムを高速処理できる。
スタック・モードにおいては、マッピング・ファイルは、一種のスタックの内容を保持すべく用いられる。従来のスタックマシンにおいて、オペランド・スタックが...,word3,word2,word1(右端がスタックトップ)となっている状態は、本発明による計算機システムにおいて、マッピング・ファイルに保持される内容がエントリ・アドレス順にa,b,c,...であれば、データ・ファイルにおいてエントリ・アドレスがa,b,c,...である各エントリに、それぞれword1,word2,word3,...が保持されている状態に対応する。
レジスタ・モードにおいては、マッピング・ファイルは、レジスタ・ベースのスーパースカラ・プロセッサにおけるレジスタ・マッピング・テーブルと同等なものとして用いられる。
本発明は、同様の趣旨に基づく出願(国際出願番号PCT/JP01/07442)において開示された発明に改良を加えたものである。その主な改良点は、▲1▼状態変更キューの個々のエントリに対応してオペレーション群の実行状態を保持する状態保持手段を設けたこと、及び▲2▼スタック・モードにおいてマッピング・ファイルがスタックの内容をその先頭からエントリ・アドレス順に保持するようにしたこと、である。
第1図は、本発明にかかる好ましい計算機システムの基本構成を示したブロック図である。
第2図は、本発明にかかる好ましい計算機システムの命令フォーマットを示した概念図である。
第3図は、スタック・モードにおける、前進マッピング・ファイル、完了マッピング・ファイル、及び後述する2つのボトム・ポインタの関係を示した説明図である。
第4図は、データ・ファイルのエントリの構成を示した説明図である。
第5図は、後述するオペレーション・キューのエントリの構成を示した説明図である。
第6図は、状態変更キューのエントリの構成を示した説明図である。
第7図は、フリー・リストの内部構成を示した説明図である。
第8図〜第14図は、スタック・モードの一動作例における7時点の、前進マッピング・ファイル、完了マッピング・ファイル、状態変更キュー、オペレーション・キュー、データ・ファイル、及びフリー・リストの内容を具体的に示した説明図である。
第15図〜第21図は、レジスタ・モードの一動作例における7時点の、前進マッピング・ファイル、完了マッピング・ファイル、状態変更キュー、オペレーション・キュー、データ・ファイル、及びフリー・リストの内容を具体的に示した説明図である。
以下に、本発明にかかる好ましい計算機システムについて説明する。
(1)基本構成
まず、本実施例の計算機システムの基本的な構成について説明する。
第1図は計算機システムのブロック図であって、10は命令キャッシュ、11はデータ・キャッシュ、12はデータ・バッファ、20は命令フェッチ・ユニット、21は命令発行ユニット、3aは前進マッピング・ファイル、3cは完了マッピング・ファイル、4は状態変更キュー、5はオペレーション・キュー、6はデータ・ファイル、7はフリー・リスト、80及び81は各々演算ユニット0及び1、82は分岐ユニット、83はロード/ストア・ユニットを表している。
本発明の計算機システムにおいて状態変更キューの個々のエントリに対応して設ける必要があるオペレーション群の実行状態を保持する状態保持手段は、本実施例においては、後述する4つのオペレーション・ステータス・フィールドによって実現している。
本発明の計算機システムは、発行済のオペレーションの内容を保持するバッファであるオペレーション・ウインドウを具備する必要がある。オペレーション・ウインドウを実現するには、基本的に集中型と分散型の2通りの方法があるが、本実施例の計算機システムは集中型のオペレーション・キューを備えるものとしている。
本発明による計算機システムは、スタック・モードとレジスタ・モードの2つのモードで動作することができる。スタック・ベースのプロセッサの機械語で記述されたプログラムを本発明の計算機システムの命令形式に変換して実行する場合に、スタック・モードとなる。他方、RISCあるいはCISCのレジスタ・ベースのプロセッサの機械語で記述されたプログラムを本発明の計算機システムの命令形式に変換して実行する場合に、レジスタ・モードとなる。
本発明の計算機システムの具備するマッピング・ファイルは、各々のエントリにデータ・ファイルのエントリのアドレスが書き込まれるような構成となっており、レジスタ・モードにおいては、レジスタ・ベースのout−of−order実行の可能なスーパースカラ・プロセッサにおけるレジスタ・マッピング・テーブルと同様に機能する。本発明において、マッピング・ファイルは、スタック・モードにおいても同等な機能を有するものである。
(2)命令形式
第2図は本発明実施例の計算機システムの命令フォーマットを示す概念図であって、スタック・モードにおいてもレジスタ・モードにおいても、個々の命令のフォーマットは、基本的に、フォーマット情報フィールド101、オペレーション・フィールド102及び状態変更フィールド103からなる。
フォーマット情報フィールド(FIフィールド)では、当該命令の長さや、その命令が含むオペレーションの数などに関する情報が示される。
オペレーション・フィールド(Opフィールド)には、算術論理演算や分岐、ロード/ストアなどからなるオペレーション群の内容が示される。本実施例においては、個々のオペレーションは、RISCプロセッサにおける命令と同様な形式で記述される。本実施例においては、1つの命令は最大4つまでのオペレーションを含むものとする(分岐オペレーションが含まれるような場合には、あえて1命令に4つのオペレーションを含める必要はない)。
状態変更フィールド(SMフィールド)では、マッピング・ファイルの内容の変更について示される。即ち、スタック・モードにおいては仮想のオペランド・スタック、レジスタ・モードにおいては仮想の論理レジスタ群の状態変更の内容が示される。後述するように、状態変更フィールド内部のフォーマットは、スタック・モードとレジスタ・モードで異なる。
結果データを生ずるオペレーションの発行の場合、結果データを保持すべくデータ・ファイルのエントリが割り付けられるが、そのエントリの論理的な位置づけは、SMフィールドの内容によって示されることになる。
本実施例の計算機システムは、1サイクル当たり上記の形式の1命令を発行できるものである。
(2−1)スタック・モードにおける命令形式
以下に、スタック・モードにおける命令形式について説明する。
本実施例の計算機システムにおけるデータ・ファイルの各エントリが、仮想のスタック・マシンのオペランド・スタックの1エントリの保持するデータを保持できるものとする。本実施例においては、マッピング・ファイルのアドレス0,1,2,...のエントリの内容をそれぞれs0,s1,s2,...とおくとき、エントリ・アドレスがs0,s1,s2,...であるデータ・ファイルの各エントリにそれぞれ保持されるべきデータを順に並べることによって、仮想のスタック・マシンのオペランド・スタックの内容(s0がスタックトップに対応)が構成されるべきものとする。
例えば、A*X+B/Xを計算し、その結果を変数Yとしてメモリにストアするプログラムは、スタック・マシンにおいては、次のように書ける。
Figure 2004021172
ここで、変数A,B,X,Yの格納域を、それぞれローカル変数1,2,4,5としている。
上記プログラムがどのように本実施例の計算機システムにおけるスタック・モードの命令に変換されるかを説明する。
上記プログラムを2つの命令群に分割して、個々の命令について、オペレーションの内容とマッピング・ファイルに加えられる変更の内容を分けて書くと、次のようになる。
Figure 2004021172
ここで、結果データを保持すべく新たに割り付けられるデータ・ファイルのエントリのアドレスを、各々の命令群において順にf1,f2,...とおいている。本実施例においては、f1,f2,...の各々は、各サイクルにおいてフリー・リストから取り出されるものに対応する。
また、マッピング・ファイルに加えられる変更に関しては、スタックが何エントリ分成長するかという量と、スタックトップ近傍に加えられる変更内容(右端がスタックトップに対応)を示している。
命令1aの意味は、ローカル変数<4>のデータをロードしf1に対応するデータ・ファイルのエントリに書き込み、その要素がマッピング・ファイルに保持されるスタックを1エントリ分成長させ、新たにスタックトップとなるエントリの内容をf1に対応するデータ・ファイルのエントリのアドレスとする、というものである。命令1bの意味は、f1に対応するデータ・ファイルのエントリのデータに0を加え、その結果データをf2に対応するデータ・ファイルのエントリに書き込み、その要素がマッピング・ファイルに保持されるスタックを1エントリ分成長させ、新たにスタックトップとなるエントリの内容をf2に対応するデータ・ファイルのエントリのアドレスとする、というものであるが、マッピング・ファイルに加えられる変更については、命令1aによる変更内容も含めて記述している。その他の命令も同様である。
2つの命令群の各々について、その内容をまとめて、オペレーションとマッピング・ファイルの内容の変更に分けて記述すれば次のようになる。
Figure 2004021172
これが、上記プログラムを本発明実施例の計算機システムのスタック・モードの命令形式に変換した場合の、2命令の各々のOpフィールドとSMフィールドの内容である。このように、スタック・モードの命令形式では、SMフィールドにおいて、スタックの成長量と共に、更新後のスタックトップ近傍の内容を表す符号の系列が示されるようになっている。
(2−2)レジスタ・モードにおける命令形式
次に、レジスタ・モードにおける命令形式について説明する。
本実施例の計算機システムにおけるデータ・ファイルの各エントリが、仮想のレジスタ・マシンの1レジスタの保持するデータを保持できるものとする。本実施例においては、マッピング・ファイルのアドレス0,1,2,...のエントリの内容をそれぞれr0,r1,r2,...とおくとき、エントリ・アドレスがr0,r1,r2,...であるデータ・ファイルの各エントリに、それぞれ仮想のレジスタ・マシンのレジスタR0,R1,R2,...のデータが保持されるべきものとする。
例えば、メモリから変数A,B,Xのデータをレジスタ群にロードして、(A*X+B/X)*2を計算し、その結果を変数Yとしてメモリにストアするプログラムは、レジスタ・マシンにおいては、次のように書ける。
Figure 2004021172
ここで、変数A,B,X,Yのメモリにおける格納域のアドレスを、R0の中身にそれぞれ100,200,400,500を加えたものとしている。
上記プログラムがどのように本実施例の計算機システムにおけるレジスタ・モードの命令に変換されるかを説明する。
上記プログラムを4命令ずつから成るグループに分割して、個々の命令について、オペレーションの内容とマッピング・ファイルに加えられる変更の内容を分けて書くと、次のようになる。
Figure 2004021172
ここで、スタック・モードの場合と同様に、結果データを保持すべく新たに割り付けられるデータ・ファイルのエントリのアドレスを、各々の命令群において順にf1,f2,...とおいている。
命令1aの意味は、(r0に対応するデータ・ファイルのエントリのデータ+100)番地のデータをロードしf1に対応するデータ・ファイルのエントリに書き込み、マッピング・ファイルのアドレス1のエントリの内容をf1に対応するデータ・ファイルのエントリのアドレスに置き換える、というものである。命令1cの意味は、f1及びf2に各々対応するデータ・ファイルのエントリのデータを掛け合わせ、その結果データをf3に対応するデータ・ファイルのエントリに書き込み、マッピング・ファイルのアドレス5のエントリの内容をf3に対応するデータ・ファイルのエントリのアドレスに置き換える、というものである。その他の命令も同様である。
2つの命令群の各々について、4命令の内容をまとめて、オペレーションとマッピング・ファイルの内容の変更に分けて記述すれば次のようになる。
Figure 2004021172
これが、上記プログラムを本発明実施例の計算機システムのレジスタ・モードの命令形式に変換した場合の、2命令の各々のOpフィールドとSMフィールドの内容である。この2番目の命令に変換する際に、マッピング・ファイルのアドレス5のエントリの内容の置き換えが2つあるが、SMフィールドの内容としては最後のものだけが残されている。このように、レジスタ・モードの命令形式では、SMフィールドにおいて、内容を変更すべきマッピング・ファイルのエントリのアドレスと個々の変更内容を示す符号の組が列挙されるようになっている。
VLIW(very long instruction word)アーキテクチャに基づく個々の命令も、容易に本発明の計算機システムのレジスタ・モードの命令形式に変換することができる。
(3)スタック・モード
(3−1)スタック・モードにおける動作に必要な機能と構成
ここでは、本実施例の計算機システムの各構成要素ごとに、スタック・モードの動作において利用される機能と構成について説明する。これらは、一部を除き、レジスタ・モードにおいても必要とされる機能と構成である。
(A)命令フェッチ・ユニット
命令フェッチ・ユニットは、図示してないプログラムカウンタを具備しており、命令キャッシュから命令をフェッチし、命令発行ユニットに渡すようになっている。分岐の予測や分岐の実行も担う。
(B)命令発行ユニット
命令発行ユニットは、命令フェッチ・ユニットから渡された命令の発行のために、その内容に基づき前進マッピング・ファイルやデータ・ファイルの操作、オペレーション・キューと状態変更キューへの書き込みを行うための各種信号を発生するようになっている。
(C)マッピング・ファイル
マッピング・ファイルは、各々のエントリにデータ・ファイルのエントリのアドレスが書き込まれるような構成となっている。
本発明実施例の計算機システムのスタック・モードにおいては、マッピング・ファイル及びデータ・ファイルによって、スタック・マシンに具備されるべきスタックの最上位の部分が仮想的に構成されるようになっている。即ち、スタック・モードにおいては、マッピング・ファイルは、一種のスタックの内容を保持すべく用いられる。従来のスタックマシンにおいて、オペランド・スタックが...,word3,word2,word1(右端がスタックトップ)となっている状態は、本発明による計算機システムにおいて、マッピング・ファイルのアドレス0,1,2,...のエントリの内容がそれぞれa,b,c,...であれば、データ・ファイルにおいてエントリ・アドレスがa,b,c,...である各エントリに、それぞれword1,word2,word3,...が保持されている状態に対応する。オペランド・スタックの規模が大きくなると、残りの部分はデータ・バッファさらにはデータ・キャッシュに格納されるようになっている。
本発明の計算機システムは、前進マッピング・ファイル(AMF;Advanced Mapping File)と完了マッピング・ファイル(CMF;Completed Mapping File)の2つの同形のマッピング・ファイルを具備する。
本発明の計算機システムにおいては、命令が発行されるごとに、その命令の内容に応じてAMFの内容を変更する。すなわち、AMFは発行済みの全ての命令の内容を反映している。
他方、CMFは、プログラム上の順番で完了済みの全ての命令の内容を反映するものである。本発明の計算機システムは発行済みの命令に含まれるオペレーションのout−of−order実行を可能とするものであるが、CMFは、正確な例外処理を保証するため、in−orderで完了済の全ての命令に基づく状態を構成するために存在するものである。
各マッピング・ファイルごとにスタックの要素を保持する最下位のエントリを示すボトム・ポインタと呼ぶレジスタが存在する。初期状態あるいはマッピング・ファイルが空の場合には、ボトム・ポインタの値は−1であるものとする。
第3図は、本実施例の計算機システムにおける、2組のマッピング・ファイルとボトム・ポインタの関係を示す説明図である。2つのマッピング・ファイルAMF3a及びCMF3cは同数のエントリを有し、各マッピング・ファイルで各々のエントリに上から順に0,1,2,...とアドレスが付けられている。斜線が施されていないAMF/CMFのエントリは、スタックの構成要素としてデータ・ファイルのエントリのアドレスを保持しているものとする。第3図に示すように、AMF及びCMFの各々に対して設けられたボトム・ポインタを、それぞれBa及びBcと名付けている。
(D)データ・ファイル(DF;Data File)
データ・ファイル(DF)は、各々のエントリに1語分のデータが書き込まれるような構成となっている。
本実施例においては、DFのエントリにはp00,p01,p02,...のようにアドレスが付けられているものとする。
第4図は、本実施例の計算機システムにおける、DF6の各々のエントリ6(i)の構成を示す説明図である。ここで、iはエントリのアドレスである。DF6の各々のエントリ6(i)はデータ・フィールド61(i)、及び書込フラグ(WF;Write Flag)フィールド62(i)から成っている。
実際のDFのハードウェア上の構成は、上述の各フィールド別に設けられたレジスタ・ファイルの集合体である。
DFの各々のエントリのデータ・フィールドは、1語分のデータが書き込まれるようになっている。
DFの各々のエントリにおいて、WFフィールドは、データ・フィールドにデータの書き込みが完了していれば1、完了していなければ0が書き込まれているようになっている。
(E)オペレーション・キュー(OQ;Operation Queue)
オペレーション・キュー(OQ)は、未完了の発行済命令に含まれるオペレーションの内容を保持するバッファであり、循環型のFIFOキューの構成となっている。
第5図は、本実施例の計算機システムにおける、OQ5の各々のエントリ5(i)の構成を示す説明図である。ここで、iはエントリのアドレスである。OQ5の各々のエントリ5(i)はオペレーション・フィールド50(i)、デスティネーション・フィールド51(i)、オペランド・フィールド52(i)、第1ソース・フィールド53(i)、第1ソース書込フラグ(SWF1)フィールド54(i)、第2ソース・フィールド55(i)、第2ソース書込フラグ(SWF2)フィールド56(i)、リポート・フィールド57(i)、及びディスパッチ・フラグ・フィールド58(i)から成っている。
OQの各々のエントリのオペレーション・フィールドはオペレーション・コードが書き込まれるようになっている。
OQの各々のエントリのデスティネーション・フィールドは、結果データを生ずるオペレーションの場合に、その結果データを保持すべく割り付けられるDFのエントリのアドレスが書き込まれるようになっている。
OQの各々のエントリのオペランド・フィールドは、命令のOpフィールド中にオペランド値が示されるようなオペレーションの場合に、そのオペランド値が書き込まれるようになっている。
OQの各々のエントリの第1、第2ソース・フィールドの各々は、オペレーションのソース・データを保持すべく割り付けられているDFのエントリのアドレスが書き込まれるようになっている。
OQの各々のエントリにおいて、第1、第2の各SWFフィールドは各々第1、第2ソース・フィールドに対応して設けられている。SWF1/2フィールドは第1/2ソース・フィールドに示されるDFのエントリにデータの書き込みが完了していれば1、完了していなければ0が書き込まれているようになっている。
OQの各々のエントリのリポート・フィールドは、そのオペレーションを含む命令に対応する状態変更キューのエントリのアドレスと識別番号(A,B,C,Dのうちのいずれか)が書き込まれるようになっている。
OQの各々のエントリにおいて、ディスパッチ・フラグ・フィールドは、オペレーションがまだディスパッチされていなければ0、ディスパッチされていれば1が書き込まれているようになっている。
(F)状態変更キュー(SMQ;State Modification Queue)
状態変更キュー(SMQ)は、未完了の発行済命令の各々によるマッピング・ファイルの状態変更の内容を保持するバッファであり、循環型のFIFOキューの構成となっている。本実施例においては、SMQの各々のエントリは1つの命令に対応するものとなっている。
第6図は、本実施例の計算機システムにおける、SMQ4の各々のエントリ4(i)の構成を示す説明図である。ここで、iはエントリのアドレスである。SMQ4の各々のエントリ4(i)は状態変更(SM)フィールド40(i)、オペレーション・ステータスA(OS_A)フィールド41(i)、オペレーション・ステータスB(OS_B)フィールド42(i)、オペレーション・ステータスC(OS_C)フィールド43(i)、及びオペレーション・ステータスD(OS_D)フィールド44(i)から成っている。
実際のSMQのハードウェア上の構成は、上述の各フィールド別に設けられたレジスタ・ファイルの集合体である。
SMQの各々のエントリのSMフィールドは、対応する命令のSMフィールドに示されたマッピング・ファイルの変更内容が書き込まれるようになっている。
SMQの各々のエントリにおいて、OS_A、OS_B、OS_C、OS_Dの各フィールドは、各々対応するオペレーションの実行状態に関する情報が書き込まれているようになっている。本実施例においては、簡単のため、対応するオペレーションが存在しないか正常終了していれば1、その他の場合には0が書き込まれているものとする。
(G)データ・バッファ
データ・バッファは、各々のエントリに1語のデータが書き込まれるようになっている循環型のバッファである。
(H)機能ユニット
本実施例の計算機システムは、第1図に示すように、演算ユニット0及び1、分岐ユニット及びロード/ストア・ユニット(LSU;Load Store Unit)の4つの機能ユニットを具備するものとしている。これらは、各々パイプライン処理が可能で、互いに独立に並行して動作するものである。
スタック・モードにおいては、LSUはデータ・バッファ及びデータ・キャッシュにアクセスすることができるようになっている。
本発明実施例の計算機システムのスタック・モードにおいては、マッピング・ファイル及びデータ・ファイル(DF)によって、スタック・マシンに具備されるべきスタックの最上位の部分が仮想的に構成されるが、その下の部分がデータ・バッファ、さらにその下の部分がデータ・キャッシュに格納されるようになっている。LSUはデータ・バッファに高速にアクセスできるようになっており、アクセスすべき変数データがデータ・バッファに保持されている割合が大きいほど、より効率的な計算が可能となる。また、データ・バッファに適当な語数のデータを溜めておくようにすることによって、後述するDF−データ・バッファ−データ・キャッシュの間のSpill/Fillの動作を効率的に行うことができる。
LSUは、最初のローカル変数へのポインタを保持する図示してないレジスタ(varsレジスタ)を具備する。本実施例の計算機システムにおいては、ローカル変数の格納域はデータ・バッファあるいはデータ・キャッシュにあるが、varsレジスタには、データ・キャッシュにおける相当するアドレス値が書き込まれているようになっている。つまり、全てあるいは一部のローカル変数のデータが実際にはデータ・バッファに保持されていても、各々のローカル変数に、全てのローカル変数をデータ・キャッシュにSpillしたと仮定した場合のデータ・キャッシュにおけるアドレス値を対応させることができる。ロード/ストア・オペレーションの処理において、LSUはvarsレジスタの値を用いてアドレス計算を行い、対象となるローカル変数の格納域がデータ・バッファかデータ・キャッシュかを判定し、その格納域にアクセスする。
LSUは、プログラム中に示されるロード/ストア・オペレーションを実行すると共に、オーバーフロー/アンダーフローの回避のため、AMF/CMF及びDFによって構成される仮想の部分スタックの最下位にあたるデータをデータ・バッファとの間で自動的にSpill/Fillするようになっている。
1語分のデータをDFからデータ・バッファにSpillするには、(a)AMFとCMFで各々のボトム・ポインタ(Ba、Bc)で示されるエントリの内容が一致している、(b)その一致する内容と同じDFのエントリのアドレスがいずれかのソース・フィールドに書き込まれたエントリがOQに保持されるキュー内に存在しない、という2つの条件が満たされていなくてはならない(そうでない場合は満たされるまで待つ)。条件(b)に関しては、命令に含まれるオペレーションのソース・レジスタとして用いられるDFのエントリのアドレスがマッピング・ファイル中に保持された状態で残るケースに一定の制約を設けることによって、常に満たされるようにすることもできる。命令体系にそのような制約を設けない場合には、計算機システムは、OQにおいて各ソース・フィールドで上記一致する内容であるDFのエントリのアドレスを照合し、上記条件(b)に関するチェックを行うような機能を備えた構成としなければならない。上記2つの条件が満たされる場合、AMF/CMFのボトム・ポインタBa/Bcで示されるエントリの内容で示されるDFのエントリに書き込まれている1語分のデータをデータ・バッファにSpillすることができる。その際、Ba及びBcの値から1を引き、上記DFのエントリのアドレスをFLに登録する。
逆に、データ・バッファからDFに1語分のデータをFillするには、データ・バッファからFillすべき1語分のデータを取り出し、それにフリーなDFの1エントリを割り付け、そのデータ・フィールドに書き込む。WCFフィールドは1とする。さらに、ボトム・ポインタBa及びBcの値に1を加え、上記割り付けられるDFのエントリのアドレスを、AMF及びCMFの各々1を加えたボトム・ポインタ値で示されるエントリに各々書き込む。
データ・バッファとデータ・キャッシュの間でも、データ・バッファの空きに応じて適宜Spill/Fillの動作が行われるようになっている。
以上では,命令の発行/完了に伴うAMF/CMFの操作がないものとして、DFとデータ・バッファの間のSpill/Fillの動作について説明したが、命令の発行/完了とSpill/Fillの動作を合成し、同時に行えるような構成は容易に実現できる。
また、本発明の計算機システムは、DFとデータ・バッファの間及びデータ・バッファとデータ・キャッシュの間で、一度に複数語のデータをSpill/Fillできるような構成とすることも可能である
(I)フリー・リスト(FL;Free List)
フリー・リスト(FL)は、フリーな、即ち、割り付けられていないDFのエントリのアドレスを保持するもので、本実施例においては、第7図に示すように、命令完了用登録バッファ(EBIC;Entry Buffer for Instruction Completion)71a、スタック・スピル用登録バッファ(EBSS;Entry Buffer for Stack Spill)71b、デスティネーション用割付キュー(AQD;Allocation Queue for Destinations)72a、及びスタック・フィル用割付キュー(AQSF;Allocation Queue for Stack Fill)72bを備える。これらは各々適当な数のDFのエントリのアドレスを保持でき、AQDとAQSFは循環型のFIFOキューの構成となっている。
初期状態においては、DFの各々のエントリのアドレスはAQDとAQSFのどちらかに保持されている。新たにDFのエントリを割り付ける必要がある場合にFLからフリーなDFのエントリのアドレスが取り出されるが、命令の発行に伴いオペレーションの結果データを保持すべく割り付けるためにはAQDから、また、その要素がマッピング・ファイルに保持されるスタックのFillのためにはAQSFから取り出されるようになっている。逆に、割り付けが解除されるDFの各々のエントリについてはそのアドレスがFLに登録されるようになっているが、命令の完了に伴い割り付けが解除されるものはEBICに、また、その要素がマッピング・ファイルに保持されるスタックのSpillに伴い割り付けが解除されるものはEBSSに書き込まれるようになっている。EBIC/EBSSに書き込まれた各々のDFのエントリのアドレスは、すぐに、AQD及びAQSFの保持する内容量に応じて、そのいずれかに移されるようになっている。
(3−2)スタック・モードにおける動作
ついで、本発明実施例の計算機システムのスタック・モードにおける動作を説明する。
本実施例の計算機システムは、基本的に、命令を、▲1▼命令フェッチ、▲2▼命令発行、▲3▼オペレーション実行、▲4▼命令完了の4段階で処理する。以下に各段階ごとに動作内容を説明する。
▲1▼命令フェッチ
この段階では、命令フェッチ・ユニットが命令キャッシュから命令を取り出すと共に、次にフェッチする命令のアドレスを決定する。次に命令をフェッチするのは通常次アドレス値からであるが、フェッチした命令が無条件分岐オペレーションを含むか、条件分岐オペレーションを含み分岐すると予測した場合、分岐予測が外れた場合、あるいは例外が発生した場合には、フェッチするアドレス値を変更する。
▲2▼命令発行
この段階では、発行する命令のOpフィールドの内容に基づくオペレーション群の発行(オペレーション・キュー(OQ)への書き込み)、SMフィールドの内容に基づく前進マッピング・ファイル(AMF)及びそのボトム・ポインタBaの内容変更、及びその変更の内容の状態変更キュー(SMQ)への書き込みが行われる。この際、命令中のs0,s1,s2,...の各々は、スタックの最上位,2番目,3番目,...に対応するが、それぞれ変更前のAMFのアドレス0,1,2,...のエントリの内容に、f1,f2,...の各々はそれぞれフリー・リスト(FL)から順に取り出されるDFのエントリのアドレスに、置き換えられる。
AMF及びBaの内容変更に関しては、次のように行われる。まず、命令のSMフィールドに示される各符号が上記の要領でそれぞれ適切なDFのエントリのアドレスに置き換えられ、それぞれ対応するAMFのエントリに書き込まれる。ここで、AMFのアドレス0のエントリがスタックトップ即ち命令のSMフィールドにおいて右端に示される符号に対応し、以下アドレス順にAMFのエントリとスタックの要素が対応する。命令のSMフィールドで変更内容が明示されない部分については、スタックの成長量だけエントリの内容がシフトすることになる。即ち、スタックの成長量をgとおくと、AMFのアドレスiの内容が命令発行によりAMFのアドレス(i+g)に書き込まれることになる。また、ボトム・ポインタBaの値にはスタックの成長量が加えられる。
発行される命令に含まれるオペレーションの内容が書き込まれるOQの各エントリにおいて、リポート・フィールドには、同じ命令に基づく書き込みが行われるSMQのエントリのアドレスと識別番号(順にA,B,C,Dと機械的に付すものとする)が書き込まれる。OQのエントリのディスパッチ・フラグ・フィールドには0が書き込まれる。
命令の発行に伴い(f1,f2,f3,...に対応する)新たに割り付けられるDFのエントリにおいては、WFフィールドに0が書き込まれる。
ストア・オペレーションの場合には、その内容が、OQに書き込まれると共に、LSUに送られる。
OQの書き込みが行われるソース・フィールドに対応するSWFフィールドはまず0とされるが、s0,s1,s2,...のいずれかから置き換えられたDFのエントリ・アドレスのソース・フィールドへの書き込みの各々に関しては、次サイクルにおいて、そのアドレスのDFのエントリのWFフィールドの内容が読み出され、これが1であれば、OQの対応するSWFフィールドが1に変更されるようになっている。
発行される命令に基づき書き込みが行われるSMQのエントリにおいて、対応するオペレーションの存在するオペレーション・ステータス・フィールドには未実行を意味する0が書き込まれ、その他には1が書き込まれる。
▲3▼オペレーション実行
OQに保持される未実行のオペレーションは、実行可能となったものから、適切な機能ユニットにディスパッチされ、処理されるようになっている。従って、オペレーションの実行順序はout−of−orderになる。
OQにおいて、オペレーションに必要なソース・データが全てDFの該当するエントリに書き込み済であることが対応するSWFフィールドの内容によって確認されるエントリがあれば、その保持するオペレーションの実行のため、そのエントリの内容がDFをアクセスして得られるソース・データと共に適切な機能ユニットに送られるようになっている。この際、そのOQのエントリのディスパッチ・フラグ・フィールドが1に変更される。
ロード・オペレーションや算術論理演算等の結果データを生じるオペレーションに関しては、結果データが正常に得られれば、デスティネーションであるDFのエントリのデータ・フィールドに結果データが書き込まれ、WFフィールドが1に変更される。また、OQにおいて各ソース・フィールドで上記デスティネーションであるDFのエントリのアドレスが照合され、一致するソース・フィールドに対応するSWFフィールドが1に変更される。
ストア・オペレーションを書き込みの内容とするOQのエントリに関しては、同じ内容が命令発行段階においてLSUに送られている。命令発行段階において確定しなかったアドレス計算に必要なソース・データは、本実施例においては、そのDFへの書き込みがOQにおいて確認された直後に、LSUに送られるようになっているものとする。
いずれのオペレーションも、その実行が正常に終了すれば、リポート・フィールドの内容に基づき、対応するSMQのエントリのオペレーション・ステータス・フィールドが1に変更される。
ストア・オペレーションに関しては、アドレス計算はオペレーション実行段階においてout−of−orderで実行されるが、正確な例外処理を保証するために、ストアの実行は命令完了段階において行われる。従って、ストア・オペレーションの場合、ストア・データとストア・アドレスが共に確定すれば、対応するSMQのエントリのオペレーション・ステータス・フィールドが1に変更されるようになっている。
あるオペレーションの処理において例外事象が発生した場合には、その情報が、対応するSMQのエントリのオペレーション・ステータス・フィールドに書き込まれると共に、命令フェッチ・ユニットに通知される。
▲4▼命令完了
命令の完了はプログラム上の順番で行われる。
SMQのキューの先頭のエントリにおいて、全てのオペレーション・ステータス・フィールドの内容が1である、あるいはそうなると、対応する命令の完了が可能となる。命令の完了を実行するには、SMQの先頭のエントリの内容に基づきCMFおよびBcの内容を変更し、SMQにおいて上記先頭のエントリをキューから除外する。ここで、命令の発行の際にAMFに対して行われた内容変更がCMFにおいて再現されている。
また、命令の完了に伴い、割り付けを解除すべきDFのエントリのアドレスがそれぞれFLに登録される。スタック・モードにおいては、割り付けを解除すべきDFのエントリ群のアドレスは次の2つのグループからなる。命令の完了に伴う内容変更によりCMFにおいて保持されなくなるもの、及び、命令に含まれるオペレーションを保持していたOQのエントリ群のデスティネーション・フィールドに書き込まれていてCMFへの書き込みが行われないもの、である。
ストア・オペレーションを含む命令を完了する場合には、LSUにストアの実行を依頼する。こうすれば、データがプログラム上の順番でストアされることが保証できる。
以上が、本発明実施例の計算機システムのスタック・モードにおける動作の概要である。
(3−3)スタック・モードにおける動作例
ついで、具体的な動作例について説明する。いま、本実施例の計算機システムで、前述のY=A*X+B/Xを計算する次の2命令からなるプログラムを実行するものとする。
Figure 2004021172
第8図〜第14図は、本実施例の計算機システムにおいて、上記プログラムを処理する際の状態の変化を時系列に示した説明図であり、以下ではこの図をもとに詳細な動作を説明する。第8図〜第14図において、DF6、OQ5及びSMQ4の各エントリの構成は、それぞれ第4図、第5図及び第6図のものと同じである。マッピング・ファイルのボトム・ポインタが示すエントリより下のエントリや、FIFOキューの構成となっている構成要素のキューから外れるエントリなど、書込み内容が意味あるものとして保持されていないような部分には、斜線が施されている。p##が記入されている箇所は、DFのいずれかのエントリのアドレスが書き込まれているが、本動作例の説明において留意する必要がないことを意味する。また、本動作例においては、説明を簡単にするため、DFとデータ・バッファの間のSpill/Fillの動作は行わないものとする。
FLの構成要素であるデスティネーション用割付キュー(AQD)72a及びAMF3aの当初の内容が第8図に示されるようなものであるとしよう。ここで、循環型のFIFOキューの構成となっているAQD72aで、キューの先頭からの4エントリが次に発行される命令におけるf1,f2,f3,f4にそれぞれ対応することを示している。AMF3a及びCMF3cでは、各々のエントリに上から順に0,1,2,...とアドレスが付けられていて、それぞれs0,s1,s2,...に対応するものとしている。
計算機システムが第8図に示される状態にあるときに、命令1の発行が行われるものとする。
命令1のOpフィールドの内容に基づき命令に含まれるオペレーションの内容がOQに書き込まれ、SMフィールドの内容に基づきAMF及びBaの内容が変更され、その変更の内容がSMQに書き込まれる。この際、命令中のf1,f2,f3,f4の各々はそれぞれフリー・リストから順に取り出されるp26,p34,p42,p51に、置き換えられる。AMFの内容の変更に関しては、アドレス0,1のエントリには、それぞれf1,f4から置き換えられるp26,p51が書き込まれ、それ以下の部分では、スタックの成長量(2)だけエントリの内容がシフトする(第8図におけるAMFのアドレス0,1,...の各エントリの内容がアドレス2,3,...の各エントリにそれぞれ書き込まれる)。第9図のOQで書き込み内容を示した4エントリにおいて、リポート・フィールドには、同じ命令1に基づく書き込みが行われるSMQのエントリのアドレス1と識別番号(順にA,B,C,D)が書き込まれている。また、これらのOQの4エントリのディスパッチ・フラグ・フィールドには0が書き込まれている。
f1,f2,f3,f4にそれぞれ対応して新たに割り付けられるDFのアドレスp26,p34,p42,p51の各エントリにおいては、WFフィールドを0とする。
SMQの書き込みが行われるエントリの各オペレーション・ステータス・フィールドには、いずれも対応するオペレーションが存在するので、0が書き込まれている。
こうして、計算機システムは第8図の状態から第9図に示されるような状態に至る。
次のサイクルでは、命令1に続いて命令2の発行が行われる。
命令1の場合と同様に、命令2のOpフィールドの内容に基づき命令に含まれるオペレーションの内容がOQに書き込まれ、SMフィールドの内容に基づきAMF及びBaの内容が変更され、その変更の内容がSMQに書き込まれる。この際、命令中のs0,s1は変更前(第9図)のAMFのそれぞれアドレス0,1のエントリの内容p26,p51に、f1,f2,f3の各々はそれぞれフリー・リストから順に取り出されるp16,p18,p57に、置き換えられる。SMフィールドに負のスタック成長量(−2)しか示されていないので、AMFに関しては、それだけエントリの内容がシフトする(第9図におけるAMFのアドレス2,3,...の各エントリの内容がアドレス0,1,...の各エントリにそれぞれ書き込まれる)。
f1,f2,f3にそれぞれ対応して新たに割り付けられるDFのアドレスp16,p18,p57の各エントリにおいては、WFフィールドを0とする。
さらに、命令2はストア・オペレーションを含むので、その内容が、OQに書き込まれると共に、LSUに送られる。
こうして、計算機システムは第10図に示されるような状態に至る。
OQに保持される未実行のオペレーションは、実行可能となったものから、適切な機能ユニットにディスパッチされ、処理される。
第11図は、数サイクルが経過して、命令1以前に発行された命令が全て完了し、命令1に含まれる4つのオペレーション全てが正常終了した時点の計算機システムの状態を示したものである。命令1に対応するSMQのアドレス1のエントリにおいて、全てのオペレーション・ステータス・フィールドが1となっている。また、この時点のCMF及びBcの内容は、命令1の発行直前(第8図)のAMF及びBaの内容と同じものとなっている(DFとデータ・バッファの間のSpill/Fillの動作が行われれば、命令発行時のBaの値と命令完了時のBcの値は一致しない)。この状態から命令1の完了が次のように実行される。
第11図においてSMQのアドレス1のエントリがその時点のキューの先頭であるので、その内容に基づきCMF及びBcの内容が変更される。すなわち、Bcの値に2が加えられ、CMFのアドレス0,1のエントリにはそれぞれp26,p51が書き込まれ、それ以下の部分では、スタックの成長量(2)だけエントリの内容がシフトする。さらにSMQにおける上記先頭のエントリがキューから除外される。
また、命令1の完了に伴い割り付けを解除すべきDFのエントリのアドレスがFLに登録される。この場合、命令1に含まれるオペレーションを保持していたOQのエントリ群のデスティネーション・フィールドに書き込まれていてCMFへの書き込みが行われないp34,p42がFLの構成要素である命令完了用登録バッファ(EBIC)71aに書き込まれる。(この場合、命令の完了に伴う内容変更によりCMFにおいて保持されなくなるもの、はない。)こうして、計算機システムは第12図に示されるような状態に至る。
第13図は、さらに数サイクルが経過して、命令2に含まれる3つのオペレーションが正常終了し、最後のストア・オペレーションに関してはストア・データとストア・アドレスが共に確定済となった時点の計算機システムの状態を示したものである。EBICに書き込まれたp34,p42がAQDに移されている。
第13図の時点から1サイクルで、命令2の完了が命令1の場合と同様に行われる。この場合、命令2がストア・オペレーションを含むので、そのストアの実行がLSUに依頼される。また、命令の完了に伴い割り付けを解除すべきDFのエントリのアドレスがFLに登録される。この場合、命令の完了に伴う内容変更によりCMFにおいて保持されなくなるものであるp51,p26と、命令2に含まれるオペレーションを保持していたOQのエントリ群のデスティネーション・フィールドに書き込まれていてCMFへの書き込みが行われないものであるp16,p18,p57がEBICに書き込まれる。こうして、計算機システムは第14図に示されるような状態に至る。
以上で、本実施例の計算機システムにおいてY=A*X+B/Xの計算が完了したことになる。
(4)レジスタ・モード
(4−1)レジスタ・モードにおける動作に必要な機能と構成
(3−1)で述べた機能と構成は、一部を除き、レジスタ・モードにおいても必要とされるものである。ここでは、スタック・モードの場合との相違点について説明する。
まず、マッピング・ファイルは、レジスタ・モードにおいては、レジスタ・ベースのスーパースカラ・プロセッサにおけるレジスタ・マッピング・テーブルと同等なものとして用いられる。
従って、マッピング・ファイルのボトム・ポインタ、データ・バッファ、ロード/ストア・ユニット(LSU)のSpill/Fillに関する機能、フリー・リスト(FL)中のスタック・スピル用登録バッファ(EBSS)及びスタック・フィル用割付キュー(AQSF)などは、基本的に、必要ではない。
(4−2)レジスタ・モードにおける動作
ついで、本発明実施例の計算機システムのレジスタ・モードにおける動作を説明する。
本実施例の計算機システムは、レジスタ・モードにおいてもスタック・モードの場合と同様に、基本的に、命令を、▲1▼命令フェッチ、▲2▼命令発行、▲3▼オペレーション実行、▲4▼命令完了の4段階で処理する。以下に各段階ごとに動作内容を説明する。
▲1▼命令フェッチ
この段階では、命令フェッチ・ユニットが命令キャッシュから命令を取り出すと共に、次にフェッチする命令のアドレスを決定する。
▲2▼命令発行
この段階では、発行する命令のOpフィールドの内容に基づくオペレーション群の発行(オペレーション・キュー(OQ)への書き込み)、SMフィールドの内容に基づく前進マッピング・ファイル(AMF)の内容変更、及びその変更の内容の状態変更キュー(SMQ)への書き込みが行われる。この際、命令中のr0,r1,r2,...の各々はそれぞれ変更前のAMFのアドレス0,1,2,...のエントリの内容に、f1,f2,...の各々はそれぞれフリー・リスト(FL)から順に取り出されるDFのエントリのアドレスに、置き換えられる。
AMFの内容変更に関しては、次のように行われる。命令のSMフィールドに示されるAMFのエントリ・アドレスと符号の組の各々について、符号が上記の要領でそれぞれ適切なDFのエントリ・アドレスに置き換えられ、アドレスが示されるAMFのエントリに書き込まれる。
発行される命令に含まれるオペレーションの内容が書き込まれるOQの各エントリにおいて、リポート・フィールドには、同じ命令に基づく書き込みが行われるSMQのエントリのアドレスと識別番号(順にA,B,C,Dと機械的に付すものとする)が書き込まれる。OQのエントリのディスパッチ・フラグ・フィールドには0が書き込まれる。
命令の発行に伴い(f1,f2,f3,...に対応する)新たに割り付けられるDFのエントリにおいては、WFフィールドに0が書き込まれる。
ストア・オペレーションの場合には、その内容が、OQに書き込まれると共に、LSUに送られる。
OQの書き込みが行われるソース・フィールドに対応するSWFフィールドはまず0とされるが、r0,r1,r2,...のいずれかから置き換えられたDFのエントリ・アドレスのソース・フィールドへの書き込みの各々に関しては、次サイクルにおいて、そのアドレスのDFのエントリのWFフィールドの内容が読み出され、これが1であれば、OQの対応するSWFフィールドが1に変更されるようになっている。
発行される命令に基づき書き込みが行われるSMQのエントリにおいて、対応するオペレーションの存在するオペレーション・ステータス・フィールドには未実行を意味する0が書き込まれ、その他には1が書き込まれる。
▲3▼オペレーション実行
OQに保持される未実行のオペレーションは、スタック・モードの場合と同様に、実行可能となったものから、適切な機能ユニットにディスパッチされ、処理されるようになっている。
▲4▼命令完了
命令の完了は、以下の点を除き、スタック・モードの場合と同様に、プログラム上の順番で行われる。
まず、命令の発行の際にAMFに対して行われた内容変更がCMFにおいて再現されるが、それは、レジスタ・モードにおける命令のSMフィールド内部のフォーマット、即ち状態変更キュー(SMQ)の書き込みの形式に即して行われる。
また、命令の完了に伴い、割り付けを解除すべきDFのエントリのアドレスがそれぞれFLに登録される。レジスタ・モードにおいては、割り付けを解除すべきDFのエントリ群のアドレスは次の2つのグループからなる。命令の完了に伴い内容が書き換えられるCMFの各エントリの変更前の内容を読み出したもの、及び、命令に含まれるオペレーションを保持していたOQのエントリ群のデスティネーション・フィールドに書き込まれていてCMFへの書き込みが行われないもの、である。
以上が、本発明実施例の計算機システムのレジスタ・モードにおける動作の概要である。
(4−3)レジスタ・モードにおける動作例
ついで、具体的な動作例について説明する。いま、本実施例の計算機システムで、前述のY=(A*X+B/X)*2を計算する次の2命令からなるプログラムを実行するものとする。
Figure 2004021172
第15図〜第21図は、本実施例の計算機システムにおいて、上記プログラムを処理する際の状態の変化を時系列に示した説明図であり、以下ではこの図をもとに詳細な動作を説明する。第15図〜第21図において、DF6、OQ5及びSMQ4の各エントリの構成は、それぞれ第4図、第5図及び第6図のものと同じである。FIFOキューの構成となっている構成要素のキューから外れるエントリなどの書込み内容が意味あるものとして保持されていないような部分には、斜線が施されている。p##が記入されている箇所は、DFのいずれかのエントリのアドレスが書き込まれているが、本動作例の説明において留意する必要がないことを意味する。
FLの構成要素であるデスティネーション用割付キュー(AQD)72a及びAMF3aの当初の内容が第15図に示されるようなものであるとしよう。ここで、循環型のFIFOキューの構成となっているAQD72aで、キューの先頭からの4エントリが次に発行される命令におけるf1,f2,f3,f4にそれぞれ対応することを示している。AMF3a及びCMF3cでは、各々のエントリに上から順に0,1,2,...とアドレスが付けられていて、それぞれr0,r1,r2,...に対応するものとしている。
計算機システムが第15図に示される状態にあるときに、命令1の発行が行われるものとする。
命令1のOpフィールドの内容に基づき命令に含まれるオペレーションの内容がOQに書き込まれ、SMフィールドの内容に基づきAMFの内容が変更され、その変更の内容がSMQに書き込まれる。この際、命令中のr0は変更前(第15図)のAMFのアドレス0のエントリの内容p12に、f1,f2,f3,f4の各々はそれぞれフリー・リストから順に取り出されるp26,p34,p42,p51に、置き換えられる。AMFの内容の変更に関しては、アドレス1,2,4,5のエントリに、それぞれf1,f4,f2,f3から置き換えられるp26,p51,p34,p42が書き込まれる。第16図のOQで書き込み内容を示した4エントリにおいて、リポート・フィールドには、同じ命令1に基づく書き込みが行われるSMQのエントリのアドレス1と識別番号(順にA,B,C,D)が書き込まれている。また、これらのOQの4エントリのディスパッチ・フラグ・フィールドには0が書き込まれている。
f1,f2,f3,f4にそれぞれ対応して新たに割り付けられるDFのアドレスp26,p34,p42,p51の各エントリにおいては、WFフィールドを0とする。(r0に対応するDFのアドレスp12のエントリでは、WFフィールドが1でデータ″1000″がすでに書き込まれていたものとしている。)
SMQの書き込みが行われるエントリの各オペレーション・ステータス・フィールドには、いずれも対応するオペレーションが存在するので、0が書き込まれている。
こうして、計算機システムは第15図の状態から第16図に示されるような状態に至る。
次のサイクルでは、命令1に続いて命令2の発行が行われる。
命令1の場合と同様に、命令2のOpフィールドの内容に基づき命令に含まれるオペレーションの内容がOQに書き込まれ、SMフィールドの内容に基づきAMFの内容が変更され、その変更の内容がSMQに書き込まれる。
f1,f2,f3にそれぞれ対応して新たに割り付けられるDFのアドレスp16,p18,p57の各エントリにおいては、WFフィールドを0とする。
さらに、命令2は1つのストア・オペレーションを含むので、その内容が、OQに書き込まれると共に、LSUに送られる。
また、前サイクルの命令1の発行において、OQのソース・フィールドにr0から置き換えられたp12が書き込まれているので、そのアドレスのDFのエントリのWFフィールドの内容が読み出され、これが1であるので、OQにおいてp12が書き込まれているソース・フィールドに対応するSWFフィールドが1に変更される。
こうして、計算機システムは第17図に示されるような状態に至る。
OQに保持される未実行のオペレーションは、実行可能となったものから、適切な機能ユニットにディスパッチされ、処理される。
第18図は、数サイクルが経過して、命令1以前に発行された命令が全て完了し、命令1に含まれる4つのオペレーション全てが正常終了した時点の計算機システムの状態を示したものである。命令1に対応するSMQのアドレス1のエントリにおいて、全てのオペレーション・ステータス・フィールドが1となっている。また、この時点のCMFの内容は、命令1の発行直前(第15図)のAMFの内容と同じものとなっている。この状態から命令1の完了が次のように実行される。
第18図においてSMQのアドレス1のエントリがその時点のキューの先頭であるので、その内容に基づきCMFの内容が変更される。すなわち、CMFのアドレス1,2,4,5のエントリにそれぞれp26,p51,p34,p42が書き込まれる。さらにSMQにおける上記先頭のエントリがキューから除外される。
また、命令1の完了に伴い割り付けを解除すべきDFのエントリのアドレスがFLに登録される。この場合、内容が書き換えられるCMFのアドレス1,2,4,5の各エントリの変更前の内容(p02,p10,p24,p60)が読み出され、これらがFLの構成要素である命令完了用登録バッファ(EBIC)71aに書き込まれる。(この場合、命令1に含まれるオペレーションを保持していたOQのエントリ群のデスティネーション・フィールドに書き込まれていてCMFへの書き込みが行われないもの、はない。)こうして、計算機システムは第19図に示されるような状態に至る。
第20図は、さらに数サイクルが経過して、命令2に含まれる3つのオペレーションが正常終了し、最後のストア・オペレーションに関してはストア・データとストア・アドレスが共に確定済となった時点の計算機システムの状態を示したものである。EBICに書き込まれたp02,p10,p24,p60がAQDに移されている。
第20図の時点から1サイクルで、命令2の完了が命令1の場合と同様に行われる。この場合、命令2がストア・オペレーションを含むので、そのストアの実行がLSUに依頼される。また、命令の完了に伴い割り付けを解除すべきDFのエントリのアドレスがFLに登録される。この場合、内容が書き換えられるCMFの各エントリの変更前の内容を読み出したものであるp34,p42と、命令2に含まれるオペレーションを保持していたOQのエントリ群のデスティネーション・フィールドに書き込まれていてCMFへの書き込みが行われないものであるp18がEBICに書き込まれる。こうして、計算機システムは第21図に示されるような状態に至る。
以上で、本実施例の計算機システムにおいてY=(A*X+B/X)*2の計算が完了したことになる。
(5)例外回復
ここでは、本発明の計算機システムにおける例外回復について説明する。
ある命令に含まれるオペレーションの実行において例外事象が発生した場合、その命令の発行時点の状態を回復する必要がある(但し、スタック・モードにおいては、すでに行われたデータ・ファイルDFとデータ・バッファの間のSpill/Fillの動作は取り消さない)。
そのためには、例外が発生した命令以降に発行された命令を全てキャンセルし、その時点の完了マッピング・ファイルCMF(及びそのボトム・ポインタBc)の内容を前進マッピング・ファイルAMF(及びそのボトム・ポインタBa)にコピーし、さらに、状態変更キューSMQのキューの先頭のエントリから上記例外が発生した命令に対応するエントリまでの各々の内容に基づきAMF(及びBa)の内容変更を行えばよい。
ある命令以降に発行された命令を全てキャンセルするには、オペレーション・キューOQ及びSMQにおいてキャンセルされるべき命令群に対応する範囲のエントリを全てキューから除外し、キャンセルされるべきオペレーションのデスティネーション・レジスタとして割り付けられたDFのエントリのアドレスの各々をFLに戻せばよい。
キャンセルされるべきオペレーションのデスティネーション・レジスタとして割り付けられたDFのエントリのアドレスの各々をFLに戻すには基本的に2つの方法がある。即ち、まともに命令完了用登録バッファEBICに順次書き込む方法と、デスティネーション用割付キューAQDのキューの先頭を示すポインタを書き換えるというものである。後者の方法を採用する場合、AQDのキューの先頭を示すポインタ値として書き込まれる可能性がある値をどこかに保持しておく必要がある。それには、(a)SMQにそのためのフィールドを設け、命令の発行ごとに書き込む、(b)一種の履歴ファイルを設け、条件分岐オペレーションを含む命令の発行ごとに書き込む、というような方法が考えられる。
以上のように、本発明の計算機システムにおいては、例外が発生した命令が発行された時点のAMF(及びBa)の状態を、基本的に、回復することができるので、正確な例外処理が可能である。
(6)その他の実施例
本発明の計算機システムは、上述の実施例に限られるものではなく、細部の構成の異なる様々な実施例が存在する。たとえば、以下のようなものをあげることができる。
(6−1)実施例A
本発明の計算機システムは、従来のスタック・ベースあるいはレジスタ・ベースのプロセッサの命令形式に基づくプログラムを命令キャッシュに蓄えておき、実行時に命令発行段階の前段において、(2)で規定した命令形式に準じるよう変換するような構成とすることもできる。
(6−2)実施例B
本発明の計算機システムは、個々の命令の発行の際に、その命令の完了時に割り付けの解除が必要になるDFのエントリのアドレス、あるいはそれを定めるための情報を、状態変更キューあるいは専用のキューにあらかじめ記入しておくような構成とすることもできる。
(6−3)実施例C
共にボトム・ポインタを備えるスタック型の前進マッピング・ファイル及び完了マッピング・ファイルと、レジスタ型の前進マッピング・ファイル及び完了マッピング・ファイルを具備する構成とし、命令の状態変更フィールドで、スタック型のマッピング・ファイルの内容変更とレジスタ型のマッピング・ファイルの内容変更を共に示すことのできるような計算機システムも実現可能である。
(6−4)実施例D
レジスタ・ベースのスーパースカラ・アーキテクチャにおいて考えられる様々な変形の多くが、本発明に基づく計算機システムにおいても適用できる。例えば、以下のようなものがあげられる。
▲1▼各機能ユニットの入力段にそれぞれリザベーション・ステーションを設けることによってオペレーション・ウインドウを実現したもの。
▲2▼オペレーション・キューの後段にスケジューラを設けたもの。
▲3▼整数データ用/浮動小数点データ用、あるいは汎用/マルチメディア用というようにデータ型別にデータ・ファイル、オペレーション・キュー、機能ユニット群、フリー・リストを設けたもの。
▲4▼複数組の前進マッピング・ファイル、完了マッピング・ファイル、オペレーション・キュー、状態変更キュー等を設け、複数のスレッドを並行して処理できる構成としたもの。
本発明によれば、高性能の計算機システムを実現することができる。また、従来のスタック・ベースあるいはレジスタ・ベースのプロセッサの機械語で記述されたプログラムは、本発明の計算機システムの命令形式に容易に変換できる。

Claims (3)

  1. 各々のエントリにデータが書き込まれるようになっているデータ・ファイルと、
    各々のエントリに該データ・ファイルのエントリのアドレスが書き込まれるようになっている前進マッピング・ファイル及び完了マッピング・ファイルと、
    各々のエントリに該前進マッピング・ファイルの状態変更の内容が書き込めるようになっている状態変更キューと、
    それぞれ該状態変更キューの個々のエントリに対応して設けられたオペレーション群の実行状態を保持する状態保持手段群と、
    発行済のオペレーションをout−of−orderで処理する手段を具備し、
    該前進マッピング・ファイルの内容変更、その変更の内容の該状態変更キューへの書き込み、及び該前進マッピング・ファイルの該内容変更と組み合わさったオペレーション群の発行を各々1サイクルで行うようになっており、
    発行済のオペレーションの各々はout−of−orderで実行され、正常終了すると、これに応じて該状態保持手段群の対応する部分が書き換えられるようになっており、
    該状態変更キューの先頭のエントリの内容で示される該前進マッピング・ファイルの内容変更と組み合わさったオペレーション群に含まれるオペレーションが全て正常終了したことが対応する状態保持手段によって示された後に、該状態変更キューの該先頭のエントリの該内容に基づき該完了マッピング・ファイルの内容変更を行い、該状態変更キューから該先頭のエントリを除外するようになっている計算機システム。
  2. 該前進マッピング・ファイル及び該完了マッピング・ファイルがスタックの内容を該スタックの先頭からエントリ・アドレス順に保持するようになっている請求項1記載の計算機システム。
  3. 該前進/完了マッピング・ファイルをアクセスするのに、エントリ・アドレスを示すようになっている請求項1記載の計算機システム。
JP2004532742A 2002-08-30 2003-08-27 計算機システム Expired - Fee Related JP3706384B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2002254010 2002-08-30
JP2002254010A JP2004094533A (ja) 2002-08-30 2002-08-30 計算機システム
PCT/JP2003/010891 WO2004021172A1 (ja) 2002-08-30 2003-08-27 計算機システム

Publications (2)

Publication Number Publication Date
JP3706384B2 JP3706384B2 (ja) 2005-10-12
JPWO2004021172A1 true JPWO2004021172A1 (ja) 2005-12-22

Family

ID=31972819

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2002254010A Pending JP2004094533A (ja) 2002-08-30 2002-08-30 計算機システム
JP2004532742A Expired - Fee Related JP3706384B2 (ja) 2002-08-30 2003-08-27 計算機システム

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2002254010A Pending JP2004094533A (ja) 2002-08-30 2002-08-30 計算機システム

Country Status (10)

Country Link
US (1) US20050251656A1 (ja)
EP (1) EP1533693A4 (ja)
JP (2) JP2004094533A (ja)
KR (1) KR20050059117A (ja)
CN (2) CN1678987A (ja)
AU (1) AU2003268632A1 (ja)
BR (1) BR0314409A (ja)
CA (1) CA2495453A1 (ja)
RU (1) RU2005108986A (ja)
WO (1) WO2004021172A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014211801A (ja) 2013-04-19 2014-11-13 株式会社東芝 インターフェース制御装置、データ記憶装置及びインターフェース制御方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4991090A (en) * 1987-05-18 1991-02-05 International Business Machines Corporation Posting out-of-sequence fetches
US5781753A (en) * 1989-02-24 1998-07-14 Advanced Micro Devices, Inc. Semi-autonomous RISC pipelines for overlapped execution of RISC-like instructions within the multiple superscalar execution units of a processor having distributed pipeline control for speculative and out-of-order execution of complex instructions
JPH0628182A (ja) * 1992-04-16 1994-02-04 Matsushita Electric Ind Co Ltd 情報処理装置
US6112018A (en) * 1997-12-18 2000-08-29 Advanced Micro Devices, Inc. Apparatus for exchanging two stack registers
US6633970B1 (en) * 1999-12-28 2003-10-14 Intel Corporation Processor with registers storing committed/speculative data and a RAT state history recovery mechanism with retire pointer
KR100804107B1 (ko) * 2000-08-31 2008-02-18 하지메 세키 계산기 시스템
GB2367654B (en) * 2000-10-05 2004-10-27 Advanced Risc Mach Ltd Storing stack operands in registers
GB2367653B (en) * 2000-10-05 2004-10-20 Advanced Risc Mach Ltd Restarting translated instructions
US20020144091A1 (en) * 2001-04-03 2002-10-03 Larry Widigen Method and apparatus for dynamic register management in a processor

Also Published As

Publication number Publication date
JP3706384B2 (ja) 2005-10-12
CN1678987A (zh) 2005-10-05
CN101178647A (zh) 2008-05-14
JP2004094533A (ja) 2004-03-25
EP1533693A4 (en) 2008-05-14
CA2495453A1 (en) 2004-03-11
RU2005108986A (ru) 2005-09-10
WO2004021172A1 (ja) 2004-03-11
EP1533693A1 (en) 2005-05-25
KR20050059117A (ko) 2005-06-17
US20050251656A1 (en) 2005-11-10
AU2003268632A1 (en) 2004-03-19
BR0314409A (pt) 2005-07-19

Similar Documents

Publication Publication Date Title
KR100323374B1 (ko) 부동소숫점유니트에서의다이나믹레지스터관리장치및그방법
TWI533129B (zh) 使用可分割引擎實體化的虛擬核心執行指令序列程式碼區塊
TWI520070B (zh) 使用可分割引擎實體化的虛擬核心以支援程式碼區塊執行的記憶體片段
US9858080B2 (en) Method for implementing a reduced size register view data structure in a microprocessor
TWI518504B (zh) 使用可分割引擎實體化的虛擬核心以支援程式碼區塊執行的暫存器檔案節段
Espasa et al. Out-of-order vector architectures
JPH04503416A (ja) データフローマルチプロセサシステム
EP0565705B1 (en) Out of order job processing method and apparatus
WO2005013118A2 (en) Renaming for register with multiple bit fields
US20040003211A1 (en) Extending a register file utilizing stack and queue techniques
US6108771A (en) Register renaming with a pool of physical registers
JP3638584B2 (ja) 計算機システム
US9430244B1 (en) Run-time code parallelization using out-of-order renaming with pre-allocation of physical registers
US8782378B2 (en) Dynamic instruction splitting
JP3706384B2 (ja) 計算機システム
US7206923B2 (en) Method and apparatus for eliminating the need for register assignment, allocation, spilling and re-filling
JP3701203B2 (ja) 計算機システム
US20020144091A1 (en) Method and apparatus for dynamic register management in a processor
US20050102494A1 (en) Method and apparatus for register stack implementation using micro-operations
Quammen et al. Register window management for a real-time multitasking RISC
US20230214116A1 (en) Processing Device for Handling Misaligned Data
JP2668987B2 (ja) データ処理装置
Leeuwrik et al. Hardware design of the multris microprocessor
JPH1091442A (ja) プロセッサ

Legal Events

Date Code Title Description
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: 20050719

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20050728

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 3706384

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

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

Free format text: PAYMENT UNTIL: 20110805

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20120805

Year of fee payment: 7

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

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

Free format text: PAYMENT UNTIL: 20120805

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20130805

Year of fee payment: 8

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

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

Free format text: PAYMENT UNTIL: 20130805

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20140805

Year of fee payment: 9

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees