KR20160016421A - 비휘발성 메모리 기반의 스토리지 장치의 최적화 방법 - Google Patents

비휘발성 메모리 기반의 스토리지 장치의 최적화 방법 Download PDF

Info

Publication number
KR20160016421A
KR20160016421A KR1020140100548A KR20140100548A KR20160016421A KR 20160016421 A KR20160016421 A KR 20160016421A KR 1020140100548 A KR1020140100548 A KR 1020140100548A KR 20140100548 A KR20140100548 A KR 20140100548A KR 20160016421 A KR20160016421 A KR 20160016421A
Authority
KR
South Korea
Prior art keywords
storage device
information
configuration
user
application
Prior art date
Application number
KR1020140100548A
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 KR1020140100548A priority Critical patent/KR20160016421A/ko
Priority to US14/812,489 priority patent/US20160041788A1/en
Publication of KR20160016421A publication Critical patent/KR20160016421A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0634Configuration or reconfiguration of storage systems by changing the state or mode of one or more devices
    • 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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

비휘발성 메모리 기반의 스토리지 장치의 최적화 방법이 개시된다. 본 발명의 최적화 방법은 상기 스토리지 장치로 상태 정보를 요청하여 수신하는 단계, 상기 상태 정보를 분석하여 권장 용도를 결정하는 단계, 상기 결정된 권장 용도를 사용자에게 표시하는 단계, 상기 표시된 용도 중 어느 하나의 용도가 상기 사용자에 의하여 선택되면, 상기 선택된 용도에 맞는 구성을 설정하는 단계 및 상기 스토리지 장치로 구성 변경 요청을 발급하는 단계를 포함한다.

Description

비휘발성 메모리 기반의 스토리지 장치의 최적화 방법{METHOD OF OPTIMIZING NON-VOLATILE MEMORY BASED STORAGE DEVICE}
본 발명의 개념에 따른 실시 예는 스토리지 장치(storage device)에 관한 것으로, 특히 비휘발성 메모리 기반의 스토리지 장치 및 상기 스토리지 장치의 최적화 방법에 관한 것이다.
SD 카드(Secure Digital Card) 나 SSD(Solid State Drive)와 같은 비휘발성 메모리(예컨대, 플래시메모리)로 구성된 스토리지 장치는 판매된 초기 설정 그대로 사용할 수 밖에 없다. 스토리지 장치는 사용하고자 하는 용도에 상관없이 항상 동일하게 동작하도록 소프트웨어가 설계되어 있다.
이에 반해 각 스토리지 장치는 그 사용 용도 및 범위가 넓어지고 있다. SD 카드를 예로 들면, 기존에는 디지털 스틸 카메라(DSC: Digital Still Camera)나 DVC와 같은 사진/영상 장치가 주된 사용처였으나 스마트 폰의 보급으로 인해 그 영역이 넓혀졌으며, 최근에는 블랙 박스로도 그 사용처가 증가하고 있다. SSD의 경우도 크게 구분하면 일반 사용자 PC와 서버로 구분할 수 있으나, 데이터 센터와 같이 대용량 데이터를 저장하고 관리하는 곳까지 용도가 넓어지고 있는 상황이다. 스토리지 장치의 사용 용도가 확장됨에 따라 이전보다 훨씬 다양한 입출력 패턴을 처리해야 함에도 불구하고 스토리지 장치는 최초 구매 시 설정된 구성을 변경할 수 없는 한계가 있다. 즉, 스토리지 장치의 공장 출하시 또는 최초 판매시에 설정된 구성을 변경하기 어렵다.
따라서, 종래 기술에 따르면 스토리지 장치를 한 번 구매하고 나면, 해당 장치를 사용하는 용도에 맞게 최적화하는 것이 불가능하다.
본 발명이 이루고자 하는 기술적인 과제는 사용자가 스토리지 장치의 용도나 사용처에 따라 편리하게 스토리지 장치의 구성을 변경하거나 최적화할 수 있는 스토리지 장치의 최적화 방법을 제공하는 것이다.
본 발명의 실시 예에 따르면, 호스트의 어플리케이션 프로그램을 이용하여 비휘발성 메모리를 포함하는 스토리지 장치를 최적화하는 방법이 제공된다.
상기 최적화 방법은 상기 스토리지 장치로 상태 정보를 요청하여 수신하는 단계; 상기 상태 정보를 분석하여 권장 용도를 결정하는 단계; 상기 결정된 권장 용도를 사용자에게 표시하는 단계; 상기 표시된 용도 중 어느 하나의 용도가 상기 사용자에 의하여 선택되면, 상기 선택된 용도에 맞는 구성을 설정하는 단계; 및 상기 스토리지 장치로 구성 변경 요청을 발급하는 단계를 포함한다.
상기 방법은 복수의 용도에 대하여 용도별 구성 정보를 미리 설정하여 저장하는 단계를 더 포함할 수 있다.
상기 방법은 서버에 미리 저장된 상기 용도별 구성 정보를 네트워크를 통하여 수신하는 단계를 더 포함할 수 있다.
상기 구성 변경 요청은 하나 이상의 판매자 특화 명령을 포함할 수 있다.
본 발명의 실시 예에 따르면, 호스트의 어플리케이션 프로그램을 이용하여 비휘발성 메모리를 포함하는 스토리지 장치를 최적화하는 방법이 제공된다.
상기 최적화 방법은 복수의 용도에 대하여 용도별 구성 정보를 저장하는 단계; 선택 가능한 하나 이상의 용도를 사용자에게 표시하는 단계; 상기 표시된 용도 중 어느 하나의 용도가 상기 사용자에 의하여 선택되면, 상기 용도별 구성 정보 중 상기 선택된 용도에 맞는 구성을 선택하는 단계; 선택된 구성에 따라, 상기 스토리지 장치로 구성 변경 요청을 발급하는 단계; 및 상기 구성 변경 요청에 응답하여, 상기 스토리지 장치가 상기 비휘발성 메모리의 구성을 변경하는 단계를 포함한다.
상기 방법은 상기 스토리지 장치로 상태 정보를 요청하여 수신하는 단계를 더 포함하고, 상기 선택 가능한 하나 이상의 용도는 상기 상태 정보를 기초로 결정될 수 있다.
상기 방법은 상기 상태 정보에 기초하여 적어도 하나의 권장 동작을 사용자에게 표시하는 단계; 및 상기 표시된 권장 동작 중 어느 하나의 동작이 상기 사용자에 의하여 선택되면, 상기 선택 동작 수행 명령을 상기 스토리지 장치로 발급하는 단계를 더 포함할 수 있다.
본 발명의 실시 예에 따르면, 스토리지 장치의 상태 정보에 기초하여 권장 용도를 사용자에게 알려줄 수 있고, 사용자의 용도 선택에 따라, 스토리지 장치의 구성을 선택된 용도에 맞게 자동으로 변경할 수 있다.
또한, 본 발명의 실시예에 따르면, 호스트에서 실행되는 어플리케이션 프로그램을 이용하여 사용자의 편의성을 높일 수 있다.
따라서, 사용자는 스토리지 장치, 특히 외장형 스토리지 장치를 사용처(호스트)의 변경할 때, 사용처에 맞게 최적화하여 사용할 수 있다.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 간단한 설명이 제공된다.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 간단한 설명이 제공된다.
도 1은 본 발명의 실시예예 따른 전자 시스템의 연결 관계를 도시하는 블록도이다.
도 2는 본 발명의 일 실시 예에 따른 전자 시스템을 나타내는 구성 블록도이다.
도 3은 도 2에 도시된 전자 시스템의 개략적인 소프트웨어 계층을 보여주는 블록도이다.
도 4는 본 발명의 다른 실시 예에 따른 전자 시스템을 나타내는 구성 블록도이다.
도 5는 본 발명의 실시 예에 따른 스토리지 장치의 개략적인 구성 블록도이다.
도 6은 본 발명의 실시예에 따른 스토리지 장치의 최적화 방법을 나타내는 플로우차트이다.
도 6은 본 발명의 다른 실시예에 따른 스토리지 장치의 복구 방법을 나타내는 플로우차트이다.
도 7a 내지 도 7e는 각각 본 발명의 실시예에 따른 최적화 어플리케이션의 디스플레이 화면의 예시를 나타낸다.
도 8은 본 발명의 다른 실시예에 따른 스토리지 장치의 최적화 방법을 나타내는 플로우차트이다.
도 9는 본 발명의 또 다른 실시예에 따른 스토리지 장치의 최적화 방법을 나타내는 플로우차트이다.
도 10은 본 발명의 또 다른 실시예에 따른 스토리지 장치의 최적화 방법을 나타내는 플로우차트이다.
도 11은 도 10의 실시예에서, 메모리 조각 모음이 선택되는 경우의 플로우차트이다.
본 명세서에 개시되어 있는 본 발명의 개념에 따른 실시 예들에 대해서 특정한 구조적 또는 기능적 설명은 단지 본 발명의 개념에 따른 실시 예들을 설명하기 위한 목적으로 예시된 것으로서, 본 발명의 개념에 따른 실시 예들은 다양한 형태들로 실시될 수 있으며 본 명세서에 설명된 실시 예들에 한정되지 않는다.
본 발명의 개념에 따른 실시 예들은 다양한 변경들을 가할 수 있고 여러 가지 형태들을 가질 수 있으므로 실시 예들을 도면에 예시하고 본 명세서에서 상세하게 설명하고자 한다. 그러나, 이는 본 발명의 개념에 따른 실시 예들을 특정한 개시 형태들에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만, 예컨대 본 발명의 개념에 따른 권리 범위로부터 벗어나지 않은 채, 제1구성 요소는 제2구성 요소로 명명될 수 있고 유사하게 제2구성 요소는 제1구성 요소로도 명명될 수 있다.
어떤 구성 요소가 다른 구성 요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성 요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성 요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성 요소가 다른 구성 요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는 중간에 다른 구성 요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성 요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 명세서에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로서, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 본 명세서에 기재된 특징, 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 나타낸다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 본 명세서에 첨부된 도면들을 참조하여 본 발명의 실시 예들을 상세히 설명한다.
스토리지 장치, 특히 착탈식의 외장형 스토리지 장치는 사용자가 구매 후 사용처, 즉, 스토리지 장치가 장작되는 호스트의 종류를 변경할 수 있다. 예를 들어, SD 카드와 같은 외장형 저장 장치의 경우 디지털 스틸 카메라(DSC), 디지털 비디오 카메라(DVC), 스마트폰(Smart Phone), 블랙 박스와 같은 다양한 호스트에서 사용할 수 있으며, 각각의 호스트는 서로 다른 요구 사항과 입출력 패턴을 가지고 있다. 그럼에도 불구하고, 구매한 SD 카드를 각 응용에 맞게 사용자가 최적화해서 사용할 수 있는 방법은 없었다. 또한 스토리지 장치를 사용하는 도중에 스토리지 장치의 상태를 확인하고 상태를 최적화할 수 있는 방법도 없었다.
윈도우(Windows) 운영체계(OS)는 파일 시스템(file system) 단에서 디스크 조작 모음(Defragmentation)과 같은 기능이 있지만, 대부분 OS나 파일 시스템 단에서 수행되는 동작이므로 스토리지 장치를 최적화 하기에는 한계가 있었다.
본 발명의 실시예는 사용자가 직접 스토리지 장치를 최적화할 수 있는 방법을 제공한다. 특히, 본 발명의 실시예에서는 응용 소프트웨어(어플리케이션 프로그램)을 통해 응용 소프트웨어와 스토리지 장치간 상호 정보를 주고 받음으로써 스토리지 장치를 최적화할 수 있는 새로운 방법을 제공한다.
도 1은 본 발명의 실시예예 따른 전자 시스템의 연결 관계를 도시하는 블록도이다. 이를 참조하면, 전자 시스템(10)은 호스트(100)와 스토리지 장치(200)를 포함한다. 스토리지 장치(200)는 호스트(100)에 연결되는 외장형 저장 장치일 수 있으나, 이에 한정되는 것은 아니다.
호스트(100)는 스토리지 장치(200)의 구성을 변경하거나, 최적화할 수 있는 응용 프로그램인 최적화 어플리케이션(도 3의 102)을 실행할 수 있다.
스토리지 장치(200)는 사용자가 구매한 저장 장치로써 제품 출하시 기본적으로 설정된 구성을 가지며, 구매 후 또는 사용 중에 최적화 어플리케이션에 의해 그 구성이 변경되거나 최적화될 수 있다.
호스트(100)는 네트워크를 통해 통계 서버(20)에 접속될 수 있다.
호스트(100)는 스토리지 장치(200)의 정보, 예컨대, 디바이스 정보 및 상태 정보를 수신하고, 이를 통계 서버(20)로 보낼 수 있다.
통계 서버(20)는 스토리지 장치(200)의 정보를 수신하여 분석할 수 있다. 도시되지는 않았지만, 통계 서버(20)는 다수의 호스트(100)로부터 다수의 스토리지 장치(200)의 정보를 수신하여 누적하고 분석하여 스토리지 장치(200)의 사용처(즉, 용도)별 특성을 도출할 수 있다.
또한, 통계 서버(20)는 미리 설정된 용도별 구성 정보를 저장할 수 있다.
통계 서버(20)는 호스트(100)가 제공한 스토리지 장치(200)의 상태 정보를 분석하여, 현재 스토리지 장치(200)의 상태에 가장 적합한 용도를 결정하여, 호스트(100)에게 알려줄 수 있다. 아울러, 통계 서버(20)는 결정된 용도에 맞는 구성 정보를 호스트(100)에게 제공할 수 있다.
통계 서버(20)는 여러 스토리지 장치(200)의 정보를 누적하여 분석함으로써, 초기에 설정된 용도별 구성 정보를 변경하거나 업데이트할 수 있다.
다른 실시예에서는, 호스트(100)가 미리 설정된 용도별 구성 정보를 저장할 수 있다. 예컨대, 호스트(100)는 통계 서버(20)로부터 용도별 구성 정보를 수신하여 저장할 수 있다. 또한, 통계 서버(20)의 용도별 구성 정보가 업데이트되면, 이를 수신하여 용도별 구성 정보를 변경할 수 있다.
또한, 호스트(100)가 직접 스토리지 장치(200)의 정보를 분석하여, 현재 스토리지 장치(200)의 상태에 가장 적합한 용도를 결정하고, 결정된 용도에 맞는 구성을 설정할 수 있다.
따라서, 실시예에 따라, 스토리지 장치(200)의 상태 정보를 분석하는 기능, 분석된 상태 정보를 바탕으로 현재 스토리지 장치(200)의 상태에 가장 적합한 용도를 결정하는 기능, 결정된 용도에 맞는 구성을 설정하는 기능 등은 호스트(100)에 구현될 수도 있고, 통계 서버(20)에 구현될 수도 있으며, 호스트(100)와 통계 서버(20)에 분산 구현될 수도 있다.
도 2는 본 발명의 실시예에 따른 전자 시스템(10a)의 개략적인 구성 블록도이다. 도 2를 참조하면, 전자 시스템(10a)은 호스트(100a) 및 스토리지 장치(storage device, 200)를 포함한다.
호스트(100a)는 프로세서(110), 메모리(120), 디바이스 인터페이스(130) 및 사용자 인터페이스(140)를 포함한다.
프로세서(110)는 호스트(100a)의 전반적인 동작을 제어할 수 있다. 예를 들어, 프로세서(110)는 시스템-온-칩(SoC, System-on-Chip)으로 구현될 수 있다. 프로세서(110)는 범용 프로세서, 특수 목적 프로세서 등을 포함할 수 있다.
메모리(120)는 프로세서(110)의 동작 메모리일 수 있다. 메모리(120)는 프로세서(110)에 의해 구동되는 코드들 및 데이터를 저장할 수 있다.
메모리(120)는 리드 온리 메모리(ROM) 및 랜덤 액세스 메모리(RAM)를 포함할 수 있다. RAM은 DRAM, SRAM, SDRAM 등과 같은 휘발성 랜덤 액세스 메모리로 구현될 수도 있고, FRAM, PRAM, MRAM, RRAM 등과 같은 불휘발성 랜덤 액세스 메모리로 구현될 수도 있다.
디바이스 인터페이스(130)는 프로세서(110)와 스토리지 장치(200) 사이의 통신을 중개할 수 있다. 디바이스 인터페이스(130)는 프로세서(110)와 함께 하나의 반도체 집적 회로, 예컨대, SoC로 집적될 수 있다.
스토리지 장치(200)는 디바이스 인터페이스(130)를 통해 프로세서(110)와 통신할 수 있다. 스토리지 장치(200)는 프로세서(110)에 의해 액세스될 수 있다. 스토리지 장치(200)는 비휘발성 메모리를 포함하는 비휘발성 메모리 기반의 저장 장치일 수 있다.
스토리지 장치(200)는 호스트(100a)에 내장되는 임베디드 저장 장치, 예컨대, eMMC (embodied MultiMedia Card)를 포함할 수 있다.
또한, 스토리지 장치(200)는 호스트(100a)에 착탈 가능한 저장 장치, 예컨대, SD 카드, MMC(MultiMedia Card), 또는 SSD(solid state drive)를 포함할 수 있다.
사용자 인터페이스(140)는 프로세서(110)의 제어에 따라 사용자와 통신할 수 있다. 예를 들어, 사용자 인터페이스(140)는 키보드, 키패드, 버튼, 터치 패널, 터치 스크린, 터치 패드, 터치 볼, 마이크, 센서 등과 같은 사용자 입력 인터페이스들을 포함할 수 있다. 사용자 인터페이스(140)는 LCD (Liquid Crystal Display), OLED (Organic Light Emitting Diode) 디스플레이 장치, AMOLED (Active Matrix OLED) 디스플레이 장치, LED, 스피커 등과 같은 사용자에게 데이터 등을 출력하기 위한 장치를 포함할 수 있다.
호스트(100a)는 도시된 구성요소들 외에 다른 구성요소들을 더 포함할 수 있다. 예컨대, 호스트(100a)는 네트워크 디바이스(미도시), 카메라 모듈(미도시) 등을 더 포함할 수 있다.
네트워크 디바이스(미도시)는 전자 시스템(10a)을 유선 네트워크 또는 무선 네트워크에 접속시킬 수 있는 장치를 의미한다. 카메라 모듈(미도시)은 광학 이미지를 전기적인 이미지로 변환할 수 있는 모듈을 의미한다.
전자 시스템(10a)은 PC(personal computer), 데이터 서버, 또는 휴대용 전자 장치로 구현될 수 있다.
휴대용 전자 장치는 랩탑(laptop) 컴퓨터, 이동 전화기, 스마트 폰 (smart phone), 태블릿 (tablet) PC, PDA(personal digital assistant), EDA (enterprise digital assistant), 디지털 스틸 카메라 (digital still camera), 디지털 비디오 카메라 (digital video camera), PMP(portable multimedia player), PND(personal navigation device 또는 portable navigation device), 휴대용 게임 콘솔(handheld game console), 또는 e-북(e-book)으로 구현될 수 있다.
도 3은 도 2에 도시된 전자 시스템(10a)의 개략적인 소프트웨어 계층을 보여주는 블록도이다. 도 2 및 도 3을 참조하면, 전자 시스템(10a)의 소프트웨어 계층은 어플리케이션(Applications, 101), 운영체제(OS) 및 디바이스 드라이버(Operating System/Device Driver, 103), 그리고 스토리지 장치(200)를 포함한다.
어플리케이션(101)은 호스트(100a)에 설치(install)되어 실행될 수 있는 응용 프로그램이다. 어플리케이션(101)은 최적화 어플리케이션(102)을 포함한다.
최적화 어플리케이션(102)은 호스트(100a)에 연결된 스토리지 장치(200)의 상태 정보를 요청하여 수신하고, 수신한 상태 정보를 사용자가 쉽게 볼 수 있는 데이터로 가공하여 사용자에게 디스플레이할 수 있다. 또한, 최적화 어플리케이션(102)은 직접 또는 통계 서버(20)와 연동하여, 스토리지 장치(200)의 상태 정보를 분석하여 현재 상태에 적합한 용도, 즉, 권장 용도를 결정하고, 결정된 용도에 맞는 구성을 설정할 수 있다.
예컨대, 최적화 어플리케이션(102), 또는 통계 서버(20)는 스토리지 장치(200)로부터 수신한 상태 정보를 바탕으로, 스토리지 장치(200)의 성능, 기대 수명(expected life time), 데이터 신뢰도 등을 예측할 수 있고, 예측된 정보를 용도별 통계 자료와 비교하여 가장 매칭되는 용도를 권장 용도로 결정할 수 있다.
또는 최적화 어플리케이션(102), 또는 통계 서버(20)는 스토리지 장치(200)로부터 수신한 상태 정보를 바탕으로, 스토리지 장치(200)의 기대 수명, 현재까지 사용되었던 사용처(혹은 환경) 등을 예측하고, 예측된 정보와 통계 서버(20)의 통계 정보를 이용하여 향후 사용하기에 적합한 용도를 권장 용도로 알려줄 수 있다. 예를 들어, 스토리지 장치(200)의 현재까지의 사용처가 블랙박스와 같이 쓰기 및 소거가 빈번한 가혹한 상태에서 사용되었다면, 기대 수명이 감소할 것이고, 이 경우 향후에는 블랙 박스가 아닌 디지털 스틸 카메라와 같이 쓰기 동작이 빈번하지 않은 사용처가 권장 용도로 정해질 수 있다.
운영체제(OS, 103)는 프로세서(110)에 의해 구동될 수 있다. 운영체제(OS)는 전자 시스템(10a)의 자원(예를 들어, 메모리, 연산력 등)을 관리할 수 있다. 운영체제(OS)는 어플리케이션들(101)에 자원을 배분할 수 있다. 운영체제(OS)는 어플리케이션들(101)의 요청에 따라, 전자 시스템(10a)의 하드웨어를 액세스할 수 있다.
디바이스 드라이버(103)는 운영체제(OS)에 의해 생성되는 하드웨어 액세스 요청을 하드웨어에 의해 식별 가능한 명령으로 변환할 수 있다. 예컨대, 운영체제(OS)는 자원을 관리하는 논리 명령을 생성하고, 디바이스 드라이버(103)는 운영체제(OS)에 의해 생성된 논리 명령을 물리 명령으로 변환할 수 있다.
스토리지 장치(200)는 OS/디바이스 드라이버(103)로부터 전송되는 명령에 의해 액세스될 수 있다.
스토리지 장치(200)는 표준화된 스토리지 장치 스펙, 예컨대, SD (Secure Digital) 카드, MMC, eMMC 혹은 SSD 스펙(specification)에 따라 제조될 수 있다. 이러한 스펙은 정상 커맨드 외에, 판매자 특화 명령(vendor specific command)를 허용한다. 정상 커맨드는 읽기 동작, 쓰기 동작 등과 같이 통상적으로 사용되는 동작들을 수행하기 위한 읽기 명령, 쓰기 명령 등을 포함할 수 있다. 판매자 특화 명령은 판매자 혹은 제조사가 동작을 정의할 수 있는 명령이다.
본 발명의 실시예에 따르면, 스토리지 장치(200)의 최적화 방법을 제공하기 위하여 상태 정보 요청, 구성 변경 명령, 선택 동작 수행 명령 등과 같은 다수의 판매자 특화 명령이 정의되고, 정의된 판매자 특화 명령에 의해 스토리지 장치(200)의 최적화 방법이 실행될 수 있다.
최적화 어플리케이션(102)은 스토리지 장치(200)로 판매자 특화 명령을 발급할 수 있고, 또한, 스토리지 장치(200)로부터 판매자 특화 응답(예컨대, 후술하는 완료 보고 등)을 수신할 수 있다.
도 4는 본 발명의 다른 실시 예에 따른 전자 시스템(10b)의 개략적인 구성 블록도이다. 도 4를 참조하면, 전자 시스템(10b)은 호스트(100b)와 외부 스토리지 장치(200b)를 포함한다.
호스트(100b)는 프로세서(110), 메모리(120), 디바이스 인터페이스(130), 사용자 인터페이스(140), 리더(135) 및 임베디드 스토리지 장치(200a)를 포함한다.
도 4의 전자 시스템(10b)의 구성 및 동작은 도 2의 전자 시스템(10a)의 구성 및 동작과 유사하므로, 설명의 중복을 피하기 위하여, 차이점 위주로 기술한다.
도 2의 전자 시스템(10a)과 비교하면, 도 4의 전자 시스템(10b)은 리더(135)를 더 포함한다. 도 4의 전자 시스템(10b)은 또한, 임베디드 스토리지 장치(200a)와 외부 스토리지 장치(200b)를 모두 포함할 수 있다.
리더(135)는 디바이스 인터페이스(130)를 통해 프로세서(110)와 통신할 수 있다. 리더(135)는 프로세서(110)의 제어에 따라, 외부 스토리지 장치(200b)를 제어할 수 있다.
외부 스토리지 장치(200b)는 도 2의 전자 시스템(10a)과 같이, 디바이스 인터페이스(150)를 통해 프로세서(110)와 통신할 수도 있고, 도 4의 전자 시스템(10b)과 같이, 리더(135) 및 디바이스 인터페이스(130)를 통해 프로세서(110)와 통신할 수도 있다.
리더(135)는 미리 정해진 통신 프로토콜에 따라 디바이스 인터페이스(130)와 통신한다. 예를 들어, 리더(135)는 USB 프로토콜에 따라 디바이스 인터페이스(130)와 통신할 수 있으나, 이에 한정되는 것은 아니다.
도 5는 본 발명의 실시 예에 따른 스토리지 장치(200)의 개략적인 구성 블록도이다. 도 5를 참조하면, 스토리지 장치(200)는 디바이스 컨트롤러(210) 및 비휘발성 메모리(250)를 포함한다.
디바이스 컨트롤러(210)는 호스트(100a 또는 100b, 이하 100으로 통칭함)와 비휘발성 메모리(200) 사이에서 데이터 통신을 제어한다.
디바이스 컨트롤러(210)는 CPU(220), RAM(230), ROM(235), 및 호스트 인터페이스(240)를 포함한다.
CPU(220)는 스토리지 장치(200)의 동작을 전반적으로 제어한다.
CPU(220)는 호스트 인터페이스(240)를 통해 수신되는 커맨드 및 어드레스에 응답하여, 비휘발성 메모리(250)를 액세스할 수 있다.
RAM(230)는 CPU(220)의 동작 메모리일 수 있다. RAM(230)는 버퍼 메모리 또는 캐시 메모리일 수 있다. RAM(230)는 SRAM, DRAM, SDRAM, FRAM, PRAM, MRAM, RRAM 등과 같은 휘발성 또는 비휘발성 랜덤 액세스 메모리를 포함할 수 있다.
ROM(235)은 롬 코드(ROM 코드)를 저장할 수 있다. ROM 코드는 스토리지 장치(200)에 전원이 인가되면 가장 먼저 실행될 수 있다.
호스트 인터페이스(240)는 호스트(200)와의 통신을 중개할 수 있다.
호스트 인터페이스(240)는 호스트(200)로부터 발급되는 명령을 수신하고, 수신된 명령을 해석하고 해석의 결과에 따라 응답을 생성할 수 있다. 호스트 인터페이스(240)는 또한 명령에 따른 데이터를 호스트(200)로부터 수신하거나, 호스트(200)로 전송할 수 있다.
일 실시예에서 비휘발성 메모리(250)는 낸드(NAND) 플래시 메모리인 것으로 가정한다. 그러나, 본 발명의 실시예가 이에 한정되는 것은 아니며, 비휘발성 메모리(250)는, FRAM, PRAM, MRAM, RRAM, EEPROM 등을 포함할 수 있다. 비휘발성 메모리(250)는 다수의 메모리 소자(CE0~CE3)를 포함할 수 있다.
비휘발성 메모리(250)는 또한, 다수의 메모리 블록들을 포함할 수 있다. 비휘발성 메모리(250)는 사용자가 데이터를 라이트하거나 리드할 수 있는 사용자 저장 영역과 사용자가 사용할 수 없는 비사용자 저장 영역으로 구분될 수 있다.
비사용자 저장 영역에는 FTL 메타 데이터가 저장될 수 있다.
메타 데이터는 디바이스 컨트롤러(210)에서 스토리지 장치(200)의 운영을 위해 관리하는 데이터로써, 예를 들면, 맵핑 테이블(Mapping table), 성능향상을 위한 알고리즘에 사용되는 데이터, 오류 블럭 관리 테이블(Bad block management table), 소거 횟수(erase count)와 같은 스토리지 장치(200)의 상태 정보 및 기타 디바이스 운용상 필요한 데이터 등을 포함할 수 있다.
도 6은 본 발명의 실시예에 따른 스토리지 장치의 최적화 방법을 나타내는 플로우차트이다. 도 6의 스토리지 장치의 최적화 방법은 도 2 또는 도 4에 도시된 전자 시스템(10a 또는 10b, 이하 통칭하여 10이라 함)에서 실행될 수 있다.
도 6을 참조하면, 호스트(100)의 최적화 어플리케이션(102)은 스토리지 장치(200)로 상태 정보를 요청하여(S110), 스토리지 장치(200)로부터 상태 정보를 읽어 온다(S110).
실시예에 따라, 스토리지 장치(200)로의 상태 정보 요청(S110)은 미리 정해진 시점(예컨대, 스토리지 장치(200)의 부팅 또는 리셋시)에, 호스트(100)에서 최적화 어플리케이션(102)이 실행되면 수행될 수도 있고, 또는, 사용자에게 상태 정보 요청을 할 것인지를 선택할 수 있도록 한 다음 사용자가 상태 정보 요청을 선택하면, 실행될 수도 있다.
스토리지 장치(200)의 상태 정보의 일 예가 표 1에 나타나 있다.
이를 참조하면, 상태 정보는 정적(static) 상태 정보와 동적(dynamic) 상태 정보를 포함할 수 있다.
특성 정적 상태 정보 동적 상태 정보
정보 LSB 백업 여부 매핑 방식 오버 프로비젼 비율 낸드 타입 평균 소거 횟수 WAI
예시 O
X
Page
Block
Hybrid
2%
3%
SLC
MLC
TLC
100
200
1
7
정적 상태 정보는 FTL 구조와 연관되어 있으며 변경이 가능하지만, 한 번 설정이 되면 수명이 다할 때까지 그 속성이 변경되지 않는다. 동적 상태 정보는 사용 패턴에 따라 해당 정보가 변경되는 정보로서, 동일한 구성을 가지는 스토리지 장치(200)에 대해서 사용자가 어떠한 환경에서 사용하느냐에 따라 해당 정보는 바뀔 수 있다.
정적 상태 정보의 초기 값은 기 설정된 유효 값이고, 동적 상태 정보의 초기 값은 유효하지 않은 값이다.
호스트가 초기에 스토리지 장치(200)를 인식하면 동적 상태 정보의 유효한 값은 없게 된다. 하지만, 호스트는 정적 상태 정보를 통해 현재 어떠한 구성으로 스토리지 장치(200)가 구성되어 있는지 알 수 있다.
정적 상태 정보는 LSB(Least Significant Bit) 백업 지원 정보, 매핑 방식 정보, 오버 프로비젼 비율 정보, 및 낸드 타입 정보를 포함할 수 있으나, 이에 한정되는 것은 아니다. 예컨대, 정적 상태 정보는 캐시 온/오프 정보 등을 더 포함할 수 있다.
LSB 백업 지원 정보는 스토리지 장치(200)가 LSB 백업을 지원하는지 여부를 나타내는 정보이고, 매핑 방식 정보는 스토리지 장치(200)가 어떤 매핑 방식(예컨대, 페이지 매핑 방식, 블록 매핑 방식 또는 하이브리드 매핑 방식 등)을 사용하는지를 나타내는 정보이다.
오버 프로비젼 비율 정보는 비휘발성 메모리(250)의 전체 메모리 영역 중 비사용자 저장 영역의 비율을 나타내는 정보이다. 예컨대, 전제 메모리 영역을 100으로 가정하고, 100 중에서 2가 비사용자 저장 영역으로 설정된 경우, 오버 프로비젼 비율은 2%이다. 낸드 타입 정보는 메모리셀이 싱글-레벨 셀(SLC: single-level cell), 멀티-레벨 셀(MLC: multi-level cell), 또는 트리플-레벨 셀(TLC: Triple-level cell)인지를 나타내는 정보이다.
SLC는 1-비트에 상응하는 정보를 저장할 수 있고, MLC는 2-비트에 상응하는 정보를 저장할 수 있고, TLC는 3-비트에 상응하는 정보를 저장할 수 있다.
동적 상태 정보는 평균 소거 횟수(erase count) 정보 및 WAI 정보를 포함할 수 있다.
호스트(100)는 스토리지 장치(200)의 상태 정보를 수신하면, 이를 사용자에게 제공할 수 있다. 예컨대, 최적화 어플리케이션(102)은 스토리지 장치(200)로부터 읽어온 상태 정보를 사용자에게 디스플레이할 수 있다(S130).
도 7a 내지 도 7e는 각각 본 발명의 실시예에 따른 최적화 어플리케이션(102)의 디스플레이 화면의 예시를 나타낸다.
도 7a 내지 도 7e를 함께 참조하면, 최적화 어플리케이션(102)은 디스플레이를 통해 스토리지 장치(200)로부터 수신한 현재의 상태 정보를 표시할 수 있다.
먼저 도 7a에 도시된 바와 같이, 최적화 어플리케이션(102)은 호스트 정보(host information) 및 현재 상태 정보를 사용자에게 디스플레이할 수 있다. 현재 상태 정보는 정적 상태 정보인 LSB 백업 정보, 매핑 방식 정보, 오버 프로비젼 비율 정보, 및 낸드 타입 정보를 포함할 수 있다.
도 7a의 실시예에서는, LSB 백업 정보는 현재 LSB 백업 기능이 '디스에이블'된 상태임을 나타내고, 매핑 방식 정보는 현재 사용되는 매핑 방식은 하이브리드 매핑 방식임을 나타내며, 오버 프로비젼 비율 정보은 전체 메모리 영역 중 2%가 비사용자 저장 영역으로 설정되어 있음을 나타내고, 낸드 타입 정보는 낸드 메모리 셀이 TLC 임을 나타낸다.
최적화 어플리케이션(102)은 현재 상태 정보와 함께 호스트(혹은 용도) 정보를 디스플레이할 수 있다. 호스트 정보는 스토리지 장치(200)의 현재 용도(사용처)를 나타내는 정보이다. 도 7a의 실시예에서는, 스토리지 장치(200)는 디지털 스틸 카메라용으로 설정되어 있음을 알 수 있다.
도 7b를 참조하면, 최적화 어플리케이션(102)은 또한, 장치 정보-예컨대, 스토리지 장치(200)의 시리얼 번호, 펌웨어 버전, 용량 정보, 헬쓰 상태 정보 등-를 디스플레이할 수 있다.
최적화 어플리케이션(102)은 또한, 스토리지 장치(200)의 현재 사용량(device fullness), 즉 전체 메모리 영역 중 데이터가 저장된 영역의 비율(예컨대, 70%)을 디스플레이할 수 있다.
호스트는 스토리지 장치(200)의 상태 정보를 분석하여(S140), 권장 용도를 판단하여 사용자에게 표시할 수 있다(S150). 예컨대, 최적화 어플리케이션(102)은 상기 상태 정보를 분석한 정보를 미리 저장된 용도별 통계자료와 비교하여, 가장 매칭되는 용도를 찾을 수 있다(S150).
예를 들어, 스토리지 장치(200)의 상태 정보를 분석한 결과, 스토리지 장치(200)가 LSB 백업을 지원하는 저장 장치이고, 낸드 타입이 MLC이면 비교적 높은 신뢰성을 요구하는 자동차 네비게이션 시스템(CNS), 즉 블랙박스를 권장 용도로 추천할 수 있다. 반면에, 스토리지 장치(200)가 LSB 백업을 지원하지 않고, 낸드 타입이 TLC이면 높은 신뢰성을 요구하는 블랙 박스 보다는 디지털 스틸 카메라(DSC)나 디지털 비디오 카메라(DVC)를 권장 용도로 추천할 수 있다.
최적화 어플리케이션(102)은 디스플레이를 통해 '권장 용도'를 표시함으로써 사용자로 하여금 권장 용도를 선택할 수 있도록 한다(S160).
도 7c의 실시예에서는 권장 용도가 디지털 비디오 카메라인 경우이다. 이에 따라, 최적화 어플리케이션(102)은 권장 용도(또는 권장 호스트)로서 디지털 비디오 카메라를 표시하고, 사용자가 디지털 비디오 카메라를 선택할 수 있도록 한다.
최적화 어플리케이션(102)은 또한, 권장 용도와 함께, 기대 수명(expected lifetime)을 산출하여 사용자에게 제공할 수 있다.
도 7c의 실시예에서는 권장 호스트가 하나인 경우를 도시하나, 권장 용도가 둘 이상인 경우도 가능하다.
이 경우, 최적화 어플리케이션(102)은 둘 이상의 권장 용도를 우선 순위 정보 없이 표시하거나, 혹은 우선 순위를 정하여 제1 권장 용도와 제2 권장 용도로서 표시할 수도 있다.
표시된 용도 중 어느 하나의 용도가 사용자에 의하여 선택되면(S160의 Yes), 최적화 어플리케이션(102)은 선택된 용도에 맞는 구성을 설정한다.
상술한 바와 같이, 최적화 어플리케이션(102)은 용도별로 미리 설정된 구성 정보들을 가지고 있을 수 있다.
표 2는 용도별 구성의 예시를 나타내는 표이다.
용도 LSB 백업 매핑 방식 오버 프로비젼
비율
낸드 타입
DSC/ DVC 불필요 Block Don't Care Don't Care
스마트폰 불필요 Page 2% 이상 Don't Care
CNS 필요 Don't Care Don't Care SLC 또는 MLC
표 2를 참조하면, 최적화 어플리케이션(102)은 자동차 네비게이션 시스템(CNS)용 구성, 스마트폰용 구성, 카메라(DSC/DVC)용 구성 등을 미리 테이블화한 정보를 가지고 있을 수 있다.
다른 실시예에서는, 최적화 어플리케이션(102)은 통계 서버(20)로부터 용도별 미리 설정된 구성 정보를 제공받을 수 있다.
최적화 어플리케이션(102)은 스토리지 장치(200)로 구성 변경 요청을 발급한다. 구성 변경 요청은 하나 이상의 판매자 특화 명령으로 구성될 수 있다.
본 발명의 실시 예에 따른 호스트(100)는 정상 커맨드 및 어드레스를 이용하여, 판매자 특화 명령을 발급할 수 있다. 예를 들어, 최적화 어플리케이션은 미리 정해진 규칙에 따라, 판매자 특화 명령에 대응하는 정상 커맨드 및 어드레스를 선택할 수 있다. 최적화 어플리케이션은 선택된 정상 커맨드 및 어드레스를 발급함으로써, 특정 판매자 특화 명령을을 발급할 수 있다.
CPU(220)는 호스트 인터페이스(240)를 통해 정상 커맨드 및 어드레스를 수신하고, 수신된 정상 커맨드 및 어드레스에 따라 비휘발성 메모리(250)를 액세스할 수 있다.
스토리지 장치(200)는 구성 변경 요청에 응답하여 비휘발성 메모리의 구성을 변경한다. 변경이 완료되면, 동작 완료 응답을 호스트로 전송할 수 있다.
예컨대, 도 7c에 도시된 권장 용도인 디지털 카메라(혹은 디지털 비디오 카메라)를 사용자가 선택하는 경우, 최적화 어플리케이션(102)은 표 2와 같이 미리 설정된 용도별 구성에서 디지털 카메라용 구성을 선택하고, 스토리지 장치(200)로 선택된 구성으로 변경할 것을 요청하는 구성 변경 요청을 발급한다.
예컨대, 최적화 어플리케이션(102)은 디지털 카메라용 구성에 따라, 스토리지 장치(200)로 LSB 백업을 디스에이블하고, 매핑 방식을 블록 매핑 방식으로 변경할 것을 요청할 수 있다. 디지털 카메라용 구성에 따르면, 오버 프로비젼 비율과 낸드 타입은 '상관없음(don't care)'이므로, 별도의 구성 변경이 필요치 않을 수 있다.
도 6의 스토리지 장치의 최적화 방법에 따르면, 스토리지 장치(200)의 상태 정보를 분석하여 권장 용도를 사용자에게 알려주고, 스토리지 장치(200)의 구성을 선택된 용도에 따라 자동으로 변경한다.
도 6의 실시예는 스토리지 장치(200)를 사용한 후 얼마간의 시간이 흐른 후, 혹은 사용자가 스토리지 장치(200)의 용도를 변경하고자 하는 경우에 수행될 수 있으나, 이에 한정되는 것은 아니다.
도 8은 본 발명의 다른 실시예에 따른 스토리지 장치의 최적화 방법을 나타내는 플로우차트이다. 도 8의 스토리지 장치의 최적화 방법 역시 도 2 또는 도 4에 도시된 전자 시스템(10a 또는 10b, 이하 통칭하여 10이라 함)에서 실행될 수 있다. 도 8의 방법은 스토리지 장치(200)를 구매한 사용자가 스토리지 장치(200)를 사용하기 전에 자신의 용도에 맞게 구성을 설정하기 위해 수행될 수 있으나, 이에 한정되는 것은 아니다. 실시예에 따라, 스토리지 장치(200)를 사용한 후 얼마간의 시간이 흐른 후, 혹은 사용자가 스토리지 장치(200)의 용도를 변경하고자 하는 경우에 수행될 수도 있다.
최적화 어플리케이션(102)은 상술한 바와 같이, 용도별로 미리 설정된 구성 정보들을 가지고 있을 수 있다(S210).
호스트(100)에서 최적화 어플리케이션(102)이 실행되면, 최적화 어플리케이션(102)은 선택 가능한 용도를 사용자에게 표시할 수 있다(S220). S220 단계 이전에, 도 6에서 도시된 S110 단계 내지 S140 단계가 수행될 수도 있다.
도 7d를 참조하면, 최적화 어플리케이션(102)은 '용도 선택' 또는 '용도 변경'을 선택할 수 있는 GUI(Graphic User Interface) 화면을 디스플레이할 수 있다. 예컨대, 메모리 최적화 어플리케이션(102)은 스토리지 장치(200)의 용도로서, 디지털 스틸 카메라(DSC: Digital Still Camera), 디지털 비디오 카메라(DVC: Digital Video Camera), 스마트 폰, 자동차 네비게이션 시스템(CNS: Car Navigation System)을 사용자에게 디스플레이하여, 사용자가 어느 하나를 선택하도록 할 수 있다(S220).
사용자가 화면에 표시된 용도 중 어느 하나의 용도를 선택하면, 최적화 어플리케이션(102)은 선택된 용도에 맞는 구성을 선택할 수 있다(S240).
최적화 어플리케이션(102)은 스토리지 장치(200)로 구성 변경 요청을 발급한다(S250). 구성 변경 요청은 하나 이상의 판매자 특화 명령으로 구성될 수 있다.
스토리지 장치(200)는 구성 변경 요청에 응답하여 비휘발성 메모리의 구성을 변경한다(S260). 변경이 완료되면, 동작 완료 응답을 호스트로 전송할 수 있다(S270).
예컨대, 도 7d에 도시된 용도들 중 사용자가 자동차 네비게이션 시스템(CNS)을 선택하는 경우, 최적화 어플리케이션(102)은 표 2와 같이 미리 설정된 용도별 구성에서 CNS용 구성을 선택하고, 스토리지 장치(200)로 선택된 구성으로 변경할 것으로 요청하는 구성 변경 요청을 발급한다.
예컨대, 최적화 어플리케이션(102)은 CNS용 구성에 따라, LSB 백업을 인에이블하기 위한 LSB 백업 인에이블 명령을, 발급할 수 있다. 스토리지 장치(200)는 LSB 백업 인에이블 명령에 응답하여 LSB 백업 관련 레지스터를 설정하고, 정해진 시점마다 LSB 페이지에 대한 백업을 수행할 수 있다.
CNS용 구성에 따르면, 매핑 방식과 오버프로비젼 비율은 '상관없음(don't care)'이므로, 이와 관련해서는 별도의 구성 변경이 필요치 않을 수 있으나, 이에 한정되는 것은 아니다. 따라서, 최적화 어플리케이션(102)은 선택된 용도에 맞는 구성으로 스토리지 장치(200)의 구성을 변경하기 위하여 매핑 변경 명령 및 오버프로비젼 비율 변경 명령을 발급할 수 있다.
스토리지 장치(200)는 매핑 변경 명령에 응답하여 지정된 매핑 방식(예컨대, 블록 매핑, 페이지 매핑 또는 하이브리드 매핑)으로 변경할 수 있고, 오버프로비젼 비율 변경 명령에 응답하여 오버 프로비전 비율을 지정된 비율로 변경할 수 있다. 이를 위하여, 스토리지 장치(200)는 하나 이상의 메모리 블록의 소거, 병합 등을 수행할 수 있다.
최적화 어플리케이션(102)에서 스토리지 장치(200)의 구성 변경이나 최적화를 위하여 발급하는 명령들은 미리 정의된 판매자 특화 명령들일 수 있다.
본 발명의 실시예에 따르면, 사용자가 스토리지 장치(200)를 구매한 후 자신이 사용하고자 하는 용도에 맞게 스토리지 장치(200)의 구성을 최적화할 수 있다.
또한, 본 발명의 실시예에 따르면, 사용자가 스토리지 장치(200)를 구매하여 특정 용도로 사용하다가, 용도를 변경하고자 하는 경우 변경하려는 용도에 맞게 스토리지 장치(200)의 구성을 최적화할 수 있다.
예컨대, 사용자가 현재 DSC용 최적화된 스토리지 장치(200)를 가지고 있다고 가정하고, 해당 스토리지 장치(200)를 CNS 용도로 사용하고 싶다면, 도 7d에 도시된 바와 같이, '용도 변경' GUI 화면에서 CNS를 선택하면 된다. 이렇게 되면 CNS향으로 스토리지 장치(200)의 구성 요소를 변경하라는 요청이 스토리지에 전달되며, 스토리지는 표 2와 같이 CNS용에 맞는 구성으로 설정이 변경된다.
또한, 예를 들어, SD 카드와 같은 외장형 스토리지의 경우 그 용도가 많기 때문에 다양한 호스트에서 사용이 가능하며, 기존에 사용하던 SD 카드를 새로 구매한 호스트에 사용할 수도 있다. 이때 본 발명의 실시예에 따르면, 기존에 사용한 상태에 따라 새로 구매한 호스트에서 사용 가능한지(권장 용도인지) 혹은 사용 가능하다면 얼마만큼 사용가능한지(기대 수명) 등을 알 수 있다.
도 9는 본 발명의 다른 실시예에 따른 스토리지 장치의 최적화 방법을 나타내는 플로우차트이다. 도 8의 스토리지 장치의 최적화 방법 역시 도 2 또는 도 4에 도시된 전자 시스템(10a 또는 10b, 이하 통칭하여 10이라 함)에서 실행될 수 있다.
도 9의 스토리지 장치의 최적화 방법은 도 6의 스토리지 장치의 최적화 방법과 유사하므로, 설명의 중복을 피하기 위하여 차이점 위주로 기술한다.
도 6의 스토리지 장치의 최적화 방법에 따르면, 최적화 어플리케이션(102)이 직접 스토리지 장치(200)의 상태 정보를 분석하여 현재 상태에 적합한 용도, 즉, 권장 용도를 결정하는 반면에, 도 9의 스토리지 장치의 최적화 방법에 따르면, 통계 서버(20)가 용도(호스트)별 구성 정보를 저장하고(S310), 최적화 어플리케이션(102)은 상태 정보를 통계 서버(20)로 제공하여(S320), 통계 서버(20)로부터 권장 용도를 결정하고 수신한다(S350).
통계 서버(20)는 호스트로부터 제공받은 스토리지 장치(200)의 상태를 누적하여 분석함으로써, 초기에 설정된 용도별 구성 정보를 변경하거나 업데이트할 수 있다(S330).
또한, 통계 서버(20)는 호스트(100)가 제공한 스토리지 장치(200)의 상태 정보를 분석하여(S340), 현재 스토리지 장치(200)의 상태에 가장 적합한 용도를 결정하여, 호스트(100)에게 알려줄 수 있다(S350).
S150 단계 이후에, 도 6에서 도시된 S160 단계 내지 S190 단계가 수행될 수 있다.
도 10은 본 발명의 다른 실시예에 따른 스토리지 장치의 최적화 방법을 나타내는 플로우차트이다. 도 10의 스토리지 장치의 최적화 방법 역시 도 2 또는 도 4에 도시된 전자 시스템(10a 또는 10b, 이하 통칭하여 10이라 함)에서 실행될 수 있다.
도 10의 스토리지 장치의 최적화 방법은 도 6의 스토리지 장치의 최적화 방법과 유사하므로, 설명의 중복을 피하기 위하여 차이점 위주로 기술한다.
도 10의 스토리지 장치의 최적화 방법에 따르면, 최적화 어플리케이션(102)은 스토리지 장치(200)의 상태 정보를 바탕으로 현재 스토리지 장치(200)에서 수행하면 도움이 될 만한 권장 동작을 알려 준다(S450).
도 7e를 참조하면, 최적화 어플리케이션(102)은 권장 동작으로서, 리드 리클레임(Read Reclaim) 동작, 백그라운드 동작(BKOPS), 및 메모리 조각 모음(Defragmentation)을 표시한다(S450).
사용자가 해당 버튼을 클릭하여 권장 동작 중 하나를 선택하면(S460의 Yes), 최적화 어플리케이션(102)은 스토리지 장치(200)로 동작 수행 명령을 발급한다(S470). 스토리지 장치(200)는 동작 수행 명령에 응답하여 해당 동작을 수행하고(S480), 동작이 완료되면, 동작 완료 응답을 호스트로 전송할 수 있다(S490).
도 11은 도 10의 실시예에서, 메모리 조각 모음이 선택되는 경우의 플로우차트이다.
예컨대, 도 7e에 표시된 권장 동작 중 메모리 조각 모음(Defragmentation)을 사용자가 선택한 경우(S510의 Yes)이다. 이 경우, 최적화 어플리케이션(102)은 스토리지 장치(200)로 메모리 조각 모음(Defragmentation) 명령을 발급하고(S520). 스토리지 장치(200)는 해당 명령에 응답하여 메모리 조각 모음을 수행할 수 있다(S530 내지 S550).
메모리 조각 모음은 가비지 컬렉션 대상 블록이 있는지를 체크하여(S530), 가비지 컬렉션 대상 블록이 있으면, 가비지 컬렉션을 수행하고(S540), 이에 따라 메타 데이터를 업데이트한다(S550)
즉, 메모리 조각 모음은 가비지 컬렉션 대상 블록이 없을 때까지 가비지 컬렉션을 수행함으로써, 실행될 수 있다.
스토리지 장치(200)는 메모리 조각 모음이 완료되면, 동작 완료 응답을 호스트로 전송할 수 있다(S560). 그러면, 최적화 어플리케이션(102)은 메모리 조각 모음이 완료되었음을 사용자에게 표시할 수 있다(S570).
본 발명은 도면에 도시된 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
10, 10a, 10b: 전자 시스템
100, 100a, 100b: 호스트
110: 프로세서
120: 메모리
130: 디바이스 인터페이스
135: 리더
140: 사용자 인터페이스
200, 200a, 200b: 스토리지 장치
220: CPU
230: RAM
235: ROM
240: 호스트 인터페이스

Claims (10)

  1. 비휘발성 메모리를 포함하는 스토리지 장치를 호스트의 어플리케이션 프로그램을 이용하여 최적화 방법에 있어서,
    상기 스토리지 장치로 상태 정보를 요청하여 수신하는 단계;
    상기 상태 정보를 분석하여 권장 용도를 결정하는 단계;
    상기 결정된 권장 용도를 사용자에게 표시하는 단계;
    상기 표시된 용도 중 어느 하나의 용도가 상기 사용자에 의하여 선택되면, 상기 선택된 용도에 맞는 구성을 설정하는 단계; 및
    상기 스토리지 장치로 구성 변경 요청을 발급하는 단계를 포함하는 스토리지 장치의 최적화 방법.
  2. 제1항에 있어서, 상기 방법은
    복수의 용도에 대하여 용도별 구성 정보를 미리 설정하여 저장하는 단계를 더 포함하는 스토리지 장치의 최적화 방법.
  3. 제2항에 있어서, 상기 권장 용도를 결정하는 단계는
    상기 상태 정보를 분석한 정보를 상기 용도별 구성 정보와 비교하는 단계를 포함하는 스토리지 장치의 최적화 방법.
  4. 제2항에 있어서, 상기 방법은
    서버에 미리 저장된 상기 용도별 구성 정보를 네트워크를 통하여 수신하는 단계를 더 포함하는 스토리지 장치의 최적화 방법.
  5. 제2항에 있어서, 상기 구성 변경 요청은
    하나 이상의 판매자 특화 명령을 포함하는 스토리지 장치의 최적화 방법.
  6. 제1항에 있어서, 상기 방법은
    상기 권장 동작을 사용자에게 표시하는 단계; 및
    상기 표시된 동작 중 어느 하나의 동작이 상기 사용자에 의하여 선택되면, 상기 선택 동작 수행 명령을 상기 스토리지 장치로 발급하는 단계를 더 포함하는 스토리지 장치의 최적화 방법.
  7. 제6항에 있어서, 상기 권장 동작은
    메모리 블록의 조각 모음, 백그라운드 동작, 및 리드 리클레임 동작 중 하나인 스토리지 장치의 최적화 방법.
  8. 제1항에 있어서,
    상기 상태 정보는 정적 상태 정보 및 동적 상태 정보를 포함하고,
    상기 정적 상태 정보는 LSB(Least Significant Bit) 백업 지원 정보, 매핑 방식 정보, 오버 프로비젼 비율 정보, 및 낸드 타입 정보 중 적어도 하나를 포함하고,
    상기 동적 상태 정보는 평균 소거 횟수(erase count) 정보 및 쓰기 가속 인덱스(WAI: Write Acceleration Index) 정보 중 적어도 하나를 포함하는 스토리지 장치의 최적화 방법.
  9. 제2항에 있어서, 상기 구성 변경 요청은
    LSB 백업을 인에이블하거나 디스에이블하는 명령;
    매핑 방식을 변경하는 명령;
    상기 비휘발성 메모리의 전제 저장 영역 중 비사용자 저장 영역의 비율을 변경하는 명령; 및
    메모리 타입을 변경하는 명령 중 적어도 하나를 포함하는 스토리지 장치의 최적화 방법.
  10. 비휘발성 메모리를 포함하는 스토리지 장치를 호스트의 어플리케이션 프로그램을 이용하여 최적화 방법에 있어서,
    복수의 용도에 대하여 용도별 구성 정보를 저장하는 단계;
    선택 가능한 하나 이상의 용도를 사용자에게 표시하는 단계;
    상기 표시된 용도 중 어느 하나의 용도가 상기 사용자에 의하여 선택되면, 상기 용도별 구성 정보 중 상기 선택된 용도에 맞는 구성을 선택하는 단계;
    선택된 구성에 따라, 상기 스토리지 장치로 구성 변경 요청을 발급하는 단계; 및
    상기 구성 변경 요청에 응답하여, 상기 스토리지 장치가 상기 비휘발성 메모리의 구성을 변경하는 단계를 포함하는 스토리지 장치의 최적화 방법.
KR1020140100548A 2014-08-05 2014-08-05 비휘발성 메모리 기반의 스토리지 장치의 최적화 방법 KR20160016421A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020140100548A KR20160016421A (ko) 2014-08-05 2014-08-05 비휘발성 메모리 기반의 스토리지 장치의 최적화 방법
US14/812,489 US20160041788A1 (en) 2014-08-05 2015-07-29 Method of optimizing non-volatile memory based storage device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140100548A KR20160016421A (ko) 2014-08-05 2014-08-05 비휘발성 메모리 기반의 스토리지 장치의 최적화 방법

Publications (1)

Publication Number Publication Date
KR20160016421A true KR20160016421A (ko) 2016-02-15

Family

ID=55267452

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140100548A KR20160016421A (ko) 2014-08-05 2014-08-05 비휘발성 메모리 기반의 스토리지 장치의 최적화 방법

Country Status (2)

Country Link
US (1) US20160041788A1 (ko)
KR (1) KR20160016421A (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200129703A (ko) * 2019-05-09 2020-11-18 에스케이하이닉스 주식회사 컨트롤러 및 이를 포함하는 메모리 시스템
US11392310B2 (en) 2019-10-31 2022-07-19 SK Hynix Inc. Memory system and controller

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160074237A (ko) * 2014-12-18 2016-06-28 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
TWI553481B (zh) * 2015-09-30 2016-10-11 宇瞻科技股份有限公司 固態硬碟的資料管理方法、寫入管理系統及其方法
TW201818248A (zh) * 2016-11-15 2018-05-16 慧榮科技股份有限公司 可應用於資料儲存裝置之記憶體管理方法
CN109901782A (zh) * 2017-12-07 2019-06-18 上海宝存信息科技有限公司 数据储存装置与数据储存方法
US11209998B2 (en) 2018-06-11 2021-12-28 Western Digital Technologies, Inc. Adjustment of storage device parameters based on workload characteristics
US10956059B2 (en) 2019-07-31 2021-03-23 EMC IP Holding Company LLC Classification of storage systems and users thereof using machine learning techniques
US11461676B2 (en) 2019-07-31 2022-10-04 EMC IP Holding Company LLC Machine learning-based recommendation engine for storage system usage within an enterprise

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8656256B2 (en) * 2010-07-07 2014-02-18 Stec, Inc. Apparatus and method for multi-mode operation of a flash memory device
US8850172B2 (en) * 2010-11-15 2014-09-30 Microsoft Corporation Analyzing performance of computing devices in usage scenarios
KR101739556B1 (ko) * 2010-11-15 2017-05-24 삼성전자주식회사 데이터 저장 장치, 사용자 장치 및 그것의 주소 맵핑 방법
KR101979392B1 (ko) * 2012-05-17 2019-05-16 삼성전자주식회사 불휘발성 메모리 장치 및 그것의 프로그램 방법
KR102025263B1 (ko) * 2012-10-05 2019-09-25 삼성전자주식회사 메모리 시스템 및 그것의 읽기 교정 방법
JP6104676B2 (ja) * 2013-04-01 2017-03-29 株式会社東芝 メモリシステム、制御システムおよび寿命予測方法
US20150186257A1 (en) * 2013-12-26 2015-07-02 Anand S. Ramalingam Managing a transfer buffer for a non-volatile memory
US9454321B1 (en) * 2014-05-30 2016-09-27 Emc Corporation Workload-driven storage configuration management

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200129703A (ko) * 2019-05-09 2020-11-18 에스케이하이닉스 주식회사 컨트롤러 및 이를 포함하는 메모리 시스템
US11392310B2 (en) 2019-10-31 2022-07-19 SK Hynix Inc. Memory system and controller

Also Published As

Publication number Publication date
US20160041788A1 (en) 2016-02-11

Similar Documents

Publication Publication Date Title
KR20160016421A (ko) 비휘발성 메모리 기반의 스토리지 장치의 최적화 방법
US11086537B2 (en) Method and system to perform urgency level garbage collection based on write history of memory blocks
KR102147970B1 (ko) 비휘발성 메모리 기반의 스토리지 디바이스의 복구 방법 및 상기 스토리지 디바이스를 포함하는 전자 시스템의 동작 방법
CN110781096B (zh) 用于通过预测需求时间来执行垃圾收集的设备和方法
KR102098697B1 (ko) 비휘발성 메모리 시스템, 이를 포함하는 시스템 및 상기 비휘발성 메모리 시스템의 적응적 사용자 저장 영역 조절 방법
US8745309B2 (en) Cooperative memory management
US9244619B2 (en) Method of managing data storage device and data storage device
US11747989B2 (en) Memory system and method for controlling nonvolatile memory
US9436267B2 (en) Data storage device
US9195579B2 (en) Page replacement method and memory system using the same
TWI502594B (zh) 用於快閃儲存裝置之半區塊管理
KR102435890B1 (ko) 스토리지 장치의 어드레스 맵핑 방법 및 동작 방법
KR20140142035A (ko) 메모리 컨트롤러 및 상기 메모리 컨트롤러의 동작방법
KR20150020385A (ko) 데이터 저장 장치, 그것의 동작 방법 및 그것을 포함하는 데이터 처리 시스템
US10503647B2 (en) Cache allocation based on quality-of-service information
US11392309B2 (en) Memory system for performing migration operation and operating method thereof
KR102649131B1 (ko) 메모리 시스템 내 대용량 데이터 저장이 가능한 블록에서의 유효 데이터 체크 방법 및 장치
CN113110799A (zh) 用于针对损耗均衡操作选择牺牲块的控制器和方法
US20190079830A1 (en) Data storage device and operating method thereof
KR20150055413A (ko) 데이터 저장 장치
US20200364157A1 (en) Apparatus and method for transmitting map data in memory system
JP2014032582A (ja) 画像処理装置、画像処理装置のストレージデバイス制御方法、及びプログラム
CN112306401A (zh) 存储装置和数据存储方法
CN110837341A (zh) 存储器系统及其操作方法
KR20150041873A (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