KR20200076244A - 데이터 스토리지 장치를 포함하는 시스템 및 데이터 스토리지 장치의 디스카드 동작 제어 방법 - Google Patents

데이터 스토리지 장치를 포함하는 시스템 및 데이터 스토리지 장치의 디스카드 동작 제어 방법 Download PDF

Info

Publication number
KR20200076244A
KR20200076244A KR1020180165161A KR20180165161A KR20200076244A KR 20200076244 A KR20200076244 A KR 20200076244A KR 1020180165161 A KR1020180165161 A KR 1020180165161A KR 20180165161 A KR20180165161 A KR 20180165161A KR 20200076244 A KR20200076244 A KR 20200076244A
Authority
KR
South Korea
Prior art keywords
discard
bitmap
shared
storage device
diskette
Prior art date
Application number
KR1020180165161A
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 KR1020180165161A priority Critical patent/KR20200076244A/ko
Priority to US16/533,256 priority patent/US11237753B2/en
Priority to CN201911305404.0A priority patent/CN111338564B/zh
Publication of KR20200076244A publication Critical patent/KR20200076244A/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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • 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
    • 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
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/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
    • 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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/26Sensing or reading circuits; Data output circuits
    • 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/0608Saving storage space on storage systems

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

데이터 스토리지 장치를 포함하는 시스템 및 데이터 스토리지 장치의 디스카드 동작 제어 방법{Data storage device including nonvolatile memory and method of controlling discard operation in the same}
본 발명은 반도체 집적 회로에 관한 것으로서, 더욱 상세하게는 데이터 스토리지 장치 및 상기 데이터 스토리지 장치의 디스카드 동작 제어 방법에 관한 것이다.
최근 비휘발성 메모리 장치의 랜덤 기입 동작의 성능이 시??셜 기입 동작의 성능 수준으로 향상되면서 로그-구조 파일 시스템(log-structured file system)을 기본 파일 시스템으로 하는 운영 체제(OS, operation system) 환경이 채택되고 있다. 이러한 운영 체제 환경에서 랜덤 기입 동작들의 중간 중간에 불가피하게 디스카드 동작들이 요구되고, 이러한 요구는 비휘발성 메모리 장치를 포함하는 시스템의 주요한 성능 하락의 요인이 된다. 성능 하락을 막기 위해 호스트 장치가 디스카드 동작들을 모아서 아이들(idle) 상태에 진입하기 전에 비휘발성 메모리 장치를 포함하는 데이터 스토리지 장치로 디스카드를 지시하는 방법이 수행될 수 있다. 그러나, 이 경우 디스카드 동작에 해당하는 데이터들이 유효한 상태로 유지가 되면서 데이터 스토리지 내부의 비효율적인 가비지 콜렉션 동작을 유발하여 스토리지 장치의 수명과 성능을 하락시킬 수 있다. 또한 이러한 비효율적인 스토리지 동작을 방지하기 위해 동기 디스카드 수행을 해야 하는데 이를 위해 약 300초 이상의 긴 아이들 시간과 함께 충분한 디스카드 수행 시간이 요구되는 문제가 있다.
상기와 같은 문제점을 해결하기 위한 본 발명의 일 목적은, 효율적으로 디스카드 동작을 수행할 수 있는 데이터 스토리지 장치를 포함하는 시스템을 제공하는 것이다.
또한 본 발명의 일 목적은, 효율적으로 디스카드 동작을 수행할 수 있는 데이터 스토리지 장치의 디스카드 동작 제어 방법을 제공하는 것이다.
또한 본 발명의 일 목적은, 데이터 스토리지 장치에서 호스트 장치에서 전달한 디스카드 영역 정보를 참조하여 현재는 유효하더라도 나중에 유효하지 않게 될 데이터 영역에 대해서 가비지 컬렉션을 수행하지 않게 하면서 비효율적인 가비지 콜렉션 동작을 줄일 수 있는 방법을 제공하는 것이다.
상기 일 목적을 달성하기 위해, 본 발명의 실시예들에 따른 데이터 스토리지 장치의 디스카드 동작 제어 방법은, 호스트 장치 및 데이터 스토리지 장치에 의해 공통으로 액세스되고, 상기 데이터 스토리지 장치에 포함되는 비휘발성 메모리의 복수의 섹터들 중 타겟 섹터들에 각각 상응하는 복수의 디스카드 비트들을 포함하는 공유 디스카드 비트맵을 제공하는 단계, 상기 호스트 장치에 의해, 상기 타겟 섹터들의 각각에 대한 디스카드 가능 여부를 나타내도록 상기 공유 디스카드 비트맵에 저장된 상기 복수의 디스카드 비트들의 비트 값들을 설정하는 단계 및 상기 데이터 스토리지 장치에 의해, 상기 공유 디스카드 비트맵에 저장된 상기 복수의 디스카드 비트들의 비트 값들에 기초하여 상기 타겟 섹터들에 대한 비동기 디스카드 동작을 수행하는 단계를 포함한다.
상기 일 목적을 달성하기 위해, 본 발명의 실시예들에 따른 데이터 스토리지 장치의 디스카드 동작 제어 방법은, 데이터 스토리지 장치에 포함되는 비휘발성 메모리의 복수의 섹터들 중 타겟 섹터들의 어드레스 범위를 설정하는 단계, 호스트 장치 및 데이터 스토리지 장치에 의해 공통으로 액세스되고, 상기 타겟 섹터들에 각각 상응하는 복수의 디스카드 비트들을 포함하는 공유 디스카드 비트맵의 어드레스 범위를 설정하는 단계, 상기 호스트 장치에 의해, 상기 타겟 섹터들의 각각에 대한 디스카드 가능 여부를 나타내도록 상기 공유 디스카드 비트맵에 저장된 상기 복수의 디스카드 비트들의 비트 값들을 설정하는 단계 및 상기 데이터 스토리지 장치에 의해, 상기 공유 디스카드 비트맵에 저장된 상기 복수의 디스카드 비트들의 비트 값들에 기초하여 상기 타겟 섹터들에 대한 비동기 디스카드 동작을 수행하는 단계를 포함한다.
상기 일 목적을 달성하기 위해, 본 발명의 실시예들에 따른 시스템은,
비휘발성 메모리의 복수의 섹터들 중 타겟 섹터들에 각각 상응하는 복수의 디스카드 비트들을 포함하는 공유 디스카드 비트맵, 상기 공유 디스카드 비트맵에 액세스하여 상기 타겟 섹터들의 각각에 대한 디스카드 가능 여부를 나타내도록 상기 공유 디스카드 비트맵에 저장된 상기 복수의 디스카드 비트들의 비트 값들을 설정하는 호스트 장치, 및 상기 공유 디스카드 비트맵에 액세스하여 상기 공유 디스카드 비트맵에 저장된 상기 복수의 디스카드 비트들의 비트 값들에 기초하여 상기 타겟 섹터들에 대한 비동기 디스카드 동작을 수행하는 데이터 스토리지 장치를 포함한다.
본 발명의 실시예들에 따른 데이터 스토리지 장치를 포함하는 시스템 및 상기 데이터 스토리지 장치의 디스카드 동작 제어 방법은, 호스트 장치 및 데이터 스토리지 장치에 의해 공유되는 공유 디스카드 비트맵을 이용하여 비동기 디스카드 동작 및/또는 동기 디스카드 동작을 수행함으로써 비효율적인 가비지 콜렉션을 방지하고 시스템의 동작 속도, 성능 및 수명을 향상시킬 수 있다.
도 1은 본 발명의 실시예들에 따른 데이터 스토리지 장치의 디스카드 동작 제어 방법을 나타내는 순서도이다.
도 2는 본 발명의 실시예들에 따른 시스템을 나타내는 블록도이다.
도 3은 본 발명의 실시예들에 따른 시스템에 포함되는 공유 디스카드 비트맵을 나타내는 도면이다.
도 4는 본 발명의 실시예들에 따른 시스템을 나타내는 블록도이다.
도 5는 도 4의 시스템의 어드레스 매핑을 나타내는 도면이다.
도 6은 본 발명의 실시예들에 따른 디스카드 동작 제어 방법을 나타내는 도면이다.
도 7은 본 발명의 실시예들에 따른 디스카드 동작 제어 방법의 디스카드 리퀘스트의 일 실시예를 나타내는 순서도이다.
도 8은 도 7의 디스카드 리퀘스트의 수행 과정의 일 예를 나타내는 도면이다.
도 9는 본 발명의 실시예들에 따른 디스카드 동작 제어 방법의 비동기 디스카드 동작의 일 실시예를 나타내는 순서도이다.
도 10은 도 9의 비동기 디스카드 동작의 수행 과정의 일 예를 나타내는 도면이다.
도 11은 본 발명의 실시예들에 따른 디스카드 동작 제어 방법의 동기 디스카드 동작의 일 실시예를 나타내는 순서도이다.
도 12는 도 11의 비동기 디스카드 동작의 수행 과정의 일 예를 나타내는 도면이다.
도 13은 본 발명의 실시예들에 따른 디스카드 동작 제어 방법의 설정 동작의 일 실시예를 나타내는 순서도이다.
도 14 및 15는 본 발명의 실시예들에 따른 디스카드 동작 제어 방법의 타겟 섹터들의 어드레스 범위 설정의 일 실시예를 나타내는 도면들이다.
도 16, 17 및 18은 본 발명의 실시예들에 따른 디스카드 동작 제어 방법의 공유 디스카드 비트맵의 어드레스 범위 설정의 일 실시예를 나타내는 도면들이다.
도 19는 본 발명의 실시예들에 따른 디스카드 동작 제어 방법의 모드 설정의 일 실시예를 나타내는 도면이다.
도 20 및 21은 본 발명의 실시예들에 따른 시스템들을 나타내는 도면들이다.
도 22는 도 20 및 21의 시스템들의 어드레스 매핑을 나타내는 도면이다.
도 23은 본 발명의 실시예들에 따른 데이터 스토리지 장치를 포함하는 시스템을 나타내는 블록도이다.
도 24는 도 23의 데이터 스토리지 장치에 포함되는 비휘발성 메모리 장치의 메모리 블록의 등가 회로를 나타내는 회로도이다.
도 25는 본 발명의 실시예들에 따른 모바일 장치를 나타내는 블록도이다.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.
도 1은 본 발명의 실시예들에 따른 데이터 스토리지 장치의 디스카드 동작 제어 방법을 나타내는 순서도이다.
도 1을 참조하면, 호스트 장치 및 데이터 스토리지 장치에 의해 공통으로 액세스되고, 상기 데이터 스토리지 장치에 포함되는 비휘발성 메모리의 복수의 섹터들 중 타겟 섹터들에 각각 상응하는 복수의 디스카드 비트들을 포함하는 공유 디스카드 비트맵을 제공한다(S100). 여기서 섹터라 함은 일정한 메모리 용량에 해당하는 메모리 셀들의 집합 또는 상기 메모리 셀들의 집합에 상응하는 어드레스 범위를 나타낸다. 상기 섹터의 사이즈는 비휘발성 메모리의 소거 단위가 되는 메모리 블록의 사이즈와 무관하다. 상기 섹터의 사이즈는 비휘발성 메모리의 소거 단위가 되는 메모리 블록의 사이즈와 동일할 수도 있고 상이할 수도 있다. 공유 디스카드 비트맵의 복수의 디스카드 비트들에 대해서는 도 3을 참조하여 후술한다.
상기 호스트 장치에 의해, 상기 타겟 섹터들의 각각에 대한 디스카드 가능 여부를 나타내도록 상기 공유 디스카드 비트맵에 저장된 상기 복수의 디스카드 비트들의 비트 값들을 설정한다(S200). 각 디스카드 비트가 제1 값을 갖는 경우 상기 각 디스카드 비트에 상응하는 타겟 섹터가 디스카드 가능함을 나타내고 제2 값을 갖는 경우 상기 각 디스카드 비트에 상응하는 타겟 섹터가 디스카드 가능하지 않음을 나타낼 수 있다. 상기 제1 값은 1이고 상기 제2 값은 0일 수 있으나, 이에 한정되는 것은 아니다. 상기 호스트 장치에 의한 상기 복수의 디스카드 비트들의 비트 값들의 설정에 대한 실시예는 도 7 및 8을 참조하여 후술한다.
상기 데이터 스토리지 장치에 의해, 상기 공유 디스카드 비트맵에 저장된 상기 복수의 디스카드 비트들의 비트 값들에 기초하여 상기 타겟 섹터들에 대한 비동기 디스카드 동작을 수행한다. 여기서 비동기 디스카드 동작이라 함은 상기 호스트 장치로부터의 정보에 관계 없이 상기 데이터 스토리지 장치에 의해 상기 공유 디스카드 비트맵에 기초하여 수행되는 것을 디스카드 동작을 나타낸다. 후술하는 바와 같이, 상기 비동기 디스카드 동작은, 상기 호스트 장치의 아이들(idle) 상태 동안에 수행될 수 있다. 상기 비동기 디스카드 동작의 일 실시는 도 9 및 10을 참조하여 후술한다.
도 2는 본 발명의 실시예들에 따른 시스템을 나타내는 블록도이다.
도 2를 참조하면, 시스템(1000)은 호스트 장치(100), 데이터 스토리지 장치(200) 및 공유 디스카드 비트맵(300)을 포함할 수 있다. 실시예에 따라서, 공유 디스카드 비트맵은 데이터 스토리지 장치(200)에 포함되거나 호스트 장치(100)에 포함될 수 있다.
공유 디스카드 비트맵(300)은 데이터 스토리지 장치(300)에 포함되는 비휘발성 메모리(NVM)의 복수의 섹터들 중 타겟 섹터들에 각각 상응하는 복수의 디스카드 비트들을 포함한다. 공유 디스카드 비트맵(300)은 호스트 장치(100) 및 데이터 스토리지 장치(200)에 의해 공유된다. 즉 공유 디스카드 비트맵(300)은 호스트 장치(100) 및 데이터 스토리지 장치(200)의 각각에 의해 독립적으로 액세스될 수 있다. 호스트 장치(100)는 공유 디스카드 비트맵(300)에 저장된 디스카드 비트들의 비트 값들을 독출 데이터(RDH)로서 독출하거나 공유 디스카드 비트맵(300)에 기입 데이터(WDH)를 제공하여 디스카드 비트들의 비트 값들을 변경 또는 설정할 수 있다. 또한, 데이터 스토리지 장치(200) 공유 디스카드 비트맵(300)에 저장된 디스카드 비트들의 비트 값들을 독출 데이터(RDS)로서 독출하거나 공유 디스카드 비트맵(300)에 기입 데이터(WDS)를 제공하여 디스카드 비트들의 비트 값들을 변경 또는 설정할 수 있다.
호스트 장치(100)는 공유 디스카드 비트맵(300)에 액세스하여 상기 타겟 섹터들의 각각에 대한 디스카드 가능 여부를 나타내도록 공유 디스카드 비트맵(300)에 저장된 상기 복수의 디스카드 비트들의 비트 값들을 설정할 수 있다. 즉, 호스트 장치(100)는 도 1의 단계 S200을 수행할 수 있다.
데이터 스토리지 장치(200)는 공유 디스카드 비트맵(300)에 액세스하여 공유 디스카드 비트맵(300)에 저장된 상기 복수의 디스카드 비트들의 비트 값들에 기초하여 상기 타겟 섹터들에 대한 비동기 디스카드 동작을 수행할 수 있다. 즉 데이터 스토리지 장치(200)는 도 1의 단계 S300을 수행할 수 있다.
또한, 시스템(1000)은 공유 디스카드 비트맵(300)에 기초하여 호스트 장치(100)로부터 데이터 스토리지 장치(200)로 전송되는 디스카드 명령(DSC)에 의해 상기 타겟 섹터들에 대한 동기 디스카드 동작을 수행할 수 있다. 즉, 호스트 장치(100) 및 데이터 스토리지 장치(200)는 공유 디스카드 비트맵(300)을 이용하여 도 1의 단계 S400을 수행할 수 있다.
이와 같이, 본 발명의 실시예들에 따른 데이터 스토리지 장치를 포함하는 시스템 및 상기 데이터 스토리지 장치의 디스카드 동작 제어 방법은, 호스트 장치 및 데이터 스토리지 장치에 의해 공유되는 공유 디스카드 비트맵을 이용하여 비동기 디스카드 동작 및/또는 동기 디스카드 동작을 수행함으로써 시스템의 동작 속도 및 성능을 향상시킬 수 있다.
도 3은 본 발명의 실시예들에 따른 시스템에 포함되는 공유 디스카드 비트맵을 나타내는 도면이다.
도 3을 참조하면, 공유 디스카드 비트맵(SDBM)은 복수의 디스카드 비트들(B0~Bn-1)을 포함하고 비동기 디스카드 영역(ADR)은 복수의 타겟 섹터들(TSEC0~TSECn-1)을 포함한다. 비동기 디스카드 영역(ADR)은 비휘발성 메모리의 메모리 영역에 포함되는 복수의 섹터들의 일부 또는 전부일 수 있다. 복수의 디스카드 비트들(B0~Bn-1)은 각각 1비트에 해당하고 복수의 타겟 섹터들(TSEC0~TSECn-1)의 각각은 단위 사이즈(SZU)를 가질 수 있다.
도 3에 도시된 바와 같이, 복수의 디스카드 비트들(B0~Bn-1)의 개수(N) 및 복수의 타겟 섹터들(TSEC0~TSECn-1)의 개수(N)은 동일하고, 복수의 디스카드 비트들(B0~Bn-1)은 각각 복수의 타겟 섹터들(TSEC0~TSECn-1)에 상응한다. 즉 제1 디스카드 비트(B0)는 제1 타겟 섹터(TSEC0)에 상응하고, 제2 디스카드 비트(B1)는 제2 타겟 섹터(TSEC1)에 상응하고, 이러한 방식으로 제n 디스카드 비트(Bn-1)는 제n 타겟 섹터(TSECn-1)에 상응한다.
복수의 디스카드 비트들(B0~Bn-1)의 각각의 비트 값에 의해 상응하는 타겟 섹터의 디스카드 가능 여부를 나타낼 수 있다. 즉 각각의 비트 값이 제1 값(예들 들어, 0)인 경우 상응하는 타겟 섹터가 디스카드 가능하지 않음을 나타내고 각각의 비트 값이 제2 값(예들 들어, 1)인 경우 상응하는 타겟 섹터가 디스카드 가능함을 나타낼 수 있다.
일 실시예에서, 비동기 디스카드 영역(ADR)의 어드레스 범위는 복수의 타겟 섹터들(TSEC0~TSECn-1)의 시작 주소(SADDA) 및 비동기 디스카드 영역(ADR)의 사이즈(SZA)로서 설정될 수 있다. 각각의 타겟 섹터의 단위 사이즈(SZU) 및 복수의 타겟 섹터들(TSEC0~TSECn-1)의 개수를 곱한 값(SZU*N)은 비동기 디스카드 영역(ADR)의 사이즈(SZA)에 해당한다. 따라서, 비동기 디스카드 영역(ADR)의 어드레스 범위는 복수의 타겟 섹터들(TSEC0~TSECn-1)의 시작 주소(SADDA) 및 비동기 디스카드 영역(ADR)에 포함되는 복수의 타겟 섹터들(TSEC0~TSECn-1)의 개수(N)으로서 설정될 수 있다.
마찬가지로, 공유 디스카드 비트맵(SDBM)의 어드레스 범위는 공유 디스카드 비트맵(SDBM)의 시작 주소(SADDM) 및 비동기 디스카드 영역(ADR)의 사이즈(SZA)로서 설정될 수 있다. 각각의 디스카드 비트는 1비트 이므로, 공유 디스카드 비트맵(SDBN)의 어드레스 범위는 공유 디스카드 비트맵(SDBN)의 시작 주소(SADDM) 및 디스카드 비트(B0~Bn-1)의 개수(N)로서 설정될 수 있다.
도 4는 본 발명의 실시예들에 따른 시스템을 나타내는 블록도이다.
도 4를 참조하면, 전자 시스템(1001)은 호스트 장치(101) 및 데이터 스토리지 장치(201)를 포함한다. 호스트 장치(101)는 중앙 처리 장치(Central Processing Unit; CPU)와 같은 호스트 콘트롤러(HCON)(111)를 포함할 수 있다. 스토리지 장치(201)는 비휘발성 메모리(NVM)(221) 및 스토리지 콘트롤러(SCON)(241)를 포함할 수 있다.
일 실시예에서, 도 4에 도시된 바와 같이, 전술한 공유 디스카드 비트맵(SDBM)은 비휘발성 메모리(221)에 저장될 수 있다. 이 경우 호스트 장치(101)는 호스트 장치(101) 및 데이터 스토리지 장치(201) 사이의 블록 액세서블 인터페이스(410)를 통하여 공유 디스카드 비트맵(SDBM)에 액세스할 수 있다.
호스트 콘트롤러(111)는 비휘발성 메모리(221)에 대한 액세스 및 호스트 장치(101)의 전반적인 동작을 제어할 수 있다. 호스트 콘트롤러(111)는 도 5를 참조하여 후술하는 바와 같은 버츄얼 어드레스 공간을 이용하여 비휘발성 메모리(221) 및 비휘발성 메모리(221)에 포함되는 공유 디스카드 비트맵(SDBM)에 액세스할 수 있다. 호스트 콘트롤러(111)는 비휘발성 메모리(221)를 블록 단위로 액세스하기 위한 블록 액세스 코맨드를 발생할 수 있다.
스토리지 콘트롤러(241)는 인터페이스(410)를 통하여 호스트 장치(101)로부터의 블록 액세스 코맨드를 수신할 수 있다. 스토리지 콘트롤러(241)는 상기 블록 액세스 코맨드에 기초하여 비휘발성 메모리(221)에 대한 블록 단위의 액세스를 수행할 수 있다. 인터페이스(410)는 버스와 같은 하드웨어, 드라이브 프로그램과 같은 소프트 또는 이들의 조합에 상응할 수 있다.
일 실시예에 있어서, 데이터 스토리지 장치(201)의 비휘발성 메모리(221)는 SATA(Serial Advanced Technology Attachment) 버스, NVMe(Non-Volatile Memory Express) 버스, SAS(Serial Attached SCSI) 버스 등의 버스를 포함하는 블록 액세서블 인터페이스(block accessible interface)(410)를 통해 호스트 장치(101)의 호스트 콘트롤러(111)와 연결될 수 있다.
비휘발성 메모리(221)는 호스트 장치(101)에 의해 블록 액세서블 인터페이스(410)를 통하여 블록 단위로 액세스되는 메모리 장치일 수 있다. 예를 들어, 비휘발성 메모리(NVM)는 EEPROM(Electrically Erasable Programmable Read-Only Memory), 플래시 메모리(Flash Memory), PRAM(Phase Change Random Access Memory), RRAM(Resistance Random Access Memory), NFGM(Nano Floating Gate Memory), PoRAM(Polymer Random Access Memory), MRAM(Magnetic Random Access Memory), FRAM(Ferroelectric Random Access Memory) 또는 이와 유사한 메모리로 구현될 수 있다.
도 5는 도 4의 시스템의 어드레스 매핑을 나타내는 도면이다.
도 5를 참조하면, 호스트 장치(101)의 버츄얼 어드레스 공간(VAS, virtual address space)은 공유 디스카드 비트맵(SDBM) 및 비동기 디스카드 영역(ADR)을 포함할 수 있다.
버츄얼 어드레스 공간(VAS)의 공유 디스카드 비트맵(SDBM) 및 비동기 디스카드 영역(ADR)은 비휘발성 메모리(NVM)의 공유 디스카드 비트맵(SDBM) 및 비동기 디스카드 영역(ADR)에 각각 매핑된다. 비동기 디스카드 영역(ADR)은 비휘발성 메모리(NVM)의 일부에 해당할 수도 있고 전부에 해당할 수도 있다. 즉 비동기 디스카드 영역(ADR)의 사이즈(SZA)는 비휘발성 메모리(NVM)의 사이즈(SZN)와 같을 수도 있고 작을 수도 있다. 비동기 디스카드 영역(ADR)의 사이즈(SZA)에 비례하는 사이즈(SZM)를 갖는 공유 디스카드 비트맵(SDBM)은 비동기 디스카드 영역(ADR)에 않을 수 있다. 호스트 장치(101)는 버츄얼 어드레스 공간(VAS) 및 비휘발성 메모리(NVM)의 매핑 관계에 기초하여 비휘발성 메모리(NVM)의 각 영역을 액세스할 수 있다.
도 6은 본 발명의 실시예들에 따른 디스카드 동작 제어 방법을 나타내는 도면이다.
도 6에는 호스트 장치에서 발생되는 호스트 리퀘스트(host request) 및 이에 따른 데이터 스토리지 장치의 프로세싱 시퀀스(processing sequence)가 도시되어 있다. 예를 들어, 호스트 장치는 액티브 상태(active state)에서 제1 비동기 디스카드 리퀘스트(ADREQ1) 및 제2 비동기 디스카드 리퀘스트(ADREQ2)를 순차적으로 발생할 수 있다. 호스트 장치의 노말 동작에 대한 리퀘스트들은 편의상 도시를 생략하였다. 제1 비동기 디스카드 리퀘스트(ADREQ1) 및 제2 비동기 디스카드 리퀘스트(ADREQ2)는 공유 디스카드 비트맵(SDBM)에 대한 독출 명령(RD) 및 기입 명령(WR)을 각각 포함할 수 있다. 독출 명령(RD) 및 기입 명령(WR)은 공유 디스카드 비트맵(SDBM)의 액세스되는 부분의 어드레스 범위를 나타내는 시작 어드레스들(AX1, AX2) 및 액세스 사이즈들(SX1, SX2)을 각각 포함할 수 있다. 호스트 장치 및 데이터 스토리지 장치가 전술한 블록 액세스 인터페이스를 통해 연결된 경우 액세스 사이즈들(SX1, SX2)의 각각은 비휘발성 메모리(NVM)의 독출 및 기입의 최소 단위가 되는 페이지 사이즈와 무관하며 임의의 논리적인 액세스 단위가 될 수 있다. 데이터 스토리지 장치는 이러한 독출 명령(RD) 및 기입 명령(WR)에 따라서 공유 디스카드 비트맵(SDBM)의 상응하는 어드레스 범위에 대한 독출 동작(RO) 및 기입 동작(W0)을 수행한다.
호스트 장치가 아이들 상태에 진입하면, 데이터 스토리지 장치는 비동기 디스카드 동작(ADO)을 수행할 수 있다. 비동기 디스카드 동작(ADO)은 호스트 장치로부터의 코맨드와 같은 정보에 관계 없이 아이들 상태 동안에 데이터 스토리지 장치에 의해 공유 디스카드 비트맵(SDBM)에 기초하여 수행될 수 있다. 비동기 디스카드 동작(ADO)은 데이터 스토리지 장치에 의한 공유 디스카드 비트맵(SDBM)에 대한 독출 동작(RO) 및 독출된 디스카드 비트들의 비트 값들에 기초한 디스카드 동작을 포함할 수 있다.
이후, 다시 호스트 장치는 액티브 상태에서 동기 디스카드 동작(SDO)을 수행할 수 있다. 동기 디스카드 동작(SDO)은 호스트 장치에 의한 공유 디스카드 비트맵(SDBM)에 대한 독출 동작(RO) 및 독출된 디스카드 비트들의 비트 값들에 기초한 디스카드 명령(DSC)의 발생을 포함할 수 있다. 디스카드 명령(DSC)은 디스카드를 수행하고자 하는 타겟 섹터들의 어드레스 범위를 나타내는 시작 어드레스들(AS1) 및 액세스 사이즈(SS1)을 포함할 수 있다.
이하, 도 7 내지 12를 참조하여 비동기 디스카드 리퀘스트(ADREQ1), 비동기 디스카드 동작(ADO) 및 동기 디스카드 동작(DDO)의 실시예들을 설명한다.
도 7은 본 발명의 실시예들에 따른 디스카드 동작 제어 방법의 비동기 디스카드 리퀘스트의 일 실시예를 나타내는 순서도이고, 도 8은 도 7의 비동기 디스카드 리퀘스트의 수행 과정의 일 예를 나타내는 도면이다.
도 7 및 8을 참조하면, 공유 디스카드 비트맵(SDBM)에 포함되는 복수의 디스카드 비트들의 값들을 설정하기 위해, 호스트 장치에 의해, 공유 디스카드 비트맵(SDBM)으로부터 제1 독출 데이터(RDH)를 독출한다(S410).
상기 호스트 장치에 의해, 타겟 섹터들 중 디스카드 가능한 섹터들에 상응하는 디스카드 비트들을 제1 값(예를 들어, 0)에서 제2 값(예를 들어, 1)으로 변경하여 제1 기입 데이터(WDH)를 발생한다(S420).
상기 호스트 장치에 의해, 제1 기입 데이터(WDH)를 공유 디스카드 비트맵(SDBM)에 저장한다(S430).
도 8에는 제1 비동기 디스카드 리퀘스트(ADREQ1)가 수행되기 전의 시점(T0)에 해당하는 공유 디스카드 비트맵(SDBM)의 저장 값들 및 제1 비동기 디스카드 리퀘스트(ADREQ1)가 수행된 후의 시점(T1)에 해당하는 공유 디스카드 비트맵(SDBM)의 저장 값들과 제1 독출 데이터(RDH) 및 제1 기입 데이터(WDH)가 도시되어 있다. 비동기 디스카드 리퀘스트가 발생되기 전 및 발생된 비동기 디스카드 리퀘스트에 대한 비동기 디스카드 동작이 모두 완료된 경우에는 공유 디스카드 비트맵(SDBM)의 디스카드 비트들의 비트 값들은 모두 0으로 설정 또는 변경될 수 있다.
공유 디스카드 비트맵(SDBM)에 대한 액세스를 위한 어드레스 범위는 액세스 시작 어드레스(SADDM+K) 및 액세스 사이즈(L)로 표현될 수 있다. 전술한 바와 같이, 액세스 사이즈(L)은 페이지 사이즈에 해당할 수 있으나, 이에 한정되는 것은 아니다.
결과적으로 도 8에 도시된 바와 같이 제1 비동기 디스카드 리퀘스트(ADREQ1)에 따라서 디스카드 가능한 5개의 타겟 섹터들에 상응하는 공유 디스카드 비트맵(SDBM)의 5개의 디스카드 비트들의 비트 값들이 0에서 1로 변경된다.
도 9는 본 발명의 실시예들에 따른 디스카드 동작 제어 방법의 비동기 디스카드 동작의 일 실시예를 나타내는 순서도이고, 도 10은 도 9의 비동기 디스카드 동작의 수행 과정의 일 예를 나타내는 도면이다.
도 9 및 10을 참조하면, 타겟 섹터들에 대한 비동기 디스카드 동작을 수행하기 위해, 데이터 스토리지 장치에 의해, 공유 디스카드 비트맵(SDBM)으로부터 제2 독출 데이터(RDS)를 독출한다(S510).
상기 데이터 스토리지 장치에 의해, 상기 제2 독출 데이터에 기초하여 공유 디스카드 비트맵(SDBM)의 복수의 디스카드 비트들 중 제2 값(예를 들어, 1)을 갖는 디스카드 비트를 검색한다 (S520). 일 실시예에서, 제2 값을 갖는 디스카드 비트의 검색은 공유 디스카드 비트맵(SDBM)의 시작 어드레스(SADDM)부터 순차적으로 수행될 수 있다.
상기 데이터 스토리지 장치에 의해, 상기 제2 값을 갖는 디스카드 비트에 상응하는 타겟 섹터에 대한 디스카드 동작을 수행한다(S530).
상기 데이터 스토리지 장치에 의해, 상기 디스카드 동작이 완료된 타겟 섹터에 상응하는 디스카드 비트를 상기 제2 값에서 제1 값(예를 들어, 0)으로 변경하여 제2 기입 데이터(WDS)를 발생한다(S540).
상기 데이터 스토리지 장치에 의해, 제2 기입 데이터(WDS)를 공유 디스카드 비트맵(SDBM)에 저장한다(S550).
이러한, 비동기 디스카드 동작(ADO)은 제2 값을 갖는 각각의 비트에 대해서 순차적으로 수행될 수 있다.
도 10에는 비동기 디스카드 동작(ADO)이 수행되기 전의 시점(T2)에 해당하는 공유 디스카드 비트맵(SDBM)의 저장 값들 및 비동기 디스카드 동작(ADO)이 수행된 후의 시점(T3)에 해당하는 공유 디스카드 비트맵(SDBM)의 저장 값들과 제2 독출 데이터(RDS) 및 제2 기입 데이터(WDS)가 도시되어 있다. 예를 들어, 비동기 디스카드 동작(ADO)이 수행되기 전의 시점(T2)에서 공유 디스카드 비트맵(SDBM)에는 제1 비동기 디스카드 리퀘스트(ADREQ1) 및 공유 디스카드 비트맵(SDBM)에는 제1 비동기 디스카드 리퀘스트(ADREQ1) 및 제2 비동기 디스카드 리퀘스트(ADREQ2)에 의해 변경된 비트 값들이 저장될 수 있다. 전술한 바와 같이, 공유 디스카드 비트맵(SDBM)에 대한 액세스를 위한 어드레스 범위는 액세스 시작 어드레스(SADDM+K) 및 액세스 사이즈(L)로 표현될 수 있다.
전술한 바와 같이, 비동기 디스카드 동작(ADO)은 호스트 장치가 아이들 상태에 있는 동안에 수행될 수 있다. 만약 1의 값을 갖는 모든 디스카드 비트들에 대한 디스카드 동작이 완료되기 전에 호스트 장치가 액티브 상태로 전환되는 경우, 데이터 스토리지 장치는 비동기 디스카드 동작(ADO)를 중단할 수 있다. 도 10에는 1의 값을 갖는 7개의 디스카드 비트들 중에서 3개의 디스카드 비트들에 대한 비동기 디스카드 동작(ADO)이 수행된 경우를 나타낸다.
도 11은 본 발명의 실시예들에 따른 디스카드 동작 제어 방법의 동기 디스카드 동작의 일 실시예를 나타내는 순서도이고, 도 12는 도 11의 비동기 디스카드 동작의 수행 과정의 일 예를 나타내는 도면이다.
도 11 및 12를 참조하면, 동기 디스카드 동작을 수행하기 위해, 호스트 장치에 의해, 공유 디스카드 비트맵(SDBM)으로부터 제3 독출 데이터(RDH)를 독출한다(S610).
상기 호스트 장치에 의해, 제3 독출 데이터(RDH)에 기초하여 공유 디스카드 비트맵(SDBM)의 복수의 디스카드 비트들 중 제2 값(예를 들어, 1)을 갖는 디스카드 비트를 검색한다(S620).
상기 호스트 장치에 의해, 상기 제2 값을 갖는 디스카드 비트의 어드레스를 상기 제2 값을 갖는 디스카드 비트에 상응하는 타겟 섹터의 어드레스로 변환한다(S630).
상기 호스트 장치에 의해, 상기 상응하는 타겟 섹터의 어드레스에 기초하여 디스카드 명령을 발생하여 상기 데이터 스토리지 장치로 전송한다(S640).
상기 데이터 스토리지 장치에 의해, 상기 디스카드 명령에 기초하여 상기 상응하는 타겟 섹터에 대한 디스카드 동작을 수행한다(S650).
상기 호스트 장치 또는 상기 데이터 스토리지 장치에 의해, 상기 디스카드 동작이 완료된 타겟 섹터에 상응하는 디스카드 비트를 상기 제2 값에서 제1 값(예를 들어, 0)으로 변경하여 제3 기입 데이터(WDH)를 발생한다 (S660).
상기 호스트 장치 또는 상기 데이터 스토리지 장치에 의해, 제3 기입 데이터(WDH)를 공유 디스카드 비트맵(SDBM)에 저장한다 (S670).
디스카드 비트의 어드레스를 상기 제2 값을 갖는 디스카드 비트에 상응하는 타겟 섹터의 어드레스로 변환하는 것은 공유 디스카드 비트맵(SDBM)의 시작 어드레스(SADDM), 타겟 섹터들 즉 비동기 디스카드 영역(ADR)의 시작 어드레스(SADDA) 및 각 타겟 섹터의 단위 사이즈(SZU)을 이용하여 계산할 수 있다. 예를 들어, 디스카드 비트의 어드레스가 SADDM+i 라면 이에 상응하는 타겟 섹터의 어드레스는 SADDA+i*SZU 이 된다.
도 12에는 동기 디스카드 동작(SDO)이 수행되기 전의 시점(T4)에 해당하는 공유 디스카드 비트맵(SDBM)의 저장 값들 및 동기 디스카드 동작(SDO)가 수행된 후의 시점(T5)에 해당하는 공유 디스카드 비트맵(SDBM)의 저장 값들과 제3 독출 데이터(RDH) 및 제3 기입 데이터(WDH)가 도시되어 있다. 예를 들어, 호스트 장치는 1의 값을 갖는 2개의 디스카드 비트들에 상응하는 타겟 섹터들의 어드레스 범위를 나타내는 디스카드 명령(DSC)을 데이터 스토리지 장치로 전송할 수 있다. 도 12에는 1의 값을 갖는 4개의 디스카드 비트들 중에서 2개의 디스카드 비트들에 대한 동기 디스카드 동작(SDO)이 수행된 경우를 나타낸다.
도 13은 본 발명의 실시예들에 따른 디스카드 동작 제어 방법의 설정 동작의 일 실시예를 나타내는 순서도이다.
도 13을 참조하면, 타겟 섹터들의 어드레스 범위를 설정하고(S710), 공유 디스카드 비트맵(SDBM)의 어드레스 범위를 설정한다(S720). 비동기 디스카드 동작의 수행이 필요하다고 판단되는 경우, 비동기 디스카드 모드를 인에이블 한다(730).
상기 타겟 섹터들 즉 비동기 디스카드 영역(ADR)의 어드레스 범위는 호스트 장치로부터 데이터 스토리지 장치로 제공되는 비동기 디스카드 영역 설정 코맨드에 기초하여 설정될 수 있다. 상기 호스트 장치로부터 제공되는 상기 비동기 디스카드 영역 설정 코맨드는 상기 타겟 섹터들의 시작 주소 및 상기 타겟 섹터들의 개수(또는 카운트)를 포함할 수 있다.
공유 디스카드 비트맵(SDBM)의 어드레스 범위는 호스트 장치로부터 데이터 스토리지 장치로 제공되는 비트맵 설정 코맨드에 기초하여 설정될 수 있다. 상기 호스트 장치로부터 제공되는 상기 비트맵 설정 코맨드는 공유 디스카드 비트맵(SDBM)의 시작 주소 및 하나의 디스카드 비트에 상응하는 하나의 타겟 섹터의 유닛 사이즈를 포함할 수 있다. 스토리지 장치는 타겟 섹터들의 개수(또는 카운트) 및 상기 타겟 섹터의 유닛 사이즈에 기초하여 상기 복수의 디스카드 비트들의 비트 수(또는 카운트)를 계산할 수 있다.
상기 비동기 디스카드 모드는 호스트 장치로부터 데이터 스토리지 장치로 제공되는 모드 설정 코맨드에 기초하여 디스에이블되거나 인에이블될 수 있다.
일 실시예에서, 상기 타겟 섹터 설정 코맨드, 비트맵 설정 코맨드 및 상기 모드 설정 코맨드는 NVMe(nonvolatile memory express) 표준에 규정된 코맨드 포맷에 따라 발생될 수 있다. 이 경우, NVMe 표준에 따른 코맨드 포맷에서 유보된(reserved) 코드 값들을 이용하여 상기 타겟 섹터 설정 코맨드, 비트맵 설정 코맨드 및 상기 모드 설정 코맨드가 정의될 수 있을 것이다. 코맨드를 이용하여 제공된 정보는 레지스터와 같은 메모리에 저장되고, 저장된 값을 이용하여 본 발명의 실시예들에 따른 공유 디스카드 비트맵(SDBM)을 이용한 비동기 디스카드 동작 및 동기 디스카드 동작을 제어할 수 있다.
도 14 및 15는 본 발명의 실시예들에 따른 디스카드 동작 제어 방법의 타겟 섹터들의 어드레스 범위 설정의 일 실시예를 나타내는 도면들이다.
도 14에는 타겟 섹터들의 시작 주소(ASYNC_DISCARD_SECTOR_ADDR [A1_3:A1_0])가 도시되어 있고, 도 15에는 타겟 섹터들의 개수(ASYNC_DISCARD_SECTOR_CNT [A2_3:A2_0])가 도시되어 있다. 타겟 섹터들의 시작 주소(ASYNC_DISCARD_SECTOR_ADDR [A1_3:A1_0])의 사이즈는 4개의 필드들(EXT_CSD[A1_0]~EXT_CSD[A1_3])에 저장되는 4 바이트이고, 타겟 섹터들의 개수(ASYNC_DISCARD_SECTOR_CNT [A2_3:A2_0])의 사이즈는 4개의 필드들(EXT_CSD[A2_0]~EXT_CSD[A2_3])에 저장되는 4 바이트일 수 있다. A1_0, A1_1, A1_2, A1_3, A2,0, A2_1, A2_2, A2_3는 모두 필드 위치를 나타낸다. R/W/E는 호스트 장치가 해당 정보를 독출, 기입 및 소거할 수 있음을 나타낸다.
도 16, 17 및 18은 본 발명의 실시예들에 따른 디스카드 동작 제어 방법의 공유 디스카드 비트맵의 어드레스 범위 설정의 일 실시예를 나타내는 도면들이다.
도 16에는 공유 디스카드 비트맵(SDBM)의 시작 주소(SHARED_BITMAP_SECTOR_ADDR [S1_3:S1_0])가 도시되어 있고, 도 17에는 타겟 섹터의 단위 사이즈(SHARED_BITMAP_UNIT_SIZE [S3])가 도시되어 있고, 도 18에는 공유 디스카드 비트맵(SDBM)의 비트 수(SHARED_BITMAP_SECTOR_CNT [S2_3:S2_0])가 도시되어 있다. 공유 디스카드 비트맵(SDBM)의 시작 주소(SHARED_BITMAP_SECTOR_ADDR [S1_3:S1_0])의 사이즈는 4개의 필드들((SHARED_BITMAP_SECTOR_ADDR[S1_0] ~SHARED_BITMAP_SECTOR_ADDR[S1_3])에 저장되는 4 바이트이고, 타겟 섹터의 단위 사이즈(SHARED_BITMAP_UNIT_SIZE [S3])의 사이즈는 1바이트이고, 공유 디스카드 비트맵(SDBM)의 비트 수(SHARED_BITMAP_SECTOR_CNT [S2_3:S2_0])의 사이즈는 4개의 필드들 (SHARED_BITMAP_SECTOR_CNT[S2_0]~ SHARED_BITMAP_SECTOR_CNT[S2_3])에 저장되는 4바이트일 수 있다. S1_0, S1_1, S1_2, S1_3, S2,0, S2_1, S2_2, S2_3, S3는 모두 필드 위치를 나타낸다. R/W/E는 호스트 장치가 해당 정보를 독출, 기입 및 소거할 수 있음을 나타내고, R ONLY는 호스트 장치가 해당 정보를 독출만 할 수 있고 기입 및 소거는 금지됨을 나타낸다.
타겟 섹터의 단위 사이즈(SHARED_BITMAP_UNIT_SIZE [S3])에는 2의 지수에 해당하는 값만 저장될 수 있다. 예를 들어, 해당 필드에 9가 저장된 경우, 실제 단위 사이즈는 4KB*29=2MB와 같이 계산될 수 있다. 여기서 4KB는 파일 시스템에 의한 파일 생성의 최소 단위에 해당하며 시스템에 따라서 가변될 수 있다.
전술한 바와 같이, 공유 디스카드 비트맵(SDBM)에 포함되는 복수의 디스카드 비트들의 비트 수는 타겟 섹터들의 개수 및 타겟 섹터의 유닛 사이즈에 기초하여 계산될 수 있다.
도 19는 본 발명의 실시예들에 따른 디스카드 동작 제어 방법의 모드 설정의 일 실시예를 나타내는 도면이다.
도 19에는 비동기 디스카드 모드의 인에이블 또는 디스에이블을 나타내는 제어 값(ASYNC_DISCARD_CTRL [C1])도시되어 있다. 제어 값(ASYNC_DISCARD_CTRL [C1])은 8개의 비트들(BT0~BT7)을 포함하는 1바이트일 수 있다. 예를 들어, 제어 값(ASYNC_DISCARD_CTRL [C1])의 최하위 비트(BT0)(ASYNC_DISCARD_ENABLE)가 제1 값(예를 들어, 0)으로 설정된 경우에는 비동기 디스카드 모드가 디스에이블 됨을 나타내고 제2 값(예를 들어, 1)으로 설정된 경우에는 비동기 디스카드 모드가 인에이블 됨을 나타낼 수 있다. 나머지 비트들(BT1~BT7)은 다른 동작 모드 또는 동작 조건을 위해 유보될 수 있다. R/W/E는 호스트 장치가 해당 정보를 독출, 기입 및 소거할 수 있음을 나타낸다.
도 20 및 21은 본 발명의 실시예들에 따른 시스템들을 나타내는 도면들이다.
도 20을 참조하면, 전자 시스템(1002)은 호스트 장치(102) 및 데이터 스토리지 장치(202)를 포함한다. 호스트 장치(102)는 중앙 처리 장치(Central Processing Unit; CPU)와 같은 호스트 콘트롤러(HCON)(112)를 포함할 수 있다. 스토리지 장치(202)는 랜덤 액세스 메모리(RAM)(212), 비휘발성 메모리(NVM)(222), 랜덤 메모리 콘트롤러(RFCON)(232) 및 스토리지 콘트롤러(SCON)(242)를 포함할 수 있다.
일 실시예에서, 도 20에 도시된 바와 같이, 전술한 공유 디스카드 비트맵(SDBM)은 랜덤 액세스 메모리 (212)에 저장될 수 있다. 이 경우 호스트 장치(102)는 호스트 장치(102) 및 데이터 스토리지 장치(202) 사이의 메모리 맵 입출력(MMIO) 인터페이스(320)를 통하여 공유 디스카드 비트맵(SDBM)에 액세스할 수 있다.
호스트 콘트롤러(112)는 랜덤 액세스 메모리(212)에 대한 액세스, 비휘발성 메모리(222)에 대한 액세스 및 호스트 장치(102)의 전반적인 동작을 제어할 수 있다. 호스트 콘트롤러(112)는 도 22를 참조하여 후술하는 바와 같은 버츄얼 어드레스 공간을 이용하여 비휘발성 메모리(222), 랜덤 액세스 메모리(212) 및 랜덤 액세스 메모리(212)에 포함되는 공유 디스카드 비트맵(SDBM)에 액세스할 수 있다. 호스트 콘트롤러(112)는 랜덤 액세스 메모리(212)를 바이트 단위로 액세스하기 위한 바이트 액세스 코맨드 및 비휘발성 메모리(222)를 블록 단위로 액세스하기 위한 블록 액세스 코맨드를 발생할 수 있다.
랜덤 메모리 콘트롤러(232)는 MMIO 인터페이스(320)를 통하여 호스트 장치(102)로부터의 바이트 액세스 코맨드를 수신할 수 있다. 랜덤 메모리 콘트롤러(232)는 상기 바이트 액세스 코맨드에 기초하여 랜덤 액세스 메모리(212)에 대한 바이트 단위의 액세스를 수행할 수 있다.
스토리지 콘트롤러(241)는 블록 액세서블 인터페이스(410)를 통하여 호스트 장치(101)로부터의 블록 액세스 코맨드를 수신할 수 있다. 스토리지 콘트롤러(241)는 상기 블록 액세스 코맨드에 기초하여 비휘발성 메모리(221)에 대한 블록 단위의 액세스를 수행할 수 있다.
MMIO 인터페이스(320) 및 블록 액세서블 인터페이스(420)의 각각은 버스와 같은 하드웨어, 드라이브 프로그램과 같은 소프트 또는 이들의 조합에 상응할 수 있다.
일 실시예에 있어서, 스토리지 장치(202)의 랜덤 액세스 메모리(212)는 PCIe(Peripheral Component Interconnect Express) 버스를 포함하는 바이트 액세서블 인터페이스(byte accessible interface) (320)를 통해 호스트 장치(102)의 호스트 콘트롤러(112)와 연결될 수 있다.
일 실시예에 있어서, 스토리지 장치(202)의 비휘발성 메모리(222)는 SATA(Serial Advanced Technology Attachment) 버스, NVMe(Non-Volatile Memory Express) 버스, SAS(Serial Attached SCSI) 버스 등의 버스를 포함하는 블록 액세서블 인터페이스(block accessible interface)(420)를 통해 호스트 장치(102)의 호스트 콘트롤러(112)와 연결될 수 있다.
랜덤 액세스 메모리(212)는 호스트 장치(102)에 의해 바이트 액세서블 인터페이스(320)를 통하여 바이트 단위로 액세스되는 휘발성의 메모리 장치일 수 있다. 예를 들어, 디램(DRAM, dynamic random access memory), 에스램(SRAM, static random access memory)과 같이 빠른 동작 속도를 갖는 메모리로 구현될 수 있다.
비휘발성 메모리(222)는 호스트 장치(102)에 의해 블록 액세서블 인터페이스(420)를 통하여 블록 단위로 액세스되는 메모리 장치일 수 있다. 예를 들어, 비휘발성 메모리(222)는 EEPROM(Electrically Erasable Programmable Read-Only Memory), 플래시 메모리(Flash Memory), PRAM(Phase Change Random Access Memory), RRAM(Resistance Random Access Memory), NFGM(Nano Floating Gate Memory), PoRAM(Polymer Random Access Memory), MRAM(Magnetic Random Access Memory), FRAM(Ferroelectric Random Access Memory) 또는 이와 유사한 메모리로 구현될 수 있다.
도 21을 참조하면, 시스템(1003)은 호스트 장치(103) 및 데이터 스토리지 장치(203)를 포함할 수 있다.
호스트 장치(103)는 호스트 콘트롤러(HCON)(113) 및 호스트 메모리(HMEM)(123)를 포함할 수 있다.
호스트 콘트롤러(113N)는 호스트 장치(103)의 전반적인 동작을 제어하고 논리 연산을 수행할 수 있다. 호스트 콘트롤러(113)는 코드 또는 프로그램에 포함된 명령으로 표현되는 동작들을 실행하도록 물리적으로 구성된 회로를 포함하는 하드웨어 기반의 데이터 프로세싱 장치일 수 있다. 예를 들어, 호스트 콘트롤러(113)는 시스템-온-칩(SoC, System-on-Chip)으로 구성되거나, 범용 프로세서, 특수 목적 프로세서 또는 어플리케이션 프로세서일 수 있다.
호스트 메모리(123)는 호스트 콘트롤러(113)와 통신할 수 있는 랜덤 액세스 메모리로 구현될 수 있고, 호스트 콘트롤러(113) 또는 호스트 장치(103)의 메인 메모리, 버퍼 메모리 또는 캐시 메모리로서 동작할 수 있다. 호스트 콘트롤러(113)는 호스트 메모리(HMEM)에 코드 또는 데이터를 임시로 저장하고, 호스트 메모리(HMEM)를 이용하여 운영 체제(OS, operating system), 애플리케이션과 같은 소프트웨어 코드를 실행하고 데이터를 처리할 수 있다. 호스트 메모리(HMEM)는 SRAM (Static RAM), DRAM (Dynamic RAM), SDRAM (Synchronous DRAM) 등과 같은 휘발성 메모리, 또는 PRAM (Phase-change RAM), MRAM (Magnetic RAM), RRAM (Resistive RAM), FeRAM (Ferroelectric RAM) 등과 같은 불휘발성 메모리 장치를 포함할 수 있다.
호스트 장치(103) 및 데이터 스토리지 장치(203)가 데이터 스토리지 장치(203)의 데이터를 호스트 메모리(123)에 로드하는 것을 지원하는 경우, 호스트 콘트롤러(113)는 호스트 메모리(HMEM)의 메모리 공간 중 일부를 데이터 스토리지 장치(203)가 사용하도록 할당할 수 있다. 이 경우, 호스트 메모리(123)의 호스트 영역은 호스트 장치(103)에 의해 사용될 수 있고, 호스트 메모리(123)의 일정 영역은 호스트 메모리 버퍼(HMB, host memory buffer)로서 데이터 스토리지 장치(203)에 의해 사용될 수 있다.
호스트 콘트롤러(113)는 호스트 메모리(HMEM)를 제어하도록 구성되는 메모리 콘트롤러를 포함할 수 있고, 호스트 콘트롤러(113)는 메모리 콘트롤러를 통해 호스트 메모리(123)의 호스트 영역을 사용할 수 있다. 호스트 메모리 버퍼(HMB)가 데이터 스토리지 장치(203)에 제공되는 경우 데이터 스토리지 장치(203)는 호스트 콘트롤러(113)의 개입 없이 호스트 메모리 버퍼(HMB)를 사용할 수 있다.
일 실시예에서, 도 21에 도시된 바와 같이, 전술한 공유 디스카드 비트맵(SDBM)은 호스트 장치(103)에 포함되는 호스트 메모리(123)에 설정된 호스트 메모리 버퍼(HMB)에 저장될 수 있다. 이 경우, 호스트 장치(103)는 호스트 장치(103) 및 데이터 스토리지 장치(203) 사이의 인터페이스를 거치지 않고 공유 디스카드 비트맵(SDBM)에 직접 액세스할 수 있다.
데이터 스토리지 장치(203)는 스토리지 콘트롤러(SCON)(243) 및 비휘발성 메모리 장치(NVM)를 포함할 수 있다. 스토리지 콘트롤러(243)는 데이터 스토리지 장치(203)의 전반적인 동작을 제어할 수 있다. 스토리지 콘트롤러(243)는 호스트 장치(103)와 데이터 입출력을 수행할 수 있다. 스토리지 콘트롤러(243)와 호스트 장치(103) 사이의 인터페이스(430)는 규약 또는 스펙(Specification)에 따라 통신하도록 구성될 수 있다. 예를 들어, 인터페이스(430)는 USB(Universal Serial Bus), ATA(Advanced Technology Attachment), SATA(Serial ATA), SAS(Serial Attached SCSI), PATA(Parallel ATA), HSIC(High Speed Interchip), SCSI(Small Computer System Interface), 파이어와이어(Firewire), PCI(Peripheral Component Interconnection), PCIe(PCI express), NVMe(NonVolatile Memory express), UFS(Universal Flash Storage), SD(Secure Digital), MMC(MultiMedia Card), eMMC(embedded MMC) 등과 같은 다양한 규약들 중 적어도 하나를 이용하여 통신을 수행할 수 있다.
도 22는 도 20 및 21의 시스템들의 어드레스 매핑을 나타내는 도면이다.
도 22를 참조하면, 호스트 장치(102, 103)의 버츄얼 어드레스 공간(VAS, virtual address space)은 공유 디스카드 비트맵(SDBM) 및 비동기 디스카드 영역(ADR)을 포함할 수 있다.
버츄얼 어드레스 공간(VAS)의 공유 디스카드 비트맵(SDBM)은 랜덤 액세스 메모리(RAM)의 공유 디스카드 비트맵(SDBM)에 매핑되고 버츄얼 어드레스 공간(VAS)의 비동기 디스카드 영역(ADR)은 비휘발성 메모리(NVM)의 비동기 디스카드 영역(ADR)에 매핑된다. 비동기 디스카드 영역(ADR)은 비휘발성 메모리(NVM)의 일부에 해당할 수도 있고 전부에 해당할 수도 있다. 즉 비동기 디스카드 영역(ADR)의 사이즈(SZA)는 비휘발성 메모리(NVM)의 사이즈(SZN)와 같을 수도 있고 작을 수도 있다. 비동기 디스카드 영역(ADR)의 사이즈(SZA)에 비례하는 사이즈(SZM)를 갖는 공유 디스카드 비트맵(SDBM)은 랜덤 액세스 메모리(RAM)에 포함될 수 있다. 랜덤 액세스 메모리(RAM)는 도 20의 랜덤 액세스 메모리(212) 또는 도 21의 호스트 메모리 버퍼(HMB)에 해당할 수 있다. 호스트 장치(102, 103)는 버츄얼 어드레스 공간(VAS) 및 랜덤 액세스 메모리(RAM)과 비휘발성 메모리(NVM) 사이의 매핑 관계에 기초하여 랜덤 액세스 메모리(RAM) 및 비휘발성 메모리(NVM)의 각 영역을 액세스할 수 있다.
도 23은 본 발명의 실시예들에 따른 데이터 스토리지 장치를 포함하는 시스템을 나타내는 블록도이다.
도 23을 참조하면, 시스템(1000a)은 호스트 장치(2000) 및 스토리지 장치(3000)를 포함한다. 예를 들어, 스토리지 장치(3000)는 에스에스디(SSD, solid state drive), 유니버셜 플래시 스토리지(UFS, universal flash storage), 임베디드 멀티미디어 카드(eMMC, embedded multimedia card) 등일 수 있다.
호스트 장치(2000)는 스토리지 장치(3000)의 데이터 처리 동작, 예를 들어, 데이터 독출 동작 또는 데이터 기입 동작 등을 제어할 수 있다. 도 23의 시스템(1000a)은 임의의 전자 시스템(electronic system)일 수 있다.
호스트 장치(2000)는 버스(20)를 통하여 연결된 프로세서(CPU)(2100), 호스트 메모리(HMEM)(2200) 및 호스트 컨트롤러 인터페이스(HCI)(2300)를 포함할 수 있다. 호스트 메모리(2200)는 전술한 바와 같이 호스트 메모리 버퍼(HMB)를 할당할 수 있고, 비동기 디스카드 동작을 위한 공유 디스카드 비트맵(SDBM)은 호스트 메모리 버퍼(HMB)에 저장될 수 있다. 프로세서(2100)에 의해 운영 체제(OS) 및/또는 호스트 펌웨어(FW)(2110)가 구동될 수 있다. 프로세서(2100)는 코맨드(CMD)의 생성, 응답(RES)의 해석, 스토리지 장치(3000)의 레지스터(예를 들어, Extended(EXT)_CSD 레지스터(미도시))에 저장된 데이터 및/또는 데이터 처리 동작을 제어할 수 있는 하드웨어를 의미할 수 있다. 프로세서(2100)는 운영 체제/호스트 펌웨어(2110)를 구동하여 상기와 같은 동작들을 수행할 수 있다.
호스트 컨트롤러 인터페이스(2300)는 스토리지 장치(3000)와 인터페이스하기 위한 구성요소이다. 호스트 컨트롤러 인터페이스(2300)는 스토리지 장치(3000)로 코맨드(CMD)를 발급하고(issuing), 코맨드(CMD)에 대한 응답(RES)을 스토리지 장치(3000)로부터 수신하고, 스토리지 장치(3000)에 저장될 기입 데이터를 전송하고, 스토리지 장치(3000)로부터 독출한 독출 데이터를 수신한다.
스토리지 장치(3000)는 복수의 비휘발성 메모리 장치들(NVM)(3100) 및 스토리지 컨트롤러(3200)를 포함한다.
비휘발성 메모리 장치들(3100)은 옵션적으로 외부 고전압(VPP)을 제공받도록 구현될 수 있다. 스토리지 컨트롤러(3200)는 복수의 채널들(CH1~CH4)을 통하여 비휘발성 메모리 장치들(1100)에 연결된다. 스토리지 컨트롤러(3200)는 버스(30)를 통하여 연결된 적어도 하나의 프로세서(3210), 스토리지 메모리 장치(SMEM)(3240), 보안 엔진(SCR), 호스트 인터페이스(3230), 및 비휘발성 메모리 인터페이스(3250)를 포함한다.
스토리지 메모리(3240)는 스토리지 컨트롤러(3200)의 구동에 필요한 데이터를 임시로 저장할 수 있다. 스토리지 메모리(3240)는 디램(DRAM, dynamic random access memory), 에스램(SRAM, static random access memory)와 같은 휘발성 메모리일 수 있다. 도 23에서 스토리지 메모리(3240)는 스토리지 컨트롤러(3200)의 내부에 포함되는 것으로 도시되어 있지만 반드시 여기에 제한되지 않을 것이다. 실시예에 따라서, 스토리지 메모리(3240)는 스토리지 컨트롤러(3200)의 외부에 별도로 존재할 수도 있다.
프로세서(3210)는 스토리지 컨트롤러(3200)의 전반적인 동작을 제어하도록 구성된다. 예를 들면, 프로세서(3210)는 플래시 변환 계층(FTL, Flash Translation Layer) 등을 포함하는 펌웨어(3212)를 운용하도록 구성된다. 플래시 변환 계층(FTL)은 다양한 기능들을 수행할 수 있다. 예를 들면, 플래시 변환 계층(FTL)은 어드레스 맵핑 동작, 읽기 교정 동작, 에러 정정 동작, 등을 수행하는 다양한 계층들을 포함할 수 있다.
보안 엔진(3260)은 호스트 인터페이스(3230)의 외부에 구현된 것으로 도시되어 있으나 보안 엔진(3260)은 호스트 인터페이스(3230)에 포함될 수도 있다.
호스트 인터페이스(3230)는 호스트 장치(2000)와의 인터페이스 기능을 제공할 수 있다. 비휘발성 메모리 인터페이스(3250)는 비휘발성 메모리 장치(3100)와의 인터페이스 기능을 제공할 수 있다. 호스트 장치(2000)와 스토리지 장치(3000)는 버스(10)를 통하여 상호 연결될 수 있다.
도 24는 도 23의 데이터 스토리지 장치에 포함되는 비휘발성 메모리 장치의 메모리 블록의 등가 회로를 나타내는 회로도이다.
비휘발성 메모리 장치(NVM)는 복수의 메모리 블록들을 포함할 수 있다. 도 24에 도시된 메모리 블록(BLKi)은 기판 상에 삼차원 구조로 형성되는 삼차원 메모리 블록을 나타낸다. 예를 들어, 메모리 블록(BLKi)에 포함되는 복수의 메모리 낸드 스트링들은 상기 기판과 수직한 방향(D1)으로 형성될 수 있다.
도 24를 참조하면, 메모리 블록(BLKi)은 비트 라인들(BL1, BL2, BL3)과 공통 소스 라인(CSL) 사이에 연결되는 복수의 셀 스트링들, 즉 복수의 메모리 낸드 스트링들(NS11~NS33)을 포함할 수 있다. 복수의 메모리 낸드 스트링들(NS11~NS33) 각각은 스트링 선택 트랜지스터(SST), 복수의 메모리 셀들(MC1, MC2, ..., MC8) 및 접지 선택 트랜지스터(GST)를 포함할 수 있다. 도 12에는 복수의 메모리 낸드 스트링들(NS11~NS33) 각각이 8개의 메모리 셀들(MC1, MC2, ..., MC8)을 포함하는 것으로 도시되어 있으나, 본 발명은 이에 한정되지 않는다.
스트링 선택 트랜지스터(SST)는 상응하는 스트링 선택 라인(SSL1, SSL2, SSL3)에 연결될 수 있다. 복수의 메모리 셀들(MC1, MC2, ..., MC8)은 각각 상응하는 게이트 라인(GTL1, GTL2, ..., GTL8)에 연결될 수 있다. 게이트 라인(GTL1, GTL2, ..., GTL8)은 워드 라인들에 해당할 수 있으며, 게이트 라인(GTL1, GTL2, ..., GTL8)의 일부는 더미 워드 라인에 해당할 수 있다. 접지 선택 트랜지스터(GST)는 상응하는 접지 선택 라인(GSL1, GSL2, GSL3)에 연결될 수 있다. 스트링 선택 트랜지스터(SST)는 상응하는 비트 라인(BL1, BL2, BL3)에 연결되고, 접지 선택 트랜지스터(GST)는 공통 소스 라인(CSL)에 연결될 수 있다.
동일 높이의 워드 라인(예를 들면, GTL1)은 공통으로 연결되고, 접지 선택 라인(GSL1, GSL2, GSL3) 및 스트링 선택 라인(SSL1, SSL2, SSL3)은 각각 분리될 수 있다. 도 24에는 메모리 블록(BLK)이 여덟 개의 게이트 라인(GTL1, GTL2, ..., GTL8) 및 세 개의 비트 라인들(BL1, BL2, BL3)에 연결되는 것으로 도시되어 있으나, 본 발명은 이에 한정되지 않는다.
도 25는 본 발명의 실시예들에 따른 모바일 장치를 나타내는 블록도이다.
도 25를 참조하면, 모바일 장치(4000)는 어플리케이션 프로세서(4100), 통신 모듈(4200), 디스플레이/터치 모듈(4300), 데이터 스토리지 장치(4400), 및 모바일 램(4500)을 포함한다.
어플리케이션 프로세서(4100)는 모바일 장치(4000)의 전반적인 동작을 제어한다. 어플리케이션 프로세서(4100)는 인터넷 브라우저, 게임, 동영상 등을 제공하는 어플리케이션들을 실행할 수 있다. 통신 모듈(4200)은 외부와의 유선 통신 및/또는 무선 통신을 제어하도록 구현될 수 있다. 디스플레이/터치 모듈(4300)은 어플리케이션 프로세서(4100)에서 처리된 데이터를 디스플레이 하거나, 터치 패널로부터 데이터를 입력 받도록 구현될 수 있다. 데이터 저장 장치(4400)는 사용자의 데이터를 저장하도록 구현될 수 있다.
데이터 스토리지 장치(4400)는 임베디드 멀티미디어 카드(eMMC, embedded multimedia card), 솔리드 스테이트 드라이브(SSD, solid state drive), 유니버셜 플래시 스토리지(UFS, universal flash storage) 장치일 수 있다. 데이터 저장 장치(4400)는 전술한 바와 같이 비동기 디스카드 동작을 위한 공유 디스카드 비트맵(SDBM)을 저장할 수 있다.
모바일 램(4500)은 모바일 장치(4000)의 처리 동작 시 필요한 데이터를 임시로 저장하도록 구현될 수 있다. 예를 들어, 모바일 램(4500)은 DDR SDRAM, LPDDR SDRAM, GDDR SDRAM, RDRAM 등과 같은 동적 랜덤 액세스 메모리일 수 있다.
이상 설명한 바와 같이, 본 발명의 실시예들에 따른 데이터 스토리지 장치를 포함하는 시스템 및 데이터 스토리지 장치의 디스카드 동작 제어 방법은, 호스트 장치 및 데이터 스토리지 장치에 의해 공유되는 공유 디스카드 비트맵을 이용하여 비동기 디스카드 동작 및/또는 동기 디스카드 동작을 수행함으로써 시스템의 동작 속도 및 성능을 향상시킬 수 있다.
본 발명의 실시예들은 임의의 데이터 스토리지 장치 및 이를 포함하는 시스템에 유용하게 이용될 수 있다. 특히 본 발명의 실시예들은 메모리 카드, 솔리드 스테이트 드라이브(Solid State Drive; SSD), 임베디드 멀티미디어 카드(eMMC, embedded multimedia card), 유니버셜 플래시 스토리지(UFS, universal flash storage), 컴퓨터(computer), 노트북(laptop), 핸드폰(cellular phone), 스마트폰(smart phone), MP3 플레이어, 피디에이(Personal Digital Assistants; PDA), 피엠피(Portable Multimedia Player; PMP), 디지털 TV, 디지털 카메라, 포터블 게임 콘솔(portable game console), 네비게이션(navigation) 기기, 웨어러블(wearable) 기기, IoT(internet of things;) 기기, IoE(internet of everything:) 기기, e-북(e-book), VR(virtual reality) 기기, AR(augmented reality) 기기 등과 같은 전자 기기에 더욱 유용하게 적용될 수 있다.
상기에서는 본 발명이 바람직한 실시예를 참조하여 설명하였지만, 해당 기술분야의 숙련된 당업자는 하기의 특허청구범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 것이다.

Claims (10)

  1. 호스트 장치 및 데이터 스토리지 장치에 의해 공통으로 액세스되고, 상기 데이터 스토리지 장치에 포함되는 비휘발성 메모리의 복수의 섹터들 중 타겟 섹터들에 각각 상응하는 복수의 디스카드 비트들을 포함하는 공유 디스카드 비트맵을 제공하는 단계;
    상기 호스트 장치에 의해, 상기 타겟 섹터들의 각각에 대한 디스카드 가능 여부를 나타내도록 상기 공유 디스카드 비트맵에 저장된 상기 복수의 디스카드 비트들의 비트 값들을 설정하는 단계; 및
    상기 데이터 스토리지 장치에 의해, 상기 공유 디스카드 비트맵에 저장된 상기 복수의 디스카드 비트들의 비트 값들에 기초하여 상기 타겟 섹터들에 대한 비동기 디스카드 동작을 수행하는 단계를 포함하는 데이터 스토리지 장치의 디스카드 동작 제어 방법.
  2. 제1 항에 있어서,
    상기 복수의 디스카드 비트들의 값들을 설정하는 단계는,
    상기 호스트 장치에 의해, 상기 공유 디스카드 비트맵으로부터 제1 독출 데이터를 독출하는 단계;
    상기 호스트 장치에 의해, 상기 타겟 섹터들 중 디스카드 가능한 섹터들에 상응하는 디스카드 비트들을 제1 값에서 제2 값으로 변경하여 제1 기입 데이터를 발생하는 단계; 및
    상기 호스트 장치에 의해, 상기 제1 기입 데이터를 상기 공유 디스카드 비트맵에 저장하는 단계를 포함하는 것을 특징으로 하는 데이터 스토리지 장치의 디스카드 동작 제어 방법.
  3. 제2 항에 있어서,
    상기 타겟 섹터들에 대한 상기 비동기 디스카드 동작을 수행하는 단계는,
    상기 데이터 스토리지 장치에 의해, 상기 공유 디스카드 비트맵으로부터 제2 독출 데이터를 독출하는 단계;
    상기 데이터 스토리지 장치에 의해, 상기 제2 독출 데이터에 기초하여 상기 공유 디스카드 비트맵의 상기 복수의 디스카드 비트들 중 상기 제2 값을 갖는 디스카드 비트를 검색하는 단계;
    상기 데이터 스토리지 장치에 의해, 상기 제2 값을 갖는 디스카드 비트에 상응하는 타겟 섹터에 대한 디스카드 동작을 수행하는 단계;
    상기 데이터 스토리지 장치에 의해, 상기 디스카드 동작이 완료된 타겟 섹터에 상응하는 디스카드 비트를 상기 제2 값에서 상기 제1 값으로 변경하여 제2 기입 데이터를 발생하는 단계; 및
    상기 데이터 스토리지 장치에 의해, 상기 제2 기입 데이터를 상기 공유 디스카드 비트맵에 저장하는 단계를 포함하는 것을 특징으로 하는 데이터 스토리지 장치의 디스카드 동작 제어 방법.
  4. 제1 항에 있어서,
    상기 비동기 디스카드 동작은,
    상기 호스트 장치로부터의 정보에 관계 없이 상기 데이터 스토리지 장치에 의해 상기 공유 디스카드 비트맵에 기초하여 상기 호스트 장치의 아이들(idle) 상태 동안에 수행되는 것을 특징으로 하는 데이터 스토리지 장치의 디스카드 동작 제어 방법.
  5. 제2 항에 있어서,
    상기 공유 디스카드 비트맵에 기초하여 상기 호스트 장치로부터 상기 데이터 스토리지 장치로 전송되는 디스카드 명령을 발생하여 상기 타겟 섹터들에 대한 동기 디스카드 동작을 수행하는 단계를 더 포함하는 것을 특징으로 하는 데이터 스토리지 장치의 디스카드 동작 제어 방법.
  6. 제1 항에 있어서,
    상기 호스트 장치로부터 상기 데이터 스토리지 장치로 제공되는 비동기 디스카드 영역 설정 코맨드에 기초하여 상기 타겟 섹터들의 어드레스 범위를 설정하는 단계를 더 포함하고,
    상기 호스트 장치로부터 제공되는 상기 비동기 디스카드 영역 설정 코맨드는 상기 타겟 섹터들의 시작 주소 및 상기 타겟 섹터들의 개수를 포함하는 것을 특징으로 하는 데이터 스토리지 장치의 디스카드 동작 제어 방법.
  7. 제1 항에 있어서,
    상기 호스트 장치로부터 상기 데이터 스토리지 장치로 제공되는 비트맵 설정 코맨드에 기초하여 상기 공유 디스카드 비트맵의 어드레스 범위를 설정하는 단계를 더 포함하고,
    상기 호스트 장치로부터 제공되는 상기 비트맵 설정 코맨드는 상기 공유 디스카드 비트맵의 시작 주소 및 하나의 디스카드 비트에 상응하는 하나의 타겟 섹터의 유닛 사이즈를 포함하고,
    상기 스토리지 장치는 상기 타겟 섹터들의 개수 및 상기 타겟 섹터의 유닛 사이즈에 기초하여 상기 복수의 디스카드 비트들의 비트 수를 계산하는 것을 특징으로 하는 데이터 스토리지 장치의 디스카드 동작 제어 방법.
  8. 제1 항에 있어서,
    상기 호스트 장치로부터 상기 데이터 스토리지 장치로 제공되는 모드 설정 코맨드에 기초하여 상기 비동기 디스카드 동작을 수행하는 비동기 디스카드 모드를 인에이블하는 단계를 더 포함하는 것을 특징으로 하는 데이터 스토리지 장치의 디스카드 동작 제어 방법.
  9. 제1 항에 있어서,
    상기 공유 디스카드 비트맵은 상기 데이터 스토리지 장치에 포함되는 상기 비휘발성 메모리에 저장되고,
    상기 호스트 장치는 상기 호스트 장치 및 상기 데이터 스토리지 장치 사이의 블록 액세서블 인터페이스를 통하여 상기 공유 디스카드 비트맵에 액세스하는 것을 특징으로 하는 데이터 스토리지 장치의 디스카드 동작 제어 방법.
  10. 비휘발성 메모리의 복수의 섹터들 중 타겟 섹터들에 각각 상응하는 복수의 디스카드 비트들을 포함하는 공유 디스카드 비트맵;
    상기 공유 디스카드 비트맵에 액세스하여 상기 타겟 섹터들의 각각에 대한 디스카드 가능 여부를 나타내도록 상기 공유 디스카드 비트맵에 저장된 상기 복수의 디스카드 비트들의 비트 값들을 설정하는 호스트 장치; 및
    상기 공유 디스카드 비트맵에 액세스하여 상기 공유 디스카드 비트맵에 저장된 상기 복수의 디스카드 비트들의 비트 값들에 기초하여 상기 타겟 섹터들에 대한 비동기 디스카드 동작을 수행하는 데이터 스토리지 장치를 포함하는 시스템.
KR1020180165161A 2018-12-19 2018-12-19 데이터 스토리지 장치를 포함하는 시스템 및 데이터 스토리지 장치의 디스카드 동작 제어 방법 KR20200076244A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020180165161A KR20200076244A (ko) 2018-12-19 2018-12-19 데이터 스토리지 장치를 포함하는 시스템 및 데이터 스토리지 장치의 디스카드 동작 제어 방법
US16/533,256 US11237753B2 (en) 2018-12-19 2019-08-06 System including data storage device and method of controlling discard operation in the same
CN201911305404.0A CN111338564B (zh) 2018-12-19 2019-12-16 包括数据存储设备的系统和控制丢弃操作的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180165161A KR20200076244A (ko) 2018-12-19 2018-12-19 데이터 스토리지 장치를 포함하는 시스템 및 데이터 스토리지 장치의 디스카드 동작 제어 방법

Publications (1)

Publication Number Publication Date
KR20200076244A true KR20200076244A (ko) 2020-06-29

Family

ID=71097606

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180165161A KR20200076244A (ko) 2018-12-19 2018-12-19 데이터 스토리지 장치를 포함하는 시스템 및 데이터 스토리지 장치의 디스카드 동작 제어 방법

Country Status (3)

Country Link
US (1) US11237753B2 (ko)
KR (1) KR20200076244A (ko)
CN (1) CN111338564B (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20210406359A1 (en) * 2020-06-26 2021-12-30 Nxp Usa, Inc. System and Method to Support Multiple Security Schemes in an Embedded System
US11687449B2 (en) * 2020-09-10 2023-06-27 International Business Machines Corporation Concurrent marking garbage collection
US11966343B2 (en) * 2021-07-19 2024-04-23 Samsung Electronics Co., Ltd. Universal mechanism to access and control a computational device
US20230055285A1 (en) * 2021-08-19 2023-02-23 Lenovo (Singapore) Pte. Ltd. Secure erase of user data using storage regions

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001037115A2 (en) * 1999-11-16 2001-05-25 Broadcom Corporation High speed flow control methodology
EP1326436B1 (en) * 2001-12-28 2013-02-13 Sony Corporation Displaying information
US8451817B2 (en) * 2003-07-24 2013-05-28 Cisco Technology, Inc. Method and apparatus for processing duplicate packets
JP2007241612A (ja) * 2006-03-08 2007-09-20 Matsushita Electric Ind Co Ltd マルチマスタシステム
KR100771519B1 (ko) 2006-10-23 2007-10-30 삼성전자주식회사 플래시 메모리를 포함한 메모리 시스템 및 그것의 머지방법
US9104686B2 (en) 2008-12-16 2015-08-11 Sandisk Technologies Inc. System and method for host management of discardable objects
US9069657B2 (en) 2011-12-12 2015-06-30 Apple Inc. LBA bitmap usage
US9336150B2 (en) * 2012-06-08 2016-05-10 International Business Machines Corporation Performing asynchronous discard scans with staging and destaging operations
JP6069962B2 (ja) 2012-08-30 2017-02-01 富士通株式会社 情報処理装置、領域解放制御プログラム、および領域解放制御方法
US9128746B2 (en) 2013-03-29 2015-09-08 Vmware, Inc. Asynchronous unmap of thinly provisioned storage for virtual machines
US8832395B1 (en) * 2013-04-12 2014-09-09 Hitachi, Ltd. Storage system, and method of storage control for storage system
JP2016024656A (ja) * 2014-07-22 2016-02-08 富士通株式会社 ストレージ制御装置、ストレージシステム及びストレージ制御プログラム
US9590926B2 (en) * 2014-10-06 2017-03-07 Netronome Systems, Inc. Global random early detection packet dropping based on available memory
US9485195B2 (en) * 2014-10-06 2016-11-01 Netronome Systems, Inc. Instantaneous random early detection packet dropping with drop precedence
US9705811B2 (en) * 2014-10-06 2017-07-11 Netronome Systems, Inc. Simultaneous queue random early detection dropping and global random early detection dropping system
CN105630638B (zh) * 2014-10-31 2018-01-12 国际商业机器公司 用于为磁盘阵列分配缓存的设备和方法
US9734098B2 (en) 2015-03-31 2017-08-15 Sandisk Technologies Llc Memory bus management
US9524794B1 (en) * 2015-08-10 2016-12-20 Sandisk Technologies Llc Constrained data shaping
US10318193B2 (en) * 2015-09-14 2019-06-11 Sandisk Technologies Llc Systems and methods of command authorization
KR101779174B1 (ko) * 2016-05-26 2017-09-18 성균관대학교산학협력단 저널링 파일시스템의 데이터 폐기 방법 및 이를 구현하기 위한 메모리 관리 장치

Also Published As

Publication number Publication date
CN111338564A (zh) 2020-06-26
US20200201558A1 (en) 2020-06-25
CN111338564B (zh) 2024-06-04
US11237753B2 (en) 2022-02-01

Similar Documents

Publication Publication Date Title
US10296224B2 (en) Apparatus, system and method for increasing the capacity of a storage device available to store user data
CN110083545B (zh) 数据存储装置及其操作方法
US9244619B2 (en) Method of managing data storage device and data storage device
KR20190057887A (ko) 데이터 저장 장치 및 그것의 동작 방법
US11237753B2 (en) System including data storage device and method of controlling discard operation in the same
KR20200049051A (ko) 스토리지 장치의 구동 방법, 이를 수행하는 스토리지 장치 및 이를 이용한 스토리지 시스템의 구동 방법
KR102495910B1 (ko) 스토리지 장치 및 그 동작 방법
US20200057725A1 (en) Data storage device and operating method thereof
US11520694B2 (en) Data storage device and operating method thereof
KR20200086472A (ko) 컨트롤러, 데이터 저장 장치 및 그것의 동작 방법
KR20200059936A (ko) 메모리 시스템 및 메모리 시스템의 동작방법
KR20200121645A (ko) 컨트롤러 및 그것의 동작 방법과 메모리 시스템
KR20200031924A (ko) 메모리 컨트롤러, 메모리 컨트롤러의 동작 방법 및 메모리 컨트롤러를 포함하는 스토리지 장치
TW202311965A (zh) 主機裝置、記憶體控制器及包括其的計算系統
KR20210144249A (ko) 저장 장치 및 이의 동작 방법
KR20210103228A (ko) 메모리 시스템 및 이의 동작 방법
KR102596964B1 (ko) 맵 캐시 버퍼 크기를 가변시킬 수 있는 데이터 저장 장치
KR101515621B1 (ko) 반도체 디스크 장치 및 그것의 랜덤 데이터 처리 방법
KR20200114086A (ko) 컨트롤러, 메모리 시스템 및 그것의 동작 방법
KR20200033459A (ko) 메모리 시스템 및 그것의 동작방법
US20230273878A1 (en) Storage device for classifying data based on stream class number, storage system, and operating method thereof
KR20210156090A (ko) 저장 장치 및 그 동작 방법
KR20210018570A (ko) 컨트롤러, 컨트롤러의 동작 방법 및 이를 포함하는 저장 장치
CN116027965A (zh) 存储装置和电子系统
KR20190113107A (ko) 메모리 컨트롤러 및 이를 포함하는 메모리 시스템

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E601 Decision to refuse application