JP5902285B2 - 有効な命令フュージョンを進展させる技術 - Google Patents

有効な命令フュージョンを進展させる技術 Download PDF

Info

Publication number
JP5902285B2
JP5902285B2 JP2014241108A JP2014241108A JP5902285B2 JP 5902285 B2 JP5902285 B2 JP 5902285B2 JP 2014241108 A JP2014241108 A JP 2014241108A JP 2014241108 A JP2014241108 A JP 2014241108A JP 5902285 B2 JP5902285 B2 JP 5902285B2
Authority
JP
Japan
Prior art keywords
instruction
queue
fusible
fusionable
stored
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2014241108A
Other languages
English (en)
Other versions
JP2015072707A (ja
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
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=42063260&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=JP5902285(B2) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by インテル コーポレイション, インテル コーポレイション filed Critical インテル コーポレイション
Publication of JP2015072707A publication Critical patent/JP2015072707A/ja
Application granted granted Critical
Publication of JP5902285B2 publication Critical patent/JP5902285B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4063Device-to-bus coupling
    • 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/22Microcontrol or microprogram arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • 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/30196Instruction operation extension or modification using decoder, e.g. decoder per instruction set, adaptable or programmable decoders
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/452Instruction code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

本発明の実施形態は、概して、情報処理の分野に関し、より具体的には、コンピュータシステム及びマイクロプロセッサにおける命令フュージョン(instruction fusion)の分野に関する。
命令フュージョンは、2つの命令を、プロセッサ内の1つの動作(又はマイクロオペレーション“uop”)シーケンスをもたらす単一の命令にまとめる処理である。プロセッサ命令キュー(IQ)(instruction queue)に格納されている命令は、IQから読み出された後、命令デコーダへ送信される前に、あるいは、命令デコーダによってデコードされた後に、フュージョンされてよい。通常、命令がデコードされる前に起こる命令フュージョンは「マクロフュージョン(macro-fusion)」と呼ばれ、他方、命令がデコードされた後に起こる命令フュージョンは「マイクロフュージョン(micro-fusion)」と呼ばれる。マクロフュージョンの例は、比較(“CMP”)命令又はテスト(“TEST”)命令(“CMP/TEST”)と条件付きジャンプ(“JCC”)命令との結合である。CMP/TEST及びJCCの命令の組は、プログラムにおいて、例えば、比較が行われ、比較の結果に基づいて、枝分かれが起こるか否かが決まるところのループの終わりに定期的に起こってよい。マクロフュージョンは命令スループットを有効に増大させうるので、可能な限り命令をフュージョンする多くの機会を見出すことが望ましい。
何らかの先行技術のプロセッサ・マイクロアーキテクチャで見出される命令フュージョンの機会に関し、CMP/TEST及びJCCの両命令は、同時にIQにある必要があり、それにより、それらの命令は、命令がIQから読み出されるときにフュージョンされ得る。しかし、IQにフュージョン可能なCMP/TEST命令はあるが、それ以外の命令はIQに書き込まれていない場合(すなわち、CMP/TEST命令がIQにおける最後の命令である場合)、CMP/TEST命令は、たとえプログラム順序における次の命令がJCC命令であるとしても、IQから読み出されて、フュージョンされることなくデコーダに送られうる。フュージョンの機会を逸する例は、CMP/TEST及びJCCが図らずも記憶バウンダリ(例えば、16バイトバウンダリ)にわたって起こり、CMP/TESTが1サイクルにおいてIQに書き込まれ、JCCが次のサイクルにおいてIQに書き込まれる場合である。この場合に、失速状態(stalling condition)が存在しないならば、JCCは、CMP/TESTがIQから読み出されるのと同時に又はその後にIQに書き込まれるので、フュージョンの機会をのがし、IQの多数の不必要な読出が引き起こされ、命令スループットが低下するとともに、電力消費は増大する。
本発明の少なくとも1つの実施形態が使用されるマイクロプロセッサのブロック図を表す。 本発明の少なくとも1つの実施形態が使用されるバス共有型コンピュータシステムのブロック図を表す。 本発明の少なくとも1つの実施形態が使用されるポイント・ツー・ポイント相互接続型コンピュータシステムのブロック図を表す。 本発明の少なくとも1つの実施形態を実施するために使用される状態機械のブロック図を表す。 本発明の少なくとも1つの実施形態を実行するために使用される動作のフロー図である。 少なくとも1つの実施形態で実行される動作のフロー図である。
本発明の実施形態について、限定ではなく、一例として、添付の図面の各図を参照して説明する。図中、同じ参照符号は同じ要素を表している。
本発明の実施形態は、プロセッサにおける命令スループットを改善し、及び/又は、プロセッサの電力消費を削減するために、使用されてよい。一実施形態において、さもなければ命令フュージョンの機会を逸する可能性があるものが見つけられ、結果として、命令フュージョンが起こり得る。一実施形態において、逸する可能性がある命令フュージョンの機会は、命令キュー(IQ)からの最後の命令の読出又はIQから読み出される最後の命令の発行を閾数のサイクルだけデコード相まで遅らせることによって見つけられ、それにより、後続のフュージョン可能な命令は全てフェチされてIQに格納され(又は、必ずしもIQに格納される必要はなく、少なくとも識別され)、次いで、前記最後のフュージョン可能な命令とフュージョンされる。一実施形態において、閾数のサイクルだけ第1のフュージョン可能な命令の読出又は発行を遅延させることは、そのようにすることが、さもなければフュージョン可能な2つの命令が、単一の命令としてではなく、別々にデコードされて処理されてしまうことを回避するので、プロセッサ性能を改善することができる。
待機サイクルの閾数の選択は、特定の実施形態が使用されるマイクロアーキテクチャに依存してよい。例えば、一実施形態において、サイクルの閾数は2であってよく、一方、他の実施形態において、サイクルの閾数は2よりも多くても又は少なくてもよい。一実施形態において、待機サイクルの閾数は、フュージョン可能な命令を別々の命令として処理することに対する、後続のフュージョン可能な命令を待つことの全体的なレイテンシ/性能上の利点を保ちながら、後続のフュージョン可能な命令がIQに格納されるのを待つための最大の時間量を提供する。他の実施形態において、電力がより重要である場合に、例えば、待機サイクルの閾数は、たとえ待機サイクルの数が(一時的ではあるが)命令スループットの低下を引き起こすとしても、余分の電力が2つのフュージョン可能な命令を別々に処理するために使用されないことを確かにするために、より大きくてよい。
図1は、本発明の少なくとも1つの実施形態が使用されてよいマイクロプロセッサを表す。具体的に、図1は、1又はそれ以上のプロセッサコア105及び110を有するマイクロプロセッサ100を表し、各プロセッサコアは、夫々自身に関連付けられたローカルキャッシュ107及び113を有する。また、図1には、ローカルキャッシュ107及び113の夫々に格納されている情報の少なくとも一部のバージョンを記憶することができる共有キャッシュメモリ115が表されている。幾つかの実施形態において、マイクロプロセッサ100は、図1に図示されていない他のロジック、例えば、集積メモリコントローラ、集積グラフィックコントローラ、及びI/O制御等のコンピュータ内の他の機能を実行する他のロジックを有してよい。一実施形態において、マルチプロセッサシステムにおける各マイクロプロセッサ又はマルチコアプロセッサにおける各プロセッサコアは、少なくとも1つの実施形態に従って、割込通信技術を可能にするロジック119を有してよく、又は別なふうに該ロジック119と関連付けられてよい。ロジックは、幾つかの先行技術実施よりも効率的な命令フュージョンを可能にする回路、ソフトウェア又はそれら両方を有してよい。
一実施形態において、ロジック119は、命令フュージョンの機会を逸する可能性を減らすロジックを有してよい。一実施形態において、ロジック119は、IQ又は他のフェッチ命令記憶構造に記憶されている後続の命令がない場合に、IQからの第1の命令(例えば、CMP)の読出を遅延させる。一実施形態において、ロジック119は、IQを読み出すこと、又は第1のフュージョン可能な命令をデコーダ若しくは他の処理ロジックへ発行する前の閾数のサイクル(例えば、2サイクル)の間に第1のフュージョン可能な命令の読出又は発行を引き起こし、それにより、(例えば、対象である2つの命令が、異なる記憶バウンダリにおけるメモリ又はキャッシュに格納されているために)IQに未だ記憶されていない、第1の命令とフュージョン可能な第2のフュージョン可能な命令が存在する場合に、これら2つのフュージョン可能な命令をフュージョンする機会をのがさない。幾つかの実施形態において、閾値は固定であってよく、一方、他の実施形態において、閾値は可変であってよく、ユーザによって又はユーザに依存しないアルゴリズムに従って変更可能である。一実施形態において、第1のフュージョン可能な命令はCMP命令であり、第2のフュージョン可能な命令はJCC命令である。他の実施形態において、第1の命令及び第2の命令の一方又は両方はCMP又はJCC命令ではなく、如何なるフュージョン可能な命令であってもよい。更に、本発明の実施形態は、2よりも多い命令をフュージョンすることに適用されてよい。
図2は、例えば、本発明の実施形態が使用されてよいフロントサイドバス(FSB)型コンピュータシステムを表す。いずれのプロセッサ201、205、210又は215も、プロセッサコア223、227、233、237、243、247、253、257の1つの中の又は別なふうに該1つと関連付けられているいずれかのローカルのレベル1(L1)キャッシュメモリ220、225、230、235、240、245、250、255の情報にアクセスしてよい。更に、いずれのプロセッサ201、205、210又は215も、共有レベル2(L2)キャッシュ203、207、213、217のいずれか1つの情報に、又はチップセット265を介してシステムメモリ260の情報にアクセスしてよい。図2におけるプロセッサの1つ又はそれ以上は、少なくとも1つの実施形態に従って、命令フュージョンの効率改善を可能にするロジック219を有し、又は別なふうに該ロジック219と関連付けられてよい。
図2に表されているFSB型コンピュータシステムに加えて、他のシステム構成が、ポイント・ツー・ポイント(P2P)相互接続型システム及びリング相互接続型システムを含め、本発明の種々の実施形態とともに使用されてよい。図3のP2Pシステムは、例えば、複数のプロセッサを有してよい。それらの中の2つのプロセッサ370及び380のみが例として示されている。プロセッサ370及び380は、夫々、メモリ32、34と接続するローカルのメモリコントローラハブ(MCH)372、382を有してよい。プロセッサ370及び380は、ポイント・ツー・ポイント(PtP)インターフェース回路378、388を用いてPtPインターフェース350を介してデータを交換してよい。プロセッサ370及び380は、夫々、PtPインターフェース回路376、394、386、398を用いて個別のPtPインターフェース352、354を介してチップセット390とデータを交換してよい。チップセット390は、更に、高性能グラフィックスインターフェース339を介して高性能グラフィックス回路338とデータを交換してよい。本発明の実施形態は、任意数のプロセッシングコアを有する何らかのプロセッサ内に、又は図3のPtPバスエージェントの夫々の中に、配置されてよい。一実施形態において、いずれのプロセッサコアも、ローカルキャッシュメモリ(図示せず。)を有し、又は別なふうに該ローカルキャッシュメモリと関連付けられてよい。更に、共有キャッシュ(図示せず。)が、いずれか一方のプロセッサ内に含まれ、P2P相互接続を介してそれらのプロセッサと接続されてよく、それにより、一方又は両方のプロセッサのローカルキャッシュ情報は、プロセッサが低電力モードに入る場合に、共有キャッシュに格納されてよい。図3におけるプロセッサ又はコアの1つ又はそれ以上は、少なくとも1つの実施形態に従って、命令フュージョンの効率改善を可能にするロジック319を有し、又は別なふうに該ロジック319と関連付けられてよい。
少なくとも1つの実施形態において、第2のフュージョン可能な命令は、何らかの中間動作、例えば、(第1及び第2のフュージョン可能な命令の間に起こる)IQクリア動作が起こる前に、IQに格納されないことがあり、このとき、さもなければフュージョン可能な2つの命令をフュージョンする機会をのがす。キャッシュ(又はバッファ)が、(命令がIQから読み出されてデコードされた後に)プロセッサによる実行のためにスケジューリングされるべき関連するデコードされた命令シーケンス又はuop(例えば、デコードされたストリームバッファ(“DSB”)(decoded stream buffer)、トレースキャッシュ(“TC”)(trace cache))を記憶するところの一実施形態において、第1のフュージョン可能なuop(例えば、CMP)は、同じアドレス可能な範囲(例えば、同じキャッシュウェイ)内にフュージョン可能な第2のuop(例えば、JCC)が格納されることなく、キャッシュに格納されることがある。これは、例えば、JCCが(キャッシュミスのために)キャッシュラインを横断し、又は(トランスレーションルックアサイドバッファ(TLB)ミスのために)ベージ・バウンダリを横断している場合に、起こりうる。その場合に、キャッシュは、JCCなしでCMPを格納し得る。その後、CMPが格納された後、しかし、JCCがキャッシュに格納される前に、プロセッサコア・パイプラインが(例えば、“クリア”信号がアサートされたために)クリアされる場合は、キャッシュは、JCCなしで、そのウェイのうちの1つにCMPのみを格納する。
CMPを格納するキャッシュラインのその後の検索において、キャッシュは、欠けているJCCを、ミスしたアクセスとして解釈してよく、JCCは、次のキャッシュ充填(フィル)動作のために付加ポイントしてマークされてよい。しかし、この付加ポイントは、CMP+JCCがIQからフュージョンされたものとして読み出され得るので、見つけられないことがある。従って、要求されるJCCは、IQから到来する充填されるいずれのuopとも一致せず、従って、キャッシュは、欠けているJCCを充填することができず、フュージョンされたCMP+JCCが期待されるラインにおいて継続的に失敗する。更に、保留中のフィル要求キュー(PFRQ)(pending fill request queue)がuopキャッシュフィル要求を格納するために使用されるところの一実施形態において、特定のフュージョンされた命令の充填のためにリザーブされていたエントリは(期待されるフュージョンされた命令が決して起こらないために)解放せず、次のクリア動作まで無駄なままである。一実施形態において、PFRQエントリロックは、欠けているフュージョンされた命令のエントリがアクセスされるたびに起こってよく、従って、同じ場所へのその後のあらゆる充填を妨げうる。
PFRQエントリの誤った又は好ましくないロックを防ぐために、一実施形態において、IQから読み出されるuopをモニタして、対応するPFRQエントリを有する領域(例えば、充填のためにマークされた領域)が、例えば、充填開始点が検出されることなくエントリの最後のuopに達したために完全にミスした場合を検出するよう、状態機械(state machine)が使用されてよい。一実施形態において、状態機械は、この条件が満たされる場合にPFRQエントリを解放してよい。他の実施形態において、好ましくないPFRQエントリのロックは、フュージョン可能な命令が両方とも存在しない場合には、IQから読み出されるフュージョン可能な命令をキャッシュ内に生成しないことによって、回避されてよい。例えば、CMPの後に非JCC命令が続く場合、フュージョンされた命令エントリがキャッシュ内に生成され得るが、CMPが(例えば、閾待機時間が満了した後に)単独でIQから読み出される場合に限り、それは、キャッシュに充填されないフュージョンされた命令エントリである。他の実施形態において、スキップされた充填領域を状態機械が検出した回数がカウントされ、充填領域がスキップされた閾カウント数の後に、キャッシュフラッシュ又は無効動作が実行されてよい。そして、その充填領域はキャッシュから除去されて、フュージョンされた命令が再充填されてよい。
図4は、一実施形態に従う状態機械を表し、当該状態機械は、IQにおけるのがしたフュージョン可能な命令による好ましからざるPFRQエントリロック状態を回避するために使用されてよい。IQ内の命令が充填のためにマークされた領域にない状態401において、充填領域にマッピングされる命令(キャッシュハッシングに従う充填領域からの命令)をIQがまさに処理しようとしていることを示す「充填領域開始(fill region start;FRS)」信号は、しかし、PFRQにセーブされている線形命令ポインタ(“リップ”(lip))から始まらない(405)。これは、状態機械を状態410に移動させうる。IQ内の(直ぐにデコードされる)次の命令が充填領域を終わらせる(例えば、キャッシュによってハッシュされるラインを終わらせる、又は成立分岐である)場合、状態機械は、対応するPFRQエントリの割当解除(deallocation)415を引き起こし、状態機械は状態401に戻る。しかし、充填ポインタ(fill pointer;FP)が、状態401又は状態410のいずれであろうと、充填領域リップ(fill region lip;FRL)に等しい場合(430)、状態機械は、アクセスが充填領域内且つ充填開始点後にある状態420に入る。状態420から、充填領域インジケーションにおける最後のuopは、対応するPFRQエントリを解除することなく、状態機械を状態401に戻す(425)。図4の状態機械は、ハードウェアロジック、ソフトウェア、又はそれらの何らかの組合せにおいて実施されてよい。他の実施形態において、他の状態機械又はロジックが使用されてよい。
図5は、本発明の少なくとも1つの実施形態とともに使用されてよい動作のフロー図を表す。動作501で、IQ内の目下アクセスされている命令がいずれかの後続の命令とフュージョン可能であるかどうかが決定される。フュージョン可能でない場合は、動作505で、次の命令がIQからアクセスされ、遅延カウントがリセットされる。他方、フュージョン可能である場合は、動作510で、遅延カウンタがインクリメントされ、動作515で、遅延カウント閾値に達したかどうかが決定される。遅延カウント閾値に達していない場合は、動作520で、目下アクセスされている命令の命令フュージョンは実行されない。遅延カウンタ閾値に達した場合は、動作505で、次の命令がIQからアクセスされ、遅延カウントがリセットされる。他の実施形態において、他の動作が、命令フュージョンの効率を改善するために使用されてよい。
図6は、少なくとも1つの実施形態とともに実行されてよい動作のフロー図を表す。多数のデコーダ回路を有するプロセッサにおいて一実施形態を実行するために、第1のフュージョン可能な命令が、フュージョンされた命令をデコードすることができる特定のデコーダ回路においてデコードされるべきことを確かにすることが有用である。図6において、動作601で、特定の命令がフュージョンされる命令の組の中の第1の命令であり得るかどうかが決定される。第1の命令でない場合は、動作605で、フュージョンされた命令が発行される。他方、第1の命令である場合は、動作610で、IQにおいて第1のフュージョン可能な命令の後に有効な命令が続くかどうかが決定される。有効な命令が後に続く場合は、動作605で、フュージョンされた命令が発行される。他方、有効な命令が後に続かない場合は、動作615で、第1のフュージョン可能な命令は、フュージョンされた命令をサポート可能なデコーダに発せられるべきかどうかが決定される。一実施形態において、デコーダ−0は、フュージョンされた命令をデコードすることができる。第1のフュージョン可能な命令がデコーダ−0に発せられなかった場合は、動作620で、第1のフュージョン可能な命令は、それがデコーダ−0に対応するまで、異なるデコーダへ移動又は削除される。動作625で、カウンタは初期値Nに設定され、動作630で、命令の後に有効な命令が続き、又はカウンタがゼロである場合は、フュージョンされた命令は、動作635で発せられる。さもなければ、動作640で、カウンタはデクリメントされ、無効な命令は削除される。他の実施形態において、カウンタは、最終値へとインクリメントしてよい。他の実施形態において、削除動作に加えて、他の動作が無効な命令をクリアしてよい。
少なくとも1つの実施形態の1又はそれ以上の側面は、機械によって読み出される場合に該機械にここに記載される技術を実行するようロジックを組み立てさせる、プロセッサ内の種々のロジックを表す機械読出可能な媒体に記憶されている代表データによって実施されてよい。かかる表現は、「IPコア」として知られており、有形な機械読出可能な媒体(テープ)に記憶され、実際にロジック又はプロセッサを作る製造機械にロードするよう種々の顧客又は製造施設に供給されてよい。
このように、マイクロアーキテクチャにおけるメモリ領域アクセスを対象とする方法及び装置について記載してきた。当然、上記記載は例示であって限定ではない。多数の他の実施形態は、上記記載を読み理解することで当業者には明らかである。従って、本発明の適用範囲は、添付の特許請求の範囲が権利を有する同等な包括的範囲とともに、特許請求の範囲を参照して決定されるべきである。

Claims (18)

  1. フェッチされた命令を格納する命令キューと、
    前記命令キューに格納されている第1のフュージョン可能な命令の処理を最大で閾時間だけ遅延させて、前記第1のフュージョン可能な命令とフュージョン可能であるが前記命令キューに未だ格納されていない第2のフュージョン可能な命令が、該第2のフュージョン可能な命令が前記閾時間内に前記命令キューに格納される場合に、前記第1のフュージョン可能な命令とフュージョンされ得るようにするロジックと、
    前記第2のフュージョン可能な命令が前記閾時間内に前記命令キューに格納された場合に、前記第1及び第2のフュージョン可能な命令をフュージョンする命令フュージョンロジックと、
    を有する装置。
  2. 前記第1のフュージョン可能な命令及び前記第2のフュージョン可能な命令は、前記命令キューに格納される前にフェッチ・バウンダリにわたって格納される、
    請求項1に記載の装置。
  3. 前記ロジックは、前記第1のフュージョン可能な命令が前記命令キューに格納されている最後の命令である場合にのみ、前記第1のフュージョン可能な命令の処理を遅延させる、
    請求項1に記載の装置。
  4. 前記ロジックは、前記閾時間に対応する閾数のサイクルに達するまで、前記第1のフュージョン可能な命令が前記命令キューに格納され且つ前記命令キューにおける最後の命令であるサイクルごとに1つインクリメントされるカウンタを有する、
    請求項1に記載の装置。
  5. 中間動作が前記命令キューに格納されている前記第1のフュージョン可能な命令と前記命令キューに格納される前記第2のフュージョン可能な命令との間で実行される場合に、フィル要求キューが前記第1のフュージョン可能な命令及び前記第2のフュージョン可能な命令に対応するエントリをロックすることを防止する状態機械、を更に有する請求項1に記載の装置。
  6. 前記中間動作は、前記命令キューをクリアすることである、
    請求項5に記載の装置。
  7. フェッチされた命令を格納する命令キュー内で目下アクセスされている命令が、前記命令キューに格納されるいずれかの後続の命令とフュージョン可能であるかどうかを決定するステップと、
    前記目下アクセスされている命令が前記命令キューに格納される後続の命令とフュージョン可能でない場合に、前記命令キューの次の命令にアクセスし、遅延カウンタをリセットするステップと、
    前記目下アクセスされている命令がフュージョン可能であり、且つ、前記命令キューにおける最後の命令である場合に、前記遅延カウンタをインクリメントするステップと、
    前記目下アクセスされている命令及び前記後続の命令がフュージョン可能であり、且つ、前記遅延カウンタが閾値に達する前に前記後続の命令が前記命令キューに格納される場合に、前記目下アクセスされている命令を前記後続の命令とフュージョンするステップと、
    を有する方法。
  8. 前記目下アクセスされている命令及び前記後続の命令がフュージョン可能でない場合に、前記目下アクセスされている命令を前記後続の命令とは別々に処理するステップを更に有する、
    請求項7に記載の方法。
  9. 前記遅延カウンタが前記閾値に達した場合に、前記目下アクセスされている命令を前記後続の命令とは別々に処理するステップを更に有する、
    請求項7に記載の方法。
  10. 前記目下アクセスされている命令及び前記後続の命令がフュージョン可能であり、且つ、中間イベントが、前記目下アクセスされている命令と前記後続の命令との間で実行される場合に、フィル要求キューが前記目下アクセスされている命令及び前記後続の命令に対応するエントリをロックすることを防止するステップ、を更に有する請求項7に記載の方法。
  11. 第1のフュージョン可能な命令及び第2のフュージョン可能な命令をアクセス・バウンダリにより区切られるそれぞれの領域であって互いに異なる領域に格納する記憶部と、
    前記第1のフュージョン可能な命令及び前記第2のフュージョン可能な命令を、フェッチされた命令を格納する命令キューにフェッチするフェッチロジックを有するプロセッサと、
    前記命令キューからの前記第1のフュージョン可能な命令の読出を閾数のサイクル分遅延させる遅延ロジックと
    前記第2のフュージョン可能な命令が、前記第1のフュージョン可能な命令の後であって、前記閾数のサイクルに達する前に前記命令キューに格納される場合に、前記第1のフュージョン可能な命令及び前記第2のフュージョン可能な命令をフュージョンする命令フュージョンロジックと
    を有するシステム。
  12. 前記第1のフュージョン可能な命令が前記命令キューにおける唯一の命令である場合にインクリメントし、前記閾数のサイクルに達したときにカウントを停止するカウンタを更に有する、
    請求項11に記載のシステム。
  13. 前記カウンタは、前記閾数のサイクルに達する前に前記第2のフュージョン可能な命令が前記命令キューに格納される場合にリセットされる、
    請求項12に記載のシステム。
  14. 前記記憶部は命令キャッシュを有し、前記アクセス・バウンダリにより区切られる前記命令キャッシュ上のそれぞれの領域のサイズが64バイトである、
    請求項11に記載のシステム。
  15. 前記記憶部はダイナミックランダムアクセスメモリを有し、前記アクセス・バウンダリにより区切られる前記ダイナミックランダムアクセスメモリ上のそれぞれの領域のサイズが4096バイトである、
    請求項11に記載のシステム。
  16. 前記第1のフュージョン可能な命令はCMP/TEST命令であり、前記第2のフュージョン可能な命令はJCC命令である、
    請求項11に記載のシステム。
  17. 前記サイクルの閾数は2である、
    請求項16に記載のシステム。
  18. 中間イベントが、前記第1のフュージョン可能な命令と前記第2のフュージョン可能な命令との間で実行される場合に、フィル要求キューが前記第1のフュージョン可能な命令及び前記第2のフュージョン可能な命令に対応するエントリをロックするのを防止する状態機械、を更に有する請求項11に記載のシステム。
JP2014241108A 2008-10-30 2014-11-28 有効な命令フュージョンを進展させる技術 Active JP5902285B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/290,395 2008-10-30
US12/290,395 US9690591B2 (en) 2008-10-30 2008-10-30 System and method for fusing instructions queued during a time window defined by a delay counter

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2011534680A Division JP2012507794A (ja) 2008-10-30 2009-10-27 有効な命令ヒュージョンを進展させる技術

Publications (2)

Publication Number Publication Date
JP2015072707A JP2015072707A (ja) 2015-04-16
JP5902285B2 true JP5902285B2 (ja) 2016-04-13

Family

ID=42063260

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2011534680A Pending JP2012507794A (ja) 2008-10-30 2009-10-27 有効な命令ヒュージョンを進展させる技術
JP2014241108A Active JP5902285B2 (ja) 2008-10-30 2014-11-28 有効な命令フュージョンを進展させる技術

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2011534680A Pending JP2012507794A (ja) 2008-10-30 2009-10-27 有効な命令ヒュージョンを進展させる技術

Country Status (8)

Country Link
US (4) US9690591B2 (ja)
JP (2) JP2012507794A (ja)
KR (1) KR101258762B1 (ja)
CN (2) CN101901128B (ja)
BR (2) BRPI0920782B1 (ja)
DE (1) DE102009051388A1 (ja)
TW (1) TWI455023B (ja)
WO (1) WO2010056511A2 (ja)

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8090931B2 (en) * 2008-09-18 2012-01-03 Via Technologies, Inc. Microprocessor with fused store address/store data microinstruction
US9690591B2 (en) * 2008-10-30 2017-06-27 Intel Corporation System and method for fusing instructions queued during a time window defined by a delay counter
JP5491071B2 (ja) * 2009-05-20 2014-05-14 エヌイーシーコンピュータテクノ株式会社 命令融合演算装置および命令融合演算方法
US9223578B2 (en) * 2009-09-25 2015-12-29 Nvidia Corporation Coalescing memory barrier operations across multiple parallel threads
US8843729B2 (en) 2010-04-27 2014-09-23 Via Technologies, Inc. Microprocessor that fuses MOV/ALU instructions
US8856496B2 (en) 2010-04-27 2014-10-07 Via Technologies, Inc. Microprocessor that fuses load-alu-store and JCC macroinstructions
US20130081001A1 (en) * 2011-09-23 2013-03-28 Microsoft Corporation Immediate delay tracker tool
US9672037B2 (en) * 2013-01-23 2017-06-06 Apple Inc. Arithmetic branch fusion
US9483266B2 (en) * 2013-03-15 2016-11-01 Intel Corporation Fusible instructions and logic to provide OR-test and AND-test functionality using multiple test sources
US9886277B2 (en) 2013-03-15 2018-02-06 Intel Corporation Methods and apparatus for fusing instructions to provide OR-test and AND-test functionality on multiple test sources
WO2014154917A1 (es) * 2013-03-27 2014-10-02 Intel Corporation Mecanismo para facilitar la fusión dinámica y eficaz de instrucciones informáticas en programas de software
US9792121B2 (en) 2013-05-21 2017-10-17 Via Technologies, Inc. Microprocessor that fuses if-then instructions
US9372695B2 (en) 2013-06-28 2016-06-21 Globalfoundries Inc. Optimization of instruction groups across group boundaries
US9348596B2 (en) 2013-06-28 2016-05-24 International Business Machines Corporation Forming instruction groups based on decode time instruction optimization
US10503513B2 (en) * 2013-10-23 2019-12-10 Nvidia Corporation Dispatching a stored instruction in response to determining that a received instruction is of a same instruction type
US9911508B2 (en) 2014-09-18 2018-03-06 Via Alliance Semiconductor Co., Ltd Cache memory diagnostic writeback
US20160179542A1 (en) * 2014-12-23 2016-06-23 Patrick P. Lai Instruction and logic to perform a fused single cycle increment-compare-jump
US10579389B2 (en) * 2015-11-02 2020-03-03 Arm Limited Fusion of instructions by delaying handling of a partial subset of a fusible group of instructions
US10387988B2 (en) 2016-02-26 2019-08-20 Google Llc Compiler techniques for mapping program code to a high performance, power efficient, programmable image processing hardware platform
US10387147B2 (en) * 2017-08-02 2019-08-20 International Business Machines Corporation Managing an issue queue for fused instructions and paired instructions in a microprocessor
US11157280B2 (en) 2017-12-07 2021-10-26 International Business Machines Corporation Dynamic fusion based on operand size
US11256509B2 (en) 2017-12-07 2022-02-22 International Business Machines Corporation Instruction fusion after register rename
US11416252B2 (en) * 2017-12-27 2022-08-16 Arm Limited Program instruction fusion
US11194722B2 (en) * 2018-03-15 2021-12-07 Intel Corporation Apparatus and method for improved cache utilization and efficiency on a many core processor
US10929136B2 (en) 2018-04-11 2021-02-23 Futurewei Technologies, Inc. Accurate early branch prediction using multiple predictors having different accuracy and latency in high-performance microprocessors
US20200042322A1 (en) * 2018-08-03 2020-02-06 Futurewei Technologies, Inc. System and method for store instruction fusion in a microprocessor
US10831480B2 (en) * 2019-02-25 2020-11-10 International Business Machines Corporation Move data and set storage key instruction
US10831496B2 (en) 2019-02-28 2020-11-10 International Business Machines Corporation Method to execute successive dependent instructions from an instruction stream in a processor
US11216278B2 (en) * 2019-08-12 2022-01-04 Advanced New Technologies Co., Ltd. Multi-thread processing
KR102339882B1 (ko) 2020-01-24 2021-12-14 정종범 역압대응이 가능한 티 모션 진자식 게이트밸브
US11249757B1 (en) 2020-08-14 2022-02-15 International Business Machines Corporation Handling and fusing load instructions in a processor
CN112363762B (zh) * 2020-11-13 2023-01-06 苏州浪潮智能科技有限公司 一种融合命令处理方法、系统、设备以及介质
US12008369B1 (en) 2021-08-31 2024-06-11 Apple Inc. Load instruction fusion

Family Cites Families (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2834171B2 (ja) 1989-02-06 1998-12-09 株式会社日立製作所 コンパイル方法
US5392228A (en) 1993-12-06 1995-02-21 Motorola, Inc. Result normalizer and method of operation
US5860154A (en) 1994-08-02 1999-01-12 Intel Corporation Method and apparatus for calculating effective memory addresses
US6006324A (en) 1995-01-25 1999-12-21 Advanced Micro Devices, Inc. High performance superscalar alignment unit
JP3113792B2 (ja) 1995-04-27 2000-12-04 松下電器産業株式会社 最適化装置
US6151618A (en) 1995-12-04 2000-11-21 Microsoft Corporation Safe general purpose virtual machine computing system
US6041403A (en) 1996-09-27 2000-03-21 Intel Corporation Method and apparatus for generating a microinstruction responsive to the specification of an operand, in addition to a microinstruction based on the opcode, of a macroinstruction
US5860107A (en) 1996-10-07 1999-01-12 International Business Machines Corporation Processor and method for store gathering through merged store operations
US5957997A (en) 1997-04-25 1999-09-28 International Business Machines Corporation Efficient floating point normalization mechanism
US5903761A (en) 1997-10-31 1999-05-11 Preemptive Solutions, Inc. Method of reducing the number of instructions in a program code sequence
US6112293A (en) 1997-11-17 2000-08-29 Advanced Micro Devices, Inc. Processor configured to generate lookahead results from operand collapse unit and for inhibiting receipt/execution of the first instruction based on the lookahead result
US6282634B1 (en) 1998-05-27 2001-08-28 Arm Limited Apparatus and method for processing data having a mixed vector/scalar register file
US6247113B1 (en) 1998-05-27 2001-06-12 Arm Limited Coprocessor opcode division by data type
US6018799A (en) 1998-07-22 2000-01-25 Sun Microsystems, Inc. Method, apparatus and computer program product for optimizing registers in a stack using a register allocator
US6742110B2 (en) 1998-10-06 2004-05-25 Texas Instruments Incorporated Preventing the execution of a set of instructions in parallel based on an indication that the instructions were erroneously pre-coded for parallel execution
TW477936B (en) * 1998-12-29 2002-03-01 Ind Tech Res Inst Instruction folding method and device used in a stack machine
US6338136B1 (en) * 1999-05-18 2002-01-08 Ip-First, Llc Pairing of load-ALU-store with conditional branch
US6647489B1 (en) 2000-06-08 2003-11-11 Ip-First, Llc Compare branch instruction pairing within a single integer pipeline
US20030023960A1 (en) 2001-07-25 2003-01-30 Shoab Khan Microprocessor instruction format using combination opcodes and destination prefixes
US6675376B2 (en) 2000-12-29 2004-01-06 Intel Corporation System and method for fusing instructions
US6832307B2 (en) * 2001-07-19 2004-12-14 Stmicroelectronics, Inc. Instruction fetch buffer stack fold decoder for generating foldable instruction status information
US6587929B2 (en) * 2001-07-31 2003-07-01 Ip-First, L.L.C. Apparatus and method for performing write-combining in a pipelined microprocessor using tags
US6889318B1 (en) 2001-08-07 2005-05-03 Lsi Logic Corporation Instruction fusion for digital signal processor
US6718440B2 (en) 2001-09-28 2004-04-06 Intel Corporation Memory access latency hiding with hint buffer
US7051190B2 (en) 2002-06-25 2006-05-23 Intel Corporation Intra-instruction fusion
US6920546B2 (en) 2002-08-13 2005-07-19 Intel Corporation Fusion of processor micro-operations
US7653906B2 (en) * 2002-10-23 2010-01-26 Intel Corporation Apparatus and method for reducing power consumption on simultaneous multi-threading systems
US20040128485A1 (en) 2002-12-27 2004-07-01 Nelson Scott R. Method for fusing instructions in a vector processor
US7024544B2 (en) 2003-06-24 2006-04-04 Via-Cyrix, Inc. Apparatus and method for accessing registers in a processor
US7355601B2 (en) 2003-06-30 2008-04-08 International Business Machines Corporation System and method for transfer of data between processors using a locked set, head and tail pointers
KR101076815B1 (ko) 2004-05-29 2011-10-25 삼성전자주식회사 분기 타겟 어드레스 캐쉬를 포함하는 캐쉬 시스템
US8082430B2 (en) * 2005-08-09 2011-12-20 Intel Corporation Representing a plurality of instructions with a fewer number of micro-operations
US7937564B1 (en) 2005-09-28 2011-05-03 Oracle America, Inc. Emit vector optimization of a trace
US7676513B2 (en) 2006-01-06 2010-03-09 Microsoft Corporation Scheduling of index merges
US7958181B2 (en) * 2006-09-21 2011-06-07 Intel Corporation Method and apparatus for performing logical compare operations
US7917568B2 (en) 2007-04-10 2011-03-29 Via Technologies, Inc. X87 fused multiply-add instruction
US9690591B2 (en) * 2008-10-30 2017-06-27 Intel Corporation System and method for fusing instructions queued during a time window defined by a delay counter

Also Published As

Publication number Publication date
US20160246600A1 (en) 2016-08-25
US10649783B2 (en) 2020-05-12
TW201032129A (en) 2010-09-01
BRPI0920782B1 (pt) 2020-04-22
CN101901128A (zh) 2010-12-01
US20170003965A1 (en) 2017-01-05
US9690591B2 (en) 2017-06-27
US20160378487A1 (en) 2016-12-29
WO2010056511A2 (en) 2010-05-20
TWI455023B (zh) 2014-10-01
CN103870243A (zh) 2014-06-18
DE102009051388A1 (de) 2010-05-06
WO2010056511A3 (en) 2010-07-08
CN103870243B (zh) 2018-02-02
US20100115248A1 (en) 2010-05-06
BRPI0920782A2 (pt) 2015-12-22
KR101258762B1 (ko) 2013-04-29
JP2012507794A (ja) 2012-03-29
CN101901128B (zh) 2016-04-27
JP2015072707A (ja) 2015-04-16
KR20110050715A (ko) 2011-05-16
BRPI0904287A2 (pt) 2011-02-01

Similar Documents

Publication Publication Date Title
JP5902285B2 (ja) 有効な命令フュージョンを進展させる技術
JP2012507794A5 (ja)
JP6969853B2 (ja) ノンブロッキング高性能トランザクションクレジットシステムを備えるマルチコアバスアーキテクチャ
US9330018B2 (en) Suppressing virtual address translation utilizing bits and instruction tagging
US7769955B2 (en) Multiple thread instruction fetch from different cache levels
US8667225B2 (en) Store aware prefetching for a datastream
US9069715B2 (en) Reducing microprocessor performance loss due to translation table coherency in a multi-processor system
JP5543366B2 (ja) ロックされたオペレーションを実行するためのシステムおよび方法
US20090106499A1 (en) Processor with prefetch function
KR20160074647A (ko) 로드 및 저장 유닛과 데이터 캐시에 대한 순서화 및 대역폭 향상
US20120137077A1 (en) Miss buffer for a multi-threaded processor
US10209991B2 (en) Instruction set and micro-architecture supporting asynchronous memory access
US8719555B2 (en) Method for overcoming livelock in a multi-threaded system
US11314509B2 (en) Processing of plural-register-load instruction
US9405690B2 (en) Method for storing modified instruction data in a shared cache
JP2005266997A (ja) 命令キャッシュシステム
Gavin Instruction Caching in Multithreading Processors Using Guarantees

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150824

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150929

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20151224

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160128

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160309

R150 Certificate of patent or registration of utility model

Ref document number: 5902285

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250