KR20160059430A - 장치 내의 전력 관리를 위한 자원 할당 및 할당해제 - Google Patents

장치 내의 전력 관리를 위한 자원 할당 및 할당해제 Download PDF

Info

Publication number
KR20160059430A
KR20160059430A KR1020150159592A KR20150159592A KR20160059430A KR 20160059430 A KR20160059430 A KR 20160059430A KR 1020150159592 A KR1020150159592 A KR 1020150159592A KR 20150159592 A KR20150159592 A KR 20150159592A KR 20160059430 A KR20160059430 A KR 20160059430A
Authority
KR
South Korea
Prior art keywords
resources
zero subset
usage
module
data structure
Prior art date
Application number
KR1020150159592A
Other languages
English (en)
Other versions
KR101876001B1 (ko
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 KR20160059430A publication Critical patent/KR20160059430A/ko
Application granted granted Critical
Publication of KR101876001B1 publication Critical patent/KR101876001B1/ko

Links

Images

Classifications

    • 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
    • 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
    • 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
    • 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
    • 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/5094Allocation of resources, e.g. of the central processing unit [CPU] where the allocation takes into account power or heat criteria
    • 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
    • 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/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • 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
    • 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
    • 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)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Evolutionary Biology (AREA)
  • Probability & Statistics with Applications (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Computer Security & Cryptography (AREA)
  • Power Sources (AREA)

Abstract

일반적으로, 전원 관리를 용이하게 하는 리소스 할당 및 할당 해제에 대한 기술들이 설명된다. 하나 이상의 프로세서들 및 메모리를 포함하는 디바이스가 이 기술들을 수행하도록 구성될 수 있다. 프로세서는 복수의 리소스들 중 제 1 비제로(non-zero) 서브셋의 사용량을 결정하도록 구성될 수 있고, 복수의 리소스들은 온도계 데이터 구조에 따라 할당되고 릴리즈된다. 프로세서들은 또한 복수의 리소스들 중 제 1 비제로 서브셋의 사용량과, 복수의 리소스들 중 제 2 비제로 서브셋으로부터 복수의 리소스들 중 제 1 비제로 서브셋을 분리하는 문턱값을 비교하고, 적어도 이 비교에 기반하여 복수의 리소스들 중 제 2 비제로 서브셋에 전원을 공급하도록 구성될 수 있다. 메모리는 문턱값을 저장하도록 구성될 수 있다.

Description

디바이스 내의 전원 관리를 위한 리소스 할당 및 할당 해제{RESOURCE ALLOCATION AND DEALLOCATION FOR POWER MANAGEMENT IN DEVICES}
본 개시는 자원 할당, 특히 전력 관리를 위한 자원 할당에 관한 것이다.
장치는 장치의 전체 동작을 지원하기 위해 다양한 목적으로 자원을 할당하고 할당해제할 수 있다. 예컨대, 솔리드 스테이트 드라이브(SSD)와 같은 저장 장치는 데이터 버퍼 액세스, 비휘발성 메모리(예컨대, 플래시 메모리)에 데이터를 저장할 때 오류 검사 및 수정(ECC) 인코딩, 비휘발성 메모리로부터 데이터를 검색할 때 플래시 채널 액세스, 및 비휘발성 메모리로부터 데이터를 검색할 때 ECC 디코딩을 지원하기 위해 자원을 할당하고 할당해제할 수 있다. 자원수가 ("요청자"로 지칭될 수 있는) 유닛수보다 적은 경우, 저장 장치는 과도한 지연을 방지하도록 자원에 대한 합리적으로 균형 잡힌 액세스를 제공하기 위해 (이른바 라운드 로빈 방식과 같은) 중재(arbitration) 방식을 실시할 수 있다.
경우에 따라, 자원수는 (예컨대, 전력 소비의 관점에서) 저장 장치의 보다 효율적인 동작을 달성하기 위해 인위적으로 제한된다. 즉, 가용 자원들의 일부는 저장 장치를 동작시키는 것과 연관되는 전력 소비 및 해당 비용을 감소시키기 위해 파워오프될 수 있다. 특정 맥락에서 자원수를 인위적으로 제한 시에, 저장 장치의 제조자들은 성능과 동작 효율의 균형을 이루려 시도하고 있다. 예컨대, 다양한 제조자들은 자원 수요가 높을 때 성능을 향상시키기 위해 초기에 파워오프된 자원들을 동적으로 파워온하며, 자원 수요가 낮을 때 동작 효율을 향상시키기 위해 동일한 자원들을 동적으로 파워오프하려 시도하였다.
그러므로, 동적 자원 할당 및 할당해제는 다양한 자원들이 필요할 때 파워온되며 필요하지 않을 때 파워오프되는 것을 허용할 수 있다. 그러나, 이러한 전력-절감 자원 할당/할당해제를 용이하게 하기 위해 개발된 알고리즘은 할당 데이터 구조의 한계로 인해 문제가 있을 수 있다. 자원 할당/할당해제를 위해 사용되는 선입선출(FIFO) 데이터 구조 또는 후입선출(LIFO) 데이터 구조는 할당해제된 자원들이 할당된 자원들과 섞이는 랜덤 분포를 초래할 수 있어서, 특정 자원들을 서비스 요청에 따라 적시에 사용 가능하게 할 충분한 시간과 함께 이러한 자원들이 요구될 때를 아는 것을 어렵게 한다. 적절하게 동작 효율의 균형을 이루는 한편 적절한 성능을 또한 제공할 수 있는 동적 자원 할당/할당해제를 용이하게 하기 위해, 복잡한 하드웨어가 사용될 수 있거나 (중앙 처리 장치 또는 CPU와 같은) 범용 프로세서가 배치될 수 있다. 그러나, 이러한 전용 하드웨어 또는 용도변경 CPU는 상당한 전력을 소비하여, 동적 할당/할당해제 알고리즘을 통해 제공되는 전력 절감의 전부는 아니라 해도 많은 부분을 상쇄할 수 있다.
일 예에서, 방법은, 장치의 컨트롤러에 의해, 장치의 복수의 자원들의 제1 비제로(non-zero) 부분집합의 사용량(usage)을 판단하는 단계로, 복수의 자원들은 온도계 데이터 구조에 따라 할당되고 해제되는 것인 단계, 컨트롤러에 의해, 복수의 자원들의 제1 비제로 부분집합의 사용량을, 복수의 자원들의 제1 비제로 부분집합을 복수의 자원들의 제2 비제로 부분집합으로부터 분리하는 임계값과 비교하는 단계, 및 적어도 비교에 기초하여 복수의 자원들의 제2 비제로 부분집합을 파워온하는 단계를 포함한다.
다른 예에서, 장치는 온도계 데이터 구조에 따라 할당되고 해제되는 복수의 자원들의 제1 비제로 부분집합의 사용량을 판단하고, 복수의 자원들의 제1 비제로 부분집합의 사용량을, 복수의 자원들의 제1 비제로 부분집합을 복수의 자원들의 제2 비제로 부분집합으로부터 분리하는 임계값과 비교하며, 적어도 비교에 기초하여 복수의 자원들의 제2 비제로 부분집합을 파워온하도록 구성되는 하나 이상의 프로세서, 및 임계값을 저장하도록 구성되는 메모리를 포함한다.
또 다른 예에서, 비일시적 컴퓨터-판독 가능 저장 매체는, 실행될 때, 하나 이상의 프로세서로 하여금, 온도계 데이터 구조에 따라 할당되고 해제되는 복수의 자원들의 제1 비제로 부분집합의 사용량을 판단하고, 복수의 자원들의 제1 비제로 부분집합의 사용량을, 복수의 자원들의 제1 비제로 부분집합을 복수의 자원들의 제2 비제로 부분집합으로부터 분리하는 임계값과 비교하며, 적어도 비교에 기초하여 복수의 자원들의 제2 비제로 부분집합을 파워온하게 하는 명령을 저장한다.
앞서 논의된 하나 이상의 예의 상세는 첨부 도면 및 이하의 설명에 기술된다. 다른 특징들, 목적들, 및 이점들은 설명 및 도면으로부터 그리고 청구범위로부터 명확해질 것이다.
도 1은 본 개시의 하나 이상의 기술에 따른, 저장 장치가 호스트 장치를 위한 저장 장치로 기능할 수 있는 예시적인 저장 환경을 도시한 개념적 및 개략적 블록도이다.
도 2는 본 개시의 하나 이상의 기술에 따른 예시적인 컨트롤러를 도시한 개념적 및 개략적 블록도이다.
도 3은 도 2의 예에 도시된 일반적인 자원 할당기 모듈을 보다 상세히 도시한 도면이다.
도 4는 도 2의 ECC 디코더를 보다 상세히 도시한 블록도이다.
도 5a 및 도 5b는 본 개시에 설명된 자원 할당 및 할당해제 기술을 수행 시에 저장 장치의 예시적인 동작을 도시한 흐름도이다.
도 6은 도 3의 온도계 데이터 구조를 보다 상세히 도시한 도면이다.
본 개시의 하나 이상의 기술에 따르면, (컨트롤러가 플래시 컨트롤러로 지칭될 수 있는, SSD와 같은) 장치의 컨트롤러는 고정된 순위(fixed succession)로 할당 및 할당해제가 용이하도록 자원을 할당하는 온도계형 데이터 구조를 사용하여 동적 자원 할당 및 할당해제를 수행할 수 있다. 자원 할당 및 할당해제의 랜덤 분포를 초래하는 데이터 구조 상의 기본 할당 및 할당해제 대신에, 온도계형 데이터 구조는 점진적으로 증가하는 자원 식별자들에 의해 식별되는 자원들의 고정된 순서를 유지할 수 있다. 이후, 할당 메커니즘은 상대적으로 더 높은 자원 식별자를 갖는 가용 자원의 할당 전에 최소 자원 식별자를 갖는 가용 자원을 할당하는 규칙에 따라 동작할 수 있다. 그 결과, 온도계 데이터 구조는 온도계 데이터 구조의 구성요소들에 의해 나타낸 자원들의 통계적 분석을 통해 빈번한 사용을 의미하는 이른바 "핫 스팟" 및 드문 사용을 의미하는 "콜드 스팟"을 노출시킬 수 있다. 이러한 핫 스팟 및 콜드 스팟을 식별함으로써, 컨트롤러는 임계값을 동적으로 정의할 수 있다. 즉, 플래시 컨트롤러는 시간의 경과에 따른 자원들의 사용량의 통계적 분석을 통해 임계값을 식별할 수 있다. 임계값은 파워온 상태로 남아있을 자원들과 파워오프될 수 있는 자원들을 분리하는 바운더리를 정의할 수 있다.
플래시 컨트롤러는 SSD 내에서 일어날 수 있는 다수의 상이한 시나리오들을 고려하기 위해 이러한 임계값을 설정하여 시간의 경과에 따라 임계값을 동적으로 업데이트할 수 있다. 예컨대, 플래시 컨트롤러는 피크 사용 중 메모리 자원들의 사용량 증가 동안 임계값을 증가시키고, 그로 인해 사용량이 더 많은 메모리 자원들을 요구할 때 성능을 증가시킬 수 있다. 플래시 컨트롤러는 또한 비피크 사용 중 메모리 자원들의 상대적으로 감소된 사용 동안 임계값을 감소시키고, 그로 인해 더 많은 자원들을 파워오프함으로써 동작 효율을 향상시킬 수 있다. 다른 예로, 플래시 컨트롤러는, 시간의 경과에 따라, 플래시 메모리가 마모됨에 따른 플래시 메모리의 불량 증가로 인해 ECC 디코더들의 사용량이 증가했다는 것을 주목할 수 있다. 플래시 컨트롤러는, ECC 디코더들의 이러한 사용량 증가의 검출에 응하여, 더 많은 ECC 디코더들을 파워온하기 위해 임계값을 동적으로 증가시킬 수 있다. 이런 점에서, 기술은 SSD의 초기 배치(deployment) 동안 향상된 동작 효율을 조장할 수 있고, SSD의 추후 배치 동안 동일한 성능을 유지하기 위해 임계값을 증가시킴으로써 동작 효율을 감소시킬 수 있다.
도 1은 본 개시의 하나 이상의 기술에 따른, 저장 장치(6)가 호스트 장치(4)를 위한 저장 장치로 기능할 수 있는 예시적인 저장 환경(2)을 도시한 개념적 및 개략적 블록도이다. 예컨대, 호스트 장치(4)는 저장 장치(6)에 포함되는 비휘발성 메모리 장치들을 사용하여 데이터를 저장하고 검색할 수 있다. 몇몇 예들에서, 저장 환경(2)은 저장 어레이로 동작할 수 있는, 저장 장치(6)와 같은, 복수의 저장 장치들을 포함할 수 있다. 예컨대, 저장 환경(2)은 집합적으로 호스트 장치(4)를 위한 대용량 저장 장치로 기능하는 저가격/독립 디스크들의 리던던트 어레이(RAID)로 구성되는 복수의 저장 장치들(6)을 포함할 수 있다.
저장 환경(2)은, 저장 장치(6)와 같은 하나 이상의 저장 장치로/로부터 데이터를 저장하고/저장하거나 검색할 수 있는 호스트 장치(4)를 포함할 수 있다. 도 1에 도시된 바와 같이, 호스트 장치(4)는 인터페이스(14)를 통해 저장 장치(6)와 통신할 수 있다. 호스트 장치(4)는 컴퓨터 서버, 네트워크-결합 저장(NAS) 유닛, 데스크톱 컴퓨터, 노트북(즉, 랩톱) 컴퓨터, 태블릿 컴퓨터, 셋탑 박스, 이른바 "스마트" 폰과 같은 전화 핸드셋, 이른바 "스마트" 패드, 텔레비전, 카메라, 디스플레이 장치, 디지털 미디어 플레이어, 비디오 게임 콘솔, 비디오 스트리밍 장치 등을 비롯한 다양한 장치들 중 임의의 하나를 포함할 수 있다.
도 1에 도시된 바와 같이, 저장 장치(6)는 컨트롤러(8), 비휘발성 메모리 어레이(10)(NVMA(10)), 전원(11), 휘발성 메모리(12), 및 인터페이스(14)를 포함할 수 있다. 몇몇 예들에서, 저장 장치(6)는 명료함을 위해 도 1에 도시되지 않은 추가 구성요소들을 포함할 수 있다. 예컨대, 저장 장치(6)는 저장 장치(6)의 구성요소들이 기계적으로 부착되는 인쇄 기판(PB)을 포함할 수 있고, 이는 저장 장치(6) 등의 구성요소들을 전기적으로 연결하는 전기전도성 트레이스들을 포함한다. 몇몇 예들에서, 저장 장치(6)의 물리적 치수 및 커넥터 구성은 하나 이상의 표준 폼 팩터에 부합될 수 있다. 몇몇 예시적인 표준 폼 팩터들은 3.5" 하드 디스크 드라이브(HDD), 2.5" HDD, 1.8" HDD, 주변 장치 연결(PCI), PCI-확장(PCI-X), PCI 익스프레스(PCIe)(예컨대, PCIe x1, x4, x8, x16, PCIe Mini Card, MiniPCI 등)를 포함하지만 이에 제한되지 않는다. 몇몇 예들에서, 저장 장치(6)는 호스트 장치(4)의 마더보드에 직접 결합될 수 있다(예컨대, 직접 납땜될 수 있다).
저장 장치(6)는 호스트 장치(4)와 인터페이싱하기 위한 인터페이스(14)를 포함할 수 있다. 인터페이스(14)는 호스트 장치(4)와 데이터를 교환하기 위한 데이터 버스 및 호스트 장치(4)와 커맨드를 교환하기 위한 제어 버스 중 하나 또는 둘 다를 포함할 수 있다. 인터페이스(14)는 임의의 적절한 프로토콜에 따라 동작할 수 있다. 예컨대, 인터페이스(14)는: 고급 기술 결합(ATA)(예컨대, 직렬-ATA(SATA) 및 병렬-ATA(PATA)), 섬유 채널, 소형 컴퓨터 시스템 인터페이스(SCSI), 직렬 연결 SCSI(SAS), 주변 장치 연결(PCI), 및 PCI-익스프레스 중 하나 이상의 프로토콜에 따라 동작할 수 있다. 인터페이스(14)의 전기적 연결(예컨대, 데이터 버스, 제어 버스, 또는 둘 다)은 컨트롤러(8)에 전기적으로 연결되어, 호스트 장치(4)와 컨트롤러(8) 사이에 전기적 연결을 제공하여, 데이터가 호스트 장치(4)와 컨트롤러(8) 사이에서 교환되는 것을 허용한다. 몇몇 예들에서, 인터페이스(14)의 전기적 연결은 또한 저장 장치(6)가 호스트 장치(4)로부터 전력을 수신하는 것을 허용할 수 있다. 도 1에 도시된 바와 같이, 전원(11)은 인터페이스(14)를 통해 호스트 장치(4)로부터 전력을 수신할 수 있다.
저장 장치(6)는, 각각 데이터를 저장하고/저장하거나 검색하도록 구성될 수 있는 복수의 메모리 장치들(16Aa 내지 16Nn)(집합적으로 "메모리 장치들(16)")을 포함할 수 있는 NVMA(10)를 포함할 수 있다. 예컨대, 메모리 장치들(16)의 메모리 장치는 컨트롤러(8)로부터 데이터 및 데이터를 저장하도록 메모리 장치에 지시하는 메시지를 수신할 수 있다. 마찬가지로, 메모리 장치들(16)의 메모리 장치는 컨트롤러(8)로부터 데이터를 검색하도록 메모리 장치에 지시하는 메시지를 수신할 수 있다. 몇몇 예들에서, 각각의 메모리 장치(16)는 다이(die)로 지칭될 수 있다. 몇몇 예들에서, 단일 물리적 칩은 복수의 다이들(즉, 복수의 메모리 장치들(16))을 포함할 수 있다. 몇몇 예들에서, 각각의 메모리 장치(16)는 상대적으로 대량의 데이터(예컨대, 128 MB, 256 MB, 512 MB, 1 GB, 2 GB, 4 GB, 8 GB, 16 GB, 32 GB, 64 GB, 128 GB, 256 GB, 512 GB, 1 TB 등)를 저장하도록 구성될 수 있다.
몇몇 예들에서, 메모리 장치들(16)은 임의의 유형의 비휘발성 메모리 장치들을 포함할 수 있다. 메모리 장치들(16)의 몇몇 예들은 플래시 메모리 장치, 상변화 메모리(PCM) 장치, 저항 랜덤 액세스 메모리(ReRAM) 장치, 자기저항 랜덤-액세스 메모리(MRAM) 장치, 강유전체 랜덤 액세스 메모리(F-RAM), 홀로그래픽 메모리 장치, 및 임의의 다른 유형의 비휘발성 메모리 장치를 포함하지만 이에 제한되지 않는다.
플래시 메모리 장치는 NAND 또는 NOR 기반 플래시 메모리 장치를 포함할 수 있고, 각각의 플래시 메모리 셀에 대해 트랜지스터의 플로팅 게이트에 수용되는 전하에 기초하여 데이터를 저장할 수 있다. NAND 플래시 메모리 장치에 있어서, 플래시 메모리 장치는 복수의 페이지들로 분할될 수 있는 복수의 블록들로 분할될 수 있다. 특정 메모리 장치 내의 복수의 블록들의 각각의 블록은 복수의 NAND 셀들을 포함할 수 있다. NAND 셀들의 행들은 복수의 페이지들의 페이지를 정의하기 위해 워드 라인을 사용하여 전기적으로 연결될 수 있다. 각각의 복수의 페이지들 내의 각각의 셀들은 각각의 비트 라인들에 전기적으로 연결될 수 있다. 컨트롤러(8)는 페이지 레벨에서 NAND 플래시 메모리 장치들로/로부터 데이터를 기입하며 판독하고, 블록 레벨에서 NAND 플래시 메모리 장치들로부터 데이터를 소거할 수 있다.
몇몇 예들에서, 컨트롤러(8)가 메모리 장치들(16)의 각각의 메모리 장치에 별도로 연결되는 것이 실용적이지 않을 수 있다. 이로써, 메모리 장치들(16)과 컨트롤러(8) 사이의 연결이 다중화될 수 있다. 일례로, 메모리 장치들(16)은 채널들(18A 내지 18N)(집합적으로, "채널들(18)")로 분류될 수 있다. 예컨대, 도 1에 도시된 바와 같이, 메모리 장치들(16Aa 내지 16Nn)은 제1 채널(18A)로 분류될 수 있고, 메모리 장치들(16Na 내지 16Nn)은 Nth 채널(18N)로 분류될 수 있다. 각각의 채널(18)로 분류된 메모리 장치들(16)은 컨트롤러(8)에 대한 하나 이상의 연결을 공유할 수 있다. 예컨대, 제1 채널(18A)로 분류된 메모리 장치들(16)은 공통 I/O 버스 및 공통 제어 버스에 연결될 수 있다. 저장 장치(6)는 채널들(18)의 각각의 채널에 대해 공통 I/O 버스 및 공통 제어 버스를 포함할 수 있다. 몇몇 예들에서, 채널들(18)의 각각의 채널은 각각의 채널 상에서 메모리 장치들을 다중화하는 데에 사용될 수 있는 일련의 칩 인에이블 라인들을 포함할 수 있다. 예컨대, 각각의 CE 라인은 메모리 장치들(16)의 각각의 메모리 장치에 연결될 수 있다. 이런 방식으로, 컨트롤러(8)와 메모리 장치들(16) 사이의 개별 연결수가 감소될 수 있다. 또한, 각각의 채널이 컨트롤러(8)에 대해 일련의 독립적인 연결들을 갖기 때문에, 컨트롤러(8)가 각각의 채널에 상이한 커맨드를 동시에 발행할 수 있을 때 연결의 감소는 데이터 처리 속도에 크게 영향을 미치지 않을 수 있다.
몇몇 예들에서, 저장 장치(6)는 호스트 장치(4)에 액세스 가능한 용량보다 더 큰 총 용량을 제공하도록 선택되는 다수의 메모리 장치들(16)을 포함할 수 있다. 이는 오버-프로비저닝(over-provisioning)으로 지칭된다. 예컨대, 저장 장치(6)가 240 GB의 사용자-액세스 가능 저장 용량을 포함하는 것으로 광고되는 경우, 저장 장치(6)는 256 GB의 총 저장 용량을 제공하기에 충분한 메모리 장치들(16)을 포함할 수 있다. 16 GB의 메모리 장치들(16)은 호스트 장치(4) 또는 호스트 장치(4)의 사용자에 액세스 가능하지 않을 수도 있다. 대신에, 추가 메모리 장치들(16)은 기입, 가비지 수집, 마모 레벨링 등을 용이하게 하기 위해 추가 블록들을 제공할 수 있다. 게다가, 추가 메모리 장치들(16)은 몇몇 블록들이 사용하지 못할 정도로 마모되어 사용으로부터 회수되는 경우에 사용될 수 있는 추가 블록들을 제공할 수 있다. 추가 블록들의 존재는 호스트 장치(4)에 사용 가능한 저장 용량의 변화를 야기함 없이 마모된 블록들의 회수를 허용할 수 있다. 몇몇 예들에서, 오버-프로비저닝의 양은 p=(T-D)/D로 정의될 수 있고, 여기서 p는 오버-프로비저닝 비율, T는 저장 장치(6)의 총 저장 용량, D는 호스트 장치(4)에 액세스 가능한 저장 장치(6)의 저장 용량이다.
저장 장치(6)는 저장 장치(6)의 하나 이상의 구성요소에 전력을 공급할 수 있는 전원(11)을 포함할 수 있다. 표준 모드로 동작할 때, 전원(11)은 호스트 장치(4)와 같은 외부 장치에 의해 공급되는 전력을 사용하여 하나 이상의 구성요소에 전력을 공급할 수 있다. 예컨대, 전원(11)은 인터페이스(14)를 통해 호스트 장치(4)로부터 수신되는 전력을 사용하여 하나 이상의 구성요소에 전력을 공급할 수 있다. 몇몇 예들에서, 전원(11)은 외부 장치로부터의 전력 수신이 중단된 경우와 같은 셧다운 모드로 동작할 때 하나 이상의 구성요소에 전력을 공급하도록 구성되는 하나 이상의 전력 저장 구성요소를 포함할 수 있다. 이런 방식으로, 전원(11)은 온보드 백업 전원으로 기능할 수 있다. 하나 이상의 전력 저장 구성요소의 몇몇 예들은 커패시터, 수퍼 커패시터, 배터리 등을 포함하지만 이에 제한되지 않는다. 몇몇 예들에서, 하나 이상의 전력 저장 구성요소에 의해 저장될 수 있는 전력량은 하나 이상의 전력 저장 구성요소의 비용 및/또는 크기(예컨대, 면적/체적)의 함수일 수 있다. 다시 말하면, 하나 이상의 전력 저장 구성요소에 의해 저장되는 전력량이 증가함에 따라, 하나 이상의 전력 저장 구성요소의 비용 및/또는 크기 역시 증가한다.
컨트롤러(8)는 판독 동작 및 기입 동작 중 하나 이상을 지원하기 위해 동적 자원 할당 및 할당해제의 일 형태를 수행할 수 있다. 도 2와 관련하여 보다 상세히 설명된 바와 같이, 컨트롤러(8)는 데이터 버퍼 액세스, 비휘발성 메모리(예컨대, 플래시 메모리)에 데이터를 저장할 때 오류 검사 및 수정(ECC) 인코딩, 비휘발성 메모리로부터 데이터를 검색할 때 플래시 채널 액세스, 및 비휘발성 메모리로부터 데이터를 검색할 때 ECC 디코딩을 지원하기 위해 자원을 할당하고 할당해제할 수 있다. 자원수가 ("요청자"로 지칭될 수 있는) 요청 유닛수보다 적은 경우, 컨트롤러(8)는 과도한 지연을 방지하도록 자원에 대한 합리적으로 균형 잡힌 액세스를 제공하기 위해 하나 이상의 중재 방식을 실시할 수 있다.
경우에 따라, 자원수는 (예컨대, 전력 소비의 관점에서) 저장 장치의 보다 효율적인 동작을 달성하기 위해 인위적으로 제한된다. 즉, 컨트롤러(8)는 저장 장치를 동작시키는 것과 연관되는 전력 소비 및 해당 비용을 감소시키기 위해 가용 자원들의 일부를 파워오프할 수 있다. 특정 맥락에서 자원수를 인위적으로 제한 시에, 컨트롤러(8)는 성능과 동작 효율의 균형을 이루려 시도할 수 있다. 예컨대, 컨트롤러(8)는 자원 수요가 높을 때 성능을 향상시키기 위해 초기에 파워오프된 자원들을 동적으로 파워온하며, 자원 수요가 낮을 때 동작 효율을 향상시키기 위해 동일한 자원들을 동적으로 파워오프할 수 있다.
그러므로, 동적 자원 할당 및 할당해제는 다양한 자원들이 필요할 때 파워온되며 필요하지 않을 때 파워오프되는 것을 허용할 수 있다. 그러나, 이러한 전력-절감 자원 할당/할당해제를 용이하게 하기 위해 개발된 알고리즘은 할당/할당해제 데이터 구조의 한계로 인해 문제가 있을 수 있다. 예시를 위해, 할당 알고리즘은 큐(queue)와 같은 선입선출 데이터 구조를 사용할 수 있다. 이러한 할당 방식에서, 자원에는 각각 자원 식별자가 배정된다. 이러한 할당 방식의 중재기는 각각의 자원 식별자를 큐로 푸시할 수 있되, 일례로 최소 자원 식별자는 가장 먼저 할당될(또는 큐의 관점에서는 큐로부터 "팝핑될(popped)") 식별자이다. 중재기는 큐로부터 팝핑되는 자원 식별자와 연관되는 자원을 할당할 수 있다. 자원 식별자를 팝핑하는 것은 이러한 자원이 2개 이상의 요청자들에 할당되는 것을 효과적으로 방지한다.
그러나, 요청자당 자원 사용 시간은 다를 수 있는데, 중재기가 자원 식별자를 다시 큐로 랜덤 반환할 수 있음을 의미한다. 이러한 비고정 자원 할당 시간의 결과로, 자원 식별자들은 곧 큐 내에 랜덤 분포된다. 자원 식별자들의 이러한 랜덤 분포는 임의의 주어진 시간 프레임당 요구되는 자원수를 식별하는 능력을 감소시키고, 그로 인해 동작 효율과 성능의 균형을 이루기 위한 자원들의 동적 파워링(powering)을 방해할 수 있다. 자원 할당/할당해제를 위해 후입선출(LIFO) 데이터 구조를 사용하는 할당 방식은 마찬가지로 자원 식별자들의 랜덤 분포를 초래할 수 있다. 할당 방식의 이러한 한계를 극복하기 위해, 컨트롤러는 적절하게 동작 효율의 균형을 이루는 한편 적절한 성능을 또한 제공할 수 있는 동적 자원 할당/할당해제를 용이하게 하기 위해 복잡한 하드웨어 또는 (중앙 처리 장치 또는 CPU와 같은) 범용 프로세서를 포함할 수 있다. 그러나, 이러한 전용 하드웨어 또는 용도변경 CPU는 상당한 전력을 소비하여, 동적 할당/할당해제 알고리즘을 통해 제공되는 전력 절감의 전부는 아니라 해도 많은 부분을 상쇄할 수 있다.
본 개시의 하나 이상의 기술에 따르면, 저장 장치(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), 판독 모듈(18), 스케줄링 모듈(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)은 어드레스 변환 모듈(22)과 통신할 수 있고, 이는 메모리 장치들로의 데이터의 기입을 지시하기 위해 기입 모듈(24)에 의해 사용되는 물리적 블록 어드레스들과, 데이터의 저장 위치들을 관리하기 위해 호스트 장치(4)에 의해 사용되는 논리 어드레스들 사이의 변환을 관리한다. 컨트롤러(8)의 어드레스 변환 모듈(22)은 메모리 장치들(16)에 의해 저장되는 데이터의 논리 어드레스들(또는 논리적 블록 어드레스들)을 메모리 장치들(16)에 의해 저장되는 물리적 블록 어드레스들로 변환하는 플래시 변환 층 또는 테이블을 사용할 수 있다. 예컨대, 호스트 장치(4)는 저장 장치(6)로의 명령 또는 메시지에서 메모리 장치들(16)에 의해 저장되는 데이터의 논리적 블록 어드레스들을 사용할 수 있는 반면, 기입 모듈(24)은 메모리 장치들(16)로의 데이터의 기입을 제어하기 위해 데이터의 물리적 블록 어드레스들을 사용한다. (마찬가지로, 판독 모듈(28)은 메모리 장치들(16)로부터의 데이터의 판독을 제어하기 위해 물리적 블록 어드레스들을 사용할 수 있다.) 물리적 블록 어드레스들은 메모리 장치들(16)의 실제 물리적 블록들에 대응한다. 몇몇 예들에서, 어드레스 변환 모듈(22)은 캐시 정보(13) 내에서와 같이 휘발성 메모리(12)에 플래시 변환 층 또는 테이블을 저장할 수 있다.
이런 방식으로, 호스트 장치(4)는 일련의 특정 데이터에 대해 정적 논리적 블록 어드레스를 사용하도록 허용될 수 있는 반면, 데이터가 실제로 저장되는 물리적 블록 어드레스는 변화될 수 있다. 어드레스 변환 모듈(22)은 데이터의 물리적 블록 어드레스가 예컨대 마모 레벨링, 가비지 수집 등으로 인해 변화될 수 있는 동안 호스트 장치(4)에 의한 정적 논리적 블록 어드레스의 사용을 허용하도록 논리적 블록 어드레스들을 물리적 블록 어드레스들에 맵핑하기 위해 플래시 변환 층 또는 테이블을 유지할 수 있다.
앞서 논의된 바와 같이, 컨트롤러(8)의 기입 모듈(24)은 메모리 장치들(16)로의 데이터의 기입을 관리하기 위해 하나 이상의 동작을 수행할 수 있다. 예컨대, 기입 모듈(24)은 데이터를 저장하기 위해 메모리 장치들(16) 내의 하나 이상의 블록을 선택하며, 선택된 블록들을 포함하는 메모리 장치들(16)의 메모리 장치들이 실제로 데이터를 저장하게 함으로써, 메모리 장치들(16)로의 데이터의 기입을 관리할 수 있다. 앞서 논의된 바와 같이, 기입 모듈(24)은 어드레스 변환 모듈(22)이 선택된 블록들에 기초하여 플래시 변환 층 또는 테이블을 업데이트하게 할 수 있다. 예컨대, 기입 모듈(24)은 호스트 장치(4)로부터 논리적 블록 어드레스 및 데이터 유닛을 포함하는 메시지를 수신하며, 데이터를 저장하기 위해 메모리 장치들(16)의 특정 메모리 장치 내의 블록을 선택하고, 메모리 장치들(16)의 특정 메모리 장치가 (예컨대, 특정 메모리 장치에 대응하는 채널 컨트롤러들(32)의 하나의 채널 컨트롤러를 통해) 실제로 데이터를 저장하게 하며, 논리적 블록 어드레스가 특정 메모리 장치 내의 선택된 블록에 대응한다는 것을 나타내기 위해, 어드레스 변환 모듈(22)이 플래시 변환 층 또는 테이블을 업데이트하게 할 수 있다.
몇몇 예들에서, 호스트 장치(4)로부터 데이터 유닛을 수신한 후에, 기입 모듈(24)은 하나 이상의 메모리 장치(16)가 실제로 데이터를 저장하게 하기 전에 휘발성 메모리(12)를 사용하여 데이터 유닛을 일시적으로 저장할 수 있다. 몇몇 예들에서, 기입 모듈(24)은 데이터가 성공적으로 저장되었는지 나타내는 메시지를 호스트 장치(4)에 송신하도록 구성될 수 있다. 그러나, 몇몇 예들에서, 기입 모듈(24)은 데이터가 실제로 저장되기 전에 데이터의 성공적인 저장을 확인하는 메시지를 호스트 장치(4)에 송신할 수 있다. 예컨대, 기입 모듈(24)은 데이터가 휘발성 메모리(12)에 저장될 때 데이터의 성공적인 저장을 확인하는 메시지를 호스트 장치(4)에 송신할 수 있다.
몇몇 예들에서, 메모리 장치들(16)이 데이터를 저장하게 하는 것 외에도, 기입 모듈(24)은 메모리 장치들(16)로 하여금 하나 이상의 블록이 불량 또는 손상된 경우 데이터 유닛을 복구하는 데에 사용될 수 있는 정보를 저장하게 할 수 있다. 패리티 정보는 다른 블록들에 의해 저장되는 데이터를 복구하는 데에 사용될 수 있다. 몇몇 예들에서, 패리티 정보는 다른 블록들에 의해 저장되는 데이터의 XOR일 수 있다.
0의 논리값을 갖는 비트(충전)를 1의 사전 논리값을 갖는 비트(비충전)에 기입하기 위해, 큰 전류가 사용된다. 이러한 전류는 인접한 플래시 메모리 셀들의 충전에 우발적인 변화를 야기할 수 있을 정도로 충분히 클 수 있다. 우발적인 변화를 방지하기 위해, 플래시 메모리 셀들의 전체 블록은 블록 내의 셀들에 임의의 데이터를 기입하기 전에 1의 논리값(비충전)으로 소거될 수 있다. 이 때문에, 플래시 메모리 셀들은 블록 레벨에서 소거되며 페이지 레벨에서 기입될 수 있다.
따라서, 심지어 일 페이지 미만을 소비하는 데이터량을 기입하기 위해, 컨트롤러(8)는 전체 블록이 소거되게 할 수도 있다. 이는 메모리 장치들(16)에 기입될 호스트 장치(4)로부터 수신되는 데이터량과 메모리 장치들(16)에 실제로 기입된 데이터량 사이의 비율을 지칭하는 기입 증폭으로 이어질 수 있다. 기입 증폭은 기입 증폭이 없을 때 일어나는 것보다 플래시 메모리 셀들의 마모를 더 빠르게 하는 데에 기여한다. 플래시 메모리 셀들의 마모는 플래시 메모리 셀들이 소거될 때 플래시 메모리 셀들을 소거하는 데에 사용되는 상대적으로 높은 전압으로 인해 일어날 수 있다. 복수의 소거 주기들에 걸쳐, 상대적으로 높은 전압은 플래시 메모리 셀들의 변화를 초래할 수 있다. 결국, 플래시 메모리 셀들은 이러한 마모로 인해 사용 불가능하게 될 수 있고, 여기서 플래시 메모리 셀들은 데이터 검색을 허용할 정도로 충분한 정확도로 데이터를 저장하지 못할 수 있다.
컨트롤러(8)가 기입 증폭 및 플래시 메모리 셀들의 마모를 감소시키기 위해 실시할 수 있는 하나의 기술은 호스트 장치(4)로부터 수신되는 데이터를 미사용 블록들 또는 부분적으로 사용된 블록들에 기입하는 것을 포함한다. 예컨대, 호스트 장치(4)가 저장 장치(6)에 의해 이미 저장된 데이터로부터의 작은 변화만을 포함하는 데이터를 저장 장치(6)에 송신하는 경우, 컨트롤러는 오래된 데이터를 스테일 또는 무효 데이터로 표시할 수 있다. 시간의 경과에 따라, 이는, 오래된 데이터를 유지하는 블록을 소거하여 동일한 블록에 업데이트된 데이터를 기입하는 것에 비해, 블록들이 노출되는 소거 동작수를 감소시킬 수 있다.
호스트 장치(4)로부터의 기입 커맨드의 수신에 응하여, 기입 모듈(24)은 메모리 장치들(16)의 어떤 물리적 위치들(예컨대, 블록들)에 데이터를 기입할지 판단할 수 있다. 예컨대, 기입 모듈(24)은 어드레스 변환 모듈(22) 또는 유지 모듈(26)로부터, 비어있거나(예컨대, 데이터를 저장하지 않음), 부분적으로 비어있거나(예컨대, 블록의 일부 페이지들만이 데이터를 저장함), 또는 적어도 일부 무효(또는 스테일) 데이터를 저장하는 하나 이상의 물리적 블록 어드레스를 요청할 수 있다. 하나 이상의 물리적 블록 어드레스를 수신 시에, 기입 모듈(24)은 앞서 논의된 바와 같이 하나 이상의 블록을 선택하며, 채널 컨트롤러들(32A 내지 32N)(집합적으로, "채널 컨트롤러들(32)")이 선택된 블록들에 데이터를 기입하게 하는 메시지를 전달할 수 있다.
판독 모듈(28)은 마찬가지로 메모리 장치들(16)로부터의 데이터의 판독을 제어할 수 있다. 예컨대, 판독 모듈(28)은 연관된 논리적 블록 어드레스를 갖는 데이터를 요청하는 메시지를 호스트 장치(4)로부터 수신할 수 있다. 어드레스 변환 모듈(22)은 플래시 변환 층 또는 테이블을 사용하여 논리적 블록 어드레스를 물리적 블록 어드레스로 변환할 수 있다. 이후, 판독 모듈(28)은 물리적 블록 어드레스들로부터 데이터를 검색하기 위해 하나 이상의 컨트롤러(32)를 제어할 수 있다. 기입 모듈(24)과 마찬가지로, 판독 모듈(28)은 하나 이상의 블록을 선택하며, 채널 컨트롤러들(32)이 선택된 블록들로부터 데이터를 판독하게 하는 메시지를 전달할 수 있다.
채널 컨트롤러들(32)의 각각의 채널 컨트롤러는 채널들(18)의 각각의 채널에 연결될 수 있다. 몇몇 예들에서, 컨트롤러(8)는 저장 장치(6)의 채널들(18)의 수와 동일한 수의 채널 컨트롤러들(32)을 포함할 수 있다. 채널 컨트롤러들(32)은 예컨대 기입 모듈(24), 판독 모듈(28), 및/또는 유지 모듈(26)의 제어 하에 각각의 채널들에 연결되는 메모리 장치들(16)의 어드레싱, 프로그래밍, 소거, 및 판독의 긴밀한 제어를 수행할 수 있다.
유지 모듈(26)은 저장 장치(6)(예컨대, 메모리 장치들(16))의 유효 수명의 연장 및 성능의 유지에 관한 동작을 수행하도록 구성될 수 있다. 예컨대, 유지 모듈(26)은 마모 레벨링 또는 가비지 수집 중 적어도 하나를 실시할 수 있다.
전술한 바와 같이, 플래시 메모리 셀들을 소거하는 것은 상대적으로 높은 전압을 사용할 수 있고, 이는 복수의 소거 동작들에 걸쳐 플래시 메모리 셀들에 변화를 야기할 수 있다. 특정 수의 소거 동작 후에, 플래시 메모리 셀들은 데이터가 플래시 메모리 셀들에 기입될 수 없을 정도로 저하될 수 있고, 이 셀들을 포함하는 블록은 회수될 수 있다(데이터 저장을 위해 컨트롤러(8)에 의해 더 이상 사용되지 않을 수 있다). 블록들이 마모되어 회수되기 전에 메모리 장치들(16)에 기입될 수 있는 데이터량을 증가시키기 위해, 유지 모듈(26)은 마모 레벨링을 실시할 수 있다.
마모 레벨링에서, 유지 모듈(26)은 각각의 블록 또는 블록 그룹에 대해, 블록 또는 블록 그룹으로의 소거수 또는 기입수를 추적할 수 있다. 각각의 블록 또는 블록 그룹에 대한 기입수 또는 소거수를 대략 동일하게 유지하기 위해, 유지 모듈(26)은 호스트 장치(4)로부터의 유입 데이터로 하여금 비교적 더 적은 기입 또는 소거를 경험한 블록 또는 블록 그룹에 기입되게 할 수 있다. 이는 메모리 장치들(16)의 각각의 블록이 대략 동일한 속도로 마모되게 할 수 있고, 저장 장치(6)의 유효 수명을 증가시킬 수 있다.
이는 소거수를 감소시키며 상이한 블록들에 데이터를 기입함으로써 플래시 메모리 셀들의 마모 및 기입 증폭을 감소시킬 수 있지만, 이는 또한 블록들이 일부 유효(프레시) 데이터 및 일부 무효(스테일) 데이터를 포함하는 것으로 이어질 수 있다. 이러한 프레시 데이터/스테일 데이터 상태를 극복하기 위해, 유지 모듈(26)은 가비지 수집을 실시할 수 있다. 가비지 수집 동작에 있어서, 유지 모듈(26)은 높은 비율의 무효(스테일) 데이터를 포함하는 블록을 판단하기 위해 메모리 장치들(16)의 블록들의 컨텐츠를 분석할 수 있다. 이후, 유지 모듈(26)은 이 블록으로부터 상이한 블록으로 유효 데이터를 재기입한 후, 이 블록을 소거할 수 있다. 이는 메모리 장치들(16)에 의해 저장되는 무효(스테일) 데이터량을 감소시키며 프리 블록수를 증가시킬 수 있지만, 메모리 장치들(16)의 마모 및 기입 증폭을 증가시킬 수도 있다.
컨트롤러(8)의 스케줄링 모듈(30)은 메모리 장치들(16)에 의해 수행될 활동들을 스케줄링하기 위해 하나 이상의 동작을 수행할 수 있다. 예컨대, 스케줄링 모듈(30)은 런타임 동안 하나 이상의 활동을 수행하도록 하나 이상의 메모리 장치(16)에 지시하기 위해 컨트롤러(8)의 다른 구성요소들로부터 수신되는 요청들을 스케줄링할 수 있다. 몇몇 예들에서, 스케줄링 모듈(30)은 요청들이 수신된 순서(예컨대, 선입선출 또는 FIFO)로 수행되도록 요청들을 스케줄링할 수 있다. 몇몇 예들에서, 스케줄링 모듈(30)은 요청 유형(예컨대, 판독 요청, 기입 요청, 소거 요청, 가비지 수집 요청 등), 요청이 수신된 후 경과된 시간량, 요청의 수행에 의해 소비될 전력량, 대역폭 고려 등을 포함할 수 있지만 이에 제한되지 않는 하나 이상의 인자에 기초하여 요청들을 스케줄링할 수 있다.
몇몇 예들에서, 예컨대 전력 소비 예산에 부합되기 위해, 스케줄링 모듈(30)은 수행이 스로틀되도록(throttled) 수행될 활동들을 스케줄링할 수 있다. 예컨대, 모든 메모리 장치들(16)이 동시에 활성인 경우 소비될 전력량보다 더 적은 전력량을 전력 소비 예산이 메모리 장치들(16)에 할당하는 경우, 스케줄링 모듈(30)은 메모리 장치들(16)에 의해 소비되는 전력량이 메모리 장치들(16)에 할당되는 전력량을 초과하지 않도록 수행될 활동들을 스케줄링할 수 있다.
일례로, 저장 장치(6)가 25 W의 전력 소비 목표를 갖는 경우, 전력 소비 예산은 메모리 장치들(16)에 의해 사용하기 위한 전력 소비 목표의 일부를(예컨대, 16 W) 할당할 수 있다. 모든 메모리 장치들(16)이 동시에 활성인 경우 소비될 전력량이 전력 소비 목표의 할당된 부분(예컨대, 16 W)보다 더 큰 경우, 스케줄링 모듈(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)과 같은, 이른바 요청자들에 의해 요청될 수 있는 앞서 주목한 자원들 중 하나를 나타낼 수 있다.
게다가, 예시의 용이함을 위해 단지 채널 컨트롤러(32A)와 관련하여 도시되었지만, 각각의 채널 컨트롤러(32)는 채널 컨트롤러(32A)와 관련하여 도시된 것과 마찬가지로 ECC 인코더(36), 판독 버퍼(38), 및 ECC 디코더(40)의 형태로 다수의 예시적인 자원들을 포함할 수 있다. ECC 인코더들(36)은 비휘발성 메모리 영역(10)에 기입되기 위해 대기하는 데이터에 ECC 인코딩을 수행하도록 구성되는 유닛 또는 모듈을 나타낼 수 있다. 판독 버퍼들(38)은 비휘발성 메모리 영역(10)으로부터 판독되는 데이터를 저장하도록 구성되는 유닛 또는 모듈을 나타낼 수 있다. 판독 버퍼들(38)은 판독된 코드워드를 저장하도록 구성될 수 있다. ECC 디코더들(40)은 판독 버퍼들(38)에 저장되는 데이터와 관련하여 ECC 디코딩을 수행하도록 구성되는 유닛 또는 모듈을 나타낼 수 있다.
본 개시의 하나 이상의 기술에 따르면, 채널 컨트롤러(32A)는, 일례로 이하에 보다 상세히 설명되는 방식으로 고정된 순위로 자원의 할당 및 할당해제를 허용하는 온도계 데이터 구조를 적어도 부분적으로 사용하여, ECC 인코더(36), 판독 버퍼(38), 및 ECC 디코더(40) 중 하나 이상의 할당 및 할당해제를 수행하는 자원 할당기 모듈(42)을 포함할 수 있다. 단일 자원 할당기 모듈(42)을 포함하는 것으로 도시되었지만, 채널 컨트롤러(32A)는 다수의 상이한 자원 할당기 모듈(42)을 포함할 수 있고, 이들 각각은 별개의 자원(36 내지 40)을 할당하는 것을 책임질 수 있다. 예시의 용이함을 위해 도 2의 예에 도시되지 않았지만, 각각의 채널 컨트롤러(32) 또는 경우에 따라 하나 이상의 채널 컨트롤러(32)는 채널 컨트롤러(32A)의 자원 할당기 모듈(42)과 마찬가지로 하나 이상의 자원 할당기 모듈(42)을 포함할 수 있다. 아울러, 컨트롤러(8)는, 다시 예시의 용이함을 위해 도 2의 예에 도시되지 않았지만, 동작 효율과 성능의 균형을 이루도록 버퍼들(34)을 할당/할당해제하기 위해 본 개시에 설명된 기술을 수행할 수 있는, 채널 컨트롤러(32)와는 별개의 모듈로, 다른 자원 할당기 모듈(42)을 포함할 수 있다.
어쨌든, 자원 할당기 모듈(42)은 임계값을 판단하도록 앞서 식별된 자원들(34 내지 40) 중 하나 이상의 사용을 식별하기 위해 온도계 데이터 구조를 분석할 수 있다. 이러한 임계값은 사전 통계 분석 또는 다른 기준에 기초하여 컨트롤러(8) 내에 초기에 미리 정의되며 구성될 수 있다. 자원 할당기 모듈(42)은, 앞서 주목한 바와 같이, 초기에 파워온될 시에, 하나 이상의 자원(34 내지 40)의 제1 비제로 부분집합만을 파워온하며, 시간의 경과에 따라 이 자원들의 사용량을 판단하고, 이러한 사용량을 임계값과 비교할 수 있다. 이후, 자원 할당기 모듈(42)은 이러한 비교에 기초하여 하나 이상의 자원(34 내지 40)의 제2 비제로 부분집합을 파워온하되, 이러한 제2 비제로 부분집합은 해당 자원들(34 내지 40)의 제1 비제로 부분집합의 자원들(34 내지 40) 중 임의의 하나를 포함하지 않을 수 있다.
도 3은 도 2의 예에 도시된 일반적인 자원 할당기 모듈(42)을 보다 상세히 도시한 도면이다. 도 3의 예에 도시된 바와 같이, 자원 할당기 모듈(42)은 ("자원 중재기(50)"로도 지칭될 수 있는) 중재기 모듈(50) 및 ("자원 할당기(52)"로도 지칭될 수 있는) 할당기 및 전력 제어 모듈(52)을 포함할 수 있다. 자원 할당기 모듈(42)은 전술한 자원들(예컨대, 버퍼(34), ECC 인코더(36), 판독 버퍼(38), 및 ECC 디코더(40)) 중 임의의 하나 이상의 자원, 및 일반적으로 저장 장치 또는 컴퓨터 장치에서 흔한 임의의 다른 자원을 나타낼 수 있는 자원들(54A 내지 54M)("자원들(54)")과 인터페이싱할 수 있다.
자원 할당기 모듈(42)은 또한 본 개시에 설명된 기술에 따른 전력 제어를 용이하게 하기 위해 자원들(54)의 상이한 비제로 부분집합들의 자원들(54)을 할당하는 한편 자원들(54)에 대한 액세스를 중재하기 위해 요청자들(56A 내지 56N)("요청자들(56)")과 인터페이싱할 수 있다. 자원들(54)은 (중앙 처리 장치 또는 CPU와 같은) 범용 프로세서, 전용 프로세서, 전용 하드웨어, 상이한 코어, 또는 임의의 다른 유형의 소프트웨어 또는 하드웨어 요청자에 의해 실행되는 상이한 소프트웨어 스레드를 나타낼 수 있다.
일반적으로, 본 개시의 기술은 요청자들(56)의 수가 자원들(54)의 수를 초과할 때(예컨대, N이 M보다 더 큰 경우) 자원들(54)에 대한 액세스를 용이하게 할 수 있다. 이 경우, 자원 할당기 모듈(42)은 몇몇 인터페이스들을 제공할 수 있다:
1) 일련의 M 자원들 중 하나에 연결되도록 설계되는 일련의 N 상충 요청 포트들(여기서, M < N);
2) 자원의 각각의 인스턴스에 연결되는 일련의 전력 제어 출력들;
3) 연관된 자원의 현재 전력 상태를 나타내는, 자원들로부터 장치로의 일련의 전력 상태 지시계 입력들; 및
4) CPU 메모리 또는 입출력(IO) 기반 인터페이스.
중재기 모듈(50)은 중재 방식을 수행하도록 구성되는 유닛을 나타낼 수 있다. 예시적인 중재 방식은 라운드 로빈 중재 방식이다. 라운드 로빈 중재 방식에 있어서, 하나의 자원(54)에 대한 액세스가 최종으로 승인된 하나의 요청자(56)는 다음 승인을 받는 관점에서 요청자들(56) 가운데 가장 낮은 상대 우선순위를 갖는다. 그렇지 않으면, 번호순으로 다음 요청자(56)가 다음 승인을 받는다. 즉, 각각의 요청자(56)에는, 요청자들(56) 가운데 번호순을 정의할 수 있는 요청자 식별자(ID)가 배정된다. 자원 ID가 또한 각각의 자원(54)에 배정될 수 있다. 몇몇 예들에서, 자원(54)의 능력에 따라 다수의 자원 ID들이 각각의 자원(54)에 배정될 수 있다. 다수의 자원 ID들이 단일 자원(54)에 배정될 수 있는 경우, 자원 ID들은 "자원 요소 ID들" 또는 "할당 ID들"로 지칭될 수 있다. 단일 자원 ID가 단일 자원(54)에 배정되는 경우에도, 자원 ID들은 "자원 요소 ID들" 또는 "할당 ID들"로 지칭될 수 있다. 이로써, 이러한 용어들의 사용은 서로 대체 가능할 수 있고, 다수의 자원 ID들이 하나 이상의 자원(54)에 배정되었는지 여부를 반드시 나타내지는 않는다.
중재기 모듈(50)에 의해 실시되는 라운드 로빈 중재 방식은 중재기 모듈(50)이 요청자 ID를 각각의 요청자(56)에 배정하며 하나 이상의 자원 ID를 각각의 자원(54)에 배정하는 결과를 초래할 수 있다. 이후, 중재기 모듈(50)은 증가하는 번호순으로 각각의 요청과 연관되는 요청자 ID의 번호순으로 자원들(54)에 대한 액세스를 위한 미결 요청들을 통해 순환할 수 있다. 중재기 모듈(50)은 동일한 하나의 요청자(56)로부터의 특정 요청이 최종으로 요청 승인되었는지에 따라 일부 요청들을 디모션하여(demote), 요청자들(56)에 걸쳐 자원들(54)에 대한 액세스의 균형을 이루기 위해 가장 최근에 서비스된 요청자들(56)로부터의 요청을 효과적으로 디모션할 수 있다. 요청자들(56)로부터의 요청들은 화살표로 표시되며, "요청들(58A 내지 58N)" 또는 집합적으로 "요청들(58)"로 지칭될 수 있다.
도 3의 예에서, 할당기 및 전력 제어 모듈(52)은 할당기 모듈(60) 및 전력 제어 모듈(62)을 포함한다. 요청자들(56)로부터의 요청들(58) 사이에서 중재 시에, 할당기 모듈(60)은 요청들(58)의 승인을 용이하게 하기 위해 중재기 모듈(50)과 통신하거나 데이터를 공유할 수 있다. 예컨대, 할당기 모듈(60)이 중재기 모듈(50)에 모든 자원들(54)이 할당된다는 것을 나타낼 때, 중재기 모듈(50)은 하나의 미결 요청(58)을 승인하지 않을 수도 있다. 다른 예로, 할당기 모듈(60)이 중재기 모듈(50)에 (파워온된 자원들(54)의 비제로 부분집합을 지칭할 수 있는) 모든 가용 자원들이 할당된다는 것을 나타낼 때, 중재기 모듈(50)은 하나의 미결 요청(58)을 승인하지 않을 수도 있다. 또 다른 예로, 할당기 모듈(60)이 중재기 모듈(50)에 모든 자원들(54)이 파워오프된다는 것을 나타낼 때, 중재기 모듈(50)은 하나의 미결 요청(58)을 승인하지 않을 수도 있다. 몇몇 예들에서, 하나 이상의 자원(54)은 외부 CPU 또는 다른 제어 장치에 의한 승인을 위해 인에이블될 수 있다(몇몇 예들에서, 이는 레지스터 인터페이스를 통해 일어날 수 있다). 할당기 모듈(60)은 마찬가지로 CPU 또는 다른 제어 장치가 승인을 위해 이러한 자원들(54)을 인에이블할 시에 이러한 제어된 자원들(54)이 할당되도록 사용 가능하다는 것을 중재기 모듈(50)에만 전달할 수 있다.
초기에, 저장 장치(6)가 먼저 파워온될 때, 저장 장치(6)는 자원들(54)의 전부는 아니더라도 일부가 파워다운되는(또는 파워업되지 않는) 저전력 상태로 동작할 수 있다. 요청자들(56)은 하나 이상의 요청(58)을 발행하기 시작할 수 있고, 이후 CPU 또는 다른 제어 로직은 할당기 모듈(60)이 자원들(54)의 소정의 비제로 부분집합을 파워온하기 위해 전력 제어 모듈(62)과 인터페이싱하게 할 수 있다. 즉, 할당기 모듈(60)은 나머지 자원들(54)을 파워온함 없이 자원들(54)의 이러한 비제로 부분집합만을 파워온하기 위해 전력 제어 모듈(62)과 인터페이싱할 수 있다. 자원들(54)의 이러한 비제로 부분집합은 또한 자원들(54)의 일부 또는 자원들(54)의 뱅크로 지칭될 수 있다. 아울러, 자원들(54)의 이러한 비제로 부분집합은 1개, 2개, 또는 그 이상의 자원들(54)을 포함할 수 있지만, 전체 자원들(54)을 포함할 수는 없다.
자원들(54)의 이러한 비제로 부분집합의 파워업에 응하여, 할당기 모듈(60)은 다음으로 온도계 데이터 구조(61)("온도(temp) 데이터 구조(61)")를 초기화하여, 순차적 순서로 증가하는 자원 ID들을 자원들(54)의 파워온된 비제로 부분집합에 배정하며, 자원들(54)의 파워온된 비제로 부분집합의 특정 자원들에 대한 자원 ID들의 배정을 반영하기 위해 온도계 데이터 구조(61)를 업데이트할 수 있다. 이러한 온도계 데이터 구조(61)는 자원들(54)의 파워온된 비제로 부분집합의 각각의 자원을 위한 노드를 포함할 수 있되, 각각의 노드는 점진적으로 및 아마도 단조적으로 증가하는 자원 ID들 중 하나, 및 자원들의 비제로 부분집합의 해당 자원이 사용 가능한지 또는 사용 중인지에 대한 표시를 저장한다. 이후, 할당기 모듈(60)은 하나 이상의 요청(58)을 승인 시에 사용하기 위해 중재기 모듈(50)에 자원 ID들을 전달할 수 있다. 도 3의 예에 도시된 바와 같이, 할당기 모듈(60)은 중재기 모듈(50)에 온도계 데이터 구조(61)를 제공함으로써 자원 ID들을 전달할 수 있다. 각각이 온도계 데이터 구조(61)의 카피를 갖는 것으로 도시되었지만, 중재기 모듈(50) 및 할당기 모듈(60)은 각각 동일한 온도계 데이터 구조(61)에 액세스할 수 있고, 이는 중재기 모듈(50)과 할당기 모듈(60) 모두에 의해 액세스 가능한 단일 위치에 저장될 수 있다.
이후, 중재기 모듈(50)은 중재 방식에 따라 요청들(58)을 승인하도록 진행되어, 자원 ID들에 의해 식별되는 자원들(54)에 대한 액세스를 요청자들(56)에 제공할 수 있다. 중재기 모듈(50)은 자원들의 비제로 부분집합의 자원들이 하나의 요청자(56)에 의한 사용과 같이 할당되는 것을 나타내기 위해 온도계 데이터 구조(61)를 업데이트할 수 있다. 시간이 진행됨에 따라, 요청자들(56)은 증가된 수의 요청들(58)을 발행할 수 있고, 이는 요청자들(56)이 하나의 자원(54)에 대한 액세스가 승인되기 전에 평균적으로 더 긴 시간량을 대기하는 결과를 초래할 수 있다. 할당기 모듈(60)은 (예컨대, 하나의 요청(58)의 발행에서 하나의 요청(58)의 승인까지의 평균 시간량의 관점에서) 이러한 지연을 식별하며, 이러한 지연을, 지연을 감소시키기 위해 요구될 예상 자원수로 변환할 수 있다. 이러한 예상 자원수는, 이러한 자원들이 요구될 것으로 예상되기 전에 이러한 자원들을 파워온하기 위해 변환이 과거 사용량에 기초하여 사용량을 예측하려 시도할 수 있다는 점에서, 사실상 예측적일 수 있다. 이러한 사용량의 예측은 할당기 모듈(60)이 자원들(54)을 파워온하기 위해 전력 모듈(62)과 인터페이싱하게 할 수 있고, 그에 따라 (예측 사용량 정보가 아닌) 실제 사용량 정보가 이러한 추가 자원들(54)의 수요가 있음을 나타날 때 이러한 자원들(54)은 사용 가능하다.
온도계 데이터 구조(61)를 초기화할 때, 할당기 모듈(60)은 파워온될 자원들(54)의 비제로 부분집합을 파워온되지 않을 나머지 자원들(54)로부터 분리하는 임계값을 판단할 수 있다. 이러한 임계값은 CPU 또는 다른 제어 로직에 의해 정의되거나, 할당기 모듈(60) 내에 사전-프로그램되거나 사전-구성되거나, 저장 장치(6)의 사전 동작을 통해(컴퓨터 학습 알고리즘을 통해) 학습되거나, 이들의 소정의 조합을 통해 얻어질 수 있다. 본 개시에서는 단일 임계값과 관련하여 설명되었지만, 기술은 다수의 임계값들로 확장될 수 있고, 이들 각각은 파워온 및 파워오프 비제로 자원 부분집합들 사이의 다른 분리점을 한정한다.
어쨌든, 자원들(54)의 예상된 수가 임계값 이상일 때(또는 몇몇 예들에서, 임계값 초과일 때만), 할당기 모듈(60)은 나머지 자원들(54)을 파워온하기 위해 전력 제어 모듈(62)과 인터페이싱할 수 있다. 몇몇 예들에서, 할당기 모듈(60)은 나머지 자원들(54)을 파워온하기 전에 이러한 자원들(54)이 파워온될 것임을 확인하기 위해 CPU 또는 다른 제어 로직과 먼저 인터페이싱할 수 있다. 전력 제어 모듈(62)에 의해 보고된 바와 같이 파워온되면, 할당기 모듈(60)은 새롭게 파워온된 자원들(54)을 반영하기 위해 온도계 데이터 구조(61)를 업데이트할 수 있다. 이후, 중재기 모듈(50)은, 온도계 데이터 구조(61)가 업데이트된 후에, 요청자들(56)로부터의 요청들(58)을 승인하기 위해 요청자들(56)에 새롭게 파워온된 자원들(54)을 배정하기 시작할 수 있다. 온도계 데이터 구조(61)의 사용을 통해, 할당기 모듈(60)은 고정된 순위 또는 특정한 진행으로 자원들(54)을 파워온할 수 있다.
다시 말하면, 할당기 모듈(60)은 자원 ID들을, 최소 번호의 자원들(54)과 연관되는 최소 번호의 값들에 집중시킬 수 있는 알고리즘에 따라 동작한다. 첫 번째 요청(58)이 중재기 모듈(50)에 의해 수신될 때, 중재기 모듈(50)은 온도계 데이터 구조(61)에 저장된 최소 번호의 자원 ID를 할당하며, 해당 자원(54)이 비지(또는 다시 말하면, 사용 중 또는 사용 불가능)함을 나타내기 위해 온도계 데이터 구조(61)를 업데이트하도록 구성될 수 있다. 첫 번째 요청이 해당 자원(54)에 의해 완전히 처리되기 전에 두 번째 요청(58)이 중재기 모듈(50)에 의해 수신될 때, 중재기 모듈(50)은 온도계 데이터 구조(61)에 저장된 두 번째로 작은 번호의 가용 자원 ID를 배정할 수 있다. 이러한 두 번째로 작은 가용 자원 ID를 배정한 후에, 중재기 모듈(50)은 해당 자원이 비지함을 나타내기 위해 온도계 데이터 구조(61)를 업데이트할 수 있다. 첫 번째 요청(58)이 처리되면, 중재기 모듈(50)은 첫 번째 요청(58)을 처리한 자원(54)이 사용 가능함을 나타내기 위해 온도계 데이터 구조(61)를 업데이트할 수 있다. 이러한 자원(54)이 (모든 가용 자원 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)의 형태의 집적 자원 할당기 모듈(42; 미도시)을 포함할 수 있다(이들 각각은 도 3의 예에 도시된 중재기 모듈(50) 및/또는 할당기 및 전력 제어 모듈(52)과 유사하거나 동일할 수 있다). ECC 디코더(40)는 판독 데이터 멀티플렉서(72)("판독 데이터 먹스(72)") 및 요청자들(56)을 효과적으로 나타낼 수 있는 하나 이상의 자원 요청 모듈을 추가로 포함할 수 있다. 요청자들(56)은, CPU(70)와 인터페이싱하며 요청들(58)을 발생시키도록 구성되는 인터페이스를 나타낼 수 있다. 판독 데이터 먹스(72)는, 자원들(54)로 표시된 메모리 뱅크들 사이에서 다중화하거나 이들 중 하나로부터 데이터를 선택하도록 구성되는 유닛을 나타낼 수 있다.
도 4의 예에서, 요청자들(56)은 데이터를 카피하기 위해 메모리 버퍼를 요청하는 장치, 유닛, 또는 모듈을 나타낼 수 있다. 자원들(54)은 (일례로, SRAM으로 지칭되는 일종의 메모리를 각각 포함할 수 있는) 메모리 뱅크들(0 내지 3) 내에 위치하는 메모리 버퍼들을 나타낼 수 있다. 각각의 메모리 뱅크는 4개의 버퍼들을 제공할 수 있고, 평균 요청 도착간 시간은 최대 4개의 요청자들(56)이 버퍼들의 수명에 걸쳐 활성이 되게 하는 것으로 가정할 때, 수요를 충족시키기 위해 단일 메모리 뱅크(54)만 파워온되면 된다. 그러나, 요청들의 도착간 시간이 감소할 때, 또는 버퍼들의 평균 수명이 증가할 때, 할당기 및 전력 제어 모듈(52)은 추가 메모리 뱅크(54)(예컨대, 메모리 뱅크(0) 외의 메모리 뱅크(1))를 파워업하여, 자원 ID를 4개 더 제공할 수 있다. 이후, 할당기 및 전력 제어 모듈(52)은 버퍼 슬롯들의 가용 풀을 4개에서 8개까지 증가시킬 수 있지만, 메모리 뱅크(1)가 PWR_IS_ON 제어 채널(또는 이른바 전력 상태 제어 라인)을 통해 파워업 상태임을 나타낸 후에야 증가시킬 수 있다.
도 5a 및 도 5b는 본 개시에 설명된 자원 할당 및 할당해제 기술을 수행 시에 저장 장치의 예시적인 동작을 도시한 흐름도이다. 먼저 도 5a를 참조하면, 도 1의 예에 도시된 저장 장치(6)와 같은 저장 장치가 먼저 파워업될 때, 저장 장치(6)는 (도 3 및 도 4의 예에 도시된) 자원들(54)의 전부는 아니더라도 일부가 파워다운되는(또는 파워업되지 않는) 저전력 상태로 동작할 수 있다(90). 요청자들(56)은 하나 이상의 요청(58)을 발행하기 시작할 수 있고, 이후 CPU 또는 다른 제어 로직은 할당기 모듈(60)이 자원들(54)의 소정의 비제로 부분집합을 파워온하기 위해 전력 제어 모듈(62)과 인터페이싱하게 할 수 있다(94).
자원들(54)의 이러한 비제로 부분집합의 파워업에 응하여, 할당기 모듈(60)은 다음으로 온도계 데이터 구조(61)("온도 데이터 구조(61)")를 초기화하여, 순차적 순서로 증가하는 자원 ID들을 자원들(54)의 파워온된 비제로 부분집합에 배정하며, 자원들(54)의 파워온된 비제로 부분집합의 특정 자원들에 대한 자원 ID들의 배정을 반영하기 위해 온도계 데이터 구조(61)를 업데이트할 수 있다(96). 이후, 중재기 모듈(50)은 중재 방식에 따라 요청들(58)을 승인하도록 진행하여, 자원 ID들에 의해 식별되는 자원들에 대한 액세스를 요청자들(56)에 제공할 수 있다(98). 중재기 모듈(50)은 자원들(54)의 비제로 부분집합의 자원들이 하나의 요청자(56)에 의한 사용과 같이 할당되는 것을 나타내기 위해 온도계 데이터 구조(61)를 업데이트할 수 있다(100).
시간이 진행됨에 따라, 요청자들(56)은 증가된 수의 요청들(58)을 발행할 수 있고, 이는 요청자들(56)이 하나의 자원(54)에 대한 액세스가 승인되기 전에 평균적으로 더 긴 시간량을 대기하는 결과를 초래할 수 있다. 할당기 모듈(60)은 (예컨대, 하나의 요청(58)의 발행에서 하나의 요청(58)의 승인까지의 평균 시간량의 관점에서) 요청-대-승인 지연을 판단하며, 전술한 방식으로 (예상 자원수의 관점에서) 이러한 지연을 임계값과 비교할 수 있다(102, 104). (지연을 효과적으로 나타내는) 자원들(54)의 예상된 수가 임계값 이하이면("아니오" 106), 할당기 모듈(60)은 계속 요청-대-승인 지연을 감시하거나 달리 판단하며, 이러한 지연을 임계값과 비교할 수 있다(102, 104). 자원들(54)의 예상된 수가 임계값을 초과하면("예" 106), 할당기 모듈(60)은 나머지 자원들(54)을 파워온하기 위해 전력 제어 모듈(62)과 인터페이싱할 수 있다(108).
앞서 주목한 바와 같이, 복수의 자원들의 비제로 부분집합 및 복수의 자원들의 나머지 자원들과 관련하여 설명되었지만, 기술은 자원들의 임의의 수의 부분집합들로 확장될 수 있되, 해당 임계값은 자원들의 각각의 인접한 비제로 부분집합을 분리하도록 정의된다. 이런 점에서, 복수의 자원들은 더 큰 복수의 자원들의 부분집합인 것으로 이해될 수 있다. 이로써, 복수의 자원들의 나머지 자원들은 더 큰 복수의 자원들 내의 복수의 자원들의 제2 비제로 부분집합을 나타낼 수 있다.
어쨌든, 전력 제어 모듈(62)에 의해 보고된 바와 같이 파워온되면, 할당기 모듈(60)은 새롭게 파워온된 자원들(54)을 반영하기 위해 온도계 데이터 구조(61)를 업데이트할 수 있다(110). 도 5b의 예를 참조하면, 이후, 중재기 모듈(50)은, 온도계 데이터 구조(61)가 업데이트된 후에, 요청자들(56)로부터의 요청들(58)을 승인하기 위해 요청자들(56)에 새롭게 파워온된 자원들(54)을 배정하기 시작하는 한편, 이러한 자원들(54)의 배정 및 해제를 반영하기 위해 온도계 데이터 구조(61)를 업데이트할 수 있다(112, 114).
시간이 진행됨에 따라, 할당기 모듈(60)은 주어진 시간 간격당 요청수가 감소하였다고 판단할 수 있다. 이러한 감소는 일부 가용 자원들(54)이 소정의 시간 동안 유휴 상태인 결과를 효과적으로 초래할 수 있다. 할당기 모듈(60)은 주어진 시간 간격 당 요청수를 예상 자원수로 잠재적으로 변환하여 요청-대-승인 지연을 다시 판단할 수 있다(116). 할당기 모듈(60)은 이러한 예상 자원수를 앞서 주목한 임계값과 비교하며(118), 이러한 비교에 기초하여(예컨대, 예상 자원수가 임계값 이하일 때 또는 임계값 미만일 때만) 사전에 파워온된 자원들(54)의 나머지 비제로 부분집합을 파워오프할 수 있다.
예컨대, 지연이 임계값보다 더 클 때("예" 120), 할당기 모듈(60)은 계속 요청-대-승인 지연을 판단하며, 이러한 지연을 임계값과 비교할 수 있다(116, 118). 지연이 임계값 이하일 때("아니오" 120), 할당기 모듈(60)은 자원들(54)의 나머지 부분집합을 파워오프하기 위해 전력 제어 모듈(62)과 인터페이싱할 수 있다(122). 할당기 모듈(60)은 이러한 자원들(54)의 파워오프를 반영하기 위해 온도계 데이터 구조(61)를 업데이트할 수 있다(124). 저장 장치(6)는 계속 이런 방식으로 동작하여, 요청-대-승인 지연이 임계값을 초과할 때까지(이 시점에 저장 장치(6)는 수행 모드로 동작함(108 내지 120)), 이른바 동작 비용 감소 모드(102 내지 106, 122, 124)로 요청-대-승인 지연을 지속적으로 판단할 수 있다(102).
도 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)을 배정할 수 있다. 종래의 할당 대신에, 이러한 막대그래프/온도계형 할당은 전술한 방식으로 미사용 자원들의 셧다운을 허용한다. 효과적으로는, 온도계 데이터 구조(61)의 일 측은 비지 상태로 남아있을 수 있는 반면, 타 측은 대부분 프리 상태로 남아있을 수 있다.
본 개시에 설명된 기술은, 적어도 부분적으로는, 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합으로 실시될 수 있다. 예컨대, 설명된 기술의 다양한 양태들은, 하나 이상의 마이크로프로세서, 디지털 신호 프로세서(DSP), 주문형 집적 회로(ASIC), 필드 프로그램 가능 게이트 어레이(FPGA), 또는 임의의 다른 균등한 집적 또는 이산 논리 회로, 및 이러한 구성요소들의 임의의 조합을 비롯한, 하나 이상의 프로세서 내에 실시될 수 있다. "프로세서" 또는 "처리 회로"라는 용어는 단독으로 또는 다른 논리 회로와 결합되는 전술한 논리 회로 중 임의의 하나, 또는 임의의 다른 균등한 회로를 일반적으로 가리킬 수 있다. 하드웨어를 포함하는 제어 장치는 또한 본 개시의 하나 이상의 기술을 수행할 수 있다.
이러한 하드웨어, 소프트웨어, 및 펌웨어는 본 개시에 설명된 다양한 기술들을 지원하기 위해 동일한 장치 내에서 또는 별개의 장치들 내에서 구현될 수 있다. 또한, 전술한 유닛들, 모듈들, 또는 구성요소들 중 임의의 하나는 분리되었지만 연동 가능한 논리 장치들로서 별도로 또는 함께 구현될 수 있다. 모듈 또는 유닛과 같은 상이한 특징부들의 묘사는 상이한 기능적 양태들을 강조하도록 의도된 것으로, 이러한 모듈 또는 유닛이 별개의 하드웨어, 펌웨어, 또는 소프트웨어 구성요소에 의해 실현되어야 함을 반드시 의미하지는 않는다. 오히려, 하나 이상의 모듈 또는 유닛과 연관되는 기능성은 별개의 하드웨어, 펌웨어, 또는 소프트웨어 구성요소에 의해 수행될 수 있거나, 공통 또는 별개의 하드웨어, 펌웨어, 또는 소프트웨어 구성요소 내에 집적될 수 있다.
본 개시에 설명된 기술은 또한 명령으로 인코딩된 컴퓨터-판독 가능 저장 매체를 포함하는 제조 물품 내에 실시되거나 인코딩될 수 있다. 인코딩되는 컴퓨터-판독 가능 저장 매체를 포함하는 제조 물품 내에 삽입되거나 인코딩된 명령은, 하나 이상의 프로그램 가능 프로세서 또는 다른 프로세서로 하여금, 예컨대, 컴퓨터-판독 가능 저장 매체에 포함되거나 인코딩된 명령이 하나 이상의 프로세서에 의해 실행될 때, 본원에 설명된 하나 이상의 기술을 실시하게 할 수 있다. 컴퓨터-판독 가능 저장 매체는 랜덤 액세스 메모리(RAM), 판독 전용 메모리(ROM), 프로그램 가능 판독 전용 메모리(PROM), 소거 및 프로그램 가능 판독 전용 메모리(EPROM), 전기적 소거 및 프로그램 가능 판독 전용 메모리(EEPROM), 플래시 메모리, 하드 디스크, 컴팩트 디스크 ROM(CD-ROM), 플로피 디스크, 카세트, 자기 매체, 광학 매체, 또는 다른 컴퓨터-판독 가능 매체를 포함할 수 있다. 몇몇 예들에서, 제조 물품은 하나 이상의 컴퓨터-판독 가능 저장 매체를 포함할 수 있다.
몇몇 예들에서, 컴퓨터-판독 가능 저장 매체는 비일시적 매체를 포함할 수 있다. "비일시적"이라는 용어는 저장 매체가 반송파 또는 전파 신호 내에 구현되지 않는다는 것을 나타낸다. 소정의 예들에서, 비일시적 저장 매체는 (예컨대, RAM 또는 캐시 내에) 시간의 경과에 따라 변화될 수 있는 데이터를 저장할 수 있다.
다양한 예들이 설명되었다. 이러한 예들 및 다른 예들은 후술하는 청구범위의 범주 내에 있다.

