JP5173714B2 - マルチスレッドプロセッサ及びその割り込み処理方法 - Google Patents

マルチスレッドプロセッサ及びその割り込み処理方法 Download PDF

Info

Publication number
JP5173714B2
JP5173714B2 JP2008252235A JP2008252235A JP5173714B2 JP 5173714 B2 JP5173714 B2 JP 5173714B2 JP 2008252235 A JP2008252235 A JP 2008252235A JP 2008252235 A JP2008252235 A JP 2008252235A JP 5173714 B2 JP5173714 B2 JP 5173714B2
Authority
JP
Japan
Prior art keywords
thread
interrupt
interrupt request
hardware
request signal
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
JP2008252235A
Other languages
English (en)
Other versions
JP2010086131A (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 JP2008252235A priority Critical patent/JP5173714B2/ja
Priority to US12/585,818 priority patent/US8407387B2/en
Publication of JP2010086131A publication Critical patent/JP2010086131A/ja
Priority to US13/830,663 priority patent/US10545892B2/en
Application granted granted Critical
Publication of JP5173714B2 publication Critical patent/JP5173714B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • 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/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • G06F13/26Handling requests for interconnection or transfer for access to input/output bus using interrupt with priority control

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)
  • Bus Control (AREA)

Description

本発明は、マルチスレッドプロセッサ及びその割り込み処理方法に関する。
近年、プロセッサの処理能力を向上させるためにマルチスレッドプロセッサが提案されている。マルチスレッドプロセッサは、それぞれが独立した命令流を生成するハードウェアスレッドを有する。そして、マルチスレッドプロセッサは、パイプライン処理により命令を処理する演算回路に対していずれのハードウェアスレッドにより生成された命令流を処理させるかを切り替えながら演算処理を実行する。
このとき、マルチスレッドプロセッサは、1つのハードウェアスレッドにより生成された命令をパイプライン中の1つの実行ステージで実行しながら、他の実行ステージにおいて他のハードウェアスレッドにより生成された命令を処理することができる。つまり、マルチスレッドプロセッサの演算回路では、互いに独立関係にある命令がそれぞれ異なる実行ステージで実行されることになる。これにより、マルチスレッドプロセッサは、それぞれの命令流を円滑に処理しながら、パイプラインの実行ステージが何も処理しない時間を削減し、プロセッサの処理能力を向上させる。
特許文献1には、マルチスレッドプロセッサにおいて第1の割り込みを処理中に、第2の割り込みがあった場合、第1の割り込み処理を実行しているハードウェアスレッドとは別のハードウェアスレッドに、第2の割り込み処理を割り当てる技術が開示されている。
特開2006−146641号公報
しかしながら、特許文献1では、割り込み要求とハードウェアスレッドとが関連付けられていない。そのため、例えば厳密な時間管理が必要な割り込み要求を、厳密な時間管理が必要な処理を実行する所定のハードウェアスレッドに割り当てることができず、システム全体としての信頼性に劣るおそれがあった。
本発明に係るマルチスレッドプロセッサの一態様は、
それぞれが独立した命令流を生成する複数のハードウェアスレッドと、
入力された割り込み要求信号が、前記複数のハードウェアスレッドのうち1つ又は複数と関連付けられているか否かを判定し、関連付けられている場合、当該割り込み要求を関連付けられたハードウェアスレッドに割り当てる割り込みコントローラと、を備えたものである。
また、本発明に係るマルチスレッドプロセッサの割り込み処理方法の一態様は、
複数のハードウェアスレッドを有するマルチスレッドプロセッサにおける割り込み処理方法であって、
入力された割り込み要求信号が、前記複数のハードウェアスレッドのうち1つ又は複数と関連付けられているか否かを判定し、
関連付けられている場合、当該割り込み要求を関連付けられたハードウェアスレッドに割り当てるものである。
本発明に係るマルチスレッドプロセッサ及びその割り込み処理方法によれば、割り込み処理を当該割り込み処理と関連付けられたハードウェアスレッドにより処理し、高い処理能力と高い信頼性とを両立させることができる。
本発明に係るマルチスレッドプロセッサ及びその割り込み方法によれば、高い処理能力と高い信頼性とを両立させることができる。
実施の形態1
以下、図面を参照して本発明の実施の形態について説明する。図1に本実施の形態に係るマルチスレッドプロセッサ1を含むプロセッサシステムのブロック図を示す。本実施の形態に係るプロセッサシステムでは、システムバスを介してマルチスレッドプロセッサ1とメモリ2が接続される。なお、図示はしていないが、システムバスには、入出力インタフェースなどの他の回路も接続されるものとする。
まず、本実施の形態に係るマルチスレッドプロセッサ1について説明する。マルチスレッドプロセッサ1は、複数のハードウェアスレッドを備えている。ここで、この複数のハードウェアスレッドは1つのCPU内において構成されている。ハードウェアスレッドは、スレッドプログラムカウンタ、命令メモリ、汎用レジスタ、及び制御レジスタ(本実施の形態ではパイプライン制御回路16に内蔵されるものとする)等の回路群により構成される。
ここで、ハードウェアスレッドとは、マルチスレッドプロセッサ1に内蔵されるスレッドプログラムカウンタにより出力される命令フェッチアドレスに従って、命令メモリから読み出される一連の命令群により構成される命令流を生成する系のことを言う。つまり、1つのハードウェアスレッドにより生成される命令流に含まれる命令は、互いに関連性の高い命令である。本実施の形態では、マルチスレッドプロセッサ1が複数のスレッドプログラムカウンタを備えることでその数に応じた数のハードウェアスレッドが実装される。以下では、マルチスレッドプロセッサ1について更に詳細に説明する。
図1に示すようにマルチスレッドプロセッサ1は、演算回路10、割り込みコントローラ11、PC生成回路12、スレッドプログラムカウンタTPC0〜TPC3、セレクタ13、18、命令メモリ14、命令バッファ15、パイプライン制御回路16、命令フェッチコントローラ17、スレッドスケジューラ19を有する。
演算回路10は、セレクタ18によって選択されたハードウェアスレッドが生成する命令に基づき演算処理を実行する。より具体的には、演算回路10は、命令デコーダ21、実行ユニット22、データレジスタ23を有する。命令デコーダ21は受信した命令をデコードして、実行ユニット22に対して演算制御信号SCを出力する。また、命令デコーダ21は、命令のデコード結果に基づきデータの格納位置を示すデータレジスタアドレスRaddの出力を行う。実行ユニット22は、演算制御信号SCに応じて各種の演算を実行する。なお、実行ユニット22は、複数の実行ステージを有し、パイプライン処理により演算を行う。
また、実行ユニット22において実行された演算結果は、その演算結果の種類に応じてPC生成回路12、メモリ2、データレジスタ23に送信される。データレジスタ23は、実行ユニット22において用いられるデータが格納される。そして、データレジスタ23は、データレジスタアドレスRaddにより指定したアドレスのデータを出力する。図1に示す例では、データレジスタ23は、データレジスタアドレスRaddに応じてデータaとデータbとを出力する形態となる。また、データレジスタ23は、データレジスタアドレスRaddにより指定されるアドレスに実行ユニット22が出力する演算結果を格納する。
割り込みコントローラ11は、割り込み要求信号を受けて、マルチスレッドプロセッサ1内に割り込み処理の実行を指示する割り込み指示信号を出力する。より具体的には、割り込みコントローラ11は、割り込み要求信号を受信すると、割り込み要因や割り込み処理の優先度等を判定し、当該割り込み要因に関連した処理を行うようにPC生成回路12及びパイプライン制御回路16に割り込み処理の実行を指示する。この割り込み要求は、マルチスレッドプロセッサ1が出力するものの他に、マルチスレッドプロセッサ1以外の回路からも出力される。
PC生成回路12は、システムバスを介して入力される新たなプログラム命令信号、割り込みコントローラ11が出力する割り込み指示信号及び実行ユニット22における処理に基づき出力される分岐指示信号を受けて、プログラムカウント更新値を生成する。そして、PC生成回路12は、プログラムカウント更新値をスレッドプログラムカウンタTPC0〜TPC3のいずれかに与える。なお、PC生成回路12は、生成したプログラムカウント更新値をいずれのスレッドプログラムカウンタに与えるかを判断する機能も有する。
スレッドプログラムカウンタTPC0〜TPC3は、処理すべき命令が格納される命令メモリ14のアドレス(このアドレスを命令フェッチアドレスIMaddと称す)を生成する。また、スレッドプログラムカウンタTPC0〜TPC3は、PC生成回路12からプログラムカウント更新値が与えられた場合は、命令フェッチアドレスIMaddをプログラムカウント更新値に応じて更新する。一方、スレッドプログラムカウンタTPC0〜TPC3は、プログラムカウント更新値の入力がない場合は、アドレスを昇順に計算し、連続する次の命令フェッチアドレスを算出する。なお、図1においては、スレッドプログラムカウンタの数を4つとしたが、プログラムスレッドカウンタの数は、マルチスレッドプロセッサの仕様に応じて任意に設定することができる。
セレクタ13は、命令フェッチコントローラが出力するスレッド指定信号に応じてスレッドプログラムカウンタTPC0〜TPC3のうちいずれか1つを選択し、選択したスレッドプログラムカウンタが出力する命令フェッチアドレスIMaddを出力する。なお、図1のセレクタ13において入力端子に0〜4の数字を付したが、この数字は、ハードウェアスレッドの番号を示すものである。
命令メモリ14は、複数のハードウェアスレッドにより共用されるメモリ領域である。命令メモリ14は、マルチスレッドプロセッサ1において実行される演算で用いられる各種命令が格納される。そして、命令メモリ14は、セレクタ13を介して入力される命令フェッチアドレスIMaddにより指定された命令を出力する。このとき、命令メモリ14は、セレクタ13がスレッドプログラムカウンタTPC0〜TPC3のいずれが出力した命令フェッチアドレスIMaddであるかを判別し、判別結果に応じて命令の出力先を振り分ける。
本実施の形態では、命令バッファ15は、スレッドプログラムカウンタTPC0〜TPC3に対応した命令バッファ領域BUF0〜BUF3を有する。そこで、命令メモリ14は、命令フェッチアドレスIMaddの出力元に応じて命令バッファ領域BUF0〜BUF3のいずれかに読み出された命令を振り分ける。なお、命令メモリ14は、メモリ2に含まれる所定のメモリ領域であっても良い。また、命令バッファ領域BUF0〜BUF3は、FIFO(First In First Out)形式のバッファ回路である。また、命令バッファ領域BUF0〜BUF3は、1つのバッファ内において領域分割されたものでも良く、分離された領域に形成されたものであっても良い。
パイプライン制御回路16は、命令バッファ15の先頭に格納された命令と実行ユニット22において実行されている命令とをモニタする。そして、パイプライン制御回路16は、割り込みコントローラ11から割り込み指示信号が入力された場合には、割り込み処理に関係するハードウェアスレッドに属する命令を廃棄する指示を命令バッファ15及び実行ユニット22に対して行う。
命令フェッチコントローラ17は、命令バッファ15に格納されている命令の個数に応じていずれのハードウェアスレッドに属する命令をフェッチすべきかを判断し、その判断結果に基づきスレッド指定信号を出力する。例えば、命令フェッチコントローラ17は、命令バッファ領域BUF0に格納される命令キューの数が他の命令バッファ領域に格納される命令キューの数よりも少なければ、0番のハードウェアスレッドに属する命令をフェッチすべきと判断し、0番のハードウェアスレッドを示すスレッド指定信号を出力する。これにより、セレクタ13は、スレッドプログラムカウンタTPC0を選択する。なお、命令フェッチコントローラ17は、ラウンドロビン方式による手順で選択するハードウェアスレッドを決定しても良い。
セレクタ18は、第1のセレクタとして機能するセレクタである。セレクタ18は、スレッドスケジューラ19が出力するスレッド選択信号TSELに応じて命令バッファ領域BUF0〜BUF3のいずれか1つを選択し、選択した命令バッファ領域から読み出した命令を演算回路10に出力する。つまり、セレクタ18は、スレッド選択信号TSELに応じて複数のハードウェアスレッドから1つのハードウェアスレッドを選択し、選択したハードウェアスレッドが出力する命令を演算回路10に出力する。なお、セレクタ18においても、入力端子に0〜4の数字を付したが、この数字は、ハードウェアスレッドの番号を示すものである。
スレッドスケジューラ19は、予め設定されたスケジュールに従って、複数のハードウェアスレッドのうち次の実行サイクルにおいて実行される1つのハードウェアスレッドを指定するスレッド選択信号TSELを出力する。つまり、スレッドスケジューラ19は、複数のハードウェアスレッドのどのような順序で処理するかをスケジュールにより管理し、そのスケジュールに沿った順序でハードウェアスレッドにより生成される命令が実行されるようにスレッド選択信号TSELを出力する。なお、スレッドスケジューラ19は、マスク信号MSKが入力された場合、マスク信号MSKが示すハードウェアスレッドを選択することを回避する。なお、本実施の形態に係るマルチスレッドプロセッサ1では、このスケジュールをマルチスレッドプロセッサ1の起動の直後に実行される管理プログラムにより設定する。
次に、図2を用いて、割り込みコントローラ11、PC生成回路12及びパイプライン制御回路16の詳細について説明する。図2に示すように、割り込みコントローラ11はプライオリティ判定部111及びスレッド判定部112を備えている。ここで、スレッド判定部112はスレッドバインドレジスタ113及びセレクタ114を備えている。また、パイプライン制御回路16は、上述のように、システムレジスタ161を備えている。さらに、システムレジスタ161は、割り込み許可レジスタ161aを備えている。
プライオリティ判定部111は、複数の割り込み要求信号が時間的に重複して入力された場合に、割り込み要求信号の優先度を判定し、優先度の高い割り込み要求信号を優先して出力する。ここで、本実施の形態における割り込み要求信号はnチャネルすなわちn個の割り込み要因に対応したものである。
スレッド判定部112は、割り込み要求のチャネル情報CHに基づいて、当該割り込み要求を処理すべきスレッドを判定する。上述の通り、スレッド判定部112は、スレッドバインドレジスタ113及びセレクタ114を備えている。スレッドバインドレジスタ113には、割り込み要求のチャネル毎に、当該割り込み要求を処理すべきすなわち当該割り込み要求に関連付けられたハードウェアスレッド番号が書き込まれている。図2では、チャネル毎のレジスタが、「INT_CTR_1」〜「INT_CTR_n」で示されている。このチャネル毎のレジスタ「INT_CTR_1」〜「INT_CTR_n」は、それぞれセレクタ114に接続されている。セレクタ114は、割り込み要求信号のチャネル情報CHに基づいて、当該割り込み要求を処理すべきハードウェアスレッド情報HWTを、PC生成回路12及びパイプライン制御回路16へ出力する。
ここで、図3を用いて、本実施の形態に係るスレッドバインドレジスタ113におけるチャネル毎のレジスタの定義について説明する。図3に示すように、チャネル毎のレジスタ(図2の「INT_CTR_1」〜「INT_CTR_n」のいずれか1つに対応)には、バインドフラグとハードウェアスレッド番号とが書き込まれている。バインドフラグは、当該チャネルの割り込み要求と書き込まれたハードウェアスレッド番号とが関連付けられたものか否かを示している。具体的には、バインドフラグが1の場合関連付け有り、0の場合関連付けなしなどとすればよい。ハードウェアスレッド番号には、本実施の形態ではハードウェアスレッド番号0〜3のいずれか1つが書き込まれている。ここで、関連付けが有れば、書き込まれたハードウェアスレッド番号がハードウェアスレッド情報HWTとして出力される。この場合、PC生成回路12は、指定されたスレッドプログラムカウンタTPCのプログラムカウント更新値を生成する。一方、関連付けが無ければ、その旨のハードウェアスレッド情報HWTが出力される。この場合、PC生成回路12は、スレッドプログラムカウンタTPC0〜TPC3のいずれかのプログラムカウント更新値を生成する。
次に、図2を用いて、動作について説明する。割り込みコントローラ11に入力された割り込み要求信号REQは、プライオリティ判定部111を介して、PC生成回路12及びパイプライン制御回路16へ入力される。また、割り込み要求信号に基づくチャネル情報CHがスレッド判定部112へ入力される。このチャネル情報CHはスレッド判定部112内のセレクタ114へ入力されると共に、PC生成回路12及びパイプライン制御回路16へ出力される。そして、上述の通り、セレクタ114は、割り込み要求信号のチャネル情報CHに基づいて、当該割り込み要求を処理すべきハードウェアスレッドの情報HWTを、PC生成回路12及びパイプライン制御回路16へ出力する。なお、図1において割り込みコントローラ11が出力する割り込み指示信号には、上記割り込み要求信号REQ、チャネル情報CH、ハードウェアスレッド情報HWTの3つが含まれる。
これら3つの信号が入力されると、PC生成回路12は、パイプライン制御回路16のシステムレジスタ161内の割り込み許可レジスタ161aを参照する。そして、割り込み許可フラグを取得した後、割り込み要求信号REQ、チャネル情報CH、ハードウェアスレッド情報HWTに基づいて、スレッドプログラムカウンタTPC0〜TPC3のいずれかのプログラムカウント更新値を生成し、割り込み処理を開始する。
次に、図4のフローチャートを用いて、本実施の形態に係る割り込み処理の手順について説明する。まず、割り込みコントローラ11に割り込み要求信号が入力されると、スレッド判定部112が、スレッドバインドレジスタ112のうち当該チャネルのレジスタに格納された値を参照する(ST1)。
次に、スレッド判定部112は、当該割り込み要求が所定のハードウェアスレッドに関連付けられたものすなわちバインドされたものであるか否か判定する(ST2)。当該割り込み要求が所定のハードウェアスレッドに関連付けられている場合(ST2YES)、PC生成回路12は、該当ハードウェアスレッドの割り込み許可フラグを取得する(ST3)。次に、割り込み可能であれば(ST4YES)、PC生成回路12は、プログラムカウント更新値を出力し、割り込み処理を実行する(ST5)。これにより、割り込み処理が完了する。一方、割り込み不可能であれば(ST4NO)、PC生成回路12は、割り込み処理を保留し(ST6)、再度割り込み許可フラグを取得する(ST3)。
一方、当該割り込み要求が所定のハードウェアスレッドに関連付けられていない場合(ST2NO)、当該割り込み要求は、いずれのハードウェアスレッドにより処理されても良い。そのため、割込み要求を受けた際に動作していたハードウェアスレッドの割込み許可フラグを取得する。(ST7)。次に、割り込み可能であれば(ST8YES)、PC生成回路12は、プログラムカウント更新値を出力し、割り込み処理を実行する(ST9)。これにより、割り込み処理が完了する。一方、割り込み不可能であれば(ST8NO)、割り込み処理を保留し(ST10)、再度割り込み許可フラグを取得する(ST7)。
次に、図5及び6を用いて、本発明の効果について説明する。まず、図6は比較例に係る割り込み処理を説明するための図である。ここでは、図6に一例として示すように、ハードウェアスレッド0、ハードウェアスレッド1、ハードウェアスレッド2、ハードウェアスレッド3のCPU占有時間のスケジュールが、全体の50%、35%、10%、5%であるとする。ここで、点線で示したタイミングで割り込み処理が発生し、全体の20%が割り込み処理に用いられた場合を考える。各ハードウェアスレッドにおける斜線部が割り込み処理時間である。比較例の場合、いずれのハードウェアスレッドでも、均等に20%ずつCPU実効占有時間が減少する。具体的には、ハードウェアスレッド0、ハードウェアスレッド1、ハードウェアスレッド2、ハードウェアスレッド3のCPU実効占有時間は、それぞれ40%、28%、8%、4%となる。
このように、比較例では、厳密な時間管理が不要な割り込み要求が、厳密な時間管理が必要な処理を実行する所定のハードウェアスレッドに割り当てられ、厳密な時間管理が必要な他の処理に致命的な悪影響を及ぼし、システム全体としての信頼性に劣るおそれがある。また、割り込み情報とハードウェアスレッドとが関連付けられていないため、例えば厳密な時間管理が必要な割り込み要求を、厳密な時間管理が必要な処理を実行する所定のハードウェアスレッドに割り当てることができず、システム全体としての信頼性に劣るおそれがある。
図5は、実施の形態1に係る割り込み処理を説明するための図である。図5では、ハードウェアスレッド1に関連付けられた割り込み要求を処理する様子が示されている。この場合、ハードウェアスレッド1において全体の20%のCPU実効占有時間が減少する。具体的には、ハードウェアスレッド0、ハードウェアスレッド1、ハードウェアスレッド2、ハードウェアスレッド3のCPU実効占有時間は、それぞれ50%、15%、10%、5%となる。
このように、本実施の形態では、割り込み情報とハードウェアスレッドとが関連付けられているため、例えば厳密な時間管理が必要な割り込み要求を、厳密な時間管理が必要な処理を実行する所定のハードウェアスレッドに割り当てることができ、システム全体としての信頼性を確保することができる。また、厳密な時間管理が不要な割り込み要求が、厳密な時間管理が必要な処理を実行する所定のハードウェアスレッドに割り当てられることもない。また、割り込み処理における各ハードウェアスレッドの独立性が高まり、システム設計も容易になる。さらに、重要度は低いが頻度が高い割り込みに対し、専用のハードウェアスレッドを割り当てることにより、システム全体のパフォーマンスを下げずに対処することもできる。
実施の形態2
次に、図7を用いて、実施の形態2について説明する。図7は、実施の形態2におけるチャネル毎のレジスタ(図2の「INT_CTR_1」〜「INT_CTR_n」のいずれか1つに対応)の定義である。すなわち、実施の形態1における図3に相当するものである。その他の構成は同様であるため、説明を省略する。実施の形態2では、図7に示すように、4つのハードウェアスレッド0〜3毎にフラグが設定されている。
本実施の形態2では、1つの割り込み要求を複数のハードウェアスレッドと関連付けることができる。例えば、あるチャネルの割り込み要求に対し、ハードウェアスレッド0及び1のフラグが0、ハードウェアスレッド2及び3のフラグが1の場合、この割り込みはハードウェアスレッド2及び3のいずれか一方あるいは両方により処理される。また、あるチャネルの割り込み要求に対し、特定のハードウェアスレッド以外の全ハードウェアスレッドにより処理することなどが可能となる。なお、全てのハードウェアスレッドのフラグが1の場合、任意のハードウェアスレッドにより処理可能となり、実施の形態1におけるバインドフラグが0の場合と同様の処理となる。
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。また、以上の説明では、説明を明確にするため、記載及び図面が、適宜、簡略化されている。
実施の形態1に係るマルチスレッドプロセッサのブロック図である。 実施の形態1に係る割り込みコントローラの詳細なブロック図である。 実施の形態1に係る1つのチャネルに対応するスレッドバインドレジスタの構成を示す模式図である。 実施の形態1に係る割り込み処理の手順を示すフローチャートである。 実施の形態1に係る割り込み処理を説明するための図である。 比較例に係る割り込み処理を説明するための図である。 実施の形態2に係る1つのチャネルに対応するスレッドバインドレジスタの構成を示す模式図である。
符号の説明
1 マルチスレッドプロセッサ
2 メモリ
10 演算回路
11 割り込みコントローラ
12 PC生成回路
13、18、114 セレクタ
14 命令メモリ
15 命令バッファ
16 パイプライン制御回路
17 命令フェッチコントローラ
19 スレッドスケジューラ
21 命令デコーダ
22 実行ユニット
23 データレジスタ
111 プライオリティ判定部
112 スレッド判定部
113 スレッドバインドレジスタ
161 システムレジスタ
161a 割り込み許可レジスタ
TPC0〜TCP3 スレッドプログラムカウンタ

Claims (6)

  1. それぞれに入力されるプログラムカウント更新値に基づいて、それぞれが独立した命令流を生成する複数のハードウェアスレッドと、
    予め設定されたスケジュールに従って、前記複数のハードウェアスレッドの使用順序を管理するスレッドスケジューラと、
    入力された割り込み要求信号が、前記複数のハードウェアスレッドのいずれかと関連付けられているか否かを判定し、当該割り込み要求信号を前記複数のハードウェアスレッドのいずれか1つに割り当てる割り込みコントローラと、
    前記割り込みコントローラによって割り当てられた前記ハードウェアスレッドに対する前記プログラムカウント更新値を生成するプログラムカウント値生成回路と、を備え
    前記割り込みコントローラは、
    割り込み要求信号の複数の割り込み要因のそれぞれに対応した複数のチャネル毎に、当該チャネルの割り込み要求信号と前記複数のハードウェアスレッドのうち少なくとも1つとが関連付けられているか否かを示す情報が予め格納されたレジスタを備え、
    入力された割り込み要求信号に関連付けられたハードウェアスレッドがある場合、当該割り込み要求信号を前記関連付けられたハードウェアスレッドのいずれか1つに割り当て、関連付けられたハードウェアスレッドがない場合、当該割り込み要求信号を前記複数のハードウェアスレッドのいずれか1つに割り当てるマルチスレッドプロセッサ。
  2. 前記複数のチャネル毎の前記レジスタには、当該チャネルの割り込み要求信号と前記複数のハードウェアスレッドのいずれか1つと関連付けられているか否かを示す前記情報が予め格納されている請求項に記載のマルチスレッドプロセッサ。
  3. 前記複数のチャネル毎の前記レジスタには、当該チャネルの割り込み要求信号と前記複数のハードウェアスレッドの全てと関連付けられているか否かを示す前記情報が予め格納されている請求項に記載のマルチスレッドプロセッサ。
  4. 前記割り込みコントローラは、
    割り込み要求信号のチャネル毎の前記レジスタのそれぞれに接続され、かつ、入力された割り込み要求信号のチャネルに基づいて、当該チャネルのレジスタに格納された前記情報を選択するセレクタを、さらに備える請求項のいずれか一項に記載のマルチスレッドプロセッサ。
  5. 前記割り込みコントローラは、
    複数の割り込み要求信号の優先度を判定するプライオリティ判定部をさらに備える請求項のいずれか一項に記載のマルチスレッドプロセッサ。
  6. 請求項1〜5のいずれか一項に記載のマルチスレッドプロセッサにおける割り込み処理方法であって、
    入力された割り込み要求信号が、前記複数のハードウェアスレッドのうち1つ又は複数と関連付けられているか否かを判定し、
    関連付けられている場合、当該割り込み要求を関連付けられたハードウェアスレッドに割り当てる割り込み処理方法。
JP2008252235A 2008-09-30 2008-09-30 マルチスレッドプロセッサ及びその割り込み処理方法 Active JP5173714B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2008252235A JP5173714B2 (ja) 2008-09-30 2008-09-30 マルチスレッドプロセッサ及びその割り込み処理方法
US12/585,818 US8407387B2 (en) 2008-09-30 2009-09-25 Multi-thread processor and the multi-thread processor's interrupt processing method having interrupt processing that is processed by an associated hardware thread
US13/830,663 US10545892B2 (en) 2008-09-30 2013-03-14 Multi-thread processor and its interrupt processing method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008252235A JP5173714B2 (ja) 2008-09-30 2008-09-30 マルチスレッドプロセッサ及びその割り込み処理方法

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2012284446A Division JP2013058265A (ja) 2012-12-27 2012-12-27 マルチスレッドプロセッサ及びその割り込み処理方法

Publications (2)

Publication Number Publication Date
JP2010086131A JP2010086131A (ja) 2010-04-15
JP5173714B2 true JP5173714B2 (ja) 2013-04-03

Family

ID=42058799

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008252235A Active JP5173714B2 (ja) 2008-09-30 2008-09-30 マルチスレッドプロセッサ及びその割り込み処理方法

Country Status (2)

Country Link
US (2) US8407387B2 (ja)
JP (1) JP5173714B2 (ja)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8762994B2 (en) 2010-08-26 2014-06-24 Intel Corporation Power-optimized interrupt delivery
CN103136035B (zh) * 2011-11-30 2015-11-25 国际商业机器公司 用于混合线程模式的程序的线程管理的方法和装置
US9582284B2 (en) * 2011-12-01 2017-02-28 International Business Machines Corporation Performance of processors is improved by limiting number of branch prediction levels
JP5894496B2 (ja) * 2012-05-01 2016-03-30 ルネサスエレクトロニクス株式会社 半導体装置
US10423550B2 (en) * 2017-10-25 2019-09-24 International Business Machines Corporation Managing efficient selection of a particular processor thread for handling an interrupt
JP7298624B2 (ja) * 2018-12-11 2023-06-27 サンケン電気株式会社 プロセッサ及びパイプライン処理方法
US10545893B1 (en) * 2019-01-11 2020-01-28 Arm Limited Interrupt controller and method of operation of an interrupt controller
US11782713B1 (en) * 2019-08-27 2023-10-10 Amazon Technologies, Inc. Security vulnerability mitigation using address space co-execution
US11288072B2 (en) * 2019-09-11 2022-03-29 Ceremorphic, Inc. Multi-threaded processor with thread granularity
CN112559403B (zh) * 2019-09-25 2024-05-03 阿里巴巴集团控股有限公司 一种处理器及其中的中断控制器
US11645215B2 (en) * 2021-06-11 2023-05-09 International Business Machines Corporation Efficient selection of a particular processor thread for handling an interrupt
US11755362B2 (en) 2021-06-11 2023-09-12 International Business Machines Corporation Techniques for handling escalation of interrupts in a data processing system
US12020066B2 (en) 2021-06-11 2024-06-25 International Busin ess Machines Corporation Asynchronous completion notification in a multi-core data processing system
US11977496B1 (en) 2022-09-29 2024-05-07 Amazon Technologies, Inc. Security vulnerability mitigation using hardware-supported context-dependent address space hiding

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2855298B2 (ja) * 1990-12-21 1999-02-10 インテル・コーポレーション 割込み要求の仲裁方法およびマルチプロセッサシステム
JP3760035B2 (ja) * 1996-08-27 2006-03-29 松下電器産業株式会社 複数の命令流を独立に処理し、命令流単位に処理性能を柔軟に制御するマルチスレッドプロセッサ
US6954922B2 (en) * 1998-04-29 2005-10-11 Sun Microsystems, Inc. Method apparatus and article of manufacture for time profiling multi-threaded programs
US6401155B1 (en) * 1998-12-22 2002-06-04 Philips Electronics North America Corporation Interrupt/software-controlled thread processing
EP1247195A4 (en) * 1999-12-22 2005-01-05 Ubicom Inc SYSTEM AND METHOD FOR MULTITHREADING WORKING ON COMMAND LEVEL IN AN EMBEDDED PROCESSOR WITH ZERO-TIME CONTEXT SWITCHING
US6770965B2 (en) * 2000-12-28 2004-08-03 Ngk Spark Plug Co., Ltd. Wiring substrate using embedding resin
US7054950B2 (en) * 2002-04-15 2006-05-30 Intel Corporation Network thread scheduling
US20050033889A1 (en) * 2002-10-08 2005-02-10 Hass David T. Advanced processor with interrupt delivery mechanism for multi-threaded multi-CPU system on a chip
US6971103B2 (en) * 2002-10-15 2005-11-29 Sandbridge Technologies, Inc. Inter-thread communications using shared interrupt register
US7653912B2 (en) * 2003-05-30 2010-01-26 Steven Frank Virtual processor methods and apparatus with unified event notification and consumer-producer memory operations
US7774585B2 (en) * 2003-11-12 2010-08-10 Infineon Technologies Ag Interrupt and trap handling in an embedded multi-thread processor to avoid priority inversion and maintain real-time operation
JP2006146641A (ja) 2004-11-22 2006-06-08 Seiko Epson Corp マルチスレッドプロセッサ及びマルチスレッドプロセッサの割込み方法
JP2006243865A (ja) 2005-03-01 2006-09-14 Seiko Epson Corp プロセッサおよび情報処理方法
US8195922B2 (en) * 2005-03-18 2012-06-05 Marvell World Trade, Ltd. System for dynamically allocating processing time to multiple threads
US7386646B2 (en) * 2005-08-25 2008-06-10 Broadcom Corporation System and method for interrupt distribution in a multithread processor
JP2007317171A (ja) 2006-04-27 2007-12-06 Matsushita Electric Ind Co Ltd マルチスレッド計算機システム、マルチスレッド実行制御方法
US8001549B2 (en) * 2006-04-27 2011-08-16 Panasonic Corporation Multithreaded computer system and multithread execution control method
US8041929B2 (en) * 2006-06-16 2011-10-18 Cisco Technology, Inc. Techniques for hardware-assisted multi-threaded processing
US8219789B2 (en) 2007-03-14 2012-07-10 XMOS Ltd. Interface processor
US7958333B2 (en) * 2007-05-30 2011-06-07 XMOS Ltd. Processor with memory access stage adapted to fetch an instruction of a thread when no memory access operation is detected
EP2235630A1 (en) * 2007-12-12 2010-10-06 Nxp B.V. Data processing system and method of interrupt handling

Also Published As

Publication number Publication date
JP2010086131A (ja) 2010-04-15
US10545892B2 (en) 2020-01-28
US20130205058A1 (en) 2013-08-08
US20100082867A1 (en) 2010-04-01
US8407387B2 (en) 2013-03-26

Similar Documents

Publication Publication Date Title
JP5173714B2 (ja) マルチスレッドプロセッサ及びその割り込み処理方法
US7269712B2 (en) Thread selection for fetching instructions for pipeline multi-threaded processor
JP4610593B2 (ja) デュアルスレッドプロセッサ
JP6017260B2 (ja) マルチスレッドプロセッサ
US9436464B2 (en) Instruction-issuance controlling device and instruction-issuance controlling method
JP5173713B2 (ja) マルチスレッドプロセッサ及びそのハードウェアスレッドのスケジュール方法
JP5173711B2 (ja) マルチスレッドプロセッサ及びそのハードウェアスレッドのスケジュール方法
US8539203B2 (en) Multi-thread processor selecting threads on different schedule pattern for interrupt processing and normal operation
JP2008123045A (ja) プロセッサ
EP2159691B1 (en) Simultaneous multithreaded instruction completion controller
EP2159686A1 (en) Information processor
US7831979B2 (en) Processor with instruction-based interrupt handling
JP2020091751A (ja) 演算処理装置および演算処理装置の制御方法
JP2014211890A (ja) マルチスレッドプロセッサ及びその割り込み処理方法
JP2013058265A (ja) マルチスレッドプロセッサ及びその割り込み処理方法
JP5536862B2 (ja) マルチスレッドプロセッサ
JP5573038B2 (ja) マルチスレッドプロセッサ及びプログラム
JP5838237B2 (ja) マルチスレッドプロセッサ
JP5536864B2 (ja) マルチスレッドプロセッサ
JP5770334B2 (ja) マルチスレッドプロセッサ
JP5536863B2 (ja) マルチスレッドプロセッサ
JP2012059195A (ja) マルチスレッドプロセッサ
KR20110113230A (ko) 마이크로프로세서

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110401

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120704

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120710

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120910

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20121227

R150 Certificate of patent or registration of utility model

Ref document number: 5173714

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350