(57)【要約】【課題】処理の高速化を図ることができるデータ処理装置を提供すること。【解決手段】演算器と、当該演算器にて処理されるデータを格納するレジスタと、当該レジスタに格納されているデータの退避先となるキャッシュメモリよりもレジスタに対して高速にアクセス可能なレジスタキャッシュと、演算器がキャッシュメモリに対してアクセスしていないときにレジスタキャッシュに記憶されたデータをキャッシュメモリに記憶するメモリバスアービタと、レジスタに対するデータの入出力を制御する制御部と、を備え、上記レジスタキャッシュは、レジスタに格納されているデータの書き出し要求に応じて当該レジスタから出力されたデータを記憶する機能を有すると共に、レジスタへのデータの復元要求に応じてレジスタキャッシュ内に記憶されたデータのうち当該復元要求されたデータを選択してレジスタに復元する機能を有する。【選択図】図１
2009199384.tif 000002
【特許請求の範囲】
【請求項１】
演算器と、当該演算器にて処理されるデータを格納するレジスタと、当該レジスタに格納されているデータの退避先となるキャッシュメモリよりも前記レジスタに対して高速にアクセス可能なレジスタキャッシュと、前記演算器が前記キャッシュメモリに対してアクセスしていないときに前記レジスタキャッシュに記憶されたデータを前記キャッシュメモリに記憶するメモリバスアービタと、前記レジスタに対するデータの入出力を制御する制御部と、を備え、
前記レジスタキャッシュは、前記レジスタに格納されているデータの書き出し要求に応じて当該レジスタから出力されたデータを記憶する機能を有すると共に、前記レジスタへのデータの復元要求に応じてレジスタキャッシュ内に記憶されたデータのうち当該復元要求されたデータを選択して前記レジスタに復元する機能を有する、
ことを特徴とするデータ処理装置。
【請求項２】
前記レジスタキャッシュは、前記レジスタから出力されたデータを記憶するキャッシュ領域と、当該各キャッシュ領域にそれぞれ対応するタグ領域と、を有しており、
前記書き出し要求時に、前記レジスタから出力されたデータを前記キャッシュ領域に記憶すると共に、当該キャッシュ領域に対応する前記タグ領域に当該データを特定するデータ特定情報を記憶する機能と、
前記復元要求時に、前記タグ領域に記憶された前記データ特定情報に基づいて当該復元要求されたデータが記憶された前記キャッシュ領域を選択して、当該キャッシュ領域内のデータを前記レジスタに復元する機能を有する、
ことを特徴とする請求項１記載のデータ処理装置。
【請求項３】
前記レジスタキャッシュは、前記書き出し要求時に、指定された書き出し先アドレス情報を前記データ特定情報として前記タグ領域に記憶し、前記復元要求時に、指定された復元要求アドレス情報と一致する前記書き出し先アドレス情報が記憶された前記タグ領域に対応する前記キャッシュ領域を選択して当該キャッシュ領域内のデータを前記レジスタに復元する、
ことを特徴とする請求項２記載のデータ処理装置。
【請求項４】
前記レジスタキャッシュは、前記書き出し要求時に、前記レジスタから出力されたデータを記憶した前記キャッシュ領域に対応する前記タグ領域にデータ記憶フラグを記憶し、前記復元要求時に、前記データ記憶フラグが設定されている前記タグ領域に記憶された前記データ特定情報に基づいて当該復元要求されたデータが記憶された前記キャッシュ領域を選択する、
ことを特徴とする請求項２又は３記載のデータ処理装置。
【請求項５】
前記タグ領域は、リングバッファである、
ことを特徴とする請求項２，３又は４記載のデータ処理装置。
【請求項６】
前記レジスタキャッシュは、前記レジスタから出力されるデータを次に記憶する前記キャッシュ領域に対応する前記タグ領域を指定する出力先ポインタと、前記復元要求時に当該復元要求されたデータに対応する前記データ特定情報が記憶されているか否かを検索する対象となる前記タグ領域を指定する検索対象ポインタと、を有し、
前記復元要求時に、前記各タグ領域上を前記検索対象ポインタを走査させて、当該各タグ領域内に復元要求されたデータに対応する前記データ特定情報が記憶されているか否かを検索する、
ことを特徴とする請求項２，３，４又は５記載のデータ処理装置。
【請求項７】
前記レジスタキャッシュは、前記復元要求時に、前記出力先ポインタが指定する次の前記タグ領域から前記検索対象ポインタを走査して、前記各タグ領域内に復元要求されたデータに対応する前記データ特定情報が記憶されているか否かを検索する、
ことを特徴とする請求項６記載のデータ処理装置。
【請求項８】
前記レジスタキャッシュは、前記タグ領域のうち前記データ特定情報が最も早く記憶された前記タグ領域を指定するデータ記憶ポインタを有しており、前記復元要求時に、前記データ記憶ポインタが指定する前記タグ領域から前記検索対象ポインタを走査して、前記各タグ領域内に復元要求されたデータに対応する前記データ特定情報が記憶されているか否かを検索する、
ことを特徴とする請求項６記載のデータ処理装置。
【請求項９】
前記レジスタキャッシュは、前記出力先ポインタあるいは前記データ記憶ポインタが指定する前記タグ領域を追い越すまで前記検索対象ポインタを走査して、前記各タグ領域内に復元要求されたデータに対応する前記データ特定情報が記憶されているか否かを検索する、
ことを特徴とする請求項７又は８記載のデータ処理装置。
【請求項１０】
前記演算器及び前記レジスタにより構成されたコアを複数備えた、
ことを請求項１，２，３，４，５，６，７，８又は９記載のデータ処理装置。
【請求項１１】
演算器と、当該演算器にて処理されるデータを格納するレジスタと、当該レジスタに格納されているデータの退避先となるキャッシュメモリよりも前記レジスタに対して高速にアクセス可能なレジスタキャッシュと、前記演算器が前記キャッシュメモリに対してアクセスしていないときに前記レジスタキャッシュに記憶されたデータを前記キャッシュメモリに記憶するメモリバスアービタと、前記レジスタに対するデータの入出力を制御する制御部と、を備えたデータ処理装置におけるデータ処理方法であって、
前記レジスタに格納されているデータの書き出し要求に応じて当該レジスタから出力されたデータを前記レジスタキャッシュに記憶し、前記レジスタへのデータの復元要求に応じてレジスタキャッシュ内に記憶されたデータのうち当該復元要求されたデータを選択して前記レジスタに復元する、
ことを特徴とするデータ処理方法。
【請求項１２】
前記書き出し要求時に、前記レジスタから出力されたデータを前記レジスタキャッシュ内に設けられたキャッシュ領域に記憶すると共に、当該キャッシュ領域に対応して前記レジスタキャッシュ内に設けられた前記タグ領域に当該データを特定するデータ特定情報を記憶し、
前記復元要求時に、前記タグ領域に記憶された前記データ特定情報に基づいて当該復元要求されたデータが記憶された前記キャッシュ領域を選択して、当該キャッシュ領域内のデータを前記レジスタに復元する、
ことを特徴とする請求項１１記載のデータ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理装置にかかり、特に、マイクロプロセッサに搭載されたレジスタに入出力されるデータを処理するデータ処理装置に関する。
【背景技術】
【０００２】
プロセッサは、データを保持するレジスタを備えており、当該マイクロプロセッサの実行時の性能を向上させるためには、レジスタの容量を増大することが有効である。ところが、プロセッサが複数のタスクを切り替えながら実行するマルチタスク環境下では、レジスタの状態をキャッシュメモリに記録するために要する時間が相対的に長くなる傾向にある。また、近年では、１つのＣＰＵダイに複数のＣＰＵコアを搭載するマルチコアプロセッサが増加している。しかしながら、このような場合には、コアを跨いだコンテキスト切り替えが発生した場合、レジスタに比べて低速なキャッシュメモリや外部メモリを経由して転送が行われるため、効率向上の阻害要因となっている。
【０００３】
これに対し、特許文献１では、上記アクセス時間に低減を図るべく、プロセッサにメモリよりも高速アクセス可能なメモリであるレジスタ退避用スタックを備えている。これにより、レジスタの内容の退避と復帰を高速に行っている。
【０００４】
【特許文献１】特開平９−２２３５５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
一方で、タイムシェアリングシステムにおいては、特定タスクによるプロセッサ利用の独占（スタベーション）を避けるため、優先順位が高いタスクが存在している状況で、優先順位の低いタスクに対してプロセッサの割り当て時間（タイムクォンタム）を意図的に割り当てることがある（エージング）。ところが、上述したスタックメモリを用いた先入れ後出し（ＦＩＬＯ／スタック）のコンテキスト切り替えでは、エージングを行うことができないため、選択的にコンテキスト切り替えを行うことができない。従って、結果として、処理の高速化を図ることができない、という問題があった。そして、このことは、マルチコアプロセッサにおいて、コアを跨いだコンテキスト切り替えが発生した場合には、処理の遅延が顕著である。
【０００６】
このため、本発明の目的は、上述した課題である、処理の高速化を図ることができるデータ処理装置を提供する、ことにある。
【課題を解決するための手段】
【０００７】
そこで、本発明の一形態であるデータ処理装置は、
演算器と、当該演算器にて処理されるデータを格納するレジスタと、当該レジスタに格納されているデータの退避先となるキャッシュメモリよりもレジスタに対して高速にアクセス可能なレジスタキャッシュと、演算器がキャッシュメモリに対してアクセスしていないときにレジスタキャッシュに記憶されたデータをキャッシュメモリに記憶するメモリバスアービタと、レジスタに対するデータの入出力を制御する制御部と、を備え、
上記レジスタキャッシュは、レジスタに格納されているデータの書き出し要求に応じて当該レジスタから出力されたデータを記憶する機能を有すると共に、レジスタへのデータの復元要求に応じてレジスタキャッシュ内に記憶されたデータのうち当該復元要求されたデータを選択してレジスタに復元する機能を有する、という構成を採る。
【０００８】
また、本発明の他の形態であるデータ処理方法は、
演算器と、当該演算器にて処理されるデータを格納するレジスタと、当該レジスタに格納されているデータの退避先となるキャッシュメモリよりもレジスタに対して高速にアクセス可能なレジスタキャッシュと、演算器がキャッシュメモリに対してアクセスしていないときにレジスタキャッシュに記憶されたデータをキャッシュメモリに記憶するメモリバスアービタと、レジスタに対するデータの入出力を制御する制御部と、を備えたデータ処理装置におけるデータ処理方法であって、
レジスタに格納されているデータの書き出し要求に応じて当該レジスタから出力されたデータをレジスタキャッシュに記憶し、レジスタへのデータの復元要求に応じてレジスタキャッシュ内に記憶されたデータのうち当該復元要求されたデータを選択してレジスタに復元する、
という構成を採る。
【発明の効果】
【０００９】
本発明は、以上のように構成されることにより、レジスタから出力されたデータを、キャッシュメモリよりも高速アクセス可能なレジスタキャッシュから所望のデータを復元させることができ、処理の高速化を図ることができる、という優れた効果を有する。
【発明を実施するための最良の形態】
【００１０】
本発明は、演算器とレジスタとを備えたマイクロプロセッサの処理をより高速にするものであり、特に、演算器及びレジスタにより構成されたコアを複数備えたマルチコアプロセッサに好適である。
【００１１】
そして、本発明の一形態であるデータ処理装置は、
演算器と、当該演算器にて処理されるデータを格納するレジスタと、当該レジスタに格納されているデータの退避先となるキャッシュメモリよりもレジスタに対して高速にアクセス可能なレジスタキャッシュと、演算器がキャッシュメモリに対してアクセスしていないときにレジスタキャッシュに記憶されたデータをキャッシュメモリに記憶するメモリバスアービタと、レジスタに対するデータの入出力を制御する制御部と、を備え、
上記レジスタキャッシュは、レジスタに格納されているデータの書き出し要求に応じて当該レジスタから出力されたデータを記憶する機能を有すると共に、レジスタへのデータの復元要求に応じてレジスタキャッシュ内に記憶されたデータのうち当該復元要求されたデータを選択してレジスタに復元する機能を有する、
という構成を採っている。
【００１２】
上記発明によると、まず、演算器にて処理されるレジスタに格納されたデータは、メモリバスアービタを介してキャッシュメモリに退避されるか、あるいは、当該キャッシュメモリよりも高速にアクセス可能なレジスタキャッシュに記憶される。なお、レジスタキャッシュに記憶されたデータは、メモリバスアービタによって演算器がキャッシュメモリに対してアクセスしていないときに当該キャッシュメモリに記憶される。
【００１３】
そして、上記レジスタキャッシュは、レジスタに格納されているデータの書き出し要求があると、当該レジスタから出力されたデータを記憶する。その後、レジスタキャッシュは、レジスタへのデータの復元要求があると、当該復元要求されたデータがレジスタキャッシュ内に記憶されているか否かを検索し、該当するデータがあると、かかるデータを選択してレジスタに復元する。
【００１４】
以上により、演算器は、レジスタから出力されたデータを、キャッシュメモリを介することなく、当該キャッシュメモリよりも高速アクセス可能なレジスタキャッシュから所望のデータを復元させることができる。従って、処理の高速化を図ることができる。特に、演算器とレジスタとによって構成されるコアを複数装備したマルチコアプロセッサに適用することで、コア間を跨ぐデータの移動がレジスタキャッシュを介して実行されるため、処理のさらなる高速化を実現できる。
【００１５】
そして、具体的には、上記レジスタキャッシュは、レジスタから出力されたデータを記憶するキャッシュ領域と、当該各キャッシュ領域にそれぞれ対応するタグ領域と、を有しており、書き出し要求時に、レジスタから出力されたデータをキャッシュ領域に記憶すると共に、当該キャッシュ領域に対応するタグ領域に当該データを特定するデータ特定情報を記憶する機能と、復元要求時に、タグ領域に記憶されたデータ特定情報に基づいて当該復元要求されたデータが記憶されたキャッシュ領域を選択して、当該キャッシュ領域内のデータをレジスタに復元する機能を有する、という構成を採る。
【００１６】
また、上記レジスタキャッシュは、書き出し要求時に、指定された書き出し先アドレス情報をデータ特定情報としてタグ領域に記憶し、復元要求時に、指定された復元要求アドレス情報と一致する書き出し先アドレス情報が記憶されたタグ領域に対応するキャッシュ領域を選択して当該キャッシュ領域内のデータをレジスタに復元する、という構成を採る。
【００１７】
さらに、上記レジスタキャッシュは、書き出し要求時に、レジスタから出力されたデータを記憶したキャッシュ領域に対応するタグ領域にデータ記憶フラグを記憶し、復元要求時に、データ記憶フラグが設定されているタグ領域に記憶されたデータ特定情報に基づいて当該復元要求されたデータが記憶されたキャッシュ領域を選択する、という構成を採る。そして、上記タグ領域は、例えば、リングバッファである。
【００１８】
このように、レジスタキャッシュ内に記憶するデータを、当該データを特定するデータ特定情報を格納するタグを用いて管理することで、スタックメモリ方式とは異なり、任意のデータを選択して復元することが容易となる。
【００１９】
さらに、具体的には、上記レジスタキャッシュは、レジスタから出力されるデータを次に記憶するキャッシュ領域に対応するタグ領域を指定する出力先ポインタと、復元要求時に当該復元要求されたデータに対応するデータ特定情報が記憶されているか否かを検索する対象となるタグ領域を指定する検索対象ポインタと、を有し、復元要求時に、各タグ領域上を検索対象ポインタを走査させて、当該各タグ領域内に復元要求されたデータに対応するデータ特定情報が記憶されているか否かを検索する。
【００２０】
そして、上記レジスタキャッシュは、復元要求時に、出力先ポインタが指定する次の前記タグ領域から検索対象ポインタを走査して、各タグ領域内に復元要求されたデータに対応するデータ特定情報が記憶されているか否かを検索する。あるいは、レジスタキャッシュは、タグ領域のうちデータ特定情報が最も早く記憶されたタグ領域を指定するデータ記憶ポインタを有しており、復元要求時に、データ記憶ポインタが指定するタグ領域から検索対象ポインタを走査して、各タグ領域内に復元要求されたデータに対応するデータ特定情報が記憶されているか否かを検索する、という構成を採る。
【００２１】
このとき、上記レジスタキャッシュは、出力先ポインタあるいはデータ記憶ポインタが指定するタグ領域を追い越すまで検索対象ポインタを走査して、各タグ領域内に復元要求されたデータに対応するデータ特定情報が記憶されているか否かを検索する、という構成を採る。このようにすることで、データの検索をさらに高速に実現できる。
【００２２】
以下、本発明の具体的な構成及び動作を、実施形態にて説明する。なお、実施形態では、本発明であるデータ処理装置が２つのコアを有するマルチコアプロセッサである場合を例示して説明するが、コアの数は２つに限定されず、それ以上であってもよく、あるいは、１つのコアのみのプロセッサに適用してもよい。また、実施形態では、レジスタに入出力されるデータの一例として、コンテキストを例示しているが、これに限定されず、いかなるデータであってもよい。
【００２３】
＜実施形態１＞
本発明の第１の実施形態を、図１乃至図１４を参照して説明する。図１は、データ処理装置の構成を示すブロック図である。図２乃至図４は、レジスタキャッシュバンクの構成を示す概略図である。図５乃至図８は、データ処理装置の動作を示すフローチャートである。図９乃至図１４は、レジスタキャッシュバンクの具体的な構成及び動作を示す図である。
【００２４】
［構成］
図１に示すように、本実施形態におけるデータ処理装置は、コアＡとコアＢとを備えたマルチコアプロセッサである。具体的に、データ処理装置は、発信器１００と、制御回路１０１と、演算器１０２及びレジスタ１０３を有するＣＰＵコアＡと、演算器１０４及びレジスタ１０５を有するＣＰＵコアＢと、レジスタキャッシュバンク１０６と、メモリバスアービタ１０７と、を備えている。なお、上記発信器１００は、本装置の外部に設けられていてもよい。また、本装置の外部に、メモリバスアービタ１０７を介してキャッシュメモリ１０８が接続されている。
【００２５】
そして、上記発信器１０１からの信号は、当該発信器１０１に設けられた出力端子１より出力され、制御回路１０１の入力端子２、ＣＰＵコアＡ，Ｂにそれぞれ内蔵されている各レジスタ１０３，１０５の各入力端子３，３’、レジスタキャッシュバンク１０６の入力端子８、メモリバスアービタ１０７の入力端子１４、にそれぞれ供給される。これにより、上記各回路は、発信器１００からのクロック信号に同期して動作する。
【００２６】
上記レジスタ１０３，１０５は、各レジスタが装備されているＣＰＵコアＡ，Ｂの演算器１０２，１０４がそれぞれ演算を行うときに用いられるデータを保存する。
【００２７】
上記制御回路１０１（制御部）は、上記レジスタ１０３，１０４に対するデータの入出力を制御する。具体的には、レジスタ１０３，１０５のデータを、レジスタキャッシュバンク１０６またはキャッシュメモリ１０８のどちらに書き出すかを制御する書き出し先制御信号と、書き出し先アドレスを指定する書き出し先アドレス信号とを、出力端子５から出力する。すると、制御回路１０１の出力端子５より出力された書き出し先制御信号と、書き出し先アドレス信号とは、メモリバスアービタ１０７の入力端子１３と、レジスタキャッシュバンク１０６の入力端子７と、にそれぞれ入力される。
【００２８】
また、各レジスタ１０３，１０５に格納されているデータは、各出力端子６，６’より出力され、メモリバスアービタ１０７の入力端子１２と、レジスタキャッシュバンク１０６の入力端子１０と、に入力される。
【００２９】
そして、上記レジスタキャッシュバンク１０６は、その入力端子７に、制御回路１０１からの書き出し先制御信号により、書き出し先がレジスタキャッシュバンクである旨の信号を入力されると、当該信号が入力されたタイミングで入力端子１０に入力されているレジスタから出力されたデータを、レジスタキャッシュバンク１０６内に保存する。なお、レジスタ１０３，１０５とレジスタキャッシュバンク１０６とは、十分に高速なバス、つまり、キャッシュメモリ１０８にアクセスするよりも高速なバスで接続されている。
【００３０】
また、レジスタキャッシュバンク１０６は、それ固有のアルゴリズムにより入力されたデータを管理し、レジスタ１０３，１０５からのデータが記録しきれなくなると、キャッシュメモリ１０８に出力していない未出力のデータをキャッシュメモリ１０８に出力するまで待機する。なお、上述したレジスタキャッシュバンク１０６の動作は、予め組み込まれた回路によって実現されたり、あるいは、プログラムが組み込まれることによって実現されてもよい。
【００３１】
また、メモリバスアービタ１０７は、ＣＰＵコアＡ，Ｂとキャッシュメモリ１０８との帯域に余裕ができ次第、つまり、ＣＰＵコアＡ，Ｂがキャッシュメモリ１０８にアクセスしていないときに、レジスタキャッシュバンク１０６に記憶されている上記未出力データを、キャッシュメモリ１０８に出力する。
【００３２】
ここで、上記ＣＰＵコアＡ，Ｂは、現在の動作状況を保存・復元するために、全てのレジスタの内容をキャッシュメモリ１０８に出力する命令が実装される場合がある。この命令による処理に対して、上記レジスタキャッシュバンク１０６は、全てのレジスタ１０３，１０５の内容を一時的に記録する。そして、レジスタキャッシュバンク１０６は、記録した全てのレジスタ１０３，１０５からのデータを、制御回路１０１あるいはレジスタ１０３，１０５がメモリバスアービタ１０７にデータを出力していない間に、キャッシュメモリ１０８に出力する。
【００３３】
また、上述したように、メモリバスアービタ１０７は、制御回路１０１あるいはレジスタ１０３，１０５からキャッシュメモリ１０８への入出力がある場合には、その動作を優先して実行する。一方で、それ以外の場合には、レジスタキャッシュバンク１０６に記憶されている未出力データを、キャッシュメモリ１０８に出力するよう作動する。
【００３４】
このようにして、レジスタキャッシュバンク１０６に記憶されたレジスタ１０３，１０５から出力されたデータは、制御回路１０１、レジスタ１０３，１０５の動作とは独立して、キャッシュメモリ１０８に出力される。
【００３５】
次に、上記レジスタキャッシュバンク１０６の構成について、図２乃至図４を参照して説明する。まず、図２に示すように、レジスタキャッシュバンク１０６は、レジスタから出力されたデータを保存する「レジスタキャッシュ」（０〜７）（キャッシュ領域）、各レジスタキャッシュに対応して用意され当該各レジスタキャッシュの有効／無効とキャッシュ先のアドレスを保持する「タグ」（０〜７）（タグ領域）、を有する。また、レジスタから出力されるデータを次に書き込むレジスタキャッシュに対応するタグをポイント（指定）する「カウンタ１」（出力先ポインタ）、キャッシュメモリ１０８またはメインメモリに書き出しが完了している最新のタグをポイントしている「カウンタ２」（書き出し完了ポインタ）、レジスタキャッシュバンク１０６からレジスタ１０３，１０５へ復元するデータを記憶しているレジスタキャッシュを検索するために走査するタグをポイントする「カウンタ３」（検索対象ポインタ）、を有する。ここで、上記タグは、リングバッファの形態を採っている。但し、タグは、必ずしもリングバッファ形態であることに限定されず、例えば、タグとレジスタキャッシュが関連付けられた構成であってもよく、さらには、必ずしもタグとレジスタキャッシュとを有していることにも限定されない。
【００３６】
そして、かかる構成のレジスタキャッシュバンク１０６は、以下のように作動するよう構成されている。ここで、上述したように、発信器１００の出力端子１から出力されたクロックパルス信号に同期して、制御回路１０１の出力端子５からは、キャッシュメモリ１０８に書き出すデータの出力元を制御する信号が出力される。この出力端子５からの信号は、レジスタキャッシュバンク１０６の入力端子７とメモリバスアービタ１０７の入力端子１３に入力されることで、キャッシュメモリ１０８に書き出されるデータの出力元が、レジスタ１０３，１０５かレジスタキャッシュバンク１０６かが決定される。つまり、レジスタ１０３，１０５から出力されるデータの書き出し先が、レジスタキャッシュバンク１０６であるか、キャッシュメモリ１０８であるか、を指定する書き出し要求が出力される。また、制御回路１０１の出力端子５から出力されているデータの書き出し先アドレス情報は、レジスタキャッシュバンク１０６の入力端子７とメモリバスアービタ１０７の入力端子１３に入力され、その内容は、キャッシュメモリ１０８にデータを書き出す際に、書き出し先アドレス情報（データ特定情報）として利用される。
【００３７】
このように、制御回路１０１からレジスタキャッシュバンク１０６を書き出し先として指定する書き出し要求が出された場合には、レジスタキャッシュバンク１０６は、レジスタ１０３，１０５からのデータを所定のレジスタキャッシュに記憶すると共に、このレジスタキャッシュに対応するタグに、「書き出し先アドレス」とデータが記憶されている旨を表すフラグとなる「有効」を記憶する。このとき、具体的には、「カウンタ１」で指定されているタグに、上記「書き出し先アドレス」と「有効」を記憶し、当該タグに対応するレジスタキャッシュに、レジスタ１０３，１０５からのデータを記憶する。そして、「カウンタ１」を一つ先のタグに進める。
【００３８】
また、レジスタキャッシュバンク１０６は、レジスタキャッシュに記憶されているデータがいっぱいになると、上述したようにメモリバスアービタ１０７によって、レジスタキャッシュに記憶されているデータをキャッシュメモリ１０８に書き出す。そして、「カウンタ２」に、書き出しが完了したレジスタキャッシュに対応するタグを指定するよう設定する。
【００３９】
また、レジスタキャッシュバンク１０６は、制御回路１０１から、レジスタ１０３，１０５へのデータの復元要求があると、当該復元要求にかかるデータをレジスタキャッシュ１０６内から選択して、レジスタ１０３，１０５にロードして復元する機能を有する。具体的には、復元するデータを特定するアドレスとなる復元要求アドレスを受けると、「カウンタ３」を「カウンタ１」が指すタグの１つ先のタグを指定するよう設定し、このタグからタグ番号が増える順にタグを走査して、復元対象となるデータが格納されているレジスタキャッシュに対応するタグを検索する。なお、タグ番号７の次は、タグ番号０に戻って走査する。そして、各タグに対して、タグ内のフラグが「有効」であるか否かを調べ、「有効」であるタグ内に、復元要求アドレスと一致する書き出し先アドレスが存在するタグに対応するレジスタキャッシュに格納されたデータを選択する。そして、選択したデータを、レジスタ１０３，１０５に復元する。なお、「カウンタ３」にてタグを走査して検索する処理は、例えば、目的のデータが選択されるまで、あるいは、「カウンタ１」を指すタグを追い越すまで、順番にタグを走査して行われる。但し、上述した走査は、必ずしも上述したように「カウンタ１」の１つ先のタグから開始されることに限定されず、いかなるタグから行ってもよく、また、いかなる順番で検索を行ってもうよい。
【００４０】
［動作］
次に、上述したデータ処理装置の動作を、図２乃至図８を参照して説明する。図２乃至図４は、レジスタキャッシュバンク１０６の動作を説明する図であり、図５乃至図８は、各構成の動作を示すフローチャートである。
【００４１】
まず、図２は、レジスタキャッシュバンク１０６の初期状態を図示したものである。そして、上述したように、制御回路１０１からの書き出し要求があると、レジスタキャッシュバンク１０６のカウンタ１が指すタグが「無効」になっているレジスタキャッシュに（図６のステップＳ１１でＮｏ）、レジスタ１０３，１０５から出力されたデータを記憶する（図６のステップＳ１２）。つまり、図２の例では、カウンタ１が指すタグ０に対応するレジスタキャッシュ０にデータを記憶し、そのタグのフラグを「有効」に更新する（図６のステップＳ１３）。そして、その後、図３に示すように、カウンタ１を１つ先に進める（図６のステップＳ１４）。一方、カウンタ１が指すタグのフラグが「有効」になっている場合には（図６のステップＳ１１でＹｅｓ）、レジスタキャッシュがいっぱいになっている可能性があるため、レジスタキャッシュの内容をキャッシュメモリ１０８に出力する（図６のステップＳ１５）。
【００４２】
なお、上述したようにレジスタキャッシュバンク１０６からキャッシュメモリ１０８にデータを出力するときの動作は、例えば、図７のようになる。つまり、データがいっぱいになった場合には、カウンタ２が指すタグのフラグが「有効」であるかを調べ、「有効」であるタグに対応するレジスタキャッシュ内のデータを（図７のステップＳ２１でＹｅｓ）、キャッシュメモリ１０８に出力する（図７のステップＳ２２）。そして、このレジスタキャッシュに対応するタグのフラグを「無効」に更新し（図７のステップＳ２３）、図４に示すように、カウンタ２を１つ進める（図７のステップＳ２４）。
【００４３】
また、上記レジスタキャッシュバンク１０６からキャッシュメモリ１０８へのデータの出力は、メモリバスアービタ１０７によって行われるが、このメモリバスアービタ１０７の動作を図５に示す。まず、上述した制御回路１０１からの指令により、レジスタ１０３，１０５からキャッシュメモリ１０８に書き出すデータがある場合には（図５のステップＳ１でＹｅｓ）、当該レジスタ１０３，１０５からのデータをキャッシュメモリ１０８に出力する（図５のステップＳ２）。一方、レジスタ１０３，１０５からキャッシュメモリ１０８に書き出すデータがないときに（図５のステップＳ１でＮｏ）、レジスタキャッシュバンク１０６からキャッシュメモリ１０８に出力するデータがある場合には（図５のステップＳ３でＹｅｓ）、当該レジスタキャッシュバンク１０６からデータをキャッシュメモリ１０８に出力する（図５のステップＳ４）。
【００４４】
次に、制御回路１０１あるいはＣＰＵコアＡ，Ｂから、データの復元要求があった場合について説明する。まず、レジスタキャッシュバンク１０６は、カウンタ３にカウンタ１の先のタグのデータをコピーする（図８のステップＳ３１）。そして、カウンタ３が指すタグのフラグが「有効」であるか否かを調べ（図８のステップＳ３２）、「有効」であるタグに対して（図８のステップＳ３２でＹｅｓ）、当該タグに記憶されている書き出し先アドレスと、復元要求にかかるデータを特定する復元要求アドレスとが一致するか否かを調べる（図８のステップＳ３３）。このとき、一致しない場合には（図８のステップＳ３３でＮｏ）、カウンタ３を１つ進めて（図８のステップＳ３４）、上述同様に、次のタグの内容を調べる。そして、アドレスが一致するタグがあると（図８のステップＳ３３でＹｅｓ）、そのタグに対応するレジスタキャッシュに記憶されているデータを、レジスタ１０３，１０５に出力して復元する（図８のステップＳ３６）。一方、復元要求にかかるデータがレジスタキャッシュバンク１０６に存在しない場合には（図８のステップＳ３２でＮｏ）、キャッシュメモリ１０８あるいはメインメモリから復元要求にかかるデータを読み出して、レジスタ１０３，１０５に復元する（図８のステップＳ３５）。
【００４５】
［動作の具体例］
次に、ＣＰＵコアＡ，Ｂで実行されるコンテキストが切り替わるときの動作を、図９乃至図１４を参照して説明する。
【００４６】
まず、レジスタキャッシュバンク１０６の初期状態を図９に示す。この状態では、レジスタキャッシュは空であり、タグのフラグも全て「無効」となっている。
【００４７】
そして、今、ＣＰＵコアＡまたはＣＰＵコアＢで実行されているコンテキストがＷであり、コンテキストの切り替えが発生したとする。具体的に、コンテキストがＷからＸに変化したとき、コンテキストＸのレジスタ１０３，１０５のデータは、出力端子６または６’からレジスタキャッシュバンク１０６の入力端子１０とメモリバスアービタ１０７の入力端子１２に入力される。ここで、制御回路１０１の出力端子５から、レジスタ１０３，１０５のデータ出力先がレジスタキャッシュバンク１０６である旨と、書き出し先アドレスとが、レジスタキャッシュバンク１０６の入力端子７とメモリバスアービタ１０７の入力端子１３に出力されていることとする。すると、レジスタ１０３，１０５のデータは、レジスタキャッシュバンク１０６のカウンタ１が指し示すタグに対応するレジスタキャッシュにコピーされ、タグに書き出し先アドレスを記録してタグが「有効」であるフラグをセットする。これにより、図１０に示すように、タグ０には、上記レジスタ１０３，１０５から出力されたデータの書き出し先アドレスと、当該タグ０が「有効」である旨のフラグが記憶され、また、カウンタ１が次のタグであるタグ１に進む。
【００４８】
その後、ＣＰＵコアＡ又はＣＰＵコアＢのコンテキストがＸからさらにＹに切り替わると、上述同様の処理が実行され、図１１に示すように、タグ１に、「有効」のフラグと書き出し先アドレスが記憶される。そして、カウンタ１が次のタグであるタグ２に進む。さらに、ＣＰＵコアＡ又はＣＰＵコアＢのコンテキストがＹからＺに切り替わると、上述同様の処理が実行され、図１２に示すように、タグ２に、「有効」のフラグと書き出し先アドレスが記憶される。そして、カウンタ１が次のタグであるタグ３に進む。このように、コンテキストが切り替わり、レジスタ１０３，１０５からデータの出力がある度に、上記動作を繰り返す。
【００４９】
その後、ＣＰＵコアＡ又はＣＰＵコアＢのコンテキストがコンテキストＹに切り替わり、データの復元要求があると、まず、図１３に示すように、カウンタ３にカウンタ１の次のタグのデータがコピーされる。その後、カウンタ３の指し示すタグの有効・無効をチェックし、「有効」であれば、当該タグに格納されている書き出し先アドレスが復元要求されたコンテキストＹの復元要求アドレスと一致するかどうかチェックする。このとき、タグ内の書き出し先アドレスが復元要求されたコンテキストＹの復元要求アドレスと一致しない場合には、図１４に示すように、カウンタ３を１つ進めて、再度タグの有効・無効とアドレスのチェックを行う。そして、タグが有効でアドレスが一致しているタグが見つかると、当該タグに対応するレジスタキャッシュのデータを選択して、出力端子９からレジスタ１０３，１０５の入力端子４または４’にロードする。なお、上記タグの走査は、タグとアドレスが一致するか、カウンタ３がカウンタ１を追い越すまで行われる。そして、アドレスが一致するタグが見つからなかった場合には、レジスタキャッシュバンク１０６上に復元要求にかかるコンテキストがキャッシュされていないものとして、キャッシュメモリ１０８やメインメモリからレジスタにデータをロードする。
【００５０】
以上のように、本発明によると、演算器１０２，１０４は、レジスタ１０３，１０５から出力されたデータを、キャッシュメモリ１０８を介することなく、当該キャッシュメモリ１０８よりも高速アクセス可能なレジスタキャッシュバンク１０６から所望のデータを復元させることができる。従って、処理の高速化を図ることができる。特に、上述したようなＣＰＵコアを複数装備したマルチコアプロセッサに適用することで、コア間を跨ぐデータの移動が、高速アクセス可能なレジスタキャッシュバンク１０６を介して実行されるため、処理のさらなる高速化を実現できる。さらに、レジスタキャッシュバンク１０６内で、レジスタキャッシュに格納するデータをタグを用いて管理することで、スタックメモリ方式とは異なり、任意のデータを選択して復元することが容易となる。
【００５１】
ここで、上述したレジスタキャッシュバンク１０６に、高速なメモリ、マルチポートＲＡＭ、非同期回路などを用いることで、より一層の高速化や低電力化を図ることができる。加えて、上記発信器１００を外部に設置したり複数個設置したりすることでも、より一層の高速化や低電力化を図ることができる。
【００５２】
また、上記では、「カウンタ３」にて「カウンタ１」の次のタグを指定して、このタグから走査を開始する場合を例示したが、これに限定されない。例えば、現在「有効」となっているタグのうち、最も早く「有効」となったタグを記憶する「カウンタ４」（データ記憶ポインタ）をレジスタキャッシュバンク１０６に実装し、当該「カウンタ４」に「カウンタ３」を当てて、タグの走査を開始してもよい。例えば、「カウンタ４」は、カウンタ２の一つ先のタグを指定することで、現在記憶しているもののうち、最も早く「有効」となったタグを記憶することができる。そして、この場合には、「カウンタ３」が「カウンタ４」を追い越すまで検索が実行される。
【産業上の利用可能性】
【００５３】
本発明は、マルチコアプロセッサをはじめ、種々のプロセッサに利用することができ、産業上の利用可能性を有する。
【図面の簡単な説明】
【００５４】
【図１】データ処理装置の構成を示すブロック図である。
【図２】レジスタキャッシュバンクの構成を示す概略図である。
【図３】レジスタキャッシュバンクの構成を示す概略図である。
【図４】レジスタキャッシュバンクの構成を示す概略図である。
【図５】データ処理装置の動作を示すフローチャートである。
【図６】データ処理装置の動作を示すフローチャートである。
【図７】データ処理装置の動作を示すフローチャートである。
【図８】データ処理装置の動作を示すフローチャートである。
【図９】レジスタキャッシュバンクの具体的な動作を説明する説明図である。
【図１０】レジスタキャッシュバンクの具体的な動作を説明する説明図である。
【図１１】レジスタキャッシュバンクの具体的な動作を説明する説明図である。
【図１２】レジスタキャッシュバンクの具体的な動作を説明する説明図である。
【図１３】レジスタキャッシュバンクの具体的な動作を説明する説明図である。
【図１４】レジスタキャッシュバンクの具体的な動作を説明する説明図である。
【符号の説明】
【００５５】
１００  発信器
１０１  制御回路
１０２，１０４  演算器
１０３，１０５  レジスタ
１０６  レジスタキャッシュバンク
１０７  メモリバスアービタ
１０８  キャッシュメモリ
Ａ，Ｂ  ＣＰＵコア
【図１】
2009199384.tif 000003
【図２】
2009199384.tif 000004
【図３】
2009199384.tif 000005
【図４】
2009199384.tif 000006
【図５】
2009199384.tif 000007
【図６】
2009199384.tif 000008
【図７】
2009199384.tif 000009
【図８】
2009199384.tif 000010
【図９】
2009199384.tif 000011
【図１０】
2009199384.tif 000012
【図１１】
2009199384.tif 000013
【図１２】
2009199384.tif 000014
【図１３】
2009199384.tif 000015
【図１４】
2009199384.tif 000016