KR20220009523A - 스토리지 컨트롤러, 및 스토리지 컨트롤러의 동작 방법 - Google Patents

스토리지 컨트롤러, 및 스토리지 컨트롤러의 동작 방법 Download PDF

Info

Publication number
KR20220009523A
KR20220009523A KR1020200087379A KR20200087379A KR20220009523A KR 20220009523 A KR20220009523 A KR 20220009523A KR 1020200087379 A KR1020200087379 A KR 1020200087379A KR 20200087379 A KR20200087379 A KR 20200087379A KR 20220009523 A KR20220009523 A KR 20220009523A
Authority
KR
South Korea
Prior art keywords
address
value
logical
flash
channel
Prior art date
Application number
KR1020200087379A
Other languages
English (en)
Inventor
조영진
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020200087379A priority Critical patent/KR20220009523A/ko
Priority to US17/225,710 priority patent/US11579782B2/en
Priority to CN202110475355.6A priority patent/CN113948124A/zh
Priority to EP23190044.0A priority patent/EP4246336A3/en
Priority to EP21171502.4A priority patent/EP3940540B1/en
Publication of KR20220009523A publication Critical patent/KR20220009523A/ko
Priority to US18/105,920 priority patent/US20230185463A1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/79Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
    • 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/062Securing storage systems
    • G06F3/0623Securing storage systems in relation to content
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/12Bit line control circuits, e.g. drivers, boosters, pull-up circuits, pull-down circuits, precharging circuits, equalising circuits, for bit lines
    • 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
    • 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/0614Improving the reliability of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0632Configuration or reconfiguration of storage systems by initialisation or re-initialisation of 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering 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/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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C8/00Arrangements for selecting an address in a digital store
    • G11C8/08Word line control circuits, e.g. drivers, boosters, pull-up circuits, pull-down circuits, precharging circuits, for word lines
    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Software Systems (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)

Abstract

본 발명의 실시 예에 따른 스토리지 컨트롤러는 외부 호스트 장치로부터 제1 내지 제4 논리 어드레스들 각각에 대응하는 제1 내지 제4 요청들을 수신하도록 구성된 호스트 인터페이스 회로, 적어도 하나의 제1 채널을 통해 적어도 하나의 제1 불휘발성 메모리들과 통신하고, 적어도 하나의 제2 채널을 통해 적어도 하나의 제2 불휘발성 메모리들과 통신하도록 구성된 메모리 인터페이스 회로, 적어도 하나의 제1 불휘발성 메모리들을 관리하도록 구성된 제1 플래시 변환 계층, 적어도 하나의 제2 불휘발성 메모리들을 관리하도록 구성된 제2 플래시 변환 계층, 및 제1 플래시 변환 계층은 제1 및 제4 요청들에 대응하는 커맨드를 적어도 하나의 제1 채널을 통해 출력하고, 제2 플래시 변환 계층은 제2 및 제3 요청들에 대응하는 커맨드를 적어도 하나의 제2 채널을 통해 출력하고, 제1 논리 어드레스 값은 제2 논리 어드레스 값보다 작고, 제3 논리 어드레스 값은 제4 논리 어드레스 값보다 작다.

Description

스토리지 컨트롤러, 및 스토리지 컨트롤러의 동작 방법{STORAGE CONTROLLER, AND OPERATION MEHTOD OF STORAGE CONTROLLER}
본 발명은 반도체 메모리에 관한 것으로, 좀 더 상세하게는 스토리지 컨트롤러, 및 스토리지 컨트롤러의 동작 방법에 관한 것이다.
반도체 메모리는 SRAM (Static RAM), DRAM (Dynamic RAM), SDRAM (Synchronous DRAM) 등과 같이 전원 공급이 차단되면 저장하고 있던 데이터가 소멸되는 휘발성 메모리 장치 및 ROM (Read Only Memory), PROM (Programmable ROM), EPROM (Electrically Programmable ROM), EEPROM (Electrically Erasable and Programmable ROM), 플래시 메모리 장치, PRAM (Phase-change RAM), MRAM (Magnetic RAM), RRAM (Resistive RAM), FRAM (Ferroelectric RAM) 등과 같이 전원 공급이 차단되어도 저장하고 있던 데이터를 유지하는 불휘발성 메모리 장치로 구분된다.
스토리지 장치는 복수의 불휘발성 메모리 장치들을 포함할 수 있다. 스토리지 장치는 복수의 불휘발성 메모리 장치들 각각에 데이터를 분산하여 저장할 수 있다. 이러한 데이터 관리 방식을 데이터 인터리빙(Data interleaving)이라 한다. 불휘발성 메모리 장치들의 병렬화를 극대화하기 위하여, 스토리지 장치는 연속적인 논리적 메모리 영역을 채널, 웨이, 플레인으로 분산하여 할당할 수 있다. 데이터 분산방법에 따라, 특정 패턴의 데이터에서 특정 채널에만 데이터들의 쏠림 현상이 발생할 수 있다. 이로 인하여, 성능 하락이 발생할 수 있다.
본 발명의 목적은 안정된 성능 또는 향상된 성능을 제공하는 스토리지 장치, 및 스토리지 장치의 동작 방법을 제공하는 데 있다.
본 발명의 실시 예에 따른 스토리지 컨트롤러는 외부 호스트 장치로부터 제1 내지 제4 논리 어드레스들 각각에 대응하는 제1 내지 제4 요청들을 수신하도록 구성된 호스트 인터페이스 회로, 적어도 하나의 제1 채널을 통해 적어도 하나의 제1 불휘발성 메모리들과 통신하고, 적어도 하나의 제2 채널을 통해 적어도 하나의 제2 불휘발성 메모리들과 통신하도록 구성된 메모리 인터페이스 회로, 적어도 하나의 제1 불휘발성 메모리들을 관리하도록 구성된 제1 플래시 변환 계층, 적어도 하나의 제2 불휘발성 메모리들을 관리하도록 구성된 제2 플래시 변환 계층, 및 제1 플래시 변환 계층은 제1 및 제4 요청들에 대응하는 커맨드를 적어도 하나의 제1 채널을 통해 출력하고, 제2 플래시 변환 계층은 제2 및 제3 요청들에 대응하는 커맨드를 적어도 하나의 제2 채널을 통해 출력하고, 제1 논리 어드레스 값은 제2 논리 어드레스 값보다 작고, 제3 논리 어드레스 값은 제4 논리 어드레스 값보다 작다.
본 발명의 실시 예에 따른 스토리지 컨트롤러 동작 방법은 외부 호스트 장치로부터 제1 어드레스 구간, 제2 어드레스 구간, 및 제3 어드레스 구간을 포함하는 논리 어드레스를 포함하는 쓰기 요청을 수신하는 단계, 제1 어드레스 구간, 및 시드에 대하여 XOR 연산을 수행하여 제1 중간값을 생성하는 단계, 제1 중간값에 대하여 해시 함수 연산을 수행하여 제2 중간값을 생성하는 단계, 제2 중간값, 및 제2 어드레스 구간에 대하여 XOR 연산을 수행하여 스크램블된 제2 어드레스 구간을 생성하는 단계; 및 스크램블된 제2 어드레스 구간을 기반으로 할당된 쓰기 요청에 대응하는 커맨드를 적어도 하나의 제1 채널을 통해 적어도 하나의 제1 불휘발성 메모리들에게 출력하고, 스크램블된 제2 어드레스 구간을 기반으로 할당된 쓰기 요청에 대응하는 커맨드를 적어도 하나의 제2 채널을 통해 적어도 하나의 제2 불휘발성 메모리들에게 출력하는 단계를 포함한다.
본 발명의 실시 예에 따른 스토리지 컨트롤러는 외부 호스트 장치로부터 논리 어드레스를 포함하는 요청을 수신하도록 구성된 호스트 인터페이스 회로, 적어도 하나의 제1 채널을 통해 적어도 하나의 제1 불휘발성 메모리들과 통신하고, 적어도 하나의 제2 채널을 통해 적어도 하나의 제2 불휘발성 메모리들과 통신하도록 구성된 메모리 인터페이스 회로, 및 스크램블 회로를 포함하고, 논리 어드레스는, 제1 어드레스 구간; 제2 어드레스 구간; 및 제3 어드레스 구간을 포함하고, 스크램블 회로는 제1 어드레스 구간 및 시드에 대한 논리 연산을 수행하여 제1 중간값을 생성하도록 구성된 제1 XOR 연산기, 제1 중간값에 대하여 해시 함수 연산을 수행하여 제2 중간값을 생성하도록 구성된 해시 모듈; 및 제2 중간값 및 제2 어드레스 구간에 대한 논리 연산을 수행하여 스크램블된 제2 어드레스 구간을 생성하도록 구성된 제2 XOR 연산기를 포함하고, 스크램블 회로는 복수의 플래시 변환 계층들의 개수를 기반으로 스크램블된 제2 어드레스 구간에 대한 모듈러 연산을 수행하여 결과값을 생성하도록 구성되고, 결과값이 제1 값의 경우, 상기 요청에 대응하는 커맨드를 적어도 하나의 제1 채널을 통해 출력하고, 결과값이 제2 값의 경우, 상기 요청에 대응하는 커맨드를 적어도 하나의 제2 채널을 통해 출력하는 스토리지 컨트롤러.
본 발명의 실시 예에 따르면, 논리 어드레스를 스크램블하여 안정된 성능 또는 향상된 성능을 제공하는 스토리지 장치, 및 스토리지 장치의 동작 방법이 제공된다.
도 1은 본 발명의 실시 예에 따른 스토리지 시스템을 보여주는 블록도이다.
도 2는 도 1의 스토리지 컨트롤러를 예시적으로 보여주는 블록도이다.
도 3a 내지 도 3c는 본 발명에 따른 불휘발성 메모리 장치들의 다양한 토폴로지들을 예시적으로 보여주는 블록도이다.
도 4는 도 1의 불휘발성 메모리 메모리를 예시적으로 보여주는 블록도이다.
도 5a 내지 도 5c는 도 1의 스크램블 회로의 동작을 설명하기 위한 도면이다.
도 6a 내지 도 6c는 도 1의 스크램블 회로의 동작을 설명하기 위한 도면이다.
도 7a 내지 도 7c는 도 1의 스크램블 회로의 동작을 설명하기 위한 도면이다.
도 8은 도 1의 스토리지 컨트롤러의 동작을 예시적으로 보여주는 순서도이다.
도 9는 도 8의 S200 단계를 설명하기 위한 예시적인 도면이다.
도 10a는 본 발명의 실시 예에 따른 스토리지 시스템을 보여주는 블록도이다.
도 10b는 도 10a의 복수의 채널들을 보여주는 타이밍도이다.
도 11은 스토리지 시스템의 동작을 예시적으로 보여주는 순서도이다.
도 12a는 모듈러 방식에서 데이터를 저장하는 순서를 보여주는 도면이다.
도 12b는 본 발명의 실시 예에 따라 데이터를 저장하는 순서를 보여주는 도면이다.
도 13a 내지 13c는 스크램블 회로의 동작을 설명하기 위한 도면이다.
도 14는 본 발명의 실시 예에 따른 스토리지 시스템을 보여주는 블록도이다.
도 15는 본 발명의 실시 예에 따른 스토리지 시스템이 적용된 SSD 시스템을 보여주는 블록도이다.
이하에서, 본 발명의 기술 분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있을 정도로, 본 발명의 실시 예들이 명확하고 상세하게 기재될 것이다.
도 1은 본 발명의 실시 예에 따른 스토리지 시스템을 보여주는 블록도이다. 도 1을 참조하면, 스토리지 시스템(100)은 호스트(110) 및 스토리지 장치(120)를 포함할 수 있다. 호스트(110)는 미리 정해진 인터페이스를 통해 스토리지 장치(120)와 통신할 수 있다. 예를 들어, 호스트(110)는 미리 정해진 인터페이스를 통해 스토리지 장치(120)에 데이터를 저장하거나 또는 스토리지 장치(120)에 저장된 데이터를 읽을 수 있다.
스토리지 장치(120)는 스토리지 컨트롤러(130) 및 불휘발성 메모리 장치(140), 및 버퍼 메모리(150)를 포함할 수 있다. 스토리지 컨트롤러(130)는 호스트(110)로부터의 다양한 요청들을 처리하도록 구성될 수 있다. 예를 들어, 스토리지 컨트롤러(130)는 호스트(110)의 요청에 따라 불휘발성 메모리 장치(140)에 데이터를 저장하거나 또는 저장된 데이터를 읽을 수 있다.
스토리지 컨트롤러(130)는 복수의 채널들(CH0~CH3)을 통해 불휘발성 메모리 장치(140)와 통신할 수 있다. 예시적으로, 도 1의 실시 예에서, 4개의 채널들(CH0~CH3)이 도시되어 있으나, 본 발명의 범위가 이에 한정되는 것은 아니며, 채널들의 개수는 구현 방식에 따라 증가 또는 감소될 수 있다.
불휘발성 메모리 장치(140)는 스토리지 컨트롤러(130)의 제어에 따라 데이터를 저장하거나 또는 저장된 데이터를 출력할 수 있다. 불휘발성 메모리 장치(140)는 복수의 불휘발성 메모리들(NVM)을 포함할 수 있다. 예시적으로, 불휘발성 메모리들(NVM) 각각은 NAND 플래시 메모리일 수 있다. 그러나 본 발명의 범위가 이에 한정되는 것은 아니며, 복수의 불휘발성 메모리들(NVM) 각각은 SRAM (Static RAM), DRAM (Dynamic RAM), SDRAM (Synchronous DRAM), ROM (Read Only Memory), PROM (Programmable ROM), EPROM (Electrically Programmable ROM), EEPROM (Electrically Erasable and Programmable ROM), 플래시 메모리 장치, PRAM (Phase-change RAM), MRAM (Magnetic RAM), RRAM (Resistive RAM), FRAM (Ferroelectric RAM) 등과 같은 다양한 메모리 장치들 중 적어도 하나를 포함할 수 있다.
버퍼 메모리(150)는 스토리지 컨트롤러(130)의 제어에 따라 데이터를 저장하거나 또는 저장된 데이터를 출력할 수 있다. 예시적으로 버퍼 메모리(150)는 DRAM일 수 있다. 그러나 본 발명의 범위가 이에 한정되는 것은 아니다. 버퍼 메모리(150)는 데이터가 불휘발성 메모리 장치(140)에 저장되기 전에 데이터를 저장할 수 있다. 예를 들어, 호스트에서 페치한 데이터는 우선 버퍼 메모리(150)에 저장될 수 있다. 이후에, 버퍼 메모리(150)에 저장된 데이터는 불휘발성 메모리 장치(140)의 물리 어드레스를 할당 받은 후, 물리 어드레스가 가리키는 공간에 저장될 수 있다.
버퍼 메모리(150)는 제0 내지 제3 버퍼 공간들(B0~B3)을 포함할 수 있다. 제0 버퍼 공간(B0)은 제0 플래시 변화 계층(FTL0)에 의해 관리될 수 있다. 제1 버퍼 공간(B1)은 제1 플래시 변화 계층(FTL1)에 의해 관리될 수 있다. 제2 버퍼 공간(B2)은 제2 플래시 변환 계층(FTL2)에 의해 관리될 수 있다. 제3 버퍼 공간(B3)은 제3 플래시 변환 계층(FTL3)에 의해 관리될 수 있다.
예시적으로, 스토리지 컨트롤러(130)는 스크램블 회로(131) 및 복수의 플래시 변환 계층들(FTL; Flash Translation Layer)(FTL0~FTL3)을 포함할 수 있다. 복수의 플래시 변환 계층들(FTL0~FTL3) 각각은 대응하는 채널들(CH0~CH3)을 통해 불휘발성 메모리 장치(140)를 제어할 수 있다. 예를 들어, 제0 플래시 변환 계층(FTL0)은 제0 채널(CH0)을 통해 제0 채널(CH0)과 연결된 복수의 불휘발성 메모리들(NVM)을 관리 또는 제어할 수 있다. 예시적인 실시 예에서, 제0 플래시 변환 계층(FTL0)은 제0 채널(CH0)과 연결된 복수의 불휘발성 메모리들(NVM)에 대한, 매핑 테이블 관리, 배드 블록 관리, 웨어 레벨링 등과 같은 다양한 유지 관리 동작을 수행할 수 있다. 제1 플래시 변환 계층(FTL1)은 제1 채널(CH1)을 통해 제1 채널(CH1)과 연결된 복수의 불휘발성 메모리들(NVM)을 관리할 수 있다. 제2 플래시 변환 계층(FTL2)은 제2 채널(CH2)을 통해 제2 채널(CH2)과 연결된 복수의 불휘발성 메모리들(NVM)을 관리할 수 있다. 제3 플래시 변환 계층(FTL3)은 제3 채널(CH3)을 통해 제3 채널(CH3)과 연결된 복수의 불휘발성 메모리들(NVM)을 관리할 수 있다.
스크램블 회로(131)는 호스트(110)로부터 논리 어드레스(LA)를 포함한 쓰기 요청들을 복수의 플래시 변환 계층들(FTL0~FTL3)에게 할당할 수 있다. 예를 들어, 논리 어드레스(LA)는 호스트(110)에 의해 관리되는 논리 블록 어드레스(LBA)를 가리킬 수 있고, 호스트(110)는 논리 블록 어드레스(LBA; logical block address)를 기반으로 스토리지 장치(120)의 저장 공간을 인식하거나 또는 관리할 수 있다. 예시적인 실시 예에서, 논리 블록 어드레스(LBA)는 호스트의 파일 시스템이 스토리지 장치의 저장 공간을 데이터 블록 단위로 데이터를 쓰고 읽는데 사용될 수 있다. 예시적인 실시 예에서, 스크램블 회로(131)는 논리 어드레스(LA)에 기초하여 쓰기 요청들을 복수의 플래시 변환 계층들(FTL0~FTL3)에게 할당할 수 있다.
예시적인 실시 예에서, 다양한 동작 조건 또는 동작 환경에 따라 스토리지 장치(120)의 성능은 일정하게 유지되지 않을 수 있다. 스토리지 장치(120)의 성능은 스토리지 장치(120) 및 호스트(110) 사이에서 전송되는 단위 시간당 데이터 양, 또는 데이터 전송 속도 등을 의미할 수 있다. 예를 들어, 불휘발성 메모리 장치(140)의 물리적인 특성 또는 다양한 환경 변수(예를 들어, 버퍼 메모리의 크기, 불휘발성 메모리 장치 내의 가용 메모리 용량 등)에 따라, 동일한 쓰기 요청에 대한 동작이 완료되는 시간이 상이할 수 있다. 특히, 특정 패턴의 데이터를 수신한 경우, 복수의 채널들(CH0~CH3) 중에서 특정 채널로 데이터 쏠림 현상이 발생할 수 있다. 이로 인하여, 스토리지 장치(120)의 성능 변동(performance fluctuation)이 유발될 수 있다. 즉, 스토리지 장치(120)에서는, 병렬화를 극대화해야 함에도 불구하고, 복수의 자원들에 대해서 쓰기 요청들의 불균등한 할당으로 인한 성능 하락이 발생할 수 있다.
스토리지 장치(120)는 균일한 성능 또는 최대의 성능을 제공하기 위하여, 스크램블 회로(131)는 논리 어드레스(LA)에 대한 스크램블 동작을 수행할 수 있다. 스크램블 동작은 호스트(110)로부터 수신된 논리 어드레스(LA)를 스크램블하여 스크램블된 논리 어드레스를 생성하고, 스크램블된 논리 어드레스를 기반으로 대응하는 요청들을 복수의 플래시 변환 계층들(FTL0~FTL3) 각각으로 할당하는 동작을 가리킬 수 있다. 예시적인 실시 예에서, 스크램블 동작에 의해, 논리 어드레스의 구간에 따라 복수의 플래시 변환 계층들(FTL0~FTL3)로 할당되는 순서가 가변될 수 있다. 이 경우, 요청들이 복수의 플래시 변환 계층들(FTL0~FTL3)로 상대적으로 균일하게 할당됨과 동시에, 데이터의 순차성이 유지될 수 있다. 따라서, 스토리지 장치의 성능이 향상될 수 있다. 본 발명에 따른 스크램블 회로(131)의 구성 및 동작은 이하의 도면들을 참조하여 더욱 상세하게 설명된다.
도 2는 도 1의 스토리지 컨트롤러를 예시적으로 보여주는 블록도이다. 도 1 및 도 2를 참조하면, 스토리지 컨트롤러(130)는 스크램블 회로(131), 프로세서(132), RAM(133), 호스트 인터페이스 회로(134), 및 불휘발성 메모리 인터페이스 회로(135)를 포함할 수 있다.
스크램블 회로(131)는 호스트 인터페이스 회로(134)로부터 수신한 쓰기 요청에 포함된 논리 어드레스를 스크램블할 수 있다. 스크램블 회로(131)는 스크램블된 논리 어드레스를 생성할 수 있다. 스크램블 회로(131)는 쓰기, 및 읽기 요청들을 스크램불된 논리 어드레스에 기초하여 복수의 플래시 변환 계층들(FTL0~FTL3)에게 할당할 수 있다. 스크램블 회로(131)의 구체적인 구성 및 기능은 이하의 도면에서 설명된다.
프로세서(132)는 스토리지 컨트롤러(130)의 제반 동작을 제어할 수 있다. 또는, 프로세서(132)는 스토리지 컨트롤러(130)가 동작하는데 필요한 다양한 동작을 수행하도록 구성될 수 있다.
RAM(133)은 스토리지 컨트롤러(130)가 동작하는데 필요한 다양한 정보를 저장하도록 구성될 수 있다. RAM(133)은 스토리지 컨트롤러(130)의 버퍼 메모리, 캐시 메모리, 또는 동적 메모리일 수 있다. 예시적인 실시 예에서, RAM(133)은 및 복수의 플래시 변환 계층들(FTL0~FTL3)을 저장할 수 있다. RAM(133)에 저장된 복수의 플래시 변환 계층들(FTL0~FTL3)은 프로세서(132)에 의해 구동될 수 있다.
호스트 인터페이스 회로(134)는 미리 정해진 인터페이스 규약을 기반으로 호스트(110)와 통신할 수 있다. 호스트 인터페이스 회로(134)는 미리 정해진 인터페이스 규약을 기반으로 구현될 수 있다. 예시적인 실시 예에서, 미리 정해진 인터페이스 규약은 SATA(Serial ATA) 인터페이스, PCIe(Peripheral Component Interconnect Express) 인터페이스, SAS(Serial Attached SCSI) 인터페이스, NVMe(Nonvolatile Memory express) 인터페이스, UFS(Universal Flash Storage) 인터페이스 등과 같은 다양한 인터페이스들 중 적어도 하나를 포함할 수 있다.
불휘발성 메모리 인터페이스 회로(135)는 미리 정해진 인터페이스 규약을 기반으로, 불휘발성 메모리 장치(140)와 통신할 수 있다. 예시적으로, 불휘발성 메모리 인터페이스 회로(135)는 물리적으로 구분된 복수의 채널들(CH0~CH3)들을 제공할 수 있다. 예시적인 실시 예에서, 미리 정해진 인터페이스 규약은 낸드 인터페이스일 수 있다.
도 3a 내지 도 3c는 본 발명에 따른 불휘발성 메모리 장치들의 다양한 토폴로지들을 예시적으로 보여주는 블록도이다. 예시적으로, 도 3a 내지 도 3c를 참조하여 스토리지 컨트롤러(130)가 복수의 메모리 그룹들을 인식할 수 있는 다양한 토폴로지들이 설명된다.
도1 및 도 3a를 참조하면, 불휘발성 메모리 장치(140)는 복수의 불휘발성 메모리들(NVM00, NVM10, NVM20, NVM30)을 포함할 수 있다. 복수의 불휘발성 메모리들(NVM00, NVM10, NVM20, NVM30) 각각은 하나의 반도체 칩, 하나의 반도체 다이, 또는 하나의 반도체 패키지로 구현될 수 있다.
복수의 불휘발성 메모리들(NVM00, NVM10, NVM20, NVM30)은 4-채널/1-웨이의 구조를 가질 수 있다. 예를 들어, 불휘발성 메모리(NVM00)는 제0 채널(CH0)과 연결되고, 불휘발성 메모리(NVM10)는 제1 채널(CH1)과 연결되고, 불휘발성 메모리(NVM20)는 제2 채널(CH2)과 연결되고, 불휘발성 메모리(NVM30)는 제3 채널(CH3)과 연결될 수 있다. 복수의 불휘발성 메모리들(NVM00, NVM10, NVM20, NVM30)은 제0 웨이(WAY0)를 구성할 수 있다.
예시적인 실시 예에서, 복수의 불휘발성 메모리들(NVM00, NVM10, NVM20, NVM30)은 복수의 그룹들(Group0~Group3)로 분할될 수 있다. 제0 메모리 그룹(Group0)은 제0 채널(CH0)에 연결된 불휘발성 메모리 장치(NVM00)를 포함할 수 있고, 제1 메모리 그룹(Group1)은 제1 채널(CH1)에 연결된 불휘발성 메모리 장치(NVM10)를 포함할 수 있고, 제2 메모리 그룹(Group2)은 제2 채널(CH2)에 연결된 불휘발성 메모리 장치(NVM20)를 포함할 수 있고, 제3 메모리 그룹(Group3)은 제3 채널(CH3)에 연결된 불휘발성 메모리 장치(NVM30)를 포함할 수 있다.
복수의 메모리 그룹들(Group0~Group3)들은 각각 대응하는 플래시 변환 계층들(FTL0~FTL3)에 의해 관리 또는 제어될 수 있다. 예를 들어, 제0 메모리 그룹(Group0)은 제0 플래시 변환 계층(FTL0)에 의해 관리되고, 제1 메모리 그룹(Group1)은 제1 플래시 변환 계층(FTL1)에 의해 관리되고, 제2 메모리 그룹(Group2)은 제2 플래시 변환 계층(FTL2)에 의해 관리되고, 제3 메모리 그룹(Group3)은 제3 플래시 변환 계층(FTL3)에 의해 관리될 수 있다.
도1, 및 도 3b를 참조하면, 불휘발성 메모리 장치(140)는 복수의 불휘발성 메모리들(NVM00~NVM71)을 포함할 수 있다. 도 3b의 복수의 불휘발성 메모리들(NVM00~NVM71)은 8-채널/2-웨이의 구조를 가질 수 있다.
예를 들어, 복수의 불휘발성 메모리들(NVM00~NVM71) 중 제1 일부(NVM00, NVM01)는 제0 채널(CH0)을 통해 스토리지 컨트롤러(130)와 통신할 수 있고, 제2 일부(NVM10, NVM11)는 제1 채널(CH1)을 통해 스토리지 컨트롤러(130)와 통신할 수 있고, 제3 일부(NVM20, NVM21)는 제2 채널(CH2)을 통해 스토리지 컨트롤러(130)와 통신할 수 있고, 제4 일부(NVM30, NVM31)는 제3 채널(CH3)을 통해 스토리지 컨트롤러(130)와 통신할 수 있고, 제5 일부(NVM40, NVM41)는 제4 채널(CH4)을 통해 스토리지 컨트롤러(130)와 통신할 수 있고, 제6 일부(NVM50, NVM51)는 제5 채널(CH5)을 통해 스토리지 컨트롤러(130)와 통신할 수 있고, 제7 일부(NVM60, NVM61)는 제6 채널(CH6)을 통해 스토리지 컨트롤러(130)와 통신할 수 있고, 제8 일부(NVM70, NVM71)는 제7 채널(CH7)을 통해 스토리지 컨트롤러(130)와 통신할 수 있다.
복수의 불휘발성 메모리들(NVM00~NVM71)은 복수의 웨이들(WAY0~WAY1)을 구성할 수 있다. 예를 들어, 제0 웨이(WAY0)는 제1 일부(NVM00, NVM10, NVM20, NVM30, NVM40, NVM 50, NVM60, NVM70)를 포함할 수 있고, 제1 웨이(WAY1)는 제2 일부(NVM01, NVM11, NVM21, NVM31, NVM41, NVM51, NVM61, NVM71)를 포함할 수 있다. 즉, 불휘발성 메모리 장치(140)는 멀티-웨이/멀티-채널의 구조를 가질 수 있으며, 본 발명의 범위가 이에 한정되는 것은 아니다.
복수의 불휘발성 메모리들(NVM00~NVM71)은 복수의 그룹들(Group0~Group3)로 분할될 수 있다. 제0 메모리 그룹(Group0)은 복수의 불휘발성 메모리들(NVM00~NVM71) 중 제0 및 제1 채널들(CH0, CH1)과 연결된 제1 일부(NVM00, NVM01, NVM10, NVM11)를 포함할 수 있고, 제1 메모리 그룹(Group1)은 복수의 불휘발성 메모리들(NVM00~NVM71) 중 제2 및 제3 채널들(CH2, CH3)과 연결된 제2 일부(NVM20, NVM21, NVM30, NVM31)를 포함할 수 있고, 제2 메모리 그룹(Group2)은 복수의 불휘발성 메모리들(NVM00~NVM71) 중 제4 및 제5 채널들(CH4, CH5)과 연결된 제3 일부(NVM40, NVM41, NVM50, NVM51)를 포함할 수 있고, 제3 메모리 그룹(Group3)은 복수의 불휘발성 메모리들(NVM00~NVM71) 중 제6 및 제7 채널들(CH6, CH7)과 연결된 제4 일부(NVM60, NVM61, NVM70, NVM71)를 포함할 수 있다.
복수의 메모리 그룹들(Group0~Group3)들은 각각 대응하는 플래시 변환 계층들(FTL0~FTL3)에 의해 관리 또는 제어될 수 있다. 이에 대한 상세한 설명은 도 3a에서 상술하였으므로 생략된다.
다음으로, 도 1 및 도 3c를 참조하면, 불휘발성 메모리 장치(140)는 복수의 불휘발성 메모리들(NVM00~NVM71)을 포함할 수 있다. 도 3c의 복수의 불휘발성 메모리들(NVM00~NVM71)은 도 3b의 복수의 불휘발성 메모리들(NVM00~NVM71)과 유사한 구조(즉, 8-채널/2-웨이의 구조)를 가질 수 있다.
복수의 불휘발성 메모리들(NVM00~NVM71)은 복수의 그룹들(Group0~Group3)로 분할될 수 있다. 제0 메모리 그룹(Group0)은 복수의 불휘발성 메모리들(NVM00~NVM71) 중 제0 웨이(WAY 0)에 대응하는 제1 일부(NVM00, NVM10, NVM20, NVM30)를 포함할 수 있고, 제1 메모리 그룹(Group1)은 복수의 불휘발성 메모리들(NVM00~NVM71) 중 제0 웨이(WAY 0)에 대응하는 제2 일부(NVM40, NVM50, NVM60, NVM70)를 포함할 수 있고, 제2 메모리 그룹(Group2)은 복수의 불휘발성 메모리들(NVM00~NVM71) 중 제1 웨이(WAY 1)에 대응하는 제3 일부(NVM01, NVM11, NVM21, NVM31)를 포함할 수 있다. 제3 메모리 그룹(Group3) 복수의 불휘발성 메모리들(NVM00~NVM71) 중 제1 웨이(WAY 1)에 대응하는 제4 일부(NVM41, NVM51, NVM61, NVM71)를 포함할 수 있다.
스토리지 컨트롤러(130)는 앞서 설명된 바와 같이, 불휘발성 메모리 장치(140)의 저장 영역을 복수의 메모리 그룹들(Group0~Group3)로 논리적 또는 물리적으로 구분하여 인식할 수 있다. 스토리지 컨트롤러(130)는 논리적 또는 물리적으로 구분된 복수의 메모리 그룹들(Group0~Group3) 각각을 서로 독립적으로 관리할 수 있다.
예시적으로, 도 3a 내지 3c를 참조하면 복수의 메모리 그룹들을 식별할 수 있는 스토리지 장치의 다양한 토폴로지들이 설명되었으나, 이하에서 설명의 편의를 위하여 도 3a를 중심으로 설명된다.
도 4는 도 1의 불휘발성 메모리 메모리를 예시적으로 보여주는 블록도이다. 도 1, 및 도 4를 참조하면, 불휘발성 메모리(NVM)는 메모리 셀 어레이(141), 어드레스 디코더(142), 제어 로직 회로(143), 페이지 버퍼 회로(144), 및 입출력 회로(145)를 포함할 수 있다.
메모리 셀 어레이(141)는 복수의 플레인들(PL0~PL3)을 포함할 수 있다. 복수의 플레인들(PL0~PL3) 각각은 복수의 메모리 블록들(BLK11~BLK14, BLK21~BLK24, BLK31~BLK34, BLK41~BLK44)을 포함할 수 있다. 예시적인 실시 예에서, 동일한 플레인(예를 들어, PL0)에 포함된 복수의 메모리 블록들(예를 들어, BLK11~BLK14)은 동일한 비트라인을 공유하도록 구성될 수 있으나, 본 발명의 범위가 이에 한정되는 것은 아니다.
복수의 메모리 블록들(BLK11~BLK14, BLK21~BLK24, BLK31~BLK34, BLK41~BLK44) 각각은 복수의 페이지들을 저장하도록 구성될 수 있다. 예를 들어, 복수의 메모리 블록들 (BLK11~BLK14, BLK21~BLK24, BLK31~BLK34, BLK41~BLK44) 각각은 복수의 메모리 셀들을 포함할 수 있고, 복수의 메모리 셀들은 복수의 워드라인들과 연결될 수 있다. 하나의 워드라인과 연결된 메모리 셀들은 적어도 하나의 페이지를 저장하도록 구성될 수 있다. 하나의 워드라인과 연결된 메모리 셀들에 저장되는 페이지의 개수는 메모리 셀들에 대한 프로그램 방식(예를 들어, SLC, MLC, TLC, QLC 등)에 따라 달라질 수 있다.
도면의 간결성을 위하여, 하나의 불휘발성 메모리(NVM)가 제0 내지 제3 플레인들(PL0~PL3)을 포함하고, 플레인들(PL0~PL3) 각각은 복수의 메모리 블록들(BLK11~BLK14, BLK21~BLK24, BLK31~BLK34, BLK41~BLK44)을 포함하는 것으로 도시되어 있으나, 본 발명의 범위가 이에 한정되는 것은 아니며, 플레인들의 개수, 메모리 블록들의 개수, 또는 메모리 셀 당 저장되는 비트 개수는 다양하게 변형될 수 있다.
어드레스 디코더(142)는 스트링 선택 라인들(SSL), 워드라인들(WL), 및 접지 선택 라인들(GSL)을 통해 메모리 셀 어레이(141)와 연결될 수 있다. 어드레스 디코더(142)는 스토리지 컨트롤러(130)로부터 어드레스(ADDR)를 수신하고, 수신된 어드레스(ADDR)를 디코딩하고, 디코딩된 어드레스를 기반으로 워드라인들(WL)의 전압을 제어할 수 있다.
제어 로직 회로(143)는 스토리지 컨트롤러(130)로부터 커맨드(CMD) 및 제어 신호(CTRL)를 수신하고, 수신된 신호들을 기반으로 어드레스 디코더(142), 페이지 버퍼 회로(144), 및 입출력 회로(145)를 제어할 수 있다.
페이지 버퍼 회로(144)는 비트라인들(BL)을 통해 메모리 셀 어레이(141)와 연결된다. 페이지 버퍼 회로(144)는 메모리 셀 어레이(141)로부터 읽은 데이터 또는 메모리 셀 어레이(141)에 저장될 데이터를 임시 저장할 수 있다.
입출력 회로(145)는 스토리지 컨트롤러(130)로부터 수신된 데이터(DATA)를 페이지 버퍼 회로(144)로 전달하거나 또는 페이지 버퍼 회로(144)로부터 수신된 데이터(DATA)를 스토리지 컨트롤러(130)로 전송할 수 있다.
예시적으로, 스토리지 컨트롤러(130)와 불휘발성 메모리들(NVM) 사이의 다양한 신호들(예를 들어, 어드레스(ADDR), 커맨드(CMD), 제어 신호(CTRL), 및 데이터(DATA))는 복수의 채널들(CH0~CH3) 중 대응하는 채널을 통해 송수신될 수 있다.
도 5a 내지 도 5c는 도 1의 스크램블 회로의 동작을 설명하기 위한 도면이다. 예시적인 실시 예에서, 도 5a를 참조하여, 순차 논리 어드레스들에 대한 쓰기 요청을 수신하는 예시가 설명되고, 도 5b를 참조하여, 특정 패턴의 논리 어드레스들에 대한 쓰기 요청을 수신하는 예시가 설명되고, 도 5c를 참조하여, 특정 논리 어드레스에 대한 쓰기 요청을 반복적으로 수신하는 예시가 설명된다.
먼저, 도 5a를 참조하면, 스토리지 시스템(100)은 호스트(110) 및 스토리지 장치(120)를 포함할 수 있다. 스토리지 장치(120)는 스토리지 컨트롤러(130), 불휘발성 메모리 장치(140), 및 버퍼 메모리(150)를 포함할 수 있다. 스토리지 컨트롤러(130)는 복수의 채널들(CH0~CH3)을 통해 불휘발성 메모리 장치(140)와 통신할 수 있다. 스토리지 컨트롤러(130)는 스크램블 회로(131), 및 제0 내지 제3 플래시 변환 계층들(FTL0~FTL3)을 포함할 수 있다.
이하에서, 도면의 간결성 및 설명의 편의를 위하여, 불휘발성 메모리 장치(140)는 도 3a를 참조하여 설명된 토폴로지를 갖는 것으로 가정한다. 즉, 불휘발성 메모리 장치(140)는 복수의 불휘발성 메모리들(NVM00, NVM10, NVM20, NVM30)을 포함하고, 복수의 불휘발성 메모리들(NVM00, NVM10, NVM20, NVM30)중 제0 채널(CH0)과 연결된 불휘발성 메모리(NVM00)는 제0 메모리 그룹(Group0)에 포함되고, 제1 채널(CH1)과 연결된 불휘발성 메모리(NVM10)는 제1 메모리 그룹(Group1)에 포함되고, 제2 채널(CH2)과 연결된 불휘발성 메모리(NVM20)는 제2 메모리 그룹(Group2)에 포함되고, 제3 채널(CH3)과 연결된 불휘발성 메모리(NVM30)는 제3 메모리 그룹(Group3)에 포함될 수 있다.
제0 메모리 그룹(Group0)은 제0 플래시 변환 계층(FTL0)에 의해 관리되고, 제1 메모리 그룹(Group1)은 제1 플래시 변환 계층(FTL1)에 의해 관리되고, 제2 메모리 그룹(Group2)은 제2 플래시 변환 계층(FTL2)에 의해 관리되고, 제3 메모리 그룹(Group3)은 제3 플래시 변환 계층(FTL3)에 의해 관리될 수 있다. 그러나 본 발명의 범위가 이에 한정되는 것은 아니며, 도 3a의 구조를 갖는 불휘발성 메모리 장치(140)를 기준으로 스크램블 회로의 동작이 설명되지만, 도 3b, 도 3c, 또는 도시되지 않은 다양한 구조를 갖는 불휘발성 메모리 장치에 적용될 수 있다.
또한, 이하에서, 설명의 편의를 위하여, 쓰기 요청을 기준으로 스크램블 회로의 동작을 설명하지만, 이는 읽기 동작을 포함하는 다른 동작에 대해서도 적용될 수 있으며, 본 발명의 범위가 이에 한정되는 것은 아니다. 이하의 도면에서, 도면의 간결성을 위하여, 논리 어드레스(LA)만 도시되어 있으나, 이는 해당 논리 어드레스를 포함하는 쓰기 요청(예를 들어, 커맨드) 또는 해당 논리 어드레스에 대응하는 페이지 데이터를 가리킬 수 있다.
버퍼 메모리(150)는 제0 내지 제3 버퍼 공간들(B0~B3)을 포함할 수 있다. 버퍼 메모리(150)는 도 1을 참조하여 설명되었으므로, 이에 대한 상세한 설명은 생략된다.
호스트(110)는 스토리지 장치(120)로 제0 내지 제7 논리 어드레스들(LA0~LA7)에 대응하는 데이터에 대한 쓰기 요청(예를 들어, 커맨드)을 전송할 수 있다. 또는 스토리지 장치(120)는 호스트(110) 메모리에 저장된 쓰기 요청(커맨드), 및 페이지 데이터를 페치할 수 있다. 제0 내지 제7 논리 어드레스들(LA0~LA7) 각각은 대응하는 논리 어드레스 값을 갖는 논리 어드레스를 의미할 수 있다. 예시적인 실시 예에서, 제0 논리 어드레스(LA0)는 논리 어드레스 값이 “0”인 논리 어드레스를 의미할 수 있다. 논리 어드레스 값은 저장 공간에서 데이터가 저장된 주소 내지 위치를 가리킬 수 있다.
제0 내지 제7 논리 어드레스들(LA0~LA7)은 순차 어드레스(sequential address) 또는 순차 논리 어드레스일 수 있다. 순차 어드레스는 호스트(110)에 의해 관리되는 연속적인 어드레스의 집합을 의미할 수 있다. 순차 데이터는 순차 어드레스에 대응하는 데이터의 집합을 의미할 수 있다. 예시적인 실시 예에서, 제0 내지 제7 논리 어드레스들(LA0~LA7)이 순차 어드레스인 것은, 제0 내지 제7 논리 어드레스들(LA0~LA7) 각각의 사이에 호스트(110)에 의해 관리되는 다른 논리 어드레스가 존재하지 않음을 의미할 수 있다. 즉, 제0 내지 제7 논리 어드레스들(LA0~LA7)은 논리 어드레스 값들이 순차성을 가질 수 있다.
스크램블 회로(131)는 수신한 쓰기 요청들을 복수의 플래시 변환 계층들(FTL0~FTL3)에 모듈러 방식으로 할당할 수 있다. 모듈러 방식은 논리 어드레스를 복수의 플래시 변환 계층들(FTL0~FLT3)의 개수로 모듈러 연산을 수행하여, 그 결과값을 기준으로 쓰기 요청들을 할당하는 것을 가리킨다. 예를 들어, 스크램블 회로(131)는 복수의 플래시 변환 계층들(FTL0~FTL3)의 개수를 기반으로 논리 어드레스에 대한 모듈러 연산을 수행하여 결과값을 생성할 수 있다. 제0 및 제4 논리 어드레스들(LA0, LA4)에 대한 결과값들은 제0 값일 수 있고, 제1 및 제5 논리 어드레스들(LA1, LA5)에 대한 결과값들은 제1 값일 수 있고, 제2 및 제6 논리 어드레스들(LA2, LA6)에 대한 결과값들은 제2 값일 수 있고, 제3 및 제7 논리 어드레스들(LA3, LA7)에 대한 결과값들은 제3 값일 수 있다.
스크램블 회로(131)는 모듈러 연산의 결과값이 제0 값인 제0 및 제4 논리 어드레스들(LA0, LA4)에 대응하는 쓰기 요청들을 제0 플래시 변환 계층(FTL0)에 할당할 수 있고, 결과값이 제1 값인 제1 및 제5 논리 어드레스들(LA1, LA5)에 대응하는 쓰기 요청들을 제1 플래시 변환 계층(FTL1)에 할당할 수 있고, 결과값이 제2 값인 제2 및 제6 논리 어드레스들(LA2, LA6)에 대응하는 쓰기 요청들을 제2 플래시 변환 계층(FTL2)에 할당할 수 있고, 결과값이 제3 값인 제3 및 제7 논리 어드레스들(LA3, LA7)에 대응하는 쓰기 요청들을 제3 플래시 변환 계층(FTL3)에 할당할 수 있다.
호스트(110)로부터 수신된 데이터들은 우선적으로 버퍼 메모리(150)에 저장될 수 있다. 제0, 및 제4 논리 어드레스들(LA0, LA4)에 대응하는 데이터들은 제0 버퍼 공간(B0)에 저장될 수 있다. 제1, 및 제5 논리 어드레스들(LA1, LA5)에 대응하는 데이터들은 제1 버퍼 공간(B1)에 저장될 수 있다. 제2, 및 제6 논리 어드레스들(LA2, LA6)에 대응하는 데이터들은 제2 버퍼 공간(B2)에 저장될 수 있다. 제3, 및 제7 논리 어드레스들(LA3, LA7)에 대응하는 데이터들은 제3 버퍼 공간(B3)에 저장될 수 있다.
복수의 버퍼 공간들(B0~B3)에 저장된 데이터는 복수의 채널들(CH0~CH3)을 통해서 대응하는 플래시 변환 계층들(FTL0~FTL3)의 제어에 따라 불휘발성 메모리들 (NVM00, NVM10, NVM20, NVM30)에 저장될 수 있다. 제0, 및 제4 논리 어드레스들(LA0, LA4)에 대응하는 데이터들은 제0 채널(CH0)을 통해 제0 플래시 변환 계층(FTL0)의 제어에 따라 제0 메모리 그룹(Group0)에 저장될 수 있다. 제1, 및 제5 논리 어드레스들(LA1, LA5)에 대응하는 데이터들은 제1 채널(CH1)을 통해 제1 플래시 변환 계층(FTL1)의 제어에 따라 제1 메모리 그룹(Group1)에 저장될 수 있다. 제2, 및 제6 논리 어드레스들(LA2, LA6)에 대응하는 데이터들은 제2 채널(CH2)을 통해 제2 플래시 변환 계층(FTL2)의 제어에 따라 제2 메모리 그룹(Group2)에 저장될 수 있다. 제3, 및 제7 논리 어드레스들(LA3, LA7)에 대응하는 데이터들은 제3 채널(CH3)을 통해 제3 플래시 변환 계층(FTL3)의 제어에 따라 제3 메모리 그룹(Group3)에 저장될 수 있다.
도 5b를 참조하면, 스토리지 시스템(100)의 구성은 상술하였으므로 이에 대한 상세한 설명은 생략된다. 호스트(110)는 스토리지 장치(120)로 특정 패턴의 논리 어드레스들(LA0, LA4, LA8, LA12, LA16, LA20, LA24, LA28)에 대한 쓰기 요청을 전송할 수 있다. 특정 패턴의 논리 어드레스들은 논리 어드레스들 사이의 간격 또는 값들의 차이가 일정한 값을 갖는 일련의 논리 어드레스의 집합을 가리킬 수 있다. 좀 더 상세하게는, 논리 어드레스 간격이 "4"인 경우, 특정 패턴의 논리 어드레스들은 제0, 제4, 제8, 제12, 제16, 제20, 제24, 제28 논리 어드레스들(LA0, LA4, LA8, LA12, LA16, LA20, LA24, LA28)등의 일련의 논리 어드레스들의 집합을 가리킬 수 있다. 예시적인 실시 예에서, 특정 패턴을 갖는 논리 어드레스들 사이의 간격의 값은 스토리지 컨트롤러(130)에서 구동되는 플래시 변환 계층들의 개수를 기반으로 결정될 수 있다.
앞서 설명된 바와 같이, 스크램블 회로(131)는 복수의 플래시 변환 계층들(FTL0~FTL3)의 개수를 기반으로 수신된 논리 어드레스에 대한 모듈러 연산을 수행하여, 결과값을 생성하고, 생성된 결과값을 기반으로 쓰기 요청들을 복수의 플래시 변환 계층들(FTL0~FLT3)로 할당할 수 있다. 이 때, 논리 어드레스들(LA0, LA4, LA8, LA12, LA16, LA20, LA24, LA28)이 특정 패턴을 갖는 경우, 논리 어드레스들에 대한 모듈러 연산의 결과값은 동일한 값(예를 들어, 제0 값)일 수 있다. 이 경우, 스크램블 회로(131)는 논리 어드레스들(LA0, LA4, LA8, LA12, LA16, LA20, LA24, LA28)에 대한 쓰기 요청들 전부를 하나의 플래시 변환 계층(예를 들어, 제0 플래시 변환 계층(FTL0))으로 할당할 수 있다. 따라서, 제0, 제4, 제8, 제12, 제16, 제20, 제24, 및 제28 논리 어드레스들(LA0, LA4, LA8, LA12, LA16, LA20, LA24, LA28)에 대응하는 데이터들은 모두 제0 플래시 변환 계층(FTL0)에 의해 관리되는 제0 버퍼 공간(B0)에 저장될 수 있다. 이후에, 제0, 제4, 제8, 제12, 제16, 제20, 제24, 및 제28 논리 어드레스들(LA0, LA4, LA8, LA12, LA16, LA20, LA24, LA28)에 대응하는 데이터들은 제0 채널(CH0)을 통해 제0 플래시 변환 계층(FTL0)의 제어에 따라 제0 메모리 그룹(Group0)에 저장될 수 있다.
도 5c를 참조하면, 스토리지 시스템(100)은 구성은 상술하였으므로 이에 대한 상세한 설명은 생략된다. 호스트(110)는 스토리지 장치(120)로 동일한 논리 어드레스에 대응하는 데이터에 대한 쓰기 요청을 반복하여 전송할 수 있다. 즉 호스트(110)는 제0 논리 어드레스(LA0)에 대응하는 데이터에 대한 쓰기 요청을 반복하여 스토리지 장치(120)에게 전송할 수 있다.
호스트(110)는 스토리지 장치(120)에게 FUA(Forced Unit Access)를 포함한 커맨드를 전송할 수 있다. FUA는 데이터의 캐시의 사용 여부를 가리킬 수 있다. 즉 호스트(110)는 FUA를 이용하여 데이터의 캐시를 사용하지 않고 쓰기 요청을 전송할 수 있다. 또는 호스트(110)는 쓰기 요청을 전송 한 후에 플러쉬(Flush) 커맨드를 전송할 수 있다. 이러한 경우, 동일한 논리 어드레스에 대하여 복수의 쓰기 요청을 수신하고 불휘발성 메모리 장치(140)에 저장되기 전임에도 불구하고, 스토리지 컨트롤러(130)는 마지막 쓰기 요청에 대한 데이터만을 저장하는 것이 아니라, 복수의 쓰기 요청에 대한 데이터 모두를 불휘발성 메모리 장치(140)에 저장할 수 있다.
스토리지 컨트롤러(130)는 수신한 쓰기 요청들을 복수의 플래시 변환 계층들(FTL0~FTL3)에 모듈러 방식으로 할당할 수 있다. 즉, 스토리지 컨트롤러(130)는 총 8번의 제0 논리 어드레스(LA0)에 대응하는 쓰기 요청들을 모두 제0 플래시 변환 계층(FTL0)에 할당할 수 있다. 따라서, 제0 논리 어드레스(LA0)에 대응하는 총 8개의 데이터들은 모두 제0 플래시 변환 계층(FTL0)에 의해 관리되는 제0 버퍼 공간(B0)에 저장될 수 있다. 제0 버퍼 공간(B0)에 저장된 데이터들은 제0 채널(CH0)을 통해 제0 플래시 변환 계층(FTL0)의 제어에 따라 제0 메모리 그룹(Group0)에 저장될 수 있다.
도 6a 내지 도 6c는 도 1의 스크램블 회로의 동작을 설명하기 위한 도면이다. 예시적인 실시 예에서, 도 6a를 참조하여, 순차 논리 어드레스들에 대한 쓰기 요청을 수신하는 예시가 설명되고, 도 6b를 참조하여, 특정 패턴의 논리 어드레스들에 대한 쓰기 요청을 수신하는 예시가 설명되고, 도 6c를 참조하여, 특정 논리 어드레스에 대한 쓰기 요청을 반복적으로 수신하는 예시가 설명된다.
먼저, 도 6a를 참조하면, 스토리지 시스템(100)의 구성은 상술하였으므로 이에 대한 상세한 설명은 생략된다. 호스트(110)는 스토리지 장치(120)로 제0 내지 제7 논리 어드레스들(LA0~LA7)에 대응하는 데이터에 대한 쓰기 요청(예를 들어, 커맨드)을 전송할 수 있다. 또는 스토리지 장치(120)는 호스트(110) 메모리에 저장된 쓰기 요청(커맨드), 및 페이지 데이터를 페치할 수 있다.
스토리지 컨트롤러(130)는 수신한 쓰기 요청들을 복수의 플래시 변환 계층들(FTL0~FTL3)에 랜덤 방식으로 할당할 수 있다. 랜덤 방식은 논리 어드레스와 관계없이 랜덤하게 복수의 플래시 변환 계층들(FTL0~FTL3)에게 쓰기 요청들을 할당하는 것을 가리킨다.
예시적인 실시 예에서, 스크램블 회로(131)는 제0, 제5, 및 제7 논리 어드레스들(LA0, LA5, LA7)에 대응하는 쓰기 요청들을 제0 플래시 변환 계층(FTL0)에 할당할 수 있고, 제3 논리 어드레스(LA3)에 대응하는 쓰기 요청을 제1 플래시 변환 계층(FTL1)에 할당할 수 있고, 제1, 및 제6 논리 어드레스들(LA1, LA6)에 대응하는 쓰기 요청들을 제2 플래시 변환 계층(FTL2)에 할당할 수 있고, 제2, 및 제4 논리 어드레스들(LA2, LA4)에 대응하는 쓰기 요청들을 제3 플래시 변환 계층(FTL3)에 할당할 수 있다. 이는 랜덤 방식으로 할당되는 예시적인 실시 예이며, 발명의 범위는 이에 한정되는 않는다.
호스트(110)로부터 수신된 데이터들은 우선적으로 버퍼 메모리(150)에 저장될 수 있다. 제0, 제5, 및 제7 논리 어드레스들(LA0, LA5, LA7)에 대응하는 데이터들은 제0 플래시 변환 계층(FTL0)에 의해 관리되는 제0 버퍼 공간(B0)에 저장될 수 있다. 제3 논리 어드레스(LA3)에 대응하는 데이터는 제1 플래시 변환 계층(FTL1)에 의해 관리되는 제1 버퍼 공간(B1)에 저장될 수 있다. 제1, 및 제6 논리 어드레스들(LA1, LA6)에 대응하는 데이터들은 제2 플래시 변환 계층(FTL2)에 의해 관리되는 제2 버퍼 공간(B2)에 저장될 수 있다. 제2, 및 제4 논리 어드레스들(LA2, LA4)에 대응하는 데이터들은 제3 플래시 변환 계층(FTL3)에 의해 관리되는 제3 버퍼 공간(B3)에 저장될 수 있다.
복수의 버퍼 공간들(B0~B3)에 저장된 데이터들은 대응하는 복수의 채널들(CH0~CH3)을 통해서 대응하는 복수의 플래시 변환 계층들(FTL0~FTL3)의 제어에 따라 불휘발성 메모리들(NVM00, NVM10, NVM20, NVM30)에 저장될 수 있다. 예를 들어, 제0, 제5, 및 제7 논리 어드레스들(LA0, LA5, LA7)에 대응하는 데이터들은 제0 채널(CH0)을 통해 제0 플래시 변환 계층(FTL0)의 제어에 따라 제0 메모리 그룹(Group0)에 저장될 수 있다. 제3 논리 어드레스(LA3)에 대응하는 데이터들은 제1 채널(CH1)을 통해 제1 플래시 변환 계층(FTL1)의 제어에 따라 제1 메모리 그룹(Group1)에 저장될 수 있다. 제1, 및 제6 논리 어드레스들(LA1, LA6)에 대응하는 데이터들은 제2 채널(CH2)을 통해 제2 플래시 변환 계층(FTL2)의 제어에 따라 제2 메모리 그룹(Group2)에 저장될 수 있다. 제2, 및 제4 논리 어드레스들(LA2, LA4)에 대응하는 데이터들은 제3 채널(CH3)을 통해 제3 플래시 변환 계층(FTL3)의 제어에 따라 제3 메모리 그룹(Group3)에 저장될 수 있다.
도 6b를 참조하면, 스토리지 시스템(100)의 구성은 상술하였으므로 이에 대한 상세한 설명은 생략된다. 호스트(110)는 스토리지 장치(120)로 특정 패턴의 논리 어드레스들(LA0, LA4, LA8, LA12, LA16, LA20, LA24, LA28)에 대한 쓰기 요청을 전송할 수 있다.
스토리지 컨트롤러(130)는 수신한 쓰기 요청들을 복수의 플래시 변환 계층들(FTL0~FTL3)에 랜덤 방식으로 할당할 수 있다. 즉, 스토리지 컨트롤러(130)는 제0, 및 제 20 논리 어드레스들(LA0, LA20)에 대응하는 쓰기 요청들을 제0 플래시 변환 계층(FTL0)에 할당할 수 있고, 제12, 및 제28 논리 어드레스들(LA12, LA28)에 대응하는 쓰기 요청들을 제1 플래시 변환 계층(FTL1)에 할당할 수 있고, 제8, 및 제24 논리 어드레스들(LA8, LA24)에 대응하는 쓰기 요청들을 제2 플래시 변환 계층(FTL2)에 할당할 수 있고, 제4, 및 제16 논리 어드레스들(LA4, LA16)에 대응하는 쓰기 요청들을 제3 플래시 변환 계층(FTL3)에 할당할 수 있다. 이는 랜덤 방식으로 할당되는 예시적인 실시 예이며, 발명의 범위는 이에 한정되는 않는다.
호스트(110)로부터 수신된 데이터들은 우선적으로 버퍼 메모리(150)에 저장될 수 있다. 제0, 및 제20 논리 어드레스들(LA0, LA20)에 대응하는 데이터들은 제0 플래시 변환 계층(FTL0)에 의해 관리되는 제0 버퍼 공간(B0)에 저장될 수 있다. 제12, 및 제28 논리 어드레스들(LA12, LA28)에 대응하는 데이터들은 제1 플래시 변환 계층(FTL1)에 의해 관리되는 제1 버퍼 공간(B1)에 저장될 수 있다. 제8, 및 제24 논리 어드레스들(LA8, LA24)에 대응하는 데이터들은 제2 플래시 변환 계층(FTL2)에 의해 관리되는 제2 버퍼 공간(B2)에 저장될 수 있다. 제4, 및 제16 논리 어드레스들(LA4, LA16)에 대응하는 데이터들은 제3 플래시 변환 계층(FTL3)에 의해 관리되는 제3 버퍼 공간(B3)에 저장될 수 있다.
복수의 버퍼 공간들(B0~B3)에 저장된 데이터들은 대응하는 복수의 채널들(CH0~CH3)을 통해서 대응하는 복수의 플래시 변환 계층들(FTL0~FTL3)의 제어에 따라 불휘발성 메모리들(NVM00, NVM10, NVM20, NVM30)에 저장될 수 있다. 제0, 및 제20 논리 어드레스들(LA0, LA20)에 대응하는 데이터들은 제0 채널(CH0)을 통해 제0 플래시 변환 계층(FTL0)의 제어에 따라 제0 메모리 그룹(Group0)에 저장될 수 있다. 제12, 및 제28 논리 어드레스들(LA12, LA28)에 대응하는 데이터들은 제1 채널(CH1)을 통해 제1 플래시 변환 계층(FTL1)의 제어에 따라 제1 메모리 그룹(Group1)에 저장될 수 있다. 제8, 및 제24 논리 어드레스들(LA8, LA24)에 대응하는 데이터들은 제2 채널(CH2)을 통해 제2 플래시 변환 계층(FTL2)의 제어에 따라 제2 메모리 그룹(Group2)에 저장될 수 있다. 제4, 및 제16 논리 어드레스들(LA4, LA16)에 대응하는 데이터들은 제3 채널(CH3)을 통해 제3 플래시 변환 계층(FTL3)의 제어에 따라 제3 메모리 그룹(Group3)에 저장될 수 있다.
도 6c를 참조하면, 스토리지 시스템(100)은 구성은 상술하였으므로 이에 대한 상세한 설명은 생략된다. 호스트(110)는 스토리지 장치(120)로 동일한 논리 어드레스에 대응하는 데이터에 대한 쓰기 요청을 반복하여 전송할 수 있다. 즉 호스트는 제0 논리 어드레스(LA0)에 대응하는 데이터에 대한 쓰기 요청을 반복하여 스토리지 장치(120)에게 전송할 수 있다. 도 5c에서 상술한 바와 같이 FUA 또는 플러쉬 커맨드를 이용하여, 스토리지 컨트롤러(130)는 동일한 논리 어드레스(LA)대한 복수의 쓰기 요청들을 수신한 경우, 스토리지 컨트롤러(130)는 마지막으로 수신한 쓰기 요청에 대한 데이터만을 저장하는 것이 아니라, 복수의 쓰기 요청에 대한 데이터 모두를 불휘발성 메모리 장치(140)에 저장할 수 있다.
스토리지 컨트롤러(130)는 수신한 쓰기 요청들을 복수의 플래시 변환 계층들(FTL0~FTL3)에 랜덤 방식으로 할당할 수 있다. 즉, 스토리지 컨트롤러(130)는 총 8번의 제0 논리 어드레스(LA0)에 대응하는 쓰기 요청들을 랜덤하게 복수의 플래시 변환 계층들(FTL0~FTL3)에게 할당할 수 있다. 예를 들어, 제1, 및 제6 쓰기 요청들은 제0 플래시 변환 계층(FTL0)에 할당하고, 제3, 및 제7 쓰기 요청들은 제1 플래시 변환 계층(FTL1)에 할당하고, 제0, 및 제 4 쓰기 요청들은 제2 플래시 변환 계층(FTL2)에 할당하고, 제2, 및 제5 쓰기 요청들은 제3 플래시 변환 계층(FTL3)에 할당할 수 있다. 이는 랜덤 방식으로 할당되는 예시적인 실시 예이며, 발명의 범위는 이에 한정되는 않는다.
호스트(110)로부터 수신된 데이터들은 우선적으로 버퍼 메모리(150)에 저장될 수 있다. 제1, 및 제6 쓰기 요청에 대응하는 데이터들은 제0 플래시 변환 계층(FTL0)에 의해 관리되는 제0 버퍼 공간(B0)에 저장될 수 있다. 제3, 및 제7 쓰기 요청에 대응하는 데이터들은 제1 플래시 변환 계층(FTL1)에 의해 관리되는 제1 버퍼 공간(B1)에 저장될 수 있다. 제0, 및 제 4 쓰기 요청에 대응하는 데이터들은 제2 플래시 변환 계층(FTL2)에 의해 관리되는 제2 버퍼 공간(B2)에 저장될 수 있다. 제2, 및 제5 쓰기 요청에 대응하는 데이터들은 제3 플래시 변환 계층(FTL3)에 의해 관리되는 제3 버퍼 공간(B3)에 저장될 수 있다.
복수의 버퍼 공간들(B0~B3)에 저장된 데이터들은 대응하는 복수의 채널들(CH0~CH3)을 통해서 대응하는 복수의 플래시 변화 계층들(FTL0~FTL3)의 제어에 따라 불휘발성 메모리들(NVM00, NVM10, NVM20, NVM30)에 저장될 수 있다. 제1, 및 제6 쓰기 요청에 대응하는 데이터들은 제0 채널(CH0)을 통해 제0 플래시 변환 계층(FTL0)의 제어에 따라 제0 메모리 그룹(Group0)에 저장될 수 있다. 제3, 및 제7 쓰기 요청에 대응하는 데이터들은 제1 채널(CH1)을 통해 제1 플래시 변환 계층(FTL1)의 제어에 따라 제1 메모리 그룹(Group1)에 저장될 수 있다. 제0, 및 제 4 쓰기 요청에 대응하는 데이터들은 제2 채널(CH2)을 통해 제2 플래시 변환 계층(FTL2)의 제어에 따라 제2 메모리 그룹(Group2)에 저장될 수 있다. 제2, 및 제5 쓰기 요청에 대응하는 데이터들은 제3 채널(CH3)을 통해 제3 플래시 변환 계층(FTL3)의 제어에 따라 제3 메모리 그룹(Group3)에 저장될 수 있다.
도 5a, 도 5b, 및 도 5c를 참조하여 설명된 바와 같이, 스크램블 회로(131)가 모듈러 방식을 기반으로 논리 어드레스들을 할당하는 경우, 순차 논리 어드레스에 대응하는 쓰기 요청들을 복수의 플래시 변환 계층들(FTL0~FTL3)에게 균일하게 할당하고, 데이터의 순차성이 유지되어 스토리지 장치의 성능이 향상되는 장점을 갖는다.
반면에, 스크램블 회로(131)가 모듈러 방식을 기반으로 논리 어드레스들을 할당하는 경우, 특정 패턴의 논리 어드레스에 대응하는 쓰기 요청들이 하나의 플래시 변환 계층(예를 들어, 제0 플래시 변환 계층(FTL0)에게만 집중될 수 있다. 이로 인하여 버퍼 메모리(150) 내의 버퍼 공간들(B0~B3)을 균일하게 사용하지 않을 수 있고, 하나의 버퍼 공간(예를 들어, 제0 버퍼 공간(B0))만을 사용할 수 있다. 또한 복수의 채널들(CH0~CH3)을 균일하게 사용하지 않을 수 있고, 하나의 플래시 변환 계층(예를 들어, 제0 플래시 변환 계층(FTL0))이 제어하는 메모리 그룹(예를 들어, 제0 메모리 그룹(Group0))에 연결된 하나의 채널(예를 들어, 제0 채널(CH0))만을 사용할 수 있다. 그 결과 스토리지 장치의 성능이 하락하는 단점을 갖는다.
도 6a, 도 6b, 및 도 6c를 참조하여 설명된 바와 같이, 스크램블 회로(131)가 랜덤 방식을 기반으로 논리 어드레스들을 할당하는 경우, 순차 논리 어드레스에 대응하는 쓰기 요청들을 복수의 플래시 변환 계층들(FTL0~FTL3)에게 모듈러 방식보다는 덜 균일하게 할당할 수 있다. 또한 스크램블 회로(131)는 쓰기 요청들을 복수의 플래시 변환 계층들(FTL0~FTL3)에게 랜덤하게 할당하여, 데이터의 순차성이 감소할 수 있다. 그 결과, 스토리지 장치의 성능이 하락하는 단점을 갖는다.
반면에, 스크램블 회로(131)가 랜덤 방식을 기반으로 논리 어드레스들을 할당하는 경우, 특정 패턴의 논리 어드레스에 대응하는 쓰기 요청들을 랜덤하게 할당하므로, 쓰기 요청들이 하나의 플래시 변환 계층(예를 들어, 제0 플래시 변환 계층(FTL0))에만 집중되지 않고, 복수의 플래시 변환 계층들(FTL0~FTL3)에게 상대적으로 균일하게 할당될 수 있다. 그 결과, 스토리지 장치의 성능이 향상된다는 장점을 갖는다.
결론적으로, 스크램블 회로(131)는 모듈러 방식을 기반으로 논리 어드레스들을 할당하는 경우, 특정 패턴의 논리 어드레스에 대응하는 쓰기 요청들이 하나의 플래시 변환 계층에게 집중되는 단점이 있다. 스크램블 회로(131)는 램덤 방식을 기반으로 논리 어드레스를 할당하는 경우, 순차 논리 어드레스에 대응하는 쓰기 요청들에 대한 데이터의 순차성이 감소하고, 모듈러 방식보다 덜 균일하게 복수의 플래시 변환 계층들에게 할당될 수 있는 단점이 있다.
예시적인 실시 예에서, 본 발명에 따른 스크램블 회로는 호스트(110)로부터 수신된 논리 어드레스(LA)를 스크램블하여 스크램블된 논리 어드레스를 생성하고, 스크램블된 논리 어드레스를 기반으로 대응하는 요청들을 복수의 플래시 변환 계층들(FTL0~FTL3) 각각으로 할당할 수 있다. 이러한 스크램블 동작에 의해, 논리 어드레스의 구간에 따라 복수의 플래시 변환 계층들(FTL0~FTL3)로 할당되는 순서가 가변될 수 있다. 따라서, 요청들이 복수의 플래시 변환 계층들(FTL0~FTL3)로 상대적으로 균일하게 할당됨과 동시에, 데이터의 순차성이 유지되며, 스토리지 장치의 성능이 향상되는 장점을 갖는다. 이하에서, 스크램블 회로(131)의 구성 및 동작은 더욱 상세하게 설명된다.
도 7a 내지 도 7c는 도 1의 스크램블 회로의 동작을 설명하기 위한 도면이다. 예시적인 실시 예에서, 도 7a를 참조하여, 순차 논리 어드레스들에 대한 쓰기 요청을 수신하는 예시가 설명되고, 도 7b를 참조하여, 특정 패턴의 논리 어드레스들에 대한 쓰기 요청을 수신하는 예시가 설명되고, 도 7c를 참조하여, 특정 논리 어드레스에 대한 쓰기 요청을 반복적으로 수신하는 예시가 설명된다.
먼저, 도 7a를 참조하면, 스토리지 시스템(100)의 구성은 상술하였으므로 이에 대한 상세한 설명은 생략된다. 호스트(110)는 스토리지 장치(120)로 순차 논리 어드레스들에 대한 쓰기 요청을 전송할 수 있다. 예시적인 실시 예에서, 호스트(110)는 스토리지 장치(120)로 제0 내지 제7 논리 어드레스들(LA0~LA7)에 대응하는 데이터에 대한 쓰기 요청(예를 들어, 커맨드)을 전송할 수 있다. 또는 스토리지 장치(120)는 호스트(110) 메모리에 저장된 쓰기 요청(커맨드), 및 페이지 데이터를 페치할 수 있다.
스토리지 컨트롤러(130)는 스크램블 방식을 기반으로 수신한 쓰기 요청들을 복수의 플래시 변환 계층들(FTL0~FTL3)에 할당할 수 있다. 스크램블 회로(131)는 논리 어드레스의 범위를 일정한 크기를 갖는 복수의 구간들로 분할하고, 복수의 구간들마다 복수의 플래시 변환 계층들(FTL0~FTL3)에게 할당 순서를 다르게 또는 스크램블할 수 있다.
예를 들어, 제0 내지 제7 논리 어드레스들(LA0~LA7)은 복수의 구간들로 구분될 수 있다. 이 때, 복수의 구간들 각각은 복수의 플래시 변환 계층들(FTL0~FTL3)의 개수와 동일한 크기를 갖는 구간들로 분할될 수 있다. 즉, 복수의 플래시 변환 계층들(FTL0~FTL3)의 개수가 “4”이므로, 제0 내지 제7 논리 어드레스들(LA0~LA7)은 제0 구간 및 제1 구간들로 분할될 수 있다. 예를 들어, 제0 내지 제3 논리 어드레스(LA0~LA3)는 제0 구간에 포함될 수 있고, 제4 내지 제7 논리 어드레스(LA4~LA7)는 제1 구간에 포함될 수 있다. 제0 구간의 논리 어드레스들(LA0~LA3)은 제1 순서로 복수의 플래시 변환 계층들(FTL0~FTL3)에게 할당될 수 있고, 제1 구간의 논리 어드레스들(예를 들어, LA4~LA7)은 제1 순서와 다른 제2 순서로 복수의 플래시 변환 계층들(FTL0~FTL3)에게 할당될 수 있다.
좀 더 상세한 예로서, 도 5a를 참조하여 설명된 바와 같이, 스크램블 회로(131)는 모듈러 방식을 기반으로 쓰기 요청들을 복수의 플래시 변환 계층들(FTL0~FTL3)에게 할당하는 경우, 논리 어드레스를 복수의 플래시 변환 계층들의 개수로 모듈러 연산을 수행하여 그 결과값을 기준으로 쓰기 요청들을 할당할 수 있다. 그 결과, 각 구간에서의 첫번째 위치의 어드레스(예를 들어, LA0, LA4)는 제0 플래시 변환 계층(FTL0)에 할당되고, 두번째 위치의 어드레스(예를 들어, LA1, LA5)는 제1 플래시 변환 계층(FTL1)에 할당되고, 세번째 위치의 어드레스(예를 들어, LA2, LA6)는 제2 플래시 변환 계층(FTL2)에 할당되고, 네번째 위치의 어드레스(예를 들어, LA3, LA7)는 제3 플래시 변환 계층(FTL3)에 할당될 수 있다.
반면에, 도 7a의 스크램블 회로(131)는 논리 어드레스들을 스크램블하여 스크램블된 논리 어드레스를 생성하고, 스크램블된 논리 어드레스를 복수의 플래시 변환 계층들의 개수로 모듈러 연산을 수행하여 그 결과값을 기준으로 쓰기 요청들을 할당할 수 있다. 그 결과, 각 구간들 마다 논리 어드레스에 대응하는 쓰기 요청들이 복수의 플래시 변환 계층들(FTL0~FTL3)로 할당되는 순서가 가변될 수 있다.
예시적인 실시 예에서, 제1 순서로 제0 구간의 첫번째 위치의 어드레스(예를 들어, LA0)는 제0 플래시 변환 계층(FTL0)에 할당되고, 두번째 위치의 어드레스(예를 들어, LA1)는 제1 플래시 변환 계층(FTL1)에 할당되고, 세번째 위치의 어드레스(예를 들어, LA2)는 제2 플래시 변환 계층(FTL2)에 할당되고, 네번째 위치의 어드레스(예를 들어, LA3)는 제3 플래시 변환 계층(FTL3)에 할당될 수 있다.
스크램블 회로(131)는 제1 순서와 달리 제2 순서로 제1 구간의 첫번째 위치의 어드레스(예를 들어, LA4)는 제1 플래시 변환 계층(FTL1)에 할당되고, 두번째 위치의 어드레스(예를 들어, LA5)는 제2 플래시 변환 계층(FTL2)에 할당되고, 세번째 위치의 어드레스(예를 들어, LA6)는 제3 플래시 변환 계층(FTL3)에 할당되고, 네번째 위치의 어드레스(예를 들어, LA7)는 제0 플래시 변환 계층(FTL0)에 할당될 수 있다. 이는 예시적인 실시 예이며, 발명의 범위가 이에 한정되는 것은 아니고, 해시함수의 종류, 시드 등에 따라 스크램블 되는 결과(또는 할당 순서)는 달라질 수 있다.
이와 같이 스크램블 회로(131)는 각 구간들마다 논리 어드레스에 대응하는 쓰기 요청들의 할당 순서를 변경할 수 있다. 그 결과 논리 어드레스 값
그 결과, 랜덤 방식과 달리 순차 논리 어드레스에 대응하는 쓰기 요청들을 상대적으로 균일하게 복수의 플래시 변환 계층들(FTL0~FTL3)에게 할당할 수 있다.
호스트(110)로부터 수신된 데이터들은 우선적으로 버퍼 메모리(150)에 저장될 수 있다. 제0, 및 제7 논리 어드레스들(LA0, LA7)에 대응하는 데이터들은 제0 플래시 변환 계층(FTL0)에 의해 관리되는 제0 버퍼 공간(B0)에 저장될 수 있다. 제1, 및 제4 논리 어드레스들(LA1, LA4)에 대응하는 데이터들은 제1 플래시 변환 계층(FTL1)에 의해 관리되는 제1 버퍼 공간(B1)에 저장될 수 있다. 제2, 및 제5 논리 어드레스들(LA2, LA5)에 대응하는 데이터들은 제2 플래시 변환 계층(FTL2)에 의해 관리되는 제2 버퍼 공간(B2)에 저장될 수 있다. 제3, 및 제6 논리 어드레스들(LA3, LA6)에 대응하는 데이터들은 제3 플래시 변환 계층(FTL3)에 의해 관리되는 제3 버퍼 공간(B3)에 저장될 수 있다.
복수의 버퍼 공간들(B0~B3)에 저장된 데이터들은 대응하는 복수의 채널들(CH0~CH3)을 통해서 대응하는 복수의 플래시 변환 계층들(FTL0~FTL3)의 제어에 따라 불휘발성 메모리들(NVM00, NVM10, NVM20, NVM30)에 저장될 수 있다. 제0, 및 제7 논리 어드레스들(LA0, LA7)에 대응하는 데이터들은 제0 채널(CH0)을 통해 제0 플래시 변환 계층(FTL0)의 제어에 따라 제0 메모리 그룹(Group0)에 저장될 수 있다. 제1, 및 제4 논리 어드레스들(LA1, LA4)에 대응하는 데이터들은 제1 채널(CH1)을 통해 제1 플래시 변환 계층(FTL1)의 제어에 따라 제1 메모리 그룹(Group1)에 저장될 수 있다. 제2, 및 제5 논리 어드레스들(LA2, LA5)에 대응하는 데이터들은 제2 채널(CH2)을 통해 제2 플래시 변환 계층(FTL2)의 제어에 따라 제2 메모리 그룹(Group2)에 저장될 수 있다. 제3, 및 제6 논리 어드레스들(LA3, LA6)에 대응하는 데이터들은 제3 채널(CH3)을 통해 제3 플래시 변환 계층(FTL3)의 제어에 따라 제3 메모리 그룹(Group3)에 저장될 수 있다.
상술한 바와 같이, 스크램블 방식을 기반으로 순차 논리 어드레스에 대응하는 쓰기 요청을 할당하는 경우, 스크램블 회로(131)는 쓰기 요청들을 복수의 플래시 변화 계층들(FTL0~FTL3)에 상대적으로 균일하게 할당할 수 있다. 즉, 총 8개의 페이지에 대한 쓰기 요청을 수신한 경우, 스크램블 회로(131)는 복수의 플래시 변환 계층들(FTL0~FTL3) 각각에 2개의 페이지에 대한 쓰기 요청들을 할당할 수 있다. 따라서 스토리지 컨트롤러(130)는 버퍼 메모리(150) 내의 복수의 버퍼 공간들(B0~B3)을 균일하게 사용할 수 있으며, 불휘발성 메모리 장치(140)와 연결된 복수의 채널들(CH0~CH3)을 성능 손실 없이 사용할 수 있다.
도 7b를 참조하면, 스토리지 시스템(100)의 구성은 상술하였으므로 이에 대한 상세한 설명은 생략된다. 호스트(110)는 스토리지 장치(120)로 특정 패턴의 논리 어드레스들(LA0, LA4, LA8, LA12, LA16, LA20, LA24, LA28)에 대한 쓰기 요청을 전송할 수 있다. 스크램블 회로(131)는 스크램블 방식을 기반으로 수신한 쓰기 요청들을 복수의 플래시 변환 계층들(FTL0~FTL3)에 상대적으로 균일하게 할당할 수 있다.
도 5b를 참조하여 설명된 바와 같이, 스크램블 회로(131)는 모듈러 방식을 기반으로 특정 패턴의 논리 어드레스에 대응하는 쓰기 요청들을 할당하는 경우, 쓰기 요청들은 하나의 플래시 변환 계층(예를 들어, 제0 플래시 변환 계층(FTL0)에게 집중될 수 있다. 반면에, 스크램블 회로(131)는 스크램블 방식을 기반으로 특정 패턴의 논리 어드레스에 대응하는 쓰기 요청들을 할당하는 경우, 쓰기 요청들은 하나의 플래시 변환 계층에게만 집중되지 않고, 복수의 플래시 변환 계층들에게 상대적으로 균일하게 할당할 수 있다.
예시적인 실시 예에서, 도 7a를 참조하여 설명된 바와 같이, 논리 어드레스의 범위는 복수의 구간들로 구분될 수 있다. 이 때, 복수의 구간들 각각은 복수의 플래시 변환 계층들의 개수와 동일한 크기를 갖는 구간들로 분할될 수 있다. 예를 들어, 복수의 플래시 변환 계층들의 개수가 “4”개인 경우, 제0 내지 제31 논리 어드레스(LA0~LA31)들은 제0 내지 제7 구간들로 구분될 수 있다. 이 때, 제0, 제4, 제8, 제12, 제16, 제20, 제24, 및 제28 논리 어드레스들(LA0, LA4, LA8, LA12, LA16, LA20, LA24, LA28)은 제0 내지 제7 구간들에서, 첫번째 위치의 어드레스일 수 있다. 즉, 도 5a를 참조하여 설명된 바와 같이, 모듈러 방식에서, 각 구간들에서 첫번째 위치의 어드레스들(예를 들어, LA0, LA4, LA8, LA12, LA16, LA20, LA24, LA28)은 제0 플래시 변환 계층(FTL0)에게 할당될 수 있다.
반면에, 도 7b에 도시된 바와 같이, 스크램블 방식의 스크램블 회로(131)는 논리 어드레스들을 스크램블하여 스크램블된 논리 어드레스를 생성하고, 스크램블된 논리 어드레스를 복수의 플래시 변환 계층들의 개수로 모듈러 연산을 수행하여 그 결과값을 기준으로 쓰기 요청들을 할당할 수 있다. 그 결과, 각 구간들 마다 논리 어드레스에 대응하는 쓰기 요청들이 복수의 플래시 변환 계층들(FTL0~FTL3)로 할당되는 순서가 가변될 수 있다. 각 구간들마다 다른 할당 순서를 가지므로, 각 구간들의 첫번째 위치의 어드레스들에 대응하는 데이터를 수신하는 경우, 쓰기 요청들 모두가 제0 플래시 변환 계층(FTL0)에게 집중되지 않고, 복수의 플래시 변환 계층들(FTL0~FTL3)에게 상대적으로 균일하게 할당될 수 있다.
예시적인 실시 예에서, 제0 구간의 첫번째 위치의 어드레스(예를 들어, LA0)는 제0 플래시 변환 계층(FTL0)에 할당될 수 있고, 제1 구간의 첫번째 위치의 어드레스(예를 들어, LA4)는 제1 플래시 변환 계층(FTL1)에 할당될 수 있고, 제2 구간의 첫번째 위치의 어드레스(예를 들어, LA8)는 제2 플래시 변환 계층(FTL2)에 할당될 수 있고, 제3 구간의 첫번째 위치의 어드레스(예를 들어, LA12)는 제3 플래시 변환 계층(FTL3)에 할당될 수 있고, 제4 구간의 첫번째 위치의 어드레스(예를 들어, LA16)는 제1 플래시 변환 계층(FTL1)에 할당될 수 있고, 제5 구간의 첫번째 위치의 어드레스(예를 들어, LA20)는 제2 플래시 변환 계층(FTL2)에 할당될 수 있고, 제6 구간의 첫번째 위치의 어드레스(예를 들어, LA24)는 제3 플래시 변환 계층(FTL3)에 할당될 수 있고, 제7 구간의 첫번째 위치의 어드레스(예를 들어, LA28)는 제0 플래시 변환 계층(FTL0)에 할당될 수 있다. 이는 예시적인 실시 예이며, 발명의 범위가 이에 한정되는 것은 아니고, 해시함수의 종류, 시드 등에 따라 스크램블 되는 결과(또는 할당 순서)는 달라질 수 있다.
즉, 스크램블 회로(131)는 각 구간마다 할당 순서를 다르게 하여, 각 구간의 첫번째 위치의 어드레스에 대응하는 요청들은 모두 제0 플래시 변환 계층(FTL0)에 집중되지 않고, 복수의 플래시 변환 계층들(FTL0~FTL3)에 할당될 수 있다. 그 결과, 제0, 및 제 28 논리 어드레스들(LA0, LA28)에 대응하는 쓰기 요청들을 제0 플래시 변환 계층(FTL0)에 할당할 수 있고, 제4, 및 제16 논리 어드레스들(LA4, LA16)에 대응하는 쓰기 요청들을 제1 플래시 변환 계층(FTL1)에 할당할 수 있고, 제8, 및 제20 논리 어드레스들(LA8, LA20)에 대응하는 쓰기 요청들을 제2 플래시 변환 계층(FTL2)에 할당할 수 있고, 제12, 및 제24 논리 어드레스들(LA12, LA24)에 대응하는 쓰기 요청들을 제3 플래시 변환 계층(FTL3)에 할당할 수 있다.
호스트(110)로부터 수신된 데이터들은 우선적으로 버퍼 메모리(150)에 저장될 수 있다. 제0, 및 제28 논리 어드레스들(LA0, LA28)에 대응하는 데이터들은 제0 플래시 변환 계층(FTL0)에 의해 관리되는 제0 버퍼 공간(B0)에 저장될 수 있다. 제4, 및 제16 논리 어드레스들(LA4, LA16)에 대응하는 데이터들은 제1 플래시 변환 계층(FTL1)에 의해 관리되는 제1 버퍼 공간(B1)에 저장될 수 있다. 제8, 및 제20 논리 어드레스들(LA8, LA20)에 대응하는 데이터들은 제2 플래시 변환 계층(FTL2)에 의해 관리되는 제2 버퍼 공간(B2)에 저장될 수 있다. 제12, 및 제24 논리 어드레스들(LA12, LA24)에 대응하는 데이터들은 제3 플래시 변환 계층(FTL3)에 의해 관리되는 제3 버퍼 공간(B3)에 저장될 수 있다.
복수의 버퍼 공간들(B0~B3)에 저장된 데이터들은 대응하는 복수의 채널들(CH0~CH3) 통해서 불휘발성 메모리들(NVM00, NVM10, NVM20, NVM30)에 저장될 수 있다. 제0, 및 제28 논리 어드레스들(LA0, LA28)에 대응하는 데이터들은 제0 채널(CH0)을 통해 제0 메모리 그룹(Group0)에 저장될 수 있다. 제4, 및 제16 논리 어드레스들(LA4, LA16)에 대응하는 데이터들은 제1 채널(CH1)을 통해 제1 메모리 그룹(Group1)에 저장될 수 있다. 제8, 및 제20 논리 어드레스들(LA8, LA20)에 대응하는 데이터들은 제2 채널(CH2)을 통해 제2 메모리 그룹(Group2)에 저장될 수 있다. 제12, 및 제24 논리 어드레스들(LA12, LA24)에 대응하는 데이터들은 제3 채널(CH3)을 통해 제3 메모리 그룹(Group3)에 저장될 수 있다.
상술한 바와 같이, 스크램블 회로(131)는 스크램블 방식을 기반으로 특정 패턴의 어드레스에 대응하는 쓰기 요청들을 할당하는 경우, 쓰기 요청들을 하나의 플래시 변환 계층에게만 집중되지 않고, 복수의 플래시 변화 계층들(FTL0~FTL3)에게 상대적으로 균일하게 할당될 수 있다. 즉 총 8개의 페이지에 대한 쓰기 요청을 수신한 경우, 스크램블 회로(131)는 복수의 플래시 변환 계층들(FTL0~FTL3) 각각에 2개의 페이지에 대한 쓰기 요청들을 할당할 수 있다. 따라서 스토리지 컨트롤러(130)는 버퍼 메모리(150) 내의 복수의 버퍼 공간들(B0~B3)을 균일하게 사용할 수 있으며, 불휘발성 메모리 장치(140)와 연결된 복수의 채널들(CH0~CH3)을 성능 손실 없이 사용할 수 있다.
이와 같이, 본 발명의 실시 예에 따른 스토리지 컨트롤러(130)는 순차 논리어드레스, 및 특정 패턴의 논리 어드레스에 대응하는 쓰기 요청들 모두를 복수의 플래시 변환 계층들에게 상대적으로 균일하게 할당할 수 있다. 그 결과, 복수의 채널들 중에서 특정 채널로 데이터 쏠림 현상이 발생하지 아니하여, 스토리지 장치의 성능을 향상시킬 수 있다.
도 7c를 참조하면, 스토리지 시스템(100)의 구성은 상술하였으므로 이에 대한 상세한 설명은 생략된다. 호스트(110)는 스토리지 장치(120)로 동일한 논리 어드레스에 대응하는 데이터에 대한 쓰기 요청을 반복하여 전송할 수 있다. 도 5c에서 상술한 바와 같이, 호스트(110)는 FUA를 포함한 커맨드 또는 플러쉬 커맨드를 전송할 수 있다. 따라서, 동일한 논리 어드레스에 대하여 복수의 쓰기 요청을 수신하고 불휘발성 메모리 장치(140)에 저장되기 전임에도 불구하고, 스토리지 컨트롤러(130)는 마지막 쓰기 요청에 대한 데이터만을 저장하지 않고, 복수의 쓰기 요청에 대한 데이터 모두를 불휘발성 메모리 장치(140)에 저장할 수 있다.
스크램블 회로(131)는 스크램블 방식을 기반으로 수신한 쓰기 요청들을 복수의 플래시 변환 계층들(FTL0~FTL3)에 할당할 수 있다. 즉, 스크램블 회로(131)는 총 8번의 제0 논리 어드레스(LA0)에 대응하는 쓰기 요청들을 모두 제0 플래시 변환 계층(FTL0)에 할당할 수 있다. 따라서, 제0 논리 어드레스(LA0)에 대응하는 총 8개의 데이터들은 모두 제0 플래시 변환 계층(FTL0)에 의해 관리되는 제0 버퍼 공간(B0)에 저장될 수 있다. 제0 논리 어드레스(LA0)에 대응하는 총 8개의 데이터들은 제0 플래시 변환 계층(FTL0)의 제어에 따라 제0 채널(CH0)을 통해 제0 메모리 그룹(Group0)에 저장될 수 있다.
상술한 바와 같이, 스크램블 회로(131)는 스크램블 방식을 기반으로 특정 논리 어드레스의 대한 복수의 쓰기 요청들을 할당하는 경우, 랜덤 방식과 달리 복수의 쓰기 요청들은 하나의 플래시 변환 계층(예를 들어, 제0 플래시 변환 계층(FTL0))에게만 집중될 수 있다.
도 8은 도 1의 스토리지 컨트롤러의 동작을 예시적으로 보여주는 순서도이다. 도 1, 도 7b, 및 도 8을 참조하면, S100 단계에서, 스토리지 컨트롤러(130)의 호스트(110)로부터 논리 어드레스(LA)를 포함한 요청(예를 들어, 커맨드)을 수신할 수 있다. 예를 들어, 스토리지 컨트롤러(130)는 호스트(110)로부터 쓰기 또는 읽기 요청을 수신할 수 있다. 또는 스토리지 컨트롤러(130)는 호스트(110) 메모리(미도시)로부터 요청을 페치할 수 있다. 스토리지 컨트롤러(130)는 수신한 요청들에 대응하는 데이터를 수신 또는 페치할 수 있다.
S200 단계에서, 스토리지 컨트롤러(130)의 스크램블 회로(131)는 논리 어드레스(LA)를 스크램블하여 스크램블된 논리 어드레스(LA_sc)를 생성할 수 있다. 예시적인 실시 예에서, 스크램블 회로(131)는 논리 어드레스(LA)의 일부를 스크램블하여 스크램블된 논리 어드레스(LA_sc)를 생성할 수 있다. 이에 대한 구체적인 설명은 도 9에서 설명된다.
S300 단계에서, 스크램블 회로(131)는 스크램블된 논리 어드레스(LA_sc)를 기반으로 대응하는 요청들을 복수의 플래시 변환 계층들(FTL0~FTL3) 또는 복수의 그룹들(Group0~Group3)에게 할당할 수 있다. 예를 들어, 스토리지 컨트롤러(130)는 복수의 플래시 변환 계층들의 개수를 기반으로 스크램블된 논리 어드레스(LA_sc) 또는 스크램블된 논리 어드레스(LA_sc)의 일부에 대한 모듈러 연산을 수행하여 결과값을 생성할 수 있다. 스토리지 컨트롤러(130)는 결과값을 기초로 하여 요청들을 복수의 플래시 변환 계층들(FTL0~FTL3)에 할당할 수 있다.
예를 들어, 스토리지 컨트롤러(130)는 결과값이 제0 값인 요청들을 제0 플래시 변환 계층(FLT0)에 할당할 수 있고, 결과값이 제1 값인 요청들을 제1 플래시 변환 계층(FLT1)에 할당할 수 있고, 결과값이 제2 값인 요청들을 제2 플래시 변환 계층(FTL2)에 할당할 수 있고, 결과값이 제3 값인 요청들을 제3 플래시 변환 계층(FTL3)에에 할당할 수 있다.
도 9는 도 8의 S200 단계를 설명하기 위한 예시적인 도면이다. 도 1, 도 7b, 및 도8을 참조하면, 스토리지 컨트롤러(130)는 호스트(110)로부터 논리 어드레스(LA)를 포함한 쓰기 요청을 수신할 수 있다. 스크램블 회로(131)는 논리 어드레스(LA)를 스크램블하여 스크램블된 논리 어드레스(LA_sc)를 생성할 수 있다.
논리 어드레스(LA)는 K+1 비트(단, K는 양수)일 수 있다. K는 스토리지 장치의 저장 용량, 및 호스트 인터페이스 종류, 호스트가 데이터를 쓰고 읽을 수 있는 기본 단위에 따라 결정될 수 있다.
예시적인 실시 예에서, 논리 어드레스(LA)는 제1 어드레스 구간(Addr1), 제2 어드레스 구간(Addr2), 및 제3 어드레스 구간(Addr3)을 포함할 수 있다. 제1 어드레스 구간(Addr1)은 논리 어드레스(LA)의 제M+1 내지 제K 비트들([K:M+1])(단, M은 양수)을 가리킬 수 있다. 제2 어드레스 구간(Addr2)은 논리 어드레스(LA)의 제N+1 내지 제M 비트들([M:N+1])(단, N은 양수)을 가리킬 수 있다. 제3 어드레스 구간(Addr3)은 논리 어드레스(LA)의 제0 내지 제N 비트들([N:0])을 가리킬 수 있다. N은 페이지 크기에 따라 결정될 수 있다. M은 복수의 플래시 변환 계층들의 개수에 따라 결정될 수 있다. 예를 들어, 제2 어드레스 구간(Addr2)의 비트 개수는 log2B 일 수 있다. (단, B는 복수의 플래시 변환 계층들의 개수)
제3 어드레스 구간(Addr3)은 데이터가 저장되는 페이지 내의 위치를 가리킬 수 있다. 스토리지 컨트롤러(130)는 페이지 단위로 데이터를 저장할 수 있다. 따라서 제3 어드레스 구간(Addr3)은 물리 어드레스를 할당하는데 있어서 관련 있을 수 있다. 즉, 물리 어드레스는 제3 어드레스 구간에 기반하여 결정될 수 있다.
제2 어드레스 구간(Addr2)은 요청들에 대하여 할당될 복수의 플래시 변환 계층들 중 하나를 선택하기 위해 사용될 수 있다. 예시적인 실시 예에서, 스토리지 컨트롤러(130)는 모듈러 방식을 기반으로 요청들을 할당하는 경우, 복수의 플래시 변환 계층들의 개수를 기반으로 제2 어드레스 구간(Addr2)에 대한 모듈러 연산을 수행하여 결과값을 생성할 수 있다. 결과값을 기초로 하여 스토리지 컨트롤러(130)는 요청들을 복수의 플래시 변환 계층들(FTL0~FTL3) 및 복수의 메모리 그룹(Group0~Group3)에 할당할 수 있다. 따라서, 제2 어드레스 구간(Addr2)은 물리 어드레스를 할당하는데 있어서 관련 있을 수 있다.
제1 어드레스 구간(Addr1)은 모듈러 방식에서 요청에 대한 물리 어드레스의 할당에 관련 없는 부분을 가리킬 수 있다. 즉, 모듈러 방식에서, 물리 어드레스는 제1 어드레스 구간(Addr1)과 무관하게 결정될 수 있다.
스토리지 컨트롤러(130)는 스크램블 방식을 기반으로 요청들을 할당하는 경우, 제2 어드레스 구간(Addr2)만을 스크램블하여 스크램블된 제2 어드레스 구간(Addr2_sc)을 생성할 수 있다. 스토리지 컨트롤러(130)는 복수의 플래시 변환 계층들의 개수를 기반으로 스크램블된 제2 어드레스 구간(Addr2_sc)에 대한 모듈러 연산을 수행하여 결과값을 생성할 수 있다. 결과값을 기초로 하여 스토리지 컨트롤러(130)는 요청들을 복수의 플래시 변환 계층들(FTL0~FTL3)에 할당할 수 있다.
스크램블 회로(131)는 제1 XOR 연산기, 해시 모듈, 및 제2 XOR 연산기를 포함할 수 있다. 제1 XOR 연산기는 논리 어드레스(LA), 및 시드에 대하여 XOR 연산을 수행하여 제1 중간값(VAL1)을 생성할 수 있다. 또는 제1 XOR 연산기는 논리 어드레스(LA)의 일부, 및 시드에 대하여 XOR 연산을 수행하여 제1 중간값(VAL1)을 생성할 수 있다. 예시적인 실시 예에서, 논리 어드레스(LA)의 일부는 제1 어드레스 구간(Addr1)을 가리킬 수 있고, 또는 논리 어드레스(LA)의 제1 및 제2 어드레스 구간들(Addr1, Addr2)을 포함한 구간을 가리킬 수 있다. 발명의 범위는 이에 한정되지 아니하며, 논리 어드레스(LA)의 일부는 제0 내지 제K 비트들 내에서 임의의 개수를 가진 임의의 연속적인 비트들을 포함할 수 있다. 또는 논리 어드레스(LA)의 일부는 제0 내지 제K 비트들 내에서 임의의 개수를 가진 임의의 연속적이지 않은 비트들을 포함할 수 있다.
예시적인 실시 예에서, 시드는 스토리지 장치의 초기화 과정에서 생성되고, 포맷 동작 시 변경될 수 있다. 시드는 불휘발성 메모리 장치(140)에 저장될 수 있다. 예를 들어, 시드는 EFuse, EEPROM, MASKROM, Serial PROM, Flash Memory 등 불휘발성 메모리에 저장될 수 있다. 발명의 범위는 이에 한정되는 것은 아니다. 예시적인 실시 예에서, 시드는 스토리지 장치의 OTP(One Time Programming) 메모리, 불휘발성 메모리의 메타 영역에 저장될 수 있다. 시드는 스토리지 장치마다 상이할 수 있으며, 이로 인하여 스토리지 장치마다 동일한 해시 방법을 사용하더라도 논리 어드레스의 스크램블되는 방식이 상이할 수 있다.
해시 모듈은 수신된 제1 XOR 연산기의 출력인 제1 중간값(VAL1)에 대하여 해시 함수 연산을 수행하여 제2 중간값(VAL2)을 생성할 수 있다. 예시적인 실시 예에서, 해시 모듈은 제1 XOR 연산기의 출력인 제1 중간값(VAL1)을 제공받을 수 있다. 해시 모듈은 제공받은 제1 XOR 연산기의 제1 중간값(VAL1)을 해시하여 제2 중간값(VAL2)을 생성할 수 있다. 예시적인 실시 예에서, 해시 모듈은 CRC(Cyclic Redundancy Check), AES(Advanced Encryption Standard), 유사 랜덤 숫자 생성기(Pseudo Random number generator)로 구현될 수 있다.
제2 XOR 연산기는 제2 중간값(VAL2), 및 제2 어드레스 구간(Addr2)에 대하여 XOR 연산을 수행할 수 있다. 제2 XOR 연산기의 출력 값은 스크램블된 제2 어드레스 구간(Addr2_sc)을 가리킬 수 있다.
스크램블된 논리 어드레스(LA_sc)는 논리 어드레스(LA)의 제1 어드레스 구간(Addr1), 스크램블된 제2 어드레스 구간(Addr2_sc), 논리 어드레스(LA)의 제3 어드레스 구간(Addr3)을 포함할 수 있다. 즉, 제1, 및 제3 어드레스 구간들(Addr1, Addr3)은 변경되지 아니하며, 제2 어드레스 구간(Addr2)만 변경될 수 있다.
스토리지 컨트롤러(130)는 스크램블된 논리 어드레스(LA_sc)를 요청들을 할당하는데 이용하고, 본래의 논리 어드레스(LA)를 복수의 플래시 변환 계층들(FTL0~FTL3)에게 전송할 수 있다. 이 경우, 스크램블된 제2 어드레스 구간(Addr2_sc)을 메타 영역에 저장할 수 있다. 불휘발성 메모리 장치(140)의 저장 영역은 사용자 영역과 메타 영역을 포함할 수 있다. 사용자 영역은 호스트(110)로부터 수신한 쓰기 요청에 대응하는 데이터를 저장할 수 있다. 메타 영역은 호스트(110)로부터 수신한 쓰기 요청에 대응하는 데이터를 제외한 다른 정보 또는 데이터를 저장할 수 있다.
스토리지 컨트롤러(130)는 본래의 논리 어드레스(LA) 대신에 스크램블된 논리 어드레스(LA_sc)를 복수의 플래시 변환 계층들(FTL0~FTL3)에게 전송할 수 있다. 이 경우, 본래의 제2 어드레스 구간(Addr2)을 메타 영역에 저장할 수 있다. 또는 스토리지 컨트롤러(130)는 스토리지 장치의 저장 용량에 따라서 논리 어드레스(LA)의 K+1 비트 전부를 사용하지 않을 수 있다. 따라서, 스토리지 컨트롤러(130)는 논리 어드레스(LA)의 사용하지 않는 상위 비트들 중 일부를 본래의 제2 어드레스 구간(Addr2)을 저장하는데 사용할 수 있다.
예를 들어, 논리 어드레스가 표현할 수 있는 저장 용량에 비하여 스토리지 장치의 실제 저장 용량이 작은 경우는, 논리 어드레스의 제0 내지 제I 비트(단, I<K)들 만으로 스트리지 장치의 최대 논리 어드레스를 표현할 수 있는 경우를 가리킬 수 있다. 이 경우에, 스토리지 컨트롤러(130)는 논리 어드레스의 제I+1 내지 제K 비트들을 논리 어드레스를 식별하는데 사용하지 않을 수 있다. 따라서 스토리지 컨트롤러(130)는 논리 어드레스의 제I+1 내지 제K 비트들에 다른 정보를 저장할 수 있다. 예시적인 실시 예에서, 다른 정보는 제2 어드레스 구간(Addr2) 및 스크램블된 제2 어드레스 구간(Addr2_sc)을 포함할 수 있다. 즉 제2 어드레스 구간(Addr2) 및 스크램블된 제2 어드레스 구간(Addr2_sc)을 별도의 메타 영역에 저장되지 않고, 논리 어드레스의 제I+1 내지 제K 비트들에 저장될 수 있다.
도 10a는 본 발명의 실시 예에 따른 스토리지 시스템을 보여주는 블록도이다. 도 10b는 도 10a의 복수의 채널들을 보여주는 타이밍도이다. 도 3a, 도7b, 및 도 10a를 참조하면, 스토리지 시스템(100)의 구성은 상술하였으므로 이에 대한 상세한 설명은 생략된다.
호스트(110)는 특정 패턴의 논리 어드레스에 대응하는 쓰기 요청, 및 데이터를 스토리지 장치(120)에게 전송할 수 있다. 예시적인 실시 예에서, 호스트(110)는 스토리지 컨트롤러(130)에게 특정 패턴의 논리 어드레스에 대응하는 총 4A KB(단, A는 양수) 데이터에 대한 쓰기 요청을 전송할 수 있다. 4A KB는 채널/플레인 인터리빙을 통해 한번에 저장할 수 있는 최대 데이터 크기일 수 있다. 4A KB는 각 불휘발성 메모리의 메모리 셀 당 저장되는 비트 개수(예를 들어, SLC, MLC, TLC, QLC 등), 페이지 크기, 채널 개수, 웨이 개수, 및 플레인 개수를 기초로 하여 결정될 수 있다.
복수의 채널들(CH0~CH3) 각각은 낸드 인터페이스일 수 있다. 복수의 채널들(CH0~CH3)은 복수의 데이터 라인들(DQ0~DQ3)을 각각 포함할 수 있다. 예를 들어, 제0 채널(CH0)은 제0 데이터 라인들(DQ0)을 포함할 수 있다. 데이터 라인들(DQ0)은 데이터 스트로브 신호(미도시)에 동기하여 데이터를 송수신할 수 있다. 도면의 간결성을 위하여 복수의 데이터 라인들(DQ0~DQ3)만 도 10b에 도시되어 있으나, 본 발명의 범위가 이에 한정되는 것은 아니다.
스크램블 회로(131)는 스크램블 방식을 기반으로 특정 패턴의 논리 어드레스에 대응하는 요청들을 할당하는 경우, 요청들은 하나의 메모리 그룹에만 집중되지 않고, 복수의 메모리 그룹들(Group0~Group3)에 할당될 수 있다. 즉, 스크램블 회로(131)는 복수의 플래시 변환 계층들(FTL0~FTL3) 각각에게 A KB 데이터에 대한 쓰기 요청들을 각각 할당할 수 있다.
제0 플래시 변환 계층(FTL0)은 제0 데이터 라인들(DQ0)을 통해 A KB 데이터를 제0 메모리 그룹(Group0)에 전송할 수 있고, 제1 플래시 변환 계층(FTL1)은 제1 데이터 라인들(DQ1)을 통해 A KB 데이터를 제1 메모리 그룹(Group1)에 전송할 수 있고, 제2 플래시 변환 계층(FTL2)은 제2 데이터 라인들(DQ2)을 통해 A KB 데이터를 제2 메모리 그룹(Group2)에 전송할 수 있고, 제3 플래시 변환 계층(FTL3)은 제3 데이터 라인들(DQ3)을 통해 A KB 데이터를 제3 메모리 그룹(Group3)에 전송할 수 있다.
스크램블 회로(131)는 랜덤 방식을 기반으로 특정 패턴의 논리 어드레스에 대응하는 요청들을 할당하는 경우, 요청들은 플래시 변환 계층들(FTL0~FLT3) 및 메모리 그룹들(Group0~Group3)에 불균일하게 할당될 수 있다. 예시적인 실시 예에서, 스크램블 회로(131)는 제0 플래시 변환 계층(FTL0)에게 (A+a1) KB(단, a1은 양수, a1 < A) 데이터에 대한 쓰기 요청을 할당하고, 제1 플래시 변환 계층(FTL1)에게 (A-a1) KB 데이터에 대한 쓰기 요청을 할당하고, 제2 플래시 변환 계층(FTL2)에게 (A+a2) KB(단, a2는 양수, a2 < A) 데이터에 대한 쓰기 요청을 할당하고, 제3 플래시 변환 계층(FTL3)에게 (A-a3) KB 데이터에 대한 쓰기 요청을 할당할 수 있다.
제1 시간(T1) 동안, 제0 플래시 변환 계층(FTL0), 및 제2 플래시 변환 계층(FTL2)은 프로그램 단위를 만족하는 A KB의 데이터가 준비되므로, 제0 플래시 변환 계층(FTL0)은 제0 데이터 라인들(DQ0)을 통해 A KB 데이터를 제0 메모리 그룹(Group0)에 전송할 수 있고, 제2 플래시 변환 계층(FTL2)은 제2 데이터 라인들(DQ2)을 통해 A KB 데이터를 제2 메모리 그룹(Group2)에 전송할 수 있다.
이후에, 제2 시간(T2) 동안, 제0 플래시 변환 계층(FTL0)은 제0 데이터 라인들(DQ0)을 통해 a1 KB 데이터 및 더미 데이터를 제0 메모리 그룹(Group0)에 전송할 수 있다. 제1 플래시 변환 계층(FTL1)은 제1 데이터 라인들(DQ1)을 통해 (A-a1) KB 데이터 및 더미 데이터를 제1 메모리 그룹(Group1)에 전송할 수 있다. 제2 플래시 변환 계층(FTL2)은 제2 데이터 라인들(DQ2)을 통해 a2 KB 데이터 및 더미 데이터를 제2 메모리 그룹(Group2)에 전송할 수 있다. 제3 플래시 변환 계층(FLT3)은 제3 데이터 라인들(DQ3)을 통해 (A-a2) KB 데이터 및 더미 데이터를 제3 메모리 그룹(Group3)에 전송할 수 있다.
예시적인 실시 예에서, 불휘발성 메모리의 프로그램 동작 시 특정 메모리 블록을 소거한 후 첫 번째 워드 라인에서부터 마지막 워드 라인까지 프로그램이 모두 완료되기까지의 시간을 특정 시간 이내로 관리하여야 한다. 따라서 일정 시간 내에 추가적으로 데이터에 대한 쓰기 요청을 수신하지 아니하면, 스토리지 컨트롤러(130)는 더미 데이터를 기입할 수 있다.
이와 같이, 스크램블 방식의 경우, 스토리지 컨트롤러(130)는 플래시 변환 계층들(FTL0~FTL3)에게 균일하게 쓰기 요청들을 할당하였으므로, 제1 시간(T1)동안 데이터를 모두 전송할 수 있다. 반면에, 랜덤 방식의 경우, 스토리지 컨트롤러(130)는 플래시 변환 계층들(FTL0~FTL3)에게 불균일하게 쓰기 요청들을 할당하였으므로, 제1, 및 제2 시간(T1, T2)동안 데이터를 전송할 수 있다. 또한 호스트로부터 수신한 데이터 뿐만 아니라 더미 데이터를 추가적으로 저장하여 저장 공간의 손실, 및 성능 손실이 발생할 수 있다.
도 11은 스토리지 시스템의 동작을 예시적으로 보여주는 순서도이다. 도면의 간결성을 위하여 제0, 및 제1 불휘발성 메모리 장치(NVM0, NVM1)만 도시되었으며, 발명의 범위가 이에 한정되는 것은 아니다. 도 1, 도9, 및 도 11을 참조하면, S1100 단계에서, 호스트(110)는 논리 어드레스(LA)를 포함한 쓰기 요청을 스토리지 컨트롤러(130)에게 전송할 수 있다. 예시적인 실시 예에서, 스토리지 컨트롤러(130)는 호스트(110) 메모리(미도시)로부터 요청을 페치할 수 있다. 스토리지 컨트롤러(130)는 수신한 요청들에 대응하는 데이터를 수신 또는 페치할 수 있다. 쓰기 요청의 데이터 구조는 호스트 인터페이스에 따라 달라질 수 있다.
S1200 단계에서, 스토리지 컨트롤러(130)는 논리 어드레스(LA)의 제1 어드레스 구간(Addr1), 및 시드에 대하여 XOR 연산을 수행하여 제1 중간값(VAL1)을 생성할 수 있다. 예시적인 실시 예에서, 시드는 스토리지 장치 마다 상이할 수 있으며, 스토리지 장치의 초기화 과정에서 생성될 수 있고, 포멧 과정에서 변경될 수 있다.
S1300 단계에서, 스토리지 컨트롤러(130)는 제1 중간값(VAL1)에 대하여 해시함수 연산을 수행하여 제2 중간값(VAL2)을 생성할 수 있다. 해시 함수 연산은 CRC(Cyclic Redundancy Check), AES(Advanced Encryption Standard), 유사 랜덤 숫자 생성기(Pseudo Random number generator) 등 다양한 방법 및 알고리즘으로 수행될 수 있다.
S1400 단계에서, 스토리지 컨트롤러(130)는 제2 중간값(VAL2), 및 제2 어드레스 구간(Addr2)에 대하여 XOR 연산을 수행하여 스크램블된 제2 어드레스 구간(Addr2_sc)을 생성할 수 있다. 제1, 및 제3 어드레스 구간들(Addr1, Addr3)은 변경되지 아니하며, 제2 어드레스 구간(Addr2)만 스크램블될 수 있다.
S1500 단계에서, 스토리지 컨트롤러(130)는 스크램블된 제2 어드레스 구간(Addr2_sc)을 기반으로 쓰기 요청들을 복수의 플래시 변환 계층들, 및 복수의 메모리 그룹들에 할당할 수 있다. 예시적인 실시 예에서, 스크램블 회로(131)는 복수의 플래쉬 변환 계층들의 개수를 기반으로 스크램블된 제2 어드레스 구간(Addr2_sc)에 대한 모듈러 연산을 수행하여 결과값을 생성할 수 있다. 스토리지 컨트롤러(130)는 결과값을 기반으로 쓰기 요청들을 복수의 플래시 변환 계층들, 및 복수의 메모리 그룹들에 할당할 수 있다.
S1600 단계에서, 그 결과값이 제0 값인 경우, 스토리지 컨트롤러(130)는 제0 불휘발성 메모리 장치(NVM0)에 물리 어드레스(PA)가 포함된 쓰기 커맨드 및 데이터를 전송할 수 있다. S1700 단계에서, 그 결과값이 제1 값인 경우, 스토리지 컨트롤러(130)는 제1 불휘발성 메모리(NVM1)에 물리 어드레스(PA)가 포함된 쓰기 커맨드 및 데이터를 전송할 수 있다.
도 12a는 모듈러 방식에서 데이터를 저장하는 순서를 보여주는 도면이다. 도 1, 도 3a, 도 4, 도 5a, 및 도 12a를 참조하면, 스토리지 컨트롤러(130)는 쓰기 요청에 대응하는 데이터를 불휘발성 메모리 장치(140)에 저장할 수 있다. 이때, 데이터는 복수의 불휘발성 메모리들(NVM) 각각에 분산되어 저장될 수 있다. 이러한 데이터 관리 방식을 데이터 인터리빙(Data interleaving)이라 한다.
데이터 인터리빙을 위하여, 불휘발성 메모리 장치(140)는 채널, 웨이, 및 플레인 단위로 관리될 수 있다. 각 채널들(CH0~CH3)에 연결되는 불휘발성 메모리 장치(140)의 병렬화를 극대화하기 위하여, 스토리지 컨트롤러(130)는 연속적인 논리적 메모리 영역을 채널, 웨이, 플레인으로 분산하여 할당할 수 있다. 즉, 스토리지 컨트롤러(130)는 채널 인터리빙, 웨이 인터리빙, 및 플레인 인터리빙을 수행할 수 있다. 설명의 편의를 위하여 웨이 인터리빙은 생략된다.
도 12a의 표에서, 숫자들(0~47) 각각은 해당 숫자에 대응하는 논리 어드레스가 가리키는 페이지 데이터들을 의미할 수 있다. “”은 제0 논리 어드레스(LA0)가 가리키는 페이지 데이터를 의미할 수 있다. 또한 “”은 제0 메모리 그룹(Group0)의 제0 플레인(PL0)의 최하위 비트 페이지(LSB)에 저장된 페이지 데이터를 의미할 수 있다.
스크램블 회로(131)는 순차 논리 어드레스에 대응하는 요청을 수신한 경우, 수신한 쓰기 요청들을 복수의 플래시 변환 계층들(FTL0~FTL3), 및 복수의 메모리 그룹들(Group0~Group1)에 모듈러 방식으로 할당할 수 있다.
예를 들어, 스크램블 회로(131)는 복수의 플래쉬 변환 계층들의 개수를 기반으로 논리 어드레스에 대한 모듈러 연산을 수행하여 결과값을 생성할 수 있다. 제0, 제4, 제 8, 제12, 제16, 제20, 제24, 제28, 제32, 제36, 제40, 및 제44 논리 어드레스들(LA0, LA4, LA8, LA12, LA16, LA20, LA24, LA28, LA32, LA36, LA40, LA44)에 대한 결과값들은 제0 값일 수 있고, 제1, 제5, 제 9, 제13, 제17, 제21, 제25, 제29, 제33, 제37, 제41, 및 제45 논리 어드레스들(LA1, LA5, LA9, LA13, LA17, LA21, LA25, LA29, LA33, LA37, LA41, LA45)에 대한 결과값들은 제1 값일 수 있고, 제2, 제6, 제 10, 제14, 제18, 제22, 제26, 제30, 제34, 제38, 제42, 및 제46 논리 어드레스들(LA2, LA6, LA10, LA14, LA18, LA22, LA26, LA30, LA34, LA38, LA42, LA46)에 대한 결과값들은 제2 값일 수 있고, 제3, 제7, 제11, 제15, 제19, 제23, 제27, 제31, 제35, 제39, 제43, 및 제47 논리 어드레스들(LA3, LA7, LA11, LA15, LA19, LA23, LA27, LA31, LA35, LA39, LA43, LA47)에 대한 결과값들은 제3 값일 수 있다.
스크램블 회로(131)는 모듈러 연산의 결과값이 제0 값인 논리 어드레스들(LA0, LA4, LA8, LA12, LA16, LA20, LA24, LA28, LA32, LA36, LA40, LA44)에 대응하는 쓰기 요청들을 제0 플래시 변환 계층(FLT0), 및 제0 메모리 그룹(Group0)에 할당할 수 있고, 결과값이 제1 값인 논리 어드레스들(LA1, LA5, LA9, LA13, LA17, LA21, LA25, LA29, LA33, LA37, LA41, LA45)에 대응하는 쓰기 요청들을 제1 플래시 변환 계층(FLT1), 및 제1 메모리 그룹(Group1)에 할당할 수 있고, 결과값이 제2 값인 논리 어드레스들(LA2, LA6, LA10, LA14, LA18, LA22, LA26, LA30, LA34, LA38, LA42, LA46)에 대응하는 쓰기 요청들을 제2 플래시 변환 계층(FLT2), 및 제2 메모리 그룹(Group2)에 할당할 수 있고, 결과값이 제3 값인 논리 어드레스들(LA3, LA7, LA11, LA15, LA19, LA23, LA27, LA31, LA35, LA39, LA43, LA47)에 대응하는 쓰기 요청들을 제3 플래시 변환 계층(FLT3), 및 제3 메모리 그룹(Group3)에 할당할 수 있다.
이와 같이, 도 7a에서 설명한바와 같이, 제0 내지 제47 논리 어드레스들(LA0~LA47)은 복수의 플래시 변환 계층들의 개수와 동일 크기를 갖는 복수의 구간들로 분할될 수 있다. 즉, 제0 내지 제47 논리 어드레스들(LA0~LA47)은 제0 내지 제11 구간들로 구분될 수 있다. 이 때, 각 구간들의 첫번째 위치의 어드레스들(LA0, LA4, LA8, LA12, LA16, LA20, LA24, LA28, LA32, LA36, LA40, LA44)은 제0 메모리 그룹(Group0)에 할당될 수 있고, 두번째 위치의 어드레스들(LA1, LA5, LA9, LA13, LA17, LA21, LA25, LA29, LA33, LA37, LA41, LA45)은 제1 메모리 그룹(Group1)에 할당될 수 있고, 세번재 위치의 어드레스들(LA2, LA6, LA10, LA14, LA18, LA22, LA26, LA30, LA34, LA38, LA42, LA46)은 제2 메모리 그룹(Group2)에 할당될 수 있고, 네번째 위치의 어드레스들(LA3, LA7, LA11, LA15, LA19, LA23, LA27, LA31, LA35, LA39, LA43, LA47)은 제3 메모리 그룹(Group3)에 할당될 수 있다. 이와 같이 스크램블 회로(131)는 모듈러 방식을 기반으로 요청들을 복수의 메모리 그룹들에 할당하여, 채널 인터리빙을 수행할 수 있다.
복수의 플래시 변환 계층들(FTL0~FTL3) 각각은 수신한 요청들에 대하여 플레인 인터리빙을 수행할 수 있다. 예를 들어, 제0 플래시 변환 계층(FTL0)은 논리 어드레스들(LA0, LA4, LA8, LA12, LA16, LA20, LA24, LA28, LA32, LA36, LA40, LA44)에 대응하는 요청들을 수신할 수 있다. 제0 플래시 변환 계층(FTL0)은 수신 받은 순서대로 플레인 인터리빙을 수행할 수 있다. 따라서 제0, 제16, 및 제32 논리 어드레스들(LA0, LA16, LA32)에 대응하는 요청들은 제0 플레인(PL0)에 할당될 수 있고, 제4, 제20, 및 제36 논리 어드레스들(LA4, LA20, LA36)에 대응하는 요청들은 제1 플레인(PL1)에 할당될 수 있고, 제8, 제24, 및 제40 논리 어드레스들(LA8, LA24, LA40)에 대응하는 요청들은 제2 플레인(PL2)에 할당될 수 있고, 제12, 제28, 및 제44 논리 어드레스들(LA12, LA28, LA44)에 대응하는 요청들은 제3 플레인(PL3)에 할당될 수 있다. 이와 유사한 방식으로 나머지 플래시 변환 계층들(FTL1~FTL3)은 플레인 인터리빙을 수행할 수 있으며, 상세한 설명은 생략된다.
불휘발성 메모리의 메모리 셀 당 저장되는 비트 개수가 “3”인 경우(예를들어, TLC), 제0 플레인(PL0)에 할당된 논리 어드레스들(LA0, LA16, LA32)에 대응하는 데이터들은 수신한 순서대로 다음과 같이 저장될 수 있다. 예를 들어, 제0 논리 어드레스(LA0)에 대응하는 데이터는 최하위 비트 페이지(LSB)로 저장될 수 있고, 제16 논리 어드레스(LA16)에 대응하는 데이터는 중간 비트 페이지(CSB)로 저장될 수 있고, 제32 논리 어드레스(LA32)에 대응하는 데이터는 최상위 비트 페이지(MSB)로 저장될 수 있다. 이와 유사한 방식으로 제1 내지 제3 플레인들(PL1~PL3)에 할당된 논리 어드레스들에 대응하는 데이터들은 저장될 수 있으며, 상세한 설명은 생략된다.
비록 여기서, 4채널/1웨이/4플레인 구조에서의 데이터 인터리빙을 설명하였으나, 발명의 범위는 이에 한정되는 것은 아니다.
도 12b는 본 발명의 실시 예에 따라 데이터를 저장하는 순서를 보여주는 도면이다. 도 1, 도 3a, 도 4, 도 7a 및, 도 12b를 참조하면, 스크램블 회로(131)는 데이터 인터리빙 동작을 수행할 수 있다. 그러나 스크램블 회로(131)는 순차 논리 어드레스들에 대한 쓰기 요청에 대하여 도 12a와 다른 순서로 복수의 플래시 변환 계층들(FTL0~FTL3)에 할당할 수 있다. 표에 도시된 숫자들의 의미는 도 12a에서 상술하였으므로 생략된다.
도 12a에서 설명한바와 같이, 스크램블 회로(131)는 모듈러 방식을 기반으로 쓰기 요청들을 복수의 플래시 변환 계층들, 및 복수의 그룹들에게 다음과 같이 할당할 수 있다. 제0 내지 제47 논리 어드레스들(LA0~LA47)은 제0 내지 제11 구간들로 구분될 수 있다. 이 때, 각 구간들의 첫번째 위치의 어드레스들(LA0, LA4, LA8, LA12, LA16, LA20, LA24, LA28, LA32, LA36, LA40, LA44)은 제0 메모리 그룹(Group0)에 할당될 수 있고, 두번째 위치의 어드레스들(LA1, LA5, LA9, LA13, LA17, LA21, LA25, LA29, LA33, LA37, LA41, LA45)은 제1 메모리 그룹(Group1)에 할당될 수 있고, 세번재 위치의 어드레스들(LA2, LA6, LA10, LA14, LA18, LA22, LA26, LA30, LA34, LA38, LA42, LA46)은 제2 메모리 그룹(Group2)에 할당될 수 있고, 네번째 위치의 어드레스들(LA3, LA7, LA11, LA15, LA19, LA23, LA27, LA31, LA35, LA39, LA43, LA47)은 제3 메모리 그룹(Group3)에 할당될 수 있다.
반면에, 본 발명의 실시 예에 따른 스크램블 회로(131)는 논리 어드레스를 스크램블하여 스크램블된 논리 어드레스(LA_sc)를 생성할 수 있다. 스토리지 컨트롤러(130)는 스크램블된 논리 어드레스(LA_sc)를 기반으로 복수의 쓰기 요청들을 복수의 플래시 변환 계층들(FTL0~FTL3), 및 복수의 그룹들(Group0~Group3)에 할당할 수 있다. 예를 들어, 스크램블 회로(131)는 스크램블된 논리 어드레스(LA_sc) 또는 스크램블된 제2 어드레스 구간(Addr2_sc)을 모듈러 연산을 수행하여 결과값을 생성할 수 있다. 스크램블 회로(131)는 그 결과값을 기초로 하여 복수의 쓰기 요청들을 복수의 플래시 변환 계층들(FTL0~FTL3), 및 복수의 그룹들(Group0~Group3)에 할당할 수 있다. 따라서, 스크램블 회로(131)는 제0 내지 제11 구간들에 대하여 다른 순서로 복수의 플래시 변환 계층들(FTL0~FTL3), 및 복수의 그룹들(Group0~Group3)에 할당할 수 있다.
예시적인 실시 예에서, 스크램블 회로(131)는 스크램블된 논리 어드레스(LA_sc)를 복수의 플래시 변환 계층들의 개수로 모듈러 연산을 수행하여 그 결과 값을 기반으로 요청들을 할당할 수 있다. 제0, 제7, 제10, 제13, 제19, 제22, 제25, 제28, 제35, 제36, 제41, 제46 논리 어드레스들(LA0, LA7, LA10, LA13, LA19, LA22, LA25, LA28, LA35, LA36, LA41, LA46)에 대한 결과값들은 제0 값일 수 있고, 제1, 제4, 제11, 제14, 제16, 제23, 제26, 제29, 제34, 제39, 제40, 제45 논리 어드레스들(LA1, LA4, LA11, LA14, LA16, LA23, LA26, LA29, LA34, LA39, LA40, LA45)들에 대한 결과 값들은 제1 값일 수 있고, 제2, 제5, 제8, 제15, 제17, 제20, 제27, 제30, 제33, 제38, 제43, 제44 논리 어드레스들(LA2, LA5, LA8, LA15, LA17, LA20, LA27, LA30, LA33, LA38, LA43, LA44)들에 대한 결과 값들은 제2 값일 수 있고, 제3, 제6, 제9, 제12, 제18, 제21, 제24, 제31, 제32, 제37, 제42, 제47 논리 어드레스들(LA3, LA6, LA9, LA12, LA18, LA21, LA24, LA31, LA32, LA37, LA42, LA47)들에 대한 결과 값들은 제3 값일 수 있다. 이는 예시적인 실시 예이며, 발명의 범위가 이에 한정되는 것은 아니고, 해시함수의 종류, 시드 등에 따라 스크램블 되는 결과(또는 할당 순서)는 달라질 수 있다.
스크램블 회로(131)는 모듈러 연산의 결과값이 제0 값인 논리 어드레스들(LA0, LA7, LA10, LA13, LA19, LA22, LA25, LA28, LA35, LA36, LA41, LA46)에 대응하는 쓰기 요청들을 제0 플래시 변환 계층(FTL0), 및 제0 메모리 그룹(Group0)에 할당할 수 있고, 결과값이 제1 값인 논리 어드레스들(LA1, LA4, LA11, LA14, LA16, LA23, LA26, LA29, LA34, LA39, LA40, LA45)에 대응하는 쓰기 요청들을 제1 플래시 변환 계층(FTL1), 및 제1 메모리 그룹(Group1)에 할당할 수 있고, 결과값이 제2 값인 논리 어드레스들(LA2, LA5, LA8, LA15, LA17, LA20, LA27, LA30, LA33, LA38, LA43, LA44)에 대응하는 쓰기 요청들을 제2 플래시 변환 계층(FTL2), 및 제2 메모리 그룹(Group2)에 할당할 수 있고, 결과값이 제3 값인 논리 어드레스들(LA3, LA6, LA9, LA12, LA18, LA21, LA24, LA31, LA32, LA37, LA42, LA47)에 대응하는 쓰기 요청들을 제3 플래시 변환 계층(FTL3), 및 제3 메모리 그룹(Group3)에 할당할 수 있다.
따라서, 각 구간들 마다 논리 어드레스에 대응하는 쓰기 요청들이 복수의 메모리 그룹들(Group0~Group3)로 할당되는 순서가 가변될 수 있다. 예시적인 실시 예에서, 제1 순서로 제0 구간의 첫번째 위치의 어드레스(예를 들어, LA0)는 제0 메모리 그룹(Group0)에 할당되고, 두번째 위치의 어드레스(예를 들어, LA1)는 제1 메모리 그룹(Group1)에 할당되고, 세번째 위치의 어드레스(예를 들어, LA2)는 제2 메모리 그룹(Group2)에 할당되고, 네번째 위치의 어드레스(예를 들어, LA3)는 제3 메모리 그룹(Group3)에 할당될 수 있다.
스크램블 회로(131)는 제1 순서와 달리 제2 순서로 제1 구간의 첫번째 위치의 어드레스(예를 들어, LA4)는 제1 메모리 그룹(Group1)에 할당되고, 두번째 위치의 어드레스(예를 들어, LA5)는 제2 메모리 그룹(Group2)에 할당되고, 세번째 위치의 어드레스(예를 들어, LA6)는 제3 메모리 그룹(Group3)에 할당되고, 네번째 위치의 어드레스(예를 들어, LA7)는 제0 메모리 그룹(Group0)에 할당될 수 있다. 제2 내지 제11 구간들에 대해서도 이와 같이 다른 순서로 요청들이 복수의 메모리 그룹들(Group0~Group3)에 할당될 수 있으며, 상세한 설명은 생략된다. 이와 같이 스크램블 회로(131)는 스크램블 방식을 기반으로 요청들을 복수의 메모리 그룹들에 할당하여, 채널 인터리빙을 수행할 수 있다.
복수의 플래시 변환 계층들(FTL0~FTL3) 각각은 수신한 요청들에 대하여 플레인 인터리빙을 수행할 수 있다. 예를 들어, 제0 플래시 변환 계층(FTL0)은 논리 어드레스들(LA0, LA7, LA10, LA13, LA19, LA22, LA25, LA28, LA35, LA36, LA41, LA46)에 대응하는 요청들을 수신할 수 있다. 제0 플래시 변환 계층(FTL0)은 수신 받은 순서대로 플레인 인터리빙을 수행할 수 있다. 따라서 제0, 제19, 및 제35 논리 어드레스들(LA0, LA19, LA35)에 대응하는 요청들은 제0 플레인(PL0)에 할당될 수 있고, 제7, 제22, 및 제36 논리 어드레스들(LA7, LA22, LA36)에 대응하는 요청들은 제1 플레인(PL1)에 할당될 수 있고, 제10, 제25, 및 제41 논리 어드레스들(LA10, LA25, LA41)에 대응하는 요청들은 제2 플레인(PL2)에 할당될 수 있고, 제13, 제28, 및 제46 논리 어드레스들(LA13, LA28, LA46)에 대응하는 요청들은 제3 플레인(PL3)에 할당될 수 있다. 이와 유사한 방식으로 나머지 플래시 변환 계층들(FTL1~FTL3)은 플레인 인터리빙을 수행할 수 있으며, 상세한 설명은 생략된다.
불휘발성 메모리의 메모리 셀 당 저장되는 비트 개수가 “3”인 경우(TLC), 제0 플레인(PL0)에 할당된 논리 어드레스들(LA0, LA19, LA35)에 대응하는 데이터들은 수신한 순서대로 다음과 같이 저장될 수 있다. 예를 들어, 제0 논리 어드레스(LA0)에 대응하는 데이터는 최하위 비트 페이지(LSB)로 저장될 수 있고, 제16 논리 어드레스(LA16)에 대응하는 데이터는 중간 비트 페이지(CSB)로 저장될 수 있고, 제32 논리 어드레스(LA32)에 대응하는 데이터는 최상위 비트 페이지(MSB)로 저장될 수 있다. 이와 유사한 방식으로 제1 내지 제3 플레인들(PL1~PL3)에 할당된 논리 어드레스들에 대응하는 데이터들은 저장될 수 있으며, 상세한 설명은 생략된다. 비록 여기서, 4채널/1웨이/4플레인 구조에서의 데이터 인터리빙을 설명하였으나, 발명의 범위는 이에 한정되는 것은 아니다.
도12a 와 도 12b를 비교하면, 스크램블 회로(131)는 특정 패턴의 논리 어드레스에 대한 요청들을 수신하더라도, 스크램블 회로(131)는 상술한 바와 같이 각 구간들마다 다른 순서로 쓰기 요청들을 할당하므로, 쓰기 요청들은 하나 플래시 변환 계층에만 집중되지 않고, 복수의 플래시 변환 계층들(FTL0~FTL3)에게 할당하여, 최적의 성능을 유지시킬 수 있다.
도 13a 내지 13c는 스크램블 회로의 동작을 설명하기 위한 도면이다. 도 13a는 모듈러 방식을 기반으로 특정 패턴의 논리 어드레스에 대한 쓰기 요청을 할당하는 예시가 설명되고, 도 13b는 스크램블 방식을 기반으로 순차 논리 어드레스에 대한 쓰기 요청을 할당하는 예시가 설명되고, 도 13c는 스크램블 방식을 기반으로 특정 패턴의 논리 어드레스에 대한 쓰기 요청을 할당하는 예시가 설명된다.
도 3b, 도 5a, 및 도 13a를 참조하면, 스토리지 시스템(100)은 호스트(110), 및 스토리지 장치(120)를 포함할 수 있다. 스토리지 장치(120)는 스토리지 컨트롤러(130), 불휘발성 메모리 장치(140), 버퍼 메모리(150)를 포함할 수 있다. 스토리지 컨트롤러(130)는 스크램블 회로(131), 및 복수의 플래시 변환 계층들(FTL0~FTL3)을 포함할 수 있다.
이하에서, 도면의 간결성 및 설명의 편의를 위하여, 불휘발성 메모리 장치(140)는 도 3b를 참조하여 설명된 토폴로지를 갖는 것으로 가정한다. 즉, 불휘발성 메모리 장치(140)는 복수의 불휘발성 메모리들(NVM00~NVM71)을 포함할 수 있다. 복수의 불휘발성 메모리들(NVM00~NVM71)은 복수의 메모리 그룹들로 분할될 수 있다. 제0 메모리 그룹(Group0)은 복수의 불휘발성 메모리들(NVM00~NVM71) 중 제0 및 제1 채널들(CH0, CH1)과 연결된 제1 일부(NVM00, NVM01, NVM10, NVM11)를 포함할 수 있고, 제1 메모리 그룹(Group1)은 복수의 불휘발성 메모리들(NVM00~NVM71) 중 제2 및 제3 채널들(CH2, CH3)과 연결된 제2 일부(NVM20, NVM21, NVM30, NVM31)를 포함할 수 있고, 제2 메모리 그룹(Group2)은 복수의 불휘발성 메모리들(NVM00~NVM71) 중 제4 및 제5 채널들(CH4, CH5)과 연결된 제3 일부(NVM40, NVM41, NVM50, NVM51)를 포함할 수 있고, 제3 메모리 그룹(Group3)은 복수의 불휘발성 메모리들(NVM00~NVM71) 중 제6 및 제7 채널들(CH6, CH7)과 연결된 제4 일부(NVM60, NVM61, NVM70, NVM71)를 포함할 수 있다.
복수의 플래시 변환 계층들(FTL0~FTL3) 각각은 대응하는 메모리 그룹들(Group0~Group3)을 관리할 수 있다. 예를 들어, 제0 플래시 변환 계층(FTL0)은 제0 메모리 그룹(Group0)에 저장된 데이터의 논리-물리 매핑 테이블 관리, 배드 블록 관리, 웨어 레벨링 등과 같은 다양한 유지 관리 동작을 수행할 수 있다. 제0 메모리 그룹(Group0)은 제0 플래시 변환 계층(FTL0)에 의해 관리되고, 제1 메모리 그룹(Group1)은 제1 플래시 변환 계층(FTL1)에 의해 관리되고, 제2 메모리 그룹(Group2)은 제2 플래시 변환 계층(FTL2)에 의해 관리되고, 제3 메모리 그룹(Group3)은 제3 플래시 변환 계층(FTL3)에 의해 관리될 수 있다.
호스트(110)는 스토리지 장치(120)에게 특정 패턴의 논리 어드레스에 대응하는 요청을 전송할 수 있다. 예를 들어, 호스트(110)는 제0, 제4, 제8, 제12, 제16, 제20, 제24, 및 제28 논리 어드레스들(LA0, LA4, LA8, LA12, LA16, LA20, LA24, LA28)에 대응하는 데이터에 대한 쓰기 요청을 스토리지 장치(120)에게 전송할 수 있다.
스크램블 회로(131)는 복수의 플래시 변환 계층들(FTL0~FTL3)의 개수를 기반으로 수신된 논리 어드레스에 대한 모듈러 연산을 수행하여, 결과값을 생성하고, 생성된 결과값을 기반으로 쓰기 요청들을 복수의 플래시 변환 계층들(FTL0~FLT3)로 할당할 수 있다. 이 때, 논리 어드레스들(LA0, LA4, LA8, LA12, LA16, LA20, LA24, LA28)이 특정 패턴을 갖는 경우, 논리 어드레스들에 대한 모듈러 연산의 결과값은 동일한 값(예를 들어, 제0 값)일 수 있다. 이 경우, 스크램블 회로(131)는 논리 어드레스들(LA0, LA4, LA8, LA12, LA16, LA20, LA24, LA28)에 대한 쓰기 요청들 전부를 하나의 플래시 변환 계층(예를 들어, 제0 플래시 변환 계층(FTL0))으로 할당할 수 있다. 따라서, 제0, 제4, 제8, 제12, 제16, 제20, 제24, 및 제28 논리 어드레스들(LA0, LA4, LA8, LA12, LA16, LA20, LA24, LA28)에 대응하는 데이터들은 모두 제0 플래시 변환 계층(FTL0)에 의해 관리되는 제0 버퍼 공간(B0)에 저장될 수 있다.
이후에, 제0, 제4, 제8, 제12, 제16, 제20, 제24, 및 제28 논리 어드레스들(LA0, LA4, LA8, LA12, LA16, LA20, LA24, LA28)에 대응하는 데이터들은 제0 및 제1 채널들(CH0, CH1)을 통해 제0 플래시 변환 계층(FTL0)의 제어에 따라 제0 메모리 그룹(Group0)에 저장될 수 있다. 제0, 제8, 제16, 및 제 24 논리 어드레스들(LA0, LA8, LA16, LA24)에 대응하는 데이터들은 제0 채널(CH0)을 통해 제0 플래시 변환 계층(FTL0)의 제어에 따라 불휘발성 메모리들(NVM00, NVM01)에 저장될 수 있다. 제4, 제12, 제20, 및 제28 논리 어드레스들(LA4, LA12, LA20, LA28)에 대응하는 데이터들은 제1 채널(CH1)을 통해 제0 플래시 변환 계층(FTL0)의 제어에 따라 불휘발성 메모리들(NVM10, NVM11)에 저장될 수 있다.
도 3b, 도 7a, 및 도 13b를 참조하면, 스토리지 시스템(100)의 구성은 상술하였으므로 이에 대한 상세한 설명은 생략된다. 호스트(110)는 스토리지 장치(120)로 순차 논리 어드레스들에 대한 쓰기 요청을 전송할 수 있다. 예시적인 실시 예에서, 호스트(110)는 스토리지 장치(120)로 제0 내지 제7 논리 어드레스들(LA0~LA7)에 대응하는 데이터에 대한 쓰기 요청(예를 들어, 커맨드)을 전송할 수 있다. 또는 스토리지 장치(120)는 호스트(110) 메모리에 저장된 쓰기 요청(커맨드), 및 페이지 데이터를 페치할 수 있다.
도 7a에서 설명한 바와 같이, 예시적인 실시 예에서, 제1 순서로 제0 구간의 첫번째 위치의 어드레스(예를 들어, LA0)는 제0 플래시 변환 계층(FTL0)에 할당되고, 두번째 위치의 어드레스(예를 들어, LA1)는 제1 플래시 변환 계층(FTL1)에 할당되고, 세번째 위치의 어드레스(예를 들어, LA2)는 제2 플래시 변환 계층(FTL2)에 할당되고, 네번째 위치의 어드레스(예를 들어, LA3)는 제3 플래시 변환 계층(FTL3)에 할당될 수 있다.
스크램블 회로(131)는 제1 순서와 달리 제2 순서로 제1 구간의 첫번째 위치의 어드레스(예를 들어, LA4)는 제1 플래시 변환 계층(FTL1)에 할당되고, 두번째 위치의 어드레스(예를 들어, LA5)는 제2 플래시 변환 계층(FTL2)에 할당되고, 세번째 위치의 어드레스(예를 들어, LA6)는 제3 플래시 변환 계층(FTL3)에 할당되고, 네번째 위치의 어드레스(예를 들어, LA7)는 제0 플래시 변환 계층(FTL0)에 할당될 수 있다.
호스트(110)로부터 수신된 데이터들은 우선적으로 버퍼 메모리(150)에 저장될 수 있다. 제0, 및 제7 논리 어드레스들(LA0, LA7)에 대응하는 데이터들은 제0 플래시 변환 계층(FTL0)에 의해 관리되는 제0 버퍼 공간(B0)에 저장될 수 있다. 제1, 및 제4 논리 어드레스들(LA1, LA4)에 대응하는 데이터들은 제1 플래시 변환 계층(FTL1)에 의해 관리되는 제1 버퍼 공간(B1)에 저장될 수 있다. 제2, 및 제5 논리 어드레스들(LA2, LA5)에 대응하는 데이터들은 제2 플래시 변환 계층(FTL2)에 의해 관리되는 제2 버퍼 공간(B2)에 저장될 수 있다. 제3, 및 제6 논리 어드레스들(LA3, LA6)에 대응하는 데이터들은 제3 플래시 변환 계층(FTL3)에 의해 관리되는 제3 버퍼 공간(B3)에 저장될 수 있다.
복수의 버퍼 공간들(B0~B3)에 저장된 데이터들은 복수의 채널들(CH0~CH7) 통해서 불휘발성 메모리들(NVM00~NVM71)에 저장될 수 있다. 제0, 및 제7 논리 어드레스들(LA0, LA7)에 대응하는 데이터들은 제0, 제1 채널들(CH0, CH1)을 통해 제0 메모리 그룹(Group0)에 저장될 수 있다. 제1, 및 제4 논리 어드레스들(LA1, LA4)에 대응하는 데이터들은 제2, 및 제3 채널들(CH2, CH3)을 통해 제1 메모리 그룹(Group1)에 저장될 수 있다. 제2, 및 제5 논리 어드레스들(LA2, LA5)에 대응하는 데이터들은 제4, 및 제5 채널들(CH4, CH5)을 통해 제2 메모리 그룹(Group2)에 저장될 수 있다. 제3, 및 제6 논리 어드레스들(LA3, LA6)에 대응하는 데이터들은 제6, 및 제7 채널들(CH6, CH7)을 통해 제3 메모리 그룹(Group3)에 저장될 수 있다.
제0 플래시 변환 계층(FTL0)은 제0, 및 제1 채널들(CH0, CH1)을 통해 제0 메모리 그룹(Group0)을 제어하므로, 제0 논리 어드레스(LA0)에 대응하는 데이터를 제0 채널(CH0)을 통해 불휘발성 메모리(NVM00, NVM01)에 저장할 수 있고, 제7 논리 어드레스(LA7)에 대응하는 데이터를 제1 채널(CH1)을 통해 불휘발성 메모리(NVM10, NVM11)에 저장할 수 있다. 제1 플래시 변환 계층(FTL1)은 제2, 및 제3 채널들(CH2, CH3)을 통해 제1 메모리 그룹(Group1)을 제어하므로, 제1 논리 어드레스(LA1)에 대응하는 데이터를 제2 채널(CH2)을 통해 불휘발성 메모리(NVM20, NVM21)에 저장할 수 있고, 제4 논리 어드레스(LA4)에 대응하는 데이터를 제3 채널(CH3)을 통해 불휘발성 메모리(NVM30, NVM31)에 저장할 수 있다. 제2 플래시 변환 계층(FTL2)은 제4, 및 제5 채널들(CH4, CH5)을 통해 제2 메모리 그룹(Group2)을 제어하므로, 제2 논리 어드레스(LA2)에 대응하는 데이터를 제4 채널(CH4)을 통해 불휘발성 메모리(NVM40, NVM41)에 저장할 수 있고, 제5 논리 어드레스(LA5)에 대응하는 데이터를 제5 채널(CH5)을 통해 불휘발성 메모리(NVM50, NVM51)에 저장할 수 있다. 제3 플래시 변환 계층(FTL3)은 제6, 및 제7 채널들(CH6, CH7)을 통해 제3 메모리 그룹(Group3)을 제어하므로, 제3 논리 어드레스(LA3)에 대응하는 데이터를 제6 채널(CH6)을 통해 불휘발성 메모리(NVM60, NVM61)에 저장할 수 있고, 제6 논리 어드레스(LA6)에 대응하는 데이터를 제7 채널(CH7)을 통해 불휘발성 메모리(NVM70, NVM71)에 저장할 수 있다.
상술한 바와 같이, 스크램블 방식을 기반으로 순차 논리 어드레스에 대응하는 쓰기 요청을 할당하는 경우, 스크램블 회로(131)는 쓰기 요청들을 복수의 플래시 변화 계층들(FTL0~FTL3)에 상대적으로 균일하게 할당할 수 있다. 즉 총 8개의 페이지에 대한 쓰기 요청을 수신한 경우, 스크램블 회로(131)는 4개의 플래시 변환 계층들(FTL0~FTL3) 각각에 2개의 페이지에 대한 쓰기 요청들을 할당할 수 있다. 따라서 스토리지 컨트롤러(130)는 버퍼 메모리(150) 내의 복수의 버퍼 공간들(B0~B3)을 균일하게 사용할 수 있으며, 불휘발성 메모리 장치(140)와 연결된 채널들(CH0~CH7)을 성능 손실 없이 사용할 수 있다.
도 3b, 도 7b, 및 도 13c를 참조하면, 스토리지 시스템(100)의 구성은 상술하였으므로 이에 대한 상세한 설명은 생략된다. 호스트(110)는 스토리지 장치(120)로 특정 패턴의 논리 어드레스들(LA0, LA4, LA8, LA12, LA16, LA20, LA24, LA28)에 대한 쓰기 요청을 전송할 수 있다. 스크램블 회로(131)는 스크램블 방식을 기반으로 수신한 쓰기 요청들을 복수의 플래시 변환 계층들(FTL0~FTL3)에 상대적으로 균일하게 할당할 수 있다.
도 7b에서 설명한 바와 같이, 스크램블 회로(131) 제0, 및 제 28 논리 어드레스들(LA0, LA28)에 대응하는 쓰기 요청들을 제0 플래시 변환 계층(FTL0)에 할당할 수 있고, 제4, 및 제16 논리 어드레스들(LA4, LA16)에 대응하는 쓰기 요청들을 제1 플래시 변환 계층(FTL1)에 할당할 수 있고, 제8, 및 제20 논리 어드레스들(LA8, LA20)에 대응하는 쓰기 요청들을 제2 플래시 변환 계층(FTL2)에 할당할 수 있고, 제12, 및 제24 논리 어드레스들(LA12, LA24)에 대응하는 쓰기 요청들을 제3 플래시 변환 계층(FTL3)에 할당할 수 있다.
호스트(110)로부터 수신된 데이터들은 우선적으로 버퍼 메모리(150)에 저장될 수 있다. 제0, 및 제28 논리 어드레스들(LA0, LA28)에 대응하는 데이터들은 제0 플래시 변환 계층(FTL0)에 의해 관리되는 제0 버퍼 공간(B0)에 저장될 수 있다. 제4, 및 제16 논리 어드레스들(LA4, LA16)에 대응하는 데이터들은 제1 플래시 변환 계층(FTL1)에 의해 관리되는 제1 버퍼 공간(B1)에 저장될 수 있다. 제8, 및 제20 논리 어드레스들(LA8, LA20)에 대응하는 데이터들은 제2 플래시 변환 계층(FTL2)에 의해 관리되는 제2 버퍼 공간(B2)에 저장될 수 있다. 제12, 및 제24 논리 어드레스들(LA12, LA24)에 대응하는 데이터들은 제3 플래시 변환 계층(FTL3)에 의해 관리되는 제3 버퍼 공간(B3)에 저장될 수 있다.
복수의 버퍼들(B0~B3)에 저장된 데이터들은 복수의 채널들(CH0~CH7) 통해서 대응하는 플래시 변환 계층들(FTL0~FTL3)의 제어에 따라 불휘발성 메모리(NVM00~NVM71)에 저장될 수 있다 제0, 및 제28 논리 어드레스들(LA0, LA28)에 대응하는 데이터들은 제0, 및 제1 채널들(CH0, CH1)을 통해 제0 플래시 변환 계층(FTL0)의 제어에 따라 제0 메모리 그룹(Group0)에 저장될 수 있다. 제4, 및 제16 논리 어드레스들(LA4, LA16)에 대응하는 데이터들은 제2, 및 제3 채널들(CH2, CH3)을 통해 제1 플래시 변환 계층(FTL1)의 제어에 따라 제1 메모리 그룹(Group1)에 저장될 수 있다. 제8, 및 제20 논리 어드레스들(LA8, LA20)에 대응하는 데이터들은 제4, 및 제5 채널들(CH4, CH5)을 통해 제2 플래시 변환 계층(FTL3)의 제어에 따라 제2 메모리 그룹(Group2)에 저장될 수 있다. 제12, 및 제24 논리 어드레스들(LA12, LA24)에 대응하는 데이터들은 제6, 및 제7 채널들(CH6, CH7)을 통해 제3 플래시 변환 계층(FTL3)의 제어에 따라 제3 메모리 그룹(Group3)에 저장될 수 있다.
제0 플래시 변환 계층(FTL0)은 제0, 및 제1 채널들(CH0, CH1)을 통해 제0 메모리 그룹(Group0)을 제어하므로, 제0 논리 어드레스(LA0)에 대응하는 데이터를 제0 채널(CH0)을 통해 불휘발성 메모리(NVM00, NVM01)에 저장할 수 있고, 제28 논리 어드레스(LA28)에 대응하는 데이터를 제1 채널(CH1)을 통해 불휘발성 메모리(NVM10, NVM11)에 저장할 수 있다. 제1 플래시 변환 계층(FTL1)은 제2, 및 제3 채널들(CH2, CH3)을 통해 제1 메모리 그룹(Group1)을 제어하므로, 제4 논리 어드레스(LA4)에 대응하는 데이터를 제2 채널(CH2)을 통해 불휘발성 메모리(NVM20, NVM21)에 저장할 수 있고, 제16 논리 어드레스(LA16)에 대응하는 데이터를 제3 채널(CH3)을 통해 불휘발성 메모리(NVM30, NVM31)에 저장할 수 있다. 제2 플래시 변환 계층(FTL2)은 제4, 및 제5 채널들(CH4, CH5)을 통해 제2 메모리 그룹(Group2)을 제어하므로, 제8 논리 어드레스(LA8)에 대응하는 데이터를 제4 채널(CH4)을 통해 불휘발성 메모리(NVM40, NVM41)에 저장할 수 있고, 제20 논리 어드레스(LA20)에 대응하는 데이터를 제5 채널(CH5)을 통해 불휘발성 메모리(NVM50, NVM51)에 저장할 수 있다. 제3 플래시 변환 계층(FTL3)은 제6, 및 제7 채널들(CH6, CH7)을 통해 제3 메모리 그룹(Group3)을 제어하므로, 제12 논리 어드레스(LA12)에 대응하는 데이터를 제6 채널(CH6)을 통해 불휘발성 메모리(NVM60, NVM61)에 저장할 수 있고, 제24 논리 어드레스(LA24)에 대응하는 데이터를 제7 채널(CH7)을 통해 불휘발성 메모리(NVM70, NVM71)에 저장할 수 있다.
상술한 바와 같이, 스크램블 회로(131)는 스크램블 방식을 기반으로 특정 패턴의 어드레스에 대응하는 쓰기 요청들을 할당하는 경우, 쓰기 요청들을 하나의 플래시 변환 계층에게만 집중되지 않고, 복수의 플래시 변화 계층들(FTL0~FTL3)에게 상대적으로 균일하게 할당될 수 있다. 즉 총 8개의 페이지에 대한 쓰기 요청을 수신한 경우, 스크램블 회로(131)는 복수의 플래시 변환 계층들(FTL0~FTL3) 각각에 2개의 페이지에 대한 쓰기 요청들을 할당할 수 있다. 따라서 스토리지 컨트롤러(130)는 버퍼 메모리(150) 내의 복수의 버퍼 공간들(B0~B3)을 균일하게 사용할 수 있으며, 불휘발성 메모리 장치(140)와 연결된 복수의 채널들(CH0~CH7)을 성능 손실 없이 사용할 수 있다.
이와 같이, 본 발명의 실시 예에 따른 스토리지 컨트롤러(130)는 순차 논리어드레스, 및 특정 패턴의 논리 어드레스에 대응하는 쓰기 요청들 모두를 복수의 플래시 변환 계층들에게 상대적으로 균일하게 할당할 수 있다. 그 결과, 복수의 채널들 중에서 특정 채널로 데이터 쏠림 현상이 발생하지 않을 수 있다. 스토리지 장치는 복수의 자원들에 대하여 쓰기 요청들을 상대적으로 균일하게 할당하여, 스토리지 장치의 성능을 향상시킬 수 있다.
도 14는 본 발명의 실시 예에 따른 스토리지 시스템을 보여주는 블록도이다. 도 3a, 및 도 14를 참조하면, 스토리지 시스템(200)은 호스트(210), 및 스토리지 장치(220)를 포함할 수 있다. 스토리지 장치(220)는 스토리지 컨트롤러(230), 복수의 불휘발성 메모리 장치(240), 및 버퍼 메모리(250)를 포함할 수 있다. 복수의 불휘발성 메모리 장치(240)는 앞서 설명하였으므로, 이에 대한 상세한 설명은 생략된다.
스토리지 컨트롤러(230)는 스크램블 회로(231), 및 복수의 플래시 변환 계층 가속기들(FTLA0~FTLA3)을 포함할 수 있다. 스크램블 회로(231)는 앞서 설명하였으므로 이에 대한 상세한 설명은 생략된다. 복수의 플래시 변환 계층 가속기들(FTLA0~FTLA3) 중 각각은 대응하는 복수의 채널들을 통해 불휘발성 메모리들(NVM)을 관리할 수 있다. 예를 들어, 제0 플래시 변환 계층 가속기(FTLA0)는 제0 채널(CH0)에 연결된 불휘발성 메모리들(NVM)을 관리할 수 있다. 예시적인 실시 예에서, 제0 플래시 변환 계층 가속기(FTLA0)는 제0 채널(CH0)에 연결된 불휘발성 메모리들(NVM)에 저장된 데이터의 논리-물리 매핑 테이블을 관리, 배드 블록 관리, 웨어 레벨링 등과 같은 다양한 유지 관리 동작을 수행할 수 있다. 제1 플래시 변환 계층 가속기(FTLA1)는 제1 채널(CH1)에 연결된 불휘발성 메모리들(NVM)을 관리할 수 있다. 제2 플래시 변환 계층 가속기(FTLA2)는 제2 채널(CH2)에 연결된 불휘발성 메모리들(NVM)을 관리할 수 있다. 제3 플래시 변환 계층 가속기(FTLA3)는 제3 채널(CH3)에 연결된 불휘발성 메모리들(NVM)을 관리할 수 있다.
도 1의 플래시 변환 계층들(FTL0~FTL3)과 유사한 기능을 가질 수 있다. 반면에, 플래시 변환 계층들(FTL0~FTL3)과 달리 플래시 변환 계층 가속기들(FTLA0~FTLA3)은 하드웨어로 구현될 수 있다.
도 15는 본 발명의 실시 예에 따른 스토리지 시스템이 적용된 SSD 시스템을 보여주는 블록도이다. 도 16을 참조하면, SSD 시스템(1000)은 호스트(1100) 및 SSD(1200)를 포함한다.
SSD(1200)는 신호 커넥터(1201)를 통해 호스트(1100)와 신호(SIG)를 주고받고, 전원 커넥터(1202)를 통해 전원(PWR)을 입력 받는다. 예시적으로, 신호 커넥터(1201)는 PCIe 포트일 수 있고, 신호(SIG)는 NVMe 규약에 정의된 신호일 수 있으며, SSD(1200)는 NVMe 기반의 스토리지 장치일 수 있다. SSD(1200)는 SSD 컨트롤러(1210), 복수의 플래시 메모리들(1221~122n), 보조 전원 장치(1230), 및 버퍼 메모리(1240)를 포함한다. 예시적으로, 복수의 플래시 메모리들(1221~122n) 각각은 별도의 칩, 또는 별도의 패키지로 구현될 수 있으며, SSD 컨트롤러(1210)에 의해 복수의 그룹들로 인식될 수 있다.
SSD 컨트롤러(1210)는 호스트(1100)로부터 수신된 신호(SIG)에 응답하여 복수의 플래시 메모리들(1221~122n)을 제어할 수 있다. 예시적으로, SSD 컨트롤러(1210)는 도 1 내지 도 14를 참조하여 설명된 동작 방법을 기반으로 동작할 수 있다.
복수의 플래시 메모리들(1221~122n)은 SSD 컨트롤러(1210)의 제어에 따라 동작할 수 있다. 보조 전원 장치(1230)는 전원 커넥터(1202)를 통해 호스트(1100)와 연결된다. 보조 전원 장치(1230)는 호스트(1100)로부터 전원(PWR)을 입력 받고, 충전할 수 있다. 보조 전원 장치(1230)는 호스트(1100)로부터의 전원 공급이 원활하지 않을 경우, SSD(1200)의 전원을 제공할 수 있다.
상술된 내용은 본 발명을 실시하기 위한 구체적인 실시 예들이다. 본 발명은 상술된 실시 예들뿐만 아니라, 단순하게 설계 변경되거나 용이하게 변경할 수 있는 실시 예들 또한 포함할 것이다. 또한, 본 발명은 실시 예들을 이용하여 용이하게 변형하여 실시할 수 있는 기술들도 포함될 것이다. 따라서, 본 발명의 범위는 상술된 실시 예들에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 할 것이다.
100: 스토리지 시스템
110: 호스트
120: 스토리지 장치
130: 스토리지 컨트롤러
131: 스크램블 회로
140: 불휘발성 메모리 장치

Claims (20)

  1. 외부 호스트 장치로부터 제1 내지 제4 논리 어드레스들 각각에 대응하는 제1 내지 제4 요청들을 수신하도록 구성된 호스트 인터페이스 회로;
    적어도 하나의 제1 채널을 통해 적어도 하나의 제1 불휘발성 메모리들과 통신하고, 적어도 하나의 제2 채널을 통해 적어도 하나의 제2 불휘발성 메모리들과 통신하도록 구성된 메모리 인터페이스 회로;
    상기 적어도 하나의 제1 불휘발성 메모리들을 관리하도록 구성된 제1 플래시 변환 계층;
    상기 적어도 하나의 제2 불휘발성 메모리들을 관리하도록 구성된 제2 플래시 변환 계층; 및
    상기 제1 플래시 변환 계층은 상기 제1 및 제4 요청들에 대응하는 커맨드를 상기 적어도 하나의 제1 채널을 통해 출력하고, 상기 제2 플래시 변환 계층은 상기 제2 및 제3 요청들에 대응하는 커맨드를 상기 적어도 하나의 제2 채널을 통해 출력하고,
    상기 제1 논리 어드레스 값은 상기 제2 논리 어드레스 값보다 작고, 상기 제3 논리 어드레스 값은 상기 제4 논리 어드레스 값보다 작은 스토리지 컨트롤러.
  2. 제 1 항에 있어서,
    상기 제1 및 제4 요청들에 대응하는 데이터들은 상기 제1 플래시 변환 계층에 의하여 제어되는 외부 버퍼 메모리의 제1 버퍼 공간에 저장되고, 상기 제2, 및 제3 요청들에 대응하는 데이터들은 상기 제2 플래시 변환 계층에 의하여 제어되는 상기 외부 버퍼 메모리의 제2 버퍼 공간에 저장되는 스토리지 컨트롤러.
  3. 제 1 항에 있어서,
    상기 제1 내지 제4 논리 어드레스들 각각은 제1 어드레스 구간; 제2 어드레스 구간; 및 제3 어드레스 구간을 포함하고,
    상기 제1 논리 어드레스의 제2 어드레스 구간 값과 상기 제3 논리 어드레스의 제2 어드레스 구간 값은 동일하고, 상기 제2 논리 어드레스의 제2 어드레스 구간 값과 상기 제4 논리 어드레스의 제2 어드레스 구간 값이 동일한 스토리지 컨트롤러.
  4. 제 3 항에 있어서,
    스크램블 회로를 더 포함하고,
    상기 스크램블 회로는;
    상기 제1 어드레스 구간 및 시드에 대한 논리 연산을 수행하도록 구성된 제1 XOR 연산기;
    상기 XOR 연산기의 출력을 입력 받아 해시 함수 연산을 수행하여 해시 값을 생성하도록 구성된 해시 모듈; 및
    상기 제2 어드레스 구간 및 상기 해시 값에 대한 논리 연산을 수행하여 스크램블된 제2 어드레스 구간을 생성하도록 구성된 제2 XOR 연산기를 포함하는 스토리지 컨트롤러.
  5. 제 4 항에 있어서,
    상기 해시 모듈은 CRC(Cyclic Redundancy Check), AES(Advanced Encryption Standard), 유사 랜덤 숫자 생성기(Pseudo Random number generator)로 구현되는 스토리지 컨트롤러.
  6. 제 4 항에 있어서,
    상기 시드는 상기 제1, 및 제2 불휘발성 메모리들의 메타 영역, EFuse, EEPROM, MASKROM, 또는 Serial PROM에 저장되는 스토리지 컨트롤러.
  7. 제 4 항에 있어서,
    상기 제1 논리 어드레스의 스크램블된 제2 어드레스 구간 값은 상기 제4 논리 어드레스의 스크램블된 제2 어드레스 구간 값과 동일하고,
    상기 제2 논리 어드레스의 스크램블된 제2 어드레스 구간 값은 상기 제3 논리 어드레스의 스크램블된 제2 어드레스 구간 값과 동일한 스토리지 컨트롤러.
  8. 제 4 항에 있어서,
    제1 내지 제4 스크램블된 논리 어드레스들 각각은 상기 제1 어드레스 구간; 상기 스크램블된 제2 어드레스 구간; 및 상기 제3 어드레스 구간을 포함하고,
    상기 스크램블 회로는 상기 제1, 및 제4 스크램블된 논리 어드레스들을 상기제1 플래시 변환 계층에게 전송하고, 상기 제2, 및 제3 스크램블된 논리 어드레스들을 상기 제2 플래시 변환 계층에게 전송하는 스토리지 컨트롤러.
  9. 제 8 항에 있어서,
    상기 제1 내지 제4 논리 어드레스들 각각의 상기 제2 어드레스 구간 값들은 상기 제1, 및 제2 불휘발성 메모리들의 메타 영역에 저장되는 스토리지 컨트롤러.
  10. 스토리지 컨트롤러의 동작 방법에 있어서,
    외부 호스트 장치로부터 제1 어드레스 구간, 제2 어드레스 구간, 및 제3 어드레스 구간을 포함하는 논리 어드레스를 포함하는 쓰기 요청을 수신하는 단계;
    상기 제1 어드레스 구간, 및 시드에 대하여 XOR 연산을 수행하여 제1 중간값을 생성하는 단계;
    상기 제1 중간값에 대하여 해시 함수 연산을 수행하여 제2 중간값을 생성하는 단계;
    상기 제2 중간값, 및 상기 제2 어드레스 구간에 대하여 XOR 연산을 수행하여 스크램블된 제2 어드레스 구간을 생성하는 단계; 및
    상기 스크램블된 제2 어드레스 구간을 기반으로 할당된 상기 쓰기 요청에 대응하는 커맨드를 적어도 하나의 제1 채널을 통해 적어도 하나의 제1 불휘발성 메모리들에게 출력하고, 상기 스크램블된 제2 어드레스 구간을 기반으로 할당된 상기 쓰기 요청에 대응하는 커맨드를 적어도 하나의 제2 채널을 통해 적어도 하나의 제2 불휘발성 메모리들에게 출력하는 단계를 포함하는 동작 방법.
  11. 제 10 항에 있어서,
    상기 제3 어드레스 구간의 비트 개수는 상기 적어도 하나의 제1 불휘발성 메모리들 또는 상기 적어도 하나의 제2 불휘발성 메모리들의 페이지 크기에 대응하고, 상기 제2 어드레스 구간의 비트 개수는 복수의 플래시 변환 계층들의 개수에 따라 결정되는 동작 방법.
  12. 제 11 항에 있어서,
    상기 스크램블된 제2 어드레스 구간을 상기 복수의 플래시 변환 계층들의 개수로 모듈러 연산을 수행하여 결과값을 생성하는 단계를 더 포함하는 동작 방법.
  13. 제 12 항에 있어서,
    상기 결과값이 제1 값의 경우, 상기 쓰기 요청을 상기 복수의 플래시 변환 계층들 중 제1 플래시 변환 계층에게 전송하고, 상기 결과 값이 제2 값의 경우, 상기 쓰기 요청을 상기 복수의 플래시 변환 계층들 중 제2 플래시 변환 계층에게 전송하는 단계를 더 포함하는 동작 방법.
  14. 제 12 항에 있어서,
    상기 결과값이 제1 값의 경우, 상기 쓰기 요청에 대응하는 데이터를 상기 복수의 플래시 변환 계층들 중 제1 플래시 변환 계층에 의하여 제어되는 외부 버퍼 메모리의 제1 버퍼 공간에 저장하고, 상기 결과값이 제2 값의 경우, 상기 쓰기 요청에 대응하는 데이터를 상기 복수의 플래시 변환 계층들 중 제2 플래시 변환 계층에 의하여 제어되는 상기 외부 버퍼 메모리의 제2 버퍼 공간에 저장하는 단계를 더 포함하는 동작 방법.
  15. 제 12 항에 있어서,
    상기 결과값이 제1 값의 경우, 상기 복수의 플래시 변환 계층들 중 제1 플래시 변환 계층에 의하여 제어되는 외부 버퍼 메모리의 제1 버퍼 공간에 저장된 데이터를 상기 적어도 하나의 제1 채널을 통해 상기 적어도 하나의 제1 불휘발성 메모리에게 출력하고, 상기 결과값이 제2 값의 경우, 상기 복수의 플래시 변환 계층들 중 제2 플래시 변환 계층에 의하여 제어되는 상기 외부 버퍼 메모리의 제2 버퍼 공간에 저장된 데이터를 상기 적어도 하나의 제2 채널을 통해 상기 적어도 하나의 제2 불휘발성 메모리에게 출력하는 단계를 더 포함하는 동작 방법.
  16. 제 11 항에 있어서,
    제2 어드레스 구간 값은 상기 제1, 및 제2 불휘발성 메모리들의 메타 영역에 저장되는 단계를 더 포함하는 동작 방법.
  17. 제 11 항에 있어서,
    상기 외부 호스트로부터 포멧 커맨드를 수신하는 경우, 시드 값을 변경하는 단계를 더 포함하는 동작 방법.
  18. 제 11 항에 있어서,
    초기화 동작에서, 시드 값이 생성되는 단계를 더 포함하는 동작 방법.
  19. 제 18 항에 있어서,
    상기 초기화 동작에서, 상기 시드 값을 상기 제1, 및 제2 불휘발성 메모리들의 메타 영역, EFuse, EEPROM, MASKROM, 또는 Serial PROM에 저장하는 단계를 더 포함하는 동작 방법.
  20. 외부 호스트 장치로부터 논리 어드레스를 포함하는 요청을 수신하도록 구성된 호스트 인터페이스 회로;
    적어도 하나의 제1 채널을 통해 적어도 하나의 제1 불휘발성 메모리들과 통신하고,
    적어도 하나의 제2 채널을 통해 적어도 하나의 제2 불휘발성 메모리들과 통신하도록 구성된 메모리 인터페이스 회로; 및
    스크램블 회로를 포함하고,
    상기 논리 어드레스는, 제1 어드레스 구간; 제2 어드레스 구간; 및 제3 어드레스 구간을 포함하고,
    상기 스크램블 회로는,
    상기 제1 어드레스 구간 및 시드에 대한 논리 연산을 수행하여 제1 중간값을 생성하도록 구성된 제1 XOR 연산기;
    상기 제1 중간값에 대하여 해시 함수 연산을 수행하여 제2 중간값을 생성하도록 구성된 해시 모듈; 및
    상기 제2 중간값 및 상기 제2 어드레스 구간에 대한 논리 연산을 수행하여스크램블된 제2 어드레스 구간을 생성하도록 구성된 제2 XOR 연산기를 포함하고,
    상기 스크램블 회로는 복수의 플래시 변환 계층들의 개수를 기반으로 상기 스크램블된 제2 어드레스 구간에 대한 모듈러 연산을 수행하여 결과값을 생성하도록 구성되고,
    결과값이 제1 값의 경우, 상기 요청에 대응하는 커맨드를 상기 적어도 하나의 제1 채널을 통해 출력하고, 결과값이 제2 값의 경우 상기 요청에 대응하는 커맨드를 상기 적어도 하나의 제2 채널을 통해 출력하는 스토리지 컨트롤러.
KR1020200087379A 2020-07-15 2020-07-15 스토리지 컨트롤러, 및 스토리지 컨트롤러의 동작 방법 KR20220009523A (ko)

Priority Applications (6)

Application Number Priority Date Filing Date Title
KR1020200087379A KR20220009523A (ko) 2020-07-15 2020-07-15 스토리지 컨트롤러, 및 스토리지 컨트롤러의 동작 방법
US17/225,710 US11579782B2 (en) 2020-07-15 2021-04-08 Storage controller and an operation method of the storage controller
CN202110475355.6A CN113948124A (zh) 2020-07-15 2021-04-29 存储控制器和存储控制器的操作方法
EP23190044.0A EP4246336A3 (en) 2020-07-15 2021-04-30 Storage controller and an operation method of the storage controller
EP21171502.4A EP3940540B1 (en) 2020-07-15 2021-04-30 Storage controller and an operation method of the storage controller
US18/105,920 US20230185463A1 (en) 2020-07-15 2023-02-06 Storage controller and an operation method of the storage controller

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200087379A KR20220009523A (ko) 2020-07-15 2020-07-15 스토리지 컨트롤러, 및 스토리지 컨트롤러의 동작 방법

Publications (1)

Publication Number Publication Date
KR20220009523A true KR20220009523A (ko) 2022-01-25

Family

ID=79293485

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200087379A KR20220009523A (ko) 2020-07-15 2020-07-15 스토리지 컨트롤러, 및 스토리지 컨트롤러의 동작 방법

Country Status (3)

Country Link
US (1) US11579782B2 (ko)
KR (1) KR20220009523A (ko)
CN (1) CN113948124A (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220048869A (ko) * 2020-10-13 2022-04-20 에스케이하이닉스 주식회사 스토리지 장치 및 그 동작 방법
KR20220076803A (ko) * 2020-12-01 2022-06-08 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
US20240086085A1 (en) * 2022-09-14 2024-03-14 Arm Limited Protection of memory using multiple address translation functions

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5680106A (en) 1979-12-06 1981-07-01 Nec Corp (110) garnet liquid phase epitaxial film
US7571275B2 (en) * 2005-08-31 2009-08-04 Hamilton Sundstrand Corporation Flash real-time operating system for small embedded applications
JP2008003976A (ja) * 2006-06-26 2008-01-10 Sony Corp メモリアクセス制御装置および方法、並びに、通信装置
US8166258B2 (en) * 2009-07-24 2012-04-24 Lsi Corporation Skip operations for solid state disks
US8219776B2 (en) 2009-09-23 2012-07-10 Lsi Corporation Logical-to-physical address translation for solid state disks
CN102789427B (zh) 2012-07-17 2015-11-25 威盛电子股份有限公司 数据储存装置与其操作方法
US9516541B2 (en) 2013-09-17 2016-12-06 Intel IP Corporation Congestion measurement and reporting for real-time delay-sensitive applications
KR102147993B1 (ko) 2013-11-14 2020-08-25 삼성전자주식회사 불휘발성 메모리 시스템 및 그것의 동작 방법
US10121013B2 (en) 2015-05-07 2018-11-06 Samsung Electronics Co., Ltd. XOR-based scrambler/descrambler for SSD communication protocols
KR102316198B1 (ko) 2015-06-12 2021-10-25 삼성전자주식회사 파일 액세스 방법, 컴퓨터, 및 컴퓨터-읽기 가능한 매체에 실행 가능한 소프트웨어 제품
JP6148763B2 (ja) 2015-06-15 2017-06-14 株式会社日立製作所 データ・アクセスを最適化するためにネットワーク・ノードにわたるデータ・ストアの中にデータ・レコードをグループ化するための方法
JP6750985B2 (ja) 2016-04-15 2020-09-02 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカPanasonic Intellectual Property Corporation of America 通信装置および通信方法
CN107885667B (zh) 2016-09-29 2022-02-11 北京忆恒创源科技股份有限公司 降低读命令处理延迟的方法与装置
US10761976B2 (en) * 2016-11-28 2020-09-01 Arm Limited Method and apparatus for memory wear leveling
KR20180079584A (ko) * 2016-12-30 2018-07-11 에스케이하이닉스 주식회사 컨트롤러 및 컨트롤러의 동작 방법
US10970205B2 (en) 2018-05-31 2021-04-06 Micron Technology, Inc. Logical-to-physical data structures for tracking logical block addresses indicative of a collision
CN111143235A (zh) 2018-11-06 2020-05-12 爱思开海力士有限公司 多内核存储器***中的逻辑地址分配

Also Published As

Publication number Publication date
US20220019357A1 (en) 2022-01-20
US11579782B2 (en) 2023-02-14
CN113948124A (zh) 2022-01-18

Similar Documents

Publication Publication Date Title
KR20220009523A (ko) 스토리지 컨트롤러, 및 스토리지 컨트롤러의 동작 방법
US20100082917A1 (en) Solid state storage system and method of controlling solid state storage system using a multi-plane method and an interleaving method
US9405679B2 (en) Determining a location of a memory device in a solid state device
KR102417977B1 (ko) 메모리 시스템 및 그것의 동작 방법
US10095436B2 (en) Cache memory device and data processing method of the device
US11537324B2 (en) Memory systems and methods that allocate memory banks using striping size and stream identification information contained within directive commands
US10725902B2 (en) Methods for scheduling read commands and apparatuses using the same
US20100088461A1 (en) Solid state storage system using global wear leveling and method of controlling the solid state storage system
US8335897B2 (en) Data storage management in heterogeneous memory systems
KR102398540B1 (ko) 메모리 장치, 반도체 장치 및 반도체 시스템
KR20220058224A (ko) 메모리 시스템 및 이에 포함된 메모리 컨트롤러의 동작 방법
KR20220069543A (ko) 스토리지 장치, 스토리지 컨트롤러 및 이를 포함하는 스토리지 시스템
KR20090087689A (ko) 다중 채널 플래시 메모리 시스템 및 그것의 액세스 방법
US20180129440A1 (en) Self-virtualizing flash memory for solid state drive
KR20210014412A (ko) 메모리 컨트롤러 및 그 동작 방법
US9990280B2 (en) Methods for reading data from a storage unit of a flash memory and apparatuses using the same
US20230185463A1 (en) Storage controller and an operation method of the storage controller
US20120278538A1 (en) Data storage apparatus, memory control device, and method for controlling flash memories
US11586379B2 (en) Memory system and method of operating the same
CN107239224B (zh) 数据保护方法、存储器控制电路单元与存储器存储装置
KR20240008590A (ko) 저장 장치 및 그 동작 방법
KR20230164477A (ko) 스토리지 장치 및 이를 포함하는 전자 장치와 그 동작 방법
KR20230172729A (ko) 스토리지 장치 및 이의 동작 방법
KR20240030248A (ko) 스토리지 장치