KR20130084988A - 플래시 메모리를 기반으로 하는 저장 장치 및 호스트를 포함하는 메모리 시스템 및 모바일 장치 - Google Patents

플래시 메모리를 기반으로 하는 저장 장치 및 호스트를 포함하는 메모리 시스템 및 모바일 장치 Download PDF

Info

Publication number
KR20130084988A
KR20130084988A KR1020130001708A KR20130001708A KR20130084988A KR 20130084988 A KR20130084988 A KR 20130084988A KR 1020130001708 A KR1020130001708 A KR 1020130001708A KR 20130001708 A KR20130001708 A KR 20130001708A KR 20130084988 A KR20130084988 A KR 20130084988A
Authority
KR
South Korea
Prior art keywords
storage device
user
host
memory
memory system
Prior art date
Application number
KR1020130001708A
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 TW102102042A priority Critical patent/TW201337735A/zh
Priority to US13/744,603 priority patent/US20130185487A1/en
Publication of KR20130084988A publication Critical patent/KR20130084988A/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
    • 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
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0605Improving or facilitating administration, e.g. storage management by facilitating the interaction with a user or administrator
    • 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
    • G06F3/0632Configuration or reconfiguration of storage systems by initialisation or re-initialisation 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/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]

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)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

본 발명의 실시 예에 따른 메모리 시스템은 플래시 메모리를 포함하는 저장 장치; 및 사용자 인터페이스를 통해 상기 저장 장치의 상태와 사용자 패턴에 대한 정보(이하, 사용자 패턴 정보라 함)를 요청하는, 상기 사용자 패턴 정보를 분석하고 상기 저장 장치가 최적화 동작을 수행하도록 상기 저장 장치의 파라미터를 설정하는, 그리고 상기 최적화 동작을 위한 명령을 상기 저장 장치에 제공하는 호스트를 포함한다.
본 발명에 실시 예에 따른 메모리 시스템에 의하면, 사용자 인터페이스를 이용하여 저장 장치 상태(storage device's state)와 사용자 패턴(user pattern)을 분석하고, 사용자에게 저장 장치에 대한 최적화 정보(optimization information)를 제공할 수 있다. 본 발명은 사용자에게 적합하거나 사용자가 원하는 설정을 저장 장치에 반영함으로, 저장 장치의 성능을 높이고 신뢰성을 향상시킬 수 있다.

Description

플래시 메모리를 기반으로 하는 저장 장치 및 호스트를 포함하는 메모리 시스템 및 모바일 장치{MEMORY SYSTEM AND MOBILE DEVICE INCLUDING HOST AND STORAGE DEVICE BASED ON A FLASH MEMORY}
본 발명은 플래시 메모리를 기반으로 하는 저장 장치 및 호스트를 포함한 메모리 시스템 및 모바일 장치에 관한 것이다.
반도체 메모리 장치는 일반적으로 DRAM, SRAM 등과 같은 휘발성 메모리 장치와 EEPROM, FRAM, PRAM, MRAM, 플래시 메모리 등과 같은 불휘발성 메모리 장치로 구분할 수 있다. 휘발성 메모리 장치는 전원이 차단될 때 저장된 데이터를 잃지만, 불휘발성 메모리는 전원이 차단되더라도 저장된 데이터를 보존한다. 특히, 플래시 메모리는 높은 프로그래밍 속도, 낮은 전력 소비, 대용량 데이터 저장 등의 장점을 갖는다. 따라서 플래시 메모리를 기반으로 하는 데이터 저장 장치가 광범위하게 사용되고 있다.
플래시 메모리를 기반으로 하는 데이터 저장 장치에는 기존의 하드 디스크를 대체하고 있는 솔리드 스테이트 드라이브(SSD), SD 카드나 MMC 등과 같은 메모리 카드 등이 있다. 이러한 반도체 메모리 장치는 소형으로 만들 수 있기 때문에, 휴대용 전자 기기 등에 내장될 수 있다. 내장형 메모리 장치의 예로, eSSD(embeded SSD)나 eMMC(embeded MMC) 등이 있다. eSSD는 렙탑 컴퓨터(laptop computer)나 테블렛 PC 또는 전자책 등에 사용될 수 있고, eMMC는 모바일 장치 등에 사용될 수 있다.
본 발명의 목적은 사용자 인터페이스(user interface)를 통해 저장 장치에 대한 최적화 동작(optimization operation)을 수행함으로, 저장 장치의 성능을 개선하고 신뢰도를 향상하는 메모리 시스템 및 모바일 장치를 제공하는 데 있다.
본 발명의 다른 목적은 사용 환경에 맞추어 저장 장치의 동작 특성이 변경 가능한 메모리 시스템을 제공하는 데 있다.
본 발명의 실시 예에 따른 메모리 시스템은 플래시 메모리를 포함하는 저장 장치; 및 사용자 인터페이스를 통해 상기 저장 장치의 상태와 사용자 패턴에 대한 정보(이하, 사용자 패턴 정보라 함)를 요청하는, 상기 사용자 패턴 정보를 분석하고 상기 저장 장치가 최적화 동작을 수행하도록 상기 저장 장치의 파라미터를 설정하는, 그리고 상기 최적화 동작을 위한 명령을 상기 저장 장치에 제공하는 호스트를 포함한다.
실시 예로서, 상기 저장 장치의 상태는 P/E 사이클 및 백그라운드 동작 상태 중 적어도 하나이고, 상기 사용자 패턴 정보는 쓰기 데이터 양, 메모리 접근 형태, 메모리 접근 시간 중 적어도 하나일 수 있다. 상기 호스트는 상기 P/E 사이클을 통해 상기 저장 장치의 수명 예상치를 계산하고 사용자에게 제공한다. 상기 호스트는 상기 저장 장치의 최적화 동작을 위한 추천 레벨을 사용자에게 제공한다.
다른 실시 예로서, 상기 사용자 인터페이스는 애플리케이션이다. 상기 호스트는 상기 애플리케이션을 통해 사용자에게 상기 저장 장치의 진행 상황을 알려주고, 상기 저장 장치에 대한 동작 설정을 안내한다.
또 다른 실시 예로서, 상기 호스트는 상기 저장 장치에 대한 자기 진단 및 자가 복구 동작을 수행한다. 상기 자가 복구 동작은 핫/콜드 데이터 스위치, 데이터 리클레임, 오버 프로비져닝 제어, 파라미터 변경, 프로그램 조건 변경 중 적어도 하나를 통해 수행된다.
본 발명의 실시 예에 따른 저장 장치와 호스트를 포함하는 모바일 장치의 동작 방법은, 애플리케이션을 통해 상기 저장 장치의 상태와 사용자 패턴에 대한 정보(이하, 사용자 패턴 정보라 함)를 요청하는 단계; 상기 사용자 패턴 정보를 분석하고 상기 저장 장치가 최적화 동작을 수행하도록 상기 저장 장치의 파라미터를 설정하는 단계; 및 상기 최적화 동작을 위한 명령을 상기 저장 장치에 제공하는 단계를 포함한다.
실시 예로서, 본 발명은 사용자에게 상기 최적화 동작을 위한 추천 레벨을 제공하는 단계를 더 포함할 수 있다. 본 발명은 상기 애플리케이션을 통해 사용자에게 상기 저장 장치의 진행 상황을 알려주고, 상기 저장 장치에 대한 동작 설정을 안내하는 단계를 더 포함할 수 있다. 본 발명은 상기 P/E 사이클을 통해 상기 저장 장치의 수명 예상치를 계산하고 사용자에게 제공하는 단계를 더 포함할 수 있다. 본 발명은 상기 저장 장치에 대한 자기 진단 및 자가 복구 동작을 수행하는 단계를 더 포함할 수 있다.
본 발명에 실시 예에 따른 메모리 시스템에 의하면, 사용자 인터페이스를 이용하여 저장 장치 상태(storage device's state)와 사용자 패턴(user pattern)을 분석하고, 사용자에게 저장 장치에 대한 최적화 정보(optimization information)를 제공할 수 있다. 본 발명은 사용자에게 적합하거나 사용자가 원하는 설정을 저장 장치에 반영함으로, 저장 장치의 성능을 높이고 신뢰성을 향상시킬 수 있다.
도 1은 본 발명의 실시 예에 따른 메모리 시스템을 보여주는 블록도이다.
도 2는 본 발명의 일 실시 예에 따른 메모리 시스템의 개념 블록도이다.
도 3은 도 2에 도시된 설정 제어부에 포함되는 사용자 인터페이스를 예시적으로 보여주는 도면이다.
도 4 내지 도 8은 본 발명의 일 실시 예에 따른 메모리 시스템의 동작을 설명하기 위한 도면들이다.
도 9는 본 발명의 다른 실시 예에 따른 메모리 시스템의 개념 블록도이다.
도 10은 본 발명의 실시 예에 따른 메모리 시스템을 보여주는 블록도이다.
도 11은 도 10에 도시된 메모리 시스템의 소프트웨어 계층 구조를 보여주는 블록도이다.
도 12는 도 10에 도시된 메모리 시스템의 사용자 패턴에 근거한 다이나믹 파라미터 제어 방법을 설명하기 위한 순서도이다.
도 13은 도 10에 도시된 메모리 시스템의 사용자 맞춤형 파라미터 가이드 방법을 설명하기 위한 순서도이다.
도 14는 도 10에 도시된 메모리 시스템의 자가 진단 및 자가 복구 동작을 설명하기 위한 도면이다.
도 15 및 도 16은 가비지 컬렉션 동작의 제어를 통해 저장 장치의 성능을 개선하는 방법을 설명하기 위한 타이밍도이다.
도 17 및 도 18은 애플리케이션을 설치하는 동작을 설명하기 위한 그래프 및 순서도이다.
도 19는 사용자의 UI 설정을 통해 저장 장치의 성능 향상 강도를 결정하는 방법을 설명하기 위한 그래프이다.
도 20은 사용자의 UI 설정을 예시적으로 보여주는 도면이다.
도 21은 메모리 시스템의 루프 동작을 설명하기 위한 순서도이다.
도 22는 본 발명의 실시 예에 따른 메모리 시스템이 모바일 장치에 사용된 경우를 보여주는 블록도이다.
도 23은 도 22에 도시된 모바일 장치의 소프트웨어 계층 구조를 보여주는 블록도이다.
도 24는 도 22에 도시된 모바일 장치의 애플리케이션을 통한 가비지 컬렉션 수행 방법을 설명하기 순서도이다.
도 25는 본 발명의 실시 예에 따른 메모리 시스템을 간략하게 도시한 블록도이다.
도 26은 도 25의 메모리 시스템의 응용 예를 보여주는 블록도이다.
도 27은 도 26을 참조하여 설명된 메모리 시스템을 포함하는 컴퓨팅 시스템을 보여주는 블록도이다.
이하에서, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여, 본 발명의 실시 예를 첨부된 도면을 참조하여 설명하기로 한다.
Ⅰ. 사용자 인터페이스를 통해 저장 장치를 제어하는 메모리 시스템
도 1은 본 발명의 실시 예에 따른 메모리 시스템을 보여주는 블록도이다. 도 1을 참조하면, 메모리 시스템(100)은 호스트(110)와 저장 장치(120)를 포함한다. 호스트(110)는 사용자 인터페이스(111)와 호스트 컨트롤러(112)를 포함하고, 저장 장치(120)는 불휘발성 메모리(121)와 스토리지 컨트롤러(122)를 포함한다.
도 1에 도시된 메모리 시스템(100)은 사용자 인터페이스(111)를 통해 저장 장치(120)의 동작 특성을 조절하거나 최적화 동작(optimization operation) 수행하도록 할 수 있다. 예를 들어, 메모리 시스템(100)은 저장 장치의 상태, 사용자 패턴, 수명 예측, 저장 장치의 최적화, OS 최적화, 펌웨어 업데이트, 저장 장치의 초기화 등에 관한 정보를 사용자 인터페이스(111)를 통해 사용자에게 제공하고, 사용자의 요구에 따라 저장 장치(120)를 제어할 수 있다.
본 발명에 따른 메모리 시스템(100)은 여러 가지 사용자 장치(user device)에 사용될 수 있다. 예를 들면, 본 발명은 솔리드 스테이트 드라이브(SSD; Solid State Drive)를 저장 장치로 사용하는 컴퓨터나 테블릿 PC 등에 사용될 수 있다. 또한, 본 발명은 eMMC나 micro SD와 같은 메모리 카드를 저장 장치로 사용하는 모바일 장치(mobile device) 등에 사용될 수 있다.
이하에서는 사용자 인터페이스(user interface)를 통해 저장 장치의 동작 특성을 조절하거나 최적화 작업을 수행함으로, 저장 장치의 성능을 개선하고 신뢰도를 향상하는 방법이 설명될 것이다.
Ⅱ. 사용자 인터페이스를 이용한 저장 장치의 동작 특성 조절 방법
도 2는 본 발명의 일 실시 예에 따른 메모리 시스템의 개념 블록도이다. 도 2를 참조하면, 메모리 시스템(1000)은 호스트(1100)와 저장 장치(1200)를 포함한다.
호스트(1100)는 설정 제어부(1110)와 호스트 컨트롤러(1120)를 포함한다. 설정 제어부(1110)는 입력 코맨드(INPUT COMMAND)를 제공받아 이에 대응하는 설정 코맨드(CONFIGURATION COMMAND)를 출력할 수 있다. 여기서, 입력 코맨드(INPUT COMMAND)는 사용 환경에 따라 저장 장치(1200)의 동작 특성을 조절하기 위한 코맨드일 수 있다. 이러한 입력 코맨드(INPUT COMMAND)는 외부로부터 제공받을 수 있다. 예를 들어, 설정 제어부(1110)에 포함된 사용자 인터페이스(UI; User Interface) 등을 통하여 사용자로부터 입력받을 수 있다.
호스트 컨트롤러(1120)는 호스트(1100)가 저장 장치(1200)에 저장된 컨텐츠를 소비하거나 저장 장치(1200)에 새로운 컨텐츠를 저장할 수 있도록, 스토리지 컨트롤러(1230)에 컨텐츠의 읽기(read)나 쓰기(write) 등에 관련된 코맨드를 출력할 수 있다. 여기서, 호스트(1100)가 저장 장치(1200)에 저장된 컨텐츠를 소비한다는 것은, 컨텐츠 중 이미지, 문서 등에 관해서는 그 내용을 디스플레이하거나 프린트하는 것을 의미하며, 컨텐츠 중 음악, 영상에 관해서는 그 음악 또는 영상을 재생(play-back) 하는 것을 의미할 수 있다. 한편, 컨텐츠 중 컴퓨터 프로그램과 같은 애플리케이션에 관해서는 그 애플리케이션을 설치하거나 실행하는 것을 의미할 수 있다.
한편, 호스트 컨트롤러(1120)로부터 이러한 컨텐츠와 관련된 코맨드를 제공받은 스토리지 컨트롤러(1230)는 제공받은 코맨드에 따라 저장 장치(1200)에 저장된 컨텐츠(1240)를 제어하게 된다. 예를 들어, 제공받은 코맨드가 읽기 코맨드라면 스토리지 컨트롤러(1230)는 저장 장치(1200)에 저장된 컨텐츠(1240)를 호스트(1100)에 제공하고, 제공받은 코맨드가 쓰기 코맨드라면 호스트(1100)로부터 새로운 컨텐츠를 제공받아 이를 저장 장치(1200)에 저장할 수 있다.
비록 도 2에서는, 설정 제어부(1110)와 호스트 컨트롤러(1120)가 서로 분리되어 도시되어 있으나, 본 발명이 도시된 것에 제한되는 것은 아니다. 즉, 설정 제어부(1110)와 호스트 컨트롤러(1120)는 필요에 따라 하나로 통합되어 구현될 수도 있다.
저장 장치(1200)는 적용 제어부(1210)와 스토리지 컨트롤러(1230)를 포함할 수 있다. 이러한 저장 장치(1200)에는 펌웨어(1220)와 컨텐츠(1240)가 저장될 수 있는데, 여기서, 펌웨어(1220)는 저장 장치(1200)에 설치되어 저장 장치(1200)를 구동하게 되며, 컨텐츠(1240)는 저장 장치(1200)에 포함된 별도의 메모리 영역(미도시)에 저장될 수 있다.
도 2를 참조하면, 펌웨어(1220)는 다수의 모듈(1221, 1222, 1223)을 포함할 수 있다. 각 모듈(1221, 1222, 1223)은 저장 장치(1200)의 동작에 관한 각 기능을 담당할 수 있다. 예를 들어, 제 1 모듈(1221)은 저장 장치(1200)의 읽기나 쓰기 등에 동작에 관련된 모듈일 수 있고, 제 2 모듈(1222)은 저장 장치(1200)의 동작 주파수에 관련된 모듈일 수 있으며, 제 3 모듈(1223)은 저장 장치(1200)의 가비지 컬렉션(garbage collection)에 관련된 모듈일 수 있다. 이 밖에도 펌웨어(1220)는 저장 장치(1200)의 동작 기능과 관련된 다수의 모듈을 더 포함할 수 있다.
한편, 각 모듈(1221, 1222, 1223)은 다수의 피쳐(feature)를 포함할 수 있다. 여기서, 하나의 피쳐는 펌웨어(1220)를 구성하는 작은 단위의 그룹을 의미하며, 다양한 피쳐들이 조합되어 하나의 기능 단위 모듈(1221, 1222, 1223)을 구현할 수 있다.
구체적으로 예를 들어, 제 1 모듈(1221)이 저장 장치(1200)의 읽기나 쓰기 등에 동작에 관련된 모듈이라고 할 때, 제 1 모듈(1221)은 호스트(1100)로부터 제공되는 코맨드(COMMAND) 중에서 읽기 코맨드(READ COMMAND)를 쓰기 코맨드(WRITE COMMAND)에 비해 우선적으로 처리하는 제 1 피쳐(FEATURE 1)와, 호스트(1100)로부터 제공되는 코맨드(COMMAND) 중에서 쓰기 코맨드(WRITE COMMAND)를 읽기 코맨드(READ COMMAND)에 비해 우선적으로 처리하는 제 2 피쳐(FEATURE 2)를 포함할 수 있다.
또한, 제 2 모듈(1222)이 저장 장치(1200)의 동작 주파수에 관련된 모듈이라고 할 때, 제 2 모듈(1222)은 저장 장치(1200)가 낮은 주파수(예를 들어, 낮은 클럭 주파수)로 구동되도록 하는 제 3 피쳐(FEATURE A)와, 저장 장치(1200)가 높은 주파수(예를 들어, 높은 클럭 주파수)로 구동되도록 하는 제 4 피쳐(FEATURE B)와, 저장 장치(1200)가 호스트(1100)로부터 제공받은 설정 주파수로 구동되도록 하는 제 5 피쳐(FEATURE C)를 포함할 수 있다.
또한, 제 3 모듈(1223)이 저장 장치(1200)의 가비지 컬렉션 동작과 관련된 모듈이라고 할 때, 제 3 모듈(1223)은 저장 장치(1200)가 가비지 컬렉션을 수행하도록 하는 제 6 피쳐(FEATURE a)와, 저장 장치(1200)의 가비지 컬렉션 기능을 정지시키는 제 7 피쳐(FEATURE b)와, 저장 장치(1200)가 호스트(1100)로부터 제공받은 설정 주기로 가비지 컬렉션을 수행하도록 하는 제 8 피쳐(FEATURE c)를 포함할 수 있다.
이러한 각각의 피쳐에 대한 인에이블 여부는 적용 제어부(1210)가 결정하게 된다. 구체적으로, 적용 제어부(1210)는 호스트(1100)의 설정 제어부(1110)로부터 설정 코맨드(CONFIGURATION COMMAND)를 제공받고 설정 코맨드(CONFIGURATION COMMAND)에 해당하는 피쳐를 인에이블 시킬 수 있다.
이렇게 설정 코맨드(CONFIGURATION COMMAND)에 따라 해당 피쳐가 인에이블되면, 저장 장치(1200)의 동작 특성이 결정되게 된다. 따라서, 스토리지 컨트롤러(1230)는 설정된 특성대로 저장 장치(1200)를 구동시키면서 저장된 컨텐츠(1240)를 호스트(1100)와 주고 받게 된다.
이하, 도 3 내지 도 8을 참조하여, 본 발명의 일 실시 예에 따른 메모리 시스템의 동작에 대해 보다 구체적으로 설명하도록 한다.
도 3은 도 2에 도시된 설정 제어부에 포함되는 사용자 인터페이스를 예시적으로 보여주는 도면이다. 도 4 내지 도 8은 본 발명의 일 실시 예에 따른 메모리 시스템의 동작을 설명하기 위한 도면들이다.
앞서 설명한 것과 같이, 호스트(1100)의 설정 제어부(1110)는 사용자로부터 입력 코맨드(INPUT COMMAND)를 제공받기 위한 사용자 인터페이스를 포함할 수 있다. 도 3은 이러한 사용자 인터페이스(1111)의 일 예이다.
도 3을 참조하면, 사용자 인터페이스(1111)는, 저장 장치(1200)가 읽기 코맨드(READ COMMAND)를 쓰기 코맨드(WRITE COMMAND)에 비해 우선적으로 처리하도록 하는 설정 코맨드(CONFIGURATION COMMAND)를 생성할 수 있는 제 1 버튼(111a)과, 저장 장치(1200)가 쓰기 코맨드(WRITE COMMAND)를 읽기 코맨드(READ COMMAND)에 비해 우선적으로 처리하도록 하는 설정 코맨드(CONFIGURATION COMMAND)를 생성할 수 있는 제 2 버튼(111b)과, 저장 장치(1200)가 읽기 코맨드(READ COMMAND)와 쓰기 코맨드(WRITE COMMAND) 중 그 어느 것에도 우선 순위를 두지않고 동작하도록 하는 설정 코맨드(CONFIGURATION COMMAND)를 생성할 수 있는 제 3 버튼(111c)을 포함할 수 있다.
만약, 저장 장치(1200)에 저장된 컨텐츠(1240)가 전차책(e-book)이라면, 호스트(1100)는 동작 중 저장 장치(1200)에 쓰기 코맨드(WRITE COMMAND)에 비해 읽기 코맨드(READ COMMAND)를 더 많이 보낼 것이다. 따라서, 이러한 사용 환경에서는, 저장 장치(1200)가 쓰기 코맨드(WRITE COMMAND)에 비해 읽기 코맨드(READ COMMAND)를 먼저 처리할 필요가 있다. 이때, 사용자는 사용자 인터페이스(1111)에 포함된 제 1 버튼(111a)을 인에이블(enable) 함으로써, 저장 장치(1200)가 읽기 코맨드(READ COMMAND)를 쓰기 코맨드(WRITE COMMAND)에 비해 우선적으로 처리하도록 하는 설정 코맨드(CONFIGURATION COMMAND)를 생성할 수 있다.
도 4를 참조하면, 이렇게 생성된 설정 코맨드(CONFIGURATION COMMAND)는 적용 제어부(1210)에 제공되고, 적용 제어부(1210)는 펌웨어(1220)에 포함된 제 1 모듈(1221)의 제 1 피쳐(FEATURE 1)를 인에이블 한다. 이때, 적용 제어부(1210)는 쓰기 코맨드(WRITE COMMAND)를 우선적으로 처리하게 하는 제 2 피쳐(FEATURE 2)를 디스에이블(disable)시킬 수도 있다.
만약, 앞서 설명한 예시와 다르게, 저장 장치(1200)에 저장된 컨텐츠(1240)가 문서 작성이 가능한 도큐먼트(document)라면, 호스트(1100)는 동작 중 저장 장치(1200)에 읽기 코맨드(READ COMMAND)에 비해 쓰기 코맨드(WRITE COMMAND)를 더 많이 보낼 것이다. 이 경우, 사용자는 제 2 버튼(111b)을 인에이블시킬 수 있으며, 앞서 설명한 과정과 유사한 과정을 통해 적용 제어부(1210)는 제 1 모듈(1221)의 제 2 피쳐(FEATURE 2)를 인에이블시키고, 제 1 피쳐(FEATURE 1)를 디스에이블시킬 수 있다.
마지막으로, 저장 장치(1200)에 저장된 컨텐츠(1240)의 특성에 비추어볼 때, 읽기 동작과 쓰기 동작 중 어느 하나가 편중되지 않을 것으로 판단된다면, 사용자는 제 3 버튼(111c)을 인에이블시킬 수 있으며, 앞서 설명한 과정과 유사한 과정을 통해 적용 제어부(1210)는 제 1 모듈(1221)의 제 1 피쳐(FEATURE 1)와 제 2 피쳐(FEATURE 2)를 모두 인에이블시키거나, 모두 디스에이블시킬 수 있다.
다시 도 3을 참조하면, 사용자 인터페이스(1111)는, 저장 장치(1200)를 제 1 주파수로 구동하도록 하는 설정 코맨드(CONFIGURATION COMMAND)를 생성할 수 있는 제 4 버튼(111d)과, 저장 장치(1200)를 제 1 주파수와 다른 제 2 주파수로 구동하도록 하는 설정 코맨드(CONFIGURATION COMMAND)를 생성할 수 있는 제 5 버튼(111e)과, 저장 장치(1200)를 제 2 주파수와 다른 제 3 주파수로 구동하도록 하는 설정 코맨드(CONFIGURATION COMMAND)를 생성할 수 있는 제 6 버튼(111f)을 포함할 수 있다. 그리고 사용자 인터페이스(1111)는 추가로 사용자로부터 원하는 설정 구동 주파수를 직접 입력받을 수 있는 제 1 입력부(111g)를 포함할 수 있다.
만약, 저장 장치(1200)의 구동 환경이 온도가 높은 환경이라면 저장 장치(1200)를 높은 주파수로 지속적으로 구동할 경우, 저장 장치(1200)의 성능이 악화될 수 있다. 따라서, 이 경우, 사용자는 사용자 인터페이스(1111)에 포함된 제 6 버튼(111f)을 인에이블시킴으로 써, 저장 장치(1200)가 상대적으로 낮은 구동 주파수에서 구동하도록 하는 설정 코맨드(CONFIGURATION COMMAND)를 생성할 수 있다.
도 5를 참조하면, 이렇게 생성된 설정 코맨드(CONFIGURATION COMMAND)는 적용 제어부(1210)에 제공되게 되고, 적용 제어부(1210)는 펌웨어(1220)에 포함된 제 2 모듈(1222)의 제 4 피쳐(FEATURE B)를 인에이블시키고, 제 3 피쳐(FEATURE A)를 디스에이블시킬 수 있다.
만약, 반대로 저장 장치(1200)의 구동 환경이 온도가 낮은 환경이라면 저장 장치(1200)를 높은 주파수로 구동하여 열을 발생시킴으로써 저장 장치(1200)의 성능을 유지해야할 필요가 있다. 이때, 사용자는 사용자 인터페이스(1111)에 포함된 제 4 버튼(111d)을 인에이블시킴으로써, 반대로 제 4 피쳐(FEATURE B)를 디스에이블시키고, 제 3 피쳐(FEATURE A)를 인에이블시킬 수 있다. 별도로 저장 장치(1200)의 구동 주파수를 설정할 필요가 없다면, 사용자는 사용자 인터페이스(1111)에 포함된 제 5 버튼(111e)을 인에이블시킴으로써, 제 3 피쳐(FEATURE A)와 제 4 피쳐(FEATURE B)를 모두 디스에이블시키거나, 모두 인에이블시킬 수 있다.
그리고, 사용자가 저장 장치(1200)의 구동 주파수를 수동으로 설정하고자 한다면, 사용자는 사용자 인터페이스(1111)에 포함된 제 1 입력부(111g)에 설정 주파수를 입력함으로써 저장 장치(1200)가 설정 주파수에서 구동하도록 하는 설정 코맨드(CONFIGURATION COMMAND)를 생성할 수 있다.
도 6을 참조하면, 이렇게 생성된 설정 코맨드(CONFIGURATION COMMAND)는 적용 제어부(1210)에 제공되게 되고, 적용 제어부(1210)는 펌웨어(1220)에 포함된 제 2 모듈(1222)의 제 5 피쳐(FEATURE C)를 인에이블시킬 수 있다. 이 경우, 저장 장치(1200)는 호스트(1100)로부터 제공받은 설정 주파수로 구동되게 된다.
다시 도 3을 참조하면, 사용자 인터페이스(1111)는, 저장 장치(1200)가 가비지 컬렉션을 수행하도록 하는 설정 코맨드(CONFIGURATION COMMAND)를 생성할 수 있는 제 7 버튼(111h)과, 저장 장치(1200)가 가비지 컬렉션을 수행하지 않도록 하는 설정 코맨드(CONFIGURATION COMMAND)를 생성할 수 있는 제 8 버튼(111i)을 포함할 수 있다. 그리고 사용자 인터페이스(1111)는 추가적으로 사용자로부터 원하는 가비지 컬렉션 주기를 직접 입력받을 수 있는 제 2 입력부(111j)를 포함할 수 있다.
만약, 저장 장치(1200)의 상태가 가비지 컬렉션이 필요한 상태라면, 사용자는 사용자 인터페이스(1111)에 포함된 제 7 버튼(111h)을 인에이블 함으로써, 저장 장치(1200)에서 가비지 컬렉션이 수행되도록 하는 설정 코맨드(CONFIGURATION COMMAND)를 생성할 수 있다.
도 7을 참조하면, 이렇게 생성된 설정 코맨드(CONFIGURATION COMMAND)는 적용 제어부(1210)에 제공되게 되고, 적용 제어부(1210)는 펌웨어(1220)에 포함된 제 3 모듈(1223)의 제 6 피쳐(FEATURE a)를 인에이블시키고, 제 7 피쳐(FEATURE b)를 디스에이블시킬 수 있다.
만약, 저장 장치(1200)의 상태가 가비지 컬렉션이 필요하지 않은 상태라면, 사용자는 사용자 인터페이스(1111)에 포함된 제 8 버튼(111i)을 인에이블시킴으로써, 반대로 제 6 피쳐(FEATURE a)를 디스에이블시키고, 제 7 피쳐(FEATURE b)를 인에이블시킬 수 있다.
그리고, 사용자가 저장 장치(1200)의 가비지 컬렉션 주기를 수동으로 설정하고자 한다면, 사용자는 사용자 인터페이스(1111)에 포함된 제 2 입력부(111j)에 설정 주기를 입력함으로써 저장 장치(1200)가 설정 주기에 따라 가비지 컬렉션을 수행하도록 하는 설정 코맨드(CONFIGURATION COMMAND)를 생성할 수 있다.
도 8을 참조하면, 이렇게 생성된 설정 코맨드(CONFIGURATION COMMAND)는 적용 제어부(1210)에 제공되게 되고, 적용 제어부(1210)는 펌웨어(1220)에 포함된 제 3 모듈(1223)의 제 8 피쳐(FEATURE c)를 인에이블시킬 수 있다. 이 경우, 저장 장치(1200)는 호스트(1100)로부터 제공받은 설정 주기에 따라 가비지 컬렉션을 수행하게 된다.
이상에서는 예시적으로 몇몇 피쳐의 기능을 들어, 본 발명의 일 실시 예에 따른 메모리 시스템의 동작에 대해 설명하였으나, 본 발명이 이러한 예시들에 제한되는 것은 아니다. 본 발명의 일 실시 예에 따른 메모리 시스템의 동작은 앞서 설명한 예시들 외에도 얼마든지 확장 가능하다. 또한, 도 3에서는 설정 제어부(1110)에 포함될 수 있는 사용자 인터페이스(1111)를 예시적으로 도시하였으나, 이러한 사용자 인터페이스(1111)의 형태 역시 얼마든지 변형 가능하다.
한편, 앞서 설명한 예시들에서는 입력 코맨드(INPUT COMMAND)를 사용자로부터 사용자 인터페이스(1111)를 통해 입력받는 것을 예로 들었으나, 이 역시 얼마든지 변형될 수 있다. 예를 들어, 호스트(1100) 또는 저장 장치(1200)는 저장 장치(1200)의 상태를 감지하는 감지부(미도시)를 더 포함하고, 이러한 감지부(미도시)로부터 입력 코맨드(INPUT COMMAND)가 생성되어, 호스트(1100)의 설정 제어부(1110)에 제공될 수도 있다.
또한, 비록 도 2에서는, 적용 제어부(1210)와 스토리지 컨트롤러(1230)가 서로 분리되어 도시되어 있으나, 본 발명이 도시된 것에 제한되는 것은 아니다. 즉, 적용 제어부(1210)와 스토리지 컨트롤러(1230)는 필요에 따라 하나로 통합되어 구현될 수도 있다.
본 발명의 실시 예에서, 저장 장치(1200)는 예를 들어, 스토리지 컨트롤러와 불휘발성 메모리가 하나의 반도체 장치로 집적된 솔리드 스테이트 드라이브(SSD, Solid State Drive)일 수 있으나, 본 발명이 이에 제한되는 것은 아니다.
다시 도 2를 참조하면, 호스트(1100)의 설정 제어부(1110)는 제 1 인터페이스를 이용하여 설정 코맨드(CONFIGURATION COMMAND)를 저장 장치(1200)의 적용 제어부(1210)에 제공할 수 있다. 그리고 호스트(1100)의 호스트 컨트롤러(1120)는 저장 장치(1200)의 스토리지 컨트롤러(1230)와 제 2 인터페이스를 이용하여 코맨드(COMMAND)와 컨텐츠(CONTENTS)를 서로 주고 받을 수 있다.
본 발명의 몇몇 실시 예에서, 이러한 제 1 인터페이스와 제 2 인터페이스는 서로 다른 인터페이스일 수 있다. 예를 들어, 제 1 인터페이스와 제 2 인터페이스 중 어느 하나는 블루투스(Bluetooth), NFC(Near Field Communication), RFID(Radio Frequency Identification) 등의 근거리 무선 통신 방식의 인터페이스일 수 있고, 제 1 인터페이스와 제 2 인터페이스 중 다른 하나는 USB(Universial Serial Bus), ATA(AT attachment), SATA(Serial ATA) 등의 유선 통신 방식의 인터페이스일 수 있다.
한편 본 발명의 다른 몇몇 실시 예에서, 이러한 제 1 인터페이스와 제 2 인터페이스는 서로 동일한 인터페이스일 수 있다. 예를 들어, 제 1 인터페이스와 제 2 인터페이스는 SATA(Serial Advanced Technology Attachment) 인터페이스일 수 있다. 이 경우, 설정 코맨드(CONFIGURATION COMMAND)는 SATA 코맨드 형태로 설정 제어부(1110)로부터 적용 제어부(1210)에 제공될 수 있다.
도 9는 본 발명의 다른 실시 예에 따른 메모리 시스템의 개념 블록도이다. 도 9를 참조하면, 메모리 시스템(2000)은 호스트(2100), 제 1 저장 장치(2300), 및 제 2 저장 장치(2400)를 포함할 수 있다. 호스트(1100)는 앞서 설명한 실시 예의 호스트(도 2의 1100)와 동일한 구성으로 이루어질 수 있다. 제 1 및 제 2 저장 장치(2300, 2400) 역시, 앞서 설명한 저장 장치(도 2의 1200)와 동일한 구성으로 이루어질 수 있다. 도 9에서는 설명의 편의를 위해 도 2의 일부 구성을 생략하였다.
호스트(2100)의 설정 제어부(2110)는 입력 코맨드(INPUT COMMAND)를 제공받아 이에 대응하는 제 1 설정 코맨드(CONFIGURATION COMMAND-1) 및 제 2 설정 코맨드(CONFIGURATION COMMAND-2)를 출력할 수 있다. 여기서, 제 1 설정 코맨드(CONFIGURATION COMMAND-1)는 제 1 저장 장치(2300)에 포함된 다수의 피쳐에 대한 인에이블 여부를 결정하는 코맨드이고, 제 2 설정 코맨드(CONFIGURATION COMMAND-2)는 제 2 저장 장치(2400)에 포함된 다수의 피쳐에 대한 인에이블 여부를 결정하는 코맨드일 수 있다.
제 1 저장 장치(2300)에 포함된 제 1 적용 제어부(2310)는 설정 제어부(2110)로부터 제 1 설정 코맨드(CONFIGURATION COMMAND-1)를 제공받아 각 피쳐(FEATURE 1~4)의 인에이블 여부를 결정한다. 그리고 제 2 저장 장치(2400)에 포함된 제 2 적용 제어부(2410)는 설정 제어부(2110)로부터 제 2 설정 코맨드(CONFIGURATION COMMAND-2)를 제공받아 각 피쳐(FEATURE 1~4)의 인에이블 여부를 결정한다.
여기서, 제 1 설정 코맨드(CONFIGURATION COMMAND-1)와 제 2 설정 코맨드(CONFIGURATION COMMAND-2)는 제 1 저장 장치(2300)와 제 2 저장 장치(2400)가 작동하는 환경에 따라 서로 다를 수 있다. 따라서, 도시된 것과 같이 제 1 저장 장치(2300)의 인에이블된 피쳐(FEATURE 1, 3, 4)와 제 2 저장 장치(2400)의 인에이블된 피쳐(FEATURE 2)는 서로 다를 수 있다.
예를 들어, 제 1 저장 장치(2300)에 저장된 컨텐츠가 전차책(e-book)이라면, 제 1 적용 제어부(2310)는 제 1 설정 코맨드(CONFIGURATION COMMAND-1)에 따라, 펌웨어 모듈(2320)에 포함된 제 1 피쳐(FEATURE 1)를 인에이블시키고, 제 2 피쳐(FEATURE 2)를 디스에이블시킬 수 있다. 따라서 제 1 저장 장치(2300)에 입력되는 커맨드(COMMAND) 중 읽기 커맨드(READ COMMAND)가 먼저 처리될 수 있다.
그리고 제 2 저장 장치(2400)에 저장된 컨텐츠가 문서 작성이 가능한 도큐먼트라면, 제 2 적용 제어부(2410)는 제 2 설정 코맨드(CONFIGURATION COMMAND-2)에 따라, 펌웨어 모듈(2420)에 포함된 제 2 피쳐(FEATURE 2)를 인에이블시고, 제 1 피쳐(FEATURE 1)를 디스에이블시킬 수 있다. 따라서 제 2 저장 장치(2400)에 입력되는 커맨드(COMMAND) 중 쓰기 커맨드(WRITE COMMAND)가 먼저 처리될 수 있다.
이처럼, 제 1 저장 장치(2300)와 제 2 저장 장치(2400)가 작동하는 환경에 따라, 제 1 저장 장치(2300)의 인에이블된 피쳐(FEATURE 1, 3, 4)와 제 2 저장 장치(2400)의 인에이블된 피쳐(FEATURE 2)는 서로 얼마든지 다르게 변형될 수 있다.
Ⅲ. 사용자 인터페이스를 이용한 저장 장치의 최적화 동작 방법
본 발명의 실시 예에 따른 메모리 시스템은 사용자 인터페이스(user interface)를 이용하여 저장 장치에 대한 최적화 동작(optimization operation)을 수행할 수 있다. 본 발명은 저장 장치 상태(storage device's state)와 사용자 패턴(user pattern)을 분석하고, 사용자에게 저장 장치에 대한 최적화 정보(optimization information)를 제공할 수 있다. 본 발명에 의하면, 사용자에게 적합하거나 사용자가 원하는 설정을 저장 장치에 반영할 수 있고, 이로 인해 저장 장치의 성능을 높이고 수명을 연장하며 신뢰성을 향상시킬 수 있다.
도 10은 본 발명의 실시 예에 따른 메모리 시스템을 보여주는 블록도이다. 도 10을 참조하면, 메모리 시스템(3000)은 호스트(3100)와 저장 장치(3200)를 포함한다. 호스트(3100)는 사용자 인터페이스(3110)와 운영 체제(OS; Operating System, 3120)를 포함한다. 운영 체제(3120)에는 파일 시스템(File System, 3121)이나 입출력 드라이버(I/O Driver, 3122) 등이 포함될 수 있다.
사용자 인터페이스(3110)는 호스트(3100)에서 실행되는 다양한 응용 프로그램들을 나타낸다. 사용자 인터페이스(3110)는 일 예로, 애플리케이션(application)일 수 있다. 사용자는 애플리케이션(application)을 통해 OS 최적화, 펌웨어 업데이트, 저장 장치의 초기화, 오버 프로비져닝(over provisioning) 영역 조절 등의 기능을 수행하고, 저장 장치 상태(storage device's state)와 사용자 패턴(user pattern)을 분석할 수 있다.
운영 체제(3120)는 호스트(3100)의 소프트웨어 및/또는 하드웨어 자원(resource)을 제어하며, 프로세서(도시되지 않음)에 의한 프로그램 실행을 관리할 수 있다. 파일 시스템(3121)은 파일 또는 데이터를 저장 장치(3200)에 저장하는 경우에 이를 조직화하고 관리하는 역할을 한다. 입출력 드라이버(3122)는 저장 장치(3200)가 호스트(3100)와 호환하여 동작할 수 있도록 한다.
계속해서 도 10을 참조하면, 저장 장치(3200)는 플래시 메모리를 기반으로 하는 데이터 저장 장치로서, 플래시 메모리(3210)와 스토리지 컨트롤러(3220)를 포함할 수 있다. 저장 장치(3200)는 eMMC(embeded MMC), eSSD(embeded SSD), 메모리 카드, ATA 버스 장치, SATA 버스 장치, 메모리 스틱 장치, 하이브리드 드라이브 장치, 또는 범용 직렬 버스 플래시 장치일 수 있다.
플래시 메모리(3210)는 어드레스/데이터 버스를 통해 스토리지 컨트롤러(3220)와 연결될 수 있다. 플래시 메모리(3210)는 메모리 블록 단위로 소거 동작이 수행되고, 페이지 단위로 읽기 또는 쓰기 동작이 이루어진다. 플래시 메모리(3210)는 데이터 영역(3211)과 메타 영역(3212)으로 구분될 수 있다. 데이터 영역(3211)에는 일반적인 사용자 데이터 또는 메인 데이터가 저장되고, 메타 영역(3212)에는 사용자 데이터 외에 플래시 메모리(3210)를 구동하는 데 필요한 메타 데이터(예를 들면, 어드레스 맵핑 정보)가 저장될 수 있다.
스토리지 컨트롤러(3220)는 플래시 메모리(3210)의 읽기, 쓰기, 소거 동작 등을 제어한다. 스토리지 컨트롤러(3220)는 중앙처리장치(CPU)와 랜덤 액세스 메모리(RAM)를 포함할 수 있다. 중앙처리장치(CPU)는 랜덤 액세스 메모리(RAM)를 이용하여 펌웨어(3221, firmware)를 구동할 수 있다. 펌웨어(3221)는 소프트웨어와 하드웨어가 결합한 것일 수 있다. 저장 장치(3200)는 펌웨어 업데이트(firmware update)를 통해 성능이 향상될 수 있다.
도 11은 도 10에 도시된 메모리 시스템의 소프트웨어 계층 구조를 보여주는 블록도이다. 도 11을 참조하면, 본 발명의 실시 예에 따른 메모리 시스템(도 10 참조, 3000)은 애플리케이션(3110), 파일 시스템(3121), 입출력 드라이버(3122), 그리고 펌웨어(3221) 순으로 구성되는 소프트웨어 계층 구조를 갖는다.
여기에서, 사용자 인터페이스(3110), 파일 시스템(3121), 입출력 드라이버(3122)는 호스트(3100)에서 구동되며, 펌웨어(3221)는 저장 장치(3200)에서 구동된다. 펌웨어(3221)는 플래시 메모리(3210)의 일부 영역(예를 들면, 메타 영역)에 저장되어 있다가, 구동 중에 저장 장치(3200)의 램(RAM)으로 옮겨와 동작한다. 저장 장치(3200)에 따라, 펌웨어(3221)가 호스트(3100)로 옮겨와 동작할 수도 있다.
사용자는 사용자 인터페이스(3110)를 통해 저장 장치(3200)에 최적화 동작을 위한 명령(이하, 최적화 명령이라 함)을 내릴 수 있다. 사용자 인터페이스(3110)는 입출력 드라이버(3122)에 최적화 명령을 요청하고, 입출력 드라이버(3122)는 저장 장치(3200)의 펌웨어(3221)로 최적화 명령을 내릴 수 있다. 사용자 인터페이스(3110)는 사용자 패턴 분석이 필요할 때에는 운영 체제(3120)에 요청하여 사용자 패턴을 수집할 수 있다. 그리고 저장 장치(3200)의 상태 정보가 필요할 때에는 입출력 드라이버(3122)를 통해 저장 장치(3200)의 펌웨어(3221)에 요청하여 데이터를 수집할 수 있다.
본 발명에 따른 메모리 시스템(3000)은 사용자 인터페이스(3110)를 통해 저장 장치 상태와 사용자 패턴을 수집하고, 저장 장치(3200)에 최적화 명령(optimization command)을 내릴 수 있다. 본 발명은 사용자 패턴 분석을 통해 얻은 정보를 기초로 저장 장치(3200)를 제어할 수 있다. 사용자에게 적합하거나 사용자가 원하는 설정을 저장 장치(3200)에 반영함으로 저장 장치(3200)의 성능을 높이고 신뢰성을 향상시킬 수 있다.
본 발명에 따른 메모리 시스템(3000)은 구체적으로, 사용자 패턴에 근거한 다이나믹 파라미터 제어(user pattern-based dynamic parameter control), 사용자 맞춤형 파라미터 가이드(user-specific parameter guide), 그리고 자기 진단과 자기 복구(self-diagnosis & self-healing)와 같은 최적화 동작을 통해 저장 장치(3200)의 성능 및 신뢰성을 높일 수 있다. 본 발명에 메모리 시스템(3000)의 최적화 동작 방법은 도 12 내지 도 15를 통해 좀 더 상세하게 설명될 것이다.
도 12는 도 10에 도시된 메모리 시스템의 사용자 패턴에 근거한 다이나믹 파라미터 제어 방법을 설명하기 위한 순서도이다. 사용자 패턴에 근거한 다이나믹 파라미터 제어 방법에 의하면, 메모리 시스템(3000)은 사용자 패턴 정보(예를 들면, 메모리 사용량, 메모리 접근 형태 또는 접근 시간)을 분석하고, 저장 장치(3200)의 최적화 동작에 필요한 파라미터 또는 설정 값들을 결정하고, 이를 저장 장치(3200)에 제공한다.
S110 단계에서, 사용자 패턴(user pattern)을 분석할 필요가 있는지가 판단된다. 사용자 패턴 분석에 대한 필요성은 사용자가 판단하거나, 메모리 시스템(3000)이 자체적으로 판단할 수 있다. 사용자 패턴을 분석할 필요가 있다고 판단되면, S120 단계가 진행된다.
S120 단계에서, 사용자 인터페이스(3110) (또는 애플리케이션)을 통해 저장 장치(3200)에 저장 장치 상태 정보(예를 들면, P/E 사이클 정보)를 요청하고 운영체제(3120)에 사용자 패턴 정보를 요청한다. 즉, 사용자 패턴과 저장 장치 상태에 대한 분석이 필요할 경우에, 애플리케이션을 통해 입출력 드라이버(3122)와 펌웨어(3221)에 사용자 패턴 정보와 저장 장치 상태 정보를 요청할 수 있다.
여기에서, 사용자 패턴 정보(user pattern information)는 메모리 사용량(amount of memory usage), 메모리 접근 형태(memory access type), 메모리 접근 시간(memory access time) 등과 같은 사용자의 메모리 사용 이력(history)을 의미하고, 저장 장치 상태 정보는 P/E 사이클 정보 등을 의미한다.
S130 단계에서, 사용자 패턴 정보와 저장 장치 상태 정보를 분석하고 저장 장치(3200)의 다이나믹 파라미터를 결정한다. 여기에서, 다이나믹 파라미터(dynamic parameters)는 저장 장치(3200)가 최적화 동작(optimization operation)을 수행하는 데 필요한 설정 값으로, 그 예로는 가비지 컬렉션 레벨(garbage collection level), 웨어 레벨링 레벨(wear-leveling level), 수명 허용 범위 등이 있다.
가비지 컬렉션(garbage collection)은 플래시 메모리(3210) 내에서 프리 블록(free block)을 확보하는 동작이다. 플래시 메모리(3210)는 기본적인 저장 단위(예를 들면, 메모리 블록이나 페이지 단위)로 정리된 상태에 있을 때 효율적으로 동작할 수 있다. 그러나 플래시 메모리(3210)가 오랜 시간 동안 다양한 크기의 데이터를 쓰거나 삭제하면, 데이터 저장 공간이 조각난 상태로 될 수 있다. 이때 플래시 메모리(3210)는 가비지 컬렉션을 통해 불필요한 데이터를 지우고 유효한 데이터를 모음으로 프리 블록을 확보해 놓을 수 있다. 가비지 컬렉션 레벨(garbage collection level)은 가비지 컬렉션 동작의 수행 빈도나 확보할 프리 블록의 수를 의미한다.
웨어 레벨링(wear-leveling)은 플래시 메모리(3210)의 특정 메모리 블록이 다른 메모리 블록들보다 빠르게 마모되는 것을 방지하기 위해, 소거 동작을 전체 메모리 블록에 분산하는 동작이다. 플래시 메모리(3210)는 웨어 레벨링을 통해 저장 장치(3200)의 수명을 늘릴 수 있다. 웨어 레벨링 레벨(wear-leveling level)은 웨어 레벨링 동작의 수행 빈도를 의미한다.
수명 허용 범위는 현재 기대되는 플래시 메모리(3210)의 수명 예상치를 가리킨다. 저장 장치(3200)는 사용자의 신뢰도를 보장하기 위한 수명 예상치(expected value of lifetime)를 가지며, 사용자 패턴과 저장 장치 상태에 대한 분석을 통해 수명 예상치를 알아낼 수 있다.
S140 단계에서, 호스트(3100)는 저장 장치(3200)에 최적화 명령을 내리고, 저장 장치(3200)는 최적화 동작을 수행한다. 여기에서, 저장 장치(3200)의 최적화 동작은 가비지 컬렉션(garbage collection), 웨어 레벨링(wear-leveling), 펌웨어(firmware) 설정 값 조정 등과 같은 동작을 의미하며, 이를 통해 저장 장치(3200)의 성능이나 신뢰도가 향상될 수 있다.
본 발명의 실시 예에 따른 메모리 시스템(3000)은 사용자 패턴 정보(예를 들면, 사용량, 접근 형태, 접근 시간)를 분석하고, 저장 장치(3200)의 최적화 동작에 필요한 설정 값들을 결정하고, 이를 저장 장치(3200)에 제공함으로, 저장 장치(3200)의 성능을 개선하거나 신뢰도를 향상시킬 수 있다.
도 13은 도 10에 도시된 메모리 시스템의 사용자 맞춤형 파라미터 가이드 방법을 설명하기 위한 순서도이다. 사용자 맞춤형 파라미터 가이드 방법에 의하면, 메모리 시스템(3000)은 사용자 인터페이스(3110)를 통해 저장 장치(3200)의 성능과 수명의 예상치를 사용자에게 제공함으로, 사용자가 저장 장치(3200)를 최적으로 사용하게 할 수 있다.
S210 단계에서, 사용자 맞춤형 파라미터를 설정할 필요가 있는지가 판단된다. 사용자 맞춤형 파라미터 설정에 대한 필요성은 사용자가 직접 판단하거나, 메모리 시스템(3000)이 자체적으로 판단할 수 있다. 사용자 맞춤형 파라미터를 설정할 필요가 있다고 판단되면, S220 단계가 진행된다.
S220 단계에서, 사용자 인터페이스(3110)를 통해 저장 장치(3200)의 수명(lifetime)과 성능(performance)에 관한 현재 상태 정보(current state information)를 사용자에게 제공한다. 메모리 시스템(3000)은 저장 장치(3200)의 수명이나 성능 등에 관한 이력 데이터(history data)를 분석하고, 사용자에게 저장 장치(3200)의 현재 상태 정보를 제공한다.
S230 단계에서, 사용자 인터페이스(3110)를 통해 사용자의 설정에 따른 저장 장치(3200)의 수명과 성능 변화를 예측하고, 수명 예상치(expected value of lifetime)를 사용자에게 제공한다. 메모리 시스템(3000)은 저장 장치(3200)의 수명이나 성능에 관한 현재 상태 정보와 더불어, 수명이나 성능 변화에 대한 예측 값을 사용자에게 제공할 수 있다.
S240 단계에서, 메모리 시스템(3000)은 사용자 인터페이스(3110)를 통해, 저장 장치(3200)가 최적으로 동작할 수 있도록 저장 장치(3200)의 파라미터를 설정하는 것을 사용자에게 안내할 수 있다.
메모리 시스템(3000)은 저장 장치(3200)의 현재 및 예측 상태 정보를 기초로 저장 장치(3200)가 최적으로 동작할 수 있는 추천 레벨(recommend level)을 사용자에게 알려줄 수 있다. 사용자는 이를 토대로 자신이 원하는 방향으로 저장 장치(3200)의 동작을 설정할 수 있다. 예를 들어, 가비지 컬렉션(garbage collection)의 수행 빈도 및 수행 시간이나 저장 장치(3200)의 신뢰성 보장 기간 등을 설정할 수 있다.
도 14는 도 10에 도시된 메모리 시스템의 자가 진단 및 자가 복구 동작을 설명하기 위한 도면이다. 자가 진단 및 자가 복구(self-diagnosis and self-healing) 동작에 의하면, 저장 장치(3200)에 대한 많은 데이터 입출력으로 인해 성능과 신뢰도가 떨어졌을 때, 메모리 시스템(3000)은 이를 스스로 진단하고 성능을 복구할 수 있는 연산을 수행하도록 저장 장치(3200)에 명령을 내릴 수 있다.
도 14에는 자가 복구(self healing) 방법이 예시적으로 도시되어 있다. 저장 장치(3200)의 성능을 자가 복구하는 방법에는 여러 가지가 있을 수 있다. 도 14에서는 데이터 재배치를 통한 자가 복구(self healing by data rearrangement)와 파라미터 변경을 통한 자가 복구(self healing by changing parameters)가 예시적으로 도시되어 있다.
데이터 재배치에 의한 자가 복구(self healing by data rearrangement)에는, 자주 접근되는 데이터(hot data)와 자주 접근되지 않는 데이터(cold data)의 위치를 바꾸어 주는 핫/콜드 데이터 스위치(hot/cold data switch), 에러가 발생한 데이터의 위치를 변경함으로 에러가 주변에 영향을 주지 않도록 억제하는 데이터 리클레임(data reclaim), 그리고 사용자의 가용 공간의 크기를 조절함으로 펌웨어에 주어지는 예비 공간을 확보하는 오버 프로비져닝(over-provisioning) 조절 등이 있다.
설정 값 변경에 의한 자가 복구(self healing by changing parameters)에는, 데이터의 물리적 상태를 0과 1로 구분하는데 필요한 읽기 레벨(read level)을 변경하는 디폴트 파라미터 변경이나, 데이터의 프로그램 조건을 변경하는 방법 등이 있다.
본 발명에 따른 메모리 시스템(3000)은 사용자 인터페이스(3110)를 통해 자가 복구 방법을 설정하거나 변경할 수 있다. 이를 위해 본 발명은 핫/콜드 데이터 스위치, 데이터 리클레임, 오버 프로비져닝, 디폴트 파라미터 변경, 데이터의 프로그램 조건 변경을 위한 모드(mode)를 사용자 인터페이스(3110)에 포함할 수 있다.
이상에서 설명한 바와 같이, 본 발명의 실시 예에 따른 메모리 시스템(3000)은 저장 장치(3200)의 성능과 신뢰도를 향상시키는 서비스를 애플리케이션(application) 형태로 제공하고, OS 최적화, 펌웨어 업데이트, 저장 장치 초기화, 오버 프로비져닝(over provisioning) 영역 조절 등의 기능을 수행할 수 있다. 또한, 본 발명은 저장 장치(3200)를 관리하는데 있어서, 사용자의 의도와 벤치마킹 결과 이외에 사용자 패턴과 저장 장치 상태를 고려하여 저장 장치(3200)를 관리할 수 있다.
본 발명은 저장 장치(3200)에 대한 최적화 동작을 수행하기 위해 가비지 컬렉션(garbage collection), 웨어 레벨링(wear leveling), 펌웨어(firmware) 설정 값 조정 등의 작업을 활용할 수 있으며, 작업 진행 상태 정보와 작업 진행 후 기대 효과 정보를 사용자에게 제공할 수 있다.
도 15 및 도 16은 가비지 컬렉션 동작의 제어를 통해 저장 장치의 성능을 개선하는 방법을 설명하기 위한 타이밍도이다. 도 15 및 도 16에서, t1~t2 구간은 저장 장치(3200)에 데이터가 저장되는 쓰기 시간(write time)이다. 그리고 t0~t1과 t2~t3 구간은 호스트(3100)의 유휴 시간(idle time)이다.
도 15에서는 저장 장치(3200)의 펌웨어가 자체적으로 가비지 컬렉션을 수행하는 예가 도시되어 있다. 일반적으로 가비지 컬렉션 동작은 쓰기 요청(write request) 시에 프리 블록(free block)을 만들기 위해 수행된다. 쓰기 요청 시에 프리 블록이 충분하지 않으면, 저장 장치(3200)는 쓰기 시간(t1~t2) 동안에 가비지 컬렉션 동작(ta~tb)을 수행하게 된다. 이것으로 인해 저장 장치(3200)의 쓰기 성능이 나빠질 수 있다.
도 16에서는 사용자 인터페이스(3110)를 통해 가비지 컬렉션 동작을 제어하는 예가 도시되어 있다. 도 16을 참조하면, 가비지 컬렉션 동작 시간(ta~tb)은 호스트(3100)의 유휴 시간(t0~t1)에 수행된다. 즉, 메모리 시스템(3000)은 사용자 인터페이스(3110)를 통해, 쓰기 동작 이전에 호스트(3100)의 유휴 시간을 활용하여 가비지 컬렉션 동작을 수행하도록 제어할 수 있다. 도 16을 참조하면, 메모리 시스템(3000)은 Tg 만큼의 쓰기 시간을 줄일 수 있고, 프리 블록의 수와 무관하게 최적의 쓰기 성능을 가질 수 있다.
본 발명의 실시 예에 따른 메모리 시스템(3000)은 애플리케이션 설치, 사용자 인터페이스(UI) 설정, 루프 동작(loop operation) 과정을 통해 저장 장치(3200)에 대한 최적화 동작을 수행할 수 있다.
도 17은 애플리케이션을 설치하는 동작을 설명하기 위한 그래프이다. 도 17에서, 가로축은 저장 장치(3200)의 사용 기간을 해(year) 단위로 표시한 것이고, 세로축은 P/E 사이클을 표시한 것이다.
저장 장치(3200)는 제조사 별로 정해진 P/E 사이클 보증 횟수를 갖는다. 즉, 도 17을 참조하면, 저장 장치(3200)의 P/E 사이클 보증 횟수는 PE2이다. 애플리케이션(3110)이 설치되는 시점(T1)에서 P/E 사이클은 PE1이다. 가용 P/E 사이클(available P/E cycle)은 보증 P/E 사이클(PE2)과 애플리케이션 설치 시점의 P/E 사이클(PE1)의 차를 이용하여 계산할 수 있다. 본 발명에 따른 메모리 시스템(3000)은 가용 P/E 사이클(PE2-PE1)을 통해 저장 장치(3200)의 남은 보증 기간(T2-T1)을 계산할 수 있다.
도 18은 애플리케이션을 설치하는 동작을 설명하기 위한 순서도이다. 도 18을 참조하면, S310 단계에서, 애플리케이션(3110)을 사용하여 애플리케이션 설치 시점(T1)에서 P/E 사이클(PE1)과 보증 P/E 사이클(PE2)을 저장 장치(3200)에 요청한다. S320 단계에서, 가용 P/E 사이클(PE2-PE1)을 이용하여 제품의 수명(T2) 또는 보증 기간(T2-T1)을 계산한다. S330 단계에서, 사용자에게 저장 장치(3200)가 최적으로 동작할 수 있도록 저장 장치(3200)를 설정하는 것을 안내한다.
본 발명의 실시 예에 따른 메모리 시스템(3000)은 저장 장치(3200)의 가용 P/E 사이클(PE2-PE1) 및 보증 기간(T2-T1)을 통해 저장 장치(3200)에 대한 최적화 설정을 추천할 수 있다. 사용자는 이를 토대로 자신이 원하는 방향으로 저장 장치(3200)의 성능 향상 강도에 대한 추천 레벨(recommend level)을 결정할 수 있다.
도 19는 사용자의 UI 설정을 통해 저장 장치의 성능 향상 강도를 결정하는 방법을 설명하기 위한 그래프이고, 도 20은 사용자의 UI 설정을 예시적으로 보여주는 도면이다.
도 19 및 도 20을 참조하면, 저장 장치(3200)의 성능 향상(performance enhancement)은 OFF 레벨과 MAX 레벨 사이에서 이루어지며, 메모리 시스템(3000)은 사용자에게 추천 레벨(recommend level)을 제공할 수 있다. OFF 레벨은 성능 향상 기능이 가장 낮은 경우이고, MAX 레벨은 가장 높은 경우이다. 사용자가 성능 향상 강도를 MAX에 가깝게 설정할 경우 성능이 높아지는 반면에, 제품 보증 기간이 짧아질 수 있다.
추천 레벨(recommend level)은 앞에서 설명한 바와 같이, 저장 장치(3200)의 가용 P/E 사이클(available P/E cycle)을 통해 계산될 수 있다. 추천 레벨은 남아 있는 제품 보증 기간을 충분히 사용할 수 있도록 설정되는 레벨이다. 추천 레벨은 이후 설명할 루프 동작에서의 주기적인 저장 장치의 상태 체크와 사용자의 사용 기간 입력 정보를 통해 다이나믹(dynamic)하게 변할 수 있다.
도 20의 사용자의 UI 설정의 예시는 특정 시간 수행 설정, 가비지 컬렉션 수행 시간이나 구간 설정, 수명 허용 연도 설정 등의 여러 형태로 구현이 가능하다.
도 21은 도 10에 도시된 메모리 시스템의 루프 동작을 설명하기 위한 순서도이다. 메모리 시스템(3000)은 애플리케이션(3110)이 설치된 순간부터 주기적인 루프 동작을 통해 사용자 패턴과 저장 장치 상태를 검사할 수 있다. 메모리 시스템(3000)은 수집된 데이터를 기준으로 가비지 컬렉션의 수행 조건이나 강도 조절을 다이나믹하게 설정하고, 검사 결과로 얻은 추천 레벨을 애플리케이션(3110)을 통해 사용자에게 제공할 수 있다.
S410 단계에서, 메모리 시스템(3000)은 애플리케이션(3110)이 설치되고 초기 상태(initial state)에 있다. S420 단계에서, 사용자가 애플리케이션(3110)을 통해 저장 장치(3200)의 동작 조건을 셋팅(setting) 했는지가 판단된다.
S420 단계에서, 사용자의 셋팅이 없는 경우에, 메모리 시스템(3000)은 애플리케이션 설치 초기 상태로 동작한다. 즉, 메모리 시스템(3000)은 현재 P/E 사이클 등을 저장 장치(3200)에 요청하고 메모리의 쓰기 데이터 사용량 등을 운영 체제(3120)에 요청하여(S442), 이 정보를 기반으로 추천 레벨을 계산하고 사용자에게 제공한다(S443).
S420 단계에서, 사용자의 셋팅이 있으면, 즉 사용자가 애플리케이션 실행 및 성능 향상 강도 조절 등을 입력하면, 백그라운드 가비지 컬렉션을 수행하기 위한 루프 동작이 수행된다.
S430 단계에서, 가비지 컬렉션 조건을 검사하고 수행하기 위한 단계이다. S431 단계에서 사용자 패턴과 저장 장치 상태를 검사한다. S432 단계에서 가비 컬렉션을 필요로 하는지가 판단된다. 가비지 컬렉션이 필요 없는 경우에는 S420 단계에서 사용자의 셋팅이 없는 경우와 마찬가지로 동작하게 된다. 가비지 컬렉션이 필요한 경우에는 S433 단계에서 가비지 컬렉션이 수행된다.
가비지 컬렉션 수행 조건은 P/E 사이클, 쓰기 데이터량, 저장 장치 자체 요구(storage device self-request), 성능과 수명의 트레이드 오프(trade-off) 관계 등을 고려하여 결정된다. 즉, 메모리 시스템(3000)은 앞에서 설명한 바와 같이 저장 장치(3000)의 성능 향상이나 수명 보장을 위해 사용자 패턴 분석이나 저장 장치 상태를 주기적으로 검사하고, 수집된 정보를 활용하여 가비지 컬렉션 수행 조건을 다이나믹 하게 설정할 수 있다.
예를 들어, P/E 사이클 검사는 제품 보증 수명과 현재 P/E 사이클 정보를 통해 금일 또는 금주 허용된 P/E 사이클과 비교하여 검사할 수 있다. 쓰기 데이터량의 수집은 최근 며칠 또는 몇 주 내의 쓰기 데이터량을 수집하여 가비지 컬렉션을 수행하기 위한 미리 정해진 임계치(threshold value)를 넘어서는지 여부를 통해 수행될 수 있다. 저장 장치 상태는 저장 장치 자체적으로 현재 가비지 컬렉션이 필요한지 여부를 호스트에 알려 주는 상태 정보를 읽어서 검사할 수 있다. 저장 장치(3200)는 자체적인 알고리즘을 통해 가비지 컬렉션의 필요 여부에 대한 검사를 수행할 수 있다.
S440 단계에서, 가비지 컬렉션을 수행한 다음에 P/E 사이클 변화량 등을 기초로 추천 레벨을 계산한다. 계속해서 도 21을 참조하면, 애플리케이션이 수행한 가비지 컬렉션과 펌웨어가 자체적으로 수행한 가비지 컬렉션을 구분하기 위해 P/E 사이클 변화량을 계산한다(S441). 그리고 메모리 시스템(3000)은 현재 P/E 사이클 등을 저장 장치(3200)에 요청하고 메모리의 쓰기 데이터 사용량 등을 운영 체저(3120)에 요청하여(S442), 이 정보를 기반으로 추천 레벨을 계산하고 사용자에게 제공한다(S443).
S450 단계에서, 루프 동작을 종료할 것인지가 판단된다. 루프 동작이 종료되지 않았으면 S420 단계 이후 동작이 다시 수행된다.
이상에서 설명한 바와 같이, 본 발명의 실시 예에 따른 메모리 시스템(3000)은 애플리케이션 설치, 사용자 인터페이스(UI) 설정, 루프 동작(loop operation) 과정을 통해 저장 장치(3200)에 대한 최적화 동작을 수행할 수 있다. 즉, 메모리 시스템(3000)은 사용자 인터페이스를 이용하여 저장 장치 상태(storage device's state)와 사용자 패턴(user pattern)을 분석하고, 저장 장치(3200)에 대한 최적화 정보(optimization information)를 사용자에게 제공할 수 있다. 본 발명은 사용자에게 적합하거나 사용자가 원하는 설정을 저장 장치(3200)에 반영함으로, 저장 장치(3200)의 성능을 높이고 신뢰성을 향상시킬 수 있다.
Ⅳ. eMMC를 사용하는 모바일 장치의 최적화 동작 방법
도 22는 본 발명의 실시 예에 따른 메모리 시스템이 모바일 장치에 사용된 경우를 보여주는 블록도이다. 도 22를 참조하면, 모바일 장치(4000)는 호스트(4100)와 내장형 저장 장치(4200, eMMC)를 포함한다. eMMC(4200)는 JEDEC에서 표준으로 정한 메모리 카드로서, 휴대용 MMC를 내장형(embeded)으로 만든 것이다.
호스트(4100)는 애플리케이션(4110), 운영 체제(OS; Operating System, 4120), 프로세서(4130), 랜덤 액세스 메모리(RAM, 4140), 그리고 eMMC 드라이버(4150)를 포함한다. 계속해서 도 22를 참조하면, eMMC(4200)는 플래시 메모리(4210)와 eMMC 컨트롤러(4220)를 포함할 수 있다. eMMC 컨트롤러(4220)는 중앙처리장치(CPU)와 랜덤 액세스 메모리(RAM)를 포함할 수 있다. 중앙처리장치(4221)는 랜덤 액세스 메모리(4222)를 이용하여 eMMC 펌웨어(4223)를 구동할 수 있다.
도 23은 도 22에 도시된 모바일 장치의 소프트웨어 계층 구조를 보여주는 블록도이다. 도 23을 참조하면, 본 발명의 실시 예에 따른 모바일 장치(4000)는 애플리케이션(4110), 파일 시스템(4125), eMMC 드라이버(4150), 그리고 eMMC 펌웨어(4224)로 구성되는 소프트웨어 계층 구조를 갖는다. 여기에서, 애플리케이션(4110), 파일 시스템(4125), eMMC 드라이버(4150)는 호스트(4100)에서 구동되며, eMMC 펌웨어(4223)는 eMMC(4200)에서 구동된다.
호스트(4100)는 애플리케이션(4110)을 통해 OS 최적화, 펌웨어 업데이트, 저장 장치 초기화, 오버 프로비져닝(over provisioning) 영역 조절 등의 기능을 수행하고, eMMC 상태 및 사용자 패턴을 분석함으로 eMMC(4200)에 대한 최적화 동작을 수행할 수 있다.
도 24는 도 22에 도시된 모바일 장치가 애플리케이션을 통한 가비지 컬렉션 동작을 수행 방법을 보여주는 순서도이다.
가비지 컬렉션을 수행하기 위한 조건이 충족된 경우에, 애플리케이션(4110)은 eMMC 드라이버(4150)로 가비지 컬렉션을 수행하도록 요청한다(S510). 예를 들어, eMMC의 경우에는 URGENT_BKOPS 또는 BKOPS_STATUS 정보 등을 읽고 가비지 컬렉션을 수행하도록 요청할 수 있다.
[표 1]은 eMMC의 백그라운드 동작 상태(BKOPS_STATUS)를 예시적으로 보여주는 도표이다. [표 1]에는 백드라운드 동작이 필요하다는 상태 정보를 eMMC가 판단하여 애플리케이션에게 보내주는 인터페이스가 정의되어 있다.
Figure pat00001
이 경우에 애플리케이션(4110)이 백그라운드 동작 수행 빈도를 제어하기 위해서는 eMMC(4200)의 BKOPS_STATUS 판단 수준을 조절하는 기능과 인터페이스를 필요로 한다. 본 발명은 이를 위해 BKOPS_STATUS를 위한 인터페이스(interface)를 새롭게 추가할 수 있다.
eMMC 드라이버(4150)는 eMMC(4200)에 가비지 컬렉션을 수행하도록 명령을 한다(S520). 이후 애플리케이션(4110)은 eMMC 드라이버(4150)를 통해 eMMC(4200)에서 가비지 컬렉션 동작이 종료되었는지를 판단한다(S530). 가비지 컬렉션 동작이 종료되지 않은 경우에는 eMMC(4200)의 상태 정보를 사용자에게 제공하고(S535), S530 단계를 반복한다. 가비지 컬렉션 동작이 종료된 경우에는 eMMC(4200)의 상태 정보에 따라 eMMC(4200)가 최적으로 동작하도록 사용자에게 안내해준다.
본 발명의 실시 예에 따른 모바일 장치(4000)는 애플리케이션(4110)을 통해 사용자 패턴과 eMMC 상태 정보를 수집하고, 애플리케이션(4110)을 통해 eMMC(4200)에 최적화 작업 수행 명령을 내릴 수 있다. 본 발명은 사용자 패턴 분석을 통해 얻은 정보를 통해 eMMC(4200)를 제어하며, 사용자에게 적합하거나 사용자가 원하는 설정을 eMMC(4200)에 반영함으로, eMMC(4200)의 성능을 높이고 신뢰성을 향상시킬 수 있다.
Ⅴ. 메모리 시스템 및 모바일 장치의 적용 예
본 발명의 실시 예에 따른 메모리 시스템 또는 모바일 장치는 다양하게 응용될 수 있다. 도 25 내지 도 27을 참조하여, 본 발명의 몇몇 실시 예에 따른 메모리 시스템의 응용 예들에 대해 설명한다.
도 25는 본 발명의 실시 예에 따른 메모리 시스템을 간략하게 도시한 블록도이고, 도 26은 도 25의 메모리 시스템의 응용 예를 보여주는 블록도이다. 도 27은 도 26을 참조하여 설명된 메모리 시스템을 포함하는 컴퓨팅 시스템을 보여주는 블록도이다.
도 25를 참조하면, 메모리 시스템(5000)은 비휘발성 메모리 장치(5100) 및 컨트롤러(5200)를 포함한다. 여기서, 컨트롤러(5200) 및 비휘발성 메모리 장치(5100)는 하나의 반도체 장치로 집적되어 앞서 언급한 솔리드 스테이트 드라이브(SSD, Solid State Drive)를 구성할 수 있다. 솔리드 스테이트 드라이브(SSD)는 반도체 메모리에 데이터를 저장하도록 구성되는 저장 장치를 포함한다. 메모리 시스템(5000)이 솔리드 스테이트 드라이브(SSD)로 이용되는 경우, 메모리 시스템(5000)에 연결된 호스트(Host)의 동작 속도는 획기적으로 개선될 수 있다.
컨트롤러(5200)는 호스트(Host) 및 비휘발성 메모리 장치(5100)에 연결된다. 호스트(Host)로부터의 요청에 응답하여, 컨트롤러(5200)는 비휘발성 메모리 장치(5100)를 액세스하도록 구성된다. 예를 들면, 컨트롤러(5200)는 비휘발성 메모리 장치(5100)의 읽기, 쓰기, 소거, 그리고 배경(background) 동작을 제어하도록 구성된다. 컨트롤러(5200)는 비휘발성 메모리 장치(5100) 및 호스트(Host) 사이에 인터페이스를 제공하도록 구성된다. 컨트롤러(5200)는 비휘발성 메모리 장치(5100)를 제어하기 위한 펌웨어(firmware)를 구동하도록 구성될 수 있다.
예시적으로, 컨트롤러(5200)는 램(RAM, Random Access Memory), 프로세싱 유닛(processing unit), 호스트 인터페이스(host interface), 그리고 메모리 인터페이스(memory interface)와 같은 잘 알려진 구성 요소들을 더 포함한다. 램(RAM)은 프로세싱 유닛의 동작 메모리, 비휘발성 메모리 장치(5100) 및 호스트(Host) 사이의 캐시 메모리, 그리고 비휘발성 메모리 장치(5100) 및 호스트(Host) 사이의 버퍼 메모리 중 적어도 하나로서 이용된다. 프로세싱 유닛은 컨트롤러(5200)의 제반 동작을 제어한다.
호스트 인터페이스는 호스트(Host) 및 컨트롤러(5200) 사이의 데이터 교환을 수행하기 위한 프로토콜을 포함한다. 예시적으로, 컨트롤러(5200)는 USB (Universal Serial Bus) 프로토콜, MMC (multimedia card) 프로토콜, PCI (peripheral component interconnection) 프로토콜, PCI-E (PCI-express) 프로토콜, ATA (Advanced Technology Attachment) 프로토콜, Serial-ATA 프로토콜, Parallel-ATA 프로토콜, SCSI (small computer small interface) 프로토콜, ESDI (enhanced small disk interface) 프로토콜, 그리고 IDE (Integrated Drive Electronics) 프로토콜 등과 같은 다양한 인터페이스 프로토콜들 중 적어도 하나를 통해 외부(호스트)와 통신하도록 구성된다. 메모리 인터페이스는 비휘발성 메모리 장치(5100)와 인터페이싱한다. 예를 들면, 메모리 인터페이스는 낸드 인터페이스 또는 노어 인터페이스를 포함한다.
한편, 메모리 시스템(5000)은 오류 정정 블록을 추가적으로 포함하도록 구성될 수 있다. 오류 정정 블록은 오류 정정 코드(ECC)를 이용하여 비휘발성 메모리 장치(5100)로부터 읽어진 데이터의 오류를 검출하고, 정정하도록 구성된다. 예시적으로, 오류 정정 블록은 컨트롤러(5200)의 구성 요소로서 제공된다. 오류 정정 블록은 비휘발성 메모리 장치(5100)의 구성 요소로서 제공될 수 있다.
다른 예로서, 메모리 시스템(5000)은 컴퓨터, UMPC (Ultra Mobile PC), 워크스테이션, 넷북(net-book), PDA (Personal Digital Assistants), 포터블(portable) 컴퓨터, 웹 타블렛(web tablet), 무선 전화기(wireless phone), 모바일 폰(mobile phone), 스마트폰(smart phone), e-북(e-book), PMP(portable multimedia player), 휴대용 게임기, 네비게이션(navigation) 장치, 블랙박스(black box), 디지털 카메라(digital camera), 3차원 수상기(3-dimensional television), 디지털 음성 녹음기(digital audio recorder), 디지털 음성 재생기(digital audio player), 디지털 영상 녹화기(digital picture recorder), 디지털 영상 재생기(digital picture player), 디지털 동영상 녹화기(digital video recorder), 디지털 동영상 재생기(digital video player), 정보를 무선 환경에서 송수신할 수 있는 장치, 홈 네트워크를 구성하는 다양한 전자 장치들 중 하나, 컴퓨터 네트워크를 구성하는 다양한 전자 장치들 중 하나, 텔레매틱스 네트워크를 구성하는 다양한 전자 장치들 중 하나, RFID 장치, 또는 컴퓨팅 시스템을 구성하는 다양한 구성 요소들 중 하나 등과 같은 전자 장치의 다양한 구성 요소들 중 하나로 제공된다.
예시적으로, 비휘발성 메모리 장치(5100) 또는 메모리 시스템(5000)은 다양한 형태들의 패키지로 실장될 수 있다. 예를 들면, 비휘발성 메모리 장치(5100) 또는 메모리 시스템(5000)은 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 Metric Quad 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) 등과 같은 방식으로 패키지화되어 실장될 수 있다.
도 26을 참조하면, 메모리 시스템(6000)은 비휘발성 메모리 장치(6100) 및 컨트롤러(6200)를 포함한다. 비휘발성 메모리 장치(6100)는 복수의 비휘발성 메모리 칩들을 포함한다. 복수의 비휘발성 메모리 칩들은 복수의 그룹들로 분할된다. 복수의 비휘발성 메모리 칩들의 각 그룹은 하나의 공통 채널을 통해 컨트롤러(6200)와 통신하도록 구성된다. 예를 들어, 복수의 비휘발성 메모리 칩들은 제 1 내지 제 k 채널들(CH1~CHk)을 통해 컨트롤러(6200)와 통신하는 것으로 도시되어 있다. 도 26에서, 하나의 채널에 복수의 비휘발성 메모리 칩들이 연결되는 것으로 설명되었다. 그러나, 하나의 채널에 하나의 비휘발성 메모리 칩이 연결되도록 메모리 시스템(6000)이 변형될 수 있음이 이해될 것이다.
도 27을 참조하면, 컴퓨팅 시스템(7000)은 중앙 처리 장치(7100), 램(7200, RAM, Random Access Memory), 사용자 인터페이스(7300), 전원(7400), 그리고 메모리 시스템(7000)을 포함한다.
메모리 시스템(7000)은 시스템 버스(7500)를 통해, 중앙처리장치(7100), 램(7200), 사용자 인터페이스(7300), 그리고 전원(7400)에 전기적으로 연결된다. 사용자 인터페이스(7300)를 통해 제공되거나, 중앙 처리 장치(7100)에 의해서 처리된 데이터는 메모리 시스템(7000)에 저장된다.
도 27에서, 비휘발성 메모리 장치(7100)는 컨트롤러(7200)를 통해 시스템 버스(7500)에 연결되는 것으로 도시되어 있다. 그러나, 비휘발성 메모리 장치(7100)는 시스템 버스(7500)에 직접 연결되도록 구성될 수 있다. 도 27에서, 도 26을 참조하여 설명된 메모리 시스템(7000)이 제공되는 것으로 도시되어 있다. 그러나, 메모리 시스템(7000)은 도 25를 참조하여 설명된 메모리 시스템(5000)으로 대체될 수도 있다. 예시적으로, 컴퓨팅 시스템(7000)은 도 25 및 도 26을 참조하여 설명된 메모리 시스템들(5000, 6000)을 모두 포함하도록 구성될 수 있다.
한편, 본 발명의 상세한 설명에서는 구체적인 실시예에 관하여 설명하였으나, 본 발명의 범위에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능함은 물론이다. 예를 들어, 본 발명의 범위는 플래시 메모리 장치에 한정되지 않는다. 본 발명은 변환 계층에 의한 어드레스 변환이 사용되는 모든 저장 장치에 적용될 수 있다. 그러므로 본 발명의 범위는 상술한 실시예에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 한다.
100: 메모리 시스템 110: 호스트
111: 사용자 인터페이스 112: 호스트 컨트롤러
120: 저장 장치 121: 불휘발성 메모리
122: 스토리지 컨트롤러

Claims (20)

  1. 플래시 메모리를 포함하는 저장 장치; 및
    사용자 인터페이스를 통해 저장 장치 상태와 사용자 패턴에 대한 정보(이하, 사용자 패턴 정보라 함)를 요청하는, 상기 사용자 패턴 정보를 분석하고 상기 저장 장치가 최적화 동작을 수행하도록 상기 저장 장치의 파라미터를 설정하는, 그리고 상기 최적화 동작을 위한 명령을 상기 저장 장치에 제공하는 호스트를 포함하는 메모리 시스템.
  2. 제 1 항에 있어서,
    상기 저장 장치 상태는 P/E 사이클 및 백그라운드 동작 상태 중 적어도 하나인 메모리 시스템.
  3. 제 2 항에 있어서,
    상기 사용자 패턴 정보는 쓰기 데이터 양, 메모리 접근 형태, 메모리 접근 시간 중 적어도 하나인 메모리 시스템.
  4. 제 2 항에 있어서,
    상기 호스트는 상기 P/E 사이클을 통해 상기 저장 장치의 수명 예상치를 계산하고 사용자에게 제공하는 메모리 시스템.
  5. 제 4 항에 있어서,
    상기 호스트는 상기 저장 장치의 최적화 동작을 위한 추천 레벨을 사용자에게 제공하는 메모리 시스템.
  6. 제 1 항에 있어서,
    상기 사용자 인터페이스는 애플리케이션인 것을 특징으로 하는 메모리 시스템.
  7. 제 6 항에 있어서,
    상기 호스트는 상기 애플리케이션을 통해 사용자에게 상기 저장 장치의 진행 상황을 알려주고, 상기 저장 장치에 대한 동작 설정을 안내하는 메모리 시스템.
  8. 제 1 항에 있어서,
    상기 저장 장치는 내장형 메모리 장치인 것을 특징으로 하는 메모리 시스템.
  9. 제 8 항에 있어서,
    상기 내장형 메모리 장치는 eMMC인 것을 특징으로 하는 메모리 시스템.
  10. 제 1 항에 있어서,
    상기 호스트는 상기 저장 장치에 대한 자기 진단 및 자가 복구 동작을 수행하는 메모리 시스템.
  11. 제 10 항에 있어서,
    상기 자가 복구 동작은 핫/콜드 데이터 스위치, 데이터 리클레임, 오버 프로비져닝 제어, 파라미터 변경, 프로그램 조건 변경 중 적어도 하나를 통해 수행되는 메모리 시스템.
  12. 제 1 항에 있어서,
    상기 저장 장치 및 상기 호스트는 모바일 장치에 구현되는 메모리 시스템.
  13. 제 12 항에 있어서,
    상기 저장 장치는 eMMC인 것을 특징으로 하는 메모리 시스템.
  14. 저장 장치와 호스트를 포함하는 모바일 장치의 동작 방법에 있어서:
    애플리케이션을 통해 저장 장치 상태와 사용자 패턴에 대한 정보(이하, 사용자 패턴 정보라 함)를 요청하는 단계;
    상기 사용자 패턴 정보를 분석하고 상기 저장 장치가 최적화 동작을 수행하도록 상기 저장 장치의 파라미터를 설정하는 단계; 및
    상기 최적화동작을 위한 명령을 상기 저장 장치에 제공하는 단계를 포함하는 모바일 장치의 동작 방법.
  15. 제 14 항에 있어서,
    사용자에게 상기 최적화 동작을 위한 추천 레벨을 제공하는 단계를 더 포함하는 모바일 장치의 동작 방법.
  16. 제 14 항에 있어서,
    상기 저장 장치의 상태는 P/E 사이클 및 백그라운드 동작 상태 중 적어도 하나이고, 상기 사용자 패턴 정보는 쓰기 데이터 양, 메모리 접근 형태, 메모리 접근 시간 중 적어도 하나인 모바일 장치의 동작 방법.
  17. 제 14 항에 있어서,
    상기 애플리케이션을 통해 사용자에게 상기 저장 장치의 진행 상황을 알려주고, 상기 저장 장치에 대한 동작 설정을 안내하는 단계를 더 포함하는 모바일 장치의 동작 방법.
  18. 제 14 항에 있어서,
    상기 P/E 사이클을 통해 상기 저장 장치의 수명 예상치를 계산하고 사용자에게 제공하는 단계를 더 포함하는 모바일 장치의 동작 방법.
  19. 제 14 항에 있어서,
    상기 저장 장치에 대한 자기 진단 및 자가 복구 동작을 수행하는 단계를 더 포함하는 모바일 장치의 동작 방법.
  20. 제 19 항에 있어서,
    상기 자가 복구 동작은 핫/콜드 데이터 스위치, 데이터 리클레임, 오버 프로비져닝 제어, 파라미터 변경, 프로그램 조건 변경 중 적어도 하나를 통해 수행되는 모바일 장치의 동작 방법.
KR1020130001708A 2012-01-18 2013-01-07 플래시 메모리를 기반으로 하는 저장 장치 및 호스트를 포함하는 메모리 시스템 및 모바일 장치 KR20130084988A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
TW102102042A TW201337735A (zh) 2012-01-18 2013-01-18 記憶體系統及使用所述記憶體系統之行動裝置的操作方法
US13/744,603 US20130185487A1 (en) 2012-01-18 2013-01-18 Memory system and mobile device including host and flash memory-based storage device

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020120005764 2012-01-18
KR20120005764 2012-01-18

Publications (1)

Publication Number Publication Date
KR20130084988A true KR20130084988A (ko) 2013-07-26

Family

ID=48780812

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130001708A KR20130084988A (ko) 2012-01-18 2013-01-07 플래시 메모리를 기반으로 하는 저장 장치 및 호스트를 포함하는 메모리 시스템 및 모바일 장치

Country Status (3)

Country Link
US (1) US20130185482A1 (ko)
KR (1) KR20130084988A (ko)
TW (1) TW201337735A (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160150497A (ko) * 2015-06-22 2016-12-30 삼성전자주식회사 데이터 저장 장치, 이를 포함하는 데이터 처리 시스템, 및 이의 작동 방법
KR101718888B1 (ko) * 2015-09-22 2017-04-04 서울대학교산학협력단 메모리 시스템 및 그것의 가비지 컬렉션 방법
KR20170092538A (ko) * 2014-12-09 2017-08-11 인텔 코포레이션 저장 디바이스의 현재 소모 프로파일에 기초한 사용자에 대해 이용불가능한 저장 디바이스에서의 스페어 공간에 대한 조정들의 결정
US9817591B2 (en) 2014-12-18 2017-11-14 Samsung Electronics Co., Ltd. Storage device and storage system storing data based on reliability of memory area

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9015409B2 (en) * 2013-03-15 2015-04-21 Advanced Digital Broadcast Sa Apparatus and methods for prolonging service life of solid-state memory device in a digital video recorder
US9939947B2 (en) * 2014-02-26 2018-04-10 Mediatek Inc. Touch communications device with multiple partial firmwares and related method
TWI507876B (zh) * 2014-07-21 2015-11-11 Phison Electronics Corp 記憶體儲存裝置及控制方法、記憶體控制電路單元及模組
JP6394315B2 (ja) 2014-11-20 2018-09-26 富士通株式会社 ストレージ管理装置、性能調整方法及び性能調整プログラム
JP6428231B2 (ja) 2014-12-15 2018-11-28 富士通株式会社 ストレージ管理装置、性能調整方法及び性能調整プログラム
US10089266B2 (en) * 2015-07-10 2018-10-02 Apple Inc. Power saving feature for storage subsystems
US11287973B2 (en) 2016-02-02 2022-03-29 Samsung Electronics Co., Ltd. Polymorphic storage devices
IT201700062788A1 (it) * 2017-06-08 2018-12-08 Stmicroelectronics Application Gmbh Sistema di elaborazione, relativo circuito integrato, dispositivo e procedimento
IT201700062830A1 (it) 2017-06-08 2018-12-08 Stmicroelectronics Application Gmbh Sistema di elaborazione, relativo circuito integrato, dispositivo e procedimento
IT201800001633A1 (it) * 2018-01-22 2019-07-22 Stmicroelectronics Application Gmbh Sistema di elaborazione, relativo circuito integrato, dispositivo e procedimento
TWI714830B (zh) * 2018-02-13 2021-01-01 緯穎科技服務股份有限公司 目錄資料的管理方法與記憶體裝置
IT201800002895A1 (it) * 2018-02-21 2019-08-21 Stmicroelectronics Application Gmbh Sistema di elaborazione, relativo circuito integrato, dispositivo e procedimento
US10678439B2 (en) * 2018-04-02 2020-06-09 Micron Technology, Inc. Optimization of memory systems based on performance goals
US11210215B2 (en) 2019-10-01 2021-12-28 Neuchips Corporation Computing device and operation method thereof
TWI761992B (zh) 2020-10-16 2022-04-21 創鑫智慧股份有限公司 資料計算裝置及其操作方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8572310B2 (en) * 2007-11-06 2013-10-29 Samsung Electronics Co., Ltd. Invalidating storage area of non-volatile storage medium based on metadata

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170092538A (ko) * 2014-12-09 2017-08-11 인텔 코포레이션 저장 디바이스의 현재 소모 프로파일에 기초한 사용자에 대해 이용불가능한 저장 디바이스에서의 스페어 공간에 대한 조정들의 결정
KR20220151227A (ko) * 2014-12-09 2022-11-14 인텔 코포레이션 저장 디바이스의 현재 소모 프로파일에 기초한 사용자에 대해 이용불가능한 저장 디바이스에서의 스페어 공간에 대한 조정들의 결정
US9817591B2 (en) 2014-12-18 2017-11-14 Samsung Electronics Co., Ltd. Storage device and storage system storing data based on reliability of memory area
KR20160150497A (ko) * 2015-06-22 2016-12-30 삼성전자주식회사 데이터 저장 장치, 이를 포함하는 데이터 처리 시스템, 및 이의 작동 방법
KR101718888B1 (ko) * 2015-09-22 2017-04-04 서울대학교산학협력단 메모리 시스템 및 그것의 가비지 컬렉션 방법

Also Published As

Publication number Publication date
TW201337735A (zh) 2013-09-16
US20130185482A1 (en) 2013-07-18

Similar Documents

Publication Publication Date Title
KR20130084988A (ko) 플래시 메모리를 기반으로 하는 저장 장치 및 호스트를 포함하는 메모리 시스템 및 모바일 장치
US20130185487A1 (en) Memory system and mobile device including host and flash memory-based storage device
US8843697B2 (en) Operating method of data storage device
US8745309B2 (en) Cooperative memory management
KR102108839B1 (ko) 불휘발성 메모리 장치를 포함하는 사용자 장치 및 그것의 데이터 쓰기 방법
US10649896B2 (en) Storage device and data processing system including the same
US20170160953A1 (en) Data storage device that stabilizes write latency
US11645213B2 (en) Data processing system allocating memory area in host as extension of memory and operating method thereof
KR20120061575A (ko) 적응적 머지를 수행하는 메모리 시스템 및 그것의 데이터 쓰기 방법
CN112306907A (zh) 存储设备、包括其的存储系统及存储设备的操作方法
US10528264B2 (en) Storage device and data processing system including the same
KR102595233B1 (ko) 데이터 처리 시스템 및 그것의 동작 방법
US8914587B2 (en) Multi-threaded memory operation using block write interruption after a number or threshold of pages have been written in order to service another request
US20230244394A1 (en) Gradually Reclaim Storage Space Occupied by a Proof of Space Plot in a Solid State Drive
KR20110046232A (ko) 데이터 무효화 동작을 수행하는 저장 장치 및 그것의 데이터 무효화 방법
KR20150055413A (ko) 데이터 저장 장치
KR20130024271A (ko) 하드 디스크 드라이브와 불휘발성 메모리를 포함하는 스토리지 시스템
KR20150057069A (ko) 데이터 저장 장치 및 그것의 동작 방법
US20230244393A1 (en) Communications to Reclaim Storage Space Occupied by Proof of Space Plots in Solid State Drives
US20200183598A1 (en) Storage system and operating method thereof
CN111108488A (zh) 内存块回收方法和装置
CN110895449A (zh) 用于在存储器系统中管理有效数据的装置和方法
CN112306393A (zh) 存储装置
KR20200129700A (ko) 컨트롤러 및 이를 포함하는 메모리 시스템
CN112306906A (zh) 存储设备、包括该存储设备的存储系统及其操作方法

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