KR20160018471A - 스토리지 미디어 성능을 높이는 시스템 - Google Patents

스토리지 미디어 성능을 높이는 시스템 Download PDF

Info

Publication number
KR20160018471A
KR20160018471A KR1020157030789A KR20157030789A KR20160018471A KR 20160018471 A KR20160018471 A KR 20160018471A KR 1020157030789 A KR1020157030789 A KR 1020157030789A KR 20157030789 A KR20157030789 A KR 20157030789A KR 20160018471 A KR20160018471 A KR 20160018471A
Authority
KR
South Korea
Prior art keywords
data
write
media devices
storage
read
Prior art date
Application number
KR1020157030789A
Other languages
English (en)
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 KR20160018471A publication Critical patent/KR20160018471A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1642Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
    • 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/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
    • 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/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • 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
    • 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
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • G06F13/1626Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • G06F2212/502Control mechanisms for virtual memory, cache or TLB using adaptive policy
    • 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/7201Logical to physical mapping or translation of blocks or pages
    • 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/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
    • 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/7208Multiple device management, e.g. distributing data over multiple flash devices

Abstract

스토리지 액세스 시스템은 일관성 없는 액세스 지연을 갖는 스토리지 미디어에 대해 일관된 메모리 액세스 시간을 제공하고 쓰기동작 동안 가변 시간 지연에 의해 야기된 병목현상을 줄인다. 데이터는 쓰기동작이 다른 모든 메모리 액세스 동작들을 차단하는 것을 막기 위해 다수의 다른 미디어 디바이스들에 반복적으로 작성된다. 동일 데이터의 다수의 복제는로 연이은 읽기 동작이 허용되어 미디어 디바이스들이 현재 쓰기동작을 제공하는 것을 막는다. 쓰기동작은 스토리지 미디어에 전체 쓰기성능을 향상시키도록 함께 집적될 수 있다. 성능 인덱스는 얼마나 많은 미디어 디바이스들이 동일한 데이터를 저장하는지 결정한다. 가능한 동시 읽기 개수는 데이터를 저장한 미디어 디바이스의 개수에 따라 변한다. 따라서, 성능 인덱스는 스토리지 미디어에 있는 데이터에 대한 다른 선택가능한 QoS(Quality of Service)를 제공한다.

Description

스토리지 미디어 성능을 높이는 시스템{SYSTEM FOR INCREASING STORAGE MEDIA PERFORMANCE}
플래시 SSD(Solid State Devices)는 많은 측면에서 종래 회전 디스크 드라이버와 다르다. 플래시 SSD는 소정의 바람직하지 못한 측면들이 있다. 특히, 플래시 SSD 디바이스는 랜덤쓰기성능이 나빠지는데 통상적으로 상기 성능은 시간이 지남에 따라 열화되기 때문이다. 플래시 미디어는 쓰기 싸이클의 횟수 제한(결국 디바이스를 "마모"시키게 하는 스토리지 기기의 물리적 한계)이 있기 때문에, 쓰기성능도 또한 예상할 수 없다.
내부적으로, 플래시 SSD는 "웨어 레벨링"이라고 하는 프로세스에서 미디어의 작성된 부분을 주기적으로 리밸런스시킨다. 이 프로세스는 스토리지 기기가 균일하게 사용되고 이에 따라 디바이스의 사용수명을 연장시키는 것을 보증한다. 그러나, 웨어 레벨링은 스토리지 시스템의 사용자가 언제 그리고 얼마나 오래 이런 배경 동작들이 발생하는지에 대해 기대하거나 명확히 알지 못하게 한다(투명성 결여). 리밸런스 동작의 또 다른 예는 플래시 미디어 어드레스 공간에 걸쳐 사용자 쓰기의 랜덤한 특성에 의해 야기된 주기적 디스크 조각모음이다.
예컨대, 사용자는 이들 웨어 레벨링 또는 조각모음 동작이 수행되는 동안 플래시 SSD에 있는 데이터에 액세스할 수 없고 플래시 SSD 디바이스는 이들 배경동작들이 일어나고 있을 때 사전 통보를 제공하지 않는다. 이는 애플리케이션이 스토리지 이용불능을 예상하지 못하게 하고 플래시 SSD 리밸런스 동작 동안 다른 태스크를 스케쥴링하지 못하게 한다. 그 결과, 플래시 디바이스의 상대적으로 느리고 일관성 없는 쓰기 시간으로 인해 상대적으로 더 빠른 읽기동작들에 대해 병목현상이 발생한다. 판매자들은 모든 배경동작들을 근원적인 이벤트의 타입, 기간 또는 빈도를 명시하지 않고 대표적으로 "가비지 컬렉션"이라 한다.
본 명세서에서, 복수의 스토리지 미디어 디바이스들과, 쓰기동작을 위해 데이터를 수신하고, 상기 데이터를 쓰기 위한 3개 이상의 미디어 디바이스들의 그룹을 식별하며, 식별된 그룹에 있는 3개 이상의 미디어 디바이스들 각각에 상기 데이터를 연속으로 쓰도록 구성된 구성된 프로세서를 갖는 시스템이 기술된다.
프로세서는 읽기동작을 수신하고 데이터가 현재 작성되고 있는 미디어 디바이스들 중 하나를 식별하며; 데이터가 현재 작성되지 않는 그룹에 있는 2개 이상의 미디어 디바이스로부터 읽기동작과 관련된 어드레스 위치들로부터 데이터를 동시에 읽도록 더 구성된다.
일태양으로, 미디어 디바이스는 가변 쓰기 지연을 가질 수 있고; 프로세서는 데이터를 쓰기 위해 사용중이지 않은 그룹에 있는 미디어 디바이스들 중 다수의 디바이스들로부터 읽기동작과 관련된 데이터를 동시에 읽음으로써 상기 미디어 디바이스에 대해 읽기 지연을 정규화하도록 더 구성된다. 미디어 디바이스는, 가령, 플래시 메모리 디바이스, 하드디스크 디바이스 등일 수 있다.
다른 태양으로, 프로세서는 쓰기동작을 위해 제 1 데이터 세트를 함께 집적하고, 상기 제 1 데이터 세트와 관련된 제 1 성능 인덱스를 식별하며, 제 1 성능 인덱스와 관련된 미디어 디바이스 그룹에 있는 제 1 개수의 미디어 디바이스들이 집적된 제 1 데이터 세트의 작성에 의해 차단되지 않고 읽어질 수 있게 상기 집적된 제 1 데이터 세트를 연속한 물리적 어드레스 위치들에 작성하도록 더 구성될 수 있다.
또한, 프로세서는 제 2 쓰기동작을 위해 제 2 데이터 세트를 함께 집적하며, 상기 제 2 데이터 세트와 관련된 제 2 성능 인덱스를 식별하고, 제 2 성능 인덱스와 관련된 미디어 디바이스의 추가 그룹에 있는 제 2 개수의 미디어 디바이스들이 집적된 제 2 데이터 세트의 작성에 의해 차단되지 않고 읽어질 수 있게 상기 집적된 제 2 데이터 세트를 연속한 물리적 어드레스 위치들에 작성하도록 더 구성될 수 있다. 동일한 물리적 어드레스는 각각의 미디어 디바이스들에 데이터를 저장하도록 사용될 수 있다.
일태양으로, 집적된 제 1 데이터 세트와 집적된 제 2 데이터 세트의 크기는 가변적이고 쓰기동작이 식별되는 경우를 기초로 한다.
더욱이, 프로세서는 쓰기동작을 위해 성능 인덱스를 식별하고, 성능 인덱스를 기초로 동시 읽기동작을 제공하기 위해 그룹에 있는 미디어 디바이스들의 그룹에 있는 2개 이상의 다수의 미디어 디바이스들을 식별할 수 있다. 상기 프로세서는 동시 읽기동작을 제공하기 위해 2개 이상의 식별된 다수의 미디어 디바이스들 이외에 하나의 추가 미디어 디바이스에 데이터를 쓰도록 더 구성될 수 있다.
프로세서는 특정 쓰기동작을 위한 성능 타겟을 식별하고 상기 성능 타겟을 식별된 그룹에서 미디어 디바이스들의 개수 또는 미디어 디바이스들의 읽기 액세스 시간과 같은 특정 성능 인덱스로 맵핑하도록 또한 구성될 수 있다.
식별된 그룹에 있는 각각의 미디어 디바이스들 중 하나에서 개별적으로 액세스가능한 위치들을 구분하기 위해 쓰기동작시 사용된 쓰기 어드레스를 맵핑시키는 인디렉션 테이블을 저장하기 위해 메모리가 제공될 수 있다.
또 다른 태양으로, 스토리지 소자 및 스토리지 액세스 시스템을 구비하고, 상기 스토리지 액세스 시스템은: 다수의 스토리지 소자들이 읽기동작에 이용될 수 있게 남아 있는 반면 다른 스토리지 소자들에는 데이터가 작성되도록 순차적으로 한번에 하나씩 스토리지 소자들에 동일 데이터를 작성하도록 구성된다. 읽기동작에 이용가능한 스토리지 소자의 개수는 선택가능한 성능 인덱스와 관련있다.
읽기동작을 위한 읽기 어드레스는 성능 인덱스와 관련되고 쓰기동작에 현재 사용중이지 않은 다수의 스토리지 소자들로부터 읽기 동안 동시에 읽어질 수 있도록 스토리지 소자들 중 다수의 다른 소자들로 상기 읽기동작을 위한 읽기 어드레스를 맵핑될 수 있다. 스토리지 소자들은 플래시 고체상태 디바이스일 수 있다.
다른 태양으로, 스토리지 소자들은 별도로 읽기 및 쓰기 액세스가능하고, 스토리지 액세스 시스템은 쓰기동작 동안 성능 인덱스와 관련된 스토리지 소자의 개수에 대한 읽기동작의 차단 액세스를 방지하기 위해 다수의 다른 스토리지 액세스들 각각에 동릴한 별도의 액세스가능한 동일 데이터의 복제를 반복적으로 작성하도록 구성될 수 있다.
스토리지 액세스 시스템은 3개 이상의 다른 스토리지 소자들에 데이터를 작성함으로써 가변 지연 스토리지 소자들에 대한 읽기 액세스 시간을 정규화하고, 그런 후 연이은 읽기동작에 응답해, 동시 쓰기동작에 현재 사용중이지 않은 스토리지 소자들 중 하나로부터 데이터를 다시 읽을 수 있다.
또 다른 태양으로, 스토리지 액세스 시스템은 제 1 세트의 쓰기동작에 대해 제 1 데이터 세트를 함께 집적하고, 제 1 데이터 세트를 제 1 그룹의 스토리지 소자들 각각에 대해 연속한 물리적 어드레스 위치들에 작성할 수 있도록 구성될 수 있다. 스토리지 액세스 시스템은 제 1 데이터 세트로 현재 작성중이지 않는 제 1 그룹의 스토리지 소자들로부터 동시 읽기동작을 수행하고, 제 2 세트의 쓰기동작에 대해 제 2 데이터 세트를 함께 집적하고, 제 2 데이터 세트를 상기 제 1 그룹의 스토리지 소자들과는 다른 제 2 그룹의 스토리지 소자들 각각에 대해 연속한 물리적 어드레스 위치들에 작성하도록 구성될 수 있다. 스토리지 액세스 시스템은 또한 제 2 데이터 세트로 현재 작성중이지 않는 제 2 그룹의 스토리지 소자들로부터 동시 읽기동작을 수행하도록 구성될 수 있다.
읽기 어드레스를 스토리지 소자에 있는 물리적 어드레스로 맵핑시키도록 구성된 인디렉션 테이블이 사용될 수 있다. 성능 인덱스는 다른 개수의 스토리지 소자 그룹과 상기 그룹내 다른 개수의 스토리지 소자로 맵핑될 수 있다.
또 다른 태양으로, 쓰기동작을 위해 데이터를 수신하는 단계, 쓰기동작 세트를 위해 데이터 세트를 함께 집적하는 단계, 상기 데이터 세트에 대한 성능 인덱스를 식별하는 단계, 연속 쓰기동작 동안 다수의 미디어 디바이스들이 읽기동작에 의해 액세스될 수 있게 미디어 디바이스 그룹의 각 하나에 대해 연속 물리적 어드레스 위치에 상기 집적된 데이터 세트에 대한 연속 쓰기동작을 수행하는 단계를 포함하는 방법이 개시된다. 쓰기동작 동안 읽기동작에 의해 액세스될 수 있는 미디어 디바이스들의 개수는 성능 인덱스를 기초로 할 수 있다.
또 다른 태양으로, 상기 추가 데이터 세트에 대해 추가 성능 인덱스를 식별하는 단계를 포함하여, 추가 쓰기동작 세트에 대해 추가 데이터 세트가 함께 집적될 수 있다.
추가 연속 쓰기동작 동안 다수의 미디어 디바이스들이 추가 읽기동작에 의해 액세스될 수 있게 추가 미디어 디바이스 그룹의 각 하나에 대해 연속 물리적 어드레스 위치에 상기 집적된 추가 데이터 세트에 대한 추가 연속 쓰기동작이 수행될 수 있다. 추가 연속 쓰기동작 동안 추가 읽기동작에 의해 액세스될 수 있는 미디어 디바이스들의 개수는 추가 성능 인덱스를 기초로 할 수 있다.
본 발명의 내용에 포함됨.
도 1은 스토리지 액세스 시스템의 블록도이다.
도 2는 도 1의 스토리지 엑세스 시스템을 더 상세히 도시한 블록도이다.
도 3은 데이터가 다른 미디어 디바이스들에 어떻게 반복적으로 저장되는지를 도시한 블록도이다.
도 4 내지 도 6은 데이터를 다른 미디어 디바이스들에 반복적으로 저장하기 위한 다른 구성들을 도시한 블록도이다.
도 7은 도 4 내지 도 6에서 스토리지 구성들이 다른 성능 인덱스들에 어떻게 맵핑되는지 도시한 것이다.
도 8은 도 4 내지 도 6에서 스토리지 구성들이 다른 성능 타겟들에 어떻게 맵핑되는지 도시한 것이다.
도 9는 도 1의 스토리지 액세스 시스템에 의해 반복 쓰기동작이 어떻게 수행되는지 도시한 흐름도이다.
도 10 및 도 11은 스토리지 액세스 시스템이 다른 미디어 디바이스들에 있는 위치들에 읽기동작을 어떻게 맵핑하는지 도시한 것이다.
도 12는 어떻게 스토리지 액세스 시스템이 읽기동작을 위해 미디어 디바이스들 중 하나를 선택하는지 도시한 흐름도이다.
도 1은 액세스 지연이 일관성 없는 스토리지 미디어에 더 일관된 액세스 시간을 제공하고 쓰기동작을 위한 느리고 가변적인 지연에 의해 야기된 병목현상을 줄인 스토리지 액세스 시스템(100)을 도시한 것이다. 스토리지 미디어에 쓰기동작의 전반적인 성능을 향상시키기 위해 클라이언트 쓰기동작을 위한 데이터가 집적된다. 집적된 데이터는 그런 후 다수의 다른 미디어 디바이스들에 반복적으로 작성되어 읽기동작 동안 스토리지 미디어에 대한 액세스를 쓰기동작이 차단하지 못하게 한다. 클라이언트 쓰기가 개별적으로 작성된 것보다 한번에 집적된 쓰기동작이 지연이 더 낮다.
스토리지 액세스 시스템(100)은 쓰기집적 메카니즘(108), 반복쓰기 메카니즘(110), 및 인디렉션 메카니즘(112)을 포함한다. 일실시예에서, 쓰기집적 메카니즘(108), 반복쓰기 메카니즘(110), 및 인디렉션 메카니즘(112)에 의해 수행된 동작들은 메모리(107)에 위치된 소프트웨어 모듈을 실행하는 하나 이상의 프로그램가능한 프로세서(105)에 의해 실행된다. 다른 실시예에서, 스토리지 액세스 시스템(100)에서 몇몇 동작들은 하드웨어로 구현될 수 있고 다른 요소들은 소프트웨어로 구현될 수 있다.
일실시예에서, 스토리지 미디어(114)는 스토리지 액세스 시스템(100)에 의해 액세스될 수 있는 각각 별개의 읽기 및 쓰기인 다수의 다른 미디어 디바이스들(120)을 포함한다. 일실시예에서, 미디어 디바이스(120)는 플래시 SSD이나 후술된 집적 및/또는 반복 저장방식으로 이득을 얻을 수 있는 임의의 다른 타입의 스토리지 디바이스이거나 이를 포함할 수 있다.
클라이언트(106)는 스토리지 미디어(114)에 있는 데이터에 액세스할 필요가 있는 임의의 애플리케이션을 포함한다. 예컨대, 클라이언트(106)는 WAN 또는 LAN(미도시)을 통해 사용자와의 통신에 응답해 스토리지 미디어(114)를 오가며 데이터를 읽고 쓸 필요가 있는 데이터베이스 시스템내에 소프트웨어 애플리케이션을 구비할 수 있다. 클라이언트(106)는 실제 많은 사용자 애플리케이션들 또는 다른 사용자들에 가상 스토리지를 간접적으로 소개하는 단일 사용자 애플리케이션으로 구성될 수 있다. 또 다른 예에서, 클라이언트(106)는 웹서버 상에 동작하는 웹 애플리케이션에 스토리지를 소개하는 소프트웨어 애플리케이션들을 포함할 수 있다. "클라이언트"라는 용어는 볼륨 관리자 또는 다른 중간 디바이스에 의해 스토리지 미디어(114) 또는 이 미디어의 초록(absraction)을 사용하는 소프트웨어 애플리케이션 및/또는 하드웨어를 단순히 말하는 것으로 또한 이해해야 한다.
일실시예에서, 클라이언트(106), 스토리지 액세스 시스템(100) 및 스토리지 미디어(114)는 모두 서버 컴퓨터 상에 위치된 동일한 기기의 일부일 수 있다. 또 다른 예로, 클라이언트(106), 스토리지 액세스 시스템(100), 및 스토리지 미디어(114)의 임의의 조합이 다른 컴퓨팅 디바이스 또는 서버에서 동작될 수 있다. 다른 실시예에서, 스토리지 액세스 시스템(100)은 개인용 컴퓨터, 워크스테이션, 휴대용 비디오 또는 오디오 디바이스, 또는 어떤 다른 타입의 소비제품과 결부해 동작할 수 있다. 물론, 이들은 단지 예이며, 스토리지 액세스 시스템(100)은 임의의 컴퓨팅 환경에서 그리고 스토리지 미디어(114)를 오가며 데이터를 쓰고 읽는데 필요한 임의의 애플리케이션과 함께 동작할 수 있다.
스토리지 액세스 시스템(100)은 클라이언트(106)로부터 쓰기동작(102)을 수신한다.
쓰기집적 메카니즘(108)은 다수의 다른 쓰기동작들(102)에 대한 데이터를 모은다. 가령, 쓰기집적 메카니즘(108)은 한 데이터 블록에 함께 다수의 다른 쓰기동작들(102)로부터 4메가바이트(MBs)의 데이터를 집적할 수 있다.
그런 후, 인디렉션 메카니즘(112)은 후술된 성능 인덱싱 방식을 이용해 다른 미디어 디바이스들(120) 중 어떤 것이 데이터 블록 내에 데이터를 저장할지 결정한다. 선택된 미디어 디바이스들(120)에서 물리적 어드레스는 그런 후 인디렉션 메카니즘(112)에 의해 쓰기동작(102)에서 클라이언트 쓰기 어드레스와 맵핑된다. 이 맵핑은 특정한 집적쓰기가 하나의 어드레스에 발생함에 따라 필수적인 반면, 클라이언트 쓰기는 다수의 불연속 어드레스로 구성될 수 있다. 따라서, 각각 작성된 클라이언트 쓰기 어드레스는 물리적 어드레스로 맵핑될 수 있고, 상기 물리적 어드레스는 차례로 집적쓰기의 어드레스의 서브범위이다.
반복쓰기 메카니즘(110)은 각각의 다른 선택된 미디어 디바이스들(120)에 집적된 데이터를 반복해서(그리고 연속으로 또는 한번에 하나씩) 쓴다. 이 반복쓰기 프로세스는 임의의 한 순간에 단지 하나의 미디어 디바이스만을 이용하고 동일한 데이터를 다수의 다른 미디어 디바이스들(120)에 저장한다. 동일한 데이터가 다수의 다른 미디어 디바이스들(120)에 위치되고 단지 하나의 미디어 디바이스(120)에만 임의의 한 순간에 작성되기 때문에, 읽기동작(104)은 스토리지 미디어(114)에서 임의의 데이터에 대해 미디어 디바이스들(120) 중 적어도 하나에 항상 액세스를 갖는다. 다시 말하면, 반복쓰기 구성은 병목현상을 일으키고 읽기동작(104)이 스토리지 미디어(114)에 액세스하지 못하게 하는 쓰기동작 가능성을 방지하거나 줄인다. 예로서, 몇몇 초기 데이터가 3개의 디바이스들에 걸쳐 집적쓰기동작의 일부로서 작성되었다고 하자. 이들 디바이스들 중 기껏해야 하나에 따로 (다른 위치들에는 장래의 데이터로) 작성되고 있다면, 계류중인 쓰기동작에 스톨링 없이 원래 데이터가 읽혀질 수 있는 적어도 2개의 디바이스들이 항상 있을 것이다. 이 보장은 임의의 특별한 쓰기동작의 기간에 무관하게 제공될 수 있다.
읽기동작(104)은 스토리지 액세스 시스템(100)에 의해 수신될 수 있는 반면, 반복쓰기 메카니즘(110)은 다수의 다른 미디어 디바이스들(120)에 반복적으로 데이터를 (연속으로) 작성한다. 인디렉션 메카니즘(112)은 읽기동작(104)과 관련된 어드레스를 읽고 그런 후 인디렉션 테이블을 이용해 읽기동작과 관련된 데이터가 복수의 미디어 디바이스들(120)에서 위치된 곳을 결정한다.
식별된 미디어 디바이스들(120) 중 하나가 분주하면(현재 작성중에 있으면), 인디렉션 메카니즘은 동일 데이터를 또한 저장한 미디어 디바이스들(120) 중 다른 하나로부터 상기 데이터에 액세스할 수 있다. 따라서, 읽기동작(104)이 계속될 수 있는 한편, 다른 미디어 디바이스들(120)은 쓰기동작 및 심지어 읽기동작에 대해 동시에 사용된다. 쓰기동작과 관련된 가변 지연들이 더 이상 읽기동작에 대해 병목현상을 일으키지 않기 때문에 읽기동작에 대한 액세스 시간은 정규화된다.
도 2는 쓰기집적 메카니즘(108)의 동작을 더 상세히 기술한다. 쓰기집적 메카니즘(108)은 클라이언트(106)로부터 다수의 다른 쓰기동작들(102)을 수신한다. 쓰기동작(102)은 클라이언트 어드레스 및 관련된 데이터(D1,D2,D3)를 포함한다. 쓰기동작(102)에서 클라이언트(106)가 제공한 클라이언트 어드레스는 랜덤이거나 순차 어드레스일 수 있다.
쓰기집적 메카니즘(108)은 데이터쓰기 데이터(D1,D2,D3)를 집적 버퍼(152)에 모은다. 쓰기동작(102)을 위한 데이터는 특정 데이터량이 버퍼(152)에 있을 때까지 집적될 수 있다. 예컨대, 쓰기집적 메카니즘(108)은 쓰기 데이터를 4 메가바이트(MB) 버퍼에 집적할 수 있다. 인디렉션 메카니즘(112)은 4MB 집적 버퍼(152)에 데이터를 저장하기 위해 스토리지 미디어(114) 내에 있는 다수의 다른 미디어 디바이스들(120)을 식별한다. 또 다른 예에서, 특정 사이즈가 버퍼(152)에 집적될 때까지 또는 제 1 클라이언트 쓰기로부터 특정 시간이 경과할 때까지, 어떤 것이 먼저 오든지 간에, 집적이 발생한다.
어떻게 인디렉션 메카니즘(112)이 하나의 데이터 블록에 랜덤 쓰기동작을 위해 데이터를 집적하고 상기 데이터를 미디어 디바이스(120)에 작성하는지의 몇몇 예들이 동계류중인 특허출원번호 No. US 12/759604에 기술되어 있고, 상기 참조문헌은 동계류중인 특허출원번호 2009년 4월 17일자로 출원한 발명의 명칭이 STORAGE SYSTEM FOR INCREASING PERFORMANCE OF STORAGE MEDIA인 No. 61/170,472의 우선권을 주장하며, 모두가 전체적으로 본 명세서에 참조로 합체되어 있다.
도 2는 쓰기집적 메카니즘(108)의 동작을 더 상세히 기술한다. 쓰기집적 메카니즘(108)은 클라이언트(106)로부터 다수의 다른 쓰기동작들(102)을 수신한다. 쓰기동작(102)은 클라이언트 어드레스 및 관련된 데이터(D1,D2,D3)를 포함한다. 쓰기동작(102)에서 클라이언트(106)가 제공한 클라이언트 어드레스는 랜덤이거나 순차 어드레스일 수 있다.
쓰기집적 메카니즘(108)은 데이터쓰기 데이터(D1,D2,D3)를 집적 버퍼(152)에 모은다. 쓰기동작(102)을 위한 데이터는 특정 데이터량이 버퍼(152)에 있을 때까지 집적될 수 있다. 예컨대, 쓰기집적 메카니즘(108)은 쓰기 데이터를 4 메가바이트(MB) 버퍼에 집적할 수 있다. 인디렉션 메카니즘(112)은 4MB 집적 버퍼(152)에 데이터를 저장하기 위해 스토리지 미디어(114) 내에 있는 다수의 다른 미디어 디바이스들(120)을 식별한다. 또 다른 예에서, 특정 사이즈가 버퍼(152)에 집적될 때까지 또는 제 1 클라이언트 쓰기로부터 특정 시간이 경과할 때까지, 어떤 것이 먼저 오든지 간에, 집적이 발생한다. 다른 집적 관리기술들도 본 논의에 득을 보는 당업자들에 명백할 것이다.
다수의 쓰기동작들을 순차 쓰기동작들로의 데이터 집적은 각 개개의 쓰기동작에 대한 전반적인 지연을 줄일 수 있다. 예컨대, 플래시 SSD는 대표적으로 동일한 양의 데이터의 랜덤 쓰기보다 순차 데이터 세트를 더 빨리 작성할 수 있다. 따라서, 다수의 쓰기동작들을 순차 쓰기 세트로의 집적으로 스토리지 미디어(114)에 쓰기동작을 완료하는데 걸리는 전체 액세스 시간이 감소될 수 있다.
또 다른 실시예에서, 쓰기동작(102)과 관련된 데이터가 반드시 집적될 필요가 없을 수 있다. 예컨대, 쓰기집적 메카니즘(108)이 사용될 수 없고 랜덤한 개개의 쓰기동작들이 집적버퍼(152)에 먼저 집적되지 않고 다수의 다른 미디어 디바이스들(120)에 별개로 작성될 수 있다.
인디렉션 메카니즘(112)은 데이터(D1,D2,D3)에 대한 어드레스를 다른 미디어 디바이스들(120)에서의 물리적 어드레스로 맵핑시킨다. 집적 버퍼(152)에서 데이터(D1,D2,D3)는 그런 후 스토리지 미디어(114)에 있는 식별된 미디어 디바이스들(120)에 작성된다. 연속 읽기동작(104)에서, 클라이언트(106)는 인디렉션 메카니즘(112)으로 인디렉션 테이블을 이용해 읽기 데이터가 위치된 특정 미디어 디바이스들(120)에서의 위치들을 식별한다.
도 3은 다른 미디어 디바이스들(120)에 데이터를 쓰기 위한 인디렉션 메카니즘(112)에 의해 사용된 반복쓰기방식 중 하나를 더 상세히 도시한 것이다. 인디렉션 메카니즘(112)은 데이터(D1,D2,D3)와 관련된 3개의 클라이언트 어드레스(A1,A2,A3)를 각각 식별하며 쓰기동작들을 이전에 수신했다.
반복쓰기 메카니즘(110)은 3개의 미디어 디바이스들(1,2,3) 중 물리적 어드레스(P1)에 한번에 하나씩 순차적으로 제 1 어드레스(A1)에 대해 데이터(D1)를 작성한다. 반복쓰기 메카니즘(110)은 그런 후 차례대로 미디어 디바이스들(1,2,3) 중 물리적 어드레스(P1)에 한번에 하나씩 순차적으로 제 2 어드레스(A2)에 대해 데이터(D2)를 작성하고, 차례대로 미디어 디바이스들(1,2,3) 중 물리적 어드레스(P3)에 클라이언트 어드레스(A3)와 관련된 데이터(D3)를 순차적으로 한번에 하나씩 작성한다. 이제 3개의 미디어 디바이스들(1,2,3) 중 각각에 데이터(D1,D2,D3)의 복제가 있다. 대부분의 경우, 미디어 디바이스들(1,2,3)에 대한 작성은 각각 물리적 어드레스(P1)에 작성된 집적된 데이터(D1,D2,D3)를 포함한 일회 쓰기였을 반면에, 어드레스(P2, P3)는 연이은 순차 어드레스일 것이다. 어느 한 경우, 그 결과는 잠재적으로 랜덤한 어드레스들(A, A2, 및 A3)에 대한 사용자 데이터가 이제 모든 3개의 디바이스 상의 동일 어드레스(P1,P2,P3)에 순차적으로 작성된다는 것이다.
인디렉션 메카니즘(112)은 3개의 미디어 디바이스들(1,2,3) 중 어느 하나에서 데이터(D1,D2,D3)를 선택적으로 읽을 수 있다. 인디렉션 메카니즘(112)은 현재 미디어 디바이스들(120) 중 하나에 데이터를 작성하는 중일 수 있고 일부 미디어 디바이스들에 포함된 데이터에 대해 읽기동작을 또한 수신할 수 있다. 쓰기가 반복적이기 때문에, 미디어 디바이스들(1,2,3) 중 단 하나만 쓰기동작을 수행하기 위해 임의의 한 순간에 사용된다. 읽기동작용 데이터는 3개의 다른 미디어 디바이스들(1,2,3)에 이전에 저장되었기 때문에, 인디렉션 메카니즘(112)은 읽기동작을 동시에 제공하기 위해 현재 쓰기동작에 사용되고 있지 않는 다른 2개의 미디어 디바이스들 중 하나에 액세스할 수 있다. 따라서, 스토리지 디바이스(120)에 대한 쓰기는 읽기동작에 대해 전혀 병목현상을 일으키지 않을 수 있다.
도 4는 적어도 하나의 읽기동작이 임의의 쓰기동작에 의해 차단되지 않게 보장되는 또 다른 읽기방식을 도시한 것이다. 이 방식에서, 반복쓰기 메카니즘(110)은 데이터(D1,D2,D3)를 2개의 다른 미디어 디바이스들(120)에 작성한다. 예컨대, 클라이언트 어드레스(A1)와 관련된 동일한 데이터(D1)는 미디어 디바이스(3 및 6)에 있는 물리적 어드레스(P1)에 작성된다. 클라이언트 어드레스(A2)와 관련된 동일한 데이터(D2)는 미디어 디바이스(2 및 5)에 있는 물리적 어드레스(P1)에 작성되고, 클라이언트 어드레스(A3)와 관련된 동일한 데이터(D3)는 미디어 디바이스(3 및 6)에 있는 물리적 어드레스(P1)에 작성된다.
도 5는 반복쓰기동작에 의해 차단되지 않도록 2개의 동시발생 읽기가 배열되는 또 다른 반복쓰기 방식을 도시한 것이다. 반복쓰기 메카니즘(110)은 어드레스(A1)와 관련된 데이터(D1)를 미디어 디바이스(2, 4 및 6)에 있는 물리적 어드레스(P1)에 작성한다. 어드레스(A2)와 관련된 데이터(D2)는 미디어 디바이스(1, 3 및 5)에 있는 물리적 어드레스(P1)에 작성되고, 어드레스(A3)와 관련된 데이터(D3)는 미디어 디바이스(2, 4 및 6)에 있는 물리적 어드레스(P2)에 작성된다.
데이터(D1,D2,D3)의 각 블록은 3개의 다른 미디어 디바이스들(120)에 작성되고 상기 미디어 디바이스들 중 단 하나만 데이터를 작성하기 위해 임의의 한 순간에 사용될 것이다. 다른 미디어 디바이스들(120)은 임의의 읽기동작을 제공할 수 있는 데이터를 가질 것이다. 따라서, 도 5에서 반복쓰기 방식은 최소 2개의 읽기동작들이 동시에 수행되게 한다.
도 6은 쓰기동작에 의한 차단 없이 최소 5개의 동시 읽기가 가능한 또 다른 반복쓰기 방식을 도시한 것이다. 반복쓰기 메카니즘(110)은 어드레스(A1)와 관련된 데이터(D1)를 모두 6개의 미디어 디바이스(1-6)에 있는 물리적 어드레스 위치들(P1)에 작성한다. 어드레스(A2)와 관련된 데이터(D2)는 모든 미디어 디바이스(1-6)에 있는 물리적 어드레스 위치들(P2)에 작성되고, 어드레스(A3)와 관련된 데이터(D3)는 모든 미디어 디바이스(1-6)에 있는 물리적 어드레스 위치들(P3)에 작성된다.
동일한 데이터가 각각의 6개의 미디어 디바이스들(120)에 작성되고, 상기 미디어 디바이스들(120) 중 단 하나만 데이터를 작성하기 위해 임의의 한 순간에 사용될 것이다. 따라서, 도 6에 구성된 바와 같이 미디어 디바이스들(120)로부터 5개의 동시 읽기가 가능하다.
상술한 순차적 반복쓰기 방식은 데이터가 다른 디바이스들에 동시에 작성된 데이터 미러링과 다르고 상기 미러링 동작 동안 다른 모든 메모리 액세스를 차단한다. 스트립핑은 다른 디스크들 위로 데이터를 퍼뜨리나, 상기 데이터는 다른 메모리 디바이스들에 복제되지 않고 따라서 다수의 다른 메모리 디바이스들로부터 별개로 액세스될 수 없다. 여기서, 미디어 디바이스들은 랜덤 및 가변크기의 사용자 쓰기 스트림이 순차 및 균일한 크기의 미디어 쓰기 스트림으로 변환되도록 큰 순차적 데이터 블록들(집적 버퍼의 크기)을 이용해 작성된다.
도 7 및 도 8은 쓰기동작에 할당된 특정 성능 인덱스에 따라 도 4-6에서 다른 쓰기방식들이 동적으로 선택될 수 있는지 도시한 것이다. 도 7은 열(202)에 다른 성능 인덱스들(1,2,3)을 포함한 성능 인덱스 테이블(200)을 도시한 것이다. 성능 인덱스들(1,2,3)은 도 4, 5, 및 6에 기술된 쓰기방식들과 각각 관련있다.
성능 인덱스(1)는 열(204)에서 2회 쓰기 반복의 관련된 숫자이다. 이는 각 관련된 쓰기동작에 대한 데이터가 2개의 다른 미디어 디바이스들(120)에 작성되는 것을 의미한다. 열(206)은 어떤 미디어 디바이스들이 동일한 데이터로 작성될 것인지 도시한 것이다. 예컨대, 도 4에 상술한 바와 같이, 미디어 디바이스(1 및 4)는 모두 동일한 데이터(D3)로 작성될 것이고, 미디어 디바이스(2 및 5)는 모두 동일한 데이터(D2)로 작성될 것이고, 미디어 디바이스(3 및 6)는 모두 동일한 데이터(D1)로 작성될 것이다.
열(202)에서 성능 인덱스(2)는 열(204)에 나타낸 바와 같이 3회 쓰기 반복과 관련있다. 도 5에 상술한 바와 같이, 미디어 디바이스(1,3,5)는 동일한 데이터로 작성될 것이고 또는 미디어 디바이스(2,4,6)가 모두 동일한 데이터로 작성될 것이다. 열(202)에서 성능 인덱스(3)는 동일한 데이터가 모두 6개의 미디어 디바이스들에 작성된 도 6에 기술된 바와 같이 6회 쓰기 반복과 관련 있다.
성능 인덱스(1)를 선택함으로써 스토리지 미디어로부터 적어도 하나의 미차단된 읽기가 가능해진다. 성능 인덱스(2)를 선택함으로써 스토리지 미디어로부터 적어도 2개의 동시 미차단 읽기가 가능해지고, 성능 인덱스(3)를 선택함으로써 스토리지 미디어로부터 적어도 5개의 동시 미차단 읽기가 가능해진다.
가장 큰 스토리지 액세스 성능을 필요로 하는 클라이언트(106)는 성능 인덱스(3)를 선택할 수 있다. 예컨대, 데이터베이스 인덱스를 읽는 것이 필요한 클라이언트는 스토리지 미디어(114)에서 많은 분리 위치들로부터 동시에 대량의 데이터를 모두 읽는 게 필요할 수 있다.
저장용량을 극대화하는데 필요하거나 읽기 성능을 극대화할 필요가 없는 클라이언트(106)는 성능 인덱스(1)를 선택할 수도 있다. 예컨대, 클라이언트(106)는 임의의 한 순간에 비교적 소량의 데이터를 읽는 것이 단지 필요할 수 있거나, 동일한 미디어 디바이스(120)에 대표적으로 저장된 순차 데이터의 블록들을 읽는 것이 단지 필요할 수 있다.
클라이언트(106)는 데이터의 중요성 또는 어떤 타입의 데이터가 작성되고 있는지 인식할 수 있다. 따라서, 클라이언트는 특정 성능 인덱스를 갖는 메시지를 스토리지 액세스 시스템(100)에 보냄으로써 데이터에 성능 인덱스(1,2,3)를 할당한다. 인디렉션 메카니즘(112)은 선택된 성능 인덱스와 관련된 특정한 반복 쓰기방식을 이용하며 시작할 것이다. 예컨대, 스토리지 액세스 시스템(100)이 클라이언트(106)로부터 3의 성능 인덱스를 수신하면, 인디렉션 메카니즘(112)은 3개의 다른 미디어 디바이스들(120)에 동일한 데이터를 작성하기 시작할 것이다.
따라서, 읽기동작이 스토리지 미디어(114)로부터 다시 데이터를 읽을 경우, 특정 데이터를 읽는데 걸리는 시간량이 선택된 성능 인덱스에 해당할 것이다. 예컨대, 2개의 동시 읽기가 성능 인덱스(3)에 주어지므로, 성능 인덱스(3)와 관련된 데이터는 1의 성능 인덱스와 관련된 데이터보다 더 빨리 전체적으로 다시 읽어질 수 있다. 그러므로, 성능 인덱스는 다른 데이터에 대한 사용자 선택가능한 QoS(Quality of Service)를 제공한다.
도 8은 테이블(200)에 있는 성능 인덱스를 성능 타겟(224)과 연관시킨 또 다른 테이블(220)을 도시한 것이다. 성능 타겟(224)은 스토리지 액세스 시스템(100)에 의해 사용된 다른 쓰기반복 구성들 각각에 대한 읽기 액세스 시간을 측정하고 평균한 경험 데이터로부터 도출될 수 있다. 대안으로, 성능 타겟(224)은 미디어 디바이스(120)에 대한 대표적인 읽기 액세스를 동시에 수행될 수 있는 미차단 읽기 회수로 나눔으로써 측정될 수 있다.
예컨대, 단일 읽기 액세스는 약 200 마이크로초(㎲)일 수 있다. 따라서, 성능 인덱스(1)가 제공한 단일 미차단 읽기에 대한 성능 타겟은 약 200㎲ 미만일 것이다. 2개의 동시 미차단 읽기가 성능 인덱스(3)에 제공되기 때문에, 성능 인덱스(3)에 대한 성능 타겟은 약 100㎲ 미만으로 제공된다. 5개의 동시 미차단 읽기가 성능 인덱스(3)로 제공되기 때문에, 성능 인덱스(3)에 대한 성능 타겟은 약 40㎲ 미만으로 제공된다.
그러므로, 클라이언트(106)는 특정 성능타겟(224)을 선택할 수 있고 스토리지 액세스 시스템(100)은 특정 성능 인덱스(202)와 특정 수준의 읽기 성능을 제공하는데 필요한 반복쓰기방식을 선택할 것이다. 상술한 방법을 이용해, 각 특정 QoS 수준에 대해 물리적 어드레스 공간을 할당 또는 보유함으로써 동일한 물리적 미디어 디바이스 그룹을 또한 구현할 수 있다. 물리적 미디어 공간이 소비됨에 따라, 현재 이용 또는 다른 메트릭을 기초로 한 다른 QoS 수준으로 어드레스 공간을 또한 재할당할 수 있다.
도 9는 도 1의 스토리지 액세스 시스템(100)이 어떻게 쓰기동작을 수행하는지의 일예를 도시한 흐름도이다. 동작(300)에서, 스토리지 액세스 시스템(100)은 쓰기 데이터가 성능 인덱스(2)와 관련된 몇몇 표시를 수신한다. 이는 클라이언트(106)로부터 전송된 메시지 또는, 스토리지 액세스 시스템(100)에 로딩된 사전구성 파라미터일 수 있고, 스토리지 액세스 시스템(100)은 특정 클라이언트를 기초로 한 성능 인덱스 또는 특정 타입의 식별된 데이터를 결정할 수 있다. 예컨대, 클라이언트(106)는 쓰기 데이터와 함께 메시지를 전송할 수 있거나 스토리지 액세스 시스템(100)은 일시, 클라이언트 식별자, 데이터 타입 등과 같은 다른 프로그램된 기준을 기초로 한 성능 인덱스(2)를 이용하도록 구성될 수 있다.
대안으로, 성능 타겟 값(224)(도 8)은 동작(304)에서 스토리지 액세스 시스템(100)에 의해 식별될 수 있다. 가령, 클라이언트(106)는 75㎲의 성능의 타겟을 요청한 동작(304)에서 스토리지 액세스 시스템(100)에 메시지를 전송할 수 있다. 성능 타겟은 또한 스토리지 액세스 시스템(100)에 사전구성될 수 있거나 프로그램된 기준을 토대로 스토리지 액세스 시스템(100)에 의해 동적으로 식별될 수 있다. 동작(306)에서, 스토리지 액세스 시스템(100)은 도 8의 테이블(220)을 이용해 식별된 75㎲의 성능 타겟과 관련된 성능 인덱스를 식별한다. 이 예에서, 시스템(100)은 75㎲는 테이블(220)의 열(224)에서 100㎲ 값 미만이므로 성능 인덱스(2)를 선택한다.
동작(302)에서, 다음 한가한 미디어 디바이스 그룹이 식별된다. 예컨대, 성능 인덱스(2)에 대해, 2개의 쓰기 그룹들이 있다. 제 1 쓰기 그룹은 미디어 디바이스(1,3,5)를 포함하고, 제 2 그룹은 미디어 디바이스(2,4,6)를 포함한다(도 5 및 도 7 참조). 이 예이서, 미디어 디바이스(2,4,6)는 스토리지 액세스 시스템(100)에 의해 작성된 마지막 그룹의 미디어 디바이스들이었다. 따라서, 최소최근사용(Least Recently Used) 미디어 디바이스 그룹은 동작(306)에서 미디어 디바이스(1,3,5)로 식별된다.
일예로, 하나 이상의 클라이언트들(106)로부터 수신된 쓰기 데이터는 집적 버퍼가 동작(310)시 가득 찰 때까지 동작(308)에서 집적 버퍼(152)(도 2)에 놓여진다. 예컨대, 집적 버퍼(152)는 4MB일 수 있다. 도 1에서 쓰기집적 메카니즘(108)은 집적 버퍼(152)가 4MB에 가까이 소정의 임계치에 도달할 때까지 성능 인덱스(2)와 관련된 쓰기 데이터를 집적 버퍼(152)에 계속 배치한다.
그런 후 스토리지 액세스 시스템(100)은 도 3-6에서 상술한 바와 같이 쓰기 데이터의 집적된 블록을 미디어 디바이스에 쓴다. 이 예에서, 동일한 데이터는 동작(312)시 미디어 디바이스(1)에 작성되고, 다음 연속 동작(314)시 미디어 디바이스(3)에 그리고 세번째 차례에는 미디어 디바이스(5)에 작성된다. 데이터를 저장하기 위해 사용된 미디어 디바이스(1,3,5)에서 물리적 어드레스 위치들은 동작(318)시 인디렉션 메카니즘(112)에 있는 인디렉션 테이블에 추가된다.
더 많은 쓰기 데이터가 성능 인덱스(2)와 관련해 수신되면, 집적 버퍼(152)가 다시 채워지고 다음 그룹의 미디어 디바이스(2,4,6)가 스토리지 미디어(114)로의 다음 반복쓰기에 사용된다. 크기가 다르거나 관리 기준이 다를 수 있는 다른 집적 버퍼는 다른 성능 인덱스와 관련된 다른 쓰기 데이터에 사용될 수 있다. 다른 집적 버퍼들이 채워지면, 데이터는 특정 성능 인덱스(이 경우, 2, 4, 및 6 그룹)와 관련된 최소최근사용(LRU) 그룹의 미디어 디바이스들(120)에 반복해서 작성된다.
도 10은 스토리지 액세스 시스템(100)에 의해 어드레스(A1)에 대한 제 1 읽기동작(340)이 어떻게 처리되는지 도시한 것이다. 이 예에서, 스토리지 미디어(114)에 다수의 다른 미디어 디바이스들에 데이터를 저장하기 위해 도 5에서 앞서 나타낸 반복쓰기방식을 사용했다. 도 5를 참조하면, 인디렉션 메카니즘(112)은 앞서 물리적 어드레스(P1)에서 미디어 디바이스들(2,4,6)에 연속으로 동일한 데이터(D1)를 저장한다. 물리적 어드레스(P2)에서 미디어 디바이스들(1,3,5)에 연속으로 다음 데이터(D2)를 저장한다.
도 10을 다시 참조하면, 인디렉션 메카니즘(112)에서 인디렉션 테이블(344)은 읽기동작(340)시 어드레스(A1)를 미디어 디바이스들(2,4,6)에 있는 물리적 어드레스(P1)에 맵핑시킨다. 데이터가 각각의 미디어 디바이스들에 있는 동일 물리적 어드레스에 저장되는 한, 인디렉션 테이블(344)은 단지 한 물리적 어드레스(P1)와 어드레스(A1)와 관련된 데이터가 저장된 미디어 디바이스들(2,4,6)에 대한 관련된 그룹 번호만 식별할 필요가 있다. 이는 테이블(344)에서 엔트리 넘버를 줄인다.
인디렉션 메카니즘(112)은 클라이언트 어드레스(A1)와 관련된 물리적 어드레스를 식별하고 현재 사용중이지 않는 3개의 미디어 디바이스들(2,4,6) 중 하나를 선택한다. 인디렉션 메카니즘(112)은 선택된 미디어 디바이스들로부터 데이터(D1)를 읽고 상기 데이터를 다시 클라이언트(106)로 보낸다.
일예로, 도 11은 스토리지 액세스 시스템(100)이 어드레스(A2)에 대한 읽기동작(342)을 어떻게 처리하는지 도시한 것이다. 도 5에서, 어드레스(A1)와 관련된 데이터(D2)가 미디어 디바이스들(1,3,5)의 물리적 어드레스(P1)에 사전에 저장된 것을 상기하라. 따라서, 인디렉션 메카니즘(112)은 어드레스(A1)를 미디어 디바이스들(1,3,5)에 있는 물리적 어드레스(P1)로 맵핑시킨다.
읽기동작(342)에 응답해, 인디렉션 메카니즘(112)은 어드레스(A2)와 관련된 물리적 어드레스(P1)를 식별하고 현재 사용중이지 않는 3개의 미디어 디바이스들(1,3,5) 중 하나를 선택한다. 인디렉션 메카니즘(112)은 선택된 미디어 디바이스들(1,3,5) 중 하나로부터 데이터(D2)를 읽고 상기 데이터(D2)를 다시 클라이언트(106)로 보낸다.
도 12는 인디렉션 메카니즘(112)이 스토리지 미디어(114)에서 미디어 디바이스들(120) 중 어떤 것으로부터 어떤 데이터를 읽을지 결정하는 방법을 더 상세히 도시한 흐름도이다. 이 예에서, 데이터(D1)는 도 5에 상술한 바와 같이 스토리지 미디어(114)에 이전에 작성되었고 도 10에서 인디렉션 테이블(344)은 인디렉션 메카니즘(112)에 의해 업데이트 되었다.
동작(380)시, 인디렉션 메카니즘은 클라이언트(106) 중 하나로부터 어드레스(A1)에 대한 읽기동작을 수신한다(도 1). 인디렉션 테이블(344)이 동작(382)시 어드레스(A1)에 대한 에트리를 포함하지 않으면, 동작(396)시 읽기 실패가 보고되고 동작(394)시 읽기 요청이 완료된다.
이 예에서, 동작(382)시 인디렉션 메카니즘에 의해 미디어 디바이스들(2,4,6) 상에 3개의 후보 미디어 어드레스들이 식별된다. 인디렉션 메카니즘(112)은 동작(384)시 식별된 미디어 디바이스들 중 하나를 선택하다. 선택된 미디어 디바이스가 동작(386)시 현재 쓰기동작에 사용중인 경우, 3개의 식별된 미디어 디바이스들 중 다음 하나가 동작(384)시 선택된다.
선택된 미디어 디바이스가 동작(388)시 현재 읽기동작에 사용중인 경우, 인디렉션 메카니즘(112)은 동작(384)시 그룹에서 다음 미디어 디바이스를 선택하다. 이 프로세스는 한가한 미디어 디바이스가 식별되거나 도 10의 인디렉션 테이블(344)에서 마지막 미디어 디바이스가 동작(390)시 식별될 때까지 반복된다. 인디렉션 메카니즘에 의해 이용가능한 미디어 디바이스들(2,4,6)에 있는 데이터(D1)가 읽어지고 동작(392)시 클라이언트(106)로 복귀된다.
모든 3개의 미디어 디바이스들(2,4,6)의 읽기 및 쓰기 상태들은 인디렉션 메카니즘(112)에 의해 미디어 디바이스들 모두에 대해 개개의 읽기 및 쓰기 상태 라인들을 모니터함으로써 동시에 결정될 수 있다. 인디렉션 메카니즘(112)은 이용불가능한 미디어 디바이스들을 동시에 고려에서 제거할 수 있고 그런 후 남아 있는 이용가능한 미디어 디바이스들 중 하나의 최고최근사용 디바이스를 선택한다. 예컨대, 미디어 디바이스(4)가 현재 사용중일 수 있고 미디어 디바이스(2 및 6)가 현재 이용가능할 수 있다. 인디렉션 메카니즘(112)은 동작(392)시 미디어 디바이스들(2 및 6) 중 최소최근사용된 디바이스로부터 물리적 어드레스 위치(P1)에서 데이터(D1)를 읽는다.
상술한 바와 같이, 다른 데이터를 저장하기 위해 성능 인덱스와 다수의 미디어 디바이스들의 임의의 조합이 사용될 수 있다. 예컨대, 클라이언트(106)(도 1)는 제 1 데이터 그룹에 대해 성능 인덱스(1)를 선택하고 더 성능이 중요한 제 2 데이터 그룹에 대해 성능 인덱스(3)를 선택할 수 있다. 관련된 성능 인덱스가 알려져 있는 한, 인디렉션 메카니즘(112)은 도 7 및 도 8에서 인디렉션 테이블(200 및 220)을 이용해 필요한 다수의 미디어 디바이스들에 데이터를 작성할 수 있다. 인디렉션 메카니즘(112)은 도 10 및 도 11에서 인디렉션 테이블(344)을 이용해 클라이언트 어드레스를 식별된 미디어 디바이스(120) 그룹에 있는 특정 물리적 어드레스로 맵핑시킨다. 특정 데이터에 대해 현재 가능한 읽기 개수들이 상기 특정 데이터를 저장한 미디어 디바이스들의 개수와 바로 일치하기 때문에 다른 성능 인덱스 데이터에 대해 다른 성능 수준들이 자동으로 제공된다.
상술한 시스템은 전용 프로세서 시스템, 마이크로컨트롤러, 프로그램가능한 논리 디바이스, 또는 상기 동작들 중 일부 또는 전부를 수행하는 마이크로프로세서를 사용할 수 있다. 상술한 동작들 중 일부는 소프트웨어로 구현될 수 있고 다른 동작들은 하드웨어로 구현될 수 있다.
편의상, 동작들은 다양한 상호연관된 기능 블록들 또는 구별되는 소프트웨어 모듈들로 기술되어 있다. 그러나, 이는 반드시 그럴 필요가 없으며, 이들 기능 블록들 또는 모듈들은 하나의 논리 디바이스, 프로그램 또는 불명확한 경계를 갖는 동작들에 등가로 집적되는 경우들이 있을 수 있다. 여하튼, 기능 블록들과 소프트웨어 모듈 또는 유연한 경계 특징들이 자체적으로 또는 하드웨어나 소프트웨어 중 어느 하나로 다른 동작들과 조합해 구현될 수 있다.
본 발명의 몇몇 예들만 상세히 기술하였으나, 당업자는 본 발명의 신규한 교시 및 이점으로부터 실질적으로 벗어남이 없이 많은 변형들이 상기 예들로 가능한 것을 쉽게 이해할 것이다. 따라서, 이런 변경들 모두는 하기의 특허청구범위에 정의된 바와 같이 본원의 범위 내에 포함되도록 의도되어 있다.

Claims (21)

  1. 다수의 미디어 디바이스들; 및
    프로세서를 구비하고,
    상기 프로세서는:
    쓰기동작을 위해 데이터를 수신하고;
    상기 데이터가 작성될 3개 이상의 미디어 디바이스들의 그룹을 식별하며;
    식별된 그룹에 있는 각각의 미디어 디바이스들에 상기 데이터를 연이어 작성하고;
    읽기동작을 수신하며;
    쓰기동작을 위해 상기 데이터로 현재 작성중에 있는 미디어 디바이스들 중 하나를 식별하고;
    쓰기동작을 위해 상기 데이터로 현재 작성중이지 않는 그룹에 있는 하나 이상의 미디어 디바이스들로부터 읽기동작과 관련된 어드레스 위치로부터 데이터를 동시에 읽도록 구성된 시스템.
  2. 제 1 항에 있어서,
    미디어 디바이스는 가변 쓰기 지연을 갖고;
    프로세서는 데이터를 쓰기 위해 동시에 사용중이지 않은 그룹에 있는 미디어 디바이스들 중 다수의 디바이스들로부터 읽기동작과 관련된 데이터를 동시에 읽음으로써 상기 미디어 디바이스에 대해 읽기 지연을 정규화하도록 더 구성되는 시스템.
  3. 제 1 항에 있어서,
    미디어 디바이스는 플래시 고체상태 디바이스를 구비하는 시스템.
  4. 제 1 항에 있어서,
    프로세서는:
    쓰기동작을 위해 제 1 데이터 세트를 함께 집적하고;
    상기 제 1 데이터 세트와 관련된 제 1 성능 인덱스를 식별하며;
    제 1 성능 인덱스와 관련된 미디어 디바이스 그룹에 있는 제 1 개수의 미디어 디바이스들이 집적된 제 1 데이터 세트의 작성에 의해 차단되지 않고 읽어질 수 있게 상기 집적된 제 1 데이터 세트를 연속한 물리적 어드레스 위치들에 작성하고;
    제 2 쓰기동작을 위해 제 2 데이터 세트를 함께 집적하며;
    상기 제 2 데이터 세트와 관련된 제 2 성능 인덱스를 식별하고;
    제 2 성능 인덱스와 관련된 미디어 디바이스의 추가 그룹에 있는 제 2 개수의 미디어 디바이스들이 집적된 제 2 데이터 세트의 작성에 의해 차단되지 않고 읽어질 수 있게 상기 집적된 제 2 데이터 세트를 연속한 물리적 어드레스 위치들에 작성하도록 더 구성된 시스템.
  5. 제 4 항에 있어서,
    집적된 제 1 데이터 세트와 집적된 제 2 데이터 세트의 크기는 가변적이고 쓰기동작이 식별되는 경우를 기초로 하는 시스템.
  6. 제 1 항에 있어서,
    프로세서는:
    쓰기동작을 위해 성능 인덱스를 식별하고;
    성능 인덱스를 기초로 동시 읽기동작을 제공하기 위해 그룹에 있는 미디어 디바이스들의 그룹에서 2개 이상의 다수의 미디어 디바이스들을 식별하도록 구성되는 시스템.
  7. 제 6 항에 있어서,
    프로세서는 동시 읽기동작을 제공하기 위해 2개 이상의 식별된 다수의 미디어 디바이스들 이외에 하나의 추가 미디어 디바이스에 데이터를 쓰도록 더 구성되는 시스템.
  8. 제 6 항에 있어서,
    프로세서는 특정 쓰기동작을 위한 성능 타겟을 식별하고 상기 성능 타겟을 특정 성능 인덱스로 맵핑하도록 구성되는 시스템.
  9. 제 8 항에 있어서,
    성능 타겟은 미디어 디바이스들의 읽기 액세스 시간에 해당하는 시스템.
  10. 제 8 항에 있어서,
    성능 타겟은 얼마나 많은 미디어 디바이스들이 식별된 그룹에 있는지에 해당하는 시스템.
  11. 제 1 항에 있어서,
    식별된 그룹에 있는 각각의 미디어 디바이스들 중 하나에서 개별적으로 액세스가능한 위치들을 구분하기 위해 쓰기동작시 사용된 쓰기 어드레스를 맵핑시키는 인디렉션 테이블을 저장한 메모리를 더 구비하는 시스템.
  12. 제 1 항에 있어서,
    프로세서는 동일한 물리적 어드레스를 이용해 각각의 미디어 디바이스들에 있는 데이터를 저장하도록 구성되는 시스템.
  13. 스토리지 소자; 및
    스토리지 액세스 시스템을 구비하고,
    상기 스토리지 액세스 시스템은:
    다수의 스토리지 소자들이 읽기동작에 이용될 수 있게 남아 있는 반면 다른 스토리지 소자들에는 데이터가 작성되도록 순차적으로 한번에 하나씩 스토리지 소자들에 동일 데이터를 작성하도록 구성된 쓰기동작을 수행하고;
    읽기동작을 위한 읽기 어드레스를 쓰기동작에 현재 사용중이지 않은 스토리지 소자들 중 다수의 다른 소자들로 맵핑시키며;
    읽기동작 동안 성능 인덱스와 관련되고 쓰기동작에 현재 사용중이지 않은 다수의 스토리지 소자들로부터 데이터를 동시에 읽도록 구성되고,
    읽기동작에 이용가능한 스토리지 소자들의 개수는 선택가능한 성능 인덱스와 관련있도록 구성된 장치.
  14. 제 13 항에 있어서,
    스토리지 소자는 플래시 고체상태 디바이스를 구비하는 장치.
  15. 제 13 항에 있어서,
    스토리지 소자들은 별도로 읽기 및 쓰기 액세스가능하고;
    스토리지 액세스 시스템은 쓰기동작 동안 성능 인덱스와 관련된 스토리지 소자의 개수에 대한 읽기동작의 차단 액세스를 방지하기 위해 다수의 다른 스토리지 액세스들 각각에 동일한 별도의 액세스가능한 동일 데이터의 복제를 반복적으로 작성하도록 구성되는 장치.
  16. 제 13 항에 있어서,
    스토리지 액세스 시스템은 3개 이상의 다른 스토리지 소자들에 데이터를 작성함으로써 가변 지연 스토리지 소자들에 대한 읽기 액세스 시간을 정규화하고, 그런 후 연이은 읽기동작에 응답해, 동시 쓰기동작에 현재 사용중이지 않은 스토리지 소자들 중 하나로부터 데이터를 다시 읽는 장치.
  17. 제 13 항에 있어서,
    스토리지 액세스 시스템은:
    제 1 세트의 쓰기동작에 대해 제 1 데이터 세트를 함께 집적하고;
    제 1 데이터 세트를 제 1 그룹의 스토리지 소자들 각각에 대해 연속한 물리적 어드레스 위치들에 작성하며;
    제 2 세트의 쓰기동작에 대해 제 2 데이터 세트를 함께 집적하고;
    제 2 데이터 세트를 상기 제 1 그룹의 스토리지 소자들과는 다른 제 2 그룹의 스토리지 소자들 각각에 대해 연속한 물리적 어드레스 위치들에 작성하며,
    스토리지 액세스 시스템은 제 1 데이터 세트로 현재 작성중이지 않는 제 1 그룹의 스토리지 소자들로부터 동시 읽기동작을 수행하도록 구성되고,
    스토리지 액세스 시스템은 제 2 데이터 세트로 현재 작성중이지 않는 제 2 그룹의 스토리지 소자들로부터 동시 읽기동작을 수행하도록 구성되는 장치.
  18. 제 13 항에 있어서,
    읽기 어드레스를 스토리지 소자에 있는 물리적 어드레스로 맵핑시키도록 구성된 인디렉션 테이블을 더 구비하는 장치.
  19. 제 13 항에 있어서,
    성능 인덱스는 다른 개수의 스토리지 소자 그룹과 상기 그룹내 다른 개수의 스토리지 소자로 맵핑되는 장치.
  20. 쓰기동작을 위해 데이터를 수신하는 단계;
    쓰기동작 세트를 위해 데이터 세트를 함께 집적하는 단계;
    상기 데이터 세트에 대한 성능 인덱스를 식별하는 단계;
    연속 쓰기동작 동안 다수의 미디어 디바이스들이 읽기동작에 의해 액세스될 수 있게 미디어 디바이스 그룹의 각 하나에 대해 연속 물리적 어드레스 위치에 상기 집적된 데이터 세트에 대한 연속 쓰기동작을 수행하는 단계를 포함하고,
    쓰기동작 동안 읽기동작에 의해 액세스될 수 있는 미디어 디바이스들의 개수는 성능 인덱스를 기초로 하는 방법.
  21. 제 20 항에 있어서,
    추가 쓰기동작 세트에 대해 추가 데이터 세트를 함께 집적하는 단계;
    상기 추가 데이터 세트에 대해 추가 성능 인덱스를 식별하는 단계;
    추가 연속 쓰기동작 동안 다수의 미디어 디바이스들이 추가 읽기동작에 의해 액세스될 수 있게 추가 미디어 디바이스 그룹의 각 하나에 대해 연속 물리적 어드레스 위치에 상기 집적된 추가 데이터 세트에 대한 추가 연속 쓰기동작을 수행하는 단계를 포함하고,
    추가 연속 쓰기동작 동안 추가 읽기동작에 의해 액세스될 수 있는 미디어 디바이스들의 개수는 추가 성능 인덱스를 기초로 하는 방법.
KR1020157030789A 2013-04-02 2013-04-02 스토리지 미디어 성능을 높이는 시스템 KR20160018471A (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2013/034938 WO2014163620A1 (en) 2013-04-02 2013-04-02 System for increasing storage media performance

Publications (1)

Publication Number Publication Date
KR20160018471A true KR20160018471A (ko) 2016-02-17

Family

ID=51658750

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157030789A KR20160018471A (ko) 2013-04-02 2013-04-02 스토리지 미디어 성능을 높이는 시스템

Country Status (3)

Country Link
EP (1) EP2981965A4 (ko)
KR (1) KR20160018471A (ko)
WO (1) WO2014163620A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10146681B2 (en) * 2015-12-24 2018-12-04 Intel Corporation Non-uniform memory access latency adaptations to achieve bandwidth quality of service

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08152976A (ja) * 1994-11-28 1996-06-11 Fujitsu Ltd 記憶装置のアクセス方法
US6976134B1 (en) * 2001-09-28 2005-12-13 Emc Corporation Pooling and provisioning storage resources in a storage network
US7194568B2 (en) * 2003-03-21 2007-03-20 Cisco Technology, Inc. System and method for dynamic mirror-bank addressing
JP2008152464A (ja) * 2006-12-15 2008-07-03 Toshiba Corp 記憶装置
US8375187B1 (en) * 2007-09-27 2013-02-12 Emc Corporation I/O scheduling for flash drives
US20110258362A1 (en) * 2008-12-19 2011-10-20 Mclaren Moray Redundant data storage for uniform read latency

Also Published As

Publication number Publication date
EP2981965A4 (en) 2017-03-01
EP2981965A1 (en) 2016-02-10
WO2014163620A1 (en) 2014-10-09

Similar Documents

Publication Publication Date Title
US8417871B1 (en) System for increasing storage media performance
US20140304452A1 (en) Method for increasing storage media performance
US11354235B1 (en) Memory controller for nonvolatile memory that tracks data write age and fulfills maintenance requests targeted to host-selected memory space subset
US10996863B1 (en) Nonvolatile memory with configurable zone/namespace parameters and host-directed copying of data across zones/namespaces
TWI740110B (zh) 在固態儲存驅動器陣列中的工作量適應超容量快取
US9575668B1 (en) Techniques for selecting write endurance classification of flash storage based on read-write mixture of I/O workload
US9619149B1 (en) Weighted-value consistent hashing for balancing device wear
EP3121730B1 (en) Memory system for controlling nonvolatile memory
US9569130B2 (en) Storage system having a plurality of flash packages
JP6313993B2 (ja) ホストのサービス品質インジケータに重みを割り当てるための装置および方法ならびに記憶媒体
US8438334B2 (en) Hybrid storage subsystem with mixed placement of file contents
US8862810B2 (en) Solid state device write operation management system
US7949847B2 (en) Storage extent allocation method for thin provisioning storage
US10261717B1 (en) Optimizing performance of snapshots based on service level objectives
WO2015145532A1 (ja) ストレージシステム及びデータ処理方法
EP2302500A2 (en) Application and tier configuration management in dynamic page realloction storage system
US9183142B2 (en) Reducing flash memory write amplification and latency
WO2012016209A2 (en) Apparatus, system, and method for redundant write caching
US11740801B1 (en) Cooperative flash management of storage device subdivisions
CN103761053A (zh) 一种数据处理方法和装置
CN113254358A (zh) 用于地址表高速缓存管理的方法和系统
US20210182192A1 (en) Storage device with enhanced time to ready performance
CN107688435B (zh) Io流调节方法与装置
KR20160018471A (ko) 스토리지 미디어 성능을 높이는 시스템
US11768628B2 (en) Information processing apparatus

Legal Events

Date Code Title Description
WITN Withdrawal due to no request for examination