説明

周辺コンポーネントのための高プライオリティコマンドキュー

【課題】集積回路の外部インターフェイスをコントロールする装置を提供する。
【解決手段】一実施形態において、周辺コンポーネントは、周辺インターフェイスを経て転送を行うためにコマンドのセットを記憶するように構成された低プライオリティコマンドキューと、そのインターフェイスを経て転送を行うためにコマンドの第2セットを記憶するように構成された高プライオリティコマンドキューとを備えている。低プライオリティキューにおけるコマンドは、コマンドの第2セットを実行するためにコマンドのセットに割り込むところのポイントを識別する指示を含む。コントロール回路が低プライオリティコマンドキューに結合され、指示に応答して低プライオリティキューからのコマンドの処理に割り込み、高プライオリティコマンドキューからのコマンドを処理する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、集積回路の分野に関し、より特定すれば、集積回路の周辺コンポーネントにおけるコマンド処理に関する。
【背景技術】
【0002】
著しいデータ帯域巾を有する周辺インターフェイスコントローラにおいて行われる挑戦の1つは、外部プロセッサから周辺インターフェイスコントローラへコントロール入力を与えることである。典型的に、周辺インターフェイスコントローラとメモリとの間にデータを転送する周辺コントローラの同じ内部インターフェイスが、外部プロセッサからコントロール入力を与えるのにも使用される(例えば、周辺インターフェイスコントローラのコントロールレジスタへの一連の書き込みを経て)。データ転送が行われる間に、周辺インターフェイスに対するメモリは、データ転送で飽和される。従って、データ転送の次のセットをアレンジするためのコントロール入力は、現在データ転送が完了するまで実際上締め出される。コントロール入力が与えられる時間中に、周辺インターフェイスコントローラによりコントロールされる外部周辺インターフェイスは、アイドル状態となる。
【発明の概要】
【発明が解決しようとする課題】
【0003】
周辺対メモリインターフェイスにおける競合を減少する1つのメカニズムは、周辺インターフェイスコントローラのハードウェアをコントロールするためのプログラムを実行するプロセッサを周辺インターフェイスコントローラに含ませることである。しかしながら、そのようなメカニズムは、多くの点で費用がかかる。即ち、プロセッサを取得するための金額に関して(個別のコンポーネントとして、又は周辺インターフェイスコントローラ設計に合体される知的特性として);プロセッサが含まれるときに周辺インターフェイスコントローラにより占有されるスペースに関して;及びプロセッサにより消費される電力に関して。更に、実行されるプログラムは、システムメモリに記憶され、従って、インストラクションフェッチが周辺対メモリインターフェイスにおけるデータ転送と競合する。
【0004】
更に、所与のデータ転送がスタートした後に、より重要な(又はよりプライオリティの高い)データ転送を遂行する必要性が識別される場合には、1つのデータ転送に割り込んで別のことを行うことが複雑になる。
【課題を解決するための手段】
【0005】
一実施形態において、集積回路は、該集積回路の外部インターフェイスをコントロールするよう構成された周辺コンポーネントを備えている。例えば、周辺コンポーネントは、フラッシュメモリインターフェイスユニットのようなメモリインターフェイスユニットである。周辺コンポーネントに対する内部インターフェイスは、外部インターフェイスへの/からのデータ転送と、周辺コンポーネントへのコントロール通信との間で共有される。周辺コンポーネントは、インターフェイスにおいて転送を遂行するためのコマンドのセットを記憶するように構成された低プライオリティコマンドキューを備えている。更に、周辺コンポーネントは、インターフェイスにおいて転送を遂行するためのコマンドの第2セットを記憶するように構成された高プライオリティコマンドキューも備えている。低プライオリティキューにおけるコマンドは、コマンドの第2セットを遂行するためにコマンドのセットに割り込むところのポイントを識別する指示を含む。コントロール回路が低プライオリティコマンドキューに結合され、コマンドを読み取って、コマンドに応答してインターフェイスにおいて転送を生じさせるようにインターフェイスコントローラと通信する。更に、コントロール回路は、指示に応答して低プライオリティキューからのコマンドの処理に割り込み、高プライオリティコマンドキューからのコマンドを処理することができる。
【0006】
一実施形態において、コマンドの第2セットにより表される高プライオリティ転送は、低プライオリティキューを最初に空にすることが要求される場合より迅速に遂行される。更に、割り込み可能なポイントで低プライオリティ転送に割り込むことにより、高プライオリティ転送が完了したときに低プライオリティ転送を再開することができる。高プライオリティ転送の前に行われた処理は、正しく完了し、繰り返す必要はない。
【0007】
以下、添付図面を参照して、本発明を詳細に説明する。
【図面の簡単な説明】
【0008】
【図1】集積回路、メモリ及びフラッシュメモリの一実施形態のブロック図である。
【図2】図1に示すフラッシュメモリインターフェイスの一実施形態のブロック図である。
【図3】書き込み動作を受け取るのに応答して行われる図2に示すフラッシュメモリインターフェイスコントロール回路の一実施形態の動作を示すフローチャートである。
【図4】フラッシュメモリインターフェイスコントロール回路によりサポートされるコマンドの一実施形態を示すテーブルである。
【図5】低プライオリティコマンドの先入れ先出しバッファ(FIFO)からコマンドを読み取るのに応答して行われる図2に示すフラッシュメモリインターフェイスコントロール回路の一実施形態の動作を示すフローチャートである。
【図6】高プライオリティコマンドの先入れ先出しバッファ(FIFO)からコマンドを読み取るのに応答して行われる図2に示すフラッシュメモリインターフェイスコントロール回路の一実施形態の動作を示すフローチャートである。
【図7】マクロメモリの規範的使用を示すブロック図である。
【図8】図1に示すプロセッサの一実施形態により実行されるフラッシュメモリインターフェイスコードの一実施形態の動作を示すフローチャートである。
【図9】図1に示す装置を含むシステムの一実施形態のブロック図である。
【図10】コンピュータアクセス可能な記憶媒体の一実施形態のブロック図である。
【発明を実施するための形態】
【0009】
本発明は、種々の変更を受けそして別の形態でも実施できるが、その特定の実施形態を一例として添付図面に示して以下に詳細に説明する。しかしながら、添付図面及び詳細な説明は、本発明を、ここに開示する特定の形態に限定するものではなく、本発明は、特許請求の範囲に規定される本発明の精神及び範囲内に入る全ての変更、等効物及び代替え物を網羅することを理解されたい。ここに使用する見出しは、編成上の目的に過ぎず、説明の範囲を限定するためのものではない。又、本出願全体にわたって使用される「〜してもよい(may)」という語は、許すという意味(即ち、〜の潜在性があるという意味)で使用されるもので、強制の意味(即ち、〜しなければならないという意味)ではない。同様に、「含む(include)」、「含んでいる(including)」及び「含む(includes)」という語は、含むことを意味するが、それに限定されない。
【0010】
種々のユニット、回路又は他のコンポーネントは、1つ又は複数のタスクを遂行するように「構成される」ものとして述べる。この点について、「構成される」とは、動作中に1つ又は複数のタスクを遂行する「回路を有する」ことを一般的に意味する構造を広く表現するものである。従って、ユニット/回路/コンポーネントは、そのユニット/回路/コンポーネントが現在オンでなくても、タスクを遂行するように構成することができる。一般的に、「構成される」に対応する構造を形成する回路は、ハードウェア回路、及び/又は動作を実施するように実行できるプログラムインストラクションを記憶するメモリを含む。メモリは、スタティック又はダイナミックランダムアクセスメモリのような揮発性メモリ、及び/又は光学又は磁気ディスク記憶装置、フラッシュメモリ、プログラム可能なリードオンリメモリ、等の不揮発性メモリを含む。同様に、種々のユニット/回路/コンポーネントは、説明の便宜上、1つ又は複数のタスクを遂行するものとして説明されてもよい。そのような説明は、「構成される」という句を含むものと解釈されねばならない。1つ以上のタスクを遂行するように構成されたユニット/回路/コンポーネントを表現する場合、そのユニット/回路/コンポーネントに関して35U.S.C.§112、第6節の解釈を引用しないことが明確に意図される。
【0011】
図1は、外部メモリ12及び1つ以上のフラッシュメモリ装置28A−28Bに結合された集積回路10の一実施形態を示すブロック図である。ここに示す実施形態では、集積回路10は、メモリコントローラ14と、相互接続ファブリック16と、コンポーネント18A−18Bのような周辺コンポーネントのセットと、フラッシュメモリインターフェイスユニット30と、中央DMA(CDMA)コントローラ20と、レベル1(L1)キャッシュ24、レベル2(L2)キャッシュ26を含むプロセッサ22と、入力/出力プロセッサ(I/O)プロセッサ(IOP)32と、を備えている。メモリコントローラ14は、メモリ12が結合されるメモリインターフェイスに結合されると共に、相互接続ファブリック16に結合される。CDMAコントローラ20、L2キャッシュ26及びプロセッサ22(L2キャッシュ26を経て)も、ここに示す実施形態では、相互接続ファブリック16に結合される。L2キャッシュ26は、プロセッサ22に結合され、そしてCDMAコントローラ20は、コンポーネント18A−18B、フラッシュメモリインターフェイスユニット30及びIOP32に結合される。1つ以上の周辺コンポーネント18A−18Bは、周辺コンポーネント18Aのような外部インターフェイスにも結合される。他の実施形態では、他のコンポーネントが相互接続ファブリック16に直結される(例えば、他の周辺コンポーネント)。
【0012】
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をプログラムすることは、レジスタに書き込みすることを含む。
【0013】
一般的に、DMA動作とは、インストラクションを実行するプロセッサとは個別のハードウェアにより遂行される、ソースからターゲットへのデータ転送である。ハードウェアは、プロセッサによって実行されるインストラクションを使用してプログラムされるが、転送それ自体は、プロセッサにおけるインストラクションの実行とは独立してハードウェアにより遂行される。ソース及びターゲットの少なくとも1つは、メモリである。メモリは、システムメモリ(例えば、メモリ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を通り、相互接続ファブリック16を経て、CDMAコントローラ20を通り、周辺コンポーネント18A−18B又はフラッシュメモリインターフェイスユニット30へ(及びもし該当する場合は、おそらく、周辺コンポーネントが結合されるインターフェイスへ)流れる。メモリへDMA書き込みするためのデータは、逆方向に流れる。
【0014】
一実施形態において、プロセッサ22及び/又はIOP32により実行されるインストラクションは、プログラムされた入力/出力(PIO)動作と称される読み取り及び/又は書き込み動作を使用して周辺コンポーネント18A−18B及びフラッシュメモリインターフェイスユニット30とも通信する。PIO動作は、集積回路10により周辺コンポーネント18A−18B又はフラッシュメモリインターフェイスユニット30(及びより詳細には、コンポーネント内のレジスタ又は他の読み取り可能/書き込み可能なリソース)へマップされるアドレスを有する。アドレスマッピングは、アドレススペースに固定されてもよいし、或いはプログラム可能であってもよい。或いは又、PIO動作は、メモリ読み取り/書き込み動作とは区別できる形態で送信されてもよい(例えば、相互接続ファイバ16におけるメモリ読み取り/書き込み動作とは異なるコマンドエンコーディングを使用して、又はメモリ対PIOを指示するための側波帯信号又はコントロール信号を使用して、等々)。PIO送信は、そのような実施のためにPIOアドレススペース内で周辺コンポーネント18A−18B又はフラッシュメモリインターフェイスユニット30(及びアドレスされたリソース)を識別するアドレスを依然含む。アドレスされたリソースは、コンフィギュレーション又はコントロールレジスタ、論理的リソース(例えば、PIOは、コマンドとして解釈される)、等の、アドレスされたコンポーネント/ユニット内のリソースである。
【0015】
一実施形態において、PIO動作は、CDMAコントローラ20と同じ相互接続を使用し、周辺コンポーネント18A−18B及びフラッシュメモリインターフェイスユニット30のためにCDMAコントローラ20を通して流れる。従って、PIO動作は、プロセッサ22により、(この実施形態ではL2キャッシュ26を通して)相互接続ファブリック16を経て、CDMAコントローラ20、及びターゲットとする周辺コンポーネント/フラッシュメモリインターフェイスユニットへ発生される。同様に、PIO32は、PIO動作をCDMAコントローラ20へ発生し、該コントローラは、同じ相互接続を経て周辺コンポーネント18A−18B又はフラッシュメモリインターフェイスユニット30へPIO動作を送信する。
【0016】
従って、周辺コンポーネント18A−18B又はフラッシュメモリインターフェイスユニット30への/からのDMA動作のためのデータ転送が、同じ周辺コンポーネント18A−18B又はフラッシュメモリインターフェイスユニット30への/からのPIO動作と競合することがある。例えば、フラッシュメモリインターフェイスユニット30は、フラッシュメモリ装置28A−28Bへの/からのメモリ転送を遂行するためにPIO動作を経てプログラムされる。書き込み動作については、CDMAコントローラ20は、フラッシュメモリインターフェイスユニット30へ書き込まれるべきデータのDMAを行う。読み取り動作については、CDMAコントローラ20は、フラッシュメモリインターフェイスユニット30から読み取られるべきデータのDMAを行う。一実施形態では、フラッシュメモリ装置28A−28Dは、装置への/装置からの1ページのデータ転送をサポートする。ページのサイズは、装置に依存し、メモリ12のためのバーチャル対物理的アドレス変換に使用されるページサイズと同じでなくてもよい。例えば、512バイト、2048バイト及び4096バイトのページサイズがしばしば使用される。従って、この点について、ページとは、メモリ装置のためのデータ転送の単位である。
【0017】
フラッシュメモリインターフェイスユニット30は、1ページのデータ転送を遂行するようにプログラムされ、そしてCDMAユニット20は、データを転送するためのDMA動作を遂行する。複数のページを転送すべき場合には、付加的なPIO動作を使用して、次の転送を行うようにフラッシュメモリインターフェイスユニット30をプログラムすることができる。しかしながら、DMA動作は、現在ページが完了するまで付加的なPIO動作を実際上締め出す。従って、次のページのためにフラッシュメモリインターフェイスユニット30をプログラムする間に経過する時間は、フラッシュメモリ装置へのインターフェイスにアイドル時間を生じさせる。
【0018】
更に、DMA転送が開始され、次いで、IC10では、よりプライオリティの高いデータ転送が必要となる。例えば、フラッシュメモリインターフェイスユニット30については、進行中のDMA転送がアプリケーションによって開始され、次いで、オペレーティングシステムは、ページ欠陥を満足するために、フラッシュメモリ28A−28Bへデータをページアウトするか又はフラッシュメモリ28A−28Bからデータを読み取ることが必要となる。或いは又、バックグラウンドで実行中のアプリケーションがDMA転送を開始し、そしてアクティブに使用される(フォアグラウンドの)アプリケーションは、転送を遂行することが必要となる。別の例では、アプリケーションにプライオリティが指定される。更に別の例では、IC10のハードウェアは、フラッシュメモリ28A−28Bへのアクセスを必要とし、ソフトウェアアクセスより高いプライオリティとなる。
【0019】
一実施形態において、フラッシュメモリインターフェイスユニット30は、複数のコマンドキューをサポートする。転送されるべきページのセットに対してフラッシュメモリインターフェイスユニット30をプログラムするためのコマンドは、コマンドキューの1つにキューイングされる。第1ページのDMA動作が開始すると、その後のページに対してフラッシュメモリインターフェイスユニット30をプログラムするためのデータがコマンドキューに予め記憶される。従って、フラッシュメモリインターフェイスユニット30をプログラムするためのPIO動作と、データを転送するためのDMA動作との間に競合が生じることはない。CDMAユニット30が現在ページに対するDMA動作を完了する間に転送されるべき次のページに対してフラッシュメモリコントローラ30を構成するようにコマンドキューからのコマンドを処理できるためにフラッシュメモリ装置28A−28Bへのインターフェイスの利用性を高めることができる。
【0020】
更に、コマンドキューには、プライオリティが関連付けられる。例えば、2つのキューが含まれ、一方は、プライオリティの低いキューであり、他方は、プライオリティの高いキューである。フラッシュメモリインターフェイスユニット30は、処理されるべきコマンドが高プライオリティキューにある場合に低プライオリティキューのコマンドの処理に割り込むように構成される。従って、プライオリティの高い転送が、プライオリティの低い転送に割り込む。1つの実施形態では、低プライオリティキューは、割り込みが許されるコマンドストリームにおける位置を識別する1つ以上の指示を含む。それらの指示は、コマンド内の「良好な」場所(例えば、ページの終わり、同期ポイント、等)で割り込みが生じるように保証する。即ち、コマンドが高プライオリティキューに書き込まれる時間に低プライオリティキューで行われていた動作が完了され、従って、それらの動作は、高プライオリティ処理が終了した後に再び遂行される必要はない。一実施形態において、キューは、高プライオリティ又は低プライオリティとしてスタティックに指定される。他の実施形態では、プライオリティは、プログラム可能である。
【0021】
一実施形態において、フラッシュメモリインターフェイスユニット30は、1つ以上のマクロを記憶するためにマクロメモリをサポートする。マクロとは、マクロコマンドを経て呼び出される2つ以上のコマンドのシーケンスである。例えば、マクロコマンドは、コマンドキューの1つに書き込まれ、そしてフラッシュメモリインターフェイスユニット30によりマクロコマンドが遂行されるときにマクロを呼び出す。頻繁に使用されるコマンドシーケンスを実施するマクロがマクロメモリにダウンロードされ、従って、後でダウンロードされる必要のあるコマンドは僅かである。即ち、マクロに記憶されるコマンドを繰り返し書き込むのではなく、マクロコマンドがコマンドキューに書き込まれる。一実施形態では、マクロコマンドは、マクロのスタートアドレス及びマクロにおけるワード数を指定する。その数のワードがマクロから読み取られ、そしてそれに対応するコマンドが遂行されると、そのマクロコマンドの後の対応コマンドキューにおける次のコマンドが遂行される。従って、マクロにおいてリターンコマンドが回避され、一実施形態ではより濃密なマクロが許される。他の実施形態では、スタートアドレス及びコマンドの数がオペランドとして使用される。更に別の実施形態では、リターンコマンドが実施され、そしてマクロコマンドは、スタートアドレス(ワード/コマンドカウントではない)をオペランドとして含む。一実施形態では、マクロコマンドは、ループカウントオペランドも含む。ループカウントオペランドは、遂行されるべきマクロの繰り返し数を指定する。従って、マクロコマンドを遂行することは、スタートアドレスで始めてその数のワードを読み取り、そしてコマンドを遂行し、これをループカウント回数繰り返した後に、マクロコマンド後のコマンドシーケンスにおける次のコマンドで処理を行うことを含む。
【0022】
コマンドキューにおけるコマンド及び/又はマクロメモリにおけるコマンドは、オペランドを使用してそれらの動作をコントロールする。あるケースでは、オペランドは、それに対応するコマンドキューに記憶される。他のケースでは、オペランドは、オペランドキューに記憶される。コマンドキュー又はマクロメモリにおけるコマンドは、フラッシュメモリインターフェイスユニット30がオペランドキューからオペランドをロードしそしてオペランドに基づいて動作することを指定する。オペランドキューは、一般的マクロのためのインスタンス特有データ(例えば、フラッシュメモリアドレス、チップイネーブル、等)を供給するためにマクロと共に使用される。同様に、オペランドキューは、コマンドキューにおけるコマンドのためのオペランドを供給する。
【0023】
ここで使用するメモリ転送とは、(メモリ装置に対するインターフェイスを経て)メモリ装置へ/からデータを転送することを指す。従って、フラッシュメモリ装置28A−28Bへの/からのメモリ転送は、フラッシュメモリ装置28A−28Bとフラッシュメモリインターフェイスユニット30との間のインターフェイスを経て行われる。同様に、メモリ12への/からのメモリ転送は、メモリ12とメモリコントローラ14との間のインターフェイスを経て行われる。メモリ転送は、メモリ装置により定義されたプロトコルを使用して行われる。更に、コマンドは、周辺コンポーネントのハードウェア(例えば、フラッシュメモリインターフェイスユニット30)によりハードウェアで遂行される特定の動作を指定するものとして解釈される1つ以上のデータバイトを指してもよい。
【0024】
一般的に、周辺コンポーネントは、プロセッサと共に集積回路10に含まれるべき望ましい回路である。周辺コンポーネントは、集積回路10の他のコンポーネントがその周辺コンポーネントと通信できるようにする定義された機能及びインターフェイスを有する。例えば、周辺コンポーネントは、ディスプレイコントローラ、グラフィックプロセッサ、等のビデオコンポーネントと;デジタル信号プロセッサ、ミクサ、等のオーディオコンポーネントと;イーサネット(登録商標)メディアアクセスコントローラ(MAC)又はワイヤレスフィデリティ(WiFi)コントローラと;種々のインターフェイス、例えば、ユニバーサルシリアルバス(USB)、周辺コンポーネント相互接続(PCI)、又はその変形、例えば、PCIエクスプレス(PCIe)、シリアル周辺インターフェイス(SPI)、フラッシュメモリインターフェイス、等を経て通信するためのコントローラと、を含む。フラッシュメモリインターフェイスユニット30は、周辺コンポーネントの一例であり、ここに述べる周辺コンポーネントの一般的な特性は、フラッシュメモリインターフェイスユニット30に適用することができる。
【0025】
プロセッサ22は、インストラクションセットアーキテクチャーを実施し、そしてそのインストラクションセットアーキテクチャーに定義されたインストラクションを実行するように構成される。プロセッサ22は、スカラー、スーパースカラー、パイプライン、スーパーパイプライン、無秩序、秩序、推論的、非推論的、等、又はその組み合わせを含むマイクロアーキテクチャーを使用する。プロセッサ22は、回路を含み、そして任意であるが、マイクロコーディング技術を実施する。ここに示す実施形態では、プロセッサ22は、該プロセッサ22により使用されるデータ及びインストラクションを記憶するためのL1キャッシュ24を備えている。個別のL1データ及びインストラクションキャッシュがある。L1キャッシュは、任意の容量及び編成(セット連想、直接マップ、等)を有するものでよい。ここに示す実施形態では、L2キャッシュ26も設けられる。L2キャッシュ26は、L1キャッシュと同様に、任意の容量及び編成を有するものでよい。
【0026】
同様に、IOP32は、インストラクションセットアーキテクチャーを実施し、そしてそのインストラクションセットアーキテクチャーで定義されたインストラクションを実行するように構成される。IOP32により実施されるインストラクションセットアーキテクチャーは、プロセッサ22により実施される同じインストラクションセットアーキテクチャーである必要はない。一実施形態では、IOP32は、プロセッサ22より低電力、低性能のプロセッサである。IOP32は、種々のI/Oインターフェイス問題を取り扱う(望ましい動作、あるエラー処理、等を遂行するように周辺コンポーネントを構成する)。IOP32は、フラッシュメモリインターフェイスユニット30のコマンドキューにコマンドを書き込み、フラッシュメモリインターフェイスユニット30のマクロメモリにマクロを書き込み、及び/又はフラッシュメモリインターフェイスユニット30のオペランドキューにオペランドを書き込むためのインストラクションを実行する。更に、IOP32は、他の周辺コンポーネント18A-18Bにサービスするためのインストラクションも実行する。従って、プロセッサ22は、他のコンピューティングタスクを遂行してもよいし、又は遂行すべき他のコンピューティングタスクがない場合には電力を保存するためにパワーダウンされてもよい。IOP32は、スカラー、スーパースカラー、パイプライン、スーパーパイプライン、無秩序、秩序、推論的、非推論的、等、又はその組み合わせを含むマイクロアーキテクチャーを使用する。IOP32は、回路を含み、そして任意であるが、マイクロコーディング技術を実施する。
【0027】
相互接続ファブリック16は、これを経て、メモリコントローラ14、プロセッサ22(L2キャッシュ26を通して)、L2キャッシュ26、及びCDMAコントローラ20が通信を行えるようにする相互接続部である。相互接続ファブリック16は、任意の形式の相互接続部(例えば、バス、パケットインターフェイス、ポイント対ポイントリンク、等)を実施する。一実施形態において、相互接続ファブリック16は、相互接続部のハイアラーキーである。例えば、プロセッサ22及びキャッシュ24、26は、コヒレントポート及びメモリコントローラ14へのポートを含む「コアコンプレックス」において実施される。CDMAコントローラ20は、コヒレントポートに結合される。ある実施形態では、メモリコントローラ14は、マルチポート型である。そのようなある実施形態では、CDMAコントローラ20は、メモリコントローラ14の個別ポートに結合される。そのような他の実施形態では、CDMAコントローラ20は、ACPポートを通して結合される。
【0028】
メモリコントローラ14は、システムインターフェイスユニット16からメモリ要求を受け取るように構成される。メモリコントローラ14は、取り付けられたメモリ12に対して定義されたインターフェイスを使用して、メモリ12にアクセスして、要求(書き込み要求については受け取ったデータをメモリ12に書き込み、又は読み取り要求に応答してメモリ12からのデータを与える)を完了させる。メモリコントローラ14は、任意の形式のメモリ12、例えば、ダイナミックランダムアクセスメモリ(DRAM)、同期DRAM(SDRAM)、倍データレート(DDR、DDR2、DDR3、等)SDRAM、RAMBUS DRAM(RDRAM)、スタティックRAM(SRAM)、等とインターフェイスするように構成される。メモリは、複数のメモリバンク、例えば、デュアルインラインメモリモジュール(DIMM)、シングルインラインメモリモジュール(SIMM)、等として配置される。一実施形態では、1つ以上のメモリチップが、パッケージオンパッケージ(POP)又はチップオンチップ(COC)構成で集積回路10に取り付けられる。
【0029】
メモリ12は、1つ以上のメモリ装置を含む。一般的に、メモリ装置は、書き込み動作ではデータが与えられるアドレスに基づいてデータを記憶し、そしてそのアドレスが読み取り動作に使用されるときにはそのデータを供給するように設計された任意のコンポーネントである。上述したメモリ形式は、例えば、メモリ装置で実施され、そしてフラッシュメモリ装置28A−28Bもメモリ装置でよい。メモリ装置は、プリント回路板のような基板に接続されるチップ、マルチチップ(例えば、SIMM又はDIMMであるか、又はIC10が結合される回路板に直結される)、等である。
【0030】
フラッシュメモリインターフェイスユニット30は、フラッシュメモリ装置28A−28Bに対する読み取り及び書き込み要求を受け取るように構成されると共に、フラッシュメモリ装置28A−28Bにインターフェイスして読み取り/書き込み要求を完了するように構成された回路を含む。一実施形態では、読み取り/書き込み要求がCDMAコントローラ20から供給される。フラッシュメモリインターフェイスユニット30は、(例えば、PIO動作を経て)フラッシュメモリ装置28A−28Bへの/からのメモリ転送を遂行するために1つ以上のコントロールレジスタ(以下に説明する図2を参照)を経てプログラムすることができる。フラッシュメモリ装置28A−28Bは、この技術でよく知られた不揮発性メモリの一形式であるフラッシュメモリである。他の実施形態では、他の形態の不揮発性メモリが使用される。例えば、バッテリ支援型SRAM、種々の形式のプログラマブルROM、例えば、電気的に消去可能なプログラマブルROM(EEPROM)、等が使用されてもよい。更に別の実施形態では、メモリ12と同様の揮発性メモリが使用される。
【0031】
この実施形態は、フラッシュメモリインターフェイスユニット30にコマンドキュー(FIFO)、マクロメモリ、及び/又はオペランドキュー(FIFO)を使用して説明するが、他の実施形態では、周辺コンポーネントにおける特徴が、任意の形式のメモリ又は周辺インターフェイスで実施されてもよい。
【0032】
他の実施形態は、図1に示すコンポーネント及び/又は他のコンポーネントのサブセット又はスーパーセットを含めて、コンポーネントの他の組み合わせを含んでもよいことに注意されたい。所与のコンポーネントの一例が図1に示されたが、他の実施形態は、所与のコンポーネントの1つ以上の例を含んでもよい。
【0033】
図2は、フラッシュメモリインターフェイスユニット30の一実施形態のブロック図である。ここに示す実施形態では、フラッシュメモリインターフェイスユニット30は、低プライオリティ(LP)コマンドFIFO40と、高プライオリティ(HP)コマンドキュー41と、フラッシュメモリインターフェイス(FMI)コントロール回路42と、マクロメモリ44と、オペランドFIFO46と、フラッシュメモリコントローラ(FMC)48と、レジスタ51を含むFMCコントロールレジスタ50のセットと、データバッファ52A−52Bと、エラーチェック/修正(ECC)ユニット54とを備えている。コマンドFIFO40及び41、FMIコントロール回路42、マクロメモリ44、オペランドFIFO46、及びバッファ52A−52Bは、全て、CDMAコントローラ20に対する内部インターフェイスに結合される。FMIコントロール回路42は、更に、コマンドFIFO40及び41、マクロメモリ44、オペランドFIFO46、及びFMCコントロールレジスタ50に結合される。FMCコントロールレジスタ50は、更に、FMC48に結合され、これは、フラッシュメモリ装置への外部インターフェイスに結合される。FMC48は、更に、バッファ52A−52Bに結合される。ECCユニット54もバッファ52A−52Bに結合される。
【0034】
FMIコントロール回路42は、CDMAコントローラ20からPIO動作を受け取るように構成される。コマンドFIFO40及び41、マクロメモリ44、又はオペランドFIFO46に幾つかのPIO動作が向けられる。例えば、コマンドFIFO40又は41にコマンドを書き込み、マクロメモリ44にマクロをダウンロードし、又はオペランドFIFO46にオペランドを書き込むために、PIO書き込みが使用される。FIFO40及び41、マクロメモリ44、及びオぺランドFIFO46の各々にアドレスが指定され、これは、望ましいリソースをアドレスするためにPIOオペランドに使用されるものである。例えば、FIFO40、41及び46は、先入れ先出し的に動作するので単一のアドレスが指定されている。アドレスへのPIO書き込みは、FMIコントロール回路42が、書き込みで与えられるデータを、FIFO40、41又は46における次のオープンエントリに記憶するようにさせる。即ち、データがFIFO40、41又は46の末尾に添付され、ここで、FIFO40、41又は46の頭部からコマンド又はオペランドが除去される。マクロメモリ44には、ある範囲のアドレス、例えば、マクロメモリ44のワード当たりのアドレスが指定される。アドレスへのPIO書き込みは、与えられたデータワードを、マクロメモリ44のアドレスされたワードに記憶する。
【0035】
FMIコントロール回路42は、コマンドFIFO40又は41内のコマンドを処理して、フラッシュメモリ装置28A−28Bへの/からの特定のメモリ転送をFMC48に遂行させるように種々のFMCコントロールレジスタ50をプログラムする。一実施形態において、FMC48は、アドレス、チップイネーブル、転送コマンド、等を含めて、FMCコントロールレジスタ50を経て比較的低レベルのコントロールを受け取るように構成される。コマンドFIFO40及び41内のコマンドは、FMIコントロール回路42により解釈され、そしてそれに対応するFMCコントロールレジスタ50は、FMIコントロール回路42により書き込まれる。同様に、1つ以上のFMCコントロールレジスタ50を読み取って事象を検出するために、ある事象を待機するコマンドがFMIコントロール回路42により解釈される。又、コマンドに応答してFMIコントロール回路42により駆動され及び/又はコマンドに応答してFMIコントロール回路42により監視されるある実施形態(図2には示さず)では、FMIコントロール回路42とFMC48との間に直接的なコントロール信号も存在する。
【0036】
FMIコントロール回路42は、コマンドFIFO40又は41からコマンドを、そのFIFOに書き込まれた順序で読み取るように構成される。より一般的には、コマンドキューがサポートされる(例えば、コマンドFIFO40及び41は、特にFIFOとして構成されなくてもよく、キューの各エントリーがFMIコントロール回路42に同時に見えるようにしてもよい)。同様に、オペランドFIFO46は、オペランドキューでもよく、そしてFMIコントロール回路42は、コマンドキュー又はマクロメモリ44内のコマンドに応答してオペランドFIFO46からオペランドを、それらオペランドが書き込まれた順序で読み取ってもよい。
【0037】
両FIFO40及び41が空であり、そしてコマンドがLPコマンドFIFO40に書き込まれる場合には、FMIコントロール回路42は、LPコマンドFIFO40からコマンドを読み取ってそのコマンドを実行する。FMIコントロール回路42がLPコマンドFIFO40からのコマンドを処理している間にコマンドがHP FIFO41に書き込まれる場合には、FMIコントロール回路42は、FIFO41からのコマンドの処理を開始するためにFIFO40からのコマンドの処理に割り込むべきポイントを決定する。図2において、この実施形態のためにLPコマンドFIFO40における多数のエントリーが示されている。この実施形態では、LPコマンドFIFO40の各エントリーは、コマンドの記憶部をイールド(yield)ビット(Y)と共に含む。このイールドビットが所与のコマンドに対してセットされた場合には、その所与のコマンドが処理された後にコマンドの処理に割り込みがなされる。イールドビットがクリアされた場合には、処理への割り込みがなされない。イールドビットは、LPコマンドFIFO40へのPIO書き込みに対するPIOデータの一部分である。他の実施形態では、他の指示が使用される(例えば、セット及びクリア状態に対して逆の意味をもつビット)。更に、他の実施形態は、FIFO40内の個別のコマンドを使用して、割り込み可能性を指示する。即ち、FIFO41からのコマンドがある場合にそのようなコマンドを処理するためにFIFO40からの処理にFMIコントロール回路42が割り込むのを許すことがその動作であるコマンドが定義される。FIFO41における処理を待機しているコマンドがない場合には、FIFO40の処理は、次のコマンドで続けられる。
【0038】
HPコマンドFIFO41内のコマンドを処理するためにLPコマンドFIFO40内のコマンドの処理に割り込むのに応答して、FMIコントロール回路42は、この実施形態では、レジスタ51内のHPEビットをセットするように構成される。HPEビットがセットされると、FMIコントロール回路42は、HPコマンドFIFO41からのコマンドがもしあれば処理するが、LPコマンドFIFO40からのコマンドはHPEビットがクリアされるまで処理しないように構成される。FMIコントロール回路42は、HPEビットをクリアせず、むしろ、ソフトウェアがレジスタ51に書き込みを行うことによりそれを行う。このように、ソフトウェアがコマンドFIFO41をいっぱいにし終える前にFMIコントロール回路42がHPコマンドFIFO41を空にする場合には(例えば、ソフトウェアの割り込み、フラッシュメモリインターフェイスユニット30へコマンドを送信する際の遅延、等のために)、FMIコントロール回路42は、LPコマンドFIFO40からのコマンドの処理に永久的に戻ることはない。更に、コマンドの高プライオリティシーケンスが完了すると、ソフトウェアは、LPコマンドFIFO40を読み取って、コマンドの低プライオリティシーケンスのどこで割り込まれたか決定する。
【0039】
ある実施形態では、ソフトウェアは、レジスタ51に書き込みを行ってHPEビットをセットする。そのようにすることで、FMIコントロール回路42は、(Yビットで指示される)次の境界においてLPコマンドFIFO40の処理に割り込む。このような動作で、ソフトウェアは、LPコマンドFIFO40の処理を停止することができ、そしてソフトウェアは、LPコマンドFIFO40の状態を検査することができるようにされる。同様に、ソフトウェアは、待機コマンド(又はフラッシュメモリインターフェイス30又はコントロールレジスタ50のコンフィギュレーションを変化させることない他のコマンド)をHPコマンドFIFO41に書き込み、これは、FMIコントロール回路42が、適当なポイントにおいてLPコマンドFIFO40からのコマンドの処理に割り込むようにさせる。
【0040】
上述したように、マクロコマンドは、コマンドFIFO40又は41の一方にあり、そしてFMIコントロール回路42は、マクロコマンドに応答してマクロメモリ44からのコマンドを実行する。他の実施形態では、マクロコマンドは、PIO動作としてFMIコントロール回路42へ送信される。更に別の実施形態では、コマンドFIFO40又は41、或いはPIO動作においてマクロコマンドに遭遇する。マクロコマンドは、マクロメモリにおけるスタートアドレスと、マクロメモリ44から読み取るべきワードの数を指示するワードカウントとを含む。FMIコントロール回路42は、マクロのコマンドを、それに対応するコマンドFIFO40又は41における次のコマンド(マクロコマンドに続く)を読み取る前に、実行する。マクロのワードは、一実施形態では、コマンドに加えてオペランドを含む。他の実施形態では、ワードカウントではなくコマンドカウントが使用される。上述したように、マクロコマンドは、ループカウントも含み、マクロは、ループカウントで指示された回数、繰り返される。
【0041】
コマンドFIFO40及び41から及びオペランドFIFO46からワードを読み取ることは、FMIコントロール回路42がFIFOからのこれらのワードを削除することを含む。他方、マクロメモリ44からワードを読み取ることは、マクロを繰り返し実行できるようにワードの削除を含まない。
【0042】
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データをチェックする。
【0043】
図3は、CDMAコントローラ20からPIO動作を受け取るのに応答して行われるFMIコントロール回路42の一実施形態の動作を示すフローチャートである。理解を容易にするためにブロックが特定の順序で示されているが、他の順序を使用してもよい。ブロックは、FMIコントロール回路42の組み合わせロジックにおいて並列に遂行されてもよい。例えば、図3に示す判断ブロックは、独立したものであり、並列に遂行されてもよい。ブロック、ブロックの組み合わせ、及び/又はフローチャートは、全体として、複数のクロックサイクルにわたりパイプライン化される。FMIコントロール回路は、図3に示す動作を実施するように構成される。
【0044】
PIO書き込みがLPコマンドFIFO40にアドレスされる場合には(判断ブロック60、「イエス」岐路)、FMIコントロール回路42は、LPコマンドFIFO40の次のエントリーをPIO書き込みからのデータで更新するように構成される(ブロック62)。即ち、PIO書き込みからのデータがLPコマンドFIFO40の末尾に添付される。上述したように、この実施形態のPIOデータは、コマンド及びイールドビットである。PIO書き込みがHPコマンドFIFO41にアドレスされる場合には(判断ブロック61、「イエス」岐路)、FMIコントロール回路42は、HPコマンドFIFO41の次のエントリーをPIO書き込みからのデータで更新するように構成される(ブロック63)。即ち、PIO書き込みからのデータがHPコマンドFIFO41の末尾に添付される。上述したように、この実施形態のPIOデータは、コマンドである。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)。
【0045】
図4は、フラッシュメモリインターフェイスユニット30、特に、FMIコントロール回路42の一実施形態によりサポートされる規範的なコマンドセットを示すテーブルである。他の実施形態は、図4に示すコマンドのサブセット、コマンド及び他のコマンドのサブセット、及び/又はコマンド及び他のコマンドのスーパーセットを含めて、コマンドの他のセットをサポートする。このテーブルは、各コマンドを示す「コマンド」欄、所与のコマンドに対するオペランドを示す「オペランド」欄、及びコマンドにより占有されるコマンドFIFO40又は41におけるワードの数を示す「ワード」欄を含む。
【0046】
コマンドのフォーマットは、実施形態ごとに変化する。例えば、一実施形態では、各コマンドは、コマンドセット内のコマンドを識別するopcodeバイトを含む(即ち、テーブル76における各エントリーは、異なるopcodeエンコーディングを経て識別される)。コマンドを形成するワード(1つ又は複数)内の残りのバイトは、コマンドに対するオペランドを指定するのに使用される。コマンドは、種々の実施形態において、コマンドFIFO40又は41或いはマクロメモリ44に記憶される。
【0047】
アドレスコマンド(テーブル76のaddr0ないしaddre7)は、フラッシュメモリ装置28A−28Bへのインターフェイス(より簡潔に、フラッシュメモリインターフェイスと称される)にアドレスバイトを発生するのに使用される。「addr」の後の数字は、フラッシュメモリインターフェイスのアドレスのバイト0でスタートして、送信されるアドレスバイトの数を指示する。FMIコントロール回路42は、一実施形態において、次のコマンドを実行する前にアドレスバイトが送信されるまで休止するように構成される。addrXコマンドは、一実施形態において次のFMCコントロールレジスタ50、即ち1つ以上のアドレスレジスタをアドレスバイトでプログラミングし、そして1つ以上のレジスタに転送数及び読み取り/書き込みモードをプログラミングするのと同等である。読み取り/書き込みモードに応答して、FMC48は、フラッシュメモリインターフェイスを経てアドレスバイトを送信し、FMCコントロールレジスタ50内の状態レジスタにおけるアドレス終了割り込みを信号する。更に、addrXコマンドは、状態レジスタにおけるアドレス終了割り込みを待機しそしてクリアすることを更に含む。addr0コマンドは、そのアドレスレジスタにおけるaddr1ないしaddr7コマンドとは異なり、そしてアドレス転送数レジスタは、プログラムされない。むしろ、これらのレジスタは、以下に述べるload_next_word又はload_from_fifoコマンドのような他のコマンドを使用して事前にプログラムされる。
【0048】
cmdコマンドは、フラッシュメモリインターフェイスを経てフラッシュメモリインターフェイスコマンドを送出するのに使用される。一実施形態において、フラッシュメモリインターフェイスコマンドは1バイトである。従って、cmdコマンドのオペランドは、フラッシュメモリインターフェイスを経て送信されるコマンドバイトである。FMIコントロール回路42は、フラッシュメモリインターフェイスにおいてcmdコマンドが完了するまで休止するように構成される。cmdコマンドは、FMCコントロールレジスタ50のコマンドレジスタをコマンドバイトでプログラミングし、別のFMCコントロールレジスタ50においてコマンドモードビットをセットし、そしてFMCコントロールレジスタ内の状態レジスタにおいてcmd終了割り込みを待機し及びクリアすることと同等である。コマンドモードビットをセットするのに応答して、FMC48は、フラッシュメモリインターフェイスを経てコマンドバイトを送信するように構成され、そして状態レジスタにcmd終了割り込みを書き込む。
【0049】
enable_chipコマンドは、FMCコントロールレジスタ50のチップイネーブルレジスタに書き込みするのに使用され、FMC48がチップイネーブルオペランドに基づいてフラッシュメモリインターフェイスにおいてチップイネーブル信号を駆動するようにさせる。
【0050】
xfer_pageコマンドは、フラッシュメモリ装置28A−28Bへの/からのページ転送を開始するのに使用される。xfer_pageコマンドに応答して、FMIコントロール回路42は、FMCコントロールレジスタ50においてスタートビットをセットし、そして別のFMCコントロールレジスタ50においてページ終了割り込みビットを待機し及びクリアするように構成される。スタートビットに応答して、FMC48は、特定のページ転送を遂行し、そして完了時にページ終了割り込みをセットするように構成される。
【0051】
FMIコントロール回路42により種々の同期コマンドがサポートされる。一般的に、同期コマンドは、FMIコントロール回路42が監視すべき事象を指定するのに使用され、そして次のコマンドの実行の前にFMIコントロール回路42が事象の発生を待機する(即ち、FMIコントロール回路42が事象を検出するまで待機する)ようにさせる。従って、同期コマンドは、コマンドのシーケンスを事前にプログラムできるようにし、又、同期コマンドは、正しいタイミングを保証する上で助けとなる。例えば、複数ページ転送を事前にプログラムし、そして同期コマンドを使用して、次のページに対するFMCコントロールレジスタ50のプログラミングを、レジスタが現在ページに対してもはや必要でなくなるまで(例えば、ページからの最後のデータが読み取りのためにバッファ52A−52Bへロードされた後)遅延することができる。
【0052】
図4の実施形態では、同期コマンドは、wait_for_rdy、休止、timed_wait、及びwait_for_intを含む。wait_for_rdyコマンドは、ページ転送中にフラッシュメモリ装置28A−28Bの状態を監視するのに使用される。wait_for_rdyコマンドは、FMCコントロールレジスタ50の状態レジスタにおける特定の「終了(done)」割り込み(例えば、ページ終了)を待機し及びクリアし、状態レジスタ内の状態バイトをマスクオペランドでマスクし、そしてそのマスクされた状態バイトを条件オペランドと比較することを含む。マスクされた状態バイトが条件オペランドに一致する場合には、FMIコントロール回路42は、次のコマンドを遂行するように構成される。さもなければ、FMIコントロール回路42は、割り込みを信号し(例えば、種々の実施形態では、IOP32又はプロセッサ22へ)、そしてIOP32/プロセッサ22が割り込みにサービスするまで付加的なコマンドの実行を停止する。
【0053】
pauseコマンドは、FMIコントロール回路42によりコマンドの実行を休止するように使用される。FMIコントロール回路42は、IOP32/プロセッサ22で実行されるソフトウェアがFMCコントロールレジスタ50の1つに指定のイネーブルビットを書き込むことにより特別に非休止とされるまでコマンドの実行を休止する。
【0054】
FMIコントロール回路42は、休止を行いそしてtimed_waitコマンドを経てある数のクロックサイクルの後に再開を行うように構成される。クロックサイクルの数は、timed_waitコマンドのオペランドとして指定される。ある実施形態では、timed_waitコマンドは、フラッシュメモリインターフェイスユニット30を低速化するのに使用される。というのは、コマンドFIFO40、マクロメモリ44、及びオペランドFIFO46を使用して可能となる性能が、フラッシュメモリ装置28A−28Bによりアクティビティが遂行されるレートを越えるからである。
【0055】
wait_for_intコマンドは、FMIコントロール回路42に指定割り込み値を待機させるように使用される。オペランドは、「ビット」オペランドを使用して、待機すべき割り込み(irq)及び待機すべきirqビットの状態(例えば、セット又はクリア)を指定する。
【0056】
send_interruptコマンドは、指定の割り込みをIOP32又はプロセッサ22へ送信するのに使用される。send_interruptコマンドのオペランドは、FMCコントロールレジスタ50の割り込みコードレジスタに書き込むべき割り込みコードを指定し、これは、割り込みを送るようにさせるものである。
【0057】
load_next_word及びload_from_fifoコマンドは、FMCコントロールレジスタ50の種々のレジスタをプログラムするのに使用される。これらコマンドのオペランドの1つは、書き込まれるコントロールレジスタのレジスタアドレスである。load_next_wordコマンドに応答して、FMIコントロール回路42は、コマンドFIFO40から次のワードを読み取り、そしてそのワードをアドレスされたレジスタに書き込む。load_from_fifoコマンドに応答して、FMIコントロール回路42は、オペランドFIFI46の頭部においてワードを読み取り、そしてそのワードをアドレスされたレジスタに書き込むように構成される。
【0058】
macroコマンドは、FMIコントロール回路42がマクロメモリ44からコマンドを読み取るようにさせるのに使用される。macroコマンドは、アドレスオペランド、長さオペランド、及びループカウントオペランドを含む。アドレスは、マクロメモリ44から読み取られるべき第1のワードを識別し、そして長さは、macroの長さを識別する(例えば、コマンドの数又はワードの数に関して)。一実施形態では、長さは、ワードの数である。ループカウントは、実行されるべきmacroの繰り返し数を示す。一実施形態では、ループカウントオペランドは、繰り返し数より1つ小さい(例えば、0のループカウントは、1回の繰り返しであり、1のループカウントは、2回の繰り返しであり、等々)。macroが完了すると、次のコマンドFIFO42が読み取られる(即ち、macroにはリターンコマンドがない)。
【0059】
pollコマンドは、FMCコントロールレジスタ50内の任意のレジスタを指定の値に対してポーリングする(マスクフィールドを使用してレジスタから読み取った値をマスクした後に)。FMIコントロール回路42は、指定値が検出されるまでレジスタをポーリングし、次いで、次のコマンドへ進む。
【0060】
上述したように、FMIコントロール回路42は、あるコマンドを遂行する一部分としてFMCコントロールレジスタ50内の1つ以上の状態レジスタに記録された種々の割り込みを監視する。FMIコントロール回路42は、割り込みをクリアし、そしてそれに対応するコマンドを完了する。コマンドFIFO40にコマンドがない場合には、割り込みがIOP32/プロセッサ22へ送られる(もしイネーブルされていれば)。従って、FMCコントロールレジスタ50へのPIO書き込み動作及びIOP32/プロセッサ22への割り込みは、フラッシュメモリ装置28A−28Bへの/からのメモリ転送を遂行する別のメカニズムである。
【0061】
図5は、LPコマンドキュー40からのコマンドを処理するためのFMIコントロール回路42の一実施形態の動作を示すフローチャートである。理解を容易にするためにブロックが特定の順序で示されているが、他の順序を使用してもよい。ブロックは、FMIコントロール回路42の組み合わせロジックにおいて並列に遂行されてもよい。ブロック、ブロックの組み合わせ、及び/又はフローチャートは、全体として、複数のクロックサイクルにわたりパイプライン化される。FMIコントロール回路42は、図5に示す動作を実施するように構成される。
【0062】
FMIコントロール回路42は、LPコマンドFIFO40からコマンドを読み取るように構成される(ブロック80)。コマンドがマクロコマンドでない場合には(判断ブロック82、「ノー」岐路)、FMIコントロール回路42は、コマンドを実行するように構成される(ブロック84)。コマンドが完了し、イールド(Y)ビットがセットされ、そしてHPコマンドキュー41に有効なコマンドがある場合には(判断ブロック85、「イエス」岐路)、FMIコントロール回路42は、レジスタ51にHPEビットをセットし、そしてHPコマンド処理(例えば、図6)へ退出するように構成される(ブロック87)。同様に、ある実施形態では、FMIコントロール回路42は、(例えば、ソフトウェアがレジスタ51に書き込みすることにより)HPEビットがセットされるのに応答してHPコマンド処理へ退出する(又は少なくとも低プライオリティ処理を中止する)ように構成される。さもなければ(判断ブロック84、「ノー」岐路)、FMIコントロール回路42は、マクロがその終了に到達したかどうか決定するのに使用されるワードカウントをチェックするように構成される。コマンドがマクロの一部分でない場合には、ワードカウントがゼロとなる(判断ブロック86、「ノー」岐路)。FMIコントロール回路42は、マクロコマンドに関連したループカウントをチェックするように構成される。コマンドがマクロの一部分でない場合には、ループカウントがゼロとなる(判断ブロック95、「ノー」岐路)。FMIコントロール回路42は、コマンドFIFO40に別の有効なコマンドがあるかどうか決定するように構成される(判断ブロック88)。即ち、FMIコントロール回路42は、コマンドFIFO40が空であるかどうか決定するように構成される。別の有効なコマンドがある場合には(判断ブロック88、「イエス」岐路)、FMIコントロール回路42は、次のコマンドを読み取って処理するように構成される。さもなければ、FMIコントロール回路42のコマンド処理回路は、別の有効なコマンドがコマンドFIFO40に書き込まれるまでアイドル状態である(判断ブロック88、「ノー」岐路)。
【0063】
コマンドがマクロコマンドである場合には(判断ブロック82、「イエス」岐路)、FMIコントロール回路42は、ワードカウントをマクロコマンドの長さオペランドに初期化しそしてループカウントをマクロコマンドのループカウントオペランドに初期化するように構成される(ブロック90)。又、FMIコントロール回路42は、マクロメモリ44からコマンドを読み取る(ブロック92)。特に、このケースでは、FMIコントロール回路42は、マクロコマンドのアドレスオペランドとして与えられたマクロメモリ44内のアドレスから第1のワードを読み取る。FMIコントロール回路42は、コマンドを実行するように構成され(ブロック84)、そしてワードカウントをチェックするように構成される(このケースでは、Yビットがなく、従って、判断ブロック85は、「ノー」岐路となる)。ワードカウントは、ゼロより大きく(判断ブロック86、「イエス」岐路)、FMIコントロール回路42は、ワードカウントをデクリメントしそしてマクロメモリ44から次のコマンドを読み取るように構成される(例えば、アドレスをインクリメントすることにより)(ブロック94及び96)。FMIコントロール回路42は、次のコマンドを処理するように構成される(図5のフローチャートの判断ブロック82へ戻る)。ワードカウントがゼロである場合には(判断ブロック86、「ノー」岐路)、FMIコントロール回路42は、ループカウントをチェックするように構成される。ループカウントがゼロより大きい場合には(判断ブロック95、「イエス」岐路)、マクロの別の繰り返しを行うべきである。FMIコントロール回路42は、ループカウントをデクリメントし(ブロック97)、ワードカウント及びマクロアドレスを再初期化し(ブロック99)、そしてマクロメモリ44から次のコマンド(即ち、マクロの第1コマンド)を読み取る(ブロック96)。ワードカウント及びループカウントの両方がゼロである場合には(判断ブロック86及び95、「ノー」岐路)、マクロが完了し、そしてFMIコントロール回路42は、コマンドキュー40における次の有効コマンドについてチェックする(判断ブロック88)。
【0064】
各コマンドがマクロコマンドについてチェックされるので、マクロコマンドもマクロメモリ44に記憶されることに注意されたい。従って、マクロは、「ネスト化」されるが、実行されるべき最後のマクロは、コマンドFIFO40へ復帰し、従って、マクロが、それらをコールしたマクロに復帰しないという意味で、真のネスティングではない。
【0065】
図6は、HPコマンドキュー41からのコマンドを処理するために行われるFMIコントロール回路42の一実施形態の動作を示すフローチャートである。即ち、図6に示された処理は、図5(ブロック87)に関して上述したLP処理を退出するのに応答して開始される。理解を容易にするためにブロックが特定の順序で示されているが、他の順序を使用してもよい。ブロックは、FMIコントロール回路42の組み合わせロジックにおいて並列に遂行されてもよい。ブロック、ブロックの組み合わせ、及び/又はフローチャートは、全体として、複数のクロックサイクルにわたりパイプライン化される。FMIコントロール回路42は、図6に示す動作を実施するように構成される。
【0066】
FMIコントロール回路42は、HPコマンドFIFO40からコマンドを読み取るように構成される(ブロック180)。コマンドがマクロコマンドでない場合には(判断ブロック182、「ノー」岐路)、FMIコントロール回路42は、コマンドを実行するように構成される(ブロック184)。コマンドが完了すると、FMIコントロール回路42は、マクロがその終了に到達したかどうか決定するのに使用されるワードカウントをチェックするように構成される。コマンドがマクロの一部分でない場合には、ワードカウントがゼロとなる(判断ブロック186、「ノー」岐路)。FMIコントロール回路42は、マクロコマンドに関連したループカウントをチェックするように構成される。コマンドがマクロの一部分でない場合には、ループカウントがゼロとなる(判断ブロック195、「ノー」岐路)。FMIコントロール回路42は、HPコマンドFIFO41に別の有効なコマンドがあるかどうか決定するように構成される(判断ブロック188)。即ち、FMIコントロール回路42は、HPコマンドFIFO40が空であるかどうか決定するように構成される。別の有効なコマンドがある場合には(判断ブロック188、「イエス」岐路)、FMIコントロール回路42は、次のコマンドを読み取って処理するように構成される。さもなければ、FMIコントロール回路42は、HPEビットがクリアであるかどうかチェックする(判断ブロック198)。もしそうであれば、FMIコントロール回路42は、LPコマンド処理に復帰する(判断ブロック198、「イエス」岐路)。もしそうでなければ(判断ブロック198、「ノー」岐路)、FMIコントロール回路42は、有効なコマンドがHPコマンドFIFO41に現れるか又はHPEビットがクリアされるまでアイドル状態である。
【0067】
コマンドがマクロコマンドである場合には(判断ブロック182、「イエス」岐路)、FMIコントロール回路42は、ワードカウントをマクロコマンドの長さオペランドに初期化しそしてループカウントをマクロコマンドのループカウントオペランドに初期化するように構成される(ブロック190)。又、FMIコントロール回路42は、マクロメモリ44からコマンドを読み取る(ブロック192)。特に、このケースでは、FMIコントロール回路42は、マクロコマンドのアドレスオペランドとして与えられたマクロメモリ44内のアドレスから第1のワードを読み取る。FMIコントロール回路42は、コマンドを実行するように構成され(ブロック184)、そしてワードカウントをチェックするように構成される。ワードカウントは、ゼロより大きく(判断ブロック186、「イエス」岐路)、FMIコントロール回路42は、ワードカウントをデクリメントしそしてマクロメモリ44から次のコマンドを読み取るように構成される(例えば、アドレスをインクリメントすることにより)(ブロック194及び196)。FMIコントロール回路42は、次のコマンドを処理するように構成される(図6のフローチャートの判断ブロック182へ戻る)。ワードカウントがゼロである場合には(判断ブロック186、「ノー」岐路)、FMIコントロール回路42は、ループカウントをチェックするように構成される。ループカウントがゼロより大きい場合には(判断ブロック195、「イエス」岐路)、マクロの別の繰り返しを行うべきである。FMIコントロール回路42は、ループカウントをデクリメントし(ブロック197)、ワードカウント及びマクロアドレスを再初期化し(ブロック199)、そしてマクロメモリ44から次のコマンド(即ち、マクロの第1コマンド)を読み取る(ブロック196)。ワードカウント及びループカウントの両方がゼロである場合には(判断ブロック186及び195、「ノー」岐路)、マクロが完了し、そしてFMIコントロール回路42は、HPコマンドFIFO41における次の有効コマンドについてチェックする(判断ブロック188)。
【0068】
図7は、マクロを使用してフラッシュメモリ装置28A−28Bへの複数ページ書き込みを遂行する一例のブロック図である。3つのコマンド区分を含むマクロメモリ44のコンテンツが示されている。マクロメモリアドレス0とN−1との間に、手前のページへの書き込みを完了するためのNワードのマクロ100が記憶される。マクロメモリアドレスNとN+M−1との間に、次のページへの書き込みをスタートするためのMワードのマクロ102が記憶される。マクロメモリアドレスN+MとN+M+P−1との間に、メモリへの最後のページの書き込みを終了するためのPワードのマクロ104が記憶される。
【0069】
LPコマンドFIFO40内のコマンドのセットが図7に示されており、LPコマンドFIFO40の最上部にはFIFOの頭部があり、そしてその後のFIFOのコマンドが図7に示すようにLPコマンド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回の繰り返し)。しかしながら、図7の第1の例の下に示す別の例では、ループカウントオペランドを使用して、コマンドキュー内のコマンドをより効率的なものとすることができる。第1ページに対するマクロN、Mコマンド、及び最後のページに対するマクロ0、N+M+Pコマンドのループカウントは、依然ゼロであり、その繰り返しを指定する。しかしながら、中間ページの書き込みは、全て、ループカウントオペランドをページカウント(C)−3に等しくして1つのマクロコマンド(マクロ0、N+M)を使用して達成される。最初と最後のページ、並びにこの実施形態ではループカウントオペランドが希望の繰り返し数より1つ小さいことを考慮して、ループカウントは、C−3となる。マクロ100、102及び104が示すように、マクロメモリ44内にマクロを入念に配置することにより、高密度で且つ効率的なマクロが生じる。マクロは、load_from_fifoコマンドを使用してページ書き込みオペランドごとに異なるオペランドを使用することができ、そして各ページのオペランドは、LPコマンドFIFO40内のコマンドを開始する前にオペランドFIFO46へロードされる。
【0070】
マクロ102に含まれたコマンドは、書き込まれるべきアドレス、チップイネーブル、等を確立する。マクロ100に含まれたコマンドは、手前のページをメモリへ転送するためのxfer_page、及びエラーをチェックして次のページ転送を同期させるためのコマンド(マクロ102を経て初期化される)を含む。マクロ104は、最終的なxfer_pageコマンド、及びエラーをチェックして書き込みのターゲットであったフラッシュメモリ装置を閉じ、アクティブページ/領域をデアクチベートし、及び/又はフラッシュメモリ装置に対して指定される他の動作を遂行するためのコマンドを含む。
【0071】
図8は、IOP32及び/又はプロセッサ22により実行されるべきフラッシュコードの動作を示すフローチャートである。理解を容易にするためにブロックが特定の順序で示されているが、他の順序を使用してもよい。フラッシュコードは、IOP32及び/又はプロセッサ22によって実行されたときに、図8に示す動作を実施するインストラクションを含む。
【0072】
フラッシュコードは、集積回路10の動作中にいつでも実行することができる。例えば、フラッシュコードは、フラッシュメモリインターフェイスユニット30を初期化するために実行される。又、フラッシュコードは、フラッシュメモリ30がアイドル状態であるが、マクロメモリ44内のマクロ等を再構成するためにアクセスされる任意の時間に実行することもできる。
【0073】
フラッシュコードは、希望のマクロをマクロメモリ44にダウンロードする(ブロック110)。マクロメモリ44に既に記憶されているマクロが希望のマクロであるか、又は希望のマクロがない場合には、ブロック110をスキップする。又、フラッシュコードは、コマンド又はマクロにより使用されるべきオペランドもダウンロードし(ブロック112)、そしてダウンロードすべきオペランドがない場合にはブロック112をスキップする。フラッシュコードは、実行すべきコマンドをLPコマンドFIFO40にダウンロードし(ブロック114)、そしてフラッシュメモリインターフェイスユニット30においてコマンド実行を開始する。コマンドをLPコマンドFIFO50にダウンロードすることは、動作の一部分の完了を表わすコマンドに対して高プライオリティコマンドのためのコマンドの割り込みを許可できるようにYビットをセットし、そして他のYビットをクリアすることを含む。付加的なコマンドをダウンロードする準備ができ(判断ブロック116、「イエス」岐路)、そしてそれらのコマンドが、フラッシュメモリインターフェイスユニット30により現在実行されているコマンドよりプライオリティが高い(判断ブロック120、「イエス」岐路)場合には、フラッシュコードが付加的なコマンドをHPコマンドFIFO41にダウンロードする(ブロック122)。さもなければ(判断ブロック120、「ノー」岐路)、フラッシュコードは、コマンドをLPコマンドFIFO40にダウンロードする(ブロック114)。新たなオペランド又はマクロをダウンロードする準備ができた場合には(判断ブロック118、「イエス」岐路)、フラッシュコードは、ブロック110及び/又は112に戻ってそれらをダウンロードする。更に、HPコマンドが完了すると、フラッシュコードは、レジスタ51におけるHPEビットをリセットする(図8には示さず)。
【0074】
システム及びコンピュータアクセス可能な記憶媒体
図9は、システム150の一実施形態のブロック図である。ここに示す実施形態では、システム150は、1つ以上の周辺装置154及び外部メモリ158に結合された集積回路10(図1)の少なくとも1つの例を含む。外部メモリ158は、メモリ12及び/又はフラッシュメモリ装置28A−28Bを含む。電源156も設けられ、これは、集積回路10に供給電圧を供給すると共に、メモリ158及び/又は周辺装置154に1つ以上の供給電圧を供給する。ある実施形態では、集積回路10の2つ以上の例が含まれてもよい(そして2つ以上の外部メモリ158も含まれてもよい)。
【0075】
周辺装置154は、システム150の形式に基づいて望ましい回路を含む。例えば、一実施形態では、システム150は、移動装置(例えば、パーソナルデジタルアシスタント(PDA)、スマートホン、等)であり、そして周辺装置154は、wifi、Bluetooth(登録商標)、セルラー、グローバルポジショニングシステム、等の種々の形式のワイヤレス通信のための装置を含む。又、周辺装置154は、RAM記憶装置、ソリッドステート記憶装置、又はディスク記憶装置を含めて、付加的な記憶装置も含む。又、周辺装置154は、タッチディスプレイスクリーン又はマルチタッチディスプレイスクリーンを含むディスプレイスクリーン、キーボード又は他の入力装置、マイクロホン、スピーカ、等のユーザインターフェイス装置を含む。他の実施形態では、システム150は、任意の形式のコンピューティングシステム(例えば、デスクトップパーソナルコンピュータ、ラップトップ、ワークステーション、ネットトップ、等)である。
【0076】
外部メモリ158は、任意の形式のメモリを含む。例えば、外部メモリ158は、SRAM、ダイナミックRAM(DRAM)例えば、同期DRAM(SDRAM)、倍データレート(DDR、DDR2、DDR3、等)SDRAM、RAMBUS DRAM、等を含む。外部メモリ158は、メモリ装置がマウントされる1つ以上のメモリモジュール、例えば、シングルインラインメモリモジュール(SIMM)、デュアルインラインメモリモジュール(DIMM)、等を含む。
【0077】
図10は、コンピュータアクセス可能な記憶媒体200のブロック図である。一般的に述べると、コンピュータアクセス可能な記憶媒体は、コンピュータにインストラクション及び/又はデータを与えるために使用中にコンピュータによりアクセスできる記憶媒体を含む。例えば、コンピュータアクセス可能な記憶媒体は、磁気又は光学媒体のような記憶媒体、例えば、ディスク(固定又は除去可能な)、テープ、CD−ROM、DVD−ROM、CD−R、CD−RW、DVD−R、DVD−RW、又はBlu−Rayを含む。記憶媒体は、更に、揮発性又は不揮発性メモリ媒体、例えば、RAM(例えば、同期ダイナミックRAM(SDRAM)、Rambus DRAM(RDRAM)、スタティックRAM(SRAM)、等)、ROM、フラッシュメモリ、ユニバーサルシリアルバス(USB)インターフェイスやフラッシュメモリインターフェイス(FMI)やシリアル周辺インターフェイス(SPI)等の周辺インターフェイスを経てアクセスできる不揮発性メモリ(例えば、フラッシュメモリ)を含む。記憶媒体は、マイクロエレクトロメカニカルシステム(MEMS)を含む。図10のコンピュータアクセス可能な記憶媒体200は、IOP32及び/又はプロセッサ22によって実行できるコードを含むフラッシュコード202を記憶する。フラッシュコード202は、実行時に、図8に関して上述した動作を実施するインストラクションを含む。一般的に、コンピュータアクセス可能な記憶媒体200は、実行時に図8に示す動作の一部分又は全部を実施するインストラクションのセットを記憶する。更に、コンピュータアクセス可能な記憶媒体200は、マクロメモリ44へダウンロードされる1つ以上のマクロ204、オペランドFIFO36へダウンロードされる1つ以上のオペランド、及び/又はコマンドFIFO40へダウンロードされる1つ以上のコマンドを記憶する。キャリア媒体は、コンピュータアクセス可能な記憶媒体、並びにワイヤード又はワイヤレス送信のような送信媒体を含む。
【0078】
当業者であれば、前記開示を完全に理解すれば、多数の修正や変更が明らかとなろう。そのような修正や変更は、全て、特許請求の範囲内に包含されるものとする。
【符号の説明】
【0079】
10:集積回路
12:外部メモリ
14:メモリコントローラ
16:相互接続ファブリック
18A−18B:周辺コンポーネント
20:中央DMA(CDMA)コントローラ
22:プロセッサ
24:レベル1(L1)キャッシュ
26:レベル2(L2)キャッシュ
28A−28B:フラッシュメモリ
30:フラッシュメモリインターフェイスユニット
40:低プライオリティ(LP)コマンドFIFO
41:高プライオリティ(HP)コマンドキュー
42:フラッシュメモリインターフェイス(FMI)コントロール回路
44:マクロメモリ
46:オペランドFIFO
48:フラッシュメモリコントローラ(FMC)
50:FMCコントロールレジスタ
51:レジスタ
52A−52B:データバッファ
54:エラーチェック/修正(ECC)ユニット

【特許請求の範囲】
【請求項1】
集積回路の外部インターフェイスをコントロールする装置において、
第1の複数のコマンドを記憶するように構成された第1のコマンドキューであって、その第1の複数のコマンドの割り込みを許すところの第1の複数のコマンド内のポイントを識別する1つ以上の指示を記憶するように更に構成された第1のコマンドキューと、
第2の複数のコマンドを記憶するように構成された第2のコマンドキューと、
前記第1のコマンドキュー及び第2のコマンドキューに結合されたコントロール回路であって、前記第2のコマンドキューにおける少なくとも第2コマンドを検出するのに応答して割り込み可能なポイントとして識別される第1コマンドにおいて前記第1の複数のコマンドの処理に割り込むように構成され、且つ前記割り込みに応答して前記第2コマンドの処理を開始するように構成されたコントロール回路と、
を備えた装置。
【請求項2】
前記1つ以上の指示は、前記第1の複数のコマンドの各コマンドに各々関連しそして前記第1の複数のコマンドが各コマンドにおいて割り込み可能であるかどうか各々表わす複数の指示である、請求項1に記載の装置。
【請求項3】
前記コントロール回路に結合された複数のコントロールレジスタを更に備え、前記コントロール回路は、前記第2の複数のコマンドが処理されることを指示するために前記複数のコントロールレジスタの1つを更新するよう構成され、そして前記コントロール回路は、前記第1の複数のコマンドの処理を続けるべきであることを指示するために前記複数のコントロールレジスタの1つが再び更新されるまで前記第1の複数のコマンドの処理を禁止するように構成された、請求項1に記載の装置。
【請求項4】
1つ以上のメモリ装置に結合するように構成されたメモリコントローラと、
1つ以上のフラッシュメモリ装置に結合するように構成されたフラッシュメモリインターフェイスユニットであって、請求項1に記載の装置を備えたフラッシュメモリインターフェイスユニットと、
前記メモリコントローラ及びフラッシュメモリインターフェイスユニットに結合された直接メモリアクセス(DMA)コントローラであって、前記メモリコントローラとフラッシュメモリインターフェイスユニットとの間でDMA動作を遂行するように構成されたDMAコントローラと、
前記DMAコントローラに結合されたプロセッサであって、このプロセッサは、前記フラッシュメモリインターフェイスユニットをコントロールするように構成され、このプロセッサからの通信は、前記DMAコントローラを通り、前記DMAコントローラとフラッシュメモリインターフェイスとの間の相互接続部を経て前記フラッシュメモリユニットへ送られ、前記相互接続部は、前記フラッシュメモリインターフェイスユニットとメモリコントローラとの間のDMA動作にも使用されるようなプロセッサと、
を備え、前記プロセッサは、前記フラッシュメモリインターフェイスユニットと1つ以上のフラッシュメモリ装置との間の第1の転送をコントロールするために前記第1のコマンドキューに第1の複数のコマンドを書き込むように構成され、更に、前記プロセッサは、前記第1の転送が完了する前に前記フラッシュメモリインターフェイスユニットと1つ以上のフラッシュメモリ装置との間の第2の転送をコントロールするために前記第2のコマンドキューに第2の複数のコマンドを書き込むように構成された、集積回路。
【請求項5】
外部インターフェイスを経て1つ以上の転送を遂行するためにインターフェイスコントローラにおいて第1のコマンドキューからのコマンドを処理する段階と、
前記第1のコマンドキューからのコマンド内の第1コマンドに関連した指示を検出する段階と、
前記指示が検出されたときに第2のコマンドキューにおいて少なくとも1つの第2のコマンドを検出する段階と、
前記指示及び少なくとも1つの第2のコマンドを検出するのに応答して前記第2のコマンドキューからのコマンドを処理するために前記第1のコマンドキューからの更なるコマンド処理に割り込む段階と、
を含む方法。
【請求項6】
前記第2コマンドキュー内のコマンドが処理されていることを指示するためにコントロールレジスタに各込みする段階を更に含む、請求項5に記載の方法。
【請求項7】
前記コントロールレジスタのコンテンツに応答して前記第2のコマンドキューからの更なるコマンド処理を防止する段階を更に含む、請求項6に記載の方法。
【請求項8】
前記第1のコマンドキュー内のコマンドの継続処理を許すために前記コントロールレジスタを更新する書き込み動作を受け取る段階を更に含む、請求項7に記載の方法。
【請求項9】
前記書き込み動作はプロセッサにより発生される、請求項8に記載の方法。
【請求項10】
プロセッサと、第1コマンドキュー及び第2コマンドキューを含む外部インターフェイスユニットとを備え、各コマンドキューは、外部インターフェイスを経ての転送をコントロールするために複数のコマンドを記憶するように構成され、前記プロセッサは、
第1の複数のコマンドを第1のコマンドキューにロードし、その第1の複数のコマンドを実行することで外部インターフェイスを経へ第1の転送を生じさせ、
前記第1の転送よりプライオリティの高い転送の必要性を検出し、
前記プライオリティの高い転送を行うために第2の複数のコマンドを第2のコマンドキューにロードし、前記外部インターフェイスユニットは、前記プライオリティの高い転送を行うために前記第1の転送の処理に割り込むようにする、
という複数のインストラクションを実行するように構成された、集積回路。
【請求項11】
実行時に第1の複数のコマンドを第1のコマンドキューにロードするという前記複数のインストラクションは、実行時に、前記第1の複数のコマンドに割り込みできるポイントの対応指示をロードするインストラクションを含む、請求項10に記載の集積回路。
【請求項12】
前記複数のインストラクションは、実行時に、
前記第1の転送よりプライオリティが高くない第3の転送の必要性を検出し、
前記第3の転送を実行するために第3の複数のコマンドを前記第1のコマンドキューにロードする、
請求項10に記載の集積回路。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate


【公開番号】特開2013−58205(P2013−58205A)
【公開日】平成25年3月28日(2013.3.28)
【国際特許分類】
【外国語出願】
【出願番号】特願2012−204966(P2012−204966)
【出願日】平成24年8月30日(2012.8.30)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.Blu−ray
【出願人】(503260918)アップル インコーポレイテッド (568)
【Fターム(参考)】