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
Application number
JP9359916A
Other languages
English (en)
Other versions
JP4142141B2 (ja
JPH10232826A5 (ja
Inventor
Dominic Paul Mccarthy
ドミニク・ポール・マッカーシー
Victor Quick Stuart
スチュアート・ヴィクター・クイック
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.)
HP Inc
Original Assignee
Hewlett Packard Co
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
Priority claimed from EP97300113A external-priority patent/EP0853283A1/en
Priority claimed from GBGB9723704.4A external-priority patent/GB9723704D0/en
Application filed by Hewlett Packard Co filed Critical Hewlett Packard Co
Publication of JPH10232826A publication Critical patent/JPH10232826A/ja
Publication of JPH10232826A5 publication Critical patent/JPH10232826A5/ja
Application granted granted Critical
Publication of JP4142141B2 publication Critical patent/JP4142141B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/28DMA
    • G06F2213/2806Space 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

(57)【要約】 【課題】マルチメディアなどの媒体データを処理するた
めに適したキャッシュ・システムを実現し、メモリ・ア
クセスのバンド幅を極大化する。 【解決手段】メモリとプロセッサの処理のためデータを
記憶するバッファとの間での長いストリームのデータの
読み書きを1回のトランザクション処理で実行するバー
スト命令を提供する。該バースト命令は待ち行列に記憶
手され、先行バースト命令が実行された直後に次のバー
スト命令が直ちに実行できる状態になる。このような改
良されたキャッシュ・システムによって、メモリ・バン
ド幅が最大限に使用される。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、コンピュータ・シ
ステムに関するもので、特に媒体データを処理するシス
テムに関するものである。
【0002】
【従来の技術】最適なコンピュータ・アーキテクチャ
は、性能上の要件を充足しながらかつ最小限度のコスト
を達成するものである。現状では、媒体の処理に重点を
置いた装置システムにおける主要なハードウェア・コス
ト要因はメモリである。メモリは媒体データを保持する
に足る十分な容量を持たなければならないし、またコン
ピュータのスループット要件を充足することができる十
分なアクセス・バンド幅を提供しなければならない。命
令スループットを常に最大にしなければならない通常の
プロセッサとは対照的に、そのような装置システムはデ
ータ・スループットを最大にする必要がある。本発明
は、媒体集約的アルゴリズムを処理する上での制約を所
与として、低コスト・メモリから高性能を引き出すこと
を(その点に限定するものではないが)特に対象とする。
【0003】本発明は、特に、データを処理するための
処理システム、処理システムによって処理されるまたは
処理されるべきデータを記憶するためのメモリ(例えば
ダイナミックRAMすなわちDRAM)、メモリへのア
クセスを制御するためのメモリ・アクセス・コントロー
ラ、およびメモリとの間で読み書きが行われるべきデー
タをバッファするためのデータ・バッファ(例えばスタ
ティックRAMすなわちSRAM)を備えるタイプのコ
ンピュータ・システムに関するものである。
【0004】現在、最も廉価な形式の対称性読み書きメ
モリはDRAMである(対称性は、フラッシュ・メモリ
の場合の読み書きと違って、読み取りおよび書き込みア
クセス時間が全く同じであることを意味する)。現在、
DRAMはパーソナル・コンピュータにおいてメイン・
メモリとして広く使用されているが、プロセッサにより
近いデータ・バッファやキャッシュではSRAMのよう
な比較的高速な(しかしより高価な)メモリ技術が使用さ
れている。低コスト・システムにおいては、処理性能
(および能力)の目標が満たされるような最も低コストの
メモリを使用する必要がある。
【0005】本発明の開発過程で、達成可能な最大デー
タ・バンド幅を理解するため、最も廉価なDRAM技術
について分析を行ったが、明らかに、既存システムは利
用可能なバンド幅を活用していない。本発明は、利用可
能なバンド幅の使用度を増加させること、従って、上記
のようなコンピュータ・システムにおけるメモリの全般
効率を増加させることを目的とする。
【0006】典型的プロセッサは、SRAMキャッシュ
に10nsでアクセスすることができる。しかし、メモ
リ・コストを最小限にとどめなければならないシステム
におけるメインDRAMメモリへのアクセスは200n
sを要し、キャッシュのアクセス時間の20倍である。
従って、高いスループットを確実にするためには、必要
とされる前に可能な限り多くのデータを局所的キャッシ
ュ・メモリ・ブロックに置かなければならない。そうす
ることによって、プロセッサは、メイン・メモリに関す
る場合のような比較的長い遅延ではなく、迅速な局所的
キャッシュ・メモリに対するアクセス待ち時間を経験す
るだけである。
【0007】ここで「待ち時間」とは、メモリからデー
タを取り出すために要する時間のことである。システム
の処理性能がプロセッサに依存するような「計算処理中
心」のシステムにおいて待ち時間は重大な関心事であ
る。局所的メモリとメイン・メモリの速度の間の大きい
係数によって、処理がメモリ・システムの性能に左右さ
れる場合がある。そのようなケースは、「バンド幅依存
的」であって、メモリ・システムのバンド幅によって究
極的に制限される。プロセッサの処理速度がメモリに比
較して十分早ければ、プロセッサは、メモリが応ずるこ
とができるよりも速い速度で要求を生成するであろう。
今日の多くのシステム性能は、計算処理依存型からバン
ド幅依存型へ移行している。
【0008】
【発明が解決しようとする課題】より速いメモリを使用
することは、性能問題を軽減するための1つの技法であ
る。しかし、それにはコストの増加がともなう。高速メ
モリの使用に代わって、既存のメモリ・チップの使用度
が効率ではないという認識に基づいて、現在使用のメモ
リに対して一層効率的にアクセスする新しい方法を展開
することが必要とされている。
【0009】
【課題を解決するための手段】伝統的DRAM構成の特
徴は、それが「バースト」モードでのアクセスを可能に
するという点である。DRAMは、矩形マトリックスの
形態のメモリ位置から構成されるアレイを含む。アレイ
における1つのエレメントにアクセスするためには、先
ず行を選択(すなわちオープン)して、次に該当する列を
選択しなければならない。しかし、一旦ある行が選択さ
れると、その行の中の複数列への連続したアクセスは、
単に列アドレスを与えることによって実行される。ある
行をオープンしてその行にとって局所的な一連のアクセ
スを実行する概念は、「バースト(burst)」と呼ばれ
る。
【0010】本明細書で使用される用語「バースト効
率」は、DRAMへの平均アクセス時間(b)を分母とし
DRAMへの最小アクセス時間(b)を分子とする比率の
測定値である。DRAMアクセスにおいて、n個のデー
タ項目をバーストするためには、1回の長いアクセスと
(n−1)回のそれより短いアクセスが必要とされる。こ
のように、バーストが長いほど、平均アクセス時間は減
少し、従ってバンド幅は増大する。典型的には、キャッ
シュ型システムは、(キャッシュ・アーキテクチャおよ
びバス幅がその理由であるが)、4回のアクセス・バー
ストを使用する。これは、約25ないし40%のバース
ト効率に相当する。16ないし32回のアクセスという
バースト長の場合に効率は約80%と倍になる。
【0011】本明細書において使用される用語「飽和効
率」とは、DRAMバスにおけるトラヒック頻度の測定
値を指す。性能がプロセッサに依存するシステムにおい
ては、キャッシュ・ミスが発生し、そこで新しいキャッ
シュ行を取り出すため4アクセス・バーストが実行され
るまで、バスはアイドルである。この場合、待ち時間は
非常に重要である。このように、バスがほとんど使用さ
れていないので、飽和効率は低い。本発明人のテストで
は、ある1つのシステムにおける飽和効率は20%であ
った。従って、バスから5倍の性能向上を引き出す機会
が存在する。
【0012】バースト効率と飽和効率の向上の可能性を
組み合わせることによって、現在使用されているものと
同等のメモリについて約10倍のスループト向上を獲得
できる可能性がある。
【0013】本発明は、第1の局面において、バースト
命令をメモリ・アクセス・コントローラに伝達する手
段、およびそのようなバースト命令を待ち行列に記憶す
る手段を備える。該メモリ・アクセス・コントローラ
は、バースト命令に応答して、単一のメモリ・トランザ
クションで複数のデータをメモリとデータ・バッファの
間で転送させる。また、バースト命令の待ち行列への記
憶によって、先行したバースト命令が実行された直後に
次のバースト命令がメモリ・アクセス・コントローラに
よって実行される状態に置かれる。
【0014】第2の局面において、本発明は、バースト
命令をメモリ・アクセス・コントローラに伝達する手段
を備え、この場合、そのようなバースト命令は、そのバ
ースト命令に応答してアクセスされるメモリの位置の間
の間隔を定義するパラメータを含むかあるいはそのよう
なパラメータに関連づけられ、該メモリ・アクセス・コ
ントローラは、バースト命令に応答して、単一のメモリ
・トランザクションの間に、上記間隔パラメータに従っ
て間隔を置いたメモリ位置とデータ・バッファの間で複
数のデータを転送させる。
【0015】第3の局面において、本発明は、コンピュ
ータ・システムにおいて、少なくとも1つのデータ・バ
ッファへコンパイルしなければならない計算処理エレメ
ントおよびそのデータ・バッファを介する実行にとって
適切な計算処理エレメントを原始コードの中で特定する
ステップ、該原始コードにおいて特定した上記計算処理
エレメントを、各々が上記少なくとも1つのデータ・バ
ッファのサイズより小さいメモリ・トランザクションを
含み、バースト命令のような演算を表す一連の演算に変
換するステップ、および上記特定した計算処理エレメン
トが上記少くとも1つのデータ・バッファへのアクセス
を通して処理されるように、上記原始コードを処理シス
テムによって実行するステップを含む。
【0016】
【発明の実施の形態】本発明は、それに限定はされない
が、特に、「媒体集約的」アルゴリズムと呼ばれる特定
のクラスのアルゴリズムに適用できる。このアルゴリズ
ムは、データに依存するアドレス指定を用いることなく
長いアレイにアクセスすることができる通常のプログラ
ム・ループを使用するアルゴリズムを意味する。そのよ
うなアルゴリズムは、高度の空間上の局所性および規則
性を示すが、一時的局所性は低い。高度の空間上の局所
性および規則性が発生する理由は、アレイ項目nが使用
されるとすると、sをアレイにおけるデータ・エレメン
ト間の一定のストライド(間隔)を示すとすればアレイ項
目n+sが使用される可能性が非常に高いからである。
低い一時的局所性は、典型的にはアレイ項目nが一度だ
けアクセスされるという事実による。
【0017】普通のキャッシュは、頻繁に使用されてい
るデータをプロセッサの近くに保持することによって高
い一時的局所性を開拓するように設計される。空間局所
性は開拓されるが、それは行取り出しメカニズムによる
非常に限られた形態である。これは、通常は、単位スト
ライドであり、相対的に短い。これら2つの点は、キャ
ッシュが媒体データストリームを取り扱うのが不得意で
あることを意味する。動作の際、キャッシュにおいて冗
長データによって役立つデータが置き換えられることが
頻繁に発生し、DRAMバンド幅は極大化されない。伝
統的キャッシュは特定のデータ・タイプには理想的に適
しているが、媒体データには適していない。
【0018】本発明と伝統的キャッシュのバースト・バ
ッファリングの主な相違は、充填方針、すなわちバッフ
ァの内容を空にし充填する状況および方法にある。
【0019】本発明に従って、伝統的データ・キャッシ
ュを補強し、特に媒体データにアクセスするために使用
される新しいメモリ・インタフェース構造すなわちバー
スト・バッファが提供される。媒体データ特性を活用す
ることによって、DRAMまたはそれと同等の機構が最
適化され、また、制御のために使用されるその他のデー
タ・タイプに関してデータ・キャッシュは一層効果的に
動作することができる。媒体データがキャッシュのデー
タと衝突する可能性が少ないので、性能を犠牲にするこ
となくデータ・キャッシュ・サイズを減少することがで
きる場合が出てくる。バースト・バッファのために必要
とされる全追加メモリが、データ・キャッシュのために
必要とされるメモリの節約と同じ大きさであるような場
合に、上記のようなケースとなる可能性がある。
【0020】システムは、いくつかのバースト・バッフ
ァを含むことができる。典型的には、各バースト・バッ
ファは、それぞれのデータストリームに割り当てられ
る。アルゴリズムは可変的数のデータストリームを持つ
ので、バースト・バッファにとって利用できるSRAM
の量を固定させることが提案される。この量は、必要と
されるバッファの数に従って等量に分割される。例え
ば、固定的SRAMの量が2KBでアルゴリズムが4つ
のデータストリームを持つとすれば、メモリ領域は、4
つの512バイトのバースト・バッファに細分化され
る。6個のデータストリームを持つアルゴリズムの場合
は、各々が256バイトの8個のバースト・バッファに
細分化される。換言すれば、データストリームが2の累
乗でない場合、バースト・バッファの数は、好ましく
は、次に大きい2の累乗である。
【0021】本発明に従うアーキテクチャにおいて、バ
ーストは次式によって定義されるアドレス・セットを含
む。 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は
サイズを意味する)。
【0022】「経路バースト」は、メモリへの経路の幅
であるようなサイズを与えられたバーストを指す。コン
パイラは、ソフトウェアがサイズを与えたバーストを経
路バーストに対応づける責任がある。経路バーストは、 (base_address, length, stride, width) という4タプルによって定義される(widthは経路幅を意
味する)。
【0023】経路幅が32ビット(すなわち4バイト)で
あれば、経路バースの形式は、常に(base_address, len
gth, stride, 4)であり、簡略化して、(base_address,
length, stride)という3タプルで表される。
【0024】このメモリの制御およびバースト・バッフ
ァの割り当て(および解放)は、より高レベルのソフトウ
ェアまたはハードウェア・プロセスによって取り扱われ
ることもできる。このプロセスは、バースト・バッファ
の名前を自動的に変更するような別のアーキテクチャ上
の機能を含むこともできる。
【0025】図1に示されるように、本発明に従うコン
ピュータ・システムは、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が含ま
れる。
【0026】バースト・バッファ・システム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、を
含む。
【0027】図2および図3に示されるように、バース
ト・バッファ・メモリ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の数と無関係に使用することも可
能である。
【0028】プロセッサ10はロード命令"ld"のような
普通の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で示された大きさのバースト・
データ・ワードを転送させるものである。
【0029】命令loadburstおよびstoreburstは、たと
え転送が発生しなかったとしてもそれらが単一サイクル
で終了するという点において、通常のloadおよびstore
命令とは相違する。要するに、loadburstおよびstorebu
rst命令はメモリ・インターフェース16にバーストを
実行するように伝えるが、バーストの完了を待たない。
【0030】上記のシステムにおいて、メモリ・インタ
ーフェース16は、良識の範囲内ではあるが、いかなる
サイズおよびストライドを持つバースト要求にも応じる
ことができなければならない。マイクロプロセッサ10
に対する高度な追加機構が必要ではあるが、同一のチッ
プへの組み込みが最善の実施策である。プロセッサ1O
からのメモリ要求の実行にはいくつかの方法があるが、
そのうちの2つは、(a)バースト命令待ち行列30に関
してメモリ・マップ化対応レジスタを使用する方法と、
(b)コプロセッサを使用してload/storeメカニズムをバ
イパスする方法である。後者の方法が好ましいけれど
も、必ずしもアーキテクチャ機能がプロセッサに常に存
在しなければならないことはない。後者のモデルの使用
には、また、新しいプロセッサ命令の定義および使用が
必要とされる。
【0031】キャッシュの主な利点のうちの1つは、正
しさの透過性である。正しいデータがプロセッサに常に
与えられ、必要な場合プロセッサに視認できないハード
ウェア方法を使用してデータはいつでもメイン・メモリ
において更新される。バースト・バッファ・システム2
4も同様の機能性を提供する。
【0032】上記のシステムにおいて、バースト・バッ
ファ40のデータは、メイン・メモリ14の領域からコ
ピーされる。位置情報(すなわちアドレス、ストライド
等々)は、それぞれのバッファ40にヒットがある(すな
わちそのメモリ位置のデータが現在キャッシュに存在す
る)か否かを判断するためプロセッサ10からのすべて
のメモリ要求に対して比較される。比較は次の2つの方
法で実行される。すなわち、(1)バッファ40における
すべてのアドレスを範囲比較器28を使用して(通常キ
ャッシュ・タグに関して)プロセッサ・アドレスと連想
比較すること、および(2)プロセッサ・アドレスを使用
して、範囲比較器によってバッファのアドレスを指定す
る式を検査して、解があるか調べること、である。前者
は高価であり(そして速度を早くするほど高価となり)、
後者は安くて速いが、満足のゆく性能を得るためストラ
イドを2の累乗に制限する。
【0033】アドレス範囲比較が真であれば、読取りは
バッファ40においてヒットする。この場合、データは
バッファからプロセッサへ迅速に返される。一方、読み
取りがミスすれば(すなわちバッファ40においてヒッ
トしなければ)、バースト・バッファ・メモリ26を迂
回して、要求されたデータはメイン・メモリ14から直
接取り出される。しかし、データがその時点でロードさ
れつつある範囲にあると、その範囲がロードされ次にバ
ッファ40から取り出されプロセッサ10に渡されるま
で読取りは「停止」または「阻止」される。(待ち時間
を節約するため、データは受け取られ次第渡されるよう
にシステムは修正されている)。当該データが送出され
るべきバーストに含まれていれば、当該データが近接し
た連続動作で2度読み取られることを防ぐため、バース
トの実行が完了するまで、データ読み取りは阻止され
る。
【0034】書込みのヒットがあると、対応するバッフ
ァ40のデータは更新される。その時点でメイン・メモ
リ14は更新されないが、メイン・メモリ14に関する
整合性は、後刻ソフトウェア制御の下storeburst命令に
よって達成される。一方、書込みミスが発生すると、同
じデータを含むstoreburst命令が保留状態または活動状
態にない限り、メイン・メモリのデータが直接更新され
る。この場合、書込みは、storeburst命令が完了するま
で阻止される。
【0035】命令をメモリ・インターフェース16へ送
達するバースト・コントローラ32は、「遅延」と呼ば
れるメカニズムを使用することがある。これは、命令が
発せられる時間が後刻またはなにがしかの事象まで延期
されることを意味する。例えば、次の命令が、例えばst
oreburst-deferred-16access命令であれば、バースト・
バッファへの16回のアクセスが完了するまでそれは待
機し、そのその後自動的にstoreburst命令を発する。そ
の他の遅延メカニズムとして、時間(すなわちサイクル
のカウント)、外部割り込みのような事象、およびバッ
ファ空き有無インジケータを使用することもできる。ア
クセス・カウントに基づく遅延の使用は、プログラムの
流れとメモリ・インターフェース16への命令伝達を切
り離すので、バースト・バッファ・システム24の強力
な機能である。
【0036】バースト・バッファ・コントローラ32
は、経路38fを経由してプロセッサ10へ状態情報を
提供する。バースト・バッファ・コントローラ32は、
また、バッファ割当ておよび論理バッファの名前変更が
ソフトウェア制御の下実施されるように、ユニークなバ
ッファ識別子を提供する。
【0037】バーストの長さが対応するバッファ40の
サイズより長ければ、1つの手順として、バッファ40
の長さと同じになるようにバースト長が切り捨てされ
る。しかし、修正された手順では、非常に長いストリー
ムがバッファに持ち込まれる。loadstream-deferred-32
accessのような単一命令を使用して、それぞれがバース
ト・バッファのサイズを持ついくつかの断片に長いスト
リームを格納し、断片の各々は指定された数のアクセス
が完了すると次の断片と置き換えられる。
【0038】プロセッサ10にとって透過的でないアク
セス・モードをサポートすることも可能である。最も簡
単な方法は、先入れ先出し方式(FIFO)バッファであ
る。この場合、プロセッサ10は単一のアドレスを使用
してバッファ40にアクセスする。読取りの場合は、バ
ースト・バッファ40から最初のエレメントを取り出
す。後続の読取りはバッファ全体を通して次々とエレメ
ントを取り出す。空きの有無の概念がここで導入され
る。より一般的に拡張すれば、バッファ40上に「窓」
が与えられる。この窓は、バッファに対する相対的アク
セスを可能にする。この窓における固定数のアクセスの
後(あるいは別のトリガーに従って)、窓は、その位置が
もう1つのデータに対して中央となるように、進められ
る。前進の量はプログラムできる。これを「循環窓」方
法と呼ぶ場合があり、多くの実施形態が可能である。
【0039】以下に、バースト・バッファ・システム2
4の動作の詳細を記述する。バッファ40の中のデータ
は、要求されたアドレスを開始アドレス、長さおよびス
トライド情報を使用した計算結果と比較することによっ
て有効性を検査される。(レジスタ・サイズは別として)
長さおよびストライド値に対する制約はない。しかし、
通常のloadburstおよびstoreburst命令に関しては、長
さがバッファ・サイズより大きければ、データは切り捨
てられる。レジスタから読み戻される値は切り捨てられ
た値である。
【0040】アドレス・タグが使用されない限り、範囲
比較は非常に遅い。範囲検査はワード・アドレスのみを
考慮するので、ビット0および1は無視される。バッフ
ァ40における読み取りヒットによってデータ項目は復
元される。ミスはメイン・メモリ14からの取り出しを
引き起こす。書込みヒットによって、該当するバッファ
40が更新される。書込みミスはメイン・メモリ14を
直接更新する。メイン・メモリ14に完全なバッファ4
0を最後に書き戻すことによって、整合性が維持され
る。
【0041】データがデータ・キャッシュに存在する場
合に発生する整合性問題を防止するため、バッファ40
を使用するデータに「キャッシュ使用不可」というマー
クを付けることもできる。これは、バッファ40に関す
るデータを含む同じ領域のメモリにおける行取り出しか
らデータ・キャッシュは制約されなければならないこと
を意味する。
【0042】読み取り用の状態レジスタが各バッファ4
0に関連づけられる。このレジスタは、バッファが使用
中であるか否かを示す有効ビットを含む。ソフトウェア
は、このようなフラグを検査してどのバッファが利用で
きるか判断する。現在動作状態を含むその他の状態情報
も利用できる。無効なバッファへのアクセスが発生する
と、通常のメモリ・ロード/ストア命令が生成される。
有効性メカニズムはソフトウェアにとって透過的であ
る。
【0043】バースト命令待ち行列30に書き込まれる
loadburst命令によって、指定された特性を持つバース
トが目標バッファに記憶される。loadburst命令が発信
され次第、書き込み動作が完了するまでバッファは完全
に無効状態にされる。バッファに保持されていたいかな
るデータも、消去され回復はできない。
【0044】storeburst命令によって、目標バッファは
空にされる。storeburst命令が発信され次第、バッファ
はロックされ(すなわちすべてのアクセスが禁止され)、
バッファはメモリへコピーされる。次にそのバッファは
無効状態にされる。
【0045】loadburstおよびstoreburst命令は両者と
も遅延化できる。これは、動作開始を誘導するため、実
行されねばならない読み取り/書き込み数を記述するカ
ウントが各命令に関連づけされることを意味する。(そ
の他のオプションとして、計時や命令カウントが含まれ
る)。これは、例えば16回のアクセスだけ遅延されるb
urststore命令をバッファに伝達することができること
を意味する。そこで、バッファ・コントローラはバッフ
ァへ16回アクセスが行われるのを待ち、その時点でバ
ッファを空にする。
【0046】バッファは"allocbuffer"命令によって有
効状態に変更される。この命令は、範囲計算機構へアド
レス情報を提供する点でloadburst命令と同じである
が、いかなるデータのロードも行わない。この命令は、
先行loadburst命令を必要とするのではなく、プロセッ
サ書き込みを使用してバッファに書き込みが行われるの
を可能にする。allocbuff命令によってバッファは有効
状態にされる。バッファに含まれているデータは不変の
ままであり、これは、バッファをいっぱいにしているデ
ータが異なるメモリ領域に再配置されることを意味す
る。
【0047】同様の"freebuffer"命令がある。これは、
バッファを単に無効状態にしてその内容を不変のままと
する命令である。その後に続くallocbuff命令によっ
て、バッファをその前の状態に復帰させることができ
る。
【0048】プロセッサはいくつかの条件によって処理
を停止させられる。それらの条件には、(1)バッファ命
令待ち行列がいっぱいであるにもかかわらずバースト命
令が出される場合、(2)バースト命令が進捗中に目標バ
ッファへのアクセスが要求される場合、および(3)バッ
ファ命令がバッファをミスし、通常のメモリ・アクセス
が実行されなければならない場合、が含まれる。
【0049】転送のため指定された長さがバッファの長
さ未満の場合は、部分的アクセスが実行され、バッファ
中の未使用位置は未定義とされる。バースト転送は、バ
ースト命令によって示唆される順序でバッファが常に空
にされるという制約を持つ。部分的アクセスは常にバッ
ファの最初の位置から始まる。ストライドは符号付き量
であるので、バースト・データの順序は、常に、昇順ま
たは降順のいずれかである。特定のアプリケーションま
たはシステムによって要求されるバッファの数は、性能
要件、サポートすべきストリームの数等々によって変わ
る。命令は、前の命令が完了した時のみ実行される。
【0050】"storeburst value O"コマンドを出して、
目標メモリ区域をゼロで埋めることができる。バースト
・バッファ自体はゼロにされないが、別々のデータ経路
がメイン・メモリに値0を書き込む。この拡張コマンド
において、どのような値でも指定することは可能であ
り、必要とされる値に設定されるレジスタが提供され
る。"loadburst value O"命令によってバッファをゼロ
で埋めることができる。メモリ・トラヒックは生成され
ないが、この演算は同じ方法で実行され1サイクル以上
を要する。このように、この命令は他のloadburst命令
と同様に取り扱われる。
【0051】データストリームが以下の条件に合致する
ことをアプリケーションが保証するという前提で、メモ
リ・コントローラによってバーストに分解された上で、
データストリームがメモリに送られる。その条件は、
(1)各データ・エレメントは順次持ち込まれること、(2)
各データ・エレメントは、正確に1度またはあらかじめ
定められた使用パターンに従って、使用されること、
(3)バッファ・サイズの断片の形態でのストリーム処理
が適用されること、である。これらの条件が満たされれ
ば、書込みストリームまたは読取りストリームは、該当
する数のアクセスだけ遅延されるバースト命令に分解さ
れる。
【0052】バースト転送に関連づけられる長さは通常
バッファ・サイズに切り捨てられるが、loadburstスト
リームおよびstoreburstストリーム命令を使用すること
で、長さはストリーム長と解釈される。これらの命令も
初期的に遅延されるかもしれないが、これは最初のバー
スト転送の開始に影響を及ぼすだけである。後続のバー
ストは、バッファのサイズだけ自動的に遅延される。
【0053】"burstabort"コマンドはバースト転送を中
止するため使用される。その機能性は、進捗中のバース
トを終了させることができない点で制約される。しか
し、バーストが保留中であれば(すなわち遅延されてい
れば)、それはキャンセルされる。いずれにせよ、バッ
ファは常に無効状態にされる。その本当の用途は、現在
のバーストの終了時にあるいはバーストが保留中であれ
ば即刻ストリームを終了させるためのものである。
【0054】次に、システムのファームウェア・インタ
ーフェースを記述する。各バースト・バッファ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までの範囲の値である。
【0055】base_addressレジスタは、バースト命令が
出される前に、初期化されていなければならない。バー
スト命令が出されると、基底アドレスを使用してデータ
・アドレスが計算される。基底アドレスは、ストリーム
・アクセスに関しても自動的に変更されることはない。
バッファが有効である時のbase_addressレジスタへの書
き込みは、バッファを無効状態にさせる。レジスタ自体
はハードウェアによって隠されていて、たとえバッファ
がその後無効状態にされるとしてもすべての活動的バー
ストが正しく完了することが保証される。基底アドレス
は、バイト単位で指定されワード単位で整列されなけれ
ばならない。そうでなければ、値は自動的に切り捨てら
され、丸めは実行されない。レジスタから読まれる値は
変更されない。
【0056】長さレジスタは、バースト命令が出される
前に、初期化されなければならない。バースト命令が出
されると、長さ(length)を使用して、データ・アドレス
が計算される。非ストリーム・バーストに関しては、長
さレジスタは、バースト・バッファ長以下の長さに制限
される。バースト命令が出され、長さレジスタの値がこ
の基準を上回ると、それはバッファ長に自動的に切り捨
てられる。この切り捨ては、バースト命令が出される際
発生するが、長さレジスタへの書込みが行われる時は発
生しない。切り捨てられる値は、このレジスタから順次
読み取られている値である。ストリーム・アクセスの場
合、長さレジスタは、全ストリーム転送の長さを指定す
る。バッファが有効である時の長さレジスタへの書き込
みはバッファを無効状態にする。レジスタ自体はハード
ウェアによって隠されていて、たとえバッファがその後
無効状態にされるとしてもすべての活動的バーストが正
しく完了することが保証される。転送の長さはバイト単
位で測定されるが、ワード(すなわち4バイト)の倍数に
制限される。ワード境界に整列されない値は切り捨てら
れ、丸めは実行されない。レジスタから読み取られる値
は変更されない。
【0057】ストライド・レジスタには、バースト命令
が出される前に、初期化されなければならない。バース
ト命令が出されると、ストライドを使用して、データ・
アドレスが計算される。ストライドは、ストリーム・ア
クセスに関しても、自動的に変更されることはない。バ
ッファが有効である時のストライドへの書き込みはバッ
ファを無効状態にさせる。レジスタ自体はハードウェア
によって隠されていて、たとえバッファがその後無効状
態にされるとしてもすべての活動的バーストが正しく完
了することが保証される。ストライドはバイト単位で測
定されるが、ワード(すなわち4バイト)の倍数に制限さ
れる。ワード境界に整列されない値は切り捨てられ、丸
めは実行されない。レジスタから読まれる値は変更され
ない。
【0058】制御/状態レジスタに関しては、すべての
バースト命令は制御レジスタへの書き込みの別名であ
る。これらのアクセスにおいて使用されるデータは、各
命令に関して定義される形式に従って構成される。ワー
ドの最初の3ビットは、命令を識別するために使用され
る。
【0059】以下、種々のバースト命令を記述する。最
初に、"allocbuffer"命令は、メモリの領域を対応させ
るバッファを構成するために使用される。バーストは実
行されないが、バッファは有効にされ、範囲検査が実行
される。転送の長さはバッファのサイズ以下でなければ
ならない。これより大きい値はバッファ・サイズに自動
的に切り捨てられる。範囲検査は、上記(式1)に従って
生成されたアドレス・セットに対して比較を行う。この
命令を出すために使用されるデータ・ワードの形式は、 allocbuffer: [000] [29 reserved bits] である。バッファの中のデータは無効化を通してバッフ
ァに残るので、バッファ・パラメータを変更し第2のal
locbuff命令を出すことによってバッファは再配置され
る。
【0060】"burstabort"命令はバースト命令を中止す
るため使用される。メモリからバッファへのバースト
は、一旦始まれば、中止することはできない。しかし、
遅延バーストは、保留の間中止することはできるし、lo
adstreamコマンドはバースト境界上で中止することは可
能である。すべての場合、バッファは無効状態にされ
る。バッファのどのデータも変更されない。この命令の
形式は、 burstabort: [001] [29 reserved bits] である。
【0061】"freebuffer"命令を使用して、関係バッフ
ァが無効状態にされる。パラメータはなにも使用されな
い。形式は、 freebuffer:[O10][29 unused bits] である。
【0062】"loadburst"および"storeburst"命令を使
用して、それぞれ、バースト・データをメイン・メモリ
からバースト・バッファへ取り出し、バスト・バッファ
からメイン・メモリへバースト・データを書き込む。転
送の長さはバッファのサイズ以下でなければならない。
これより大きい値は、バッファの大きさに自動的に切り
捨てられる。バースト・アドレスは、上記(式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を超えていれ
ば、遅延カウントのアクセス数がバッファに対して実行
されるまでバースト命令は延期され。そのようなアクセ
スは読取りまたは書き込みのいずれかである。転送は、
開始アドレス、長さおよびストライドの点でワード境界
に整列されている。
【0063】"loadstream"および"storestream"コマン
ドを使用して、完全なデータストリームがバッファへロ
ードされ、完全なデータストリームがバッファからコピ
ーされる。ストリームの長さは長さレジスタにおいて定
義され、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ビットは遅延カウントである。
【0064】関係バースト・バッファの条件を評価する
ため、"querystatus"コマンドが使用される。これは、
バッファに対してサポートされる読み取りコマンドであ
る。返される値は、バッファが割り当てらていなければ
0、割り当てられていれば1である。現在の対応付けに
関する情報は、他のレジスタを読むことによって取得で
きる。その他のいかなる情報も利用できない。
【0065】本発明に従ったコンピュータ・システムの
第2の実施形態が、図4および図5に示されている。こ
の実施形態において、第1の実施形態のキャッシュ的イ
ンターフェースが、ペアを構成する2つのテーブルに基
づくインターフェースと置き換えられる。2つのテーブ
ルは、バースト・バッファ・メモリとの間でバースト転
送を行うメイン・メモリの領域を記述するMAT(Memor
y Access Tableすなわちメモリ・アクセス・テーブル)
およびバースト・バッファ・メモリの領域を記述するB
AT(Buffer Access Tableすなわちバッファ・アクセス
・テーブル)である。この実施形態においては、2ポー
ト型SRAMの同等区域がバースト・バッファに使用さ
れる。
【0066】第2の実施形態のアーキテクチャの主な機
構が図4に示されている。本質的に第1の実施形態と類
似している機構に関しては、同じ参照番号が使用されて
いる。バースト命令は、バースト命令待ち行列30によ
ってプロセッサ・インターフェース12から提供され
る。バースト命令待ち行列30からの命令は、バッファ
・コントローラ54によって処理され、MAT65およ
びBAT66の基準スロットへ送られる。バッファ・コ
ントローラは、また、8つのバースト制御レジスタ52
から制御入力を受け取る。これらの2つのテーブルに含
まれる情報は実行時に結合され、完全なmain-memory-to
-burst-buffer transaction(メモリからバースト・バッ
ファへのトランザクション)を記述する。出力は、バッ
ファ・コントローラ54からDMAコントローラ50従
ってメモリ・データ経路アービタ58に提供され、メイ
ン・メモリ14とバースト・バッファ・メモリ26の間
のトランザクションが有効となる。
【0067】本実施形態において、バースト・バッファ
・メモリ26は、2KBの2ポート型SRAMとして提
供される。SRAMの1つのポートはプロセッサ・メモ
リ空間にあり、迅速なプロセッサ・アクセスに対して使
用されることができる。このアーキテクチャの利点は、
バースト・バッファ・メモリ26からのアクセスがメイ
ン・メモリ14からのアクセスに比較して非常に速いこ
とが必要なだけであるが、バースト・バッファ・メモリ
26への単一サイクル・プロセッサ・アクセスは特に利
点がある。もう1つのポートの機能は、後述されるよう
に、メイン・メモリとSRAMの間のDMA転送を可能
にすることである。バースト・バッファ・メモリ26内
の個々のバッファは、バッファ・アドレスおよびその長
さによって定義されるバッファ領域に保持される。プロ
セッサ・ポートに関して、バイト、ハーフワードおよび
ワードのアクセス(すなわち動的バス幅指定)がサポート
されることが望ましい。これはDMAポートにも望まし
いが、必要性は少ない。この2ポート機能は、メイン・
メモリとの間のバースト転送をプロセッサからのアクセ
スと並列して実行させることを可能にする。適切なイン
ターロックまたは優先度メカニズムがない場合は、ソフ
トウェアが同一SRAM位置への書き込み衝突を防止す
る必要がある。
【0068】SRAMのサイズは、計算処理の際いくつ
かのストリームを取り扱うことができ、かつ長いバース
トに関連する要求を取り扱うことができるような大きさ
でなければならない。多数のアプリケーションに関し
て、8つのストリームを取り扱うことができる資源を備
えれば十分であり、各ストリームは、1つが到来および
出力のためもう1つが進行中の計算処理のためという2
つのバッファを備えることが望ましいことが判明してい
る。従って、16個のバッファが必要となることが示唆
される。また、メモリへの経路幅が32ビットであるS
DRAMを使用するバンド幅の約80%の利用度は、3
2個のバーストで達成できることが判明している。この
場合、各バースト・バッファのサイズは128バイト
で、合計2KBのSRAMとなる。
【0069】次に、バースト制御レジスタ52に関して
記述する。主バッファ制御レジスタはbufcntlである。
このレジスタは、バースト・バッファ・アーキテクチャ
の集中制御を提供する。次の表1はバッファ制御レジス
タの定義であり、このレジスタの各ビットに関連する機
能性を示す。
【0070】
【表1】ビット 名前 読み/書き 説明 デフォルト 0 enabe 読み/書き バースト命令を使用可能化する 0 0=使用不可 1=使用可能 1 swap 読み/書き 命令形式選択 0 0=形式A;1=形式B 2 single 読み/書き 単一ステップ・モード 0 0=通常動作 1=バースト命令の間でポーズ 3 intenable 読み/書き 単一ステップ・モードでの割り込み 0 0=割り込み禁止 1=割り込み可能 7:4 未使用 8 transfer 読取専用 転送中標識 0 0=進行中転送なし 1=転送進行中 15:9 未使用 23:16 context 読み/書き ループ/文脈テーブル 0X00 へのポインタ 31:24 pending 読取専用 待機中命令数 0
【0071】バージョン・レジスタ(version)は読み取
り専用で、その目的は自明である。同期レジスタ(sync)
は読み取り専用レジスタであって、バースト命令待ち行
列が空になるまでプロセッサを停止させるために使用さ
れる。このレジスタは、プロセッサ命令とバースト命令
の並列実行を同期化に役立つ。このレジスタを読むと、
下記表2に示されるような4つの値のうちの1つが戻さ
れる。この値は、同期命令の前に実行される最後のバー
スト命令に関連する。
【0072】
【表2】 同期レジスタ読み取り値 説明 0x0 停止は要求されなかった−読み取りは直ちに完了 0x1 storeburst完了までの停止が要求された 0x3 loadburst完了までの停止が要求された 0x5 未定義
【0073】デフォルト値は0x0である。これはビット
2:0だけが使用されその他は常にゼロであることを意味
する。(ビット0は停止が必要とされていたか否かを示
し、ビット2:1はビット31:30の命令形式に合致するか否
かを示す。注:同期命令(sync)はこのレジスタの読み取
りを停止できないので、ここでは使用のための定義はさ
れてない)。例外的な状況においてこのレジスタへの書
き込みを可能にするような容量が提供される。具体的に
は、例外処理機構が戻る前に同期レジスタの状態を元に
戻すことを可能にする。
【0074】以下の4つのレジスタは、バースト命令待
ち行列からメモリ・コントローラへバースト命令進捗度
を逐次通知するために使用される。図6は、それらのレ
ジスタの構造および位置を示す。
【0075】currcmdレジスタは、読み取り専用レジス
タであって、メモリ・コントローラによって現在実行さ
れている命令を保持する。これはbufcntl.transferが1
である時のみ有効である。しかしながら、そのアイドル
状態において、このレジスタは、ロードまたはストア・
バースト命令の読み取りが進行中のバーストが存在する
ことを自動的に意味するnull(ヌル)命令を戻す。
【0076】lastcmdは読み/書きレジスタである。通
常の動作では、メモリ・コントローラによって実行され
た最後の命令を持っているので、このレジスタは読み取
り専用である。しかしながら、文脈切り替えの時点の状
態を全面的に元へ戻すことができるようにするため文脈
切り替えから戻った後このレジスタは書き直されなけれ
ばならないので、このレジスタは書き込み機能を持つ。
このレジスタは、初期的にはヌル・コマンドに設定され
る。
【0077】queuetopレジスタは、文脈切り替えにおい
てバースト命令待ち行列を空にするため使用される。bu
fcntl.enableへゼロの書き込みによってバースト命令を
実行不可状態にした後、待ち行列が空になるまで命令毎
に待ち行列の内容が読み取られる。queuetopレジスタの
読み取りは、待ち行列から最上部の命令(すなわち実行
中の命令ではない命令)を削除する効果を持つ。このレ
ジスタはいつでも読み取ることができ、常に待ち行列の
最上部から削除した命令を返す。この命令は実行されな
い。
【0078】待ち行列の深さは、bufcntl.pendingに保
持される。ヌル命令を読むことは待ち行列が空であるこ
とを意味する。
【0079】バースト命令は、バースト命令待ち行列レ
ジスタbiqに書き込まれる。命令は、待ち行列の始めに
置かれる。biqレジスタの読み取りは、queuetopレジス
タ読み取りと同様に、バースト命令待ち行列の最上部の
命令(すなわちメモリ・コントローラによって実行され
るべき次の命令)を返す。しかしながら、この場合、そ
れがレジスタ読み取りが行うすべてである。queuetopか
ら読み取られた命令と対照的に、biqから読み取られる
命令は実行される。ヌル命令の読み取りは、待ち行列が
空であるかまたはその初期化がまさに完了したことを意
味する。注:biqレジスタが論理的に待ち行列であるの
で、待ち行列が空でない限り、読取りが後に続く書き込
みは、同じ値に戻らない可能性がある。
【0080】最後はdebugレジスタである。このレジス
タの詳細説明は行わないが、レジスタ定義を下記表3に
示す。
【0081】
【表3】 デフォビット 名前 読み/書き 説明 ルト 0 step 読み/書き biqの次の命令へのステップ 0 書込:0=無動作、1=ステップ 読取:0=アイドル、1=ステップ中 15:1 未使用 16 buffer_ 読み/書き バッファ領域オーバーラン 0 overun_warn 17 stride_ 読み/書き ストライド値警告 0 overrun_warn 18 memtab_modified 読み/書き バースト命令発信後メモリ・ 0 _warn アクセス・テーブル修正された 19 bulab_modified 読み/書き バースト命令発信後バッファ・ 0 _warn アクセス・テーブル修正された 20 invalid_ 読み/書き 無効な命令検出、無視 0 instruction_ warn 31:21 未使用
【0082】バースト命令待ち行列は、上述の通りFI
FOメモリを含む。バースト命令はプロセッサによって
提供される。この構造への原始コードのコンパイルの詳
細は次の通りである。本実施形態では、次の4つのフィ
ールドがバースト命令において提供される。 1. 命令 2. MATに関する自動ストライド・インジケータ(ブロ
ック増分ビット) 3. 転送を制御するために使用されるMATエントリに
対するインデックス 4. 転送を制御するために使用されるBATエントリに
対するインデックス 基本的な動作は、メモリ・アクセスおよびバッファ・ア
クセスという2つのテーブルの各々におけるエントリを
インデックスする命令を発信することである。メモリ・
アクセス・テーブルへのインデックスは、転送メモリの
最後に使用されるアドレス、範囲およびストライドを取
り出す。バッファ・アクセス・テーブルへのインデック
スは、バースト・バッファ・メモリ領域の基底アドレス
を取り出す。本実施形態では、バースト命令において提
供されるインデックスは、アドレス値そのものではない
点注意する必要がある(アドレス値そのものとする実施
形態も可能ではある)。本実施形態においては、詳細は
後述するが、文脈テーブルを介してマスクおよびオフセ
ットがインデックス値に与えられる。DMAコントロー
ラは、2つのテーブルからパラメータを渡され、それら
を使用して必要とされる転送を指定する。
【0083】以下の表4に示されるように2つの代替的
形式が与えられる。
【0084】
【表4】 形式A 形式Bフィールド bufcntl.swap=0 bufcntl.swap=1 命令 ビット31:30 ビット31:30 block_increment標識 ビット29 ビット29 メモリ・アクセス・ ビット28:22 ビット21:0 テーブル・インデックス バッファ・アクセス・ ビット21:0 ビット28:22 テーブル・インデックス
【0085】形式は、バッファ制御レジスタにおけるbu
fcntl.swapビットによって選択される。0というデフォ
ルト値は形式Aを選択し、一方、値1は形式Bを選択す
る。このスワップ機能の使用によって、コンパイラは容
易に命令を増分させることが可能とされ、それによって
バッファとメイン・メモリの両方に対して異なる領域へ
のDMA動作が実行される。スワップ機能がない場合、
一方だけに対してこれを達成する(従って1つの命令へ
のループ・パイプライン化のオーバーヘッドを減少させ
る)ことができるにすぎない。
【0086】バースト命令は第1の実施形態の場合と本
質的に同じであるが、異なるアーキテクチャの観点から
構文および動作の点で変更が行われる。
【0087】storeburstはビット31:30を00に設定する
ことによって実行される。この命令は、所望の転送の特
性を定義するMATおよびBATのパラメータをインデ
ックスする。block_incrementビットが設定されていれ
ば、インデックスを付けられたMATエントリのmemadd
rフィールドは転送が完了すると自動的に更新される。
【0088】loadburstはビット31:30を01に設定するこ
とによって実行される。この命令も、所望の転送の特性
を定義するMATおよびBATのパラメータをインデッ
クスする。この場合も、block_incrementビットが設定
されていれば、インデックスを付けられたMATエント
リのmemaddrフィールドは転送が完了すると自動的に更
新される。
【0089】Sync(同期)およびNull(ヌル)は、ビット3
1:30を11にビット29:0を0xFFFF_FFFFに設定することに
よって実行される。この命令の主な目的は、ソフトウェ
アおよびバースト命令の実行の間の同期化メカニズムを
提供することである。バースト命令待ち行列30に同期
命令syncを書き込むことによって、他のいかなるバース
ト命令も該待ち行列に置くことが防止される。これは、
いかなる1時点においてもその待ち行列には1つのsync
命令が存在するだけであること、および同期命令の読み
取りがその待ち行列が空であることを示すことを意味す
る。同期コマンドはDMAアクセスを始動させないが、
同期レジスタに連係する同期メカニズムを活動状態にす
る。同期命令の使用は以下に更に説明される。
【0090】図5に、メモリ・アクセス・テーブル(M
AT)65が示されている。これは、バースト処理に必
要とされるメイン・メモリ位置に関連する情報を保有す
るメモリ記述子テーブルである。MATの各エントリ
は、メイン・メモリに対するトランザクションを記述す
るインデックス付けされたスロットである。本実施形態
中では、MAT65は16個のエントリを持つが、当然
のことながら異なる形態も可能である。各エントリは、
次の3つのフィールドを含む。 1. メモリ・アドレス(memaddr)−メイン・メモリの該当
する領域の開始アドレス。仮想アドレス変換によって2
つの物理ページにわたるバースト要求が発生し、そのた
めメモリ・コントローラにとって困難が生じることにな
る可能性があるので、このメモリ位置は理想的には物理
的メモリ・アドレスであることが望ましい。 2. 範囲(extent)−転送範囲。これは、ストライドを乗
算された転送長であり、転送される最後のアドレスに1
を加えたものである。転送の長さは、範囲をストライド
によって除することによって計算され、転送の完了後関
連するBAT66のbufsizeフィールド(下記参照)に自
動的にコピーされる。 3. ストライド(stride)−転送における連続エレメント
間の間隔 フィールドの各々は、通常メモリ・マップ・レジスタと
して読み取られる。各レジスタは32ビット幅である
が、次の表5に示されるように、選択されたたフィール
ドだけが書き込み可能である。
【0091】
【表5】 メモリ・アクセス・テーブル・レジスタ 書込可能フィールド コメント memaddr ビット[31:0] 制約なし extent ビット[10:0] バッファ域のサイズ(2047) に制限 stride ビット[9:0] 1023に制限
【0092】memaddr:これは、符号なし32ビットで
あって、経路バーストの最初のエレメントのワード境界
整列のアドレスである。境界整列されてない値は、切り
捨てによって自動的に整列される。このレジスタの読取
りは、バーストのために使用される値を返す。 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というストライド
長さに等しい。
【0093】MATスロットによって含められる値の例
を示せば、 {0x1feelbad, 128, 16} である。これは、それぞれが4個の4バイト長ワードの
間隔をおいた32個の4バイト長ワードとなる。
【0094】バースト命令の自動ストライド標識ビット
もMAT65にとって意味を持つ。このビットがバース
ト命令において設定されていれば、開始アドレス・エン
トリは、バーストが連続している限り次のメモリ位置に
次々と増加される。これは、長いシーケンスのメモリ・
アクセスにおける次のバーストに関する開始アドレスを
計算するプロセッサ・オーバーヘッドを節約する。
【0095】次に図5に示されるバッファ・アクセス・
テーブル(BAT)66を説明する。これもまたメモリ記
述子テーブルであるが、この場合はバースト・バッファ
・メモリ区域26に関連する情報を保有する。BAT6
6の各エントリは、バースト・バッファ・メモリ区域2
6に対するトランザクションを記述する。MAT65の
場合と同様に、BAT66は16個のエントリを含む
が、別の形態も当然のことながら可能である。本実施形
態では、各エントリは次の2つのフィールドを含む。 1. バッファ・アドレス(bufaddr)−バッファ区域のバッ
ファの開始アドレス。 2. バッファ・サイズ(bufsize)−最後の転送に使用され
るバッファ区域のサイズ。 フィールドの各々は、この場合も、通常メモリ・マップ
・レジスタとして読み書きされる。MAT65の場合と
同様に、各レジスタは32ビット幅であるが、下記表6
に記述されるように、レジスタ内の選択されたフィール
ドだけが書き込み可能である。すべての書き込み禁止ビ
ットは常にゼロとして読み取られる。
【0096】
【表6】 バッファ・アクセス・テーブル・レジスタ 書込可能フィールド コメント bufaddr ビット[10:0] バッファ域で制約される bufsize ビット[10:0] バッファ域で制約される 文脈切り替え後にのみ 書き込まれる
【0097】バッファ・アドレス・パラメータbufaddr
は、バッファ区域の経路バーストの最初のエレメントに
対するオフセットされたアドレスである。バースト・バ
ッファ区域は、ハードウェアによってプロセッサのメモ
リ空間の1つの領域に物理的にマップされる。これは、
バースト・バッファ区域にアクセスする時プロセッサは
絶対アドレスを使用しなければならないことを意味す
る。しかし、DMA転送は単にオフセットを使用するの
で、ハードウェアが所望のアドレス決定を管理する必要
がある。無効な境界整列は切り捨てによって調整され
る。このレジスタの読取りはバーストに使用される値を
返す。デフォルト値はゼロである。
【0098】パラメータbufsizeは、最新のバーストに
よって占有されるバッファ区域内の領域のサイズであ
る。このレジスタは、そのエントリに向けられたバース
ト転送が完了次第設定される。ゼロという値が未使用バ
ッファ・エントリを示すので、記憶される値はバースト
長である点注意する必要がある。このレジスタは書き込
みされるが、バッファが保存され復元される場合文脈切
り替えの後に役立つだけである。デフォルト値はゼロで
ある。
【0099】バッファ・コントローラ54の残りの機能
は、文脈テーブル62である。これは、入力としてバー
スト命令のインデックスを取り出し、MAT65および
BAT66において使用されるべき対応するスロットを
出力として与える。文脈テーブル62のエントリは、バ
ースト命令によってアクセスされるエントリの領域を制
御するために使用される。文脈テーブル62の機能をソ
フトウェアの形態で実施することも可能である。文脈テ
ーブルの使用は、バッファ・アーキテクチャの効率的管
理にとって利点がある。
【0100】文脈テーブルは、「文脈切り替え」の場合
に特に役立つ。システムの文脈を変更する必要性を示す
3つの事象は、内部トラップまたは例外、スレッド切り
替え信号および外部割り込みである(スレッドとはプロ
セッサ実行の基本単位であり、単一シーケンスの計算処
理のために必要とされたプロセッサ状態からなる)。上
記事象のいずれも、バースト・バッファ・インターフェ
ース資源を新しいスレッドが使用する必要性を確立す
る。文脈テーブルは、システム制御およびMAT65な
らびにBAT66の間に付加的間接部分を加えることに
よってそのような事象の影響を最小限にとどめる。コン
パイルの際複数のスレッドがMAT65とBAT66に
おける同等のスロット領域を使用するように構成され、
相互干渉なしに実行することができるように、オペレー
ティング・システムによってそれらスレッドに異なる文
脈識別子が与えられる。
【0101】スレッドが活動状態におかれる時文脈識別
子が制御レジスタに書き込まれ、このメカニズムを使用
して、各スレッドがテーブルの異なるスロット領域を使
用するようにコンパイル時にオフセットがインデックス
値に追加される。十分なテーブル資源が利用可能である
と仮定すれば、上記メカニズムは、文脈切り替えの間の
テーブル状態の保存復元を防止する。
【0102】本実施形態において、文脈テーブル62
は、8個のエントリを持っているが、実施形態によって
どのような整数値の数のエントリを持つことも可能であ
る。各エントリは次の4つのフィールドを含む。 1. メモリ・オフセット(memoffset)−これはマスク(下
記参照)の後バースト命令のMATに加えられるオフセ
ットである。これは、MAT65をインデックスするた
めに使用される値である。 2. メモリ・マスク(memmask)−これは、オフセットの追
加の前にバースト命令のMATインデックス・フィール
ドに適用されるマスクである。 3. バッファ・オフセット(bufoffset)−これはマスク
(下記参照)の後バースト命令のBATに加えられるオフ
セットである。これは、BAT66をインデックスする
ために使用される値である。 4. バッファ・マスク(bufmask)−これは、オフセットの
追加の前にバースト命令のBATインデックス・フィー
ルドに適用されるマスクである。
【0103】オフセットおよびマスク・レジスタは、M
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で提供されるが、バッファ・コントローラで
提供することも可能である。しかしながら、このような
バッファ資源管理機能をソフトウェアで実施することも
できる点は注意されるべきである。
【0104】文脈テーブル・パラメータは次のように定
義される。 memoffset:このパラメータは、MAT65のエントリ
にアクセスするために使用されるオフセットを定義す
る。テーブル・サイズが16であるので、この最大値は
16である。それより高い値は16へ自動的に切り捨て
られ、負の値は許容される。 memmask:このパラメータは、MAT65のエントリに
アクセスするために使用されるマスクを定義する。テー
ブル・サイズが16であるので、許容される最大値は1
5である。これは値の最下位4ビットを使用することに
対応し、他のどのビット・セットも無視される。 bufoffset:このパラメータは、BAT66のエントリ
にアクセスするために使用されるオフセットを定義す
る。テーブル・サイズが16であるので、この最大値は
16である。それより高い値は16へ自動的に切り捨て
られ、負の値は許容される。 bufmask:このパラメータは、BAT66のエントリに
アクセスするために使用されるマスクを定義する。テー
ブル・サイズが16であるので、許容される最大値は1
5である。これは値の最下位4ビットを使用することに
対応し、他のどのビット・セットも無視される。
【0105】従って、DMAコントローラ56は、バッ
ファ・コントローラ54からロードまたはストアからな
る命令と共に、MAT65から添付されるメイン・メモ
リ・アドレス、ストライドおよび転送長を、またBAT
66からバッファ・アドレスを受け取る。メモリ・コン
トローラ構成の要件は、MAT65に関して定義される
最大のサイズおよびストライドのバースト要求がサポー
トされること、ページ境界横断が透過的方法で取り扱わ
れること、および転送が完了した時点を標示するハンド
シェーキング信号が提供されることである。
【0106】本実施形態のシステムは仮想メモリをサポ
ートしていない。しかしながら、仮想DMAをサポート
するように構成されるDMAコントローラを用いれば、
上述のようなバースト・アーキテクチャが動作するよう
に構成できる点は、当業者に認められるであろう。本実
施形態に記述されているシステムは、また、メモリ・キ
ャッシュを含むアーキテクチャにおいて動作することが
できるが、バースト・バッファ動作の事象においてメイ
ン・メモリとそのようなキャッシュの間の整合性を確認
するためには適切な処理ステップの実行が必要とされる
であろう。例えば、より高い優先度のDMAプロセスを
可能にするためバースト・バッファ動作を中止する必要
がある場合、割り込みシステムを提供すなければならな
いであろう。デバッグ機能の支援のため警告フラッグを
セットする必要があるかもしれない。
【0107】プロセッサが計算処理を実行している間に
並列的にデータをバースト処理するようにアーキテクチ
ャはプログラムされるので、連続するバーストのそれぞ
れの後にバースト・バッファの名前を変更することがで
きるという利点がある。これによって、プロセッサは、
1つのバッファから代替バッファへ自動的に切り替えを
行うことが可能とされる。そのような場合、代替バッフ
ァが次の計算処理ブロックのため(バースト命令を介し
て)書き込まれている間、一方のバッファは計算処理の
ため使用される。バーストおよび計算処理が完了する
と、それらバッファの名前が変更(スワップ)され、プロ
セスは再び続行する。
【0108】このため、BATテーブルは、更に次の3
つのレジスタ・フィールドを含むように拡張される。 オリジナル・フィールド: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のコードはこのプロセスを処理するプログラムの例
である。
【0109】
【表7】
【0110】本発明のアーキテクチャの第2の実施形態
におけるバースト命令の処理を以下図7を参照して説明
する。バースト動作はバースト命令の発信によって始動
される。上述のように、この命令は、MAT65のエン
トリへのインデックスおよびBAT66のエントリへの
インデックスを含む。前述のように、MATエントリ
は、メイン・メモリの開始アドレス、転送の範囲および
ストライドを含み、一方、BATエントリは、バッファ
領域26における目標アドレスと共に、このエントリを
使用して完了される最後の転送の長さ(すなわちバッフ
ァ・サイズ)を含む。
【0111】この命令は、FIFOメモリに類似するバ
ースト命令待ち行列30に置かれる。この構造は、DR
AMからのデータのバースト処理とプロセッサによるデ
ータのアクセスの間の切り離しを可能にする。この切り
離しは、「事前取り出し」の性能利得を達成するために
必要である。「事前取り出し」は、データがプロセッサ
によって必要とされる前にメイン・メモリからデータを
取得し、プロセッサその事前取得したデータに対して同
時に動作するプロセスである。プロセッサは、単一のサ
イクルにおいて命令を待ち行列に渡し、次に動作を続行
する。このように、バースト命令は「非割り込み型」と
述べることができる。すなわち、バースト命令は完了す
るまでプロセッサの停止を強制しない(しかしながら、
場合によってはプロセッサを停止させる実施形態もあ
る。例えば、 新しいバースト命令が出される時新しい
バースト命令のための空間がが利用できるようになるま
でバースト命令待ち行列30がいっぱいであるような場
合である)。バースト命令待ち行列30はDMAコント
ローラ56によって読み取られる。DMAコントローラ
56は、バースト命令に代わってメイン・メモリDRA
M14にアクセスする準備ができている時(すなわちバ
ースト・バッファ・インターフェースが優先権を持って
いる時)、待ち行列の次の命令を読み取りその命令の実
行を開始する。
【0112】図7に示されるように、この構成はバース
ト命令実行における独立した4つのフェーズをとる。第
1は、命令が出された直後の「保留」フェーズであり、
命令はバースト命令待ち行列30に格納されている。命
令が待ち行列にあってDMAコントローラ56によって
認識されると、Dまプロセスが実行される。これは「転
送」フェーズである。転送フェーズが完了すると、バッ
ファ領域26のバースト・バッファとメイン・メモリ1
4の対応する領域の内容が同一となる(またそのトラン
ザクションに適切な警告フラグがセットされる)。そこ
で、バースト・バッファは「有効」と呼ばれ、その結果
「有効」フェーズが始動される。これは、バッファ領域
26のバースト・バッファとメイン・メモリ14の対応
する領域の対応関係を変化させるなにがしかの事象が発
生するまで、継続する。そのような変化の事象が発生す
ると、バースト・バッファは「無効」と呼ばれ、その結
果「無効」フェーズが始動される。
【0113】命令の発信は、物理的バッファとメイン・
メモリの領域の間の関連性を定義するが、このような結
合動作は命令が実行される実行時にのみ発生する。この
実行時結合は、本アーキテクチャを使用する際の柔軟性
および低いプロセッサ命令オーバーヘッドの主要要因を
なすものである。両者の間で維持される相互関係はない
が、バッファ名変更および再使用が許容される。移転フ
ェーズの間に、本アーキテクチャは、bufcntl.transfer
ビットに従って命令にラベルをつける。その他のフェー
ズは、ソフトウェアを通して追跡されるかまたは追跡可
能である。
【0114】有効なフェーズへの入口は、上述のよう
に、関連バースト命令で指示されたバースト転送が完了
したという標示である。これは、バースト命令直後の同
期命令syncのソフトウェアによる発信によって検出され
ることができる。上述の通り、バースト命令待ち行列3
0は1時点で1つの同期命令しか含むことができないの
で、待ち行列が同期命令を含む間は更なるバースト命令
をバースト命令待ち行列に書き込むことはできない。同
期命令syncを使用して同期化を実行するために使用でき
る次の3つの方法がある。 1. 同期命令を発信し同期レジスタを読み取る。待ち行
列の中のすべてのバースト命令が完了し同期命令が出現
するまで読取りが禁止される。 2. 同期命令を発信し、次に待ち行列にもう1つのバー
スト命令を書き込む。この場合は、待ち行列の中のすべ
てのバースト命令が完了し同期命令が出現するまで書き
込みが禁止される。 3. 同期命令を発信し同期命令に関してlastcmdレジスタ
をポーリングする。 方法1および2はプロセッサをブロックするが、方法3
はブロックしない。バッファ領域がその有効フェーズに
あれば、プロセッサは、それが含むデータに動作するこ
とができる。本実施形態では、プロセッサはバイト、ハ
ーフワードおよびワード単位のアクセスを使用してバッ
ファのデータにアクセスする。
【0115】本発明に従うコンピュータ・システムの第
2の実施形態へ原始コードをコンパイルするプロセスを
以下に記述する。本実施形態のバースト・バッファ・ア
ーキテクチャは、大規模なデータ・アレイに関して反復
される単純な動作を含む通常の単純なループ構造を取り
扱う場合、特に効果的である。そのようなループ構造に
は、例えば、媒体計算処理においてしばしば出会うこと
がある。バースト・バッファ・アーキテクチャへのコー
ドのコンパイルは、原始コードにおける該当ループを識
別して、それらループがバースト・バッファを利用して
オリジナルの動作を正しく実行することができるよう
に、それらループを再構築することを必要とする。
【0116】該当するループの識別は手走査で行うこと
ができる。代替的方法として、既知の技術によって適切
なループを識別することもできる(例えば、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に記載されている)。
識別されたなら、それらループは、バースト・バッフ
ァによって利用されることができる形式に、正しく変換
される必要がある。
【0117】識別されるコードはループ形式をしてい
る。バースト・バッファを通して処理されるためには、
ループは、各々が1バーストのサイズである一連の断片
に広げられる必要がある。その後、一連のバースト・ロ
ードおよびストアという観点から本アーキテクチャによ
るループの取り扱いを定義することが可能となる。しか
しながら、バースト・バッファはソフトウェアによって
制御される資源であるので、ロードまたはストア・バー
スト命令が出される前、およびバッファが計算処理の目
標として使用される前に、バッファを割り当てることが
必要である。ロードおよび割当てに続いて、計算処理が
実行される。このような方法は、識別したループを上記
のように複数の断片に広げた場合、またはループそれ自
体が1つのバーストより小さい場合に適用される。計算
処理の直後に、storeburst命令を使用してバッファに記
憶され、入力バッファが解放される。storeburst命令が
完了すれば、出力バッファも解放される。以下の表8
は、上記動作を行うコードの1例を示す。
【0118】
【表8】 for(i=0;i<imax;i++) { x[i] = f(a[i],b[i],c[i]); y[i] = g(a[i],b[i],c[i]); } } /* a[i],b[i],c[i]は入力ストリーム、x[i],y[i]は出力ストリームで、imaxのサ イズはバーストのサイズよりきわめて大きいと仮定される。*/ /* 変換の主ループ */ for(i=0;i<imax;i+=burst_size) { alloc A; /* ストリームa[i]にバッファAを割り当て */ loadburst A(i,burst_size, 1); /* 開始点,長さ,ストライド */ alloc B; /* ストリームb[i]にバッファBを割り当て */ loadburst B(i,burst_size, 1); /* 開始点,長さ,ストライド */ alloc C; /* ストリームc[i]にバッファCを割り当て */ loadburst C(i,burst_size, 1); /* 開始点,長さ,ストライド */ alloc X; /* ストリームx[i]の計算処理用バッファの割り当て */ alloc Y; /* ストリームy[i]の計算処理用バッファの割り当て */ for(j=0; j<burst_size; j++) { x[i+j]=f(a[i+j],b[i+j],c[i+j]); /* 計算処理実行 - バッファのヒットを参照 */ } for(j =0; j <burst_size;j++) { y[i+j]=g(a[i+j],b[i+j],c[i+j]); } free A; /* 計算処理が完了したので入力バッファを解放 */ free B; /* 計算処理が完了したので入力バッファを解放 */ free C; /* 計算処理が完了したので入力バッファを解放 */ storeburst X(i,burst_size, 1); /* 開始点,長さ,ストライド */ storeburst Y(i,burst_size, 1); /* 開始点,長さ,ストライド */ free X; /* 計算処理が完了したので出力バッファを解放 */ free Y; /* 計算処理が完了したので入力バッファを解放 */ } /* (imax%burst_size ! = 0)の時 */ for(i=imax/burst_size;i<imax;i++) { x[i]=f(a[i],b[i],c[i]); y[i]=g(a[i], b[i],c[i]); }
【0119】上記変換されたコードに関する依存性グラ
フが図8に示されている。例えば、目標をバッファ04に
向けた計算処理は、バッファ01、02および03のloadburs
tにのみ依存するが、出力バッファ04自体の割り当てに
も依存する。図8上の括弧の中の番号はノード識別子で
ある。ここで変換されているコードは、単純ではあるが
相対的に役立たないスケジュールを作成する。これは,
利用できる並列機能が開拓されなかった(すなわちコー
ドがバースト命令を出している時計算処理が実行されて
いないまたはその逆)ためである。依存性グラフの分析
を使用すれば、一層すぐれたスケジュールを生成するス
ケジューリング・プログラムを駆動させることができ
る。この場合、追加のバースト・バッファの使用を通し
て改善が図られる。
【0120】必要とされるバースト・バッファの最小数
は、各入力ストリームのための1つに計算処理を実行す
るためのものを加えた数である(計算処理用のバッファ
は計算処理が完了した後、空にし、解放し,次の計算処
理のため割り当てられる)。リスト・スケジューリング
およびバッファ割当ての考察を通して、改善されるスケ
ジュールを見出すことができる。可能な限り効率的にD
RAMメモリ・バンド幅を使用するためバースト効率を
最適化する解決策は測定可能である。これは、計算効率
を最大にすることを目標とする通常の計算戦略とは異な
る。相違は、本発明が考慮するシステムの主要制約がバ
ンド幅にあることによる。
【0121】バッファ割当てを管理することに加えて、
メモリおよびバッファ・アクセス・テーブルはバッファ
名変更をサポートする。コンパイラの目的の1つは、断
片掘り出しと呼ばれるプロセスを使用して潜在的バース
トを露顕させるようにループを変換することである。ル
ープが断片掘り出しされると、モジュール・スケジュー
リング(またはソフトウェア・パイプライン化)と呼ばれ
る次のプロセスが適用される。この後者のプロセスは、
部分的に広げられたループ内の特定の点でバッファ名が
変更されることを必要とする。例えば、ループ計算処理
は、'A'と名付けられた論理的バッファが物理的バッフ
ァ'2'からバッファ'5'へマップされることを必要とする
かもしれない。この例では、別のバッファがプロセッサ
によって計算処理のためアクセスされている間に、1つ
の物理的バッファがメモリへのバースト転送のために使
用されることができる。バースト動作および計算処理が
並列に動作し、従って、処理性能が向上する。
【0122】コンパイラによって実行されなければなら
ない更なる機能は、メモリ・バス幅(本実施形態のケー
スでは32ビット)の幅を持つバーストだけがバースト
・バッファ・アーキテクチャによって処理されることが
できるので、ソフトウェアにおけるsizedburstをチャネ
ル−バーストへ変換することである。コンパイルの間、
ソフトウェアによって検出されるsizedburstはchanelbu
rstへマップされる。
【0123】以下に、バースト・バッファ・システム2
4使用の典型例を記述する。第1に、バースト・バッフ
ァは局所的データ・バッファとして使用され、バッファ
・サイズのメモリ領域がバースト・バッファ40へ直接
マップされる。これは次の2つの方法で実施されること
ができる。(1)データが初期化されていなければ、alloc
bufferコマンドを使用して、バッファ40が取得されア
ドレス・マッピングが実行される。(2)データがメイン
・メモリ14で初期化されていれば、loadburstを使用
してデータがバースト・バッファ40へコピーされる。
マッピングが行われたなら、プロセッサ10は同じアド
レスへのアクセスを継続し、それらアドレスがバッファ
40によって捕捉される。完了時点、またはシステムが
整合している必要がある時、storebufferコマンドが使
用される。第2に、バースト・バッファ・システム24
は参照テーブルとして使用される可能性がある。局所的
データ・バッファとまったく同じ方法で、バースト・バ
ッファ40は、loadburstコマンドを使用して参照テー
ブル・データで初期化されることもできる。バッファを
ヒットするアドレスへの参照は適切なデータを返す。テ
ーブル・サイズは制限されるが、より大きいテーブルの
一部をバッファ40へ配置し残りをメイン・メモリ14
に置くことができない理由はない。バッファ40に保持
される区域が最も頻繁に使用されれば、性能向上に役立
つ。整合性はこの場合問題でない。従って、テーブルの
使用が完了したならば、freebufferコマンドが出されな
ければならない。
【0124】上述されたシステムに対する制約の可能性
は、バースト・バッファ40が単純なFIFOとして使
用されることができないかもしれないということであ
る。アドレスはバッファの中のデータをアクセスするた
めに常に使用されなければならない。このバッファをあ
たかもFIFOであるかのようにみせるラップ機構をソ
フトウェアで開発することは可能である。しかしなが
ら、バッファが論理的にいっぱいになった時ストア・バ
ーストが出されることを意味するバッファ・サイズ分の
ロードおよびストア・バーストの遅延という点でのFI
FO機能性を模倣するため遅延カウントが使用される。
【0125】上述された実施形態の典型的動作におい
て、バースト・データがメイン・メモリ14からバース
ト・バッファ・メモリ26へ読み込まれ、プロセッサ1
0/プロセッサ・インターフェース12によって処理さ
れ、バースト・バッファ・メモリ26へ戻され、次にメ
イン・メモリ14に書き込まれる。別の実施形態におい
ては、プロセッサ10/プロセッサ・インターフェース
12によって実行される処理の代わりに、バースト・バ
ッファ・メモリ26に接続される専用計算エンジンによ
ってそれが実行される。
【0126】本発明の範囲を逸脱することなく上述の実
施形態に対し種々の変更を行うことができる点は認めら
れるであろう。
【0127】本発明には、例として次のような実施様態
が含まれる。 (1)データを処理する処理システムと、上記処理シス
テムによって処理されるデータまたは該システムによっ
て処理されるべきデータを記憶するメモリと、上記メモ
リへのアクセスを制御するメモリ・アクセス・コントロ
ーラと、上記メモリとの間で読み書きされるべきデータ
をバッファするための少くとも1つのデータ・バッファ
と、上記メモリ・アクセス・コントローラへバースト命
令を発信する手段と、上記メモリ・アクセス・コントロ
ーラへ発信されるバースト命令を待ち行列に記憶する手
段と、を備えるコンピュータ・システムであって、上記
メモリ・アクセス・コントローラが上記バースト命令に
応答して単一のメモリ・トランザクションで上記メモリ
と上記データ・バッファの間で複数のデータ・ワードを
転送し、上記待ち行列記憶手段によって、先行バースト
命令が実行された直後に次のバースト命令が上記メモリ
・アクセス・コントローラによる実行のため使用可能な
状態にされることを特徴とする、コンピュータ・システ
ム。 (2)上記バースト命令のうちの少くとも1つが遅延パ
ラメータを含み、上記バースト命令発信手段が、上記遅
延パラメータに従って上記メモリ・アクセス・コントロ
ーラへのそのような命令発信を遅延するように動作す
る、上記(1)に記載のコンピュータ・システム。 (3)上記バースト命令の各々が、そのバースト命令に
応答してアクセスされるべきメモリ位置の間の間隔を定
義するパラメータを含むかあるいはそのようなパラメー
タに関連づけられる、上記(1)または(2)に記載の
コンピュータ・システム。
【0128】(4)データを処理する処理システムと、
上記処理システムによって処理されるまたは該システム
によって処理されるべきデータを記憶するメモリと、上
記メモリへのアクセスを制御するメモリ・アクセス・コ
ントローラと、上記メモリとの間で読み書きされるべき
データをバッファするための少くとも1つのデータ・バ
ッファと、上記メモリ・アクセス・コントローラへバー
スト命令を発信する手段と、を備えるコンピュータ・シ
ステムであって、そのようなバースト命令の各々が、そ
のバースト命令に応答してアクセスされるべきメモリ位
置の間の間隔を定義するパラメータを含むかあるいはそ
のようなパラメータに関連づけられ、上記メモリ・アク
セス・コントローラが、上記バースト命令に応答して、
上記間隔パラメータに従った間隔をあけたメモリ位置と
上記データ・バッファの間で複数のデータ・エレメント
を単一トランザクションで転送することを特徴とする、
コンピュータ・システム。 (5)上記処理システムからのメモリ要求に応答して、
対応するメモリ位置がデータ・バッファにマップされて
いるか否かを判断し、マップされていればデータ・バッ
ファのマップされている位置にアクセスするように動作
する比較手段を更に備える、上記(1)乃至(4)のい
ずれかに記載のコンピュータ・システム。 (6)バースト命令をメモリ・アクセス・コントローラ
に発信する上記手段が、メモリに対するトランザクショ
ンの記述のためのメモリ・アクセス・テーブルおよび少
くとも1つのデータ・バッファに対するトランザクショ
ンの記述のためのバッファ・アクセス・テーブルを含
み、発信されるバースト命令の各々が、上記メモリ・ア
クセス・テーブルおよび上記バッファ・アクセス・テー
ブルをインデックスする、上記(1)乃至(4)のいず
れかに記載のコンピュータ・システム。 (7)バースト命令に関して、メモリおよび少くとも1
つのデータ・バッファの間のトランザクションを定義す
るため、メモリ・アクセス・テーブルおよびバッファ・
アクセス・テーブルにおける情報が実行時に結合され
る、上記(6)に記載のコンピュータ・システム。
【0129】(8)バースト命令をメモリ・アクセス・
コントローラに発信する上記手段が、バースト命令によ
る上記メモリ・アクセス・テーブルおよび上記バッファ
・アクセス・テーブルのインデックス付けを文脈に応じ
て修正するための文脈テーブルを含む、上記(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)のいずれかに記載のコンピュータ・システム。
【0130】(15)上記(1)乃至(14)のいずれ
かに記載のコンピュータ・システムにおいて実行される
方法であって、少なくとも1つのデータ・バッファへコ
ンパイルすることが適切な,あるいは少なくとも1つの
データ・バッファの支援の下での実行に適切な計算処理
エレメントを原始コードの中で識別するステップと、原
始コードの中の上記識別した計算処理エレメントを、各
々が少くとも1つのデータ・バッファのサイズより大き
くないメモリ・トランザクションを含む一連の命令に変
換し、そのような命令をバースト命令として表すステッ
プと、上記処理システムによって原始コードを実行し、
上記少なくとも1つのデータ・バッファに対するアクセ
スを通して上記識別した計算処理エレメントを処理する
ステップと、を含む方法。 (16)上記識別した計算処理エレメントによって必要
とされるデータが、上記処理システムによって要求され
る前にメモリから少くとも1つのデータ・バッファへ取
り出される、上記(15)に記載の方法。 (17)メモリと少くとも1つのデータ・バッファの間
のトランザクションが完了するまで処理システムを停止
させる手段が提供される、上記(15)または(16)
に記載の方法。
【0131】
【発明の効果】本発明によって、マルチメディアなどの
媒体データを処理するために適したキャッシュ・システ
ムが実現し、メモリ・アクセスのバンド幅の極大化が図
られる。
【図面の簡単な説明】
【図1】本発明に従うコンピュータ・システムの第1の
実施形態のブロック図である。
【図2】図1のシステムにおけるバースト・バッファ・
メモリおよびバースト命令待ち行列がハードウェアまた
はソフトウェア制御の下で構成される種々の形態を図3
と共に示すブロック図である。
【図3】図1のシステムにおけるバースト・バッファ・
メモリおよびバースト命令待ち行列がハードウェアまた
はソフトウェア制御の下で構成される種々の形態を図2
と共に示すブロック図である。
【図4】本発明に従うコンピュータ・システムの第2の
実施形態におけるバースト・バッファ・アーキテクチャ
を示すブロック図である。
【図5】図4のバッファ・コントローラを示すブロック
図である。
【図6】図4のバースト・バッファ・アーキテクチャに
おける制御レジスタの機能を示すブロック図である。
【図7】図4のバースト・バッファ・アーキテクチャに
よるバースト命令の実行の流れを示すブロック図であ
る。
【図8】本発明に従ってコンパイルされる原始コードの
相互関係を示すグラフ図である。
【符号の説明】
10 プロセッサ、 12 プロセッサ・インターフェース 14 メインDRAMメモリ 16 メイン・メモリ・インターフェースまたはアク
セス・コントローラ 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)
───────────────────────────────────────────────────── フロントページの続き (72)発明者 スチュアート・ヴィクター・クイック イギリス、エス・エル9、9ピー・ジー、 バックス、チャルフォント・エス・ティ・ ピーター、バウンダリー・ロード、ヒルク ロフト(番地なし)

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】データを処理する処理システムと、 上記処理システムによって処理されるデータまたは該シ
    ステムによって処理されるべきデータを記憶するメモリ
    と、 上記メモリへのアクセスを制御するメモリ・アクセス・
    コントローラと、 上記メモリとの間で読み書きされるべきデータをバッフ
    ァするための少くとも1つのデータ・バッファと、 上記メモリ・アクセス・コントローラへバースト命令を
    発信する手段と、 上記メモリ・アクセス・コントローラへ発信されるバー
    スト命令を待ち行列に記憶する手段と、 を備えるコンピュータ・システムであって、 上記メモリ・アクセス・コントローラが上記バースト命
    令に応答して単一のメモリ・トランザクションで上記メ
    モリと上記データ・バッファの間で複数のデータ・ワー
    ドを転送し、上記待ち行列記憶手段によって、先行バー
    スト命令が実行された直後に次のバースト命令が上記メ
    モリ・アクセス・コントローラによる実行のため使用可
    能な状態にされることを特徴とする、 コンピュータ・システム。
JP35991697A 1997-01-09 1997-12-26 コンピュータ・システム Expired - Fee Related JP4142141B2 (ja)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Cited By (6)

* Cited by examiner, † Cited by third party
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