KR20150018690A - 저장장치, 이를 포함하는 컴퓨터 시스템 및 이의 동작 방법 - Google Patents

저장장치, 이를 포함하는 컴퓨터 시스템 및 이의 동작 방법 Download PDF

Info

Publication number
KR20150018690A
KR20150018690A KR20130094403A KR20130094403A KR20150018690A KR 20150018690 A KR20150018690 A KR 20150018690A KR 20130094403 A KR20130094403 A KR 20130094403A KR 20130094403 A KR20130094403 A KR 20130094403A KR 20150018690 A KR20150018690 A KR 20150018690A
Authority
KR
South Korea
Prior art keywords
unit
data
host
capacity
storage device
Prior art date
Application number
KR20130094403A
Other languages
English (en)
Other versions
KR102088193B1 (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 KR1020130094403A priority Critical patent/KR102088193B1/ko
Publication of KR20150018690A publication Critical patent/KR20150018690A/ko
Application granted granted Critical
Publication of KR102088193B1 publication Critical patent/KR102088193B1/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
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0626Reducing size or complexity of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data

Abstract

본 발명의 실시예에 따르면, 복수의 유닛을 포함하고, 상기 각 유닛별로 어드레싱 모드 및 데이터 처리 정책을 달리 설정하는 저장장치의 동작 방법에 있어서, 호스트로부터 기입 데이터 및 유닛 선택 신호를 수신하는 단계, 상기 데이터를 상기 유닛 선택 신호에 상응하는 선택 유닛에 저장할 수 있는지 여부를 판단하는 단계, 및 상기 데이터를 상기 선택 유닛에 저장할 수 있다고 판단하면, 상기 선택 유닛의 어드레싱 모드 및 상기 선택 유닛의 데이터 처리 정책에 따라 상기 데이터를 변환하여 상기 선택 유닛에 저장하는 단계를 포함하는 저장장치의 동작 방법이 제공된다.

Description

저장장치, 이를 포함하는 컴퓨터 시스템 및 이의 동작 방법{STORAGE DEVICE, COMPUTER SYSTEM COMPRISING THE SAME, AND OPERATING METHOD THEREOF}
본 발명은 저장장치, 이를 포함하는 컴퓨터 시스템 및 이의 동작 방법에 관한 것이다.
컴퓨터 시스템은 호스트, 메인 메모리 및 보조기억장치를 포함할 수 있다. 보조기억장치(이하에서 저장장치라 칭함)는 메인 메모리의 용량 부족을 보충하기 위해 사용하는 외부 메모리 장치이다.
저장장치의 분할 시, 파티션으로 분할할 경우 동적인 변경이 어려운 문제점이 있다. 예를 들면, 용량이 16GB인 저장장치를 각각 15GB 및 1GB 파티션으로 분할한 후, 1GB 파티션의 용량을 2GB로 확장해야 할 경우, 파일 시스템을 새로 만들어야 하므로 파티션의 데이터를 백업한 후 삭제해야 하는 불편함이 있다.
본 발명이 이루고자 하는 기술적인 과제는 저장유닛의 용량을 동적으로 조절하고, 저장유닛의 주소공간과 유효저장용량을 독립적으로 운용할 수 있는 저장장치, 이를 포함하는 컴퓨터 시스템 및 이의 동작 방법을 제공하는 것이다.
본 발명의 일 실시예에 따르면, 제1 주소공간과 제1 유효저장용량을 가지는 제1 유닛을 포함하는 비휘발성 메모리, 및 호스트로부터의 호스트 신호에 따라, 상기 제1 유효저장용량을 변경하거나, 제2 주소공간과 제2 유효저장용량을 가지는 제2 유닛을 생성하는 컨트롤러를 포함하며, 상기 제1 유효저장용량과 상기 제1 주소공간은 상호 독립적으로 변경 가능하고, 상기 제2 유효저장용량과 상기 제2 주소공간은 상호 독립적으로 변경 가능한 저장장치가 제공된다.
상기 제1 유닛 및 상기 제2 유닛의 어드레싱 모드는 서로 다를 수 있다.
상기 제1 유닛 및 상기 제2 유닛의 데이터 처리 정책은 서로 다를 수 있다.
상기 호스트 신호는 상기 제2 유닛을 선택하는 유닛 선택 신호 및 상기 제2 유닛의 잔여용량보다 큰 크기를 갖는 기입 데이터를 더 포함하며, 상기 컨트롤러는 상기 제2 유닛의 주소공간을 유지하면서 상기 호스트 신호에 따라 상기 제1 유닛의 유효저장용량을 줄이고, 줄인 용량만큼 상기 제2 유닛의 유효저장용량에 할당할 수 있다.
상기 컨트롤러는 상기 호스트 신호를 설정 관리부 또는 NVM(Non-Volatile Memory) 제어부로 송신하는 수신 신호 분석부, 상기 제1 유닛 및 상기 제2 유닛 각각의 유닛 설정을 저장하고, 상기 호스트 신호에 따라 상기 유닛 설정을 변경하는 설정 관리부, 및 상기 호스트 신호 및 상기 유닛 설정에 따라, 상기 제1 유닛 또는 상기 제2 유닛의 동작을 제어하는 NVM 제어부를 포함할 수 있다.
상기 NVM 제어부는 상기 호스트 신호에 따라, 상기 기입 데이터를 상기 제2 유닛에 기입할 수 있는지 판단하는 판단부, 상기 판단부가 상기 기입 데이터를 상기 제2 유닛에 기입할 수 있다고 판단하면, 상기 기입 데이터를 상기 유닛 설정에 따라 처리하여 출력하는 데이터 처리부, 및 상기 출력된 기입 데이터를 상기 비휘발성 메모리가 인식할 수 있는 신호로 변환하여 출력하는 변환부를 포함할 수 있다.
상기 데이터 처리부는 상기 기입 데이터를 기설정된 단위씩 상기 변환부로 출력하며, 상기 제1 유닛 및 상기 제2 유닛의 상기 기설정된 단위는 서로 다를 수 있다.
상기 판단부는 상기 기입 데이터의 크기가 상기 제2 유닛의 잔여용량보다 큰지 판단하고, 상기 NVM 제어부는 상기 기입 데이터의 크기가 상기 제2 유닛의 잔여용량보다 크면, 상기 기입 데이터의 크기가 상기 잔여용량 이하가 되도록 상기 데이터를 압축(compress) 또는 디듀플리케이션(deduplication)하는 압축부를 더 포함할 수 있다.
상기 컨트롤러는 상기 호스트로부터의 주소공간 변경 신호에 따라 상기 제1 주소공간 또는 상기 제2 주소공간을 변경할 수 있다.
본 발명의 다른 실시예에 따르면, 복수의 유닛을 포함하고, 상기 각 유닛별로 어드레싱 모드 및 데이터 처리 정책을 달리 설정하는 저장장치의 동작 방법에 있어서, 호스트로부터 기입 데이터 및 유닛 선택 신호를 수신하는 단계, 상기 기입 데이터를 상기 유닛 선택 신호에 상응하는 선택 유닛에 기입할 수 있는지 여부를 판단하는 단계, 및 상기 기입 데이터를 상기 선택 유닛에 기입할 수 있다고 판단하면, 상기 선택 유닛의 어드레싱 모드 및 상기 선택 유닛의 데이터 처리 정책에 따라 상기 기입 데이터를 변환하여 상기 선택 유닛에 기입하는 단계를 포함하는 저장장치의 동작 방법이 제공된다.
본 발명의 일 실시예에 따르면, 실제 사용량과 상관없는 가상의 주소공간을 각 저장유닛에 제공함으로써, 각 저장유닛의 용량을 변경하더라도 일관된 주소공간의 사용이 가능하므로, 동적인 용량 변경이 용이한 효과가 있다.
본 발명의 다른 실시예에 따르면, 각 저장유닛별로 저장유닛의 특성에 맞는 어드레싱 모드 또는 데이터 처리 기법을 제공함으로써, 효율적인 저장장치의 사용이 가능한 효과가 있다.
도 1은 본 발명의 일 실시예에 따른 컴퓨터 시스템을 나타내는 블록도이다.
도 2a 및 도 2b는 도 1의 비휘발성 메모리의 실시예들을 나타낸다.
도 3a는 도 1의 메모리 관리 장치가 저장하는 페이지 매핑 테이블을 나타내고, 도 3b는 도 1의 컨트롤러가 저장하는 L2P(Logical address to Physical address) 테이블을 나타낸다.
도 4a는 본 발명의 비교예에 따른 파티션 구조를 나타내고, 도 4b는 본 발명의 실시예에 따른 각 유닛의 주소공간과 유효저장용량을 나타낸다.
도 5는 도 1의 컨트롤러를 보다 자세히 나타내는 블록도이다.
도 6은 도 5의 NVM 제어부의 일 실시예를 나타낸다.
도 7은 각 어드레싱 모드에 따른 데이터 처리부의 데이터 출력 단위를 나타낸 표이다.
도 8은 도 5의 NVM 제어부의 다른 실시예를 나타낸다.
도 9는 도 8의 압축부의 일 실시예를 나타낸다.
도 10a 내지 도 10c는 본 발명의 일 실시예에 따른 유닛 생성 및 변경을 나타낸 도면이다.
도 11은 도 1의 컴퓨터 시스템의 신호 흐름을 나타내는 개념도이다.
도 12a는 도 1의 컴퓨터 시스템의 일반 기입 시의 동작을 나타내고, 도 12b는 도 1의 컴퓨터 시스템의 자동 캐시 기입(autonomous cached write) 시의 동작을 나타낸다.
도 13은 NAND 플래시 메모리의 2-비트 멀티레벨셀(Multi-Level Cell; MLC)의 프로그래밍 단계를 나타낸다.
도 14는 본 발명의 일 실시예에 따른 호스트의 페이지 매핑 테이블을 나타낸다.
도 15는 도 14의 페이지 매핑 테이블에 따른 각 페이지별 유효 여부를 나타낸다.
도 16은 저장장치의 블록 매핑의 일례를 나타낸다.
도 17은 도 16의 블록 매핑 시 호스트가 저장하는 유효 테이블을 나타낸다.
도 18은 본 발명의 일 실시예에 따른 저장장치의 유닛 정보 응답을 나타내는 순서도이다.
도 19는 본 발명의 일 실시예에 따른 저장장치의 지원 어드레싱 모드 응답을 나타내는 순서도이다.
도 20은 본 발명의 일 실시예에 따른 저장장치의 지원 데이터 정책 응답을 나타내는 순서도이다.
도 21은 본 발명의 일 실시예에 따른 저장장치의 유효저장용량 조절을 나타내는 순서도이다.
도 22는 본 발명의 일 실시예에 따른 유닛 추가를 나타내는 순서도이다.
도 23은 본 발명의 일 실시예에 따른 어드레싱 모드 변경을 나타내는 순서도이다.
도 24는 본 발명의 일 실시예에 따른 데이터 처리 정책 설정을 나타내는 순서도이다.
도 25는 본 발명의 일 실시예에 따른 데이터 기입 방법을 나타내는 순서도이다.
본 명세서에 개시되어 있는 본 발명의 개념에 따른 실시 예들에 대해서 특정한 구조적 또는 기능적 설명은 단지 본 발명의 개념에 따른 실시 예들을 설명하기 위한 목적으로 예시된 것으로서, 본 발명의 개념에 따른 실시 예들은 다양한 형태들로 실시될 수 있으며 본 명세서에 설명된 실시 예들에 한정되지 않는다.
본 발명의 개념에 따른 실시 예들은 다양한 변경들을 가할 수 있고 여러 가지 형태들을 가질 수 있으므로 실시 예들을 도면에 예시하고 본 명세서에서 상세하게 설명하고자 한다. 그러나, 이는 본 발명의 개념에 따른 실시 예들을 특정한 개시 형태들에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만, 예컨대 본 발명의 개념에 따른 권리 범위로부터 벗어나지 않은 채, 제1구성 요소는 제2구성 요소로 명명될 수 있고 유사하게 제2구성 요소는 제1구성 요소로도 명명될 수 있다.
어떤 구성 요소가 다른 구성 요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성 요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성 요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성 요소가 다른 구성 요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는 중간에 다른 구성 요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성 요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 명세서에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로서, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 본 명세서에 기재된 특징, 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 본 명세서에 첨부된 도면들을 참조하여 본 발명의 실시 예들을 상세히 설명한다.
도 1은 본 발명의 일 실시예에 따른 컴퓨터 시스템을 나타내는 블록도이다.
도 1을 참조하면, 컴퓨터 시스템(1)은 이동 전화기, 스마트폰, 태블릿 컴퓨터(tablet computer), PDA(personal digital assistant), EDA(enterprise digital assistant), 디지털 스틸 카메라(digital still camera), 디지털 비디오 카메라(digital video camera), PMP(portable multimedia player), PDN(personal navigation device 또는 portable navigation device), 손으로 들고 다닐 수 있는 게임 콘솔(handheld game console), 또는 e-북(e-book)과 같이 손으로 들고 다닐 수 있는 장치(handheld device)로 구현될 수 있다.
다른 실시예에 따라, 컴퓨터 시스템(1)은 PC(personal computer) 또는 데이터 서버로 구현될 수 있다.
컴퓨터 시스템(1)은 호스트(10) 및 저장장치(20)를 포함할 수 있다.
호스트(10)는 중앙 처리 장치(Central Processing Unit; CPU, 110), 메인 메모리(120), 메모리 관리장치(Memory Management Unit; MMU, 130) 및 버스(140)를 포함한다.
프로세서라고도 불릴 수 있는 CPU(110)는 메인 메모리(120)에 저장된 프로그램들 및/또는 데이터를 처리 또는 실행할 수 있다. 예컨대, CPU(110)는 클락 신호 발생기(미도시)로부터 출력된 클락 신호에 응답하여 상기 프로그램들 및/또는 상기 데이터를 처리 또는 실행할 수 있다.
CPU(110)는 멀티-코어 프로세서(multi-core processor)로 구현될 수 있다. 상기 멀티-코어 프로세서는 두 개 또는 그 이상의 독립적인 실질적인 프로세서들('코어들(cores)'이라고 불림)을 갖는 하나의 컴퓨팅 컴포넌트(computing component)이고, 상기 프로세서들 각각은 프로그램 명령들(program instructions)을 읽고 실행할 수 있다. 상기 멀티-코어 프로세서는 다수의 가속기를 동시에 구동할 수 있으므로, 상기 멀티-코어 프로세서를 포함하는 데이터 처리 시스템은 멀티-가속(multi-acceleration)을 수행할 수 있다.
CPU(110)는 어드레스 버스, 제어 버스 및/또는 데이터 버스를 포함하는 버스(140)를 통하여 메인 메모리(120)에 연결될 수 있다.
예를 들어, 메인 메모리(120)는 동적 랜덤 액세스 메모리(Dynamic Random Access Memory, DRAM)를 포함할 수 있다. 다른 예에서, 메인 메모리(120)는 정적 랜덤 액세스 메모리(Static Random Access Memory; SRAM), 플래시 메모리(Flash Memory), 상변화 랜덤 액세스 메모리(Phase change Random Access Memory; PRAM), 강유전체 랜덤 액세스 메모리(Ferroelectric Random Access Memory; FRAM), 저항 랜덤 액세스 메모리(Resistive Random Access Memory; RRAM), 또는 강자성 랜덤 액세스 메모리(Magnetic Random Access Memory; MRAM)를 포함할 수 있다.
CPU(110)는, 새로운 페이지를 메인 메모리(120)에 로드할 때, 메인 메모리(120)에 미사용 영역이 없는 경우 스왑 동작을 수행할 수 있다. 상기 스왑 동작은, 새로운 페이지의 저장 공간을 확보하기 위하여, 메인 메모리(120)에 로드된 페이지들 중 적어도 하나를 스왑 데이터로서 저장장치(20)에 저장하는 동작이다.
MMU(130)는 CPU(110)가 메인 메모리(120) 및 저장장치(20)에 접근하는 것을 관리하는 컴퓨터 하드웨어 부품일 수 있다. MMU(130)는 메모리 주소 변환, 메모리 보호, 캐시 관리 및 버스 중재를 수행할 수 있다. 실시예에 따라, MMU(130)는 뱅크 스위칭을 담당할 수 있다.
실시예에 따라, 저장장치(20)는 SSD(Solid-state Drive), eMMC(embedded Multi Media Card), 또는 UFS(Universal Flash System)로 구현될 수 있다.
저장장치(200)는 컨트롤러(210) 및 비휘발성 메모리(Non-Voletile Memory; NVM, 220)를 포함한다.
컨트롤러(210)는 호스트(10)로부터 호스트 신호(hsig)를 수신하고, 호스트 신호(hsig)에 응답하여 비휘발성 메모리(220)의 동작을 제어할 수 있다.
비휘발성 메모리(220)는 호스트(10)로부터 제공된 데이터를 저장할 수 있다. 비휘발성 메모리(330)는 전원 공급이 차단되더라도 저장된 데이터를 유지할 수 있다. 예를 들어, 비휘발성 메모리(330)는 NAND 플래시 메모리, NOR 플래시 메모리, PRAM, FRAM, RRAM, 또는 MRAM을 포함할 수 있다.
비휘발성 메모리(220)는 복수의 저장유닛, 예컨대 제1 유닛(221-1) 및 제2 유닛(221-2)을 포함할 수 있다.
실시예에 따라, 컨트롤러(210)는 일반(normal) 데이터를 제1 유닛(221-1)에 저장하고, 스왑 데이터를 제2 유닛(221-2)에 저장하도록 제어할 수 있다.
제1 유닛(221-1)은 제1 주소공간과 제1 유효저장용량을 가지고, 제2 유닛(221-2)은 제2 주소공간과 제2 유효저장용량을 가진다. 호스트의 요청에 따라, 제1 또는 제2 유효저장용량이 변경되더라도 제1 및 제2 주소공간은 변경되지 않고 유지될 수 있다. 또한, 호스트의 요청에 따라, 추가 유닛이 생성을 위하여, 기존 유닛의 유효저장용량이 변경되더라도, 기존 유닛의 주소공간은 변경되지 않고 유지될 수 있다. 한편, 호스트의 요청, 예컨대 주소공간 변경 신호에 따라, 컨트롤러(210)는 제1 및 제2 유효저장용량을 유지하면서, 제1 주소공간 또는 제2 주소공간을 변경할 수도 있다. 즉, 주소공간과 유효저장용량은 상호 독립적으로 변경 가능하다. 예컨대, 제1 유효저장용량과 제1 주소공간은 상호 독립적으로 변경 가능하고, 제2 유효저장용량과 제2 주소공간은 상호 독립적으로 변경 가능하다.
종래의 파티션의 경우 동적인 변경이 어렵지만, 본 발명의 실시예에 따르면, 각 유닛의 주소공간과 유효저장용량을 독립적으로 운용함으로써, 유닛의 동적인 생성, 변경 및 삭제 등의 관리가 용이하다. 이에 대해서는 후술하기로 한다.
도 2a 및 도 2b는 도 1의 비휘발성 메모리의 실시예들을 나타낸다.
도 2a를 참조하면, 비휘발성 메모리(220a)는 NAND 플래시 메모리로 구현될 수 있다. 비휘발성 메모리(220a)는 복수의 저장유닛, 예컨대 제1 유닛(221a-1) 및 제2 유닛(221a-2)을 포함할 수 있다.
도 2b를 참조하면, 비휘발성 메모리(220b)는 NAND 플래시 메모리(223) 및 PRAM(225)을 포함할 수 있다.
NAND 플래시 메모리(223)는 적어도 하나의 저장유닛, 예컨대 제1 유닛(221b-1)을 포함할 수 있다. PRAM(225) 또한 적어도 하나의 저장유닛, 예컨대 제2 유닛(221b-2)을 포함할 수 있다.
호스트(10)는 저장장치(20)에 섹터 단위로 기입/독출 명령을 전송한다. 그러나 PRAM(225)의 경우 바이트 단위로 데이터를 처리하므로, 섹터 단위 접근은 불필요한 낭비를 초래할 수 있다.
본 발명의 실시예에 따르면, 각 유닛별로 서로 다른 어드레싱 모드를 제공함으로써, 저장장치를 보다 효율적으로 동작시킬 수 있는 효과가 있다.
도 3a는 도 1의 메모리 관리 장치가 저장하는 페이지 매핑 테이블을 나타내고, 도 3b는 도 1의 컨트롤러가 저장하는 L2P(Logical address to Physical address) 테이블을 나타낸다.
도 1 및 도 3a를 참조하면, 페이지 매핑 테이블은 CPU(110)가 처리하는 가상 어드레스(Virtual Address)를 메인 메모리(120), 예컨대 DRAM의 물리주소(Physical Address; PA) 또는 저장장치(20)로 보내기 위한 논리주소(Logical Block Address; LBA)로 매핑할 수 있다.
예컨대, 페이지 매핑 테이블은 제1 가상 어드레스 그룹(VA0)을 메인 메모리(120)의 물리주소(Physical Address; PA)에 매핑하고, 제1 유닛(221-1)에 상응하는 제2 가상 어드레스 그룹(VA1)을 제1 LBA(LBA1)에 매핑하며, 제2 유닛(221-2)에 상응하는 제3 가상 어드레스 그룹(VA2)을 제2 LBA(LBA2)에 매핑할 수 있다.
도 1 및 도 3b를 참조하면, 컨트롤러(210)는 각 유닛별 L2P 테이블을 저장할 수 있다. L2P 테이블은 호스트(10)로부터 수신한 논리주소(LBA)를 비휘발성 메모리(220)의 물리주소(PA)와 매핑할 수 있다.
설명의 편의를 위해, 제2 유닛(221-2)에 상응하는 제2 LBA(LBA2)는 0부터 7까지의 어드레스라고 가정하고, 몇 가지 용어에 대하여 정의한다.
주소공간(address space)은 각 유닛별 컨트롤러(210)가 관리하는 논리주소(LBA)의 공간을 나타낸다. 예컨대 제2 유닛(221-2)의 주소공간의 크기는 8일 수 있다.
유효저장용량(effective capacity)은 각 유닛별 주소공간 내에서 논리주소에 비휘발성 메모리(220)의 물리주소가 매핑될 수 있는 최대한의 공간을 나타낸다.
잔여용량은 각 유닛의 유효저장용량에서 사용량을 차감한 용량으로서, 각 유닛 내에서 추가로 매핑될 수 있는 용량을 나타낸다.
예컨대 제2 유닛(221-2)에서 3개의 논리주소(1, 3, 5)가 매핑되어 있고, 유효저장용량의 크기가 5로 설정된 경우, 매핑되지 않은 논리주소(0, 2, 4, 6, 7) 중 2개까지 추가로 매핑될 수 있으므로, 잔여용량의 크기는 2이다.
도 4a는 본 발명의 비교예에 따른 파티션 구조를 나타내고, 도 4b는 본 발명의 실시예에 따른 각 유닛의 주소공간과 유효저장용량을 나타낸다.
도 1, 도 3, 도 4a 및 도 4b를 참조하고, 비휘발성 메모리(220)가 용량이 16GB인 NAND 플래시 메모리라고 가정한다.
NAND 플래시 메모리(220)의 분할 시, 파티션으로 분할할 경우 동적인 변경이 어려운 문제점이 있다. 예를 들면, NAND 플래시 메모리(220)를 각각 15GB 및 1GB 파티션으로 분할한 후, 1GB 파티션의 용량을 2GB로 확장해야 할 경우, 파일 시스템을 새로 만들어야 하므로 파티션의 데이터를 백업한 후 삭제해야 하는 불편함이 있다.
본 발명의 실시예에 따르면, 실제 사용량 16GB와 상관없는 가상의 주소공간을 각 저장유닛에 제공한다. 예컨대, NAND 플래시 메모리(220)를 제1 유닛(Unit_0), 제2 유닛(Unit_1) 내지 제n(n은 2 이상의 정수) 유닛(Unit_(n-1))으로 분할할 수 있다. 제1 유닛(Unit_0)은 주소공간(2211)을 8GB, 유효저장용량(2212)을 0.5GB로 설정하고, 제2 유닛(Unit_1)은 주소공간(2213)을 20GB, 유효저장용량(2214)을 12GB로 설정하며, 제n 유닛(Unit_(n-1))은 주소공간(2215)을 16GB, 유효저장용량(2216)을 1GB로 설정할 수 있다.
L2P 테이블이 유효저장용량(effective capacity)보다 큰 주소공간(address space)만큼의 매핑 정보를 포함하도록 함으로써, 각 유닛별 주소공간을 유효저장용량보다 크게 설정할 수 있다. 따라서 각 저장유닛의 용량을 변경하더라도 일관된 주소공간의 사용이 가능하므로, 동적인 용량 변경이 용이한 효과가 있다.
한편, 유효저장용량의 총합을 비휘발성 메모리(220)의 실제 용량보다 작게 설정하고, 남는 용량을 오버프로비저닝(over-provisioning) 영역으로 사용하여 가비지 컬렉션 수행 시기를 늦춤으로써, 저장장치(20)의 성능을 향상시킬 수 있다.
도 5는 도 1의 컨트롤러를 보다 자세히 나타내는 블록도이다.
도 1 및 도 5를 참조하면, 컨트롤러(210)는 수신 신호 분석부(211), 설정 관리부(213) 및 NVM 제어부(215)를 포함할 수 있다.
수신 신호 분석부(211)는 호스트(10)로부터 수신한 호스트 신호(hsig)를 분석한다.
호스트 신호(hsig)는 복수의 유닛(221-1, 221-2) 중 적어도 하나를 선택하는 유닛 선택 신호를 포함할 수 있다. 다른 실시예에 따라, 호스트 신호(hsig)는 신규 유닛 생성 신호를 포함할 수 있다.
호스트 신호(hsig)는 기입/독출 신호 또는 유닛 설정 변경 신호 중 적어도 하나를 포함할 수 있다. 실시예에 따라, 기입/독출 신호는 기입 또는 독출 명령, 기입 데이터, 시작 어드레스 및 상기 명령을 실행할 메모리 단위의 수를 포함할 수 있다.
수신 신호 분석부(211)는 호스트 신호(hsig)가 유닛 설정 변경 신호를 포함하면 호스트 신호(hsig)를 설정 관리부(213)로 송신하고, 호스트 신호(hsig)가 기입/독출 신호를 포함하면 호스트 신호(hsig)를 NVM 제어부(215)로 송신할 수 있다.
설정 관리부(213)는 복수의 유닛(221-1, 221-2) 각각의 유닛 설정을 저장할 수 있다. 실시예에 따라, 유닛 설정은 각 유닛(221-1, 221-2)별 주소공간, 유효저장용량, 어드레싱 모드 및 데이터 처리 정책을 포함할 수 있다.
설정 관리부(213)는 호스트 신호(hsig)에 따라 각 유닛(221-1, 221-2)의 유닛 설정을 변경할 수 있다. 예컨대, 설정 관리부(213)는 호스트 신호(hsig)에 따라, 비휘발성 메모리(220)에 신규 유닛을 생성하거나, 유닛의 설정을 변경하거나, 또는 유닛을 삭제할 수 있다.
일례로, 설정 관리부(213)는 호스트 신호(hsig)에 따라 각 유닛의 주소공간 또는 유효저장용량을 변경할 수 있다.
설정 관리부(213)는 호스트 신호(hsig)의 유닛 선택 신호에 따라, 선택된 유닛(예컨대, 221-1)의 유닛 설정에 관련된 유닛 설정 정보(cfg)를 호스트(10) 또는 NVM 제어부(215)로 출력할 수 있다.
NVM 제어부(215)는 호스트 신호(hsig) 및 유닛 설정 정보(cfg)에 따라, 유닛(221-1)의 동작을 제어할 수 있다.
NVM 제어부(215)는 유닛(221-1)의 유닛 설정 변경이 필요하다고 판단하는 경우, 설정 관리부(213)로 설정 변경 신호(ctl_cfg)를 송신할 수 있다. 예컨대 기입 데이터가 유닛(221-1)의 잔여용량보다 큰 크기를 갖는 경우, NVM 제어부(215)는 유닛(221-1)의 유효저장용량을 변경하는 설정 변경 신호(ctl_cfg)를 설정 관리부(213)로 송신할 수 있다.
도 6은 도 5의 NVM 제어부의 일 실시예를 나타내고, 도 7은 각 어드레싱 모드에 따른 데이터 처리부의 데이터 출력 단위를 나타낸 표이다.
도 5 내지 도 7을 참조하고, 비휘발성 메모리(220)는 NAND 플래시 메모리라고 가정한다. NVM 제어부(215a)는 판단부(310), 데이터 처리부(320) 및 FTL(Flash Translation Layer, 330)을 포함할 수 있다.
이하에서 비휘발성 메모리(220)에 데이터를 기입할 때의 NVM 제어부(215)의 동작을 설명한다.
판단부(310)는 호스트 신호(hsig)를 수신하고, 호스트 신호(hsig) 내의 유닛 선택 신호에 의해 선택된 유닛(이하 선택 유닛이라 칭함)의 잔여용량을 기입할 데이터의 용량과 비교한다.
실시예에 따라, 판단부(310)는 잔여용량이 데이터 용량보다 작은 경우, 호스트(10)에 기입 불가 응답을 할 수 있다.
다른 실시예에 따라, 판단부(310)는 잔여용량이 데이터 용량보다 작은 경우, 설정 관리부(213)를 제어하여 선택 유닛의 유효저장용량을 조절할 수 있다. 예컨대, 선택 유닛 외 다른 유닛의 잔여용량이 충분히 확보되어 있는 경우, 다른 유닛의 유효저장용량을 줄이고 줄인 용량만큼 선택 유닛의 유효저장용량을 증가시킬 수 있다. 따라서 판단부(310)는 선택 유닛의 잔여용량이 데이터 용량 이상이 되도록 조절할 수 있다.
판단부(310)는 호스트 신호(hsig) 내의 어드레스가 유효한지 더 판단할 수 있다. 예컨대, 호스트 신호(hsig)는 시작 어드레스 및 기입할 섹터 수에 관한 정보를 포함할 수 있다. 판단부(310)는 시작 어드레스 및 시작 어드레스에 섹터 수를 더한 어드레스가 유효한지, 즉 주소공간 내에 있는지 판단할 수 있다.
판단부(310)가 잔여용량이 데이터 용량 이상이고, 어드레스가 유효하다고 판단하면, 데이터 처리부(320)는 호스트 신호(hsig) 내의 기입 데이터를 처리할 수 있다.
실시예에 따라, 데이터 처리부(320)는 시퀀셜(sequential)하게 수신되는 기입 데이터를 각 유닛별로 설정된 어드레싱 모드에 따라 기설정된 단위씩 FTL(330)로 출력할 수 있다.
예컨대, 유닛 설정 정보(cfg)는 선택 유닛의 어드레싱 모드에 대한 정보를 포함할 수 있다.
데이터 처리부(320)는 어드레싱 모드가 '디폴트'이면, 단위로 512바이트 단위의 섹터를 사용하여, 데이터를 섹터 단위로 FTL(330)로 출력할 수 있다.
데이터 처리부(320)는 어드레싱 모드가 '빅 섹터'이면, 데이터를 대용량의 섹터 단위로, 예컨대 4KB 또는 8KB의 섹터를 이용하여, FTL(330)로 출력할 수 있다.
데이터 처리부(320)는 어드레싱 모드가 '블록 앤 페이지'이면, 단위로 1개 또는 복수 개의 NAND 페이지를 이용할 수 있다.
데이터 처리부(320)는 어드레싱 모드가 '블록'이면, 단위로 NAND 블록을 이용할 수 있다.
데이터 처리부(320)는 어드레싱 모드가 '바이트'이면, 단위로 바이트를 이용할 수 있다.
상기 어드레싱 모드는 예시일 뿐이며, 본 발명의 실시예가 이에 한정되는 것은 아니다. 예컨대 호스트(10)의 호스트 신호(hsig)에 따라, 설정 관리부(213)는 상기 어드레싱 모드 외 다른 어드레싱 모드를 포함할 수 있다.
FTL(330)은 데이터 처리부(320)로부터 수신한 기입 데이터를 비휘발성 메모리(220)가 인식할 수 있는 신호로 변경하여 비휘발성 메모리(220)로 출력할 수 있다.
실시예에 따라, FTL(330)은 유닛 설정 정보(cfg)에 따라 선택 유닛에 대한 데이터 처리 정책을 실행할 수 있다. 다른 실시예에 따라, 데이터 처리부(320)가 유닛 설정 정보(cfg)에 따라 선택 유닛에 대한 데이터 처리 정책을 실행할 수 있다.
데이터 처리 정책은 데이터 매핑 정보를 저장하는 방법, 캐시 모드 지원 여부, 데이터 백업 수행 여부, 데이터의 기입 속도, 가비지 컬렉션 수행 여부, 파워 오프 후 전원이 다시 공급될 때 데이터 처리 방법 등을 포함할 수 있다.
호스트(10)의 호스트 신호(hsig)에 따라, 설정 관리부(213)는 상기 데이터 처리 정책 외 다른 데이터 처리 정책을 포함할 수 있다.
도 8은 도 5의 NVM 제어부의 다른 실시예를 나타낸다. 도 8에 도시된 NVM 제어부(215b)는 도 6에 도시된 것과 대부분 동일하므로, 이하에서는 차이점을 위주로 설명한다.
도 8의 NVM 제어부(215b)는 압축부(340)를 더 포함할 수 있다. 압축부(340)는 판단부(310)가 잔여용량이 데이터 용량보다 작다고 판단하면, 기입 데이터를 압축할 수 있다. 압축부(340)는 판단부(310)가 잔여용량이 데이터 용량 이상이라고 판단하면, 기입 데이터를 바이패스(bypass)할 수 있다.
실시예에 따라, 압축부(340)는 선택 유닛에 따라 압축 알고리즘을 선택하거나, 압축률을 조절할 수 있다.
다른 실시예에 따라, 압축부(340)는 기입 데이터 중 사용하지 않는 데이터를 커트(cut)하여 기입 데이터를 압축할 수 있다.
또 다른 실시예에 따라, 호스트 신호(hsig)는 압축 불가 커맨드를 포함하며, 압축부(340)는 상기 커맨드에 따라 기입 데이터를 바이패스(bypass)할 수 있다.
도 9는 도 8의 압축부의 일 실시예를 나타낸다.
도 9를 참조하면, 압축부(340)는 디듀플리케이션(De-duplication) 방식을 이용하여 호스트 신호(hsig)에 포함된 기입 데이터(WR_DATA)를 압축할 수 있다.
압축부(340)는 해시부(341), 해시 데이터베이스(343) 및 비교부(345)를 포함할 수 있다.
해시부(341)는 기입 데이터(WR_DATA)를 수신하고, 해시 함수에 따라 기입 데이터(WR_DATA)를 해시하여 해시 값(H_VAL)을 생성한다.
해시 데이터베이스(343)는 패턴 해시 값들(P_VAL)을 기저장할 수 있다. 패턴 해시 값들(P_VAL) 각각은 특정 패턴의 데이터를 해시하여 생성된 값일 수 있다.
예컨대, 상기 패턴은 0이 계속 반복되거나, 1이 계속 반복되거나, 0과 1이 순차적으로 반복되는 패턴, 또는 그 밖의 기설정된 패턴일 수 있다.
비교부(345)는 해시 값(H_VAL)과 패턴 해시 값들(P_VAL)을 비교한다. 해시 값(H_VAL)이 패턴 해시 값들(P_VAL) 중에 있으면, 비교부(345)는 상응하는 패턴을 나타내는 신호를 데이터 처리부(320)로 출력할 수 있다. 데이터 처리부(320)는 상기 신호에 상응하는 데이터를 FTL(330)을 통해 저장장치(220)에 기입할 수 있다.
해시 값(H_VAL)이 패턴 해시 값들(P_VAL) 중에 없으면, 비교부(345)는 기입 데이터(WR_DATA)를 데이터 처리부(320)로 출력할 수 있다.
도 10a 내지 도 10c는 본 발명의 일 실시예에 따른 유닛 생성 및 변경을 나타낸 도면이다.
도 1 및 도 10a를 참조하고, 비휘발성 메모리(220)의 전체 용량이 16GB라고 가정한다. 비휘발성 메모리(220)는 디폴트 상태, 예컨대 공장에서 출하된 상태에서 제1 유닛(Unit_0)만을 포함할 수 있다. 제1 유닛(Unit_0)은 주소공간이 16GB이고, 유효저장용량이 16GB일 수 있다. 그러나, 다른 실시예에 따라 비휘발성 메모리(220)는 디폴트 상태에서 유닛을 포함하지 않거나, 복수의 유닛을 포함할 수 있다.
호스트(10)는 저장장치(20)로 장치 정보 요청을 할 수 있다. 예컨대, 호스트(10)는 저장장치(20)가 파워온될 때 또는 저장장치(20)의 유닛 설정이 변경될 때 장치 정보 요청을 할 수 있다.
저장장치(20)의 설정 관리부(213)는 상기 요청에 응답하여, 유닛의 수, 각 유닛의 주소공간, 유효저장용량, 잔여용량, 어드레싱 모드 및 데이터 처리 정책 중 적어도 하나를 호스트(10)로 출력할 수 있다.
도 1 및 도 10b를 참조하면, 호스트(10)는 스왑 데이터 전용 유닛이 필요하다고 판단할 수 있다. 호스트(10)는 1GB의 스왑 유닛을 추가할 경우 유닛들의 유효저장용량의 합이 비휘발성 메모리(220)의 전체 용량을 초과하는지 판단할 수 있다.
비휘발성 메모리(220)의 전체 용량이 제1 유닛(Unit_0)의 유효저장용량으로 할당되었으므로, 호스트(10)는 새로 유닛을 생성하기 위해서는 제1 유닛(Unit_0)의 유효저장용량을 변경해야 한다고 판단할 수 있다.
호스트(10)는 저장장치(20)로 제1 유닛(Unit_0)의 유효저장용량을 15GB로 변경하라는 유닛 유효용량 변경요청을 할 수 있다.
설정 관리부(213)는 상기 요청에 따라, 변경한 유효저장용량이 저장장치(20)의 전체 용량을 초과하는지 확인하고, 초과하지 않으면 유효저장용량을 15GB로 변환한 후 호스트(10)로 유효용량 변경 응답을 할 수 있다.
도 1 및 도 10c를 참조하면, 호스트(10)는 저장장치(20)로 주소공간이 16GB이고, 유효저장용량이 1GB인 제2 유닛(Unit_1)을 생성하라는 유닛 추가 요청을 할 수 있다.
설정 관리부(213)는 상기 요청에 따라 변경할 경우, 각 유닛의 유효저장용량의 총합이 저장장치(20)의 전체 용량을 초과하는지 확인하고, 초과하지 않으면 제2 유닛(Unit_1)을 생성한 후 호스트(10)로 유닛 생성 응답을 할 수 있다.
실시예에 따라, 호스트(10)는 제1 유닛(Unit_0) 또는 제2 유닛(Unit_1)에 대한 어드레싱 모드 또는 데이터 처리 정책을 변경하도록 저장장치(20)에 요청할 수 있다. 설정 관리부(213)는 상기 요청에 따라 변경이 가능한지 확인하고, 어드레싱 모드 또는 데이터 처리 정책을 변경한 후 호스트(10)로 변경 처리 응답을 할 수 있다.
다른 실시예에 따라, 도 10a에 도시된 것과 같이 저장장치(20)의 제1 유닛(Unit_0)의 유효저장용량이 16GB인 상태에서, 호스트(10)는 저장장치(20)로 주소공간이 16GB이고, 유효저장용량이 1GB인 제2 유닛(Unit_1)을 생성하라는 유닛 추가 요청을 할 수 있다.
설정 관리부(213)는 상기 요청에 따라 변경할 경우, 각 유닛의 유효저장용량의 총합이 저장장치(20)의 전체 용량을 초과한다고 판단할 수 있다. 따라서, 설정 관리부(213)는 저장장치(20)의 유닛(Unit_0) 중 잔여용량이 있는 유닛이 있는지 판단한다.
설정 관리부(213)는 제1 유닛(Unit_0)의 잔여용량이 1GB 이상 있는 경우, 제1 유닛(Unit_0)의 유효저장용량을 1GB 줄이고, 제2 유닛(Unit_1)을 생성할 수 있다.
실시예에 따라, 설정 관리부(213)는 복수의 유닛에 잔여용량이 있는 경우, 기설정된 가중치에 따라 복수의 유닛의 유효저장용량을 줄이거나, 우선순위에 따라 복수의 유닛 중 하나의 유닛의 유효저장용량을 줄인 후 신규 유닛을 생성할 수 있다.
유효저장용량 잔여용량 하드유효용량 대여가능용량
Unit_0 14GB 6GB 10GB 4GB
Unit_1 2GB 0GB 2GB 0GB
표 1은 본 발명의 일 실시예에 따른 유닛 설정을 나타낸다.
표 1을 참조하고, 제1 유닛(Unit_0)은 유효 저장용량 14GB, 실제 사용중인 저장용량 8GB, 잔여용량 6GB이며, 제2 유닛(Unit_1)은 유효 저장용량 2GB, 실제 사용중인 저장용량 2GB, 잔여용량 0GB라고 가정한다.
하드유효용량(Hard Effective Capacity)은 해당 유닛이 어떠한 상황에서도 보장해야 하는 유효 저장용량을 의미한다. 하드유효용량은 유효저장용량 이하의 값을 갖는다.
대여가능용량은 유효저장용량에서 하드유효용량을 차감한 용량 및 잔여용량 중 더 작은 값이다.
제2 유닛(Unit_1)에 데이터를 추가로 기록하고자 하는 경우, 제1 유닛(Unit_0)의 대여가능용량, 즉 4GB를 빌려 쓸 수 있다. 즉, 제1 유닛(Unit_0)의 유효저장용량을 10GB로 감소시키고, 제2 유닛(Unit_1)의 유효저장용량을 6GB로 증가시킬 수 있다.
제1 유닛(Unit_0)의 하드유효용량을 6GB 이하로 설정할 경우, 제1 유닛(Unit_0)의 대여가능용량은 잔여용량과 같아지므로, 제2 유닛(Unit_1)은 6GB를 제1 유닛(Unit_0)으로부터 빌려 쓸 수 있다.
데이터 타입 어드레싱 모드
Unit_0 일반 유저 데이터 섹터
Unit_1 스왑 데이터 블록 앤 페이지
Unit_2 부트 데이터 블록
Unit_3 로그 데이터 바이트
표 2는 본 발명의 다른 실시예에 따른 유닛 설정을 나타낸다.
표 2를 참조하면, 비휘발성 메모리는 4개의 유닛을 포함할 수 있다.
제1 유닛(Unit_0)은 일반 유저 데이터를 저장하고, 어드레싱 모드는 '섹터'로 설정될 수 있다. 제2 유닛(Unit_1)은 스왑 데이터를 저장하고, 어드레싱 모드는 '블록 앤 페이지'로 설정될 수 있다. 제3 유닛(Unit_2)은 부트 데이터를 저장하고, 어드레싱 모드는 '블록'으로 설정될 수 있다. 제4 유닛(Unit_3)은 로그 데이터를 저장하고, 어드레싱 모드는 '바이트'로 설정될 수 있다.
스왑 데이터는 일시적(temporary)인 특성을 갖고, 부트 데이터 또는 OS 라이브러리 데이터는 독출만 가능한 특성이 있다. 데이터 특성에 따라 상응하는 유닛의 데이터 처리 정책을 설정할 수 있다. 실시예에 따라, 데이터 처리 정책은 호스트에 의해 설정될 수 있다.
이하에서 제1 유닛(Unit_0)에 일반 데이터를 저장하고, 제2 유닛(Unit_1)에 스왑 데이터를 저장하는 경우, 각 유닛에 저장하는 데이터의 관리 정책에 대하여 도 11 내지 도 17를 참조하여 설명한다.
도 11은 도 1의 컴퓨터 시스템의 신호 흐름을 나타내는 개념도이다.
도 11을 참조하면, 호스트(10)는 컨트롤러(210)를 통해 비휘발성 메모리(220)로 데이터를 기입할 수 있다.
컨트롤러(210) 내의 FTL(330)은 각 유닛별 L2P 테이블을 저장하는 휘발성 메모리, 예컨대 SRAM을 포함할 수 있다. 데이터 기입 시, L2P 테이블은 업데이트될 수 있다.
제1 유닛(Unit_0)에 일반 데이터 기입 시, FTL(330)은 업데이트되는 L2P 테이블을 주기적으로 비휘발성 메모리(220)에 저장할 수 있다. 따라서 저장장치(20)의 전원이 꺼져도 매핑 정보가 유지된다.
한편, 스왑 데이터는 하나의 파워 사이클 내에서만 유효하다. 파워 사이클은 저장장치(20)의 전원이 켜진 후 꺼질 때까지의 주기를 의미한다. 저장장치(20)의 전원이 꺼질 경우 스왑 데이터는 무의미한 값이 되므로, 저장장치(20)는 스왑 데이터에 대한 L2P 테이블을 유지할 필요가 없다.
따라서 제2 유닛(Unit_1)에 스왑 데이터 기입 시, FTL(330)은 업데이트되는 L2P 테이블을 비휘발성 메모리(220)로 저장하지 않을 수 있다.
실시예에 따라, FTL(330)은 제1 유닛(Unit_0) 및 제2 유닛(Unit_1)에 대해 업데이트되는 L2P 테이블을 주기적으로 비휘발성 메모리(220)로 저장할 수 있다. 한편, FTL(330)은 마지막으로 처리한 적어도 하나의 로그 블록을 비휘발성 메모리(220)에 저장할 수 있다.
저장장치(20)의 전원이 꺼졌다 켜지는 경우, FTL(330)은 제1 유닛(Unit_0)에 대한 L2P 테이블 및 상기 로그 블록을 비휘발성 메모리(220)로부터 수신할 수 있다. FTL(330)이 로그 블록을 수신하는 동작을 스캔(scan)이라고 한다.
수신한 L2P 테이블은 전원이 꺼지기 전 FTL(330)이 비휘발성 메모리(220)에 마지막으로 저장한 L2P 테이블이다. 그러나, 상기 L2P 테이블을 FTL(330)이 비휘발성 메모리(220)에 저장한 후, FTL(330)은 추가로 데이터 기입을 수행할 수 있으므로, 상기 L2P 테이블은 전원이 꺼지기 전 가장 최신의 L2P 테이블이 아닐 수 있다.
FTL(330)은 L2P 테이블을 상기 로그 블록에 따라 업데이트하여 가장 최신의 L2P 테이블을 복원할 수 있다.
FTL(330)은 제2 유닛(Unit_1)에 대하여는 전원이 꺼지기 전의 L2P 테이블이 필요하지 않으므로, 스캔 동작을 수행하지 않을 수 있다. 따라서 저장장치의 오픈(open) 시간이 단축될 수 있다.
도 12a는 도 1의 컴퓨터 시스템의 일반 기입 시의 동작을 나타내고, 도 12b는 도 1의 컴퓨터 시스템의 자동 캐시 기입(autonomous cached write) 시의 동작을 나타낸다.
도 12a를 참조하면, 호스트(10)는 일반 데이터(DATA1)를 컨트롤러(210)로 전송할 수 있다(①).
컨트롤러(210)는 휘발성 메모리(230)를 포함할 수 있다. 다른 실시예에 따라, 휘발성 메모리(230)는 컨트롤러(210) 외부에 위치할 수 있다.
컨트롤러(210)는 일반 데이터(DATA1)를 휘발성 메모리(230)에 저장할 수 있다.
컨트롤러(210)는 일반 데이터(DATA1)를 비휘발성 메모리(220)에 저장하고(②), 이후 호스트(10)로 완료 신호(ACK)를 보낼 수 있다(③).
도 12b를 참조하면, 호스트(10)는 스왑 데이터(DATA2)를 컨트롤러(210)로 전송할 수 있다(①).
컨트롤러(210)는 스왑 데이터(DATA2)를 휘발성 메모리(230)에 저장하고, 호스트(10)로 완료 신호(ACK)를 보낼 수 있다(②).
이후 컨트롤러(210)는 스왑 데이터(DATA2)를 비휘발성 메모리(220)에 저장할 수 있다(③). 따라서, 저장장치(20), 예컨대 eMMC 내 캐시 활성화 여부에 관계없이 캐시 동작이 가능하므로, 저장장치(20)의 기입 속도가 향상될 수 있다.
도 13은 NAND 플래시 메모리의 2-비트 멀티레벨셀(Multi-Level Cell; MLC)의 프로그래밍 단계를 나타낸다.
도 1 및 도 13을 참조하면, 비휘발성 메모리(220)는 복수의 2-비트 MLC를 포함하는 NAND 플래시 메모리일 수 있다.
프로그래밍이 완료된 MLC는 4개의 상태, 즉 소거 상태(E), 제1 프로그램 상태(P1), 제2 프로그램 상태(P2) 및 제3 프로그램 상태(P3) 중 하나를 가질 수 있다. MLC의 문턱 전압(Vth)은 각 상태에 상응하는 전압을 가질 수 있다.
MLC를 프로그래밍할 때, 먼저 LSB(Least Significant Bit)를 프로그래밍하고(①), 이후 MSB(Most Significant Bit)를 프로그래밍할 수 있다(②). MSB 프로그래밍 중 NAND 플래시 메모리(220)의 전원이 꺼졌다 커지면, 프로그래밍되었던 LSB 값을 잃을 수 있다.
NAND 플래시 메모리(220)는 제1 유닛(Unit_0)에 일반 데이터 기입 시 LSB를 프로그래밍한 후 MSB를 프로그래밍하기 전 LSB를 NAND 플래시 메모리(220)의 여분의 공간에 백업할 수 있다.
한편, 스왑 데이터는 전원이 꺼진 후에는 무의미한 데이터가 된다. 따라서 제2 유닛(Unit_1)에 스왑 데이터 기입 시, NAND 플래시 메모리(220)는 LSB를 프로그래밍한 후 LSB 백업을 수행하지 않고 MSB를 프로그래밍할 수 있다. 따라서, 저장장치(20)의 기입 속도가 향상되고, NAND 플래시 메모리(220)의 이레이즈 횟수(erase count)가 감소될 수 있다.
도 14는 본 발명의 일 실시예에 따른 호스트의 페이지 매핑 테이블을 나타내며, 도 15는 도 14의 페이지 매핑 테이블에 따른 각 페이지별 유효 여부를 나타낸다.
도 1, 도 3 및 도 14를 참조하면, 호스트(10)의 MMU(130)는 제1 가상 어드레스 그룹(VA0)을 메인 메모리(120)의 물리주소(Physical Address; PA)에 매핑하고, 제1 유닛(221-1)에 상응하는 제2 가상 어드레스 그룹(VA1)을 제1 LBA(LBA1)에 매핑할 수 있다.
MMU(130)는 제2 유닛(221-2)에 상응하는 제3 가상 어드레스 그룹(VA2)을 제2 LBA(LBA2)가 아닌 NAND 플래시 메모리(220)의 물리주소에 직접 매핑할 수 있다. 이때, 컨트롤러(210)는 제2 유닛(221-2)에 대하여 L2P 테이블을 저장하지 않거나, 보다 적은 양의 L2P 테이블을 저장할 수 있다.
컨트롤러(210)는 NAND 플래시 메모리(220)에 대한 가비지 컬렉션을 수행하지 않을 수 있다. 호스트(10)는 컨트롤러(210) 대신 NAND 플래시 메모리(220)에 대한 가비지 컬렉션을 수행할 수 있다.
예컨대, 제2 유닛(221-2)에 대하여 가상주소 201이 제1 블록의 제2 페이지(0, 1)에 매핑되고, 가상주소 202가 제1 블록의 제4 페이지(0, 3)에 매핑되며, 가상주소 203은 제4 블록의 제2 페이지(3, 2)에 매핑되고, 같은 방법으로 가상주소 206까지 NAND 플래시 메모리(220)의 페이지에 직접 매핑되는 경우를 가정한다.
도 14 및 도 15를 참조하면, 호스트(10)는 페이지 매핑 테이블에 따른 각 페이지별 유효 여부를 나타내는 유효 테이블을 저장할 수 있다.
다른 실시예에 따라, 호스트(10)는 유효 테이블을 별도로 저장하지 않고, 페이지 매핑 테이블에 따라 유효 테이블을 동적으로 구성할 수 있다.
유효 테이블에서, O는 해당 블록 및 페이지가 가상 주소에 매핑되어 있으며, 따라서 해당 블록 및 페이지의 데이터가 유효임을 나타낸다. X는 해당 블록 및 페이지가 가상 주소에 매핑되어 있지 않으며, 따라서 해당 블록 및 페이지의 데이터가 무효임을 나타낸다.
예컨대, 제2 유닛(221-2)의 제1 블록(Block 0)의 제4 페이지(Page 3)는 가상주소 202에 매핑되어 있으므로, 제1 블록(Block 0)의 제4 페이지(Page 3)의 데이터는 유효하다.
제1 블록(Block 0)의 제4 페이지(Page 3)의 데이터가 스왑 인(swap in)되는 경우를 가정하면, 가상주소 202는 메인 메모리(120)의 물리주소로 매핑된다. 따라서 유효 테이블의 제1 블록(Block 0)의 제4 페이지(Page 3)의 값은 X로 바뀐다.
이하에서 유효 테이블을 이용하여 호스트(10)가 가비지 컬렉션을 수행하는 방법을 설명한다.
호스트(10)는 특정한 조건에 따라 가비지 컬렉션을 수행할 수 있다. 가비지 컬렉션 수행 시, 호스트(10)는 각 블록 중 유효 데이터가 가장 적은 블록을 검색한다. 예컨대, 호스트(10)는 제2 블록(Block 1) 및 제3 블록(Block 2)이 가장 유효 데이터를 적게 포함함을 확인하고, 적어도 하나의 블록, 예컨대 제2 블록(Block 1)을 선택할 수 있다.
호스트(10)는 NAND 플래시 메모리(220)의 제2 블록(Block 1)의 제3 페이지(Page 2)를 메인 메모리(120)로 스왑 인하도록 제어한다. 따라서, 제2 블록(Block 1)의 제3 페이지(Page 2)는 메인 메모리(120)의 물리주소로 매핑되므로, 유효 테이블의 제2 블록(Block 1)의 제3 페이지(Page 2)의 값은 X로 바뀐다.
호스트(10)는 제1 블록(Block 1)이 유효한 페이지를 포함하지 않으므로, 저장장치(20)가 제1 블록(Block 1)을 릴리스(release)하고, 할당을 해제(deallocation)하도록 제어할 수 있다.
이후 호스트(10)는 저장장치(20)가 새로운 제1 블록(Block 1)을 할당하도록 제어할 수 있다.
호스트(10) 및 컨트롤러(210)가 스왑 데이터를 저장하는 제2 유닛(221-2)에 대해 도 3과 같은 페이지 매핑 테이블 및 L2P 테이블을 저장하는 경우를 가정한다. 호스트(10)가 저장장치(20)로부터 스왑 데이터를 독출할 때, 저장장치(20)는 독출된 스왑 데이터를 무효화시키지 않을 수 있다.
독출된 스왑 데이터는 무의미한 데이터이다. 그러나, 컨트롤러(210)는 가비지 컬렉션 시 독출된 스왑 데이터를 복사할 수 있다. 따라서 컨트롤러(210)는 불필요한 데이터 복사를 수행하게 된다.
한편, 호스트(10)가 스왑 데이터 독출 시, 저장장치(20)로 스왑 데이터에 대한 폐기(discard) 또는 트림(trim) 명령을 전송할 수 있다. 상기 명령에 따라 저장장치(20)는 독출된 스왑 데이터에 대한 매핑을 해제하여, 상기 스왑 데이터를 무효화(invalidate)시킬 수 있다. 그러나 이 경우 컨트롤러(210)는 변경된 메타 데이터, 예컨대 매핑 테이블을 기입해야 하는 오버헤드를 갖는다.
본 발명의 실시예에 따르면, 스왑 데이터에 대하여 저장장치(20)가 가비지 컬렉션을 수행하지 않고 호스트(10)가 가비지 컬렉션을 수행한다. 따라서, 컨트롤러(210)가 저장하는 L2P 테이블의 양이 축소되며, 컨트롤러(210)는 불필요한 데이터 복사를 수행하지 않을 수 있다. 따라서 저장장치(20)의 동작 속도 및 효율이 개선되는 효과가 있다.
이하에서는 도 16 및 도 17을 참조하여, 저장장치가 블록 매핑을 하고, 호스트의 매핑 테이블이 스왑 데이터를 저장하는 제2 유닛에 대하여 가상주소를 논리주소로 매핑하는 경우, 호스트가 가비지 컬렉션을 수행하는 방법을 설명한다.
도 16은 저장장치의 블록 매핑의 일례를 나타낸다.
도 1 및 도 16을 참조하면, 저장장치(20)는 제2 유닛(221-2)에 대한 1부터 100까지의 논리주소(LBA)를 수신할 수 있다. 제2 유닛(221-2)이 4개의 블록을 포함하고, 각 블록은 25개의 페이지로 구성된다고 가정한다.
컨트롤러(210)는 논리주소 1 내지 25를 제2 유닛(221-2)의 제1 블록의 제1 페이지 내지 제25 페이지에 각각 매핑할 수 있다.
컨트롤러(210)는 논리주소 26 내지 50을 제2 유닛(221-2)의 제2 블록의 제1 페이지 내지 제25 페이지에 각각 매핑할 수 있다.
같은 방법으로 컨트롤러(210)는 논리주소 51 내지 100을 제3 블록 및 제4 블록에 매핑할 수 있다.
도 17은 도 16의 블록 매핑 시 호스트가 저장하는 유효 테이블을 나타낸다.
도 1, 도 16 및 도 17을 참조하면, 호스트(10)의 MMU(130)는 도 3과 같은 페이지 매핑 테이블을 저장할 수 있으며, 제2 유닛(221-2)에 대해 도 17의 유효 테이블을 추가로 저장할 수 있다.
유효 테이블은 제2 유닛(221-2)에 상응하는 제2 LBA(LBA2), 즉 논리주소 1 내지 100 각각의 유효값(Valid)을 저장할 수 있다.
유효값(Valid)은 비휘발성 메모리(220)의 상응하는 물리주소에 데이터가 스왑 아웃될 때 O가 되고, 비휘발성 메모리(220)의 상응하는 물리주소로부터 메인 메모리(120)로 데이터가 스왑 인될 때 X가 될 수 있다.
호스트(10)는 특정한 조건에 따라 가비지 컬렉션을 수행할 수 있다. 가비지 컬렉션 수행 시, 호스트(10)는 각 블록 중 유효값이 가장 적은 블록을 검색한다. 예컨대, 호스트(10)는 제3 블록(Block 3)이 가장 유효값을 적게 포함하고, 제3 블록(Block 3)에서 논리주소 51만 유효값이 O임을 확인할 수 있다.
호스트(10)는 논리주소 51에 상응하는 제3 블록(Block 3)의 제1 페이지를 스왑 인하도록 저장장치(20)를 제어할 수 있다. 따라서, 논리주소 51의 유효값은 X로 변경된다.
호스트(10)는 제3 블록(Block 3)이 유효한 페이지를 포함하지 않으므로, 저장장치(20)가 제3 블록(Block 3)을 릴리스(release)하고, 할당을 해제(deallocation)하도록 제어할 수 있다.
이후 호스트(10)는 저장장치(20)가 새로운 제3 블록(Block 3)을 할당하도록 제어할 수 있다.
한편, 저장장치(20)에 기입된 스왑 데이터는 한 번 독출되면 불필요해지므로, 리드 리텐션(read retention)이 보장되지 않아도 된다. 따라서, 기설정된 횟수, 예컨대 1회 또는 10회의 독출에 대하여만 리드 리텐션이 보장되도록, 스왑 데이터 기입 시 일반 데이터 기입 시보다 프로그래밍 시간(tProg)을 짧게 설정할 수 있다. 따라서 기입 성능이 향상될 수 있다.
스왑 데이터에 대하여는 일반 데이터보다 큰 단위로 매핑 정보를 유지할 수 있다. 예컨대, 스왑 데이터에 대하여는 코스-그레인드(coarse-grained) 매핑을 하고, 일반 데이터에 대하여는 파인-그레인드(fine-grained) 매핑을 할 수 있다. 따라서, FTL에 포함되는 SRAM의 요구량이 감소되고, 기입/독출 성능이 향상될 수 있다.
스왑 데이터 독출 시, 독출된 스왑 데이터는 폐기(discard)하도록 설정할 수 있다. 또한, 저장장치의 파워 온 시, 스왑 데이터를 폐기하도록 설정할 수 있다. 따라서 프로비저닝 공간을 확보할 수 있는 효과가 있다.
도 18은 본 발명의 일 실시예에 따른 저장장치의 유닛 정보 응답을 나타내는 순서도이다.
도 18을 참조하면, 저장장치(20)는 장치 정보 요청을 호스트(10)로부터 수신한다(S11).
저장장치(20)는 상기 요청에 응답하여, 장치 정보에 대한 응답을 호스트(10)로 발신한다(S13). 실시예에 따라, 상기 응답은 각 유닛의 유효저장용량, 잔여용량, 전체 유닛 개수, 각 유닛의 어드레싱 모드를 포함할 수 있다.
도 19는 본 발명의 일 실시예에 따른 저장장치의 지원 어드레싱 모드 응답을 나타내는 순서도이다.
도 19를 참조하면, 저장장치(20)는 지원하는 어드레싱 모드 확인 요청을 호스트(10)로부터 수신한다(S21).
저장장치(20)는 상기 요청에 응답하여, 지원하는 어드레싱 모드에 대한 응답을 호스트(10)로 발신한다(S23). 실시예에 따라, 상기 응답은 섹터, 빅 섹터, 블록, 블록 앤 페이지 또는 바이트일 수 있으며, 그 외의 호스트(10)가 설정한 어드레싱 모드일 수 있다.
도 20은 본 발명의 일 실시예에 따른 저장장치의 지원 데이터 정책 응답을 나타내는 순서도이다.
도 20을 참조하면, 저장장치(20)는 지원하는 데이터 정책 확인 요청을 호스트(10)로부터 수신한다(S31).
저장장치(20)는 상기 요청에 응답하여, 지원하는 데이터 정책에 대한 응답을 호스트(10)로 발신한다(S33). 실시예에 따라, 상기 응답은 비휘발성 매핑 여부, 자동 캐시 모드 지원 여부, 리드 리텐션 강도, 전원 오프 시 데이터 폐기 여부, 저장장치(20)의 가비지 컬렉션 여부를 포함할 수 있다.
도 21은 본 발명의 일 실시예에 따른 저장장치의 유효저장용량 조절을 나타내는 순서도이다.
도 21을 참조하면, 저장장치(20)는 호스트(10)로부터 용량 변경 요청을 수신한다(S41).
저장장치(20)는 상기 요청에 포함된 변경할 유닛 및 변경할 유효저장용량을 확인한다(S42).
저장장치(20)는 상기 변경할 유닛이 존재하는지 확인하고(S43), 유효저장용량 변경 시 유닛의 유효저장용량의 총합이 저장장치의 전체용량 이하인지 확인한다(S44).
변경할 유닛이 존재하고, 유효저장용량 변경 시 유닛의 유효저장용량의 총합이 저장장치의 전체용량 이하이면, 저장장치(20)는 유효저장용량 조절을 수행하고(S45), 유효저장용량 조절에 대한 성공 응답을 호스트(10)로 발신한다(S46).
변경할 유닛이 존재하지 않거나, 유효저장용량 변경 시 유닛의 유효저장용량의 총합이 저장장치의 전체용량보다 크면, 저장장치(20)는 유효저장용량 조절에 대한 실패 응답을 호스트(10)로 발신한다(S47).
도 22는 본 발명의 일 실시예에 따른 유닛 추가를 나타내는 순서도이다.
도 22를 참조하면, 저장장치(20)는 호스트(10)로부터 유닛 추가 요청을 수신한다(S51).
저장장치(20)는 상기 요청에 포함된 유효저장용량을 확인한다(S52).
저장장치(20)는 유닛 추가 시 유닛의 유효저장용량의 총합이 저장장치의 전체용량 이하인지 확인한다(S53).
유닛 추가 시 유닛의 유효저장용량의 총합이 저장장치의 전체용량 이하이면, 저장장치(20)는 유닛 추가를 수행하고(S54), 유닛 추가에 대한 성공 응답을 호스트(10)로 발신한다(S55).
유닛 추가 시 유닛의 유효저장용량의 총합이 저장장치의 전체용량보다 크면, 저장장치(20)는 유닛 추가에 대한 실패 응답을 호스트(10)로 발신한다(S56).
도 23은 본 발명의 일 실시예에 따른 어드레싱 모드 변경을 나타내는 순서도이다.
도 23을 참조하면, 저장장치(20)는 호스트(10)로부터 어드레싱 모드 변경 요청을 수신한다(S61).
저장장치(20)는 상기 요청에 포함된 변경 유닛 및 어드레싱 모드를 확인한다(S62).
저장장치(20)는 변경 유닛이 존재하는지 확인하고(S63), 어드레싱 모드가 지원 가능한 모드인지 확인한다(S64).
저장장치(20)는 변경 유닛이 존재하고, 어드레싱 모드가 지원 가능한 모드이면, 변경 유닛의 어드레싱 모드를 수신한 어드레싱 모드로 변경하고(S65), 어드레싱 모드 변경에 대한 성공 응답을 호스트(10)로 발신한다(S66).
저장장치(20)는 변경 유닛이 존재하지 않거나, 어드레싱 모드가 지원 가능한 모드가 아니면, 어드레싱 모드 변경에 대한 실패 응답을 호스트(10)로 발신한다(S67).
도 24는 본 발명의 일 실시예에 따른 데이터 처리 정책 설정을 나타내는 순서도이다.
도 24를 참조하면, 저장장치(20)는 호스트(10)로부터 데이터 처리 정책 변경 요청을 수신한다(S71).
저장장치(20)는 상기 요청에 포함된 변경 유닛 및 데이터 처리 정책을 확인한다(S72).
저장장치(20)는 변경 유닛이 존재하는지 확인하고(S73), 데이터 처리 정책이 지원 가능한 정책인지 확인한다(S74).
저장장치(20)는 변경 유닛이 존재하고, 데이터 처리 정책이 지원 가능한 정책이면, 변경 유닛에 대하여 데이터 처리 정책 설정을 수행하고(S75), 데이터 처리 정책 설정에 대한 성공 응답을 호스트(10)로 발신한다(S76).
저장장치(20)는 변경 유닛이 존재하지 않거나, 데이터 처리 정책이 지원 가능한 정책이 아니면, 데이터 처리 정책 설정에 대한 실패 응답을 호스트(10)로 발신한다(S77).
도 25는 본 발명의 일 실시예에 따른 데이터 기입 방법을 나타내는 순서도이다.
도 25를 참조하면, 저장장치(20)는 호스트(10)로부터 데이터 및 유닛 선택 신호를 수신한다(S81).
저장장치(20)는 데이터를 유닛 선택 신호에 상응하는 선택 유닛에 저장할 수 있는지 판단한다(S83).
저장장치(20)는 선택 유닛의 어드레싱 모드 및 데이터 처리 정책에 따라 데이터를 변환하여 선택 유닛에 저장한다(S85).
본 발명은 또한 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다.
컴퓨터가 읽을 수 있는 기록매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피 디스크, 광 데이터 저장장치 등이 있으며, 또한 본 발명에 따른 객체 정보 추정 방법을 수행하기 위한 프로그램 코드는 캐리어 웨이브(예를 들어, 인터넷을 통한 전송)의 형태로 전송될 수도 있다.
또한 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다. 그리고 본 발명을 구현하기 위한 기능적인(functional) 프로그램, 코드 및 코드 세그먼트들은 본 발명이 속하는 기술분야의 프로그래머들에 의해 용이하게 추론될 수 있다.
본 발명은 도면에 도시된 일 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
1: 컴퓨터 시스템
10: 호스트
20: 저장장치

Claims (10)

  1. 제1 주소공간과 제1 유효저장용량을 가지는 제1 유닛을 포함하는 비휘발성 메모리; 및
    호스트로부터의 호스트 신호에 따라, 상기 제1 유효저장용량을 변경하거나, 제2 주소공간과 제2 유효저장용량을 가지는 제2 유닛을 생성하는 컨트롤러를 포함하며,
    상기 제1 유효저장용량과 상기 제1 주소공간은 상호 독립적으로 변경 가능하고, 상기 제2 유효저장용량과 상기 제2 주소공간은 상호 독립적으로 변경 가능한 저장장치.
  2. 제1항에 있어서,
    상기 제1 유닛 및 상기 제2 유닛의 어드레싱 모드는
    서로 다른 저장장치.
  3. 제1항에 있어서,
    상기 제1 유닛 및 상기 제2 유닛의 데이터 처리 정책은
    서로 다른 저장장치.
  4. 제1항에 있어서,
    상기 호스트 신호는
    상기 제2 유닛을 선택하는 유닛 선택 신호 및 상기 제2 유닛의 잔여용량보다 큰 크기를 갖는 기입 데이터를 더 포함하며,
    상기 컨트롤러는
    상기 제2 유닛의 주소공간을 유지하면서 상기 호스트 신호에 따라 상기 제1 유닛의 유효저장용량을 줄이고, 줄인 용량만큼 상기 제2 유닛의 유효저장용량에 할당하는 저장장치.
  5. 제1항에 있어서,
    상기 컨트롤러는
    상기 호스트 신호를 설정 관리부 또는 NVM(Non-Volatile Memory) 제어부로 송신하는 수신 신호 분석부;
    상기 제1 유닛 및 상기 제2 유닛 각각의 유닛 설정을 저장하고, 상기 호스트 신호에 따라 상기 유닛 설정을 변경하는 설정 관리부; 및
    상기 호스트 신호 및 상기 유닛 설정에 따라, 상기 제1 유닛 또는 상기 제2 유닛의 동작을 제어하는 NVM 제어부를 포함하는 저장장치.
  6. 제5항에 있어서, 상기 NVM 제어부는
    상기 호스트 신호에 따라, 상기 기입 데이터를 상기 제2 유닛에 기입할 수 있는지 판단하는 판단부;
    상기 판단부가 상기 기입 데이터를 상기 제2 유닛에 기입할 수 있다고 판단하면, 상기 기입 데이터를 상기 유닛 설정에 따라 처리하여 출력하는 데이터 처리부; 및
    상기 출력된 기입 데이터를 상기 비휘발성 메모리가 인식할 수 있는 신호로 변환하여 출력하는 변환부를 포함하는 저장장치.
  7. 제6항에 있어서, 상기 데이터 처리부는
    상기 기입 데이터를 기설정된 단위씩 상기 변환부로 출력하며,
    상기 제1 유닛 및 상기 제2 유닛의 상기 기설정된 단위는 서로 다른 저장장치.
  8. 제6항에 있어서, 상기 판단부는
    상기 기입 데이터의 크기가 상기 제2 유닛의 잔여용량보다 큰지 판단하고,
    상기 NVM 제어부는
    상기 기입 데이터의 크기가 상기 제2 유닛의 잔여용량보다 크면, 상기 기입 데이터의 크기가 상기 잔여용량 이하가 되도록 상기 데이터를 압축(compress) 또는 디듀플리케이션(deduplication)하는 압축부를 더 포함하는 저장장치.
  9. 제1항에 있어서, 상기 컨트롤러는
    상기 호스트로부터의 주소공간 변경 신호에 따라 상기 제1 주소공간 또는 상기 제2 주소공간을 변경하는 저장장치.
  10. 복수의 유닛을 포함하고, 상기 각 유닛별로 어드레싱 모드 및 데이터 처리 정책을 달리 설정하는 저장장치의 동작 방법에 있어서,
    호스트로부터 기입 데이터 및 유닛 선택 신호를 수신하는 단계;
    상기 기입 데이터를 상기 유닛 선택 신호에 상응하는 선택 유닛에 기입할 수 있는지 여부를 판단하는 단계; 및
    상기 기입 데이터를 상기 선택 유닛에 기입할 수 있다고 판단하면, 상기 선택 유닛의 어드레싱 모드 및 상기 선택 유닛의 데이터 처리 정책에 따라 상기 기입 데이터를 변환하여 상기 선택 유닛에 기입하는 단계를 포함하는 저장장치의 동작 방법.
KR1020130094403A 2013-08-08 2013-08-08 저장장치, 이를 포함하는 컴퓨터 시스템 및 이의 동작 방법 KR102088193B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020130094403A KR102088193B1 (ko) 2013-08-08 2013-08-08 저장장치, 이를 포함하는 컴퓨터 시스템 및 이의 동작 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020130094403A KR102088193B1 (ko) 2013-08-08 2013-08-08 저장장치, 이를 포함하는 컴퓨터 시스템 및 이의 동작 방법

Publications (2)

Publication Number Publication Date
KR20150018690A true KR20150018690A (ko) 2015-02-24
KR102088193B1 KR102088193B1 (ko) 2020-03-13

Family

ID=52578102

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130094403A KR102088193B1 (ko) 2013-08-08 2013-08-08 저장장치, 이를 포함하는 컴퓨터 시스템 및 이의 동작 방법

Country Status (1)

Country Link
KR (1) KR102088193B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10649692B2 (en) 2016-07-29 2020-05-12 Samsung Electronics Co., Ltd. Storage device, system including the same and method of operating the same
CN116243850A (zh) * 2021-06-08 2023-06-09 荣耀终端有限公司 一种存储器管理方法及电子设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006338341A (ja) * 2005-06-02 2006-12-14 Hitachi Ltd ストレージシステム及び構成変更方法
KR20100034743A (ko) * 2007-06-08 2010-04-01 쌘디스크 코포레이션 메모리 디바이스에 대한 저장 어드레스 리매핑을 위한 방법과 시스템
KR20100111992A (ko) * 2009-04-08 2010-10-18 삼성전자주식회사 플래시 메모리 저장 장치 및 그것을 포함한 컴퓨팅 시스템
KR20110018157A (ko) * 2009-08-17 2011-02-23 삼성전자주식회사 플래시 메모리 장치의 액세스 방법

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006338341A (ja) * 2005-06-02 2006-12-14 Hitachi Ltd ストレージシステム及び構成変更方法
KR20100034743A (ko) * 2007-06-08 2010-04-01 쌘디스크 코포레이션 메모리 디바이스에 대한 저장 어드레스 리매핑을 위한 방법과 시스템
KR20100111992A (ko) * 2009-04-08 2010-10-18 삼성전자주식회사 플래시 메모리 저장 장치 및 그것을 포함한 컴퓨팅 시스템
KR20110018157A (ko) * 2009-08-17 2011-02-23 삼성전자주식회사 플래시 메모리 장치의 액세스 방법

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10649692B2 (en) 2016-07-29 2020-05-12 Samsung Electronics Co., Ltd. Storage device, system including the same and method of operating the same
CN116243850A (zh) * 2021-06-08 2023-06-09 荣耀终端有限公司 一种存储器管理方法及电子设备

Also Published As

Publication number Publication date
KR102088193B1 (ko) 2020-03-13

Similar Documents

Publication Publication Date Title
KR102088403B1 (ko) 저장장치, 이를 포함하는 컴퓨터 시스템 및 이의 동작 방법
US11847318B2 (en) Memory system for controlling nonvolatile memory
US10871900B2 (en) Memory system and method of controlling memory system
JP6414852B2 (ja) メモリシステムおよび制御方法
JP6524039B2 (ja) メモリシステム及び制御方法
JP6414853B2 (ja) メモリシステムおよび制御方法
EP3121718B1 (en) Memory system and method of controlling nonvolatile memory
US20130073798A1 (en) Flash memory device and data management method
WO2018189858A1 (ja) ストレージシステム
CN107908571B (zh) 一种数据写入方法、闪存装置及存储设备
JP6716757B2 (ja) メモリシステムおよび制御方法
TW201344432A (zh) 記憶體管理方法、記憶體控制器與記憶體儲存裝置
KR102088193B1 (ko) 저장장치, 이를 포함하는 컴퓨터 시스템 및 이의 동작 방법
JP6649452B2 (ja) メモリシステムおよび不揮発性メモリの制御方法
JP6552701B2 (ja) メモリシステムおよび制御方法
JP6721765B2 (ja) メモリシステムおよび制御方法
JP6666405B2 (ja) メモリシステムおよび制御方法
JP5694212B2 (ja) 管理情報生成方法およびメモリシステム
JP6545876B2 (ja) メモリシステム

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