Claims (21)

  1. 장치의 컨트롤러에 의해, 상기 장치의 복수의 자원들의 제1 비제로 부분집합의 사용량을 판단하는 단계로, 상기 복수의 자원들은 온도계 데이터 구조에 따라 할당되고 해제되는 것인 단계;
    상기 컨트롤러에 의해, 상기 복수의 자원들의 상기 제1 비제로 부분집합의 사용량을, 상기 복수의 자원들의 상기 제1 비제로 부분집합을 상기 복수의 자원들의 제2 비제로 부분집합으로부터 분리하는 임계값과 비교하는 단계; 및
    적어도 상기 비교에 기초하여 상기 복수의 자원들의 상기 제2 비제로 부분집합을 파워온하는 단계를 포함하는, 방법.
  2. 제1항에 있어서,
    상기 장치는 솔리드 스테이트 드라이브(SSD)를 포함하고, 상기 복수의 자원들은 상기 SSD의 비휘발성 메모리로의/로부터의 데이터 기입 및 데이터 판독 중 하나 이상을 지원하는, 방법.
  3. 제1항에 있어서,
    상기 컨트롤러에 의해, 적어도 상기 온도계 데이터 구조의 분석에 기초하여 상기 복수의 자원들의 상기 제1 비제로 부분집합의 사용량을 판단하는 단계를 추가로 포함하는, 방법.
  4. 제1항에 있어서,
    상기 온도계 데이터 구조는 각각의 상기 복수의 자원들에 대한 각각의 비트를 포함하되, 상기 각각의 비트들은 각각 상기 복수의 자원들 중 해당 자원이 요청 유닛에 할당되는지 또는 요청 유닛으로의 할당을 위해 사용 가능한지 나타내는, 방법.
  5. 제4항에 있어서,
    적어도 상기 온도계 데이터 구조의 상기 각각의 비트들의 통계적 분석에 기초하여 상기 복수의 자원들의 상기 제1 비제로 부분집합의 사용량을 판단하는 단계를 추가로 포함하는, 방법.
  6. 제1항에 있어서,
    상기 복수의 자원들의 상기 제1 비제로 부분집합의 사용량을, 요청될 상기 복수의 자원들의 예상된 수를 나타내는 예측 사용량으로 변환하는 단계를 추가로 포함하되,
    상기 복수의 자원들의 상기 제1 비제로 부분집합의 사용량을 비교하는 단계는 요청될 상기 복수의 자원들의 예상된 수를 상기 임계값과 비교하는 단계를 포함하는, 방법.
  7. 제1항에 있어서,
    각각의 상기 복수의 자원들은 각각의 메모리 슬롯을 포함하되, 상기 각각의 메모리 슬롯들은 각각 동일한 수의 바이트를 포함하는, 방법.
  8. 제1항에 있어서,
    각각의 상기 복수의 자원들은 솔리드 스테이트 드라이브의 비휘발성 메모리에 기입되는 ECC 인코딩된 데이터와 관련하여 ECC 디코딩을 수행하는 데에 사용되는 각각의 오류 검사 및 수정(ECC) 디코더를 포함하는, 방법.
  9. 제1항에 있어서,
    상기 복수의 자원들의 상기 제2 비제로 부분집합을 파워온하는 단계는 상기 사용량이 임계값 이상일 때 상기 복수의 자원들의 상기 제2 비제로 부분집합을 파워온하는 단계를 포함하고,
    상기 방법은 상기 사용량이 임계값 미만일 때 상기 복수의 자원들의 상기 제2 비제로 부분집합을 파워오프하는 단계를 추가로 포함하는, 방법.
  10. 제1항에 있어서,
    전력 소비를 제어하기 위해 시간의 경과에 따라 상이한 값으로 임계값을 동적으로 설정하는 단계를 추가로 포함하는, 방법.
  11. 온도계 데이터 구조에 따라 할당되고 해제되는 복수의 자원들의 제1 비제로 부분집합의 사용량을 판단하고, 상기 복수의 자원들의 상기 제1 비제로 부분집합의 사용량을, 상기 복수의 자원들의 상기 제1 비제로 부분집합을 상기 복수의 자원들의 제2 비제로 부분집합으로부터 분리하는 임계값과 비교하며, 적어도 상기 비교에 기초하여 상기 복수의 자원들의 상기 제2 비제로 부분집합을 파워온하도록 구성되는 하나 이상의 프로세서; 및
    상기 임계값을 저장하도록 구성되는 메모리를 포함하는, 장치.
  12. 제11항에 있어서,
    상기 장치는 솔리드 스테이트 드라이브(SSD)를 포함하고,
    상기 복수의 자원들은 상기 SSD의 비휘발성 메모리로의/로부터의 데이터 기입 및 데이터 판독 중 하나 이상을 지원하는, 장치.
  13. 제11항에 있어서,
    상기 하나 이상의 프로세서는 적어도 상기 온도계 데이터 구조의 분석에 기초하여 상기 복수의 자원들의 상기 제1 비제로 부분집합의 사용량을 판단하도록 추가로 구성되는, 장치.
  14. 제11항에 있어서,
    상기 온도계 데이터 구조는 각각의 상기 복수의 자원들에 대한 각각의 비트를 포함하되, 상기 각각의 비트들은 각각 상기 복수의 자원들 중 해당 자원이 요청 유닛에 할당되는지 또는 요청 유닛으로의 할당을 위해 사용 가능한지 나타내는, 장치.
  15. 제14항에 있어서,
    상기 하나 이상의 프로세서는 적어도 상기 온도계 데이터 구조의 상기 각각의 비트들의 통계적 분석에 기초하여 상기 복수의 자원들의 상기 제1 비제로 부분집합의 사용량을 판단하도록 추가로 구성되는, 장치.
  16. 제11항에 있어서,
    상기 하나 이상의 프로세서는 상기 복수의 자원들의 상기 제1 비제로 부분집합의 사용량을, 요청될 상기 복수의 자원들의 예상된 수를 나타내는 예측 사용량으로 변환하도록 추가로 구성되며,
    상기 하나 이상의 프로세서는 요청될 상기 복수의 자원들의 예상된 수를 상기 임계값과 비교하도록 구성되는, 장치.
  17. 제11항에 있어서,
    각각의 상기 복수의 자원들은 각각의 메모리 슬롯을 포함하되, 상기 각각의 메모리 슬롯들은 각각 동일한 수의 바이트를 포함하는, 장치.
  18. 제11항에 있어서,
    각각의 상기 복수의 자원들은 솔리드 스테이트 드라이브의 비휘발성 메모리에 기입되는 ECC 인코딩된 데이터와 관련하여 ECC 디코딩을 수행하는 데에 사용되는 각각의 오류 검사 및 수정(ECC) 디코더를 포함하는, 장치.
  19. 제11항에 있어서,
    상기 하나 이상의 프로세서는 상기 사용량이 임계값 이상일 때 상기 복수의 자원들의 상기 제2 비제로 부분집합을 파워온하도록 구성되며,
    상기 하나 이상의 프로세서는 상기 사용량이 임계값 미만일 때 상기 복수의 자원들의 상기 제2 비제로 부분집합을 파워오프하도록 추가로 구성되는, 장치.
  20. 제11항에 있어서,
    상기 하나 이상의 프로세서는 전력 소비를 제어하기 위해 시간의 경과에 따라 상이한 값으로 임계값을 동적으로 설정하도록 추가로 구성되는, 장치.
  21. 명령을 저장한 비일시적 컴퓨터-판독 가능 저장 매체에 있어서,
    상기 명령은, 실행될 때, 하나 이상의 프로세서로 하여금:
    온도계 데이터 구조에 따라 할당되고 해제되는 복수의 자원들의 제1 비제로 부분집합의 사용량을 판단하고;
    상기 복수의 자원들의 상기 제1 비제로 부분집합의 사용량을, 상기 복수의 자원들의 상기 제1 비제로 부분집합을 상기 복수의 자원들의 제2 비제로 부분집합으로부터 분리하는 임계값과 비교하며;
    적어도 상기 비교에 기초하여 상기 복수의 자원들의 상기 제2 비제로 부분집합을 파워온하게 하는, 비일시적 컴퓨터-판독 가능 저장 매체.
