JP2002543514A - ディスク・コントローラ・メモリ・アーキテクチャ用システムおよび方法 - Google Patents

ディスク・コントローラ・メモリ・アーキテクチャ用システムおよび方法

Info

Publication number
JP2002543514A
JP2002543514A JP2000615882A JP2000615882A JP2002543514A JP 2002543514 A JP2002543514 A JP 2002543514A JP 2000615882 A JP2000615882 A JP 2000615882A JP 2000615882 A JP2000615882 A JP 2000615882A JP 2002543514 A JP2002543514 A JP 2002543514A
Authority
JP
Japan
Prior art keywords
memory
data
fifo
controller
processor
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2000615882A
Other languages
English (en)
Other versions
JP4741735B2 (ja
JP2002543514A5 (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
Priority claimed from US09/547,567 external-priority patent/US6330626B1/en
Priority claimed from US09/548,330 external-priority patent/US6401149B1/en
Application filed by クロジック コーポレーション filed Critical クロジック コーポレーション
Publication of JP2002543514A publication Critical patent/JP2002543514A/ja
Publication of JP2002543514A5 publication Critical patent/JP2002543514A5/ja
Application granted granted Critical
Publication of JP4741735B2 publication Critical patent/JP4741735B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0674Disk device
    • G06F3/0676Magnetic disk device

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Bus Control (AREA)
  • Information Transfer Systems (AREA)
  • Communication Control (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

(57)【要約】 【課題】 大容量記憶デバイスへの書込み、またはこれから読取られるデータをバッファし、アクセスする効果的、かつ、融通性のある方法およびシステムを提供すること。 【解決手段】 ディスク・ドライブ・インターフェースと、I/Oインターフェースと、ディスク・ドライブ・インターフェース間でデータのやり取りをするとともに、I/Oインターフェース間でデータのやり取りをするバッファ・メモリと、ディスク・ドライブ・インターフェースを少なくとも制御する第1プロセッサと、低水準タスクを少なくとも実行する第2プロセッサと、メモリ回路であって、バッファ・メモリに結合されたDMAポートと、第1及び第2プロセッサに結合されたレジスタ・アクセス・ポートと、第1及び第2プロセッサに結合されたランダム・アクセスポートと、第1および第2プロセッサの少なくとも一つによってアクセス可能な読取ポインタと書込ポインタとを含むメモリ回路とを具備し、データに効果的にアクセスし、または記憶させる柔軟性のある、マルチポート・メモリ回路を含むディスク・ドライブ・コントローラ回路。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】
(技術分野) 本発明は概してディスク・コントローラ、より詳しくはマルチポート・メモリ
・アーキテクチャを有するディスク・コントローラに関する。
【0002】
【従来の技術】
(背景技術) 従来のコンピュータ・システムは一般的にいくつもの機能ユニットを含んでい
る。これらの機能ユニットは中央処理ユニット(CPU)、メイン・メモリ、I
/Oデバイスおよび磁気ディスク・ドライブを含んでいる。従来のシステムにお
いて、メイン・メモリは、システム・バスまたはローカル・メモリ・バスを介し
てCPUに強力に結合(接続)されている。このメイン・メモリは、CPUに対
して、実行時間でメイン・メモリに記憶されたデータまたはプログラム情報への
迅速なアクセスを提供する。一般的に、メイン・メモリはランダム・アクセス・
メモリ(RAM)回路で構成される。CPUとメイン・メモリの組み合わせを含
むコンピュータ・システムは、しばしばホスト・システムと呼ばれる。
【0003】 メイン・メモリは一般的に磁気ディスク・ドライブよりも小さい。メイン・メ
モリは普通揮発性であり、一方磁気ディスク・ドライブは不揮発性である。従っ
て、プログラミング・データ情報はしばしば磁気ディスク・ドライブに記憶され
、必要に応じてメイン・メモリに読み取られる。CPUと接近して結合されたメ
イン・メモリとは逆に、磁気ディスク・ドライブは普通CPUにより遠くに結合
されている。磁気ディスク・ドライブがCPUにより遠くに結合されているので
、磁気ディスク・ドライブへのアクセスは一般的に遅く、またメイン・メモリへ
のアクセスよりもより複雑である。ディスク・コントローラは一般的にホスト・
システムを磁気ディスク・ドライブに結合させるとともに、磁気ディスク・ドラ
イブのホスト・システムとのインターフェースの複雑な詳細(detail)を処理する
。ホスト・システムとディスク・コントローラ間の通信は普通、多様な標準I/
Oバス・インターフェースの一つを使用して提供される。
【0004】 磁気ハードディスク・ドライブ・アセンブリは普通、一つまたはそれ以上の磁
気ディスクで構成されている。各ディスクは一般的に多数の同心円リングないし
トラックを有しており、これにデータが記憶される。トラック自体は、最も小さ
いアクセス可能なデータ・ユニットであるセクターにさらに分割される。セクタ
ーは適切なトラックの上方に磁気ヘッドが配置されることによってアクセスされ
る。トラックの第1セクターは一般的にインデックス・パルスによって識別され
る。各々の別のトラックのセクターのスタートは、セクター・パルスで識別され
る。所望のセクターがヘッドの下方に回転されるまでドライブが待機し、データ
が読取りまたは書込みを実行する。データが一度に1ビットで、連続してアクセ
スされる。普通、ディスク・ドライブ中の各ディスクは、それ自身の読取/書込
ヘッドを有している。
【0005】 ディスク・ドライブは、ディスク・コントローラに接続される。ディスク・コ
ントローラは数々の機能を実行し、例えば、デジタルデータのアナログヘッド信
号への変換、アナログヘッド信号のデジタルデータへの変換、ディスク・フォー
マッティング、エラーチェック、論理−物理アドレスのマッピング、データ・バ
ッファリングである。例えば、ディスク・ドライブは、一般的にドライブからの
データをフォーマットする。ドライブからのデータは、シリアルに配列されてお
り、ディスク・コントローラは、シリアルデータをパラレル配列に変換する。
【0006】 データ・バッファ機能が、ホストと大容量記憶メモリ間のデータ伝送に使用さ
れる。ディスク・ドライブがホストからデータを供給ないし受け入れることので
きる速度が、ホストがデータを同様に読取りないし供給する速度と異なるので、
データ・バッファリングが必要とされる。従って、ディスク・コントローラは従
来通りハード・ドライブに読取り、書込みされるデータを一時的に記憶し、接続
されたI/Oバスの速度にデータを同期させるバッファ・メモリを含んでいる。
従って、バッファは、データがドライブとホスト間で交換されるレートと、デー
タがドライブに書込み、読取りされるレートとをデカップル(decouple)する。バ
ッファ機能は、各セクターが全体として読取り、または書込みされるので特に必
要である。
【0007】 I/Oバスとディスク・ドライブ両方にアクセスを提供することに加えて、バ
ッファ・メモリはディスク・コントローラのローカル・プロセッサによってしば
しばアクセスされる。従って、ディスク・コントローラ・バッファ・メモリはデ
ィスク・コントローラの多数の機能部によって、またホストによってアクセスさ
れる。従来のシステムにおいて、バッファ・メモリへのアクセスの競争は、ディ
スク・ドライブとホスト間だけでなく、しばしばバッファ・メモリと機能ユニッ
ト間のデータ伝送レートを大きく制限するボトルネックとなる。
【0008】 従来のディスク・コントローラに見られる別の機能的なボトルネックは、ロー
カル・プロセッサである。ローカル・プロセッサは一般的に、全体としてディス
ク・コントローラの管理だけでなく、I/Oバス・インターフェース回路、バッ
ファ・メモリ、ディスク・フォーマッタを管理する。さらに、従来のシステムは
ローカル・プロセッサを必要とし、データ伝送を低レベルでバッファ・メモリを
介して管理する。一般的な汎用プロセッサは、効率的な方法でこのようなアプリ
ケーション特定機能を処理するのに不適である。
【0009】 加うるに、従来のディスク・コントローラはそのプロセッサを十分に利用して
いない。例えば、ディスクからI/Oバスへの伝送データが一つまたはそれ以上
のディスク・コントローラ・プロセッサを使用している間、伝送がデータを供給
するディスク能力に勝っておれば、ディスクが追い付くまでプロセッサは無駄に
休止させられていることになる。
【0010】
【課題を解決するための手段】
(発明の開示) 本発明は概して大容量記憶デバイスへの書込み、またはこれから読取られるデ
ータをバッファし、アクセスする効果的、かつ、融通性のある方法およびシステ
ムに関する。
【0011】 一実施例において、ディスク・コントローラは大容量記憶デバイスとI/Oバ
ス間で伝送されるデータをバッファするのに使用されるデータ・バッファを含ん
でいる。別の実施例において、データ・バッファはマルチポート・メモリを含ん
でいる。このマルチポート・メモリは、一つまたはそれ以上のプロセッサだけで
なく、例として、ディスク・チャネルおよびI/Oチャネルのような複数のチャ
ネルに結合(接続)されている。
【0012】 一実施例において、マルチポート・メモリはランダム・アクセス・メモリと先
入れ先出し(FIFO)メモリ両方として使用されている。従って、先入れ先出
しメモリとして使用されるときは、マルチポート・メモリはディスク・チャネル
とI/Oチャネル間のデータをバッファするのに使用される。マルチポート・メ
モリはコンテキスト切り替えのために使用され、ここで一つまたはそれ以上のプ
ロセッサからのレジスタ・データがメモリの内外でスワップされる。本発明の一
実施例によって提供される効果的なレジスタ・スワッピングが、プロセッサが好
都合にタスク間の迅速な切り替えをすることを許容する。これは第1タスクが待
機状態にあれば非常に有利である。なぜなら、プロセッサ時間を浪費するよりは
むしろ、待機状態のための待機の間の休止を終了させ、プロセッサが別のタスク
に迅速に切り替え、待機状態が第1タスクの終了後、第1タスクにスイッチバッ
クするからである。
【0013】 さらに、一実施例において、ランダム・アクセス機構がマルチポート・メモリ
に記憶された選択データを迅速に検索する。例えば、メモリがファイバー・チャ
ネル・フレームおよび関連するCRCデータを記憶するように使用されれば、C
RCデータが、全フレームを読み取る必要なしに、直ちに検索することができる
【0014】 一実施例において、マルチポート・メモリはDMA(ダイレクト・メモリ・ア
クセス)メモリである。一つの例としての実施例において、マルチポート・メモ
リのポートはランダム・アクセス・ポート、FIFOアクセス・ポート、レジス
タ・アクセス・ポート、および(または)バッファ・コントローラDMAポート
を含んでいる。ランダム・アクセス・ポートはマイクロプロセッサ・インターフ
ェース・バスに結合され、次にこれが、FIFOアクセス・ポートだけでなく、
マイクロプロセッサとマイクロコントローラのような一つまたはそれ以上のプロ
セッサに結合されている。レジスタ・アクセス・ポートもマイクロコントローラ
のような一つまたはそれ以上のプロセッサに結合されている。バッファ・コント
ローラDMAポートがCRC(巡回冗長コード)チェッカーと、バッファ・メモ
リに結合されている。
【0015】 一実施例において、マルチポート・メモリは64バイトからなり、またファイ
バー・チャネル・プロトコル命令全体を保有することができる。さらに、マルチ
ポート・メモリに関連するステート・マシンがいくつもの命令を実行することが
できる。別の実施例において、一つまたはそれ以上の命令がI/Oパケットない
しフレームを効果的に管理するように構成されている。なおも別の実施例におい
て、ステート・マシン命令が、次に示す命令の一つまたはそれ以上を含んでいる
。すなわち、フェッチ・カレントFCP(ファイバー・チャネル・プロトコル)
命令、アップデート・カレントFCPポインタ命令、ロードFIFO命令、アン
ロードFIFO命令、CRCを伴うロードFIFO、CRCを伴うアンロードF
IFO、バッファ・メモリへの書込命令、およびバッファ・メモリからの読取命
令である。一実施例において、命令はマイクロプロセッサまたはマイクロコント
ローラからのさらなる介入なしに全ファイバー・チャネル命令をFIFOに伝送
せしめることで提供される。一実施例はダイレクト・フレーム・アクセスをファ
イバー・チャネル・フレームに提供する。別の実施例において、命令は停止およ
び(または)休止されることもある。
【0016】
【発明の実施の形態】
(好ましい実施例の詳細な説明) 本発明は概して大容量記憶デバイスへの書込み、またはこれから読取られるデ
ータをバッファリングする効果的、かつ、融通性のある方法およびシステムに関
する。
【0017】 図1に示したように、電子システム100の一実施例において、ディスク・コ
ントローラ102がホスト・システム104を、ディスク・ポート136を介し
て例えば磁気ディスク・ドライブまたは光ディスク・ドライブのような大容量記
憶デバイス106にインターフェースするのに使用される。図示ディスク・コン
トローラ102はマイクロプロセッサ108、埋込コントローラ110、バッフ
ァ・メモリ112および外部DMA(ダイレクト・メモリ・アクセス)デバイス
114を含んでいる。ディスク・コントローラが、デュアル・ループを有してい
るファイバ・チャネル・バスのようなI/Oバス116を介してホスト・システ
ム104に結合(接続)されている。埋込コントローラ110は、マイクロプロ
セッサ108に結合されたマイクロプロセッサ・インターフェース118を含ん
でいる。マイクロプロセッサ・バス130がマイクロプロセッサ・インターフェ
ース・ロジック118を外部DMAインターフェース134、マイクロコントロ
ーラ120、バッファ・コントローラ122および埋込コントローラ110内に
配備されたファイバー・チャネル・インターフェース124に結合させている。
次に、外部DMAインターフェース134が外部DMAデバイス134に、また
バッファ・コントローラ122に結合されている。バッファ・コントローラ12
2は、バッファ・メモリ112とファイバー・チャネル・インターフェース12
4にも結合されている。ファイバー・チャネル・インターフェース124は、イ
ンターフェース124内のファイバー・チャネル送受信回路を介してファイバー
・チャネル・ループ116に結合されている。ファイバー・チャネル・ループ1
16は一つまたはそれ以上のホスト104にも結合されている。ファイバー・チ
ャネル・インターフェース124はファイバー・チャネル・プロトコルとSCS
Iプロトコル両方と通信するように使用することができる。
【0018】 データ・フロー・コントローラ126が、外部DMAインターフェース134
、バッファ・コントローラ122およびファイバー・チャネル・インターフェー
ス124に結合されている。ECCエンジン・モジュール132が、データ・バ
ス126を介してディスク・フォーマッタ128、バッファ・コントローラ12
2およびファイバー・チャネル・インターフェース124に結合されている。
【0019】 ファイバー・チャネル・インターフェース124がファイバー・チャネル・プ
ロトコルを実行する。一実施例において、ファイバー・チャネル・インターフェ
ース124は、ファイバー・チャネル信号送信インターフェースのFC−1およ
びFC−2層を含むFC−AL(ファイバー・チャネル調停ループ)プロトコル
を実行する。ファイバー・チャネル・インターフェース124は、エンコーダと
デコーダとクロック・スキュー・マネジメントのためのフレーム・バッファとフ
ァイバー・チャネル・プロトコル・ハンドラー・マシンを含む。ファイバー・チ
ャネル・インターフェース124は、ファイバー・チャネル・ループから受信さ
れたデータ列を承認し、フレーム・バッファ内の適切なエリアにルートする。フ
ァイバー・チャネル・インターフェース124の伝送経路が、フレーム・バッフ
ァからファイバー・チャネルにフレームを伝送する。ファイバー・チャネル・イ
ンターフェース124はフレーム・デリミタとフレーム・コントロールを自動的
に処理する。
【0020】 一実施例において、ディスク・フォーマッタ128がインターフェースをディ
スク106に提供する。ディスク・フォーマッタ128は、ローカル・プロセッ
サ108から制御情報とパラメータを受信する。次に、ディスク・フォーマッタ
108が要請アクションを実行する。マイクロプロセッサも、ディスク・ヘッド
のサーボ・コントロールのための信号処理と、ファイバー・チャネルによってデ
ータを通信するのに使用されるSCSIプロトコル管理のような他のタスクを処
理する。マイクロコントローラ120は、ファイバー・チャネル伝送管理タスク
のような低レベル・タスクを含む他のタスクを実行するのに使用され、これによ
ってプロセッサ108がオフロード(アンロード)される。従って、一実施例に
おいて、コントローラ・ワークロードが、より効果的なタスク実行を許容するマ
ルチプル・プロセッサ内で好都合に分割される。
【0021】 一実施例において、マイクロプロセッサ120は、8ビット・マシンであり、
8ビットかまたは16ビットDMA伝送のいずれかを支持することができる。さ
らに、マイクロコントローラ120はレジスタと、数学的演算のために使用され
るアキュムレータを含む内部ALUを有している。
【0022】 一実施例において、バッファ・コントローラ122は同期DRAM(SDRA
M)コントローラと一体化されたマルチプル・チャネルDMAコントローラであ
る。別の実施例において、バッファ・コントローラ122は4メガバイトまでの
バッファ・サイズを支持する。しかし、なおさらに別の実施例において、4メガ
バイトより大きいかまたは小さいサイズも同様に支持される。バッファ・コント
ローラ122が高速バッファ・メモリ112の初期化と検証(ベリファイ)も提
供し、また、初期化時に電力を低減させる。バッファ・コントローラ122はバ
ッファ・メモリ112の制御も提供し、一実施例において、同期DRAM(SD
RAM)を使用して実行される。しかし、非同期RAMまたはスタティックRA
Mのような他のメモリ・アーキテクチャも同様に使用できる。
【0023】 バッファ管理は4チャネル、高速、バースティングDMAコントローラによっ
て提供される。バッファ・コントローラ122は、多様なモジュールとインター
フェース間のインターフェースを提供する。例を挙げると、バッファないしホー
ルディング・メモリ112、ディスク・チャネル、ECCチャネル、ファイバー
・チャネル、マイクロプロセッサ108およびマイクロコントローラ120を含
む。バッファ・コントローラ122は、SDRAMバッファ・メモリ112に出
入りするデータの移動を調整し、バッファする。各DMAチャネルがデータのマ
ルチプル・ブロックのDMAバーストを支持し、高帯域伝送を許容する。各DM
Aチャネルが、関連するコントロール、コンフィギュレーションおよびバッファ
・メモリ・アドレス・レジスタを有している。一実施例において、バッファ・メ
モリ112はアクセス・ターンないしアクセス期間を備えた他のユニットによっ
て分担されている。期間内で、伝送が完了するか、または関連する期間が経過す
るまで、所与のデータ・ソースがデータをバーストする。しかし、多数のDMA
チャネルが、異なるクロックで稼働するか、またはバッファ・コントローラ12
2の速度とは異なる速度で稼働するモジュールに結合される。これによって、以
下に説明するように、FIFO(先入れ先出し)メモリとして構成されたメモリ
・ユニットが同期およびバッファ・チャネル・データに使用される。
【0024】 バッファ・コントローラ122がマイクロプロセッサ・アドレス・デコーディ
ング、バッファ・リソースのための優先権アービトレーション、ブロックCRC
(BCRC)チェッキング、および自動DRAMリフレッシュ・コントロールも
提供する。一実施例において、CRCカルキュレータ/チェッカがフィードバッ
クを伴うアキュムレータを含んでいる。
【0025】 データ・フロー・コントローラ126が、データ伝送時間を、一実施例におい
ては、ディスク106とファイバー・チャネル・ポート間のデータのフローを自
動的にモニターし、制御することによって短縮する。これらのチャネル間のデー
タ・フローの自動制御は、一般的なディスク対ファイバー・チャネル・データ伝
送中に発生する多数の割り込みを減じる。さらに、データ・フロー・コントロー
ラ126がバッファのオーバーフローとアンダーフロー状態を自動的に阻止する
作用をし、一方でバッファがいっぱいになるかまたは空になる前に、ディスク・
フォーマッタまたはファイバー・チャネルDMAチャネルを一時的にサスペンド
するか、または休止する。
【0026】 ホスト104とディスク106間の代表的なデータ・フロー操作について次に
説明する。一般的な書込操作は次のように進行する。ホスト104がファイバー
・チャネル・バス116により書込コマンド(命令)をディスク・コントローラ
102に送る。命令がファイバー・チャネル・インターフェース124を通過し
、次にバス・コントローラ124を介してバッファ・メモリ112にロードささ
れる。ディスク・コントローラへのホスト・パスをチャネル1と呼ぶ。一度、書
込命令がバッファ・メモリ112に書き込まれると、マイクロプロセッサ108
がバッファ・メモリ112からの命令を読取るとともに、命令書込操作のための
準備中にディスク・コントローラ・レジスタを適切に設定する。ディスク・コン
トローラ・レジスタは、バッファ・コントローラ122と関連するレジスタ、デ
ィスク・フォーマッタ128およびデータ・フロー・コントローラ126を含ん
でいる。一度、セットアップが完了し、ディスク・コントローラ102が既に書
込データを受信したことをマイクロプロセッサ108がホスト104に通知する
。次に、ホスト104がバッファ・メモリ112へのDMA(ダイレクト・メモ
リ・アクセス)伝送を初期化する。バッファ・ロード操作中、CH1モジュール
310が、書込データに基づいてCRCを連続して計算する。計算されたCRC
が関連する書込データによりバッファ・メモリ112に記憶される。データ・フ
ロー・コントローラ126が、所与の多数のセクターがバッファ・メモリ112
に記憶されたときをモニターし、バッファ・メモリ112からバッファ・コント
ローラ122を介してディスク・フォーマッタ128への転送およびここからの
転送が初期化され、ディスク・フォーマッタ128がデータを書込チャネルを介
してディスク106に書き込む。データがバッファ・メモリ112から読み取ら
れ、ディスク106に書き込まれると、関連するECCコードが計算され、セク
ター・データの最後に付け加えられる。書込操作が完了すると、マイクロプロセ
ッサ108が割り込みを発生し、これがファイバー・チャネル・インターフェー
スによってホスト104に転送され、これによってホスト104が書込操作の完
了を通知する。
【0027】 読取操作が書込操作と同様の形態で、しかしこれとは逆に実行される。ホスト
104が読取命令をディスク・コントローラ102に送り、次に読取命令をバッ
ファ・メモリ112に記憶させる。こうしてマイクロプロセッサ108がバッフ
ァ・メモリ112からの命令を読取り、ディスク・コントローラ102の種々の
機能ブロックを初期化して読取りを実行する。データがディスク106から読み
取られ、ディスク・フォーマッタ128を介してバッファ・コントローラ122
に通され、またバッファ・コントローラ122からバッファ・メモリ112に通
される。データ及び関連するCRCの両方が一緒にバッファ・メモリ112に記
憶される。ECCモジュール132がデータ転送をモニタし、このデータ記憶操
作を通してECCコードを計算する。ECC計算の完了時に、ECCモジュール
132が、読取データ中に発生したエラーとバッファ・メモリ内のこれらのエラ
ーを適切に修正することを決定する。CH1モジュール310がバッファ・メモ
リ112からデータを読取り、次にバッファ・メモリ112からの結果として記
憶されたセクターのCRCをチェックし、エラーが全くないことを保証する。一
度、データ中に、エラーが全く残っていないことが決定されると、データはバッ
ファ・メモリ112からバッファ・コントローラ122を介してまたホスト・バ
スから転送される。CRCコードが、このプロセスにおいて排除され、これによ
ってデータのみがホスト104に送られる。
【0028】 図2はバッファ・コントローラへのインターフェースの一実施例を示す。バッ
ファ・コントローラは、マイクロプロセッサ・インターフェース202、マイク
ロコントローラ・インターフェース204、ECCインターフェース206、デ
ィスク・フォーマッタ・インターフェース208、ホスト・インターフェース2
12、およびSDRAMバッファ・メモリ・インターフェース210に結合され
ている。バッファ・コントローラは対応するFIFOを利用して種々のインター
フェース間で転送されるデータをバッファする。
【0029】 図3はバッファ・コントローラ122の一実施例をより詳細に示した図である
。バッファ・コントローラ122は、4個のポートを備えたFIFOとして構成
可能なメモリ・ユニット302を含んでいる。例えば、MP FIFO302は
ランダムまたはダイレクト・アクセス・インターフェース、FIFOまたはイン
ダイレクト・アクセス・インターフェース、レジスタ・アクセス・インターフェ
ース、およびバッファ・コントローラDMAインターフェースを有している。F
IFO302は多数のクライアントと他のデバイスによってアクセスされ、また
交換局 (スイッチング・ステーション)として作用し、データが一つの場所から
他の場所にルートされている間、一時的に記憶する。図示実施例において、DM
Aインターフェースはバッファ・メモリ112へのアクセスを提供するように使
用される。レジスタ・アクセス・インターフェースは、その内のFIFOの全て
または一部がマイクロプロセッサによって内部レジスタ・ファイルとしてローカ
ル的にアドレス可能であり、いくつかのアクセス経路の一つをマイクロコントロ
ーラ120へ提供する。インダイレクト・アクセス・インターフェースは、その
内のFIFOの全てまたは一部がFIFOポインタを使用してアドレス可能であ
り、ここでも別のアクセス経路を提供する。ダイレクト・アクセス・インターフ
ェースは、その内のFIFOの全てまたは一部がランダム・アクセス・メモリと
してアドレス可能であり、またメモリマップされ、なおも別のアクセス経路を提
供する。
【0030】 一実施例において、FIFO302の全てまたは一部が、マイクロプロセッサ
108および(または)マイクロコントローラ120のような一つまたはそれ以
上のプロセッサのアドレス・スペース内にある。別の実施例において、FIFO
302は多少のポートを有している。多数のタイプのFIFOアクセス・ポート
を設けることにより、柔軟性、有効性およびFIFO302を通るデータ転送量
が大きく高められる。FIFO302はさらにディスク・フォーマット・テーブ
ル、データ、プログラム・コード、およびFIFO302内に、またはバッファ
・メモリ112内に記憶されたファイバー・チャネル命令ブロックにアクセスす
るマイクロプロセッサ108を提供する。例えば、FIFO302はバッファ・
メモリ112内に記憶されたプログラムをオーバーレイするのに使用できる。従
って、FIFO302はMP(マイクロプロセッサ)FIFOまたはMP DM
A FIFOとも呼ばれる。
【0031】 一実施例において、MP FIFO302は64バイトの記憶容量を含んでい
る。以下に説明するように、これが好都合に十分な記憶容量のメモリを提供し、
完全なファイバー・チャネル命令と、関連するCRCとバッファ長さフィールド
を保持する。ファイバー・チャネル命令のフォーマットを図7に示す。FIFO
302はバッファ・メモリ112へのデータ、またこれからのデータをバースト
するのに使用できる。従って、データ転送待機時間が大きく短縮される。ランダ
ム・アクセス・ポートが、マイクロプロセッサ・バスおよびマイクロコントロー
ラ・バス130を介してアクセスできる。これらはマイクロプロセッサ108と
マイクロコントローラ120にそれぞれ接続されている。さらに、マイクロコン
トローラ120がレジスタ・アクセス・ポートを介してMP FIFO302に
アクセスできる。バッファ・コントローラDMAポートがCRCチェッカとジェ
ネレータにだけでなく、SDRAMバッファ・メモリ112にもインターフェー
スを提供する。種々のバッファ・コントローラ機能ブロックないしモジュールが
内部バッファ・コントローラ・データ・バスによって相互結合されている。従っ
て、一実施例において、FIFO302はランダム・アクセス・メモリとしてダ
イレクト・アドレスすることによりアクセスできる。さらに、MP FIFO3
02は、FIFOアクセス・レジスタないしポートを介してFIFO302にロ
ードおよびアンロードし、またこれからロードし、アンロードして先入れ先出し
メモリとしてアクセスすることができる。
【0032】 図4はマルチ・アクセス・チャネルを伴うMP FIFO302のより詳細な
一実施例を示す。一実施例において、MP FIFO302は16x32アレイ
402内で組織化された64バイトまで記憶する。従って、FIFOアレイ40
2は16個の32ビットワードをホールドできる。一実施例において、FIFO
アレイ402はデュアル・ポート非同期スタティックRAM素子を使用して実行
される。二つのRAMポートの一つが読取ポートであり、他のRAMポートが書
込ポートである。読取ポートおよび書込ポートは各々別々に、かつ、独立して制
御される。読取ポートおよび書込ポートは一つまたはそれ以上のインターフェー
スまたはアクセス・ポートを介してアクセスすることができる。一実施例におい
て、FIFOアレイ402は、内部レジスタ・ファイルとして、マイクロコント
ローラ120のような一つまたはそれ以上のプロセッサにアクセス可能である。
従って、FIFOアレイ402は少ない時間で、ないし管理オーバーヘッドでマ
イクロコントローラ120によって迅速にアクセスすることができる。これは外
部メモリからのもっと遅くアクセスする従来のディスク・コントローラとを対比
したものである。
【0033】 図4に示したように、一実施例において、MP FIFO302はバッファ・
メモリ転送アドレス・レジスタ404、バッファ・メモリ転送カウンタ406、
MP FIFO命令レジスタ408、FIFO書込ポインタ410、FIFO読
取ポインタ412、FIFO利用カウンタ414、FIFOアクセス・レジスタ
416、FCP命令フェッチ・アドレス・レジスタ420、422、およびステ
ート・マシン418を含んでいる。上述したレジスタおよびカウンタはデータの
MP FIFO302への転送およびこれからのデータの転送を制御するのに使
用される。FIFOアレイ402は内部マイクロコントローラ・レジスタ・ファ
イルに直接メモリマップされる。一実施例において、レジスタ、カウンタ、およ
びFIFOアレイ402は、マイクロプロセッサ108および(または)マイク
ロコントローラ120によってランダム・アクセス・メモリとしてアクセス可能
である。次に説明するように、ファイバー・フレームへのアクセスが非常に融通
性があり、またランダムFIFOロケーションに配置された関連するCRCデー
タをロケーティングすることが提供される。
【0034】 一実施例において、セマフォが、FIFOリソースにアクセスを試みて、マイ
クロプロセッサ108およびマイクロコントローラ120のようなマルチ・デバ
イス間の矛盾(不一致)を回避するのに使用される。従って、一実施例において
、レジスタがセマフォ・グラント・ビットを記憶するのに使用される。ポインタ
、カウンタ、アクセス・レジスタ等々のようなFIFO302を使用すること、
またはFIFO情報を修正することに使用する試みをする前に、リクエスト・デ
バイスが最初にセマフォを獲得することを試みる。
【0035】 MP FIFO命令レジスタ408が、バッファ・メモリ112からMP F
IFO302への転送、またはMP FIFO302からバッファ・メモリ11
2への転送を初期化するのに使用される。多様なFIFO命令がFIFO302
とバッファ・メモリ112間のデータ転送を制御するのに使用される。転送命令
は、普通、四つのグループに分類することができる。これらの命令グループには
ロード/アンロード命令、読取/書込命令、制御命令、および自動化命令が含ま
れる。命令のいくつかはファイバー・チャネル・フレームにダイレクト・フレー
ム・アクセスができる。ロード/アンロード・データ転送命令は、先入れ先出し
メモリとしてFIFO302を処理する。ロード/アンロード・データ転送命令
は、MP FIFO書込ポインタ410、MP FIFO読取ポインタ412、
およびMP FIFO利用カウンタ414を使用してFIFO302のロードお
よび(または)アンロードを実行する。一実施例において、一つまたはそれ以上
の転送命令がFIFOサイズより大きい転送を処理するように構成される。
【0036】 読取/書込データ転送命令が、ランダム・アクセス・メモリのようにFIFO
を処理する。一実施例において、読取/書込命令がFIFO302内のロケーシ
ョン・ゼロでスタートするデータを読取り、書込みする。別の実施例において、
データ転送が他のFIFOメモリ・アドレスで開始する。
【0037】 クリアFIFO命令のような制御命令が、関連するカウンタとレジスタをクリ
アすることによってFIFOをクリアするのに使用される。さらに、一つのまた
はそれ以上の制御命令が目下進行中の任意の命令を休止または停止するのに使用
される。フェッチFCP命令およびアップデート・カレントFCPコマンドポイ
ンタ命令のような自動化命令が、バッファ・メモリ112等からのファイバー・
チャネル命令フレームのような命令をFIFO302へのフェッチまたは転送を
効率的に自動化する。上述したように、一実施例において、FIFO命令はステ
ート・マシンによって実行される。
【0038】 FIFO302が先入れ先出し方式でアクセスされるときに、FIFO読取/
書込ポインタ412、410が、現在の読取/書込ロケーションのトラックを維
持するのにそれぞれ使用される。書込ポインタ410が現在のFIFO書込操作
のロケーションないしアドレスを制御する。書込ポインタ410はFIFOアレ
イ402の開始アドレスに関連するバイト・オフセットを含んでいる。一実施例
において、書込ポインタ410が、パワオン・リセットのときにまたはMP D
MA FIFOリセット命令の受信時にゼロに初期化される。同様にして、読取
ポインタ412が現在のFIFO読取操作のロケーションないしアドレスを制御
する。読取ポインタ412はFIFOアレイ402の開始アドレスに関連するバ
イト・オフセットを含んでいる。一実施例において、読取ポインタ412がパワ
オン・リセットのときにまたはMP DMA FIFOリセット命令の受信時に
ゼロに初期化される。
【0039】 FIFO利用カウンタ414がFIFO利用カウントのトラックを維持するの
に使用される。例えば、FIFO利用カウンタ414は利用されたFIFOメモ
リ・ロケーションの量をトラックし、従って、利用されていないFIFOロケー
ションの数をトラックする。一実施例において、利用カウンタ414がローカル
・マイクロプロセッサ108および(または)マイクロコントローラ120によ
ってレジスタとして読取りまたは書込みされる。読取り可能カウントが、FIF
Oアレイ402内に記憶されたバイト数を提供する。一実施例において、バイト
数が最も近いワードの境界に丸められる。FIFOカウントは、データがFIF
Oアレイ402から読み取られるにつれて、減少する。従って、一実施例におい
て、アクセス・レジスタ416を介する4バイト読取操作が、4バイトの最後が
読み取られたときに、4だけカウントを減らす。同様にして、FIFOアレイ4
02からの二つの16ビット・ハーフワードの読取りが、最後の16ビットのハ
ーフワードが読み取られたときに、FIFOアレイ402がFIFOカウントを
4だけ減らす。さらに、FIFOカウントが、FIFOアレイ402からの32
ビット・ワードが読み取られたときに、4だけ減らす。アレイ402からのデー
タ読取りはバッファ・メモリ112のような別のメモリに記憶される。
【0040】 MP FIFOアクセス・レジスタ416がマイクロプロセッサ108によっ
て使用され、FIFOアレイ402に対してデータの読取りと書込みがされる。
従って、アクセス・レジスタ416に書込みされたデータは、次に書込ポインタ
410によって指示されたFIFOロケーションに書込みされる。書込ポインタ
410は一般的に次に述べるような書込みアクセスをインクリメントする。同様
にして、データがアクセス・レジスタ416を介して読み取られるときに、FI
FO読取カウンタがインクリメントされる。一実施例において、バイトの変化す
る数がアクセス・レジスタ416を介して読取り、または書込みされる。従って
、例として、1バイトか、または2バイトのいずれかがアクセス・レジスタ41
6を使用する一つの操作で読取り、または書込みされる。FIFOアレイ402
へのSDRAMアクセスが次に説明するようにステート・マシン418によって
提供される。
【0041】 バッファ・メモリ112へのデータの転送、またはこのメモリからの転送のと
きに、MP FIFOバッファ・メモリ転送アドレス・レジスタ404が使用さ
れる。バッファ・メモリ転送アドレス・レジスタ404は、転送が実行される前
に適切なバッファ・メモリ・アドレスでロードされる。バッファ・メモリ転送カ
ウンタ406は、バッファ・メモリ112に転送されるバイトの数のトラックを
維持するように使用される。転送カウンタ406が、バイト数のような転送され
るべきデータの数に対応する数にセットする。一実施例において、バイト・カウ
ントは4の倍数である。好都合なことに、バイト・カウントはFIFOアレイ4
02のサイズを超えることができる。一実施例において、転送カウントは64K
バイトまで転送するようにセットされる。別の実施例において、転送カウント4
06は64Kよりも大きいカウントにセットできる。従って、本発明の一実施例
において、ブロック転送はFIFOサイズに限定されない。FIFOアレイ40
2が、データのFIFO302への転送中、いっぱいになれば、データがFIF
Oアレイ402から読み取られるまで、転送はサスペンド(待機)される。同様
にして、FIFOアレイ402が転送中、いっぱいになれば、データがFIFO
アレイ402にロードされるまで、転送がサスペンドされる。
【0042】 一実施例において、マイクロプロセッサ108またはマイクロコントローラ1
20のようなデバイスは、FIFO命令が実行されている間、MP FIFOア
クセス・レジスタ416を介してFIFO302にアクセスすることができる。
従って、例えば、マイクロプロセッサまたはマイクロコントローラが、FIFO
302がいっぱいになるにつれて、FIFO302から読み取ることができる。
同様にして、マイクロプロセッサ108またはマイクロコントローラ120が、
FIFが読取られ、または空になるにつれて、FIFO302に書き込むことが
できる。
【0043】 先入れ先出しメモリとしてのMP FIFO302の操作につき、ここに説明
する。一実施例において、FIFOアクセス・レジスタ416への書込みはデー
タをして、書込ポインタにロードされるオフセットに記憶せしめる。書込ポイン
タが、データがFIFOアクセス・レジスタ416に書き込まれる時間ごとにサ
ーキュラ・ファッション(循環形態)でインクリメントされる。アクセス・レジ
スタ416への書込操作が試行されたときに、ポーズ(休止)信号が発生され、
そのときに利用カウンタがFIFOサイズに等しくカウントする。これが、FI
FOデータが上書きされないことを保証する。メモリ・ロケーションが利用可能
になるまで、ポーズ信号がデバイスをして、マイクロプロセッサ108またはマ
イクロコントローラ120のようなFIFO302に書込みを停止せしめる。メ
モリ・ロケーションは、アクセス・レジスタからの読取操作の実行によって利用
可能になり、これによって利用化カウントをデクリメントする。休止機能がFI
FOサイズよりも大きくなるFIFO302への、またこれを介してのデータ転
送を許容する。FIFO302が、書込工程または読取工程中に、いっぱいにな
るかまたは空になれば、工程は終了するのではなく単に休止される。従って、休
止機能は、オーバーフロー状態がデータ転送中に発生しないことを保証する。
【0044】 さらに、FIFOメモリ・ロケーションが、利用化カウンタをクリアないしゼ
ロにするFIFOクリア命令の実行時に利用可能となる。
【0045】 FIFOアクセス・レジスタ416の読取りにより、読取ポインタのオフセッ
トに配置されたデータが読み取られ、読取ポインタを循環態様(circular fashio
n)にインクリメントせしめる。利用化ワード・カウントが、読取操作が実行され
る毎に、デクリメントされる。FIFO利用化カウントがゼロのとき、FIFO
アクセス・レジスタからの読取操作が試行されれば、休止信号が発生される。一
つまたはそれ以上のFIFOメモリ・ロケーションがいっぱいになるか、または
ロードされるまで、休止信号がデバイスをして、マイクロプロセッサ108、マ
イクロコントローラ120またはDMAチャネルのようなFIFO302を読み
取らせしめる。メモリ・ロケーションがアクセス・レジスタからの書込操作の実
行によってロードされ、これによって利用化カウントがインクリメントされる。
従って、データ転送中のアンダーフロー状態が発生しないことを、休止機能が保
証する。
【0046】 これまでに説明したように、一実施例において、MP FIFOアレイ402
がマイクロプロセッサ108またはマイクロコントローラ120によって直接的
、かつ、ランダムにアクセスされる。MP FIFOアレイ402を形成するの
に使用されるスタティックRAM素子が、64バイトのランダム・アクセス・メ
モリとしてMP FIFO302を読取りできるようにする。アレイ402がマ
イクロプロセッサ・アドレス・スペースおよびマイクロコントローラ・アドレス
・スペース両方にマップされる。一実施例において、直接アドレス可能ランダム
・アクセス・アレイとしてMP FIFO302の読取り、または書込みは、操
作の先入れ先出しタイプに関連したMP FIFOレジスタまたはカウンタに影
響しない。
【0047】 MP FIFO302は、コンテキスト切り替え操作中、マイクロプロセッサ
またはマイクロコントローラの内部レジスタ情報を記憶するために使用される。
従って、マイクロプロセッサ108またはマイクロコントローラ120は、FI
FOアレイ402からの、およびこれへのレジスタ・ファイル・データを迅速に
スワップすることができる。本発明の一実施例によって提供される有効なレジス
タ・スワッピングは、好都合にプロセッサをして迅速な切り替え(スイッチ)タ
スクを許容する。
【0048】 コンテキスト・スイチッングがディスク・コントローラ・タスクをより効果的
な方式で実行されるようにする。例えば、ディスク106からファイバー・チャ
ネル・インターフェース124へのデータの転送中に、マイクロコントローラ1
20のような一つまたはそれ以上のディスク・コントローラ・プロセッサが使用
されれば、転送がデータを供給するディスク能力を勝ることになり、この期間中
ディスク106がこれに追いつくまでの無駄な休止よりむしろマイクロコントロ
ーラのいくつかの他のタスクの実行する方がより効果的である。例によれば、付
加的なディスク・データが発生するのを待機している間、キャッシュ・データを
異なるホストに送ることが有利である。従って、本発明の一実施例は、別のタス
クを実行中、一つの操作のコンテキストをFIFO302内で蓄えることを許容
する。FIFOアレイ402がマイクロコントローラ120の内部レジスタ・フ
ァイルとしてアクセス可能であるように、コンテキスト・スイッチングが本発明
の一実施例で特に迅速に実行される。従って、マイクロコントローラ120は、
FIFOアレイ402へ、またはこれからコンテキスト情報を迅速にスワップす
ることができる。このようにコンテキストは、バッファ・メモリ112のような
、より遅い二次的メモリ内に記憶されるべきではない。FIFOアレイ402の
サイズとコンテキスト・データ量に依存して、FIFOアレイ402は同時に多
数のコンテキストを記憶するのに使用できる。
【0049】 コンテキスト情報が、フレーム・カウント、シーケンス・カウント、転送カウ
ント等々のようなタスクのトラックを維持するのに使用される適切な情報を含ん
でいる。従って、一実施例において、転送が利用可能データを使い果たせば、転
送操作はサスペンドされ、操作のコンテキストがFIFOアレイ402に記憶さ
れることになる。キャッシュ・データのサイズに依存して、コンテキストが数回
変更される。
【0050】 記憶されたコンテキストは、多様な技術を使用してリストアされる。例えば、
記憶されたコンテキストは、一度付加的なデータが、サスペンドされた転送のた
めに利用可能であれば、リストアされる。リストアされたコンテキストは、もは
や必要でなければ、既存のコンテキストに上書きできる。別の方法を使用して、
コンテキストはFIFOアレイ402にスワップバックすることができ、また置
換されたコンテキストが同時にFIFOアレイ402からスワップされる。
【0051】 図3を参照して、SDRAMコントローラ304とアービタ・モジュール30
6がバッファ・メモリ112にアクセスするのに使用される。マルチ・リクエス
トがアクティブであるとき、アービタ306がリクエスターを選択し、アクセス
期間を確立する。次に、アービタ306が、リクエスターにアクセス・ターンを
認める。SDRAMコントローラ304が、バッファ・メモリ112とバッファ
・コントローラ・データ・バス間のデータの移動を処理する。
【0052】 上述したように、特定命令がMP FIFO302内に記憶されたデータへの
アクセスを容易にすることを提供する。一実施例において、FIFOステート・
マシン418が以下の表1にリストした命令を受容し、実行する。
【0053】 一実施例において、命令が命令レジスタ400に書き込まれたときに、転送が
開始される。MP DMA FIFOコマンド・アクティブ・ビットがステータ
ス・レジスタ内にセットされ、FIFO命令が実行される工程内にあることを指
示する。次の表1は、命令レジスタ408のために割り当てられたビットの一実
施例を示す。
【0054】
【表1】 表1を参照して、コマンド・レジスタ408のビット15−8がリザーブされ
る。LBA(ロジカル・ブロック・アドレス)フォーマット・ビット(8)がセ
ットされたとき、CRCハードウエア・アキュムレータがシードとして反転LB
Aで初期化される。そうでなければ、CRCアキュムレータが、一実施例におい
て、全て1であるシード(seed)をちょうど使用する。一実施例において、それ専
門のハードウエアCRCアキュムレータの使用が、このタスクでプロセッサをロ
ード・ダウンせずにCRCをして迅速に計算せしめる。
【0055】 命令レジスタ408にロードされた命令が割り込み信号を発生せしめる。一実
施例において、命令が完了し、また「インタラプト・ウエン・コンプリート・ビ
ット(7)」がコマンド・レジスタ408にセットされたときに、割り込みが発
生する。「コマンド・アクティブ・ビット」がステータス・レジスタにセットさ
れ、一方コマンドはなおもアクティブのままである。さらに、命令の完了時に、
「コマンド・コンプリート・ビット」が、ステータス・レジスタにセットされる
。一実施例において、割り込みがマイクロコントローラ120またはマイクロプ
ロセッサ108のようなプロセッサに発せられる。受信プロセッサが割り込みを
マスクし、別のプロセッサかまたはホスト104に割り込みをパスする。
【0056】 ビット6−4の説明は後述する。下記の表2は、コマンド・レジスタ408の
ビット3−0によって規定された操作を示す。
【0057】
【表2】 「クリアFIFO」命令(コマンド)がセット、または、FIFO読取りおよ
び書込みポインタ412、410をゼロにクリアする。一実施例において、FI
FOアレイ402のコンテンツは、クリアFIFO命令により不変にされる。一
実施例において、クリアFIFO命令が発せられ、一方他の命令がアクティブに
なる。
【0058】 「ストップFIFO」命令が、任意のアクティブFIFO命令を停止し、FI
FOステート・マシン418をリセットする。一実施例において、「ストップF
IFO」命令が発せられ、一方他の命令がアクティブになる。一実施例において
、ポインタ410、412およびFIFOアレイ402のコンテンツが「ストッ
プFIFO」命令によって不変にされる。
【0059】 「ロードFIFO」命令がデータをバッファ・メモリ112からMP FIF
O302に転送する。データが、MP FIFO書込ポインタ410によって規
定されたロケーションで開始してFIFOアレイ402にロードされる。転送さ
れるべきバイト数がバッファ・メモリ転送カウンタ406にセットされる。転送
のためのバッファ・メモリ開始アドレスが、バッファ転送アドレス・レジスタ4
04にセットされる。好都合なことに、転送されるべきバイト数がFIFOアレ
イ402のサイズを超えることが認められる。従って、転送はいずれの所望のサ
イズとすることができる。一実施例において、転送カウンタは64バイトFIF
Oアレイのサイズと比較して、4Kバイトまでのサイズの転送を管理するように
大きさが決められる。しかし、転送カウンタは所望により、より大きいかまたは
より小さい転送を処理するように大きさを決めることができる。
【0060】 一実施例において、4Kバイトが一つのロード命令の結果として転送すること
ができる。FIFO302がいっぱいで、転送が未完了であれば、「ロードFI
FO」操作がサスペンドされる。ステータス・レジスタ内にセットされたMP
DMA FIFOフル・ビットがセットされ、FIFOアレイ402がいっぱい
(フル) であることを指示する。FIFO302が空になり始め、またMP D
MA FIFOフル・ビットがクリアされたときに、転送が自動的に再開する。
【0061】 図8はロードFIFO命令操作の一例を示す。FIFOアレイ402が、「x
x」で示された「ドント・ケア」情報を含んでいると想定される。書込ポインタ
(WP)410および読取ポインタ(RP)412が「0」にセットされ、これ
によってFIFOアレイ402の物理的開始アドレスが指示される。読取ポイン
タ412が書込ポインタ410と同じアドレスを指示したときに、FIFOアレ
イ402は、利用カウントに依存して、空であるか、いっぱいであるかのいずれ
かである。どれだけのFIFOワード・ロケーションが使用されたかを指示する
FIFOワード・カウントが「0」であれば、FIFOアレイ402が空である
ことを指示している。バッファ・メモリ転送カウンタ406が「32」でロード
されると、32バイトの指示がバッファ・メモリ112からFIFOアレイ40
2に転送される。明瞭にするために、本例においては、バッファ・メモリ112
は連続番号でロードされているが、一実施例において、実際のバッファ・メモリ
・コンテンツは「ロードFIFO」命令の操作に作用しない。
【0062】 一度「ロードFIFO」命令がコマンド・レジスタ408によって受信される
と、バッファ・メモリ112からFIFOアレイ402への32バイトの転送が
生じる。バッファ・メモリ・データが、書込ポインタ410によって指示された
ロケーション、本例では「0」の開始でFIFO302に書き込まれる。書込ポ
インタ410は、各バイトが転送され、またFIFOアレイ402にロードされ
るようにインクリメントされる。この工程は、転送カウントによって特定された
バイト数、本例では32が転送されまで反復される。図8に示したように、一度
「ロードFIFO」命令が完了すると、FIFOアレイ402は転送データを含
み、書込ポインタ410が32にインクリメントされ、読取ポインタ412が0
を維持し、またFIFOワードが8になる。一実施例において、転送データもバ
ッファ・メモリ112内に維持される。
【0063】 「アンロードFIFO」命令がデータをMP FIFO302からバッファ・
メモリ112に転送する。データが、MP FIFO読取ポインタ412によっ
て規定されたロケーションの開始でFIFOアレイ402からアンロードされる
。転送されるべきバイト数が、バッファ・メモリ転送カウンタ406内にセット
される。転送のためのバッファ・メモリ開始方向アドレスが、バッファ転送アド
レス・レジスタ404内にセットされる。「ロード命令」によるように、転送さ
れるべきバイト数がFIFOアレイ402のサイズを超えるように許可される。
FIFO302が空であり、転送が未完了であれば、「アンロードFIFO」操
作がサスペンドされる。ステータス・レジスタ内でクリアされた「MP DMA
FIFOノット・エンンプティ」ビットが、FIFOアレイ402が空である
ことを指示するようにセットされる。FIFO302がいっぱいになり始め、ま
たMP DMA FIFOノット・エンプティ・ビットがセットされたときに、
転送が再開される。
【0064】 図9は「アンロードFIFO」コマンド操作の一例を示す。書込ポインタ(W
P)410が目下「32」にセットされ、また読取ポインタ(RP)412が「
0」にセットされている。どれだけ多くのFIFOワード・ロケーションが使用
されるかを示すFIFOワード・カウントが「8」であれば、FIFOアレイ4
02内に8ワードがあることを示している。バッファ・メモリ転送カウンタ40
6が「32」でロードされると、32バイトの指示がFIFOアレイ402から
バッファ・メモリ112に転送される。明瞭にするために、本例において、FI
FOアレイ402は連続番号でロードされているが、実際のバッファ・メモリ・
カウンタは「アンロードFIFO」命令の操作に作用しない。
【0065】 一度、「アンロードFIFO」命令がコマンド・レジスタ408によって受信
されると、FIFOアレイ402からバッファ・メモリ112への32バイトの
転送が生じる。データが読取ポインタ412によって指示されたロケーションの
開始で、本例では「0」でFIFO302から読み取られる。読取ポインタ41
2が、各ワードが転送され、またバッファ・メモリ112にロードされるにつれ
て、4だけインクリメントされる。この工程が、転送カウンタによって特定され
たバイト数、本例では32が転送されるまで、反復される。図8に示したように
、一度「アンロードFIFO」命令が完了すると、バッファ・メモリ112が転
送データを含み、書込ポインタ410が32を維持し、読取ポインタ412が3
2にインクリメントされ、またFIFOワード・カウントが0になり、FIFO
が空であることを示す。一実施例において、たとえFIFOアレイ402が空で
あっても、データがFIFOアレイ402から消去されない。
【0066】 「BCRC(ブロックCRC)チェックによるFIFOロード」命令が、デー
タをバッファ・メモリ112からMP FIFO302に転送し、一方CRCチ
ェックが実行される。このコマンドは関連するセクターCRCを伴うディスク・
セクターを転送するために特に有利である。データが、MP FIFO書込ポイ
ンタ410によって規定されたロケーションでの開始でFIFOアレイ402に
ロードされる。転送されるべきバイト数はバッファ・メモリ転送カウンタ406
内にセットされる。転送のためのバッファ・メモリ開始ソース・ドアレスがバッ
ファ転送アドレス・レジスタ404内にセットされる。転送されるべきバイト数
はFIFOアレイ402のサイズを超えることが認められる。一実施例において
、転送されるべき最終ワードであるブロックCRCが、チェックされる。CRC
チェックが、ブロックCRCが有効であることを指示すれば、MP DMA F
IF CRCグッド・ビットがステータス・レジスタにセットされる。「BCR
CチェックによるFIFOロード」操作が、FIFO302がいっぱいで、転送
が未完了であれば、サスペンドされるか、または休止される。転送は、FIFO
302が空になり始めると、自動的に再開される。
【0067】 休止特性はバッファ・メモリ112から、関連するエラー検出および(または
)修正コードで、FIFO302よりもサイズが多量の大きいデータ・ブロック
を転送するために特に有利である。エラー検出コードは、例によれば、CRCで
ある。従来の技術を使用することで、FIFOアレイ402よりも大きいデータ
・ブロックの転送は、FIFOアレイ402とサイズにおいて同じであるいくつ
かの小さいブロックとして大きいブロックを処理することによって不都合に実行
される。従って、この大きいブロックは一連の小さい、分離した転送として転送
される。しかし、この従来技術は、全ブロックのためのであるCRCの計算を困
難にし、あるいは各FIFOサイズの転送の開始時にCRCアキュムレータのリ
シードを必要とすることによって実行が遅くなる。これとは逆に、本発明の一実
施例は、転送の工程に渡って蓄積されたCRCで、リシード(reseed)なしに、全
ブロックを一つのブロックとして処理することが許容される。
【0068】 図10は「BCRCチェックによるFIFOロード」命令操作の一例を示す。
FIFOアレイ402が、「xx」で示された「ドント・ケア」情報を含むと想
定されている。書込ポインタ(WP)410と読取ポインタ(RP)412が「
0」にセットされ、これによってFIFOアレイ402の物理的開始アドレスに
指示される。FIFO利用ワード・カウントが「0」で、FIFOアレイ402
が空であることを指示している。バッファ・メモリ転送カウンタ406が、36
バイトを指示する「32+4」、または、36でロードされ、32のデータ・バ
イトと4BCRCバイトの指示がバッファ・メモリ12からFIFOアレイ40
2に転送される。明瞭にするために、本例においては、バッファ・メモリ112
が連続番号でロードされるが、一実施例において、実際のバッファ・メモリ・コ
ンテンツは「BCRCチェック命令によるFIFOロード」命令の操作に作用し
ない。
【0069】 一度、「BCRCチェックによるFIFOロード」命令がコマンド・レジスタ
408によって受信されると、32データ・バイトと、バッファ・メモリ112
からFIFOアレイ402への4BCRCバイトの転送が生じる。バッファ・メ
モリ・データとBCRCが、書込ポインタ410によって指示されたロケーショ
ンにおける開始で、本例では「0」でFIFO302に書込される。各バイトが
転送され、またFIFOアレイ402にロードされると、書込ポインタ410が
インクリメントされる。この工程は、転送カウントによって特定されたバイト数
、本例では36が転送されるまで、反復される。BCRCが転送中チェックされ
、CRCが有効であることが指示されれば、MP DMA FIFO CRCグ
ッド・ビットがステータス・レジスタにセットされる。図10に示したように、
一度「BCRCチェックによるFIFOロード」命令が完了すると、FIFOア
レイ402が転送データを含み、書込ポインタ410が36にインクリメントさ
れ、読取ポインタ412が0に維持され、またFIFOワード・カウントが9に
なる。一実施例において、転送データもバッファ・メモリ112内に保持される
【0070】 「BCRC発生によるFIFOアンロード」命令が、ブロックCRCの生成中
、データをMP FIFO302からバッファ・メモリ112に転送する。転送
がMP FIFO読取ポインタ412によって規定されたロケーションで開始(
スタート)がはじまる。転送されるべきバイト数が、バッファ・メモリ転送カウ
ンタ406内にセットされる。転送のためのバッファ・メモリ・スタート方向ア
ドレスがバッファ転送アドレス・レジスタ404内にセットされる。転送される
べき最終ワードはダミー・ワードであり、CRCエンジン132によって計算さ
れたブロックCRCと置換される。転送されるべきバイト数が、FIFOアレイ
402のサイズを超えて許容される。「BCRC発生によるFIFOアンロード
」操作が、FIFO302が空であり、また転送が未完了であれば、サスペンド
されるか、または休止される。転送は、FIFO302がいっぱいになり始めた
ときに、自動的に再開する。
【0071】 図11は「BCRC発生によるFIFOアンロード」命令操作の一例を示す。
バッファ・メモリ112が、「xx」で示された「ドント・ケア」情報を含むと
想定されている。明瞭にするために、本例において、FIFOアレイ402は連
続番号の32バイトでロードされる。さらに、データに続く4バイトがダミーB
CRCを「含んでいる」。すなわち、FIFOアドレス0−31での32データ
・バイトのためのBCRCは、未だ計算されていないが、FIFO管理目的のた
めに、まるでアドレス・ロケーション32−35が実際のBCRCを含んでいる
かのように書込ポインタ410が36にセットされる。読取ポインタ(RP)4
12が「0」にセットされる。どれだけのFIFOワード・ロケーションが使用
されたかを指示するFIFO利用ワード・カウントが「9」であれば、9ワード
がFIFOアレイ402にあることを指示している。バッファ・メモリ転送カウ
ンタ406が「32+4」、すなわち、36でロードされる。36バイトの指示
がFIFOアレイ402からバッファ・メモリ112に転送される。
【0072】 一度、「BCRC発生によるFIFOアンロード」命令がコマンド・レジスタ
408によって受信されると、FIFOアレイ402からバッファ・メモリ11
2への32バイトの転送が生じる。データが、読取ポインタ412によって指示
されたロケーションで、本例では「0」で、FIFO302から読み取られる。
読取ポインタ412が、各ワードが転送されるとともにバッファ・メモリ112
にロードされると、インクリメントされる。BCRCはこの転送中、連続して計
算される。この工程は、転送カウントからBCRCデータのための4バイトを減
算したカウントによって特定されたバイト数が転送されるまで、反復される。本
例において、32バイトがFIFOアレイ402から転送される。バッファ・メ
モリ112に転送される最終の4バイトは、FIFOアレイ402よりもむしろ
CRCアキュムレータによって供給されたBCRCデータを含んでいる。図11
に示したように、一度「BCRC発生によるFIFOアンロード」命令が完了す
ると、バッファ・メモリ112は、関連するBCRCを伴う転送データを含んで
いる。書込ポインタ410が36を維持し、読取ポインタ412が36にインク
リメントされ、またFIFOワード・カウントが0になり、FIFOが空である
ことを指示する。一実施例において、たとえFIFOアレイ402が空であって
も、データはFIFOアレイ402から消去されない。
【0073】 「バッファ・メモリからの読取」命令が、バッファ・メモリ112からのデー
タのデータ64バイトをMP FIFO302へ転送する。データが、FIFO
アレイ402の開始時ないしゼロ・アドレスでFIFOアレイ402にロードさ
れる。転送のためのバッファ・メモリ開始ソース・アドレスがバッファ転送アド
レス・レジスタ404にセットされる。一実施例において、読取ポインタ412
と転送カウンタ408がデフォルト値を使用して自動的に初期化される。従って
、冗長なセットアップ工程によって実行するのではなく、一つの命令がカウンタ
を迅速に初期化する。さらに、一実施例において、CRCチェックがまったく実
行されない。従って、FIFOアレイ302[402?]のスタート時で自動的
に64バイトをロードする「バッファ・メモリからの読取」命令が、シーケンス
をなすページをして、FIFOポインタの管理に関連するオーバーヘッド時間を
取らずに、迅速にロードせしめる。このコマンドが、マイクロプロセッサ108
またはマイクロコントローラ120のようなプロセッサを許容して、FIFOロ
ードを迅速に実行せしめて、64バイト・インターバルでバッファ・メモリに記
憶されたデータを検査する。一実施例において、CRCはこの転送中まったく実
行されない。
【0074】 図13は「バッファ・メモリからの読取」命令操作の一例を示す。FIFOア
レイ402が、「xx」で示された「ドント・ケア」情報を含むように想定され
る。書込ポインタ(WP)410、読取ポインタ(RP)412、転送カウンタ
406および利用カウンタ414に基づいたワード・カウントが、デフォルト値
で自動的に初期化される。明瞭にするために、本例において、バッファ・メモリ
112は連続番号でロードされるが、一実施例において、実際のバッファ・メモ
リ・コンテンツは、「バッファ・メモリからの読取」命令の操作に影響しない。
【0075】 一度、「バッファ・メモリからの読取」命令がコマンド・レジスタ408によ
って受信されると、バッファ・メモリ112からFIFOアレイ402への64
バイトの自動転送が生じる。バッファ・メモリ・データが、第1FIFOメモリ
・ロケーションの開始でFIFOアレイ402に書き込まれる。全ての64バイ
トが転送される。図13に示したように、一度、「バッファ・メモリからの読取
」命令が完了すると、FIFOアレイ402が転送データを含むことになる。一
実施例において、転送データもバッファ・メモリ112に保持される。
【0076】 「バッファ・メモリへの書込」命令がFIFOアレイ402の全64バイト・
コンテンツをバッファ・メモリ112に転送する。データが、FIFOアレイ4
02の開始時ないしゼロ・アドレスでの開始でFIFOアレイ402にロードさ
れる。転送のためのバッファ・メモリ・スタート方向アドレスが、バッファ転送
ドレス・レジスタ404にセットされる。一実施例において、「バッファ・メモ
リへの書込」命令は、書込ポインタ410、読取ポインタ412、または転送カ
ウンタ406を使用しない。従って、FIFOアレイ402のスタート時で自動
的に64バイトをアンロードする「バッファ・メモリからの書込」命令が、FI
FOポインタの管理に関連するオーバーヘッド時間を取らずに、連続ページをし
てバッファ・メモリ112に迅速に転送せしめる。一実施例において、CRCが
これらの転送中に実行される。
【0077】 図14は「バッファ・メモリへの書込」命令操作の一例を示す。バッファ・メ
モリ112が、「xx」で示された「ドント・ケア」情報を含むように想定され
る。書込ポインタ(WP)410、読取ポインタ(RP)412、転送カウンタ
406および利用カウンタ414が、デフォルト値で自動的に初期化される。明
瞭にするために、本例において、FIFOアレイ402は連続番号でロードされ
るが、一実施例において、実際のコンテンツは、「バッファ・メモリへの書込」
命令の操作に影響しない。
【0078】 一度、「バッファ・メモリからの書込」命令がコマンド・レジスタ408によ
って受信されると、FIFOアレイ402からバッファ・メモリ112への64
バイトの自動転送が生じる。64バイトのFIFOデータがバッファ転送アドレ
ス・レジスタ404に記憶されたアドレスでの開始でバッファ・メモリ112に
自動的に書き込まれる。図14に示したように、一度、「バッファ・メモリへの
書込」命令が完了すると、バッファ・メモリ112が転送データを含むことにな
り、書込ポインタ410と読取ポインタ412が不変にされる。一実施例におい
て、転送データもFIFOアレイ402に保持される。
【0079】 「セレクトFCP(ファイバー・チャネル・プロトコル)CMD2ビット(6
)が、「フェッチ・カレントFCP」命令と「アップデート・カレントFCPコ
マンド・ポインタ」命令に関連して使用される。「フェッチ・カレントFCP」
命令が実行されると、現FCP命令が、バッファ・メモリ112内のコマンド・
バッファからMP FIFOアレイ402に転送される。一実施例において、こ
の転送は、一度FIFO命令がコマンド・レジスタ408に書き込まれると、プ
ロセッサの介在なしに自動的に実行される。
【0080】 以下に詳細に説明するように、ステート・マシン418が、「フェッチ・カレ
ントFCP」命令を、「クリアFIFO」シーケンスの実行、ポインタと利用カ
ウンタのクリア、および「FCPコマンド・フェッチ・アドレス」を「MP F
IFOバッファ・メモリ転送アドレス・レジスタ404へコピーすることによっ
て実行する。「セレクトFCP CMD2ビット(6)が、二つのフェッチ・ア
ドレス、FCPコマンド1フェッチ・アドレスまたはFCPコマンド2フェッチ
・アドレスのいずれが、カレントFCP命令をフェッチするのに使用されるかを
決定する。二つのフェッチ・アドレス、FCPコマンド1フェッチ・アドレスま
たはFCPコマンド2フェッチ・アドレスを用意することが、二つの命令バッフ
ァをしてバッファ・メモリ112内に存在することを好都合に許容する。FCP
コマンド1フェッチ・アドレスと、FCPコマンド2フェッチ・アドレスがFC
Pコマンド1フェッチ・アドレス・レジスタ420と、FCPコマンド2フェッ
チ・アドレス・レジスタ422内にそれぞれ記憶される。レジスタ420、42
2は対応するFCPコマンド・フレーム・テーブル・ベース、FCPコマンド・
フェッチ・アドレス・フレーム・ポインタ、および64バイトコマンド・フレー
ム・スタートを含んでいる。
【0081】 次に、ステート・マシン418が、MP FIFOバッファ・メモリ転送カウ
ンタ406を60にセットする。これは関連するCRCおよびバッファ長さフィ
ールドを除いたFCPコマンドのバイトによるサイズである。バッファ長さフィ
ールドが、FIFOアレイ402のトップで、またはゼロ・アドレス・ロケーシ
ョンでの開始でMP FIFO302にロードされる。従って、バッファ長さフ
ィールドがマイクロコントローラ120のような処理素子による使用のために迅
速、かつ、自動的に配置される。一実施例において、バッファ長さフィールドは
固定位置に、またはFCPコマンド・ヘッダに関係するスペーシングにある。バ
ッファ長さフィールドはCRCを位置付けするのに使用され、これがチェックさ
れフレームが不正であるかどうかが決定される。一実施例において、FCPコマ
ンド・フレームが、図7に示したようにCRCがバッファ長さフィールド上方に
配置された状態でバッファ・メモリ112に記憶される。次に「BCRCチェッ
クによるFIFOロード」命令が、自動的に実行される。一実施例において、「
インタラプト・アポン・コンプリート」ビットが同様にセットされる。
【0082】 従って、さらなるマイクロプロセッサまたはマイクロコントローラの介在を必
要とせずに、ステート・マシンに対してFCPコマンドをロードし、チェックす
る複雑なタスクを自動的に実行させることによって、マイクロプロセッサ108
およびマイクロコントローラ120の処理負荷を大々的に低減している。さらに
、FCPコマンドの読取りがより迅速、かつ、効果的に達成される。
【0083】 「アップデート・カレントFCPコマンド・ポインタ」命令が、「カレント・
コマンド・フェッチ」アドレス・カウンタまたはレジスタを進行させるのに必要
とされる工程を実行する。最初に、「フェッチ・アドレス」ポインタが、コマン
ド・サイズ、64だけインクリメントされる。「セレクトFCP CMD2ビッ
ト(6)」が、いずれのFCPコマンド1フェッチ・アドレスとFCPコマンド
2フェッチ・アドレスが使用されるかを決定する。次に、MP FIFOコマン
ド・コンプリート・インタラプトが生成される。次に、コマンド・カウントがデ
クリメントされる。
【0084】 図12は「フェッチ・カレントFCP」命令操作の一例を示す。FIFOアレ
イ402が、「xx」で示された「ドント・ケア」情報を含むように想定される
。書込ポインタ(WP)410、読取ポインタ(RP)412、およびワード・
カウントも「ドント・ケア」である。バッファ・メモリ112がFCPコマンド
・フレームでロードされる。フレーム・ヘッダに対して8ワード、フレーム・ペ
イロードに対して8ワード、FCPコマンドCRCに対して1ワード、およびワ
ード・バッファ長さフィールドに対して1ワードを含み、合計64バイトである
【0085】 一度、「フェッチ・カレントFCP」命令が、コマンド・レジスタ408によ
って受信されると、バッファ・メモリ112からFIFOアレイ402への64
バイトの自動転送が生じる。転送は対応するFCPコマンド・フェッチ・アドレ
スによって指示されたバッファ・メモリ・ロケーションからである。最初に、バ
ッファ長さフィールドがFIFOアレイ402の始め(beginning)、ないしトッ
プ・アドレスに自動的にロードされる。従って、バッファ長さフィールドはFI
FOアレイ402からアンロードされた第1ワード後である。次に、FCPコマ
ンド・フレーム・ヘッダが、チェックされたフレーム・ペイロードとCRCに続
いて転送される。図12に示したように、一度、「フェッチ・カレント」命令が
完了すると、FIFOアレイ402が、バッファ長さフィールドをトップにした
転送データを含むことになる。書込ポインタ410と読取ポインタ412が0を
保持し、またFIFOワード・カウントが64であり、これはFIFOアレイ4
02がいっぱいであることを指示している。
【0086】 図15はコンテキスト・スイッチング操作の一例を示す。本例は前もってFI
FOアレイ402に記憶されたコンテキストを代表的なレジスタ・ファイルにス
ワップないし転送する態様を、一方レジスタ・ファイルからのコンテキストをF
IFOアレイ402に転送する態様を示す。レジスタ・ファイルは多数のレジス
タ・ファイルの一つであり、またFCPヘッダ、転送カウント・ステータス等々
のような種々のデータないしコンテキストを含むように使用される。本例におい
て、FIFOアレイ402はアレイの第1の28バイトに記憶された第1コンテ
キストを含む。FIFOアレイ402の残部は、「xx」によって指定された「
ドント・ケア」情報を含んでいる。書込ポインタ(WP)410は28に、すな
わち、書込ポインタ410はFIFOアレイ402によって受信された次のデー
タをして、第1コンテキストに続くメモリ・ロケーションに書き込ませる。読取
ポインタ(RP)412が「0」にセットされ、これによってFIFOアレイ4
02の物理的開始アドレスを指示する。どれだけのFIFOワード・ロケーショ
ンが使用されたかを指示するFIFO利用ワード・カウントは、「7」である。
マイクロコントローラ(MC)アキュムレータが「14」にセットされている。
バッファ・メモリ転送カウンタ406は、「ドント・ケア」であり、データはこ
の操作ではバッファ・メモリ112に転送もされず、またこれからの転送もない
。レジスタ・ファイル1502が第2コンテキストを含み、28バイトを含んで
いる。一方、本例において、第1および第2コンテキストが同じサイズであるが
、両者は異なるサイズでもよい。明瞭にするために、本例においては、FIFO
アレイ402は連続番号00−1Bでロードされており、一方、レジスタ・ファ
イル1502は連続番号20−3Bでロードされている。
【0087】 「MCイクスチェンジ・ロードFIFO」命令がコンテキスト・スイッチング
ないしスワッピングを実行するのに使用される。一度、MC EXCHANGE
ロードFIFO命令が発せられると、FIFOアレイ402に記憶されたコンテ
キストが、レジスタ・ファイル1502に記憶されたコンテキストでスワップさ
れる。図示例において、第1コンテキストはスワップ・アウトされているが、F
IFOアレイ402から消去されない。しかし、所望ならば、第1コンテキスト
は、スワップ操作中、FIFOアレイ402に上書きでき、一方第1コンキスト
のスワップアウト・コピーはレジスタ・ファイル1502に記憶される。例えば
、スワップされたコンテキストが未使用FIFOロケーションよりも大きければ
、FIFOアレイ402内に記憶された第1コンテキストの全てのまたは一部が
、上書きできる。従って、一実施例において、レジスタ・ファイルからスワップ
されたコンテキストが64バイトであれば、FIFOアレイ402内の第1コン
テキストは完全に上書きされる。
【0088】 図15に示したように、本例において、レジスタ・ファイル1502からFI
FOアレイ402に転送されたコンテキストは、第1コンテキストのすぐ後に記
憶される。レジスタ・ファイル1502はここで第1コンテキストを含むことに
なる。書込ポインタ(WP)410が56に進行し、FIFOアレイ402に書
き込まれた付加的なデータが表わされている。読取ポインタ(RP)412が2
8に進行し、28バイトがFIFOアレイ402から読み取られた事実が表れて
いる。FIFOワード・カウントは7のままであり、FIFOアレイ402の読
取ワードの数は、スワップ中にFIFOアレイ402に書き込まれたワード数と
同じである。
【0089】 本発明の一実施例は、データがMP FIFO302とバッファ・メモリ11
2間で転送されたときに、データ変換が任意に実行される。図6に示したように
、32ビット・ワード内の二つの16ビット・ハーフワードがスワップされ、ま
た各ハーフワード内の二つのバイトがスワップされる。コマンド・レジスタ40
8のビット5が、ワード内のハーフワードをスワップすべく使用する。ビット4
が、ハーフワード内のバイトをスワップすべく使用する。これらのスワッピング
機能は、ビッグ−エンディアン・フォーマット(big-endian format) 内でフォー
マットされたデータからリトル−エンディアン・フォーマット(little-endian f
ormat)へのデータ変換を好都合に許容する。同様にして、これらのスワッピング
機能はリトル・エンディアン・フォーマット内でフォーマットされたデータから
ビッグ−エンディアン・フォーマットへのデータ変換を好都合に許容する。例え
ば、ファイバー・チャネルは従来リトル−エンディアン・フォーマットを使用し
、一方プロセッサ106、120はビッグ−エンディアン・フォーマットを使用
する。加うるに、スワッピング機能は、異なる境界線上で再編成されるべきFI
FO302の内外でワードの転送を許容する。
【0090】 バッファ・メモリ・アクセス方向、転送カウント値、バッファ・メモリ・アド
レスのソース、およびコメントを含む付加的な命令情報を次の表3に提示する。
【0091】
【表3】 一実施例において、上にリストした一つまたはそれ以上のコマンド(命令)が
発せられ、一方他のコマンドが実行される。例えば、一実施例において、操作な
し(NOP)、クリアFIFO、およびストップFIFOコマンドが発せられ、
一方他のコマンドが実行される。
【0092】 ステート・マシン418が、MP FIFOポインタ、MP FIFOバッフ
ァ・メモリ転送カウンタ406、ファイバー・チャネル・プロトコル(FCP)
フェッチ・アドレス・カウンタ、CRCアキュムレータ、およびフレーム長さカ
ウンタを含むコントローラ・メモリ・アクセス・リソースを制御する。ステート
・マシン418がこれらのリソースを初期化し、モードをセットし、またSDR
AMリクエスタとして作用する。
【0093】 図5A−DはMP FIFOステート・マシン418の一実施例を示す。アイ
ドル・ステート514から開始され、アンロードFIFOコマンドの受信時に、
ステート・マシン418がステート502に進行し、アンロードの工程時に、F
IFO302が開始される。FIFO302が空でなければ、ステート・マシン
418がステート504に進行する。次に、ただ一つのワードがFIFOアレイ
402に残り、また転送カウントが1に等しくなるまで、FIFO302が連続
してアンロードされる。次に、ステート・マシン418がステート508に進行
し、ここで最終FIFOワードがアンロードされる。従って、MP FIFOア
ービタからの確認(ACK)信号とSDRAMコントローラからのデータ確認(
DACK)信号両方がアクティブであるとき、FIFOアレイ402内のデータ
の最後の一つが転送される。転送カウントが0にセットされ、またステート・マ
シン418がアイドル・ステート514に復帰する。
【0094】 アイドル・ステート514にあってCRCコマンドによるアンロードFIFO
が受信されれば、ステート・マシン418がステート508に進行する。CRC
コマンドによるアンロードFIFOが、FIFOアレイ402からバッファ・メ
モリ112へのデータの書込に使用され、この間に関連CRCが生成される。一
実施例において、CRCはバッファ・メモリ112に最終ワードを書き込むこと
になる。FIFOアレイ402が空であれば、ステート・マシン418がアンロ
ードFIFOステート508に留まる。しかし、FIFOアレイ402が空でな
ければ、ステート・マシン418がアンロードFIFOステート510に進行す
る。CRC計算は、FIFOアレイ402がアンロードされ、SDRAMバッフ
ァ・メモリに書込みされるにつれて、実行される。転送カウントが1に等しいと
き、ステート・マシン418がアンロードFIFOステート512に進行する。
CRC計算が完了したとき、CRCデータがSDRAMバッファ・メモリ112
に転送され、また転送カウンタが0にセットされる。次に、ステート・マシン4
18がアイドル・ステート514に復帰する。
【0095】 ステート・マシン418がロードFIFOコマンドを受信すれば、ステート・
マシン418がアイドル・ステート514からロードFIFOステート516に
進行する。ロードFIFOコマンドはバッファ・メモリからFIFOアレイ40
2へのデータの読取りに使用される。ステート・マシン418がいっぱいでなけ
れば、次にステート・マシン418は、アービタからのMP FIFO確認信号
の受信時に、ステート518に進行する。次に、転送カウントが1に等しくなり
、またMP FIFO302が「ほとんど完全(いっぱい)信号」を発生するま
で、ステート・マシン418がデータをしてバッファ・メモリ112からFIF
Oアレイ402に転送せしめる。転送カウントが1に等しく、またFIFOアレ
イ402がほとんどいっぱい (フル) であれば、ただ一つのデータ・ワードのた
めに余裕があることを意味し、ステート・マシン418がロードFIFOステー
トを520に進行する。転送カウンタが1に等しく、MP FIFO302がフ
ル信号を発生すれば、次に、アービタからのMP FIFO確認信号とSDRA
MコントローラからのDACK信号の受信時に、最終ワードがFIFOアレイ4
02にロードされ、ステート・マシン418がアイドル・ステート514に復帰
する。
【0096】 CRCを伴ったロードFIFOコマンドが受信されると、ステート・マシン4
18がCRCコマンドを伴ったロードFIFOステート522に進行する。CR
Cを伴ったロードFIFOコマンドがバッファ・メモリ112からのデータを読
取るのに使用され、一方CRCをチェックする。一実施例において、CRCが転
送されるべき最終ワードとなる。ステート522において、MP FIFO30
2がいっぱいでなければ、MP FIFO読取信号が作動され、MP FIFO CRCが有効信号となる。MP FIFO確認信号が受信されると、ステート
・マシン418がCRCを伴うロードFIFOステート524に進行する。ほぼ
フル信号が行使され、また転送カウントが1より大きくなるまで、ステート・マ
シン418がデータをSDRAMバッファ・メモリからFIFOアレイ402に
ロードするように進行する。この期間中、CRCが計算される。次に、ステート
・マシン418がCRCを伴ってロードFIFOステート526に進行する。ス
テート・マシン418がCRCをしてFIFOアレイ402にロードせしめる。
転送カウントが1にセットされ、またステート・マシン418はアイドル・ステ
ート514に復帰する。
【0097】 「ライト・トウ・バッファ・メモリ(バッファ・メモリへの書込)」コマンド
が受信されたときに、ステート・マシン418がアイドル・ステート514から
書込ステート528に進行する。上述したように、「ライト・トウ・バッファ・
メモリ」コマンドがFIFOアレイ402からバッファ・メモリ112へのデー
タの書込みに使用される。もし、FIFOアレイ402が空でなければ、MP
FIFOアービタからの確認信号の受信時に、ステート・マシン418がステー
ト530に進行する。次に、FIFOアレイ402がアンロードされ、またアン
ロードされたデータがバッファ・メモリ112に書き込まれる。ただ一つのワー
ドがFIFOメモリに残り、また転送カウントが1に等しくなるまで、FIFO
アンロード工程が継続される。次に、ステート・マシン418が、ステート53
2に進行し、ここで最終FIFOワードがアンロードされる。こうして、MP
FIFOアービタからの確認(ACK)信号とSDRAMコントローラからのデ
ータ確認(DACK)信号の両方がアクティブなとき、FIFO内のデータの最
終のものが転送される。転送カウントは0にセットされ、ステート・マシンはア
イドルステージ514に復帰する。
【0098】 アップデートFCPポインタ・コマンドが受信されたときに、ステート・マシ
ン418がアイドル・ステート514からFCMD PTRステート528に進
行する。コマンド・ポインタ・インクリメント信号が1クロックの間、作動され
、これがFCPアドレスとカウントを更新する。ステート・マシン418がステ
ート536に進行し、コマンド・コンプリート・インタラプトをクリアする。こ
うして、ステート・マシン418がアイドル・ステート514に復帰する。
【0099】 リード(読取り)バッファ・メモリ・コマンドが受信されると、ステート・マ
シン418がアイドル・ステート514からリード・ステート538に進行し、
SDRAM読取信号を行使する。FIFOがいっぱいでなければ、MP FIF
Oアービタからの確認信号の受信時に、ステート・マシン418がステート54
0に進行する。次に、データがバッファ・メモリ112からFIFOアレイ40
2に読み取られる。読取工程は、FIFOメモリがほぼいっぱいになり、また転
送カウントが1に等しくなるまで、続行される。次に、ステート・マシン418
がステート542に進行し、ここでもう一つのワードがバッファ・メモリ112
からFIFOに読み取られる。こうして、MP FIFOアービタからの確認(
ACK)信号とSDRAMコントローラからのデータ確認(DACK)信号両者
がアクティブであるとき、転送カウントが0にセットされ、またステート・マシ
ン418がアイドル・ステート514に復帰する。
【0100】 フェッチFCPコマンドが受信されると、ステート・マシン418がアイドル
・ステート514からFCPコマンド・ステート544に進行する。ステート・
マシンがFCP_CMD、RD_SIG、LD_CMD_LEN_ADR、CL
R_FIFO、LD_XFER_CNT_64およびREQ_SIG信号を適切
にセットし、パケットの終端に配置されたパケット長さデータを得るように用意
する。従って、転送アドレスがフレーム長さアドレスとともにロードされる。一
実施例において、フレーム長さアドレスには、セグメント・サイズに付加したベ
ース・アドレスが含まれている。ステート546に進行して、フレーム長さデー
タが検索される。MP FIFOアービタからの確認(ACK)信号とSDRA
Mコントローラからのデータ確認(DACK)信号両者がアクティブであるとき
、フレーム長さがFIFOアレイ402に配置される。ステート548に進行し
て、CRCシードがリセットされ、また転送アドレスがFCPコマンド・フレー
ムのスタート・アドレスまたはベース・アドレスにセットされる。確認信号がド
ロップしたとき、ステート・マシンがステート550に進行する。バッファ・メ
モリ112からのパケットの転送が開始し、またCRCアキュムレーションが開
始する。転送カウントが1に等しくなるまで、転送は続行される。次に、ステー
ト・マシン418はステート552に進行し、最終ワードが転送される。転送カ
ウンタがここでゼロに等しくなり、またステート・マシン418がアイドル・ス
テート514に進行する。
【0101】 本発明のある好ましい実施例を説明してきたが、これらの実施例は例としての
み提示したものであって、本発明の範囲を限定することを意図していない。従っ
て、本発明の概念と範囲は請求の範囲とその等価なものによってのみ規定される
【図面の簡単な説明】
【図1】 本発明の一実施例を使用する一環境を示す図
【図2】 バッファ・コントローラの一実施例のポートを示す図
【図3】 図2のバッファ・コントローラをより詳細に示す図
【図4】 メモリ・ユニットの一実施例を示す図
【図5】 A−Dは、バッファ・コントローラと併用したステート・マシンの一実施例を
示す図
【図6】 データ変換の一実施例を示す図
【図7】 ファイバー・チャネル・コントロール・ブロックを示す図
【図8】 第1の代表的なデータ転送を示す図
【図9】 第2の代表的なデータ転送を示す図
【図10】 第3の代表的なデータ転送を示す図
【図11】 第4の代表的なデータ転送を示す図
【図12】 第5の代表的なデータ転送を示す図
【図13】 第6の代表的なデータ転送を示す図
【図14】 第7の代表的なデータ転送を示す図
【図15】 第8の代表的なデータ転送を示す図
───────────────────────────────────────────────────── フロントページの続き (31)優先権主張番号 09/548,330 (32)優先日 平成12年4月12日(2000.4.12) (33)優先権主張国 米国(US) (81)指定国 EP(AT,BE,CH,CY, DE,DK,ES,FI,FR,GB,GR,IE,I T,LU,MC,NL,PT,SE),OA(BF,BJ ,CF,CG,CI,CM,GA,GN,GW,ML, MR,NE,SN,TD,TG),AP(GH,GM,K E,LS,MW,SD,SL,SZ,TZ,UG,ZW ),EA(AM,AZ,BY,KG,KZ,MD,RU, TJ,TM),AE,AG,AL,AM,AT,AU, AZ,BA,BB,BG,BR,BY,CA,CH,C N,CR,CU,CZ,DE,DK,DM,DZ,EE ,ES,FI,GB,GD,GE,GH,GM,HR, HU,ID,IL,IN,IS,JP,KE,KG,K P,KR,KZ,LC,LK,LR,LS,LT,LU ,LV,MA,MD,MG,MK,MN,MW,MX, NO,NZ,PL,PT,RO,RU,SD,SE,S G,SI,SK,SL,TJ,TM,TR,TT,TZ ,UA,UG,UZ,VN,YU,ZA,ZW Fターム(参考) 5B065 BA01 BA03 CA12 CC08 CE07 CE12 【要約の続き】 ・ドライブ・コントローラ回路。

Claims (46)

    【特許請求の範囲】
  1. 【請求項1】 ディスク・ドライブ・インターフェースと; I/Oインターフェースと; バッファ・メモリであって、これとディスク・ドライブ・インターフェース間
    でデータのやり取りをするとともに、これと前記I/Oインターフェース間でデ
    ータのやり取りをするバッファ・メモリと; 前記ディスク・ドライブ・インターフェースを少なくとも制御する第1プロセ
    ッサと; 低水準タスクを少なくとも実行する第2プロセッサと; メモリ回路であって、 前記バッファ・メモリに結合されたDMAポートと; 前記第1プロセッサと前記第2プロセッサに結合されたレジスタ・アクセス・
    ポートと; 前記第1プロセッサと前記第2プロセッサに結合されたランダム・アクセスポ
    ートと; 前記第1および第2プロセッサの少なくとも一つによってアクセス可能な読取
    ポインタと書込ポインタと; を含むメモリ回路と;を具備し、 データに効果的にアクセスし、または記憶させる柔軟性のある、マルチポート
    ・メモリ回路を含むディスク・ドライブ・コントローラ回路。
  2. 【請求項2】 メモリ利用カウンタをさらに含む請求項1に記載のディスク
    ・ドライブ・コントローラ回路。
  3. 【請求項3】 読取ポインタと書込ポインタが第1および第2プロセッサの
    いずれによってもロードされる請求項1に記載のディスク・ドライブ・コントロ
    ーラ回路。
  4. 【請求項4】 バッファ・メモリに書き込まれたデータのための巡回冗長コ
    ード(CRC)を検証するエラー検出モジュールをさらに含む請求項1に記載の
    ディスク・ドライブ・コントローラ回路。
  5. 【請求項5】 ディスク・ドライブ・インターフェースと; 前記ディスク・ドライブ・インターフェースからデータを少なくとも受信する
    ように結合されたバッファ・メモリと; 第1プロセッサと; 前記バッファ・メモリと前記第1プロセッサに結合されたダイレクト・メモリ
    ・アクセスを使用してロード可能なメモリ回路と;を具備し、 第1ポートを介しての第1転送中、前記バッファ・メモリと前記メモリ回路間
    でデータが転送されたときに、前記メモリ回路は先入れ先出しメモリとして作動
    するように形成されており、また前記第2ポートを介しての第2転送中、前記第
    1プロセッサによってアクセスされたときに、前記メモリ回路がランダム・アク
    セス・メモリとして作動するように形成されているディスク・ドライブ・コント
    ローラ。
  6. 【請求項6】 前記バッファ・メモリに結合されたファイバー・チャネル・
    インターフェースをさらに含み、データが前記バッファ・メモリと前記ファイバ
    ー・チャネル・インターフェース間にメモリ回路を介して転送される請求項5に
    記載のディスク・ドライブ・コントローラ。
  7. 【請求項7】 前記バッファ・メモリと前記メモリ回路に結合された制御回
    路をさらに含み、前記制御回路が前記バッファ・メモリからのファイバーチャネ
    ル制御ブロックを前記メモリ回路に転送するように形成されている請求項5に記
    載のディスク・ドライブ・コントローラ。
  8. 【請求項8】 前記メモリ回路がダイレクト・フレーム・アクセスを前記第
    1プロセッサによって少なくとも第1フレームに提供するように形成されている
    請求項5に記載のディスク・ドライブ・コントローラ。
  9. 【請求項9】 前記メモリ回路がファイバー・チャネル制御ブロックと関連
    するエラー検出コードを保持するような大きさに作成されている請求項5に記載
    のディスク・ドライブ・コントローラ。
  10. 【請求項10】 前記メモリ回路が少なくとも4個のポートを有している請
    求項5に記載のディスク・ドライブ・コントローラ。
  11. 【請求項11】 前記メモリ回路がレジスタ・アクセス・インターフェース
    とダイレクト・アクセス・インターフェースを有している請求項5に記載のディ
    スク・ドライブ・コントローラ。
  12. 【請求項12】 バッファ・メモリからメモリ回路に転送されるデータのた
    めに巡回冗長コード(CRC)をチェックするエラー検出モジュールをさらに含
    む請求項5に記載のディスク・ドライブ・コントローラ。
  13. 【請求項13】 前記メモリ回路が書込ポインターと、前記プロセッサによ
    ってロード可能、かつ、読取可能な書込ポインターをさらに含む請求項5に記載
    のディスク・ドライブ・コントローラ。
  14. 【請求項14】 バッファ・メモリ・アドレス・レジスタをさらに含む請求
    項5に記載のディスク・ドライブ・コントローラ。
  15. 【請求項15】 前記メモリ回路が少なくともプロセッサ・プログラム・コ
    ードを受信するように形成されている請求項5に記載のディスク・ドライブ・コ
    ントローラ。
  16. 【請求項16】 前記メモリ回路がフェッチ・アドレス・レジスタをさらに
    含む請求項5に記載のディスク・ドライブ・コントローラ。
  17. 【請求項17】 前記大容量記憶デバイス・コントローラが、 大容量記憶バッファ・メモリ・インターフェースと; プロセッサと; 第1ポートを使用して先入れ先出し法で前記大容量記憶バッファ・メモリ・イ
    ンターフェースからデータを受信するように結合されるべく形成されたダイレク
    ト・メモリ・アクセス転送を使用してロード可能な第1メモリ回路と;を具備し
    、 前記メモリ回路が第2ポートを使用してランダム・アクセス・メモリとして前
    記プロセッサによってアクセス可能であり、 コンピュータを大容量記憶デバイスにインターフェースする大容量記憶デバイ
    ス・コントローラ。
  18. 【請求項18】 前記第1メモリ回路に結合された第2メモリ回路であって
    、ランダム・アクセス・メモリとして形成されている第2メモリ回路と; 前記第2メモリ回路に結合されたファイバー・チャネル・インターフェースで
    あって、前記第2メモリ回路が前記ファイバー・チャネル・インターフェースか
    らファイバー・チャネル制御ブロックを受信するように形成されているファイバ
    ー・チャネル・インターフェースと; 前記プロセッサ、前記第1メモリ回路、および前記第2メモリ回路に結合され
    たステート・マシンであって、前記プロセッサから命令を受信し、これに応答し
    て、前記第2メモリ回路と前記第1メモリ回路間に前記ファイバー・チャネル制
    御ブロックを転送するように形成されているステート・マシンと; をさらに含む請求項17に記載の大容量記憶デバイス・コントローラ。
  19. 【請求項19】 前記第2メモリ回路がダイレクト・フレーム・アクセスを
    ファイバー・チャネル・フレームに提供するように形成されている請求項17に
    記載のディスク・ドライブ・コントローラ。
  20. 【請求項20】 前記大容量記憶デバイスからデータを受信し、また前記I
    /Oバスからデータを受信するように形成されたバッファ・メモリと; プロセッサと; 前記バッファ・メモリと前記プロセッサに結合されたメモリ回路であって、前
    記メモリ回路と前記バッファ・メモリ間のデータの少なくとも第1転送中、先入
    れ先出しメモリとして動作するように形成され、また前記メモリ回路と前記プロ
    セッサ間のデータの少なくとも第1転送中、ランダム・アクセス・メモリとして
    動作するように形成されたメモリ回路と;を具備する、 大容量記憶デバイスをI/Oバスを介してコンピュータにインターフェースす
    るための大容量記憶デバイス・コントローラ。
  21. 【請求項21】 メモリ回路がフルのときに、前記転送の少なくとも一つが
    休止する請求項20に記載の大容量記憶デバイス・コントローラ。
  22. 【請求項22】 前記メモリ回路がデータを前記バッファ・メモリにバース
    トするように形成されている請求項20に記載の大容量記憶デバイス・コントロ
    ーラ。
  23. 【請求項23】 前記メモリ回路が自動的に再ロードされ、一方でデータが
    前記メモリ回路から前記バッファ・メモリにバーストされる請求項20に記載の
    大容量記憶デバイス・コントローラ。
  24. 【請求項24】 前記メモリ回路が複数のディスク・ドライブ・コントロー
    ラ・レジスタ・ファイルに結合されている請求項20に記載の大容量記憶デバイ
    ス・コントローラ。
  25. 【請求項25】 前記メモリ回路が、転送サイズを前記メモリ回路サイズよ
    りも大きく指定する転送命令を受容するように形成されている請求項20に記載
    の大容量記憶デバイス・コントローラ。
  26. 【請求項26】 前記I/Oインターフェースがファイバー・チャネル・イ
    ンターフェースである請求項20に記載の大容量記憶デバイス・コントローラ。
  27. 【請求項27】 前記プロセッサ、前記バッファ・メモリおよび前記メモリ
    回路に結合されたステート・マシンをさらに含み、前記ステート・マシンがファ
    イバー・チャネル制御ブロックを前記バッファ・メモリから前記メモリ回路に転
    送するとともに、エラー検出コードをチェックする請求項20に記載の大容量記
    憶デバイス・コントローラ。
  28. 【請求項28】 前記大容量記憶デバイスが磁気ディスク・ドライブである
    請求項20に記載の大容量記憶デバイス・コントローラ。
  29. 【請求項29】 ホスト・コンピュータと; 前記ホスト・コンピュータに結合されたバスと; 大容量記憶デバイスと; 前記バスと前記大容量記憶デバイスに結合されたコントローラと;からなり、 前記コントローラが: 前記大容量記憶デバイスからデータを受信するとともに、前記I/Oバスから
    データを受信するように形成された第1メモリ回路と; プロセッサと; 前記第1メモリ回路と前記プロセッサに結合され、該第2メモリ回路と前記第
    1メモリ回路間でデータの少なくとも第1転送中に先入れ先出しメモリとして動
    作するように形成され、また該第2メモリ回路と前記プロセッサ間でデータの少
    なくとも第1転送中にランダム・アクセス・メモリとして動作するように形成さ
    れた第2メモリ回路と; を具備する大容量記憶デバイスを制御するシステム。
  30. 【請求項30】 プロセッサと同時に第2メモリにアクセスできる第2メモ
    リ回路に結合されたマイクロコントローラをさらに含む請求項29に記載のシス
    テム。
  31. 【請求項31】 プロセッサと同時に第2メモリにアクセスできる第2メモ
    リ回路に結合されたマイクロコントローラをさらに含む請求項29に記載のシス
    テム。
  32. 【請求項32】 前記大容量記憶デバイスからのデータを受信し、また前記
    I/Oバスからのデータを受信する手段と; 前記大容量記憶デバイス・コントローラを管理する手段と; 前記データ受信手段と前記管理手段に結合されデータを記憶する手段と; とからなり、 前記データを記憶する手段が、該データ記憶手段と前記データ受信手段間でデ
    ータの少なくとも第1転送中に先入れ先出しメモリとして動作するように形成さ
    れ、また該データ記憶手段と前記データ管理手段間でデータの少なくとも第1転
    送中にランダム・アクセス・メモリとして動作するように形成されたデータ記憶
    手段と; を具備する大容量記憶デバイスをI/Oバスを介してコンピュータにインター
    フェースするための大容量記憶デバイス・コントローラ。
  33. 【請求項33】 データ・パケットに関連するバッファ長さフィールドを第
    1メモリから、先入れ先出し(FIFO)メモリとして動作可能な第2メモリの
    第1位置に転送する工程であって、バッファ長さフィールドの少なくとも一部が
    データ・パケットを介して転送されるデータ量に関係する情報を含んでいるバッ
    ファ長さフィールド転送工程と; 前記データ・パケットの少なくとも一部を前記第1メモリから前記第2メモリ
    の少なくとも第2位置に転送する工程と; FIFOメモリとして動作可能な前記メモリから前記バッファ長さフィールド
    を読取り、次に前記第2メモリから前記データ・パケットの少なくとも一部を読
    取る工程と; からなる大容量記憶デバイス・コントローラ内のメモリ間でデータを転送する
    方法。
  34. 【請求項34】 バッファ長さフィールドの少なくとも一部がデータ・パケ
    ット内のCRCの位置を決定するのに使用される請求項33に記載の方法。
  35. 【請求項35】 バッファ・メモリ内のデータを受信する工程と; データをバッファ・メモリから、マルチポート・メモリの第1ポートを使用し
    てディスク・コントローラに位置付けされたマルチポート・メモリに転送する工
    程であって、第1ポートが先入れ先出しポートである工程と; データをマルチポート・メモリと第1ディスク・コントローラ・プロセッサ間
    に、マルチポート・メモリの第2ポートを使用して転送する工程であって、第1
    ディスク・コントローラが高水準タスクを実行するように形成されている工程と
    ; データをマルチポート・メモリと第3ディスク・コントローラ・プロセッサ間
    に、マルチポート・メモリの第3メモリ・ポートを使用して転送する工程であっ
    て、第2ディスク・コントローラが低水準タスクを実行するように形成されてい
    る工程と; からなるディスク・ドライブ・コントローラ内でデータにアクセスし記憶する
    方法。
  36. 【請求項36】 ディスク・コントローラ・マルチポート・メモリ内に記憶
    されたデータを修正する工程をさらに含む請求項35に記載のデータにアクセス
    する方法。
  37. 【請求項37】 ディスク・コントローラ・マルチポート・メモリから修正
    データを読み取る工程をさらに含む請求項36に記載のデータにアクセスする方
    法。
  38. 【請求項38】 前記ディスク・コントローラ・マルチポート・メモリから
    データをバッファ・メモリにバーストする工程をさらに含む請求項35に記載の
    データにアクセスする方法。
  39. 【請求項39】 バッファ・メモリからのデータを前記ディスク・コントロ
    ーラ・マルチポート・メモリに転送し、一方前記データに関連するエラー検出コ
    ードをチェックする工程をさらに含む請求項35に記載のデータにアクセスする
    方法。
  40. 【請求項40】 前記ディスク・コントローラ・マルチポート・メモリにデ
    ィスク・フォーマット・テーブルを記憶する工程と; 第2ポートを使用して記憶されたディスク・フォーマット・テーブルにアクセ
    スする工程と; をさらに含む請求項35に記載のデータにアクセスする方法。
  41. 【請求項41】 前記ディスク・コントローラ・マルチポート・メモリ内に
    位置付けされたプログラム・コードにアクセスする工程をさらに含む請求項35
    に記載のデータにアクセスする方法。
  42. 【請求項42】 ダイレクト・フレーム・アクセスを前記ディスク・コント
    ローラ・マルチポート・メモリ内に記憶されたファイバー・チャネル・フレーム
    に提供する工程をさらに含む請求項35に記載のデータにアクセスする方法。
  43. 【請求項43】 ディスク・コントローラに結合されたディスク記憶デバイ
    スと、ディスク・コントローラに結合されたバス間に転送されるデータを一時的
    に記憶する第1ディスク・コントローラ・プロセッサの管理下で、第1モードで
    第1メモリを使用する工程と; 第1ディスク・コントローラ・プロセッサに結合された第2メモリ内に第1コ
    ンテキストを記憶する工程と; 第2モードにおいて、第1メモリを使用して第1ディスク・コントローラ・プ
    ロセッサによって後ほど使用するために第2コンテキストを記憶する工程と; 第1事象に応答して少なくとも部分的に第1メモリに記憶された第2コンテキ
    スト情報の少なくとも一部と共に第2メモリに記憶された第1コンテキスト情報
    の少なくとも一部をスワッピングする工程と; 第1コンテキスト情報のスワップされた少なくとも一部をリストアし、第2事
    象に少なくとも部分的に応答して第2メモリに戻す工程と; からなるディスク・コントローラ内でのコンテキスト・スイッチング方法。
  44. 【請求項44】 第1ディスク・コントローラ・プロセッサに結合された第
    1メモリに第1コンテキストを記憶する工程と; ランダム・アクセス・メモリと、先入れ先出し(FIFO)メモリの両者とし
    て形成可能な第2メモリに第2コンテキストを記憶する工程と; 第1ディスク・コントローラ・プロセッサを使用し、第1コンテキストに関係
    しておりディスク・ドライブからのデータを通信リンクに転送する第1転送操作
    を管理する工程と; ディスク・ドライブが、通信リンクがデータを受信する能力に対して遅れをと
    ることを決定する工程と; 第1転送操作を保留する工程と; 第1メモリからの第1コンテキストを第2メモリ内に記憶された第2コンテキ
    ストでスワップする工程と; 第1ディスク・コントローラ・プロセッサを使用し、第2コンテキストに対応
    して第2転送操作を管理する工程と; 第2転送操作の少なくとも一部が完了した後、第2メモリから第1メモリへ第
    1コンテキストをリストアする工程と; 第1転送操作を完了する工程と; 第2メモリとバッファ・メモリ間で先入れ先出し方式でディスク・データを転
    送する工程と; からなるディスク・コントローラ内でのコンテキスト・スイッチング方法。
  45. 【請求項45】 コンテキスト情報をホールドするように形成された第1メ
    モリと; 第1メモリに記憶されたコンテキスト情報に基づいて操作を実行するように形
    成され、第1メモリに結合された第1ディスク・コントローラ・プロセッサと; 第1モードでランダム・アクセス・メモリとして作用し、また第2モードで先
    入れ先出しメモリとして作用するように形成され、代替のコンテキスト情報を記
    憶し、またディスク・データをバッファすることの両方に利用可能であり、第1
    メモリに結合される第2メモリと; 第1メモリに記憶されたコンテキスト情報の少なくとも一部を、第1事象に応
    答して第2メモリに記憶された代替のコンテキスト情報でスワップするように形
    成されたスワッピング回路と; からなるディスク・コントローラ関連コンテキストを記憶し、スワッピングす
    る回路。
  46. 【請求項46】 ディスク・ドライブと; ディスク・ドライブに結合され、ディスク・ドライブを制御するとともに、デ
    ィスク・ドライブとホスト・コンピュータ間に転送されるデータを管理するコン
    トローラと;からなり、 コントローラが: コンテキスト情報をホールドするように形成された第1メモリと; 第1メモリ内に記憶されたコンテキスト情報に基づいて操作を実行するように
    形成され、第1メモリに結合された第1ディスク・コントローラ・プロセッサと
    ; 第1モードでランダム・アクセス・メモリとして作用し、また第2モードで先
    入れ先出しメモリとして作用するように形成され、代替のコンテキスト情報を記
    憶し、またディスク・データをバッファすることの両方に利用可能であり、第1
    メモリに結合される第2メモリと; 第1メモリに記憶されたコンテキスト情報の少なくとも一部を、第1事象に応
    答して第2メモリに記憶された代替のコンテキスト情報でスワップするように形
    成されたスワッピング回路と; を含むディスク・ドライブ・システム。
JP2000615882A 1999-05-05 2000-05-05 ディスク・コントローラ・メモリ・アーキテクチャ用システムおよび方法 Expired - Lifetime JP4741735B2 (ja)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US13271299P 1999-05-05 1999-05-05
US09/547,567 US6330626B1 (en) 1999-05-05 2000-04-12 Systems and methods for a disk controller memory architecture
US60/132,712 2000-04-12
US09/548,330 US6401149B1 (en) 1999-05-05 2000-04-12 Methods for context switching within a disk controller
US09/548,330 2000-04-12
US09/547,567 2000-04-12
PCT/US2000/012433 WO2000067107A1 (en) 1999-05-05 2000-05-05 Systems and methods for a disk controller memory architecture

Publications (3)

Publication Number Publication Date
JP2002543514A true JP2002543514A (ja) 2002-12-17
JP2002543514A5 JP2002543514A5 (ja) 2008-12-04
JP4741735B2 JP4741735B2 (ja) 2011-08-10

Family

ID=27384336

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000615882A Expired - Lifetime JP4741735B2 (ja) 1999-05-05 2000-05-05 ディスク・コントローラ・メモリ・アーキテクチャ用システムおよび方法

Country Status (8)

Country Link
EP (1) EP1188106B1 (ja)
JP (1) JP4741735B2 (ja)
KR (1) KR100638378B1 (ja)
AT (1) ATE321298T1 (ja)
AU (1) AU4825600A (ja)
CA (1) CA2370596C (ja)
DE (1) DE60026836T2 (ja)
WO (1) WO2000067107A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006195990A (ja) * 2005-01-11 2006-07-27 Samsung Electronics Co Ltd 半導体ディスク制御装置
JP2012032962A (ja) * 2010-07-29 2012-02-16 Toshiba Corp バッファ管理装置、同装置を備えた記憶装置、及びバッファ管理方法

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030093751A1 (en) * 2001-11-09 2003-05-15 David Hohl System and method for fast cyclic redundancy calculation
CN100403727C (zh) * 2004-04-21 2008-07-16 华为技术有限公司 一种传递数据包编辑命令的装置及方法
US20060015659A1 (en) * 2004-07-19 2006-01-19 Krantz Leon A System and method for transferring data using storage controllers
US9201599B2 (en) 2004-07-19 2015-12-01 Marvell International Ltd. System and method for transmitting data in storage controllers
US8127089B1 (en) 2007-02-14 2012-02-28 Marvell International Ltd. Hard disk controller which coordinates transmission of buffered data with a host
WO2016109570A1 (en) * 2014-12-30 2016-07-07 Micron Technology, Inc Systems and devices for accessing a state machine

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5315708A (en) * 1990-02-28 1994-05-24 Micro Technology, Inc. Method and apparatus for transferring data through a staging memory
US6081849A (en) * 1996-10-01 2000-06-27 Lsi Logic Corporation Method and structure for switching multiple contexts in storage subsystem target device
US5890207A (en) * 1996-11-27 1999-03-30 Emc Corporation High performance integrated cached storage device

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006195990A (ja) * 2005-01-11 2006-07-27 Samsung Electronics Co Ltd 半導体ディスク制御装置
JP2012032962A (ja) * 2010-07-29 2012-02-16 Toshiba Corp バッファ管理装置、同装置を備えた記憶装置、及びバッファ管理方法
US8327043B2 (en) 2010-07-29 2012-12-04 Kabushiki Kaisha Toshiba Buffer management device which manages buffer transfer, storage apparatus comprising the same device, and buffer management method

Also Published As

Publication number Publication date
KR20020019437A (ko) 2002-03-12
WO2000067107A1 (en) 2000-11-09
CA2370596A1 (en) 2000-11-09
DE60026836T2 (de) 2006-09-21
KR100638378B1 (ko) 2006-10-25
DE60026836D1 (de) 2006-05-11
ATE321298T1 (de) 2006-04-15
JP4741735B2 (ja) 2011-08-10
EP1188106A1 (en) 2002-03-20
EP1188106B1 (en) 2006-03-22
AU4825600A (en) 2000-11-17
CA2370596C (en) 2010-01-12

Similar Documents

Publication Publication Date Title
US6401149B1 (en) Methods for context switching within a disk controller
US6330626B1 (en) Systems and methods for a disk controller memory architecture
US5740466A (en) Flexible processor-driven SCSI controller with buffer memory and local processor memory coupled via separate buses
EP0489504B1 (en) Bidirectional FIFO buffer for interfacing between two buses
US5805927A (en) Direct memory access channel architecture and method for reception of network information
US5828856A (en) Dual bus concurrent multi-channel direct memory access controller and method
US5655151A (en) DMA controller having a plurality of DMA channels each having multiple register sets storing different information controlling respective data transfer
AU651747B2 (en) Arbitration control logic for computer system having dual bus architecture
US7877524B1 (en) Logical address direct memory access with multiple concurrent physical ports and internal switching
US5884050A (en) Mechanism for high bandwidth DMA transfers in a PCI environment
US5664145A (en) Apparatus and method for transferring data in a data storage subsystems wherein a multi-sector data transfer order is executed while a subsequent order is issued
JP3433386B2 (ja) 入出力記憶装置への直接メモリアクセスを行う装置及び方法
US20050235072A1 (en) Data storage controller
US6636927B1 (en) Bridge device for transferring data using master-specific prefetch sizes
JP2002540499A (ja) ディスク・コントローラ・メモリへのアクセスを調停する調停方法およびシステム
US5555390A (en) Data storage method and subsystem including a device controller for respecifying an amended start address
US7130932B1 (en) Method and apparatus for increasing the performance of communications between a host processor and a SATA or ATA device
JP2001523860A (ja) 高性能構造ディスク・アレイ・コントローラ
US6330631B1 (en) Data alignment between buses
JP4741735B2 (ja) ディスク・コントローラ・メモリ・アーキテクチャ用システムおよび方法
US5613141A (en) Data storage subsystem having dedicated links connecting a host adapter, controller and direct access storage devices
WO2004104846A2 (en) Method and device for transferring data between a main memory and a storage device
US8769167B2 (en) Channel device, information processing system and data transfer method
JPH0628261A (ja) データ転送方法及び装置
EP0478337A2 (en) Process of storing data on, or retrieving data from a plurality of disks

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20060801

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20060823

RD05 Notification of revocation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7425

Effective date: 20060823

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070308

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080715

A524 Written submission of copy of amendment under article 19 pct

Free format text: JAPANESE INTERMEDIATE CODE: A524

Effective date: 20081015

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20081216

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090316

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20090420

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20090731

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110509

R150 Certificate of patent or registration of utility model

Ref document number: 4741735

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140513

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

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

EXPY Cancellation because of completion of term
S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R371 Transfer withdrawn

Free format text: JAPANESE INTERMEDIATE CODE: R371