(57)【要約】【課題】  キャッシュ・データの変更（ライト）に伴って発生するシステム・メモリヘのアクセスを効率化する【解決手段】  本発明は、書き込みデータと同じメモリ・サイズを有するキャッシュ・ラインを選択し、その選択したキャッシュ・ラインに書き込みデータを書き込むので、ラインの一部書き換えに伴って発生するシステム・メモリからのキャッシュ・イン動作を削減できる。さらに、本発明は、書き込みデータに連続するアドレスの有効データを書き込みデータに結合して、その結合データと同じサイズのキャッシュ・ラインにライトするので、ライト動作に伴うシステム・メモリへのキャッシュ・アウト動作を減らすことができる。【選択図】  図３
2006079523.tif 000002
【特許請求の範囲】
【請求項１】
メモリ・サイズの異なる複数のキャッシュ・ラインを有するキャッシュ・メモリへデータを書き込む方法であって、
（ａ）書き込みデータと同じメモリ・サイズを有するキャッシュ・ラインを選択するステップと、
（ｂ）前記選択したキャッシュ・ラインに前記書き込みデータを書き込むステップと、を備える方法。
【請求項２】
前記選択するステップ（ｂ）は、
（ｂ１）書き込みデータのアドレスと、その書き込みデータと同じメモリ・サイズを有するキャッシュ・ラインのアドレスを比較するステップと、
（ｂ２）前記書き込みアドレスに一致するアドレスのキャッシュ・ラインを選択するステップと、
（ｂ３）前記一致したアドレスのキャッシュ・ラインに有効なデータがある場合、その有効なデータを前記書き込みデータで書き換えるステップを含む、請求項１の方法。、    
【請求項３】
メモリ・サイズの異なる複数のキャッシュ・ラインを有するキャッシュ・メモリへデータを書き込む方法であって、
（ａ）書き込みデータのアドレスと、その書き込みデータと同じメモリ・サイズを有するキャッシュ・ラインのアドレスを比較するステップと、
（ｂ）前記書き込みアドレスに連続するアドレスがあり、その連続するアドレスのキャッシュ・ラインに有効なデータがある場合、その有効なデータを前記書き込みデータに結合するステップと、    
（ｃ）前記結合されたデータを、当該結合データと同じメモリ・サイズを有するキャッシュ・ラインに、前記２つの連続するアドレスのデータとして書き込むステップと、を備える方法。
【請求項４】
前記書き込みステップ（ｃ）は、
（ｃ１）前記結合データのアドレスと、その結合データと同じメモリ・サイズを有するキャッシュ・ラインのアドレスを比較するステップと、
（ｃ２）前記結合データのアドレスに一致するアドレスがある場合、そのアドレスのキャッシュ・ラインを選択するステップを含む、請求項３の方法。
【請求項５】
さらに、
（ｄ）前記書き換え後の結合データをキャッシュ・アウトするステップを含む、請求項３の方法。    
【請求項６】
さらに、
（ｅｄ）前記結合データの形成に用いられた前記キャッシュ・ラインの有効データを無効にするステップを含む、請求項３の方法。
【請求項７】
Ｍビットのアドレスと、２ｎバイトのデータ幅と、１バイトから２ｎバイト（ｎは自然数）の複数のキャッシュ・ラインを有するキャッシュ・メモリ・システムを制御する方法であって、
（ａ）１バイトの書き込みデータのアドレスと、１バイトのキャッシュ・ラインのアドレスを比較するステップと、
（ｂ）前記書き込みアドレスと上位（Ｍ−１）ビットが一致するアドレスを有するキャッシュ・ラインに有効なデータがある場合、その有効なデータを前記書き込みデータに結合して２バイトのデータを形成するステップと、    
（ｃ）前記２バイトのデータのアドレスと、２バイトのキャッシュ・ラインのアドレスを比較するステップと、
（ｄ）前記２バイトのデータのアドレスと上位（Ｍ−２）ビットが一致するアドレスを有するキャッシュ・ラインに有効なデータがある場合、その有効なデータを前記２バイトデータに結合して４バイトのデータを形成するステップと、    
（ｅ）前記比較ステップ（ｃ）およびデータ形成ステップ（ｄ）を順次繰り返して、最終的に、２（ｎー１）バイトのデータのアドレスと上位（Ｍ−ｎ−１）ビットが一致するアドレスを有するキャッシュ・ラインに有効なデータがある場合、その有効なデータを前記２（ｎー１）バイトデータに結合して２ｎバイトのデータを形成するステップと、
（ｆ）前記２ｎバイトのデータを、２ｎバイトのキャッシュ・ラインに、前記書き込みアドレスに連続するアドレスのデータとして書き込むステップと、を備える方法。
【請求項８】
Ｍビットのアドレスと、２ｎバイトのデータ幅と、１バイトから２ｎバイト（ｎは自然数）の複数のキャッシュ・ラインを有するキャッシュ・メモリ・システムを制御する方法であって、
（ａ）２ｎバイトの書き込みデータを、２ｎバイトのキャッシュ・ラインに書き込むステップと、
（ｂ）前記２ｎバイトの書き込みデータのアドレスの上位（Ｍ−ｎ）ビットと、１バイトから２（ｎ−１）バイトの各キャッシュ・ラインのアドレスの上位（Ｍ−ｎ）ビットを比較するステップと、
（ｃ）前記上位（Ｍ−ｎ）ビットが一致するアドレスを有するキャッシュ・ラインに有効なデータがある場合、その有効なデータを無効にするステップと、    
を備える方法。
【請求項９】
Ｍビットのアドレスと、２ｎバイトのデータ幅と、１バイトから２ｎバイト（ｎは任意の自然数）の複数のキャッシュ・ラインを有するキャッシュ・メモリ・システムを制御する方法であって、
（ａ）外部メモリから読み出した２ｎバイトのキャッシュ・イン・データのアドレスの上位（Ｍ−ｎ）ビットと、１バイトから２（ｎ−１）バイトの各キャッシュ・ラインのアドレスの上位（Ｍ−ｎ）ビットを比較するステップと、
（ｂ）前記上位（Ｍ−ｎ）ビットが一致するアドレスを有するキャッシュ・ラインに有効なデータがある場合、その有効データに対応する前記キャッシュ・イン・データの部分を書き換えるステップと、    
（ｃ）前記書き換えに用いたキャッシュ・ラインの有効データを無効にするステップと、を備える方法。
【請求項１０】
メモリ・サイズの異なる複数のキャッシュ・ラインと、
書き込みデータのアドレスと前記キャッシュ・ラインのアドレスを比較するタグ回路と、
前記比較結果を受けて、前記書き込みアドレスに連続するアドレスが無い場合は、前記書き込みデータを該書き込みデータと同じメモリ・サイズを有するキャッシュ・ラインに書き込み、前記書き込みアドレスに連続するアドレスがある場合は、前記書き込みデータを前記連続するアドレスの有効なデータに結合して、その結合されたデータを該結合データと同じメモリ・サイズを有するキャッシュ・ラインに前記２つの連続するアドレスのデータとして書き込むための制御回路と、
を備えるキャッシュ・メモリ・システム。
【請求項１１】
前記制御回路は、前記書き込みアドレスに連続するアドレスが無く、かつ前記書き込みアドレスに一致するアドレスのキャッシュ・ラインに有効なデータがある場合、その有効なデータを前記書き込みデータで書き換える、請求項１０のシステム。
【請求項１２】
前記制御回路は、前記結合データの形成に用いられた前記キャッシュ・ラインの有効データを無効にする、請求項１０のシステム。
【請求項１３】
さらに、各キャッシュ・ラインに対応して、データを結合するための結合回路を有する、請求項１０のシステム。
【請求項１４】
前記タグ回路は、各メモリ・サイズのキャッシュ・ラインに対応して設けられる、請求項１０のシステム。
【請求項１５】
ＣＰＵコアと、バスを介して前記ＣＰＵコアに接続するキャッシュ・メモリを備えるマイクロ・プロセッサ・ユニット（ＭＰＵ）であって、前記キャッシュ・メモリは、
メモリ・サイズの異なる複数のキャッシュ・ラインと、
書き込みデータのアドレスと前記キャッシュ・ラインのアドレスを比較するタグ回路と、
前記比較結果を受けて、前記書き込みアドレスに連続するアドレスが無い場合は、前記書き込みデータを該書き込みデータと同じメモリ・サイズを有するキャッシュ・ラインに書き込み、前記書き込みアドレスに連続するアドレスがある場合は、前記書き込みデータを前記連続するアドレスの有効なデータに結合して、その結合されたデータを該結合データと同じメモリ・サイズを有するキャッシュ・ラインに前記２つの連続するアドレスのデータとして書き込むための制御回路を含む、ＭＰＵ。
【請求項１６】
Ｍビットのアドレスと、２ｎバイトのデータ幅と、１バイトから２ｎバイト（ｎは自然数）の複数のキャッシュ・ラインを有するキャッシュ・メモリ・システムであって、
２ｎバイトの書き込みデータのアドレスの上位（Ｍ−ｎ）ビットと、１バイトから２（ｎ−１）バイトの各キャッシュ・ラインのアドレスの上位（Ｍ−ｎ）ビットを比較するタグ回路と、
前記２ｎバイトの書き込みデータを、２ｎバイトのキャッシュ・ラインに書き込み、さらに前記上位（Ｍ−ｎ）ビットが一致するアドレスを有するキャッシュ・ラインに有効なデータがある場合、その有効なデータを無効にするための制御回路と、を備えるシステム。
【請求項１７】
Ｍビットのアドレスと、２ｎバイトのデータ幅と、１バイトから２ｎバイト（ｎは任意の自然数）の複数のキャッシュ・ラインを有するキャッシュ・メモリ・システムであって、
外部メモリから読み出した２ｎバイトのキャッシュ・イン・データのアドレスの上位（Ｍ−ｎ）ビットと、１バイトから２（ｎ−１）バイトの各キャッシュ・ラインのアドレスの上位（Ｍ−ｎ）ビットを比較するためのタグ回路と、 
前記上位（Ｍ−ｎ）ビットが一致するアドレスを有するキャッシュ・ラインに有効なデータがある場合、その有効データに対応する前記キャッシュ・イン・データの部分を書き換え、さらに前記書き換えに用いたキャッシュ・ラインの有効データを無効にするための制御回路と、を備えるシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的にはキャッシュ（cache）・メモリ・システムとその制御方法に関し、特にキャッシュ・メモリへのアクセス（ライト動作）の高速化、効率化に関する。
【背景技術】
【０００２】
パーソナル・コンピュータ（ＰＣ）などのシステムでは、ＣＰＵが、データが記憶されるメモリへアクセスしながら、大量のデータの処理をおこなう。ＤＲＡＭなどのシステム・メモリは大きな記憶容量を持っているが、そのアクセス速度は遅い。頻繁に利用するデータへのアクセスの高速化を図るため、ＣＰＵはＳＲＡＭなどからなるキャッシュ・メモリ（以下、単に"キャッシュ"と呼ぶ。）を使用する。キャッシュは、記憶容量は小さいが、ＤＲＡＭなどのシステム・メモリに比べて高速アクセスが可能である。
【０００３】
キャッシュは、予め決められたワード長を単位として、そのワード長を複数まとめて１つのキャッシュ・ラインとする。さらに、複数のキャッシュ・ラインにより、１つのキャッシュ・システムが構成される。既存のキャッシュ・システムでは、キャッシュ・ラインの大きさ（サイズ）は、例えば１６バイトや３２バイトのように、固定である。システム・メモリからの読み出し（キャッシュ・イン）又システム・メモリヘの書き込み（キャッシュ・アウト）は、そのライン（バイト）単位でおこなわれる。
【０００４】
キャッシュ・システムでは、システム・メモリとのコヒーレンシ（データの同一性）を保つために、キャッシュ・データの変更（ライト）に伴って、ライン単位のキャッシュ・インまたはキャッシュ・アウトが必要となる。例えば、ＣＰＵからのライト・データ・サイズがキャッシュ・ライン・サイズよりも小さい場合、すなわちキャッシュ・ラインの一部のデータを書き換える場合、ライン内のライトされないデータのコヒーレンシを保つために、システム・メモリからのライン単位のリードが必要となる。
【０００５】
システム・メモリへのアクセス動作は、ＣＰＵおよびキャッシュの動作に比べてその動作速度が遅いので、ＣＰＵを一時停止の状態（ｓｔａｌｌ）にしてしまう。その結果、システム・メモリへのアクセスが頻繁に起こると、ＣＰＵによるデータ処理が遅くなる。特に、カラー・イメージ・データなどの大量のデータを処理する場合、その処理速度の遅れの影響は顕著になる。したがって、キャッシュ・データの変更に伴って発生するシステム・メモリヘのアクセス（キャッシュ・イン、キャッシュ・アウト）を減らすことができれば、ＣＰＵによるデータ処理速度の低下を抑えることができる。
【０００６】
メモリ・アクセスの効率を上げて、プロセッサの性能を向上させるための従来技術が、例えば、日本国の公開特許公報11-65925に開示されている。しかし、この公報は、キャッシュ・データの変更（ライト）に伴って発生するシステム・メモリヘのアクセスを減らすことに関する技術を開示するものではない。
【特許文献１】公開特許公報11-65925
【発明の開示】
【発明が解決しようとする課題】
【０００７】
本発明の目的は、キャッシュ・データの変更（ライト）に伴って発生するシステム・メモリヘのアクセスを効率化することである。
【０００８】
本発明の目的は、データのコヒーレンシを保ちつつ、キャッシュ・データの変更（ライト）に伴って発生するキャッシュ・イン動作を減らすことである。
【０００９】
本発明の目的は、キャッシュ・データの変更（ライト）に伴って発生するキャッシュ・アウト動作を減らすことである。
【課題を解決するための手段】
【００１０】
本発明は、メモリ・サイズの異なる複数のキャッシュ・ラインを有するキャッシュ・メモリにおいて、書き込みデータと同じメモリ・サイズを有するキャッシュ・ラインを選択し、その選択したキャッシュ・ラインに書き込みデータを書き込む。
【００１１】
本発明は、書き込みデータに連続するアドレスの有効データを書き込みデータに結合して、その結合データと同じサイズのキャッシュ・ラインに書き込む。
【発明の効果】
【００１２】
本発明は、書き込みデータと同じメモリ・サイズを有するキャッシュ・ラインを選択し、その選択したキャッシュ・ラインに書き込みデータを書き込むので、ラインの一部書き換えに伴って発生するシステム・メモリからのキャッシュ・イン動作を削減できる。
【００１３】
本発明は、書き込みデータに連続するアドレスの有効データを書き込みデータに結合して、その結合データと同じサイズのキャッシュ・ラインにライトするので、ライト動作に伴うシステム・メモリへのキャッシュ・アウト動作も減らすことができる。
【００１４】
本発明は、ＣＰＵによるキャッシュへのライト動作において、システム・メモリからのキャッシュ・インおよびキャッシュ・アウト動作を減らして、ＣＰＵによるデータ処理速度を向上させることができる。
【発明を実施するための最良の形態】
【００１５】
本発明について図面を引用しながら説明する。図１から図６は、本発明の方法（動作）を説明するための模式図である。図１から図６の説明では、ＣＰＵのアドレス空間が１６ビット、データ幅が８バイト、最大８バイト（１、２、４、８バイト）のキャッシュ・ラインを持つキャッシュ・システムを想定している。また、ＣＰＵコアからキャッシュへのライトに対してはライト・バック動作を行う。なお、以下の説明では、アドレスやデータは全て１６進数で示している。
【００１６】
図１は、ＣＰＵコアがアドレス"４Ｂ５０"の１バイトデータ"８Ｅ"を書き込む場合を示す。ライト・データ・サイズと同じ１バイト・キャッシュ・ラインを選択して、アドレス"４Ｂ５０"のデータ"８Ｅ"として書き込む。なお、１バイト・キャッシュ・ラインに、アドレス"４Ｂ５０"に一致するアドレスに有効なデータがある場合は、その有効なデータをライト・データ"８Ｅ"に書き換える。この時、１バイト・キャッシュ・ラインがデータ・フルの状態であれば、予め決められたキャッシュの更新手順（従来からあるＬＲＡ（Least Recently Used）などの方法）を用いて、キャッシュ・ラインを特定する。そして、そのキャッシュ・ラインのデータをシステム・メモリ（ＤＲＡＭなど）に書き戻すが必要であれば（データ・コヒーレンシを保つために）、キャッシュ・アウトを行う。
【００１７】
なお、２バイト・キャッシュ・ラインにおいてアドレスの上位１５ビットが、４バイト・キャッシュ・ラインにおいてアドレス上位１４ビットが、もしくは８バイト・キャッシュ・ラインにおいて上位１３ビットが一致する有効なデータがある場合も、その一致するアドレスのキャッシュ・ラインの１バイト・データを書き換える。図１の例では、一致する有効データが2バイト以上のキャッシュ・ラインに存在しないので、上述したように１バイト・キャッシュ・ラインにのみデータを書き込んでいる。
【００１８】
図２は、ＣＰＵコアがアドレス"４Ｂ５１"の１バイトデータ"Ｄ５"を書き込む場合を示す。１バイト・キャッシュ・ラインに、ライト・アドレス"４Ｂ５１"と上位１５ビットが一致する（連続する）アドレス"４Ｂ５０"に有効なデータ"８Ｅ"がある。そのアドレス"４Ｂ５０"の有効データ"８Ｅ"をアドレス"４Ｂ５１"のデータ"Ｄ５"に結合する（符号１０）。結合した２バイトデータを、２バイト・キャッシュ・ラインに、アドレス"４Ｂ５０"から始まる２バイトデータとして書き込む。この時、２バイト・キャッシュ・ラインがフル状態であれば、必要に応じて、図１の場合と同様に、所定の更新手順を用いて、キャッシュ・アウトを行う。同一アドレスのデータが異なるキャッシュ・ラインに存在しないようにするために、１バイト・キャッシュ・ラインのデータ"８Ｅ"を無効（invalid）にする。
【００１９】
図３は、ＣＰＵコアがアドレス"Ａ０３Ｅ"の１バイトデータ"８Ａ"を書き込む場合を示す。１バイト・キャッシュ・ラインに、ライト・アドレス"Ａ０３Ｅ"と上位１５ビットが一致するアドレス"Ａ０３Ｆ"に有効なデータ"Ｃ２"がある。そのアドレス"Ａ０３Ｆ"の有効データ"Ｃ２"をアドレス"Ａ０３Ｅ"のデータ"８Ａ"に結合する（符号１１）。２バイト・キャッシュ・ラインに、ライト・アドレス"Ａ０３Ｅ"に上位１４ビットが一致するアドレス"Ａ０３Ｃ"から始まる有効なデータ"Ｂ１３７"がある。そのデータ"Ｂ１３７"をアドレス"Ａ０３Ｅ"から始まる結合データ"８ＡＣ２"に結合する（符号１２）。結合された４バイト・データ"Ｂ１３７８ＡＣ２"を、アドレス"Ａ０３Ｃ"から始まるデータとして、４バイト・キャッシュ・ラインに書き込む。
【００２０】
この時、４バイト・キャッシュ・ラインがフル状態であれば、必要に応じて、図１の場合と同様に、所定の更新手順を用いて、キャッシュ・アウトを行う。同一アドレスのデータが異なるキャッシュ・ラインに存在しないようにするために、１バイト・キャッシュ・ラインのデータ"Ｃ２"および２バイト・キャッシュ・ラインのデータ"Ｂ１３７"を無効（invalid）にする。なお、図３の動作フローは、同様に８バイト・キャッシュ・ラインに対しても行うことができる。最終的に、全体の書き込みデータが書き込まれるまで同様に繰り返される。
【００２１】
図４は、ＣＰＵコアがアドレス"４Ｂ５２"の２バイトデータ"Ｄ２３Ａ"を書き込む場合を示す。図４では、２回のデータ結合（１３、１４）を経て、結合された８バイト・データを、アドレス"４Ｂ５０"から始まる一連のデータとして、８バイト・キャッシュ・ラインに書き込む。書き込むバイト数が異なる以外、動作フローは図３の場合と同様であるので、ここでは詳細な説明を省略する。
【００２２】
図５は、ＣＰＵコアがアドレス"１２Ｅ０"から始まる８バイトデータ"Ｅ７．．．２７"を書き込む場合を示す。８バイト・キャッシュ・ラインを選択して、その８バイトデータを書き込む。この時、８バイト・キャッシュ・ラインがフル状態であれば、必要に応じて、図１の場合と同様に、所定の更新手順を用いてキャッシュ・アウトを行う。同一アドレスのデータが異なるキャッシュ・ラインに存在しないようにするために、１から４バイトの各キャッシュ・ラインの同一アドレスのデータを無効（invalid）にする。図５では、１バイト・ラインのアドレス"１２Ｅ１"の１バイトデータ"Ａ４"と４バイト・ラインのアドレス"１２Ｅ４"の４バイトデータ"０３．．．６Ｃ"を無効にしている。
【００２３】
図６は、ＣＰＵコアがアドレス"９３Ｅ８"から始まる８バイトデータを読み出す場合を示す。もし８バイト・キャッシュ・ラインに、アドレス"９３Ｅ８"に一致する有効なデータがある場合は、そのデータをそのまま読み出す。図６では、アドレスが一致するデータは無いので、キャッシュはシステム・メモリからアドレス"９３Ｅ８"から始まる８バイトデータを読み出す。この時、１から４バイトの各キャッシュ・ラインに、同一アドレスのデータがある場合は、システム・メモリからのデータ中の対応するアドレスのデータ部分を書き換える。図６では、２バイト・ラインに一致するアドレス"９３ＥＡ"のデータ"３４９Ｂ"があるので、このデータで書き換えている。同一アドレスのデータが異なるキャッシュ・ラインに存在しないようにするために、書き換えに使用した２バイト・ラインのデータ"３４９Ｂ"を無効にする。書き換え後の８バイト・データは、８バイト・ラインに書き込まれた後、ＣＰＵコアへ送られる。
【００２４】
図７は、図１〜図６で説明した本発明の方法を実施するためのキャッシュ・システムの構成例を示すブロック図である。図７のシステムは、１〜８バイトのキャッシュ・ライン２０〜２３と、タグ回路３０〜３３と、キャッシュ制御回路４０と、データの結合回路５０〜５３を備える。キャッシュ・ライン２０〜２３はデータを保持する。タグ回路３０〜３３は、書き込みデータのアドレスとキャッシュ・ラインのアドレスを比較する。タグ回路３０〜３３は、各キャッシュ・ライン２０〜２３毎にある。キャッシュ制御回路４０は、ＣＰＵからの命令（ライト、リードなど）およびタグ回路からのアドレス比較結果を受けて、キャッシュ・ラインの各種制御をおこなう。上述した図１から図６の各動作フローは、キャッシュ制御回路４０により実行される。結合回路５０〜５３は、マルチプレクサ（ＭＵＸ）として、図１〜図６に示したようなバイト・データ（信号）の結合を実行する。
【００２５】
以下に、図７のシステムによる動作を、図３と図６の場合を例にとり説明する。他の図における動作も同様である。
【００２６】
＜図３の動作＞
ＣＰＵコアは、制御回路４０にアドレス"Ａ０３Ｅ"の１バイトデータ"８Ａ"の書き込み命令を送る。１、２、４、８バイト・ライン・キャッシュのタグ回路３０〜３３はそれぞれアドレスの比較をおこなう。キャッシュ制御回路４０は、タグ回路３０〜３３からアドレス比較結果を受け取る。もしアドレス"Ａ０３Ｅ"の１６ビットすべてが一致する有効なデータが存在する場合、タグ回路３０は制御回路４０に"１Ｂ（１５：０）一致"信号を送る。同様に、タグ回路３１、３２、３３も、それぞれアドレスの上位の１５ビット、１４ビット、１３ビットを比較し、もし一致するアドレスの有効なデータが存在する場合、制御回路４０にそれぞれ"２Ｂ（１５：１）一致"、"４Ｂ（１５：２）一致"、"８Ｂ（１５：３）一致"信号を送る。キャッシュ制御回路４０は、一致信号が返されたライン・サイズに対応するキャッシュ２０〜２３の何れかを選択し、一致アドレスのデータをデータ"Ｄ５"に書き換える。
【００２７】
図３では一致アドレスのデータはない。しかし、１バイト・ライン・キャッシュ２０にアドレス"Ａ０３Ｅ"と上位１５ビットが一致するアドレス"Ａ０３Ｆ"の有効なデータが存在する。タグ回路３０は、制御回路４０に上位１５ビットの一致信号である"１Ｂ（１５：１）一致"を送る。制御回路４０は１バイト・ライン・キャッシュ２０およびデータ結合回路５１（１Ｂ−ＭＵＸ）を選択する。結合回路５１（１Ｂ−ＭＵＸ）は、アドレス"Ａ０３Ｅ"の１バイトデータ"８Ｅ"と、アドレス"Ａ０３Ｆ"の１バイトデータ"Ｃ２"を結合する（図３の符号１１）。
【００２８】
制御回路４０は、結合された２バイト・データ"８ＡＣ２"を、新たな２バイトのアドレス"Ａ０３Ｅ"への書き込みデータとして扱う。２バイト・ライン・キャッシュのタグ回路３１は、その新たな書き込みデータについて、アドレス比較をおこなう。この時、アドレス"Ａ０３Ｅ"の上位１５ビットが一致するアドレスのデータは、このキャッシュ上には、その仕様上存在しない。図３では、アドレス"Ａ０３Ｅ"の上位１４ビットが一致するアドレス"Ａ０３Ｃ"の２バイトデータが存在する。２バイト・ラインのタグ回路３１は、制御回路４０に上位１４ビットの一致信号である"１Ｂ（１５：２）一致"を送る。制御回路４０は２バイト・ラインのデータ結合回路５２（２Ｂ−ＭＵＸ）を選択する。結合回路５２（２Ｂ−ＭＵＸ）は、２バイトの書き込みデータ"８ＡＣ２"と２バイト・ラインの該当データ"Ｂ１３７"を結合して、新たな４バイト・データを形成する（図３の符号１２）。
【００２９】
制御回路４０は、結合された４バイト・データ"Ｂ１．．．Ｃ２"を、アドレス"Ａ０３Ｃ"から始まる新たな４バイトの書き込みデータとして扱う。４バイト・ライン・キャッシュのタグ回路３２は、その新たな書き込みデータについて、アドレス比較をおこなう。図３では、アドレス"Ａ０３Ｃ"の上位１３ビットが一致するアドレスの４バイトデータは存在しない。したがって、制御回路４０は、４バイト・ライン・キャッシュ２２を選択し、結合データをアドレス"Ａ０３Ｃ"から始まるデータとして書き込む。なお、上記の処理において、１バイト・キャッシュと２バイト・キャッシュのタグ回路での比較動作は、順次ではなく並行して行われる。制御回路４０は、４バイト・キャッシュ・ラインがデータ・フルの状態であれば、予め決められたキャッシュの更新手順（従来からあるＬＲＡ（Least Recently Used）などの方法）を用いてキャッシュ・ラインを特定する。その後、そのキャッシュ・ラインのデータをシステム・メモリに書き戻す必要があれば（データ・コヒーレンシを保つために）、キャッシュ・アウトを行う。さらに、制御回路４０は、同一アドレスのデータが異なるキャッシュ・ラインに存在しないようにするために、１バイト・キャッシュ・ラインのデータ"Ｃ２"および２バイト・キャッシュ・ラインのデータ"Ｂ１３７"を無効（invalid）にする。
【００３０】
＜図６の動作＞
ＣＰＵコアはアドレス"９３Ｅ８"の８バイトデータを読み出す命令を制御回路４０に送る。８バイトデータなので、８バイトのタグ回路３３においてアドレスが比較される。
アドレスが一致する有効データがあれば、そのデータが読み出しの結合回路５０（リードＭＵＸ）を介してＣＰＵへ送られる。しかし、図６の例では一致するアドレスのデータは無い。制御回路４０は、アドレス"９３Ｅ８"の８バイトデータをシステム・メモリから読み出す。同時に、各バイト・ラインのタグ回路は、アドレスのそれぞれ上位１３ビットを比較する。上位１３ビットが一致するアドレスの有効なデータがある場合、各タグ回路は制御回路４０に上位１３ビットの一致信号である"１Ｂ（１５：３）一致"を送る。制御回路４０は、一致信号を受けたバイト・ラインのデータ結合回路を選択する。結合回路は、システム・メモリからのデータ中の対応するアドレスのデータ部分を書き換える。図６では、２バイト・ラインに一致するアドレス"９３ＥＡ"のデータ"３４９Ｂ"があるので、このデータで書き換えている。制御回路４０は、同一アドレスのデータが異なるキャッシュ・ラインに存在しないようにするために、その２バイト・キャッシュ・ラインのデータ"３４９Ｂ"を無効（invalid）にする。書き換え後の８バイト・データは、８バイト・ラインに書き込まれた後、結合回路５０（リードＭＵＸ）を介してＣＰＵコアへ送られる。
【００３１】
本発明と従来のキャッシュ・システムとの比較をした。前提として、１〜４バイト・ライトが可能な３２ビットＣＰＵについて、１、２、４、８、１６、３２バイトのラインサイズを持つキャッシュを仮定する。リード時のラインサイズを３２バイトとし、１〜１６バイトのキャッシュ・ラインをそれぞれ４ライン、３２バイトのラインを１Ｋライン持つものと仮定する。実行アプリケーションとして、１バイト毎のアクセスで、連続アドレスに１Ｍバイト書き込むものとする。また、最初にキャッシュはすべて無効状態とする。
【００３２】
＜従来法の場合＞
３２バイト・ライン一定のキャッシュしか持たない場合、３２回毎の１バイト・ライトの最初に、３２バイトのキャッシュインが発生する。その後ＣＰＵとキャッシュ間で３２回のバイト・ライトが行われる。これがキャッシュフルになるまで繰り返される。キャッシュフルになってからは、キャッシュ・インと同時に、キャッシュ・アウトも行われる。キャッシュ・フル以降の処理速度を考えると、ＣＰＵの処理速度がメモリアクセスに比べて十分に早い場合では、メモリアクセス時間が支配的となる。その結果、３２バイト・ライトごとに、３２バイト・リード（キャッシュ・イン）の時間と３２バイト・ライトの時間の合計時間を要する。システム・メモリがＤＲＡＭである場合は、さらにプリチャージ時間やバンクアクセス時間などが加わる。
【００３３】
＜本発明の場合＞
本発明のキャッシュ・システムでは、３２回のバイト・ライトの１バイト目では、１バイト・キャッシュ・ラインへ書き込む。２バイト目では１バイト目のデータと結合して、２バイト・データとして、２バイト・キャッシュ・ラインへ書き込む。３バイト目では、空いた１バイト・キャッシュ・ラインへ書き込む。４バイト目では、先の２バイト・ライン及び１バイト・ラインのデータと結合して、４バイト・データとして、４バイト・キャッシュ・ラインへ書き込む。このように書き込みが繰り返させる。そして、３２バイト目のライト時に、３２バイト・キャッシュ・ラインにデータが書き込まれる。キャッシュがフルとなっていれば、システム・メモリへキャッシュ・アウトが行われる。ＣＰＵの処理速度がメモリアクセスに比べて十分に早い場合、３２バイト・ライトごとに、１回の３２バイト・キャッシュ・アウトのみが発生するだけである。したがって、上記従来法に比べて、
キャッシュ・インの時間などを大幅に削減でき、２倍以上の処理速度の向上が図れる。また、連続ライト・アクセスでない場合についても、１バイト・ライトに伴い３２バイトのキャッシュインを発生させる必要がない。さらに、１バイト・ライトのために、１ラインの残り３１バイトを無駄に消費しなくてすむ利点がある。
【図面の簡単な説明】
【００３４】
【図１】本発明の方法（動作）を説明するための模式図である。
【図２】本発明の方法（動作）を説明するための模式図である。
【図３】本発明の方法（動作）を説明するための模式図である。
【図４】本発明の方法（動作）を説明するための模式図である。
【図５】本発明の方法（動作）を説明するための模式図である。
【図６】本発明の方法（動作）を説明するための模式図である。
【図７】本発明のキャッシュ・メモリ・システムの構成例を示すブロック図である。
【符号の説明】
【００３５】
１０、１１、１２、１３、１４    データ結合
２０、２１、２２、２３    キャッシュ・ライン・データ
３０、３１、３２、３３    タグ回路
４０    制御回路
５０、５１、５２、５３    データ結合回路
【図１】
2006079523.tif 000003
【図２】
2006079523.tif 000004
【図３】
2006079523.tif 000005
【図４】
2006079523.tif 000006
【図５】
2006079523.tif 000007
【図６】
2006079523.tif 000008
【図７】
2006079523.tif 000009