KR20150127434A - 메모리제어장치 및 메모리제어장치의 동작 방법 - Google Patents

메모리제어장치 및 메모리제어장치의 동작 방법 Download PDF

Info

Publication number
KR20150127434A
KR20150127434A KR1020140054229A KR20140054229A KR20150127434A KR 20150127434 A KR20150127434 A KR 20150127434A KR 1020140054229 A KR1020140054229 A KR 1020140054229A KR 20140054229 A KR20140054229 A KR 20140054229A KR 20150127434 A KR20150127434 A KR 20150127434A
Authority
KR
South Korea
Prior art keywords
data
memory
data buffer
buffer
buffered
Prior art date
Application number
KR1020140054229A
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 에스케이텔레콤 주식회사
Priority to KR1020140054229A priority Critical patent/KR20150127434A/ko
Publication of KR20150127434A publication Critical patent/KR20150127434A/ko
Priority to KR1020210123905A priority patent/KR102347841B1/ko

Links

Images

Classifications

    • 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
    • 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/1076Parity data used in redundant arrays of independent storages, e.g. in RAID 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • 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/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/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD

Abstract

본 발명은, SSD와 같은 플래시기반 디바이스로 구성된 스토리지 시스템에서, RAID 구성 시 성능 및 신뢰도를 보다 효율적으로 높일 수 있는 방안을 제안하고 있다.

Description

메모리제어장치 및 메모리제어장치의 동작 방법{MEMORY MANAGEMENT APPARATUS AND CONTROL METHOD THEREOF}
본 발명은, 스토리지 시스템에 관한 것으로, 더욱 상세하게는, SSD와 같은 플래시기반 디바이스로 구성된 스토리지 시스템에서 성능 및 신뢰도를 보다 효율적으로 높일 수 있는 기술에 관한 것이다.
최근에는, HDD(Hard Disk Drive) 대비 성능이 향상된 SSD(Solid State Drive)가 널리 사용되기 시작하면서, 다수의 플래시기반 SSD를 채택한 스토리지(Storage) 시스템을 구성하여 네트워크를 통해 데이터 서비스를 제공하고 있다.
그 예로서, 스토리지 시스템이 단순하게 블록 수준의 스토리지 서비스를 지원하여 데이터 서비스를 제공할 수 있도록 하는 SAN(Storage Area Network) / NAS (Network Attached Storage) 역할을 담당할 수 있고, 또는 스토리지 시스템 내부에 응용서버를 운용해서 직접 데이터 서비스(예 : DB, 웹 서비스)제공할 수도 있다.
이러한, 다수의 플래시기반 SSD로 구성된 스토리지 시스템에서는, 기존의 HDD로 구성된 스토리지 시스템과 마찬가지로, 고성능 및 고신뢰도를 위해 RAID 알고리즘으로 디바이스를 묶어서 이용할 수 있다.
SSD와 같은 플래시기반 디바이스의 경우는, 작은 단위의 쓰기(이하, small write)에 대해서, HDD와 마찬가지로 성능이 저하되는 특성을 보이는 한편, P/E(program/erase) 사이클을 가속시켜 HDD와 달리 추가적으로 신뢰도에 취약한 특성을 보이며, RAID 알고리즘을 통해 디바이스를 묶어서 이용하는 경우 즉 RAID 구성 시 패리티정보 업데이트로 인해 이러한 신뢰도 취약 특성은 배가된다.
따라서, 기존의 HDD로 구성된 스토리지 시스템의 경우는, RAID 알고리즘을 통해 디바이스를 묶어서 이용하는 RAID 구성 만으로도 충분히 고성능 및 고신뢰도를 달성할 수 있었으나, SSD로 구성된 스토리지 시스템에서는 디바이스를 묶어서 이용하는 것만으로는 충분한 고성능 및 고신뢰도를 달성하는데 부족한 면이 있다.
이에, 본 발명에서는, 다수의 플래시기반 SSD로 구성된 스토리지 시스템에서, RAID 구성 시 성능 및 신뢰도를 보다 효율적으로 높일 수 있는 방안을 제안하고자 한다.
본 발명은 상기한 사정을 감안하여 창출된 것으로서, 본 발명에서 도달하고자 하는 목적은, SSD와 같은 플래시기반 디바이스로 구성된 스토리지 시스템에서, RAID 구성 시 성능 및 신뢰도를 보다 효율적으로 높이고자 한다.
상기 목적을 달성하기 위한 본 발명의 제 1 관점에 따른 메모리제어장치는, 메모리장치를 구성하는 다수의 메모리칩을 2 이상의 메모리그룹으로 그룹핑하는 그룹핑부; 상기 메모리장치에 대하여 수신되는 쓰기요청들을 상기 2 이상의 메모리그룹에 분산 할당하여, 상기 쓰기요청들의 데이터가 상기 2 이상의 메모리그룹 각각에 대응되는 데이터버퍼에 분산 버퍼링되도록 하는 할당제어부; 및 데이터버퍼에 버퍼링된 데이터를 대응되는 메모리그룹에 기록하는 데이터쓰기 동작을, 상기 2 이상의 메모리그룹 각각에 대응되는 데이터버퍼 별로 독립적으로 수행하여, 상기 쓰기요청들이 메모리그룹 단위로 병렬 처리될 수 있도록 하는 데이터기록제어부를 포함한다.
바람직하게는, 상기 할당제어부는, 상기 쓰기요청들 각각에 대하여, 쓰기요청의 논리블록주소(LBA : Logical Block Addressing) 및 메모리그룹의 개수를 기초로 상기 2 이상의 메모리그룹 중 할당할 메모리그룹을 결정하여, 상기 2 이상의 메모리그룹에 분산 할당할 수 있다.
바람직하게는, 데이터버퍼에는, 전달되는 데이터가 상기 데이터버퍼 내 비어있는 가장 앞선 위치에 버퍼링되며, 상기 데이터쓰기 동작은, 데이터버퍼가 풀(Full) 상태가 되면, 상기 데이터버퍼에 버퍼링된 모든 데이터 및 상기 모든 데이터와 관련된 패리티정보를 상기 데이터버퍼와 대응되는 메모리그룹에 기록하고, 상기 데이터버퍼를 비우는 동작일 수 있다.
바람직하게는 데이터버퍼에는, 전달되는 데이터가 상기 데이터버퍼 내 비어있는 가장 앞선 위치에 버퍼링되며, 상기 데이터버퍼는 2 이상의 부분버퍼로 구분되며, 상기 데이터쓰기 동작은, 상기 데이터버퍼가 풀 상태가 되기 이전에는, 상기 데이터버퍼 내 상기 2 이상의 부분버퍼 중 특정 부분버퍼가 풀 상태가 되면 상기 특정 부분버퍼에 버퍼링된 데이터를 상기 데이터버퍼와 대응되는 메모리그룹에 기록하고, 상기 2 이상의 부분버퍼 중 마지막 부분버퍼가 풀 상태가 되어 상기 데이터버퍼가 풀 상태가 되면, 상기 마지막 부분버퍼에 버퍼링된 데이터 및 상기 데이터버퍼에 버퍼링된 모든 데이터와 관련된 패리티정보를 상기 메모리그룹에 기록하고, 상기 데이터버퍼를 비우는 동작일 수 있다.
바람직하게는, 상기 부분버퍼는, 상기 메모리그룹에 포함되는 각 메모리칩의 청크(Chunk) 크기와 관련될 수 있다.
바람직하게는, 데이터버퍼에는, 전달되는 데이터가 상기 데이터버퍼 내 비어있는 가장 앞선 위치에 버퍼링되며, 상기 데이터쓰기 동작은, 상기 데이터버퍼 내 비어있지 않은 가장 앞선 위치의 데이터를 꺼내어 상기 데이터버퍼와 대응되는 메모리그룹에 기록하는 동작일 수 있다.
상기 목적을 달성하기 위한 본 발명의 제 2 관점에 따른 메모리제어장치의 동작 방법은, 메모리장치를 구성하는 다수의 메모리칩을 2 이상의 메모리그룹으로 그룹핑하는 그룹핑단계; 상기 메모리장치에 대하여 수신되는 쓰기요청들을 상기 2 이상의 메모리그룹에 분산 할당하여, 상기 쓰기요청들의 데이터가 상기 2 이상의 메모리그룹 각각에 대응되는 데이터버퍼에 분산 버퍼링되도록 하는 할당제어단계; 및 데이터버퍼에 버퍼링된 데이터를 대응되는 메모리그룹에 기록하는 데이터쓰기 동작을, 상기 2 이상의 메모리그룹 각각에 대응되는 데이터버퍼 별로 독립적으로 수행하여, 상기 쓰기요청들이 메모리그룹 단위로 병렬 처리될 수 있도록 하는 데이터기록제어단계를 포함한다.
바람직하게는, 상기 할당제어단계는, 상기 쓰기요청들 각각에 대하여, 쓰기요청의 논리블록주소(LBA : Logical Block Addressing) 및 메모리그룹의 개수를 기초로 상기 2 이상의 메모리그룹 중 할당할 메모리그룹을 결정하여, 상기 2 이상의 메모리그룹에 분산 할당할 수 있다.
바람직하게는, 데이터버퍼에는, 전달되는 데이터가 상기 데이터버퍼 내 비어있는 가장 앞선 위치에 버퍼링되며, 상기 데이터쓰기 동작은, 데이터버퍼가 풀(Full) 상태가 되면, 상기 데이터버퍼에 버퍼링된 모든 데이터 및 상기 모든 데이터와 관련된 패리티정보를 상기 데이터버퍼와 대응되는 메모리그룹에 기록하고, 상기 데이터버퍼를 비우는 동작일 수 있다.
바람직하게는, 데이터버퍼에는, 전달되는 데이터가 상기 데이터버퍼 내 비어있는 가장 앞선 위치에 버퍼링되며, 상기 데이터버퍼는 2 이상의 부분버퍼로 구분되며, 상기 데이터쓰기 동작은, 상기 데이터버퍼가 풀 상태가 되기 이전에는, 상기 데이터버퍼 내 상기 2 이상의 부분버퍼 중 특정 부분버퍼가 풀 상태가 되면 상기 특정 부분버퍼에 버퍼링된 데이터를 상기 데이터버퍼와 대응되는 메모리그룹에 기록하고, 상기 2 이상의 부분버퍼 중 마지막 부분버퍼가 풀 상태가 되어 상기 데이터버퍼가 풀 상태가 되면, 상기 마지막 부분버퍼에 버퍼링된 데이터 및 상기 데이터버퍼에 버퍼링된 모든 데이터와 관련된 패리티정보를 상기 메모리그룹에 기록하고, 상기 데이터버퍼를 비우는 동작일 수 있다.
이에, 본 발명의 메모리제어장치 및 메모리제어장치의 동작 방법에 의하면, SSD와 같은 플래시기반 디바이스로 구성된 스토리지 시스템에서, RAID 구성 시 성능 및 신뢰도를 보다 효율적으로 높일 수 있는 효과를 도출한다.
도 1은 본 발명의 바람직한 실시예에 따른 메모리제어장치가 포함된 스토리지 시스템의 구성을 간략하게 보여주는 구성도이다.
도 2는 본 발명의 바람직한 실시예에 따른 메모리제어장치를 구체적으로 보여주는 블록도이다.
도 3 및 도 4는 본 발명의 바람직한 실시예에 따른 메모리제어장치가 포함된 스토리지 시스템에서 쓰기요청들이 메모리그룹 단위로 병렬 처리되는 패스를 보여주는 예시도이다.
도 5는 본 발명의 바람직한 실시예에 따른 메모리제어장치의 동작 방법을 나타내는 동작 흐름도이다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예에 대하여 설명한다.
먼저, 도 1을 참조하여 본 발명의 바람직한 실시예에 따른 메모리제어장치가 포함된 스토리지 시스템의 구성을 설명하겠다.
도 1에 도시된 바와 같이, 스토리지 시스템은, 저장공간으로서의 메모리장치(10)와, 메모리장치(10)로의 메모리연산을 시도하는 파일시스템 또는 어플리케이션(이하, 파일시스템(200)이라 함)과, 파일시스템(200) 및 메모리장치(10) 사이에서 메모리장치(10)를 제어하는 메모리제어장치(100)를 포함한다.
이때, 메모리장치(10)는 여러 개의 플래시 메모리로 구성된 메모리칩을 다수 개 포함하며, 여기서 메모리칩은 SSD(Solid State Drive)와 같은 플래시기반 디바이스인 것이 바람직하다.
즉, 메모리장치(10)는, 도 1에 도시된 바와 같이, 다수의 메모리칩(#0,#1,#2...#N-1), 예컨대 N개의 플래시기반 SSD로 구성될 수 있다.
메모리제어장치(100)는, 파일시스템(200) 및 메모리장치(10) 사이에서 메모리장치(10)를 제어하는 제어모듈 또는 제어 소프트웨어일 수 있다.
현재는, 전술과 같이 다수의 플래시기반 SSD를 채용한 스토리지 시스템을 하나의 어레이로 하여 여러 개의 어레이 즉 스토리지 시스템을 구비한 메모리 어레이 시스템을 구축하여, 네트워크(미도시)를 통해 외부의 클라이언트컴퓨터(미도시)로 데이터 서비스를 제공하기도 한다.
이러한 스토리지 시스템에서는, 고성능 및 고신뢰도를 위해 중복 알고리즘(예 : RAID(Redundant Array of Independent Disks) 알고리즘, 이하 RAID 알고리즘이라 함)을 채용함으로써, RAID 알고리즘으로 메모리칩 즉 SSD를 묶어서 이용할 수 있다.
헌데, 다수의 플래시기반 SSD로 구성된 스토리지 시스템에서는, 전술과 같이 RAID 알고리즘으로 SSD를 묶어서 이용하는 RAID 구성 만으로는, 충분한 고성능 및 고신뢰도를 달성하는데 부족한 면이 있다.
이에, 본 발명에서는, 다수의 플래시기반 SSD로 구성된 스토리지 시스템에서, RAID 구성 시 성능 및 신뢰도를 보다 효율적으로 높일 수 있는 방안을 제안하고자 하며, 구체적으로 이를 실현하는 메모리제어장치를 제안하고자 한다.
이하에서는, 도 2를 참조하여 본 발명의 바림직한 실시예에 따른 메모리제어장치를 구체적으로 설명하도록 한다. 설명의 편의를 위해서, 전술한 도 1에서 대응되는 메모리제어장치(100)의 참조번호를 이용하여 설명하도록 하겠다.
본 발명에 따른 메모리제어장치(100)는, 메모리장치(10)를 구성하는 다수의 메모리칩을 2 이상의 메모리그룹으로 그룹핑하는 그룹핑부(110)와, 메모리장치(10)에 대하여 수신되는 쓰기요청들을 상기 2 이상의 메모리그룹에 분산 할당하여, 상기 쓰기요청들의 데이터가 상기 2 이상의 메모리그룹 각각에 대응되는 데이터버퍼에 분산 버퍼링되도록 하는 할당제어부(120)와, 데이터버퍼에 버퍼링된 데이터를 대응되는 메모리그룹에 기록하는 데이터쓰기 동작을, 상기 2 이상의 메모리그룹 각각에 대응되는 데이터버퍼 별로 독립적으로 수행하여, 상기 쓰기요청들이 메모리그룹 단위로 병렬 처리될 수 있도록 하는 데이터기록제어부(130)를 포함한다.
메모리장치(10)는 여러 개의 플래시 메모리로 구성된 메모리칩을 다수 개 포함하며, 여기서 메모리칩은 SSD(Solid State Drive)와 같은 플래시기반 디바이스인 것이 바람직하다.
즉, 메모리장치(10)는, 도 1에 도시된 바와 같이, 다수의 메모리칩, 예컨대 N개의 플래시기반 SSD(#0,#1,#2...#N-1)로 구성될 수 있다. 이하에서는, 설명의 편의를 위해, 메모리칩과 SSD를 혼용하여 설명할 수 있다.
본 발명에 따른 메모리제어장치(100)는, 다수의 플래시기반 SSD로 구성된 메모리장치(10)를 제어하는 메모리제어장치로서, 제어모듈 또는 제어 소프트웨어의 형태일 수 있으며, 메모리장치(10)를 제어하기 위해 필요한 저장공간(예 : 데이터버퍼 등)을 내부에 보유할 수 있다.
그룹핑부(110)는, 메모리장치(10)를 구성하는 다수의 메모리칩(#0,#1,#2...#N-1) 예컨대 N개의 SSD를, 2 이상의 메모리그룹으로 그룹핑한다.
즉, 본 발명에 따른 메모리제어장치(100)는, RAID 알고리즘으로 메모리칩 즉 SSD를 묶어서 메모리그룹 형태로 운영하는 것을 기본으로 한다.
이때, 본 발명에 따른 메모리제어장치(100)는, 메모리장치(10)를 구성하는 다수의 메모리칩(#0,#1,#2...#N-1) 예컨대 N개의 SSD를, 하나로 묶어 RAID를 구성하는 것이 아니라, N개 보다 작은 개수의 SSD로 묶어진 메모리그룹 즉 RAID 그룹을 구성하고자 한다.
이를 위해, 그룹핑부(110)는, 메모리장치(10)를 구성하는 다수의 메모리칩(#0,#1,#2...#N-1) 예컨대 N개의 SSD를, 2 이상의 메모리그룹으로 그룹핑한다.
이에, 도 3을 참조하여 설명하면, 그룹핑부(110)는, 메모리장치(10)를 구성하는 다수의 메모리칩(#0,#1,#2...#N-1)를, N개 보다 작은 개수(예 : 5개)로 묶어 M개의 메모리그룹(#0...#M-1)으로 그룹핑할 수 있다. 결국, M개의 메모리그룹(#0...#M-1)은, M개의 RAID그룹을 의미한다.
할당제어부(120)는, 메모리장치(10)에 대하여 수신되는 쓰기요청들을 그룹핑부(110)에서 그룹핑한 2 이상의 메모리그룹에 분산 할당하여, 쓰기요청들의 데이터가 2 이상의 메모리그룹 각각에 대응되는 데이터버퍼에 분산 버퍼링되도록 한다.
할당제어부(120)의 기능을 설명하기에 앞서, 도 3을 참조하여, 메모리장치(10)를 제어하기 위해 메모리제어장치(100) 내부에 보유되는 저장공간 즉, 데이터버퍼의 구조를 설명하도록 한다.
도 3에 도시된 바와 같이, 그룹핑한 2 이상의 메모리그룹 즉 M개의 메모리그룹(#0...#M-1) 각각에는, 메모리그룹 내에 기록하기 위한 데이터가 버퍼링되는 데이터버퍼가 각기 대응되도록 구비된다.
이에, 메모리그룹 #0에는 데이터버퍼 #0, 메모리그룹 #1에는 데이터버퍼 #1, ... 메모리그룹 #M에는 데이터버퍼 #M이 대응되도록 구비된다.
이때, 데이터버퍼의 크기는, 메모리그룹에 포함되는 개별 메모리칩 즉 개별 SSD의 성능을 최대로 이끌어낼 수 있는 크기, 또는 메모리그룹 즉 RAID그룹의 성능을 최대로 이끌어 낼 수 있는 크기인 것이 바람직하다.
예를 들어, 메모리칩 즉 SSD가 8 Channel, 8 Way로 구성되어 있고, 플래시메모리의 물리 페이지 크기가 8 KB인 경우, 적어도 8 x 8 x 8 KB인 512 KB 또는 그것의 절반인 256KB를 데이터버퍼의 크기로 결정하면, 개별 SSD의 성능을 최대로 이끌어낼 수 있다. 이것은 SSD의 특성에 의존하는 값이다.
한편, 메모리그룹 즉 RAID그룹의 최대 성능을 위해서는, 패리티정보 업데이트를 최소화시키는 것이 중요하다. 예를 들어, 청크 크기가 256KB인 5개의 메모리칩으로 RAID 5 알고리즘을 구성하면, 4 x 256KB인 1024 KB 크기를 데이터버퍼의 크기로 결정하면, 메모리그룹 즉 RAID그룹의 성능을 최대로 이끌어 낼 수 있다.
이하에서는 설명의 편의를 위해서, 메모리장치(10)에는 10개(N=10)의 메모리칩이 구성되어 있고, 그룹핑부(110)에서 10개의 메모리칩을 2개(M=2)의 메모리그룹 #0, 메모리그룹 #1로 그룹핑한 예를 언급하여 설명하겠다.
메모리제어장치(100)는, 메모리장치(10)에 대하여 메모리연산을 시도하는 요청을 파일시스템(200)으로부터 수신하게 된다. 이하에서는, 본 발명의 설명 편의를 위해서 쓰기요청이 수신되는 경우를 설명하겠다.
즉, 메모리제어장치(100)는, 메모리장치(10)에 대하여 쓰기연산을 시도하는 쓰기요청을, 파일시스템(200)으로부터 수신하게 된다.
할당제어부(120)는, 메모리장치(10)에 대하여 파일시스템(200)으로부터 수신되는 쓰기요청들 즉 메모리장치(10)에 대하여 쓰기연산이 시도되는 순서대로 수신되는 각각의 쓰기요청을, 그룹핑부(110)에서 그룹핑한 2 이상의 메모리그룹에 분산 할당한다.
보다 구체적으로 설명하면, 할당제어부(120)는, 수신되는 쓰기요청들 각각에 대하여, 쓰기요청의 논리블록주소(LBA : Logical Block Addressing) 및 메모리그룹의 개수를 기초로 상기 2 이상의 메모리그룹 중 할당할 메모리그룹을 결정함으로써, 그룹핑부(110)에서 그룹핑한 2 이상의 메모리그룹에 분산 할당할 수 있다.
파일시스템(200)으로부터 수신되는 쓰기요청 각각에는, 수신된 순서에 따라서 순차적으로 증가 또는 감소하는 숫자체계의 논리블록주소(LBA)가 부여된다.
이에, 할당제어부(120)는, 수신되는 쓰기요청들 각각에 대하여, 쓰기요청의 논리블록주소(LBA) 및 메모리그룹의 개수를 기초로 2 이상의 메모리그룹 중 할당할 메모리그룹을 결정할 수 있다.
예를 들면, 할당제어부(120)는, 쓰기요청의 논리블록주소(LBA)를 메모리그룹의 개수(M)로 나눈 나머지값에 대응되는 넘버링의 메모리그룹을, 해당 쓰기요청을 할당할 메모리그룹을 결정할 수 있다.
도 3에 도시된 바와 같이, 쓰기요청들 즉 메모리장치(10)에 대하여 쓰기연산이 시도되는 순서대로 수신되는 각각의 쓰기요청1,2,3,4,5,6...을 언급하고, 전술과 같이 2 개의 메모리그룹 #0, 메모리그룹 #1으로 그룹핑한 예를 언급하여 설명하면 다음과 같다.
할당제어부(120)는, 수신되는 쓰기요청1의 논리블록주소(LBA)를 메모리그룹의 개수(2)로 나눈 나머지값을 확인한다. 예를 들어, 나머지 값이 0이면, 할당제어부(120)는, 나머지값 0에 대응되는 넘버링의 메모리그룹 #0을 쓰기요청1을 할당할 메모리그룹으로 결정하고, 쓰기요청1을 결정한 메모리그룹 #0에 할당한다.
이에, 쓰기요청1의 데이터1은, 쓰기요청1이 할당된 메모리그룹 #0의 데이터버퍼 #0로 전달되어 데이터버퍼 #0에 버퍼링될 것이다.
이와 마찬가지로, 할당제어부(120)는 수신되는 쓰기요청2의 논리블록주소(LBA)를 메모리그룹의 개수(2)로 나눈 나머지값을 확인한다. 예를 들어, 나머지 값이 1이면, 할당제어부(120)는, 나머지값 1에 대응되는 넘버링의 메모리그룹 #1을 쓰기요청2를 할당할 메모리그룹으로 결정하고, 쓰기요청2를 결정한 메모리그룹 #1에 할당한다.
이에, 쓰기요청2의 데이터2는, 쓰기요청2가 할당된 메모리그룹 #1의 데이터버퍼 #1로 전달되어 데이터버퍼 #1에 버퍼링될 것이다.
이와 마찬가지로, 할당제어부(120)는, 수신되는 쓰기요청3의 논리블록주소(LBA)를 메모리그룹의 개수(2)로 나눈 나머지값을 확인한다. 예를 들어, 나머지 값이 0이면, 할당제어부(120)는, 나머지값 0에 대응되는 넘버링의 메모리그룹 #0을 쓰기요청3을 할당할 메모리그룹으로 결정하고, 쓰기요청3을 결정한 메모리그룹 #0에 할당한다.
이에, 쓰기요청3의 데이터3은, 쓰기요청3이 할당된 메모리그룹 #0의 데이터버퍼 #0으로 전달되어 데이터버퍼 #0에 버퍼링될 것이다.
이러한 방식으로, 할당제어부(120)는 쓰기요청4,5,6... 각각에 대해서도, 논리블록주소(LBA)를 메모리그룹의 개수(2)로 나눈 나머지값을 확인한다. 이에 할당제어부(120)는, 쓰기요청4,5,6... 각각의 나머지값(0 또는 1)에 대응되는 넘버링의 메모리그룹(#0 또는 #1)을 쓰기요청4,5,6... 각각을 할당할 메모리그룹으로 결정하고, 쓰기요청4,5,6... 각각을 결정한 메모리그룹(#0 또는 #1)에 할당한다.
이에, 쓰기요청4,5,6...의 데이터4,5,6...은, 쓰기요청4,5,6...이 할당된 메모리그룹(#0 또는 #1)의 데이터버퍼(#0 또는 #1)로 전달되어 데이터버퍼(#0 또는 #1)에 버퍼링될 것이다.
이처럼, 할당제어부(120)는, 수신되는 쓰기요청들 즉 쓰기요청1,2,3,4,5,6...각각에 대하여, 쓰기요청의 논리블록주소(LBA) 및 메모리그룹의 개수(M=2)를 기초로 2 이상의 메모리그룹 즉 메모리그룹 #0 및 메모리그룹 #1에 분산 할당함으로써, 쓰기요청들의 데이터 1,2,3,4,5,6...가 메모리그룹 #0, 메모리그룹 #1 각각에 대응되는 데이터버퍼 #0, 데이터버퍼 #1에 분산 버퍼링되도록 한다.
이때, 2 이상의 메모리그룹 각각에 대응되는 데이터버퍼, 예컨대 데이터버퍼 #0, 데이터버퍼 #1은, 할당제어부(120)에 의해 분산 할당되는 쓰기요청들의 각 데이터 다시 말해 임의 쓰기 형태로 전달되는 데이터를, 데이터버퍼 단위 내에서 순차 쓰기 형태로 변환하는 역할을 하게 된다.
데이터기록제어부(130)는, 데이터버퍼에 버퍼링된 데이터를 대응되는 메모리그룹에 기록하는 데이터쓰기 동작을, 2 이상의 메모리그룹 예컨대 메모리그룹 #0의 데이터버퍼 #0, 메모리그룹 #1의 데이터버퍼 #1 별로 독립적으로 수행한다.
즉, 데이터기록제어부(130)는, 데이터버퍼 #0에 버퍼링된 데이터를 메모리그룹 #0에 기록하는 데이터쓰기 동작을 수행하는 것과, 데이터버퍼 #1에 버퍼링된 데이터를 메모리그룹 #1에 기록하는 데이터쓰기 동작을 수행하는 것을, 각각 독립적으로 수행함으로써, 메모리그룹 #0에 할당된 쓰기요청들(예 : 1,3,5...) 및 메모리그룹 #1에 할당된 쓰기요청들(예 : 2,4,6...)이 메모리그룹 단위로 병렬 처리될 수 있도록 하는 것이다.
기본적으로, 데이터버퍼에는, 전달되는 데이터가 데이터버퍼 내 비어있는 가장 앞선 위치에 버퍼링된다.
즉, 전술의 예와 같이 쓰기요청1,3,5...가 메모리그룹 #0에 할당됨에 따라 데이터버퍼 #0로 전달되는 쓰기요청1,3,5... 각각의 데이터1,3,5...는, 데이터버퍼 #0로 전달되는 시점에 데이터버퍼 #0 내 비어있는 가장 앞선 위치에 버퍼링된다.
물론, 전술의 예와 같이 쓰기요청2,4,6...이 메모리그룹 #1에 할당됨에 따라 데이터버퍼 #1로 전달되는 쓰기요청2,4,6... 각각의 데이터2,4,6...은, 데이터버퍼 #1로 전달되는 시점에 데이터버퍼 #1 내 비어있는 가장 앞선 위치에 버퍼링된다.
이하에서는, 데이터버퍼(메모리그룹) 별로 독립 수행하는 데이터쓰기 동작을 구체적으로 설명하도록 한다.
먼저, 제1실시예를 설명하면, 제1실시예의 데이터쓰기 동작은, 데이터버퍼가 풀(Full) 상태가 되면, 데이터버퍼에 버퍼링된 모든 데이터 및 모든 데이터와 관련된 패리티정보를 데이터버퍼와 대응되는 메모리그룹에 기록하고, 데이터버퍼를 비우는 동작이다.
이하에서는, 설명의 편의를 위해 제1실시예에 따른 데이터쓰기 동작을, 도 4를 참조하여 데이터쓰기 동작B로 언급하여 설명하겠다.
즉, 데이터기록제어부(130)는, 메모리그룹 #0의 데이터버퍼 #0, 메모리그룹 #1의 데이터버퍼 #1 각각에 대하여, 데이터쓰기 동작B를 각각 독립적으로 수행한다.
설명의 편의를 위해 데이터버퍼 #0에 대하여 데이터쓰기 동작B를 수행하는 과정을 설명하면, 데이터기록제어부(130)는, 데이터버퍼 #0이 풀(Full) 상태가 되는지 확인한다.
전술과 같이 데이터버퍼 #0로 전달되는 쓰기요청1,3,5... 각각의 데이터1,3,5...가 데이터버퍼 #0 내 비어있는 가장 앞선 위치에 순서대로 버퍼링됨에 따라, 데이터버퍼 #0은 어느 시점에 도 4의 데이터쓰기 동작B에 도시된 바와 같이 풀 상태가 될 것이다.
데이터기록제어부(130)는, 데이터버퍼 #0이 풀 상태가 되면, 데이터버퍼 #0에 버퍼링된 모든 데이터(예 : 데이터1,3,5...) 및 모든 데이터(예 : 데이터1,3,5...)와 관련된 패리티정보를, 데이터버퍼 #0와 대응되는 메모리그룹 #0에 기록하고, 데이터버퍼 #0을 비운다.
여기서, 패리티정보는, 데이터를 기반으로 계산한 고유값(예 : 해쉬값)을 포함하는 정보로서, 데이터의 중복 여부를 판단하거나 데이터의 무결성을 판단하는데 이용되는 정보이다.
예를 들면, 데이터기록제어부(130)는, 데이터버퍼 #0이 풀 상태가 되면, 데이터버퍼 #0에 버퍼링된 모든 데이터(예 : 데이터1,3,5...)와, 데이터버퍼 #0에 버퍼링된 데이터1,3,5... 각각에 대하여 계산된 패리티정보를 포함하는 데이터세그먼트를 구성하고, 구성한 데이터세그먼트를 메모리그룹 #0 내 메모리칩 즉 메모리칩#0,#1,#2,#3,#4에 걸쳐서 기록함으로써, 데이터버퍼 #0에 버퍼링된 모든 데이터(예 : 데이터1,3,5...) 및 모든 데이터(예 : 데이터1,3,5...)와 관련된 패리티정보를 메모리그룹 #0에 기록할 수 있다.
이후, 데이터기록제어부(130)는, 데이터버퍼 #0을 비운다.
데이터기록제어부(130)는, 전술과 같이 데이터버퍼 #0에 대하여 데이터쓰기 동작B를 수행하는 것과는 별개로, 데이터버퍼 #1에 대하여 역시 데이터쓰기 동작B를 독립적으로 수행한다.
즉, 데이터기록제어부(130)는, 데이터버퍼 #1이 풀 상태가 되면, 데이터버퍼 #1에 버퍼링된 모든 데이터(예 : 데이터2,4,6...) 및 모든 데이터(예 : 데이터2,4,6...)와 관련된 패리티정보를, 데이터버퍼 #1과 대응되는 메모리그룹 #1에 기록하고, 데이터버퍼 #1을 비운다.
이처럼, 데이터기록제어부(130)는, 메모리그룹 #0의 데이터버퍼 #0, 메모리그룹 #1의 데이터버퍼 #1 각각에 대하여, 데이터쓰기 동작B를 각각 독립적으로 수행함으로써, 메모리그룹 #0에 할당된 쓰기요청들(예 : 1,3,5...) 및 메모리그룹 #1에 할당된 쓰기요청들(예 : 2,4,6...)이 메모리그룹 단위로 동시에 병렬 처리될 수 있도록 하는 것이다.
본 발명의 메모리제어장치(100)에서 전술의 데이터쓰기 동작B를 채택한다면, 일정하고 큰 단위(데이터버퍼 단위)의 쓰기이기 때문에 패리티정보 업데이트를 최소화시킬 수 있어 성능 향상에 유리한 반면, 갑작스러운 전원 오프 시 DRAM 상에 있는 많은 데이터를 손실할 수 있기 때문에 신뢰도 면에서 다소 불리할 수 있다.
한편, 제2실시예를 설명하면, 제2실시예의 데이터쓰기 동작은, 데이터버퍼 내 비어있지 않은 가장 앞선 위치의 데이터를 꺼내어 데이터버퍼와 대응되는 메모리그룹에 기록하는 동작이다.
이하에서는, 설명의 편의를 위해 제2실시예에 따른 데이터쓰기 동작을, 도 4를 참조하여 데이터쓰기 동작A로 언급하여 설명하겠다.
즉, 데이터기록제어부(130)는, 메모리그룹 #0의 데이터버퍼 #0, 메모리그룹 #1의 데이터버퍼 #1 각각에 대하여, 데이터쓰기 동작A를 각각 독립적으로 수행한다.
설명의 편의를 위해 데이터버퍼 #0에 대하여 데이터쓰기 동작A를 수행하는 과정을 설명하면, 데이터기록제어부(130)는, 데이터버퍼 #0 내 비어있지 않은 가장 앞선 위치의 데이터를 꺼내어 데이터버퍼 #0과 대응되는 메모리그룹 #0에 기록한다.
전술과 같이 데이터버퍼 #0로 전달되는 쓰기요청1,3,5... 각각의 데이터1,3,5...가 데이터버퍼 #0 내 비어있는 가장 앞선 위치에 순서대로 버퍼링됨에 따라, 데이터버퍼 #0 내 비어있지 않은 가장 앞선 위치에는 데이터1이 버퍼링되어 있을 것이다.
이에, 데이터기록제어부(130)는, 도 4의 데이터쓰기 동작A에 도시된 바와 같이, 데이터버퍼 #0 내 비어있지 않은 가장 앞선 위치의 데이터, 예컨대 데이터1을 꺼내어 메모리그룹 #0에 기록한다.
이후, 데이터버퍼 #0 내 비어있지 않은 가장 앞선 위치에는 데이터3이 버퍼링되어 있을 것이다.
이에, 데이터기록제어부(130)는, 데이터버퍼 #0 내 비어있지 않은 가장 앞선 위치의 데이터, 예컨대 데이터3을 꺼내어 메모리그룹 #0에 기록한다.
이런 방식으로, 데이터기록제어부(130)는, 데이터버퍼 #0로 전달/버퍼링되는 쓰기요청1,3,5... 각각의 데이터1,3,5...를, 데이터버퍼 #0 단위 내에서 순차 쓰기 형태가 되도록 맵핑정보(미도시) 관리를 통해서 주소만 변환해주고, 메모리그룹 #0에 기록한다.
물론, 데이터기록제어부(130)는, 데이터버퍼 #0에서 데이터를 꺼내어 메모리그룹 #0에 기록할 때마다, 기록하는 데이터의 패리티정보를 메모리그룹 #0에 기록할 수 있다.
데이터기록제어부(130)는, 전술과 같이 데이터버퍼 #0에 대하여 데이터쓰기 동작A를 수행하는 것과는 별개로, 데이터버퍼 #1에 대하여 역시 데이터쓰기 동작A를 독립적으로 수행한다.
즉, 데이터기록제어부(130)는, 데이터버퍼 #1로 전달/버퍼링되는 쓰기요청2,4,6... 각각의 데이터2,4,6...를, 데이터버퍼 #1 단위 내에서 순차 쓰기 형태가 되도록 맵핑정보(미도시) 관리를 통해서 주소만 변환해주고, 메모리그룹 #1에 기록한다.
이처럼, 데이터기록제어부(130)는, 메모리그룹 #0의 데이터버퍼 #0, 메모리그룹 #1의 데이터버퍼 #1 각각에 대하여, 데이터쓰기 동작A를 각각 독립적으로 수행함으로써, 메모리그룹 #0에 할당된 쓰기요청들(예 : 1,3,5...) 및 메모리그룹 #1에 할당된 쓰기요청들(예 : 2,4,6...)이 메모리그룹 단위로 동시에 병렬 처리될 수 있도록 하는 것이다.
본 발명의 메모리제어장치(100)에서 전술의 데이터쓰기 동작A를 채택한다면, 전술의 데이터쓰기 동작B를 채택하는 경우에 비해서, 갑작스러운 전원 오프가 우려되는 환경에서는 신뢰도가 우수한 반면, 작은 단위의 쓰기(small write)가 많기 때문에 패리티정보 업데이트가 많아져 성능 향상 면에서 불리하다.
본 발명의 메모리제어장치(100)에서 전술의 데이터쓰기 동작A를 채택하는 경우, 전술의 데이터쓰기 동작B를 채택하는 경우에 비해 성능 향상 면에서 불리하다고 할 수 있지만, 비록 small write 이더라도 데이터퍼버 단위 내에서 순차 쓰기 형태이기 때문에, 기존의 임의 쓰기 형태의 small write에 비해서는 성능이 향상될 것이다.
한편, 데이터쓰기 동작의 제3실시예를 설명하면 다음과 같다.
먼저, 각 데이터퍼버는, 2 이상의 부분버퍼로 구분된다.
이때, 부분버퍼는, 메모리그룹에 포함되는 각 메모리칩의 청크(Chunk) 크기와 관련된다.
보다 구체적으로 예를 들어, 메모리그룹 #0, #1에 포함되는 각 메모리칩의 청크(또는 스트립) 크기가 256KB라면, 각 데이터퍼버는 각 메모리칩의 청크 크기와 같은 256KB 단위의 부분버퍼로 구분될 수 있다.
이에, 제3실시예에 따른 데이터쓰기 동작은, 데이터버퍼가 풀 상태가 되기 이전에는, 데이터버퍼 내 2 이상의 부분버퍼 중 특정 부분버퍼가 풀 상태가 되면 특정 부분버퍼에 버퍼링된 데이터를 데이터버퍼와 대응되는 메모리그룹에 기록한다. 그리고, 제3실시예에 따른 데이터쓰기 동작은, 2 이상의 부분버퍼 중 마지막 부분버퍼가 풀 상태가 되어 데이터버퍼가 풀 상태가 되면, 마지막 부분버퍼에 버퍼링된 데이터 및 데이터버퍼에 버퍼링된 모든 데이터와 관련된 패리티정보를 상기 메모리그룹에 기록하고, 데이터버퍼를 비우는 동작이다.
이하에서는, 설명의 편의를 위해 제3실시예에 따른 데이터쓰기 동작을, 도 4를 참조하여 데이터쓰기 동작C로 언급하여 설명하겠다.
즉, 데이터기록제어부(130)는, 메모리그룹 #0의 데이터버퍼 #0, 메모리그룹 #1의 데이터버퍼 #1 각각에 대하여, 데이터쓰기 동작C를 각각 독립적으로 수행한다.
설명의 편의를 위해 메모리그룹 #0에 대하여 데이터쓰기 동작C를 수행하는 과정을 설명하면, 데이터기록제어부(130)는, 데이터버퍼 #0이 풀(Full) 상태가 되는지 확인한다.
데이터버퍼 #0이 풀 상태가 아니면, 데이터기록제어부(130)는, 데이터버퍼 #0 내 2 이상의 부분버퍼, 예컨대 도 4에 도시된 3개의 부분버퍼a,b,c 중 특정 부분데이터가 풀 상태가 되면 특정 부분버퍼에 버퍼링된 데이터를 데이터버퍼 #0와 대응되는 메모리그룹 #0에 기록한다.
전술과 같이 데이터버퍼 #0로 전달되는 쓰기요청1,3,5... 각각의 데이터1,3,5...가 데이터버퍼 #0 내 비어있는 가장 앞선 위치에 순서대로 버퍼링됨에 따라, 데이터버퍼 #0 내 부분버퍼a,b,c 중에서는 가장 앞선 위치의 부분버퍼a가 풀 상태가 될 것이다.
이 경우, 데이터기록제어부(130)는, 데이터버퍼 #0이 풀 상태가 되기 이전이기 때문에, 데이터버퍼 #0 내 부분버퍼a,b,c 중 풀 상태가 된 특정 부분버퍼 즉 부분버퍼a에 버퍼링된 데이터를 메모리그룹 #0에 기록한다. 이때, 데이터기록제어부(130)는, 부분버퍼a에 버퍼링된 데이터의 패리티정보는 메모리그룹 #0에 기록하지 않는다.
이후, 전술과 같이 데이터버퍼 #0로 전달되는 쓰기요청1,3,5... 각각의 데이터1,3,5...가 데이터버퍼 #0 내 비어있는 가장 앞선 위치에 순서대로 버퍼링됨에 따라, 데이터버퍼 #0 내 부분버퍼a,b,c 중에서는 부분버퍼b가 풀 상태가 될 것이다.
이 경우, 데이터기록제어부(130)는, 데이터버퍼 #0이 풀 상태가 되기 이전이기 때문에, 데이터버퍼 #0 내 부분버퍼a,b,c 중 풀 상태가 된 특정 부분버퍼 즉 부분버퍼b에 버퍼링된 데이터를 메모리그룹 #0에 기록한다. 이때, 데이터기록제어부(130)는, 부분버퍼b에 버퍼링된 데이터의 패리티정보는 메모리그룹 #0에 기록하지 않는다.
이후, 전술과 같이 데이터버퍼 #0로 전달되는 쓰기요청1,3,5... 각각의 데이터1,3,5...가 데이터버퍼 #0 내 비어있는 가장 앞선 위치에 순서대로 버퍼링됨에 따라, 데이터버퍼 #0 내 부분버퍼a,b,c 중에서는 마지막 부분버퍼c가 풀 상태가 될 것이고, 이 경우 데이터버퍼 #0이 풀 상태가 될 것이다.
이 경우, 데이터기록제어부(130)는, 데이터버퍼 #0이 풀 상태가 되었기 때문에, 마지막 부분버퍼c에 버퍼링된 데이터를 메모리그룹#0에 기록하고, 이와 함께 데이터버퍼 #0에 버퍼링된 모든 데이터(부분버퍼a,b,c 에 버퍼링된 모든 데이터) 각각에 대하여 계산된 패리티정보를 메모리그룹#0에 기록할 수 있다.
이후, 데이터기록제어부(130)는, 데이터버퍼 #0을 비운다.
데이터기록제어부(130)는, 전술과 같이 데이터버퍼 #0에 대하여 데이터쓰기 동작C를 수행하는 것과는 별개로, 데이터버퍼 #1에 대하여 역시 데이터쓰기 동작C를 독립적으로 수행한다.
즉, 데이터기록제어부(130)는, 데이터버퍼 #1이 풀 상태가 되기 이전에는 부분버퍼a,b,c 중 풀 상태가 된 특정 부분버퍼(예 : a,b)에 버퍼링된 데이터를 메모리그룹 #1에 기록하고, 부분버퍼a,b,c 중 마지막 부분버퍼c가 풀 상태가 되어 데이터버퍼 #1이 풀 상태가 되면 마지막 부분버퍼c에 버퍼링된 데이터를 메모리그룹 #1에 기록하고 이와 함께 데이터버퍼 #1에 버퍼링된 모든 데이터 각각에 대하여 계산된 패리티정보를 메모리그룹#1에 기록하고, 데이터버퍼 #1을 비운다.
이처럼, 데이터기록제어부(130)는, 메모리그룹 #0의 데이터버퍼 #0, 메모리그룹 #1의 데이터버퍼 #1 각각에 대하여, 데이터쓰기 동작C를 각각 독립적으로 수행함으로써, 메모리그룹 #0에 할당된 쓰기요청들(예 : 1,3,5...) 및 메모리그룹 #1에 할당된 쓰기요청들(예 : 2,4,6...)이 메모리그룹 단위로 동시에 병렬 처리될 수 있도록 하는 것이다.
본 발명의 메모리제어장치(100)에서 전술의 데이터쓰기 동작C를 채택한다면, 전술의 데이터쓰기 동작A 및 데이터쓰기 동작B의 장점을 모두 취할 수 있다.
즉, 본 발명의 메모리제어장치(100)에서 전술의 데이터쓰기 동작C를 채택한다면, 갑작스러운 전원 오프 시 손실이 우려되는 데이터의 크기를 데이터버퍼의 크기보다 작은 부분버퍼 크기로 줄일 수 있어 데이터쓰기 동작B를 채택하는 경우에 비해 신뢰도가 향상되며, 데이터쓰기 동작A를 채택하는 경우에 비해 패리티정보 업데이트를 줄여 성능을 향상시킬 수 있다.
이상에서 설명한 바와 같이, 본 발명에 따른 메모리제어장치(100)는, 메모리장치(10) 내 다수의 메모리칩을 2 이상의 메모리그룹(RAID그룹)으로 그룹핑하고, 각 메모리그룹 별로 데이터버퍼를 각기 구비하는 구조를 배경으로, 메모리장치(10)에 대하여 수신되는 쓰기요청들을 각 메모리그룹으로 분산 할당하여 쓰기요청들의 데이터 각각이 각 메모리그룹의 데이터버퍼에 분산 버퍼링되도록 하고, 데이터쓰기 동작(A 또는 B 또는 C)를 각 메모리그룹의 데이터버퍼 별로 독립 수행함으로써, 결과적으로 쓰기요청들이 메모리그룹 단위로 병렬 처리될 수 있게 한다.
이에, 본 발명의 실시예에 따른 메모리제어장치(100)는, SSD와 같은 플래시기반 디바이스로 구성된 스토리지 시스템에서, RAID 구성 시 성능 및 신뢰도를 보다 효율적으로 높일 수 있는 효과를 도출한다.
아울러, 본 발명에 따른 메모리제어장치(100)는, SSD 어레이를 추가하여 스토리지 시스템의 용량을 확장하는 경우, 용량 확장 뿐 아니라 성능 확장까지도 이끌어낼 수 있는 환경적 이점을 제공할 수 있다.
예를 들어, 전술의 예와 같이 10개(N=10)의 메모리칩이 구성되어 있고, 10개의 메모리칩을 2개(M=2)의 메모리그룹 #0, 메모리그룹 #1로 그룹핑하여 이용하는 상황에서, 새로운 SSD 어레이(예 : SSD 10개)를 추가하여 스토리지 시스템의 용량을 확장하는 경우를 가정해 본다.
이 경우, 본 발명에 따른다면, 새로운 RAID그룹 즉 메모리그룹(#2, #3)이 생기게 되고, 따라서 쓰기요청을 각 메모리그룹에 분산 할당하는 것 역시 새로운 메모리그룹을 고려하여 변경될 필요가 있다.
이때, 본 발명의 메모리제어장치(100)는, 전술에서 설명한 바와 같이, 쓰기요청의 논리블록주소(LBA)를 메모리그룹의 개수(M)로 나눈 나머지값에 대응되는 넘버링의 메모리그룹을, 해당 쓰기요청을 할당할 메모리그룹을 결정/할당하기 때문에, 할당할 메모리그룹을 결정하는데 사용하는 파라미터 즉 메모리그룹의 개수(M)을 4로 바꿔 계산하기만 하면, 쓰기요청을 각 메모리그룹에 분산 할당하는 것을 새로운 메모리그룹을 고려하여 간단하게 변경(이하, 쓰기요청 할당 재배치)할 수 있게 된다.
이때, 본 발명의 메모리제어장치(100)는, 쓰기요청 할당 재배치가 완료될 때까지 상위에서 오는 요청(쓰기, 읽기 등)을 막을 수도 있고, 상위에서 오는 요청(쓰기, 읽기 등)을 받아들이면서 쓰기요청 할당 재배치를 진행할 수도 있다.
이에, 본 발명에 따른 메모리제어장치(100)는, 스토리지 시스템의 용량을 확장하여 새로운 메모리그룹이 생기면, 쓰기요청을 동시에 병렬 처리할 수 있는 성능 역시 그 만큼 증가되는 것이기 때문에, 용량 확장 뿐 아니라 성능 확장까지도 효율적으로 이끌어낼 수 있는 환경적 이점을 제공하는 것이다.
이하에서는 도 5를 참조하여 본 발명의 바람직한 실시예에 따른 메모리제어장치의 동작 방법을 설명하도록 하겠다. 설명의 편의를 위해서, 도 1 내지 도 4의 참조번호를 언급하여 설명하도록 하겠다.
본 발명에 따른 메모리제어장치(100)의 동작 방법은, 메모리장치(10)를 구성하는 다수의 메모리칩(#0,#1,#2...#N-1) 예컨대 N개의 SSD를, 2 이상의 메모리그룹으로 그룹핑한다(S100).
이때, 본 발명에서는, 도 3에 도시된 바와 같이, 2 이상의 메모리그룹 즉 M개의 메모리그룹(#0...#M-1) 각각에는, 메모리그룹 내에 기록하기 위한 데이터가 버퍼링되는 데이터버퍼가 각기 대응되도록 구비된다.
이에, 메모리그룹 #0에는 데이터버퍼 #0, 메모리그룹 #1에는 데이터버퍼 #1, ... 메모리그룹 #M에는 데이터버퍼 #M이 대응되도록 구비된다.
이하에서는 설명의 편의를 위해서, 메모리장치(10)에는 10개(N=10)의 메모리칩이 구성되어 있고, S100단계에서 10개의 메모리칩을 2개(M=2)의 메모리그룹 #0, 메모리그룹 #1로 그룹핑한 예를 언급하여 설명하겠다.
본 발명에 따른 메모리제어장치(100)의 동작 방법은, 메모리장치(10)에 대하여 쓰기연산을 시도하는 쓰기요청을, 파일시스템(200)으로부터 수신하게 된다(S110).
예컨대, 본 발명에 따른 메모리제어장치(100)의 동작 방법은, 쓰기요청들 즉 메모리장치(10)에 대하여 쓰기연산이 시도되는 순서대로 수신되는 각각의 쓰기요청1,2,3,4,5,6...을 수신할 수 있다.
본 발명에 따른 메모리제어장치(100)의 동작 방법은, 수신되는 쓰기요청들 각각에 대하여, 쓰기요청의 논리블록주소(LBA) 및 메모리그룹의 개수(M=2)를 기초로 2 이상의 메모리그룹 즉 메모리그룹 #0, 메모리그룹 #1 중 할당할 메모리그룹을 결정하고, 결정한 메모리그룹에 해당 쓰기요청을 할당한다(S120).
예를 들면, 본 발명에 따른 메모리제어장치(100)의 동작 방법은, 수신되는 쓰기요청1의 논리블록주소(LBA)를 메모리그룹의 개수(2)로 나눈 나머지값을 확인한다. 예를 들어, 나머지 값이 0이면, 본 발명에 따른 메모리제어장치(100)의 동작 방법은, 나머지값 0에 대응되는 넘버링의 메모리그룹 #0을 쓰기요청1을 할당할 메모리그룹으로 결정하고, 쓰기요청1을 결정한 메모리그룹 #0에 할당한다(S120).
이에, 쓰기요청1의 데이터1은, 쓰기요청1이 할당된 메모리그룹 #0의 데이터버퍼 #0로 전달되어 데이터버퍼 #0에 버퍼링될 것이다(S130).
이와 마찬가지로, 본 발명에 따른 메모리제어장치(100)의 동작 방법은, 수신되는 쓰기요청2의 논리블록주소(LBA)를 메모리그룹의 개수(2)로 나눈 나머지값을 확인한다. 예를 들어, 나머지 값이 1이면, 본 발명에 따른 메모리제어장치(100)의 동작 방법은, 나머지값 1에 대응되는 넘버링의 메모리그룹 #1을 쓰기요청2를 할당할 메모리그룹으로 결정하고, 쓰기요청2를 결정한 메모리그룹 #1에 할당한다(S120).
이에, 쓰기요청2의 데이터2는, 쓰기요청2가 할당된 메모리그룹 #1의 데이터버퍼 #1로 전달되어 데이터버퍼 #1에 버퍼링될 것이다(S130).
이와 마찬가지로, 본 발명에 따른 메모리제어장치(100)의 동작 방법은, 수신되는 쓰기요청3의 논리블록주소(LBA)를 메모리그룹의 개수(2)로 나눈 나머지값을 확인한다. 예를 들어, 나머지 값이 0이면, 본 발명에 따른 메모리제어장치(100)의 동작 방법은, 나머지값 0에 대응되는 넘버링의 메모리그룹 #0을 쓰기요청3을 할당할 메모리그룹으로 결정하고, 쓰기요청3을 결정한 메모리그룹 #0에 할당한다(S120).
이에, 쓰기요청3의 데이터3은, 쓰기요청3이 할당된 메모리그룹 #0의 데이터버퍼 #0으로 전달되어 데이터버퍼 #0에 버퍼링될 것이다(S130).
이러한 방식으로, 본 발명에 따른 메모리제어장치(100)의 동작 방법은, 쓰기요청4,5,6... 각각에 대해서도, 논리블록주소(LBA)를 메모리그룹의 개수(2)로 나눈 나머지값을 확인한다. 이에 본 발명에 따른 메모리제어장치(100)의 동작 방법은, 쓰기요청4,5,6... 각각의 나머지값(0 또는 1)에 대응되는 넘버링의 메모리그룹(#0 또는 #1)을 쓰기요청4,5,6... 각각을 할당할 메모리그룹으로 결정하고, 쓰기요청4,5,6... 각각을 결정한 메모리그룹(#0 또는 #1)에 할당한다(S120).
이에, 쓰기요청4,5,6...의 데이터4,5,6...은, 쓰기요청4,5,6...이 할당된 메모리그룹(#0 또는 #1)의 데이터버퍼(#0 또는 #1)로 전달되어 데이터버퍼(#0 또는 #1)에 버퍼링될 것이다(S130).
이처럼, 본 발명에 따른 메모리제어장치(100)의 동작 방법은, 수신되는 쓰기요청들 즉 쓰기요청1,2,3,4,5,6...각각에 대하여, 쓰기요청의 논리블록주소(LBA) 및 메모리그룹의 개수(M=2)를 기초로 2 이상의 메모리그룹 즉 메모리그룹 #0 및 메모리그룹 #1에 분산 할당함으로써, 쓰기요청들의 데이터 1,2,3,4,5,6...가 메모리그룹 #0, 메모리그룹 #1 각각에 대응되는 데이터버퍼 #0, 데이터버퍼 #1에 분산 버퍼링되도록 한다.
본 발명에 따른 메모리제어장치(100)의 동작 방법은, 데이터버퍼에 버퍼링된 데이터를 대응되는 메모리그룹에 기록하는 데이터쓰기 동작을, 2 이상의 메모리그룹 즉 메모리그룹 #0의 데이터버퍼 #0, 메모리그룹 #1의 데이터버퍼 #1 별로 독립적으로 수행한다(S140).
즉, 본 발명에 따른 메모리제어장치(100)의 동작 방법은, 메모리그룹 #0의 데이터버퍼 #0, 메모리그룹 #1의 데이터버퍼 #1 각각에 대하여, 전술의 데이터쓰기 동작(A 또는 B 또는 C)를 각각 독립적으로 수행함으로써, 메모리그룹 #0에 할당된 쓰기요청들(예 : 1,3,5...) 및 메모리그룹 #1에 할당된 쓰기요청들(예 : 2,4,6...)이 메모리그룹 단위로 동시에 병렬 처리될 수 있도록 하는 것이다.
이상에서 설명한 바와 같이, 본 발명에 따른 본 발명에 따른 메모리제어장치(100)의 동작 방법은, 메모리장치(10) 내 다수의 메모리칩을 2 이상의 메모리그룹(RAID그룹)으로 그룹핑하고, 각 메모리그룹 별로 데이터버퍼를 각기 구비하는 구조를 배경으로, 메모리장치(10)에 대하여 수신되는 쓰기요청들을 각 메모리그룹으로 분산 할당하여 쓰기요청들의 데이터 각각이 각 메모리그룹의 데이터버퍼에 분산 버퍼링되도록 하고, 데이터쓰기 동작(A 또는 B 또는 C)를 각 메모리그룹의 데이터버퍼 별로 독립 수행함으로써, 결과적으로 쓰기요청들이 메모리그룹 단위로 병렬 처리될 수 있게 한다.
이에, 본 발명의 실시예에 따른 메모리제어장치의 동작 방법은, SSD와 같은 플래시기반 디바이스로 구성된 스토리지 시스템에서, RAID 구성 시 성능 및 신뢰도를 보다 효율적으로 높일 수 있는 효과를 도출한다.
본 발명의 일실시예에 따른 메모리제어장치의 동작 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플룹티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
지금까지 본 발명을 바람직한 실시 예를 참조하여 상세히 설명하였지만, 본 발명이 상기한 실시 예에 한정되는 것은 아니며, 이하의 특허청구범위에서 청구하는 본 발명의 요지를 벗어남이 없이 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 누구든지 다양한 변형 또는 수정이 가능한 범위까지 본 발명의 기술적 사상이 미친다 할 것이다.
본 발명에 따른 메모리제어장치 및 메모리제어장치의 동작 방법에 따르면 SSD와 같은 플래시기반 디바이스로 구성된 스토리지 시스템에서, RAID 구성 시 성능 및 신뢰도를 보다 효율적으로 높일 수 있다는 점에서, 기존 기술의 한계를 뛰어 넘음에 따라 관련 기술에 대한 이용만이 아닌 적용되는 장치의 시판 또는 영업의 가능성이 충분할 뿐만 아니라 현실적으로 명백하게 실시할 수 있는 정도이므로 산업상 이용가능성이 있는 발명이다.
10 : 메모리장치
100 : 메모리제어장치
110 : 그룹핑부 120 : 할당제어부
130 : 데이터기록제어부
200 : 파일시스템/어플리케이션

Claims (10)

  1. 메모리장치를 구성하는 다수의 메모리칩을 2 이상의 메모리그룹으로 그룹핑하는 그룹핑부;
    상기 메모리장치에 대하여 수신되는 쓰기요청들을 상기 2 이상의 메모리그룹에 분산 할당하여, 상기 쓰기요청들의 데이터가 상기 2 이상의 메모리그룹 각각에 대응되는 데이터버퍼에 분산 버퍼링되도록 하는 할당제어부; 및
    데이터버퍼에 버퍼링된 데이터를 대응되는 메모리그룹에 기록하는 데이터쓰기 동작을, 상기 2 이상의 메모리그룹 각각에 대응되는 데이터버퍼 별로 독립적으로 수행하여, 상기 쓰기요청들이 메모리그룹 단위로 병렬 처리될 수 있도록 하는 데이터기록제어부를 포함하는 것을 특징으로 하는 메모리제어장치.
  2. 제 1 항에 있어서,
    상기 할당제어부는,
    상기 쓰기요청들 각각에 대하여, 쓰기요청의 논리블록주소(LBA : Logical Block Addressing) 및 메모리그룹의 개수를 기초로 상기 2 이상의 메모리그룹 중 할당할 메모리그룹을 결정하여, 상기 2 이상의 메모리그룹에 분산 할당하는 것을 특징으로 하는 메모리제어장치.
  3. 제 1 항에 있어서,
    데이터버퍼에는, 전달되는 데이터가 상기 데이터버퍼 내 비어있는 가장 앞선 위치에 버퍼링되며,
    상기 데이터쓰기 동작은,
    데이터버퍼가 풀(Full) 상태가 되면, 상기 데이터버퍼에 버퍼링된 모든 데이터 및 상기 모든 데이터와 관련된 패리티정보를 상기 데이터버퍼와 대응되는 메모리그룹에 기록하고, 상기 데이터버퍼를 비우는 동작인 것을 특징으로 하는 메모리제어장치.
  4. 제 1 항에 있어서,
    데이터버퍼에는, 전달되는 데이터가 상기 데이터버퍼 내 비어있는 가장 앞선 위치에 버퍼링되며,
    상기 데이터버퍼는 2 이상의 부분버퍼로 구분되며,
    상기 데이터쓰기 동작은,
    상기 데이터버퍼가 풀 상태가 되기 이전에는, 상기 데이터버퍼 내 상기 2 이상의 부분버퍼 중 특정 부분버퍼가 풀 상태가 되면 상기 특정 부분버퍼에 버퍼링된 데이터를 상기 데이터버퍼와 대응되는 메모리그룹에 기록하고,
    상기 2 이상의 부분버퍼 중 마지막 부분버퍼가 풀 상태가 되어 상기 데이터버퍼가 풀 상태가 되면, 상기 마지막 부분버퍼에 버퍼링된 데이터 및 상기 데이터버퍼에 버퍼링된 모든 데이터와 관련된 패리티정보를 상기 메모리그룹에 기록하고, 상기 데이터버퍼를 비우는 동작인 것을 특징으로 하는 메모리제어장치.
  5. 제4 항에 있어서,
    상기 부분버퍼는, 상기 메모리그룹에 포함되는 각 메모리칩의 청크(Chunk) 크기와 관련되는 것을 특징으로 하는 메모리제어장치.
  6. 제 1 항에 있어서,
    데이터버퍼에는, 전달되는 데이터가 상기 데이터버퍼 내 비어있는 가장 앞선 위치에 버퍼링되며,
    상기 데이터쓰기 동작은,
    상기 데이터버퍼 내 비어있지 않은 가장 앞선 위치의 데이터를 꺼내어 상기 데이터버퍼와 대응되는 메모리그룹에 기록하는 동작인 것을 특징으로 하는 메모리제어장치.
  7. 메모리장치를 구성하는 다수의 메모리칩을 2 이상의 메모리그룹으로 그룹핑하는 그룹핑단계;
    상기 메모리장치에 대하여 수신되는 쓰기요청들을 상기 2 이상의 메모리그룹에 분산 할당하여, 상기 쓰기요청들의 데이터가 상기 2 이상의 메모리그룹 각각에 대응되는 데이터버퍼에 분산 버퍼링되도록 하는 할당제어단계; 및
    데이터버퍼에 버퍼링된 데이터를 대응되는 메모리그룹에 기록하는 데이터쓰기 동작을, 상기 2 이상의 메모리그룹 각각에 대응되는 데이터버퍼 별로 독립적으로 수행하여, 상기 쓰기요청들이 메모리그룹 단위로 병렬 처리될 수 있도록 하는 데이터기록제어단계를 포함하는 것을 특징으로 하는 메모리제어장치의 동작 방법.
  8. 제 7 항에 있어서,
    상기 할당제어단계는,
    상기 쓰기요청들 각각에 대하여, 쓰기요청의 논리블록주소(LBA : Logical Block Addressing) 및 메모리그룹의 개수를 기초로 상기 2 이상의 메모리그룹 중 할당할 메모리그룹을 결정하여, 상기 2 이상의 메모리그룹에 분산 할당하는 것을 특징으로 하는 메모리제어장치의 동작 방법.
  9. 제 7 항에 있어서,
    데이터버퍼에는, 전달되는 데이터가 상기 데이터버퍼 내 비어있는 가장 앞선 위치에 버퍼링되며,
    상기 데이터쓰기 동작은,
    데이터버퍼가 풀(Full) 상태가 되면, 상기 데이터버퍼에 버퍼링된 모든 데이터 및 상기 모든 데이터와 관련된 패리티정보를 상기 데이터버퍼와 대응되는 메모리그룹에 기록하고, 상기 데이터버퍼를 비우는 동작인 것을 특징으로 하는 메모리제어장치의 동작 방법.
  10. 제 7 항에 있어서,
    데이터버퍼에는, 전달되는 데이터가 상기 데이터버퍼 내 비어있는 가장 앞선 위치에 버퍼링되며,
    상기 데이터버퍼는 2 이상의 부분버퍼로 구분되며,
    상기 데이터쓰기 동작은,
    상기 데이터버퍼가 풀 상태가 되기 이전에는, 상기 데이터버퍼 내 상기 2 이상의 부분버퍼 중 특정 부분버퍼가 풀 상태가 되면 상기 특정 부분버퍼에 버퍼링된 데이터를 상기 데이터버퍼와 대응되는 메모리그룹에 기록하고,
    상기 2 이상의 부분버퍼 중 마지막 부분버퍼가 풀 상태가 되어 상기 데이터버퍼가 풀 상태가 되면, 상기 마지막 부분버퍼에 버퍼링된 데이터 및 상기 데이터버퍼에 버퍼링된 모든 데이터와 관련된 패리티정보를 상기 메모리그룹에 기록하고, 상기 데이터버퍼를 비우는 동작인 것을 특징으로 하는 메모리제어장치의 동작 방법.
KR1020140054229A 2014-05-07 2014-05-07 메모리제어장치 및 메모리제어장치의 동작 방법 KR20150127434A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020140054229A KR20150127434A (ko) 2014-05-07 2014-05-07 메모리제어장치 및 메모리제어장치의 동작 방법
KR1020210123905A KR102347841B1 (ko) 2014-05-07 2021-09-16 메모리제어장치 및 메모리제어장치의 동작 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140054229A KR20150127434A (ko) 2014-05-07 2014-05-07 메모리제어장치 및 메모리제어장치의 동작 방법

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020210123905A Division KR102347841B1 (ko) 2014-05-07 2021-09-16 메모리제어장치 및 메모리제어장치의 동작 방법

Publications (1)

Publication Number Publication Date
KR20150127434A true KR20150127434A (ko) 2015-11-17

Family

ID=54786064

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020140054229A KR20150127434A (ko) 2014-05-07 2014-05-07 메모리제어장치 및 메모리제어장치의 동작 방법
KR1020210123905A KR102347841B1 (ko) 2014-05-07 2021-09-16 메모리제어장치 및 메모리제어장치의 동작 방법

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020210123905A KR102347841B1 (ko) 2014-05-07 2021-09-16 메모리제어장치 및 메모리제어장치의 동작 방법

Country Status (1)

Country Link
KR (2) KR20150127434A (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170101004A (ko) * 2016-02-26 2017-09-05 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
KR20170106752A (ko) * 2016-03-14 2017-09-22 삼성전자주식회사 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템
KR20190127309A (ko) * 2018-05-04 2019-11-13 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
WO2024016751A1 (zh) * 2022-07-19 2024-01-25 华为技术有限公司 内存分配方法、装置及计算机

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101257848B1 (ko) * 2005-07-13 2013-04-24 삼성전자주식회사 복합 메모리를 구비하는 데이터 저장 시스템 및 그 동작방법
KR101581679B1 (ko) * 2009-03-18 2015-12-31 삼성전자주식회사 저장 장치 및 저장 장치의 버퍼 메모리 관리 방법
KR101517183B1 (ko) * 2009-05-27 2015-05-18 삼성전자주식회사 데이터 저장 장치 및 그것의 데이터 저장 방법
KR101374065B1 (ko) * 2012-05-23 2014-03-13 아주대학교산학협력단 칩 레벨 평행 플래시 메모리를 위한 정보 분별 방법 및 장치

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170101004A (ko) * 2016-02-26 2017-09-05 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
KR20170106752A (ko) * 2016-03-14 2017-09-22 삼성전자주식회사 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템
KR20190127309A (ko) * 2018-05-04 2019-11-13 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
WO2024016751A1 (zh) * 2022-07-19 2024-01-25 华为技术有限公司 内存分配方法、装置及计算机

Also Published As

Publication number Publication date
KR102347841B1 (ko) 2022-01-07
KR20210122726A (ko) 2021-10-12

Similar Documents

Publication Publication Date Title
KR102347841B1 (ko) 메모리제어장치 및 메모리제어장치의 동작 방법
US9122629B2 (en) Elastic cache with single parity
KR102170539B1 (ko) 저장 장치에 의해 데이터를 저장하기 위한 방법 및 저장 장치
US20150095555A1 (en) Method of thin provisioning in a solid state disk array
US9792073B2 (en) Method of LUN management in a solid state disk array
WO2018019119A1 (zh) 一种面向连续数据存储的动态局部并行数据布局方法及装置
CN106970765B (zh) 数据存储方法及装置
JP6459644B2 (ja) ストレージ制御装置、制御システム及び制御プログラム
WO2013097618A1 (zh) 存储虚拟化的装置、存储系统及数据存储方法及系统
KR20100077156A (ko) 씬 프로비저닝 이송 및 스크러빙 방법
US8954658B1 (en) Method of LUN management in a solid state disk array
JPWO2015076354A1 (ja) ストレージ装置と方法並びにプログラム
KR20110093035A (ko) 플래시 주소 변환 장치 및 그 방법
US20180307426A1 (en) Storage apparatus and storage control method
CN113568562A (zh) 一种存储系统、内存管理方法和管理节点
US20190243758A1 (en) Storage control device and storage control method
JP2021529406A (ja) システムコントローラおよびシステムガベージコレクション方法
US9547443B2 (en) Method and apparatus to pin page based on server state
US8468303B2 (en) Method and apparatus to allocate area to virtual volume based on object access type
JP5594647B2 (ja) ストレージ装置及びその制御方法
US6934803B2 (en) Methods and structure for multi-drive mirroring in a resource constrained raid controller
WO2010119478A1 (en) Storage system and control method therefor
KR101117390B1 (ko) 비휘발성 메모리 장치의 데이터 접근 방법 및 이를 수행하는 프로그램을 기록한 기록매체
US8478938B2 (en) Performing data writes in parity protected redundant storage arrays
KR100970537B1 (ko) Ssd 관리 장치 및 방법

Legal Events

Date Code Title Description
N231 Notification of change of applicant
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application
E601 Decision to refuse application
E801 Decision on dismissal of amendment