JP2004220070A - コンテキスト切り替え方法及び装置、中央演算装置、コンテキスト切り替えプログラム及びそれを記憶したコンピュータ読み取り可能な記憶媒体 - Google Patents
コンテキスト切り替え方法及び装置、中央演算装置、コンテキスト切り替えプログラム及びそれを記憶したコンピュータ読み取り可能な記憶媒体 Download PDFInfo
- Publication number
- JP2004220070A JP2004220070A JP2003003038A JP2003003038A JP2004220070A JP 2004220070 A JP2004220070 A JP 2004220070A JP 2003003038 A JP2003003038 A JP 2003003038A JP 2003003038 A JP2003003038 A JP 2003003038A JP 2004220070 A JP2004220070 A JP 2004220070A
- Authority
- JP
- Japan
- Prior art keywords
- context
- thread
- cache
- register file
- data
- 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
Links
- 238000000034 method Methods 0.000 title claims description 28
- 230000015654 memory Effects 0.000 claims description 50
- 230000005540 biological transmission Effects 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 10
- 238000007796 conventional method Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/3009—Thread control instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/461—Saving or restoring of program or task context
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
【解決手段】OSは、Swap命令を発行し、コンテキストスイッチが開始する。Swap命令は、入れ替えるスレッドIDと共にスレッド制御ユニット9に発行される。スレッドIDは、コンテキストキャッシュ8に格納されているスレッドを一意に識別するために用いる。スレッド制御ユニット9は、コンテキスト専用バス12を経て、レジスタファイル1からコンテキストキャッシュ8へデータを退避すると同時に、コンテキストキャッシュ8からレジスタファイル1へ新しいスレッドのデータを送る。スレッド制御ユニット9は、送られてきたスレッドIDに基づいて自動的に必要な数だけレジスタファイル1内のデータとコンテキストキャッシュ8内のデータを入れ替える。
【選択図】 図3
Description
【発明の属する技術分野】
本発明は、コンテキスト切り替え方法及び装置、中央演算装置、コンテキスト切り替えプログラム及びそれを記憶したコンピュータ読み取り可能な記憶媒体に係り、特に、リアルタイム・オペレーティングシステム(RT−OS)等のOSにおいてコンテキストの切り替えによるオーバーヘッドの削減を可能にするコンテキスト切り替え方法及び装置、中央演算装置、コンテキスト切り替えプログラム及びそれを記憶したコンピュータ読み取り可能な記憶媒体に関する。ここで、コンテキストとは、例えば、汎用レジスタ、浮動小数点レジスタ、プログラムカウンタ、ステータスレジスタ等、記憶部(例、レジスタファイル)に記憶されている各スレッドの実行のための情報又は現在実行中の状態のことをいう。
【0002】
【従来の技術】
図8に、コンテキスト切り替え動作の説明図を示す。
この図では、複数のコンテキスト(スレッド)が1つの中央演算装置で切り替えられて実行されている例を示している。コンテキストが切り替わる場合、今まで実行していたコンテキストの状態(汎用レジスタ、浮動小数点レジスタ、プログラムカウンタ、ステータスレジスタなどであり、以下、単にコンテキストという場合がある。)を保存し、新しく実行するコンテキストの状態を読み出す必要がある。切り替え動作の際に要する時間をオーバーヘッドといい、オーバーヘッドは、コンテキストが切り替わる度に発生する。
【0003】
従来、コンテキスト切り替え時間を短縮するための技術としては、以下の文献が挙げられる。
特許文献1には、リアルタイムオペレーティングシステムを用いたマルチタスク処理装置において、各タスクに対応して占有される複数のレジスタバンクを設け、コンテキスト等の退避/復帰がレジスタバンクを切り替えることにより行い、ディスパッチ時間を短縮する技術が記載されている。
【0004】
また、特許文献2には、マルチタスク処理を行うマイクロプロセッサにおいて、複数のレジスタに対応してその内容の変化又は非変化を示すビットを設け、タスク切り替えが発生したときに、そのビットに従い、レジスタの内容が変化したときに退避命令を実行し、変化しないとき退避命令を実行しないようにすることで、OSのオーバーヘッドを減少させるレジスタ退避及び復元システムが記載されている。
【特許文献1】
特開平07−141208号
【特許文献2】
特開平09−212371号
【0005】
【発明が解決しようとする課題】
従来の方法では、コンテキストを切り替える場合、中央演算装置内に保持されているコンテキストの状態は、OS等のソフトウェアによりストア命令を用いて1つずつ中央演算装置外の記憶装置に保存される。その後、OS等のソフトウェアは、ロード命令を用いて新しいコンテキストを記憶装置から読み込む。つまり、コンテキストを切り替える度に、コンテキストの保存と読み込みのためのメモリアクセスが数百サイクルから千数百サイクルも生じることになり、大きなオーバーヘッドとなっている。また、従来の方法では、ロード命令やストア命令を用いたソフトウェアによるコンテキストの保存と読み込みを行っているため、1度に1つのデータしか扱うことができない。そのため保存すべき状態が増えるとコンテキストスイッチにかかる時間も増加する。
【0006】
本発明は、以上の点に鑑み、特に、リアルタイムOSなどコンテキストの切り替えが頻繁に発生するアプリケーションにおいて、コンテキストの切り替え(コンテキストスイッチ)によるオーバーヘッドを大幅に削減することを目的とする。本発明は、例えば、コンテキストを切り替える度に、コンテキストの保存と読み込みのためのメモリアクセスが、1サイクルから数サイクルで可能とするコンテキスト切り替え方法及び装置、中央演算装置、コンテキスト切り替えプログラム及びそれを記憶したコンピュータ読み取り可能な記憶媒体を提供することを目的とする。
【0007】
また、本発明は、特に実時間処理システムのようにコンテキストスイッチが頻繁に起こるシステムにおいて、コンテキストスイッチにかかる時間を一定とし、実時間性の時間粒度を非常に小さくすることを目的とする。
【0008】
【課題を解決するための手段】
本発明は、特に、
1. コンテキストを保持するための専用記憶装置(コンテキストキャッシュ)を持ち、
2. レジスタよりビット幅の広い専用バスを用いて専用記憶装置(コンテキストキャッシュ)と中央演算装置(CPU)を接続する、
ことにより、コンテキスト切り替えにかかるオーバーヘッドを削減する。
【0009】
本発明の第1の解決手段によると、
複数のコンテキストを切り替えるコンテキスト切り替え装置であって、
演算論理ユニット又はメモリアクセスユニットで実行すべきスレッドに関するコンテキストが記憶されたレジスタファイルと、
前記レジスタファイルに接続され、コンテキストをキャッシュするためのコンテキストキャッシュと、
前記レジスタファイルと前記コンテキストキャッシュを接続するコンテキストスイッチ専用バスと、
前記コンテキストキャッシュに記憶されているスレッドのコンテキストを識別するためのスレッド識別子(スレッドID)を記憶するスレッドIDテーブルを有し、演算論理ユニット及びメモリアクセスユニットと並列に接続され、前記コンテキストキャッシュと前記レジスタファイルとの間のコンテキストのデータ転送を制御するスレッド制御ユニットと
を備え、
前記スレッド制御ユニットは、
コンテキストの切り替えが発生した場合、入力された切り替え命令と新たに入れ替えるスレッド識別子(スレッドID)に基付き前記スレッドIDテーブルを検索し、
新たに入れ替えるコンテキストが記憶されている前記コンテキストキャッシュのアドレスと、実行中のコンテキストが記憶されている前記レジスタファイルのレジスタ識別子を求め、
求めたアドレスに基付き前記コンテキストキャッシュをアクセスし、且つ、求めたレジスタ識別子に基付き前記レジスタファイルをアクセスし、前記レジスタファイル及び/又は前記コンテキストキャッシュのコンテキストを前記コンテキストスイッチ専用バスを介して入れ替え、退避又は復帰を実行する
前記コンテキスト切り替え装置
が提供される。
【0010】
本発明の第2の解決手段によると、
上述のようなコンテキスト切り替え装置と、
命令及びデータをそれぞれキャッシュする命令キャッシュ及びデータキャッシュと、
前記命令キャッシュから命令をフェッチ及びデコードする命令フェッチユニットと、
レジスタファイルに記憶された命令に従い各種演算を行い、演算結果を前記レジスタファイルに書き戻す演算論理ユニットと、
前記レジスタファイルからオペランドと命令が送られ、前記データキャッシュをアクセスし、ロード又はストアを実行するメモリアクセスユニットと、
前記レジスタファイル、前記演算論理ユニット、前記メモリアクセスユニット及び前記スレッド制御ユニットを並列に接続する演算バスと、
を備えた中央演算装置
が提供される。
【0011】
本発明の第3の解決手段によると、
演算論理ユニット又はメモリアクセスユニットで実行すべきスレッドに関するコンテキストが記憶されたレジスタファイルと、
前記レジスタファイルに接続され、コンテキストをキャッシュするためのコンテキストキャッシュと、
前記レジスタファイルと前記コンテキストキャッシュを接続するコンテキストスイッチ専用バスと
を備えたコンテキスト切り替え装置を用い、複数のコンテキストを切り替えるコンテキスト切り替え方法であって、
コンテキストの切り替えが発生した場合、入力された切り替え命令と新たに入れ替えるスレッド識別子(スレッドID)に基付き、前記コンテキストキャッシュに記憶されているスレッドのコンテキストを識別するためのスレッド識別子(スレッドID)を記憶する前記スレッドIDテーブルを検索し、
新たに入れ替えるコンテキストが記憶されている前記コンテキストキャッシュのアドレスと、実行中のコンテキストが記憶されている前記レジスタファイルのレジスタ識別子を求め、
求めたアドレスに基付き前記コンテキストキャッシュをアクセスし、且つ、求めたレジスタ識別子に基付き前記レジスタファイルをアクセスし、前記レジスタファイル及び/又は前記コンテキストキャッシュのコンテキストを前記コンテキストスイッチ専用バスを介して入れ替え、退避又は復帰を実行する
前記コンテキスト切り替え方法
が提供される。
【0012】
さらに、本発明の第4の解決手段によると、
演算論理ユニット又はメモリアクセスユニットで実行すべきスレッドに関するコンテキストが記憶されたレジスタファイルと、
前記レジスタファイルに接続され、コンテキストをキャッシュするためのコンテキストキャッシュと、
前記レジスタファイルと前記コンテキストキャッシュを接続するコンテキストスイッチ専用バスと
を備えたコンテキスト切り替え装置を用い、コンピュータが複数のコンテキストを切り替えるコンテキスト切り替えプログラムを記録したコンピュータ読み取り可能な記録媒体であって、
コンテキストの切り替えが発生した場合、入力された切り替え命令と新たに入れ替えるスレッド識別子(スレッドID)に基付き、前記コンテキストキャッシュに格納されているスレッドのコンテキストを識別するためのスレッド識別子(スレッドID)を記憶する前記スレッドIDテーブルを検索するステップと、
新たに入れ替えるコンテキストが記憶されている前記コンテキストキャッシュのアドレスと、実行中のコンテキストが記憶されている前記レジスタファイルのレジスタ識別子を求めるステップと、
求めたアドレスに基付き前記コンテキストキャッシュをアクセスし、且つ、求めたレジスタ識別子に基付き前記レジスタファイルをアクセスし、前記レジスタファイル及び/又は前記コンテキストキャッシュのコンテキストを前記コンテキストスイッチ専用バスを介して入れ替え、退避又は復帰を実行するステップと
をコンピュータに実行させるためのコンテキスト切り替えプログラム、及び、そのプログラムを記録したコンピュータ読み取り可能な記録媒体
が提供される。
【0013】
【発明の実施の形態】
1.関連技術
なお、本実施の形態は、一例として、並列分散リアルタイム制御用Responsive Multi−Threaded (RMT) Processorの中央演算装置上でコンテキストキャッシュとして利用されている。そこで、まず、本実施の形態が関連するCPUを有するコンピュータについて説明する。
【0014】
図1に、一般的なCPUを含むコンピュータの構成図を示す。
このコンピュータは、CPU10、メモリ20、I/O30、バス40を有する。CPU10は、バス40を介して、メモリ20、I/O30等と接続されている。CPU10は、レジスタファイル1、命令フェッチユニット2、命令キャッシュ3、演算論理ユニット(arithmetic logic unit、ALU)4、メモリアクセスユニット5、データキャッシュ6、バスインタフェースユニット7、演算バス11を備える。
【0015】
レジスタファイル1は、汎用レジスタ(GPR)、浮動小数点レジスタ(FPR)、プログラムカウンタ(PC)、ステータスレジスタ(SR)等の各種レジスタを含む。レジスタファイル1は、現在実行中のコンテキストを記憶する。命令キャッシュ3及びデータキャッシュ6は、例えば、SRAM、フリップフロップ(FF)等の素子が用いられ、アクセス、読み出し、書き込み等の処理速度が速いものの記憶容量が小さい。一方、CPU10外部のメモリ20は、SDRAM、DRAM等の素子が用いられ、アクセス、読み出し、書き込み等の処理速度がキャッシュより遅いものの記憶容量が大きい。
【0016】
ALU4は、局所性原理に従い、命令キャッシュ3、データキャッシュ6又はメモリ20から必要なデータ及び命令を利用する。ALU4は、命令キャッシュ3又はデータキャッシュ6に処理に必要な命令又はデータがあればそれを利用し、なければメモリ20にアクセスして必要な命令又はデータを得る。また、バスインターフェースユニット7は、命令キャッシュ3、メモリアクセスユニット5、データキャッシュ6とCPU外部のメモリ20、I/O30等をバス40を介して接続し、CPU内部と外部の間でデータの入出力行うユニットである。演算バス11は、レジスタファイル1、ALU4、メモリアクセスユニット5を並列に接続する演算パイプライン等のバスである。
【0017】
命令フェッチユニット2は、命令キャッシュ3へアドレス(Address)を出力し、命令キャッシュ3から命令(instruction)をフェッチし、デコードする。デコードされた命令に従い、ALU4がレジスタファイル1から必要なオペランドを読み出す。ALU4は、それに従い各種演算を行い、演算結果をレジスタファイル1に書き戻す。ロード(Load)又はストア(Store)等のメモリアクセス命令の場合、デコードされた命令に従い、メモリアクセスユニット5がオペランドを読み出す。
【0018】
メモリアクセスユニット5は、データキャッシュ6にアクセスしLoad又はStoreを行う。Store命令の場合、メモリアクセスユニット5は、アドレスとデータをデータキャッシュ6に送り、データをデータキャッシュ6に格納する。Load命令の場合、メモリアクセスユニット5は、アドレスをデータキャッシュ6に送りデータキャッシュ6からデータを読み出す。読み出したデータは、レジスタファイル1に書き戻される。このとき、データキャッシュ6に求めるデータがなければ、メモリ20からそれを読み出す。
【0019】
このような一般的な構成の場合、レジスタファイル1に記憶されたコンテキストの退避はStore命令を用いて行う。
【0020】
図2に、一般的なCPUでのコンテキストスイッチのフローチャートを示す。OS等のソフトウェアはStore命令を発行し、コンテキストスイッチを開始する。Store命令が発行されると、レジスタファイル1からデータが読み出され、メモリアクセスユニット5に送られる。そして、メモリアクセスユニット5は、データを格納するアドレスを計算し、データキャッシュ6にアクセスする(S101)。もし、データキャッシュミスが発生した場合(S103)、データキャッシュ6はメモリ20からキャッシュラインを読み込む(S105)。一方、データキャッシュミスが発生しなかった場合(S103)は、ステップS107へ進む。データキャッシュ6は、メモリアクセスユニット5から送られてきたデータを適当なアドレスで自身のキャッシュ内に格納する(S107)。OS等のソフトウェアは、このStore命令の処理を退避すべきレジスタの数だけ繰り返す。すなわち、全てのレジスタの内容の保存が完了していない場合は、ステップS101へ戻り処理を続け、全てのレジスタの内容の保存が完了した場合は、ステップS111へ進む(S109)。
【0021】
つぎに、OS等のソフトウェアは、新しく実行されるコンテキストの復帰を、Load命令を用いて行う。実行中のコンテキストの保存が完了すると、OS等のソフトウェアは、Load命令を発行する。Load命令が発行されると、メモリアクセスユニット5は、データを読み込むためのアドレスを計算し、データキャッシュ6をアクセスする(S111)。もし、データキャッシュミスが発生した場合(S113)、データキャッシュ6はメモリ20からキャッシュラインを読み込む(S115)。データキャッシュミスが発生しなかった場合(S113)は、ステップS117へ進む。メモリアクセスユニット5は、データキャッシュ6からデータが返ってくる(S117)と、それをレジスタファイル1に書き戻す。このLoad命令を復帰すべきレジスタの数だけ繰り返す。すなわち、全てのレジスタ内容の読み込みが完了した場合は、ステップS111へ戻り処理を続け、全てのレジスタ内容の読み込みが完了した場合は、コンテキストスイッチを終了する(S119)。
【0022】
2.コンテキスト切り替え装置を備えたCPU
図3に、コンテキストキャッシュを用いたCPUを含むコンピュータの構成図を示す。
このCPU100は、レジスタファイル1、命令フェッチユニット2、命令キャッシュ3、ALU4、メモリアクセスユニット5、データキャッシュ6、バスインターフェースユニット7、コンテキストキャッシュ8、スレッド制御ユニット9、演算バス11、コンテキスト専用バス12を備える。演算バス11は、レジスタファイル1、ALU4、メモリアクセスユニット5にさらにスレッド制御ユニット9を並列に接続する演算パイプライン等のバスである。図1のCPU10の各部に対応して、同符号で示される各部の構成及び動作は、上述した通りである。
【0023】
コンテキストキャッシュ8は、SRAM、FF等の素子が用いられ、アクセス、読み出し、書き込み等の処理速度が速い。コンテキストキャッシュ8は、レジスタファイル1にコンテキストスイッチ専用バス12により接続され、コンテキストをキャッシュするために用いられる。スレッド制御ユニット8は、コンテキストキャッシュ8を制御するためのユニットであり、ALU4やメモリアクセスユニット5と並列に接続されている。なお、スレッドとは、一般に、OSがあるプロセス又はタスクを並列処理するため、プロセス又はタスクを分割した処理単位又は最小単位のことをいう。この際、プロセス又はタスクが分割されることなく、1プロセス又は1タスクが1スレッドとなる場合もある。コンテキストスイッチが起こった場合には、現在実行されているスレッドのコンテキスト(汎用レジスタ、浮動小数点レジスタ、プログラムカウンタ、ステータスレジスタ等)を退避し、新しく実行されるスレッドのコンテキストを復帰する必要がある。本実施の形態によるコンテキストキャッシュ8を用いたコンテキストスイッチの場合、コンテキストの退避と復帰は、レジスタファイル1とコンテキストキャッシュ8のデータをコンテキストスイッチ専用バス12を経て入れ替えるスワップ(Swap)命令を用いる。
【0024】
図4に、コンテキストキャッシュを用いたCPUでのコンテキストスイッチのフローチャートを示す。
OS等のソフトウェアは、Swap命令を発行し、コンテキストスイッチが開始する。Swap命令は、入れ替えるスレッドIDと共にスレッド制御ユニット9に発行される(S201)。スレッドIDは、コンテキストキャッシュ8に格納されているスレッドを一意に識別するために用いる。スレッド制御ユニット9は、コンテキストスイッチ専用バス12を経て、レジスタファイル1からコンテキストキャッシュ8へデータを退避すると同時並列に、コンテキストキャッシュ8からレジスタファイル1へ新しいスレッドのデータを送る。スレッド制御ユニット9は、送られてきたスレッドIDに基づいて自動的に必要な数だけレジスタファイル1内のデータとコンテキストキャッシュ8内のデータを入れ替える(S203)。このように、OS等のソフトウェアはSwap命令を発行するだけで、専用ハードウェアがコンテキストスイッチを開始し終了する。
【0025】
3.コンテキスト切り替え装置の詳細
図5に、コンテキスト切り替え装置の詳細構成図を示す。
レジスタファイル1は、汎用レジスタ111、浮動小数点レジスタ112、プログラムカウンタ113、ステータスレジスタ114を有する。コンテキストキャッシュ8は、コンテキストを格納するコンテキスト記憶領域8−1、8−2、・・・、8−nを所定のコンテキスト数有する。スレッド制御ユニット9は、オンチップのコンテキストキャッシュ8とレジスタファイル1を制御するためのコントローラである。スレッド制御ユニット9内部にはオンチップメモリに格納されているコンテキストを識別するためのスレッドIDを所定数保持するためのスレッドIDテーブル91を設ける。また、マルチスレッドプロセッサの場合は、レジスタファイル1が並列に複数存在することになる。
【0026】
図6に、Swap命令のフローチャートを示す。
コンテキストの切り替えは、例えばコンテキストスイッチハンドラー内でコンテキストスイッチ専用命令を用いることができる。OS等のソフトウェアが、Swap命令を発行すると、専用ハードウェアであるスレッド制御ユニット9が、そのSwap命令とスレッドIDを受けとる(S300)。スレッド制御ユニット9は、スレッドIDに基づいてスレッドIDテーブル91を検索し、コンテキストキャッシュ8をアクセスするため、入れ替えるべきスレッドのデータ(コンテキスト)が格納されているアドレスを計算し、また、レジスタファイル1をアクセスするため、レジスタIDを計算する(S301)。つぎに、全てのコンテキストのデータ(汎用レジスタ、ステータスレジスタなど)に対して、ステップS302からS304により繰返しループ処理が行われる。スレッド制御ユニット9は、計算したアドレスをもとにコンテキストキャッシュ8をアクセスし、新しく入れ替えるスレッドのデータ(コンテキスト)を読み出し、レジスタファイル1にそれを書き込む(S303)。それと同時又は並列に、スレッド制御ユニット9は、レジスタファイル1にアクセスし、今実行されているスレッドのデータ(コンテキスト)を読み出し、コンテキストキャッシュ8にそれを書き込む(S303)。このようにして、レジスタファイル1とコンテキストキャッシュ8は、それぞれのデータを入れ替える。全てのデータの入れ替えが終了していない場合(S304)、スレッド制御ユニット9は、コンテキストキャッシュ8をアクセスするアドレスとレジスタファイル1をアクセスするレジスタIDを1つずつ増やし、ステップS303に戻って処理を続ける(ステップS302及びS304による繰返しループ処理)。全てのデータの入れ替えが終了した場合(S304)、Swap命令を終了する。
【0027】
このように、スレッド制御ユニット9は、コンテキストキャッシュ8とレジスタファイル1のそれぞれのアドレスを連続的にインクリメントすることにより、必要な数だけデータを入れ替える。この際、従来のようにLoad及びStore命令を用いた場合には数百〜千数百クロックサイクルかかっていたコンテキストスイッチを、本実施の形態では、レジスタファイル1とコンテキストキャッシュ8のコンテキストスイッチ専用バス12によるデータ転送幅をレジスタのビット幅に比べて非常に広くすることによって、1クロックサイクル〜数クロックサイクル程度で実現する。具体的には、複数個のレジスタをまとめて1つの巨大なレジスタとして、その巨大なレジスタ毎に前記レジスタIDを割り当てるようにする。この際、全てのレジスタをまとめて1つの巨大なレジスタとした場合、1クロックサイクルでコンテキストスイッチを実現できる。
【0028】
スレッド制御ユニット9は、コンテキストを入れ替えるSwap命令の他に、コンテキストを退避するバックアップ(Backup)命令、コンテキストを復帰するリストア(Restore)命令を処理する。Backup命令の場合は、コンテキストキャッシュ8からレジスタファイル1へのコンテキストのデータ転送は行われず、レジスタファイル1からコンテキストキャッシュ8へのコンテキストのデータ転送のみが実行される。一方、Restore命令の場合は逆にレジスタファイル1からコンテキストキャッシュ8へのコンテキストのデータ転送は行われず、コンテキストキャッシュ8からレジスタファイル1へのコンテキストのデータ転送のみが実行される。
【0029】
つぎに、図7に、コンテキスト切り替え装置の実装に関する説明図を示す。
コンテキストキャッシュ8は、コンテキストをバックアップするオンチップのメモリであり、この例では2ポートを有し、CPUにオンチップで実装されている。この例では、コンテキストキャッシュ8は、書き込みポート82、読み出しポート83を備える。コンテキストキャッシュ8は、所定の複数コンテキスト分(例えば、32個等)の記憶領域を含むことができる。
【0030】
レジスタファイル1は、通常のリードポートとライトポートの他にコンテキスト切り替え用の専用ポート、即ちコンテキストスイッチ用読み出しポート17とコンテキストスイッチ用書き込みポート18を付加し、これらのポートにコンテキストを保持するための記憶装置を接続する。この例では、レジスタファイル1は、レジスタ読み出しポート15、レジスタ書き込みポート16、コンテキストスイッチ用読み出しポート17、コンテキストスイッチ用書き込みポート18を備える。レジスタ読み出しポート15は、レジスタファイル1からCPU内の装置へのレジスタの読み出しを、レジスタ書き込みポート16は、CPU内の装置からレジスタファイル1へのレジスタの書き込みを、コンテキストスイッチ用読み出しポート17は、レジスタファイル1からコンテキストファイル8へのレジスタの読み出しを、コンテキストスイッチ用書き込みポート18は、コンテキストファイル8からレジスタファイル1へのレジスタの書き込みを、それぞれ行うポートである。
【0031】
コンテキストの切り替えが発生した場合、OS等のソフトウェアはSwap命令を発行し、スレッド制御ユニットが、これらのポート17、18を通して中央演算装置のコンテキストキャッシュ8内のデータをレジスタファイル1に保持し、新しいコンテキストをこのレジスタファイル1から取り出す。また、レジスタファイル1とコンテキストキャッシュ8を接続するコンテキスト専用バス12−1、12−2の幅をレジスタファイル1のビット幅より広くすることにより、1度に入れ替えるデータの量を増やす。この例では、レジスタファイル1とオンチップメモリのコンテキストキャッシュ8とは、256ビットのコンテキストスイッチ専用バス12−1、12−2で繋がれる。また、コンテキストキャッシュ8として2ポートのオンチップメモリを用いることにより読み込みと書き出しを同時に行うことができる。そのため32ビット、32本の汎用レジスタは4クロックサイクルでコンテキストを入れ替えることができる。
なお、ビット数、記憶容量、ポート数等の各種パラメータは一例に過ぎず、適宜設定することができる。
【0032】
4.その他
本発明のコンテキスト切り替え方法又はコンテキスト切り替え装置・システムは、その各手順をコンピュータに実行させるためのコンテキスト切り替えプログラム、コンテキスト切り替えプログラムを記録したコンピュータ読み取り可能な記録媒体、コンテキスト切り替えプログラムを含みコンピュータの内部メモリにロード可能なプログラム製品、そのプログラムを含むサーバ等のコンピュータ、等により提供されることができる。
【0033】
【発明の効果】
本発明によると、以上のように、特に、リアルタイムOSなどコンテキストの切り替えが頻繁に発生するアプリケーションにおいて、コンテキストの切り替え(コンテキストスイッチ)によるオーバーヘッドを大幅に削減することができる。また、本発明によると、例えば、コンテキストを切り替える度に、コンテキストの保存と読み込みのためのメモリアクセスが、1サイクルから数サイクルで可能とするコンテキスト切り替え方法及び装置、中央演算装置、コンテキスト切り替えプログラムを記録したコンピュータ読み取り可能な記録媒体を提供することができる。
【0034】
また、本発明によると、特に、実時間処理システムのようにコンテキストスイッチが頻繁に起こるシステムにおいて、コンテキストスイッチにかかる時間を一定とし、実時間性の時間粒度を非常に小さくすることができる。
【図面の簡単な説明】
【図1】一般的なCPUを含むコンピュータの構成図。
【図2】一般的なCPUでのコンテキストスイッチのフローチャート。
【図3】コンテキストキャッシュを用いたCPUを含むコンピュータの構成図。
【図4】コンテキストキャッシュを用いたCPUでのコンテキストスイッチのフローチャート。
【図5】コンテキスト切り替え装置の詳細構成図。
【図6】Swap命令のフローチャート。
【図7】コンテキスト切り替え装置の実装に関する説明図。
【図8】コンテキスト切り替え動作の説明図。
【符号の説明】
1 レジスタファイル
2 命令フェッチユニット
3 命令キャッシュ
4 ALU
5 メモリアクセスユニット
6 データキャッシュ
7 バスインタフェースユニット
8 コンテキストキャッシュ
9 スレッド制御ユニット
10 CPU
11 演算バス
12 コンテキスト専用バス
12−1 コンテキスト専用バス
12−2 コンテキスト専用バス
15 レジスタ読み出しポート
16 レジスタ書き込みポート
17 コンテキストスイッチ用読み出しポート
18 コンテキストスイッチ用書き込みポート
20 メモリ
30 I/O
40 バス
8−1〜n コンテキストテーブル
91 スレッドIDテーブル
100 CPU
111 汎用レジスタ
112 浮動小数点レジスタ
113 プログラムカウンタ
114 ステータスレジスタ
Claims (15)
- 複数のコンテキストを切り替えるコンテキスト切り替え装置であって、
演算論理ユニット又はメモリアクセスユニットで実行すべきスレッドに関するコンテキストが記憶されたレジスタファイルと、
前記レジスタファイルに接続され、コンテキストをキャッシュするためのコンテキストキャッシュと、
前記レジスタファイルと前記コンテキストキャッシュを接続するコンテキストスイッチ専用バスと、
前記コンテキストキャッシュに記憶されているスレッドのコンテキストを識別するためのスレッド識別子(スレッドID)を記憶するスレッドIDテーブルを有し、演算論理ユニット及びメモリアクセスユニットと並列に接続され、前記コンテキストキャッシュと前記レジスタファイルとの間のデータ伝送を制御するスレッド制御ユニットと
を備え、
前記スレッド制御ユニットは、
コンテキストの切り替えが発生した場合、入力された切り替え命令と新たに入れ替えるスレッド識別子(スレッドID)に基づき前記スレッドIDテーブルを検索し、
新たに入れ替えるコンテキストが記憶されている前記コンテキストキャッシュのアドレスと、実行中のコンテキストが記憶されている前記レジスタファイルのレジスタ識別子を求め、
求めたアドレスに基付き前記コンテキストキャッシュをアクセスし、且つ、求めたレジスタ識別子に基付き前記レジスタファイルをアクセスし、前記レジスタファイル及び/又は前記コンテキストキャッシュのコンテキストを前記コンテキストスイッチ専用バスを介して入れ替え、退避又は復帰を実行する
前記コンテキスト切り替え装置。 - 前記コンテキストスイッチ専用バスは、バス幅をレジスタ長以上とすることで、1度に複数のコンテキストのデータを同時にスワップ、バックアップ又はリストアする請求項1に記載のコンテキスト切り替え装置。
- 前記コンテキストキャッシュは、リードポートとライトポートを備え、
前記レジスタファイルは、リードポートとライトポート、コンテキストスイッチ用リードポートとライトポートを備え、
前記コンテキストキャッシュのリードポートとライトポートは、それぞれ前記コンテキストスイッチ専用バスにより前記レジスタファイルのコンテキストスイッチ用ライトポートとリードポートと接続されることを特徴とする請求項1に記載のコンテキスト切り替え装置。 - 前記スレッド制御ユニットは、コンテキストキャッシュにキャッシュされた所定数のコンテキストを識別する所定数のスレッドIDテーブルを含むことを特徴とする請求項1に記載のコンテキスト切り替え装置。
- 前記スレッド制御ユニットは、コンテキストを入れ替えるスワップ命令を実行する場合、オペレーティングシステム等のソフトウェアからスレッド識別子(スレッドID)をオペランドとして含むスワップ命令が発行されると、前記レジスタファイルから前記コンテキストキャッシュへ実行中のスレッドのコンテキストを退避すると同時に、前記コンテキストキャッシュから前記レジスタファイルへ新しく入れ替えるスレッドのコンテキストを送り、自動的に必要な数だけ前記レジスタファイル内のデータと前記コンテキストキャッシュ内のデータを入れ替えることを特徴とする請求項1乃至4のいずれかに記載のコンテキスト切り替え装置。
- 前記スレッド制御ユニットは、コンテキストを退避するバックアップ命令を実行する場合、オペレーティングシステム等のソフトウェアからスレッド識別子(スレッドID)をオペランドとして含むバックアップ命令が発行されると、前記レジスタファイルから前記コンテキストキャッシュへのコンテキストのデータ転送を行い、前記コンテキストキャッシュから前記レジスタファイルへのコンテキストのデータ転送は行わないことを特徴とする請求項1乃至4のいずれかに記載のコンテキスト切り替え装置。
- 前記スレッド制御ユニットは、コンテキストを復帰するリストア命令を処理する場合、オペレーティングシステム等のソフトウェアからスレッド識別子(スレッドID)をオペランドとして含むリストア命令が発行されると、前記コンテキストキャッシュから前記レジスタファイルへのコンテキストのデータ転送を行い、前記レジスタファイルから前記コンテキストキャッシュへのコンテキストのデータ転送は行わないことを特徴とする請求項1乃至4のいずれかに記載のコンテキスト切り替え装置。
- 前記請求項1乃至7のいずれかに記載のコンテキスト切り替え装置と、
命令及びデータをそれぞれキャッシュする命令キャッシュ及びデータキャッシュと、
前記命令キャッシュから命令をフェッチ及びデコードする命令フェッチユニットと、
レジスタファイルに記憶された命令に従い各種演算を行い、演算結果を前記レジスタファイルに書き戻す演算論理ユニットと、
前記レジスタファイルからオペランドと命令が送られ、前記データキャッシュをアクセスし、ロード又はストアを実行するメモリアクセスユニットと、
前記レジスタファイル、前記演算論理ユニット、前記メモリアクセスユニット及び前記スレッド制御ユニットを並列に接続する演算バスと、
を備えた中央演算装置。 - 前記メモリアクセスユニットは、ストア命令の場合はアドレスとデータを前記データキャッシュに送り、データを前記データキャッシュに格納し、ロード命令の場合はアドレスを前記データキャッシュに送り、データを前記データキャッシュから読み出し、読み出したデータを前記レジスタファイルに書き戻す請求項8に記載の中央演算装置。
- 演算論理ユニット又はメモリアクセスユニットで実行すべきスレッドに関するコンテキストが記憶されたレジスタファイルと、
前記レジスタファイルに接続され、コンテキストをキャッシュするためのコンテキストキャッシュと、
前記レジスタファイルと前記コンテキストキャッシュを接続するコンテキストスイッチ専用バスと
を備えたコンテキスト切り替え装置を用い、複数のコンテキストを切り替えるコンテキスト切り替え方法であって、
コンテキストの切り替えが発生した場合、入力された切り替え命令と新たに入れ替えるスレッド識別子(スレッドID)に基付き、前記コンテキストキャッシュに記憶されているスレッドのコンテキストを識別するためのスレッド識別子(スレッドID)を記憶する前記スレッドIDテーブルを検索し、
新たに入れ替えるコンテキストが記憶されている前記コンテキストキャッシュのアドレスと、実行中のコンテキストが記憶されている前記レジスタファイルのレジスタ識別子を求め、
求めたアドレスに基付き前記コンテキストキャッシュをアクセスし、且つ、求めたレジスタ識別子に基付き前記レジスタファイルをアクセスし、前記レジスタファイル及び/又は前記コンテキストキャッシュのコンテキストを前記コンテキストスイッチ専用バスを介して入れ替え、退避又は復帰を実行する
前記コンテキスト切り替え方法。 - コンテキストを入れ替えるスワップ命令を実行する場合、オペレーティングシステム等のソフトウェアからスレッド識別子(スレッドID)をオペランドとして含むスワップ命令が発行されると、前記レジスタファイルから前記コンテキストキャッシュへ実行中のスレッドのコンテキストを退避すると同時に、前記コンテキストキャッシュから前記レジスタファイルへ新しく入れ替えるスレッドのコンテキストを送り、自動的に必要な数だけ前記レジスタファイル内のデータと前記コンテキストキャッシュ内のデータを入れ替えることを特徴とする請求項10に記載のコンテキスト切り替え方法。
- コンテキストを退避するバックアップ命令を実行する場合、オペレーティングシステム等のソフトウェアからスレッド識別子(スレッドID)をオペランドとして含むバックアップ命令が発行されると、前記レジスタファイルから前記コンテキストキャッシュへのコンテキストのデータ転送を行い、前記コンテキストキャッシュから前記レジスタファイルへのコンテキストのデータ転送は行わないことを特徴とする請求項10に記載のコンテキスト切り替え方法。
- コンテキストを復帰するリストア命令を処理する場合、オペレーティングシステム等のソフトウェアからスレッド識別子(スレッドID)をオペランドとして含むリストア命令が発行されると、前記コンテキストキャッシュから前記レジスタファイルへのコンテキストのデータ転送を行い、前記レジスタファイルから前記コンテキストキャッシュへのコンテキストのデータ転送は行わないことを特徴とする請求項10に記載のコンテキスト切り替え方法。
- 演算論理ユニット又はメモリアクセスユニットで実行すべきスレッドに関するコンテキストが記憶されたレジスタファイルと、
前記レジスタファイルに接続され、コンテキストをキャッシュするためのコンテキストキャッシュと、
前記レジスタファイルと前記コンテキストキャッシュを接続するコンテキスト専用バスと
を備えたコンテキスト切り替え装置を用い、コンピュータが複数のコンテキストを切り替えるコンテキスト切り替えプログラムであって、
コンテキストの切り替えが発生した場合、入力された切り替え命令と新たに入れ替えるスレッド識別子(スレッドID)に基付き、前記コンテキストキャッシュに格納されているスレッドのコンテキストを識別するためのスレッド識別子(スレッドID)を記憶する前記スレッドIDテーブルを検索するステップと、
新たに入れ替えるコンテキストが記憶されている前記コンテキストキャッシュのアドレスと、実行中のコンテキストが記憶されている前記レジスタファイルのレジスタ識別子を求めるステップと、
求めたアドレスに基付き前記コンテキストキャッシュをアクセスし、且つ、求めたレジスタ識別子に基付き前記レジスタファイルをアクセスし、前記レジスタファイル及び/又は前記コンテキストキャッシュのコンテキストを前記コンテキストスイッチ専用バスを介して入れ替え、退避又は復帰を実行するステップと
をコンピュータに実行させるためのコンテキスト切り替えプログラム。 - 演算論理ユニット又はメモリアクセスユニットで実行すべきスレッドに関するコンテキストが記憶されたレジスタファイルと、
前記レジスタファイルに接続され、コンテキストをキャッシュするためのコンテキストキャッシュと、
前記レジスタファイルと前記コンテキストキャッシュを接続するコンテキストスイッチ専用バスと
を備えたコンテキスト切り替え装置を用い、コンピュータが複数のコンテキストを切り替えるコンテキスト切り替えプログラムを記録したコンピュータ読み取り可能な記録媒体であって、
コンテキストの切り替えが発生した場合、入力された切り替え命令と新たに入れ替えるスレッド識別子(スレッドID)に基付き、前記コンテキストキャッシュに格納されているスレッドのコンテキストを識別するためのスレッド識別子(スレッドID)を記憶する前記スレッドIDテーブルを検索するステップと、
新たに入れ替えるコンテキストが記憶されている前記コンテキストキャッシュのアドレスと、実行中のコンテキストが記憶されている前記レジスタファイルのレジスタ識別子を求めるステップと、
求めたアドレスに基付き前記コンテキストキャッシュをアクセスし、且つ、求めたレジスタ識別子に基付き前記レジスタファイルをアクセスし、前記レジスタファイル及び/又は前記コンテキストキャッシュのコンテキストを前記コンテキストスイッチ専用バスを介して入れ替え、退避又は復帰を実行するステップと
をコンピュータに実行させるためのコンテキスト切り替えプログラムを記録したコンピュータ読み取り可能な記録媒体。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003003038A JP2004220070A (ja) | 2003-01-09 | 2003-01-09 | コンテキスト切り替え方法及び装置、中央演算装置、コンテキスト切り替えプログラム及びそれを記憶したコンピュータ読み取り可能な記憶媒体 |
EP03780720A EP1582980B1 (en) | 2003-01-09 | 2003-12-11 | Context switching method, device, program, recording medium, and central processing unit |
PCT/JP2003/015838 WO2004063925A1 (ja) | 2003-01-09 | 2003-12-11 | コンテキスト切り替え方法・装置・プログラム・記憶媒体、中央演算装置 |
US10/541,187 US8020169B2 (en) | 2003-01-09 | 2003-12-11 | Context switching system having context cache and a register file for the save and restore context operation |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003003038A JP2004220070A (ja) | 2003-01-09 | 2003-01-09 | コンテキスト切り替え方法及び装置、中央演算装置、コンテキスト切り替えプログラム及びそれを記憶したコンピュータ読み取り可能な記憶媒体 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004220070A true JP2004220070A (ja) | 2004-08-05 |
Family
ID=32708889
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003003038A Pending JP2004220070A (ja) | 2003-01-09 | 2003-01-09 | コンテキスト切り替え方法及び装置、中央演算装置、コンテキスト切り替えプログラム及びそれを記憶したコンピュータ読み取り可能な記憶媒体 |
Country Status (4)
Country | Link |
---|---|
US (1) | US8020169B2 (ja) |
EP (1) | EP1582980B1 (ja) |
JP (1) | JP2004220070A (ja) |
WO (1) | WO2004063925A1 (ja) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1736890A2 (en) | 2005-06-03 | 2006-12-27 | NEC Electronics Corporation | Stream processor including DMA controller used in data processing apparatus |
WO2008023426A1 (fr) * | 2006-08-24 | 2008-02-28 | Netcleus Systems Corporation | Dispositif de traitement de tâche |
US8327379B2 (en) | 2006-08-24 | 2012-12-04 | Kernelon Silicon Inc. | Method for switching a selected task to be executed according with an output from task selecting circuit |
JP2013536524A (ja) * | 2010-08-23 | 2013-09-19 | エンパイア テクノロジー ディベロップメント エルエルシー | コンテキスト切り替え |
JP2015534188A (ja) * | 2012-09-28 | 2015-11-26 | インテル・コーポレーション | ユーザレベルのスレッディングのために即時のコンテキスト切り替えを可能とする新規の命令および高度に効率的なマイクロアーキテクチャ |
US20170060582A1 (en) * | 2015-09-01 | 2017-03-02 | Freescale Semiconductor, Inc. | Arbitrary instruction execution from context memory |
Families Citing this family (69)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050132363A1 (en) * | 2003-12-16 | 2005-06-16 | Vijay Tewari | Method, apparatus and system for optimizing context switching between virtual machines |
US8427490B1 (en) | 2004-05-14 | 2013-04-23 | Nvidia Corporation | Validating a graphics pipeline using pre-determined schedules |
JP4204522B2 (ja) * | 2004-07-07 | 2009-01-07 | 株式会社東芝 | マイクロプロセッサ |
US8624906B2 (en) | 2004-09-29 | 2014-01-07 | Nvidia Corporation | Method and system for non stalling pipeline instruction fetching from memory |
US8416251B2 (en) * | 2004-11-15 | 2013-04-09 | Nvidia Corporation | Stream processing in a video processor |
US9606821B2 (en) * | 2004-12-17 | 2017-03-28 | Intel Corporation | Virtual environment manager for creating and managing virtual machine environments |
US9092170B1 (en) | 2005-10-18 | 2015-07-28 | Nvidia Corporation | Method and system for implementing fragment operation processing across a graphics bus interconnect |
US20070294693A1 (en) * | 2006-06-16 | 2007-12-20 | Microsoft Corporation | Scheduling thread execution among a plurality of processors based on evaluation of memory access data |
US8219789B2 (en) * | 2007-03-14 | 2012-07-10 | XMOS Ltd. | Interface processor |
US8683126B2 (en) | 2007-07-30 | 2014-03-25 | Nvidia Corporation | Optimal use of buffer space by a storage controller which writes retrieved data directly to a memory |
US8698819B1 (en) | 2007-08-15 | 2014-04-15 | Nvidia Corporation | Software assisted shader merging |
US9024957B1 (en) | 2007-08-15 | 2015-05-05 | Nvidia Corporation | Address independent shader program loading |
US8411096B1 (en) | 2007-08-15 | 2013-04-02 | Nvidia Corporation | Shader program instruction fetch |
US8659601B1 (en) | 2007-08-15 | 2014-02-25 | Nvidia Corporation | Program sequencer for generating indeterminant length shader programs for a graphics processor |
US9710384B2 (en) | 2008-01-04 | 2017-07-18 | Micron Technology, Inc. | Microprocessor architecture having alternative memory access paths |
US8972958B1 (en) | 2012-10-23 | 2015-03-03 | Convey Computer | Multistage development workflow for generating a custom instruction set reconfigurable processor |
JP2009098819A (ja) * | 2007-10-15 | 2009-05-07 | Elpida Memory Inc | メモリシステム、メモリシステムの制御方法、及びコンピュータシステム |
US8780123B2 (en) | 2007-12-17 | 2014-07-15 | Nvidia Corporation | Interrupt handling techniques in the rasterizer of a GPU |
US9064333B2 (en) | 2007-12-17 | 2015-06-23 | Nvidia Corporation | Interrupt handling techniques in the rasterizer of a GPU |
US8923385B2 (en) | 2008-05-01 | 2014-12-30 | Nvidia Corporation | Rewind-enabled hardware encoder |
US8681861B2 (en) | 2008-05-01 | 2014-03-25 | Nvidia Corporation | Multistandard hardware video encoder |
US8489851B2 (en) | 2008-12-11 | 2013-07-16 | Nvidia Corporation | Processing of read requests in a memory controller using pre-fetch mechanism |
US10055251B1 (en) * | 2009-04-22 | 2018-08-21 | The Trustees Of Columbia University In The City Of New York | Methods, systems, and media for injecting code into embedded devices |
US8578138B2 (en) * | 2009-08-31 | 2013-11-05 | Intel Corporation | Enabling storage of active state in internal storage of processor rather than in SMRAM upon entry to system management mode |
US9392017B2 (en) | 2010-04-22 | 2016-07-12 | The Trustees Of Columbia University In The City Of New York | Methods, systems, and media for inhibiting attacks on embedded devices |
US8725993B2 (en) * | 2011-02-23 | 2014-05-13 | International Business Machines Corporation | Thread transition management |
WO2012145816A1 (en) * | 2011-04-26 | 2012-11-01 | Research In Motion Limited | System and method for operating a processor |
US9159409B2 (en) | 2011-09-16 | 2015-10-13 | Advanced Micro Devices, Inc. | Method and apparatus for providing complimentary state retention |
US20130070513A1 (en) * | 2011-09-16 | 2013-03-21 | Advanced Micro Devices, Inc. | Method and apparatus for direct backup of memory circuits |
US10078515B2 (en) * | 2011-10-03 | 2018-09-18 | International Business Machines Corporation | Tracking operand liveness information in a computer system and performing function based on the liveness information |
DE102011119004A1 (de) * | 2011-11-19 | 2013-05-23 | Diehl Aerospace Gmbh | Grafikverarbeitungsvorrichtung, Anzeigevorrichtung für ein Flugzeugcockpit sowie Verfahren zur Anzeige von Grafikdaten |
US9442759B2 (en) * | 2011-12-09 | 2016-09-13 | Nvidia Corporation | Concurrent execution of independent streams in multi-channel time slice groups |
KR102132501B1 (ko) | 2012-02-15 | 2020-07-09 | 더 트러스티이스 오브 콜롬비아 유니버시티 인 더 시티 오브 뉴욕 | 매립 디바이스에 대한 공격을 금지하기 위한 방법, 시스템 및 미디어 |
US10430190B2 (en) * | 2012-06-07 | 2019-10-01 | Micron Technology, Inc. | Systems and methods for selectively controlling multithreaded execution of executable code segments |
US9170968B2 (en) * | 2012-09-27 | 2015-10-27 | Intel Corporation | Device, system and method of multi-channel processing |
US9250954B2 (en) * | 2013-01-17 | 2016-02-02 | Xockets, Inc. | Offload processor modules for connection to system memory, and corresponding methods and systems |
US9652284B2 (en) | 2013-10-01 | 2017-05-16 | Qualcomm Incorporated | GPU divergence barrier |
US9507731B1 (en) * | 2013-10-11 | 2016-11-29 | Rambus Inc. | Virtualized cache memory |
CN103713882A (zh) * | 2013-12-20 | 2014-04-09 | 华为技术有限公司 | 一种数据换入内存的方法和装置 |
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 |
US10657262B1 (en) | 2014-09-28 | 2020-05-19 | Red Balloon Security, Inc. | Method and apparatus for securing embedded device firmware |
US10496433B2 (en) * | 2014-11-24 | 2019-12-03 | Red Hat, Inc. | Modification of context saving functions |
US9817664B2 (en) | 2015-02-19 | 2017-11-14 | Apple Inc. | Register caching techniques for thread switches |
US9323575B1 (en) | 2015-02-26 | 2016-04-26 | Freescale Semiconductor, Inc. | Systems and methods for improving data restore overhead in multi-tasking environments |
GB2536211B (en) * | 2015-03-04 | 2021-06-16 | Advanced Risc Mach Ltd | An apparatus and method for executing a plurality of threads |
US10019283B2 (en) * | 2015-06-22 | 2018-07-10 | Advanced Micro Devices, Inc. | Predicting a context portion to move between a context buffer and registers based on context portions previously used by at least one other thread |
US10423418B2 (en) | 2015-11-30 | 2019-09-24 | International Business Machines Corporation | Method for maintaining a branch prediction history table |
US10489296B2 (en) | 2016-09-22 | 2019-11-26 | International Business Machines Corporation | Quality of cache management in a computer |
US10423415B2 (en) | 2017-04-01 | 2019-09-24 | Intel Corporation | Hierarchical general register file (GRF) for execution block |
US10540184B2 (en) | 2017-04-18 | 2020-01-21 | International Business Machines Corporation | Coalescing store instructions for restoration |
US10564977B2 (en) | 2017-04-18 | 2020-02-18 | International Business Machines Corporation | Selective register allocation |
US10552164B2 (en) | 2017-04-18 | 2020-02-04 | International Business Machines Corporation | Sharing snapshots between restoration and recovery |
US10963261B2 (en) | 2017-04-18 | 2021-03-30 | International Business Machines Corporation | Sharing snapshots across save requests |
US11010192B2 (en) * | 2017-04-18 | 2021-05-18 | International Business Machines Corporation | Register restoration using recovery buffers |
US10838733B2 (en) | 2017-04-18 | 2020-11-17 | International Business Machines Corporation | Register context restoration based on rename register recovery |
US10740108B2 (en) | 2017-04-18 | 2020-08-11 | International Business Machines Corporation | Management of store queue based on restoration operation |
US10782979B2 (en) | 2017-04-18 | 2020-09-22 | International Business Machines Corporation | Restoring saved architected registers and suppressing verification of registers to be restored |
US10545766B2 (en) | 2017-04-18 | 2020-01-28 | International Business Machines Corporation | Register restoration using transactional memory register snapshots |
US10489382B2 (en) | 2017-04-18 | 2019-11-26 | International Business Machines Corporation | Register restoration invalidation based on a context switch |
US10572265B2 (en) | 2017-04-18 | 2020-02-25 | International Business Machines Corporation | Selecting register restoration or register reloading |
US10649785B2 (en) | 2017-04-18 | 2020-05-12 | International Business Machines Corporation | Tracking changes to memory via check and recovery |
US10684857B2 (en) | 2018-02-01 | 2020-06-16 | International Business Machines Corporation | Data prefetching that stores memory addresses in a first table and responsive to the occurrence of loads corresponding to the memory addresses stores the memory addresses in a second table |
US11875183B2 (en) | 2018-05-30 | 2024-01-16 | Texas Instruments Incorporated | Real-time arbitration of shared resources in a multi-master communication and control system |
JP2019219984A (ja) * | 2018-06-21 | 2019-12-26 | ルネサスエレクトロニクス株式会社 | メモリモジュール |
TWI703500B (zh) * | 2019-02-01 | 2020-09-01 | 睿寬智能科技有限公司 | 可縮短內文交換時間之方法及其半導體裝置 |
CN111581124A (zh) * | 2019-02-19 | 2020-08-25 | 睿宽智能科技有限公司 | 可缩短内文交换时间的方法及其半导体装置 |
US12073221B2 (en) | 2020-07-14 | 2024-08-27 | Nxp Usa, Inc. | Context switching method and system for swapping contexts between register sets based on thread halt |
US11775303B2 (en) * | 2020-11-12 | 2023-10-03 | Electronics And Telecommunications Research Institute | Computing accelerator for processing multiple-type instruction and operation method thereof |
CN116149796A (zh) * | 2023-03-10 | 2023-05-23 | 阿里云计算有限公司 | 虚拟机切换和数据存储方法、设备、处理器及存储介质 |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH039431A (ja) | 1989-06-07 | 1991-01-17 | Nec Corp | 割込み処理方式 |
JPH0683639A (ja) | 1992-09-02 | 1994-03-25 | Mitsubishi Electric Corp | レジスタ装置 |
US5892944A (en) * | 1993-07-20 | 1999-04-06 | Kabushiki Kaisha Toshiba | Program execution and operation right management system suitable for single virtual memory scheme |
JP3644042B2 (ja) | 1993-11-15 | 2005-04-27 | ソニー株式会社 | マルチタスク処理装置 |
US6205467B1 (en) * | 1995-11-14 | 2001-03-20 | Advanced Micro Devices, Inc. | Microprocessor having a context save unit for saving context independent from interrupt requests |
JPH09212371A (ja) | 1996-02-07 | 1997-08-15 | Nec Corp | レジスタ退避及び復元システム |
JPH1011301A (ja) * | 1996-06-25 | 1998-01-16 | Masaharu Imai | マルチタスク処理装置及びマルチタスク処理制御方法 |
JPH1063517A (ja) | 1996-08-22 | 1998-03-06 | Nippon Telegr & Teleph Corp <Ntt> | リアルタイム情報処理方法およびその装置 |
US6233599B1 (en) * | 1997-07-10 | 2001-05-15 | International Business Machines Corporation | Apparatus and method for retrofitting multi-threaded operations on a computer by partitioning and overlapping registers |
JPH1139171A (ja) | 1997-07-18 | 1999-02-12 | Masaharu Imai | マルチタスク処理装置、マルチタスク処理制御方法及び制御プログラム記憶媒体 |
US6076157A (en) * | 1997-10-23 | 2000-06-13 | International Business Machines Corporation | Method and apparatus to force a thread switch in a multithreaded processor |
US6018759A (en) * | 1997-12-22 | 2000-01-25 | International Business Machines Corporation | Thread switch tuning tool for optimal performance in a computer processor |
US6986141B1 (en) | 1998-03-10 | 2006-01-10 | Agere Systems Inc. | Context controller having instruction-based time slice task switching capability and processor employing the same |
US6378065B1 (en) | 1998-04-27 | 2002-04-23 | Infineon Technologies North America Corp. | Apparatus with context switching capability |
US6408325B1 (en) * | 1998-05-06 | 2002-06-18 | Sun Microsystems, Inc. | Context switching technique for processors with large register files |
JP2000076079A (ja) | 1998-09-03 | 2000-03-14 | Nec Corp | マイクロコンピュータ |
US6401155B1 (en) | 1998-12-22 | 2002-06-04 | Philips Electronics North America Corporation | Interrupt/software-controlled thread processing |
JP3880739B2 (ja) | 1999-02-25 | 2007-02-14 | 三菱電機株式会社 | オペレーティングシステムの処理方式及びオペレーティングシステムの処理方法 |
US6351808B1 (en) * | 1999-05-11 | 2002-02-26 | Sun Microsystems, Inc. | Vertically and horizontally threaded processor with multidimensional storage for storing thread data |
GB2372348B (en) | 2001-02-20 | 2003-06-04 | Siroyan Ltd | Context preservation |
JPWO2002069150A1 (ja) | 2001-02-27 | 2004-07-02 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Maschines Corporation | マイクロプロセッサ及び命令実行順序スケジューリング方法 |
US6526491B2 (en) * | 2001-03-22 | 2003-02-25 | Sony Corporation Entertainment Inc. | Memory protection system and method for computer architecture for broadband networks |
-
2003
- 2003-01-09 JP JP2003003038A patent/JP2004220070A/ja active Pending
- 2003-12-11 WO PCT/JP2003/015838 patent/WO2004063925A1/ja active Application Filing
- 2003-12-11 US US10/541,187 patent/US8020169B2/en not_active Expired - Fee Related
- 2003-12-11 EP EP03780720A patent/EP1582980B1/en not_active Expired - Lifetime
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1736890A2 (en) | 2005-06-03 | 2006-12-27 | NEC Electronics Corporation | Stream processor including DMA controller used in data processing apparatus |
WO2008023426A1 (fr) * | 2006-08-24 | 2008-02-28 | Netcleus Systems Corporation | Dispositif de traitement de tâche |
US8327379B2 (en) | 2006-08-24 | 2012-12-04 | Kernelon Silicon Inc. | Method for switching a selected task to be executed according with an output from task selecting circuit |
US9342350B2 (en) | 2006-08-24 | 2016-05-17 | Renesas Electronics Corporation | System for selecting a task to be executed according to an output from a task control circuit |
US9753729B2 (en) | 2006-08-24 | 2017-09-05 | Renesas Electronics Corporation | System for selecting a task to be executed according to an output from a task control circuit |
JP2013536524A (ja) * | 2010-08-23 | 2013-09-19 | エンパイア テクノロジー ディベロップメント エルエルシー | コンテキスト切り替え |
JP2015534188A (ja) * | 2012-09-28 | 2015-11-26 | インテル・コーポレーション | ユーザレベルのスレッディングのために即時のコンテキスト切り替えを可能とする新規の命令および高度に効率的なマイクロアーキテクチャ |
US20170060582A1 (en) * | 2015-09-01 | 2017-03-02 | Freescale Semiconductor, Inc. | Arbitrary instruction execution from context memory |
US9785538B2 (en) * | 2015-09-01 | 2017-10-10 | Nxp Usa, Inc. | Arbitrary instruction execution from context memory |
Also Published As
Publication number | Publication date |
---|---|
EP1582980A1 (en) | 2005-10-05 |
EP1582980A4 (en) | 2008-03-12 |
US8020169B2 (en) | 2011-09-13 |
US20070022428A1 (en) | 2007-01-25 |
EP1582980B1 (en) | 2012-03-21 |
WO2004063925A1 (ja) | 2004-07-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2004220070A (ja) | コンテキスト切り替え方法及び装置、中央演算装置、コンテキスト切り替えプログラム及びそれを記憶したコンピュータ読み取り可能な記憶媒体 | |
US12086603B2 (en) | Processor having multiple cores, shared core extension logic, and shared core extension utilization instructions | |
US9323672B2 (en) | Scatter-gather intelligent memory architecture for unstructured streaming data on multiprocessor systems | |
US8539485B2 (en) | Polling using reservation mechanism | |
KR100613923B1 (ko) | 다수의 파이프라인을 이용해 패킷을 다수의 프로그래밍 엔진에 할당하는 방법, 프로세서, 컴퓨터 판독 가능 저장 매체 및 멀티프로세싱 시스템 | |
US8984261B2 (en) | Store data forwarding with no memory model restrictions | |
US20020083373A1 (en) | Journaling for parallel hardware threads in multithreaded processor | |
US7590774B2 (en) | Method and system for efficient context swapping | |
KR20010033147A (ko) | 다중 데이터 경로 인스턴스를 갖는 프로세서 | |
JP2007242003A (ja) | メモリ属性を用いるための技術 | |
CN110647404A (zh) | 用于多线程处理器中的屏障同步的系统、设备和方法 | |
JP2004512599A (ja) | ディジタル信号処理装置 | |
US11868306B2 (en) | Processing-in-memory concurrent processing system and method | |
CN110659115A (zh) | 具有硬件辅助任务调度的多线程处理器核 | |
WO2023103392A1 (zh) | 用于存储管理的方法、介质、程序产品、系统和装置 | |
JP3646137B2 (ja) | 命令発行方法及び装置、中央演算装置、命令発行プログラム及びそれを記憶したコンピュータ読み取り可能な記憶媒体 | |
WO2023103397A1 (zh) | 用于存储管理的方法、介质、程序产品、系统和装置 | |
JP2011192305A (ja) | 半導体信号処理装置 | |
KR20110067795A (ko) | 실시간 프로세스의 응답성 개선을 위한 tcm운용방법 | |
JPH0384636A (ja) | 計算機制御方式 | |
JPH06309225A (ja) | 情報処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20040831 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20041020 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20041201 |
|
A911 | Transfer to examiner for re-examination before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20050106 |
|
A912 | Re-examination (zenchi) completed and case transferred to appeal board |
Free format text: JAPANESE INTERMEDIATE CODE: A912 Effective date: 20050428 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20071101 |