KR20130043445A - 인터페이스 관리 방법 및 이를 이용한 저장 장치에서의 매핑 처리 방법 - Google Patents

인터페이스 관리 방법 및 이를 이용한 저장 장치에서의 매핑 처리 방법 Download PDF

Info

Publication number
KR20130043445A
KR20130043445A KR1020110107578A KR20110107578A KR20130043445A KR 20130043445 A KR20130043445 A KR 20130043445A KR 1020110107578 A KR1020110107578 A KR 1020110107578A KR 20110107578 A KR20110107578 A KR 20110107578A KR 20130043445 A KR20130043445 A KR 20130043445A
Authority
KR
South Korea
Prior art keywords
data
information
group
block
data group
Prior art date
Application number
KR1020110107578A
Other languages
English (en)
Inventor
이재수
황주영
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020110107578A priority Critical patent/KR20130043445A/ko
Priority to US13/655,692 priority patent/US20130103893A1/en
Publication of KR20130043445A publication Critical patent/KR20130043445A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7202Allocation control and policies

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

데이터를 다수의 그룹으로 분류하여 처리하는 인터페이스 관리 방법 및 이를 이용한 매핑 처리 방법에 관하여 개시한다. 인터페이스 관리 방법은 저장 장치에 저장되는 데이터 페이지들의 속성에 따라서 복수의 데이터 그룹으로 분류하는 단계 및, 상기 분류된 데이터 그룹에 대한 설정 정보를 저장 장치로 전송하는 단계를 포함한다.

Description

인터페이스 관리 방법 및 이를 이용한 저장 장치에서의 매핑 처리 방법{Interface management method and method for processing mapping in storage device using the same}
본 발명은 데이터 저장 시스템의 인터페이스 관리 방법에 관한 것으로서, 특히 데이터를 다수의 그룹으로 분류하여 처리하는 인터페이스 관리 방법 및 이를 이용한 매핑 처리 방법에 관한 것이다.
비휘발성 메모리 장치는 전원이 차단되더라도 저장된 정보를 보존할 수 있는 메모리 장치이다. 비휘발성 메모리 장치의 일예로는 플래시 메모리 등이 있다. 플래시 메모리와 같은 비휘발성 메모리 장치는 주소 매핑(mapping) 방식 및 데이터의 사용 패턴에 따라서 성능과 수명이 달라질 수 있다. 이에 따라서, 데이터 저장 시스템은 비휘발성 메모리 장치에 저장되는 데이터의 사용 패턴을 고려하여 매핑을 최적화시키는 기술이 필요하게 되었다.
본 발명의 목적은 호스트 기기에서 데이터 페이지들의 속성에 관련된 정보를 저장 장치로 전송하는 인터페이스 관리 방법을 제공하는데 있다.
본 발명의 다른 목적은 호스트 기기로부터 수신된 데이터 페이지들의 속성에 관련된 정보를 이용하여 논리적 주소를 물리적 주소로 변환시키는 저장 장치에서의 매핑 처리 방법을 제공하는데 있다.
본 발명의 기술적 사상의 일면에 따른 일실시 예에 의한 인터페이스 관리 방법은 저장 장치에 저장되는 데이터 페이지들의 속성에 따라서 복수의 데이터 그룹으로 분류하는 단계 및, 상기 분류된 데이터 그룹에 대한 설정 정보를 저장 장치로 전송하는 단계를 포함한다.
본 발명의 일실시 예에 따르면, 상기 데이터 페이지들을 구성하는 파일의 속성에 따라서 상기 데이터 페이지들을 복수의 데이터 그룹으로 분류할 수 있다.
본 발명의 일실시 예에 따르면, 상기 파일의 속성은 파일의 확장자 정보 또는 파일의 종류에 근거하여 결정할 수 있다.
본 발명의 일실시 예에 따르면, 상기 데이터 페이지들의 업데이트 발생 빈도에 따라서 상기 데이터 페이지들을 복수의 데이터 그룹으로 분류할 수 있다.
본 발명의 일실시 예에 따르면, 상기 데이터 그룹에 대한 설정 정보는 호스트 기기의 파일 시스템에서 저장 장치의 플래시 변환 계층으로 전달될 수 있다.
본 발명의 일실시 예에 따르면, 상기 데이터 그룹에 대한 설정 정보는 초기 정의된 커맨드 코드와 함께 전송되고, 상기 커맨드 코드는 데이터 그룹 설정 커맨드 코드로 정의된 코드이다.
본 발명의 일실시 예에 따르면, 상기 데이터 그룹에 대한 설정 정보는 헤더, 그룹 환경 설정 정보 및 데이터 블록 영역 정보를 포함할 수 있다.
본 발명의 일실시 예에 따르면, 상기 헤더는 커맨드 코드에 의하여 정의되는 그룹의 개수를 나타내는 정보 및 데이터 블록 영역의 개수를 나타내는 정보를 포함할 수 있다.
본 발명의 일실시 예에 따르면, 상기 그룹 환경 설정 정보는 그룹 번호 정보, 매핑 방식에 대한 정보, 페이지 패딩 수행 표시 정보, 휘발성 데이터 영역 표시 정보 또는 해당 그룹에 할당되는 로그 블록의 개수에 대한 정보 중에서 적어도 하나 이상의 정보들을 포함할 수 있다.
본 발명의 일실시 예에 따르면, 상기 해당 그룹에 할당되는 로그 블록의 개수에 대한 정보는 최대 할당 가능한 로그 블록 개수에 대한 데이터 블록의 개수의 비율 정보 및 최소 할당 가능한 로그 블록 개수에 대한 데이터 블록의 개수의 비율 정보를 포함할 수 있다.
본 발명의 일실시 예에 따르면, 상기 데이터 블록 영역 정보는 해당 그룹에 대한 스타트 논리 블록 어드레스 정보, 데이터 블록의 길이 정보 및 그룹 번호 정보를 포함할 수 있다.
본 발명의 기술적 사상의 다른 면에 따른 저장 장치에서의 매핑 처리 방법은 호스트 기기로부터 데이터 그룹 정보와 각 그룹에 대한 주소 변환에 이용되는 파라미터 값들을 수신하는 단계 및, 상기 수신된 데이터 그룹 정보와 각 그룹에 대한 파라미터 값들에 기초하여 저장할 데이터에 대한 논리적 주소를 물리적 주소로 변환시키는 단계를 포함한다.
본 발명의 일실시 예에 따르면, 상기 파라미터 값들은 그룹별 매핑 방식 또는 그룹별 할당 가능한 로그 블록의 개수를 지정하는 값들을 포함할 수 있다.
본 발명의 일실시 예에 따르면, 상기 변환된 물리적 주소에 라이트 커맨드에서 지정하는 논리적 주소의 데이터를 라이트하는 단계를 더 포함할 수 있다.
본 발명에 의하면 호스트 기기에서 데이터 페이지들의 속성에 따라서 분류된 데이터 그룹들에 대한 설정 정보에 기초하여 플래시 변환 계층의 설정 값들을 결정함으로써, 각 데이터 그룹별로 매핑 처리를 최적화시킬 수 있다. 특히, 가비지 컬렉션(garbage collection) 수행 시에 불필요하게 콜드 데이터(cold data)가 복사되는 것을 줄일 수 있다. 이로 인하여, 가비지 컬렉션 비용을 줄일 수 있는 효과가 발생된다.
그리고, 본 발명에 의하면 시이퀀셜한 데이터 페이지들에 대하여 블록 매핑을 사용하도록 데이터 그룹 설정 정보를 정의함으로써, 랜덤하게 사용될 페이지들에게 더 많은 여유 블록들이 할당될 수 있어 가비지 컬렉션 비용을 줄일 수 있는 효과가 발생된다. 또한, 블록 매핑 방식을 적용함으로써 매핑 데이터 사이즈를 줄일 수 있는 효과가 발생된다.
또한, 본 발명에 의하면 호스트 기기의 파일 시스템에서 데이터 그룹별로 오버프로비전, 매핑 알고리즘 등을 제어할 수 있으므로, 분류된 데이터 그룹별로 가비지 컬렉션 빈도나 비용을 용이하게 조절할 수 있는 효과가 발생된다.
도 1은 본 발명의 일실시 예에 따른 데이터 저장 시스템의 구성도이다.
도 2는 도 1에 도시된 호스트 기기의 세부적인 블록 구성도이다
도 3은 본 발명의 일실시 예에 따른 그룹 할당 방식을 설명하기 위한 도면이다.
도 4는 본 발명의 일실시 예에 따른 데이터 그룹 설정 커맨드 스펙의 일예를 보여준다.
도 5는 본 발명의 일실시 예에 따른 데이터의 사용 패턴을 분류하는 방법을 설명하기 위한 개념도이다.
도 6은 본 발명의 일실시 예에 따른 논리적 주소 영역을 복수의 그룹으로 분류한 예 및 그룹별로 지정된 로그 블록들의 예를 보여주는 도면이다.
도 7은 도 1에 도시된 메모리 장치의 정보 저장 영역의 구조를 도시한 것이다.
도 8은 도 1에 도시된 메모리 장치의 세부적인 구성을 도시한 것이다.
도 9는 플래시 메모리의 내부 저장 구조를 보여주는 개념도이다.
도 10은 데이터 저장 시스템의 소프트웨어 구조를 보여주는 도면이다.
도 11a는 페이지 매핑 방식을 설명하기 위한 개념도이다.
도 11b는 블록 매핑 방식을 설명하기 위한 개념도이다.
도 11c는 하이브리드 매핑 방식을 설명하기 위한 개념도이다.
도 11d는 2-블록 연관 매핑 방식을 설명하기 위한 개념도이다.
도 12는 본 발명의 일실시 예에 따른 인터페이스 관리 방법의 흐름도이다.
도 13은 도 12에 도시된 전송 프로세스의 세부 흐름도이다.
도 14는 본 발명의 일실시 예에 따른 저장 장치에서의 매핑 처리 방법의 흐름도이다.
도 15는 도 14에 도시된 주소 변환 실행 프로세스의 세부 흐름도이다.
도 16은 본 발명의 일실시 예에 따른 저장 장치에서의 데이터 라이트 방법의 흐름도이다.
도 17은 본 발명의 실시 예들에 따른 컴퓨터 시스템의 응용 예를 나타내는 블록도이다.
도 18은 본 발명의 실시 예들에 따른 메모리 카드의 응용 예를 나타내는 블록도이다.
도 19는 본 발명의 실시 예들에 따른 데이터 저장 시스템을 포함하는 네트워크 시스템의 응용 예를 나타내는 블록도이다.
이하, 첨부한 도면을 참조하여 본 발명의 실시 예에 대해 상세히 설명한다. 본 발명의 실시 예는 당 업계에서 평균적인 지식을 가진 자에게 본 발명을 보다 완전하게 설명하기 위하여 제공되는 것이다. 본 발명은 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있는 바, 특정 실시 예들을 도면에 예시하고 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 유사한 구성요소에 대해 사용한다. 첨부된 도면에 있어서, 구조물들의 치수는 본 발명의 명확성을 기하기 위하여 실제보다 확대하거나 축소하여 도시한 것이다.
본 출원에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서 상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 갖는다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
도 1은 본 발명의 일실시 예에 따른 데이터 저장 시스템의 구성도이다.
도 1에 도시된 바와 같이, 데이터 저장 시스템(100)은 호스트 기기(110) 및 저장 장치(120)를 포함한다.
호스트 기기(110)의 세부적인 블록 구성을 도 2에 도시하였다.
도 2에 도시된 바와 같이, 호스트 기기(110)는 프로세서(110-1), ROM(Read Only Memory; 110-2), RAM(Random Access Memory; 110-3), 저장 장치 인터페이스(110-4), UI(User Interface; 110-5) 및 버스(110-6)를 포함한다.
버스(110-6)는 호스트 기기(110)의 구성 수단들 간의 데이터를 전송하는 전송로를 의미한다.
ROM(110-2)에는 다양한 애플리케이션(application) 프로그램들이 저장되어 있다. 일 예로서, ATA(Advanced Technology Attachment), SCSI(Small Computer System Interface), eMMC(embedded Multi Media Card), UFS(Unix File System) 등과 같은 스토리지 프로토콜을 지원하는 애플리케이션 프로그램들도 저장되어 있다. 그리고, fdisk 툴(tool)에 대한 소프트웨어도 저장될 수 있다. 또한, 본 발명에서 지원하는 데이터 그룹 커맨드 세트(Data Group Command set)들도 저장되어 있다.
본 발명에서 지원하는 데이터 그룹 커맨드 세트는 ATA, SCSI, eMMC, UFS 등과 같은 스토리지 프로토콜에 적용 가능하도록 정의할 수 있다. 일 예로서, ATA에 적용 가능하도록 확장된 데이터 그룹 커맨드 세트를 다음과 같이 정의할 수 있다.
(1) 그룹 번호
본 발명의 일실시 예에서 그룹 번호는 최대 65536(unsigned 16bit)까지 지원할 수 있다. 이중에서 다음 그룹 번호는 예약되어 사용될 수 있다. 본 발명의 일실시 예에 따른 그룹 번호 할당 예를 도 3에 도시하였다.
도 3을 참조하면, 그룹 번호 0(G_0)은 디폴트(default) 그룹을 나타내며, 초기에 모든 데이터 블록이 가지는 그룹 번호이다. 그룹 번호 1(G_1)은 하나의 데이터 블록이 하나의 그룹을 구성하는 경우에 가지는 그룹 번호이다. 그룹 번호 2(G_2)는 그룹 번호 1과 동일하나, 페이지 패딩(padding)이 사용되는 데이터 블록들이 가지는 그룹 번호이다. 그룹 번호 3~15(G_3 ~ G15)는 예약(reserved) 그룹 번호이다. 그룹 번호 16~65535(G_16 ~ G_65535)는 사용자가 정의할 수 있는 그룹 번호이다.
(2) 커맨드 코드
본 발명의 일실시 예에서 데이터 그룹 커맨드 세트는 ATA에서 기존에 정의된 06h(data set management)를 커맨드 코드로 사용하고, 세부 커맨드를 구분하기 위하여 기능(feature) 코드를 사용할 수 있다. 현재 06h 커맨드 코드를 사용하는 커맨드로는 TRIM(기능 코드 0)이 있다.
(3) 식별 커맨드(identify command)
저장 장치(120)가 특정 커맨드 세트를 제공하는지를 판단하기 위해서 호스트 기기(110)는 식별 커맨드(identify command)를 사용한다. 커맨드 세트가 제공되는지는 식별 커맨드의 수행 결과로서 리턴(return)된 ID 자료 구조를 조사해봄으로써 알 수 있다. 일 예로서, 170번째 워드의 (((short*)data)[169]) bit 1로 데이터 그룹 커맨드 세트를 제공하는지를 표시할 수 있다.
(4) 데이터 그룹 리세트(reset) 커맨드
데이터 그룹의 정의를 모두 초기화하는 커맨드로서, 기능 코드로 10h를 사용할 수 있다. 데이터 그룹 리세트(reset) 커맨드를 통해서 모든 데이터 블록들은 데이터 #0에 할당할 수 있다.
(5) 데이터 그룹 설정 커맨드
데이터 그룹 설정 커맨드를 통해서 데이터 그룹을 정의하고, 각 데이터 페이지 범위별로 데이터 그룹을 할 수 있다. 본 발명의 일실시 예에 따른 데이터 그룹 설정 커맨드의 규격을 정의한 예를 도 4에 도시하였다.
도 4를 참조하면, 기능 코드로는 11h를 사용하고, 섹터 카운트 값은 전송될 데이터의 섹터 개수로 설정한다. 데이터 그룹 설정 커맨드와 함께 호스트 기기(110)에서 저장 장치(120)로 전송되는 데이터는 헤더(header), 그룹 환경 설정 정보(group configuration) 및 데이터 블록 영역 정보(group definition)로 구성할 수 있다.
일 예로서, 헤더는 4바이트로 구성할 수 있다. 첫 번째 2개 바이트는 해당 커맨드에서 정의될 그룹의 개수를 나타내고, 다음 2개 바이트는 정의될 데이터 블록 영역의 개수를 나타낸다.
그룹 환경 설정 정보에 의한 하나의 데이터 그룹의 정의를 8바이트로 구성할 수 있고, 각 바이트의 의미는 다음과 같이 정의할 수 있다.
바이트 0~1은 그룹 번호를 나타낸다. 바이트 2는 매핑 알고리즘을 나타낸다. 일 예로서, 바이트 2의 값이 0이면 블록 매핑(block mapping) 방식을 나타내고, 바이트 2의 값이 1이면 완전 연관 페이지 매핑(fully-associative page mapping) 방식을 나타내고, 바이트 2의 값이 2이면 2-블록 연관 매핑(2-block associative mapping) 방식을 나타내고, 바이트 2의 값이 3이면 4-블록 연관 매핑(4-block associative mapping) 방식을 나타낸다.
바이트 3은 플래그를 나타내고, 0x1은 라이트 가능 영역, 0x2는 휘발성(volatile) 영역, 0x4는 사전 할당(preallocation) 수행을 나타내고, 0x8은 페이지 패딩(padding) 수행을 나타낸다. 페이지 패딩은 블록 매핑 방식이 아닌 경우에는 무시된다.
바이트 4~5는 최대 오버프로비전(max over-provision) 값을 설정하는데 이용된다. 최대 오버프로비전은 최대 할당 가능한 로그 블록 개수의 데이터 블록 개수에 대한 비율을 퍼밀(1/1000)로 나타낸 값으로 설정할 수 있다. 바이트 4~5 값이 0이면 제한이 없다는 것을 의미한다.
바이트 6~7은 최소 오버프로비전(min over-provision) 값을 설정하는데 이용된다. 최소 오버프로비전은 최소 할당 가능한 로그 블록 개수의 데이터 블록 개수에 대한 비율을 퍼밀(1/1000)로 나타낸 값으로 설정할 수 있다. 바이트 6~7 값이 0이면 제한이 없다는 것을 의미한다.
데이터 블록 영역 정보는 데이터 블록 영역 별로 지정된다. 데이터 블록 영역이란 연속된 데이터 블록들을 나타내고, 시작 데이터 섹터 번호와 섹터 개수에 의하여 기술된다. 이 때 데이터 섹터 번호와 섹터 개수는 데이터 블록 당 섹터 개수의 배수이어야 한다.
일 예로서, 데이터 블록 영역 정보는 12바이트로 구성되고, 각 바이트의 의미는 다음과 같다.
바이트 0~5는 시작 데이터 섹터의 번호를 나타내고, 바이트 6~7은 섹터 개수를 나타내고, 바이트 8~9는 할당될 그룹 번호를 나타내고, 바이트 10~11은 예약된 바이트이다.
위에서 제안된 커맨드는 일실시 예이고, 각 프로토콜별로 상황에 따라서 다르게 정의될 수 있다. 또한, 데이터 그룹 설정 커맨드는 여러 차례로 나누어 전송되거나 기존의 설정 값을 변경시키는 것이 가능한 것으로 이해되어야 한다.
다시 도 2를 참조하면, RAM(Random Access Memory; 110-3)에는 데이터 또는 프로그램들이 일시적으로 저장된다.
UI(110-5)는 사용자와 호스트 기기, 컴퓨터 프로그램 등 사이에서 정보를 주고받을 수 있는 물리적 또는 가상적 매개체로서 물리적인 하드웨어와 논리적인 소프트웨어를 포함한다. 즉, UI(110-5)는 사용자가 호스트 기기(110)를 조작할 수 있는 입력 장치와 사용자 입력에 대한 처리 결과를 표시하는 출력 장치를 포함할 수 있다.
프로세서(110-1)는 호스트 기기(110)의 전반적인 동작을 제어한다. 프로세서(110-1)는 ROM(110-2)에 저장된 애플리케이션(application) 또는 툴(tool)을 이용하여 저장 장치(120)에 저장되는 데이터들을 데이터 페이지들의 속성에 따라서 복수의 데이터 그룹으로 분류하고, 분류된 데이터 그룹에 대한 정보를 저장 장치 인터페이스(110-4)를 통하여 저장 장치(120)로 전달하도록 제어한다.
우선, 프로세서(110-1)는 저장 장치(120)에 저장되는 데이터 페이지들의 속성에 따라서 데이터 페이지들을 공통의 속성을 갖는 데이터 그룹으로 그룹핑 처리한다. 일 예로서, 논리적 어드레스가 연속되는 데이터 블록들로 구성된 데이터 블록 영역 단위로 데이터 그룹을 분류할 수 있다.
프로세서(110-1)는 데이터 페이지들을 구성하는 파일의 속성에 따라서 사용 패턴을 분류할 수 있다. 일 예로서, 파일의 속성은 파일의 확장자 정보로 식별할 수 있다. 세부적으로, 파일의 속성에 따라서 랜덤(random) 데이터 그룹, 시이퀀셜(sequential) 데이터 그룹, 휘발성(volatile) 데이터 그룹, 스트리밍(streaming) 데이터 그룹 등으로 분류할 수 있다. 일 예로서, 랜덤 데이터 그룹에는 메타(meta) 데이터가 포함될 수 있고, 시이퀀셜 데이터 그룹에는 실행 파일 데이터가 포함될 수 있고, 휘발성 데이터 그룹에는 웹(web) 페이지 데이터 또는 스왑(swap) 파일 데이터가 포함될 수 있다.
또한, 프로세서(110-1)는 데이터 페이지들의 사용 패턴에 따라서 핫(hot) 데이터 그룹과 콜드(cold) 데이터 그룹으로 분류할 수도 있다. 즉, 데이터 페이지들의 업데이트(update) 발생 빈도에 따라서 핫 데이터 그룹과 콜드 데이터 그룹으로 분류할 수 있다. 그리고, 핫 데이터 그룹과 콜드 데이터 그룹을 각각 업데이트 발생 빈도에 따라서 복수 개의 그룹으로 세분화시킬 수도 있다.
일 예로서, 도 5와 같은 알고리즘을 이용하여 핫 데이터 그룹과 콜드 데이터 그룹들을 분류할 수 있다.
도 5를 참조하면, 바텀 영역1(bottom region 1)이 업데이트 빈도가 가장 낮은 콜드 데이터 그룹이고, 탑 영역N(top region N)이 업데이트 빈도가 가장 높은 핫 데이터 그룹에 해당된다. 그리고, 영역2는 바텀 영역1에 비하여 업데이트 발생 빈도가 높으나, 탑 영역N에 비해서는 업데이트 발생 빈도가 낮다는 것을 보여준다.
해당 데이터 그룹에서 업데이트가 발생할 때마다 탑 영역 쪽으로 한 단계씩 영역을 이동시킨다. 그리고, 초기 설정된 시간 동안에 해당 데이터 그룹에서 업데이트가 발생되지 않으면 바텀 영역 쪽으로 한 단계씩 영역을 이동시킨다. 이와 같은 동작에 의하여 각 데이터 그룹들에 업데이트 발생 빈도를 검출할 수 있다.
이와 같은 방식으로 논리적 주소 영역의 데이터들을 복수의 데이터 그룹으로 분류한 예를 도 6에 도시하였다.
도 6을 참조하면, 논리적 주소 영역의 데이터들이 4개의 데이터 그룹(G1~G4)으로 분류되는 것을 보여준다. 저장 장치(120)에서는 각 데이터 그룹별로 분리하여 로그 블록들을 할당한다. 도 6에 도시된 데이터 그룹 G2와 같이, 비연속적인 데이터 페이지들이 하나의 데이터 그룹으로 구성될 수 있다.
각 데이터 그룹에 대한 그룹 번호는 도 3에서 설명한 바와 같이 설정할 수 있다. 일 예로서, 각 데이터 그룹에 대한 그룹 번호는 그룹 번호 16~65535(G_16 ~ G_65535)의 사용자 지정 그룹 번호들을 이용하여 설정될 수 있다.
다음으로, 프로세서(110-1)는 그룹별 그룹 환경 설정 정보를 결정하고, 또한 데이터 블록 영역 정보를 결정한다. 일 예로서, 그룹별 그룹 환경 설정 정보는 룩업 테이블(lookup table)을 이용하여 결정할 수 있다.
룩업 테이블은 데이터 그룹별로 도 4에 도시된 데이터 그룹 설정 커맨드로 설정되는 매핑(mapping) 정보, 플래그(flag) 정보 및 오버프로비전 정보가 지정되도록 구성할 수 있다.
일 예로서, 데이터 페이지들의 업데이트 발생 빈도가 높은 데이터 그룹에 대해서는 완전 연관 페이지 매핑(fully-associative page mapping) 방식이 지정되고, 데이터 페이지들의 업데이트 발생 빈도가 낮은 데이터 그룹에 대해서는 블록 매핑(block mapping) 방식이 지정되도록 룩업 테이블을 구성할 수 있다. 또한, 데이터 페이지들의 업데이트 발생 빈도가 중간 정도의 데이터 그룹에 대해서는 2-블록 연관 매핑(2-block associative mapping) 방식 또는 4-블록 연관 매핑(4-block associative mapping) 방식이 지정되도록 룩업 테이블을 구성할 수 있다. 4-블록 연관 매핑(4-block associative mapping) 방식은 2-블록 연관 매핑(2-block associative mapping) 방식에 비하여 업데이트 발생 빈도가 낮은 데이터 그룹에 지정되도록 룩업 테이블을 구성할 수 있다.
세부적으로, 랜덤(random) 데이터 그룹에 대해서는 업데이트 발생 빈도가 높으므로 완전 연관 페이지 매핑(fully-associative page mapping) 방식이 지정되도록 룩업 테이블을 구성할 수 있다. 그리고, 시이퀀셜(sequential) 데이터 그룹에 대해서는 블록 매핑(block mapping) 방식이 지정되도록 룩업 테이블을 구성할 수 있다.
물론, 시이퀀셜(sequential) 데이터 그룹에 대해서 업데이트 발생 빈도가 상대적으로 높은 경우에는 2-블록 연관 매핑(2-block associative mapping) 방식 또는 4-블록 연관 매핑(4-block associative mapping) 방식 중의 하나의 매핑 방식이 지정되도록 룩업 테이블을 구성할 수도 있다.
다음으로, 데이터 그룹별로 라이트 가능 영역 표시, 휘발성(volatile) 영역 표시, 사전 할당(preallocation) 표시, 또는 페이지 패딩(padding) 표시를 하는 플래그(flag) 정보가 지정도록 룩업 테이블을 구성할 수 있다.
일 예로서, 웹 데이터 페이지 또는 스왑(swap) 데이터 페이지가 포함되는 데이터 그룹에 대해서는 비휘발성 영역 표시를 하는 플래그 정보가 지정되도록 룩업 테이블을 구성할 수 있다. 또한, 스트리밍 데이터 페이지가 포함되는 데이터 그룹에 대해서는 사전 할당(preallocation) 표시를 하는 플래그 정보가 지정되도록 룩업 테이블을 구성할 수 있다.
다음으로, 데이터 그룹별로 오버프로비전 정보가 지정되도록 룩업 테이블을 구성할 수 있다. 세부적으로, 룩업 테이블에서 데이터 그룹별로 최대 오버프로비전(max over-provision) 값 또는 최소 오버프로비전(min over-provision) 값을 설정할 수 있다.
데이터 그룹별 로그 블록의 최소 개수는 해당 그룹에 대한 최대 및 최소 처리율(throughput)에 영향을 준다. 즉, 해당 그룹에 할당될 수 있는 로그 블록의 개수가 클수록 해당 데이터 그룹에서의 처리율은 향상된다. 메모리 장치(122)에서 할당할 수 있는 로그 블록의 개수는 제한되어 있으므로 업데이트 발생 빈도를 고려하여 그룹별로 할당될 수 있는 로그 블록의 최대 또는 최소 개수를 설정할 수 있다. 또한, 그룹별로 할당될 수 있는 로그 블록의 최대 또는 최소 개수에 대하여 제한을 두지 않도록 설정할 수도 있다.
이와 같은 방식으로 구성된 룩업 테이블은 ROM(110-2)에 저장될 수 있다.
프로세서(110-1)는 데이터 그룹 커맨드 세트 및 룩업 테이블을 이용하여 데이터 그룹에 대한 설정 정보를 구성할 수 있다. 여기에서, 데이터 그룹에 대한 설정 정보에는 데이터 그룹 정보와 각 그룹에 대한 주소 변환에 이용되는 파라미터 값들이 포함될 수 있다. 일 예로서, 데이터 그룹 정보는 논리적 어드레스가 연속되는 데이터 블록들로 구성된 데이터 블록 영역에서 데이터 그룹을 지정하는 정보가 포함될 수 있다.
프로세서(110-1)는 데이터 그룹 커맨드 세트 및 룩업 테이블을 이용하여 구성된 데이터 그룹 설정 커맨드 코드와 데이터 그룹에 대한 설정 정보를 저장 장치 인터페이스(110-4)를 통하여 저장 장치(120)로 전송할 수 있다.
참고적으로, 프로세서(110-1)는 파일 시스템이 동작하는 도중에 각 데이터 페이지의 할당을 변경할 수 있다. 그리고, 하나의 파일 시스템에 여러 개의 데이터 그룹이 존재할 수 있다.
저장 장치 인터페이스(110-4)는 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(Unix File System) 인터페이스 등과 같은 스토리지 프로토콜을 지원하는 인터페이스를 포함할 수 있다.
다시 도 1을 참조하여, 저장 장치(120)에 대하여 설명하기로 한다.
도 1에 도시된 바와 같이, 저장 장치(120)는 메모리 컨트롤러(121) 및 메모리 장치(122)를 구비한다. 그리고, 메모리 컨트롤러(121)는 호스트 인터페이스(121-1), 컨트롤 유닛(121-2), RAM(Random Access Memory; 121-3) 및 메모리 인터페이스(121-4)를 구비한다.
일 예로서, 메모리 장치(122)를 플래시 메모리 등과 비휘발성 반도체 메모리로 구현하는 경우에 저장 장치(120)는 SSD(Solid State Drive)가 될 수 있다.
메모리 컨트롤러(121)는 호스트 기기(110)로부터 수신되는 커맨드에 응답하여 메모리 장치(122)에서의 소거, 라이트 또는 읽기 동작을 제어한다.
컨트롤 유닛(121-2)은 저장 장치(120)의 전반적인 동작을 제어한다. 세부적으로, 호스트 기기(110)로부터 수신되는 커맨드를 해독하고, 해독된 결과에 따른 동작을 수행하도록 저장 장치(120)를 제어한다.
호스트 인터페이스(121-1)는 저장 장치(120)와 접속되는 호스트 기기(110)와의 데이터 교환 프로토콜을 구비하고 저장 장치(120)와 호스트 기기(110)를 상호 연결한다. 호스트 인터페이스(121-1)는 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(Unix File System) 인터페이스로 구현할 수 있다. 그러나 이는 예시일 뿐 이에 제한되는 것은 아니다. 세부적으로, 호스트 인터페이스(121-1)는 컨트롤 유닛(121-2)의 제어에 따라서 호스트 기기(110)와 커맨드, 어드레스 및 데이터를 교환한다.
또한, 저장 장치(120)는 호스트 인터페이스(121-1)를 통하여 호스트 기기(110)로부터 데이터 그룹 설정에 관련된 커맨드 정보를 전송받을 수 있다. 세부적으로, 저장 장치(120)는 호스트 인터페이스(121-1)를 통하여 호스트 기기(110)로부터 데이터 그룹 설정 커맨드 코드와 데이터 그룹에 대한 설정 정보를 전송받을 수 있다. 호스트 기기(110)로부터 전송받은 데이터 그룹 설정에 관련된 커맨드 정보를 RAM(121-3)에 저장된다.
컨트롤 유닛(121-2)은 RAM(121-3)에 저장된 데이터 그룹 설정에 관련된 커맨드 정보에 기초하여 각 데이터 그룹에 대한 주소 변환에 이용되는 파라미터 값들을 설정할 수 있다. 일 예로서, 컨트롤 유닛(121-2)은 호스트 기기(110)로부터 도 12와 같이 구성된 데이터 그룹 설정 커맨드 코드와 데이터 그룹에 대한 설정 정보를 수신하는 경우에, 수신된 데이터 그룹에 대한 설정 정보에 기초하여 그룹별 매핑 방식 및 그룹별 할당 가능한 로그 블록의 개수 등과 같은 주소 변환에 이용되는 파라미터 값들을 설정할 수 있다.
메모리 인터페이스(121-4)는 메모리 장치(122)와 전기적으로 연결되어 있다. 메모리 인터페이스(121-4)는 컨트롤 유닛(121-2)의 제어에 따라서 메모리 장치(122)와 커맨드, 어드레스 및 데이터를 교환한다. 메모리 인터페이스(121-4)는 NAND 플래시 메모리 또는 NOR 플래시 메모리를 지원하도록 구성될 수 있다. 메모리 인터페이스(121-4)는 복수 개의 채널들을 통하여 소프트웨어 및 하드웨어 인터리브 동작들이 선택적으로 수행되도록 구성될 수도 있다.
컨트롤 유닛(121-2)은 독출 동작 시에는 독출 커맨드 및 어드레스를 메모리 장치(122)에 제공하고, 기입 동작 시에는 기입 커맨드, 어드레스, 그리고 데이터를 제공한다. 그리고, 컨트롤 유닛(121-2)은 RAM(121-3)에 저장된 데이터 그룹 설정에 관련된 커맨드 정보 및 메타 데이터를 이용하여 호스트 기기로부터 수신되는 논리적 주소를 물리적 주소로 변환시키는 처리를 수행한다.
메타 데이터(meta data)란 사용자 데이터 또는 메모리 장치(122)를 관리하기 위하여 저장 장치(120)에서 생성된 데이터이다. 메타 데이터는 논리적 어드레스(Logical Address)를 메모리 장치(122)의 물리적 어드레스(Physical Address)로 변환시키는데 이용되는 매핑(mapping) 정보를 포함한다. 또한, 메모리 장치(122)의 저장 공간을 관리하기 위한 정보들도 포함할 수 있다.
컨트롤 유닛(121-2)은 저장 장치(120)에 전원이 공급되면 메모리 장치(122)에 저장되어 있는 메타 데이터를 읽어내어 RAM(121-3)에 저장하도록 저장 장치(120)를 제어한다. 컨트롤 유닛(121-2)은 메모리 장치(122)에서의 메타 데이터 변경을 발생시키는 동작에 따라서 RAM(121-3)에 저장된 메타 데이터를 업데이트 하도록 저장 장치(120)를 제어한다. 그리고, 컨트롤 유닛(121-2)은 저장 장치(120)에서 전원이 차단되기 전에 RAM(121-3)에 저장되어 있는 메타 데이터를 메모리 장치(122)에 라이트 하도록 제어한다.
컨트롤 유닛(121-2)의 제어 동작에 따라서 수행되는 인터페이스 관리 방법 및 매핑 처리 동작에 대해서는 도 10에서 상세히 설명되어질 것이다.
RAM(121-3)에는 호스트 기기(110)로부터 전송된 데이터 및 컨트롤 유닛(121-2)에서 생성된 데이터가 임시로 저장되거나 호스트 기기(110)로 전송될 데이터가 임시로 저장된다. 또한, RAM(121-3)에는 메타 데이터, 데이터 그룹 정보와 각 그룹에 대한 주소 변환에 이용되는 파라미터 값들이 저장되는 영역이 할당되어 있다. RAM(121-3)은 DRAM, SRAM 등으로 구현될 수 있다.
메모리 장치(122)는 비휘발성 반도체 메모리 장치로 구현될 수 있으며, 구체적으로 플래시 메모리, PRAM(Phase change RAM), FRAM(Ferroelectric RAM), MRAM(Magnetic RAM) 등으로 구현될 수 있다.
도 7을 참조하면, 메모리 장치(122)의 저장 영역은 고정 정보 영역(71), 루트(root) 정보 영역(72) 및, 데이터 영역(73)으로 나눌 수 있다.
고정 정보 영역(71)에는 파일 시스템에 대한 정보, 버전, 블록 당 페이지 수 등의 메모리 장치(122)의 고유한 정보가 저장될 수 있다. 루트 정보 영역(72)에는 메타 데이터가 저장된 위치 정보가 저장된다. 그리고, 데이터 영역(73)에는 메타 데이터 및 사용자 데이터가 저장된다. 데이터 영역(73)을 메타 데이터 저장 영역과 사용자 데이터 영역으로 세분화하여 구분할 수도 있다.
일 예로서, 메모리 장치(122)를 플래시 메모리로 구현한 세부적인 구성을 도 8에 도시하였다.
도 8에 도시된 바와 같이, 플래시 메모리(122')는 셀 어레이(10), 페이지 버퍼(20), 제어 회로(30) 및 로우 디코더(40)를 포함한다.
셀 어레이(10)는 트랜지스터에 일정 전압을 인가하는 방식으로 데이터가 기입되는 영역이다. 셀 어레이(10)는 워드라인들(WL0~WLm-1) 및 비트라인들(BL0~BLn-1)이 교차한 곳에 형성된 메모리 셀들을 포함한다. 여기에서, m 및 n은 자연수이다. 도 4에서는 하나의 메모리 블록이 도시되어 있으나 셀 어레이(10)는 복수의 메모리 블록들을 포함할 수 있다. 각각의 메모리 블록들은 각 워드 라인들(WL0~WLm-1)에 대응되는 페이지들을 포함하고 있다. 그리고 페이지들 각각은 해당 워드라인에 연결된 복수의 메모리 셀들을 포함한다. 플래시 메모리(122')는 블록 단위로 소거 동작을 수행하고, 페이지 단위로 프로그램 동작 혹은 읽기 동작을 수행한다.
메모리 셀 어레이(10)는 셀 스트링(cell string) 구조를 갖는다. 각각의 셀 스트링은 스트링 선택 라인(String Selection Line; SSL)에 연결되는 스트링 선택 트랜지스터(SST), 복수의 워드라인들(WLO ~ WLm-1)에 각각 연결된 복수의 메모리 셀들(MC0 ~ MCm-1), 그리고 접지 라인(Ground Section Line; GSL)에 연결된 접지 선택 트랜지스터(GST)를 포함한다. 여기에서, 스트링 선택 트랜지스터(SST)는 비트라인과 스트링 채널 사이에 연결되고, 접지 선택 트랜지스터(GST)는 스트링 채널과 공통 소스 라인(Common Source Line; CSL) 사이에 연결된다.
페이지 버퍼(20)는 복수의 비트라인들(BL0~BLn-1)을 통해 셀 어레이(10)에 연결된다. 페이지 버퍼(20)는 선택된 워드라인에 연결된 메모리 셀들에 기입할 데이터를 임시로 저장하거나 또는 선택된 워드라인에 연결된 메모리 셀들로부터 독출된 데이터를 임시로 저장한다.
제어 회로(30)는 기입 또는 독출 동작 그리고 소거 동작에 필요한 각종 전압들을 생성하고, 제어 신호들을 수신하여 플래시 메모리(122')의 제반 동작을 제어한다.
로우 디코더(40)는 선택 라인들(SSL, GSL) 및 복수의 워드라인들(WL0~WLm-1)을 통해 셀 어레이(10)에 연결된다. 로우 디코더(20)는 기입 동작 또는 독출 동작 시 어드레스를 입력받고, 입력된 어드레스에 따라 어느 하나의 워드라인을 선택한다. 여기에서 선택된 워드라인에는 기입 동작이 수행되거나 또는 독출 동작이 수행될 메모리 셀들이 연결되어 있다.
또한, 로우 디코더(40)는 선택된 워드라인, 비선택된 워드라인들, 그리고 선택 라인들(SSL, GSL)로 프로그램 동작 또는 읽기 동작에 필요한 전압들(예를 들어, 프로그램 전압, 패스 전압, 읽기 전압, 스트링 선택 전압, 접지 선택 전압)을 인가한다.
각각의 메모리 셀은 한 비트의 데이터 혹은 2비트 이상의 데이터를 저장할 수 있다. 하나의 메모리 셀에 한 비트의 데이터를 저장하는 메모리 셀은 싱글 레벨 셀(Single Level Cell; SLC)이라고 불린다. 그리고, 하나의 메모리 셀에 2비트 이상의 데이터를 저장하는 메모리 셀은 멀티 레벨 셀(Multi Level Cell; MLC)이라고 불린다. 싱글 레벨 셀은 문턱 전압에 따라 소거 상태(Erase State) 또는 프로그램 상태(Program State)를 갖는다.
도 9에 도시된 바와 같이, 플래시 메모리(122')의 내부 구조는 복수의 블록들로 구성되고, 각 블록들은 복수의 페이지들로 이루어져 있다.
플래시 메모리(122')에서 데이터의 기입 및 독출은 페이지 단위로 수행되고, 전기적 소거는 블록 단위로 이루어진다. 또한, 기입 전에 블록의 전기적 소거 작업이 요구된다. 이에 따라서, 덮어쓰기가 불가능하다.
덮어쓰기가 불가능한 메모리 장치에서는 사용자 데이터를 사용자가 원하는 물리적 영역에 기입할 수 없다. 따라서 사용자로부터 기입 또는 독출을 위하여 액세스를 요청받는 경우, 사용자로부터 기입 또는 독출이 요청된 영역을 논리적 어드레스로, 실제로 데이터가 저장되어 있는 또는 데이터가 저장될 물리적 영역을 물리적 어드레스로 분류하여 사용자 데이터에 대한 논리적 어드레스를 물리적 어드레스로 변환시키는 어드레스 변환 동작이 필요하다.
데이터 저장 시스템(100)에서 논리적 어드레스를 물리적 어드레스로 변환시키는 과정을 도 10을 참조하여 설명하기로 한다.
도 10은 데이터 저장 시스템(100)의 소프트웨어 구조를 보여주는 블록도이다. 일 예로서, 도 10에서는 데이터 저장 시스템(100)을 구성하는 메모리 장치(122)를 플래시 메모리로 구현한 경우의 데이터 저장 시스템(100)의 소프트웨어 구조를 보여준다.
도 10을 참조하면, 데이터 저장 시스템(100)은 애플리케이션(101), 파일 시스템(102), 플래시 변환 계층(103), 그리고 플래시 메모리(104)순으로 소프트웨어 계층 구조를 갖는다. 여기에서, 플래시 메모리(104)는 물리적으로 도 8 및 도 9에 도시된 플래시 메모리(122')를 의미한다.
애플리케이션(101)은 UI(110-5)를 이용한 사용자의 입력에 응답하여 사용자 데이터를 가공하는 펌웨어를 의미한다. 예를 들어, 애플리케이션(101)은 워드 프로세서와 같은 문서 처리 소프트웨어, 계산 소프트웨어, 웹 브라우저와 같은 문서 뷰어가 될 수 있다. 애플리케이션(101)은 사용자의 입력에 응답하여 사용자 데이터를 처리하고, 처리된 사용자 데이터를 플래시 메모리(104)에 저장하기 위한 커맨드를 파일 시스템(102)에 전달한다. 또한, 애플리케이션(101)은 데이터 그룹 설정 커맨드를 파일 시스템(102)에 전달할 수 있다.
파일 시스템(102)은 플래시 메모리(104)에 사용자 데이터를 저장하기 위해 사용되는 구조 또는 소프트웨어를 의미한다. 파일 시스템(102)은 애플리케이션(101)으로부터의 커맨드에 응답하여, 사용자 데이터가 저장될 논리적 주소를 할당한다. 파일 시스템(102)의 일종으로 FAT(File Allocation Table) 파일 시스템, NTFS 등이 있다.
플래시 변환 계층(Flash Translation Layer; FTL, 103)에서는 파일 시스템(102)으로부터 전달받은 논리적 주소를 플래시 메모리(104)에서의 읽기/쓰기 동작을 위한 물리적 주소로의 변환 과정을 수행한다. 플래시 변환 계층(103)에서는 메타 데이터에 포함된 매핑 정보를 이용하여 논리적 주소를 물리적 주소 변환시킨다.
플래시 변환 계층(103)은 각 논리 데이터 블록(물리적 블록과 동일한 크기의 연속된 논리 데이터 페이지들의 모음)에 그룹 번호를 할당할 수 있다. 제공할 수 있는 그룹 번호의 개수에는 제한이 있을 수 있다. 플래시 변환 계층(103)에서 도 6에 도시된 바와 같이 로그 블록은 데이터 그룹 별로 할당된다. 플래시 변환 계층(103)에서는 오버프로비전 정보에 지정하는 값에 따라서 각 그룹에 할당될 수 있는 로그 블록의 최대 또는 최소 개수를 설정할 수 있다. 플래시 변환 계층(103)에서는 해당 그룹에 미리 로그 블록을 할당하는 퍼시스턴트 프리얼로케이션(persistent preallocation) 기능, 페이지 패딩(page padding) 기능 등을 지원할 수 있다.
구체적으로, 플래시 변환 계층(103)에서는 호스트 기기(110)로부터 전송된 데이터 그룹 설정에 관련된 커맨드 정보에 기초하여 쓰기 동작을 수행하기 위한 주소 변환 처리를 수행한다. 즉, 데이터 그룹 설정에 관련된 커맨드 정보에 포함된 데이터 블록 영역 정보를 이용하여 쓰기 동작을 수행할 논리적 주소가 포함되는 데이터 블록에 할당된 데이터 그룹을 검색할 수 있다. 참고적으로, 데이터 블록 영역 정보는 도 4에 도시된 데이터 그룹 설정 커맨드 스펙의 <group definitions>에 정의되어 있다.
쓰기 동작을 수행할 논리적 주소에 대응되는 데이터 그룹을 검색한 후에, 검색된 데이터 그룹에 대한 그룹 환경 설정 정보를 찾아낸다. 참고적으로, 그룹 환경 설정 정보는 도 4에 도시된 데이터 그룹 설정 커맨드 스펙의 <group config>에 정의되어 있다.
다음으로, 쓰기 동작을 수행할 논리적 주소에 대응되는 데이터 그룹에 대한 그룹 환경 설정 정보에 기초하여 주소 변환 처리를 수행한다. 도 4에서 이미 설명한 바와 같이, 그룹 환경 설정 정보에는 해당 데이터 그룹에 대한 매핑 방식 정보, 플래그(flag) 정보 및 오버프로비전 정보가 지정되어 있다. 플래시 변환 계층(103)에서는 매핑 방식 정보로 해당 데이터 그룹에 대한 매핑 방식을 설정할 수 있다. 그리고, 플래그(flag) 정보로 해당 데이터 그룹에 대한 라이트 가능 여부, 휘발성(volatile) 여부, 사전 할당(preallocation) 여부, 또는 페이지 패딩(padding) 기능 설정 여부를 설정할 수 있다. 또한, 오버프로비전 정보로 해당 데이터 그룹에 대한 로그 블록의 최소 개수 또는 최대 개수를 설정할 수 있다.
일 예로서, 해당 데이터 그룹에 대한 매핑 방식이 완전 연관 페이지 매핑(fully-associative page mapping) 방식으로 설정된 경우에는, 플래시 변환 계층(103)에서는 도 11a와 같은 방식으로 주소 변환 처리를 수행한다. 완전 연관 페이지 매핑(fully-associative page mapping) 방식을 페이지 매핑 방식이라 칭하기도 한다.
도 11a를 참조하면, 페이지 단위로 생성되는 매핑 정보에 기초하여 주소 변환 처리를 수행한다. 이에 따라서, 논리적 데이터 블록 LB0을 구성하는 각 페이지 P0 ~ P3에 대한 매핑 정보에 기초하여 로그 블록 PB0으로 주소 변환된다. 여기에서, 로그 블록은 플래시 메모리(104)의 물리적 블록을 의미한다. 이후에 LB0의 페이지 P2가 P2'로 갱신되면, 갱신된 P2'를 쓰기 위한 페이지 매핑 정보에 생성시켜 해당 데이터 그룹에 할당된 새로운 로그 블록 PB1에 갱신된 페이지 P2'를 쓴다. 그리고, 로그 블록 PB0의 페이지 P2를 무효화시킨다.
다른 예로서, 해당 데이터 그룹에 대한 매핑 방식이 블록 매핑 방식으로 설정된 경우에는, 플래시 변환 계층(103)에서는 도 11b와 같은 방식으로 주소 변환 처리를 수행한다.
도 11b를 참조하면, 블록 단위로 생성되는 매핑 정보에 기초하여 주소 변환 처리를 수행한다. 이에 따라서, 논리적 데이터 블록 LB0을 구성하는 각 페이지 P0 ~ P3에 대한 매핑 정보는 하나의 블록 매핑 정보로 생성되고, 하나의 블록 매핑 정보에 기초하여 로그 블록 PB0으로 주소 변환된다. 이후에 LB0의 페이지 P2가 P2'로 갱신되면, 갱신된 P2'를 포함하는 해당 블록에 포함된 모든 페이지를 쓰기 위한 블록 매핑 정보에 생성시켜 해당 데이터 그룹에 할당된 새로운 로그 블록 PB1에 페이지 P0, P1, P3 및, 갱신된 페이지 P2'를 쓴다. 그리고, 로그 블록 PB0 전체 페이지를 무효화시킨다.
또 다른 예로서, 해당 데이터 그룹에 대한 매핑 방식이 블록 연관 매핑(block associative mapping) 방식으로 설정된 경우에는, 플래시 변환 계층(103)에서는 도 11c와 같은 방식으로 주소 변환 처리를 수행한다. 블록 연관 매핑 방식을 하이브리드(hybrid) 매핑 방식이라 칭하기도 한다.
도 11c를 참조하면, 논리적 데이터 블록 LB0의 오리지널 데이터를 플래시 메모리에 쓸 때는 블록 단위로 생성되는 매핑 정보에 기초하여 주소 변환 처리를 수행한다. 이에 따라서, 논리적 데이터 블록 LB0을 구성하는 각 페이지 P0 ~ P3에 대한 매핑 정보는 하나의 블록 매핑 정보로 생성되고, 하나의 블록 매핑 정보에 기초하여 로그 블록 PB0으로 주소 변환된다. 이후에 LB0의 페이지 P2가 P2'로 갱신되면, 갱신된 P2'를 쓰기 위한 페이지 매핑 정보에 생성시켜 해당 데이터 그룹에 할당된 새로운 로그 블록 PB1에 갱신된 페이지 P2'를 쓴다. 그리고, 로그 블록 PB0의 페이지 P2를 무효화시킨다.
또 다른 예로서, 해당 데이터 그룹에 대한 매핑 방식이 2-블록 연관 매핑(2-block associative mapping) 방식으로 설정된 경우에는, 플래시 변환 계층(103)에서는 도 11d와 같은 방식으로 주소 변환 처리를 수행한다.
도 11d를 참조하면, 논리적 데이터 블록 LB0 및 LB1의 오리지널 데이터를 플래시 메모리(104)에 쓸 때는 각각 블록 단위로 생성되는 매핑 정보에 기초하여 주소 변환 처리를 수행한다. 이에 따라서, 논리적 데이터 블록 LB0을 구성하는 각 페이지 P0 ~ P3에 대한 매핑 정보는 하나의 블록 매핑 정보로 생성되고, 해당 블록 매핑 정보에 기초하여 로그 블록 PB0으로 주소 변환된다. 같은 방식으로, 논리적 데이터 블록 LB1을 구성하는 각 페이지 P4 ~ P7에 대한 매핑 정보는 다른 하나의 블록 매핑 정보로 생성되고, 해당 블록 매핑 정보에 기초하여 로그 블록 PB1로 주소 변환된다.
그리고, 두개의 로그 블록 PB0 및 PB1에 쓰여진 페이지 데이터들에 대한 갱신 데이터 페이지들을 해당 데이터 그룹에 할당된 새로운 하나의 로그 블록에 쓰기 위한 페이지 매핑 정보를 생성시킨다. 즉, LB0의 페이지 P1, P2가 각각 P1' P2'로 갱신되고, LB1의 페이지 P5가 P5'로 갱신되면, LB0 및 LB1에서 갱신된 페이지 P1' P2', P5'를 하나의 새로운 로그 블록 PB2에 쓰기 위한 페이지 매핑 정보에 생성시킨다. 이에 따라서 새로운 로그 블록 PB2에 갱신된 페이지 P1' P2', P5'를 쓰고, 로그 블록 PB0의 페이지 P1, P2 및 로그 블록 PB1의 페이지 P5를 무효화시킨다.
참고적으로, N-블록 연관 매핑(N-block associative mapping) 방식은 논리적 데이터 블록의 오리지널 데이터를 플래시 메모리(104)에 쓸 때는 블록 단위로 매핑 정보를 생성시킨다. 그리고, N개의 로그 블록들에 쓰여진 페이지 데이터들에 대한 갱신 데이터 페이지들을 새로운 하나의 로그 블록에 쓰기 위한 페이지 매핑 정보를 생성시킨다. 이와 같은 매핑 처리 방식을 N-블록 연관 매핑(N-block associative mapping) 방식이라 한다.
이와 같이, 플래시 변환 계층에서 각각의 데이터 그룹에서 사용되는 로그 블록들을 분리할 수 있다. 이에 따라서 가비지 컬렉션(garbage collection) 수행 시에 불필요하게 콜드 데이터(cold data)가 복사되는 것을 줄일 수 있게 된다.
그리고, 시이퀀셜한 데이터 페이지들에 대하여 블록 매핑을 사용하도록 데이터 그룹 설정 정보를 정의하면 랜덤하게 사용될 페이지들에게 더 많은 여유 블록들이 할당될 수 있어 가비지 컬렉션 비용(garbage collection cost)을 줄일 수 있게 된다. 또한, 블록 매핑 방식을 적용함으로써 매핑 데이터 사이즈를 줄일 수 있게 된다.
또한, 호스트 기기(110)의 파일 시스템에서 데이터 그룹별로 오버프로비전, 매핑 알고리즘 등을 제어할 수 있으므로, 분류된 데이터 그룹별로 가비지 컬렉션 빈도나 비용을 조절할 수 있게 된다. 이에 따라서 데이터 저장 시스템이 보증할 수 있는 최소 처리율(throughput)을 조절할 수 있게 된다.
도 12의 흐름도를 참조하여 본 발명의 일실시 예에 따른 인터페이스 관리 방법을 설명하기로 한다. 도 12에 도시된 인터페이스 관리 방법은 도 2에 도시된 호스트 기기(110)의 프로세서(110-1)의 제어 동작에 의하여 수행될 수 있다.
우선, 호스트 기기(110)는 저장 장치(120)에 저장되는 데이터 페이지들의 속성에 따라서 데이터 페이지들을 복수의 데이터 그룹으로 분류한다(S101). 즉, 호스트 기기(110)는 저장 장치(120)에 저장되는 데이터 페이지들의 속성에 따라서 데이터 페이지들을 공통의 속성을 갖는 데이터 그룹으로 그룹핑 처리한다. 논리적 어드레스가 연속되는 데이터 블록들로 구성된 데이터 블록 영역 단위로 데이터 그룹을 그룹핑 처리할 수 있다. 즉, 데이터 페이지들을 구성하는 파일의 속성에 따라서 사용 패턴을 분류할 수 있다. 일 예로서, 파일의 속성은 파일의 확장자 정보로 식별할 수 있다. 다른 예로서, 데이터 페이지들의 업데이트(update) 발생 빈도에 따라서 핫 데이터 그룹과 콜드 데이터 그룹으로 분류할 수도 있다.
다음으로, 호스트 기기(110)는 단계101(S101)에서 분류된 데이터 그룹에 대한 설정 정보를 저장 장치(120)로 전송한다(S102). 단계102(S102)를 수행하기 위한 세부적인 흐름도를 도 13에 도시하였다. 단계102(S102)를 도 13의 흐름도를 참조하여 상세히 설명하기로 한다.
도 13을 참조하면, 호스트 기기(110)는 단계101(S101)에서 분류된 데이터 그룹에 대한 설정 정보를 구성한다(S201). 도 4에 도시된 바와 같이, 데이터 그룹 설정 커맨드의 스펙에 따라 데이터 그룹에 대한 설정 정보는 헤더, 그룹 환경 설정 정보 및 데이터 블록 영역 정보로 구성될 수 있다. 그리고, 헤더는 커맨드 코드에 의하여 정의되는 그룹의 개수를 나타내는 정보 및 데이터 블록 영역의 개수를 나타내는 정보로 구성될 수 있다. 다음으로, 그룹 환경 설정 정보는 그룹 번호 정보, 매핑 방식에 대한 정보, 페이지 패딩 수행 표시 정보, 휘발성 데이터 영역 표시 정보 또는 해당 그룹에 할당되는 로그 블록의 개수에 대한 정보 중에서 적어도 하나 이상의 정보들로 구성될 수 있다. 그리고, 해당 그룹에 할당되는 로그 블록의 개수에 대한 정보는 최대 할당 가능한 로그 블록 개수에 대한 데이터 블록의 개수의 비율 정보 및 최소 할당 가능한 로그 블록 개수에 대한 데이터 블록의 개수의 비율 정보로 구성될 수 있다. 또한, 데이터 블록 영역 정보는 해당 그룹에 대한 스타트 논리 블록 어드레스 정보, 데이터 블록의 길이 정보 및 그룹 번호 정보로 구성될 수 있다. 그룹별 그룹 환경 설정 정보를 구성하는 설정 값들은 위에서 이미 설명한 룩업 테이블(lookup table)을 이용하여 결정할 수 있다.
다음으로, 단계201(S201)에서 구성된 데이터 그룹에 대한 설정 정보는 초기 정의된 커맨드 코드와 함께 저장 장치(120)로 전송한다(S202). 여기에서, 커맨드 코드는 데이터 그룹 설정 커맨드 코드로 정의된 코드이다.
도 14의 흐름도를 참조하여 본 발명의 일실시 예에 따른 저장 장치에서의 매핑 처리 방법을 설명하기로 한다. 도 14에 도시된 방법은 도 1에 도시된 저장 장치(120)의 컨트롤 유닛(121-2)의 제어 동작에 의하여 수행될 수 있다.
저장 장치(120)는 데이터 그룹 정보와 각 그룹에 대한 주소 변환에 이용되는 파라미터 값들을 호스트 기기(110)로부터 수신한다(S301). 세부적으로, 호스트 인터페이스(121-1)를 통하여 호스트 기기(110)로부터 데이터 그룹 설정 커맨드 코드와 데이터 그룹에 대한 설정 정보를 전송받는다. 데이터 그룹에 대한 설정 정보에는 데이터 그룹 정보와 각 그룹에 대한 주소 변환에 이용되는 파라미터 값들이 포함될 수 있다. 호스트 기기(110)로부터 수신되는 파라미터 값들은 그룹별 매핑 방식 또는 그룹별 할당 가능한 로그 블록의 개수를 지정하는 값들이 포함될 수 있다. 파라미터 값들을 도 4에 도시된 바와 같은 플래그 정보로 표시된 항목의 값들이 포함될 수 있다.
다음으로, 저장 장치(120)는 수신된 데이터 그룹 정보와 각 그룹에 대한 주소 변환에 이용되는 파라미터 값들에 기초하여 주소 변환 처리를 실행한다(S302). 단계302(S302)를 수행하기 위한 세부적인 흐름도를 도 15에 도시하였다. 단계302(S302)를 도 15의 흐름도를 참조하여 상세히 설명하기로 한다.
도 15를 참조하면, 저장 장치(120)는 수신된 데이터 그룹 정보와 각 그룹에 대한 파라미터 값들에 따라서 플래시 변환 계층(FTL)에서의 주소 변환 실행 조건을 설정한다(S401). 즉, 저장 장치(120)는 수신된 데이터 그룹 정보와 각 그룹에 대한 파라미터 값들에 따라서 그룹별 매핑 방식, 그룹별 할당 가능한 로그 블록의 개수를 설정할 수 있다. 또한, 파라미터 값들에 따라서 페이지 패딩(padding) 여부를 설정할 수 있다. 그리고, 파라미터 값들에 따라서 해당 데이터 그룹에 대한 휘발성 데이터 여부를 확인하고, 휘발성 데이터인 경우에는 메타 데이터를 메모리 장치(122)에 쓰지 않도록 저장 장치(120)를 관리한다.
다음으로, 그룹별 주소 변환 실행 조건에 기초하여 저장 장치(120)에 포함된 플래시 변환 계층에서 주소 변환 처리를 실행한다(S402). 즉, 쓰기 동작을 수행할 논리적 주소에 대응되는 데이터 그룹에 대한 그룹 환경 설정 정보에 의하여 결정된 FTL(103)의 주소 변환 실행 조건을 적용하여 쓰기 동작을 수행할 논리적 주소를 저장 장치(120)의 물리적 주소로 변환시킨다.
다음으로, 도 16의 흐름도를 참조하여 본 발명의 일실시 예에 따른 저장 장치에서의 데이터 라이트 방법을 설명하기로 한다.
저장 장치(120)는 데이터 그룹 정보와 각 그룹에 대한 주소 변환에 이용되는 FTL(103)의 설정값들을 호스트 기기(110)로부터 수신한다(S501). 일 예로서, 도 4에 도시된 바와 같은 데이터 그룹 설정 커맨드 스펙에 따라서 FTL(103)의 설정값들을 수신할 수 있다. 데이터 그룹에 대한 주소 변환에 이용되는 FTL(103)의 설정값에는 그룹별 매핑 방식 또는 그룹별 할당 가능한 로그 블록의 개수를 지정하는 값들이 포함될 수 있다. 또한 도 4에 도시된 바와 같은 플래그 정보로 표시된 항목의 값들이 포함될 수 있다.
다음으로, 저장 장치(120)는 수신된 데이터 그룹 정보와 각 그룹에 대한 FTL(103)의 설정값에 따라서 플래시 변환 계층에서의 주소 변환 실행 조건을 설정한다(S502).
다음으로, 쓰기 동작을 수행할 논리적 주소에 대응되는 데이터 그룹을 검색한다(S503). 일 예로서, 도 4에 도시된 데이터 그룹 설정에 관련된 커맨드 정보에 포함된 데이터 블록 영역 정보를 이용하여 쓰기 동작을 수행할 논리적 주소가 포함되는 데이터 블록에 할당된 데이터 그룹을 찾아낼 수 있다.
다음으로, 검색된 데이터 그룹에 기초한 FTL(103) 실행 조건을 적용하여 주소 변환 처리를 실행한다(S504). 즉, 쓰기 동작을 수행할 논리적 주소에 대응되는 데이터 그룹에 대한 그룹 환경 설정 정보에 의하여 결정된 FTL(103)에서의 주소 변환 실행 조건을 적용하여 쓰기 동작을 수행할 논리적 주소를 저장 장치(120)의 물리적 주소로 변환시킨다.
다음으로, 라이트 커맨드에서 지정하는 논리적 주소의 데이터를 저장 장치(120)의 변환된 물리적 주소에 라이트한다(S505).
도 17은 본 발명의 실시 예에 따른 컴퓨터 시스템 장치를 나타내는 블록도이다.
본 발명의 실시 예에 따른 컴퓨터 시스템(1000)은 버스(1600)에 전기적으로 연결된 프로세서(CPU, 1200), RAM(1300), 사용자 인터페이스(UI, 1400) 및 저장 장치(1100)를 구비한다. 저장 장치(1100)는 메모리 컨트롤러(1110) 및 메모리 장치(1120)를 포함한다. 메모리 장치(1120)에는 프로세서(1200)에 의해서 처리된 또는 처리될 데이터가 메모리 컨트롤러(1110)를 통해 저장될 것이다. 도 17의 저장 장치(1100)에는 본 발명의 실시 예에 따른 저장 장치(120)가 적용될 수 있다. 또한, 프로세서(CPU, 1200)는 도 2에 도시된 본 발명의 실시 예에 따른 호스트 기기의 프로세서(110-1)가 적용될 수 있다. 본 발명의 실시 예에 따른 컴퓨터 시스템(1000)은 파워 공급 장치(1500)를 더 구비할 수 있다.
본 발명의 실시 예에 따른 컴퓨터 시스템(1000)은 모바일 장치인 경우, 컴퓨터 시스템의 파워 공급 장치(1500)는 배터리 일 수 있으며, 베이스밴드 칩셋(baseband chipset)과 같은 모뎀이 추가적으로 제공될 수도 있다. 또한, 본 발명의 실시 예에 따른 컴퓨터 시스템 장치(1000)에는 응용 칩셋(application chipset), 카메라 이미지 프로세서(Camera Image Processor: CIS), 모바일 디램, 등이 더 제공될 수 있음은 이 분야의 통상적인 지식을 습득한 자들에게 자명한 사항인 바, 더 자세한 설명은 생략한다.
도 18은 본 발명의 실시 예에 따른 메모리 카드를 나타내는 블록도이다.
도 18을 참조하면, 본 발명의 실시 예에 따른 메모리 카드(2000)는, 메모리 컨트롤러(2020) 및 메모리 장치(2010)를 구비한다. 메모리 컨트롤러(2020)는 입출력 수단(2030)을 통해 수신되는 외부의 호스트의 요청에 응답하여 메모리 장치(2010)로의 데이터 기입 또는 메모리 장치(2010)로부터의 데이터 독출을 제어한다. 본 발명의 실시 예에 따른 메모리 카드(2000)의 메모리 컨트롤러(2020)는 상기와 같은 제어 동작을 수행하기 위해, 각각 호스트 및 메모리 장치(2010)와의 인터페이스를 수행하는 인터페이스 및 RAM 등을 구비할 수 있다. 본 발명의 실시 예에 따른 메모리 카드(2000)는 도 1의 저장 장치(120)로 구현될 수 있다.
도 18의 메모리 카드(2000)는 컴팩트 플래시 카드(CFC: Compact Flash Card), 마이크로 드라이브(Micro drive), 스마트 미디어 카드(SMC: Smart Media Card) 멀티미디어 카드(MMC: Multimedia Card), 보안 디지털 카드(SDC: Security Digital Card), 메모리 스틱(Memory Stick), 및 USB 플래시 메모리 드라이버 등으로 구현될 수 있다.
도 19는 솔리드 스테이트 드라이브(Solid State Drive; SSD)를 포함하는 서버 시스템 및 네트워크 시스템을 나타내는 도면이다.
도 19를 참조하면, 본 발명의 실시 예에 따른 네트워크 시스템(4000)은 네트워크를 통해 연결되는 서버 시스템(4100) 및 다수의 단말들(4200_1~4200_n)을 포함할 수 있다. 본 발명의 실시 예에 따른 서버 시스템(4100)은 네트워크에 연결되는 다수의 단말들(4200_1~4200_n)로부터 수신되는 요청을 처리하는 서버(4120) 및 단말들(4200_1~4200_n)로부터 수신되는 요청에 대응되는 데이터를 저장하는 SSD를 포함할 수 있다. 이때, 도 20의 SSD(4110)는 도 1에 도시된 본 발명의 실시 예에 따른 저장 장치(120)로 구현될 수 있다.
한편, 상기에서 설명된 본 발명에 따른 플래시 메모리 시스템은 다양한 형태들의 패키지를 이용하여 실장 될 수 있다. 예를 들면, 본 발명에 따른 메모리 시스템은 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), 등과 같은 패키지들을 이용하여 실장될 수 있다.
이상에서와 같이 도면과 명세서에서 최적 실시예가 개시되었다. 여기서 특정한 용어들이었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
100 : 데이터 저장 시스템 110 : 호스트 기기
120 : 저장 장치 121 : 메모리 컨트롤러
122 : 메모리 장치 121-1 : 호스트 인터페이스
121-2 : 컨트롤 유닛 121-3 : RAM
121-4 : 메모리 인터페이스 110-1 : 프로세서
110-2 : ROM 110-3 : RAM
110-4 : 저장 장치 인터페이스 110-5 : 사용자 인터페이스
110-6 : 버스 1000 : 컴퓨터 시스템
1100 : 저장 장치 1110 : 메모리 컨트롤러
1120 : 메모리 장치 1200 : 프로세서
1300 : RAM 1400 : 사용자 인터페이스
1500 : 파워 공급 장치 2000 : 메모리 카드
2010 : 메모리 장치 2020 : 메모리 컨트롤러
4000 : 네트워크 시스템 4100 : 서버 시스템
4110 : SSD 4120 : 서버
4200_1 ~ 4200_n : 다수의 단말들

Claims (10)

  1. 저장 장치에 저장되는 데이터 페이지들의 속성에 따라서 복수의 데이터 그룹으로 분류하는 단계; 및
    상기 분류된 데이터 그룹에 대한 설정 정보를 저장 장치로 전송하는 단계를 포함함을 특징으로 하는 인터페이스 관리 방법.
  2. 제1항에 있어서, 상기 데이터 페이지들을 구성하는 파일의 속성에 따라서 상기 데이터 페이지들을 복수의 데이터 그룹으로 분류하는 것을 특징으로 하는 인터페이스 관리 방법.
  3. 제2항에 있어서, 상기 파일의 속성은 파일의 확장자 정보 또는 파일의 종류에 근거하여 결정됨을 특징으로 인터페이스 관리 방법.
  4. 제1항에 있어서, 상기 데이터 페이지들의 업데이트 발생 빈도에 따라서 상기 데이터 페이지들을 복수의 데이터 그룹으로 분류하는 것을 특징으로 하는 인터페이스 관리 방법.
  5. 제1항에 있어서, 상기 데이터 그룹에 대한 설정 정보는 초기 정의된 커맨드 코드와 함께 전송되고, 상기 커맨드 코드는 데이터 그룹 설정 커맨드 코드로 정의된 코드임을 특징으로 하는 인터페이스 관리 방법.
  6. 제1항에 있어서, 상기 데이터 그룹에 대한 설정 정보는 헤더, 그룹 환경 설정 정보 및 데이터 블록 영역 정보를 포함함을 특징으로 하는 인터페이스 관리 방법.
  7. 제6항에 있어서, 상기 그룹 환경 설정 정보는 그룹 번호 정보, 매핑 방식에 대한 정보, 페이지 패딩 수행 표시 정보, 휘발성 데이터 영역 표시 정보 또는 해당 그룹에 할당되는 로그 블록의 개수에 대한 정보 중에서 적어도 하나 이상의 정보들을 포함함을 특징으로 하는 인터페이스 관리 방법.
  8. 제6항에 있어서, 상기 데이터 블록 영역 정보는 해당 그룹에 대한 스타트 논리 블록 어드레스 정보, 데이터 블록의 길이 정보 및 그룹 번호 정보를 포함함을 특징으로 하는 인터페이스 관리 방법.
  9. 호스트 기기로부터 데이터 그룹 정보와 각 그룹에 대한 주소 변환에 이용되는 파라미터 값들을 수신하는 단계; 및
    상기 수신된 데이터 그룹 정보와 각 그룹에 대한 파라미터 값들에 기초하여 저장할 데이터에 대한 논리적 주소를 물리적 주소로 변환시키는 단계를 포함함을 특징으로 하는 저장 장치에서의 매핑 처리 방법.
  10. 제9항에 있어서, 상기 변환된 물리적 주소에 라이트 커맨드에서 지정하는 논리적 주소의 데이터를 라이트하는 단계를 더 포함함을 특징으로 하는 저장 장치에서의 매핑 처리 방법.
KR1020110107578A 2011-10-20 2011-10-20 인터페이스 관리 방법 및 이를 이용한 저장 장치에서의 매핑 처리 방법 KR20130043445A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020110107578A KR20130043445A (ko) 2011-10-20 2011-10-20 인터페이스 관리 방법 및 이를 이용한 저장 장치에서의 매핑 처리 방법
US13/655,692 US20130103893A1 (en) 2011-10-20 2012-10-19 System comprising storage device and related methods of operation

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020110107578A KR20130043445A (ko) 2011-10-20 2011-10-20 인터페이스 관리 방법 및 이를 이용한 저장 장치에서의 매핑 처리 방법

Publications (1)

Publication Number Publication Date
KR20130043445A true KR20130043445A (ko) 2013-04-30

Family

ID=48136941

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020110107578A KR20130043445A (ko) 2011-10-20 2011-10-20 인터페이스 관리 방법 및 이를 이용한 저장 장치에서의 매핑 처리 방법

Country Status (2)

Country Link
US (1) US20130103893A1 (ko)
KR (1) KR20130043445A (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101630085B1 (ko) * 2014-12-09 2016-06-13 주식회사 지큐브 데이터 속성에 따른 플래시 메모리의 데이터 저장 블록 배치방법
KR20160084784A (ko) * 2015-01-06 2016-07-14 한양대학교 산학협력단 드라이브 컨트롤러를 포함하는 저장 장치 및 상기 드라이브 컨트롤러가 수행하는 주소 사상 방법

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9208074B2 (en) * 2013-08-30 2015-12-08 Silicon Motion, Inc. Updating address mapping in sub-intervals in a flash memory data storage device
CN104714891B (zh) * 2013-12-11 2017-12-15 华为技术有限公司 一种闪存数据管理方法及装置
US10353793B2 (en) 2014-11-05 2019-07-16 Oracle International Corporation Identifying improvements to memory usage of software programs
US9910591B2 (en) * 2014-11-05 2018-03-06 Oracle International Corporation Visualizations of memory layouts in software programs
US10275154B2 (en) 2014-11-05 2019-04-30 Oracle International Corporation Building memory layouts in software programs
US10346039B2 (en) * 2015-04-21 2019-07-09 Toshiba Memory Corporation Memory system
US10467102B1 (en) 2016-12-15 2019-11-05 EMC IP Holding Company LLC I/O score-based hybrid replication in a storage system
US10324628B2 (en) * 2017-04-19 2019-06-18 Veritas Technologies Llc Systems and methods for reducing data fragmentation
CN108255418A (zh) * 2017-12-17 2018-07-06 天津津航计算技术研究所 一种具有操作系统的固态硬盘
US11132148B2 (en) * 2019-05-13 2021-09-28 SK Hynix Inc. Semiconductor memory device and a method of operating the same
CN110704333A (zh) * 2019-09-20 2020-01-17 广东以诺通讯有限公司 根据存储数据特性确定eMMC地址映射管理的方法及装置

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6256642B1 (en) * 1992-01-29 2001-07-03 Microsoft Corporation Method and system for file system management using a flash-erasable, programmable, read-only memory
US7254668B1 (en) * 2002-10-28 2007-08-07 Sandisk Corporation Method and apparatus for grouping pages within a block
US7680977B2 (en) * 2004-02-26 2010-03-16 Super Talent Electronics, Inc. Page and block management algorithm for NAND flash
US8261009B2 (en) * 2008-12-30 2012-09-04 Sandisk Il Ltd. Method and apparatus for retroactive adaptation of data location

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101630085B1 (ko) * 2014-12-09 2016-06-13 주식회사 지큐브 데이터 속성에 따른 플래시 메모리의 데이터 저장 블록 배치방법
KR20160084784A (ko) * 2015-01-06 2016-07-14 한양대학교 산학협력단 드라이브 컨트롤러를 포함하는 저장 장치 및 상기 드라이브 컨트롤러가 수행하는 주소 사상 방법

Also Published As

Publication number Publication date
US20130103893A1 (en) 2013-04-25

Similar Documents

Publication Publication Date Title
KR20130043445A (ko) 인터페이스 관리 방법 및 이를 이용한 저장 장치에서의 매핑 처리 방법
US10339046B1 (en) Data moving method and storage controller
US11030094B2 (en) Apparatus and method for performing garbage collection by predicting required time
US9852061B2 (en) Memory device and operating method of memory device
TWI473011B (zh) 用於非揮發性儲存之可變超量供給
US9244619B2 (en) Method of managing data storage device and data storage device
US9355027B2 (en) Zone-based defragmentation methods and user devices using the same
JP5418808B2 (ja) 適応ハイブリッド密度メモリ記憶装置の制御方法、及び適応ハイブリッド密度メモリ記憶装置
KR20130076429A (ko) 메모리 장치의 저장 영역 관리 방법 및 이를 이용한 저장 장치
KR20130078973A (ko) 메모리 장치의 불량 저장 영역 관리 방법 및 이를 이용한 저장 장치
KR102519726B1 (ko) 불휘발성 메모리 장치 그리고 그 제어방법
US9575661B2 (en) Nonvolatile memory systems configured to use deduplication and methods of controlling the same
KR20130016941A (ko) 메모리 시스템 및 그것의 메타 데이터 관리 방법
US10922011B2 (en) Controllers configured to perform secure deletion, key-value storage devices including said controllers, and methods of operation thereof
KR20130084846A (ko) 플래시 메모리를 기반으로 하는 저장 장치, 그것을 포함한 사용자 장치, 그리고 그것의 데이터 읽기 방법
KR20200116372A (ko) 저장 장치, 컨트롤러 및 컨트롤러의 동작 방법
US20230176965A1 (en) Media management based on data access metrics
US9389998B2 (en) Memory formatting method, memory controller, and memory storage apparatus
US20160027518A1 (en) Memory device and method for controlling the same
KR20210101982A (ko) 스토리지 장치 및 메모리 컨트롤러의 동작 방법
KR20200019421A (ko) 메모리 시스템 내 대용량 데이터 저장이 가능한 블록에서의 유효 데이터 체크 방법 및 장치
JP2019169101A (ja) 電子機器、コンピュータシステム、および制御方法
WO2017022082A1 (ja) フラッシュメモリパッケージ、及び、フラッシュメモリパッケージを含むストレージシステム
US20100138595A1 (en) Semiconductor device comprising flash memory and address mapping method
KR101146082B1 (ko) 비휘발성 메모리 저장 장치 및 비휘발성 메모리 저장 장치의 성능 향상 방법

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid