KR101903834B1 - 트림 명령의 실행을 평가하기 위한 방법 및 호스트 장치 - Google Patents

트림 명령의 실행을 평가하기 위한 방법 및 호스트 장치 Download PDF

Info

Publication number
KR101903834B1
KR101903834B1 KR1020147029465A KR20147029465A KR101903834B1 KR 101903834 B1 KR101903834 B1 KR 101903834B1 KR 1020147029465 A KR1020147029465 A KR 1020147029465A KR 20147029465 A KR20147029465 A KR 20147029465A KR 101903834 B1 KR101903834 B1 KR 101903834B1
Authority
KR
South Korea
Prior art keywords
trim
command
storage device
elapsed time
controller
Prior art date
Application number
KR1020147029465A
Other languages
English (en)
Other versions
KR20150021495A (ko
Inventor
오렌 코헨
에얄 소볼
오메르 길라드
주다 지. 한
Original Assignee
샌디스크 테크놀로지스 엘엘씨
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 샌디스크 테크놀로지스 엘엘씨 filed Critical 샌디스크 테크놀로지스 엘엘씨
Publication of KR20150021495A publication Critical patent/KR20150021495A/ko
Application granted granted Critical
Publication of KR101903834B1 publication Critical patent/KR101903834B1/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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording 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/3409Recording 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/3419Recording 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording 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/3466Performance evaluation by tracing or monitoring
    • G06F11/3485Performance evaluation by tracing or monitoring for I/O 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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

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)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)

Abstract

트림 명령들의 실행을 평가하기 위한 방법 및 호스트 장치가 제공된다. 일실시예에서, 저장 장치에 보내진 트림 및 및 기입 명령들의 자취(trace)가 얻어진다. 자취 내 각 트림 명령에 대해서, 트림 명령과 동일한 논리 블록 어드레스(LBA)에의 후속 기입 명령이 확인되고, 트림 명령과 기입 명령 사이에 경과된 시간이 계산된다. 이 정보는 데이터의 히스토그램을 표시하고 및/또는 저장 장치가 트림 명령을 실행할 때 및/또는 호스트 장치가 트림 명령을 발행할 때 최적화하기 위해 사용될 수 있다.

Description

트림 명령의 실행을 평가하기 위한 방법 및 호스트 장치{METHOD AND HOST DEVICE FOR ASSESSING EXECUTION OF TRIM COMMANDS}
관련출원에 대한 상호참조
이 출원은 참조로 본원에 포함시키는 2012년 5월 31일에 출원된 미국가특허 출원번호 61/654,006의 우선권을 주장한다.
NAND 기술에 기초한 비휘발성 메모리 저장 장치는 소거/프로그램 사이클을 채용하는데, 이것은 기입할 때 빈(free) 블록들이 가용하지 않다면 수행에 영향을 미칠 수 있다. 최근의 NAND-기반의 저장 장치는 성능을 개선하기 위해 이들이 사용중이 아닐 때 사전 대책으로 저정 블록들을 소거한다. 현재, 일부 호스트 장치은 어떤 논리 블록 어드레스(LBA) 범위가 호스트의 파일 시스템에 의해 더 이상 사용되고 있지 않음을 저장 장치에 나타내기 위해 NAND 저장 장치에 "트림(trim)" 명령을 보낼 수 있다. 그러나, 트림 명령을 사용하는 것은 충분한 빈 블록이 가용하다는 것과 그리고 트림 명령 자체들이 수행/내구성을 감소시키지 않는다는 것을 보증하기 위해 조율 및 분석을 사실상 요구한다. 마이크로소프트의 수행 툴키트는 드라이버 레벨에서 입력/출력 명령을 기록(log)하는 능력을 포함하는데, 그러나 이것은 수행을 최적화하기 위해 트림 명령의 유효성을 적합히 평가하기 위해 요구되는 분석 능력은 없다.
본 발명의 실시예는 청구항들에 의해 정의되고 이 단락에 어떤 것도 이들 청구항들에 제한으로서 취해지지 않아야 한다.
도입으로서, 이하 실시예는 트림 명령들의 실행을 평가하기 위한 방법 및 호스트 장치에 관한 것이다. 일실시예에서, 저장 장치에 보내진 트림 및 및 기입 명령들의 자취(trace)가 얻어진다. 자취 내 각 트림 명령에 대해서, 트림 명령과 동일한 논리 블록 어드레스(LBA)에의 후속 기입 명령이 확인되고, 트림 명령과 기입 명령 사이에 경과된 시간이 계산된다. 이 정보는 데이터의 히스토그램을 표시하고 및/또는 저장 장치가 트림 명령을 실행할 때 및/또는 호스트 장치가 트림 명령을 발행할 때 최적화하기 위해 사용될 수 있다. 이외 다른 실시예들이 가능하고 실시예들 각각은 단독으로 혹은 함께 조합하여 사용될 수 있다. 따라서, 여러 실시예가 첨부된 도면을 참조하여 이제 기술될 것이다.
도 1은 실시예의 예시적 호스트 장치 및 저장 장치의 블록도이다.
도 2는 실시예의 트림 명령 분석 프로세스의 흐름도이다.
도 3은 실시예의 트림 명령 분석 프로세스로부터 비롯된 히스토그램이다.
도 4는 실시예의 빈-공간 분석을 사용한 트림 명령 분석 프로세스의 흐름도이다.
도 5는 실시예의 물리 비어 있는-블록-카운트 분석을 사용한 트림 명령 분석 프로세스의 흐름도이다.
예시적 호스트 및 저장 장치
이제 도면들로 가면, 도 1은 실시예의 저장 장치(100)와 통신하는 호스트 장치(50)의 블록도이다. 본원에서 사용되는 바와 같이, "와 통신하는"이라는 어구는 본원에 도시되거나 기술될 수도 있고 그렇지 않을 수도 있는 하나 이상의 성분을 통해 직접 통신하거나 간접적으로 통신을 의미할 수도 있을 것이다. 예를 들면, 호스트 장치(50) 및 저장 장치(100) 각각은 저장 장치(100)가 호스트 장치(50)에 착탈가능하게 연결될 수 있게 하는 짝이 되는 물리적 컨넥터(인터페이스)를 가질 수 있다. 호스트 장치(50)는 이를테면 모바일 전화, 디지털 미디어 플레이어, 게임 장치, 개인용 디지털 보조장치(PDA), 개인용 컴퓨터(PC), 키오스크, 셋탑박스, TV 시스템, 북 리더, 또는 이들의 조합과 같은 -그러나 이들로 제한되지 않는다- 임의의 적합한 형태를 취할 수 있다.
이 실시예에서, 저장 장치(100)는 대량 저장 장치이며, 고체상태 드라이브(SSD) 유형의 저장 장치가 현재 트림 명령을 지원하기 때문에 이 형태를 취한다. 다른 저장 장치가 트림 명령을 지원한다면 사용될 수 있는 이들 장치들은 휴대, 착탈가능 메모리 카드(이를테면 보안 디지털(SD) 카드 또는 멀티미디어 카드(MMC)), 범용 직렬 버스(USB) 장치, 및 이를테면 샌디스크사에 의한 iNANDTM eSD/eMMC 내장형 플래시 드라이브와 같은 내장형 메모리(예를 들면, 호스트 장치(50) 내 내장된 보안 모듈)를 포함하는데, 그러나 이들로 제한되지 않는다.
도 1에 도시된 바와 같이, 저장 장치(100)는 제어기(110) 및 메모리(120)를 포함한다. 제어기(110)는 메모리(120)와 인터페이스하기 위한 메모리 인터페이스(111) 및 호스트(50)와 인터페이스하기 위한 호스트 인터페이스(112)를 포함한다. 제어기(110)는 또한 중앙 처리 유닛(CPU)(115)을 포함한다. 제어기(110)는 임의의 적합한 방식으로 구현될 수 있다. 예를 들면, 제어기(110)는 예를 들면 (마이크로)프로세서, 로직 게이트, 스위치, 응용특정의 집적회로(ASIC), 프로그램가능 로직 제어기, 및 내장형 마이크로제어기에 의해 실행되는 컴퓨터-판독가능 프로그램 코드(예를 들면, 소프트웨어 또는 펌웨어)를 저장하는 마이크로프로세서 또는 프로세서 및 컴퓨터-판독가능 매체의 형태를 취할 수 있다. 적합한 제어기는 마벨 또는 샌드포스로부터 얻어질 수 있다. 메모리(120) 는 임의의 적합한 형태를 취할 수 있다. 일실시예에서, 메모리(120)는 고체상태(예를 들면, 플래시) 메모리의 형태를 취한다. 그러나, 패킷-기반의 기입을 사용하는 광학 메모리와 같은, 트림 명령과 함께 사용하기에 적합한 그외 다른 형태의 메모리가 사용될 수 있다. 도 1에 도시된 저장 장치(100)는 단지 많은 가능한 구현들 중 하나임에 유의한다.
이제 호스트 장치(50)로 가면, 호스트 장치(50)는 저장 장치(100)에 인터페이스하기 위한 저장 장치 인터페이스(161)를 가진 제어기(160)를 포함한다. 제어기(160)는 또한 중앙 처리 유닛(CPU)(163), 판독 액세스 메모리(RAM)(165), 및 판동 전용 메모리(ROM)(166)를 포함한다. 또한, 저장 장치(100)는 예를 들면, 호스트 장치(50)의 동작에서 사용되는 애플리케이션(apps) 및 프로그램(예를 들면, 브라우저, 미디어 플레이어, 등)을 저장하기 위한 메모리(172)를 내포한다. 제어기의 RAM(165) 및/또는 메모리(172)는 저장 장치(100)에 보내질 명령들을 저장하기 위한 버퍼로서 사용될 수 있다. 호스트 장치(50)는 도면을 간단하게 하기 위해 도 1엔 도시되지 않은 다른 성분(예를 들면, 디스플레이 장치, 스피커, 헤드폰 잭, 비디오 출력 연결, 등)을 내포할 수 있다. 또한, 호스트 장치(50)의 그외 다른 구현들도 가능하다.
일부 환경에서, 호스트 장치(50)는 저장 장치(100)에 저장된 콘텐트를 렌더링하게 동작한다. 본원에서 사용되는 바와 같이, "콘텐트"는 곡, 영화, 게임, 애플리케이션("app"), 게임 인스톨러, 등 -그러나 이들로 제한되지 않는다- 를 포함한 임의의 적합한 형태를 취할 수 있다. 콘텐트의 유형에 따라, "렌더링"은 재생(예를 들면, 콘텐트가 곡 또는 영화일 때), 혹은 해독(예를 들면, 콘텐트가 게임 인스톨러일 때), 혹은 콘텐트를 "누리기" 위해 필요한 조작 무엇이든 의미할 수 있다. 일부 실시예에서, 호스트 장치(50)는 콘텐트(예를 들면, 미디어 플레이어)를 렌더링하기 위해 필요한 소프트웨어를 내포하며, 반면 다른 실시예에서, 이러한 소프트웨어는 메모리 장치(100) 또는 또 다른 실체에 의해 호스트 장치(50)에 제공된다.
트림 명령의 실행을 평가하는 것에 관계된 실시예
호스트 장치(50)는 논리 블록 어드레스(LBA)가 더 이상 사용중이 아닌지를(예를 들면, 사용자가 파일을 삭제할 때, 파일이 옮겨지거나 단편화될 때, 등) 저장 장치(100)에 알리기 위한 "트림" 명령을 발행할 수 있다. 트림 명령에 응하여, 저장 장치(100)는 LBA를 내포하는 페이지를 소거할 수 있는데, 이는 후속 기입을 위해 데이터를 유지할 추가의 빈 공간을 제공한다. 호스트 장치(50)로부터의 트림 명령은 종종 이에 이어 소거된 LBA에 데이터를 기입하기 위한 기입 명령이 이어진다. 호스트 장치(50)로부터 수신되었을 때 저장 장치(100)가 트림 명령을 실행한다면, 저장 장치(100)는 소거 프로세스가 시간이 걸리고 기입 명령을 실행하는데 가용한 빈 블록들이 있다면 즉시 필요하지 않을 수도 있기 때문에 불필요한 수행 페널티를 초래할 수 있다. 대신에, 저장 장치(100)는 데이터를 빈 블록에 저장함으로써 기입 명령을 실행할 수 있고, 나중에 아이들 시간 동안에, 소거 동작을 수행할 수 있다. 그러나, 전형적인 저장 장치는 수신 즉시 트림 명령을 실행한다.
다음 실시예는 호스트 장치가 트림 명령을 보낼 때와 후속 기입 명령을 동일 LBA에 보낼 때 사이의 경과된 시간을 분석하기 위해 사용될 수 있는 기술을 제공한다. 이 시간 델타는 트림 명령 효율을 평가하고 저장 장치(100)가 트림 명령의 실행을 지연 또는 피할 수 있는지 여부를 판정하고 마치 트림 명령이 수신 즉시 실행된 것처럼 하여 여전히 동일한 혹은 유사한 수행 수준을 달성하기 위해 사용될 수 있다. 이 정보는 또한 트림 명령이 호스트 장치(50)에 의해 저장 장치(100)에 보내질 때 지연시키기 위해 사용될 수도 있다. 정보는 사용자에게 시각적으로 표시될 수 있고(예를 들면, 히스토그램을 통해) 및/또는 트림 명령을 실행하거나 보내기 위한 알고리즘을 수동적으로, 혹은 자동적으로, 혹은 반-자동적으로 조율(tune)하기 위해 사용될 수 있다. 또한, 분석은 트림 명령이, 즉시 실행된다면, 그렇지 않았을 경우 기입 명령의 실행 동안 소거되어야 했을 수도 있을 블록들을 비워둠으로써 수행을 개선하게 될 것인지 여부를 보여줄 수 있다.
도면으로 돌아가면, 도 2는 실시예의 트림 명령 분석 프로세스의 흐름도(200)이다. 도 2에 도시된 바와 같이, 프로세스는 호스트 장치(50)로부터 저장 장치(100)로 트림 및 기입 명령들을 포함하는 명령들의 포착된 자취의 선형 분석을 시작함으로써 출발한다(단계(210)). 이 프로세스는 호스트 장치(50)에 의해서, 혹은 저장 장치(100)에 의해서, 혹은 호스트 장치(50)와 저장 장치(100) 사이에 장치(예를 들면, 버스 분석기)에 의해 수행될 수 있음에 유의한다. 예를 들면, 호스트 장치(50)에 의해 수행된다면, 자취는 저장 장치(100)에 보내진 명령들의 기록일 수 있다. 저장 장치(100)에 의해 수행된다면, 자취는 저장 장치(100)에 의해 호스트 장치(50)로부터 수신된 명령들의 기록일 수 있다. 버스 분석기 또는 이외 다른 중간 장치에 의해 수행된다면, 자취는 호스트 장치(50)에서 저장 장치(100)로 전송에서 포착된 명령들일 수 있다. 또한, 이 프로세스는 명령들이 저장 장치(100)로 보내지고 있을 때 혹은 실시간으로, 혹은 오프-라인으로 행해질 수 있다.
다음에, 자취에 트림 명령이 있는지 여부가 판정되며(단계(215), 있다면, 동일 LBA에 첫번재 기입 명령을 확인하기 위한 시도가 행해진다(단계(220, 225)). 이것은 트림 명령과 기입 명령 사이에 있을 수 있는 판독 및 이외 다른 명령들을 생략하는 것을 수반할 수 있다. 동일 LBA에의 기입이 발견된다면, 트림 명령과 기입 명령 사이에 경과된 시간이 계산되고(단계(230)), 결과적인 계산은 보관된다(단계(235))(여기에서는 히스토그램의 생성을 위해서이지만, 그러나 위에 언급된 바와 같이, 계산은 트림 실행 또는 전송 알고리즘들을 조율하기 위해 사용될 수 있다).
동일 LBA에의 기입이 발견되지 않는다면, 개재된 기입 명령 없이 동일 LBA 상에 또 다른 트림 명령이 수행되었는지 여부가 판정된다(단계(240)). 또 다른 트림 명령이 수행되었다면(오류에 의해서 혹은 호스트 장치(50)의 프로그래밍에 기인하여), 프로세스는 이 이벤트를 "이중 트림" 이벤트로서 기록한다(단계(245)). 한편, 또 다른 트림 명령이 수행되지 않았다면, 프로세스는 이 이벤트를 "재기입적 없는(never rewritten)" 이벤트로서 기록한다(단계(250)). 이것은 예를 들면, 호스트 장치(50)가 첫번째 트림 명령이 발생한 것으로서 적합히 등재하지 않았다면 발생할 수 있다.
위에 프로세스는 자취 내 남아 있는 트림들에 대해 반복된다. 마지막으로, 계산으로부터 히스토그램이 표시되고(단계(255)), 프로세스는 종료된다(단계(260)). 결과적인 히스토그램의 예가 도 3에 도시되었다. 이 히스토그램은 30일 기간 동안에 y-축 상에 기입 수와 x-축 상에 트림 명령과 기입 명령 사이의 시간을 나타낸다. 도 3도시된 바와 같이, 대부분의 기입들에 대해서, 동일 LBA에의 트림 명령과 기입 명령 사이에 15초 이상이 있었다. (상당수의 "이중 트림" 이벤트 및 "재기입된적 없는" 이벤트가 있다). 이것은 호스트 장치(50)가 동일 LBA에 기입 명령에 보내기 전에 평균적으로 적어도 15초가 걸리기 때문에 저장 장치(100)가 트림 명령을 즉시 실행할 필요가 없음을 의미한다. 트림 명령의 수신으로부터 15초 미만 내에 기입 명령이 수신되는 것으로 나타나더라도, 저장 장치(100)는 여전히 메모리 내에 충분한 자유 블록들이 있다면 소거함이 없이 기입 명령을 실행할 수 있다. 그렇지 않다면, 저장 장치(100)는 기입 명령을 곧 수신하였을 때 소거 동작을 수행할 수 있다.
이 히스토그램을 사용하여 사용자 또는 기술자는 저장 장치(100)의 펌웨어를 조율할 수 있고, 따라서 저장 장치(100)는 트림 명령을 수행하기 전에 적어도 15초를 지연시킬 것이다. 또한, 히스토그램로부터 자취 내 총 기입 수의 부분으로서 15초보다 더 빨리 발행된 기입 수에 관한 정보는 가용할 수도 있을 빈 블록의 평균수를 저장 장치(100)에 알리기 위해 사용될 수 있다. 위에 언급된 바와 같이, 분석은 임의의 적합한 장치에 의해 수행될 수 있고, 히스토그램은 호스트 장치(50) 또는 어떤 다른 장치 상에 표시될 수 있다. 또한, 히스토그램을 표시하는 대신에 혹은 이에 더하여, 이 프로세스에 의해 수집된 정보는 트림 명령을 실행 또는 전송함에 있어 각각 지연을 조절하기 위해 저장 장치(100) 및/또는 호스트 장치(50)를 조율하기 위해서 사용될 수 있다.
이들 실시예에 사용될 수 있는 많은 대안들이 있다. 예를 들면, 저장 장치(100)가 사용할 수 있는 이론적인 빈 공간을 계산함으로써 분석을 더욱 향상시키기 위해 운영 시스템 공 디스크 공간 조회가 사용될 수도 있다. 즉, 프로세스가 얼마나 많은 빈 공간이 있는지를 안다면, 더 많은 빈 공간을 얻기 위해 트림 명령을 수행하는 것이 얼마나 중요한지를 고려할 수 있다(예를 들면, 가용한 빈 공간에 기초하여 트림 명령들을 수행하는 빈도를 조절함으로써). 이것이 도 4의 흐름도(400)에 도시되었다. 이 흐름도(400)에서 단계(410 ~ 460)는 트림 명령시에 빈 공간을 체크하는 추가된 단계(단계(422))를 제외하고, 도 2의 흐름도(200)에서 단계(210 ~ 260)와 사실상 동일하다. 이것은, 예를 들면, 윈도우즈-기반의 호스트 장치에선 Get Disk Free Space 명령을 혹은 리눅스-기반의 호스트 장치에선 STAT 명령을 보냄으로써 수행될 수 있다. 이러한 명령에 응하여, 호스트 장치(50)는 이의 운영 시스템이 저장 장치 상에 가용한 빈 공간일 것으로 여기는 것을 제공할 것이다. 이러한 명령들은 분석의 시작에서 주기적으로 혹은 한번 발행될 수 있고 그후에 트림 및 기입 수에 기초하여 카운트를 조절할 수 있다. 빈 공간 정보는 히스토그램을 생성하거나(단계(435)) 위에 언급된 그외 어떤 다른 최적화를 수행하기 위해 트림 명령과 기입 명령 사이에 경과된 계산된 시간과 함께 사용될 수 있다.
도 4에 도시된 프로세스가 도 2에 도시된 프로세스보다 더 정확한 분석을 제공하지만, 이 분석에서 사용되는 빈 공간은 정보가 저장 장치(100)가 아니라 호스트 장치의 운영 시스템으로부터 오고 있고 호스트 장치(50)에 의해 보내진 트림 명령이 사실상 저장 장치(100)에 의해 실행되는 것으로 가정하기 때문에, 정확하지 않을 수 있다. 즉, 저장 장치(100)에 의해 아직 트림되지 않았을지라도, 호스트의 운영 시스템에 의해 트림된 것으로 마크된 어느 것이든 빈 공간으로서 마크될 것이다. 이를 해결하기 위해서, 또 다른 실시예에서, 프로세스는 저장 장치(100) 상에 실제 빈 공간을 고려한다. 이 실시예는 도 5에 흐름도(500)에 관련하여 예시될 것이다. 이 흐름도(500)에서 단계(510 ~ 560)는 호스트 장치(50)에 의해 지정된 자유 공간을 체크하는(단계(522)) 대신에 저장 장치의 플래시 변환 계층(FTL)으로부터 물리 블록/페이지가 체크되는 것을 제외하고 도 4의 흐름도(400)에서 단계(410 ~ 460)과 사실상 동일하다. (FTL은 호스트 LBA를 메모리 내 물리 블록에 매핑한다). 이 동작은 저장 장치(100)에의 전유 명령과 함께 수행될 수 있다. 위에 프로세스들에서와 같이, 이 프로세스의 결과는 트림 동작의 수행을 개선하기 위해서, 히스토그램의 생성을 위해서 및/또는 펌웨어, 소프트웨어, 및 기반구조 최적화를 위해서 사용될 수 있다.
결어
전술한 상세한 설명은 발명의 정의로서가 아니라 발명이 취할 수 있는 선택된 형태들의 예시로서 이해되게 의도된 것이다. 청구된 발명의 범위를 정의하게 의도되는 것은 모든 등가물들을 포함하여 다음의 청구항들뿐이다. 마지막으로, 본원에 기술된 바람직한 실시예들의 어느 것의 어느 측면이든 단독으로 혹은 서로 조합하여 사용될 수 있음에 유의한다.

Claims (29)

  1. 호스트 장치에 있어서,
    저장 장치 인터페이스를 통해 상기 호스트 장치가 저장 장치와 통신할 수 있는 것인, 상기 저장 장치 인터페이스; 및
    저장 장치 인터페이스와 통신하는 제어기를 포함하고, 상기 제어기는
    상기 저장 장치에 보내지는 트림 및 기입 명령들의 자취(trace)를 얻고;
    상기 자취 내 각 트림 명령에 대해: 상기 트림 명령과 동일한 논리 블록 어드레스(LBA)에의 후속 기입 명령을 확인하고; 상기 트림 명령과 기입 명령 사이에 경과된 시간을 계산하게 구성되는, 호스트 장치.
  2. 제 1 항에 있어서, 상기 제어기는 상기 계산된 경과된 시간에 기초하여 히스토그램을 생성하게 더욱 구성된, 호스트 장치.
  3. 제 1 항에 있어서, 상기 제어기는 상기 계산된 경과된 시간에 기초하여 상기 저장 장치가 언제 트림 명령들을 실행할지를 조절하게 더욱 구성된, 호스트 장치.
  4. 제 1 항에 있어서, 상기 제어기는 상기 계산된 경과된 시간에 기초하여 상기 호스트 장치가 언제 트림 명령들을 발행할지를 조절하게 더욱 구성된, 호스트 장치.
  5. 제 1 항에 있어서, 상기 제어기는 상기 동일한 LBA에의 후속 기입 명령이 확인되지 않는다면, 개재된 기입 명령 없이 또 다른 트림 명령이 상기 동일한 LBA에 발행되었는지 여부를 판정하게 더욱 구성된, 호스트 장치.
  6. 제 5 항에 있어서, 상기 제어기는 개재된 기입 명령 없이 또 다른 트림 명령이 상기 동일한 LBA에 발행되었다면 이중 트림 발생을 기록하게 더욱 구성된, 호스트 장치.
  7. 제 5 항에 있어서, 상기 제어기는 개재된 기입 명령 없이 또 다른 트림 명령이 상기 동일한 LBA에 발행되지 않았다면, 재기입된적 없는 발생을 기록하게 더욱 구성된, 호스트 장치.
  8. 제 1 항에 있어서, 상기 제어기는 호스트 장치 데이터로부터 가용한 LBA 공간을 판정하게 더욱 구성된, 호스트 장치.
  9. 제 8 항에 있어서, 상기 제어기는 상기 계산된 경과된 시간 및 상기 가용한 LBA 공간에 기초하여 상기 저장 장치가 언제 트림 명령들을 실행하지를 조절하게 더욱 구성된, 호스트 장치.
  10. 제 8 항에 있어서, 상기 제어기는 상기 계산된 경과된 시간 및 상기 가용한 LBA 공간에 기초하여 상기 호스트 장치가 언제 트림 명령들을 발행할지를 조절하게 더욱 구성된, 호스트 장치.
  11. 제 1 항에 있어서, 상기 제어기는 상기 저장 장치 내 가용한 물리 블록들을 판정하게 더욱 구성된, 호스트 장치.
  12. 제 11 항에 있어서, 상기 제어기는 상기 계산된 경과된 시간 및 상기 가용한 LBA 공간에 기초하여 상기 저장 장치가 언제 트림 명령들을 실행하지를 조절하게 더욱 구성된, 호스트 장치.
  13. 제 11 항에 있어서, 상기 제어기는 상기 계산된 경과된 시간 및 상기 가용한 LBA 공간에 기초하여 상기 호스트 장치가 언제 트림 명령들을 발행할지를 조절하게 더욱 구성된, 호스트 장치.
  14. 트림 명령들의 실행을 평가하는 방법으로서, 상기 방법은
    저장 장치 외부에 있고 저장 장치와 통신하는 호스트 장치 내에서,
    상기 저장 장치에 보내진 트림 및 기입 명령들의 자취를 얻는 단계; 및
    상기 자취 내 각 트림 명령에 대해: 상기 트림 명령과 동일한 논리 블록 어드레스(LBA)에의 후속 기입 명령이 있는지를 확인하는 단계; 및 상기 동일한 LBA에의 후속 기입 명령이 있다면, 상기 트림 명령과 기입 명령 사이에 경과된 시간을 계산하는 단계
    를 수행하는 단계를 포함하는, 방법.
  15. 제 14 항에 있어서, 상기 계산된 경과된 시간에 기초하여 히스토그램을 생성하는 단계를 더 포함하는, 방법.
  16. 제 14 항에 있어서, 상기 계산된 경과된 시간에 기초하여 상기 저장 장치가 언제 트림 명령들을 실행할지를 조절하는 단계를 더 포함하는, 방법.
  17. 제 14 항에 있어서, 상기 계산된 경과된 시간에 기초하여 상기 호스트 장치가 언제 트림 명령들을 발행할지를 조절하는 단계를 더 포함하는, 방법.
  18. 제 14 항에 있어서, 상기 동일한 LBA에의 후속 기입 명령이 없다면, 개재된 기입 명령 없이 또 다른 트림 명령이 상기 동일한 LBA에 발행되었는지 여부를 판정하는 단계를 더 포함하는, 방법.
  19. 제 18 항에 있어서, 개재된 기입 명령 없이 또 다른 트림 명령이 상기 동일한 LBA에 발행되었다면 이중 트림 발생을 기록하는 단계를 더 포함하는, 방법.
  20. 제 18 항에 있어서, 개재된 기입 명령 없이 또 다른 트림 명령이 상기 동일한 LBA에 발행되지 않았다면, 재기입된적 없는 발생을 기록하는 단계를 더 포함하는, 방법.
  21. 제 14 항에 있어서, 호스트 장치 데이터로부터 가용한 LBA 공간을 판정하는 단계를 더 포함하는, 방법.
  22. 제 21 항에 있어서, 상기 계산된 경과된 시간 및 상기 가용한 LBA 공간에 기초하여 상기 저장 장치가 언제 트림 명령들을 실행하지를 조절하는 단계를 더 포함하는, 방법.
  23. 제 21 항에 있어서, 상기 계산된 경과된 시간 및 상기 가용한 LBA 공간에 기초하여 상기 호스트 장치가 언제 트림 명령들을 발행할지를 조절하는 단계를 더 포함하는, 방법.
  24. 제 14 항에 있어서, 상기 저장 장치 내 가용한 물리 블록들을 판정하는 단계를 더 포함하는, 방법.
  25. 제 24 항에 있어서, 상기 계산된 경과된 시간 및 상기 가용한 LBA 공간에 기초하여 상기 저장 장치가 언제 트림 명령들을 실행하지를 조절하는 단계를 더 포함하는, 방법.
  26. 제 24 항에 있어서, 상기 계산된 경과된 시간 및 상기 가용한 LBA 공간에 기초하여 상기 호스트 장치가 언제 트림 명령들을 발행할지를 조절하는 단계를 더 포함하는, 방법.
  27. 제 26 항에 있어서, 상기 방법은 상기 호스트 장치에 의해 수행되는, 방법.
  28. 제 26 항에 있어서, 상기 방법은 상기 호스트 장치와 저장 장치들 사이의 장치에 의해 수행되는, 방법.
  29. 제 28 항에 있어서, 상기 호스트 장치와 저장 장치들 사이의 상기 장치는 버스 분석기인, 방법.
KR1020147029465A 2012-05-31 2013-04-17 트림 명령의 실행을 평가하기 위한 방법 및 호스트 장치 KR101903834B1 (ko)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201261654006P 2012-05-31 2012-05-31
US61/654,006 2012-05-31
US13/524,924 2012-06-15
US13/524,913 2012-06-15
US13/524,924 US20130326161A1 (en) 2012-05-31 2012-06-15 Method and Host Device for Assessing Execution of Trim Commands
US13/524,913 US8996768B2 (en) 2012-05-31 2012-06-15 Method and storage device for assessing execution of trim commands
PCT/US2013/036903 WO2013180842A1 (en) 2012-05-31 2013-04-17 Method and host device for assessing execution of trim commands

Publications (2)

Publication Number Publication Date
KR20150021495A KR20150021495A (ko) 2015-03-02
KR101903834B1 true KR101903834B1 (ko) 2018-10-02

Family

ID=49671716

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147029465A KR101903834B1 (ko) 2012-05-31 2013-04-17 트림 명령의 실행을 평가하기 위한 방법 및 호스트 장치

Country Status (4)

Country Link
US (2) US8996768B2 (ko)
KR (1) KR101903834B1 (ko)
CN (1) CN104272243B (ko)
WO (1) WO2013180842A1 (ko)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9767032B2 (en) * 2012-01-12 2017-09-19 Sandisk Technologies Llc Systems and methods for cache endurance
US10102117B2 (en) 2012-01-12 2018-10-16 Sandisk Technologies Llc Systems and methods for cache and storage device coordination
US9257182B2 (en) 2012-12-21 2016-02-09 Micron Technology, Inc. Memory devices and their operation having trim registers associated with access operation commands
US20140359198A1 (en) * 2013-05-28 2014-12-04 Apple Inc. Notification of storage device performance to host
JP2015014963A (ja) * 2013-07-05 2015-01-22 富士通株式会社 ストレージ制御装置、制御プログラム及び制御方法
CN104834484B (zh) * 2015-05-11 2018-10-23 上海新储集成电路有限公司 基于嵌入式可编程逻辑阵列的数据处理系统及处理方法
KR102444694B1 (ko) * 2015-08-26 2022-09-20 에스케이하이닉스 주식회사 메모리 시스템 및 그의 동작방법
CN107797934B (zh) * 2016-09-05 2022-07-22 北京忆恒创源科技股份有限公司 处理去分配命令的方法与存储设备
US9927999B1 (en) 2016-09-09 2018-03-27 Western Digital Technologies, Inc. Trim management in solid state drives
US10089235B1 (en) * 2017-07-28 2018-10-02 Citrix Systems, Inc. Dynamic trim processing with disk caching
KR102423278B1 (ko) 2017-11-28 2022-07-21 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
US10649656B2 (en) 2017-12-28 2020-05-12 Micron Technology, Inc. Techniques to update a trim parameter in non-volatile memory
KR102493323B1 (ko) 2018-02-21 2023-01-31 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
RU2731321C2 (ru) * 2018-09-14 2020-09-01 Общество С Ограниченной Ответственностью "Яндекс" Способ определения потенциальной неисправности запоминающего устройства
RU2718215C2 (ru) 2018-09-14 2020-03-31 Общество С Ограниченной Ответственностью "Яндекс" Система обработки данных и способ обнаружения затора в системе обработки данных
RU2721235C2 (ru) 2018-10-09 2020-05-18 Общество С Ограниченной Ответственностью "Яндекс" Способ и система для маршрутизации и выполнения транзакций
RU2711348C1 (ru) 2018-10-15 2020-01-16 Общество С Ограниченной Ответственностью "Яндекс" Способ и система для обработки запросов в распределенной базе данных
RU2714373C1 (ru) 2018-12-13 2020-02-14 Общество С Ограниченной Ответственностью "Яндекс" Способ и система для планирования выполнения операций ввода/вывода
RU2749649C2 (ru) 2018-12-21 2021-06-16 Общество С Ограниченной Ответственностью "Яндекс" Способ и система для планирования обработки операций ввода/вывода
RU2720951C1 (ru) 2018-12-29 2020-05-15 Общество С Ограниченной Ответственностью "Яндекс" Способ и распределенная компьютерная система для обработки данных
RU2746042C1 (ru) 2019-02-06 2021-04-06 Общество С Ограниченной Ответственностью "Яндекс" Способ и система для передачи сообщения
US11947799B1 (en) 2019-10-11 2024-04-02 Amzetta Technologies, Llc Systems and methods for using the TRIM command with solid state devices
US11461363B2 (en) * 2020-03-31 2022-10-04 Sap Se Memory allocation and deallocation mechanism to reduce fragmentation and enhance defragmentation performance
KR20220165146A (ko) * 2021-06-07 2022-12-14 에스케이하이닉스 주식회사 저장 장치, 호스트 장치 및 그들의 동작 방법
KR20230000690A (ko) 2021-06-25 2023-01-03 삼성전자주식회사 적응적인 기록/독출 제어를 수행하는 스토리지 장치 및 스토리지 장치의 동작방법

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020120815A1 (en) 2001-02-26 2002-08-29 William Zahavi Methods and apparatus for accessing trace data
US20100262795A1 (en) 2009-04-08 2010-10-14 Steven Robert Hetzler System, method, and computer program product for analyzing monitor data information from a plurality of memory devices having finite endurance and/or retention

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7644239B2 (en) * 2004-05-03 2010-01-05 Microsoft Corporation Non-volatile memory cache performance improvement
US7562202B2 (en) * 2004-07-30 2009-07-14 United Parcel Service Of America, Inc. Systems, methods, computer readable medium and apparatus for memory management using NVRAM
US8122193B2 (en) 2004-12-21 2012-02-21 Samsung Electronics Co., Ltd. Storage device and user device including the same
US8489803B2 (en) 2009-12-14 2013-07-16 Smsc Holdings S.A.R.L. Efficient use of flash memory in flash drives
US20110208898A1 (en) 2010-02-23 2011-08-25 Samsung Electronics Co., Ltd. Storage device, computing system, and data management method
US8489855B2 (en) * 2010-05-07 2013-07-16 Ocz Technology Group Inc. NAND flash-based solid state drive and method of operation
US8850114B2 (en) * 2010-09-07 2014-09-30 Daniel L Rosenband Storage array controller for flash-based storage devices
US9135181B2 (en) * 2010-10-27 2015-09-15 International Business Machines Corporation Management of cache memory in a flash cache architecture
US11232022B2 (en) 2010-10-29 2022-01-25 Samsung Electronics Co., Ltd. Memory system, data storage device, user device and data management method thereof having a data management information matching determination
TWI417727B (zh) 2010-11-22 2013-12-01 Phison Electronics Corp 記憶體儲存裝置、其記憶體控制器與回應主機指令的方法
JP5364750B2 (ja) * 2011-03-25 2013-12-11 株式会社東芝 メモリシステム、及び不揮発性メモリデバイスの制御方法
US8654472B2 (en) * 2011-11-29 2014-02-18 HGST Netherlands B.V. Implementing enhanced fragmented stream handling in a shingled disk drive
US8949512B2 (en) * 2012-02-17 2015-02-03 Apple Inc. Trim token journaling

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020120815A1 (en) 2001-02-26 2002-08-29 William Zahavi Methods and apparatus for accessing trace data
US20100262795A1 (en) 2009-04-08 2010-10-14 Steven Robert Hetzler System, method, and computer program product for analyzing monitor data information from a plurality of memory devices having finite endurance and/or retention

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Giryoung et al. "Performance anlaysis of SSD wirte using TRIM in NTFS and EXT4", Computer Sciences and Convergence Information Technology (ICCIT), 2011 6th International Conference on.

Also Published As

Publication number Publication date
CN104272243B (zh) 2017-08-08
WO2013180842A1 (en) 2013-12-05
KR20150021495A (ko) 2015-03-02
CN104272243A (zh) 2015-01-07
US20130326161A1 (en) 2013-12-05
US20130326096A1 (en) 2013-12-05
US8996768B2 (en) 2015-03-31

Similar Documents

Publication Publication Date Title
KR101903834B1 (ko) 트림 명령의 실행을 평가하기 위한 방법 및 호스트 장치
US9075763B2 (en) Merging command sequences for memory operations
US9354814B2 (en) Host read command return reordering based on time estimation of flash read command completion
CN102841872B (zh) 用于命令处理的高性能路径
KR102549611B1 (ko) 스토리지 장치 및 그것의 이벤트 통지 방법
US10475516B2 (en) Data storage device and data erasing method wherein after erasing process, predetermined value is written to indicate completion of said erasing method
TWI479313B (zh) 資料寫入方法、記憶體控制器與記憶體儲存裝置
TWI739075B (zh) 閃存的資料寫入方法及電腦程式產品
US20150178188A1 (en) Storage Module and Method for Re-Enabling Preloading of Data in the Storage Module
JP2007193449A (ja) 情報記録装置及びその制御方法
JP2007193865A (ja) 情報記録装置及びその制御方法
KR20240116679A (ko) 데이터 저장 장치 및 그것의 동작 방법
CN111028881B (zh) 一种Open Block测试装置、方法及系统
US11922062B2 (en) Controller and operating method thereof
WO2018032743A1 (zh) 一种文件碎片评估方法及终端
KR20180081236A (ko) 데이터 저장 장치 및 그것을 포함하는 데이터 처리 시스템
US10921988B2 (en) System and method for discovering parallelism of memory devices
US9804968B2 (en) Storage system and data writing method
CN114816828A (zh) 存储器系统的固件参数自动调优
KR101143716B1 (ko) 휴대용 디바이스 및 그의 사용자명령 방법
TW202418092A (zh) 資料儲存裝置與寫入緩存器管理方法
TW202418090A (zh) 資料儲存裝置與寫入緩存器管理方法
KR20220010303A (ko) 메모리 시스템 및 메모리 시스템의 동작방법

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant