JP5548037B2 - 命令発行制御装置及び方法 - Google Patents

命令発行制御装置及び方法 Download PDF

Info

Publication number
JP5548037B2
JP5548037B2 JP2010134528A JP2010134528A JP5548037B2 JP 5548037 B2 JP5548037 B2 JP 5548037B2 JP 2010134528 A JP2010134528 A JP 2010134528A JP 2010134528 A JP2010134528 A JP 2010134528A JP 5548037 B2 JP5548037 B2 JP 5548037B2
Authority
JP
Japan
Prior art keywords
instruction
thread
unit
cycles
stall
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
JP2010134528A
Other languages
English (en)
Other versions
JP2011258147A (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.)
Panasonic Corp
Panasonic Holdings Corp
Original Assignee
Panasonic Corp
Matsushita Electric Industrial Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Panasonic Corp, Matsushita Electric Industrial Co Ltd filed Critical Panasonic Corp
Priority to JP2010134528A priority Critical patent/JP5548037B2/ja
Priority to PCT/JP2011/000432 priority patent/WO2011155097A1/ja
Priority to CN201180027800.7A priority patent/CN102934076B/zh
Publication of JP2011258147A publication Critical patent/JP2011258147A/ja
Priority to US13/692,141 priority patent/US9436464B2/en
Application granted granted Critical
Publication of JP5548037B2 publication Critical patent/JP5548037B2/ja
Expired - Fee Related 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3802Instruction prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions

Description

本発明は、複数スレッドを実行可能なプロセッサアーキテクチャに関するものである。
単一スレッドの実行時には、様々な要因(命令キャッシュミス、データキャッシュミス、命令間ペナルティ等)によってプロセッサがストールする。
このストールするサイクルによって、単一スレッドの実行時におけるプロセッサの実行効率(すなわち、スループット)が低下してしまう。
そこで、プロセッサの実行効率を向上させる為、複数のスレッドを同時に実行可能なアーキテクチャを有するマルチスレッドプロセッサが提案されている。
複数のスレッドを同時に実行可能なマルチスレッドプロセッサでは、例えばラウンドロビン方式を用いて、実行するスレッドを一定の時間間隔で切替えながらスレッドの実行を行う方式が知られてきた。
この場合、スレッド毎の処理に要する時間は、単一スレッド実行時よりも長くなるが、あるスレッドがストールしていても一定時間後には別のスレッドが実行される為、単一スレッド実行時と比較して全体のスループットが向上し、そのためプロセッサの実行効率が向上する。
しかしながら、複数スレッドの切替えの際に、単に一定の時間間隔でスレッドを切り替えたのでは、処理完了までの処理時間の見積もりが困難となり、実時間性が要求される分野での実用性が低い。また、スレッドの実行順序も最適ではないため、プロセッサの実行効率が悪い。
そこで、処理時間の見積もりや実行効率を向上させるスレッド切替えを実施する為に、特許文献1、2のような技術が提案されている。
特許文献1では、詳細な全体構成図を用いて、スレッドスケジューラの説明がなされている。この構成により、スレッドの優先度を考慮して、より優先度の高いスレッドの実行効率が高まる様にスレッドを選択する事が可能となる。
また、特許文献2では、スレッド内の命令発行グループをカウントし、スレッド処理に費やすサイクル数を計算し、優先度を考慮し、複数スレッドを効率的に切り替える技術に関して説明がなされている。
図12を用いて、より具体的に説明する。
図12は従来技術の命令発行制御装置を備えるマルチスレッドプロセッサの全体構成図を示す。
なお、本全体構成図は同時にNスレッドの実行が可能なマルチスレッドプロセッサを想定しているが、本質的に、実行可能なスレッドの数になんら限定されない。
図12に示すように、従来技術の命令発行制御装置を備えるマルチスレッドプロセッサは、命令キャッシュメモリ101と、命令フェッチ部102と、命令バッファ103と、命令発行制御装置104と、命令実行部107と、データキャッシュメモリ108と、レジスタファイル109とを備える。
命令キャッシュメモリ101は、命令フェッチ部の要求に基づき、命令を命令バッファ103へ供給する。要求された命令がキャッシュされていない場合、マルチスレッドプロセッサの外部にあるメインメモリ(図示なし)から命令を取得する。
命令フェッチ部102は、命令バッファ203の要求に従い、命令を命令キャッシュメモリ201から命令バッファ103へフェッチする。
命令バッファ103は、対応するスレッド毎にN個存在し、各スレッドが実行すべき命令の列を格納する。
命令発行制御装置104は、命令バッファ103に制御信号を送り、命令実行部107が次に実行すべき命令を命令グループとして発行する。
命令実行部107は、加算器や乗算器等、複数の演算器を含む処理部であり、命令バッファより発行された命令グループを実行する。
データキャッシュメモリ108は、命令実行部107の要求により、演算に必要なデータを命令実行部107へ供給する。データキャッシュメモリ108は、要求されたデータを格納していない場合には、マルチスレッドプロセッサの外部にあるメインメモリ(図示なし)から要求されたデータを取得した後、命令実行部107へ供給する。
レジスタファイル109は、対応するスレッド毎にN個存在し、各スレッドの命令実行に関するレジスタアクセスに対応する。すなわち、命令バッファ103に格納された各スレッドを実行することによって読み出し及び書き込みの対象とされるデータを保持するレジスタ群である。
命令発行制御装置104は、命令グループ化部105とスレッド選択部106を備える。
命令グループ化部105は、スレッド選択部106が選択したスレッドに対応する命令バッファ103内の命令のうち、命令バッファ内の依存関係に基づき、同時に実行できる1以上の命令を命令グループとしてグループ化する。
すなわち、選択されたスレッド毎に、同一サイクルに発行可能な命令を1つのグループとしてグループ化する。
スレッド選択部106は、あらかじめ決められ又は動的に変化する優先度に基づき、N個のスレッドの中から、次に実行すべきスレッドを決定する。
すなわち、図1に示す従来技術の命令発行制御装置104は、スレッド選択部106により予め決定され又は動的に変化する優先度により、実行するスレッドを決定する。また、実行するスレッドに対応する命令バッファ103に格納された命令列を発行可能なグループにグループ化して、命令実行部107へ発行する。
国際公開第2006/129767号 特開2008−123045号公報
しかしながら、従来のスレッド切替方式では、スレッドストールの発生によるマルチスレッドプロセッサのスループットの低下を十分に抑えることができないという課題があった。
より詳細には、図11を用いて説明する。
図11は、スレッドA801、スレッドB802及びスレッドC803の3つのスレッドに割り当てられた命令の実行タイミング及びストールタイミングを示す模式図である。
スレッドA801、スレッドB802、スレッドC803には、図に示すようにストールサイクルが発生する区間が予め存在しているものとする。
これらのスレッドを従来技術で実行した結果が、タイムチャート804、タイムチャート805及びタイムチャート806になる。
タイムチャート804は、スレッドA801による命令の実行タイミング及びストールタイミングを示す。
タイムチャート805は、スレッドB802による命令の実行タイミング及びストールタイミングを示す。
タイムチャート806は、スレッドC803による命令の実行タイミング及びストールタイミングを示す。
図11のタイムチャート804〜806に示すように、例えばスレッドA801にサイクル821が割り当てられた後、スレッドB802にサイクル822が割り当てられ、次にスレッドC803にサイクル823が割り当てられる。
更に、スレッドA801にサイクル824が割り当てられ、次にスレッドB802にサイクル825が割り当てられ、次にスレッドC803にサイクル826が割り当てられる。
また、サイクル831〜サイクル836の6サイクルは、各スレッドにサイクルが割り当てられたにも係らず、各スレッドがストールしている為、スレッド実行出来ないサイクルとなる。
図11では、サイクル831〜サイクル836の6サイクル分無駄になっている。
特許文献1では、キャッシュミスや分岐予測ミス等のストール時間を考慮してスレッドを切り替える事について言及されているが、それを実現するための処理に必要な制御線や具体的なアルゴリズムは開示されていない。また、依存関係を持つ命令間のペナルティを考慮したスレッド切替えに関しては、言及されていない。
特許文献2では、命令間ペナルティを考慮してスレッド制御を行うとの説明があるものの、具体的な制御方法に関しては言及されていない。
つまり、上記先行技術文献には、命令実行における様々な要因(命令/データキャッシュミス、命令間ペナルティ)に起因して発生するスレッドストールによって低下するマルチスレッドプロセッサのスループットを向上させるための具体的な技術が提案されていなかった。
本発明は、上記従来の問題点を解決するもので、スレッドストールの発生によるマルチスレッドプロセッサのスループットの低下を抑制することができる命令発行制御装置及びかかる命令発行制御装置を備えたマルチスレッドプロセッサを提供することを目的とする。
前記従来の課題を解決するために、本発明のある局面に係る命令発行制御装置は、実行中のスレッドの各々がストール中であるか否かを示すストール情報を管理するリソース管理部と、実行中のスレッドのうち、ストール中でないスレッドを選択するスレッド選択部と、選択されたスレッドから同時発行可能な命令が発行されるようにマルチスレッドプロセッサを制御する命令発行制御部とを備える。
この構成により、命令発行制御装置が備えるリソース管理部は、実行中のスレッドごとにストール中であるか否か及びストール中である場合にはあと何サイクルストールするかを管理できる。命令発行制御装置は、この管理情報を参照してストールするスレッドが実行されないように命令バッファから命令を発行する。その結果、スレッドストールの発生によるマルチスレッドプロセッサのスループットの低下を十分に抑えることができる命令発行制御装置を実現できる。
具体的には、リソース管理部は、実行中のスレッドの各々について、あと何サイクルストールするかを示すストールサイクル数を管理しており、ストールサイクル数が1以上であるか否かを判断し、ストールサイクル数が0ならスレッドはストール中でないと判断してストールサイクル識別情報を更新する。
また、本発明のある局面に係るマルチスレッドプロセッサは、命令実行部と命令発行制御装置とを備えたマルチスレッドプロセッサであって、命令発行制御装置は、実行中のスレッドの各々がストール中であるか否かを示すストール情報を管理するリソース管理部と、実行中のスレッドのうち、ストール中でないスレッドを選択するスレッド選択部と、選択されたスレッドから同時発行可能な命令が命令実行部へ発行されるよう制御する命令発行制御部とを備える。
この構成により、命令発行制御装置が備えるリソース管理部は、実行中のスレッドごとにストール中であるか否か及びストール中である場合にはあと何サイクルストールするかを管理できる。命令発行制御装置は、この管理情報を参照してストールするスレッドが実行されないように命令を発行する。その結果、スレッドストールの発生によるスループットの低下が十分に抑えられたマルチスレッドプロセッサを実現できる。
具体的には、リソース管理部は、実行中のスレッドの各々について、あと何サイクルストールするかを示すストールサイクル数を管理しており、ストールサイクル数が1以上であるか否かを判断し、ストールサイクル数が0ならスレッドはストール中でないと判断してストールサイクル識別情報を更新する。
より具体的には、リソース管理部は、ストール情報としてのスレッドレディフラグを保持する第1フラグ保持部と、ストールサイクル数を管理するためのカウンタである第1カウンタとを備え、第1カウンタが1以上であれば、スレッドレディフラグを0にセットし、第1カウンタが0であれば、スレッドレディフラグを1にセットする。
さらに、マルチスレッドプロセッサは、複数スレッドの各々の命令列を格納する複数の命令バッファを備え、命令発行制御部は、複数の命令バッファに格納された命令のうち、次に命令実行部に発行されるべき同時発行が可能な1以上の命令を命令グループとしてグループ化する命令グループ化部を備えており、命令グループ化部は、複数の命令バッファに格納された命令のうち、命令実行部で実行中である命令と依存関係をもたない命令を優先して命令グループに含めるようにグループ化を行う。
これにより、実行中の命令と依存関係をもつ命令を実行してスレッドがストールすることを回避し、その結果、実行効率を高めたマルチスレッドプロセッサを実現できる。
具体的には、リソース管理部は、実行中のスレッドの各々が、共有リソースの各々を現在占有しているか否かを示すリソースレディフラグを保持する第2フラグ保持部と、実行中のスレッドの各々が、共有リソースの各々を占有する残りサイクル数を示す第2カウンタとを有しており、命令グループ化部は、複数の命令バッファに格納された命令のうち、現在占有されている共有リソースを使用する命令が命令グループに含まれないようにグループ化を行う。
また、命令グループ化部は、現在占有されている共有リソースの識別情報及び共有リソースを占有するスレッドの識別情報を、リソース管理部に通知し、リソース管理部は、通知された共有リソースに対応する第2カウンタに応じて、通知された識別情報に対応するスレッドの第1カウンタを更新する。
また、命令グループ化部は、複数の命令バッファに格納された命令が命令実行部で既に実行されている命令と依存関係を有する場合には、命令バッファに格納された命令が属する実行中のスレッドの識別情報及び、既に実行されている命令の残り実行サイクル数をリソース管理部に通知し、リソース管理部は、通知された残り実行サイクル数に応じて識別情報に対応するスレッドの第1カウンタを更新する。
また、マルチスレッドプロセッサは、命令実行部が用いるデータを保持するデータキャッシュメモリを備えており、命令実行部は、データキャッシュミスが発生した場合に、実行中のスレッドの識別情報及び、データキャッシュミスが生じたデータをマルチスレッドプロセッサの外部にあるメインメモリからデータキャッシュメモリへ転送するのに要するサイクル数をリソース管理部へ通知し、リソース管理部は、通知されたサイクル数に応じて識別情報に対応するスレッドの第1カウンタを更新する。
また、マルチスレッドプロセッサは、命令キャッシュメモリと、命令キャッシュメモリから命令を取得し、取得した命令を命令バッファへ供給する命令フェッチ部とを備えており、命令フェッチ部は、命令をフェッチする際に命令キャッシュミスが発生した場合に、実行中のスレッドの識別情報及び、命令キャッシュミスが生じた命令をマルチスレッドプロセッサの外部にあるメインメモリから命令キャッシュメモリへ転送するのに要するサイクル数をリソース管理部へ通知し、リソース管理部は、通知されたサイクル数に応じて識別情報に対応するスレッドの第1カウンタを更新する。
また、命令実行部は、分岐命令を実行する場合には、その分岐先アドレスが確定するまでに要するサイクル数及び分岐命令が属するスレッドの識別情報をリソース管理部に通知し、リソース管理部は、通知されたサイクル数に応じて識別情報に対応するスレッドの第1カウンタを更新する。
これにより、さらに分岐命令の実行にともない発生するストールサイクルもリソース管理部で管理し、ストールするスレッドを実行スレッドとして選択しないことにより、実行効率を高めたマルチスレッドプロセッサを実現できる。
また、マルチスレッドプロセッサは、バスコントロールユニットを備え、バスコントロールユニットは、命令キャッシュメモリ、データキャッシュメモリ、及びマルチスレッドプロセッサの外部にあるメインメモリとそれぞれ接続されており、命令キャッシュメモリ及びデータキャッシュメモリでキャッシュミスが生じた時に、バスコントロールユニットが既に占有されている場合には、バスコントロールユニットは、現在の占有があと何サイクル継続するかを示す残り占有サイクル数をリソース管理部へ通知し、リソース管理部は、通知された残り占有サイクル数に応じて第1カウンタを更新する。
これにより、同一のバスコントロールユニットに接続された他の要素(DSP等)がバスコントロールユニットを占有している場合の占有時間をリソース管理部が管理することができ、その結果、より正確にストールサイクル数を管理し、マルチスレッドプロセッサのスループットを改善することができる。
なお、リソース管理部は、実行中のスレッドの各々について、第1カウンタが示す値よりも大きいストールサイクル数が通知された場合にのみ、第1カウンタが示す値を通知されたストールサイクル数で上書きする。
また、リソース管理部は、マルチスレッドプロセッサの1サイクル動作毎に、第1カウンタ及び第2カウンタが示す値から事前に定められた特定の値を減ずる。
また、本発明の他の局面に係るマルチスレッドプロセッサは、命令発行制御部は、さらに、分岐予測器を備えており、分岐予測器は、命令実行部が分岐命令の実行を完了する前に分岐先アドレスを予測し、予測アドレスを用いて分岐命令を実行するとともに、分岐先アドレスの予測が外れることにより発生する可能性があるストールサイクル数をリソース管理部に通知し、リソース管理部は、通知を受けた場合には、第1カウンタが示す値に通知されたストールサイクル数を加算する。
これにより、分岐予測器の分岐予測が外れることで発生する分岐予測ミスペナルティに起因したストールサイクルを事前にリソース管理部で管理することができ、分岐予測のミスに起因したストールサイクルを隠蔽する事が可能となる。
また、本発明の他の局面に係るマルチスレッドプロセッサは、1サイクル動作で複数の命令グループを同時に命令実行部へ発行するSMT(Simultaneous Multi Threading)方式のマルチスレッドプロセッサであって、マルチスレッドプロセッサは、命令発行制御装置を備えており、命令発行制御装置は、実行中のスレッドの各々がストール中であるか否かを示すストール情報を管理するリソース管理部と、実行中のスレッドのうち、ストールしていないスレッドを選択するスレッド選択部と、選択されたスレッドの各々に属する複数の命令グループを同時に命令実行部へ発行するよう制御する命令グループ化部とを備える。
これにより、SMT方式のマルチスレッドプロセッサにおいても、ストールサイクルを管理することによりストールするスレッドを実行対象から除くことができ、マルチスレッドプロセッサのスループットを向上させることができる。
なお、本発明は、このような命令発行制御装置及びマルチスレッドプロセッサとして実現できるだけでなく、命令発行制御装置及びマルチスレッドプロセッサに含まれる特徴的な手段をステップとする命令発行制御方法として実現することもできる。
以上より、本発明は、スレッドストールの発生によるマルチスレッドプロセッサのスループットの低下を抑制することができる命令発行制御装置及びかかる命令発行制御装置を備えたマルチスレッドプロセッサを提供することができる。
図1は、本発明の実施の形態1における命令発行制御装置を備えたマルチスレッドプロセッサの全体構成図である。 図2は、本発明の実施の形態1におけるリソース管理テーブルの詳細を示す図である。 図3は、本発明の実施の形態1における第1カウンタの書換えアルゴリズムの処理の流れを示すフローチャートである。 図4は、本発明の実施の形態1における第2カウンタの書換えアルゴリズムの処理の流れを示すフローチャートである。 図5は、本発明の実施の形態1における命令発行制御部の機能を説明する図である。 図6は、本発明の実施の形態1における命令グループ化部による命令のグループ化、及び命令間ペナルティによる第1カウンタの上書きを行うためのアルゴリズムを説明するフローチャートである。 図7は、本発明の実施の形態1における効果を説明する模式図である。 図8は、実施の形態1の変形例におけるバスコントロールユニットを説明する模式図である。 図9は、本発明の実施の形態2における分岐予測器を含むマルチスレッドプロセッサの全体構成図である。 図10は、本発明の実施の形態3におけるマルチスレッドプロセッサの全体構成図である。 図11は、従来技術の命令発行制御装置を用いた場合の命令の実行タイミングを示す模式図である。 図12は、従来技術の命令発行制御装置を備えたマルチスレッドプロセッサの全体構成図である。
(実施の形態1)
以下、本発明の実施の形態1における命令発効制御装置、及び命令発行制御装置を備えたマルチスレッドプロセッサについて、図面を参照しながら説明する。
図1は、本発明の実施の形態1における命令発行制御装置を備えたマルチスレッドプロセッサ100の全体構成図である。
従来技術からの変更点は、リソース管理部210を追加した点と、それに伴うスレッド選択部206及び命令グループ化部205の処理内容を変更した点である。
図1に示すように、マルチスレッドプロセッサ100は、命令キャッシュメモリ201と、命令フェッチ部202と、命令バッファ203と、命令発行制御装置220と、命令実行部207と、データキャッシュメモリ208と、レジスタファイル209とを備える。
命令キャッシュメモリ201は、命令フェッチ部202の要求に基づき、命令を命令バッファ203へ供給する。要求された命令がキャッシュされていない場合、マルチスレッドプロセッサ100の外部にあるメインメモリ904(後述する図8参照)から命令を取得する。
命令フェッチ部202は、命令バッファ203の要求に従い、命令を命令キャッシュメモリ201から命令バッファ203へフェッチする。
命令バッファ203は、対応するスレッド毎にN個存在し、各スレッドが実行すべき命令の列を格納する。
例えば、マルチスレッドプロセッサ100がN個のスレッドを実行できる場合、第1命令バッファ〜第N命令バッファまでの合計N個の命令バッファがあるものとする。なお、ここでは原則として、N個の命令バッファを総称して命令バッファ203と記載する。
命令発行制御装置220は、命令バッファ203に制御信号を送り、命令実行部207が次に実行すべき、同時発行可能な1以上の命令を命令グループとして発行させるよう制御する。
命令実行部207は、加算器や乗算器等、複数の演算器を含む処理部であり、命令バッファ203より発行された、同時発行可能な1以上の命令からなる命令グループを実行する。
データキャッシュメモリ208は、命令実行部207の要求により、演算に必要なデータを命令実行部207へ供給する。
データキャッシュメモリ208は、要求されたデータを格納していない場合には、マルチスレッドプロセッサ100の外部にあるメインメモリ904(後述する図8参照)から要求されたデータを取得した後、命令実行部207へ供給する。
レジスタファイル209は、対応するスレッド毎にN個存在し、各スレッドの命令実行に関するレジスタアクセスに対応する。すなわち、命令バッファ203に格納された各スレッドを実行することによって読み出し及び書き込みの対象とされるデータを保持するレジスタ群である。
命令発行制御装置220は、命令グループ化部205と、スレッド選択部206と、リソース管理部210とを備える。
命令グループ化部205は、スレッド選択部206により選択されたスレッドに対応する命令バッファ203内の命令列から、リソース管理部210の情報と、命令バッファ203内の依存関係とに基づき、次に命令実行部207に発行すべき同時発行可能な1以上の命令を命令グループとしてグループ化する。
スレッド選択部206は、予め決められたもしくは動的に変化する優先度と、リソース管理部210の情報を用いて、次に実行すべきスレッドを決定する。
リソース管理部210は、リソーステーブルを管理する。リソーステーブルは、マルチスレッドプロセッサ100が実行可能なスレッド毎に対応して存在する。例えば、マルチスレッドプロセッサ100がNスレッドを実行可能であれば、第1リソーステーブルから第NリソーステーブルまでのN個のリソーステーブルが存在する。
リソース管理部210は、命令実行部207,命令バッファ203及び命令フェッチ部202からの情報を受理し、(1)各スレッドが共有リソースを占有しているか否か、(2)占有している場合には共有リソースが開放されるまでの残りサイクル数、(3)スレッドがストールしているか否か、及び(4)ストールしている場合には残りストールサイクル数、を対応するリソーステーブルを用いて管理する。
すなわち、マルチスレッドプロセッサ100が備える命令発行制御装置220は、実行中のスレッドの各々がストール中であるか否かを示すストール情報を管理するリソース管理部210と、実行中のスレッドのうち、ストール中でないスレッドを選択するスレッド選択部206と、選択されたスレッドから同時発行可能な命令が発行されるようにマルチスレッドプロセッサ100を制御する命令発行制御部204とを備えている。
ここで、実行中のスレッドとは、既に命令バッファ203に読み込まれているスレッドを意味する。本実施の形態では、第1命令バッファから第N命令バッファまでN個の命令バッファがあるので、それに対応して最大でN個のスレッドが実行中となりうる。
言い換えれば、命令発行制御装置220は、命令バッファ203に格納されているストール中でないスレッドに属する複数の命令のうち、同時発行可能な命令を、命令バッファ203から命令実行部207に発行する。
また、リソース管理部210は、実行中のスレッドの各々について、あと何サイクルストールするかを示すストールサイクル数を管理している。リソース管理部210はストールサイクル数が1以上であるか否かを判断し、ストールサイクル数が1以上ならスレッドはストール中であると判断して、対応するリソーステーブルのストール情報を更新する。
一方、ストールサイクル数が0ならスレッドはストール中でないとリソース管理部210は判断して、対応するリソーステーブルのストールサイクル識別情報を更新する。
具体的には、リソース管理部210は、ストール情報としてのスレッドレディフラグを保持する第1フラグ保持部304と、ストールサイクル数を管理するためのカウンタである第1カウンタ303とを備えている。
リソース管理部210は、第1カウンタ303が1以上であれば、スレッドレディフラグを0にセットし、第1カウンタ303が0であれば、スレッドレディフラグを1にセットする。
また、マルチスレッドプロセッサ100は、複数スレッドの各々の命令列を格納する複数のバッファを有する命令バッファ203を備えており、命令発行制御部204は、命令バッファ203に格納された命令のうち、次に命令実行部207に発行されるべき同時発行が可能な1以上の命令を命令グループとしてグループ化する命令グループ化部205を備えている。
ここで、命令グループ化部205は、複数のバッファを有する命令バッファ203に格納された命令のうち、命令実行部207で実行中である命令と依存関係をもたない命令を優先して命令グループに含めるようにグループ化を行う。
さらにまた、リソース管理部210は、実行中のスレッドの各々が共有リソースの各々を現在占有しているか否かを示すリソースレディフラグを保持する第2フラグ保持部306と、実行中のスレッドの各々が共有リソースの各々を占有する残りサイクル数を示す第2カウンタ305とを有している。
ここで、命令グループ化部205は、複数のバッファを有する命令バッファ203に格納された命令のうち、現在占有されている共有リソースを使用する命令が、命令実行部207へ発行される命令グループに含まれないようにグループ化を行う。
また、命令グループ化部205は、現在占有されている共有リソースの識別情報及び共有リソースを占有するスレッドの識別情報を、リソース管理部210に通知し、リソース管理部210は、通知された共有リソースに対応する第2カウンタ305に応じて、通知された識別情報に対応するスレッドの第1カウンタ303を更新する。
また、命令グループ化部205は、命令バッファ203に格納された命令が命令実行部207で既に実行されている命令と依存関係を有する場合には、命令バッファ203に格納された命令が属する実行中のスレッドの識別情報及び、既に実行されている命令の残り実行サイクル数をリソース管理部に通知する。
その後、通知を受けたリソース管理部210は、通知された残り実行サイクル数に応じて、通知された識別情報に対応するスレッドの第1カウンタを更新する。
また、命令実行部207は、データキャッシュミスが発生した場合には、実行中のスレッドの識別情報及び、データキャッシュミスが生じたデータをマルチスレッドプロセッサ100の外部にあるメインメモリ904からデータキャッシュメモリ208へ転送するのに要するサイクル数をリソース管理部210へ通知する。
その後、リソース管理部210は、通知されたサイクル数に応じて、通知された識別情報に対応するスレッドの第1カウンタ303を更新する。
また、命令フェッチ部202は、命令をフェッチする際に命令キャッシュミスが発生した場合に、実行中のスレッドの識別情報及び、命令キャッシュミスが生じた命令をマルチスレッドプロセッサ100の外部にあるメインメモリ904から命令キャッシュメモリ201へ転送するのに要するサイクル数をリソース管理部210へ通知する。
次に、リソース管理部210は、通知されたサイクル数に応じて、通知された識別情報に対応するスレッドの第1カウンタ303を更新する。
また、命令実行部207は、分岐命令を実行する場合には、その分岐先アドレスが確定するまでに要するサイクル数及び、その分岐命令が属するスレッドの識別情報をリソース管理部210に通知し、リソース管理部210は通知されたサイクル数に応じて、通知された識別情報に対応するスレッドの第1カウンタ303を更新する。
なお、リソース管理部210は、実行中のスレッドの各々について、第1カウンタ303が示す値よりも大きいストールサイクル数が通知された場合にのみ、第1カウンタ303が示す値を通知されたストールサイクル数で上書きする。
また、リソース管理部210は、マルチスレッドプロセッサ100の1サイクル動作毎に、第1カウンタ303及び第2カウンタ305が示す値から事前に定められた特定の値を減ずる。
以下、より詳細に説明する。
図2は、本発明の実施の形態1におけるリソース管理テーブルの詳細を示す図である。
リソース管理部210は、N個(マルチスレッドプロセッサ100が実行するスレッド数をN個とする場合。以下同様)のスレッドに対応したN個のリソーステーブルから構成される。
全てのリソーステーブルの構成は同じであるため、ここでは第Nリソーステーブル302を用いて説明する。
第Nリソーステーブル302は、第1カウンタ303と、第1フラグ保持部304と、第2カウンタ305と、第2フラグ保持部306とを備える。
第1カウンタ303は、スレッドがストールするサイクル数を示すスレッドストールサイクル321を保持するカウンタである。
第1フラグ保持部304は、スレッドが実行可能であることを示すスレッドレディフラグ311を保持する。
スレッドストールサイクル321が1以上の場合には、スレッドレディフラグ311は0であり、スレッドが実行不可能であることを示す。
また、スレッドストールサイクル321が0の場合には、スレッドレディフラグ311は1であり、スレッドが実行可能であることを示す。
第2カウンタ305は、共有リソースへのデータ書き込みを実行する命令により共有リソースへデータが書き込まれている場合、その書き込み命令が完了するまでのプロセッサの残りサイクル数を示すカウンタ(以後、命令実行サイクルともいう)を共有リソース毎に保持する。即ち各共有リソースへの書込完了迄のプロセッサのサイクル数を保持する。
第2フラグ保持部306は、共有リソースが利用可能であることを示すリソースレディフラグを保持する。リソースレディフラグは、命令実行サイクルが1以上の場合には0であり共有リソースが使用不可能であること、及び命令実行サイクルが0の場合には1であり共有リソースが使用可能であることを示す。
なお、リソースレディフラグ及び命令実行サイクルは、共有リソースの数だけ保持される。本実施の形態では、M個の共有リソースに対応し、第1リソースレディフラグ312から第Mリソースレディフラグ315及び第1命令実行サイクル322から第M命令実行サイクル325が、第2フラグ保持部306及び第2カウンタ305に、それぞれ保持されている。
なお、第1カウンタ303、第1フラグ保持部304、第2カウンタ305、第2フラグ保持部306は、例えばプロセッサ内のレジスタにより実現することができる。
図3は、本発明の実施の形態1における第1カウンタ303の書換えアルゴリズムの処理の流れを示すフローチャートである。
図1の全体構成図に示すように、リソース管理部210は、命令実行部207、命令フェッチ部202、命令発行制御部204から制御信号を受け、各々データキャッシュミス、命令キャッシュミス、命令間ペナルティ等のスレッドがストールするイベント情報が入力される。イベント情報にはイベント固有のストールサイクル数が含まれており、このストールサイクル数も同時に、リソース管理部210へ通知される(S401)。
例えば、命令実行部207にデータキャッシュミス、命令フェッチ部202に命令キャッシュミス、命令発行制御部204(が備える命令グループ化部205)に命令間ペナルティのイベントが各々発生した場合、命令実行部207、命令フェッチ部202及び命令グループ化部205は各々、発生したスレッド等の識別情報及びストールサイクル数をリソース管理部210に通知する。
リソース管理部210は通知されたイベントのストールサイクル数と、既に第1カウンタ303内に格納されているスレッドストールサイクル321との比較を行う(S402)。そして、新たに通知されたイベントのストールサイクル数の方が大きい場合には、リソース管理部210は、既に第1カウンタ303に格納されているスレッドサイクル321を、新たに通知されたイベントのサイクル数で上書きする(S403)。
また、新たに通知されたイベントのストールサイクル数の方が小さい場合には、リソース管理部210は既に第1カウンタ303に格納されているスレッドサイクル数を変更せず、そのまま保持する(S404)。
上述の様なアルゴリズムにより、リソース管理部210は、各スレッドに対応したスレッドストールサイクルを管理する。
図4は、本発明の実施の形態1における第2カウンタ305の書換えアルゴリズムの処理の流れを示すフローチャートである。
リソース管理部210は、まず命令発行制御部204から、実行される命令の実行サイクル数と、命令が定義する使用共有リソースを通知される(S501)。
次に、リソース管理部210は新たに通知された実行サイクル数が、2以上であるかを判定する(S502)。
新たに通知された実行サイクル数が、2未満である場合、その命令が使用すると定義されている共有リソースは命令実行後、直ちに使用可能であるので、第2カウンタ305にて管理する必要はない。従ってリソース管理部210は第2カウンタ305を更新しない(S503)。
新たに通知された実行サイクル数が、2以上である場合、その命令が使用すると定義されている共有リソースは命令実行後1サイクル以上完了を待たなければ使用できない。従って、この実行サイクル数は第2カウンタ305によって管理される必要がある。
ここで、新たに通知された実行サイクル数をSとし、命令完了サイクル数をS−1と定義する。リソース管理部210は、この命令完了サイクル数S−1が、対応する共有リソースの第2カウンタ305に保持された命令実行サイクルよりも大きいか否かを判定する(S504)。
もし、第2カウンタ305が保持する命令実行サイクルの方が、S−1よりも大きい場合には、リソース管理部210は、既存の命令実行サイクルをそのまま保持する(S505)。
また、S−1が、第2カウンタ305が保持する命令実行サイクルよりも大きい場合には、リソース管理部210は、対応する第2カウンタ305を命令完了サイクルS−1で上書きする(S506)。
共有リソースが命令により使用されることが事前に定義されている場合には、リソース管理部210は上記アルゴリズムにより、対応する共有リソースを使用する命令の実行が完了するまでのサイクル数を第2カウンタ305に保持し、その共有リソースが使用不可である事を管理する。
図5は、本発明の実施の形態1における命令発行制御部204の機能を説明する図である。
既に説明した様に、命令発行制御部204は、命令グループ化部205と、スレッド選択部206とを備える。
ここで、命令グループ化部205は、命令バッファ203に格納された命令列を、リソース管理部210内の第2フラグ保持部306及び命令バッファ203内の命令間の依存関係に基づき、同時発行可能な命令グループとしてグループ化する機能を有する。
更に命令バッファ203に格納された命令間の命令間ペナルティを検出し、そのペナルティサイクルをスレッドストールサイクルとして、リソース管理部210に登録する機能も有する。
次に、図6を用いて、上記リソース管理部210による命令の選択、及び命令間ペナルティによりスレッドストールサイクルを上書きするアルゴリズムを説明する。
図6は、本発明の実施の形態1における命令グループ化部205による命令のグループ化、及び命令間ペナルティによる第1カウンタの上書きを行うためのアルゴリズムを説明するフローチャートである。
まず、命令グループ化部205により、命令バッファ203に格納された命令列の内、同時発行可能な複数個の命令候補が選択され、その命令が使用する共有リソースが検出される(S701)。
次に、命令グループ化部205は、選択された命令候補間又は命令候補とリソース管理部210が管理する共有リソースとの間に依存関係があるかをチェックする(S702)。
選択された命令候補各々が、命令候補間及びリソース管理部210が管理する共有リソースの何れとも依存関係がない場合には、命令グループ化部205は、命令候補全てを命令グループとしてグループ化し、命令を発行するよう命令バッファ203へ制御信号を送り制御する(S703)。
一方、命令候補間、あるいは命令候補とリソース管理テーブル、何れかに依存関係がある場合には、命令グループ化部205は、依存関係のある直前の命令迄の命令候補を命令グループとしてグループ化し、発行するよう制御する(S704)。
さらに、依存関係に起因する命令間ペナルティサイクル分、スレッドがストールするとして、命令グループ化部205は、リソース管理部210に通知する(S705)。
その通知は図3に示す、第1カウンタ303の書換えアルゴリズムを用いて、リソース管理部210により処理される。
次に、スレッド選択部206の機能について、再び図5を用いて説明する。
スレッド選択部206は、リソース管理部210の第1フラグ保持部304からスレッドレディフラグの値を取得する。スレッド選択部206は、スレッドレディフラグの値が1であるスレッドに限り、次に実行すべきスレッドの選択候補とする。
上記の様な制御をする事で、命令発行制御部204は、ストール状態にあるスレッドを選択・発行する事がなく、常にレディ状態のスレッドを選択・発行し続けるので、マルチスレッドプロセッサのスループットが向上する。
図7は、本発明の実施の形態1における効果を説明する模式図である。
なお、図11と同じ内容を示す図には同一の符号を付し、詳しい説明を省略する。
スレッドA801、スレッドB802、スレッドC803には、図に示すようにストールサイクルが発生する区間が予め存在しているものとする。
これらのスレッドを本実施の形態における命令発行制御装置220を備えたマルチスレッドプロセッサ100で実行した結果が、タイムチャート807、タイムチャート808及びタイムチャート809になる。
図11に示したように、既存技術では、スレッドAの実行結果804、スレッドBの実行結果805、スレッドCの実行結果806各々において、ストールサイクルが2サイクル発生する。
この結果は、スレッド実行全体の25%がストールしている事を意味する。
一方、本実施の形態における命令発行制御装置220を備えたマルチスレッドプロセッサ100で同じスレッドを実行した結果であるタイムチャート807からタイムチャート809では、ストールサイクルが1サイクルも発生していない。
これは、命令発行制御装置220は各スレッドがストールしている間、そのスレッドを発行の選択候補としないためである。
その結果として、従来技術に対して、本実施の形態における命令発行制御装置220を備えたマルチスレッドプロセッサ100では、全体のスループットが25%向上する事が確認出来る。
(変形例)
次に、実施の形態1の変形例に係る命令発行制御装置220及びマルチスレッドプロセッサ100について説明する。
本変形例では、キャッシュミス等のペナルティがバスのアクセス状況によって変化する場合の対処方法を示す。
図8は、本変形例におけるバスコントロールユニット903を説明する模式図である。
図8に示すように、バスコントロールユニット903には、バスを介して、命令キャッシュメモリ201、データキャッシュメモリ208、プロセッサ外のメインメモリ904が接続されている。バスコントロールユニット903には、さらにDSP(Digital Signal Processor)905、他のCPU(Central Processing Unit)906、DMAC907(Direct Memory Access Controller)が接続されている。
バスコントロールユニット903は、バスを制御する制御チップである。バスコントロールユニット903は、例えばメインメモリ904から命令キャッシュメモリ201へ命令を転送し、またメインメモリ904からデータキャッシュメモリ208へデータを転送する。
メインメモリ904は、例えばマルチスレッドプロセッサ100が命令実行部207で実行する命令やデータを外部記憶から一時的に読み込み、保持する記憶部である。メインメモリ904はRAM(Random Access Memory)等である。
DSP905は、デジタル信号処理に特化したマイクロプロセッサである。
DMAC907は、CPUを介さずに,入出力機器とメモリ間でバスを通じて直接データをやりとりするDMA(Direct Memory Access)を実現するためのコントローラである。
ここで、命令キャッシュメモリ201及びデータキャッシュメモリ208でキャッシュミスが生じた時に、バスコントロールユニット903が既に(例えば他のCPUやDPS等の処理装置によって)占有されている場合には、バスコントロールユニット903は、現在の占有があと何サイクル継続するかを示す残り占有サイクル数をリソース管理部210へ通知する。
次に、リソース管理部210は、通知された残り占有サイクル数に応じて第1カウンタを更新する。
以上述べたことを、より具体的に説明する。
実施の形態1では、命令キャッシュミス、及びデータキャッシュミスのペナルティは各々固定のペナルティサイクルとしていた。
しかし、バスコントロールユニット903には、図8に示すように、他の要素であるDSP905、他のCPU906、DMAC907等が接続されている場合もある。この場合、例えば命令キャッシュメモリ201から命令転送の要求をバスコントロールユニット903に送ったとしても、他の要素がバスコントロールユニット903を占有している限りは、命令の転送は開始されない。
即ち、他の要素がバスコントロールユニット903を占有しているサイクル数+メインメモリ904から命令キャッシュメモリ201への転送サイクルを、リソース管理部210の第1カウンタ303に書き込む事で、実際に命令キャッシュへの転送が完了する迄のサイクル数を管理したスレッド制御が可能となる。
以上述べたように、本変形例に係るマルチスレッドプロセッサ100においては、同一のバスコントロールユニット903に接続された他の要素(DSP905等)がバスコントロールユニット903を占有している場合の占有時間をリソース管理部210が管理することによって、より正確にストールサイクル数を管理し、マルチスレッドプロセッサ100のスループットを改善することができる。
(実施の形態2)
次に、本発明の実施の形態2における命令発行制御装置220及びマルチスレッドプロセッサ300について説明する。
本実施の形態において、命令発行制御部204が分岐予測器を備えるマルチスレッドプロセッサ300は、ストールサイクル数を管理し、スループットを向上させることができる。
図9は、本実施の形態における分岐予測器1005を含むマルチスレッドプロセッサ300の全体構成図である。なお、図1と同じ構成要素については同一の符号を付け、詳細な説明は省略する。
図9に示すマルチスレッドプロセッサ300と、図1に示したマルチスレッドプロセッサ100との違いは、図9に示すマルチスレッドプロセッサ300が備える命令発行制御装置220には、分岐予測器1005が追加されている点である。
すなわち、命令発行制御部204は、さらに、分岐予測器1005を備えており、分岐予測器1005は、命令実行部207が分岐命令の実行を完了する前に分岐先アドレスを予測し、予測したアドレスを用いて分岐命令を実行するとともに、分岐先アドレスの予測が外れることにより発生する可能性があるストールサイクル数をリソース管理部210に通知する。
リソース管理部210は、分岐予測器1005から分岐先アドレスを予測した旨の通知を受けた場合には、第1カウンタ303が示す値に通知されたストールサイクル数を加算する。
次に、より詳細に説明する。
一般的に、分岐命令が実行されると、その分岐先アドレスが確定する迄にペナルティサイクルが発生し、そのペナルティサイクルの間は後続の命令を発行する事が出来ない。その結果、命令実行部207はストールし、実行効率が低下する。
分岐予測器1005は、命令実行部207が分岐命令の実行を完了する前に分岐先アドレスを予測し、分岐命令実行のペナルティサイクルを隠蔽するための機構である。
分岐予測器1005は、命令バッファ203から分岐命令を発行する際にその分岐先アドレスを予測し、分岐先アドレスに指定された命令を投機的にフェッチさせて実行する。
よって、分岐予測器1005の予測が正しい場合、分岐命令実行のペナルティは隠蔽される。しかし、分岐予測器1005の分岐予測が外れた場合には、分岐予測器1005は、投機的に実行した命令をキャンセルし分岐予測前の状態から命令を再実行させる必要がある。
従って、分岐予測器1005による分岐予測が外れた場合には結局分岐命令実行相当分のペナルティが発生してしまう。
この予測ミスに伴うペナルティを隠蔽する為に、本実施の形態におけるマルチスレッドプロセッサ300が備える分岐予測器1005は、分岐予測をした際に、分岐予測が外れたことに起因して発生する可能性のあるスレッドのストールサイクルをリソース管理部210へ通知する。
上記の様に、分岐予測時にスレッドがストールする可能性があるとし、スレッドをストールさせる可能性のあるサイクル数をリソース管理部210が有する第1カウンタ303に加算する事で、分岐予測ミスペナルティに起因するストールサイクルを隠蔽する事が可能となる。
なお、第1カウンタ303の更新に関しては、分岐予測器1005の予測精度及び分岐命令の種類(通常分岐、間接分岐)によって、更新アルゴリズムを適宜変更する事でマルチスレッドプロセッサ300のスループットをより向上させる事が可能となる。
例えば、分岐予測器1005は前回の分岐命令予測が正しかったか否かを記憶し、前回の予測が正しかった場合には、前回の予測を間違った場合よりも少ないストールサイクル数をリソース管理部210に通知することが考えられる。
また、分岐予測器1005は、分岐命令が通常分岐であれば、間接分岐よりも少ないストールサイクル数をリソース管理部210に通知することや、逆に、間接分岐よりも多いストールサイクル数をリソース管理部210に通知することも考えられる。
以上述べた本実施の形態にかかる分岐予測器1005を備えたマルチスレッドプロセッサ300により、分岐予測器1005の分岐予測が外れることで発生する分岐予測ミスペナルティに起因したストールサイクルを隠蔽する事が可能となる。
(実施の形態3)
次に、本発明の実施の形態3における命令発行制御装置220及びマルチスレッドプロセッサ400について説明する。
本実施の形態に係るSMT(Simultaneous Multithreading)機能を有するマルチスレッドプロセッサ400は、ストールサイクル数を管理することにより、スループットが向上する。
図10は、本実施の形態におけるマルチスレッドプロセッサ400の全体構成図である。なお、図1と同じ構成要素については同一の符号を付け、詳細な説明は省略する。
本実施の形態において新規に追加された構成要素は、命令実行チェック部1105である。
実施の形態1の説明で述べたとおり、命令実行部207には、命令グループ化部205によりグループ化された同時実行可能な1以上の命令からなる命令グループが発行される。
ここで、命令グループ化部205がグループ化する命令は、命令実行部207が備える演算ユニットの構成に基づき決定される。
より具体的に、命令実行部207が備える演算ユニットが、整数演算ユニット2個、メモリアクセスユニット1個、分岐ユニット1個で構成される場合を考える。
この場合、最も優先度の高いスレッドにて整数演算ユニットを使用する3命令で構成される命令列があったとしても、整数演算ユニットが2個しかないため、命令グループ化部205は、2命令で構成される命令列からなる命令グループとしてグループ化してしまう。
逆に、命令グループ化部205が、(同一のスレッドに属する命令間の依存関係により)整数演算ユニットを使用する1命令で構成されるグループをグループ化する場合には、整数演算ユニット及びそれ以外のユニットに空きがあるにも係わらず、1つの整数演算ユニットを使用する命令グループが発行される。
その結果、命令実行部207の処理効率が低下するという課題が生じる。
本実施の形態におけるマルチスレッドプロセッサ400は、上記課題を、命令実行チェック部1105を設ける事で解決する。
具体的には、レディ状態のスレッドから優先度順に実行すべきスレッドを決定する手順を以下の通りに行う。
まず、命令グループ化部205は最優先のスレッドに属する命令をグループ化する。
次に、命令実行チェック部1105は、命令実行部207が有する演算ユニットに空きがあるか否かをチェックする。
もし、空きがある場合には、スレッド選択部206が次の優先度のスレッドを選択した後、そのスレッドに属する命令のうち先の命令グループと同時に(すなわち、同一サイクルで)発行可能な1以上の命令があれば、命令グループ化部205は、その命令をあらたな命令グループとしてグループ化し、命令実行部207へ発行するよう制御する。
上記操作を命令発行の最大幅に到達、もしくは命令実行部207が有する演算ユニットの数の最大値、もしくはレディ状態にあるスレッドが無くなるまで繰り返す事で、同一発行サイクルに異なるスレッドの命令グループを発行する事が出来る。
一般的に上記技術は、SMTとして知られているが、本実施の形態ではリソース管理部210が有する第1フラグ保持部304のスレッドレディフラグを考慮してスレッド選択部206がスレッドの選択を行う。
さらに、リソース管理部210が有する第2フラグ保持部306のリソースレディフラグを考慮して、命令グループ化部205が命令のグループ化をする事に特徴がある。
すなわち、1サイクル動作で複数の命令グループを同時に命令実行部207へ発行でき、命令発行制御装置220を備えたSMT方式のマルチスレッドプロセッサ400において、命令発行制御装置220は、実行中のスレッドの各々がストール中であるか否かを示すストール情報としてスレッドレディフラグ311を保持する第1フラグ保持部304と、実行中のスレッドのうちストールしていないスレッドを選択するスレッド選択部206と、選択されたスレッドの各々に属する複数の命令グループを同時に命令実行部207へ発行するよう制御する命令グループ化部205とを備えている。
こうした構成により、SMT方式のマルチスレッドプロセッサ400においても、ストールサイクルを管理することによりストールするスレッドを実行対象から除くことができ、マルチスレッドプロセッサ400のスループットを向上させることができる。
なお、上記実施の形態1〜3に係る命令発行制御装置及びマルチスレッドプロセッサに含まれる各処理部は典型的には集積回路であるLSIとして実現される。これらは個別に1チップ化されてもよいし、一部又はすべてを含むように1チップ化されてもよい。
ここでは、LSIとしたが、集積度の違いにより、IC、システムLSI、スーパーLSI、ウルトラLSIと呼称されることもある。
また、集積回路化はLSIに限るものではなく、専用回路又は汎用プロセッサで実現してもよい。LSI製造後にプログラムすることが可能なFPGA(Field Programmable Gate Array)、又はLSI内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサを利用してもよい。
さらには、半導体技術の進歩又は派生する別技術によりLSIに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて各処理部の集積化を行ってもよい。バイオ技術の適用等が可能性として考えられる。
また、上記実施の形態1〜3に係る命令発行制御装置及びマルチスレッドプロセッサの機能の一部又は全てを、CPU等のプロセッサがプログラムを実行することにより実現してもよい。
さらに、本発明は上記プログラムであってもよいし、上記プログラムが記録された記録媒体であってもよい。また、上記プログラムは、インターネット等の伝送媒体を介して流通させることができるのは言うまでもない。
また、上記実施の形態1〜3に係る命令発行制御装置及びマルチスレッドプロセッサの機能のうち少なくとも一部を組み合わせてもよい。
また、上記で用いた数字は、すべて本発明を具体的に説明するために例示するものであり、本発明は例示された数字に制限されない。
また、構成要素間の接続関係は、本発明を具体的に説明するために例示するものであり、本発明の機能を実現する接続関係はこれに限定されない。
さらに、上記の実施の形態は、ハードウェア及び/又はソフトウェアを用いて構成されるが、ハードウェアを用いる構成は、ソフトウェアを用いても構成可能であり、ソフトウェアを用いる構成は、ハードウェアを用いても構成可能である。
さらに、本発明の主旨を逸脱しない限り、本発明に係る実施の形態1〜3に対して当業者が思いつく範囲内の変更を施した各種変形例も本発明に含まれる。
本発明は、プロセッサのスレッド発行制御に関するアーキテクチャの根幹に係わる技術であり、実行性能の高いプロセッサを提供可能とする技術である。本発明により、実行効率の高いスレッド発行制御を簡素なハードウェアにて、実現可能である。
従って、組み込み分野、汎用PC分野、スーパーコンピューティング分野等の何れにおいても有用な技術となる。
100 マルチスレッドプロセッサ(実施の形態1)
101 命令キャッシュメモリ
102 命令フェッチ部
103 命令バッファ
104 命令発行制御装置
105 命令グループ化部
106 スレッド選択部
107 命令実行部
108 データキャッシュメモリ
109 レジスタファイル
201 命令キャッシュメモリ
202 命令フェッチ部
203 命令バッファ
204 命令発行制御部
205 命令グループ化部
206 スレッド選択部
207 命令実行部
208 データキャッシュメモリ
209 レジスタファイル
210 リソース管理部
220 命令発行制御装置
300 マルチスレッドプロセッサ(実施の形態2)
302 第Nリソーステーブル
303 第1カウンタ
304 第1フラグ保持部
305 第2カウンタ
306 第2フラグ保持部
400 マルチスレッドプロセッサ(実施の形態3)
903 バスコントロールユニット
904 メインメモリ
905 DSP
906 他のCPU
907 DMAC
1005 分岐予測器
1105 命令実行チェック部

Claims (16)

  1. 命令実行部と、命令バッファメモリと、命令フェッチ部とを持つマルチスレッドプロセッサが備える命令発行制御装置であって、
    実行中のスレッドの各々がストール中であるか否かを示すストール情報を管理するリソース管理部と、
    前記実行中のスレッドのうち、ストール中でないスレッドを選択するスレッド選択部と、
    前記選択されたスレッドから同時発行可能な命令が発行されるように前記マルチスレッドプロセッサを制御する命令発行制御部とを備え、
    前記リソース管理部は、前記命令実行部、前記命令バッファメモリ、および前記命令フェッチ部からの現在占有されている共有リソースの識別情報、共有リソースを占有するスレッドの識別情報、前記命令バッファメモリに格納された命令が属する実行中のスレッドの識別情報及び、既に実行されている命令の残り実行サイクル数の情報を受理し、前記実行中のスレッドの各々について、当該スレッドが共有リソースを占有しているか否かを調べ、占有している場合には、あと何サイクルストールするかを示すストールサイクル数を、リソーステーブルを用いて管理しており、前記ストールサイクル数が1以上であるか否かを判断し、前記ストールサイクル数が0ならスレッドはストール中でないと判断して前記ストール情報を更新する
    命令発行制御装置。
  2. 命令バッファメモリと命令フェッチ部と命令実行部と命令発行制御装置とを備えたマルチスレッドプロセッサであって、
    前記命令発行制御装置は、
    実行中のスレッドの各々がストール中であるか否かを示すストール情報を管理するリソース管理部と、
    前記実行中のスレッドのうち、ストール中でないスレッドを選択するスレッド選択部と、
    前記選択されたスレッドから同時発行可能な命令が前記命令実行部へ発行されるよう制御する命令発行制御部とを備え、
    前記リソース管理部は、前記命令実行部、前記命令バッファメモリ、および前記命令フェッチ部からの現在占有されている共有リソースの識別情報、共有リソースを占有するスレッドの識別情報、前記命令バッファメモリに格納された命令が属する実行中のスレッドの識別情報及び、既に実行されている命令の残り実行サイクル数の情報を受理し、前記実行中のスレッドの各々について、当該スレッドが共有リソースを占有しているか否かを調べ、占有している場合には、あと何サイクルストールするかを示すストールサイクル数を、リソーステーブルを用いて管理しており、前記ストールサイクル数が1以上であるか否かを判断し、前記ストールサイクル数が0ならスレッドはストール中でないと判断して前記ストール情報を更新する
    マルチスレッドプロセッサ。
  3. 前記リソース管理部は、前記ストール情報としてのスレッドレディフラグを保持する第1フラグ保持部と、前記ストールサイクル数を管理するためのカウンタである第1カウンタとを備え、
    前記第1カウンタが1以上であれば、前記スレッドレディフラグを0にセットし、
    前記第1カウンタが0であれば、前記スレッドレディフラグを1にセットする
    請求項2に記載のマルチスレッドプロセッサ。
  4. 前記マルチスレッドプロセッサは、複数スレッドの各々の命令列を格納する複数の命令バッファを備え、
    前記命令発行制御部は、前記複数の命令バッファに格納された命令のうち、次に前記命令実行部に発行されるべき同時発行が可能な1以上の命令を命令グループとしてグループ化する命令グループ化部を備えており、
    前記命令グループ化部は、前記複数の命令バッファに格納された命令のうち、前記命令実行部で実行中である命令と依存関係をもたない命令を優先して前記命令グループに含めるように前記グループ化を行う
    請求項3に記載のマルチスレッドプロセッサ。
  5. 前記リソース管理部は、前記実行中のスレッドの各々が、共有リソースの各々を現在占有しているか否かを示すリソースレディフラグを保持する第2フラグ保持部と、
    前記実行中のスレッドの各々が、前記共有リソースの各々を占有する残りサイクル数を示す第2カウンタとを有しており、
    前記命令グループ化部は、前記複数の命令バッファに格納された命令のうち、現在占有されている共有リソースを使用する命令が前記命令グループに含まれないように前記グループ化を行う
    請求項4に記載のマルチスレッドプロセッサ。
  6. 前記命令グループ化部は、現在占有されている前記共有リソースの識別情報及び当該共有リソースを占有するスレッドの識別情報を、前記リソース管理部に通知し、
    前記リソース管理部は、通知された前記共有リソースに対応する前記第2カウンタに応じて、通知された前記識別情報に対応するスレッドの前記第1カウンタを更新する
    請求項5に記載のマルチスレッドプロセッサ。
  7. 前記命令グループ化部は、前記複数の命令バッファに格納された命令が前記命令実行部で既に実行されている命令と依存関係を有する場合には、前記命令バッファに格納された命令が属する前記実行中のスレッドの識別情報及び、前記既に実行されている命令の残り実行サイクル数を前記リソース管理部に通知し、
    前記リソース管理部は、通知された前記残り実行サイクル数に応じて前記識別情報に対応するスレッドの前記第1カウンタを更新する
    請求項4に記載のマルチスレッドプロセッサ。
  8. 前記マルチスレッドプロセッサは、前記命令実行部が用いるデータを保持するデータキャッシュメモリを備えており、
    前記命令実行部は、データキャッシュミスが発生した場合に、実行中のスレッドの識別情報及び、前記データキャッシュミスが生じたデータを前記マルチスレッドプロセッサの外部にあるメインメモリから前記データキャッシュメモリへ転送するのに要するサイクル数を前記リソース管理部へ通知し、
    前記リソース管理部は、通知された前記サイクル数に応じて前記識別情報に対応するスレッドの前記第1カウンタを更新する
    請求項4に記載のマルチスレッドプロセッサ。
  9. 前記マルチスレッドプロセッサは、命令キャッシュメモリと、
    前記命令キャッシュメモリから命令を取得し、取得した前記命令を前記命令バッファへ供給する命令フェッチ部とを備えており、
    前記命令フェッチ部は、命令をフェッチする際に命令キャッシュミスが発生した場合に、実行中のスレッドの識別情報及び、前記命令キャッシュミスが生じた命令を前記マルチスレッドプロセッサの外部にあるメインメモリから前記命令キャッシュメモリへ転送するのに要する第2のサイクル数を前記リソース管理部へ通知し、
    前記リソース管理部は、通知された前記第2のサイクル数に応じて前記識別情報に対応するスレッドの前記第1カウンタを更新する
    請求項8に記載のマルチスレッドプロセッサ。
  10. 前記命令実行部は、分岐命令を実行する場合には、その分岐先アドレスが確定するまでに要するサイクル数及び当該分岐命令が属するスレッドの識別情報を前記リソース管理部に通知し、
    前記リソース管理部は、通知された前記サイクル数に応じて前記識別情報に対応するスレッドの第1カウンタを更新する
    請求項4に記載のマルチスレッドプロセッサ。
  11. 前記マルチスレッドプロセッサは、バスコントロールユニットを備え、
    前記バスコントロールユニットは、前記命令キャッシュメモリ、前記データキャッシュメモリ、及び前記マルチスレッドプロセッサの外部にあるメインメモリとそれぞれ接続されており、
    前記命令キャッシュメモリ及び前記データキャッシュメモリでキャッシュミスが生じた時に、前記バスコントロールユニットが既に占有されている場合には、
    前記バスコントロールユニットは、現在の占有があと何サイクル継続するかを示す残り占有サイクル数を前記リソース管理部へ通知し、
    前記リソース管理部は、通知された前記残り占有サイクル数に応じて前記第1カウンタを更新する
    請求項9に記載のマルチスレッドプロセッサ。
  12. 前記リソース管理部は、前記実行中のスレッドの各々について、前記第1カウンタが示す値よりも大きいストールサイクル数が通知された場合にのみ、当該第1カウンタが示す値を通知された前記ストールサイクル数で上書きする
    請求項6〜11のいずれか1項に記載のマルチスレッドプロセッサ。
  13. 前記リソース管理部は、前記マルチスレッドプロセッサの1サイクル動作毎に、前記第1カウンタ及び前記第2カウンタが示す値から事前に定められた特定の値を減ずる
    請求項5に記載のマルチスレッドプロセッサ。
  14. 前記命令発行制御部は、さらに、分岐予測器を備えており、
    前記分岐予測器は、前記命令実行部が分岐命令の実行を完了する前に分岐先アドレスを予測し、当該予測アドレスを用いて前記分岐命令を実行するとともに、前記分岐先アドレスの予測が外れることにより発生する可能性があるストールサイクル数を前記リソース管理部に通知し、
    前記リソース管理部は、前記通知を受けた場合には、前記第1カウンタが示す値に通知されたストールサイクル数を加算する
    請求項3に記載のマルチスレッドプロセッサ。
  15. 1サイクル動作で複数の命令グループを同時に命令実行部へ発行するSMT(Simultaneous Multi Threading)方式のマルチスレッドプロセッサであって、
    前記マルチスレッドプロセッサは、前記命令実行部と、命令バッファメモリと、命令フェッチ部と、命令発行制御装置とを備えており、
    前記命令発行制御装置は、
    実行中のスレッドの各々がストール中であるか否かを示すストール情報を管理するリソース管理部と、
    前記実行中のスレッドのうち、ストールしていないスレッドを選択するスレッド選択部と、
    前記選択されたスレッドの各々に属する複数の命令グループを同時に前記命令実行部へ発行するよう制御する命令グループ化部とを備え、
    前記リソース管理部は、前記命令実行部、前記命令バッファメモリ、および前記命令フェッチ部からの現在占有されている共有リソースの識別情報、共有リソースを占有するスレッドの識別情報、前記命令バッファメモリに格納された命令が属する実行中のスレッドの識別情報及び、既に実行されている命令の残り実行サイクル数の情報を受理し、前記実行中のスレッドの各々について、当該スレッドが共有リソースを占有しているか否かを調べ、占有している場合には、あと何サイクルストールするかを示すストールサイクル数を、リソーステーブルを用いて管理しており、前記ストールサイクル数が1以上であるか否かを判断し、前記ストールサイクル数が0ならスレッドはストール中でないと判断して前記ストール情報を更新する
    マルチスレッドプロセッサ。
  16. 命令実行部と、命令バッファメモリと、命令フェッチ部とを持つマルチスレッドプロセッサの命令発行制御方法であって、
    前記命令発行制御方法は、
    実行中のスレッドの各々がストール中であるか否かを示すストール情報を管理するリソース管理ステップと、
    前記実行中のスレッドのうち、ストールしていないスレッドを選択するスレッド選択ステップと、
    前記選択されたスレッドから同時発行可能な命令が発行されるよう制御する命令発行制
    御ステップとを含み、
    前記リソース管理ステップにおいて、前記命令実行部、前記命令バッファメモリ、および前記命令フェッチ部からの現在占有されている共有リソースの識別情報、共有リソースを占有するスレッドの識別情報、前記命令バッファメモリに格納された命令が属する実行中のスレッドの識別情報及び、既に実行されている命令の残り実行サイクル数の情報を受理し、前記実行中のスレッドの各々について、当該スレッドが共有リソースを占有しているか否かを調べ、占有している場合には、あと何サイクルストールするかを示すストールサイクル数を、リソーステーブルを用いて管理しており、前記ストールサイクル数が1以上であるか否かを判断し、前記ストールサイクル数が0ならスレッドはストール中でないと判断して前記ストール情報を更新する
    命令発行制御方法。
