JP4748610B2 - 取り出されたデータをメモリに直接に書き込むストレージコントローラによるバッファスペースの最適な使用 - Google Patents

取り出されたデータをメモリに直接に書き込むストレージコントローラによるバッファスペースの最適な使用 Download PDF

Info

Publication number
JP4748610B2
JP4748610B2 JP2008157068A JP2008157068A JP4748610B2 JP 4748610 B2 JP4748610 B2 JP 4748610B2 JP 2008157068 A JP2008157068 A JP 2008157068A JP 2008157068 A JP2008157068 A JP 2008157068A JP 4748610 B2 JP4748610 B2 JP 4748610B2
Authority
JP
Japan
Prior art keywords
data
data string
memory
buffer
secondary storage
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2008157068A
Other languages
English (en)
Other versions
JP2009032243A (ja
Inventor
カヌリ ムルデュラ
Original Assignee
エヌヴィディア コーポレイション
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by エヌヴィディア コーポレイション filed Critical エヌヴィディア コーポレイション
Publication of JP2009032243A publication Critical patent/JP2009032243A/ja
Application granted granted Critical
Publication of JP4748610B2 publication Critical patent/JP4748610B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Bus Control (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

[003]本開示は、一般にストレージ技術に関し、より具体的には、取り出されたデータをメモリに直接に書き込むストレージコントローラによるバッファスペースの最適な使用に関する。
[005]ストレージコントローラは、不揮発性ストレージ媒体に対する読取り要求及び書込み要求を制御するコンポーネント(又はユニット)のことを意味する。それらの要求は、多くの場合に中央プロセッサ(例えば、中央演算処理装置、CPU)から受け取られ、ストレージコントローラは、各要求を処理するために不揮発性ストレージ媒体にインターフェースで接続する。読取り要求の場合には、ストレージコントローラは、不揮発性ストレージ媒体からデータを取り出す。
[006]ストレージコントローラは、多くの場合に取り出されたデータをメモリに書き込むために必要とされる。例えば、CPUは、ファイルに含まれるデータが、(以下で指摘されるコントローラメモリから区別するために)メインメモリとして動作するランダムアクセスメモリ(random access memory)(RAM)に取り出され、記憶されることを指し示すことができる。
[007]ストレージコントローラは、さらにメモリに直接に書き込むように要求することができる。「直接に(directly)」とは、一般にストレージコントローラが、ストレージオペレーションごとにCPUに割込みをかけることなしに、RAMにデータを記憶することを意味する。一例証として、ダイレクトメモリアクセス(direct memory access)(DMA)オペレーションにおいては、ストレージコントローラは、全体データを記憶することの完了の後だけにCPUに割込みをかける。
[008]バッファスペースは、一般的に様々な読取り/書込み要求をサポートするためにストレージコントローラに設けられる(又は関連づけられ)。バッファスペースは、一時ストレージを提供し、ターゲットメインメモリにデータを記憶するために、速度ミスマッチ及びリソース(例えば、バス)の使用不可能の場合においてさえも、データの順序正しい転送を可能にする。バッファスペースは、一般的にRAMとして実装され、コントローラメモリと称される。
[009]バッファスペースは、様々なオペレーションが、より小さなバッファ/メモリサイズを用いてさえ、(よりよいスループット、低減されたレイテンシーなどのうちの1つ又は複数で)効率的にサポートすることができるように、最適に使用されることが一般に望ましい。
[0021]1.概要
[0022]本発明の一態様に従って提供されるストレージコントローラは、単一バッファを使用して、複数の二次ストレージユニットから取り出されるデータを記憶する。一実施形態において、ストレージコントローラの中に提供される制御ユニットは、バッファにおける1組の(1つ又は複数の)メモリロケーションのおのおのにおける二次ストレージユニットのうちのどれかから取り出されるデータ要素を記憶する柔軟性を伴って、設計される。バッファスペースは、最適に使用することができ、そしてバッファサイズ要件は、結果として低減させることができる。
[0023]本発明の一態様は、対応する情報を要求することができる前に、プリフェッチするロケーションデスクリプタ(これは、取り出されたデータ要素が、最終的にターゲットメモリに記憶されることになるターゲットメモリのロケーションを指し示す)によるさらなる最適な使用を提供する。一実施形態においては、ストレージコントローラは、読取り要求において要求されるデータ要素を供給するために不揮発性メモリに対してコマンドを発行し、ロケーションデスクリプタのサブセットだけを取り出す。サブセットにおける要素の数は、対応するデータ要素が、記憶するために使用可能になった直後に、ロケーションデスクリプタの使用可能性を保証するように選択される。取り出されたロケーションデスクリプタは、バッファに記憶することもできる。
[0024]ロケーションデスクリプタのサブセットだけを取り出して記憶することに起因して、バッファサイズ要件は、低減させることができる。そのような要件は、その技術(例えば、NCQ)により、二次ストレージユニットが、以前の要求に関連したデータ要素を送る前に、後の要求に関連したデータ要素を送ることができるようになるときに、重要になる可能性があり、ストレージコントローラは、すべての待ち状態の要求についてのロケーションデスクリプタを取り出すことが望ましい。
[0025]先行したロケーションデスクリプタの取出しに起因して、データがストレージコントローラにバッファされる存続時間は、低減させることができ、それによってストレージデスクリプタが直ちに使用不可能になることによって妨害されることなしに、より低いレイテンシーを伴うデータ転送を完了することに加えてさらにバッファサイズ要件を低減させている。ロケーションデスクリプタのそのようなタイムリーな使用可能性は、共用されるバッファが、より小さなサイズになるように設計することができ、他の要求に関連したデータを記憶するためにロケーションを解放することが必要である可能性があるので、単一のバッファが、異なる二次ストレージユニットから取り出されるデータを記憶するために使用されるときに、重要になる可能性がある。
[0011]実施形態例は、以下に簡単に説明される以下の添付の図面を参照して説明されることになる。
[0019]図面中において、同様な参照番号は、一般に同一の要素、機能的に類似した要素、及び/又は構造的に類似した要素を指し示す。要素が最初に現れる図面は、対応する参照番号における最も左の(1つ又は複数の)数字によって指し示される。
[0026]本発明のいくつかの態様は、例証のための例を参照して以下で説明される。非常に多くの特定の詳細、関係、及び方法が、本発明の完全な理解を提供するために述べられることを理解すべきである。しかしながら、当業者なら、本発明は、1つ又は複数の特定の詳細なしに、或いは他の方法などを用いて実行することができることを容易に理解するであろう。他の例においては、よく知られている構造又はオペレーションは、本発明の特徴をあいまいにすることを回避するために詳細には示されていない。さらに、説明される特徴/態様は、様々な組合せの形で実行することができるが、それらの組合せのうちの一部だけが、簡潔にするために本明細書中において説明される。
[0027]2.システム例
[0028]図1は、本発明のいくつかの特徴を実施することができる一例のシステムを示す図である。図は、中央演算処理装置(central processing unit)(CPU110)と、ストレージコントローラ120と、メインメモリ130と、二次ストレージユニット140A〜140Nとを含めて示されている。典型的な環境は、(タイプにおいても数においても)様々な他のコンポーネントを含むことができ、これらのコンポーネントは、説明される特徴の理解に関連していないとして示されてはいないことを理解しなければならない。同様に、一部の他のシステムは、より少ないコンポーネントを含むこともできる。図1の各コンポーネントについては、以下で詳細に説明される。
[0029]メインメモリ130は、ランダムアクセスメモリ(RAM、例えば、ダイナミックRAM−DRAM)として実施することができ、様々な命令及びデータを記憶する。CPU110によって実行される(例えば、ユーザアプリケーションを表す)命令のうちの一部は、本発明のいくつかの態様に従って、データが二次ストレージユニットから取り出されるようにする。オペレーティングシステムを表す一部の他の命令は、メインメモリ130における特定のロケーションを割り付けて、取り出されたデータを記憶することができる。一部の他の命令の実行は、以下に説明される他の特徴が提供されるようにする。同様に、メインメモリ130は、以下の節で説明されるように、取り出されたデータ要素を記憶するのはもちろん、(以下の節で説明される)ロケーションデスクリプタを記憶することができる。
[0030]二次ストレージユニット140A〜140Nのおのおのは、不揮発性ストレージ媒体を含み、例えば、ハードディスク、CD−ROMなどとして実施することができる。二次ストレージユニット140A〜140Nは、一般にそれらの内部にコントローラユニットを含んで、(読取り、書込み、ストレージコントローラ120へのデータ転送などの)データに関与する様々なオペレーションを協調させ、関連技術においてよく知られているSATA(シリアルアドバンスドテクノロジアタッチメント(Serial Advanced Technology Attachment))などの対応するプロトコル/規格と整合するように実施することができる。
[0031]シリアル技術の場合には、バイト列についての要求は、パス124A上で送ることができ、要求されたバイト(データ要素)は、その要求のために順に受け取ることができる。一実施形態においては、ただ1つの要求を各二次ストレージに対して待ち状態にすることができる。しかしながら、各二次ストレージに対して待ち状態であるべき複数の要求についてのサポートが存在する場合には、(例えば、NCQ、ネイティブコマンドキューイング(native command queuing)を使用して)複数の要求に関連したデータは、(受け取る間に)再順序づけすることができるが、各要求に関連したデータは、データが二次ストレージに(論理的に)記憶される順序と同じ順序で受け取り続けることができる。
[0032]CPU110は、(例えば、メインメモリ130から取り出される)ソフトウェア命令を実行する、1つ又は複数のプロセッサユニットを表すことができる。一部の命令は、二次ストレージユニットからデータを取り出す要求を発行することができる。一実施形態においては、CPU110は、データ要素列を転送する要求をただ発行するにすぎず、ストレージコントローラ120は、要求されたデータの転送の完了を信号で伝える割込みを生成する。いくつかの要求は、要求のうちの多くがストレージコントローラ120によって処理されるように、短い存続時間内に発行することができることを理解すべきである。処理されている要求は、待ち状態の要求と称することができる。
[0033]ストレージコントローラ120は、(パス112を経由して)CPU110からの要求を受け取って、二次ストレージユニット140A〜140Nからのデータ要素列を読み取り、要求されたデータ要素を供給するために、対応するコマンドを二次ストレージユニット140A〜140Nに対して発行する。ひとたび、データが二次ストレージユニットから取り出された後に、ストレージコントローラ120は、CPUから受け取られる要求によって指定されるそれぞれのターゲットメモリに対して、データを転送する。
[0034]二次ストレージユニットからのデータの受け取りと、その後のメモリ130に対する転送との間に、ストレージコントローラ120は、データを一時的に記憶する必要がある。
[0035]従来の一実施形態においては、ストレージコントローラ120は、物理インターフェース(リンク)124A〜124Nのおのおのの上で受け取られるデータについて、おのおの1つのバッファを含んでいる。そのようなアプローチは、(すべてのバッファが一緒になった)より高い集約オンチップメモリをもたらし、この集約オンチップメモリは、より高いコスト要件及びダイ面積要件などの理由に起因して、望ましくない可能性がある。
[0036]本発明の一態様に従って提供されるストレージコントローラは、以下でさらに詳細に説明されるように、そのような短所の一部を克服する。
[0037]3.ストレージコントローラ
[0038]図2は、本発明の一実施形態におけるストレージコントローラの詳細を示すブロック図である。ストレージコントローラ120は、バッファ210と、制御ユニット220と、FIFO240A〜240Nと、バスマスタ250とを含んで示されている。ストレージコントローラ120は、以下の説明に関連のないものとして図に示されていない様々な他のコンポーネント/ブロックを含むことができる。以下の説明では、データ要素が、二次ストレージユニット140Aから取り出されるべきであり、取り出されたデータ要素が、メインメモリ130に記憶されるべきであることを指し示す読取り要求が受け取られることを仮定する。しかしながら、異なるストレージユニットとターゲットメモリは、本発明の様々な態様の範囲及び趣旨を逸脱することなく指定することができる。図2の各コンポーネントについては、以下で詳細に説明される。
[0039]FIFO240A〜240Nのおのおのは、制御ユニット220が、(対応するFIFOからパス224A〜224Nを経由して)バッファ210に対してデータを移動させる前に、対応する二次ストレージユニット140A〜140Nからパス124A〜124Nを経由して受け取られるデータについての一時ストレージを提供する。さらに、各FIFOは、二次ストレージユニットから受け取られるステータス/制御情報を記憶し、この同じものを制御ユニット220に対して供給することができる。関連技術においてよく知られているSATAプロトコルの場合に実施される一実施形態においては、各FIFOは、プロトコル仕様を満たすためにフロー制御の目的のために使用される。例えば、SATAは、ストレージコントローラが、受け取りフロー制御がパス124A上でそれによって開始された後に、少なくとも21個のDwordを受け取ることができることを必要とする。これは、任意のポート上のデータが、共用されるバッファ210を獲得する際に、起こりうる調停レイテンシーに起因して決して脱落させられないことを保証する。
[0040]制御ユニット220は、パス112とパス124A/124Nとの間のデータ転送を協調させるために様々なオペレーションを実行する。とりわけ、制御ユニット220は、パス112上で要求を受け取って、パス124A〜124Nのうちのどれかに接続されたストレージユニット上に記憶されるバイト列を取り出すことができる。バイト列は、あらかじめ指定された任意の表記法に従って(例えば、関連技術においてよく知られているアドバンスドホストコントローラインターフェース(Advanced Host Controller Interface)(AHCI)規格に従って)指定することができ、一般にCPU110によって実行されるデバイスドライバソフトウェアによって提供される。要求はまた、例えば、以下の節で説明されるようなデータが記憶されるべきターゲットメモリと、ターゲットメモリにおけるロケーション(単数又は複数)を指定する。
[0041]制御ユニット220は、パス124A〜124N上で(例えば、SATA規格に従って)対応するコマンドをストレージユニットに対して発行して、対応するFIFOの中に要求されたデータを取り出す。次いで、制御ユニット220は、各FIFOの中のデータをバッファ210へと転送する。制御ユニット220は、例を用いて以下の節において説明されるように、データが、ターゲットメモリ/ロケーションに記憶されることを容易にするように、データと一緒に制御情報を記憶することができる。
[0042]バッファ210は、パス124A〜124Nから受け取られるデータが、メインメモリ130に記憶される前に一時的に記憶される、ランダムにアクセス可能なメモリを表す。一実施形態において、SRAMとして実施される(メモリセルのマトリックスと、アクセス回路とを有する)単一メモリユニットが、すべてのパス124A〜124N上で受け取られるデータを記憶するために使用される。SRAMは、単一の集積回路としてストレージコントローラの他のコンポーネントと一緒に実施され、バッファ210は、それ故にそのようなシナリオにおいて「オンチップ」であると言われる。しかしながら、代替実施形態は、単一バッファをサポートする複数のメモリユニットを使用することができる。
[0043]本発明の一態様によれば、メモリスペースは、少なくとも一部のメモリロケーションを使用して、パス124A〜124Nのどれかの上で取り出されるデータを記憶することができるように共用される。バッファスペースは、そのような共用によって、効率的に利用することができる。バッファスペースの効率的な使用によって、そのような共用を、性能ボトルネックとデータ脱落(オーバーフロー)を回避しながら、可能にすることができる。
[0044]バスマスタ250は、バッファ210の中のデータをメインメモリ130へと転送する。一実施形態においては、バスマスタ250は、バス112に対するアクセスのために調停し、次いでDMA技法を使用して、バッファ210のデータをメモリ130に記憶する。最後のデータ要素が記憶されるときに、バスマスタ250は、まずCPU110に対して(データ転送が完了していることを指し示す)割込みを送り、バス112の制御を明け渡すことができる。
[0045]一実施形態においては、二次ストレージユニットから取り出されるデータは、CPU110から受け取られるコマンドに関連するロケーションデスクリプタによって指定されるようなターゲットメモリ/ロケーションに記憶される。従って、説明は、ロケーションデスクリプタに関して継続される。
4.ロケーションデスクリプタ
[0046]図3の(A)及び図3の(B)は、それぞれメインメモリと、制御ユニット220の中のレジスタの一部分を表し、ロケーションデスクリプタ上の情報が、一実施形態においてCPU110によって制御ユニット220に対して供給される方法を示すために、図1及び2と組み合わせて使用される。上述したように、各ロケーションデスクリプタは、データ要素の対応するブロックが書き込まれるべきターゲットメモリとその中におけるロケーションを指し示す。
[0047]一実施形態において、CPU110は、制御ユニット220の中のレジスタ310に対してコマンドを書き込む。AHCI規格において、ロケーションデスクリプタは、物理領域デスクリプタ(physical region descriptor)(PRD)と称され、それ故に、メモリ130は、PRDテーブル350を用いて示される。PRDテーブルにおける各エントリは、読み取られるべきファイルにおけるデータの対応する一部分(ファイル内容を形成するデータ要素列)が記憶される場所を指定するメインメモリ130内のロケーション情報(すなわち、個々のメモリロケーションアドレス)を含む。ターゲットメモリを1つよりも多くのメモリユニットとすることができる場合には、ロケーションデスクリプタは、(指定される表記法に従って)同様にメモリユニットのうちの特定の1つを指定することができる。
[0048]PRD350A〜350Nは、PRDテーブル350内の連続したロケーションに配置することができる。代わりに、PRDテーブルそれ自体はリンクされたリストとして実施することもでき、各PRDは、(最後を除いて)リンクされたリストにおける次のPRDのアドレスを含むことができる。
[0049]一実施形態においては、PRD(350A〜350N)のおのおのは、メモリユニット130におけるメモリのブロックのサイズ(メモリロケーションの数)はもちろん、ブロックの開始アドレスを含むように設計されており、上記ブロックは、読み取られるバイト列の対応するサブセットが記憶される、メモリにおけるロケーションである。そのようなブロックのおのおのは、デバイスドライバがストレージコントローラ120に対して読取り要求を送る前に図1のシステムにおいて実行するオペレーティングシステムによって割り付けることができる。
[0050]CPU110は、さらに、要求が行われていることを指し示しており制御ユニット220に含まれるフラグ(図示されず)を設定することができる。それに応じて、制御ユニット220は、フィールド310の内容を読み取り、対応するコマンドヘッダ(フィールド320)をメインメモリ130へと取り出す。NCQ技術をサポートする一実施形態においては、32個までのコマンドヘッダが、可能性のある32個の待ち状態のコマンドのおのおの1つに対応して存在することができる(図示されず)。次には、コマンドヘッダ320が、コマンドテーブル330のアドレスを含んでいる。次には、コマンドテーブル330が、PRDテーブル(この例におけるPRDテーブル350)のアドレスを含んでいる。
[0051]したがって、すべてのPRDは、一緒にターゲットメモリとメモリロケーションを指定して、二次ストレージユニットから取り出されることが求められるデータ要素を記憶する。ロケーションデスクリプタのタイムリーな使用可能性は、データ要素がストレージコントローラ内でバッファされる存続時間を最小にし、それによってバッファスペース要件を低減させるために重要となりえることを理解すべきである。
[0052]一実施形態においては、制御ユニットは、すべての待ち状態の読取り要求のすべてのロケーションデスクリプタを取り出すことができる。しかしながら、そのようなアプローチは、かなりの量のバッファスペースを必要とする可能性がある。バッファスペース要件は、上述したNCQなどの技術の場合には複雑になる。
[0053]本発明の一態様は、以下でさらに詳細に説明されるように、必要とされるバッファサイズを低減させながら、ロケーションデスクリプタのタイムリーな使用可能性を保証する。
[0054]5.ロケーションデスクリプタの取り出し
[0055]図4は、ロケーションデスクリプタが、本発明の一態様に従って、取り出され、使用される方法を示すフローチャートである。フローチャートは、単なる例証のために、図1に関して、そしてストレージコントローラ120に関連して説明される。しかしながら、様々な特徴は、(例えば、図3に関して上記した共用されたバッファを有する又は有さない)他の環境、及び他のコンポーネントの形で実施することができる。
[0056]さらに、複数のステップは、単なる例証のために特定の順序の中で説明される。他のコンポーネント、及び異なる順序のステップを使用した、他の環境における代替実施形態は、本明細書中において提供される開示を読むことにより当業者にとって明らかになるように、本発明のいくつかの態様の範囲及び趣旨から逸脱することなく実施することもできる。フローチャートはステップ401において開始され、このステップにおいて、制御はステップ410へと進む。
[0057]ステップ410において、ストレージコントローラ120は、ロケーションデスクリプタが配置される場所を指定しておりストレージデバイスからメインメモリへと所望のデータ要素列を転送する要求を受け取る。上述したように、ロケーションデスクリプタは、データが記憶されるべき場所(特定のメモリユニット(単数又は複数)及びその中のロケーション)を識別する。一例を用いて示すと、ストレージコントローラ120は、二次ストレージユニット140Aに記憶されるファイルをメインメモリ130へと転送する要求を受け取ることができる。
[0058]任意のあらかじめ指定された表記法(pre-specifiedconvention)は、ロケーションデスクリプタのロケーションを指定するためのみならず、(特定の二次ストレージユニット、そこでのデータ要素列のロケーション/識別子を識別することを含めて)要求のフォーマットのためにも同様に使用することができる。そのような表記法(conventions)についてのいくつかのアプローチは、本明細書中に提供される開示を読むことにより当業者には明らかになるであろう。しかしながら、一実施形態においては、取り出されることが求められるデータ要素は、上述したAHCI規格に従って指定され、ロケーションデスクリプタは、図3の(A)及び図3の(B)に関して上記されるように指定される。次いで、制御はステップ420へと進む。
[0059]ステップ420において、ストレージコントローラ120は、データ要素列を供給する(すなわち、返送する)ためにストレージデバイスに対してコマンドを発行する。上述した例において、ストレージコントローラ120は、例えば、関連技術においてよく知られているSATAプロトコルに従って、特定のロケーションにおいてデータを提供するために二次ストレージユニット140Aに対してコマンドを発行する。コマンドは、対応するプロトコル/規格と整合するように発行することができる。次いで、制御はステップ440へと進む。
[0060]ステップ440において、ストレージコントローラ120は、デスクリプタのサブセットを、サブセットにおけるデスクリプタのうちの第1のデスクリプタを使用して記憶されるべきデータ要素の受け取りの完了の前に取り出す。上述したシリアル技術の場合には、ロケーションデスクリプタに対応するデータ要素を取り出すのにもっと長い時間がかかることを仮定すると、単一のロケーションデスクリプタだけが必要とされる可能性がある。より多くのロケーションデスクリプタを取り出すことができるが、(その要求についての)すべてのロケーションデスクリプタを取り出すことは、上述した理由のために望ましくないこともある。
[0061]デスクリプタのサブセットを取り出すアクションは、ステップ420のコマンドの発行に先行することができる。しかしながら、バッファ要件を減少させるために、ロケーションデスクリプタを取り出すアクションは、ステップ420のコマンドを発行した後であって、そのサブセットにおける第1のデスクリプタに対応するデータの受け取りの完了の前に開始することができる。特定のアクションは、デスクリプタが取り出されることになるユニットに依存する。
[0062]例えば、特定のロケーションデスクリプタが、バイト番号1024〜2047がメインメモリ130のメモリロケーション4048から5071に記憶される予定であることを指し示すことを仮定すると、ストレージコントローラ120は、ロケーションデスクリプタが、少なくともバイト5071(最後のバイト)が二次ストレージユニットから受け取られる前に、制御ユニット220にとって使用可能であることを保証することができる。追加のロケーションデスクリプタは、バス112が、ロケーションデスクリプタをメインメモリ130から取り出す目的のためにアクセスされる必要がある回数を減少させることができる。次いで、制御はステップ445へと進む。
[0063]ステップ445において、ストレージコントローラ120は、取り出されたデスクリプタをバッファ(例えば、210)に記憶する。ロケーションデスクリプタのサブセットだけが、ステップ440において取り出されるので、バッファサイズ要件は、低減させることができる。次いで、制御はステップ450へと進む。
[0064]ステップ450において、ストレージコントローラ120は、デスクリプタのうちの第1のデスクリプタによって指し示されるメモリロケーションに、受け取られたデータを記憶する。次いで、制御はステップ460へと進む。
[0065]ステップ460において、ストレージコントローラ120は、サブセットに続く次のデスクリプタをフェッチし、次のデスクリプタをサブセットに追加する。例えば、ステップ440において取り出されるデスクリプタのサブセットが、2つのデスクリプタを含むことを仮定すると、ストレージコントローラ120は、第1のデスクリプタに対応するデータを受け取る(そして、ステップ450におけるメインメモリの中の対応するロケーションにそれに続いて記憶する)とすぐに第3のデスクリプタを取り出し、それ故に第2及び第3のデスクリプタに対応するデータを記憶するロケーション情報を有する。次いで、制御はステップ480へと進む。
[0066]ステップ480において、ストレージコントローラ120が、ファイルからより多くのデータが受け取られていることを決定する場合、制御はステップ450へと進み、そうでなければ制御はステップ499へと進み、このステップにおいてフローチャートは、終了する。
[0067]ロケーションデスクリプタのサブセットだけを取り出すことにより、バッファサイズ要件を低減することができる。さらに、必要とされるロケーション記述の素早い使用可能性により、(二次ストレージユニットから受け取られる)データがバッファリングされるのに要する時間も低減することができ、それによってバッファサイズ要件を低減させている。
[0068]バッファ210は、上記される望ましい特徴をサポートしながら様々なアプローチを使用して実施することができる。その説明は、一実施形態におけるバッファ210の詳細に関して提供される。
[0069]6.バッファ
[0070]図5Aは、一実施形態におけるバッファ210の詳細を示すブロック図である。バッファ210は、データバッファ510と制御バッファ520を含めて示され、これらは、同様に図5Bを参照して以下でさらに詳細に説明される。図5Bは、一実施形態における、制御バッファ520に記憶されるデータの性質を示している。
[0071]制御ユニット220は、データバッファ510における各ロケーションデスクリプタに対応するデータブロック(CPU110からの単一の読取り要求によって取り出されるように求められるデータ要素列のサブセット)を記憶する。図5Bは、本発明の一実施形態におけるデータの対応するブロックのステータス情報を含む様々なフィールドを示している。
[0072]典型的なシナリオにおいては、いくつかのファイル要求は、未処理である(まだ完了されていない、又は待ち状態である)とすることもでき、制御ユニット220は、二次ストレージユニット140A〜140Nのおのおのから受け取られるファイル部分をデータバッファ510に記憶することができる。単一のバッファ210は、異なるリンクに対応するデータ(異なる二次ストレージユニットから受け取られるデータ)で、そしてメインメモリにおける異なるターゲットアドレスを有するデータを記憶するために使用される。そのため、データの各ブロックは、一例を用いて以下で説明されるように、対応するステータス情報と共に記憶される必要があることもある。
[0073]ステータスエントリ590は、フィールド550、560、570及び580を含めて示される。本例においては、ステータスエントリ590は、二次ストレージユニット140Aから受け取られ、図3Aに示されるように、メインメモリロケーション360に書き込まれるべきデータ、すなわちPRD350Aに対応するデータに対応することを仮定する。
[0074]フィールド550は、データが受け取られた元のポート(二次ストレージユニットに対応するリンク)を指定する。本例においては、エントリは、データが、二次ストレージユニット140Aから受け取られたことを指定する番号に対応することになる。
[0075]フィールド560は、ステータスエントリ590に対応する(データバッファ510における)データのブロックの長さ/サイズを指定する。
[0076]フィールド570及び580は、データバッファ510の中のデータのブロックがそこから開始されて書き込まれるべきメインメモリ130におけるアドレスを一緒に指定する。メインメモリ130におけるアドレスは、フィールド570(上位PRDアドレス(例えば、上位の32ビット))と、フィールド580(下位PRDアドレス(例えば、下位の32ビット))とによって指定されるアドレスのPRDの内容によって指定される。2つのフィールド570及び580に示される上位及び下位のPRDアドレスは、メインメモリにおけるアドレススペースが、64−ビットのアドレスによって指定され、それらのフィールドのおのおのは、一実施形態においては32ビットを含むにすぎないことを反映する。フィールド570及び580についての値は、説明のために挙げた例においてはPRD350Aから取り出される。
[0077]したがって、ロケーションデスクリプタの関連情報は、バッファ210の中のデータの各ブロック(各ロケーションデスクリプタによって指定されるデータに対応するデータ列における境界)に関連づけられて記憶することができ、バスマスタ250は、その情報を使用して、各データ要素を記憶するターゲットロケーション/メモリを決定することができる。
[0078]本説明は、一実施形態におけるデータ要素列の読取りオペレーションに関与するオペレーションのシーケンスを示す一例のシーケンス図の説明図を用いて継続される。
[0079]7.シーケンス図
[0080]図6は、本発明の一実施形態における、ファイル読取りオペレーション中に関与するCPU110と、ストレージコントローラ120と、二次ストレージユニット140Aのおのおのにおけるオペレーションのシーケンスを示すために使用される一例のシーケンス図である。
[0081]イベント610は、二次ストレージユニット140Aからメインメモリ130へと(ファイルに対応する)データ要素列を転送する、ストレージコントローラ120に対するCPU110による要求を表す。イベント615は、ストレージコントローラ120が、CPU110によって発行される要求610を読み取るオペレーションを表す。
[0082]イベント620は、ファイル内のデータを供給する、二次ストレージユニット140Aに対してストレージコントローラ120によって発行されるコマンドを表す。同じイベントにおいて、ストレージコントローラ120は、上記したように、(メインメモリ130に対して発行される適切なアクセスコマンドにより)ロケーションデスクリプタのサブセットの取出しを開始することができる。
[0083]本例においては、たとえ単一のロケーションデスクリプタが、(二次ストレージユニットからのデータブロックの取出しが、メインメモリからのロケーションデスクリプタを取り出すことよりも時間がかかることを仮定する)ほとんどの場合に、対応する情報のタイムリーな使用可能性を保証するのに十分である可能性があったとしても、ストレージコントローラ120は、イベント620中に2つのロケーションデスクリプタを取り出すことを仮定する。しかしながら、小さなブロック(とりわけ最後のブロック)の場合には、その余分なロケーションデスクリプタを取り出すことは、ロケーションデスクリプタを待つ必要なしに必要な情報のタイムリーな使用可能性を保証する。
[0084]時刻(time instance)t1において、二次ストレージユニット140Aは、ファイルの中のデータをストレージコントローラ120に対して供給することを開始する。データは、バッファ210に記憶することができる(図2)。t2まで、第1のロケーションデスクリプタによって指定されるデータは、バッファ210において使用可能であるように見なされる。ファイルデスクリプタは、t2に先行して取り出され/受け取られ、そしてまた(制御ユニット220によって)バッファ210に記憶されているようにも見なされる。ファイルデスクリプタの組(上述したイベント620の場合では2つ)のうちのすべての残りのデスクリプタもまた、受け取られるように見なされる。
[0085]したがって、イベント640は、データバッファ510からメインメモリ130へのデータ690Aの転送を表す。それ故に、バスマスタ250は、それらの部分(又はDMA転送において送ることができる少なくとも最小限の一部分)が使用可能になるとすぐに、メインメモリ130に対する対応する部分のDMA転送を開始することができる。一実施形態においては、DMA転送は、最小限の64バイトを転送する。それ故に、ファイルの対応する部分の少なくとも64バイトが、受け取られ、バッファ210に記憶されているときに、バスマスタ250は、メインメモリ130に対する転送を開始することができる。
[0086]データの受け取りは、第2のロケーションデスクリプタに対応するデータ690Bの受け取りの開始によって表されるように、継続される。
[0087]時刻t3において、ストレージコントローラ120は、第2のデスクリプタに対応するデータが時刻t4において完全に受け取られる前に、次のデスクリプタ(本例における第3のロケーションデスクリプタ)を取り出すことができる。t4の直後に開始されることが示されるイベント660は、メインメモリ130に対するデータ690Bの転送を表す。時刻t4から、(時刻t3において取り出される)第3のデスクリプタに対応するデータ690Cの受け取りが開始される。
[0088]後続のロケーションデスクリプタの取出しと、メインメモリ130に対するデータ部分の書込みと、二次ストレージユニット140Aからのデータの受け取りは、読取り要求の形で要求されるすべてのデータ要素が、メインメモリ130に対して転送されるまで、同様にして継続される。
[0089]以上の説明は、単なる例証のために単一の読取り要求に関して提供されるが、複数の読取り要求が、以上の説明と整合するように並列に処理されることになることを理解すべきである。
[0090]8.結論
[0091]本発明の様々な実施形態が上記されたが、それらは例にすぎず、そして限定ではないものとして表されていることを理解すべきである。したがって、本発明の幅と範囲は、上記の例示の実施形態のうちのどれによっても限定されるべきではなく、添付の特許請求の範囲とそれらの均等物に従ってのみ定義されるべきである。
本発明のいくつかの特徴を実施することができる一例のシステムを示す図である。 一実施形態におけるストレージコントローラの詳細を示すブロック図である。 (A)一実施形態における、ロケーションデスクリプタが、データを要求するプロセッサによって指定される方法を示す図である。(B)一実施形態における、ロケーションデスクリプタが、データを要求するプロセッサによって指定される方法を示す図である。 本発明の一実施形態における、ストレージコントローラによって使用されるバッファのサイズを低減することができる方法を示すフローチャートである。 一実施形態における、ストレージコントローラの中のバッファの詳細を示す図である。 一実施形態における、ストレージコントローラの中のバッファにおけるデータについての制御情報が指定される方法を示す図である。 一実施形態における、二次ストレージからターゲットメモリへのデータの転送中におけるイベントのシーケンスを示すために使用されるシーケンス図である。
符号の説明
110…CPU、112…パス、120…ストレージコントローラ、124A〜124N…物理インターフェース(リンク),パス、130…メインメモリ、140A〜140N…二次ストレージユニット、210…バッファ、220…制御ユニット、224A〜224N…パス、240A〜240N…FIFO、250…バスマスタ、310…レジスタ,フィールド、320…コマンドヘッダ,フィールド、330…コマンドテーブル、350…PRDテーブル、350A〜350N…PRD、360…メインメモリロケーション、510…データバッファ、520…制御バッファ、550,560,570,580…フィールド、590…ステータスエントリ、610,615,620,640,660…イベント、690A,690B,690C…データ。

Claims (8)

  1. 複数の二次ストレージユニットに対するアクセス要求を制御するストレージコントローラであって、
    バッファと、
    (i)第1の二次ストレージユニットから読み取られてメインメモリに転送される第1のデータ列を指定する第1の読取り要求と、(ii)第2の二次ストレージユニットから読み取られて前記メインメモリに転送される第2のデータ列を指定する第2の読取り要求とを受け取る、制御ユニットと
    を備え、
    前記制御ユニットが、前記第1の読取り要求と前記第2の読取り要求にそれぞれ応じて、前記第1の二次ストレージユニットからの前記第1のデータ列と、前記第2の二次ストレージユニットからの前記第2のデータ列とを取り出し、
    前記バッファは、前記第1のデータ列と前記第2のデータ列とがそれぞれ前記メインメモリに転送される前に、前記第1のデータ列と前記第2のデータ列の両方を共に記憶し、
    前記制御ユニットは、さらに前記第1のデータ列と前記第2のデータ列とが記憶されるべき、前記メインメモリのロケーションを指し示すデータを記憶し、
    前記第1の要求が、前記メインメモリと、前記第1のデータ列の第1のサブセットが前記メインメモリ内で記憶されるべきロケーションとを指し示す第1のロケーションデスクリプタをさらに指定し、
    前記制御ユニットが、前記第1のサブセットの取出しの完了の前に前記第1のロケーションデスクリプタをプリフェッチする、
    ストレージコントローラ。
  2. 前記第1のデータ列と前記第2のデータ列を前記メインメモリに対して転送するマスタユニットをさらに備える、請求項1に記載のストレージコントローラ。
  3. 前記バッファが、制御バッファと、データバッファとを備え、
    前記制御ユニットが、前記第1のデータ列と、前記第2のデータ列とを前記データバッファに記憶する、請求項2に記載のストレージコントローラ。
  4. 前記制御ユニットが、前記第1のサブセットが前記第1の二次ストレージユニットから受け取られている間に、第2のロケーションデスクリプタをプリフェッチし、前記第2のロケーションデスクリプタが、前記第1のサブセットに続くデータの第2のサブセットを識別する、請求項に記載のストレージコントローラ。
  5. メモリと、
    前記メモリに結合されており第1の二次ストレージユニットと第2の二次ストレージユニットとを含む複数の二次ストレージユニットと、
    前記複数の二次ストレージユニットに結合された処理装置であって、(i)前記第1の二次ストレージユニットから読み取られて前記メモリに転送される第1のデータ列を指定する第1の読取り要求と、(ii)前記第2の二次ストレージユニットから読み取られて前記メモリに転送される第2のデータ列を指定する第2の読取り要求とを発行する、処理装置と、
    前記複数の二次ストレージユニットに結合されており前記第1の読取り要求と前記第2の読取り要求とを処理するストレージコントローラであって、
    バッファと、
    前記第1の読取り要求と前記第2の読取り要求とを受け取る制御ユニットであって、前記第1の読取り要求と前記第2の読取り要求にそれぞれ応じて、前記第1の二次ストレージユニットからの前記第1のデータ列と、前記第2の二次ストレージユニットからの前記第2のデータ列とを取り出す、前記制御ユニットと、
    を備える前記ストレージコントローラと、
    を備え、
    前記バッファが、前記第1のデータ列と前記第2のデータ列とがそれぞれ前記メモリに転送される前に、前記第1のデータ列と前記第2のデータ列の両方を共に記憶し、
    前記制御ユニットが、さらに前記第1のデータ列と前記第2のデータ列とが記憶されるべき、前記メモリのロケーションを指し示すデータを記憶し、
    前記第1の要求が、前記メモリと、前記第1のデータ列の第1のサブセットが前記メモリ内で記憶されるべきロケーションとを示す第1のロケーションデスクリプタをさらに指し示し、
    前記制御ユニットが、前記第1のサブセットの取出しの完了の前に前記第1のロケーションデスクリプタをプリフェッチする、
    システム。
  6. 前記第1のデータ列と前記第2のデータ列とを前記メモリに対して転送するマスタユニットをさらに備える、請求項5に記載のシステム。
  7. 前記バッファが、制御バッファと、データバッファとを備え、
    前記制御ユニットが、前記第1のデータ列と、前記第2のデータ列とを前記データバッファに記憶する、請求項に記載のシステム。
  8. 前記制御ユニットが、前記第1のサブセットが前記第1の二次ストレージユニットから受け取られている間に、第2のロケーションデスクリプタをプリフェッチし、前記第2のロケーションデスクリプタが、前記第1のサブセットに続くデータの第2のサブセットを識別する、請求項5に記載のシステム。
JP2008157068A 2007-07-30 2008-06-16 取り出されたデータをメモリに直接に書き込むストレージコントローラによるバッファスペースの最適な使用 Expired - Fee Related JP4748610B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/829,983 2007-07-30
US11/829,983 US8683126B2 (en) 2007-07-30 2007-07-30 Optimal use of buffer space by a storage controller which writes retrieved data directly to a memory

Publications (2)

Publication Number Publication Date
JP2009032243A JP2009032243A (ja) 2009-02-12
JP4748610B2 true JP4748610B2 (ja) 2011-08-17

Family

ID=40331767

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008157068A Expired - Fee Related JP4748610B2 (ja) 2007-07-30 2008-06-16 取り出されたデータをメモリに直接に書き込むストレージコントローラによるバッファスペースの最適な使用

Country Status (5)

Country Link
US (1) US8683126B2 (ja)
JP (1) JP4748610B2 (ja)
KR (2) KR101051815B1 (ja)
CN (1) CN101359314A (ja)
TW (1) TWI365375B (ja)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8225052B2 (en) * 2009-06-03 2012-07-17 Micron Technology, Inc. Methods for controlling host memory access with memory devices and systems
WO2011119151A1 (en) * 2010-03-24 2011-09-29 Hewlett-Packard Development Company, L.P. Communication between a computer and a data storage device
WO2013171609A1 (en) * 2012-05-15 2013-11-21 Telefonaktiebolaget L M Ericsson (Publ) System and method for removing pdcch detection errors in a telecommunications network
KR101993187B1 (ko) * 2012-11-26 2019-06-27 삼성전자주식회사 메모리 컨트롤러 및 메모리 컨트롤러의 동작 방법
KR20140067739A (ko) * 2012-11-27 2014-06-05 삼성전자주식회사 메모리 컨트롤러 및 메모리 컨트롤러의 동작 방법
KR102091394B1 (ko) * 2013-03-04 2020-03-20 삼성전자 주식회사 저항체를 이용한 비휘발성 메모리 장치 및 그 구동 방법
KR102330389B1 (ko) 2014-07-24 2021-11-24 삼성전자주식회사 데이터 저장 장치 및 그것의 데이터 처리 방법
US9740646B2 (en) 2014-12-20 2017-08-22 Intel Corporation Early identification in transactional buffered memory
US20170147517A1 (en) * 2015-11-23 2017-05-25 Mediatek Inc. Direct memory access system using available descriptor mechanism and/or pre-fetch mechanism and associated direct memory access method
JP6752651B2 (ja) * 2016-08-02 2020-09-09 キヤノン株式会社 情報処理システム、情報処理システムにおける方法、及びプログラム
JP6407946B2 (ja) * 2016-12-12 2018-10-17 ファナック株式会社 機器情報及び位置情報の管理装置及び管理システム
US10339073B2 (en) * 2017-06-29 2019-07-02 Keysight Technologies, Inc. Systems and methods for reducing write latency
CN109614148B (zh) * 2018-12-11 2020-10-02 中科驭数(北京)科技有限公司 数据逻辑运算方法、监测方法及装置
JP2020154493A (ja) 2019-03-19 2020-09-24 キオクシア株式会社 メモリシステム
CN112347026B (zh) * 2019-08-09 2023-03-31 安徽寒武纪信息科技有限公司 数据同步方法及装置以及相关产品
KR102653852B1 (ko) * 2019-05-07 2024-04-02 에스케이하이닉스 주식회사 컨트롤러, 메모리 시스템 및 그것의 동작 방법
US11199992B2 (en) * 2019-07-15 2021-12-14 Western Digital Technologies, Inc. Automatic host buffer pointer pattern detection
KR20220005804A (ko) 2020-07-07 2022-01-14 김순식 이발기의 커터날 에칭부분 보강구조
US11500581B2 (en) 2020-09-25 2022-11-15 Western Digital Technologies, Inc. Efficient TLP fragmentations in extended LBA environment
US11537524B2 (en) 2020-11-20 2022-12-27 Western Digital Technologies, Inc. Effective PCIe utilization by PCIe TLP coalescing
US11853218B2 (en) 2020-11-20 2023-12-26 Western Digital Technologies, Inc. Semi and cached TLP coalescing

Family Cites Families (225)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3091657A (en) 1962-11-14 1963-05-28 Flexiflor Electrical Systems I Wiring ducts
US3614740A (en) 1970-03-23 1971-10-19 Digital Equipment Corp Data processing system with circuits for transferring between operating routines, interruption routines and subroutines
US3987291A (en) 1975-05-01 1976-10-19 International Business Machines Corporation Parallel digital arithmetic device having a variable number of independent arithmetic zones of variable width and location
US4101960A (en) 1977-03-29 1978-07-18 Burroughs Corporation Scientific processor
US4541046A (en) 1981-03-25 1985-09-10 Hitachi, Ltd. Data processing system including scalar data processor and vector data processor
US4566005A (en) 1983-03-07 1986-01-21 International Business Machines Corporation Data management for plasma display
US4748585A (en) 1985-12-26 1988-05-31 Chiarulli Donald M Processor utilizing reconfigurable process segments to accomodate data word length
US4965751A (en) 1987-08-18 1990-10-23 Hewlett-Packard Company Graphics system with programmable tile size and multiplexed pixel data and partial pixel addresses based on tile size
US4985848A (en) 1987-09-14 1991-01-15 Visual Information Technologies, Inc. High speed image processing system using separate data processor and address generator
US5047975A (en) 1987-11-16 1991-09-10 Intel Corporation Dual mode adder circuitry with overflow detection and substitution enabled for a particular mode
US4965716A (en) 1988-03-11 1990-10-23 International Business Machines Corporation Fast access priority queue for managing multiple messages at a communications node or managing multiple programs in a multiprogrammed data processor
US4897717A (en) 1988-03-30 1990-01-30 Starsignal, Inc. Computer-based video compression system
US4958303A (en) 1988-05-12 1990-09-18 Digital Equipment Corporation Apparatus for exchanging pixel data among pixel processors
US5210834A (en) 1988-06-01 1993-05-11 Digital Equipment Corporation High speed transfer of instructions from a master to a slave processor
US5040109A (en) 1988-07-20 1991-08-13 Digital Equipment Corporation Efficient protocol for communicating between asychronous devices
US4991169A (en) 1988-08-02 1991-02-05 International Business Machines Corporation Real-time digital signal processing relative to multiple digital communication channels
US5175828A (en) 1989-02-13 1992-12-29 Hewlett-Packard Company Method and apparatus for dynamically linking subprogram to main program using tabled procedure name comparison
JPH0795766B2 (ja) 1989-06-30 1995-10-11 株式会社日立製作所 デジタル・データ通信装置及びそれに使用するデータ通信アダプタ
US5179530A (en) 1989-11-03 1993-01-12 Zoran Corporation Architecture for integrated concurrent vector signal processor
US5197130A (en) 1989-12-29 1993-03-23 Supercomputer Systems Limited Partnership Cluster architecture for a highly parallel scalar/vector multiprocessor system
JP3218567B2 (ja) 1990-09-28 2001-10-15 クロームアロイ・ガス・タービン・コーポレイション 高強力ニッケル基超合金類の溶接
JPH0799508B2 (ja) 1990-10-15 1995-10-25 インターナショナル・ビジネス・マシーンズ・コーポレイション キャッシュ記憶機構を動的に区分する方法およびキャッシュ記憶機構システム
US5263136A (en) 1991-04-30 1993-11-16 Optigraphics Corporation System for managing tiled images using multiple resolutions
US5522080A (en) 1991-10-24 1996-05-28 Intel Corporation Centralized control SIMD processor having different priority levels set for each data transfer request type and successively repeating the servicing of data transfer request in a predetermined order
US5418973A (en) 1992-06-22 1995-05-23 Digital Equipment Corporation Digital computer system with cache controller coordinating both vector and scalar operations
JPH0612190A (ja) * 1992-06-25 1994-01-21 Hitachi Ltd 磁気ディスク制御方式
US6735685B1 (en) 1992-09-29 2004-05-11 Seiko Epson Corporation System and method for handling load and/or store operations in a superscalar microprocessor
US5430841A (en) 1992-10-29 1995-07-04 International Business Machines Corporation Context management in a graphics system
US5388206A (en) 1992-11-13 1995-02-07 The University Of North Carolina Architecture and apparatus for image generation
US5375223A (en) 1993-01-07 1994-12-20 International Business Machines Corporation Single register arbiter circuit
US5682554A (en) 1993-01-15 1997-10-28 Silicon Graphics, Inc. Apparatus and method for handling data transfer between a general purpose computer and a cooperating processor
DE69421103T2 (de) 1993-01-22 2000-06-08 Matsushita Electric Industrial Co., Ltd. Programmgesteuertes Prozessor
US5327369A (en) 1993-03-31 1994-07-05 Intel Corporation Digital adder and method for adding 64-bit, 16-bit and 8-bit words
US5388245A (en) 1993-06-01 1995-02-07 Intel Corporation Memory arbitration method and apparatus for multiple-cycle memory coprocessors employing a data cache unit and stack RAM
JP3248992B2 (ja) 1993-07-13 2002-01-21 富士通株式会社 マルチプロセッサ
US6073158A (en) 1993-07-29 2000-06-06 Cirrus Logic, Inc. System and method for processing multiple received signal sources
US5574944A (en) 1993-12-15 1996-11-12 Convex Computer Corporation System for accessing distributed memory by breaking each accepted access request into series of instructions by using sets of parameters defined as logical channel context
US5802574A (en) 1993-12-28 1998-09-01 Intel Corporation Method and apparatus for quickly modifying cache state
US5761476A (en) 1993-12-30 1998-06-02 Intel Corporation Non-clocked early read for back-to-back scheduling of instructions
US5809524A (en) 1994-01-04 1998-09-15 Intel Corporation Method and apparatus for cache memory replacement line identification
US5560030A (en) 1994-03-08 1996-09-24 Texas Instruments Incorporated Transfer processor with transparency
US5706478A (en) 1994-05-23 1998-01-06 Cirrus Logic, Inc. Display list processor for operating in processor and coprocessor modes
US5784590A (en) 1994-06-29 1998-07-21 Exponential Technology, Inc. Slave cache having sub-line valid bits updated by a master cache
JPH0877002A (ja) 1994-08-31 1996-03-22 Sony Corp 並列プロセッサ装置
US6009454A (en) 1994-09-30 1999-12-28 Allen-Bradley Company, Llc Multi-tasking operation system for industrial controller
GB2293668B (en) 1994-09-30 1999-09-29 Advanced Risc Mach Ltd Accessing data memories
US5920352A (en) 1994-10-28 1999-07-06 Matsushita Electric Industrial Co., Ltd. Image memory storage system and method for a block oriented image processing system
US6002411A (en) 1994-11-16 1999-12-14 Interactive Silicon, Inc. Integrated video and memory controller with data processing and graphical processing capabilities
JPH08153032A (ja) 1994-11-29 1996-06-11 Matsushita Electric Ind Co Ltd ネットワーク経由データ先読みバッファ方法
US5649173A (en) 1995-03-06 1997-07-15 Seiko Epson Corporation Hardware architecture for image generation and manipulation
US5864712A (en) * 1995-03-17 1999-01-26 Lsi Logic Corporation Method and apparatus for controlling (N+I) I/O channels with (N) data managers in a homogenous software programmable environment
EP0732659B1 (en) * 1995-03-17 2001-08-08 LSI Logic Corporation Controlling (n+i) I/O channels with (n) data managers in a homogeneous software programming environment
US5764243A (en) 1995-03-24 1998-06-09 3Dlabs Inc. Ltd. Rendering architecture with selectable processing of multi-pixel spans
DE69616402T2 (de) 1995-03-31 2002-07-18 Sun Microsystems, Inc. Schnelle Zweitor-Cachesteuerungsschaltung für Datenprozessoren in einem paketvermittelten cachekohärenten Multiprozessorsystem
US5751295A (en) 1995-04-27 1998-05-12 Control Systems, Inc. Graphics accelerator chip and method
US6112019A (en) 1995-06-12 2000-08-29 Georgia Tech Research Corp. Distributed instruction queue
US5754191A (en) 1995-06-23 1998-05-19 Cirrus Logic, Inc. Method and apparatus for optimizing pixel data write operations to a tile based frame buffer
US5987561A (en) 1995-08-31 1999-11-16 Advanced Micro Devices, Inc. Superscalar microprocessor employing a data cache capable of performing store accesses in a single clock cycle
US5805905A (en) 1995-09-06 1998-09-08 Opti Inc. Method and apparatus for arbitrating requests at two or more levels of priority using a single request line
US6016474A (en) 1995-09-11 2000-01-18 Compaq Computer Corporation Tool and method for diagnosing and correcting errors in a computer program
US5781799A (en) * 1995-09-29 1998-07-14 Cirrus Logic, Inc. DMA controller arrangement having plurality of DMA controllers and buffer pool having plurality of buffers accessible to each of the channels of the controllers
US5796974A (en) 1995-11-07 1998-08-18 Advanced Micro Devices, Inc. Microcode patching apparatus and method
US6331856B1 (en) 1995-11-22 2001-12-18 Nintendo Co., Ltd. Video game system with coprocessor providing high speed efficient 3D graphics and digital audio signal processing
US6317819B1 (en) 1996-01-11 2001-11-13 Steven G. Morton Digital signal processor containing scalar processor and a plurality of vector processors operating from a single instruction
US20020116595A1 (en) 1996-01-11 2002-08-22 Morton Steven G. Digital signal processor integrated circuit
US5859980A (en) 1996-02-08 1999-01-12 Advanced Micro Devices, Inc. Network interface having adaptive transmit start point for each packet to avoid transmit underflow
US6236674B1 (en) 1996-02-23 2001-05-22 Teletransactions, Inc. Transceiver control with sleep mode operation
US5950012A (en) 1996-03-08 1999-09-07 Texas Instruments Incorporated Single chip microprocessor circuits, systems, and methods for self-loading patch micro-operation codes and patch microinstruction codes
US6049672A (en) 1996-03-08 2000-04-11 Texas Instruments Incorporated Microprocessor with circuits, systems, and methods for operating with patch micro-operation codes and patch microinstruction codes stored in multi-purpose memory structure
US5784640A (en) 1996-03-18 1998-07-21 Advanced Micro Devices, Inc. CPU with DSP function preprocessor having look-up table for translating instruction sequences intended to perform DSP function into DSP macros
DE29606102U1 (de) 1996-04-02 1996-06-05 Hermann Kleinhuis GmbH & Co KG, 58507 Lüdenscheid Kabelkanal
US6092094A (en) 1996-04-17 2000-07-18 Advanced Micro Devices, Inc. Execute unit configured to selectably interpret an operand as multiple operands or as a single operand
US6131152A (en) 1996-05-15 2000-10-10 Philips Electronics North America Corporation Planar cache layout and instruction stream therefor
US5848254A (en) 1996-07-01 1998-12-08 Sun Microsystems, Inc. Multiprocessing system using an access to a second memory space to initiate software controlled data prefetch into a first address space
JP3442225B2 (ja) 1996-07-11 2003-09-02 株式会社日立製作所 演算処理装置
US6222552B1 (en) 1996-07-26 2001-04-24 International Business Machines Corporation Systems and methods for caching depth information of three-dimensional images
US6058465A (en) 1996-08-19 2000-05-02 Nguyen; Le Trong Single-instruction-multiple-data processing in a multimedia signal processor
US6192073B1 (en) 1996-08-19 2001-02-20 Samsung Electronics Co., Ltd. Methods and apparatus for processing video data
KR100262453B1 (ko) 1996-08-19 2000-08-01 윤종용 비디오데이터처리방법및장치
US5835788A (en) 1996-09-18 1998-11-10 Electronics For Imaging System for transferring input/output data independently through an input/output bus interface in response to programmable instructions stored in a program memory
US5812147A (en) 1996-09-20 1998-09-22 Silicon Graphics, Inc. Instruction methods for performing data formatting while moving data between memory and a vector register file
US5949410A (en) 1996-10-18 1999-09-07 Samsung Electronics Company, Ltd. Apparatus and method for synchronizing audio and video frames in an MPEG presentation system
US5925124A (en) 1997-02-27 1999-07-20 International Business Machines Corporation Dynamic conversion between different instruction codes by recombination of instruction elements
US6141740A (en) 1997-03-03 2000-10-31 Advanced Micro Devices, Inc. Apparatus and method for microcode patching for generating a next address
JPH10293656A (ja) * 1997-04-21 1998-11-04 Toshiba Corp ディスク記憶システム及び同システムに適用する2重化方法
US5940090A (en) 1997-05-07 1999-08-17 Cirrus Logic, Inc. Method and apparatus for internally caching the minimum and maximum XY pixel address values in a graphics subsystem
US5940858A (en) 1997-05-30 1999-08-17 National Semiconductor Corporation Cache circuit with programmable sizing and method of operation
JP2912299B2 (ja) * 1997-06-10 1999-06-28 四国日本電気ソフトウェア株式会社 ディスクアレイ制御装置
US6658447B2 (en) 1997-07-08 2003-12-02 Intel Corporation Priority based simultaneous multi-threading
KR100243100B1 (ko) 1997-08-12 2000-02-01 정선종 다수의 주프로세서 및 보조 프로세서를 갖는 프로세서의구조 및 보조 프로세서 공유 방법
US6044419A (en) 1997-09-30 2000-03-28 Intel Corporation Memory handling system that backfills dual-port buffer from overflow buffer when dual-port buffer is no longer full
US5999199A (en) 1997-11-12 1999-12-07 Cirrus Logic, Inc. Non-sequential fetch and store of XY pixel data in a graphics processor
US6301600B1 (en) 1997-11-18 2001-10-09 Intrinsity, Inc. Method and apparatus for dynamic partitionable saturating adder/subtractor
US6247094B1 (en) 1997-12-22 2001-06-12 Intel Corporation Cache memory architecture with on-chip tag array and off-chip data array
US6480927B1 (en) 1997-12-31 2002-11-12 Unisys Corporation High-performance modular memory system with crossbar connections
JPH11355717A (ja) * 1998-06-04 1999-12-24 Matsushita Electric Ind Co Ltd Avデータ出力装置及びavデータ入出力装置
US6314493B1 (en) 1998-02-03 2001-11-06 International Business Machines Corporation Branch history cache
US6192458B1 (en) 1998-03-23 2001-02-20 International Business Machines Corporation High performance cache directory addressing scheme for variable cache sizes utilizing associativity
US6631423B1 (en) 1998-03-31 2003-10-07 Hewlett-Packard Development Company, L.P. System and method for assessing performance optimizations in a graphics system
US6144392A (en) 1998-04-30 2000-11-07 Ati Technologies, Inc. Method and apparatus for formatting a texture in a frame buffer
US6150610A (en) 1998-05-26 2000-11-21 The Wiremold Company Tamper-resistant surface mounted raceway cover
US6252610B1 (en) 1998-05-29 2001-06-26 Silicon Graphics, Inc. Method and apparatus for efficiently switching state in a graphics pipeline
US6208361B1 (en) 1998-06-15 2001-03-27 Silicon Graphics, Inc. Method and system for efficient context switching in a computer graphics system
US6611272B1 (en) 1998-07-02 2003-08-26 Microsoft Corporation Method and apparatus for rasterizing in a hierarchical tile order
US6490654B2 (en) 1998-07-31 2002-12-03 Hewlett-Packard Company Method and apparatus for replacing cache lines in a cache memory
WO2000011603A2 (en) 1998-08-20 2000-03-02 Apple Computer, Inc. Graphics processor with pipeline state storage and retrieval
US6292886B1 (en) 1998-10-12 2001-09-18 Intel Corporation Scalar hardware for performing SIMD operations
ATE267439T1 (de) 1998-11-09 2004-06-15 Broadcom Corp Anzeigesystem zur mischung von graphischen daten und videodaten
US6768774B1 (en) 1998-11-09 2004-07-27 Broadcom Corporation Video and graphics system with video scaling
JP3983394B2 (ja) 1998-11-09 2007-09-26 株式会社ルネサステクノロジ 幾何学処理プロセッサ
US6798420B1 (en) 1998-11-09 2004-09-28 Broadcom Corporation Video and graphics system with a single-port RAM
US6636222B1 (en) 1999-11-09 2003-10-21 Broadcom Corporation Video and graphics system with an MPEG video decoder for concurrent multi-row decoding
US6601161B2 (en) 1998-12-30 2003-07-29 Intel Corporation Method and system for branch target prediction using path information
US6496902B1 (en) 1998-12-31 2002-12-17 Cray Inc. Vector and scalar data cache for a vector multiprocessor
US6437789B1 (en) 1999-02-19 2002-08-20 Evans & Sutherland Computer Corporation Multi-level cache controller
US6209078B1 (en) 1999-03-25 2001-03-27 Lsi Logic Corporation Accelerated multimedia processor
US7031330B1 (en) 1999-04-15 2006-04-18 Marconi Intellectual Property (Ringfence), Inc. Very wide memory TDM switching system
US6351808B1 (en) 1999-05-11 2002-02-26 Sun Microsystems, Inc. Vertically and horizontally threaded processor with multidimensional storage for storing thread data
DE69935852T2 (de) * 1999-06-09 2007-12-20 Texas Instruments Inc., Dallas Host-Zugriff zu gemeinschaftlichem Speicher mit Hochprioritätsbetriebsart
JP3639464B2 (ja) 1999-07-05 2005-04-20 株式会社ルネサステクノロジ 情報処理システム
US6915385B1 (en) 1999-07-30 2005-07-05 International Business Machines Corporation Apparatus for unaligned cache reads and methods therefor
US6529201B1 (en) 1999-08-19 2003-03-04 International Business Machines Corporation Method and apparatus for storing and accessing texture maps
US6657635B1 (en) 1999-09-03 2003-12-02 Nvidia Corporation Binning flush in graphics data processing
US6825848B1 (en) 1999-09-17 2004-11-30 S3 Graphics Co., Ltd. Synchronized two-level graphics processing cache
US6438664B1 (en) 1999-10-27 2002-08-20 Advanced Micro Devices, Inc. Microcode patch device and method for patching microcode using match registers and patch routines
US6631463B1 (en) 1999-11-08 2003-10-07 International Business Machines Corporation Method and apparatus for patching problematic instructions in a microprocessor using software interrupts
US6975324B1 (en) 1999-11-09 2005-12-13 Broadcom Corporation Video and graphics system with a video transport processor
US6597357B1 (en) 1999-12-20 2003-07-22 Microsoft Corporation Method and system for efficiently implementing two sided vertex lighting in hardware
US6499090B1 (en) 1999-12-28 2002-12-24 Intel Corporation Prioritized bus request scheduling mechanism for processing devices
US6978457B1 (en) 2000-01-31 2005-12-20 Agilent Technologies, Inc. Method and system increasing performance substituting finite state machine control with hardware-implemented data structure manipulation
US6715035B1 (en) 2000-02-17 2004-03-30 International Business Machines Corporation Cache for processing data in a memory controller and a method of use thereof to reduce first transfer latency
JP3474173B2 (ja) 2000-02-25 2003-12-08 株式会社ソニー・コンピュータエンタテインメント 画像出力装置に応じた画像データを作成する情報処理装置およびそのための記録媒体
US6370617B1 (en) 2000-04-10 2002-04-09 Silicon Integrated Systems Corp. Non-stalling pipeline tag controller
US6624818B1 (en) 2000-04-21 2003-09-23 Ati International, Srl Method and apparatus for shared microcode in a multi-thread computation engine
US6742064B2 (en) * 2000-05-15 2004-05-25 Goodrich Corp. Programmable throttle circuit for each control device of a processing system
US6674841B1 (en) 2000-09-14 2004-01-06 International Business Machines Corporation Method and apparatus in a data processing system for an asynchronous context switching mechanism
US6560685B1 (en) 2000-09-27 2003-05-06 Sony Corporation System and method to improve speed and reduce memory allocation for set top box boot-up
US6629188B1 (en) 2000-11-13 2003-09-30 Nvidia Corporation Circuit and method for prefetching data for a texture cache
US6788303B2 (en) 2001-02-27 2004-09-07 3Dlabs Inc., Ltd Vector instruction set
US7093104B2 (en) 2001-03-22 2006-08-15 Sony Computer Entertainment Inc. Processing modules for computer architecture for broadband networks
US6940503B2 (en) 2001-05-10 2005-09-06 Ati International Srl Method and apparatus for processing non-planar video graphics primitives
US7191281B2 (en) 2001-06-13 2007-03-13 Intel Corporation Mobile computer system having a navigation mode to optimize system performance and power management for mobile applications
KR100395756B1 (ko) 2001-06-16 2003-08-21 삼성전자주식회사 캐쉬 메모리 및 이를 이용하는 마이크로 프로세서
JP3835207B2 (ja) 2001-06-27 2006-10-18 ソニー株式会社 試着画像提供システム及び試着画像提供方法、試着画像生成装置及び試着画像生成方法
US6965982B2 (en) 2001-06-29 2005-11-15 International Business Machines Corporation Multithreaded processor efficiency by pre-fetching instructions for a scheduled thread
US6885374B2 (en) 2001-06-29 2005-04-26 Intel Corporation Apparatus, method and system with a graphics-rendering engine having a time allocator
US6922716B2 (en) 2001-07-13 2005-07-26 Motorola, Inc. Method and apparatus for vector processing
US7564460B2 (en) 2001-07-16 2009-07-21 Microsoft Corporation Systems and methods for providing intermediate targets in a graphics system
US7016418B2 (en) 2001-08-07 2006-03-21 Ati Technologies, Inc. Tiled memory configuration for mapping video data and method thereof
JP2003153219A (ja) * 2001-11-19 2003-05-23 Matsushita Electric Ind Co Ltd データ伝送方法、受信装置、受信方法及び受信プログラム
US7080169B2 (en) * 2001-12-11 2006-07-18 Emulex Design & Manufacturing Corporation Receiving data from interleaved multiple concurrent transactions in a FIFO memory having programmable buffer zones
JP3840966B2 (ja) 2001-12-12 2006-11-01 ソニー株式会社 画像処理装置およびその方法
US7305540B1 (en) 2001-12-31 2007-12-04 Apple Inc. Method and apparatus for data processing
US20040073773A1 (en) 2002-02-06 2004-04-15 Victor Demjanenko Vector processor architecture and methods performed therein
US7159212B2 (en) 2002-03-08 2007-01-02 Electronic Arts Inc. Systems and methods for implementing shader-driven compilation of rendering assets
US6983408B2 (en) 2002-03-08 2006-01-03 Microsoft Corporation Managing error/status information generated during video processing
US6812929B2 (en) 2002-03-11 2004-11-02 Sun Microsystems, Inc. System and method for prefetching data from a frame buffer
CN1310163C (zh) * 2002-03-13 2007-04-11 先进微装置公司 通用串行总线主机控制器
US7015909B1 (en) 2002-03-19 2006-03-21 Aechelon Technology, Inc. Efficient use of user-defined shaders to implement graphics operations
US6732242B2 (en) 2002-03-28 2004-05-04 Intel Corporation External bus transaction scheduling system
US7146468B2 (en) 2002-04-24 2006-12-05 Ip-First, Llc. Cache memory and method for handling effects of external snoops colliding with in-flight operations internally to the cache
US6785772B2 (en) 2002-04-26 2004-08-31 Freescale Semiconductor, Inc. Data prefetching apparatus in a data processing system and method therefor
US6891543B2 (en) 2002-05-08 2005-05-10 Intel Corporation Method and system for optimally sharing memory between a host processor and graphics processor
US7043667B2 (en) * 2002-05-14 2006-05-09 Intel Corporation Debug information provided through tag space
US7035979B2 (en) 2002-05-22 2006-04-25 International Business Machines Corporation Method and apparatus for optimizing cache hit ratio in non L1 caches
US7027059B2 (en) 2002-05-30 2006-04-11 Intel Corporation Dynamically constructed rasterizers
US6925531B2 (en) * 2002-07-11 2005-08-02 Storage Technology Corporation Multi-element storage array
US6952214B2 (en) 2002-07-12 2005-10-04 Sun Microsystems, Inc. Method for context switching a graphics accelerator comprising multiple rendering pipelines
US6809732B2 (en) 2002-07-18 2004-10-26 Nvidia Corporation Method and apparatus for generation of programmable shader configuration information from state-based control information and program instructions
US6825843B2 (en) 2002-07-18 2004-11-30 Nvidia Corporation Method and apparatus for loop and branch instructions in a programmable graphics pipeline
KR100702746B1 (ko) 2002-08-20 2007-04-03 엘지전자 주식회사 컴퓨터 시스템에서의 무선 랜 모듈 전원 관리방법 및 그장치
US6944744B2 (en) 2002-08-27 2005-09-13 Advanced Micro Devices, Inc. Apparatus and method for independently schedulable functional units with issue lock mechanism in a processor
US6957317B2 (en) 2002-10-10 2005-10-18 Intel Corporation Apparatus and method for facilitating memory data access with generic read/write patterns
JP3986950B2 (ja) 2002-11-22 2007-10-03 シャープ株式会社 Cpuおよびこれを備えた情報処理装置、cpuの制御方法
US6981106B1 (en) 2002-11-26 2005-12-27 Unisys Corporation System and method for accelerating ownership within a directory-based memory system
JP2004220070A (ja) 2003-01-09 2004-08-05 Japan Science & Technology Agency コンテキスト切り替え方法及び装置、中央演算装置、コンテキスト切り替えプログラム及びそれを記憶したコンピュータ読み取り可能な記憶媒体
US6839062B2 (en) 2003-02-24 2005-01-04 Microsoft Corporation Usage semantics
US6976126B2 (en) 2003-03-11 2005-12-13 Arm Limited Accessing data values in a cache
US20040205326A1 (en) 2003-03-12 2004-10-14 Sindagi Vijay K.G. Early predicate evaluation to reduce power in very long instruction word processors employing predicate execution
US20040193837A1 (en) 2003-03-31 2004-09-30 Patrick Devaney CPU datapaths and local memory that executes either vector or superscalar instructions
US7148888B2 (en) 2003-04-04 2006-12-12 Via Technologies, Inc. Head/data request in 3D graphics
US7032097B2 (en) 2003-04-24 2006-04-18 International Business Machines Corporation Zero cycle penalty in selecting instructions in prefetch buffer in the event of a miss in the instruction cache
US6993628B2 (en) 2003-04-28 2006-01-31 International Business Machines Corporation Cache allocation mechanism for saving elected unworthy member via substitute victimization and imputed worthiness of substitute victim member
US20040221117A1 (en) 2003-05-02 2004-11-04 Shelor Charles F. Logic and method for reading data from cache
US7151544B2 (en) 2003-05-16 2006-12-19 Sun Microsystems, Inc. Method for improving texture cache access by removing redundant requests
US6862027B2 (en) 2003-06-30 2005-03-01 Microsoft Corp. System and method for parallel execution of data generation tasks
US7260677B1 (en) 2003-07-16 2007-08-21 Unisys Corporation Programmable system and method for accessing a shared memory
US7334110B1 (en) 2003-08-18 2008-02-19 Cray Inc. Decoupled scalar/vector computer architecture system and method
US7369815B2 (en) 2003-09-19 2008-05-06 Qualcomm Incorporated Power collapse for a wireless terminal
GB2406404C (en) 2003-09-26 2011-11-02 Advanced Risc Mach Ltd Data processing apparatus and method for handling corrupted data values
US7202872B2 (en) 2003-10-29 2007-04-10 Via Technologies, Inc. Apparatus for compressing data in a bit stream or bit pattern
US20080074431A1 (en) 2003-11-19 2008-03-27 Reuven Bakalash Computing system capable of parallelizing the operation of multiple graphics processing units (GPUS) supported on external graphics cards
US6897871B1 (en) 2003-11-20 2005-05-24 Ati Technologies Inc. Graphics processing architecture employing a unified shader
US7406698B2 (en) 2003-12-30 2008-07-29 Microsoft Corporation Driver framework component for synchronizing interactions between a multi-threaded environment and a driver operating in a less-threaded software environment
US6985151B1 (en) 2004-01-06 2006-01-10 Nvidia Corporation Shader pixel storage in a graphics memory
KR20050076274A (ko) * 2004-01-20 2005-07-26 삼성전자주식회사 디스크립터 dma콘트롤러를 채용한 더블 버퍼링 dma데이터전송장치
US7154500B2 (en) 2004-04-20 2006-12-26 The Chinese University Of Hong Kong Block-based fragment filtration with feasible multi-GPU acceleration for real-time volume rendering on conventional personal computer
US20050239518A1 (en) 2004-04-21 2005-10-27 D Agostino Anthony Systems and methods that provide enhanced state machine power management
US7724263B2 (en) 2004-05-14 2010-05-25 Nvidia Corporation System and method for a universal data write unit in a 3-D graphics pipeline including generic cache memories
US7091982B2 (en) 2004-05-14 2006-08-15 Nvidia Corporation Low power programmable processor
US7185178B1 (en) 2004-06-30 2007-02-27 Sun Microsystems, Inc. Fetch speculation in a multithreaded processor
US7328359B2 (en) 2004-07-21 2008-02-05 Intel Corporation Technique to create link determinism
JP4520790B2 (ja) 2004-07-30 2010-08-11 富士通株式会社 情報処理装置およびソフトウェアプリフェッチ制御方法
US20060064517A1 (en) 2004-09-23 2006-03-23 Honeywell International Inc. Event-driven DMA controller
US7669009B2 (en) 2004-09-23 2010-02-23 Intel Corporation Method and apparatus for run-ahead victim selection to reduce undesirable replacement behavior in inclusive caches
US7352885B2 (en) 2004-09-30 2008-04-01 General Electric Company Method and system for multi-energy tomosynthesis
US7852341B1 (en) 2004-10-05 2010-12-14 Nvidia Corporation Method and system for patching instructions in a shader for a 3-D graphics pipeline
US8738891B1 (en) 2004-11-15 2014-05-27 Nvidia Corporation Methods and systems for command acceleration in a video processor via translation of scalar instructions into vector instructions
US7869835B1 (en) 2005-03-02 2011-01-11 Nvidia Corporation Method and system for pre-loading and executing computer instructions within the cache memory
US7486290B1 (en) 2005-06-10 2009-02-03 Nvidia Corporation Graphical shader by using delay
US7450131B2 (en) 2005-09-30 2008-11-11 Intel Corporation Memory layout for re-ordering instructions using pointers
US7451293B2 (en) 2005-10-21 2008-11-11 Brightscale Inc. Array of Boolean logic controlled processing elements with concurrent I/O processing and instruction sequencing
US7412570B2 (en) 2005-11-15 2008-08-12 Sun Microsystems, Inc. Small and power-efficient cache that can provide data for background DNA devices while the processor is in a low-power state
US7545381B2 (en) 2005-11-10 2009-06-09 Via Technologies, Inc. Interruptible GPU and method for context saving and restoring
KR100814904B1 (ko) 2005-12-06 2008-03-19 한국전자통신연구원 칩 내부 회로 간의 데이터 전송을 위한 통신 시스템
US7725687B2 (en) 2006-06-27 2010-05-25 Texas Instruments Incorporated Register file bypass with optional results storage and separate predication register file in a VLIW processor
US7493452B2 (en) 2006-08-18 2009-02-17 International Business Machines Corporation Method to efficiently prefetch and batch compiler-assisted software cache accesses
US7750913B1 (en) 2006-10-24 2010-07-06 Adobe Systems Incorporated System and method for implementing graphics processing unit shader programs using snippets
US8269782B2 (en) 2006-11-10 2012-09-18 Sony Computer Entertainment Inc. Graphics processing apparatus
US7650459B2 (en) * 2006-12-21 2010-01-19 Intel Corporation High speed interface for non-volatile memory
US7620749B2 (en) * 2007-01-10 2009-11-17 International Business Machines Corporation Descriptor prefetch mechanism for high latency and out of order DMA device
JP2008305093A (ja) * 2007-06-06 2008-12-18 Canon Inc メモリ制御装置、メモリ制御装置の制御方法、プログラム及び記憶媒体
US7978516B2 (en) * 2007-12-27 2011-07-12 Pliant Technology, Inc. Flash memory controller having reduced pinout
US8990543B2 (en) 2008-03-11 2015-03-24 Qualcomm Incorporated System and method for generating and using predicates within a single instruction packet
US8645439B2 (en) 2009-12-24 2014-02-04 Mcmaster University Bit-width allocation for scientific computations

Also Published As

Publication number Publication date
JP2009032243A (ja) 2009-02-12
KR20100106262A (ko) 2010-10-01
CN101359314A (zh) 2009-02-04
TWI365375B (en) 2012-06-01
US20090037689A1 (en) 2009-02-05
KR20090013085A (ko) 2009-02-04
US8683126B2 (en) 2014-03-25
KR101051815B1 (ko) 2011-07-25
TW200921387A (en) 2009-05-16

Similar Documents

Publication Publication Date Title
JP4748610B2 (ja) 取り出されたデータをメモリに直接に書き込むストレージコントローラによるバッファスペースの最適な使用
US11042300B2 (en) Command load balancing for NVME dual port operations
US7287101B2 (en) Direct memory access using memory descriptor list
EP3647932B1 (en) Storage device processing stream data, system including the same, and operation method thereof
US10540096B2 (en) Method and design for dynamic management of descriptors for SGL operation
US10108565B2 (en) Method for on-demand fetching of SGL pointers based buffer, traffic and command requirements
US20150227312A1 (en) Method for steering dma write requests to cache memory
TW201131368A (en) Command queue for peripheral component
US6889266B1 (en) Method for delivering packet boundary or other metadata to and from a device using direct memory controller
US20230359392A1 (en) Non-volatile memory-based storage device, device controller and method thereof
US9727521B2 (en) Efficient CPU mailbox read access to GPU memory
JP2006209778A (ja) ダイレクトメモリアクセスの実現方法および装置、ダイレクトメモリアクセスコンピュータシステム
EP1631911B1 (en) Method and device for transferring data between a main memory and a storage device
WO2017016380A1 (en) Advance cache allocator
TWI474254B (zh) 用於在一記憶體系統中執行命令的方法與裝置及資料儲存系統
US20100058024A1 (en) Data Transfer Apparatus, Data Transfer Method And Processor
US11029878B2 (en) Information processing system
US7287102B1 (en) System and method for concatenating data
JP2014211801A (ja) インターフェース制御装置、データ記憶装置及びインターフェース制御方法
JP5908416B2 (ja) インターフェース制御装置、データ記憶装置及びインターフェース制御方法
US20170168940A1 (en) Methods of overriding a resource retry
US20240192994A1 (en) Accelerated draw indirect fetching
JP2006059201A (ja) データ転送システム及びインターフェイス
CN118295943A (zh) 读响应保序方法、系统、存储介质及电子设备

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101221

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110322

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110419

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110511

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

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees