KR20180051704A - 스토리지 장치를 포함하는 사용자 장치 및 그것의 트림 관리 방법 - Google Patents
스토리지 장치를 포함하는 사용자 장치 및 그것의 트림 관리 방법 Download PDFInfo
- Publication number
- KR20180051704A KR20180051704A KR1020160147674A KR20160147674A KR20180051704A KR 20180051704 A KR20180051704 A KR 20180051704A KR 1020160147674 A KR1020160147674 A KR 1020160147674A KR 20160147674 A KR20160147674 A KR 20160147674A KR 20180051704 A KR20180051704 A KR 20180051704A
- Authority
- KR
- South Korea
- Prior art keywords
- trim
- pattern
- storage device
- command
- device driver
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/16—File or folder operations, e.g. details of user interfaces specifically adapted to file systems
- G06F16/162—Delete operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3409—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
- G06F11/3419—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment by assessing time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
- G06F11/3485—Performance evaluation by tracing or monitoring for I/O devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/1847—File system types specifically adapted to static storage, e.g. adapted to flash memory or SSD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0625—Power saving in storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7205—Cleaning, compaction, garbage collection, erase control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0042—Universal serial bus [USB]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Stored Programmes (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
본 발명에 따른 스토리지 장치의 트림 관리 방법은, 응용 프로그램이 장치 드라이버의 패턴 체크 기능을 활성화시키는 단계, 상기 응용 프로그램이 특정 패턴의 파일을 파일 시스템에 쓰기 요청하는 단계, 상기 파일 시스템이 상기 파일을 상기 스토리지 장치의 관리 단위 데이터로 변환하여 상기 장치 드라이버에 전달하는 단계, 상기 장치 드라이버가 상기 관리 단위 데이터의 데이터 패턴이 상기 특정 패턴과 일치하는지 체크하는 단계, 그리고 상기 체크 결과에 따라 상기 장치 드라이버가 상기 관리 단위 데이터에 대응하는 스토리지 영역을 트림 처리하기 위한 트림 명령어를 상기 스토리지 장치에 전달하는 단계를 포함한다.
Description
본 발명은 반도체 메모리 장치에 관한 것으로, 좀 더 구체적으로는 스토리지 장치를 포함하는 사용자 장치 및 그것의 트림 관리 방법에 관한 것이다.
불휘발성 메모리 장치의 일종으로 플래시 메모리 장치가 있다. 플래시 메모리 장치는 낮은 소비 전력, 고집적도, 작은 크기 및 경량화의 장점을 가진다. 최근 들어서는, 스마트폰, 테블릿 PC, 디지털 카메라 등과 같은 휴대용 정보 기기의 사용이 급증함에 따라, 플래시 메모리 장치가 데이터 스토리지 장치로서 널리 사용되고 있다.
스토리지 장치에 저장된 파일을 호스트에서 삭제하는 경우가 있다. 이때, 호스트는 삭제된 내용의 파일에 관련된 메타 데이터를 처리함으로써 삭제된 파일을 무효화(Invalidate)시킨다. 하지만, 삭제된 파일은 실제로는 스토리지 장치에 무효화된 데이터(Invalid data)로 마킹되어 존재한다. 이러한 무효화된 데이터는 스토리지 장치는 유효한 데이터로 인식하여 관리할 것이다. 따라서, 무효화된 데이터는 스토리지 장치의 성능을 저하시키고 가용 메모리 용량을 감소시킨다. 이러한 무효화된 데이터를 실제로 스토리지 장치에서 삭제하기 위해서 호스트는 '트림 명령(TRIM command)'을 스토리지 장치에 전송한다. 그러한 트림 명령은 삭제될 영역을 지정하기 위한 정보(예를 들면, 어드레스 정보)를 포함할 것이다.
플래시 메모리 장치를 포함하는 스토리지 장치(예를 들면, SSD)를 장착하는 호스트 장비로는 다양한 컴퓨터 시스템들이 포함될 수 있다. 예를 들면, 서버라든지, 데이터 센터 또는 개인용 컴퓨터(PC) 등에 스토리지 장치가 연결될 수 있다. 호스트 장비에는 다양한 운영 체제(OS)에 의해서 구동될 수 있다. 그러나 호스트 장비의 운영 체제의 종류에 따라 스토리지 장치의 메모리 관리 기능이 제한받는 경우가 존재한다. 특히, 트림 명령어의 실행은 운영 체제나 파일 시스템 또는 호스트의 특성에 크게 영향을 받고 있는 실정이다.
따라서, 운영 체제나 파일 시스템, 또는 호스트의 특성에 구애되지 않고 스토리지 장치의 트림 동작을 범용적으로 지원할 수 있는 기술이 요구되고 있다.
본 발명의 목적은 호스트의 운영 체제나 파일 시스템 등에 의존적이지 않은 스토리지 장치의 트림 방법을 제공하는 데 있다.
상기 목적을 달성하기 위한 본 발명에 따른 스토리지 장치의 트림 관리 방법은, 응용 프로그램이 장치 드라이버의 패턴 체크 기능을 활성화시키는 단계, 상기 응용 프로그램이 특정 패턴의 파일을 파일 시스템에 쓰기 요청하는 단계, 상기 파일 시스템이 상기 파일을 상기 스토리지 장치의 관리 단위 데이터로 변환하여 상기 장치 드라이버에 전달하는 단계, 상기 장치 드라이버가 상기 관리 단위 데이터의 데이터 패턴이 상기 특정 패턴과 일치하는지 체크하는 단계, 그리고 상기 체크 결과에 따라 상기 장치 드라이버가 상기 관리 단위 데이터에 대응하는 스토리지 영역을 트림 처리하기 위한 트림 명령어를 상기 스토리지 장치에 전달하는 단계를 포함한다.
상기 목적을 달성하기 위한 본 발명에 따른 사용자 장치는, 트림 명령어에 응답하여 선택된 메모리 영역을 트림 동작으로 처리하는 스토리지 장치, 그리고 워킹 메모리에 로드되는 응용 프로그램, 파일 시스템, 그리고 장치 드라이버를 프로세싱 유닛을 통하여 구동하며, 상기 트림 명령어를 생성하여 상기 스토리지 장치에 제공하는 호스트를 포함하되, 상기 응용 프로그램은 상기 트림 명령어를 생성하기 위하여 상기 장치 드라이버의 패턴 체크 기능을 활성화 또는 비활성화시키며, 상기 파일 시스템을 통해서 특정 데이터를 상기 장치 드라이버에 쓰기 요청하고, 상기 장치 드라이버는 상기 패턴 체크 기능이 활성화된 기간 동안 상기 파일 시스템으로부터 제공되는 상기 특정 데이터의 패턴이 특정 패턴과 일치하는 경우에는 상기 트림 명령어를 생성한다.
이상과 같은 본 발명의 실시 예에 따르면, 호스트의 운영 체제나 파일 시스템에 의존하지 않고 스토리지 장치에 트림 명령을 제공할 수 있다. 본 발명의 트림 관리 방법에 따르면, 응용 프로그램과 장치 드라이버에 의해서 주도되는 트림 기법이 제공된다. 더불어, 장치 드라이버의 트림 동작을 수행하기 위한 패턴 체크 동작은 필요할 경우에만 활성화될 수 있어 스토리지 장치의 트림 동작의 범용성 및 전력 성능의 향상이 기대된다.
도 1은 본 발명의 실시 예에 따른 사용자 장치를 보여주는 블록도이다.
도 2는 본 발명의 실시 예에 따른 호스트(110)에서의 트림 동작을 보여주는 도면이다.
도 3은 도 1의 스토리지 장치에 포함되는 스토리지 컨트롤러를 보여주는 블록도이다.
도 4는 본 발명의 트림을 위한 응용 프로그램의 동작을 보여주는 순서도이다.
도 5는 본 발명의 장치 드라이버의 동작을 보여주는 순서도이다.
도 6은 도 5의 S230 단계의 세부 동작을 예시적으로 보여주는 순서도이다.
도 7은 도 4 내지 도 6에서 설명된 호스트(110)의 응용 프로그램(112), 파일 시스템(114), 그리고 장치 드라이버(116)의 상호 동작들을 보여주는 도면이다.
도 8은 본 발명의 다른 실시 예에 따른 장치 드라이버의 동작을 보여주는 순서도이다.
도 9는 도 8의 S360 단계의 세부 동작을 예시적으로 보여주는 순서도이다.
도 10은 도 8 내지 도 9에서 설명된 호스트(110)의 응용 프로그램(112), 파일 시스템(114), 그리고 장치 드라이버(116)의 상호 관계를 보여주는 도면이다.
도 11은 도 1의 스토리지 장치의 다른 예를 보여주는 블록도이다.
도 12는 본 발명의 다른 실시 예에 따른 사용자 장치를 보여주는 블록도이다.
도 13은 도 12의 호스트에서 수행되는 트림 동작을 예시적으로 보여주는 순서도이다.
도 14는 도 12의 스토리지 장치에서 수행되는 트림 동작을 예시적으로 보여주는 순서도이다.
도 2는 본 발명의 실시 예에 따른 호스트(110)에서의 트림 동작을 보여주는 도면이다.
도 3은 도 1의 스토리지 장치에 포함되는 스토리지 컨트롤러를 보여주는 블록도이다.
도 4는 본 발명의 트림을 위한 응용 프로그램의 동작을 보여주는 순서도이다.
도 5는 본 발명의 장치 드라이버의 동작을 보여주는 순서도이다.
도 6은 도 5의 S230 단계의 세부 동작을 예시적으로 보여주는 순서도이다.
도 7은 도 4 내지 도 6에서 설명된 호스트(110)의 응용 프로그램(112), 파일 시스템(114), 그리고 장치 드라이버(116)의 상호 동작들을 보여주는 도면이다.
도 8은 본 발명의 다른 실시 예에 따른 장치 드라이버의 동작을 보여주는 순서도이다.
도 9는 도 8의 S360 단계의 세부 동작을 예시적으로 보여주는 순서도이다.
도 10은 도 8 내지 도 9에서 설명된 호스트(110)의 응용 프로그램(112), 파일 시스템(114), 그리고 장치 드라이버(116)의 상호 관계를 보여주는 도면이다.
도 11은 도 1의 스토리지 장치의 다른 예를 보여주는 블록도이다.
도 12는 본 발명의 다른 실시 예에 따른 사용자 장치를 보여주는 블록도이다.
도 13은 도 12의 호스트에서 수행되는 트림 동작을 예시적으로 보여주는 순서도이다.
도 14는 도 12의 스토리지 장치에서 수행되는 트림 동작을 예시적으로 보여주는 순서도이다.
앞의 일반적인 설명 및 다음의 상세한 설명 모두 예시적이라는 것이 이해되어야 하며, 청구된 발명의 부가적인 설명이 제공되는 것으로 여겨져야 한다. 참조 부호들이 본 발명의 바람직한 실시 예들에 상세히 표시되어 있으며, 그것의 예들이 참조 도면들에 표시되어 있다. 가능한 어떤 경우에도, 동일한 참조 번호들이 동일한 또는 유사한 부분을 참조하기 위해서 설명 및 도면들에 사용된다.
이하에서는, 플래시 메모리 장치를 사용하는 솔리드 스테이트 드라이버가 본 발명의 특징 및 기능을 설명하기 위한 스토리지 장치의 예로서 사용될 것이다. 하지만, 이 기술 분야에 정통한 사람은 여기에 기재된 내용에 따라 본 발명의 다른 이점들 및 성능을 쉽게 이해할 수 있을 것이다. 본 발명은 다른 실시 예들을 통해 또한, 구현되거나 적용될 수 있을 것이다. 게다가, 상세한 설명은 본 발명의 범위, 기술적 사상 그리고 다른 목적으로부터 상당히 벗어나지 않고 관점 및 응용에 따라 수정되거나 변경될 수 있다.
도 1은 본 발명의 실시 예에 따른 사용자 장치를 간략히 보여주는 블록도이다. 도 1을 참조하면, 사용자 장치(User device, 100)는 호스트(110)와 스토리지 장치(130)를 포함한다. 호스트(110)는 파일 시스템(114)이 제공하는 정보에 의존하지 않고, 장치 드라이버(116)에 의해서 결정되는 트림 명령어(TRIM CMD)를 스토리지 장치(130)에 제공할 수 있다. 좀더 자세히 설명하면 다음과 같다.
호스트(110)는 스토리지 장치(130)에 데이터를 쓰거나, 스토리지 장치(130)에 저장된 데이터를 읽어낸다. 호스트(110)는 스토리지 장치(130)에 데이터를 기입하거나, 스토리지 장치(130)에 저장된 데이터를 독출하는 등의 명령어(CMD)를 생성한다. 호스트(110)는 스토리지 장치(130)의 성능 및 수명을 관리하기 위한 트림 명령어(TRIM CMD)를 생성한다. 호스트(110)는 응용 프로그램(112)과 장치 드라이버(116)에 의해서 주도되는 트림 관리 동작을 수행한다. 그리고 호스트(110)는 트림 관리 동작의 결과로 생성되는 트림 명령어(TRIM CMD)를 스토리지 장치(130)에 제공할 수 있다.
본 발명의 호스트(110)는 프로세싱 유닛(111), 워킹 메모리(113), 인터페이스 회로(115)를 포함한다. 워킹 메모리(113)에는 응용 프로그램(112), 파일 시스템(114), 장치 드라이버(116) 등이 로드될 수 있다. 이 밖에도 워킹 메모리(113)에는 호스트(110)에서 구동되는 다양한 소프트웨어들이 로드될 수 있다.
프로세싱 유닛(111)은 워킹 메모리(113)에 로드된 다양한 소프트웨어들을 실행한다. 프로세싱 유닛(111)은 운영 체제(OS), 응용 프로그램(112)을 실행할 수 있다. 프로세싱 유닛(111)은 동종 멀티-코어 프로세서(Homogeneous Multi-Core Processor) 또는 이종 멀티-코어 프로세서(Heterogeneous Multi-Core Processor)로 제공될 수 있다.
워킹 메모리(113)에는 프로세싱 유닛(111)에서 실행할 응용 프로그램(112), 파일 시스템(114), 장치 드라이버(116)나 처리할 데이터가 로드된다. 그리고 스토리지 장치(130)로 전달될 명령어에 대한 큐(Queue)를 관리하기 위한 입출력 스케줄러와 같은 기능들이 워킹 메모리(113)에 로드될 수 있다.
인터페이스 회로(115)는 호스트(110)와 스토리지 장치(130) 사이에서 물리적인 연결을 제공한다. 장치 드라이버(116)는 인터페이스 회로(115)의 프로토콜이나 정책에 따라 제공될 것이다. 인터페이스 회로(115)는 호스트(110)에서 발행하는 다양한 접근 요청에 대응하는 명령어, 어드레스, 데이터 등을 스토리지 장치(130)와의 인터페이싱 방식으로 변환한다. 인터페이스 회로(115)의 프로토콜로는 USB(Universal Serial Bus), SCSI(Small Computer System Interface), PCI express, ATA, PATA(Parallel ATA), SATA(Serial ATA), SAS(Serial Attached SCSI) 중 적어도 어느 하나일 수 있다.
스토리지 장치(130)는 호스트(110)로부터 제공되는 명령어에 응답하여 불휘발성 메모리 장치(135)에 접근하는 등의 다양한 요청된 동작을 수행할 수 있다. 스토리지 장치(130)는 호스트(110)에서 전송되는 트림 명령어(TRIM CMD)에 따라 선택된 영역에 대한 트림 동작을 수행한다. 트림 동작은, 트림 명령어(TRIM CMD)에 포함되는 어드레스에 의해서 지정된 메모리 영역을 물리적으로 소거하는 동작으로 간주할 수 있다. 트림 명령어(TRIM CMD)에 의해서 무효 데이터(Invalid data)가 존재하는 메모리 영역이 감소될 수 있다. 따라서, 트림 동작을 통해서 쓰기 요청시 즉시 제공할 수 있는 프리 블록(Free block)의 수를 확보할 수 있다. 이러한 동작을 위해 스토리지 장치(130)는 스토리지 컨트롤러(131), 버퍼 메모리(133), 그리고 불휘발성 메모리 장치(135)를 포함할 수 있다.
스토리지 컨트롤러(131)는 호스트(110)와 스토리지 장치(130) 사이에서 인터페이싱을 제공한다. 스토리지 컨트롤러(131)는 호스트(110)로부터의 트림 명령어(TRIM CMD)에 응답하여 불휘발성 메모리 장치(135)의 선택된 영역을 물리적으로 소거할 수 있다. 스토리지 컨트롤러(131)의 좀더 구체적인 동작은 후술하는 도면들에서 상세히 설명될 것이다.
상술한 설명에 따르면, 본 발명의 사용자 장치(100)는 파일 시스템(114)에 의존하지 않고도 스토리지 장치(130)로 제공될 트림 명령어를 생성할 수 있다. 따라서, 다양한 운영 체제나 파일 시스템 환경에서 높은 범용성을 갖는 스토리지 장치(130)를 구현할 수 있다.
도 2는 본 발명의 실시 예에 따른 호스트(110)에서의 트림 동작을 보여주는 도면이다. 도 2를 참조하여, 응용 프로그램(112)과 장치 드라이버(116)에 의해서 주도되는 트림 방법이 설명될 것이다.
응용 프로그램(112)은 스토리지 장치(130)를 관리하기 위한 프로그램으로 제공된다. 응용 프로그램(112)은, 예를 들면, 스토리지 장치(130)를 제어하기 위한 전용 소프트웨어로 제공될 수 있다. 트림 명령어(TRIM CMD)를 제공하기 위해, 본 발명의 응용 프로그램(112)은 파일 시스템(114)으로부터 어드레스 정보를 획득할 필요가 없다. 트림 동작을 위해, 응용 프로그램(112)은 장치 드라이버(116)에 트림 동작을 시작하기 위한 시작 명령어(Start CMD)와 트림 동작의 종료를 위한 정지 명령어(Stop CMD)를 제공한다. 그리고 응용 프로그램(112)은 파일 시스템(114)에 특정 패턴의 파일을 기입하도록 요청할 것이다.
파일 시스템(114)은 운영 체제(OS) 계층에서 자료를 계층적으로 저장, 탐색, 접근, 조작하기 위한 추상적 데이터 구조의 집합으로 정의된다. 즉, 파일 시스템(114)은 운영 체제(OS)나 응용 프로그램(112)과 같은 상위 프로그램에서 접근 요청하는 파일 단위의 데이터를 장치 드라이버(116)에서 관리하는 단위로 변환할 수 있다. 예를 들면, 응용 프로그램(112)에서 특정 파일의 쓰기 요청이 전달되면, 파일 시스템(114)은 스토리지 장치(130)의 미사용 영역(Unused area)의 선택한다. 그리고 파일 시스템(114)은 선택된 영역에 쓰기 요청된 파일을 기입한다. 본 발명의 파일 시스템(114)은 응용 프로그램(112)에서 쓰기 요청되는 특정 패턴의 데이터(예를 들면, Ox00)를 장치 드라이버(116)에 전달한다.
장치 드라이버(116)는 스토리지 장치(130)를 호스트(110)의 운영 체제(OS) 레벨에서 제어하기 위한 제어 모듈이다. 사용자에 의해서 또는 응용 프로그램들(112)로부터 메모리 접근 요청이 발생하면, 장치 드라이버(116)가 호출된다. 장치 드라이버(116)는 스토리지 장치(130)를 제어하기 위한 커널(Kernel)의 소프트웨어 모듈로 제공될 수 있다.
본 발명의 장치 드라이버(116)는 패턴 체커(118)를 포함할 수 있다. 패턴 체커(118)는 파일 시스템(114)으로부터 쓰기 요청되는 데이터가 특정 패턴(예를 들면, Ox00)인지 비교한다. 패턴 체커(118)에 의한 비교 결과에 따라 장치 드라이버(116)는 쓰기 요청된 데이터가 기입될 영역에 대한 트림 명령어(TRIM CMD) 또는 쓰기 명령어를 생성할 수 있다. 장치 드라이버(116)는 응용 프로그램(112)으로부터 제공되는 시작 명령어(Start CMD)에 응답하여 패턴 체커(118)를 턴온(Turn-on)시킨다. 그리고 장치 드라이버(116)는 응용 프로그램(112)으로부터 제공되는 중지 명령어(Stop CMD)에 응답하여 패턴 체커(118)를 턴오프(Turn-off)시킨다. 여기서 패턴 체커(118)는 장치 드라이버(116)에 포함되는 소프트웨어 모듈로 제공될 수 있다. 하지만, 패턴 체커(118)는 다양한 하드웨어나 또는 알고리즘으로 구현될 수 있음을 잘 이해될 것이다.
상술한 응용 프로그램(112), 파일 시스템(114), 그리고 장치 드라이버(116)에 의한 본 발명의 트림 명령어를 생성하기 위한 절차는 다음과 같다.
단계 ①에서, 트림 동작(TRIM operation)을 요청하는 이벤트가 발생하면, 응용 프로그램(112)은 장치 드라이버(116)에 시작 명령어(Start CMD)를 전달한다. 시작 명령어(Start CMD)는 장치 드라이버(116)의 트림 명령어(TRIM CMD)의 생성을 활성화하는 명령어이다.
단계 ②에서, 장치 드라이버(116)는 응용 프로그램(112)의 요청에 응답하여 패턴 체커(118)의 기능을 활성화한다. 즉, 장치 드라이버(116)는 응용 프로그램(112)으로부터의 시작 명령어(Start CMD)에 응답하여 패턴 체커(118)를 턴온 시킨다. 패턴 체커(118)가 턴온되면, 장치 드라이버(116)에 쓰기 요청되는 데이터는 패턴 체커(118)에 의해서 미리 결정된 특정 패턴과 일치하는지 비교된다.
이어지는 단계 ③에서, 응용 프로그램(112)은 미리 정의된 특정 패턴의 파일을 기입하도록 파일 시스템(114)에 요청한다. 즉, 응용 프로그램(112)은 특정 패턴(예를 들면, 0x00)의 데이터를 파일 시스템(114)에 요청한다. 트림 동작을 위해서 파일 시스템(114)에 쓰기 요청되는 특정 패턴은 장치 드라이버(116)에서 턴온된 패턴 체커(118)에 저장되어 있다. 패턴 체커(118)에 저장된 특정 패턴은 응용 프로그램(112)에 의해서 변경되거나 업데이트될 수 있다.
단계 ④에서, 응용 프로그램(112)의 파일 쓰기 요청에 응답하여 파일 시스템(114)은 스토리지 장치(130)의 관리 단위의 데이터로 변환하고, 변환된 데이터의 쓰기 요청을 장치 드라이버(116)에 전달할 것이다. 파일 시스템(114)은 스토리지 장치(130)의 미사용 영역(Unused area)에 대한 정보를 관리하고 있다. 따라서, 파일 시스템(114)은 파일 단위의 쓰기 요청을 스토리지 장치(130)가 인식하는 데이터 단위(예를 들면, 섹터 단위)의 쓰기 요청으로 변환한다. 하나의 파일에 대해서 쓰기 요청되면, 파일 시스템(114)은 파일을 복수의 섹터 단위로 분할하고, 분할된 섹터들을 스토리지 장치(130)의 미사용 영역에 할당한다. 파일 시스템(114)은 분할된 섹터들에 대응하는 데이터와 할당의 결과로 생성되는 어드레스를 장치 드라이버(116)에 쓰기 요청과 함께 제공할 수 있다.
장치 드라이버(116)는 파일 시스템(114)으로부터의 쓰기 요청되는 데이터를 수신한다. 이때, 턴온된 패턴 체커(118)는 수신된 데이터와 미리 정의된 특정 패턴을 비교한다. 만일, 파일 시스템(114)으로부터 수신된 데이터와 특정 패턴이 일치하는 경우, 장치 드라이버(116)는 수신된 데이터에 대응하는 스토리지 장치(130)의 미사용 영역을 처리할 트림 명령어(TRIM CMD)를 생성할 수 있다. 하지만, 파일 시스템(114)으로부터 수신된 데이터와 특정 패턴이 일치하지 않는 경우, 장치 드라이버(116)는 수신된 데이터를 스토리지 장치(130)에 프로그램하기 위한 쓰기 명령어(Write CMD)를 생성할 것이다. 트림 명령어(TRIM CMD) 또는 쓰기 명령어는 쓰기 요청을 받는 즉시 실시간으로 스토리지 장치(130)로 전달될 수 있다. 하지만, 쓰기 요청되는 데이터의 사이즈가 특정 사이즈를 충족할 때까지 대기하다가, 요건이 충족되면 쓰기 명령어나 트림 명령어를 전달할 수도 있을 것이다. 또는, 응용 프로그램(112)으로부터 중지 명령어(Stop CMD)가 전달되면 트림 명령어(TRIM CMD)나 쓰기 명령어(Write CMD)를 스토리지 장치(130)로 전달할 수도 있다. 트림 명령어(TRIM CMD)나 쓰기 명령어(Write CMD)의 전송 시점은 상술한 실시 예에만 국한되지 않음은 잘 이해될 것이다.
단계 ⑤에서, 응용 프로그램(112)은 트림 동작의 종료를 위한 중지 명령어(Stop CMD)를 장치 드라이버(116)에 전달한다. 장치 드라이버(116)의 패턴 체커(118)의 동작은 데이터의 비교를 위해 많은 리소스를 요구한다. 따라서, 패턴 체커(118)가 턴온되고 트림 동작이 활성화되는 경우, 호스트(110)의 성능에 영향을 미칠 수 있다. 트림 동작이 충분히 실행된 것으로 판단되는 경우, 응용 프로그램(112)은 호스트(110)의 성능이나 소모 전력을 고려하여 장치 드라이버(116)에 중지 명령어(Stop CMD)을 전달할 수 있다.
단계 ⑥에서, 장치 드라이버(116)는 패턴 체커(118)를 턴오프(Turn-off)시킨다. 패턴 체커(118)가 턴오프(Turn-off)되면, 트림 동작을 위한 쓰기 데이터와 특정 패턴의 비교 동작은 중지된다. 그리고 패턴 체커(118)가 턴오프되면 장치 드라이버(116)는 쓰기 요청되는 데이터의 패턴에 관계없이 스토리지 장치(130)에 쓰기 명령어를 전달할 것이다.
이상에서는 본 발명의 응용 프로그램(112)과 장치 드라이버(116)에 의한 트림 명령어의 생성 방법이 설명되었다. 응용 프로그램(112)은 스토리지 장치(130)의 트림 동작을 위한 별도의 어드레스 정보를 파일 시스템(114)으로부터 확보할 필요가 없다. 트림 동작을 위해 응용 프로그램(112)은 트림 동작의 시작과 중지를 장치 드라이버(116)에 요청하고, 특정 패턴의 파일 쓰기 요청을 파일 시스템(114)에 전달하기만 하면 된다. 그리고 장치 드라이버(116)는 파일 시스템(114)으로부터 쓰기 요청되는 데이터의 패턴에 따라 쓰기 요청된 스토리지 장치(130)의 메모리 영역에 대한 트림 명령어 또는 쓰기 명령어를 전달한다. 이러한 소프트웨어 구조는 파일 시스템(114)에 크게 의존하지 않는 트림 동작을 가능하게 한다.
도 3은 도 1의 스토리지 장치에 포함되는 스토리지 컨트롤러를 보여주는 블록도이다. 도 3을 참조하면, 스토리지 컨트롤러(131)는 호스트(110)의 명령에 응답하여 불휘발성 메모리 장치(135)에 데이터를 기입하거나 트림 동작을 수행할 수 있다. 스토리지 컨트롤러(131)는 CPU(132), 랜덤 액세스 메모리(이하, RAM)(139), 호스트 인터페이스(134), 버퍼 매니저(136), 그리고 플래시 인터페이스(138)를 포함할 수 있다.
CPU(132)는 스토리지 컨트롤러(131)의 제반 동작을 제어하고, 논리 연산을 수행할 수 있다. CPU(132)는 호스트 인터페이스(134)를 통해 호스트(110)와, 플래시 인터페이스(138)를 통해 불휘발성 메모리 장치(135)와 통신할 수 있다. 그리고 CPU(132)는 버퍼 매니저(136)를 통해 버퍼 메모리(133)를 관리할 수 있다. CPU(132)는 RAM(139)에 로드되는 트림 매니저(TRIM Manager) 모듈을 실행할 수 있다. 트림 매니저(TRIM Manager)에 의해서 CPU(132)는 호스트(110)로부터 제공되는 트림 명령어(TRIM CMD)를 실행할 수 있다. 트림 매니저(TRIM Manager)는 예를 들면 플래시 변환 계층(FTL)의 일부로 제공될 수도 있다. 여기서, CPU(132)는 복수의 코어들로 구성되는 멀티 코어 프로세서로 제공될 수도 있음은 잘 이해될 것이다.
RAM(139)은 CPU(132)의 동작 메모리, 캐시 메모리, 또는 버퍼 메모리로 사용될 수 있다. RAM(139)은 CPU(132)가 실행하는 코드들 및 명령들을 저장할 수 있다. RAM(139)은 CPU(132)에 의해 처리되는 데이터를 저장할 수 있다. RAM(139)은 예시적으로 SRAM(Static RAM)으로 구현될 수 있다. 특히, RAM(139)에는 트림 매니저(TRIM Manager)를 로드할 수 있다. 이뿐 아니라, RAM(139)에는 플래시 변환 계층(FTL)이나 다양한 메모리 관리 모듈이 저장될 수 있다. 플래시 변환 계층(FTL)은 불휘발성 메모리 장치(135)와 호스트(110) 사이에서 인터페이싱을 위해 수행되는 어드레스 맵핑, 가비지 컬렉션, 웨어 레벨링 등의 기능을 수행한다.
호스트 인터페이스(134)는 CPU(132)의 제어에 따라, 호스트(110)와 통신하도록 구성된다. 호스트 인터페이스(134)는 USB (Universal Serial Bus), SATA (Serial AT Attachment), SAS (Serial Attached SCSI), HSIC (High Speed Interchip), SCSI (Small Computer System Interface), PCI (Peripheral Component Interconnection), PCIe (PCI express), NVMe (NonVolatile Memory express), UFS (Universal Flash Storage), SD (Secure Digital), MMC (MultiMedia Card), eMMC (embedded MMC), DIMM (Dual In-line Memory Module), RDIMM (Registered DIMM), LRDIMM (Load Reduced DIMM) 등과 같은 다양한 통신 방식들 중 적어도 하나를 이용하여 통신하도록 구성될 수 있다.
버퍼 매니저(136)는 CPU(132)의 제어에 따라, 버퍼 메모리(133, 도 1 참조)를 제어하도록 구성된다. 버퍼 매니저(136)는 불휘발성 메모리 장치(135, 도 1 참조)와 호스트(110)가 교환하는 데이터를 일시 저장하도록 버퍼 메모리(133)를 제어한다.
플래시 인터페이스(138)는 CPU(132)의 제어에 따라, 불휘발성 메모리 장치(135)와 통신하도록 구성된다. 플래시 인터페이스(138)는 입출력 채널을 통해 커맨드, 어드레스 및 데이터를 불휘발성 메모리 장치(135)와 교환할 수 있다. 플래시 인터페이스(138)는 제어 채널을 통해 제어 신호를 불휘발성 메모리 장치(135)와 교환할 수 있다.
상술한 구성의 스토리지 컨트롤러(131)는 기본적으로 불휘발성 메모리 장치(135) 및 버퍼 메모리(133)를 액세스할 수 있다. 스토리지 컨트롤러(131)는 외부의 요청에 따라 쓰기, 읽기 및 소거를 수행할 수 있다. 스토리지 컨트롤러(131)는 쓰기 요청된 데이터를 불휘발성 메모리 장치(135)에 기입하고, 읽기 요청된 데이터를 불휘발성 메모리 장치(135)로부터 읽어 출력할 수 있다. 특히, 호스트(110)로부터의 트림 명령어(TRIM CMD)에 응답하여 스토리지 컨트롤러(131)는 불휘발성 메모리 장치(135)의 지정된 메모리 영역을 소거할 수 있다.
스토리지 컨트롤러(131)는 버퍼 메모리(133)를 이용하여 스토리지 장치(130)를 관리할 수 있다. 예를 들어, 스토리지 컨트롤러(131)는 불휘발성 메모리 장치(135)에 기입될 데이터 또는 불휘발성 메모리 장치(135)로부터 읽히는 데이터를 버퍼 메모리(133)에 임시로 저장할 수 있다. 스토리지 컨트롤러(131)는 불휘발성 메모리 장치(135)를 관리하는 데에 필요한 메타 데이터를 버퍼 메모리(133)에 로드할 수 있다.
이상에서 본 발명의 스토리지 장치(130) 내에서 트림 명령어(TRIM CMD)를 실행하는 스토리지 컨트롤러(131)의 구성 및 기능이 간략히 설명되었다. 스토리지 장치(130)는 예를 들면, 솔리드 스테이트 드라이브(SSD), 메모리 카드, 임베디드 메모리 카드 중 어느 하나의 형태로 구성될 수 있으나, 본 발명은 여기에 국한되지 않음은 잘 이해될 것이다.
도 4는 본 발명의 트림을 위한 응용 프로그램의 동작을 보여주는 순서도이다. 도 2 및 도 4를 참조하면, 호스트(110)의 응용 프로그램(112)과 장치 드라이버(116)에 의해서 스토리지 장치(130)에 제공될 트림 명령어(TRIM CMD)가 생성될 수 있다.
S110 단계에서, 응용 프로그램(112)은 스토리지 장치(130)에 대한 트림 동작(TRIM Operation)의 실행이 필요한지 판단할 것이다. 응용 프로그램(112)은 스토리지 장치(130)의 성능이나 여유 저장 공간의 부족, 또는 프리 블록(Free block)의 수와 같은 파라미터를 모니터링하여 트림 동작의 실행 여부를 결정할 수 있다.
S120 단계에서, 트림 동작의 실행 요청에 따라 동작 분기가 발생한다. 만일, 트림 동작의 실행 요청이 존재하는 경우(Yes 방향), 절차는 S130 단계로 이동한다. 반면, 트림 동작의 실행 요청이 존재하지 않는 경우(No 방향), 절차는 S110 단계로 복귀한다. 그러면, 응용 프로그램(112)는 트림 동작의 요청을 검출한다.
S130 단계에서, 응용 프로그램(112)은 장치 드라이버(116)에 시작 명령어(Start CMD)를 전송한다. 그러면, 장치 드라이버(116)는 시작 명령어(Start CMD)에 응답하여 패턴 체커(118)를 활성화(Activate) 또는 턴온(Turn-on)시킬 것이다.
S140 단계에서, 응용 프로그램(112)은 파일 시스템(114)에 특정 패턴의 파일에 대한 쓰기 요청을 전송할 것이다. 트림을 위해 쓰기 요청되는 파일의 데이터 패턴을 이하에서는 트림 패턴(TRIM_PTRN)이라 칭하기로 한다. 응용 프로그램(112)은 트림 패턴(TRIM_PTRN)의 파일을 파일 시스템(114)에 제공하여 쓰기 요청할 것이다. 그러면, 파일 시스템(114)은 스토리지 장치(130)의 미사용 영역에 대한 어드레스 정보를 활용하여 트림 패턴(TRIM_PTRN)의 파일을 기입하기 위한 시작 어드레스와 데이터 사이즈 등을 생성하여 장치 드라이버(116)에 제공할 것이다. 장치 드라이버(116)는 패턴 체커(118)를 사용하여 쓰기 요청된 데이터의 패턴이 트림 패턴(TRIM_PTRN)인지를 체크할 것이다. 쓰기 요청된 데이터의 패턴이 트림 패턴(TRIM_PTRN)과 일치하는 경우, 장치 드라이버(116)는 쓰기 요청된 어드레스 영역에 대한 트림 명령어(TRIM CMD)를 스토리지 장치(130)에 제공할 것이다. 반면, 쓰기 요청된 데이터의 패턴이 트림 패턴(TRIM_PTRN)과 다른 경우, 장치 드라이버(116)는 쓰기 요청된 데이터의 쓰기 명령어(Write CMD)를 스토리지 장치(130)에 제공할 것이다.
S150 단계에서, 응용 프로그램(112)은 트림 동작이 충분히 실행된 상태인지의 여부에 따라 트림 동작을 중단하거나 지속할 수 있다. 응용 프로그램(112)이 더이상 트림 동작을 수행할 필요가 없는 것으로 판단하는 경우, 절차는 S160 단계로 이동한다. 반면, 응용 프로그램(112)이 트림 동작의 추가 실행이 필요하다고 판단한 경우, 절차는 S140 단계로 복귀한다. 그러면, S140 단계에서 응용 프로그램(112)은 트림 패턴(TRIM_PTRN)의 파일을 파일 시스템(114)에 제공하고, 파일 시스템(114)으로부터 트림 패턴(TRIM_PTRN)의 데이터 쓰기 요청을 받은 장치 드라이버(116)는 트림 명령어(TRIM CMD)를 스토리지 장치(130)로 전송할 것이다.
S160 단계에서, 응용 프로그램(112)은 중지 명령어(Stop CMD)를 장치 드라이버(116)에 전달한다. 그러면, 장치 드라이버(116)는 패턴 체커(118)의 기능을 비활성화(Inactivate) 또는 턴오프(Turn-Off)시키고, 트림을 위해 수행되는 패턴 비교 동작을 중단한다. 이후에는 쓰기 요청되는 데이터는 패턴의 여부에 관계없이 스토리지 장치(130)에 기입될 것이다.
이상에서는 호스트(110)에서 트림 명령어를 생성하기 위한 응용 프로그램(112), 파일 시스템(114), 그리고 장치 드라이버(116)의 동작이 간략히 설명되었다. 특히, 응용 프로그램(112)은 시작 명령어(Start CMD)와 중지 명령어(Stop CMD)로 장치 드라이버(116)의 트림 기능을 활성화/비활성화할 수 있다. 트림 기능이 활성화되는 구간에서, 응용 프로그램(112)은 특정 패턴의 데이터를 파일 시스템(114)에 제공하기만 하면 된다. 결국, 응용 프로그램(112)이 트림을 위한 별도의 어드레스 정보를 파일 시스템(114)으로부터 제공받을 필요가 없어, 파일 시스템(114)에 비의존적인 트림 기능이 제공될 수 있다.
도 5는 본 발명의 장치 드라이버의 동작을 보여주는 순서도이다. 도 5를 참조하면, 장치 드라이버(116)는 응용 프로그램(112)과 파일 시스템(114)으로부터 제공되는 명령어나 데이터에 응답하여 쓰기 명령어(Write CMD)나 트림 명령어(TRIM CMD)를 스토리지 장치(130)에 제공할 것이다.
S210 단계에서, 장치 드라이버(116)는 응용 프로그램(112)으로부터 전달된 시작 명령어(Start CMD)의 수신 여부를 검출한다. 시작 명령어(Start CMD)는 트림 동작의 활성화를 의미한다.
S220 단계에서, 장치 드라이버(116)는 시작 명령어(Start CMD)의 수신 여부에 따라 동작 분기를 수행한다. 만일, 시작 명령어(Start CMD)가 수신되지 않았다면(No 방향), 절차는 S210 단계로 복귀한다. 하지만, 시작 명령어(Start CMD)가 수신된 경우(Yes 방향), 절차는 S230 단계로 이동한다.
S230 단계에서, 장치 드라이버(116)는 패턴 체커(118)를 턴온시킨다. 그리고 패턴 체커(118)는 파일 시스템(114)으로부터 제공되는 쓰기 데이터가 트림 패턴(TRIM_PTRN)과 일치하는지 검출할 것이다. 쓰기 데이터의 트림 패턴(TRIM_PTRN)과 일치 여부에 따라, 장치 드라이버(116)는 쓰기 요청된 데이터가 저장될 스토리지 영역에 대한 트림 명령어(TRIM CMD)나 쓰기 명령어(Write CMD)를 생성할 것이다. 하지만, 트림 명령어(TRIM CMD)나 쓰기 명령어(Write CMD)의 전달 시점은 패턴 체커(118)가 턴오프된 이후일 수 있음은 잘 이해될 것이다.
S240 단계에서, 장치 드라이버(116)는 중지 명령어(Stop CMD)의 수신 여부에 따라 동작 분기를 수행한다. 만일, 중지 명령어(Stop CMD)가 수신되지 않았다면(No 방향), 절차는 S230 단계로 복귀한다. 하지만, 중지 명령어(Stop CMD)가 수신된 경우(Yes 방향), 절차는 S250 단계로 이동한다.
S250 단계에서, 장치 드라이버(116)는 패턴 체커(118)를 비활성화(Inactivate) 또는 턴오프(Turn-off)시킨다. 그러면, 패턴 체커(118)에 의한 패턴 비교 동작은 중지된다. 이후로는 파일 시스템(114)으로부터 제공되는 쓰기 데이터는 패턴에 관계없이 스토리지 장치(130)에 기입될 것이다.
이상의 도 5에서는 장치 드라이버(116)의 트림 명령어(TRIM CMD)를 생성하는 방법이 설명되었다. 패턴 체커(118)가 턴온된 상태에서는 특정 패턴으로 제공되는 쓰기 데이터가 저장될 스토리지 영역은 트림 동작의 대상이 된다. 하지만, 패턴 체커(118)가 턴오프된 상태에서는 쓰기 데이터는 지정된 스토리지 영역에 프로그램될 것이다.
도 6은 도 5의 S230 단계의 세부 동작을 예시적으로 보여주는 순서도이다. 도 6을 참조하면, 장치 드라이버(116)는 쓰기 요청되는 데이터의 패턴에 따라 쓰기 명령어(Write CMD) 또는 트림 명령어(TRIM CMD)를 스토리지 장치(130)로 전달할 수 있다. S230 단계는 패턴 체커(118)가 턴온된 상태에서의 동작을 나타낸다.
S231 단계에서, 장치 드라이버(116)는 파일 시스템(114)으로부터 제공되는 쓰기 데이터(Write data)를 수신한다. 장치 드라이버(116)에 제공되는 쓰기 데이터는 응용 프로그램(112)에 의해서 파일 시스템(114)에 제공된 쓰기 파일(Write file)이 파일 시스템(114)의 포맷에 따라 분리되거나 조합된 데이터이다. 하지만, 파일 시스템(114)에서 전달되는 쓰기 데이터(Write data)의 데이터 패턴은 응용 프로그램(112)에서 전달된 패턴을 유지할 것이다.
S232 단계에서, 장치 드라이버(116)는 파일 시스템(114)으로부터 제공된 쓰기 데이터(Write data)와 내부에 저장된 트림 패턴(TRIM_PTRN)을 비교한다. 트림 패턴(TRIM_PTRN)은 미리 정의된 트림을 위한 데이터 패턴이다. 응용 프로그램(112)은 트림 명령어를 제공하기 위해 트림 패턴(TRIM_PTRN)을 갖는 파일의 쓰기 요청을 파일 시스템(114)에 제공한다. 그리고 파일 시스템(114)은 트림 패턴(TRIM_PTRN)을 갖는 파일을 스토리지 장치(130)의 관리 단위(예를 들면, 섹터 단위)로 변경하여 장치 드라이버(116)에 쓰기 요청할 것이다.
S233 단계에서, 쓰기 데이터(Write data)와 트림 패턴(TRIM_PTRN)의 비교 결과에 따른 동작 분기가 수행된다. 만일, 쓰기 데이터(Write data)와 트림 패턴(TRIM_PTRN)이 동일한 경우(Yes 방향), 절차는 S234 단계로 이동한다. 하지만, 쓰기 데이터(Write data)와 트림 패턴(TRIM_PTRN)이 다른 것으로 검출되는 경우(No 방향), 절차는 S235 단계로 이동한다.
S234 단계에서, 장치 드라이버(116)는 쓰기 데이터(Write data)에 대응하는 어드레스(예를 들면, LBA)와 함께 트림 명령어(TRIM CMD)를 스토리지 장치(130)로 전송한다.
S235 단계에서, 장치 드라이버(116)는 쓰기 데이터(Write data)를 지정된 어드레스(예를 들면, LBA)의 스토리지 영역에 기입하도록 쓰기 명령어(Write CMD)를 스토리지 장치(130)로 전송한다.
S236 단계에서, 장치 드라이버(116)는 파일 시스템(114)으로부터 추가적으로 쓰기 요청되는 쓰기 데이터(Write data)가 존재하는지 검출할 것이다. 추가로 파일 시스템(114)으로부터 쓰기 데이터(Write data)가 전달되지 않으면(No 방향), S230 단계의 제반 절차들은 종료된다. 하지만, 파일 시스템(114)으로부터 후속되는 쓰기 데이터(Write data)가 전달되면(Yes 방향), 절차는 S231 단계로 복귀한다.
상술한 S230 단계의 세부 동작은 본 발명의 이해를 돕기 위한 일 실시 예에 불과하다. 따라서, 트림 명령어(TRIM CMD)가 발행되는 시점은 상술한 내용에 국한되지 않으며, 다양하게 조정될 수 있음은 잘 이해될 것이다.
도 7은 도 4 내지 도 6에서 설명된 호스트(110)의 응용 프로그램(112), 파일 시스템(114), 그리고 장치 드라이버(116)의 상호 동작들을 보여주는 도면이다. 도 7을 참조하면, 파일 시스템(114)의 지원에 의존하지 않고 트림 동작이 수행될 수 있다.
S10 단계에서, 응용 프로그램(112)은 트림 요청(TRIM Request)의 발생을 검출하다.
S11 단계에서, 응용 프로그램(112)은 장치 드라이버(116)에 트림 동작의 시작을 지시하는 시작 명령어(Start CMD)를 전송한다.
S12 단계에서, 장치 드라이버(116)는 시작 명령어(Start CMD)에 따라 패턴 체커(118)를 턴온시킨다.
S12-1에서, 시작 명령어(Start CMD)에 대한 응답으로 장치 드라이버(116)는 패턴 체커(118)가 턴온된 상태임을 응용 프로그램(112)에 전달한다. 응답 과정을 지시하는 S12-1 단계는 필요시 생략되어도 무방하다.
S13 단계에서, 응용 프로그램(112)은 파일 시스템(114)에 특정 패턴을 갖는 파일의 쓰기 요청을 전달한다.
S14 단계에서, 파일 시스템(114)은 응용 프로그램(112)으로부터 파일 쓰기 요청에 응답하여 쓰기 요청된 파일을 스토리지 장치(130)의 미사용 영역에 할당한다. 그리고 할당된 영역에 대응하는 데이터 단위(예를 들면, 섹터 단위)로 장치 드라이버(116)에 쓰기 요청할 것이다.
S15 단계에서, 장치 드라이버(116)는 파일 시스템(114)으로부터 쓰기 요청된 데이터의 패턴과 트림 패턴(TRIM_PTRN)이 일치하는지 비교할 것이다.
만일 쓰기 요청된 데이터의 패턴이 트림 패턴(TRIM_PTRN)과 동일하다면, S16단계에서, 장치 드라이버(116)는 스토리지 장치(130)에 트림 명령어(TRIM CMD)를 전송할 것이다.
하지만, 쓰기 요청된 데이터의 패턴이 트림 패턴(TRIM_PTRN)과 다르다면, S17단계에서, 장치 드라이버(116)는 스토리지 장치(130)에 쓰기 명령어(Write CMD)를 전송할 것이다.
스토리지 장치(130)는 트림 명령어(TRIM CMD)에 응답하여, 지시된 어드레스 범위에 대한 소거를 동반하는 트림 동작을 수행할 것이다. 하지만, 쓰기 명령어(Write CMD)를 수신하는 경우, 스토리지 장치(130)는 쓰기 데이터를 대응하는 어드레스 범위의 스토리지 영역에 프로그램할 것이다.
S18 단계에서, 응용 프로그램(112)이 중지 명령어(Stop CMD)를 장치 드라이버(116)에 전달할 수 있다.
S19 단계에서, 장치 드라이버(116)는 패턴 체커(118)를 턴오프시키고, 트림 동작을 종료시킨다.
만일, 중지 명령어(Stop CMD)가 전달되지 않는 경우, 응용 프로그램(112), 파일 시스템(114), 그리고 장치 드라이버(116)는 S13 단계 내지 S17 단계를 반복할 것이다.
이상에서 트림 동작을 위한 응용 프로그램(112), 파일 시스템(114), 그리고 장치 드라이버(116)의 상호 동작이 예시적으로 설명되었다. 하지만, 트림 명령어(TRIM CMD)나 쓰기 명령어(Write CMD)의 전달은 중지 명령어(Stop CMD)의 전달 이후에 실행될 수 있음은 잘 이해될 것이다. 이러한 실시 예는 후술하는 도면을 통해서 설명하기로 한다.
도 8은 본 발명의 다른 실시 예에 따른 장치 드라이버의 동작을 보여주는 순서도이다. 도 8을 참조하면, 장치 드라이버(116)는 응용 프로그램(112)과 파일 시스템(114)으로부터 제공되는 명령어나 데이터에 응답하여 트림 명령어(TRIM CMD)를 스토리지 장치(130)에 제공할 것이다. 이때, 트림 명령어(TRIM CMD)는 패턴 체커(118)가 턴오프된 이후에 누적된 체크 결과를 참조하여 스토리지 장치(130)에 전달될 수 있다. 여기서, S310 단계 및 S320 단계는 도 5의 S310 단계 및 S220 단계와 실질적으로 동일하면, 이들 단계에 대한 설명은 생략하기로 한다.
S310 단계 및 S320 단계에서의 검출 결과로 시작 명령어(Start CMD)가 장치 드라이버(116)에 전달될 것이다.
S330 단계에서, 장치 드라이버(116)는 시작 명령어(Start CMD)에 따라 패턴 체커(118)를 턴온시킨다. 그리고 패턴 체커(118)는 파일 시스템(114)으로부터 제공되는 쓰기 데이터(Write data)와 트림 패턴(TRIM_PTRN)이 일치하는지 비교할 것이다. 하지만, 비교 결과들은 특정 메모리에 저장되고, 트림 명령어(TRIM CMD)나 쓰기 명령어(Write CMD)의 생성은 수행되지 않는다.
S340 단계에서, 장치 드라이버(116)는 중지 명령어(Stop CMD)의 수신 여부에 따라 동작 분기를 수행한다. 만일, 중지 명령어(Stop CMD)가 수신되지 않았다면(No 방향), 절차는 S330 단계로 복귀한다. 하지만, 중지 명령어(Stop CMD)가 수신된 경우(Yes 방향), 절차는 S350 단계로 이동한다.
S350 단계에서, 장치 드라이버(116)는 패턴 체커(118)를 비활성화 또는 턴오프(Turn-off)시킨다. 그러면, 패턴 체커(118)에 의한 패턴 비교 동작은 중지된다. 이후로는 파일 시스템(114)으로부터 제공되는 쓰기 데이터는 패턴에 관계없이 스토리지 장치(130)에 기입될 것이다.
S360 단계에서, 장치 드라이버(116)는 S330 단계에서 누적된 비교 결과들을 사용하여 트림 명령어(TRIM CMD)나 쓰기 명령어(Write CMD)를 생성할 것이다. 즉, 장치 드라이버(116)는 쓰기 요청된 데이터들 중에서 트림 패턴(TRIM_PTRN)과 일치하는 데이터들이 저장될 영역을 트림 명령어(TRIM CMD)로 처리한다. 반면, 장치 드라이버(116)는 쓰기 요청된 데이터들 중에서 트림 패턴(TRIM_PTRN)과 불일치하는 데이터들을 일반적인 쓰기 명령어로 처리할 것이다.
이상의 도 8에서는 장치 드라이버(116)의 트림 명령어(TRIM CMD)를 생성하는 다른 방법이 설명되었다. 도 5의 동작 방식과 도 8의 동작 방식은 호스트(110)의 하드웨어, 운영 체제 등의 환경이나 스토리지 장치(130)의 특성에 따라 선택되거나 조합될 수 있을 것이다.
도 9는 도 8의 S360 단계의 세부 동작을 예시적으로 보여주는 순서도이다. 도 9를 참조하면, 장치 드라이버(116)는 파일 시스템(114)으로부터 제공되는 쓰기 데이터의 패턴 체크 결과를 누적하고, 누적된 패턴 체크 결과에 따라 트림 명령어(TRIM CMD)를 스토리지 장치(130)로 전달할 수 있다.
S361 단계에서, 장치 드라이버(116)는 패턴 체커(118)에 의해서 S330 단계(도 8 참조)에서 수행된 패턴 체크 결과를 수집한다. 즉, 장치 드라이버(116)는 쓰기 요청된 데이터들의 패턴이 트림 패턴(TRIM_PTRN)과 일치하는지의 여부를 저장된 메모리 영역으로부터 읽어낸다.
S362 단계에서, 장치 드라이버(116)는 파일 시스템(114)으로부터 제공된 쓰기 데이터 중에서 트림 패턴(TRIM_PTRN)과 일치하는 것들과 일치하지 않는 것들을 분류한다.
S363 단계에서, 장치 드라이버(116)는 분류 결과에 따라 동작 분기를 수행한다. 쓰기 데이터가 트림 패턴(TRIM_PTRN)과 동일한 경우(Yes 방향), 절차는 S364 단계로 이동한다. 반면, 쓰기 데이터가 트림 패턴(TRIM_PTRN)과 다른 경우(No 방향), 절차는 S364 단계로 이동한다.
S364 단계에서, 장치 드라이버(116)는 쓰기 요청된 데이터들이 저장될 스토리지 영역을 트림으로 처리하기 위한 트림 명령어(TRIM CMD)를 생성하여 스토리지 장치(130)로 전송한다.
S365 단계에서, 장치 드라이버(116)는 쓰기 요청된 데이터들을 스토리지 영역에 프로그램하기 위한 쓰기 명령어를 스토리지 장치(130)로 전송한다.
이상에서 예시적으로 기술된 S360 단계의 세부 동작은, 본 발명의 이해를 돕기 위한 하나의 실시 예에 불과하다. 따라서, 트림 명령어(TRIM CMD)가 발행되는 시점은 상술한 설명에만 국한되지 않으며, 다양하게 조정될 수 있음은 잘 이해될 것이다.
도 10은 도 8 내지 도 9에서 설명된 호스트(110)의 응용 프로그램(112), 파일 시스템(114), 그리고 장치 드라이버(116)의 상호 관계를 보여주는 도면이다. 도 10을 참조하면, 장치 드라이버(116)는 패턴 체크의 결과를 누적하고 조합하여 트림 명령어(TRIM CMD)를 생성할 수 있다.
S20 단계에서, 응용 프로그램(112)은 트림 요청(TRIM Request)이 필요한 이벤트를 검출한다. 예를 들면, 스토리지 장치(130)에 기입 가능한 메모리 용량이 임계치에 도달하는 경우나 프리 블록의 수가 기준치보다 적어지는 상황이 발생할 수 있다.
S21 단계에서, 응용 프로그램(112)은 장치 드라이버(116)에 트림 동작의 시작을 지시하는 시작 명령어(Start CMD)를 전송한다.
S22 단계에서, 장치 드라이버(116)는 시작 명령어(Start CMD)에 따라 패턴 체커(118)를 턴온시킨다.
S22-1에서, 시작 명령어(Start CMD)에 대한 응답으로 장치 드라이버(116)는 패턴 체커(118)가 턴온된 상태임을 응용 프로그램(112)에 전달한다. 장치 드라이버(116)의 응답 과정을 나타내는 S22-1 단계는 필요시 생략되어도 무방하다.
S23 단계에서, 응용 프로그램(112)은 파일 시스템(114)에 특정 패턴을 갖는 파일의 쓰기 요청을 전달한다. 이때, 응용 프로그램(112)은 복수의 파일들에 대한 쓰기 요청을 파일 시스템(114)에 전송할 수도 있다.
S24 단계에서, 파일 시스템(114)은 응용 프로그램(112)으로부터 쓰기 요청된 파일들을 파일 시스템(114)의 관리 단위로 변환한다. 그리고 파일 시스템(114)은 관리 단위의 데이터를 스토리지 장치(130)의 미사용 영역에 할당한다. 할당된 영역에 대응하는 데이터 단위(예를 들면, 섹터 단위)로 장치 드라이버(116)에 쓰기 요청할 것이다.
S25 단계에서, 장치 드라이버(116)는 파일 시스템(114)으로부터 쓰기 요청된 데이터의 패턴과 트림 패턴(TRIM_PTRN)이 일치하는지 비교할 것이다. 복수의 데이터들에 대한 트림 패턴(TRIM_PTRN)과의 비교 결과는 메모리에 저장되고 누적될 수 있다.
S26 단계에서, 응용 프로그램(112)은 중지 명령어(Stop CMD)를 장치 드라이버(116)에 전달할 수 있다.
S27 단계에서, 장치 드라이버(116)는 패턴 체커(118)를 턴오프시킨다.
S28 단계에서, 장치 드라이버(116)는 스토리지 장치(130)는 S25 단계에서 누적된 비교 결과를 참조하여 트림 명령어(TRIM CMD) 또는 쓰기 명령어(Write CMD)를 스토리지 장치(130)에 전송할 것이다.
S29 단계에서, 장치 드라이버(116)는 트림 패턴(TRIM_PTRN)과 동일한 패턴의 쓰기 데이터에 대해서는 트림 명령어(TRIM CMD)를 할당한다. 이어서, 트림 명령어(TRIM CMD)가 할당된 쓰기 데이터에 대응하는 스토리지 영역을 트림으로 처리하기 위한 트림 명령어가 전송될 것이다. 그리고 장치 드라이버(116)는 트림 패턴(TRIM_PTRN)과 다른 패턴의 쓰기 데이터에 대해서는 쓰기 명령어(TRIM CMD)를 할당하고, 스토리지 장치(130)에 쓰기 명령어를 전송할 것이다. 스토리지 장치(130)는 트림 명령어(TRIM CMD)에 응답하여, 지시된 어드레스 범위에 대한 소거를 동반하는 트림 동작을 수행할 것이다. 하지만, 쓰기 명령어(Write CMD)를 수신하는 경우, 스토리지 장치(130)는 쓰기 데이터를 대응하는 어드레스 범위의 스토리지 영역에 프로그램할 것이다.
이상에서 트림 동작을 위한 응용 프로그램(112), 파일 시스템(114), 그리고 장치 드라이버(116)의 상호 동작이 예시적으로 설명되었다. 하지만, 트림 명령어(TRIM CMD)나 쓰기 명령어(Write CMD)의 전달 시점은 여기의 게시에 국한되지 않음은 잘 이해될 것이다.
도 11은 도 1의 스토리지 장치의 다른 예를 보여주는 블록도이다. 도 11을 참조하면, 스토리지 장치(130a)는 호스트(110)와 제 1 인터페이스(IF1)로 연결되는 솔리드 스테이트 드라이브(SSD)일 수 있다. 즉, 스토리지 장치(130a)는 호스트(110)와 예시적으로 USB 포트를 통해서 연결될 수 있는 휴대용 솔리드 스테이트 드라이버(Portable SSD)로 구성될 수 있다. 또는, 스토리지 장치(130a)는 호스트(110)와 썬더볼트(Thunderbolt) 포트를 통해서 연결될 수 있는 휴대용 솔리드 스테이트 드라이버(Portable SSD)로 구성될 수 있다. 스토리지 장치(130a)는 브리지 컨트롤러(150)와 솔리드 스테이트 드라이브(170)를 포함한다.
브리지 컨트롤러(150)는 솔리드 스테이트 드라이브(170)의 제 2 인터페이스(IF2, 164)를 호스트(110)의 제 1 인터페이스(IF1, 162)로 변환할 수 있다. 예를 들면따라서, 브리지 컨트롤러(150)를 사용하면, SATA 방식의 인터페이스를 사용하는 솔리드 스테이트 드라이브(170)는 USB 방식의 연결 포트를 통해서 호스트(110)와 연결될 수 있다. 또는, 브리지 컨트롤러(150)에 의해서, NVMe 방식의 인터페이스를 사용하는 솔리드 스테이트 드라이브(170)는 썬더볼트(Thunderbolt) 연결 포트를 통해서 호스트(110)와 연결될 수 있다. 여기서, 제 1 인터페이스(IF1, 162)와 제 2 인터페이스(IF2, 164)의 조합은, 상술한 예들에만 국한되지 않으며, 다양한 목적을 위해 다양한 인터페이스들의 조합들로 변경될 수 있을 것이다.
솔리드 스테이트 드라이브(170)는 스토리지 컨트롤러(171)와 불휘발성 메모리 장치(173)를 포함한다. 솔리드 스테이트 드라이브(170)는 도시되지는 않았지만, 버퍼 메모리를 더 포함할 수 있다. 솔리드 스테이트 드라이브(170)의 구성은 도 1의 스토리지 장치(130)와 유사하므로 이것에 대한 구체적인 설명은 생략하기로 한다.
상술한 스토리지 장치(130a)가 제 1 인터페이스(IF1)를 지원하는 포트를 통해서 호스트(110)와 연결되는 경우, USB 포트에 연결되는 스토리지 장치(130a)에 대해서 특정 파일 시스템은 트림 동작을 지원하지 않는 경우가 존재한다. 하지만, 본 발명의 트림 방식을 적용하면, 응용 프로그램(112)과 장치 드라이버(116)에 의해서 트림 명령어(TRIM CMD)가 제공될 수 있다. 따라서, 본 발명의 트림 방식을 적용하면, 파일 시스템(114)의 특성이나 종류에 구애되지 않고 다양한 스토리지 장치들에 대해 트림 지원이 가능하다.
도 12는 본 발명의 다른 실시 예에 따른 사용자 장치를 보여주는 블록도이다. 도 12를 참조하면, 사용자 장치(200)는 호스트(210)와 스토리지 장치(230)를 포함한다.
호스트(210)는 스토리지 장치(230)에 패턴 체크 시작 명령어(PTC Start), 트림 패턴(TRIM_PRTN), 그리고 패턴 체크 중지 명령어(PTC Stop)를 전달할 수 있다. 스토리지 장치(230)는 패턴 체크 시작 명령어(PTC Start), 트림 패턴(TRIM_PRTN), 그리고 패턴 체크 중지 명령어(PTC Stop)에 응답하여 트림 동작을 수행할 수 있다.
호스트(210)는 트림 요청이 발생하면, 패턴 체크 시작 명령어(PTC Start)를 스토리지 장치(230)에 전송한다. 그러면, 스토리지 컨트롤러(231)는 호스트(210)로부터 전송되는 데이터의 패턴을 특정 패턴(예를 들면, TRI M_PTRN)과 비교하기 위한 기능을 활성화한다. 이어서, 호스트(210)는 트림 패턴(TRIM_PRTN)의 쓰기 데이터를 스토리지 장치(230)에 전송한다. 스토리지 컨트롤러(231)는 특정 패턴의 쓰기 데이터를 확인하면, 쓰기 요청된 불휘발성 메모리 장치(235)의 메모리 영역에 대한 트림 동작을 수행할 것이다. 이러한 트림 동작은, 호스트(210)로부터 패턴 체크 중지 명령어(PTC Stop)에 의해서 종료될 수 있다.
스토리지 장치(230)는 별도의 트림 명령어(TRIM CMD)가 아닌 호스트(210)에서 제공되는 쓰기 데이터와 패턴 체크 시작 명령어(PTC Start), 패턴 체크 중지 명령어(PTC Stop)에 의해서 트림 동작을 수행할 수 있다.
도 13은 도 12의 호스트에서 수행되는 트림 동작을 예시적으로 보여주는 순서도이다. 도 13을 참조하면, 호스트(210)는 별도의 트림 명령어를 생성하지 않고 패턴 체크 시작 명령어(PTC Start), 트림 패턴(TRIM_PRTN), 그리고 패턴 체크 중지 명령어(PTC Stop)를 사용하여 스토리지 장치(230)의 트림 동작을 제어할 수 있다.
S410 단계에서, 호스트(210)는 스토리지 장치(230)에 대한 트림의 필요성을 검출할 것이다. 예를 들면, 스토리지 장치(230)의 프리 블록의 수가 기준치 이하로 검출되는 경우나, 데이터의 쓰기 가능한 용량이 기준 사이즈 이하인 상태가 여기에 해당할 수 있다. 하지만, 트림 동작의 요청은 여기의 게시에만 국한되지 않음은 잘 이해될 것이다.
S420 단계에서, 호스트(210)는 트림 요청의 존재에 따라 동작 분기를 수행한다. 만일, 트림 요청이 존재하는 경우, 절차는 S430 단계로 이동한다. 하지만, 트림 요청이 발생되지 않은 경우라면, 절차는 S410 단계로 복귀한다.
S430 단계에서, 호스트(210)는 스토리지 장치(230)의 트림 동작을 활성화하기 위한 패턴 체크 시작 명령어(PTC Start CMD)를 스토리지 장치(230)에 전송한다.
S440 단계에서, 호스트(210)는 미리 정의된 트림 패턴(TRIM_PTRN)을 갖는 데이터를 스토리지 장치(230)에 전송할 수 있다. 트림 패턴(TRIM_PTRN)을 갖는 데이터는 쓰기 명령어를 사용하여 스토리지 장치(230)에 전달될 수 있을 것이다. 하지만, 트림 패턴(TRIM_PTRN)을 갖는 데이터의 전달 방법은 여기의 게시에 국한되지 않는다.
S450 단계에서, 호스트(210)는 트림 동작의 중지 요청이 존재하는지 검출할 것이다. 예를 들면, 호스트(210)는 스토리지 장치(230)의 프리 블록의 수가 기준치를 상회하는 것으로 검출되거나, 쓰기 가능한 메모리 용량이 기준 사이즈보다 증가된 경우가 여기에 해당할 것이다. 하지만, 트림 동작의 중지 조건은 여기의 게시에만 국한되지 않음은 잘 이해될 것이다. 트림 중지 요청이 존재하는 경우, 절차는 S460 단계로 이동한다. 반면, 트림 중지 요청이 존재하지 않는 경우, 절차는 S440 단계로 복귀한다.
S460 단계에서, 호스트(210)는 스토리지 장치(230)에 패턴 체크 중지 명령어(PTC Stop)를 전송할 것이다. 그러면, 스토리지 장치(230)의 트림 동작은 비활성화될 것이다.
도 14는 도 12의 스토리지 장치에서 수행되는 트림 동작을 예시적으로 보여주는 순서도이다. 도 14를 참조하면, 스토리지 장치(230)는 호스트(210)로부터 제공되는 패턴 체크 시작 명령어(PTC Start), 트림 패턴(TRIM_PRTN), 그리고 패턴 체크 중지 명령어(PTC Stop)에 따라 트림 동작을 수행할 수 있다.
S510 단계에서, 스토리지 장치(230)는 호스트(210)로부터 패턴 체크 시작 명령어(PTC Start)가 전달되는지 검출한다.
S520 단계에서, 스토리지 장치(230)는 패턴 체크 시작 명령어(PTC Start)가 수신된 것으로 판단되면, S530 단계를 실행한다. 반면, 스토리지 장치(230)는 패턴 체크 시작 명령어(PTC Start)가 수신되지 않은 것으로 판단되면, 절차를 S510 단계로 이동시킨다.
S530 단계에서, 스토리지 장치(230)는 패턴 체크 시작 명령어(PTC Start)에 응답하여 스토리지 컨트롤러(231)에 구비된 패턴 체커를 턴온시킨다. 여기서, 패턴 체커(Pattern checker)는 하드웨어나 소프트웨어 모듈로 제공될 수 있다. 패턴 체커의 활성화에 따라 스토리지 장치(230)의 트림 동작이 활성화된다. 패턴 체커는 호스트(210)에서 전송되는 트림 패턴(TRIM_PRTN)이 미리 정의된 패턴과 일치하는지 검출할 것이다. 만일, 호스트(210)에서 전송되는 트림 패턴(TRIM_PRTN)과 미리 정의된 패턴이 일치하는 경우, 스토리지 컨트롤러(231)는 트림 패턴이 저장될 불휘발성 메모리 장치(235)의 메모리 영역에 대한 트림 동작을 수행할 것이다. 하지만, 호스트(210)에서 전송되는 트림 패턴(TRIM_PRTN)과 미리 정의된 패턴이 불일치하는 경우, 스토리지 컨트롤러(231)는 트림 동작을 수행하지 않을 것이다.
S540 단계에서, 스토리지 장치(230)는 호스트(210)로부터 전송된 패턴 체크 중지 명령어(PTC Stop)가 수신되었는지 검출할 것이다. 만일, 패턴 체크 중지 명령어(PTC Stop)가 수신된 것으로 판단되면, 절차는 S550 단계로 이동한다. 하지만, 패턴 체크 중지 명령어(PTC Stop)가 수신되지 못한 것으로 판단되면, 절차는 S530 단계로 복귀한다.
S550 단계에서, 스토리지 장치(230)는 패턴 체커의 기능을 턴오프시킨다. 스토리지 장치(230)는 제반 트림 동작을 중단할 것이다.
이상에서 설명된 도 11 내지 도 14는 호스트(210)는 트림 명령어를 생성하는 것이 아니라 트림 동작의 시작과 중지를 지시하는 제어 신호(PCT Start, PCT Stop)와 트림 패턴(TRIM_PTRN)의 데이터를 전송하는 방식으로 트림 요청을 전달한다.
이상에서와 같이 도면과 명세서에서 실시 예가 개시되었다. 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허 청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서 본 발명의 진정한 기술적 보호 범위는 첨부된 특허 청구범위의 기술적 사상에 의해 정해져야 할 것이다.
Claims (10)
- 스토리지 장치의 트림 관리 방법에 있어서:
응용 프로그램이 장치 드라이버의 패턴 체크 기능을 활성화시키는 단계;
상기 응용 프로그램이 특정 패턴의 파일을 파일 시스템에 쓰기 요청하는 단계;
상기 파일 시스템이 상기 파일을 상기 스토리지 장치의 관리 단위 데이터로 변환하여 상기 장치 드라이버에 전달하는 단계;
상기 장치 드라이버가 상기 관리 단위 데이터의 데이터 패턴이 상기 특정 패턴과 일치하는지 체크하는 단계; 그리고
상기 체크 결과에 따라 상기 장치 드라이버가 상기 관리 단위 데이터에 대응하는 스토리지 영역을 트림 처리하기 위한 트림 명령어를 상기 스토리지 장치에 전달하는 단계를 포함하는 트림 관리 방법. - 제 1 항에 있어서,
상기 트림 명령어를 상기 스토리지 장치에 전달하는 단계에서, 상기 데이터 패턴과 상기 특정 패턴이 일치하는 경우, 상기 관리 단위 데이터가 쓰기 요청되는 스토리지 영역을 트림 처리하도록 상기 트림 명령어가 전달되는 트림 관리 방법. - 제 1 항에 있어서,
상기 트림 명령어를 상기 스토리지 장치에 전달하는 단계에서, 상기 데이터 패턴과 상기 특정 패턴이 불일치하는 경우, 상기 관리 단위 데이터를 상기 스토리지 영역에 프로그램하도록 쓰기 명령어가 전달되는 트림 관리 방법. - 제 1 항에 있어서,
상기 응용 프로그램이 장치 드라이버의 패턴 체크 기능을 비활성화하는 단계를 더 포함하는 트림 관리 방법. - 제 4 항에 있어서,
상기 패턴 체크 기능이 비활성화된 경우, 상기 장치 드라이버는 쓰기 요청되는 데이터의 패턴 체크 및 트림 명령어의 생성을 중단하는 트림 관리 방법. - 제 4 항에 있어서,
상기 트림 명령어를 상기 스토리지 장치에 전달하는 단계는 상기 패턴 체크 기능이 비활성화된 이후에 실행되는 트림 관리 방법. - 제 1 항에 있어서,
상기 스토리지 장치는 상기 장치 드라이버에서 제공되는 트림 명령어를 유니버설 직렬 버스(USB) 포트 또는 썬더볼트(Thunderbolt) 포트를 통해서 제공받는 트림 관리 방법. - 제 6 항에 있어서,
상기 스토리지 장치는 휴대용 솔리드 스테이트 드라이버(Portable Solid State Drive)로 구성되는 트림 관리 방법. - 트림 명령어에 응답하여 선택된 메모리 영역을 트림 동작으로 처리하는 스토리지 장치; 그리고
워킹 메모리에 로드되는 응용 프로그램, 파일 시스템, 그리고 장치 드라이버를 프로세싱 유닛을 통하여 구동하며, 상기 트림 명령어를 생성하여 상기 스토리지 장치에 제공하는 호스트를 포함하되,
상기 응용 프로그램은 상기 트림 명령어를 생성하기 위하여 상기 장치 드라이버의 패턴 체크 기능을 활성화 또는 비활성화시키며, 상기 파일 시스템을 통해서 특정 데이터를 상기 장치 드라이버에 쓰기 요청하고,
상기 장치 드라이버는 상기 패턴 체크 기능이 활성화된 기간 동안 상기 파일 시스템으로부터 제공되는 상기 특정 데이터의 패턴이 특정 패턴과 일치하는 경우에는 상기 트림 명령어를 생성하는 사용자 장치. - 제 9 항에 있어서,
상기 장치 드라이버는 상기 패턴 체크 기능이 활성화된 기간 동안에, 상기 파일 시스템으로부터 제공되는 상기 특정 데이터의 패턴이 상기 특정 패턴과 불일치하는 경우에는 상기 특정 데이터를 상기 스토리지 장치에 기입하기 위한 쓰기 명령어를 생성하는 사용자 장치.
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020160147674A KR102588113B1 (ko) | 2016-11-07 | 2016-11-07 | 스토리지 장치를 포함하는 사용자 장치 및 그것의 트림 관리 방법 |
US15/610,810 US11048662B2 (en) | 2016-11-07 | 2017-06-01 | User device including storage device and trim management method thereof |
CN201711082692.9A CN108073358B (zh) | 2016-11-07 | 2017-11-07 | 包括存储设备的用户设备及存储设备的修剪管理方法 |
US17/236,416 US20210240667A1 (en) | 2016-11-07 | 2021-04-21 | User device including storage device and trim management method thereof |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020160147674A KR102588113B1 (ko) | 2016-11-07 | 2016-11-07 | 스토리지 장치를 포함하는 사용자 장치 및 그것의 트림 관리 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20180051704A true KR20180051704A (ko) | 2018-05-17 |
KR102588113B1 KR102588113B1 (ko) | 2023-10-16 |
Family
ID=62064305
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020160147674A KR102588113B1 (ko) | 2016-11-07 | 2016-11-07 | 스토리지 장치를 포함하는 사용자 장치 및 그것의 트림 관리 방법 |
Country Status (3)
Country | Link |
---|---|
US (2) | US11048662B2 (ko) |
KR (1) | KR102588113B1 (ko) |
CN (1) | CN108073358B (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11132252B2 (en) | 2019-12-11 | 2021-09-28 | SK Hynix Inc. | Memory device, memory system including memory device, and method of operating memory system |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11429285B2 (en) | 2020-06-29 | 2022-08-30 | Western Digital Technologies, Inc. | Content-based data storage |
US11429620B2 (en) | 2020-06-29 | 2022-08-30 | Western Digital Technologies, Inc. | Data storage selection based on data importance |
US11379128B2 (en) * | 2020-06-29 | 2022-07-05 | Western Digital Technologies, Inc. | Application-based storage device configuration settings |
CN115620793B (zh) * | 2021-07-12 | 2024-10-22 | 长鑫存储技术有限公司 | 一种半导体存储器及其上存储块的容量配置方法 |
US12061791B2 (en) | 2022-09-01 | 2024-08-13 | SanDisk Technologies, Inc. | System and method for retrimming removable storage devices |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20120045422A (ko) * | 2010-10-29 | 2012-05-09 | 삼성전자주식회사 | 메모리 시스템 및 사용자 장치 그리고 그것의 데이터 관리 방법 |
KR20150043127A (ko) * | 2013-10-14 | 2015-04-22 | 삼성전자주식회사 | 메모리 시스템에서의 코딩 방법 및 디코딩 방법 |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0922596A (ja) | 1995-07-03 | 1997-01-21 | Fujitsu Ltd | フラッシュメモリ装置 |
US8180931B2 (en) * | 2004-01-20 | 2012-05-15 | Super Talent Electronics, Inc. | USB-attached-SCSI flash-memory system with additional command, status, and control pipes to a smart-storage switch |
EP1659474A1 (en) * | 2004-11-15 | 2006-05-24 | Thomson Licensing | Method and USB flash drive for protecting private content stored in the USB flash drive |
US8108579B2 (en) * | 2005-03-31 | 2012-01-31 | Qualcomm Incorporated | Mechanism and method for managing data storage |
US9223642B2 (en) * | 2013-03-15 | 2015-12-29 | Super Talent Technology, Corp. | Green NAND device (GND) driver with DRAM data persistence for enhanced flash endurance and performance |
JP5317689B2 (ja) | 2008-12-27 | 2013-10-16 | 株式会社東芝 | メモリシステム |
US9134918B2 (en) | 2009-12-31 | 2015-09-15 | Sandisk Technologies Inc. | Physical compression of data with flat or systematic pattern |
WO2011099963A1 (en) | 2010-02-10 | 2011-08-18 | Hewlett-Packard Development Company, L.P. | Identifying a location containing invalid data in a storage media |
US8661189B2 (en) * | 2010-08-31 | 2014-02-25 | Apple Inc. | Systems and methods for trimming logical block addresses corresponding to a data structure residing in non-volatile memory |
JP5581256B2 (ja) * | 2011-03-28 | 2014-08-27 | 株式会社東芝 | メモリシステム、コントローラ、およびメモリシステムの制御方法 |
US9323667B2 (en) | 2012-04-12 | 2016-04-26 | Violin Memory Inc. | System and method for managing trim operations in a flash memory system using mapping tables and block status tables |
US9778860B2 (en) * | 2012-09-12 | 2017-10-03 | Microsoft Technology Licensing, Llc | Re-TRIM of free space within VHDX |
KR20140112303A (ko) * | 2013-03-13 | 2014-09-23 | 삼성전자주식회사 | 불휘발성 메모리 장치, 전자 장치 그리고 그것을 포함하는 컴퓨팅 시스템 |
US9383926B2 (en) * | 2014-05-27 | 2016-07-05 | Kabushiki Kaisha Toshiba | Host-controlled garbage collection |
KR20150138528A (ko) * | 2014-05-29 | 2015-12-10 | 삼성전자주식회사 | 플래시 메모리를 기반으로 하는 스토리지 시스템 및 그것의 동작 방법 |
KR102282006B1 (ko) | 2014-08-19 | 2021-07-28 | 삼성전자주식회사 | 컴퓨터 장치 및 저장 장치 |
JP2015053075A (ja) | 2014-11-10 | 2015-03-19 | 株式会社東芝 | メモリシステム、情報処理装置および記憶装置 |
US20160162364A1 (en) * | 2014-12-03 | 2016-06-09 | Commvault Systems, Inc. | Secondary storage pruning |
-
2016
- 2016-11-07 KR KR1020160147674A patent/KR102588113B1/ko active IP Right Grant
-
2017
- 2017-06-01 US US15/610,810 patent/US11048662B2/en active Active
- 2017-11-07 CN CN201711082692.9A patent/CN108073358B/zh active Active
-
2021
- 2021-04-21 US US17/236,416 patent/US20210240667A1/en active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20120045422A (ko) * | 2010-10-29 | 2012-05-09 | 삼성전자주식회사 | 메모리 시스템 및 사용자 장치 그리고 그것의 데이터 관리 방법 |
KR20150043127A (ko) * | 2013-10-14 | 2015-04-22 | 삼성전자주식회사 | 메모리 시스템에서의 코딩 방법 및 디코딩 방법 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11132252B2 (en) | 2019-12-11 | 2021-09-28 | SK Hynix Inc. | Memory device, memory system including memory device, and method of operating memory system |
Also Published As
Publication number | Publication date |
---|---|
CN108073358B (zh) | 2022-02-22 |
KR102588113B1 (ko) | 2023-10-16 |
US20180129674A1 (en) | 2018-05-10 |
CN108073358A (zh) | 2018-05-25 |
US11048662B2 (en) | 2021-06-29 |
US20210240667A1 (en) | 2021-08-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102588113B1 (ko) | 스토리지 장치를 포함하는 사용자 장치 및 그것의 트림 관리 방법 | |
US10360156B2 (en) | Data storage device using host memory and method of operating same | |
US9690700B2 (en) | Host-driven garbage collection | |
US10191688B2 (en) | Memory system and information processing system | |
KR102094236B1 (ko) | 스토리지 디바이스 및 컴퓨터 시스템 | |
KR102074329B1 (ko) | 데이터 저장 장치 및 그것의 데이터 처리 방법 | |
JP6517684B2 (ja) | メモリシステムおよび制御方法 | |
US11995003B2 (en) | Method of data caching and device caching data | |
US20180088841A1 (en) | Computing systems including storage devices controlled by hosts | |
US20110276746A1 (en) | Caching storage adapter architecture | |
US20110271037A1 (en) | Storage device performing data invalidation operation and data invalidation method thereof | |
KR20210016184A (ko) | 스토리지 장치, 그것을 포함하는 메모리 시스템 및 그것의 동작 방법 | |
KR20200139433A (ko) | 컨트롤러의 동작 방법 및 메모리 시스템 | |
US20220350655A1 (en) | Controller and memory system having the same | |
US9239679B2 (en) | System for efficient caching of swap I/O and/or similar I/O pattern(s) | |
KR20190093361A (ko) | 호스트 및 메모리 컨트롤러를 포함하는 전자 시스템 및 이의 동작 방법 | |
KR20190074897A (ko) | 메모리 시스템 및 이의 동작 방법 | |
KR20230040057A (ko) | 시스템의 읽기 성능을 개선하기 위한 장치 및 방법 | |
KR20150096177A (ko) | 가비지 컬렉션 수행 방법 및 그 방법을 이용한 플래시 메모리 장치 | |
CN114168495A (zh) | 存储设备的增强的预读能力 | |
KR20210152831A (ko) | 데이터 저장 장치 및 그 동작 방법 | |
EP4287028A1 (en) | Storage device providing high purge performance and memory block management method thereof | |
US20230384960A1 (en) | Storage system and operation method therefor | |
CN117149052A (zh) | 提供高清除性能的存储设备及其存储块管理方法 | |
KR20230068743A (ko) | 이종 메모리를 포함하는 컴퓨터 시스템 및 그것의 데이터 관리 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right |