JP2008102623A - プロセッサ - Google Patents
プロセッサ Download PDFInfo
- Publication number
- JP2008102623A JP2008102623A JP2006282905A JP2006282905A JP2008102623A JP 2008102623 A JP2008102623 A JP 2008102623A JP 2006282905 A JP2006282905 A JP 2006282905A JP 2006282905 A JP2006282905 A JP 2006282905A JP 2008102623 A JP2008102623 A JP 2008102623A
- Authority
- JP
- Japan
- Prior art keywords
- data
- tag
- cache
- thread
- unit
- 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
Images
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
【課題】スレッド数が増加しても、容量の大きなキャッシュメモリを使用せずに、リアルタイム性を保証することが可能なプロセッサを提供する。
【解決手段】プロセッサ101は、実行中の第1のスレッドによって要求されたデータの記憶先が特定されるアドレスを第1のタグとして記憶するタグ記憶部141と、中断中の第2のスレッドによって要求されたデータの記憶先が特定されるアドレスを第2のタグとして記憶する退避タグ記憶部151と、実行ユニットにおいて要求されたデータを記憶するデータ記憶部142と、実行対象のスレッドが第1のスレッドから第2のスレッドに切り替わるときは、データ記憶部142に記憶されているデータを、第2のタグによって特定されるデータと入れ替えるキャッシュ部114とを備える。
【選択図】図2
【解決手段】プロセッサ101は、実行中の第1のスレッドによって要求されたデータの記憶先が特定されるアドレスを第1のタグとして記憶するタグ記憶部141と、中断中の第2のスレッドによって要求されたデータの記憶先が特定されるアドレスを第2のタグとして記憶する退避タグ記憶部151と、実行ユニットにおいて要求されたデータを記憶するデータ記憶部142と、実行対象のスレッドが第1のスレッドから第2のスレッドに切り替わるときは、データ記憶部142に記憶されているデータを、第2のタグによって特定されるデータと入れ替えるキャッシュ部114とを備える。
【選択図】図2
Description
本発明は、スレッド単位でプログラムを実行することができるプロセッサに関し、特に、スレッドが切り替わるときに実行対象のスレッドに対してキャッシュ領域を割り当てるプロセッサに関する。
近年、プロセッサの性能向上に伴い、単一のプロセッサに求められる処理の内容が、ますます多彩になってきている。特に、ディジタルTV等のマルチメディア機器においては、メディア処理などのように高いリアルタイム性が求められる処理と、GUI(Graphical User Interface)処理などのようにリアルタイム性があまり重要視されていない処理とが混在している。そして、これらの処理を同一のプロセッサで処理する要求がある。これを実現するために、複数の処理を時分割で実行するマルチスレッド型のプロセッサが注目されている。
マルチスレッド型のプロセッサでは、レジスタセットを複数備えることなどによって、複数のスレッドを少ないオーバヘッドで切り替えることが可能である。これによって、リアルタイム性が求められる処理を効率よく処理できる特長がある。ただし、マルチスレッド型のプロセッサでは、キャッシュを適用するにあたり、リアルタイム性の求められる処理に対して予期しないキャッシュミスが発生し、リアルタイム性が損なわれる場合がある。これは、リアルタイム性の求められる処理によってキャッシュに蓄積されたデータが、リアルタイム性の求められない処理によってキャッシュから追い出される場合があるためである。
これに対して、リアルタイム性の求められる処理に対して、固有の記憶領域を割り当てることにより、予期しないキャッシュミスを抑制し、リアルタイム性を保証する技術が提案されている(例えば、特許文献1参照。)。
図1は、従来の形態におけるプロセッサの構成を示す図である。図1に示されるように、キャッシュ部13は、スレッド実行部11からデータアクセス要求を受けると、そのデータアクセス要求に含まれるアクセス先のアドレスと一致するタグがタグ記憶部31に存在するか否かを判定する。判定した結果、存在する場合は、主記憶装置2にアクセスすることなく、データ記憶部32に登録されているデータの中から、そのアドレスと対応付けられているデータをスレッド実行部11に渡す。一方、存在しない場合は、そのアドレスをタグとしてタグ記憶部31に登録する。タグとして登録したアドレスによって特定されるデータを主記憶装置2から取得する。取得したデータを、登録したアドレスと対応付けてデータ記憶部32に登録する。そして、取得したデータを、スレッド実行部11に渡す。
このとき、実行中のスレッドに対してキャッシュ内容記憶領域がキャッシュ割当部33によって割り当てられる。そして、割り当てられたキャッシュ内容記憶領域に、タグと、タグと対応付けられたデータとが登録される。ここで、キャッシュ内容記憶領域とは、複数のタグ記憶領域と、複数のタグ記憶領域と対応付けられた複数のデータ記憶領域とからなる記憶領域である。タグ記憶領域とは、タグ記憶部31を構成する記憶領域であり、タグを記憶することができる記憶領域である。データ記憶領域とは、データ記憶部32を構成する記憶領域であり、データを記憶することができる記憶領域である。
また、キャッシュ割当部33は、可能な限り他のスレッドと重複せずに、キャッシュ内容記憶領域を割り当てる。これにより、例えば、第1のスレッドが中断している間に、第2のスレッドが実行しても、第2のスレッドによって、第1のスレッドに割り当てられたキャッシュ内容記憶領域が書き換わることを回避することができる。すなわち、キャッシュ内容が書き換わることに起因したキャッシュミスを軽減することができる。その結果、リアルタイム性の劣化を抑制することができる。
特開2001−256107号公報
しかしながら、上記従来の技術では、より多くのスレッドが実行されると、それらのスレッドに対してキャッシュ内容記憶領域が割り当てられる。また、例えば、第1のスレッドに対して割り当てられたキャッシュ内容記憶領域は、第1のスレッドがプロセッサで実行されている間しか有効に使用されない。このため、キャッシュの使用効率が低く、より多くのスレッドを実行するにあたって、あらかじめ、より容量の大きいキャッシュメモリをプロセッサに実装しておく必要があるという問題がある。
そこで、本発明は上記問題に鑑みてなされたものであり、スレッド数が増加しても、容量の大きなキャッシュメモリを使用せずに、リアルタイム性を保証することが可能なプロセッサを提供することを目的とする。
上記目的を達成するために、本発明に係わるプロセッサは、(a)スレッド単位でプログラムを実行することができる実行ユニットにおいて要求されたデータを、主記憶装置から取得して前記実行ユニットに渡すプロセッサであって、(a1)実行中の第1のスレッドによって要求されたデータの記憶先が特定されるアドレスを第1のタグとして記憶する第1のタグ記憶手段と、(a2)中断中の第2のスレッドによって要求されたデータの記憶先が特定されるアドレスを第2のタグとして記憶する第2のタグ記憶手段と、(a3)前記実行ユニットにおいて要求されたデータを記憶するキャッシュデータ記憶手段と、(a4)実行対象のスレッドが前記第1のスレッドから前記第2のスレッドに切り替わるときは、前記キャッシュデータ記憶手段に記憶されているデータを、前記第2のタグによって特定されるデータと入れ替えるデータ入替手段とを備える。
これによって、中断中のスレッドによって要求されたデータを記憶しておかなくても、実行対象のスレッドが切り替わるときに、データを復帰することができる。すなわち、実行中のスレッドによって要求されたデータを記憶しておくだけでよくなる。また、複数のスレッドの間で、データがキャッシュされる記憶領域に対する干渉を避けること可能となる。その結果、スレッド数が増加しても、キャッシュ容量の増加を抑え、より少ないキャッシュ容量でリアルタイム性の保証を行うことが可能となる。リアルタイム性を重視するプロセッサの高速化、低消費電力化、低価格化に対して有用である。
なお、本発明は、プロセッサとして実現されるだけではなく、プロセッサにおいてスレッドが切り替わるときに実行対象のスレッドに対してキャッシュ領域を割り当てるキャッシュ制御方法などとして実現されるとしてもよい。また、プロセッサの機能が組み込まれたLSI(Large Scale Integration)、その機能をFPGA(Field Programmable Gate Array)、CPLD(Complex Programmable Logic Device)などのプログラマブル・ロジック・デバイスに形成するIP(Intellectual Property)コア、そのIPコアを記録した記録媒体などとして実現されるとしてもよい。
本発明によれば、中断中のスレッドによって要求されたデータを記憶しておかなくても、実行対象のスレッドが切り替わるときに、データを復帰することができる。すなわち、実行中のスレッドによって要求されたデータを記憶しておくだけでよくなる。また、複数のスレッドの間で、データがキャッシュされる記憶領域に対する干渉を避けること可能となる。その結果、スレッド数が増加しても、キャッシュ容量の増加を抑え、より少ないキャッシュ容量でリアルタイム性の保証を行うことが可能となる。リアルタイム性を重視するプロセッサの高速化、低消費電力化、低価格化に対して有用である。
(実施の形態1)
以下、本発明に係わる実施の形態1について、図面を参照しながら説明する。
以下、本発明に係わる実施の形態1について、図面を参照しながら説明する。
本実施の形態におけるプロセッサは、下記(a)〜(c)に示す特徴を備える。
(a)スレッド単位でプログラムを実行することができる実行ユニットにおいて要求されたデータを、主記憶装置から取得して実行ユニットに渡すプロセッサであって、(a1)実行中の第1のスレッドによって要求されたデータの記憶先が特定されるアドレスを第1のタグとして記憶する第1のタグ記憶機能と、(a2)中断中の第2のスレッドによって要求されたデータの記憶先が特定されるアドレスを第2のタグとして記憶する第2のタグ記憶機能と、(a3)実行ユニットにおいて要求されたデータを記憶するキャッシュデータ記憶機能と、(a4)実行対象のスレッドが第1のスレッドから第2のスレッドに切り替わるときは、キャッシュデータ記憶機能に記憶されているデータを、第2のタグによって特定されるデータと入れ替えるデータ入替機能とを備える。
(a)スレッド単位でプログラムを実行することができる実行ユニットにおいて要求されたデータを、主記憶装置から取得して実行ユニットに渡すプロセッサであって、(a1)実行中の第1のスレッドによって要求されたデータの記憶先が特定されるアドレスを第1のタグとして記憶する第1のタグ記憶機能と、(a2)中断中の第2のスレッドによって要求されたデータの記憶先が特定されるアドレスを第2のタグとして記憶する第2のタグ記憶機能と、(a3)実行ユニットにおいて要求されたデータを記憶するキャッシュデータ記憶機能と、(a4)実行対象のスレッドが第1のスレッドから第2のスレッドに切り替わるときは、キャッシュデータ記憶機能に記憶されているデータを、第2のタグによって特定されるデータと入れ替えるデータ入替機能とを備える。
(b)データ入替機能は、第2のタグによって特定されるデータを主記憶装置から取得する。
(c)プロセッサは、実行対象のスレッドが第1のスレッドから第2のスレッドに切り替わるときに、第1のタグを第2のタグ記憶機能に退避しながら、第2のタグを第1のタグ記憶機能に復帰するタグ入替機能を備える。
以上の点を踏まえて、本実施の形態におけるプロセッサについて説明する。
まず、本実施の形態におけるプロセッサの構成について説明する。
まず、本実施の形態におけるプロセッサの構成について説明する。
図2は、本実施の形態におけるプロセッサの構成を示す図である。図2に示されるように、プロセッサ101は、マルチスレッド型のプロセッサである。ここでは、一例として、スレッド実行部111、スレッド切替制御部112、キャッシュ入替制御部113、キャッシュ部114、スワップ部115などを備える。
なお、図中において、実践で示される矢印は、データが流れるデータラインである。破線で示される矢印は、要求などの制御信号が流れる制御ラインである。
スレッド実行部111は、演算ユニットなどを備え、プログラムをスレッド単位で実行することができる。また、スレッドを実行しているときに、データにアクセスする場合は、アクセス先のアドレスを含むデータアクセス要求をキャッシュ部114に出す。これに伴い、キャッシュ部114からデータを受け取る。そして、受け取ったデータを使用して、スレッドを実行する。
スレッド切替制御部112は、ハードウェア、ソフトウェアなどにより、スレッド実行部111で処理されるスレッドの切り替え制御を行う。
キャッシュ入替制御部113は、スレッド切替制御部112で行われるスレッドの切り替え制御に従って、キャッシュ部114に記憶されているキャッシュ内容の入れ替え操作を行う。
キャッシュ部114は、タグ記憶部141、データ記憶部142などを備える。タグ記憶部141は、スレッド実行部111から出力されたデータアクセス要求に含まれるアクセス先のアドレスをタグとして記憶する。データ記憶部142は、タグ記憶部141に記憶されているタグと対応付けてデータを記憶する。
ここでは、一例として、タグ記憶部141は、4つのタグ記憶領域を有する。データ記憶部142は、4つのデータ記憶領域を有する。ここで、タグ記憶領域とは、タグを記憶することができる記憶領域である。データ記憶領域とは、データを記憶することができる記憶領域である。
なお、タグ記憶部141に記憶されているタグを書き換えるにあたっては、LRU(Least Recently Used)方式、FIFO(First In First Out)方式、ランダム方式などによって書き換えられる。データ記憶部142に記憶されているデータを書き換える場合においても同様である。
また、キャッシュ部114は、スレッド実行部111から出力されたデータアクセス要求に含まれるアクセス先のアドレスと一致するタグがタグ記憶部141に存在する場合は、主記憶装置102にアクセスすることなく、そのタグと対応付けられてデータ記憶部142に記憶されているデータをスレッド実行部111に出力する。一方、存在しない場合は、そのアドレスをタグとしてタグ記憶部141に登録した上で、そのアドレスによって特定されるデータを主記憶装置102から取得する。取得したデータをデータ記憶部142に登録した上で、スレッド実行部111に出力する。
スワップ部115は、退避タグ記憶部151などを備える。退避タグ記憶部151は、キャッシュ内容を入れ替えるにあたり、タグの退避先および復帰元となる。
ここでは、一例として、退避タグ記憶部151は、4つのタグ記憶領域を有する。
また、キャッシュ部114は、キャッシュ内容を入れ替えるときは、タグ記憶部141に記憶されているタグを退避タグ記憶部151に退避しながら、退避タグ記憶部151に退避されていたタグをタグ記憶部141に復帰する。さらに、復帰したタグによって特定されるデータを主記憶装置102から取得してデータ記憶部142に復帰する。
また、キャッシュ部114は、キャッシュ内容を入れ替えるときは、タグ記憶部141に記憶されているタグを退避タグ記憶部151に退避しながら、退避タグ記憶部151に退避されていたタグをタグ記憶部141に復帰する。さらに、復帰したタグによって特定されるデータを主記憶装置102から取得してデータ記憶部142に復帰する。
次に、本実施の形態におけるプロセッサ101の動作について説明する。
図3は、本実施の形態におけるプロセッサ101において実行されるキャッシュ処理を示す図である。図3に示されるように、キャッシュ部114は、スレッド実行部111からデータアクセス要求を受けたとする(S101:Yes)。この場合において、そのデータアクセス要求に含まれるアクセス先のアドレスと一致するタグがタグ記憶部141に存在するか否かを判定する(S102)。判定した結果、存在する場合は(S102:Yes)、主記憶装置102にアクセスすることなく、データ記憶部142に登録されているデータの中から、そのタグと対応付けられているデータをスレッド実行部111に渡す(S103)。一方、存在しない場合は(S102:No)、そのアドレスをタグとしてタグ記憶部141に登録する(S104)。タグとして登録したアドレスによって特定されるデータを主記憶装置102から取得する(S105)。取得したデータを、登録したアドレスと対応付けてデータ記憶部142に登録する(S106)。そして、取得したデータをスレッド実行部111に渡す(S107)。
図3は、本実施の形態におけるプロセッサ101において実行されるキャッシュ処理を示す図である。図3に示されるように、キャッシュ部114は、スレッド実行部111からデータアクセス要求を受けたとする(S101:Yes)。この場合において、そのデータアクセス要求に含まれるアクセス先のアドレスと一致するタグがタグ記憶部141に存在するか否かを判定する(S102)。判定した結果、存在する場合は(S102:Yes)、主記憶装置102にアクセスすることなく、データ記憶部142に登録されているデータの中から、そのタグと対応付けられているデータをスレッド実行部111に渡す(S103)。一方、存在しない場合は(S102:No)、そのアドレスをタグとしてタグ記憶部141に登録する(S104)。タグとして登録したアドレスによって特定されるデータを主記憶装置102から取得する(S105)。取得したデータを、登録したアドレスと対応付けてデータ記憶部142に登録する(S106)。そして、取得したデータをスレッド実行部111に渡す(S107)。
また、キャッシュ部114は、キャッシュ入替制御部113からキャッシュ入替要求を受けたとする(S101:No,S108:Yes)。この場合において、スワップ部115と連携して、キャッシュ入替処理を行う(S109)。
また、プロセッサ101において、スレッドを切り替えるときは、まず、スレッド切替制御部112は、キャッシュ入替制御部113にキャッシュ入れ替え操作の要求を出す。そして、スレッド切替制御部112からキャッシュ入れ替え操作の要求を受けると、キャッシュ入替制御部113は、キャッシュ部114にキャッシュ入替要求を出す。これに伴い、キャッシュ部114は、キャッシュ入替処理を行う。そして、キャッシュ入れ替え操作が完了した後、スレッド切替制御部112は、スレッド実行部111が実行するスレッドを切り替える。
図4は、本実施の形態におけるプロセッサ101において実行されるキャッシュ入替処理を示す図である。図4に示されるように、キャッシュ部114は、タグ記憶部141に記憶されているタグを退避タグ記憶部151に退避しながら(S111)、退避タグ記憶部151に退避されていたタグをタグ記憶部141に復帰する(S112)。さらに、タグ記憶部141に復帰したタグによって特定されるデータを主記憶装置102から取得する(S113)。取得したデータを、復帰したタグと対応付けてデータ記憶部142に登録する(S114)。
以上、本実施の形態におけるプロセッサ101によれば、他の処理によって、スレッドの実行が中断されると、タグ記憶部141に記憶されているタグが退避タグ記憶部151に退避される。そして、スレッドの実行が再開されるときに、退避タグ記憶部151に退避されていたタグがタグ記憶部141に復帰される。復帰されたタグを使用して、データ記憶部142に記憶されていたデータが復帰される。
これによって、途中で他の処理が実行されてキャッシュ内容が変化することに起因したキャッシュミスを軽減することが可能となる。その結果、リアルタイム性の劣化を抑制することが可能となる。
なお、本実施の形態におけるプロセッサ101によれば、スレッドの切り替え時に、タグの退避と復帰の両方を行っている。しかし、タグ記憶部141、データ記憶部142を二重化した上で、切り替え前のスレッドの実行と並行してタグの復帰、データの取得を行い、スレッドの切り替え時に、二重化したタグ記憶部141、データ記憶部142の切り替えを行い、その後タグの退避を行うとしてもよい。これにより、キャッシュ内容の退避、復帰時にプロセッサの処理を停止させる必要がなくなり、スレッド実行部111の実行効率を向上させることが可能となる。
(実施の形態2)
以下、本発明に係わる実施の形態2について、図面を参照しながら説明する。
以下、本発明に係わる実施の形態2について、図面を参照しながら説明する。
本実施の形態におけるプロセッサは、下記(d)〜(e)に示す特徴を備える。
(d)プロセッサは、実行対象のスレッドが切り替わるときに、キャッシュデータ記憶機能から退避されたデータを記憶するスワップデータ記憶機能を備え、データ入替機能は、第2のタグによって特定されるデータをスワップデータ記憶機能から取得する。
(d)プロセッサは、実行対象のスレッドが切り替わるときに、キャッシュデータ記憶機能から退避されたデータを記憶するスワップデータ記憶機能を備え、データ入替機能は、第2のタグによって特定されるデータをスワップデータ記憶機能から取得する。
(e)データ入替機能は、キャッシュデータ記憶機能に記憶されているデータをスワップデータ記憶機能に退避しながら、スワップデータ記憶機能に退避されていたデータをキャッシュデータ記憶機能に復帰する。
なお、本実施の形態における構成要素において、実施の形態1と同一の構成要素については、同一の参照符号を付して説明を省略する。以上の点を踏まえて、本実施の形態におけるプロセッサについて説明する。
まず、本実施の形態におけるプロセッサの構成について説明する。
図5は、本実施の形態におけるプロセッサの構成を示す図である。図5に示されるように、プロセッサ201は、実施の形態1におけるプロセッサ101と比べて(例えば、図2参照。)、キャッシュ部114、スワップ部115の代わりに、キャッシュ部214、スワップ部215を備える点が異なる。
図5は、本実施の形態におけるプロセッサの構成を示す図である。図5に示されるように、プロセッサ201は、実施の形態1におけるプロセッサ101と比べて(例えば、図2参照。)、キャッシュ部114、スワップ部115の代わりに、キャッシュ部214、スワップ部215を備える点が異なる。
キャッシュ部214は、タグ記憶部141、データ記憶部142などを備える。
スワップ部215は、退避タグ記憶部151、退避データ記憶部252などを備える。退避データ記憶部252は、キャッシュ内容を入れ替えるにあたり、データの退避先および復帰元となる。
スワップ部215は、退避タグ記憶部151、退避データ記憶部252などを備える。退避データ記憶部252は、キャッシュ内容を入れ替えるにあたり、データの退避先および復帰元となる。
ここでは、一例として、退避データ記憶部252は、4つのデータ記憶領域を有する。
そして、キャッシュ部214は、キャッシュ内容を入れ替えるときは、タグ記憶部141に記憶されているタグを退避タグ記憶部151に退避しながら、退避タグ記憶部151に退避されていたタグをタグ記憶部141に復帰する。さらに、データ記憶部142に記憶されているデータを退避データ記憶部252に退避しながら、退避データ記憶部252に退避されていたデータをデータ記憶部142に復帰する。
そして、キャッシュ部214は、キャッシュ内容を入れ替えるときは、タグ記憶部141に記憶されているタグを退避タグ記憶部151に退避しながら、退避タグ記憶部151に退避されていたタグをタグ記憶部141に復帰する。さらに、データ記憶部142に記憶されているデータを退避データ記憶部252に退避しながら、退避データ記憶部252に退避されていたデータをデータ記憶部142に復帰する。
次に、本実施の形態におけるプロセッサ201の動作について説明する。
図6は、本実施の形態におけるプロセッサ201において実行されるキャッシュ入替処理を示す図である。図6に示されるように、本実施の形態におけるキャッシュ入替処理は、実施の形態1におけるキャッシュ入替処理と比べて、処理(S113),(S114)の代わりに、下記の処理(S211),(S212)を実行する点が異なる。
図6は、本実施の形態におけるプロセッサ201において実行されるキャッシュ入替処理を示す図である。図6に示されるように、本実施の形態におけるキャッシュ入替処理は、実施の形態1におけるキャッシュ入替処理と比べて、処理(S113),(S114)の代わりに、下記の処理(S211),(S212)を実行する点が異なる。
キャッシュ部214は、タグ記憶部141に記憶されているタグを退避タグ記憶部151に退避しながら(S111)、退避タグ記憶部151に退避されていたタグをタグ記憶部141に復帰する(S112)。さらに、データ記憶部142に記憶されているデータを退避データ記憶部252に退避しながら(S211)、退避データ記憶部252に退避されていたデータをデータ記憶部142に復帰する(S212)。
以上、本実施の形態におけるプロセッサ201によれば、他の処理によって、スレッドの実行が中断されると、タグ記憶部141に記憶されているタグが退避タグ記憶部151に退避される。また、データ記憶部142に記憶されているデータが退避データ記憶部252に退避される。そして、スレッドの実行が再開されるときに、退避タグ記憶部151に退避されていたタグがタグ記憶部141に復帰される。退避データ記憶部252に退避されていたデータがデータ記憶部142に復帰される。
これによって、途中で他の処理が実行されてキャッシュ内容が変化することに起因したキャッシュミスを軽減することが可能となる。その結果、リアルタイム性の劣化を抑制することが可能となる。
さらに、本実施の形態では、主記憶装置102より高速なメモリで退避データ記憶部252を構成することによって、キャッシュ入替制御部113によるキャッシュ内容の入れ替えを高速にし、スレッド切り替え時の性能劣化を抑制することが可能となる。
(実施の形態3)
以下、本発明に係わる実施の形態3について、図面を参照しながら説明する。
以下、本発明に係わる実施の形態3について、図面を参照しながら説明する。
本実施の形態におけるプロセッサは、下記(f)に示す特徴を備える。
(f)プロセッサは、(f1)少なくともキャッシュデータ記憶機能に記憶されるデータの数の2倍以上の数のタグが記憶される所定のサイズの記憶領域から、第1のタグが記憶される第1のタグ記憶領域と、第2のタグが記憶される第2のタグ記憶領域とを割り当てるキャッシュ割当機能を備え、(f2)第1のタグ記憶機能は、第1のタグ記憶領域を有し、第2のタグ記憶機能は、第2のタグ記憶領域を有する。
(f)プロセッサは、(f1)少なくともキャッシュデータ記憶機能に記憶されるデータの数の2倍以上の数のタグが記憶される所定のサイズの記憶領域から、第1のタグが記憶される第1のタグ記憶領域と、第2のタグが記憶される第2のタグ記憶領域とを割り当てるキャッシュ割当機能を備え、(f2)第1のタグ記憶機能は、第1のタグ記憶領域を有し、第2のタグ記憶機能は、第2のタグ記憶領域を有する。
なお、本実施の形態における構成要素において、実施の形態1と同一の構成要素については、同一の参照符号を付して説明を省略する。以上の点を踏まえて、本実施の形態におけるプロセッサについて説明する。
まず、本実施の形態におけるプロセッサの構成について説明する。
図7は、本実施の形態におけるプロセッサの構成を示す図である。図7に示されるように、プロセッサ301は、実施の形態1におけるプロセッサ101と比べて(例えば、図2参照。)、スレッド実行部111、キャッシュ部114、スワップ部115の代わりに、スレッド実行部311、キャッシュ部314を備える点が異なる。
図7は、本実施の形態におけるプロセッサの構成を示す図である。図7に示されるように、プロセッサ301は、実施の形態1におけるプロセッサ101と比べて(例えば、図2参照。)、スレッド実行部111、キャッシュ部114、スワップ部115の代わりに、スレッド実行部311、キャッシュ部314を備える点が異なる。
スレッド実行部311は、実行中のスレッドが識別される実行スレッド情報と、アクセス先のアドレスとを含むデータアクセス要求をキャッシュ部314に出力する。これに伴い、キャッシュ部314から出力されたデータに従って処理を行う。
キャッシュ部314は、タグ記憶部341、データ記憶部342、キャッシュ割当部343などを備える。タグ記憶部341は、スレッド実行部311から出力されたデータアクセス要求に含まれるアクセス先のアドレスをタグとして記憶する。データ記憶部342は、タグ記憶部341に記憶されているタグと対応付けてデータを記憶する。キャッシュ割当部343は、スレッドに応じてタグ記憶領域を割り当てる。
ここでは、一例として、タグ記憶部341は、8つのタグ記憶領域を有する。さらに、8つのタグ記憶領域は、第1のタグ記憶領域グループと第2のタグ記憶領域グループとに分類される。ここで、第1のタグ記憶領域グループと第2のタグ記憶領域グループとは、互いに重複せず、それぞれ4つのタグ記憶領域を有する。データ記憶部342は、4つのデータ記憶領域を有する。キャッシュ割当部343は、実行対象のスレッドが切り替わるたびに、実行対象のスレッドに対して、第1のタグ記憶領域グループと第2のタグ記憶領域グループとを交互に割り当てる。
なお、タグ記憶部341における第1のタグ記憶領域グループに記憶されているタグを書き換えるにあたっては、LRU方式、FIFO方式、ランダム方式などによって書き換えられる。タグ記憶部341における第2のタグ記憶領域グループに記憶されているタグを書き換える場合においても同様である。データ記憶部342に記憶されているデータを書き換える場合においても同様である。
また、キャッシュ部314は、スレッド実行部311から出力されたデータアクセス要求に含まれる実行スレッド情報に基づいて、第1のタグ記憶領域グループおよび第2のタグ記憶領域グループのいずれかを特定する。特定したタグ記憶領域グループに、そのデータアクセス要求に含まれるアクセス先のアドレスと一致するタグが存在する場合は、主記憶装置102にアクセスすることなく、そのタグと対応付けられてデータ記憶部342に記憶されているデータをスレッド実行部311に出力する。一方、存在しない場合は、特定したタグ記憶領域グループに、そのアドレスをタグとして登録した上で、そのアドレスによって特定されるデータを主記憶装置102から取得する。取得したデータを、データ記憶部342に登録した上で、スレッド実行部311に出力する。
次に、本実施の形態におけるプロセッサ301の動作について説明する。
図8は、本実施の形態におけるプロセッサ301において実行されるキャッシュ処理を示す図である。図8に示されるように、本実施の形態におけるキャッシュ処理は、実施の形態1におけるキャッシュ処理と比べて(例えば、図3参照。)、処理(S102)〜(S107)の代わりに、下記の処理(S301)〜(S307)を実行する点が異なる。
図8は、本実施の形態におけるプロセッサ301において実行されるキャッシュ処理を示す図である。図8に示されるように、本実施の形態におけるキャッシュ処理は、実施の形態1におけるキャッシュ処理と比べて(例えば、図3参照。)、処理(S102)〜(S107)の代わりに、下記の処理(S301)〜(S307)を実行する点が異なる。
キャッシュ部314は、スレッド実行部311からデータアクセス要求を受けたとする(S101:Yes)。この場合において、そのデータアクセス要求に含まれる実行スレッド情報から、第1のタグ記憶領域グループおよび第2のタグ記憶領域グループのいずれかを特定する(S301)。特定したタグ記憶領域グループに、そのデータアクセス要求に含まれるアクセス先のアドレスと一致するタグが存在するか否かを判定する(S302)。存在する場合は(S302:Yes)、主記憶装置102にアクセスすることなく、データ記憶部342に登録されているデータの中から、そのタグと対応付けられているデータをスレッド実行部311に渡す(S303)。一方、存在しない場合は(S302:No)、特定したタグ記憶領域グループに、そのアドレスをタグとして登録する(S304)。タグとして登録したアドレスによって特定されるデータを主記憶装置102から取得する(S305)。取得したデータを、登録したアドレスと対応付けてデータ記憶部342に登録する(S306)。そして、取得したデータをスレッド実行部311に渡す(S307)。
また、プロセッサ301において、実行対象のスレッドを切り替えるときは、まず、スレッド切替制御部112は、キャッシュ入替制御部113にキャッシュ入れ替え操作の要求を出す。そして、スレッド切替制御部112からキャッシュ入れ替え操作の要求を受けると、キャッシュ入替制御部113は、キャッシュ部314にキャッシュ入替要求を出す。これに伴い、キャッシュ部314は、キャッシュ入替処理を行う。そして、キャッシュ入れ替え操作が完了した後、スレッド切替制御部112は、スレッド実行部311が実行するスレッドを切り替える。
図9は、本実施の形態におけるプロセッサ301において実行されるキャッシュ入替処理を示す図である。図9に示されるように、本実施の形態におけるキャッシュ入替処理は、実施の形態1におけるキャッシュ入替処理と比べて(例えば、図4参照。)、処理(S111)〜(S114)の代わりに、下記の処理(S311)〜(S313)を備える点が異なる。
キャッシュ割当部343は、第1のタグ記憶領域グループおよび第2のタグ記憶領域グループのいずれかのタグ記憶領域グループを割り当てる(S311)。
例えば、実行対象のスレッドが切り替わる前に実行されていたスレッドを第1のスレッドとする。切り替わった後に実行されるスレッドを第2のスレッドとする。この場合において、第1のスレッドに対して第1のタグ記憶領域グループを割り当てていた場合は、第2のスレッドに対して第2のタグ記憶領域グループを割り当てる。一方、第1のスレッドに対して第2のタグ記憶領域グループを割り当てていた場合は、第2のスレッドに対して第1のタグ記憶領域グループを割り当てる。
さらに、キャッシュ部314は、キャッシュ割当部343によって割り当てられたタグ記憶領域グループに登録されているタグによって特定されるデータを主記憶装置102から取得する(S312)。取得したデータを、登録されているタグと対応付けてデータ記憶部342に登録する(S313)。
以上、本実施の形態におけるプロセッサ301によれば、他の処理によって、スレッドの実行が中断され、スレッドの実行が再開されるときに、キャッシュ割当部343によって割り当てられたタグ記憶領域グループに記憶されているタグを使用して、データ記憶部342に記憶されていたデータが復帰される。
これによって、途中で他の処理が実行されてキャッシュ内容が変化することに起因したキャッシュミスを軽減することが可能となる。その結果、リアルタイム性の劣化を抑制することが可能となる。
また、キャッシュ部314は、実行中のスレッドに対するデータのみが記憶されている。それ以外のスレッドに対するデータを記憶しないので、タグ領域とデータ領域との双方をキャッシュ割当部343によって割り当てる構成と比べて、ハードウェア量を削減することが可能となる。
(実施の形態4)
以下、本発明に係わる実施の形態4について、図面を参照しながら説明する。
以下、本発明に係わる実施の形態4について、図面を参照しながら説明する。
なお、本実施の形態におけるプロセッサは、下記(g),(h)に示す特徴を備えるとしてもよい。
(g)プロセッサは、第1のスレッドによって要求された所定のデータがキャッシュデータ記憶機能に登録されていない場合において、所定のデータの記憶先が特定される所定のアドレスが第2のタグ記憶機能に記憶されている場合は、スワップデータ記憶機能に記憶されているデータの中から、所定のアドレスと対応付けられているデータを、所定のデータとして、キャッシュデータ記憶機能に登録することなく実行ユニットに渡すキャッシュ機能を備える。
(h)データ入替機能は、第1のタグ記憶機能と第2のタグ記憶機能とに同一のアドレスが登録されている場合は、同一のアドレスによって特定されるデータを除いて、キャッシュデータ記憶機能に記憶されているデータを入れ替える。
なお、本実施の形態における構成要素において、実施の形態3と同一の構成要素については、同一の参照符号を付して説明を省略する。以上の点を踏まえて、本実施の形態におけるプロセッサについて説明する。
まず、本実施の形態におけるプロセッサの構成について説明する。
図10は、本実施の形態におけるプロセッサの構成を示す図である。図10に示されるように、プロセッサ401は、実施の形態3におけるプロセッサ301と比べて(例えば、図7参照。)、キャッシュ部314の代わりに、キャッシュ部414、スワップ部415を備える点が異なる。
図10は、本実施の形態におけるプロセッサの構成を示す図である。図10に示されるように、プロセッサ401は、実施の形態3におけるプロセッサ301と比べて(例えば、図7参照。)、キャッシュ部314の代わりに、キャッシュ部414、スワップ部415を備える点が異なる。
キャッシュ部414は、タグ記憶部341、データ記憶部342、キャッシュ割当部343などを備える。
スワップ部415は、退避データ記憶部452などを備える。退避データ記憶部452は、キャッシュ内容を入れ替えるにあたり、データの退避先および復帰元となる。
ここでは、一例として、退避データ記憶部452は、4つのデータ記憶領域を有する。
そして、キャッシュ部414は、キャッシュを入れ替えるときは、データ記憶部342に記憶されているデータを退避データ記憶部452に退避しながら、退避データ記憶部452に退避されていたデータをデータ記憶部342に復帰する。
そして、キャッシュ部414は、キャッシュを入れ替えるときは、データ記憶部342に記憶されているデータを退避データ記憶部452に退避しながら、退避データ記憶部452に退避されていたデータをデータ記憶部342に復帰する。
次に、本実施の形態におけるプロセッサ401の動作について説明する。
プロセッサ401において、実行対象のスレッドを切り替えるときは、まず、スレッド切替制御部112は、キャッシュ入替制御部113にキャッシュ入れ替え操作の要求を出す。そして、スレッド切替制御部112からキャッシュ入れ替え操作の要求を受けると、キャッシュ入替制御部113は、キャッシュ部414にキャッシュ入替要求を出す。これに伴い、キャッシュ部414は、キャッシュ入替処理を行う。そして、キャッシュ入れ替え操作が完了した後、スレッド切替制御部112は、スレッド実行部311が実行するスレッドを切り替える。
プロセッサ401において、実行対象のスレッドを切り替えるときは、まず、スレッド切替制御部112は、キャッシュ入替制御部113にキャッシュ入れ替え操作の要求を出す。そして、スレッド切替制御部112からキャッシュ入れ替え操作の要求を受けると、キャッシュ入替制御部113は、キャッシュ部414にキャッシュ入替要求を出す。これに伴い、キャッシュ部414は、キャッシュ入替処理を行う。そして、キャッシュ入れ替え操作が完了した後、スレッド切替制御部112は、スレッド実行部311が実行するスレッドを切り替える。
図11は、本実施の形態におけるプロセッサ401において実行されるキャッシュ入替処理を示す図である。図11に示されるように、本実施の形態におけるキャッシュ入替処理は、実施の形態3におけるキャッシュ入替処理と比べて(例えば、図9参照。)、処理(S311),(S312)の代わりに、下記の処理(S411),(S412)を行う点が異なる。
キャッシュ部414は、データ記憶部342に記憶されているデータを退避データ記憶部452に退避しながら(S411)、退避データ記憶部452に退避されていたデータをデータ記憶部342に復帰する(S412)。
以上、本実施の形態におけるプロセッサ401によれば、他の処理によって、スレッドの実行が中断されると、データ記憶部342に記憶されているデータが退避データ記憶部452に退避される。そして、スレッドの実行が再開されるときに、退避データ記憶部452に退避されていたデータがデータ記憶部342に復帰される。
これによって、途中で他の処理が実行されてキャッシュ内容が変化することに起因したキャッシュミスを軽減することが可能となる。その結果、リアルタイム性の劣化を抑制することが可能となる。
なお、主記憶装置102よりも高速アクセス可能なメモリで退避データ記憶部452を構成するとしてもよい。
これによって、キャッシュ入替制御部113によるキャッシュ内容の入れ替えを高速に行うことが可能となる。その結果、スレッド切り替え時の性能劣化を抑制することが可能となる。
なお、例えば、スレッド実行部311から出力されたデータアクセス要求に含まれるアクセス先のアドレスと一致するタグが、キャッシュ割当部343によって割り当てられたタグ記憶領域グループに存在しないとする。この場合において、キャッシュ割当部343によって割り当てられなかったタグ記憶領域グループに存在する場合は、退避データ記憶部452からデータを取得するとしてもよい。
これによって、所定のスレッドによってキャッシュ部414に登録されたデータを他のスレッドが要求する場合は、退避データ記憶部452に退避されているデータの中から取得することが可能となる。また、キャッシュ割当部343によって割り当てられたタグ記憶領域グループに、そのタグを登録することなく、また、データ記憶部342に、そのタグと対応付けてデータを登録することなく、そのデータをスレッド実行部311に出力することも可能となる。すなわち、主記憶装置102にアクセスすることなく、要求されたデータを取得することが可能となる。その結果、キャッシュミスによるペナルティを削減することが可能となる。
また、データ記憶部342および退避データ記憶部452に記憶されているデータは、実行対象のスレッドが切り替わる前に実行されていたスレッドと切り替わった後に実行されるスレッドとの間で共有される。このため、主記憶装置102に記憶されているデータのコピーが複数存在することがなく、キャッシュ部414に記憶されるデータの一貫性を保つために、スレッド間でデータアクセスに対する制約を設ける必要がない。
(実施の形態5)
以下、本発明に係わる実施の形態5について、図面を参照しながら説明する。
以下、本発明に係わる実施の形態5について、図面を参照しながら説明する。
本実施の形態におけるプロセッサは、下記(i)に示す特徴を備える。
(i)プロセッサは、第1のスレッドによって要求された所定のデータがキャッシュデータ記憶機能に記憶されていない場合は、所定のデータの記憶先が特定される所定のアドレスを第1のタグとして第1のタグ記憶機能に登録してから、実行対象のスレッドを第1のスレッドから第2のスレッドに切り替えるキャッシュ機能を備える。
(i)プロセッサは、第1のスレッドによって要求された所定のデータがキャッシュデータ記憶機能に記憶されていない場合は、所定のデータの記憶先が特定される所定のアドレスを第1のタグとして第1のタグ記憶機能に登録してから、実行対象のスレッドを第1のスレッドから第2のスレッドに切り替えるキャッシュ機能を備える。
なお、本実施の形態における構成要素において、実施の形態3と同一の構成要素については、同一の参照符号を付して説明を省略する。以上の点を踏まえて、本実施の形態におけるプロセッサについて説明する。
まず、本実施の形態におけるプロセッサの構成について説明する。
図12は、本実施の形態におけるプロセッサの構成を示す図である。図12に示されるように、プロセッサ501は、実施の形態3におけるプロセッサ301と比べて(例えば、図7参照。)、スレッド切替制御部112、キャッシュ部314の代わりに、スレッド切替制御部512、キャッシュ部514を備える点が異なる。
図12は、本実施の形態におけるプロセッサの構成を示す図である。図12に示されるように、プロセッサ501は、実施の形態3におけるプロセッサ301と比べて(例えば、図7参照。)、スレッド切替制御部112、キャッシュ部314の代わりに、スレッド切替制御部512、キャッシュ部514を備える点が異なる。
スレッド切替制御部512は、ハードウェア、ソフトウェアなどにより、スレッド実行部311で処理されるスレッドの切り替え制御を行う。さらに、キャッシュ部514からスレッド切り替え要求を受けると、キャッシュ入替制御部113にキャッシュ入れ替え操作の要求を出す。そして、キャッシュ入れ替え操作が完了すると、スレッド実行部311が実行するスレッドを切り替える。
キャッシュ部514は、タグ記憶部341、データ記憶部342、キャッシュ割当部343などを備える。さらに、スレッド実行部311からデータアクセス要求を受けると、そのデータアクセス要求に含まれる実行スレッド情報に基づいて、第1のタグ記憶領域グループおよび第2のタグ記憶領域グループのいずれかを特定する。特定したタグ記憶領域グループに、そのデータアクセス要求に含まれるアクセス先のアドレスと一致するタグが存在するか否かを判定する。判定した結果、存在する場合は、主記憶装置102にアクセスすることなく、データ記憶部342に登録されているデータの中から、そのタグと対応付けられているデータをスレッド実行部311に渡す。一方、存在しない場合は、特定したタグ記憶領域グループに、そのアドレスをタグとして登録する。そして、スレッド切替制御部512にスレッド切り替え要求を出す。
次に、本実施の形態におけるプロセッサ501の動作について説明する。
図13は、本実施の形態におけるプロセッサ501において実行されるキャッシュ処理を示す図である。図13に示されるように、本実施の形態におけるキャッシュ処理は、実施の形態3におけるキャッシュ処理と比べて(例えば、図8参照。)、処理(S305)〜(S307)の代わりに、下記の処理(S501)を行う点が異なる。
図13は、本実施の形態におけるプロセッサ501において実行されるキャッシュ処理を示す図である。図13に示されるように、本実施の形態におけるキャッシュ処理は、実施の形態3におけるキャッシュ処理と比べて(例えば、図8参照。)、処理(S305)〜(S307)の代わりに、下記の処理(S501)を行う点が異なる。
キャッシュ部514は、スレッド実行部311からデータアクセス要求を受けると(S101:Yes)、そのデータアクセス要求に含まれる実行スレッド情報に基づいて、キャッシュ割当部343によって割り当てられたタグ記憶領域グループを特定する(S301)。そして、特定したタグ記憶領域グループに、そのデータアクセス要求に含まれるアクセス先のアドレスと一致するタグが存在するか否かを判定する(S302)。存在しない場合は(S302:No)、特定したタグ記憶領域グループに、そのアドレスをタグとして登録する(S304)。そして、スレッド切替制御部512にスレッド切り替え要求を出力する(S516)。
これに伴い、スレッド切替制御部512は、キャッシュ部514からスレッド切り替え要求を受けると、キャッシュ入替制御部113にキャッシュ入れ替え操作の要求を出す。
以上、本実施の形態におけるプロセッサ501によれば、他の処理によって、スレッドの実行が中断され、スレッドの実行が再開されるときに、キャッシュ割当部343によって割り当てられたタグ記憶領域グループに記憶されているタグを使用して、データ記憶部342に記憶されていたデータが復帰される。
これによって、途中で他の処理が実行されてキャッシュ内容が変化することに起因したキャッシュミスを軽減することが可能となる。その結果、リアルタイム性の劣化を抑制することが可能となる。
さらに、スレッド実行部311が要求するデータがキャッシュ部514に存在しない場合は、スレッドの実行を中断する。これによって、スレッドの実行が再開されるときに、キャッシュ部514にデータが記憶されるので、キャッシュミスによるペナルティサイクルを、他のスレッドの実行により隠蔽することが可能となる。その結果、スレッド実行部311の実行効率を向上させることが可能となる。
(実施の形態6)
以下、本発明に係わる実施の形態6について、図面を参照しながら説明する。
以下、本発明に係わる実施の形態6について、図面を参照しながら説明する。
本実施の形態におけるプロセッサは、下記(j)に示す特徴を備える。
(j)プロセッサは、(j1)実行ユニットにおいて要求されたデータの記憶先が特定されるアドレスを1次タグとして記憶する1次タグ記憶機能と、(j2)第1のスレッドによって要求されたデータを第1のタグと対応付けて記憶する第1の2次キャッシュデータ記憶機能と、(j3)第2のスレッドによって要求されたデータを第2のタグと対応付けて記憶する第2の2次キャッシュデータ記憶機能と、(j4)実行対象のスレッドが第1のスレッドから第2のスレッドに切り替わるときに、1次タグ記憶機能に記憶されている1次タグを第1のタグ記憶機能に退避しながら、第2のタグを1次タグ記憶機能に復帰するタグ入替機能とを備え、(j5)データ入替機能は、実行対象のスレッドが第1のスレッドから第2のスレッドに切り替わるときに、キャッシュデータ記憶機能に記憶されているデータを第1の2次キャッシュデータ記憶機能に退避しながら、第2の2次キャッシュデータ記憶機能に記憶されているデータをキャッシュデータ記憶機能に復帰する。
(j)プロセッサは、(j1)実行ユニットにおいて要求されたデータの記憶先が特定されるアドレスを1次タグとして記憶する1次タグ記憶機能と、(j2)第1のスレッドによって要求されたデータを第1のタグと対応付けて記憶する第1の2次キャッシュデータ記憶機能と、(j3)第2のスレッドによって要求されたデータを第2のタグと対応付けて記憶する第2の2次キャッシュデータ記憶機能と、(j4)実行対象のスレッドが第1のスレッドから第2のスレッドに切り替わるときに、1次タグ記憶機能に記憶されている1次タグを第1のタグ記憶機能に退避しながら、第2のタグを1次タグ記憶機能に復帰するタグ入替機能とを備え、(j5)データ入替機能は、実行対象のスレッドが第1のスレッドから第2のスレッドに切り替わるときに、キャッシュデータ記憶機能に記憶されているデータを第1の2次キャッシュデータ記憶機能に退避しながら、第2の2次キャッシュデータ記憶機能に記憶されているデータをキャッシュデータ記憶機能に復帰する。
なお、本実施の形態におけるプロセッサは、下記(k)に示す特徴を備えるとしてもよい。
(k)プロセッサは、第1のスレッドによって要求された所定のデータがキャッシュデータ記憶機能に登録されていない場合において、所定のデータの記憶先が特定される所定のアドレスが第2のタグ記憶機能に記憶されている場合は、第2の2次キャッシュデータ記憶機能に記憶されているデータの中から、所定のアドレスと対応付けられているデータを、所定のデータとして、キャッシュデータ記憶機能に登録することなく実行ユニットに渡すキャッシュ機能を備える。
なお、本実施の形態における構成要素において、実施の形態1と同一の構成要素については、同一の参照符号を付して説明を省略する。以上の点を踏まえて、本実施の形態におけるプロセッサについて説明する。
まず、本実施の形態におけるプロセッサの構成について説明する。
図14は、本実施の形態におけるプロセッサの構成を示す図である。図14に示されるように、プロセッサ601は、実施の形態1におけるプロセッサ101と比べて(例えば、図2参照。)、キャッシュ入替制御部113、キャッシュ部114の代わりに、キャッシュ入替制御部613、1次キャッシュ部614、2次キャッシュ部615を備える点が異なる。
図14は、本実施の形態におけるプロセッサの構成を示す図である。図14に示されるように、プロセッサ601は、実施の形態1におけるプロセッサ101と比べて(例えば、図2参照。)、キャッシュ入替制御部113、キャッシュ部114の代わりに、キャッシュ入替制御部613、1次キャッシュ部614、2次キャッシュ部615を備える点が異なる。
キャッシュ入替制御部613は、スレッド切替制御部112で行われるスレッドの切り替え制御に従って、1次キャッシュ部614に記憶されているキャッシュ内容の入れ替え操作を行う。
1次キャッシュ部614は、タグ記憶部641、データ記憶部642などを備える。タグ記憶部641は、スレッド実行部111から出力されたデータアクセス要求に含まれるアクセス先のアドレスをタグとして記憶する。データ記憶部642は、タグ記憶部141に記憶されているタグと対応付けてデータを記憶する。
ここでは、一例として、タグ記憶部641は、4つのタグ記憶領域を有する。データ記憶部642は、4つのデータ記憶領域を有する。
なお、タグ記憶部641に記憶されているタグを書き換えるにあたっては、LRU方式、FIFO方式、ランダム方式などによって書き換えられる。データ記憶部642に記憶されているデータを書き換える場合においても同様である。
また、1次キャッシュ部614は、スレッド実行部111から出力されたデータアクセス要求に含まれるアクセス先のアドレスと一致するタグがタグ記憶部641に存在する場合は、2次キャッシュ部615にアクセスすることなく、そのタグと対応付けられてデータ記憶部642に記憶されているデータをスレッド実行部111に出力する。一方、存在しない場合は、そのアドレスをタグとしてタグ記憶部641に登録した上で、そのデータアクセス要求を2次キャッシュ部615に転送する。これに伴い、2次キャッシュ部615から出力されたデータをデータ記憶部642に登録した上で、そのデータをスレッド実行部111に出力する。
2次キャッシュ部615は、タグ記憶部651、データ記憶部652、キャッシュ割当部653などを備える。タグ記憶部651は、1次キャッシュ部614から転送されたデータアクセス要求に含まれるアクセス先のアドレスをタグとして記憶する。データ記憶部652は、タグ記憶部651に記憶されているタグと対応付けてデータを記憶する。
ここでは、一例として、タグ記憶部651は、8つのタグ記憶領域を有する。さらに、8つのタグ記憶領域は、第1のタグ記憶領域グループと第2のタグ記憶領域グループとに分類される。第1のタグ記憶領域グループと第2のタグ記憶領域グループとは、互いに重複せず、それぞれ4つのタグ記憶領域を有する。データ記憶部652は、8つのデータ記憶領域を有する。さらに、8つのデータ記憶領域は、第1のデータ記憶領域グループと第2のデータ記憶領域グループとに分類される。第1のデータ記憶領域グループと第2のデータ記憶領域グループとは、互いに重複せず、それぞれ4つのデータ記憶領域を有する。第1のデータ記憶領域グループは、第1のタグ記憶領域グループと対応付けられている。第2のデータ記憶領域グループは、第2のタグ記憶領域グループと対応付けられている。キャッシュ割当部653は、実行対象のスレッドが切り替わるたびに、実行対象のスレッドに対して、第1のタグ記憶領域グループと第2のタグ記憶領域グループとを交互に割り当てる。
なお、タグ記憶部651における第1のタグ記憶領域グループに記憶されているタグを書き換えるにあたっては、LRU方式、FIFO方式、ランダム方式などによって書き換えられる。タグ記憶部651における第2のタグ記憶領域グループに記憶されているタグを書き換える場合においても同様である。データ記憶部652に記憶されているデータを書き換える場合においても同様である。
次に、本実施の形態におけるプロセッサ601の動作について説明する。
図15は、本実施の形態におけるプロセッサ601において実行されるキャッシュ処理を示す図である。図15に示されるように、本実施の形態におけるキャッシュ処理は、実施の形態1におけるキャッシュ処理と比べて(例えば、図3参照。)、処理(S105)〜(S107)の代わりに、下記の処理(S601)〜(S604)を実行する点が異なる。
図15は、本実施の形態におけるプロセッサ601において実行されるキャッシュ処理を示す図である。図15に示されるように、本実施の形態におけるキャッシュ処理は、実施の形態1におけるキャッシュ処理と比べて(例えば、図3参照。)、処理(S105)〜(S107)の代わりに、下記の処理(S601)〜(S604)を実行する点が異なる。
1次キャッシュ部614は、スレッド実行部111からデータアクセス要求を受けると(S101:Yes)、そのデータアクセス要求に含まれるアクセス先のアドレスと一致するタグがタグ記憶部641に存在するか否かを判定する(S102)。判定した結果、存在しない場合は(S102:No)、そのアドレスをタグとしてタグ記憶部641に登録する(S104)。そのデータアクセス要求を2次キャッシュ部615に転送する。これに伴い、データアクセス要求によって特定されるデータを2次キャッシュ部615から受け取る(S602)。受け取ったデータを、登録したアドレスと対応付けてデータ記憶部642に登録する(S603)。そして、受け取ったデータをスレッド実行部111に渡す(S604)。
また、プロセッサ601において、実行対象のスレッドを切り替えるときは、まず、スレッド切替制御部112は、キャッシュ入替制御部613にキャッシュ入れ替え操作の要求を出す。スレッド切替制御部112からキャッシュ入れ替え操作の要求を受けると、キャッシュ入替制御部613は、1次キャッシュ部614と2次キャッシュ部615とを制御して、キャッシュ入替処理を実行させる。そして、キャッシュ入れ替え操作が完了した後、スレッド切替制御部112は、スレッド実行部111が実行するスレッドを切り替える。
図16は、本実施の形態におけるプロセッサ601において実行されるキャッシュ入替処理を示す図である。図16に示されるように、本実施の形態におけるキャッシュ入替処理は、実施の形態1におけるキャッシュ入替処理と比べて(例えば、図4参照。)、処理(S111)〜(S114)の代わりに、下記の処理(S611)〜(S615)を実行する点が異なる。
キャッシュ割当部653は、第1のタグ記憶領域グループおよび第2のタグ記憶領域グループのいずれかを割り当てる(S611)。
例えば、実行対象のスレッドが切り替わる前に実行されていたスレッドを第1のスレッドとする。実行対象のスレッドが切り替わった後に実行されるスレッドを第2のスレッドとする。キャッシュ割当部653によって、第1のスレッドに対して第1のタグ記憶領域が割り当てられ、第2のスレッドに対して第2のタグ記憶領域が割り当てられたとする。
この場合において、1次キャッシュ部614は、タグ記憶部641に記憶されているタグを第1のタグ記憶領域に退避しながら(S612)、第2のタグ記憶領域に記憶されているタグをタグ記憶部641に復帰する(S613)。また、データ記憶部642に記憶されているデータを第1のデータ記憶領域に退避しながら(S614)、第2のデータ記憶領域に記憶されているデータをデータ記憶部642に復帰する(S615)。
以上、本実施の形態におけるプロセッサ601によれば、他の処理によって、スレッドの実行が中断されると、1次キャッシュ部614に記憶されているタグとデータとが、スレッドに応じて割り当てられた2次キャッシュ部615に退避される。また、スレッドの実行が再開されるときに、2次キャッシュ部615に退避されていたタグとデータとが1次キャッシュ部614に復帰される。
これによって、途中で他の処理が実行されてキャッシュ内容が変化することに起因したキャッシュミスを軽減することが可能となる。その結果、リアルタイム性の劣化を抑制することが可能となる。
なお、例えば、スレッド実行部111から出力されたデータアクセス要求に含まれるアクセス先のアドレスと一致するタグが、タグ記憶部641に存在しないとする。この場合において、キャッシュ割当部653によって、実行待ちのスレッドに対して割り当てられたタグ記憶領域グループに存在する場合は、データ記憶部652からデータを取得するとしてもよい。
これによって、実行対象のスレッドが切り替わる前に実行されていたスレッドによって2次キャッシュ部615に記憶されたデータを実行中のスレッドが要求する場合は、データ記憶部652に退避されているデータの中から取得することが可能となる。さらに、そのタグをタグ記憶部641に登録することなく、また、そのタグと対応付けてデータをデータ記憶部642に登録することなく、そのデータをスレッド実行部111に出力することも可能となる。すなわち、主記憶装置102にアクセスすることなく要求されたデータをスレッド実行部111に出力することが可能となる。その結果、キャッシュミスによるペナルティを削減することが可能となる。
さらに、2次キャッシュ部615に記憶されているデータは、実行対象のスレッドが切り替わる前に実行されていたスレッドと切り替わった後に実行されるスレッドとの間で共有される。このため、主記憶装置102に記憶されているデータのコピーが複数存在することがなく、1次キャッシュ部614と2次キャッシュ部615とに記憶されるデータの一貫性を保つために、スレッド間でデータアクセスに対する制約を設ける必要がない。
(実施の形態7)
以下、本発明に係わる実施の形態7について、図面を参照しながら説明する。
以下、本発明に係わる実施の形態7について、図面を参照しながら説明する。
なお、本実施の形態におけるプロセッサは、下記(l)に示す特徴を備えるとしてもよい。
(l)プロセッサは、(l1)所定のサイズの記憶領域に記憶されているタグと対応付けられ、対応付けられているタグによって特定されるデータがキャッシュデータ記憶機能およびスワップデータ記憶機能のいずれに記憶されているかが示される選択情報を記憶する選択情報記憶機能と、(l2)第1のスレッドによって要求された所定のデータの記憶先が特定される所定のアドレスが所定のタグとして所定のサイズの記憶領域に記憶されているか否かを判定する記憶判定機能と、(l3)記憶判定機能で所定のサイズの記憶領域に記憶されていると判定された場合は、選択情報記憶機能に記憶されている選択情報の中から、所定のタグと対応付けられている選択情報を選択する選択情報選択機能と、(l4)選択情報選択機能で選択された選択情報に基づいて、所定のデータが所定のデータがキャッシュデータ記憶機能およびスワップデータ記憶機能のいずれに記憶されているかを特定する記憶先特定機能と、(l5)記憶先特定機能でキャッシュデータ記憶機能に記憶されていると特定された場合は、キャッシュデータ記憶機能に記憶されているデータの中から、所定のアドレスと対応付けられているデータを、所定のデータとして実行ユニットに渡し、スワップデータ記憶機能に記憶されていると特定された場合は、スワップデータ記憶機能に記憶されているデータの中から、所定のアドレスと対応付けられているデータを、所定のデータとして実行ユニットに渡すキャッシュ機能とを備える。
なお、本実施の形態における構成要素において、実施の形態3と同一の構成要素については、同一の参照符号を付して説明を省略する。以上の点を踏まえて、本実施の形態におけるプロセッサについて説明する。
まず、本実施の形態におけるプロセッサの構成について説明する。
図17は、本実施の形態におけるプロセッサの構成を示す図である。図17に示されるように、プロセッサ701は、実施の形態3におけるプロセッサ301と比べて(例えば、図7参照。)、キャッシュ部314の代わりに、キャッシュ部714、スワップ部715を備える点が異なる。
図17は、本実施の形態におけるプロセッサの構成を示す図である。図17に示されるように、プロセッサ701は、実施の形態3におけるプロセッサ301と比べて(例えば、図7参照。)、キャッシュ部314の代わりに、キャッシュ部714、スワップ部715を備える点が異なる。
スワップ部715は、主記憶装置102よりも高速アクセス可能な退避データ記憶部752などを備える。退避データ記憶部752は、キャッシュ内容を入れ替えるにあたり、データの退避先および復帰元となる。ここでは、一例として、退避データ記憶部752は、4つのデータ記憶領域を有する。
キャッシュ部714は、タグ記憶部341、データ記憶部342、キャッシュ割当部343を備える。さらに、選択情報記憶部744を備える。選択情報記憶部744は、タグ記憶部341に記憶されているタグと対応付けられて選択情報を記憶する。ここで、選択情報は、対応付けられているタグによって特定されるデータがデータ記憶部342および退避データ記憶部752のいずれに記憶されているかが示される情報である。例えば、選択情報は、1ビットのフラグとしてもよい。このとき、選択情報が“0”である場合は、データ記憶部342に記憶されているとし、選択情報が“1”である場合は、退避データ記憶部752に記憶されているとしてもよい。
また、キャッシュ部714は、スレッド実行部311から出力されたデータアクセス要求に含まれる実行スレッド情報に基づいて、第1のタグ記憶領域グループおよび第2のタグ記憶領域グループのいずれかを特定する。
さらに、キャッシュ部714は、そのデータアクセス要求に含まれるアクセス先のアドレスと一致するタグがタグ記憶部341に存在する場合は、選択情報記憶部744に記憶されている選択情報の中から、そのタグと対応付けられている選択情報を選択する。選択した選択情報に基づいて、そのタグによって特定されるデータがデータ記憶部342および退避データ記憶部752のいずれに記憶されているかを特定する。
特定した結果、キャッシュ部714は、データ記憶部342に記憶されている場合は、主記憶装置102にアクセスすることなく、そのタグと対応付けられてデータ記憶部342に記憶されているデータをスレッド実行部311に渡す。一方、退避データ記憶部752に記憶されている場合は、特定したタグ記憶領域グループに記憶されているタグの中から、入れ替え対象のタグを選択する。選択した入れ替え対象のタグと、アクセス先のアドレスと一致するタグとを交換する。また、選択した入れ替え対象のタグと対応付けられている選択情報と、アクセス先のアドレスと一致するタグと対応付けられている選択情報とを交換する。また、選択した入れ替え対象のタグと対応付けられているデータを退避データ記憶部752に退避しながら、アクセス先のアドレスと一致するタグと対応付けられているデータをデータ記憶部342に復帰する。データ記憶部342に復帰したデータをスレッド実行部311に渡す。
なお、タグ記憶部341における第1のタグ記憶領域グループに記憶されているタグの中から、入れ替え対象のタグを選択するにあたっては、LRU方式、FIFO方式、ランダム方式などによって選択される。タグ記憶部341における第2のタグ記憶領域グループに記憶されているタグの中から、入れ替え対象のタグを選択する場合においても同様である。
なお、キャッシュ部714は、退避データ記憶部752に記憶されている場合は、特定したタグ記憶領域グループに記憶されているタグの中から、入れ替え対象のタグを選択する処理を省略するとしてもよい。このとき、選択した入れ替え対象のタグと、アクセス先のアドレスと一致するタグとを交換する処理も省略する。また、選択した入れ替え対象のタグと対応付けられている選択情報と、アクセス先のアドレスと一致するタグと対応付けられている選択情報とを交換する処理も省略する。また、選択した入れ替え対象のタグと対応付けられているデータを退避データ記憶部752に退避しながら、アクセス先のアドレスと一致するタグと対応付けられているデータをデータ記憶部342に復帰する処理も省略する。その代わりに、アクセス先のアドレスと一致するタグによって特定されるデータを退避データ記憶部752から取得する。取得したデータをデータ記憶部342に登録せずに、スレッド実行部311に直接渡すとしてもよい。
一方、キャッシュ部714は、アクセス先のアドレスと一致するタグがタグ記憶部341に存在しない場合は、特定したタグ記憶領域グループに、アクセス先のアドレスをタグとしてタグ記憶部141に登録する。さらに、アクセス先のアドレスによって特定されるデータを主記憶装置102から取得する。取得したデータをデータ記憶部142に登録する。また、取得したデータをスレッド実行部311に渡す。さらに、データ記憶部342に記憶されていることが示される選択情報を、そのタグと対応付けて選択情報記憶部744に登録する。
また、キャッシュ部714は、キャッシュを入れ替えるときは、データ記憶部342に記憶されているデータを退避データ記憶部752に退避しながら、退避データ記憶部752に退避されていたデータをデータ記憶部342に復帰する。このとき、選択情報記憶部744に記憶されている全ての選択情報に対して、データ記憶部342に記憶されていることが示される選択情報を、退避データ記憶部752に記憶されていることが示される選択情報に書き換える。退避データ記憶部752に記憶されていることが示される選択情報を、データ記憶部342に記憶されていることが示される選択情報に書き換える。
次に、本実施の形態におけるプロセッサ701の動作について説明する。
図18A,図18Bは、本実施の形態におけるプロセッサ701において実行されるキャッシュ処理を示す図である。図18Bに示されるように、本実施の形態におけるキャッシュ処理は、実施の形態3におけるキャッシュ処理と比べて(例えば、図8参照。)、処理(S302),(S303)の代わりに、下記の処理(S701)〜(S710)を実行する点が異なる。
図18A,図18Bは、本実施の形態におけるプロセッサ701において実行されるキャッシュ処理を示す図である。図18Bに示されるように、本実施の形態におけるキャッシュ処理は、実施の形態3におけるキャッシュ処理と比べて(例えば、図8参照。)、処理(S302),(S303)の代わりに、下記の処理(S701)〜(S710)を実行する点が異なる。
キャッシュ部714は、そのデータアクセス要求に含まれるアクセス先のアドレスと一致するタグがタグ記憶部341に存在するか否かを判定する(S701)。判定した結果、アクセス先のアドレスと一致するタグがタグ記憶部341に存在する場合は(S701:Yes)、選択情報記憶部744に記憶されている選択情報の中から、そのタグと対応付けられている選択情報を選択する(S702)。選択した選択情報に基づいて、そのタグによって特定されるデータがデータ記憶部342および退避データ記憶部752のいずれに記憶されているかを特定する(S703)。
特定した結果、キャッシュ部714は、データ記憶部342に記憶されている場合は(S703:Yes)、主記憶装置102にアクセスすることなく、そのタグと対応付けられてデータ記憶部342に記憶されているデータをスレッド実行部311に渡す(S704)。一方、退避データ記憶部752に記憶されている場合は(S703:No)、特定したタグ記憶領域グループに記憶されているタグの中から、入れ替え対象のタグを選択する(S705)。選択した入れ替え対象のタグと、そのアドレスと一致するタグとを交換する(S706)。また、選択した入れ替え対象のタグと対応付けられている選択情報と、そのアドレスと一致するタグと対応付けられている選択情報とを交換する(S707)。また、選択した入れ替え対象のタグと対応付けられているデータを退避データ記憶部752に退避しながら(S708)、そのアドレスと一致するタグと対応付けられているデータをデータ記憶部342に復帰する(S709)。データ記憶部342に復帰したデータをスレッド実行部311に渡す(S710)。
また、図18Aに示されるように、本実施の形態におけるキャッシュ処理は、実施の形態3におけるキャッシュ処理と比べて(例えば、図8参照。)、処理(S304)〜(S307)を実行するときに、さらに、下記の処理(S711)も実行する点が異なる。
キャッシュ部714は、データ記憶部342に記憶されていることが示される選択情報を、そのタグと対応付けて選択情報記憶部744に登録する(S711)。
また、プロセッサ701において、実行対象のスレッドを切り替えるときは、まず、スレッド切替制御部112は、キャッシュ入替制御部113にキャッシュ入れ替え操作の要求を出す。そして、スレッド切替制御部112からキャッシュ入れ替え操作の要求を受けると、キャッシュ入替制御部113は、キャッシュ部714にキャッシュ入替要求を出す。これに伴い、キャッシュ部714は、キャッシュ入替処理を行う。そして、キャッシュ入れ替え操作が完了した後、スレッド切替制御部112は、スレッド実行部311が実行するスレッドを切り替える。
図19は、本実施の形態におけるプロセッサ701において実行されるキャッシュ入替処理を示す図である。図19に示されるように、本実施の形態におけるキャッシュ入替処理は、実施の形態3におけるキャッシュ入替処理と比べて(例えば、図9参照。)、処理(S312),(S313)の代わりに、下記の処理(S721)〜(S724)を実行する点が異なる。
キャッシュ部714は、データ記憶部342に記憶されているデータを退避データ記憶部752に退避しながら(S721)、退避データ記憶部752に退避されていたデータをデータ記憶部342に復帰する(S722)。このとき、選択情報記憶部744に記憶されている全ての選択情報に対して、データ記憶部342に記憶されていることが示される選択情報を、退避データ記憶部752に記憶されていることが示される選択情報に書き換える(S723)。また、退避データ記憶部752に記憶されていることが示される選択情報を、データ記憶部342に記憶されていることが示される選択情報に書き換える(S724)。
以上、本実施の形態におけるプロセッサ701によれば、スレッド実行部311からデータアクセス要求を受けると、タグ記憶部341に記憶されている全てのタグが検索される。このとき、スレッド実行部311で実行されているスレッドに対して割り当てられたタグ記憶領域グループに記憶されているタグにヒットしなくても、他のタグ記憶領域グループに記憶されているタグにヒットしたとする。この場合において、主記憶装置102よりも高速アクセス可能な退避データ記憶部752からデータを取得することができる。すなわち、タグ記憶部341に記憶されているタグのいずれかにヒットさえすれば、主記憶装置102からデータを取得するよりも速くデータを取得することができる。
(その他)
なお、本発明に係わるプロセッサは、プロセッサの各機能が組み込まれたLSIによって実現されるとしてもよい。
なお、本発明に係わるプロセッサは、プロセッサの各機能が組み込まれたLSIによって実現されるとしてもよい。
なお、LSIは、フルカスタムLSI、ASIC(Application Specific Integrated Circuit)などのようなセミカスタムLSI、FPGAやCPLDなどのようなプログラマブル・ロジック・デバイス、動的に回路構成が書き換え可能なダイナミック・リコンフィギュラブル・デバイスに形成されるとしてもよい。
さらに、プロセッサの各機能をLSIに形成する設計データは、ハードウェア記述言語によって記述されたプログラム(以下、HDLプログラムと呼称する。)としてもよい。さらに、HDLプログラムを論理合成して得られるゲート・レベルのネットリストとしてもよい。また、ゲート・レベルのネットリストに、配置情報、プロセス条件等を付加したマクロセル情報としてもよい。また、寸法、タイミング等が規定されたマスクデータとしてもよい。ここで、ハードウェア記述言語として、VHDL(Very high speed integrated circuit Hardware Description Language)、Verilog−HDL、SystemCがある。
さらに、設計データは、汎用のコンピュータシステム、組み込みシステムなどのようなハードウェアシステムに読み取り可能な記録媒体に記録されているとしてもよい。さらに、記録媒体を介して他のハードウェアシステムに読み出されて実行されるとしてもよい。そして、これらの記録媒体を介して他のハードウェアシステムに読み取られた設計データが、ダウンロードケーブルを介して、プログラマブル・ロジック・デバイスにダウンロードされるとしてもよい。ここで、汎用のコンピュータシステムで読み取り可能な記録媒体として、光学記録媒体(例えば、CD−ROMなど。)、磁気記録媒体(例えば、ハードディスクなど。)、光磁気記録媒体(例えば、MOなど。)、半導体メモリ(例えば、メモリカードなど。)などがある。
または、設計データは、インターネット、ローカルエリアネットワークなどのようなネットワークに接続されているハードウェアシステムに保持されているとしてもよい。さらに、ネットワークを介して他のハードウェアシステムにダウンロードされて実行されるとしてもよい。そして、これらのネットワークを介して他のハードウェアシステムに取得された設計データが、ダウンロードケーブルを介して、プログラマブル・ロジック・デバイスにダウンロードされるとしてよい。ここで、ネットワークとして、地上放送網、衛星放送網、PLC(Power Line Communication)、移動電話網、有線通信網(例えば、IEEE802.3など。)、無線通信網(例えば、IEEE802.11など。)がある。
または、設計データは、通電時にFPGAに転送され得るように、シリアルROMに記録しておくとしてもよい。そして、シリアルROMに記録された設計データは、通電時に、直接、FPGAにダウンロードされるとしてもよい。
または、設計データは、通電時に、マイクロプロセッサによって生成されて、FPGAにダウンロードされるとしてもよい。
本発明は、スレッド単位でプログラムを実行することができるプロセッサなどとして、特に、スレッドが切り替わるときに実行対象のスレッドに対してキャッシュ領域を割り当てるプロセッサなどとして、利用することができる。
1 プロセッサ
2 主記憶装置
11 スレッド実行部
12 スレッド切替制御部
13 キャッシュ部
31 タグ記憶部
32 データ記憶部
33 キャッシュ割当部
101 プロセッサ
102 主記憶装置
111 スレッド実行部
112 スレッド切替制御部
113 キャッシュ入替制御部
114 キャッシュ部
115 スワップ部
141 タグ記憶部
142 データ記憶部
151 退避タグ記憶部
201 プロセッサ
214 キャッシュ部
215 スワップ部
252 退避データ記憶部
301 プロセッサ
311 スレッド実行部
314 キャッシュ部
341 タグ記憶部
342 データ記憶部
343 キャッシュ割当部
401 プロセッサ
414 キャッシュ部
415 スワップ部
452 退避データ記憶部
501 プロセッサ
512 スレッド切替制御部
514 キャッシュ部
601 プロセッサ
613 キャッシュ入替制御部
614 1次キャッシュ部
615 2次キャッシュ部
641 タグ記憶部
642 データ記憶部
651 タグ記憶部
652 データ記憶部
653 キャッシュ割当部
701 プロセッサ
714 キャッシュ部
715 スワップ部
744 選択情報記憶部
752 退避データ記憶部
2 主記憶装置
11 スレッド実行部
12 スレッド切替制御部
13 キャッシュ部
31 タグ記憶部
32 データ記憶部
33 キャッシュ割当部
101 プロセッサ
102 主記憶装置
111 スレッド実行部
112 スレッド切替制御部
113 キャッシュ入替制御部
114 キャッシュ部
115 スワップ部
141 タグ記憶部
142 データ記憶部
151 退避タグ記憶部
201 プロセッサ
214 キャッシュ部
215 スワップ部
252 退避データ記憶部
301 プロセッサ
311 スレッド実行部
314 キャッシュ部
341 タグ記憶部
342 データ記憶部
343 キャッシュ割当部
401 プロセッサ
414 キャッシュ部
415 スワップ部
452 退避データ記憶部
501 プロセッサ
512 スレッド切替制御部
514 キャッシュ部
601 プロセッサ
613 キャッシュ入替制御部
614 1次キャッシュ部
615 2次キャッシュ部
641 タグ記憶部
642 データ記憶部
651 タグ記憶部
652 データ記憶部
653 キャッシュ割当部
701 プロセッサ
714 キャッシュ部
715 スワップ部
744 選択情報記憶部
752 退避データ記憶部
Claims (13)
- スレッド単位でプログラムを実行することができる実行ユニットにおいて要求されたデータを、主記憶装置から取得して前記実行ユニットに渡すプロセッサであって、
実行中の第1のスレッドによって要求されたデータの記憶先が特定されるアドレスを第1のタグとして記憶する第1のタグ記憶手段と、
中断中の第2のスレッドによって要求されたデータの記憶先が特定されるアドレスを第2のタグとして記憶する第2のタグ記憶手段と、
前記実行ユニットにおいて要求されたデータを記憶するキャッシュデータ記憶手段と、
実行対象のスレッドが前記第1のスレッドから前記第2のスレッドに切り替わるときは、前記キャッシュデータ記憶手段に記憶されているデータを、前記第2のタグによって特定されるデータと入れ替えるデータ入替手段と
を備えることを特徴とするプロセッサ。 - 前記プロセッサは、実行対象のスレッドが切り替わるときに、前記キャッシュデータ記憶手段から退避されたデータを記憶するスワップデータ記憶手段を備え、
前記データ入替手段は、前記第2のタグによって特定されるデータを前記スワップデータ記憶手段から取得する
ことを特徴とする請求項1に記載のプロセッサ。 - 前記データ入替手段は、前記キャッシュデータ記憶手段に記憶されているデータを前記スワップデータ記憶手段に退避しながら、前記スワップデータ記憶手段に退避されていたデータを前記キャッシュデータ記憶手段に復帰する
ことを特徴とする請求項2に記載のプロセッサ。 - 前記プロセッサは、前記第1のスレッドによって要求された所定のデータが前記キャッシュデータ記憶手段に登録されていない場合において、前記所定のデータの記憶先が特定される所定のアドレスが前記第2のタグ記憶手段に記憶されている場合は、前記スワップデータ記憶手段に記憶されているデータの中から、前記所定のアドレスと対応付けられているデータを、前記所定のデータとして、前記キャッシュデータ記憶手段に登録することなく前記実行ユニットに渡すキャッシュ手段
を備えることを特徴とする請求項2に記載のプロセッサ。 - 前記データ入替手段は、前記第2のタグによって特定されるデータを前記主記憶装置から取得する
ことを特徴とする請求項1に記載のプロセッサ。 - 前記プロセッサは、実行対象のスレッドが前記第1のスレッドから前記第2のスレッドに切り替わるときに、前記第1のタグを前記第2のタグ記憶手段に退避しながら、前記第2のタグを前記第1のタグ記憶手段に復帰するタグ入替手段
を備えることを特徴とする請求項1に記載のプロセッサ。 - 前記プロセッサは、前記第1のスレッドによって要求された所定のデータが前記キャッシュデータ記憶手段に記憶されていない場合は、前記所定のデータの記憶先が特定される所定のアドレスを前記第1のタグとして前記第1のタグ記憶手段に登録してから、実行対象のスレッドを前記第1のスレッドから前記第2のスレッドに切り替えるキャッシュ手段
を備えることを特徴とする請求項1に記載のプロセッサ。 - 前記データ入替手段は、前記第1のタグ記憶手段と前記第2のタグ記憶手段とに同一のアドレスが登録されている場合は、前記同一のアドレスによって特定されるデータを除いて、前記キャッシュデータ記憶手段に記憶されているデータを入れ替える
ことを特徴とする請求項1に記載のプロセッサ。 - 前記プロセッサは、
前記実行ユニットにおいて要求されたデータの記憶先が特定されるアドレスを1次タグとして記憶する1次タグ記憶手段と、
前記第1のスレッドによって要求されたデータを前記第1のタグと対応付けて記憶する第1の2次キャッシュデータ記憶手段と、
前記第2のスレッドによって要求されたデータを前記第2のタグと対応付けて記憶する第2の2次キャッシュデータ記憶手段と、
実行対象のスレッドが前記第1のスレッドから前記第2のスレッドに切り替わるときに、前記1次タグ記憶手段に記憶されている1次タグを前記第1のタグ記憶手段に退避しながら、前記第2のタグを前記1次タグ記憶手段に復帰するタグ入替手段と
を備え、
前記データ入替手段は、実行対象のスレッドが前記第1のスレッドから前記第2のスレッドに切り替わるときに、前記キャッシュデータ記憶手段に記憶されているデータを前記第1の2次キャッシュデータ記憶手段に退避しながら、前記第2の2次キャッシュデータ記憶手段に記憶されているデータを前記キャッシュデータ記憶手段に復帰する
ことを特徴とする請求項1に記載のプロセッサ。 - 前記プロセッサは、前記第1のスレッドによって要求された所定のデータが前記キャッシュデータ記憶手段に登録されていない場合において、前記所定のデータの記憶先が特定される所定のアドレスが前記第2のタグ記憶手段に記憶されている場合は、前記第2の2次キャッシュデータ記憶手段に記憶されているデータの中から、前記所定のアドレスと対応付けられているデータを、前記所定のデータとして、前記キャッシュデータ記憶手段に登録することなく前記実行ユニットに渡すキャッシュ手段
を備えることを特徴とする請求項9に記載のプロセッサ。 - 前記プロセッサは、少なくとも前記キャッシュデータ記憶手段に記憶されるデータの数の2倍以上の数のタグが記憶される所定のサイズの記憶領域から、前記第1のタグが記憶される第1のタグ記憶領域と、前記第2のタグが記憶される第2のタグ記憶領域とを割り当てるキャッシュ割当手段を備え、
前記第1のタグ記憶手段は、前記第1のタグ記憶領域を有し、
前記第2のタグ記憶手段は、前記第2のタグ記憶領域を有する
ことを特徴とする請求項1に記載のプロセッサ。 - 前記プロセッサは、
前記所定のサイズの記憶領域に記憶されているタグと対応付けられ、対応付けられているタグによって特定されるデータが前記キャッシュデータ記憶手段および前記スワップデータ記憶手段のいずれに記憶されているかが示される選択情報を記憶する選択情報記憶手段と、
前記第1のスレッドによって要求された所定のデータの記憶先が特定される所定のアドレスが所定のタグとして前記所定のサイズの記憶領域に記憶されているか否かを判定する記憶判定手段と、
前記記憶判定手段で前記所定のサイズの記憶領域に記憶されていると判定された場合は、前記選択情報記憶手段に記憶されている選択情報の中から、所定のタグと対応付けられている選択情報を選択する選択情報選択手段と、
前記選択情報選択手段で選択された選択情報に基づいて、前記所定のデータが前記所定のデータが前記キャッシュデータ記憶手段および前記スワップデータ記憶手段のいずれに記憶されているかを特定する記憶先特定手段と、
前記記憶先特定手段で前記キャッシュデータ記憶手段に記憶されていると特定された場合は、前記キャッシュデータ記憶手段に記憶されているデータの中から、前記所定のアドレスと対応付けられているデータを、前記所定のデータとして前記実行ユニットに渡し、前記スワップデータ記憶手段に記憶されていると特定された場合は、前記スワップデータ記憶手段に記憶されているデータの中から、前記所定のアドレスと対応付けられているデータを、前記所定のデータとして前記実行ユニットに渡すキャッシュ手段と
を備えることを特徴とする請求項11に記載のプロセッサ。 - スレッド単位でプログラムを実行することができる実行ユニットにおいて要求されたデータを、主記憶装置から取得して前記実行ユニットに渡すとともに、キャッシュデータ記憶領域に記憶するプロセッサのキャッシュ制御方法であって、
実行対象のスレッドが実行中の第1のスレッドから中断中の第2のスレッドに切り替わるときに、前記キャッシュデータ記憶領域に記憶されているデータを、以前、前記第2のスレッドを実行したときに要求されたデータと入れ替える
ことを特徴とするキャッシュ制御方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006282905A JP2008102623A (ja) | 2006-10-17 | 2006-10-17 | プロセッサ |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006282905A JP2008102623A (ja) | 2006-10-17 | 2006-10-17 | プロセッサ |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2008102623A true JP2008102623A (ja) | 2008-05-01 |
Family
ID=39436924
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006282905A Pending JP2008102623A (ja) | 2006-10-17 | 2006-10-17 | プロセッサ |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2008102623A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013534670A (ja) * | 2010-07-12 | 2013-09-05 | ブル・エス・アー・エス | 複数の論理コアを備えるマイクロプロセッサにおけるアプリケーション実行再開時のメモリアクセス最適化方法および該方法を実行するコンピュータプログラム |
-
2006
- 2006-10-17 JP JP2006282905A patent/JP2008102623A/ja active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013534670A (ja) * | 2010-07-12 | 2013-09-05 | ブル・エス・アー・エス | 複数の論理コアを備えるマイクロプロセッサにおけるアプリケーション実行再開時のメモリアクセス最適化方法および該方法を実行するコンピュータプログラム |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8725950B2 (en) | Horizontally-shared cache victims in multiple core processors | |
US8930634B2 (en) | Speculative read in a cache coherent microprocessor | |
US9053049B2 (en) | Translation management instructions for updating address translation data structures in remote processing nodes | |
KR101013237B1 (ko) | 스트림 레지스터를 이용하여 스누프 요구를 필터링하는방법 및 장치 | |
US6636949B2 (en) | System for handling coherence protocol races in a scalable shared memory system based on chip multiprocessing | |
US7584327B2 (en) | Method and system for proximity caching in a multiple-core system | |
US8001283B2 (en) | Efficient, scalable and high performance mechanism for handling IO requests | |
US8131941B2 (en) | Support for multiple coherence domains | |
US7890699B2 (en) | Processing unit incorporating L1 cache bypass | |
US9639466B2 (en) | Control mechanism for fine-tuned cache to backing-store synchronization | |
US6675265B2 (en) | Multiprocessor cache coherence system and method in which processor nodes and input/output nodes are equal participants | |
US9075730B2 (en) | Mechanisms to bound the presence of cache blocks with specific properties in caches | |
JP4006436B2 (ja) | 種々のキャッシュ・レベルにおける連想セットの重畳一致グループを有するマルチレベル・キャッシュ | |
EP0598535A1 (en) | Pending write-back controller for a cache controller coupled to a packet switched memory bus | |
US20090327649A1 (en) | Three-Tiered Translation Lookaside Buffer Hierarchy in a Multithreading Microprocessor | |
US20020083274A1 (en) | Scalable multiprocessor system and cache coherence method incorporating invalid-to-dirty requests | |
US9298615B2 (en) | Methods and apparatus for soft-partitioning of a data cache for stack data | |
US20130073811A1 (en) | Region privatization in directory-based cache coherence | |
US8327121B2 (en) | Data cache receive flop bypass | |
US10474575B2 (en) | Cache-based communication between execution threads of a data processing system | |
JP2007156821A (ja) | キャッシュシステム及び共用2次キャッシュ | |
JPH10301850A (ja) | データ処理システム内のキャッシュ・コヒーレンシを維持するためにセクタ化キャッシュ・メモリに疑似精密包含方式を設ける方法及びシステム | |
JP2008102623A (ja) | プロセッサ | |
TW202422346A (zh) | 控制快取原則的系統及方法,及快取區 | |
US11797454B2 (en) | Technique for operating a cache storage to cache data associated with memory addresses |