JP5329515B2 - 周辺コンポーネントのためのコマンドキュー - Google Patents

周辺コンポーネントのためのコマンドキュー Download PDF

Info

Publication number
JP5329515B2
JP5329515B2 JP2010265719A JP2010265719A JP5329515B2 JP 5329515 B2 JP5329515 B2 JP 5329515B2 JP 2010265719 A JP2010265719 A JP 2010265719A JP 2010265719 A JP2010265719 A JP 2010265719A JP 5329515 B2 JP5329515 B2 JP 5329515B2
Authority
JP
Japan
Prior art keywords
command
commands
macro
memory
queue
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.)
Active
Application number
JP2010265719A
Other languages
English (en)
Other versions
JP2011146035A (ja
Inventor
シー リー ダグラス
ピー ロース ディアムイド
エム トエルケス タホマ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Apple Inc
Original Assignee
Apple Inc
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 Apple Inc filed Critical Apple Inc
Publication of JP2011146035A publication Critical patent/JP2011146035A/ja
Application granted granted Critical
Publication of JP5329515B2 publication Critical patent/JP5329515B2/ja
Active 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/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1642Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
    • 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/10Program control for peripheral devices
    • G06F13/12Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
    • G06F13/124Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine
    • G06F13/126Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine and has means for transferring I/O instructions and statuses between control unit and main processor
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Computer Hardware Design (AREA)
  • Microcomputers (AREA)
  • Advance Control (AREA)
  • Memory System (AREA)
  • Information Transfer Systems (AREA)
  • Bus Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

本発明は、集積回路の分野に係り、より詳細には、集積回路の周辺コンポーネントにおけるコマンド処理に係る。
顕著なデータ帯域巾をもつ周辺インターフェイスコントローラにおいて、発生する課題の1つは、外部プロセッサから周辺インターフェイスコントローラへコントロール入力を与えることである。典型的に、周辺インターフェイスコントローラとメモリとの間でデータを転送するのと同じ周辺コントローラへの内部インターフェイスを使用して、外部プロセッサからコントロール入力を与えている(例えば、周辺インターフェイスコントローラのレジスタを制御する一連の書き込みを経て)。データ転送が行われる間には、メモリ対周辺インターフェイスがデータ転送で飽和される。従って、現在のデータ転送が完了するまで、データ転送の次のセットをアレンジするコントロール入力が実際上ロックされてしまう。コントロール入力が与えられる間には、周辺インターフェイスコントローラにより制御される外部の周辺インターフェイスがアイドル状態となる。
周辺対メモリインターフェイスにおける競合を減少するための1つのメカニズムは、周辺インターフェイスコントローラのプロセッサが、周辺インターフェイスコントローラのハードウェアを制御するプログラムを実行することを含む。しかしながら、このようなプログラムは、多くの点で高価であり、即ち(個別のコンポーネントとして、又は周辺インターフェイスコントローラ設計へ合体できる知的プロパティとして)プロセッサを取得するための金銭に関して;プロセッサが含まれるときに周辺インターフェイスコントローラによって占有されるスペースに関して;及びプロセッサが消費する電力に関して;高価である。更に、実行されるプログラムは、システムメモリに記憶され、従って、インストラクションのフェッチは、周辺対メモリインターフェイスにおけるデータ転送と競合する。
一実施形態において、集積回路は、集積回路の外部インターフェイスを制御するように構成された周辺コンポーネントを備えている。例えば、周辺コンポーネントは、フラッシュメモリインターフェイスユニットのようなメモリインターフェイスユニットである。周辺コンポーネントへの内部インターフェイスは、外部インターフェイスへの/からのデータ転送と、周辺コンポーネントへのコントロール通信との間で共有される。周辺コンポーネントは、インターフェイスを経て転送を行うためのコマンドのセットを記憶するように構成されたコマンドキューを含む。コントロール回路は、コマンドキューに結合されて、コマンドを読み取り、そのコマンドに応答してインターフェイスを経て転送を生じさせるようにインターフェイスコントローラと通信する。
一実施形態において、コマンドキューのコマンドは、内部インターフェイスを経てデータ転送が行われないときにコマンドキューへダウンロードされる。例えば、現在の転送が完了したときに、次の転送を遂行するために、コマンドキューにコマンドを得ることができる。ある実施形態では、内部インターフェイスにおけるデータ転送とコントロール転送との間の競合に直面しても、内部及び外部インターフェイスを効率的に使用することができる。
以下、添付図面を参照して、本発明を詳細に説明する。
集積回路、メモリ及びフラッシュメモリの一実施形態のブロック図である。 図1に示すフラッシュメモリインターフェイスの一実施形態のブロック図である。 書き込みオペレーションを受けるのに応答する図2に示すフラッシュメモリインターフェイスコントロール回路の一実施形態のオペレーションを示すフローチャートである。 フラッシュメモリインターフェイスコントロール回路によりサポートされるコマンドの一実施形態を示すテーブルである。 コマンド先入れ先出しバッファ(FIFO)からコマンドを読み取るのに応答する図2に示すフラッシュメモリインターフェイスコントロール回路の一実施形態のオペレーションを示すフローチャートである。 マクロメモリの規範的使用のブロック図である。 図1に示すプロセッサの一実施形態により実行されるフラッシュメモリインターフェイスコードの一実施形態のオペレーションを示すフローチャートである。 図1に示す装置を備えたシステムの一実施形態のブロック図である。 コンピュータアクセス可能な記憶媒体の一実施形態のブロック図である。
本発明は、種々の変更や代替を受けるが、その特定の実施形態を一例として図面に示して以下に詳細に説明する。しかしながら、図面及びそれを参照した詳細な説明は、本発明を、ここに開示する特定の形態に限定するものではなく、それどころが、特許請求の範囲に規定された本発明の精神及び範囲内に包含される全ての変更、等効物及び代替物を網羅するものとする。ここに使用する見出しは、編成のためのものに過ぎず、説明の範囲を限定するためのものではない。本出願全体にわたり使用される「してもよい(may)」という語は、寛容な意味(即ち、潜在性をもつという意味)で使用され、強制的な意味(即ち、しなければならないという意味)ではない。同様に、「含む(include)」、「含んでいる(including)」、及び「含む(includes)」という語は、含むことを意味するが、それに限定されない。
種々のユニット、回路又は他のコンポーネントは、1つ又は複数のタスクを遂行するように「構成される」と記述される。このような状況において、「構成される」とは、オペレーション中に1つ又は複数のタスクを遂行する「回路を有する」ことを一般的に意味する構造を広く表現するものである。従って、ユニット/回路/コンポーネントは、それが現在オンでなくてもタスクを遂行するように構成することができる。一般的に、「構成される」に対応する構造を形成する回路は、ハードウェア回路、及び/又はオペレーションを実施するために実行可能なプログラムインストラクションを記憶するメモリを含む。メモリは、スタティック又はダイナミックランダムアクセスメモリのような揮発性メモリ、及び/又は光学又は磁気ディスク記憶装置、フラッシュメモリ、プログラム可能なリードオンリメモリ、等の不揮発性メモリを含むことができる。同様に、種々のユニット、回路又は他のコンポーネントは、説明の便宜上、1つ又は複数のタスクを遂行すると記述される。このような記述は、「構成される」という句を含むものと解釈されるべきである。1つ以上のタスクを遂行するように構成されるユニット/回路/コンポーネントを表現することは、そのユニット/回路/コンポーネントに対して35USC§112、パラグラフ6の解釈を引用することを特に意図していない。
図1を参照すれば、外部メモリ12及び1つ以上のフラッシュメモリ装置28A−28Bに結合された集積回路10の一実施形態のブロック図が示されている。図示された実施形態では、集積回路10は、メモリコントローラ14と、システムインターフェイスユニット(SIU)16と、コンポーネント18A−18Bのような1組の周辺コンポーネントと、フラッシュメモリインターフェイスユニット30と、中央DMA(CDMA)コントローラ20と、レベル1(L1)キャッシュ24、レベル2(L2)キャッシュ26を含むプロセッサ22と、入力/出力(I/O)プロセッサ(IOP)32とを備えている。メモリコントローラ14は、メモリ12が結合されるメモリインターフェイスに結合されると共に、SIU16にも結合される。ここに示す実施形態では、CDMAコントローラ20、L2キャッシュ26及びプロセッサ22(L2キャッシュ26を経て)もSIU16に結合される。L2キャッシュ26は、プロセッサ22に結合され、そしてCDMAは、コンポーネント18A−18B、フラッシュメモリインターフェイスユニット30、及びIOP32に結合される。1つ以上の周辺コンポーネント18A−18B、例えば、周辺コンポーネント18Aは、外部インターフェイスに結合されてもよい。他の実施形態では、他のコンポーネント(例えば、他の周辺コンポーネント)がSIU16に直結されてもよい。
CDMAコントローラ20は、メモリ12、種々の周辺コンポーネント18A−18B及び/又はフラッシュメモリインターフェイスユニット30の間でDMAオペレーションを遂行するように構成される。種々の実施形態は、CDMAコントローラ20を経て結合された多数の周辺コンポーネント及び/又はフラッシュメモリインターフェイスユニット30を含むことができる。プロセッサ22(特に、プロセッサ22により実行されるインストラクション)は、DMAオペレーションを遂行するようにCDMAコントローラ20をプログラムする。種々の実施形態は、CDMAコントローラ20を種々の仕方でプログラムすることができる。例えば、遂行されるべきDMAオペレーションを記述するDMA記述子がメモリ12に書き込まれ、CDMAコントローラ20は、メモリ12内のDMA記述子を探索するようにプログラムできるレジスタを含む。DMAチャンネルに対して複数の記述子が生成され、それら記述子に記述されたDMAオペレーションが、指定されたように遂行される。或いは又、CDMAコントローラ20は、遂行されるべきDMAオペレーションを記述するようにプログラムできるレジスタを含んでもよく、又、CDMAコントローラ20をプログラムすることは、それらレジスタに書き込みすることを含んでもよい。
一般的に、DMAオペレーションは、インストラクションを実行するプロセッサとは別のハードウェアにより遂行されるソースからターゲットへのデータの転送である。ハードウェアは、プロセッサにより実行されるインストラクションを使用してプログラムできるが、転送それ自体は、プロセッサにおけるインストラクションの実行とは独立してハードウェアにより遂行される。ソース及びターゲットの少なくとも一方は、メモリでよい。メモリは、システムメモリ(例えば、メモリ12)、フラッシュメモリ装置28A−28Bでもよいし、又はある実施形態では、集積回路10の内部メモリでもよい。あるDMAオペレーションは、ソース及びターゲットとしてメモリを有する(例えば、メモリ12とフラッシュメモリ装置28A−28Bとの間のDMAオペレーション、或いはメモリ12の1つのブロックから別のブロックへのコピーオペレーション)。他のDMAオペレーションは、ソースまたはターゲットとして周辺コンポーネントを有する。周辺コンポーネントは、DMAデータを転送する際に通る又はDMAデータを受信する際に通る外部インターフェイスに結合される。例えば、周辺コンポーネント18Aは、DMAデータを転送する際に通る又はDMAデータを受信する際に通るインターフェイスに結合される。従って、DMAオペレーションは、CDMAコントローラ20がソースからデータを読み取って、そのデータを行先へ書き込むことを含む。データは、DMAオペレーションの一部分としてCDMAコントローラ20を経て流れる。特に、メモリ12からのDMA読み取りのためのDMAデータは、メモリコントローラ14を経、SIU16を通り、CDMAコントローラ20を経て、周辺コンポーネント18A−18B又はフラッシュメモリインターフェイスユニット30へ流れる(又、もしあれば、周辺コンポーネントが結合されたインターフェイスも経て)。メモリへのDMA書き込みのためのデータは、逆方向に流れる。
一実施形態において、プロセッサ22及び又はIOP32によって実行されるインストラクションは、プログラムされた入力/出力(PIO)オペレーションと称される読み取り及び/又は書き込みオペレーションを使用して周辺コンポーネント18A−18B及びフラッシュメモリインターフェイスユニット30とも通信する。PIOオペレーションは、集積回路10により周辺コンポーネント18A−18B又はフラッシュメモリインターフェイスユニット30(より詳細には、コンポーネントのレジスタ又は他の読み取り/書き込み可能なリソース)へマップされたアドレスを有する。このアドレスマッピングは、アドレススペースに固定されてもよいし又はプログラム可能であってもよい。或いは又、PIOオペレーションは、メモリ読み取り/書き込みオペレーションとは区別できる形態で送信されてもよい(例えば、SIU16におけるメモリ読み取り/書き込みオペレーションとは異なるコマンドエンコーディングを使用して、サイドバンド信号、又はメモリ対PIOを指示するコントロール信号を使用して、等々)。又、PIO送信は、このような実施形態に対して、PIOアドレススペース内の周辺コンポーネント18A−18B又はフラッシュメモリユニット30(及びアドレスリソース)を識別するアドレスを含んでもよい。
一実施形態では、PIOオペレーションは、CDMAコントローラ20と同じ相互接続を使用し、そして周辺コンポーネント18A−18B及びフラッシュメモリインターフェイスユニット30に対してCDMAコントローラ20を通して流れる。従って、PIOオペレーションは、プロセッサ22によりSIU16を経て(この実施形態では、L2キャッシュ26を通して)CDMAコントローラ20へ及びターゲットとする周辺コンポーネント/フラッシュメモリインターフェイスユニットへ発生することができる。同様に、IOP32は、PIOオペレーションをCDMAコントローラ20へ発生し、これは、PIOオペレーションを、同じ相互接続を経て周辺コンポーネント18A−18B又はフラッシュメモリインターフェイスユニット30へ送信する。
従って、周辺コンポーネント18A−18B又はフラッシュメモリインターフェイスユニット30への/からのDMAオペレーションのためのデータ転送は、同じ周辺コンポーネント18A−18B又はフラッシュメモリインターフェイスユニット30への/からのPIOオペレーションと競合することがある。例えば、フラッシュメモリインターフェイスユニット30は、フラッシュメモリ装置28A−28Bへの/からのメモリ転送を遂行するためにPIOオペレーションを経てプログラムされる。書き込みオペレーションについては、CDMAコントローラ20は、フラッシュメモリインターフェイスユニット30へ書き込むべきデータのDMAを行う。読み取りオペレーションについては、CDMAコントローラ20は、フラッシュメモリインターフェイスユニット30から読み取るべきデータのDMAを行う。一実施形態では、フラッシュメモリ装置28A−28Dは、装置への/からのデータページ転送をサポートする。ページのサイズは、装置に依存し、メモリ12に対する仮想/物理アドレス変換に使用されるページサイズと同じでなくてもよい。例えば、512バイト、2048バイト、及び4096バイトのページサイズがしばしば使用される。従って、この状況では、ページは、メモリ装置に対するデータ転送の単位である。
フラッシュメモリインターフェイスユニット30は、データページ転送を遂行するようにプログラムされ、CDMAユニット20は、データを転送するためのDMAオペレーションを遂行する。複数のページを転送すべき場合には、付加的なPIOオペレーションを使用して、次の転送を遂行するようにフラッシュメモリインターフェイスユニット30をプログラムすることができる。しかしながら、DMAオペレーションは、現在ページが完了するまで付加的なPIOオペレーションを実際上ロックアウトする。従って、次のページのためにフラッシュメモリインターフェイスユニット30をプログラムする間に経過する時間が、フラッシュメモリ装置へのインターフェイスにアイドル時間を生じさせる。
一実施形態では、フラッシュメモリインターフェイスユニット30は、コマンドキューをサポートする。転送されるべきページのセットに対してフラッシュメモリインターフェイスユニット30をプログラムするコマンドは、コマンドキューにキューイングされる。第1ページに対するDMAオペレーションが開始すると、その後のページに対してフラッシュメモリインターフェイスユニット30をプログラムするためのデータがコマンドキューに予め記憶される。従って、フラッシュメモリインターフェイスユニット30をプログラムするPIOオペレーションと、データを転送するDMAオペレーションとの間に競合が生じることはない。CDMAユニット30が現在ページに対するDMAオペレーションを完了する間に転送されるべき次のページに対してフラッシュメモリコントローラ30を構成するためにコマンドキューからのコマンドを処理できることによりフラッシュメモリ装置28A−28Bへのインターフェイスの利用を増大することができる。
一実施形態において、フラッシュメモリインターフェイスユニット30は、1つ以上のマクロを記憶するためのマクロメモリをサポートする。マクロは、マクロコマンドを経て呼び出される2つ以上のコマンドのシーケンスである。例えば、マクロコマンドは、コマンドキューに書き込まれ、マクロコマンドがフラッシュメモリインターフェイスユニット30により遂行されるときにマクロを呼び出すことができる。頻繁に使用されるコマンドシーケンスを実施するマクロは、マクロメモリへダウンロードされ、従って、その後にダウンロードする必要があるのは、少数のコマンドだけである。即ち、マクロコマンドは、マクロに記憶されるコマンドを繰り返し書き込むのではなく、コマンドキューに書き込まれる。一実施形態では、マクロコマンドは、マクロのスタートアドレス及びマクロにおけるワードの数を指定する。ワード数がマクロから読み取られ、それに対応するコマンドが遂行されると、そのマクロコマンド後のコマンドキューの次のコマンドが遂行される。従って、一実施形態では、マクロをより高密度にできるように、マクロにおけるリターンコマンドが回避される。他の実施形態は、スタートアドレス及びコマンドの数をオペランドとして使用する。更に別の実施形態は、リターンコマンドを実施し、マクロコマンドは、スタートアドレスをオペランドとして含む(しかし、ワード/コマンドカウントはそうではない)。一実施形態では、マクロコマンドは、ループカウントオペランドも含む。ループカウントオペランドは、遂行されるべきマクロの繰り返し数を指定する。従って、マクロコマンドを遂行することは、スタートアドレスで始まるワードの数を読み取り、ループカウントの回数だけ繰り返して、コマンドを遂行し、次いで、マクロコマンド後のコマンドキュー内の次のコマンドへと進むことを含む。
コマンドキュー内のコマンド及び/又はマクロメモリ内のコマンドは、それらのオペレーションを制御するためにオペランドを使用する。ある場合には、オペランドは、コマンドキューに記憶される。他の場合には、オペランドは、オペランドキューに記憶される。コマンドキュー又はマクロメモリ内のコマンドは、フラッシュメモリインターフェイスユニット30がオペランドキューからオペランドをロードしてオペランドに基づいて動作することを指定する。オペランドキューは、一般的マクロに対するインスタンス特有のデータ(例えば、フラッシュメモリアドレス、チップイネーブル、等)を供給するためにマクロと共に使用される。同様に、オペランドキューは、コマンドキュー内のコマンドに対するオペランドを供給する。
ここで使用するメモリ転送とは、(メモリ装置へのインターフェイスを経ての)メモリ装置への/からのデータの転送を指す。従って、フラッシュメモリ装置28A−28Bへの/からのメモリ転送は、フラッシュメモリ装置28A−28Bとフラッシュメモリインターフェイスユニット30との間のインターフェイスを経て行われる。同様に、メモリ12への/からのメモリ転送は、メモリ12とメモリコントローラ14との間のインターフェイスを経て行われる。メモリ転送は、メモリ装置によって規定されたプロトコルを経て行われる。更に、コマンドは、周辺コンポーネント(例えば、フラッシュメモリインターフェイスユニット30)のハードウェアにより、該ハードウェアで遂行される特定のオペレーションを指定するものと解釈される1バイト以上のデータを指す。
一般的に、周辺コンポーネントは、プロセッサと共に集積回路10に含まれるべき望ましい回路でよい。周辺コンポーネントは、集積回路10の他のコンポーネントが周辺コンポーネントと通信するようにする既定の機能及びインターフェイスを有する。例えば、周辺コンポーネントは、ディスプレイコントローラ、グラフィックプロセッサ、等のビデオコンポーネント;デジタル信号プロセッサ、ミクサ、等のオーディオコンポーネント;イーサネットメディアアクセスコントローラ(MAC)又はワイヤレス忠実度(WiFi)コントローラのようなネットワーキングコンポーネント;ユニバーサルシリアルバス(USB)、周辺コンポーネント相互接続(PCI)又はその変形、例えば、PCIエクスプレス(PCIe)、シリアル周辺インターフェイス(SPI)、フラッシュメモリインターフェイス、等の種々のインターフェイスを経て通信するためのコントローラ;を含む。フラッシュメモリインターフェイスユニット30は、周辺コンポーネントの一例であり、ここに述べる周辺コンポーネントの一般的プロパティは、フラッシュメモリインターフェイスユニット30に適用することができる。
プロセッサ22は、インストラクションセットアーキテクチャーを実施し、そのインストラクションセットアーキテクチャーで規定されるインストラクションを実行するように構成される。プロセッサ22は、スカラー、スーパースカラー、パイプライン、スーパーパイプライン、アウトオブオーダー、インオーダー、思索的、非思索的、又はその組み合わせを含むマイクロアーキテクチャーを使用する。プロセッサ22は、回路を含み、又、マイクロコード技術を実施するのも任意である。ここに示す実施形態では、プロセッサ22は、プロセッサ22によって使用されるデータ及びインストラクションを記憶するL1キャッシュ24を含む。個別のL1データ及びインストラクションキャッシュが存在してもよい。L1キャッシュは、任意の容量及び編成(群連想、直接マップ、等)を有するものでよい。ここに示す実施形態では、L2キャッシュ26も設けられる。L2キャッシュ26は、L1キャッシュと同様の容量及び編成を有する。
同様に、IOP32は、インストラクションセットアーキテクチャーを実施し、そのインストラクションセットアーキテクチャーで規定されたインストラクションを実行するように構成される。IOP32により実施されるインストラクションセットアーキテクチャーは、プロセッサ22により実施されるインストラクションセットアーキテクチャーと同じである必要はない。一実施形態では、IOP32は、プロセッサ22より低電力低性能のプロセッサでよい。IOP32は、種々のインターフェイス問題を取り扱う(望ましいオペレーション、あるエラーハンドリング、等を遂行するように周辺コンポーネントを構成する)。IPO32は、フラッシュメモリインターフェイスユニット30のコマンドキューにコマンドを書き込み、フラッシュメモリインターフェイスユニット30のマクロメモリにマクロを書き込み、及び/又はフラッシュメモリインターフェイスユニット30のオペランドキューにオペランドを書き込むためのインストラクションを実行する。IOP32は、更に、他の周辺コンポーネント18A−18Bにサービスするためのインストラクションも実行する。従って、プロセッサ22は、他のコンピューティングタスクを遂行してもよいし、又は遂行すべき他のコンピューティングタスクがない場合には電力を保存するためにパワーダウンされてもよい。IOP32は、スカラー、スーパースカラー、パイプライン、スーパーパイプライン、アウトオブオーダー、インオーダー、思索的、非思索的、又はその組み合わせを含むマイクロアーキテクチャーを使用する。IOP32は、回路を含み、又、マイクロコード技術を実施するのも任意である。
SIU16は、メモリコントローラ14、プロセッサ22(L2キャッ数26を通る)、L2キャッシュ26、及びCDMAコントローラ20が通信するときに通る相互接続部である。SIU16は、任意の形式の相互接続部(例えば、バス、パケットインターフェイス、ポイント・対・ポイントリンク、等)を実施する。SIU16は、ある実施形態では、相互接続部のハイアラーキーである。
メモリコントローラ14は、システムインターフェイスユニット16からメモリ要求を受信するように構成される。メモリコントローラ14は、アタッチされたメモリ12に対して規定されたインターフェイスを使用して、要求を完了するためにメモリ12にアクセスする(書き込み要求については受け取ったデータをメモリ12へ書き込み、又は読み取り要求に応答してメモリ12からデータを供給する)ように構成される。メモリコントローラ14は、任意の形式のメモリ12、例えば、ダイナミックランダムアクセスメモリ(DRAM)、同期DRAM(SDRAM)、2倍データレート(DDR、DDR2、DDR3、等)SDRAM、RAMBUS DRAM(RDRAM)、スタティックRAM(SRAM)、等にインターフェイスするように構成される。メモリは、デュアルインラインメモリモジュール(DIMM)、シングルインラインメモリモジュール(SIMM)、等の複数メモリバンクとして構成されてもよい。一実施形態では、1つ以上のメモリチップが、パッケージオンパッケージ(POP)又はチップオンチップ(COC)構成で集積回路10にアタッチされる。
メモリ12は、1つ以上のメモリ装置を含む。一般的に、メモリ装置は、書き込みオペレーション中にデータと共に与えられるアドレスに基づいてデータを記憶すると共に、読み取りオペレーション中にアドレスが使用されるときにそのデータを供給するように設計されたコンポーネントである。上述したメモリ形式のいずれの例も、メモリ装置において実施され、又、フラッシュメモリ装置28A−28Bもメモリ装置である。メモリ装置は、プリント回路板のような基板に接続されたチップ、複数チップ(例えば、SIMM又はDIMM、或いはIC10が結合された回路板に直結)、等である。
フラッシュメモリインターフェイスユニット30は、フラッシュメモリ装置28A−28Bに対する読み取り及び書き込み要求を受け取るように構成されると共に、読み取り/書き込み要求を完了するためにフラッシュメモリ装置28A−28Bにインターフェイスするように構成された回路を含む。一実施形態では、読み取り/書き込み要求は、CDMAコントローラ20をソースとする。フラッシュメモリインターフェイスユニット30は、(例えば、PIOオペレーションを経て)フラッシュメモリ装置28A−28Bへの/からのメモリ転送を遂行するように1つ以上のコントロールレジスタ(以下に述べる図2を参照)を経てプログラムすることができる。フラッシュメモリ装置28A−28Bは、この技術で知られた不揮発性メモリの一形式であるフラッシュメモリである。他の実施形態では、他の形式の不揮発性メモリが使用される。例えば、バッテリバックアップのSRAM、種々の形式のプログラマブルROM、例えば、電気的に消去可能なプログラマブルROM(EEPROM)、等が使用される。更に別の実施形態では、メモリ12と同様に揮発性メモリが使用される。
この実施形態は、フラッシュメモリインターフェイスユニット30におけるコマンドキュー(FIFO)、マクロメモリ、及び/又はオペランドキュー(FIFO)を使用して説明するが、他の実施形態は、任意の形式のメモリ又は周辺インターフェイスで周辺コンポーネントにおける特徴を実施できる。
他の実施形態は、図1に示すコンポーネント及び/又は他のコンポーネントのサブセット又はスーパーセットを含むコンポーネントの他の組み合わせを包含することに注意されたい。所与のコンポーネントの1つの例が図1に示されているが、他の実施形態は、所与のコンポーネントの1つ以上の例を含むことができる。
図2を参照すれば、フラッシュメモリインターフェイスユニット30の一実施形態のブロック図が示されている。ここに示す実施形態では、フラッシュメモリインターフェイスユニット30は、コマンドFIFO40、フラッシュメモリインターフェイス(FMI)コントロール回路42、マクロメモリ44、オペランドFIFO46、フラッシュメモリコントローラ(FMC)48、1組のFMCコントロールレジスタ50、データバッファ52A−52B、及びエラーチェック/修正(ECC)ユニット54を備えている。コマンドFIFO40、FMIコントロール回路42、マクロメモリ44、オペランドFIFO46、及びバッファ52A−52Bは、全て、CDMAコントローラ20への内部インターフェイスに結合される。FMIコントロール回路42は、更に、コマンドFIFO40、マクロメモリ44、オペランドFIFO46、及びFMCコントロールレジスタ50へ結合される。FMCコントロールレジスタ50は、更に、FMC48に結合され、これは、フラッシュメモリ装置への外部インターフェイスに結合される。FMC48は、更に、バッファ52A−52Bに結合される。又、ECCユニット54は、バッファ52A−52Bに結合される。
FMIコントロール回路42は、CDMAコントローラ20からPIOオペレーションを受け取るように構成される。幾つかのPIOオペレーションがコマンドFIFO40、マクロメモリ44又はオペランドFIFO46に向けられる。例えば、PIO書き込みは、コマンドFIFO40にコマンドを書き込み、マクロメモリ44へマクロをダウンロードし、又はオペランドFIFO46にオペランドを書き込むのに使用される。アドレスは、FIFO40、マクロメモリ44及びオペランドFIFO46の各々に指定され、これは、望ましいリソースをアドレスするためにPIOオペランドに使用される。例えば、FIFO40及び46は、先入れ先出し式に動作するので、単一の指定アドレスを有する。アドレスへのPIO書き込みで、FMIコントロール回路42は、書き込みと共に与えられるデータをFIFO40、46の次のオープンエントリーに記憶させる。即ち、データは、FIFO40又は46のテールに添付され、FIFO40又は46のヘッドからコマンド又はオペランドが除去される。マクロメモリ44には、ある範囲のアドレスが指定され、例えば、マクロメモリ44のワード当たりのアドレスが指定される。アドレスへのPIO書き込みで、与えられたデータワードが、マクロメモリ44のアドレスされたワードに記憶される。
FMIコントロール回路42は、コマンドFIFO40のコマンドを処理し、FMC48がフラッシュメモリ装置28A−28Bへの/からの特定のメモリ転送を遂行するようにさせるよう種々のFMCコントロールレジスタ50をプログラムする。一実施形態では、FMC48は、アドレス、チップイネーブル、転送コマンド、等を含む比較的低レベルのコントロールを、FMCコントロールレジスタ50を経て受け取るように構成される。コマンドFIFO40のコマンドは、FMIコントロール回路42によって解釈され、それに対応するFMCコントロールレジスタ50がFMIコントロール回路42により書き込まれる。同様に、ある事象を待機するコマンドは、1つ以上のFMCコントロールレジスタ50を読み取って事象を検出するようにFMIコントロール回路42により解釈される。又、コマンドに応答してFMIコントロール回路42によって駆動され、及び/又はコマンドに応答してFMIコントロール回路42によって監視されるある実施形態(図2には示さず)では、FMIコントロール回路42とFMC48との間に直接的なコントロール信号があってもよい。
FMIコントロール回路42は、コマンドFIFO40からコマンドを書き込まれた順に読み取るように構成される。より一般的には、コマンドキューがサポートされてもよい(例えば、コマンドFIFO40は、キューの各エントリーがFMIコントロール回路42を同時に見ることができるように、特にFIFOとして構成されなくてもよい)。同様に、オペランドFIFO46が、オペランドキューであり、FMIコントロール回路42は、コマンドキュー又はマクロメモリ44のコマンドに応答してオペランドFIFO46からオペランドを、それが書き込まれた順に読み取ることができる。
上述したように、マクロコマンドは、コマンドFIFO40にあり、FMIコントロール回路42は、マクロコマンドに応答してマクロメモリ44からのコマンドを遂行する。他の実施形態では、マクロコマンドは、PIOオペレーションとしてFMIコントロール回路42へ送信される。更に別の実施形態では、マクロコマンドには、コマンドFIFO40又はPIOオペレーションにおいて遭遇する。マクロコマンドは、マクロメモリにおけるスタートアドレスと、マクロメモリ44から読み取るワードの数を指示するワードカウントとを含む。FMIコントロール回路42は、マクロのコマンドを遂行した後にコマンドFIFO40における次のコマンドを読み取る。マクロのワードは、一実施形態では、コマンドに加えてオペランドを含む。他の実施形態は、ワードカウントではなく、コマンドカウントを使用する。上述したように、マクロコマンドは、ループカウントも含み、マクロは、ループカウントで指示された回数だけ繰り返される。
コマンドFIFO40及びオペランドFIFO46からワードを読み取ることは、FMIコントロール回路42がFIFOからこれらワードを削除することを含む。他方、マクロメモリ44からワードを読み取ることは、マクロが繰り返し遂行されるようにワードを削除することを含まない。
FMC48は、FMCコントロールレジスタ50のコンテンツに応答してメモリ転送を遂行し、フラッシュメモリ装置28A−28Bから読み取ったデータをバッファ52A−52Bへ書き込み、又はバッファ52A−52Bから読み取ったデータをフラッシュメモリ装置28A−28Bへ書き込む。バッファ52A−52Bは、その一方にデータが埋められている間に、その他方からデータが放出されるようなピンポン形態で使用される。例えば、フラッシュメモリ装置28A−28Bからの読み取りは、FMC48がバッファ52A−52Bの一方を埋めている間に、バッファ52A−52Bの他方が、メモリ12へのDMAオペレーションを遂行するCDMAコントローラ20により放出されることを含む。フラッシュメモリ装置28A−28Bへの書き込みは、CDMAコントローラ20がバッファ52A−52Bの一方にデータを埋めている間に、FMC48が他方のバッファ52A−52Bから放出することを含む。ECCユニット54は、フラッシュメモリ装置28A−28Bへ書き込むためのECCデータを発生し、そしてフラッシュメモリ装置28A−28Bからの読み取りに対してECCデータをチェックする。
図3を参照すれば、CDMAコントローラ20からPIOオペレーションを受け取るのに応答するFMIコントロール回路42の一実施形態のオペレーションのフローチャートが示されている。理解を容易にするためにブロックが特定の順序で示されているが、他の順序を使用してもよい。ブロックは、FMIコントロール回路42の組み合わせロジックにおいてパラレルに遂行されてもよい。例えば、図3に示す判断ブロックは、独立したもので、パラレルに遂行されてもよい。ブロック、ブロックの組み合わせ、及び/又は全体としてのフローチャートは、複数のクロックサイクルにわたってパイプライン型とすることができる。FMIコントロール回路42は、図3に示すオペレーションを実施するように構成される。
PIO書き込みがコマンドFIFO40にアドレスされた場合には(判断ブロック60の「イエス」岐路)、FMIコントロール回路42は、コマンドFIFO40の次のエントリーをPIO書き込みからのデータで更新するように構成される(ブロック62)。即ち、PIO書き込みからのデータがコマンドFIFO40のテールに添付される。PIO書き込みがマクロメモリ44にアドレスされた場合には(判断ブロック64の「イエス」岐路)、FMIコントロール回路42は、マクロメモリ44のアドレスされたエントリーをPIO書き込みからのデータで更新するように構成される(ブロック66)。PIO書き込みがオペランドFIFO46にアドレスされた場合には(判断ブロック68の「イエス」岐路)、FMIコントロール回路42は、オペランドFIFO46の次のエントリーをPIO書き込みからのデータで更新するように構成される(ブロック70)。即ち、PIO書き込みからのデータがオペランドFIFO46のテールに添付される。PIO書き込みがFMCコントロールレジスタ50内のレジスタ(又は他の実施形態ではフラッシュメモリインターフェイスユニット30の他のレジスタ)にアドレスされた場合には(判断ブロック72の「イエス」岐路)、FMIコントロール回路42は、アドレスレジスタを更新するように構成される(ブロック74)。
図4を参照すれば、フラッシュメモリインターフェイスユニット30、特に、FMIコントロール回路42の一実施形態によりサポートされる規範的コマンドセットのテーブル76が示されている。他の実施形態は、図4に示すコマンドのサブセット、コマンド及び他のコマンドのサブセット、及び/又はコマンド及び他のコマンドのスーパーセットを含む他のコマンドセットをサポートすることができる。このテーブルは、各コマンドを列挙した「コマンド」欄と、所与のコマンドに対するオペランドを示す「オペランド」欄と、コマンドにより占有されるコマンドFIFO40内のワードの数を指示する「ワード」欄とを含む。
コマンドのフォーマットは、実施形態ごとに変化してもよい。例えば、一実施形態では、各コマンドは、コマンドセット内のコマンドを識別するopcodeバイトを含む(即ち、テーブル76の各エントリーは、異なるopcodeエンコーディングを経て識別される)。コマンドを形成する1つ又は複数のワードにおける残存バイトを使用して、コマンドに対するオペランドを指定することができる。種々の実施形態では、コマンドは、コマンドFIFO40又はマクロメモリ44に記憶される。
アドレスコマンド(テーブル76のaddr0からaddr7)は、フラッシュメモリ装置28A−28Bへのインターフェイス(より簡潔には、フラッシュメモリインターフェイスと称される)にアドレスバイトを発行するのに使用される。“addr”後の数字は、フラッシュメモリインターフェイス上のアドレスのバイト0でスタートして、送信されるアドレスバイトの数を指示する。FMIコントロール回路42は、一実施形態では、次のコマンドを遂行する前にアドレスバイトが送信されるまで休止するように構成される。addrXコマンドは、一実施形態では、次のFMCコントロールレジスタ50、即ちアドレスバイトを伴う1つ以上のアドレスレジスタをプログラミングすること、及び1つ以上のレジスタにおいて転送数及び読み取り/書き込みモードをプログラミングすることと同等である。読み取り/書き込みモードに応答して、FMC48は、フラッシュメモリインターフェイスを経てアドレスバイトを送信し、そしてFMCコントロールレジスタ50内の状態レジスタにおいてアドレス終了割り込みを信号する。更に、addrXコマンドは、状態レジスタにおけるアドレス終了割り込みを待機し及びクリアすることも含む。addr0コマンドは、アドレスレジスタ及びアドレス転送数レジスタがプログラムされないという点でaddr1ないしaddr7コマンドとは異なる。むしろ、これらレジスタは、以下に述べるload_next_word又はload_from_fifoコマンドのような他のコマンドを使用して予めプログラムされる。
cmdコマンドは、フラッシュメモリインターフェイスを経てフラッシュメモリインターフェイスコマンドを送出するのに使用される。一実施形態では、フラッシュメモリインターフェイスコマンドは、1バイトである。従って、cmdコマンドのオペランドは、フラッシュメモリインターフェイスを経て送信されるコマンドバイトである。FMIコントロール回路42は、フラッシュメモリインターフェイスにおいてcmdコマンドが完了するまで休止するように構成される。cmdコマンドは、FMCコントロールレジスタ50のコマンドレジスタをコマンドバイトでプログラミングし、別のFMCコントロールレジスタ50においてコマンドモードビットをセットし、そしてFMCコントロールレジスタ50内の状態レジスタにおいてcmd終了割り込みを待機し及びクリアすることと同等である。コマンドモードビットの設定に応答して、FMC48は、フラッシュメモリインターフェイスを経てコマンドバイトを送信するように構成され、そしてcmd終了割り込みを状態レジスタに書き込む。
enable_chipコマンドは、FMCコントロールレジスタ50のチップイネーブルレジスタに書き込みを行うのに使用され、これは、FMC48がチップイネーブルオペランドに基づいてフラッシュメモリインターフェイス上のチップイネーブル信号を駆動するようにさせる。
xfer_pageコマンドは、フラッシュメモリ装置28A−28Bへの/からのページ転送を開始するのに使用される。xfer_pageコマンドに応答して、FMIコントロール回路42は、FMCコントロールレジスタ50にスタートビットをセットし、そして別のFMCコントロールレジスタ50においてページ終了割り込みを待機し及びクリアするように構成される。スタートビットに応答して、FMC48は、指定のページ転送を遂行し、そしてその完了時にページ終了割り込みをセットするように構成される。
FMIコントロール回路42によりサポートされる種々の同期コマンドがある。一般的に、同期コマンドは、FMIコントロール回路42が監視すべき事象を指定するのに使用され、そしてFMIコントロール回路42が、次のコマンドを遂行する前に事象の発生を待機する(即ち、FMIコントロール回路42が事象を検出するまで待機する)ようにさせる。従って、同期コマンドは、一連のコマンドを予めプログラムできるようにし、又、同期コマンドは、正しいタイミングを確保する上で助けとなる。例えば、複数のページ転送を予めプログラムすることができ、そして同期コマンドを使用して、現在ページに対してレジスタがもはや必要でなくなるまで(例えば、ページから最後のデータが読み取りのためにバッファ52A−52Bへロードされた後に)次のページに対してFMCコントロールレジスタ50のプログラミングを遅延することができる。
図4の実施形態において、同期コマンドは、wait_for_rdy、pause、timed_wait、及びwait_for_intを含む。wait_for_rdyコマンドは、ページ転送中にフラッシュメモリ装置28A−28Bの状態を監視するのに使用される。wait_for_rdyコマンドは、FMCコントロールレジスタ50の状態レジスタにおいて特定の「終了(done)」割り込み(例えば、ページ終了)を待機し、状態レジスタの状態バイトをマスクオペランドでマスクし、そしてマスクされた状態バイトを条件オペランドと比較することを含む。マスクされた状態バイトが条件オペランドに一致する場合には、FMIコントロール回路42は、次のコマンドを遂行するように構成される。さもなければ、FMIコントロール回路42は、割り込みを信号し(例えば、種々の実施形態では、IOP32又はプロセッサ22へ)、そしてIOP32/プロセッサ22が割り込みに応じるまで付加的なコマンドの遂行を停止する。
pause(休止)コマンドは、FMIコントロール回路42によりコマンドの遂行を休止するのに使用される。FMIコントロール回路42は、IOP32/プロセッサ22において実行されてFMCコントロールレジスタ50の1つに指定のイネーブルビットを書き込むソフトウェアにより特に休止解除となるまでコマンドの遂行を中止する。
FMIコントロール回路42は、timed_waitコマンドを経て多数のクロックサイクルの後に休止及び再開するように構成される。クロックサイクルの数は、timed_waitコマンドのオペランドとして指定される。ある実施形態では、timed_waitコマンドは、フラッシュメモリインターフェイスユニット30を低速化するのに使用される。というのは、コマンドFIFO40、マクロメモリ44及びオペランドFIFO46を使用して可能となる遂行が、フラッシュメモリ装置28A−28Bによりアクティビティが遂行される速度を越えるからである。
wait_for_intコマンドは、FMIコントロール回路42が指定の割り込み値を待機するようにさせるのに使用される。オペランドは、「ビット」オペランドを使用して、待機すべき割り込み(irq)及び待機すべきirqビットの状態(例えば、セット又はクリア)を指定する。
send_interruptコマンドは、IOP32又はプロセッサ22へ指定の割り込みを送信するのに使用される。send_interruptコマンドのオペランドは、FMCコントロールレジスタ50の割り込みコードレジスタへ書き込むべき割り込みコードを指定し、これは、割り込みを送信させるものである。
load_next_word及びload_from_fifoコマンドは、FMCコントロールレジスタ50の種々のレジスタをプログラムするのに使用される。これらコマンドのオペランドの1つは、書き込まれるべきコントロールレジスタのレジスタアドレスである。load_next_wordコマンドに応答して、FMIコントロール回路42は、コマンドFIFO40から次のワードを読み取り、そしてアドレスされたレジスタにワードを書き込む。又、load_from_fifoコマンドに応答して、FMIコントロール回路42は、オペランドFIFO46のヘッドにおいてワードを読み取り、且つアドレスされたレジスタへワードを書き込むように構成される。
macro(マクロ)コマンドは、FMIコントロール回路42がマクロメモリ44からコマンドを読み取るようにさせるために使用される。マクロコマンドは、アドレスオペランド、長さオペランド、及びループカウントオペランドを含む。アドレスは、マクロメモリ44から読み取られるべき第1ワードを識別し、そして長さは、マクロの長さを(例えば、コマンドの数又はワードの数に関して)識別する。一実施形態では、長さは、ワード数である。ループカウントは、実行されるべきマクロの繰り返し数を指示する。一実施形態では、ループカウントオペランドは、繰り返し数より1だけ小さい(例えば、ゼロのループカウントは、1つの繰り返しであり、1のループカウントは、2つの繰り返しであり、等々である)。マクロが完了すると、次のコマンドFIFO42が読み取られる(即ち、マクロにおいてリターンコマンドはない)。
poll(ポール)コマンドは、(マスクフィールドを使用してレジスタから読み取られた値をマスクした後に)特定の値に対してFMCコントロールレジスタ50のレジスタをポーリングする。FMIコントロール回路42は、指定値が検出されるまでレジスタをポーリングし、次いで、次のコマンドへ進む。
上述したように、FMIコントロール回路42は、あるコマンドを遂行する一部分としてFMCコントロールレジスタ50内の1つ以上の状態レジスタに記録された種々の割り込みを監視する。FMIコントロール回路42は、割り込みをクリアして、それに対応するコマンドを完了させる。コマンドFIFO40にコマンドがない場合には、割り込みがIOP32/プロセッサ22(もしイネーブルされれば)へ転送される。従って、FMCコントロールレジスタ50へのPIO書き込みオペレーション及びIOP32/プロセッサ22への割り込みは、フラッシュメモリ装置28A−28Bへの/からのメモリ転送を遂行するための別のメカニズムである。
図5は、コマンドを処理するためのFMIコントロール回路42の一実施形態のオペレーションを示すフローチャートである。理解を容易にするためにブロックは特定の順序で示されているが、他の順序を使用してもよい。ブロックは、FMIコントロール回路42の組み合わせロジックにおいてパラレルに遂行される。ブロック、ブロックの組み合わせ、及び/又は全体としてのフローチャートは、複数のクロックサイクルにわたってパイプライン型とすることができる。FMIコントロール回路42は、図5に示すオペレーションを実施するように構成される。
FMIコントロール回路42は、コマンドFIFO40からコマンドを読み取るように構成される(ブロック80)。コマンドがマクロコマンドでない場合には(判断ブロック82の「ノー」岐路)、FMIコントロール回路42は、コマンドを遂行するように構成される(ブロック84)。コマンドが完了すると、FMIコントロール回路42は、マクロがその終了に達したかどうか決定するのに使用されるワードカウントをチェックするように構成される。コマンドがマクロの一部分でない場合には、ワードカウントはゼロである(判断ブロック86の「ノー」岐路)。FMIコントロール回路は、マクロコマンドに関連したループカウントをチェックするように構成される。コマンドがマクロの一部分でない場合には、ループカウントがゼロである(判断ブロック95の「ノー」岐路)。FMIコントロール回路42は、コマンドFIFO40に別の有効コマンドがあるかどうか決定するように構成される(判断ブロック88)。即ち、FMIコントロール回路42は、コマンドFIFO40が空であるかどうか決定するように構成される。別の有効コマンドがある場合には(判断ブロック88の「イエス」岐路)、FMIコントロール回路42は、次のコマンドを読み取って処理するように構成される。さもなければ、FMIコントロール回路42のコマンド処理回路は、別の有効コマンドがコマンドFIFO40に書き込まれるまでアイドル状態である(判断ブロック88の「ノー」岐路)。
コマンドがマクロコマンドである場合には(判断ブロック82の「イエス」岐路)、FMIコントロール回路42は、ワードカウントをマクロコマンドの長さオペランドに初期化すると共に、ループカウントをマクロコマンドのループカウントオペランドに初期化するように構成される(ブロック90)。又、FMIコントロール回路42は、マクロメモリ44からコマンドを読み取る(ブロック92)。より詳細には、この場合、FMIコントロール回路42は、マクロコマンドのアドレスオペランドとして設けられたマクロメモリ44内のアドレスから第1ワードを読み取る。FMIコントロール回路42は、コマンドを遂行するように構成され(ブロック84)、又、ワードカウントをチェックするように構成される。ワードカウントは、ゼロより大きく(判断ブロック86の「イエス」岐路)、そしてFMIコントロール回路42は、ワードカウントをデクリメントすると共に、(例えば、アドレスをインクリメントすることで)マクロメモリ44から次のコマンドを読み取るように構成される(ブロック94及び96)。FMIコントロール回路42は、(図5のフローチャートの判断ブロック82へ戻って)次のコマンドを処理するように構成される。ワードカウントがゼロの場合には(判断ブロック86の「ノー」岐路)、FMIコントロール回路42は、ループカウントをチェックするように構成される。ループカウントがゼロより大きい場合には(判断ブロック95の「イエス」岐路)、マクロの別の繰り返しを遂行すべきとなる。FMIコントロール回路42は、ループカウントをデクリメントし(ブロック97)、ワードカウント及びマクロアドレスを再初期化し(ブロック99)、そしてマクロメモリ44から次のコマンド(即ち、マクロの第1コマンド)を読み取る(ブロック96)。ワードカウント及びループカウントの両方がゼロである場合には(判断ブロック86及び88の「ノー」岐路)、マクロが完了し、FMIコントロール回路42は、コマンドキュー40における次の有効コマンドをチェックする(判断ブロック88)。
各コマンドは、マクロコマンドであることがチェックされるので、マクロコマンドは、マクロメモリ44にも記憶されることに注意されたい。従って、マクロは、「ネスト状」にされるが、遂行されるべき最後のマクロは、コマンドFIFO40に戻され、従って、マクロがそれをコールしたマクロに戻らないという意味で真のネストは存在しない。
図6は、フラッシュメモリ装置28A又は28Bへの複数ページ書き込みを遂行するためのマクロの使用例を示すブロック図である。コマンドの3つの区分を含むマクロメモリ44のコンテンツが示されている。マクロメモリアドレス0とN−1との間には、前ページへの書き込みを完了するためのNワードのマクロ100が記憶される。マクロメモリアドレスNとN+M−1との間には、次のページへの書き込みを開始するためのMワードのマクロ102が記憶される。マクロメモリアドレスN+MとN+M+P−1との間には、メモリへの最後のページの書き込みを終了するためのPワードのマクロ104が記憶される。
又、図6にはコマンドFIFO40における1組のコマンドが示され、図6に示すように、FIFOのヘッドがコマンドFIFO40の頂部にあって、FIFOのその後のコマンドがコマンドFIFO40を下る順に進む。第1のコマンドは、マクロN、Mである。コマンドは、ワードNで始めてマクロ104をコールし、そしてM個のワード(即ち、図6に示すマクロ102)を遂行する。従って、第1ページへの書き込みが初期化される。その後のページ書き込みは、マクロ0、N+Mコマンドを使用して遂行される。これらのコマンドは、マクロ100及びマクロ102を遂行させる。前ページへの書き込みが完了し(マクロ100)、そして次のページへの書き込みが開始される(マクロ102)。最後のページは、マクロ0、N+M+Pコマンドを使用して書き込まれる。このコマンドは、マクロ100、102及び104を遂行させ、第2ないし最後のページへの書き込みを完了させ(マクロ100)、最後のページへの書き込みを遂行し(マクロ102)、そして最後のページへの書き込みを完了させてフラッシュメモリ装置28A又は28Bを閉じる(マクロ104)。この例では、各マクロコマンドのループカウントオペランドがゼロである(1つの繰り返し)。しかしながら、図6の第1の例の下に示された別の例では、ループカウントオペランドを使用して、コマンドキューにおけるコマンドをより効率的なものにする。マクロNのループカウント、第1ページのMコマンド、及び最後のページのマクロ0、N+M+Pコマンドは、依然、ゼロであり、1つの繰り返しを指定している。しかしながら、書き込みの中間ページは、全て、ループカウントオペランドがページカウント(C)−3に等しい1つのマクロコマンド(マクロ0、N+M)を使用して達成される。最初と最後のページ、及びこの実施形態ではループカウントオペランドが希望の繰り返し数より1だけ低いことを考慮するために、ループカウントは、C−3である。マクロ100、102及び104が示すように、マクロメモリ44におけるマクロの入念な構成を通して、高密度で且つ効率的なマクロが得られる。マクロは、load_from_fifoコマンドを使用して、各ページ書き込みオペランドとして異なるオペランドを使用し、各ページのオペランドは、コマンドFIFO40におけるコマンドを開始する前に、オペランドFIFO46にロードされる。
マクロ102に含まれるコマンドは、書き込まれるべきアドレス、チップイネーブル、等を確立する。マクロ100に含まれるコマンドは、前ページをメモリへ転送するためのxfer_pageと、エラーをチェックすると共に次のページ転送(マクロ102を経て初期化される)を同期化するコマンドとを含む。マクロ104は、最終的なxfer_pageコマンドと、エラーをチェックすると共に、書き込みのターゲットであったフラッシュメモリ装置を閉じて、アクティブページ/領域をデアクチベートし及び/又はフラッシュメモリ装置に対して指定された他のオペレーションを遂行するコマンドとを含む。
図7は、IOP32及び/又はプロセッサ22により実行されるべきフラッシュコードのオペレーションを示すフローチャートである。理解を容易にするためにブロックは特定の順序で示されているが、他の順序が指定されてもよい。フラッシュコードは、IOP32及び/又はプロセッサ22により実行されたときに、図7に示すオペレーションを実施するインストラクションを含む。
フラッシュコードは、集積回路10の動作中にいつでも実行することができる。例えば、フラッシュコードは、フラッシュメモリインターフェイスユニット30を初期化するために実行することができる。又、フラッシュコードは、フラッシュメモリ30がアイドル状態であるがアクセスされねばならないときに実行されて、マクロメモリ44のマクロ、等を再構成することができる。
フラッシュコードは、望ましいマクロをマクロメモリ44へダウンロードする(ブロック110)。マクロメモリ44に既に記憶されたマクロが望ましいマクロであるか、又は望ましいマクロがない場合には、ブロック110がスキップされる。又、フラッシュコードは、コマンド又はマクロにより使用されるべきオペランドをダウンロードし(ブロック112)、そしてブロック112は、ダウンロードされるべきオペランドがない場合にはスキップされる。フラッシュコードは、遂行されるべきコマンドをダウンロードし(ブロック114)、コマンドの実行は、フラッシュメモリインターフェイスユニット30において開始される。付加的なコマンドがダウンロードされる準備ができた場合には(判断ブロック116の「イエス」岐路)、フラッシュコードは、その付加的なコマンドをダウンロードする(ブロック114)。新たなオペランド又はマクロがダウンロードされる準備ができた場合には(判断ブロック118の「イエス」岐路)、フラッシュコードは、それらをダウンロードするためにブロック110及び/又は12へ戻る。
システム及びコンピュータアクセス可能な記憶媒体
図8は、システム150の一実施形態を示すブロック図である。ここに示す実施形態では、システム150は、1つ以上の周辺装置154及び外部メモリ158に結合された集積回路10(図1)の少なくとも1つのインスタンスを含む。外部メモリ158は、メモリ12を含む。電源156も設けられ、これは、集積回路10へ供給電圧を供給すると共に、メモリ158及び/又は周辺装置154へ1つ以上の供給電圧を供給する。ある実施形態では、集積回路10の2つ以上のインスタンスが含まれる(2つ以上の外部メモリ158も含まれる)。
周辺装置154は、システム150の形式に基づいて望ましい回路を備えている。例えば、一実施形態では、システム150は、移動装置(例えば、パーソナルデジタルアシスタント(PDA)、スマートホン、等)であり、周辺装置154は、種々の形式のワイヤレス通信のための装置、例えば、WiFi、ブルーツース、セルラー、グローバルポジショニングシステム、等を備えている。又、周辺装置154は、RAM記憶装置、ソリッドステート記憶装置又はディスク記憶装置を含む付加的な記憶装置も備えている。周辺装置154は、タッチディスプレイスクリーン又はマルチタッチディスプレイスクリーンを含むディスプレイスクリーン、キーボード又は他の入力装置、マイクロホン、スピーカ、等のユーザインターフェイス装置も備えている。他の実施形態では、システム150は、任意の形式のコンピューティングシステム(例えば、デスクトップパーソナルコンピュータ、ラップトップ、ワークステーション、ネットトップ、等)である。
外部メモリ158は、任意の形式のメモリを含む。例えば、外部メモリ158は、SRAM、ダイナミックRAM(DRAM)、例えば、同期DRAM(SDRAM)、ダブルデータレート(DDR、DDR2、DDR3、等)SDRAM、RAMBUSDRAM、等である。外部メモリ158は、メモリ装置がマウントされた1つ以上のメモリモジュール、例えば、単一インラインメモリモジュール(SIMM)、デュアルインラインメモリモジュール(DIMM)、等を含む。
図9は、コンピュータアクセス可能な記憶媒体200のブロック図である。一般的に述べると、コンピュータアクセス可能な記憶媒体は、インストラクション及び/又はデータをコンピュータへ与えるために使用中にコンピュータによりアクセス可能な記憶媒体を含む。例えば、コンピュータアクセス可能な記憶媒体は、磁気又は光学媒体、例えば、ディスク(固定又は取り外し可能)、テープ、CD−ROM、DVD−ROM、CD−R、CD−RW、DVD−R、DVD−RW又はブルーレイのような記憶媒体を含む。記憶媒体は、更に、揮発性又は不揮発性メモリ媒体、例えば、RAM(例えば、同期ダイナミックRAM(SDRAM)、RambusDRAM(RDRAM)、スタティックRAM(SRAM)、等)、ROM、フラッシュメモリ、不揮発性メモリ(例えば、フラッシュメモリ)を含み、これは、ユニバーサルシリアルバス(USB)インターフェイス、フラッシュメモリインターフェイス(FMI)、シリアル周辺インターフェイス(SPI)、等の周辺インターフェイスを経てアクセス可能なものである。又、記憶媒体は、マイクロエレクトロメカニカルシステム(MEMS)を含むと共に、ネットワーク及び/又はワイヤレスリンクのような通信媒体を経てアクセス可能な記憶媒体も含む。図5のコンピュータアクセス可能な記憶媒体200は、IOP32及び/又はプロセッサ22によるコードを含むフラッシュコード202を記憶する。フラッシュコード202は、実行時に、図7を参照して上述したオペレーションを実施するインストラクションを含む。一般的に、コンピュータアクセス可能な記憶媒体200は、実行時に、図7に示すオペレーションの一部分又は全部を実施するインストラクションのセットを記憶する。更に、コンピュータアクセス可能な記憶媒体200は、マクロメモリ44へダウンロードされるべき1つ以上のマクロ204、オペランドFIFO36へダウンロードされるべき1つ以上のオペランド、及び/又はコマンドFIFO40へダウンロードされるべき1つ以上のコマンドを記憶する。キャリア媒体は、コンピュータアクセス可能な記憶媒体、及びワイヤード又はワイヤレス送信のような送信媒体を含む。
以上の開示から、当業者であれば、多数の変更や修正が明らかであろうが、このような変更や修正は、全て、特許請求の範囲に包含されると解釈される。
10:集積回路
12:外部メモリ
14:メモリコントローラ
16:システムインターフェイスユニット(SIU)
18A−18B:周辺コンポーネント
20:中央DMAコントローラ
22:プロセッサ
24、26:キャッシュ
28A−28B:フラッシュメモリ装置
30:フラッシュメモリインターフェイスユニット
32:入力/出力プロセッサ(IOP)
40:コマンドFIFO
42:フラッシュメモリインターフェイス(FMI)コントロール回路
44:マクロメモリ
46:オペランドFIFO
48:フラッシュメモリコントローラ(FMC)
50:FMCコントロールレジスタ
52A−52B:データバッファ
54:エラーチェック/修正(ECC)ユニット
156:電源
158:外部メモリ
154:周辺装置

Claims (20)

  1. 集積回路の外部インターフェイスを制御する装置において、
    前記外部インターフェイスを経て通信するように構成されたコントローラと、
    前記外部インターフェイスを経ての転送を生じさせる複数のコマンドを記憶するように構成されたコマンドキューと、
    第2の複数のコマンドを記憶するように構成されたマクロメモリと、
    前記コマンドキュー及びコントローラに結合され、前記コマンドキューから複数のコマンドを読み取るように構成されると共に、前記転送を遂行するための前記コントローラにおける対応オペレーションを開始するように構成されたコントロール回路と、を備え
    前記コマンドキューにおける複数のコマンドは、前記複数のコマンドを遂行するのに応答して前記コマンドキューから除去され、前記第2の複数のコマンドは、前記第2の複数のコマンドが遂行されたときにも前記マクロメモリに留まり、
    前記コマンドキューにおける複数のコマンドのうちの少なくとも1つは、前記マクロメモリにおけるコマンドを遂行させるマクロコマンドであり、
    前記マクロコマンドは、実行されるべきマクロメモリにおける第1コマンドのアドレスと、前記第1コマンドで始まる読み取られるべきワードの数とを指定し、
    前記コントロール回路は、前記マクロコマンドに応答して、前記マクロメモリから前記ワードの数を読み取り、前記マクロメモリ内のリターンコマンドを要求することなく、前記マクロコマンドの後の前記コマンドキュー内の次のコマンドを実行するように構成され、それにより、前記第2の複数のコマンドは、コマンドキューへ戻るリターンコマンドを除外するものである、装置。
  2. 前記コントローラ及びコントロール回路に結合された複数のコントロールレジスタを更に備え、前記コントローラは、前記複数のコントロールレジスタのコンテンツに応答して前記外部インターフェイスを経て通信するように構成され、前記複数のコマンドは、前記コントロール回路が前記複数のコントロールレジスタの1つ以上を更新するようにさせる1つ以上のコマンドを含む、請求項1に記載の装置。
  3. 前記コントロール回路は、前記集積回路内の内部インターフェイスを経てオペレーションを受け取るように構成され、前記オペレーションは、前記複数のコントロールレジスタのうちの1つの直接的更新を指示し、前記コントロール回路は、前記オペレーションを受け取るのに応答して前記コントロールレジスタの1つを更新するように構成される、請求項2に記載の装置。
  4. 前記コントロール回路は、更に、前記内部インターフェイスを経て前記複数のコマンドを受け取るように構成され、前記コントロール回路は、前記複数のコマンドを受け取るのに応答して前記コマンドキューへ前記複数のコマンドを書き込むように構成される、請求項3に記載の装置。
  5. 前記外部インターフェイスはメモリインターフェイスであり、前記複数のコマンドは、前記コントローラが、前記メモリインターフェイスに結合された1つ以上のメモリ装置へアドレスを駆動するようにさせる第1コマンドを含む、請求項1に記載の装置。
  6. 前記複数のコマンドは、前記コントローラが、指定の1つ以上のチップイネーブル信号を1つ以上のメモリ装置に駆動するようにさせる第2コマンドを含む、請求項5に記載の装置。
  7. 前記複数のコマンドは、前記コントローラが、前記集積回路と1つ以上のメモリ装置との間でデータのページを転送するようにさせる第2コマンドを含む、請求項5に記載の装置。
  8. 前記メモリインターフェイスは、フラッシュメモリインターフェイスである、請求項5に記載の装置。
  9. 前記マクロコマンドは、更に、遂行されるべき前記第2の複数のコマンドの繰り返し数を指示するループカウントオペランドを指定する、請求項1に記載の装置。
  10. 前記第2の複数のコマンドは、マクロメモリ内の第2コマンドの第2アドレス及び読み取られるべきワードの第2の数を指定する第2のマクロコマンドを含み、前記コントロール回路は、前記第2コマンドで始まる前記第2の数のワードにおけるコマンドを遂行するのに続いて前記コマンドキューへ戻るように構成される、請求項9に記載の装置。
  11. 前記メモリインターフェイスは、前記コマンドキュー及びマクロメモリにおけるコマンドによりアクセス可能なオペランドデータを記憶するように構成されたオペランドキューを備えた、請求項に記載の装置。
  12. 前記複数のコマンドを前記コマンドキューへロードするように構成されたプロセッサを更に備えた、請求項1に記載の装置。
  13. 第2の複数のコマンドを記憶するように構成されたマクロメモリを更に備え、前記コマンドキュー内の複数のコマンドにおけるマクロコマンドは、前記第2の複数のコマンドを遂行させ、更に、前記プロセッサは、前記第2の複数のコマンドを前記マクロメモリへロードするように構成される、請求項12に記載の装置。
  14. 前記コマンドキューにおける複数のコマンド及び前記マクロメモリにおける第2の複数のコマンドに対してアクセス可能な複数のオペランドを記憶するように構成されたオペランドキューを更に備え、前記プロセッサは、前記複数のオペランドを前記オペランドキューにロードするように構成される、請求項13に記載の装置。
  15. 集積回路のメモリインターフェイスユニットにおけるコマンドキューから複数のコマンドを読み取るステップであって、前記メモリインターフェイスユニットは、第2の複数のコマンドを記憶するマクロメモリを備え、前記コマンドキューにおける複数のコマンドは、前記複数のコマンドを遂行するのに応答して前記コマンドキューから除去され、前記第2の複数のコマンドは、前記第2の複数のコマンドが遂行されたときにも前記マクロメモリに留まり、前記コマンドキューにおける複数のコマンドのうちの少なくとも1つは、前記マクロメモリにおけるコマンドを遂行させるマクロコマンドであり、前記マクロコマンドは、実行されるべきマクロメモリにおける第1コマンドのアドレスと、前記第1コマンドで始まる読み取られるべきワードの数とを指定するものである、ステップと、
    前記マクロコマンドに応答して、前記マクロメモリから前記ワードの数を読み取り、前記マクロメモリ内のリターンコマンドを要求することなく、前記マクロコマンドの後の前記コマンドキュー内の次のコマンドを実行し、それにより、前記第2の複数のコマンドは、コマンドキューへ戻るリターンコマンドを除外するものである、ステップと、
    コントローラが、前記コマンドキュー内の複数のコマンドに応答して、前記集積回路の外部インターフェイスを経て、その外部インターフェイスに結合された1つ以上のメモリ装置と通信するようにさせるステップであって、前記複数のコマンドは、前記1つ以上のメモリ装置と前記集積回路との間にメモリ転送を生じさせ、そのメモリ転送は、1つ以上のデータページを含むものであるステップと、
    を備えた方法。
  16. 前記複数のコマンドは、前記コントローラが前記1つ以上のメモリ装置へアドレスを送信するようにさせる第1コマンドと、前記コントローラが前記1つ以上のメモリ装置へ1組のチップイネーブルを送信するようにさせる第2コマンドと、前記コントローラがデータのページを転送するようにさせる少なくとも1つの第3コマンドとを含む、請求項15に記載の方法。
  17. 前記複数のコマンドは、前記コントローラが、前記インターフェイスを経て1つ以上のメモリ装置へ対応コマンドを送信するようにさせる第1コマンドを含み、その対応コマンドは、1つ以上のメモリ装置に対してメモリインターフェイスプロトコルで定義される、請求項15に記載の方法。
  18. 前記マクロコマンドは、更に、遂行されるべき前記第2の複数のコマンドの繰り返し数を指示するループカウントオペランドを指定する、請求項15に記載の方法。
  19. 前記第2の複数のコマンドは、マクロメモリ内の第2コマンドの第2アドレス及び読み取られるべきワードの第2の数を指定する第2のマクロコマンドを含み、
    前記第2コマンドで始まる前記第2の数のワードを実行し、前記第2のマクロコマンドに応答して前記コマンドキューへ戻るステップをさらに有する、請求項18に記載の方法。
  20. 前記メモリインターフェイスユニットは、前記コマンドキュー及びマクロメモリにおけるコマンドによりアクセス可能なオペランドデータを記憶するように構成されたオペランドキューを有する、請求項15に記載の方法。
JP2010265719A 2009-11-10 2010-11-10 周辺コンポーネントのためのコマンドキュー Active JP5329515B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/615,587 US8131889B2 (en) 2009-11-10 2009-11-10 Command queue for peripheral component
US12/615,587 2009-11-10

Publications (2)

Publication Number Publication Date
JP2011146035A JP2011146035A (ja) 2011-07-28
JP5329515B2 true JP5329515B2 (ja) 2013-10-30

Family

ID=43530829

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010265719A Active JP5329515B2 (ja) 2009-11-10 2010-11-10 周辺コンポーネントのためのコマンドキュー

Country Status (11)

Country Link
US (3) US8131889B2 (ja)
EP (1) EP2330596B1 (ja)
JP (1) JP5329515B2 (ja)
KR (1) KR101248246B1 (ja)
CN (1) CN102053930B (ja)
AU (1) AU2010319715B2 (ja)
BR (1) BR112012011096B1 (ja)
HK (1) HK1158356A1 (ja)
MX (1) MX2012005183A (ja)
TW (1) TWI472923B (ja)
WO (1) WO2011059897A1 (ja)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8131889B2 (en) 2009-11-10 2012-03-06 Apple Inc. Command queue for peripheral component
US9021146B2 (en) * 2011-08-30 2015-04-28 Apple Inc. High priority command queue for peripheral component
US20130179614A1 (en) * 2012-01-10 2013-07-11 Diarmuid P. Ross Command Abort to Reduce Latency in Flash Memory Access
US8918680B2 (en) 2012-01-23 2014-12-23 Apple Inc. Trace queue for peripheral component
US9513912B2 (en) 2012-07-27 2016-12-06 Micron Technology, Inc. Memory controllers
KR101988287B1 (ko) 2012-11-26 2019-06-12 삼성전자주식회사 저장 장치 및 그것을 포함하는 컴퓨팅 시스템, 및 그것의 데이터 전송 방법
US8954632B2 (en) * 2012-12-31 2015-02-10 Silicon Laboratories Inc. System method for regulating an input/output interface by sampling during a time duration associated with I/O states
EP2965318B1 (en) * 2013-03-07 2018-05-02 Charles I. Peddle High speed flash controllers
KR102254099B1 (ko) 2014-05-19 2021-05-20 삼성전자주식회사 메모리 스와핑 처리 방법과 이를 적용하는 호스트 장치, 스토리지 장치 및 데이터 처리 시스템
US10437483B2 (en) * 2015-12-17 2019-10-08 Samsung Electronics Co., Ltd. Computing system with communication mechanism and method of operation thereof
KR102643467B1 (ko) 2016-05-31 2024-03-06 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
CN107564563B (zh) * 2016-06-30 2020-06-09 华邦电子股份有限公司 存储器装置及其操作方法
CN106528458B (zh) * 2016-11-01 2020-09-08 广东浪潮大数据研究有限公司 一种接口控制器、基板管理控制器及安全系统
US10853262B2 (en) * 2016-11-29 2020-12-01 Arm Limited Memory address translation using stored key entries
CN108829446A (zh) * 2018-06-04 2018-11-16 张剑飞 基于蓝牙hid实现外设宏功能的方法
CN112015527B (zh) * 2019-05-29 2024-03-22 闪迪技术有限公司 管理从提交队列获取和执行命令
US11093244B2 (en) 2019-08-28 2021-08-17 Micron Technology, Inc. Command delay
US11163490B2 (en) * 2019-09-17 2021-11-02 Micron Technology, Inc. Programmable engine for data movement
CN111221756B (zh) * 2019-11-13 2023-06-30 北京中航通用科技有限公司 一种上位机高效下行数据传输的方法
US11789658B2 (en) 2021-04-13 2023-10-17 SK Hynix Inc. Peripheral component interconnect express (PCIe) interface system and method of operating the same
KR102518317B1 (ko) * 2021-04-13 2023-04-06 에스케이하이닉스 주식회사 PCIe 인터페이스 장치 및 그 동작 방법
KR102668564B1 (ko) 2021-06-01 2024-05-24 에스케이하이닉스 주식회사 PCIe 인터페이스 장치 및 그 동작 방법
US20220327074A1 (en) * 2021-04-13 2022-10-13 SK Hynix Inc. PERIPHERAL COMPONENT INTERCONNECT EXPRESS (PCIe) SYSTEM AND METHOD OF OPERATING THE SAME

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5790887A (en) * 1996-02-15 1998-08-04 International Business Machines Corporation Method and apparatus for processing programmed input/output (PIO) operations in a computer system
US6201739B1 (en) 1996-09-20 2001-03-13 Intel Corporation Nonvolatile writeable memory with preemption pin
US5822244A (en) 1997-09-24 1998-10-13 Motorola, Inc. Method and apparatus for suspending a program/erase operation in a flash memory
US6389479B1 (en) * 1997-10-14 2002-05-14 Alacritech, Inc. Intelligent network interface device and system for accelerated communication
US6434620B1 (en) * 1998-08-27 2002-08-13 Alacritech, Inc. TCP/IP offload network interface device
JPH11242632A (ja) * 1998-02-26 1999-09-07 Hitachi Ltd メモリ装置
US6330656B1 (en) * 1999-03-31 2001-12-11 International Business Machines Corporation PCI slot control apparatus with dynamic configuration for partitioned systems
US8341332B2 (en) * 2003-12-02 2012-12-25 Super Talent Electronics, Inc. Multi-level controller with smart storage transfer manager for interleaving multiple single-chip flash memory devices
US6779045B2 (en) * 2001-03-21 2004-08-17 Intel Corporation System and apparatus for increasing the number of operations per transmission for a media management system
US6981073B2 (en) * 2001-07-31 2005-12-27 Wis Technologies, Inc. Multiple channel data bus control for video processing
KR100448905B1 (ko) * 2002-07-29 2004-09-16 삼성전자주식회사 낸드플래쉬메모리를 시스템구동 및 저장용으로 사용하는장치
US20040225881A1 (en) * 2002-12-02 2004-11-11 Walmsley Simon Robert Variant keys
FR2863076B1 (fr) * 2003-11-28 2006-02-03 Bull Sa Systeme cryptographique haut debit a architecture modulaire.
US7181584B2 (en) * 2004-02-05 2007-02-20 Micron Technology, Inc. Dynamic command and/or address mirroring system and method for memory modules
US7493426B2 (en) * 2005-01-31 2009-02-17 International Business Machines Corporation Data communication method and apparatus utilizing programmable channels for allocation of buffer space and transaction control
KR20080017982A (ko) * 2006-08-23 2008-02-27 삼성전자주식회사 플래시 메모리 시스템 및 그 프로그램 방법
JP2008117505A (ja) 2006-11-03 2008-05-22 Spansion Llc 半導体装置およびその制御方法
KR100843136B1 (ko) 2006-11-14 2008-07-02 삼성전자주식회사 비휘발성 메모리에서 연산 처리를 제어하는 장치 및 그방법
US7627744B2 (en) * 2007-05-10 2009-12-01 Nvidia Corporation External memory accessing DMA request scheduling in IC of parallel processing engines according to completion notification queue occupancy level
US8533678B2 (en) * 2007-07-13 2013-09-10 Digi International Inc. Embedded device program debug control
KR100921787B1 (ko) * 2007-11-01 2009-10-15 주식회사 이스트후 낸드 플래시 메모리 제어장치
US8151100B2 (en) * 2008-02-06 2012-04-03 Broadcom Corporation Operating system for a computing device with handheld and extended computing units
KR101486987B1 (ko) * 2008-05-21 2015-01-30 삼성전자주식회사 불휘발성 메모리를 포함하는 반도체 메모리 장치 및 불휘발성 메모리를 위한 커맨드 스케줄링 방법
US8850103B2 (en) 2009-08-28 2014-09-30 Microsoft Corporation Interruptible NAND flash memory
US8131889B2 (en) 2009-11-10 2012-03-06 Apple Inc. Command queue for peripheral component

Also Published As

Publication number Publication date
MX2012005183A (es) 2012-06-08
AU2010319715A1 (en) 2012-05-17
US20130080660A1 (en) 2013-03-28
US8131889B2 (en) 2012-03-06
KR101248246B1 (ko) 2013-03-27
AU2010319715B2 (en) 2014-06-05
WO2011059897A1 (en) 2011-05-19
US8396994B1 (en) 2013-03-12
BR112012011096B1 (pt) 2020-09-24
KR20110052510A (ko) 2011-05-18
US8332543B2 (en) 2012-12-11
US20120124243A1 (en) 2012-05-17
CN102053930A (zh) 2011-05-11
US20110113167A1 (en) 2011-05-12
HK1158356A1 (en) 2012-07-13
TWI472923B (zh) 2015-02-11
CN102053930B (zh) 2014-06-25
JP2011146035A (ja) 2011-07-28
BR112012011096A2 (pt) 2017-09-19
TW201131368A (en) 2011-09-16
EP2330596B1 (en) 2013-07-31
EP2330596A1 (en) 2011-06-08

Similar Documents

Publication Publication Date Title
JP5329515B2 (ja) 周辺コンポーネントのためのコマンドキュー
JP5499124B2 (ja) 周辺コンポーネントのための高プライオリティコマンドキュー
US20130179614A1 (en) Command Abort to Reduce Latency in Flash Memory Access
US8918680B2 (en) Trace queue for peripheral component
WO2014133705A1 (en) A method, apparatus, system for representing, specifying and using deadlines
JP2013545205A (ja) 割り込み分配スキーム
US20160179721A1 (en) Delivering interrupts to user-level applications
US20120137090A1 (en) Programmable Interleave Select in Memory Controller
US8166316B2 (en) Single interface access to multiple bandwidth and power memory zones
US10459847B1 (en) Non-volatile memory device application programming interface
US20130054902A1 (en) Accelerating blocking memory operations
US9152588B2 (en) Race-free level-sensitive interrupt delivery using fabric delivered interrupts
JP2009037639A (ja) ストリーミングidメソッドによるdmac発行メカニズム

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20121108

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121115

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130214

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130307

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130607

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130724

R150 Certificate of patent or registration of utility model

Ref document number: 5329515

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250