JP2014120151A - 領域ロックを使用してi/o要求を複数の処理スタックを有する記憶コントローラに転送するための方法および構造 - Google Patents

領域ロックを使用してi/o要求を複数の処理スタックを有する記憶コントローラに転送するための方法および構造 Download PDF

Info

Publication number
JP2014120151A
JP2014120151A JP2013056228A JP2013056228A JP2014120151A JP 2014120151 A JP2014120151 A JP 2014120151A JP 2013056228 A JP2013056228 A JP 2013056228A JP 2013056228 A JP2013056228 A JP 2013056228A JP 2014120151 A JP2014120151 A JP 2014120151A
Authority
JP
Japan
Prior art keywords
request
processing stack
firmware
lock
processing
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.)
Ceased
Application number
JP2013056228A
Other languages
English (en)
Other versions
JP2014120151A5 (ja
Inventor
Weiner Adam
ウェイナー アダム
l sheffield Robert
エル.シェフィールド ロバート
Krishnamurthy Naveen
クリシュナマースィ ナヴェーン
Sundrani Kapil
サンドラニ カピル
Srinivasa Murthy Rajeev
スリニヴサ マースィ ラジーヴ
Narayanamurthy Anand
ナラヤナマースィ アナンド
Cristian Simionescu Horia
クリスチャン シミオネスキュー ホリア
A Rizzo James
エー.リッゾー ジェームス
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
LSI Corp
Original Assignee
LSI Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by LSI Corp filed Critical LSI Corp
Publication of JP2014120151A publication Critical patent/JP2014120151A/ja
Publication of JP2014120151A5 publication Critical patent/JP2014120151A5/ja
Ceased legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • 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
    • 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/0629Configuration or reconfiguration of storage systems
    • G06F3/0635Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
    • 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/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Security & Cryptography (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Storage Device Security (AREA)

Abstract

【課題】領域ロックを使用して、接続されたホストシステムから受信されたI/O要求をコントローラ内の複数の処理スタック(102、104)のうちの1つに効率的に転送するための方法および構造を記憶コントローラ(100)内に提供すること。
【解決手段】コントローラ内の領域ロックモジュール(106)は、それぞれの処理スタックが記憶デバイスのブロックアドレスの範囲に関して領域ロックを要求することを可能にする。I/O要求が複数の処理スタックのうちの特定の1つに転送されるべきブロックアドレスの範囲を識別するために転送タイプのロック要求を確立することが可能である。
【選択図】図1

Description

本発明は、全体として、記憶コントローラに関し、より詳細には、領域ロック構造を使用して、I/O要求を記憶コントローラの複数のI/O処理スタックのうちの1つに転送するための方法および構造に関する。
関連特許
本特許は(本明細書で集合的に「関連特許」と呼ばれる)以下の共同所有された米国特許および/または特許出願に関する。
2010年4月14日に出願した、「APPARATUS AND METHODS FOR TREE MANAGEMENT ASSIST CIRCUIT IN A STORAGE SYSTEM」という表題の米国特許出願第12/760,415号
2010年4月14日に出願した、「APPARATUS AND METHODS FOR REGION LOCK MANAGEMENT ASSIST CIRCUIT IN A STORAGE SYSTEM」という表題の米国特許出願第12/760,434号
2005年10月19日に出願した、「METHODS AND SYSTEMS FOR LOCKING IN STORAGE CONTROLLERS」という表題の米国特許第7,529,902号
これらのすべては参照によって本明細書に組み込まれている。
記憶コントローラは、1つまたは複数のホストシステムからI/O要求を受信して、そのような受信された要求を処理して、記憶コントローラに結合した記憶デバイス上にデータを記憶するか、またはその記憶デバイス上のデータを取り出すように適合されたデバイスである。例えば、RAID(独立ドライブの冗長アレイ)記憶コントローラは、それぞれが1つまたは複数の物理記憶デバイスの一部を含む、1つまたは複数の論理ボリュームを管理する。RAIDコントローラは、論理ボリュームの論理ブロックアドレスを記憶デバイスの対応する物理ブロックにマッピングし、(論理ボリュームに関して定義された特定のRAID記憶管理技法の冗長性ポリシーとストライピングポリシーとに従って)強化された信頼性および/もしくは性能のためのデータの冗長性ならびに/またはストライピングを提供する。
高性能記憶コントローラが、I/O要求を処理する際に記憶コントローラの性能を強化するためにキャッシュメモリを利用することは一般的である。例えば、要求されたデータを、論理ボリュームを含む記憶デバイスから取り出すことよりも、要求されたデータをキャッシュメモリから取り出すことによって、後続の読取りI/O要求をはるかに迅速に満たすことができるように、ホストシステムによって論理ボリュームに書き込まれたデータを記憶コントローラのキャッシュメモリ内に記憶することが可能である。一部の記憶コントローラは、データがキャッシュメモリと記憶デバイスの両方に書き込まれる「ライトスルー(write−through)」キャッシュとしてキャッシュメモリを管理することができる。一部のコントローラは、データがキャッシュメモリに書き込まれ、ある後の時点で(例えば、記憶コントローラがI/O要求をあまり忙しく処理していないときに)だけ記憶デバイスにポスト/フラッシュされる「ライトバック(write−back)」モードでキャッシュメモリを管理することができる。ライトバックモードの場合、キャッシュメモリ内にはあるが、記憶デバイス上にまだ記憶されていない(「ダーティデータ(dirty data)」と呼ばれる)データが存在する場合もある。
一部の記憶コントローラ(例えば、高性能RAID記憶コントローラ)は、I/O要求を処理するための複数の処理経路または処理スタックを記憶コントローラ内に提供する。例えば、LSI Corporationからの一部の記憶コントローラは、ファームウェア処理スタック(例えば、コントローラの汎用プロセッサまたは専用プロセッサによって実行されるファームウェア命令として一般に実施される第2の/従来の処理経路)と共に動作可能な「高速経路」処理回路(例えば、第1の処理経路/処理スタック)を提供する。LSI Corporationの高速経路処理回路は、ホストシステム上の専用ドライバと協働して、高速経路回路が要求を迅速に処理することを可能にするようにフォーマットされたI/O要求をより迅速に処理する(例えば、ホストシステム拡張ドライバは、RAIDマッピングを理解して、基礎となる物理記憶デバイスに直接的にアクセスするために高速経路要求を生成し、それにより、高速経路回路がI/O要求を迅速に処理することを可能にする)。ファームウェア処理経路は、(例えば、高速経路I/O要求としてのそのフォーマットにかかわらず、I/O要求を処理するために)任意のホストシステムから受信された任意のタイプのI/O要求を処理するように適合されている。ファームウェアスタックは、命令を実行して、完全なRAIDマッピングおよびRAID管理を提供する汎用プロセッサを使用して、より一般化された処理に対処する。したがって、ファームウェア処理スタックは、より柔軟ではあるが、高速経路回路が行うよりも、I/O要求の処理がより遅い。
複数の処理スタックを有する(例えば、高速経路回路経路とファームウェア処理スタックとを有する)そのような記憶コントローラでは、記憶コントローラによる一部の初期処理は、複数の処理スタックのうちどれが特定のI/O要求を処理するのに適しているかを判断する必要がある。この初期処理は、要因の数に応じて、複雑なプロセスであり得る。例えば、記憶コントローラがライトバックモードでそのキャッシュメモリを利用する場合、高速経路処理回路の使用は、まだ記憶デバイスにフラッシュまたはポストされていない現在ダーティデータが記憶コントローラのキャッシュメモリ内に存在する場合、データの整合性問題を生じさせる可能性がある。オプションで、高速経路回路をそのようなコントローラ内で同調することが可能であり、それにより、その高速経路回路がキャッシュメモリのコンテンツを認識せず、したがって、ダーティデータがフラッシュされた場合に後で上書き可能なデータを記憶デバイスに書き込むことができるようになる。または、高速経路回路によってアクセスされるブロックに関するダーティデータ(より最新なデータ)が現在キャッシュメモリ内に記憶されているため、高速経路回路は記憶デバイスから最新でないデータを読み取ることができる。さらに、例えば、ファームウェア処理スタックが論理ボリュームからもしくは特定の記憶デバイスからデータを記憶する際または取り出す際に回避すべき不良ブロックのリストを維持する場合、高速経路処理回路は、その不良ブロックのリストを認識していない可能性があり、潜在的な不良ブロックにアクセスすることを試みることによって、この場合も、データの整合性問題を生じさせる可能性がある。高速経路回路は、ファームウェア処理スタックだけが不良であり得ることを認識しているそのような不良ブロックからデータを読み取ることまたはそのような不良ブロックに書き込むことを試みる場合がある。ファームウェアI/O要求処理スタックが、より小さなI/O要求を結合して(coalescing)、フルストライプ書込み(full−strip writes)を形成すること、I/O要求をストリーミングするための最適化など、ある種の最適化に現在従事しているその他の状況が生じる可能性がある。これらのおよびその他の理由は、特定のプロセッサを指定または選好するためにホストが要求を符号化するにもかかわらず、記憶コントローラのあるI/O要求プロセッサを別のI/Oプロセッサよりも選好させる可能性がある。
複数の処理スタックのうちのどれがI/O要求を処理するのに最も適しているかを判断する様々な状態を明らかにすることは、時間がかかり、かつ複雑な手順であり得る。したがって、本技法は、ある状態が生じる可能性がある場合、これらのまたはその他の潜在的な問題を回避するために、複数の処理スタックのうちの1つの使用を単に無効にする(例えば、LSI Corporationの記憶コントローラの高速経路I/O処理回路の使用を無効にする)ことができる。例えば、(特定の高速経路I/O要求がそのダーティデータにアクセスできるかどうかにかかわらず)何らかのダーティデータが現在ライトバック・キャッシュメモリ内に記憶されている場合、または(特定の高速経路I/O要求がそれらの不良ブロックにアクセスすることができるかどうかにかかわらず)何らかのブロックがファームウェア処理スタックによって「不良ブロック」として指定されている場合、ファームウェア処理スタックは、高速経路処理回路を無効にして、より遅いが、より一般化されたその処理経路を介して、すべてのI/O要求を処理することを選択する。慎重な設計手法では、高速経路回路を対象とするI/O要求の処理によってこれらのおよびその他の問題が生じることを回避するためにLSI高速経路I/O処理回路を単に無効にすることが可能である。高速経路I/O処理回路の使用を無効にすることは、記憶コントローラの性能を劣化させる可能性がある。
したがって、I/O処理スタックのうちのどれが特定のI/O要求を処理するのに最も適しているかを効果的かつ効率的に判断し、データの整合性の問題のリスクなしに、受信されたI/O要求を好ましい選択されたI/O処理スタックに転送することが現在の課題である。
本発明は、上記のおよびその他の問題を解決し、それによって、領域ロックを使用して、接続されたホストシステムから受信されたI/O要求を記憶コントローラ内の複数の処理スタックのうちの1つに効率的に転送するための方法および構造をそのコントローラ内に提供することによって、有用な最新技術を前進させる。コントローラ内の領域ロックモジュールは、それぞれの処理スタックが記憶デバイスのブロックアドレスの範囲に関して領域ロックを要求することを可能にする。I/O要求が複数の処理スタックのうちの特定の1つに転送されるべきブロックアドレスの範囲を識別するために転送タイプのロック要求を確立することが可能である。
高速経路フォーマットI/O要求を処理するための高速経路回路と、任意の形態のI/O要求を処理するためのファームウェア処理スタックとを有するコントローラの1つの例示的な実施形態では、ファームウェア処理スタックは、領域ロックモジュールがブロックアドレスの範囲に関して転送タイプの領域ロックを確立することを要求することができる。ブロックアドレスの範囲は、キャッシュ内および/または潜在的な不良ブロックアドレス内のダーティデータに関連する。高速経路回路がI/O要求を処理するためにブロックの範囲をロックすることを試みるとき、I/O要求に関するブロックの範囲のいずれかの部分をカバーする転送タイプのロックは、I/O要求をファームウェア処理スタックに転送させることになる。
本発明の一態様では、1つまたは複数のホストシステムに結合するように適合され、かつ記憶コントローラに結合した1つまたは複数の記憶デバイスにおいてデータを管理するように適合された記憶コントローラが提供される。この記憶コントローラは、接続されたホストシステムから受信された高速経路処理用にフォーマットされたI/O要求を処理するように適合された高速経路回路と、コントローラのプロセッサにおいて動作するファームウェア処理スタックであって、任意のフォーマットのI/O要求を処理するように適合されたファームウェア処理スタックとを備える。コントローラは、高速経路回路に結合し、かつファームウェア処理スタックに結合した領域ロックモジュールをさらに備える。領域ロックモジュールは、ブロックアドレスの指定された範囲をロックするためのロック要求信号を受信するように適合され、ブロックアドレスの現在ロックされている範囲の状況に基づいて、受信された高速経路フォーマットI/O要求がファームウェア処理スタックに転送されるべきかどうかを判断するようにさらに適合されている。記憶コントローラは、高速経路フォーマットI/Oがファームウェア処理スタックに転送されるべきであることを判断することに応答して、高速経路フォーマットI/O要求を処理するためのファームウェア処理スタックに転送するようにさらに適合されている。
本発明のその他の態様は、方法を実施するコンピュータ可読媒体と、方法自体とを提供する。この方法は、1つまたは複数のホストシステムに結合するように適合され、かつ1つまたは複数の記憶デバイスに結合するように適合された記憶コントローラ内で動作可能である。記憶コントローラは、ホストシステムから受信された高速経路フォーマットI/O要求を処理するための高速経路回路を有し、かつ任意のフォーマットのI/O要求を処理するためのファームウェア処理スタックを有する。この方法は、高速経路フォーマットI/O要求を受信することと、コントローラの領域ロックモジュールの動作によって、ブロックアドレスの現在ロックされている範囲の状況に基づいて、受信された高速経路フォーマットI/Oがファームウェア処理スタックに転送されるべきであるかどうかを判断することとを含む。この方法は、次いで、高速経路フォーマットI/O要求がファームウェア処理スタックに転送されるべきであるという判断に応答して、高速経路フォーマットI/O要求を処理するためのファームウェア処理スタックに転送する。
I/O要求の処理をコントローラのある処理スタックから別の処理スタックに転送するために転送タイプの領域ロックの管理を実現するための、本発明の特徴および態様に従って拡張された例示的な記憶コントローラのブロック図である。 I/O要求の処理をコントローラのある処理スタックから別の処理スタックに転送するために転送タイプの領域ロックの管理を実現するための、本発明の特徴および態様による例示的な方法を説明する流れ図である。 I/O要求の処理をコントローラのある処理スタックから別の処理スタックに転送するために転送タイプの領域ロックの管理を実現するための、本発明の特徴および態様による例示的な方法を説明する流れ図である。 I/O要求の処理をコントローラのある処理スタックから別の処理スタックに転送するために転送タイプの領域ロックの管理を実現するための、本発明の特徴および態様による例示的な方法を説明する流れ図である。 I/O要求の処理をコントローラのある処理スタックから別の処理スタックに転送するために転送タイプの領域ロックの管理を実現するための、本発明の特徴および態様による例示的な方法を説明する流れ図である。 I/O要求の処理をコントローラのある処理スタックから別の処理スタックに転送するために転送タイプの領域ロックの管理を実現するための、本発明の特徴および態様による例示的な方法を説明する流れ図である。 I/O要求の処理をコントローラのある処理スタックから別の処理スタックに転送するために転送タイプの領域ロックの管理を実現するための、本発明の特徴および態様による例示的な方法を説明する流れ図である。 I/O要求の処理をコントローラのある処理スタックから別の処理スタックに転送するために転送タイプの領域ロックの管理を実現するための、本発明の特徴および態様による例示的な方法を説明する流れ図である。 図2から図8の方法を実施するコンピュータ可読媒体を受信するように適合された、図1の記憶コントローラなど、記憶コントローラの例示的なコンピューティングデバイスのブロック図である。
図1は、1つまたは複数のホストシステム120に結合し、かつ1つまたは複数の記憶デバイス130に結合するように適合された拡張記憶コントローラ100を備えたシステムのブロック図である。ホストシステム120は、記憶デバイス130にアクセスするためのI/O要求を生成する任意の適切なコンピューティングデバイスまたはその他のシステムであってもよい。記憶デバイス130は、磁気ディスクドライブまたは光ディスクドライブ、固体ドライブなど、データを記憶するための任意の適切なデバイスであってもよい。記憶コントローラ100は、インターフェース150によってホストシステム120に結合可能である。インターフェース150は、例えば、シリアル・アタッチド(Serial Attached)SCSI(SAS)、パラレルSCSI、パラレル・アドバンスド・テクノロジー・アタッチメント(parallel Advanced Technology Attachment)(PATA)、シリアルATA(SATA)、ペリフェラル・コンポーネント・インターコネクト(PCIエクスプレスなど、PCIの変形を含むPCI)などを含めて、記憶コントローラ100をホストシステム120に結合するための任意の適切な通信媒体および通信プロトコルを備えることが可能である。記憶コントローラ100は、インターフェース152を経由して記憶デバイス130に結合可能である。インターフェース152は、例えば、パラレルSCSI/SAS、PATA、SATA、PCI、ファイバー・チャネルなどを含めて、記憶コントローラ100を記憶デバイス130に結合するための任意の適切な通信媒体および通信プロトコルを備えることが可能である。
記憶コントローラ100は、両方とも、記憶デバイス130にアクセスすることによって、接続されたホストシステムから受信されたI/O要求を処理するように適合された高速経路回路102とファームウェア処理スタック104とを備える。回路102およびスタック104は両方とも、処理「スタック」と呼ばれる場合がある。したがって、コントローラ100は、I/O要求を処理するための複数のスタックを備える。さらに、コントローラ100のある実施形態では、設計変更として、任意の数のそのような処理スタックを提供することが可能である。コントローラ100は、概して、本明細書において下でさらに議論される領域ロックを含む転送情報に基づいて、I/O要求をある処理スタックから別の処理スタックに転送するように動作可能である。ある処理スタックがI/O要求を正確に処理することができるならば、データの潜在的な汚染を回避するために領域ロックによるそのような転送を使用することが可能である。例えば、性能の強化および最適化のために別の処理スタックに対してある処理スタックを選好するために転送領域ロックを使用することも可能である。
ファームウェア処理スタック104は、汎用プロセッサおよび専用プロセッサ(図示せず)と、汎用プロセッサまたは専用プロセッサによって実行するためにプログラム命令およびデータを記憶するための関連するプログラムならびにデータメモリ(図示せず)とを備える。ファームウェア処理スタック104のプログラム命令は、スタック104が任意の適切なコマンド構造に従ってフォーマットされたI/O要求をホストシステム120から受信して、その受信されたI/O要求を処理して、記憶デバイス130上の情報にアクセスすることを可能にする。
上述のように、スタック104は、論理ボリュームを対象とするI/O要求に関連するRAID記憶管理を含めて、いずれかのI/O要求およびすべてのI/O要求を処理する柔軟性を提供するが、スタック104の処理は、ある種のタイプのI/O要求の処理に所望されるよりもより遅い場合がある。したがって、記憶コントローラ100は、高速経路回路102をさらに備える。高速経路回路102は、システム120内の拡張ドライバから受信された、高速経路回路102によって処理するためにフォーマットされたI/O要求に対処するために特に設計された電子回路を備える。LSI Corporationからのいくつかの記憶コントローラは、データにアクセスする際に記憶コントローラ100の性能を改善するために拡張ドライバモジュールと組み合わせたそのような高速経路回路の使用を例示する。概して、ホストシステム120の拡張ドライバ(図示せず)は、RAID管理に関してコントローラ100によって維持されるマッピング情報に類似した、記憶コントローラ100によって管理されるRAID論理ボリュームに関するマッピング情報に対するアクセスを有する。ホスト120の拡張ドライバは、ファームウェア処理スタック104を利用する記憶コントローラ100よりも、必須の論理対物理マッピング(logical to physical mapping)をより迅速かつ効率的に選択的に実行することができる。そのような場合、ホストシステム120の拡張ドライバは、任意の必要とされる論理対物理マッピングまたはその他の必要とされる論理ボリューム管理演算に関してその独自の処理能力を利用して、高速経路フォーマットI/O要求を作成する。高速経路フォーマットI/O要求は、次いで、記憶コントローラ100に転送されて、高速経路回路102によって処理される。
ファームウェア処理スタック104は、任意の適切なプロセッサまたはシステムバス154によって、キャッシュメモリ108と不良ブロックメモリ110とに結合する。キャッシュメモリ108および不良ブロックメモリ110のそれぞれは、例えば、ダイナミック・ランダム・アクセス・メモリ(DRAM)、フラッシュメモリなどを含めて、任意の適切なメモリ構成要素を含むことが可能である。当技術分野で一般に知られているように、ファームウェア処理スタック104は、記憶デバイス130宛ての書込みI/O要求に関連するデータを記憶するためにキャッシュメモリ108を利用する。管理キャッシュメモリ108のライトスルーモードで、ファームウェア処理スタック104は、書込みI/O要求に関連する書込みデータをキャッシュメモリ108内に記憶して、その書込みデータを記憶デバイス130上にも(実質的に同時に)記憶する。キャッシュメモリ108内にそのように記憶されたデータは、次いで、起動するとき、それに関するデータが現在キャッシュメモリ内に記憶されているブロックアドレスからデータを要求する後続の読取り要求をより迅速に満たすために、ファームウェア処理スタック104によって利用可能である。加えて、ファームウェア処理スタック104は、特定のブロックアドレス、または潜在的な不良ブロックであり得るブロックアドレスの範囲を識別することができる。ファームウェア処理スタック104内で任意の適切な技法を利用して、「不良」と見なすことができるブロックを識別することが可能である。ファームウェア処理スタック104は、I/O要求のその処理において回避すべきブロックに留意するために、そのようなブロックアドレスを不良ブロックメモリ110内に記録する。コントローラ100内のこれらのおよびその他の機能は、本発明の転送タイプの領域ロックの特徴および態様の利益を享受することができる。1つの要求処理スタックまたは要求処理回路を対象とする要求が異なる処理スタックまたは処理回路に転送されるべき、コントローラ100内の何らかの状況において、本発明の転送タイプの領域ロックの特徴および態様は、最小のオーバヘッド処理でそのような判断を効率的に行うことを実現する。
高速経路回路102およびファームウェア処理スタック104は両方とも、(例えば、それぞれ、通信経路156および158を経由して)コントローラ100の領域ロックモジュール106と相互に作用する。領域ロックモジュール106は、ロック要求を高速経路回路102から受信して、領域ロック解放要求をファームウェア処理スタック104から受信するための任意の適切な回路を備える。領域ロック要求は、概して、それに関してI/O要求処理スタックがアクセス(すなわち、読取りのための一時的な共有アクセス、何らかの動作のための独占的なアクセスなど)を必要とするブロックアドレスの範囲を識別する。例えば、高速経路回路102が受信された高速経路フォーマットI/O要求を処理するために必要とされる、影響を受けたブロックアドレスの範囲を識別するとき、高速経路回路102は、経路156を経由して、領域ロックモジュール106に対してロック要求を発行する。領域ロックモジュール106は、高速経路回路102またはファームウェア処理スタック104のいずれかに対して現在ロックされているブロックの範囲を識別するデータ構造を関連する領域ロックメモリ(図示せず)内に維持する。新しいロック要求に応答して、領域ロックモジュール106は、新しい要求によって識別されたブロックアドレスの範囲が現在許可されている領域ロックに関連するブロックアドレスの範囲のいずれかの部分と重複するかどうかを判断する。そのような重複が検出された場合、領域ロックモジュール106は、そのロックを拒否するか、またはその新しい要求に関するブロックアドレスの範囲が現在許可されているロックに関連するブロックアドレスのいずれかの部分と重複しなくなるまで、ロックを許可することを遅延させる。同様に、高速経路処理回路102およびファームウェア処理スタック104は、そのアクセスの必要性が満たされたとき(すなわち、関連するI/O要求が処理されたとき)、領域ロックモジュール106に対してロック解放要求も発行する。いくつかの例示的な実施形態では、領域ロックモジュール106は、受信されたI/O要求が、高速経路I/O要求としてフォーマットされているか、またはそのようにフォーマットされていないかを検出するための初期経路指定構成要素として機能することも可能である。そのような例示的な実施形態では、モジュール106を(適切な通信媒体および通信プロトコルを介して)ホスト120に直接的に結合することが可能であるのに対して、回路102およびスタック104は、その場合、モジュール106と直接的に(したがって、ホスト120と間接的に)結合する。コントローラ100の要素のこれらのおよびその他の構成ならびに配置は、設計変更として、当業者に明らかになるであろう。
本発明の特徴および態様により、ファームウェア処理スタック104は、(経路158を経由して)領域ロックモジュール106に対して転送タイプのロック要求を発行することができる。転送タイプのロック要求は、考えられるデータ汚染を回避するために、かつ/または性能強化の最適化を可能にするために、それに関して、ブロックアドレスの識別された範囲に影響を及ぼし得るすべてのI/O要求が複数のI/O要求処理スタックのどちら一方(例えば、高速経路回路102またはファームウェア処理スタック104)に転送されるべきであるブロックアドレスの範囲を識別する。より詳細には、例えば、ファームウェア処理スタック104は、キャッシュメモリ108およびメモリの不良ブロック110の使用を管理することができる。上述のように、ファームウェア処理スタック104がライトバックモードでキャッシュメモリ108を管理するとき、受信されたI/O要求に関連する書込みデータをキャッシュメモリ108内に記憶して、「ダーティデータ」としてマーキングすることが可能である。ファームウェア処理スタック104がそのようなダーティデータをキャッシュメモリ108内に記憶するとき、ファームウェア処理スタック104は、それに関してさらなるI/O要求がファームウェア処理スタック104に転送されるべきブロックアドレスの対応する範囲を識別するために、領域ロックモジュール106に対して転送タイプのロック要求を発行することも可能である。高速経路回路102が次に高速経路フォーマットI/O要求に関するブロックアドレスの範囲をロックすることを試みるとき、領域ロックモジュール106は、許可された転送タイプのロックの重複を検出して、高速経路フォーマット要求をさらに処理するためのファームウェア処理スタック104に転送することを余儀なくすることになる。したがって、ファームウェア処理スタックがすでに転送タイプの領域ロックを獲得しているブロックアドレスの範囲宛ての高速経路フォーマットI/O要求は、ファームウェア処理スタック104によって処理するために、高速経路回路102から転送されることになる。上述のように、領域ロックは、ファームウェア処理スタック104によって処理するために、高速経路フォーマットI/O要求を高速経路回路102から転送するためのいくつもの理由により、ファームウェア処理スタック104によって採用可能である。上述のようにデータ汚染を回避すること以外に、転送領域ロックは、より小さな動作を結合してより大きな動作にすること、I/O処理スタック間のロード・バランシング、ストリーミングI/O最適化など、利用可能であり得る様々な最適化の適切な動作を保証するために、ファームウェア処理スタック104によって利用可能である。
太線の破線矢印160および162は、ファームウェア処理スタック104によってさらに処理するために、高速経路回路102によって受信された高速経路フォーマットI/O要求の転送を表す。いくつかの例示的な実施形態では、領域ロックモジュール106は、高速経路フォーマットI/O要求を処理する前に、高速経路回路102がブロックアドレスの範囲をロックすることを試みることに応答して、(破線矢印162によって示されるように)転送を実行することができる。その他の例示的な実施形態では、高速経路回路102は、ブロックアドレスの範囲に関するそのアクセスロック要求が高速経路フォーマットI/O要求によってアクセスされることを要求して、さらに処理するために、ブロックアドレスの影響を受けた範囲がファームウェア処理スタック104に転送されるべきであることを示す拒否信号を領域ロックモジュール106から受信することが可能である。そのような例示的な実施形態では、破線矢印160によって示されるように、高速経路回路102自体が高速経路フォーマットI/O要求をファームウェア処理スタック104に転送するための処理を実行することができる。
いくつかの例示的な実施形態では、領域ロックモジュール106は、潜在的に重複するロック要求の位置を突き止めるための迅速な検索を可能にするために、現在許可されているロック(アクセスロック、ならびに転送タイプのロック)に関する情報をツリー構造で維持する。このツリー構造エントリーは、領域ロックモジュール106による迅速な検索を可能にするためにブロックアドレスの範囲によって組織される。このツリー構造は、領域ロックモジュール106内の適切に設計されたカスタム回路によって維持可能であり、またはその他の例示的な実施形態では、領域ロックモジュール106の回路に関連する追加のカスタム回路論理によって提供可能である。上述の関連特許は、そのようなツリー構造を実施することに関して、かつそのようなツリー構造を管理するように適合されたカスタム回路に関して例示的な詳細を提供する。そのようなツリー構造は、1つの可能な実施形態を表す点を理解されよう。ロックに関する情報を記録および取り出すために、多数のその他のデータ構造および対応する管理記録を用いることが可能である。例えば、これらのためにハッシュ表構造を用いることが可能である。
高速経路フォーマットI/O要求の転送および転送タイプの領域ロックの関連する管理に関する、記憶コントローラ100の動作の方法の例示的な追加の詳細が、他の図面に関して本明細書において下で議論される。当業者は、本発明の転送タイプの領域ロックの特徴および態様は、(例えば、ファームウェア/従来の処理スタックと共にLSI Corporationの高速経路回路など)少なくとも2つの処理スタック/処理プロセッサを有する任意の記憶コントローラ・アーキテクチャ内で適用可能であり得る点を容易に認識されよう。本発明の特徴および態様は、要求を(名目上、要求の対象となる)ある処理スタックからコントローラの別の処理スタックに転送するために迅速な決定が所望される、任意のそのような記憶コントローラ・アーキテクチャに有利に適用することができる。さらに、当業者は、完全に機能的な記憶コントローラ内に存在し得る多数の追加の要素および等価の要素を容易に認識されよう。この議論を分かりやすく、短くするために、そのような追加の要素および等価の要素は本明細書で省略される。
図2から図8は、本発明の特徴および態様による、高速経路フォーマットI/O要求を記憶コントローラの高速経路処理回路からファームウェア処理スタックに転送するのを管理するための例示的な方法を説明する流れ図である。図2から図8の方法は、概して、図1の記憶コントローラ100など、拡張記憶コントローラ内で動作可能である。ステップ200で、拡張記憶コントローラは、高速経路フォーマットI/O要求を受信する。そのような要求は、拡張記憶コントローラの高速経路回路によって直接的に受信可能であるか、または受信されたI/O要求が高速経路I/O要求としてフォーマットされているかどうかを判断して、そうである場合、その要求を高速経路回路に転送するように動作可能な、コントローラの選択モジュールによって当初受信可能である。ステップ202で、拡張記憶コントローラは、許可されたロックの現在の状況に基づいて、詳細には、本明細書において下でさらに議論される転送タイプのロックに基づいて、高速経路フォーマットI/O要求がファームウェア処理スタックによって処理されるべき任意のブロックアドレスに対するアクセスを試みているかどうかを判断する。概して、高速経路回路は、受信された高速経路フォーマットI/O要求内で識別されたブロックアドレスの範囲に対するアクセスを要求している拡張記憶コントローラの領域ロックモジュールにロック要求信号を印加することになる。領域ロックモジュールは、次いで、ブロックアドレスの識別された範囲が任意の現在許可されているロックに関連するブロックアドレスの範囲と重複するかどうかについて、ステップ202によって示される判断を行う。詳細には、領域ロックモジュールは、ブロックアドレスの要求された範囲が領域ロックモジュールによって先に許可された任意の転送タイプのロックと重複するかどうかを判断することになる。ブロックアドレスのそのような重複が識別されない場合、ステップ204は、高速経路フォーマットI/O要求に従って、ブロックアドレスの識別された範囲にアクセスするために、高速経路回路の通常の処理を継続する(次いで、領域ロックモジュールによって許可されたアクセスロックを解放する)。あるいは、領域ロックモジュールが高速経路フォーマットI/O要求によってアクセスされることになるブロックアドレスの範囲が先に許可された転送タイプのロック要求内のブロックアドレスの範囲の何らかの部分と重複することを判断した場合、I/O要求を満たすために、高速経路フォーマットI/O要求をファームウェア処理スタックに転送するために、次にステップ206が動作可能である。高速経路フォーマットI/O要求を拡張記憶コントローラのファームウェア処理スタックにそのように転送することによって、データ汚染を回避することができ、(現在実施されているように)拡張記憶コントローラの高速経路回路を完全に無効にせずにファームウェア処理スタック最適化を有利に利用することができる。これにより、高速経路回路によって処理され得る高速経路フォーマットI/O要求に関して、拡張記憶コントローラの所望される性能レベルを維持することが可能であると同時に、ファームウェア処理スタックに転送されるべき要求をそういうものとして迅速に識別することができる。
図3は、領域ロックを使用することによって、高速経路フォーマットI/O要求を拡張記憶コントローラの高速経路回路からファームウェア処理スタックに転送するための、本発明の特徴および態様によるある方法の例示的な追加の詳細を説明する流れ図である。図3の方法は、拡張記憶コントローラの領域ロックモジュールと共に動作可能な拡張記憶コントローラの高速経路回路による処理を反映する。ステップ300で、高速経路フォーマットI/O要求がホストシステムから受信される(すなわち、ホストから直接的に受信されるか、または拡張記憶コントローラの予備選択構成要素を介して間接的に受信される)。ステップ302は、次いで、高速経路フォーマットI/O要求によってアクセスするために識別されたブロックアドレスの範囲にアクセスすることを要求するロック要求信号を領域ロックモジュールに印加する。ブロックアドレスの範囲は、高速経路フォーマットI/O要求内で受信された情報によって識別される。したがって、領域ロックモジュールにそのように印加された信号は、アクセスロックの要求、ならびにI/O要求によって影響を受けるブロックアドレスの範囲の両方を示すことができる。いくつかの例示的な実施形態では、領域ロックモジュールにそのように印加された信号は、領域ロックモジュールがその要求を拡張記憶コントローラのファームウェア処理スタックに転送するために必要な可能性があるすべての情報を領域ロックモジュールに提供するために十分なコンテンツ情報をさらに含むことが可能である。ステップ304で、高速経路回路は、その要求されたロックが許可されたかどうかを判断する。いくつかの例示的な実施形態では、領域ロックモジュールは、その要求されたロックが許可されたか、または拒否されたかを示す信号を高速経路回路に返すことができる。要求された信号が許可された場合、高速経路回路の動作によって高速経路フォーマットI/O要求の処理を完了し(ステップ306)、次いで、適切な解放信号を領域ロックモジュールに印加することによって、許可されたアクセスロックを解放する(ステップ310)ためのステップ306および308が動作可能である。いくつかの実施形態では、ロックされることが要求されたブロックの範囲がファームウェア処理スタックによって獲得された転送タイプのロックと重複することにより、要求されたロックが拒否された場合、領域ロックモジュールは、ステップ302で印加されたロック要求信号内で提供されたコンテキスト情報に基づいて、I/O要求をファームウェア処理スタックに転送するために必要なすべての処理を実行する。そのような実施形態では、高速経路回路は、次の高速経路フォーマットI/O要求の受信を待つだけで、さらなるどんな処理も実行する必要はない。その他の例示的な実施形態では、領域ロックモジュールは、その領域ロック要求の拒否を示し、その拒否が先に許可された転送タイプの領域ロック要求に起因することをさらに示す信号を高速経路回路に返す。そのような例示的な実施形態では、高速経路フォーマットI/O要求をファームウェア処理スタックに移転(transfer)または転送する(例えば、I/O要求を領域ロックモジュール自体によってではなく、高速経路回路の動作によってファームウェア処理スタックに転送する)ために、次にステップ312が動作可能である。
図4は、拡張記憶コントローラ内の領域ロックモジュール(例えば、図1の記憶コントローラ100の領域ロックモジュール106)の処理の例示的な追加の詳細を提供する流れ図である。図4の処理は、拡張記憶コントローラの高速経路回路から受信されたロック要求信号に応答した、領域ロックモジュールの処理を主に説明する。ファームウェア処理スタックから受信されたアクセスロック要求の受信に応答して、類似の処理を実行することが可能である。そのような類似の処理は、当業者に容易に明らかになり、したがって、この議論を分かりやすく、短くするために本明細書では省略される。高速経路回路からのアクセスロック要求の受信に応答して、ステップ400は、ロックのそのツリー構造に新しいエントリーを追加する(それぞれのエントリーに関連するブロックアドレスの範囲によって判断される適切な場所内に追加される)。次に、ステップ402は、ロック要求内で識別されたブロックアドレスの範囲が先に許可されたロック要求(すなわち、アクセスロックまたは転送タイプのロックを含めて、任意のタイプの先に許可されたロック要求)に関連するブロックアドレスの範囲の何らかの部分と重複するかどうかを判断する。重複しない場合、ステップ404は、ブロックアドレスの識別された範囲に関して高速経路回路に許可されたとして新しいロックエントリーをマーキングして、I/O動作を実行するためのその動作を継続するように高速経路回路に信号伝達する。ステップ402がロックされることになるブロックアドレスの要求された範囲が1つまたは複数の先に許可されたロック要求に関連するブロックアドレスの範囲と重複することを判断した場合、ステップ406は、重複している先に許可されたロックのうちのいずれかが転送タイプのロックであるかどうかを判断する。そうである場合、ステップ408は、このときファームウェア処理スタックに転送されている(間もなく転送されることになる)I/O要求に関して転送されたロックとして新しく加えられたロックエントリーをマーキングする。
ステップ408の後に、またはステップ406が新しいロック要求が許可された転送タイプのロックと重複しないことを判断した場合、処理はステップ410に進み、いずれかの他の要求(例えば、アクセスロックなど、非転送タイプの要求)が高速経路回路から受信されたロック要求のブロックアドレスの範囲と重複する可能性があるかどうかを判断する。重複する場合、ステップ412は、すべてのそのような他の先に許可されたロックが解放されるまで待つ。
ステップ412の後に、またはステップ410が他のそのようなロックが重複しないことを判断した場合、処理はステップ414に進み、ロックツリー内に新しく追加されたエントリーがこのとき転送されたとしてマーキングされているかどうかを判断する。マーキングされていない場合、ステップ404は、そのロックエントリーが、このとき、ブロックの識別された範囲に関して高速経路回路に許可されていることをマーキングして、その許可に関して高速経路回路に信号伝達し、それにより、高速経路回路が高速経路フォーマットI/O要求のその処理を継続することを可能にする。
ステップ414は、新しいロックエントリーがこのとき転送されたとしてマーキングされていることを判断して、ステップ416は、ブロックアドレスの識別された範囲に関してファームウェア処理スタックに許可されたとして、新しく追加されたロックエントリーをマーキングする。高速経路フォーマットI/O要求は、これにより、やがて最終的に処理するためのファームウェア処理スタックに転送される。高速経路回路によって要求のそれ以上の処理は実行されない。その他の例示的な実施形態では、上記のように、領域ロックモジュールは、そのロック要求が拒否されており、ファームウェア処理スタックに転送されるべきであることを高速経路回路に単に信号伝達することが可能であり、それにより、高速経路回路自体が要求を高速ファームウェア処理スタックに転送するための処理を実行することを可能にする。
図4の方法でやはり示されるのは、先に許可されたロック要求を解放するための方法の処理ステップである。I/O要求処理スタック(例えば、高速経路回路またはファームウェア処理スタック)は、許可されたロックを取得したI/O要求のその処理を完了したとき、ステップ420は、処理スタックから受信された適切な解放信号に応答して、先に許可されたロックを解放する。
図5、図6、および図7は、転送タイプの領域ロックを要求して、ファームウェア処理スタック内の特定の処理に応答して、先に許可された転送タイプの領域ロックを解放するための、拡張記憶コントローラのファームウェア処理スタック(例えば、図1の記憶コントローラ100のファームウェア処理スタック104)内の処理の例示的な追加の詳細を示す。上記のように、ファームウェア処理スタックは、ライトバックモードでそのキャッシュメモリを利用して書込み要求を処理するとき、ダーティデータ(すなわち、まだ記憶デバイスにフラッシュまたはポストされていないダーティデータ)がキャッシュメモリ内にあるブロックアドレスの範囲に関して転送タイプの領域ロックが許可されることを要求する。図5は、ダーティデータをそのキャッシュメモリ内に記憶することに応答して、そのような転送タイプのロックを要求するためのファームウェア処理スタックの処理の例示的な追加の詳細を説明する。ステップ500で、ファームウェア処理スタックは、データをライトバックモードでそのキャッシュメモリ内に記憶することによって、書込みI/O要求を処理する。ステップ502で、ファームウェア処理スタックは、キャッシュメモリ内の影響を受けたブロックを、そのキャッシュメモリがまだ記憶デバイスにポストまたはフラッシュされていないブロックアドレスに対応するデータを含むことを示す「ダーティデータ」としてマーキングする。ステップ504で、ファームウェア処理スタックは、ダーティデータがキャッシュメモリ内に記憶されているブロックアドレスの範囲を識別する転送タイプのロック要求信号を領域ロックモジュールに印加する。
図6は、ダーティデータが記憶デバイスに成功裏にフラッシュまたはポストされたとき、先に許可された転送タイプのロックを解放するためのファームウェア処理スタックのさらなる処理を説明する。ステップ600で、ファームウェア処理スタックは、永続的に記憶するために、ダーティデータブロックをキャッシュメモリから記憶デバイスにフラッシュまたはポストするために適切な処理を実行する。次いで、ステップ602は、キャッシュメモリ内の「ダーティデータ」にもはや関連しないブロックアドレスの範囲を識別する転送タイプのロック解放信号を領域ロックモジュールに印加する。領域ロックモジュールは、次いで、先に許可された転送タイプのロックを解放することができる。
図7は、不良ブロックを表すことが可能なブロックアドレスの範囲に関して転送タイプのロックが許可されることを要求するためのファームウェア処理スタックの処理の例示的な追加の詳細を説明する流れ図である。上述のように、ファームウェア処理スタックは、ブロックアドレスの特定のブロックまたは特定の範囲を利用する際に遭遇する様々なタイプのエラーのうちのいずれかに応答して、ブロックを「不良」と指定することができる。ステップ700で、ファームウェア処理スタックは、1つまたは複数のブロックアドレスをファームウェア処理スタックに関連する不良ブロックメモリ内に記憶されたその不良ブロックリストに追加する。ステップ702で、ファームウェア処理スタックは、転送タイプの領域ロックがファームウェア処理スタックを処理することによって「不良」ブロックとして識別されたブロックアドレスの識別された範囲に関して許可されることを要求する転送タイプのロック要求信号を領域ロックモジュールに印加する。
図8は、不良として先にマーキングされたブロック(対応する転送タイプのロックを用いて不良としてマーキングされたブロックの範囲)が成功裏に更新されているとき(例えば、先に不良としてマーキングされたブロックに対する成功裏の書込み時に)先に許可された転送タイプのロックを解放するためのファームウェア処理スタックのさらなる処理を説明する。ステップ800で、ファームウェア処理スタックは、(例えば、1つの/複数の不良ブロックに対する成功裏の書込み動作の完了に関連して)1つまたは複数のブロックを不良ブロックリストから除去するための適切な処理を実行する。次いで、ステップ802は、更新された不良ブロックリスト内の不良ブロックにもはや関連しないブロックアドレスの範囲を識別する転送タイプのロック解放信号を領域ロックモジュールに印加する。領域ロックモジュールは、次いで、先に許可された転送タイプのロックを解放することができる。
当業者は、図2から図8に関して説明された方法など、完全に機能的な方法内に存在し得る多数の追加および均等のステップを容易に認識されよう。そのような追加および均等のステップは、この議論を分かりやすく、短くするために本明細書で省略されている。
本明細書で開示された実施形態は、ソフトウェア、ハードウェア、ファームウェア、またはそれらの様々な組合せの形をとることが可能である。1つの特定の実施形態では、本明細書で開示された様々な動作を実行するように記憶デバイスの処理システム(例えば、記憶コントローラ)を導くために、ソフトウェアが使用される。図9は、ある例示的な実施形態において所望される機能を実行するために、コンピュータ可読媒体内に記憶されたプログラム命令を実行するように動作可能な、図1の記憶コントローラ100内のファームウェア処理スタック104など、処理システム900を例示する。処理システム900は、コンピュータ可読記憶媒体912において有形に実施されるプログラム命令を実行することによって上記の動作を実行するように動作可能である。この点で、本発明の実施形態は、コンピュータまたは任意のその他の命令実行システムによって使用するためのプログラムコードを提供するコンピュータ可読記憶媒体912を経由してアクセス可能なコンピュータプログラムの形をとることが可能である。
この説明では、コンピュータ可読記憶媒体912は、コンピュータによって使用するためのプログラムを含むかまたは記憶することが可能な任意のものであってもよい。コンピュータ可読記憶媒体912は、電子デバイス、磁気デバイス、光デバイス、電磁デバイス、赤外線デバイス、または半導体デバイスであってもよい。コンピュータ可読記憶媒体912の例は、固体メモリ(例えば、フラッシュメモリ)、磁気テープ、取外し可能コンピュータディスケット、ランダムアクセスメモリ(RAM)、読出し専用メモリ(ROM)、剛性磁気ディスク、および光ディスクを含む。光ディスクの現在の例は、コンパクトディスク読出し専用メモリ(CD−ROM)と、コンパクトディスク読出し/書込み(CD−R/W)と、DVDとを含む。
プログラムコードを記憶および/または実行するのに適している処理システム900は、システムバス950を介して、プログラムおよびデータメモリ904とキャッシュメモリ・サブシステム908とに結合した少なくとも1つのプロセッサ902を含む。プログラムおよびデータメモリ904は、プログラムコードの実際の実行の間に用いられるローカルメモリと、大容量記憶装置と、実行の間にコードおよび/またはデータが大容量記憶装置から取り出される回数を削減するために、少なくともいくつかのプログラムコードおよび/またはデータの一時的な記憶を提供するキャッシュメモリとを含むことが可能である。
入出力、すなわちI/Oデバイス906(例えば、記憶デバイスとホストシステムとを結合するためのデバイス)をさらに含むことが可能である。高速経路回路908および領域ロックモジュール914は、処理システム900が、本明細書において上で議論されたように、高速経路フォーマットI/O要求を迅速に処理して、ブロックアドレスのロックを調整することを可能にするために、システムと統合されることも可能である。
本発明が図面および前述の説明で例示され説明されているが、そのような図および説明は、特性の点で限定的ではなく、例示と見なされるべきである。本発明の一実施形態およびその若干の変形が示され、説明されている。詳細には、例示的なソフトウェア実施形態またはファームウェア実施形態として示され、説明されている特徴は、カスタマイズされた論理回路として等しく実施可能であり、逆も同様である。本発明の趣旨に該当するすべての変更形態および修正形態に関して保護が所望される。当業者は、本発明の範囲に包含される上述の実施形態の改変形態を理解されよう。結果として、本発明は、上で議論された特定の例および図に限定されず、以下の特許請求の範囲およびその均等物によってのみ限定される。

Claims (12)

  1. 1つまたは複数のホストシステム(120)に結合するように適合され、かつ結合した1つまたは複数の記憶デバイス(130)においてデータを管理するように適合された記憶コントローラ(100)であって、
    接続されたホストシステムから受信された高速経路処理用にフォーマットされたI/O要求を処理するように適合された高速経路回路(102)と、
    前記コントローラのプロセッサにおいて動作するファームウェア処理スタック(104)であって、任意のフォーマットのI/O要求を処理するように適合されたファームウェア処理スタック(104)と、
    前記高速経路回路に結合し、かつ前記ファームウェア処理スタックに結合した領域ロックモジュール(106)であって、ブロックアドレスの指定された範囲をロックするためのロック要求信号を受信するように適合され、ブロックアドレスの現在ロックされている範囲の状況に基づいて、受信された高速経路フォーマットI/O要求が前記ファームウェア処理スタックに転送されるべきかどうかを判断するようにさらに適合された領域ロックモジュール(106)とを備え、
    前記高速経路フォーマットI/Oの処理が前記ファームウェア処理スタックに転送されるべきであることを判断することに応答して、前記高速経路フォーマットI/O要求を処理するための前記ファームウェア処理スタックに転送するように適合された
    記憶コントローラ(100)。
  2. 前記ファームウェア処理スタックが、ブロックアドレスの範囲内のブロックにアクセスすることを試みる高速経路フォーマットI/O要求が前記ファームウェア処理スタックによって処理されるべきであることを判断することに応答して、ブロックアドレスの前記範囲に関して転送タイプの領域ロックを確立するためのロック要求を前記領域ロックモジュールに適用するように適合され、
    前記領域ロックモジュールが、前記ファームウェア処理スタックからの前記ロック要求の受信に応答して、ブロックアドレスの範囲に関して転送タイプの領域ロックを確立するようにさらに適合され、
    前記コントローラが、転送タイプの領域ロックが前記高速経路フォーマットI/O要求の高速経路回路処理によって影響を受けることになるブロックアドレスの範囲に関して確立されていることを検出することに応答して、受信された高速経路フォーマットI/O要求を前記ファームウェア処理スタックに転送するようにさらに適合された
    請求項1に記載のコントローラ。
  3. 前記ファームウェア処理スタックに結合したキャッシュメモリ(108)であって、前記ファームウェア処理スタックによる書込みI/O要求の処理によって影響を受けるブロックアドレスに関する書込みデータを記憶するように適合されたキャッシュメモリ(108)をさらに備え、
    前記ファームウェア処理スタックが、ブロックアドレスの範囲内のブロックアドレスに関するデータを前記キャッシュメモリ内に記憶することに応答して、ブロックアドレスの前記範囲に関して転送タイプの領域ロック要求を前記領域ロックモジュールに適用するようにさらに適合された
    請求項2に記載のコントローラ。
  4. 前記ファームウェア処理スタックが、ライトバック・キャッシュメモリとして前記キャッシュメモリを管理する、
    請求項3に記載のコントローラ。
  5. 前記ファームウェア処理スタックに結合した不良ブロックメモリ(110)であって、前記記憶デバイスの潜在的な不良ブロックのブロックアドレスを識別する不良ブロック情報を記憶するように適合された、不良ブロックメモリ(110)をさらに備え、
    前記ファームウェア処理スタックが、ブロックアドレスの範囲内のブロックアドレスを識別するエントリーを前記不良ブロックメモリ内に記憶することに応答して、ブロックアドレスの前記範囲に関して転送タイプの領域ロック要求を前記領域ロックモジュールに適用するようにさらに適合された
    請求項2に記載のコントローラ。
  6. 前記高速経路回路が、前記高速経路フォーマットI/O要求に関するコンテキスト情報を前記領域ロックモジュールに適用して、
    前記領域ロックモジュールが、前記コンテキスト情報に従って、前記高速経路フォーマットI/O要求を処理するための前記ファームウェア処理スタックに転送するようにさらに適合された
    請求項1に記載のコントローラ。
  7. 前記高速経路回路が、前記高速経路フォーマットI/Oの処理が前記ファームウェア処理スタックに転送されるべきであることを示す、前記領域ロックモジュールからの信号に応答して、前記高速経路フォーマットI/O要求を処理するための前記ファームウェア処理スタックに転送するようにさらに適合された、
    請求項1に記載のコントローラ。
  8. 1つまたは複数のホストシステム(120)に結合するように適合され、かつ1つまたは複数の記憶デバイス(130)に結合するように適合された記憶コントローラ(100)内で動作可能な方法であって、前記記憶コントローラが、ホストシステムから受信された高速経路フォーマットI/O要求を処理するための高速経路回路(102)を有し、かつ任意のフォーマットのI/O要求を処理するためのファームウェア処理スタック(104)を有し、前記方法が、
    高速経路フォーマットI/O要求を受信することと、
    前記コントローラの領域ロックモジュール(106)の動作によって、ブロックアドレスの現在ロックされている範囲の状況に基づいて、前記受信された高速経路フォーマットI/Oが前記ファームウェア処理スタックに転送されるべきかどうかを判断することと、
    前記高速経路フォーマットI/O要求が処理するための前記ファームウェア処理スタックに転送されるべきであるという判断に応答して、前記高速経路フォーマットI/O要求を処理するための前記ファームウェア処理スタックに転送することと
    を含む方法。
  9. 前記高速経路フォーマットI/O要求の受信に応答して、前記高速経路回路からの高速経路ロック要求信号を前記領域ロックモジュールに印加することであって、前記高速経路ロック要求が前記高速経路フォーマットI/O要求に関する情報を含む、印加することをさらに含み、
    前記判断することのステップが、
    領域ロックモジュールの動作によって、前記高速経路ロック要求信号と共に提供された前記情報に基づいて、前記受信された高速経路フォーマットI/O要求がブロックアドレスのロックされた範囲内のブロックアドレスを対象とするかどうかを判断することを含む、
    請求項8に記載の方法。
  10. 前記ファームウェア処理スタックの動作によって、ブロックアドレスの範囲にアクセスを試みている高速経路フォーマットI/O要求が前記ファームウェア処理スタックに転送されるべきである前記範囲を識別することと、
    ブロックアドレスの前記識別された範囲に関して転送タイプのロックの確立を要求する、前記ファームウェア処理スタックからの転送タイプのロック要求信号を前記領域ロックモジュールに印加することと、
    前記領域ロックモジュールの動作によって、前記転送タイプのロック要求信号の受信に応答して、前記転送タイプのロック要求信号内で識別されたブロックアドレスの前記範囲に関して前記転送タイプのロックを確立することとをさらに含み、
    前記判断することのステップが、
    ブロックアドレスの現在ロックされた範囲の状況に基づいて、前記高速経路フォーマットI/O要求の処理が前記ファームウェア処理スタックに転送されるべきであるように、前記受信された高速経路フォーマットI/O要求が前記確立された転送タイプのロックに関連するブロックアドレスの前記範囲内のブロックアドレスを対象とするかどうかを判断することをさらに含む、
    請求項9に記載の方法。
  11. 前記コントローラが前記ファームウェア処理スタックに結合したキャッシュメモリ(108)を有し、前記ファームウェア処理スタックがライトバック・キャッシュとして前記キャッシュメモリを管理し、
    前記方法が、
    前記ファームウェア処理スタックの動作によって、前記ファームウェア処理スタックによる書込みI/O要求を処理することに応答して、書込みデータを前記キャッシュメモリ内に記憶することをさらに含み、
    前記識別することのステップが、
    キャッシュメモリ内に記憶された前記書込みデータに関連するブロックアドレスを含むブロックアドレスの前記範囲を識別することをさらに含む
    請求項10に記載の方法。
  12. 前記コントローラが前記ファームウェア処理に結合した不良ブロックメモリ(110)を有し、
    前記方法が、
    前記ファームウェア処理スタックの動作によって、前記記憶デバイス上の潜在的な不良ブロックのブロックアドレスを識別する情報を前記不良ブロックメモリ内に記憶することをさらに含み、
    前記識別することのステップが、
    潜在的な不良ブロックのブロックアドレスを前記不良ブロックメモリ内に含むブロックアドレスの前記範囲を識別することをさらに含む、
    請求項10に記載の方法。
JP2013056228A 2012-12-12 2013-03-19 領域ロックを使用してi/o要求を複数の処理スタックを有する記憶コントローラに転送するための方法および構造 Ceased JP2014120151A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/711,885 US9268695B2 (en) 2012-12-12 2012-12-12 Methods and structure for using region locks to divert I/O requests in a storage controller having multiple processing stacks
US13/711,885 2012-12-12

Publications (2)

Publication Number Publication Date
JP2014120151A true JP2014120151A (ja) 2014-06-30
JP2014120151A5 JP2014120151A5 (ja) 2016-03-03

Family

ID=49322206

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013056228A Ceased JP2014120151A (ja) 2012-12-12 2013-03-19 領域ロックを使用してi/o要求を複数の処理スタックを有する記憶コントローラに転送するための方法および構造

Country Status (6)

Country Link
US (1) US9268695B2 (ja)
EP (1) EP2743822B1 (ja)
JP (1) JP2014120151A (ja)
KR (1) KR101612155B1 (ja)
CN (1) CN103870210B (ja)
TW (1) TWI541653B (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016121026A1 (ja) * 2015-01-28 2016-08-04 株式会社日立製作所 ストレージ装置、計算機システム、及び、方法

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8819208B2 (en) 2010-03-05 2014-08-26 Solidfire, Inc. Data deletion in a distributed data storage system
US9838269B2 (en) 2011-12-27 2017-12-05 Netapp, Inc. Proportional quality of service based on client usage and system metrics
US9054992B2 (en) 2011-12-27 2015-06-09 Solidfire, Inc. Quality of service policy sets
US9250832B2 (en) * 2013-06-03 2016-02-02 Avago Technologies General Ip (Singapore) Pte. Ltd. Confirmed divert bitmap to synchronize raid firmware operations with fast-path hardware I/O processing
US20150244795A1 (en) 2014-02-21 2015-08-27 Solidfire, Inc. Data syncing in a distributed system
JP2016057876A (ja) * 2014-09-10 2016-04-21 富士通株式会社 情報処理装置、入出力制御プログラム、及び入出力制御方法
US9632843B1 (en) * 2015-04-20 2017-04-25 Microsemi Storage Solutions (U.S.), Inc. Memory allocation for RAID systems
US10013173B2 (en) 2015-07-29 2018-07-03 Sandisk Technologies Llc Data storage device with command buffer management module and method of operating same
WO2017147707A1 (en) 2016-03-02 2017-09-08 Jp Scientific Limited Solid phase microextraction coating
US10929022B2 (en) 2016-04-25 2021-02-23 Netapp. Inc. Space savings reporting for storage system supporting snapshot and clones
EP3455870A4 (en) 2016-05-10 2019-12-11 JP Scientific Limited SYSTEM AND METHOD FOR THE DESORPTION AND DETECTION OF ANALYTE SORBED ON A SOLID PHASE MICROEXTRACTION DEVICE
US10642763B2 (en) 2016-09-20 2020-05-05 Netapp, Inc. Quality of service policy sets
US10528438B2 (en) * 2017-05-25 2020-01-07 Avago Technologies International Sales Pte. Limited Method and system for handling bad blocks in a hardware accelerated caching solution
US10852966B1 (en) * 2017-10-18 2020-12-01 EMC IP Holding Company, LLC System and method for creating mapped RAID group during expansion of extent pool
US10852951B1 (en) * 2017-10-18 2020-12-01 EMC IP Holding Company, LLC System and method for improving I/O performance by introducing extent pool level I/O credits and user I/O credits throttling on Mapped RAID
CN110618834B (zh) * 2019-09-05 2021-10-15 苏州浪潮智能科技有限公司 I/o栈请求响应方法、系统和i/o栈请求响应控制方法及系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090254774A1 (en) * 2007-08-27 2009-10-08 Kickfire, Inc. Methods and systems for run-time scheduling database operations that are executed in hardware
US20100268904A1 (en) * 2009-04-15 2010-10-21 Sheffield Robert L Apparatus and methods for region lock management assist circuit in a storage system
US20120089753A1 (en) * 2010-10-06 2012-04-12 Lsi Corporation System and method for coordinating control settings for hardware-automated i/o processors

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5285528A (en) 1991-02-22 1994-02-08 International Business Machines Corporation Data structures and algorithms for managing lock states of addressable element ranges
US5761659A (en) 1996-02-29 1998-06-02 Sun Microsystems, Inc. Method, product, and structure for flexible range locking of read and write requests using shared and exclusive locks, flags, sub-locks, and counters
US6032216A (en) 1997-07-11 2000-02-29 International Business Machines Corporation Parallel file system with method using tokens for locking modes
US6574749B1 (en) 1999-10-29 2003-06-03 Nortel Networks Limited Reliable distributed shared memory
US6675157B1 (en) 1999-11-01 2004-01-06 International Business Machines Corporation System and method for balancing binary search trees
US6779063B2 (en) 2001-04-09 2004-08-17 Hitachi, Ltd. Direct access storage system having plural interfaces which permit receipt of block and file I/O requests
JP4162184B2 (ja) 2001-11-14 2008-10-08 株式会社日立製作所 データベース管理システムの実行情報を取得する手段を有する記憶装置
US6986015B2 (en) 2001-12-10 2006-01-10 Incipient, Inc. Fast path caching
US6898688B2 (en) 2001-12-28 2005-05-24 Storage Technology Corporation Data management appliance
US6912621B2 (en) 2002-04-17 2005-06-28 International Business Machines Corporation Method and apparatus for updating data in mass storage subsystem using emulated shared memory
US7082390B2 (en) 2002-04-30 2006-07-25 Lsi Logic Corporation Advanced storage controller
US7290105B1 (en) 2002-12-16 2007-10-30 Cisco Technology, Inc. Zero overhead resource locks with attributes
US7328364B1 (en) 2003-03-21 2008-02-05 Network Appliance, Inc. Technique for coherent suspension of I/O operations in a RAID subsystem
US7730222B2 (en) 2004-08-24 2010-06-01 Symantec Operating System Processing storage-related I/O requests using binary tree data structures
US7827362B2 (en) 2004-08-24 2010-11-02 Symantec Corporation Systems, apparatus, and methods for processing I/O requests
US7269588B1 (en) 2003-09-24 2007-09-11 Oracle International Corporation Neighborhood locking technique for increasing concurrency among transactions
US7362762B2 (en) 2003-11-12 2008-04-22 Cisco Technology, Inc. Distributed packet processing with ordered locks to maintain requisite packet orderings
WO2005093591A1 (en) 2004-03-26 2005-10-06 Koninklijke Philips Electronics N.V. Integrated circuit and method for transaction abortion
US7206875B2 (en) 2004-03-31 2007-04-17 Intel Corporation Expander device capable of persistent reservations and persistent affiliations
US7260703B1 (en) 2004-08-20 2007-08-21 Sun Microsystems, Inc. Method and apparatus for I/O scheduling
US7386692B1 (en) 2004-08-20 2008-06-10 Sun Microsystems, Inc. Method and apparatus for quantized deadline I/O scheduling
US7418545B2 (en) 2004-10-28 2008-08-26 Intel Corporation Integrated circuit capable of persistent reservations
US7370128B2 (en) 2004-10-29 2008-05-06 Intel Corporation Expander device capable of communication protocol translation
US7305537B1 (en) 2005-03-01 2007-12-04 Sun Microsystems, Inc. Method and system for I/O scheduler activations
US7562200B1 (en) 2005-06-10 2009-07-14 American Megatrends, Inc. Method, system, apparatus, and computer-readable medium for locking and synchronizing input/output operations in a data storage system
US7529902B2 (en) * 2005-10-19 2009-05-05 Lsi Corporation Methods and systems for locking in storage controllers
US7478179B2 (en) 2005-11-04 2009-01-13 Sun Microsystems, Inc. Input/output priority inheritance wherein first I/O request is executed based on higher priority
US7447698B2 (en) 2005-12-13 2008-11-04 International Business Machines Corporation Method for balancing binary search trees
US8654045B2 (en) 2006-07-31 2014-02-18 Sony Corporation Display and method for manufacturing display
US7627744B2 (en) 2007-05-10 2009-12-01 Nvidia Corporation External memory accessing DMA request scheduling in IC of parallel processing engines according to completion notification queue occupancy level
US8176218B2 (en) 2010-08-11 2012-05-08 Lsi Corporation Apparatus and methods for real-time routing of received commands in a split-path architecture storage controller

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090254774A1 (en) * 2007-08-27 2009-10-08 Kickfire, Inc. Methods and systems for run-time scheduling database operations that are executed in hardware
US20100268904A1 (en) * 2009-04-15 2010-10-21 Sheffield Robert L Apparatus and methods for region lock management assist circuit in a storage system
US20120089753A1 (en) * 2010-10-06 2012-04-12 Lsi Corporation System and method for coordinating control settings for hardware-automated i/o processors

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016121026A1 (ja) * 2015-01-28 2016-08-04 株式会社日立製作所 ストレージ装置、計算機システム、及び、方法

Also Published As

Publication number Publication date
EP2743822A1 (en) 2014-06-18
KR101612155B1 (ko) 2016-04-26
TW201423410A (zh) 2014-06-16
US20140164715A1 (en) 2014-06-12
US9268695B2 (en) 2016-02-23
CN103870210A (zh) 2014-06-18
CN103870210B (zh) 2018-01-26
KR20140076463A (ko) 2014-06-20
TWI541653B (zh) 2016-07-11
EP2743822B1 (en) 2016-12-07

Similar Documents

Publication Publication Date Title
JP2014120151A (ja) 領域ロックを使用してi/o要求を複数の処理スタックを有する記憶コントローラに転送するための方法および構造
US7979631B2 (en) Method of prefetching data in hard disk drive, recording medium including program to execute the method, and apparatus to perform the method
US9836404B2 (en) Write mirroring to storage class memory devices
US9201794B2 (en) Dynamic hierarchical memory cache awareness within a storage system
US20120324171A1 (en) Apparatus and Method to Copy Data
US20160350192A1 (en) Storage system transactions
US20130275668A1 (en) Data processing method and device
US9904474B2 (en) Control device and storage system
JP2014120151A5 (ja)
US9547460B2 (en) Method and system for improving cache performance of a redundant disk array controller
US9229814B2 (en) Data error recovery for a storage device
US9244868B2 (en) Leased lock in active-active high availability DAS systems
US11474750B2 (en) Storage control apparatus and storage medium
US9323476B2 (en) Hardware based cache scan with divert node handling
US9703714B2 (en) System and method for management of cache configuration
US9384135B2 (en) System and method of caching hinted data
US20130031320A1 (en) Control device, control method and storage apparatus
US11016692B2 (en) Dynamically switching between memory copy and memory mapping to optimize I/O performance
KR101569049B1 (ko) 패스 스루 스토리지 디바이스들
JPWO2015141219A1 (ja) ストレージシステム、制御装置、データアクセス方法およびプログラム
KR102134905B1 (ko) 비휘발성 메모리를 이용한 데이터처리 장치 및 방법
US9639417B2 (en) Storage control apparatus and control method
JP2011232962A (ja) ディスクアレイ装置およびミラードキャッシュ制御方法
US8914584B1 (en) System and method for improving cache performance upon detection of a LUN control event
US20180052749A1 (en) Information processing system and information processing method

Legal Events

Date Code Title Description
RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20140812

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20140829

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20140829

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20150522

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160114

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160114

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20160114

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20160128

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160405

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160415

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20160705

A045 Written measure of dismissal of application [lapsed due to lack of payment]

Free format text: JAPANESE INTERMEDIATE CODE: A045

Effective date: 20161129