(57)【要約】【課題】キャッシュ容量を変更する際に必要となる設計変更を低減することが可能な技術を提供する。【解決手段】バンク制御回路７には複数のキャッシュメモリ６が接続されている。バンク制御回路７は、キャッシュ容量を示す信号ＣＳＩＺＥに基づいて、複数のキャッシュメモリ６から少なくとも一つのキャッシュメモリ６を選択し、選択したキャッシュメモリ６へのバス制御回路３からのアクセスを許可する。従って、信号ＣＳＩＺＥの値を変更することによって、キャッシュ容量を変更できる。【選択図】        図１
2004259098.tif 000002
【特許請求の範囲】
【請求項１】
キャッシュ容量を示す信号が入力され、メインメモリのコピーデータを記憶する複数のキャッシュメモリと接続可能なバンク制御回路であって、
前記信号に基づいて、接続されたキャッシュメモリから少なくとも一つのキャッシュメモリを選択し、選択した前記少なくとも一つのキャッシュメモリへの外部からのアクセスを許可する、バンク制御回路。
【請求項２】
請求項１に記載のバンク制御回路と、
前記バンク制御回路に接続された少なくとも一つのキャッシュメモリと
を備え、
前記バンク制御回路は、１回のアクセスで１つのキャッシュメモリのみにアクセスされるように、選択したキャッシュメモリへの外部からのアクセスを制御する、キャッシュメモリ装置。
【請求項３】
前記信号に基づいて、前記バンク制御回路に接続されたキッシュメモリへの電源供給を制御する電源制御回路を更に有し、
前記電源制御回路は、前記バンク制御回路に接続されたキャッシュメモリのうち、前記バンク制御回路が選択したキャッシュメモリのみに電源を供給する、請求項２に記載のキャッシュメモリ装置。
【請求項４】
前記キャッシュメモリ装置には、前記メインメモリのアドレスを示し、タグ及びインデックスを含むキャッシュアドレスが入力され、
前記キャッシュアドレスにおいて、タグ及びインデックスが占めるビット位置は固定であって、
前記バンク制御回路に接続されたキャッシュメモリは、前記キャッシュアドレス中のインデックスをアドレスとするタグメモリを有し、
前記タグメモリは前記キャッシュアドレス中のタグを記憶し、
前記バンク制御回路が選択したキャッシュメモリへの外部からのアクセスの際に、前記キャッシュメモリ装置に入力される前記キャッシュアドレス中のインデックスと、そのインデックスが示すアドレスに記憶されている前記タグメモリ内のデータとを連結して、コピーバックアドレスを生成し出力するキャッシュ周辺回路を更に備え、
前記メインメモリに対する書き込み方式には、前記コピーバックアドレスが用いられるコピーバック方式が採用される、請求項２及び請求項３のいずれか一つに記載のキャッシュメモリ装置。
【請求項５】
前記キャッシュメモリ装置には、前記メインメモリのアドレスを示し、タグ及びインデックスを含むキャッシュアドレスが入力され、
前記キャッシュアドレスにおいて、タグ及びインデックスが占めるビット位置は固定であって、
前記バンク制御回路に接続されたキャッシュメモリは、前記キャッシュアドレス中のインデックスをアドレスとするタグメモリを有し、
前記タグメモリは前記キャッシュアドレス中のタグを記憶し、
前記バンク制御回路が選択したキャッシュメモリへの外部からのアクセスの際に、前記キャッシュメモリ装置に入力される前記キャッシュアドレス中のタグと、その際の前記キャッシュアドレス中のインデックスが示すアドレスに記憶されている前記タグメモリ内のデータとを比較し、両者の一致／不一致を検出する比較器を更に備える、請求項２及び請求項３のいずれか一つに記載のキャッシュメモリ装置。
【請求項６】
前記バンク制御回路には複数のキャッシュメモリが接続され、
前記キャッシュメモリ装置には、前記メインメモリのアドレスを示し、タグを含むキャッシュアドレスが入力され、
前記キャッシュアドレスにおいて、タグが占めるビット位置は固定であって、
前記バンク制御回路は、前記複数のキャッシュメモリの全てを選択し、
前記複数のキャッシュメモリのそれぞれは、前記キャッシュアドレス中のタグを記憶するタグメモリを有し、
前記タグメモリは、前記タグの一部に相当する、前記複数のキャッシュメモリのそれぞれに固有の固定データを記憶している、請求項２及び請求項３のいずれか一つに記載のキャッシュメモリ装置。
【請求項７】
前記バンク制御回路には複数のキャッシュメモリが接続され、
前記複数のキャッシュメモリのメモリ容量は互いに同じである、請求項２乃至請求項５のいずれか一つに記載のキャッシュメモリ装置。
【請求項８】
メインメモリのコピーデータを記憶するキャッシュメモリと、
複数の第１の所定数の前記キャッシュメモリと接続可能であって、接続された前記キャッシュメモリへの外部からのアクセスを許可することが可能なバンク制御回路と
を備えるキャッシュメモリ装置の設計方法であって、
（ａ）前記バンク制御回路を設計する工程と、
（ｂ）前記工程（ａ）で設計された前記バンク制御回路を備える第１の前記キャッシュメモリ装置を設計する工程と、
（ｃ）前記工程（ａ）で設計された前記バンク制御回路を備える第２の前記キャッシュメモリ装置を設計する工程と
を備え、
前記工程（ｂ）は、
（ｂ−１）前記第１の所定数以下の第２の所定数の前記キャッシュメモリを設計する工程を含み、
前記工程（ｃ）は、
（ｃ−１）前記第１の所定数以下であって前記第２の所定数とは異なる第３の所定数の前記キャッシュメモリを設計する工程を含む、キャッシュメモリ装置の設計方法。
【請求項９】
キャッシュ周辺回路を更に備え、前記メインメモリのアドレスを示しつつ、タグ及びインデックスを含むキャッシュアドレスが入力される前記キャッシュメモリ装置の設計方法であって、
前記キャッシュアドレスにおいて、タグ及びインデックスが占めるビット位置は固定であって、
前記キャッシュメモリは、前記キャッシュアドレス中のインデックスをアドレスとするタグメモリを有し、
前記タグメモリは前記キャッシュアドレス中のタグを記憶し、
前記キャッシュ周辺回路は、
前記接続された前記キャッシュメモリへの外部からのアクセスの際に、前記キャッシュメモリ装置に入力される前記キャッシュアドレス中のインデックスと、そのインデックスが示すアドレスに記憶されている前記タグメモリ内のデータとを連結して、コピーバックアドレスを生成して出力し、
前記メインメモリに対する書き込み方式には、前記コピーバックアドレスが用いられるコピーバック方式が採用され、
前記工程（ａ）において前記キャッシュ周辺回路を更に設計し、
前記工程（ｂ），（ｃ）において、前記工程（ａ）で設計された前記キャッシュ周辺回路を更に備える前記第１，２の前記キャッシュメモリ装置をそれぞれ設計する、請求項８に記載のキャッシュメモリ装置の設計方法。
【請求項１０】
比較器を更に備え、前記メインメモリのアドレスを示しつつ、タグ及びインデックスを含むキャッシュアドレスが入力される前記キャッシュメモリ装置の設計方法であって、
前記キャッシュアドレスにおいて、タグ及びインデックスが占めるビット位置は固定であって、
前記キャッシュメモリは、前記キャッシュアドレス中のインデックスをアドレスとするタグメモリを有し、
前記タグメモリは前記キャッシュアドレス中のタグを記憶し、
前記比較器は、
前記接続された前記キャッシュメモリへの外部からのアクセスの際に、前記キャッシュメモリ装置に入力される前記キャッシュアドレス中のタグと、その際の前記キャッシュアドレス中のインデックスが示すアドレスに記憶されている前記タグメモリ内のデータとを比較し、両者の一致／不一致を検出し、
前記工程（ａ）において前記比較器を更に設計し、
前記工程（ｂ），（ｃ）において、前記工程（ａ）で設計された前記比較器を更に備える前記第１，２の前記キャッシュメモリ装置をそれぞれ設計する、請求項８に記載のキャッシュメモリ装置の設計方法。
【請求項１１】
メインメモリのコピーデータを記憶するキャッシュメモリと、
複数の前記キャッシュメモリと接続可能であって、接続された前記キャッシュメモリへの外部からのアクセスを許可することが可能なバンク制御回路と
を備えるキャッシュメモリ装置の設計方法であって、
前記バンク制御回路は、１回のアクセスで１つの前記キャッシュメモリのみにアクセスされるように、前記接続された前記キャッシュメモリへの外部からのアクセスを制御し、
（ａ）第１の前記キャッシュメモリ装置を設計する工程と、
（ｂ）前記工程（ａ）の後に、第２の前記キャッシュメモリ装置を設計する工程と
を備え、
前記工程（ａ）は、
（ａ−１）第１の所定数の前記キャッシュメモリと接続可能な前記バンク制御回路を設計する工程を含み、
前記工程（ｂ）は、
（ｂ−１）第２の所定数の前記キャッシュメモリを設計する工程と、
（ｂ−２）前記第２の所定数が前記第１の所定数よりも大きい場合に、前記第２の所定数の前記キャッシュメモリが接続可能になるように、前記工程（ａ−１）で設計した前記バンク制御回路を設計変更する工程と
を含む、キャッシュメモリ装置の設計方法。
【請求項１２】
（ｃ）前記工程（ｂ）の前に、前記バンク制御回路が接続可能な前記キャッシュメモリの総数に対応したメモリ容量をパラメータとして、前記バンク制御回路に関する設計データをハードウェア記述言語を用いて予め記述しておく工程を更に備え、
前記工程（ｂ−２）において、前記第２の所定数に対応したメモリ容量を前記パラメータに代入して、前記工程（ａ−１）で設計した前記バンク制御回路を設計変更する、請求項１１に記載のキャッシュメモリ装置の設計方法。
【請求項１３】
キャッシュ周辺回路を更に備え、前記メインメモリのアドレスを示しつつ、タグ及びインデックスを含むキャッシュアドレスが入力される前記キャッシュメモリ装置の設計方法であって、
前記キャッシュアドレスにおいて、タグ及びインデックスが占めるビット位置は固定であって、
前記キャッシュメモリは、前記キャッシュアドレス中のインデックスをアドレスとするタグメモリを有し、
前記タグメモリは前記キャッシュアドレス中のタグを記憶し、
前記キャッシュ周辺回路は、
前記接続された前記キャッシュメモリへの外部からのアクセスの際に、前記キャッシュメモリ装置に入力される前記キャッシュアドレス中のインデックスと、そのインデックスが示すアドレスに記憶されている前記タグメモリ内のデータとを連結して、コピーバックアドレスを生成して出力し、
前記メインメモリに対する書き込み方式には、前記コピーバックアドレスが用いられるコピーバック方式が採用され、
前記工程（ａ）は、
（ａ−２）前記キャッシュ周辺回路を設計する工程を更に含み、
前記工程（ｂ）において、前記工程（ａ−２）で設計された前記キャッシュ周辺回路を更に備える前記第２の前記キャッシュメモリ装置を設計する、請求項１１及び請求項１２のいずれか一つに記載のキャッシュメモリ装置の設計方法。
【請求項１４】
比較器を更に備え、前記メインメモリのアドレスを示しつつ、タグ及びインデックスを含むキャッシュアドレスが入力される前記キャッシュメモリ装置の設計方法であって、
前記キャッシュアドレスにおいて、タグ及びインデックスが占めるビット位置は固定であって、
前記キャッシュメモリは、前記キャッシュアドレス中のインデックスをアドレスとするタグメモリを有し、
前記タグメモリは前記キャッシュアドレス中のタグを記憶し、
前記比較器は、
前記接続された前記キャッシュメモリへの外部からのアクセスの際に、前記キャッシュメモリ装置に入力される前記キャッシュアドレス中のタグと、その際の前記キャッシュアドレス中のインデックスが示すアドレスに記憶されている前記タグメモリ内のデータとを比較し、両者の一致／不一致を検出し、
前記工程（ａ）は、
（ａ−２）前記比較器を設計する工程を更に含み、
前記工程（ｂ）において、前記工程（ａ−２）で設計された前記比較器を更に備える前記第２の前記キャッシュメモリ装置を設計する、請求項１１及び請求項１２のいずれか一つに記載のキャッシュメモリ装置の設計方法。
【請求項１５】
メインメモリのコピーデータを記憶するキャッシュメモリと、
複数の前記キャッシュメモリと接続可能であって、キャッシュ容量を示す信号が入力されるバンク制御回路と、
前記バンク制御回路に接続された前記キャッシュメモリに、前記バンク制御回路を介してアクセスする制御回路と
を備えるマイクロプロセッサの設計方法であって、
前記バンク制御回路は、前記信号に基づいて、前記接続された前記キャッシュメモリから少なくとも一つを選択し、選択した少なくとも一つの前記キャッシュメモリへの前記制御回路からのアクセスを許可することが可能であって、
（ａ）一つの前記キャッシュメモリ、前記バンク制御回路及び前記制御回路の配置の設計を行う工程と、
（ｂ）前記工程（ａ）で設計された前記配置において、前記一つの前記キャッシュメモリと前記制御回路とを直接接続する第１の配線パターンを設計する工程と、
（ｃ）前記工程（ａ）で設計された前記配置において、前記一つの前記キャッシュメモリと前記制御回路とを前記バンク制御回路を介して接続する第２の配線パターンを設計する工程と
を備える、マイクロプロセッサの設計方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、アクセス時間の短縮化を図るために設けられるキャッシュメモリ装置に関する。
【０００２】
【従来の技術】
多くのマイクロプロセッサは、データへのアクセスの高速化のために、メインメモリよりも高速アクセス可能なキャッシュメモリ装置を内蔵している。一般的に、キャッシュメモリ装置は、メインメモリのコピーデータを記憶するキャッシュメモリと、そのコピーデータをキャッシュが記憶しているかどうかの判定などを実行する周辺回路とを備えている。
【０００３】
キャッシュメモリ装置には、メインメモリのアドレスを示すキャッシュアドレスが入力され、そのキャッシュアドレスに含まれるタグあるいはインデックスを用いて、キャッシュメモリ装置の周辺回路は動作する。また、キャッシュメモリ装置のキャッシュメモリは、キャッシュアドレス中のインデックスをアドレスとしてアクセスされる。なお、特許文献１にキャッシュメモリ装置の構成の一例が開示されている。
【０００４】
【特許文献１】
特開平５−２８０４５号公報
【０００５】
【発明が解決しようとする課題】
ところで、従来のキャッシュメモリ装置においては、キャッシュメモリのメモリ容量を変更して、そのキャッシュ容量を変更する場合には、キャッシュメモリのアドレスであるインデックスのビット数を変更する必要があった。そのため、タグのビット数も変化していた。具体的には、キャッシュ容量を増加する場合には、インデックスのビット数を増加させる必要があり、減少する場合には、ビット数を減少させる必要がある。
【０００６】
従って、キャッシュ容量を変更する場合には、タグあるいはインデックスを用いて動作する周辺回路を設計変更する必要があった。
【０００７】
そこで、本発明は上述の問題に鑑みて成されたものであり、キャッシュ容量を変更する際に必要となる設計変更を低減することが可能な技術を提供することを目的とする。
【０００８】
【課題を解決するための手段】
この発明に係るバンク制御回路は、キャッシュ容量を示す信号が入力され、メインメモリのコピーデータを記憶する複数のキャッシュメモリと接続可能なバンク制御回路であって、前記信号に基づいて、接続されたキャッシュメモリから少なくとも一つのキャッシュメモリを選択し、選択した前記少なくとも一つのキャッシュメモリへの外部からのアクセスを許可する。
【０００９】
また、この発明に係るキャッシュメモリ装置の設計方法は、メインメモリのコピーデータを記憶するキャッシュメモリと、複数の第１の所定数の前記キャッシュメモリと接続可能であって、接続された前記キャッシュメモリへの外部からのアクセスを許可することが可能なバンク制御回路とを備えるキャッシュメモリ装置の設計方法であって、（ａ）前記バンク制御回路を設計する工程と、（ｂ）前記工程（ａ）で設計された前記バンク制御回路を備える第１の前記キャッシュメモリ装置を設計する工程と、（ｃ）前記工程（ａ）で設計された前記バンク制御回路を備える第２の前記キャッシュメモリ装置を設計する工程とを備え、前記工程（ｂ）は、（ｂ−１）前記第１の所定数以下の第２の所定数の前記キャッシュメモリを設計する工程を含み、前記工程（ｃ）は、（ｃ−１）前記第１の所定数以下であって前記第２の所定数とは異なる第３の所定数の前記キャッシュメモリを設計する工程を含む。
【００１０】
また、この発明に係る他のキャッシュメモリ装置の設計方法は、メインメモリのコピーデータを記憶するキャッシュメモリと、複数の前記キャッシュメモリと接続可能であって、接続された前記キャッシュメモリへの外部からのアクセスを許可することが可能なバンク制御回路とを備えるキャッシュメモリ装置の設計方法であって、前記バンク制御回路は、１回のアクセスで１つの前記キャッシュメモリのみにアクセスされるように、前記接続された前記キャッシュメモリへの外部からのアクセスを制御し、（ａ）第１の前記キャッシュメモリ装置を設計する工程と、（ｂ）前記工程（ａ）の後に、第２の前記キャッシュメモリ装置を設計する工程とを備え、前記工程（ａ）は、（ａ−１）第１の所定数の前記キャッシュメモリと接続可能な前記バンク制御回路を設計する工程を含み、前記工程（ｂ）は、（ｂ−１）第２の所定数の前記キャッシュメモリを設計する工程と、（ｂ−２）前記第２の所定数が前記第１の所定数よりも大きい場合に、前記第２の所定数の前記キャッシュメモリが接続可能になるように、前記工程（ａ−１）で設計した前記バンク制御回路を設計変更する工程とを含む。
【００１１】
また、この発明に係るマイクロプロセッサの設計方法は、メインメモリのコピーデータを記憶するキャッシュメモリと、複数の前記キャッシュメモリと接続可能であって、キャッシュ容量を示す信号が入力されるバンク制御回路と、前記バンク制御回路に接続された前記キャッシュメモリに、前記バンク制御回路を介してアクセスする制御回路とを備えるマイクロプロセッサの設計方法であって、前記バンク制御回路は、前記信号に基づいて、前記接続された前記キャッシュメモリから少なくとも一つを選択し、選択した少なくとも一つの前記キャッシュメモリへの前記制御回路からのアクセスを許可することが可能であって、（ａ）一つの前記キャッシュメモリ、前記バンク制御回路及び前記制御回路の配置の設計を行う工程と、（ｂ）前記工程（ａ）で設計された前記配置において、前記一つの前記キャッシュメモリと前記制御回路とを直接接続する第１の配線パターンを設計する工程と、（ｃ）前記工程（ａ）で設計された前記配置において、前記一つの前記キャッシュメモリと前記制御回路とを前記バンク制御回路を介して接続する第２の配線パターンを設計する工程とを備える。
【００１２】
【発明の実施の形態】
実施の形態１．
図１は本発明の実施の形態１に係るマイクロプロセッサ１の構成を示すブロック図である。図１に示されるように、本実施の形態１に係るマイクロプロセッサ１は、プログラムに従い命令を実行するＣＰＵ２と、キャッシュメモリ装置１０と、バス制御回路３とを備えている。
【００１３】
ＣＰＵ２は、バス制御回路３を介して、キャッシュメモリ装置１０と、マイクロプロセッサ１の外部に設けられるメインメモリ４へアクセスする。そして、バス制御回路３は、ＣＰＵの命令に従って、キャッシュメモリ装置１０及びメインメモリ４へのアクセスを実際に実行する。
【００１４】
ＣＰＵ２とバス制御回路３とはＣＰＵバスで接続されており、このＣＰＵバスを介して信号の受け渡しを行う。また、バス制御回路３と外部のメインメモリ４とは外部バスで接続されており、この外部バスを介して信号の受け渡しを行う。
【００１５】
キャッシュメモリ装置１０は、メインメモリ４のコピーデータを記憶する複数のキャッシュメモリ６と、キャッシュ周辺回路５と、キャッシュメモリ６へのバス制御回路３からのアクセスを制御するバンク制御回路７とを備えている。
【００１６】
本実施の形態１に係るキャッシュメモリ装置１０では、例えば８つのキャッシュメモリ６が設けられており、各キャッシュメモリ６は、メインメモリ４のコピーデータを記憶するための２Ｋバイトのメモリ容量を有している。つまり、キャッシュメモリ装置１０は、キャッシュ容量として使用可能な１６Ｋバイトのメモリ容量を有している。以後、８つのキャッシュメモリ６のそれぞれを、バンク０のキャッシュメモリ６、バンク１のキャッシュメモリ６、・・・バンク７のキャッシュメモリ６と呼ぶ。
【００１７】
バンク制御回路７は、複数のキャッシュメモリ６と接続可能であって、マイクロプロセッサ１の外部から入力される信号ＣＳＩＺＥに基づいて、接続されたキャッシュメモリ６から少なくとも一つのキャッシュメモリ６を選択する。そして、選択したキャッシュメモリ６へのバス制御回路３からのアクセスを許可する。これによって、バンク制御回路７が選択したキャッシュメモリ６の容量の総和が、キャッシュメモリ装置１０のキャッシュ容量となる。例えば、バンク制御回路７がバンク０のキャッシュメモリ６のみを選択した場合には、キャッシュメモリ装置１０のキャッシュ容量は２Ｋバイトとなり、バンク０とバンク１のキャッシュメモリ６を選択した場合には４Ｋバイトとなる。
【００１８】
本実施の形態１に係るバンク制御回路７は、例えば８つのキャッシュメモリ６と接続可能である。つまり、バンク制御回路７には、それが接続可能なキャッシュメモリ６の総数と同じ数のキャッシュメモリ６が接続されている。
【００１９】
本実施の形態１に係るキャッシュメモリ装置１０においては、データ置換にＬＲＵ（Ｌｅａ−ｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ）方式が採用されており、構成にはブロック長が４バイトの２ウェイ・セット・アソシアティブ（２−ｗａｙ  ｓｅｔ  ａｓｓｏｃｉａｔｉｖｅ）方式が採用されている。また、メインメモリ４に対する書き込み方式には、コピーバック方式が採用されている。
【００２０】
次に、マイクロプロセッサ１が有する構成要素間の接続関係について詳細に説明する。図２はバス制御回路３とキャッシュ周辺回路５との接続関係を、図３はバンク制御回路７とキャッシュメモリ６との接続関係を示している。
【００２１】
図２に示されるように、バス制御回路３はＣＰＵ２の要求によって、キャッシュメモリ６にアクセスするために必要なキャッシュメモリ制御信号ＣＭＣＮＴと、メインメモリ４のアドレスを示すキャッシュアドレスＡＤＲと、ステータスライトデータＳＷＤと、ライトデータＷＤとを出力する。
【００２２】
ここで、キャッシュメモリ制御信号ＣＭＣＮＴは、ステータスアクセス要求信号ＳＲＥＱ、ステータスライト制御信号ＳＷＣＮＴ、ｗａｙ０タグアクセス要求信号ＴＲＥＱ０、ｗａｙ０タグライト制御信号ＴＣＮＴ０、ｗａｙ１タグアクセス要求信号ＴＲＥＱ１、ｗａｙ１タグライト制御信号ＴＣＮＴ１、ｗａｙ０データアクセス要求信号ＤＲＥＱ０、ｗａｙ０データライト制御信号ＤＣＮＴ０、ｗａｙ１データアクセス要求信号ＤＲＥＱ１及びｗａｙ１データライト制御信号ＤＣＮＴ１を含んでいる。またバス制御回路３は、バンク制御回路７が出力するメモリリードデータＭＲＤに含まれるステータスリードデータＳＲＤが入力される。
【００２３】
キャッシュ周辺回路５は、図２に示されるように、メモリリードデータＭＲＤとキャッシュアドレスＡＤＲとが入力される。そして、それらに基づいて、ｗａｙ０ヒット信号ＨＩＴ０、ｗａｙ１ヒット信号ＨＩＴ１、ｗａｙ０コピーバック信号ＣＢ０、ｗａｙ１コピーバック信号ＣＢ１、コピーバックアドレスＣＡＤＲ及びリードデータＲＤをバス制御回路３に出力する。
【００２４】
各キャッシュメモリ６は、図３に示されるように、キャッシュアドレスＡＤＲと、ステータスライトデータＳＷＤと、ライトデータＷＤとが入力される。また、バンクｎ（ｎ＝０〜７）のキャッシュメモリ６は、バンクｎリードデータＢｎＲＤをバンク制御回路７に出力する。ここで、バンクｎリードデータＢｎＲＤは、バンクｎステータスリードデータＢｎＳＲＤ、バンクｎｗａｙ０リードデータＢｎｗ０ＲＤ、バンクｎｗａｙ１リードデータＢｎｗ１ＲＤ、バンクｎｗａｙ０タグリードデータＢｎｗ１ＴＲＤ及びバンクｎｗａｙ１タグリードデータＢｎｗ１ＴＲＤを含んでいる。
【００２５】
バンク制御回路７は、図３に示されるように、キャッシュアドレスＡＤＲの一部である信号ＢＩＤと、キャッシュメモリ制御信号ＣＭＣＮＴと、マイクロプロセッサ１の外部からの信号ＣＳＩＺＥとが入力される。そして、それらの信号に基づいて、バンクｎ制御信号ＢｎＣＮＴ（ｎ＝０〜７）をバンクｎのキャッシュメモリ６に出力する。またバンク制御回路７は、各キャッシュメモリ６から出力されたバンクｎリードデータＢｎＲＤと、信号ＣＳＩＺＥ及び信号ＢＩＤとに基づいて、メモリリードデータＭＲＤを出力する。
【００２６】
図４は、バス制御回路３から出力されるキャッシュアドレスＡＤＲの構成を示す図である。図４に示されるように、キャッシュアドレスＡＤＲは３２ビットで構成されている。そして、２２ビットのタグＴＧと、８ビットのインデックスＩＤと、２ビットのブロックオフセットＢＯとを含んでいる。
【００２７】
キャッシュアドレスＡＤＲにおいて、タグＴＧ、インデックスＩＤ及びブロックオフセットＢＯが占めるビット位置は固定であって、タグＴＧはキャッシュアドレスＡＤＲの０ビット目から２１ビット目までを占めており、インデックスＩＤは２２ビット目から２９ビット目までを占めており、ブロックオフセットＢＯは３０ビット目及び３１ビット目を占めている。そして、バンク制御回路７に入力される信号ＢＩＤはタグＴＧの一部であって、キャッシュアドレスＡＤＲの１９ビット目〜２１ビット目までの３ビットの信号である。なお、本実施の形態１に係るキャッシュアドレスＡＤＲは、０ビット目が最上位ビットであり、３１ビット目が最下位ビットである。
【００２８】
次に、バンク制御回路７、キャッシュメモリ６及びキャッシュ周辺回路５の構成について詳細に説明する。図５，７，８は、それらの構成をそれぞれ示している。
【００２９】
図５に示されるように、バンク制御回路７は、バンクデコーダ７００と、ＡＮＤ回路７０１〜７０８と、フリップフロップ７０９〜７１６と、セレクタ７１７とを備えている。
【００３０】
バンクデコーダ７００は、信号ＣＳＩＺＥ及び信号ＢＩＤに基づいて、バンク０選択信号Ｂ０ＳＥＬ〜バンク７選択信号Ｂ７ＳＥＬを出力する。ここで、信号ＣＳＩＺＥはキャッシュ容量を示す信号であって、２ビットで構成されている。例えば、信号ＣＳＩＺＥが“００”のとき２Ｋバイトを示し、“０１”のとき４Ｋバイトを示し、“１０”のとき８Ｋバイトを示し、“１１”のとき１６Ｋバイトを示す。そしてバンク制御回路７は、キャッシュメモリ装置１０のキャッシュ容量が、信号ＣＳＩＺＥが示すキャッシュ容量となるように、キャッシュメモリ６を選択する。例えば、信号ＣＳＩＺＥが“１０”を示す場合には、バンク０〜３のキャッシュメモリ６を選択する。なお信号ＣＳＩＺＥは、マイクロプロセッサ１の外部に設けられた外部装置から供給される場合もあるし、マイクロプロセッサ１の信号ＣＳＩＺＥの入力端子が電位固定されることによって供給される場合もある。
【００３１】
図６は、信号ＣＳＩＺＥと、信号ＢＩＤと、バンクｎ選択信号ＢｎＳＥＬとの関係を示す図である。図６に示されるように、信号ＣＳＩＺＥが“００”のとき、信号ＢＩＤの値に関わらず、バンク０選択信号Ｂ０ＳＥＬのみが常に“１”となり、バンク１選択信号Ｂ１ＳＥＬ〜バンク７選択信号Ｂ７ＳＥＬは常に“０”である。信号ＣＳＩＺＥが“０１”の場合には、信号ＢＩＤの最下位ビットが“０”のときにはバンク０選択信号Ｂ０ＳＥＬのみが“１”となり、“１”のときにはバンク１選択信号Ｂ１ＳＥＬのみが“１”となる。
【００３２】
また、信号ＣＳＩＺＥが“１０”の場合には、信号ＢＩＤの下位２ビットが“００”のときにはバンク０選択信号Ｂ０ＳＥＬのみが“１”となり、“０１”のときにはバンク１選択信号Ｂ１ＳＥＬのみが“１”となり、“１０”のときにはバンク２選択信号Ｂ２ＳＥＬのみが“１”となり、“１１”のときにはバンク３選択信号Ｂ３ＳＥＬのみが“１”となる。そして、信号ＣＳＩＺＥが“１１”の場合には、信号ＢＩＤが“０００”のときにはバンク０選択信号Ｂ０ＳＥＬのみが“１”となり、“００１”のときにはバンク１選択信号Ｂ１ＳＥＬのみが“１”となり、“０１０”のときにはバンク２選択信号Ｂ２ＳＥＬのみが“１”となり、“０１１”のときにはバンク３選択信号Ｂ３ＳＥＬのみが“１”となり、“１００”のときにはバンク４選択信号Ｂ４ＳＥＬのみが“１”となり、“１０１”のときにはバンク５選択信号Ｂ５ＳＥＬのみが“１”となり、“１１０”のときにはバンク６選択信号Ｂ６ＳＥＬのみが“１”となり、“１１１”のときにはバンク７選択信号Ｂ７ＳＥＬのみが“１”となる。
【００３３】
ＡＮＤ回路７０１〜７０８は、バンク０選択信号Ｂ０ＳＥＬ〜バンク７選択信号Ｂ７ＳＥＬとキャッシュメモリ制御信号ＣＭＣＮＴとの論理積をそれぞれ演算して、バンク０制御信号Ｂ０ＣＮＴ〜バンク７制御信号Ｂ７ＣＮＴとしてそれぞれ出力する。
【００３４】
なお、バンクｎ制御信号Ｂ０ＣＮＴ（ｎ＝０〜７）に含まれるステータスアクセス要求信号ＳＲＥＱ、ステータスライト制御信号ＳＷＣＮＴ、ｗａｙ０タグアクセス要求信号ＴＲＥＱ０、ｗａｙ０タグライト制御信号ＴＣＮＴ０、ｗａｙ１タグアクセス要求信号ＴＲＥＱ１、ｗａｙ１タグライト制御信号ＴＣＮＴ１、ｗａｙ０データアクセス要求信号ＤＲＥＱ０、ｗａｙ０データライト制御信号ＤＣＮＴ０、ｗａｙ１データアクセス要求信号ＤＲＥＱ１及びｗａｙ１データライト制御信号ＤＣＮＴ１を、それぞれ、バンクｎステータスアクセス要求信号ＢｎＳＲＥＱ、バンクｎステータスライト制御信号ＢｎＳＷＣＮＴ、バンクｎｗａｙ０Ｂｎタグアクセス要求信号ＴＲＥＱ０、バンクｎｗａｙ０タグライト制御信号ＢｎＴＣＮＴ０、バンクｎｗａｙ１タグアクセス要求信号ＢｎＴＲＥＱ１、バンクｎｗａｙ１タグライト制御信号ＢｎＴＣＮＴ１、バンクｎｗａｙ０データアクセス要求信号ＢｎＤＲＥＱ０、バンクｎｗａｙ０データライト制御信号ＢｎＤＣＮＴ０、バンクｎｗａｙ１データアクセス要求信号ＢｎＤＲＥＱ１及びバンクｎｗａｙ１データライト制御信号ＢｎＤＣＮＴ１と呼ぶ。
【００３５】
フリップフロップ７０９〜７１６は、バンク０選択信号Ｂ０ＳＥＬ〜バンク７選択信号Ｂ７ＳＥＬがそれぞれ入力されている。そして、フリップフロップ７０９〜７１６は、図示しないクロック信号ＣＬＫも入力されており、そのクロック信号ＣＬＫの１クロックサイクル分、入力信号を遅延させて出力する。なお、クロック信号ＣＬＫはＣＰＵ２にも入力されており、ＣＰＵ２はこのクロック信号ＣＬＫをＣＰＵクロックとして動作する。
【００３６】
セレクタ７１７は、バンク０リードデータＢ０ＲＤ〜バンク７リードデータＢ７ＲＤと、フリップフロップ７０９〜７１６の出力とが入力されている。そして、フリップフロップ７０９〜７１６の出力に基づいて、バンク０リードデータＢ０ＲＤ〜バンク７リードデータＢ７ＲＤのうちの一つを選択して、メモリリードデータＭＲＤとして出力する。
【００３７】
具体的には、セレクタ７１７は、フリップフロップ７０９〜７１６の出力のうち、フリップフロップ７０９の出力が排他的に“１”である場合には、バンク０リードデータＢ０ＲＤを出力し、フリップフロップ７１０の出力が排他的に“１”である場合には、バンク１リードデータＢ１ＲＤを出力し、フリップフロップ７１１の出力が排他的に“１”である場合には、バンク２リードデータＢ２ＲＤを出力し、フリップフロップ７１２の出力が排他的に“１”である場合には、バンク３リードデータＢ３ＲＤを出力する。また、フリップフロップ７１３の出力が排他的に“１”である場合には、バンク４リードデータＢ３ＲＤを出力し、フリップフロップ７１４の出力が排他的に“１”である場合には、バンク５リードデータＢ５ＲＤを出力し、フリップフロップ７１５の出力が排他的に“１”である場合には、バンク６リードデータＢ６ＲＤを出力し、フリップフロップ７１６の出力が排他的に“１”である場合には、バンク７リードデータＢ７ＲＤを出力する。
【００３８】
なお、フリップフロップ７０９〜７１６の出力がすべて“０”、あるいは２つ以上の出力が“１”となる場合には、セレクタ７１７の出力は不定となる。
【００３９】
このように、バンク制御回路７は信号ＣＳＩＺＥに基づいてキャッシュメモリ６を選択して、選択したキャッシュメモリ６へのアクセスを許可している。例えば、信号ＣＳＩＺＥが“０１”であって４Ｋバイトを示す場合、図６に示されるように、バンク制御回路７はバンク０，１のキャッシュメモリ６を選択し、バンク０，１のキャッシュメモリ６へキャッシュメモリ制御信号ＣＭＣＮＴを出力してる。これによって、選択されたバンク０，１のキャッシュメモリ６へのバス制御回路３からのアクセスが許可され、キャッシュメモリ装置１０のキャッシュ容量が４Ｋバイトとなる。
【００４０】
そしてバンク制御回路７は、信号ＢＩＤの値によって、キャッシュメモリ制御信号ＣＭＣＮＴをバンク０のキャッシュメモリ６に出力したり、バンク１のキャッシュメモリ６に出力したりして、キャッシュメモリ制御信号ＣＭＣＮＴの出力先のキャッシュメモリ６を切り替えている。これにより、バス制御回路３からの１回のアクセスでは、一つのキャッシュメモリ６がアクセスされる。
【００４１】
バンクｎのキャッシュメモリ６は、図７に示されるように、キャッシュメモリ６内の状態を示すデータを格納するステータスメモリ６００と、キャッシュアドレスＡＤＲ中のタグＴＧを記憶するｗａｙ０タグメモリ６０１及びｗａｙ１タグメモリ６０２と、メインメモリ４のコピーデータを記憶するｗａｙ０データメモリ６０３及びｗａｙ１データメモリ６０４とを備えている。そして、こられのメモリのそれぞれは、キャッシュアドレスＡＤＲ中のインデックスＩＤをアドレスとしている。つまり各メモリのアドレス幅は８ビットであって、インデックスＩＤで示されるメモリ領域にアクセスされる。なお、ｗａｙ０タグメモリ６０１及びｗａｙ１タグメモリ６０２をあわせて「タグメモリ６１２」と、ｗａｙ０データメモリ６０３及びｗａｙ１データメモリ６０４をあわせて「データメモリ６３４」と呼ぶ場合がある。
【００４２】
ステータスメモリ６００は、バンクｎステータスアクセス要求信号ＢｎＳＲＥＱ及びバンクｎステータスライト制御信号ＢｎＳＷＣＮＴによってアクセス制御される。具体的には、バンクｎステータスアクセス要求信号ＢｎＳＲＥＱがＨｉｇｈレベルのときにステータスメモリ６００へのアクセスが許可され、バンクｎステータスライト制御信号ＢｎＳＷＣＮＴがＨｉｇｈレベルのときライトアクセスされ、Ｌｏｗレベルのときリードアクセスされる。
【００４３】
ステータスメモリ６００にはステータスライトデータＳＷＤが書き込まれ、ステータスメモリ６００から読み出されたデータは、バンクｎステータスリードデータＢｎＳＲＤとして出力される。そして、バンクｎステータスリードデータＢｎＳＲＤは、バンクｎデ−タＢｎｗ０ｖｄ，Ｂｎｗ１ｖｄ，Ｂｎｗ０ｄｙ，Ｂｎｗ１ｄｙ，ＢｎＬＲＵ（ｎ＝０〜７）で構成されている。
【００４４】
ステータスメモリ６００のデータ幅は５ビットであって、各アドレスにおいて記憶されている５ビットの情報を、それぞれ、ｗａｙ０＿ｖａｌｉｄビット、ｗａｙ１＿ｖａｌｉｄビット、ｗａｙ０＿ｄｉｒｔｙビット、ｗａｙ１＿ｄｉｒｔｙビット及びＬＲＵビットと呼ぶ。そして、これらのビットをまとめて「キャッシュステータス」と呼ぶ。
【００４５】
各アドレスのｗａｙ０＿ｖａｌｉｄビットは、そのアドレスと同じアドレスにおけるｗａｙ０タグメモリ６０１及びｗａｙ０データメモリ６０３に格納されているデータが有効であるかどうかを示し、“１”のとき“有効”を示す。また、各アドレスのｗａｙ１＿ｖａｌｉｄビットは、そのアドレスと同じアドレスにおけるｗａｙ１タグメモリ６０２及びｗａｙ１データメモリ６０４に格納されているデータが有効であるかどうかを示し、“１”のとき“有効”を示す。そして、ｗａｙ０＿ｖａｌｉｄビットが示す１ビットのデータは、バンクｎデータＢｎｗ０ｖｄとして出力され、ｗａｙ１＿ｖａｌｉｄビットが示す１ビットのデータは、バンクｎデータＢｎｗ１ｖｄとして出力される。
【００４６】
各アドレスのｗａｙ０＿ｄｉｒｔｙビットは、そのアドレスと同じアドレスにおけるｗａｙ０データメモリ６０３に格納されているデータが、メインメモリ４のデータと異なるかどうかを示し、“１”のとき異なることを示している。言い換えれば、ｗａｙ０＿ｄｉｒｔｙビットは、ｗａｙ０データメモリ６０３に格納されているデータが、メインメモリ４のコピーデータであるかどうかを示し、“１”のときコピーデータでないことを示している。また、各アドレスのｗａｙ１＿ｄｉｒｔｙビットは、そのアドレスと同じアドレスにおけるｗａｙ１データメモリ６０４に格納されているデータが、メインメモリ４のデータと異なるかどうかを示し、“１”のとき異なることを示す。そして、ｗａｙ０＿ｄｉｒｔｙビットが示す１ビットのデータは、バンクｎデータＢｎｗ０ｄｙとして出力され、ｗａｙ１＿ｄｉｒｔｙビットが示す１ビットのデータは、バンクｎデータＢｎｗ１ｄｙとして出力される。
【００４７】
各アドレスのＬＲＵビットは、そのアドレスと同じアドレスにおけるｗａｙ０データメモリ６０３及びｗａｙ１データメモリ６０４のメモリ領域のうち、最近にアクセスされた方を示すビットであり、ＬＲＵビットが“０”の場合には、ｗａｙ０データメモリ６０３が、“１”の場合には、ｗａｙ１データメモリ６０４が最近にアクセスされたことを示す。そして、ＬＲＵビットが示す１ビットのデータは、バンクｎデータＢｎＬＲＵとして出力される。
【００４８】
ｗａｙ０タグメモリ６０１は、バンクｎｗａｙ０タグアクセス要求信号ＢｎＴＲＥＱ０及びバンクｎｗａｙ０タグライト制御信号ＢｎＴＣＮＴ０によってアクセス制御される。具体的には、バンクｎｗａｙ０タグアクセス要求信号ＢｎＴＲＥＱ０がＨｉｇｈレベルのときにｗａｙ０タグメモリ６０１へのアクセスが許可され、バンクｎｗａｙ０タグライト制御信号ＢｎＴＣＮＴ０がＨｉｇｈレベルのときライトアクセスされ、Ｌｏｗレベルのときリードアクセスされる。
【００４９】
ｗａｙ０タグメモリ６０１にはキャッシュアドレスＡＤＲ中のタグＴＧが書き込まれる。ｗａｙ０タグメモリ６０１から読み出されたデータは、バンクｎｗａｙ０タグリードデータＢｎｗ０ＴＲＤとして出力される。
【００５０】
ｗａｙ１タグメモリ６０２は、バンクｎｗａｙ１タグアクセス要求信号ＢｎＴＲＥＱ１及びバンクｎｗａｙ１タグライト制御信号ＢｎＴＣＮＴ１によってアクセス制御される。具体的には、バンクｎｗａｙ１タグアクセス要求信号ＢｎＴＲＥＱ１がＨｉｇｈレベルのときにｗａｙ１タグメモリ６０２へのアクセスが許可され、バンクｎｗａｙ１タグライト制御信号ＢｎＴＣＮＴ１がＨｉｇｈレベルのときライトアクセスされ、Ｌｏｗレベルのときリードアクセスされる。
【００５１】
ｗａｙ１タグメモリ６０２にはキャッシュアドレスＡＤＲ中のタグＴＧが書き込まれる、ｗａｙ１タグメモリ６０２から読み出されたデータは、バンクｎｗａｙ１タグリードデータＢｎｗ１ＴＲＤとして出力される。
【００５２】
なお、ｗａｙ０タグメモリ６０１及びｗａｙ１タグメモリ６０２のデータ幅は、タグＴＧのビット数と同じ２２ビットである。
【００５３】
ｗａｙ０データメモリ６０３は、バンクｎｗａｙ０データアクセス要求信号ＢｎＤＲＥＱ０及びバンクｎｗａｙ０データライト制御信号ＢｎＤＣＮＴ０によってアクセス制御される。具体的には、バンクｎｗａｙ０データアクセス要求信号ＢｎＤＲＥＱ０がＨｉｇｈレベルのときにｗａｙ０データメモリ６０３へのアクセスが許可され、バンクｎｗａｙ０データライト制御信号ＢｎＤＣＮＴ０がＨｉｇｈレベルのときライトアクセスされ、Ｌｏｗレベルのときリードアクセスされる。
【００５４】
ｗａｙ０データメモリ６０３には、ライトデータＷＤが書き込まれる。そして、ｗａｙ０データメモリ６０３から読み出されたデータは、バンクｎｗａｙ０リードデータＢｎｗ０ＲＤとして出力される。
【００５５】
ｗａｙ１データメモリ６０４は、バンクｎｗａｙ１データアクセス要求信号ＢｎＤＲＥＱ１及びバンクｎｗａｙ１データライト制御信号ＢｎＤＣＮＴ１によってアクセス制御される。具体的には、バンクｎｗａｙ１データアクセス要求信号ＢｎＤＲＥＱ１がＨｉｇｈレベルのときにｗａｙ１データメモリ６０３へのアクセスが許可され、バンクｎｗａｙ１データライト制御信号ＢｎＤＣＮＴ１がＨｉｇｈレベルのときライトアクセスされ、Ｌｏｗレベルのときリードアクセスされる。
【００５６】
ｗａｙ１データメモリ６０４にもライトデータＷＤが書き込まれる。そして、ｗａｙ１データメモリ６０４から読み出されたデータは、バンクｎｗａｙ１リードデータＢｎｗ１ＲＤとして出力される。
【００５７】
ｗａｙ０データメモリ６０３及びｗａｙ１データメモリ６０４のデータ幅は、ブロック長と同じく４バイトである。また、ｗａｙ０データメモリ６０３及びｗａｙ１データメモリ６０４のアドレス幅は８ビットであるため、それぞれのメモリは、１Ｋバイト（４バイト×２５６）の容量を有する。従って、バンクｎのキャッシュメモリ６は、メインメモリ４のコピーデータを記憶するための２Ｋバイトのメモリ容量を備えている。なお、ｗａｙ０データメモリ６０３及びｗａｙ１データメモリ６０４が、このように４バイト単位でアクセスされるため、キャッシュアドレスＡＤＲ中のブロックオフセットＢＯは、キャッシュメモリ６内の各メモリをアクセスする際には特に使用されない。
【００５８】
上述のようにして、バンクｎのキャッシュメモリ６から読み出されたバンクｎステータスリードデータＢｎＳＲＤ、バンクｎｗａｙ０リードデータＢｎｗ０ＲＤ、バンクｎｗａｙ１リードデータＢｎｗ１ＲＤ、バンクｎｗａｙ０タグリードデータＢｎｗ１ＴＲＤ及びバンクｎｗａｙ１タグリードデータＢｎｗ１ＴＲＤは、バンクｎリードデータＢｎＲＤとしてバンク制御回路７に入力される。
【００５９】
そして、バンク制御回路７のセレクタ７１７によって選択されたバンクｎリードデータに含まれるバンクｎステータスリードデータＢｎＳＲＤ、バンクｎｗａｙ０リードデータＢｎｗ０ＲＤ、バンクｎｗａｙ１リードデータＢｎｗ１ＲＤ、バンクｎｗａｙ０タグリードデータＢｎｗ１ＴＲＤ及びバンクｎｗａｙ１タグリードデータＢｎｗ１ＴＲＤは、それぞれ、ステータスリードデータＳＲＤ、ｗａｙ０リードデータｗ０ＲＤ、ｗａｙ１リードデータｗ１ＲＤ、ｗａｙ０タグリードデータｗ１ＴＲＤ及びｗａｙ１タグリードデータｗ１ＴＲＤとしてバンク制御回路７から出力される。つまり、メモリリードデータＭＲＤは、ステータスリードデータＳＲＤ、ｗａｙ０リードデータｗ０ＲＤ、ｗａｙ１リードデータｗ１ＲＤ、ｗａｙ０タグリードデータｗ１ＴＲＤ及びｗａｙ１タグリードデータｗ１ＴＲＤを含んでいる。
【００６０】
キャッシュ周辺回路５は、図８に示されるように、比較器５００，５０２と、ＡＮＤ回路５０１，５０３，５０５，５０８と、インバータ５０４，５０６，５０７と、ＯＲ回路５０９，５１０と、セレクタ５１１，５１４と、フリップフロップ５１２，５１３と、連結器５１５とを備えている。
【００６１】
フリップフロップ５１２，５１３は、キャッシュアドレスＡＤＲ中のタグＴＧ及びインデックスＩＤを、上述のクロック信号ＣＬＫの１クロック分遅延させてそれぞれ出力する。
【００６２】
比較器５００は、メモリリードデータＭＲＤに含まれるｗａｙ０タグリードデータｗ０ＴＲＤと、フリップフロップ５１２の出力とを比較し、両者の一致を検出すると“１”を出力し、不一致を検出すると“０”を出力する。また、比較器５０２は、メモリリードデータＭＲＤに含まれるｗａｙ１タグリードデータｗ１ＴＲＤと、フリップフロップ５１２の出力とを比較し、両者の一致を検出すると“１”を出力し、不一致を検出すると“０”を出力する。
【００６３】
ＡＮＤ回路５０１は、比較器５００の出力と、データｗ０ｖｄとの論理積を演算し、ｗａｙ０ヒット信号ＨＩＴ０として出力する。また、ＡＮＤ回路５０３は、比較器５０２の出力と、データｗ１ｖｄとの論理積を演算し、ｗａｙ１ヒット信号ＨＩＴ１として出力する。
【００６４】
ＡＮＤ回路５０５は、インバータ５０４で反転されたＡＮＤ回路５０１の出力と、データｗ０ｄｙと、データＬＲＵとの論理積を演算し、ｗａｙ０コピーバック信号ＣＢ０として出力する。またＡＮＤ回路５０８は、インバータ５０６で反転されたＡＮＤ回路５０３の出力と、データｗ１ｄｙと、インバータ５０７で反転されたデータＬＲＵとの論理積を演算し、ｗａｙ１コピーバック信号ＣＢ１として出力する。
【００６５】
ＯＲ回路５０９は、ＡＮＤ回路５０１，５０５の出力の論理和を演算して出力し、ＯＲ回路５１０は、ＡＮＤ回路５０３，５０８の出力の論理和を演算して出力する。
【００６６】
セレクタ５１１は、ＯＲ回路５０９，５１０の出力に基づいて、ｗａｙ０リードデータｗ０ＲＤ及びｗａｙ１リードデータｗ１ＲＤのどちらか一方を選択してリードデータＲＤとして出力する。ＯＲ回路５０９の出力が“１”かつＯＲ回路５１０の出力が“０”のときには、ｗａｙ０リードデータｗ０ＲＤをリードデータＲＤとして出力し、ＯＲ回路５０９の出力が“０”かつＯＲ回路５１０の出力が“１”のときには、ｗａｙ１リードデータｗ１ＲＤをリードデータＲＤとして出力する。ＯＲ回路５０９，５１０の出力が互いに同じ場合には、セレクタ５１１の出力は不定である。
【００６７】
セレクタ５１４は、ＡＮＤ回路５０５，５０８の出力に基づいて、ｗａｙ０タグリードデータｗ０ＴＲＤ及びｗａｙ１タグリードデータｗ１ＴＲＤのどちらか一方を選択して出力する。ＡＮＤ回路５０５の出力が“１”かつＡＮＤ回路５０８の出力が“０”のときには、ｗａｙ０タグリードデータｗ０ＴＲＤを出力し、ＡＮＤ回路５０５の出力が“０”かつＡＮＤ回路５０８の出力が“１”のときには、ｗａｙ１タグリードデータｗ１ＴＲＤを出力する。ＡＮＤ回路５０５，５０８の出力が互いに同じ場合には、セレクタ５１４の出力は不定である。
【００６８】
連結器５１５は、フリップフロップ５１３の出力と、セレクタ５１４の出力とを連結してコピーバックアドレスＣＡＤＲとして出力する。連結器５１５は、コピーバックアドレスＣＡＤＲの０ビット目から２１ビット目にセレクタ５１４の出力を割り当て、２２ビット目から２９ビット目にフリップフロップ５１３の出力を割り当てる。つまり、コピーバックアドレスＣＡＤＲは、０ビット目から２１ビット目にセレクタ５１４の出力を含み、２２ビット目から２９ビット目に、入力されたキャッシュアドレスＡＤＲ中のインデックスＩＤを含む。
【００６９】
次に、本実施の形態１に係るマイクロプロセッサ１のキャッシュ動作について説明する。図９〜１２はリード動作時のタイミングチャートを示しており、図１３〜１５はライト動作時のタイミングチャートを示している。また、図１６〜１９はコピーバックを行う際のタイミングチャートを示しており、図２０，２１は、異なるキャッシュメモリ６に連続してアクセスする際のタイミングチャートを示している。
【００７０】
なお、図中のサイクル２０１〜２２８，３０１〜３１１は、ＣＰＵクロックであるクロック信号ＣＬＫの１サイクル分を示している。また、以下の動作説明では、ｗａｙ０＿ｖａｌｉｄビット、ｗａｙ１＿ｖａｌｉｄビット、ｗａｙ０＿ｄｉｒｔｙビット、ｗａｙ１＿ｄｉｒｔｙビット及びＬＲＵビットに対応するデータを、この順で“１１００１”のように２進数表記する。また、サイクル２０１，２０４，２１２，２１３，２１６，２１９，２２０．２２８，３０１，３１１においては、マイクロプロセッサ１はキャッシュ動作以外の動作を実行している。
【００７１】
まず、図９〜１２を参照して、マイクロプロセッサ１のキャシュ動作におけるリード動作について説明する。
【００７２】
バンク制御回路７は、信号ＣＳＩＺＥに基づいて、複数のキャッシュメモリ６から、アクセスを許可するキャッシュメモリ６を選択する。これによって、キャッシュメモリ装置１０のキャッシュ容量が、信号ＣＳＩＺＥが示すキャッシュメモリ容量となる。
【００７３】
ＣＰＵ２はバス制御回路３に対して、キャッシュメモリ装置１０のキャッシュメモリ６にリードアクセスするように要求する。
【００７４】
ＣＰＵ２の要求を受け取ったバス制御回路３は図９に示されるように、サイクル２０２において、キャッシュメモリ装置１０に値“Ａ０”のキャッシュアドレスＡＤＲを出力し、同時にキャッシュメモリ制御信号ＣＭＣＮＴを出力する。
【００７５】
バンク制御回路７は、受け取ったキャッシュアドレスＡＤＲ中に含まれる信号ＢＩＤに基づいて、選択したキャッシュメモリ６中のバンクｎのキャッシュメモリ６に、キャッシュメモリ制御信号ＣＭＣＮＴをバンクｎ制御信号ＢｎＣＮＴとして出力する。
【００７６】
サイクル２０２では、バンクｎのキャッシュメモリ６が有する各メモリにリードアクセスが実行される。
【００７７】
図９に示されるように、サイクル２０２では、バンクｎステータスアクセス要求信号ＢｎＳＲＥＱは“１”を示し、バンクｎステータスライト制御信号ＢｎＳＷＣＮＴは“０”を示す。従って、バンクｎのキャッシュメモリ６のステータスメモリ６００において、キャッシュアドレスＡＤＲ中のインデックスＩＤが示すアドレスに対してリードアクセスが実行される。その結果、サイクル２０３において、インデックスＩＤが示すアドレスのメモリ領域からデータが読み出されて、バンクｎステータスリードデータＢｎＳＲＤとしてバンク制御回路７に入力される。なお、サイクル２０３で読み出されたバンクｎステータスリードデータＢｎＳＲＤの値を“１１００１”とする。
【００７８】
またサイクル２０２では、図１０，１１に示されるように、バンクｎｗａｙ０タグアクセス要求信号ＢｎＴＲＥＱ０及びバンクｎｗａｙ１タグアクセス要求信号ＢｎＴＲＥＱ１がともに“１”を示し、バンクｎｗａｙ０タグライト制御信号ＢｎＴＣＮＴ０及びバンクｎｗａｙ１タグライト制御信号ＢｎＴＣＮＴ１がともに“０”を示す。従って、バンクｎのキャッシュメモリ６のタグメモリ６１２において、キャッシュアドレスＡＤＲ中のインデックスＩＤが示すアドレスに対してリードアクセスが実行される。その結果、サイクル２０３において、インデックスＩＤが示すアドレスのメモリ領域からデータが読み出されて、バンクｎｗａｙ０タグリードデータＢｎｗ０ＴＲＤ及びバンクｎｗａｙ１タグリードデータＢｎｗ１ＴＲＤとしてバンク制御回路７に入力される。なお、サイクル２０３で読み出されたバンクｎｗａｙ０タグリードデータＢｎｗ０ＴＲＤ及びバンクｎｗａｙ１タグリードデータＢｎｗ１ＴＲＤの値をそれぞれ“Ｔ００”及び“Ｔ１０”とする。
【００７９】
またサイクル２０２では、図１２に示されるように、バンクｎｗａｙ０データアクセス要求信号ＢｎＤＲＥＱ０及びバンクｎｗａｙ１データアクセス要求信号ＢｎＤＲＥＱ１がともに“１”を示し、バンクｎｗａｙ０データライト制御信号ＢｎＤＣＮＴ０及びバンクｎｗａｙ１データライト制御信号ＢｎＤＣＮＴ１がともに“０”を示す。従って、バンクｎのキャッシュメモリ６のデータメモリ６３４において、キャッシュアドレスＡＤＲ中のインデックスＩＤが示すアドレスに対してリードアクセスが実行される。その結果、サイクル２０３において、インデックスＩＤが示すアドレスのメモリ領域からデータが読み出されて、バンクｎｗａｙ０リードデータＢｎｗ０ＲＤ及びバンクｎｗａｙ１リードデータＢｎｗ１ＲＤとしてバンク制御回路７に入力される。なお、サイクル２０３で読み出されたバンクｎｗａｙ０リードデータＢｎｗ０ＲＤ及びバンクｎｗａｙ１リードデータＢｎｗ１ＲＤの値をそれぞれ“Ｄ００”及び“Ｄ１０”とする。
【００８０】
バンク制御回路７は、サイクル２０３において、バンクｎリードデータＢｎＲＤを、メモリリードデータＭＲＤとして出力する。
【００８１】
サイクル２０３において、キャッシュ周辺回路５のフリップフロップ５１２は、サイクル２０２で入力されたキャッシュアドレスＡＤＲ中のタグＴＧを出力する。なお、このタグＴＧの値を“Ｔ００”とする。
【００８２】
比較器５００は、フリップフロップ５１２の出力値“Ｔ００”と、ｗａｙ０タグリードデータｗ０ＴＲＤの値“Ｔ００”とが一致しているため、“１”を出力する。上述のように、バンクｎステータスリードデータＢｎＳＲＤの値は“１１００１”であるため、データｗ０ｖｄは“１”となる。従って、ＡＮＤ回路５０１の入力にはともに“１”が入力されて、ＡＮＤ回路５０１は“１”を出力する。これにより、図１０に示されるように、サイクル２０３において、ｗａｙ０ヒット信号ＨＩＴ０は“１”となる。
【００８３】
比較器５０２は、フリップフロップ５１２の出力値“Ｔ００”と、ｗａｙ１タグリードデータｗ１ＴＲＤの値“Ｔ１０”とが一致していないため、“０”を出力する。比較器５０２の出力が“０”であるため、ＡＮＤ回路５０３は“０”を出力する。これにより、図１１に示されるように、サイクル２０３において、ｗａｙ１ヒット信号ＨＩＴ１は“０”となる。
【００８４】
ＡＮＤ回路５０５は、データｗ０ｄｙが“０”であるため“０”を出力する。これにより、図１０に示されるように、サイクル２０３において、ｗａｙ０コピーバック信号ＣＢ０は“０”となる。またＡＮＤ回路５０８は、データｗ１ｄｙが“０”であるため“０”を出力する。これにより、図１１に示されるように、サイクル２０３において、ｗａｙ１コピーバック信号ＣＢ１は“０”となる。
【００８５】
ＯＲ回路５０９は、ＡＮＤ回路５０１の出力が“１”であるため“１”を出力し、ＯＲ回路５１０は、ＡＮＤ回路５０３，５０８の出力がともに“０”であるため“０”を出力する。従って、セレクタ５１１は、ｗａｙ０リードデータｗ０ＲＤを選択する。これにより、図１２に示されるように、サイクル２０３において、リードデータＲＤとして“Ｄ００”がバス制御回路３に出力される。そして、バス制御回路３は、受け取ったリードデータＲＤをＣＰＵ２に出力する。
【００８６】
また、サイクル２０３では、ステータスメモリ６００へのライトアクセスも実行され、キャッシュステータスの更新が行われる。
【００８７】
サイクル２０３において、バス制御回路３は、ステータスリードデータＳＲＤが入力され、ｗａｙ０がヒット状態であることを認識する。従って、キャッシュステータスのＬＲＵビットを“０”に更新する必要がある。また、サイクル２０２でのキャッシュメモリ装置１０へのアクセスはリードアクセスであるため、データｗａｙ０＿ｖａｌｉｄビット、ｗａｙ１＿ｖａｌｉｄビット、ｗａｙ０＿ｄｉｒｔｙビット及びｗａｙ１＿ｄｉｒｔｙビットを更新する必要は無い。従って、バス制御回路３は、バンクｎのキャッシュメモリ６のステータスメモリ６００に、キャッシュステータスとして“１１０００”を書き込む。
【００８８】
具体的には、図９に示されるように、サイクル２０３において、バス制御回路３は、キャッシュメモリ装置１０に値“Ａ０”のキャッシュアドレスＡＤＲを出力し、同時に値“１１０００”のステータスライトデータＳＷＤとキャッシュメモリ制御信号ＣＭＣＮＴを出力する。
【００８９】
このサイクルでは、ステータスメモリ６００へのライトアクセスが実行されるため、図９に示されるように、バンクｎステータスアクセス要求信号ＢｎＳＲＥＱ及びバンクｎステータスライト制御信号ＢｎＳＷＣＮＴはともに“１”を示す。従って、バンクｎのキャッシュメモリ６のステータスメモリ６００において、キャッシュアドレスＡＤＲ中のインデックスＩＤが示すアドレスに“１１０００”が書き込まれる。このようにして、キャッシュステータスが更新される。
【００９０】
次に、ＣＰＵ２はバス制御回路３に対して、キャッシュメモリ装置１０のキャッシュメモリ６にリードアクセスするように要求する。ＣＰＵ２の要求を受け取ったバス制御回路３は、図９に示されるように、サイクル２０５において、キャッシュメモリ装置１０に値“Ａ１”のキャッシュアドレスＡＤＲを出力し、同時にキャッシュメモリ制御信号ＣＭＣＮＴを出力する。
【００９１】
バンク制御回路７は、受け取ったキャッシュアドレスＡＤＲ中に含まれる信号ＢＩＤに基づいて、選択したキャッシュメモリ６中のバンクｎのキャッシュメモリ６に、キャッシュメモリ制御信号ＣＭＣＮＴをバンクｎ制御信号ＢｎＣＮＴとして出力する。
【００９２】
そして、上述のようにして、サイクル２０６において、バンクｎのキャッシュメモリ６のステータスメモリ６００、タグメモリ６１２及びデータメモリ６３４からデータが読み出される。なお、図９〜１２に示されるように、サイクル２０６で読み出されたバンクｎステータスリードデータＢｎＳＲＤ、バンクｎｗａｙ０タグリードデータＢｎｗ０ＴＲＤ、バンクｎｗａｙ１タグリードデータＢｎｗ１ＴＲＤ、バンクｎｗａｙ０リードデータＢｎｗ０ＲＤ及びバンクｎｗａｙ１リードデータＢｎｗ１ＲＤの値を、それぞれ“１１０００”、“Ｔ０１”、“Ｔ１１”、“Ｄ０１”及び“Ｄ１１”とする。
【００９３】
サイクル２０６において、キャッシュ周辺回路５のフリップフロップ５１２は、サイクル２０５で入力されたキャッシュアドレスＡＤＲ中のタグＴＧを出力する。なお、このタグＴＧの値を“Ｔ２１”とする。
【００９４】
比較器５００は、フリップフロップ５１２の出力値“Ｔ２１”と、ｗａｙ０タグリードデータｗ０ＴＲＤの値“Ｔ０１”とが一致していないため、“０”を出力する。比較器５００の出力が“０”であるため、ＡＮＤ回路５０１は“０”を出力する。これにより、図１０に示されるように、サイクル２０６において、ｗａｙ０ヒット信号ＨＩＴ０は“０”となる。
【００９５】
比較器５０２は、フリップフロップ５１２の出力値“Ｔ００”と、ｗａｙ１タグリードデータｗ１ＴＲＤの値“Ｔ０１”とが一致していないため、“０”を出力する。比較器５０２の出力が“０”であるため、ＡＮＤ回路５０３は“０”を出力する。これにより、図１１に示されるように、サイクル２０６において、ｗａｙ１ヒット信号ＨＩＴ１は“０”となる。
【００９６】
ＡＮＤ回路５０５は、データｗ０ｄｙが“０”であるため“０”を出力する。これにより、図１０に示されるように、サイクル２０６において、ｗａｙ０コピーバック信号ＣＢ０は“０”となる。またＡＮＤ回路５０８は、データｗ１ｄｙが“０”であるため“０”を出力する。これにより、図１１に示されるように、サイクル２０６において、ｗａｙ１コピーバック信号ＣＢ１は“０”となる。
【００９７】
ＯＲ回路５０９は、ＡＮＤ回路５０１，５０５の出力がともに“０”であるため“０”を出力し、ＯＲ回路５１０は、ＡＮＤ回路５０３，５０８の出力がともに“０”であるため“０”を出力する。従って、セレクタ５１１の出力は不定となる。その結果、図１２に示されるように、サイクル２０６において、リードデータＲＤの値は不定となる。
【００９８】
バス制御回路３は、サイクル２０６において、ステータスリードデータＳＲＤが入力され、ｗａｙ０，１がともにミスヒット状態（ｗａｙ０ヒット信号ＨＩＴ０及びｗａｙ１ヒット信号ＨＩＴ１がともに“０”）であることと、コピーバック不要（ｗａｙ０コピーバック信号ＣＢ０及びｗａｙ１コピーバック信号ＣＢ１がともに“０”）であることを認識する。なお、サイクル２０５で実行されるアクセスによってキャッシュステータスは変化しないため、サイクル２０６においてはキャッシュステータスの更新は行われない。
【００９９】
そして、バス制御回路３は、メインメモリ４のコピーデータを得るために、メインメモリ４に対してリードアクセスを行う。そして、メインメモリ４から読み出したデータをＣＰＵ２に出力するとともに、そのデータをバンクｎのキャッシュメモリ６に書き込む。なお、メインメモリ４から読み出されたデータの値を“ＤＷ１”とする。
【０１００】
サイクル２０７〜２１０は、バス制御回路３によるメインメモリ４へのリードアクセス期間であり、この期間中には、キャッシュメモリ装置１０へのアクセスは実行されない。
【０１０１】
バス制御回路３は、メインメモリ４からデータ“ＤＷ１”を読み出すと、サイクル２１１において、データ“ＤＷ１”のキャッシュメモリ６への書き込みを行う。バス制御回路３は、サイクル２０６で入力されたステータスリードデータＳＲＤから、ＬＲＵビットがｗａｙ０を示すことを認識しているため、ｗａｙ１データメモリ６０４にデータ“ＤＷ１”の書き込みを行う。
【０１０２】
更に、サイクル２１１において、バス制御回路３は、キャッシュステータス及びキャッシュメモリ６内のタグＴＧの更新を行う。バス制御回路３はｗａｙ１データメモリ６０４にデータ“ＤＷ１”を書き込むため、ＬＲＵビットを“１”に更新する必要がある。また、ｗａｙ１データメモリ６０４に書き込まれるデータはメインメモリ４のコピーデータであり、ｗａｙ０データメモリ６０３にはデータが書き込まれないため、ｗａｙ０＿ｄｉｒｔｙビット及びｗａｙ１＿ｄｉｒｔｙビットを更新する必要はない。また、ｗａｙ１データメモリ６０４のデータは更新されるが、データは有効のままであるので、ｗａｙ１＿ｖａｌｉｄビットを更新する必要はないし、ｗａｙ０データメモリ６０３にはデータが書き込まれないため、ｗａｙ０＿ｖａｌｉｄビットも更新する必要は無い。従って、バス制御回路３は、バンクｎのキャッシュメモリ６のステータスメモリ６００に、キャッシュステータスとして“１１００１”を書き込む。
【０１０３】
以下に、サイクル２１１における動作について具体的に説明する。
【０１０４】
図９に示されるように、サイクル２１１において、バス制御回路３は、キャッシュメモリ装置１０に値“Ａ１”のキャッシュアドレスＡＤＲを出力し、同時に、値“１１００１”のステータスライトデータＳＷＤとキャッシュメモリ制御信号ＣＭＣＮＴを出力する。更に、バス制御回路３は、このサイクルにおいて、図１２に示されるように、値“ＤＷ１”のライトデータＷＤを出力する。
【０１０５】
バンクｎステータスアクセス要求信号ＢｎＳＲＥＱは“１”を示し、バンクｎステータスライト制御信号ＢｎＳＷＣＮＴは“１”を示すため、バンクｎのキャッシュメモリ６のステータスメモリ６００において、キャッシュアドレスＡＤＲ中のインデックスＩＤが示すアドレスに、“１１００１”が書き込まれる。このようにして、キャッシュステータスが更新される。
【０１０６】
また、サイクル２１１では、図１１に示されるように、バンクｎｗａｙ１タグアクセス要求信号ＢｎＴＲＥＱ１及びバンクｎｗａｙ１タグライト制御信号ＢｎＴＣＮＴ１がともに“１”を示す。従って、バンクｎのキャッシュメモリ６のｗａｙ１タグメモリ６０１において、キャッシュアドレスＡＤＲ中のインデックスＩＤが示すアドレスに、キャッシュアドレスＡＤＲ中のタグＴＧが書き込まれる。このようにして、キャッシュメモリ６内のタグＴＧが更新される。
【０１０７】
またサイクル２１１では、図１２に示されるように、バンクｎｗａｙ１データアクセス要求信号ＢｎＤＲＥＱ１及びバンクｎｗａｙ１データライト制御信号ＢｎＤＣＮＴ１がともに“１”を示す。従って、バンクｎのキャッシュメモリ６のｗａｙ１データメモリ６０４において、キャッシュアドレスＡＤＲ中のインデックスＩＤが示すアドレスに、データ“ＤＷ１”が書き込まれる。このようにして、メインメモリ４のコピーデータがキャッシュメモリ６に書き込まれる。
【０１０８】
次に、図１３〜１５を参照して、マイクロプロセッサ１のキャッシュ動作におけるライト動作について説明する。
【０１０９】
まず、ＣＰＵ２はバス制御回路３に対して、キャッシュメモリ装置１０のキャッシュメモリ６にデータ“ＤＷ２”を書き込むように要求する。ＣＰＵ２の要求を受け取ったバス制御回路３は、キャッシュメモリ６へのライトアクセスに先立って、キャッシュメモリ６内のステータスメモリ６００及びタグメモリ６１２へのリードアクセスを行う。
【０１１０】
具体的には、図１３に示されるように、サイクル２１４において、バス制御回路３は、キャッシュメモリ装置１０に値“Ａ２”のキャッシュアドレスＡＤＲを出力し、同時にキャッシュメモリ制御信号ＣＭＣＮＴを出力する。
【０１１１】
サイクル２１４では、バンクｎステータスアクセス要求信号ＢｎＳＲＥＱは“１”を示し、バンクｎステータスライト制御信号ＢｎＳＷＣＮＴは“０”を示すため、バンクｎのキャッシュメモリ６のステータスメモリ６００に対してリードアクセスが実行される。その結果、図１３に示されるように、サイクル２１５において、ステータスメモリ６００からデータが読み出されて、バンクｎステータスリードデータＢｎＳＲＤとして出力される。なお、サイクル２１５で読み出されたバンクｎステータスリードデータＢｎＳＲＤの値を“１１０００”とする。
【０１１２】
またサイクル２１４では、図１４に示されるように、バンクｎｗａｙ０タグアクセス要求信号ＢｎＴＲＥＱ０及びバンクｎｗａｙ１タグアクセス要求信号ＢｎＴＲＥＱ１がともに“１”を示し、バンクｎｗａｙ０タグライト制御信号ＢｎＴＣＮＴ０及びバンクｎｗａｙ１タグライト制御信号ＢｎＴＣＮＴ１がともに“０”を示す。従って、バンクｎのキャッシュメモリ６のタグメモリ６１２に対してリードアクセスが実行される。その結果、サイクル２１５において、タグメモリ６１２からデータが読み出されて、バンクｎｗａｙ０タグリードデータＢｎｗ０ＴＲＤ及びバンクｎｗａｙ１タグリードデータＢｎｗ１ＴＲＤとして出力される。なお、サイクル２１５で読み出されたバンクｎｗａｙ０タグリードデータＢｎｗ０ＴＲＤ及びバンクｎｗａｙ１タグリードデータＢｎｗ１ＴＲＤの値をそれぞれ“Ｔ０２”及び“Ｔ１２”とする。
【０１１３】
サイクル２１５において、キャッシュ周辺回路５のフリップフロップ５１２は、サイクル２１４で入力されたキャッシュアドレスＡＤＲ中のタグＴＧを出力する。なお、このタグＴＧの値を“Ｔ１２”とする。
【０１１４】
比較器５００は、フリップフロップ５１２の出力値“Ｔ１２”と、ｗａｙ０タグリードデータｗ０ＴＲＤの値“Ｔ０２”とが一致していないため、“０”を出力する。従って、ＡＮＤ回路５０１は“０”を出力する。これにより、図１４に示されるように、サイクル２１５において、ｗａｙ０ヒット信号ＨＩＴ０は“０”となる。
【０１１５】
比較器５０２は、フリップフロップ５１２の出力値“Ｔ１２”と、ｗａｙ１タグリードデータｗ１ＴＲＤの値“Ｔ１２”とが一致しているため、“１”を出力する。上述のように、バンクｎステータスリードデータＢｎＳＲＤの値は“１１０００”であるため、データｗ０ｖｄは“１”となる。従って、ＡＮＤ回路５０３の入力にはともに“１”が入力されて、ＡＮＤ回路５０３は“１”を出力する。これにより、図１４に示されるように、サイクル２１５において、ｗａｙ１ヒット信号ＨＩＴ１は“１”となる。
【０１１６】
ＡＮＤ回路５０５，５０８は、データｗ０ｄｙ，ｗ１ｄｙがともに“０”であるため、それぞれ“０”を出力する。これにより、図１４に示されるように、サイクル２１５において、ｗａｙ０コピーバック信号ＣＢ０及びｗａｙ１コピーバック信号ＣＢ１がそれぞれ“０”となる。
【０１１７】
バス制御回路３は、サイクル２１５において、バンク制御回路７及びキャッシュ周辺回路５の出力を受け取ると、データ“ＤＷ２”をバンクｎのキャッシュメモリ６に書き込む。バス制御回路３は、サイクル２１５で受け取ったキャッシュ周辺回路５からの信号から、ｗａｙ０ヒット信号ＨＩＴ０、ｗａｙ１ヒット信号ＨＩＴ１、ｗａｙ０コピーバック信号ＣＢ０及びｗａｙ１コピーバック信号ＣＢ１がそれぞれ“０”、“１”、“０”及び“０”を示すことを認識しているため、ｗａｙ１データメモリ６０４にデータ“ＤＷ２”の書き込みを行う。
【０１１８】
また、ｗａｙ１データメモリ６０４にデータを書き込むため、ＬＲＵビット及びｗａｙ１＿ｄｉｒｔｙビットをともに“１”に更新する必要があるため、バス制御回路３は、サイクル２１５において、バンクｎのキャッシュメモリ６のステータスメモリ６００に、キャッシュステータスとして“１１０１１”を書き込む。
【０１１９】
具体的には、図１３に示されるように、サイクル２１５において、バス制御回路３は、キャッシュメモリ装置１０に値“Ａ２”のキャッシュアドレスＡＤＲを出力し、同時に、値“１１０１１”のステータスライトデータＳＷＤとキャッシュメモリ制御信号ＣＭＣＮＴを出力する。更に、バス制御回路３は、このサイクルにおいて、図１５に示されるように、値“ＤＷ２”のライトデータＷＤを出力する。
【０１２０】
バンクｎステータスアクセス要求信号ＢｎＳＲＥＱ及びバンクｎステータスライト制御信号ＢｎＳＷＣＮＴはともに“１”を示すため、バンクｎのキャッシュメモリ６のステータスメモリ６００に“１１０１１”が書き込まれる。このようにして、キャッシュステータスが更新される。
【０１２１】
またサイクル２１５では、図１５に示されるように、バンクｎｗａｙ１データアクセス要求信号ＢｎＤＲＥＱ１及びバンクｎｗａｙ１データライト制御信号ＢｎＤＣＮＴ１がともに“１”を示す。従って、バンクｎのキャッシュメモリ６のｗａｙ１データメモリ６０４にデータ“ＤＷ２”が書き込まれる。このようにして、ｗａｙ１データメモリ６０４のデータが更新される。
【０１２２】
その後、ＣＰＵ２はバス制御回路３に対して、キャッシュメモリ装置１０のキャッシュメモリ６にデータ“ＤＷ３”を書き込むように要求する。ＣＰＵ２の要求を受け取ったバス制御回路３は、サイクル２１７において、上述のように、キャッシュメモリ６へのライトアクセスに先立って、キャッシュメモリ６内のステータスメモリ６００及びタグメモリ６１２へのリードアクセスを行う。その結果、サイクル２１８において、バンクｎのキャッシュメモリ６のステータスメモリ６００及びタグメモリ６１２からデータが読み出される。なお、図１３，１４に示されるように、サイクル２１８で読み出されたバンクｎステータスリードデータＢｎＳＲＤ、バンクｎｗａｙ０タグリードデータＢｎｗ０ＴＲＤ及びバンクｎｗａｙ１タグリードデータＢｎｗ１ＴＲＤの値を、それぞれ“１１００１”、“Ｔ０３”、“Ｔ１３”とする。
【０１２３】
サイクル２１８において、キャッシュ周辺回路５のフリップフロップ５１２は、サイクル２１７で入力されたキャッシュアドレスＡＤＲ中のタグＴＧを出力する。なお、このタグＴＧの値を“Ｔ２３”とする。
【０１２４】
比較器５００は、フリップフロップ５１２の出力値“Ｔ２３”と、ｗａｙ０タグリードデータｗ０ＴＲＤの値“Ｔ０３”とが一致していないため、“０”を出力する。従って、図１４に示されるように、サイクル２１８において、ｗａｙ０ヒット信号ＨＩＴ０は“０”となる。
【０１２５】
比較器５０２は、フリップフロップ５１２の出力値“Ｔ２３”と、ｗａｙ１タグリードデータｗ１ＴＲＤの値“Ｔ１３”とが一致していないため、“０”を出力する。従って、図１４に示されるように、サイクル２１８において、ｗａｙ１ヒット信号ＨＩＴ１は“０”となる。
【０１２６】
ＡＮＤ回路５０５，５０８は、データｗ０ｄｙ，ｗ１ｄｙがともに“０”であるため、それぞれ“０”を出力する。これにより、図１４に示されるように、サイクル２１８において、ｗａｙ０コピーバック信号ＣＢ０及びｗａｙ１コピーバック信号ＣＢ１はそれぞれ“０”となる。
【０１２７】
バス制御回路３は、サイクル２１８において、バンク制御回路７及びキャッシュ周辺回路５の出力を受け取ると、上述のようにして、データ“ＤＷ３”をバンクｎのキャッシュメモリ６に書き込む。バス制御回路３は、サイクル２１８で受け取ったキャッシュ周辺回路５からの信号から、ｗａｙ０ヒット信号ＨＩＴ０、ｗａｙ１ヒット信号ＨＩＴ１、ｗａｙ０コピーバック信号ＣＢ０、ｗａｙ１コピーバック信号ＣＢ１が全て“０”を示すことを認識している。更に、サイクル２１８で入力されたステータスリードデータＳＲＤから、ＬＲＵビットがｗａｙ１を示していることを認識している。従って、バス制御回路３は、ｗａｙ０データメモリ６０３にデータ“ＤＷ３”の書き込みを行う。
【０１２８】
また、ｗａｙ０データメモリ６０３にデータを書き込むため、ＬＲＵビットを“０”に、ｗａｙ０＿ｄｉｒｔｙビットを“１”に更新する必要がある。従って、サイクル２１８において、バス制御回路３は、バンクｎのキャッシュメモリ６のステータスメモリ６００にキャッシュステータスとして“１１１００”を書き込む。
【０１２９】
次に図１６〜１９を参照して、リード動作時にコピーバックが発生した際のマイクロプロセッサ１の動作について説明する。
【０１３０】
まず、ＣＰＵ２はバス制御回路３に対して、キャッシュメモリ装置１０のキャッシュメモリ６にリードアクセスするように要求する。ＣＰＵ２の要求を受け取ったバス制御回路３は、図１６に示されるように、サイクル２２１において、キャッシュメモリ装置１０に値“Ａ４”のキャッシュアドレスＡＤＲを出力し、同時にキャッシュメモリ制御信号ＣＭＣＮＴを出力する。
【０１３１】
そして、上述のようにして、サイクル２２２において、バンクｎのキャッシュメモリ６のステータスメモリ６００、タグメモリ６１２及びデータメモリ６３４からデータが読み出される。ここで、図１６〜１９に示されるように、サイクル２２２で読み出されたバンクｎステータスリードデータＢｎＳＲＤ、バンクｎｗａｙ０タグリードデータＢｎｗ０ＴＲＤ、バンクｎｗａｙ１タグリードデータＢｎｗ１ＴＲＤ、バンクｎｗａｙ０リードデータＢｎｗ０ＲＤ及びバンクｎｗａｙ１リードデータＢｎｗ１ＲＤの値を、それぞれ“１１１０１”、“Ｔ０４”、“Ｔ１４”、“Ｄ０４”及び“Ｄ１４”とする。
【０１３２】
サイクル２２２において、キャッシュ周辺回路５のフリップフロップ５１２は、サイクル２２１で入力されたキャッシュアドレスＡＤＲ中のタグＴＧを出力する。ここでは、このタグＴＧの値を“Ｔ２４”とする。
【０１３３】
比較器５００は、フリップフロップ５１２の出力値“Ｔ２４”と、ｗａｙ０タグリードデータｗ０ＴＲＤの値“Ｔ０４”とが一致していないため、“０”を出力する。従って、ＡＮＤ回路５０１は“０”を出力する。これにより、図１７に示されるように、サイクル２２２において、ｗａｙ０ヒット信号ＨＩＴ０は“０”となる。
【０１３４】
比較器５０２は、フリップフロップ５１２の出力値“Ｔ２４”と、ｗａｙ１タグリードデータｗ１ＴＲＤの値“Ｔ０４”とが一致していないため、“０”を出力する。従って、ＡＮＤ回路５０３は“０”を出力する。これにより、図１８に示されるように、サイクル２２２において、ｗａｙ１ヒット信号ＨＩＴ１は“０”となる。
【０１３５】
インバータ５０４は、ＡＮＤ回路５０１の出力が“０”であるため“１”を出力する。そして、データｗ０ｄｙ，ＬＲＵがともに“１”であるため、ＡＮＤ回路５０５の入力は全て“１”となる。従って、ＡＮＤ回路５０５は“１”を出力する。これにより、図１７に示されるように、サイクル２２２において、ｗａｙ０コピーバック信号ＣＢ０が“１”となる。またＡＮＤ回路５０８は、データｗ１ｄｙが“０”であるため“０”を出力する。これにより、図１８に示されるように、サイクル２０６において、ｗａｙ１コピーバック信号ＣＢ１は“０”となる。
【０１３６】
ＯＲ回路５０９は、ＡＮＤ回路５０５の出力が“１”であるため“１”を出力し、ＯＲ回路５１０は、ＡＮＤ回路５０３，５０８の出力がともに“０”であるため“０”を出力する。従って、セレクタ５１１は、ｗａｙ０リードデータｗ０ＲＤを選択する。その結果、図１９に示されるように、サイクル２２２において、リードデータＲＤとして“Ｄ０４”がバス制御回路３に出力される。
【０１３７】
ＡＮＤ回路５０５の出力が“１”、ＡＮＤ回路５０８の出力が“０”であるため、セレクタ５１４は、値“Ｔ０４”のｗａｙ０タグリードデータｗ０ＴＲＤを出力する。連結器５１５は、セレクタ５１４の出力値“Ｔ０４”と、フリップフロップ５１３が出力する、キャッシュアドレスＡＤＲ中のインデックスとを連結して、コピーバックアドレスＣＡＤＲとしてバス制御回路３に出力する。ここで、サイクル２２２で出力されるコピーバックアドレスＣＡＤＲの値を“Ｃ４”とする。
【０１３８】
バス制御回路３は、サイクル２２２において、ｗａｙ０コピーバック信号ＣＢ０が“１”であることを認識する。従ってバス制御回路３は、コピーバックアドレスＣＡＤＲをメインメモリ４のアドレスとして、受け取ったデータ“Ｄ０４”をメインメモリ４の所定のブロックに書き込む。なお、この書き込み動作は「コピーバック」と呼ばれる。
【０１３９】
またバス制御回路３は、ｗａｙ０ヒット信号ＨＩＴ０及びｗａｙ１ヒット信号ＨＩＴ１がともに“０”であるため、アドレス値“Ａ４”で示されるメインメモリ４の所定のブロックからデータを読み出す。なお、このときにメインメモリ４から読み出されたデータの値を“ＤＷ４”とする。
【０１４０】
サイクル２２３〜２２６は、バス制御回路３による上述のメインメモリ４へのリードアクセス期間であり、この期間中には、キャッシュメモリ装置１０へのアクセスは実行されない。
【０１４１】
バス制御回路３は、メインメモリ４からデータ“ＤＷ４”を読み出すと、サイクル２２７において、キャッシュアドレスＡＤＲの値を“Ａ４”として、データ“ＤＷ４”を、ｗａｙ０データメモリ６０３に書き込む。
【０１４２】
更にサイクル２２７において、バス制御回路３は、キャッシュステータス及びキャッシュメモリ６内のタグＴＧの更新を行う。バス制御回路３はｗａｙ０データメモリ６０３にデータ“ＤＷ４”を書き込むため、ＬＲＵビットを“０”に更新する必要がある。また、ｗａｙ０データメモリ６０３に書き込まれるデータはメインメモリ４のコピーデータであるため、ｗａｙ０＿ｄｉｒｔｙビットを“０”に更新する必要ある。従って、バス制御回路３は、バンクｎのキャッシュメモリ６のステータスメモリ６００に、キャッシュステータスとして“１１０００”を書き込む。
【０１４３】
以上のようにして、リード動作時にコピーバックが行われる。
【０１４４】
次に、図２０，２１を参照して、異なるキャッシュメモリ６に連続してアクセスする場合のマイクロプロセッサ１の動作について説明する。
【０１４５】
図２０，２１は、信号ＣＳＩＺＥの値を“１１”に設定し、各キャッシュメモリ６のステータスメモリ６００に対してリードアクセスする場合の動作タイミングを示している。まずバス制御回路３は、サイクル３０２において、値“Ａ１０”のキャッシュアドレスＡＤＲを出力し、同時にキャッシュメモリ制御信号ＣＭＣＮＴを出力する。
【０１４６】
このとき、図２０に示されるように、信号ＢＩＤは“０００”を示し、キャッシュメモリ制御信号ＣＭＣＮＴ中のステータスアクセス要求信号は“１”を示している。従って、バンク制御回路７のバンクデコーダ７００は、バンク０選択信号Ｂ０ＳＥＬのみを“１”とする。その結果、キャッシュメモリ制御信号ＣＭＣＮＴが、バンク０制御信号Ｂ０ＣＮＴとして出力される。そのため、図２０に示されるように、サイクル３０２において、バンク０ステータスアクセス要求信号Ｂ０ＳＲＥＱのみが“１”となっている。なお、図示していないが、サイクル３０２においては、バンク０ステータスライト制御信号Ｂ０ＳＷＣＮＴは“０”である。
【０１４７】
バンク０ステータスアクセス要求信号Ｂ０ＳＲＥＱが“１”、バンク０ステータスライト制御信号Ｂ０ＳＷＣＮＴが“０”となると、サイクル３０３において、バンク０のキャッシュメモリ６のステータスメモリ６００からデータが読み出され、バンク０ステータスリードデータＢ０ＳＲＤとしてバンク制御回路７に入力される。なお、このバンク０ステータスリードデータＢ０ＳＲＤの値を“ＲＤ０”とする。
【０１４８】
そして、バンク０選択信号Ｂ０ＳＥＬのみが“１”を示すため、バンク制御回路７のフリップフロップ７０９〜７１６の出力は、フリップフロップ７０９のみが“１”を示す。従って、図２１に示されるように、サイクル３０３において、バンク０ステータスリードデータＢ０ＳＲＤが、ステータスリードデータＳＲＤとしてバス制御回路３に入力される。
【０１４９】
また、サイクル３０３では、図２０に示されるように、バス制御回路３は、値“Ａ１１”のキャッシュアドレスＡＤＲを出力し、同時にキャッシュメモリ制御信号ＣＭＣＮＴを出力する。
【０１５０】
このとき、信号ＢＩＤは“００１”を示し、キャッシュメモリ制御信号ＣＭＣＮＴ中のステータスアクセス要求信号は“１”を示している。従って、バンク制御回路７のバンクデコーダ７００は、バンク１選択信号Ｂ１ＳＥＬのみを“１”とする。その結果、キャッシュメモリ制御信号ＣＭＣＮＴが、バンク１制御信号Ｂ１ＣＮＴとして出力される。そのため、図２０に示されるように、サイクル３０３において、バンク１ステータスアクセス要求信号Ｂ１ＳＲＥＱのみが“１”となっている。なお、図示していないが、サイクル３０３においては、バンク１ステータスライト制御信号Ｂ１ＳＷＣＮＴは“０”である。
【０１５１】
バンク１ステータスアクセス要求信号Ｂ１ＳＲＥＱが“１”、バンク１ステータスライト制御信号Ｂ１ＳＷＣＮＴが“０”となると、サイクル３０４において、バンク１のキャッシュメモリ６のステータスメモリ６００からデータが読み出され、バンク１ステータスリードデータＢ１ＳＲＤとしてバンク制御回路７に入力される。なお、このバンク１ステータスリードデータＢ１ＳＲＤの値を“ＲＤ１”とする。
【０１５２】
バンク１選択信号Ｂ１ＳＥＬのみが“１”を示すため、バンク制御回路７のフリップフロップ７０９〜７１６の出力は、フリップフロップ７１０のみが“１”を示す。従って、図２１に示されるように、サイクル３０４において、バンク１ステータスリードデータＢ１ＳＲＤが、ステータスリードデータＳＲＤとしてバス制御回路３に入力される。
【０１５３】
また、サイクル３０４では、図２０に示されるように、バス制御回路３は、値“Ａ１２”のキャッシュアドレスＡＤＲを出力し、同時にキャッシュメモリ制御信号ＣＭＣＮＴを出力する。
【０１５４】
このとき、信号ＢＩＤは“０１０”を示し、キャッシュメモリ制御信号ＣＭＣＮＴ中のステータスアクセス要求信号は“１”を示している。従って、バンク制御回路７のバンクデコーダ７００は、バンク２選択信号Ｂ２ＳＥＬのみを“１”とする。その結果、キャッシュメモリ制御信号ＣＭＣＮＴが、バンク２制御信号Ｂ２ＣＮＴとして出力される。そのため、図２０に示されるように、サイクル３０４において、バンク２ステータスアクセス要求信号Ｂ２ＳＲＥＱのみが“１”となっている。なお、図示していないが、サイクル３０４においては、バンク２ステータスライト制御信号Ｂ２ＳＷＣＮＴは“０”である。
【０１５５】
バンク２ステータスアクセス要求信号Ｂ１ＳＲＥＱが“１”、バンク２ステータスライト制御信号Ｂ２ＳＷＣＮＴが“０”となると、サイクル３０５において、バンク２のキャッシュメモリ６のステータスメモリ６００からデータが読み出され、バンク２ステータスリードデータＢ２ＳＲＤとしてバンク制御回路７に入力される。なお、このバンク２ステータスリードデータＢ１ＳＲＤの値を“ＲＤ２”とする。
【０１５６】
そして、バンク２選択信号Ｂ２ＳＥＬのみが“１”を示すため、バンク制御回路７のフリップフロップ７０９〜７１６の出力は、フリップフロップ７１１のみが“１”を示す。従って、図２１に示されるように、サイクル３０５において、バンク２ステータスリードデータＢ２ＳＲＤが、ステータスリードデータＳＲＤとしてバス制御回路３に入力される。
【０１５７】
このように、バンク０〜７のキャッシュメモリ６のステータスメモリ６００が順にリードアクセスされ、図２１に示されるように、ステータスリードデータＳＲＤとして、バンク０ステータスリードデータＢ０ＳＲＤ〜バンク７ステータスリードデータＢ７ＳＲＤが順にバス制御回路３に入力される。
【０１５８】
以上の説明では、バンク制御回路７に８つのキャッシュメモリ６を接続していたが、最大でも８Ｋバイトのキャッシュ容量しか必要でなければ、図２２に示されるように、バンク０〜３までの４つのキャッシュメモリ６をバンク制御回路７に接続しても良い。この場合には、信号ＣＳＩＺＥの値を“００”、“０１”、“１０”のどれかに設定することによって、２Ｋバイト、４Ｋバイトあるいは８Ｋバイトのキャッシュ容量を実現できる。
【０１５９】
また、最大でも４Ｋバイトのキャッシュ容量しか必要でなければ、図２３に示されるように、バンク０，１の２つのキャッシュメモリ６をバンク制御回路７に接続しても良い。この場合には、信号ＣＳＩＺＥの値を“００”、“０１”のどちらに設定することによって、２Ｋバイトあるいは４Ｋバイトのキャッシュ容量を実現できる。
【０１６０】
また、２Ｋバイトのキャッシュ容量しか必要でなければ、図２４に示されるように、バンク０のキャッシュメモリ６のみをバンク制御回路７に接続しても良い。この場合には、信号ＣＳＩＺＥの値を“００”に固定することによって、２Ｋバイトのキャッシュ容量を実現できる。
【０１６１】
なお、バンク制御回路７に８つ未満のキャッシュメモリ６を接続する場合には、バンク０リードデータＢ０ＲＤからバンク７リードデータＢ７ＲＤの入力端子のうち、キャッシュメモリ６と接続されない入力端子は、バンク制御回路７の動作の安定性を向上するために電位固定する方が望ましい。
【０１６２】
このように、本実施の形態１に係るキャッシュメモリ装置１０では、複数のキャッシュメモリ６へのアクセスを制御するバンク制御回路７を設けているため、本実施の形態１のように、キャッシュ容量に関わらず、キャッシュアドレスＡＤＲにおいて、タグＴＧ及びインデックスＩＤが占めるビット位置を固定することができる。
【０１６３】
従来技術では、本実施の形態１に係るバンク制御回路７のように、複数のキャッシュメモリ６へのアクセスを制御することができる回路を備えていなかったため、キャッシュ容量を増加させる場合には、複数のキャッシュメモリ６を設けることができず、キャッシュメモリ６のｗａｙ０データメモリ６０３及びｗａｙ１データメモリ６０４のメモリ容量を増加させる必要があった。
【０１６４】
ｗａｙ０データメモリ６０３及びｗａｙ１データメモリ６０４は上述のようにキャッシュアドレス中のインデックスＩＤをアドレスとしているため、それらのメモリ容量を増加させるためには、キャッシュアドレスＡＤＲ中のインデックスＩＤのビット数を増加させて、アドレス幅を増やす必要があった。更に、キャッシュアドレスのビット数はメインメモリ４のアドレス幅に依存するため、インデックスＩＤのビット数が増加すると、タグＴＧのビット数は減少する。
【０１６５】
従って、キャッシュ容量を増加させた場合には、インデックスＩＤを利用するキャッシュ周辺回路５のフリップフロップ５１３や、タグＴＧを利用するフリップフロップ５１２、比較器５００，５０２及びセレクタ５１４や、タグＴＧ及びインデックスＩＤを利用する連結器５１５を設計変更する必要があった。特に、比較器５００，５０２の設計変更に時間を要していた。
【０１６６】
本実施の形態１では、キャッシュメモリ装置１０にバンク制御回路７を設けることによって、複数のキャッシュメモリ６を搭載することが可能になった。その結果、本実施の形態１のように、キャッシュメモリ６のｗａｙ０データメモリ６０３及びｗａｙ１データメモリ６０４のメモリ容量を変更することなく、キャッシュ容量を変更することができるため、キャッシュアドレスＡＤＲにおけるタグＴＧ及びインデックスＩＤのビット位置を常に固定することができる。従って、キャッシュ容量を変更した場合であっても、キャッシュ周辺回路５を設計変更する必要がなくなり、キャッシュ容量を変更する際に必要となる設計変更を低減できる。
【０１６７】
また、上述の特許文献１に記載の技術では、キャッシュメモリ装置のｗａｙ数、言い換えれば連想度を変更することによってキャッシュメモリ装置のキャッシュ容量を変更し、これによって、キャッシュ容量を変更する際に必要な設計変更を低減している。しかしながら、キャッシュ容量の変更に、特許文献１に記載の技術を採用した場合には以下の問題を生じる。
【０１６８】
本実施の形態１では、ミスヒット時のデータ置換方式に、データ参照の時間的局所性を利用するＬＲＵ方式を採用しているが、このＬＲＵ方式を採用した場合には、一般的に、ｗａｙ数が増加すると履歴の保存数が増加するため、短時間でデータ置換を行うことが困難になる。従って、特許文献１に記載の技術のように、ｗａｙ数の変更によってキャッシュ容量を変更する場合には、キャッシュ容量が増加するにつれてキャッシュ性能が低下するため、データ置換方式に、ＬＲＵ方式を採用することが困難になる。
【０１６９】
そこで、特許文献１に記載の技術では、データ置換方式に、ＬＲＵ方式ではなく、ポインタレジスタと呼ばれる、最新のアクセスが行われたキャッシュ単位を示すレジスタを利用した制御方式を採用している。しかしながら、この制御方式では、ポインタレジスタが示す値で比較器判定結果をマスクしているため、本来ヒットすべきアドレスでミスヒットとなる場合があり、ヒット率が低下する。
【０１７０】
更に、本来ヒットすべきアドレスでミスヒットとなるため、既に、あるキャッシュ単位に書き込まれている有効データが、再度他のキャッシュ単位に書き込まれ、複数のキャッシュ単位に同じカラムアドレスの内容が書き込まれることになる。従って、メモリがキャッシュメモリとして有効利用されない。なお、特許文献１におけるキャッシュメモリが本実施の形態１におけるｗａｙ０データメモリ６０３及びｗａｙ１データメモリ６０４に相当し、特許文献１におけるキャッシュ単位（ＵＮＩＴ）数及びカラムアドレスが、本実施の形態１におけるｗａｙ数及びインデックスにそれぞれに相当する。
【０１７１】
このように、特許文献１に記載の技術では、キャッシュ性能を犠牲にしながら、キャッシュ容量の変更の容易化を実現している。
【０１７２】
一方、本実施の形態１では、バンク制御回路７の働きによって、キャッシュメモリ６の数を変更することでキャッシュ容量を変更することが可能になるため、ｗａｙ数を変更する必要が無い。従って、本実施の形態１のように、データ置換方式にＬＲＵ方式を採用することができ、キャッシュ性能を犠牲にすることなく、キャッシュ容量の変更の容易化を実現している。
【０１７３】
また本実施の形態１では、バンク制御回路７が、キャッシュ容量を示す信号ＣＳＩＺＥに基づいて、キャッシュメモリ６を選択することができるため、本実施の形態１のように、信号ＣＳＩＺＥの値を変化させることによって、簡単に、複数種類のキャッシュ容量を実現することができる。従って、キャッシュ周辺回路５を設計変更する必要がなく、キャッシュ容量変更の際に必要な設計変更を低減できる。
【０１７４】
また、バンク制御回路７の働きによって、１回のリードアクセスまたは１回のライトアクセスでは、１つのキャッシュメモリ６のみにアクセスされるため、キャッシュメモリ装置１０の低消費電力化が図られる。
【０１７５】
また、キャッシュメモリ装置１０が備える複数のキャッシュメモリ６は、メモリ容量が互いに同じであるため、本実施の形態１のように、互いに同じ回路で構成することができる。従って、複数のキャッシュメモリ６のメモリ容量が互いに異なる場合よりも、キャッシュメモリ装置１０の設計が容易に行える。
【０１７６】
また、本実施の形態１のように、マイクロプロセッサが、バンク制御回路７を有するキャッシュメモリ装置１０を備えることによって、キャッシュ容量の異なるマイクロプロセッサを容易に得ることができる。
【０１７７】
なお、本実施の形態１に係るバンク制御回路７は、８つのキャッシュメモリ６と接続可能であったが、最大でも８Ｋバイトのキャッシュ容量しか必要で無い場合には、図２５に示されるように、バンク０〜３のキャッシュメモリ６を設けて、バンク制御回路７の替わりに４つのキャッシュメモリ６と接続可能なバンク制御回路７ｂを設けても良い。
【０１７８】
また、最大４Ｋバイトのキャッシュ容量しか必要で無い場合には、図２６に示されるように、バンク０，１のキャッシュメモリ６を設けて、バンク制御回路７の替わりに２つのキャッシュメモリ６と接続可能なバンク制御回路７ｃを設けても良い。
【０１７９】
図２７はバンク制御回路７ｂの構成を示す回路図であって、図２８はバンク制御回路７ｃの構成を示す回路図である。図２７に示されるように、バンク制御回路７ｂは、バンクデコーダ７００ｂと、上述のＡＮＤ回路７０１〜７０４と、上述のフリップフロップ７０９〜７１２と、セレクタ７１７ｂとを備えている。
【０１８０】
バンクデコーダ７００ｂは、信号ＣＳＩＺＥ及び信号ＢＩＤに基づいて、バンク０選択信号Ｂ０ＳＥＬ〜バンク３選択信号Ｂ３ＳＥＬを出力する。
【０１８１】
図２９は、信号ＣＳＩＺＥと、信号ＢＩＤと、バンクｎ選択信号ＢｎＳＥＬ（ｎ＝０〜３）との関係を示す図である。図２９に示されるように、信号ＣＳＩＺＥが“００”のとき、信号ＢＩＤの値に関わらず、バンク０選択信号Ｂ０ＳＥＬのみが常に“１”となり、バンク１選択信号Ｂ１ＳＥＬ〜バンク３選択信号Ｂ３ＳＥＬは常に“０”である。信号ＣＳＩＺＥが“０１”の場合には、信号ＢＩＤの最下位ビットが“０”のときにはバンク０選択信号Ｂ０ＳＥＬのみが“１”となり、“１”のときにはバンク１選択信号Ｂ１ＳＥＬのみが“１”となる。
【０１８２】
また、信号ＣＳＩＺＥが“１０”の場合には、信号ＢＩＤの下位２ビットが“００”のときにはバンク０選択信号Ｂ０ＳＥＬのみが“１”となり、“０１”のときにはバンク１選択信号Ｂ１ＳＥＬのみが“１”となり、“１０”のときにはバンク２選択信号Ｂ２ＳＥＬのみが“１”となり、“１１”のときにはバンク３選択信号Ｂ３ＳＥＬのみが“１”となる。なお、信号ＣＳＩＺＥが“１１”の場合には、バンク０選択信号Ｂ０ＳＥＬ〜バンク３選択信号Ｂ３ＳＥＬのそれぞれの値は不定である。
【０１８３】
ＡＮＤ回路７０１〜７０４は、バンク０選択信号Ｂ０ＳＥＬ〜バンク３選択信号Ｂ３ＳＥＬとキャッシュメモリ制御信号ＣＭＣＮＴとの論理積をそれぞれ演算して、バンク０制御信号Ｂ０ＣＮＴ〜バンク３制御信号Ｂ３ＣＮＴとしてそれぞれ出力する。
【０１８４】
フリップフロップ７０９〜７１２は、バンク０選択信号Ｂ０ＳＥＬ〜バンク３選択信号Ｂ３ＳＥＬがそれぞれ入力されている。そして、フリップフロップ７０９〜７１２は、図示しないクロック信号ＣＬＫも入力されており、そのクロック信号ＣＬＫの１クロックサイクル分、入力信号を遅延させて出力する。
【０１８５】
セレクタ７１７ｂは、バンク０リードデータＢ０ＲＤ〜バンク３リードデータＢ３ＲＤと、フリップフロップ７０９〜７１２の出力とが入力されている。セレクタ７１７ｂは、フリップフロップ７０９〜７１２の出力のうち、フリップフロップ７０９の出力が排他的に“１”である場合には、バンク０リードデータＢ０ＲＤをメモリリードデータＭＲＤとして出力し、フリップフロップ７１０の出力が排他的に“１”である場合には、バンク１リードデータＢ１ＲＤをメモリリードデータＭＲＤとして出力し、フリップフロップ７１１の出力が排他的に“１”である場合には、バンク２リードデータＢ２ＲＤをメモリリードデータＭＲＤとして出力し、フリップフロップ７１２の出力が排他的に“１”である場合には、バンク３リードデータＢ３ＲＤをメモリリードデータＭＲＤとして出力する。
【０１８６】
なお、フリップフロップ７０９〜７１２の出力がすべて“０”、あるいは２つ以上の出力が“１”となる場合には、セレクタ７１７ｂの出力は不定となる。
【０１８７】
このように、バンク０〜３のキャッシュメモリ６しか搭載しない場合には、バンク制御回路７の替わりに、４つのキャッシュメモリ６と接続可能なバンク制御回路７ｂを設けても良い。
【０１８８】
図２６のバンク制御回路７ｃは、図２８に示されるように、バンクデコーダ７００ｃと、上述のＡＮＤ回路７０１，７０２と、上述のフリップフロップ７０９，７１０と、セレクタ７１７ｃとを備えている。
【０１８９】
バンクデコーダ７００ｃは、信号ＣＳＩＺＥ及び信号ＢＩＤに基づいて、バンク０選択信号Ｂ０ＳＥＬ，バンク１選択信号Ｂ１ＳＥＬを出力する。
【０１９０】
図３０は、信号ＣＳＩＺＥと、信号ＢＩＤと、バンクｎ選択信号ＢｎＳＥＬ（ｎ＝０，１）との関係を示す図である。図３０に示されるように、信号ＣＳＩＺＥが“００”のとき、信号ＢＩＤの値に関わらず、バンク０選択信号Ｂ０ＳＥＬのみが常に“１”となり、バンク１選択信号Ｂ１ＳＥＬは常に“０”である。信号ＣＳＩＺＥが“０１”の場合には、信号ＢＩＤの最下位ビットが“０”のときにはバンク０選択信号Ｂ０ＳＥＬのみが“１”となり、“１”のときにはバンク１選択信号Ｂ１ＳＥＬのみが“１”となる。
【０１９１】
なお、信号ＣＳＩＺＥが“１０”あるいは“１１”の場合には、バンク０選択信号Ｂ０ＳＥＬ及びバンク１選択信号Ｂ１ＳＥＬのそれぞれの値は不定である。
【０１９２】
ＡＮＤ回路７０１，７０２は、バンク０選択信号Ｂ０ＳＥＬ及びバンク１選択信号Ｂ１ＳＥＬとキャッシュメモリ制御信号ＣＭＣＮＴとの論理積をそれぞれ演算して、バンク０制御信号Ｂ０ＣＮＴ及びバンク１制御信号Ｂ１ＣＮＴとしてそれぞれ出力する。
【０１９３】
フリップフロップ７０９，７１０は、バンク０選択信号Ｂ０ＳＥＬ及びバンク１選択信号Ｂ１ＳＥＬがそれぞれ入力されている。そして、フリップフロップ７０９，７１０は、図示しないクロック信号ＣＬＫも入力されており、そのクロック信号ＣＬＫの１クロックサイクル分、入力信号を遅延させて出力する。
【０１９４】
セレクタ７１７ｃは、バンク０リードデータＢ０ＲＤ及びバンク１リードデータＢ１ＲＤと、フリップフロップ７０９，７１０の出力とが入力されている。セレクタ７１７ｃは、フリップフロップ７０９，７１０の出力がそれぞれ“１”，“０”のときには、バンク０リードデータＢ０ＲＤをメモリリードデータＭＲＤとして出力し、フリップフロップ７０９，７１０の出力がそれぞれ“０”，“１”のときには、バンク１リードデータＢ１ＲＤを出力する。なお、フリップフロップ７０９，７１０の出力がともに“０”、あるいはともに“１”の場合には、セレクタ７１７ｃの出力は不定となる。
【０１９５】
このように、バンク０，１のキャッシュメモリ６しか搭載しない場合には、バンク制御回路７の替わりに、２つのキャッシュメモリ６と接続可能なバンク制御回路７ｃを設けても良い。
【０１９６】
以上のように、キャッシュメモリ装置１０に搭載するキャッシュメモリ６の個数に応じてバンク制御回路を変更することによって、マイクロプロセッサ１の回路規模を低減できる。
【０１９７】
また、本実施の形態１に係るキャッシュメモリ装置１０では、キャッシュアドレスＡＤＲ中のタグＴＧの全ビットを、各キャッシュメモリ６のタグメモリ６１２に記憶させていた。しかしながら、搭載しているキャッシュメモリ６を全て使用する場合には、言い換えれば、バンク制御回路がすべてのキャッシュメモリ６を選択する場合には、各キャッシュメモリ６のタグメモリ６１２に記憶させるデータの一部を固定値にすることができる。
【０１９８】
図６に示されるように、バンク制御回路７がすべてのキャッシュメモリ６を選択する場合には、つまり信号ＣＳＩＺＥが“１１”を示す場合には、タグＴＧの一部である信号ＢＩＤが“０００”のときには、バンク０選択信号Ｂ０ＳＥＬのみが“１”となり、バンク０のキャッシュメモリ６のみにアクセスされる。また、信号ＢＩＤが“００１”のときには、バンク１選択信号Ｂ１ＳＥＬのみが“１”となり、バンク１のキャッシュメモリ６のみがアクセスされる。
【０１９９】
このように、バンク制御回路７がすべてのキャッシュメモリ６を選択する場合には、信号ＢＩＤと、アクセスされるキャッシュメモリ６のバンクの番号とは一対一で対応している。従って、各キャッシュメモリ６のタグメモリ６１２において、タグＴＧに含まれる信号ＢＩＤが書き込まれるメモリ領域に、信号ＢＩＤに相当する各キャッシュメモリ６に固有の固定データを記憶することができる。
【０２００】
具体的には、タグメモリ６１２の各アドレスにおけるメモリ領域の下位３ビットに、バンク０のキャッシュメモリ６では“０００”を記憶させ、バンク１のキャッシュメモリ６では“００１”を記憶させる。また、バンク２のキャッシュメモリ６では“０１０”を記憶させ、バンク３のキャッシュメモリ６では“０１１”を記憶させる。また、バンク４のキャッシュメモリ６では“１００”を記憶させ、バンク５のキャッシュメモリ６では“１０１”を記憶させる。また、バンク６のキャッシュメモリ６では“１１０”を記憶させ、バンク７のキャッシュメモリ６では“１１１”を記憶させる。
【０２０１】
このように、各キャッシュメモリ６のタグメモリが、キャッシュメモリ６に固有の固定データを記憶することによって、タグメモリ６１２にタグＴＧを書き込む際のビット数を低減することができる。つまり、２２ビットで構成されるタグＴＧの全データを書き込む必要はなく、タグＴＧの上位１９ビットのデータ、言い換えれば、キャッシュアドレスＡＤＲの０ビット目〜１８ビット目のデータのみを書き込むだけで良い。従って、キャッシュメモリ６とバス制御回路３との接続配線を簡素化できる。
【０２０２】
なお、キャッシュメモリ６のタグメモリ６１２に固定データを記憶させる方法としては、例えば、タグメモリ６１２のデータ入力端子のうち、入力データの下位３ビットが入力されるデータ入力端子を電位固定し、その他のデータ入力端子にタグＴＧの上位１９ビットを入力する方法を採用しても良い。
【０２０３】
また図３１に示されるように、本実施の形態１に係るキャッシュメモリ装置１０に、信号ＣＳＩＺＥに基づいて各キャッシュメモリ６への電源供給を制御する電源制御回路８を設けても良い。
【０２０４】
図３２は電源制御回路８の構成を示す回路図である。図３２に示されるように、電源制御回路８は、ＡＮＤ回路８００と、インバータ８０１〜８０３と、ＯＲ回路８０４と、トランジスタスイッチ８０５，８０６とを備えている。なお、信号ＣＳＩＺＥの上位ビット及び下位ビットの信号を、それぞれ、信号ＣＳＩＺＥ［０］，ＣＳＩＺＥ［１］と呼ぶ。
【０２０５】
ＡＮＤ回路８００は、信号ＣＳＩＺＥ［０］と信号ＣＳＩＺＥ［１］との論理積を演算して出力する。インバータ８０１はＡＮＤ回路８００の出力を反転して出力する。
【０２０６】
インバータ８０２は信号ＣＳＩＺＥ［０］を反転して出力する。ＯＲ回路８０４は、信号ＣＳＩＺＥ［０］と信号ＣＳＩＺＥ［１］との論理和を演算して出力する。インバータ８０３はＯＲ回路８０４の出力を反転して出力する。
【０２０７】
トランジスタスイッチ８０５，８０６は、バンク１〜７のキャッシュメモリ６のそれぞれに対応して設けられている。そして、各トランジスタスイッチ８０５には、キャッシュメモリ６のプラスの電源電位となる電源電位ＶＤＤが入力されている。また、各トランジスタスイッチ８０６には、キャッシュメモリ６のマイナスの電源電位となる接地電位ＧＮＤが入力されている。
【０２０８】
バンク４〜７のキャッシュメモリ６に対応して設けられたトランジスタスイッチ８０５のそれぞれは、インバータ８０１が“０”を出力するとオン状態になり、対応するキャッシュメモリ６に電源電位ＶＤＤを供給する。そして、インバータ８０１が“１”を出力するとオフ状態になり、対応するキャッシュメモリ６への電源電位ＶＤＤの供給を停止する。
【０２０９】
バンク４〜７のキャッシュメモリ６に対応して設けられたトランジスタスイッチ８０６のそれぞれは、ＡＮＤ回路８００が“１”を出力するとオン状態となり、対応するキャッシュメモリ６に接地電位ＧＮＤを供給する。そして、ＡＮＤ回路８００が“０”を出力するとオフ状態となり、対応するキャッシュメモリ６への接地電位ＧＮＤの供給を停止する。
【０２１０】
バンク２，３に対応して設けられたトランジスタスイッチ８０５のそれぞれは、インバータ８０２が“０”を出力するとオン状態となり、対応するキャッシュメモリ６に電源電位ＶＤＤを供給する。そして、インバータ８０２が“１”を出力するとオフ状態となり、対応するキャッシュメモリ６への電源電位ＶＤＤの供給を停止する。
【０２１１】
バンク２，３に対応して設けられたトランジスタスイッチ８０６は、信号ＣＳＩＺＥ［０］が“１”を示すとオン状態となり、対応するキャッシュメモリ６に接地電位ＧＮＤを供給する。そして、信号ＣＳＩＺＥ［１］が“０”を示すとオフ状態となり、対応するキャッシュメモリ６への接地電位ＧＮＤの供給を停止する。
【０２１２】
バンク１に対応して設けられたトランジスタスイッチ８０５は、インバータ８０３が“０”を出力するとオン状態となり、バンク１のキャッシュメモリ６に電源電位ＶＤＤを供給する。そして、インバータ８０３が“１”を出力するとオフ状態となり、バンク１のキャッシュメモリ６への電源電位ＶＤＤの供給を停止する。
【０２１３】
バンク１に対応して設けられたトランジスタスイッチ８０６は、ＯＲ回路８０４が“１”を出力するとオン状態となり、バンク１のキャッシュメモリ６に接地電位ＧＮＤを供給する。そして、ＯＲ回路８０４が“０”を出力するとオフ状態となり、バンク１のキャッシュメモリ６への接地電位ＧＮＤの供給を停止する。
【０２１４】
なお、バンク０のキャッシュメモリ６には、常時電源電位ＶＤＤと接地電位ＧＮＤが供給されている。
【０２１５】
このような電源制御回路８を設けることによって、バンク制御回路７が選択したキャッシュメモリ６に電源が供給され、選択されなかったキャッシュメモリ６には電源が供給されない。具体的には、信号ＣＳＩＺＥが“００”を示すと、バンク制御回路７はバンク０のキャッシュメモリ６を選択する。このとき、電源制御回路８のＡＮＤ回路８００及びＯＲ回路８０４の出力はともに“０”を示し、インバータ８０１〜８０３の各出力は“１”を示す。従って、バンク１〜７のキャッシュメモリ６へは電源電位ＶＤＤ及び接地電位ＧＮＤが供給されない。その結果、バンク制御回路７によって選択されたバンク０のキャッシュメモリ６のみに電源が供給される。
【０２１６】
また、信号ＣＳＩＺＥが“０１”を示すと、バンク制御回路７はバンク０，１のキャッシュメモリ６を選択する。このとき、電源制御回路８のＡＮＤ回路８００及びインバータ８０３の出力はともに“０”を示し、インバータ８０１，８０２及びＯＲ回路８０４の各出力は“１”を示す。従って、バンク２〜７のキャッシュメモリ６へは電源電位ＶＤＤ及び接地電位ＧＮＤが供給されない。その結果、バンク制御回路７によって選択されたバンク０，１のキャッシュメモリ６のみに電源が供給される。
【０２１７】
また、信号ＣＳＩＺＥが“１０”を示すと、バンク制御回路７はバンク０〜３のキャッシュメモリ６を選択する。このとき、電源制御回路８のＡＮＤ回路８００及びインバータ８０２，８０３の各出力は“０”を示し、インバータ８０１及びＯＲ回路８０４の出力はともに“１”を示す。従って、バンク４〜７のキャッシュメモリ６へは電源電位ＶＤＤ及び接地電位ＧＮＤが供給されない。その結果、バンク制御回路７によって選択されたバンク０〜３のキャッシュメモリ６のみに電源が供給される。
【０２１８】
また、信号ＣＳＩＺＥが“１１”を示すと、バンク制御回路７はすべてのキャッシュメモリ６を選択する。このとき、電源制御回路８のインバータ８０１〜８０３の各出力は“０”を示し、ＯＲ回路８０４の出力は“１”を示す。従って、バンク制御回路７によって選択されたすべてのキャッシュメモリ６に電源が供給される。
【０２１９】
このように、キャッシュメモリ装置１０に電源制御回路８を設けることによって、使用するキャッシュメモリ６だけに電源が供給されるため、キャッシュメモリ装置１０の低消費電力化が図れる。
【０２２０】
なお、図１に示すキャッシュメモリ装置１０では、最大で４種類のキャッシュ容量を実現しているが、ｍビットの信号ＣＳＩＺＥ（ｍは整数）と、（２ｍ−１）ビットの信号ＢＩＤを使用して、最大で２ｍ種類のキャッシュ容量を実現することができる。
【０２２１】
また、本実施の形態１では、バンク制御回路７のフリップフロップ７０９〜７１６は、バンクデコーダ７００のデータ出力とキャッシュメモリ６のデータ出力とを同期させるために設けられている。キャッシュメモリ６のデータ出力タイミングが本実施の形態１とは異なる場合には、フリップフロップ以外の回路を設けて、バンクデコーダ７００のデータ出力とキャッシュメモリ６のデータ出力とを同期させても良い。
【０２２２】
また、本実施の形態１では、複数のキャッシュメモリ６のそれぞれのｗａｙ数（連想度）を２つ（ｗａｙ０，ｗａｙ１）としたが、同じｗａｙ数であることを前提に複数のキャッシュメモリ６のそれぞれのｗａｙ数を１つにしても良いし、３つ以上にしても良い。
【０２２３】
実施の形態２．
図３３は、本発明の実施の形態２に係るキャッシュメモリ装置の設計方法を示すフローチャートである。本実施の形態２では、上述の実施の形態１に係るキャッシュメモリ装置１０の設計方法を提供する。
【０２２４】
図３３に示されるように、まずステップｓ１において、Ｎ１個のキャッシュメモリ６と接続可能なバンク制御回路７と、キャッシュ周辺回路５とを設計する。
【０２２５】
Ｎ１の値は、ユーザーに提供するキャッシュ容量の範囲の最大値に応じて決定される。例えば、最大で１６Ｋバイトのキャッシュ容量をユーザーに提供するのであれば、キャッシュメモリ６のデータメモリ６３４の容量が２Ｋバイトであるため、８つのキャッシュメモリ６と接続可能なバンク制御回路７を設計する。
【０２２６】
そして、ステップｓ２において、ユーザーがキャッシュ容量α１を要求すると、ステップ３において、ステップ１で設計したバンク制御回路７及びキャッシュ周辺回路５と、Ｎ２個のキャッシュメモリ６とを備えるキャッシュメモリ装置を設計する。ここで、Ｎ２≦Ｎ１であって、Ｎ２の値はキャッシュ容量α１に応じて決定される。例えば、ユーザーが要求するキャッシュ容量α１が８Ｋバイトであれば、Ｎ２の値は“４”に設定される。
【０２２７】
ステップｓ３では、ステップｓ１で設計されているバンク制御回路７とキャッシュ周辺回路５とを備えるキャッシュメモリ装置１０を設計するため、ステップｓ３では、バンク制御回路７とキャッシュ周辺回路５をあらためて設計する必要が無く、Ｎ２個のキャッシュメモリ６を設計する。
【０２２８】
そして、ステップｓ３で設計されたキャッシュメモリ装置１０を備えるマイクロプロセッサ１を設計し、キャッシュ容量α１のマイクロプロセッサ１をユーザーに提供する。
【０２２９】
次にステップｓ４において、ユーザーが要求するキャッシュ容量が変化し、ユーザーがキャッシュ容量β１（≠α１）を要求すると、ステップ５において、ステップ１で設計したバンク制御回路７及びキャッシュ周辺回路５と、Ｎ３個のキャッシュメモリ６とを備えるキャッシュメモリ装置を設計する。ここで、Ｎ３≦Ｎ１かつＮ３≠Ｎ２であって、Ｎ３の値はキャッシュ容量β１に応じて決定される。例えば、ユーザーが要求するキャッシュ容量β１が４Ｋバイトであれば、Ｎ３の値は“２”に設定される。
【０２３０】
ステップｓ５では、ステップｓ１で設計されているバンク制御回路７とキャッシュ周辺回路５とを備えるキャッシュメモリ装置１０を設計するため、ステップｓ５では、バンク制御回路７とキャッシュ周辺回路５をあらためて設計する必要が無く、Ｎ３個のキャッシュメモリ６を設計する。
【０２３１】
そして、ステップｓ５で設計されたキャッシュメモリ装置１０を備えるマイクロプロセッサ１を設計し、キャッシュ容量β１のマイクロプロセッサ１をユーザーに提供する。
【０２３２】
このように、本実施の形態２に係るキャッシュメモリ装置の設計方法では、キャッシュ容量を変更する際には、予め設計されたバンク制御回路７を備えるキャッシュメモリ装置１０を設計している。従って、キャッシュ容量を変更する際には、バンク制御回路７をあらためて別個に設計する必要がない。従って、キャッシュ容量を変更する際に必要な設計変更が少なくて済む。
【０２３３】
また、本実施の形態２では、キャッシュ容量を変更する際には、予め設計されたキャッシュ周辺回路５を更に備えるキャッシュメモリ装置を設計している。従って、キャッシュ容量を変更する際には、キャッシュ周辺回路５をもあらためて別個に設計する必要がない。従って、キャッシュ容量を変更する際に必要な設計変更を更に低減することができる。
【０２３４】
実施の形態３．
図３４は、本発明の実施の形態３に係るキャッシュメモリ装置の設計方法を示すフローチャートである。本実施の形態３では、実施の形態２とは異なる、実施の形態１に係るキャッシュメモリ装置１０の設計方法を提供する。
【０２３５】
図３４に示されるように、ステップｓ１１において、ユーザーがキャッシュ容量α２を要求する。そして、ステップｓ１２において、一般的なＣＡＤツールを用いて、キャッシュメモリ装置１０を設計する。以下にステップｓ１２について詳細に説明する。
【０２３６】
ステップｓ１２は、図３５に示されるように、ステップｓ１２ａ〜ｓ１２ｃまでで構成されている。まずステップｓ１２ａにおいて、Ｎ１１個のキャッシュメモリ６を設計する。Ｎ１１の値は、ユーザーが要求するキャッシュ容量α２に応じて決定される。例えば、キャッシュ容量α２が８Ｋバイトであれば、Ｎ１１の値は“４”に設定される。
【０２３７】
次に、ステップｓ１２ｂにおいて、Ｎ１１個のキャッシュメモリと接続可能なバンク制御回路７を設計し、ステップｓ１２ｃにおいて、キャッシュ周辺回路５を設計する。
【０２３８】
そして、ステップｓ１２で設計されたキャッシュメモリ装置１０を備えるマイクロプロセッサ１を設計して、キャッシュ容量α１のマイクロプロセッサ１をユーザーに提供する。
【０２３９】
次にステップｓ１３において、ユーザーが要求するキャッシュ容量が変化し、ユーザーがキャッシュ容量β２（≠α２）を要求すると、ステップ１４において、一般的なＣＡＤツールを用いてキャッシュメモリ装置１０を設計する。以下にステップｓ１４について詳細に説明する。
【０２４０】
ステップｓ１４は、図３６に示されるように、ステップｓ１４ａ，ｓ１４ｂで構成されている。まずステップｓ１４ａにおいて、Ｎ１２個のキャッシュメモリ６を設計する。ここでＮ１２≠Ｎ１１である。また、Ｎ１２の値は、ユーザーが要求するキャッシュ容量β２に応じて決定される。例えば、ユーザーが要求するキャッシュ容量β２が１６Ｋバイトであれば、Ｎ１２の値は“８”に設定される。また、キャッシュ容量β２が４Ｋバイトであれば、Ｎ１２の値は“２”に設定される。
【０２４１】
次に、ステップｓ１４ｂにおいて、上述のステップｓ１２ｂで設計したバンク制御回路７を設計変更して、Ｎ１２個のキャッシュメモリ６に接続可能なバンク制御回路７を設計する。例えば、Ｎ１１＝４，Ｎ１２＝８であれば、上述の図２７に示すバンク制御回路７を図５に示す回路に設計変更する。また、例えば、Ｎ１１＝４，Ｎ１２＝２であれば、図２７に示すバンク制御回路７を図２８に示す回路に設計変更する。
【０２４２】
このように、Ｎ１２≠Ｎ１１であれば、ステップｓ１２ｂで設計したバンク制御回路７を、Ｎ１２個のキャッシュメモリ６に接続可能な回路に設計変更する。
【０２４３】
また、ステップｓ１４で設計されるキャッシュメモリ装置１０は、上述のステップｓ１２ｃで設計されたキャッシュ周辺回路５を備えている。従って、ステップｓ１４では、キャッシュ周辺回路５を設計する必要が無い。
【０２４４】
そして、ステップｓ１４で設計されたキャッシュメモリ装置１０を備えるマイクロプロセッサ１を設計し、キャッシュ容量β２のマイクロプロセッサ１をユーザーに提供する。
【０２４５】
このように本実施の形態３に係るキャッシュメモリ装置１０の設計方法では、キャッシュ容量を変更する場合には、バンク制御回路７を設計変更するため、本実施の形態３のようにキャッシュ周辺回路５を設計変更する必要がないし、他の回路を追加する必要も無い。従って、キャッシュ容量を変更する際に必要な設計変更を低減できる。
【０２４６】
また、本実施の形態３では、キャッシュ容量を変更する際には、既に設計されたキャッシュ周辺回路５を備えるキャッシュメモリ装置１０を設計しているため、キャッシュ容量を変更する際には、キャッシュ周辺回路５を設計する必要がない。従って、キャッシュ容量を変更する際に必要な設計変更が少なくて済む。
【０２４７】
なお、本実施の形態３では、Ｎ１２＜Ｎ１１の場合にも、バンク制御回路７を設計変更していたが、この場合には、上述の実施の形態２に係る設計方法のように、ステップｓ１２ｂで設計したバンク制御回路７を備えるキャッシュメモリ装置１０をステップｓ１４で設計することによって、ステップｓ１４でバンク制御回路７を設計変更しなくても良い。つまり、Ｎ１２＞Ｎ１１の場合にだけバンク制御回路７を設計変更しても良い。
【０２４８】
また、図３７に示されるように、ステップｓ１１の前にステップｓ２１を実行しても良い。
【０２４９】
ステップｓ２１において、バンク制御回路７が接続可能なキャッシュメモリ６の総数に対応したメモリ容量をパラメータとして、バンク制御回路７に関する設計データをハードウェア記述言語で予め記述しておく。
【０２５０】
次にステップｓ１２ｂにおいて、Ｎ１１の値に対応したメモリ容量を論理合成時に上記パラメータに代入して、Ｎ１１個のキャッシュメモリ６に接続可能なバンク制御回路７を設計する。例えば、Ｎ１１＝４の場合、上記パラメータに８Ｋバイト（＝２Ｋバイト×４）を入力する。
【０２５１】
そして、ステップｓ１４ｂにおいて、Ｎ１２の値に対応したメモリ容量を論理合成時に上記パラメータに代入して、ステップｓ１２ｂで設計されたバンク制御回路７を設計変更する。例えば、Ｎ１２＝８の場合には、上記パラメータに１６Ｋバイト（＝２Ｋバイト×８）を代入する。
【０２５２】
このように、バンク制御回路７が接続可能なキャッシュメモリ６の総数に対応したメモリ容量をパラメータとして、バンク制御回路７に関する設計データをハードウェア記述言語で記述することによって、バンク制御回路の設計変更が間単にできる。
【０２５３】
実施の形態４．
図３９は本発明の実施の形態４に係るマイクロプロセッサの設計方法を示すフローチャートである。
【０２５４】
上述の実施の形態１では、マイクロプロセッサ１にバンク０のキャッシュメモリ６しか設けられない場合であっても、図２４に示されるように、キャッシュメモリ６は、バンク制御回路７を介してバス制御回路３やキャッシュ周辺回路５に接続されていた。
【０２５５】
しかしながら、マイクロプロセッサ１にバンク０のキャッシュメモリ６しか設けられない場合には、図３８に示されるように、バンク制御回路７を介さずにバンク０のキャッシュメモリ６をバス制御回路３やキャッシュ周辺回路５に直接接続することができる。具体的には、図３８に示すマイクロプロセッサ１は以下のようにして得られる。
【０２５６】
図２４に示されるマイクロプロセッサ１において、バンク０のキャッシュメモリ６のバンク０リードデータＢ０ＲＤを出力する出力端子と、キャッシュ周辺回路５のメモリードデータＭＲＤが入力されていた入力端子とを直接接続し、バス制御回路３のキャッシュメモリ制御信号ＣＭＣＮＴを出力する出力端子と、バンク０のキャッシュメモリ６のバンク０制御信号Ｂ０ＣＮＴが入力されていた入力端子とを直接接続する。また、バンク０のキャッシュメモリ６のバンク０ステータスリードデータＢ０ＳＲＤを出力する出力端子と、バス制御回路３のステータスリードデータＳＲＤが入力されていた出力端子とを直接接続する。
【０２５７】
なお、キャッシュメモリ６をバス制御回路３やキャッシュ周辺回路５に直接接続する場合であっても、キャッシュメモリ６の追加を簡単にするために、図３８に示されるように、キャッシュメモリ装置１０にバンク制御回路７を設けておく。
【０２５８】
このように、バンク０のキャッシュメモリ６を、バンク制御回路７を介さずに、バス制御回路３及びキャッシュ周辺回路５に直接接続することによっても、２Ｋバイトのキャッシュ容量を実現できる。そして、バンク０のキャッシュメモリ６を、バス制御回路３及びキャッシュ周辺回路５に直接接続した場合には、バンク０のキャッシュメモリ６により高速にアクセスできる。
【０２５９】
そこで、本実施の形態４に係るマイクロプロセッサの設計方法では、図３９に示されるように、まずステップｓ３０において、一般的なＣＡＤツールを用いて、バンク０のキャッシュメモリ６、バンク制御回路７、キャッシュ周辺回路５及びバス制御回路３の配置設計を行う。
【０２６０】
次に、ステップｓ３１において、ステップｓ３０で設計された配置で、バンク０のキャッシュメモリをバス制御回路３及びキャッシュ周辺回路５に直接接続する第１の配線パターンを設計する。そして、ステップｓ３２において、ステップｓ３０で設計された配置で、バンク０のキャッシュメモリ６をバンク制御回路７を介してバス制御回路３及びキャッシュ周辺回路５に接続する第２の配線パターンを設計する。
【０２６１】
このように、第１，２の配線パターンを設計することによって、バンク０のキャッシュメモリ６とバス制御回路３及びキャッシュ周辺回路５とが直接接続されるマイクロプロセッサ１と、バンク０のキャッシュメモリとバス制御回路３及びキャッシュ周辺回路５とがバンク制御回路７を介して接続されるマイクロプロセッサ１とを簡単に設計することができる。
【０２６２】
従って、バンク０のキャッシュメモリ６のみを備えるマイクロプロセッサ１を設計する際には、ステップｓ３１で設計した第１の配線パターンを使用し、複数のキャッシュメモリ６を備えるマイクロプロセッサ１を設計する際には、ステップｓ３２で設計した第２の配線パターンを使用することによって、キャッシュ容量を変更する際の設計変更を少なくすることができる。
【０２６３】
そして、キャッシュメモリ６が一つの場合には、バンク制御回路７を介さずにキャッシュメモリ６にアクセスすることができるため、キャッシュメモリ６に高速にアクセスできる。
【０２６４】
また、第１の配線パターンから第１の配線マスクを製作し、第２の配線パターンから第２の配線マスクを製作することによって、使用する配線マスクを変更するだけで、バンク０のキャッシュメモリ６をバス制御回路３及びキャッシュ周辺回路５に直接接続したり、バンク０のキャッシュメモリをバンク制御回路７を介してバス制御回路３及びキャッシュ周辺回路５に接続することができる。
【０２６５】
【発明の効果】
この発明に係るバンク制御回路によれば、キャッシュ容量を示す信号に基づいて、キャッシュメモリを選択することができるため、当該信号が示す容量を変化させることによって、簡単に、複数種類のキャッシュ容量を実現することができる。従って、キャッシュ容量変更の際に必要な設計変更を低減できる。
【０２６６】
また、この発明に係るキャッシュメモリ装置の設計方法によれば、第１，２のキャッシュメモリ装置は、工程（ａ）で設計されたバンク制御回路を備えるため、第１，２のキャッシュメモリ装置を設計する際に、バンク制御回路を別個に設計する必要が無い。従って、キャッシュメモリ容量を変更する際に必要な設計変更を低減できる。
【０２６７】
また、この発明に係る他のキャッシュメモリ装置の設計方法によれば、キャッシュメモリの数が、バンク制御回路に接続可能な数よりも大きい場合には、バンク制御回路を設計変更するため、その他の周辺回路を設計変更する必要が無い。従って、キャッシュ容量を変更する際に必要な設計変更を低減できる。
【０２６８】
また、この発明に係るマイクロプロセッサの設計方法によれば、第１，２の配線パターンを設計することによって、キャッシュメモリと制御回路とが直接接続されるマイクロプロセッサと、キャッシュメモリと制御回路とがバンク制御回路を介して接続されるマイクロプロセッサとを簡単に設計することができる。従って、一つのキャッシュメモリのみを備えるマイクロプロセッサを設計する際には、工程（ａ）で設計した第１の配線パターンを使用し、複数のキャッシュメモリを備えるマイクロプロセッサを設計する際には、工程（ｂ）で設計した第２の配線パターンを使用することによって、キャッシュ容量を変更する際の設計変更を低減できる。
【図面の簡単な説明】
【図１】本発明の実施の形態１に係るマイクロプロセッサの構成を示すブロック図である。
【図２】本発明の実施の形態１に係るバス制御回路とキャッシュ周辺回路との接続関係を示す図である。
【図３】本発明の実施の形態１に係るバンク制御回路とキャッシュメモリとの接続関係を示す図である。
【図４】キャッシュアドレスの構成を示す図である。
【図５】本発明の実施の形態１に係るバンク制御回路の構成を示すブロック図である。
【図６】信号ＣＳＩＺＥと、信号ＢＩＤと、バンクｎ選択信号との関係を示す図である。
【図７】本発明の実施の形態１に係るキャッシュメモリの構成を示すブロック図である。
【図８】本発明の実施の形態１に係るキャッシュ周辺回路の構成を示すブロック図である。
【図９】本発明の実施の形態１に係るマイクロプロセッサの動作を示すタイミングチャートである。
【図１０】本発明の実施の形態１に係るマイクロプロセッサの動作を示すタイミングチャートである。
【図１１】本発明の実施の形態１に係るマイクロプロセッサの動作を示すタイミングチャートである。
【図１２】本発明の実施の形態１に係るマイクロプロセッサの動作を示すタイミングチャートである。
【図１３】本発明の実施の形態１に係るマイクロプロセッサの動作を示すタイミングチャートである。
【図１４】本発明の実施の形態１に係るマイクロプロセッサの動作を示すタイミングチャートである。
【図１５】本発明の実施の形態１に係るマイクロプロセッサの動作を示すタイミングチャートである。
【図１６】本発明の実施の形態１に係るマイクロプロセッサの動作を示すタイミングチャートである。
【図１７】本発明の実施の形態１に係るマイクロプロセッサの動作を示すタイミングチャートである。
【図１８】本発明の実施の形態１に係るマイクロプロセッサの動作を示すタイミングチャートである。
【図１９】本発明の実施の形態１に係るマイクロプロセッサの動作を示すタイミングチャートである。
【図２０】本発明の実施の形態１に係るマイクロプロセッサの動作を示すタイミングチャートである。
【図２１】本発明の実施の形態１に係るマイクロプロセッサの動作を示すタイミングチャートである。
【図２２】本発明の実施の形態１に係るマイクロプロセッサの構成を示すブロック図である。
【図２３】本発明の実施の形態１に係るマイクロプロセッサの構成を示すブロック図である。
【図２４】本発明の実施の形態１に係るマイクロプロセッサの構成を示すブロック図である。
【図２５】本発明の実施の形態１に係るマイクロプロセッサの構成を示すブロック図である。
【図２６】本発明の実施の形態１に係るマイクロプロセッサの構成を示すブロック図である。
【図２７】本発明の実施の形態１に係るバンク制御回路の構成を示すブロック図である。
【図２８】本発明の実施の形態１に係るバンク制御回路の構成を示すブロック図である。
【図２９】信号ＣＳＩＺＥと、信号ＢＩＤと、バンクｎ選択信号との関係を示す図である。
【図３０】信号ＣＳＩＺＥと、信号ＢＩＤと、バンクｎ選択信号との関係を示す図である。
【図３１】本発明の実施の形態１に係るマイクロプロセッサの構成を示すブロック図である。
【図３２】本発明の実施の形態１に係る電源制御回路の構成を示すブロック図である。
【図３３】本発明の実施の形態２に係るキャッシュメモリ装置の設計方法を示すフローチャートである。
【図３４】本発明の実施の形態３に係るキャッシュメモリ装置の設計方法を示すフローチャートである。
【図３５】本発明の実施の形態３に係るキャッシュメモリ装置の設計方法を示すフローチャートである。
【図３６】本発明の実施の形態３に係るキャッシュメモリ装置の設計方法を示すフローチャートである。
【図３７】本発明の実施の形態３に係るキャッシュメモリ装置の設計方法を示すフローチャートである。
【図３８】本発明の実施の形態１に係るマイクロプロセッサの変形例の構成を示すブロック図である。
【図３９】本発明の実施の形態４に係るマイクロプロセッサの設計方法を示すフローチャートである。
【符号の説明】
１  マイクロプロセッサ、３  バス制御回路、４  メインメモリ、５  キャッシュ周辺回路、６  キャッシュメモリ、７，７ｂ，７ｃ  バンク制御回路、８  電源制御回路、１０  キャッシュメモリ装置、５００，５０２  比較器、６０１ｗａｙ０タグメモリ、６０２  ｗａｙ１タグメモリ、６０３  ｗａｙ０データメモリ、６０４  ｗａｙ１データメモリ。
【図１】
2004259098.tif 000003
【図２】
2004259098.tif 000004
【図３】
2004259098.tif 000005
【図４】
2004259098.tif 000006
【図５】
2004259098.tif 000007
【図６】
2004259098.tif 000008
【図７】
2004259098.tif 000009
【図８】
2004259098.tif 000010
【図９】
2004259098.tif 000011
【図１０】
2004259098.tif 000012
【図１１】
2004259098.tif 000013
【図１２】
2004259098.tif 000014
【図１３】
2004259098.tif 000015
【図１４】
2004259098.tif 000016
【図１５】
2004259098.tif 000017
【図１６】
2004259098.tif 000018
【図１７】
2004259098.tif 000019
【図１８】
2004259098.tif 000020
【図１９】
2004259098.tif 000021
【図２０】
2004259098.tif 000022
【図２１】
2004259098.tif 000023
【図２２】
2004259098.tif 000024
【図２３】
2004259098.tif 000025
【図２４】
2004259098.tif 000026
【図２５】
2004259098.tif 000027
【図２６】
2004259098.tif 000028
【図２７】
2004259098.tif 000029
【図２８】
2004259098.tif 000030
【図２９】
2004259098.tif 000031
【図３０】
2004259098.tif 000032
【図３１】
2004259098.tif 000033
【図３２】
2004259098.tif 000034
【図３３】
2004259098.tif 000035
【図３４】
2004259098.tif 000036
【図３５】
2004259098.tif 000037
【図３６】
2004259098.tif 000038
【図３７】
2004259098.tif 000039
【図３８】
2004259098.tif 000040
【図３９】
2004259098.tif 000041