KR20120036346A - 비휘발성 블록 저장 장치로부터 처리 장치로의 건전성 보고 - Google Patents

비휘발성 블록 저장 장치로부터 처리 장치로의 건전성 보고 Download PDF

Info

Publication number
KR20120036346A
KR20120036346A KR1020127000900A KR20127000900A KR20120036346A KR 20120036346 A KR20120036346 A KR 20120036346A KR 1020127000900 A KR1020127000900 A KR 1020127000900A KR 20127000900 A KR20127000900 A KR 20127000900A KR 20120036346 A KR20120036346 A KR 20120036346A
Authority
KR
South Korea
Prior art keywords
storage device
block storage
nonvolatile
information
input
Prior art date
Application number
KR1020127000900A
Other languages
English (en)
Other versions
KR101683942B1 (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 KR20120036346A publication Critical patent/KR20120036346A/ko
Application granted granted Critical
Publication of KR101683942B1 publication Critical patent/KR101683942B1/ko

Links

Images

Classifications

    • 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/3409Recording 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 performance assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3034Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a storage system, e.g. DASD based or network based
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3051Monitoring arrangements for monitoring the configuration of the computing system or of the computing system component, e.g. monitoring the presence of processing resources, peripherals, I/O links, software programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3055Monitoring arrangements for monitoring the status of the computing system or of the computing system component, e.g. monitoring if the computing system is on, off, available, not available
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3058Monitoring arrangements for monitoring environmental properties or parameters of the computing system or of the computing system component, e.g. monitoring of power, currents, temperature, humidity, position, vibrations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/145Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being virtual, e.g. for virtual blocks or segments before a translation mechanism
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/0614Improving the reliability of storage systems
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7202Allocation control and policies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7211Wear leveling

Abstract

비휘발성 블록 저장 장치로부터의 피드백에 기초하여 비휘발성 블록 저장 장치를 이용하는 처리 장치에 대해 I/O 패턴을 적응시키기 위한 방법 및 장치가 제공된다. 피드백은 비휘발성 블록 저장 장치의 상태를 나타내는 정보를 포함할 수 있다. 피드백의 수신에 응답하여, 처리 장치에서 실행되는 운영체제에 포함된 저장 서브시스템은, 비휘발성 블록 저장 장치에 대한 부정적인 영향을 회피하거나 감소시키기 위해 또는 비휘발성 블록 저장 장치의 일 태양을 강화하기 위해 비휘발성 블록 저장 장치에 대해 행동을 변경할 수 있다. 피드백은 비휘발성 블록 저장 장치의 성능 정보 및/또는 동작 환경 정보를 포함할 수 있다. 비휘발성 블록 저장 장치가 피드백을 제공할 수 없을 때, 처리 장치는 데이터베이스 서비스로부터 비휘발성 블록 저장 장치에 대한 정보를 요청할 수 있다.

Description

비휘발성 블록 저장 장치로부터 처리 장치로의 건전성 보고{HEALTH REPORTING FROM NON-VOLATILE BLOCK STORAGE DEVICE TO PROCESSING DEVICE}
비휘발성 저장 장치는 입력/출력 패턴에 민감하다. 예를 들어, 플래시 저장 장치에서, 주어진 저장 블록에 대한 과도한 반복 기록은 결국 주어진 저장 블록의 데이터 저장 기능을 파괴할 것이다. 일부 기존의 비휘발성 블록 저장 장치는, 비휘발성 블록 저장 장치에 대한 부정적인 영향을 회피하거나 감소시키기 위해 LBA(logical block address)의 범위에 걸쳐서 소거를 확산시키도록 웨어 레벨링(wear leveling)을 채용한다. 그러나 기존 비휘발성 블록 저장 장치는 통상, 진행중인 플래시 셀의 건전성(health) 및 처리 장치에 의해 채용되는 입력/출력 패턴에 대한 피드백을 처리 장치에 제공하지 않는다.
최근, 처리 장치의 저장 제어기는 처리 장치에서 실행되는 운영체제의 저장 서브시스템 컴포넌트로 설계된 입력/출력 패턴에 따라 입력/출력 스트림을 제출한다. 저장 서브시스템 컴포넌트는, 예를 들어, 버퍼 크기 또는 기타 파라미터와 같은 입력/출력 스트림의 일부 파라미터를 조정할 수 있다. 그러나, 저장 서브시스템 컴포넌트는 입력/출력 패턴을 비휘발성 블록 저장 장치의 현재 상태에 완전히 적응시키지 않는다.
운영체제의 일부 설계된 저장 서브시스템 컴포넌트는 접속된 비휘발성 블록 저장 장치를 블랙 박스처럼 다룬다. 이러한 저장 관리자(manager) 컴포넌트는 접속된 비휘발성 블록 저장 장치의 응답성을 측정할 수 있고, 예를 들어, 버퍼의 크기를 변화시키고/시키거나 스레드(thread)의 수를 증가시키는 등의 최소한의 적응 동작을 수행할 수 있다.
이 개요는 아래의 상세한 설명에서 더 설명될 개념 중 선택된 것을 단순화된 형태로 소개하기 위해 제공된다. 이 개요는 청구된 주제의 핵심 특징 또는 주요 특징을 식별하고자 하는 것이 아니고, 청구된 주제의 범위를 제한하는데 사용되고자 하는 것도 아니다.
본 개시의 주제에 따르는 제 1 실시형태에서, 처리 장치의 저장 장치 인터페이스와 비휘발성 블록 저장 장치 사이의 통신 위한 방법이 제공된다. 비휘발성 블록 저장 장치는 처리 장치에서 실행되는 운영 체제의 저장 서브시스템 컴포넌트로 피드백을 제공할 수 있다. 피드백은 비휘발성 블록 저장 장치의 상태를 나타내는 정보를 포함할 수 있다. 피드백을 수신하는 것에 응답하여, 저장 서브시스템 컴포넌트는 비휘발성 블록 저장 장치에 대한 부정적인 영향을 회피하거나 감소시키기 위해 비휘발성 블록 저장 장치에 대하여 행동을 변경할 수 있다.
피드백은 성능 정보 및/또는 동작 환경 정보를 포함할 수 있다. 저장 서브시스템 컴포넌트는 수신된 피드백에 포함된 정보를 분석할 수 있고, 다른 액세스 패턴을 적응시키는 것, 비휘발성 블록 저장 장치에 대해 처리 장치의 행동을 정의하는 프로파일을 변경하는 것, 큐잉 방법을 변경하는 것, 큐잉 방법에 의해 사용되는 파라미터를 변경하는 것, 또는 비휘발성 블록 저장 장치에 대한 부정적인 영향을 감소시키도록 다른 행동을 수행하거나 수행하지 않는 것 등 행동을 변경할 수 있다.
제 1 실시형태의 변형에서, 저장 서브시스템 컴포넌트는 피드백을 수신하기 위해 비휘발성 저장 블록을 폴링할 수 있다. 제 1 실시형태의 두 번째 변형에서, 비휘발성 블록 저장 장치는 저장 관리자 컴포넌트에 피드백을 비동기적으로 제공할 수 있다.
일부 실시형태에서, 저장 서브시스템 컴포넌트는 비휘발성 블록 저장 장치가 처리 장치에 피드백을 제공할 수 없다고 판정할 수 있다. 저장 서브시스템 컴포넌트가 비휘발성 블록 저장 장치가 처리 장치에 피드백을 제공할 수 없다고 판정하는 때에 운영체제는 원격 서버에서 구현되는 데이터베이스 서비스로부터 비휘발성 블록 저장 장치에 대한 정보를 요청할 수 있다. 원격 서버는 비휘발성 블록 저장 장치의 성능 특성을 포함하는 정보를 제공할 수 있다. 데이터베이스 서비스가 비휘발성 블록 저장 장치에 대해 직접 매칭을 찾지 못하면, 원격 서버는, 운영 체제로부터의 요청에 응답하여, 일반(generic) 프로파일을 제공할 수 있거나, 또는 비휘발성 블록 저장 장치와의 유사성에 기초하여 프로파일을 선택할 수 있다. 성능 특성은 사용할 입력/출력 패턴, 사용할 큐잉 방법, 회피할 입력/출력 패턴 및 회피할 큐잉 방법을 포함할 수 있지만 이에 제한되지 않는다.
위에 기재된 것과 이외의 장점 및 특징이 획득될 수 있는 방식을 설명하기 위해, 더 구체적인 설명이 아래에서 설명되고 첨부된 도면에 도시된 구체적인 실시형태를 참조함으로써 이루어질 것이다. 이들 도면이 단순히 통상의 실시형태를 도시하며 그러므로 그 범위를 제한하는 것으로 고려되어서는 아니 됨을 이해하라. 구현들이 첨부된 도면을 이용하여 추가의 구체 및 세부사항을 이용하여 묘사되고 설명될 것이다.
도 1은 본 개시의 주제에 따르는 실시형태를 구현하기 위해 사용될 수 있는 예시적인 처리 장치의 블록도이다.
도 2는 본 개시의 주제에 따르는 실시형태를 구현하기 위해 사용될 수 있는 예시적인 비휘발성 블록 저장 장치의 블록도이다.
도 3은 본 개시의 주제에 따르는 실시형태를 위한 예시적인 운영 환경을 도시한다.
도 4 및 5는 다양한 실시형태에서 처리 장치에서 수행될 수 있는 예시적인 프로세스를 도시하는 흐름도이다.
도 6은 다양한 실시형태에서 비휘발성 블록 저장 장치에서 수행될 수 있는 프로세스를 도시하는 흐름도이다.
실시형태가 아래에서 자세히 논의된다. 구체적인 구현이 논의되지만, 이는 예시의 목적만으로 이루어짐을 이해할 것이다. 당업자는 다른 컴포넌트 및 구성이 본 개시의 주제의 범위는 사상을 벗어남이 없이 사용될 수 있음을 인식할 것이다.
개요
본 개시의 주제에 따르는 실시형태에서, 비휘발성 블록 저장 장치가 처리 장치에서 실행되는 운영 체제의 저장 서브시스템 컴포넌트에 정보를 제공할 수 있는 방법 및 장치가 개시된다. 정보는, 비휘발성 블록 저장 장치에 대한 부정적인 영향을 감소시키거나 비휘발성 블록 저장 장치의 일 태양을 강화(enhance)하기 위해 입력/출력(I/O) 패턴에 대한 희망 변화를 나타낼 수 있다.
본 개시의 주제에 따르는 제 1 실시형태에서, 처리 장치 상에서 실행되는 운영 체제의 저장 서브시스템 컴포넌트는 비휘발성 블록 저장 장치에 관한 정보를 획득하기 위하여 비휘발성 블록 저장 장치를 폴링할 수 있다. 제 2 실시형태에서, 비휘발성 블록 저장 장치는 저장 관리자 컴포넌트에 정보를 비동기적으로(asynchronously) 제공한다.
일 실시형태에서, 비휘발성 블록 저장 장치는 다수의 사전정의된 프로파일 중 하나를 이용하기 위해 저장 서브시스템 컴포넌트에 대한 표시를 제공할 수 있으며, 비휘발성 블록 저장 장치를 사용할 때 저장 서브시스템 컴포넌트가 이에 일치될 수 있다. 사전정의된 프로파일 중 적어도 일부는, 예를 들어, 기록 패턴과 같은 관련 I/O 패턴을 가질 수 있고, 저장 관리자 컴포넌트는 비휘발성 블록 저장 장치와 통신할 때에 이에 일치될 수 있다.
다른 실시형태에서, 사전정의된 프로파일은, 예를 들어 저장 서브시스템 컴포넌트가 비휘발성 블록 저장 장치에 너무 많은 짧은 데이터 기록을 보내고 있음을 나타내는 정보 또는 기타 정보와 같이, 비휘발성 블록 저장 장치에 대한 부정적인 영향을 회피하거나 감소시키기 위한 정보를 포함할 수 있다.
비휘발성 블록 저장 장치는, 상태 정보, 비휘발성 블록 저장 장치에 대한 부정적인 영향을 회피하거나 감소시키기 위한 정보, 또는 비휘발성 블록 저장 장치의 일 태양을 강화(enhance)하기 위한 정보를 제공할 수 없을 수 있다. 처리 장치에서 실행되는 운영체제는 네트워크를 통해 데이터베이스 서비스로부터 비휘발성 블록 저장 장치에 대한 정보를 요청하고 수신할 수 있다. 정보는 비휘발성 블록 저장 장치에 기록할 때에 저장 서브시스템 컴포넌트가 사용하는 특정 기록 패턴 및 기타 정보 등과 같은 비휘발성 블록 저장 장치의 성능 특성을 포함할 수 있다.
다르게는, 저장 서브시스템 컴포넌트는 저장 서브시스템 컴포넌트 자체 내의 하드코딩된 표로부터 비휘발성 블록 저장 장치의 성능 특성을 획득할 수도 있다. 표는 저장 서브시스템 컴포넌트가 기록되는 동안 경험적 지식(empirical finding)으로부터 구성되었을 수 있다.
예시적인 처리 장치
도 1은 본 개시의 주제에 따라 실시형태를 구현하는데 사용될 수 있는 예시적인 처리 장치(100)의 블록도이다. 처리 장치(100)는 퍼스널 컴퓨터(PC), 핸드헬드 처리 장치 또는 다른 유형의 처리 장치일 수 있다. 처리 장치(100)는 중앙 처리 유닛(CPU)(120), 시스템 버스(121), 시스템 메모리(130), 저장 장치 인터페이스(140) 및 네트워크 인터페이스(170)를 포함할 수 있다.
저장 장치 인터페이스(140)는 비휘발성 저장 장치(149)와 인터페이스할 수 있다. 네트워크 인터페이스(170)는 일반적인 네트워크 접속(171)을 통해 네트워크(180)와 인터페이스할 수 있다.
CPU(120)는 명령을 해석하고 실행하는 하나 이상의 종래의 프로세스를 포함할 수 있다.
시스템 메모리(130)는 판독 전용 메모리(ROM)(131)과 랜덤 액세스 메모리(RAM)(132)를 포함할 수 있다. ROM(131) 또는 다른 유형의 정적 저장 장치는 CPU(120)를 위한 정적인 정보 및 명령을 저장할 수 있다. RAM(132) 또는 다른 유형의 동적 저장 장치는 명령뿐만 아니라 CPU(120)에 의해 명령의 실행 동안 사용되는 임시 변수 또는 기타 중간(intermediate) 정보를 저장할 수 있다.
ROM(131)은 예를 들어, 기본 입력 출력 시스템(BIOS)(133)와 같은 펌웨어를 포함할 수 있다. BIOS(133)는 처리 장치의 모니터 및 디스크 드라이버와 같은 다양한 컴포넌트 사이에서 데이터 전달을 지원하기 위해 처리 장치의 하드웨어와 함께 동작하는 루틴의 세트를 포함할 수 있다.
RAM(132)은 운영체제(134), CPU(120)를 위한 명령의 세트를 포함할 수 있는 프로그램 모듈(135) 및 프로그램 데이터(136)를 포함할 수 있다. 그러므로 CPU(120)는 RAM(132), ROM(131), 하드 디스크, 컴팩트 디스크(CD), 플래시 RAM, 또는 기타 유형적인(tangible) 기계 판독가능 매체와 같은 유형의(tangible) 기계 판독가능 매체에 저장된 명령을 실행할 수 있다.
운영 체제(134)는 시스템 버스(121) 및 저장 장치 인터페이스(140)를 통해 비휘발성 저장 장치(149)와 통신하기 위한 저장 서브시스템(137)을 포함할 수 있다.
시스템 버스(121)는 CPU(120), 시스템 메모리(130), 저장 장치 인터페이스(140) 및 네트워크 인터페이스(170)에 접속되어 그들 사이의 통신을 허용할 수 있다.
비휘발성 저장 장치(149)는 자기 디스크(141), 플래시 RAM 장치(142), 및/또는 기타 유형의 비휘발성 저장 장치를 포함할 수 있다. 비휘발성 저장 장치(149)는 예를 들어, 운영 체제(144), 프로그램 모듈(145) 및 프로그램 데이터(146)와 같은 정보뿐만 아니라 다른 정보를 저장할 수 있다.
네트워크(180)는 유선 또는 무선 네트워크일 수 있고 유선 또는 무선 수단을 통해 접속된 다수의 장치를 포함할 수 있다. 네트워크(180)는 네트워클 하나만 또는 다수의 상이한 네트워크를 포함할 수 있는데, 그들 중 일부는 상이한 유형의 네트워크일 수 있다. 네트워크(180)는 패킷 스위칭 네트워크, 무선 네트워크, ATM 네트워크, 프레임 릴레이(Frame Relay) 네트워크, 광 네트워크, PSTN(Public Switched Telephone Network), 위성 네트워크, 인터넷, 인트라넷, 기타 유형의 네트워크 또는 상기의 여하한 결합을 포함할 수 있다.
도 2는 본 개시의 주제에 따른 실시형태에서 사용될 수 있는 비휘발성 블록 저장 장치(149) 중 하나의 예시적인 블록도이다. 비휘발성 저장 장치(149)는 버스(210), 프로세서(220), RAM(230), ROM(240), 비휘발성 매체(250), 통신 인터페이스(260), 및 하나 이상의 센서(센서(들))(270)을 포함할 수 있다. 버스(210)는 프로세서(220), RAM(230), ROM(240), 비휘발성 매체(250), 통신 인터페이스(260) 및 센서(들)(270)를 접속할 수 있다.
프로세서(220)는 명령을 해석하고 실행하는 하나 이상의 프로세서를 포함할 수 있다. RAM(230) 또는 다른 유형의 동적 저장 장치는 명령뿐만 아니라 프로세서(220)에 의해 명령의 실행 동안 사용되는 임시 변수 또는 기타 중간 정보를 저장할 수 있다. ROM(240) 또는 다른 유형의 정적 저장 장치는 프로세서(220)를 위한 정적 정보 및 명령을 저장할 수 있다. 다양한 실시형태에서, ROM(240)은 비휘발성 매체(250)에 대해 처리 장치 동작을 모니터링하고 전술한 바와 같이 처리 장치에 정보 또는 피드백을 제공하기 위한 명령 또는 펌웨어를 포함할 수 있다.
비휘발성 매체(250)는, 예를 들어 플래시 RAM, 디스크, 또는 기타 비휘발성 매체와 같이 데이터를 블록으로 저장할 수 있는 여하한 비휘발성 매체일 수 있다.
통신 인터페이스(260)는, 프로그램가능 호스트 제어기 인터페이스를 통해 비휘발성 블록 저장 장치(149) 중 하나로의 액세스를 저장 장치 인터페이스(140)에 제공하기 위한 인터페이스일 수 있는데, 이는 커맨드 프로토콜을 운반하는 저장 버스 전송(transport)을 구동할 수 있다.
센서(270)는, 예를 들어, 온도 센서, 진동 센서, 가속도계(accelerometer) 또는 기타 유형의 센서와 같이 환경 조건을 모니터링 및 보고하기 위한 하나 이상의 센서를 포함할 수 있다. 센서(270)는, 프로세서(220)가 접속된 처리 장치에 환경 조건에 관한 정보를 보고할 수 있도록, 환경 조건에 관한 정보를 RAM(230), 비휘발성 매체(250) 또는 기타 동적 저장소로 수집할 수 있다.
예시적인 동작 환경
도 3은 본 개시의 주제에 따른 실시형태를 위한 예시적인 동작 환경(300)을 도시한다. 동작 환경(300)은 네트워크(302), 네트워크(302)에 접속된 처리 장치(100), 처리 장치(100)가 접속되는 비휘발성 블록 저장 장치(BSD)(block storage device)(306), 및 네트워크(302)에 접속되는 서버(304)를 포함할 수 있다.
네트워크(302)는 유선 또는 무선 네트워크일 수 있고, 유선 또는 무선 수단을 통해 접속된 다수의 장치를 포함할 수 있다. 네트워크(302)는 단 하나의 네트워크 또는 다수의 상이한 네트워크를 포함할 수 있고, 이들 중 일부는 상이한 유형의 네트워크일 수 있다. 네트워크(302)는 패킷 스위칭 네트워크, 무선 네트워크, ATM 네트워크, 프레임 릴레이 네트워크, 광 네트워크, PSTN, 위성 네트워크, 인터넷, 인트라넷, 기타 유형의 네트워크 또는 상기의 여하한 결합을 포함할 수 있다.
일 실시형태에서, 처리 장치(100)는 BSD(306)에 대한 정보를 요청하기 위해 네트워크(302)를 통해 서버(304)에 접속할 수 있다. 서버(304)는 비휘발성 블록 저장 장치에 관한 데이터베이스 서비스를 제공할 수 있고 BSD(306)에 관한 정보로 처리 장치(100)로부터의 요청에 응답할 수 있다. 정보는 BSD(306)의 성능 특성, BSD(306)에 기록할 때 사용할 기록 패턴, BSD(306)에 기록할 때 회피할 기록 패턴, 및/또는 BSD(306)에 대한 부정적인 영향을 회피 또는 감소시키기 위한 기타 정보를 포함할 수 있다. 처리 장치(100)는 요청된 정보를 수신할 수 있고 BSD(306)를 더 효율적으로 이용하고 BSD(306)에 대한 부정적인 영향을 회피 또는 감소시키기 위해 정보를 사용할 수 있다.
일부 실시형태에서, 처리 장치(100)는 서버(306)로부터 정보를 요청하지 않을 수 있고 네트워크(302)에 접속되거나 접속되지 않을 수 있다. 대신, 처리 장치(100)는 BSD(306)로부터 피드백을 수신할 수 있다. 피드백은 BSD(306)로부터 비동기적으로 전송될 수 있거나, 처리 장치(100)로부터의 폴링을 수신하는 것에 응답하여 전송될 수도 있거나, 또는 처리 장치(100) 내의 하드코딩된 표로부터 제공될 수 있다. 피드백은 BSD(306)의 성능 특성, 센서 정보, BSD(306) 의 사용에 대한 통계 정보, BSD(306)가 처리 장치(100)에게 사용하도록 요청하고 있는 다수의 사전정의된 프로파일 중 하나에 대한 정보, 및/또는 기타 정보를 포함할 수 있다. 처리 장치(100)는 BSD(306)를 더 효율적으로 사용하기 위해 및/또는 BSD(306)에 대한 부정적인 영향을 감소시키기 위해 피드백을 사용할 수 있다.
예시적인 처리
도 4는 본 개시의 주제에 따른 실시형태에서 비휘발성 블록 저장 장치(BSD)에 접속된 처리 장치에 의해 수행될 수 있는 예시적인 프로세스를 도시하는 흐름도이다. 프로세스는 처리 장치 상에서 실행되는 운영 체제의 저장 서브시스템 컴포넌트가 BSD를 발견하는 것으로 시작할 수 있다(동작 402). 저장 서브시스템 컴포넌트는 접속된 BSD로부터 검출되는 전기 신호, BSD로부터 수신되는 커맨드 완료에 기인하여 또는 기타 방법을 통해 BSD를 발견할 수 있다.
그러면 저장 서브시스템 컴포넌트는 BSD가 피드백을 제공할 수 있는지 여부를 판단할 수 있다(동작 404). 저장 서브시스템 컴포넌트는 BSD의 유형, BSD에 의해 제공되는 식별자에 기초하여 또는 기타 방법을 통해 판정을 할 수 있다. 저장 서브시스템 컴포넌트가 BSD가 피드백을 제공할 수 없다고 판정하면, 저장 서브시스템 컴포넌트는 처리 장치에서 실행되는 운영체제가 BSD의 특성에 관한 정보를 갖는지 여부를 판정할 수 있다(동작 405). 저장 서브시스템 컴포넌트가 운영 체제가 BSD의 특성에 관한 정보를 갖는다고 판정하면, 프로세스는 완료될 수 있다.
그렇지 않으면, 저장 서브시스템 컴포넌트는 네트워크를 통해 데이터베이스 서비스를 제공하는 원격 서버로부터 BSD의 성능 특성을 요청할 수 있다(동작 406). 그 후 저장 서브시스템 컴포넌트는 원격 서버로부터 BSD 성능 특성을 설명하는 정보를 수신할 수 있다(동작 408). BSD 성능 특성은 사용할 하나 이상의 I/O 패턴의 유형의 표시, 예를 들어 많은 I/O 동작을 단일 데이터 I/O 동작으로 집합(데이터가 거래적(transitional)이거나 민감하지 않다고 가정)하는 것 및 기타 큐잉 방법과 같은, 사용할 하나 이상의 큐잉(queuing) 방법의 표시, 회피할 I/O 패턴의 표시, 회피할 큐잉 방법의 표시 및/또는 기타 정보를 포함할 수 있다.
처리 장치의 메모리는 그 내부에 다수의 사전 정의된 프로파일을 저장할 수 있다. 사전정의된 프로파일 각각은 BSD와 통신하는 때의 처리 장치의 행동을 정의할 수 있다. 예를 들어, 기타 처리 장치 행동뿐만 아니라, 기록 패턴은 사전 정의된 프로파일 중 적어도 일부와 연관될 수 있고, 큐잉 방법은 적어도 일부의 사전정의된 프로파일에 연관될 수 있다. 저장 서브시스템 컴포넌트는, 사용할 현재의 프로파일로서, 사전정의된 프로파일 중 수신된 성능 특성에 가장 근접하게 대응하는 것을 선택할 수 있다(동작 410). 프로세스는 이제 종료될 수 있다.
동작 404 동안 저장 서브시스템 컴포넌트가 BSD가 피드백을 제공한다고 판정하면, 저장 서브시스템 컴포넌트는 BSD를 폴링할지 여부를 판정할 수 있다(동작 412). 판정은 BSD의 유형, BSD에 의해 제공되는 식별자에 기초하거나 기타 방법으로 이루어질 수 있다. 저장 서브시스템 컴포넌트가 BSD가 폴링되어야 한다고 판정하면, 저장 서브시스템 컴포넌트는 BSD를 폴링하기 위해 폴링 프로세스를 시작할 수 있다(동작 414). 저장 서브시스템 컴포넌트는 BSD를 주기적으로 폴링하거나 BSD와의 입력/출력 활동에 기초하여 부정기적 시간 간격으로 폴링할 수 있다. 폴링 프로세스 동안, BSD는 처리 장치로부터의 폴링을 수신하는 것에 응답하여 피드백을 제공할 수 있다. 프로세스는 그 후 종료될 수 있다.
저장 서브시스템 컴포넌트가 BSD가 폴링되지 않아야 한다고 판정하는 경우, 저장 서브시스템 컴포넌트는 BSD가 피드백을 비동기적으로 제공한다고 가정할 수 있다. 프로세스는 그 후 완료될 수 있다.
도 5는 BSD로부터 입력이 수신되는 때에 저장 서브시스템 컴포넌트에 의해 수행될 수 있는 예시적인 프로세스를 도시하는 흐름도이다. 프로세스는 처리 장치의 운영체제의 저장 서브시스템 컴포넌트가 BSD로부터 입력을 수신하는 것으로 시작할 수 있다(동작 502). 저장 서브시스템 컴포넌트는 그 후 수신된 입력이 폴링 응답인지(처리 장치가 BSD를 폴링하는 경우) BSD로부터의 비동기적으로 제공되는 피드백인지(처리 장치가 BSD를 폴링하지 않지만 BSD가 피드백을 제공하는 경우)를 판정할 수 있다(동작 504).
저장 서브시스템 컴포넌트가 수신된 입력이 폴링 응답이나 비동기적으로 제공되는 피드백이 아니라고 판정하면, 저장 서브시스템 컴포넌트는 BSD로부터의 입력이 BSD에 대한 입력/출력과 연관된다고 가정할 수 있고 처리 장치는 입력/출력 처리를 변화 없이 계속 수행할 수 있다(동작 506). 그리고 프로세스는 완료될 수 있다.
동작 504 동안, 저장 관리자 컴포넌트가 입력이 폴링 응답이거나 비동기적으로 제공되는 피드백이라고 판정하면, 저장 서브시스템 컴포넌트는 수신된 입력을 분석할 수 있다(동작 508). 저장 서브시스템 컴포넌트는 수신된 입력에 기초하여 여하한 행동을 취할지 여부를 판정할 수 있다(동작 510).
저장 서브시스템 컴포넌트는 수신된 입력의 내용 및 저장 관리자 컴포넌트의 현재 상태에 기초하여 행동을 취할지 여부를 판정할 수 있다. 저장 서브시스템 컴포넌트의 현재 상태는, 예를 들어, 사용되고 있는 현재의 사전정의된 프로파일, 사용되고 있는 특정 I/O 패턴, 사용되고 있는 큐잉 방법, BSD의 입력/출력 제어기에 대한 직접 메모리 액세스(DMA)가 인에이블 또는 디스에이블되어 있는지 여부, 및/또는 기타 정보를 포함할 수 있다. 수신된 입력의 내용은, 예를 들어, 기록 요청 당 기록의 수(기록 증폭(write amplification)이라고도 알려짐), 특정 시간 인터벌 동안 수행되는 짧은 데이터 기록의 수, 특정 LBA(logical block address) 범위에 대해 특정 시간 인터벌 동안 수행되는 데이터 기록의 수, 및 기타 통계 또는 성능 관련 정보와 같은 통계 정보 및/또는 성능 관련 정보와 같은 정보를 포함할 수 있다.
수신된 입력의 내용은 하나 이상의 센서에 의해 검출된 동작 환경 데이터 및 기타의 또는 다른 환경 데이터도 포함할 수 있다. 동작 환경 데이터는, 예를 들어, 온도 데이터, 진동 관련 데이터, 가속도계 관련 데이터, 및 기타 데이터를 포함할 수 있다. 일 실시형태에서, BSD는 BSD가 마지막으로 사용된 이후의 대략적인 시간을 판정할 수 있고 대략적인 시간에 대한 정보를 피드백에 포함시킬 수 있다. 일 구현에서, BSD는 BSD의 하나 이상의 특정 LBA의 메모리 셀에서 남아 있는 전하의 양을 측정함으로써 대략적인 시간을 판정할 수 있다. Bovee 등의 공개 미국 특허 출원 2007/0233609은 BSD의 하나 이상의 LBA의 하나 이상의 메모리 셀에 남아 있는 전하의 양을 측정한 것에 기초하여 대략적인 시간 기간의 경과를 판정하는 한 가지 방법을 개시한다. 다른 실시형태에서, BSD는 다른 방법을 통해 대략적인 시간 기간의 경과를 판정할 수 있다.
일부 실시형태에서, 피드백은 다수의 사전정의된 프로파일 중 하나의 표시를 포함할 수 있는데, 프로파일 각각은 BSD으로부터의 입력 및/또는 BSD로의 출력에 관한 처리 장치의 개별 행동을 정의할 수 있다. BSD가 희망 개별 행동에 직접 매칭되는 사전정의된 프로파일을 찾지 못하면, BSD는 사전 정의된 프로파일 중 희망 행동을 가장 근접하게 정의하는 것의 표시를 피드백에 포함시킬 수 있다.
동작 510동안 저장 서브시스템 컴포넌트가 아무런 행동도 취해지지 않는다고 결정하면, 프로세스는 완료될 수 있다. 그렇지 않으면, 저장 서브시스템 컴포넌트는 다른 사전정의된 프로파일에 따를 것인지 여부를 판정할 수 있다(동작 512).
저장 관리자 컴포넌트가 사전정의된 프로파일이 변경될 것이 아니라고 판정하는 경우, 저장 서브시스템 컴포넌트는 저장 관리자 컴포넌트의 현재 상태 및 BSD로부터의 수신된 피드백에 기초하여 다수의 행동 중 어떤 것을 취할 것인지를 결정할 수 있다(동작 514).
일부 실시형태에서, 피드백은, 도과(crossed) 또는 도달된 중요한 성능 관련 문턱, 도과 또는 도달된 중요한 센서 관련 문턱 또는 기타 정보와 같은 BSD 내의 중요한 조건에 관한 정보를 제공할 수 있는 경고(alert)를 포함할 수 있다. 수신된 피드백이 경고를 포함하는 경우, 동작 514 동안, 저장 서브시스템 컴포넌트는 수신된 경고에 기초하여 취할 행동을 결정할 수 있다.
저장 서브시스템 컴포넌트는 결정된 행동을 취할 수 있다(동작 516). 결정된 행동은 BSD에 대한 기록 패턴 변경, BSD로의 출력에 관한 큐잉 방법의 변경, BSD로부터의 입력 또는 BSD로의 출력에 대한 직접 메모리 액세스(DMA)의 디스에이블 또는 인에이블, BSD로 데이터를 출력하기 위해 처리 장치에 의해 사용되는 큐잉 방법의 하나 이상의 파라미터의 조정, 사용자에게 BSD를 사용을 중단하라고 알리는 것, 또는 다른 행동을 포함할 수 있다. 그리고 프로세스는 완료될 수 있다.
동작 512 동안 저장 서브시스템 컴포넌트가 프로파일이 변경되어야 한다고 판정하는 경우, 저장 서브시스템 컴포넌트는, 다수의 사전정의된 프로파일 중 어떤 것이 제공된 피드백에 의해 표시되는 바와 같은 BSD의 상태에 가장 근접하게 매칭되거나 어드레스(address)하는지를 결정할 수 있다(동작 518). 그러면 처리 장치는, BSD에 대한 저장 서브시스템 컴포넌트의 행동을 변경하기 위해 찾아진 프로파일로 현재의 프로파일을 설정할 수 있다(동작 520). 그리고 프로세스는 완료될 수 있다.
도 6은 본 개시의 주제에 따른 실시형태에서 BSD에 의해 수행될 수 있는 예시적인 처리를 도시하는 흐름도이다. 흐름도에 의해 도시된 행동을 수행하기 위한 명령은 BSD의 ROM 또는 다른 정적 저장소 내에 저장된 펌웨어에 포함될 수 있다.
프로세스는 BSD가, 예를 들어 입력 및 출력 동작과 같은 처리 장치로부터의 동작을 모니터링하는 것으로 시작할 수 있다(동작 602). BSD는 예를 들어 판독 패턴 및 기록 패턴과 같은 처리 장치의 I/O 패턴에 대한 통계 및 히스토그램을 유지할 수 있다(동작 604). BSD는, 판독 패턴과 기록 패턴을 사전결정된 템플릿(template)에 매칭시키려고 시도하고 I/O 요청의 임의적인 프로세스를 대략적으로 묘사하는 통계 정보를 수집함으로써 이를 달성할 수 있다. 예를 들어 정규 분포와 같은 사전정의된 분포 또는 다른 분포를 가정하면, 통계 정보의 예는 LBA의 구역으로의 작은 데이터 기록의 밀도, 작은 데이터 기록의 빈도, 및 과도하게 긴 부분 데이터 기록을 포함하지만 이에 제한되지 않는다. 일부 실시형태에서, BSD의 펌웨어는 랜덤 분포의 하드코딩된 묘사를 포함할 수 있다. 다른 실시형태에서, 펌웨어는 필요한 때에 랜덤 분포의 묘사를 생성하기 위한 명령을 포함할 수 있다.
그 후 BSD는 특정 정도의 정확도가 달성될 수 있는, 처리 장치로부터의 충분한 양의 동작이 관측되었는지 여부를 판정할 수 있다(동작 606). BSD가 처리 장치로부터 관측된 동작의 양이 충분하다고 판정하면, BSD는 문턱이 도과 또는 도달되었는지 여부를 판정할 수 있다(동작 608). 예를 들어, 1세대 소비자 플래시 디스크는 긴 연속적인(sequential) 기록 및 크기 정렬된(size aligned) 랜덤 판독을 위해 설계된다. BSD가 1세대 소비자 플래시 디스크를 포함하고 BSD가, 처리 장치가 플래시 디스크로의 작은 랜덤 기록의 과도한 부하를 이용한다(이는 플래시 디스크가 기록 동작을 더 느리게 수행하고 조기에 마모(wear out)되도록 할 것이다)고 관측하면, BSD는 처리 장치로부터의 관측된 기록의 빈도 및 크기가 안전 문턱을 넘는다고 보고할 수 있다.
BSD가 문턱이 도과 또는 도달되었다고 판정하면, BSD는 처리 장치로 피드백을 제공할 수 있다(동작 610). 전술한 바와 같이, 피드백은 통계 정보, 사전정의된 프로파일의 표시, 기록 패턴의 표시, 큐잉 방법의 표시 또는 기타 처리 장치가 BSD로의 부정적인 영향을 감소시키기 위해 BSD에 대한 행동을 적응시키는데 사용할 수 있는 정보를 포함할 수 있다.
동작 608 동안 문턱이 도과되었다고 판정한 후에, 또는 동작 610 동안 처리 장치로 피드백을 보낸 후에, BSD는 하나 이상의 센서에 대한 정보를 모니터링할 수 있다(동작 612). BSD는 하나 이상의 센서로부터의 모니터링되는 정보를 추적할 수 있다(동작 614). BSD는 그 후 특정 정도의 정확도가 달성될 수 있도록 하나 이상의 센서로부터의 충분한 정보가 관측되었는지 여부를 판정할 수 있다(동작 616). BSD가 하나 이상의 센서에 관한 관측된 정보의 양이 충분하지 않다고 판정하면, BSD는 동작 602를 반복할 수 있다. 그렇지 않으면, BSD는 센서 문턱이 도과되었는지 여부를 판정할 수 있다(동작 618). 예를 들어, 온도 센서는 온도가 너무 높다고 보고할 수 있고, 또는 진동 센서는 감지된 진동의 양이 너무 높거나 및/또는 너무 심각하다고 보고할 수 있다. 동작 618 동안 BSD가 센서 문턱이 도과되었다고 판정하면, BSD는 처리 장치로, 센서 문턱이 도과되었음을 나타내는 정보를 포함하는 피드백을 전송할 수 있다(동작 620). BSD는 그 후 동작 602을 반복할 수 있다.
기타
상술한 실시형태 중 일부가, BSD로의 부정적인 영향을 감소시키도록 행동을 적응시키기 위해 채용될 수 있는, 처리 장치의 저장 서브시스템 컴포넌트로의 피드백을 제공하는 BSD 를 설명하지만, BSD 및/또는 저장 서브시스템 컴포넌트는 그들 각각의 행동을 더 적응시킬 수 있다. 예를 들어, 저장 서브시스템 컴포넌트는 BSD의 응답 시간을 모니터링할 수 있고, 과도하게 긴 응답 시간을 관측한 때에 저장 서브시스템 컴포넌트는 사전 정의된 프로파일, 기록 패턴, 판독 패턴을 변경하거나, BSD에 대한 DMA의 사용을 디스에이블 또는 인에이블하거나, 기록 버퍼의 크기를 변경하거나, 큐의 깊이(depth)를 변경하거나, 큐잉 방법을 변경하거나, 기타 변경을 가함으로써 적응할 수 있다.
BSD는 처리 장치보다 BSD의 성능 특성을 더 내밀하게 인식하고, 그에 따라, 처리 장치로부터의 짧은 데이터 기록을 긴 데이터 기록으로 집합하거나, 예를 들어 온도 정보 또는 기타 정보와 같이 하나 이상의 센서에 의해 보고된 정보에 기초하여 BSD의 일부를 끄는 것(turning off)을 포함하지만 이에 제한되지 않는 행동을 취함으로써 행동을 적응시킬 수 있다.
또한, 상이한(heterogeneous) 처리 장치가 BSD를 이용할 수 있고 BSD에 의해 제공되는 피드백에 기초하여 그들 각각의 행동을 적응시킬 수 있도록, BSD로부터의 피드백에서 제공되는 정보는 이전에 동의된 형식일 수 있다.
결론
주제가 구조적 특성 및/또는 방법적 행동에 특정한 언어로 설명되었지만, 청부된 청구범위의 주제는 상술한 구체적인 특성 또는 행동으로 제한되어야 하는 것은 아님을 인식할 것이다. 오히려 상술한 구체적인 특성 및 행동은 청구항을 구현하기 위한 예시적인 형태로서 개시된다.
설명된 실시형태의 다른 구성이 이 개시의 범위의 일부이다. 예를 들어, 다른 실시형태에서, 도 4-6에서 도시된 프로세스와 같은 프로세스에 의해 수행되는 행동의 순서는 다를 수 있고, 다른 순서로 수행될 수 있고, 및/또는 추가의 또는 다른 행동을 포함할 수 있다.
따라서, 주어진 구체적인 예시가 아니라 첨부된 청구범위 및 그 법률적 균등물이 실시형태를 정의한다.

Claims (15)

  1. 처리 장치(100)에서 실행되는 운영체제(134)에 포함되는 저장 서브시스템(137)을 비휘발성 블록 저장 장치(141, 142)에 적응시키기 위한 기계 구현 방법으로서,
    상기 저장 서브시스템에 의해, 상기 비휘발성 블록 저장 장치 또는 원격 소스로부터 상기 비휘발성 블록 저장 장치에 대한 정보를 획득하는 단계(502, 406-408)와,
    상기 저장 서브시스템에 의해, 상기 획득된 상기 비휘발성 블록 저장 장치에 대한 정보에 기초하여 상기 비휘발성 블록 저장 장치에 액세스하기 위한 입력/출력 패턴을 적응시키는 단계(516)를 포함하는
    기계 구현 방법.
  2. 제 1 항에 있어서,
    상기 비휘발성 블록 저장 장치에 대한 정보를 획득하는 단계는,
    네트워크를 통해 데이터베이스 서비스로부터, 상기 비휘발성 저장 장치에 대한 성능 특성에 관한 데이터를 요청하는 단계와,
    상기 데이터베이스 서비스로부터 상기 비휘발성 블록 저장 장치의 상기 성능 특성에 관한 데이터를 수신하는 단계를 포함하고,
    상기 비휘발성 블록 저장 장치에 액세스하기 위한 상기 입력/출력 패턴을 적응시키는 단계는,
    상기 비휘발성 블록 저장 장치에 대한 상기 성능 특성에 관한 상기 수신된 데이터에 기초하여 복수의 사전정의된 프로파일 중 하나를 선택하는 단계-상기 복수의 사전정의된 프로파일 중 적어도 일부는 상기 비휘발성 블록 저장 장치에 액세스하기 위한 개개의 입력/출력 패턴을 정의함-를 포함하는
    기계 구현 방법.
  3. 제 1 항에 있어서,
    상기 비휘발성 블록 저장 장치에 대한 정보를 획득하는 단계는,
    성능 정보 및 환경 정보를 포함하는 정보 유형의 일 군(group)으로부터 적어도 하나의 유형의 정보를, 상기 비휘발성 블록 저장 장치로부터 수신하는 단계를 포함하고,
    상기 비휘발성 블록 저장 장치에 액세스하기 위한 상기 입력/출력 패턴을 적응시키는 단계는,
    상기 수신된 적어도 하나의 유형의 정보에 기초하여 복수의 사전정의된 프로파일 중 하나를 현재 프로파일로서 설정하는 단계-상기 복수의 사전정의된 프로파일 중 상기 하나는, 상기 복수의 사전정의된 프로파일 중, 상기 적어도 하나의 유형의 정보에 의해 표시되는 바와 같은 상기 비휘발성 블록 저장 장치의 상태를 가장 근접하게 어드레스(address)하는 프로파일임-를 포함하는
    기계 구현 방법.
  4. 제 1 항에 있어서,
    상기 비휘발성 블록 저장 장치에 대한 정보를 획득하는 단계는,
    상기 비휘발성 블록 저장 장치에 액세스하는 때에 적응시킬 저장 서브시스템 컴포넌트에 대한 상기 입력/출력 패턴을 표시하는 상기 비휘발성 블록 저장 장치로부터의 통신을 수신하는 단계를 포함하는
    기계 구현 방법.
  5. 제 1 항에 있어서,
    상기 비휘발성 블록 저장 장치에 액세스하기 위한 상기 입력/출력 패턴을 적응시키는 단계는,
    상기 비휘발성 블록 저장 장치에 대한 상기 수신된 정보에 기초하여 복수의 사전정의된 프로파일 중 하나를 선택하는 단계-상기 복수의 사전정의된 프로파일 중 적어도 일부는 상기 비휘발성 블록 저장 장치에 액세스하기 위한 개개의 입력/출력 패턴을 정의함-을 포함하고,
    상기 복수의 사전정의된 프로파일은 개개의 복수의 큐잉 방법과 연관되는
    기계 구현 방법.
  6. 제 5 항에 있어서,
    상기 복수의 큐잉 방법 중 하나는
    복수의 입력/출력 동작으로부터 입력/출력 동작을 집합(aggregating)하는 것과, 상기 비휘발성 블록 저장 장치 상에서 상기 집합된 입력/출력 동작을 단일 입력/출력 동작으로서 수행하는 것을 포함하는
    기계 구현 방법.
  7. 제 1 항에 있어서,
    상기 비휘발성 블록 저장 장치에 대한 정보를 획득하는 단계는,
    상기 비휘발성 블록 저장 장치를 폴링(polling)하는 단계와,
    상기 폴링하는 단계에 응답하여 상기 비휘발성 블록 저장 장치에 대한 상기 정보를 수신하는 단계를 포함하는
    기계 구현 방법.
  8. 제 1 항에 있어서,
    상기 비휘발성 블록 저장 장치에 대한 정보를 획득하는 단계는,
    상기 비휘발성 블록 저장 장치에 대한 정보를 비동기적으로(asynchronously) 수신하는 단계를 포함하는
    기계 구현 방법.
  9. 제 1 항 내지 제 8 항 중 어느 한 항의 기계 구현 방법을 수행하기 위한 명령을 포함하는 유형의 기계 판독가능 매체(131, 132).
  10. 비휘발성 블록 저장 장치로서,
    프로세서(220)와,
    상기 프로세서에 접속된, 데이터를 저장할 수 있는 비휘발성 저장 매체(250)와,
    상기 프로세서에 접속된 정적 저장 장치(240)를 포함하고,
    상기 정적 저장 장치는 상기 프로세서를 위한 명령을 포함하고, 상기 명령은
    처리 장치로부터 동작의 패턴을 모니터링하기 위한(602) 명령과,
    상기 비휘발성 블록 저장 장치로의 기록 패턴을 조정하기 위해 상기 처리 장치에 의해 사용될 수 있는 정보를 포함하는 피드백을 상기 처리 장치에 제공하기 위한(610, 620) 명령을 포함하는
    비휘발성 블록 저장 장치.
  11. 제 10 항에 있어서,
    상기 정적 저장 장치는 상기 피드백 내에 동작 환경 정보를 포함시키기 위한 명령을 더 포함하는
    비휘발성 블록 저장 장치.
  12. 제 10 항에 있어서,
    상기 피드백을 상기 처리 장치에 제공하기 위한 명령은
    폴링을 수신하는 것에 응답하여 상기 처리 장치에 상기 피드백을 제공하기 위한 명령을 포함하는
    비휘발성 블록 저장 장치.
  13. 제 10 항에 있어서,
    상기 피드백은 사전정의된 프로파일을 포함하고, 상기 사전정의된 프로파일은 상기 비휘발성 블록 저장 장치에 대한 부정적인 영향을 회피 또는 감소시키거나 상기 비휘발성 블록 저장 장치의 일 태양을 강화하기 위하여 사용할 수 있는 상기 처리 장치에 대한 특정 행동을 정의하는
    비휘발성 블록 저장 장치.
  14. 제 10 항에 있어서,
    상기 피드백은 상기 비휘발성 저장 장치에 액세스하는 때에 상기 처리 장치에 의해 사용되지 않을 하나 이상의 입력/출력 패턴을 설명하는 정보를 포함하는
    비휘발성 블록 저장 장치.
  15. 제 10 항에 있어서,
    상기 정적 저장 장치는
    상기 비휘발성 저장 장치에 대한 부정적인 영향을 감소시키기 위해 상기 비휘발성 저장 매체에 액세스하는 패턴을 변경하기 위한 명령을 더 포함하는
    비휘발성 블록 저장 장치.
KR1020127000900A 2009-07-13 2010-07-06 비휘발성 블록 저장 장치로부터 처리 장치로의 건전성 보고 KR101683942B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/501,562 2009-07-13
US12/501,562 US8812770B2 (en) 2009-07-13 2009-07-13 Health reporting from non-volatile block storage device to processing device
PCT/US2010/041016 WO2011008586A2 (en) 2009-07-13 2010-07-06 Health reporting from non-volatile block storage device to processing device

Publications (2)

Publication Number Publication Date
KR20120036346A true KR20120036346A (ko) 2012-04-17
KR101683942B1 KR101683942B1 (ko) 2016-12-07

Family

ID=43428329

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020127000900A KR101683942B1 (ko) 2009-07-13 2010-07-06 비휘발성 블록 저장 장치로부터 처리 장치로의 건전성 보고

Country Status (10)

Country Link
US (3) US8812770B2 (ko)
EP (1) EP2454668B1 (ko)
JP (1) JP2012533132A (ko)
KR (1) KR101683942B1 (ko)
CN (1) CN102473130B (ko)
BR (1) BR112012000893A2 (ko)
CA (1) CA2766181A1 (ko)
RU (1) RU2012101109A (ko)
TW (1) TW201106367A (ko)
WO (1) WO2011008586A2 (ko)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012060824A1 (en) * 2010-11-02 2012-05-10 Hewlett-Packard Development Company, L.P. Solid-state disk (ssd) management
US10359949B2 (en) * 2011-10-31 2019-07-23 Apple Inc. Systems and methods for obtaining and using nonvolatile memory health information
US8991483B2 (en) 2012-07-30 2015-03-31 Cyrus Aspi Irani Apparatus and method for representative fluid sampling
KR102211126B1 (ko) * 2014-04-17 2021-02-02 삼성전자주식회사 동작 성능을 조절하는 메모리 시스템 및 메모리 시스템의 동작방법
CN104050071B (zh) * 2014-06-30 2017-02-08 苏州科达科技股份有限公司 存储设备失效预警方法及系统
CN109766302B (zh) * 2014-09-12 2022-09-16 华为技术有限公司 设备管理的方法和装置
US9830226B2 (en) * 2015-06-25 2017-11-28 Dell Products, L.P. Proactive fault avoidance
JP6414853B2 (ja) * 2015-12-14 2018-10-31 東芝メモリ株式会社 メモリシステムおよび制御方法
CN107229657A (zh) * 2016-03-25 2017-10-03 阿里巴巴集团控股有限公司 数据迁移方法及装置
US11003381B2 (en) * 2017-03-07 2021-05-11 Samsung Electronics Co., Ltd. Non-volatile memory storage device capable of self-reporting performance capabilities

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110238900A1 (en) * 2008-09-30 2011-09-29 Jin Gyu Heo Method of managing a solid state drive, associated systems and implementations

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6658202B1 (en) 1998-09-09 2003-12-02 Smartdisk Portable data transfer and mass storage device for removable memory modules
US7457897B1 (en) 2004-03-17 2008-11-25 Suoer Talent Electronics, Inc. PCI express-compatible controller and interface for flash memory
WO2001075618A2 (en) 2000-03-31 2001-10-11 Dataplay, Inc. Asynchronous input/output interface protocol
JP4071461B2 (ja) 2001-07-05 2008-04-02 大日本スクリーン製造株式会社 基板処理システム、基板処理装置、プログラム及び記録媒体
US7152142B1 (en) 2002-10-25 2006-12-19 Copan Systems, Inc. Method for a workload-adaptive high performance storage system with data protection
JP4479284B2 (ja) 2004-03-08 2010-06-09 株式会社日立製作所 計算機システムのモニタリングを設定する管理計算機及びシステム
WO2006037091A2 (en) 2004-09-28 2006-04-06 Storagedna, Inc. Managing disk storage media
US7757010B2 (en) 2006-04-28 2010-07-13 Mediatek Inc. Systems and methods for managing mass storage devices in electronic devices
JP2008112292A (ja) 2006-10-30 2008-05-15 Hitachi Ltd ストレージシステム及びストレージシステムの電源供給制御方法
KR100782113B1 (ko) 2006-11-13 2007-12-05 삼성전자주식회사 메모리 카드 시스템 및 그것의 호스트 식별 정보 전송 방법
US20080172519A1 (en) 2007-01-11 2008-07-17 Sandisk Il Ltd. Methods For Supporting Readydrive And Readyboost Accelerators In A Single Flash-Memory Storage Device
US8429677B2 (en) 2007-04-19 2013-04-23 Microsoft Corporation Composite solid state drive identification and optimization technologies
US8429328B2 (en) 2007-06-29 2013-04-23 Sandisk Technologies Inc. System for communicating with a non-volatile memory storage device
US20090055465A1 (en) 2007-08-22 2009-02-26 Microsoft Corporation Remote Health Monitoring and Control

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110238900A1 (en) * 2008-09-30 2011-09-29 Jin Gyu Heo Method of managing a solid state drive, associated systems and implementations

Also Published As

Publication number Publication date
US20140359206A1 (en) 2014-12-04
TW201106367A (en) 2011-02-16
WO2011008586A2 (en) 2011-01-20
KR101683942B1 (ko) 2016-12-07
WO2011008586A3 (en) 2011-03-31
CA2766181A1 (en) 2011-01-20
US9286211B2 (en) 2016-03-15
US9552273B2 (en) 2017-01-24
EP2454668A2 (en) 2012-05-23
RU2012101109A (ru) 2013-07-20
CN102473130A (zh) 2012-05-23
EP2454668B1 (en) 2018-10-17
US8812770B2 (en) 2014-08-19
JP2012533132A (ja) 2012-12-20
CN102473130B (zh) 2015-11-25
US20160124831A1 (en) 2016-05-05
BR112012000893A2 (pt) 2016-02-23
EP2454668A4 (en) 2012-11-28
US20110010487A1 (en) 2011-01-13

Similar Documents

Publication Publication Date Title
US9552273B2 (en) Health reporting from non-volatile block storage device to processing device
TWI740110B (zh) 在固態儲存驅動器陣列中的工作量適應超容量快取
TWI260498B (en) Method and apparatus to control memory usage
US20160283711A1 (en) eMMC Monitoring Method and Apparatus
US20140359624A1 (en) Determining a completion time of a job in a distributed network environment
JP2013509658A (ja) 将来の使用推量に基づく記憶メモリの割り当て
US10908839B2 (en) Storage device throttling amount of communicated data depending on suspension frequency of operation
CN108874324B (zh) 一种访问请求处理方法、装置、设备及可读存储介质
US11755447B2 (en) Predictive performance indicator for storage devices
EP2811410B1 (en) Monitoring record management method and device
CN111913656A (zh) 分布式共享储存系统中的计算机储存节点及方法
US11461036B2 (en) Technologies for logging and visualizing storage events
CN105242955A (zh) 一种虚拟机磁盘输入输出调度方法及系统
TW202144991A (zh) 用於收集儲存裝置統計量之系統及方法
CN115981956A (zh) Spdk服务进程监控方法、装置、设备、存储介质和程序产品
JP5853596B2 (ja) 半導体ディスク寿命監視装置
US10949096B2 (en) Method using logical based addressing for latency reduction
CN210984287U (zh) 一种测试单元、系统及控制器、存储设备
CN112860599A (zh) 数据缓存处理方法、装置以及存储介质
EP4231131A1 (en) Data storage method and device
US11416187B2 (en) Information processing system, information processing apparatus, and non-transitory computer readable medium
Khatri et al. NVMe and PCIe SSD Monitoring in Hyperscale Data Centers
CN116469442A (zh) 芯片数据保持时间的预测方法、装置及存储介质
CN118035058A (en) Method, device, equipment and medium for determining residual life
CN112231172A (zh) 一种日志监控和收集的方法和设备

Legal Events

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