JP2010134528A 2010-06-11 2010-06-11 命令発行制御装置及び方法 Expired - Fee Related JP5548037B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2010134528A JP5548037B2 (ja) 2010-06-11 2010-06-11 命令発行制御装置及び方法
PCT/JP2011/000432 WO2011155097A1 (ja) 2010-06-11 2011-01-27 命令発行制御装置及び方法
CN201180027800.7A CN102934076B (zh) 2010-06-11 2011-01-27 指令发行控制装置以及方法
US13/692,141 US9436464B2 (en) 2010-06-11 2012-12-03 Instruction-issuance controlling device and instruction-issuance controlling method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010134528A JP5548037B2 (ja) 2010-06-11 2010-06-11 命令発行制御装置及び方法

Publications (2)

Publication Number Publication Date
JP2011258147A JP2011258147A (ja) 2011-12-22
JP5548037B2 true JP5548037B2 (ja) 2014-07-16

Family

ID=45097720

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010134528A Expired - Fee Related JP5548037B2 (ja) 2010-06-11 2010-06-11 命令発行制御装置及び方法

Country Status (4)

Country Link
US (1) US9436464B2 (ja)
JP (1) JP5548037B2 (ja)
CN (1) CN102934076B (ja)
WO (1) WO2011155097A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9260217B2 (en) 2006-01-30 2016-02-16 Impress Group B.V. Can end for a can and such can

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2495959A (en) * 2011-10-26 2013-05-01 Imagination Tech Ltd Multi-threaded memory access processor
US8914764B2 (en) 2012-06-18 2014-12-16 International Business Machines Corporation Adaptive workload based optimizations coupled with a heterogeneous current-aware baseline design to mitigate current delivery limitations in integrated circuits
US8826216B2 (en) * 2012-06-18 2014-09-02 International Business Machines Corporation Token-based current control to mitigate current delivery limitations in integrated circuits
US8863068B2 (en) 2012-06-18 2014-10-14 International Business Machines Corporation Current-aware floorplanning to overcome current delivery limitations in integrated circuits
US8826203B2 (en) 2012-06-18 2014-09-02 International Business Machines Corporation Automating current-aware integrated circuit and package design and optimization
US9471310B2 (en) * 2012-11-26 2016-10-18 Nvidia Corporation Method, computer program product, and system for a multi-input bitwise logical operation
US9667747B2 (en) 2012-12-21 2017-05-30 Akamai Technologies, Inc. Scalable content delivery network request handling mechanism with support for dynamically-obtained content policies
US9654579B2 (en) 2012-12-21 2017-05-16 Akamai Technologies, Inc. Scalable content delivery network request handling mechanism
US9400653B2 (en) * 2013-03-14 2016-07-26 Samsung Electronics Co., Ltd. System and method to clear and rebuild dependencies
CN103237049A (zh) * 2013-03-18 2013-08-07 北京易华录信息技术股份有限公司 一种文件传输方法及装置
CN104298552B (zh) * 2013-07-15 2018-06-19 华为技术有限公司 多线程处理器的线程取指调度方法、系统和多线程处理器
CN104951283B (zh) * 2015-06-05 2017-05-31 中国航天科技集团公司第九研究院第七七一研究所 一种risc处理器的浮点处理单元集成电路及方法
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
US20170300361A1 (en) * 2016-04-15 2017-10-19 Intel Corporation Employing out of order queues for better gpu utilization

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0644089A (ja) * 1992-05-18 1994-02-18 Matsushita Electric Ind Co Ltd 情報処理装置
US5546593A (en) * 1992-05-18 1996-08-13 Matsushita Electric Industrial Co., Ltd. Multistream instruction processor able to reduce interlocks by having a wait state for an instruction stream
JPH06332700A (ja) * 1993-05-25 1994-12-02 Matsushita Electric Ind Co Ltd 情報処理装置
US5867725A (en) * 1996-03-21 1999-02-02 International Business Machines Corporation Concurrent multitasking in a uniprocessor
CN1280714C (zh) 1996-08-27 2006-10-18 松下电器产业株式会社 独立处理多个指令流、软式控制各指令流的处理功能的多线程处理器
JP3760035B2 (ja) * 1996-08-27 2006-03-29 松下電器産業株式会社 複数の命令流を独立に処理し、命令流単位に処理性能を柔軟に制御するマルチスレッドプロセッサ
US5985042A (en) * 1997-05-28 1999-11-16 Fiedler; John Computer mouse cleaning device
US5913049A (en) * 1997-07-31 1999-06-15 Texas Instruments Incorporated Multi-stream complex instruction set microprocessor
US6477562B2 (en) 1998-12-16 2002-11-05 Clearwater Networks, Inc. Prioritized instruction scheduling for multi-streaming processors
JP2001084143A (ja) * 1999-09-10 2001-03-30 Matsushita Electric Ind Co Ltd 情報処理装置
US6889319B1 (en) 1999-12-09 2005-05-03 Intel Corporation Method and apparatus for entering and exiting multiple threads within a multithreaded processor
DE602004017879D1 (de) 2003-08-28 2009-01-02 Mips Tech Inc Integrierter mechanismus zum suspendieren und endznem prozessor
WO2005022384A1 (en) 2003-08-28 2005-03-10 Mips Technologies, Inc. Apparatus, method, and instruction for initiation of concurrent instruction streams in a multithreading microprocessor
JP5145936B2 (ja) 2005-06-02 2013-02-20 学校法人慶應義塾 マルチスレッド中央演算装置および同時マルチスレッディング制御方法
JP2008123045A (ja) 2006-11-08 2008-05-29 Matsushita Electric Ind Co Ltd プロセッサ
JP2009110209A (ja) 2007-10-29 2009-05-21 Panasonic Corp 演算処理装置、プロセッサ、プログラム変換装置およびプログラム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9260217B2 (en) 2006-01-30 2016-02-16 Impress Group B.V. Can end for a can and such can

Also Published As

Publication number Publication date
CN102934076B (zh) 2015-07-22
WO2011155097A1 (ja) 2011-12-15
CN102934076A (zh) 2013-02-13
JP2011258147A (ja) 2011-12-22
US20130097409A1 (en) 2013-04-18
US9436464B2 (en) 2016-09-06

Similar Documents

Publication Publication Date Title
JP5548037B2 (ja) 命令発行制御装置及び方法
US10114652B2 (en) Processor with hybrid pipeline capable of operating in out-of-order and in-order modes
JP4610593B2 (ja) デュアルスレッドプロセッサ
JP5209933B2 (ja) データ処理装置
US20130297912A1 (en) Apparatus and method for dynamic allocation of execution queues
KR100745904B1 (ko) 동시적 멀티스레드 프로세서에서 파이프라인 길이를변경하기 위한 방법 및 회로
US8386753B2 (en) Completion arbitration for more than two threads based on resource limitations
JP5413853B2 (ja) マルチスレッド型プロセッサのためのスレッドデエンファシス方法及びデバイス
JP2002508568A (ja) 不適正順序マルチスレッド実行を実行するロード命令およびストア命令を順序付けるシステム
JP2002508564A (ja) 実行パイプラインの外部に複数のプログラム・カウンタとトレース・バッファを有するプロセッサ
JP2007536626A (ja) ロードオペレーションの投機的な結果をレジスタ値にリンクするメモリファイルを検証するためのシステムおよび方法
JP2002508567A (ja) 誤推論後の命令再実施のためのアウトオブパイプライン・トレース・バッファ
US10649780B2 (en) Data processing apparatus and method for executing a stream of instructions out of order with respect to original program order
JP2006228241A (ja) プロセッサ、およびプロセッサにおいて命令演算をスケジューリングするための方法
JP5861354B2 (ja) 演算処理装置及び演算処理装置の制御方法
US9652246B1 (en) Banked physical register data flow architecture in out-of-order processors
GB2501582A (en) Issuing speculative load instructions to cache memory
GB2520731A (en) Soft-partitioning of a register file cache
US7725659B2 (en) Alignment of cache fetch return data relative to a thread
EP2159691B1 (en) Simultaneous multithreaded instruction completion controller
JPWO2008155801A1 (ja) 情報処理装置及びレジスタ制御方法
JP2010061642A (ja) スレッドのスケジューリングテクニック
US10430342B2 (en) Optimizing thread selection at fetch, select, and commit stages of processor core pipeline
JP2022184701A (ja) 共有機能部を有するマイクロプロセッサ
JP4631442B2 (ja) プロセッサ

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130404

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131029

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131204

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140408

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140416

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140516

R151 Written notification of patent or utility model registration

Ref document number: 5548037

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees