KR20200028615A - 스토리지 장치, 스토리지 시스템 및 스토리지 장치의 동작 방법 - Google Patents

스토리지 장치, 스토리지 시스템 및 스토리지 장치의 동작 방법 Download PDF

Info

Publication number
KR20200028615A
KR20200028615A KR1020180106913A KR20180106913A KR20200028615A KR 20200028615 A KR20200028615 A KR 20200028615A KR 1020180106913 A KR1020180106913 A KR 1020180106913A KR 20180106913 A KR20180106913 A KR 20180106913A KR 20200028615 A KR20200028615 A KR 20200028615A
Authority
KR
South Korea
Prior art keywords
bank
storage
data
free
banks
Prior art date
Application number
KR1020180106913A
Other languages
English (en)
Other versions
KR102545189B1 (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 삼성전자주식회사
Priority to KR1020180106913A priority Critical patent/KR102545189B1/ko
Priority to US16/276,706 priority patent/US11354057B2/en
Priority to CN201910762325.6A priority patent/CN110888597A/zh
Publication of KR20200028615A publication Critical patent/KR20200028615A/ko
Priority to US17/737,406 priority patent/US20220261171A1/en
Application granted granted Critical
Publication of KR102545189B1 publication Critical patent/KR102545189B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • 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/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/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • 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/0647Migration mechanisms
    • 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/0658Controller construction arrangements
    • 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
    • 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/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • G06F2212/1036Life time enhancement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7211Wear leveling

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

스토리 장치는 메인 스토리지 및 스토리지 컨트롤러를 포함한다. 상기 메인 스토리지는 데이터를 저장한다. 상기 스토리지 컨트롤러는 상기 메인 스토리지를 제어한다. 상기 스토리지 컨트롤러는 상기 메인 스토리지에 포함되는 복수의 비휘발성 메모리 장치들의 복수의 메모리 블록들을 복수의 뱅크들로 구분하고, 상기 복수의 뱅크들을 각각이 적어도 하나의 뱅크를 구비하는 복수의 세트들과 하나의 프리 뱅크로 할당하고, 외부의 호스트 장치로부터의 입출력 리퀘스트에 응답하여 확정적인 입출력 수행시간을 보장하면서, 내부적으로는 상기 하나의 프리 뱅크를 이용하여 상기 세트들 사이에서 데이터를 이동시키는 데이터 마이그레이션 동작을 수행 수행하고, 상기 입출력 리퀘스트가 상기 데이터 마이그레이션 동작에 무관하도록 상기 데이터 마이그레이션 동작을 제어한다.

Description

스토리지 장치, 스토리지 시스템 및 스토리지 장치의 동작 방법{STORAGE DEVICE, STORAGE SYSTEM AND METHOD OF OPERATING STORAGE DEVICE}
본 발명은 데이터 처리에 관한 것으로, 보다 상세하게는 스토리지 장치, 이를 포함하는 스토리지 시스템 및 스토리지 장치의 동작 방법에 관한 것이다.
플래시 메모리 장치를 기반으로 하는 데이터 저장 장치의 대표적인 예로써, 솔리스 스테이트 드라이브(solid state drive; SSD)가 있다. SSD와 같은 데이터 저장 장치에 사용되는 인터페이스로 SATA, PCIe, SAS 등이 있다. SSD의 성능은 점차 개선되고 있고, 동시에 처리되는 데이터 양도 점차 가하고 있다.
그러나, SATA와 같은 종래의 인터페이스는 SSD와 같은 데이터 저장 장치에 특화된 인터페이스가 아니므로, 근본적으로 한계점을 가지고 있다. 그 결과, SSD에 걸맞는 표준화된 인터페이스를 만들고자 하는 노력의 일환으로써, NVMe(비휘발성 메모리 익스프레스)가 탄생하게 되었다. NVMe는 SSD와 같은 데이터 저장 장치와 호스트 소프트웨어 간에 통신하는 레지스터 레벨의 인터페이스이다. NVMe는 종래의 PCIe 버스를 기반으로 하며, SSD에 최적화된 인터페이스이다.
본 발명의 일 목적은 확정적인 입출력 수행시간을 보장하면서 내부 동작을 수행할 수 있는 스토리지 장치를 제공하는 것이다.
본 발명의 일 목적은 확정적인 입출력 수행시간을 보장하면서 내부 동작을 수행할 수 있는 스토리지 장치를 포함하는 스토리지 시스템을 제공하는 것이다.
본 발명의 일 목적은 확정적인 입출력 수행시간을 보장하면서 내부 동작을 수행할 수 있는 스토리지 장치의 동작 방법을 제공하는 것이다.
상기 목적을 달성하기 위한 본 발명의 실시예들에 따른 스토리 장치는 메인 스토리지 및 스토리지 컨트롤러를 포함한다. 상기 메인 스토리지는 데이터를 저장한다. 상기 스토리지 컨트롤러는 상기 메인 스토리지를 제어한다. 상기 스토리지 컨트롤러는 상기 메인 스토리지에 포함되는 복수의 비휘발성 메모리 장치들의 복수의 메모리 블록들을 복수의 뱅크들로 구분하고, 상기 복수의 뱅크들을 각각이 적어도 하나의 뱅크를 구비하는 복수의 세트들과 하나의 프리 뱅크로 할당하고, 외부의 호스트 장치로부터의 입출력 리퀘스트에 응답하여 확정적인 입출력 수행시간을 보장하면서, 내부적으로는 상기 하나의 프리 뱅크를 이용하여 상기 세트들 사이에서 데이터를 이동시키는 데이터 마이그레이션 동작을 수행 수행하고, 상기 입출력 리퀘스트가 상기 데이터 마이그레이션 동작에 무관하도록 상기 데이터 마이그레이션 동작을 제어한다.
상기 목적을 달성하기 위한 본 발명의 실시예들에 따른 스토리지 시스템은 스토리지 장치 및 호스트 장치를 포함한다. 상기 스토리지 장치는 데이터를 저장하는 메인 스토리지 및 상기 메인 스토리지를 제어하는 스토리지 컨트롤러를 구비한다. 상기 호스트 장치는 세트 단위로 상기 스토리지 장치를 제언한다. 상기 스토리지 컨트롤러는 상기 메인 스토리지에 포함되는 복수의 비휘발성 메모리 장치들의 복수의 메모리 블록들을 복수의 뱅크들로 구분하고, 상기 복수의 뱅크들을 각각이 적어도 하나의 뱅크를 구비하는 복수의 세트들과 하나의 프리 뱅크로 할당하고, 상기 호스트 장치로부터의 입출력 리퀘스트에 응답하여 확정적인 입출력 수행시간을 보장하면서, 내부적으로는 상기 하나의 프리 뱅크를 이용하여 상기 세트들 사이에서 데이터를 이동시키는 데이터 마이그레이션 동작을 수행 수행하고, 상기 입출력 리퀘스트가 상기 데이터 마이그레이션 동작에 무관하도록 상기 데이터 마이그레이션 동작을 제어한다.
상기 목적을 달성하기 위한 본 발명의 실시예들에 따른 데이터를 저장하는 메인 스토리지 및 상기 메인 스토리지를 제어하는 스토리지 컨트롤러를 구비하는 스토리지 장치의 동작 방법에서는 상기 메인 스토리지의 복수의 메모리 블록들을 적어도 하나의 뱅크를 구비하는 복수의 세트들과 하나의 프리 뱅크로 구분한다. 외부의 호스트 장치로부터 입출력 리퀘스트에 응답하여 확정적인 입출력 수행 시간을 보장하면서, 내부적으로 상기 프리 뱅크를 이용하여 상기 세트들 사이에서 데이터를 이동시키는 데이터 마이그레이션 동작을 수행한다.
본 발명의 실시예들에 따르면, 스토리지 장치가 외부의 호스트 장치에 대하여 확정적인 입출력 수행 시간을 보장하면서, 내부적으로 프리 뱅크를 이용하여 세트들 사이에서 데이터를 이동시키는 데이터 마이그레이션 동작을 수행하고, 상기 입출력 리퀘스트가 상기 데이터 마이그레이션 동작에 무관하도록 상기 데이터 마이그레이션 동작을 제어할 수 있다. 따라서 스토리지 장치 및 이를 포함하는 스토리지 시스템은 세트들 사이에서 성능 간섭을 최소화하면서, 호스트 장치에 대하여 숨겨진 동작으로서 웨어 레벨링을 수행할 수 있다.
도 1은 본 발명의 일 실시예에 따른 스토리지 시스템(또는, 데이터 자장 시스템)을 나타내는 블록도이다.
도 2는 본 발명의 실시예들에 따른 도 1의 호스트 장치를 나타내는 블록도이다.
도 3은 본 발명의 실시예에 따른 도 1의 데이터 저장 시스템에서 스토리지 컨트롤러를 나타내는 블록도이다.
도 4는 도 1의 스토리지 시스템에서 메인 스토리지의 채널 및 웨이의 구성을 예시적으로 나타낸다.
도 5는 도 1의 스토리지 장치에서 스토리지 컨트롤러와 하나의 비휘발성 메모리 장치의 연결을 나타내는 블록도이다.
도 6은 본 발명의 실시예들에 따른 도 5에서 비휘발성 메모리 장치를 나타내는 블록도이다.
도 7은 도 6의 비휘발성 메모리 장치에서 메모리 셀 어레이를 나타내는 블록도이다.
도 8은 도 7의 메모리 블록들 중 하나의 메모리 블록을 나타내는 회로도이다.
도 9는 도 8의 메모리 블록의 하나의 셀 스트링의 구조의 예를 보여준다.
도 10은 도 1의 스토리지 장치에 포함되는 비휘발성 스토리지들이 복수의 세트들로 할당되는 것을 나타낸다.
도 11은 도 1의 비휘발성 스토리지의 뱅크들이 도 10과 같은 세트들로 할당되는 경우에 도 3의 매핑 테이블을 나타낸다.
도 12는 도 1의 스토리지 시스템에서 스토리지 장치 내부적으로 데이터 마이그레이션 동작이 수행되기 전의 상태를 나타낸다.
도 13은 도 12의 상태에서 도 3의 매핑 테이블을 나타낸다.
도 14는 도 12의 스토리지 시스템에서 제1 뱅크로부터 프리 뱅크로 데이터 마이그레이션 동작이 수행되는 것을 나타낸다.
도 15는 도 14의 케이스에서 도 3의 매핑 테이블을 나타낸다.
도 16는 도 14의 스토리지 시스템에서 제3 뱅크로부터 프리 뱅크로 데이터 마이그레이션 동작이 수행되는 것을 나타낸다.
도 17은 도 16의 케이스에서 도 3의 매핑 테이블을 나타낸다.
도 18는 도 16의 스토리지 시스템에서 제4 뱅크로부터 프리 뱅크로 데이터 마이그레이션 동작이 수행되는 것을 나타낸다.
도 19는 도 18의 케이스에서 도 3의 매핑 테이블을 나타낸다.
도 20은 본 발명의 실시예들에 따른 스토리지 장치의 동작을 설명하기 위한 타이밍도이다.
도 21은 본 발명의 실시예들에 따른 스토리지 장치의 동작 방법을 나타내는 흐름도이다.
도 22는 본 발명의 실시예들에 따른 도 1의 스토리지 시스템에서 호스트 장치의 다른 예를 나타내는 블록도이다.
도 23은 도 22의 호스트 장치가 도 1의 스토리지 시스템에 적용되는 경우의 스토리지 시스템을 나타낸다.
도 24 및 도 25는 본 발명의 실시예들에 따른 스토리지 시스템에서, 프리 뱅크를 확보화기 위한 호스트 장치와 스토리지 장치 사이의 인터페이스를 나타낸다.
도 26은 본 발명의 실시예에 따른 레이드 스토리지 시스템의 구성을 나타내는 블록도이다.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.
도 1은 본 발명의 일 실시예에 따른 스토리지 시스템(또는, 데이터 자장 시스템)을 나타내는 블록도이다.
도 1을 참조하면, 본 발명의 일 실시예에 따른 스토리지 시스템(10)은 호스트 장치(100) 및 솔리드 스테이트 드라이브(solid state drive, 또는 스토리지 장치, 200)를 포함할 수 있다.
호스트 장치(100)는 솔리드 스테이트 드라이브(200)의 동작을 전반적으로 제어한다. 호스트 장치(100)는 솔리드 스테이트 드라이브(200)와 신호를 교환한다. 상기 신호는 리퀘스트(또는 커맨드), 어드레스, 데이터 등을 포함할 수 있다.
솔리드 스테이트 드라이브(200)는 스토리지 컨트롤러(300) 및 메인 스토리지(400)를 포함할 수 있고, 메인 스토리지(400)는 복수의 비휘발성 스토리지들(410~4k0)을 포함할 수 있다. 여기서, 복수의 비휘발성 스토리지들(410~4k0)은 낸드 플래시 메모리들로 구현될 수 있다. 여기서, k는 3 이상의 자연수일 수 있다.
스토리지 컨트롤러(300)는 호스트 장치(100)와 리퀘스트, 어드레스, 데이터와 같은 신호를 교환할 수 있다. 스토리지 컨트롤러(300)는 호스트 장치(100)의 리퀘스트에 따라 해당 비휘발성 스토리지에 데이터를 기입하거나 해당 비휘발성 스토리지로부터 데이터를 독출할 수 있다.
실시예에 있어서, 스토리지 장치(200, 또는 SSD)는 스토리지 컨트롤러(300)에 연결되는 DRAM(dynamic random access memory, 220)을 더 포함할 수 있다.
DRAM(220)은 호스트 장치(100)로부터 전달받은 데이터를 임시로 저장하거나, 비휘발성 스토리지들(410~4k0)로부터 독출한 데이터를 임시로 저장하는 버퍼 영역으로 사용된다. 또한, DRAM(220)은 비휘발성 스토리지들(410~4k0)의 효율적 관리를 위해 사용되는 소프트웨어(S/W)를 구동하는데 사용될 수 있다. 또한, DRAM(220)은 호스트 장치(100)로부터 입력받은 메타 데이터를 저장하거나, 캐시 데이터를 저장하는데 사용될 수 있다. 실시예에 있어서, 스토리지 장치(200)는 디램(DRAM)을 에스램(SRAM) 등의 휘발성 메모리로 대체할 수 있다.
복수의 비휘발성 스토리지들(410~4k0)은 스토리지 장치(200)의 저장 매체로 사용된다. 복수의 비휘발성 스토리지들(410~4k0)은 복수의 채널 그룹들(CHG1~CHGk)을 통해 스토리지 컨트롤러(300)와 연결될 수 있다. 복수의 채널 그룹들(CHG1~CHGk) 각각은 적어도 하나의 채널을 포함할 수 있다. 하나의 채널 그룹에는 하나 또는 그 이상의 비휘발성 스토리지가 연결될 수 있다. 하나의 채널 그룹에 연결되는 비휘발성 스토리지는 동일한 데이터 버스에 연결될 수 있다.
도시되지는 않았지만, 스토리지 장치(200)는 호스트 장치(100)와 연결하기 위한 패드를 더 포함할 수 있다. 스토리지 장치(200)는 패드를 통하여 호스트 장치(100)에 손쉽게 탈부착 될 수 있다. 패드는 스토리지 장치(200) 내부에 형성될 수 있으며, 스토리지 장치(200) 외부에 커넥터 형태로 형성될 수도 있다. 한편, 실시 예에 있어서, 스토리지 장치(200)는 패드를 포함하지 않을 수 있으며, 라우팅 공정을 통하여 호스트 장치(100)에 연결될 수도 있다.
도 2는 본 발명의 실시예들에 따른 도 1의 호스트 장치를 나타내는 블록도이다.
도 2를 참조하면, 호스트 장치(100)는 프로레서(110), ROM(read only memory, 120), 호스트 메모리(130), 스토리지 인터페이스(150), 사용자 인터페이스(140) 및 버스(170)를 포함할 수 있다. 실시예에 있어서, 호스트 장치(100)는 압축/해제 엔진(160)을 더 포함할 수 있다.
버스(170)는 호스트 장치(100)의 프로세서(110), 롬(120), 호스트 메모리(130), 스토리지 인터페이스(150), 사용자 인터페이스(150), 압축/해제 엔진(160) 간의 데이터를 전송하는 전송로를 의미한다.
롬(120)에는 다양한 어플리케이션(application) 프로그램들이 저장되어 있다. 실시예에 있어서, ATA(Advanced Technology Attachment), SCSI(Small Computer System Interface), eMMC(embedded Multi Media Card), UFS(Universal flash storage), NVMe(nonvolatile memory express) 등과 같은 스토리지 프로토콜을 지원하는 애플리케이션 프로그램들이 롬(120)에 저장될 수 있다.
호스트 메모리(130)에는 데이터 또는 프로그램이 일시적으로 저장될 수 있다.
스토리지 인터페이스(150)는 SATA 인터페이스, PATA 인터페이스, USB(Universal Serial Bus) 또는 SAS 인터페이스, eMMC 인터페이스, UFS 인터페이스, NVMe 인터페이스 등과 같은 스토리지 프로토콜을 지원하는 인터페이스를 포함할 수 있다. 특히 호스트 장치(100)는 스토리지 장치(200)와 NVMe 방식에 의하여 인터페이스 동작을 수행할 수 있다.
사용자 인터페이스(140)는 사용자와 호스트 기기, 컴퓨터 프로그램 등 사이에서 정보를 주고받을 수 있는 물리적 또는 가상적 매개체로서 물리적인 하드웨어와 논리적인 소프트웨어를 포함한다. 즉, 사용자 인터페이스(140)는 사용자가 호스트 장치(100)를 조작할 수 있는 입력 장치와 사용자 입력에 대한 처리 결과를 표시하는 출력 장치를 포함할 수 있다.
프로세서(110)는 호스트 장치(100)의 전반적인 동작을 제어한다. 프로세서(110)는 ROM(120)에 저장된 어플리케이션(application) 또는 툴(tool)을 이용하여 스토리지 장치(200)에 데이터를 저장하기 위한 리퀘스트(또는 커맨드) 또는 스토리지 장치(200)로부터 데이터를 독출하기 위한 리퀘스트(또는 커맨드)를 생성시켜 스토리지 인터페이스(150)를 통하여 스토리지 장치(200)로 전달하도록 제어할 수 있다.
도 3은 본 발명의 실시예에 따른 도 1의 데이터 저장 시스템에서 스토리지 컨트롤러를 나타내는 블록도이다.
스토리지 컨트롤러(300)는 중앙 처리 장치(CPU)와 같은 프로세서(310), 버퍼 메모리(320), ECC(Error correction code) 엔진(330), 호스트 인터페이스(340), 마이그레이션 관리자(360), 비휘발성 메모리 인터페이스(350) 및 버스(315)를 포함하여 구성될 수 있다. 버스(315)는 프로세서(310), 버퍼 메모리(320), ECC 엔진(330), 호스트 인터페이스(340), 마이그레이션 관리자(360) 및 비휘발성 메모리 인터페이스(350) 사이의 데이터를 전송하는 전송로를 의미한다. 프로세서(310)는 호스트 장치(100)와 비휘발성 스토리지들(410~4k0) 사이의 데이터 교환을 위한 동작을 수행할 수 있다.
호스트 인터페이스(340)는 호스트 장치(100)와 연결되고, 비휘발성 메모리 인터페이스(350)는 비휘발성 스토리지들(410~4k0)과 연결된다. 프로세서(310)는 호스트 인터페이스(340)를 통하여 상기 호스트 장치(100)와 통신할 수 있다. 예를 들어, 호스트 인터페이스(340)는 SATA 인터페이스, PATA 인터페이스, USB(Universal Serial Bus) 또는 SAS 인터페이스, eMMC 인터페이스, UFS 인터페이스, NVMe 인터페이스 등과 같은 다양한 인터페이스 프로토콜들 중 적어도 하나를 통해 호스트 장치(100)와 통신하도록 구성될 수 있다.
또한, 프로세서(310)는 비휘발성 메모리 인터페이스(350)를 통하여 비휘발성 스토리지들(410~4k0)과 통신할 수 있다. 비휘발성 메모리 인터페이스(350)는 비휘발성 스토리지들(410~4k0)의 수만큼 구비되어 비휘발성 스토리지들(400a~400k) 각각과 연결될 수 있다.
ECC 엔진(330)은 상기 호스트 장치(100)로부터 제공된 데이터를 ECC 인코딩하여 비휘발성 스토리지들(400a~400k)에 제공하고, 비휘발성 스토리지들(400a~400k)로부터 독출된 데이터를 ECC 디코딩하여 호스트 장치(100)에 제공할 수 있다.
버퍼 메모리(320)는 데이터를 임시로 저장할 수 있다. 또한 버퍼 메모리(320)는 비휘발성 스토리지들(400a~400k)의 메모리 블록들이 구분되는 뱅크들의 논리 뱅크 어드레스와 물리 뱅크 어드레스를 매핑시키는 매핑 정보를 저장하는 매핑 테이블(325)을 포함할 수 있다. 또한 매핑 테이블(325)은 상기 물리 뱅크들을 구분하는 세트들의 세트 아이디가 저장될 수 있다.
호스트 장치(100)는 비휘발성 스토리지들(400a~400k)을 세트 단위로 액세스할 수 있다.
스토리지 장치(200)가 호스트 장치(100)로부터 입출력 리퀘스트를 수신하는 경우, 마이그레이션 관리자(360)는 호스트 장치(100)에 대하여 확정적인(deterministic) 입출력 수행시간을 보장하면서, 스토리지 장치(200) 내부적으로는 상기 뱅크들 중 미사용 뱅크를 프리 뱅크로 이용하여 세트들 사이에서 데이터를 이용하는 데이터 마이그레이션 동작을 수행 하고, 상기 입출력 리퀘스트가 상기 데이터 마이그레이션 동작에 무관하도록 상기 데이터 마이그레이션 동작을 제어할 수 있다. 즉 마이그레이션 관리자(360)는 데이터 마이그레이션 동작이 입출력 리퀘스트를 간섭하지 못하도록 데이터 마이크레이션 동작을 제어할 수 있다. 이를 위하여 마이그레이션 관리자(360)는 뱅크들 각각 및/또는 세트들 각각에 대한 프로그램/소거 사이클을 카운팅하는 프로그램/소거 사이클 카운터(363)를 포함할 수 있다.
프로그램/소거 사이클 카운터(363)는 호스트 장치(100)로부터의 리퀘스트와 관련된 상기 뱅크들 각각의 프로그램/소거 사이클은 카운팅하고, 상기 마이그레이션 동작과 관련된 상기 뱅크들 각각의 프로그램/소거 사이클을 카운팅할 수 있다. 프로그램/소거 사이클 카운터(363)는 카운팅된 뱅크별 프로그램/소거 사이클을 매핑 테이블(325)에 저장할 수 있다.
도 4는 도 1의 스토리지 시스템에서 메인 스토리지의 채널 및 웨이의 구성을 예시적으로 나타낸다.
도 4를 참조하면, 채널 그룹들(CHG1~CHGk) 각각에는 비휘발성 스토리지들(410~4k0)이 각각 연결될 수 있다. 채널 그룹들(CHG1~CHGk) 각각에 접속된 비휘발성 스토리지들(410~4k0)은 m 개의 웨이들(way1~waym)을 구성할 수 있다. 각 채널 그룹에 구성된 m 개의 웨이에는 m 개의 비휘발성 메모리 장치들(411~41m, 421~42m, …, 4k1~4km)이 연결될 수 있다. 여기서, m은 3 이상의 자연수일 수 있다.
웨이(way)는 동일한 채널을 공유하는 비휘발성 메모리 장치들을 구분하기 위한 단위이다. 채널 번호와 웨이 번호에 따라서 각각의 비휘발성 메모리 장치가 식별될 수 있다.
도 5는 도 1의 스토리지 장치에서 스토리지 컨트롤러와 하나의 비휘발성 메모리 장치의 연결을 나타내는 블록도이다.
도 5를 참조하면, 비휘발성 메모리 장치(411)는 스토리지 컨트롤러(300)의 제어에 따라 소거, 기입, 독출 동작 등을 수행할 수 있다. 이를 위하여, 비휘발성 메모리 장치(411)는 입출력 라인을 통해 커맨드(CMD), 어드레스(ADDR) 및 데이터(DATA)를 입력받는다. 또한, 비휘발성 메모리 장치(411)는 제어 라인을 통하여 제어 신호(CTRL)를 제공받을 수 있고 파워 라인을 통해 파워(PWR)를 제공받을 수 있다. 또한, 비휘발성 메모리 장치(411)는 제어 라인을 통하여 상태 신호(RnB)를 스토리지 컨트롤러(300)에 제공할 수 있다.
도 6은 본 발명의 실시예들에 따른 도 5에서 비휘발성 메모리 장치를 나타내는 블록도이다.
도 6을 참조하면, 비휘발성 메모리 장치(411)는 메모리 셀 어레이(420), 어드레스 디코더(450), 페이지 버퍼 회로(430), 데이터 입출력 회로(440), 제어 회로(460) 및 전압 생성기(470)를 포함할 수 있다.
메모리 셀 어레이(420)는 스트링 선택 라인(SSL), 복수의 워드라인들(WLs) 및 접지 선택 라인(GSL)을 통해 어드레스 디코더(450)와 연결될 수 있다. 또한, 메모리 셀 어레이(420)는 복수의 비트 라인들(BLs)을 통해 페이지 버퍼 회로(430)와 연결될 수 있다.
메모리 셀 어레이(420)는 복수의 워드 라인들(WLs) 및 복수의 비트 라인들(BLs)에 연결되는 복수의 메모리 셀들을 포함할 수 있다.
일 실시예에 있어서, 메모리 셀 어레이(420)는 기판 상에 삼차원 구조(또는 수직 구조)로 형성되는 삼차원(three dimensional) 메모리 셀 어레이일 수 있다. 이 경우, 메모리 셀 어레이(420)는 서로 적층되어 형성되는 복수의 메모리 셀들을 포함하는 수직 메모리 셀 스트링들을 포함할 수 있다. 다른 실시예에 있어서, 메모리 셀 어레이(420)는 기판 상에 이차원 구조(또는 수평 구조)로 형성되는 이차원(two dimensional) 메모리 셀 어레이일 수 있다.
도 7은 도 6의 비휘발성 메모리 장치에서 메모리 셀 어레이를 나타내는 블록도이다.
도 7을 참조하면, 메모리 셀 어레이(420)는 복수의 메모리 블록들(BLK1~BLKz)을 포함한다. 복수의 메모리 블록들(BLK1~BLKz)은 제1 내지 제3 방향들(D1~D3)을 따라 신장된다. 실시예에 있어서, 메모리 블록들(BLK1~BLKz)은 도6에 도시된 어드레스 디코더(450)에 의해 선택된다. 예를 들면, 어드레스 디코더(450)는 메모리 블록들(BLK1~BLKz) 중 블록 어드레스에 대응하는 메모리 블록(BLK)을 선택할 수 있다.
도 8은 도 7의 메모리 블록들 중 하나의 메모리 블록을 나타내는 회로도이다.
도 8에 도시된 메모리 블록(BLKi)은 기판(SUB) 상에 삼차원 구조로 형성되는 삼차원 메모리 메모리 블록을 나타낸다. 예를 들어, 메모리 블록(BLKi)에 포함되는 복수의 메모리 셀 스트링들은 상기 기판(SUB)과 수직한 방향(PD)으로 적층될 수 있다.
도 8을 참조하면, 메모리 블록(BLKi)은 비트 라인들(BL1, BL2, BL3)과 공통 소스 라인(CSL) 사이에 연결되는 복수의 메모리 셀 스트링들(NS11~NS33)을 포함할 수 있다. 복수의 메모리 셀 스트링들(NS11~NS33) 각각은 스트링 선택 트랜지스터(SST), 복수의 메모리 셀들(MC1, MC2, ..., MC8) 및 접지 선택 트랜지스터(GST)를 포함할 수 있다.
스트링 선택 트랜지스터(SST)는 상응하는 스트링 선택 라인(SSL1, SSL2, SSL3)에 연결될 수 있다. 복수의 메모리 셀들(MC1, MC2, ..., MC8)은 각각 상응하는 워드 라인(WL1, WL2, ..., WL8)에 연결될 수 있다. 접지 선택 트랜지스터(GST)는 상응하는 접지 선택 라인(GSL1, GSL2, GSL3)에 연결될 수 있다. 스트링 선택 트랜지스터(SST)는 상응하는 비트 라인(BL1, BL2, BL3)에 연결되고, 접지 선택 트랜지스터(GST)는 공통 소스 라인(CSL)에 연결될 수 있다.
동일 높이의 워드 라인(예를 들면, WL1)은 공통으로 연결되고, 접지 선택 라인(GSL1, GSL2, GSL3) 및 스트링 선택 라인(SSL1, SSL2, SSL3)은 각각 분리될 수 있다.
도 9는 도 8의 메모리 블록의 하나의 셀 스트링의 구조의 예를 보여준다.
도 8 및 도 9를 참조하면, 셀 스트링(NS11)에는 기판(SUB) 위에 기판과 수직인 방향으로 신장되어 기판(SUB)과 접촉하는 필라(PL)가 제공될 수 있다. 도 9에 도시된 접지 선택 라인(GSL1), 워드 라인들(WL1~WL8), 그리고 스트링 선택 라인(SSL1)은 각각 기판(SUB)과 평행한 도전 물질들, 예를 들어 금속 물질들로 형성될 수 있다. 필라(PL)는 접지 선택 라인(GSL1), 워드 라인들(WL1~WL8), 그리고 스트링 선택 라인(SSL1)을 형성하는 도전 물질들을 관통하여 기판(SUB)과 접촉할 수 있다.
도 9에서, 절단 선(A-A')에 따른 단면도가 함께 도시되어 있다. 예시적으로, 제1 워드 라인(WL1)에 대응하는 제1 메모리 셀(MC1)의 단면도가 도시된다. 필라(PL)는 원통형의 바디(BD)를 포함할 수 있다. 바디(BD)의 내부에 에어갭(AG)이 제공될 수 있다.
바디(BD)는 P-타입 실리콘을 포함하며, 채널이 형성되는 영역일 수 있다. 필라(PL)는 바디(BD)를 둘러싸는 원통형의 터널 절연막(TI) 및 터널 절연막(TI)을 둘러싸는 원통형의 전하 포획 막(CT)을 더 포함할 수 있다. 제1 워드 라인(WL1) 및 필라(PL)의 사이에 블로킹 절연막(BI)이 제공될 수 있다. 바디(BD), 터널 절연막(TI), 전하 포획 막(CT), 블로킹 절연막(BI), 그리고 제1 워드 라인(WL1)은 기판(SUB) 또는 기판(SUB)의 상부 면과 수직인 방향으로 형성된 전하 포획형 트랜지스터일 수 있다. 스트링 선택 트랜지스터(SST), 접지 선택 트랜지스터(GST) 및 다른 메모리 셀들은 제1 메모리 셀(MC1)과 동일한 구조를 가질 수 있다.
다시 도 6을 참조하면, 제어 회로(460)는 스토리지 컨트롤러(300)로부터 커맨드(CMD) 및 어드레스 신호(ADDR)를 수신하고, 커맨드(CMD) 및 어드레스 신호(ADDR)에 기초하여 비휘발성 메모리 장치(411)의 소거 루프, 프로그램 루프 및 독출 동작을 제어할 수 있다. 여기서 프로그램 루프는 프로그램 동작과 프로그램 검증 동작을 포함할 수 있고, 소거 루프는 소거 동작과 소거 검증 동작을 포함할 수 있다.
예를 들어, 제어 회로(460)는 커맨드 신호(CMD)에 기초하여 전압 생성기(470)를 제어하기 위한 제어 신호들(CTLs)을 생성하고, 어드레스 신호(ADDR)에 기초하여 로우 어드레스(R_ADDR) 및 컬럼 어드레스(C_ADDR)를 생성할 수 있다. 제어 회로(460)는 로우 어드레스(R_ADDR)를 어드레스 디코더(430)에 제공하고, 컬럼 어드레스(C_ADDR)를 데이터 입출력 회로(440)에 제공할 수 있다.
어드레스 디코더(430)는 스트링 선택 라인(SSL), 복수의 워드 라인들(WLs) 및 접지 선택 라인(GSL)을 통해 메모리 셀 어레이(420)와 연결될 수 있다. 프로그램 동작 또는 독출 동작 시, 어드레스 디코더(450)는 제어 회로(460)로부터 제공되는 로우 어드레스(R_ADDR)에 기초하여 복수의 워드 라인들(WLs) 중의 하나를 선택 워드라인인 제1 워드라인 결정하고, 복수의 워드 라인들(WLs) 중에서 제1 워드라인을 제외한 나머지 워드 라인들을 비선택 워드라인들로 결정할 수 있다.
전압 생성기(470)는 제어 회로(460)로부터 제공되는 제어 신호들(CTLs)에 기초하여 파워(PWR)를 이용하여 비휘발성 메모리 장치(411)의 동작에 필요한 워드 라인 전압들(VWLs)을 생성할 수 있다. 전압 생성기(470)로부터 생성되는 워드 라인 전압들(VWLs)은 어드레스 디코더(430)를 통해 복수의 워드 라인들(WLs)에 인가될 수 있다.
예를 들어, 소거 동작 시, 전압 생성기(470)는 메모리 블록의 웰에 소거 전압을 인가하고 메모리 블록의 모든 워드라인들에 접지 전압을 인가할 수 있다. 소거 검증 동작 시, 전압 생성기(470)는 하나의 메모리 블록의 모든 워드라인들에 소거 검증 전압을 인가하거나 워드라인 단위로 소거 검증 전압을 인가할 수 있다.
예를 들어, 프로그램 동작 시, 전압 생성기(470)는 제1 워드라인에 프로그램 전압을 인가하고, 비선택 워드라인들에는 프로그램 패스 전압을 인가할 수 있다. 또한 프로그램 검증 동작 시, 전압 생성기(470)는 제1 워드라인에 프로그램 검증 전압을 인가하고, 비선택 워드라인들에는 검증 패스 전압을 인가할 수 있다.
또한, 독출 동작 시, 전압 생성기(470)는 제1 워드라인에 독출 전압을 인가하고, 비선택 워드라인들에는 독출 패스 전압을 인가할 수 있다.
페이지 버퍼 회로(430)는 복수의 비트 라인들(BLs)을 통해 메모리 셀 어레이(420)와 연결될 수 있다. 페이지 버퍼 회로(430)는 복수의 페이지 버퍼를 포함할 수 있다. 일 실시예에 있어서, 하나의 페이지 버퍼에 하나의 비트 라인이 연결될 수 있다. 다른 실시예에 있어서, 하나의 페이지 버퍼에 두 개 이상의 비트 라인들이 연결될 수 있다.
페이지 버퍼 회로(430)는 프로그램 동작 시 선택된 페이지에 프로그램될 데이터를 임시로 저장하고, 독출 동작 시 선택된 페이지로부터 독출된 데이터를 임시로 저장할 수 있다.
데이터 입출력 회로(440)는 데이터 라인들(DLs)을 통해 페이지 버퍼 회로(430)와 연결될 수 있다. 프로그램 동작 시, 데이터 입출력 회로(440)는 스토리지 컨트롤러(300)로부터 데이터(DATA)를 수신하고, 제어 회로(460)로부터 제공되는 컬럼 어드레스(C_ADDR)에 기초하여 데이터(DATA)를 페이지 버퍼 회로(430)에 제공할 수 있다.
독출 동작 시, 데이터 입출력 회로(440)는 제어 회로(500)로부터 제공되는 컬럼 어드레스(C_ADDR)에 기초하여 페이지 버퍼 회로(430)에 저장된 데이터(DATA)를 상기 스토리지 컨트롤러(300)에 제공할 수 있다.
또한, 페이지 버퍼 회로(430)와 데이터 입출력 회로(440)는 메모리 셀 어레이(420)의 제1 저장 영역으로부터 데이터를 독출하고, 독출된 데이터를 메모리 셀 어레이(420)의 제2 저장 영역에 기입할 수 있다. 즉, 페이지 버퍼 회로(430)와 데이터 입출력 회로(440)는 카피-백(copy-back) 동작을 수행할 수 있다. 페이지 버퍼 회로(430)와 데이터 입출력 회로(440)는 제어 회로(460)에 의하여 제어될 수 있다.
제어 회로(460)는 메모리 셀 어레이(420)에 대한 프로그램 동작, 소거 동작 및 독출 동작의 완료 및/또는 진행 여부를 나타내는 상태 신호(RnB)를 생성하는 상태 신호 생성기(465)를 포함할 수 있다.
도 10은 도 1의 스토리지 장치에 포함되는 비휘발성 스토리지들이 복수의 세트들로 할당되는 것을 나타낸다.
도 10을 참조하면, 비휘발성 스토리지들(410~4k0)에 포함되는 메모리 블록들은 복수의 뱅크들(BNK1~BNK9)로 구분될 수 있다.
복수의 뱅크들(BNK1~BNK9) 각각은 메모리 블록들(BLK1~BLK4)을 포함할 수 있다.
여기서, 스토리지 컨트롤러(200)는 주어진 시점에 복수의 뱅크들(BNK1~BNK0) 중 하나의 뱅크에 대하여 독출 동작, 프로그램 동작 및 소거 동작 중 하나만을 수행할 수 있다. 복수의 뱅크들(BNK1~BNK9) 각각은 동일한 뱅크 상에서 독출, 프로그램 소거 동작의 상호 간섭으로 인한 지연이 발생할 수 있는 메모리 소자를 포함할 수 있다.
호스트 장치(100)는 복수의 뱅크들(BNK1~BNK9) 중 일부를 세트 단위로 액세스할 수 있다.
호스트 장치(100)는 뱅크들(BNK1, BNK2)를 제1 세트(SET1)로 할당하고, 뱅크들(BNK3, BNK4)을 제2 세트(SET2)로 할당하고, 뱅크들(BNK5, BNK6)을 제3 세트(SET3)로 할당하고, 뱅크들(BNK7, BNK8)을 제4 세트(SET4)로 할당하고, 뱅크들(BNK1~BNK8)을 세트 단위로 액세스할 수 있다. 호스트 장치(100)에 의하여 세트로 할당되지 않은 뱅크(BNK9)는 스토리지 장치(200) 내부에서 프리 뱅크(FBNK)로 이용될 수 있다.
세트는 논리적으로나 물리적으로 다른 세트와 분리되는 뱅크들의 집합을 의미한다. 하나의 세트는 다른 세트의 동작에 의하여 성능 간섭을 받지 않는다. 호스트 장치(100)는 서로 분리되어야 하는 데이터를 세트들(SET1~SET4) 중 서로 다른 세트들에 저장하여 어플리케이션의 필요에 따라 성능 간섭 없이 서로 다른 세트의 데이터에 접근할 수 있다.
도 11은 도 1의 비휘발성 스토리지의 뱅크들이 도 10과 같은 세트들로 할당되는 경우에 도 3의 매핑 테이블을 나타낸다.
도 11을 참조하면, 매핑 테이블(325)은 세트를 식별하는 세트 아이디(SET_ID), 논리 뱅크 번호(LBKN), 물리 뱅크 번호(PBKN) 및 각 뱅크의 프로그램/소거 사이클(P/E Cycle)을 저장할 수 있다.
뱅크(BNK1)의 물리 뱅크 번호(PBNK, 물리 뱅크 어드레스)는 제1 세트(SET1)의 제1 논리 뱅크 번호(LBNK1, 논리 뱅크 어드레스)로 매핑되고, 뱅크(BNK2)의 물리 뱅크 번호(PBNK)는 제1 세트(SET1)의 제2 논리 뱅크 번호(LBNK2)로 매핑된다. 뱅크(BNK3)의 물리 뱅크 번호(PBNK)는 제2 세트(SET2)의 제1 논리 뱅크 번호(LBNK1)로 매핑되고, 뱅크(BNK4)의 물리 뱅크 번호(PBNK)는 제2 세트(SET2)의 제2 논리 뱅크 번호(LBNK2)로 매핑된다. 이는 뱅크들(BNK5~BNK8)에 대하여도 유사하게 적용된다.
도 12는 도 1의 스토리지 시스템에서 스토리지 장치 내부적으로 데이터 마이그레이션 동작이 수행되기 전의 상태를 나타내고, 도 13은 도 12의 상태에서 도 3의 매핑 테이블을 나타낸다.
도 12를 참조하면, 호스트 장치(100)는 호스트 장치(100) 상에서 구동되는 어플리케이션들(APP1~APP4)의 특성에 따라, 어플리케이션들(APP1~APP4) 각각을 세트들(SET1~SET4) 각각에 할당시킨다. 상술한 바와 같이, 호스트 장치(100)는 뱅크들(BNK1, BNK2)를 제1 세트(SET1)로 할당하고, 뱅크들(BNK3, BNK4)을 제2 세트(SET2)로 할당하고, 뱅크들(BNK5, BNK6)을 제3 세트(SET3)로 할당하고, 뱅크들(BNK7, BNK8)을 제4 세트(SET4)로 할당한다.
제1 뱅크(BNK1)는 메모리 블록들(BLK11, BLK13, BLK15, BLK17)을 포함하고, 제2 뱅크(BNK2)는 메모리 블록들(BLK12, BLK14, BLK16, BLK18)을 포함하고, 제3 뱅크(BNK3)는 메모리 블록들(BLK21, BLK23, BLK25, BLK27)을 포함하고, 제4 뱅크(BNK4)는 메모리 블록들(BLK22, BLK24, BLK26, BLK28)을 포함하는 것으로 가정한다.
어플리케이션(APP1)은 기입-집중적(write intensive)이어서, 제1 세트(SET1)에 포함되는 뱅크들(BNK1, BNK2)의 제1 프로그램/소거 사이클은 50이고, 어플리케이션(APP2)은 독출-집중적(read intensive)이어서, 제2 세트(SET2)에 포함되는 뱅크들(BNK3, BNK4)의 제2 프로그램/소거 사이클은 2이다. 제1 세트(SET1)의 제1 프로그램/소거 사이클이 제2 세트(SET2)의 제2 프로그램/소거 사이클보다 크므로, 제1 세트(SET1)의 프로그램/소거 사이클이 계속 증가할 경우, 메인 스토리지(400)의 수명 및/또는 성능이 제1 세트(SET1)로 인하여 악화될 수 있다.
스토리지 컨트롤러(300)의 마이그레이션 관리자(360)는 서로 다른 세트들 간의 프로그램/소거 사이클의 불균형이 발생되는 경우, 호스트 장치(100)에 대하여 확정적인 입출력 수행시간을 보장하면서, 내부적으로는 하나의 프리 뱅크(FBNK)를 이용하여 상기 세트들 사이에서 데이터를 이동시키는 데이터 마이그레이션 동작을 수행할 수 있다.
도 14는 도 12의 스토리지 시스템에서 제1 뱅크로부터 프리 뱅크로 데이터 마이그레이션 동작이 수행되는 것을 나타내고, 도 15는 도 14의 케이스에서 도 3의 매핑 테이블을 나타낸다.
도 14 및 도 15를 참조하면, 마이그레이션 관리자(360)는 제1 뱅크(BNK1)에 저장된 제1 데이터를 프리 뱅크(FBNK)인 제9 뱅크(BNK9)로 마이그레이션(MIG)하고, 제1 데이터의 마이그레이션이 완료되면, 도 15에 도시된 바와 같이, 제9 뱅크(BNK9)의 물리 뱅크 어드레스를 제1 세트(SET1)의 제1 논리 뱅크 어드레스(LBK1)로 매핑시키고, 제1 뱅크(BNK1)의 메모리 블록들(BLK11, BLK13, BLK15, BLK17)을 소거하고, 제1 뱅크(BNK1)를 프리 뱅크(FBNK)로서 매핑 테이블(325)에 등록하여 매핑 테이블(325)을 갱신한다.
이 경우에, 제1 세트(SET1)의 제1 논리 뱅크 어드레스(LBK1)로 매핑된 제9 뱅크(BNK9)의 프로그램/소거 사이클은 '1'이 된다. 또한 이 경우에, 프로그램/소거 동작은 프리 뱅크(FBNK)에서만 발생하므로 세트들 사이에서 성능 간섭이 발생하지 않는다.
도 16는 도 14의 스토리지 시스템에서 제3 뱅크로부터 프리 뱅크로 데이터 마이그레이션 동작이 수행되는 것을 나타내고, 도 17은 도 16의 케이스에서 도 3의 매핑 테이블을 나타낸다.
도 16 및 도 17을 참조하면, 마이그레이션 관리자(360)는 제3 뱅크(BNK3)에 저장된 제2 데이터를 프리 뱅크(FBNK)인 제1 뱅크(BNK1)로 마이그레이션(MIG)하고, 제2 데이터의 마이그레이션이 완료되면, 도 17에 도시된 바와 같이, 제1 뱅크(BNK1)의 물리 뱅크 어드레스를 제2 세트(SET2)의 제1 논리 뱅크 어드레스(LBK1)로 매핑시키고, 제3 뱅크(BNK3)의 메모리 블록들(BLK21, BLK23, BLK25, BLK27)을 소거하고, 제3 뱅크(BNK3)를 프리 뱅크(FBNK)로서 매핑 테이블(325)에 등록하여 매핑 테이블(325)을 갱신한다.
이 경우에, 제2 세트(SET2)의 제1 논리 뱅크 어드레스(LBK1)로 매핑된 제1 뱅크(BNK1)의 프로그램/소거 사이클은 '51'이 된다. 또한 이 경우에, 프로그램/소거 동작은 프리 뱅크(FBNK)에서만 발생하므로 세트들 사이에서 성능 간섭이 발생하지 않는다.
도 18는 도 16의 스토리지 시스템에서 제4 뱅크로부터 프리 뱅크로 데이터 마이그레이션 동작이 수행되는 것을 나타내고, 도 19는 도 18의 케이스에서 도 3의 매핑 테이블을 나타낸다.
도 18에서는 제2 뱅크(BNK2)의 제3 데이터가 제3 뱅크(BNK3)로 이미 마이그레이션 되었음을 가정한다.
도 18 및 도 19를 참조하면, 마이그레이션 관리자(360)는 제4 뱅크(BNK3)에 저장된 제4 데이터를 프리 뱅크(FBNK)인 제2 뱅크(BNK2)로 마이그레이션(MIG)하고, 제4 데이터의 마이그레이션이 완료되면, 도 19에 도시된 바와 같이, 제2 뱅크(BNK2)의 물리 뱅크 어드레스를 제2 세트(SET2)의 제2 논리 뱅크 어드레스(LBK2)로 매핑시키고, 제4 뱅크(BNK4)의 메모리 블록들(BLK22, BLK24, BLK26, BLK28)을 소거하고, 제4 뱅크(BNK4)를 프리 뱅크(FBNK)로서 매핑 테이블(325)에 등록하여 매핑 테이블(325)을 갱신한다.
이 경우에, 제2 세트(SET2)의 제2 논리 뱅크 어드레스(LBKN2)로 매핑된 제2 뱅크(BNK2)의 프로그램/소거 사이클은 '51'이 된다. 또한 이 경우에, 프로그램/소거 동작은 프리 뱅크(FBNK)에서만 발생하므로 세트들 사이에서 성능 간섭이 발생하지 않는다.
도 12 내지 도 19를 참조하여 설명한 바와 같이, 세트들 사이에 프로그램/소거 사이클의 불균형이 발생하는 경우, 스토리지 컨트롤러(300)는 스토리지 장치(200) 내부적으로 세트들 사이에서 데이터를 이동시키는 데이터 마이그레이션 동작을 수행하여 웨어-레벨링을 수행할 수 있다. 상기 데이터 마이그레이션 동작은 호스트 장치(100)에 대하여는 숨겨진(hidden) 동작이다.
도 14에서 제1 뱅크(BNK1)에서 프리 뱅크(FBNK)인 제9 뱅크(BNK9)로 제1 데이터의 마이그레이션이 수행되는 도중에, 스토리지 컨트롤러(300)가 호스트 장치(100)로부터 제1 데이터에 대한 독출 리퀘스트를 수신하는 경우에, 스토리지 컨트롤러(300)는 제1 뱅크(BNK1)와 제9 뱅크(BNK9)에 독출 리퀘스트에 대응되는 독출 커맨드를 동시에 인가할 수 있다.
스토리지 컨트롤러(300)는 독출 커맨드에 응답하여 제1 뱅크(BNK1)와 제9 뱅크(BNK9) 중 먼저 제공된 제1 데이터를 호스트 장치(100)에 제공할 수 있다. 스토리지 컨트롤러(300)는 독출 커맨드에 응답하여 제1 뱅크(BNK1)와 제9 뱅크(BNK9) 중 나중에 제공된 제1 데이터를 호스트 장치(100)에 제공하지 않고 무시할 수 있다.
상기 데이터 마이그레이션 동작을 수행하기 위하여 스토리지 컨트롤러(300)는 소스 뱅크인 제1 뱅크(BNK1)에 대한 독출 커맨드와 목적지 뱅크인 제9 뱅크(BNK9)에 대한 프로그램/소거 커맨드를 상호 배재적으로 수행할 수 있다. 이를 위하여 도 3의 CPU는 소스 뱅크와 목적지 뱅크에 대한 커맨드들을 상호 배재적으로 스케쥴링하는 스케쥴러를 포함할 수 있다.
상기 데이터 마이그레인션 동작을 수행하기 위하여 스토리지 컨트롤러(300)는 소스 뱅크인 제1 뱅크(BNK1)에 대하여 독출 커맨드를 인가하고 목적지 뱅크인 제9 뱅크(BNK9)에 대한 프로그램/소거 커맨드를 인가할 수 있다.
즉, 스토리지 컨트롤러(300)는 하나의 프리 뱅크를 이용하여 복수의 뱅크들의 물리 뱅크 어드레스들을 세트들의 논리 뱅크 어드레스들에 동적으로 할당하여 상기 데이터 마이그레이션 동작을 수행할 수 있다.
도 20은 본 발명의 실시예들에 따른 스토리지 장치의 동작을 설명하기 위한 타이밍도이다.
도 20을 참조하면, 제1 뱅크(BNK1)로부터 프리 뱅크인 제9 뱅크(BNK9)로 데이터 마이그레이션 동작이 수행되는 도중에, 호스트 장치(100)로부터 독출 리퀘스트가 발행된 경우가 설명된다.
도 20에 도시된 바와 같이, 스토리지 컨트롤러(300)는 제1 뱅크(BNK1)로부터 프리 뱅크인 제9 뱅크(BNK9)로 데이터 마이그레이션 동작이 수행되는 도중에 제1 뱅크(BNK1)에 대한 독출 커맨드(RD)와 제9 뱅크(BNK9)에 대한 프로그램/소거 커맨드를 상호 배재적으로 수행할 수 있다.
즉, 스토리지 컨트롤러(300)가 제1 시점(t1)에서 제1 뱅크(BNK1)에 독출 커맨드(RD)를 인가하고, 제2 시점(t2)에 제9 뱅크(BNK9)에 소거 커맨드(ERASE)를 상호 배재적으로 인가하고, 제2 시점(t2)에 독출 리퀘스트가 수신되는 경우, 제1 뱅크(BNK1)는 아이들 상태(IDLS)이고, 제9 뱅크(BNK9)는 동작 상태(OPS)이므로, 제9 뱅크(BNK9)는 독출 리퀘스트를 무시(ignore)하고, 제1 뱅크(BNK1)가 독출 리퀘스트를 접수(Accept)하여 상응하는 데이터를 스토리지 컨트롤러(300)에 제공할 수 있다.
또한, 스토리지 컨트롤러(300)가 제3 시점(t1)에서 제1 뱅크(BNK1)에 독출 커맨드(RD)를 인가하고, 제4 시점(t2)에 제9 뱅크(BNK9)에 프로그램 커맨드(PGM)를 상호 배재적으로 인가하고, 제3 시점(t3)에 독출 리퀘스트가 수신되는 경우, 제1 뱅크(BNK1)는 동작 상태(OPS)이고, 제9 뱅크(BNK9)는 아이들 상태(IDLS)이므로, 제1 뱅크(BNK1)는 독출 리퀘스트를 무시(ignore)하고, 제9 뱅크(BNK9)가 독출 리퀘스트를 접수(Accept)하여 상응하는 데이터를 스토리지 컨트롤러(300)에 제공할 수 있다.
도 21은 본 발명의 실시예들에 따른 스토리지 장치의 동작 방법을 나타내는 흐름도이다.
도 1 내지 도 21을 참조하면, 데이터를 저장하는 메인 스토리지(400) 및 상기 메인 스토리지를 제어하는 스토리지 컨트롤러(300)를 구비하는 스토리지 장치(200)의 동작 방법에서는, 스토리지 컨트롤러(300)가 메인 스토리지(400)의 복수의 메모리 블록들을 적어도 하나의 뱅크를 구비하는 복수의 세트들과 하나의 프리 뱅크로 구분한다(S100).
스토리지 컨트롤러(300)는 호스트 장치(100)로부터 입출력 리퀘스트에 응답하여 확정적인 입출력 수행 시간을 보장하면서, 내부적으로 상기 프리 뱅크를 이용하여 상기 세트들 사이에서 데이터를 이동시키는 데이터 마이그레이션 동작을 수행한다(S200).
상기 데이터 마이그레이션 동작은 호스트 장치(100)에 대하여는 숨겨진(hidden) 동작일 수 있다.
스토리지 컨트롤러(300)는 상기 데이터 마이그레이션 동작을 수행하여 서로 다른 프로그램/소거 사이클을 가지는 세트들에 대한 웨어 레벨링을 내부적으로 수행할 수 있다.
도 22는 본 발명의 실시예들에 따른 도 1의 스토리지 시스템에서 호스트 장치의 다른 예를 나타내는 블록도이다.
도 22의 호스트 장치(100b)는 가상화 기능을 지원할 수 있다. 예를 들어, 도 22의 호스트 장치(100b)가 도 1의 스토리지 시스템에 포함되는 경우, 도 1의 스토리지 시스템(10)은 NVMe 프로토콜에 따른 인터페이스 방식을 지원하면서 동시에 SR-IOV(Single-Root IO Virtualization)의 가상화 기능을 함께 지원할 수 있다.
도 22를 참조하면, 호스트 장치(100b)는 프로세서(110, 또는 호스트 코어), 가상화 중재기(Virtualization Intermediary, VI)(170), 루트 컴플렉스(Root Complex, RC)(1830), 호스트 메모리(130), 및 스토리지 인터페이스(150)를 포함할 수 있다.
프로세서(110)는 하나의 물리 장치(Physical Function, PF)(110a) 및 복수의 가상화 장치들(Virtual Function, VF)(111~115)을 포함한다. 여기서 물리 장치(110a)는 물리적인 하드웨어로써의 코어일 수 있다. 복수의 가상화 장치들(111~115)은 각각 SR-IOV의 가상화 동작에 의하여 생성된 가상화 코어 혹은 프로세서일 수 있으며, 각각 독립적으로 운영체제 및 어플리케이션을 구동할 수 있다. 하나의 가상화 장치에 의하여 구동되는 운영체제는, 예를 들어, 게스트 O/S(Guest O/S)라 칭해질 수 있다.
가상화 중재기(170)는 프로세서(110) 및 루트 컴플렉스(180)에 연결되며, 가상화 장치들(111~115)을 실행하거나 가상화 장치들(111~115)을 관리하는 기능을 수행한다. 예를 들어, 가상화 중재기(170)는 SR-IOV의 가상화 동작을 위한 주소(address) 정보를 전송하고 관리하는 기능을 수행할 수 있다.
루트 컴플렉스(180)는 계층(hierarchy)의 루트(root)를 나타내는 것으로, 가상화 중재기(170), 호스트 메모리(130), 그리고 스토리지 인터페이스(150)에 연결된다. 루트 컴플렉스(170)는 프로세서(110)를 호스트 메모리(130)에 연결하거나, 프로세서(110) 및 호스트 메모리(130)를 스토리지 인터페이스(1150)에 연결하는 역할을 수행할 수 있다.
호스트 메모리(130)는 루트 컴플렉스(180)를 통하여 가상화 중재기(170), 프로세서(110), 그리고 스토리지 인터페이스(150)에 연결된다. 호스트 메모리(130)는, 예를 들어, 프로세서(110)의 물리 장치(110a) 또는 가상화 장치들(111~115) 각각을 위한 워킹 메모리(working memory)로 사용될 수 있다. 이 경우, 호스트 메모리(130)에는 응용 프로그램, 파일 시스템 및 장치 드라이버 등이 로딩될 수 있다.
스토리지 인터페이스(150)는 루트 컴플렉스(180)에 연결되며, 호스트 장치(200a)와 스토리지 장치(300) 사이의 통신을 제공한다. 예를 들어, 스토리지 인터페이스(150)는 NVMe 프로토콜 방식에 따라 큐 베이스의 커맨드들 및 데이터를 스토리지 장치(200)에 제공하거나, 스토리지 장치(200)로부터 처리된 커맨드들의 정보 및 데이터를 수신할 것이다.
예를 들어, 도 22에 도시된 바와 같이, NVMe 프로토콜 인터페이스 방식에서의 SR-IOV 가상화 기능을 지원하기 위하여, 호스트 메모리(130)는 물리 장치(110ㅁ)의 관리 큐를 저장하기 위한 물리 장치 관리 큐 저장 영역(PF A_Q Area)(130a), 물리 장치(110a)의 입출력 큐를 저장하기 위한 물리 장치 입출력 큐 저장 영역(PF I/O_Q Area)(130ㅠ), 가상화 장치들의 입출력 큐들을 저장하기 위한 복수의 가상화 장치 입출력 큐 저장 영역(VF1 I/O_Q Area~VF5 I/O_Q Area)(131~135)을 제공할 수 있다. 이 경우, 큐 커맨드들은 NVMe 프로토콜 인터페이스 방식에서 주로 사용되는 써큘러 큐(circular queue) 방식을 이용하여 각 저장 영역에 저장될 수 있다.
도 23은 도 22의 호스트 장치가 도 1의 스토리지 시스템에 적용되는 경우의 스토리지 시스템을 나타낸다.
도 1 및 도 23을 참조하면, 호스트 장치(100)는 세트 단위로 스토리지 장치(200)를 제어하고, 호스트 장치(100)는 프로세서(110)에 포함되는 가상화 장치들(VF1~VF5)에 대하여 메인 스토리지(400)의 복수의 메모리 블록들을 구분하는 적어도 하나의 뱅크를 구비하는 복수의 세트들(SET1~SET5)를 할당한다.
도 23에서 뱅크들(8, 16)은 세트들(SET1~SET5)에 할당되지 않은 미사용 뱅크(UN_BNK)로서 상술한 프리 뱅크(FBNK)로서 사용될 수 있다.
도 24 및 도 25는 본 발명의 실시예들에 따른 스토리지 시스템에서, 프리 뱅크를 확보화기 위한 호스트 장치와 스토리지 장치 사이의 인터페이스를 나타낸다.
먼저 도 24를 참조하면, 도 23과 같이, 뱅크들(8, 16)은 세트들(SET1~SET5)에 할당되지 않은 미사용 뱅크(UN_BNK)인 경우, 프리 뱅크를 확보하기 위하여 호스트 장치(100a)는 미사용 뱅크 락 커맨드(LK_UNBK_CMD)를 스토리지 장치(200)에 인가하여, 뱅크들(8, 16)을 사용자에게 오픈하지 않고, 유보(reserve)할 수 있다.
이 경우에, 스토리지 컨트롤러(300)는 미사용 뱅크들인 뱅크들(8, 16) 중 하나를 프리 뱅크로 사용하여 상술한 데이터 마이그레이션 동작을 스토리지 장치(200) 내부적으로 수행할 수 있다.
만일 스토리지 장치(200)가 미사용 뱅크를 포함하지 않는다면, 스토리지 장치(200)는 미사용 뱅크 락 커맨드(LK_UNBK_CMD)에 응답하여 하여 에러 메시지를 호스트 장치(100)에 리턴할 수 있다. 만일 스토리지 장치(200)가 미사용 뱅크를 포함한다면, 상기 미사용 뱅크에 대한 세트 할당 및 사용자 입출력 리퀘스트를 무산(abort)시킬 수 있다.
프리 뱅크로의 할당을 해제하기 위하여, 호스트 장치(100a)는 미사용 뱅크 언락 커맨드(UNLK_UNBK_CMD)를 스토리지 장치(200)에 인가할 수 있다. 이 경우에 데이터 마이그레이션 동작이 수행중인 경우라면, 스토리지 컨트롤러(300)는 미사용 뱅크 언락 커맨드(UNLK_UNBK_CMD)를 무산시킬 수 있다.
도 25를 참조하면, 도 23과 같이, 가상화 장치(VF2)에 할당된 제2 세트(SET2)의 뱅크들(3, 4, 11, 12)에 대하여, 가상화 장치(VF2)가 활성화되었다가 비활성화되는 경우, 프리 뱅크를 확보하기 위하여 호스트 장치(100a)는 미사용 세트 락 커맨드(LK_MSET_CMD)를 스토리지 장치(200)에 인가할 수 있다.
이 경우에, 스토리지 컨트롤러(300)는 미사용 세트 락 커맨드(LK_MSET_CMD)에 응답하여 세트에 속하지 않은 뱅크들(2, 3, 10, 11) 중 적어도 하나를 프리 뱅크로 사용하여 상술한 데이터 마이그레이션 동작을 스토리지 장치(200) 내부적으로 수행할 수 있다. 상기 뱅크들(2, 3, 10, 11)에 대하여 사용자로부터 입출력 리퀘스트가 있는 경우, 상기 입출력 리퀘스트를 무산시킬 수 있다.
비활성화된 가상 장치에 해당하는 세트에 대한 프리 뱅크로의 할당을 해제하기 위하여 호스트 장치(100a)는 미사용 세트 언락 커맨드(UNLK_MSET_CMD)를 를 스토리지 장치(200)에 인가할 수 있다. 프리 뱅크로의 할당이 해제된 상기 세트에 대하여 사용자로부터 입출력 리퀘스트가 있는 경우, 스토리지 컨트롤러(300)는 상기 입출력 리퀘스트를 수용할 수 있다.
도 26은 본 발명의 실시예에 따른 레이드 스토리지 시스템의 구성을 나타내는 블록도이다.
도 26을 참조하면, 레이드 스토리지 시스템(600)은 레이드 컨트롤러(RAID CONTROLLER, 610), 비휘발성 랜덤 액세스 메모리(NVRAM, 620), 복수의 스토리지 장치들(SD1 ~ SDn; 710~7n0) 및 버스(630)를 포함할 수 있다. 레이드 스토리지 시스템(600)의 구성 요소들은 버스(630)를 통하여 통신가능하도록 연결되도록 구성될 수있다.
레이드(RAID: Redundant Array of Independent Disks) 방식은 일부 스토리지 디바이스가 고장이 난 경우에 데이터 손실을 방지하기 위하여, 미러링(mirroring) 기반 기법으로 데이터를 복원하는 방식과 패리티 기반 기법으로 데이터를 복원하는 방식 등이 있다. 예로서, 레이드 스토리지 시스템(600)에는 패리티 기반 RAID 방식이 적용될 수 있다.
스토리지 장치들(710~7n0)은 다양한 종류의 데이터들을 저장할 수 있으며, 솔리드 스테이트 드라이브(Solid State Drive, SSD), 임베디드 멀티미디어 카드(Embedded Multimedia Card, eMMC) 또는 유니버설 플래시 스토리지(Universal Flash Storage, UFS) 등으로 구현될 수 있다.
본 실시예에 있어서, 스토리지 장치들(710~7n0)은 솔리드 스테이트 드라이브로 구현될 수 있다. 솔리드 스테이트 드라이브는 다수의 비휘발성 메모리 칩들을 이용하여 스토리지 장치들(710~7n0)을 구현할 수 있다. 실시예에 있어서, 솔리드 스테이트 드라이브는 다수의 플래시 메모리 칩들을 이용하여 스토리지 디바이스를 구현할 수 있다.
스토리지 장치들(710~7n0)은 각각 마이그레이션 관리자(711~7n1)를 포함할 수 있다. 마이그레이션 관리자(711~7n1) 각 스토리지 장치들(710~7n0)에 대한 마이그레이션 동작을 그 내부적으로 수행할 수 있다.
스토리지 장치들(710~7n0) 각각은 도 1의 스토리지 장치(200)로 구성되어 하나의 프리 뱅크를 이용하여 내부적으로 복수의 세트들 사이에서 데이터를 이동시키는 데이터 마이그레이션 동작을 수행하여 웨어 레벨링을 수행할 수 있다.
비휘발성 랜덤 액세스 메모리(620)는 전원이 꺼지더라도 저장되어 있는 데이터가 보존되는 랜덤 액세스 메모리일 수 있다. 일 실시예에 있어서, 비휘발성 랜덤 액세스 메모리(620)는 PRAM(Phase change RAM), FeRAM(Ferroelectric RAM) 또는 MRAM(Magnetic RAM)으로 구현할 수 있다. 다른 실시예에 있어서, 비휘발성 랜덤 액세스 메모리(620)는 휘발성 메모리인 DRAM 또는 SRAM에 인가되는 전원을 배터리 또는 커패시터를 이용하는 방식으로 구현할 수도 있다. 즉, 시스템 전원이 차단되면 DRAM 또는 SRAM을 배터리 또는 커패시터로 구동하여, DRAM 또는 SRAM에 저장된 데이터를 비휘발성 저장 공간인 스토리지 디바이스로 이동시키는 방식으로 데이터를 보존할 수 있다. 이에 따라 시스템 전원이 꺼지더라도 DRAM 또는 SRAM에 저장되어 있는 데이터를 보존할 수 있게 된다.
비휘발성 랜덤 액세스 메모리(620)에는 복수의 스토리지 장치들(710~7n0)에 스트라이프 단위로 기입할 데이터를 저장하는 캐시 영역이 할당될 수 있다. 비휘발성 랜덤 액세스 메모리(620)에서 스트라이프 단위로 기입할 데이터를 저장하도록 할당된 캐시영역을 스트라이프 캐시 영역이라 칭할 수 있다.
비휘발성 랜덤 액세스 메모리(620)에는 레이드 스토리지 시스템(600)에서 이용되는 맵핑 테이블 정보가 저장될 수도 있다. 맵핑 테이블 정보에는 스트라이프 그룹핑에 대한 정보를 나타내는 스트라이프 맵핑 테이블 정보가 포함될 수 있다. 스트라이프 그룹핑에 대한 정보는 각각의 스트라이프를 구성하는 메모리 블록들을 나타내는 정보가 포함될 수 있다. 스트라이프 맵핑 테이블 정보에는 스트라이프들 각각에 대한 유효한 페이지 비율 정보가 포함될 수도 있다.
레이드 컨트롤러(610)는 레이드 환경에 기초하여 복수의 스토리지 장치들(710~7n0)을 제어할 수 있다. 실시예에 있어서, 레이드 환경은 로그 구조의 레이드(log-structured RAID) 환경일 수 있다. 로그 구조의 레이드 환경에서 레이드 컨트롤러(610)는, 스토리지 장치들(710~7n0)에 쓰여진 데이터를 업데이트하는 경우 데이터를 오버라이트(overwrite) 하지 않고 새로운 위치에 로그 형식으로 기입하도록 레이드 스토리지 시스템(600)을 제어할 수 있다.
레이드 컨트롤러(610)는 스트라이프를 구성하는 스토리지 장치들(710~7n0)의 메모리 블록 위치 정보들을 스트라이프 맵핑 테이블에 등록하는 동작을 수행할 수 있다.
레이드 컨트롤러(610)는 비휘발성 랜덤 액세스 메모리(150)에 저장되어 있는 맵핑 테이블 정보를 이용하여 어드레스 변환 처리 및/또는 스트라이프 그룹핑 처리를 수행할 수 있다. 예를 들면, 레이드 컨트롤러(610)는 스트라이프 맵핑 테이블 정보를 이용하여 스트라이프 단위로 가비지 컬렉션을 수행할 수 있다.
레이드 컨트롤러(610)는 맵핑 테이블 정보를 이용하여 가비지 컬렉션을 위한 희생 스트라이프(Victim stripe)를 선택하는 동작을 수행할 수 있다. 예를 들면, 레이드 컨트롤러(610)는 스트라이프 맵핑 테이블 정보를 이용하여 그룹핑된 스트라이프들 중에서 유효한 페이지 비율이 가장 낮은 스트라이프를 찾아내어 희생 스트라이프로 선택할 수 있다.
본 발명은 스토리지 장치를 구비하는 임의의 전자 장치에 유용하게 이용될 수 있다. 예를 들어, 본 발명은 스토리지 장치를 구비하는 휴대폰(Mobile Phone), 스마트 폰(Smart Phone), 개인 정보 단말기(Personal Digital Assistant; PDA), 휴대형 멀티미디어 플레이어(Portable Multimedia Player; PMP), 디지털 카메라(Digital Camera), 음악 재생기(Music Player), 휴대용 게임 콘솔(Portable Game Console), 네비게이션(Navigation) 시스템 등에 적용될 수 있다.
상술한 바와 같이, 본 발명의 바람직한 실시예를 참조하여 설명하였지만 해당 기술 분야에서 통상의 지식을 가진 자라면 하기의 특허청구범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.

Claims (10)

  1. 데이터를 저장하는 메인 스토리지; 및
    상기 메인 스토리를 제어하는 스토리지 컨트롤러를 포함하고,
    상기 스토리지 컨트롤러는 상기 메인 스토리지에 포함되는 복수의 비휘발성 메모리 장치들의 복수의 메모리 블록들을 복수의 뱅크들로 구분하고, 상기 복수의 뱅크들을 각각이 적어도 하나의 뱅크를 구비하는 복수의 세트들과 하나의 프리 뱅크로 할당하고,
    외부의 호스트 장치로부터의 입출력 리퀘스트에 응답하여 확정적인 입출력 수행시간을 보장하면서, 내부적으로는 상기 하나의 프리 뱅크를 이용하여 상기 세트들 사이에서 데이터를 이동시키는 데이터 마이그레이션 동작을 수행 수행하고, 상기 입출력 리퀘스트가 상기 데이터 마이그레이션 동작에 무관하도록 상기 데이터 마이그레이션 동작을 제어하는 스토리지 장치.
  2. 제1항에 있어서,
    상기 스토리지 컨트롤러는 상기 복수의 뱅크들 중 하나의 뱅크에 대하여 주어진 시점에 독출 동작, 프로그램 동작 및 소거 동작 중 하나만을 수행하고,
    상기 스토리지 컨트롤러는
    상기 호스트 장치로부터의 상기 복수의 뱅크들 중 하나의 뱅크를 액세스하기 위한 세트 아이디 및 논리 뱅크 어드레스를 수신하고, 상기 논리 뱅크 어드레스 및 상기 논리 뱅크 어드레스에 대한 물리 뱅크 어드레스 사이의 매핑 정보를 저장하는 매핑 테이블; 및
    상기 매핑 테이블을 관리하고, 상기 세트들 각각의 프로그램/소거 사이클에 기초하여 상기 데이터 마이그레이션 동작을 수행하고, 상기 데이터 마이그레이션 동작이 완료되면 상기 매핑 테이블을 갱신하는 마이그레이션 관리자를 포함하는 스토리지 장치.
  3. 제2항에 있어서, 상기 마이그레이션 관리자는
    상기 호스트 장치로부터의 리퀘스트와 관련된 상기 뱅크들 각각의 프로그램/소거 사이클은 카운팅하고, 상기 마이그레이션 동작과 관련된 상기 뱅크들 각각의 프로그램/소거 사이클을 카운팅하는 프로그램/소거 사이클 카운터를 포함하는 스토리지 장치.
  4. 제3항에 있어서,
    상기 복수의 세트들 중 제1 세트는 상기 복수의 뱅크들 중 제1 뱅크와 제2 뱅크를 포함하고, 제2 세트는 제3 뱅크와 제4 뱅크를 포함하고,
    상기 제1 세트의 프로그램/소거 사이클이 제1 사이클이고,
    상기 제2 세트의 프로그램/소거 사이클이 제2 사이클이고,
    상기 제1 사이클이 제2 사이클보다 큰 경우,
    상기 마이그레이션 관리자는
    상기 제1 뱅크에 저장된 제1 데이터를 상기 프리 뱅크로 마이그레이션하고,
    상기 제1 데이터의 마이그레이션이 완료되면, 상기 프리 뱅크의 물리 뱅크 어드레스를 상기 제1 세트의 제1 논리 뱅크 어드레스로 매핑하고, 상기 제1 뱅크의 메모리 블록들을 소거하고, 상기 제1 뱅크를 상기 프리 뱅크로서 상기 매핑 테이블에 등록하고,
    상기 마이그레이션 관리자는
    상기 제3 뱅크에 저장된 제2 데이터를 상기 제1 뱅크로 마이그레이션하고,
    상기 제2 데이터의 마이그레이션이 완료되면, 상기 제1 뱅크의 물리 뱅크 어드레스를 상기 제2 세트의 제1 논리 뱅크 어드레스로 매핑하고, 상기 제3 뱅크의 메모리 블록들을 소거하고, 상기 제3 뱅크를 상기 프리 뱅크로서 상기 매핑 테이블에 등록하고,
    상기 마이그레이션 관리자는
    상기 제2 뱅크와 상기 제4 뱅크에 대하여 상기 마이그레션과 상기 어드레스 갱신을 순차적으로 반복하여 상기 제1 세트와 상기 제2 세트 사이에서 웨어-레벨링을 수행하는 스토리지 장치.
  5. 제3항에 있어서,
    상기 제1 데이터의 마이그레이션 도중에, 상기 스토리지 컨트롤러가 상기 호스트 장치로부터 상기 제1 데이터에 대한 독출 리퀘스트를 수신하는 경우,
    상기 스토리지 컨트롤러는 상기 제1 뱅크와 상기 프리 뱅크로 상기 독출 리퀘스트에 대응되는 독출 커맨드를 동시에 인가하고,
    상기 스토리지 컨트롤러는 상기 독출 커맨드에 응답하여 상기 제1 뱅크와 상기 프리 뱅크 중 먼저 제공된 상기 제1 데이터를 상기 호스트 장치에 제공하고,
    상기 스토리지 컨트롤러는 상기 독출 커맨드에 응답하여 상기 제1 뱅크와 상기 프리 뱅크 중 나중에 제공된 상기 제1 데이터를 무시하는 스토리지 장치.
  6. 제3항에 있어서,
    상기 스토리지 컨트롤러는 상기 제1 뱅크에 대한 독출 커맨드와 상기 프리 뱅크에 대한 프로그램/소거 커맨드를 상호 배재적으로 수행하는 스토리지 장치.
  7. 제1항에 있어서,
    상기 스토리지 컨트롤러는 상기 호스트 장치와 비휘발성 메모리 익스프레스(NVMe) 방식에 의하여 인터페이스 동작을 수행하고,
    상기 스토리지 컨트롤러는 상기 하나의 프리뱅크를 이용하여 상기 복수의 뱅크들의 물리 뱅크 어드레스들을 상기 세트들의 논리 뱅크 어드레스들에 동적으로 할당하여 상기 데이터 마이그레이션 동작을 수행하고,
    상기 복수의 메모리 블록들 중 적어도 하나는 기판 위에 순차적으로 적층되는 복수의 메모리 셀들을 구비하는 낸드 스트링들을 포함하는 스토리지 장치.
  8. 데이터를 저장하는 메인 스토리지 및 상기 메인 스토리지를 제어하는 스토리지 컨트롤러를 구비하는 스토리지 장치; 및
    세트 단위로 상기 스토리지 장치를 제어하는 호스트 장치를 포함하고,
    상기 스토리지 컨트롤러는 상기 메인 스토리지에 포함되는 복수의 비휘발성 메모리 장치들의 복수의 메모리 블록들을 복수의 뱅크들로 구분하고, 상기 복수의 뱅크들을 각각이 적어도 하나의 뱅크를 구비하는 복수의 세트들과 하나의 프리 뱅크로 할당하고,
    상기 호스트 장치로부터의 입출력 리퀘스트에 응답하여 확정적인 입출력 수행시간을 보장하면서, 내부적으로는 상기 하나의 프리 뱅크를 이용하여 상기 세트들 사이에서 데이터를 이동시키는 데이터 마이그레이션 동작을 수행 수행하고, 상기 입출력 리퀘스트가 상기 데이터 마이그레이션 동작에 무관하도록 상기 데이터 마이그레이션 동작을 제어하는 스토리지 장치.
  9. 제8항에 있어서, 상기 호스트 장치는
    적어도 하나의 물리 장치 및 복수의 가상화 장치들을 포함하는 프로세서; 및
    상기 프로세서에 대한 워킹 메모리로 동작하는 호스트 메모리를 포함하고,
    상기 호스트 장치는 상기 복수의 뱅크들 중 상기 가상화 장치들에 할당되지 않은 적어도 하나의 미사용 뱅크를 상기 프리 뱅크로 할당하도록 상기 스토리지 컨트롤러에 미사용 뱅크 락 커맨드를 인가하고,
    상기 할당된 프리 뱅크가 해제되도록 상기 스토리지 컨트롤러에 미사용 뱅크 언락 커맨드를 인가하거나,
    상기 호스트 장치는 상기 복수의 뱅크들 중 상기 가상화 장치들에 할당되었다가, 상기 가상화 상치들 중 비활성화된 가상화 장치에 할당된 적어도 하나의 하나의 미사용 뱅크를 상기 프리 뱅크로 할당하도록 상기 스토리지 컨트롤러에 미사용 세트 락 커맨드를 인가하고,
    상기 할당된 프리 뱅크가 해제되도록 상기 스토리지 컨트롤러에 미사용 세트 언락 커맨드를 인가하고,
    상기 스토리지 장치는 상기 호스트 장치와 비휘발성 메모리 익스프레스(NVMe) 방식에 의하여 인터페이스 동작을 수행하는 스토리지 시스템.
  10. 데이터를 저장하는 메인 스토리지 및 상기 메인 스토리지를 제어하는 스토리지 컨트롤러를 구비하는 스토리지 장치의 동작 방법으로서,
    상기 메인 스토리지의 복수의 메모리 블록들을 적어도 하나의 뱅크를 구비하는 복수의 세트들과 하나의 프리 뱅크로 구분하는 단계; 및
    외부의 호스트 장치로부터 입출력 리퀘스트에 응답하여 확정적인 입출력 수행 시간을 보장하면서, 내부적으로 상기 프리 뱅크를 이용하여 상기 세트들 사이에서 데이터를 이동시키는 데이터 마이그레이션 동작을 수행하는 단계를 포함하는 스토리지 장치의 동작 방법.
KR1020180106913A 2018-09-07 2018-09-07 스토리지 장치, 스토리지 시스템 및 스토리지 장치의 동작 방법 KR102545189B1 (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020180106913A KR102545189B1 (ko) 2018-09-07 2018-09-07 스토리지 장치, 스토리지 시스템 및 스토리지 장치의 동작 방법
US16/276,706 US11354057B2 (en) 2018-09-07 2019-02-15 Storage devices, data storage systems and methods of operating storage devices
CN201910762325.6A CN110888597A (zh) 2018-09-07 2019-08-16 存储设备、存储系统以及操作存储设备的方法
US17/737,406 US20220261171A1 (en) 2018-09-07 2022-05-05 Storage devices, data storage systems and methods of operating storage devices

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180106913A KR102545189B1 (ko) 2018-09-07 2018-09-07 스토리지 장치, 스토리지 시스템 및 스토리지 장치의 동작 방법

Publications (2)

Publication Number Publication Date
KR20200028615A true KR20200028615A (ko) 2020-03-17
KR102545189B1 KR102545189B1 (ko) 2023-06-19

Family

ID=69719614

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180106913A KR102545189B1 (ko) 2018-09-07 2018-09-07 스토리지 장치, 스토리지 시스템 및 스토리지 장치의 동작 방법

Country Status (3)

Country Link
US (2) US11354057B2 (ko)
KR (1) KR102545189B1 (ko)
CN (1) CN110888597A (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11397644B2 (en) * 2019-04-23 2022-07-26 Samsung Electronics Co., Ltd. Method for controlling operations of RAID system comprising host device and plurality of SSDs
KR20210155593A (ko) * 2020-06-16 2021-12-23 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
CN112199039B (zh) * 2020-09-04 2022-08-05 星宸科技股份有限公司 虚拟存储管理方法及处理器
KR20220046211A (ko) * 2020-10-07 2022-04-14 에스케이하이닉스 주식회사 저항성 메모리 장치를 제어하기 위한 메모리 컨트롤러 및 이를 포함하는 메모리 시스템
CN112286468B (zh) * 2020-12-28 2021-03-16 湖北芯擎科技有限公司 一种存储器件的访问控制方法、装置及电子设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090327591A1 (en) * 2008-06-25 2009-12-31 Stec, Inc. Slc-mlc combination flash storage device
KR20140036620A (ko) * 2012-09-17 2014-03-26 삼성전자주식회사 오토 리프레쉬 커맨드를 사용하지 않고 리프레쉬를 수행할 수 있는 반도체 메모리 장치 및 이를 포함하는 메모리 시스템
KR20160072620A (ko) * 2014-12-15 2016-06-23 삼성전자주식회사 메모리 접근 방법 및 장치

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6854084B2 (en) * 2000-07-14 2005-02-08 Sun Microsystems, Inc. Partitioned random access memory
ATE372578T1 (de) 2002-10-28 2007-09-15 Sandisk Corp Automatischer abnutzungsausgleich in einem nicht- flüchtigen speichersystem
JP4863749B2 (ja) 2006-03-29 2012-01-25 株式会社日立製作所 フラッシュメモリを用いた記憶装置、その消去回数平準化方法、及び消去回数平準化プログラム
KR101087308B1 (ko) 2006-12-27 2011-11-25 인텔 코오퍼레이션 비휘발성 메모리에 대한 초기 웨어 레벨링
WO2009063614A1 (ja) 2007-11-14 2009-05-22 Panasonic Corporation メモリコントローラ、不揮発性記憶モジュール、アクセスモジュール、及び不揮発性記憶システム
US9009438B2 (en) * 2011-06-01 2015-04-14 International Business Machines Corporation Space reclamation in multi-layered and thin provisioned storage systems
US9959203B2 (en) * 2014-06-23 2018-05-01 Google Llc Managing storage devices
KR20170121184A (ko) 2015-02-27 2017-11-01 섀플러 테크놀로지스 아게 운트 코. 카게 습식 작동 마찰 라이닝을 위한 라이닝 캐리어
US9514043B1 (en) * 2015-05-12 2016-12-06 Sandisk Technologies Llc Systems and methods for utilizing wear leveling windows with non-volatile memory systems
KR102403266B1 (ko) 2015-06-22 2022-05-27 삼성전자주식회사 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템
KR20170044781A (ko) * 2015-10-15 2017-04-26 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
US20170123700A1 (en) 2015-11-03 2017-05-04 Samsung Electronics Co., Ltd. Io redirection methods with cost estimation
US10929286B2 (en) * 2018-06-29 2021-02-23 Seagate Technology Llc Arbitrated management of a shared non-volatile memory resource

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090327591A1 (en) * 2008-06-25 2009-12-31 Stec, Inc. Slc-mlc combination flash storage device
KR20140036620A (ko) * 2012-09-17 2014-03-26 삼성전자주식회사 오토 리프레쉬 커맨드를 사용하지 않고 리프레쉬를 수행할 수 있는 반도체 메모리 장치 및 이를 포함하는 메모리 시스템
KR20160072620A (ko) * 2014-12-15 2016-06-23 삼성전자주식회사 메모리 접근 방법 및 장치

Also Published As

Publication number Publication date
CN110888597A (zh) 2020-03-17
US20200081647A1 (en) 2020-03-12
KR102545189B1 (ko) 2023-06-19
US20220261171A1 (en) 2022-08-18
US11354057B2 (en) 2022-06-07

Similar Documents

Publication Publication Date Title
US11301373B2 (en) Reconstruction of address mapping in a host of a storage system
KR102545189B1 (ko) 스토리지 장치, 스토리지 시스템 및 스토리지 장치의 동작 방법
US10235079B2 (en) Cooperative physical defragmentation by a file system and a storage device
US11361840B2 (en) Storage system having a host that manages physical data locations of storage device
US10229049B2 (en) Storage system that performs host-initiated garbage collection
EP3511814B1 (en) Storage device storing data in order based on barrier command
KR102319189B1 (ko) 스토리지 장치, 이를 포함하는 스토리지 시스템 및 스토리지 장치의 동작 방법
US20160196216A1 (en) Mapping table managing method and associated storage system
CN110389720B (zh) 存储装置及其操作方法
US20200218451A1 (en) Storage device having dual access procedures
CN111373383B (zh) 存储器高速缓存管理
US20150220275A1 (en) Method for operating nonvolatile storage device and method for operating computing device accessing nonvolatile storage device
KR20200050169A (ko) 스토리지 장치, 스토리지 시스템 및 스토리지 장치의 동작 방법
KR20190086341A (ko) 배리어 커맨드에 기초하여 데이터를 순서대로 저장하는 스토리지 장치
CN113760794A (zh) 存储装置和操作存储装置的方法
KR20200079852A (ko) 메모리 시스템 및 그것의 동작방법
KR20210128780A (ko) 메모리 컨트롤러 및 이를 포함하는 저장 장치
JP2021047781A (ja) メモリシステム
EP3910464A1 (en) Memory device, storage device including the same, and method of operating the storage device
US12001709B2 (en) Storage devices and operating methods of storage controllers
US20240070033A1 (en) Storage device including nonvolatile memory device and operating method of storage device
KR102482901B1 (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
GRNT Written decision to grant