JP5902208B2 - データ処理装置 - Google Patents

データ処理装置 Download PDF

Info

Publication number
JP5902208B2
JP5902208B2 JP2013558608A JP2013558608A JP5902208B2 JP 5902208 B2 JP5902208 B2 JP 5902208B2 JP 2013558608 A JP2013558608 A JP 2013558608A JP 2013558608 A JP2013558608 A JP 2013558608A JP 5902208 B2 JP5902208 B2 JP 5902208B2
Authority
JP
Japan
Prior art keywords
instruction
memory
branch
data processing
address
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
JP2013558608A
Other languages
English (en)
Other versions
JPWO2013121516A1 (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.)
Renesas Electronics Corp
Original Assignee
Renesas Electronics Corp
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 Renesas Electronics Corp filed Critical Renesas Electronics Corp
Priority to JP2013558608A priority Critical patent/JP5902208B2/ja
Publication of JPWO2013121516A1 publication Critical patent/JPWO2013121516A1/ja
Application granted granted Critical
Publication of JP5902208B2 publication Critical patent/JP5902208B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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/0877Cache access modes
    • G06F12/0884Parallel mode, e.g. in parallel with main memory or CPU
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/0888Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30058Conditional branch instructions
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1028Power efficiency
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • 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)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Advance Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Executing Machine-Instructions (AREA)

Description

