JPWO2006098135A1 - バスコントローラ - Google Patents

バスコントローラ Download PDF

Info

Publication number
JPWO2006098135A1
JPWO2006098135A1 JP2006524134A JP2006524134A JPWO2006098135A1 JP WO2006098135 A1 JPWO2006098135 A1 JP WO2006098135A1 JP 2006524134 A JP2006524134 A JP 2006524134A JP 2006524134 A JP2006524134 A JP 2006524134A JP WO2006098135 A1 JPWO2006098135 A1 JP WO2006098135A1
Authority
JP
Japan
Prior art keywords
address
instruction
buffer
data
processor
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.)
Granted
Application number
JP2006524134A
Other languages
English (en)
Other versions
JP4370327B2 (ja
Inventor
和司 蔵田
和司 蔵田
信生 檜垣
信生 檜垣
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Panasonic Corp
Panasonic Holdings Corp
Original Assignee
Panasonic Corp
Matsushita Electric Industrial Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Panasonic Corp, Matsushita Electric Industrial Co Ltd filed Critical Panasonic Corp
Publication of JPWO2006098135A1 publication Critical patent/JPWO2006098135A1/ja
Application granted granted Critical
Publication of JP4370327B2 publication Critical patent/JP4370327B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4027Coupling between buses using bus bridges
    • G06F13/405Coupling between buses using bus bridges where the bridge performs a synchronising function
    • G06F13/4059Coupling between buses using bus bridges where the bridge performs a synchronising function where the synchronisation uses buffers, e.g. for speed matching between buses

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Advance Control (AREA)
  • Bus Control (AREA)

Abstract

フラッシュ完了までの時間を短縮して、プロセッサの性能劣化を回避するバスコントローラを提供する。バスコントローラ(100)は、プロセッサからメモリへのストアデータを先入れ先出し式に一時的に保持するFIFO(111)と、トリガー信号を受けた時点でFIFO(111)に保持されている末尾のデータを指すポインタを保持するフラッシュポインタ(112)と、トリガー信号に応じて、FIFO(111)に保持されているデータのうち先頭データからフラッシュポインタ(112)が指すデータまでをメモリに書き込むことによってFIFO(111)を部分的にフラッシュするメモリ制御部(113)と、メモリ制御部(113)によって、部分的フラッシュが完了するまで、プロセッサにより実行される特定のアクセス命令に対してウェイト信号を発生するウェイト回路(102)とを備える。

Description

プロセッサとメモリとの間のバッファを備えたバスコントローラに関する。
プロセッサとスレーブデバイス間のアクセスレイテンシを隠蔽するために、バッファを備えた構成がある。このバッファにはプロセッサからスレーブデバイスへのストアデータが一時格納される。バッファからスレーブデバイスへのストアデータ転送は、プロセッサから制御されることなくプロセッサとは独立に実行される。
プロセッサがバッファに格納されたストアデータがスレーブデバイスに書き込みされたことを確認する方法として、プロセッサがスレーブデバイスをリードする方法がある。すなわち、プロセッサにより特定のリード命令が実行されることにより、バッファは保持しているストアデータを一括してフラッシュする。ここでいうフラッシュとは、バッファに格納されたデータをすべてスレーブデバイスに書き込むことである。
図15に従来技術におけるプロセッサとスレーブデバイスの間にバッファを備えたバスコントローラの構成を示す。このバスコントローラ76は、クロスバスイッチ77とバッファ78とを備え、マスターデバイスとなるプロセッサ71およびDMAC72と、スレーブデバイスとなるメモリ73、デバイス74およびデバイス75との間でバス制御および、デバイス73へのストアデータのバッファリングを制御する。
同図において、プロセッサ71とDMAC72をマスターとし、スレーブデバイスは3つある。マスターとスレーブをバス接続するためのクロスバスイッチ77があり、その接続はバスコントローラ76が制御している。プロセッサ71がメモリ73にストアするデータはバッファ78にバッファリングされる。上記フラッシュのためのフラッシュトリガーはロード命令により生成される。プロセッサはメモリ73のデータについてのコヒーレンシが保証されていることをロード命令の完了により確認し、確認後DMAを起動するためのトリガーをDMACにアサートする。
プログラムの例をプログラム1に示す。
<プログラム1>
line1:mov r0,0x0
line2:mov a0,0x0
line3:st @a0,r0
line4:ld r15,@a0
line3ではプロセッサ71がデバイス73にデータをストアしている。このデータはバッファ78に一時的に保持される。line4ではプロセッサがデバイス73からデータをロードする。これによりバッファ78はフラッシュを開始する。フラッシュが完了するまでプロセッサ71はインタロックし、フラッシュ完了後にロードに対する応答を受ける。これによりプロセッサ71はline3の書き込みの完了を確認できる、つまりコヒーレンシが保証される。
従来のコヒーレンシ保証では、高速のレジスタをバスに設けてリードを高速化している(例えば、特許文献1参照)。また、リードを2回の命令に分けて実行し、1回目の命令から2回目の命令までプロセッサが命令を実行できるようにしているものもある(例えば、特許文献2参照)。
特許第2917659号公報 特開平4−123241号公報
しかしながら、上記従来技術によれば、フラッシュ完了の確認を高速化しているものの、フラッシュに要する時間がかかるという問題がある。フラッシュに要する時間と、フラッシュ確認のためのリードのレイテンシとに応じた分だけ、プロセッサの性能が劣化する。
フラッシュに要する時間は、バッファの容量にも依存し、最大ではバッファの容量分のデータを書き戻す時間がかかることになる。
具体的には、コヒーレンシ保証のために、リード命令によりバッファを一括してフラッシュする間、プロセッサは後続するストア命令を実行しないようにすれば、フラッシュすべきデータ量は減るが、後続するストア命令の実行を待たせることになる。後続するストア命令を実行するのであれば、実行したストア命令のデータを含みフラッシュされるので、フラッシュに要する時間が長くなってしまう。つまり、スレーブデバイスへの書き込みを早く確認する必要がある場合、ストア命令を実行できなくなる。例えば、書き込み完了を確認した後、スレーブデバイスをソースとするDMA転送を開始する場合には、フラッシュに要する時間は短い方が望ましい。
本発明は、トリガー信号からフラッシュ完了までの時間を短縮して、プロセッサの性能劣化を回避するバスコントローラを提供することを目的とする。
本発明のバスコントローラは、プロセッサとメモリとの間のバスをコントロールするバスコントローラであって、プロセッサからメモリへのストアデータを先入れ先出し式に一時的に保持するバッファ手段と、前記バッファ手段の部分的フラッシュを指示するトリガー信号を受け付ける受付手段と、前記トリガー信号を受けた時点でバッファ手段に保持されている末尾のデータを指すポインタを保持するポインタ保持手段と、前記トリガー信号に応じて、前記バッファ手段に保持されているデータのうち先頭データから前記ポインタが指すデータまでをメモリに書き込むことによって前記バッファ手段を部分的にフラッシュする書き込み手段と、前記書き込み手段によって、前記部分的フラッシュが完了するまで、プロセッサにより実行される特定のアクセス命令に対してウェイト信号を発生するウェイト発生手段とを備える。
この構成によれば、バッファ手段が空になるまで全部のデータをフラッシュしないで、フラッシュすべきデータ(トリガー信号を受けた時点のデータまで)を部分的にフラッシュするので、トリガー信号からフラッシュ完了までの時間を短縮することできる。これにより、プロセッサの性能劣化を回避することができる。
さらに、前記ポインタが指すデータより後段のバッファ領域にストアデータを保持させることができるので、プロセッサは部分的フラッシュが完了する前に後続するストア命令を実行できる。その結果、プロセッサの処理効率を向上させることができる。
ここで、前記受付手段は、前記メモリをアクセスする命令以外の命令の実行時にプロセッサから出力される前記トリガー信号を受け付けるようにしてもよい。
この構成によれば、前記メモリをアクセスする命令以外の命令、例えば、他のデバイスをアクセスする命令や、トリガー信号を発生する専用命令などによって、より少ないレイテンシでトリガー信号を出力することができる。
ここで、前記受付手段は、前記プロセッサにおける部分的フラッシュ付きストア命令の実行時にプロセッサから出力される前記トリガー信号を受け付けるようにしてもよい。
この構成によれば、上記のストア命令と同時にトリガー信号が発行され、当該ストア命令のデータのコヒーレンシを保証することができる。
ここで、前記特定のアクセス命令は、前記メモリとは異なるデバイスをアクセスする命令であってもよい。
この構成によれば、前記メモリとは異なるデバイス、例えば、メモリよりもレイテンシが少ないデバイスや、専用のデバイスなどによってより少ないレイテンシで、プロセッサはフラッシュの完了を確認することができる。
ここで、前記特定のアクセス命令は、ロード命令であってもよい。
この構成によれば、前記メモリをアクセスする命令と、フラッシュ完了の確認とを兼用することができる。例えば、ロード命令が完了したことをプロセッサが確認してから、他のマスター(DMAC等)を起動するといった使い方ができる。
ここで、前記バッファ手段は、プロセッサからメモリへのストアデータを先入れ先出し式に一時的に保持するデータバッファと、前記ストアデータに対応するアドレスを保持するアドレスバッファと、プロセッサから出力されるロードアドレスとアドレスバッファに保持されたアドレスとを比較する比較手段とを備え、前記ウェイト発生手段は、比較手段による比較の結果、ロードアドレスとアドレスバッファに保持されたアドレスとが一致するとき、前記ウェイト信号を発生するようにしてもよい。
この構成によれば、後続するロード命令とアドレスが一致するストアデータに限定して、ウェイト信号を発生させることができる。
ここで、前記アドレスバッファは、前記トリガー信号を受けた時点においてバッファ手段に保持されている先頭データから末尾のデータまでのそれぞれに対応するアドレスを保持し、前記比較手段は、アドレスバッファに保持された先頭データから末尾のデータまでのそれぞれに対応するアドレスと、プロセッサから出力されるロードアドレスとを比較するようにしてもよい。
この構成によれば、前記トリガー信号を受けた時点でバッファ手段に保持されている先頭データから末尾のデータまでのコヒーレンシをより確実に保証することができる。
ここで、前記アドレスバッファは、前記トリガー信号を受けた時点においてバッファ手段に保持されている先頭データから末尾のデータまでのそれぞれに対応するアドレスを保持し、前記比較手段は、前記部分的フラッシュの対象データのうちメモリに書き込まれたデータのそれぞれに対応するアドレスと、プロセッサから出力されるロードアドレスとを比較しないで、前記部分的フラッシュの対象データのうちメモリに書き込まれていないデータのそれぞれに対応するアドレスと、プロセッサから出力されるロードアドレスとを比較するようにしてもよい。
この構成によれば、部分的フラッシュの対象データのうちメモリに書き込まれていないデータについてコヒーレンシを保証することができるので、書き込まれているのにロード動作をウェイトさせてしまうことはなくなり、必要以上にプロセッサの性能を劣化させることがない。
ここで、前記比較手段は、さらに、プロセッサから出力されるストアアドレスとアドレスバッファに保持されたアドレスとを比較し、前記ウェイト発生手段は、さらに、比較手段による比較の結果、前記ストアアドレスとアドレスバッファに保持された何れかのアドレスとが一致するとき、前記部分的フラッシュが完了している状態であれば、一致したアドレスに対応するデータのデータメモリからメモリへの書き込みをウェイトさせ、その後の比較手段による比較の結果、プロセッサから出力されるロードアアドレスとアドレスバッファに保持された何れかのアドレスとが一致するとき、アドレスバッファをクリアするようにしてもよい。
この構成によれば、データバッファからメモリへの書き込み完了をチェックするためのロード命令(第2の命令と呼ぶ。)と、トリガー信号を発行したストア命令(第1の命令と呼ぶ。)との間に、部分的フラッシュの対象データと同一アドレスにストアする命令(第3の命令と呼ぶ。)を配置することが可能となる。なぜなら、部分的フラッシュが完了するまで、第3の命令の書き込みがウェイトされるからである。これにより第1の命令と第2の命令の間に第3の命令を記述することができるので、効率よくプログラムを記述できる。
ここで、前記比較手段は、さらに、プロセッサから出力されるストアアドレスとアドレスバッファに保持されたアドレスとを比較し、前記ウェイト発生手段は、さらに、比較手段による比較の結果、前記ストアアドレスとアドレスバッファに保持された何れかのアドレスとが一致するとき、前記部分的フラッシュが完了している状態であれば、一致したアドレスに対応するデータのデータメモリからメモリへの書き込みをウェイトさせ、前記特定のアクセス命令が完了したとき、アドレスバッファをクリアするようにしてもよい。
この構成によれば、第1の命令と第2の命令の間に第3の命令を記述することができるので、効率よくプログラムを記述できる。さらに、第2の命令をアドレスバッファに保持されていないアドレスをロードアドレスとするロード命令にすることもでき、プログラムの自由度が向上する。
ここで、前記バスコントローラは、さらに、前記バッファ手段を第1バッファ手段とし、前記バッファ手段と同一構成の第2バッファ手段と、第1バッファ手段および第2バッファ手段をカレントとして指示する指示手段と、トリガー信号に応じて指示手段のカレントを切り替える切替手段とを備え、前記書き込み手段およびウェイト発生手段は、カレントでないバッファ手段を対象とし、カレントバッファ手段は、プロセッサからのストアデータを保持するようにしてもよい。
この構成によれば、複数のバッファ手段を有するバスコントローラであっても、トリガー信号でバッファ手段を切り替えながら、部分的フラッシュをすることができる。また、トリガー信号が発生した後、バッファリングできるストアデータの容量を、少なくとも1バッファ手段分を確保することができる。
本発明では、バッファのフラッシュ(書き込み)とリードのレイテンシを隠蔽して、プロセッサの実行性能を向上させることができる。
また、コヒーレンシ保証のために、バッファを一括してフラッシュする間、プロセッサはストア命令を実行することが可能であり、同時に、必要最小限のデータをフラッシュ実行できるので、スレーブデバイスへの書き込み完了を早く確認できる。
図1は、実施の形態1におけるプロセッサ、デバイスおよびバスコントローラの構成を示すブロック図である。 図2は、第1の命令が実行されたときのバッファの様子を示す図である。 図3は、部分的フラッシュ中のバッファの様子を示す図である。 図4は、部分的フラッシュ中のバッファの様子を示す図である。 図5は、部分的フラッシュが完了したときのバッファの様子を示す図である。 図6は、プログラム例2を示す図である。 図7は、実施の形態2におけるプロセッサ、デバイスおよびバスコントローラの構成を示すブロック図である。 図8は、FIFOおよびアドレス比較部の詳細な構成を示すブロック図である。 図9は、プログラム例3を示す図である。 図10は、実施の形態3におけるプロセッサ、デバイスおよびバスコントローラの構成を示すブロック図である。 図11は、FIFOおよびアドレス比較部の詳細な構成を示すブロック図である。 図12は、プログラム例4を示す図である。 図13は、実施の形態4におけるプロセッサ、デバイスおよびバスコントローラの構成を示すブロック図である。 図14は、バッファ部410aと410bの切り替えを説明する図である。 図15は、従来技術におけるプロセッサ、デバイスおよびバスコントローラの構成を示すブロック図である。
符号の説明
1 プロセッサ
2 DMAC
3 メモリ
4 デバイス
5 デバイス
100 バスコントローラ
101 クロスバスイッチ
102 ウェイト回路
110 バッファ部
111 FIFO
112 フラッシュポインタ
113 メモリ制御部
202 ウェイト回路
210 バッファ部
211 FIFO
112 フラッシュポインタ
213 メモリ制御部
214 アドレス比較部
21d〜24d データラッチ
21a〜24a アドレスラッチ
25〜28 比較器
29 判定部
30 論理和
31 Dフリップフロップ
32 Dフリップフロップ
302 ウェイト回路
310 バッファ部
314 アドレス比較部
410a バッファ部
410b バッファ部
411 カレントポインタ
412 セレクタ
<実施の形態1>
実施の形態1におけるバスコントローラは、バッファ中の全データをフラッシュする代わりに、フラッシュすべきデータ(トリガー信号を受けた時点のデータまで)を部分的にフラッシュする。これにより、トリガー信号からフラッシュ完了までの時間を短縮することできる。
図1は、本発明の実施の形態1におけるプロセッサ、デバイスおよびバスコントローラの構成を示すブロック図である。同図において、プロセッサ1とDMAC(Direct Memory Access Controller)2はマスターデバイスとして、スレーブデバイスであるメモリ3、デバイス4、5にバスを介してアクセスする。バスコントローラ100は、クロスバスイッチ101、ウェイト回路102、バッファ部110を備える。また、バッファ部110は、FIFO111、フラッシュポインタ112、メモリ制御部113を備える。
プロセッサ1は、第1の命令の実行時に、バッファ部110に部分的フラッシュを指示するフラッシュトリガー信号を出力する。ここで、部分的フラッシュは、FIFO111に保持されているデータのうち先頭データから、フラッシュトリガーが出力されたデータまでをFIFO111からメモリ3に書き込むことをいう。また、第1の命令は、フラッシュトリガーを発生させるオペレーションのみの命令、部分的フラッシュ付きストア命令(フラッシュトリガー付きストア命令)などでよい。
マスターデバイスおよびスレーブデバイスに接続されるバスは、クロスバスイッチ101で接続されており、バッファ部110はプロセッサ1とメモリ3の間に設けられている。データ転送はバスコントローラ100が制御している。ただし、DMAC2によるDMA転送では、FIFO111を経由しないで直接3にアクセスされる。
FIFO111は、プロセッサ1からメモリ3へのストアデータを先入れ先出し式に一時的に保持する。例えば、FIFO111は、出力側をバッファ4、入力側をバッファ1とする4つのバッファからなる4段構成である。
フラッシュポインタ(FP)112は、トリガー信号を受けた時点でFIFO111に保持されている末尾のデータを指すポインタを保持するレジスタである。フラッシュポインタ112は、プロセッサ1からのフラッシュトリガーでセットされ、セットされたデータが書き出されるまで当該データとともに移動する。セットされたデータが書き出されるとフラッシュポインタ112は、どのバッファも指し示さないポジションをとる(これを、便宜上ヌル(NULL)と呼ぶ)。例えば、FIFO111が4段構成の場合に出力側をバッファ4、入力側をバッファ1とした場合、フラッシュポインタ112は4〜1までの値を取り得る。この値はメモリ3への書き込みと共にデクリメントされ、フラッシュ完了後0(ヌル)になる。
メモリ制御部113は、通常時(フラッシュポインタ112がヌルのとき)は、バスの空きサイクルを利用して(つまりサイクルスチールにより)FIFO111からメモリ3へデータを書き込む。また、メモリ制御部113は、プロセッサ1からの出力されるフラッシュトリガー信号を受け付け、フラッシュポインタ112をセットし、FIFO111に保持されているデータのうち先頭データからフラッシュポインタ112が指すデータまでをメモリ3に書き込むことによって、FIFO111からメモリ3に部分的にフラッシュする。このとき、メモリ制御部113は、フラッシュポインタ112がヌルになるまで、つまり部分的フラッシュが完了するまで、ウェイト回路102に対してウェイトの発生を指示するウェイト指示信号Wを有効にする。
ウェイト回路102は、メモリ制御部113から出力されたウェイト指示信号Wが有効である場合、プロセッサ1により実行される特定のアクセス命令に対してウェイト信号を発生する。特定のアクセス命令は、プロセッサ1が部分的フラッシュの完了を確認するための命令(以下第2の命令と呼ぶ。)をいい、本実施形態ではデバイス4に対するリードアクセス命令とする。デバイス4は、メモリ3とは異なるI/Oやメモリでよい、あるいは専用のI/Oであってもよい。
図2は、第1の命令が実行されたときのFIFO111の様子を示す図である。
プロセッサ1が第1の命令を実行すると、フラッシュトリガーが有効になる。同図では、FIFO111に既にストアデータA、B、Cが保持されているので、メモリ制御部113は、フラッシュポインタ112を、末尾のストアデータCを指すようにセットし、部分的フラッシュを開始し、ウェイト指示信号Wを有効にする。
続いて、メモリ制御部113によってストアデータAがメモリ3に書き込まれると図3のように、フラッシュポインタ112はストアデータCと共に移動する。図3では、プロセッサ1がさらに2つのストア命令を実行し、ストアデータD、EがFIFO111に格納されている。この状態で、プロセッサ1が第2の命令の実行により、デバイス4をリードすると、ウェイト回路102はリードの完了をウェイトさせる。
さらに、メモリ制御部113によってストアデータBがメモリ3に書き込まれると図4のように、フラッシュポインタ112はストアデータCと共に移動する。図4の状態でも、ウェイト指示信号Wは依然有効である。
次いで、メモリ制御部113によってストアデータCがメモリ3に書き込まれると図5のように、フラッシュポインタ112はヌルになる。これにより、ウェイト指示信号Wは無効になる。これにより、プロセッサ1からデバイス4へのリードに対するウェイトが解消される。なお、リードの完了をウェイトさせるウェイト信号は、FIFO111に格納されたデータのライトアドレスに関係ない。
図6は、プログラム例2を示す図である。同図においてr0,r1,r2,r15はデータレジスタである。a0,a1,a2はアドレスレジスタである。movはレジスタへのデータ転送命令である。st命令はアドレスレジスタが示すアドレスにデータレジスタからデータを転送する命令である。ld命令はアドレスレジスタが示すアドレスのメモリデータをレジスタに転送する命令である。
また、stf命令は、第1の命令の1つとして、デバイス4にストアするとともに、フラッシュトリガーを生成する命令であり、最後にFIFO111に格納されたデータ(末尾のデータ)にフラッシュポインタ112をセットさせる。ldf命令は、第2の命令の1つとして、デバイス4からロードする命令であり、ウェイト指示信号Wがアサートされているときリード完了がウェイトされる。ldf命令が完了すれば、stf命令より前に実行されたライト命令の完了を保証することができる。
プログラム例2では、line1より直前のプログラムにより既にストアデータ(3)がFIFO111に格納されているものとする。以下、動作例をケース1とケース2に分けて説明する。
<ケース1>
line3のstf命令の実行により、最後にFIFO111に最後に格納されたストアデータ(3)にフラッシュポインタがセットされる。
line6のst命令の実行により、ストアデータ(4)がバッファに格納される。
ストアデータ(5)がバッファに格納される。
line10のldf命令が実行されたときストアデータ(3)はバッファ1に格納されている。そのため、ウェイト信号がアサートされロードは完了しない。ストアデータ(3)がバッファ0から書き出されてからロードが完了する。ライト完了をチェックするロード命令とフラッシュトリガーとなる命令の間にストア命令(line6,line9)を実行できる。このストア命令でストアされるストアデータ(4)、ストアデータ(5)は部分的フラッシュの対象外となるので、プロセッサの性能を劣化させない。
<ケース2>
また、line10のldf命令が実行されたとき、把握されたデータがすべてライトバックされていれば、ロード命令はウェイトされない。ストアデータ(4)、ストアデータ(5)はライトバックされていても良い。
さらに、実施の形態1の変形例について説明する。
(1)stf命令は、同一のスレーブにアクセスする命令であっても実施できる。このとき、stf命令でストアされるデータはフラッシュの対象としないように構成しても、フラッシュの対象とするように構成してもよい。
(2)第1の命令(フラッシュトリガーを生成する命令)はストア命令であるとしたが、ストアの操作に限定するものではない。
(3)stf命令という命令を実行したときにフラッシュトリガーがアサートされるものとしたが、特定のアドレスに対するストア命令(st)を実行したときに、フラッシュトリガーがアサートされるとしても良い。例えばデバイス4の特定アドレスにアクセスしたときにフラッシュトリガーがアサートされるものとしてもよい。この場合、特定のアドレスをデコードする機構を備え、特定のアドレスにアクセスしたときにフラッシュトリガーがアサートされることとなる。ldf命令にも同じことが言える。特定のアドレスにアクセスしたときにウェイト制御が施されるものとしてもよい。
(4)ldf命令はバッファリングしたデータの書き込み先であるスレーブデバイスと異なるスレーブデバイスにアクセスする命令としたが、同一のスレーブデバイスにアクセスする命令であっても良い。スレーブを限定するものではなく、レイテンシーの短いスレーブに設定することが可能である。
(5)第2の命令はロード命令であるとしたが、ロードの操作に限定するものではない。ウェイト信号がアサートされている間、プロセッサをインタロックすることで操作をウェイトさせる機構があれば良い。
<実施の形態2>
実施の形態2では、stf命令はバッファリングの対象となるメモリ3に対して実行される。また、部分的フラッシュ中にメモリ3へのld命令が実行されたとき、ウェイトされることによってコヒーレンシが保証される。
図7は、実施の形態2におけるプロセッサ、デバイスおよびバスコントローラの構成を示すブロック図である。同図の構成は、実施の形態1で説明した図1の構成と比較してバスコントローラ100の代わりにバスコントローラ200を備える点と、ウェイト回路102が削除された点とが異なっている。図1と同じ符号の構成要素は同じなので説明を省略し、以下異なる点を中心に説明する。
バスコントローラ200は、バスコントローラ100と比較して、バッファ部110の代わりにバッファ部210を備える点が異なっている。
バッファ部210は、フラッシュポインタ112、FIFO211、アドレス比較部214およびウェイト回路202を備える。
FIFO211は、FIFO111と同様にストアデータを保持することに加えて、アドレスタグを保持する。FIFO211は、フラッシュトリガーを受けた時点においてFIFO211に保持されている先頭のストアデータから末尾のストアデータまでのそれぞれに対応するアドレスをアドレスタグとして保持し、末尾のストアデータがメモリ3に書き出されるまで保持を継続する。つまり、アドレスタグは、フラッシュトリガーから部分的フラッシュが完了するまで保持を継続する。例えば、ストアデータの書き込み先アドレスは従来と同様にバッファ部内部に保持されているが、アドレスタグはフラッシュトリガーがアサートされた時点の書き込み先アドレスがFIFO211内にコピーされる。
アドレス比較部214は、FIFO211に保持された先頭のストアデータから末尾のストアデータまでのそれぞれに対応するアドレスタグと、ロード命令を実行中のプロセッサから現に出力されているロードアドレスとを比較する。
ウェイト回路202は、ウェイト回路102とは異なり、アドレス比較部214による比較の結果、アドレスタグの何れかとロードアドレスとが一致するとき、プロセッサ1に対してウェイト信号を発生する。
図8は、FIFO211およびアドレス比較部214の詳細な構成を示すブロック図である。FIFO211は、データラッチ21d〜24dと、アドレスラッチ21a〜24aとを備える。
データラッチ21d〜24dは、プロセッサ1からメモリ3へのストアデータを先入れ先出し式に保持するデータバッファ回路を構成する。
アドレスラッチ21a〜24aは、上記のアドレスタグを保持するラッチ回路を構成する。
アドレス比較部214は、比較器25〜28、判定部29、論理和30、Dフリップフロップ31を備える。
比較器25は、アドレスラッチ21aのアドレスタグと、ロード命令を実行中のプロセッサから出力されているロードアドレスとを比較する。比較器26〜28は、それぞれアドレスラッチ22a〜24aのアドレスタグついて比較すること以外は、比較器25と同様である。ただし、比較器25〜28は、判定部29からのイネーブル信号がアサートされたときのみ比較動作する。
判定部29は、比較器25〜28のうち、フラッシュトリガーを受けた時点におけるフラッシュポインタ112が指すストアデータから先頭のストアデータまでに対応するアドレスラッチに対応する比較器をイネーブルにする。判定部29によりイネーブルにされる比較器は、部分的フラッシュが完了するまで継続される。例えば、フラッシュトリガーを受けた時点におけるフラッシュポインタ112がデータラッチ23dのストアデータを指していれば、判定部29は、部分的フラッシュが完了するまで、比較器25〜比較器27をイネーブルにする。
論理和30は、比較器25〜比較器28の比較結果の論理和をとる。つまり、比較器25〜比較器28のうち、判定部29によりイネーブルにされた比較器の1つが一致すれば、一致信号を出力する。
Dフリップフロップ31は、論理和30からの一致信号をロードサイクルにおいて保持し、ウェイト回路202に出力する。Dフリップフロップ31からの一致信号を受けてウェイト回路202は、ロード命令の実行に対してウェイト信号をプロセッサ1に出力する。
図9は、プログラム例3を示す図である。この動作例をケース1とケース2に分けて説明する。
<ケース1>
line6のstf命令の実行により、最後にバッファに格納されたストアデータ(3)にフラッシュポインタがセットされる。同時に、ストアデータ(1)とストアデータ(2)とストアデータ(3)のアドレスがアドレスタグとして保持される。
line9のst命令の実行により、ストアデータ(4)がバッファに格納される。
line12のst命令の実行により、ストアデータ(5)がバッファに格納される。
line13のld命令が実行されたとき、アドレスタグ、ld命令のソースアドレスが一致しないのでld命令は実行される。
line14のld命令が実行されたとき、ストアデータ(2)に対応したアドレスタグと、ld命令のソースアドレスが一致する。このとき、ウェイト信号がアサートされ、ロードは完了しない。ストアデータ(3)がバッファ0から書き出されてから、アドレスタグがクリアされる。アドレスのクリアに伴って、ウェイト信号が解除されロードが完了する。このように、ライト完了をチェックするロード命令(第2の命令)とフラッシュトリガーとなる命令(第1の命令)の間にストア命令を実行できる。さらに、line13のld命令は実行され、line14のld命令がウェイトされたように、この構成によれば、後続するロード命令のロードアドレスと部分的フラッシュの対象であるストアデータのストアアドレスが一致する場合に限り、ウェイト信号を発生させることができる。
<ケース2>
line14のld命令が実行されたとき、ストアデータがすべてライトバックされていれば、ロード命令はウェイトされない。このとき、ストアデータ(4)、ストアデータ(5)はライトバックされていても良い。
このように実施の形態2では、stf命令をトリガーとして、その時点でバッファに格納されているデータとアクセスアドレスをアドレスタグにより把握し、前記アドレスとld命令のアクセスアドレスが一致するときにld命令の実行をウェイトさせることによりコヒーレンシを保証している。
さらに、実施の形態2の変形例について説明する。判定部29は、フラッシュポインタ112が指し示すストアデータから先頭のストアデータまでに対応するアドレスラッチに対応する比較器のみをイネーブルにするとしてもよい。このとき、部分的フラッシュすべきいくつかのストアデータのうちメモリに書き込まれたストアデータに対応するアドレスは比較対象にならなくなる。
この構成によれば、部分的フラッシュの対象データのうちメモリに書き込まれていないデータについてのみコヒーレンシを保証することができるので、書き込まれているのにストア動作をウェイトさせて不要なインタロックを発生させてしまうことはなくなり、必要以上にプロセッサの性能を劣化させることがない。
また、line14はld命令としたが、ldf命令であってもよい。この構成によれば、部分的フラッシュの対象データがすべてライトバックされたか否かを判定できる。
<実施の形態3>
実施の形態3では、部分的フラッシュ完了をチェックするロード命令(第2の命令)とフラッシュトリガーとなる命令(第1の命令)の間に、部分的フラッシュの対象データのそれぞれに対応するストアアドレス群と同じアドレスにデータをストアするストア命令(第3の命令と呼ぶ)を実行可能なように、バスコントローラが構成されている。これにより、フラッシュトリガーの発行によりチェック対象となった部分的フラッシュの対象データの書き込みが完了するまで、第3の命令の書き込みがウェイトされるからである。これにより第1の命令と第2の命令の間に第3の命令を記述することができるので、効率よくプログラムを記述できる。
そのため、実施の形態2との差異は、アドレスタグが、部分的フラッシュが完了してもクリアされずに、その後のldf命令の実行完了まで保持されて、ldf命令の実行完了によりクリアされる点である。もう1つの差異は、ストアアドレスもアドレス比較される点である。
図10は、実施の形態3におけるプロセッサ、デバイスおよびバスコントローラの構成を示すブロック図である。同図の構成は、実施の形態2で説明した図7の構成と比較して、バスコントローラ200の代わりにバスコントローラ300を備える点が異なる。バスコントローラ300は、バスコントローラ200と比較して、バッファ部210の代わりにバッファ部310を備える点が異なる。バッファ部310は、バッファ部210と比較して、アドレス比較部214の代わりにアドレス比較部314を備える点と、新たにウェイト回路302が追加された点と、メモリ制御部213の代わりにメモリ制御部313を備える点とが異なる。同じ符号の構成要素は同じなので説明を省略し、以下異なる点を中心に説明する。
アドレス比較部314は、アドレス比較部214と同様のロードアドレスの比較に加えて、ストア命令を実行中のプロセッサ1からのストアアドレスと、FIFO211に保持された先頭のストアデータから末尾のストアデータまでのそれぞれに対応するアドレスタグとを比較する。
ウェイト回路302は、アドレス比較部314による比較の結果、アドレスタグの何れかとストアアドレスとが一致するとき、メモリ制御部313に対してウェイト信号を発生する。これは、第1の命令の完了後でかつ第2の命令が完了していない場合に第3の命令のストアデータの書き込みを禁止するためである。つまり、第1の命令の完了後でかつ第2の命令が完了した後に、はじめて第3の命令のストアデータの書き込みを実行するためである。
メモリ制御部313は、メモリ制御部213と比較して、部分的フラッシュが完了してもアドレスタグをクリアしないで、その後の第2の命令(ldf命令)の実行が完了したときクリアする点と、ウェイト回路302からのウェイト信号を受けてバッファ部310からメモリ3への書き込みをウェイトする点である。
図11は、FIFO211およびアドレス比較部314の詳細な構成を示すブロック図である。同図の構成は、実施の形態2で説明した図8の構成と比較して、アドレス比較部214の代わりにアドレス比較部314を備える点が異なる。アドレス比較部314は、アドレス比較部214と比較して、ロードアドレスのみが入力される代わりにロードアドレスおよびストアアドレスが入力される点と、Dフリップフロップ32が追加された点とが異なる。同じ符号の構成要素は同じなので説明を省略し、以下異なる点を中心に説明する。
アドレス比較部314にはロードアドレスおよびストアアドレスが入力されるので、比較器25〜28は、ロードアドレスが入力された場合もストアアドレスが入力された場合も、アドレスタグと比較する。この比較は、部分的フラッシュ完了後も継続し、第2の命令が完了するまで行われる。第2の命令が完了すれば、アドレスタグがクリアされかつ比較結果が不一致となるから、比較も終了する。
Dフリップフロップ31は、プロセッサ1によるロード命令実行時の一致信号を保持する。Dフリップフロップ32は、プロセッサ1によるストア命令実行時の一致信号を保持し、メモリ制御部313に出力する。
図12は、プログラム例4を示す図である。この動作例をケース1とケース2について説明する。
<ケース1>
line6のstf命令の実行により、最後にバッファに格納されたストアデータ(3)にフラッシュポインタがセットされる。同時に、ストアデータ(1)とストアデータ(2)とストアデータ(3)のアドレスがアドレスタグとして保持される。
line9のst命令の実行により、ストアデータ(4)がバッファに格納される。
line12のst命令の実行により、ストアデータ(5)がバッファに格納される。まだ、ストアデータ(6)はバッファに格納されていないものとする。このときフラッシュポインタはNULLでない。
line16のldf命令が実行されたとき、アドレスタグと、ldf命令のソースアドレスが一致する。そのために、ウェイト信号がアサートされ、ロードは完了しない。ストアデータ(3)がバッファ部からメモリ3に書き出されると、アドレスタグのアドレスがクリアされ、ウェイト信号が解除されてからロードが完了する。このように、ライト完了をチェックするロード命令とフラッシュトリガーとなる命令の間にストア命令を実行できる。なお、ldf命令の実行が完了するのと、アドレスタグのクリアは同時に行われていることになる。
<ケース2>
line16のldf命令が実行されるまでに、ストアデータ(1)、ストアデータ(2)がライトバックされたものとする。ストアデータ(3)がライトバックされようとするとき、アドレスタグに格納されたアドレスと一致する。このとき、フラッシュポインタはバッファ0を指し示している。バスコントローラはストアデータ(3)をライトバックし、フラッシュポインタをNULLとする。
続いて、ストアデータ(4)、ストアデータ(5)がライトバックされる。ストアデータ(6)がライトバックされようとするとき、アドレスタグに格納されたアドレスと一致する。このとき、フラッシュポインタがNULLを指し示している。バスコントローラはストアデータ(6)のライトバックをウェイトする。
さらに、line16のldf命令でアドレスタグがクリアされる。これにより、アドレスタグに格納されたアドレスと不一致し、ウェイトされていたストアデータ(6)のライトバックが実行される。つまり、line16のldf命令では、ストアデータ(2)0x0がロードされることになり、line17のld命令では、ストアデータ(6)0x4がロードされる。
このように、<ケース1>では、stf命令をトリガーとして、その時点でバッファに格納されているデータとアクセスアドレス群を把握し、前記アクセスアドレス群とldf命令のアクセスアドレスが一致するときに、フラッシュポインタがNULLを指し示していないので、前記データがライトバックされるまでldf命令の完了をウェイトさせる。なお、line15とline16の間にld命令’が追加配置された場合を例にとって説明すると、前記アクセスアドレス群とこのld命令’のアクセスアドレスが一致するときに、前記データがライトバックされるまでld命令’の完了をウェイトさせることができる。
また、<ケース2>では、第1の命令の後に発行されたst命令のデータはバッファに格納され、前記アクセスアドレス群とst命令のアクセスアドレスが一致しなければライトバックされ、もし一致しかつフラッシュポインタがNULLを指し示していなければライトバックされ、もし一致しかつフラッシュポインタNULLを指し示していれば、ldf命令が完了するまでは、ライトバックされない。
これにより、ライト完了をチェックするロード命令とフラッシュトリガーとなる命令の間に、ライトバック対象となる命令と同一アドレスにストアする命令を配置することが可能となり、より有効にプログラムを記述できる。
なお、実施の形態3では、line16をldf命令とし、そのロードアドレスをアドレスバッファに保持されたアドレスと同一のアドレスとしていた。
この変形例として、line16をld命令とし、そのロードアドレスをアドレスバッファに保持されたアドレスと同一のアドレスにしてもよい。この場合は、プロセッサから出力されるロードアドレスとアドレスバッファに保持された何れかのアドレスとが一致することで、アドレスバッファがクリアされる。
また、line16をldf命令とし、そのロードアドレスをアドレスバッファに保持されたアドレスと異なるアドレスにしてもよい。この場合は、ldf命令という特定の命令に応じてアドレスバッファがクリアされる。このように、第2の命令をアドレスバッファに保持されたアドレスを対象とするロード命令以外の命令とすることもでき、プログラムの自由度が向上する。
<実施の形態4>
実施の形態4のバスコントローラは、複数のバッファ部を有し、stf命令をトリガーとして、その時点でバッファに格納されているデータを把握してバッファ部を切り替え、前記データのみがスレーブデバイスに書き込みされるまでldf命令の完了をウェイトさせ、stf命令に後続するst命令のデータは切替えられたバッファ群に格納され、ldf命令が完了するまえにスレーブデバイスに書き込まれるように構成されている。
図13は、実施の形態4におけるプロセッサ、デバイスおよびバスコントローラの構成を示すブロック図である。同図の構成は、実施の形態3で説明した図10の構成と比較して、バスコントローラ300の代わりにバスコントローラ400を備える点が異なる。バスコントローラ400は、バスコントローラ300と比較して、バッファ部310の代わりにバッファ部410aおよびバッファ部410bを備える点と、新たにカレントポインタ411およびセレクタ412を備える点とが異なる。同じ符号の構成要素は同じなので説明を省略し、以下異なる点を中心に説明する。
便宜上、バッファ部410aをバッファAと、バッファ部410bをバッファBと呼ぶ。
バッファ部410a、410bは、それぞれバッファ部310と同様の構成である。
カレントポインタ411は、バッファ部410a、410bの一方を指すポインタを保持する。カレントポインタが指し示すバッファ部にはプロセッサ1からのストアデータを保持する。フラッシュトリガーが発生すると、カレントポインタが指し示すバッファ部にフラッシュポインタがセットされ、その後カレントポインタが切り替えられる。
セレクタ412は、バッファ部410a、410bからの出力データのうち、フラッシュポインタがNULLでない方の出力データを選択し、両方のフラッシュポインタがNULLである場合には、カレントポインタ411が指す方の出力データを選択する。
図14は、バッファ部410aと410bの動作および切り替えを示す説明図である。バスコントローラ400は、(a)バッファリングするバッファの選択処理、(b)フラッシュトリガーが発生したときの切り替え処理、(c)ライトバックデータの選択処理、(d)フラッシュトリガーが発生しない場合の選択処理を以下のように行う。
(a)プロセッサ1からのストアデータをバッファリングするバッファの選択処理として、バスコントローラ400は、プロセッサ1からのストアデータを保持するバッファ部を、カレントポインタ411によって指し示す。つまり、カレントポインタ411が指し示すバッファ部にプロセッサ1からのストアデータがバッファリングされる。
(b)フラッシュトリガーが発生したとき、バスコントローラ400は、フラッシュポインタをカレントポインタが指し示すバッファ部のフラッシュポインタにセットし、カレントポインタを切り替える。
(c)ライトバックデータの選択処理として、バスコントローラ400は、フラッシュポインタがNULLでない場合、フラッシュポインタがNULLになるまでは、プレビアスポインタ(カレントポインタが指し示していないバッファを指し示す)にバッファリングされたストアデータをライトバックするように、各メモリ制御部313とセレクタ412を制御する。
フラッシュポインタがNULLの場合、カレントポインタが指し示しているバッファにバッファリングされたストアデータをライトバックするように、各メモリ制御部213とセレクタ412を制御する。
(d)フラッシュトリガーが発生しない場合には、バスコントローラ400は、カレントポインタが指し示すバッファにストアデータがバッファリングされ、カレントポインタが指し示しているバッファからライトバックするように、各メモリ制御部313とセレクタ412を制御する。
次に、図6に示したプログラム2を使って動作例を説明する。カレントポインタはバッファAを指し示しているものとする。
line3のstf命令の実行により、最後にバッファに格納されたストアデータ(3)にフラッシュポインタがセットされる。このとき、バッファAにストアデータ(1)、ストアデータ(2)、ストアデータ(3)が格納されている。
この状態で、カレントポインタはバッファBに切り替わる。
line6のst命令の実行により、ストアデータ(4)がバッファBに格納される。
line9のst命令の実行により、ストアデータ(5)がバッファBに格納される。
line10のldf命令が実行されたときストアデータ(3)はバッファAの先頭から2段目に格納されている。このときウェイト信号がアサートされているためロードは完了しない。
ストアデータ(3)がバッファAの先頭から書き出されると、line10のldf命令によるロードが完了する。
このように、ライト完了をチェックするロード命令(line10のldf命令)とフラッシュトリガーとなる命令(line3のstf命令)の間にストア命令(line6,line9)を実行することができる。このストア命令でストアされるストアデータ(4)、ストアデータ(5)は、フラッシュトリガーにより切り替え後のカレントバッファBにバッファリングされる。
これにより、複数のバッファ群を有するプロセッサのバスコントローラであっても、フラッシュトリガーでバッファ群を切り替えながら、フラッシュしたいストアデータを限定することができる。フラッシュトリガーが発生した後、バッファリングできるストアデータの容量を、1バッファ群決まって確保できる。
次いで、実施の形態4の変形例について説明する。
この変形例では、複数のバッファ群を有するプロセッサのバスコントローラであって、stf命令をトリガーとして、その時点でバッファに格納されているデータとアクセスアドレスを把握し、バッファ群を切替えし、前記データがスレーブデバイスに書き込みされるまでldf命令の完了をウェイトさせ、stf命令の後に発行されたst命令のデータは切替えられたバッファ群に格納され、前記アドレスとst命令のアクセスアドレスが一致しなければ、ldf命令が完了するまえにスレーブデバイスに書き込みされ、もし一致しかつフラッシュポインタがNULLを指し示していなければ書き込みされ、もし一致しかつフラッシュポインタNULLを指し示していれば、ldf命令が完了するまでは書き込みされないように構成される。
そのため、実施の形態4の前半で説明した処理に追加してアドレスの比較と、アドレスタグのクリアが次のように行われる。
アドレスの比較は、プレビアスポインタが指し示すアドレスタグから一致するアドレスを比較、検索する処理である。ここで、フラッシュポインタがセットされたバッファはポインタの切り替えによってプレビアスポインタが指し示している。
アドレスタグのクリアは、プレビアスポインタが指し示すアドレスタグをクリアする処理である。
次いで、図12に示したプログラム例4を使って動作例をケース1とケース2に分けて説明する。
<ケース1>
今、カレントポインタはバッファAを指し示しているものとする。
line6のstf命令の実行により、最後にバッファに格納されたストアデータ(3)にフラッシュポインタがセットされる。同時に、ストアデータ(1)とストアデータ(2)とストアデータ(3)のアドレスがアドレスタグに保持される。このstf命令によるフラッシュトリガーによって、カレントポインタはバッファBに切り替わる。
line9のst命令の実行により、ストアデータ(4)がバッファBに格納される。
line12のst命令の実行により、ストアデータ(5)がバッファBに格納される。
まだ、ストアデータ(6)はバッファに格納されていないものとする。このときフラッシュポインタはNULLでない。
line16のldf命令が実行されたとき、アドレスタグと、ldf命令のソースアドレスが一致する。そのために、ウェイト信号がアサートされ、ロードは完了しない。さらに、ストアデータ(3)がバッファAの先頭から書き出されると、アドレスタグがクリアされ、ウェイト信号が解除されてからロードが完了する。このように、ライト完了をチェックするロード命令(第2の命令)とフラッシュトリガーとなる命令(第1の命令)の間にストア命令を実行することができる。なお、ldf命令の実行が完了するのと、アドレスタグのクリアは同時に行われていることになる。
<ケース2>
line16のldf命令が実行されるまでに、ストアデータ(1)、ストアデータ(2)がバッファAからライトバックされたものとする。さらに、バッファAからストアデータ(3)がライトバックされようとするとき、プレビアスポインタが指し示すバッファAのアドレスタグに格納されたアドレスと一致する。このとき、フラッシュポインタはバッファ0を指し示している。バスコントローラはストアデータ(3)をライトバックし、フラッシュポインタをNULLとする。フラッシュポインタがNULLとなるまでは、プレビアスポインタが指し示すバッファAからのライトバックが発生する。
続いて、カレントポインタが指し示すバッファBからストアデータ(4)、ストアデータ(5)がライトバックされる。ストアデータ(6)がライトバックされようとするとき、プレビアスポインタが指し示すバッファAのアドレスタグに格納されたアドレスと一致する。このとき、フラッシュポインタがNULLを指し示している。バスコントローラはストアデータ(6)のライトバックをウェイトする。
さらに、line16のldf命令でプレビアスポインタが指し示すバッファAのアドレスタグがクリアされる。アドレスタグに格納されたアドレスと不一致し、ウェイトされていたストアデータ(6)のライトバックが実行される。
これにより、複数のバッファ群を有するプロセッサのバスコントローラであっても、フラッシュトリガーでバッファ群を切り替えながら、アドレスタグによるアドレス比較処理ができる。フラッシュトリガーが発生した後、バッファリングできるストアデータの容量を、1バッファ群決まって確保できる。
なお、上記各実施の形態ではバスコントローラは、部分的フラッシュと全部フラッシュとを選択的に実行するように構成してもよい。その場合、プロセッサ1は2種類のフラッシュトリガーを出力し、バッファ部はフラッシュトリガーの種類に応じて部分的フラッシュと全部フラッシュとを選択的に実行すればよい。
本発明にかかるバスコントローラは、バッファを有し、レイテンシを隠蔽してプロセッサの実行性能を向上させるために有用である。
プロセッサとメモリとの間のバッファを備えたバスコントローラに関する。
プロセッサとスレーブデバイス間のアクセスレイテンシを隠蔽するために、バッファを備えた構成がある。このバッファにはプロセッサからスレーブデバイスへのストアデータが一時格納される。バッファからスレーブデバイスへのストアデータ転送は、プロセッサから制御されることなくプロセッサとは独立に実行される。
プロセッサがバッファに格納されたストアデータがスレーブデバイスに書き込みされたことを確認する方法として、プロセッサがスレーブデバイスをリードする方法がある。すなわち、プロセッサにより特定のリード命令が実行されることにより、バッファは保持しているストアデータを一括してフラッシュする。ここでいうフラッシュとは、バッファに格納されたデータをすべてスレーブデバイスに書き込むことである。
図15に従来技術におけるプロセッサとスレーブデバイスの間にバッファを備えたバスコントローラの構成を示す。このバスコントローラ76は、クロスバスイッチ77とバッファ78とを備え、マスターデバイスとなるプロセッサ71およびDMAC72と、スレーブデバイスとなるメモリ73、デバイス74およびデバイス75との間でバス制御および、デバイス73へのストアデータのバッファリングを制御する。
同図において、プロセッサ71とDMAC72をマスターとし、スレーブデバイスは3つある。マスターとスレーブをバス接続するためのクロスバスイッチ77があり、その接続はバスコントローラ76が制御している。プロセッサ71がメモリ73にストアするデータはバッファ78にバッファリングされる。上記フラッシュのためのフラッシュトリガーはロード命令により生成される。プロセッサはメモリ73のデータについてのコヒーレンシが保証されていることをロード命令の完了により確認し、確認後DMAを起動するためのトリガーをDMACにアサートする。
プログラムの例をプログラム1に示す。
<プログラム1>
line1: mov r0,0x0
line2: mov a0,0x0
line3: st @a0,r0
line4: ld r15,@a0
line3ではプロセッサ71がデバイス73にデータをストアしている。このデータはバッファ78に一時的に保持される。line4ではプロセッサがデバイス73からデータをロードする。これによりバッファ78はフラッシュを開始する。フラッシュが完了するまでプロセッサ71はインタロックし、フラッシュ完了後にロードに対する応答を受ける。これによりプロセッサ71はline3の書き込みの完了を確認できる、つまりコヒーレンシが保証される。
従来のコヒーレンシ保証では、高速のレジスタをバスに設けてリードを高速化している(例えば、特許文献1参照)。また、リードを2回の命令に分けて実行し、1回目の命令から2回目の命令までプロセッサが命令を実行できるようにしているものもある(例えば、特許文献2参照)。
特許第2917659号公報 特開平4−123241号公報
しかしながら、上記従来技術によれば、フラッシュ完了の確認を高速化しているものの、フラッシュに要する時間がかかるという問題がある。フラッシュに要する時間と、フラッシュ確認のためのリードのレイテンシとに応じた分だけ、プロセッサの性能が劣化する。
フラッシュに要する時間は、バッファの容量にも依存し、最大ではバッファの容量分のデータを書き戻す時間がかかることになる。
具体的には、コヒーレンシ保証のために、リード命令によりバッファを一括してフラッシュする間、プロセッサは後続するストア命令を実行しないようにすれば、フラッシュすべきデータ量は減るが、後続するストア命令の実行を待たせることになる。後続するストア命令を実行するのであれば、実行したストア命令のデータを含みフラッシュされるので、フラッシュに要する時間が長くなってしまう。つまり、スレーブデバイスへの書き込みを早く確認する必要がある場合、ストア命令を実行できなくなる。例えば、書き込み完了を確認した後、スレーブデバイスをソースとするDMA転送を開始する場合には、フラッシュに要する時間は短い方が望ましい。
本発明は、トリガー信号からフラッシュ完了までの時間を短縮して、プロセッサの性能劣化を回避するバスコントローラを提供することを目的とする。
本発明のバスコントローラは、プロセッサとメモリとの間のバスをコントロールするバスコントローラであって、プロセッサからメモリへのストアデータを先入れ先出し式に一時的に保持するバッファ手段と、前記バッファ手段の部分的フラッシュを指示するトリガー信号を受け付ける受付手段と、前記トリガー信号を受けた時点でバッファ手段に保持されている末尾のデータを指すポインタを保持するポインタ保持手段と、前記トリガー信号に応じて、前記バッファ手段に保持されているデータのうち先頭データから前記ポインタが指すデータまでをメモリに書き込むことによって前記バッファ手段を部分的にフラッシュする書き込み手段と、前記書き込み手段によって、前記部分的フラッシュが完了するまで、プロセッサにより実行される特定のアクセス命令に対してウェイト信号を発生するウェイト発生手段とを備える。
この構成によれば、バッファ手段が空になるまで全部のデータをフラッシュしないで、フラッシュすべきデータ(トリガー信号を受けた時点のデータまで)を部分的にフラッシュするので、トリガー信号からフラッシュ完了までの時間を短縮することできる。これにより、プロセッサの性能劣化を回避することができる。
さらに、前記ポインタが指すデータより後段のバッファ領域にストアデータを保持させることができるので、プロセッサは部分的フラッシュが完了する前に後続するストア命令を実行できる。その結果、プロセッサの処理効率を向上させることができる。
ここで、前記受付手段は、前記メモリをアクセスする命令以外の命令の実行時にプロセッサから出力される前記トリガー信号を受け付けるようにしてもよい。
この構成によれば、前記メモリをアクセスする命令以外の命令、例えば、他のデバイスをアクセスする命令や、トリガー信号を発生する専用命令などによって、より少ないレイテンシでトリガー信号を出力することができる。
ここで、前記受付手段は、前記プロセッサにおける部分的フラッシュ付きストア命令の実行時にプロセッサから出力される前記トリガー信号を受け付けるようにしてもよい。
この構成によれば、上記のストア命令と同時にトリガー信号が発行され、当該ストア命令のデータのコヒーレンシを保証することができる。
ここで、前記特定のアクセス命令は、前記メモリとは異なるデバイスをアクセスする命令であってもよい。
この構成によれば、前記メモリとは異なるデバイス、例えば、メモリよりもレイテンシが少ないデバイスや、専用のデバイスなどによってより少ないレイテンシで、プロセッサはフラッシュの完了を確認することができる。
ここで、前記特定のアクセス命令は、ロード命令であってもよい。
この構成によれば、前記メモリをアクセスする命令と、フラッシュ完了の確認とを兼用することができる。例えば、ロード命令が完了したことをプロセッサが確認してから、他のマスター(DMAC等)を起動するといった使い方ができる。
ここで、前記バッファ手段は、プロセッサからメモリへのストアデータを先入れ先出し式に一時的に保持するデータバッファと、前記ストアデータに対応するアドレスを保持するアドレスバッファと、プロセッサから出力されるロードアドレスとアドレスバッファに保持されたアドレスとを比較する比較手段とを備え、前記ウェイト発生手段は、比較手段による比較の結果、ロードアドレスとアドレスバッファに保持されたアドレスとが一致するとき、前記ウェイト信号を発生するようにしてもよい。
この構成によれば、後続するロード命令とアドレスが一致するストアデータに限定して、ウェイト信号を発生させることができる。
ここで、前記アドレスバッファは、前記トリガー信号を受けた時点においてバッファ手段に保持されている先頭データから末尾のデータまでのそれぞれに対応するアドレスを保持し、前記比較手段は、アドレスバッファに保持された先頭データから末尾のデータまでのそれぞれに対応するアドレスと、プロセッサから出力されるロードアドレスとを比較するようにしてもよい。
この構成によれば、前記トリガー信号を受けた時点でバッファ手段に保持されている先頭データから末尾のデータまでのコヒーレンシをより確実に保証することができる。
ここで、前記アドレスバッファは、前記トリガー信号を受けた時点においてバッファ手段に保持されている先頭データから末尾のデータまでのそれぞれに対応するアドレスを保持し、前記比較手段は、前記部分的フラッシュの対象データのうちメモリに書き込まれたデータのそれぞれに対応するアドレスと、プロセッサから出力されるロードアドレスとを比較しないで、前記部分的フラッシュの対象データのうちメモリに書き込まれていないデータのそれぞれに対応するアドレスと、プロセッサから出力されるロードアドレスとを比較するようにしてもよい。
この構成によれば、部分的フラッシュの対象データのうちメモリに書き込まれていないデータについてコヒーレンシを保証することができるので、書き込まれているのにロード動作をウェイトさせてしまうことはなくなり、必要以上にプロセッサの性能を劣化させることがない。
ここで、前記比較手段は、さらに、プロセッサから出力されるストアアドレスとアドレスバッファに保持されたアドレスとを比較し、前記ウェイト発生手段は、さらに、比較手段による比較の結果、前記ストアアドレスとアドレスバッファに保持された何れかのアドレスとが一致するとき、前記部分的フラッシュが完了している状態であれば、一致したアドレスに対応するデータのデータメモリからメモリへの書き込みをウェイトさせ、その後の比較手段による比較の結果、プロセッサから出力されるロードアドレスとアドレスバッファに保持された何れかのアドレスとが一致するとき、アドレスバッファをクリアするようにしてもよい。
この構成によれば、データバッファからメモリへの書き込み完了をチェックするためのロード命令(第2の命令と呼ぶ。)と、トリガー信号を発行したストア命令(第1の命令と呼ぶ。)との間に、部分的フラッシュの対象データと同一アドレスにストアする命令(第3の命令と呼ぶ。)を配置することが可能となる。なぜなら、部分的フラッシュが完了するまで、第3の命令の書き込みがウェイトされるからである。これにより第1の命令と第2の命令の間に第3の命令を記述することができるので、効率よくプログラムを記述できる。
ここで、前記比較手段は、さらに、プロセッサから出力されるストアアドレスとアドレスバッファに保持されたアドレスとを比較し、前記ウェイト発生手段は、さらに、比較手段による比較の結果、前記ストアアドレスとアドレスバッファに保持された何れかのアドレスとが一致するとき、前記部分的フラッシュが完了している状態であれば、一致したアドレスに対応するデータのデータメモリからメモリへの書き込みをウェイトさせ、前記特定のアクセス命令が完了したとき、アドレスバッファをクリアするようにしてもよい。
この構成によれば、第1の命令と第2の命令の間に第3の命令を記述することができるので、効率よくプログラムを記述できる。さらに、第2の命令をアドレスバッファに保持されていないアドレスをロードアドレスとするロード命令にすることもでき、プログラムの自由度が向上する。
ここで、前記バスコントローラは、さらに、前記バッファ手段を第1バッファ手段とし、前記バッファ手段と同一構成の第2バッファ手段と、第1バッファ手段および第2バッファ手段をカレントとして指示する指示手段と、トリガー信号に応じて指示手段のカレントを切り替える切替手段とを備え、前記書き込み手段およびウェイト発生手段は、カレントでないバッファ手段を対象とし、カレントバッファ手段は、プロセッサからのストアデータを保持するようにしてもよい。
この構成によれば、複数のバッファ手段を有するバスコントローラであっても、トリガー信号でバッファ手段を切り替えながら、部分的フラッシュをすることができる。また、トリガー信号が発生した後、バッファリングできるストアデータの容量を、少なくとも1バッファ手段分を確保することができる。
本発明では、バッファのフラッシュ(書き込み)とリードのレイテンシを隠蔽して、プロセッサの実行性能を向上させることができる。
また、コヒーレンシ保証のために、バッファを一括してフラッシュする間、プロセッサはストア命令を実行することが可能であり、同時に、必要最小限のデータをフラッシュ実行できるので、スレーブデバイスへの書き込み完了を早く確認できる。
<実施の形態1>
実施の形態1におけるバスコントローラは、バッファ中の全データをフラッシュする代わりに、フラッシュすべきデータ(トリガー信号を受けた時点のデータまで)を部分的にフラッシュする。これにより、トリガー信号からフラッシュ完了までの時間を短縮することできる。
図1は、本発明の実施の形態1におけるプロセッサ、デバイスおよびバスコントローラの構成を示すブロック図である。同図において、プロセッサ1とDMAC(Direct Memory Access Controller)2はマスターデバイスとして、スレーブデバイスであるメモリ3、デバイス4、5にバスを介してアクセスする。バスコントローラ100は、クロスバスイッチ101、ウェイト回路102、バッファ部110を備える。また、バッファ部110は、FIFO111、フラッシュポインタ112、メモリ制御部113を備える。
プロセッサ1は、第1の命令の実行時に、バッファ部110に部分的フラッシュを指示するフラッシュトリガー信号を出力する。ここで、部分的フラッシュは、FIFO111に保持されているデータのうち先頭データから、フラッシュトリガーが出力されたデータまでをFIFO111からメモリ3に書き込むことをいう。また、第1の命令は、フラッシュトリガーを発生させるオペレーションのみの命令、部分的フラッシュ付きストア命令(フラッシュトリガー付きストア命令)などでよい。
マスターデバイスおよびスレーブデバイスに接続されるバスは、クロスバスイッチ101で接続されており、バッファ部110はプロセッサ1とメモリ3の間に設けられている。データ転送はバスコントローラ100が制御している。ただし、DMAC2によるDMA転送では、FIFO111を経由しないで直接3にアクセスされる。
FIFO111は、プロセッサ1からメモリ3へのストアデータを先入れ先出し式に一時的に保持する。例えば、FIFO111は、出力側をバッファ4、入力側をバッファ1とする4つのバッファからなる4段構成である。
フラッシュポインタ(FP)112は、トリガー信号を受けた時点でFIFO111に保持されている末尾のデータを指すポインタを保持するレジスタである。フラッシュポインタ112は、プロセッサ1からのフラッシュトリガーでセットされ、セットされたデータが書き出されるまで当該データとともに移動する。セットされたデータが書き出されるとフラッシュポインタ112は、どのバッファも指し示さないポジションをとる(これを、便宜上ヌル(NULL)と呼ぶ。)。例えば、FIFO111が4段構成の場合に出力側をバッファ4、入力側をバッファ1とした場合、フラッシュポインタ112は4〜1までの値を取り得る。この値はメモリ3への書き込みと共にデクリメントされ、フラッシュ完了後0(ヌル)になる。
メモリ制御部113は、通常時(フラッシュポインタ112がヌルのとき)は、バスの空きサイクルを利用して(つまりサイクルスチールにより)FIFO111からメモリ3へデータを書き込む。また、メモリ制御部113は、プロセッサ1からの出力されるフラッシュトリガー信号を受け付け、フラッシュポインタ112をセットし、FIFO111に保持されているデータのうち先頭データからフラッシュポインタ112が指すデータまでをメモリ3に書き込むことによって、FIFO111からメモリ3に部分的にフラッシュする。このとき、メモリ制御部113は、フラッシュポインタ112がヌルになるまで、つまり部分的フラッシュが完了するまで、ウェイト回路102に対してウェイトの発生を指示するウェイト指示信号Wを有効にする。
ウェイト回路102は、メモリ制御部113から出力されたウェイト指示信号Wが有効である場合、プロセッサ1により実行される特定のアクセス命令に対してウェイト信号を発生する。特定のアクセス命令は、プロセッサ1が部分的フラッシュの完了を確認するための命令(以下第2の命令と呼ぶ。)をいい、本実施形態ではデバイス4に対するリードアクセス命令とする。デバイス4は、メモリ3とは異なるI/Oやメモリでよい、あるいは専用のI/Oであってもよい。
図2は、第1の命令が実行されたときのFIFO111の様子を示す図である。
プロセッサ1が第1の命令を実行すると、フラッシュトリガーが有効になる。同図では、FIFO111に既にストアデータA、B、Cが保持されているので、メモリ制御部113は、フラッシュポインタ112を、末尾のストアデータCを指すようにセットし、部分的フラッシュを開始し、ウェイト指示信号Wを有効にする。
続いて、メモリ制御部113によってストアデータAがメモリ3に書き込まれると図3のように、フラッシュポインタ112はストアデータCと共に移動する。図3では、プロセッサ1がさらに2つのストア命令を実行し、ストアデータD、EがFIFO111に格納されている。この状態で、プロセッサ1が第2の命令の実行により、デバイス4をリードすると、ウェイト回路102はリードの完了をウェイトさせる。
さらに、メモリ制御部113によってストアデータBがメモリ3に書き込まれると図4のように、フラッシュポインタ112はストアデータCと共に移動する。図4の状態でも、ウェイト指示信号Wは依然有効である。
次いで、メモリ制御部113によってストアデータCがメモリ3に書き込まれると図5のように、フラッシュポインタ112はヌルになる。これにより、ウェイト指示信号Wは無効になる。これにより、プロセッサ1からデバイス4へのリードに対するウェイトが解消される。なお、リードの完了をウェイトさせるウェイト信号は、FIFO111に格納されたデータのライトアドレスに関係ない。
図6は、プログラム例2を示す図である。同図においてr0,r1,r2,r15はデータレジスタである。a0,a1,a2はアドレスレジスタである。movはレジスタへのデータ転送命令である。st命令はアドレスレジスタが示すアドレスにデータレジスタからデータを転送する命令である。ld命令はアドレスレジスタが示すアドレスのメモリデータをレジスタに転送する命令である。
また、stf命令は、第1の命令の1つとして、デバイス4にストアするとともに、フラッシュトリガーを生成する命令であり、最後にFIFO111に格納されたデータ(末尾のデータ)にフラッシュポインタ112をセットさせる。ldf命令は、第2の命令の1つとして、デバイス4からロードする命令であり、ウェイト指示信号Wがアサートされているときリード完了がウェイトされる。ldf命令が完了すれば、stf命令より前に実行されたライト命令の完了を保証することができる。
プログラム例2では、line1より直前のプログラムにより既にストアデータ(3)がFIFO111に格納されているものとする。以下、動作例をケース1とケース2に分けて説明する。
<ケース1>
line3のstf命令の実行により、最後にFIFO111に最後に格納されたストアデータ(3)にフラッシュポインタがセットされる。
line6のst命令の実行により、ストアデータ(4)がバッファに格納される。
ストアデータ(5)がバッファに格納される。
line10のldf命令が実行されたときストアデータ(3)はバッファ1に格納されている。そのため、ウェイト信号がアサートされロードは完了しない。ストアデータ(3)がバッファ0から書き出されてからロードが完了する。ライト完了をチェックするロード命令とフラッシュトリガーとなる命令の間にストア命令(line6,line9)を実行できる。このストア命令でストアされるストアデータ(4)、ストアデータ(5)は部分的フラッシュの対象外となるので、プロセッサの性能を劣化させない。
<ケース2>
また、line10のldf命令が実行されたとき、把握されたデータがすべてライトバックされていれば、ロード命令はウェイトされない。ストアデータ(4)、ストアデータ(5)はライトバックされていても良い。
さらに、実施の形態1の変形例について説明する。
(1)stf命令は、同一のスレーブにアクセスする命令であっても実施できる。このとき、stf命令でストアされるデータはフラッシュの対象としないように構成しても、フラッシュの対象とするように構成してもよい。
(2)第1の命令(フラッシュトリガーを生成する命令)はストア命令であるとしたが、ストアの操作に限定するものではない。
(3)stf命令という命令を実行したときにフラッシュトリガーがアサートされるものとしたが、特定のアドレスに対するストア命令(st)を実行したときに、フラッシュトリガーがアサートされるとしても良い。例えばデバイス4の特定アドレスにアクセスしたときにフラッシュトリガーがアサートされるものとしてもよい。この場合、特定のアドレスをデコードする機構を備え、特定のアドレスにアクセスしたときにフラッシュトリガーがアサートされることとなる。ldf命令にも同じことが言える。特定のアドレスにアクセスしたときにウェイト制御が施されるものとしてもよい。
(4)ldf命令はバッファリングしたデータの書き込み先であるスレーブデバイスと異なるスレーブデバイスにアクセスする命令としたが、同一のスレーブデバイスにアクセスする命令であっても良い。スレーブを限定するものではなく、レイテンシーの短いスレーブに設定することが可能である。
(5)第2の命令はロード命令であるとしたが、ロードの操作に限定するものではない。ウェイト信号がアサートされている間、プロセッサをインタロックすることで操作をウェイトさせる機構があれば良い。
<実施の形態2>
実施の形態2では、stf命令はバッファリングの対象となるメモリ3に対して実行される。また、部分的フラッシュ中にメモリ3へのld命令が実行されたとき、ウェイトされることによってコヒーレンシが保証される。
図7は、実施の形態2におけるプロセッサ、デバイスおよびバスコントローラの構成を示すブロック図である。同図の構成は、実施の形態1で説明した図1の構成と比較してバスコントローラ100の代わりにバスコントローラ200を備える点と、ウェイト回路102が削除された点とが異なっている。図1と同じ符号の構成要素は同じなので説明を省略し、以下異なる点を中心に説明する。
バスコントローラ200は、バスコントローラ100と比較して、バッファ部110の代わりにバッファ部210を備える点が異なっている。
バッファ部210は、フラッシュポインタ112、FIFO211、アドレス比較部214およびウェイト回路202を備える。
FIFO211は、FIFO111と同様にストアデータを保持することに加えて、アドレスタグを保持する。FIFO211は、フラッシュトリガーを受けた時点においてFIFO211に保持されている先頭のストアデータから末尾のストアデータまでのそれぞれに対応するアドレスをアドレスタグとして保持し、末尾のストアデータがメモリ3に書き出されるまで保持を継続する。つまり、アドレスタグは、フラッシュトリガーから部分的フラッシュが完了するまで保持を継続する。例えば、ストアデータの書き込み先アドレスは従来と同様にバッファ部内部に保持されているが、アドレスタグはフラッシュトリガーがアサートされた時点の書き込み先アドレスがFIFO211内にコピーされる。
アドレス比較部214は、FIFO211に保持された先頭のストアデータから末尾のストアデータまでのそれぞれに対応するアドレスタグと、ロード命令を実行中のプロセッサから現に出力されているロードアドレスとを比較する。
ウェイト回路202は、ウェイト回路102とは異なり、アドレス比較部214による比較の結果、アドレスタグの何れかとロードアドレスとが一致するとき、プロセッサ1に対してウェイト信号を発生する。
図8は、FIFO211およびアドレス比較部214の詳細な構成を示すブロック図である。FIFO211は、データラッチ21d〜24dと、アドレスラッチ21a〜24aとを備える。
データラッチ21d〜24dは、プロセッサ1からメモリ3へのストアデータを先入れ先出し式に保持するデータバッファ回路を構成する。
アドレスラッチ21a〜24aは、上記のアドレスタグを保持するラッチ回路を構成する。
アドレス比較部214は、比較器25〜28、判定部29、論理和30、Dフリップフロップ31を備える。
比較器25は、アドレスラッチ21aのアドレスタグと、ロード命令を実行中のプロセッサから出力されているロードアドレスとを比較する。比較器26〜28は、それぞれアドレスラッチ22a〜24aのアドレスタグついて比較すること以外は、比較器25と同様である。ただし、比較器25〜28は、判定部29からのイネーブル信号がアサートされたときのみ比較動作する。
判定部29は、比較器25〜28のうち、フラッシュトリガーを受けた時点におけるフラッシュポインタ112が指すストアデータから先頭のストアデータまでに対応するアドレスラッチに対応する比較器をイネーブルにする。判定部29によりイネーブルにされる比較器は、部分的フラッシュが完了するまで継続される。例えば、フラッシュトリガーを受けた時点におけるフラッシュポインタ112がデータラッチ23dのストアデータを指していれば、判定部29は、部分的フラッシュが完了するまで、比較器25〜比較器27をイネーブルにする。
論理和30は、比較器25〜比較器28の比較結果の論理和をとる。つまり、比較器25〜比較器28のうち、判定部29によりイネーブルにされた比較器の1つが一致すれば、一致信号を出力する。
Dフリップフロップ31は、論理和30からの一致信号をロードサイクルにおいて保持し、ウェイト回路202に出力する。Dフリップフロップ31からの一致信号を受けてウェイト回路202は、ロード命令の実行に対してウェイト信号をプロセッサ1に出力する。
図9は、プログラム例3を示す図である。この動作例をケース1とケース2に分けて説明する。
<ケース1>
line6のstf命令の実行により、最後にバッファに格納されたストアデータ(3)にフラッシュポインタがセットされる。同時に、ストアデータ(1)とストアデータ(2)とストアデータ(3)のアドレスがアドレスタグとして保持される。
line9のst命令の実行により、ストアデータ(4)がバッファに格納される。
line12のst命令の実行により、ストアデータ(5)がバッファに格納される。
line13のld命令が実行されたとき、アドレスタグ、ld命令のソースアドレスが一致しないのでld命令は実行される。
line14のld命令が実行されたとき、ストアデータ(2)に対応したアドレスタグと、ld命令のソースアドレスが一致する。このとき、ウェイト信号がアサートされ、ロードは完了しない。ストアデータ(3)がバッファ0から書き出されてから、アドレスタグがクリアされる。アドレスのクリアに伴って、ウェイト信号が解除されロードが完了する。このように、ライト完了をチェックするロード命令(第2の命令)とフラッシュトリガーとなる命令(第1の命令)の間にストア命令を実行できる。さらに、line13のld命令は実行され、line14のld命令がウェイトされたように、この構成によれば、後続するロード命令のロードアドレスと部分的フラッシュの対象であるストアデータのストアアドレスが一致する場合に限り、ウェイト信号を発生させることができる。
<ケース2>
line14のld命令が実行されたとき、ストアデータがすべてライトバックされていれば、ロード命令はウェイトされない。このとき、ストアデータ(4)、ストアデータ(5)はライトバックされていても良い。
このように実施の形態2では、stf命令をトリガーとして、その時点でバッファに格納
されているデータとアクセスアドレスをアドレスタグにより把握し、前記アドレスとld命令のアクセスアドレスが一致するときにld命令の実行をウェイトさせることによりコヒーレンシを保証している。
さらに、実施の形態2の変形例について説明する。判定部29は、フラッシュポインタ112が指し示すストアデータから先頭のストアデータまでに対応するアドレスラッチに対応する比較器のみをイネーブルにするとしてもよい。このとき、部分的フラッシュすべきいくつかのストアデータのうちメモリに書き込まれたストアデータに対応するアドレスは比較対象にならなくなる。
この構成によれば、部分的フラッシュの対象データのうちメモリに書き込まれていないデータについてのみコヒーレンシを保証することができるので、書き込まれているのにストア動作をウェイトさせて不要なインタロックを発生させてしまうことはなくなり、必要以上にプロセッサの性能を劣化させることがない。
また、line14はld命令としたが、ldf命令であってもよい。この構成によれば、部分的フラッシュの対象データがすべてライトバックされたか否かを判定できる。
<実施の形態3>
実施の形態3では、部分的フラッシュ完了をチェックするロード命令(第2の命令)とフラッシュトリガーとなる命令(第1の命令)の間に、部分的フラッシュの対象データのそれぞれに対応するストアアドレス群と同じアドレスにデータをストアするストア命令(第3の命令と呼ぶ。)を実行可能なように、バスコントローラが構成されている。これにより、フラッシュトリガーの発行によりチェック対象となった部分的フラッシュの対象データの書き込みが完了するまで、第3の命令の書き込みがウェイトされるからである。これにより第1の命令と第2の命令の間に第3の命令を記述することができるので、効率よくプログラムを記述できる。
そのため、実施の形態2との差異は、アドレスタグが、部分的フラッシュが完了してもクリアされずに、その後のldf命令の実行完了まで保持されて、ldf命令の実行完了によりクリアされる点である。もう1つの差異は、ストアアドレスもアドレス比較される点である。
図10は、実施の形態3におけるプロセッサ、デバイスおよびバスコントローラの構成を示すブロック図である。同図の構成は、実施の形態2で説明した図7の構成と比較して、バスコントローラ200の代わりにバスコントローラ300を備える点が異なる。バスコントローラ300は、バスコントローラ200と比較して、バッファ部210の代わりにバッファ部310を備える点が異なる。バッファ部310は、バッファ部210と比較して、アドレス比較部214の代わりにアドレス比較部314を備える点と、新たにウェイト回路302が追加された点と、メモリ制御部213の代わりにメモリ制御部313を備える点とが異なる。同じ符号の構成要素は同じなので説明を省略し、以下異なる点を中心に説明する。
アドレス比較部314は、アドレス比較部214と同様のロードアドレスの比較に加えて、ストア命令を実行中のプロセッサ1からのストアアドレスと、FIFO211に保持された先頭のストアデータから末尾のストアデータまでのそれぞれに対応するアドレスタグとを比較する。
ウェイト回路302は、アドレス比較部314による比較の結果、アドレスタグの何れかとストアアドレスとが一致するとき、メモリ制御部313に対してウェイト信号を発生する。これは、第1の命令の完了後でかつ第2の命令が完了していない場合に第3の命令のストアデータの書き込みを禁止するためである。つまり、第1の命令の完了後でかつ第2の命令が完了した後に、はじめて第3の命令のストアデータの書き込みを実行するためである。
メモリ制御部313は、メモリ制御部213と比較して、部分的フラッシュが完了してもアドレスタグをクリアしないで、その後の第2の命令(ldf命令)の実行が完了したときクリアする点と、ウェイト回路302からのウェイト信号を受けてバッファ部310からメモリ3への書き込みをウェイトする点である。
図11は、FIFO211およびアドレス比較部314の詳細な構成を示すブロック図である。同図の構成は、実施の形態2で説明した図8の構成と比較して、アドレス比較部214の代わりにアドレス比較部314を備える点が異なる。アドレス比較部314は、アドレス比較部214と比較して、ロードアドレスのみが入力される代わりにロードアドレスおよびストアアドレスが入力される点と、Dフリップフロップ32が追加された点とが異なる。同じ符号の構成要素は同じなので説明を省略し、以下異なる点を中心に説明する。
アドレス比較部314にはロードアドレスおよびストアアドレスが入力されるので、比較器25〜28は、ロードアドレスが入力された場合もストアアドレスが入力された場合も、アドレスタグと比較する。この比較は、部分的フラッシュ完了後も継続し、第2の命令が完了するまで行われる。第2の命令が完了すれば、アドレスタグがクリアされかつ比較結果が不一致となるから、比較も終了する。
Dフリップフロップ31は、プロセッサ1によるロード命令実行時の一致信号を保持する。Dフリップフロップ32は、プロセッサ1によるストア命令実行時の一致信号を保持し、メモリ制御部313に出力する。
図12は、プログラム例4を示す図である。この動作例をケース1とケース2について説明する。
<ケース1>
line6のstf命令の実行により、最後にバッファに格納されたストアデータ(3)にフラッシュポインタがセットされる。同時に、ストアデータ(1)とストアデータ(2)とストアデータ(3)のアドレスがアドレスタグとして保持される。
line9のst命令の実行により、ストアデータ(4)がバッファに格納される。
line12のst命令の実行により、ストアデータ(5)がバッファに格納される。まだ、ストアデータ(6)はバッファに格納されていないものとする。このときフラッシュポインタはNULLでない。
line16のldf命令が実行されたとき、アドレスタグと、ldf命令のソースアドレスが一致する。そのために、ウェイト信号がアサートされ、ロードは完了しない。ストアデータ(3)がバッファ部からメモリ3に書き出されると、アドレスタグのアドレスがクリアされ、ウェイト信号が解除されてからロードが完了する。このように、ライト完了をチェックするロード命令とフラッシュトリガーとなる命令の間にストア命令を実行できる。なお、ldf命令の実行が完了するのと、アドレスタグのクリアは同時に行われていることになる。
<ケース2>
line16のldf命令が実行されるまでに、ストアデータ(1)、ストアデータ(2)がライトバックされたものとする。ストアデータ(3)がライトバックされようとするとき、アドレスタグに格納されたアドレスと一致する。このとき、フラッシュポインタはバッファ0を指し示している。バスコントローラはストアデータ(3)をライトバックし、フラッシュポインタをNULLとする。
続いて、ストアデータ(4)、ストアデータ(5)がライトバックされる。ストアデータ(6)がライトバックされようとするとき、アドレスタグに格納されたアドレスと一致する。このとき、フラッシュポインタがNULLを指し示している。バスコントローラはストアデータ(6)のライトバックをウェイトする。
さらに、line16のldf命令でアドレスタグがクリアされる。これにより、アドレスタグに格納されたアドレスと不一致し、ウェイトされていたストアデータ(6)のライトバックが実行される。つまり、line16のldf命令では、ストアデータ(2)0x0がロードされることになり、line17のld命令では、ストアデータ(6)0x4がロードされる。
このように、<ケース1>では、stf命令をトリガーとして、その時点でバッファに格納されているデータとアクセスアドレス群を把握し、前記アクセスアドレス群とldf命令のアクセスアドレスが一致するときに、フラッシュポインタがNULLを指し示していないので、前記データがライトバックされるまでldf命令の完了をウェイトさせる。なお、line15とline16の間にld命令'が追加配置された場合を例にとって説明すると、前記アクセスアドレス群とこのld命令'のアクセスアドレスが一致するときに、前記データがライトバックされるまでld命令'の完了をウェイトさせることができる。
また、<ケース2>では、第1の命令の後に発行されたst命令のデータはバッファに格納され、前記アクセスアドレス群とst命令のアクセスアドレスが一致しなければライトバックされ、もし一致しかつフラッシュポインタがNULLを指し示していなければライトバックされ、もし一致しかつフラッシュポインタNULLを指し示していれば、ldf命令が完了するまでは、ライトバックされない。
これにより、ライト完了をチェックするロード命令とフラッシュトリガーとなる命令の間に、ライトバック対象となる命令と同一アドレスにストアする命令を配置することが可能となり、より有効にプログラムを記述できる。
なお、実施の形態3では、line16をldf命令とし、そのロードアドレスをアドレスバッファに保持されたアドレスと同一のアドレスとしていた。
この変形例として、line16をld命令とし、そのロードアドレスをアドレスバッファに保持されたアドレスと同一のアドレスにしてもよい。この場合は、プロセッサから出力されるロードアドレスとアドレスバッファに保持された何れかのアドレスとが一致することで、アドレスバッファがクリアされる。
また、line16をldf命令とし、そのロードアドレスをアドレスバッファに保持されたアドレスと異なるアドレスにしてもよい。この場合は、ldf命令という特定の命令に応じてアドレスバッファがクリアされる。このように、第2の命令をアドレスバッファに保持されたアドレスを対象とするロード命令以外の命令とすることもでき、プログラムの自由度が向上する。
<実施の形態4>
実施の形態4のバスコントローラは、複数のバッファ部を有し、stf命令をトリガーとして、その時点でバッファに格納されているデータを把握してバッファ部を切り替え、前記データのみがスレーブデバイスに書き込みされるまでldf命令の完了をウェイトさせ、stf命令に後続するst命令のデータは切り替えられたバッファ群に格納され、ldf命令が完了するまえにスレーブデバイスに書き込まれるように構成されている。
図13は、実施の形態4におけるプロセッサ、デバイスおよびバスコントローラの構成を示すブロック図である。同図の構成は、実施の形態3で説明した図10の構成と比較して、バスコントローラ300の代わりにバスコントローラ400を備える点が異なる。バスコントローラ400は、バスコントローラ300と比較して、バッファ部310の代わりにバッファ部410aおよびバッファ部410bを備える点と、新たにカレントポインタ411およびセレクタ412を備える点とが異なる。同じ符号の構成要素は同じなので説明を省略し、以下異なる点を中心に説明する。
便宜上、バッファ部410aをバッファAと、バッファ部410bをバッファBと呼ぶ。
バッファ部410a、410bは、それぞれバッファ部310と同様の構成である。
カレントポインタ411は、バッファ部410a、410bの一方を指すポインタを保持する。カレントポインタが指し示すバッファ部にはプロセッサ1からのストアデータを保持する。フラッシュトリガーが発生すると、カレントポインタが指し示すバッファ部にフラッシュポインタがセットされ、その後カレントポインタが切り替えられる。
セレクタ412は、バッファ部410a、410bからの出力データのうち、フラッシュポインタがNULLでない方の出力データを選択し、両方のフラッシュポインタがNULLである場合には、カレントポインタ411が指す方の出力データを選択する。
図14は、バッファ部410aと410bの動作および切り替えを示す説明図である。バスコントローラ400は、(a)バッファリングするバッファの選択処理、(b)フラッシュトリガーが発生したときの切り替え処理、(c)ライトバックデータの選択処理、(d)フラッシュトリガーが発生しない場合の選択処理を以下のように行う。
(a)プロセッサ1からのストアデータをバッファリングするバッファの選択処理として、バスコントローラ400は、プロセッサ1からのストアデータを保持するバッファ部を、カレントポインタ411によって指し示す。つまり、カレントポインタ411が指し示すバッファ部にプロセッサ1からのストアデータがバッファリングされる。
(b)フラッシュトリガーが発生したとき、バスコントローラ400は、フラッシュポインタをカレントポインタが指し示すバッファ部のフラッシュポインタにセットし、カレントポインタを切り替える。
(c)ライトバックデータの選択処理として、バスコントローラ400は、フラッシュポインタがNULLでない場合、フラッシュポインタがNULLになるまでは、プレビアスポインタ(カレントポインタが指し示していないバッファを指し示す。)にバッファリングされたストアデータをライトバックするように、各メモリ制御部313とセレクタ412を制御する。
フラッシュポインタがNULLの場合、カレントポインタが指し示しているバッファにバッファリングされたストアデータをライトバックするように、各メモリ制御部213とセレクタ412を制御する。
(d)フラッシュトリガーが発生しない場合には、バスコントローラ400は、カレントポインタが指し示すバッファにストアデータがバッファリングされ、カレントポインタが指し示しているバッファからライトバックするように、各メモリ制御部313とセレクタ412を制御する。
次に、図6に示したプログラム2を使って動作例を説明する。カレントポインタはバッファAを指し示しているものとする。
line3のstf命令の実行により、最後にバッファに格納されたストアデータ(3)にフラッシュポインタがセットされる。このとき、バッファAにストアデータ(1)、ストアデータ(2)、ストアデータ(3)が格納されている。
この状態で、カレントポインタはバッファBに切り替わる。
line6のst命令の実行により、ストアデータ(4)がバッファBに格納される。
line9のst命令の実行により、ストアデータ(5)がバッファBに格納される。
line10のldf命令が実行されたときストアデータ(3)はバッファAの先頭から2段目に格納されている。このときウェイト信号がアサートされているためロードは完了しない。
ストアデータ(3)がバッファAの先頭から書き出されると、line10のldf命令によるロードが完了する。
このように、ライト完了をチェックするロード命令(line10のldf命令)とフラッシュトリガーとなる命令(line3のstf命令)の間にストア命令(line6,line9)を実行することができる。このストア命令でストアされるストアデータ(4)、ストアデータ(5)は、フラッシュトリガーにより切り替え後のカレントバッファBにバッファリングされる。
これにより、複数のバッファ群を有するプロセッサのバスコントローラであっても、フラッシュトリガーでバッファ群を切り替えながら、フラッシュしたいストアデータを限定することができる。フラッシュトリガーが発生した後、バッファリングできるストアデータの容量を、1バッファ群決まって確保できる。
次いで、実施の形態4の変形例について説明する。
この変形例では、複数のバッファ群を有するプロセッサのバスコントローラであって、stf命令をトリガーとして、その時点でバッファに格納されているデータとアクセスアドレスを把握し、バッファ群を切り替え、前記データがスレーブデバイスに書き込みされるまでldf命令の完了をウェイトさせ、stf命令の後に発行されたst命令のデータは切り替えられたバッファ群に格納され、前記アドレスとst命令のアクセスアドレスが一致しなければ、ldf命令が完了するまえにスレーブデバイスに書き込みされ、もし一致しかつフラッシュポインタがNULLを指し示していなければ書き込みされ、もし一致しかつフラッシュポインタNULLを指し示していれば、ldf命令が完了するまでは書き込みされないように構成される。
そのため、実施の形態4の前半で説明した処理に追加してアドレスの比較と、アドレスタグのクリアが次のように行われる。
アドレスの比較は、プレビアスポインタが指し示すアドレスタグから一致するアドレスを比較、検索する処理である。ここで、フラッシュポインタがセットされたバッファはポインタの切り替えによってプレビアスポインタが指し示している。
アドレスタグのクリアは、プレビアスポインタが指し示すアドレスタグをクリアする処理である。
次いで、図12に示したプログラム例4を使って動作例をケース1とケース2に分けて説明する。
<ケース1>
今、カレントポインタはバッファAを指し示しているものとする。
line6のstf命令の実行により、最後にバッファに格納されたストアデータ(3)にフラッシュポインタがセットされる。同時に、ストアデータ(1)とストアデータ(2)とストアデータ(3)のアドレスがアドレスタグに保持される。このstf命令によるフラッシュトリガーによって、カレントポインタはバッファBに切り替わる。
line9のst命令の実行により、ストアデータ(4)がバッファBに格納される。
line12のst命令の実行により、ストアデータ(5)がバッファBに格納される。
まだ、ストアデータ(6)はバッファに格納されていないものとする。このときフラッシュポインタはNULLでない。
line16のldf命令が実行されたとき、アドレスタグと、ldf命令のソースアドレスが一致する。そのために、ウェイト信号がアサートされ、ロードは完了しない。さらに、ストアデータ(3)がバッファAの先頭から書き出されると、アドレスタグがクリアされ、ウェイト信号が解除されてからロードが完了する。このように、ライト完了をチェックするロード命令(第2の命令)とフラッシュトリガーとなる命令(第1の命令)の間にストア命令を実行することができる。なお、ldf命令の実行が完了するのと、アドレスタグのクリアは同時に行われていることになる。
<ケース2>
line16のldf命令が実行されるまでに、ストアデータ(1)、ストアデータ(2)がバッファAからライトバックされたものとする。さらに、バッファAからストアデータ(3)がライトバックされようとするとき、プレビアスポインタが指し示すバッファAのアドレスタグに格納されたアドレスと一致する。このとき、フラッシュポインタはバッファ0を指し示している。バスコントローラはストアデータ(3)をライトバックし、フラッシュポインタをNULLとする。フラッシュポインタがNULLとなるまでは、プレビアスポインタが指し示すバッファAからのライトバックが発生する。
続いて、カレントポインタが指し示すバッファBからストアデータ(4)、ストアデータ(5)がライトバックされる。ストアデータ(6)がライトバックされようとするとき、プレビアスポインタが指し示すバッファAのアドレスタグに格納されたアドレスと一致する。このとき、フラッシュポインタがNULLを指し示している。バスコントローラはストアデータ(6)のライトバックをウェイトする。
さらに、line16のldf命令でプレビアスポインタが指し示すバッファAのアドレスタグがクリアされる。アドレスタグに格納されたアドレスと不一致し、ウェイトされていたストアデータ(6)のライトバックが実行される。
これにより、複数のバッファ群を有するプロセッサのバスコントローラであっても、フラッシュトリガーでバッファ群を切り替えながら、アドレスタグによるアドレス比較処理ができる。フラッシュトリガーが発生した後、バッファリングできるストアデータの容量を、1バッファ群決まって確保できる。
なお、上記各実施の形態ではバスコントローラは、部分的フラッシュと全部フラッシュとを選択的に実行するように構成してもよい。その場合、プロセッサ1は2種類のフラッシュトリガーを出力し、バッファ部はフラッシュトリガーの種類に応じて部分的フラッシュと全部フラッシュとを選択的に実行すればよい。
本発明にかかるバスコントローラは、バッファを有し、レイテンシを隠蔽してプロセッサの実行性能を向上させるために有用である。
図1は、実施の形態1におけるプロセッサ、デバイスおよびバスコントローラの構成を示すブロック図である。 図2は、第1の命令が実行されたときのバッファの様子を示す図である。 図3は、部分的フラッシュ中のバッファの様子を示す図である。 図4は、部分的フラッシュ中のバッファの様子を示す図である。 図5は、部分的フラッシュが完了したときのバッファの様子を示す図である。 図6は、プログラム例2を示す図である。 図7は、実施の形態2におけるプロセッサ、デバイスおよびバスコントローラの構成を示すブロック図である。 図8は、FIFOおよびアドレス比較部の詳細な構成を示すブロック図である。 図9は、プログラム例3を示す図である。 図10は、実施の形態3におけるプロセッサ、デバイスおよびバスコントローラの構成を示すブロック図である。 図11は、FIFOおよびアドレス比較部の詳細な構成を示すブロック図である。 図12は、プログラム例4を示す図である。 図13は、実施の形態4におけるプロセッサ、デバイスおよびバスコントローラの構成を示すブロック図である。 図14は、バッファ部410aと410bの切り替えを説明する図である。 図15は、従来技術におけるプロセッサ、デバイスおよびバスコントローラの構成を示すブロック図である。
符号の説明
1 プロセッサ
2 DMAC
3 メモリ
4 デバイス
5 デバイス
100 バスコントローラ
101 クロスバスイッチ
102 ウェイト回路
110 バッファ部
111 FIFO
112 フラッシュポインタ
113 メモリ制御部
202 ウェイト回路
210 バッファ部
211 FIFO
112 フラッシュポインタ
213 メモリ制御部
214 アドレス比較部
21d〜24d データラッチ
21a〜24a アドレスラッチ
25〜28 比較器
29 判定部
30 論理和
31 Dフリップフロップ
32 Dフリップフロップ
302 ウェイト回路
310 バッファ部
314 アドレス比較部
410a バッファ部
410b バッファ部
411 カレントポインタ
412 セレクタ

Claims (11)

  1. プロセッサとメモリとの間のバスをコントロールするバスコントローラであって、
    プロセッサからメモリへのストアデータを先入れ先出し式に一時的に保持するバッファ手段と、
    前記バッファ手段の部分的フラッシュを指示するトリガー信号を受け付ける受付手段と、
    前記トリガー信号を受けた時点でバッファ手段に保持されている末尾のデータを指すポインタを保持するポインタ保持手段と、
    前記トリガー信号に応じて、前記バッファ手段に保持されているデータのうち先頭データから前記ポインタが指すデータまでをメモリに書き込むことによって前記バッファ手段を部分的にフラッシュする書き込み手段と、
    前記書き込み手段によって、前記部分的フラッシュが完了するまで、プロセッサにより実行される特定のアクセス命令に対してウェイト信号を発生するウェイト発生手段とを備えることを特徴とするバスコントローラ。
  2. 前記受付手段は、前記メモリをアクセスする命令以外の命令の実行時にプロセッサから出力される前記トリガー信号を受け付けることを特徴とする請求項1記載のバスコントローラ。
  3. 前記受付手段は、前記プロセッサにおける部分的フラッシュ付きストア命令の実行時にプロセッサから出力される前記トリガー信号を受け付けることを特徴とする請求項1記載のバスコントローラ。
  4. 前記特定のアクセス命令は、前記メモリとは異なるデバイスをアクセスする命令であることを特徴とする請求項1記載のバスコントローラ。
  5. 前記特定のアクセス命令は、ロード命令であることを特徴とする請求項1記載のバスコントローラ。
  6. 前記バッファ手段は、
    プロセッサからメモリへのストアデータを先入れ先出し式に一時的に保持するデータバッファと、
    前記ストアデータに対応するアドレスを保持するアドレスバッファと、
    プロセッサから出力されるロードアドレスとアドレスバッファに保持されたアドレスとを比較する比較手段とを備え、
    前記ウェイト発生手段は、比較手段による比較の結果、ロードアドレスとアドレスバッファに保持されたアドレスとが一致するとき、前記ウェイト信号を発生する
    ことを特徴とする請求項1記載のバスコントローラ。
  7. 前記アドレスバッファは、前記トリガー信号を受けた時点においてバッファ手段に保持されている先頭データから末尾のデータまでのそれぞれに対応するアドレスを保持し、
    前記比較手段は、アドレスバッファに保持された先頭データから末尾のデータまでのそれぞれに対応するアドレスと、プロセッサから出力されるロードアドレスとを比較する
    ことを特徴とする請求項6記載のバスコントローラ。
  8. 前記アドレスバッファは、前記トリガー信号を受けた時点においてバッファ手段に保持されている先頭データから末尾のデータまでのそれぞれに対応するアドレスを保持し、
    前記比較手段は、前記部分的フラッシュの対象データのうちメモリに書き込まれたデータのそれぞれに対応するアドレスと、プロセッサから出力されるロードアドレスとを比較しないで、前記部分的フラッシュの対象データのうちメモリに書き込まれていないデータのそれぞれに対応するアドレスと、プロセッサから出力されるロードアドレスとを比較することを特徴とする請求項6記載のバスコントローラ。
  9. 前記比較手段は、さらに、プロセッサから出力されるストアアドレスとアドレスバッファに保持されたアドレスとを比較し、
    前記ウェイト発生手段は、
    さらに、比較手段による比較の結果、前記ストアアドレスとアドレスバッファに保持された何れかのアドレスとが一致するとき、前記部分的フラッシュが完了している状態であれば、一致したアドレスに対応するデータのデータメモリからメモリへの書き込みをウェイトさせ、
    その後の比較手段による比較の結果、プロセッサから出力されるロードアアドレスとアドレスバッファに保持された何れかのアドレスとが一致するとき、アドレスバッファをクリアする
    ことを特徴とする請求項7記載のバスコントローラ。
  10. 前記比較手段は、さらに、プロセッサから出力されるストアアドレスとアドレスバッファに保持されたアドレスとを比較し、
    前記ウェイト発生手段は、
    さらに、比較手段による比較の結果、前記ストアアドレスとアドレスバッファに保持された何れかのアドレスとが一致するとき、前記部分的フラッシュが完了している状態であれば、一致したアドレスに対応するデータのデータメモリからメモリへの書き込みをウェイトさせ、
    前記特定のアクセス命令が完了したとき、アドレスバッファをクリアすることを特徴とする請求項7記載のバスコントローラ。
  11. 前記バスコントローラは、さらに
    前記バッファ手段を第1バッファ手段とし、前記バッファ手段と同一構成の第2バッファ手段と、
    第1バッファ手段および第2バッファ手段をカレントとして指示する指示手段と、
    トリガー信号に応じて指示手段のカレントを切り替える切替手段とを備え、
    前記書き込み手段およびウェイト発生手段は、カレントでないバッファ手段を対象とし、
    カレントバッファ手段は、プロセッサからのストアデータを保持する
    ことを特徴とする請求項1、7、8、9または10記載のバスコントローラ。
JP2006524134A 2005-03-14 2006-02-27 バスコントローラ Expired - Fee Related JP4370327B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2005072013 2005-03-14
JP2005072013 2005-03-14
PCT/JP2006/303580 WO2006098135A1 (ja) 2005-03-14 2006-02-27 バスコントローラ

Publications (2)

Publication Number Publication Date
JPWO2006098135A1 true JPWO2006098135A1 (ja) 2008-08-21
JP4370327B2 JP4370327B2 (ja) 2009-11-25

Family

ID=36991488

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006524134A Expired - Fee Related JP4370327B2 (ja) 2005-03-14 2006-02-27 バスコントローラ

Country Status (5)

Country Link
US (1) US20090063734A1 (ja)
EP (1) EP1860568A1 (ja)
JP (1) JP4370327B2 (ja)
CN (1) CN100541449C (ja)
WO (1) WO2006098135A1 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110208885A1 (en) * 2010-02-25 2011-08-25 Panasonic Corporation Data bus control method and apparatus
US8756329B2 (en) * 2010-09-15 2014-06-17 Oracle International Corporation System and method for parallel multiplexing between servers in a cluster
WO2013101187A1 (en) * 2011-12-30 2013-07-04 Intel Corporation Method for determining instruction order using triggers
US20150261631A1 (en) * 2014-03-12 2015-09-17 Kabushiki Kaisha Toshiba Memory system and memory controller
US10714159B2 (en) 2018-05-09 2020-07-14 Micron Technology, Inc. Indication in memory system or sub-system of latency associated with performing an access command
US11010092B2 (en) 2018-05-09 2021-05-18 Micron Technology, Inc. Prefetch signaling in memory system or sub-system
US10942854B2 (en) 2018-05-09 2021-03-09 Micron Technology, Inc. Prefetch management for memory
US10754578B2 (en) 2018-05-09 2020-08-25 Micron Technology, Inc. Memory buffer management and bypass
CN110109858A (zh) * 2019-05-07 2019-08-09 苏州浪潮智能科技有限公司 总线架构、服务器、内存数据读写方法及可读存储介质

Family Cites Families (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61100845A (ja) * 1984-10-12 1986-05-19 Fujitsu Ltd メモリアクセス同期制御方式
JP2511588B2 (ja) * 1990-09-03 1996-06-26 インターナショナル・ビジネス・マシーンズ・コーポレイション デ―タ処理ネットワ―ク、ロックを獲得させる方法及び直列化装置
WO1993000638A1 (en) * 1991-06-26 1993-01-07 Ast Research, Inc. Automatic distribution of interrupts controller for a multiple processor computer system
JP2917659B2 (ja) * 1992-03-31 1999-07-12 日本電気株式会社 情報処理装置
US5724549A (en) * 1992-04-06 1998-03-03 Cyrix Corporation Cache coherency without bus master arbitration signals
JPH06131244A (ja) * 1992-10-20 1994-05-13 Fujitsu Ltd 共有メモリの非同期アクセス方式
US5499384A (en) * 1992-12-31 1996-03-12 Seiko Epson Corporation Input output control unit having dedicated paths for controlling the input and output of data between host processor and external device
US5459840A (en) * 1993-02-26 1995-10-17 3Com Corporation Input/output bus architecture with parallel arbitration
US5696938A (en) * 1994-08-31 1997-12-09 Vlsi Technology, Inc. Computer system permitting mulitple write buffer read-arounds and method therefor
US6212589B1 (en) * 1995-01-27 2001-04-03 Intel Corporation System resource arbitration mechanism for a host bridge
JPH09269935A (ja) * 1996-01-31 1997-10-14 Toshiba Corp メモリ制御装置、及びメモリ制御方法
US5881264A (en) * 1996-01-31 1999-03-09 Kabushiki Kaisha Toshiba Memory controller and memory control system
US5809536A (en) * 1996-12-09 1998-09-15 Intel Corporation, Inc. Method for reducing the number of coherency cycles within a directory-based cache coherency memory system uitilizing a memory state cache
TW448363B (en) * 1997-02-17 2001-08-01 Ssd Co Ltd High speed processor system with bus arbitration
US5987550A (en) * 1997-06-30 1999-11-16 Emc Corporation Lock mechanism for shared resources in a data processing system
US6141728A (en) * 1997-09-29 2000-10-31 Quantum Corporation Embedded cache manager
JPH11167557A (ja) * 1997-12-02 1999-06-22 Hitachi Ltd 共有メモリアクセス順序保証方法及びマルチプロセッサシステム
US6212590B1 (en) * 1997-12-22 2001-04-03 Compaq Computer Corporation Computer system having integrated bus bridge design with delayed transaction arbitration mechanism employed within laptop computer docked to expansion base
US6434649B1 (en) * 1998-10-14 2002-08-13 Hitachi, Ltd. Data streamer
JP2000181780A (ja) * 1998-12-16 2000-06-30 Hitachi Ltd ストアバッファ装置
FR2787600B1 (fr) * 1998-12-17 2001-11-16 St Microelectronics Sa Memoire tampon associee a plusieurs canaux de communication de donnees
US6397273B2 (en) * 1998-12-18 2002-05-28 Emc Corporation System having an enhanced parity mechanism in a data assembler/disassembler for use in a pipeline of a host-storage system interface to global memory
US6338119B1 (en) * 1999-03-31 2002-01-08 International Business Machines Corporation Method and apparatus with page buffer and I/O page kill definition for improved DMA and L1/L2 cache performance
US6351808B1 (en) * 1999-05-11 2002-02-26 Sun Microsystems, Inc. Vertically and horizontally threaded processor with multidimensional storage for storing thread data
US6633298B2 (en) * 1999-07-31 2003-10-14 Hewlett-Packard Development Company, L.P. Creating column coherency for burst building in a memory access command stream
US6557048B1 (en) * 1999-11-01 2003-04-29 Advanced Micro Devices, Inc. Computer system implementing a system and method for ordering input/output (IO) memory operations within a coherent portion thereof
US6499077B1 (en) * 1999-12-30 2002-12-24 Intel Corporation Bus interface unit for reflecting state information for a transfer request to a requesting device
US6691178B1 (en) * 2000-02-22 2004-02-10 Stmicroelectronics, Inc. Fencepost descriptor caching mechanism and method therefor
US6859862B1 (en) * 2000-04-07 2005-02-22 Nintendo Co., Ltd. Method and apparatus for software management of on-chip cache
US6725343B2 (en) * 2000-10-05 2004-04-20 Hewlett-Packard Development Company, L.P. System and method for generating cache coherence directory entries and error correction codes in a multiprocessor system
WO2004006540A2 (en) * 2002-07-08 2004-01-15 Globespanvirata Incorporated System and method for packet transmission from fragmented buffer
US6922753B2 (en) * 2002-09-26 2005-07-26 International Business Machines Corporation Cache prefetching
GB2403560A (en) * 2003-07-02 2005-01-05 Advanced Risc Mach Ltd Memory bus within a coherent multi-processing system
US7243172B2 (en) * 2003-10-14 2007-07-10 Broadcom Corporation Fragment storage for data alignment and merger
US7493427B2 (en) * 2004-07-14 2009-02-17 International Business Machines Corporation Apparatus and method for supporting received data processing in an offload of network protocol processing
US7769944B2 (en) * 2004-10-01 2010-08-03 Supertalent Electronics, Inc. Partial-write-collector algorithm for multi level cell (MLC) flash
US7353301B2 (en) * 2004-10-29 2008-04-01 Intel Corporation Methodology and apparatus for implementing write combining
US7386683B2 (en) * 2005-03-29 2008-06-10 International Business Machines Corporation Method and apparatus for filtering snoop requests in a point-to-point interconnect architecture
US7613883B2 (en) * 2006-03-10 2009-11-03 Rambus Inc. Memory device with mode-selectable prefetch and clock-to-core timing

Also Published As

Publication number Publication date
US20090063734A1 (en) 2009-03-05
WO2006098135A1 (ja) 2006-09-21
CN101142562A (zh) 2008-03-12
JP4370327B2 (ja) 2009-11-25
EP1860568A1 (en) 2007-11-28
CN100541449C (zh) 2009-09-16

Similar Documents

Publication Publication Date Title
JP4370327B2 (ja) バスコントローラ
KR100955433B1 (ko) 파이프라인 구조를 갖는 캐시 메모리 및 이를 제어하는방법
JP5209933B2 (ja) データ処理装置
JP2004171177A (ja) キャッシュシステムおよびキャッシュメモリ制御装置
EP1238339B1 (en) Interface for a memory unit
JPH0668736B2 (ja) 2個のシステムクロックサイクルを利用する書込み動作をもったキャッシュメモリユニットを供与する装置及び方法
JP3505728B2 (ja) 記憶制御装置
JPH0793152A (ja) マイクロプロセッサ制御装置
JP3708979B2 (ja) 半導体集積回路
JP3497087B2 (ja) 命令制御装置及びその方法
JP2002108703A (ja) キャッシュ制御装置及びプロセッサ
CN118605941B (zh) 能够快速处理内存拷贝指令的cpu及其方法
US6085297A (en) Single-chip memory system including buffer
JP3479246B2 (ja) 命令のペンディングによる追い越し回路
JP4498705B2 (ja) キャッシュシステム
JPH10161927A (ja) ロードバッファ装置
JPS61237145A (ja) ストアバツフアの制御方式
JP2000347931A (ja) キャッシュメモリおよびキャッシュメモリ制御方法
JP3809178B2 (ja) 分岐履歴情報の書き込み制御装置及びその方法
JP2001022581A (ja) データ処理装置及びコンピュータ読み取り可能な記憶媒体
JPH0962571A (ja) メモリバッファ装置
JPH06202867A (ja) 並列計算機
JP2000137677A (ja) レジスタアクセス回路、及びこのレジスタアクセス回路を用いたデ―タ処理方法
JPS6267650A (ja) キヤツシユメモリ制御装置におけるストア処理方式
EP0553742A1 (en) A method of operating a first and second cache tag memory array

Legal Events

Date Code Title Description
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: 20090804

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: 20090831

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120904

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees