JPH10232826A - コンピュータ・システム - Google Patents
コンピュータ・システムInfo
- Publication number
- JPH10232826A JPH10232826A JP9359916A JP35991697A JPH10232826A JP H10232826 A JPH10232826 A JP H10232826A JP 9359916 A JP9359916 A JP 9359916A JP 35991697 A JP35991697 A JP 35991697A JP H10232826 A JPH10232826 A JP H10232826A
- Authority
- JP
- Japan
- Prior art keywords
- burst
- buffer
- memory
- instruction
- data
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/28—DMA
- G06F2213/2806—Space or buffer allocation for DMA transfers
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Memory System (AREA)
Abstract
めに適したキャッシュ・システムを実現し、メモリ・ア
クセスのバンド幅を極大化する。 【解決手段】メモリとプロセッサの処理のためデータを
記憶するバッファとの間での長いストリームのデータの
読み書きを1回のトランザクション処理で実行するバー
スト命令を提供する。該バースト命令は待ち行列に記憶
手され、先行バースト命令が実行された直後に次のバー
スト命令が直ちに実行できる状態になる。このような改
良されたキャッシュ・システムによって、メモリ・バン
ド幅が最大限に使用される。
Description
ステムに関するもので、特に媒体データを処理するシス
テムに関するものである。
は、性能上の要件を充足しながらかつ最小限度のコスト
を達成するものである。現状では、媒体の処理に重点を
置いた装置システムにおける主要なハードウェア・コス
ト要因はメモリである。メモリは媒体データを保持する
に足る十分な容量を持たなければならないし、またコン
ピュータのスループット要件を充足することができる十
分なアクセス・バンド幅を提供しなければならない。命
令スループットを常に最大にしなければならない通常の
プロセッサとは対照的に、そのような装置システムはデ
ータ・スループットを最大にする必要がある。本発明
は、媒体集約的アルゴリズムを処理する上での制約を所
与として、低コスト・メモリから高性能を引き出すこと
を(その点に限定するものではないが)特に対象とする。
処理システム、処理システムによって処理されるまたは
処理されるべきデータを記憶するためのメモリ(例えば
ダイナミックRAMすなわちDRAM)、メモリへのア
クセスを制御するためのメモリ・アクセス・コントロー
ラ、およびメモリとの間で読み書きが行われるべきデー
タをバッファするためのデータ・バッファ(例えばスタ
ティックRAMすなわちSRAM)を備えるタイプのコ
ンピュータ・システムに関するものである。
モリはDRAMである(対称性は、フラッシュ・メモリ
の場合の読み書きと違って、読み取りおよび書き込みア
クセス時間が全く同じであることを意味する)。現在、
DRAMはパーソナル・コンピュータにおいてメイン・
メモリとして広く使用されているが、プロセッサにより
近いデータ・バッファやキャッシュではSRAMのよう
な比較的高速な(しかしより高価な)メモリ技術が使用さ
れている。低コスト・システムにおいては、処理性能
(および能力)の目標が満たされるような最も低コストの
メモリを使用する必要がある。
タ・バンド幅を理解するため、最も廉価なDRAM技術
について分析を行ったが、明らかに、既存システムは利
用可能なバンド幅を活用していない。本発明は、利用可
能なバンド幅の使用度を増加させること、従って、上記
のようなコンピュータ・システムにおけるメモリの全般
効率を増加させることを目的とする。
に10nsでアクセスすることができる。しかし、メモ
リ・コストを最小限にとどめなければならないシステム
におけるメインDRAMメモリへのアクセスは200n
sを要し、キャッシュのアクセス時間の20倍である。
従って、高いスループットを確実にするためには、必要
とされる前に可能な限り多くのデータを局所的キャッシ
ュ・メモリ・ブロックに置かなければならない。そうす
ることによって、プロセッサは、メイン・メモリに関す
る場合のような比較的長い遅延ではなく、迅速な局所的
キャッシュ・メモリに対するアクセス待ち時間を経験す
るだけである。
タを取り出すために要する時間のことである。システム
の処理性能がプロセッサに依存するような「計算処理中
心」のシステムにおいて待ち時間は重大な関心事であ
る。局所的メモリとメイン・メモリの速度の間の大きい
係数によって、処理がメモリ・システムの性能に左右さ
れる場合がある。そのようなケースは、「バンド幅依存
的」であって、メモリ・システムのバンド幅によって究
極的に制限される。プロセッサの処理速度がメモリに比
較して十分早ければ、プロセッサは、メモリが応ずるこ
とができるよりも速い速度で要求を生成するであろう。
今日の多くのシステム性能は、計算処理依存型からバン
ド幅依存型へ移行している。
することは、性能問題を軽減するための1つの技法であ
る。しかし、それにはコストの増加がともなう。高速メ
モリの使用に代わって、既存のメモリ・チップの使用度
が効率ではないという認識に基づいて、現在使用のメモ
リに対して一層効率的にアクセスする新しい方法を展開
することが必要とされている。
徴は、それが「バースト」モードでのアクセスを可能に
するという点である。DRAMは、矩形マトリックスの
形態のメモリ位置から構成されるアレイを含む。アレイ
における1つのエレメントにアクセスするためには、先
ず行を選択(すなわちオープン)して、次に該当する列を
選択しなければならない。しかし、一旦ある行が選択さ
れると、その行の中の複数列への連続したアクセスは、
単に列アドレスを与えることによって実行される。ある
行をオープンしてその行にとって局所的な一連のアクセ
スを実行する概念は、「バースト(burst)」と呼ばれ
る。
率」は、DRAMへの平均アクセス時間(b)を分母とし
DRAMへの最小アクセス時間(b)を分子とする比率の
測定値である。DRAMアクセスにおいて、n個のデー
タ項目をバーストするためには、1回の長いアクセスと
(n−1)回のそれより短いアクセスが必要とされる。こ
のように、バーストが長いほど、平均アクセス時間は減
少し、従ってバンド幅は増大する。典型的には、キャッ
シュ型システムは、(キャッシュ・アーキテクチャおよ
びバス幅がその理由であるが)、4回のアクセス・バー
ストを使用する。これは、約25ないし40%のバース
ト効率に相当する。16ないし32回のアクセスという
バースト長の場合に効率は約80%と倍になる。
率」とは、DRAMバスにおけるトラヒック頻度の測定
値を指す。性能がプロセッサに依存するシステムにおい
ては、キャッシュ・ミスが発生し、そこで新しいキャッ
シュ行を取り出すため4アクセス・バーストが実行され
るまで、バスはアイドルである。この場合、待ち時間は
非常に重要である。このように、バスがほとんど使用さ
れていないので、飽和効率は低い。本発明人のテストで
は、ある1つのシステムにおける飽和効率は20%であ
った。従って、バスから5倍の性能向上を引き出す機会
が存在する。
組み合わせることによって、現在使用されているものと
同等のメモリについて約10倍のスループト向上を獲得
できる可能性がある。
命令をメモリ・アクセス・コントローラに伝達する手
段、およびそのようなバースト命令を待ち行列に記憶す
る手段を備える。該メモリ・アクセス・コントローラ
は、バースト命令に応答して、単一のメモリ・トランザ
クションで複数のデータをメモリとデータ・バッファの
間で転送させる。また、バースト命令の待ち行列への記
憶によって、先行したバースト命令が実行された直後に
次のバースト命令がメモリ・アクセス・コントローラに
よって実行される状態に置かれる。
命令をメモリ・アクセス・コントローラに伝達する手段
を備え、この場合、そのようなバースト命令は、そのバ
ースト命令に応答してアクセスされるメモリの位置の間
の間隔を定義するパラメータを含むかあるいはそのよう
なパラメータに関連づけられ、該メモリ・アクセス・コ
ントローラは、バースト命令に応答して、単一のメモリ
・トランザクションの間に、上記間隔パラメータに従っ
て間隔を置いたメモリ位置とデータ・バッファの間で複
数のデータを転送させる。
ータ・システムにおいて、少なくとも1つのデータ・バ
ッファへコンパイルしなければならない計算処理エレメ
ントおよびそのデータ・バッファを介する実行にとって
適切な計算処理エレメントを原始コードの中で特定する
ステップ、該原始コードにおいて特定した上記計算処理
エレメントを、各々が上記少なくとも1つのデータ・バ
ッファのサイズより小さいメモリ・トランザクションを
含み、バースト命令のような演算を表す一連の演算に変
換するステップ、および上記特定した計算処理エレメン
トが上記少くとも1つのデータ・バッファへのアクセス
を通して処理されるように、上記原始コードを処理シス
テムによって実行するステップを含む。
が、特に、「媒体集約的」アルゴリズムと呼ばれる特定
のクラスのアルゴリズムに適用できる。このアルゴリズ
ムは、データに依存するアドレス指定を用いることなく
長いアレイにアクセスすることができる通常のプログラ
ム・ループを使用するアルゴリズムを意味する。そのよ
うなアルゴリズムは、高度の空間上の局所性および規則
性を示すが、一時的局所性は低い。高度の空間上の局所
性および規則性が発生する理由は、アレイ項目nが使用
されるとすると、sをアレイにおけるデータ・エレメン
ト間の一定のストライド(間隔)を示すとすればアレイ項
目n+sが使用される可能性が非常に高いからである。
低い一時的局所性は、典型的にはアレイ項目nが一度だ
けアクセスされるという事実による。
るデータをプロセッサの近くに保持することによって高
い一時的局所性を開拓するように設計される。空間局所
性は開拓されるが、それは行取り出しメカニズムによる
非常に限られた形態である。これは、通常は、単位スト
ライドであり、相対的に短い。これら2つの点は、キャ
ッシュが媒体データストリームを取り扱うのが不得意で
あることを意味する。動作の際、キャッシュにおいて冗
長データによって役立つデータが置き換えられることが
頻繁に発生し、DRAMバンド幅は極大化されない。伝
統的キャッシュは特定のデータ・タイプには理想的に適
しているが、媒体データには適していない。
ッファリングの主な相違は、充填方針、すなわちバッフ
ァの内容を空にし充填する状況および方法にある。
ュを補強し、特に媒体データにアクセスするために使用
される新しいメモリ・インタフェース構造すなわちバー
スト・バッファが提供される。媒体データ特性を活用す
ることによって、DRAMまたはそれと同等の機構が最
適化され、また、制御のために使用されるその他のデー
タ・タイプに関してデータ・キャッシュは一層効果的に
動作することができる。媒体データがキャッシュのデー
タと衝突する可能性が少ないので、性能を犠牲にするこ
となくデータ・キャッシュ・サイズを減少することがで
きる場合が出てくる。バースト・バッファのために必要
とされる全追加メモリが、データ・キャッシュのために
必要とされるメモリの節約と同じ大きさであるような場
合に、上記のようなケースとなる可能性がある。
ァを含むことができる。典型的には、各バースト・バッ
ファは、それぞれのデータストリームに割り当てられ
る。アルゴリズムは可変的数のデータストリームを持つ
ので、バースト・バッファにとって利用できるSRAM
の量を固定させることが提案される。この量は、必要と
されるバッファの数に従って等量に分割される。例え
ば、固定的SRAMの量が2KBでアルゴリズムが4つ
のデータストリームを持つとすれば、メモリ領域は、4
つの512バイトのバースト・バッファに細分化され
る。6個のデータストリームを持つアルゴリズムの場合
は、各々が256バイトの8個のバースト・バッファに
細分化される。換言すれば、データストリームが2の累
乗でない場合、バースト・バッファの数は、好ましく
は、次に大きい2の累乗である。
ーストは次式によって定義されるアドレス・セットを含
む。 burst {B + s × i | B,S,i ∈ N ∧ 0 ≦ i < L} 上式において、Bは転送の基底アドレスであり、Sはエレ
メントの間のストライドであり、Lは長さであり、Nは自
然数のセットである。この式において明示的に定義され
ていないが、バーストの順序は、0からL-1へ増分するi
によって定義される。従って、1つのバーストは、 (base_address, length, stride) という3タプルによって定義することができる(ここ
で、base_addressは基底アドレス、lengthは長さ、stri
deはストライドを意味する)。また、ソフトウェアにお
いて、バーストはエレメント・サイズによって定義する
こができる。これは、バーストが、バイト、ハーフワー
ドまたはワードという単位でサイズを与えられることを
意味する。ストライドの単位はサイズを考察しなければ
ならない。「サイズを与えられたバースト」は、 (base_address, length, stride, size) という4タプルによって定義することができる(sizeは
サイズを意味する)。
であるようなサイズを与えられたバーストを指す。コン
パイラは、ソフトウェアがサイズを与えたバーストを経
路バーストに対応づける責任がある。経路バーストは、 (base_address, length, stride, width) という4タプルによって定義される(widthは経路幅を意
味する)。
あれば、経路バースの形式は、常に(base_address, len
gth, stride, 4)であり、簡略化して、(base_address,
length, stride)という3タプルで表される。
ァの割り当て(および解放)は、より高レベルのソフトウ
ェアまたはハードウェア・プロセスによって取り扱われ
ることもできる。このプロセスは、バースト・バッファ
の名前を自動的に変更するような別のアーキテクチャ上
の機能を含むこともできる。
ピュータ・システムは、i960のようなプロセッサ1
0、メイン・メモリ・インターフェースまたはアクセス
・コントローラ16を持つEDO DRAMのようなメ
インDRAMメモリ14、メモリ・インターフェース1
6からの経路20aおよびプロセッサ10への経路20
bをもつ小規模SRAM命令キャッシュ18、データ・
キャッシュ19とメモリ・インターフェース16の間の
経路21aおよびデータ・キャッシュ19とプロセッサ
10の間の経路21bを持つSRAMデータ・キャッシ
ュ19、および、キャッシュ・バイパス・プロセッサ・
ロード/ストア命令を実行するためのプロセッサ10と
メモリ・インターフェース16の間の経路22を備え
る。既知のコンピュータ・システムとは違って、本コン
ピュータ・システムには、図1において点線で囲われて
示されているバースト・バッファ・システム24が含ま
れる。
(1)例えばプロセッサ10のためのコプロセッサである
プロセッサ・インターフェース12、(2)例えば2KB
という固定量のSRAMを持つバースト・バッファ・メ
モリ26、(3)プロセッサ10からメモリ要求を受け取
り、必要とされるデータがバースト・バッファ・メモリ
26に駐在しているかあるいはデータを取り出すためメ
イン・メモリ14へのアクセスを始動すべきかをプロセ
ッサに対して透過的に決定する範囲比較機構28、(4)
少くとも1つのFIFO形態をなし、プロセッサ10か
らバースト命令を受け取ることができるバースト命令待
ち行列30、(5)現在時のシステム状態を評価し、バー
スト命令待ち行列30から次の適切なバースト命令を取
り出し、その命令または要求をメイン・メモリ14に伝
達するように動作することができるバースト・コントロ
ーラ32、(6)バースト転送に関連するパラメータを保
持し特定のバースト命令によって更新されるパラメータ
記憶機構34、(7)ミスしたデータに関してバースト・
バッファ・メモリ26をバイパスする経路を含め、バー
スト・バッファ・メモリ26とプロセッサおよびメモリ
・インターフェース12、16の間のデータ移動のため
の経路36a乃至36d、および(8)状態情報およびバ
ースト命令をバースト・バッファ・システム24内およ
びプロセッサならびにメモリ・インターフェース12、
16へ移動させるための制御経路38a乃至38f、を
含む。
ト・バッファ・メモリ26は選択可能な数のバッファ4
0として構成することができる。例えば、図2の(A)の
ように単一2KBバッファ40(0)として、図2の(B)
のようにそれぞれが1KBの2つのバッファ40(0)、
(1)として、図3の(C)のようにそれぞれが512バイ
トの4つのバッファ40(0)、(1)、(2)、(3)として、ま
た、図3の(D)のようにそれぞれが256バイトの8つ
のバッファ40(0)、(1)、(2)、(3)、(4)、(5)、(6)、
(7))として、構成できる。また、各バッファは、例えば
図3の(C)のバッファ40(2)、(3)をメイン・メモリ1
4からプロセッサ10への入力バッファとして、例えば
図3の(C)のバッファ40(0)、(1)をプロセッサ10か
らメイン・メモリ14への出力バッファとして、あるい
は例えば図2の(A)のバッファ40(0)を双方向バッフ
ァとして、配置することが可能である。バースト命令待
ち行列は、バースト・バッファ40の数と同数のFIF
O42を持つように構成される。図2の(A)はデータス
トリームが1つの場合に、図2の(B)はデータストリー
ムが2つの場合に、図3の(C)はデータストリームが3
または4つの場合に、図3の(D)はデータストリームが
5乃至8つの場合に、それぞれ使用される。代替的構成
として、単一のバースト命令待ち行列FIFO42をバ
ースト・バッファ40の数と無関係に使用することも可
能である。
普通のi960命令に従って動作することができる。パ
ラメータを持つロード命令の形式は次の通りである。 ld (g5),r4 これは、プロセッサに対して、そのレジスタg5にあるア
ドレスによってポイントされるデータ・ワードを取り出
して取り出したデータ・ワードをレジスタr4に格納する
ことを命令している。しかしながら、本発明の1つの実
施形態において、命令セットは、同等のロードバースト
命令"loadburst"を含むように拡張される。ロードバー
スト命令は次の形式を持つ。 loadburst src, stride, size, buf これは、srcが示すメモリ・アドレスを開始点としてstr
ideが示す量増分したアドレスまでのメモリ14から、s
izeで示された大きさのバースト・データ・ワードを、b
ufで識別された入力または双方向性バースト・バッファ
40の1つ(buf)に転送させるものである。これに対応
する次の形式のストア・バースト命令"sotreburst"があ
る。 storeburst buf, src, stride, size これは、bufで識別された入力または双方向性バースト
・バッファ40の1つ(buf)から、srcが示すメモリ・ア
ドレスを開始点としてstrideが示す量増分したアドレス
までのメモリ14へsizeで示された大きさのバースト・
データ・ワードを転送させるものである。
え転送が発生しなかったとしてもそれらが単一サイクル
で終了するという点において、通常のloadおよびstore
命令とは相違する。要するに、loadburstおよびstorebu
rst命令はメモリ・インターフェース16にバーストを
実行するように伝えるが、バーストの完了を待たない。
ーフェース16は、良識の範囲内ではあるが、いかなる
サイズおよびストライドを持つバースト要求にも応じる
ことができなければならない。マイクロプロセッサ10
に対する高度な追加機構が必要ではあるが、同一のチッ
プへの組み込みが最善の実施策である。プロセッサ1O
からのメモリ要求の実行にはいくつかの方法があるが、
そのうちの2つは、(a)バースト命令待ち行列30に関
してメモリ・マップ化対応レジスタを使用する方法と、
(b)コプロセッサを使用してload/storeメカニズムをバ
イパスする方法である。後者の方法が好ましいけれど
も、必ずしもアーキテクチャ機能がプロセッサに常に存
在しなければならないことはない。後者のモデルの使用
には、また、新しいプロセッサ命令の定義および使用が
必要とされる。
しさの透過性である。正しいデータがプロセッサに常に
与えられ、必要な場合プロセッサに視認できないハード
ウェア方法を使用してデータはいつでもメイン・メモリ
において更新される。バースト・バッファ・システム2
4も同様の機能性を提供する。
ファ40のデータは、メイン・メモリ14の領域からコ
ピーされる。位置情報(すなわちアドレス、ストライド
等々)は、それぞれのバッファ40にヒットがある(すな
わちそのメモリ位置のデータが現在キャッシュに存在す
る)か否かを判断するためプロセッサ10からのすべて
のメモリ要求に対して比較される。比較は次の2つの方
法で実行される。すなわち、(1)バッファ40における
すべてのアドレスを範囲比較器28を使用して(通常キ
ャッシュ・タグに関して)プロセッサ・アドレスと連想
比較すること、および(2)プロセッサ・アドレスを使用
して、範囲比較器によってバッファのアドレスを指定す
る式を検査して、解があるか調べること、である。前者
は高価であり(そして速度を早くするほど高価となり)、
後者は安くて速いが、満足のゆく性能を得るためストラ
イドを2の累乗に制限する。
バッファ40においてヒットする。この場合、データは
バッファからプロセッサへ迅速に返される。一方、読み
取りがミスすれば(すなわちバッファ40においてヒッ
トしなければ)、バースト・バッファ・メモリ26を迂
回して、要求されたデータはメイン・メモリ14から直
接取り出される。しかし、データがその時点でロードさ
れつつある範囲にあると、その範囲がロードされ次にバ
ッファ40から取り出されプロセッサ10に渡されるま
で読取りは「停止」または「阻止」される。(待ち時間
を節約するため、データは受け取られ次第渡されるよう
にシステムは修正されている)。当該データが送出され
るべきバーストに含まれていれば、当該データが近接し
た連続動作で2度読み取られることを防ぐため、バース
トの実行が完了するまで、データ読み取りは阻止され
る。
ァ40のデータは更新される。その時点でメイン・メモ
リ14は更新されないが、メイン・メモリ14に関する
整合性は、後刻ソフトウェア制御の下storeburst命令に
よって達成される。一方、書込みミスが発生すると、同
じデータを含むstoreburst命令が保留状態または活動状
態にない限り、メイン・メモリのデータが直接更新され
る。この場合、書込みは、storeburst命令が完了するま
で阻止される。
達するバースト・コントローラ32は、「遅延」と呼ば
れるメカニズムを使用することがある。これは、命令が
発せられる時間が後刻またはなにがしかの事象まで延期
されることを意味する。例えば、次の命令が、例えばst
oreburst-deferred-16access命令であれば、バースト・
バッファへの16回のアクセスが完了するまでそれは待
機し、そのその後自動的にstoreburst命令を発する。そ
の他の遅延メカニズムとして、時間(すなわちサイクル
のカウント)、外部割り込みのような事象、およびバッ
ファ空き有無インジケータを使用することもできる。ア
クセス・カウントに基づく遅延の使用は、プログラムの
流れとメモリ・インターフェース16への命令伝達を切
り離すので、バースト・バッファ・システム24の強力
な機能である。
は、経路38fを経由してプロセッサ10へ状態情報を
提供する。バースト・バッファ・コントローラ32は、
また、バッファ割当ておよび論理バッファの名前変更が
ソフトウェア制御の下実施されるように、ユニークなバ
ッファ識別子を提供する。
サイズより長ければ、1つの手順として、バッファ40
の長さと同じになるようにバースト長が切り捨てされ
る。しかし、修正された手順では、非常に長いストリー
ムがバッファに持ち込まれる。loadstream-deferred-32
accessのような単一命令を使用して、それぞれがバース
ト・バッファのサイズを持ついくつかの断片に長いスト
リームを格納し、断片の各々は指定された数のアクセス
が完了すると次の断片と置き換えられる。
セス・モードをサポートすることも可能である。最も簡
単な方法は、先入れ先出し方式(FIFO)バッファであ
る。この場合、プロセッサ10は単一のアドレスを使用
してバッファ40にアクセスする。読取りの場合は、バ
ースト・バッファ40から最初のエレメントを取り出
す。後続の読取りはバッファ全体を通して次々とエレメ
ントを取り出す。空きの有無の概念がここで導入され
る。より一般的に拡張すれば、バッファ40上に「窓」
が与えられる。この窓は、バッファに対する相対的アク
セスを可能にする。この窓における固定数のアクセスの
後(あるいは別のトリガーに従って)、窓は、その位置が
もう1つのデータに対して中央となるように、進められ
る。前進の量はプログラムできる。これを「循環窓」方
法と呼ぶ場合があり、多くの実施形態が可能である。
4の動作の詳細を記述する。バッファ40の中のデータ
は、要求されたアドレスを開始アドレス、長さおよびス
トライド情報を使用した計算結果と比較することによっ
て有効性を検査される。(レジスタ・サイズは別として)
長さおよびストライド値に対する制約はない。しかし、
通常のloadburstおよびstoreburst命令に関しては、長
さがバッファ・サイズより大きければ、データは切り捨
てられる。レジスタから読み戻される値は切り捨てられ
た値である。
比較は非常に遅い。範囲検査はワード・アドレスのみを
考慮するので、ビット0および1は無視される。バッフ
ァ40における読み取りヒットによってデータ項目は復
元される。ミスはメイン・メモリ14からの取り出しを
引き起こす。書込みヒットによって、該当するバッファ
40が更新される。書込みミスはメイン・メモリ14を
直接更新する。メイン・メモリ14に完全なバッファ4
0を最後に書き戻すことによって、整合性が維持され
る。
合に発生する整合性問題を防止するため、バッファ40
を使用するデータに「キャッシュ使用不可」というマー
クを付けることもできる。これは、バッファ40に関す
るデータを含む同じ領域のメモリにおける行取り出しか
らデータ・キャッシュは制約されなければならないこと
を意味する。
0に関連づけられる。このレジスタは、バッファが使用
中であるか否かを示す有効ビットを含む。ソフトウェア
は、このようなフラグを検査してどのバッファが利用で
きるか判断する。現在動作状態を含むその他の状態情報
も利用できる。無効なバッファへのアクセスが発生する
と、通常のメモリ・ロード/ストア命令が生成される。
有効性メカニズムはソフトウェアにとって透過的であ
る。
loadburst命令によって、指定された特性を持つバース
トが目標バッファに記憶される。loadburst命令が発信
され次第、書き込み動作が完了するまでバッファは完全
に無効状態にされる。バッファに保持されていたいかな
るデータも、消去され回復はできない。
空にされる。storeburst命令が発信され次第、バッファ
はロックされ(すなわちすべてのアクセスが禁止され)、
バッファはメモリへコピーされる。次にそのバッファは
無効状態にされる。
も遅延化できる。これは、動作開始を誘導するため、実
行されねばならない読み取り/書き込み数を記述するカ
ウントが各命令に関連づけされることを意味する。(そ
の他のオプションとして、計時や命令カウントが含まれ
る)。これは、例えば16回のアクセスだけ遅延されるb
urststore命令をバッファに伝達することができること
を意味する。そこで、バッファ・コントローラはバッフ
ァへ16回アクセスが行われるのを待ち、その時点でバ
ッファを空にする。
効状態に変更される。この命令は、範囲計算機構へアド
レス情報を提供する点でloadburst命令と同じである
が、いかなるデータのロードも行わない。この命令は、
先行loadburst命令を必要とするのではなく、プロセッ
サ書き込みを使用してバッファに書き込みが行われるの
を可能にする。allocbuff命令によってバッファは有効
状態にされる。バッファに含まれているデータは不変の
ままであり、これは、バッファをいっぱいにしているデ
ータが異なるメモリ領域に再配置されることを意味す
る。
バッファを単に無効状態にしてその内容を不変のままと
する命令である。その後に続くallocbuff命令によっ
て、バッファをその前の状態に復帰させることができ
る。
を停止させられる。それらの条件には、(1)バッファ命
令待ち行列がいっぱいであるにもかかわらずバースト命
令が出される場合、(2)バースト命令が進捗中に目標バ
ッファへのアクセスが要求される場合、および(3)バッ
ファ命令がバッファをミスし、通常のメモリ・アクセス
が実行されなければならない場合、が含まれる。
さ未満の場合は、部分的アクセスが実行され、バッファ
中の未使用位置は未定義とされる。バースト転送は、バ
ースト命令によって示唆される順序でバッファが常に空
にされるという制約を持つ。部分的アクセスは常にバッ
ファの最初の位置から始まる。ストライドは符号付き量
であるので、バースト・データの順序は、常に、昇順ま
たは降順のいずれかである。特定のアプリケーションま
たはシステムによって要求されるバッファの数は、性能
要件、サポートすべきストリームの数等々によって変わ
る。命令は、前の命令が完了した時のみ実行される。
目標メモリ区域をゼロで埋めることができる。バースト
・バッファ自体はゼロにされないが、別々のデータ経路
がメイン・メモリに値0を書き込む。この拡張コマンド
において、どのような値でも指定することは可能であ
り、必要とされる値に設定されるレジスタが提供され
る。"loadburst value O"命令によってバッファをゼロ
で埋めることができる。メモリ・トラヒックは生成され
ないが、この演算は同じ方法で実行され1サイクル以上
を要する。このように、この命令は他のloadburst命令
と同様に取り扱われる。
ことをアプリケーションが保証するという前提で、メモ
リ・コントローラによってバーストに分解された上で、
データストリームがメモリに送られる。その条件は、
(1)各データ・エレメントは順次持ち込まれること、(2)
各データ・エレメントは、正確に1度またはあらかじめ
定められた使用パターンに従って、使用されること、
(3)バッファ・サイズの断片の形態でのストリーム処理
が適用されること、である。これらの条件が満たされれ
ば、書込みストリームまたは読取りストリームは、該当
する数のアクセスだけ遅延されるバースト命令に分解さ
れる。
バッファ・サイズに切り捨てられるが、loadburstスト
リームおよびstoreburstストリーム命令を使用すること
で、長さはストリーム長と解釈される。これらの命令も
初期的に遅延されるかもしれないが、これは最初のバー
スト転送の開始に影響を及ぼすだけである。後続のバー
ストは、バッファのサイズだけ自動的に遅延される。
止するため使用される。その機能性は、進捗中のバース
トを終了させることができない点で制約される。しか
し、バーストが保留中であれば(すなわち遅延されてい
れば)、それはキャンセルされる。いずれにせよ、バッ
ファは常に無効状態にされる。その本当の用途は、現在
のバーストの終了時にあるいはバーストが保留中であれ
ば即刻ストリームを終了させるためのものである。
ーフェースを記述する。各バースト・バッファ40には
4つのレジスタが関連づけられている。これらのレジス
タは、メモリに対応付けされていて、プロセッサによっ
て単一サイクルのロード/ストアでアクセスされる。そ
れらレジスタの名前は、1.基底アドレス、2.長さ、3.ス
トライド、および4.制御/状態、である。最初の3つの
レジスタは、バースト命令のために使用されるパラメー
タを含む。バースト命令は制御レジスタに書き書き込ま
れ、状態情報が制御レジスタを読むことによって取得さ
れる。すべてのレジスタは、1ワード幅である(本実施
形態では32ビットである)。各レジスタについて以下
に記述する。レジスタの意味を理解するためには、1バ
ーストでデータを取り出すために使用される関数を定義
することが必要である。1バースト転送における各エレ
メントiは、以下の式によって与えられるメイン・メモ
リのアドレス(address)から取り出される。 Address[i] = base_address + (i- 1)*stride (式1) 但し、base_addressは基底アドレス、strideはストライ
ドを意味し、iは1からlengthまでの範囲の値である。
出される前に、初期化されていなければならない。バー
スト命令が出されると、基底アドレスを使用してデータ
・アドレスが計算される。基底アドレスは、ストリーム
・アクセスに関しても自動的に変更されることはない。
バッファが有効である時のbase_addressレジスタへの書
き込みは、バッファを無効状態にさせる。レジスタ自体
はハードウェアによって隠されていて、たとえバッファ
がその後無効状態にされるとしてもすべての活動的バー
ストが正しく完了することが保証される。基底アドレス
は、バイト単位で指定されワード単位で整列されなけれ
ばならない。そうでなければ、値は自動的に切り捨てら
され、丸めは実行されない。レジスタから読まれる値は
変更されない。
前に、初期化されなければならない。バースト命令が出
されると、長さ(length)を使用して、データ・アドレス
が計算される。非ストリーム・バーストに関しては、長
さレジスタは、バースト・バッファ長以下の長さに制限
される。バースト命令が出され、長さレジスタの値がこ
の基準を上回ると、それはバッファ長に自動的に切り捨
てられる。この切り捨ては、バースト命令が出される際
発生するが、長さレジスタへの書込みが行われる時は発
生しない。切り捨てられる値は、このレジスタから順次
読み取られている値である。ストリーム・アクセスの場
合、長さレジスタは、全ストリーム転送の長さを指定す
る。バッファが有効である時の長さレジスタへの書き込
みはバッファを無効状態にする。レジスタ自体はハード
ウェアによって隠されていて、たとえバッファがその後
無効状態にされるとしてもすべての活動的バーストが正
しく完了することが保証される。転送の長さはバイト単
位で測定されるが、ワード(すなわち4バイト)の倍数に
制限される。ワード境界に整列されない値は切り捨てら
れ、丸めは実行されない。レジスタから読み取られる値
は変更されない。
が出される前に、初期化されなければならない。バース
ト命令が出されると、ストライドを使用して、データ・
アドレスが計算される。ストライドは、ストリーム・ア
クセスに関しても、自動的に変更されることはない。バ
ッファが有効である時のストライドへの書き込みはバッ
ファを無効状態にさせる。レジスタ自体はハードウェア
によって隠されていて、たとえバッファがその後無効状
態にされるとしてもすべての活動的バーストが正しく完
了することが保証される。ストライドはバイト単位で測
定されるが、ワード(すなわち4バイト)の倍数に制限さ
れる。ワード境界に整列されない値は切り捨てられ、丸
めは実行されない。レジスタから読まれる値は変更され
ない。
バースト命令は制御レジスタへの書き込みの別名であ
る。これらのアクセスにおいて使用されるデータは、各
命令に関して定義される形式に従って構成される。ワー
ドの最初の3ビットは、命令を識別するために使用され
る。
初に、"allocbuffer"命令は、メモリの領域を対応させ
るバッファを構成するために使用される。バーストは実
行されないが、バッファは有効にされ、範囲検査が実行
される。転送の長さはバッファのサイズ以下でなければ
ならない。これより大きい値はバッファ・サイズに自動
的に切り捨てられる。範囲検査は、上記(式1)に従って
生成されたアドレス・セットに対して比較を行う。この
命令を出すために使用されるデータ・ワードの形式は、 allocbuffer: [000] [29 reserved bits] である。バッファの中のデータは無効化を通してバッフ
ァに残るので、バッファ・パラメータを変更し第2のal
locbuff命令を出すことによってバッファは再配置され
る。
るため使用される。メモリからバッファへのバースト
は、一旦始まれば、中止することはできない。しかし、
遅延バーストは、保留の間中止することはできるし、lo
adstreamコマンドはバースト境界上で中止することは可
能である。すべての場合、バッファは無効状態にされ
る。バッファのどのデータも変更されない。この命令の
形式は、 burstabort: [001] [29 reserved bits] である。
ァが無効状態にされる。パラメータはなにも使用されな
い。形式は、 freebuffer:[O10][29 unused bits] である。
用して、それぞれ、バースト・データをメイン・メモリ
からバースト・バッファへ取り出し、バスト・バッファ
からメイン・メモリへバースト・データを書き込む。転
送の長さはバッファのサイズ以下でなければならない。
これより大きい値は、バッファの大きさに自動的に切り
捨てられる。バースト・アドレスは、上記(式1)に従っ
て生成される。これらの命令を出すために使用されるデ
ータ・ワードの形式は、 loadburst:[011] [V] [12 reserved bits] [16 bit def
erral_count] storeburst:[100] [V] [12 reserved bits] [16 bit de
ferral_count] である。但し、Vは、バッファにロードされたデータが
すべてゼロであるか(V=0)、メモリからの実際のデータ
であるか(V=1)を示すビット値である。最後の16ビッ
トは、遅延カウントである。この値が0を超えていれ
ば、遅延カウントのアクセス数がバッファに対して実行
されるまでバースト命令は延期され。そのようなアクセ
スは読取りまたは書き込みのいずれかである。転送は、
開始アドレス、長さおよびストライドの点でワード境界
に整列されている。
ドを使用して、完全なデータストリームがバッファへロ
ードされ、完全なデータストリームがバッファからコピ
ーされる。ストリームの長さは長さレジスタにおいて定
義され、232バイトに制限される。バッファ管理機構
が、メモリからバッファへおよびバッファからメモリへ
転送されるバースト・セットにストリームを自動的に分
解する。バッファへの書き込みは、ハードウェアによっ
て自動的に調整される。遅延カウントを使用してバース
ト境界が検出される。これは、あるバッファは、あらか
じめ定義された数のアクセスの後シーケンスの中の次の
バッファと置き換えられることを意味する。ストリーム
を進める他のどのようなメカニズムも利用できないが、
他の命令を使用してストリームを進めるメカニズムを考
慮することは可能である。長さLバイトのストリームに
関して、4バイト幅を持つメモリ・バス上に長さSのL
/4S個のバーストに加えて、残りを記憶しコピーする
ための1つのバーストがある。長さは4バイトの倍数で
なければならず、そうでなければ最も近い倍数まで切り
捨てられる。loadstream値0は、バッファへ継続的にゼ
ロをロードし、実際のメモリ・アクセスは起きない。st
orestream値0は、メモリへ継続的にゼロをロードす
る。これらの命令の形式は、 loadstream: [101] [V] [12 reserved bits] [16 bit d
eferral_count] storestream : [110] [V] [12 reserved bits] [16 bit
deferral_count] 但し、Vは上記定義されたとおりのものである。最後の
16ビットは遅延カウントである。
ため、"querystatus"コマンドが使用される。これは、
バッファに対してサポートされる読み取りコマンドであ
る。返される値は、バッファが割り当てらていなければ
0、割り当てられていれば1である。現在の対応付けに
関する情報は、他のレジスタを読むことによって取得で
きる。その他のいかなる情報も利用できない。
第2の実施形態が、図4および図5に示されている。こ
の実施形態において、第1の実施形態のキャッシュ的イ
ンターフェースが、ペアを構成する2つのテーブルに基
づくインターフェースと置き換えられる。2つのテーブ
ルは、バースト・バッファ・メモリとの間でバースト転
送を行うメイン・メモリの領域を記述するMAT(Memor
y Access Tableすなわちメモリ・アクセス・テーブル)
およびバースト・バッファ・メモリの領域を記述するB
AT(Buffer Access Tableすなわちバッファ・アクセス
・テーブル)である。この実施形態においては、2ポー
ト型SRAMの同等区域がバースト・バッファに使用さ
れる。
構が図4に示されている。本質的に第1の実施形態と類
似している機構に関しては、同じ参照番号が使用されて
いる。バースト命令は、バースト命令待ち行列30によ
ってプロセッサ・インターフェース12から提供され
る。バースト命令待ち行列30からの命令は、バッファ
・コントローラ54によって処理され、MAT65およ
びBAT66の基準スロットへ送られる。バッファ・コ
ントローラは、また、8つのバースト制御レジスタ52
から制御入力を受け取る。これらの2つのテーブルに含
まれる情報は実行時に結合され、完全なmain-memory-to
-burst-buffer transaction(メモリからバースト・バッ
ファへのトランザクション)を記述する。出力は、バッ
ファ・コントローラ54からDMAコントローラ50従
ってメモリ・データ経路アービタ58に提供され、メイ
ン・メモリ14とバースト・バッファ・メモリ26の間
のトランザクションが有効となる。
・メモリ26は、2KBの2ポート型SRAMとして提
供される。SRAMの1つのポートはプロセッサ・メモ
リ空間にあり、迅速なプロセッサ・アクセスに対して使
用されることができる。このアーキテクチャの利点は、
バースト・バッファ・メモリ26からのアクセスがメイ
ン・メモリ14からのアクセスに比較して非常に速いこ
とが必要なだけであるが、バースト・バッファ・メモリ
26への単一サイクル・プロセッサ・アクセスは特に利
点がある。もう1つのポートの機能は、後述されるよう
に、メイン・メモリとSRAMの間のDMA転送を可能
にすることである。バースト・バッファ・メモリ26内
の個々のバッファは、バッファ・アドレスおよびその長
さによって定義されるバッファ領域に保持される。プロ
セッサ・ポートに関して、バイト、ハーフワードおよび
ワードのアクセス(すなわち動的バス幅指定)がサポート
されることが望ましい。これはDMAポートにも望まし
いが、必要性は少ない。この2ポート機能は、メイン・
メモリとの間のバースト転送をプロセッサからのアクセ
スと並列して実行させることを可能にする。適切なイン
ターロックまたは優先度メカニズムがない場合は、ソフ
トウェアが同一SRAM位置への書き込み衝突を防止す
る必要がある。
かのストリームを取り扱うことができ、かつ長いバース
トに関連する要求を取り扱うことができるような大きさ
でなければならない。多数のアプリケーションに関し
て、8つのストリームを取り扱うことができる資源を備
えれば十分であり、各ストリームは、1つが到来および
出力のためもう1つが進行中の計算処理のためという2
つのバッファを備えることが望ましいことが判明してい
る。従って、16個のバッファが必要となることが示唆
される。また、メモリへの経路幅が32ビットであるS
DRAMを使用するバンド幅の約80%の利用度は、3
2個のバーストで達成できることが判明している。この
場合、各バースト・バッファのサイズは128バイト
で、合計2KBのSRAMとなる。
記述する。主バッファ制御レジスタはbufcntlである。
このレジスタは、バースト・バッファ・アーキテクチャ
の集中制御を提供する。次の表1はバッファ制御レジス
タの定義であり、このレジスタの各ビットに関連する機
能性を示す。
り専用で、その目的は自明である。同期レジスタ(sync)
は読み取り専用レジスタであって、バースト命令待ち行
列が空になるまでプロセッサを停止させるために使用さ
れる。このレジスタは、プロセッサ命令とバースト命令
の並列実行を同期化に役立つ。このレジスタを読むと、
下記表2に示されるような4つの値のうちの1つが戻さ
れる。この値は、同期命令の前に実行される最後のバー
スト命令に関連する。
2:0だけが使用されその他は常にゼロであることを意味
する。(ビット0は停止が必要とされていたか否かを示
し、ビット2:1はビット31:30の命令形式に合致するか否
かを示す。注:同期命令(sync)はこのレジスタの読み取
りを停止できないので、ここでは使用のための定義はさ
れてない)。例外的な状況においてこのレジスタへの書
き込みを可能にするような容量が提供される。具体的に
は、例外処理機構が戻る前に同期レジスタの状態を元に
戻すことを可能にする。
ち行列からメモリ・コントローラへバースト命令進捗度
を逐次通知するために使用される。図6は、それらのレ
ジスタの構造および位置を示す。
タであって、メモリ・コントローラによって現在実行さ
れている命令を保持する。これはbufcntl.transferが1
である時のみ有効である。しかしながら、そのアイドル
状態において、このレジスタは、ロードまたはストア・
バースト命令の読み取りが進行中のバーストが存在する
ことを自動的に意味するnull(ヌル)命令を戻す。
常の動作では、メモリ・コントローラによって実行され
た最後の命令を持っているので、このレジスタは読み取
り専用である。しかしながら、文脈切り替えの時点の状
態を全面的に元へ戻すことができるようにするため文脈
切り替えから戻った後このレジスタは書き直されなけれ
ばならないので、このレジスタは書き込み機能を持つ。
このレジスタは、初期的にはヌル・コマンドに設定され
る。
てバースト命令待ち行列を空にするため使用される。bu
fcntl.enableへゼロの書き込みによってバースト命令を
実行不可状態にした後、待ち行列が空になるまで命令毎
に待ち行列の内容が読み取られる。queuetopレジスタの
読み取りは、待ち行列から最上部の命令(すなわち実行
中の命令ではない命令)を削除する効果を持つ。このレ
ジスタはいつでも読み取ることができ、常に待ち行列の
最上部から削除した命令を返す。この命令は実行されな
い。
持される。ヌル命令を読むことは待ち行列が空であるこ
とを意味する。
ジスタbiqに書き込まれる。命令は、待ち行列の始めに
置かれる。biqレジスタの読み取りは、queuetopレジス
タ読み取りと同様に、バースト命令待ち行列の最上部の
命令(すなわちメモリ・コントローラによって実行され
るべき次の命令)を返す。しかしながら、この場合、そ
れがレジスタ読み取りが行うすべてである。queuetopか
ら読み取られた命令と対照的に、biqから読み取られる
命令は実行される。ヌル命令の読み取りは、待ち行列が
空であるかまたはその初期化がまさに完了したことを意
味する。注:biqレジスタが論理的に待ち行列であるの
で、待ち行列が空でない限り、読取りが後に続く書き込
みは、同じ値に戻らない可能性がある。
タの詳細説明は行わないが、レジスタ定義を下記表3に
示す。
FOメモリを含む。バースト命令はプロセッサによって
提供される。この構造への原始コードのコンパイルの詳
細は次の通りである。本実施形態では、次の4つのフィ
ールドがバースト命令において提供される。 1. 命令 2. MATに関する自動ストライド・インジケータ(ブロ
ック増分ビット) 3. 転送を制御するために使用されるMATエントリに
対するインデックス 4. 転送を制御するために使用されるBATエントリに
対するインデックス 基本的な動作は、メモリ・アクセスおよびバッファ・ア
クセスという2つのテーブルの各々におけるエントリを
インデックスする命令を発信することである。メモリ・
アクセス・テーブルへのインデックスは、転送メモリの
最後に使用されるアドレス、範囲およびストライドを取
り出す。バッファ・アクセス・テーブルへのインデック
スは、バースト・バッファ・メモリ領域の基底アドレス
を取り出す。本実施形態では、バースト命令において提
供されるインデックスは、アドレス値そのものではない
点注意する必要がある(アドレス値そのものとする実施
形態も可能ではある)。本実施形態においては、詳細は
後述するが、文脈テーブルを介してマスクおよびオフセ
ットがインデックス値に与えられる。DMAコントロー
ラは、2つのテーブルからパラメータを渡され、それら
を使用して必要とされる転送を指定する。
形式が与えられる。
fcntl.swapビットによって選択される。0というデフォ
ルト値は形式Aを選択し、一方、値1は形式Bを選択す
る。このスワップ機能の使用によって、コンパイラは容
易に命令を増分させることが可能とされ、それによって
バッファとメイン・メモリの両方に対して異なる領域へ
のDMA動作が実行される。スワップ機能がない場合、
一方だけに対してこれを達成する(従って1つの命令へ
のループ・パイプライン化のオーバーヘッドを減少させ
る)ことができるにすぎない。
質的に同じであるが、異なるアーキテクチャの観点から
構文および動作の点で変更が行われる。
ことによって実行される。この命令は、所望の転送の特
性を定義するMATおよびBATのパラメータをインデ
ックスする。block_incrementビットが設定されていれ
ば、インデックスを付けられたMATエントリのmemadd
rフィールドは転送が完了すると自動的に更新される。
とによって実行される。この命令も、所望の転送の特性
を定義するMATおよびBATのパラメータをインデッ
クスする。この場合も、block_incrementビットが設定
されていれば、インデックスを付けられたMATエント
リのmemaddrフィールドは転送が完了すると自動的に更
新される。
1:30を11にビット29:0を0xFFFF_FFFFに設定することに
よって実行される。この命令の主な目的は、ソフトウェ
アおよびバースト命令の実行の間の同期化メカニズムを
提供することである。バースト命令待ち行列30に同期
命令syncを書き込むことによって、他のいかなるバース
ト命令も該待ち行列に置くことが防止される。これは、
いかなる1時点においてもその待ち行列には1つのsync
命令が存在するだけであること、および同期命令の読み
取りがその待ち行列が空であることを示すことを意味す
る。同期コマンドはDMAアクセスを始動させないが、
同期レジスタに連係する同期メカニズムを活動状態にす
る。同期命令の使用は以下に更に説明される。
AT)65が示されている。これは、バースト処理に必
要とされるメイン・メモリ位置に関連する情報を保有す
るメモリ記述子テーブルである。MATの各エントリ
は、メイン・メモリに対するトランザクションを記述す
るインデックス付けされたスロットである。本実施形態
中では、MAT65は16個のエントリを持つが、当然
のことながら異なる形態も可能である。各エントリは、
次の3つのフィールドを含む。 1. メモリ・アドレス(memaddr)−メイン・メモリの該当
する領域の開始アドレス。仮想アドレス変換によって2
つの物理ページにわたるバースト要求が発生し、そのた
めメモリ・コントローラにとって困難が生じることにな
る可能性があるので、このメモリ位置は理想的には物理
的メモリ・アドレスであることが望ましい。 2. 範囲(extent)−転送範囲。これは、ストライドを乗
算された転送長であり、転送される最後のアドレスに1
を加えたものである。転送の長さは、範囲をストライド
によって除することによって計算され、転送の完了後関
連するBAT66のbufsizeフィールド(下記参照)に自
動的にコピーされる。 3. ストライド(stride)−転送における連続エレメント
間の間隔 フィールドの各々は、通常メモリ・マップ・レジスタと
して読み取られる。各レジスタは32ビット幅である
が、次の表5に示されるように、選択されたたフィール
ドだけが書き込み可能である。
あって、経路バーストの最初のエレメントのワード境界
整列のアドレスである。境界整列されてない値は、切り
捨てによって自動的に整列される。このレジスタの読取
りは、バーストのために使用される値を返す。 extent:範囲レジスタのパラメータは、バースト転送の
範囲を示すオフセットされたアドレスである。転送がS
というストライドだけ間隔を置いたL個のレメントを必
要とするとすれば、範囲はS*Lである。バーストがメモ
リ・コントローラによって実行される時、この値にmema
ddr値を加えた値がバッファ域のサイズより大きけれ
ば、bufcntl.buffer_overrun_warnフラグが設定され
る。結果として生じるバーストは、バッファ区域の最初
にラップされる。デフォルト値はゼロで、転送がないこ
とを示す。 stride:パラメータstrideは、アクセスの間スキップさ
れるバイトの数である。転送ストライド間隔値は、1か
ら1024の範囲に限定される。1024を越える値は
自動的に1024にされ、bufcntl.stride_overrun_war
nフラグが設定される。このレジスタの読取りは、バー
ストに使用される値を返す。ストライドは、また、この
場合4バイトであるメモリ・バス幅の倍数である。4バ
イトの倍数に整列させるため自動的切り捨てが行われ
る。デフォルト値はゼロで、これは1というストライド
長さに等しい。
を示せば、 {0x1feelbad, 128, 16} である。これは、それぞれが4個の4バイト長ワードの
間隔をおいた32個の4バイト長ワードとなる。
もMAT65にとって意味を持つ。このビットがバース
ト命令において設定されていれば、開始アドレス・エン
トリは、バーストが連続している限り次のメモリ位置に
次々と増加される。これは、長いシーケンスのメモリ・
アクセスにおける次のバーストに関する開始アドレスを
計算するプロセッサ・オーバーヘッドを節約する。
テーブル(BAT)66を説明する。これもまたメモリ記
述子テーブルであるが、この場合はバースト・バッファ
・メモリ区域26に関連する情報を保有する。BAT6
6の各エントリは、バースト・バッファ・メモリ区域2
6に対するトランザクションを記述する。MAT65の
場合と同様に、BAT66は16個のエントリを含む
が、別の形態も当然のことながら可能である。本実施形
態では、各エントリは次の2つのフィールドを含む。 1. バッファ・アドレス(bufaddr)−バッファ区域のバッ
ファの開始アドレス。 2. バッファ・サイズ(bufsize)−最後の転送に使用され
るバッファ区域のサイズ。 フィールドの各々は、この場合も、通常メモリ・マップ
・レジスタとして読み書きされる。MAT65の場合と
同様に、各レジスタは32ビット幅であるが、下記表6
に記述されるように、レジスタ内の選択されたフィール
ドだけが書き込み可能である。すべての書き込み禁止ビ
ットは常にゼロとして読み取られる。
は、バッファ区域の経路バーストの最初のエレメントに
対するオフセットされたアドレスである。バースト・バ
ッファ区域は、ハードウェアによってプロセッサのメモ
リ空間の1つの領域に物理的にマップされる。これは、
バースト・バッファ区域にアクセスする時プロセッサは
絶対アドレスを使用しなければならないことを意味す
る。しかし、DMA転送は単にオフセットを使用するの
で、ハードウェアが所望のアドレス決定を管理する必要
がある。無効な境界整列は切り捨てによって調整され
る。このレジスタの読取りはバーストに使用される値を
返す。デフォルト値はゼロである。
よって占有されるバッファ区域内の領域のサイズであ
る。このレジスタは、そのエントリに向けられたバース
ト転送が完了次第設定される。ゼロという値が未使用バ
ッファ・エントリを示すので、記憶される値はバースト
長である点注意する必要がある。このレジスタは書き込
みされるが、バッファが保存され復元される場合文脈切
り替えの後に役立つだけである。デフォルト値はゼロで
ある。
は、文脈テーブル62である。これは、入力としてバー
スト命令のインデックスを取り出し、MAT65および
BAT66において使用されるべき対応するスロットを
出力として与える。文脈テーブル62のエントリは、バ
ースト命令によってアクセスされるエントリの領域を制
御するために使用される。文脈テーブル62の機能をソ
フトウェアの形態で実施することも可能である。文脈テ
ーブルの使用は、バッファ・アーキテクチャの効率的管
理にとって利点がある。
に特に役立つ。システムの文脈を変更する必要性を示す
3つの事象は、内部トラップまたは例外、スレッド切り
替え信号および外部割り込みである(スレッドとはプロ
セッサ実行の基本単位であり、単一シーケンスの計算処
理のために必要とされたプロセッサ状態からなる)。上
記事象のいずれも、バースト・バッファ・インターフェ
ース資源を新しいスレッドが使用する必要性を確立す
る。文脈テーブルは、システム制御およびMAT65な
らびにBAT66の間に付加的間接部分を加えることに
よってそのような事象の影響を最小限にとどめる。コン
パイルの際複数のスレッドがMAT65とBAT66に
おける同等のスロット領域を使用するように構成され、
相互干渉なしに実行することができるように、オペレー
ティング・システムによってそれらスレッドに異なる文
脈識別子が与えられる。
子が制御レジスタに書き込まれ、このメカニズムを使用
して、各スレッドがテーブルの異なるスロット領域を使
用するようにコンパイル時にオフセットがインデックス
値に追加される。十分なテーブル資源が利用可能である
と仮定すれば、上記メカニズムは、文脈切り替えの間の
テーブル状態の保存復元を防止する。
は、8個のエントリを持っているが、実施形態によって
どのような整数値の数のエントリを持つことも可能であ
る。各エントリは次の4つのフィールドを含む。 1. メモリ・オフセット(memoffset)−これはマスク(下
記参照)の後バースト命令のMATに加えられるオフセ
ットである。これは、MAT65をインデックスするた
めに使用される値である。 2. メモリ・マスク(memmask)−これは、オフセットの追
加の前にバースト命令のMATインデックス・フィール
ドに適用されるマスクである。 3. バッファ・オフセット(bufoffset)−これはマスク
(下記参照)の後バースト命令のBATに加えられるオフ
セットである。これは、BAT66をインデックスする
ために使用される値である。 4. バッファ・マスク(bufmask)−これは、オフセットの
追加の前にバースト命令のBATインデックス・フィー
ルドに適用されるマスクである。
ATおよびBATの連続スロット・セットが定義される
ことを可能にする。これは、複数のバースト・バッファ
計算がMAT65およびBAT66において行われるの
で望ましい。文脈テーブル62のマスク機能の重要性は
以下の例によって理解されるであろう。ある特定の文脈
が、バッファ・アクセス・テーブルのエントリ2、3、4
および5の使用を必要とする場合を仮定する。バースト
命令の増分によって、例えば値が10から20へ増加する。
3というバッファ・マスクの使用によって、形式パター
ンは2, 3, O, 1,2, 3, O, 1, 2, 3, Oとなる。次に、2
というオフセットの使用によって、必要とされるエント
リの範囲をインデックスするためのパターンは、4, 5,
2, 3, 4,5, 2, 3, 4, 5, 2となる。別の文脈は、別の文
脈テーブル・エントリを使用してアクセスされる別の範
囲のエントリを使用することとなる。この方法は、外部
および内部ループを含む文脈間の高速切り替えを可能に
する。上述のように、このような文脈切り替えは制御レ
ジスタ52で提供されるが、バッファ・コントローラで
提供することも可能である。しかしながら、このような
バッファ資源管理機能をソフトウェアで実施することも
できる点は注意されるべきである。
義される。 memoffset:このパラメータは、MAT65のエントリ
にアクセスするために使用されるオフセットを定義す
る。テーブル・サイズが16であるので、この最大値は
16である。それより高い値は16へ自動的に切り捨て
られ、負の値は許容される。 memmask:このパラメータは、MAT65のエントリに
アクセスするために使用されるマスクを定義する。テー
ブル・サイズが16であるので、許容される最大値は1
5である。これは値の最下位4ビットを使用することに
対応し、他のどのビット・セットも無視される。 bufoffset:このパラメータは、BAT66のエントリ
にアクセスするために使用されるオフセットを定義す
る。テーブル・サイズが16であるので、この最大値は
16である。それより高い値は16へ自動的に切り捨て
られ、負の値は許容される。 bufmask:このパラメータは、BAT66のエントリに
アクセスするために使用されるマスクを定義する。テー
ブル・サイズが16であるので、許容される最大値は1
5である。これは値の最下位4ビットを使用することに
対応し、他のどのビット・セットも無視される。
ファ・コントローラ54からロードまたはストアからな
る命令と共に、MAT65から添付されるメイン・メモ
リ・アドレス、ストライドおよび転送長を、またBAT
66からバッファ・アドレスを受け取る。メモリ・コン
トローラ構成の要件は、MAT65に関して定義される
最大のサイズおよびストライドのバースト要求がサポー
トされること、ページ境界横断が透過的方法で取り扱わ
れること、および転送が完了した時点を標示するハンド
シェーキング信号が提供されることである。
ートしていない。しかしながら、仮想DMAをサポート
するように構成されるDMAコントローラを用いれば、
上述のようなバースト・アーキテクチャが動作するよう
に構成できる点は、当業者に認められるであろう。本実
施形態に記述されているシステムは、また、メモリ・キ
ャッシュを含むアーキテクチャにおいて動作することが
できるが、バースト・バッファ動作の事象においてメイ
ン・メモリとそのようなキャッシュの間の整合性を確認
するためには適切な処理ステップの実行が必要とされる
であろう。例えば、より高い優先度のDMAプロセスを
可能にするためバースト・バッファ動作を中止する必要
がある場合、割り込みシステムを提供すなければならな
いであろう。デバッグ機能の支援のため警告フラッグを
セットする必要があるかもしれない。
並列的にデータをバースト処理するようにアーキテクチ
ャはプログラムされるので、連続するバーストのそれぞ
れの後にバースト・バッファの名前を変更することがで
きるという利点がある。これによって、プロセッサは、
1つのバッファから代替バッファへ自動的に切り替えを
行うことが可能とされる。そのような場合、代替バッフ
ァが次の計算処理ブロックのため(バースト命令を介し
て)書き込まれている間、一方のバッファは計算処理の
ため使用される。バーストおよび計算処理が完了する
と、それらバッファの名前が変更(スワップ)され、プロ
セスは再び続行する。
つのレジスタ・フィールドを含むように拡張される。 オリジナル・フィールド:buffer_start_ad_ dress, bu
ffer_size 新フィールド:buffer_offset_A, buffer_offset_B, Se
lect_bit 上記のbuffer_offset_Aおよび buffer_offset_Bは、等
しいサイズの2つのバッファの2つの開始アドレスを含
むようにコンパイラによってプログラムされる。これら
のバッファは、2ポート・バースト・バッファ・メモリ
26に存在しなければならない。select_bitレジスタは
1または0を含み、1はbuffer_offset_Bが選択されること
を示し、0はbuffer_offset_Aが選択されることを示す。
このBATスロットを参照する命令が発信される場合、
その命令がバースト命令待ち行列30に書き込まれた直
後に、Select_bitは、バースト・バッファ・コントロー
ラによって自動的に反転される。次に、バースト・バッ
ファ・コントローラは、新しく選択されたbuffer_offse
t_Xアドレスを(オリジナルのBATフィールドにおけ
る)buffer_start_addressフィールドへコピーする。計
算処理のため使用されるバッファを標示するためプロセ
ッサ上で実行中のプログラムによって読み取られるの
は、このエントリである。発信された命令は、後刻、バ
ースト・バッファ・アーキテクチャによってバースト命
令待ち行列30から取り出され、処理される。その時点
で、DMAコントローラ56に渡されるバッファ・アド
レスは、select_bitによって選択されてない代替buffer
_offset_Xアドレス・レジスタからコピーされる。次の
表7のコードはこのプロセスを処理するプログラムの例
である。
におけるバースト命令の処理を以下図7を参照して説明
する。バースト動作はバースト命令の発信によって始動
される。上述のように、この命令は、MAT65のエン
トリへのインデックスおよびBAT66のエントリへの
インデックスを含む。前述のように、MATエントリ
は、メイン・メモリの開始アドレス、転送の範囲および
ストライドを含み、一方、BATエントリは、バッファ
領域26における目標アドレスと共に、このエントリを
使用して完了される最後の転送の長さ(すなわちバッフ
ァ・サイズ)を含む。
ースト命令待ち行列30に置かれる。この構造は、DR
AMからのデータのバースト処理とプロセッサによるデ
ータのアクセスの間の切り離しを可能にする。この切り
離しは、「事前取り出し」の性能利得を達成するために
必要である。「事前取り出し」は、データがプロセッサ
によって必要とされる前にメイン・メモリからデータを
取得し、プロセッサその事前取得したデータに対して同
時に動作するプロセスである。プロセッサは、単一のサ
イクルにおいて命令を待ち行列に渡し、次に動作を続行
する。このように、バースト命令は「非割り込み型」と
述べることができる。すなわち、バースト命令は完了す
るまでプロセッサの停止を強制しない(しかしながら、
場合によってはプロセッサを停止させる実施形態もあ
る。例えば、 新しいバースト命令が出される時新しい
バースト命令のための空間がが利用できるようになるま
でバースト命令待ち行列30がいっぱいであるような場
合である)。バースト命令待ち行列30はDMAコント
ローラ56によって読み取られる。DMAコントローラ
56は、バースト命令に代わってメイン・メモリDRA
M14にアクセスする準備ができている時(すなわちバ
ースト・バッファ・インターフェースが優先権を持って
いる時)、待ち行列の次の命令を読み取りその命令の実
行を開始する。
ト命令実行における独立した4つのフェーズをとる。第
1は、命令が出された直後の「保留」フェーズであり、
命令はバースト命令待ち行列30に格納されている。命
令が待ち行列にあってDMAコントローラ56によって
認識されると、Dまプロセスが実行される。これは「転
送」フェーズである。転送フェーズが完了すると、バッ
ファ領域26のバースト・バッファとメイン・メモリ1
4の対応する領域の内容が同一となる(またそのトラン
ザクションに適切な警告フラグがセットされる)。そこ
で、バースト・バッファは「有効」と呼ばれ、その結果
「有効」フェーズが始動される。これは、バッファ領域
26のバースト・バッファとメイン・メモリ14の対応
する領域の対応関係を変化させるなにがしかの事象が発
生するまで、継続する。そのような変化の事象が発生す
ると、バースト・バッファは「無効」と呼ばれ、その結
果「無効」フェーズが始動される。
メモリの領域の間の関連性を定義するが、このような結
合動作は命令が実行される実行時にのみ発生する。この
実行時結合は、本アーキテクチャを使用する際の柔軟性
および低いプロセッサ命令オーバーヘッドの主要要因を
なすものである。両者の間で維持される相互関係はない
が、バッファ名変更および再使用が許容される。移転フ
ェーズの間に、本アーキテクチャは、bufcntl.transfer
ビットに従って命令にラベルをつける。その他のフェー
ズは、ソフトウェアを通して追跡されるかまたは追跡可
能である。
に、関連バースト命令で指示されたバースト転送が完了
したという標示である。これは、バースト命令直後の同
期命令syncのソフトウェアによる発信によって検出され
ることができる。上述の通り、バースト命令待ち行列3
0は1時点で1つの同期命令しか含むことができないの
で、待ち行列が同期命令を含む間は更なるバースト命令
をバースト命令待ち行列に書き込むことはできない。同
期命令syncを使用して同期化を実行するために使用でき
る次の3つの方法がある。 1. 同期命令を発信し同期レジスタを読み取る。待ち行
列の中のすべてのバースト命令が完了し同期命令が出現
するまで読取りが禁止される。 2. 同期命令を発信し、次に待ち行列にもう1つのバー
スト命令を書き込む。この場合は、待ち行列の中のすべ
てのバースト命令が完了し同期命令が出現するまで書き
込みが禁止される。 3. 同期命令を発信し同期命令に関してlastcmdレジスタ
をポーリングする。 方法1および2はプロセッサをブロックするが、方法3
はブロックしない。バッファ領域がその有効フェーズに
あれば、プロセッサは、それが含むデータに動作するこ
とができる。本実施形態では、プロセッサはバイト、ハ
ーフワードおよびワード単位のアクセスを使用してバッ
ファのデータにアクセスする。
2の実施形態へ原始コードをコンパイルするプロセスを
以下に記述する。本実施形態のバースト・バッファ・ア
ーキテクチャは、大規模なデータ・アレイに関して反復
される単純な動作を含む通常の単純なループ構造を取り
扱う場合、特に効果的である。そのようなループ構造に
は、例えば、媒体計算処理においてしばしば出会うこと
がある。バースト・バッファ・アーキテクチャへのコー
ドのコンパイルは、原始コードにおける該当ループを識
別して、それらループがバースト・バッファを利用して
オリジナルの動作を正しく実行することができるよう
に、それらループを再構築することを必要とする。
ができる。代替的方法として、既知の技術によって適切
なループを識別することもできる(例えば、1つの方法
が"Compiler Transformations for High- Performance
Computing " David F Bacon Susan L Graham and Olive
r J.Sharp, Technical Report No.UCB/CSD-93-781, Uni
versity of California, Berkeleyに記載されている)。
識別されたなら、それらループは、バースト・バッフ
ァによって利用されることができる形式に、正しく変換
される必要がある。
る。バースト・バッファを通して処理されるためには、
ループは、各々が1バーストのサイズである一連の断片
に広げられる必要がある。その後、一連のバースト・ロ
ードおよびストアという観点から本アーキテクチャによ
るループの取り扱いを定義することが可能となる。しか
しながら、バースト・バッファはソフトウェアによって
制御される資源であるので、ロードまたはストア・バー
スト命令が出される前、およびバッファが計算処理の目
標として使用される前に、バッファを割り当てることが
必要である。ロードおよび割当てに続いて、計算処理が
実行される。このような方法は、識別したループを上記
のように複数の断片に広げた場合、またはループそれ自
体が1つのバーストより小さい場合に適用される。計算
処理の直後に、storeburst命令を使用してバッファに記
憶され、入力バッファが解放される。storeburst命令が
完了すれば、出力バッファも解放される。以下の表8
は、上記動作を行うコードの1例を示す。
フが図8に示されている。例えば、目標をバッファ04に
向けた計算処理は、バッファ01、02および03のloadburs
tにのみ依存するが、出力バッファ04自体の割り当てに
も依存する。図8上の括弧の中の番号はノード識別子で
ある。ここで変換されているコードは、単純ではあるが
相対的に役立たないスケジュールを作成する。これは,
利用できる並列機能が開拓されなかった(すなわちコー
ドがバースト命令を出している時計算処理が実行されて
いないまたはその逆)ためである。依存性グラフの分析
を使用すれば、一層すぐれたスケジュールを生成するス
ケジューリング・プログラムを駆動させることができ
る。この場合、追加のバースト・バッファの使用を通し
て改善が図られる。
は、各入力ストリームのための1つに計算処理を実行す
るためのものを加えた数である(計算処理用のバッファ
は計算処理が完了した後、空にし、解放し,次の計算処
理のため割り当てられる)。リスト・スケジューリング
およびバッファ割当ての考察を通して、改善されるスケ
ジュールを見出すことができる。可能な限り効率的にD
RAMメモリ・バンド幅を使用するためバースト効率を
最適化する解決策は測定可能である。これは、計算効率
を最大にすることを目標とする通常の計算戦略とは異な
る。相違は、本発明が考慮するシステムの主要制約がバ
ンド幅にあることによる。
メモリおよびバッファ・アクセス・テーブルはバッファ
名変更をサポートする。コンパイラの目的の1つは、断
片掘り出しと呼ばれるプロセスを使用して潜在的バース
トを露顕させるようにループを変換することである。ル
ープが断片掘り出しされると、モジュール・スケジュー
リング(またはソフトウェア・パイプライン化)と呼ばれ
る次のプロセスが適用される。この後者のプロセスは、
部分的に広げられたループ内の特定の点でバッファ名が
変更されることを必要とする。例えば、ループ計算処理
は、'A'と名付けられた論理的バッファが物理的バッフ
ァ'2'からバッファ'5'へマップされることを必要とする
かもしれない。この例では、別のバッファがプロセッサ
によって計算処理のためアクセスされている間に、1つ
の物理的バッファがメモリへのバースト転送のために使
用されることができる。バースト動作および計算処理が
並列に動作し、従って、処理性能が向上する。
ない更なる機能は、メモリ・バス幅(本実施形態のケー
スでは32ビット)の幅を持つバーストだけがバースト
・バッファ・アーキテクチャによって処理されることが
できるので、ソフトウェアにおけるsizedburstをチャネ
ル−バーストへ変換することである。コンパイルの間、
ソフトウェアによって検出されるsizedburstはchanelbu
rstへマップされる。
4使用の典型例を記述する。第1に、バースト・バッフ
ァは局所的データ・バッファとして使用され、バッファ
・サイズのメモリ領域がバースト・バッファ40へ直接
マップされる。これは次の2つの方法で実施されること
ができる。(1)データが初期化されていなければ、alloc
bufferコマンドを使用して、バッファ40が取得されア
ドレス・マッピングが実行される。(2)データがメイン
・メモリ14で初期化されていれば、loadburstを使用
してデータがバースト・バッファ40へコピーされる。
マッピングが行われたなら、プロセッサ10は同じアド
レスへのアクセスを継続し、それらアドレスがバッファ
40によって捕捉される。完了時点、またはシステムが
整合している必要がある時、storebufferコマンドが使
用される。第2に、バースト・バッファ・システム24
は参照テーブルとして使用される可能性がある。局所的
データ・バッファとまったく同じ方法で、バースト・バ
ッファ40は、loadburstコマンドを使用して参照テー
ブル・データで初期化されることもできる。バッファを
ヒットするアドレスへの参照は適切なデータを返す。テ
ーブル・サイズは制限されるが、より大きいテーブルの
一部をバッファ40へ配置し残りをメイン・メモリ14
に置くことができない理由はない。バッファ40に保持
される区域が最も頻繁に使用されれば、性能向上に役立
つ。整合性はこの場合問題でない。従って、テーブルの
使用が完了したならば、freebufferコマンドが出されな
ければならない。
は、バースト・バッファ40が単純なFIFOとして使
用されることができないかもしれないということであ
る。アドレスはバッファの中のデータをアクセスするた
めに常に使用されなければならない。このバッファをあ
たかもFIFOであるかのようにみせるラップ機構をソ
フトウェアで開発することは可能である。しかしなが
ら、バッファが論理的にいっぱいになった時ストア・バ
ーストが出されることを意味するバッファ・サイズ分の
ロードおよびストア・バーストの遅延という点でのFI
FO機能性を模倣するため遅延カウントが使用される。
て、バースト・データがメイン・メモリ14からバース
ト・バッファ・メモリ26へ読み込まれ、プロセッサ1
0/プロセッサ・インターフェース12によって処理さ
れ、バースト・バッファ・メモリ26へ戻され、次にメ
イン・メモリ14に書き込まれる。別の実施形態におい
ては、プロセッサ10/プロセッサ・インターフェース
12によって実行される処理の代わりに、バースト・バ
ッファ・メモリ26に接続される専用計算エンジンによ
ってそれが実行される。
施形態に対し種々の変更を行うことができる点は認めら
れるであろう。
が含まれる。 (1)データを処理する処理システムと、上記処理シス
テムによって処理されるデータまたは該システムによっ
て処理されるべきデータを記憶するメモリと、上記メモ
リへのアクセスを制御するメモリ・アクセス・コントロ
ーラと、上記メモリとの間で読み書きされるべきデータ
をバッファするための少くとも1つのデータ・バッファ
と、上記メモリ・アクセス・コントローラへバースト命
令を発信する手段と、上記メモリ・アクセス・コントロ
ーラへ発信されるバースト命令を待ち行列に記憶する手
段と、を備えるコンピュータ・システムであって、上記
メモリ・アクセス・コントローラが上記バースト命令に
応答して単一のメモリ・トランザクションで上記メモリ
と上記データ・バッファの間で複数のデータ・ワードを
転送し、上記待ち行列記憶手段によって、先行バースト
命令が実行された直後に次のバースト命令が上記メモリ
・アクセス・コントローラによる実行のため使用可能な
状態にされることを特徴とする、コンピュータ・システ
ム。 (2)上記バースト命令のうちの少くとも1つが遅延パ
ラメータを含み、上記バースト命令発信手段が、上記遅
延パラメータに従って上記メモリ・アクセス・コントロ
ーラへのそのような命令発信を遅延するように動作す
る、上記(1)に記載のコンピュータ・システム。 (3)上記バースト命令の各々が、そのバースト命令に
応答してアクセスされるべきメモリ位置の間の間隔を定
義するパラメータを含むかあるいはそのようなパラメー
タに関連づけられる、上記(1)または(2)に記載の
コンピュータ・システム。
上記処理システムによって処理されるまたは該システム
によって処理されるべきデータを記憶するメモリと、上
記メモリへのアクセスを制御するメモリ・アクセス・コ
ントローラと、上記メモリとの間で読み書きされるべき
データをバッファするための少くとも1つのデータ・バ
ッファと、上記メモリ・アクセス・コントローラへバー
スト命令を発信する手段と、を備えるコンピュータ・シ
ステムであって、そのようなバースト命令の各々が、そ
のバースト命令に応答してアクセスされるべきメモリ位
置の間の間隔を定義するパラメータを含むかあるいはそ
のようなパラメータに関連づけられ、上記メモリ・アク
セス・コントローラが、上記バースト命令に応答して、
上記間隔パラメータに従った間隔をあけたメモリ位置と
上記データ・バッファの間で複数のデータ・エレメント
を単一トランザクションで転送することを特徴とする、
コンピュータ・システム。 (5)上記処理システムからのメモリ要求に応答して、
対応するメモリ位置がデータ・バッファにマップされて
いるか否かを判断し、マップされていればデータ・バッ
ファのマップされている位置にアクセスするように動作
する比較手段を更に備える、上記(1)乃至(4)のい
ずれかに記載のコンピュータ・システム。 (6)バースト命令をメモリ・アクセス・コントローラ
に発信する上記手段が、メモリに対するトランザクショ
ンの記述のためのメモリ・アクセス・テーブルおよび少
くとも1つのデータ・バッファに対するトランザクショ
ンの記述のためのバッファ・アクセス・テーブルを含
み、発信されるバースト命令の各々が、上記メモリ・ア
クセス・テーブルおよび上記バッファ・アクセス・テー
ブルをインデックスする、上記(1)乃至(4)のいず
れかに記載のコンピュータ・システム。 (7)バースト命令に関して、メモリおよび少くとも1
つのデータ・バッファの間のトランザクションを定義す
るため、メモリ・アクセス・テーブルおよびバッファ・
アクセス・テーブルにおける情報が実行時に結合され
る、上記(6)に記載のコンピュータ・システム。
コントローラに発信する上記手段が、バースト命令によ
る上記メモリ・アクセス・テーブルおよび上記バッファ
・アクセス・テーブルのインデックス付けを文脈に応じ
て修正するための文脈テーブルを含む、上記(6)また
は(7)に記載のコンピュータ・システム。 (9)バースト命令のうちの少くとも1つが、データ・
バッファに1時点で記憶することができるものより多い
数のデータ・エレメントに関連し、そのような命令に応
答して当該システムが一連のバースト命令を実行するよ
うに動作する、上記(1)乃至(8)のいずれかに記載
のコンピュータ・システム。 (10)そのようなデータ・バッファの数をハードウェ
アまたはソフトウェアの制御の下当該システムによって
構成することが可能な、上記(1)乃至(9)のいずれ
かに記載のコンピュータ・システム。 (11)少くとも1つのデータ・バッファが2ポート・
メモリ内で提供され、2ポートのうちの1つのポートが
上記処理システムによってアクセスされ、他のポートが
メモリによってアクセスされる、上記(1)乃至(1
0)のいずれかに記載のコンピュータ・システム。 (12)上記2ポート・メモリが上記処理システムおよ
び上記メモリによって同時にアクセスされることができ
る、上記(11)に記載のコンピュータ・システム。 (13)上記処理システムが、主マイクロプロセッサ、
および、データ・バッファのデータを処理するように構
成されたコプロセッサを含む、上記(1)乃至(12)
のいずれかに記載のコンピュータ・システム。 (14)上記処理システムが、主マイクロプロセッサ、
および、データ・バッファのデータを処理するように構
成された独立計算処理エンジンを含む、上記(1)乃至
(12)のいずれかに記載のコンピュータ・システム。
かに記載のコンピュータ・システムにおいて実行される
方法であって、少なくとも1つのデータ・バッファへコ
ンパイルすることが適切な,あるいは少なくとも1つの
データ・バッファの支援の下での実行に適切な計算処理
エレメントを原始コードの中で識別するステップと、原
始コードの中の上記識別した計算処理エレメントを、各
々が少くとも1つのデータ・バッファのサイズより大き
くないメモリ・トランザクションを含む一連の命令に変
換し、そのような命令をバースト命令として表すステッ
プと、上記処理システムによって原始コードを実行し、
上記少なくとも1つのデータ・バッファに対するアクセ
スを通して上記識別した計算処理エレメントを処理する
ステップと、を含む方法。 (16)上記識別した計算処理エレメントによって必要
とされるデータが、上記処理システムによって要求され
る前にメモリから少くとも1つのデータ・バッファへ取
り出される、上記(15)に記載の方法。 (17)メモリと少くとも1つのデータ・バッファの間
のトランザクションが完了するまで処理システムを停止
させる手段が提供される、上記(15)または(16)
に記載の方法。
媒体データを処理するために適したキャッシュ・システ
ムが実現し、メモリ・アクセスのバンド幅の極大化が図
られる。
実施形態のブロック図である。
メモリおよびバースト命令待ち行列がハードウェアまた
はソフトウェア制御の下で構成される種々の形態を図3
と共に示すブロック図である。
メモリおよびバースト命令待ち行列がハードウェアまた
はソフトウェア制御の下で構成される種々の形態を図2
と共に示すブロック図である。
実施形態におけるバースト・バッファ・アーキテクチャ
を示すブロック図である。
図である。
おける制御レジスタの機能を示すブロック図である。
よるバースト命令の実行の流れを示すブロック図であ
る。
相互関係を示すグラフ図である。
セス・コントローラ 18 SRAM命令キャッシュ 19 SRAMデータ・キャッシュ 20a、20b、21a、21b、36a、36b、3
6c、36d、38a、38b、38c、38d 経
路 22 データ・キャッシュ・バイパス・ロード/スト
ア経路 24 バースト・バッファ・システム 26 バースト・バッファ・メモリ 28 範囲比較機構28 30 バースト命令待ち行列 32 バースト・コントローラ 34 パラメータ記憶機構 52 バースト制御レジスタ 54 バッファ・コントローラ 56 DMAコントローラ 58 メモリ・データ経路アービタ 61 バースト命令フィールド 62 文脈テーブル 63 スワップ機構 64 ループ/文脈レジスタ 65 メモリ・アクセス・テーブル(MAT) 66 バッファ・アクセス・テーブル(BAT)
Claims (1)
- 【請求項1】データを処理する処理システムと、 上記処理システムによって処理されるデータまたは該シ
ステムによって処理されるべきデータを記憶するメモリ
と、 上記メモリへのアクセスを制御するメモリ・アクセス・
コントローラと、 上記メモリとの間で読み書きされるべきデータをバッフ
ァするための少くとも1つのデータ・バッファと、 上記メモリ・アクセス・コントローラへバースト命令を
発信する手段と、 上記メモリ・アクセス・コントローラへ発信されるバー
スト命令を待ち行列に記憶する手段と、 を備えるコンピュータ・システムであって、 上記メモリ・アクセス・コントローラが上記バースト命
令に応答して単一のメモリ・トランザクションで上記メ
モリと上記データ・バッファの間で複数のデータ・ワー
ドを転送し、上記待ち行列記憶手段によって、先行バー
スト命令が実行された直後に次のバースト命令が上記メ
モリ・アクセス・コントローラによる実行のため使用可
能な状態にされることを特徴とする、 コンピュータ・システム。
Applications Claiming Priority (4)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| EP97300113A EP0853283A1 (en) | 1997-01-09 | 1997-01-09 | Computer system with memory controller for burst transfer |
| GBGB9723704.4A GB9723704D0 (en) | 1997-11-11 | 1997-11-11 | Computer systems |
| GB97300113.4 | 1997-11-11 | ||
| GB9723704.4 | 1997-11-11 |
Publications (3)
| Publication Number | Publication Date |
|---|---|
| JPH10232826A true JPH10232826A (ja) | 1998-09-02 |
| JPH10232826A5 JPH10232826A5 (ja) | 2005-06-23 |
| JP4142141B2 JP4142141B2 (ja) | 2008-08-27 |
Family
ID=26147251
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP35991697A Expired - Fee Related JP4142141B2 (ja) | 1997-01-09 | 1997-12-26 | コンピュータ・システム |
Country Status (3)
| Country | Link |
|---|---|
| US (2) | US6321310B1 (ja) |
| JP (1) | JP4142141B2 (ja) |
| DE (1) | DE69727465T2 (ja) |
Cited By (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2001290705A (ja) * | 2000-04-07 | 2001-10-19 | Nintendo Co Ltd | オンチップキャッシュのソフトウェア管理方法および装置 |
| JP2003501775A (ja) * | 1999-06-15 | 2003-01-14 | ヒューレット・パッカード・カンパニー | プロセッサおよびコプロセッサを含むコンピュータ・アーキテクチャ |
| JP2003502728A (ja) * | 1999-06-15 | 2003-01-21 | ヒューレット・パッカード・カンパニー | プロセッサおよびコプロセッサを含むコンピュータ・システム |
| JP2007525727A (ja) * | 2003-04-16 | 2007-09-06 | ザ マスワークス, インク | ブロックモデリング入出力バッファー |
| JP2010146084A (ja) * | 2008-12-16 | 2010-07-01 | Toshiba Corp | キャッシュメモリ制御部を備えるデータ処理装置 |
| JP2024020270A (ja) * | 2017-07-05 | 2024-02-14 | グーグル エルエルシー | 特殊目的計算ユニットを用いたハードウェアダブルバッファリング |
Families Citing this family (39)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP4354583B2 (ja) * | 1999-09-09 | 2009-10-28 | 独立行政法人科学技術振興機構 | アクセス方法及びアクセス処理プログラムを記録した記録媒体 |
| GB2366426B (en) * | 2000-04-12 | 2004-11-17 | Ibm | Coprocessor data processing system |
| US6862653B1 (en) * | 2000-09-18 | 2005-03-01 | Intel Corporation | System and method for controlling data flow direction in a memory system |
| US6807587B1 (en) * | 2000-09-18 | 2004-10-19 | Xilinx Inc. | Methods and apparatuses for guaranteed coherency of buffered direct-memory-access data |
| US6711646B1 (en) * | 2000-10-20 | 2004-03-23 | Sun Microsystems, Inc. | Dual mode (registered/unbuffered) memory interface |
| US6557090B2 (en) | 2001-03-09 | 2003-04-29 | Micron Technology, Inc. | Column address path circuit and method for memory devices having a burst access mode |
| JP2002366509A (ja) * | 2001-06-06 | 2002-12-20 | Mitsubishi Electric Corp | ダイレクトメモリアクセスコントローラおよびそのアクセス制御方法 |
| US7139873B1 (en) * | 2001-06-08 | 2006-11-21 | Maxtor Corporation | System and method for caching data streams on a storage media |
| CN1280734C (zh) * | 2001-09-07 | 2006-10-18 | 皇家菲利浦电子有限公司 | 用于分段存取控制的控制装置和方法和具有该控制装置的视频存储器装置 |
| JP2003140886A (ja) * | 2001-10-31 | 2003-05-16 | Seiko Epson Corp | インストラクションセット及びコンパイラ |
| US20030126591A1 (en) * | 2001-12-21 | 2003-07-03 | Youfeng Wu | Stride-profile guided prefetching for irregular code |
| US7389315B1 (en) * | 2002-02-28 | 2008-06-17 | Network Appliance, Inc. | System and method for byte swapping file access data structures |
| US7222170B2 (en) * | 2002-03-14 | 2007-05-22 | Hewlett-Packard Development Company, L.P. | Tracking hits for network files using transmitted counter instructions |
| JP2003281084A (ja) * | 2002-03-19 | 2003-10-03 | Fujitsu Ltd | 外部バスへのアクセスを効率的に行うマイクロプロセッサ |
| GB0221464D0 (en) | 2002-09-16 | 2002-10-23 | Cambridge Internetworking Ltd | Network interface and protocol |
| US20050114619A1 (en) * | 2002-10-04 | 2005-05-26 | Takashi Matsuo | Data management system, data management method, virtual memory device, virtual memory control method, reader/writer device, ic module access device and ic module access control method |
| US7191318B2 (en) * | 2002-12-12 | 2007-03-13 | Alacritech, Inc. | Native copy instruction for file-access processor with copy-rule-based validation |
| CN100416494C (zh) * | 2003-04-15 | 2008-09-03 | 威盛电子股份有限公司 | 显示控制器读取系统存储器中的存储数据的方法 |
| US7055000B1 (en) | 2003-08-29 | 2006-05-30 | Western Digital Technologies, Inc. | Disk drive employing enhanced instruction cache management to facilitate non-sequential immediate operands |
| US20050063008A1 (en) * | 2003-09-24 | 2005-03-24 | Perry Lea | System and method of processing image data |
| JP4455593B2 (ja) * | 2004-06-30 | 2010-04-21 | 株式会社ルネサステクノロジ | データプロセッサ |
| US7962731B2 (en) * | 2005-10-20 | 2011-06-14 | Qualcomm Incorporated | Backing store buffer for the register save engine of a stacked register file |
| US7844804B2 (en) * | 2005-11-10 | 2010-11-30 | Qualcomm Incorporated | Expansion of a stacked register file using shadow registers |
| JP4690424B2 (ja) | 2005-12-26 | 2011-06-01 | パナソニック株式会社 | コマンド処理装置、方法、及び集積回路装置 |
| US8572302B1 (en) | 2006-10-13 | 2013-10-29 | Marvell International Ltd. | Controller for storage device with improved burst efficiency |
| US7617354B2 (en) * | 2007-03-08 | 2009-11-10 | Qimonda North America Corp. | Abbreviated burst data transfers for semiconductor memory |
| KR100891508B1 (ko) * | 2007-03-16 | 2009-04-06 | 삼성전자주식회사 | 가상 디엠에이를 포함하는 시스템 |
| US8806461B2 (en) * | 2007-06-21 | 2014-08-12 | Microsoft Corporation | Using memory usage to pinpoint sub-optimal code for gaming systems |
| US7730244B1 (en) * | 2008-03-27 | 2010-06-01 | Xilinx, Inc. | Translation of commands in an interconnection of an embedded processor block core in an integrated circuit |
| US8386664B2 (en) * | 2008-05-22 | 2013-02-26 | International Business Machines Corporation | Reducing runtime coherency checking with global data flow analysis |
| US8281295B2 (en) * | 2008-05-23 | 2012-10-02 | International Business Machines Corporation | Computer analysis and runtime coherency checking |
| US8285670B2 (en) * | 2008-07-22 | 2012-10-09 | International Business Machines Corporation | Dynamically maintaining coherency within live ranges of direct buffers |
| US9417685B2 (en) * | 2013-01-07 | 2016-08-16 | Micron Technology, Inc. | Power management |
| KR102449333B1 (ko) * | 2015-10-30 | 2022-10-04 | 삼성전자주식회사 | 메모리 시스템 및 그것의 읽기 요청 관리 방법 |
| US9965326B1 (en) * | 2016-06-27 | 2018-05-08 | Rockwell Collins, Inc. | Prediction and management of multi-core computation deration |
| US10108374B2 (en) * | 2016-07-12 | 2018-10-23 | Nxp Usa, Inc. | Memory controller for performing write transaction with stall when write buffer is full and abort when transaction spans page boundary |
| US10409727B2 (en) * | 2017-03-31 | 2019-09-10 | Intel Corporation | System, apparatus and method for selective enabling of locality-based instruction handling |
| US12066955B2 (en) * | 2021-05-19 | 2024-08-20 | Hughes Network Systems, Llc | System and method for enhancing throughput during data transfer |
| KR102918060B1 (ko) * | 2023-03-20 | 2026-01-26 | 리벨리온 주식회사 | 태스크 병렬 처리 방법 및 시스템 |
Family Cites Families (26)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US4099236A (en) | 1977-05-20 | 1978-07-04 | Intel Corporation | Slave microprocessor for operation with a master microprocessor and a direct memory access controller |
| JPS5840214B2 (ja) | 1979-06-26 | 1983-09-03 | 株式会社東芝 | 計算機システム |
| US4589067A (en) | 1983-05-27 | 1986-05-13 | Analogic Corporation | Full floating point vector processor with dynamically configurable multifunction pipelined ALU |
| US5121498A (en) | 1988-05-11 | 1992-06-09 | Massachusetts Institute Of Technology | Translator for translating source code for selective unrolling of loops in the source code |
| JPH02250138A (ja) | 1989-01-18 | 1990-10-05 | Fujitsu Ltd | メモリ制御装置 |
| JPH02250137A (ja) | 1989-01-18 | 1990-10-05 | Fujitsu Ltd | メモリ制御装置 |
| US5175825A (en) | 1990-02-02 | 1992-12-29 | Auspex Systems, Inc. | High speed, flexible source/destination data burst direct memory access controller |
| EP0447145B1 (en) | 1990-03-12 | 2000-07-12 | Hewlett-Packard Company | User scheduled direct memory access using virtual addresses |
| GB2250615B (en) | 1990-11-21 | 1995-06-14 | Apple Computer | Apparatus for performing direct memory access with stride |
| EP0549924A1 (en) | 1992-01-03 | 1993-07-07 | International Business Machines Corporation | Asynchronous co-processor data mover method and means |
| US6438683B1 (en) | 1992-07-28 | 2002-08-20 | Eastman Kodak Company | Technique using FIFO memory for booting a programmable microprocessor from a host computer |
| US5708830A (en) | 1992-09-15 | 1998-01-13 | Morphometrix Inc. | Asynchronous data coprocessor utilizing systolic array processors and an auxiliary microprocessor interacting therewith |
| JP3220881B2 (ja) | 1992-12-29 | 2001-10-22 | 株式会社日立製作所 | 情報処理装置 |
| US5590307A (en) * | 1993-01-05 | 1996-12-31 | Sgs-Thomson Microelectronics, Inc. | Dual-port data cache memory |
| JP3417984B2 (ja) | 1993-09-10 | 2003-06-16 | 株式会社日立製作所 | キャッシュ競合削減コンパイル方法 |
| US5603007A (en) * | 1994-03-14 | 1997-02-11 | Apple Computer, Inc. | Methods and apparatus for controlling back-to-back burst reads in a cache system |
| US5627994A (en) * | 1994-07-29 | 1997-05-06 | International Business Machines Corporation | Method for the assignment of request streams to cache memories |
| US5537620A (en) | 1994-09-16 | 1996-07-16 | International Business Machines Corporation | Redundant load elimination on optimizing compilers |
| US5664230A (en) * | 1995-05-26 | 1997-09-02 | Texas Instruments Incorporated | Data processing with adaptable external burst memory access |
| US6209071B1 (en) * | 1996-05-07 | 2001-03-27 | Rambus Inc. | Asynchronous request/synchronous data dynamic random access memory |
| US5884050A (en) | 1996-06-21 | 1999-03-16 | Digital Equipment Corporation | Mechanism for high bandwidth DMA transfers in a PCI environment |
| US6085261A (en) * | 1996-07-29 | 2000-07-04 | Motorola, Inc. | Method and apparatus for burst protocol in a data processing system |
| JPH10124447A (ja) * | 1996-10-18 | 1998-05-15 | Fujitsu Ltd | データ転送制御方法及び装置 |
| US5784582A (en) * | 1996-10-28 | 1998-07-21 | 3Com Corporation | Data processing system having memory controller for supplying current request and next request for access to the shared memory pipeline |
| US6006289A (en) * | 1996-11-12 | 1999-12-21 | Apple Computer, Inc. | System for transferring data specified in a transaction request as a plurality of move transactions responsive to receipt of a target availability signal |
| EP0853283A1 (en) | 1997-01-09 | 1998-07-15 | Hewlett-Packard Company | Computer system with memory controller for burst transfer |
-
1997
- 1997-11-26 DE DE69727465T patent/DE69727465T2/de not_active Expired - Lifetime
- 1997-12-26 JP JP35991697A patent/JP4142141B2/ja not_active Expired - Fee Related
-
1998
- 1998-01-06 US US09/003,526 patent/US6321310B1/en not_active Expired - Fee Related
-
2000
- 2000-06-20 US US09/599,030 patent/US6336154B1/en not_active Expired - Fee Related
Cited By (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2003501775A (ja) * | 1999-06-15 | 2003-01-14 | ヒューレット・パッカード・カンパニー | プロセッサおよびコプロセッサを含むコンピュータ・アーキテクチャ |
| JP2003502728A (ja) * | 1999-06-15 | 2003-01-21 | ヒューレット・パッカード・カンパニー | プロセッサおよびコプロセッサを含むコンピュータ・システム |
| JP2001290705A (ja) * | 2000-04-07 | 2001-10-19 | Nintendo Co Ltd | オンチップキャッシュのソフトウェア管理方法および装置 |
| JP2007525727A (ja) * | 2003-04-16 | 2007-09-06 | ザ マスワークス, インク | ブロックモデリング入出力バッファー |
| JP2010146084A (ja) * | 2008-12-16 | 2010-07-01 | Toshiba Corp | キャッシュメモリ制御部を備えるデータ処理装置 |
| JP2024020270A (ja) * | 2017-07-05 | 2024-02-14 | グーグル エルエルシー | 特殊目的計算ユニットを用いたハードウェアダブルバッファリング |
Also Published As
| Publication number | Publication date |
|---|---|
| JP4142141B2 (ja) | 2008-08-27 |
| US6336154B1 (en) | 2002-01-01 |
| US6321310B1 (en) | 2001-11-20 |
| DE69727465T2 (de) | 2004-12-23 |
| DE69727465D1 (de) | 2004-03-11 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP4142141B2 (ja) | コンピュータ・システム | |
| US20030145136A1 (en) | Method and apparatus for implementing a relaxed ordering model in a computer system | |
| US9323672B2 (en) | Scatter-gather intelligent memory architecture for unstructured streaming data on multiprocessor systems | |
| US5375216A (en) | Apparatus and method for optimizing performance of a cache memory in a data processing system | |
| US6076151A (en) | Dynamic memory allocation suitable for stride-based prefetching | |
| US4701844A (en) | Dual cache for independent prefetch and execution units | |
| JP3816586B2 (ja) | 先取り命令を生成する方法とシステム | |
| JP3218317B2 (ja) | 集積キャッシュユニットおよびその構成方法 | |
| JP3158161B2 (ja) | 集積キャッシュユニットおよび集積キャッシュユニットにおいてインターロック変数をキャッシュする方法 | |
| US6665749B1 (en) | Bus protocol for efficiently transferring vector data | |
| US6230259B1 (en) | Transparent extended state save | |
| US6782454B1 (en) | System and method for pre-fetching for pointer linked data structures | |
| JPH08272779A (ja) | コンピュータ・システム | |
| EP0439025A2 (en) | A data processor having a deferred cache load | |
| JP4599172B2 (ja) | フリーバッファプールを使用することによるメモリの管理 | |
| US5893159A (en) | Methods and apparatus for managing scratchpad memory in a multiprocessor data processing system | |
| JPH0689174A (ja) | コンピュータメモリシステム | |
| JPH04306748A (ja) | 情報処理装置 | |
| EP1039377B1 (en) | System and method supporting multiple outstanding requests to multiple targets of a memory hierarchy | |
| US7321964B2 (en) | Store-to-load forwarding buffer using indexed lookup | |
| US6738837B1 (en) | Digital system with split transaction memory access | |
| CN110291507A (zh) | 用于提供对存储器系统的加速访问的方法和装置 | |
| US6513104B1 (en) | Byte-wise write allocate with retry tracking | |
| EP0862118B1 (en) | Computer system comprising a memory controller for burst transfer | |
| Berenbaum et al. | Architectural Innovations in the CRISP Microprocessor. |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040927 |
|
| A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20040927 |
|
| A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20071205 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20071225 |
|
| A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080317 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080415 |
|
| A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080416 |
|
| 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: 20080520 |
|
| 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: 20080612 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110620 Year of fee payment: 3 |
|
| 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: 20120620 Year of fee payment: 4 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130620 Year of fee payment: 5 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130620 Year of fee payment: 5 |
|
| S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130620 Year of fee payment: 5 |
|
| R360 | Written notification for declining of transfer of rights |
Free format text: JAPANESE INTERMEDIATE CODE: R360 |
|
| R360 | Written notification for declining of transfer of rights |
Free format text: JAPANESE INTERMEDIATE CODE: R360 |
|
| R371 | Transfer withdrawn |
Free format text: JAPANESE INTERMEDIATE CODE: R371 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130620 Year of fee payment: 5 |
|
| S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130620 Year of fee payment: 5 |
|
| R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
| LAPS | Cancellation because of no payment of annual fees |