本発明は、データ処理装置に関し、たとえば、複数の命令により記述してあるプログラムを記憶するメモリと、分岐命令を実行するときにのみ動作する命令キャッシュとを備えるデータ処理装置に関する。
CPU(Central Processing Unit)などのデータ処理装置では、プログラムを記憶するメモリ以外に、プログラムの命令を一時的に格納する命令キャッシュを設けて、処理の高性能化が図られている。しかし、データ処理装置は、実行する命令が命令キャッシュに含まれていないミスの時にペナルティが発生する。当該ペナルティは、データ処理装置の処理の高性能化を図るためには無視できなかった。そこで、データ処理装置では、メモリおよび命令キャッシュの両方にアクセスを行なうことでペナルティを回避する構成が提案されている。
また、命令キャッシュを備えるデータ処理装置の構成が、特許文献1(特開2008−052518号公報)および特許文献2(特開2001−142698号公報)に開示してある。特許文献1に開示してあるCPUシステムは、CPUの動作速度がSDRAMのバーストリード時の動作速度以下という条件で動作する。コンパレータは、CPUが分岐命令を処理するときに、命令キャッシュメモリに分岐先の命令が格納されているか否かを判定する。命令キャッシュメモリに分岐先の命令が格納されている場合、当該命令を命令キャッシュメモリから読出す。
特許文献2に開示してあるCPUでは、命令用メモリのアクセスと同時にメインメモリのアクセスも行ない、命令用メモリからの命令コードと、メインメモリからの命令コードとをシームレスにフェッチするメモリアクセス方式が採用されている。
また、データ処理装置では、メモリから命令を予め読出して格納しておく命令キューに空きがあるとき、実行命令に関係なくメモリから命令キューに命令を読出すフェッチ処理が発生する。このフェッチ処理について、特許文献3(2006−048258号公報)、特許文献4(特開平06−161750号公報)、特許文献5(特開2000−357090号公報)、および特許文献6(特開平05−027972号公報)に開示してある。
特許文献3に開示してあるデータプロセッサでは、命令のフェッチ制御部と、フェッチ制御部によりフェッチされた命令を保持する命令バッファと、命令バッファに保持された命令を所定の順番にパイプラインで実行する実行部とを含む。そして、フェッチ制御部が、分岐命令の命令アドレスを用いて条件分岐の予測方向とその確度を示す予測情報を取得し、条件分岐命令における分岐予測側の命令のフェッチと分岐非予測側の命令のフェッチを行なうことが可能であると共に、予測情報に応じて選択的に分岐非予測の命令のフェッチを停止する。
特許文献4に開示してあるCPUは、分岐命令に対するプリフェッチタイミングで、タグの状態を検出し、バッファまたは条件コード中のゼロフラグの内容をみて早期に分岐判定を行なう早期分岐条件チェック回路を設けてある。
特許文献5に開示してあるCPUは、条件分岐命令によるキャッシュミスの発生時でのメインメモリへのアクセス時間を短縮するために分岐予測機構を内蔵してある。
特許文献6に開示してあるCPUは、命令キューとメモリとの間に命令検出部を介在させ、命令キューが読み込んだ命令の中に分岐命令が含まれている場合には、該分岐命令の分岐先アドレスが確定するまでメモリからの命令の読出しを一時停止させる。
特開2008−052518号公報 特開2001−142698号公報 特開2006−048258号公報 特開平06−161750号公報 特開2000−357090号公報 特開平05−027972号公報
しかし、従来のデータ処理装置では、実行する命令が命令キャッシュに含まれていないミスの時にペナルティを回避するために、メモリおよび命令キャッシュの両方にアクセスを行なっている。そのため、従来のデータ処理装置では、命令キャッシュに命令が含まれていてヒットの時もメモリにアクセスするので、メモリおよび命令キャッシュの両方にアクセスする電力を常に消費するという問題があった。
また、従来のデータ処理装置では、メモリから命令を予め読出して格納しておく命令キューに空きがあるとき、実行命令に関係なくメモリから命令を読出すフェッチ処理が発生する。そのため、従来のデータ処理装置では、必要のない命令をメモリから読出し、無駄なメモリアクセスにより電力を消費する。特に、分岐命令の直前にフェッチ処理を行なった場合、分岐の結果により実行の必要ない命令をメモリから読出すことで、無駄なメモリアクセスにより電力を消費するという問題があった。
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
一実施の形態によれば、データ処理装置は、メモリと、命令キャッシュと、演算処理部と、フェッチ処理制御部とを備えている。メモリは、複数の命令により記述してあるプログラムを記憶する。命令キャッシュは、プログラムに含まれる分岐命令を実行するときにのみ動作し、メモリのバス幅より大きい容量のデータを、メモリから読出して予め格納しておく。演算処理部は、メモリおよび命令キャッシュの両方にアクセスし、メモリまたは命令キャッシュから読出した命令をパイプラインで実行する。フェッチ処理制御部は、メモリから命令を読出すフェッチ処理を停止するための停止信号を生成し、メモリに出力する。命令キャッシュは、演算処理部で分岐命令を実行するとき、メモリにアクセスするアドレスと、予め格納してある命令のアドレスとを比較して一致した場合、当該分岐命令に対する分岐先の命令を格納してあると判定する比較器を含み、フェッチ処理制御部は、比較器が命令キャッシュに分岐先の命令を格納してあると判定した場合、命令キャッシュに格納してある命令を読出す期間、フェッチ処理を停止するための停止信号を生成し、メモリに出力する停止処理部であり、比較器は、アドレスが一致した命令に応じて、命令キャッシュに格納してある命令を読出すことが可能な回数をヒット量としてカウントし、停止処理部は、ヒット量を初期値としてカウンダウンすることでメモリへのアクセスを停止する期間を設定するカウンタを含む。
前記一実施の形態によれば、データ処理装置は、メモリにアクセスするための電力の消費を低減することができる。特に、データ処理装置は、メモリおよび命令キャッシュの両方にアクセスするときに消費する電力や、分岐の結果により実行の必要ない命令をメモリから読出すためのフェッチ処理に消費する電力の消費を低減することができる。
実施の形態1に係るデータ処理装置の構成を示すブロック図である。 実施の形態1に係るデータ処理装置の命令キャッシュのさらに詳しい構成を示すブロック図である。 実施の形態1に係るデータ処理装置の停止処理部のさらに詳しい構成を示すブロック図である。 実施の形態1に係るデータ処理装置の動作を説明するためのタイミングチャートである。 実施の形態1に係るデータ処理装置の分岐通知による動作を説明するためのタイミングチャートである。 実施の形態2に係るデータ処理装置の構成を示すブロック図である。 実施の形態2に係るデータ処理装置の命令キャッシュのさらに詳しい構成を示すブロック図である。 実施の形態2に係るデータ処理装置の動作を説明するためのタイミングチャートである。 実施の形態3に係るデータ処理装置の構成を示すブロック図である。 プリデコーダを含まない構成のデータ処理装置におけるプリフェッチ処理のタイミングを説明するためのタイミングチャートである。 実施の形態3に係るデータ処理装置の命令キューおよびプリデコーダの構成を示すブロック図である。 実施の形態3に係るデータ処理装置におけるプリフェッチ処理のタイミングを説明するためのタイミングチャートである。 実施の形態3に係るデータ処理装置におけるプリフェッチ処理の条件分岐命令を実行する場合のタイミングを説明するためのタイミングチャートである。 実施の形態4に係るデータ処理装置におけるプリフェッチ処理のタイミングを説明するためのタイミングチャートである。 実施の形態5に係るデータ処理装置の命令キューおよびプリデコーダの構成を示すブロック図である。 実施の形態5の変形例に係るデータ処理装置の命令キューおよびプリデコーダの構成を示すブロック図である。 実施の形態6に係るデータ処理装置のプリデコーダの構成を示すブロック図である。 実施の形態6に係るデータ処理装置におけるプリフェッチ処理のタイミングを説明するためのタイミングチャートである。 実施の形態7に係るデータ処理装置の構成を示すブロック図である。 実施の形態7に係るデータ処理装置の動作を説明するためのタイミングチャートである。
以下、本発明に係る実施の形態について図面を参照して説明する。
(実施の形態1)
図1は、実施の形態1に係るデータ処理装置の構成を示すブロック図である。図1に示すデータ処理装置100は、CPU1、メモリ2、命令キャッシュ3、および停止処理部4を含み、CPU1からメモリ2および命令キャッシュ3の両方にアクセスし、メモリ2または命令キャッシュ3から命令を読出す(フェッチ処理)。データ処理装置100は、メモリ2および命令キャッシュ3の両方にアクセスすることで、キャッシュミスのペナルティを減らしている。
CPU1は、メモリ2および命令キャッシュ3から読出した命令をパイプラインで実行することができる。また、CPU1は、メモリ2および命令キャッシュ3にアクセスするとき、命令の読出しを行なうリクエストと、読出し先の命令のアドレスをメモリ2および命令キャッシュ3に出力する。さらに、CPU1は、読出した命令が分岐命令である場合に、分岐通知を出力する。
メモリ2は、複数の命令により記述してあるプログラムを記憶している。メモリ2は、CPU1からのリクエストおよびアドレスに基づいて、当該アドレスに記憶してある命令をCPU1に出力する。メモリ2からCPU1に命令を出力するためのバス幅が64ビットである。
命令キャッシュ3は、プログラムに含まれる分岐命令を実行するときにのみ動作し、メモリ2のバス幅により大きい容量のデータをメモリ2から読出して予め格納してある。具体的に、命令キャッシュ3は、メモリ2のバス幅の2倍にあたる128ビットのデータを格納することができる。そして、命令キャッシュ3は、格納してあるデータを64ビットの前半データと、64ビットの後半データとに分けて格納してある。なお、前半データと、後半データとに格納される命令は、連続した命令である。
さらに、命令キャッシュ3は、格納してある命令のアドレスを、TAG_ADDR情報として記憶してある。また、命令キャッシュ3は、CPU1からリクエストがあった命令のアドレスと、TAG_ADDR情報に記憶してあるアドレスとを比較する比較器31を含んでいる。
比較器31は、CPU1で分岐命令を実行するとき、メモリ2にアクセスするアドレス(CPU1からリクエストがあった命令のアドレス)と、予め格納してある命令のアドレス(TAG_ADDR情報に記憶してあるアドレス)とを比較する。そして、比較器31は、命令キャッシュ3に格納してある命令の連続性を利用して、CPU1からリクエストがあった命令に対する分岐先の命令が命令キャッシュ3に格納してあることを判定する。具体的に、比較器31は、メモリ2にアクセスするアドレスが前半データに格納してある命令のアドレスと一致した場合、分岐先の命令が後半データに格納してあると判定する。
図2は、実施の形態1に係るデータ処理装置100の命令キャッシュ3のさらに詳しい構成を示すブロック図である。図2に示す比較器31は、アドレス比較・ヒット判定部311、ヒット量カウンタ312を含んでいる。アドレス比較・ヒット判定部311は、CPU1からのリクエストにより起動され、メモリ2にアクセスするアドレスと、TAG_ADDR情報に記憶してあるアドレスとを比較し、両アドレスが一致した場合(ヒットの時)ヒットの情報を、一致しない場合(ミスの時)ミスの情報を出力する。
ヒット量カウンタ312は、メモリ2にアクセスするアドレスが、前半データに格納してある命令のアドレスと一致した場合、ヒット量“2”を出力する。また、ヒット量カウンタ312は、メモリ2にアクセスするアドレスが、後半データに格納してある命令のアドレスと一致する場合、ヒット量“1”を出力する。なお、ヒット量は、CPU1が命令キャッシュ3に何回アクセスして、データを読出すことができるかを示す値である。具体的に、ヒット量“2”の場合、CPU1は、命令キャッシュ3に2回アクセスして、前半データと後半データとを読出すことができる。また、ヒット量“1”の場合、CPU1は、命令キャッシュ3に1回アクセスして、後半データのみを読出すことができる。
停止処理部4は、比較器31が命令キャッシュ3に分岐先の命令を格納してあると判定した場合、命令キャッシュ3に格納してある命令を読出す期間、フェッチ処理を停止するための停止信号を生成し、メモリ2に出力する。
図3は、実施の形態1に係るデータ処理装置100の停止処理部4のさらに詳しい構成を示すブロック図である。停止処理部4は、残り停止量カウンタ41を含んでいる。残り停止量カウンタ41は、CPU1からのリクエストにより起動され、命令キャッシュ3からのヒットまたはミスの情報、ヒット量に基づいて残り停止量カウンタ量をセットし、当該残り停止量カウンタ量が“0”になると停止信号を生成し、メモリ2に出力する。
具体的に、残り停止量カウンタ41は、命令キャッシュ3からのヒットまたはミスの情報、ヒット量から残り停止量カウンタ量の初期値を算出する。たとえば、残り停止量カウンタ41は、命令キャッシュ3からヒットの情報と、ヒット量“2”とを受取った場合、停止量カウンタ量を“1”にセットし、命令キャッシュ3からヒットの情報と、ヒット量“1”とを受取った場合、停止量カウンタ量を“0”にセットする。初期値をセットした残り停止量カウンタ41は、CPU1からのリクエストがあるたびに停止量カウンタ量を“1”ずつカウントダウンする。なお、残り停止量カウンタ41は、CPU1から分岐信号を受取った場合、停止量カウンタ量がいずれの値であっても、“0”にセットして、停止信号を生成しない。
なお、データ処理装置100は、メモリ2および命令キャッシュ3の両方にアクセスして読出した命令をセレクタ5でいずれか一方の命令を選択してCPU1に読出す。たとえば、セレクタ5は、メモリ2および命令キャッシュ3から読出した命令が同じ場合、命令キャッシュ3から読出した命令を選択し、メモリ2および命令キャッシュ3から読出した命令が異なる場合、メモリ2から読出した命令を選択する。
次に、本実施の形態1に係るデータ処理装置100の動作について説明する。図4は、実施の形態1に係るデータ処理装置100の動作を説明するためのタイミングチャートである。図4に示すタイミングチャートには、CPU1のクロック信号、読出し先アドレス、ヒット情報、ヒット量、停止信号、およびメモリ2へのアクセス信号の波形がそれぞれ示してある。
読出し先の命令のアドレスは、CPU1の1つのクロック信号に対して1つのアドレスをCPU1からメモリ2および命令キャッシュ3に出力される。図4に示す例で、読出し先の命令のアドレスは、アドレスA、アドレスA+1、アドレスA+2、アドレスA+3、アドレスA+4、およびアドレスA+5の順で、CPU1からメモリ2および命令キャッシュ3に出力される。
まず、命令キャッシュ3は、前半データにアドレスA+1の命令を、後半データにアドレスA+2の命令をそれぞれ格納してある。そして、比較器31は、読出し先の命令のアドレスとしてアドレスA+1を受取った場合、受取ったアドレスA+1と、TAG_ADDR情報に記憶してあるアドレスとを比較する。比較器31は、受取ったアドレスA+1が前半データに格納してある命令のアドレスと一致するので、命令の連続性により後半データに格納してある命令のアドレスがアドレスA+2であると判定できる。そのため、比較器31は、ヒットの情報およびヒット量“2”を停止処理部4に出力する。つまり、図4に示すように、読出し先の命令のアドレスがアドレスA+1のタイミングに、ヒット情報が“H”レベルとなり、ヒット量“2”となる。
停止処理部4は、後半データにアドレスA+2の命令が格納されているので、アドレスA+2の命令を命令キャッシュ3から読出す期間、メモリ2へのアクセスを停止することができる。そのため、残り停止量カウンタ41は、比較器31(命令キャッシュ3)からヒットの情報と、ヒット量“2”とを受取ると、停止量カウンタ量を“1”にセットし、メモリ2へのアクセス1回分の期間、停止信号をメモリ2に出力する。つまり、図4に示すように、読出し先の命令のアドレスがアドレスA+2のタイミングに、停止信号が“H”レベルとなる。
メモリ2は、図1に示す演算処理部6で、停止信号の反転信号と、CPU1からのリクエストの信号とのAND演算を行なった信号がメモリ2へのアクセス信号として入力される。つまり、CPU1からのリクエストの信号が“H”レベルで停止信号が“L”レベルの場合、メモリ2へのアクセス信号は、“H”レベルであるが、停止信号が“H”レベルになると“L”レベルとなる。図4に示すように、読出し先の命令のアドレスがアドレスA+2のタイミングに、停止信号が“H”レベルとなるので、メモリ2へのアクセス信号は、“L”レベルとなる。
メモリ2へのアクセス信号が“L”レベルとなると、CPU1からメモリ2へのアクセスが停止し、データ処理装置100は、CPU1からメモリ2へのアクセスが停止している期間、消費電力を削減することができる。
前述したように、命令キャッシュ3は、命令の連続性により、前半データにアドレスA+1の命令を、後半データにアドレスA+2の命令をそれぞれ格納してある。しかし、CPU1がアドレスA+1の命令を実行した結果、次に読出す命令のアドレスがアドレスBとなる場合、CPU1からメモリ2へのアクセスを停止することができない。そこで、CPU1は、停止処理部4に対して分岐通知を出力して、停止信号が“H”レベルとなるのをキャンセルする。
図5は、実施の形態1に係るデータ処理装置100の分岐通知による動作を説明するためのタイミングチャートである。図5に示すタイミングチャートには、CPU1のクロック信号、読出し先アドレス、ヒット情報、ヒット量、停止信号、およびメモリ2へのアクセス信号の波形がそれぞれ示してある。
読出し先の命令のアドレスは、CPU1の1つのクロック信号に対して1つのアドレスをCPU1からメモリ2および命令キャッシュ3に出力される。図5に示す例で、読出し先の命令のアドレスは、アドレスA、アドレスA+1、アドレスB、アドレスB+1、アドレスB+2、およびアドレスB+3の順で、CPU1からメモリ2および命令キャッシュ3に出力される。つまり、CPU1がアドレスA+1の命令を実行した結果、次に読出す命令のアドレスがアドレスA+2、アドレスA+3、アドレスA+4、およびアドレスA+5の順から、アドレスB、アドレスB+1、アドレスB+2、およびアドレスB+3の順に変更されている。
しかし、命令キャッシュ3は、命令の連続性に従い、前半データにアドレスA+1の命令を、後半データにアドレスA+2の命令をそれぞれ格納してある。そして、比較器31は、読出し先の命令のアドレスとしてアドレスA+1を受取った場合、受取ったアドレスA+1と、TAG_ADDR情報に記憶してあるアドレスとを比較する。比較器31は、受取ったアドレスA+1が前半データに格納してある命令のアドレスと一致するので、命令の連続性により後半データに格納してある命令のアドレスがアドレスA+2であると判定する。そのため、比較器31は、ヒットの情報およびヒット量“2”を停止処理部4に出力する。つまり、図5に示すように、読出し先の命令のアドレスがアドレスA+1のタイミングに、ヒット情報が“H”レベルとなり、ヒット量“2”となる。
停止処理部4は、停止信号をメモリ2に出力する処理を行なうことになる。しかし、アドレスA+1の命令がアドレスBの命令に分岐すると、次にCPU1からリクエストがある命令のアドレスがアドレスA+2ではなく、アドレスBになる。そのため、CPU1からメモリ2へのアクセスが停止すると、CPU1は、キャッシュミスのペナルティを受けることになる。そこで、CPU1は、キャッシュミスを回避するため、命令を実行した結果、次に読出す命令が分岐する場合、分岐通知を停止処理部4に出力して、停止信号をメモリ2に出力する処理をキャンセルする。つまり、図5に示すように、読出し先の命令のアドレスがアドレスA+2のタイミングに、停止信号が“H”レベルとなるのをキャンセルする。
メモリ2は、図1に示す演算処理部6で、停止信号の反転信号と、CPU1からのリクエストの信号とのAND演算を行なった信号がメモリ2へのアクセス信号として入力される。そのため、CPU1からのリクエストの信号が“H”レベルで、停止信号が“L”レベルとなるので、メモリ2へのアクセス信号は、“H”レベルのまま維持される。
メモリ2へのアクセス信号が“H”レベルのまま維持されると、CPU1からメモリ2へのアクセスが停止せず、データ処理装置100は、CPU1からメモリ2と命令キャッシュ3の両方にアクセスして、キャッシュミスのペナルティを減らすことができる。
以上のように、本実施の形態1に係るデータ処理装置100は、比較器31が命令キャッシュ3に分岐先の命令を格納してあると判定した場合、停止処理部4が、命令キャッシュ3に格納してある命令を読出す期間、フェッチ処理を停止するための停止信号を生成し、メモリ2に出力する。そのため、データ処理装置100は、CPU1からメモリ2へのアクセスが停止している期間、消費電力を削減することができる。
なお、データ処理装置100では、メモリ2をCPU1と同じ半導体基板上に形成してある場合(ワンチップの半導体装置)について説明したが、メモリ2をCPU1の外部にある異なる半導体基板上に形成してもよい。ただし、メモリ2をCPU1の外部にある異なる半導体基板上に形成した場合、データ処理装置100は、CPU1とメモリ2とを接続するためのCPUインターフェースを設ける必要がある。
また、データ処理装置100は、命令長が固定の場合に限定されるものではなく、命令長が可変の場合であってもよい。
(実施の形態2)
実施の形態1に係るデータ処理装置100では、メモリ2のバス幅の2倍にあたるデータを格納することができる命令キャッシュ3を含む構成について説明した。しかし、命令キャッシュ3に格納することができるデータの容量は、メモリ2のバス幅の2倍に限定されるものではない。そこで、本実施の形態2に係るデータ処理装置では、実施の形態1に比べて格納することができるデータが大きい命令キャッシュを含む構成について説明する。
図6は、実施の形態2に係るデータ処理装置の構成を示すブロック図である。図6に示すデータ処理装置200は、CPU1、メモリ2、命令キャッシュ3a、および停止処理部4を含み、CPU1からメモリ2および命令キャッシュ3aの両方にアクセスし、メモリ2または命令キャッシュ3から命令を読出す(フェッチ処理)。なお、データ処理装置200は、実施の形態1に係るデータ処理装置100と同じ構成要素について、同じ符号を付して詳細な説明を繰返さない。
命令キャッシュ3aは、プログラムに含まれる分岐命令を実行するときにのみ動作し、メモリ2のバス幅により大きい容量のデータをメモリ2から読出して予め格納してある。具体的に、命令キャッシュ3aは、メモリ2のバス幅の4倍にあたる256ビットのデータを格納することができる。そして、命令キャッシュ3aは、格納してあるデータを64ビットずつ、D0データ、D1データ、D2データ、およびD3データの4つに分けて格納してある。なお、D0データ〜D3データに格納してある命令は、連続した命令である。
さらに、命令キャッシュ3aは、格納してある命令のアドレスを、TAG_ADDR情報として記憶してある。また、命令キャッシュ3aは、CPU1からリクエストがあった命令のアドレスと、TAG_ADDR情報に記憶してあるアドレスとを比較する比較器31aを含んでいる。
比較器31aは、CPU1で分岐命令を実行するとき、メモリ2にアクセスするアドレス(CPU1からリクエストがあった命令のアドレス)と、予め格納してある命令のアドレス(TAG_ADDR情報に記憶してあるアドレス)とを比較する。そして、比較器31aは、命令キャッシュ3aに格納してある命令の連続性を利用して、CPU1からリクエストがあった命令に対する分岐先の命令が命令キャッシュ3aに格納してあると判定する。具体的に、比較器31aは、メモリ2にアクセスするアドレスがD0データに格納してある命令のアドレスと一致した場合、分岐先の命令がD1データ〜D3データに格納してあると判定する。
図7は、実施の形態2に係るデータ処理装置200の命令キャッシュ3aのさらに詳しい構成を示すブロック図である。図7に示す比較器31aは、アドレス比較・ヒット判定部311a、ヒット量カウンタ312aを含んでいる。アドレス比較・ヒット判定部311aは、CPU1からのリクエストにより起動され、メモリ2にアクセスするアドレスと、TAG_ADDR情報に記憶してあるアドレスとを比較し、両アドレスが一致した場合(ヒットした場合)ヒットの情報を、一致しない場合ミスの情報を出力する。
ヒット量カウンタ312aは、メモリ2にアクセスするアドレスが、D0データに格納してある命令のアドレスと一致した場合、ヒット量“4”を出力する。ヒット量カウンタ312aは、メモリ2にアクセスするアドレスが、D1データに格納してある命令のアドレスと一致する場合、ヒット量“3”を出力する。ヒット量“4”を出力する。ヒット量カウンタ312aは、メモリ2にアクセスするアドレスが、D2データに格納してある命令のアドレスと一致する場合、ヒット量“2”を出力する。ヒット量“4”を出力する。ヒット量カウンタ312aは、メモリ2にアクセスするアドレスが、D3データに格納してある命令のアドレスと一致する場合、ヒット量“1”を出力する。なお、ヒット量は、CPU1が命令キャッシュ3aに何回アクセスして、データを読出すことができるかを示す値である。具体的に、ヒット量“4”の場合、CPU1は、命令キャッシュ3aに4回アクセスして、D1データ〜D3データの命令を読出すことができる。
次に、本実施の形態2に係るデータ処理装置200の動作について説明する。図8は、実施の形態2に係るデータ処理装置200の動作を説明するためのタイミングチャートである。図8に示すタイミングチャートには、CPU1のクロック信号、読出し先アドレス、ヒット情報、ヒット量、停止信号、およびメモリ2へのアクセス信号の波形がそれぞれ示してある。
読出し先の命令のアドレスは、CPU1の1つのクロック信号に対して1つのアドレスをCPU1からメモリ2および命令キャッシュ3aに出力される。図8に示す例で、読出し先の命令のアドレスは、アドレスA、アドレスA+1、アドレスA+2、アドレスA+3、アドレスA+4、およびアドレスA+5の順で、CPU1からメモリ2および命令キャッシュ3aに出力される。
まず、命令キャッシュ3aは、D0データにアドレスA+1の命令を、D1データにアドレスA+2の命令、D2データにアドレスA+3の命令を、およびD3データにアドレスA+4の命令をそれぞれ格納してある。そして、比較器31aは、読出し先の命令のアドレスとしてアドレスA+1を受取った場合、受取ったアドレスA+1と、TAG_ADDR情報に記憶してあるアドレスとを比較する。比較器31aは、受取ったアドレスA+1がD0データに格納してある命令のアドレスと一致するので、命令の連続性によりD1データ〜D3データに格納してある命令のアドレスがアドレスA+2〜アドレスA+4であると判定できる。そのため、比較器31aは、ヒットの情報およびヒット量“4”を停止処理部4に出力する。つまり、図8に示すように、読出し先の命令のアドレスがアドレスA+1のタイミングに、ヒット情報が“H”レベルとなり、ヒット量“4”となる。
停止処理部4は、D1データ〜D3データにアドレスA+2〜アドレスA+4の命令が格納されているので、アドレスA+2〜アドレスA+4の命令を命令キャッシュ3から読出す期間、メモリ2へのアクセスを停止することができる。そのため、残り停止量カウンタ41は、比較器31a(命令キャッシュ3a)からヒットの情報と、ヒット量“4”とを受取ると、停止量カウンタ量を“3”にセットし、メモリ2へのアクセス3回分の期間、停止信号をメモリ2に出力する。つまり、図8に示すように、読出し先の命令のアドレスがアドレスA+2〜アドレスA+4のタイミングに、停止信号が“H”レベルとなる。
メモリ2は、図1に示す演算処理部6で、停止信号の反転信号と、CPU1からのリクエストの信号とのAND演算を行なった信号がメモリ2へのアクセス信号として入力される。つまり、CPU1からのリクエストの信号が“H”レベルで停止信号が“L”レベルの場合、メモリ2へのアクセス信号は、“H”レベルであるが、停止信号が“H”レベルになると“L”レベルとなる。図8に示すように、読出し先の命令のアドレスがアドレスA+2〜アドレスA+4のタイミングに、停止信号が“H”レベルとなるので、メモリ2へのアクセス信号は、“L”レベルとなる。
メモリ2へのアクセス信号が“L”レベルとなると、CPU1からメモリ2へのアクセスが停止し、データ処理装置200は、CPU1からメモリ2へのアクセスが停止している期間、消費電力を削減することができる。
以上のように、本実施の形態2に係るデータ処理装置200は、命令キャッシュ3aが、メモリ2のバス幅の4倍の容量を有し、停止処理部4が、メモリ2へアクセスする回数を最大3回停止するので、本実施の形態1に比べてメモリ2へのアクセスを停止する期間が長くなり、消費電力をより削減することができる。
なお、命令キャッシュ3aの容量は、4倍に限定されるものではなく、メモリのバス幅のN倍の容量を有し、停止処理部4が、メモリ2へアクセスする回数を最大N−1回停止するように構成してもよい。
(実施の形態3)
実施の形態1および2に係るデータ処理装置100,200では、CPU1の外部に設けた停止処理部4(フェッチ処理制御部)を利用してメモリ2へのアクセスを停止する構成について説明した。しかし、CPU1は、内部に含まれる命令キューに空きがある場合、メモリ2にアクセスして、当該メモリ2から命令を読出すプリフェッチ処理を行なっている。そこで、本実施の形態3に係るデータ処理装置では、CPUの内部にフェッチ処理制御部を設けて、メモリ2へのアクセスを停止する構成について説明する。
図9は、本実施の形態3に係るデータ処理装置の構成を示すブロック図である。図9に示すデータ処理装置300は、CPU1、およびCPUインターフェース7を含み、CPUインターフェース7を介してCPU1からメモリ2にアクセスし、メモリ2から命令を読出す(プリフェッチ処理)。なお、データ処理装置300は、実施の形態1に係るデータ処理装置100と同じ構成要素について、同じ符号を付して詳細な説明を繰返さない。
データ処理装置300は、メモリ2のアクセスに数ウェイトの待ち期間が必要であっても、命令供給能力が十分であれば、通常時の性能は低下しない。そのため、データ処理装置300は、分岐命令を実行するときのみ性能劣化を許容すればよい。
CPU1は、命令キュー11、命令デコーダ12、データパス13、命令フェッチインターフェース部14、およびプリデコーダ15を含んでいる。命令キュー11は、メモリ2から命令を予め読出して(プリフェッチ処理)格納しておくための記憶部である。命令デコーダ12は、命令キューに格納した命令を順次読出して、命令をデコードするCPUCNT部の一部である。データパス13は、命令デコーダ12でデコードした命令を実行する命令実行部である。命令フェッチインターフェース部14は、命令キュー11からの読出し要求(IFREQ)をメモリ2に出力する。
プリデコーダ15は、命令デコーダ12で次にデコードする命令が分岐命令か否かを判定し、当該命令が分岐命令であれば、プリフェッチ処理を停止するための停止信号を生成し、命令フェッチインターフェース部14に出力する。つまり、プリデコーダ15は、フェッチ処理制御部として機能し、メモリ2へのアクセスを停止することができる。
本実施の形態3に係るデータ処理装置300の動作を説明する前に、プリデコーダ15を含まない構成のデータ処理装置の動作を説明する。図10は、プリデコーダ15を含まない構成のデータ処理装置におけるプリフェッチ処理のタイミングを説明するためのタイミングチャートである。図10(a)は、分岐命令を実行するタイミングにプリフェッチ処理を行なう例で、図10(b)は、分岐命令を実行する前のタイミングにプリフェッチ処理を行なう例である。
ここで、図10に示すタイミングチャートでは、分岐命令、分岐先命令、およびプリフェッチ処理のそれぞれのタイミングが図示してある。なお、分岐命令、および分岐先命令には、命令フェッチステージIFと、命令デコードステージDと、および実行ステージEとを含んでいる。命令フェッチステージIF(Instruction Fetch)では、命令キューに格納してある命令を命令デコーダに読出す処理が行なわれる。命令デコードステージD(Decode)では、命令フェッチステージIFから供給された命令のデコード処理が行なわれる。実行ステージE(Execute)では、命令デコードステージDでデコードされた命令の実行が行なわれる。例えば、算術論理演算や分岐判定処理などが行なわれる。
CPUは、図10に示すように、分岐命令および分岐先命令の命令フェッチステージIFおよび命令デコードステージDのそれぞれが1クロックで処理され、1ウェイトでメモリにアクセスするプリフェッチ処理を2クロックで処理する。そのため、図10(a)に示すタイミングチャートに示すように、CPUは、命令フェッチステージIFを開始するタイミングで、プリフェッチ処理の実行が開始されれば、実行ステージEの1クロック目から分岐先命令のプリフェッチ処理を実行することができる。
実行ステージEの1クロック目から分岐先命令のプリフェッチ処理を実行することができれば、CPUは、分岐命令の実行ステージEの3クロック目から分岐先命令の命令フェッチステージIFを実行することができる。つまり、CPUは、分岐先命令の命令フェッチステージIFが実行待ちとなる期間(IF−stall)を1クロックに抑えることができる。
しかし、図10(b)に示すタイミングチャートに示すように、CPUは、命令デコードステージDを開始するタイミングで、プリフェッチ処理の実行が開始されれば、実行ステージEの1クロック目から分岐先命令のプリフェッチ処理を実行することができない。そのため、CPUは、実行ステージEの1クロック目は、別の命令のプリフェッチ処理でメモリにアクセスを行なっているので、分岐先命令のプリフェッチ処理を実行するためにメモリにアクセスすることができない。よって、CPUは、分岐先命令のプリフェッチ処理は、分岐命令の実行ステージEの2クロック目から開始されるので、分岐先命令の命令フェッチステージIFが実行待ちとなる期間(IF−stall)を2クロック分必要となる。
また、分岐命令の命令デコードステージDの前に開始されたプリフェッチ処理は、分岐先命令とは異なる命令をメモリから読出しているので、実行に必要のない命令をメモリから読出しており無駄なプリフェッチ処理である。
そこで、本実施の形態3に係るデータ処理装置300では、プリデコーダ15を設け、分岐命令前のクロックに、プリフェッチ処理を停止する機構を導入することで、メモリ2への不要なアクセスを削減し、消費電力を削減している。
図11は、実施の形態3に係るデータ処理装置300の命令キュー11およびプリデコーダ15の構成を示すブロック図である。プリデコーダ15は、記憶部151、比較部152、および演算部153を含んでいる。記憶部151は、プリフェッチ処理を停止する必要のある分岐命令(停止対象命令)を予め記憶してある。記憶部151は、たとえば、分岐命令1から分岐命令NまでのN個の分岐命令を記憶してある。
比較部152は、命令キュー11から読出した対象命令と、記憶部151に予め記憶してある分岐命令(停止対象命令)とを比較する。演算部153は、対象命令と、記憶部151に記憶してある分岐命令のそれぞれとを比較した結果を演算して停止信号を生成する。演算部153で生成した停止信号は、増幅器154で予め定められた電圧レベルに増幅され、命令フェッチインターフェース部14に出力される。
なお、命令キュー11は、セレクタ11aを有し、当該セレクタ11aが、選択信号に基づき格納してある命令から次に実行する命令を選択して比較部152に出力する。
次に、データ処理装置300が、プリデコーダ15を用いてプリフェッチ処理を停止する動作について説明する。図12は、実施の形態3に係るデータ処理装置300におけるプリフェッチ処理のタイミングを説明するためのタイミングチャートである。図12に示すタイミングチャートでは、分岐命令、分岐先命令、およびプリフェッチ処理のそれぞれのタイミングが図示してある。なお、分岐命令、および分岐先命令には、命令フェッチステージIFと、命令デコードステージDと、および実行ステージEとを含んでいる。
CPU1は、図12に示すように、分岐命令および分岐先命令の命令フェッチステージIFおよび命令デコードステージDのそれぞれが1クロックで処理され、ノーウェイトでメモリ2にアクセスするプリフェッチ処理を1クロックで処理している。そして、CPU1は、命令フェッチステージIFで、命令キュー11から命令デコーダ12に命令を読出すとともに、プリデコーダ15にも当該命令を出力する。
プリデコーダ15は、命令フェッチステージIFで入力された命令(対象命令)が分岐命令であるか否かを判定(分岐判定)する。プリデコーダ15は、命令が分岐命令であると判定した場合、命令デコードステージDにおいて、命令の実行に必要のない命令のプリフェッチ処理を停止する。なお、命令フェッチインターフェース部14は、停止信号が“1”の場合、メモリ2からの読出し要求(IFREQ)として“0”を出力する。
なお、プリデコーダ15は、分岐命令のみでなく条件分岐命令であっても同様に動作することができる。具体的に、図13は、実施の形態3に係るデータ処理装置300におけるプリフェッチ処理の条件分岐命令を実行する場合のタイミングを説明するためのタイミングチャートである。CPU1は、図13に示すように、分岐命令および分岐先命令の命令フェッチステージIFおよび命令デコードステージDのそれぞれが1クロックで処理され、ノーウェイトでメモリ2にアクセスするプリフェッチ処理を1クロックで処理している。そして、CPU1は、命令フェッチステージIFで、命令キュー11から命令デコーダ12に命令を読出すとともに、プリデコーダ15にも当該命令を出力する。
プリデコーダ15は、命令フェッチステージIFで入力された命令(対象命令)が条件分岐命令であるか否かを判定(分岐判定)する。プリデコーダ15は、命令が条件分岐命令であると判定した場合、命令デコードステージDにおいて、命令の実行に必要のない命令のプリフェッチ処理を停止する。しかし、CPU1は、条件分岐先命令が分岐しない(non-taken)命令である場合、プリフェッチ処理を再開する。
以上のように、本実施の形態3に係るデータ処理装置300は、プリデコーダ15が、命令デコーダ12で次にデコードする命令が分岐命令か否かを判定し、当該命令が分岐命令であれば、フェッチ処理を停止するための停止信号を生成する。そのため、データ処理装置300は、実行に必要のない命令をメモリ2から読出す無駄なプリフェッチ処理を停止することができる。さらに、データ処理装置300は、無駄なプリフェッチ処理(メモリ2へのアクセス)を停止することで消費電力をより削減することができる。また、データ処理装置300では、分岐命令の開始から命令フェッチを開始できるため、プリフェッチ処理によって分岐命令を実行するクロック数が多くなる問題を回避することもできる。
なお、プリデコーダ15は、命令デコーダ12で次にデコードする命令が、処理に複数のクロック期間を要する命令(たとえば、除算命令など)であると判定した場合も、当該処理が終わるまでの期間、プリフェッチ処理を停止してもよい。
また、データ処理装置300では、CPU1とメモリ2とを異なる半導体基板上に形成してある場合について説明したが、CPU1とメモリ2とを同じ半導体基板上に形成してもよい(ワンチップの半導体装置)。ただし、CPU1とメモリ2とを同じ半導体基板上に形成した場合、データ処理装置300は、CPU1とメモリ2とを接続するためのCPUインターフェース7を設けなくてもよい。
(実施の形態4)
実施の形態3に係るデータ処理装置300では、ノーウェイトでメモリ2にアクセスするプリフェッチ処理の場合について説明した。しかし、データ処理装置は、メモリ2のアクセスにウェイトを設けてプリフェッチ処理を行なってもよい。そこで、本実施の形態4に係るデータ処理装置では、メモリ2のアクセスにウェイトを設けてプリフェッチ処理を行なう場合について説明する。なお、実施の形態4に係るデータ処理装置は、実施の形態3に係るデータ処理装置300と同じ構成であるため図示を繰返さず、以下、同じ構成要素に同じ符号を付して説明する。
図14は、実施の形態4に係るデータ処理装置300におけるプリフェッチ処理のタイミングを説明するためのタイミングチャートである。図14に示すタイミングチャートでは、分岐命令、分岐先命令、およびプリフェッチ処理のそれぞれのタイミングが図示してある。なお、分岐命令、および分岐先命令には、命令フェッチステージIFと、命令デコードステージDと、および実行ステージEとを含んでいる。
CPU1は、図14に示すように、分岐命令および分岐先命令の命令フェッチステージIFおよび命令デコードステージDのそれぞれが1クロックで処理され、1ウェイトでメモリ2にアクセスするプリフェッチ処理を2クロックで処理する。そして、プリデコーダ15は、命令フェッチステージIFで入力された命令(対象命令)が分岐命令であるか否かを判定(分岐判定)する。そのため、CPU1は、命令デコードステージDを開始するタイミングで、プリフェッチ処理の実行を開始する予定であっても、プリデコーダ15が、命令を分岐命令であると判定した場合、プリフェッチ処理を停止する。
そのため、CPU1は、実行ステージEの1クロック目から、分岐先命令のプリフェッチ処理を実行することができ、分岐先命令の命令フェッチステージIFが実行待ちとなる期間(IF−stall)を1クロックに抑えることができる。また、分岐命令の命令デコードステージDの前に開始される無駄なプリフェッチ処理を停止することで、メモリ2への不要なアクセスを削減し、消費電力を削減することができる。
以上のように、本実施の形態4に係るデータ処理装置300では、命令を読出すときに予め定められたウェイト期間を必要とするメモリ2であっても、プリデコーダ15が、無駄なプリフェッチ処理を停止して、実行ステージEの1クロック目から、プリフェッチ処理を実行することができる。
(実施の形態5)
実施の形態3および4に係るデータ処理装置300では、命令長が固定の場合について説明した。しかし、データ処理装置は、命令長が可変の場合でもよい。そこで、本実施の形態5に係るデータ処理装置では、命令長が可変の場合について説明する。なお、実施の形態5に係るデータ処理装置は、実施の形態3に係るデータ処理装置300と同じ構成であるため図示を繰返さず、以下、同じ構成要素に同じ符号を付して説明する。
実施の形態5に係るデータ処理装置300は、命令長が可変であるため、プリデコーダ15が、命令キュー11から命令(対象命令)を読出す構成が異なる。図15は、実施の形態5に係るデータ処理装置300の命令キュー11およびプリデコーダ15の構成を示すブロック図である。プリデコーダ15は、図11に示したプリデコーダ15と同様に、記憶部151、比較部152、および演算部153を含んでいる。
命令キュー11は、セレクタ11a、先頭算出部11b、および命令セレクタ11cを有している。命令キュー11は、命令長が可変の命令を格納しているので、セレクタ11aが選択したラインに複数の命令を含んでいる。そのため、セレクタ11aは、ライン選択信号に基づき格納してある複数の命令をライン単位で読出し、命令セレクタ11cに出力する。先頭算出部11bは、命令デコーダ12が出力する命令の命令長から、次に実行する命令の先頭を算出し、命令セレクタ11cに出力する。命令セレクタ11cは、先頭算出部11bが出力した命令の先頭を示す情報に基づいて、セレクタ11aが出力したラインに含まれる複数の命令から、次に実行する命令を選択して比較部152に出力する。
比較部152は、命令キュー11から読出した対象命令と、記憶部151に予め記憶してある分岐命令(停止対象命令)とを比較する。演算部153は、対象命令と、記憶部151に記憶してある分岐命令のそれぞれとを比較した結果を演算して停止信号を生成する。演算部153で生成した停止信号は、増幅器154で予め定められた電圧レベルに増幅され、命令フェッチインターフェース部14に出力される。
以上のように、本実施の形態5に係るデータ処理装置300では、命令長が各命令により異なる場合(命令長が可変の場合)、命令デコーダ12で命令をデコードした結果より得られる命令長により、次にデコードする命令を命令キューから選択して読出すので、命令長が固定の命令の場合と同様の効果を得ることができる。
(変形例)
命令キュー11は、命令長が可変の命令の場合、命令デコーダ12で命令をデコードして命令長を得るまでに時間がかかると、プリデコーダ15が無駄なプリフェッチ処理を停止する処理が行なえない場合が考えられる。そこで、変形例に係るプリデコーダでは、ラインに含まれる複数の命令のすべてについて、記憶部に予め記憶してある分岐命令(停止対象命令)と比較して分岐命令であるか否かを判定している。
図16は、実施の形態5の変形例に係るデータ処理装置300の命令キュー11およびプリデコーダの構成を示すブロック図である。プリデコーダ15aは、図11に示したプリデコーダ15をサブプリデコーダ155として複数設けてある。そのため、複数のサブプリデコーダ155は、読出したラインに含まれる複数の命令について分岐命令であるか否かを並列に処理する。具体的に、読出したラインに含まれる命令が、次命令候補1〜次命令候補Mの場合、M個のサブプリデコーダ155を用意して、次命令候補1〜次命令候補Mの命令について、それぞれ分岐命令であるか否かの処理を並列に行なう。セレクタ156は、先頭算出部11bが出力した命令の先頭を示す情報に基づいて、次命令候補1〜次命令候補Mの命令のうちから1つの命令を選択し、選択した命令を処理したサブプリデコーダ155で生成した停止信号から、命令フェッチインターフェース部14に出力する停止信号として選択する。
なお、セレクタ156で選択した停止信号は、増幅器157で予め定められた電圧レベルに増幅され、命令フェッチインターフェース部14に出力される。また、ラインに含まれる複数の命令は、複数のサブプリデコーダ155に供給されるので、増幅器11dで予め定められた電圧レベルに増幅してもよい。
以上のように、本実施の形態5の変形例に係るデータ処理装置300では、読出した複数の命令のそれぞれについて、分岐命令か否かを並列に判定する複数のサブプリデコーダ155を有するので、プリフェッチ処理を停止する処理を安定して行なうことができる。
(実施の形態6)
本実施の形態6に係るデータ処理装置は、プリデコーダ15の記憶部151に予め記憶してある分岐命令(停止対象命令)のすべてを、常に分岐命令として判定してプリフェッチ処理を停止するのではなく、動的に変更することが可能な構成について説明する。
図17は、実施の形態6に係るデータ処理装置のプリデコーダの構成を示すブロック図である。なお、実施の形態6に係るデータ処理装置は、実施の形態3に係るデータ処理装置300と同じ構成であるため図示を繰返さず、以下、同じ構成要素に同じ符号を付して説明する。また、プリデコーダ15bにおいて、図11に示したプリデコーダ15と同じ構成要素については同じ符号を付して詳細な説明は繰返さない。
プリデコーダ15bは、記憶部151a、比較部152、および演算部153を含んでいる。記憶部151aは、プリフェッチ処理を停止する必要のある分岐命令(停止対象命令)を予め記憶してあるとともに、各分岐命令についてプリフェッチ処理を停止する対象にするか否かを決めるバリッドビットVbitと、各分岐命令の命令長を示すレングス情報lenとを付加して記憶してある。記憶部151bは、たとえば、分岐命令1から分岐命令NまでのN個の分岐命令を記憶してある。なお、レングス情報lenは、命令長が固定の分岐命令の場合には不要である。
バリッドビットVbitを用いることにより、CPU1は、条件分岐先命令が分岐しない(non-taken)命令が連続するような場合において、プリフェッチ処理を停止する処理が過剰に働き、命令キュー11から命令デコーダ12への命令供給能力が不足して性能が劣化することを回避することができる。
つまり、CPU1は、プリフェッチ処理を停止する処理が不要な分岐命令のバリッドビットVbitに“0”を書込んでおくことで、プリフェッチ処理を停止する処理を行なわない。なお、CPU1は、バリッドビットVbitに“1”が書込んである場合、プリフェッチ処理を停止する処理を行なう。
図18は、実施の形態6に係るデータ処理装置300におけるプリフェッチ処理のタイミングを説明するためのタイミングチャートである。図18に示すタイミングチャートでは、分岐命令1、通常命令、分岐命令2、分岐先命令、およびプリフェッチ処理のそれぞれのタイミングが図示してある。なお、分岐命令1、通常命令、分岐命令2、および分岐先命令には、命令フェッチステージIFと、命令デコードステージDと、および実行ステージEとを含んでいる。
CPU1は、図18に示すように、命令フェッチステージIFおよび命令デコードステージDのそれぞれが1クロックで処理され、ノーウェイトでメモリ2にアクセスするプリフェッチ処理を1クロックで処理する。そして、プリデコーダ15bは、分岐命令1の命令フェッチステージIFで入力された命令(対象命令)が分岐命令であるか否かを判定(分岐判定)する。しかし、プリデコーダ15bは、分岐命令1のバリッドビットVbitに“0”が書込まれている(v=0)ので、プリフェッチ処理を停止する停止信号を生成しない。
その後、CPU1は、通常命令、および分岐命令2を実行する。そして、プリデコーダ15bは、分岐命令2の命令フェッチステージIFで入力された命令(対象命令)が分岐命令であるか否かを判定(分岐判定)する。プリデコーダ15bは、分岐命令2のバリッドビットVbitに“1”が書込まれている(v=1)ので、プリフェッチ処理を停止する停止信号を生成する。そのため、CPU1は、命令デコードステージDを開始するタイミングで、プリフェッチ処理の実行を開始する予定であっても、プリフェッチ処理を停止する。
その後、CPU1は、実行ステージEの1クロック目から、分岐先命令のプリフェッチ処理を実行することができ、分岐先命令の命令フェッチステージIFが実行待ちとなる期間(IF−stall)を1クロックに抑えている。分岐命令2の命令デコードステージDの前に開始される無駄なプリフェッチ処理を停止することで、メモリ2への不要なアクセスを削減し、消費電力を削減することができる。さらに、分岐命令1ではプリフェッチ処理を停止せずに、分岐命令2ではプリフェッチ処理を停止することで、プリフェッチ処理を停止する処理が過剰に働くのを防いでいる。
以上のように、本実施の形態6の変形例に係るデータ処理装置300では、分岐命令であると判定した場合であっても、フェッチ処理を停止するための停止信号を生成しないビット情報(バリッドビットVbit)を、停止対象命令ごとに付加している。そのため、本実施の形態6の変形例に係るデータ処理装置300は、プリフェッチ処理を停止する処理が過剰に働くのを防ぎ、命令供給能力が不足して性能が劣化することを回避することができる。
(実施の形態7)
実施の形態1に係るデータ処理装置100では、CPU1の外部に設けた停止処理部4(フェッチ処理制御部)を利用してメモリ2へのアクセスを停止する構成について説明した。実施の形態3に係るデータ処理装置300では、CPU1の内部に設けたプリデコーダ15(フェッチ処理制御部)を利用してメモリ2へのアクセスを停止する構成について説明した。本実施の形態7に係るデータ処理装置では、両者を組合わせたフェッチ処理制御部を設けて、メモリ2へのアクセスを停止する構成について説明する。
図19は、本実施の形態7に係るデータ処理装置の構成を示すブロック図である。図19に示すデータ処理装置400は、CPU1、メモリ2、命令キャッシュ3、および停止処理部4を含み、CPU1からメモリ2および命令キャッシュ3の両方にアクセスし、メモリ2または命令キャッシュ3から命令を読出す(フェッチ処理)。また、図19に示すCPU1は、命令キュー11、命令デコーダ12、データパス13、命令フェッチインターフェース部14、およびプリデコーダ15を含んでいる。
なお、実施の形態7に係るデータ処理装置400は、実施の形態1に係るデータ処理装置100、および実施の形態3に係るデータ処理装置300と同じ構成要素について、同じ符号を付して詳細な説明を繰返さない。
次に、本実施の形態7に係るデータ処理装置400の動作について説明する。図20は、実施の形態7に係るデータ処理装置400の動作を説明するためのタイミングチャートである。図7に示すタイミングチャートには、CPU1のクロック信号、命令フェッチステージIF、命令デコードステージD、実行ステージE、読出し先アドレス、分岐判定信号、停止信号、分岐通知、ヒット情報、ヒット量、およびメモリ2へのアクセス信号の波形がそれぞれ示してある。
CPU1は、“bra1”、“sub”、“bra2”、“add”、および“bra3”の順の命令を、命令フェッチステージIF、命令デコードステージD、および実行ステージEの各ステージで順にパイプラインで処理している。たとえば、CPU1は、“bra1”の命令を命令フェッチステージIFで処理した次のクロックで、“bra1”の命令を命令デコードステージDで処理し、さらに次のクロックで、“bra1”の命令を実行ステージEで処理する。
プリデコーダ15は、分岐命令である“bra1”、“bra2”、および“bra3”を処理するとき、命令フェッチステージIFで分岐判定を行ない分岐命令と判定するので分岐判定信号を“H”レベルとする。さらに、プリデコーダ15は、分岐判定信号が“H”レベルとなると、次のクロックのタイミングで停止信号を“H”レベルとして、メモリ2に出力する。
メモリ2は、図19に示す演算処理部6aで、停止処理部4およびプリデコーダ15の停止信号の反転信号と、CPU1からのリクエストの信号とのAND演算を行なった信号がメモリ2へのアクセス信号として入力される。具体的に、CPU1からのリクエストの信号が“H”レベルでプリデコーダ15の停止信号が“L”レベルの場合、メモリ2へのアクセス信号は、“H”レベルであるが、プリデコーダ15の停止信号が“H”レベルになると“L”レベルとなる。メモリ2へのアクセス信号は、図20に示すように、プリデコーダ15の停止信号が“H”レベルになるタイミングに、“L”レベル(I,III)となる。
また、命令キャッシュ3は、“bra1”の命令をメモリ2から読出す前、前半データに“bra1”の命令を、後半データに“sub”の命令をそれぞれ格納しておく。そして、比較器31は、命令フェッチインターフェース部14から受取ったアドレスが前半データに格納してある“bra1”の命令のアドレスと一致する場合、命令の連続性により後半データに格納してある命令が“sub”であると判定する。そのため、比較器31は、ヒットの情報およびヒット量“2”を停止処理部4に出力する。つまり、図20に示すように、命令フェッチステージIFで“sub”の命令が処理されるタイミングに、ヒット情報が“H”レベルとなり、ヒット量“2”となる。ヒット情報が“H”レベルとなり、ヒット量“2”となると、メモリ2へのアクセス信号は、次のクロックのタイミングで“L”レベル(II)となる。
以上のように、本実施の形態7に係るデータ処理装置400では、フェッチ処理制御部として、CPU1の外部に設けた停止処理部4と、CPU1の内部に設けたプリデコーダ15とを有している。そのため、本実施の形態7に係るデータ処理装置400は、命令キャッシュ3に分岐先の命令を格納してあると判定した場合、および次の命令が分岐命令であると判定した場合のうち少なくとも一方の場合、メモリ2へのアクセスを停止することができる。よって、本実施の形態7に係るデータ処理装置400は、無駄なメモリ2へのアクセスを停止することで消費電力をより削減することができる。
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、請求の範囲によって示され、請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
1 CPU、2 メモリ、3 命令キャッシュ、4 停止処理部、11a,156 セレクタ、6,6a 演算処理部、7 CPUインターフェース、11 命令キュー、11b 先頭算出部、11c 命令セレクタ、11d,154,157 増幅器、12 命令デコーダ、13 データパス、14 命令フェッチインターフェース部、15,15a,15b プリデコーダ、31,31a 比較器、41 残り停止量カウンタ、100,200,300,400 データ処理装置、151,151a,151b 記憶部、152 比較部、153 演算部、155 サブプリデコーダ、311,311a ヒット判定部、312,312a ヒット量カウンタ。

Claims (11)

  1. 複数の命令により記述してあるプログラムを記憶するメモリと、
    前記プログラムに含まれる分岐命令を実行するときにのみ動作し、前記メモリのバス幅より大きい容量のデータを、前記メモリから読出して予め格納しておく命令キャッシュと、
    前記メモリおよび前記命令キャッシュの両方にアクセスし、前記メモリまたは前記命令キャッシュから読出した命令をパイプラインで実行する演算処理部と、
    前記メモリから命令を読出すフェッチ処理を停止するための停止信号を生成し、前記メモリに出力するフェッチ処理制御部とを備え、
    前記命令キャッシュは、
    前記演算処理部で分岐命令を実行するとき、前記メモリにアクセスするアドレスと、予め格納してある命令のアドレスとを比較して一致した場合、当該分岐命令に対する分岐先の命令を格納してあると判定する比較器を含み、
    前記フェッチ処理制御部は、
    前記比較器が前記命令キャッシュに分岐先の命令を格納してあると判定した場合、前記命令キャッシュに格納してある命令を読出す期間、前記フェッチ処理を停止するための停止信号を生成し、前記メモリに出力する停止処理部であり、
    前記比較器は、アドレスが一致した命令に応じて、前記命令キャッシュに格納してある命令を読出すことが可能な回数をヒット量としてカウントし、
    前記停止処理部は、前記ヒット量を初期値としてカウンダウンすることで前記メモリへのアクセスを停止する期間を設定するカウンタを含む、データ処理装置。
  2. 前記停止処理部は、分岐先の命令がさらに分岐する場合、前記メモリへのアクセスを停止する処理をキャンセルする、請求項1に記載のデータ処理装置。
  3. 前記命令キャッシュは、前記メモリのバス幅のN倍の容量を有し、
    前記停止処理部は、前記メモリへアクセスする回数を最大N−1回停止する、請求項1に記載のデータ処理装置。
  4. 前記演算処理部は、
    前記メモリから命令を予め読出して格納しておく命令キューと、
    前記命令キューに格納した命令を順次読出して、命令をデコードする命令デコーダと、
    前記命令デコーダでデコードした命令を実行する命令実行部と、
    前記命令キューからの読出し要求を前記メモリに出力する命令フェッチインターフェース部と、
    前記命令デコーダで次にデコードする命令が分岐命令か否かを判定し、当該命令が分岐命令であれば、前記フェッチ処理を停止するための停止信号を生成し、前記命令フェッチインターフェース部に出力するプリデコーダとを含み、
    前記フェッチ処理制御部は、前記プリデコーダである、請求項1に記載のデータ処理装置。
  5. 前記プリデコーダは、前記フェッチ処理を停止させた後、判定した分岐命令を前記命令実行部で実行するときに前記フェッチ処理を再開する、請求項4に記載のデータ処理装置。
  6. 前記プリデコーダは、前記命令デコーダで次にデコードする命令と、予め記憶してある停止対象命令とを比較することで、命令が分岐命令か否かを判定する、請求項4に記載のデータ処理装置。
  7. 前記メモリは、命令を読出すときに予め定められたウェイト期間を必要とする、請求項4に記載のデータ処理装置。
  8. 前記プリデコーダは、命令長が各命令により異なる場合、前記命令デコーダで命令をデコードした結果より得られる命令長により、次にデコードする命令を前記命令キューから選択して読出す、請求項6に記載のデータ処理装置。
  9. 前記プリデコーダは、読出した複数の命令のそれぞれについて、分岐命令か否かを並列に判定する複数のサブプリデコーダを有する、請求項8に記載のデータ処理装置。
  10. 前記プリデコーダは、前記命令デコーダで次にデコードする命令が分岐命令であると判定した場合であっても、前記フェッチ処理を停止するための停止信号を生成しないビット情報を、前記停止対象命令ごとに付加する、請求項6に記載のデータ処理装置。
  11. 前記命令キャッシュは、
    前記演算処理部で分岐命令を実行するとき、前記メモリにアクセスするアドレスと、予め格納してある命令のアドレスとを比較して一致した場合、当該分岐命令に対する分岐先の命令を格納してあると判定する比較器を含み、
    前記演算処理部は、
    前記メモリから命令を予め読出して格納しておく命令キューと、
    前記命令キューに格納した命令を順次読出して、命令をデコードする命令デコーダと、
    前記命令デコーダでデコードした命令を実行する命令実行部と、
    前記命令キューからの読出し要求を前記メモリおよび前記命令キャッシュに出力する命令フェッチインターフェース部とを含み、
    前記フェッチ処理制御部は、
    前記比較器が前記命令キャッシュに分岐先の命令を格納してあると判定した場合、前記命令キャッシュに格納してある命令を読出す期間、前記フェッチ処理を停止するための停止信号を生成し、前記メモリに出力する停止処理部と、
    前記演算処理部内に設けてあり、前記命令デコーダで次にデコードする命令が分岐命令か否かを判定し、当該命令が分岐命令であれば、前記フェッチ処理を停止するための停止信号を生成し、前記メモリに出力するプリデコーダとを含む、請求項1に記載のデータ処理装置。
JP2013558608A 2012-02-14 2012-02-14 データ処理装置 Expired - Fee Related JP5902208B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2013558608A JP5902208B2 (ja) 2012-02-14 2012-02-14 データ処理装置

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
PCT/JP2012/053347 WO2013121516A1 (ja) 2012-02-14 2012-02-14 データ処理装置
JP2013558608A JP5902208B2 (ja) 2012-02-14 2012-02-14 データ処理装置

Publications (2)

Publication Number Publication Date
JPWO2013121516A1 JPWO2013121516A1 (ja) 2015-05-11
JP5902208B2 true JP5902208B2 (ja) 2016-04-13

Family

ID=48983680

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013558608A Expired - Fee Related JP5902208B2 (ja) 2012-02-14 2012-02-14 データ処理装置

Country Status (5)

Country Link
US (1) US9542190B2 (ja)
EP (1) EP2816466B1 (ja)
JP (1) JP5902208B2 (ja)
CN (1) CN104106046B (ja)
WO (1) WO2013121516A1 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6252348B2 (ja) * 2014-05-14 2017-12-27 富士通株式会社 演算処理装置および演算処理装置の制御方法
CN111625482B (zh) * 2016-03-23 2022-02-01 北京忆恒创源科技股份有限公司 顺序流检测方法与装置
GB2548871B (en) * 2016-03-31 2019-02-06 Advanced Risc Mach Ltd Instruction prefetching

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04233642A (ja) * 1990-07-27 1992-08-21 Dell Usa Corp キャッシュアクセスと並列的にメモリアクセスを行なうプロセッサ及びそれに用いられる方法
JPH0527972A (ja) 1991-07-18 1993-02-05 Matsushita Electric Ind Co Ltd 命令プリフエツチ装置
JPH06161750A (ja) 1992-11-26 1994-06-10 Fujitsu Ltd 命令フェッチ制御方法及び命令処理装置
JP2748822B2 (ja) * 1993-07-05 1998-05-13 日本電気株式会社 情報処理装置
JPH11306016A (ja) * 1998-04-16 1999-11-05 Japan Radio Co Ltd レジスタ間接分岐命令及び条件付き分岐命令実行方法
JP2000357090A (ja) 1999-06-15 2000-12-26 Nec Corp マイクロコンピュータおよびキャッシュ制御方法
JP2001142698A (ja) 1999-11-12 2001-05-25 Mitsubishi Electric Corp メモリアクセス方式
JP2003162446A (ja) * 2001-11-27 2003-06-06 Nec Electronics Corp マイクロコンピュータ
JP3986950B2 (ja) * 2002-11-22 2007-10-03 シャープ株式会社 Cpuおよびこれを備えた情報処理装置、cpuの制御方法
TWI242744B (en) * 2003-01-14 2005-11-01 Ip First Llc Apparatus, pipeline microprocessor and method for avoiding deadlock condition and storage media with a program for avoiding deadlock condition
JP2006048258A (ja) 2004-08-03 2006-02-16 Renesas Technology Corp データプロセッサ
JP4393317B2 (ja) * 2004-09-06 2010-01-06 富士通マイクロエレクトロニクス株式会社 メモリ制御回路
US7587580B2 (en) 2005-02-03 2009-09-08 Qualcomm Corporated Power efficient instruction prefetch mechanism
US7447883B2 (en) * 2006-08-10 2008-11-04 Arm Limited Allocation of branch target cache resources in dependence upon program instructions within an instruction queue
JP2008052518A (ja) 2006-08-24 2008-03-06 Digital Electronics Corp Cpuシステム
JP4864840B2 (ja) * 2007-08-31 2012-02-01 株式会社東芝 マイクロプロセッサ

Also Published As

Publication number Publication date
US20150058600A1 (en) 2015-02-26
EP2816466A4 (en) 2015-09-23
JPWO2013121516A1 (ja) 2015-05-11
US9542190B2 (en) 2017-01-10
CN104106046B (zh) 2018-05-15
WO2013121516A1 (ja) 2013-08-22
EP2816466A1 (en) 2014-12-24
EP2816466B1 (en) 2019-01-16
CN104106046A (zh) 2014-10-15

Similar Documents

Publication Publication Date Title
US7487340B2 (en) Local and global branch prediction information storage
KR101183651B1 (ko) 실행 유닛 내의 데이터 전달을 위한 시스템 및 방법
US9361110B2 (en) Cache-based pipline control method and system with non-prediction branch processing using a track table containing program information from both paths of a branch instruction
US9396117B2 (en) Instruction cache power reduction
CN112230992B (zh) 一种包含分支预测循环的指令处理装置、处理器及其处理方法
US7594131B2 (en) Processing apparatus
US20120210107A1 (en) Predicated issue for conditional branch instructions
US20070288733A1 (en) Early Conditional Branch Resolution
JP2018005488A (ja) 演算処理装置及び演算処理装置の制御方法
JP6457836B2 (ja) プロセッサおよび命令コード生成装置
US7877578B2 (en) Processing apparatus for storing branch history information in predecode instruction cache
JP5159258B2 (ja) 演算処理装置
JP5902208B2 (ja) データ処理装置
US7730288B2 (en) Method and apparatus for multiple load instruction execution
JP2004145454A (ja) 情報処理装置及び情報処理方法
US20070288732A1 (en) Hybrid Branch Prediction Scheme
US8874884B2 (en) Selective writing of branch target buffer when number of instructions in cache line containing branch instruction is less than threshold
US20070288731A1 (en) Dual Path Issue for Conditional Branch Instructions
US20060095746A1 (en) Branch predictor, processor and branch prediction method
US20070288734A1 (en) Double-Width Instruction Queue for Instruction Execution
JP5209390B2 (ja) 情報処理装置及び命令フェッチ制御方法
JP2008165589A (ja) 情報処理装置
JP4002288B2 (ja) 情報処理装置
JP2007310668A (ja) マイクロプロセッサ

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150602

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150731

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

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

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees