JP2006139495A - 演算処理装置 - Google Patents

演算処理装置 Download PDF

Info

Publication number
JP2006139495A
JP2006139495A JP2004327961A JP2004327961A JP2006139495A JP 2006139495 A JP2006139495 A JP 2006139495A JP 2004327961 A JP2004327961 A JP 2004327961A JP 2004327961 A JP2004327961 A JP 2004327961A JP 2006139495 A JP2006139495 A JP 2006139495A
Authority
JP
Japan
Prior art keywords
context
thread
specific information
register
executing
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.)
Pending
Application number
JP2004327961A
Other languages
English (en)
Inventor
Ryuichi Sato
竜一 佐藤
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.)
Seiko Epson Corp
Original Assignee
Seiko Epson 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 Seiko Epson Corp filed Critical Seiko Epson Corp
Priority to JP2004327961A priority Critical patent/JP2006139495A/ja
Publication of JP2006139495A publication Critical patent/JP2006139495A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)

Abstract

【課題】 OSスレッドを介在することなくコンテキストスイッチを行うことが可能な演算処理装置を提供する。
【解決手段】 命令流を構成する命令の実行に伴うコンテキストを記憶するための複数のレジスタファイルを含むレジスタ群113と、レジスタによって構成され、レジスタファイルに記憶されているコンテキストを退避させるためのコンテキストキャッシュ100と、レジスタファイルにおけるコンテキストスイッチの発生時、レジスタファイルに読み込まれるべきコンテキストのメモリユニット106における格納先にかかる情報を記憶するncspを備え、スレッドの1つが他のスレッドにコンテキストスイッチを要求した場合、要求を受けたスレッドを実行しているハードウェアがncspに記憶されている格納先に係る情報に基づいてコンテキストキャッシュ100からコンテキストを読み出してレジスタファイルに格納させる。
【選択図】 図1

Description

本発明は、複数の命令流を並列に扱うことが可能なマルチスレッド方式の演算処理装置に関する。
プロセッサでは、複数のタスクやスレッド(スレッド等という。)の間で実行の入れ替えが発生することがある。実行の入れ替えにあっては、入れ替えに先立って先に実行されていたスレッド等の実行を再開するため、このスレッド等の実行に用いられていたレジスタファイルに記憶されているデータ(コンテキスト)を退避させる。
コンテキストの退避がなされたレジスタファイルには入れ替え後に実行されるスレッド等のコンテキストが読み込まれる。そして、入れ替わったスレッド等の実行後、退避されていたコンテキストが再びこのレジスタファイルに復元されて処理再開が可能な状態になる。このような処理は、一般的にコンテキストスイッチといわれている。
ところで、プロセッサには、一度に扱える命令流が1つのシングルスレッドプロセッサと、複数の命令流を同時に扱うことが可能なマルチスレッドプロセッサとがある。このような従来例として、例えば、特許文献1に記載された発明がある。
マルチスレッドプロセッサにおけるコンテキストスイッチは、コンテキストスイッチの指示を出したOSスレッドがレジスタファイル内のコンテキストを退避、復元させる場合と、コンテキストスイッチの指示を受けたスレッドを実行しているハードウェアがコンテキストスイッチの指示によって発生する割り込みを受け、その割り込み処理においてコンテキストを退避、復元させる場合とがある。両者を比較した場合、コンテキストスイッチを指示したOSスレッドがコンテキストの退避、復元を行った方が指示を受けて割り込み処理内でコンテキストを復元、退避するよりもプロセッサの実行処理能力が低下する。
このような相違を図8、図9を使って説明する。図8は、コンテキストスイッチを指示したOSスレッドがコンテキストスイッチを行う処理の手順を説明するための図である。図9は、コンテキストスイッチの指示を受けたスレッドの実行が割り込みによって中断され、割り込み処理内でコンテキストスイッチを行う処理の手順を説明するための図である。図8、図9のいずれにおいても、OSスレッドが実行されており、それと同時に実行されている一般のスレッドがコンテキストスイッチの対象となる。
図8に示すように、コンテキストスイッチを指示したOSスレッドが現在実行されているスレッド1のコンテキストの退避、復元を行う場合、OSスレッドがスレッド1を実行しているハードウェアの停止を指示する。そして、このハードウェアの停止を待って現在実行されているスレッド1のコンテキストを退避させる。そして、次に実行されるスレッド2のコンテキストをレジスタファイルに復元し、スレッド2を実行するハードウェアに再開を指示する。
一方、コンテキストスイッチを指示されたスレッド1がOSスレッドの操作によらずコンテキストスイッチを行う場合、図9に示すように、OSスレッドがスレッド1にコンテキストスイッチを指示する。指示によって発生する割り込みを受けて割り込み処理内で現在実行されているスレッド1のコンテキストを退避させ、次に実行されるスレッド2のコンテキストを復元する。そして、コンテキストスイッチ割り込みから処理を復帰させる。
OSスレッドが他のスレッドを実行するハードウェアを一時停止させてコンテキストスイッチを行う方法によれば、スレッド1側ではコンテキストスイッチの前後で停止期間が生じる。また、OSスレッド側でもコンテキストの退避,復元を行うことによって実効的な処理の性能が低下する。さらに、スレッド1のコンテキストを退避させ、復元させるためにスレッド等の実行に使用しているレジスタファイルを相互に接続する必要が生じ、特に命令長が短い場合にはレジスタファイルの指定が困難であるという不具合がある。
一方、OSスレッドが他のスレッドを実行しているハードウェアに指示して割り込み処理内でコンテキストスイッチを行わせる方法によれば、コンテキストスイッチを要求されたスレッドを実行しているハードウェアはコンテキストスイッチの前後で停止せず、図8で説明した処理よりも高い処理効率を得ることができる。また、OSスレッドはコンテキストスイッチの指示を出すだけでよく、指示を出した後はOSとして処理すべき他の処理を行うことができる。このため、プロセッサの実効的な使用効率を高めることができる。
特開2002−140200号公報
以上述べたように、マルチスレッドプロセッサでは、OSスレッドが他のスレッドのコンテキストを退避,復元するよりもコンテキストスイッチ指示によって発生する割り込み処理によって行う方が高い処理効率を得ることができる。
しかしながら、一般的にプロセッサでは、OSがスレッド等のコンテキスト格納先アドレスを管理している。このため、従来のプロセッサは、存在できるOSスレッドが同時にひとつの場合、OSスレッドを介在することなくコンテキストスイッチを行うことができなかった。
本発明は、このような点に鑑みてなされたものであり、OSスレッドを介在することなくコンテキストスイッチを行うことが可能な演算処理装置を提供することを目的とする。
以上の課題を解決するため、本発明の演算処理装置は、スレッドまたはタスクごとに対応付けられたハードウェアリソースを複数備え、複数の命令流を並行して実行する演算処理装置であって、命令流を構成する命令の実行に伴うコンテキストを記憶するための複数のレジスタを含むレジスタ群と、レジスタによって構成され、前記レジスタに記憶されているコンテキストを退避させるためのコンテキストキャッシュ手段と、前記レジスタにおけるコンテキストスイッチの発生時、該レジスタに読み込まれるべきコンテキストを特定するため第1特定情報を記憶する第1特定情報記憶手段と、を備え、前記ハードウェアリソースの1つで実行されているスレッドが他のハードウェアリソースで実行されているスレッドにコンテキストスイッチを要求した場合、要求を受けてスレッドを実行しているハードウェアリソースが、前記第1特定情報記憶手段に記憶されている第1特定情報に基づいて前記コンテキストキャッシュ手段からコンテキストを前記レジスタに読み込ませることを特徴とする。
この発明によれば、スレッドの1つが他のスレッドにコンテキストスイッチを要求した場合、コンテキストスイッチを要求されたスレッドを実行しているハードウェアが第1特定情報記憶手段に記憶されている第1特定情報に基づいてコンテキストキャッシュ手段からコンテキストをレジスタに読み込むことができる。つまり、コンテキストスイッチを要求したスレッドによらず、要求を受けたスレッドを実行しているハードウェアの側でコンテキストスイッチ時に次に実行されるスレッドに使用されるコンテキストをロードすることができる。
したがって、請求項1に記載の発明は、コンテキストスイッチをOSスレッドが要求するものとした場合、OSスレッドを介在することなくコンテキストスイッチを行うことが可能な演算処理装置を提供することができる。
請求項2に記載の発明にかかる演算処理装置は、前記レジスタにおけるコンテキストスイッチの発生時、該レジスタから退避すべきコンテキストを特定するための第2特定情報を記憶する第2特定情報記憶手段をさらに備え、前記ハードウェアリソースの1つで実行されているスレッドが他のハードウェアリソースで実行されているスレッドにコンテキストスイッチを要求した場合、要求を受けたスレッドを実行しているハードウェアリソースは、退避すべきコンテキストを、前記第2特定情報記憶手段に記憶されている第2特定情報と共に前記コンテキストキャッシュ手段に退避することを特徴とする。
この発明によれば、要求を受けたハードウェアスレッドが、第2特定情報に基づいてコンテキストをコンテキストキャッシュ手段に退避させることができる。つまり、コンテキストスイッチを要求したハードウェアスレッドによらず、要求を受けたハードウェアスレッドの側でコンテキストスイッチ時に前の命令の処理に使用されたコンテキストを退避させることができる。
したがって、請求項2に記載の発明は、コンテキストスイッチをOSスレッドが要求するものとした場合、OSスレッドを介在することなくコンテキストスイッチを行うことが可能な演算処理装置を提供することができる。
請求項3に記載の発明にかかる演算処理装置は、外部記憶手段と接続し、前記コンテキストキャッシュ手段に退避されたコンテキストは、第2特定情報に基づいて前記外部記憶手段に書き戻されることを特徴とする。
この発明によれば、コンテキストを第2特定情報記憶手段に記憶されている第2特定情報と共にコンテキストキャッシュ手段に退避させることができる。このため、コンテキストキャッシュ手段にアクセスしてコンテキストをメモリに書き戻す場合、この第2特定情報をベースアドレスにして一定のデータ長の間隔でメモリにアクセスし、コンテキストを書き戻すことができる。
請求項4に記載の発明にかかる演算処理装置は、コンテキストスイッチを要求したスレッドを実行しているハードウェアリソースが前記第1特定情報記憶手段に第1特定情報を設定し、要求を受けたスレッドを実行しているハードウェアリソースは、コンテキストスイッチ発生時に前記第2特定情報記憶手段に記憶されている第2特定情報を前記第1特定情報記憶手段に記憶されている情報によって更新することを特徴とする。
この発明によれば、コンテキストスイッチを要求したスレッドが、第1特定情報記憶手段にレジスタに読み込まれるべきコンテキストのコンテキストキャッシュ手段における格納先にかかる情報を設定することができる。このため、コンテキストスイッチの要求を受けたスレッドを実行していたハードウェアの側で次に実行するスレッドのコンテキストを読み込むことができる。
また、この発明によれば、要求を受けたスレッドを実行しているハードウェアが、コンテキストスイッチ発生時に第2特定情報記憶手段に記憶されている情報を格納先記憶手段に記憶されている情報によって更新することができる。このため、次に実行されるスレッドのコンテキストを書き戻す際の書き戻し先を自動的にコンテキストが格納されている先に設定することができる。
請求項5に記載の発明にかかる演算処理装置は、前記第1特定情報記憶手段に記憶されている第1特定情報、前記第2特定情報記憶手段に記憶されている第2特定情報の少なくとも一方が、前記外部記憶手段のアドレスに対応付けられる情報であることを特徴とする。
この発明によれば、コンテキストと外部記憶装置におけるアドレスとを対応付け、コンテキストを外部記憶手段の所定のアドレスからコンテキストキャッシュ手段に読み出す、あるいはコンテキストをコンテキストキャッシュ手段から外部記憶手段の所定のアドレスに書き戻すことができる。
請求項6に記載の発明にかかる演算処理装置は、第1特定情報および第2特定情報が、前記外部記憶手段におけるコンテキストの書き戻し先のアドレスであることを特徴とする。
この発明によれば、コンテキストと外部記憶手段におけるアドレスとを直接対応つけることができ、第1特定情報および第2特定情報と外部記憶手段のアドレスとを対応つけるための構成を省くことができる。
以下、図を参照して本発明に係る演算処理装置及びコンテキストスイッチ方法の実施の形態を説明する。
図1は、本実施形態の演算処理装置(プロセッサという。)の本発明に係る構成を説明するための図である。本実施形態のプロセッサは、複数の命令流を並行して実行するマルチスレッドプロセッサである。
なお、スレッドまたはタスクとは、命令流の処理の単位であって、各スレッドやタスクはadd等の命令によって構成される。また、ハードウェアリソースとはプログラムカウンタやステータスレジスタ、スタックポインタ、汎用レジスタ等のハードウェア資源をいう。
図1に示した構成は、命令流を構成する命令の実行に伴うコンテキストを記憶するための複数のレジスタを含むレジスタ群113と、レジスタによって構成され、レジスタ群113のレジスタに記憶されているコンテキストを退避させるためのコンテキストキャッシュ100と、を備えている。コンテキストキャッシュ100は、複数のキャッシュ領域100a、100b、100c、100dでなる。
レジスタ群113は、複数の独立した4つのレジスタファイルrf0、rf1、rf2、rf3を備えている。4つのレジスタファイルrf0〜rf3は、階層構造を有している。また、各々が図示しない汎用レジスタ部と特殊レジスタ部とで構成されている。
汎用レジスタ部は、スレッドの演算命令の実行に使用されるレジスタであって、実行された演算の結果や演算の経過に係る情報が記憶されている。特殊レジスタは、プログラムの処理の段階や状態を示すプログラムカウンタやステータスレジスタを含んでいる。
さらに、本実施形態のレジスタファイルrf0〜rf3は、それぞれがncsp(Next Context Stack Pointer)を備えている。ncspは、コンテキストスイッチの発生時、レジスタファイルrf0、rf1、rf2、rf3の各々に読み込まれるコンテキストを特定するための第1特定情報記憶手段として機能する。また、ncspに記憶される情報は、第1特定情報に相当する。本実施形態では、第1特定情報をレジスタファイルrf0〜rf3に読み込まれるべきコンテキストのメモリユニット106における格納先にかかる情報とした。
また、本実施形態のレジスタファイルrf0〜rf3は、それぞれが、ccsp(Current Context Stack Pointer)を備えている。ccspは、コンテキストスイッチの発生時、レジスタファイルrf0、rf1、rf2、rf3の各々から退避されるべきコンテキストを特定するための第2特定情報記憶手段として機能する。また、ccspに記憶される情報は、第2特定情報に相当する。本実施形態では、第2特定情報をレジスタファイルrf0〜rf3から退避すべきコンテキストのメモリユニット106における書き戻し先にかかる情報とした。
なお、本実施形態では、ncsp、ccspの各々に記憶されている情報を、スレッドIDとも記す。本実施形態では、レジスタファイルrf0〜rf3に読み込まれるべきコンテキストのメモリユニット106における格納先アドレスそのものをスレッドIDとして使用する。また、レジスタファイルrf0〜rf3から退避すべきコンテキストのメモリユニット106における書き戻し先アドレスそのものをスレッドIDとして使用する。
以上述べた構成は、以下のように動作する。すなわち、スレッドの1つが他のスレッドにコンテキストスイッチを要求した場合、コンテキストスイッチの要求を受けたスレッドを実行しているハードウェアは、ccspの内容基づいて、レジスタファイルrf0〜rf3からコンテキストキャッシュ100にコンテキストを退避させる。
ccspは、コンテキストスイッチの直前、すなわち現在対応するレジスタファイルに記憶されているコンテキストのメモリユニット106における格納先をスレッドIDとして記憶している。また、ncspは、コンテキストスイッチの後、ncspに対応するレジスタファイルを用いて実行されるスレッドのコンテキストのメモリユニット106における格納先をスレッドIDとして記憶している。
要求を受けたスレッドを実行しているハードウェアは、ncspに記憶されている格納先に係る情報に基づいてコンテキストキャッシュ100からコンテキストを読み出し、レジスタファイルrf0〜rf3のうちのncspに対応するレジスタファイルに記憶させる。
ccsp、ncspは、いずれもレジスタ群113に含まれるレジスタファイルrf0〜rf3ごとに設けられている。ccspのレジスタファイルとの対応関係をccsp0、ccsp1、ccsp2、ccsp3の添え字で示す。また、ncspのレジスタファイルとの対応関係をncsp0、ncsp1、ncsp2、ncsp3の添え字で示す。
さらに、図1に示した構成は、ccspに記憶されているメモリユニット106のアドレスをスレッドIDとしてコンテキストキャッシュ100を検索するキー検索部103、コンテキストキャッシュ100にあるコンテキストが必要に応じて書き戻されるメモリユニット106、メモリユニット106とコンテキストキャッシュ100との間でデータアクセスするメモリアクセスユニット105を備えている。
メモリアクセスユニット105は、アドレスインクリメンタ109を備え、予め指定されている先頭アドレスから一定のデータ長ごとに連続してアクセスすることによって簡単なデータアクセスを可能にしている。また、本実施形態のプロセッサは、図示しない命令メモリを備えている。命令メモリは、プロセッサで実行されるスレッドが記憶されているメモリである。プロセッサは、命令メモリに記憶されているスレッドを構成する命令をフェッチしてデコードし、レジスタファイルを使って演算する。
このような本実施形態のプロセッサは、実行中のスレッドのうちの一が他のスレッドにコンテキストスイッチを要求した場合、コンテキストスイッチの要求を受けたスレッドを実行しているハードウェアがレジスタファイルに記憶されているコンテキストをコンテキストキャッシュ100の格納先に退避させる。
本実施形態では、他のスレッドにコンテキストスイッチを要求するスレッドをITRON(商標)等のOSとし、このようなスレッドを以降OSスレッドと記す
図2は、以上述べた本実施形態のプロセッサの動作を説明するための図である。図2に示した動作では、プロセッサは、レジスタファイルrf1を使ってスレッド1の演算処理を実行している。このとき、レジスタファイルrf1のccsp1にはレジスタファイルrf1に記憶されているコンテキストの書き戻し先となるメモリユニット106のアドレスが記憶されている。
OSスレッドがスレッド1に対してコンテキストスイッチを発生させると、OSスレッドは、コンテキストスイッチ後に実行されるスレッド2のメモリユニット106におけるコンテキストの格納先のアドレスをレジスタファイルrf1のncsp1に設定する。このような処理は、コンテキストの格納先がOSによって管理されることから可能になる。
次に実行されるスレッド2のコンテキストの格納先アドレスをncsp1に設定した後、OSスレッドは、スレッド1を実行しているハードウェアにコンテキストスイッチを要求する。この要求にしたがって、スレッド1を実行しているハードウェアは、スレッド1の実行を中断する。そして、コンテキストキャッシュ装置100に中断したスレッドのコンテキストとccspの内容を退避させる。
次に、スレッド1を実行していたハードウェアは、ncsp1に記憶されているアドレスに基づいてコンテキストスイッチ後にレジスタファイルrf1で実行されるスレッド2のコンテキストをレジスタファイルrf1に読み込む。また、ccsp1に記憶されているアドレスを現在ncsp1に記憶されているアドレスによって更新する。この結果、コンテキストスイッチ後にレジスタファイルrf1で実行されるスレッド2のコンテキストの格納先アドレスがccsp1に設定される。
このような処理により、コンテキストスイッチの要求を受けたスレッドを実行していたハードウェアの側で次に実行されるスレッドのコンテキストをコンテキストキャッシュ100から読み込むことができる。
なお、ccspに保持されているアドレスの更新は、コンテキストスイッチの際に実行される割り込み処理時に自動的に行われる。また、ncspは、コンテキストスイッチが発生したとき、次に実行されるスレッドのコンテキストを格納するアドレスを保持している。ncspに保持されているアドレスの更新は、他に実行されているスレッドによっても可能である。
以上の処理の終了後、レジスタファイルrf1を用いて実行されていたスレッドのコンテキストスイッチが完了し、プロセッサの処理がコンテキストスイッチ処理から復帰する。
次に、以上述べた本実施形態の動作におけるコンテキスト及びccsp、ncspに記憶されるアドレスの更新について説明する。
図3ないし図7は、図1に示した構成においてコンテキストスイッチが発生した場合のコンテキスト及びメモリユニット106のアドレスの移動について説明するための図である。なお、図3〜図7のいずれにおいても、図中にaで示した矢線はコンテキストキャッシュ100のアドレスを示す情報の流れ示し、cで示した矢線はコンテキストの流れを示す。また、kで示した矢線はコンテキストキャッシュ100のアドレスを検索するためのスレッドIDの流れを示している。
図3は、コンテキストスイッチ発生直前の状態を示している。この状態では、それぞれ異なる4つのスレッドがレジスタファイルrf0〜rf3を使って実行されている。ただし、レジスタファイルrf0はOSスレッドの実行に使用されていて、レジスタファイルrf1〜rf3は、いずれもOSスレッド以外のスレッド(ユーザースレッド)の実行に使用されている。
図3に示した状態にあっては、レジスタファイルrf0、レジスタファイルrf1、レジスタファイルrf2、レジスタファイルrf3のいずれにも異なるスレッドのコンテキストが記憶されている。また、各レジスタファイルのccspにはレジスタファイルに記憶されているコンテキストの書き戻し先アドレスが記憶されている。
図3に示した状態においてコンテキストスイッチが発生し、レジスタファイルrf1に記憶されているコンテキスト(コンテキスト1とする。)とコンテキストキャッシュ100のキャッシュ領域100aに格納されているコンテキスト(コンテキスト2とする。)とを入れ替える場合、OSスレッドは、図4に示すように、コンテキスト2のスレッドIDとなるメモリユニット106のアドレスをレジスタファイルrf1のncsp1に設定し、さらにコンテキストスイッチを指示する。本実施形態のコンテキストスイッチにおけるOSスレッドの動作は以上で終了する。
次に、レジスタファイルrf1を使用して実行されているスレッド1は、図5に示すように、コンテキスト1をccsp1に記憶されているIDスレッドと共にコンテキストキャッシュ100に退避させる。図5の例では、キャッシュ領域100aにあったコンテキスト2がキャッシュ領域100bにシフトされた後、コンテキスト1は、コンテキストキャッシュのキャッシュ領域100aに退避される。
次に、ccsp1は、図6に示すように、ncsp1に記憶されているIDスレッドで更新される。さらに、図7に示すように、コンテキスト2をレジスタファイルrf1に読み込む。
本実施形態のコンテキスト2の読み込みは、キー検索部103によるコンテキストの検索によって行われる。すなわち、キー検索部103は、ccsp1に記憶されているコンテキスト2のメモリユニット106における書き戻し先アドレスをスレッドIDとして用い、コンテキストキャッシュ100を検索する。そして、IDアドレスが一致するコンテキスト2を特定し、レジスタファイルrf1に読み込む。
なお、図5に示したように、本実施形態では、コンテキストキャッシュ100の内部でコンテキストが矢線Aの方向にシフトし、当初ncsp1に設定したアドレスにない場合がある。このような場合、スレッド1は、ncsp1に設定されたアドレスに基づいてアドレスを自動的にインクリメントする方法でコンテキストキャッシュ100にアクセスし、コンテキスト2を読み出す。
また、コンテキストキャッシュ100に格納されたコンテキストは、必要に応じてメモリユニット106に退避される。このとき、本実施形態のプロセッサは、レジスタファイルrf1を使用して実行されているスレッドのコンテキストをccsp1に記憶されている書き戻し先アドレスと共にコンテキストキャッシュ100に退避させて格納している。このため、コンテキストキャッシュに記憶されている書き戻し先アドレスをベースアドレスにしてメモリユニット106に一定のデータ長の間隔でアクセスすることで簡便にコンテキストを読み出し、書き込むことができる。
以上述べたように、本実施形態のプロセッサは、コンテキストスイッチを要求したスレッドによらず、要求を受けたスレッドの側でコンテキストスイッチ割り込み処理時に次に実行されるスレッドのコンテキストをロードすることができる。また、本実施形態のプロセッサは、コンテキストスイッチを要求したスレッドによらず、要求を受けたスレッドの側でコンテキストスイッチ割り込み処理時に先に実行されていたスレッドのコンテキストを退避させることができる。このため、OSスレッドを介在することなくコンテキストスイッチに起因するレジスタファイルの入れ替えを行うことが可能になる。
このような本実施形態のプロセッサは、OSスレッドはコンテキストスイッチを要求するだけでよく、以降、コンテキストスイッチ完了までをコンテキストスイッチ割り込み処理で行うことができる。このため、OSスレッドは、コンテキストスイッチを要求した以降の時間を他の処理に充てることができ、OSのコンテキストにかかる負荷を軽減すると共にコンテキストスイッチ以外の処理に充てられる時間を増やしてプロセッサにおけるOSの処理効率を高めることができる。
また、コンテキストスイッチの前後でコンテキストスイッチ要求を受けたスレッドを実行しているハードウェアを停止する時間を短縮することができるので、プロセッサの処理効率をいっそう高めることができる。
本発明の一実施形態のプロセッサのうち、本発明に係る構成を説明するための図である。 図1に示した構成の動作を説明するための図である。 図1に示した構成においてコンテキストスイッチが発生した場合の動作を説明するための図であって、コンテキストスイッチ発生直前の状態を示した図である。 コンテキストが現在格納されているアドレスをレジスタファイルのncsp1に設定した状態を示す図である。 コンテキストをccsp1に記憶されているコンテキストキャッシュ100のアドレスに退避させた状態を示す図である。 ncsp1に記憶されているアドレスでccsp1の情報が更新された状態を示す図である。 コンテキストキャッシュにあったコンテキストをレジスタファイルにロードした状態を示す図である。 コンテキストスイッチを行う処理の手順を説明するための図である。 コンテキストスイッチの指示を受けたスレッドの実行が割り込みによって中断され、割り込み処理内でコンテキストスイッチを行う処理の手順を説明するための図である。
符号の説明
100 コンテキストキャッシュ、103 キー検索部、105 メモリアクセスユニット、106 メモリユニット、109 アドレスインクリメンタ、113 レジスタ群
rf0,rf1,rf2,rf3 レジスタファイル

Claims (6)

  1. スレッドまたはタスクごとに対応付けられたハードウェアリソースを複数備え、複数の命令流を並行して実行する演算処理装置であって、
    命令流を構成する命令の実行に伴うコンテキストを記憶するための複数のレジスタを含むレジスタ群と、
    レジスタによって構成され、前記レジスタに記憶されているコンテキストを退避させるためのコンテキストキャッシュ手段と、
    前記レジスタにおけるコンテキストスイッチの発生時、該レジスタに読み込まれるべきコンテキストを特定するため第1特定情報を記憶する第1特定情報記憶手段と、を備え、
    前記ハードウェアリソースの1つで実行されているスレッドが他のハードウェアリソースで実行されているスレッドにコンテキストスイッチを要求した場合、要求を受けたスレッドを実行しているハードウェアリソースが、前記第1特定情報記憶手段に記憶されている第1特定情報に基づいて前記コンテキストキャッシュ手段からコンテキストを前記レジスタに読み込ませることを特徴とする演算処理装置。
  2. 前記レジスタにおけるコンテキストスイッチの発生時、該レジスタから退避すべきコンテキストを特定するための第2特定情報を記憶する第2特定情報記憶手段をさらに備え、
    前記ハードウェアリソースの1つで実行されているスレッドが他のハードウェアリソースで実行されているスレッドにコンテキストスイッチを要求した場合、要求を受けたスレッドを実行しているハードウェアリソースは、退避すべきコンテキストを、前記第2特定情報記憶手段に記憶されている第2特定情報と共に前記コンテキストキャッシュ手段に退避することを特徴とする請求項1に記載の演算処理装置。
  3. 外部記憶手段と接続し、前記コンテキストキャッシュ手段に退避されたコンテキストは、第2特定情報に基づいて前記外部記憶手段に書き戻されることを特徴とする請求項1または2に記載の演算処理装置。
  4. コンテキストスイッチを要求したスレッドを実行しているハードウェアリソースが前記第1特定情報記憶手段に第1特定情報を設定し、要求を受けたスレッドを実行しているハードウェアリソースは、コンテキストスイッチ発生時に前記第2特定情報記憶手段に記憶されている第2特定情報を前記第1特定情報記憶手段に記憶されている情報によって更新することを特徴とする請求項2または3に記載の演算処理装置。
  5. 前記第1特定情報記憶手段に記憶されている第1特定情報、前記第2特定情報記憶手段に記憶されている第2特定情報の少なくとも一方が、前記外部記憶手段のアドレスに対応付けられる情報であることを特徴とする請求項2から4のいずれか1つに記載の演算処理装置。
  6. 第1特定情報および第2特定情報が、前記外部記憶手段におけるコンテキストの書き戻し先のアドレスであることを特徴とする請求項5に記載の演算処理装置。
JP2004327961A 2004-11-11 2004-11-11 演算処理装置 Pending JP2006139495A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2004327961A JP2006139495A (ja) 2004-11-11 2004-11-11 演算処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004327961A JP2006139495A (ja) 2004-11-11 2004-11-11 演算処理装置

Publications (1)

Publication Number Publication Date
JP2006139495A true JP2006139495A (ja) 2006-06-01

Family

ID=36620288

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004327961A Pending JP2006139495A (ja) 2004-11-11 2004-11-11 演算処理装置

Country Status (1)

Country Link
JP (1) JP2006139495A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008140116A (ja) * 2006-12-01 2008-06-19 Nec Corp パーティション・コンテキスト制御装置及び方法、並びにコンピュータ
JP2009199384A (ja) * 2008-02-22 2009-09-03 Nec Corp データ処理装置
US9135054B1 (en) * 2008-07-16 2015-09-15 Apple Inc. Method and apparatus to migrate stacks for thread execution
US11200058B2 (en) 2014-05-07 2021-12-14 Qualcomm Incorporated Dynamic load balancing of hardware threads in clustered processor cores using shared hardware resources, and related circuits, methods, and computer-readable media

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008140116A (ja) * 2006-12-01 2008-06-19 Nec Corp パーティション・コンテキスト制御装置及び方法、並びにコンピュータ
JP2009199384A (ja) * 2008-02-22 2009-09-03 Nec Corp データ処理装置
US9135054B1 (en) * 2008-07-16 2015-09-15 Apple Inc. Method and apparatus to migrate stacks for thread execution
US10303523B2 (en) 2008-07-16 2019-05-28 Apple Inc. Method and apparatus to migrate stacks for thread execution
US11200058B2 (en) 2014-05-07 2021-12-14 Qualcomm Incorporated Dynamic load balancing of hardware threads in clustered processor cores using shared hardware resources, and related circuits, methods, and computer-readable media

Similar Documents

Publication Publication Date Title
US7290261B2 (en) Method and logical apparatus for rename register reallocation in a simultaneous multi-threaded (SMT) processor
JP6430970B2 (ja) 異なる命令セットアーキテクチャを有するプロセッサ上におけるオペレーティングシステムの実行
JP4119945B2 (ja) タスク処理装置
KR100848603B1 (ko) 데이터 처리장치와 복귀상태의 저장방법
JP5244160B2 (ja) 複数の命令シーケンサでのスレッド実行に基づく命令セットのためのメカニズム
US7412590B2 (en) Information processing apparatus and context switching method
JPH09258980A (ja) 並列マルチタスキングの方法及びシステム
US8578136B2 (en) Apparatus and method for mapping architectural registers to physical registers
JP2008084009A (ja) マルチプロセッサシステム
JP2008047145A (ja) デュアルスレッドプロセッサ
US7366814B2 (en) Heterogeneous multiprocessor system and OS configuration method thereof
US20110302395A1 (en) Hardware assist thread for dynamic performance profiling
JPWO2008023427A1 (ja) タスク処理装置
EP1811375B1 (en) Processor
JP2007517322A (ja) プロセッサにおける同時物理スレッド数からの論理スレッド数のデカップリング
JP4837247B2 (ja) プロセッサ
JP2006139495A (ja) 演算処理装置
KR100728899B1 (ko) 복수의 레지스터 집합과 하드웨어 작업 관리자를 가진고성능 멀티쓰레드 임베디드 프로세서
JP4631442B2 (ja) プロセッサ
JP2004103012A (ja) プロセッサの動作速度を向上させるキャッシュ構造及びキャッシュ管理方法を有するプロセッサ
JP2008269597A (ja) タスク処理装置
JP2006139496A (ja) 演算処理装置
JP3022398B2 (ja) 仮想計算機方式
JP6167193B1 (ja) プロセッサ
JP2006099335A (ja) コンテキスト処理装置

Legal Events

Date Code Title Description
RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20070403

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070627

RD03 Notification of appointment of power of attorney

Effective date: 20070627

Free format text: JAPANESE INTERMEDIATE CODE: A7423

A977 Report on retrieval

Effective date: 20081114

Free format text: JAPANESE INTERMEDIATE CODE: A971007

A131 Notification of reasons for refusal

Effective date: 20081125

Free format text: JAPANESE INTERMEDIATE CODE: A131

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090126

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20090317