(57)【特許請求の範囲】
【請求項１】
ロード／ストア命令を実行するロード／ストア命令実行部を有するマイクロプロセッサにおいて、
外部メモリから読み出したデータを一時的に格納するキャッシュメモリと、
前記キャッシュメモリとは別個に設けられ、前記ロード／ストア命令実行部によるデータの読み書きが可能で、かつ、外部メモリとの間でデータをＤＭＡ(Direct Memory Access)転送可能なＲＡＭ(Random Access Memory)と、
前記ロード／ストア命令実行部による前記ＲＡＭのアクセスに関連するデータを、アクセス前に一時的に格納する第１のストアバッファと、
前記ロード／ストア命令実行部による前記キャッシュメモリのアクセスに関連するデータを、アクセス前に一時的に格納する第２のストアバッファと、を備え、
前記ロードストア実行部は、前記ＲＡＭと前記キャッシュメモリとを略等しいレイテンシーでアクセスすることを特徴とするマイクロプロセッサ。
【請求項２】
前記ＲＡＭは、少なくとも第１および第２のデータ格納領域を有し、
前記ロード／ストア命令実行部が前記第１のデータ格納領域に対してアクセスを行っている合間に、前記第２のデータ格納領域と前記外部メモリとの間でデータのＤＭＡ転送を行い、かつ、前記ロード／ストア命令実行部が前記第２のデータ格納領域に対してアクセスを行っている合間に、前記第１のデータ格納領域と前記外部メモリとの間でデータのＤＭＡ転送を行う制御を行うＲＡＭ制御部を備えることを特徴とする請求項１に記載のマイクロプロセッサ。
【請求項３】
前記ＲＡＭ制御部は、前記ＲＡＭに対する前記ロード／ストア命令実行部によるアクセスとＤＭＡ転送とが競合した場合には、ＤＭＡ転送を優先して行うことを特徴とする請求項２に記載のマイクロプロセッサ。
【請求項４】
前記ＲＡＭに対する前記ロード／ストア命令実行部によるアクセスとＤＭＡ転送との優先度を制御可能な制御レジスタを備えることを特徴とする請求項１〜３のいずれかに記載のマイクロプロセッサ。
【請求項５】
前記ＲＡＭに対する前記ロード／ストア命令実行部によるアクセスとＤＭＡ転送との優先度を制御可能な外部ピンを備えることを特徴とする請求項１〜３のいずれかに記載のマイクロプロセッサ。
【請求項６】
前記ロード／ストア命令実行部による前記ＲＡＭのアクセスに関連するデータを、アクセス前に一時的に格納するストアバッファを備えることを特徴とする請求項１〜５のいずれかに記載のマイクロプロセッサ。
【請求項７】
前記ＲＡＭに対する前記ロード／ストア命令実行部によるアクセスとＤＭＡ転送とが競合した場合には、ＤＭＡ転送を優先して行い、競合した前記ロード／ストア命令実行部による前記ＲＡＭのアクセスに関連するデータを一時的に前記ストアバッファに格納するＲＡＭ制御部を備えることを特徴とする請求項６に記載のマイクロプロセッサ。
【請求項８】
前記ＲＡＭにアクセスするための専用の命令が設けられることを特徴とする請求項１に記載のマイクロプロセッサ。
【請求項９】
前記専用の命令の中には、前記ＲＡＭに対して直接読み書きを行う命令と、外部メモリとの間でＤＭＡによるブロック転送を行う命令との少なくとも一方が含まれることを特徴とする請求項８に記載のマイクロプロセッサ。
【請求項１０】
前記ロード／ストア命令実行部は、前記専用の命令が発行された場合には、メモリ管理ユニットの制御に先立って、該当する命令を実行することを特徴とする請求項８または９に記載のマイクロプロセッサ。
【請求項１１】
ロード／ストア命令を実行するロード／ストア命令実行部を有するマイクロプロセッサにおいて、
外部メモリから読み出したデータを一時的に格納するキャッシュメモリと、
前記キャッシュメモリとは別個に設けられ、前記ロード／ストア命令実行部によるデータの読み書きが可能で、かつ、外部メモリとの間でデータをＤＭＡ(Direct Memory Access)転送可能なＲＡＭ(Random Access Memory)と、
前記ＲＡＭに格納されたデータに対応するアドレスを格納するアドレスレジスタと、
前記アドレスレジスタに格納されたアドレスと、スヌープ対象となるアドレスとを比較する比較器と、を備え、
前記ＲＡＭは、前記比較器による比較結果に応じた動作を行うことを特徴とするマイクロプロセッサ。
【請求項１２】
前記ＲＡＭは、前記比較器による比較結果が一致した場合には、一致したアドレスに対応する前記ＲＡＭのデータを、スヌープを指示したエージェントに転送することを特徴とする請求項１１に記載のマイクロプロセッサ。
【請求項１３】
前記アドレスレジスタは、前記ロード／ストア命令実行部が前記ＲＡＭへのアクセス中であるか否かを示すフラグ情報を含んでおり、
前記フラグ情報により前記ロード／ストア命令実行部が前記ＲＡＭへのアクセス中であることがわかると、スヌープを指示したエージェントに対して前記ＲＡＭへのアクセスを禁止することを特徴とする請求項１２に記載のマイクロプロセッサ。
【請求項１４】
前記ＲＡＭがスヌープ指示信号を受領するか否かを示すフラグ情報を有し、前記ＲＡＭが前記スヌープを受領しないことを前記フラグ情報が示している場合には、前記スヌープを指示する前記エージェントのさらなるアクセスを一次的に禁止することを特徴とする請求項１２または１３に記載のマイクロプロセッサ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、外部メモリよりも高速にデータの読み書きが可能なＲＡＭを内蔵するマイクロプロセッサの内部構成に関する。
【０００２】
【従来の技術】
近年、プロセッサの動作速度が高くなってきたため、プロセッサと主記憶メモリ（外部メモリ）との速度差が大きくなってきた。プロセッサと主記憶メモリとの速度差を埋めるために、両者の中間に小容量かつ高速のキャッシュメモリを配置することがある。最近のプロセッサの中には、この種のキャッシュメモリを内蔵したものが多い。プロセッサが要求するデータがキャッシュメモリ内に存在する場合には、キャッシュメモリから読み出したデータをプロセッサに渡すことにより、主記憶メモリへのアクセス回数が減少し、プロセッサの高速処理が可能になる。
【０００３】
【発明が解決しようとする課題】
しかしながら、キャッシュメモリの容量を大きくすると、キャッシュメモリ内にデータが存在するか否かを検索する時間が長くなるとともに、メモリに対するデータの読み書きに時間がかかり、メモリ・アクセスの性能が低下してしまう。このため、キャッシュメモリの容量はあまり大きくできない。したがって、容量の大きなデータの加工をキャッシュメモリ上で行おうとすると、頻繁にキャッシュリフィルを行わなければならず、プロセッサの性能が低下する。
【０００４】
また、キャッシュメモリは、同一のメモリアドレスに対して何度もアクセスする場合にはキャッシュ・ヒット率が向上して高速処理が可能になるが、同一のメモリアドレスに対するアクセス頻度が低い場合には、キャッシュ・ミス率が高くなり、メモリアクセスのパフォーマンスが低下する。
【０００５】
例えば、三次元の動画像を表示する場合には、メモリとプロセッサとの間で高速に画像データを伝送する必要があり、キャッシュメモリと同程度の速度でアクセスできるメモリに画像データを格納するのが望ましい。しかしながら、画像データは、データ容量が多く、かつ、同一のメモリアドレスに対するアクセス頻度が低いため、キャッシュメモリに格納してもアクセス速度は上がらない。
【０００６】
本発明は、上記の問題点を解決するためになされたものであり、その目的は、キャッシュメモリと同程度のレイテンシーでデータの読み書きができ、かつ、キャッシュメモリとは違う目的で利用可能なＲＡＭを備えたマイクロプロセッサを提供することにある。
【０００７】
本発明の一態様によれば、ロード／ストア命令を実行するロード／ストア命令実行部を有するマイクロプロセッサにおいて、
外部メモリから読み出したデータを一時的に格納するキャッシュメモリと、
前記キャッシュメモリとは別個に設けられ、前記ロード／ストア命令実行部によるデータの読み書きが可能で、かつ、外部メモリとの間でデータをＤＭＡ(Direct Memory Access)転送可能なＲＡＭ(Random Access Memory)と、
前記ロード／ストア命令実行部による前記ＲＡＭのアクセスに関連するデータを、アクセス前に一時的に格納する第１のストアバッファと、
前記ロード／ストア命令実行部による前記キャッシュメモリのアクセスに関連するデータを、アクセス前に一時的に格納する第２のストアバッファと、を備え、
前記ロードストア実行部は、前記ＲＡＭと前記キャッシュメモリとを略等しいレイテンシーでアクセスすることを特徴とするマイクロプロセッサが提供される。
また、本発明の一態様によれば、ロード／ストア命令を実行するロード／ストア命令実行部を有するマイクロプロセッサにおいて、
外部メモリから読み出したデータを一時的に格納するキャッシュメモリと、
前記キャッシュメモリとは別個に設けられ、前記ロード／ストア命令実行部によるデータの読み書きが可能で、かつ、外部メモリとの間でデータをＤＭＡ(Direct Memory Access)転送可能なＲＡＭ(Random Access Memory)と、
前記ＲＡＭに格納されたデータに対応するアドレスを格納するアドレスレジスタと、
前記アドレスレジスタに格納されたアドレスと、スヌープ対象となるアドレスとを比較する比較器と、を備え、
前記ＲＡＭは、前記比較器による比較結果に応じた動作を行うことを特徴とするマイクロプロセッサが提供される。
【０００８】
本発明の一態様では、ロード／ストア実行部によるデータの読み書きが可能で、かつ、外部メモリとの間でＤＭＡによるデータ転送を可能としたため、プロセッサが画像データのような大量のデータをプログラムで処理する際の一時的な作業領域として用いることができ、その際にキャッシュメモリのような性能ペナルティがない。
【０００９】
本発明の一態様では、ＲＡＭ内に第１および第２のデータ格納領域を設けるため、一方の格納領域にプロセッサがアクセスを行っている間に、他方の格納領域でＤＭＡ転送を行うことができる。
【００１０】
本発明の一態様では、ロード／ストア命令実行部によるアクセスとＤＭＡ転送とが競合した場合には、ＤＭＡ転送を優先させるようにしたため、ＤＭＡ転送速度が落ちるおそれがない。
【００１１】
本発明の一態様では、ロード／ストア命令実行部によるアクセスとＤＭＡ転送とが競合した場合の優先度を制御できるようにしたため、実装形態に応じて、最適な処理を行うことができる。
【００１２】
本発明の一態様では、述した優先度を制御するための外部ピンを設けるため、外部信号により、優先度の切り替えが可能になる。
【００１３】
本発明の一態様では、上述したＲＡＭのアクセスに関連するデータを一次的に格納するストアバッファを設けるため、ＲＡＭにアクセス可能な状態になってから、ストアバッファからデータを読み出してＲＡＭにアクセスすることができる。
【００１４】
本発明の一態様では、上述したＲＡＭにアクセスするための専用の命令を設けるため、プログラムのページ管理が簡素化される。
【００１５】
本発明の一態様では、ＲＡＭに対して直接読み書きする命令と、外部メモリとの間でＤＭＡによるブロック転送を行う命令とを設けるため、請求項８の特徴に加えて、ＲＡＭと外部メモリとの間で、プログラムから明示的に高速にデータを転送できる。
【００１６】
本発明の一態様では、メモリ管理ユニットの制御に先立って、上述した専用の命令を実行するようにしたため、ＲＡＭアクセス命令の実行にあたってメモリ管理ユニットの動作を待つ必要がなく、ＲＡＭアクセス命令を実装する回路の高速化が可能となる。
【００１７】
本発明の一態様では、キャッシュメモリと略等しいレイテンシーで上述したＲＡＭにアクセスできるため、プログラマは上述のＲＡＭにキャッシュメモリと略等しいレイテンシーでアクセスできることを前提にプログラミングすることができる。
【００１８】
本発明の一態様では、上述したＲＡＭ用のストアバッファを、キャッシュメモリ用のストアバッファとは別個に設けるため、ストアバッファの制御が容易になる。
【００１９】
本発明の一態様では、ＲＡＭに格納されたデータと関係のあるアド
レスとスヌープ対象のアドレスとを比較する比較器を設けるため、ＲＡＭに格納されたデータと関係のあるアドレスへの外部エージェントのアクセスを容易に検出し、それに対応した動作が可能になる。
【００２０】
本発明の一態様では、上述した比較器で一致が検出されたＲＡＭ内の特定のデータを、スヌープを指示したエージェントに転送するようにしたため、データの検索・転送を高速に行うことができる。
【００２１】
本発明の一態様では、ロード／ストア命令実行部がＲＡＭにアクセス中はスヌープ指示を受け付けないようにしたため、パイプラインストールを抑制できる。
【００２２】
本発明の一態様では、スヌープ処理を行うか否かを任意に設定できるようにしたため、プロセッサの動作に支障がない範囲内でスヌープ処理を行うことができる。
【００２３】
【発明の実施の形態】
以下、本発明に係るマイクロプロセッサについて、図面を参照しながら具体的に説明する。
【００２４】
（第１の実施形態）
図１は本発明に係るマイクロプロセッサの一実施形態の内部構成を示すブロック図である。図１のマイクロプロセッサは、外部バスＢ１に接続されたバス・インタフェース・ユニット(Bus Interface Unit)１と、プロセッサが実行する命令（インストラクション）のフェッチ（取り込み）を行うＩＦＵ(Instruction Fetch Unit)２と、仮想アドレスから物理アドレスへの変換を行うＭＭＵ(Memory Management Unit)３と、ロード／ストアに関連する命令を実行するＬＳＵ(Load Store Unit)４と、ロード／ストア以外の命令を実行する複数の実行ユニット５ａ，５ｂ，５ｃと、浮動小数点演算を行うＦＰＵ(Floating Point Unit)６ａ，６ｂと、プロセッサ各部の制御を行う制御論理部(Control Logic)７とを備える。
【００２５】
ＩＦＵ２は、分岐命令等の命令の分岐先を記憶するBTACを参照しつつＰＣ(Program Counter)を生成するPC-pipe２１と、命令を一時的に格納するICACHE(Instruction Cache Memory)２２と、命令の種類を判別してその命令を実行する実行ユニットを選択する命令発行＆ステージング部(Instruction issue & Staging block)２３とを有する。
【００２６】
ＭＭＵ３は、仮想アドレスから物理アドレスへの変換を行う３つのＴＬＢ(Translation Lookaside Buffer)を有する。ＯＳ(Operating System)が有するページ・テーブルの一部のうち、物理ページ番号や保護情報など、プロセッサが必要とするアドレス変換情報がＴＬＢに書き込まれており、これに基づいてＭＭＵ３は物理アドレスへの変換を行う。
【００２７】
ＭＭＵ３内の３つのＴＬＢは、JTLB(Joint Translation Lookaside Buffer)３１と、ITLB(Instruction Translation Lookaside Buffer)３２と、DTLB３３(Data Translation Lookaside Buffer)３３である。
【００２８】
これら３つのＴＬＢのうち、JTLB３１が本来のTLBである。JTLB３１は例えば４８個のエントリーを有し、命令／データの別に関係なく、ページ単位で仮想アドレスをマッピングする。
【００２９】
一方、ITLB３２とDTLB３３は、総称してマイクロＴＬＢと呼ばれる。ITLB３２は命令の仮想アドレスのデータパス(Datapath)に直接接続される専用のＴＬＢであり、DTLB３３はデータの仮想アドレスのデータパスに直列接続される専用のＴＬＢである。これらＴＬＢは、エントリー数は少ないが、高速にアドレス変換を行う。JTLB３１が生成した変換テーブルの一部が、必要に応じてITLB３２またはDTLB３３に転送される。
【００３０】
これら３つのＴＬＢは、例えばソフトウエアによって制御される。プロセッサは、JTLB３１に変換テーブルが存在しない場合に例外を起こし、例外ハンドラのプログラムがＯＳのページテーブルから該当するページを探し出し、JTLB３１に変換テーブル１００の情報を書き込む。
【００３１】
ＬＳＵ４は、外部メモリに対する読み出し／書き込みデータを一時的に格納するDCACHE(Data Cache Memory)４１と、キャッシュ以外の特殊な用途に使用されるSPRAM(Scratch Pad RAM)４２と、DCACHE４１やSPRAM４２をアクセスするための仮想アドレスを生成するアドレス生成器(Virtual Address Computation)４３とを有する。
【００３２】
制御論理部７は、プロセッサ各部の制御を行い、その内部には制御レジスタ(Control Register)７１が設けられる。
【００３３】
次に、図１のマイクロプロセッサの動作を簡単に説明する。まず、PC-pipe２１で生成されたＰＣ(Program Counter)に基づいて、ＩＦＵ２は命令のフェッチを行う。なお、ＰＣは仮想アドレスである。
【００３４】
ITLB３２は、ＰＣを仮想アドレスから物理アドレスに変換する。物理アドレスは、ICACHE２２内のITAGにおける検索に利用され、ＰＣの指し示す命令がICACHE２２内に存在するか否かを調べる。ＰＣの指し示す命令がICACHE２２内に存在しない場合（キャッシュ・ミスのとき）には、物理アドレスによって不図示の外部メモリへのアクセスを行う。
【００３５】
具体的には、キャッシュミスすると、ICACHE２２を制御するＩＦＵ２の制御論理部からＢＩＵ１の制御論理部に対して、キャッシュミスが起きたことを示す情報と、アクセスを行うべき物理アドレス情報とが渡される。ＢＩＵ１は、これらの情報に基づいて外部メモリをアクセスし、アクセスが終了すると、データとキャッシュ・ラインの取得が終わった旨の信号とをＩＦＵ２に供給する。ＩＦＵ２は、アクセスしたデータをICACHE２２に書き込む。同時に、リフィルされたキャッシュラインのうち、ＰＣの指し示す命令と、場合によっては、ＰＣの指し示す命令の後に続くいくつかの命令を、命令発行＆ステージング部２３に供給する。
【００３６】
一方、ＰＣの指し示す命令がICACHE２２内に存在する場合には、該当するICACHE２２内の命令と、場合によってはＰＣの指し示す命令の後に続くいくつかの命令が命令発行＆ステージング部２３に供給される。
【００３７】
命令発行＆ステージング部２３は、命令の種類を判別し、命令を実際に実行する実行ユニット（例えば、ＬＳＵ４や他の実行ユニット）を決定する。この際、命令発行＆ステージング部２３は、各実行ユニットの空き具合を鑑みて動的に判断する。
【００３８】
例えば、判別された命令がロード／ストア命令の場合には、処理できる実行ユニットはＬＳＵ４だけなので、ＬＳＵ４に命令を供給できる状態になると、命令発行＆ステージング部２３はＬＳＵ４に命令を送る。
【００３９】
次に、SPRAM４２に対してロード／ストアを行う場合の動作を説明する。図２は、図１のＬＳＵ４内部の一部構成を図示したものであり、SPRAM４２に関係する部分を制御系(Control)８とデータパス(Datapath)に分けて図示している。
【００４０】
図２の制御系８は、命令の流れに応じて、データパスに与える制御信号を生成する。データパスは、制御系８からの制御信号に基づいてデータを流していく。これが命令の実行に相当する。
【００４１】
図２において、制御系８とデータパスとをつないでいる各線は制御信号を示している。通常、制御信号は制御系８からデータパスに供給される。また、図２では省略しているが、データパスから制御系８に供給される制御信号も存在する。例えば、ICACHE２２がミスしてパイプライン処理を止める場合には、データパスの一部であるICACHE２２のＴＡＧからミス信号が制御系８に供給されてパイプライン処理を停止させる。
【００４２】
図２において、符号１０ａ〜１０ｊで示したブロックは、パイプライン処理を行う際にステージを区切るためのレジスタ構造を示している。これらブロックは、回路的には、フリップフロップやラッチで構成され、クロックに同期して、読み出しや書き込みを行う。以下では、これらブロックを総称してパイプラインレジスタと呼ぶ。
【００４３】
ＩＦＵ２は、ＩＦＵ制御論理部８１(IFU Control)の制御を受けて、フェッチされた命令をパイプラインレジスタ１０ａに格納する。命令はパイプラインレジスタ１０ａから命令デコーダ(Instruction Decoder)８２に送られる。命令デコーダ８２では、命令の識別や命令の処理に必要な中間的な制御信号を生成する。中間的な制御信号を生成する理由は、命令デコーダ８２でプロセッサのすべての制御信号を生成するのは量的および速度的に不可能なためであり、命令デコーダ８２は、命令よりも演算器の制御信号に近く、かつ、演算器の制御信号そのものよりも抽象的な信号を生成する。
【００４４】
フェッチされた命令がロード／ストア命令であることが命令デコーダ８２で分かった場合には、制御信号群が、関係する制御論理部に送られる。具体的には、制御信号群は、図２中のパイプライン制御論理部(Pipeline Control)８３、ＧＰＲ制御論理部(General Purpose Register Control)８４、およびＬＳＵ制御論理部(LSU Control)８５に送られる。
【００４５】
パイプライン制御論理部８３とＬＳＵ制御論理部８５では、データの流れのステージに同期する形で命令や制御信号が流れていく。このため、制御系８とデータパスの双方にパイプラインレジスタ１０ａ〜１０ｊが設けられている。
【００４６】
パイプライン制御論理部８３は、パイプラインレジスタ１０の中身の状況に応じて、パイプラインの進行の制御を行う。例えば、演算器上でリソースハザードが生じた場合には、パイプラインを停止するなどの処理を行う。
【００４７】
ＬＳＵ制御論理部８５は、ロード／ストア命令を実行するのに必要な制御信号を生成する。すなわち、ＧＰＲ制御論理部８４の制御によりレジスタファイル１１からパイプラインレジスタ１０に送られたデータは、アドレス生成器４３に送られてアドレスが生成される。アドレス生成器４３はアダー(Adder)制御論理部８６により制御され、アドレス生成器４３により生成されたアドレスは、次段のパイプラインレジスタ１０に送られる。
【００４８】
ＲＡＭ制御部に対応するＳＰＲ制御論理部(SPRAM Control)８７は、パイプライン制御論理部８３とＬＳＵ制御論理部８５からの信号を受けて、SPRAM４２へのアクセスを行う。その際、パイプラインレジスタ１０中のアドレスを使用する。このアドレスがロード命令であるときは、リード・イネーブル信号を有効にし、ライト・イネーブル信号を無効にする。そして、SPRAM４２からデータを読み出し、パイプラインレジスタ１０に格納する。格納されたデータは、次のステージでレジスタファイル１１に書き戻される。
【００４９】
一方、パイプラインレジスタ１０中のアドレスがストア命令であるときは、リード・イネーブル信号を無効にし、ライト・イネーブル信号を有効にする。そして、レジスタファイル１１からステージされてきたデータをSPRAM４２に書き込む。
【００５０】
一方、プロセッサ外のＤＭＡ(Direct Memory Access)コントローラ９は、図示のように、外部バスを介してプロセッサ内部のＢＩＵ制御論理部(BIU Control)８７に接続されている。ＤＭＡコントローラ９がＢＩＵ制御論理部８８に制御信号を送ってＤＭＡ処理を開始すると、ＢＩＵ制御論理部８８はＳＰＲ制御論理部８７に信号を送ってSPRAM４２をリード／ライトさせる。すなわち、ＳＰＲ制御論理部８７は、ＢＩＵ制御論理部８８を介して間接的にＤＭＡコントローラ９とも接続されている。
【００５１】
SPRAM４２に対するアクセス要求がＬＳＵ４とＢＩＵ１２（ＢＩＵ１２からのアクセス要求は元はＤＭＡコントローラ９からのものである）の双方から同時に発せられた場合は、ＳＰＲ制御論理部８７が両者を調停してイネーブル信号群を決定し、アドレス入力とデータ入力のセレクタを切り替える。
【００５２】
例えば、ＬＳＵ４とＢＩＵ１２によるSPRAM４２に対するアクセス要求の優先順位をプログラマブルに制御するには、ＳＰＲ制御論理部８７に図２に点線で示す制御レジスタ７１を接続し、この制御レジスタ７１の値を優先順位に応じてプログラマブルに変化させればよい。あるいは、図２に点線で示したように、プロセッサの外部ピンＰに入力される信号に応じて優先順位を切り替えてもよい。
【００５３】
次に、SPRAM４２の具体的な使用方法について説明する。図３はSPRAM４２を画像データやインストラクションの加工処理に用いる例を模式的に示した図であり、以下、この図を用いてSPRAM４２の動作を説明する。
【００５４】
(1)まず、図３（ａ）に示すように、SPRAM４２内の約半分程度の領域に、ＤＭＡ転送により、外部メモリの画像データを格納する。
【００５５】
(2)次に、図３（ｂ）に示すように、SPRAM４２に格納したデータをロード命令により汎用レジスタに読み込み、インテジャー・ユニット５ａ，５ｂ等の実行ユニットでデータを加工処理した後、ストア命令によりSPRAM４２に再び格納する。同時に、SPRAM４２内の他の半分程度の領域に、ＤＭＡ転送により、外部メモリの画像データを格納する。
【００５６】
(3)次に、図３（ｃ）に示すように、加工終了データをＤＭＡ転送により外部メモリにストアし、同時に、SPRAM４２内の他の半分程度の領域に格納したデータをＬＳＵ４で加工処理し、かつ、SPRAM４２内の半分程度の領域に外部メモリの画像データを格納する。
【００５７】
このように、図１のSPRAM４２は、ＬＳＵ４のパイプラインによるロード／ストアが可能で、かつ、外部メモリとの間でＤＭＡによるデータ転送が可能なため、画像データやインストラクションのように大量のデータを高速に処理する場合に特に適している。すなわち、SPRAM４２は、画像データやインストラクション等の大量のデータをプロセッサで加工処理する際に、一時的なメモ・パッド領域（作業領域）として用いるのに適している。
【００５８】
また、ＬＳＵ４は、DCACHE４１とほぼ同じレイテンシー（メモリアクセスに要するシステムクロック数）でSPRAM４２にアクセスできるため、外部メモリに格納されているデータを、いったんSPRAM４２に格納すれば、その後、プロセッサはSPRAM４２にアクセスしてデータ処理を行うことができ、外部メモリを直接アクセスするよりも短時間に大量のデータを処理することができる。
【００５９】
また、本実施形態のSPRAM４２は、外部メモリとのデータのやり取りにＤＭＡを用いるため、プロセッサが他の処理を行っている最中でも、外部メモリとの間でデータ転送を行える。
【００６０】
また、本実施形態のSPRAM４２は、マイクロプロセッサのコア部分であるＬＳＵ４等の各実行ユニットと同一チップ内に収容されるため、信号遅延やノイズなどの不具合が発生しにくく、また、実装面積や消費電力も低減できる。
【００６１】
図１では、ＬＳＵ４内にSPRAM４２とDCACHE４１の双方を設ける例を説明したが、DCACHE４１を省略してもよい。図４はDCACHE４１を持たない場合のSPRAM４２周辺の回路図である。図示のように、SPRAM４２は、バス調停を行うＢＩＵ(Bus Interface Unit)１２を介してアドレス／データバスに接続され、このバスには、画像データやインストラクション等を格納する外部メモリ等が接続される。
【００６２】
一方、図５はSPRAM４２とDCHACHEの双方を持つ場合のSPRAM４２周辺の回路図である。ＢＩＵ１２には、SPRAM４２と、DCACHE４１と、DCACHE４１用のＴＡＧ４４とが接続されている。DCACHE４１は、外部メモリから読み出されたデータの一部を格納するために用いられ、ＴＡＧ４４は、DCACHE４１に格納されるデータの付加情報（アドレスなど）を格納するために用いられる。
【００６３】
図５に示すように、SPRAM４２とDCACHE４１の双方を設けることにより、通常のメモリアクセスにはDCACHE４１を用い、画像データなどの大量のデータを加工処理する必要がある場合にはSPRAM４２を用いるというように、処理によってSPRAM４２とDCACHE４１を切り替えることにより、システム全体の処理性能を向上できる。
【００６４】
図６はプロセッサ内の各実行ユニット（図６ではＣＰＵアクセスと表示）によるアクセスとＤＭＡ転送とが競合した場合の処理を示すタイミング図である。同時に複数のデバイスがアクセスを行えないワンポートのSPRAM４２の場合、プロセッサ内の各実行ユニットによるアクセスとＤＭＡ転送とが競合した場合には、例えば、図１の制御レジスタ７１によりアクセス優先順位が決められる。具体的には、プログラマは、特定の命令を用いて、制御レジスタ７１内のビット値を優先順位に応じて切り替える。
【００６５】
図６はバスクロックの周波数がプロセッサのシステムクロックの半分の周波数の例を示しており、この場合、ＤＭＡ転送はバスクロックに同期して行われ、その合間に各実行ユニットによるアクセスが行われる。このようなアクセスを行うことにより、各実行ユニットの処理がストールしなくなる。
【００６６】
このように、プロセッサ内の実行ユニット（例えば、ＬＳＵ４のパイプライン）によるSPRAM４２のアクセスはＤＭＡ転送の合間に行われるため、ＬＳＵ４のパイプラインがＤＭＡ転送と同タイミングでSPRAM４２にアクセスしようとした場合には、そのパイプラインはストール状態になる。
【００６７】
この場合、図７に示すように、ＳＳＢ(SPRAM Store Buffer)４５を設けることにより、ストールを回避することができる。このＳＳＢ４５には、パイプラインが実行するSPRAMへのストア命令が一時的に格納される。図７はDCACHE４１を持たない場合のＳＳＢ４５の接続関係を示す図、図８はSPRAM４２とDCACHE４１の双方が共通のストアバッファ４６を有する例を示す図である。また、図９は、SPRAM４２に専用のＳＳＢ４５と、DCACHE４１に専用のストアバッファ４７とを設けた例を示す図である。
【００６８】
図７〜図９のように、ＳＳＢ４５またはストアバッファ４６，４７を設けることにより、ＬＳＵ４等の実行ユニットのストールを回避することができる。すなわち、SPRAM４２に対する実行ユニットによるアクセスとＤＭＡ転送とが競合した場合には、実行ユニットのデータは、ＤＭＡ転送が終了するまで、ＳＳＢ４５またはストアバッファ４６，４７に格納され、その間、パイプラインは他の処理を行うことができる。
【００６９】
なお、図８のように、SPRAM４２とDCACHE４１でストアバッファ４６を共有する場合には、SPRAM４２とDCACHE４１のいずれかを選択する選択回路が必要になるため、図９よりもストアバッファ４６の構成が複雑になる。
【００７０】
図１０は、ＳＳＢ４５を備えたマイクロプロセッサにおいて、プロセッサ内の実行ユニットによるアクセスとＤＭＡによるアクセスが競合した場合のタイミング図であり、実行ユニットのアクセスよりもＤＭＡ転送の方が優先度が高い例を示している。
【００７１】
例えば、時刻Ｔ１のときにＤＭＡ転送と実行ユニットPipe Aのアクセスが競合した場合には、ＤＭＡ転送が優先して実行され、実行ユニットPipe AからのデータＤ１はいったんＳＳＢ４５に格納される。その後、時刻Ｔ２になると、ＳＳＢ４５に格納されていた実行ユニットPipe Aの処理が実行されるとともに、アクセスしようとした実行ユニットPipe BのデータＤ２はＳＳＢ４５に格納される。
【００７２】
その後、時刻Ｔ３になると、ＤＭＡ転送が優先して実行される。この時点では、ＳＳＢ４５の内部にはすでに実行ユニットPipe BのデータＤ２が格納されているため、アクセスしようとした実行ユニットPipe Cはストール状態になる。
【００７３】
その後、時刻Ｔ４になると、ＳＳＢ４５に格納されていた実行ユニットPipe Bの処理が実行され、同時に、ストールしていた実行ユニットPipe CのデータＤ３がＳＳＢ４５に格納される。
【００７４】
図１１はSPRAM４２のライトタイミングを示すタイミング図である。図示のように、システムクロックＣＬＫの２クロックごとにＤＭＡライトが行われる。ＣＰＵバスにはシステムクロックＣＬＫの２クロック分の長さのデータが供給される。
【００７５】
一方、図１２はSPRAM４２のリードタイミングを示すタイミング図である。図示のように、システムクロックＣＬＫの２クロックごとにＤＭＡリードが行われる。SPRAM４２からは、システムクロックＣＬＫの１クロック分の長さのデータが出力され、ＣＰＵバスにはシステムクロックＣＬＫの２クロック分の長さのデータが出力される。
【００７６】
ところで、SPRAM４２をアクセスする際には、通常のロード／ストア命令を用いるようにしてもよいが、SPRAM４２をアクセスするための専用の命令を用意してもよい。このような専用の命令の例としては、SPRAMインデックス・ロードデータ命令、SPRAMインデックス・ストア命令、SPRAMインデックス・ストア・イミーディエートデータ命令、SPRAM４２へのブロック転送命令、SPRAM４２からのブロック転送命令などが考えられる。これらの命令が発行された場合には、ＭＭＵ３の制御に優先して実行するようにすれば、SPRAM４２への高速アクセスが可能になる。
【００７７】
SPRAM４２用の専用の命令を設けることにより、プログラマは、SPRAM４２を必要に応じて手軽に利用できるようになり、プログラム設計が容易になる。
【００７８】
（第２の実施形態）
第１および第２の実施形態では、SPRAM４２がスヌープ(snoop)機能を持たない例を説明したが、SPRAM４２にスヌープ機能を持たせてもよい。ここで、スヌープとは、SPRAM４２やDCACHE４１が外部メモリに格納されるべき最新データを保持しているか否かを探索することをいう。スヌープが必要になる理由は、プロセッサが外部メモリのデータを読み出そうとしたときに、実際には外部メモリに該当するデータが存在せず、SPRAM４２やDCACHE４１が保持していることがあるためである。
【００７９】
図１３はスヌープ機能を有するSPRAM４２の周辺回路図である。図示のように、アドレスレジスタ４８と、アドレスコンパレータ４９とが新たに設けられる。アドレスレジスタ４８はSPRAM４２のＴＡＧとして機能し、SPRAM４２に格納されているデータのアドレスなどが格納される。このアドレスレジスタ４８は、SPRAM４２がｎ個のエントリーに分割されている場合には、エントリーの数分だけ設けられる。アドレスレジスタ４８は、ＣＰＵバスに接続されており、その中身はＣＰＵバスを介して読み出し可能である。
【００８０】
図１３では省略しているが、アドレスレジスタ４８に書き込みを行う手段が必要となる。この手段は、例えば、ＬＳＵ４に対して専用の命令を与えて書き込みを行う。具体的には、プログラマが、特定のアドレスを指定することで、アドレスレジスタ４８に書き込みを行う。あるいは、ＤＭＡによりSPRAM４２にデータを書き込む際に、ＤＭＡのソース・アドレスを自動的にアドレスレジスタ４８にセットしてもよい。
【００８１】
図１３のアドレスコンパレータ４９は、ＢＩＵ１２を介してアドレス／データバスと接続されており、アドレスレジスタ４８にセットされているアドレスと、スヌープを要求したエージェントから送られたアドレスとを比較し、両者が一致した場合には、スヌープ・ヒットと判断する。スヌープ・ヒットのときにどのような動作を行うかは、システムの構成により異なる。
【００８２】
例えば、スヌープ・ヒットのときに、ＢＩＵ１はＣＰＵのバス権を取得して、SPRAM４２内のヒットしたエントリーのデータをＣＰＵバスに読み出す。あるいは、スヌープがヒットしたときに、何も処理を行わないようにしてもよい。
【００８３】
プロセッサを含んだシステム全体でのスヌープ・ヒット時の動作として、例えば以下の(1)，(2)が考えられる。
【００８４】
(1)スヌープを発行したエージェントがSPRAM４２からデータを受け取る。
【００８５】
(2)スヌープを発行したエージェントは、SPRAM４２がデータを送ることができるようになるまで待機する。
【００８６】
(2)の場合、アドレスレジスタ４８に１ビット分のフラグを追加し、プロセッサ内の実行ユニットがSPRAM４２を使用している場合にそのフラグをセットする。フラグは、ＢＩＵ１２に接続されており、実行ユニットからの命令でセット／リセットされる。フラグがセットされている間は、SPRAM４２にスヌープ・ヒットすると、スヌープを発行したエージェントは待ち状態になる。
【００８７】
このように、SPRAM４２にスヌープ機能を追加すれば、SPRAM４２が現在どのようなデータを保持しているのかを外部から探索でき、また、必要に応じてSPRAM４２に格納されているデータを読み出すことができる。したがって、プログラム設計が容易になる。
【００８８】
【発明の効果】
以上詳細に説明したように、本発明によれば、ロード／ストア実行部によるデータの読み書きが可能で、かつ、外部メモリとの間でＤＭＡによるデータ転送が可能なため、画像データのような大量のデータを処理する際に一時的な作業領域として用いることができる。
【００８９】
また、ある命令セットを持つプロセッサをエミュレートする場合、エミュレートされる命令列を読み込んで、ネイティブの命令列に変換、加工する際の一時的な作業領域として用いることができる。ここで、ＲＡＭ内で生成されるネイティブの命令セット内のコードは、プロセッサの性能向上のためにＲＡＭ内でエディットすることができ、例えば、ジェネラル・パーパス・レジスタでのリード・アフター・ライト時のハザードを解決するために、命令列の順序を入れ替えることができる。
【００９０】
また、ストアバッファを設けることにより、ロード／ストア命令実行部によるアクセスとＤＭＡ転送とが競合した場合でも、パイプラインストールが起きなくなる。
【００９１】
また、ＲＡＭにスヌープ機能を持たせることにより、ＲＡＭに格納されているデータを必要に応じて外部に取り出すことができ、プログラム設計が容易になる。
【図面の簡単な説明】
【図１】本発明に係るマイクロプロセッサの一実施形態の内部構成を示すブロック図。
【図２】図１のＬＳＵ内部の一部構成を図示した図。
【図３】  SPRAMを画像データの加工処理に用いる例を模式的に示した図。
【図４】  DCACHEを持たない場合のSPRAM周辺の回路図。
【図５】  SPRAMとDCACHEの双方を持つ場合のSPRAM周辺の回路図。
【図６】プロセッサ内の各実行ユニットによるアクセスとＤＭＡ転送とが競合した場合の処理を示すタイミング図。
【図７】  DCACHEを持たない場合のＳＳＢの接続関係を示す図。
【図８】  SPRAMとDCACHEの双方が共通のストアバッファを有する例を示す図。
【図９】  SPRAM専用のＳＳＢとDCACHE専用のストアバッファを設けた例を示す図。
【図１０】プロセッサ内の各実行ユニットによるアクセスとＤＭＡ転送とが競合した場合の処理を示すタイミング図。
【図１１】  SPRAMのライトタイミングを示すタイミング図。
【図１２】  SPRAMのリードタイミングを示すタイミング図。
【図１３】スヌープ機能を有するSPRAM周辺の回路図。
【符号の説明】
１  ＢＩＵ
２  ＩＦＵ
３  ＭＭＵ
４  ＬＳＵ
５ａ，５ｂ，５ｃ  実行ユニット
６ａ，６ｂ，６ｃ  ＦＰＵ
７  制御論理部
２１  PC-pipe
２２  ICACHE
２３  命令発行＆ステージング部
３１  JTLB
３２  ITLB
３３  DTLB
４１  データキャッシュ
４２  SPRAM
４４  データキャッシュ・タグ
４５  ＳＳＢ
４６，４７  ストアバッファ
【図１】
0004160228.tif 000002
【図２】
0004160228.tif 000003
【図３】
0004160228.tif 000004
【図４】
0004160228.tif 000005
【図５】
0004160228.tif 000006
【図６】
0004160228.tif 000007
【図７】
0004160228.tif 000008
【図８】
0004160228.tif 000009
【図９】
0004160228.tif 000010
【図１０】
0004160228.tif 000011
【図１１】
0004160228.tif 000012
【図１２】
0004160228.tif 000013
【図１３】
0004160228.tif 000014