(57)【要約】【課題】  キャッシュメモリにおける消費電力を低減し、処理効率の向上を図ること。【解決手段】  情報処理装置１は、読み出し対象であるデータがプロセッサから読み出されている際に、引き続いて読み出されると予想されるデータがキャッシュされているか否かを検出する。そして、引き続いて読み出されると予想されるデータがキャッシュに記憶されている場合、そのデータを先読みキャッシュ部３０に記憶し、引き続いて読み出されると予想されるデータがキャッシュに記憶されていない場合、そのデータをメインメモリ７から読み出し、先読みキャッシュ部３０に記憶する。その後、引き続くサイクルでプロセッサから実際に読み出されたデータのアドレスが、先読みキャッシュ部３０に記憶されたデータのアドレスと一致する場合、そのデータを先読みキャッシュ部３０からプロセッサに出力する。【選択図】  図２
2006139646.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサ外部に備えられる第１のメモリと、前記第１のメモリと前記プロセッサとの間に備えられ、前記第１のメモリに記憶されているデータの少なくとも一部を複数のウェイにキャッシュしておくことが可能なキャッシュメモリと、前記プロセッサによって前記第１のメモリより高速にアクセス可能な第２のメモリとを含むデータ転送装置であって、
前記第１のメモリから前記第２のメモリへのデータの読み出し命令あるいは前記第２のメモリから前記第１のメモリへのデータの書き込み命令の少なくともいずれかを、前記キャッシュメモリに出力することにより、前記第１のメモリと前記第２のメモリとの間で前記プロセッサを介さずにデータ転送を行うアクセス制御手段と、
前記アクセス制御手段が読み出しあるいは書き込みを行っているアクセス中データの後にアクセスされると予想される予定データが、前記キャッシュメモリのいずれかのウェイにキャッシュされているか否かを判定するキャッシュ判定手段と、
前記キャッシュ判定手段によって、前記予定データがいずれかのウェイにキャッシュされていると判定された場合に、前記複数のウェイのうち、該予定データが記憶されているウェイにアクセスし、該予定データを読み出して記憶する先読みキャッシュ手段と、
を含み、  
前記先読みキャッシュ手段は、前記アクセス中データの後に前記予定データ対象とする読み出し命令が入力された場合、記憶している予定データを前記アクセス制御手段に出力し、前記アクセス中データの後に前記予定データを対象とする書き込み命令が入力された場合、該予定データに対して書き込みを行うことを特徴とするデータ転送装置。
【請求項２】
前記キャッシュメモリは、前記複数のウェイについて、キャッシュしているデータのアドレスを格納しているアドレス記憶手段と、該アドレスそれぞれに対応するデータを記憶しているデータ記憶手段とを含み、
前記キャッシュ判定手段は、前記アドレス記憶手段のいずれかのウェイに、前記予定データのアドレスが記憶されているか否かによって、該予定データがキャッシュされているか否かを判定し、
前記先読みキャッシュ手段は、前記データ記憶手段の複数のウェイのうち、前記予定データのアドレスを記憶している前記アドレス記憶手段のウェイに対応するウェイにアクセスすることを特徴とする請求項１記載のデータ転送装置。
【請求項３】
前記予定データは、前記アクセス中データの直後に読み出しあるいは書き込みが行われると予想されるデータであることを特徴とする請求項１または２記載のデータ転送装置。
【請求項４】
前記アクセス制御手段のアクセス対象となるデータは、複数のワードを含むブロックとして構成され、該ブロックを単位として、前記予定データがキャッシュされているか否かの判定あるいは前記予定データの読み出しあるいは書き込みを行うことを特徴とする請求項１から３のいずれか１項に記載のデータ転送装置。
【請求項５】
前記キャッシュ判定手段は、前記アクセス中データを構成する複数のワードのうち、前記アクセス制御手段が末尾のワードの読み出しあるいは書き込みを指示することに対応して、前記予定データがキャッシュされているか否かを判定することを特徴とする請求項４記載のデータ転送装置。
【請求項６】
前記キャッシュ判定手段は、前記アクセス中データを構成する複数のワードのうち、前記アクセス制御手段が末尾のワードに先行するワードの読み出しあるいは書き込みを指示することに対応して、前記予定データがキャッシュされているか否かを判定することを特徴とする請求項４記載のデータ転送装置。
【請求項７】
前記先読みキャッシュ手段は、前記キャッシュ判定手段によって、前記予定データがいずれかのウェイにキャッシュされていると判定された場合に、前記アクセス中データを構成する複数のワードのうち、前記アクセス制御手段が末尾のワードの読み出しあるいは書き込みを指示することに対応して、該予定データが記憶されているウェイにアクセスし、該予定データの読み出しあるいは書き込みを行うことを特徴とする請求項６記載のデータ転送装置。
【請求項８】
前記キャッシュメモリにおける複数のウェイのうち、データのアクセスに関係しないウェイを低消費電力で動作させる低消費電力化手段をさらに含むことを特徴とする請求項１から７のいずれか１項に記載のデータ転送装置。
【請求項９】
前記低消費電力化手段は、データのアクセスに関係しないウェイに対し、クロック信号を供給しないように制御するクロックゲーティング機能を備えることを特徴とする請求項８記載のデータ転送装置。
【請求項１０】
前記キャッシュメモリは、セット・アソシアティブ方式のキャッシュメモリであることを特徴とする請求項１から９のいずれか１項に記載のデータ転送装置。
【請求項１１】
前記先読みキャッシュ手段は、前記キャッシュ判定手段によって、前記キャッシュメモリのいずれのウェイにも前記予定データがキャッシュされていないと判定された場合、前記メモリデバイスにアクセスし、該予定データを読み出して記憶することを特徴とする請求項１から１０のいずれか１項に記載のデータ転送装置。
【請求項１２】
プロセッサ外部に備えられる第１のメモリと、前記第１のメモリと前記プロセッサとの間に備えられ、前記第１のメモリに記憶されているデータの少なくとも一部を複数のウェイにキャッシュしておくことが可能なキャッシュメモリと、前記プロセッサによって前記第１のメモリより高速にアクセス可能な第２のメモリとにおけるデータ転送方法であって、
前記第１のメモリから前記第２のメモリへのデータの読み出し命令あるいは前記第２のメモリから前記第１のメモリへのデータの書き込み命令の少なくともいずれかを、前記キャッシュメモリに出力することにより、前記第１のメモリと前記第２のメモリとの間で前記プロセッサを介さずにデータ転送を行うアクセス制御ステップと、
前記アクセス制御ステップにおいて読み出しあるいは書き込みが行われているアクセス中データの後にアクセスされると予想される予定データが、前記キャッシュメモリのいずれかのウェイにキャッシュされているか否かを判定するキャッシュ判定ステップと、
前記キャッシュ判定ステップにおいて、前記予定データがいずれかのウェイにキャッシュされていると判定された場合に、前記複数のウェイのうち、該予定データが記憶されているウェイにアクセスし、該予定データを読み出して記憶する先読みキャッシュステップと、
前記アクセス中データの後に前記予定データを対象とする読み出し命令が発行された場合、記憶している予定データを読み出させ、前記アクセス中データの後に前記予定データを対象とする書き込み命令が発行された場合、該予定データに対して書き込みを行うことを特徴とするデータ転送方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサとプロセッサ外部に備えられたメモリデバイスとの間におけるデータの転送を行うデータ転送装置およびデータ転送方法に関する。
【背景技術】
【０００２】
従来、プロセッサがメインメモリ等のメモリデバイス上のデータを読み出す処理を高速化するために、キャッシュメモリが用いられている。
キャッシュメモリは、プロセッサによって高速にデータを読み出すことが可能な記憶素子によって構成されている。そして、キャッシュメモリは、メモリデバイスに記憶されているデータ（以下、適宜「メモリデバイスデータ」と言う。）の一部を記憶しておき、プロセッサがメモリデバイスからデータの読み出しを行う場合に、そのデータがキャッシュメモリに記憶されているものであれば、キャッシュメモリから読み出すことによって、データを高速に読み出すことを可能としている。
【０００３】
ここで、キャッシュメモリの方式には種々のものがあるが、セット・アソシアティブ方式が一般的である。
セット・アソシアティブ方式とは、キャッシュメモリを複数の領域（ウェイ）に分割し、それぞれのウェイに、メモリデバイス上の異なるアドレスのデータを格納しておくことにより、ヒット率を向上させることができる方式である。
【０００４】
図１３は、従来のセット・アソシアティブ方式のキャッシュメモリ１００の構成を示す概略図である。
図１３において、キャッシュメモリ１００は、タグ・テーブル１１０と、データ・メモリ１２０と、ヒット検出部１３０と、マルチプレクサ（ＭＵＸ）１４０とを含んで構成される。なお、キャッシュメモリ１００においては、その記憶領域内に、複数Ｎ個の要素を記憶することが可能であり、これらの要素それぞれは“エントリ”と称される。また、キャッシュメモリ１００は、２ウェイのセット・アソシアティブ方式であり、各エントリには、それぞれ２つのメモリデバイスデータ（ウェイＡおよびウェイＢのデータ）が格納されている。
【０００５】
タグ・テーブル１１０は、データ・メモリ１２０におけるウェイＡ，Ｂそれぞれのメモリデバイスデータが、メモリデバイス上のいずれのアドレスに記憶されているものであるかを示すアドレス情報を記憶している。タグ・テーブル１１０に記憶されているアドレス情報は、後述するヒット検出部１３０によって参照され、キャッシュがヒットしたか否かの判定に用いられる。
【０００６】
データ・メモリ１２０は、アクセス頻度の高いデータ等、所定のメモリデバイスデータを記憶している。また、データ・メモリ１２０には、ウェイＡ，Ｂそれぞれに対応するメモリデバイスデータを記憶することが可能である。
ヒット検出部１３０は、プロセッサからの読み出し命令に対し、キャッシュメモリ１００に記憶されているメモリデバイスデータがヒットしたか否かを検出する。具体的には、タグ・テーブル１１０に記憶されたアドレス情報それぞれを参照し、プロセッサからの読み出し命令に示されたアドレスに対応するアドレス情報が検出されると、キャッシュがヒットしたものと判定する。そして、ヒット検出部１３０は、ヒットしたウェイを示す情報をＭＵＸ１４０に出力する。
【０００７】
ＭＵＸ１４０は、ヒット検出部１３０から入力されたウェイを示す情報に基づいて、データ・メモリ１２０から出力されるいずれかのメモリデバイスデータを選択し、プロセッサへの出力データ（プロセッサによって読み出されたデータ）とする。
ところで、プロセッサの中には、メインメモリ等、プロセッサ外部に備えられるメモリデバイスの他、そのメモリデバイスより高速にアクセス可能なローカルメモリをプロセッサ内部に備えるものがある。
【０００８】
そして、プロセッサ外部に備えられたメモリデバイスから一部のデータをローカルメモリに読み込み、高速に処理を行うことで、全体として処理効率の向上が図られている。
このとき、ローカルメモリと外部のメモリデバイスとの間におけるデータ転送を、プロセッサを介することなく行うために、ＤＭＡＣ（Direct Memory Access Controller）が備えられることがある。
【０００９】
ＤＭＡＣは、ローカルメモリと外部のメモリデバイスとの間でプロセッサを介することなくデータを転送することにより、プロセッサの処理負荷を軽減している。
ところが、キャッシュメモリを備えるプロセッサにおいては、キャッシュメモリに記憶されたデータと外部のメモリデバイスに記憶されたデータとが必ずしも一致していない場合がある。
【００１０】
したがって、ＤＭＡＣがアクセスする外部のメモリデバイス上のデータは、キャッシュメモリの内容が反映されておらず、無効なものとなる可能性がある。
そこで、ＤＭＡＣが外部のメモリデバイスにアクセスする場合に、キャッシュメモリを介してアクセスすることにより、プロセッサが外部のメモリデバイスにアクセスする場合と同様、最新のデータ（有効なデータ）を参照可能とすることが考えられる。
【００１１】
ここで、ＤＭＡＣを備える場合に、外部のメモリデバイスのデータとキャッシュメモリのデータとのコヒーレンシ（一致性）を保証するための技術として、特許文献１〜３に記載されたものが知られている。
【特許文献１】特開平８−６９４１０号公報
【特許文献２】特開平６−１２３６３号公報
【特許文献３】特開平８−１１５２６９号公報
【発明の開示】
【発明が解決しようとする課題】
【００１２】
しかしながら、上述のようなセット・アソシアティブ方式のキャッシュメモリにおいては、プロセッサからエントリ・アドレス（キャッシュメモリ内に記憶されているいずれかのエントリを選択するアドレス）が入力された場合、キャッシュメモリ１００の複数のウェイそれぞれについて、タグ・テーブル１１０およびデータ・メモリ１２０にアクセスを行い、データがヒットしたか否かが検出される。
【００１３】
そのため、仮にＤＭＡＣがキャッシュメモリ１００にアクセスした場合であっても、キャッシュメモリ１００内の不要な部分に対するアクセスが増加することとなり、消費電力の増加、あるいは、処理効率の低下を招くと言う問題があった。
なお、上述の公報に記載された技術は、ＤＭＡＣが外部のメモリデバイスにアクセスする場合に、キャッシュメモリを介してアクセスする上で生ずる上記問題を解決するものではなかった。
【００１４】
このように、ＤＭＡ（Direct Memory Access）を行う場合等、プロセッサを介することなくローカルメモリと外部のメモリデバイスとの間でデータ転送を行う場合に、キャッシュメモリに記憶されたデータとのコヒーレンシを保証しつつ、消費電力の増加、あるいは、処理効率の低下を防止することは困難であった。
本発明の課題は、プロセッサを介することなくローカルメモリと外部のメモリデバイスとの間でデータ転送を行う場合に、キャッシュメモリに記憶されたデータとのコヒーレンシを保証しつつ、消費電力の増加、あるいは、処理効率の低下を防止することである。
【課題を解決するための手段】
【００１５】
以上の課題を解決するため、本発明は、
プロセッサ外部に備えられる第１のメモリ（例えば、図１のメインメモリ７）と、前記第１のメモリと前記プロセッサとの間に備えられ、前記第１のメモリに記憶されているデータの少なくとも一部を複数のウェイにキャッシュしておくことが可能なキャッシュメモリ（例えば、図１のキャッシュメモリ５）と、前記プロセッサによって前記第１のメモリより高速にアクセス可能な第２のメモリ（例えば、図１のローカルメモリ３）とを含むデータ転送装置であって、前記第１のメモリから前記第２のメモリへのデータの読み出し命令あるいは前記第２のメモリから前記第１のメモリへのデータの書き込み命令の少なくともいずれかを、前記キャッシュメモリに出力することにより、前記第１のメモリと前記第２のメモリとの間で前記プロセッサを介さずにデータ転送を行うアクセス制御手段（例えば、図１のＤＭＡＣ４）と、前記アクセス制御手段が読み出しあるいは書き込みを行っているアクセス中データの後にアクセスされると予想される予定データが、前記キャッシュメモリのいずれかのウェイにキャッシュされているか否かを判定するキャッシュ判定手段（例えば、図２のアクセス管理部２０およびタグ・テーブル４０）と、前記キャッシュ判定手段によって、前記予定データがいずれかのウェイにキャッシュされていると判定された場合に、前記複数のウェイのうち、該予定データが記憶されているウェイにアクセスし、該予定データを読み出して記憶する先読みキャッシュ手段（例えば、図２のアクセス管理部２０および先読みキャッシュ部３０）とを含み、前記先読みキャッシュ手段は、前記アクセス中データの後に前記予定データ対象とする読み出し命令が入力された場合、記憶している予定データを前記アクセス制御手段に出力し、前記アクセス中データの後に前記予定データを対象とする書き込み命令が入力された場合、該予定データに対して書き込みを行うことを特徴としている。
【００１６】
このような構成により、第１のメモリと第２のメモリとの間でプロセッサを介さずにデータの転送を行う場合にも、キャッシュメモリを介してデータの転送が行われる。このキャッシュメモリにおいては、読み出し対象であるデータがアクセス制御手段によって読み出されている際に、引き続いて読み出されると予想されるデータがキャッシュされているか否かを検出する。そして、キャッシュメモリは、引き続いて読み出されると予想されるデータがキャッシュメモリに記憶されている場合、そのデータを先読みキャッシュ手段に記憶し、引き続いてＤＭＡＣから実際に読み出されたデータのアドレスが、先読みキャッシュ手段に記憶されたデータのアドレスと一致する場合、そのデータに対して読み出しあるいは書き込みが行われる。
【００１７】
そのため、アクセス制御手段から読み出しあるいは書き込み対象であるデータのアドレスが入力された場合に、キャッシュメモリは、キャッシュメモリの各ウェイに常にはアクセスする必要がなく、キャッシュメモリに読み出しあるいは書き込み対象であるデータが記憶されている場合にのみアクセスすれば足りる。
したがって、プロセッサを介することなく第１のメモリと第２のメモリとの間でデータ転送を行う場合に、キャッシュメモリに記憶されたデータとのコヒーレンシを保証しつつ、消費電力の増加、あるいは、処理効率の低下を防止することが可能となる。
【００１８】
また、前記キャッシュメモリは、前記複数のウェイについて、キャッシュしているデータのアドレスを格納しているアドレス記憶手段（例えば、図２のタグ・テーブル４０）と、該アドレスそれぞれに対応するデータを記憶しているデータ記憶手段（例えば、図２のデータ・メモリ５０）とを含み、前記キャッシュ判定手段は、前記アドレス記憶手段のいずれかのウェイに、前記予定データのアドレスが記憶されているか否かによって、該予定データがキャッシュされているか否かを判定し、前記先読みキャッシュ手段は、前記データ記憶手段の複数のウェイのうち、前記予定データのアドレスを記憶している前記アドレス記憶手段のウェイに対応するウェイにアクセスすることを特徴としている。
【００１９】
このような構成により、アドレス記憶手段にアクセスすることで、予定データがキャッシュにヒットするか否かを判定することができるため、キャッシュにヒットするか否かを判定する際にデータ記憶手段にアクセスすることによって発生する不要な消費電力を低減することが可能となる。また、データ記憶手段において、予定データが記憶されているウェイにのみアクセスすることができるため、さらに消費電力を低減することが可能となる。
【００２０】
また、前記予定データは、前記読み出し中データの直後に読み出しあるいは書き込みが行われると予想されるデータ（例えば、読み出し中データのアドレスに引き続くアドレスのデータ等）であることを特徴としている。
したがって、読み出し中データの次に読み出されると予想されるデータのみについて、キャッシュされているか否かおよび先読みキャッシュ手段への記憶等の処理を行えばよいため、処理効率を向上させることができる。
【００２１】
また、前記アクセス制御手段のアクセス対象となるデータは、複数のワードを含むブロックとして構成され、該ブロックを単位として、前記予定データがキャッシュされているか否かの判定あるいは前記予定データの読み出しあるいは書き込みを行うことを特徴としている。
このような構成により、複数のワードそれぞれについて、アクセス制御手段が読み出し命令あるいは書き込み命令を行う必要がなく、一つの命令でブロック全体を読み出すことあるいは書き込むことができるため、消費電力を低減することができると共に、処理効率を向上させることが可能となる。
【００２２】
また、前記キャッシュ判定手段は、前記アクセス中データを構成する複数のワードのうち、前記アクセス制御手段が末尾のワードの読み出しあるいは書き込みを指示することに対応して、前記予定データがキャッシュされているか否かを判定することを特徴としている。
一般に、予定データは、アクセス中データのより後のワードがアクセス制御手段にアクセスされているタイミングで予想する方が、的中する確率が高くなるものである。
【００２３】
したがって、このような構成により、より高い確率でアクセス制御手段にアクセスされるデータを予定データとして先読みすることが可能となる。
また、前記キャッシュ判定手段は、前記アクセス中データを構成する複数のワードのうち、前記アクセス制御手段が末尾のワードに先行するワードの読み出しあるいは書き込みを指示することに対応して、前記予定データがキャッシュされているか否かを判定することを特徴としている。
【００２４】
このような構成により、より早いタイミングで予定データがキャッシュされているか否かを判定できるため、キャッシュされていない場合の処理（例えば、メモリデバイスから読み込む処理等）をより早く行うことができ、ウェイトサイクルの発生を防止することあるいは発生するウェイトサイクルを低減することが可能となる。
また、前記先読みキャッシュ手段は、前記キャッシュ判定手段によって、前記予定データがいずれかのウェイにキャッシュされていると判定された場合に、前記アクセス中データを構成する複数のワードのうち、前記アクセス制御手段が末尾のワードの読み出しあるいは書き込みを指示することに対応して、該予定データが記憶されているウェイにアクセスし、該予定データの読み出しあるいは書き込みを行うことを特徴としている。
【００２５】
このような構成により、より早いタイミングで予定データがキャッシュされているか否かを判定した場合にも、予定データの読み出しあるいは書き込みが行われる確率が高くなったタイミングで、実際に予定データの読み出しあるいは書き込みを行うことができる。したがって、先読みキャッシュ手段に記憶された予定データがアクセス制御手段に読み出されない場合あるいは書き込まれない場合となる割合を低減できるため、処理効率の低下を防止することができる。
【００２６】
また、前記キャッシュメモリにおける複数のウェイのうち、データのアクセスに関係しないウェイを低消費電力で動作させる低消費電力化手段（例えば、図１１の消費電力制御部８０）をさらに含むことを特徴としている。
このような構成により、不要な部分の消費電力を低減することができ、データ転送装置の消費電力をさらに低減することが可能となる。
【００２７】
また、前記低消費電力化手段は、データの読み出しに関係しないウェイに対し、クロック信号を供給しないように制御するクロックゲーティング機能を備えることを特徴としている。
このような構成により、不要な部分に対するクロック信号を供給することにより発生する不要な消費電力を低減することができる。
【００２８】
また、前記キャッシュメモリは、セット・アソシアティブ方式のキャッシュメモリであることを特徴としている。
このような構成により、セット・アソシアティブ方式のキャッシュメモリにおいて、エントリに含まれる各ウェイのアドレス記憶手段（タグ・テーブル）およびデータ記憶手段（データ・メモリ）に不必要にアクセスすることによって発生する消費電力を大幅に低減できると共に、処理効率を向上させることが可能となる。
【００２９】
また、前記先読みキャッシュ手段は、前記キャッシュ判定手段によって、前記キャッシュメモリのいずれのウェイにも前記予定データがキャッシュされていないと判定された場合、前記メモリデバイスにアクセスし、該予定データを読み出して記憶することを特徴としている。
このような構成により、予定データがキャッシュされていない場合に、メモリデバイスから予定データを読み出す処理をより早く行うことができるため、ウェイトサイクルの発生を防止することあるいは発生するウェイトサイクルを低減することが可能となる。
【００３０】
また、本発明は、
プロセッサ外部に備えられる第１のメモリと、前記第１のメモリと前記プロセッサとの間に備えられ、前記第１のメモリに記憶されているデータの少なくとも一部を複数のウェイにキャッシュしておくことが可能なキャッシュメモリと、前記プロセッサによって前記第１のメモリより高速にアクセス可能な第２のメモリとにおけるデータ転送方法であって、前記第１のメモリから前記第２のメモリへのデータの読み出し命令あるいは前記第２のメモリから前記第１のメモリへのデータの書き込み命令の少なくともいずれかを、前記キャッシュメモリに出力することにより、前記第１のメモリと前記第２のメモリとの間で前記プロセッサを介さずにデータ転送を行うアクセス制御ステップと、前記アクセス制御ステップにおいて読み出しあるいは書き込みが行われているアクセス中データの後にアクセスされると予想される予定データが、前記キャッシュメモリのいずれかのウェイにキャッシュされているか否かを判定するキャッシュ判定ステップと、前記キャッシュ判定ステップにおいて、前記予定データがいずれかのウェイにキャッシュされていると判定された場合に、前記複数のウェイのうち、該予定データが記憶されているウェイにアクセスし、該予定データを読み出して記憶する先読みキャッシュステップと、前記アクセス中データの後に前記予定データを対象とする読み出し命令が発行された場合、記憶している予定データを読み出させ、前記アクセス中データの後に前記予定データを対象とする書き込み命令が発行された場合、該予定データに対して書き込みを行うことを特徴としている。
【００３１】
このように、本発明によれば、プロセッサを介することなくローカルメモリと外部のメモリデバイスとの間でデータ転送を行う場合に、キャッシュメモリに記憶されたデータとのコヒーレンシを保証しつつ、消費電力の増加、あるいは、処理効率の低下を防止することが可能となる。
【発明を実施するための最良の形態】
【００３２】
以下、図を参照して本発明に係るデータ転送装置の実施の形態を説明する。
まず、構成を説明する。
図１は、本発明に係るデータ転送装置１Ａを備える情報処理装置１の概略構成を示すブロック図である。
図１において、情報処理装置１は、ＣＰＵ（Central Processing Unit）コア２と、ローカルメモリ３と、ＤＭＡＣ（Direct Memory Access Controller）４と、キャッシュメモリ５と、メモリインターフェース（以下、「メモリＩ／Ｆ」と言う。）６と、メインメモリ７とを含んで構成され、これら各部はバスを介して接続されている。なお、図１に示す構成の場合、ローカルメモリ３、ＤＭＡＣ４、キャッシュメモリ５、メモリＩ／Ｆ６およびメインメモリ７がデータ転送装置１Ａを構成している。
【００３３】
ＣＰＵコア２は、情報処理装置１全体を制御するものであり、所定のプログラムを実行することにより、種々の処理を行う。例えば、ＣＰＵコア２は、メインメモリ７の所定のアドレスから演算対象となるデータあるいは命令コードを読み出して演算処理を行い、演算結果をメインメモリ７の所定のアドレスに書き込む動作を繰り返しながら、入力されたプログラムを実行する。
【００３４】
このとき、ＣＰＵコア２がメインメモリ７にアクセスする処理を高速化するために、キャッシュメモリ５を介してデータが入出力される。
また、ＣＰＵコア２には、ＣＰＵコア２が高速にアクセス可能なローカルメモリ３が備えられている。そして、メインメモリ７とローカルメモリ３との間で、ＤＭＡＣ４がＣＰＵコア２を介することなくデータの転送を行うことにより、ＣＰＵコア２がメインメモリ７との間でデータ転送を行う処理負担を軽減し、処理の高速化が図られる。
【００３５】
ローカルメモリ３は、ＣＰＵの内蔵メモリとして構成され、ＳＲＡＭ（Static Random Access Memory）等、メインメモリ７より高速にＣＰＵコア２からアクセス可能な記憶素子を備えて構成されている。また、ローカルメモリは、メインメモリ７より小容量に構成されている。そして、ＤＭＡＣ４によって、ＣＰＵコア２の処理対象となる所定のデータがメインメモリ７からローカルメモリ３に読み込まれたり、ＣＰＵコア２の処理結果であるデータがローカルメモリ３からメインメモリ７に書き出されたりする。
【００３６】
ＤＭＡＣ４は、ローカルメモリ３とメインメモリ７とにおけるＤＭＡを制御し、ＤＭＡの実行中にＣＰＵコア２をウェイト状態とさせたり、ＤＭＡの終了をＣＰＵコア２に通知したりする。
また、ＤＭＡＣ４は、ローカルメモリ３とメインメモリ７との間でデータの転送を行う際に、キャッシュメモリ５を介してデータの読み込みあるいは書き出しを行う構成である。
【００３７】
このように、ローカルメモリ３とメインメモリ７との間でデータ転送を行う場合にキャッシュメモリ５を介することで、ローカルメモリ３においてＤＭＡ転送を行うのに先立ち、キャッシュメモリ５とメインメモリ７とのコヒーレンシを保証するための処理を行う必要がなくなる。したがって、メインメモリ７とローカルメモリ３との間でＤＭＡ転送を行う場合の処理の高速化を図ることができ、処理効率の向上を図ることが可能となる。
【００３８】
キャッシュメモリ５は、メインメモリ７より高速にＣＰＵコア２からアクセス可能な記憶素子を備えており、ＣＰＵコア２がメインメモリ７とデータを入出力する処理を高速化する。
また、キャッシュメモリ５は、ＤＭＡＣ４がローカルメモリ３とメインメモリ７との間でデータの転送を行う場合にデータの入出力を制御する。
【００３９】
ここで、キャッシュメモリの方式には種々のものがあるが、セット・アソシアティブ方式が一般的であるため、ここでは２ウェイ（ウェイＡ，Ｂ）のセット・アソシアティブ方式のキャッシュメモリを例に挙げて説明する。
なお、セット・アソシアティブ方式とは、キャッシュメモリを複数の領域（ウェイ）に分割し、それぞれのウェイに、メモリデバイス上の異なるアドレスのデータを格納しておくことにより、ヒット率を向上させることができる方式である。
【００４０】
図２は、キャッシュメモリ５の機能構成を示すブロック図である。
図２において、キャッシュメモリ５は、アクセス調停部１０と、アクセス管理部２０と、先読みキャッシュ部３０と、タグ・テーブル４０と、データ・メモリ５０と、ヒット検出部６０と、ＭＵＸ７０とを含んで構成される。
また、図３は、タグ・テーブル４０およびデータ・メモリ５０に記憶されるデータの構成を示す図であり、（ａ）はタグ・テーブル４０内のデータの構成、（ｂ）はデータ・メモリ５０内のデータの構成を示している。
【００４１】
以下、図２に基づいて、キャッシュメモリ５の構成を説明し、適宜、図３を参照することとする。なお、ここでは、キャッシュメモリ５が、２ウェイ（ウェイＡ，Ｂ）のセット・アソシアティブ方式である場合を想定している。
アクセス管理部２０は、キャッシュメモリ５全体を制御するものであり、後述する状態遷移図に従うように、キャッシュメモリ５を動作させる。
【００４２】
例えば、アクセス管理部２０は、ＣＰＵコア２あるいはＤＭＡＣ４から入力された読み出し命令に基づいて、読み出し命令に示されたアドレスのデータが先読みキャッシュ部３０に記憶されている場合には、そのアドレスに対応するデータをＣＰＵコア２あるいはＤＭＡＣ４に対して出力させると共に、引き続き読み出されるデータを予想し、予想したデータを先読みキャッシュ部３０のプロセッサ先読みバッファ３４あるいはＤＭＡ先読みバッファ３５に記憶させる。
【００４３】
一方、読み出し命令に示されたアドレスのデータが先読みキャッシュ部３０に記憶されていない場合、アクセス管理部２０は、タグ・テーブル４０を参照する。そして、そのアドレスがタグ・テーブル４０に記憶されている場合、アクセス管理部２０は、そのアドレスに対応するデータをデータ・メモリ５０からプロセッサ先読みバッファ３４あるいはＤＭＡ先読みバッファ３５に記憶させる。
【００４４】
また、読み出し命令に示されたアドレスがタグ・テーブル４０に記憶されていない場合、アクセス管理部２０は、メインメモリ７にアクセスし、そのアドレスのデータを先読みキャッシュ部３０の外部メモリ先読みバッファ３６に記憶させる。
先読みキャッシュ部３０は、ＣＰＵコア２あるいはＤＭＡＣ４から入力された読み出し命令を受け取り、読み出し命令に示されたアドレスをアクセス管理部２０に出力する。また、先読みキャッシュ部３０は、アクセス管理部２０の指示に従って、ＣＰＵコア２あるいはＤＭＡＣ４によって読み出されると予想されたデータを、データ・メモリ５０あるいはメインメモリ７から予め読み出して記憶し、ＣＰＵコア２あるいはＤＭＡＣ４から実際に読み出された場合に、そのデータをＣＰＵコア２あるいはＤＭＡＣ４に出力する。
【００４５】
具体的には、先読みキャッシュ部３０は、アドレス制御部３１と、プロセッサ書き込みバッファ３２と、ＤＭＡ書き込みバッファ３３と、プロセッサ先読みバッファ３４と、ＤＭＡ先読みバッファ３５と、外部メモリ先読みバッファ３６とを含んで構成される。
アドレス制御部３１は、ＣＰＵコア２あるいはＤＭＡＣ４から入力された読み出し命令あるいは書き込み命令から、読み出しあるいは書き込みの対象となっているデータのアドレスを取得し、アクセス管理部２０に出力する。また、アドレス制御部３１は、データ・メモリ５０にキャッシュされているデータを読み出す際に、タグ・テーブル４０およびデータ・メモリ５０に読み出しあるいは書き込み対象のアドレスを出力したり、データ・メモリ５０にキャッシュされていないデータをメインメモリ７から読み出す際に、読み出し対象のアドレスをメインメモリ７に出力したりする。
【００４６】
なお、アドレス制御部３１は、アクセス管理部２０からデータの読み出し（先読み）が指示され、そのデータのアドレスがタグ・テーブル４０に記憶されている場合には、データ・メモリ５０の各ウェイのうち、そのデータが記憶されているウェイにのみアドレスを出力する。
そのため、不要なウェイへのアクセス回数を低減することができ、消費電力を低減することができると共に、処理効率の向上を実現することができる。
【００４７】
プロセッサ書き込みバッファ３２は、アクセス調停部１０によって入力されたＣＰＵコア２の書き込みデータを記憶する。
ＤＭＡ書き込みバッファ３３は、アクセス調停部１０によって入力されたＤＭＡＣ４の書き込みデータを記憶する。
なお、プロセッサ書き込みバッファ３２およびＤＭＡ書き込みバッファ３３に記憶されたデータは、これらのデータに関する書き込み命令が終了した場合に、データ・メモリ５０およびメインメモリ７に転送される。
【００４８】
プロセッサ先読みバッファ３４は、データ・メモリ５０から読み出されたデータを、ＭＵＸ７０を介して受け取り、ＣＰＵコア２に出力するデータとして記憶する。
ＤＭＡ先読みバッファ３５は、データ・メモリ５０から読み出されたデータを、ＭＵＸ７０を介して受け取り、ＤＭＡＣ４に出力するデータとして記憶する。
外部メモリ先読みバッファ３６は、メインメモリ７から読み出されたデータを受け取り、ＣＰＵコア２あるいはＤＭＡＣ４に出力するデータとして記憶する。また、外部メモリ先読みバッファ３６に記憶されたデータは、キャッシュメモリ５において処理が行われないクロックタイミングにデータ・メモリ５０に格納される。
【００４９】
タグ・テーブル４０は、図３（ａ）に示すように、各エントリ（０番〜５１１番、ただし、エントリ数Ｎ＝５１２の場合）について、データ・メモリ５０に記憶されたデータがキャッシュヒットしたか否かを示すフラグと、データ・メモリ５０に記憶されたデータが記憶されているメインメモリ７上のアドレスとを記憶している。また、各エントリには、ウェイＡ，Ｂに対応するフラグおよびアドレスが記憶されている。タグ・テーブル４０に記憶されているアドレスを参照することにより、データ・メモリ５０のデータが、キャッシュにヒットしたか否かを判定することができる。
【００５０】
データ・メモリ５０は、各エントリについて、所定のメモリデバイスデータを記憶している。なお、データ・メモリ５０は、４ワードを１ブロックとして取り扱い、データ・メモリ５０からデータを読み出す場合には、エントリに含まれるいずれかのウェイの４ワード（ｗ０〜ｗ４）を１まとまりとして読み出すことが可能である。ただし、１ブロックにおける一部のワード（例えば、ワードｗ１〜ｗ３）を読み出すことも可能である。
【００５１】
ヒット検出部６０は、アドレス制御部３１からタグ・テーブル４０に対し、読み出し命令あるいは書き込み命令に示されたアドレスが入力された場合に、データ・メモリ５０に記憶されているメモリデバイスデータがヒットしたか否かを検出する。具体的には、タグ・テーブル４０に記憶されたアドレスそれぞれを参照し、アドレス制御部３１から入力されたアドレスが検出されると、キャッシュがヒットしたものと判定する。そして、ヒット検出部６０は、ヒットしたウェイを示す情報をＭＵＸ７０に出力する。
【００５２】
ＭＵＸ７０は、ヒット検出部６０からヒットしたウェイを示す情報を受け取り、データ・メモリ５０の各ウェイの記憶領域からメモリデバイスデータを受け取る。そして、ＭＵＸ７０は、ヒット検出部６０から入力されたウェイに対応するメモリデバイスデータを選択し、プロセッサ先読みバッファ３４あるいはＤＭＡ先読みバッファ３５に出力する。
次に、動作を説明する。
【００５３】
情報処理装置１は、主としてアクセス管理部２０の制御によって、所定の動作に対応する状態遷移を行う。
まず、情報処理装置１の基本的な動作について説明する。
なお、ここではＣＰＵコア２あるいはＤＭＡＣ４から読み出し命令が入力された場合について説明する。
【００５４】
情報処理装置１の基本的な動作においては、読み出し対象であるメモリデバイスデータの最後のワードのアドレスがプロセッサから出力されるタイミングで、タグ・テーブル４０を参照し、引き続き読み出されると予想されるデータ（以下、「予定データ」と言う。）がキャッシュにヒットするか否かを検出（先読み）する。したがって、実際に読み出しあるいは書き込みが行われる可能性の高いデータについて、キャッシュを先読みすることができるため、先読みキャッシュ部３０におけるデータのヒット率を向上させることができる。
【００５５】
図４は、情報処理装置１の基本的な動作を示す状態遷移図である。
図４において、情報処理装置１は、状態Ｓ１〜Ｓ４を遷移し、それぞれの状態間を遷移するための遷移条件Ｃ１〜Ｃ１２が定められている。
状態Ｓ１（ST-PRC-NORMAL）においては、予定データが、プロセッサ先読みバッファ３４あるいはＤＭＡ先読みバッファ３５に記憶されている場合（先読みキャッシュにヒットしている場合）に、そのデータをブロック単位でＣＰＵコア２あるいはＤＭＡＣ４に出力する。
【００５６】
また、状態Ｓ１においては、予定データが、プロセッサ先読みバッファ３４あるいはＤＭＡ先読みバッファ３５に記憶されていない場合には、読み出し対象のアドレスに基づいて、タグ・テーブル４０およびデータ・メモリ５０にアクセスし、そのアドレスと一致するデータをデータ・メモリ５０から読み込む状態（ST-PREREAD-ACTIVE）に移行する。
さらに、状態Ｓ１においては、メインメモリ７から読み込まれているデータのブロックのうち、末尾のワードの読み出しが完了するまでは、キャッシュのリード（データ・メモリ５０の読み出し）を行わない。
【００５７】
状態Ｓ２（ST-PREREAD-ACTIVE）においては、予定データのアドレスに基づいて、タグ・テーブル４０にのみアクセスし、タグ・テーブル４０に記憶されたアドレスと一致（キャッシュにヒット）した場合、そのアドレスに対応するデータをデータ・メモリ５０から読み出す。
状態Ｓ３（ST-CACHE-HIT-TEST）においては、タグ・テーブル４０とデータ・メモリ５０にアクセスし、予定データのアドレスがタグ・テーブル４０のアドレスと一致するか否かを検出する。そして、状態Ｓ３においては、予定データのアドレスと一致したアドレスに対応するデータをデータ・メモリ５０から読み出す。
【００５８】
状態Ｓ４（ST-EXMEM-ACCESS）においては、メインメモリ７を読み出すためのステートマシン“sm-exmem-access”（図５参照）を起動し、メインメモリ７を読み出す。状態Ｓ４から他の状態へ遷移するタイミングは、１ワードの読み込みが終了する時点であり、ステートマシン“sm-exmem-access”の動作の終了を待たない。即ち、他の状態においては、メインメモリ７の読み出しを待つためのウェイトサイクル（wait-cycle）が生ずる場合がある。
【００５９】
遷移条件Ｃ１（CND-PRA-START）は、状態Ｓ１において、読み込み対象であるデータの末尾のワード（１６進数で表されたアドレスの末尾が“Ｃ”のワード）のアドレスが、ＣＰＵコア２あるいはＤＭＡＣ４から入力されることを意味している。
遷移条件Ｃ２（CND-PRA-END）は、状態Ｓ２において、ウェイトサイクルが発生しなければ、次のサイクルで状態Ｓ１に戻ることを意味している。
【００６０】
遷移条件Ｃ３（CND-CHT-START）は、状態Ｓ１において、予定データが、先読みキャッシュにヒットしない場合（プロセッサ先読みバッファ３４あるいはＤＭＡ先読みバッファ３５に記憶されていない場合）を意味している。
遷移条件Ｃ４（CND-CHT-CNT）は、状態Ｓ３を継続するための条件である。即ち、先読みキャッシュ部３０に予定データが記憶されていないため、タグ・テーブル４０およびデータ・メモリ５０にアクセスしてキャッシュヒットを確認し続けるための条件である。なお、分岐命令について、分岐先のアドレスがブロックの末尾であり、かつ状態Ｓ３である場合には、次のサイクルでブロックの先頭のワードにアクセスすることから、連続して先読みキャッシュにヒットしない場合に、先読みキャッシュのミスヒットと判定される。
【００６１】
遷移条件Ｃ５（CND-CHT-PRA）は、状態Ｓ３から状態Ｓ２へ遷移するための条件である。即ち、先読みキャッシュ部３０に予定データが記憶されていないため、タグ・テーブル４０およびデータ・メモリ５０にアクセスしてキャッシュヒットを確認する状態から、タグ・テーブル４０にのみアクセスし、キャッシュヒットを確認する状態へ遷移するための条件である。なお、分岐命令について、分岐先のアドレスがブロックの末尾から２番目（１６進数で表されたアドレスの末尾が“８”のワード）であり、かつ状態Ｓ３である場合には、次のサイクルでブロックの末尾のデータにアクセスすることとなり、即ち、状態Ｓ２に遷移することとなるため、状態Ｓ１に戻ることなく、状態Ｓ２に直接遷移するものである。
【００６２】
遷移条件Ｃ６（CND-CHT-END）は、状態Ｓ３において、分岐先のアドレスがブロックの先頭および２番目（１６進数で表されたアドレスの末尾が“０”あるいは“４”のワード）である場合に、先読みキャッシュにヒットしている状態であれば、状態Ｓ１に戻ることを意味している。
遷移条件Ｃ７（CND-EMA-START）は、状態Ｓ３において、キャッシュにヒットしない場合（データ・メモリ５０に読み込み対象であるデータが記憶されていない場合）を意味している。
【００６３】
遷移条件Ｃ８（CND-PRA-EMA）は、状態Ｓ２において、キャッシュにヒットしない場合を意味している。
遷移条件Ｃ９（CND-PRA-CHT）は、状態Ｓ２において、先読みキャッシュにヒットしない場合を意味している。
遷移条件Ｃ１０（CND-NORM-CNT）は、状態Ｓ１において、先読みキャッシュにヒットしている場合あるいはメインメモリ７にアクセスしている場合を意味している。
【００６４】
遷移条件Ｃ１１（CND-PRA-CNT）は、状態Ｓ２において、先読み処理を継続する場合を意味している。
遷移条件Ｃ１２（CND-EMA-END）は、状態Ｓ４において、メインメモリ７へのアクセスが終了した場合を意味している。
次に、メインメモリ７を読み出すためのステートマシン“sm-exmem-access”について説明する。
【００６５】
図５は、情報処理装置１上に構築されるステートマシン“sm-exmem-access”の動作を示す状態遷移図である。
図５において、情報処理装置１は、状態Ｔ１〜Ｔ６を遷移する。
状態Ｔ１（ST-WAIT）においては、メインメモリ７へのアクセスを停止している。状態Ｔ１においては、所定のタイミングで、状態Ｔ２に移行する。
【００６６】
状態Ｔ２（ST-EXMEM-READ-1W-S）においては、読み出し対象であるデータの第１番目のワードをメインメモリ７から読み出し、読み出す処理が終了すると、状態Ｔ３に移行する。
状態Ｔ３（ST-EXMEM-READ-1W-E-2W-S）においては、読み出し対象であるデータの第２番目のワードをメインメモリ７から読み出し、読み出す処理が終了すると、状態Ｔ４に移行する。
【００６７】
状態Ｔ４（ST-EXMEM-READ-2W-E-3W-S）においては、読み出し対象であるデータの第３番目のワードをメインメモリ７から読み出し、読み出す処理が終了すると、状態Ｔ５に移行する。
状態Ｔ５（ST-EXMEM-READ-3W-E-4W-S）においては、読み出し対象であるデータの第４番目のワードをメインメモリ７から読み出し、読み出す処理が終了すると、状態Ｔ６に移行する。
【００６８】
状態Ｔ６（ST-EXMEM-READ-4W-E）においては、読み出し対象であるデータの第４番目のワードをメインメモリ７から読み出す処理が終了することに対応して、状態Ｔ１に戻る。
図４および図５に示すように各状態を遷移する結果、情報処理装置１は、ＣＰＵコア２あるいはＤＭＡＣ４によって読み出されるデータに応じて、具体的に以下のような動作を行う。
【００６９】
まず、ＣＰＵコア２あるいはＤＭＡＣ４によって読み出されるデータが、連続して先読みキャッシュにヒットする場合の例について説明する。
図６は、ＣＰＵコア２あるいはＤＭＡＣ４によって読み出されるデータが、連続して先読みキャッシュにヒットする場合の動作例を示すタイミングチャートである。
図６においては、ＣＰＵコア２あるいはＤＭＡＣ４によって、連続するアドレスのデータ（アドレス“Ａ００〜Ａ０Ｃ”、“Ａ１０〜Ａ１Ｃ”および“Ａ２０〜Ａ２Ｃ”のデータ）が読み出される場合を示している。なお、以下、アドレス“Ａ００〜Ａ０Ｃ”、“Ａ１０〜Ａ１Ｃ”および“Ａ２０〜Ａ２Ｃ”によって示されるデータをそれぞれ第１〜第３のデータと称する。
【００７０】
図６において、第１のデータにおける末尾のワードのアドレス（アドレス“Ａ０Ｃ”）がＣＰＵコア２あるいはＤＭＡＣ４から入力されるタイミング（サイクル“４”）で、予定データである第２のデータのアドレスがタグ・テーブル４０の各ウェイに入力される。
すると、次のクロックタイミング（サイクル“５”）において、タグ・テーブル４０の各ウェイに記憶されたアドレスが出力されると共に、それらのアドレスと第２のデータのアドレスとが一致するか否かが判定され、ここでは一致していることから、キャッシュにヒットしたことが検出される（C ACHE-HIT＝１）。また、このとき、第２のデータのアドレスが、データ・メモリ５０の第２のデータが記憶されている方のウェイ（ここでは、図６中に実線で示されているウェイＡであるものとし、第２のデータが記憶されていないウェイＢについては点線で示す。以下、同様である。）に入力される（WAYA-DATA-ADRS，WAYB-DATA-ADRS）。
【００７１】
そして、引き続くクロックタイミング（サイクル“６”）において、データ・メモリ５０から、第２のデータを記憶しているウェイのデータ（WAYA-TAG-DATA，WAYB-TAG-DATA）が出力されると共に、ヒット検出部６０から、いずれかのウェイを選択する情報（WAY-SELECT）が出力される。その結果、選択されたウェイのメモリデバイスデータ（データ“Ｄ１０”）が、ＣＰＵコア２あるいはＤＭＡＣ４に対して出力される（PBUS-RDDATA）。
【００７２】
即ち、サイクル“５”で行われたＣＰＵコア２あるいはＤＭＡＣ４からの読み出し命令に対し、情報処理装置１は、対応するメモリデバイスデータをサイクル“６”で出力している。
また、情報処理装置１においては、メモリデバイスデータをブロック単位で読み出すことができるため、データ“Ｄ１０”を読み出すことにより、同じブロックの他のデータ（データ“Ｄ１４”〜“Ｄ１Ｃ”）もまとめて読み出され、プロセッサ先読みバッファ３４に記憶される。その結果、データ“Ｄ１０”に引き続く３ワードは、それぞれを読み出すためにタグ・テーブル４０およびデータ・メモリ５０にアクセスすることなく、データ“Ｄ１０”に連続して、プロセッサ先読みバッファ３４からＣＰＵコア２あるいはＤＭＡＣ４に出力されることとなる。
【００７３】
なお、情報処理装置１は、第２のデータをＣＰＵコア２あるいはＤＭＡＣ４に出力しながら、上述のような処理によって第３のデータを先読みし、同様にＣＰＵコア２あるいはＤＭＡＣ４に出力する。
次に、ＣＰＵコア２あるいはＤＭＡＣ４によって読み出されるデータが、先読みキャッシュにヒットしない場合の例について説明する。
【００７４】
図７は、ＣＰＵコア２あるいはＤＭＡＣ４によって読み出されるデータが、先読みキャッシュにヒットしない場合の動作例を示すタイミングチャートである。なお、図７におけるデータ名や信号名等は、図６における場合と同様である。
図７において、サイクル“６”までの動作は、図６に示すサイクル“６”までの動作とほぼ同様である。ただし、サイクル“５”で読み出される第２のデータの先頭ワードは分岐命令であり、その命令はサイクル“６”で実行される。
【００７５】
そして、サイクル“７”において、分岐先であるアドレス“Ａ４４”のデータは、プロセッサ先読みバッファ３４あるいはＤＭＡ先読みバッファ３５に記憶されていないことから、先読みキャッシュにヒットしないことが検出される（PRC-HIT＝０）。このとき、情報処理装置１は、ノーウェイトでデータの供給を行うため、次のサイクルでアドレス“Ａ４４”に対応するメモリデバイスデータ“Ｄ４４”を出力するべく、タグ・テーブル４０およびデータ・メモリ５０の各ウェイに、アドレス“Ａ４４”のワードを含むブロック（以下、「分岐先データ」と言う。）のアドレスを出力する。
【００７６】
そして、サイクル“８”において、タグ・テーブル４０から、各ウェイに記憶されたアドレス（WAYA-TAG-DATA，WAYB-TAG-DATA）が出力されると共に、データ・メモリ５０から、各ウェイのデータ（WAYA-TAG-DATA，WAYB-TAG-DATA）が出力される。このとき、タグ・テーブル４０の各ウェイに記憶されたアドレスと、分岐先データのアドレスとが一致することから、キャッシュにヒットしたことが検出される（CACHE-HIT＝１）。さらに、ヒット検出部６０から、いずれかのウェイを選択する情報（WAY-SELECT）が出力される。その結果、選択されたウェイのメモリデバイスデータ（データ“Ｄ４４”）がＣＰＵコア２あるいはＤＭＡＣ４に対して出力される（PBUS-RDDATA）。
【００７７】
即ち、サイクル“７”で行われたプロセッサからの分岐先の読み出し命令に対し、情報処理装置１は、対応するメモリデバイスデータをサイクル“８”で出力している。
ここで、分岐先であるアドレス“Ａ４４”は、ブロックの第２番目のワードであることから、情報処理装置１においては、そのブロックの第２番目から第４番目のワード（アドレス“Ａ４４〜”Ａ４Ｃ“のワード）がまとめて読み出され、プロセッサ先読みバッファ３４あるいはＤＭＡ先読みバッファ３５に記憶される。
【００７８】
この後、情報処理装置１は、図６における処理と同様に、分岐先データをＣＰＵコア２あるいはＤＭＡＣ４に出力する。
次に、ＣＰＵコア２あるいはＤＭＡＣ４によって読み出されるデータが、先読みキャッシュにもキャッシュにもヒットしない場合の例について説明する。
図８は、ＣＰＵコア２あるいはＤＭＡＣ４によって読み出されるデータが、先読みキャッシュにもキャッシュにもヒットしない場合の動作例を示すタイミングチャートである。なお、図８におけるデータ名や信号名等は、図６における場合と同様である。
【００７９】
図８において、サイクル“７”までの動作は、図７に示すサイクル“７”までの動作と同様である。
そして、サイクル“８”において、タグ・テーブル４０から、各ウェイに記憶されたアドレス（WAYA-TAG-DATA，WAYB-TAG-DATA）が出力されると共に、データ・メモリ５０から、各ウェイのデータ（WAYA-TAG-DATA，WAYB-TAG-DATA）が出力される。このとき、タグ・テーブル４０の各ウェイに記憶されたアドレスと、分岐先データのアドレスとが一致しないことから、キャッシュにヒットしないことが検出される（CACHE-HIT＝０）。
【００８０】
すると、アドレス“Ａ４４”のデータが読み出せないことから、情報処理装置１は、メインメモリ７からデータを読み出す。そのため、メインメモリ７からデータが取り込めるまでの３サイクル分、ウェイトサイクルが発生する。
なお、情報処理装置１は、メインメモリ７から取り込んだ分岐先データを外部メモリ先読みバッファ３６に順次記憶する。このとき、メインメモリ７からデータを取り込むためには、キャッシュの場合と異なり、１ワードにつき２サイクルを要している（データ“Ｄ４４〜Ｄ４８”）。そして、情報処理装置１は、分岐先データを外部メモリ先読みバッファ３６に記憶した後には、図６における処理と同様に、引き続くデータを先読みし、同様にＣＰＵコア２あるいはＤＭＡＣ４に出力する。また、外部メモリ先読みバッファ３６に記憶された分岐先データは、データ・メモリ５０へのアクセスが行われていないタイミングで、データ・メモリ５０にキャッシュされる。さらに、外部メモリ先読みバッファ３６にメインメモリ７から取り込んだデータが記憶されている状態で、そのデータに対する読み出し命令がＣＰＵコア２あるいはＤＭＡＣ４から入力された場合、外部メモリ先読みバッファ３６に記憶されたデータが、ＣＰＵコア２あるいはＤＭＡＣ４に出力される。
【００８１】
次に、ＣＰＵコア２あるいはＤＭＡＣ４によって読み出されるデータが、連続するアドレスのデータであるにもかかわらず、先読みが行えない場合（キャッシュにヒットしない場合）の例について説明する。なお、このような場合には、予定データをメインメモリ７から取り込む必要がある。
図９は、ＣＰＵコア２あるいはＤＭＡＣ４によって読み出されるデータが、連続するアドレスのデータであるにもかからず、キャッシュにヒットしない場合の動作例を示すタイミングチャートである。なお、図９におけるデータ名や信号名等は、図６における場合と同様である。
【００８２】
図９において、サイクル“４〜５”の動作は、図８に示すサイクル“６〜７”の動作とほぼ同様である。ただし、図９の場合、キャッシュにヒットしないことが検出されるサイクル“５”において、メインメモリ７へのアクセスを直ちに開始している。
そして、メインメモリ７へのアクセスを行ってから３サイクルの後（サイクル“８”）、メインメモリ７から予定データの各ワードが順次取り込まれる。
【００８３】
即ち、ＣＰＵコア２あるいはＤＭＡＣ４から読み出し対象となるデータのアドレス（アドレス“Ａ１０”）が入力されるサイクル“５”に対し、３サイクル後にメインメモリ７のデータがＣＰＵコア２あるいはＤＭＡＣ４に出力されることとなる。
この結果、従来のように、ＣＰＵコア２あるいはＤＭＡＣ４から読み出し対象となるデータのアドレスが入力されてから、キャッシュにヒットするか否かを検出する場合に比べ、１サイクル早いタイミングでメインメモリ７のデータを取り込むことが可能となる。つまり、従来の方法では、ＣＰＵコア２あるいはＤＭＡＣ４から読み出し命令が入力されてから、ＣＰＵコア２あるいはＤＭＡＣ４にデータが出力されるまで４サイクルを要していたが、図９においては、３サイクルに短縮されている。
【００８４】
なお、図４〜図９の説明においては、予定データがキャッシュにヒットするか否かを検出（先読み）するタイミングを、読み出し対象であるメモリデバイスデータの最後のワードのアドレスがＣＰＵコア２あるいはＤＭＡＣ４から出力されるタイミングであるものとして説明したが、読み出し対象であるメモリデバイスデータの先頭のワードのアドレスがプロセッサから入力されるタイミングで先読みを行うこととしても良い。この場合、先読みしたデータが実際にＣＰＵコア２あるいはＤＭＡＣ４から読み出される確率が低下するものの、キャッシュにヒットしない場合にウェイトサイクルのペナルティを軽減できる。
【００８５】
以下、読み出し対象であるメモリデバイスデータの先頭のワードのアドレスがＣＰＵコア２あるいはＤＭＡＣ４から入力されるタイミングで先読みを行う場合（以下、「先行先読み処理」と言う。）の動作について説明する。
図１０は、先行先読み処理の動作を示す状態遷移図である。
図１０において、情報処理装置１は、状態Ｐ１〜Ｐ４および状態Ｐ５，６を遷移し、それぞれの状態間を遷移するための遷移条件Ｇ１〜Ｇ１４が定められている。
【００８６】
なお、図１０における状態Ｐ１〜Ｐ４および遷移条件Ｇ２〜Ｇ１２は、図４における状態Ｓ１〜Ｓ４および遷移条件Ｃ２〜Ｃ１２とそれぞれ同様であるため説明を省略し、異なる部分についてのみ説明する。
状態Ｐ５（ST-PREREAD-IDLE）は、タイミングを遅らせるためのアイドル状態である。即ち、ブロックの先頭のワードのアドレスがＣＰＵコア２あるいはＤＭＡＣ４から入力されるタイミングで先読みを行う場合、読み出し対象となるデータをプロセッサ先読みバッファ３４あるいはＤＭＡ先読みバッファ３５に取り込むタイミングが早すぎてしまう“ずれ”を解消するために、一定サイクルのアイドル状態が挿入されるものである。
【００８７】
状態Ｐ６（ST-PREREAD-EXE）においては、データ・メモリ５０からプロセッサ先読みバッファ３４あるいはＤＭＡ先読みバッファ３５にデータが転送される。
遷移条件Ｇ１（CND-PRA-F-START）は、状態Ｐ１において、読み込み対象であるデータの先頭のワード（１６進数で表されたアドレスの末尾が“０”のワード）のアドレスが、ＣＰＵコア２あるいはＤＭＡＣ４から入力されることを意味している。
【００８８】
遷移条件Ｇ１３（CND-PRA-READ-START）は、状態Ｐ５において、読み込み対象であるデータの末尾のワード（１６進数で表されたアドレスの末尾が“Ｃ”のワード）のアドレスが、プロセッサから入力されることを意味している。
遷移条件Ｇ１４（CND-PRA-READ-END）は、データ・メモリ５０からプロセッサ先読みバッファ３４あるいはＤＭＡ先読みバッファ３５へのデータの転送が終了することを意味している。
【００８９】
図１０に示すように各状態を遷移する結果、情報処理装置１は、例えば、上述の図６〜図９に対応する動作を行う。
なお、図４〜図１０の説明においては、読み出し命令の場合の動作について説明したが、書き込み命令が入力された場合にも、プロセッサ書き込みバッファ３２あるいはＤＭＡ書き込みバッファ３３が用いられる点を除き、ほぼ同様の動作となるため、ここでは説明を省略する。
【００９０】
以上のように、本実施の形態に係る情報処理装置１は、ローカルメモリ３とメインメモリ７との間でＣＰＵコア２を介さずにデータの転送を行う場合にも、キャッシュメモリ３を介してデータの転送が行われる。キャッシュメモリ３においては、読み出し対象であるデータがＣＰＵコア２あるいはＤＭＡＣ４から読み出されている際に、引き続いて読み出されると予想されるデータがキャッシュされているか否か（データ・メモリ５０に記憶されているか否か）を検出する。そして、キャッシュメモリ３は、引き続いて読み出されると予想されるデータがキャッシュに記憶されている場合、そのデータを先読みキャッシュ部３０に記憶し、引き続いて読み出されると予想されるデータがキャッシュに記憶されていない場合、そのデータをメインメモリ７から読み出し、先読みキャッシュ部３０に記憶する。その後、引き続くサイクルでＣＰＵコア２あるいはＤＭＡＣ４から実際に読み出されたデータのアドレスが、先読みキャッシュ部３０に記憶されたデータのアドレスと一致する場合、そのデータを先読みキャッシュ部３０からＣＰＵコア２あるいはＤＭＡＣ４に出力する。なお、引き続くサイクルでプロセッサから実際に読み出されたデータのアドレスが、先読みキャッシュ部３０に記憶されたデータのアドレスと一致しない場合には、その時点でメインメモリ７にアクセスする。
【００９１】
そのため、ＤＭＡＣ４から読み出しあるいは書き込み対象であるデータのアドレスが入力された場合に、キャッシュメモリ３は、タグ・テーブル４０およびデータ・メモリ５０の各ウェイに常にはアクセスする必要がなく、データ・メモリ５０に読み出しあるいは書き込み対象であるデータが記憶されている場合にのみアクセスすれば足りる。
したがって、ＣＰＵコア２を介することなくローカルメモリ３とメインメモリ７との間でデータ転送を行う場合に、キャッシュメモリ３に記憶されたデータとのコヒーレンシを保証しつつ、消費電力の増加、あるいは、処理効率の低下を防止することが可能となる。
【００９２】
また、情報処理装置１は、読み出し対象であるデータの末尾のワードのアドレスが入力されているタイミングで、予定データの先読みを行う。
したがって、引き続くサイクルで読み出される確率の高いデータを先読みキャッシュ部３０に記憶しておくことができるため、無駄なデータに対するアクセスを行う事態を低減でき、消費電力の低減を図ることができる。
【００９３】
一方、情報処理装置１は、読み出し対象であるデータの先頭のワードのアドレスが入力されるタイミング等、末尾のワードのアドレスが入力されるタイミングより早く予定データの先読みを行うことも可能である。
この場合、より早いタイミングでキャッシュのヒットが検出されるため、キャッシュにヒットしない場合に、メインメモリ７から読み出し対象であるデータを読み込む処理をより早く行うことができ、ウェイトサイクルの発生を防止すること、あるいは、ウェイトサイクルの回数を低減することが可能となる。
【００９４】
なお、情報処理装置１において、クロックゲーティング機能を備えることにより、さらに消費電力を低減することが可能である。
図１１は、情報処理装置１がクロックゲーティング機能を備える場合の構成を示す図である。
図１１において、情報処理装置１は、図２に示す構成に加え、消費電力制御部８０を含んで構成される。
【００９５】
消費電力制御部８０は、情報処理装置１において動作を行わない部分に対し、クロック信号の供給を停止させる機能を備えている。
図１２は、消費電力制御部８０の構成を示す図である。
図１２において、消費電力制御部８０は、複数ｎ個のメモリそれぞれに対応するクロックゲーティング素子（以下、「ＣＧ素子」と言う。）７１−１〜７１−ｎを含んで構成される。
【００９６】
これらのＣＧ素子８１−１〜８１−ｎには、アクセス管理部２０から、クロック信号の供給を行うか否かを切り替えるための消費電力モード信号ＳＧ１〜ＳＧｎがそれぞれ入力される。アクセス管理部２０は、動作が不要であると判定されたメモリに対してはクロック信号の供給を停止させる消費電力モード信号を出力し、動作を行うと判定されたメモリに対してはクロック信号を供給する消費電力モード信号を出力する。
【００９７】
このような構成とすることにより、先読みキャッシュ部３０に読み込むデータが記憶されているデータ・メモリ５０のウェイに対してのみクロック信号を供給するといったことが可能となり、さらに消費電力の低減を図ることができる。
【図面の簡単な説明】
【００９８】
【図１】本発明に係るデータ転送装置１Ａを備える情報処理装置１の概略構成を示すブロック図である。
【図２】キャッシュメモリ５の機能構成を示すブロック図である。
【図３】タグ・テーブル４０およびデータ・メモリ５０に記憶されるデータの構成を示す図である。
【図４】情報処理装置１の基本的な動作を示す状態遷移図である。
【図５】情報処理装置１上に構築されるステートマシン“sm-exmem-access”の動作を示す状態遷移図である。
【図６】ＣＰＵコア２あるいはＤＭＡＣ４によって読み出されるデータが、連続して先読みキャッシュにヒットする場合の動作例を示すタイミングチャートである。
【図７】ＣＰＵコア２あるいはＤＭＡＣ４によって読み出されるデータが、先読みキャッシュにヒットしない場合の動作例を示すタイミングチャートである。
【図８】ＣＰＵコア２あるいはＤＭＡＣ４によって読み出されるデータが、先読みキャッシュにもキャッシュにもヒットしない場合の動作例を示すタイミングチャートである。
【図９】ＣＰＵコア２あるいはＤＭＡＣ４によって読み出されるデータが、連続するアドレスのデータであるにもかからず、キャッシュにヒットしない場合の動作例を示すタイミングチャートである。
【図１０】先行先読み処理の動作を示す状態遷移図である。
【図１１】情報処理装置１がクロックゲーティング機能を備える場合の構成を示す図である。
【図１２】消費電力制御部８０の構成を示す図である。
【図１３】従来のセット・アソシアティブ方式のキャッシュメモリ１００の構成を示す概略図である。
【符号の説明】
【００９９】
１  情報処理装置、１Ａ  データ転送装置、２  ＣＰＵコア、３  ローカルメモリ、４  ＤＭＡＣ、５  キャッシュメモリ、６  メモリＩ／Ｆ、７  メインメモリ、１０  アクセス調停部、２０  アクセス管理部、３０  先読みキャッシュ部、３１  アドレス制御部、３２  プロセッサ書き込みバッファ、３３  ＤＭＡ書き込みバッファ、３４  プロセッサ先読みバッファ、３５  ＤＭＡ先読みバッファ、３６  外部メモリ先読みバッファ、４０  タグ・テーブル、５０  データ・メモリ、６０  ヒット検出部、７０  ＭＵＸ、８０  消費電力制御部、８１  ＣＧ素子
【図１】
2006139646.tif 000003
【図２】
2006139646.tif 000004
【図３】
2006139646.tif 000005
【図４】
2006139646.tif 000006
【図５】
2006139646.tif 000007
【図６】
2006139646.tif 000008
【図７】
2006139646.tif 000009
【図８】
2006139646.tif 000010
【図９】
2006139646.tif 000011
【図１０】
2006139646.tif 000012
【図１１】
2006139646.tif 000013
【図１２】
2006139646.tif 000014
【図１３】
2006139646.tif 000015