(57)【要約】【課題】スレッド数が増加しても、容量の大きなキャッシュメモリを使用せずに、リアルタイム性を保証することが可能なプロセッサを提供する。【解決手段】プロセッサ１０１は、実行中の第１のスレッドによって要求されたデータの記憶先が特定されるアドレスを第１のタグとして記憶するタグ記憶部１４１と、中断中の第２のスレッドによって要求されたデータの記憶先が特定されるアドレスを第２のタグとして記憶する退避タグ記憶部１５１と、実行ユニットにおいて要求されたデータを記憶するデータ記憶部１４２と、実行対象のスレッドが第１のスレッドから第２のスレッドに切り替わるときは、データ記憶部１４２に記憶されているデータを、第２のタグによって特定されるデータと入れ替えるキャッシュ部１１４とを備える。【選択図】図２
2008102623.tif 000002
【特許請求の範囲】
【請求項１】
スレッド単位でプログラムを実行することができる実行ユニットにおいて要求されたデータを、主記憶装置から取得して前記実行ユニットに渡すプロセッサであって、
実行中の第１のスレッドによって要求されたデータの記憶先が特定されるアドレスを第１のタグとして記憶する第１のタグ記憶手段と、
中断中の第２のスレッドによって要求されたデータの記憶先が特定されるアドレスを第２のタグとして記憶する第２のタグ記憶手段と、
前記実行ユニットにおいて要求されたデータを記憶するキャッシュデータ記憶手段と、
実行対象のスレッドが前記第１のスレッドから前記第２のスレッドに切り替わるときは、前記キャッシュデータ記憶手段に記憶されているデータを、前記第２のタグによって特定されるデータと入れ替えるデータ入替手段と
を備えることを特徴とするプロセッサ。
【請求項２】
前記プロセッサは、実行対象のスレッドが切り替わるときに、前記キャッシュデータ記憶手段から退避されたデータを記憶するスワップデータ記憶手段を備え、
前記データ入替手段は、前記第２のタグによって特定されるデータを前記スワップデータ記憶手段から取得する
ことを特徴とする請求項１に記載のプロセッサ。
【請求項３】
前記データ入替手段は、前記キャッシュデータ記憶手段に記憶されているデータを前記スワップデータ記憶手段に退避しながら、前記スワップデータ記憶手段に退避されていたデータを前記キャッシュデータ記憶手段に復帰する
ことを特徴とする請求項２に記載のプロセッサ。
【請求項４】
前記プロセッサは、前記第１のスレッドによって要求された所定のデータが前記キャッシュデータ記憶手段に登録されていない場合において、前記所定のデータの記憶先が特定される所定のアドレスが前記第２のタグ記憶手段に記憶されている場合は、前記スワップデータ記憶手段に記憶されているデータの中から、前記所定のアドレスと対応付けられているデータを、前記所定のデータとして、前記キャッシュデータ記憶手段に登録することなく前記実行ユニットに渡すキャッシュ手段
を備えることを特徴とする請求項２に記載のプロセッサ。
【請求項５】
前記データ入替手段は、前記第２のタグによって特定されるデータを前記主記憶装置から取得する
ことを特徴とする請求項１に記載のプロセッサ。
【請求項６】
前記プロセッサは、実行対象のスレッドが前記第１のスレッドから前記第２のスレッドに切り替わるときに、前記第１のタグを前記第２のタグ記憶手段に退避しながら、前記第２のタグを前記第１のタグ記憶手段に復帰するタグ入替手段
を備えることを特徴とする請求項１に記載のプロセッサ。
【請求項７】
前記プロセッサは、前記第１のスレッドによって要求された所定のデータが前記キャッシュデータ記憶手段に記憶されていない場合は、前記所定のデータの記憶先が特定される所定のアドレスを前記第１のタグとして前記第１のタグ記憶手段に登録してから、実行対象のスレッドを前記第１のスレッドから前記第２のスレッドに切り替えるキャッシュ手段
を備えることを特徴とする請求項１に記載のプロセッサ。
【請求項８】
前記データ入替手段は、前記第１のタグ記憶手段と前記第２のタグ記憶手段とに同一のアドレスが登録されている場合は、前記同一のアドレスによって特定されるデータを除いて、前記キャッシュデータ記憶手段に記憶されているデータを入れ替える
ことを特徴とする請求項１に記載のプロセッサ。
【請求項９】
前記プロセッサは、
前記実行ユニットにおいて要求されたデータの記憶先が特定されるアドレスを１次タグとして記憶する１次タグ記憶手段と、
前記第１のスレッドによって要求されたデータを前記第１のタグと対応付けて記憶する第１の２次キャッシュデータ記憶手段と、
前記第２のスレッドによって要求されたデータを前記第２のタグと対応付けて記憶する第２の２次キャッシュデータ記憶手段と、
実行対象のスレッドが前記第１のスレッドから前記第２のスレッドに切り替わるときに、前記１次タグ記憶手段に記憶されている１次タグを前記第１のタグ記憶手段に退避しながら、前記第２のタグを前記１次タグ記憶手段に復帰するタグ入替手段と
を備え、
前記データ入替手段は、実行対象のスレッドが前記第１のスレッドから前記第２のスレッドに切り替わるときに、前記キャッシュデータ記憶手段に記憶されているデータを前記第１の２次キャッシュデータ記憶手段に退避しながら、前記第２の２次キャッシュデータ記憶手段に記憶されているデータを前記キャッシュデータ記憶手段に復帰する
ことを特徴とする請求項１に記載のプロセッサ。
【請求項１０】
前記プロセッサは、前記第１のスレッドによって要求された所定のデータが前記キャッシュデータ記憶手段に登録されていない場合において、前記所定のデータの記憶先が特定される所定のアドレスが前記第２のタグ記憶手段に記憶されている場合は、前記第２の２次キャッシュデータ記憶手段に記憶されているデータの中から、前記所定のアドレスと対応付けられているデータを、前記所定のデータとして、前記キャッシュデータ記憶手段に登録することなく前記実行ユニットに渡すキャッシュ手段
を備えることを特徴とする請求項９に記載のプロセッサ。
【請求項１１】
前記プロセッサは、少なくとも前記キャッシュデータ記憶手段に記憶されるデータの数の２倍以上の数のタグが記憶される所定のサイズの記憶領域から、前記第１のタグが記憶される第１のタグ記憶領域と、前記第２のタグが記憶される第２のタグ記憶領域とを割り当てるキャッシュ割当手段を備え、
前記第１のタグ記憶手段は、前記第１のタグ記憶領域を有し、
前記第２のタグ記憶手段は、前記第２のタグ記憶領域を有する
ことを特徴とする請求項１に記載のプロセッサ。
【請求項１２】
前記プロセッサは、
前記所定のサイズの記憶領域に記憶されているタグと対応付けられ、対応付けられているタグによって特定されるデータが前記キャッシュデータ記憶手段および前記スワップデータ記憶手段のいずれに記憶されているかが示される選択情報を記憶する選択情報記憶手段と、
前記第１のスレッドによって要求された所定のデータの記憶先が特定される所定のアドレスが所定のタグとして前記所定のサイズの記憶領域に記憶されているか否かを判定する記憶判定手段と、
前記記憶判定手段で前記所定のサイズの記憶領域に記憶されていると判定された場合は、前記選択情報記憶手段に記憶されている選択情報の中から、所定のタグと対応付けられている選択情報を選択する選択情報選択手段と、
前記選択情報選択手段で選択された選択情報に基づいて、前記所定のデータが前記所定のデータが前記キャッシュデータ記憶手段および前記スワップデータ記憶手段のいずれに記憶されているかを特定する記憶先特定手段と、
前記記憶先特定手段で前記キャッシュデータ記憶手段に記憶されていると特定された場合は、前記キャッシュデータ記憶手段に記憶されているデータの中から、前記所定のアドレスと対応付けられているデータを、前記所定のデータとして前記実行ユニットに渡し、前記スワップデータ記憶手段に記憶されていると特定された場合は、前記スワップデータ記憶手段に記憶されているデータの中から、前記所定のアドレスと対応付けられているデータを、前記所定のデータとして前記実行ユニットに渡すキャッシュ手段と
を備えることを特徴とする請求項１１に記載のプロセッサ。
【請求項１３】
スレッド単位でプログラムを実行することができる実行ユニットにおいて要求されたデータを、主記憶装置から取得して前記実行ユニットに渡すとともに、キャッシュデータ記憶領域に記憶するプロセッサのキャッシュ制御方法であって、
実行対象のスレッドが実行中の第１のスレッドから中断中の第２のスレッドに切り替わるときに、前記キャッシュデータ記憶領域に記憶されているデータを、以前、前記第２のスレッドを実行したときに要求されたデータと入れ替える
ことを特徴とするキャッシュ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、スレッド単位でプログラムを実行することができるプロセッサに関し、特に、スレッドが切り替わるときに実行対象のスレッドに対してキャッシュ領域を割り当てるプロセッサに関する。
【背景技術】
【０００２】
近年、プロセッサの性能向上に伴い、単一のプロセッサに求められる処理の内容が、ますます多彩になってきている。特に、ディジタルＴＶ等のマルチメディア機器においては、メディア処理などのように高いリアルタイム性が求められる処理と、ＧＵＩ（Graphical User Interface）処理などのようにリアルタイム性があまり重要視されていない処理とが混在している。そして、これらの処理を同一のプロセッサで処理する要求がある。これを実現するために、複数の処理を時分割で実行するマルチスレッド型のプロセッサが注目されている。
【０００３】
マルチスレッド型のプロセッサでは、レジスタセットを複数備えることなどによって、複数のスレッドを少ないオーバヘッドで切り替えることが可能である。これによって、リアルタイム性が求められる処理を効率よく処理できる特長がある。ただし、マルチスレッド型のプロセッサでは、キャッシュを適用するにあたり、リアルタイム性の求められる処理に対して予期しないキャッシュミスが発生し、リアルタイム性が損なわれる場合がある。これは、リアルタイム性の求められる処理によってキャッシュに蓄積されたデータが、リアルタイム性の求められない処理によってキャッシュから追い出される場合があるためである。
【０００４】
これに対して、リアルタイム性の求められる処理に対して、固有の記憶領域を割り当てることにより、予期しないキャッシュミスを抑制し、リアルタイム性を保証する技術が提案されている（例えば、特許文献１参照。）。
【０００５】
図１は、従来の形態におけるプロセッサの構成を示す図である。図１に示されるように、キャッシュ部１３は、スレッド実行部１１からデータアクセス要求を受けると、そのデータアクセス要求に含まれるアクセス先のアドレスと一致するタグがタグ記憶部３１に存在するか否かを判定する。判定した結果、存在する場合は、主記憶装置２にアクセスすることなく、データ記憶部３２に登録されているデータの中から、そのアドレスと対応付けられているデータをスレッド実行部１１に渡す。一方、存在しない場合は、そのアドレスをタグとしてタグ記憶部３１に登録する。タグとして登録したアドレスによって特定されるデータを主記憶装置２から取得する。取得したデータを、登録したアドレスと対応付けてデータ記憶部３２に登録する。そして、取得したデータを、スレッド実行部１１に渡す。
【０００６】
このとき、実行中のスレッドに対してキャッシュ内容記憶領域がキャッシュ割当部３３によって割り当てられる。そして、割り当てられたキャッシュ内容記憶領域に、タグと、タグと対応付けられたデータとが登録される。ここで、キャッシュ内容記憶領域とは、複数のタグ記憶領域と、複数のタグ記憶領域と対応付けられた複数のデータ記憶領域とからなる記憶領域である。タグ記憶領域とは、タグ記憶部３１を構成する記憶領域であり、タグを記憶することができる記憶領域である。データ記憶領域とは、データ記憶部３２を構成する記憶領域であり、データを記憶することができる記憶領域である。
【０００７】
また、キャッシュ割当部３３は、可能な限り他のスレッドと重複せずに、キャッシュ内容記憶領域を割り当てる。これにより、例えば、第１のスレッドが中断している間に、第２のスレッドが実行しても、第２のスレッドによって、第１のスレッドに割り当てられたキャッシュ内容記憶領域が書き換わることを回避することができる。すなわち、キャッシュ内容が書き換わることに起因したキャッシュミスを軽減することができる。その結果、リアルタイム性の劣化を抑制することができる。
【特許文献１】特開２００１−２５６１０７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、上記従来の技術では、より多くのスレッドが実行されると、それらのスレッドに対してキャッシュ内容記憶領域が割り当てられる。また、例えば、第１のスレッドに対して割り当てられたキャッシュ内容記憶領域は、第１のスレッドがプロセッサで実行されている間しか有効に使用されない。このため、キャッシュの使用効率が低く、より多くのスレッドを実行するにあたって、あらかじめ、より容量の大きいキャッシュメモリをプロセッサに実装しておく必要があるという問題がある。
【０００９】
そこで、本発明は上記問題に鑑みてなされたものであり、スレッド数が増加しても、容量の大きなキャッシュメモリを使用せずに、リアルタイム性を保証することが可能なプロセッサを提供することを目的とする。
【課題を解決するための手段】
【００１０】
上記目的を達成するために、本発明に係わるプロセッサは、（ａ）スレッド単位でプログラムを実行することができる実行ユニットにおいて要求されたデータを、主記憶装置から取得して前記実行ユニットに渡すプロセッサであって、（ａ１）実行中の第１のスレッドによって要求されたデータの記憶先が特定されるアドレスを第１のタグとして記憶する第１のタグ記憶手段と、（ａ２）中断中の第２のスレッドによって要求されたデータの記憶先が特定されるアドレスを第２のタグとして記憶する第２のタグ記憶手段と、（ａ３）前記実行ユニットにおいて要求されたデータを記憶するキャッシュデータ記憶手段と、（ａ４）実行対象のスレッドが前記第１のスレッドから前記第２のスレッドに切り替わるときは、前記キャッシュデータ記憶手段に記憶されているデータを、前記第２のタグによって特定されるデータと入れ替えるデータ入替手段とを備える。
【００１１】
これによって、中断中のスレッドによって要求されたデータを記憶しておかなくても、実行対象のスレッドが切り替わるときに、データを復帰することができる。すなわち、実行中のスレッドによって要求されたデータを記憶しておくだけでよくなる。また、複数のスレッドの間で、データがキャッシュされる記憶領域に対する干渉を避けること可能となる。その結果、スレッド数が増加しても、キャッシュ容量の増加を抑え、より少ないキャッシュ容量でリアルタイム性の保証を行うことが可能となる。リアルタイム性を重視するプロセッサの高速化、低消費電力化、低価格化に対して有用である。
【００１２】
なお、本発明は、プロセッサとして実現されるだけではなく、プロセッサにおいてスレッドが切り替わるときに実行対象のスレッドに対してキャッシュ領域を割り当てるキャッシュ制御方法などとして実現されるとしてもよい。また、プロセッサの機能が組み込まれたＬＳＩ（Large Scale Integration）、その機能をＦＰＧＡ（Field Programmable Gate Array）、ＣＰＬＤ（Complex Programmable Logic Device）などのプログラマブル・ロジック・デバイスに形成するＩＰ（Intellectual Property）コア、そのＩＰコアを記録した記録媒体などとして実現されるとしてもよい。
【発明の効果】
【００１３】
本発明によれば、中断中のスレッドによって要求されたデータを記憶しておかなくても、実行対象のスレッドが切り替わるときに、データを復帰することができる。すなわち、実行中のスレッドによって要求されたデータを記憶しておくだけでよくなる。また、複数のスレッドの間で、データがキャッシュされる記憶領域に対する干渉を避けること可能となる。その結果、スレッド数が増加しても、キャッシュ容量の増加を抑え、より少ないキャッシュ容量でリアルタイム性の保証を行うことが可能となる。リアルタイム性を重視するプロセッサの高速化、低消費電力化、低価格化に対して有用である。
【発明を実施するための最良の形態】
【００１４】
（実施の形態１）
以下、本発明に係わる実施の形態１について、図面を参照しながら説明する。
【００１５】
本実施の形態におけるプロセッサは、下記（ａ）〜（ｃ）に示す特徴を備える。
（ａ）スレッド単位でプログラムを実行することができる実行ユニットにおいて要求されたデータを、主記憶装置から取得して実行ユニットに渡すプロセッサであって、（ａ１）実行中の第１のスレッドによって要求されたデータの記憶先が特定されるアドレスを第１のタグとして記憶する第１のタグ記憶機能と、（ａ２）中断中の第２のスレッドによって要求されたデータの記憶先が特定されるアドレスを第２のタグとして記憶する第２のタグ記憶機能と、（ａ３）実行ユニットにおいて要求されたデータを記憶するキャッシュデータ記憶機能と、（ａ４）実行対象のスレッドが第１のスレッドから第２のスレッドに切り替わるときは、キャッシュデータ記憶機能に記憶されているデータを、第２のタグによって特定されるデータと入れ替えるデータ入替機能とを備える。
【００１６】
（ｂ）データ入替機能は、第２のタグによって特定されるデータを主記憶装置から取得する。
【００１７】
（ｃ）プロセッサは、実行対象のスレッドが第１のスレッドから第２のスレッドに切り替わるときに、第１のタグを第２のタグ記憶機能に退避しながら、第２のタグを第１のタグ記憶機能に復帰するタグ入替機能を備える。
【００１８】
以上の点を踏まえて、本実施の形態におけるプロセッサについて説明する。
まず、本実施の形態におけるプロセッサの構成について説明する。
【００１９】
図２は、本実施の形態におけるプロセッサの構成を示す図である。図２に示されるように、プロセッサ１０１は、マルチスレッド型のプロセッサである。ここでは、一例として、スレッド実行部１１１、スレッド切替制御部１１２、キャッシュ入替制御部１１３、キャッシュ部１１４、スワップ部１１５などを備える。
【００２０】
なお、図中において、実践で示される矢印は、データが流れるデータラインである。破線で示される矢印は、要求などの制御信号が流れる制御ラインである。
【００２１】
スレッド実行部１１１は、演算ユニットなどを備え、プログラムをスレッド単位で実行することができる。また、スレッドを実行しているときに、データにアクセスする場合は、アクセス先のアドレスを含むデータアクセス要求をキャッシュ部１１４に出す。これに伴い、キャッシュ部１１４からデータを受け取る。そして、受け取ったデータを使用して、スレッドを実行する。
【００２２】
スレッド切替制御部１１２は、ハードウェア、ソフトウェアなどにより、スレッド実行部１１１で処理されるスレッドの切り替え制御を行う。
【００２３】
キャッシュ入替制御部１１３は、スレッド切替制御部１１２で行われるスレッドの切り替え制御に従って、キャッシュ部１１４に記憶されているキャッシュ内容の入れ替え操作を行う。
【００２４】
キャッシュ部１１４は、タグ記憶部１４１、データ記憶部１４２などを備える。タグ記憶部１４１は、スレッド実行部１１１から出力されたデータアクセス要求に含まれるアクセス先のアドレスをタグとして記憶する。データ記憶部１４２は、タグ記憶部１４１に記憶されているタグと対応付けてデータを記憶する。
【００２５】
ここでは、一例として、タグ記憶部１４１は、４つのタグ記憶領域を有する。データ記憶部１４２は、４つのデータ記憶領域を有する。ここで、タグ記憶領域とは、タグを記憶することができる記憶領域である。データ記憶領域とは、データを記憶することができる記憶領域である。
【００２６】
なお、タグ記憶部１４１に記憶されているタグを書き換えるにあたっては、ＬＲＵ（Least Recently Used）方式、ＦＩＦＯ（First In First Out）方式、ランダム方式などによって書き換えられる。データ記憶部１４２に記憶されているデータを書き換える場合においても同様である。
【００２７】
また、キャッシュ部１１４は、スレッド実行部１１１から出力されたデータアクセス要求に含まれるアクセス先のアドレスと一致するタグがタグ記憶部１４１に存在する場合は、主記憶装置１０２にアクセスすることなく、そのタグと対応付けられてデータ記憶部１４２に記憶されているデータをスレッド実行部１１１に出力する。一方、存在しない場合は、そのアドレスをタグとしてタグ記憶部１４１に登録した上で、そのアドレスによって特定されるデータを主記憶装置１０２から取得する。取得したデータをデータ記憶部１４２に登録した上で、スレッド実行部１１１に出力する。
【００２８】
スワップ部１１５は、退避タグ記憶部１５１などを備える。退避タグ記憶部１５１は、キャッシュ内容を入れ替えるにあたり、タグの退避先および復帰元となる。
【００２９】
ここでは、一例として、退避タグ記憶部１５１は、４つのタグ記憶領域を有する。
また、キャッシュ部１１４は、キャッシュ内容を入れ替えるときは、タグ記憶部１４１に記憶されているタグを退避タグ記憶部１５１に退避しながら、退避タグ記憶部１５１に退避されていたタグをタグ記憶部１４１に復帰する。さらに、復帰したタグによって特定されるデータを主記憶装置１０２から取得してデータ記憶部１４２に復帰する。
【００３０】
次に、本実施の形態におけるプロセッサ１０１の動作について説明する。
図３は、本実施の形態におけるプロセッサ１０１において実行されるキャッシュ処理を示す図である。図３に示されるように、キャッシュ部１１４は、スレッド実行部１１１からデータアクセス要求を受けたとする（Ｓ１０１：Ｙｅｓ）。この場合において、そのデータアクセス要求に含まれるアクセス先のアドレスと一致するタグがタグ記憶部１４１に存在するか否かを判定する（Ｓ１０２）。判定した結果、存在する場合は（Ｓ１０２：Ｙｅｓ）、主記憶装置１０２にアクセスすることなく、データ記憶部１４２に登録されているデータの中から、そのタグと対応付けられているデータをスレッド実行部１１１に渡す（Ｓ１０３）。一方、存在しない場合は（Ｓ１０２：Ｎｏ）、そのアドレスをタグとしてタグ記憶部１４１に登録する（Ｓ１０４）。タグとして登録したアドレスによって特定されるデータを主記憶装置１０２から取得する（Ｓ１０５）。取得したデータを、登録したアドレスと対応付けてデータ記憶部１４２に登録する（Ｓ１０６）。そして、取得したデータをスレッド実行部１１１に渡す（Ｓ１０７）。
【００３１】
また、キャッシュ部１１４は、キャッシュ入替制御部１１３からキャッシュ入替要求を受けたとする（Ｓ１０１：Ｎｏ，Ｓ１０８：Ｙｅｓ）。この場合において、スワップ部１１５と連携して、キャッシュ入替処理を行う（Ｓ１０９）。
【００３２】
また、プロセッサ１０１において、スレッドを切り替えるときは、まず、スレッド切替制御部１１２は、キャッシュ入替制御部１１３にキャッシュ入れ替え操作の要求を出す。そして、スレッド切替制御部１１２からキャッシュ入れ替え操作の要求を受けると、キャッシュ入替制御部１１３は、キャッシュ部１１４にキャッシュ入替要求を出す。これに伴い、キャッシュ部１１４は、キャッシュ入替処理を行う。そして、キャッシュ入れ替え操作が完了した後、スレッド切替制御部１１２は、スレッド実行部１１１が実行するスレッドを切り替える。
【００３３】
図４は、本実施の形態におけるプロセッサ１０１において実行されるキャッシュ入替処理を示す図である。図４に示されるように、キャッシュ部１１４は、タグ記憶部１４１に記憶されているタグを退避タグ記憶部１５１に退避しながら（Ｓ１１１）、退避タグ記憶部１５１に退避されていたタグをタグ記憶部１４１に復帰する（Ｓ１１２）。さらに、タグ記憶部１４１に復帰したタグによって特定されるデータを主記憶装置１０２から取得する（Ｓ１１３）。取得したデータを、復帰したタグと対応付けてデータ記憶部１４２に登録する（Ｓ１１４）。
【００３４】
以上、本実施の形態におけるプロセッサ１０１によれば、他の処理によって、スレッドの実行が中断されると、タグ記憶部１４１に記憶されているタグが退避タグ記憶部１５１に退避される。そして、スレッドの実行が再開されるときに、退避タグ記憶部１５１に退避されていたタグがタグ記憶部１４１に復帰される。復帰されたタグを使用して、データ記憶部１４２に記憶されていたデータが復帰される。
【００３５】
これによって、途中で他の処理が実行されてキャッシュ内容が変化することに起因したキャッシュミスを軽減することが可能となる。その結果、リアルタイム性の劣化を抑制することが可能となる。
【００３６】
なお、本実施の形態におけるプロセッサ１０１によれば、スレッドの切り替え時に、タグの退避と復帰の両方を行っている。しかし、タグ記憶部１４１、データ記憶部１４２を二重化した上で、切り替え前のスレッドの実行と並行してタグの復帰、データの取得を行い、スレッドの切り替え時に、二重化したタグ記憶部１４１、データ記憶部１４２の切り替えを行い、その後タグの退避を行うとしてもよい。これにより、キャッシュ内容の退避、復帰時にプロセッサの処理を停止させる必要がなくなり、スレッド実行部１１１の実行効率を向上させることが可能となる。
【００３７】
（実施の形態２）
以下、本発明に係わる実施の形態２について、図面を参照しながら説明する。
【００３８】
本実施の形態におけるプロセッサは、下記（ｄ）〜（ｅ）に示す特徴を備える。
（ｄ）プロセッサは、実行対象のスレッドが切り替わるときに、キャッシュデータ記憶機能から退避されたデータを記憶するスワップデータ記憶機能を備え、データ入替機能は、第２のタグによって特定されるデータをスワップデータ記憶機能から取得する。
【００３９】
（ｅ）データ入替機能は、キャッシュデータ記憶機能に記憶されているデータをスワップデータ記憶機能に退避しながら、スワップデータ記憶機能に退避されていたデータをキャッシュデータ記憶機能に復帰する。
【００４０】
なお、本実施の形態における構成要素において、実施の形態１と同一の構成要素については、同一の参照符号を付して説明を省略する。以上の点を踏まえて、本実施の形態におけるプロセッサについて説明する。
【００４１】
まず、本実施の形態におけるプロセッサの構成について説明する。
図５は、本実施の形態におけるプロセッサの構成を示す図である。図５に示されるように、プロセッサ２０１は、実施の形態１におけるプロセッサ１０１と比べて（例えば、図２参照。）、キャッシュ部１１４、スワップ部１１５の代わりに、キャッシュ部２１４、スワップ部２１５を備える点が異なる。
【００４２】
キャッシュ部２１４は、タグ記憶部１４１、データ記憶部１４２などを備える。
スワップ部２１５は、退避タグ記憶部１５１、退避データ記憶部２５２などを備える。退避データ記憶部２５２は、キャッシュ内容を入れ替えるにあたり、データの退避先および復帰元となる。
【００４３】
ここでは、一例として、退避データ記憶部２５２は、４つのデータ記憶領域を有する。
そして、キャッシュ部２１４は、キャッシュ内容を入れ替えるときは、タグ記憶部１４１に記憶されているタグを退避タグ記憶部１５１に退避しながら、退避タグ記憶部１５１に退避されていたタグをタグ記憶部１４１に復帰する。さらに、データ記憶部１４２に記憶されているデータを退避データ記憶部２５２に退避しながら、退避データ記憶部２５２に退避されていたデータをデータ記憶部１４２に復帰する。
【００４４】
次に、本実施の形態におけるプロセッサ２０１の動作について説明する。
図６は、本実施の形態におけるプロセッサ２０１において実行されるキャッシュ入替処理を示す図である。図６に示されるように、本実施の形態におけるキャッシュ入替処理は、実施の形態１におけるキャッシュ入替処理と比べて、処理（Ｓ１１３），（Ｓ１１４）の代わりに、下記の処理（Ｓ２１１），（Ｓ２１２）を実行する点が異なる。
【００４５】
キャッシュ部２１４は、タグ記憶部１４１に記憶されているタグを退避タグ記憶部１５１に退避しながら（Ｓ１１１）、退避タグ記憶部１５１に退避されていたタグをタグ記憶部１４１に復帰する（Ｓ１１２）。さらに、データ記憶部１４２に記憶されているデータを退避データ記憶部２５２に退避しながら（Ｓ２１１）、退避データ記憶部２５２に退避されていたデータをデータ記憶部１４２に復帰する（Ｓ２１２）。
【００４６】
以上、本実施の形態におけるプロセッサ２０１によれば、他の処理によって、スレッドの実行が中断されると、タグ記憶部１４１に記憶されているタグが退避タグ記憶部１５１に退避される。また、データ記憶部１４２に記憶されているデータが退避データ記憶部２５２に退避される。そして、スレッドの実行が再開されるときに、退避タグ記憶部１５１に退避されていたタグがタグ記憶部１４１に復帰される。退避データ記憶部２５２に退避されていたデータがデータ記憶部１４２に復帰される。
【００４７】
これによって、途中で他の処理が実行されてキャッシュ内容が変化することに起因したキャッシュミスを軽減することが可能となる。その結果、リアルタイム性の劣化を抑制することが可能となる。
【００４８】
さらに、本実施の形態では、主記憶装置１０２より高速なメモリで退避データ記憶部２５２を構成することによって、キャッシュ入替制御部１１３によるキャッシュ内容の入れ替えを高速にし、スレッド切り替え時の性能劣化を抑制することが可能となる。
【００４９】
（実施の形態３）
以下、本発明に係わる実施の形態３について、図面を参照しながら説明する。
【００５０】
本実施の形態におけるプロセッサは、下記（ｆ）に示す特徴を備える。
（ｆ）プロセッサは、（ｆ１）少なくともキャッシュデータ記憶機能に記憶されるデータの数の２倍以上の数のタグが記憶される所定のサイズの記憶領域から、第１のタグが記憶される第１のタグ記憶領域と、第２のタグが記憶される第２のタグ記憶領域とを割り当てるキャッシュ割当機能を備え、（ｆ２）第１のタグ記憶機能は、第１のタグ記憶領域を有し、第２のタグ記憶機能は、第２のタグ記憶領域を有する。
【００５１】
なお、本実施の形態における構成要素において、実施の形態１と同一の構成要素については、同一の参照符号を付して説明を省略する。以上の点を踏まえて、本実施の形態におけるプロセッサについて説明する。
【００５２】
まず、本実施の形態におけるプロセッサの構成について説明する。
図７は、本実施の形態におけるプロセッサの構成を示す図である。図７に示されるように、プロセッサ３０１は、実施の形態１におけるプロセッサ１０１と比べて（例えば、図２参照。）、スレッド実行部１１１、キャッシュ部１１４、スワップ部１１５の代わりに、スレッド実行部３１１、キャッシュ部３１４を備える点が異なる。
【００５３】
スレッド実行部３１１は、実行中のスレッドが識別される実行スレッド情報と、アクセス先のアドレスとを含むデータアクセス要求をキャッシュ部３１４に出力する。これに伴い、キャッシュ部３１４から出力されたデータに従って処理を行う。
【００５４】
キャッシュ部３１４は、タグ記憶部３４１、データ記憶部３４２、キャッシュ割当部３４３などを備える。タグ記憶部３４１は、スレッド実行部３１１から出力されたデータアクセス要求に含まれるアクセス先のアドレスをタグとして記憶する。データ記憶部３４２は、タグ記憶部３４１に記憶されているタグと対応付けてデータを記憶する。キャッシュ割当部３４３は、スレッドに応じてタグ記憶領域を割り当てる。
【００５５】
ここでは、一例として、タグ記憶部３４１は、８つのタグ記憶領域を有する。さらに、８つのタグ記憶領域は、第１のタグ記憶領域グループと第２のタグ記憶領域グループとに分類される。ここで、第１のタグ記憶領域グループと第２のタグ記憶領域グループとは、互いに重複せず、それぞれ４つのタグ記憶領域を有する。データ記憶部３４２は、４つのデータ記憶領域を有する。キャッシュ割当部３４３は、実行対象のスレッドが切り替わるたびに、実行対象のスレッドに対して、第１のタグ記憶領域グループと第２のタグ記憶領域グループとを交互に割り当てる。
【００５６】
なお、タグ記憶部３４１における第１のタグ記憶領域グループに記憶されているタグを書き換えるにあたっては、ＬＲＵ方式、ＦＩＦＯ方式、ランダム方式などによって書き換えられる。タグ記憶部３４１における第２のタグ記憶領域グループに記憶されているタグを書き換える場合においても同様である。データ記憶部３４２に記憶されているデータを書き換える場合においても同様である。
【００５７】
また、キャッシュ部３１４は、スレッド実行部３１１から出力されたデータアクセス要求に含まれる実行スレッド情報に基づいて、第１のタグ記憶領域グループおよび第２のタグ記憶領域グループのいずれかを特定する。特定したタグ記憶領域グループに、そのデータアクセス要求に含まれるアクセス先のアドレスと一致するタグが存在する場合は、主記憶装置１０２にアクセスすることなく、そのタグと対応付けられてデータ記憶部３４２に記憶されているデータをスレッド実行部３１１に出力する。一方、存在しない場合は、特定したタグ記憶領域グループに、そのアドレスをタグとして登録した上で、そのアドレスによって特定されるデータを主記憶装置１０２から取得する。取得したデータを、データ記憶部３４２に登録した上で、スレッド実行部３１１に出力する。
【００５８】
次に、本実施の形態におけるプロセッサ３０１の動作について説明する。
図８は、本実施の形態におけるプロセッサ３０１において実行されるキャッシュ処理を示す図である。図８に示されるように、本実施の形態におけるキャッシュ処理は、実施の形態１におけるキャッシュ処理と比べて（例えば、図３参照。）、処理（Ｓ１０２）〜（Ｓ１０７）の代わりに、下記の処理（Ｓ３０１）〜（Ｓ３０７）を実行する点が異なる。
【００５９】
キャッシュ部３１４は、スレッド実行部３１１からデータアクセス要求を受けたとする（Ｓ１０１：Ｙｅｓ）。この場合において、そのデータアクセス要求に含まれる実行スレッド情報から、第１のタグ記憶領域グループおよび第２のタグ記憶領域グループのいずれかを特定する（Ｓ３０１）。特定したタグ記憶領域グループに、そのデータアクセス要求に含まれるアクセス先のアドレスと一致するタグが存在するか否かを判定する（Ｓ３０２）。存在する場合は（Ｓ３０２：Ｙｅｓ）、主記憶装置１０２にアクセスすることなく、データ記憶部３４２に登録されているデータの中から、そのタグと対応付けられているデータをスレッド実行部３１１に渡す（Ｓ３０３）。一方、存在しない場合は（Ｓ３０２：Ｎｏ）、特定したタグ記憶領域グループに、そのアドレスをタグとして登録する（Ｓ３０４）。タグとして登録したアドレスによって特定されるデータを主記憶装置１０２から取得する（Ｓ３０５）。取得したデータを、登録したアドレスと対応付けてデータ記憶部３４２に登録する（Ｓ３０６）。そして、取得したデータをスレッド実行部３１１に渡す（Ｓ３０７）。
【００６０】
また、プロセッサ３０１において、実行対象のスレッドを切り替えるときは、まず、スレッド切替制御部１１２は、キャッシュ入替制御部１１３にキャッシュ入れ替え操作の要求を出す。そして、スレッド切替制御部１１２からキャッシュ入れ替え操作の要求を受けると、キャッシュ入替制御部１１３は、キャッシュ部３１４にキャッシュ入替要求を出す。これに伴い、キャッシュ部３１４は、キャッシュ入替処理を行う。そして、キャッシュ入れ替え操作が完了した後、スレッド切替制御部１１２は、スレッド実行部３１１が実行するスレッドを切り替える。
【００６１】
図９は、本実施の形態におけるプロセッサ３０１において実行されるキャッシュ入替処理を示す図である。図９に示されるように、本実施の形態におけるキャッシュ入替処理は、実施の形態１におけるキャッシュ入替処理と比べて（例えば、図４参照。）、処理（Ｓ１１１）〜（Ｓ１１４）の代わりに、下記の処理（Ｓ３１１）〜（Ｓ３１３）を備える点が異なる。
【００６２】
キャッシュ割当部３４３は、第１のタグ記憶領域グループおよび第２のタグ記憶領域グループのいずれかのタグ記憶領域グループを割り当てる（Ｓ３１１）。
【００６３】
例えば、実行対象のスレッドが切り替わる前に実行されていたスレッドを第１のスレッドとする。切り替わった後に実行されるスレッドを第２のスレッドとする。この場合において、第１のスレッドに対して第１のタグ記憶領域グループを割り当てていた場合は、第２のスレッドに対して第２のタグ記憶領域グループを割り当てる。一方、第１のスレッドに対して第２のタグ記憶領域グループを割り当てていた場合は、第２のスレッドに対して第１のタグ記憶領域グループを割り当てる。
【００６４】
さらに、キャッシュ部３１４は、キャッシュ割当部３４３によって割り当てられたタグ記憶領域グループに登録されているタグによって特定されるデータを主記憶装置１０２から取得する（Ｓ３１２）。取得したデータを、登録されているタグと対応付けてデータ記憶部３４２に登録する（Ｓ３１３）。
【００６５】
以上、本実施の形態におけるプロセッサ３０１によれば、他の処理によって、スレッドの実行が中断され、スレッドの実行が再開されるときに、キャッシュ割当部３４３によって割り当てられたタグ記憶領域グループに記憶されているタグを使用して、データ記憶部３４２に記憶されていたデータが復帰される。
【００６６】
これによって、途中で他の処理が実行されてキャッシュ内容が変化することに起因したキャッシュミスを軽減することが可能となる。その結果、リアルタイム性の劣化を抑制することが可能となる。
【００６７】
また、キャッシュ部３１４は、実行中のスレッドに対するデータのみが記憶されている。それ以外のスレッドに対するデータを記憶しないので、タグ領域とデータ領域との双方をキャッシュ割当部３４３によって割り当てる構成と比べて、ハードウェア量を削減することが可能となる。
【００６８】
（実施の形態４）
以下、本発明に係わる実施の形態４について、図面を参照しながら説明する。
【００６９】
なお、本実施の形態におけるプロセッサは、下記（ｇ），（ｈ）に示す特徴を備えるとしてもよい。
【００７０】
（ｇ）プロセッサは、第１のスレッドによって要求された所定のデータがキャッシュデータ記憶機能に登録されていない場合において、所定のデータの記憶先が特定される所定のアドレスが第２のタグ記憶機能に記憶されている場合は、スワップデータ記憶機能に記憶されているデータの中から、所定のアドレスと対応付けられているデータを、所定のデータとして、キャッシュデータ記憶機能に登録することなく実行ユニットに渡すキャッシュ機能を備える。
【００７１】
（ｈ）データ入替機能は、第１のタグ記憶機能と第２のタグ記憶機能とに同一のアドレスが登録されている場合は、同一のアドレスによって特定されるデータを除いて、キャッシュデータ記憶機能に記憶されているデータを入れ替える。
【００７２】
なお、本実施の形態における構成要素において、実施の形態３と同一の構成要素については、同一の参照符号を付して説明を省略する。以上の点を踏まえて、本実施の形態におけるプロセッサについて説明する。
【００７３】
まず、本実施の形態におけるプロセッサの構成について説明する。
図１０は、本実施の形態におけるプロセッサの構成を示す図である。図１０に示されるように、プロセッサ４０１は、実施の形態３におけるプロセッサ３０１と比べて（例えば、図７参照。）、キャッシュ部３１４の代わりに、キャッシュ部４１４、スワップ部４１５を備える点が異なる。
【００７４】
キャッシュ部４１４は、タグ記憶部３４１、データ記憶部３４２、キャッシュ割当部３４３などを備える。
【００７５】
スワップ部４１５は、退避データ記憶部４５２などを備える。退避データ記憶部４５２は、キャッシュ内容を入れ替えるにあたり、データの退避先および復帰元となる。
【００７６】
ここでは、一例として、退避データ記憶部４５２は、４つのデータ記憶領域を有する。
そして、キャッシュ部４１４は、キャッシュを入れ替えるときは、データ記憶部３４２に記憶されているデータを退避データ記憶部４５２に退避しながら、退避データ記憶部４５２に退避されていたデータをデータ記憶部３４２に復帰する。
【００７７】
次に、本実施の形態におけるプロセッサ４０１の動作について説明する。
プロセッサ４０１において、実行対象のスレッドを切り替えるときは、まず、スレッド切替制御部１１２は、キャッシュ入替制御部１１３にキャッシュ入れ替え操作の要求を出す。そして、スレッド切替制御部１１２からキャッシュ入れ替え操作の要求を受けると、キャッシュ入替制御部１１３は、キャッシュ部４１４にキャッシュ入替要求を出す。これに伴い、キャッシュ部４１４は、キャッシュ入替処理を行う。そして、キャッシュ入れ替え操作が完了した後、スレッド切替制御部１１２は、スレッド実行部３１１が実行するスレッドを切り替える。
【００７８】
図１１は、本実施の形態におけるプロセッサ４０１において実行されるキャッシュ入替処理を示す図である。図１１に示されるように、本実施の形態におけるキャッシュ入替処理は、実施の形態３におけるキャッシュ入替処理と比べて（例えば、図９参照。）、処理（Ｓ３１１），（Ｓ３１２）の代わりに、下記の処理（Ｓ４１１），（Ｓ４１２）を行う点が異なる。
【００７９】
キャッシュ部４１４は、データ記憶部３４２に記憶されているデータを退避データ記憶部４５２に退避しながら（Ｓ４１１）、退避データ記憶部４５２に退避されていたデータをデータ記憶部３４２に復帰する（Ｓ４１２）。
【００８０】
以上、本実施の形態におけるプロセッサ４０１によれば、他の処理によって、スレッドの実行が中断されると、データ記憶部３４２に記憶されているデータが退避データ記憶部４５２に退避される。そして、スレッドの実行が再開されるときに、退避データ記憶部４５２に退避されていたデータがデータ記憶部３４２に復帰される。
【００８１】
これによって、途中で他の処理が実行されてキャッシュ内容が変化することに起因したキャッシュミスを軽減することが可能となる。その結果、リアルタイム性の劣化を抑制することが可能となる。
【００８２】
なお、主記憶装置１０２よりも高速アクセス可能なメモリで退避データ記憶部４５２を構成するとしてもよい。
【００８３】
これによって、キャッシュ入替制御部１１３によるキャッシュ内容の入れ替えを高速に行うことが可能となる。その結果、スレッド切り替え時の性能劣化を抑制することが可能となる。
【００８４】
なお、例えば、スレッド実行部３１１から出力されたデータアクセス要求に含まれるアクセス先のアドレスと一致するタグが、キャッシュ割当部３４３によって割り当てられたタグ記憶領域グループに存在しないとする。この場合において、キャッシュ割当部３４３によって割り当てられなかったタグ記憶領域グループに存在する場合は、退避データ記憶部４５２からデータを取得するとしてもよい。
【００８５】
これによって、所定のスレッドによってキャッシュ部４１４に登録されたデータを他のスレッドが要求する場合は、退避データ記憶部４５２に退避されているデータの中から取得することが可能となる。また、キャッシュ割当部３４３によって割り当てられたタグ記憶領域グループに、そのタグを登録することなく、また、データ記憶部３４２に、そのタグと対応付けてデータを登録することなく、そのデータをスレッド実行部３１１に出力することも可能となる。すなわち、主記憶装置１０２にアクセスすることなく、要求されたデータを取得することが可能となる。その結果、キャッシュミスによるペナルティを削減することが可能となる。
【００８６】
また、データ記憶部３４２および退避データ記憶部４５２に記憶されているデータは、実行対象のスレッドが切り替わる前に実行されていたスレッドと切り替わった後に実行されるスレッドとの間で共有される。このため、主記憶装置１０２に記憶されているデータのコピーが複数存在することがなく、キャッシュ部４１４に記憶されるデータの一貫性を保つために、スレッド間でデータアクセスに対する制約を設ける必要がない。
【００８７】
（実施の形態５）
以下、本発明に係わる実施の形態５について、図面を参照しながら説明する。
【００８８】
本実施の形態におけるプロセッサは、下記（ｉ）に示す特徴を備える。
（ｉ）プロセッサは、第１のスレッドによって要求された所定のデータがキャッシュデータ記憶機能に記憶されていない場合は、所定のデータの記憶先が特定される所定のアドレスを第１のタグとして第１のタグ記憶機能に登録してから、実行対象のスレッドを第１のスレッドから第２のスレッドに切り替えるキャッシュ機能を備える。
【００８９】
なお、本実施の形態における構成要素において、実施の形態３と同一の構成要素については、同一の参照符号を付して説明を省略する。以上の点を踏まえて、本実施の形態におけるプロセッサについて説明する。
【００９０】
まず、本実施の形態におけるプロセッサの構成について説明する。
図１２は、本実施の形態におけるプロセッサの構成を示す図である。図１２に示されるように、プロセッサ５０１は、実施の形態３におけるプロセッサ３０１と比べて（例えば、図７参照。）、スレッド切替制御部１１２、キャッシュ部３１４の代わりに、スレッド切替制御部５１２、キャッシュ部５１４を備える点が異なる。
【００９１】
スレッド切替制御部５１２は、ハードウェア、ソフトウェアなどにより、スレッド実行部３１１で処理されるスレッドの切り替え制御を行う。さらに、キャッシュ部５１４からスレッド切り替え要求を受けると、キャッシュ入替制御部１１３にキャッシュ入れ替え操作の要求を出す。そして、キャッシュ入れ替え操作が完了すると、スレッド実行部３１１が実行するスレッドを切り替える。
【００９２】
キャッシュ部５１４は、タグ記憶部３４１、データ記憶部３４２、キャッシュ割当部３４３などを備える。さらに、スレッド実行部３１１からデータアクセス要求を受けると、そのデータアクセス要求に含まれる実行スレッド情報に基づいて、第１のタグ記憶領域グループおよび第２のタグ記憶領域グループのいずれかを特定する。特定したタグ記憶領域グループに、そのデータアクセス要求に含まれるアクセス先のアドレスと一致するタグが存在するか否かを判定する。判定した結果、存在する場合は、主記憶装置１０２にアクセスすることなく、データ記憶部３４２に登録されているデータの中から、そのタグと対応付けられているデータをスレッド実行部３１１に渡す。一方、存在しない場合は、特定したタグ記憶領域グループに、そのアドレスをタグとして登録する。そして、スレッド切替制御部５１２にスレッド切り替え要求を出す。
【００９３】
次に、本実施の形態におけるプロセッサ５０１の動作について説明する。
図１３は、本実施の形態におけるプロセッサ５０１において実行されるキャッシュ処理を示す図である。図１３に示されるように、本実施の形態におけるキャッシュ処理は、実施の形態３におけるキャッシュ処理と比べて（例えば、図８参照。）、処理（Ｓ３０５）〜（Ｓ３０７）の代わりに、下記の処理（Ｓ５０１）を行う点が異なる。
【００９４】
キャッシュ部５１４は、スレッド実行部３１１からデータアクセス要求を受けると（Ｓ１０１：Ｙｅｓ）、そのデータアクセス要求に含まれる実行スレッド情報に基づいて、キャッシュ割当部３４３によって割り当てられたタグ記憶領域グループを特定する（Ｓ３０１）。そして、特定したタグ記憶領域グループに、そのデータアクセス要求に含まれるアクセス先のアドレスと一致するタグが存在するか否かを判定する（Ｓ３０２）。存在しない場合は（Ｓ３０２：Ｎｏ）、特定したタグ記憶領域グループに、そのアドレスをタグとして登録する（Ｓ３０４）。そして、スレッド切替制御部５１２にスレッド切り替え要求を出力する（Ｓ５１６）。
【００９５】
これに伴い、スレッド切替制御部５１２は、キャッシュ部５１４からスレッド切り替え要求を受けると、キャッシュ入替制御部１１３にキャッシュ入れ替え操作の要求を出す。
【００９６】
以上、本実施の形態におけるプロセッサ５０１によれば、他の処理によって、スレッドの実行が中断され、スレッドの実行が再開されるときに、キャッシュ割当部３４３によって割り当てられたタグ記憶領域グループに記憶されているタグを使用して、データ記憶部３４２に記憶されていたデータが復帰される。
【００９７】
これによって、途中で他の処理が実行されてキャッシュ内容が変化することに起因したキャッシュミスを軽減することが可能となる。その結果、リアルタイム性の劣化を抑制することが可能となる。
【００９８】
さらに、スレッド実行部３１１が要求するデータがキャッシュ部５１４に存在しない場合は、スレッドの実行を中断する。これによって、スレッドの実行が再開されるときに、キャッシュ部５１４にデータが記憶されるので、キャッシュミスによるペナルティサイクルを、他のスレッドの実行により隠蔽することが可能となる。その結果、スレッド実行部３１１の実行効率を向上させることが可能となる。
【００９９】
（実施の形態６）
以下、本発明に係わる実施の形態６について、図面を参照しながら説明する。
【０１００】
本実施の形態におけるプロセッサは、下記（ｊ）に示す特徴を備える。
（ｊ）プロセッサは、（ｊ１）実行ユニットにおいて要求されたデータの記憶先が特定されるアドレスを１次タグとして記憶する１次タグ記憶機能と、（ｊ２）第１のスレッドによって要求されたデータを第１のタグと対応付けて記憶する第１の２次キャッシュデータ記憶機能と、（ｊ３）第２のスレッドによって要求されたデータを第２のタグと対応付けて記憶する第２の２次キャッシュデータ記憶機能と、（ｊ４）実行対象のスレッドが第１のスレッドから第２のスレッドに切り替わるときに、１次タグ記憶機能に記憶されている１次タグを第１のタグ記憶機能に退避しながら、第２のタグを１次タグ記憶機能に復帰するタグ入替機能とを備え、（ｊ５）データ入替機能は、実行対象のスレッドが第１のスレッドから第２のスレッドに切り替わるときに、キャッシュデータ記憶機能に記憶されているデータを第１の２次キャッシュデータ記憶機能に退避しながら、第２の２次キャッシュデータ記憶機能に記憶されているデータをキャッシュデータ記憶機能に復帰する。
【０１０１】
なお、本実施の形態におけるプロセッサは、下記（ｋ）に示す特徴を備えるとしてもよい。
【０１０２】
（ｋ）プロセッサは、第１のスレッドによって要求された所定のデータがキャッシュデータ記憶機能に登録されていない場合において、所定のデータの記憶先が特定される所定のアドレスが第２のタグ記憶機能に記憶されている場合は、第２の２次キャッシュデータ記憶機能に記憶されているデータの中から、所定のアドレスと対応付けられているデータを、所定のデータとして、キャッシュデータ記憶機能に登録することなく実行ユニットに渡すキャッシュ機能を備える。
【０１０３】
なお、本実施の形態における構成要素において、実施の形態１と同一の構成要素については、同一の参照符号を付して説明を省略する。以上の点を踏まえて、本実施の形態におけるプロセッサについて説明する。
【０１０４】
まず、本実施の形態におけるプロセッサの構成について説明する。
図１４は、本実施の形態におけるプロセッサの構成を示す図である。図１４に示されるように、プロセッサ６０１は、実施の形態１におけるプロセッサ１０１と比べて（例えば、図２参照。）、キャッシュ入替制御部１１３、キャッシュ部１１４の代わりに、キャッシュ入替制御部６１３、１次キャッシュ部６１４、２次キャッシュ部６１５を備える点が異なる。
【０１０５】
キャッシュ入替制御部６１３は、スレッド切替制御部１１２で行われるスレッドの切り替え制御に従って、１次キャッシュ部６１４に記憶されているキャッシュ内容の入れ替え操作を行う。
【０１０６】
１次キャッシュ部６１４は、タグ記憶部６４１、データ記憶部６４２などを備える。タグ記憶部６４１は、スレッド実行部１１１から出力されたデータアクセス要求に含まれるアクセス先のアドレスをタグとして記憶する。データ記憶部６４２は、タグ記憶部１４１に記憶されているタグと対応付けてデータを記憶する。
【０１０７】
ここでは、一例として、タグ記憶部６４１は、４つのタグ記憶領域を有する。データ記憶部６４２は、４つのデータ記憶領域を有する。
【０１０８】
なお、タグ記憶部６４１に記憶されているタグを書き換えるにあたっては、ＬＲＵ方式、ＦＩＦＯ方式、ランダム方式などによって書き換えられる。データ記憶部６４２に記憶されているデータを書き換える場合においても同様である。
【０１０９】
また、１次キャッシュ部６１４は、スレッド実行部１１１から出力されたデータアクセス要求に含まれるアクセス先のアドレスと一致するタグがタグ記憶部６４１に存在する場合は、２次キャッシュ部６１５にアクセスすることなく、そのタグと対応付けられてデータ記憶部６４２に記憶されているデータをスレッド実行部１１１に出力する。一方、存在しない場合は、そのアドレスをタグとしてタグ記憶部６４１に登録した上で、そのデータアクセス要求を２次キャッシュ部６１５に転送する。これに伴い、２次キャッシュ部６１５から出力されたデータをデータ記憶部６４２に登録した上で、そのデータをスレッド実行部１１１に出力する。
【０１１０】
２次キャッシュ部６１５は、タグ記憶部６５１、データ記憶部６５２、キャッシュ割当部６５３などを備える。タグ記憶部６５１は、１次キャッシュ部６１４から転送されたデータアクセス要求に含まれるアクセス先のアドレスをタグとして記憶する。データ記憶部６５２は、タグ記憶部６５１に記憶されているタグと対応付けてデータを記憶する。
【０１１１】
ここでは、一例として、タグ記憶部６５１は、８つのタグ記憶領域を有する。さらに、８つのタグ記憶領域は、第１のタグ記憶領域グループと第２のタグ記憶領域グループとに分類される。第１のタグ記憶領域グループと第２のタグ記憶領域グループとは、互いに重複せず、それぞれ４つのタグ記憶領域を有する。データ記憶部６５２は、８つのデータ記憶領域を有する。さらに、８つのデータ記憶領域は、第１のデータ記憶領域グループと第２のデータ記憶領域グループとに分類される。第１のデータ記憶領域グループと第２のデータ記憶領域グループとは、互いに重複せず、それぞれ４つのデータ記憶領域を有する。第１のデータ記憶領域グループは、第１のタグ記憶領域グループと対応付けられている。第２のデータ記憶領域グループは、第２のタグ記憶領域グループと対応付けられている。キャッシュ割当部６５３は、実行対象のスレッドが切り替わるたびに、実行対象のスレッドに対して、第１のタグ記憶領域グループと第２のタグ記憶領域グループとを交互に割り当てる。
【０１１２】
なお、タグ記憶部６５１における第１のタグ記憶領域グループに記憶されているタグを書き換えるにあたっては、ＬＲＵ方式、ＦＩＦＯ方式、ランダム方式などによって書き換えられる。タグ記憶部６５１における第２のタグ記憶領域グループに記憶されているタグを書き換える場合においても同様である。データ記憶部６５２に記憶されているデータを書き換える場合においても同様である。
【０１１３】
次に、本実施の形態におけるプロセッサ６０１の動作について説明する。
図１５は、本実施の形態におけるプロセッサ６０１において実行されるキャッシュ処理を示す図である。図１５に示されるように、本実施の形態におけるキャッシュ処理は、実施の形態１におけるキャッシュ処理と比べて（例えば、図３参照。）、処理（Ｓ１０５）〜（Ｓ１０７）の代わりに、下記の処理（Ｓ６０１）〜（Ｓ６０４）を実行する点が異なる。
【０１１４】
１次キャッシュ部６１４は、スレッド実行部１１１からデータアクセス要求を受けると（Ｓ１０１：Ｙｅｓ）、そのデータアクセス要求に含まれるアクセス先のアドレスと一致するタグがタグ記憶部６４１に存在するか否かを判定する（Ｓ１０２）。判定した結果、存在しない場合は（Ｓ１０２：Ｎｏ）、そのアドレスをタグとしてタグ記憶部６４１に登録する（Ｓ１０４）。そのデータアクセス要求を２次キャッシュ部６１５に転送する。これに伴い、データアクセス要求によって特定されるデータを２次キャッシュ部６１５から受け取る（Ｓ６０２）。受け取ったデータを、登録したアドレスと対応付けてデータ記憶部６４２に登録する（Ｓ６０３）。そして、受け取ったデータをスレッド実行部１１１に渡す（Ｓ６０４）。
【０１１５】
また、プロセッサ６０１において、実行対象のスレッドを切り替えるときは、まず、スレッド切替制御部１１２は、キャッシュ入替制御部６１３にキャッシュ入れ替え操作の要求を出す。スレッド切替制御部１１２からキャッシュ入れ替え操作の要求を受けると、キャッシュ入替制御部６１３は、１次キャッシュ部６１４と２次キャッシュ部６１５とを制御して、キャッシュ入替処理を実行させる。そして、キャッシュ入れ替え操作が完了した後、スレッド切替制御部１１２は、スレッド実行部１１１が実行するスレッドを切り替える。
【０１１６】
図１６は、本実施の形態におけるプロセッサ６０１において実行されるキャッシュ入替処理を示す図である。図１６に示されるように、本実施の形態におけるキャッシュ入替処理は、実施の形態１におけるキャッシュ入替処理と比べて（例えば、図４参照。）、処理（Ｓ１１１）〜（Ｓ１１４）の代わりに、下記の処理（Ｓ６１１）〜（Ｓ６１５）を実行する点が異なる。
【０１１７】
キャッシュ割当部６５３は、第１のタグ記憶領域グループおよび第２のタグ記憶領域グループのいずれかを割り当てる（Ｓ６１１）。
【０１１８】
例えば、実行対象のスレッドが切り替わる前に実行されていたスレッドを第１のスレッドとする。実行対象のスレッドが切り替わった後に実行されるスレッドを第２のスレッドとする。キャッシュ割当部６５３によって、第１のスレッドに対して第１のタグ記憶領域が割り当てられ、第２のスレッドに対して第２のタグ記憶領域が割り当てられたとする。
【０１１９】
この場合において、１次キャッシュ部６１４は、タグ記憶部６４１に記憶されているタグを第１のタグ記憶領域に退避しながら（Ｓ６１２）、第２のタグ記憶領域に記憶されているタグをタグ記憶部６４１に復帰する（Ｓ６１３）。また、データ記憶部６４２に記憶されているデータを第１のデータ記憶領域に退避しながら（Ｓ６１４）、第２のデータ記憶領域に記憶されているデータをデータ記憶部６４２に復帰する（Ｓ６１５）。
【０１２０】
以上、本実施の形態におけるプロセッサ６０１によれば、他の処理によって、スレッドの実行が中断されると、１次キャッシュ部６１４に記憶されているタグとデータとが、スレッドに応じて割り当てられた２次キャッシュ部６１５に退避される。また、スレッドの実行が再開されるときに、２次キャッシュ部６１５に退避されていたタグとデータとが１次キャッシュ部６１４に復帰される。
【０１２１】
これによって、途中で他の処理が実行されてキャッシュ内容が変化することに起因したキャッシュミスを軽減することが可能となる。その結果、リアルタイム性の劣化を抑制することが可能となる。
【０１２２】
なお、例えば、スレッド実行部１１１から出力されたデータアクセス要求に含まれるアクセス先のアドレスと一致するタグが、タグ記憶部６４１に存在しないとする。この場合において、キャッシュ割当部６５３によって、実行待ちのスレッドに対して割り当てられたタグ記憶領域グループに存在する場合は、データ記憶部６５２からデータを取得するとしてもよい。
【０１２３】
これによって、実行対象のスレッドが切り替わる前に実行されていたスレッドによって２次キャッシュ部６１５に記憶されたデータを実行中のスレッドが要求する場合は、データ記憶部６５２に退避されているデータの中から取得することが可能となる。さらに、そのタグをタグ記憶部６４１に登録することなく、また、そのタグと対応付けてデータをデータ記憶部６４２に登録することなく、そのデータをスレッド実行部１１１に出力することも可能となる。すなわち、主記憶装置１０２にアクセスすることなく要求されたデータをスレッド実行部１１１に出力することが可能となる。その結果、キャッシュミスによるペナルティを削減することが可能となる。
【０１２４】
さらに、２次キャッシュ部６１５に記憶されているデータは、実行対象のスレッドが切り替わる前に実行されていたスレッドと切り替わった後に実行されるスレッドとの間で共有される。このため、主記憶装置１０２に記憶されているデータのコピーが複数存在することがなく、１次キャッシュ部６１４と２次キャッシュ部６１５とに記憶されるデータの一貫性を保つために、スレッド間でデータアクセスに対する制約を設ける必要がない。
【０１２５】
（実施の形態７）
以下、本発明に係わる実施の形態７について、図面を参照しながら説明する。
【０１２６】
なお、本実施の形態におけるプロセッサは、下記（ｌ）に示す特徴を備えるとしてもよい。
【０１２７】
（ｌ）プロセッサは、（ｌ１）所定のサイズの記憶領域に記憶されているタグと対応付けられ、対応付けられているタグによって特定されるデータがキャッシュデータ記憶機能およびスワップデータ記憶機能のいずれに記憶されているかが示される選択情報を記憶する選択情報記憶機能と、（ｌ２）第１のスレッドによって要求された所定のデータの記憶先が特定される所定のアドレスが所定のタグとして所定のサイズの記憶領域に記憶されているか否かを判定する記憶判定機能と、（ｌ３）記憶判定機能で所定のサイズの記憶領域に記憶されていると判定された場合は、選択情報記憶機能に記憶されている選択情報の中から、所定のタグと対応付けられている選択情報を選択する選択情報選択機能と、（ｌ４）選択情報選択機能で選択された選択情報に基づいて、所定のデータが所定のデータがキャッシュデータ記憶機能およびスワップデータ記憶機能のいずれに記憶されているかを特定する記憶先特定機能と、（ｌ５）記憶先特定機能でキャッシュデータ記憶機能に記憶されていると特定された場合は、キャッシュデータ記憶機能に記憶されているデータの中から、所定のアドレスと対応付けられているデータを、所定のデータとして実行ユニットに渡し、スワップデータ記憶機能に記憶されていると特定された場合は、スワップデータ記憶機能に記憶されているデータの中から、所定のアドレスと対応付けられているデータを、所定のデータとして実行ユニットに渡すキャッシュ機能とを備える。
【０１２８】
なお、本実施の形態における構成要素において、実施の形態３と同一の構成要素については、同一の参照符号を付して説明を省略する。以上の点を踏まえて、本実施の形態におけるプロセッサについて説明する。
【０１２９】
まず、本実施の形態におけるプロセッサの構成について説明する。
図１７は、本実施の形態におけるプロセッサの構成を示す図である。図１７に示されるように、プロセッサ７０１は、実施の形態３におけるプロセッサ３０１と比べて（例えば、図７参照。）、キャッシュ部３１４の代わりに、キャッシュ部７１４、スワップ部７１５を備える点が異なる。
【０１３０】
スワップ部７１５は、主記憶装置１０２よりも高速アクセス可能な退避データ記憶部７５２などを備える。退避データ記憶部７５２は、キャッシュ内容を入れ替えるにあたり、データの退避先および復帰元となる。ここでは、一例として、退避データ記憶部７５２は、４つのデータ記憶領域を有する。
【０１３１】
キャッシュ部７１４は、タグ記憶部３４１、データ記憶部３４２、キャッシュ割当部３４３を備える。さらに、選択情報記憶部７４４を備える。選択情報記憶部７４４は、タグ記憶部３４１に記憶されているタグと対応付けられて選択情報を記憶する。ここで、選択情報は、対応付けられているタグによって特定されるデータがデータ記憶部３４２および退避データ記憶部７５２のいずれに記憶されているかが示される情報である。例えば、選択情報は、１ビットのフラグとしてもよい。このとき、選択情報が“０”である場合は、データ記憶部３４２に記憶されているとし、選択情報が“１”である場合は、退避データ記憶部７５２に記憶されているとしてもよい。
【０１３２】
また、キャッシュ部７１４は、スレッド実行部３１１から出力されたデータアクセス要求に含まれる実行スレッド情報に基づいて、第１のタグ記憶領域グループおよび第２のタグ記憶領域グループのいずれかを特定する。
【０１３３】
さらに、キャッシュ部７１４は、そのデータアクセス要求に含まれるアクセス先のアドレスと一致するタグがタグ記憶部３４１に存在する場合は、選択情報記憶部７４４に記憶されている選択情報の中から、そのタグと対応付けられている選択情報を選択する。選択した選択情報に基づいて、そのタグによって特定されるデータがデータ記憶部３４２および退避データ記憶部７５２のいずれに記憶されているかを特定する。
【０１３４】
特定した結果、キャッシュ部７１４は、データ記憶部３４２に記憶されている場合は、主記憶装置１０２にアクセスすることなく、そのタグと対応付けられてデータ記憶部３４２に記憶されているデータをスレッド実行部３１１に渡す。一方、退避データ記憶部７５２に記憶されている場合は、特定したタグ記憶領域グループに記憶されているタグの中から、入れ替え対象のタグを選択する。選択した入れ替え対象のタグと、アクセス先のアドレスと一致するタグとを交換する。また、選択した入れ替え対象のタグと対応付けられている選択情報と、アクセス先のアドレスと一致するタグと対応付けられている選択情報とを交換する。また、選択した入れ替え対象のタグと対応付けられているデータを退避データ記憶部７５２に退避しながら、アクセス先のアドレスと一致するタグと対応付けられているデータをデータ記憶部３４２に復帰する。データ記憶部３４２に復帰したデータをスレッド実行部３１１に渡す。
【０１３５】
なお、タグ記憶部３４１における第１のタグ記憶領域グループに記憶されているタグの中から、入れ替え対象のタグを選択するにあたっては、ＬＲＵ方式、ＦＩＦＯ方式、ランダム方式などによって選択される。タグ記憶部３４１における第２のタグ記憶領域グループに記憶されているタグの中から、入れ替え対象のタグを選択する場合においても同様である。
【０１３６】
なお、キャッシュ部７１４は、退避データ記憶部７５２に記憶されている場合は、特定したタグ記憶領域グループに記憶されているタグの中から、入れ替え対象のタグを選択する処理を省略するとしてもよい。このとき、選択した入れ替え対象のタグと、アクセス先のアドレスと一致するタグとを交換する処理も省略する。また、選択した入れ替え対象のタグと対応付けられている選択情報と、アクセス先のアドレスと一致するタグと対応付けられている選択情報とを交換する処理も省略する。また、選択した入れ替え対象のタグと対応付けられているデータを退避データ記憶部７５２に退避しながら、アクセス先のアドレスと一致するタグと対応付けられているデータをデータ記憶部３４２に復帰する処理も省略する。その代わりに、アクセス先のアドレスと一致するタグによって特定されるデータを退避データ記憶部７５２から取得する。取得したデータをデータ記憶部３４２に登録せずに、スレッド実行部３１１に直接渡すとしてもよい。
【０１３７】
一方、キャッシュ部７１４は、アクセス先のアドレスと一致するタグがタグ記憶部３４１に存在しない場合は、特定したタグ記憶領域グループに、アクセス先のアドレスをタグとしてタグ記憶部１４１に登録する。さらに、アクセス先のアドレスによって特定されるデータを主記憶装置１０２から取得する。取得したデータをデータ記憶部１４２に登録する。また、取得したデータをスレッド実行部３１１に渡す。さらに、データ記憶部３４２に記憶されていることが示される選択情報を、そのタグと対応付けて選択情報記憶部７４４に登録する。
【０１３８】
また、キャッシュ部７１４は、キャッシュを入れ替えるときは、データ記憶部３４２に記憶されているデータを退避データ記憶部７５２に退避しながら、退避データ記憶部７５２に退避されていたデータをデータ記憶部３４２に復帰する。このとき、選択情報記憶部７４４に記憶されている全ての選択情報に対して、データ記憶部３４２に記憶されていることが示される選択情報を、退避データ記憶部７５２に記憶されていることが示される選択情報に書き換える。退避データ記憶部７５２に記憶されていることが示される選択情報を、データ記憶部３４２に記憶されていることが示される選択情報に書き換える。
【０１３９】
次に、本実施の形態におけるプロセッサ７０１の動作について説明する。
図１８Ａ，図１８Ｂは、本実施の形態におけるプロセッサ７０１において実行されるキャッシュ処理を示す図である。図１８Ｂに示されるように、本実施の形態におけるキャッシュ処理は、実施の形態３におけるキャッシュ処理と比べて（例えば、図８参照。）、処理（Ｓ３０２），（Ｓ３０３）の代わりに、下記の処理（Ｓ７０１）〜（Ｓ７１０）を実行する点が異なる。
【０１４０】
キャッシュ部７１４は、そのデータアクセス要求に含まれるアクセス先のアドレスと一致するタグがタグ記憶部３４１に存在するか否かを判定する（Ｓ７０１）。判定した結果、アクセス先のアドレスと一致するタグがタグ記憶部３４１に存在する場合は（Ｓ７０１：Ｙｅｓ）、選択情報記憶部７４４に記憶されている選択情報の中から、そのタグと対応付けられている選択情報を選択する（Ｓ７０２）。選択した選択情報に基づいて、そのタグによって特定されるデータがデータ記憶部３４２および退避データ記憶部７５２のいずれに記憶されているかを特定する（Ｓ７０３）。
【０１４１】
特定した結果、キャッシュ部７１４は、データ記憶部３４２に記憶されている場合は（Ｓ７０３：Ｙｅｓ）、主記憶装置１０２にアクセスすることなく、そのタグと対応付けられてデータ記憶部３４２に記憶されているデータをスレッド実行部３１１に渡す（Ｓ７０４）。一方、退避データ記憶部７５２に記憶されている場合は（Ｓ７０３：Ｎｏ）、特定したタグ記憶領域グループに記憶されているタグの中から、入れ替え対象のタグを選択する（Ｓ７０５）。選択した入れ替え対象のタグと、そのアドレスと一致するタグとを交換する（Ｓ７０６）。また、選択した入れ替え対象のタグと対応付けられている選択情報と、そのアドレスと一致するタグと対応付けられている選択情報とを交換する（Ｓ７０７）。また、選択した入れ替え対象のタグと対応付けられているデータを退避データ記憶部７５２に退避しながら（Ｓ７０８）、そのアドレスと一致するタグと対応付けられているデータをデータ記憶部３４２に復帰する（Ｓ７０９）。データ記憶部３４２に復帰したデータをスレッド実行部３１１に渡す（Ｓ７１０）。
【０１４２】
また、図１８Ａに示されるように、本実施の形態におけるキャッシュ処理は、実施の形態３におけるキャッシュ処理と比べて（例えば、図８参照。）、処理（Ｓ３０４）〜（Ｓ３０７）を実行するときに、さらに、下記の処理（Ｓ７１１）も実行する点が異なる。
【０１４３】
キャッシュ部７１４は、データ記憶部３４２に記憶されていることが示される選択情報を、そのタグと対応付けて選択情報記憶部７４４に登録する（Ｓ７１１）。
【０１４４】
また、プロセッサ７０１において、実行対象のスレッドを切り替えるときは、まず、スレッド切替制御部１１２は、キャッシュ入替制御部１１３にキャッシュ入れ替え操作の要求を出す。そして、スレッド切替制御部１１２からキャッシュ入れ替え操作の要求を受けると、キャッシュ入替制御部１１３は、キャッシュ部７１４にキャッシュ入替要求を出す。これに伴い、キャッシュ部７１４は、キャッシュ入替処理を行う。そして、キャッシュ入れ替え操作が完了した後、スレッド切替制御部１１２は、スレッド実行部３１１が実行するスレッドを切り替える。
【０１４５】
図１９は、本実施の形態におけるプロセッサ７０１において実行されるキャッシュ入替処理を示す図である。図１９に示されるように、本実施の形態におけるキャッシュ入替処理は、実施の形態３におけるキャッシュ入替処理と比べて（例えば、図９参照。）、処理（Ｓ３１２），（Ｓ３１３）の代わりに、下記の処理（Ｓ７２１）〜（Ｓ７２４）を実行する点が異なる。
【０１４６】
キャッシュ部７１４は、データ記憶部３４２に記憶されているデータを退避データ記憶部７５２に退避しながら（Ｓ７２１）、退避データ記憶部７５２に退避されていたデータをデータ記憶部３４２に復帰する（Ｓ７２２）。このとき、選択情報記憶部７４４に記憶されている全ての選択情報に対して、データ記憶部３４２に記憶されていることが示される選択情報を、退避データ記憶部７５２に記憶されていることが示される選択情報に書き換える（Ｓ７２３）。また、退避データ記憶部７５２に記憶されていることが示される選択情報を、データ記憶部３４２に記憶されていることが示される選択情報に書き換える（Ｓ７２４）。
【０１４７】
以上、本実施の形態におけるプロセッサ７０１によれば、スレッド実行部３１１からデータアクセス要求を受けると、タグ記憶部３４１に記憶されている全てのタグが検索される。このとき、スレッド実行部３１１で実行されているスレッドに対して割り当てられたタグ記憶領域グループに記憶されているタグにヒットしなくても、他のタグ記憶領域グループに記憶されているタグにヒットしたとする。この場合において、主記憶装置１０２よりも高速アクセス可能な退避データ記憶部７５２からデータを取得することができる。すなわち、タグ記憶部３４１に記憶されているタグのいずれかにヒットさえすれば、主記憶装置１０２からデータを取得するよりも速くデータを取得することができる。
【０１４８】
（その他）
なお、本発明に係わるプロセッサは、プロセッサの各機能が組み込まれたＬＳＩによって実現されるとしてもよい。
【０１４９】
なお、ＬＳＩは、フルカスタムＬＳＩ、ＡＳＩＣ（Application Specific Integrated Circuit）などのようなセミカスタムＬＳＩ、ＦＰＧＡやＣＰＬＤなどのようなプログラマブル・ロジック・デバイス、動的に回路構成が書き換え可能なダイナミック・リコンフィギュラブル・デバイスに形成されるとしてもよい。
【０１５０】
さらに、プロセッサの各機能をＬＳＩに形成する設計データは、ハードウェア記述言語によって記述されたプログラム（以下、ＨＤＬプログラムと呼称する。）としてもよい。さらに、ＨＤＬプログラムを論理合成して得られるゲート・レベルのネットリストとしてもよい。また、ゲート・レベルのネットリストに、配置情報、プロセス条件等を付加したマクロセル情報としてもよい。また、寸法、タイミング等が規定されたマスクデータとしてもよい。ここで、ハードウェア記述言語として、ＶＨＤＬ（Very high speed integrated circuit Hardware Description Language）、Ｖｅｒｉｌｏｇ−ＨＤＬ、ＳｙｓｔｅｍＣがある。
【０１５１】
さらに、設計データは、汎用のコンピュータシステム、組み込みシステムなどのようなハードウェアシステムに読み取り可能な記録媒体に記録されているとしてもよい。さらに、記録媒体を介して他のハードウェアシステムに読み出されて実行されるとしてもよい。そして、これらの記録媒体を介して他のハードウェアシステムに読み取られた設計データが、ダウンロードケーブルを介して、プログラマブル・ロジック・デバイスにダウンロードされるとしてもよい。ここで、汎用のコンピュータシステムで読み取り可能な記録媒体として、光学記録媒体（例えば、ＣＤ−ＲＯＭなど。）、磁気記録媒体（例えば、ハードディスクなど。）、光磁気記録媒体（例えば、ＭＯなど。）、半導体メモリ（例えば、メモリカードなど。）などがある。
【０１５２】
または、設計データは、インターネット、ローカルエリアネットワークなどのようなネットワークに接続されているハードウェアシステムに保持されているとしてもよい。さらに、ネットワークを介して他のハードウェアシステムにダウンロードされて実行されるとしてもよい。そして、これらのネットワークを介して他のハードウェアシステムに取得された設計データが、ダウンロードケーブルを介して、プログラマブル・ロジック・デバイスにダウンロードされるとしてよい。ここで、ネットワークとして、地上放送網、衛星放送網、ＰＬＣ（Power Line Communication）、移動電話網、有線通信網（例えば、ＩＥＥＥ８０２．３など。）、無線通信網（例えば、ＩＥＥＥ８０２．１１など。）がある。
【０１５３】
または、設計データは、通電時にＦＰＧＡに転送され得るように、シリアルＲＯＭに記録しておくとしてもよい。そして、シリアルＲＯＭに記録された設計データは、通電時に、直接、ＦＰＧＡにダウンロードされるとしてもよい。
【０１５４】
または、設計データは、通電時に、マイクロプロセッサによって生成されて、ＦＰＧＡにダウンロードされるとしてもよい。
【産業上の利用可能性】
【０１５５】
本発明は、スレッド単位でプログラムを実行することができるプロセッサなどとして、特に、スレッドが切り替わるときに実行対象のスレッドに対してキャッシュ領域を割り当てるプロセッサなどとして、利用することができる。
【図面の簡単な説明】
【０１５６】
【図１】本発明に係わる従来の形態におけるプロセッサの構成を示す図
【図２】本発明に係わる実施の形態１におけるプロセッサの構成を示す図
【図３】本発明に係わる実施の形態１におけるプロセッサにおいて実行されるキャッシュ処理を示す図
【図４】本発明に係わる実施の形態１におけるプロセッサにおいて実行されるキャッシュ入替処理を示す図
【図５】本発明に係わる実施の形態２におけるプロセッサの構成を示す図
【図６】本発明に係わる実施の形態２におけるプロセッサにおいて実行されるキャッシュ入替処理を示す図
【図７】本発明に係わる実施の形態３におけるプロセッサの構成を示す図
【図８】本発明に係わる実施の形態３におけるプロセッサにおいて実行されるキャッシュ処理を示す図
【図９】本発明に係わる実施の形態３におけるプロセッサにおいて実行されるキャッシュ入替処理を示す図
【図１０】本発明に係わる実施の形態４におけるプロセッサの構成を示す図
【図１１】本発明に係わる実施の形態４におけるプロセッサにおいて実行されるキャッシュ入替処理を示す図
【図１２】本発明に係わる実施の形態５におけるプロセッサの構成を示す図
【図１３】本発明に係わる実施の形態５におけるプロセッサにおいて実行されるキャッシュ処理を示す図
【図１４】本発明に係わる実施の形態６におけるプロセッサの構成を示す図
【図１５】本発明に係わる実施の形態６におけるプロセッサにおいて実行されるキャッシュ処理を示す図
【図１６】本発明に係わる実施の形態６におけるプロセッサにおいて実行されるキャッシュ入替処理を示す図
【図１７】本発明に係わる実施の形態７におけるプロセッサの構成を示す図
【図１８Ａ】本発明に係わる実施の形態７におけるプロセッサにおいて実行されるキャッシュ処理を示す第１の図
【図１８Ｂ】本発明に係わる実施の形態７におけるプロセッサにおいて実行されるキャッシュ処理を示す第２の図
【図１９】本発明に係わる実施の形態７におけるプロセッサにおいて実行されるキャッシュ入替処理を示す図
【符号の説明】
【０１５７】
１  プロセッサ
２  主記憶装置
１１  スレッド実行部
１２  スレッド切替制御部
１３  キャッシュ部
３１  タグ記憶部
３２  データ記憶部
３３  キャッシュ割当部
１０１  プロセッサ
１０２  主記憶装置
１１１  スレッド実行部
１１２  スレッド切替制御部
１１３  キャッシュ入替制御部
１１４  キャッシュ部
１１５  スワップ部
１４１  タグ記憶部
１４２  データ記憶部
１５１  退避タグ記憶部
２０１  プロセッサ
２１４  キャッシュ部
２１５  スワップ部
２５２  退避データ記憶部
３０１  プロセッサ
３１１  スレッド実行部
３１４  キャッシュ部
３４１  タグ記憶部
３４２  データ記憶部
３４３  キャッシュ割当部
４０１  プロセッサ
４１４  キャッシュ部
４１５  スワップ部
４５２  退避データ記憶部
５０１  プロセッサ
５１２  スレッド切替制御部
５１４  キャッシュ部
６０１  プロセッサ
６１３  キャッシュ入替制御部
６１４  １次キャッシュ部
６１５  ２次キャッシュ部
６４１  タグ記憶部
６４２  データ記憶部
６５１  タグ記憶部
６５２  データ記憶部
６５３  キャッシュ割当部
７０１  プロセッサ
７１４  キャッシュ部
７１５  スワップ部
７４４  選択情報記憶部
７５２  退避データ記憶部
【図１】
2008102623.tif 000003
【図２】
2008102623.tif 000004
【図３】
2008102623.tif 000005
【図４】
2008102623.tif 000006
【図５】
2008102623.tif 000007
【図６】
2008102623.tif 000008
【図７】
2008102623.tif 000009
【図８】
2008102623.tif 000010
【図９】
2008102623.tif 000011
【図１０】
2008102623.tif 000012
【図１１】
2008102623.tif 000013
【図１２】
2008102623.tif 000014
【図１３】
2008102623.tif 000015
【図１４】
2008102623.tif 000016
【図１５】
2008102623.tif 000017
【図１６】
2008102623.tif 000018
【図１７】
2008102623.tif 000019
【図１８Ａ】
2008102623.tif 000020
【図１８Ｂ】
2008102623.tif 000021
【図１９】
2008102623.tif 000022