JP6250613B2 - 装置における電源管理のためのリソース割当及び解除 - Google Patents

装置における電源管理のためのリソース割当及び解除 Download PDF

Info

Publication number
JP6250613B2
JP6250613B2 JP2015223213A JP2015223213A JP6250613B2 JP 6250613 B2 JP6250613 B2 JP 6250613B2 JP 2015223213 A JP2015223213 A JP 2015223213A JP 2015223213 A JP2015223213 A JP 2015223213A JP 6250613 B2 JP6250613 B2 JP 6250613B2
Authority
JP
Japan
Prior art keywords
resources
zero subset
usage
threshold
data structure
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2015223213A
Other languages
English (en)
Other versions
JP2016105273A (ja
Inventor
ケイ ダッシュ ディリップ
ケイ ダッシュ ディリップ
ヴィ ヘンソン ジェイムズ
ヴィ ヘンソン ジェイムズ
アール ジャッカ バシュカー
アール ジャッカ バシュカー
Original Assignee
エイチジーエスティーネザーランドビーブイ
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by エイチジーエスティーネザーランドビーブイ filed Critical エイチジーエスティーネザーランドビーブイ
Publication of JP2016105273A publication Critical patent/JP2016105273A/ja
Application granted granted Critical
Publication of JP6250613B2 publication Critical patent/JP6250613B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/329Power saving characterised by the action undertaken by task scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1072Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in multilevel memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/16Constructional details or arrangements
    • G06F1/20Cooling means
    • G06F1/206Cooling means comprising thermal management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3206Monitoring of events, devices or parameters that trigger a change in power modality
    • G06F1/3215Monitoring of peripheral devices
    • G06F1/3221Monitoring of peripheral devices of disk drive devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3243Power saving in microcontroller unit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/325Power saving in peripheral device
    • G06F1/3268Power saving in hard disk drive
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/325Power saving in peripheral device
    • G06F1/3275Power saving in memory, e.g. RAM, cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3287Power saving characterised by the action undertaken by switching off individual functional units in the computer system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3442Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for planning or managing the needed capacity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3452Performance evaluation by statistical analysis
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash 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/0625Power saving in storage systems
    • 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/0634Configuration or reconfiguration of storage systems by changing the state or mode of one or more devices
    • 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/0653Monitoring storage devices or systems
    • 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/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • 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/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Evolutionary Biology (AREA)
  • Probability & Statistics with Applications (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Power Sources (AREA)
  • Computer Security & Cryptography (AREA)

Description

本開示は、リソース割当に関し、より詳細には、電源管理のためのリソース割当に関する。
装置は、装置の操作全体を支持する様々な目的のためにリソースを割当て、その割当を解除できる。例えば、ソリッドステートドライブ(SSD)等のストレージ装置は、データバッファアクセス、データを不揮発性メモリ(例えば、フラッシュメモリ)に格納する場合のエラー検出訂正(ECC)符号化、データを不揮発性メモリから呼び出す場合のフラッシュチャンネルアクセス、データを不揮発性メモリから呼び出す場合のECC復号化を支持して、リソースを割当て、その割当を解除できる。リソースの数がユニット(「要求元」と称されてもよい)の数よりも少ない場合の例において、ストレージ装置は、極端な遅延を回避する方法でリソースに対して十分にバランスの取れたアクセスを提供するための試行において(いわゆる、ラウンドロビンスキーム等の)アービトレーションスキームを実装してもよい。
幾つかの例において、リソースの数は、(例えば、消費電力の観点から見て)ストレージ装置のより効率的な動作を達成するよう意図的に制限される。即ち、利用可能なリソースのうちの幾つかの部分は、ストレージ装置を動作させることに関連する消費電力及び対応するコストを低減するよう電源がオフにされてもよい。特定の文脈でリソースの数を意図的に制限することにおいて、ストレージ装置メーカは、性能と作業効率とのバランスを取るよう試みている。例えば、様々なメーカは、リソース需要が高い場合には性能を向上させるよう初期状態で電源がオフにされていたそれらのリソースの電源を動的にオンにし、リソース需要が低い場合には作業効率を向上させるようこれらの同じリソースの電源を動的にオフにするよう試みていた。
動的リソース割当及び解除は、従って、種々のリソースが必要な時に電源をオンにし、必要ではない時に電源をオフにすることを可能にしてもよい。しかし、この省電力化リソース割当/解除を容易にするよう開発されたアルゴリズムは、割当データ構造における制限により、悪化する恐れがある。リソース割当/解除に用いられる先入れ先出し(FIFO)データ構造又は後入れ先出し(LIFO)データ構造は、結果として、割当解除されたリソースが割当られたリソースと混合されるランダム分布を生じ、特定のリソースをサービス要求に遅れずに利用できるように十分な時間をもって、これらのリソースが要求される場合を知ることが難しくなる。複雑なハードウェアが用いられてもよく、汎用プロセッサ(中央処理装置即ちCPU等)が、作業効率のバランスを十分に取ることができる一方で、十分な性能も提供する動的リソース割当/解除を容易にするよう配備されてもよい。しかし、この専用ハードウェア又は別の目的のために再利用されるCPUは、相当な電力を消費し、省電力化の全てが動的割当/解除アルゴリズムを介して提供されない場合、多くを相殺する恐れがある。
一実施例において、方法は、装置のコントローラによって、装置の複数のリソースの第1の非ゼロサブセットの使用量を決定することであって、複数のリソースがサーモメータデータ構造に従って割当てられ、且つ解放される、決定することと、コントローラによって、複数のリソースの第1の非ゼロサブセットの使用量を、複数のリソースの第1の非ゼロサブセットを複数のリソースの第2の非ゼロサブセットから分離する閾値と比較することと、比較に少なくとも基づいて、複数のリソースの第2の非ゼロサブセットの電源をオンにすることとを含む。
別の実施例において、装置は、複数のリソースの第1の非ゼロサブセットの使用量を決定することであって、複数のリソースがサーモメータデータ構造に従って割当てられ、且つ解放される、決定することと、複数のリソースの第1の非ゼロサブセットの使用量を、複数のリソースの第1の非ゼロサブセットを複数のリソースの第2の非ゼロサブセットから分離する閾値と比較することと、比較に少なくとも基づいて、複数のリソースの第2の非ゼロサブセットの電源をオンにすることとを行うよう構成される1つ以上のプロセッサと、閾値を格納するよう構成されるメモリとを備える。
別の実施例において、非一時的コンピュータ読取可能記憶媒体は、実行時に、1つ以上のプロセッサに、複数のリソースの第1の非ゼロサブセットの使用量を決定することであって、複数のリソースがサーモメータデータ構造に従って割当てられ、且つ解放される、決定することと、複数のリソースの第1の非ゼロサブセットの使用量を、複数のリソースの第1の非ゼロサブセットを複数のリソースの第2の非ゼロサブセットから分離する閾値と比較することと、比較に少なくとも基づいて、複数のリソースの第2の非ゼロサブセットの電源をオンにすることとを行わせる命令を格納している。
上で検討した1つ以上の実施例の詳細を、添付の図面及び以下の説明において説明する。他の特徴、目的、及び利点は、説明及び図面から、そして特許請求の範囲から明らかとなろう。
図1は、ストレージ装置が、本開示の1つ以上の技術に従ってホスト装置用のストレージ装置として機能できる実施例のストレージ環境を示す概念図及び概略ブロック図である。 図2は、本開示の1つ以上の技術に従う実施例のコントローラを示す概念図及び概略ブロック図である。 図3は、図2の実施例において示した一般的なリソース割当モジュールをより詳細に示す図である。 図4は、図2のECCデコーダをより詳細に示すブロック図である。 図5Aは、本開示で説明するリソース割当及び解除技術を実行することにおいて、ストレージ装置の例示的な動作を示すフローチャートである。 5Bは、本開示で説明するリソース割当及び解除技術を実行することにおいて、ストレージ装置の例示的な動作を示すフローチャートである。 図6は、図3のサーモメータデータ構造をより詳細に示す図である。
本開示の1つ以上の技術に従い、装置(コントローラがフラッシュコントローラと称されてもよいSSD等)のコントローラは、一定に連続して割当及び解除を容易にする方法でリソースを割当てるサーモメータタイプのデータ構造を用いる動的リソース割当及び解除を実行してもよい。結果としてリソース割当及び解除のランダム分布を生じるデータ構造に関する基本の割当及び解除の代わりに、サーモメータタイプデータ構造は、インクリメント式に増加するリソース識別子によって特定されるリソースの一定の順序を維持してもよい。割当機構は次いで、最も低いリソース識別子を有する利用可能リソースが、比較的高いリソース識別子を有する利用可能リソースの割当前に割当てられる規則に従って動作してもよい。結果として、サーモメータデータ構造は、サーモメータデータ構造の構成要素によって表されるリソースの統計的解析によって、頻繁な使用を示す、いわゆる「ホットスポット」及び稀な使用を示す「コールドスポット」を露呈し得る。これらのホットスポット及びコールドスポットを特定することによって、コントローラは閾値を動的に定義できる。即ち、フラッシュコントローラは、ある時間にわたるリソースの使用量の統計的解析により閾値を特定してもよい。閾値は、リソースのうちで電源がオンにされたままのものと電源がオフにされ得るものとを分ける境界を定義してもよい。
フラッシュコントローラは、この閾値を設定し、SSD内部で生じるであろう多くの異なるシナリオを占めるよう時間が経つにつれて動的に閾値を更新してもよい。例えば、フラッシュコントローラは、使用量がピークの間のメモリリソースの使用量が増加している間に閾値を増加させ、それによって、使用量がより多くのメモリリソースを必要とする場合に性能を向上させてもよい。フラッシュコントローラはまた、使用量がピークではない間のメモリリソースの相対的な使用量が減少している間に閾値を減少させ、それによって、より多くのリソースの電源をオフにすることによって作業効率を向上させてもよい。別の例として、フラッシュコントローラは、時間が経つにつれて、フラッシュメモリが摩耗するため、フラッシュメモリの不具合が増加することにより、ECCデコーダの使用が増加してきたことに注意できる。フラッシュコントローラは、ECCデコーダのこの増加した使用量を検出することに応じて、動的に閾値を増加させて、より多くのECCデコーダの電源をオンにしてもよい。この点において、技術は、SSDの配備初期の間に向上させた作業効率を促進し、SSDの配備後期の間に同じ性能を維持するよう閾値を増加させることによって作業効率を減少させることができる。
図1は、ストレージ装置6が、本開示の1つ以上の技術に従ってホスト装置4用のストレージ装置として機能できる実施例のストレージ環境2を示す概念図及び概略ブロック図である。例えば、ホスト装置4は、データを格納し、取り出すためにストレージ装置6に含まれる不揮発性メモリ装置を利用してもよい。幾つかの実施例において、ストレージ環境2は、ストレージアレイとして動作してもよいストレージ装置6等の複数のストレージ装置を含んでもよい。例えば、ストレージ環境2は、ホスト装置4用の大容量ストレージ装置として集合的に機能する安価/独立ディスクの冗長アレイ(RAID)として構成される複数のストレージ装置6を含んでもよい。
ストレージ環境2は、ストレージ装置6等の1つ以上のストレージ装置にデータを格納し、及び/又は、それらからデータを取り出してもよいホスト装置4を含んでもよい。図1に示すように、ホスト装置4は、インターフェース14を介してストレージ装置6と通信してもよい。ホスト装置4は、コンピュータサーバ、ネットワーク接続ストレージ(NAS)ユニット、デスクトップコンピュータ、ノートブック(即ち、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆる「スマート」フォン等の電話送受器、いわゆる「スマート」パッド、テレビ、カメラ、ディスプレイ装置、デジタルメディアプレーヤ、ビデオゲームコンソール、ビデオストリーミング装置等を含む、何れかの広範囲の装置を備えてもよい。
図1に示すように、ストレージ装置6は、コントローラ8、不揮発性メモリアレイ10(NVMA10)、電力供給部11、揮発性メモリ12、及びインターフェース14を含んでもよい。幾つかの実施例において、ストレージ装置6は、明確にするために、図1に図示しない追加の構成部品を含んでもよい。例えば、ストレージ装置6は、ストレージ装置6の構成部品が機械的に取り付けられ、ストレージ装置6の構成部品を電気的に相互接続する導電性トレース等を含むプリント基板(PB)を含んでもよい。幾つかの実施例において、ストレージ装置6の物理的寸法及びコネクタ構成は、1つ以上の標準的なフォームファクタに準拠してもよい。幾つかの標準的フォームファクタ例は、3.5”ハードディスクドライブ(HDD)、2.5”HDD、1.8”HDD、周辺構成機器相互接続(PCI)、PCI−extended(PCI−X)、PCI Express(PCIe)(例えば、PCIe x1、x4、x8、x16、PCIe Mini Card、MiniPCI等)を含むが、これらに限定されない。幾つかの実施例において、ストレージ装置6は、ホスト装置4のマザーボードに直接結合されてもよい(例えば、直接半田付けされてもよい)。
ストレージ装置6は、ホスト装置4とインターフェース接続するためのインターフェース14を含んでもよい。インターフェース14は、ホスト装置4とデータをやり取りするためのデータバス及びホスト装置4とコマンドをやり取りするための制御バスのうちの一方又は両方を含んでもよい。インターフェース14は、何れかの適切なプロトコルに従って動作してもよい。例えば、インターフェース14は、以下のプロトコルのうちの1つ以上に従って動作してもよい:アドバンストテクノロジーアタッチメント(ATA)(例えば、シリアルATA(SATA)、及びパラレルATA(PATA))、ファイバーチャンネル、小型コンピューターシステムインターフェース(SCSI)、serially attached SCSI(SAS)、周辺構成機器相互接続(PCI)、及びPCI−express。インターフェース14の電気接続(例えば、データバス、制御バス、又は両方)は、コントローラ8に電気的に接続され、ホスト装置4とコントローラ8との間に電気接続を提供し、データがホスト装置4とコントローラ8との間でやり取りされることを可能にする。幾つかの実施例において、インターフェース14の電気接続は、ストレージ装置6がホスト装置4から電力を受けることを可能にしてもよい。図1に示すように、電力供給部11は、インターフェース14を介してホスト装置4から電力を受けてもよい。
ストレージ装置6は、それぞれがデータを格納及び/又は取り出すよう構成されてもよい複数のメモリ装置16Aa〜16Nn(総称して、「メモリ装置16」)を含んでもよいNVMA10を含んでもよい。例えば、複数のメモリ装置16のうちの1つのメモリ装置は、コントローラ8から、データを受信し、メモリ装置にデータを格納するよう指示するメッセージを受信してもよい。同様に、複数のメモリ装置16のうちのメモリ装置は、コントローラ8から、メモリ装置にデータを取り出すよう指示するメッセージを受信してもよい。幾つかの実施例において、メモリ装置16はダイと称されてもよい。幾つかの実施例において、単一の物理チップは、複数のダイ(即ち、複数のメモリ装置16)を含んでもよい。幾つかの実施例において、各メモリ装置16は、比較的大きいデータ量(例えば、128MB、256MB、512MB、1GB、2GB、4GB、8GB、16GB、32GB、64GB、128GB、256GB、512GB、1TB等)を格納するよう構成されてもよい。
幾つかの実施例において、メモリ装置16は、何れかの種類の不揮発性メモリ装置を含んでもよい。メモリ装置16の幾つかの実施例は、フラッシュメモリ装置、相変化メモリ(PCM)装置、抵抗ランダムアクセスメモリ(ReRAM)装置、磁気抵抗ランダムアクセスメモリ(MRAM)装置、強誘電体ランダムアクセスメモリ(F−RAM)、ホログラフィックメモリ装置、及び何れかの他の種類の不揮発性メモリ装置を含むが、これらに限定されない。
フラッシュメモリ装置は、NAND又はNORベースのフラッシュメモリ装置を含んでもよく、各フラッシュメモリセルのためのトランジスタのフローティングゲートに含まれる電荷に基づいてデータを格納してもよい。NANDフラッシュメモリ装置において、フラッシュメモリ装置は、複数のページに分割されてもよい複数のブロックに分割されてもよい。特定のメモリ装置内部の複数のブロックのうちの各ブロックは、複数のNANDセルを含んでもよい。NANDセルの列は、複数のページのうちの1つのページを定義するようワードラインを用いて電気的に接続されてもよい。複数のページのうちのそれぞれにおける各セルは、各ビットラインに電気的に接続されてもよい。コントローラ8は、ブロックレベルでNANDフラッシュメモリ装置にデータを書込み、それからデータを読み出してもよい。
幾つかの実施例において、コントローラ8にとって、メモリ装置16の各メモリ装置に別々に接続されることは実用的ではない場合がある。そのように、メモリ装置16とコントローラ8との間の接続は、多重化されてもよい。例として、メモリ装置16は、チャンネル18A〜18N(総称して、「チャンネル18」)にグループ化されてもよい。例えば、図1に示すように、メモリ装置16Aa〜16Nnは第1のチャンネル18Aにグループ化されてもよく、メモリ装置16Na〜16NnはN番目のチャンネル18Nにグループ化されてもよい。各チャンネル18にグループ化された複数のメモリ装置16は、コントローラ8への1つ以上の接続を共有してもよい。例えば、第1のチャンネル18Aにグループ化された複数のメモリ装置16は、共通I/Oバス及び共通制御バスに取り付けられてもよい。ストレージ装置6は、複数のチャンネル18のうちの各それぞれのチャンネルのための共通I/Oバス及び共通制御バスを含むことができる。幾つかの実施例において、複数のチャンネル18のうちの各チャンネルは、各チャンネル上のメモリ装置を多重化するよう用いられてもよい1セットのチップイネーブル(CE)ラインを含んでもよい。例えば、各CEラインは、複数のメモリ装置16のうちのそれぞれのメモリ装置に接続されてもよい。このように、コントローラ8とメモリ装置16との間の別々の接続の数は、削減されてもよい。更に、各チャンネルはコントローラ8への独立したセットの接続を有しているため、接続の削減は、コントローラ8が異なるコマンドを各チャンネルに同時に発行できることから、データスループット率に大きな影響を及ぼさない。
幾つかの実施例において、ストレージ装置6は、ホスト装置4がアクセスできる容量よりも多い総容量を提供するよう選択される多くのメモリ装置16を含んでもよい。これは、オーバープロビジョニングと称される。例えば、ストレージ装置6が240GBのユーザがアクセスできるストレージ容量を含むよう宣伝された場合、ストレージ装置6は、256GBの総ストレージ容量を与えるために十分なメモリ装置16を含んでもよい。16GBのストレージ装置6は、ホスト装置4又はホスト装置4のユーザがアクセスできなくてもよい。代わりに、追加ストレージ装置6は、書込、ガベージコレクション、ウェアレベリング等を容易にするよう追加ブロックを提供してもよい。更に、追加ストレージ装置6は、幾つかのブロックが摩耗して使用不能になり、使用を中止した場合に使用されてもよい追加ブロックを提供してもよい。追加ブロックの存在により、ホスト装置4が利用可能なストレージ容量に変化を生じることなく、摩耗したブロックの使用停止を可能にしてもよい。幾つかの実施例において、オーバープロビジョニングの量は、p=(T−D)/Dとして定義されてもよく、ここで、pはオーバープロビジョニング率、Tはストレージ装置6の総ストレージ容量、Dはホスト装置4がアクセスできるストレージ装置6のストレージ容量である。
ストレージ装置6は、ストレージ装置6の1つ以上の構成部品に電力を供給できる電力供給部11を含んでもよい。標準モードで動作する時、電力供給部11は、ホスト装置4等の外部装置によって供給される電力を用いて1つ以上の構成部品に電力を供給してもよい。例えば、電力供給部11は、インターフェース14を介してホスト装置4から受け取る電力を用いて1つ以上の構成部品に電力を供給してもよい。幾つかの実施例において、電力供給部11は、電力を外部装置から受け取ることを中止する場合等のシャットダウンモードで動作する時、1つ以上の構成部品に電力を供給するよう構成される1つ以上の電力貯蔵部品を含んでもよい。このように、電力供給部11は、オンボードバックアップ電源として機能してもよい。1つ以上の電力貯蔵部品の幾つかの実施例は、コンデンサ、スーパーキャパシタ、バッテリ等を含むが、これらに限定されない。幾つかの実施例において、1つ以上の電力貯蔵部品によって蓄えられてもよい電力量は、1つ以上の電力貯蔵部品のコスト及び/又はサイズの関数(例えば、面積/体積)であってもよい。言い換えれば、1つ以上の電力貯蔵部品によって蓄えられる電力量が増加するにつれて、1つ以上の電力貯蔵部品のコスト及び/又はサイズも増加する。
コントローラ8は、1つ以上の読取操作及び書込操作を支持して動的リソース割当及び解除の一形態を実行してもよい。コントローラ8は、図2に関してより詳細に説明するように、データバッファアクセス、データを不揮発性メモリ(例えば、フラッシュメモリ)に格納する場合のエラー検出訂正(ECC)符号化、データを不揮発性メモリから呼び出す場合のフラッシュチャンネルアクセス、データを不揮発性メモリから呼び出す場合のECC復号化を支持して、リソースを割当て、その割当を解除してもよい。リソースの数が要求ユニット(「要求元」と称されてもよい)の数よりも少ない場合の例において、コントローラ8は、極端な遅延を回避する方法でリソースに対して十分にバランスの取れたアクセスを提供するための試行において、1つ以上のアービトレーションスキームを実行してもよい。
幾つかの例において、リソースの数は、(例えば、消費電力の観点から見て)ストレージ装置のより効率的な動作を達成するよう意図的に制限される。即ち、コントローラ8は、ストレージ装置を動作させることに関連する消費電力及び対応するコストを低減するよう、利用可能なリソースのうちの幾つかの部分の電源をオフにしてもよい。特定の文脈でリソースの数を意図的に制限することにおいて、コントローラ8は、性能と作業効率のバランスを取るよう試行してもよい。例えば、コントローラ8は、リソース需要が高い場合には性能を向上させるよう初期状態で電源がオフにされているそれらのリソースの電源を動的にオンにし、リソース需要が低い場合には作業効率を向上させるようこれらの同じリソースの電源を動的にオフにしてもよい。
動的リソース割当及び解除は、従って、種々のリソースが必要な時に電源をオンにし、必要ではない時に電源をオフにすることを可能にしてもよい。しかし、この省電力化リソース割当/解除を容易にするよう開発されたアルゴリズムは、割当/解除データ構造における制限により、悪化する恐れがある。説明のために、割当アルゴリズムは、待ち行列等の先入れ先出しデータ構造を採用してもよい。この割当スキームにおいて、リソースはそれぞれ、リソース識別子を割当てられる。この割当スキームにおけるアービタは、一例として、割当てられるべき最初のものである(即ち、待ち行列から「ポップされる」待ち行列の観点から見て)最下位リソース識別子と共に、各リソース識別子を待ち行列にプッシュしてもよい。アービタは、待ち行列からポップされたリソース識別子に関連するリソースを割当ててもよい。リソース識別子をポップすることにより、このリソースを2つ以上の要求元に割当てられたものから効果的に削除する。
しかし、要求元当たりのリソース利用期間は変化する場合があり、これは、アービタがランダムにリソース識別子を待ち行列に戻す場合があることを意味している。この固定されていないリソース割当時間の結果として、リソース識別子はじきに、待ち行列内部でランダムに分布される。リソース識別子のこのランダム分布は、何れかの所定の時間枠当たりに要求されるリソースの数を特定する能力を低下させ、それによって、作業効率と性能のバランスを取るためのリソースの動的な電力供給を妨げる場合がある。リソース割当/解除に対して後入れ先出し(LIFO)データ構造を採用する割当スキームは、結果として、リソース識別子のランダム分布を同様に生じてもよい。割当スキームにおけるこれらの制限を克服するため、コントローラは、作業効率のバランスを十分に取ることができる一方で、十分な性能も提供する動的リソース割当/解除を容易にするよう、複雑なハードウェア又は汎用プロセッサ(中央処理装置即ちCPU等)を組み込んでもよい。しかし、この専用ハードウェア又は別の目的のために再利用されるCPUは、相当な電力を消費し、省電力化の全てが動的割当/解除アルゴリズムを介して提供されない場合、多くを相殺する恐れがある。
本開示の1つ以上の技術に従い、ストレージ装置6のコントローラ8は、一定に連続して割当及び解除を容易にする方法でリソースを割当てるサーモメータタイプのデータ構造を用いる動的リソース割当及び解除を実行してもよい。結果としてリソース割当及び解除のランダム分布を生じるデータ構造に関する基本の割当及び解除の代わりに、サーモメータタイプデータ構造は、インクリメント式に、及び、潜在的に単調に増加するリソース識別子によって特定されるリソースの一定の順序を維持してもよい。割当機構は次いで、最も低いリソース識別子を有する利用可能リソースが、比較的高いリソース識別子を有する利用可能リソースの割当前に割当てられる規則に従って動作してもよい。結果として、サーモメータデータ構造は、サーモメータデータ構造の構成要素によって表されるリソースの統計的解析によって、頻繁な使用を示す、いわゆる「ホットスポット」及び稀な使用を示す「コールドスポット」を露呈し得る。これらのホットスポット及びコールドスポットを特定することによって、コントローラ8は閾値を動的に定義できる。即ち、フラッシュコントローラは、ある時間にわたるリソースの使用量の統計的解析により閾値を特定してもよい。閾値は、リソースのうちで電源がオンにされたままのものと電源がオフにされ得るものとを分ける境界を定義してもよい。
コントローラ8は、この閾値を設定し、多くのインスタンスを占めるよう時間が経つにつれて閾値を動的に更新してもよい。例えば、コントローラ8は、使用量がピークの間のメモリリソースの使用量が増加している間に閾値を増加させ、それによって、使用量がより多くのメモリリソースを必要とする場合に性能を向上させてもよい。コントローラ8はまた、使用量がピークではない間のメモリリソースの相対的な使用量が減少している間に閾値を減少させ、それによって、より多くのリソースの電源をオフにすることによって電気的な作業効率を潜在的に向上させてもよい。別の例として、コントローラ8は、時間が経つにつれて、不揮発性メモリ10が摩耗するため、不揮発性メモリ10の不具合が増加することにより、ECCデコーダの使用が増加してきた場合のインスタンスを特定してもよい。コントローラ8は、ECCデコーダのこの増加した使用量を検出することに応じて、動的に閾値を増加させて、より多くのECCデコーダの電源をオンにしてもよい。この点において、技術は、SSDの配備初期の間に向上させた作業効率を促進し、SSDの配備後期の間に同じ性能を維持するよう閾値を増加させることによって作業効率を減少させることができる。
この点において、コントローラ8は、複数のリソースの第1のゼロではないサブセット(即ち、言い換えれば、一部)の使用量を決定してもよく、ここで、複数のリソースは、また、サーモメータデータ構造と称されてもよいサーモメータ状のサーモメータデータ構造に従って割当てられ、且つ解放される。コントローラ8は次いで、複数のリソースの第1の非ゼロサブセットの使用量を、複数のリソースの第1の非ゼロサブセットをリソースの第2の非ゼロサブセットから分離する閾値と比較してもよい。
コントローラ8は、幾つかの実施例において、この比較を行う前に、使用量を多くのリソースに変換してもよい。例えば、使用量は、幾つかの時間枠当たりの要求数の点で定義されてもよい。コントローラ8は次いで、各リソースが処理できる時間枠当たりの要求数を決定するか、そうでなければ取得してもよい。コントローラ8は次いで、必要とされるリソースの期待数を決定するように、時間枠当たりの要求数を、リソースが処理できる同じ時間枠当たりの要求数で除算してもよい。
コントローラ8は次いで、必要とされてもよい(使用量を効果的に表す)リソースの期待数を閾値と比較してもよい。コントローラ8は、その閾値による必要とされてもよいリソースの期待数の比較に少なくとも基づいて、リソースの第2の非ゼロサブセットの電源をオンにしてもよい。同様に、コントローラ8は、経時的な使用量を決定するか、そうでなければ取得するよう継続してもよく、この使用量を電源オン、言い換えれば、リソースの第2の非ゼロサブセットを起動した後の閾値と比較してもよい。使用量が閾値によって可能とされたものよりも低い場合、コントローラ8は、リソースの第2の非ゼロサブセットの電源をオフにしてもよい。
図2は、コントローラ8の詳細例を示す概念図及び概略ブロック図である。幾つかの実施例において、コントローラ8は、アドレス変換モジュール22、書込モジュール24、メンテナンスモジュール26、読取モジュール28、スケジューリングモジュール30、及び複数のチャンネルコントローラ32A〜32N(総称して、「チャンネルコントローラ32」)を含んでもよい。他の実施例において、コントローラ8は、追加のモジュール又はハードウェアユニットを含んでもよく、又は、より少ないモジュール又はハードウェアユニットを含んでもよい。コントローラ8は、マイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、又は他のデジタル論理回路を含んでもよい。幾つかの実施例において、コントローラ8は、オンチップシステム(SoC)であってもよい。
コントローラ8は、インターフェース14を介してホスト装置4とインターフェース接続し、メモリ装置16へのデータの格納及びそれからのデータの取出しを管理してもよい。例えば、コントローラ8の書込モジュール24は、メモリ装置16への書込を管理してもよい。例えば、書込モジュール24は、インターフェース14を介してホスト装置4から、論理アドレスに関連するデータ及びそのデータを格納するようストレージ装置6に指示するメッセージを受信してもよい。書込モジュール24は、メモリ装置16へのデータの書込を管理してもよい。
例えば、書込モジュール24は、データの格納位置を管理するためにホスト装置4によって用いられる論理アドレスと、データの書込をメモリ装置へ向けるために書込モジュール24によって用いられる物理ブロックアドレスとの間の変換を管理するアドレス変換モジュール22と通信してもよい。コントローラ8のアドレス変換モジュール22は、メモリ装置16によって格納されるデータの論理アドレス(即ち、論理ブロックアドレス)をメモリ装置16によって格納されるデータの物理ブロックアドレスに変換するフラッシュ変換レイヤ又はテーブルを利用してもよい。例えば、ホスト装置4は、ストレージ装置6に対する命令又はメッセージ内のメモリ装置16によって格納されるデータの論理ブロックアドレスを利用してもよい一方で、書込モジュール24は、メモリ装置16に対するデータの書込を制御するためにデータの物理ブロックアドレスを利用する。(同様に、読取モジュール28は、メモリ装置16からのデータの読出しを制御するために物理ブロックアドレスを利用する。)物理ブロックアドレスは、メモリ装置16の実際の物理ブロックに対応している。幾つかの実施例において、アドレス変換モジュール22は、キャッシュされた情報13内部等の揮発性メモリ12内にフラッシュ変換レイヤ又はテーブルを格納してもよい。
このように、ホスト装置4は、データの特定のセットのために静的論理ブロックアドレスを用いるよう可能とされてもよい一方で、データが実際に格納されている物理ブロックアドレスは変化してもよい。アドレス変換モジュール22は、論理ブロックアドレスを物理ブロックアドレスにマッピングして、ホスト装置4による静的論理ブロックアドレスの使用を可能にするようフラッシュ変換レイヤ又はテーブルを維持してもよい一方で、データの物理ブロックアドレスは、例えば、ウェアレベリング、ガベージコレクション等により変化してもよい。
上で検討したように、コントローラ8の書込モジュール24は、メモリ装置16へのデータの書込を管理するために1つ以上の操作を実行してもよい。例えば、書込モジュール24は、データを格納するためのメモリ装置16内部の1つ以上のブロックを選択し、選択したブロックを含むメモリ装置16のうちのメモリ装置にデータを実際に格納させることによって、メモリ装置16へのデータの書込を管理してもよい。上で検討したように、書込モジュール24は、選択したブロックに基づいて、アドレス変換モジュール22にフラッシュ変換レイヤ又はテーブルを更新させてもよい。例えば、書込モジュール24は、ホスト装置4から一単位のデータ及び論理ブロックアドレスを含むメッセージを受信し、データを格納するためのメモリ装置16の特定のメモリ装置内部のブロックを選択し、メモリ装置16の特定のメモリ装置に(例えば、特定のメモリ装置に対応する複数のチャンネルコントローラ32のうちの1つのチャンネルコントローラを介して)データを実際に格納させ、論理ブロックアドレスが特定のメモリ装置内部の選択したブロックに対応することを示すようアドレス変換モジュール22にフラッシュ変換レイヤ又はテーブルを更新させてもよい。
幾つかの実施例において、ホスト装置4から単位データを受信した後、書込モジュール24は、1つ以上のメモリ装置16にデータを実際に格納させる前に、揮発性メモリ12を利用して一時的に単位データを格納してもよい。幾つかの実施例において、書込モジュール24は、ホスト装置4にデータが正常に格納されたかどうかを示すメッセージを送信するよう構成されてもよい。しかし、幾つかの実施例において、書込モジュール24は、データが実際に格納される前に、データの正常な格納を確認するメッセージをホスト装置4に送信してもよい。例えば、書込モジュール24は、データが揮発性メモリ12に格納される場合に、データの正常な格納を確認するメッセージをホスト装置4に送信してもよい。
幾つかの実施例において、メモリ装置16によってデータが格納されることに加えて、書込モジュール24は、1つ以上のブロックが失敗したか、破損した場合の単位データを回復するために用いられてもよい情報をメモリ装置16に格納させてもよい。パリティ情報が、他のブロックによって格納されるデータを回復するために用いられてもよい。幾つかの実施例において、パリティ情報は、他のブロックによって格納されるXORデータであってもよい。
論理値0(荷電)を有するビットを前の論理値1(非荷電)を有するビットに書込むために、大電流が用いられる。この電流は、隣接するフラッシュメモリセルの荷電に対する不用意な変更の原因となる場合のある十分に大きなものであってもよい。不用意な変更を防ぐために、フラッシュメモリセルのブロック全体は、何れかのデータをブロック内部のセルに書込む前に、論理値1(非荷電)に消去されてもよい。このため、フラッシュメモリセルは、ブロックレベルで消去され、ページレベルで書込まれてもよい。
従って、1ページ未満を消費するデータ量を書込むためでさえも、コントローラ8は、ブロック全体を消去させてもよい。これは、結局、ホスト装置4から受信されてメモリ装置16に書込まれるデータ量と、メモリ装置16に実際に書込まれるデータ量との間の比率を指すライトアンプリフィケーションを招く恐れがある。ライトアンプリフィケーションは、ライトアンプリフィケーションが生じない場合よりもフラッシュメモリセルの急速な摩耗の一因となる。フラッシュメモリセルに対する摩耗は、フラッシュメモリセルがフラッシュメモリセルを消去するために用いられる比較的高い電圧により消去された場合に生じる恐れがある。複数の消去サイクルにわたる比較的高い電圧は、フラッシュメモリセルに対する変更の原因となることがある。最終的に、フラッシュメモリセルは、この摩耗により使用できなくなる恐れがあり、この場合、フラッシュメモリセルは、データを取り出すことができるよう十分な精度を持ってデータを格納できなくなる可能性がある。
コントローラ8がフラッシュメモリセルのライトアンプリフィケーション及び摩耗を低減するために実装できる1つの技術は、ホスト装置4から受信したデータを未使用ブロック又は一部使用されたブロックに書込むことを含んでいる。例えば、仮に、ホスト装置4が、ストレージ装置6によって既に格納されたデータから僅かな変更のみを含むデータをストレージ装置6に送信したとする。その場合、コントローラは古いデータを陳腐化又は有効期限切れのデータとしてマークを付けてもよい。時間が経つにつれて、これにより、古いデータを保持するブロックを消去し、更新されたデータを同じブロックに書込むことにブロックが曝され、比較される消去操作の数を低減できる。
ホスト装置4から書込コマンドを受信することに応答して、書込モジュール24は、データを書込むためのメモリ装置16の物理的位置(例えば、ブロック)がどこであるかを決定してもよい。例えば、書込モジュール24は、アドレス変換モジュール22又はメンテナンスモジュール26から、空である(例えば、何のデータも格納していない)か、部分的に空である(例えば、ブロックの幾つかのページのみがデータを格納している)か、又は、少なくとも幾つかの無効(又は陳腐化)データを格納している1つ以上の物理ブロックアドレスを要求してもよい。1つ以上の物理ブロックアドレスを受信すると、書込モジュール24は、上で検討したように、1つ以上のブロックを選択し、チャンネルコントローラ32A〜32N(総称して、「チャンネルコントローラ32」)にデータを選択ブロックに書込ませるメッセージを通信してもよい。
読取モジュール28は同様に、メモリ装置16からのデータの読取を制御してもよい。例えば、読取モジュール28は、関連する論理ブロックアドレスを有するデータを要求するメッセージをホスト装置4から受信してもよい。アドレス変換モジュール22は、フラッシュ変換レイヤ又はテーブルを用いて論理ブロックアドレスを物理ブロックアドレスに変換してもよい。読取モジュール28は次いで、データを物理ブロックアドレスから取り出すよう1つ以上のチャンネルコントローラ32を制御してもよい。書込モジュール24と同様に、読取モジュール28は、1つ以上のブロックを選択し、チャンネルコントローラ32にデータを選択ブロックから読取らせるメッセージを通信してもよい。
チャンネルコントローラ32の各チャンネルコントローラは、チャンネル18のそれぞれのチャンネルに接続されてもよい。幾つかの実施例において、コントローラ8は、ストレージ装置2のチャンネル18の数と同じ数のチャンネルコントローラ32を含んでもよい。チャンネルコントローラ32は、例えば、書込モジュール24、読取モジュール28、及び/又はメンテナンスモジュール26の制御下で、それぞれのチャンネルに接続されるメモリ装置16のアドレス指定、プログラミング、消去、及び読取の密接な制御を実行してもよい。
メンテナンスモジュール26は、性能を維持し、ストレージ装置6(例えば、メモリ装置16)の耐用年数を延長させることに関する操作を実行するよう構成されてもよい。例えば、メンテナンスモジュール26は、ウェアレベリング又はガベージコレクションのうちの少なくとも1つを実施してもよい。
上で説明したように、フラッシュメモリセルを消去することは、比較的高い電圧を用いる場合があり、これは、複数の消去操作にわたると、フラッシュメモリセルに対する変更の原因となる場合がある。一定数の消去操作後に、フラッシュメモリセルは、データがそれ以上フラッシュメモリセルに書込めなくなる程度まで劣化する恐れがあり、それらのセルを含むブロックは、使用停止させられる(それ以上、データを格納するためにコントローラ8によって使用されない)恐れがある。ブロックが摩耗し、使用停止される前にメモリ装置16に書込むことができるデータの量を増加させるため、メンテナンスモジュール26はウェアレベリングを実施してもよい。
ウェアレベリングにおいて、メンテナンスモジュール26は、各ブロック又はブロックのグループに対し、1ブロック又はブロックの1グループの消去又は書込の数を追跡してもよい。メンテナンスモジュール26は、ホスト装置4からの受信データを、比較的少ない書込又は消去を受けたブロック又はブロックのグループに書込んで、各ブロック又はブロックのグループに対する書込又は消去の数を略等しく維持するように試みてもよい。これは、メモリ装置16の各ブロックを略同じ割合で摩耗させ、ストレージ装置6の耐用年数を高めることができる。
これは、異なるブロックに対してデータを消去し、書込む数を削減することによって、フラッシュメモリセルのライトアンプリフィケーション及び摩耗を低減できるが、これはまた、幾つかの有効(新規)データ及び幾つかの無効(陳腐化)データを含むブロックにつながる場合もある。この新規データ/陳腐化データ状態を克服するために、メンテナンスモジュール26はガベージコレクションを実施してもよい。ガベージコレクション操作において、メンテナンスモジュール26は、メモリ装置16のブロックの内容を解析して、高い割合の無効(陳腐化)データを含むブロックを決定してもよい。メンテナンスモジュール26は次いで、ブロックからの有効データを異なるブロックに書き換え、次いで、そのブロックを消去してもよい。これは、メモリ装置16によって格納される無効(陳腐化)データの量を削減し、フリーブロックの数を増加させることができるが、メモリ装置16のライトアンプリフィケーション及び摩耗も増加させる恐れがある。
コントローラ8のスケジューリングモジュール30は、メモリ装置16によって実行されるべき動作をスケジュール設定するために1つ以上の操作を実行してもよい。例えば、スケジューリングモジュール30は、コントローラ8の他の構成部品から受信する要求をスケジュール設定して、1つ以上のメモリ装置16に1つ以上の動作を実行中に行うよう命令してもよい。幾つかの実施例において、スケジューリングモジュール30は、それらが受信された順序(例えば、先入れ先出し即ちFIFO)で実行される要求をスケジュール設定してもよい。幾つかの実施例において、スケジューリングモジュール30は、要求の種類(例えば、読取要求、書込要求、消去要求、ガベージコレクション要求等)、要求が受信されてから経過した時間、要求の実行によって消費された電力量、帯域幅考慮等を含むが、これらに限定されない1つ以上の要因に基づく要求をスケジュール設定してもよい。
幾つかの実施例において、消費電力予算に適合するために、スケジューリングモジュール30は、性能が制限されるように実行される動作をスケジュール設定してもよい。例えば、消費電力予算により、全てのメモリ装置16が同時に動作した場合に消費される電力量よりも少ない電力量をメモリ装置16に割当てる場合、スケジューリングモジュール30は、メモリ装置16によって消費される電力量が、メモリ装置16に割当てられた電力量を超えないように、実行される動作をスケジュール設定してもよい。
一実施例として、ストレージ装置6が25Wの消費電力目標を有している場合、消費電力予算は、消費電力目標の一部(例えば、16W)をメモリ装置16による使用に対して割当ててもよい。仮に、全てのメモリ装置16が同時に動作した場合に消費される電力量が、消費電力目標の割当部分(例えば、16W)よりも大きい場合、スケジューリングモジュール30は、割当部分よりも多くの電力を消費することなく現在動作しているであろうメモリ装置16の数量を決定してもよい。例えば、メモリ装置16が消費電力予算のうちのX単位を割当てられ、メモリ装置16の各メモリ装置が動作時に1単位の電力を消費した場合、スケジューリングモジュール30は、メモリ装置16のうちのX個のメモリ装置が同時に動作しているであろうことを決定してもよい。
幾つかの実施例において、スケジューリングモジュール30は、性能制限を選択的にイネーブルにするよう構成されてもよい。例えば、スケジューリングモジュール30は、第1のモードで動作している場合に制限をイネーブルにし、第2のモードで動作している場合に制限をディスエーブルにしてもよい。幾つかの実施例において、制限が、同時に動作しているであろうメモリ装置16の量を低減する場合等のように、スケジューリングモジュール30がデータをメモリ装置16に書込ませる割合は、制限がディスエーブルにされる場合と比較して、制限がイネーブルにされる場合の方が低くてもよい。
図2の例において更に示すように、コントローラ8は、多数のバッファ34を含んでもよい。バッファ34は、幾つかの実施例において「生データバッファ34」と称されてもよい。生データバッファ34は、チャンネルコントローラ32に渡されるか、及び/又はそれらから受信されるべきデータを格納するために用いるバッファを表してもよい。生データバッファ34は、書込モジュール24及び読取モジュール28等のいわゆる要求元によって要求されてもよい上で言及したリソースのうちの1つを表してもよい。
更に、説明を容易にするためにチャンネルコントローラ32Aに関してのみ示しているが、チャンネルコントローラ32のそれぞれは、チャンネルコントローラ32Aに関して示したものと類似のECCエンコーダ36、読取バッファ38、及びECCデコーダ40の形で多数の例示的なリソースを含んでもよい。ECCエンコーダ36は、不揮発性メモリ領域10に書込まれるよう待機しているデータに対してECC符号化を実行するよう構成されるユニット又はモジュールを表してもよい。読取バッファ38は、不揮発性メモリ領域10から読取られるデータを格納するよう構成されるユニット又はモジュールを表してもよい。読取バッファ38は、読取った符号語を格納するよう構成されてもよい。ECCデコーダ40は、読取バッファ38に格納されたデータに関してECC復号化を実行するよう構成されるユニット又はモジュールを表してもよい。
本開示の1つ以上の技術によって、チャンネルコントローラ32Aは、一実施例として、以下でより詳細に説明する方法で一定に連続して、リソースの割当及び解除を可能にするサーモメータデータ構造を少なくとも部分的に用いて、ECCエンコーダ36、読取バッファ38、及びECCデコーダ40のうちの1つ以上の割当及び解除を実行するリソース割当モジュール42を含んでもよい。単一のリソース割当モジュール42を含むものとして示しているが、チャンネルコントローラ32Aは、複数の異なるリソース割当モジュール42を含んでもよく、それぞれが、リソース36〜40のうちの別個の1つを割当てることに関与してもよい。説明を容易にするために図2の実施例には図示していないが、チャンネルコントローラ32のそれぞれ、又は、幾つかの例において、1つ以上のチャンネルコントローラ32は、チャンネルコントローラ32Aのリソース割当モジュール42と類似した1つ以上のリソース割当モジュール42を含んでもよい。その上、コントローラ8は、再度、説明を容易にするために図2の実施例には図示していないが、チャンネルコントローラ32から分離したモジュールとして、作業効率と性能のバランスを取るようにバッファ34を割当て/解除するために本開示に説明する技術を実行してもよいリソース割当モジュール42の別の例を含んでもよい。
何れかのイベントにおいて、リソース割当モジュール42は、閾値を決定するために前述の特定したリソース34〜40のうちの1つ以上の使用を特定するよう、サーモメータデータ構造を解析してもよい。この閾値は、初めに予め定義され、先の統計的解析又は他の基準に基づいて、コントローラ8内部で構成されてもよい。リソース割当モジュール42は、上で言及したように、初めに電源をオンにすることに関して、リソース34〜40のうちの1つ以上の第1の非ゼロサブセットの電源のみをオンにし、時間が経つにつれて、これらリソースの使用量を決定して、この使用量と閾値を比較してもよい。リソース割当モジュール42は次いで、この比較に基づいて、リソース34〜40のうちの1つ以上の第2の非ゼロサブセットの電源をオンにしてもよく、ここで、この第2の非ゼロサブセットは、対応するリソース34〜40の第1の非ゼロサブセットの何れかのリソース34〜40も含まない場合がある。
図3は、図2の実施例において示した一般的なリソース割当モジュール42をより詳細に示す図である。図3の実施例において示すように、リソース割当モジュール42は、アービタモジュール50(「リソースアービタ50」と称されてもよい)と、アロケータ及び電力制御モジュール52(「リソースアロケータ52」と称されてもよい)とを含んでもよい。リソース割当モジュール42は、前述で説明したリソースのうちの何れかの1つ以上、例えば、バッファ34、ECCエンコーダ36、読取バッファ38、及びECCデコーダ40、並びに、一般的なストレージ装置又はコンピュータ装置に共通する何れかの他のリソースを表してもよい、リソース54A〜54M(「リソース54」)とインターフェース接続してもよい。
リソース割当モジュール42は、リソース54へのアクセスを仲裁するために要求元56A〜56N(「要求元56」)ともインターフェース接続する一方で、本開示に説明する技術に従って、電力制御を容易にするためにリソース54の異なる非ゼロサブセットも割当ててもよい。リソース54は、汎用プロセッサ(中央処理装置即ちCPU等)、専用プロセッサ、専用ハードウェア、様々なコア、又は、何れかの他の種類のソフトウェア又はハードウェア要求元によって実行される様々なソフトウェアスレッドを表してもよい。
一般に、本開示の技術は、要求元56の数がリソース54の数を超える(例えば、NがMより大きい)場合、リソース54へのアクセスを容易にできる。これらの例において、リソース割当モジュール42は、以下の幾つかのインターフェースを提供してもよい:
1)M<Nの場合、M個のリソースのセットのうちの1つに接続されるよう設計されたN個の競合する要求ポートのセット;
2)リソースの各インスタンスに接続される電力制御出力のセット;
3)リソースから関連するリソースの現在の電力状態を示す装置への電力状態インジケータ入力のセット;及び、
4)CPUメモリ又は入/出力(IO)ベースのインターフェース。
アービタモジュール50は、アービトレーションスキームを実行するよう構成されたユニットを表してもよい。アービトレーションスキームの例は、ラウンドロビンアービトレーションスキームである。ラウンドロビンアービトレーションスキームにおいて、リソース54のうちの1つへのアクセスが最後に許可された要求元56のうちの1つは、次の許可を受信する点から見て、要求元56の中で最も低い相対的優先度を有し、そうでなければ、要求元56のうちの番号順で次のものが次の許可を受信する。即ち、要求元56のそれぞれは、要求元56の中で順序を番号順に定義してもよい要求元識別子(ID)を割当てられる。また、リソースIDが、リソース54のそれぞれに割当てられてもよい。幾つかの実施例において、複数のリソースIDが、リソース54のその1つの能力に応じて、リソース54のそれぞれに割当てられてもよい。複数のリソースIDがリソース54の1つ1つに割当てられてもよいそれらの実施例において、リソースIDは、「リソース要素ID」又は「割当ID」と称されてもよい。単一のリソースIDがリソース54の1つ1つに割当てられる例においてさえも、リソースIDは、「リソース要素ID」又は「割当ID」と称されてもよい。これらの用語のそのような用法は、交換可能であってもよく、必ずしも、複数のリソースIDがリソース54の1つ以上に割当てられたかどうかを示すとは限らない。
アービタモジュール50によって実装されるラウンドロビンアービトレーションスキームは、アービタモジュール50が、要求元IDを要求元56のそれぞれに割当て、1つ以上のリソースIDをリソース54のそれぞれに割当てる結果となってもよい。アービタモジュール50は次いで、昇順での各要求に関連する要求元IDの番号順でリソース54へのアクセスに対する未処理の要求を介して回帰してもよい。アービタモジュール50は、要求元56のうちの幾つかからの特定の要求が許可された最後の要求であったかどうかに応じて、要求のうちの幾つかを降格させ、それによって、要求元56を横切るリソース54へのアクセスのバランスを取るために直前に処理されたこれらの要求元56からの要求を効果的に降格させてもよい。要求元56からの要求は、矢印によって示されており、「要求58A〜58N」又は総称して「要求58」と称されてもよい。
図3の実施例において、アロケータ及び電力制御モジュール52は、アロケータモジュール60と電力制御モジュール62とを含んでいる。要求元56からの要求58間の仲裁において、アロケータモジュール60は、アービタモジュール50とデータを通信するか、そうでなければ共有して、要求58の許可を容易にしてもよい。例えば、全てのリソース54がアービタモジュール50に割当てられることを、アロケータモジュール60が示す場合、アービタモジュール50は、保留中の要求58のうちの1つを許可しなくてもよい。別の実施例として、全ての利用可能なリソース(電源がオンにされるリソース54の非ゼロサブセットを指してもよい)がアービタモジュール50に割当てられることを、アロケータモジュール60が示す場合、アービタモジュール50は、保留中の要求58のうちの1つを許可しなくてもよい。更に別の実施例として、全てのリソース54がアービタモジュール50に対して電源がオフにされることを、アロケータモジュール60が示す場合、アービタモジュール50は、保留中の要求58のうちの1つを許可しなくてもよい。幾つかの実施例において、1つ以上のリソース54は、外部CPU又は他の制御装置による許可に対してイネーブルにされてもよい(幾つかの実施例において、レジスタインターフェースによって生じてもよい)。アロケータモジュール60は、同様に、リソース54のうちのこれらの制御されたものが、CPU又は他の制御装置が許可のためにリソース54のうちのこれらのものをイネーブルにした時に割当てられるよう利用可能であることを、アービタモジュール50と通信のみしてもよい。
初めに、ストレージ装置6が最初に電源をオンにされた場合、ストレージ装置6は、リソース54の全ての電源が切断されていなければ(又は、電源投入されていなければ)幾つかが低電力状態で動作してもよい。要求元56は1つ以上の要求58を発行し始めてもよく、CPU又は他の制御ロジックは次いで、リソース54の幾つかの非ゼロサブセットの電源をオンにするように、電力制御モジュール62とインターフェース接続するようアロケータモジュール60をイネーブルにしてもよい。即ち、アロケータモジュール60は、リソース54の残りのものの電源をオンにすることなく、この非ゼロサブセットの電源のみをオンにするよう、電力制御モジュール62とインターフェース接続してもよい。リソース54のこの非ゼロサブセットはまた、リソース54の一部又はリソース54のバンクと称されてもよい。その上、リソース54のこの非ゼロサブセットは、全てのリソース54ではないが、1つ、2つ、又はそれを超えるリソース54を含んでもよい。
リソース54のこの非ゼロサブセットの電源投入に応答して、アロケータモジュール60は次いで、サーモメータデータ構造61(「温度データ構造61」)を初期化し、増加するリソースIDを順番にリソース54の電源をオンにした非ゼロサブセットに割当て、サーモメータデータ構造61を更新して、リソース54の電源をオンにした非ゼロサブセットのうちの特定の1つにリソースIDの割当を反映させてもよい。このサーモメータデータ構造61は、リソース54の電源をオンにした非ゼロサブセットのうちの1つ1つに対するノードを含んでもよく、各ノードは、順次及び潜在的に単調に増加するリソースIDのうちの1つと、リソースの非ゼロセットのうちのこの対応する1つが利用可能であるか、又は使用中であるかどうかの指示を格納している。アロケータモジュール60は次いで、1つ以上の要求58を許可することに使用するために、リソースIDをアービタモジュール50に渡してもよい。図3の実施例に示すように、アロケータモジュール60は、サーモメータデータ構造61をアービタモジュール50に供給することによってリソースIDを渡してもよい。それぞれがサーモメータデータ構造61のコピーを有するように示しているが、アービタモジュール50及びアロケータモジュール60はそれぞれ、アービタモジュール50及びアロケータモジュール60の両方によってアクセス可能な単一の位置に格納されてもよい同じサーモメータデータ構造61にアクセスしてもよい。
アービタモジュール50は次いで、アービトレーションスキームに従って、要求58を許可するよう進行し、それによって、要求元56にリソースIDによって特定されるそれらのリソースに対するアクセスを提供してもよい。アービタモジュール50は、リソース54の非ゼロサブセットのうちのそれらが要求元56のうちの1つによって使用中として割当てられることを示すようサーモメータデータ構造61を更新してもよい。時間が進むにつれて、要求元56は、増加する要求58を発行してもよく、これはリソース54のうちの1つに対するアクセスが許可される前に、要求元56が平均して長時間待機する結果となる恐れがある。アロケータモジュール60は、(例えば、要求58のうちの1つの発行から要求58のうちのその1つの許可までの平均時間の観点から)この遅延を特定し、この遅延を、遅延を低減するために必要とされるであろうリソースの期待数に変換してもよい。リソースのこの期待数は、これらのリソースが必要とされるよう予測される前に、これらのリソースの電源をオンにするように、過去の使用量に基づいて、変換が使用量を予測するよう試行されてもよいという点で、実際には予測であってもよい。使用量のこの予測は、実際の使用量情報が(予測される使用量情報ではなく)、リソース54のこれらの追加のものの需要があることを示す場合に、これらのリソース54が利用可能であるように、リソース54の電源をオンにするように電力制御モジュール62とインターフェース接続するよう、アロケータモジュール60をイネーブルにしてもよい。
サーモメータデータ構造61を初期化する場合、アロケータモジュール60は、電源がオンにされるリソース54の非ゼロサブセットを電源がオンにされないリソース54の残りのものから分離させる閾値を決定してもよい。この閾値は、CPU又は他の制御ロジックによって定義され、アロケータモジュール60内部で予めプログラムされるか、予め構成され、ストレージ装置6の前の動作又はそれらの幾つかの組み合わせを介して(コンピュータ学習アルゴリズムを介して)取得されてもよい。本開示において単一の閾値に関して説明したが、技術は複数の閾値まで拡張されてもよく、そのそれぞれは、電源オン及び電源オフされた非ゼロリソースサブセット間の別の分離点を定義する。
何れかのイベントにおいて、リソース54の期待数が閾値と等しいか、超える場合(又は、幾つかの実施例では、超える場合にのみ)、アロケータモジュール60は、リソース54の残りのものの電源をオンにするよう、電力制御モジュール62とインターフェース接続してもよい。幾つかの実施例において、アロケータモジュール60は最初に、リソース54の残りのものが、リソース54のこれらのものの電源をオンにする前に電源をオンにされることを確認するよう、CPU又は他の制御ロジックとインターフェース接続してもよい。電力制御モジュール62によって報告されるように電源がオンにされると、アロケータモジュール60は、リソース54の新たに電源がオンにされたものを反映するよう、サーモメータデータ構造61を更新してもよい。アービタモジュール50は次いで、サーモメータデータ構造61が更新された後、これらの要求元56からの要求58を許可するように、リソース54の新たに電源がオンにされたものを要求元56に割当てることを開始してもよい。サーモメータデータ構造61の使用を通じて、アロケータモジュール60は、一定に連続して、又は、特定の進行でリソース54の電源をオンにしてもよい。
言い換えれば、アロケータモジュール60は、リソース54の最も低い番号が付けられたものに関連するものである最も低い番号が付けられた値に向けてリソースIDを集中させてもよいアルゴリズムに従って動作する。要求58の第1のものがアービタモジュール50によって受信される場合、アービタモジュール50は、サーモメータデータ構造61に格納されたリソースIDのうちの最も低い番号が付けられたものを割当て、リソース54の対応するものがビジーである(即ち、言い換えれば、使用中又は利用不可である)ことを示すためにサーモメータデータ構造61を更新するよう構成されてもよい。要求58の第2のものが、リソース54の対応するものによって完全に処理された第1の要求の前に、アービタモジュール50によって受信される場合、アービタモジュール50は、サーモメータデータ構造61に格納されたリソースIDのうちの2番目に低い利用可能なものを割当ててもよい。リソースIDのうちのこの2番目に低い利用可能なものを割当てた後、アービタモジュール50は、この対応するリソースがビジーであることを示すためにサーモメータデータ構造61を更新してもよい。要求58の第1のものが処理されると、アービタモジュール50は、要求58のその第1のものを処理するリソース54のうちの1つが利用可能であることを示すためにサーモメータデータ構造61を更新してもよい。リソース54のうちのこの1つが(全ての利用可能なリソースIDのうちで)最下位の利用可能なリソースIDを有することを考えると、アービタモジュール50は、再度、要求58の何れかの追加のものに応じてこのリソースIDを割当て、それによって、リソース54の残りのものの電源を投入させることを潜在的に回避してもよい。
時間が進むにつれて、アロケータモジュール60は、所定の時間間隔当たりの要求数が減少したことを決定してもよい。この減少は、利用可能なリソース54の幾つかが一定期間アイドルとなる結果を効果的にもたらしてもよい。アロケータモジュール60は、所定の時間間隔当たりの要求数をリソースの期待数に変換することによってこのアイドルを検出してもよい。アロケータモジュール60は、リソースのこの期待数を上で言及した閾値と比較し、この比較に基づいて(例えば、リソースの期待数が、閾値未満、又は、それと等しいか、単にそれ未満である場合)、電源をオンにする前にリソース54の残りの非ゼロサブセットの電源をオフにしてもよい。
アロケータモジュール60は、時間が経つにつれて、よりきめ細かい電力制御を提供するよう閾値の数を増加させるか、そうでなければ、リソース54の幾つかの増量分のみの電源をオン又はオフにするよう既存の閾値を調整してもよい。言い換えれば、静的閾値を有するものとして上で説明する一方で、技術は、リソースの期待数、時間帯、又は、熱、消費される処理サイクル、使用メモリ等の何れかの他の条件に基づいて経時的に変化する動的閾値を用いて実施されてもよい。閾値を動的に調整することにおいて、アロケータモジュール60は、リソース54の初期の非ゼロサブセットを超える追加リソースの電源をオン又はオフにし、リソース54のこの非ゼロサブセットに存在するリソース数を増加又は減少させてもよい。閾値を動的に調整することにより、性能と消費電力とのバランスを取るための更に別の方法を提供できる。
図4は、図2のECCデコーダ40をより詳細に示すブロック図である。図4の実施例において、ECCデコーダ40は、アービタモジュール50及びアロケータ及び電力制御モジュール52(それぞれは、図3の実施例に示すアービタモジュール50及び/又はアロケータ及び電力制御モジュール52と類似しているか、それらと同じであってもよい)の形で統合されたリソース割当モジュール42(図示せず)を含んでいる。ECCデコーダ40は更に、要求元56及び読取データマルチプレクサ72(「読取データMUX72」)を効果的に表してもよい1つ以上のリソース要求モジュールを含んでもよい。要求元56は、CPU70とインターフェース接続し、要求58を生成するよう構成されるインターフェースを表してもよい。読取データMUX72は、リソース54として示されるメモリバンク間で多重化するか、そうでなければ、それらのうちの1つからデータを選択するよう構成されるユニットを表してもよい。
図4の実施例において、要求元56は、メモリバッファにデータをコピーするよう要求する装置、ユニット、又はモジュールを表してもよい。リソース54は、(一実施例として、それぞれがSRAMと称される種類のメモリを含んでもよい)メモリバンク0〜3内部に位置するメモリバッファを表してもよい。各メモリバンクが4つのバッファを提供でき、平均要求到着時間は、最大4つの要求元56がバッファの寿命を超えて動作するようなものであるとすれば、単一のメモリバンク54のみが、需要を満たすために電源をオンにされてもよい。しかし、要求の到着時間が減少するか、バッファの平均寿命が増加する場合、アロケータ及び電力制御モジュール52は、メモリバンク54のうちの追加の1つ(例えば、メモリバンク0に加えてメモリバンク1)を電源投入し、それによって、4つの更なるリソースIDを提供してもよい。アロケータ及び電力制御モジュール52は次いで、4から8にバッファスロットの利用可能なプールを増加させてもよいが、これは、メモリバンク1が、PWR_IS_ON制御チャンネル(又は、電力状態制御ラインと称されるもの)を介して電源投入状態にあることを示した後にのみ行われる。
図5A及び5Bは、本開示で説明するリソース割当及び解除技術を実行することにおいて、ストレージ装置の例示的な動作を示すフローチャートである。最初に図5Aを参照すると、図1の実施例に示すストレージ装置6等のストレージ装置が最初に電源投入されると、ストレージ装置6は、(図3及び4の実施例に示す)リソース54の全ての電源が切断されていなければ(又は、電源投入されていなければ)幾つかが低電力状態で動作してもよい(90)。要求元56は1つ以上の要求58を発行し始めてもよく、CPU又は他の制御ロジックは次いで、リソース54の幾つかの非ゼロサブセットの電源をオンにするように、電力制御モジュール62とインターフェース接続するようアロケータモジュール60をイネーブルにしてもよい(94)。
リソース54のこの非ゼロサブセットの電源投入に応答して、アロケータモジュール60は次いで、サーモメータデータ構造61(「温度データ構造61」)を初期化し、増加するリソースIDを順番にリソース54の電源をオンにした非ゼロサブセットに割当て、サーモメータデータ構造61を更新して、リソース54の電源をオンにした非ゼロサブセットのうちの特定の1つにリソースIDの割当を反映させてもよい(96)。アービタモジュール50は次いで、アービトレーションスキームに従って、要求58を許可するよう進行し(98)、それによって、要求元56にリソースIDによって特定されるそれらのリソースに対するアクセスを提供してもよい。アービタモジュール50は、リソース54の非ゼロサブセットのうちのそれらが要求元56のうちの1つによって使用中として割当てられることを示すようサーモメータデータ構造61を更新してもよい(100)。
時間が進むにつれて、要求元56は、増加する要求58を発行してもよく、これはリソース54のうちの1つに対するアクセスが許可される前に、要求元56が平均して長時間待機する結果となる恐れがある。アロケータモジュール60は、(例えば、要求58のうちの1つの発行から要求58のうちのその1つの許可までの平均時間の観点から)要求から許可までの遅延を決定し、上で説明した方法で、この遅延を(リソースの期待数の観点から)閾値と比較してもよい(102、104)。(遅延を効果的に表す)リソース54の期待数が閾値以下である場合(「NO」106)、アロケータモジュール60は、監視を継続し、そうでなければ、要求から許可までの遅延を決定し、この遅延を閾値と比較してもよい(102、104)。リソース54の期待数が閾値を超える場合(「YES」106)、アロケータモジュール60は、リソース54の残りのものの電源をオンにするよう、電力制御モジュール62とインターフェース接続してもよい(108)。
上で言及したように、複数のリソースの非ゼロサブセット及び複数のリソースの残りのものに関して説明したが、技術は、リソースのそれぞれ連続する非ゼロサブセットを分離するよう定義される対応する閾値を有するリソースのサブセットの何れかの数まで拡張されてもよい。この点において、複数のリソースは、大多数のリソースのサブセットであると理解されてもよい。そのため、複数のリソースの残りのものは、大多数のリソースの内部の複数のリソースの第2の非ゼロサブセットを表してもよい。
何れかのイベントにおいて、電力制御モジュール62によって報告されるように電源がオンにされると、アロケータモジュール60は、リソース54の新たに電源がオンにされたものを反映するよう、サーモメータデータ構造61を更新してもよい(110)。図5Bの実施例を参照すると、アービタモジュール50は次いで、サーモメータデータ構造61が更新された後、これらのリソース56の割当及び解放を反映するようサーモメータデータ構造61を更新する間に、これらの要求元56からの要求58を許可するように、リソース54の新たに電源がオンにされたものを要求元56に割当てることを開始してもよい(112、114)。
時間が進むにつれて、アロケータモジュール60は、所定の時間間隔当たりの要求数が減少したことを決定してもよい。この減少は、利用可能なリソース54の幾つかが一定期間アイドルとなる結果を効果的にもたらしてもよい。アロケータモジュール60は、所定の時間間隔当たりの要求数をリソースの期待数に潜在的に変換する要求から許可までの遅延を再度決定してもよい(116)。アロケータモジュール60は、リソースのこの期待数を上で言及した閾値と比較し(118)、この比較に基づいて(例えば、リソースの期待数が、閾値未満、又は、それと等しいか、単にそれ未満である場合)、電源をオンにする前にリソース54の残りの非ゼロサブセットの電源をオフにしてもよい。
例えば、遅延が閾値より大きい場合(「YES」120)、アロケータモジュール60は、要求から許可までの遅延を決定し、この遅延を閾値と比較し続けてもよい(116、118)。遅延が閾値以下である場合(「NO」120)、アロケータモジュール60は、リソース54の残りのサブセットの電源をオフにするよう、電力制御モジュール62とインターフェース接続してもよい(122)。アロケータモジュール60は、リソース54のこれらのものの電源がオフにされたことを反映するよう、サーモメータデータ構造61を更新してもよい(124)。ストレージ装置6は、このようにして動作し続け、ストレージ装置6が性能モードで動作する(108〜120)点で、要求から許可までの遅延が閾値を超えるまで、ここで動作コスト低減モードとして称されてもよい方法で、要求から許可までの遅延102を継続的に決定する(102〜106、122、124)。
図6は、図3のサーモメータデータ構造61をより詳細に示す図である。サーモメータデータ構造61は、ノード130A〜130I(「ノード130」)を含み、各ノードは、リソースID(RID)及び利用可能な(A)ビットを格納している。図6の実施例において、ノード130A、130C〜130F、及び130Hに関連するリソース54は、A=0によって(及び、対角線で満たされた図において)示すように利用できない。ノード130のそれぞれは、左から右に連続的に増加するリソースID(例えば、0から8)を割当てられる。フリーリソース(ノード130B、130G、及び130Iが、フリーである、即ち、言い換えれば、利用可能なリソースと関連する)の割当のために、アービタモジュール50は、一方の側(例えば、左側)からフリーリソースの検索を常に開始する。結果として、アービタモジュール50は、要求58の次のものに応じて、(ノード130Bによって特定されるように)1と等しいリソースIDに関連するリソース54のうちの1つを割当ててもよい。従来の割当の代わりに、この棒グラフ/サーモメータスタイルの割当は、上で説明した方法で、未使用のリソースの電源を遮断できる。効果的に、サーモメータデータ構造61の一方の側は、ビジーのままにできる一方で、他方の側は大半をフリーのままにできる。
本開示において説明した技術は、少なくとも部分的に、ハードウェア、ソフトウェア、ファームウェア、又はそれらの何れかの組み合わせで実装されてもよい。例えば、説明した技術の様々な態様は、1つ以上のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、又は何れかの他の同等の集積又は個別論理回路、並びに、かかる構成部品の何れかの組み合わせを含む1つ以上のプロセッサ内部で実装されてもよい。用語「プロセッサ」又は「処理回路」は、一般に、前述の論理回路の何れか単体で、又は他の論理回路との組み合わせで、又は何れかの他の同等の回路を指してもよい。ハードウェアを含む制御ユニットも、本開示の技術の1つ以上を実行してもよい。
かかるハードウェア、ソフトウェア、及びファームウェアは、本開示で説明した様々な技術に対応するよう、同じ装置内部又は別個の装置内部に実装されてもよい。加えて、説明したユニット、モジュール、又は構成部品の何れかは、個別だが、相互運用可能な論理装置として、一緒に、又は別々に実装されてもよい。モジュール又はユニットとしての異なる特徴の描写は、異なる機能的態様を強調することを意図するものであり、必ずしも、かかるモジュール又はユニットが別々のハードウェア、ファームウェア、又はソフトウェア部品によって実現されるべきであることを含蓄しない。代わりに、機能的に関連する1つ以上のモジュール又はユニットは、別々のハードウェア、ファームウェア、又はソフトウェア部品によって実行され、共通又は別々のハードウェア、ファームウェア、又はソフトウェア部品内部で統合されてもよい。
本開示で説明した技術は、命令と共に符号化されたコンピュータ読取可能記憶媒体を含む製品内で具現化され、又は符号化されてもよい。符号化されたコンピュータ読取可能記憶媒体を含む製品内に埋め込まれるか、符号化される命令は、コンピュータ読取可能記憶媒体内に含まれるか、符号化される命令が、1つ以上のプロセッサによって実行される場合のように、1つ以上のプログラマブルプロセッサ又は他のプロセッサに本明細書中で説明した1つ以上の技術を実施させてもよい。コンピュータ読取可能記憶媒体は、ランダムアクセスメモリ(RAM)、読出し専用メモリ(ROM)、プログラマブル読出し専用メモリ(PROM)、消去可能プログラマブル読出し専用メモリ(EPROM)、電気消去可能プログラマブル読出し専用メモリ(EEPROM)、フラッシュメモリ、ハードディスク、コンパクトディスクROM(CD−ROM)、フロッピー(登録商標)ディスク、カセット、磁気ディスク、光学式媒体、又は他のコンピュータ読取可能媒体を含んでもよい。幾つかの実施例において、製品は、1つ以上のコンピュータ読取可能記憶媒体を含んでもよい。
幾つかの実施例において、コンピュータ読取可能記憶媒体は非一時的媒体を含んでもよい。用語「非一時的」は、記憶媒体が搬送波又は伝播信号において具現化されないことを示してもよい。特定の実施例において、非一時的記憶媒体は、時間が経つにつれて、変化する可能性のあるデータを格納してもよい(例えば、RAM又はキャッシュ内)。
種々の実施例を説明してきた。これら及び他の実施形態は、以下の特許請求の範囲の適用内にある。
2 ストレージ環境
4 ホスト装置
6 ストレージ装置
8 コントローラ
10 不揮発性メモリアレイ
11 電力供給部
12 揮発性メモリ
13 キャッシュされた情報
14 インターフェース
16 メモリ装置
18 チャンネル
22 アドレス変換モジュール
24 書込モジュール
26 メンテナンスモジュール
28 読取モジュール
30 スケジューリングモジュール
32 チャンネルコントローラ
34 生データバッファ
36 ECCエンコーダ
38 読取バッファ
40 ECCデコーダ
42 リソース割当モジュール
50 アービタモジュール
52 アロケータ及び電力制御モジュール
54 リソース
56 要求元
58 要求
60 アロケータモジュール
61 サーモメータデータ構造
62 電力制御モジュール
70 CPU
72 読取データマルチプレクサ
130 ノード

Claims (24)

  1. 装置のコントローラによって、一定に連続した割当および解除を実行するサーモメータデータ構造に従って割当てられ、且つ解放される前記装置の複数のリソースに対して、前記複数のリソース第1の非ゼロサブセットの使用量を決定することと、
    前記コントローラによって、前記複数のリソースの前記第1の非ゼロサブセットの前記使用量を、前記複数のリソースの前記第1の非ゼロサブセットを前記複数のリソースの第2の非ゼロサブセットから分離する閾値と比較することと、
    前記比較に少なくとも基づいて、前記複数のリソースの前記第2の非ゼロサブセットの電源をオンにすることと
    を含み、
    前記装置はソリッドステートドライブ(SSD)を備え、前記複数のリソースは、前記SSDの不揮発性メモリへデータを書込むこと、及びそれからデータを読取ることの1つ以上を実行する、
    方法。
  2. 装置のコントローラによって、一定に連続した割当および解除を実行するサーモメータデータ構造に従って割当てられ、且つ解放される前記装置の複数のリソースに対して、前記複数のリソースの第1の非ゼロサブセットの使用量を決定することと、
    前記コントローラによって、前記複数のリソースの前記第1の非ゼロサブセットの前記使用量を、前記複数のリソースの前記第1の非ゼロサブセットを前記複数のリソースの第2の非ゼロサブセットから分離する閾値と比較することと、
    前記比較に少なくとも基づいて、前記複数のリソースの前記第2の非ゼロサブセットの電源をオンにすることと
    を含み、
    更に、前記コントローラによって、前記サーモメータデータ構造の解析に少なくとも基づいて、前記閾値を決定することを含む、
    方法
  3. 装置のコントローラによって、一定に連続した割当および解除を実行するサーモメータデータ構造に従って割当てられ、且つ解放される前記装置の複数のリソースに対して、前記複数のリソースの第1の非ゼロサブセットの使用量を決定することと、
    前記コントローラによって、前記複数のリソースの前記第1の非ゼロサブセットの前記使用量を、前記複数のリソースの前記第1の非ゼロサブセットを前記複数のリソースの第2の非ゼロサブセットから分離する閾値と比較することと、
    前記比較に少なくとも基づいて、前記複数のリソースの前記第2の非ゼロサブセットの電源をオンにすることと
    を含み、
    前記サーモメータデータ構造は、前記複数のリソースのそれぞれに対する各ビットを含み、前記各ビットのそれぞれは、前記複数のリソースの対応する1つが要求ユニットに割当てられるか、又は要求ユニットへの割当に利用可能かどうかを示す、
    方法
  4. 更に、前記サーモメータデータ構造の前記各ビットの統計的解析に少なくとも基づいて、前記閾値を決定することを含む、請求項に記載の方法。
  5. 装置のコントローラによって、一定に連続した割当および解除を実行するサーモメータデータ構造に従って割当てられ、且つ解放される前記装置の複数のリソースに対して、前記複数のリソースの第1の非ゼロサブセットの使用量を決定することと、
    前記コントローラによって、前記複数のリソースの前記第1の非ゼロサブセットの前記使用量を、前記複数のリソースの前記第1の非ゼロサブセットを前記複数のリソースの第2の非ゼロサブセットから分離する閾値と比較することと、
    前記比較に少なくとも基づいて、前記複数のリソースの前記第2の非ゼロサブセットの電源をオンにすることと
    を含み、
    更に、前記複数のリソースの前記第1の非ゼロサブセットの前記使用量を、要求されるであろう前記複数のリソースの期待数を示す予測使用量に変換することを含み、
    前記複数のリソースの前記第1の非ゼロサブセットの前記使用量を比較することは、要求されるであろう前記複数のリソースの前記期待数を前記閾値と比較することを含む、
    方法
  6. 装置のコントローラによって、一定に連続した割当および解除を実行するサーモメータデータ構造に従って割当てられ、且つ解放される前記装置の複数のリソースに対して、前記複数のリソースの第1の非ゼロサブセットの使用量を決定することと、
    前記コントローラによって、前記複数のリソースの前記第1の非ゼロサブセットの前記使用量を、前記複数のリソースの前記第1の非ゼロサブセットを前記複数のリソースの第2の非ゼロサブセットから分離する閾値と比較することと、
    前記比較に少なくとも基づいて、前記複数のリソースの前記第2の非ゼロサブセットの電源をオンにすることと
    を含み、
    前記複数のリソースのそれぞれは、ソリッドステートドライブの不揮発性メモリからデータを取り出すときのチャンネルアクセスを備える、
    方法
  7. 装置のコントローラによって、一定に連続した割当および解除を実行するサーモメータデータ構造に従って割当てられ、且つ解放される前記装置の複数のリソースに対して、前記複数のリソースの第1の非ゼロサブセットの使用量を決定することと、
    前記コントローラによって、前記複数のリソースの前記第1の非ゼロサブセットの前記使用量を、前記複数のリソースの前記第1の非ゼロサブセットを前記複数のリソースの第2の非ゼロサブセットから分離する閾値と比較することと、
    前記比較に少なくとも基づいて、前記複数のリソースの前記第2の非ゼロサブセットの電源をオンにすることと
    を含み、
    前記複数のリソースのそれぞれは、ソリッドステートドライブの不揮発性メモリに書込まれるECC符号化データに関してECC復号化を実行するために用いられるそれぞれのエラー検出訂正(ECC)デコーダを備える、
    方法
  8. 前記複数のリソースの前記第2の非ゼロサブセットの電源をオンにすることは、前記使用量が前記閾値と等しいか、又はそれを超える場合に前記複数のリソースの前記第2の非ゼロサブセットの電源をオンにすることを含み、
    前記方法は更に、前記使用量が前記閾値よりも小さい場合に前記複数のリソースの前記第2の非ゼロサブセットの電源をオフにすることを含む、請求項1から7のいずれか1項記載の方法。
  9. 更に、消費電力を制御するよう、経時的に前記閾値を異なる値に動的に設定することを含む、請求項1から7のいずれか1項記載の方法。
  10. 装置であって、
    1つ以上のプロセッサと、
    メモリと、
    を備え、
    前記1つ以上のプロセッサは、
    一定に連続した割当および解除を実行するサーモメータデータ構造に従って割当てられ、且つ解放される前記装置の複数のリソースに対して、前記複数のリソース第1の非ゼロサブセットの使用量を決定することと、
    前記複数のリソースの前記第1の非ゼロサブセットの前記使用量を、前記複数のリソースの前記第1の非ゼロサブセットを前記複数のリソースの第2の非ゼロサブセットから分離する閾値と比較することと、
    前記比較に少なくとも基づいて、前記複数のリソースの前記第2の非ゼロサブセットの電源をオンにすることと
    を行うよう構成されており
    前記メモリは、前記閾値を格納するよう構成されており
    前記装置はソリッドステートドライブ(SSD)を備え、
    前記複数のリソースは、前記SSDの不揮発性メモリへデータを書込むこと、及びそれからデータを読取ることの1つ以上を実行する、
    装置。
  11. 装置であって、
    1つ以上のプロセッサとメモリとを備え、
    前記1つ以上のプロセッサは、
    一定に連続した割当および解除を実行するサーモメータデータ構造に従って割当てられ、且つ解放される前記装置の複数のリソースに対して、前記複数のリソースの第1の非ゼロサブセットの使用量を決定することと、
    前記複数のリソースの前記第1の非ゼロサブセットの前記使用量を、前記複数のリソースの前記第1の非ゼロサブセットを前記複数のリソースの第2の非ゼロサブセットから分離する閾値と比較することと、
    前記比較に少なくとも基づいて、前記複数のリソースの前記第2の非ゼロサブセットの電源をオンにすることと
    を行うよう構成されており、
    前記メモリは、前記閾値を格納するよう構成されており、
    前記1つ以上のプロセッサは更に、前記サーモメータデータ構造の解析に少なくとも基づいて、前記閾値を決定するよう構成される、
    装置
  12. 装置であって、
    1つ以上のプロセッサとメモリとを備え、
    前記1つ以上のプロセッサは、
    一定に連続した割当および解除を実行するサーモメータデータ構造に従って割当てられ、且つ解放される前記装置の複数のリソースに対して、前記複数のリソースの第1の非ゼロサブセットの使用量を決定することと、
    前記複数のリソースの前記第1の非ゼロサブセットの前記使用量を、前記複数のリソースの前記第1の非ゼロサブセットを前記複数のリソースの第2の非ゼロサブセットから分離する閾値と比較することと、
    前記比較に少なくとも基づいて、前記複数のリソースの前記第2の非ゼロサブセットの電源をオンにすることと
    を行うよう構成されており、
    前記メモリは、前記閾値を格納するよう構成されており、
    前記サーモメータデータ構造は、前記複数のリソースのそれぞれに対する各ビットを含み、前記各ビットのそれぞれは、前記複数のリソースの対応する1つが要求ユニットに割当てられるか、又は要求ユニットへの割当に利用可能かどうかを示す、
    装置
  13. 前記1つ以上のプロセッサは更に、前記サーモメータデータ構造の前記各ビットの統計的解析に少なくとも基づいて、前記閾値を決定するよう構成される、請求項12に記載の装置。
  14. 装置であって、
    1つ以上のプロセッサとメモリとを備え、
    前記1つ以上のプロセッサは、
    一定に連続した割当および解除を実行するサーモメータデータ構造に従って割当てられ、且つ解放される前記装置の複数のリソースに対して、前記複数のリソースの第1の非ゼロサブセットの使用量を決定することと、
    前記複数のリソースの前記第1の非ゼロサブセットの前記使用量を、前記複数のリソースの前記第1の非ゼロサブセットを前記複数のリソースの第2の非ゼロサブセットから分離する閾値と比較することと、
    前記比較に少なくとも基づいて、前記複数のリソースの前記第2の非ゼロサブセットの電源をオンにすることと
    を行うよう構成されており、
    前記メモリは、前記閾値を格納するよう構成されており、
    前記1つ以上のプロセッサは更に、前記複数のリソースの前記第1の非ゼロサブセットの前記使用量を、要求されるであろう前記複数のリソースの期待数を示す予測使用量に変換するよう構成され、
    前記1つ以上のプロセッサは、要求されるであろう前記複数のリソースの前記期待数を前記閾値と比較するよう構成される、
    装置
  15. 装置であって、
    1つ以上のプロセッサとメモリとを備え、
    前記1つ以上のプロセッサは、
    一定に連続した割当および解除を実行するサーモメータデータ構造に従って割当てられ、且つ解放される前記装置の複数のリソースに対して、前記複数のリソースの第1の非ゼロサブセットの使用量を決定することと、
    前記複数のリソースの前記第1の非ゼロサブセットの前記使用量を、前記複数のリソースの前記第1の非ゼロサブセットを前記複数のリソースの第2の非ゼロサブセットから分離する閾値と比較することと、
    前記比較に少なくとも基づいて、前記複数のリソースの前記第2の非ゼロサブセットの電源をオンにすることと
    を行うよう構成されており、
    前記メモリは、前記閾値を格納するよう構成されており、
    前記複数のリソースのそれぞれは、ソリッドステートドライブの不揮発性メモリからデータを取り出すときのチャンネルアクセスを備える、
    装置
  16. 装置であって、
    1つ以上のプロセッサとメモリとを備え、
    前記1つ以上のプロセッサは、
    一定に連続した割当および解除を実行するサーモメータデータ構造に従って割当てられ、且つ解放される前記装置の複数のリソースに対して、前記複数のリソースの第1の非ゼロサブセットの使用量を決定することと、
    前記複数のリソースの前記第1の非ゼロサブセットの前記使用量を、前記複数のリソースの前記第1の非ゼロサブセットを前記複数のリソースの第2の非ゼロサブセットから分離する閾値と比較することと、
    前記比較に少なくとも基づいて、前記複数のリソースの前記第2の非ゼロサブセットの電源をオンにすることと
    を行うよう構成されており、
    前記メモリは、前記閾値を格納するよう構成されており、
    前記複数のリソースのそれぞれは、ソリッドステートドライブの不揮発性メモリに書込まれるECC符号化データに関してECC復号化を実行するために用いられるそれぞれのエラー検出訂正(ECC)デコーダを備える、
    装置
  17. 前記1つ以上のプロセッサは、前記使用量が前記閾値と等しいか、又はそれを超える場合に前記複数のリソースの前記第2の非ゼロサブセットの電源をオンにするよう構成され、
    前記1つ以上のプロセッサは更に、前記使用量が前記閾値よりも小さい場合に前記複数のリソースの前記第2の非ゼロサブセットの電源をオフにするよう構成される、請求項10から16のいずれか1項記載の装置。
  18. 前記1つ以上のプロセッサは更に、消費電力を制御するよう、経時的に前記閾値を異なる値に動的に設定するよう構成される、請求項10から16のいずれか1項記載の装置。
  19. 非一時的コンピュータ読取可能記憶媒体であって、実行時に、1つ以上のプロセッサに、
    一定に連続した割当および解除を実行するサーモメータデータ構造に従って割当てられ、且つ解放される装置の複数のリソースに対して、前記複数のリソース第1の非ゼロサブセットの使用量を決定することと、
    前記複数のリソースの前記第1の非ゼロサブセットの前記使用量を、前記複数のリソースの前記第1の非ゼロサブセットを前記複数のリソースの第2の非ゼロサブセットから分離する閾値と比較することと、
    前記比較に少なくとも基づいて、前記複数のリソースの前記第2の非ゼロサブセットの電源をオンにすることと
    を行わせる命令を格納しており、
    前記装置はソリッドステートドライブ(SSD)を備え、前記複数のリソースは、前記SSDの不揮発性メモリへデータを書込むこと、及びそれからデータを読取ることの1つ以上を実行する、
    非一時的コンピュータ読取可能記憶媒体。
  20. 非一時的コンピュータ読取可能記憶媒体であって、実行時に、1つ以上のプロセッサに、
    一定に連続した割当および解除を実行するサーモメータデータ構造に従って割当てられ、且つ解放される装置の複数のリソースに対して、前記複数のリソースの第1の非ゼロサブセットの使用量を決定することと、
    前記複数のリソースの前記第1の非ゼロサブセットの前記使用量を、前記複数のリソースの前記第1の非ゼロサブセットを前記複数のリソースの第2の非ゼロサブセットから分離する閾値と比較することと、
    前記比較に少なくとも基づいて、前記複数のリソースの前記第2の非ゼロサブセットの電源をオンにすることと
    を行わせる命令を格納しており、
    更に、前記サーモメータデータ構造の解析に少なくとも基づいて、前記閾値を決定することを前記1つ以上のプロセッサに行わせる命令を格納している、
    非一時的コンピュータ読取可能記憶媒体。
  21. 非一時的コンピュータ読取可能記憶媒体であって、実行時に、1つ以上のプロセッサに、
    一定に連続した割当および解除を実行するサーモメータデータ構造に従って割当てられ、且つ解放される装置の複数のリソースに対して、前記複数のリソースの第1の非ゼロサブセットの使用量を決定することと、
    前記複数のリソースの前記第1の非ゼロサブセットの前記使用量を、前記複数のリソースの前記第1の非ゼロサブセットを前記複数のリソースの第2の非ゼロサブセットから分離する閾値と比較することと、
    前記比較に少なくとも基づいて、前記複数のリソースの前記第2の非ゼロサブセットの電源をオンにすることと
    を行わせる命令を格納しており、
    前記サーモメータデータ構造は、前記複数のリソースのそれぞれに対する各ビットを含み、前記各ビットのそれぞれは、前記複数のリソースの対応する1つが要求ユニットに割当てられるか、又は要求ユニットへの割当に利用可能かどうかを示す、
    非一時的コンピュータ読取可能記憶媒体。
  22. 非一時的コンピュータ読取可能記憶媒体であって、実行時に、1つ以上のプロセッサに、
    一定に連続した割当および解除を実行するサーモメータデータ構造に従って割当てられ、且つ解放される装置の複数のリソースに対して、前記複数のリソースの第1の非ゼロサブセットの使用量を決定することと、
    前記複数のリソースの前記第1の非ゼロサブセットの前記使用量を、前記複数のリソースの前記第1の非ゼロサブセットを前記複数のリソースの第2の非ゼロサブセットから分離する閾値と比較することと、
    前記比較に少なくとも基づいて、前記複数のリソースの前記第2の非ゼロサブセットの電源をオンにすることと
    を行わせる命令を格納しており、
    更に、前記複数のリソースの前記第1の非ゼロサブセットの前記使用量を、要求されるであろう前記複数のリソースの期待数を示す予測使用量に変換することを前記1つ以上のプロセッサに行わせる命令を格納しており、
    前記複数のリソースの前記第1の非ゼロサブセットの前記使用量を比較することは、要求されるであろう前記複数のリソースの前記期待数を前記閾値と比較することを含む、
    非一時的コンピュータ読取可能記憶媒体。
  23. 非一時的コンピュータ読取可能記憶媒体であって、実行時に、1つ以上のプロセッサに、
    一定に連続した割当および解除を実行するサーモメータデータ構造に従って割当てられ、且つ解放される装置の複数のリソースに対して、前記複数のリソースの第1の非ゼロサブセットの使用量を決定することと、
    前記複数のリソースの前記第1の非ゼロサブセットの前記使用量を、前記複数のリソースの前記第1の非ゼロサブセットを前記複数のリソースの第2の非ゼロサブセットから分離する閾値と比較することと、
    前記比較に少なくとも基づいて、前記複数のリソースの前記第2の非ゼロサブセットの電源をオンにすることと
    を行わせる命令を格納しており、
    前記複数のリソースのそれぞれは、ソリッドステートドライブの不揮発性メモリからデータを取り出すときのチャンネルアクセスを備える、
    非一時的コンピュータ読取可能記憶媒体。
  24. 非一時的コンピュータ読取可能記憶媒体であって、実行時に、1つ以上のプロセッサに、
    一定に連続した割当および解除を実行するサーモメータデータ構造に従って割当てられ、且つ解放される装置の複数のリソースに対して、前記複数のリソースの第1の非ゼロサブセットの使用量を決定することと、
    前記複数のリソースの前記第1の非ゼロサブセットの前記使用量を、前記複数のリソースの前記第1の非ゼロサブセットを前記複数のリソースの第2の非ゼロサブセットから分離する閾値と比較することと、
    前記比較に少なくとも基づいて、前記複数のリソースの前記第2の非ゼロサブセットの電源をオンにすることと
    を行わせる命令を格納しており、
    前記複数のリソースのそれぞれは、ソリッドステートドライブの不揮発性メモリに書込まれるECC符号化データに関してECC復号化を実行するために用いられるそれぞれのエラー検出訂正(ECC)デコーダを備える、
    非一時的コンピュータ読取可能記憶媒体。
JP2015223213A 2014-11-18 2015-11-13 装置における電源管理のためのリソース割当及び解除 Expired - Fee Related JP6250613B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/546,914 2014-11-18
US14/546,914 US9417961B2 (en) 2014-11-18 2014-11-18 Resource allocation and deallocation for power management in devices

Publications (2)

Publication Number Publication Date
JP2016105273A JP2016105273A (ja) 2016-06-09
JP6250613B2 true JP6250613B2 (ja) 2017-12-20

Family

ID=55132624

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015223213A Expired - Fee Related JP6250613B2 (ja) 2014-11-18 2015-11-13 装置における電源管理のためのリソース割当及び解除

Country Status (10)

Country Link
US (1) US9417961B2 (ja)
JP (1) JP6250613B2 (ja)
KR (1) KR101876001B1 (ja)
CN (1) CN105607721B (ja)
AU (1) AU2015258208B2 (ja)
CA (1) CA2911982A1 (ja)
DE (1) DE102015014851B4 (ja)
FR (1) FR3028656A1 (ja)
GB (1) GB2533688B (ja)
IE (1) IE20150399A1 (ja)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104348764B (zh) * 2013-07-31 2017-09-19 国际商业机器公司 在数据接收链路中分配计算单元的方法和装置
US9910465B2 (en) * 2014-11-11 2018-03-06 Microsoft Technology Licensing, Llc Covered radius hinge
US9625954B2 (en) 2014-11-26 2017-04-18 Microsoft Technology Licensing, Llc Multi-pivot hinge
US9851759B2 (en) 2014-12-31 2017-12-26 Microsoft Technology Licensing, Llc Multi-pivot hinge cover
US10174534B2 (en) 2015-01-27 2019-01-08 Microsoft Technology Licensing, Llc Multi-pivot hinge
US20160246715A1 (en) * 2015-02-23 2016-08-25 Advanced Micro Devices, Inc. Memory module with volatile and non-volatile storage arrays
US9720604B2 (en) * 2015-08-06 2017-08-01 Sandisk Technologies Llc Block storage protocol to RAM bypass
US10162389B2 (en) 2015-09-25 2018-12-25 Microsoft Technology Licensing, Llc Covered multi-axis hinge
US10453502B2 (en) 2016-04-04 2019-10-22 Micron Technology, Inc. Memory bank power coordination including concurrently performing a memory operation in a selected number of memory regions
CN107733552B (zh) * 2016-08-12 2020-04-03 华为技术有限公司 数据传输方法和装置
US10437293B2 (en) 2016-09-23 2019-10-08 Microsoft Technology Licensing, Llc Multi-axis hinge
US10705885B2 (en) * 2018-01-31 2020-07-07 Palo Alto Networks, Inc. Autoscaling of data processing computing systems based on predictive queue length
US11237617B2 (en) * 2018-12-31 2022-02-01 Micron Technology, Inc. Arbitration techniques for managed memory
US11687277B2 (en) 2018-12-31 2023-06-27 Micron Technology, Inc. Arbitration techniques for managed memory
US11194511B2 (en) * 2018-12-31 2021-12-07 Micron Technology, Inc. Arbitration techniques for managed memory
US11249657B2 (en) * 2019-07-10 2022-02-15 Arm Limited Non-volatile storage circuitry accessible as primary storage for processing circuitry
US11558259B2 (en) 2019-12-27 2023-01-17 Arteris, Inc. System and method for generating and using physical roadmaps in network synthesis
US11657203B2 (en) 2019-12-27 2023-05-23 Arteris, Inc. Multi-phase topology synthesis of a network-on-chip (NoC)
US11665776B2 (en) 2019-12-27 2023-05-30 Arteris, Inc. System and method for synthesis of a network-on-chip for deadlock-free transformation
US10990724B1 (en) 2019-12-27 2021-04-27 Arteris, Inc. System and method for incremental topology synthesis of a network-on-chip
KR20210103309A (ko) 2020-02-13 2021-08-23 삼성전자주식회사 전원 공급 회로를 포함하는 스토리지 장치 및 이의 동작 방법
US11418448B2 (en) 2020-04-09 2022-08-16 Arteris, Inc. System and method for synthesis of a network-on-chip to determine optimal path with load balancing
US11330471B2 (en) * 2020-06-22 2022-05-10 T-Mobile Usa, Inc. Simultaneous multi-path uplink transmissions to a telecommunications network
CN111951866B (zh) * 2020-10-19 2021-01-15 深圳市芯天下技术有限公司 非易失型闪存深睡眠低静态功耗的电路
US11601357B2 (en) 2020-12-22 2023-03-07 Arteris, Inc. System and method for generation of quality metrics for optimization tasks in topology synthesis of a network
US11281827B1 (en) 2020-12-26 2022-03-22 Arteris, Inc. Optimization of parameters for synthesis of a topology using a discriminant function module
US11449655B2 (en) 2020-12-30 2022-09-20 Arteris, Inc. Synthesis of a network-on-chip (NoC) using performance constraints and objectives
US11956127B2 (en) 2021-03-10 2024-04-09 Arteris, Inc. Incremental topology modification of a network-on-chip
US11693472B2 (en) 2021-08-31 2023-07-04 Apple Inc. Multi-die power management in SoCs
CN114388008B (zh) * 2022-01-14 2023-08-29 长鑫存储技术有限公司 电源控制电路及控制方法
US20230325097A1 (en) * 2022-04-12 2023-10-12 Dell Products L.P. Selective powering of storage drive components in a storage node based on system performance limits

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030196126A1 (en) 2002-04-11 2003-10-16 Fung Henry T. System, method, and architecture for dynamic server power management and dynamic workload management for multi-server environment
US6742097B2 (en) * 2001-07-30 2004-05-25 Rambus Inc. Consolidation of allocated memory to reduce power consumption
US7219249B1 (en) 2002-12-03 2007-05-15 The Research Foundation Of State University Of New York System and method for reducing power requirements of microprocessors through dynamic allocation of datapath resources
US7007183B2 (en) 2002-12-09 2006-02-28 International Business Machines Corporation Power conservation by turning off power supply to unallocated resources in partitioned data processing systems
US7185215B2 (en) 2003-02-24 2007-02-27 International Business Machines Corporation Machine code builder derived power consumption reduction
US20040215912A1 (en) * 2003-04-24 2004-10-28 George Vergis Method and apparatus to establish, report and adjust system memory usage
US20060117160A1 (en) * 2004-12-01 2006-06-01 Intel Corporation Method to consolidate memory usage to reduce power consumption
US8041967B2 (en) 2005-02-15 2011-10-18 Hewlett-Packard Development Company, L.P. System and method for controlling power to resources based on historical utilization data
US7631162B2 (en) * 2005-10-27 2009-12-08 Sandisck Corporation Non-volatile memory with adaptive handling of data writes
JP2007293442A (ja) * 2006-04-21 2007-11-08 Hitachi Ltd ストレージシステム及びその制御方法
JP5057792B2 (ja) * 2007-01-29 2012-10-24 株式会社日立製作所 性能ボトルネックを緩和する機能を備えたストレージシステム
US7971074B2 (en) 2007-06-28 2011-06-28 Intel Corporation Method, system, and apparatus for a core activity detector to facilitate dynamic power management in a distributed system
JP4461170B2 (ja) * 2007-12-28 2010-05-12 株式会社東芝 メモリシステム
US20090228697A1 (en) * 2008-03-07 2009-09-10 Kabushiki Kaisha Toshiba Information processing apparatus, storage drive and firmware update method
US8291245B2 (en) * 2008-04-17 2012-10-16 International Business Machines Corporation Method, apparatus and system for reducing power consumption based on storage device data migration
US8271818B2 (en) 2009-04-30 2012-09-18 Hewlett-Packard Development Company, L.P. Managing under-utilized resources in a computer
JP5091912B2 (ja) * 2009-05-21 2012-12-05 株式会社東芝 マルチコアプロセッサシステム
WO2011031899A2 (en) * 2009-09-09 2011-03-17 Fusion-Io, Inc. Apparatus, system, and method for power reduction in a storage device
CN102141943A (zh) * 2010-01-28 2011-08-03 建兴电子科技股份有限公司 闪存装置及其数据保护方法
US8213255B2 (en) * 2010-02-19 2012-07-03 Sandisk Technologies Inc. Non-volatile storage with temperature compensation based on neighbor state information
US9098521B2 (en) * 2010-09-15 2015-08-04 Qualcomm Incorporated System and method for managing resources and threshsold events of a multicore portable computing device
JP5633440B2 (ja) * 2011-03-17 2014-12-03 富士通株式会社 情報処理装置、電力制御方法及び電力制御プログラム
JP5576827B2 (ja) * 2011-06-03 2014-08-20 日本電信電話株式会社 サーバ管理システム、サーバ管理装置、サーバ管理方法、及びサーバ管理プログラム
JP2013149065A (ja) * 2012-01-19 2013-08-01 Nec Corp サーバ、サーバの消費電力削減方法、およびコンピュータプログラム
JP5554358B2 (ja) * 2012-03-23 2014-07-23 株式会社東芝 マルチプロセッサシステムおよび電力制御方法
JP5857849B2 (ja) * 2012-03-30 2016-02-10 富士通株式会社 ストレージ装置、起動装置決定方法およびプログラム
US9766678B2 (en) * 2013-02-04 2017-09-19 Intel Corporation Multiple voltage identification (VID) power architecture, a digital synthesizable low dropout regulator, and apparatus for improving reliability of power gates

Also Published As

Publication number Publication date
US20160139639A1 (en) 2016-05-19
CN105607721B (zh) 2018-10-09
JP2016105273A (ja) 2016-06-09
FR3028656A1 (ja) 2016-05-20
CA2911982A1 (en) 2016-05-18
GB2533688A (en) 2016-06-29
DE102015014851A1 (de) 2016-05-19
GB2533688B (en) 2019-07-03
KR20160059430A (ko) 2016-05-26
GB201519886D0 (en) 2015-12-23
US9417961B2 (en) 2016-08-16
IE20150399A1 (en) 2016-06-29
DE102015014851B4 (de) 2020-07-09
KR101876001B1 (ko) 2018-07-06
AU2015258208B2 (en) 2017-10-19
AU2015258208A1 (en) 2016-06-02
CN105607721A (zh) 2016-05-25

Similar Documents

Publication Publication Date Title
JP6250613B2 (ja) 装置における電源管理のためのリソース割当及び解除
US11068170B2 (en) Multi-tier scheme for logical storage management
JP7366795B2 (ja) メモリシステムおよび制御方法
US20180211708A1 (en) Memory system and control method
JP6163532B2 (ja) メモリシステムコントローラを含む装置
US8949492B2 (en) Apparatus including buffer allocation management and related methods
US20160210060A1 (en) Dynamic resource allocation within storage devices
EP2396729B1 (en) Memory system and method of controlling memory system
US9076528B2 (en) Apparatus including memory management control circuitry and related methods for allocation of a write block cluster
US10642513B2 (en) Partially de-centralized latch management architectures for storage devices
CN108228473B (zh) 通过动态地传送存储器范围分配的负载平衡的方法及系统
JP7353934B2 (ja) メモリシステムおよび制御方法
US11868652B2 (en) Utilization based dynamic shared buffer in data storage system
CN113924545A (zh) 基于存储器子系统中的媒体单元的可用性的预测性数据传输
CN115458013A (zh) 存储装置及其操作方法
US11847323B1 (en) Data storage device and method for host buffer management
US20230315335A1 (en) Data Storage Device and Method for Executing a Low-Priority Speculative Read Command from a Host
US20240143227A1 (en) Data Storage Device and Method for Reducing Flush Latency

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20161026

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20161101

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170127

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170321

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20170620

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20170807

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20170815

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20170825

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170920

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20171024

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20171122

R150 Certificate of patent or registration of utility model

Ref document number: 6250613

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees