JP3825974B2 - トランスレーション・ルックアサイド・バッファ回路 - Google Patents
トランスレーション・ルックアサイド・バッファ回路 Download PDFInfo
- Publication number
- JP3825974B2 JP3825974B2 JP2001010267A JP2001010267A JP3825974B2 JP 3825974 B2 JP3825974 B2 JP 3825974B2 JP 2001010267 A JP2001010267 A JP 2001010267A JP 2001010267 A JP2001010267 A JP 2001010267A JP 3825974 B2 JP3825974 B2 JP 3825974B2
- Authority
- JP
- Japan
- Prior art keywords
- address
- bit string
- offset
- virtual address
- bits
- 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
- 239000000872 buffer Substances 0.000 title claims description 17
- 238000006243 chemical reaction Methods 0.000 claims description 23
- 238000001514 detection method Methods 0.000 claims description 16
- 238000010586 diagram Methods 0.000 description 23
- 238000000034 method Methods 0.000 description 7
- 230000000694 effects Effects 0.000 description 1
- 238000013507 mapping Methods 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/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/355—Indexed addressing
-
- 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/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Description
【発明の属する技術分野】
本発明は、仮想アドレスを物理アドレスに変換するTLB回路に関し、特に、アクセス要求のあった仮想アドレスがプロセッサ内部に記憶されている仮想アドレスに一致するか否かを高速に判断する技術に関する。
【0002】
【従来の技術】
プロセッサと主メモリとの速度差を埋めるために、両者の中間にキャッシュメモリを配置するのが一般的である。キャッシュメモリは、プロセッサに内蔵される場合と外付けされる場合がある。
【0003】
プロセッサの要求するデータがキャッシュメモリ内に存在(キャッシュヒット)すれば、そのデータがキャッシュからプロセッサに渡されるため、プロセッサは主メモリにアクセスする必要がなく高速に処理を行うことができる。一方、プロセッサの要求するデータがキャッシュメモリ内に存在しなければ、主メモリに直接アクセスしなければならず、処理に時間がかかる。
【0004】
最近のプロセッサは、仮想的なアドレス空間の一部を主メモリに割り当てる仮想アドレス方式を採用している。仮想アドレス方式を採用することにより、アプリケーション・プログラムは主メモリを意識することなくメモリアクセスが可能となり、プログラミングが容易になる。
【0005】
仮想アドレスは、例えば、ベースアドレスとオフセットアドレスとを加算することにより得られる。この加算を行うために、プロセッサ内にはアダーが設けられている。また、プロセッサ内には、仮想アドレスを物理アドレスに変換するTLB回路が設けられている。TLB回路は、外部からアクセス要求のあった仮想アドレスが、内部に記憶されている仮想アドレスと一致するか否かの情報、および一致した場合には、対応する物理アドレス情報を出力する。
【0006】
【発明が解決しようとする課題】
最近のプロセッサは、仮想アドレスのビット数が多いため、アダーでの加算処理に時間がかかる。このため、アダーでの加算処理が終了するのを待ってからTLB回路でのアドレス変換処理を開始するようにすると、物理アドレスが出力されるまでに時間がかかる。このため、キャッシュのヒットチェックに物理アドレスの一部が使用される場合、キャッシュヒットが高速に行えない。
【0007】
このような問題を解決すべく、USP5,606,683では、ベースアドレスとオフセットアドレスの一部のビット列の加算結果と桁あふれ情報とに基づいて、仮想アドレスの一致不一致を検出している。しかしながら、上述した公報でもアダーを用いてアドレスの計算を行っており、アダーの出力が得られるまでアドレスの変換処理を行うことができないため、キャッシュヒットチェックの高速化が図れない。
【0008】
本発明の目的は、プロセッサがアクセスを行おうとする仮想アドレスの物理アドレスへの変換を高速化し、キャッシュヒット判定を高速化することができるマイクロプロセッサを提供することにある。
【0009】
【課題を解決するための手段】
上記の課題を達成するため、仮想アドレスを物理アドレスに変換するトランスレーション・ルックアサイド・バッファ回路(TLB回路)は、比較の基準となる仮想アドレス情報のベースアドレスの下位側ビット列とオフセットアドレスの下位側ビット列とを加算したときの桁あふれ情報を格納するキャリー格納部と、比較の基準となる仮想アドレス情報のベースアドレスの上位側ビット列とオフセットアドレスの上位側ビット列とを格納する上位アドレス格納部と、アクセス要求のあった仮想アドレス情報のベースアドレスの下位側ビット列とオフセットアドレスの下位側ビット列とを加算したときの桁あふれ情報と、前記キャリー格納部に格納された桁あふれ情報とを比較するキャリー比較器と、アクセス要求のあった仮想アドレス情報のベースアドレスの上位側ビット列と前記上位アドレス格納部に格納されたベースアドレスの上位側ビット列とが一致するか否かを検出するとともに、アクセス要求のあった仮想アドレス情報のオフセットアドレスの上位側ビット列と前記上位アドレス格納部に格納されたオフセットアドレスの上位側ビット列とが一致するか否かを検出する上位アドレス比較器と、前記キャリー比較器による比較結果が一致し、かつ、前記上位アドレス比較器による比較結果が一致したときのみ、仮想アドレスの一致信号を出力する一致検出部と、を備える。
【0010】
本発明では、ベースアドレスとオフセットアドレスのそれぞれの下位側ビット列については、両アドレスの加算結果を比較する代わりに、キャリー信号同士を比較するため、仮想アドレスが一致するか否かを高速に検出することができる。
【0011】
また、仮想アドレスを物理アドレスに変換するトランスレーション・ルックアサイド・バッファ回路(TLB回路)は、比較の基準となる仮想アドレス情報のベースアドレスの上位側ビット列を格納する第1の格納部と、比較の基準となる仮想アドレス情報のベースアドレスの下位側ビット列とオフセットアドレスの下位側ビット列とを加算したときに桁あふれがある場合には、該仮想アドレス情報のオフセットアドレスの上位側ビット列に1を加えたビット列を格納し、かつ、桁あふれがない場合には、該仮想アドレス情報のオフセットアドレスの上位側ビット列を格納する第2の格納部と、比較の基準となる仮想アドレス情報のベースアドレスの下位側ビット列とオフセットアドレスの下位側ビット列とを加算したときに桁あふれがある場合には、該仮想アドレス情報のオフセットアドレスの上位側ビット列を格納し、かつ、桁あふれがない場合には、該仮想アドレス情報のオフセットアドレスの上位側ビット列から1を引いたビット列を格納する第3の格納部と、アクセス要求のあった仮想アドレス情報のベースアドレスの上位側ビット列と、前記第1の格納部に格納されたビット列とを比較する第1の比較器と、アクセス要求のあった仮想アドレス情報のベースアドレスの下位側ビット列と前記第2の格納部に格納されたビット列とを比較する第2の比較器と、アクセス要求のあった仮想アドレス情報のベースアドレスの下位側ビット列と前記第3の格納部に格納されたビット列とが一致するか否かを比較する第3の比較器と、前記第1〜第3の比較器の比較結果に基づいて、アクセス要求のあった仮想アドレスが比較の基準となる仮想アドレスに一致するか否かを示す信号を出力する一致検出部と、を備える。
【0012】
前記ベースアドレスは、例えば32ビットであり、前記オフセットアドレスは、例えば16ビットであり、前記ベースアドレスの最上位ビットから12ビットまでが上位側ビット列、11ビットから最下位ビットまでが下位側ビット列であり、前記オフセットアドレスの最上位ビットから12ビットまでが上位側ビット列、11ビットから最下位ビットまでが下位側ビットである
また、本発明では、キャリー信号の値に応じてオフセットアドレスを調整した上でアドレスの比較を行うため、桁上がりのあるなしにかかわらず、正確に仮想アドレスの比較を行うことができる。
【0013】
【発明の実施の形態】
以下、図面を参照して、本発明に係るマイクロプロセッサの一実施形態について詳述する。以下では、MIPS系のマイクロプロセッサを例にとって説明する。
【0014】
図1は本発明に係るマイクロプロセッサの内部構成を示すブロック図である。図1のマイクロプロセッサは、外部バスB1に接続されたバス・インタフェース・ユニット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と、プロセッサ内の各ブロックを制御する制御論理部7とを備えている。
【0015】
IFU2は、分岐命令等の分岐先を格納するBTACを参照してPC(プログラム・カウンタ)を生成するPCパイプ21と、命令を一時的に格納するICACHE(命令キャッシュメモリ)22と、命令のタイプを識別して識別した命令を実行するための実行ユニットを選択する命令発行&ステージング部23とを有する。
【0016】
MMU3は、仮想アドレスを物理アドレスに変換するための3つのTLB(トランスレーション・ルックアサイド・バッファ:Translation Lookaside Buffers)を有する。プロセッサにより必要とされるアドレス変換情報、例えば、物理ページ番号やメモリ保護情報は、TLBに書き込まれる。この情報に基づいて、MMU3は、物理アドレスへの変換を行う。
【0017】
MMU3内の3種類のTLBは、JTLB(Joint Translation Lookaside Buffer)31と、ITLB(Instruction Translation Lookaside Buffer)32と、DTLB(Data Translation Lookaside Buffer)33とである。
【0018】
ITLB32とDTLB33は、総称してマイクロTLBと呼ばれる。ITLB32は、命令の仮想アドレスのデータパスに直接接続された専用のTLBである。DTLB33は、データの仮想アドレスのデータパスに直接接続された専用のTLBである。これらTLBのエントリー数は少ないが、高速度にアドレス変換を行う。JTLB31により生成された変換テーブルの一部が、必要に応じて、ITLB32やDTLB33にコピーされる。
【0019】
JTLB31はソフトウェアにより制御されるのに対し、マイクロTLBsとJTLBとの整合性(coherency)はハードウェアにより維持される。マイクロプロセッサは、JTLB31内に変換テーブルが存在しない場合には、例外を発行する。例外ハンドラは、OSのメモリ上のページテーブルから対応するページを検索し、JTLB31に書き込む。
【0020】
LSU4は、外部メモリに対する読み書きデータを一時的に格納するDCACHE(Data Cache Memory)41と、キャッシュ以外の特定の目的に用いられるSPRAM(Scratch Pad RAM)42と、DCACHE41とSPRAM42にアクセスするのに必要な仮想アドレスを生成するアドレス生成器(仮想アドレス計算部)43とを有する。
【0021】
制御論理部 7は、プロセッサ内の各ブロックを制御する。制御論理部 7内に制御レジスタ 71が設けられる。
【0022】
次に、図1に示すマイクロプロセッサの動作を説明する。まず、IFU2は、PCパイプ2により生成されたPCに基づいて命令をフェッチする。なお、PCは仮想アドレスである。
【0023】
ITLB32は、PCを仮想アドレスから物理アドレスに変換する。変換された物理アドレスと、ICACHE22内のITAGの出力との一致検出が行われる。すなわち、物理アドレスは、PCにより指示された命令がICACHE22内に存在するか否かを検出するために利用される。PCにより指示された命令がICACHE22内に存在しない場合、すなわち、キャッシュミスの場合には、物理アドレスを用いて不図示の外部メモリへのアクセスが行われる。
【0024】
キャッシュミスが起こると、キャッシュミスが起こったことを示す情報と物理アドレス情報とがBIU1内の制御論理部に渡される。BIU1は、これらの情報に基づいて外部メモリへのアクセスを行う。外部メモリへのアクセスが終了すると、キャッシュラインの取得を知らせる信号がIFU2に供給される。IFU2は、メモリへのアクセスにより得られたデータをICACHE22に書き込む。同時に、リフィルされたキャッシュラインに含まれる命令のうち、PCにより指示された命令と、特定の場合には、PCにより指示された命令に続く数命令が命令発行&ステージング部 23に供給される。
【0025】
一方、PCにより指示された命令がICACHE22内に存在する場合には、ICACHE22内の対応する命令と、特定の場合には、PCにより指示された命令に続く数命令が命令発行&ステージング部 23に供給される。
【0026】
命令発行&ステージング部 23は、命令の型を識別し、命令の実行を行う実行ユニット(例えば、LSU4または他の実行ユニット)を決定する。この場合、命令発行&ステージング部 23は、各実行ユニットの空き状態に応じて、実行ユニットを動的に決定する。
【0027】
例えば、識別された命令がロード/ストア命令の場合には、LSU4のみが命令を実行可能であるため、命令発行&ステージング部 23は、LSU4が命令を実行できる準備が整ったときにLSU4にその命令を送る。
【0028】
図2はMMU3の内部構成を示す図である。上述したように、MMU3の内部には3つのTLBが設けられている。3つのTLBのうち、JTLB31が本来のTLBである。JTLB31は、例えば、48のエントリーを有し、各ページごとに仮想アドレスをマッピングすることにより、物理アドレスへの変換用の変換テーブルを生成する。
【0029】
JTLB31により生成された変換テーブル100は、必要に応じて、ITLB32とDTLB32にコピーされる。このように、TLBを3つに分ける理由は、JTLB31は多数のエントリーを有することから、アドレスの変換処理を行うのに時間がかかるためである。したがって、変換テーブル100の中から、実際に変換に必要な部分のみをITLB32やDTLB33にコピーして変換処理を高速化している。
【0030】
図3はJTLB31内の変換テーブル100の一例を示す図である。同図に示すように、変換テーブル100には、仮想アドレスのページ番号と、対応する物理アドレスと、フラグ情報とが記録されている。
【0031】
フラグ情報は、キャッシュ可能か否かを示すCフラグと、メモリへの書き込みが可能か否かを示すDフラグと、変換エントリーが有効か否かを示すVフラグと、SPRAMへのアクセスを行うか否かを示すSフラグとを有する。
【0032】
図4は、ベースアドレス、オフセットアドレス、仮想アドレス、および物理アドレスの各データ構造を示す図である。仮想アドレスの上位側20ビットはVPN(Virtual Page Number)であり、下位側12ビットはページオフセットである。
【0033】
VPNは、ベースアドレスの上位側20ビット[31:12]と、オフセットアドレスの上位側3ビット[14:12]と、オフセットアドレスに付加された正負を示すサインビットSと、ベースアドレスおよびオフセットアドレスのそれぞれの下位側12ビットを加算したときのキャリービットCとで構成される。
【0034】
仮想アドレスのページオフセットは、ベースアドレスの下位側12ビットとオフセットアドレスの下位側12ビットとの加算結果である。
【0035】
図1に示すDTLB33は、VPNをPFN(Physical Frame Number)に変換する。物理アドレスの上位側20ビットはPFNであり、下位側12ビットはページオフセットである。なお、物理アドレスのページオフセットは、仮想アドレスのページオフセットと同じものである。
【0036】
図5はMMU3およびLSU4の主要部の詳細構成を示すブロック図である。同図に示すアダー34は、外部メモリに対するアクセス要求のあった仮想アドレス中のベースアドレスとオフセットアドレスとの加算を行う。このとき、オフセットアドレスは32ビットに符号拡張された後、ベースアドレスと加算される。
【0037】
アダー34からは、加算結果を示すVPN(Virtual Page Number)と、仮想アドレスの下位側ビット列の桁あふれの有無を示すキャリー信号とが出力される。
【0038】
DTLB33は、アクセス要求のあった仮想アドレスとDCACHE41に格納されているデータに対応する仮想アドレスとの一致検出を行うCAM(Contents Addressable Memory)35と、DCACHE41に格納されているデータの物理アドレス等を格納する物理アドレス格納部36とを有する。
【0039】
CAM35は、アクセス要求のあったベースアドレスおよびオフセットアドレスと、アダー34から出力されたキャリー信号とに基づいて、アクセス要求のあったアドレスがDCACHE41に格納されたデータのアドレスに一致するか否かを検出し、一致不一致信号を出力する。
【0040】
物理アドレス格納部36は、CAM35から一致信号が出力されると、その一致信号に対応する物理アドレスを出力する。また、CAM35から一致信号が出力されると、ゲート回路37からDTLB33のヒット信号が出力される。このゲート回路37の出力は、プロセッサの処理をストールさせるか否かを判断するために用いられる。
【0041】
アダー34から出力されたVPNはJTLB31に供給される。JTLB31は、変換テーブルを参照して、VPNに対応するPFNと、上述したCフラグおよびDフラグとを出力する。ここで、アダー34で加算した後のVPNをJTLB31に供給する理由は、DTLB33がミスした場合のペナルティをなるべく少なくするためである。
【0042】
また、アダー34から出力されたVPNの下位側ビット列は、インデックス・アドレスとしてDTAG44とDCACHE41に供給される。DTAG44とDCACHE41はそれぞれ、インデックス・アドレスをデコードして、エントリーを設定する。具体的には、インデックス・アドレスを下位ビット側に6ビット分シフトさせて得られるビット列をエントリーとして設定する。DTAG44は対応するエントリーの物理アドレスを出力し、DCACHE41は対応するエントリーのデータを出力する。
【0043】
比較器45は、DTAG44から出力された物理アドレスと、CAM35で一致検出されて物理アドレス格納部36から出力された物理アドレスとを比較し、両者が一致すれば、キャッシュヒットを示す信号を出力する。
【0044】
図6は図5の具体的な動作を示す図である。図6は、外部メモリに対するアクセス要求のあったベースアドレスが0x12344567で、オフセットアドレスが0x1111の場合を示している。
【0045】
この場合、アダー34の出力は、0x12344567+0x00001111=0x12345678、キャリー信号は0、DTLB33に供給されるベースアドレスの上位側ビット列は0x12344、オフセットアドレスの上位側ビット列は0x1111になる。
【0046】
また、図6は、DTLB33に4つのエントリーがある例を示しており、各エントリーに対応して、CAM35と物理アドレス格納部36に図示のようなデータが格納されている。図中で、CAM35およびDTAG44における「V」とは、それぞれ対応するCAMのエントリおよびTAGのエントリが有効であることを示し、「I」は無効であることを示している。
【0047】
図6の例では、一番上のエントリーが一致し、図示の太線矢印に沿って、物理アドレス0x43215が出力される。なお、Cはキャッシュ可能であることを示し、Wはデータの読み書き可能であることを示している。また、Uはキャッシュ禁止であることを示し、Rはデータの読み出し可能で書き込み禁止であることを示している。
【0048】
また、アダー34の出力0x12345678の下位側ビット列であるインデックス・アドレス0x678は、DTAG44とDCACHE41に供給される。DTAG44は、0x678を下位側に6ビットシフトしたビット列0x1bをエントリーとして、DTAG44に格納されている物理アドレス情報V_0x43215を出力する。
【0049】
比較器45は、DTAG44から出力された物理アドレス0x43215とDTLB33から出力された物理アドレス0x43215とを比較し、この場合、両者が一致するため、キャッシュヒットを示す信号を出力する。
【0050】
また、DCACHE41は、インデックス・アドレス0x678を下位側に6ビットシフトしたビット列0x1bをエントリーとして、DTAG44に格納されているデータ0x12345678_9abcef0_を出力する。
【0051】
(DTLB33の第1の構成例)
図7はDTLB33の第1の構成例を示すブロック図である。図7のDTLB33は、16ビットのオフセットアドレスを32ビットに符号拡張する符号拡張部81と、ベースアドレスと符号拡張されたオフセットアドレスとを加算するアダー82と、ベースアドレスの上位側20ビット[31:12]がCAM35内の上位アドレス格納部83に格納されているベースアドレスに一致し、かつオフセットアドレスの上位側4ビット[15:12]がCAM35内の上位アドレス格納部83に格納されているオフセットアドレスに一致するか否かを判断する比較器(上位アドレス比較器)84と、アダー82から出力されたキャリー信号とCAM35内のキャリー格納部85に格納されているキャリー信号とが一致するか否かを判断する比較器(キャリー比較器)86と、両比較器84,85の比較結果がともに一致したときに一致信号を出力する一致検出部87とを有する。比較器84は例えばEXNORゲートで構成され、一致検出部87は例えばANDゲートで構成される。
【0052】
次に、図7のDTLB33の動作を説明する。比較器84は、32ビットのベースアドレスの上位側20ビット[31:12]とCAM35内の上位アドレス格納部83に格納されているベースアドレスとを比較するとともに、16ビットのオフセットアドレスの上位側4ビット[15:12]とCAM35内の上位アドレス格納部83に格納されているオフセットアドレスとを比較し、両方とも一致したときに、一致信号を出力する。
【0053】
一方、比較器86は、アダー82から出力されたキャリー信号とCAM35内に格納されているキャリー信号とが一致したときに、一致信号を出力する。このように、仮想アドレスの下位側12ビットについては、キャリー信号だけで一致不一致の判断を行うため、アダー82での加算処理が完了する前に、一致/不一致の判断を行うことができ、アドレス変換の速度が向上する。
【0054】
(DTLB33の第2の構成例)
図7はアダー82を用いてキャリー信号を生成しているため、キャリー信号が生成されるまでに時間がかかるという問題がある。そこで、第2の構成例は、キャリー・ルックアヘッド回路を設けてキャリー信号を高速に生成するものである。
【0055】
図8はDTLB33の第2の構成例を示すブロック図である。図8のDTLB33は、図7のアダー82をキャリー・ルックアヘッド回路 88に置き換えた以外は、図7と同様に構成されている。
【0056】
図9はキャリー・ルックアヘッド回路 88の一例を示す回路図であり、4ビットA0〜A3,B0〜B3同士の加算を行ってキャリー信号を出力する例を示している。図9の回路は、最終的な加算結果が演算される前にキャリー信号を出力することができる。
【0057】
図9のようなキャリー・ルックアヘッド回路 88を設けることにより、キャリー信号が一致したか否かを迅速に判断することができ、結果として、DTLB ヒットか否かの判断も高速に行うことができる。
【0058】
(DTLB33の第3の構成例)
上述した第1および第2の構成例の場合、仮想アドレスの下位側12ビットについてはキャリー信号の一致/不一致しか検出していないため、本来はベースアドレスとオフセットアドレスとの加算結果が一致しているにもかかわらず、不一致と判断される場合がある。
【0059】
例えば、図10aは、CAM35内に格納されているベースアドレスが'0x80000000'で、オフセットアドレスが'0x1234'の例を示している。両者の加算結果は、'0x80001234'になるため、キャリー信号は0(桁あふれなし)である。
【0060】
一方、図10bは、アクセス要求のあったベースアドレスが'0x80000fff'で、オフセットアドレスが'0x0125'の例を示している。この場合、両者の加算結果は、'0x80001234'になるにもかかわらず、後者のオフセットアドレスの値とキャリー信号の値は前者とは異なるため、図7の比較器84,86の比較結果は一致せず、最終的に一致検出部87は、DTLBミスを示す信号を出力する。
【0061】
図11は、第1および第2の構成例が、本来 DTLBがヒットしてもよい変換に対してミスと判断してしまう例を示す図である。図11の(1)に示すように、オフセットアドレスの上位側4ビットがAのとき、下位側12ビットからのキャリー信号が0であれば、両者の加算結果はAになる。また、図11の(2)に示すように、オフセットアドレスの上位側4ビットが(A-1)で、下位側12ビットからのキャリー信号が1のときも、両者の加算結果はAになるが、第1および第2の構成例は、DTLBミスと判断してしまう。
【0062】
同様に、図11の(3)に示すように、オフセットアドレスの上位側4ビットが(A+1)で、下位側12ビットからのキャリー信号が0であれば、両者の加算結果は(A+1)になる。また、図11の(4)に示すように、オフセットアドレスの上位側4ビットがAで、下位側12ビットからのキャリー信号が1のときも、両者の加算結果は(A+1)になるが、この場合も、第1および第2の構成例では、キャッシュミス ヒットと判断してしまう。
【0063】
DTLB33がミスを起こすと、JTLB31による変換が必要になるため、ペナルティが発生する。
【0064】
図12は DTLB33 の第三の構成例を示すブロック図である。図12 のDTLB33は、キャリー信号の値が異なっていても、ベースアドレスとオフセットアドレスとの加算結果が同じであれば、DTLBヒットと判断するようにしたものである。
【0065】
図12のDTLB33は、図7と同様の符号拡張部81とアダー82を有する他に、ベースアドレスの上位側20ビット[31:12]を格納する第1の格納部91と、アダー82からのキャリー信号の論理を反転するインバータIV1と、インバータIV1の出力論理を反転するインバータIV2と、インバータIV2の出力がハイレベル(キャリー信号が1)のときのみオフセットアドレスの上位側4ビット[15:12]に1を加算する加算部92と、インバータIV1の出力がハイレベル(キャリー信号が0)のときのみオフセットアドレスの上位側4ビット[15:12]から1を引く減算部93と、加算部92の出力を格納する第2の格納部94と、加算部92の出力を格納する第3の格納部95と、第1の格納部91に格納された20ビットデータと外部メモリに対するアクセス要求のあったベースアドレスの上位側20ビットデータとを比較する第1の比較器96と、第2の格納部94に格納された4ビットデータとアクセス要求のあったオフセットアドレスの上位側4ビットとを比較する第2の比較器97と、第3の格納部95に格納された4ビットデータとオフセットアドレスの上位側4ビットとを比較する第3の比較器98と、比較器96,97の比較結果がともに一致する場合に一致信号を出力するゲート回路99と、比較器96,98の比較結果がともに一致する場合に一致信号を出力するゲート回路110と、キャリー信号の論理に応じてゲート回路99,110の出力のいずれか一方を選択して出力する一致検出部111とを有する。第1〜第3の格納部91,94,95は、図5に示したCAM35内に設けられる。
【0066】
なお、図12において、一致検出部111 のマルチプレクサに書かれた 0, 1 は、それぞれを選択する信号、すなわち図12の横から入力されている信号 が 0, 1の時にそれぞれ選択される方を示している。
【0067】
次に、図12の回路の動作を説明する。DTLB33にリフィルされる仮想アドレス中のオフセットアドレスの上位側4ビットがAで、そのときのキャリー信号が0の場合には、加算部92はAをそのまま出力し、第2の格納部94にはAが格納される。また、減算部93は(A-1)を出力し、第3の格納部95には(A-1)が格納される。
【0068】
その後、外部メモリに対するアクセス要求のあったオフセットアドレスの上位側4ビットがAで、そのときのキャリー信号が0の場合には、第2の比較器97の比較結果が一致して、第3の比較器98の比較結果は不一致になる。したがって、ゲート回路99の出力はハイレベルに、ゲート回路110の出力はローレベルになる。このとき、キャリー信号は0であるため、一致検出部111は、ゲート回路99の出力を選択する。この場合、ゲート回路99の出力はハイレベルであるため、一致検出部111は一致信号を出力する。
【0069】
また、外部メモリに対するアクセス要求のあったオフセットアドレスの上位側4ビットが(A-1)で、そのときのキャリー信号が1になると、第3の比較器98の比較結果が一致して、第2の比較器97の比較結果が不一致になる。したがって、ゲート回路110の出力はハイレベルに、ゲート回路99の出力はローレベルになる。このとき、キャリー信号は1であるため、一致検出部111は、ゲート回路110の出力を選択する。この場合、ゲート回路110の出力はハイレベルであるため、一致検出部111は一致信号を出力する。
【0070】
一方、DTLB33にリフィルされる仮想アドレス中のオフセットアドレスの上位側4ビットがAで、そのときのキャリー信号が1の場合には、加算部92は(A+1)を出力し、第2の格納部94には(A+1)が格納される。また、減算部93はAをそのまま出力し、第3の格納部95にはAが格納される。
【0071】
その後、外部メモリに対するアクセス要求のあったオフセットアドレスの上位側4ビットがAで、そのときのキャリー信号が1の場合には、第3の比較器98の比較結果が一致して、第2の比較器97の比較結果は不一致になる。したがって、ゲート回路110の出力はハイレベルに、ゲート回路99の出力はローレベルになる。このとき、キャリー信号は1であるため、一致検出部111は、ゲート回路110の出力である一致信号を出力する。
【0072】
また、外部メモリに対するアクセス要求のあったベースアドレスが(A+1)で、そのときのキャリー信号が0の場合には、第2の比較器97の比較結果が一致して、第3の比較器98の比較結果は不一致になる。したがって、ゲート回路99の出力はハイレベルに、ゲート回路110の出力はローレベルになる。このとき、キャリー信号は0であるため、一致検出部111は、ゲート回路99の出力である一致信号を出力する。
【0073】
このように、図12の回路の場合、キャリー信号の値により、CAM35内に格納するオフセットアドレスの値を調整するため、図10のように、元のオフセットアドレスが不一致であっても、オフセットアドレスとベースアドレスとの加算結果が同一であれば、仮想アドレスが一致したと判断される。したがって、誤ってDTLBミスと判断するおそれが少なくなり、プロセッサの処理速度が向上する。
【0074】
【発明の効果】
以上詳細に説明したように、本発明によれば、ベースアドレスとオフセットアドレスのそれぞれの下位側ビット列については、両アドレスの加算結果を比較する代わりに、キャリー信号同士を比較するため、仮想アドレスが一致するか否かを高速に検出することができる。
【0075】
また、本発明によれば、キャリー信号の値に応じてオフセットアドレスを調整した上でアドレスの比較を行うため、桁上がりのあるなしにかかわらず、正確に仮想アドレスの比較を行うことができる。
【図面の簡単な説明】
【図1】本発明に係るマイクロプロセッサの内部構成を示すブロック図。
【図2】 MMUの内部構成を示す図。
【図3】 JTLB内の変換テーブルの一例を示す図。
【図4】ベースアドレス、オフセットアドレス、仮想アドレス、および物理アドレスの各データ構造を示す図。
【図5】 MMUおよびLSUの主要部の詳細構成を示すブロック図。
【図6】図5の具体的な動作を示す図。
【図7】 DTLBの第1の構成例を示すブロック図。
【図8】 DTLBの第2の構成例を示すブロック図。
【図9】キャリー・ルックアヘッド回路の一例を示す回路図。
【図10】ベースアドレスとオフセットアドレスとの計算の一例を示す図。
【図11】第1および第2の構成例がキャッシュヒット検出を正しく行えない例を示す図。
【図12】 DTLBの第3の構成例を示すブロック図。
【符号の説明】
1 バス・インタフェース・ユニット
2 IFU(Instruction Fetch Unit)
3 MMU(Memory Management Unit)
4 LSU(Load/Store Unit)
5a,5b,5c 実行ユニット
6a,6b FPU (Floating Point Unit)
7 制御論理部
21 PCパイプ
22 ICACHE
23 命令発行&ステージング部
31 JTLB(Joint Translation Lookaside Buffer)
32 ITLB(Instruction Translation Lookaside Buffer)
33 DTLB(Data Translation Lookaside Buffer)
41 DCACHE(Data Cache Memory)
42 SPRAM(Scratch Pad RAM)
43 アドレス生成器(仮想アドレス計算部)
100 変換テーブル
Claims (6)
- 仮想アドレスを物理アドレスに変換するトランスレーション・ルックアサイド・バッファ回路(TLB回路)において、
比較の基準となる仮想アドレス情報のベースアドレスの上位側ビット列を格納する第1の格納部と、
比較の基準となる仮想アドレス情報のベースアドレスの下位側ビット列とオフセットアドレスの下位側ビット列とを加算したときに桁あふれがある場合には、該仮想アドレス情報のオフセットアドレスの上位側ビット列に1を加えたビット列を格納し、かつ、桁あふれがない場合には、該仮想アドレス情報のオフセットアドレスの上位側ビット列を格納する第2の格納部と、
比較の基準となる仮想アドレス情報のベースアドレスの下位側ビット列とオフセットアドレスの下位側ビット列とを加算したときに桁あふれがある場合には、該仮想アドレス情報のオフセットアドレスの上位側ビット列を格納し、かつ、桁あふれがない場合には、該仮想アドレス情報のオフセットアドレスの上位側ビット列から1を引いたビット列を格納する第3の格納部と、
アクセス要求のあった仮想アドレス情報のベースアドレスの上位側ビット列と、前記第1の格納部に格納されたビット列とを比較する第1の比較器と、
アクセス要求のあった仮想アドレス情報のオフセットアドレスの上位側ビット列と前記第2の格納部に格納されたビット列とを比較する第2の比較器と、
アクセス要求のあった仮想アドレス情報のオフセットアドレスの上位側ビット列と前記第3の格納部に格納されたビット列とが一致するか否かを比較する第3の比較器と、
前記第1〜第3の比較器の比較結果に基づいて、アクセス要求のあった仮想アドレスが比較の基準となる仮想アドレスに一致するか否かを示す信号を出力する一致検出部と、を備えることを特徴とするトランスレーション・ルックアサイド・バッファ回路。 - 前記一致検出部は、アクセス要求のあった仮想アドレス情報のベースアドレスの下位側ビット列とオフセットアドレスの下位側ビット列とを加算したときに桁あふれがない場合には、前記第1および第2の比較器でともに一致が検出された場合のみ仮想アドレスの一致信号を出力し、アクセス要求のあった仮想アドレス情報のベースアドレスの下位側ビット列とオフセットアドレスの下位側ビット列とを加算したときに桁あふれがある場合には、前記第1および第3の比較器でともに一致が検出された場合のみ仮想アドレスの一致信号を出力することを特徴とする請求項1に記載のトランスレーション・ルックアサイド・バッファ回路。
- 一種類以上の仮想アドレスのそれぞれに対応して、前記第1〜第3の格納部と、前記第1〜第3の比較部とを有する連想メモリを備え、
前記連想メモリは、アクセス要求のあった仮想アドレスがいずれの前記一致検出部でも一致が検出されない場合には、該仮想アドレスに対応する物理アドレスとそれに付随する属性を特定の場所に記憶することを特徴とする請求項1に記載のトランスレーション・ルックアサイド・バッファ回路。 - 最小ページサイズにおけるページ内オフセットが、仮想アドレスのn ビット目から最下位ビットまでである場合、ベースアドレスの最上位ビットから(n+1)ビットまでが上位側ビット列、n ビットから最下位ビットまでが下位側ビット列であり、オフセットアドレスの最上位ビットから(n+1)ビットまでが上位側ビット列、n ビットから最下位ビットまでが下位ビット列であることを特徴とする請求項1〜3のいずれかに記載のトランスレーション・ルックアサイド・バッファ回路。
- 前記オフセットアドレスは、正負の符号を表すサインビットを有し、
前記ベースアドレスの上位側20ビットと、前記サインビットと、前記オフセットアドレスの上位側3ビットと、前記ベースアドレスおよび前記オフセットアドレスのそれぞれの下位側12ビットを加算したときのキャリービットとを併せた25ビットに基づいて物理アドレスへの変換を行うことを特徴とする請求項4に記載のトランスレーション・ルックアサイド・バッファ回路。 - 前記ベースアドレスおよび前記オフセットアドレスのそれぞれの下位側12ビット同士の加算を行う場合は、前記オフセットアドレスを符号拡張して32ビットにした状態で加算を行うことを特徴とする請求項4または5に記載のトランスレーション・ルックアサイド・バッファ回路。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US494834 | 1983-05-16 | ||
US09/494,834 US6374342B1 (en) | 2000-01-31 | 2000-01-31 | Translation lookaside buffer match detection using carry of lower side bit string of address addition |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2001222470A JP2001222470A (ja) | 2001-08-17 |
JP3825974B2 true JP3825974B2 (ja) | 2006-09-27 |
Family
ID=23966172
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001010267A Expired - Fee Related JP3825974B2 (ja) | 2000-01-31 | 2001-01-18 | トランスレーション・ルックアサイド・バッファ回路 |
Country Status (2)
Country | Link |
---|---|
US (1) | US6374342B1 (ja) |
JP (1) | JP3825974B2 (ja) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6854046B1 (en) * | 2001-08-03 | 2005-02-08 | Tensilica, Inc. | Configurable memory management unit |
FR2836407B1 (fr) * | 2002-02-28 | 2004-05-14 | Thermagen | Procede de fabrication d'emballage metallique |
US7243208B2 (en) * | 2003-08-13 | 2007-07-10 | Renesas Technology Corp. | Data processor and IP module for data processor |
US7360058B2 (en) * | 2005-02-09 | 2008-04-15 | International Business Machines Corporation | System and method for generating effective address |
US7650465B2 (en) * | 2006-08-18 | 2010-01-19 | Mips Technologies, Inc. | Micro tag array having way selection bits for reducing data cache access power |
US7657708B2 (en) * | 2006-08-18 | 2010-02-02 | Mips Technologies, Inc. | Methods for reducing data cache access power in a processor using way selection bits |
WO2008024221A2 (en) * | 2006-08-18 | 2008-02-28 | Mips Technologies, Inc. | Micro tag reducing cache power |
US20080082793A1 (en) * | 2006-09-29 | 2008-04-03 | Mips Technologies, Inc. | Detection and prevention of write-after-write hazards, and applications thereof |
US9946547B2 (en) | 2006-09-29 | 2018-04-17 | Arm Finance Overseas Limited | Load/store unit for a processor, and applications thereof |
US7594079B2 (en) * | 2006-09-29 | 2009-09-22 | Mips Technologies, Inc. | Data cache virtual hint way prediction, and applications thereof |
GB2458295B (en) * | 2008-03-12 | 2012-01-11 | Advanced Risc Mach Ltd | Cache accessing using a micro tag |
US8380779B2 (en) * | 2009-05-29 | 2013-02-19 | Freescale Semiconductor, Inc. | Technique for determining if a logical sum of a first operand and a second operand is the same as a third operand |
US9323534B2 (en) | 2013-03-15 | 2016-04-26 | Freescale Semiconductor, Inc. | Method and apparatus for detecting a collision between multiple threads of execution for accessing a memory array |
US9116799B2 (en) | 2013-06-30 | 2015-08-25 | Freescale Semiconductor, Inc. | Method for detecting bank collision at a memory and device therefor |
EP3264317B1 (en) * | 2016-06-29 | 2019-11-20 | Arm Ltd | Permission control for contingent memory access program instruction |
CN109992529B (zh) * | 2018-01-03 | 2021-07-16 | 华为技术有限公司 | 虚拟地址确定方法及装置、处理器、存储介质 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5335333A (en) * | 1991-10-29 | 1994-08-02 | Intel Corporation | Guess mechanism for faster address calculation in a pipelined microprocessor |
US5502829A (en) * | 1993-11-03 | 1996-03-26 | Intergraph Corporation | Apparatus for obtaining data from a translation memory based on carry signal from adder |
US5606683A (en) * | 1994-01-28 | 1997-02-25 | Quantum Effect Design, Inc. | Structure and method for virtual-to-physical address translation in a translation lookaside buffer |
US5970512A (en) * | 1997-03-27 | 1999-10-19 | International Business Machines Corporation | Translation shadow array adder-decoder circuit for selecting consecutive TLB entries |
TW382090B (en) * | 1997-08-13 | 2000-02-11 | United Microeletronics Corp | System and method for converting computer addresses |
JP2001034537A (ja) * | 1999-07-23 | 2001-02-09 | Toshiba Corp | アドレス変換回路 |
-
2000
- 2000-01-31 US US09/494,834 patent/US6374342B1/en not_active Expired - Lifetime
-
2001
- 2001-01-18 JP JP2001010267A patent/JP3825974B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2001222470A (ja) | 2001-08-17 |
US6374342B1 (en) | 2002-04-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9928180B2 (en) | Synchronizing a translation lookaside buffer with page tables | |
JP3713312B2 (ja) | データ処理装置 | |
JP3825974B2 (ja) | トランスレーション・ルックアサイド・バッファ回路 | |
US5793941A (en) | On-chip primary cache testing circuit and test method | |
US6604187B1 (en) | Providing global translations with address space numbers | |
US6681311B2 (en) | Translation lookaside buffer that caches memory type information | |
CA2088978C (en) | Translation buffer for virtual machines with address space match | |
US6412057B1 (en) | Microprocessor with virtual-to-physical address translation using flags | |
US5752274A (en) | Address translation unit employing a victim TLB | |
CN109426624B (zh) | 用于高效利用地址转换缓存的装置和方法 | |
US10083126B2 (en) | Apparatus and method for avoiding conflicting entries in a storage structure | |
US7263585B2 (en) | Store-induced instruction coherency mechanism | |
US5873123A (en) | Processor and method for translating a nonphysical address into a physical address utilizing a selectively nonsequential search of page table entries | |
WO2006060198A1 (en) | Translation lookaside buffer (tlb) access supression for intra-page program counter relative or absolute address branch instructions | |
KR100354465B1 (ko) | 어드레스 변환 회로 | |
JP3862959B2 (ja) | マイクロプロセッサのロード/ストア命令制御回路、およびロード/ストア命令制御方法 | |
US11687466B1 (en) | Translation lookaside buffer consistency directory for use with virtually-indexed virtually-tagged first level data cache that holds page table permissions | |
KR100308675B1 (ko) | 캐쉬어드레스발생방법 | |
KR100308674B1 (ko) | 멀티사이클데이터캐쉬판독을위한데이터레지스터 | |
KR100218617B1 (ko) | 변환우선참조 버퍼를 이용하여 메모리를 관리하는 데이터 처리 시스템의 효율적인 메모리 관리 방법 및 시스템과 그를 이용한 데이터 처리 시스템 | |
JPH024017B2 (ja) | ||
JPH0769809B2 (ja) | データ処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20060126 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060131 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060403 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060414 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060613 |
|
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: 20060623 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060703 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090707 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100707 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110707 Year of fee payment: 5 |
|
LAPS | Cancellation because of no payment of annual fees |