KR102369402B1 - 스토리지 장치, 이의 동작 방법 및 스토리지 장치를 포함하는 스토리지 시스템 - Google Patents

스토리지 장치, 이의 동작 방법 및 스토리지 장치를 포함하는 스토리지 시스템 Download PDF

Info

Publication number
KR102369402B1
KR102369402B1 KR1020170121184A KR20170121184A KR102369402B1 KR 102369402 B1 KR102369402 B1 KR 102369402B1 KR 1020170121184 A KR1020170121184 A KR 1020170121184A KR 20170121184 A KR20170121184 A KR 20170121184A KR 102369402 B1 KR102369402 B1 KR 102369402B1
Authority
KR
South Korea
Prior art keywords
volatile memory
erase
addresses
command
program command
Prior art date
Application number
KR1020170121184A
Other languages
English (en)
Other versions
KR20190032839A (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 KR1020170121184A priority Critical patent/KR102369402B1/ko
Priority to US15/986,157 priority patent/US10613765B2/en
Priority to SG10201805221RA priority patent/SG10201805221RA/en
Priority to CN201811070959.7A priority patent/CN109521950B/zh
Publication of KR20190032839A publication Critical patent/KR20190032839A/ko
Application granted granted Critical
Publication of KR102369402B1 publication Critical patent/KR102369402B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1456Hardware arrangements for backup
    • 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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1469Backup restoration techniques
    • 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
    • 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
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication 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/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/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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • 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/1016Performance improvement
    • G06F2212/1024Latency reduction
    • 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/7208Multiple device management, e.g. distributing data over multiple flash devices
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • G11C16/0483Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series

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)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Read Only Memory (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

스토리지 장치, 이의 구동 방법 및 스토리지 장치를 포함하는 스토리지 시스템이 제공된다. 스토리지 장치는 복수의 제1 주소로 구분되고, 상기 복수의 제1 주소가 제1 할당 정책에 의하여 할당된 복수의 제1 뱅크를 포함하는 제1 비휘발성 메모리, 상기 제1 주소와 대응하는 복수의 제2 주소로 구분되고, 상기 복수의 제2 주소가 상기 제1 할당 정책과 다른 제2 할당 정책에 의하여 할당된 복수의 제2 뱅크를 포함하는 제2 비휘발성 메모리로, 상기 제2 비휘발성 메모리는 상기 복수의 제1 주소에 저장된 데이터를 미러링하여 상기 복수의 제2 주소에 저장하는 제2 비휘발성 메모리, 및 호스트로부터 명령을 제공받아 상기 제1 비휘발성 메모리와 상기 제2 비휘발성 메모리를 제어하는 컨트롤러를 포함하되, 상기 컨트롤러는, 상기 호스트로부터 제공된 읽기 명령을 상기 제1 비휘발성 메모리와 상기 제2 비휘발성 메모리로 동시에 제공하고, 상기 읽기 명령에 기초하여 상기 제1 비휘발성 메모리와 상기 제2 비휘발성 메모리 중 먼저 제공한 데이터를 상기 호스트로 출력한다.

Description

스토리지 장치, 이의 동작 방법 및 스토리지 장치를 포함하는 스토리지 시스템{STORAGE DEVICE, METHOD FOR OPERATING THE SAME STORAGE SYSTEM INCLUDING THE STORAGE DEVICE}
본 발명은 스토리지 장치, 이의 동작 방법 및 스토리지 장치를 포함하는 스토리지 시스템에 관한 것이다.
일반적으로 반도체 메모리 장치는 전원의 공급이 중단됨에 따라 저장된 정보가 소멸되는 휘발성 메모리 장치(volatile memory device)와 전원의 공급이 중단되더라도 저장된 정보를 계속 유지할 수 있는 비휘발성 메모리 장치(nonvolatile memory device)로 구분된다. 최근 널리 사용되고 있는 비휘발성 메모리 장치로 NAND 플래시 장치가 있다.
사용자는 스토리지 장치에 읽기, 프로그램(program), 이레이즈(erase) 명령을 제공한다. 스토리지 장치는 사용자에 요청에 응답하여 데이터를 제공하거나, NAND 플래시에 데이터를 저장하거나, 저장된 데이터를 삭제한다. 읽기, 프로그램, 이레이즈 명령에 대한 응답 레이턴시(latency)를 줄이기 위해 다양한 스토리지 장치들의 구동 방법이 제안되고 있다.
본 발명이 해결하고자 하는 기술적 과제는 미러링된 데이터를 각각 저장하는 비휘발성 메모리 장치를 포함하는 스토리지 장치를 제공하는 것이다.
본 발명이 해결하고자 하는 기술적 과제는 미러링된 데이터를 각각 저장하는 비휘발성 메모리 장치를 포함하는 스토리지 장치의 동작 방법을 제공하는 것이다.
본 발명이 해결하고자 하는 다른 기술적 과제는 미러링된 데이터를 각각 저장하는 스토리지 장치를 포함하는 스토리지 시스템을 제공하는 것이다.
본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
상기 기술적 과제를 달성하기 위한 본 발명의 몇몇 실시예에 따른 스토리지 장치는, 복수의 제1 주소로 구분되고, 상기 복수의 제1 주소가 제1 할당 정책에 의하여 할당된 복수의 제1 뱅크를 포함하는 제1 비휘발성 메모리, 상기 제1 주소와 대응하는 복수의 제2 주소로 구분되고, 상기 복수의 제2 주소가 상기 제1 할당 정책과 다른 제2 할당 정책에 의하여 할당된 복수의 제2 뱅크를 포함하는 제2 비휘발성 메모리로, 상기 제2 비휘발성 메모리는 상기 복수의 제1 주소에 저장된 데이터를 미러링하여 상기 복수의 제2 주소에 저장하는 제2 비휘발성 메모리, 및 호스트로부터 명령을 제공받아 상기 제1 비휘발성 메모리와 상기 제2 비휘발성 메모리를 제어하는 컨트롤러를 포함하되, 상기 컨트롤러는, 상기 호스트로부터 제공된 읽기 명령을 상기 제1 비휘발성 메모리와 상기 제2 비휘발성 메모리로 동시에 제공하고, 상기 읽기 명령에 기초하여 상기 제1 비휘발성 메모리와 상기 제2 비휘발성 메모리 중 먼저 제공한 데이터를 상기 호스트로 출력한다.
상기 기술적 과제를 달성하기 위한 본 발명의 몇몇 실시예에 따른 스토리지 시스템은, 복수의 제1 주소로 구분되고, 상기 복수의 제1 주소가 제1 할당 정책에 의하여 할당된 복수의 제1 비휘발성 메모리를 포함하는 제1 스토리지 장치, 상기 제1 주소와 대응하는 복수의 제2 주소로 구분되고, 상기 복수의 제2 주소가 상기 제1 할당 정책과 다른 제2 할당 정책에 의하여 할당된 복수의 제2 비휘발성 메모리를 포함하는 제2 스토리지 장치로, 상기 제2 스토리지 장치는 상기 복수의 제1 주소에 저장된 데이터를 미러링하여 상기 복수의 제2 주소에 저장하는 제2 스토리지 장치, 및 상기 제1 스토리지 장치와 상기 제2 스토리지 장치를 제어하는 호스트를 포함하되, 상기 컨트롤러는 상기 제1 스토리지 장치와 상기 제2 스토리지 장치를 대상으로 동시에 읽기 요청을 제공하고, 상기 제1 스토리지 장치와 상기 제2 스토리지 장치 중 먼저 완료된 데이터를 출력한다.
상기 기술적 과제를 달성하기 위한 본 발명의 몇몇 실시예에 따른 복수의 제1 주소로 구분되고, 상기 복수의 제1 주소가 제1 할당 정책에 의하여 할당된 복수의 제1 뱅크를 포함하는 제1 비휘발성 메모리와, 상기 제1 주소와 대응하는 복수의 제2 주소로 구분되고, 상기 복수의 제2 주소가 상기 제1 할당 정책과 다른 제2 할당 정책에 의하여 할당된 복수의 제2 뱅크를 포함하는 제2 비휘발성 메모리로, 상기 제2 비휘발성 메모리는 상기 복수의 제1 주소에 저장된 데이터를 미러링하여 상기 복수의 제2 주소에 저장하는 제2 비휘발성 메모리를 제공하고, 호스트로부터 제공된 읽기 요청을 상기 제1 비휘발성 메모리와 상기 제2 비휘발성 메모리로 동시에 제공하고, 상기 제1 비휘발성 메모리와 상기 제2 비휘발성 메모리 중 먼저 제공된 데이터를 상기 호스트로 출력하는 것을 포함한다.
상기 기술적 과제를 달성하기 위한 본 발명의 몇몇 실시예에 따른 스토리지 장치는, 제1 데이터를 저장하는 제1 비휘발성 메모리, 상기 제1 데이터가 미러링된 제2 데이터를 저장하는 제2 비휘발성 메모리, 제1 시점에 상기 제1 비휘발성 메모리와 상기 제2 비휘발성 메모리로 읽기 명령을 동시에 제공하는 컨트롤러를 포함하고, 상기 제1 비휘발성 메모리와 상기 제2 비휘발성 메모리 중 상기 읽기 명령에 의하여 먼저 제공된 데이터를 호스트로 제공한다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
도 1은 본 발명의 몇몇 실시예에 따른 스토리지 장치를 설명하기 위한 블록도이다.
도 2는 도 1의 스토리지 장치를 설명하기 위한 블록도이다.
도 3은 도 1의 컨트롤러를 설명하기 위한 블록도이다.
도 4a는 제1 비휘발성 메모리에 포함된 복수의 제1 뱅크에 할당된 주소를 설명하기 위한 개념도이다.
도 4b는 제2 비휘발성 메모리에 포함된 복수의 제2 뱅크에 할당된 주소를 설명하기 위한 개념도이다.
도 5는 본 발명의 몇몇 실시예에 따른 스토리지 장치의 동작을 설명하기 위한 순서도이다.
도 6는 본 발명의 몇몇 실시예에서 제1 비휘발성 메모리와 제2 비휘발성 메모리에 데이터 읽기 요청이 제공되는 경우 컨트롤러의 동작을 설명하기 위한 개념도이다.
도 7a는 제1 비휘발성 메모리에 데이터 읽기 요청에 따라 접근되는 주소 및 뱅크를 설명하기 위한 개념도이다.
도 7b는 본 발명의 몇몇 실시예에서 제2 비휘발성 메모리에 데이터 읽기 요청에 따라 접근되는 주소 및 뱅크를 설명하기 위한 개념도이다.
도 8은 본 발명의 몇몇 실시예에 따른 스토리지 장치의 동작을 설명하기 위한 타이밍도이다.
도 9는 본 발명의 몇몇 실시예에 따른 스토리지 장치의 동작을 설명하기 위한 순서도이다.
도 10a 도 10b는 본 발명의 몇몇 실시예에서 제1 비휘발성 메모리와 제2 비휘발성 메모리의 IPC(Inter-Process Communication)을 설명하기 위한 개념도이다.
도 11은 본 발명의 몇몇 실시예에서 제1 비휘발성 메모리와 제2 비휘발성 메모리의 동작 시간 동기화를 설명하기 위한 블록도이다.
도 12a 및 도 12b는 본 발명의 몇몇 실시예에서 제1 비휘발성 메모리와 제2 비휘발성 메모리의 동작 시간 동기화를 설명하기 위한 테이블이다.
도 13은 본 발명의 몇몇 실시예에서 제1 비휘발성 메모리와 제2 비휘발성 메모리의 이레이즈/프로그램 동작을 설명하기 위한 순서도이다.
도 14는 본 발명의 몇몇 실시예에 따른 스토리지 시스템을 설명하기 위한 블록도이다.
이하에서 도 1 내지 도 13을 참조하여 본 발명의 몇몇 실시예에 따른 스로리지 장치 및 이를 포함하는 스토리지 시스템에 관하여 설명한다.
도 1은 본 발명의 몇몇 실시예에 따른 스토리지 장치를 설명하기 위한 블록도이고, 도 2는 도 1의 스토리지 장치를 더욱 자세하게 도시한 블록도이다.
도 1 및 도 2를 참조하면, 본 발명의 몇몇 실시예에 따른 스토리지 장치(100)는 컨트롤러(110), 제1 비휘발성 메모리(120_1) 및 제2 비휘발성 메모리(120_2)를 포함할 수 있다.
스토리지 장치(100)는 호스트와 연결될 수 있다. 스토리지 장치(100)는 호스트로부터 읽기(READ), 프로그램(PROGRAM) 및 이레이즈(ERASE) 명령을 제공받고, 각각의 명령에 대응하는 동작을 수행할 수 있다.
스토리지 장치(100)는 예를 들어, 제1 비휘발성 메모리(120_1) 및 제2 비휘발성 메모리(120_2)로 구성된 솔리드 스테이트 드라이브(Solid State Drive, SSD)일 수 있다.
이와는 달리, 스토리지 장치(100)는 PC 카드(PCMCIA, personal computer memory card international association), 컴팩트 플래시 카드(CF), 스마트 미디어 카드(SM, SMC), 메모리 스틱, 멀티미디어 카드(MMC, RS-MMC, MMCmicro), SD 카드(SD, miniSD, microSD, SDHC), 유니버설 플래시 기억장치(UFS) 등과 같은 메모리 카드일 수 있으나 이에 제한되는 것은 아니다.
컨트롤러(110)는 제1 비휘발성 메모리(120_1)와 제2 비휘발성 메모리(120_2)의 동작을 제어할 수 있다. 컨트롤러(110)는 호스트로부터 제공된 명령에 기초하여 제1 비휘발성 메모리(120_1)와 제2 비휘발성 메모리(120_2)를 제어할 수 있다. 뒤에서 설명하는 것과 같이 제1 비휘발성 메모리(120_1)와 제2 비휘발성 메모리(120_2)는 서로 미러링(mirroring)되어 있다. 따라서 컨트롤러(110)는 호스트로부터 제공받은 명령을 제1 비휘발성 메모리(120_1)와 제2 비휘발성 메모리(120_2)에 동일하게 제공할 수 있다.
도 3은 도 1의 컨트롤러를 설명하기 위한 블록도이다.
도 3을 참조하면, 컨트롤러(110)는 명령 큐(111), 명령 디코더(112) 및 주소 할당 맵(113)을 포함할 수 있다.
명령 큐(111)는 컨트롤러(110)가 호스트로부터 수신한 명령과, 명령이 액세스해야 하는 제1 및 제2 비휘발성 메모리(120_1, 120_2) 상의 주소를 일시적으로 저장할 수 있다. 따라서 명령 큐(111)는 기억 소자를 포함할 수 있다. 명령 큐(111)는 저장된 명령과 주소를 명령 디코더(112)로 제공할 수 있다.
명령 디코더(112)는 명령 큐(111)로부터 제공된 명령과 주소를 디코딩할 수 있다. 명령 디코더(112)는 디코딩된 명령과 주소를 주소 할당 맵(113)으로 제공할 수 있다.
호스트는 컨트롤러(110)에 대하여 제1 및 제2 비휘발성 메모리(120_1, 120_2)에 접근하기 위한 논리 주소(logical address)를 제공할 수 있다. 상기 논리 주소는 예를 들어, LPN(Logical Page Number)를 포함할 수 있다.
컨트롤러(110)는 호스트로부터 제공받은 논리 주소를 실제 제1 메모리 셀(130)과 제2 메모리 셀(140)에 접근하기 위한 물리 주소로 변환할 필요가 있다. 상기 물리 주소는 예를 들어 PPN(Physical Page Number)를 포함할 수 있다.
이를 위해, 명령 디코더(112)는 주소 할당 맵(113)을 이용하여 호스트로부터 제공된 논리 주소를 물리 주소로 변환하고, 변환된 물리 주소를 제1 및 제2 비휘발성 메모리(120_1, 120_2)로 제공할 수 있다.
주소 할당 맵(113)은 호스트로부터 제공된 논리 주소를 물리 주소로 변환하는데 이용하기 위한 제1 맵(114)과 제2 맵(115)을 포함할 수 있다.
제1 맵(114)은 논리 주소에 대한 제1 비휘발성 메모리(120_1)의 물리 주소 사이의 관계가 예를 들어 테이블 형식으로 정의되어 있을 수 있다. 마찬가지로 제2 맵(115)은 논리 주소에 대한 제2 비휘발성 메모리(120_2)의 물리 주소 사이의 관계가 테이블 형식으로 정의되어 있을 수 있다.
명령 디코더(112)는 주소 할당 맵(113)에 호스트로부터 제공받은 제1 주소(Addr1)를 제공한다. 상기 제1 주소(Addr1)는 앞서 설명한 것과 같이 제1 비휘발성 메모리(120_1) 및 제2 비휘발성 메모리(120_2)에 액세스하기 위한 논리 주소일 수 있다.
주소 할당 맵(113)은 제1 맵(114)을 이용하여 제1 주소(Addr1)를 제2 주소(Addr2)로 변환할 수 있다. 제2 주소(Addr2)는 제1 비휘발성 메모리(120_1)에 접근하기 위한 물리 주소일 수 있다. 이와 유사하게, 주소 할당 맵(113)은 제2 맵(115)을 이용하여 제1 주소(Addr1)를 제3 주소(Addr3)로 변환할 수 있다. 제3 주소(Addr3)는 제2 비휘발성 메모리(120_2)에 접근하기 위한 물리 주소일 수 있다.
명령 디코더(112)는 주소 할당 맵(113)으로부터 제공받은 제2 주소(Addr2) 및 제3 주소(Addr3)를 제1 비휘발성 메모리(120_1)와 제2 비휘발성 메모리(120_2)에 제공할 수 있다.
정리하면, 컨트롤러(110)는, 호스트로부터 제공받은 데이터 액세스 요청에 포함된 제1 주소(Addr1)를 제1 비휘발성 메모리(120_1)에 접근하기 위한 제2 주소(Addr2)로 변환하고, 제1 주소(Addr1)를 제2 비휘발성 메모리(120_2)에 접근하기 위한 제3 주소(Addr3)로 변환할 수 있다.
컨트롤러(110)는 호스트로부터 제공받은 데이터 액세스 요청을 제1 비휘발성 메모리(120_1)와 제2 비휘발성 메모리(120_2)에 동시에 제공할 수 있다. 예를 들어 호스트가 제1 주소(Addr1)에 대한 데이터 읽기 명령을 제공한 경우, 컨트롤러(110)는 제1 비휘발성 메모리(120_1)로 제2 주소(Addr2)에 대한 읽기 명령을 제공하고, 제2 비휘발성 메모리(120_2)로 제3 주소(Addr3)에 대한 읽기 명령을 제공한다. 컨트롤러(110)는 제1 비휘발성 메모리(120_1)와 제2 비휘발성 메모리에 대한 읽기 명령을 동시에 제공하고, 제1 비휘발성 메모리(120_1)와 제2 비휘발성 메모리(120_2) 중 먼저 완료되어 제공된 리드 데이터를 호스트로 반환할 수 있다.
다시 도 2를 참조하면, 제1 비휘발성 메모리(120_1)는 제1 NVM 컨트롤러(125_1) 및 제1 메모리 셀(130)을 포함할 수 있다. 제1 NVM 컨트롤러(125_1)는 컨트롤러(110)로부터 제공받은 명령에 기초하여 제1 메모리 셀(130)의 동작을 제어할 수 있다. 제1 NVM 컨트롤러(125_1)는 제1 버스(135_1)에 연결될 수 있다.
제1 메모리 셀(130)은 예를 들어, NAND 플래시 메모리 셀을 포함할 수 있으나 이에 제한되는 것은 아니다. 즉, 제1 메모리 셀(130)은 반도체 소자 상에 데이터를 비일시적으로 저장할 수 있는 메모리 셀을 포함할 수 있으며, 동일한 뱅크 상에서 리드, 프로그램, 이레이즈 동작의 상호 간섭으로 인한 지연이 발생할 수 있는 메모리 소자를 포함하면 충분하다.
이하에서, 제1 메모리 셀(130)은 NAND 플래시 메모리 셀을 포함하는 것으로 설명한다. 도 2에 명시적으로 도시되지는 않았지만, 제1 메모리 셀(130)은 복수의 NAND 플래시 메모리 칩, 즉 하나의 패키지로 패키징된 집적된 메모리 칩으로 구성될 수 있으나 이에 제한되는 것은 아니다. 제1 메모리 셀(130)은 하나의 NAND 플래시 메모리 칩을 포함할 수도 있다.
제1 메모리 셀(130)이 NAND 플래시 메모리 셀을 포함하는 경우, 제1 메모리 셀(130)은 SLC(Single Level Cell)을 포함할 수 있다. SLC는 셀 하나 당 1비트를 저장하는 방식으로, 하나의 메모리 셀 당 저장 가능한 용량은 MLC(Multi Level Cell) 또는 TLC(Triple Level Cell) 보다 적으나 데이터 접근에 필요한 레이턴시(latency)는 MLC 및 TLC 보다 낮을 수 있다. 다만 제1 메모리 셀(130)이 SLC로 제한되는 것은 아니다.
제1 비휘발성 메모리(120_1)는 복수의 뱅크(130_1, 130_2, … 130_n)을 포함할 수 있다. 복수의 뱅크(130_1, 130_2, … 130_n)는 컨트롤러(110)에 의하여 읽기, 프로그램 또는 이레이즈 동작이 수행되는 기본적인 주소의 단위일 수 있다. 이에 관한 자세한 설명은 후술한다.
제2 비휘발성 메모리(120_2)는 제2 NVM 컨트롤러(125_2) 및 제2 메모리 셀(140)을 포함할 수 있다. 제2 NVM 컨트롤러(125_2)는 컨트롤러(110)로부터 제공받은 명령에 기초하여 제2 메모리 셀(140)의 동작을 제어할 수 있다. 제2 NVM 컨트롤러(125_2)는 제2 버스(135_2)에 연결될 수 있다.
제2 메모리 셀(140)은 제1 메모리 셀(130)과 동일한 구성을 포함할 수 있다. 따라서 제2 메모리 셀(140)은 NAND 플래시 메모리 셀과 같이 반도체 소자 상에 데이터를 비일시적으로 저장할 수 있는 메모리 셀을 포함할 수 있다. 마찬가지로 제2 메모리 셀(140)은 NAND 플래시 셀에 제한되는 것은 아니며, 동일한 뱅크 상에서 리드, 프로그램, 이레이즈 동작의 상호 간섭으로 인한 지연이 발생할 수 있는 메모리 소자를 포함하면 충분하다.
다만 예시적으로 제1 메모리 셀(130)과 마찬가지로 이하에서 제2 메모리 셀(140)은 NAND 플래시 메모리 셀로 설명한다.
제1 메모리 셀(130)과 제2 메모리 셀(140)은 서로 미러링될 수 있다. 따라서 제1 메모리 셀(130)과 제2 메모리 셀(140)은 동일한 데이터를 저장할 수 있다. 호스트로부터 제공된 명령 및 주소에 의하여 컨트롤러(110)는 동일한 데이터가 저장된 제1 메모리 셀(130)과 제2 메모리 셀(140) 상의 영역을 접근하고, 제1 메모리 셀(130)과 제2 메모리 셀(140)에 대하여 동일한 명령을 수행할 수 있다.
도 4a는 제1 비휘발성 메모리에 포함된 복수의 제1 뱅크에 할당된 주소를 설명하기 위한 개념도이고, 도 4b는 제2 비휘발성 메모리에 포함된 복수의 제2 뱅크에 할당된 주소를 설명하기 위한 개념도이다.
먼저 도 4a를 참조하면, 제1 비휘발성 메모리(120_1)는 복수의 뱅크(130_0, 130_1, 130_2, 130_3)를 포함할 수 있다. 설명의 편의를 위해, 예시적으로 제1 비휘발성 메모리(120_1)가 0번 뱅크(130_0)으로부터 3번 뱅크(130_3) 까지의 네 개의 뱅크로 구성되는 것으로 도시되었으나 이에 제한되지 않음은 자명하다. 제1 비휘발성 메모리(120_1)는 4개 미만 또는 4개보다 더 많은 수의 뱅크를 포함할 수도 있다.
또한, 제1 비휘발성 메모리(120_1)는 복수의 로우(R1_0~R1_4)로 구분될 수 있다. 복수의 뱅크(130_0, 130_1, 130_2, 130_3)는 복수의 로우(R1_0~R1_4)마다 할당된 하나의 논리적 주소(0~19)를 포함할 수 있다.
예를 들어, 제1 비휘발성 메모리(120_1)의 0번 뱅크(130_0)에는, 0, 4, 8, 12, 16번의 주소가 포함된다. 1번 뱅크(130_1)에는 1, 5, 9, 13, 17번의 주소가 포함된다. 2번 뱅크(130_2)에는 2, 6, 10, 14, 18번의 주소가 포함된다. 3번 뱅크(130_3)에는 3, 7, 11, 15, 19번의 주소가 포함된다. 이와 같이, 제1 비휘발성 메모리(120_1)의 논리적 주소들은 복수의 뱅크(130_0) 내에 순차적으로 할당될 수 있다.
복수의 뱅크(130_0~130_3) 내에 할당된 상기 논리적 주소 중, 4번 주소를 물리적 주소로 나타내면 예를 들어, 0번 뱅크의 1번 로우(BANK0, #1)로 나타낼 수 있다. 다른 예로, 11번 주소를 물리적 주소로 나타낸다면 3번 뱅크의 2번 로우(BANK3, #2)로 나타낼 수 있다.
위에서 설명한 것과 같이, 제1 비휘발성 메모리(120_1)는 복수의 뱅크(130_0~130_3) 단위로 읽기, 프로그램 및 이레이즈 명령을 수행할 수 있다. 만약 0번 및 4번 주소에 대한 읽기 명령이 호스트로부터 제공된 경우, 제1 비휘발성 메모리(120_1)는 한번에 이를 처리하지 못한다. 즉, 제1 비휘발성 메모리(120_1)는 0번 뱅크(130_0)에 대하여 두 번의 데이터 사이클에 걸쳐 읽어들인 데이터를 호스트로 제공해야 한다. 이를 뱅크 콜리전(bank collision)이라 한다.
이와는 반대로 호스트로부터 제1 비휘발성 메모리(120_1)에 0번 주소와 1번 주소에 저장된 데이터에 대한 읽기 명령이 제공되었다고 가정한다. 0번 주소는 0번 뱅크(130_0)에 할당되고, 1번 주소는 1번 뱅크(130_1)에 할당되므로, 제1 비휘발성 메모리(120_1)는 0번 주소와 1번 주소에 저장된 데이터를 한번의 데이터 사이클만에 읽어들여 호스트로 제공할 수 있다.
통상의 NAND 플래시 메모리 장치에서, 메모리 셀이 읽기 및 프로그램 요청을 페이지(page) 단위로 처리하는 것은 널리 알려져 있다. 따라서 본 명세서에서 기재된 것과 같이 제1 및 제2 비휘발성 메모리(120_1, 120_2)에서 뱅크 단위로 읽기 요청을 처리하는 것은, 페이지 단위로 읽기 요청을 처리하는 것으로 해석될 수 있다. 다만 본 발명이 이에 제한되는 것은 아니며, 제1 및 제2 비휘발성 메모리(120_1, 120_2)가 포함하는 복수의 뱅크는 복수의 페이지를 아울러 지칭하는 것일 수도 있다.
도 4b를 참조하면, 제2 비휘발성 메모리(120_2)는 제1 비휘발성 메모리(120_1)와 유사한 구조를 가질 수 있다. 이는 제2 비휘발성 메모리(120_2)가 제1 비휘발성 메모리(120_1)에 저장된 데이터를 미러링하여 저장하는 것으로부터 자명하다.
구체적으로, 제2 비휘발성 메모리(120_2)는 제1 비휘발성 메모리(120_1)와 같은 수의 뱅크를 포함하며, 뱅크에 할당된 논리적 주소의 수 또한 동일하다. 다만 동일한 뱅크에 논리적 주소를 할당하기 위한 할당 정책이 다를 뿐이다.
도 4b에서 설명의 편의를 위해, 제2 비휘발성 메모리(120_2)는 예시적으로 0번 뱅크(140_0)으로부터 3번 뱅크(140_3) 까지의 네 개의 뱅크로 구성되는 것으로 도시되었으나 이에 제한되지 않음은 자명하다. 제2 비휘발성 메모리(120_2)는 4개 미만의 뱅크 또는 4개보다 많은 수의 뱅크를 포함할 수도 있다.
제2 비휘발성 메모리(120_2)는 복수의 로우(R2_0~R2_4)로 구분될 수 있다. 복수의 뱅크(140_0, 140_1, 140_2, 140_3)는 복수의 로우(R2_0~R2_4)마다 할당된 하나의 논리적 주소(0~19)를 포함할 수 있다.
예를 들어, 제2 비휘발성 메모리(120_2)의 0번 뱅크(140_0)에는 0.7, 10, 13, 16번의 주소가 포함된다. 1번 뱅크(140_1)에는 1, 4, 11, 14, 17번의 주소가 포함된다. 2번 뱅크(140_2)에는 2, 5, 8, 15, 18번의 주소가 포함된다. 3번 뱅크(140_3)에는 3, 6, 9, 12, 19번의 주소가 포함된다.
복수의 뱅크(140_0~140_3) 내에 할당된 상기 논리적 주소 중, 4번 주소를 물리적 주소로 나타내면, 예를 들어, 1번 뱅크의 1번 로우(BANK1, #1)와 같이 나타낼 수 있다. 다른 예로, 12번 주소를 물리적 주소로 나타낸다면 3번 뱅크의 3번 로우(BANK3, #3)로 나타낼 수 있다.
제1 비휘발성 메모리(120_1)의 복수의 뱅크(130_0~130_3)에 할당된 논리적 주소와 비교할 때, 제2 비휘발성 메모리(120_2)의 논리적 주소들은 몇 개씩 인접한 뱅크로 쉬프트되어 복수의 뱅크(140_0~140_3)에 할당될 수 있다.
구체적으로, 제2 비휘발성 메모리(120_2)의 0번 로우(R2_0)에 해당하는 주소들(0~3번 주소)은 0번 내지 3번 뱅크(140_0~140_3)에 순차적으로 할당된다. 1번 로우(R2_1)에 해당하는 주소들(4번~7번 주소)은 하나씩 인접한 뱅크들로 쉬프트되어 할당된다. 2번 로우 (R2_2)에 해당하는 주소들(8번~11번)은 둘씩 인접한 뱅크들로 쉬프트되어 할당된다. 3번 로우(R2_3)에 해당하는 주소들(13~14)은 세 개씩 인접한 뱅크들로 쉬프트되어 할당된다. 이를 일반화하면, 비휘발성 메모리가 n개의 뱅크를 포함할 때 m번 로우에 속하는 주소들은 m mod n(mod는 나머지 연산) 개의 뱅크만큼 쉬프트되어 할당된다.
이와 같이 제2 비휘발성 메모리(120_2)에 포함된 주소들은 제1 비휘발성 메모리(120_1)의 주소들이 복수의 뱅크들(130_1~130_3)에 할당되는 것과 다른 방식으로 복수의 뱅크들(140_1~140_3)에 할당될 수 있다.
도 4b에 기초하여 위와 같이 설명한 제2 비휘발성 메모리(120_2)에 포함된 주소들의 뱅크 할당 정책을 설명하였으나 본 발명이 이에 제한되는 것은 아니다. 제2 비휘발성 메모리(120_2)에 포함된 주소들은 시퀀셜리티(sequentiality)를 유지하면서 상기와 다른 정책에 따라 복수의 뱅크들(140_0~140_3)에 할당될 수 있다.
제1 비휘발성 메모리(120_1)와 제2 비휘발성 메모리(120_2)가 이와 같이 서로 다른 주소들의 뱅크 할당 정책을 갖는 것은 본 발명의 몇몇 실시예에 따른 스토리지 장치의 동작 방법과 관련이 있다. 스토리지 장치의 동작을 이하 도 5 내지 도 7b를 이용하여 더욱 자세하게 설명한다.
도 5는 본 발명의 몇몇 실시예에 따른 스토리지 장치의 동작을 설명하기 위한 순서도이고, 도 6는 본 발명의 몇몇 실시예에서 제1 비휘발성 메모리와 제2 비휘발성 메모리에 데이터 읽기 요청이 제공되는 경우 컨트롤러의 동작을 설명하기 위한 개념도이다. 도 7a는 제1 비휘발성 메모리에 데이터 읽기 요청에 따라 접근되는 주소 및 뱅크를 설명하기 위한 개념도이고, 도 7b는 본 발명의 몇몇 실시예에서 제2 비휘발성 메모리에 데이터 읽기 요청에 따라 접근되는 주소 및 뱅크를 설명하기 위한 개념도이다.
먼저 도 5를 참조하면, 본 발명의 몇몇 실시예에 따른 스토리지 장치(100)는 제1 비휘발성 메모리(120_1)와 제2 비휘발성 메모리(120_2)에 동시에 읽기 요청을 제공하여(S110), 제1 비휘발성 메모리(120_1)로부터 먼저 수신한 데이터를 호스트로 제공하고(S120), 제2 비휘발성 메모리(120_2)로부터 나중에 수신한 데이터는 무시(S130)할 수 있다.
일반적으로, 데이터 미러링의 경우 데이터의 백업(backup) 목적으로 이용되는 것이 대부분이다. 본 발명의 몇몇 실시예에 따른 스토리지 장치의 경우, 제1 비휘발성 메모리(120_1)와, 제1 비휘발성 메모리(120_1)를 미러링하는 제2 비휘발성 메모리(120_2)에 동시에 읽기 명령을 제공함으로써(S110), 읽기 요청에 따른 응답 속도(latency)를 개선할 수 있다.
도 6을 참조하면, 호스트로부터 컨트롤러(110)가 0번, 4번, 8번, 12번, 16번의 논리적 주소에 대한 읽기 명령을 수신한 경우에 대해 명령 디코더(112) 및 주소 할당 맵(113)의 동작이 도시된다.
명령 디코더(112)는 주소 할당 맵(113)으로 0번, 4번, 8번, 12번 및 16번을 포함하는 제1 주소(Addr1)를 제공한다. 주소 할당 맵(113)은 제1 맵(114)를 이용하여 명령 디코더(112)로부터 제공된 제1 주소(Addr1)로부터 변환된 제2 주소(Addr2)를 명령 디코더(112)로 반환한다. 도 6에서는 예시적으로, 주소 할당 맵(113)이 0번 뱅크의 0번 내지 4번 로우(BANK0, #0~#4)에 해당하는 물리 주소를 반환하는 것이 도시된다.
또한, 주소 할당 맵(113)은 제2 맵(115)를 이용하여 명령 디코더(112)로부터 제공된 제1 주소(Addr1)로부터 변환된 제3 주소(Addr3)를 명령 디코더(112)로 반환한다. 도 6에서는 예시적으로, 주소 할당 맵(113)이 0번 뱅크의 0번 로우(BANK0, #0), 1번 뱅크의 1번 로우(BANK1 #1), 2번 뱅크의 2번 로우(BANK2, #2), 3번 뱅크의 3번 로우(BANK3, #3) 및 0번 뱅크의 4번 로우(BANK0, #4)의 물리 주소를 반환하는 것이 도시된다.
컨트롤러(110)는 주소 할당 맵(113)으로부터 명령 디코더(112)에 제공된 물리 주소에 기초하여 제1 비휘발성 메모리(120_1)와 제2 비휘발성 메모리(120_2)에 접근할 수 있다.
도 7a를 참조하면, 논리적 주소 0번, 4번, 8번, 12번, 16번이 0번 뱅크(130_0)에 할당되어 있는 것이 도시된다. 논리적 주소 0번, 4번, 8번, 12번, 16번에 해당하는 물리적 주소가 0번 뱅크의 0번 내지 4번 로우(BANK0, #0~#4)에 해당하기 때문에, 호스트로부터 읽기 요청에 대하여 적어도 4번의 뱅크 콜리전이 발생한다. 따라서 읽기 요청에 대한 레이턴시가 증가하고, 데이터 패러렐리즘(data parallelism)에 나쁜 영향을 미칠 수 있다.
도 7b를 참조하면, 논리적 주소 0번, 4번, 8번, 12번, 16번이 0번 뱅크 내지 3번 뱅크(130_0~130_3)에 적절히 나누어져 할당된 것이 도시된다. 이 경우 호스트로부터 읽기 요청에 대하여 1번의 뱅크 콜리전만이 발생한다. 만약 제2 비휘발성 메모리(120_2)와 같은 정책으로 논리적 주소를 복수의 뱅크(140_1~140_3)에 할당하였다면, 제1 비휘발성 메모리(120_1)의 경우와 동일한 4번의 뱅크 콜리전이 발생하였을 것이다.
따라서 제2 비휘발성 메모리(120_2)는 호스트로부터 읽기 요청을 먼저 처리하여 컨트롤러(110)로 읽어들인 데이터를 먼저 제공할 수 있다. 컨트롤러(110)는 제2 비휘발성 메모리(120_2)로부터 제공된 데이터를 호스트로 제공할 수 있다. 한편 제1 비휘발성 메모리(120_1)로부터 읽어들인 데이터는 컨트롤러(110)에 의해 무시될 수 있다.
물론, 위와 같은 예시는 제2 비휘발성 메모리(120_2)에 대하여 이상적인 경우로, 호스트로부터 다른 논리적 주소에 대한 읽기 명령을 제공받은 경우에 데이터 레이턴시는 위와 다르게 나타날 수 있다.
그러나, 본 발명의 몇몇 실시예에서, 제1 비휘발성 메모리(120_1)를 미러링하는 제2 비휘발성 메모리(120_2)는, 복수의 뱅크(140_1~140_3)에 대하여 제1 비휘발성 메모리(120_1)와 다른 논리적 주소의 할당 정책을 적용함으로써, 동일한 읽기 요청에 대하여 제1 비휘발성 메모리(120_1)와 같은 횟수의 뱅크 콜리전이 발생하는 경우를 가급적 방지할 수 있다.
따라서, 호스트의 읽기 요청에 대하여 컨트롤러(110)가 제1 비휘발성 메모리(120_1) 또는 제2 비휘발성 메모리(120_2)로부터 먼저 읽어들인 데이터를 반환하는 것이 가능할 수 있다. 즉, 컨트롤러(110)는 제1 비휘발성 메모리(120_1)와 제2 비휘발성 메모리(120_2) 중 뱅크 콜리전이 적게 발생한 것으로부터 수신한 데이터를 호스트에 제공할 수 있다.
호스트의 읽기 요청에 대한 제1 비휘발성 메모리(120_1)와 제2 비휘발성 메모리(120_2)의 레이턴시를 결정하는 것은 상술한 뱅크 콜리전 이외에도 여러가지가 있을 수 있다. 본 발명의 몇몇 실시예에 따른 스토리지 장치는 앞서 수행된 이레이즈 또는 프로그램 요청에 의해 읽기 요청의 처리가 지연되는 것을 설명한다.
도 8은 본 발명의 몇몇 실시예에 따른 스토리지 장치의 동작을 설명하기 위한 타이밍도이다.
도 8을 참조하면, 제1 비휘발성 메모리(120_1)의 0번 뱅크(130_0)와 제2 비휘발성 메모리(120_2)의 0번 뱅크(140_0)에 대한 읽기 요청이 있는 경우가 설명된다. 이 때, 각각의 읽기 요청에 앞서 호스트로부터 이레이즈 또는 프로그램 명령이 스토리지 장치(100)에 제공되고, 스토리지 장치(100)가 이를 처리할 수 있다.
예를 들어, 제2 시점(t2)에 호스트로부터 제1 비휘발성 메모리(120_1)와 제2 비휘발성 메모리(120_2)의 0번 뱅크(130_0, 140_0)에 읽기 요청이 제공되고, 제2 시점(t2)에 제1 비휘발성 메모리(120_1)와 제2 비휘발성 메모리(120_2)가 호스트로부터의 0번 뱅크(130_0, 140_0)에 대한 이레이즈 명령을 처리 중인 경우를 가정한다.
상술한 것과 같이, 제1 비휘발성 메모리(120_1)는 동일한 뱅크에 대한 서로 다른 명령을 동시에 처리할 수 없으므로, 제1 비휘발성 메모리(120_1)는 0번 뱅크에 대한 이레이즈 명령의 처리가 종료될 때까지 0번 뱅크에 대한 읽기 명령을 처리할 수 없다. 제2 비휘발성 메모리(120_2) 또한 동일한 뱅크에 대한 서로 다른 명령을 동시에 처리할 수 없으므로, 제2 비휘발성 메모리(120_2)는 0번 뱅크에 대한 이레이즈 명령의 처리가 종료될 때까지 0번 뱅크에 대한 읽기 명령을 처리할 수 없다.
이와 같이 동일한 뱅크에 대해 앞서 제공된 이레이즈/프로그램 명령에 의해 두 개의 비휘발성 메모리(120_1, 120_2)가 동시에 명령의 처리 종료를 대기하는 상황을 방지하기 위하여, 제1 비휘발성 메모리(120_1)와 제2 비휘발성 메모리(120_2)는 상호 배제적으로 이레이즈/프로그램 명령을 처리할 수 있다. 제1 비휘발성 메모리(120_1)가 0번 뱅크에 대한 이레이즈 명령을 처리하고 있을 때, 제2 비휘발성 메모리(120_2)는 0번 뱅크에 대한 이레이즈 명령을 처리하지 않을 수 있다.
구체적으로, 도 8에 도시된 것과 같이, 제1 시점(t1)에 제1 비휘발성 메모리(120_1)가 이레이즈 명령(C1_0)을 처리하기 시작하여 제2 시점(t2)에 이레이즈 명령(C1_0)의 처리를 완료한다. 제2 비휘발성 메모리(120_2)는 제2 시점(t2)에 이레이즈 명령(C1_1)을 처리하기 시작하여 제3 시점(t3)에 이레이즈 명령(C1_1)의 처리를 완료한다. 여기서 제1 비휘발성 메모리(120_1)와 제2 비휘발성 메모리(120_2)에 제공된 이레이즈 명령(C1_0, C1_1)은 동일한 이레이즈 명령으로, 동일한 논리적 주소에 대한 이레이즈 요청을 포함한다.
호스트로부터의 읽기 명령이 제2 시점(t2)에 제공된 경우, 이레이즈 명령(C1_1)의 처리가 완료되지 않은 제2 비휘발성 메모리(120_2)는 읽기 명령의 처리를 제2 시점(t2)에 개시할 수 없다. 반면에 이레이즈 명령(C1_0)의 처리가 완료된 제1 비휘발성 메모리(120_1)가 읽기 명령의 처리를 먼저 완료할 수 있다.
이하에서는, 제1 비휘발성 메모리(120_1)와 제2 비휘발성 메모리(120_2)가 호스트로부터 제공받은 이레이즈/프로그램 명령을 상호 배제적으로 처리하기 위한 스토리지 장치(100)의 동작을 설명한다.
도 9는 본 발명의 몇몇 실시예에 따른 스토리지 장치의 동작을 설명하기 위한 순서도이다.
도 9를 참조하면, 제1 비휘발성 메모리(120_1)에서 이레이즈/프로그램 명령을 수행 중인지 확인하고(S210), 제1 비휘발성 메모리(120_1)에서 이레이즈/프로그램 명령이 수행 중인 경우 제2 비휘발성 메모리(120_2)는 이레이즈/프로그램 명령을 처리하지 않고 대기하고(S220), 제1 비휘발성 메모리(120_1)에서 이레이즈/프로그램 명령이 수행 중이지 않거나 처리가 끝난 경우 제2 비휘발성 메모리(120_2)는 이레이즈/프로그램 명령을 처리한다(S230).
도 9에서 설명된 제1 비휘발성 메모리(120_1)와 제2 비휘발성 메모리(120_2)의 동작은 예시적인 것이다. 즉 도 9와 같이 제1 비휘발성 메모리(120_1)의 이레이즈/프로그램 명령의 처리 여부를 제2 비휘발성 메모리(120_2)가 확인할 수 있다. 이와는 반대로 제2 비휘발성 메모리(120_2)의 이레이즈/프로그램 명령의 처리 여부를 제1 비휘발성 메모리(120_1)가 확인할 수 있음은 자명하다.
도 10a 도 10b는 본 발명의 몇몇 실시예에서 제1 비휘발성 메모리와 제2 비휘발성 메모리의 IPC(Inter-Process Communication)을 설명하기 위한 개념도이다.
도 10a를 참조하면, 제1 비휘발성 메모리(120_1)가 이레이즈/프로그램 명령을 수행 중인지 여부를 확인하기 위해, 제2 비휘발성 메모리(120_2)는 IPC를 이용할 수 있다. 구체적으로, 제1 NVM 컨트롤러(125_1)와 제2 NVM 컨트롤러(125_2) 간의 채널이 형성되고, 상기 채널을 통해 제1 비휘발성 메모리(120_1) 또는 제2 비휘발성 메모리(120_2)의 이레이즈/프로그램 명령의 수행 여부가 확인될 수 있다.
예를 들어, 제1 비휘발성 메모리(120_1)가 이레이즈/프로그램 명령을 처리 중일 때, 제1 NVM 컨트롤러(125_1)는 제2 NVM 컨트롤러(125_2)로 비지 신호를 제공할 수 있다. 제1 NVM 컨트롤러(125_1)는 이레이즈/프로그램 명령의 처리가 종료될 때 상기 비지 신호의 제공을 종료할 수 있다. 제2 NVM 컨트롤러(125_2)는 제1 NVM 컨트롤러(125_1)로부터 비지 신호가 제공 중인 경우 제1 비휘발성 메모리(120_1)가 이레이즈/프로그램 명령을 처리 중인 것으로 인식하고 상기 이레이즈/프로그램 명령의 처리가 종료될 때까지 대기할 수 있다.
마찬가지로 제2 비휘발성 메모리(120_2)가 이레이즈/프로그램 명령을 처리 중일 때, 제2 NVM 컨트롤러(125_2)는 제1 NVM 컨트롤러(125_1)로 비지 신호를 제공할 수 있다. 제2 NVM 컨트롤러(125_2)는 이레이즈/프로그램 명령의 처리가 종료될 때 상기 비지 신호의 제공을 종료할 수 있다. 제1 NVM 컨트롤러(125_1)는 제2 NVM 컨트롤러(125_2)로부터 비지 신호가 제공 중인 경우 제2 비휘발성 메모리(120_2)가 이레이즈/프로그램 명령을 처리 중인 것으로 인식하고 상기 이레이즈/프로그램 명령의 처리가 종료될 때까지 대기할 수 있다.
위에서 설명한 제1 비휘발성 메모리(120_1)와 제2 비휘발성 메모리(120_2)의 IPC는 컨트롤러(110)를 거치지 않고 수행될 수 있으나 이에 제한되는 것은 아니다.
도 10b를 참조하면, 스토리지 장치(100)는 IPC를 위한 내부 메모리(150)를 더 포함할 수 있다. 내부 메모리(150)는 제1 비휘발성 메모리(120_1) 또는 제2 비휘발성 메모리(120_2)의 이레이즈/프로그램 명령 처리 여부를 나타내는 비지 플래그를 저장할 수 있다.
예를 들어, 제1 비휘발성 메모리(120_1)가 이레이즈/프로그램 명령을 처리 중일 때, 제1 NVM 컨트롤러(125_1)는 비지 플래그를 '1'로 설정할 수 있다. 제1 NVM 컨트롤러(125_1)는 이레이즈/프로그램 명령의 처리를 종료할 때 비지 플래그를 '0'으로 설정할 수 있다. 제2 NVM 컨트롤러(125_2)는 이레이즈/프로그램 명령을 처리하기에 앞서 비지 플래그를 확인할 수 있다. 제2 NVM 컨트롤러(125_2)는 비지 플래그가 '1'로 설정된 경우 제1 비휘발성 메모리(120_1)가 이레이즈/프로그램 명령을 처리 중인 것으로 인식하고 상기 이레이즈/프로그램 명령의 처리가 종료될 때까지 대기할 수 있다.
예를 들어, 제2 비휘발성 메모리(120_2)가 이레이즈/프로그램 명령을 처리 중일 때, 제2 NVM 컨트롤러(125_1)는 비지 플래그를 '1'로 설정할 수 있다. 제2 NVM 컨트롤러(125_2)는 이레이즈/프로그램 명령의 처리를 종료할 때 비지 플래그를 '0'으로 설정할 수 있다. 제1 NVM 컨트롤러(125_1)는 이레이즈/프로그램 명령을 처리하기에 앞서 비지 플래그를 확인할 수 있다. 제1 NVM 컨트롤러(125_1)는 비지 플래그가 '1'로 설정된 경우 제2 비휘발성 메모리(120_2)가 이레이즈/프로그램 명령을 처리 중인 것으로 인식하고 상기 이레이즈/프로그램 명령의 처리가 종료될 때까지 대기할 수 있다.
앞서와 마찬가지로, 내부 메모리(150)를 이용한 제1 비휘발성 메모리(120_1)와 제2 비휘발성 메모리(120_2)의 IPC는 컨트롤러(110)를 거치지 않고 수행될 수 있으나 이에 제한되는 것은 아니다.
도 11은 본 발명의 몇몇 실시예에서 제1 비휘발성 메모리와 제2 비휘발성 메모리의 동작 시간 동기화를 설명하기 위한 블록도이고, 도 12a 및 도 12b는 본 발명의 몇몇 실시예에서 제1 비휘발성 메모리와 제2 비휘발성 메모리의 동작 시간 동기화를 설명하기 위한 테이블이다.
도 11 내지 도 12b를 참조하여, 본 발명의 몇몇 실시예에 따른 스토리지 장치(100)가 호스트로부터 제공받은 이레이즈/프로그램 명령을 제1 비휘발성 메모리(120_1)와 제2 비휘발성 메모리(120_2)에 의해 상호 배제적으로 처리하기 위한 동작을 설명한다.
스토리지 장치(100)는 동기화 타이머(160)를 포함할 수 있다. 동기화 타이머(160)는 제1 비휘발성 메모리(120_1)와 제2 비휘발성 메모리(120_2)로 시간 동기화 신호를 제공할 수 있다. 동기화 타이머(160)가 제1 및 제2 비휘발성 메모리(120_1, 120_2)로 제공하는 시간 동기화 신호는 예를 들어 클럭 신호일 수 있으며, 더욱 구체적으로 RTC(Real Time Clock) 신호일 수 있다.
제1 NVM 컨트롤러(125_1)는 동기화 타이머(160)로부터 시간 동기화 신호를 제공받을 수 있다. 제1 NVM 컨트롤러(125_1)는 시간 동기화 신호에 기초하여 이레이즈/프로그램 명령의 처리를 개시할 수 있다.
제2 NVM 컨트롤러(125_2)는 동기화 타이머(160)로부터 시간 동기화 신호를 제공받을 수 있다. 제2 NVM 컨트롤러(125_2)는 시간 동기화 신호에 기초하여 이레이즈/프로그램 명령의 처리를 개시할 수 있다.
도 12a에 예시적으로 제1 비휘발성 메모리(120_1)와 제2 비휘발성 메모리(120_2)의 이레이즈 명령의 처리 개시 시점을 나타낸 테이블이 도시된다. 각 숫자의 단위는 밀리세컨드(ms)로, 기준 시간으로부터 테이블의 기재된 숫자만큼 시간이 흐른 뒤에 제1 및 제2 비휘발성 메모리(120_2)가 이레이즈 명령을 처리하는 것으로 이해될 수 있다. 예시적으로 제1 및 제2 비휘발성 메모리(120_1, 120_2)가 이레이즈 명령을 처리하는 것에 2ms의 시간이 필요한 것으로 설명한다.
제1 비휘발성 메모리(120_1)는, 기준 시간으로부터 0, 4, 8, 12, 16, …, 4N ms의 시간이 흐른 시점에 이레이즈 명령의 처리를 개시할 수 있다. 도 8을 다시 참조하면, 예를 들어 제1 시점(t1)은 기준 시간으로부터 0ms 흐른 시점이고, 제3 시점(t3)은 기준 시간으로부터 4ms 흐른 시점일 수 있다. 제1 비휘발성 메모리(120_1)는 기준 시간으로부터 미리 정해진 시간 간격마다 이레이즈 명령의 처리를 개시할 수 있다.
제2 비휘발성 메모리(120_2)는, 기준 시간으로부터 2, 6, 10, 14, 18, …, 4N+2 ms의 시간이 흐른 시점에 이레이즈 명령의 처리를 개시할 수 있다. 도 8에서, 제2 시점(t2)이 기준 시간으로부터 2ms 흐른 시점이고, 제4 시점(t4)은 기준 시간으로부터 6ms 흐른 시점일 수 있다. 즉, 제2 비휘발성 메모리(120_2)는 기준 시간으로부터 오프셋 시간(예를 들어 2ms)이 흐른 시점부터 미리 정해진 시간 간격마다 이레이즈 명령의 처리를 개시할 수 있다.
제1 NVM 컨트롤러(125_1)는 동기화 타이머(160)로부터 제공된 시간 동기화 신호에 기초하여, 기준 시간을 설정한다. 제1 NVM 컨트롤러(125_1)는 기준 시간으로부터 미리 정해진 시간 간격마다 이레이즈/프로그램 명령을 제1 메모리 셀(130)로 제공할 수 있다.
제2 NVM 컨트롤러(125_2)는 동기화 타이머(160)로부터 제공된 시간 동기화 신호에 기초하여, 기준 시간을 설정한다. 제2 NVM 컨트롤러(125_2)는 기준 시간으로부터 미리 정해진 시간으로부터 오프셋 시간이 흐른 시점부터 미리 정해진 시간 간격마다 이레이즈/프로그램 명령을 제2 메모리 셀(130)로 제공할 수 있다. 상기 오프셋 시간은 예를 들어, 제1 또는 제2 비휘발성 메모리(120_1, 120_2)가 이레이즈/프로그램 명령을 수행하는 것에 필요한 시간일 수 있다.
상기 동작을 통해, 제1 비휘발성 메모리(120_1)가 이레이즈/프로그램 명령을 처리하는 동안 제2 비휘발성 메모리(120_2)는 이레이즈/프로그램 명령을 처리하지 않고 대기할 수 있다. 즉, 제1 비휘발성 메모리(120_1)와 제2 비휘발성 메모리(120_2)의 이레이즈/프로그램 명령의 처리 시간은 중첩되지 않고, 상호 배제적일 수 있다.
도 12b는 도 12a에서 설명한 실시예와는 달리, 제1 비휘발성 메모리(120_1)와 제2 비휘발성 메모리(120_2)의 이레이즈/프로그램 명령의 처리 시간이 일부 중첩되는 경우를 나타내는 테이블이 도시된다.
제1 비휘발성 메모리(120_1)의 동작은 앞서 도 12a에서 설명한 것과 동일하므로 이에 관한 설명은 생략한다.
제2 비휘발성 메모리(120_2)는, 기준 시간으로부터 2-k, 6-k, 10-k, 14-k, 18-k, …, 4N+2-k ms의 시간이 흐른 시점에 이레이즈 명령의 처리를 개시할 수 있다. 즉, 제2 비휘발성 메모리(120_2)는 제1 비휘발성 메모리(120_1)가 이레이즈/프로그램을 처리하는 시간과 k ms만큼 중첩되어 이레이즈/프로그램 명령을 처리할 수 있다.
즉, 도 12b의 실시예에서 제1 비휘발성 메모리(120_1)와 제2 비휘발성 메모리(120_2)의 이레이즈/프로그램 명령의 처리 시간은 일부 중첩될 수 있다.
몇몇 실시예에서, 상기 k값은 사용자의 설정에 따라 0 ≤ k < m(m은 이레이즈/프로그램 처리 소요 시간) 사이에서 변경될 수 있다.
도 13은 본 발명의 몇몇 실시예에서 제1 비휘발성 메모리와 제2 비휘발성 메모리의 이레이즈/프로그램 동작을 설명하기 위한 순서도이다.
도 13을 참조하면, 본 발명의 몇몇 실시예에서, 제1 비휘발성 메모리(120_1)에 의하여 이레이즈/프로그램 명령이 수행 중임에도 불구하고 제2 비휘발성 메모리(120_2)가 이레이즈/프로그램 명령을 수행하는 경우가 설명된다. 앞서와 마찬가지로 제1 비휘발성 메모리(120_1)의 이레이즈/프로그램 명령의 처리 여부를 제2 비휘발성 메모리(120_2)가 확인할 수 있으며, 이와는 반대로 제2 비휘발성 메모리(120_2)의 이레이즈/프로그램 명령의 처리 여부를 제1 비휘발성 메모리(120_1)가 확인할 수 있음은 자명하다.
먼저 제1 비휘발성 메모리(120_1)에서 이레이즈/프로그램 동작의 수행이 개시된다(S310).
이어서 제2 비휘발성 메모리(120_2)에 동일한 이레이즈/프로그램 동작이 제공되고, 제2 비휘발성 메모리(120_2)는 명령 큐(111)에 저장된 명령 중에서, 미리 정해진 범위 내에 제2 비휘발성 메모리(120_2)에 대한 읽기 명령이 존재하는지 여부를 확인한다(S320). 예를 들어 제2 NVM 컨트롤러(125_2)는 명령 큐(111)에 접근하여 미리 정해진 범위 내에 제2 비휘발성 메모리(120_2)로 제공되는 읽기 명령이 존재하는지 여부를 확인할 수 있다.
만약 미리 정해진 범위 내에 제2 비휘발성 메모리(120_2)로 제공되는 읽기 명령이 존재하지 않는다면, 제2 비휘발성 메모리(120_2)는 즉시 이레이즈/프로그램 동작을 수행할 수 있다. 이 경우, 제2 비휘발성 메모리(120_2)는 제1 비휘발성 메모리(120_1)의 이레이즈/프로그램 동작 수행 여부를 확인하지 않을 수도 있다.
만약 미리 정해진 범위 내에 제2 비휘발성 메모리(120_2)로 제공되는 읽기 명령이 존재한다면, 제2 비휘발성 메모리(120_2)는 앞서 도 9 내지 도 12b에 기초하여 설명한 규칙에 따라 상호 배제적으로 이레이즈/프로그램 동작을 수행할 수 있다.
제2 비휘발성 메모리(120_2)가 제1 비휘발성 메모리(120_1)에 의한 이레이즈/프로그램 동작 수행 여부를 확인하는 것은, 앞서 설명한 것과 같이 제1 및 제2 비휘발성 메모리(120_2) 사이에 이레이즈/프로그램 명령을 상호 배제적으로 처리함으로써 리드 명령의 레이턴시를 감소시키기 위함이다. 그런데, 명령 큐(111)에 저장된 명령 중에서, 미리 정해진 범위 내에 읽기 명령이 존재하지 않는다면 제1 및 제2 비휘발성 메모리(120_2) 사이에 이레이즈/프로그램 명령을 상호 배제적으로 처리할 필요가 없다. 따라서 제2 비휘발성 메모리(120_2)는 이레이즈/프로그램 명령을 즉시 처리할 수 있다.
도 14는 본 발명의 몇몇 실시예에 따른 스토리지 시스템을 설명하기 위한 블록도이다.
도 14를 참조하면, 본 발명의 몇몇 실시예에 따른 스토리지 시스템은, 호스트(10), 제1 스토리지 장치(200) 및 제2 스토리지 장치(300)를 포함할 수 있다.
호스트(10)는 제1 스토리지 장치(200) 및 제2 스토리지 장치(300)의 읽기, 프로그램 및 이레이즈 동작을 제어할 수 있는 요청을 생성할 수 있다.
제1 스토리지 장치(200)는 예를 들어, 복수의 비휘발성 메모리(220_1~220_n)을 포함하는 솔리드 스테이트 드라이브(Solid State Drive, SSD)일 수 있다. 복수의 비휘발성 메모리(220_1~220_n)는 예를 들어, 하나의 칩으로 패키징될 수 있으나 본 발명이 이에 제한되는 것은 아니다.
이와는 달리, 제1 스토리지 장치(200)는 PC 카드(PCMCIA, personal computer memory card international association), 컴팩트 플래시 카드(CF), 스마트 미디어 카드(SM, SMC), 메모리 스틱, 멀티미디어 카드(MMC, RS-MMC, MMCmicro), SD 카드(SD, miniSD, microSD, SDHC), 유니버설 플래시 기억장치(UFS) 등과 같은 메모리 카드일 수 있으나 이에 제한되는 것은 아니다.
제2 스토리지 장치(300)는 제1 스토리지 장치(200)에 저장된 데이터를 미러링할 수 있다. 따라서 제2 스토리지 장치(300)는 제1 스토리지 장치(200)와 유사한 구성을 포함할 수 있다. 제2 스토리지 장치(300)는 복수의 비휘발성 메모리(320_1~320_n) SSD이거나, 컴팩트 플래시 카드, 스마트 미디어 카드, 메모리 스틱, 멀티미디어 카드, SD 카드, 유니버설 플래시 기억장치 등과 같은 메모리 카드일 수 있다.
호스트(10)는 앞서 설명한 실시예에 포함된 컨트롤러(110)와 유사한 동작을 수행할 수 있다. 따라서 호스트는 서로 미러링되는 제1 스토리지 장치(200)와 제2 스토리지 장치(300)에 대하여 동시에 읽기 요청을 수행하고, 제1 또는 제2 스토리지 장치(200, 300)로부터 먼저 제공되는 데이터를 수신하고, 나중에 제공된 데이터를 무시할 수 있다.
제1 스토리지 장치(200)는 복수의 비휘발성 메모리(220_1~220_n)를 제어하는 제1 컨트롤러(210)를 포함할 수 있다. 제1 컨트롤러(210)는 호스트(10)로부터 제공받은 명령을 복수의 비휘발성 메모리(220_1~220_n) 별로 처리할 수 있다. 즉, 제1 비휘발성 메모리(220_1)를 접근하는 서로 다른 두 개의 명령어에 대하여, 제1 컨트롤러(210)는 동시에 이를 처리하지 않고, 두 번의 데이터 사이클로 나누어 처리할 수 있다. 제1 컨트롤러(210)는 호스트(10)로부터 제공받은 논리적 주소를 복수의 비휘발성 메모리(220_1~220_n)에 대응하는 물리적 주소로 변환하는 주소 할당 맵을 포함할 수 있다.
제2 스토리지 장치(300)는 복수의 비휘발성 메모리(320_1~320_n)를 제어하는 제2 컨트롤러(310)를 포함할 수 있다. 제2 컨트롤러(310)는 호스트(10)로부터 제공받은 명령을 복수의 비휘발성 메모리(320_1~320_n) 별로 처리할 수 있다. 즉, 제2 비휘발성 메모리(320_1)를 접근하는 서로 다른 두 개의 명령어에 대하여, 제2 컨트롤러(310)는 동시에 이를 처리하지 않고, 두 번의 데이터 사이클로 나누어 처리할 수 있다. 제2 컨트롤러(310)는 호스트(10)로부터 제공받은 논리적 주소를 복수의 비휘발성 메모리(320_1~320_n)에 대응하는 물리적 주소로 변환하는 주소 할당 맵을 포함할 수 있다.
이상 첨부된 도면을 참조하여 본 발명의 실시예들을 설명하였으나, 본 발명은 상기 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 제조될 수 있으며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
10: 호스트 100, 200, 300: 스토리지 장치
110: 컨트롤러 120_1, 120_2: 비휘발성 메모리
130, 140: 메모리 셀

Claims (22)

  1. 복수의 제1 주소로 구분되고, 상기 복수의 제1 주소가 제1 할당 정책에 의하여 할당된 복수의 제1 뱅크를 포함하는 제1 비휘발성 메모리;
    상기 제1 주소와 대응하는 복수의 제2 주소로 구분되고, 상기 복수의 제2 주소가 상기 제1 할당 정책과 다른 제2 할당 정책에 의하여 할당된 복수의 제2 뱅크를 포함하는 제2 비휘발성 메모리로, 상기 제2 비휘발성 메모리는 상기 복수의 제1 주소에 저장된 데이터를 미러링하여 상기 복수의 제2 주소에 저장하는 제2 비휘발성 메모리; 및
    호스트로부터 명령을 제공받아 상기 제1 비휘발성 메모리와 상기 제2 비휘발성 메모리를 제어하는 컨트롤러를 포함하되,
    상기 컨트롤러는,
    상기 호스트로부터 제공된 읽기 명령을 상기 제1 비휘발성 메모리와 상기 제2 비휘발성 메모리로 동시에 제공하고,
    상기 읽기 명령에 기초하여 상기 제1 비휘발성 메모리와 상기 제2 비휘발성 메모리 중 먼저 제공한 데이터를 상기 호스트로 출력하고,
    상기 제1 할당 정책에 따라, 상기 복수의 제1 뱅크 중 1번 뱅크의 1번 로우는 제1 물리적 주소에 할당되고, 상기 1번 뱅크의 상기 1번 로우와 다른 2번 로우는 제2 물리적 주소에 할당되고,
    상기 제2 할당 정책에 따라, 상기 제1 물리적 주소는 상기 복수의 제2 뱅크 중 2번 뱅크의 3번 로우에 할당되고, 상기 제2 물리적 주소는 상기 2번 뱅크와 다른 3번 뱅크의 4번 로우에 할당되는 스토리지 장치.
  2. 제 1항에 있어서,
    상기 컨트롤러는, 상기 호스트로부터 상기 제1 비휘발성 메모리와 상기 제2 비휘발성 메모리에 접근하기 위한 논리적 주소를 제공받고,
    상기 논리적 주소를 상기 복수의 제1 뱅크 및 상기 복수의 제2 뱅크에 할당하기 위한 물리적 주소로 변환하는 주소 할당 맵을 포함하는 스토리지 장치.
  3. 제 2항에 있어서,
    상기 주소 할당 맵은 상기 논리적 주소로부터 상기 제1 뱅크에 할당되는 상기 제1 물리적 주소로 변환하는 제1 맵과,
    상기 논리적 주소를 상기 제2 뱅크에 할당되는 상기 제2 물리적 주소로 변환하는 제2 맵을 포함하는 스토리지 장치.
  4. 제 3항에 있어서,
    상기 제1 맵과 상기 제2 맵은 서로 다른 할당 규칙에 기초하는 스토리지 장치.
  5. 제 1항에 있어서,
    상기 호스트는 상기 스토리지 장치에 접근하는 이레이즈/프로그램 명령을 제공하고,
    상기 컨트롤러는 상기 이레이즈/프로그램 명령을 상기 제1 비휘발성 메모리에 접근하는 제1 이레이즈/프로그램 명령과, 상기 제2 비휘발성 메모리에 접근하는 제2 이레이즈/프로그램 명령으로 구분하고,
    상기 컨트롤러는 상기 제1 이레이즈/프로그램 명령과 상기 제2 이레이즈/프로그램 명령을 상호 배제적으로 처리하는 스토리지 장치.
  6. 제 5항에 있어서,
    상기 제2 비휘발성 메모리는, 상기 제1 비휘발성 메모리의 상기 제1 이레이즈/프로그램 명령의 수행 여부를 확인하고, 상기 제1 이레이즈/프로그램 명령이 수행 중이지 않은 경우 상기 제2 이레이즈/프로그램 명령을 수행하는 스토리지 장치.
  7. 제 6항에 있어서,
    상기 제1 비휘발성 메모리와 상기 제2 비휘발성 메모리 사이의 IPC(Inter-Process Communication)을 위한 채널을 더 포함하고,
    상기 제2 비휘발성 메모리는 상기 제1 비휘발성 메모리의 상기 제1 이레이즈/프로그램 명령의 수행 여부를 상기 IPC를 통해 확인하는 스토리지 장치.
  8. 제 6항에 있어서,
    상기 제1 비휘발성 메모리와 상기 제2 비휘발성 메모리 사이와 연결된 내부 메모리를 더 포함하되 상기 내부 메모리는 상기 이레이즈/프로그램 명령의 수행 여부를 나타내는 비지 플래그를 포함하고,
    상기 제1 비휘발성 메모리는 상기 제1 이레이즈/프로그램 명령을 수행 중인 경우 비지 플래그를 세트하는 스토리지 장치..
  9. 제 5항에 있어서,
    상기 컨트롤러는 상기 호스트로부터 제공받은 명령을 저장하는 명령 큐를 포함하고,
    상기 제2 비휘발성 메모리는 상기 명령 큐에 저장된 명령 가운데 상기 제2 비휘발성 메모리에 제공되는 읽기 명령이 존재하는지 여부를 확인하고,
    상기 읽기 명령이 존재하지 않는 경우 상기 제2 이레이즈/프로그램 명령을 즉시 수행하는 스토리지 장치.
  10. 제 1항에 있어서,
    상기 컨트롤러는 상기 제1 비휘발성 메모리와 상기 제2 비휘발성 메모리 중 늦게 제공된 데이터를 무시하는 스토리지 장치.
  11. 제 1항에 있어서,
    상기 컨트롤러는, 상기 제1 뱅크 단위로 상기 호스트로부터 상기 제1 비휘발성 메모리에 제공되는 명령을 처리하고,
    상기 제2 뱅크 단위로 상기 호스트로부터 상기 제2 비휘발성 메모리에 제공되는 명령을 수행하는 스토리지 장치.
  12. 삭제
  13. 삭제
  14. 삭제
  15. 삭제
  16. 복수의 제1 주소로 구분되고, 상기 복수의 제1 주소가 제1 할당 정책에 의하여 할당된 복수의 제1 뱅크를 포함하는 제1 비휘발성 메모리와,
    상기 제1 주소와 대응하는 복수의 제2 주소로 구분되고, 상기 복수의 제2 주소가 상기 제1 할당 정책과 다른 제2 할당 정책에 의하여 할당된 복수의 제2 뱅크를 포함하는 제2 비휘발성 메모리로, 상기 제2 비휘발성 메모리는 상기 복수의 제1 주소에 저장된 데이터를 미러링하여 상기 복수의 제2 주소에 저장하는 제2 비휘발성 메모리를 제공하고,
    호스트로부터 제공된 읽기 요청을 상기 제1 비휘발성 메모리와 상기 제2 비휘발성 메모리로 동시에 제공하고,
    상기 제1 비휘발성 메모리와 상기 제2 비휘발성 메모리 중 먼저 제공된 데이터를 상기 호스트로 출력하는 것을 포함하되,
    상기 제1 할당 정책에 따라, 상기 복수의 제1 뱅크 중 1번 뱅크의 1번 로우는 제1 물리적 주소에 할당되고, 상기 1번 뱅크의 상기 1번 로우와 다른 2번 로우는 제2 물리적 주소에 할당되고,
    상기 제2 할당 정책에 따라, 상기 제1 물리적 주소는 상기 복수의 제2 뱅크 중 2번 뱅크의 3번 로우에 할당되고, 상기 제2 물리적 주소는 상기 2번 뱅크와 다른 3번 뱅크의 4번 로우에 할당되는 스토리지 장치의 동작 방법.
  17. 제 16항에 있어서,
    상기 스토리지 장치에 접근하는 이레이즈/프로그램 명령을 제공하고,
    상기 이레이즈/프로그램 명령을 상기 제1 비휘발성 메모리에 접근하는 제1 이레이즈/프로그램 명령과, 상기 제2 비휘발성 메모리에 접근하는 제2 이레이즈/프로그램 명령으로 구분하고,
    상기 제1 이레이즈/프로그램 명령과 상기 제2 이레이즈/프로그램 명령을 상호 배제적으로 처리하는 것을 더 포함하는 스토리지 장치의 동작 방법.
  18. 제 17항에 있어서,
    상기 제1 이레이즈/프로그램 명령과 상기 제2 이레이즈/프로그램 명령을 상호 배제적으로 처리하는 것은,
    상기 제1 비휘발성 메모리의 상기 제1 이레이즈/프로그램 명령의 수행 여부를 확인하고, 상기 제1 이레이즈/프로그램 명령이 수행 중이지 않은 경우 상기 제2 이레이즈/프로그램 명령을 수행하는 것을 포함하는 스토리지 장치의 동작 방법.
  19. 제 16항에 있어서,
    컨트롤러에 의해, 상기 제1 비휘발성 메모리와 상기 제2 비휘발성 메모리 중 늦게 제공되는 데이터는 무시되는 것을 더 포함하는 스토리지 장치의 동작 방법.
  20. 복수의 제1 주소를 포함하고, 각각 M개의 로우를 갖는 N개의 제1 뱅크를 포함하는 제1 비휘발성 메모리;
    복수의 제2 주소를 포함하고, 각각 M개의 로우를 갖는 N개의 제2 뱅크를 포함하는 제2 비휘발성 메모리로, 상기 복수의 제2 주소는 상기 복수의 제1 주소에 대응하고 상기 제2 비휘발성 메모리는 상기 제1 주소에 저장된 데이터를 미러링하여 상기 제2 주소에 저장하는 제2 비휘발성 메모리; 및
    호스트로부터 제공받은 읽기 요청을 기초하여 상기 제1 비휘발성 메모리와 상기 제2 비휘발성 메모리에 동시에 읽기 명령을 제공하고, 상기 읽기 명령에 기초하여 상기 제1 비휘발성 메모리와 상기 제2 비휘발성 메모리 중 먼저 제공한 데이터를 상기 호스트로 출력하는 컨트롤러를 포함하되,상기 컨트롤러는 상기 제1 뱅크의 지정된 로우에 속하는 상기 제1 주소를 M mod N 결과값만큼 쉬프트하여 상기 제2 주소 중 대응하는 상기 제2 뱅크를 결정하고,
    상기 mod는 나머지 연산인 스토리지 장치.
  21. 제 20항에 있어서,
    상기 읽기 요청은 논리적 주소를 포함하고,
    상기 컨트롤러는 상기 논리적 주소를 상기 제1 비휘발성 메모리 내의 제1 물리적 주소로 변환하는 제1 맵과, 상기 논리적 주소를 상기 제1 비휘발성 메모리 내의 제2 물리적 주소로 변환하는 제2 맵을 포함하는 주소 할당 맵을 포함하는 스토리지 장치.
  22. 제 20항에 있어서,
    상기 호스트는 상기 스토리지 장치에 접근하는 이레이즈/프로그램 명령을 제공하고,
    상기 컨트롤러는 상기 이레이즈/프로그램 명령을 상기 제1 비휘발성 메모리에 접근하는 제1 이레이즈/프로그램 명령과, 상기 제2 비휘발성 메모리에 접근하는 제2 이레이즈/프로그램 명령으로 구분하고,
    상기 컨트롤러는 상기 제1 이레이즈/프로그램 명령과 상기 제2 이레이즈/프로그램 명령을 상호 배제적으로 처리하는 스토리지 장치.
KR1020170121184A 2017-09-20 2017-09-20 스토리지 장치, 이의 동작 방법 및 스토리지 장치를 포함하는 스토리지 시스템 KR102369402B1 (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020170121184A KR102369402B1 (ko) 2017-09-20 2017-09-20 스토리지 장치, 이의 동작 방법 및 스토리지 장치를 포함하는 스토리지 시스템
US15/986,157 US10613765B2 (en) 2017-09-20 2018-05-22 Storage device, method for operating the same, and storage system including storage devices
SG10201805221RA SG10201805221RA (en) 2017-09-20 2018-06-19 Storage device, method for operating the same, and storage system including storage devices
CN201811070959.7A CN109521950B (zh) 2017-09-20 2018-09-13 存储设备、其操作方法及包括存储设备的存储系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170121184A KR102369402B1 (ko) 2017-09-20 2017-09-20 스토리지 장치, 이의 동작 방법 및 스토리지 장치를 포함하는 스토리지 시스템

Publications (2)

Publication Number Publication Date
KR20190032839A KR20190032839A (ko) 2019-03-28
KR102369402B1 true KR102369402B1 (ko) 2022-03-02

Family

ID=65719269

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170121184A KR102369402B1 (ko) 2017-09-20 2017-09-20 스토리지 장치, 이의 동작 방법 및 스토리지 장치를 포함하는 스토리지 시스템

Country Status (4)

Country Link
US (1) US10613765B2 (ko)
KR (1) KR102369402B1 (ko)
CN (1) CN109521950B (ko)
SG (1) SG10201805221RA (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11704056B2 (en) * 2019-07-26 2023-07-18 Kioxia Corporation Independent set data lanes for IOD SSD
US11385829B2 (en) * 2019-08-05 2022-07-12 Cypress Semiconductor Corporation Memory controller for non-interfering accesses to nonvolatile memory by different masters, and related systems and methods
KR20210051803A (ko) 2019-10-31 2021-05-10 에스케이하이닉스 주식회사 메모리 시스템 및 컨트롤러
KR20210085499A (ko) 2019-12-30 2021-07-08 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
US11249674B2 (en) * 2020-06-03 2022-02-15 Innogrit Technologies Co., Ltd. Electrical mirroring by NAND flash controller
JP2023044168A (ja) * 2021-09-17 2023-03-30 キオクシア株式会社 メモリコントローラ、メモリシステム、及び情報処理システム

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4908789A (en) 1987-04-01 1990-03-13 International Business Machines Corporation Method and system for automatically assigning memory modules of different predetermined capacities to contiguous segments of a linear address range
US20070288692A1 (en) 2006-06-08 2007-12-13 Bitmicro Networks, Inc. Hybrid Multi-Tiered Caching Storage System
JP2010079856A (ja) 2008-09-29 2010-04-08 Hitachi Ltd 記憶装置およびメモリ制御方法
US20110246821A1 (en) 2010-03-30 2011-10-06 International Business Machines Corporation Reliability scheme using hybrid ssd/hdd replication with log structured management

Family Cites Families (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS55135955A (en) * 1979-04-10 1980-10-23 Nec Corp Magnetic disk control device of double recording system
US5269011A (en) 1990-09-24 1993-12-07 Emc Corporation Dynamically reconfigurable data storage system with storage system controllers selectively operable as channel adapters on storage device adapters
US5335352A (en) 1990-09-24 1994-08-02 Emc Corporation Reconfigurable, multi-function data storage system controller selectively operable as an input channel adapter and a data storage unit adapter
US5206939A (en) 1990-09-24 1993-04-27 Emc Corporation System and method for disk mapping and data retrieval
US5544347A (en) 1990-09-24 1996-08-06 Emc Corporation Data storage system controlled remote data mirroring with respectively maintained data indices
US6038605A (en) 1996-02-15 2000-03-14 Emc Corporation Method and apparatus for interfacing two remotely disposed devices coupled via a transmission medium
US6052797A (en) 1996-05-28 2000-04-18 Emc Corporation Remotely mirrored data storage system with a count indicative of data consistency
US5901327A (en) 1996-05-28 1999-05-04 Emc Corporation Bundling of write data from channel commands in a command chain for transmission over a data link between data storage systems for remote data mirroring
JPH1166841A (ja) 1997-08-22 1999-03-09 Mitsubishi Electric Corp 半導体記憶装置
US20050114587A1 (en) * 2003-11-22 2005-05-26 Super Talent Electronics Inc. ExpressCard with On-Card Flash Memory with Shared Flash-Control Bus but Separate Ready Lines
US7234029B2 (en) 2000-12-28 2007-06-19 Intel Corporation Method and apparatus for reducing memory latency in a cache coherent multi-node architecture
US6795889B2 (en) 2002-01-09 2004-09-21 International Business Machines Corporation Method and apparatus for multi-path data storage and retrieval
US6952753B2 (en) * 2002-06-03 2005-10-04 Sun Microsystems, Inc. Device driver with improved timeout performance
US7263593B2 (en) * 2002-11-25 2007-08-28 Hitachi, Ltd. Virtualization controller and data transfer control method
DE10332314B4 (de) 2003-07-16 2006-10-26 Infineon Technologies Ag Halbleiterspeicher mit kurzer effektiver Wortleitungszykluszeit sowie Verfahren zum Lesen von Daten aus einem derartigen Halbleiterspeicher
US7136973B2 (en) * 2004-02-04 2006-11-14 Sandisk Corporation Dual media storage device
US8200887B2 (en) 2007-03-29 2012-06-12 Violin Memory, Inc. Memory management system and method
US8521945B2 (en) * 2005-09-29 2013-08-27 Trek 2000 International Ltd. Portable data storage using SLC and MLC flash memory
KR100687628B1 (ko) 2006-10-10 2007-02-27 탑시스템주식회사 원격 통합감시제어장치 및 그의 이중화시스템 구동방법
JP4369471B2 (ja) 2006-12-27 2009-11-18 富士通株式会社 ミラーリングプログラム、ミラーリング方法、情報記憶装置
KR100855972B1 (ko) * 2007-01-23 2008-09-02 삼성전자주식회사 서로 다른 독출 대기 시간을 가지는 복수개의 메모리 셀어레이들을 구비하는 불휘발성 메모리 시스템 및 상기불휘발성 메모리 시스템의 데이터 독출 방법
US7975109B2 (en) * 2007-05-30 2011-07-05 Schooner Information Technology, Inc. System including a fine-grained memory and a less-fine-grained memory
US7719889B2 (en) * 2007-06-25 2010-05-18 Sandisk Corporation Methods of programming multilevel cell nonvolatile memory
US8095763B2 (en) 2007-10-18 2012-01-10 Datadirect Networks, Inc. Method for reducing latency in a raid memory system while maintaining data integrity
US7945752B1 (en) * 2008-03-27 2011-05-17 Netapp, Inc. Method and apparatus for achieving consistent read latency from an array of solid-state storage devices
KR101497074B1 (ko) * 2008-06-17 2015-03-05 삼성전자주식회사 불휘발성 메모리 시스템 및 그것의 데이터 관리 방법
US20110258362A1 (en) 2008-12-19 2011-10-20 Mclaren Moray Redundant data storage for uniform read latency
JP2012003644A (ja) 2010-06-21 2012-01-05 Fujitsu Ltd メモリエラー箇所検出装置、及びメモリエラー箇所検出方法。
JP2012119038A (ja) 2010-12-02 2012-06-21 Toshiba Corp 不揮発性半導体メモリ及び記憶装置
US8635416B1 (en) 2011-03-02 2014-01-21 Violin Memory Inc. Apparatus, method and system for using shadow drives for alternative drive commands
US8732433B2 (en) * 2011-08-26 2014-05-20 Micron Technology, Inc. Apparatuses and methods for providing data from multiple memories
US8898408B2 (en) 2011-12-12 2014-11-25 Dell Products L.P. Memory controller-independent memory mirroring
US8301832B1 (en) 2012-03-23 2012-10-30 DSSD, Inc. Storage system with guaranteed read latency
KR20140002833A (ko) * 2012-06-26 2014-01-09 삼성전자주식회사 비휘발성 메모리 장치
KR102090090B1 (ko) 2012-07-03 2020-03-17 바이올린 메모리 인코포레이티드 분산형 raid 그룹의 동기화
US20140189201A1 (en) * 2012-12-31 2014-07-03 Krishnamurthy Dhakshinamurthy Flash Memory Interface Using Split Bus Configuration
US9454474B2 (en) * 2013-03-05 2016-09-27 Western Digital Technologies, Inc. Methods, devices and systems for two stage power-on map rebuild with free space accounting in a solid state drive
US9235355B2 (en) * 2013-04-04 2016-01-12 Avago Technologies General Ip (Singapore) Pte. Ltd. Reverse mirroring in raid level 1
US9218242B2 (en) * 2013-07-02 2015-12-22 Sandisk Technologies Inc. Write operations for defect management in nonvolatile memory
US9959203B2 (en) * 2014-06-23 2018-05-01 Google Llc Managing storage devices
KR102317786B1 (ko) * 2015-02-02 2021-10-26 삼성전자주식회사 스토리지 디바이스에서의 입출력 처리 방법 및 이를 적용하는 스토리지 디바이스 및 비휘발성 메모리 디바이스
KR20160103236A (ko) * 2015-02-23 2016-09-01 삼성전자주식회사 저장 장치 및 그것의 동작 방법
US10558398B2 (en) * 2016-07-29 2020-02-11 Seagate Technology Llc Reducing read latency
TWI658402B (zh) * 2017-07-20 2019-05-01 群聯電子股份有限公司 資料寫入方法、記憶體控制電路單元及記憶體儲存裝置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4908789A (en) 1987-04-01 1990-03-13 International Business Machines Corporation Method and system for automatically assigning memory modules of different predetermined capacities to contiguous segments of a linear address range
US20070288692A1 (en) 2006-06-08 2007-12-13 Bitmicro Networks, Inc. Hybrid Multi-Tiered Caching Storage System
JP2010079856A (ja) 2008-09-29 2010-04-08 Hitachi Ltd 記憶装置およびメモリ制御方法
US20110246821A1 (en) 2010-03-30 2011-10-06 International Business Machines Corporation Reliability scheme using hybrid ssd/hdd replication with log structured management

Also Published As

Publication number Publication date
US20190087100A1 (en) 2019-03-21
SG10201805221RA (en) 2019-04-29
CN109521950B (zh) 2023-05-26
CN109521950A (zh) 2019-03-26
US10613765B2 (en) 2020-04-07
KR20190032839A (ko) 2019-03-28

Similar Documents

Publication Publication Date Title
KR102369402B1 (ko) 스토리지 장치, 이의 동작 방법 및 스토리지 장치를 포함하는 스토리지 시스템
US10007599B2 (en) Method for refreshing dynamic random access memory and a computer system
US8437190B2 (en) Interleaved flash storage system and method
US8874826B2 (en) Programming method and device for a buffer cache in a solid-state disk system
US10795599B2 (en) Data migration method, host and solid state disk
US9846643B2 (en) Methods for maintaining a storage mapping table and apparatuses using the same
US20100169549A1 (en) Memory system and controller
KR102526608B1 (ko) 전자 장치 및 그것의 동작 방법
US11334493B2 (en) Memory system and operating method thereof
CN109101185B (zh) 固态存储设备及其写命令和读命令处理方法
US10769074B2 (en) Computer memory content movement
US11157399B2 (en) Data storage devices and data processing methods with dynamic programming scheme
JP6987267B2 (ja) メモリアドレス指定方法と関連するコントローラ、メモリデバイス、及びホスト
US20200167095A1 (en) Memory controller and operating method thereof
US20060206668A1 (en) Data processing system and data decompression method
CN110119245B (zh) 用于操作nand闪存物理空间以扩展存储器容量的方法和系统
US11748027B2 (en) Storage system and method for avoiding clustering of reads during a program suspend
US20180129621A1 (en) Apparatus and method for accessing data in memory
US7345914B2 (en) Use of flash memory blocks outside of the main flash memory array
TWI636363B (zh) 用來於一記憶裝置中進行動態資源管理之方法以及記憶裝置及其控制器
KR20220037638A (ko) 맵 캐시를 포함하는 컨트롤러 및 이를 포함하는 메모리 시스템
CN113311991B (zh) 具有针对优选用户数据改进的写入性能的数据存储
US20230060322A1 (en) Memory channel controller operation
KR20230082529A (ko) 리프레쉬 동작에서 파워 노이즈를 감소시킨 메모리 장치 및 그 동작방법
KR20230135748A (ko) 신경망을 이용하여 쓰기 주소를 결정하는 데이터 저장 장치

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant