KR102368071B1 - 레이드 스토리지 시스템에서의 스트라이프 재구성 방법 및 이를 적용한 가비지 컬렉션 동작 방법 및 레이드 스토리지 시스템 - Google Patents

레이드 스토리지 시스템에서의 스트라이프 재구성 방법 및 이를 적용한 가비지 컬렉션 동작 방법 및 레이드 스토리지 시스템 Download PDF

Info

Publication number
KR102368071B1
KR102368071B1 KR1020140192551A KR20140192551A KR102368071B1 KR 102368071 B1 KR102368071 B1 KR 102368071B1 KR 1020140192551 A KR1020140192551 A KR 1020140192551A KR 20140192551 A KR20140192551 A KR 20140192551A KR 102368071 B1 KR102368071 B1 KR 102368071B1
Authority
KR
South Korea
Prior art keywords
stripe
memory
target
memory blocks
memory block
Prior art date
Application number
KR1020140192551A
Other languages
English (en)
Other versions
KR20160080863A (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 삼성전자주식회사
Priority to KR1020140192551A priority Critical patent/KR102368071B1/ko
Priority to US14/968,472 priority patent/US9817717B2/en
Priority to CN201510994195.0A priority patent/CN105739915B/zh
Publication of KR20160080863A publication Critical patent/KR20160080863A/ko
Application granted granted Critical
Publication of KR102368071B1 publication Critical patent/KR102368071B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • 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
    • G06F11/1088Reconstruction on already foreseen single or plurality of spare disks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1044Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
    • 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/0207Addressing or allocation; Relocation with multidimensional access, e.g. row/column, matrix
    • 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/0215Addressing or allocation; Relocation with look ahead addressing means
    • 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/0689Disk arrays, e.g. RAID, JBOD

Abstract

레이드 스토리지 시스템에서의 스트라이프 재구성 방법 및 이를 적용한 가비지 컬렉션 동작 방법 및 레이드 스토리지 시스템에 관하여 개시한다. 레이드 스토리지 시스템에서의 스트라이프 재구성 방법은 로그 구조의 레이드 기법이 적용된 스토리지 시스템에서 생성된 스트라이프들 중에서 단일의 스트라이프에 포함된 메모리 블록들간의 유효한 페이지 비율의 불균형 상태가 초기 설정된 임계 기준을 초과하는 타깃 스트라이프를 선택하는 단계 및, 상기 타깃 스트라이프에 포함된 메모리 블록들간의 유효한 페이지 비율의 불균형이 완화되도록 상기 타깃 스트라이프에 포함된 메모리 블록들에 대한 스트라이프를 재구성하는 단계를 포함한다.

Description

레이드 스토리지 시스템에서의 스트라이프 재구성 방법 및 이를 적용한 가비지 컬렉션 동작 방법 및 레이드 스토리지 시스템{Method for regrouping stripe on RAID storage system, garbage collection operating method and RAID storage system adopting the same}
본 발명은 스토리지 시스템에서의 데이터 처리 방법 및 장치에 관한 것으로서, 자세하게는 레이드 스토리지 시스템에서의 스트라이프 재구성 방법 및 이를 적용한 가비지 컬렉션 동작 방법 및 레이드 스토리지 시스템에 관한 것이다.
RAID(Redundant Array of Inexpensive Disk)는 복수의 하드 디스크 장치들에 데이터를 분산 저장하는 기술이다. 기술의 발달로 하드 디스크 장치들 대신에 SSD(Solid State Drive)들을 사용하기도 한다. 이와 같은 RAID 기법이 적용되는 스토리지 시스템을 구성하는 일부 SSD에서의 고장이 발생되는 경우에도 데이터 신뢰성을 보장하고, 가비지 컬렉션 등과 같은 동작 수행 시에 WAF(Write Amplification Factor)를 낮추는 연구가 필요하게 되었다.
본 발명의 기술적 사상이 해결하려는 과제는 가비지 컬렉션 동작 시에 스토리지 디바이스 내부에서의 유효한 페이지 카피 동작을 줄이기 위한 레이드 스토리지 시스템에서의 스트라이프 재구성 방법을 제공하는데 있다.
본 발명의 기술적 사상이 해결하려는 다른 과제는 레이드 스토리지 시스템에서의 스트라이프에 포함된 메모리 블록들 간의 유효한 페이지 비율의 불균형을 개선하는 스트라이프 구성을 적용한 가비지 컬렉션 동작 방법을 제공하는데 있다.
본 발명의 기술적 사상이 해결하려는 또 다른 과제는 스트라이프에 포함된 메모리 블록들 간의 유효한 페이지 비율의 불균형을 개선하도록 스트라이프를 재구성하는 레이드 스토리지 시스템을 제공하는데 있다.
본 발명의 기술적 사상의 일면에 따른 레이드 스토리지 시스템에서의 스트라이프 재구성 방법은 로그 구조의 레이드 기법이 적용된 스토리지 시스템에서 생성된 스트라이프들 중에서 단일의 스트라이프에 포함된 메모리 블록들간의 유효한 페이지 비율의 불균형 상태가 초기 설정된 임계 기준을 초과하는 타깃 스트라이프를 선택하는 단계 및, 상기 타깃 스트라이프에 포함된 메모리 블록들간의 유효한 페이지 비율의 불균형이 완화되도록 상기 타깃 스트라이프에 포함된 메모리 블록들에 대한 스트라이프를 재구성하는 단계를 포함한다.
본 발명의 실시 예에 따르면, 상기 타깃 스트라이프를 선택하는 단계는 하나의 스트라이프에 포함된 N(N은 1 이상의 정수)개 이상의 메모리 블록들의 유효한 페이지 비율이 제1임계값보다 낮고, 나머지 메모리 블록들의 유효한 페이지 비율이 제2임계값보다 높은 스트라이프를 타깃 스트라이프로 선택하며, 상기 제1임계값은 상기 제2임계값보다 작게 설정한다.
본 발명의 실시 예에 따르면, 상기 타깃 스트라이프를 선택하는 단계는 하나의 스트라이프에 포함된 N(N은 1 이상의 정수)개 이상의 메모리 블록들의 유효한 페이지 비율이 제1임계값보다 낮고 나머지 메모리 블록들의 유효한 페이지 비율이 제2임계값보다 높은 스트라이프가 복수개 존재하는 경우에, 상기 N 값이 큰 순서 또는 상기 제1임계값보다 낮은 유효한 페이지 비율이 낮은 순서 또는 상기 제2임계값보다 높은 유효한 페이지 비율이 높은 순서 중의 적어도 하나를 적용하여 단일의 타깃 스트라이프를 선택할 수 있다.
본 발명의 실시 예에 따르면, 상기 스트라이프를 재구성하는 단계는상기 타깃 스트라이프에 포함된메모리 블록들 중에서 유효한페이지 비율이 낮은 순위에기초하여 유효한 페이지 비율이낮은 적어도 하나의 타깃 메모리블록을 다른 스트라이프에 포함된메모리 블록들 중에서 상기 타깃 메모리 블록의 유효한 페이지비율보다 높은 메모리 블록으로 대체하도록 상기 타깃 스트라이프에 대한 메모리 블록들의 구성을변경할 수 있다.
본 발명의 실시 예에 따르면, 상기 스트라이프를 재구성하는 단계는 상기 적어도 하나의 타깃 메모리블록을 대체하기 위하여 다른 스트라이프에 포함된 메모리 블록들중에서 유효한 페이지 비율이높은 순위에 기초하여 상위 순위의적어도 하나의 메모리 블록을선택하는 단계, 상기 적어도 하나의타깃 메모리 블록을 상기 다른 스트라이프에서 선택된 상위 순위의적어도 하나의 메모리 블록으로 대체하는 새로운 스트라이프를 생성하는 단계 및, 상기 새로운 스트라이프에 대한 패리티 정보를 상기 새로운 스트라이프에 포함된메모리 블록에 라이트하는 단계를포함할 수 있다.
본 발명의 실시 예에 따르면, 상기 적어도 하나의 메모리블록을 선택하는 단계는 상기 타깃 스트라이프에서 대체되는 메모리블록이 존재하는 동일한 스토리지 디바이스 내에서 대체할 메모리블록을 선택할 수 있다.
본 발명의 실시 예에 따르면, 상기 새로운 스트라이프에 대한 패리티 정보는 상기 타깃 스프라이트에 대한 패리티 정보에상기 대체되는 메모리 블록에 저장되는 데이터 및 상기 대체할 메모리 블록에 저장되는 데이터를 배타적논리합 연산하여 산출할 수 있다.
본 발명의 실시 예에 따르면, 상기 새로운 스트라이프에 대한 정보를 스트라이프 매핑 테이블에 추가하고, 상기 스트라이프 매핑 테이블에서 상기 타깃 스트라이프에 대한 정보를 삭제하는 단계를 더 포함할 수 있다.
본 발명의 실시 예에 따르면, 상기 스트라이프를 재구성하는 단계는상기 타깃 스트라이프에서 대체되는 타깃 메모리 블록에 포함된유효한 페이지들을 비휘발성 캐시 메모리에 카피하는 단계 및, 상기 타깃 스트라이프에 대한 패리티 정보가 저장된 메모리블록을 소거하는 단계를 더 포함할 수 있다.
본 발명의 실시 예에 따르면, 상기 스트라이프를 재구성하는 단계는 상기 타깃 스트라이프에서 대체되는 타깃 메모리 블록에 포함된유효한 페이지들을 어펀 스트라이프를 구성하는 메모리 블록 및 비휘발성 캐시 메모리에 카피하는 단계 및, 상기 타깃 스트라이프에서 대체되는 타깃 메모리블록 및 상기 타깃 스트라이프에 대한 패리티 정보가 저장된메모리 블록을 각각 소거하는 단계를 더 포함하고,상기 어펀 스트라이프는 가비지컬렉션 수행 시에 유효한페이지들을 카피하도록 지정된스트라이프임을 특징으로 한다.
본 발명의 실시 예에 따르면, 상기 스트라이프를 재구성하는 단계는 상기 타깃 스트라이프 및 상기 새로운 스트라이프에 각각 포함된 메모리 블록들 각각에 형성된 스트라이프 개수 정보를 업데이트하는 단계를 더 포함할 수 있다.
본 발명의 실시 예에 따르면, 상기 스트라이프를 재구성하는 단계는 상기 타깃 스트라이프에 포함된 메모리 블록들중에서 유효한 페이지 비율이낮은 순위에 기초하여 유효한 페이지비율이 낮은 적어도 하나의타깃 메모리 블록을 상기 타깃 스트라이프에서 배제하도록 상기 타깃 스트라이프에 대한 메모리 블록들의 구성을 변경하는 것을 특징으로 한다.
본 발명의 실시 예에 따르면, 상기 스트라이프를 재구성하는 단계는 상기 적어도 하나의 타깃 메모리블록을 상기 타깃 스트라이프에서 배제하는 새로운 스트라이프를 생성하는 단계, 상기 새로운 스트라이프에 대한 패리티 정보를연산하고, 연산된 패리티 정보를상기 새로운 스트라이프에 포함된메모리 블록에 라이트하는 단계 및, 상기 새로운 스트라이프에 대한 정보를 스트라이프 매핑 테이블에 추가하고, 상기 스트라이프 매핑 테이블에서 상기 타깃 스트라이프에 대한 정보를 삭제하는 단계를 포함할 수 있다.
본 발명의 실시 예에 따르면, 상기 스트라이프를 재구성하는 단계는 상기 타깃 스트라이프에서 배제되는 타깃 메모리 블록에 포함된 유효한 페이지들을 어펀 스트라이프를 구성하는 메모리 블록 및 비휘발성 캐시 메모리에 카피하는 단계 및, 상기 타깃 스트라이프에서 배제되는 타깃 메모리블록 및 상기 타깃 스트라이프에 대한 패리티 정보가 저장된메모리 블록을 각각 소거하는 단계를 더 포함하고,상기 어펀 스트라이프는 가비지컬렉션 수행 시에 유효한페이지들을 카피하도록 지정된스트라이프임을 특징으로 한다.
본 발명의 실시 예에 따르면, 상기 스트라이프를 재구성하는 단계는상기 타깃 스트라이프에 포함된메모리 블록들 중에서 유효한페이지 비율이 상대적으로 낮은 메모리 블록이 겹치지 않는 다른 타깃 스트라이프를 검색하고, 상기 타깃 스트라이프 및 상기 다른 타깃 스트라이프를 구성하는 메모리 블록을 맞바꾸어 유효한페이지 비율이 높은 메모리블록들로 구성되는 하나의 새로운스트라이프 및 유효한 페이지비율이 낮은 메모리 블록들로 구성되는 다른 하나의 새로운스트라이프를 생성하도록 상기 2개의 타깃 스트라이프들에 대한 메모리 블록들의 구성을 변경하는 것을 특징으로 한다.
본 발명의 실시 예에 따르면, 상기 스트라이프를 재구성하는 단계는상기 타깃 스트라이프 및 상기 다른 타깃 스트라이프를 구성하는 메모리 블록을 맞바꾸어 유효한페이지 비율이 높은 메모리블록들로 구성되는 하나의 새로운스트라이프 및 유효한 페이지비율이 낮은 메모리 블록들로 구성되는 다른 하나의 새로운스트라이프를 생성하는 단계, 상기 2개의 새로운 스트라이프들 각각에대한 패리티 정보를 연산하고, 연산된각각의 패리티 정보를 상기 2개의 새로운 스트라이프들 각각에포함된 메모리 블록에 라이트하는 단계, 상기 2개의 타깃 스트라이프들 각각에 대한 패리티정보가 저장된 메모리 블록들을 소거하는 단계 및, 상기 2개의 새로운 스트라이프에 대한 정보를 스트라이프 매핑 테이블에 추가하고, 상기 스트라이프 매핑 테이블에서 상기 2개의 타깃 스트라이프에 대한 정보를 삭제하는 단계를 포함할 수 있다.
본 발명의 실시 예에 따르면, 상기 스트라이프를 재구성하는 단계는상기 타깃 스트라이프에 포함된메모리 블록들 중에서 유효한페이지 비율이 상대적으로 높은 메모리 블록이 겹치지 않는 다른 타깃 스트라이프를 찾아내고, 상기 타깃 스트라이프 및 상기 다른 타깃 스트라이프를 구성하는 메모리 블록을 맞바꾸어 유효한페이지 비율이 높은 메모리블록들로 구성되는 하나의 새로운스트라이프를 생성하는 단계 및, 상기 2개의 타깃 스트라이프들에 포함된 메모리 블록들 중에서 상기 새로운 스트라이프에 포함되지 않는 메모리 블록들에 포함된유효한 페이지들을 비휘발성 캐시 메모리에 카피하는 단계를포함할 수 있다.
본 발명의 실시 예에 따르면, 상기 스트라이프를 재구성하는 단계는 상기 2개의 타깃 스트라이프들에 포함된 메모리 블록들 중에서 상기 새로운 스트라이프에 포함되지 않는 메모리 블록들에 포함된유효한 페이지들을 어펀 스트라이프를 구성하는 메모리 블록에카피하는 단계, 상기 2개의 타깃 스트라이프들에 포함된 메모리 블록들중에서 상기 새로운 스트라이프에 포함되지 않는 메모리 블록들및 상기 2개의 타깃 스트라이프들 각각에 대한 패리티 정보가저장된 메모리 블록들을 소거하는 단계 및, 상기 하나의 새로운스트라이프에 대한 정보를 스트라이프 매핑 테이블에 추가하고, 상기 스트라이프 매핑 테이블에서 상기 2개의 타깃 스트라이프에 대한 정보를 삭제하는 단계를 더 포함할 수 있다.
발명의 기술적 사상의 다른 면에 따른 레이드 스토리지 시스템은 데이터를 저장하기 위한 메모리 블록들을 구비하는 복수의 스토리지 디바이스들, 스트라이프들의 구성에 관한 정보를 포함하는 스트라이프 매핑 테이블을 저장하는 메인 메모리 및, 로그 구조의 레이드(RAID) 환경에 기초하여 상기 복수의 스토리지 디바이스들을 제어하는 레이드 컨트롤러를 포함하고, 상기 레이드 컨트롤러는 상기 스트라이프 매핑 테이블에 등록된 스트라이프들 중에서 단일의스트라이프에 포함된 메모리 블록들간의 유효한 페이지 비율의 불균형상태가 초기 설정된 임계 기준을 초과하는 타깃 스트라이프를 검색하고, 상기 검색된 타깃 스트라이프에 포함된 메모리 블록들간의 유효한 페이지 비율의 불균형이 완화되도록 상기 타깃 스트라이프에 포함된 메모리 블록들에 대한 스트라이프를 재구성하고, 상기 재구성된 스트라이프에 기초하여 상기 스트라이프 매핑 테이블을 업데이트하는 오퍼레이션을 수행하는 것을 특징으로 한다.
본 발명의 실시 예에 따르면, 상기 복수의 스토리지 디바이스들은 복수의 솔리드 스테이트 드라이브들을 포함할 수 있다.
본 발명의 실시 예에 따르면, 상기 레이드 컨트롤러는 상기 타깃 스트라이프에 포함된메모리 블록들 중에서 유효한페이지 비율이 낮은 순위에기초하여 유효한 페이지 비율이낮은 적어도 하나의 타깃 메모리블록을 다른 스트라이프에 포함된메모리 블록들 중에서 상기 타깃 메모리 블록의 유효한 페이지비율보다 높은 메모리 블록으로 대체하도록 상기 스트라이프 매핑 테이블에서의 스트라이프 구성을변경하는 오퍼레이션을 수행할 수 있다.
본 발명의 실시 예에 따르면, 상기 레이드 컨트롤러는 상기 타깃 스트라이프에 포함된 메모리 블록들 중에서유효한 페이지 비율이 상대적으로 낮은 적어도 하나의 메모리블록을 상기 타깃 스트라이프에서 배제하도록 상기 스트라이프 매핑 테이블에서의 스트라이프 구성을 변경하는 오퍼레이션을 수행할 수 있다.
본 발명의 실시 예에 따르면, 상기 레이드 컨트롤러는 상기 타깃 스트라이프에 포함된 메모리 블록들중에서 유효한 페이지 비율이상대적으로 높은 메모리 블록이겹치지 않는 다른 타깃 스트라이프를 찾아내고, 상기 타깃 스트라이프 및 상기 다른 타깃 스트라이프를 구성하는 메모리 블록을맞바꾸어 유효한 페이지 비율이낮은 메모리 블록들로 구성되는 하나의새로운 스트라이프 및 유효한 페이지 비율이 높은 메모리블록들로 구성되는 다른 하나의새로운 스트라이프를 생성하도록 상기 스트라이프 매핑 테이블에서의 스트라이프 구성을변경하는 오퍼레이션을 수행할 수 있다.
본 발명의 실시 예에 따르면, 상기 레이드 컨트롤러는 상기 타깃 스트라이프에 포함된 메모리 블록들중에서 유효한 페이지 비율이상대적으로 높은 메모리 블록이겹치지 않는 다른 타깃 스트라이프를 찾아내고, 상기 타깃 스트라이프 및 상기 다른 타깃 스트라이프를 구성하는 메모리 블록을맞바꾸어 유효한 페이지 비율이상대적으로 높은 메모리 블록들로 구성되는 하나의 새로운 스트라이프를 생성하도록 상기 스트라이프 매핑 테이블에서의 스트라이프 구성을변경하는 오퍼레이션 및 상기 2개의 타깃 스트라이프들에 포함된 메모리 블록들 중에서 상기 새로운 스트라이프에 포함되지 않는 메모리 블록들에 대한 가비지 컬렉션 오퍼레이션을 수행할 수 있다.
본 발명의 실시 예에 따르면, 비휘발성 캐시 메모리를 더 포함하고, 상기 레이드 컨트롤러는 상기 타깃 스트라이프에 포함된 메모리 블록들 중에서 상기 재구성된 스트라이프에 포함되지 않은 적어도 하나의 타깃 메모리 블록에 포함된 유효한 페이지들을 상기 비휘발성 캐시 메모리에 카피하는 오퍼레이션을 수행할 수 있다.
본 발명의 실시 예에 따르면, 상기 레이드 컨트롤러는 상기 적어도 하나의타깃 메모리 블록에 포함된 유효한페이지들을 어펀 스트라이프를 구성하는 메모리 블록에 카피하는 오퍼레이션 및 상기 적어도 하나의타깃 메모리 블록 및 상기 타깃 스트라이프에 대한 패리티 정보가저장된 메모리 블록을 각각 소거하는 오퍼레이션을 더 수행하고, 상기 어펀 스트라이프는 가비지 컬렉션 수행 시에 유효한 페이지들을 카피하도록 지정된 스트라이프임을 특징으로 한다.
발명의 기술적 사상의 또 다른 면에 따른 가비지 컬렉션 동작 방법은 로그 구조의 레이드기법이 적용된 스토리지 시스템에서 생성된 스트라이프들 중에서단일의 스트라이프에 포함된메모리 블록들간의 유효한페이지 비율의 불균형 상태가 초기 설정된 임계 기준을초과하는 타깃 스트라이프를 선택하는 단계, 상기 타깃 스트라이프에 포함된메모리 블록들간의 유효한페이지 비율의 불균형이 완화되도록 상기 타깃 스트라이프에 포함된메모리 블록들에 대한 스트라이프를 재구성하는 단계 및, 상기 타깃 스트라이프에 포함된 메모리 블록들중에서 상기 스트라이프를 재구성하는 과정에서 스트라이프 구성으로부터 배제되는 적어도 하나의 메모리블록에 대한 가비지 컬렉션을 수행하는 단계를 포함한다.
본 발명의 실시 예에 따르면, 상기 가비지 컬렉션을 수행하는 단계는 상기 스트라이프 구성으로부터 배제되는 적어도 하나의 메모리블록에 포함된 유효한 페이지들을 어펀 스트라이프를 구성하는 메모리 블록 및 비휘발성 캐시 메모리에 각각 카피하는 단계 및, 상기 스트라이프 구성으로부터 배제되는 적어도 하나의 메모리블록 및 상기 타깃 스트라이프에 대한 패리티 정보가 저장된메모리 블록을 각각 소거하는 단계를 포함하고, 상기 어펀 스트라이프는 가비지컬렉션 수행 시에 유효한페이지들을 카피하도록 지정된스트라이프임을 특징으로 하는 특징으로 한다.
본 발명에 따르면 로그 구조의 RAID 스토리지 시스템에서 스트라이프에 포함된 메모리 블록들 간의 유효한 페이지 비율의 불균형이 완화되도록 스트라이프를 재구성함으로써, 가비지 컬렉션 수행 시에 내부적인 유효한 페이지 카피(internal valid page copy) 발생 회수를 줄일 수 있는 효과가 발생된다. 이로 인하여, 가비지 컬렉션 수행 시에 WAF(Write Amplification Factor)를 낮출 수 있게 되어 I/O 성능 향상과 스토리지 디바이스의 수명을 향상시킬 수 있는 효과가 발생된다.
도 1은 본 발명의 기술적 사상에 따른 레이드 스토리지 시스템 구성의 일 예를 보여준다.
도 2는 본 발명의 기술적 사상에 따른 레이드 스토리지 시스템 구성의 다른 예를 보여준다.
도 3은 본 발명의 기술적 사상에 따른 레이드 스토리지 시스템 구성의 또 다른 예를 보여준다.
도 4는 본 발명의 기술적 사상에 따른 레이드 스토리지 시스템 구성의 또 다른 예를 보여준다.
도 5A ~ 5C는 도 1 ~ 도 4에 도시된 비휘발성 랜덤 액세스 메모리의 저장 영역 설정에 대한 다양한 예들을 보여준다.
도 6은 본 발명의 기술적 사상에 따른 레이드 스토리지 시스템에서의 패리티 기반 레이드 기법의 라이트 동작을 설명하기 위한 도면이다.
도 7은 본 발명의 기술적 사상에 따른 레이드 스토리지 시스템에서의 로그-구조의 레이드 기법을 설명하기 위한 도면이다.
도 8은 본 발명의 기술적 사상에 따른 레이드 스토리지 시스템에서의 SSD 기반 로그-구조의 레이드 기법을 비휘발성 랜덤 액세스 메모리를 이용하여 구현하는 예를 설명하기 위한 도면이다.
도 9a 및 도 9b는 본 발명의 기술적 사상에 따른 레이드 스토리지 시스템에서의 스트라이프 단위의 라이트 동작 과정을 보여주는 도면이다.
도 10a ~ 도 10d는 본 발명의 기술적 사상에 따른 레이드 스토리지 시스템에서의 스토리지 디바이스에 메모리 블록 단위로 라이트하는 예에 대한 데이터 저장 과정을 보여주는 도면이다.
도 11a ~ 도 11d는 본 발명의 기술적 사상에 따른 레이드 스토리지 시스템에서의 스토리지 디바이스에 페이지 단위로 라이트하는 예에 대한 데이터 저장 과정을 보여주는 도면이다.
도 12a ~ 도 12h는 본 발명의 기술적 사상에 따른 레이드 스토리지 시스템에서의 가비지 컬렉션 동작 과정을 보여주는 도면이다.
도 13a 및 도 13b는 본 발명의 기술적 사상에 따른 레이드 스토리지 시스템에서의 가비지 컬렉션 동작 과정에서 희생 스트라이프에 포함된 유효한 페이지들을 새로운 메모리 블록에 카피하는 방식의 다양한 예들을 보여주는 도면이다.
도 14는 본 발명의 기술적 사상에 따른 레이드 스토리지 시스템에서의 가비지 컬렉션 동작 후의 스트라이프 구성 예를 보여주는 도면이다.
도 15는 본 발명의 기술적 사상에 따른 레이드 스토리지 시스템에서의 스트라이프 재구성의 필요성을 설명하기 위한 도면이다.
도 16a ~ 도 16d는 본 발명의 기술적 사상에 따른 레이드 스토리지 시스템에서의 스트라이프 재구성 동작 과정의 일 예를 보여주는 도면이다.
도 17a 및 도 17b는 본 발명의 기술적 사상에 따른 레이드 스토리지 시스템에서의 스트라이프 재구성 동작 과정의 다른 예를 보여주는 도면이다.
도 18a 및 도 18b는 본 발명의 기술적 사상에 따른 레이드 스토리지 시스템에서의 스트라이프 재구성 동작 과정의 또 다른 예를 보여주는 도면이다.
도 19a 및 도 19b는 본 발명의 기술적 사상에 따른 레이드 스토리지 시스템에서의 스트라이프 재구성 동작 과정의 또 다른 예를 보여주는 도면이다.
도 20은 본 발명의 기술적 사상에 따른 레이드 스토리지 시스템을 구성하는 솔리드 스테이트 드라이브 구성의 일 예를 보여준다.
도 21은 도 20에 도시된 솔리드 스테이트 드라이브의 채널 및 웨이에 대한 구성을 예시적으로 보여주는 도면이다.
도 22는 도 20에 도시된 메모리 컨트롤러의 세부 구성을 예시적으로 보여준다.
도 23은 도 21에 도시된 메모리 장치를 구성하는 플래시 메모리 칩의 세부 구성을 예시적으로 보여준다.
도 24는 도 23에 도시된 메모리 셀 어레이의 일 예를 나타낸다.
도 25는 도 23에 도시된 메모리 셀 어레이에 포함된 제1메모리 블록의 일 예를 나타내는 회로도이다.
도 26은 본 발명의 기술적 사상에 따른 레이드 스토리지 시스템 구성의 또 다른 예를 보여준다.
도 27은 도 26에 도시된 솔리드 스테이트 드라이브 구성의 일 예를 보여준다.
도 28은 도 27에 도시된 메모리 컨트롤러의 세부 구성의 일 예를 보여준다.
도 29는 도 27에 도시된 메모리 컨트롤러의 세부 구성의 다른 예를 보여준다.
도 30a ~ 도 30e는 도 26에 도시된 레이드 스토리지 시스템에서의 스트라이프 라이트 동작 과정을 보여주는 개념도이다.
도 31은 본 발명의 기술적 사상에 따른 레이드 스토리지 시스템 구성의 또 다른 예를 보여준다.
도 32는 도 31에 도시된 메모리 컨트롤러의 세부 구성의 일 예를 보여준다.
도 33은 도 31에 도시된 메모리 컨트롤러의 세부 구성의 다른 예를 보여준다.
도 34는 도 31에 도시된 레이드 스토리지 시스템에서의 스트라이프 구성에 대한 일 예를 보여준다.
도 35는 도 31에 도시된 레이드 스토리지 시스템에서의 스트라이프 구성에 대한 다른 예를 보여준다.
도 36은 본 발명의 기술적 사상에 따른 레이드 스토리지 시스템에서의 스트라이프 재구성 방법의 흐름도를 예시적으로 보여준다.
도 37은 도 36에 도시된 스트라이프 재구성하는 동작 수행 단계에 대한 세부 흐름도의 일 예를 보여준다.
도 38은 도 36에 도시된 스트라이프 재구성하는 동작 수행 단계에 대한 세부 흐름도의 다른 예를 보여준다.
도 39는 도 36에 도시된 스트라이프 재구성하는 동작 수행 단계에 대한 세부 흐름도의 또 다른 예를 보여준다.
도 39는 도 36에 도시된 스트라이프 재구성하는 동작 수행 단계에 대한 세부 흐름도의 또 다른 예를 보여준다.
도 40은 도 36에 도시된 스트라이프 재구성하는 동작 수행 단계에 대한 세부 흐름도의 또 다른 예를 보여준다.
도 41은 도 36에 도시된 스트라이프 재구성하는 동작 수행 단계에 대한 세부 흐름도의 또 다른 예를 보여준다.
도 42는 도 36에 도시된 스트라이프 재구성하는 동작 수행 단계에 대한 세부 흐름도의 또 다른 예를 보여준다.
도 43은 도 36에 도시된 스트라이프 재구성하는 동작 수행 단계에 대한 세부 흐름도의 또 다른 예를 보여준다.
도 44는 도 36에 도시된 스트라이프 재구성하는 동작 수행 단계에 대한 세부 흐름도의 또 다른 예를 보여준다.
도 45는 도 36에 도시된 스트라이프 재구성하는 동작 수행 단계에 대한 세부 흐름도의 또 다른 예를 보여준다.
도 46은 도 36에 도시된 스트라이프 재구성하는 동작 수행 단계에 대한 세부 흐름도의 또 다른 예를 보여준다.
도 47은 본 발명의 기술적 사상에 따른 레이드 스토리지 시스템에서의 가비지 컬렉션 동작 방법의 흐름도의 일 예를 보여준다.
도 48은 도 47에 도시된 가비지 컬렉션을 수행하는 오퍼레이션에 대한 세부 흐름도를 예시적으로 보여준다.
이하, 첨부한 도면을 참조하여 본 발명의 실시 예에 대해 상세히 설명한다. 본 발명의 실시 예는 당 업계에서 평균적인 지식을 가진 자에게 본 발명을 보다 완전하게 설명하기 위하여 제공되는 것이다. 본 발명은 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있는 바, 특정 실시 예들을 도면에 예시하고 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 유사한 구성요소에 대해 사용한다. 첨부된 도면에 있어서, 구조물들의 치수는 본 발명의 명확성을 기하기 위하여 실제보다 확대하거나 축소하여 도시한 것이다.
본 출원에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서 상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 갖는다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
도 1은 본 발명의 기술적 사상에 따른 레이드 스토리지 시스템 구성의 일 예를 보여준다.
도 1을 참조하면, 레이드 스토리지 시스템(1000A)은 레이드 컨트롤러(RAID CONTROLLER, 1100A), 비휘발성 랜덤 액세스 메모리(NVRAM, 1200), 복수의 스토리지 디바이스들(SD1 ~ SDn; 1300-1 ~ 1300-n) 및 버스(1400)를 포함한다. 레이드 스토리지 시스템(1000A)의 구성 요소들은 버스(1400)를 통하여 전기적으로 연결된다.
레이드(RAID Redundant Array of Inexpensive Disk) 방식은 일부 스토리지 디바이스가 고장이 난 경우에, 데이터 손실을 방지하기 위하여 미러링(mirroring) 기반 기법으로 데이터를 복원하는 방식과 패리티 기반 기법으로 데이터를 복원하는 방식이 있다. 예로서, 레이드 스토리지 시스템(1000A)에는 패리티 기반 RAID 방식이 적용될 수 있다.
복수의 스토리지 디바이스들(1300-1 ~ 1300-n)은 솔리드 스테이트 드라이브(SSD) 또는 하드 디스크 드라이브(HDD) 등으로 구현될 수 있다. 본 발명의 실시 예에서는 복수의 스토리지 디바이스들(1300-1 ~ 1300-n)을 솔리드 스테이트 드라이브로 구현하였다. 솔리드 스테이트 드라이브(SSD)는 다수의 비휘발성 메모리 칩들을 이용하여 스토리지 디바이스를 구현한다. 예로서, 솔리드 스테이트 드라이브는 다수의 플래시 메모리 칩들을 이용하여 스토리지 디바이스를 구현할 수 있다.
비휘발성 랜덤 액세스 메모리(1200)는 전원이 꺼지더라도 저장되어 있는 데이터가 보존되는 랜덤 액세스 메모리이다. 비휘발성 랜덤 액세스 메모리(1200)는 메인 메모리로서의 역할을 한다. 예로서, 비휘발성 랜덤 액세스 메모리(1200)는 PRAM(Phase change RAM), FeRAM(Ferroelectric RAM) 또는 MRAM(Magnetic RAM)으로 구현할 수 있다. 다른 예로서, 비휘발성 랜덤 액세스 메모리(1200)는 휘발성 메모리인 DRAM 또는 SRAM에 인가되는 전원을 배터리 또는 커패시터를 이용하는 방식으로 구현할 수도 있다. 이와 같은 방식에 따르면 시스템 전원이 꺼지더라도 DRAM 또는 SRAM에 저장되어 있는 데이터를 보존할 수 있게 된다.
비휘발성 랜덤 액세스 메모리(1200)에는 가비지 컬렉션 동작 과정에서 일시적으로 패리티(parity) 정보에 의해 보호받지 못하는 데이터를 저장하는 캐시 영역이 할당될 수 있다. 여기에서, 일시적으로 패리티 정보에 의해 보호받지 못하는 데이터를 어펀 데이터(Orphan data)라고 칭하기로 한다. 그리고, 비휘발성 랜덤 액세스 메모리(1200)에서 어펀 데이터를 저장하도록 할당된 캐시 영역을 어펀 캐시 영역이라 칭하기로 한다.
예로서, 비휘발성 랜덤 액세스 메모리(1200)에는 복수의 스토리지 디바이스들(1300-1 ~ 1300-n)에 스트라이프 단위로 라이트할 데이터를 저장하는 캐시 영역이 할당될 수도 있다. 여기에서, 비휘발성 랜덤 액세스 메모리(1200)에서 스트라이프 단위로 라이트할 데이터를 저장하도록 할당된 캐시 영역을 스트라이프 캐시 영역이라 칭하기로 한다.
예로서, 비휘발성 랜덤 액세스 메모리(1200)에는 레이드 스토리지 시스템(1000A)에서 이용되는 매핑 테이블 정보가 저장될 수도 있다. 매핑 테이블 정보에는 논리적 어드레스(logical address)를 물리적 어드레스(physical)로 변환하는 어드레스 매핑 테이블 및 스트라이프 그룹핑에 대한 정보를 나타내는 스트라이프 매핑 테이블이 포함될 수 있다. 스트라이프 그룹핑에 대한 정보는 각각의 스트라이프를 구성하는 메모리 블록들을 나타내는 정보가 포함될 수 있다. 스트라이프 매핑 테이블에는 스트라이프들 각각에 대한 유효한 페이지 비율 정보가 포함될 수도 있다.
예로서, 어드레스 매핑 테이블에는 논리적 어드레스에 대응되는 스토리지 디바이스의 물리적 어드레스가 저장될 수 있다. 세부적으로, 어드레스 매핑 테이블에는 논리적 어드레스에 대응되는 스토리지 디바이스 번호 및 해당 스토리지 디바이스에서의 물리적 어드레스가 저장될 수 있다.
레이드 컨트롤러(1100A)는 로그 구조의 레이드(log-structured RAID) 환경에 기초하여 복수의 스토리지 디바이스들(1300-1 ~1300-n)을 제어한다. 세부적으로, 레이드 컨트롤러(1100A)는 복수의 스토리지 디바이스들(1300-1 ~1300-n)에 쓰여진 데이터를 업데이트(update)하는 경우에 데이터를 오버라이트(overwrite) 하지 않고 새로운 위치에 로그(log) 형식으로 라이트하도록 레이드 스토리지 시스템(1000A)을 제어한다. 예로서, 로그 형식으로 라이트된 복수의 메모리 블록과 복수의 메모리 블록에 저장되는 데이터에 대한 패리티 정보를 저장하는 메모리 블록은 하나의 스트라이프를 구성한다.
레이드 컨트롤러(1100A)는 스트라이프를 구성하는 스토리지 디바이스들(1300-1 ~1300-n)들의 메모리 블록 위치 정보들을 스트라이프 매핑 테이블에 등록하는 동작을 수행한다.
레이드 컨트롤러(1100A)는 비휘발성 랜덤 액세스 메모리(1200)에 저장되어 있는 매핑 테이블 정보를 이용하여 어드레스 변환 처리 또는 스트라이프 그룹핑 처리를 수행할 수 있다. 세부적으로, 레이드 컨트롤러(1100A)는 어드레스 매핑 테이블을 이용하여 논리적 어드레스를 물리적 어드레스로 변환 처리한다. 그리고, 스트라이프 매핑 테이블을 이용하여 스트라이프 단위로 가비지 컬렉션을 수행한다.
레이드 컨트롤러(1100A)는 매핑 테이블 정보를 이용하여 가비지 컬렉션을 위한 희생 스트라이프를 선택하는 동작을 수행한다. 예로서, 레이드 컨트롤러(1100A)는 스트라이프 매핑 테이블을 이용하여 그룹핑된 스트라이프들 중에서 유효한 페이지 비율이 가장 낮은 스트라이프를 찾아내어 희생 스트라이프로 선택할 수 있다.
레이드 컨트롤러(1100A)는 가비지 컬렉션을 위한 희생 스트라이프에 포함된 복수의 스토리지 디바이스들(1300-1 ~1300-n)의 유효한 페이지들을 비휘발성 랜덤 액세스 메모리(1200)에 카피하는 제어 동작을 수행하고, 비휘발성 랜덤 액세스 메모리(1200)에 카피된 데이터를 이용하여 가비지 컬렉션 제어 동작을 수행한다. 세부적으로, 레이드 컨트롤러(1100A)는 가비지 컬렉션을 위한 희생 스트라이프에 포함된 복수의 스토리지 디바이스들(1300-1 ~1300-n)의 유효한 페이지들을 비휘발성 랜덤 액세스 메모리(1200)의 어펀 캐시 영역에 카피하는 제어 동작을 수행한다.
레이드 컨트롤러(1100A)는 희생 스트라이프에 포함된 패리티 정보가 저장된 메모리 블록을 소거하는 제어 동작, 희생 스트라이프에 포함된 유효한 페이지들을 새로운 스트라이프를 구성할 메모리 블록에 카피하는 제어 동작 및, 새로운 스트라이프를 구성할 메모리 블록에 카피된 유효한 페이지들이 저장되어 있는 희생 스트라이프의 메모리 블록을 소거하는 제어 동작을 수행한다.
레이드 컨트롤러(1100A)는 비휘발성 랜덤 액세스 메모리(1200)의 어펀 캐시 영역에 카피된 데이터들에 대한 패리티 정보를 산출하고, 산출된 패리티 정보를 새로운 스트라이프를 구성할 메모리 블록에 카피하는 제어 동작을 수행한다.
레이드 컨트롤러(1100A)는 희생 스트라이프에 포함된 유효한 페이지들이 카피된 메모리 블록들과 패리티 정보가 카피된 메모리 블록에 대하여 새로운 스트라이프를 구성하는 스트라이프 그룹핑 정보를 스트라이프 매핑 테이블에 등록하는 동작을 수행한다. 그리고, 레이드 컨트롤러(1100A)는 희생 스트라이프에 대한 스트라이프 그룹핑 정보를 스트라이프 매핑 테이블에서 삭제한다. 이에 따라서, 희생 스트라이프에 포함된 메모리 블록들은 프리 블록(free block)이 된다. 프리 블록은 데이터가 저장되지 않은 빈 메모리 블록을 의미한다.
레이드 스토리지 시스템(1000A)에서의 가비지 컬렉션 동작 중에 희생 스트라이프에 포함된 패리티 정보가 저장된 메모리 블록을 소거한 후에는, 희생 스트라이프에 포함된 메모리 블록들에 쓰여진 유효한 페이지들은 패리티 정보에 보호를 받지 못하게 된다. 즉, 복수의 스토리지 디바이스들(1300-1 ~1300-n) 중의 일부 스토리지 디바이스에서 고장이 발생되는 경우에, 희생 스트라이프의 고장 난 스토리지 디바이스의 메모리 블록에 쓰여진 유효한 페이지들은 패리티 정보를 이용하여 데이터를 복원할 수 없게 된다.
본 발명의 기술적 사상에 따른 실시 예에서는 비휘발성 랜덤 액세스 메모리(1200)의 어펀 캐시 영역에 희생 스트라이프에 포함된 복수의 스토리지 디바이스들(1300-1 ~1300-n)의 유효한 페이지들이 저장되어 있으므로, 복수의 스토리지 디바이스들(1300-1 ~1300-n) 중의 일부 스토리지 디바이스에서 고장이 발생되더라도 비휘발성 랜덤 액세스 메모리(1200)의 어펀 캐시 영역에 저장된 데이터를 이용하여 고장이 발생된 스토리지 디바이스의 메모리 블록에 쓰여진 유효한 페이지들을 복원할 수 있다.
레이드 컨트롤러(1100A)는 가비지 컬렉션 동작 중에 희생 스트라이프에 포함된 페이지에 대한 읽기 요청 발생되면, 읽기 요청된 페이지에 대한 데이터를 비휘발성 랜덤 액세스 메모리(1200)의 어펀 캐시 영역으로부터 읽어내는 동작을 수행한다.
예로서, 가비지 컬렉션 동작 중에 희생 스트라이프에 포함된 페이지에 대한 읽기 요청이 외부의 호스트(도면에 미도시)로부터 레이드 스토리지 시스템(1000A)으로 수신되는 경우에, 레이드 컨트롤러(1100A)는 읽기 요청된 페이지에 대한 데이터를 비휘발성 랜덤 액세스 메모리(1200)의 어펀 캐시 영역으로부터 읽어내어 호스트로 전송하는 동작을 수행할 수 있다.
레이드 컨트롤러(1100A)는 스트라이프 재구성 방법 및 가비지 컬렉션 동작 방법을 수행하기 위하여 도 36 내지 도 48에 도시된 흐름도에 따라 레이드 스토리지 시스템(1000A)를 제어할 수 있다.
세부적으로, 레이드 컨트롤러(1100A)는 스트라이프에서의 메모리 블록들간의 유효한 페이지 비율의 불균형 상태를 완화시키기 위한 스트라이프 재구성 처리를 아래와 같이 수행할 수 있다.
레이드 컨트롤러(1100A)는 스트라이프 매핑 테이블에 등록된 스트라이프들 중에서 단일의스트라이프에 포함된 메모리 블록들간의 유효한 페이지 비율의 불균형상태가 초기 설정된 임계 기준을 초과하는 타깃 스트라이프를 검색하고, 검색된 타깃 스트라이프에 포함된메모리 블록들간의 유효한페이지 비율의 불균형이 완화되도록 타깃 스트라이프에 포함된 메모리 블록들에 대한 스트라이프를 재구성하고, 재구성된 스트라이프에 기초하여 스트라이프 매핑 테이블을 업데이트하는 오퍼레이션을 수행한다.
예로서, 레이드 컨트롤러(1100A)는 타깃 스트라이프에 포함된 메모리 블록들 중에서유효한 페이지 비율이 낮은 순위에 기초하여 유효한 페이지비율이 낮은 적어도 하나의타깃 메모리 블록을 다른 스트라이프에 포함된 메모리 블록들 중에서타깃 메모리 블록의 유효한 페이지비율보다 높은 메모리 블록으로 대체하도록 스트라이프 매핑 테이블에서의 스트라이프 구성을변경하는 오퍼레이션을 수행할수 있다.
다른 예로서, 레이드 컨트롤러(1100A)는 타깃 스트라이프에 포함된 메모리 블록들중에서 유효한 페이지 비율이상대적으로 낮은 적어도 하나의메모리 블록을 타깃 스트라이프에서 배제하도록 스트라이프 매핑 테이블에서의 스트라이프 구성을 변경하는 오퍼레이션을 수행할수 있다.
또 다른 예로서, 레이드 컨트롤러(1100A)는 타깃 스트라이프에 포함된 메모리 블록들중에서 유효한 페이지 비율이상대적으로 높은 메모리 블록이겹치지 않는 다른 타깃 스트라이프를 찾아내고, 2개의 타깃 스트라이프들을 구성하는 메모리블록을 맞바꾸어 유효한 페이지비율이 낮은 메모리 블록들로 구성되는 하나의 새로운 스트라이프 및 유효한 페이지 비율이높은 메모리 블록들로 구성되는 다른 하나의 새로운 스트라이프를 생성하도록 스트라이프 매핑 테이블에서의 스트라이프 구성을 변경하는 오퍼레이션을 수행할수 있다.
또 다른 예로서, 레이드 컨트롤러(1100A)는 타깃 스트라이프에 포함된 메모리 블록들중에서 유효한 페이지 비율이상대적으로 높은 메모리 블록이겹치지 않는 다른 타깃 스트라이프를 찾아내고, 2개의 타깃 스트라이프들을 구성하는 메모리블록을 맞바꾸어 유효한 페이지비율이 상대적으로 높은 메모리 블록들로 구성되는 하나의새로운 스트라이프를 생성하도록 스트라이프 매핑 테이블에서의 스트라이프 구성을 변경하는 오퍼레이션 및 2개의 타깃 스트라이프들에 포함된메모리 블록들 중에서 새로운스트라이프에 포함되지 않는 메모리 블록들에 대한 가비지컬렉션 오퍼레이션을 수행할수 있다.
그리고, 레이드 컨트롤러(1100A)는 도 36 내지 도 48의 흐름도에 따른 동작을 수행하도록 레이드 스토리지 시스템(1000A)의 구성 수단들을 제어할 수 있다.
도 2는 본 발명의 기술적 사상에 따른 레이드 스토리지 시스템 구성의 다른 예를 보여준다.
도 2를 참조하면, 레이드 스토리지 시스템(1000B)은 레이드 컨트롤러(RAID CONTROLLER, 1100B), 비휘발성 랜덤 액세스 메모리(NVRAM, 1200), 복수의 스토리지 디바이스들(SD1 ~ SDn; 1300-1 ~ 1300-n), 버스(1400) 및 랜덤 액세스 메모리(1500)를 포함한다. 레이드 스토리지 시스템(1000A)의 구성 요소들은 버스(1400)를 통하여 전기적으로 연결된다.
도 2에 도시된 비휘발성 랜덤 액세스 메모리(NVRAM, 1200), 복수의 스토리지 디바이스들(SD1 ~ SDn; 1300-1 ~ 1300-n) 및 버스(1400)에 대한 동작은 도 1에서 이미 설명하였으므로, 중복적인 설명은 피하기로 한다.
레이드 스토리지 시스템(1000B)은 도 1에 도시된 레이드 스토리지 시스템(1000A)에 비하여 랜덤 액세스 메모리(1500)가 추가되었다.
랜덤 액세스 메모리(1500)는 휘발성 메모리로서 DRAM 또는 SRAM으로 구현할 수 있다. 랜덤 액세스 메모리(1500)는 메인 메모리로서의 역할을 한다. 랜덤 액세스 메모리(1500)에는 레이드 스토리지 시스템(1000B)을 동작시키데 필요한 정보 또는 프로그램 코드가 저장된다.
이에 따라서, 랜덤 액세스 메모리(1500)에는 매핑 테이블 정보가 저장될 수 있다. 매핑 테이블 정보에는 논리적 어드레스를 물리적 어드레스로 변환하는 어드레스 매핑 테이블 및 스트라이프 그룹핑에 대한 정보를 나타내는 스트라이프 매핑 테이블이 포함될 수 있다. 스트라이프 매핑 테이블에는 스트라이프들 각각에 대한 유효한 페이지 비율 정보가 포함될 수도 있다.
예로서, 레이드 컨트롤러(1100B)는 비휘발성 랜덤 액세스 메모리(1200)로부터 매핑 테이블 정보를 읽어내어 랜덤 액세스 메모리(1500)에 로딩시킬 수 있다. 다른 예로서, 레이드 컨트롤러(1100B)는 복수의 스토리지 디바이스들(SD1 ~ SDn; 1300-1 ~ 1300-n) 중의 어느 하나의 스토리지 디바이스로부터 매핑 테이블 정보를 읽어내어 랜덤 액세스 메모리(1500)에 로딩시킬 수도 있다.
레이드 컨트롤러(1100B)는 랜덤 액세스 메모리(1500)에 로딩된 어드레스 매핑 테이블을 이용하여 레이드 스토리지 시스템(1000B)에서의 리드 동작 또는 라이트 동작 시의 주소 변환 처리를 수행할 수 있다.
레이드 컨트롤러(1100B)는 로그 구조의 레이드(log-structured RAID) 환경에 기초하여 복수의 스토리지 디바이스들(1300-1 ~1300-n)을 제어한다. 세부적으로, 레이드 컨트롤러(1100A)는 복수의 스토리지 디바이스들(1300-1 ~1300-n)에 쓰여진 데이터를 업데이트(update)하는 경우에 데이터를 오버라이트(overwrite) 하지 않고 새로운 위치에 로그(log) 형식으로 라이트하도록 레이드 스토리지 시스템(1000B)을 제어한다. 예로서, 로그 형식으로 라이트된 복수의 메모리 블록과 복수의 메모리 블록에 저장되는 데이터에 대한 패리티 정보를 저장하는 메모리 블록은 하나의 스트라이프를 구성한다.
레이드 컨트롤러(1100B)는 스트라이프를 구성하는 스토리지 디바이스들(1300-1 ~1300-n)들의 메모리 블록 위치 정보들을 스트라이프 매핑 테이블에 등록하는 동작을 수행한다.
레이드 컨트롤러(1100B)는 라이트 동작 또는 가비지 컬렉션 동작에 의하여 랜덤 액세스 메모리(1500)에 저장된 매핑 테이블 정보를 갱신하고, 갱신된 매핑 테이블 정보를 비휘발성 랜덤 액세스 메모리(1200)에 저장된 매핑 테이블 정보에 반영하는 동작을 수행할 수 있다. 예로서, 갱신된 매핑 테이블 정보를 비휘발성 랜덤 액세스 메모리(1200)에 오버라이트 하는 방식으로 반영할 수 있다.
레이드 컨트롤러(1100B)는 랜덤 액세스 메모리(1500)에 저장되어 있는 매핑 테이블 정보를 이용하여 어드레스 변환 처리 또는 스트라이프 그룹핑 처리를 수행할 수 있다. 세부적으로, 레이드 컨트롤러(1100B)는 어드레스 매핑 테이블을 이용하여 논리적 어드레스를 물리적 어드레스로 변환 처리한다. 그리고, 스트라이프 매핑 테이블을 이용하여 스트라이프 단위로 가비지 컬렉션을 수행한다.
레이드 컨트롤러(1100B)에서 수행되는 가비지 컬렉션 제어 동작은 도 1에 도시된 레이드 컨트롤러(1100A)와 동일하므로 중복적인 설명은 피하기로 한다. 또한, 레이드 컨트롤러(1100B)에서 수행되는 스트라이프에서의 메모리 블록들간의 유효한 페이지 비율의 불균형 상태를 완화시키기 위한 스트라이프 재구성 처리도 레이드 컨트롤러(1100A)와 동일하므로 중복적인 설명은 피하기로 한다.
도 3은 본 발명의 기술적 사상에 따른 레이드 스토리지 시스템 구성의 또 다른 예를 보여준다.
도 3을 참조하면, 레이드 스토리지 시스템(2000A)은 프로세서(101A), 랜덤 액세스 메모리(102), 비휘발성 랜덤 액세스 메모리(NVRAM, 103), 호스트 버스 어댑터(HBA; 104), 입/출력 서브시스템(I/O Sub System; 105), 버스(106) 및 디바이스들(200)을 포함한다.
도 3에서 프로세서(101A), 랜덤 액세스 메모리(102), 비휘발성 랜덤 액세스 메모리(103), 호스트 버스 어댑터(104), 입/출력 서브 시스템(105) 및 버스(106)를 포함하는 블록이 호스트(100A)가 되고, 디바이스들(200)이 호스트(100A)에 접속되는 외부 디바이스들이 될 수 있다.
예로서, 레이드 스토리지 시스템(2000A)은 서버(server)인 것으로 가정될 수 있다. 다른 예로서, 레이드 스토리지 시스템(2000A)는 개인용 컴퓨터, 셋톱 박스(set-top-box), 디지털 카메라, 네비게이션 장치, 모바일 장치 등이 될 수도 있다. 예로서, 호스트(100A)에 접속되는 디바이스들(200)은 스토리지 디바이스들(SD1 ~ SDn; 200-1 ~ 200-n)을 포함할 수 있다.
프로세서(101A)는 데이터의 처리 및 레이드 스토리지 시스템(2000A) 의 구성 수단들의 동작들의 제어를 수행하기 위한 회로, 인터페이스들 또는 프로그램 코드를 포함할 수 있다. 예로서, 프로세서(101A)는 CPU, ARM, 또는 주문형 반도체(ASIC: application specific integrated circuit)를 포함할 수 있다.
랜덤 액세스 메모리(102)는 휘발성 메모리로서, 레이드 스토리지 시스템(2000A)의 동작에 필요한 데이터, 명령들 또는 프로그램 코드들을 저장하는 SRAM 또는 DRAM을 포함할 수 있다. 랜덤 액세스 메모리(102)는 메인 메모리로서의 역할을 한다. 랜덤 액세스 메모리(102)에는 RAID 제어 소프트웨어(102-1)가 저장된다. RAID 제어 소프트웨어(102-1)는 로그 구조의 레이드(log-structured RAID) 방식으로 레이드 스토리지 시스템(2000A)을 제어하는 프로그램 코드들을 포함한다. 예로서, RAID 제어 소프트웨어(102-1)는 도 36 내지 도 48의 흐름도에 도시된 바와 같은 스트라이프 재구성 방법 및 가비지 컬렉션 동작 방법을 수행하기 위한 프로그램 코드들을 포함할 수 있다.
비휘발성 랜덤 액세스 메모리(103)는 전원이 꺼지더라도 저장되어 있는 데이터가 보존되는 랜덤 액세스 메모리이다. 예로서, 비휘발성 랜덤 액세스 메모리(103)는 PRAM(Phase change RAM), FeRAM(Ferroelectric RAM) 또는 MRAM(Magnetic RAM)으로 구현할 수 있다. 다른 예로서, 비휘발성 랜덤 액세스 메모리(103)는 휘발성 메모리인 DRAM 또는 SRAM에 인가되는 전원을 배터리 또는 커패시터를 이용하는 방식으로 구현할 수도 있다. 이와 같은 방식에 따르면 시스템 전원이 꺼지더라도 DRAM 또는 SRAM에 저장되어 있는 데이터를 보존할 수도 있다.
비휘발성 랜덤 액세스 메모리(103)에는 가비지 컬렉션 동작 과정에서 일시적으로 패리티(parity) 정보에 의해 보호받지 못하는 데이터를 저장하는 캐시 영역이 할당될 수 있다.
예로서, 비휘발성 랜덤 액세스 메모리(103)에는 스토리지 디바이스들(200-1 ~ 200-n)에 스트라이프 단위로 라이트할 데이터를 저장하는 캐시 영역이 할당될 수도 있다.
예로서, 비휘발성 랜덤 액세스 메모리(103)에는 레이드 스토리지 시스템(2000A)에서 이용되는 매핑 테이블 정보가 저장될 수도 있다. 매핑 테이블 정보에는 논리적 어드레스(logical address)를 물리적 어드레스(physical)로 변환하는 어드레스 매핑 테이블 및 스트라이프 그룹핑에 대한 정보를 나타내는 스트라이프 매핑 테이블이 포함될 수 있다. 스트라이프 매핑 테이블에는 스트라이프들 각각에 대한 유효한 페이지 비율 정보가 포함될 수도 있다. 예로서, 어드레스 매핑 테이블에는 논리적 어드레스에 대응되는 스토리지 디바이스의 물리적 어드레스가 저장될 수 있다.
프로세서(101A)는 랜덤 액세스 메모리(102)에 저장된 프로그램 코드들을 이용하여 로그 구조의 레이드(log-structured RAID) 방식으로 레이드 스토리지 시스템(2000A)의 동작을 제어한다. 예로서, 프로세서(101A)는 랜덤 액세스 메모리(102)에 저장된 RAID 제어 소프트웨어(102-1)를 구동시켜 도 36 내지 도 48의 흐름도에 도시된 바와 같은 스트라이프 재구성 방법 및 가비지 컬렉션 동작 방법을 수행할 수 있다.
호스트 버스 어댑터(104)는 레이드 스토리지 시스템(2000A)의 호스트(100A)에 스토리지 디바이스들(200-1 ~ 200-n)을 접속하는 어댑터이다. 예로서, 호스트 버스 어댑터(104)는 SCSI 어댑터, 파이버 채널 어댑터, 시리얼 ATA 어댑터 등을 포함할 수 있다. 세부적으로, 호스트 버스 어댑터(104)는FC(Fiber Channel) HBA 기반의 스토리지 디바이스들(200-1 ~ 200-n)과 직접 연결할 수 있다. 또한, SAN(Storage Network Area) 환경에서 연결하여 호스트(100A)와 스토리지 디바이스들(200-1 ~ 200-n) 간의 인터페이스를 할 수 있다.
I/O 서브시스템(105)은 레이드 스토리지 시스템(2000A)을 구성하는 부품들 사이에서 정보를 통신하도록 동작할 수 있는 회로, 인터페이스들, 또는 코드를 포함할 수 있다. I/O 서브시스템(105)은 하나 이상의 표준화된 버스들 및 하나 이상의 버스 제어기들을 포함할 수 있다. 따라서, I/O 서브시스템(105)은 버스(106)에 접속된 장치들을 인식하고, 버스(106)에 접속된 장치들을 열거하고, 버스(106)에 접속된 다양한 장치들을 위한 자원(resource) 할당 및 할당 해제하는 동작을 수행할 수 있다. 즉, I/O 서브시스템(105)은 버스(106) 위에서의 통신들을 관리하도록 동작할 수 있다. 예를 들어, I/O 서브시스템(105)은 PCIe 시스템일 수 있고, PCIe 루트 컴플렉스(root complex), 하나 이상의 PCIe 스위치들 또는 브릿지(bridge)들을 포함할 수 있다.
스토리지 디바이스들(200-1 ~ 200-n)은 솔리드 스테이트 드라이브(SSD) 또는 하드 디스크 드라이브(HDD)로 구현될 수 있다. 본 발명의 실시 예에서는 스토리지 디바이스들(200-1 ~ 200-n)을 솔리드 스테이트 드라이브로 구현하였다.
프로세서(101A)는 호스트 버스 어댑터(104)를 통하여 접속된 스토리지 디바이스들(200-1 ~ 200-n)을 로그 구조의 레이드(log-structured RAID) 환경에 기초하여 제어한다. 세부적으로, 프로세서(101A)는 스토리지 디바이스들(200-1 ~ 200-n)에 쓰여진 데이터를 업데이트(update)하는 경우에 데이터를 오버라이트(overwrite) 하지 않고 새로운 위치에 로그(log) 형식으로 라이트하도록 레이드 스토리지 시스템(2000A)을 제어한다. 예로서, 로그 형식으로 스토리지 디바이스들(200-1 ~ 200-n)에 라이트된 복수의 메모리 블록들과 복수의 메모리 블록들에 저장되는 데이터에 대한 패리티 정보를 저장하는 메모리 블록을 하나의 스트라이프를 구성한다.
프로세서(101A)는 스트라이프를 구성하는 스토리지 디바이스들(200-1 ~ 200-n)들의 메모리 블록 위치 정보들을 스트라이프 매핑 테이블에 등록하는 동작을 수행한다.
프로세서(101A)는 비휘발성 랜덤 액세스 메모리(103)에 저장되어 있는 매핑 테이블 정보를 이용하여 어드레스 변환 처리 또는 스트라이프 그룹핑 처리를 수행할 수 있다. 세부적으로, 프로세서(101A)는 어드레스 매핑 테이블을 이용하여 논리적 어드레스를 물리적 어드레스로 변환 처리한다. 그리고, 스트라이프 매핑 테이블을 이용하여 스트라이프 단위로 가비지 컬렉션을 수행한다.
프로세서(101A)는 매핑 테이블 정보를 이용하여 가비지 컬렉션을 위한 희생 스트라이프를 선택하는 동작을 수행한다. 예로서, 프로세서(101A)는 스트라이프 매핑 테이블을 이용하여 스트라이프들 중에서 유효한 페이지 비율이 가장 낮은 스트라이프를 찾아내어 희생 스트라이프로 선택할 수 있다.
프로세서(101A)는 가비지 컬렉션을 위한 희생 스트라이프에 포함된 스토리지 디바이스들(200-1 ~ 200-n)의 유효한 페이지들을 비휘발성 랜덤 액세스 메모리(103)에 카피하는 제어 동작을 수행하고, 비휘발성 랜덤 액세스 메모리(103)에 카피된 데이터를 이용하여 가비지 컬렉션 제어 동작을 수행한다. 세부적으로, 프로세서(101A)는 가비지 컬렉션을 위한 희생 스트라이프에 포함된 스토리지 디바이스들(200-1 ~ 200-n)의 유효한 페이지들을 비휘발성 랜덤 액세스 메모리(103)의 어펀 캐시 영역에 카피하는 제어 동작을 수행한다.
프로세서(101A)는 스토리지 디바이스들(200-1 ~ 200-n)의 희생 스트라이프에 포함된 패리티 정보가저장된 메모리 블록을 소거하는 제어 동작, 희생 스트라이프에 포함된 유효한 페이지들을 새로운스트라이프를 구성할 메모리 블록에카피하는 제어 동작 및, 새로운 스트라이프를 구성할 메모리 블록에카피된 유효한 페이지들이 저장되어 있는 희생 스트라이프의 메모리블록을 소거하는 제어 동작을수행한다.
프로세서(101A)는 비휘발성 랜덤 액세스 메모리(103)의 어펀 캐시 영역에 카피된 데이터들에 대한 패리티 정보를 산출하고, 산출된 패리티 정보를 스토리지 디바이스들(200-1 ~ 200-n)의 스트라이프를 구성할 새로운 메모리 블록에 카피하는 제어 동작을 수행한다.
프로세서(101A)는 희생 스트라이프에 포함된 유효한 페이지들이 카피된 메모리 블록들과 패리티 정보가 카피된 메모리 블록에 대하여 새로운 스트라이프를 구성하는 스트라이프 그룹핑 정보를 스트라이프 매핑 테이블에 등록하는 동작을 수행한다. 그리고, 프로세서(101A)는 희생 스트라이프에 대한 스트라이프 그룹핑 정보를 스트라이프 매핑 테이블에서 삭제한다. 이에 따라서, 희생 스트라이프에 포함된 메모리 블록들은 프리 블록(free block)이 된다.
레이드 스토리지 시스템(2000A)에서의 가비지 컬렉션 동작 중에 희생 스트라이프에 포함된패리티 정보가 저장된 메모리블록을 소거한 후에는, 스토리지 디바이스들(200-1 ~ 200-n)의 희생 스트라이프에 포함된 메모리 블록들에 쓰여진유효한 페이지들은 패리티정보에 보호를 받지 못하게된다. 즉, 스토리지 디바이스들(200-1 ~ 200-n) 중의 일부 스토리지 디바이스에서 고장이 발생되는 경우에, 희생 스트라이프의 고장 난 스토리지 디바이스의 메모리블록에 쓰여진 유효한 페이지들은 패리티 정보를 이용하여 데이터를 복원할 수 없게 된다.
본 발명의 기술적 사상에 따른 실시 예에서는 비휘발성 랜덤 액세스 메모리(103)의 어펀 캐시 영역에 희생 스트라이프에 포함된 스토리지 디바이스들(200-1 ~ 200-n)의 유효한 페이지들이 저장되어 있으므로, 스토리지 디바이스들(200-1 ~ 200-n) 중의 일부 스토리지 디바이스에서 고장이 발생되더라도 비휘발성 랜덤 액세스 메모리(103)의 어펀 캐시 영역에 저장된 데이터를 이용하여 고장이 발생된 스토리지 디바이스의 메모리 블록에 쓰여진 유효한 페이지들을 복원할 수 있다.
프로세서(101A)는 가비지 컬렉션 동작 중에 희생 스트라이프에 포함된 페이지에 대한 읽기 요청 발생되면, 읽기 요청된 페이지에 대한 데이터를 비휘발성 랜덤 액세스 메모리(103)의 어펀 캐시 영역으로부터 직접 읽어내는 동작을 수행한다.
그리고, 프로세서(101A)는 스트라이프에 포함된 메모리 블록들간의 유효한 페이지 비율의 불균형 상태를 완화시키기 위한 스트라이프 재구성 처리를 아래와 같이 수행할 수 있다.
프로세서(101A)는 스트라이프 매핑 테이블에 등록된 스트라이프들 중에서 단일의 스트라이프에 포함된메모리 블록들간의 유효한페이지 비율의 불균형 상태가초기 설정된 임계 기준을 초과하는 타깃 스트라이프를 검색하고, 검색된 타깃 스트라이프에 포함된메모리 블록들간의 유효한페이지 비율의 불균형이 완화되도록 타깃 스트라이프에 포함된메모리 블록들에 대한 스트라이프를 재구성하고, 재구성된 스트라이프에 기초하여 스트라이프 매핑 테이블을 업데이트하는 오퍼레이션을 수행한다.
예로서, 프로세서(101A)는 타깃 스트라이프에 포함된메모리 블록들 중에서 유효한페이지 비율이 낮은 순위에기초하여 유효한 페이지 비율이낮은 적어도 하나의 타깃 메모리블록을 다른 스트라이프에 포함된메모리 블록들 중에서 타깃 메모리 블록의 유효한 페이지비율보다 높은 메모리 블록으로 대체하도록 스트라이프 매핑 테이블에서의 스트라이프 구성을변경하는 오퍼레이션을 수행할수 있다.
다른 예로서, 프로세서(101A)는 타깃 스트라이프에 포함된 메모리 블록들 중에서유효한 페이지 비율이 상대적으로 낮은 적어도 하나의 메모리블록을 타깃 스트라이프에서 배제하도록 스트라이프 매핑 테이블에서의 스트라이프 구성을 변경하는 오퍼레이션을 수행할 수 있다.
또 다른 예로서, 프로세서(101A)는 타깃 스트라이프에 포함된 메모리 블록들중에서 유효한 페이지 비율이상대적으로 높은 메모리 블록이겹치지 않는 다른 타깃 스트라이프를 찾아내고, 2개의 타깃 스트라이프들을 구성하는 메모리블록을 맞바꾸어 유효한 페이지비율이 낮은 메모리 블록들로 구성되는 하나의 새로운 스트라이프 및 유효한 페이지 비율이높은 메모리 블록들로 구성되는 다른 하나의 새로운 스트라이프를 생성하도록 스트라이프 매핑 테이블에서의 스트라이프 구성을 변경하는 오퍼레이션을 수행할 수 있다.
또 다른 예로서, 프로세서(101A)는 타깃 스트라이프에 포함된 메모리 블록들중에서 유효한 페이지 비율이상대적으로 높은 메모리 블록이겹치지 않는 다른 타깃 스트라이프를 찾아내고, 2개의 타깃 스트라이프들을 구성하는 메모리블록을 맞바꾸어 유효한 페이지비율이 상대적으로 높은 메모리 블록들로 구성되는 하나의새로운 스트라이프를 생성하도록 스트라이프 매핑 테이블에서의 스트라이프 구성을 변경하는 오퍼레이션 및 2개의 타깃 스트라이프들에 포함된 메모리 블록들중에서 새로운 스트라이프에 포함되지 않는 메모리 블록들에 대한 가비지 컬렉션 오퍼레이션을 수행할수 있다.
도 4는 본 발명의 기술적 사상에 따른 레이드 스토리지 시스템 구성의 또 다른 예를 보여준다.
도 4를 참조하면, 레이드 스토리지 시스템(2000B)은 호스트(100B), 네트워크 디바이스들(200) 및 링크 수단(300)을 포함한다.
호스트(100B)는 프로세서(101B), 랜덤 액세스 메모리(102), 비휘발성 랜덤 액세스 메모리(NVRAM, 103), 네트워크 어댑터(107), 입/출력 서브시스템(I/O Sub System; 105) 및 버스(106)를 포함한다. 예로서, 호스트(100B)는 서버(server)인 것으로 가정될 수 있다. 다른 예로서, 호스트(100B)는 개인용 컴퓨터, 셋톱 박스(set-top-box), 디지털 카메라, 네비게이션 장치, 모바일 장치 등이 될 수도 있다.
호스트(100B)를 구성하는 랜덤 액세스 메모리(102), 비휘발성 랜덤 액세스 메모리(103), I/O 서브 시스템(105) 및 버스(106)는 도 3에 도시된 레이드 스토리지 시스템(2000A)에서 이미 설명하였으므로, 중복적인 설명은 피하기로 한다.
네트워크 어댑터(107)는 링크 수단(300)을 통해 디바이스들(200)에 결합될 수 있다. 예로서, 링크 수단(300)은 구리 배선(copper wiring), 광섬유 케이블(fiber optic cabling), 하나 이상의 무선 채널들, 또는 그 조합을 포함할 수 있다.
네트워크 어댑터(107)는 하나 이상의 네트워킹 표준들에 따라서 데이터를 송신 및 수신하도록 동작할 수 있는 회로, 인터페이스들, 또는 코드를 포함할 수 있다. 예로서, 네트워크 어댑터(107)는 하나 이상의 이더넷 표준(Ethernet standard)들에 의해 디바이스들(200)과 통신할 수 있다.
디바이스들(200)은 스토리지 디바이스들(SD1 ~ SDn; 200-1 ~ 200-n)로 구성될 수 있다. 예로서, 스토리지 디바이스들(200-1~200-n)은 솔리드 스테이트 드라이브(SSD) 또는 하드 디스크 드라이브(HDD)로 구현할 수 있다. 본 발명의 실시 예에서는 스토리지 디바이스들(200-1 ~ 200-n)을 솔리드 스테이트 드라이브로 구현하였다.
프로세서(101B)는 랜덤 액세스 메모리(102)에 저장된 프로그램 코드들을 이용하여 로그 구조의 레이드(log-structured RAID) 방식으로 레이드 스토리지 시스템(2000B)의 동작을 제어한다. 예로서, 프로세서(101B)는 랜덤 액세스 메모리(102)에 저장된 RAID 제어 소프트웨어(102-1)를 구동시켜 도 36 내지 도 48의 흐름도에 도시된 바와 같은 스트라이프 재구성 방법 및 가비지 컬렉션 동작 방법을 수행할 수 있다.
프로세서(101B)는 네트워크 어댑터(107)를 통하여 접속된 스토리지 디바이스들(200-1 ~ 200-n)을 로그 구조의 레이드(log-structured RAID) 환경에 기초하여 제어한다. 세부적으로, 프로세서(101B)는 스토리지 디바이스들(200-1 ~ 200-n)에 쓰여진 데이터를 업데이트(update)하는 경우에 데이터를 오버라이트(overwrite) 하지 않고 새로운 위치에 로그(log) 형식으로 라이트하도록 레이드 스토리지 시스템(2000A)을 제어한다. 예로서, 로그 형식으로 스토리지 디바이스들(200-1 ~ 200-n)에 라이트된 복수의 메모리 블록들과 복수의 메모리 블록들에 저장되는 데이터에 대한 패리티 정보를 저장하는 메모리 블록을 하나의 스트라이프를 구성한다.
프로세서(101B)는 스트라이프를 구성하는 스토리지 디바이스들(200-1 ~ 200-n)들의 메모리 블록 위치 정보들을 스트라이프 매핑 테이블에 등록하는 동작을 수행한다.
프로세서(101B)는 비휘발성 랜덤 액세스 메모리(103)에 저장되어 있는 매핑 테이블 정보를 이용하여 어드레스 변환 처리 또는 스트라이프 그룹핑 처리를 수행할 수 있다. 세부적으로, 프로세서(101B)는 어드레스 매핑 테이블을 이용하여 논리적 어드레스를 물리적 어드레스로 변환 처리한다. 그리고, 스트라이프 매핑 테이블을 이용하여 스트라이프 단위로 가비지 컬렉션을 수행한다.
프로세서(101B)에서 수행되는 가비지 컬렉션 동작은 도 3에 도시된 프로세서(101A)와 실질적으로 동일하게 수행하므로 중복적인 설명은 피하기로 한다. 또한, 프로세서(101B)에서 수행되는 스트라이프에서의 메모리 블록들간의 유효한 페이지 비율의 불균형 상태를 완화시키기 위한 스트라이프 재구성 처리도 프로세서(101A)와 동일하므로 중복적인 설명은 피하기로 한다.
도 5A ~ 5C는 도 1 ~ 도 4에 도시된 비휘발성 랜덤 액세스 메모리(1200 또는 103)의 저장 영역 설정에 대한 다양한 예들을 보여준다.
도 5A를 참조하면, 일 실시 예에 따른 비휘발성 랜덤 액세스 메모리(1200A 또는 103A)에는 어펀 캐시 영역(1200-1), 스트라이프 캐시 영역(1200-2) 및 매핑 테이블 저장 영역(1200-3)이 할당된다.
어펀 캐시 영역(Orphan Cache; 1200-1)에는 가비지 컬렉션 동작 과정에서 일시적으로 패리티(parity) 정보에 의해 보호받지 못하는 데이터인 어펀 데이터가 저장된다. 스트라이프 캐시 영역(Stripe Cache; 1200-2)에는 스토리지 디바이스들에 스트라이프 단위로 라이트할 데이터가 일시적으로 저장된다. 매핑 테이블 저장 영역(1200-3)에는 논리적 어드레스(logical address)를 물리적 어드레스(physical)로 변환하는 어드레스 매핑 테이블 및 스트라이프 그룹핑에 대한 정보를 나타내는 스트라이프 매핑 테이블이 저장된다. 스트라이프 매핑 테이블에는 그룹핑된 스트라이프들 각각에 대한 유효한 페이지 비율 정보가 포함될 수도 있다. 예로서, 어드레스 매핑 테이블에는 논리적 어드레스에 대응되는 스토리지 디바이스의 물리적 어드레스가 저장될 수 있다.
도 5B를 참조하면, 다른 실시 예에 따른 비휘발성 랜덤 액세스 메모리(1200B 또는 103B)에는 어펀 캐시 영역(1200-1) 및 스트라이프 캐시 영역(1200-2)이 할당된다. 이와 같은 실시 예에서는 매핑 테이블 저장 영역(1200-3)은 랜덤 액세스 메모리(1500 또는 102)에 할당될 수 있다.
도 5C를 참조하면, 또 다른 실시 예에 따른 비휘발성 랜덤 액세스 메모리(1200C 또는 103C)에는 어펀 캐시 영역(1200-1)이 할당된다. 이와 같은 실시 예에서는 스트라이프 캐시 영역(1200-2) 및 매핑 테이블 저장 영역(1200-3)은 랜덤 액세스 메모리(1500 또는 102)에 할당될 수 있다.
도 6은 본 발명의 기술적 사상에 따른 레이드 스토리지 시스템에서의 패리티 기반 레이드 기법의 라이트 동작을 설명하기 위한 개념도이다.
설명의 편의를 위하여, 도 6 내지 13에는 도 1 또는 도 2에 도시된 레이드 스토리지 시스템(1000A 또는 1000B)의 주요 구성 수단인 레이드 컨트롤러(1100A 또는 1100B) 및 스토리지 디바이스들(예로서, 4대의 솔리드 스테이트 드라이브 SSD 1 ~ SSD4 1300-1 ~ 1300-4)이 도시되어 있다.
참고적으로, 도 3 또는 도 4에 도시된 레이드 스토리지 시스템(2000A 또는 2000B)에서는 레이드 컨트롤러(1100A 또는 1100B)의 동작은 프로세서(101A 또는 101B)에서 수행될 것이다. 또한, 4대의 솔리드 스테이트 드라이브SSD 1 ~ SSD4의 참조부호는 200-1 ~ 200-4가 될 것이다.
도 6은 4대의 SSD1 ~ SSD4(1300-1 ~ 1300-4)에 대하여 패리티 기반 RAID5가 적용된 예를 보여준다. 같은 번지의 각 데이터에 대하여 SSD1 ~ SSD4(1300-1 ~ 1300-4) 중의 하나에 패리티 정보가 저장된다. 예로서, 패리티 정보는 같은 번지의 각 데이터들의 값에 대하여 배타적 논리합(XOR) 연산을 한 결과 값이 될 수 있다. 이들 데이터 중에서 하나의 데이터가 손실되더라도 패리티 정보와 나머지 데이터들을 이용해서 손실된 데이터 값을 복구할 수 있다. 이러한 원리를 이용하여 SSD 한대에 고장이 나더라도 해당 데이터에 대한 복구가 가능하다.
도 6을 참조하면, 데이터는 SSD1 ~ SSD4(1300-1 ~ 1300-4)에 순차적으로 저장된다. 예로서, 데이터 D1 ~ D3에 대한 패리티 정보 P1_3는 SSD4(1300-4)에 저장된다. 그리고, 데이터 D4 ~ D6에 대한 패리티 정보 P4_6는 SSD3(1300-3)에 저장되고, 데이터 D7 ~ D9에 대한 패리티 정보 P7_9는 SSD2(1300-2)에 저장되고, 데이터 D10 ~ D12에 대한 패리티 정보 P10_12는 SSD1(1300-1)에 저장된다.
만일 SSD2(1300-2)에 고장이 발생되었다고 가정해 보자. 이 때 SSD2(1300-2)의 1번 데이터 D2는 D1, D3, P1_3를 XOR 연산한 값을 통해 복구가 가능하고, 2번 데이터 D5는D4, D6, P4_6를 XOR 연산한 값을 통해 복구가 가능하고, 4번 데이터 D10은 D11, D12, P10_12를 XOR 연산한 값을 통해 복구가 가능하다.
이와 같은 패리티 기반 RAID 기법에서 한번의 스몰 라이트 업데이트(small write update)는 2회의 리드(read) 동작과 2회의 라이트(write) 동작을 유발하여 전체 I/O 성능을 저하시키고, SSD의 마모를 가속화시킬 수 있다.
도 6에서 SSD3(1300-3)에 저장된 D3 데이터를 업데이트하는 경우를 가정해 보자. 이 때 데이터 D3에 대한 패리티 정보 P1_3도 같이 업데이트 되어야 해당 데이터에 대한 신뢰성(reliability)을 계속 보장할 수 있다. 따라서, 데이터 D3를 라이트하기 위해서는 기존의 데이터 D3를 읽고, 기존의 패리티 정보 P1_3을 읽은 다음에 기존 데이터 D3, P1_3에 새로운 데이터 D3'에 대한 XOR 연산을 하여 새로운 패리티 정보 P1_3'를 생성한 다음에 새로운 데이터 D3'를 쓰고 새로운 패리티 정보 P1_3'를 써야 한다. 이와 같이, 하나의 라이트 동작이 2번의 리드와 2번 라이트로 증폭(amplification)되는 문제를 read-modify-write 문제라 칭한다.
본 발명의 기술적 사상에서는 로그 구조의 레이드(log-structured RAID) 기법을 적용하면 이러한 read-modify-write 문제를 해결할 수 있다. 이에 대해서는 도 7을 참조하여 설명하기로 한다.
도 7은 본 발명의 기술적 사상에 따른 레이드 스토리지 시스템에서의 로그-구조의 레이드 기법을 설명하기 위한 개념도이다.
우선, 레이드 스토리지 시스템에서 도 6과 같이 SSD1 ~ SSD4(1300-1 ~ 1300-4)에 데이터가 저장된 상태에서 데이터 D3를 D3'로 업데이트한다고 가정하자. 이 때 이미 데이터 D3가 쓰여져 있는 위치인 SSD3(1300-3)의 1번 주소에 데이터 D3'를 업데이트하지 않고 새로운 위치인 SSD1(1300-1)의 5번 주소에 새로운 데이터 D3'를 라이트한다. 또한, 새로운 데이터 D5', D9'도 같은 방식으로 오버라이트 하지 않고 새로운 위치에 로그(log) 형태로 라이트한다. 하나의 스트라이프를 구성하는 데이터 D3', D5', D9'에 대한 라이트 동작이 완료되면 동일한 스트라이프를 구성하는 데이터들에 대한 패리티 정보 P3_5_9를 SSD4(1300-4)에 라이트한다.
위와 같은 로그-구조의 레이드 기법에 따른 업데이트 처리가 완료되면 도 7과 같이 SSD1 ~ SSD4(1300-1 ~ 1300-4)에 업데이트된 데이터 및 패리티 정보가 저장된다.
만일, SSD1 ~ SSD4(1300-1 ~ 1300-4)에서 각각 개별적으로 가비지 컬렉션 동작을 수행하는 경우에 대하여 살펴보자.
예로서, 데이터 D3'이 라이트되면서 무효한 데이터(invalid data)가 된 데이터 D3가 가비지 컬렉션을 통해 SSD3에서 삭제되었고, 이후에 SSD2(1300-2)에 고장이 발생되었다고 가정하자. 그러면, SSD2(1300-2)에 저장되어 있던 데이터 D2를 복구하려면 SSD1(1300-1)의 D1, SSD3(1300-3)의 D3, SSD4(1300-4)의 P1_3가 필요하다. 그런데, 가비지 컬렉션 과정에서 SSD3(1300-3)의 데이터 D3를 삭제했기 때문에 데이터 D2에 대한 복구는 불가능해진다.
본 발명의 기술적 사상에서는 이러한 문제를 해결하기 위하여 스트라이프 단위로 가비지 컬렉션 동작을 수행한다. 예로서, 하나의 스트라이프를 구성하는 데이터 {D1, D2, D3, P1_3}를 한번의 가비지 컬렉션 동작에 의하여 처리한다.
로그 구조의 RAID 기법이 적용된 경우에 RAID 층에서는 논리적 어드레스 논리적 어드레스 매핑 테이블을 사용하고, SSD 층에서는 논리적 어드레스- 물리적 어드레스 매핑 테이블을 사용하여 어드레스 변환 처리를 할 수 있다. 예로서, RAID 층에서의 논리적 어드레스 논리적 어드레스 변환 매핑 테이블에는 논리적 블록 어드레스에 대응되는 스토리지 디바이스의 번호 및 메모리 블록 번호가 저장되고, SSD 층에서는 논리적 어드레스- 물리적 어드레스 매핑 테이블에는 논리적 블록 어드레스에 대응되는 플래시 메모리의 물리적 어드레스가 저장될 수 있다.
이와 같이 2개의 매핑 테이블을 이용하면 매핑 테이블 사이즈가 커지고, RAID 층과 SSD 층에서 가비지 컬렉션이 각각 별도로 이루어지게 되어 전체적으로 WAF(Write Amplification Factor)가 커질 가능성이 있다. RAID 층에서의 가비지 컬렉션이 필요한 이유는 새로운 라이트를 위한 논리적 빈 스페이스(logical empty space)를 새로 확보하기 위한 것이고, SSD 층에서의 가비지 컬렉션이 필요한 이유는 새로운 라이트를 위한 플래시 메모리 칩의 메모리 블록에 대하여 소거 동작을 수행하여 물리적 빈 스페이스(physical empty space)를 새로 확보하기 위한 것이다.
본 발명의 기술적 사상에서는 RAID 층의 논리적 어드레스 논리적 어드레스 매핑 테이블과 SSD 층의 논리적 어드레스- 물리적 어드레스 매핑 테이블을 하나로 통합하여 레이드 컨트롤러(1100A, 1100B) 또는 호스트의 프로세서(101A, 101B)에서 관리한다.
통합된 어드레스 매핑 테이블에는 논리적 어드레스를 직접 물리적 어드레스로 변환하기 위한 매핑 정보들이 저장될 수 있다. 예로서, 어드레스 매핑 테이블에는 논리적 어드레스에 대응되는 스토리지 디바이스의 물리적 어드레스가 저장될 수 있다. 세부적으로, 어드레스 매핑 테이블에는 논리적 어드레스에 대응되는 스토리지 디바이스 번호 및 해당 스토리지 디바이스에서의 물리적 어드레스가 저장될 수 있다.
도 8은 본 발명의 기술적 사상에 따른 레이드 스토리지 시스템에서의 SSD 기반 로그-구조의 레이드 기법을 비휘발성 랜덤 액세스 메모리를 이용하여 구현하는 예를 설명하기 위한 도면이다.
예로서, SSD1 ~ SSDN(1300-1 ~ 1300-N)는 각각 복수 개(M)개의 메모리 블록들을 포함하고 있다. SSD에서는 리드 또는 라이트 동작은 페이지 단위로 이루어질 수 있으나, 소거 동작은 메모리 블록 단위로 이루어진다. 참고적으로, 메모리 블록을 소거 블록(Erase Block)이라 칭하기도 한다. 그리고, 각각의 메모리 블록들은 복수개의 페이지들로 구성된다.
도 8에서는 하나의 메모리 블록이 8개의 페이지들로 구성되는 예를 보여준다. 본 발명은 이에 한정되지 않고 하나의 메모리 블록은 8개 페이지 미만 또는 8개 페이지를 초과하도록 설계할 수 있다.
그리고, 비휘발성 랜덤 액세스 메모리(NVRAM; 1200)에 어펀 캐시 영역(1200-1), 스트라이프 캐시 영역(1200-2) 및 매핑 테이블 저장 영역(1200-3)이 할당되는 예를 보여준다.
레이드 컨트롤러(1100A 또는 1100B)는 매핑 테이블 저장 영역(1200-3)에 저장된 어드레스 매핑 테이블을 이용하여 논리적 어드레스를 물리적 어드레스로 변환하는 처리를 수행한다.
그러면, 도 8에 도시된 레이드 스토리지 시스템에서의 SSD 기반 로그-구조의 레이드 기법을 비휘발성 랜덤 액세스 메모리를 이용하여 라이트 동작을 수행하는 예를 도 9a 및 9b를 참조하여 설명하기로 한다.
도 9a 및 도 9b는 본 발명의 기술적 사상에 따른 레이드 스토리지 시스템에서의 스트라이프 단위의 라이트 동작을 보여주는 개념도이다.
레이드 스토리지 시스템(1000A 또는 1000B)에서 라이트 요청이 발생되면, 레이드 컨트롤러(1100A 또는 1100B)는 라이트할 데이터를 우선 NVRAM(1200)의 스트라이프 캐시 영역(1200-2)에 저장한다. 먼저, 라이트할 데이터를 스트라이프 캐시 영역(1200-2)에 저장하는 이유는 패리티 정보를 포함하여 하나의 풀 스트라이프(one full stripe)의 데이터를 한번에 SSD1 ~ SSDN(1300-1 ~ 1300-N)에 라이트하기 위함이다. 도 9a에는 NVRAM(1200)의 스트라이프 캐시 영역(1200-2)에 스트라이프 단위로 라이트할 데이터가 저장된 예를 보여준다.
다음으로, 레이드 컨트롤러(1100A 또는 1100B)는 스트라이프 캐시 영역(1200-2)에 저장된 데이터에 대한 패리티 정보를 산출한다. 그리고 나서, 레이드 컨트롤러(1100A 또는 1100B)는 산출된 패리티 정보와 스트라이프 캐시 영역(1200-2)에 저장된 데이터로 구성되는 하나의 풀 스트라이프 데이터를 SSD1 ~ SSDN(1300-1 ~ 1300-N)에 라이트하는 제어 동작을 수행한다. 도 9b에는 SSD1 ~ SSDN-1(1300-1 ~ 1300-(N-1))의 메모리 블록 #1에 스트라이프 캐시 영역(1200-2)에 저장된 데이터가 저장되고, SSDN(1300-N)에 패리티 정보가 저장된 예를 보여준다. 도 9b에서 SSD1 ~ SSDN(1300-1 ~ 1300-N)에 포함된 각각의 메모리 블록 #1들은 하나의 새로운 스트라이프로 등록된다.
이와 같이, 도 9a 및 도 9b에 따른 본 발명의 기술적 사상에 따른 실시 예에서는 하나의 풀 스트라이프(one full stripe)의 데이터를 한번에 라이트하였다. 이와 같은 방식에 따르면, 메모리 블록 사이즈만큼의 패리티 정보도 한번에 모아서 연산할 수 있어서 단편적인 라이트 및 패리티 계산(fragmented write & parity calculation)을 방지할 수 있는 장점이 있다. 다만, 하나의 풀 스트라이프(one full stripe) 만큼의 스트라이프 캐시 공간을 확보해야 하고, 한번에 지나치게 많은 라이트 I/O와 패리티 계산 오버헤드가 발생할 수 있다는 단점이 있다.
본 발명의 기술적 사상에 따른 다른 실시 예에서는 SSD1 ~ SSDN(1300-1 ~ 1300-N)에 메모리 블록 단위로 데이터를 라이트할 수 있다. 그리고, 본 발명의 기술적 사상에 따른 다른 실시 예에서는 SSD1 ~ SSDN(1300-1 ~ 1300-N)에 페이지 단위로 데이터를 라이트할 수도 있다.
도 10a ~ 도 10d는 본 발명의 기술적 사상에 따른 레이드 스토리지 시스템에서의 스토리지 디바이스에 메모리 블록 단위로 라이트하는 예에 대한 데이터 저장 과정을 보여주는 개념도이다.
레이드 컨트롤러(1100A 또는 1100B)는 라이트할 데이터를 순차적으로NVRAM(1200)에 저장한다. NVRAM(1200)에 최초로 하나의 메모리 블록만큼의 데이터가 모이면, 레이드 컨트롤러(1100A 또는 1100B)는 NVRAM(1200)으로부터 데이터를 읽어내고, 읽어낸 데이터를 SSD1(1300-1)의 비어있는 메모리 블록 #1에 라이트하는 제어 동작을 수행한다. 이에 따라서, 도 10a와 같이 NVRAM(1200) 및 SSD1 ~ SSDN(1300-1 ~ 1300-N)에 데이터가 저장된다.
다음으로, NVRAM(1200)에 두 번째의 하나의 메모리 블록만큼의 데이터가 모이면, 레이드 컨트롤러(1100A 또는 1100B)는 NVRAM(1200)으로부터 두 번째의 메모리 블록 사이즈에 해당되는 데이터를 읽어내고, 읽어낸 데이터를 SSD2(1300-2)의 비어있는 메모리 블록 #1에 라이트하는 제어 동작을 수행한다. 이에 따라서, 도 10b와 같이 NVRAM(1200) 및 SSD1 ~ SSDN(1300-1 ~ 1300-N)에 데이터가 저장된다.
다음으로, NVRAM(1200)에 세 번째의 하나의 메모리 블록만큼의 데이터가 모이면, 레이드 컨트롤러(1100A 또는 1100B)는 NVRAM(1200)으로부터 세 번째의 메모리 블록 사이즈에 해당되는 데이터를 읽어내고, 읽어낸 데이터를 SSD3(1300-3)의 비어있는 메모리 블록 #1에 라이트하는 제어 동작을 수행한다. 이에 따라서, 도 10c와 같이 NVRAM(1200) 및 SSD1 ~ SSDN(1300-1 ~ 1300-N)에 데이터가 저장된다.
이와 같은 방식으로 하나의 스트라이프를 구성하는 SS1 ~ SSDN-1에 순차적으로 데이터가 라이트 된 후에, 레이드 컨트롤러(1100A 또는 1100B)는 NVRAM(1200)에 저장된 하나의 스트라이프를 구성하는 전체 데이터에 대한 패리티 정보를 연산하고, 연산된 패리티 정보를 SSDN(1300-N)의 비어있는 메모리 블록 #1에 라이트하는 제어 동작을 수행한다. 그리고 나서, 레이드 컨트롤러(1100A 또는 1100B)는NVRAM(1200)에서 데이터를 비우는 플러쉬(flush) 동작을 수행한다. 이에 따라서, 도 10d와 같이 NVRAM(1200) 및 SSD1 ~ SSDN(1300-1 ~ 1300-N)에 데이터가 저장된다.
이와 같이 메모리 블록 단위로 라이트하는 방법은 각 SSD에 메모리 블록 단위로 라이트 동작을 수행할 수 있는 장점이 있다. 다만, 하나의 풀 스트라이프(one full stripe) 만큼의 스트라이프 캐시 공간을 확보해야 하고, 한번에 지나치게 많은 라이트 I/O와 패리티 계산 오버헤드가 발생할 수 있다는 단점이 있다.
도 11a ~ 도 11d는 본 발명의 기술적 사상에 따른 레이드 스토리지 시스템에서의 스토리지 디바이스에 페이지 단위로 라이트하는 예에 대한 데이터 저장 과정을 보여주는 개념도이다.
레이드 컨트롤러(1100A 또는 1100B)는 라이트할 데이터를 순차적으로NVRAM(1200)에 저장한다. NVRAM(1200)에 패리티를 계산할 수 있는 사이즈의 데이터가 모이면, 레이드 컨트롤러(1100A 또는 1100B)는 NVRAM(1200)으로부터 데이터를 읽어내고, 읽어낸 데이터를 SSD1 ~ SSDN(1300-1 ~ 1300-N)의 메모리 블록 #1에 페이지 단위로 라이트하는 제어 동작을 수행한다. 예로서, 패리티를 계산할 수 있는 사이즈는 하나의 스트라이프를 구성하는 SSD의 개수인 N에서 1을 뺀 (N-1)개의 페이지가 될 수 있다.
그리고 나서, 레이드 컨트롤러(1100A 또는 1100B)는 NVRAM(1200)에 저장된 데이터에 대한 패리티 정보를 연산하고, 연산된 패리티 정보를 SSDN(1300-N)의 비어있는 메모리 블록 #1의 첫 번째 페이지에 라이트하는 제어 동작을 수행한다. SSD1 ~ SSDN(1300-1 ~ 1300-N)에 데이터와 패리티를 라이트한 후에, 레이드 컨트롤러(1100A 또는 1100B)는 NVRAM(1200)에서 데이터를 플러쉬하는 동작을 수행할 수 있다.
다른 예로서, 레이드 컨트롤러(1100A 또는 1100B)는 NVRAM(1200)에 패리티를 계산할 수 있는 사이즈의 K(K는 2이상의 정수)배가 되는 데이터가 모이면, 레이드 컨트롤러(1100A 또는 1100B)는 NVRAM(1200)으로부터 데이터를 읽어내고, 읽어낸 데이터를 SSD1 ~ SSDN(1300-1 ~ 1300-N)의 메모리 블록 #1에 페이지 단위로 라이트하는 제어 동작을 수행할 수도 있다. 예로서, K 값이 2인 경우에는 스트라이프를 구성하는 각각의 SSD의 메모리 블록에 2개 페이지씩의 데이터를 라이트하게 된다.
도 11a 내지 도 11d에는 스트라이프를 구성하는SSD1 ~ SSDN 각각의 메모리 블록 #1에 2개 페이지씩의 데이터와 패리티 정보가 순차적으로 저장되는 과정을 보여준다.
이와 같이, 페이지 단위로 라이트 하는 방법은 패리티 연산을 페이지 단위로 분산시킬 수 있으므로, 한번에 수행해야 할 패리티 연산 부담을 줄일 수 있는 장점이 있으며, 하나의 풀 스트라이프(one full stripe) 만큼의 스트라이프 캐시 공간을 확보할 필요도 없다는 장점이 있다. 다만, 각 SSD에 메모리 블록 단위로 한번에 라이트 동작을 할 수 없는 단점이 있다.
도 12a ~ 도 12h는 본 발명의 기술적 사상에 따른 레이드 스토리지 시스템에서의 가비지 컬렉션 동작 과정을 보여주는 개념도이다.
도 12a에는 레이드 스토리지 시스템에서의 라이트 동작에 따른 SSD1 ~ SSDN(1300-1 ~ 1300-N)에 데이터가 저장된 상태의 일 예를 보여준다.
레이드 스토리지 시스템에서 같은 논리적 어드레스에 대해 새로운 라이트 동작을 수행하면 기존 데이터는 무효한 데이터(invalid data)가 되므로, 무효한 데이터가 저장된 페이지를 무효한 페이지(invalid page)로 표시하였다. 그리고, 하나의 스트라이프를 구성하는 각 SSD의 메모리 블록은 스트라이프 포인터로 서로 연결되어 있다. 이에 따라서, 스트라이프 포인터에 의하여 각 SSD의 어느 메모리 블록이 어떠한 스트라이프에 포함되는지를 알 수 있다. 스트라이프 포인터는 위에서 설명한 스트라이프 매핑 테이블을 이용하여 생성될 수 있다.
레이드 스토리지 시스템에서 라이트 동작이 진행되면서 새로운 저장 공간 확보를 위하여 가비지 컬렉션(garbage collection)이 필요하다. 본 발명의 기술적 사상에 따른 레이드 스토리지 시스템에서는 스트라이프 단위로 가비지 컬렉션을 수행한다.
레이드 스토리지 시스템에서 가비지 컬렉션 요구가 발생되면, 레이드 컨트롤러(1100A 또는 1100B)는 가비지 컬렉션을 할 대상인 희생 스트라이프를 선택한다. 예로서, 무효한 페이지 비율이 가장 높은 스트라이프를 희생 스트라이프(victim stripe)를 선택할 수 있다. 이를 달리 표현하면 유효한 페이지 비율이 가장 낮은 스트라이프를 희생 스트라이프로 선택할 수 있다.
만일, 레이드 스토리지 시스템에서 도 12a와 같이SSD1 ~ SSDN(1300-1 ~ 1300-N)에 데이터가 저장된 상태에서 가비지 컬렉션 요구가 발생되면, 도 12b에 도시된 바와 같이 무효한 페이지 비율이 가장 높은 스트라이프인 위에서 두 번째 스트라이프가 희생 스트라이프로 선택된다.
도 12b와 같이 희생 스트라이프를 선택하고 나서, 레이드 컨트롤러(1100A 또는 1100B)는 희생 스트라이프에 포함된 유효한 페이지들을 NVRAM(1200)의 어펀 캐시 영역(1200-1)에 카피(copy)하는 동작을 수행한다. 카피 동작을 마치고 나서, 레이드 컨트롤러(1100A 또는 1100B)는 희생 스트라이프에 포함된 패리티 정보를 소거하는 동작을 수행한다. 이와 같은 동작을 마친 후의 SSD1 ~ SSDN(1300-1 ~ 1300-N) 및 NVRAM(1200)의 데이터 저장 상태는 도 12c와 같이 된다. 이에 따라서, 어펀 캐시 영역(1200-1)에는 일시적으로 패리티 정보에 의하여 보호받지 못하는 페이지의 데이터가 저장된다. 일시적으로 패리티 정보에 의하여 보호받지 못하는 유효한 페이지를 어펀 페이지(orphan page)로 칭하고, 어펀 페이지에 저장된 데이터를 어펀 데이터(orphan data)로 칭하기로 한다.
도 12c를 참조하면, 희생 스트라이프에 포함된 패리티 정보가 삭제되었지만 희생 스트라이프에 포함된 모든 유효한 페이지들의 데이터가 어펀 캐시 영역(1200-1)에 저장되었으므로, 해당 데이터에 대한 신뢰성은 보장된다.
가비지 컬렉션을 수행하는 과정에서 희생 스트라이프에 포함된 유효한 페이지들에 대한 읽기 요청이 발생되면, 레이드 컨트롤러(1100A 또는 1100B)는 NVRAM(1200)의 어펀 캐시 영역(1200-1)으로부터 읽기 요청된 어펀 페이지를 직접 읽어내는 동작을 수행한다. 즉, SSD1 ~ SSDN(1300-1 ~ 1300-N)로부터 어펀 페이지를 읽어내는 동작을 수행하지 않고, NVRAM(1200)의 어펀 캐시 영역(1200-1)으로부터 어펀 페이지를 직접 읽어내는 동작을 수행한다. 이로 인하여, 가비지 컬렉션 동작 중에 희생 스트라이프의 유효한 페이지들에 대한 읽기 요구에 대하여 NVRAM(1200)를 이용하여 낮은 레이턴시(latency)로 데이터 읽기를 수행할 수 있게 된다.
다음으로, 레이드 컨트롤러(1100A 또는 1100B)는 NVRAM(1200)는 희생 스트라이프에 포함된 유효한 페이지들을 새로운 스트라이프를 구성할 메모리 블록에 카피하는 동작을 수행한다. 예로서, 희생 스트라이프에 포함된유효한 페이지들이 저장된동일한 SSD 내의 새로운 스트라이프를 구성할 메모리 블록에 유효한페이지를 카피할 수 있다. 다른 예로서, 희생 스트라이프에 포함된유효한 페이지들을 새로운스트라이프를 구성할 메모리 블록들에 균등하게 분배되도록 카피할수도 있다.
예로서, 위에서 언급된 새로운스트라이프를 구성할 메모리 블록은가비지 컬렉션을 위한 희생 스트라이프에 포함된 유효한 페이지들을 카피하기 위한 저장 영역으로 할당될 수 있다. 즉, 레이드 컨트롤러(1100A 또는 1100B)는 가비지 컬렉션과정에서 유효 페이지들을 카피하기 위하여 할당된 새로운 스트라이프를 구성할 메모리 블록에 노말 라이트(normal write) 동작에 따른 데이터가 섞어서 저장되지 않도록 메모리블록들을 관리한다.
예로서, 희생 스트라이프에 포함된유효한 페이지들이 저장된동일한 SSD 내의 새로운 스트라이프를 구성할 메모리 블록에 유효한페이지를 카피하는 동작에 대하여설명하기로 한다.
레이드 컨트롤러(1100A 또는 1100B)는 SSD1(1300-1)의 메모리 블록 #2에 위치한 어펀 페이지들을 SSD1(1300-1)의 메모리 블록 #M-1로 카피하는 동작을 수행한다. 그리고 나서, 레이드 컨트롤러(1100A 또는 1100B)는 SSD1(1300-1)의 메모리 블록 #2에 대한 소거 동작을 수행한다. 이와 같은 동작을 마친 후의 SSD1 ~ SSDN(1300-1 ~ 1300-N) 및 NVRAM(1200)의 데이터 저장 상태는 도 12d와 같이 된다.
같은 방식으로, 레이드 컨트롤러(1100A 또는 1100B)는 SSD2(1300-2)의 메모리 블록 #2에 위치한 어펀 페이지들을 SSD2(1300-2)의 메모리 블록 #M-1로 카피하는 동작을 수행한다. 그리고 나서, 레이드 컨트롤러(1100A 또는 1100B)는 SSD2(1300-2)의 메모리 블록 #2에 대한 소거 동작을 수행한다. 이와 같은 동작을 마친 후의 SSD1 ~ SSDN(1300-1 ~ 1300-N) 및 NVRAM(1200)의 데이터 저장 상태는 도 12e와 같이 된다.
또한, 레이드 컨트롤러(1100A 또는 1100B)는 SSD3(1300-3)의 메모리 블록 #2에 위치한 어펀 페이지들을 SSD3(1300-3)의 메모리 블록 #M-1로 카피하는 동작을 수행한다. 그리고 나서, 레이드 컨트롤러(1100A 또는 1100B)는 SSD3(1300-3)의 메모리 블록 #2에 대한 소거 동작을 수행한다. 이와 같은 동작을 마친 후의 SSD1 ~ SSDN(1300-1 ~ 1300-N) 및 NVRAM(1200)의 데이터 저장 상태는 도 12f와 같이 된다.
일 실시 예로서, 레이드 컨트롤러(1100A 또는 1100B)는 어펀 페이지들이 카피되는 메모리 블록은 가비지 컬렉션 동작에 따른 어펀 페이지들만 구성될 수 있도록 관리한다. 어펀 데이터는 가비지 컬렉션을 통해 처음에 함께 저장되었던 무효한 데이터들이 삭제되는 와중에도 살아남은 데이터이다. 즉, 어펀 데이터는 데이터 라이프타임(lifetime)이 긴 것으로 증명된 데이터이기 때문에 노말 라이트(normal write) 동작에 의한 데이터와 섞여서 하나의 메모리 블록에 저장하는 것은 비효율적이다. 이는 하나의 메모리 블록에는 데이터 라이프타임이 비슷한 데이터를 저장하는 것이 가비지 컬렉션 때 내부적인 유효 페이지 카피(inter valid page copy)를 최소화하는데 효율적이기 때문이다.
이와 같은 방식으로 가비지 컬렉션을 수행하여 SSD1 ~ SSDN-1(1300-1 ~ 1300-N-1) 각각의 메모리 블록 #M-1에 어펀 데이터가 꽉 차게 된다. 이와 같은 경우의 SSD1 ~ SSDN(1300-1 ~ 1300-N) 및 NVRAM(1200)의 데이터 저장 상태는 도 12g와 같이 된다.
그러면, 레이드 컨트롤러(1100A 또는 1100B)는 NVRAM(1200)에 저장되어 있는 어펀 데이터에 대한 패리티 정보를 연산한 후에, 연산된 패리티 정보를 SSDN의 메모리 블록 #M-1에 라이트하는 동작을 수행한다. 패리티 정보를 쓰고 나면, SSD1 ~ SSDN-1(1300-1 ~ 1300-N-1) 각각의 메모리 블록 #M-1에 저장된 어펀 데이터들은 SSDN의 메모리 블록 #M-1에 저장된 패리티 정보에 의해 보호를 받을 수 있는 유효한 페이지로 전환된다. 그리고, 레이드 컨트롤러(1100A 또는 1100B)는 SSD1 ~ SSDN(1300-1 ~ 1300-N)의 각각의 메모리 블록 #M-1으로 구성되는 새로운 스트라이프를 생성시키고, 새로운 스트라이프를 구성하는 메모리 블록 위치 정보를 스트라이프 매핑 테이블에 등록시킨다. 패리티 정보를 쓰고 나서 레이드 컨트롤러(1100A 또는 1100B)는 NVRAM(1200)의 어펀 캐시 영역(1200-1)에 저장된 어펀 데이터를 플러쉬하는 동작을 수행한다. 이와 같은 동작을 마친 후의 SSD1 ~ SSDN(1300-1 ~ 1300-N) 및 NVRAM(1200)의 데이터 저장 상태는 도 12h와 같이 된다.
도 13a 및 도 13b는 본 발명의 기술적 사상에 따른 레이드 스토리지 시스템에서의 가비지 컬렉션 동작 과정에서 희생 스트라이프에 포함된 유효한 페이지들을 새로운 스트라이프를 구성할 메모리 블록에 카피하는 방식의 다양한 예들을 보여주는 개념도이다.
도 13a 및 13b를 참조하면, 희생 스트라이프에 포함된 유효한 페이지들에 대한 패리티 정보가 삭제되었으므로, 희생 스트라이프에 포함된 유효한 페이지들은 어펀 페이지들이 된다.
도 13a를 참조하면, 희생 스트라이프에 포함된 어펀 페이지들이 동일한 SSD 내에서만 카피된다. 즉, SSD1(1300-1)의 메모리 블록 #2에 위치한 어펀 페이지들(1,2,3,4)은 SSD1(1300-1)의 메모리 블록 #M-1에 카피되고, SSD2(1300-2)의 메모리 블록 #2에 위치한 어펀 페이지들(5,6,7,8,9,a)은 SSD2(1300-2)의 메모리 블록 #M-1에 카피되고, SSD3(1300-3)의 메모리 블록 #2에 위치한 어펀 페이지들(b,c,d,e,f)은 SSD3(1300-3)의 메모리 블록 #M-1에 카피된다.
이와 같은 동일한 SSD 내에서만 어펀 페이지를 이동하는 방식에서는 어펀 페이지 카피 동작이 SSD 내부에서만 이루어진다. 이에 따라서, I/O가 SSD 내부 I/O 버스에서만 이루어지고, 외부 I/O 버스 운용이 필요하지 않게 되어 I/O 버스 트래픽(traffic)을 줄일 수 있는 장점이 있다. 그러나, 희생 스트라이프에 포함된 각 메모리블록의 어펀 페이지의 개수가상이할 수 있기 때문에 전체적인 소거 동작의 회수가 증가할수도 있게 된다.
다른 예로서, 어펀 페이지가 저장된 SSD와 상관없이 자유롭게 어펀 페이지를 카피하는 방식을 적용할 수 있다.
이 방식에 따르면, 어펀 페이지들이 저장된 어펀 캐시 영역(1200-1)으로부터 각 SSD를 구성하는 플래시 메모리의 페이지로 카피하는 동작이 이루어진다. 이로 인하여, 각 SSD들 사이에 어펀 페이지 개수가 항상 동일하므로 어펀 페이지들로부터 패리티 정보를 생성하여 노말 유효한 페이지로 변환하는 작업이 용이한 장점이 있다. 또한, 소거 동작 회수를 줄일 수 있는 장점도 있다. 다만, 어펀 페이지 카피 동작이 외부 I/O 버스를 이용하여 수행되므로I/O 버스 트래픽이 증가하고 카피 레이턴시가 길어질 수 있다.
또 다른 예로서, 기본적으로 동일한 SSD 내에서 어펀 페이지를 카피하고, 일부 어펀 페이지를 NVRAM(1200)에서 SSD 내부로 카피함으로써, 전체적으로 어펀 페이지 밸런스를 이루는 방법이 적용될 수 있다.
세부적으로, 다음과 같은 처리를통하여 어펀 페이지 밸런스를 이룰 수 있다.
우선, 희생 스트라이프에 포함된유효한 페이지들의 총 개수를 스트라이프를 구성하는 메모리 블록들중에서 패리티 정보가 저장된메모리 블록을 제외한 메모리블록들의 개수로 나눈 평균 값을 산출한다.
다음으로, 희생 스트라이프를 구성하는 메모리 블록들 각각에 포함된유효한 페이지들을 평균 값 이하의 범위 내에서 동일한SSD의 새로운 스트라이프를 구성할메모리 블록에 카피한다.
다음으로, 새로운 스트라이프를 구성할SSD들 각각의 메모리 블록에 균등하게 유효 페이지들이 저장되도록 희생 스트라이프에 포함된나머지 유효한 페이지를 새로운스트라이프를 구성할 메모리 블록에카피한다.
이와 같은 동작을 도 13b를 참조하여 세부적으로 설명하기로 한다.
예로서 SSD1(1300-1) ~ SSD3(1300-3)의 메모리 블록 #2에 포함된 유효한 페이지들이 총 개수는 15개이다. 따라서, 희생 스트라이프에서의 SSD당 유효 페이지들의 평균값은 5가 된다. 따라서, 희생 스트라이프를 구성하는 메모리 블록들 각각에 포함된유효한 페이지들을 5개 이하의 범위 내에서 동일한 SSD의 새로운 메모리 블록에 카피한다.
SSD1(1300-1)의 메모리 블록 #2에 위치한 어펀 페이지들(1,2,3,4)의 개수는 5개 이하이다. 이에 따라서, SSD1(1300-1)의 메모리 블록 #2에 위치한 어펀 페이지들(1,2,3,4)을 SSD1(1300-1)의 메모리 블록 #M-1에 카피한다.
다음으로, SSD2(1300-2)의 메모리 블록 #2에 위치한 어펀 페이지들(5,6,7,8,9,a)의 개수는 6개이다. 이에 따라서, 메모리 블록 #2에 위치한 어펀 페이지들(5,6,7,8,9,a) 중에서 다섯개의 어펀 페이지들만을 동일한 SSD2(1300-2)에 카피한다. 예로서, SSD2(1300-2)의 메모리 블록 #2에 위치한 어펀 페이지들(5,6,7,8,9,a) 중에서 하나의 어펀 페이지(a)를 제외한 어펀 페이지들(5,6,7,8,9)을 SSD2(1300-2)의 메모리 블록 #M-1에 카피한다.
다음으로, SSD3(1300-3)의 메모리 블록 #2에 위치한 어펀 페이지들(b,c,d,e,f)은 5개 이하이다. 이에 따라서, SSD3(1300-3)의 메모리 블록 #2에 위치한 어펀 페이지들(b,c,d,e,f)을 SSD3(1300-3)의 메모리 블록 #M-1에 카피한다.
다음으로, NVRAM(1200)의 어펀 캐시 영역(1200-1)에 저장된 어펀 페이지(a)를 외부 카피 동작을 통하여 SSD1(1300-1)의 메모리 블록 #M-1에 카피한다.
도 14는 본 발명의 기술적 사상에 따른 레이드 스토리지 시스템에서의 가비지 컬렉션 동작 후의 스트라이프 구성 예를 보여주는 도면이다.
RAID-level 가비지 컬렉션이 진행되면서 각 SSD가 하나의 프리(free) 메모리 블록을 확보하기 위해 필요한 소거 오퍼레이션 횟수가 상이해질 수 있다. 이에 따라서, 하나의 스트라이프를 구성하는 메모리 블록이 달라질 수 있다. 즉, 최초에는 각 SSD의 동일 인덱스(index)의 메모리 블록들끼리 하나의 스트라이프를 형성하였으나, 이후 가비지 컬렉션을 진행되면서 도 14와 같이 스트라이프를 구성하는 메모리 블록이 달라질 수 있다.
도 14을 참조하면, SSD1의 메모리 블록 #5, SSD2의 메모리 블록 #4, SSD3의 메모리 블록 #5, SSDN의 메모리 블록 #4가 하나의 스트라이프를 구성한다. 이와 같이 다이나믹하게 형성된 스트라이프 구성에 대한 정보는 위의 도 1 내지 4에서 설명한 스트라이프 매핑 테이블에 저장된다. 즉, 스트라이프 매핑 테이블을 이용하여 도 14에 도시된 각각의 스트라이프에 대한 구성 관계를 나타내는 스트라이프 포인터(stripe pointer) 정보를 검색할 수 있다.
도 15는 본 발명의 기술적 사상에 따른 레이드 스토리지 시스템에서의 스트라이프 재구성의 필요성을 설명하기 위한 도면이다.
SSD 기반 로그 구조의 RAID 스토리지 시스템에서 유효한 페이지 비율이 낮은 순서대로 가비지 컬렉션을 위한 희생 스트라이프를 선택할 수 있다. 이 경우에 하나의 스트라이프에 포함된 메모리 블록들간의 유효한 페이지 비율의 불균형(imbalance)가 크다면 가비지 컬렉션 진행 시에 불필요하게 내부적인 유효한 페이지 카피(internal valid page copy)가 많이 발생하게 된다. 이로 인하여 WAF가 커지는 문제가 발생될 수 있다.
도 15를 참조하면, 유효한 페이지 비율이 가장 낮은 스트라이프를 희생 스트라이프로 선정한다면, 인덱스 #4의 메모리 블록들로 구성된 스트라이프가 희생 스트라이프로 선정될 것이다. 이와 같이 선정된 희생 스트라이프에서의 SSD3 및 SSD4각각의 메모리 블록은 유효한 페이지 비율이 낮아서 이상적인 희생 블록이라 볼 수 있으나, SSD1 및 SSD2 각각의 메모리 블록은 유효한 페이지 비율이 높아서 불필요하게 내부적인 유효한 페이지 카피를 야기시킨다.
다시 말해, 각 개별적인 메모리 블록만 보면 인덱스 #4의 메모리 블록들로 구성된 스트라이프가 그리 좋은 희생 스트라이프로 볼 수 없다. 그러나, 패리티 종속성(parity dependency) 때문에 스트라이프 단위로 희생 블록들을 선정하여 소거 동작을 수행해야 하는 로그 구조의 RAID 스토리지 시스템의 특성상 유효한 페이지 비율만을 참작하여 인덱스 #4의 메모리 블록들로 구성된 스트라이프를 선택하여 가비지 컬렉션을 수행하게 된다.
본 발명의 기술적 사상에서는 이와 같은 문제를 해결하기 위하여 스트라이프에 포함된 메모리 블록들간의 유효한 페이지 비율의 불균형 상태를 완화시키기 위한 스트라이프 재구성 처리를 수행하는 아래와 같은 기법들을 제안한다.
(1) Memory block sharing 기법
(2) Stripe size shrinking 기법
(3) Stripe cross-merging without garbage collection 기법
(4) Stripe cross-merging with garbage collection 기법
위와 같은 4가지 기법들 모두 희생 스트라이프 선정과는 별개로 적용될 수 있다. 그리고, 위와 같은 4가지 기법들을 적용하기 위해서는 불균형 스트라이프 선정(imbalanced stripe selection) 과정이 필요하다. 설명의 편의를 위하여 불균형 스트라이프를 타깃 스트라이프로 표시하기도 하였다.
예로서, 불균형 스트라이프를 다음과 같이 선정할 수 있다.
스트라이프에 포함된 N(N은 1 이상의 정수)개 이상의 메모리 블록들의 유효한 페이지 비율이 초기 설정된 제1임계값(TH1)보다 낮고, 스트라이프에 포함된 나머지 메모리 블록들의 유효한 페이지 비율이 초기 설정된 제2임계값(TH2, 여기에서 TH2 > TH1)보다 높은 스트라이프를 불균형 스트라이프(타깃 스트라이프)로 선정한다.
만일, 위와 같은 방식으로 선정된 불균형 스트라이프가 복수개 존재하는 경우에, N 값이 큰 순서 또는 제1임계값보다 낮은 유효한 페이지 비율이 낮은 순서 또는 제2임계값보다 높은 유효한 페이지 비율이 높은 순서 중의 적어도 하나를 적용하여 단일의 불균형 스트라이프를 선정할 수 있다.
도 15를 참조하면, 인덱스 #4의 메모리 블록들로 구성된 스트라이프는 SSD3 및 SSD4의 유효한 페이지 비율이 12.5%이고, SSD1 및 SSD2의 유효한 페이지 비율이 93.8%이다. 그리고, 인덱스 #5의 메모리 블록들로 구성된 스트라이프는 SSD1 및 SSD2의 유효한 페이지 비율이 56.3%이고, SSD3 및 SSD4의 유효한 페이지 비율이 100%이다.
예로서, 제1임계값을 50%로 설정하고 제2임계값을 90%로 설정한 경우에는 인덱스 #4의 메모리 블록들로 구성된 스트라이프가 불균형 스트라이프로 선정된다.
다른 예로서, 제1임계값을 60%로 설정하고 제2임계값을 90%로 설정한 경우에는 인덱스 #4의 메모리 블록들로 구성된 스트라이프 및 인덱스 #5의 메모리 블록들로 구성된 스트라이프가 불균형 스트라이프 후보가 된다. 즉, 복수개의 불균형 스트라이프 후보들이 존재한다. 예로서, 제1임계값보다 낮은 유효한 페이지 비율이 낮은 순서에 기초하여 단일의 불균형 스트라이프를 선정하면 인덱스 #4의 메모리 블록들로 구성된 스트라이프를 단일의 불균형 스트라이프로 선정할 수 있다.
그러면, 본 발명의 기술적 사상에서 제안된 위의 4가지의 스트라이프 재구성 기법들에 대하여 구체적으로 설명하기로 한다.
(1) Memory block sharing 기법
Memory block sharing 기법은 불균형 스트라이프에 포함된 메모리 블록들 중에서유효한 페이지 비율이 낮은 순위에 기초하여 유효한 페이지비율이 낮은 적어도 하나의타깃 메모리 블록을 다른 스트라이프에 포함된 메모리 블록들 중에서타깃 메모리 블록의 유효한 페이지비율보다 높은 메모리 블록으로 대체하도록 불균형 스트라이프에 대한 메모리 블록들의 구성을 변경하는 기법이다.
도 16a ~ 도 16d는 본 발명의 기술적 사상에 따른 레이드 스토리지 시스템에서의 스트라이프 재구성 동작 과정의 일 예를 보여주는 도면이다. 도 16a ~ 도 16d을 참조하여 Memory block sharing 기법을 설명하기로 한다.
레이드 스토리지 시스템에서 레이드 컨트롤러(1100A 또는 1100B)는 복수의 스트라이프들 중에서 불균형 스트라이프를 선택한다. 예로서, 스트라이프 매핑 테이블을 이용하여 위에서 설명한 바와 같은 방식에 의하여 도 16a에서와 같이 인덱스 #4의 메모리 블록들로 구성된 스트라이프를 불균형 스트라이프로 선택할 수 있다.
다음으로, 레이드 컨트롤러(1100A 또는 1100B)는 불균형 스트라이프에 포함된 메모리 블록들 중에서 유효한페이지 비율이 낮은 순위에기초하여 인덱스 #4의 SSD3 및 SSD4의 메모리 블록들을 타깃 메모리블록으로 결정하고, 다른 스트라이프에 포함된 메모리 블록들중에서 타깃 메모리 블록의유효한 페이지 비율보다 높은 메모리 블록을 검색한다. 도 16a를 참조하면, 인덱스 #5의 SSD3 및 SSD4의 메모리 블록들을 타깃 메모리블록을 대체할 메모리 블록으로 결정한다.
다음으로, 레이드 컨트롤러(1100A 또는 1100B)는 불균형 스트라이프에 포함된 인덱스 #4의 SSD3 및 SSD4의 메모리 블록들을 인덱스 #5의 SSD3 및 SSD4의 메모리블록들로 대체하는 새로운 스트라이프를 생성한다. 그리고, 레이드 컨트롤러(1100A 또는 1100B)는 새로운 스트라이프에 대한 패리티 정보를 새로운 스트라이프에 포함된 SSDN의 메모리 블록 #6에 라이트하는 동작을 수행한다. 레이드 컨트롤러(1100A 또는 1100B)는 대체되는 인덱스 #4의 SSD3 및 SSD4의 메모리 블록들 각각에포함된 유효한 페이지들을 NVRAM(1200)의 어펀 캐시 영역(1200-1) 및 어펀 스트라이프를 구성하는 인덱스 #M의 SSD3 및 SSD4 각각에 카피하는 동작을 수행한다. 그리고 나서, 인덱스 #4의 SSD3 및 SSD4의 메모리 블록들 및 불균형 스트라이프에 대한 패리티 정보가저장된 SSDN의 메모리 블록 #4를 소거하는 동작을 수행한다. 이와 같은 스트라이프 재구성동작을 마친 후의 스트라이프 구성 상태 및 메모리블록들의 저장 상태는 도 16b와 같다.
도 16b와 같이, 불균형 스트라이프를 구성하는 일부 메모리 블록을변경하여 SSD1의 메모리블록 #4, SSD2의 메모리 블록 #4, SSD3의 메모리 블록 #5, SSD4의 메모리 블록#5, SSDN의 메모리 블록 #6으로 구성되는 새로운 스트라이프를 생성한다.
레이드 컨트롤러(1100A 또는 1100B)는 스트라이프 재구성에 따른 스트라이프 매핑 테이블을 업데이트한다. 즉, 스트라이프 매핑 테이블에 새로운 스트라이프에 대한 정보를 추가하고, 스트라이프 매핑 테이블에서 불균형스트라이프에 대한 정보를 삭제하는 동작을 수행한다.
레이드 컨트롤러(1100A 또는 1100B)는 새로운 스트라이프에 패리티 정보를 불균형 스프라이프에 대한 패리티 정보에 대체되는 메모리블록에 저장되는 데이터 및 대체할 메모리 블록에 저장되는 데이터를 배타적 논리합 연산하여 산출할수 있다. 즉, SSDN의 메모리블록 #4에 저장된 패리티 정보에SSD3의 메모리 블록 #4에 저장된 데이터와 SSD4의 메모리 블록 #4에 저장된 데이터를 XOR 연산하면 SSD1의 메모리 블록 #4에 저장된 데이터와 SSD2의 메모리 블록 #4에 저장된 데이터의 XOR 연산 값이 구해진다. 이 값에 SSD3의 메모리 블록 #5에 저장된 데이터와 SSD4의 메모리 블록 #5에 저장된 데이터를 XOR 연산하면 새로운 스트라이프에 대한 패리티 정보를 얻을 수 있다. 만일, 스트라이프를 구성하는 SSD의 개수가 증가하면 이와 같은 방식으로 패리티 정보를 산출하는 것이 XOR 연산 회수를 줄이는데 효과적이다.
도 16b를 참조하면, 하나의메모리 블록이 여러 개의 스트라이프에 포함될 수 있게 된다. 즉, SSD3의 메모리 블록 #5와 SSD4의 메모리 블록 #5는 2개의 스트라이프에 포함된다.
예로서, 레이드 컨트롤러(1100A 또는 1100B)는 스트라이프에 포함된 메모리 블록들각각에 형성된 스트라이프 개수 정보를 스트라이프 매핑 테이블에 등록하여 관리할 수 있다. 다른 예로서, 각각의 메모리블록에 대한 카운터를 구비하여 메모리 블록 별로 구성되는 스트라이프 개수를 관리할 수 있다. 세부적으로, 하나의 스트라이프에 포함될 때마다 해당 메모리블록에 대한 카운터를 '1'씩 증가시키고, 스트라이프가 해제될 때마다 해당 메모리 블록에 대한 카운터를 '1'씩 감소시키는 방식으로 메모리 블록 별 스트라이프 개수를 확인할 수 있다. 메모리 블록에 대한 카운터값이 '0'인 메모리 블록만을 소거하도록 허용할수 있다.
예로서, 레이드 컨트롤러(1100A 또는 1100B)는 도 16b와 같이 스트라이프 재구성 동작을 수행한 후에, 불균형 스트라이프에 대체되는 메모리 블록을 제공한 스트라이프에 포함된 나머지 메모리 블록들에 대한 유효한 페이지 비율이 충분히 낮으면 대체되는 메모리 블록을 제공한 스트라이프를 희생 스트라이프로 선정하여 가비지 컬렉션을 수행한다. 즉, SSD1의 메모리 블록#5 및 SSD2의 메모리 블록 #5의 유효한 페이지 비율이 낮으므로 도 16c와 같이 인덱스 #5의 SSD1, SSD2, SSD3, SSD4, SSDN으로 구성된 스트라이프를 희생 스트라이프로 선정할 수 있다.
레이드 컨트롤러(1100A 또는 1100B)는 SSD1의 메모리 블록 #5 및 SSD2의 메모리 블록 #5에 포함된 유효한 페이지들을 NVRAM(1200)의 어펀 캐시 영역(1200-1) 및 어펀 스트라이프를 구성하는 인덱스 #M의 SSD1 및 SSD2 각각에 카피하는 동작을 수행한다. 그리고 나서, 인덱스 #5의 SSD1 및 SSD2의 메모리블록들 및 SSDN의 메모리블록 #5를 소거하는 동작을 수행한다. 이와 같은 가비지 컬렉션을 마친 후의 스트라이프 구성 상태 및 메모리 블록들의 저장 상태는 도 16d와 같다.
(2) Stripe size shrinking 기법
Stripe size shrinking 기법은 불균형 스트라이프에 포함된 메모리 블록들 중에서유효한 페이지 비율이 낮은 순위에 기초하여 유효한 페이지비율이 낮은 적어도 하나의타깃 메모리 블록을 불균형 스트라이프에서 배제하도록 스트라이프에 대한 메모리 블록들의 구성을변경하는 기법이다.
도 17a 및 도 17b는 본 발명의 기술적 사상에 따른 레이드 스토리지 시스템에서의 스트라이프 재구성 동작 과정의 다른 예를 보여주는 도면이다. 도 17a 및 도 17b를 참조하여 Stripe size shrinking 기법을 설명하기로 한다.
레이드 스토리지 시스템에서 레이드 컨트롤러(1100A 또는 1100B)는 복수의 스트라이프들 중에서 불균형 스트라이프를 선택한다. 예로서, 스트라이프 매핑 테이블을 이용하여 위에서 설명한 바와 같은 방식에 의하여 도 17a에서와 같이 인덱스 #4의 메모리 블록들로 구성된 스트라이프를 불균형 스트라이프로 선택할 수 있다.
다음으로, 레이드 컨트롤러(1100A 또는 1100B)는 불균형 스트라이프에 포함된 메모리 블록들 중에서 유효한페이지 비율이 상대적으로 낮은 적어도 하나의 타깃 메모리블록을 선택한다. 예로서, 인덱스 #4의 메모리 블록들로 구성된 불균형 스트라이프에서 SSD3의 메모리 블록 #4와 SSD4의 메모리 블록 #4가 SSD1의 메모리 블록 #4 및 SSD2의 메모리 블록 #4에 비하여 상대적으로 유효한 페이지 비율이 낮다. 이에 따라서, 레이드 컨트롤러(1100A 또는 1100B)는 SSD3의 메모리 블록 #4와 SSD4의 메모리 블록 #4를 타깃 메모리 블록으로 선택한다.
다음으로, 레이드 컨트롤러(1100A 또는 1100B)는 불균형 스트라이프에서 타깃 메모리 블록인 SSD3의 메모리 블록 #4와 SSD4의 메모리 블록 #4를 배제하는 새로운 스트라이프를 생성하는 동작을 수행한다. 레이드 컨트롤러(1100A 또는 1100B)는 SSD1의 메모리 블록 #4와 SSD2의 메모리 블록 #4로 구성되는 새로운 스트라이프에 대한 패리티 정보를 연산하고, 연산된 새로운 패리티 정보를 SSDN의 메모리 블록 #6에 라이트하는 동작을 수행한다. 그리고 나서, 레이드 컨트롤러(1100A 또는 1100B)는 불균형 스트라이프에서 배제되는 타깃 메모리 블록들에 포함된 유효한 페이지들을 NVRAM(1200)의 어펀 캐시 영역(1200-1) 및 어펀 스트라이프를 구성하는 메모리 블록에 카피하는 동작을수행한다. 즉, SSD3의 메모리블록 #4와 SSD4의 메모리 블록 #4에 각각 포함된 유효한 페이지들을 NVRAM(1200)의 어펀 캐시 영역(1200-1) 및 어펀 스트라이프를 구성하는 인덱스 #M의 SSD3 및 SSD4 각각에카피하는 동작을 수행한다. 그리고나서, 인덱스 #4의 SSD3 및 SSD4의 메모리 블록들 및 불균형 스트라이프에 대한 패리티 정보가 저장된SSDN의 메모리 블록 #4를 소거하는 동작을 수행한다. 이와 같은 스트라이프 재구성 동작을 마친 후의 스트라이프 구성 상태 및 메모리 블록들의 저장 상태는 도 17b와 같다.
도 17b와 같이, 불균형 스트라이프를 구성하는 일부 메모리 블록을 배제하여 SSD1의 메모리 블록 #4, SSD2의 메모리 블록 #4, SSDN의 메모리 블록 #6으로 구성되는 새로운 스트라이프를 생성한다.
레이드 컨트롤러(1100A 또는 1100B)는 스트라이프 재구성에 따른 스트라이프 매핑 테이블을 업데이트한다. 즉, 스트라이프 매핑 테이블에 새로운 스트라이프에 대한 정보를 추가하고, 스트라이프 매핑 테이블에서 불균형스트라이프에 대한 정보를 삭제하는 동작을 수행한다.
(3) Stripecross-merging without garbage collection 기법
Stripe cross-merging without garbage collection 기법은 2개의 불균형 스트라이프를 구성하는 메모리 블록을 맞바꾸어 유효한페이지 비율이 높은 메모리블록들로 구성되는 하나의 새로운스트라이프 및 유효한 페이지비율이 낮은 메모리블록들로 구성되는 다른 하나의새로운 스트라이프를 생성하도록 2개의 불균형 스트라이프들에 대한 메모리 블록들의 구성을 변경하는 기법이다.
도 18a 및 도 18b는 본 발명의 기술적 사상에 따른 레이드 스토리지 시스템에서의 스트라이프 재구성 동작 과정의 또 다른 예를 보여주는 도면이다. 도 18a 및 도 18b를 참조하여 Stripe cross-merging without garbage collection 기법을 설명하기로 한다.
레이드 스토리지 시스템에서 레이드 컨트롤러(1100A 또는 1100B)는 복수의 스트라이프들 중에서 하나의 불균형 스트라이프를 선택한다. 예로서, 스트라이프 매핑 테이블을 이용하여 위에서 설명한 바와 같은 방식에 의하여 도 18a에서와 같이 인덱스 #4의 메모리 블록들로 구성된 스트라이프를 제1의 불균형 스트라이프로 선택할 수 있다.
다음으로, 레이드 컨트롤러(1100A 또는 1100B)는 제1의 불균형 스트라이프에 포함된 메모리 블록들중에서 유효한 페이지 비율이상대적으로 낮은 메모리 블록이겹치지 않는 제2의 불균형 스트라이프를 검색한다. 도 18a를 참조하면, 인덱스 #4의 메모리 블록들로 구성된 제1의 불균형 스트라이프에 포함된 유효한 페이지 비율이상대적으로 낮은 메모리 블록은SSD3의 메모리 블록 #4와 SSD4의 메모리 블록 #4이다. 그리고, 인덱스#5의 메모리 블록들로 구성된 스트라이프에 포함된 유효한 페이지 비율이상대적으로 낮은 메모리 블록은SSD1의 메모리 블록 #5와 SSD2의 메모리 블록 #5이다. 즉, 인덱스 #4의 메모리 블록들로 구성된 제1의 불균형 스트라이프에서 유효한 페이지 비율이상대적으로 낮은 메모리 블록은SSD3 및 SSD4에 포함되어 있고, 인덱스#5의 메모리 블록들로 구성된 제2의 불균형 스트라이프에서 유효한페이지 비율이 상대적으로 낮은 메모리 블록은 SSD1 및 SSD2에 포함되어 있다. 즉, 제1,2의 불균형 스트라이프에서 상대적으로 유효한 페이지 비율이 낮은 메모리 블록들이 서로 겹치지않는다. 이에 따라서, 레이드 컨트롤러(1100A 또는 1100B)는 인덱스 #5의 메모리 블록들로 구성된 스트라이프를 제2의 불균형 스트라이프로 선택할 수 있다.
다음으로, 레이드 컨트롤러(1100A 또는 1100B)는 제1,2의 불균형 스트라이프를 구성하는 메모리 블록을맞바꾸어 유효한 페이지 비율이높은 메모리 블록들로 구성되는 하나의새로운 스트라이프 및 유효한 페이지 비율이 낮은 메모리블록들로 구성되는 다른 하나의새로운 스트라이프를 생성한다. 예로서 도 18b와 같이, 제1,2의 불균형 스트라이프에서 SSD3 및SSD4의 메모리 블록을 맞바꾸어 2개의 새로운 스트라이프를 생성할수 있다. 즉, 유효한 페이지비율이 높은 SSD1의 메모리블록 #4, SSD2의 메모리 블록 #4, SSD3의 메모리 블록 #5, SSD4의 메모리 블록 #5를 포함하는 새로운 스트라이프와 유효한페이지 비율이 낮은 SSD1의 메모리 블록 #5, SSD2의 메모리 블록#5, SSD3의 메모리 블록 #4, SSD4의 메모리블록 #4를 포함하는 다른 하나의새로운 스트라이프를 생성할수 있다. 레이드 컨트롤러(1100A 또는 1100B)는 2개의 새로운스트라이프들 각각에 대한 패리티정보를 연산하고, 연산된각각의 패리티 정보를 2개의 새로운 스트라이프들 각각에포함된 메모리 블록에 라이트하는 동작을 수행한다. 예로서, 2개의 새로운 스트라이프들 각각에대한 패리티 정보를 SSDN의 메모리블록 #6 및 #7에 라이트한다. 그리고나서, 레이드 컨트롤러(1100A 또는 1100B)는 제1,2의 불균형 스트라이프들 각각에대한 패리티 정보가 저장된 메모리블록들을 소거하는 동작을 수행한다. 예로서, 레이드 컨트롤러(1100A 또는 1100B)는 제1의 불균형 스트라이프에 대한 패리티 정보가 저장된 SSDN의 메모리 블록 #4와 제2의 불균형 스트라이프에 대한 패리티 정보가저장된 SSDN의 메모리 블록 #5를 각각 소거한다.
이에 따라서, 도 18b와 같이 2개의 불균형 스트라이프를 구성하는 일부 메모리블록을 맞바꾸어 SSD1의 메모리 블록 #4, SSD2의 메모리 블록#4, SSD3의 메모리 블록 #5, SSD4의 메모리블록 #5, SSN의 메모리 블록 #7로 구성되는 새로운 스트라이프와 SSD1의 메모리 블록 #5, SSD2의 메모리 블록#5, SSD3의 메모리 블록 #4, SSD4의 메모리블록 #4, SSN의 메모리 블록 #6으로 구성되는 다른 새로운 스트라이프를 생성한다.
레이드 컨트롤러(1100A 또는 1100B)는 스트라이프 재구성에 따른 스트라이프 매핑 테이블을 업데이트한다. 즉, 스트라이프 매핑 테이블에 2개의 새로운 스트라이프들에 대한 정보를 추가하고, 스트라이프 매핑 테이블에서 2개의 불균형 스트라이프에 대한 정보를 삭제하는 동작을 수행한다.
(4) Stripecross-merging with garbage collection 기법
Stripe cross-merging with garbage collection 기법은 2개의 불균형 스트라이프를 구성하는 메모리 블록을 맞바꾸어 유효한페이지 비율이 높은 메모리블록들로 구성되는 하나의 새로운스트라이프를 생성하고, 가비지컬렉션을 수행하는 기법이다.
도 19a 및 도 19b는 본 발명의 기술적 사상에 따른 레이드 스토리지 시스템에서의 스트라이프 재구성 동작 과정의 또 다른 예를 보여주는 도면이다. 도 19a 및 도 19b를 참조하여 Stripe cross-merging with garbage collection 기법을 설명하기로 한다.
레이드 스토리지 시스템에서 레이드 컨트롤러(1100A 또는 1100B)는 복수의 스트라이프들 중에서 하나의 불균형 스트라이프를 선택한다. 예로서, 스트라이프 매핑 테이블을 이용하여 위에서 설명한 바와 같은 방식에 의하여 도 19a에서와 같이 인덱스 #4의 메모리 블록들로 구성된 스트라이프를 제1의 불균형 스트라이프로 선택할 수 있다.
다음으로, 레이드 컨트롤러(1100A 또는 1100B)는 제1의 불균형 스트라이프에 포함된 메모리 블록들중에서 유효한 페이지 비율이상대적으로 높은 메모리 블록이겹치지 않는 제2의 불균형 스트라이프를 검색한다. 도 19a를 참조하면, 인덱스 #4의 메모리 블록들로 구성된 제1의 불균형 스트라이프에 포함된 유효한 페이지 비율이상대적으로 높은 메모리 블록은SSD1의 메모리 블록 #4과 SSD2의 메모리 블록 #4이다. 그리고, 인덱스#5의 메모리 블록들로 구성된 스트라이프에 포함된 유효한 페이지 비율이상대적으로 높은 메모리 블록은SSD3의 메모리 블록 #5와 SSD4의 메모리 블록 #5이다. 즉, 인덱스#4의 메모리 블록들로 구성된 제1의 불균형 스트라이프에서 유효한페이지 비율이 상대적으로 높은 메모리 블록은 SSD1 및 SSD2에 포함되어 있고, 인덱스 #5의 메모리 블록들로 구성된 제2의 불균형 스트라이프에서 유효한 페이지 비율이상대적으로 높은 메모리 블록은SSD3 및 SSD4에 포함되어 있다. 즉, 제1,2의 불균형 스트라이프에서 상대적으로 유효한 페이지 비율이 높은 메모리 블록들이 서로 겹치지않는다. 이에 따라서, 레이드 컨트롤러(1100A 또는 1100B)는 인덱스 #5의 메모리 블록들로 구성된 스트라이프를 제2의 불균형 스트라이프로 선택할 수 있다.
다음으로, 레이드 컨트롤러(1100A 또는 1100B)는 제1,2의 불균형 스트라이프를 구성하는 메모리 블록을맞바꾸어 유효한 페이지 비율이높은 메모리 블록들로 구성되는 하나의새로운 스트라이프를 생성한다. 예로서 도 19b와 같이 제1,2의 불균형 스트라이프에서 SSD3 및SSD4의 메모리 블록을 맞바꾸어 유효한 페이지 비율이 높은 하나의 새로운 스트라이프를 생성할수 있다. 즉, 유효한 페이지비율이 높은 SSD1의 메모리블록 #4, SSD2의 메모리 블록 #4, SSD3의 메모리 블록 #5, SSD4의 메모리 블록 #5를 포함하는 새로운 스트라이프를 생성할 수 있다. 레이드 컨트롤러(1100A 또는 1100B)는 새로운 스트라이프에 대한 패리티 정보를 연산하고, 연산된각각의 패리티 정보를 새로운스트라이프에 포함된 메모리 블록에라이트하는 동작을 수행한다. 예로서, 새로운 스트라이프에 대한 패리티 정보를 SSDN의 메모리블록 #6에 라이트한다.
다음으로, 레이드 컨트롤러(1100A 또는 1100B)는 제1,2의 불균형 스트라이프들에 포함된메모리 블록들 중에서 새로운스트라이프에 포함되지 않는 메모리블록들에 포함된 유효한 페이지들을 NVRAM(1200)의 어펀 캐시 영역(1200-1) 및 어펀 스트라이프를 구성하는 메모리 블록에 카피하는 동작을수행한다. 즉, SSD1의 메모리블록 #5, SSD2의 메모리 블록 #5, SSD3의 메모리 블록 #4, SSD4의 메모리블록 #4 에 각각 포함된 유효한페이지들을 NVRAM(1200)의 어펀 캐시 영역(1200-1) 및 어펀 스트라이프를 구성하는 인덱스 #M의 SSD1 내지 SSD4 각각에 카피하는 동작을 수행한다.
다음으로, 레이드 컨트롤러(1100A 또는 1100B)는 제1,2의 불균형 스트라이프들 각각에대한 패리티 정보가 저장된 메모리블록들 및 제1,2의 불균형스트라이프들에 포함된 메모리 블록들중에서 새로운 스트라이프에 포함되지 않는 메모리 블록들에 대한 소거 동작을 수행한다. 즉, SSD1의 메모리 블록#5, SSD2의 메모리 블록 #5, SSD3의 메모리블록 #4, SSD4의 메모리 블록 #4, SSDN의 메모리 블록 #4 및 #5를 각각 소거한다.
레이드 컨트롤러(1100A 또는 1100B)는 스트라이프 재구성에 따른 스트라이프 매핑 테이블을 업데이트한다. 즉, 스트라이프 매핑 테이블에 하나의 새로운스트라이프에 대한 정보를 추가하고, 스트라이프 매핑 테이블에서 2개의 불균형 스트라이프에 대한 정보를 삭제하는 동작을 수행한다.
도 20은 본 발명의 기술적 사상에 따른 레이드 스토리지 시스템을 구성하는 솔리드 스테이트 드라이브(SSD) 구성의 일 예를 보여준다.
도 20에 도시된 바와 같이, SSD(200-1)는 메모리 컨트롤러(210) 및 메모리 장치(220)를 포함한다.
메모리 컨트롤러(210)는 호스트로부터 수신되는 명령에 기초하여 메모리 장치(220)에 대한 제어 동작을 수행할 수 있다. 구체적으로, 메모리 컨트롤러(710)는 복수의 채널들(CH1 ~CHN)을 통하여 어드레스, 커맨드 및 제어 신호를 제공함으로써, 메모리 장치(220)에 대한 프로그램(또는 쓰기), 독출 및 소거 동작을 제어할 수 있다.
메모리 장치(220)는 하나 이상의 플래시 메모리 칩들(221, 223)로 구성될 수 있다. 다른 예로서, 메모리 장치(220)는 플래시 메모리 칩뿐만 아니라 비휘발성 메모리인 PRAM(Phase change RAM), FRAM(Ferroelectric RAM), MRAM(Magnetic RAM) 칩 등으로 구성될 수도 있다.
SSD(200-1)은 N(N은 자연수)개의 채널을 갖고, 채널별로 4개의 플래시 메모리 칩들로 구성되는 예를 보여준다. 물론, 채널별로 구성되는 플래시 메모리 칩들의 개수는 다양하게 설정될 수 있다.
도 21은 도 20에 도시된 솔리드 스테이트 드라이브의 채널(CHANNEL) 및 웨이(WAY)에 대한 구성을 예시적으로 보여주는 도면이다.
각각의 채널(CH1 ~ CHN))에는 복수 개의 플래시 메모리 칩들(221, 222, 223)이 전기적으로 연결될 수 있다. 각각의 채널(CH1 ~ CHN)은 대응되는 플래시 메모리 칩들(221, 222, 223)로 커맨드, 어드레스 및 데이터를 송수신할 수 있는 독립적인 버스를 의미할 수 있다. 서로 다른 채널에 접속된 플래시 메모리 칩들은 각각 독립적으로 동작할 수 있다. 각각의 채널에 접속된 복수의 플래시 메모리 칩들(221, 222, 223)은 복수 개의 웨이(way1 ~ wayM)들을 형성할 수 있다. 각 채널에 형성된 M개의 웨이에는 M개의 플래시 메모리 칩들이 접속될 수 있다.
예를 들어, 참조번호 201의 플래시 메모리 칩들은 1번 채널(CH1)에서 M개의 웨이들(way1 ~ wayM)을 형성할 수 있다. 1번 채널(CH1)의 M개의 웨이들(way1 ~ wayM) 각각에는 플래시 메모리 칩(221-1 ~ 221-M)이 접속될 수 있다. 이와 같은 플래시 메모리 칩들과 각각의 채널과 웨이의 형성 관계는 참조 번호 222의 플래시 메모리 칩들 및 참조번호 223의 플래시 메모리 칩들에도 적용될 수 있다.
웨이는 동일한 채널을 공유하는 플래시 메모리 칩들을 구분하기 위한 단위이다. 채널 번호와 웨이 번호에 따라서 각각의 플래시 메모리 칩들이 식별될 수 있다. 호스트로부터 제공된 리퀘스트(request)가 어느 채널의 어느 웨이의 플래시 메모리 칩에서 수행될 지는 호스트로부터 전달된 논리적 어드레스에 의해 정해질 수 있다.
도 22는 도 21에 도시된 메모리 컨트롤러(210)의 세부 구성을 예시적으로 보여준다.
도 22에 도시된 바와 같이, 메모리 컨트롤러(210)는 프로세서(211), RAM(Random Access Memory; 212), 호스트 인터페이스(213), 메모리 인터페이스(214) 및 버스(215)를 구비한다.
메모리 컨트롤러(210)의 구성요소들은 버스(215)를 통하여 전기적으로 연결된다.
프로세서(211)는 RAM(212)에 저장된 프로그램 코드 및 데이터들을 이용하여 SSD(200-1)의 동작을 전반적으로 제어할 수 있다. SSD(200-1)이 초기화될 때 프로세서(211)는 메모리 장치(220)에 저장된 SSD(200-1)에서 수행되는 동작들을 제어하는데 필요한 프로그램 코드 및 데이터들을 읽어내어 RAM(212)에 로딩시킨다.
프로세서(211)는 RAM(212)에 저장된 프로그램 코드 및 데이터를 이용하여 호스트로부터 수신되는 커맨드에 상응하는 제어 동작을 수행할 수 있다. 세부적으로, 호스트로부터 수신되는 라이트 커맨드 또는 리드 커맨드를 수행할 수 있다. 또한, 호스트로부터 수신되는 커맨드에 기초하여 가비지 컬렉션 동작에 따른 페이지 카피 또는 메모리 블록 소거 동작을 수행하도록 SSD(200-1)를 제어할 수 있다.
호스트 인터페이스(213)는 메모리 컨트롤러(210)에 접속되는 호스트와의 데이터 교환 프로토콜을 구비하고 메모리 컨트롤러(210)와 호스트 사이의 인터페이스를 수행한다. 호스트 인터페이스(213)는 예로서 ATA(Advanced Technology Attachment) 인터페이스, SATA(Serial Advanced Technology Attachment) 인터페이스, PATA(Parallel Advanced Technology Attachment) 인터페이스, USB(Universal Serial Bus) 또는SAS(Serial Attached Small Computer System) 인터페이스, SCSI(Small Computer System Interface), eMMC(embedded Multi Media Card) 인터페이스, UFS(Universal Flash Storage) 인터페이스로 구현할 수 있다. 그러나 이는 예시일 뿐 이에 제한되는 것은 아니다. 호스트 인터페이스(213)는 프로세서(211)의 제어에 따라서 호스트로부터 커맨드, 어드레스 및 데이터를 수신하거나, 호스트로 데이터를 전송할 수 있다.
메모리 인터페이스(214)는 메모리 장치(220)와 전기적으로 연결되어 있다. 메모리 인터페이스(214)는 프로세서(211)의 제어에 따라서 메모리 장치(220)로 커맨드, 어드레스 및 데이터를 전송하거나, 메모리 장치(220)로부터 데이터를 수신할 수 있다. 메모리 인터페이스(214)는 NAND 플래시 메모리 또는NOR 플래시 메모리를 지원하도록 구성될 수 있다. 메모리 인터페이스(214)는 복수 개의 채널들을 통하여 소프트웨어 또는 하드웨어 인터리브 동작들이 수행되도록 구성될 수도 있다.
도 23은 도 21에 도시된 메모리 장치(220)를 구성하는 플래시 메모리 칩(221-1)의 세부 구성을 예시적으로 보여준다.
도 23을 참조하면, 플래시 메모리 칩(221-1)은 메모리 셀 어레이(11), 제어 로직(control logic; 12), 전압 생성부(13), 로우 디코더(14) 및 페이지 버퍼(15)를 포함할 수 있다. 이하에서는, 플래시 메모리 칩(221-1)에 포함된 구성 요소들에 대하여 상술하기로 한다.
메모리 셀 어레이(11)는 하나 이상의 스트링 선택 라인(SSL), 복수의 워드 라인들(WL) 및 하나 이상의 접지 선택 라인(GSL)에 연결될 수 있으며, 또한 복수의 비트 라인들(BL)에 연결될 수 있다. 메모리 셀 어레이(11)는 복수의 워드 라인들(WL) 및 복수의 비트 라인들(BL)이 교차하는 영역들에 배치되는 복수의 메모리 셀들(MC)을 포함할 수 있다.
메모리 셀 어레이(11)에 소거 전압이 인가되면 복수의 메모리 셀들(MC)은 소거 상태가 되며, 메모리 셀 어레이(11)에 프로그램 전압이 인가되면 복수의 메모리 셀들(MC)은 프로그램 상태가 된다. 이때, 각 메모리 셀(MC)은 문턱 전압에 따라 구분되는 소거 상태 및 제1 내지 제n 프로그램 상태들(P1 내지 Pn) 중 하나를 가질 수 있다.
여기서, n은 2 이상의 자연수일 수 있다. 예를 들어, 메모리 셀(MC)이 2 비트 레벨 셀인 경우 n은 3일 수 있다. 다른 예에서, 메모리 셀(MC)이 3 비트 레벨 셀인 경우 n은 7일 수 있다. 또 다른 예에서, 메모리 셀(MC)이 4 비트 레벨 셀인 경우 n은 15일 수 있다. 이와 같이, 복수의 메모리 셀들(MC)은 멀티 레벨 셀들을 포함할 수 있다. 그러나, 본 발명의 기술적 사상은 이에 한정되지 않고, 복수의 메모리 셀들(MC)은 싱글 레벨 셀들을 포함할 수도 있다.
제어 로직(12)은 메모리 컨트롤러(210)로부터 수신한 커맨드(CMD), 어드레스(ADDR) 및 제어 신호(CTRL)를 기초로 하여, 메모리 셀 어레이(11)에 데이터를 기입하거나 메모리 셀 어레이(11)로부터 데이터를 독출하기 위한 각종 제어 신호를 출력할 수 있다. 이로써, 제어 로직(12)은 플래시 메모리 칩(221-1) 내의 각종 동작을 전반적으로 제어할 수 있다.
제어 로직(12)에서 출력된 각종 제어 신호는 전압 생성부(13), 로우 디코더(14) 및 페이지 버퍼(15)에 제공될 수 있다. 구체적으로, 제어 로직(12)은 전압 생성부(13)에 전압 제어 신호(CTRL_vol)를 제공할 수 있고, 로우 디코더(14)에 로우 어드레스(X_ADDR)를 제공할 수 있으며, 페이지 버퍼(15)에 칼럼 어드레스(Y_ADDR)를 제공할 수 있다.
전압 생성부(13)는 전압 제어 신호(CTRL_vol)를 기초로 하여 메모리 셀 어레이(11)에 대한 프로그램, 독출 및 소거 동작을 수행하기 위한 다양한 종류의 전압들을 생성할 수 있다. 구체적으로, 전압 생성부(13)는 복수의 워드 라인들(WL)을 구동하기 위한 제1 구동 전압(VWL), 복수의 스트링 선택 라인들(SSL)을 구동하기 위한 제2 구동 전압(VSSL) 및 복수의 라운드 선택 라인들(GSL)을 구동하기 위한 제3 구동 전압(VGSL)을 생성할 수 있다.
이때, 제1 구동 전압(VWL)은 프로그램 전압(또는 기입 전압), 독출 전압, 소거 전압, 패스 전압 또는 프로그램 검증 전압일 수 있다. 또한, 제2 구동 전압(VSSL)은 스트링 선택 전압, 즉, 온(on) 전압 또는 오프(off) 전압일 수 있다. 나아가, 제3 구동 전압(VGSL)은 그라운드 선택 전압, 즉, 온 전압 또는 오프 전압일 수 있다.
본 실시예에서, 전압 생성부(13)는 전압 제어 신호(CTRL_vol)를 기초로 하여, 프로그램 루프가 시작될 때, 즉, 프로그램 루프의 횟수가 1인 경우, 프로그램 시작 전압을 프로그램 전압으로 생성할 수 있다. 또한, 전압 생성부(13)는 프로그램 루프의 횟수가 증가할수록 프로그램 시작 전압에서 스텝 전압만큼 단계적으로 증가하는 전압을 프로그램 전압으로 생성할 수 있다.
로우 디코더(14)는 복수의 워드 라인들(WL)을 통해 메모리 셀 어레이(11)에 연결되고, 제어 로직(12)으로부터 수신한 로우 어드레스(X_ADDR)에 응답하여 복수의 워드 라인들(WL) 중 일부 워드 라인을 활성화할 수 있다. 구체적으로, 독출 동작 시에 로우 디코더(14)는 선택된 워드 라인에 독출 전압을 인가하고, 비 선택된 워드 라인에 패스 전압을 인가할 수 있다.
한편, 프로그램 동작 시에 로우 디코더(14)는 선택된 워드 라인에 프로그램 전압을 인가하고, 비 선택된 워드 라인에 패스 전압을 인가할 수 있다. 본 실시예에서, 프로그램 루프들 중 적어도 하나에서 로우 디코더(14)는 선택된 워드 라인 및 추가 선택된 워드 라인에 프로그램 전압을 인가할 수 있다.
페이지 버퍼(15)는 복수의 비트 라인들(BL)을 통해 메모리 셀 어레이(11)에 연결될 수 있다. 구체적으로, 독출 동작 시에 페이지 버퍼(15)는 감지 증폭기(sense amplifier)로 동작하여 메모리 셀 어레이(11)에 저장된 데이터(DATA)를 출력할 수 있다. 한편, 프로그램 동작 시에 페이지 버퍼(15)는 기입 드라이버(write driver)로 동작하여 메모리 셀 어레이(11)에 저장하고자 하는 데이터(DATA)를 입력시킬 수 있다.
도 24는 도 23에 도시된 메모리 셀 어레이(11)의 일 예를 나타낸다.
도 24를 참조하면, 메모리 셀 어레이(11)는 플래시 메모리 셀 어레이일 수 있다. 이때, 메모리 셀 어레이(11)는 a(a는 2 이상의 정수)개의 메모리 블록들(BLK1 내지 BLKa)을 포함하고, 각 메모리 블록(BLK1 내지 BLKa)은 b(b는 2이상의 정수)개의 페이지들(PAGE1 내지 PAGEb)을 포함하며, 각 페이지들(PAGE1 내지 PAGEb)은 c(c는 2 이상의 정수)개의 섹터들(SEC1 내지 SECc)을 포함할 수 있다. 도 24에서는 도시의 편의를 위해, 메모리 블록 BLK1에 대하여만 페이지들(PAGE0 내지 PAGEb) 및 섹터들(SEC1 내지 SECc)을 도시하였으나, 다른 메모리 블록들(BLK2 내지 BLKa)도 블록 BLK1과 동일한 구조를 가질 수 있다.
도 25는 도 24에 도시된 메모리 셀 어레이(11)에 포함된 제1메모리 블록의 일 예(BLK1a)를 나타내는 회로도이다.
도 25를 참조하면, 제1 메모리 블록(BLK1a)은 수직 구조의 낸드 플래시 메모리일 수 있다. 도 25에서, 제1 방향은 x 방향으로, 제2 방향은 y 방향으로, 제3 방향은 z 방향으로 지칭하기로 한다. 그러나, 본 발명은 이에 한정되지 않고, 제1 내지 제3 방향은 변경될 수도 있다.
제1 메모리 블록(BLK1a)은 복수의 셀 스트링들(CST), 복수의 워드 라인들(WL), 복수의 비트 라인들(BL), 복수의 그라운드 선택 라인들(GSL1, GSL2), 복수의 스트링 선택 라인들(SSL1, SSL2) 및 공통 소스 라인(CSL)을 포함할 수 있다. 여기서, 셀 스트링들(CST)의 개수, 워드 라인들(WL)의 개수, 비트 라인들(BL)의 개수, 그라운드 선택 라인들(GSL1, GSL2)의 개수 및 스트링 선택 라인들(SSL1, SSL2)의 개수는 실시 예에 따라 다양하게 변경될 수 있다.
셀 스트링(CST)은 대응되는 비트 라인(BL)과 공통 소스 라인(CSL) 사이에 직렬로 연결된 스트링 선택 트랜지스터(SST), 복수의 메모리 셀들(MC) 및 그라운드 선택 트랜지스터(GST)를 포함할 수 있다. 그러나, 본 발명은 이에 한정되지 않고, 다른 실시 예에서, 셀 스트링(CST)은 적어도 하나의 더미 셀을 더 포함할 수 있다. 또 다른 실시 예에서, 셀 스트링(CST)은 적어도 두 개의 스트링 선택 트랜지스터들 또는 적어도 두 개의 그라운드 선택 트랜지스터들을 포함할 수도 있다.
또한, 셀 스트링(CST)은 제3 방향(z 방향)으로 신장될 수 있는데, 구체적으로, 기판 상에 수직 방향(z 방향)으로 신장될 수 있다. 따라서, 셀 스트링(CST)을 포함하는 메모리 블록(BLK1a)을 수직 방향의 낸드 플래시 메모리라고 지칭할 수 있다. 이와 같이, 셀 스트링(CST)을 기판 상에 수직 방향(z)으로 신장시킴으로써, 메모리 셀 어레이(11)의 집적도를 향상시킬 수 있다.
복수의 워드 라인들(WL)은 제1 방향(x) 및 제2 방향(y)으로 연장되고, 각 워드 라인(WL)은 대응되는 메모리 셀들(MC)과 연결될 수 있다. 이에 따라, 동일 층에서 제1 방향(x) 및 제2 방향(y)을 따라 이웃하게 배열된 복수의 메모리 셀들(MC)은 동일한 워드 라인(WL)에 연결될 수 있다. 구체적으로, 각 워드 라인(WL)은 메모리 셀(MC)의 게이트에 연결되어 메모리 셀(MC)을 제어할 수 있다. 이때, 복수의 메모리 셀들(MC)은 데이터를 저장할 수 있으며, 연결된 워드 라인(WL)의 제어에 따라 프로그램, 독출 또는 소거될 수 있다.
복수의 비트 라인들(BL)은 제1 방향(x)으로 연장되고, 스트링 선택 트랜지스터(SST)와 연결될 수 있다. 이에 따라, 제1 방향(x)을 따라 이웃하게 배열된 복수의 스트링 선택 트랜지스터들(SST)은 동일한 비트 라인(BL)에 연결될 수 있다. 구체적으로, 각 비트 라인(BL)은 스트링 선택 트랜지스터(SST)의 드레인에 연결될 수 있다.
복수의 스트링 선택 라인들(SSL1, SSL2)은 제2 방향(y)으로 연장되고, 스트링 선택 트랜지스터(SST)와 연결될 수 있다. 이에 따라, 제2 방향(y)을 따라 이웃하게 배열된 복수의 스트링 선택 트랜지스터들(SST)은 동일한 스트링 선택 라인(SSL1 또는SSL2)에 연결될 수 있다. 구체적으로, 각 스트링 선택 라인(SSL1 또는 SSL2)은 스트링 선택 트랜지스터(SST)의 게이트에 연결되어 스트링 선택 트랜지스터(SST)를 제어할 수 있다.
복수의 그라운드 선택 라인들(GSL1, GSL2)은 제2 방향(y)으로 연장되고, 그라운드 선택 트랜지스터(GST)와 연결될 수 있다. 이에 따라, 제2 방향(y)을 따라 이웃하게 배열된 복수의 그라운드 선택 트랜지스터들(GST)은 동일한 그라운드 선택 라인(GSL1 또는GSL2)에 연결될 수 있다. 구체적으로, 각 그라운드 선택 라인(GSL1 또는 GSL2)은 그라운드 선택 트랜지스터(GST)의 게이트에 연결되어 그라운드 선택 트랜지스터(GST)를 제어할 수 있다.
또한, 각 셀 스트링(CST)에 포함된 그라운드 선택 트랜지스터들(GST)은 공통 소스 라인(CSL)에 공통으로 연결될 수 있다. 구체적으로, 공통 소스 라인(CSL)은 그라운드 선택 트랜지스터(GST)의 소스에 연결될 수 있다.
여기서, 동일한 워드 라인(WL) 및 동일한 스트링 선택 라인(SSL1 또는 SSL2)에 공통으로 연결되고, 제2 방향(y)을 따라 이웃하게 배치되는 복수의 메모리 셀들(MC)은 페이지(PAGE)라고 지칭할 수 있다. 예를 들어, 제1 워드 라인(WL1)에 공통으로 연결되고, 제1 스트링 선택 라인(SSL1)에 공통으로 연결되며, 제2 방향(y)을 따라 이웃하게 배치되는 복수의 메모리 셀들(MC)은 제1 페이지(PAGE1)라고 지칭할 수 있다. 또한, 제1 워드 라인(WL1)에 공통으로 연결되고, 제2 스트링 선택 라인(SSL2)에 공통으로 연결되며, 제2 방향(y)을 따라 이웃하게 배치되는 복수의 메모리 셀들(MC)은 제2 페이지(PAGE2)라고 지칭할 수 있다.
메모리 셀(MC)에 대한 프로그램 동작을 수행하기 위해서는, 비트 라인(BL)에 0V를 인가하고, 스트링 선택 라인(SSL)에 온(on) 전압을 인가하고, 그라운드 선택 라인(GSL)에 오프(off) 전압을 인가할 수 있다. 온 전압은 스트링 선택 트랜지스터(SST)를 턴-온(turn-on) 시키도록 그 문턱 전압보다 크거나 같을 수 있고, 오프 전압은 그라운드 선택 트랜지스터들(GST)을 턴-오프(turn-off) 시키도록 그 문턱 전압보다 작을 수 있다. 또한, 메모리 셀들(MC) 중 선택 메모리 셀에는 프로그램 전압을 인가하고, 나머지 메모리 셀들에는 패스 전압을 인가할 수 있다. 프로그램 전압이 인가되면, F-N 터널링에 의해 메모리 셀들(MC) 내로 전하가 주입될 수 있다. 패스 전압은 메모리 셀들(MC)의 문턱 전압보다 클 수 있다.
메모리 셀(MC)에 대한 소거 동작을 수행하기 위해서는, 메모리 셀들(MC)의 바디(body)에 소거 전압을 인가하고, 워드 라인들(WL)에 0V를 인가할 수 있다. 이에 따라, 메모리 셀들(MC)의 데이터가 일시에 소거될 수 있다.
도 26은 본 발명의 기술적 사상에 따른 레이드 스토리지 시스템 구성의 또 다른 예를 보여준다.
도 26에 도시된 바와 같이, 레이드 스토리지 시스템(3000)은 레이드 컨트롤러(RAID CONTROLLER, 3100), 랜덤 액세스 메모리(RAM, 3200), 복수의 솔리드 스테이트 드라이브들(SSD1 ~ SSDn; 3300-1 ~ 3300-n) 및 버스(3400)를 포함한다. 레이드 스토리지 시스템(3000)의 구성 요소들은 버스(3400)를 통하여 전기적으로 연결된다.
복수의 솔리드 스테이트 드라이브들(SSD1 ~ SSDn; 3300-1 ~ 3300-n) 각각은 NVRAM 캐시 영역(3300-1A ~ 3300-nA)와 플래시 메모리 저장 영역(3300-1B ~ 3300nB)을 구비한다.
NVRAM 캐시 영역(3300-1A ~ 3300-nA)은 PRAM(Phase change RAM), FeRAM(Ferroelectric RAM) 또는 MRAM(Magnetic RAM)으로 구현할 수 있다. 다른 예로서, NVRAM 캐시 영역(3300-1A ~ 3300-nA)은 휘발성 메모리인 DRAM 또는 SRAM에 인가되는 전원을 배터리 또는 커패시터를 이용하는 방식으로 구현할 수도 있다. 이와 같은 방식에 따르면 시스템 전원이 꺼지더라도DRAM 또는 SRAM에 저장되어 있는 데이터를 보존할 수 있게 된다.
플래시 메모리 저장 영역(3300-1B ~ 3300nB)은 SSD1 ~ SSDn(3300-1 ~ 3300-n)를 구성하는 플래시 메모리 장치들의 저장 영역을 의미한다.
NVRAM 캐시 영역(3300-1A ~ 3300-nA)에는 스트라이프 라이트 동작을 위한 캐시 영역과 가비지 컬렉션 동작 과정에서 생성되는 어펀 페이지가 카피되는 캐시 영역이 할당될 수 있다.
예로서, 가비지 컬렉션에 의하여 선택된 희생 스트라이프를 구성하는 SSD1 ~ SSDn(3300-1 ~ 3300-n)의 플래시 메모리 저장 영역의 메모리 블록 내의 유효한 페이지들이 NVRAM 캐시 영역(3300-1A ~ 3300-nA)에 저장된다.
예로서, 레이드 컨트롤러(3100)는 NVRAM 캐시 영역(3300-1A ~ 3300-nA)을 이용하여 스트라이프 단위로 라이트 동작을 수행하는 제어 동작을 수행한다.
레이드 컨트롤러(3100)는 희생 스트라이프에 포함된 SSD1 ~ SSDn(3300-1 ~ 3300-n)의 플래시 메모리 저장 영역에 쓰여진 유효한 페이지들을 서로 다른 SSD의 NVRAM 캐시 영역에 카피하는 제어 동작을 수행한다.
랜덤 액세스 메모리(3200)는 휘발성 메모리로서 DRAM 또는 SRAM으로 구현할 수 있다. 랜덤 액세스 메모리(3200)에는 레이드 스토리지 시스템(3000)을 동작시키데 필요한 정보 또는 프로그램 코드가 저장된다.
이에 따라서, 랜덤 액세스 메모리(3200)에는 매핑 테이블 정보가 저장될 수 있다. 매핑 테이블 정보에는 논리적 어드레스를 물리적 어드레스로 변환하는 어드레스 매핑 테이블 및 스트라이프 그룹핑에 대한 정보를 나타내는 스트라이프 매핑 테이블이 포함될 수 있다. 스트라이프 매핑 테이블에는 스트라이프들 각각에 대한 유효한 페이지 비율 정보가 포함될 수도 있다. 또한, 매핑 테이블 정보에는 NVRAM 캐시 영역(3300-1A ~ 3300-nA)에 저장된 어펀 데이터에 대한 저장 위치 정보를 나타내는 어펀 매핑 테이블도 포함될 수 있다.
예로서, 레이드 컨트롤러(3100)는 NVRAM 캐시 영역(3300-1A ~ 3300-nA) 또는 플래시 메모리 저장 영역(3300-1B ~ 3300nB)으로부터 매핑 테이블 정보를 읽어내어 랜덤 액세스 메모리(3200)에 로딩시킬 수 있다. 레이드 컨트롤러(3100)는 랜덤 액세스 메모리(3200)에 로딩된 어드레스 매핑 테이블을 이용하여 레이드 스토리지 시스템(3200)에서의 리드 동작 또는 라이트 동작 시의 주소 변환 처리를 수행할 수 있다.
레이드 컨트롤러(3100)는 로그 구조의 레이드(log-structured RAID) 환경에 기초하여 SSD들(3300-1 ~ 3300-n)을 제어한다. 세부적으로, 레이드 컨트롤러(3100)는 플래시 메모리 저장 영역(3300-1B ~ 3300-nB)에 쓰여진 데이터를 업데이트(update)하는 경우에 로그 형식으로 라이트된 복수의 메모리 블록과 복수의 메모리 블록에 저장되는 데이터에 대한 패리티 정보를 저장하는 메모리 블록을 하나의 스트라이프를 구성하는 방식으로 라이트한다.
레이드 컨트롤러(3100)는 스트라이프를 구성하는 SSD들(3300-1 ~ 3300-n)의 플래시 메모리 저장영역(3300-1B ~ 3300-nB)의 메모리 블록 위치 정보들을 스트라이프 매핑 테이블에 등록하는 동작을 수행한다.
레이드 컨트롤러(3100)는 랜덤 액세스 메모리(3200)에 저장되어 있는 매핑 테이블 정보를 이용하여 어드레스 변환 처리 또는 스트라이프 그룹핑 처리를 수행할 수 있다. 레이드 컨트롤러(3100)는 매핑 테이블 정보를 이용하여 가비지 컬렉션을 위한 희생 스트라이프를 선택하는 동작을 수행한다. 예로서, 레이드 컨트롤러(3100)는 스트라이프 매핑 테이블을 이용하여 그룹핑된 스트라이프들 중에서 유효한 페이지 비율이 가장 낮은 스트라이프를 찾아내어 희생 스트라이프로 선택할 수 있다.
레이드 컨트롤러(3100)는 가비지 컬렉션에 의하여 선택된 희생 스트라이프를 구성하는 SSD1 ~ SSDn(3300-1 ~ 3300-n)의 플래시 메모리 저장 영역(3300-1B ~ 3300-nB)의 메모리 블록 내의 유효한 페이지들이 NVRAM 캐시 영역(3300-1A ~ 3300-nA)에 카피하는 동작을 수행한다. 레이드 컨트롤러(3100)는 NVRAM 캐시 영역(3300-1A ~ 3300-nA)에 카피된 데이터를 이용하여 가비지 컬렉션 제어 동작을 수행한다.
그리고, 레이드 컨트롤러(3100)는 희생 스트라이프에 포함된 패리티 정보가저장된 플래시 메모리 저장 영역(3300-1B ~ 3300-nB)의 메모리 블록을 소거하는 제어 동작, 희생 스트라이프에 포함된 유효한 페이지들을 플래시 메모리 저장 영역(3300-1B ~ 3300nB)에서의 새로운 스트라이프를 구성할메모리 블록에 카피하는 제어 동작 및, 새로운 스트라이프를 구성할메모리 블록에 카피된 유효한페이지들이 저장되어 있는 희생 스트라이프의 메모리 블록을 소거하는 제어 동작을 수행한다.
레이드 컨트롤러(3100)는 NVRAM 캐시 영역(3300-1A ~ 3300-nA)에 카피된 데이터들에 대한 패리티 정보를 산출하고, 산출된 패리티 정보를 NVRAM 캐시 영역(3300-1A ~ 3300-nA)에서의 새로운 스트라이프를 구성할 메모리 블록에 카피하는 제어 동작을 수행한다.
레이드 컨트롤러(3100)는 희생 스트라이프에 포함된 유효한 페이지들이 카피된 메모리 블록들과 패리티 정보가 카피된 메모리 블록에 대하여 새로운 스트라이프를 구성하는 스트라이프 그룹핑 정보를 스트라이프 매핑 테이블에 등록하는 동작을 수행한다. 그리고, 레이드 컨트롤러(3100)는 희생 스트라이프에 대한 스트라이프 그룹핑 정보를 스트라이프 매핑 테이블에서 삭제한다. 이에 따라서, 희생 스트라이프에 포함된 메모리 블록들은 프리 블록(free block)이 된다. 프리 블록은 데이터가 저장되지 않은 빈 메모리 블록을 의미한다.
레이드 스토리지 시스템(3100)에서의 가비지 컬렉션 동작 중에 희생 스트라이프에 포함된패리티 정보가 저장된 메모리블록을 소거한 후에는, 희생 스트라이프에 포함된 메모리 블록들에 쓰여진 유효한 페이지들은 패리티정보에 보호를 받지 못하게된다. 즉, SSD1 ~ SSDn(3300-1 ~ 3300-n) 중의 일부 플래시 메모리 저장 영역(3300-1B ~ 3300-nB)에서 고장이 발생되더라도 NVRAM 캐시 영역(3300-1A ~ 3300-nA)에 저장된 데이터를 이용하여 고장이 발생된 플래시 메모리 저장 영역(3300-1B ~ 3300-nB)의 메모리 블록에 쓰여진 유효한 페이지들을 복원할 수 있다.
레이드 컨트롤러(3100)는 가비지 컬렉션 동작 중에 희생 스트라이프에 포함된 페이지에 대한 읽기 요청 발생되면, 읽기 요청된 페이지에 대한 데이터를 NVRAM 캐시 영역(3300-1A ~ 3300-nA)으로부터 읽어내는 동작을 수행한다. 레이드 컨트롤러(3100)는 매핑 테이블 정보를 이용하여 읽기 요청된 데이터가 SSD1 ~ SSDn(3300-1 ~ 3300-n) 중의 어느 SSD의 NVRAM 캐시 영역에 저장되어 있는지를 찾아낼 수 있다.
예로서, 가비지 컬렉션 동작 중에 희생 스트라이프에 포함된 페이지에 대한 읽기 요청이 외부의 호스트(도면에 미도시)로부터레이드 스토리지 시스템(3000)으로 수신되는 경우에, 레이드 컨트롤러(3100)는 읽기 요청된 페이지에 대한 데이터가 SSD1 ~ SSDn(3300-1 ~ 3300-n) 중의 어느 SSD의 NVRAM 캐시 영역에 저장되어 있는지를 찾아낸다. 예로서, 읽기 요청된 페이지가 SSD2(3300-2)의 NVRAM 캐시 영역(3300-2A)에 저장되어 있는 것으로 확인되면, 레이드 컨트롤러(3100)는 SSD2(3300-2)의 NVRAM 캐시 영역(3300-2A)으로부터 읽기 요청된 데이터를 읽어내어 호스트로 전송하는 동작을 수행할 수 있다.
레이드 컨트롤러(3100)는 스트라이프에 포함된 메모리 블록들 간의 유효한 페이지 비율의 불균형 상태를 완화시키기 위한 스트라이프 재구성 처리를 수행한다. 예로서, 위에서 설명한 바와 같은 Memory block sharing 기법, Stripe size shrinking 기법, Stripe cross-merging without garbage collection 기법, Stripecross-merging with garbage collection 기법을 이용하여 스트라이프 재구성 처리를 수행할 수 있다. 또한, 레이드 컨트롤러(3100)는 도 36 내지 도 48의 흐름도에 도시된 바와 같은 스트라이프 재구성 방법 및 가비지 컬렉션 동작 방법을 수행할 수 있다.
도 27은 도 26에 도시된 솔리드 스테이트 드라이브(3300-1) 구성의 일 예를 보여준다.
도 27에 도시된 바와 같이, SSD(3300-1)는 메모리 컨트롤러(3310) 및 메모리 장치(3320)를 포함한다.
메모리 컨트롤러(3310)에는 NVRAM 캐시 영역(3310-1)이 할당되어 있다. NVRAM 캐시 영역(3310-1)은 PRAM(Phase change RAM), FeRAM(Ferroelectric RAM) 또는 MRAM(Magnetic RAM)으로 구현할 수 있다. 다른 예로서, NVRAM 캐시 영역(3310-1)은 휘발성 메모리인 DRAM 또는 SRAM에 인가되는 전원을 배터리 또는 커패시터를 이용하는 방식으로 구현할 수도 있다.
메모리 컨트롤러(3310)는 호스트로부터 수신되는 명령에 기초하여 메모리 장치(3320)에 대한 제어 동작을 수행할 수 있다. 구체적으로, 메모리 컨트롤러(3310)는 복수의 채널들(CH1 ~CHN)을 통하여 어드레스, 커맨드 및 제어 신호를 제공함으로써, 메모리 장치(220)에 대한 프로그램(또는 쓰기), 독출 및 소거 동작을 제어할 수 있다.
메모리 장치(3320)는 하나 이상의 플래시 메모리 칩들(3321, 332m)로 구성될 수 있다. 다른 예로서, 메모리 장치(3320)는 플래시 메모리 칩뿐만 아니라 비휘발성 메모리인 PRAM(Phase change RAM), FRAM(Ferroelectric RAM), MRAM(Magnetic RAM) 칩 등으로 구성될 수도 있다. 메모리 장치(3320)에서의 플래시 메모리 칩(3321, 332m)에 의한 저장 영역이 플래시 메모리 저장영역(3300-1B)이 된다.
메모리 컨트롤러(3310)는 레이드 스토리지 시스템(3000)의 레이드 컨트롤러(3100)로부터 수신되는 커맨드에 기초하여 NVRAM 캐시 영역(3310-1)을 관리한다. 예로서, 레이드 컨트롤러(3100)로부터 수신되는 커맨드에 기초하여 가비지 컬렉션 동작 시에 발생되는 어펀 페이지의 데이터를 NVRAM 캐시 영역(3310-1) 쓰거나 읽는 동작을 수행할 수 있다.
도 28은 도 27에 도시된 메모리 컨트롤러(3310)의 세부 구성의 일 예를 보여준다.
도 28에 도시된 바와 같이, 메모리 컨트롤러(3310A)는 프로세서(3311A), NVRAM(3312), 호스트 인터페이스(3313), 메모리 인터페이스(3314) 및 버스(3315)를 구비한다. 메모리 컨트롤러(3310A)의 구성요소들은 버스(3315)를 통하여 전기적으로 연결된다.
NVRAM(3312)에는 가비지 컬렉션 동작 과정에서 일시적으로 패리티(parity) 정보에 의해 보호받지 못하는 데이터를 저장하는 캐시 영역이 할당될 수 있다. 그리고, NVRAM(3312)에는 레이드 스토리지 시스템(3000)에서 이용되는 매핑 테이블 정보가 저장될 수도 있다. 매핑 테이블 정보에는 논리적 어드레스(logical address)를 물리적 어드레스(physical)로 변환하는 어드레스 매핑 테이블 및 스트라이프 그룹핑에 대한 정보를 나타내는 스트라이프 매핑 테이블이 포함될 수 있다. 스트라이프 그룹핑에 대한 정보는 각각의 스트라이프를 구성하는 메모리 블록들을 나타내는 정보가 포함될 수 있다. 스트라이프 매핑 테이블에는 스트라이프들 각각에 대한 유효한 페이지 비율 정보가 포함될 수도 있다.
프로세서(3311A)는 NVRAM(3312)에 저장된 프로그램 코드 및 데이터들을 이용하여 SSD(3300-1)의 동작을 전반적으로 제어할 수 있다. SSD(3300-1)이 초기화될 때 프로세서(3311A)는 메모리 장치(3320)에 저장된 SSD(3300-1)에서 수행되는 동작들을 제어하는데 필요한 프로그램 코드 및 데이터들을 읽어내어 NVRAM(3312)에 로딩시킨다.
프로세서(3311A)는 NVRAM(3312)에 저장된 프로그램 코드 및 데이터를 이용하여 호스트로부터 수신되는 커맨드에 상응하는 제어 동작을 수행할 수 있다. 세부적으로, 호스트로부터 수신되는 라이트 커맨드 또는 리드 커맨드를 수행할 수 있다. 또한, 호스트로부터 수신되는 커맨드에 기초하여 가비지 컬렉션 동작에 따른 페이지 카피 동작 및 메모리 블록 소거 동작을 수행하도록SSD(3300-1)를 제어할 수 있다.
호스트 인터페이스(3313)는 메모리 컨트롤러(3310)에 접속되는 호스트와의 데이터 교환 프로토콜을 구비하고 메모리 컨트롤러(3310)와 호스트 사이의 인터페이스를 수행한다. 호스트 인터페이스(3313)는 예로서 ATA(Advanced Technology Attachment) 인터페이스, SATA(Serial Advanced Technology Attachment) 인터페이스, PATA(Parallel Advanced Technology Attachment) 인터페이스, USB(Universal Serial Bus) 또는SAS(Serial Attached Small Computer System) 인터페이스, SCSI(Small Computer System Interface), eMMC(embedded Multi Media Card) 인터페이스, UFS(Universal Flash Storage) 인터페이스로 구현할 수 있다. 그러나 이는 예시일 뿐 이에 제한되는 것은 아니다. 호스트 인터페이스(3313)는 프로세서(3311A)의 제어에 따라서 호스트로부터 커맨드, 어드레스 및 데이터를 수신하거나, 호스트로 데이터를 전송할 수 있다.
메모리 인터페이스(3314)는 메모리 장치(3320)와 전기적으로 연결되어 있다. 메모리 인터페이스(3314)는 프로세서(3311A)의 제어에 따라서 메모리 장치(3320)로 커맨드, 어드레스 및 데이터를 전송하거나, 메모리 장치(3320)로부터 데이터를 수신할 수 있다. 메모리 인터페이스(3314)는 NAND 플래시 메모리 또는 NOR 플래시 메모리를 지원하도록 구성될 수 있다. 메모리 인터페이스(3314)는 복수 개의 채널들을 통하여 소프트웨어 또는 하드웨어 인터리브 동작들이 수행되도록 구성될 수도 있다.
도 29는 도 27에 도시된 메모리 컨트롤러(3310)의 세부 구성의 다른 예를 보여준다.
도 29에 도시된 바와 같이, 메모리 컨트롤러(3310B)는 프로세서(3311B), NVRAM(3312), 호스트 인터페이스(3313), 메모리 인터페이스(3314), 버스(3315) 및 RAM(3316)를 구비한다. 메모리 컨트롤러(3310B)의 구성요소들은 버스(3315)를 통하여 전기적으로 연결된다.
도 29에 도시된 메모리 컨트롤러(3310B)는 도 28에 도시된 메모리 컨트롤러(3310A)에 비하여 RAM(3316)이 추가된다. 호스트 인터페이스(3313), 메모리 인터페이스(3314)는 도 28에서 설명하였으므로, 중복된 설명을 피하기로 한다.
RAM(3316)는 휘발성 메모리로서 DRAM 또는 SRAM으로 구현할 수 있다. RAM(3316)에는 레이드 스토리지 시스템(3000)을 동작시키데 필요한 정보 또는 프로그램 코드가 저장된다.
예로서, RAM(3316)에는 매핑 테이블 정보가 저장될 수 있다. 매핑 테이블 정보에는 논리적 어드레스를 물리적 어드레스로 변환하는 어드레스 매핑 테이블 및 스트라이프 그룹핑에 대한 정보를 나타내는 스트라이프 매핑 테이블이 포함될 수 있다. 스트라이프 매핑 테이블에는 그룹핑된 스트라이프들 각각에 대한 유효한 페이지 비율 정보가 포함될 수도 있다.
그리고, NVRAM(3312)에는 가비지 컬렉션 동작 과정에서 일시적으로 패리티(parity) 정보에 의해 보호받지 못하는 데이터를 저장하는 캐시 영역이 할당될 수 있다.
예로서, 프로세서(3311B)는 NVRAM(3312)로부터 매핑 테이블 정보를 읽어내어 랜덤 액세스 메모리(3316)에 로딩시킬 수 있다. 다른 예로서, 프로세서(3311B)는 메모리 장치(3320)로부터 매핑 테이블 정보를 읽어내어 랜덤 액세스 메모리(3316)에 로딩시킬 수도 있다.
프로세서(3311B)는 RAM(3316)에 저장된 프로그램 코드 및 데이터들을 이용하여 SSD(3300-1)의 동작을 전반적으로 제어할 수 있다. SSD(3300-1)이 초기화될 때 프로세서(3311A)는 메모리 장치(3320) 또는 NVRAM(3312)에 저장된 SSD(3300-1)에서 수행되는 동작들을 제어하는데 필요한 프로그램 코드 및 데이터들을 읽어내어 RAM(3316)에 로딩시킨다.
프로세서(3311B)는 RAM(3316)에 저장된 프로그램 코드 및 데이터를 이용하여 호스트로부터 수신되는 커맨드에 상응하는 제어 동작을 수행할 수 있다. 세부적으로, 호스트로부터 수신되는 라이트 커맨드 또는 리드 커맨드를 수행할 수 있다. 또한, 호스트로부터 수신되는 커맨드에 기초하여 가비지 컬렉션 동작에 따른 페이지 카피 동작 및 메모리 블록 소거 동작을 수행하도록 SSD(3300-1)를 제어할 수 있다.
도 30a ~ 도 30e는 도 26에 도시된 레이드 스토리지 시스템(3000)에서의 스트라이프 라이트 동작 과정을 보여주는 개념도이다.
도 30a ~ 도 30e에는 레이드 스토리지 시스템(3000)을 5개의 SSD로 구성하는 예가 도시되어 있다.
프로세서(3311A 또는 3311B)는 라이트 요구가 발생되면 최초로 하나의 메모리 블록만큼의 데이터를 SSD1 ~ SSD5의 플래시 메모리 저장 영역(NAND)과 NVRAM 캐시 영역에 각각 라이트한다. 예로서, 플래시 메모리 저장 영역(NAND)과 NVRAM 캐시 영역은 서로 다른 SSD에 포함되도록 결정한다. 도 30a를 참조하면, 최초로 하나의 메모리 블록만큼의 데이터(D1)는 SSD1의 플래시 메모리 저장 영역(NAND)과 SSD5의 NVRAM 캐시 영역에 각각 라이트된다.
도 30b를 참조하면, 프로세서(3311A 또는 3311B)는 두 번째의 메모리 블록만큼의 데이터(D2)를 SSD2의 플래시 메모리 저장 영역(NAND)과 SSD4의 NVRAM 캐시 영역에 각각 라이트한다.
도 30c를 참조하면, 프로세서(3311A 또는 3311B)는 세 번째의 메모리 블록만큼의 데이터(D3)를 SSD3의 플래시 메모리 저장 영역(NAND)과 SSD2의 NVRAM 캐시 영역에 각각 라이트한다.
도 30d를 참조하면, 프로세서(3311A 또는 3311B)는 네 번째의 메모리 블록만큼의 데이터(D4)를 SSD4의 플래시 메모리 저장 영역(NAND)과 SSD1의 NVRAM 캐시 영역에 각각 라이트한다.
다음으로, 프로세서(3311A 또는 3311B)는 SSD1 ~ SSD5의 NVRAM 캐시 영역에 저장된 데이터(D1~D4)에 대한 패리티 정보를 연산한 후에, SSD5의 플래시 메모리 저장 영역(NAND)에 라이트한다. 그리고 나서, 프로세서(3311A 또는 3311B)는 NVRAM 캐시 영역에 저장된 데이터를 플러쉬 처리한다. 이와 같은 동작을 마친 후의 데이터 저장 상태를 도 30e에 도시하였다.
도 31은 본 발명의 기술적 사상에 따른 레이드 스토리지 시스템 구성의 또 다른 예(4000)를 보여준다.
도 31에 도시된 바와 같이, 레이드 스토리지 시스템(4000)은 메모리 컨트롤러(4110) 및 메모리 장치(4220)를 포함한다. 도 25를 참조하면, 레이드 스토리지 시스템(4000)을 단일의 SSD로 구현한 예를 보여준다.
메모리 장치(4200)는 하나 이상의 플래시 메모리 칩들(4201, 420m)로 구성될 수 있다. 다른 예로서, 메모리 장치(4200)는 플래시 메모리 칩뿐만 아니라 비휘발성 메모리인 PRAM(Phase change RAM), FRAM(Ferroelectric RAM), MRAM(Magnetic RAM) 칩 등으로 구성될 수도 있다.
메모리 컨트롤러(4100)에는 RAID 제어 소프트웨어(4100-1)가 저장되어 있으며, 또한 NVRAM 캐시 영역(4100-2)이 할당되어 있다.
NVRAM 캐시 영역(4100-2)은 PRAM(Phase change RAM), FeRAM(Ferroelectric RAM) 또는 MRAM(Magnetic RAM)으로 구현할 수 있다. 다른 예로서, NVRAM 캐시 영역(4100-2)은 휘발성 메모리인 DRAM 또는 SRAM에 인가되는 전원을 배터리 또는 커패시터를 이용하는 방식으로 구현할 수도 있다.
메모리 컨트롤러(4100)는 RAID 제어 소프트웨어(4100-1)를 이용하여 로그 구조의 레이드(log-structured RAID) 환경에 기초하여 채널 단위 또는 웨이 단위로 스트라이프 라이트를 수행하도록 레이드 스토리지 시스템(4000)을 제어한다.
메모리 컨트롤러(4100)는 복수의 채널들(CH1 ~CHN)을 통하여 어드레스, 커맨드 및 제어 신호를 제공함으로써, 메모리 장치(4200)에 대한 프로그램(또는 쓰기), 독출 및 소거 동작을 제어할 수 있다.
메모리 컨트롤러(4100)는 가비지 컬렉션을 위한 희생 스트라이프에 포함된 메모리 장치(4200)의 유효한 페이지들을 NVRAM 캐시 영역(4100-2)에 카피하는 제어 동작을 수행하고, NVRAM 캐시 영역(4100-2)에 카피된 데이터를 이용하여 가비지 컬렉션 제어 동작을 수행한다.
메모리 컨트롤러(4100)는 희생 스트라이프에 포함된패리티 정보가 저장된 메모리블록을 소거하는 제어 동작, 희생 스트라이프에 포함된 유효한 페이지들을 새로운 스트라이프를 구성할메모리 블록에 카피하는 제어 동작 및, 새로운 스트라이프를 구성할메모리 블록에 카피된 유효한페이지들이 저장되어 있는 희생 스트라이프의 메모리 블록을 소거하는 제어 동작을 수행한다.
메모리 컨트롤러(4100)는 NVRAM 캐시 영역(4100-2)에 카피된 어펀 데이터들에 대한 패리티 정보를 산출하고, 산출된 패리티 정보를 새로운 스트라이프를 구성할 메모리 블록에 카피하는 제어 동작을 수행한다.
메모리 컨트롤러(4100)는 희생 스트라이프에 포함된 유효한 페이지들이 카피된 메모리 블록들과 패리티 정보가 카피된 메모리 블록에 대하여 새로운 스트라이프를 구성하는 스트라이프 그룹핑 정보를 스트라이프 매핑 테이블에 등록하는 동작을 수행한다. 그리고, 메모리 컨트롤러(4100)는 희생 스트라이프에 대한 스트라이프 그룹핑 정보를 스트라이프 매핑 테이블에서 삭제한다. 이에 따라서, 희생 스트라이프에 포함된 메모리 블록들은 프리 블록(free block)이 된다.
메모리 컨트롤러(4100)는 가비지 컬렉션 동작 중에 희생 스트라이프에 포함된 페이지에 대한 읽기 요청 발생되면, 읽기 요청된 페이지에 대한 데이터를 NVRAM 캐시 영역(4100-2) 으로부터 읽어내는 동작을 수행한다.
메모리 컨트롤러(4100)는 스트라이프에 포함된 메모리 블록들 간의 유효한 페이지 비율의 불균형 상태를 완화시키기 위한 스트라이프 재구성 처리를 수행한다. 예로서, 위에서 설명한 바와 같은 Memory block sharing 기법, Stripe size shrinking 기법, Stripe cross-merging without garbage collection 기법, Stripe cross-merging with garbage collection 기법을 이용하여 스트라이프 재구성 처리를 수행할 수 있다. 또한, 메모리 컨트롤러(4100)는 도36 내지 도 48의 흐름도에 도시된 바와 같은 스트라이프 재구성 방법 및 가비지 컬렉션 동작 방법을 수행할 수 있다.
도 32는 도 31에 도시된 메모리 컨트롤러의 세부 구성의 일 예(4100A)를 보여준다.
도 32에 도시된 바와 같이, 메모리 컨트롤러(4100A)는 프로세서(4110A), RAM(4120), NVRAM(4130A), 호스트 인터페이스(4140), 메모리 인터페이스(4150) 및 버스(4160)를 구비한다. 메모리 컨트롤러(4100A)의 구성요소들은 버스(4160)를 통하여 전기적으로 연결된다.
호스트 인터페이스(4140) 및 메모리 인터페이스(4150)는 도 28에 도시된 호스트 인터페이스(3313) 및 메모리 인터페이스(3314)와 실질적으로 동일하게 동작하므로 중복적인 설명은 피하기로 한다.
RAM(4120)는 휘발성 메모리로서 DRAM 또는 SRAM으로 구현할 수 있다. RAM(4120)에는 레이드 스토리지 시스템(4000)을 동작시키데 필요한 RAID 제어 소프트웨어(4100-1) 및 시스템 데이터가 저장된다.
예로서, RAM(4120)에는 매핑 테이블 정보가 저장될 수 있다. 매핑 테이블 정보에는 논리적 어드레스를 물리적 어드레스로 변환하는 어드레스 매핑 테이블 및 스트라이프 그룹핑에 대한 정보를 나타내는 스트라이프 매핑 테이블이 포함될 수 있다. 스트라이프 매핑 테이블에는 그룹핑된 스트라이프들 각각에 대한 유효한 페이지 비율 정보가 포함될 수도 있다.
NVRAM(4130A)에는 가비지 컬렉션 동작 과정에서 일시적으로 패리티(parity) 정보에 의해 보호받지 못하는 데이터를 저장하는 캐시 영역이 할당될 수 있다.
프로세서(4110A)는 RAM(4120)에 저장된 프로그램 코드 및 데이터들을 이용하여 레이드 스토리지 시스템(4000)의 동작을 전반적으로 제어할 수 있다. 레이드 스토리지 시스템(4000)이 초기화될 때 프로세서(4110A)는 메모리 장치(4200) 또는 NVRAM(4130A)으로부터 레이드 스토리지 시스템(4000)에서 수행되는 동작들을 제어하는데 필요한 프로그램 코드 및 데이터들을 읽어내어 RAM(4120)에 로딩시킨다.
프로세서(4110A)는 RAM(4120)에 저장된 프로그램 코드 및 데이터를 이용하여 호스트로부터 수신되는 커맨드에 상응하는 제어 동작을 수행할 수 있다. 세부적으로, 호스트로부터 수신되는 라이트 커맨드 또는 리드 커맨드를 수행할 수 있다. 또한, 호스트로부터 수신되는 커맨드에 기초하여 가비지 컬렉션 동작에 따른 페이지 카피 동작을 수행하도록 레이드 스토리지 시스템(4000)을 제어할 수 있다.
프로세서(4110A)는 RAM(4120)에 RAID 제어 소프트웨어(4100-1)를 구동시켜 스트라이프에 포함된 메모리 블록들 간의 유효한 페이지 비율의 불균형 상태를 완화시키기 위한 스트라이프 재구성 처리를 수행한다. 예로서, 위에서 설명한 바와 같은 Memory block sharing 기법, Stripe size shrinking 기법, Stripe cross-merging without garbage collection 기법, Stripecross-merging with garbage collection 기법을 이용하여 스트라이프 재구성 처리를 수행할 수 있다. 또한, 프로세서(4110A)는 도 36 내지 도 48의 흐름도에 도시된 바와 같은 스트라이프 재구성 방법 및 가비지 컬렉션 동작 방법을 수행할 수 있다.
도 33은 도 31에 도시된 메모리 컨트롤러의 세부 구성의 다른 예(4100B)를 보여준다.
도 33에 도시된 바와 같이, 메모리 컨트롤러(4100B)는 프로세서(4110B), NVRAM(4130A), 호스트 인터페이스(4140), 메모리 인터페이스(4150) 및 버스(4160)를 구비한다. 메모리 컨트롤러(4100B)의 구성요소들은 버스(4160)를 통하여 전기적으로 연결된다.
NVRAM(4130B)에는 레이드 스토리지 시스템(4000)을 동작시키데 필요한 RAID 제어 소프트웨어(4100-1) 및 시스템 데이터가 저장된다.
NVRAM(4130B)에는 가비지 컬렉션 동작 과정에서 일시적으로 패리티(parity) 정보에 의해 보호받지 못하는 데이터를 저장하는 캐시 영역이 할당될 수 있다. 그리고, NVRAM(4130B)에는 레이드 스토리지 시스템(4000)에서 이용되는 매핑 테이블 정보가 저장될 수도 있다. 매핑 테이블 정보에는 논리적 어드레스(logical address)를 물리적 어드레스(physical)로 변환하는 어드레스 매핑 테이블 및 스트라이프 그룹핑에 대한 정보를 나타내는 스트라이프 매핑 테이블이 포함될 수 있다. 스트라이프 그룹핑에 대한 정보는 각각의 스트라이프를 구성하는 메모리 블록들을 나타내는 정보가 포함될 수 있다. 스트라이프 매핑 테이블에는 스트라이프들 각각에 대한 유효한 페이지 비율 정보가 포함될 수도 있다.
프로세서(4110B)는 NVRAM(4130B)에 저장된 프로그램 코드 및 데이터들을 이용하여 레이드 스토리지 시스템(4000)의 동작을 전반적으로 제어할 수 있다. 레이드 스토리지 시스템(4000)이 초기화될 때 프로세서(4110B)는 메모리 장치(4200)로부터 레이드 스토리지 시스템(4000)에서 수행되는 동작들을 제어하는데 필요한 프로그램 코드 및 데이터들을 읽어내어 NVRAM(4130B)에 로딩시킨다.
프로세서(4110B)는 NVRAM(4130B)에 저장된 프로그램 코드 및 데이터를 이용하여 호스트로부터 수신되는 커맨드에 상응하는 제어 동작을 수행할 수 있다. 세부적으로, 호스트로부터 수신되는 라이트 커맨드 또는 리드 커맨드를 수행할 수 있다. 또한, 호스트로부터 수신되는 커맨드에 기초하여 가비지 컬렉션 동작에 따른 페이지 카피 동작을 수행하도록 레이드 스토리지 시스템(4000)을 제어할 수 있다.
프로세서(4110B)는 NVRAM(4130B)에 RAID 제어 소프트웨어(4100-1)를 구동시켜 스트라이프에 포함된 메모리 블록들 간의 유효한 페이지 비율의 불균형 상태를 완화시키기 위한 스트라이프 재구성 처리를 수행한다. 예로서, 위에서 설명한 바와 같은 Memory block sharing 기법, Stripe size shrinking 기법, Stripe cross-merging without garbage collection 기법, Stripecross-merging with garbage collection 기법을 이용하여 스트라이프 재구성 처리를 수행할 수 있다. 또한, 프로세서(4110B)는 도 36 내지 도 48의 흐름도에 도시된 바와 같은 스트라이프 재구성 방법 및 가비지 컬렉션 동작 방법을 수행할 수 있다.
도 34는 도 31에 도시된 레이드 스토리지 시스템(4000)에서의 스트라이프 구성에 대한 일 예를 보여준다.
도 34는 프로세서(4110A 또는 4110B)에 의하여 채널1(CH1) ~ 채널4(CH4)에 포함되는 각 플래시 메모리 칩들의 메모리 블록으로써 스트라이프를 구성하는 예를 보여준다. 즉, 채널1(CH1) ~ 채널4(CH4)의 각각의 채널에 포함된 플래시 메모리 칩들의 메모리 블록들로 하나의 스트라이프를 구성한다.
도 35는 도 31에 도시된 레이드 스토리지 시스템(4000)에서의 스트라이프 구성에 대한 다른 예를 보여준다.
도 35는 프로세서(4110A 또는 4110B)에 의하여 웨이1(WAY1) ~ 웨이4(WAY4)에 포함되는 각 플래시 메모리 칩들의 메모리 블록으로써 스트라이프를 구성하는 예를 보여준다. 즉, 웨이1 ~ 웨이4의 각각의 웨이에 포함된 플래시 메모리 칩들의 메모리 블록들로 하나의 스트라이프를 구성한다.
다음으로, 도 1 내지 도 4, 도 26 또는 도 31에 도시된 본 발명의 실시 예들을 포함하는 다양한 방식의 레이드 스토리지 시스템에서 수행되는 스트라이프 재구성 방법 및 가비지 컬렉션 동작 방법에 대하여 도 36 내지 도 48의 흐름도를 참조하여 설명하기로 한다.
도 36은 본 발명의 기술적 사상에 따른 레이드 스토리지 시스템에서의 스트라이프 재구성 방법의 흐름도를 예시적으로 보여준다.
우선, 레이드 스토리지 시스템은 스트라이프 매핑 테이블에 등록된 스트라이프들 중에서 단일의 스트라이프에 포함된 메모리 블록들간의 유효한 페이지 비율의 불균형 상태가 초기 설정된 임계 기준을 초과하는 타깃 스트라이프를 선택하는 동작을 수행한다(S110). 예로서, 스트라이프에 포함된 N(N은 1 이상의 정수)개 이상의 메모리 블록들의 유효한 페이지 비율이 초기 설정된 제1임계값(TH1)보다 낮고, 스트라이프에 포함된 나머지 메모리 블록들의 유효한 페이지 비율이 초기 설정된 제2임계값(TH2, 여기에서 TH2 > TH1)보다 높은 스트라이프를 타깃 스트라이프로 선정할 수 있다. 만일, 위와 같은 방식으로 선정된 타깃 스트라이프가 복수개 존재하는 경우에, N 값이 큰 순서 또는 제1임계값보다 낮은 유효한 페이지 비율이 낮은 순서 또는 제2임계값보다 높은 유효한 페이지 비율이 높은 순서 중의 적어도 하나를 적용하여 단일의 타깃 스트라이프를 선정할 수 있다.
우선, 레이드 스토리지 시스템은 타깃 스트라이프에 포함된 메모리 블록들간의 유효한페이지 비율의 불균형이 완화되도록 타깃 스트라이프에 포함된메모리 블록들에 대한 스트라이프를 재구성하는 동작을 수행한다(S120). 예로서, 위에서 설명한 바와 같은 Memory block sharing 기법, Stripe size shrinking 기법, Stripecross-merging without garbage collection 기법, Stripe cross-merging with garbage collection 기법을 이용하여 스트라이프 재구성 처리를 수행할 수 있다.
우선, Memory block sharing 기법을 이용하여 스트라이프 재구성 처리를 수행하는 실시 예들을 도 37 내지 도 40에 도시하였다.
도 37은 도 36에 도시된 스트라이프 재구성하는 동작 수행 단계에 대한 세부 흐름도의 일 예(S120A)를 보여준다.
레이드 스토리지 시스템은 타깃 스트라이프에 포함된 메모리 블록들 중에서유효한 페이지 비율이 낮은 순위에 기초하여 유효한 페이지비율이 낮은 적어도 하나의타깃 메모리 블록을 대체하기 위하여다른 스트라이프에 포함된 메모리블록들 중에서 유효한 페이지비율이 높은 순위에 기초하여 상위 순위에 랭크된 적어도하나의 메모리 블록을 선택하는 동작을 수행한다(S121A). 예로서, 도 16a와 같이 형성된 스트라이프들 중에서 인덱스 #4의 메모리 블록들로 구성된 타깃 스트라이프에서 유효한 페이지 비율이 상대적으로 낮은 타깃 메모리 블록인 인덱스#4의 SSD3 및 SSD4의 메모리 블록들을 대체하기 위하여 인덱스 #4의 SSD3 및 SSD4의 메모리 블록들보다 유효한 페이지 비율이 높은 다른 스트라이프에 포함된 인덱스 #5의 SSD3 및 SSD4의 메모리 블록들을 선택할수 있다.
다음으로, 레이드 스토리지 시스템은 타깃 스트라이프에 포함된 적어도 하나의 타깃 메모리 블록을 다른 스트라이프에서 선택된 상위 순위에랭크된 적어도 하나의 메모리블록으로 대체한 새로운 스트라이프를 생성하는 동작을 수행한다(S122A). 예로서, 도 16b와 같이 타깃 스트라이프에서 유효한 페이지 비율이상대적으로 낮은 인덱스 #4의 SSD3 및 SSD4의 메모리 블록들을 다른 스트라이프에 포함된유효한 페이지 비율이 상대적으로 높은 인덱스 #5의 SSD3 및 SSD4의 메모리 블록들로 대체하는 새로운스트라이프를 생성할 수 있다
다음으로, 레이드 스토리지 시스템은 새로운스트라이프에 대한 패리티 정보를새로운 스트라이프에 포함된메모리 블록에 라이트하는 동작을수행한다(S123A). 예로서, 도 16b와 같이 새로운 스트라이프에 대한 패리티 정보를 새로운 스트라이프에 포함된 SSDN의 메모리 블록 #6에 라이트하는 동작을 수행할 수 있다.
도 38은 도 36에 도시된 스트라이프 재구성하는 동작 수행 단계에 대한 세부 흐름도의 다른 예(S120A')를 보여준다.
레이드 스토리지 시스템은 도 37에 도시된 오퍼레이션 S123A을 수행하고 나서, 타깃 스트라이프에서 대체되는 타깃 메모리블록에 포함된 유효한 페이지들을 비휘발성 캐시 메모리에 카피하는 동작을 수행한다(S124A'). 예로서, 비휘발성 캐시 메모리는 도 1 내지 4에 도시된레이드 스토리지 시스템의 NVRAM(1200 또는 103)이 될 수 있다. 다른 예로서. 비휘발성 캐시 메모리는 도 26 및 도 31에 도시된 NVRAM 캐시 영역(3300-1A, 4100-2)을 이용할 수도 있다. 예로서, 도 16a 및 도 16b와 같이 대체되는 인덱스 #4의 SSD3 및 SSD4의 메모리 블록들 각각에 포함된 유효한페이지들을 NVRAM(1200)의 어펀 캐시 영역(1200-1)에 카피할 수 있다.
다음으로, 레이드 스토리지 시스템은 타깃 스트라이프에 대한 패리티 정보가저장된 메모리 블록을 소거하는 동작을 수행한다(S125A'). 예로서, 도 16a 및 도 16b와 같이 타깃 스트라이프에 대한 패리티 정보가 저장된 SSDN의 메모리 블록 #4를 소거할 수 있다.
도 39는 도 36에 도시된 스트라이프 재구성하는 동작 수행 단계에 대한 세부 흐름도의 또 다른 예(S120A")를 보여준다.
레이드 스토리지 시스템은 도 37에 도시된 오퍼레이션 S123A을 수행하고 나서, 타깃 스트라이프에서 대체되는 타깃 메모리블록에 포함된 유효한 페이지들을 어펀 스트라이프를 구성하는 메모리 블록 및 비휘발성 캐시 메모리에 카피하는 동작을수행한다(S124A"). 예로서, 비휘발성 캐시 메모리는 도 1 내지 4에 도시된 레이드 스토리지 시스템의 NVRAM(1200 또는 103)이 될 수 있다. 다른 예로서. 비휘발성 캐시 메모리는 도 26 및 도 31에 도시된 NVRAM 캐시 영역(3300-1A, 4100-2)을 이용할 수도 있다. 예로서, 도 16a 및 도 16b와 같이 대체되는 인덱스 #4의 SSD3 및 SSD4의 메모리 블록들 각각에 포함된 유효한페이지들을 NVRAM(1200)의 어펀 캐시 영역(1200-1) 및 어펀 스트라이프를 구성하는 인덱스 #M의 SSD3 및 SSD4의 메모리 블록들에 카피할 수 있다. 여기에서, 어펀 스트라이프는 가비지컬렉션 수행 시에 유효한페이지들을 카피하도록 지정된스트라이프를 의미한다.
다음으로, 레이드 스토리지 시스템은 타깃 스트라이프에서 대체되는 타깃 메모리블록 및 타깃 스트라이프에 대한 패리티 정보가 저장된 메모리블록을 각각 소거하는 동작을수행한다(S125A"). 예로서, 도 16a 및 도 16b와 같이 타깃 스트라이프에서 대체되는 SSD3의 메모리 블록 #4와 SSD4의 메모리블록 #4, 및 타깃 스트라이프에 대한 패리티 정보가 저장된 SSDN의 메모리 블록 #4를 소거할 수 있다.
도 40은 도 36에 도시된 스트라이프 재구성하는 동작 수행 단계에 대한 세부 흐름도의 또 다른 예를 보여준다.
레이드 스토리지 시스템은 도 37에 도시된 오퍼레이션 S123A을 수행하고 나서, 스트라이프 매핑 테이블 업데이트 동작을 수행한다(S126A). 세부적으로, 새로운스트라이프에 대한 정보를 스트라이프 매핑 테이블에 추가하고, 스트라이프 매핑 테이블에서 타깃 스트라이프에 대한 정보를 삭제한다.
다음으로, Stripe size shrinking 기법을 이용하여 스트라이프 재구성 처리를 수행하는 실시 예들을 도 41 및 도 42에 도시하였다.
도 41은 도 36에 도시된 스트라이프 재구성하는 동작 수행 단계에 대한 세부 흐름도의 또 다른 예(S120B)를 보여준다.
레이드 스토리지 시스템은 불균형 스트라이프로 선정된 타깃 스트라이프에 포함된 메모리 블록들중에서 유효한 페이지 비율이낮은 순위에 기초하여 유효한 페이지비율이 낮은 적어도 하나의타깃 메모리 블록을 타깃 스트라이프에서 배제하는 새로운 스트라이프를 생성하는 동작을 수행한다(S121B). 예로서, 도 17a 및 도 17b와 같이 인덱스 #4의 메모리 블록들로 구성된 타깃 스트라이프에서 SSD3의 메모리 블록 #4와 SSD4의 메모리 블록 #4가 SSD1의 메모리 블록 #4 및 SSD2의 메모리 블록 #4에 비하여 상대적으로 유효한 페이지 비율이 낮다. 이에 따라서, SSD3의 메모리 블록 #4와 SSD4의 메모리 블록 #4를 타깃 메모리 블록으로 선택하고, 선택된 SSD3의 메모리 블록 #4와 SSD4의 메모리 블록 #4를 타깃 스트라이프에서 배제하는 새로운 스트라이프를 생성한다.
다음으로, 레이드 스토리지 시스템은 새로운스트라이프에 대한 패리티 정보를연산하고, 연산된 패리티 정보를새로운 스트라이프에 포함된메모리 블록에 라이트하는 동작을수행한다(S122B). 예로서, 도 17a 및 도 17b와 같이 SSD1의 메모리 블록 #4와 SSD2의 메모리 블록 #4를 포함하는 새로운 스트라이프에 대한 패리티 정보를 연산하고, 연산된 새로운 패리티 정보를 SSDN의 메모리 블록 #6에 라이트하는 동작을 수행한다.
다음으로, 레이드 스토리지 시스템은 스트라이프 매핑 테이블 업데이트 동작을 수행한다(S125B). 세부적으로, 새로운 스트라이프에 대한 정보를 스트라이프 매핑 테이블에 추가하고, 스트라이프 매핑 테이블에서 타깃 스트라이프에 대한 정보를 삭제한다.
도 42는 도 36에 도시된 스트라이프 재구성하는 동작 수행 단계에 대한 세부 흐름도의 또 다른 예(S120B')를 보여준다.
레이드 스토리지 시스템은 오퍼레이션 S121B 및 S122B를 수행하고 나서, 타깃 스트라이프에서 배제되는 타깃 메모리 블록에 포함된 유효한 페이지들을 어펀 스트라이프를 구성하는 메모리 블록 및 비휘발성 캐시 메모리에 카피하는 동작을수행한다(S123B). 오퍼레이션 S121B 및 S122B는 도 41에서 설명하였으므로, 중복적인 설명은 피하기로 한다. 예로서, 도 17a 및 도 17b와 같이 타깃 스트라이프에서 배제되는 SSD3의 메모리 블록 #4와 SSD4의 메모리 블록 #4에 각각 포함된 유효한 페이지들을 NVRAM(1200)의 어펀 캐시 영역(1200-1) 및 어펀 스트라이프를 구성하는 인덱스 #M의 SSD3 및 SSD4 각각에 카피하는 동작을 수행한다.
다음으로, 레이드 스토리지 시스템은 타깃 스트라이프에서 배제되는 타깃 메모리블록 및 타깃 스트라이프에 대한 패리티 정보가 저장된 메모리블록을 각각 소거하는 동작을수행한다(S124B). 예로서, 도 17a 및 도 17b와 같이 타깃 스트라이프에서 배제되는 인덱스 #4의 SSD3 및 SSD4의 메모리 블록들 및 타깃 스트라이프에 대한 패리티 정보가저장된 SSDN의 메모리 블록 #4를 소거하는 동작을 수행한다.
다음으로, 레이드 스토리지 시스템은 스트라이프 매핑 테이블 업데이트 동작을 수행한다(S125B). 세부적으로, 새로운 스트라이프에 대한 정보를 스트라이프 매핑 테이블에 추가하고, 스트라이프 매핑 테이블에서 타깃 스트라이프에 대한 정보를 삭제한다.
다음으로, Stripe cross-merging without garbage collection 기법을 이용하여 스트라이프 재구성 처리를 수행하는 실시 예들을 도 43 및 도 44에 도시하였다.
도 43은 도 36에 도시된 스트라이프 재구성하는 동작 수행 단계에 대한 세부 흐름도의 또 다른 예(S120C)를 보여준다.
레이드 스토리지 시스템은 불균형 스트라이프로 선정된 타깃 스트라이프에 포함된 메모리 블록들중에서 유효한 페이지 비율이상대적으로 낮은 메모리 블록이겹치지 않는 다른 타깃 스트라이프를 검색하는 동작을 수행한다(S121C). 예로서, 도 18a와 같이 인덱스 #4의 메모리 블록들로 구성된 스트라이프를 제1의 타깃 스트라이프로 선정한다. 그리고, 제1의 불균형 스트라이프에 포함된 메모리블록들 중에서 유효한 페이지비율이 상대적으로 낮은 메모리 블록이 겹치지 않는 불균형 스트라이프를 제2의 타깃 스트라이프로 선정한다. 예로서, 도 18a와 같이 인덱스 #5의 메모리 블록들로 구성된 스트라이프를 제2의 타깃 스트라이프로 선정할 수 있다
다음으로, 레이드 스토리지 시스템은 제1,2의 타깃 스트라이프들을 구성하는 메모리 블록을맞바꾸어 유효한 페이지 비율이 높은 메모리 블록들로 구성되는 하나의 새로운 스트라이프 및 유효한 페이지 비율이 낮은 메모리블록들로 구성되는 다른 하나의새로운 스트라이프를 생성하도록 제1,2의 타깃 스트라이프들에 대한 메모리 블록의 구성을 변경하는 동작을 수행한다(S122C). 예로서도 18b와 같이, 제1,2의 타깃 스트라이프에서 SSD3 및 SSD4의 메모리블록을 맞바꾸어 2개의 새로운 스트라이프를 생성할수 있다. 즉, 유효한 페이지비율이 높은 SSD1의 메모리 블록 #4, SSD2의 메모리 블록#4, SSD3의 메모리 블록 #5, SSD4의 메모리블록 #5를 포함하는 새로운 스트라이프와 유효한 페이지 비율이 낮은 SSD1의 메모리 블록 #5, SSD2의 메모리블록 #5, SSD3의 메모리 블록 #4, SSD4의 메모리 블록 #4를 포함하는 다른 하나의 새로운 스트라이프를 생성할수 있다.
도 44는 도 36에 도시된 스트라이프 재구성하는 동작 수행 단계에 대한 세부 흐름도의 또 다른 예(120C')를 보여준다.
레이드 스토리지 시스템은 유효한 페이지 비율이 상대적으로 낮은 메모리 블록이 겹치지 않는 2개의 타깃 스트라이프를 검색하는 동작을 수행한다(S121C'). 예로서, 도 18a와 같이 유효한 페이지 비율이 상대적으로 낮은 메모리 블록이 겹치지 않는 2개의 불균형 스트라이프를 2개의 타깃 스트라이프를 선정한다.
다음으로, 레이드 스토리지 시스템은 2개의 타깃 스트라이프들을 구성하는 메모리블록을 맞바꾸어 유효한 페이지비율이 높은 메모리 블록들로 구성되는 하나의 새로운 스트라이프 및 유효한 페이지 비율이낮은 메모리 블록들로 구성되는 다른 하나의 새로운 스트라이프를 생성하는 동작을 수행한다(S122C'). 예로서, 도 18a 및 도 18b와 같이 유효한 페이지 비율이높은 SSD1의 메모리 블록 #4, SSD2의 메모리 블록 #4, SSD3의 메모리 블록#5, SSD4의 메모리 블록 #5를 포함하는 새로운 스트라이프와 유효한페이지 비율이 낮은 SSD1의 메모리 블록 #5, SSD2의 메모리 블록 #5, SSD3의 메모리 블록 #4, SSD4의 메모리 블록 #4를 포함하는 다른 하나의 새로운 스트라이프를 생성할수 있다.
다음으로, 레이드 스토리지 시스템은 2개의 새로운 스트라이프들 각각에 대한 패리티 정보를연산하고, 연산된 각각의 패리티정보를 2개의 새로운 스트라이프들 각각에 포함된 메모리 블록에라이트하는 동작을 수행한다(S123C'). 예로서, 도 18b와 같이 2개의 새로운 스트라이프들 각각에대한 패리티 정보를 SSDN의 메모리블록 #6 및 #7에 라이트한다.
다음으로, 레이드 스토리지 시스템은 2개의 타깃 스트라이프들 각각에 대한 패리티 정보가저장된 메모리 블록들을 소거하는 동작을 수행한다(S124C'). 예로서, 도 18b와 같이 2개의 타깃 스트라이프들 각각에대한 패리티 정보가 저장된 SSDN의 메모리 블록 #4와 #5를 각각 소거한다.
다음으로, 레이드 스토리지 시스템은 스트라이프 매핑 테이블 업데이트 동작을 수행한다(S125C'). 세부적으로, 2개의 새로운 스트라이프에 대한 정보를 스트라이프 매핑 테이블에 추가하고, 스트라이프 매핑 테이블에서 2개의 타깃 스트라이프에 대한 정보를 삭제한다.
다음으로, Stripe cross-merging with garbage collection 기법을 이용하여 스트라이프 재구성 처리를 수행하는 실시 예들을 도 45 및 도 46에 도시하였다.
도 45는 도 36에 도시된 스트라이프 재구성하는 동작 수행 단계에 대한 세부 흐름도의 또 다른 예(S120D)를 보여준다.
레이드 스토리지 시스템은 유효한 페이지 비율이 상대적으로 높은 메모리 블록이 겹치지 않는 2개의 타깃 스트라이프를 검색하는 동작을 수행한다(S121D). 예로서, 도 19a와 같이 유효한 페이지 비율이 상대적으로 낮은 메모리 블록이 겹치지 않는 2개의 불균형 스트라이프를 2개의 타깃 스트라이프를 선정한다.
다음으로, 레이드 스토리지 시스템은 2개의 타깃 스트라이프들에 포함된 메모리 블록을맞바꾸어 유효한 페이지 비율이높은 메모리 블록들로 구성되는 하나의새로운 스트라이프를 생성하는 동작을 수행한다(S122D). 예로서, 도 19a 및 도 19b와 같이 2개의 불균형 스트라이프로 선정된타깃 스트라이프들을 구성하는 메모리블록들을 맞바꾸어 유효한 페이지비율이 높은 SSD1의 메모리블록 #4, SSD2의 메모리 블록 #4, SSD3의 메모리 블록 #5, SSD4의 메모리 블록 #5를 포함하는 새로운 스트라이프를 생성한다.
다음으로, 레이드 스토리지 시스템은 2개의 타깃 스트라이프들에 포함된 메모리 블록들중에서 새로운 스트라이프에 포함되지 않는 메모리 블록들에 포함된 유효한 페이지들을 비휘발성 캐시 메모리에 카피하는 동작을수행한다(S123D). 예로서, 도 19b와 같이 2개의 타깃 스트라이프들에 포함된 메모리 블록들중에서 새로운 스트라이프에 포함되지 않는 SSD1의 메모리 블록#5, SSD2의 메모리 블록 #5, SSD3의 메모리블록 #4, SSD4의 메모리 블록 #4 에 각각 포함된 유효한 페이지들을 NVRAM(1200)의 어펀 캐시 영역(1200-1)에 카피하는 동작을 수행한다.
도 46은 도 36에 도시된 스트라이프 재구성하는 동작 수행 단계에 대한 세부 흐름도의 또 다른 예(S120D')를 보여준다.
레이드 스토리지 시스템은 도 45에 도시된 오퍼레이션 S123D를 수행하고 나서, 2개의 타깃 스트라이프들에 포함된 메모리 블록들중에서 새로운 스트라이프에 포함되지 않는 메모리 블록들에 포함된유효한 페이지들을 어펀 스트라이프를 구성하는 메모리 블록에카피하는 동작을 수행한다(S124D). 예로서, 도 19b와 같이 2개의 타깃 스트라이프들에 포함된메모리 블록들 중에서 새로운스트라이프에 포함되지 않는 SSD1의 메모리 블록 #5, SSD2의 메모리 블록#5, SSD3의 메모리 블록 #4, SSD4의 메모리블록 #4 에 각각 포함된 유효한페이지들을 어펀 스트라이프를 구성하는 인덱스 #M의 SSD1 내지 SSD4 각각에카피하는 동작을 수행한다.
다음으로, 레이드 스토리지 시스템은 2개의 타깃 스트라이프들에 포함된 메모리 블록들중에서 새로운 스트라이프에 포함되지 않는 메모리 블록들 및 2개의 타깃 스트라이프들 각각에대한 패리티 정보가 저장된 메모리블록들을 소거하는 동작을 수행한다(S125D). 예로서, 도 19b와 같이 2개의 타깃 스트라이프들에 포함된메모리 블록들 중에서 새로운스트라이프에 포함되지 않는 SSD1의 메모리 블록 #5, SSD2의 메모리 블록#5, SSD3의 메모리 블록 #4, SSD4의 메모리블록 #4와, 2개의 타깃 스트라이프들 각각에 대한 패리티 정보가저장된 SSDN의 메모리블록 #4 및 #5를 각각 소거한다.
다음으로, 레이드 스토리지 시스템은 스트라이프 매핑 테이블 업데이트 동작을 수행한다(S126D). 세부적으로, 하나의 새로운 스트라이프에 대한 정보를 스트라이프 매핑 테이블에 추가하고, 스트라이프 매핑 테이블에서 2개의 타깃 스트라이프에 대한 정보를 삭제한다.
도 47은 본 발명의 기술적 사상에 따른 레이드 스토리지 시스템에서의 가비지 컬렉션 동작 방법의 흐름도의 일 예를 보여준다.
레이드 스토리지 시스템은 스트라이프 매핑 테이블에 등록된 스트라이프들 중에서 단일의스트라이프에 포함된 메모리 블록들간의 유효한 페이지 비율의 불균형상태가 초기 설정된 임계 기준을 초과하는 타깃 스트라이프를 선택하는 동작을 수행한다(S210). 오퍼레이션 S210은 도 36에서 설명한오퍼레이션 S110과 실질적으로 동일함으로, 중복적인 설명은 피하기로 한다.
다음으로, 레이드 스토리지 시스템은 타깃 스트라이프에 포함된 메모리 블록들간의 유효한 페이지 비율의 불균형이 완화되도록 타깃 스트라이프에 포함된메모리 블록들에 대한 스트라이프를 재구성하는 동작을 수행한다(S220). 오퍼레이션 S220은 도 36에서 설명한오퍼레이션 S120과 실질적으로 동일함으로, 중복적인 설명은 피하기로 한다.
다음으로, 레이드 스토리지 시스템은 타깃 스트라이프에 포함된 메모리 블록들중에서 스트라이프를 재구성하는 과정에서 스트라이프 구성으로부터 배제되는 적어도 하나의 메모리블록에 대한 가비지 컬렉션을 수행하는 동작을 수행한다(S230). 예로서, Memory block sharing 기법, Stripe size shrinking 기법, Stripe cross-merging without garbage collection 기법, Stripecross-merging with garbage collection 기법을 이용하여 스트라이프 재구성 처리하는 과정에서 타깃 스트라이프에 포함된 메모리 블록들 중에서 새로운 스트라이프 구성으로부터 배제되는 메모리 블록들에 대한 가비지 컬렉션을 수행한다. 즉, 스트라이프 재구성 처리하는 과정에서 타깃 스트라이프에 포함된 메모리 블록들 중에서 새로운 스트라이프 구성으로부터 배제되는 메모리 블록들을 프리 블록(free block)으로 전환시키기 위하여 가비지 컬렉션을 수행한다.
도 48은 도 47에 도시된 가비지 컬렉션을 수행하는 오퍼레이션(S230)에 대한 세부 흐름도를 예시적으로 보여준다.
레이드 스토리지 시스템은 스트라이프 구성으로부터 배제되는 적어도 하나의메모리 블록에 포함된 유효한페이지들을 어펀 스트라이프를 구성하는 메모리 블록 및 비휘발성 캐시 메모리에 각각 카피하는 동작을 수행한다(S231). 예로서, 비휘발성 캐시 메모리는 도 1 내지 4에 도시된 레이드 스토리지 시스템의 NVRAM(1200 또는 103)이 될 수 있다. 다른 예로서. 비휘발성 캐시 메모리는 도 26 및 도 31에 도시된 NVRAM 캐시 영역(3300-1A, 4100-2)을 이용할 수도 있다. 여기에서, 어펀 스트라이프는 가비지컬렉션 수행 시에 유효한페이지들을 카피하도록 지정된스트라이프를 의미한다.
다음으로, 레이드 스토리지 시스템은 스트라이프 구성으로부터 배제되는 적어도 하나의메모리 블록 및 타깃 스트라이프에 대한 패리티 정보가저장된 메모리 블록을 각각 소거하는 동작을 수행한다(S232). 이와 같은 소거 동작을 마치면 해당 메모리 블록들은 프리 블록(free block)이 된다.
한편, 상기에서 설명된 본 발명에 적용되는 레이드 스토리지 시스템은 다양한 형태들의 패키지를 이용하여 실장 될 수 있다. 예를 들면, 본 발명에 따른 메모리 시스템은PoP(Package on Package), Ball grid arrays(BGAs), Chip scale packages(CSPs), Plastic Leaded Chip Carrier(PLCC), Plastic Dual In-Line Package(PDIP), Die in Waffle Pack, Die in Wafer Form, Chip On Board(COB), Ceramic Dual In-Line Package(CERDIP), Plastic MetricQuad Flat Pack(MQFP), Thin Quad Flatpack(TQFP), Small Outline(SOIC), Shrink Small Outline Package(SSOP), Thin Small Outline(TSOP), Thin Quad Flatpack(TQFP), System In Package(SIP), Multi Chip Package(MCP), Wafer-level Fabricated Package(WFP), Wafer-Level Processed Stack Package(WSP), 등과 같은 패키지들을 이용하여 실장될 수 있다.
이상에서와 같이 도면과 명세서에서 최적 실시예가 개시되었다. 여기서 특정한 용어들이었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
1000A, 1000B, 2000A, 2000B, 3000, 40000: 레이드 스토리지 시스템
1100A, 1100B, 3100: 레이드 컨트롤러 1200, 103: NVRAM
1300-1 ~ 1300-n, 200-1 ~ 200-n, 3300-1 ~ 3300-n: 스토리 디바이스
1400, 106, 3400: 버스 1500, 102, 212, 3200: RAM
100A, 100B: 호스트 101A, 101B, 211: 프로세서
104: HBA 105: I/O 서브 시스템
210, 4100: 메모리 컨트롤러220, 4200: 메모리 장치
213: 호스트 인터페이스 241: 메모리 인터페이스
11: 메모리 셀 어레이 12: 제어 로직
13: 전압 생성부 14: 로우 디코더
15: 페이지 버퍼

Claims (20)

  1. 로그 구조의 레이드 기법이 적용된 스토리지 시스템에서 생성된 스트라이프들 중에서 단일의 스트라이프에 포함된 메모리 블록들간의 유효한 페이지 비율의 불균형 상태가 초기 설정된 임계 기준을 초과하는지 확인하는 단계;
    상기 불균형 상태가 상기 초기 설정된 임계 기준을 초과하는 타깃 스트라이프를 선택하는 단계; 및
    상기 타깃 스트라이프에 포함된 메모리 블록들간의 유효한 페이지 비율의 불균형 상태가 완화되도록 상기 타깃 스트라이프에 포함된 메모리 블록들에 대한 스트라이프를 재구성하는 단계를 포함하는 레이드 스토리지 시스템에서의 스트라이프 재구성 방법.
  2. 청구항 1에 있어서, 상기 타깃 스트라이프를 선택하는 단계는 하나의 스트라이프에 포함된 N(N은 1 이상의 정수)개 이상의 메모리 블록들의 유효한 페이지 비율이 제1임계값보다 낮고, 나머지 메모리 블록들의 유효한 페이지 비율이 제2임계값보다 높은 스트라이프를 타깃 스트라이프로 선택하는 단계를 포함하고, 상기 제1임계값은 상기 제2임계값보다 작게 설정되는 레이드 스토리지 시스템에서의 스트라이프 재구성 방법.
  3. 청구항 1에 있어서, 상기 스트라이프를 재구성하는 단계는 상기 타깃 스트라이프에 포함된 메모리 블록들 중에서 유효한 페이지 비율이 낮은 순위에 기초하여 유효한 페이지 비율이 낮은 적어도 하나의 타깃 메모리 블록을 다른 스트라이프에 포함된 메모리 블록들 중에서 상기 타깃 메모리 블록의 유효한 페이지 비율보다 높은 메모리 블록으로 대체하도록 상기 타깃 스트라이프에 대한 메모리 블록들의 구성을 변경하는 단계를 포함하는 레이드 스토리지 시스템에서의 스트라이프 재구성 방법.
  4. 청구항 3에 있어서, 상기 스트라이프를 재구성하는 단계는
    상기 적어도 하나의 타깃 메모리 블록을 대체하기 위하여 다른 스트라이프에 포함된 메모리 블록들 중에서 유효한 페이지 비율이 높은 순위에 기초하여 상위 순위의 적어도 하나의 메모리 블록을 선택하는 단계
    상기 적어도 하나의 타깃 메모리 블록을 상기 다른 스트라이프에서 선택된 상위 순위의 적어도 하나의 메모리 블록으로 대체하는 새로운 스트라이프를 생성하는 단계 및
    상기 새로운 스트라이프에 대한 패리티 정보를 상기 새로운 스트라이프에 포함된 메모리 블록에 라이트하는 단계를 포함하는 레이드 스토리지 시스템에서의 스트라이프 재구성 방법.
  5. 청구항 4에 있어서, 상기 새로운 스트라이프에 대한 패리티 정보는 상기 타깃 스트라이프에 대한 패리티 정보에 상기 대체되는 메모리 블록에 저장되는 데이터 및 상기 대체할 메모리 블록에 저장되는 데이터를 배타적 논리합 연산하여 산출하는 단계를 포함하는 레이드 스토리지 시스템에서의 스트라이프 재구성 방법.
  6. 청구항 4에 있어서, 상기 스트라이프를 재구성하는 단계는
    상기 타깃 스트라이프에서 대체되는 타깃 메모리 블록에 포함된 유효한 페이지들을 비휘발성 캐시 메모리에 카피하는 단계 및
    상기 타깃 스트라이프에 대한 패리티 정보가 저장된 메모리 블록을 소거하는 단계를 더 포함하는 레이드 스토리지 시스템에서의 스트라이프 재구성 방법.
  7. 청구항 1에 있어서, 상기 스트라이프를 재구성하는 단계는 상기 타깃 스트라이프에 포함된 메모리 블록들 중에서 유효한 페이지 비율이 낮은 순위에 기초하여 유효한 페이지 비율이 낮은 적어도 하나의 타깃 메모리 블록을 상기 타깃 스트라이프에서 배제하도록 상기 타깃 스트라이프에 대한 메모리 블록들의 구성을 변경하는 단계를 포함하는 레이드 스토리지 시스템에서의 스트라이프 재구성 방법.
  8. 청구항 7에 있어서, 상기 스트라이프를 재구성하는 단계는
    상기 적어도 하나의 타깃 메모리 블록을 상기 타깃 스트라이프에서 배제하는 새로운 스트라이프를 생성하는 단계
    상기 새로운 스트라이프에 대한 패리티 정보를 연산하고, 연산된 패리티 정보를 상기 새로운 스트라이프에 포함된 메모리 블록에 라이트하는 단계 및
    상기 새로운 스트라이프에 대한 정보를 스트라이프 매핑 테이블에 추가하고, 상기 스트라이프 매핑 테이블에서 상기 타깃 스트라이프에 대한 정보를 삭제하는 단계를 포함하는 레이드 스토리지 시스템에서의 스트라이프 재구성 방법.
  9. 청구항 1에 있어서, 상기 스트라이프를 재구성하는 단계는 상기 타깃 스트라이프에 포함된 메모리 블록들 중에서 유효한 페이지 비율이 상대적으로 낮은 메모리 블록이 겹치지 않는 다른 타깃 스트라이프를 검색하는 단계,
    상기 타깃 스트라이프에 포함된 메모리 블록과 상기 다른 타깃 스트라이프에 포함된 메모리 블록을 맞바꾸어 유효한 페이지 비율이 높은 메모리 블록들로 구성되는 하나의 새로운 스트라이프 및 유효한 페이지 비율이 낮은 메모리 블록들로 구성되는 다른 하나의 새로운 스트라이프를 생성하도록 상기 타깃 스트라이프들에 포함된 메모리 블록들의 구성을 변경하는 단계를 포함하는 레이드 스토리지 시스템에서의 스트라이프 재구성 방법.
  10. 청구항 9에 있어서, 상기 스트라이프를 재구성하는 단계는
    상기 타깃 스트라이프 및 상기 다른 타깃 스트라이프를 구성하는 메모리 블록을 맞바꾸어 유효한 페이지 비율이 높은 메모리 블록들로 구성되는 하나의 새로운 스트라이프 및 유효한 페이지 비율이 낮은 메모리 블록들로 구성되는 다른 하나의 새로운 스트라이프를 생성하는 단계
    상기 새로운 스트라이프들 각각에 대한 패리티 정보를 연산하고, 연산된 각각의 패리티 정보를 상기 새로운 스트라이프들 각각에 포함된 메모리 블록에 라이트하는 단계
    상기 타깃 스트라이프들 각각에 대한 패리티 정보가 저장된 메모리 블록들을 소거하는 단계 및
    상기 새로운 스트라이프들에 대한 정보를 스트라이프 매핑 테이블에 추가하고, 상기 스트라이프 매핑 테이블에서 상기 타깃 스트라이프들에 대한 정보를 삭제하는 단계를 포함하는 레이드 스토리지 시스템에서의 스트라이프 재구성 방법.
  11. 청구항 1에 있어서, 상기 스트라이프를 재구성하는 단계는
    상기 타깃 스트라이프에 포함된 메모리 블록들 중에서 유효한 페이지 비율이 상대적으로 높은 메모리 블록이 겹치지 않는 다른 타깃 스트라이프를 찾아내고, 상기 타깃 스트라이프 및 상기 다른 타깃 스트라이프를 구성하는 메모리 블록을 맞바꾸어 유효한 페이지 비율이 높은 메모리 블록들로 구성되는 하나의 새로운 스트라이프를 생성하는 단계 및
    상기 타깃 스트라이프들에 포함된 메모리 블록들 중에서 상기 새로운 스트라이프에 포함되지 않는 메모리 블록들에 포함된 유효한 페이지들을 비휘발성 캐시 메모리에 카피하는 단계를 포함하는 레이드 스토리지 시스템에서의 스트라이프 재구성 방법.
  12. 데이터를 저장하기 위한 메모리 블록들을 구비하는 복수의 스토리지 디바이스들
    스트라이프들의 구성에 관한 정보를 포함하는 스트라이프 매핑 테이블을 저장하는 메인 메모리 및
    로그 구조의 레이드(RAID) 환경에 기초하여 상기 복수의 스토리지 디바이스들을 제어하는 레이드 컨트롤러를 포함하고,
    상기 레이드 컨트롤러는 상기 스트라이프 매핑 테이블에 등록된 스트라이프들 중에서 단일의 스트라이프에 포함된 메모리 블록들간의 유효한 페이지 비율의 불균형 상태가 초기 설정된 임계 기준을 초과하는 타깃 스트라이프를 검색하고, 상기 검색된 타깃 스트라이프에 포함된 메모리 블록들간의 유효한 페이지 비율의 불균형 상태가 완화되도록 상기 타깃 스트라이프에 포함된 메모리 블록들에 대한 스트라이프를 재구성하고, 상기 재구성된 스트라이프에 기초하여 상기 스트라이프 매핑 테이블을 업데이트하는 오퍼레이션을 수행하도록 구성되는 레이드 스토리지 시스템.
  13. 청구항 12에 있어서, 상기 복수의 스토리지 디바이스들은 복수의 솔리드 스테이트 드라이브들을 포함하도록 구성되는 레이드 스토리지 시스템.
  14. 청구항 12에 있어서, 상기 레이드 컨트롤러는 상기 타깃 스트라이프에 포함된 메모리 블록들 중에서 유효한 페이지 비율이 낮은 순위에 기초하여 유효한 페이지 비율이 낮은 적어도 하나의 타깃 메모리 블록을 다른 스트라이프에 포함된 메모리 블록들 중에서 상기 타깃 메모리 블록의 유효한 페이지 비율보다 높은 메모리 블록으로 대체하도록 상기 스트라이프 매핑 테이블에서의 스트라이프 구성을 변경하는 오퍼레이션을 수행하도록 구성되는 레이드 스토리지 시스템.
  15. 청구항 12에 있어서, 상기 레이드 컨트롤러는 상기 타깃 스트라이프에 포함된 메모리 블록들 중에서 유효한 페이지 비율이 상대적으로 낮은 적어도 하나의 메모리 블록을 상기 타깃 스트라이프에서 배제하도록 상기 스트라이프 매핑 테이블에서의 스트라이프 구성을 변경하는 오퍼레이션을 수행하도록 구성되는 레이드 스토리지 시스템.
  16. 청구항 12에 있어서, 상기 레이드 컨트롤러는 상기 타깃 스트라이프에 포함된 메모리 블록들 중에서 유효한 페이지 비율이 상대적으로 높은 메모리 블록이 겹치지 않는 다른 타깃 스트라이프를 찾아내고,
    상기 타깃 스트라이프에 포함된 메모리 블록과 상기 다른 타깃 스트라이프에 포함된 메모리 블록을 맞바꾸어 유효한 페이지 비율이 낮은 메모리 블록들로 구성되는 하나의 새로운 스트라이프 및 유효한 페이지 비율이 높은 메모리 블록들로 구성되는 다른 하나의 새로운 스트라이프를 생성하도록 상기 스트라이프 매핑 테이블에서의 스트라이프 구성을 변경하는 오퍼레이션을 수행하도록 구성되는 레이드 스토리지 시스템.
  17. 청구항 12에 있어서, 상기 레이드 컨트롤러는 상기 타깃 스트라이프에 포함된 메모리 블록들 중에서 유효한 페이지 비율이 상대적으로 높은 메모리 블록이 겹치지 않는 다른 타깃 스트라이프를 찾아내고,
    상기 타깃 스트라이프에 포함된 메모리 블록과 상기 다른 타깃 스트라이프에 포함된 메모리 블록을 맞바꾸어 유효한 페이지 비율이 상대적으로 높은 메모리 블록들로 구성되는 하나의 새로운 스트라이프를 생성하도록 상기 스트라이프 매핑 테이블에서의 스트라이프 구성을 변경하는 오퍼레이션 및
    상기 타깃 스트라이프들에 포함된 메모리 블록들 중에서 상기 새로운 스트라이프에 포함되지 않는 메모리 블록들에 대한 가비지 컬렉션 오퍼레이션(garbage collection operation)을 수행하도록 구성되는 레이드 스토리지 시스템.
  18. 청구항 12에 있어서, 비휘발성 캐시 메모리를 더 포함하고,
    상기 레이드 컨트롤러는 상기 타깃 스트라이프에 포함된 메모리 블록들 중에서 상기 재구성된 스트라이프에 포함되지 않은 적어도 하나의 타깃 메모리 블록에 포함된 유효한 페이지들을 상기 비휘발성 캐시 메모리에 카피하는 오퍼레이션을 수행하도록 구성되는 레이드 스토리지 시스템.
  19. 로그 구조의 레이드 기법이 적용된 스토리지 시스템에서 생성된 스트라이프들 중에서 단일의 스트라이프에 포함된 메모리 블록들간의 유효한 페이지 비율의 불균형 상태가 초기 설정된 임계 기준을 초과하는지 확인하는 단계;
    상기 불균형 상태가 상기 초기 설정된 임계 기준을 초과하는 타깃 스트라이프를 선택하는 단계;
    상기 타깃 스트라이프에 포함된 메모리 블록들간의 유효한 페이지 비율의 불균형 상태가 완화되도록 상기 타깃 스트라이프에 포함된 메모리 블록들에 대한 스트라이프를 재구성하는 단계; 및
    상기 타깃 스트라이프에 포함된 메모리 블록들 중에서 상기 스트라이프를 재구성하는 과정에서 스트라이프 구성으로부터 배제되는 적어도 하나의 메모리 블록에 대한 가비지 컬렉션(garbage collection)을 수행하는 단계를 포함하는 가비지 컬렉션 동작 방법.
  20. 청구항 19에 있어서, 상기 가비지 컬렉션을 수행하는 단계는
    상기 스트라이프 구성으로부터 배제되는 적어도 하나의 메모리 블록에 포함된 유효한 페이지들을 어펀(orphan) 스트라이프를 구성하는 메모리 블록 및 비휘발성 캐시 메모리에 각각 카피하는 단계 및
    상기 스트라이프 구성으로부터 배제되는 적어도 하나의 메모리 블록 및 상기 타깃 스트라이프에 대한 패리티 정보가 저장된 메모리 블록을 각각 소거하는 단계를 포함하고,
    상기 어펀 스트라이프는 가비지 컬렉션 수행 시에 유효한 페이지들을 카피하도록 지정된 스트라이프를 포함하는 가비지 컬렉션 동작 방법.
KR1020140192551A 2014-12-29 2014-12-29 레이드 스토리지 시스템에서의 스트라이프 재구성 방법 및 이를 적용한 가비지 컬렉션 동작 방법 및 레이드 스토리지 시스템 KR102368071B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020140192551A KR102368071B1 (ko) 2014-12-29 2014-12-29 레이드 스토리지 시스템에서의 스트라이프 재구성 방법 및 이를 적용한 가비지 컬렉션 동작 방법 및 레이드 스토리지 시스템
US14/968,472 US9817717B2 (en) 2014-12-29 2015-12-14 Stripe reconstituting method performed in storage system, method of performing garbage collection by using the stripe reconstituting method, and storage system performing the stripe reconstituting method
CN201510994195.0A CN105739915B (zh) 2014-12-29 2015-12-25 存储系统中执行的条带重建方法和存储系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140192551A KR102368071B1 (ko) 2014-12-29 2014-12-29 레이드 스토리지 시스템에서의 스트라이프 재구성 방법 및 이를 적용한 가비지 컬렉션 동작 방법 및 레이드 스토리지 시스템

Publications (2)

Publication Number Publication Date
KR20160080863A KR20160080863A (ko) 2016-07-08
KR102368071B1 true KR102368071B1 (ko) 2022-02-25

Family

ID=56164288

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140192551A KR102368071B1 (ko) 2014-12-29 2014-12-29 레이드 스토리지 시스템에서의 스트라이프 재구성 방법 및 이를 적용한 가비지 컬렉션 동작 방법 및 레이드 스토리지 시스템

Country Status (3)

Country Link
US (1) US9817717B2 (ko)
KR (1) KR102368071B1 (ko)
CN (1) CN105739915B (ko)

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10191855B2 (en) 2014-07-03 2019-01-29 Avago Technologies International Sales Pte. Limited Caching systems and methods for page reclamation with simulated NVDRAM in host bus adapters
US9747228B2 (en) * 2014-07-03 2017-08-29 Avago Technologies General Ip (Singapore) Pte. Ltd. Caching systems and methods for execution within an NVDRAM environment
KR102467032B1 (ko) * 2015-10-08 2022-11-14 삼성전자주식회사 메모리 스케줄링 방법 및 메모리 시스템의 동작방법
US9804787B2 (en) * 2015-11-03 2017-10-31 Samsung Electronics Co., Ltd. Mitigating GC effect in a raid configuration
KR102527992B1 (ko) * 2016-03-14 2023-05-03 삼성전자주식회사 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템
KR102580123B1 (ko) * 2016-05-03 2023-09-20 삼성전자주식회사 Raid 스토리지 장치 및 그것의 관리 방법
CN107479824B (zh) * 2016-06-08 2020-03-06 宜鼎国际股份有限公司 冗余磁盘阵列系统及其数据储存方法
US20180024751A1 (en) * 2016-07-19 2018-01-25 Western Digital Technologies, Inc. Metadata management on a storage device
US11797212B2 (en) * 2016-07-26 2023-10-24 Pure Storage, Inc. Data migration for zoned drives
US10203903B2 (en) * 2016-07-26 2019-02-12 Pure Storage, Inc. Geometry based, space aware shelf/writegroup evacuation
US10169141B2 (en) * 2016-08-11 2019-01-01 SK Hynix Inc. Modifiable stripe length in flash memory devices
KR20180019419A (ko) * 2016-08-16 2018-02-26 삼성전자주식회사 메모리 컨트롤러, 메모리 시스템 및 그 동작방법
KR102585214B1 (ko) * 2016-09-22 2023-10-05 삼성전자주식회사 가변 소거 유닛 크기를 가지는 스토리지 디바이스 및 이를 포함하는 레이드 스토리지 시스템
KR20180051703A (ko) * 2016-11-07 2018-05-17 삼성전자주식회사 Raid 방식으로 데이터를 저장하는 스토리지 장치
US10459795B2 (en) 2017-01-19 2019-10-29 International Business Machines Corporation RAID systems and methods for improved data recovery performance
CN108255414B (zh) 2017-04-14 2020-04-03 新华三信息技术有限公司 固态硬盘访问方法及装置
US20180357017A1 (en) 2017-06-12 2018-12-13 Pure Storage, Inc. Accessible fast durable storage integrated into a bulk storage device
CN116431072A (zh) 2017-06-12 2023-07-14 净睿存储股份有限公司 集成到大容量存储设备的可访问快速耐久存储
US11592991B2 (en) 2017-09-07 2023-02-28 Pure Storage, Inc. Converting raid data between persistent storage types
US11609718B1 (en) 2017-06-12 2023-03-21 Pure Storage, Inc. Identifying valid data after a storage system recovery
US10552090B2 (en) 2017-09-07 2020-02-04 Pure Storage, Inc. Solid state drives with multiple types of addressable memory
KR102430791B1 (ko) * 2017-07-19 2022-08-10 에스케이하이닉스 주식회사 컨트롤러 및 컨트롤러의 동작방법
CN108009041B (zh) * 2017-12-17 2020-02-14 华中科技大学 一种基于数据关联性感知的闪存阵列校验更新方法
US10621084B2 (en) 2018-03-05 2020-04-14 International Business Machines Corporation Efficient garbage collection in the presence of block dependencies
US11593262B1 (en) * 2018-04-25 2023-02-28 Seagate Technology Llc Garbage collection command scheduling
US11017112B2 (en) * 2018-07-03 2021-05-25 Tyson York Winarski Distributed network for storing a redundant array of independent blockchain blocks
US10678687B2 (en) * 2018-07-11 2020-06-09 SK Hynix Inc. Memory system and operating method thereof
CN110858125B (zh) * 2018-08-24 2021-07-02 华中科技大学 数控系统工业数据采集和存储方法及其系统
US10824556B2 (en) 2018-11-05 2020-11-03 International Business Machines Corporation Adaptive garbage collection (GC) utilization for grid storage systems
CN109814805B (zh) * 2018-12-25 2020-08-25 华为技术有限公司 存储系统中分条重组的方法及分条服务器
US11119913B2 (en) 2020-02-12 2021-09-14 International Business Machines Corporation Selective use of garbage collection during expansion of geometry addressable regions of a redundant array of independent drive (RAID) configuration
US11409459B2 (en) * 2020-04-24 2022-08-09 Western Digital Technologies, Inc. Data parking for SSDs with zones
US11138071B1 (en) * 2020-06-22 2021-10-05 Western Digital Technologies, Inc. On-chip parity buffer management for storage block combining in non-volatile memory
US11449265B2 (en) 2020-10-30 2022-09-20 Seagate Technology Llc Secure erasure of a drive array using drive-defined, trusted computing group bands
CN114063929B (zh) * 2021-11-25 2023-10-20 北京计算机技术及应用研究所 基于双控制器硬盘阵列的局部raid重构系统及方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120151124A1 (en) 2010-12-08 2012-06-14 Sung Hoon Baek Non-Volatile Memory Device, Devices Having the Same, and Method of Operating the Same
US20130227346A1 (en) 2012-02-27 2013-08-29 Yang-Sup Lee Controlling nonvolatile memory device and nonvolatile memory system

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06266510A (ja) 1993-03-12 1994-09-22 Hitachi Ltd ディスクアレイシステムおよびそのためのデータ書き込み方法、障害回復方法
DE69434381T2 (de) 1993-06-04 2006-01-19 Network Appliance, Inc., Sunnyvale Verfahren zur Paritätsdarstellung in einem Raid-Untersystem unter Verwendung eines nichtflüchtigen Speichers
US7047358B2 (en) * 2001-12-26 2006-05-16 Boon Storage Technologies, Inc. High-performance log-structured RAID
US7010645B2 (en) 2002-12-27 2006-03-07 International Business Machines Corporation System and method for sequentially staging received data to a write cache in advance of storing the received data
US7206899B2 (en) 2003-12-29 2007-04-17 Intel Corporation Method, system, and program for managing data transfer and construction
JP4897524B2 (ja) 2007-03-15 2012-03-14 株式会社日立製作所 ストレージシステム及びストレージシステムのライト性能低下防止方法
US8195912B2 (en) * 2007-12-06 2012-06-05 Fusion-io, Inc Apparatus, system, and method for efficient mapping of virtual and physical addresses
JP2009282678A (ja) 2008-05-21 2009-12-03 Hitachi Ltd フラッシュメモリモジュール及びストレージシステム
US8130554B1 (en) 2008-09-29 2012-03-06 Emc Corporation Securely erasing flash-based memory
JP5349897B2 (ja) 2008-10-21 2013-11-20 株式会社日立製作所 ストレージシステム
JP2010134505A (ja) 2008-12-02 2010-06-17 Fujitsu Microelectronics Ltd Raidコントローラ、ストレージ制御装置、およびストレージ制御方法
US9323658B2 (en) 2009-06-02 2016-04-26 Avago Technologies General Ip (Singapore) Pte. Ltd. Multi-mapped flash RAID
US20100325351A1 (en) * 2009-06-12 2010-12-23 Bennett Jon C R Memory system having persistent garbage collection
CN102449607B (zh) 2009-07-22 2015-05-27 株式会社日立制作所 具有多个闪存封装的存储系统
CN101625627B (zh) * 2009-08-05 2012-03-21 成都市华为赛门铁克科技有限公司 写入数据的方法、磁盘冗余阵列的控制器及磁盘冗余阵列
CN102696010B (zh) 2009-09-08 2016-03-23 才智知识产权控股公司(2) 用于将数据高速缓存在固态存储设备上的装置、系统和方法
CN101727299B (zh) * 2010-02-08 2011-06-29 北京同有飞骥科技股份有限公司 连续数据存储中面向raid5的写操作优化设计方法
KR101678868B1 (ko) 2010-02-11 2016-11-23 삼성전자주식회사 플래시 주소 변환 장치 및 그 방법
US8713268B2 (en) 2010-08-05 2014-04-29 Ut-Battelle, Llc Coordinated garbage collection for raid array of solid state disks
KR101445025B1 (ko) 2012-02-09 2014-09-26 서울시립대학교 산학협력단 신뢰성 있는 ssd를 위한 효율적인 raid 기법
KR101925383B1 (ko) 2012-07-23 2018-12-05 삼성전자주식회사 불휘발성 메모리 장치 및 그것의 데이터 관리 방법
US20140189202A1 (en) 2012-12-28 2014-07-03 Hitachi, Ltd. Storage apparatus and storage apparatus control method

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120151124A1 (en) 2010-12-08 2012-06-14 Sung Hoon Baek Non-Volatile Memory Device, Devices Having the Same, and Method of Operating the Same
US20130227346A1 (en) 2012-02-27 2013-08-29 Yang-Sup Lee Controlling nonvolatile memory device and nonvolatile memory system

Also Published As

Publication number Publication date
KR20160080863A (ko) 2016-07-08
US9817717B2 (en) 2017-11-14
CN105739915B (zh) 2020-01-07
US20160188410A1 (en) 2016-06-30
CN105739915A (zh) 2016-07-06

Similar Documents

Publication Publication Date Title
KR102368071B1 (ko) 레이드 스토리지 시스템에서의 스트라이프 재구성 방법 및 이를 적용한 가비지 컬렉션 동작 방법 및 레이드 스토리지 시스템
KR20160075229A (ko) 가비지 컬렉션 동작 방법 및 이를 적용하는 레이드 스토리지 시스템
US11507500B2 (en) Storage system having a host directly manage physical data locations of storage device
CN111164574B (zh) 基于存储设备内部地址的冗余编码条带
CN107797882B (zh) 存储器系统及其操作方法
CN107957961B (zh) 存储设备、存储系统和计算设备
KR20160083762A (ko) 스토리지 시스템에서의 매핑 테이블 관리 방법 및 이를 적용한 스토리지 시스템
US11836354B2 (en) Distribution of logical-to-physical address entries across multiple memory areas
US10795827B2 (en) Adaptive management of intermediate storage
CN111149091B (zh) 基于跨多个装置的协调内部地址方案的冗余编码条带
US10776268B2 (en) Priority addresses for storage cache management
KR20220005111A (ko) 메모리 시스템, 메모리 컨트롤러 및 메모리 시스템의 동작 방법
US10705907B1 (en) Data protection in a heterogeneous random access storage array
CN110570894A (zh) 存储器系统及该存储器系统的操作方法
KR102585214B1 (ko) 가변 소거 유닛 크기를 가지는 스토리지 디바이스 및 이를 포함하는 레이드 스토리지 시스템
KR20200068944A (ko) 메모리 시스템 및 그것의 동작방법
CN111309642A (zh) 一种存储器及其控制方法与存储系统
CN110851382A (zh) 存储控制器及其操作方法和具有存储控制器的存储器系统
CN117636968A (zh) 用于块条写入的混合写入光标
KR20220067070A (ko) 메모리 시스템 및 메모리 시스템의 동작 방법

Legal Events

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