JP4160228B2 - マイクロプロセッサ - Google Patents
マイクロプロセッサ Download PDFInfo
- Publication number
- JP4160228B2 JP4160228B2 JP2000029147A JP2000029147A JP4160228B2 JP 4160228 B2 JP4160228 B2 JP 4160228B2 JP 2000029147 A JP2000029147 A JP 2000029147A JP 2000029147 A JP2000029147 A JP 2000029147A JP 4160228 B2 JP4160228 B2 JP 4160228B2
- Authority
- JP
- Japan
- Prior art keywords
- ram
- load
- execution unit
- data
- access
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000012546 transfer Methods 0.000 claims description 37
- 239000000872 buffer Substances 0.000 claims description 26
- 239000003795 chemical substances by application Substances 0.000 claims description 9
- 238000013500 data storage Methods 0.000 claims description 6
- 238000007726 management method Methods 0.000 claims description 5
- 238000012545 processing Methods 0.000 description 26
- 238000010586 diagram Methods 0.000 description 17
- 230000006870 function Effects 0.000 description 7
- 238000006243 chemical reaction Methods 0.000 description 6
- 238000013519 translation Methods 0.000 description 6
- 238000000034 method Methods 0.000 description 4
- 101100236203 Arabidopsis thaliana LSU4 gene Proteins 0.000 description 2
- 101100110009 Caenorhabditis elegans asd-2 gene Proteins 0.000 description 2
- 230000007423 decrease Effects 0.000 description 2
- 238000009434 installation Methods 0.000 description 2
- 230000000593 degrading effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0888—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3824—Operand accessing
Description
【発明の属する技術分野】
本発明は、外部メモリよりも高速にデータの読み書きが可能なRAMを内蔵するマイクロプロセッサの内部構成に関する。
【0002】
【従来の技術】
近年、プロセッサの動作速度が高くなってきたため、プロセッサと主記憶メモリ(外部メモリ)との速度差が大きくなってきた。プロセッサと主記憶メモリとの速度差を埋めるために、両者の中間に小容量かつ高速のキャッシュメモリを配置することがある。最近のプロセッサの中には、この種のキャッシュメモリを内蔵したものが多い。プロセッサが要求するデータがキャッシュメモリ内に存在する場合には、キャッシュメモリから読み出したデータをプロセッサに渡すことにより、主記憶メモリへのアクセス回数が減少し、プロセッサの高速処理が可能になる。
【0003】
【発明が解決しようとする課題】
しかしながら、キャッシュメモリの容量を大きくすると、キャッシュメモリ内にデータが存在するか否かを検索する時間が長くなるとともに、メモリに対するデータの読み書きに時間がかかり、メモリ・アクセスの性能が低下してしまう。このため、キャッシュメモリの容量はあまり大きくできない。したがって、容量の大きなデータの加工をキャッシュメモリ上で行おうとすると、頻繁にキャッシュリフィルを行わなければならず、プロセッサの性能が低下する。
【0004】
また、キャッシュメモリは、同一のメモリアドレスに対して何度もアクセスする場合にはキャッシュ・ヒット率が向上して高速処理が可能になるが、同一のメモリアドレスに対するアクセス頻度が低い場合には、キャッシュ・ミス率が高くなり、メモリアクセスのパフォーマンスが低下する。
【0005】
例えば、三次元の動画像を表示する場合には、メモリとプロセッサとの間で高速に画像データを伝送する必要があり、キャッシュメモリと同程度の速度でアクセスできるメモリに画像データを格納するのが望ましい。しかしながら、画像データは、データ容量が多く、かつ、同一のメモリアドレスに対するアクセス頻度が低いため、キャッシュメモリに格納してもアクセス速度は上がらない。
【0006】
本発明は、上記の問題点を解決するためになされたものであり、その目的は、キャッシュメモリと同程度のレイテンシーでデータの読み書きができ、かつ、キャッシュメモリとは違う目的で利用可能なRAMを備えたマイクロプロセッサを提供することにある。
【0007】
本発明の一態様によれば、ロード/ストア命令を実行するロード/ストア命令実行部を有するマイクロプロセッサにおいて、
外部メモリから読み出したデータを一時的に格納するキャッシュメモリと、
前記キャッシュメモリとは別個に設けられ、前記ロード/ストア命令実行部によるデータの読み書きが可能で、かつ、外部メモリとの間でデータをDMA(Direct Memory Access)転送可能なRAM(Random Access Memory)と、
前記ロード/ストア命令実行部による前記RAMのアクセスに関連するデータを、アクセス前に一時的に格納する第1のストアバッファと、
前記ロード/ストア命令実行部による前記キャッシュメモリのアクセスに関連するデータを、アクセス前に一時的に格納する第2のストアバッファと、を備え、
前記ロードストア実行部は、前記RAMと前記キャッシュメモリとを略等しいレイテンシーでアクセスすることを特徴とするマイクロプロセッサが提供される。
また、本発明の一態様によれば、ロード/ストア命令を実行するロード/ストア命令実行部を有するマイクロプロセッサにおいて、
外部メモリから読み出したデータを一時的に格納するキャッシュメモリと、
前記キャッシュメモリとは別個に設けられ、前記ロード/ストア命令実行部によるデータの読み書きが可能で、かつ、外部メモリとの間でデータをDMA (Direct Memory Access) 転送可能なRAM (Random Access Memory) と、
前記RAMに格納されたデータに対応するアドレスを格納するアドレスレジスタと、
前記アドレスレジスタに格納されたアドレスと、スヌープ対象となるアドレスとを比較する比較器と、を備え、
前記RAMは、前記比較器による比較結果に応じた動作を行うことを特徴とするマイクロプロセッサが提供される。
【0008】
本発明の一態様では、ロード/ストア実行部によるデータの読み書きが可能で、かつ、外部メモリとの間でDMAによるデータ転送を可能としたため、プロセッサが画像データのような大量のデータをプログラムで処理する際の一時的な作業領域として用いることができ、その際にキャッシュメモリのような性能ペナルティがない。
【0009】
本発明の一態様では、RAM内に第1および第2のデータ格納領域を設けるため、一方の格納領域にプロセッサがアクセスを行っている間に、他方の格納領域でDMA転送を行うことができる。
【0010】
本発明の一態様では、ロード/ストア命令実行部によるアクセスとDMA転送とが競合した場合には、DMA転送を優先させるようにしたため、DMA転送速度が落ちるおそれがない。
【0011】
本発明の一態様では、ロード/ストア命令実行部によるアクセスとDMA転送とが競合した場合の優先度を制御できるようにしたため、実装形態に応じて、最適な処理を行うことができる。
【0012】
本発明の一態様では、述した優先度を制御するための外部ピンを設けるため、外部信号により、優先度の切り替えが可能になる。
【0013】
本発明の一態様では、上述したRAMのアクセスに関連するデータを一次的に格納するストアバッファを設けるため、RAMにアクセス可能な状態になってから、ストアバッファからデータを読み出してRAMにアクセスすることができる。
【0014】
本発明の一態様では、上述したRAMにアクセスするための専用の命令を設けるため、プログラムのページ管理が簡素化される。
【0015】
本発明の一態様では、RAMに対して直接読み書きする命令と、外部メモリとの間でDMAによるブロック転送を行う命令とを設けるため、請求項8の特徴に加えて、RAMと外部メモリとの間で、プログラムから明示的に高速にデータを転送できる。
【0016】
本発明の一態様では、メモリ管理ユニットの制御に先立って、上述した専用の命令を実行するようにしたため、RAMアクセス命令の実行にあたってメモリ管理ユニットの動作を待つ必要がなく、RAMアクセス命令を実装する回路の高速化が可能となる。
【0017】
本発明の一態様では、キャッシュメモリと略等しいレイテンシーで上述したRAMにアクセスできるため、プログラマは上述のRAMにキャッシュメモリと略等しいレイテンシーでアクセスできることを前提にプログラミングすることができる。
【0018】
本発明の一態様では、上述したRAM用のストアバッファを、キャッシュメモリ用のストアバッファとは別個に設けるため、ストアバッファの制御が容易になる。
【0019】
本発明の一態様では、RAMに格納されたデータと関係のあるアド
レスとスヌープ対象のアドレスとを比較する比較器を設けるため、RAMに格納されたデータと関係のあるアドレスへの外部エージェントのアクセスを容易に検出し、それに対応した動作が可能になる。
【0020】
本発明の一態様では、上述した比較器で一致が検出されたRAM内の特定のデータを、スヌープを指示したエージェントに転送するようにしたため、データの検索・転送を高速に行うことができる。
【0021】
本発明の一態様では、ロード/ストア命令実行部がRAMにアクセス中はスヌープ指示を受け付けないようにしたため、パイプラインストールを抑制できる。
【0022】
本発明の一態様では、スヌープ処理を行うか否かを任意に設定できるようにしたため、プロセッサの動作に支障がない範囲内でスヌープ処理を行うことができる。
【0023】
【発明の実施の形態】
以下、本発明に係るマイクロプロセッサについて、図面を参照しながら具体的に説明する。
【0024】
(第1の実施形態)
図1は本発明に係るマイクロプロセッサの一実施形態の内部構成を示すブロック図である。図1のマイクロプロセッサは、外部バスB1に接続されたバス・インタフェース・ユニット(Bus Interface Unit)1と、プロセッサが実行する命令(インストラクション)のフェッチ(取り込み)を行うIFU(Instruction Fetch Unit)2と、仮想アドレスから物理アドレスへの変換を行うMMU(Memory Management Unit)3と、ロード/ストアに関連する命令を実行するLSU(Load Store Unit)4と、ロード/ストア以外の命令を実行する複数の実行ユニット5a,5b,5cと、浮動小数点演算を行うFPU(Floating Point Unit)6a,6bと、プロセッサ各部の制御を行う制御論理部(Control Logic)7とを備える。
【0025】
IFU2は、分岐命令等の命令の分岐先を記憶するBTACを参照しつつPC(Program Counter)を生成するPC-pipe21と、命令を一時的に格納するICACHE(Instruction Cache Memory)22と、命令の種類を判別してその命令を実行する実行ユニットを選択する命令発行&ステージング部(Instruction issue & Staging block)23とを有する。
【0026】
MMU3は、仮想アドレスから物理アドレスへの変換を行う3つのTLB(Translation Lookaside Buffer)を有する。OS(Operating System)が有するページ・テーブルの一部のうち、物理ページ番号や保護情報など、プロセッサが必要とするアドレス変換情報がTLBに書き込まれており、これに基づいてMMU3は物理アドレスへの変換を行う。
【0027】
MMU3内の3つのTLBは、JTLB(Joint Translation Lookaside Buffer)31と、ITLB(Instruction Translation Lookaside Buffer)32と、DTLB33(Data Translation Lookaside Buffer)33である。
【0028】
これら3つのTLBのうち、JTLB31が本来のTLBである。JTLB31は例えば48個のエントリーを有し、命令/データの別に関係なく、ページ単位で仮想アドレスをマッピングする。
【0029】
一方、ITLB32とDTLB33は、総称してマイクロTLBと呼ばれる。ITLB32は命令の仮想アドレスのデータパス(Datapath)に直接接続される専用のTLBであり、DTLB33はデータの仮想アドレスのデータパスに直列接続される専用のTLBである。これらTLBは、エントリー数は少ないが、高速にアドレス変換を行う。JTLB31が生成した変換テーブルの一部が、必要に応じてITLB32またはDTLB33に転送される。
【0030】
これら3つのTLBは、例えばソフトウエアによって制御される。プロセッサは、JTLB31に変換テーブルが存在しない場合に例外を起こし、例外ハンドラのプログラムがOSのページテーブルから該当するページを探し出し、JTLB31に変換テーブル100の情報を書き込む。
【0031】
LSU4は、外部メモリに対する読み出し/書き込みデータを一時的に格納するDCACHE(Data Cache Memory)41と、キャッシュ以外の特殊な用途に使用されるSPRAM(Scratch Pad RAM)42と、DCACHE41やSPRAM42をアクセスするための仮想アドレスを生成するアドレス生成器(Virtual Address Computation)43とを有する。
【0032】
制御論理部7は、プロセッサ各部の制御を行い、その内部には制御レジスタ(Control Register)71が設けられる。
【0033】
次に、図1のマイクロプロセッサの動作を簡単に説明する。まず、PC-pipe21で生成されたPC(Program Counter)に基づいて、IFU2は命令のフェッチを行う。なお、PCは仮想アドレスである。
【0034】
ITLB32は、PCを仮想アドレスから物理アドレスに変換する。物理アドレスは、ICACHE22内のITAGにおける検索に利用され、PCの指し示す命令がICACHE22内に存在するか否かを調べる。PCの指し示す命令がICACHE22内に存在しない場合(キャッシュ・ミスのとき)には、物理アドレスによって不図示の外部メモリへのアクセスを行う。
【0035】
具体的には、キャッシュミスすると、ICACHE22を制御するIFU2の制御論理部からBIU1の制御論理部に対して、キャッシュミスが起きたことを示す情報と、アクセスを行うべき物理アドレス情報とが渡される。BIU1は、これらの情報に基づいて外部メモリをアクセスし、アクセスが終了すると、データとキャッシュ・ラインの取得が終わった旨の信号とをIFU2に供給する。IFU2は、アクセスしたデータをICACHE22に書き込む。同時に、リフィルされたキャッシュラインのうち、PCの指し示す命令と、場合によっては、PCの指し示す命令の後に続くいくつかの命令を、命令発行&ステージング部23に供給する。
【0036】
一方、PCの指し示す命令がICACHE22内に存在する場合には、該当するICACHE22内の命令と、場合によってはPCの指し示す命令の後に続くいくつかの命令が命令発行&ステージング部23に供給される。
【0037】
命令発行&ステージング部23は、命令の種類を判別し、命令を実際に実行する実行ユニット(例えば、LSU4や他の実行ユニット)を決定する。この際、命令発行&ステージング部23は、各実行ユニットの空き具合を鑑みて動的に判断する。
【0038】
例えば、判別された命令がロード/ストア命令の場合には、処理できる実行ユニットはLSU4だけなので、LSU4に命令を供給できる状態になると、命令発行&ステージング部23はLSU4に命令を送る。
【0039】
次に、SPRAM42に対してロード/ストアを行う場合の動作を説明する。図2は、図1のLSU4内部の一部構成を図示したものであり、SPRAM42に関係する部分を制御系(Control)8とデータパス(Datapath)に分けて図示している。
【0040】
図2の制御系8は、命令の流れに応じて、データパスに与える制御信号を生成する。データパスは、制御系8からの制御信号に基づいてデータを流していく。これが命令の実行に相当する。
【0041】
図2において、制御系8とデータパスとをつないでいる各線は制御信号を示している。通常、制御信号は制御系8からデータパスに供給される。また、図2では省略しているが、データパスから制御系8に供給される制御信号も存在する。例えば、ICACHE22がミスしてパイプライン処理を止める場合には、データパスの一部であるICACHE22のTAGからミス信号が制御系8に供給されてパイプライン処理を停止させる。
【0042】
図2において、符号10a〜10jで示したブロックは、パイプライン処理を行う際にステージを区切るためのレジスタ構造を示している。これらブロックは、回路的には、フリップフロップやラッチで構成され、クロックに同期して、読み出しや書き込みを行う。以下では、これらブロックを総称してパイプラインレジスタと呼ぶ。
【0043】
IFU2は、IFU制御論理部81(IFU Control)の制御を受けて、フェッチされた命令をパイプラインレジスタ10aに格納する。命令はパイプラインレジスタ10aから命令デコーダ(Instruction Decoder)82に送られる。命令デコーダ82では、命令の識別や命令の処理に必要な中間的な制御信号を生成する。中間的な制御信号を生成する理由は、命令デコーダ82でプロセッサのすべての制御信号を生成するのは量的および速度的に不可能なためであり、命令デコーダ82は、命令よりも演算器の制御信号に近く、かつ、演算器の制御信号そのものよりも抽象的な信号を生成する。
【0044】
フェッチされた命令がロード/ストア命令であることが命令デコーダ82で分かった場合には、制御信号群が、関係する制御論理部に送られる。具体的には、制御信号群は、図2中のパイプライン制御論理部(Pipeline Control)83、GPR制御論理部(General Purpose Register Control)84、およびLSU制御論理部(LSU Control)85に送られる。
【0045】
パイプライン制御論理部83とLSU制御論理部85では、データの流れのステージに同期する形で命令や制御信号が流れていく。このため、制御系8とデータパスの双方にパイプラインレジスタ10a〜10jが設けられている。
【0046】
パイプライン制御論理部83は、パイプラインレジスタ10の中身の状況に応じて、パイプラインの進行の制御を行う。例えば、演算器上でリソースハザードが生じた場合には、パイプラインを停止するなどの処理を行う。
【0047】
LSU制御論理部85は、ロード/ストア命令を実行するのに必要な制御信号を生成する。すなわち、GPR制御論理部84の制御によりレジスタファイル11からパイプラインレジスタ10に送られたデータは、アドレス生成器43に送られてアドレスが生成される。アドレス生成器43はアダー(Adder)制御論理部86により制御され、アドレス生成器43により生成されたアドレスは、次段のパイプラインレジスタ10に送られる。
【0048】
RAM制御部に対応するSPR制御論理部(SPRAM Control)87は、パイプライン制御論理部83とLSU制御論理部85からの信号を受けて、SPRAM42へのアクセスを行う。その際、パイプラインレジスタ10中のアドレスを使用する。このアドレスがロード命令であるときは、リード・イネーブル信号を有効にし、ライト・イネーブル信号を無効にする。そして、SPRAM42からデータを読み出し、パイプラインレジスタ10に格納する。格納されたデータは、次のステージでレジスタファイル11に書き戻される。
【0049】
一方、パイプラインレジスタ10中のアドレスがストア命令であるときは、リード・イネーブル信号を無効にし、ライト・イネーブル信号を有効にする。そして、レジスタファイル11からステージされてきたデータをSPRAM42に書き込む。
【0050】
一方、プロセッサ外のDMA(Direct Memory Access)コントローラ9は、図示のように、外部バスを介してプロセッサ内部のBIU制御論理部(BIU Control)87に接続されている。DMAコントローラ9がBIU制御論理部88に制御信号を送ってDMA処理を開始すると、BIU制御論理部88はSPR制御論理部87に信号を送ってSPRAM42をリード/ライトさせる。すなわち、SPR制御論理部87は、BIU制御論理部88を介して間接的にDMAコントローラ9とも接続されている。
【0051】
SPRAM42に対するアクセス要求がLSU4とBIU12(BIU12からのアクセス要求は元はDMAコントローラ9からのものである)の双方から同時に発せられた場合は、SPR制御論理部87が両者を調停してイネーブル信号群を決定し、アドレス入力とデータ入力のセレクタを切り替える。
【0052】
例えば、LSU4とBIU12によるSPRAM42に対するアクセス要求の優先順位をプログラマブルに制御するには、SPR制御論理部87に図2に点線で示す制御レジスタ71を接続し、この制御レジスタ71の値を優先順位に応じてプログラマブルに変化させればよい。あるいは、図2に点線で示したように、プロセッサの外部ピンPに入力される信号に応じて優先順位を切り替えてもよい。
【0053】
次に、SPRAM42の具体的な使用方法について説明する。図3はSPRAM42を画像データやインストラクションの加工処理に用いる例を模式的に示した図であり、以下、この図を用いてSPRAM42の動作を説明する。
【0054】
(1)まず、図3(a)に示すように、SPRAM42内の約半分程度の領域に、DMA転送により、外部メモリの画像データを格納する。
【0055】
(2)次に、図3(b)に示すように、SPRAM42に格納したデータをロード命令により汎用レジスタに読み込み、インテジャー・ユニット5a,5b等の実行ユニットでデータを加工処理した後、ストア命令によりSPRAM42に再び格納する。同時に、SPRAM42内の他の半分程度の領域に、DMA転送により、外部メモリの画像データを格納する。
【0056】
(3)次に、図3(c)に示すように、加工終了データをDMA転送により外部メモリにストアし、同時に、SPRAM42内の他の半分程度の領域に格納したデータをLSU4で加工処理し、かつ、SPRAM42内の半分程度の領域に外部メモリの画像データを格納する。
【0057】
このように、図1のSPRAM42は、LSU4のパイプラインによるロード/ストアが可能で、かつ、外部メモリとの間でDMAによるデータ転送が可能なため、画像データやインストラクションのように大量のデータを高速に処理する場合に特に適している。すなわち、SPRAM42は、画像データやインストラクション等の大量のデータをプロセッサで加工処理する際に、一時的なメモ・パッド領域(作業領域)として用いるのに適している。
【0058】
また、LSU4は、DCACHE41とほぼ同じレイテンシー(メモリアクセスに要するシステムクロック数)でSPRAM42にアクセスできるため、外部メモリに格納されているデータを、いったんSPRAM42に格納すれば、その後、プロセッサはSPRAM42にアクセスしてデータ処理を行うことができ、外部メモリを直接アクセスするよりも短時間に大量のデータを処理することができる。
【0059】
また、本実施形態のSPRAM42は、外部メモリとのデータのやり取りにDMAを用いるため、プロセッサが他の処理を行っている最中でも、外部メモリとの間でデータ転送を行える。
【0060】
また、本実施形態のSPRAM42は、マイクロプロセッサのコア部分であるLSU4等の各実行ユニットと同一チップ内に収容されるため、信号遅延やノイズなどの不具合が発生しにくく、また、実装面積や消費電力も低減できる。
【0061】
図1では、LSU4内にSPRAM42とDCACHE41の双方を設ける例を説明したが、DCACHE41を省略してもよい。図4はDCACHE41を持たない場合のSPRAM42周辺の回路図である。図示のように、SPRAM42は、バス調停を行うBIU(Bus Interface Unit)12を介してアドレス/データバスに接続され、このバスには、画像データやインストラクション等を格納する外部メモリ等が接続される。
【0062】
一方、図5はSPRAM42とDCHACHEの双方を持つ場合のSPRAM42周辺の回路図である。BIU12には、SPRAM42と、DCACHE41と、DCACHE41用のTAG44とが接続されている。DCACHE41は、外部メモリから読み出されたデータの一部を格納するために用いられ、TAG44は、DCACHE41に格納されるデータの付加情報(アドレスなど)を格納するために用いられる。
【0063】
図5に示すように、SPRAM42とDCACHE41の双方を設けることにより、通常のメモリアクセスにはDCACHE41を用い、画像データなどの大量のデータを加工処理する必要がある場合にはSPRAM42を用いるというように、処理によってSPRAM42とDCACHE41を切り替えることにより、システム全体の処理性能を向上できる。
【0064】
図6はプロセッサ内の各実行ユニット(図6ではCPUアクセスと表示)によるアクセスとDMA転送とが競合した場合の処理を示すタイミング図である。同時に複数のデバイスがアクセスを行えないワンポートのSPRAM42の場合、プロセッサ内の各実行ユニットによるアクセスとDMA転送とが競合した場合には、例えば、図1の制御レジスタ71によりアクセス優先順位が決められる。具体的には、プログラマは、特定の命令を用いて、制御レジスタ71内のビット値を優先順位に応じて切り替える。
【0065】
図6はバスクロックの周波数がプロセッサのシステムクロックの半分の周波数の例を示しており、この場合、DMA転送はバスクロックに同期して行われ、その合間に各実行ユニットによるアクセスが行われる。このようなアクセスを行うことにより、各実行ユニットの処理がストールしなくなる。
【0066】
このように、プロセッサ内の実行ユニット(例えば、LSU4のパイプライン)によるSPRAM42のアクセスはDMA転送の合間に行われるため、LSU4のパイプラインがDMA転送と同タイミングでSPRAM42にアクセスしようとした場合には、そのパイプラインはストール状態になる。
【0067】
この場合、図7に示すように、SSB(SPRAM Store Buffer)45を設けることにより、ストールを回避することができる。このSSB45には、パイプラインが実行するSPRAMへのストア命令が一時的に格納される。図7はDCACHE41を持たない場合のSSB45の接続関係を示す図、図8はSPRAM42とDCACHE41の双方が共通のストアバッファ46を有する例を示す図である。また、図9は、SPRAM42に専用のSSB45と、DCACHE41に専用のストアバッファ47とを設けた例を示す図である。
【0068】
図7〜図9のように、SSB45またはストアバッファ46,47を設けることにより、LSU4等の実行ユニットのストールを回避することができる。すなわち、SPRAM42に対する実行ユニットによるアクセスとDMA転送とが競合した場合には、実行ユニットのデータは、DMA転送が終了するまで、SSB45またはストアバッファ46,47に格納され、その間、パイプラインは他の処理を行うことができる。
【0069】
なお、図8のように、SPRAM42とDCACHE41でストアバッファ46を共有する場合には、SPRAM42とDCACHE41のいずれかを選択する選択回路が必要になるため、図9よりもストアバッファ46の構成が複雑になる。
【0070】
図10は、SSB45を備えたマイクロプロセッサにおいて、プロセッサ内の実行ユニットによるアクセスとDMAによるアクセスが競合した場合のタイミング図であり、実行ユニットのアクセスよりもDMA転送の方が優先度が高い例を示している。
【0071】
例えば、時刻T1のときにDMA転送と実行ユニットPipe Aのアクセスが競合した場合には、DMA転送が優先して実行され、実行ユニットPipe AからのデータD1はいったんSSB45に格納される。その後、時刻T2になると、SSB45に格納されていた実行ユニットPipe Aの処理が実行されるとともに、アクセスしようとした実行ユニットPipe BのデータD2はSSB45に格納される。
【0072】
その後、時刻T3になると、DMA転送が優先して実行される。この時点では、SSB45の内部にはすでに実行ユニットPipe BのデータD2が格納されているため、アクセスしようとした実行ユニットPipe Cはストール状態になる。
【0073】
その後、時刻T4になると、SSB45に格納されていた実行ユニットPipe Bの処理が実行され、同時に、ストールしていた実行ユニットPipe CのデータD3がSSB45に格納される。
【0074】
図11はSPRAM42のライトタイミングを示すタイミング図である。図示のように、システムクロックCLKの2クロックごとにDMAライトが行われる。CPUバスにはシステムクロックCLKの2クロック分の長さのデータが供給される。
【0075】
一方、図12はSPRAM42のリードタイミングを示すタイミング図である。図示のように、システムクロックCLKの2クロックごとにDMAリードが行われる。SPRAM42からは、システムクロックCLKの1クロック分の長さのデータが出力され、CPUバスにはシステムクロックCLKの2クロック分の長さのデータが出力される。
【0076】
ところで、SPRAM42をアクセスする際には、通常のロード/ストア命令を用いるようにしてもよいが、SPRAM42をアクセスするための専用の命令を用意してもよい。このような専用の命令の例としては、SPRAMインデックス・ロードデータ命令、SPRAMインデックス・ストア命令、SPRAMインデックス・ストア・イミーディエートデータ命令、SPRAM42へのブロック転送命令、SPRAM42からのブロック転送命令などが考えられる。これらの命令が発行された場合には、MMU3の制御に優先して実行するようにすれば、SPRAM42への高速アクセスが可能になる。
【0077】
SPRAM42用の専用の命令を設けることにより、プログラマは、SPRAM42を必要に応じて手軽に利用できるようになり、プログラム設計が容易になる。
【0078】
(第2の実施形態)
第1および第2の実施形態では、SPRAM42がスヌープ(snoop)機能を持たない例を説明したが、SPRAM42にスヌープ機能を持たせてもよい。ここで、スヌープとは、SPRAM42やDCACHE41が外部メモリに格納されるべき最新データを保持しているか否かを探索することをいう。スヌープが必要になる理由は、プロセッサが外部メモリのデータを読み出そうとしたときに、実際には外部メモリに該当するデータが存在せず、SPRAM42やDCACHE41が保持していることがあるためである。
【0079】
図13はスヌープ機能を有するSPRAM42の周辺回路図である。図示のように、アドレスレジスタ48と、アドレスコンパレータ49とが新たに設けられる。アドレスレジスタ48はSPRAM42のTAGとして機能し、SPRAM42に格納されているデータのアドレスなどが格納される。このアドレスレジスタ48は、SPRAM42がn個のエントリーに分割されている場合には、エントリーの数分だけ設けられる。アドレスレジスタ48は、CPUバスに接続されており、その中身はCPUバスを介して読み出し可能である。
【0080】
図13では省略しているが、アドレスレジスタ48に書き込みを行う手段が必要となる。この手段は、例えば、LSU4に対して専用の命令を与えて書き込みを行う。具体的には、プログラマが、特定のアドレスを指定することで、アドレスレジスタ48に書き込みを行う。あるいは、DMAによりSPRAM42にデータを書き込む際に、DMAのソース・アドレスを自動的にアドレスレジスタ48にセットしてもよい。
【0081】
図13のアドレスコンパレータ49は、BIU12を介してアドレス/データバスと接続されており、アドレスレジスタ48にセットされているアドレスと、スヌープを要求したエージェントから送られたアドレスとを比較し、両者が一致した場合には、スヌープ・ヒットと判断する。スヌープ・ヒットのときにどのような動作を行うかは、システムの構成により異なる。
【0082】
例えば、スヌープ・ヒットのときに、BIU1はCPUのバス権を取得して、SPRAM42内のヒットしたエントリーのデータをCPUバスに読み出す。あるいは、スヌープがヒットしたときに、何も処理を行わないようにしてもよい。
【0083】
プロセッサを含んだシステム全体でのスヌープ・ヒット時の動作として、例えば以下の(1),(2)が考えられる。
【0084】
(1)スヌープを発行したエージェントがSPRAM42からデータを受け取る。
【0085】
(2)スヌープを発行したエージェントは、SPRAM42がデータを送ることができるようになるまで待機する。
【0086】
(2)の場合、アドレスレジスタ48に1ビット分のフラグを追加し、プロセッサ内の実行ユニットがSPRAM42を使用している場合にそのフラグをセットする。フラグは、BIU12に接続されており、実行ユニットからの命令でセット/リセットされる。フラグがセットされている間は、SPRAM42にスヌープ・ヒットすると、スヌープを発行したエージェントは待ち状態になる。
【0087】
このように、SPRAM42にスヌープ機能を追加すれば、SPRAM42が現在どのようなデータを保持しているのかを外部から探索でき、また、必要に応じてSPRAM42に格納されているデータを読み出すことができる。したがって、プログラム設計が容易になる。
【0088】
【発明の効果】
以上詳細に説明したように、本発明によれば、ロード/ストア実行部によるデータの読み書きが可能で、かつ、外部メモリとの間でDMAによるデータ転送が可能なため、画像データのような大量のデータを処理する際に一時的な作業領域として用いることができる。
【0089】
また、ある命令セットを持つプロセッサをエミュレートする場合、エミュレートされる命令列を読み込んで、ネイティブの命令列に変換、加工する際の一時的な作業領域として用いることができる。ここで、RAM内で生成されるネイティブの命令セット内のコードは、プロセッサの性能向上のためにRAM内でエディットすることができ、例えば、ジェネラル・パーパス・レジスタでのリード・アフター・ライト時のハザードを解決するために、命令列の順序を入れ替えることができる。
【0090】
また、ストアバッファを設けることにより、ロード/ストア命令実行部によるアクセスとDMA転送とが競合した場合でも、パイプラインストールが起きなくなる。
【0091】
また、RAMにスヌープ機能を持たせることにより、RAMに格納されているデータを必要に応じて外部に取り出すことができ、プログラム設計が容易になる。
【図面の簡単な説明】
【図1】本発明に係るマイクロプロセッサの一実施形態の内部構成を示すブロック図。
【図2】図1のLSU内部の一部構成を図示した図。
【図3】 SPRAMを画像データの加工処理に用いる例を模式的に示した図。
【図4】 DCACHEを持たない場合のSPRAM周辺の回路図。
【図5】 SPRAMとDCACHEの双方を持つ場合のSPRAM周辺の回路図。
【図6】プロセッサ内の各実行ユニットによるアクセスとDMA転送とが競合した場合の処理を示すタイミング図。
【図7】 DCACHEを持たない場合のSSBの接続関係を示す図。
【図8】 SPRAMとDCACHEの双方が共通のストアバッファを有する例を示す図。
【図9】 SPRAM専用のSSBとDCACHE専用のストアバッファを設けた例を示す図。
【図10】プロセッサ内の各実行ユニットによるアクセスとDMA転送とが競合した場合の処理を示すタイミング図。
【図11】 SPRAMのライトタイミングを示すタイミング図。
【図12】 SPRAMのリードタイミングを示すタイミング図。
【図13】スヌープ機能を有するSPRAM周辺の回路図。
【符号の説明】
1 BIU
2 IFU
3 MMU
4 LSU
5a,5b,5c 実行ユニット
6a,6b,6c FPU
7 制御論理部
21 PC-pipe
22 ICACHE
23 命令発行&ステージング部
31 JTLB
32 ITLB
33 DTLB
41 データキャッシュ
42 SPRAM
44 データキャッシュ・タグ
45 SSB
46,47 ストアバッファ
Claims (14)
- ロード/ストア命令を実行するロード/ストア命令実行部を有するマイクロプロセッサにおいて、
外部メモリから読み出したデータを一時的に格納するキャッシュメモリと、
前記キャッシュメモリとは別個に設けられ、前記ロード/ストア命令実行部によるデータの読み書きが可能で、かつ、外部メモリとの間でデータをDMA(Direct Memory Access)転送可能なRAM(Random Access Memory)と、
前記ロード/ストア命令実行部による前記RAMのアクセスに関連するデータを、アクセス前に一時的に格納する第1のストアバッファと、
前記ロード/ストア命令実行部による前記キャッシュメモリのアクセスに関連するデータを、アクセス前に一時的に格納する第2のストアバッファと、を備え、
前記ロードストア実行部は、前記RAMと前記キャッシュメモリとを略等しいレイテンシーでアクセスすることを特徴とするマイクロプロセッサ。 - 前記RAMは、少なくとも第1および第2のデータ格納領域を有し、
前記ロード/ストア命令実行部が前記第1のデータ格納領域に対してアクセスを行っている合間に、前記第2のデータ格納領域と前記外部メモリとの間でデータのDMA転送を行い、かつ、前記ロード/ストア命令実行部が前記第2のデータ格納領域に対してアクセスを行っている合間に、前記第1のデータ格納領域と前記外部メモリとの間でデータのDMA転送を行う制御を行うRAM制御部を備えることを特徴とする請求項1に記載のマイクロプロセッサ。 - 前記RAM制御部は、前記RAMに対する前記ロード/ストア命令実行部によるアクセスとDMA転送とが競合した場合には、DMA転送を優先して行うことを特徴とする請求項2に記載のマイクロプロセッサ。
- 前記RAMに対する前記ロード/ストア命令実行部によるアクセスとDMA転送との優先度を制御可能な制御レジスタを備えることを特徴とする請求項1〜3のいずれかに記載のマイクロプロセッサ。
- 前記RAMに対する前記ロード/ストア命令実行部によるアクセスとDMA転送との優先度を制御可能な外部ピンを備えることを特徴とする請求項1〜3のいずれかに記載のマイクロプロセッサ。
- 前記ロード/ストア命令実行部による前記RAMのアクセスに関連するデータを、アクセス前に一時的に格納するストアバッファを備えることを特徴とする請求項1〜5のいずれかに記載のマイクロプロセッサ。
- 前記RAMに対する前記ロード/ストア命令実行部によるアクセスとDMA転送とが競合した場合には、DMA転送を優先して行い、競合した前記ロード/ストア命令実行部による前記RAMのアクセスに関連するデータを一時的に前記ストアバッファに格納するRAM制御部を備えることを特徴とする請求項6に記載のマイクロプロセッサ。
- 前記RAMにアクセスするための専用の命令が設けられることを特徴とする請求項1に記載のマイクロプロセッサ。
- 前記専用の命令の中には、前記RAMに対して直接読み書きを行う命令と、外部メモリとの間でDMAによるブロック転送を行う命令との少なくとも一方が含まれることを特徴とする請求項8に記載のマイクロプロセッサ。
- 前記ロード/ストア命令実行部は、前記専用の命令が発行された場合には、メモリ管理ユニットの制御に先立って、該当する命令を実行することを特徴とする請求項8または9に記載のマイクロプロセッサ。
- ロード/ストア命令を実行するロード/ストア命令実行部を有するマイクロプロセッサにおいて、
外部メモリから読み出したデータを一時的に格納するキャッシュメモリと、
前記キャッシュメモリとは別個に設けられ、前記ロード/ストア命令実行部によるデータの読み書きが可能で、かつ、外部メモリとの間でデータをDMA (Direct Memory Access) 転送可能なRAM (Random Access Memory) と、
前記RAMに格納されたデータに対応するアドレスを格納するアドレスレジスタと、
前記アドレスレジスタに格納されたアドレスと、スヌープ対象となるアドレスとを比較する比較器と、を備え、
前記RAMは、前記比較器による比較結果に応じた動作を行うことを特徴とするマイクロプロセッサ。 - 前記RAMは、前記比較器による比較結果が一致した場合には、一致したアドレスに対応する前記RAMのデータを、スヌープを指示したエージェントに転送することを特徴とする請求項11に記載のマイクロプロセッサ。
- 前記アドレスレジスタは、前記ロード/ストア命令実行部が前記RAMへのアクセス中であるか否かを示すフラグ情報を含んでおり、
前記フラグ情報により前記ロード/ストア命令実行部が前記RAMへのアクセス中であることがわかると、スヌープを指示したエージェントに対して前記RAMへのアクセスを禁止することを特徴とする請求項12に記載のマイクロプロセッサ。 - 前記RAMがスヌープ指示信号を受領するか否かを示すフラグ情報を有し、前記RAMが前記スヌープを受領しないことを前記フラグ情報が示している場合には、前記スヌープを指示する前記エージェントのさらなるアクセスを一次的に禁止することを特徴とする請求項12または13に記載のマイクロプロセッサ。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US246406 | 1999-02-08 | ||
US09/246,406 US6389527B1 (en) | 1999-02-08 | 1999-02-08 | Microprocessor allowing simultaneous instruction execution and DMA transfer |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2000231550A JP2000231550A (ja) | 2000-08-22 |
JP4160228B2 true JP4160228B2 (ja) | 2008-10-01 |
Family
ID=22930538
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000029147A Expired - Fee Related JP4160228B2 (ja) | 1999-02-08 | 2000-02-07 | マイクロプロセッサ |
Country Status (2)
Country | Link |
---|---|
US (1) | US6389527B1 (ja) |
JP (1) | JP4160228B2 (ja) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7047328B1 (en) * | 2001-07-13 | 2006-05-16 | Legerity, Inc. | Method and apparatus for accessing memories having a time-variant response over a PCI bus by using two-stage DMA transfers |
US7028129B2 (en) * | 2001-12-28 | 2006-04-11 | Intel Corporation | Method and apparatus for converting an external memory access into a local memory access in a processor core |
JP3970705B2 (ja) * | 2002-07-05 | 2007-09-05 | 富士通株式会社 | アドレス変換装置、アドレス変換方法および2階層アドレス変換装置 |
JP3841810B2 (ja) * | 2002-09-30 | 2006-11-08 | 株式会社ルネサステクノロジ | データプロセッサ |
US7191318B2 (en) * | 2002-12-12 | 2007-03-13 | Alacritech, Inc. | Native copy instruction for file-access processor with copy-rule-based validation |
US7240183B2 (en) * | 2005-05-31 | 2007-07-03 | Kabushiki Kaisha Toshiba | System and method for detecting instruction dependencies in multiple phases |
US20070022277A1 (en) * | 2005-07-20 | 2007-01-25 | Kenji Iwamura | Method and system for an enhanced microprocessor |
US7631149B2 (en) * | 2006-07-24 | 2009-12-08 | Kabushiki Kaisha Toshiba | Systems and methods for providing fixed-latency data access in a memory system having multi-level caches |
US8904115B2 (en) * | 2010-09-28 | 2014-12-02 | Texas Instruments Incorporated | Cache with multiple access pipelines |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5119485A (en) * | 1989-05-15 | 1992-06-02 | Motorola, Inc. | Method for data bus snooping in a data processing system by selective concurrent read and invalidate cache operation |
JP2774862B2 (ja) * | 1990-07-16 | 1998-07-09 | 株式会社日立製作所 | Dma制御装置および情報処理装置 |
US5426765A (en) * | 1991-08-30 | 1995-06-20 | Compaq Computer Corporation | Multiprocessor cache abitration |
US5418910A (en) * | 1992-05-05 | 1995-05-23 | Tandy Corporation | Dual buffer cache system for transferring audio compact disk subchannel information to a computer |
JPH0797352B2 (ja) * | 1992-07-02 | 1995-10-18 | インターナショナル・ビジネス・マシーンズ・コーポレイション | コンピュータ・システム及び入出力コントローラ |
EP0608622A1 (en) * | 1993-01-29 | 1994-08-03 | International Business Machines Corporation | Multiprocessor system with multilevel caches |
GB2282471B (en) * | 1993-09-29 | 1997-11-05 | Advanced Risc Mach Ltd | Cache storage |
US5524208A (en) * | 1994-06-09 | 1996-06-04 | Dell Usa, L.P. | Method and apparatus for performing cache snoop testing using DMA cycles in a computer system |
US5557769A (en) * | 1994-06-17 | 1996-09-17 | Advanced Micro Devices | Mechanism and protocol for maintaining cache coherency within an integrated processor |
ZA954460B (en) * | 1994-09-30 | 1996-02-05 | Intel Corp | Method and apparatus for processing memory-type information within a microprocessor |
US5768628A (en) * | 1995-04-14 | 1998-06-16 | Nvidia Corporation | Method for providing high quality audio by storing wave tables in system memory and having a DMA controller on the sound card for transferring the wave tables |
US5765194A (en) * | 1996-05-01 | 1998-06-09 | Hewlett-Packard Company | Timing consistent dynamic compare with force miss circuit |
US5809528A (en) * | 1996-12-24 | 1998-09-15 | International Business Machines Corporation | Method and circuit for a least recently used replacement mechanism and invalidated address handling in a fully associative many-way cache memory |
JP3681026B2 (ja) * | 1997-03-27 | 2005-08-10 | 株式会社ソニー・コンピュータエンタテインメント | 情報処理装置および方法 |
US5996051A (en) * | 1997-04-14 | 1999-11-30 | Advanced Micro Devices, Inc. | Communication system which in a first mode supports concurrent memory acceses of a partitioned memory array and in a second mode supports non-concurrent memory accesses to the entire memory array |
-
1999
- 1999-02-08 US US09/246,406 patent/US6389527B1/en not_active Expired - Lifetime
-
2000
- 2000-02-07 JP JP2000029147A patent/JP4160228B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US6389527B1 (en) | 2002-05-14 |
JP2000231550A (ja) | 2000-08-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4162825B2 (ja) | マイクロプロセッサ | |
US7133968B2 (en) | Method and apparatus for resolving additional load misses in a single pipeline processor under stalls of instructions not accessing memory-mapped I/O regions | |
US4701844A (en) | Dual cache for independent prefetch and execution units | |
US7590774B2 (en) | Method and system for efficient context swapping | |
JP3285644B2 (ja) | キャッシュメモリを有するデータプロセッサ | |
KR100228940B1 (ko) | 메모리 일관성 유지 방법 | |
EP0664897B1 (en) | High speed programmable logic controller | |
JPH10187533A (ja) | キャッシュシステム、プロセッサ及びプロセッサを動作させる方法 | |
US5263153A (en) | Monitoring control flow in a microprocessor | |
JPH11312122A (ja) | 使用者が構築可能なオンチッププログラムメモリシステム | |
JP2012530979A (ja) | 所与の範囲のページのキャッシュフラッシュおよび所与の範囲のエントリのtlb無効化を行なうシステム、方法、および装置 | |
US11954044B2 (en) | Translation lookaside buffer prewarming | |
JP2006302313A (ja) | マイクロコード・キャッシュ・システム及び方法 | |
JP3841810B2 (ja) | データプロセッサ | |
JPH0997230A (ja) | データ転送方法及びシステム | |
EP1039377B1 (en) | System and method supporting multiple outstanding requests to multiple targets of a memory hierarchy | |
JP3862959B2 (ja) | マイクロプロセッサのロード/ストア命令制御回路、およびロード/ストア命令制御方法 | |
JP4160228B2 (ja) | マイクロプロセッサ | |
US6393523B1 (en) | Mechanism for invalidating instruction cache blocks in a pipeline processor | |
WO2004031963A1 (ja) | 半導体データプロセッサ | |
EP0840231A1 (en) | Microprocessor comprising multi-level cache memory | |
JP3105110B2 (ja) | 演算装置 | |
JP2002108702A (ja) | マイクロコンピュータ及びデータ処理装置 | |
JP2924708B2 (ja) | 情報処理装置 | |
JPH04340145A (ja) | キャッシュメモリ装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050303 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20071220 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080108 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080310 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20080711 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20080717 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110725 Year of fee payment: 3 |
|
LAPS | Cancellation because of no payment of annual fees |