KR1020150159592A 2014-11-18 2015-11-13 장치 내의 전력 관리를 위한 자원 할당 및 할당해제 KR101876001B1 (ko)

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
KR20160059430A true KR20160059430A (ko) 2016-05-26
KR101876001B1 KR101876001B1 (ko) 2018-07-06

Family

ID=55132624

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150159592A KR101876001B1 (ko) 2014-11-18 2015-11-13 장치 내의 전력 관리를 위한 자원 할당 및 할당해제

Country Status (10)

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

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023033969A1 (en) * 2021-08-31 2023-03-09 Apple Inc. Power management based on limiting hardware-forced power control

Families Citing this family (30)

* 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
US11657203B2 (en) 2019-12-27 2023-05-23 Arteris, Inc. Multi-phase topology synthesis of a network-on-chip (NoC)
US10990724B1 (en) 2019-12-27 2021-04-27 Arteris, Inc. System and method for incremental topology synthesis of a network-on-chip
US11558259B2 (en) 2019-12-27 2023-01-17 Arteris, Inc. System and method for generating and using physical roadmaps in network synthesis
US11665776B2 (en) 2019-12-27 2023-05-30 Arteris, Inc. System and method for synthesis of a network-on-chip for deadlock-free transformation
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
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 株式会社東芝 マルチコアプロセッサシステム
US8289801B2 (en) * 2009-09-09 2012-10-16 Fusion-Io, Inc. Apparatus, system, and method for power reduction management 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

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023033969A1 (en) * 2021-08-31 2023-03-09 Apple Inc. Power management based on limiting hardware-forced power control
US11693472B2 (en) 2021-08-31 2023-07-04 Apple Inc. Multi-die power management in SoCs
US11853140B2 (en) 2021-08-31 2023-12-26 Apple Inc. Power management based on limiting hardware-forced power control
US11960341B2 (en) 2021-08-31 2024-04-16 Apple Inc. Power delivery reduction scheme for SoC

Also Published As

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

Similar Documents

Publication Publication Date Title
KR101876001B1 (ko) 장치 내의 전력 관리를 위한 자원 할당 및 할당해제
US11068170B2 (en) Multi-tier scheme for logical storage management
CN107346290B (zh) 使用并行化日志列表重放分区逻辑到物理数据地址转换表
US20160210060A1 (en) Dynamic resource allocation within storage devices
US8806090B2 (en) Apparatus including buffer allocation management and related methods
EP2396729B1 (en) Memory system and method of controlling memory system
CN108228473B (zh) 通过动态地传送存储器范围分配的负载平衡的方法及系统
JP2017079050A (ja) 保護されたデータとは別個のパリティデータの記憶
US20150134887A1 (en) Data writing method, memory control circuit unit and memory storage apparatus
KR20170117868A (ko) 저장 디바이스들에서의 웨어 레벨링
US9582192B2 (en) Geometry aware block reclamation
US10228866B2 (en) Performance tuning for storage devices
US20230244394A1 (en) Gradually Reclaim Storage Space Occupied by a Proof of Space Plot in a Solid State Drive
US20230138586A1 (en) Storage device and method of operating the same
US20200159443A1 (en) Storage System and Method for Optimal Resource Allocation Using Stream Directive
CN107766262B (zh) 调节并发写命令数量的方法与装置
US11847323B1 (en) Data storage device and method for host buffer management
US20240143227A1 (en) Data Storage Device and Method for Reducing Flush Latency
US20230315335A1 (en) Data Storage Device and Method for Executing a Low-Priority Speculative Read Command from a Host
US20230385068A1 (en) Data Storage Device and Method for Storage-Class-Memory-Accelerated Boot Partition Optimization

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant