KR20220092215A - 메모리 컨트롤러를 포함하는 메모리 시스템 - Google Patents
메모리 컨트롤러를 포함하는 메모리 시스템 Download PDFInfo
- Publication number
- KR20220092215A KR20220092215A KR1020200183762A KR20200183762A KR20220092215A KR 20220092215 A KR20220092215 A KR 20220092215A KR 1020200183762 A KR1020200183762 A KR 1020200183762A KR 20200183762 A KR20200183762 A KR 20200183762A KR 20220092215 A KR20220092215 A KR 20220092215A
- Authority
- KR
- South Korea
- Prior art keywords
- data
- memory
- stored
- user data
- management unit
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
- G11C16/102—External programming circuits, e.g. EPROM programmers; In-circuit programming or reprogramming; EPROM emulators
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1072—Decentralised address translation, e.g. in distributed shared memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/1652—Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
- G06F13/1657—Access to multiple memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0616—Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/04—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
- G11C16/0483—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/08—Address circuits; Decoders; Word-line control circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
- G11C16/12—Programming voltage switching circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
- G11C16/14—Circuits for erasing electrically, e.g. erase voltage switching circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/24—Bit-line control circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/26—Sensing or reading circuits; Data output circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
- G11C16/349—Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
- G11C16/3495—Circuits or methods to detect or delay wearout of nonvolatile EPROM or EEPROM memory devices, e.g. by counting numbers of erase or reprogram cycles, by using multiple memory areas serially or cyclically
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
- G06F2212/1036—Life time enhancement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7203—Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7207—Details relating to flash memory management management of metadata or control data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7208—Multiple device management, e.g. distributing data over multiple flash devices
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)
- Microelectronics & Electronic Packaging (AREA)
- Read Only Memory (AREA)
Abstract
본 기술은 복수의 페이지들로 구분되는 메모리 셀들을 포함하고, 상기 복수의 페이지들에 각각 연결되며 서로 다른 로우(row)로 구분되는 워드 라인들 및 상기 복수의 페이지들에 공통으로 연결되며 서로 다른 컬럼(column)으로 구분되는 비트 라인들이 연결된 메모리 블록; 상기 복수의 페이지들에 각각 저장될 사용자 데이터의 정보를 포함하는 시스템 데이터를 생성하도록 구성된 시스템 데이터 관리부; 및 상기 복수의 페이지들에 대응되는 어드레스들을 생성하도록 구성된 어드레스 관리부를 포함하고, 상기 시스템 데이터 관리부는, 상기 어드레스들에 따라 상기 시스템 데이터가 저장되는 상기 컬럼(column)을 변경하는 메모리 컨트롤러를 포함하는 메모리 시스템을 포함한다.
Description
본 발명은 메모리 컨트롤러를 포함하는 메모리 시스템에 관한 것으로, 보다 구체적으로는 시스템 데이터를 생성 및 관리할 수 있는 메모리 컨트롤러를 포함하는 메모리 시스템에 관한 것이다.
메모리 시스템은 데이터를 저장할 수 있는 저장 장치와, 저장 장치를 제어할 수 있는 컨트롤러를 포함할 수 있다.
저장 장치는 데이터가 저장될 수 있는 메모리 장치들을 포함할 수 있으며, 메모리 장치들은 휘발성 메모리 장치(Volatile Memory Device) 또는 비휘발성 메모리 장치 (Non-volatile Memory Device)로 구분될 수 있다.
휘발성 메모리 장치는 전원이 공급된 경우에만 데이터를 저장하고 전원 공급이 중단되면 저장된 데이터가 소멸되는 메모리 장치로써, 정적 랜덤 액세스 메모리 (Static Random Access Memory; SRAM), 동적 랜덤 액세스 메모리 (Dynamic Random Access Memory; DRAM) 등을 포함할 수 있다.
비휘발성 메모리 장치는 전원 공급이 중단되어도 저장된 데이터가 소멸되지 않는 메모리 장치로써, 롬(Read Only Memory; ROM), PROM (Programmable ROM), EPROM (Electrically Programmable ROM), EEPROM (Electrically Erasable and Programmable ROM) 및 플래시 메모리(Flash Memory) 등을 포함할 수 있다.
본 발명의 실시 예는 동일한 컬럼에 포함되는 플래그 셀들에 동일한 데이터가 저장되는 현상을 방지할 수 있는 메모리 컨트롤러를 포함하는 메모리 시스템을 제공한다.
본 발명의 실시 예에 따른 메모리 시스템은, 복수의 페이지들로 구분되는 메모리 셀들을 포함하고, 상기 복수의 페이지들에 각각 연결되며 서로 다른 로우(row)로 구분되는 워드 라인들 및 상기 복수의 페이지들에 공통으로 연결되며 서로 다른 컬럼(column)으로 구분되는 비트 라인들이 연결된 메모리 블록; 상기 복수의 페이지들에 각각 저장될 사용자 데이터의 정보를 포함하는 시스템 데이터를 생성하도록 구성된 시스템 데이터 관리부; 및 상기 복수의 페이지들에 대응되는 어드레스들을 생성하도록 구성된 어드레스 관리부를 포함하고, 상기 시스템 데이터 관리부는, 상기 어드레스들에 따라 상기 시스템 데이터가 저장되는 상기 컬럼(column)을 변경하는 것을 특징으로 한다.
본 발명의 실시 예에 따른 메모리 시스템은, 제1 비트 라인과 제1 워드 라인에 연결된 제1 메모리 셀, 상기 제1 비트 라인에 인접한 제2 비트 라인과 상기 제1 워드 라인에 연결된 제2 메모리 셀, 상기 제1 워드 라인에 인접한 제2 워드 라인과 상기 제1 비트 라인에 연결된 제3 메모리 셀 및 상기 제2 비트 라인과 상기 제2 워드 라인에 연결된 제4 메모리 셀을 포함하는 메모리 장치; 및 프로그램 동작 시, 상기 메모리 장치에게 인덱스 데이터를 포함하는 데이터 세트들을 전송하도록 구성된 메모리 컨트롤러를 포함하고, 상기 메모리 컨트롤러는, 상기 인덱스 데이터가 상기 제1 및 제4 메모리 셀들에 저장되도록 상기 데이터 세트들을 생성하는 것을 특징으로 한다.
본 발명의 실시 예에 따른 메모리 시스템은, 인덱스 데이터가 저장되는 제1 영역 및 사용자 데이터가 저장되는 제2 영역을 포함하는 메모리 블록; 상기 메모리 블록에 상기 인덱스 데이터 및 상기 사용자 데이터를 프로그램하도록 구성된 주변 회로; 및 상기 사용자 데이터의 상태에 따라 상기 인덱스 데이터를 생성하고, 상기 사용자 데이터 및 상기 인덱스 데이터를 상기 주변 회로에게 전송하도록 구성된 메모리 컨트롤러를 포함하고, 상기 인덱스 데이터는 상기 제1 영역에 포함된 페이지들마다 동일한 비트 수로 저장되고, 상기 인덱스 데이터는 상기 제1 영역에서 서로 다른 컬럼들에 분산되어 저장되는 것을 특징으로 한다.
본 기술은 동일한 컬럼의 플래그 셀들에 동일한 데이터가 저장되는 현상을 방지함으로써, 플래그 셀들의 리드 동작의 신뢰도를 개선할 수 있다.
도 1은 본 발명의 실시 예에 따른 메모리 시스템을 설명하기 위한 도면이다.
도 2는 메모리 장치를 설명하기 위한 도면이다.
도 3은 메모리 셀 어레이 및 페이지 버퍼 그룹을 설명하기 위한 도면이다.
도 4는 메모리 블록을 설명하기 위한 도면이다.
도 5는 본 발명의 실시 예에 따른 메모리 컨트롤러를 설명하기 위한 도면이다.
도 6은 본 발명의 실시 예에 따른 프로그램 동작을 설명하기 위한 도면이다.
도 7a 및 도 7b는 메모리 컨트롤러에서 생성되는 데이터 세트를 설명하기 위한 도면들이다.
도 8은 인덱스 데이터를 포함하는 시스템 데이터의 패턴을 설명하기 위한 도면이다.
도 9a 및 도 9b는 메모리 컨트롤러에서 생성된 데이터 세트를 메모리 장치에게 전송하는 방법을 설명하기 위한 도면들이다.
도 10은 본 발명의 제1 실시 예에 따른 시스템 데이터의 패턴을 설명하기 위한 도면이다.
도 11은 본 발명의 제2 실시 예에 따른 시스템 데이터의 패턴을 설명하기 위한 도면이다.
도 12는 본 발명의 제3 실시 예에 따른 시스템 데이터의 패턴을 설명하기 위한 도면이다.
도 13은 본 발명의 제4 실시 예에 따른 시스템 데이터의 패턴을 설명하기 위한 도면이다.
도 14는 본 발명의 제5 실시 예에 따른 시스템 데이터의 패턴을 설명하기 위한 도면이다.
도 15는 본 발명의 실시 예에 따른 리드 동작을 설명하기 위한 도면이다.
도 16은 본 발명의 메모리 장치가 적용된 메모리 카드 시스템을 설명하기 위한 도면이다.
도 17은 본 발명의 메모리 장치가 적용된 SSD(Solid State Drive) 시스템을 설명하기 위한 도면이다.
도 2는 메모리 장치를 설명하기 위한 도면이다.
도 3은 메모리 셀 어레이 및 페이지 버퍼 그룹을 설명하기 위한 도면이다.
도 4는 메모리 블록을 설명하기 위한 도면이다.
도 5는 본 발명의 실시 예에 따른 메모리 컨트롤러를 설명하기 위한 도면이다.
도 6은 본 발명의 실시 예에 따른 프로그램 동작을 설명하기 위한 도면이다.
도 7a 및 도 7b는 메모리 컨트롤러에서 생성되는 데이터 세트를 설명하기 위한 도면들이다.
도 8은 인덱스 데이터를 포함하는 시스템 데이터의 패턴을 설명하기 위한 도면이다.
도 9a 및 도 9b는 메모리 컨트롤러에서 생성된 데이터 세트를 메모리 장치에게 전송하는 방법을 설명하기 위한 도면들이다.
도 10은 본 발명의 제1 실시 예에 따른 시스템 데이터의 패턴을 설명하기 위한 도면이다.
도 11은 본 발명의 제2 실시 예에 따른 시스템 데이터의 패턴을 설명하기 위한 도면이다.
도 12는 본 발명의 제3 실시 예에 따른 시스템 데이터의 패턴을 설명하기 위한 도면이다.
도 13은 본 발명의 제4 실시 예에 따른 시스템 데이터의 패턴을 설명하기 위한 도면이다.
도 14는 본 발명의 제5 실시 예에 따른 시스템 데이터의 패턴을 설명하기 위한 도면이다.
도 15는 본 발명의 실시 예에 따른 리드 동작을 설명하기 위한 도면이다.
도 16은 본 발명의 메모리 장치가 적용된 메모리 카드 시스템을 설명하기 위한 도면이다.
도 17은 본 발명의 메모리 장치가 적용된 SSD(Solid State Drive) 시스템을 설명하기 위한 도면이다.
도 1은 본 발명의 실시 예에 따른 메모리 시스템을 설명하기 위한 도면이다.
도 1을 참조하면, 메모리 시스템(memory system; 1000)은 저장 장치(storage device; 1100) 및 메모리 컨트롤러(memory controller; 1200)를 포함할 수 있다. 저장 장치(1100)는 복수의 메모리 장치들(MD)을 포함할 수 있으며, 메모리 장치들(MD)은 입출력 라인들을 통해 메모리 컨트롤러(1200)에 연결될 수 있다.
메모리 컨트롤러(1200)는 호스트(host; 1500)와 메모리 장치(MD) 사이에서 통신할 수 있다. 메모리 컨트롤러(1200)는 호스트(1500)의 요청(request; RQ)에 따라 메모리 장치들(MD)을 제어하기 위한 커맨드(CMD)를 생성할 수 있고, 호스트(1500)의 요청(RQ)이 없더라도 메모리 시스템(1000)의 성능 개선을 위한 백그라운드 동작을 수행할 수 있다.
호스트(1500)는 다양한 동작을 위한 요청들(RQ)을 생성하고, 생성된 요청들(RQ)을 메모리 시스템(1000)에게 출력할 수 있다. 예를 들면, 요청들(RQ)은 프로그램 동작(program operation)을 제어할 수 있는 프로그램 요청(program request), 리드 동작(read operation)을 제어할 수 있는 리드 요청(read request), 소거 동작(erase operation)을 제어할 수 있는 소거 요청(erase request) 등을 포함할 수 있다.
호스트(1500)는 PCIe(Peripheral Component Interconnect Express), ATA(Advanced Technology Attachment), SATA(Serial ATA), PATA(Parallel ATA), SAS(serial attached SCSI), NVMe(Non-Volatile Memory Express), USB(Universal Serial Bus), MMC(Multi-Media Card), ESDI(Enhanced Small Disk Interface), 또는 IDE(Integrated Drive Electronics) 등과 같은 다양한 인터페이스들을 통해 메모리 시스템(1000)과 통신할 수 있다.
본 실시 예에 따른 메모리 컨트롤러(1200)는 프로그램 동작 시 메모리 장치(MD)에게 프로그램 동작을 위한 커맨드(CMD), 어드레스 및 데이터 세트를 전송할 수 있으며, 리드 동작 시 메모리 장치(MD)로부터 리드된 데이터 세트를 수신할 수 있다. 데이터 세트는 호스트(1500)로부터 수신받은 사용자 데이터와, 메모리 컨트롤러(1200)에서 관리하는 시스템 데이터를 생성한 후, 사용자 데이터와 시스템 데이터를 포함하는 데이터 세트를 선택된 메모리 장치(MD)에게 전송할 수 있다. 메모리 컨트롤러(1200)는 메모리 장치(MD)의 프로그램 및 소거 동작들의 사이클(cycle) 횟수에 따라 사용자 데이터를 원본 데이터로 유지하거나 반전 데이터로 변경할 수 있다. 사용자 데이터가 반전 데이터로 변경되는 경우, 메모리 컨트롤러(1200)는 반전 데이터임을 나타내기 위하여 시스템 데이터에 인덱스 데이터를 포함시킬 수 있다. 이때, 메모리 컨트롤러(1200)는 데이터 세트에 포함되는 인덱스 데이터의 위치, 예를 들면 컬럼(column)을 변경할 수 있다. 예를 들면, 컬럼은 시스템 데이터가 저장되는 메모리 블록에서 스트링 또는 비트라인으로 구분되는 영역을 의미한다. 예를 들면, 메모리 블록에서 워드라인에 따라 로우(row) 영역이 결정될 수 있고, 스트링 또는 비트라인에 따라 컬럼 영역이 결정될 수 있다.
따라서, 메모리 컨트롤러(1200)는 리드 동작 시, 메모리 장치(MD)로부터 리드된 데이터 세트의 시스템 데이터에 따라 사용자 데이터의 상태를 판단할 수 있다. 예를 들면, 메모리 컨트롤러(1200)는 시스템 데이터에 인덱스 데이터가 포함되어 있으면 리드된 사용자 데이터가 반전 데이터임을 판단할 수 있고, 리드된 사용자 데이터를 원본 데이터로 변경한 후 원본 데이터를 호스트(1500)에게 출력할 수 있다.
도 1에 도시된 메모리 장치(MD)를 구체적으로 설명하면 다음과 같다.
도 2는 메모리 장치를 설명하기 위한 도면이다.
도 2를 참조하면, 메모리 장치(MD)는 데이터가 저장되는 메모리 셀 어레이(memory cell array; 110)와, 프로그램, 리드 또는 소거 동작을 수행하는 주변 회로(200)와, 주변 회로(200)를 제어하는 로직 회로(logic circuit; 160)를 포함할 수 있다.
메모리 셀 어레이(110)는 데이터가 저장되는 복수의 메모리 블록들(BLK1~BLKi; i는 양의 정수)을 포함할 수 있다. 메모리 블록(BLK1~BLKi)들 각각은 복수의 메모리 셀들을 포함하며, 메모리 셀들은 기판에 평행하게 배열되는 2차원 구조 또는 기판에 수직 방향으로 적층되는 3차원 구조로 구현될 수 있다.
주변 회로(200)는 전압 생성기(voltage generator; 120), 로우 디코더(row decoder; 130), 페이지 버퍼 그룹(page buffer group; 140) 및 입출력 회로(input/output circuit; 150)를 포함할 수 있다.
전압 생성기(120)는 전압 코드(VCD)에 응답하여, 다양한 동작들에 필요한 동작 전압들(Vop)을 생성 및 출력할 수 있다. 예를 들면, 전압 생성기(120)는 프로그램 전압, 검증 전압, 리드 전압, 패스 전압 및 소거 전압 등을 포함하는 동작 전압들(Vop)을 생성 및 출력할 수 있다.
로우 디코더(130)는 로우 어드레스(RADD)에 따라 메모리 셀 어레이(110)에 포함된 메모리 블록들(BLK1~BLKi) 중에서 하나의 메모리 블록을 선택하고, 선택된 메모리 블록에 동작 전압들(Vop)을 전송할 수 있다.
페이지 버퍼 그룹(140)은 비트 라인들(bit lines)을 통해 메모리 셀 어레이(110)에 연결될 수 있다. 예를 들면, 페이지 버퍼 그룹(140)은 비트 라인들 각각에 연결된 페이지 버퍼들을 포함할 수 있다. 페이지 버퍼들은 페이지 버퍼 제어 신호들(PBSIG)에 응답하여 동시에 동작할 수 있으며, 프로그램 또는 리드 동작 시 데이터를 임시로 저장할 수 있다.
입출력 회로(150)는 입출력 라인들을 통해 메모리 컨트롤러(도 1의 1200)에 연결될 수 있다. 입출력 회로(150)는 입출력 라인들을 통해 커맨드(CMD), 어드레스(ADD) 및 데이터(DATA)를 입출력할 수 있다. 예를 들면, 입출력 회로(150)는 입출력 라인들을 통해 수신된 커맨드(CMD) 및 어드레스(ADD)를 로직 회로(160)에 전송할 수 있고, 입출력 라인들을 통해 수신된 데이터(DATA)를 페이지 버퍼 그룹(140)으로 전송할 수 있다. 입출력 회로(150)는 페이지 버퍼 그룹(140)로부터 수신된 데이터(DATA)를 입출력 라인들을 통해 메모리 컨트롤러(1200)로 출력할 수 있다. 여기서, 데이터(DATA)는 도 1을 참조하여 설명된 데이터 세트일 수 있다.
로직 회로(160)는 커맨드(CMD) 및 어드레스(ADD)에 응답하여, 전압 코드(VCD), 로우 어드레스(RADD), 페이지 버퍼 제어 신호들(PBSIG) 및 컬럼 어드레스(CADD)를 출력할 수 있다. 예를 들면, 로직 회로(160)는 커맨드(CMD)에 응답하여 알고리즘을 수행하는 소프트웨어와, 어드레스(ADD) 및 알고리즘에 따라 다양한 신호들을 출력하도록 구성된 하드웨어를 포함할 수 있다.
도 3은 메모리 셀 어레이 및 페이지 버퍼 그룹을 설명하기 위한 도면이다.
도 3을 참조하면, 메모리 셀 어레이(110)는 제1 내지 제i 메모리 블록들(BLK1~BLKi)을 포함할 수 있다. 제1 내지 제i 메모리 블록들(BLK1~BLKi) 각각은 서로 다른 종류의 데이터가 저장될 수 있는 복수의 영역들을 포함할 수 있다. 예를 들면, 제1 내지 제i 메모리 블록들(BLK1~BLKi) 각각은 서로 다른 영역들에 해당하는 제1 및 제2 서브 블록들(1SB, 2SB)을 포함할 수 있다. 제1 서브 블록들(1SB)은 제1 내지 제j 비트 라인들(BL1~BLj; j는 양의 정수)공통으로 연결될 수 있고, 제2 서브 블록들(2SB)은 제j+1 내지 제j+m 비트 라인들(BLj+1~BLj+m)에 공통으로 연결될 수 있다. 제1 서브 블록들(1SB)에는 시스템 데이터가 저장될 수 있고, 제2 서브 블록들(2SB)에는 사용자 데이터가 저장될 수 있다. 따라서, 제1 서브 블록들(1SB)의 저장 용량은 제2 서브 블록들(2SB)의 저장 용량보다 적다. 다시 말하면, 제1 서브 블록들(1SB)에 포함된 메모리 셀들의 개수는 제2 서브 블록들(2SB)에 포함된 메모리 셀들의 개수보다 적다. 실시 예에 따라, 제1 서브 블록들(1SB)에 포함된 메모리 셀들은 플래그 셀들로 정의될 수 있고, 제2 서브 블록들(2SB)에 포함된 메모리 셀들은 노말 메모리 셀들로 정의될 수 있다.
페이지 버퍼 그룹(140)은 제1 서브 블록들(1SB)에 공통으로 연결된 제1 내지 제j 페이지 버퍼들(PB1~PBj)과, 제2 서브 블록들(2SB)에 공통으로 연결된 제j+1 내지 제j+m 페이지 버퍼들(PBj+1~PBj+m)을 포함할 수 있다. 프로그램 동작 시, 제1 내지 제j+m 페이지 버퍼들(PB1~PBj+m)에는 메모리 컨트롤러로부터 수신된 데이터 세트가 저장될 수 있으며, 제1 내지 제j+m 페이지 버퍼들(PB1~PBj+m)에 저장된 데이터 세트에 따라 제1 내지 제j+m 비트 라인들(BL1~BLj+m)의 전압이 결정될 수 있다.
프로그램 동작 시, 제1 내지 제i 메모리 블록들(BLK1~BLKi) 중 선택된 메모리 블록이 제1 내지 제j+m 비트 라인들(BL1~BLj+m)에 연결되고, 선택된 메모리 블록에 포함된 선택된 메모리 셀들이 프로그램될 수 있다.
도 4는 메모리 블록을 설명하기 위한 도면으로써, 도 3에 도시된 복수의 메모리 블록들(BLK1~BLKi) 중에서 제i 메모리 블록(BLKi)이 예로써 도시된다.
도 4를 참조하면, 제i 메모리 블록(BLKi)은 복수의 스트링들(ST)을 포함할 수 있다. 복수의 스트링들(ST)은 제1 내지 제j+m 비트 라인들(BL1~BLj+m)과 소스 라인(SL) 사이에 연결될 수 있다. 예를 들면, 제1 비트 라인(BL1)과 소스 라인(SL) 사이에 하나의 스트링(ST)이 연결될 수 있고, 제2 비트 라인(BL2)과 소스 라인(SL) 사이에 하나의 스트링(ST)이 연결될 수 있다. 이러한 방식으로 제j+m 비트 라인(BLj+m)와 소스 라인(SL) 사이에도 하나의 스트링(ST)이 연결될 수 있다.
제1 서브 블록(1SB) 및 제2 서브 블록(2SB) 각각에는 복수의 스트링들(ST)이 포함될 수 있으며, 스트링들(ST)에 개수에 차이가 있을 수 있다. 제1 서브 블록(1SB)에 시스템 데이터가 저장되고 제2 서브 블록(2SB)에 사용자 데이터가 저장되도록 설정되는 경우, 제1 서브 블록(1SB)에 포함된 스트링들(ST)의 개수는 제2 서브 블록(2SB)에 포함된 스트링들(ST)의 개수보다 적을 수 있다. 제1 및 제2 서브 블록들(1SB, 2SB)에 포함된 스트링들(ST)은 소스 선택 트랜지스터(SST), 제1 내지 제n 메모리 셀들(F1~Fn) 및 드레인 선택 트랜지스터(DST)를 포함할 수 있다. 제1 비트 라인(BL1)에 연결된 스트링(ST)을 예를 들어 구체적으로 설명하면 다음과 같다.
스트링(ST)에 포함된 소스 선택 트랜지스터(SST)는 소스 선택 라인(SSL)에 인가되는 전압에 따라 소스 라인(SL)과 제1 메모리 셀(F1)을 전기적으로 서로 연결하거나 차단할 수 있다. 제1 내지 제n 메모리 셀들(F1~Fn)의 게이트들은 제1 내지 제n 워드 라인들(WL1~WLn)에 각각 연결될 수 있다. 드레인 선택 트랜지스터(DST)는 드레인 선택 라인(DSL)에 인가되는 전압에 따라 제1 비트 라인(BL1)과 제n 메모리 셀(Fn)을 전기적으로 서로 연결하거나 차단할 수 있다. 서로 다른 스트링들(ST)에 포함된 소스 선택 트랜지스터들(SST)의 게이트들은 소스 선택 라인(SSL)에 공통으로 연결될 수 있고, 제1 내지 제n 메모리 셀들(F1~Fn)의 게이트들은 제1 내지 제n 워드 라인들(WL1~WLn)에 연결될 수 있으며, 드레인 선택 트랜지스터들(DST)의 게이트들은 드레인 선택 라인(DSL)에 공통으로 연결될 수 있다. 동일한 워드 라인에 연결된 메모리 셀들의 그룹을 페이지(page; PG)라 하며, 프로그램 및 리드 동작은 페이지(PG) 단위로 수행될 수 있다.
본 실시 예에 따른 프로그램 동작은 프로그램 전압이 단계적으로 높아지는 ISPP(incremental step pulse program) 방식으로 수행될 수 있다. ISPP 방식의 프로그램 동작에서는 선택된 메모리 셀들의 문턱전압이 목표전압까지 높아질 때까지 복수의 프로그램 루프들(program loops)이 수행될 수 있으며, 프로그램 루프가 수행될 때마다 프로그램 전압은 단계적으로 높아질 수 있다.
제1 내지 제n 메모리 셀들(F1~Fn)은 저장되는 비트의 개수에 따라 다양한 방식으로 프로그램 또는 리드될 수 있다. 예를 들면, 싱글 레벨 셀(single level cell) 방식에서는 하나의 메모리 셀에 1 비트의 데이터가 저장될 수 있으며, 멀티 레벨 셀(multi level cell) 이상의 방식에서는 하나의 메모리 셀에 2 비트 이상의 데이터가 저장될 수 있다. 예를 들면, 멀티 레벨 셀 방식에서는 하나의 메모리 셀에 2 비트의 데이터가 저장될 수 있고, 트리플 레벨 셀(triple level cell) 방식에서는 하나의 메모리 셀에 3 비트의 데이터가 저장될 수 있으며, 쿼드러플 레벨 셀(quadruple level cell) 방식에서는 하나의 메모리 셀에 4 비트의 데이터가 저장될 수 있다. 이 외에도 하나의 메모리 셀에 5 비트 이상의 데이터가 저장될 수도 있다. 멀티 레벨 셀(multi level cell) 이상의 방식에서 하나의 메모리 셀에 저장되는 복수의 비트들의 데이터 각각은 서로 다른 논리 페이지 데이터일 수 있다. 트리플 레벨 셀 방식을 예를 들어 설명하면, 트리플 레벨 셀 방식에서는 하나의 페이지에 세 개의 논리 페이지 데이터가 저장될 수 있다. 세 개의 논리 페이지 데이터는 하위 비트 데이터, 중간 비트 데이터 및 상위 비트 데이터일 수 있다.
도 5는 본 발명의 실시 예에 따른 메모리 컨트롤러를 설명하기 위한 도면이다.
도 5를 참조하면, 메모리 컨트롤러(1200)는 호스트 인터페이스(host interface; 51), 사용자 데이터 관리부(user data manager; 52), 시스템 데이터 관리부(system data manager; 53), 어드레스 관리부(address manager; 54), 중앙 처리 장치(central processing unit; 55), 시스템 메모리(system memory; 56), 사이클 카운터(cycle counter; 57) 및 메모리 인터페이스(memory interface; 58)를 포함할 수 있다. 호스트 인터페이스(51), 사용자 데이터 관리부(52), 시스템 데이터 관리부(53), 어드레스 관리부(54), 중앙 처리 장치(55), 시스템 메모리(56), 사이클 카운터(57) 및 메모리 인터페이스(58)는 버스(bus; 60)를 통해 서로 통신할 수 있다. 호스트 인터페이스(51), 사용자 데이터 관리부(52), 시스템 데이터 관리부(53), 어드레스 관리부(54), 시스템 메모리(56), 사이클 카운터(57) 및 메모리 인터페이스(58)는 중앙 처리 장치(55)의 제어에 따라 동작할 수 있다. 각 장치들을 구체적으로 설명하면 다음과 같다.
호스트 인터페이스(51)는 호스트(1500)와 메모리 컨트롤러(1200) 사이에서 요청(request), 어드레스(address) 또는 데이터(data)를 전송하도록 구성될 수 있다. 예를 들면, 호스트 인터페이스(51)는 호스트(1500)로부터 출력된 요청(request)이 수신되면, 수신된 요청을 중앙 처리 장치(55)에게 전송할 수 있다. 중앙 처리 장치(55)는 수신된 요청을 메모리 시스템 내부에서 사용할 수 있는 커맨드(command)로 변경하고, 수신된 요청에 따라 호스트 인터페이스(51), 사용자 데이터 관리부(52), 시스템 데이터 관리부(53), 어드레스 관리부(54), 시스템 메모리(56), 사이클 카운터(57) 및 메모리 인터페이스(58)를 각각 제어할 수 있다. 예를 들면, 중앙 처리 장치(55)의 제어에 따라 호스트 인터페이스(51)에 입력된 정보가 다른 장치들(52~54, 56~58)로 선택적으로 전송될 수 있고, 서로 다른 장치들(51~54, 56~58) 사이에도 정보들이 전송될 수도 있다.
사용자 데이터 관리부(52)는 호스트 인터페이스(51)로부터 출력된 사용자 데이터를 메모리 인터페이스(58)로 전송하거나, 사용자 데이터를 반전 데이터로 가변한 후에 가변된 사용자 데이터를 시스템 메모리(56)에게 전송하도록 구성될 수 있다. 예를 들면, 사용자 데이터 관리부(52)는 프로그램 동작 시 선택된 메모리 블록의 사이클 횟수가 기준 값에 대응되는지를 판단하도록 구성될 수 있다. 사용자 데이터 관리부(52)는 선택된 메모리 블록의 사이클 횟수가 기준 값에 대응되지 않으면 사용자 데이터를 원본 그대로 시스템 메모리(56)로 전송할 수 있고, 선택된 메모리 블록의 사이클 횟수가 기준 값에 대응되면 사용자 데이터를 반전시키고 반전된 사용자 데이터를 시스템 메모리(56)로 전송하도록 구성될 수 있다. 예를 들면, 기준 값은 홀수 또는 짝수로 지정될 수 있다. 기준 값이 짝수로 지정된 경우, 사용자 데이터 관리부(52)는 선택된 메모리 블록의 사이클 횟수가 홀수일 때에는 사용자 데이터를 원본 그대로 시스템 메모리(56)로 전송할 수 있고, 선택된 메모리 블록의 사이클 횟수가 짝수일 때에서는 반전된 사용자 데이터를 시스템 메모리(56)로 전송하도록 구성될 수 있다. 따라서, 사용자 데이터 관리부(52)는 사용자 데이터를 메모리 블록 단위로 선택적으로 반전하도록 구성될 수 있다.
시스템 데이터 관리부(53)는 사용자 데이터를 페이지 단위로 관리하도록 구성될 수 있다. 예를 들면, 시스템 데이터 관리부(53)는 사용자 데이터에 대한 다양한 정보들을 시스템 데이터로써 생성하도록 구성될 수 있다. 예를 들면, 시스템 데이터는 인덱스 데이터 및 패리티 등을 포함할 수 있다. 인덱스 데이터는 사용자 데이터의 반전 여부를 나타내기 위한 데이터일 수 있다. 예를 들면, 사용자 데이터 관리부(52)에 의해 사용자 데이터가 원본 데이터로 유지되는 경우, 시스템 데이터 관리부(53)는 인덱스 데이터를 제1 인덱스 데이터로 생성할 수 있다. 제1 인덱스 데이터는 0 및 1 데이터 중에서 1로 설정될 수 있다. 사용자 데이터 관리부(52)에 의해 사용자 데이터가 반전되는 경우, 시스템 데이터 관리부(53)는 인덱스 데이터를 제2 인덱스 데이터로 생성할 수 있다. 제2 인덱스 데이터는 0 및 1 데이터 중에서 0으로 설정될 수 있다. 여기서, 1 데이터는 제1 서브 블록(도 4의 1SB)에 포함된 메모리 셀이 소거 상태로 유지되는 데이터이고, 0 데이터는 제1 서브 블록(도 4의 1SB)에 포함된 메모리 셀이 프로그램되는 데이터일 수 있다. 즉, 사용자 데이터 관리부(52)에 의해 사용자 데이터가 반전되는 경우, 시스템 데이터 관리부(53)는 인덱스 데이터를 메모리 셀이 프로그램되는 데이터로 생성할 수 있다.
또한, 시스템 데이터 관리부(53)는 어드레스 관리부(54)에서 생성되는 워드 라인 어드레스에 따라 인덱스 데이터가 저장되는 컬럼(column)을 변경할 수 있다. 이에 대한 설명을 위하여, 어드레스 관리부(54)를 설명하면 다음과 같다.
어드레스 관리부(54)는 사용자 데이터를 워드 라인 단위로 구분하고, 워드 라인 어드레스를 시스템 데이터 관리부(53)에게 전송하도록 구성될 수 있다. 예를 들면, 어드레스 관리부(54)는 제2 서브 블록의 전체 용량을 워드 라인 단위로 구분하고, 워드 라인 단위로 분할되는 사용자 데이터에 워드 라인 어드레스를 각각 대응시키고, 각각의 워드 라인 어드레스를 시스템 데이터 관리부(53)에게 전송할 수 있다.
예를 들면, 어드레스 관리부(54)는 사용자 데이터 관리부(52)에서 제1 워드 라인에 대응되는 사이즈를 가지는 데이터가 시스템 메모리(56)에 전송되면, 해당 데이터에 대한 제1 워드 라인 어드레스를 시스템 데이터 관리부(53)에게 전송할 수 있다. 제1 워드 라인 어드레스에 대응되는 사이즈의 사용자 데이터가 시스템 메모리(56)로 전송된 후, 제2 워드 라인에 대응되는 사이즈를 가지는 데이터가 사용자 데이터 관리부(52)로부터 시스템 메모리(56)로 전송되면, 어드레스 관리부(54)는 해당 데이터에 대한 제2 워드 라인 어드레스를 시스템 데이터 관리부(53)에게 전송할 수 있다. 이러한 방식으로 어드레스 관리부(54)는 사용자 데이터 관리부(52)로부터 사용자 데이터가 제2 서브 블록의 워드 라인 단위로 시스템 메모리(56)로 전송될 때마다 생성되는 워드 라인 어드레스를 시스템 데이터 관리부(53)에게 전송할 수 있다.
시스템 데이터 관리부(53)는 사용자 데이터 관리부(52)에서 사용자 데이터가 반전된 경우, 어드레스 관리부(54)에서 출력된 워드 라인 어드레스에 따라 시스템 데이터가 저장되는 컬럼을 변경할 수 있다. 예를 들면, 시스템 데이터 관리부(53)는 연속되는 워드 라인 어드레스들의 인덱스 데이터가 동일한 컬럼에 위치하지 않도록 인덱스 데이터의 컬럼을 변경할 수 있다. 인덱스 데이터의 컬럼이 변경되면, 데이터 세트에 포함되는 인덱스 데이터의 위치가 변경될 수 있다. 시스템 데이터 관리부(53)는 인덱스 데이터의 컬럼을 변경하여 다양한 패턴을 가지는 시스템 데이터를 생성하고, 생성된 시스템 데이터를 시스템 메모리(56)에게 전송할 수 있다.
시스템 메모리(56)는 데이터를 임시로 저장할 수 있는 버퍼 셀들을 포함할 수 있다. 예를 들면, 버퍼 셀들은 DRAM(dynamic random access memory) 또는 SRAM(static random access memory)으로 구현될 수 있으며, 이 이에도 다양한 방식의 셀들로 구현될 수도 있다. 시스템 메모리(56)는 메모리 컨트롤러(1200)의 동작에 필요한 다양한 정보를 저장할 수 있다. 예를 들면, 시스템 메모리(56)는 물리 어드레스들과 논리 어드레스들의 연결 관계에 대한 정보인 어드레스 맵 테이블을 포함할 수 있으며, 프로그램 또는 리드 동작 시 데이터를 임시로 저장할 수도 있다. 물리 어드레스는 저장 장치(1100)에서 사용되는 어드레스이고, 논리 어드레스는 호스트(1500)에서 사용되는 어드레스일 수 있다. 시스템 메모리(56)는 프로그램 동작 시 동일한 워드 라인 어드레스에 대응되는 사용자 데이터 및 시스템 데이터를 임시로 저장한 후, 중앙 처리 장치(55)의 제어에 따라 사용자 데이터 및 시스템 데이터를 포함하는 데이터 세트를 임시로 저장한 후, 데이터 세트를 메모리 인터페이스(58)로 전송할 수 있다.
사이클 카운터(57)는 프로그램 동작 시 선택된 메모리 블록의 사이클(cycle) 횟수를 카운트하도록 구성될 수 있다. 선택된 메모리 블록의 사이클 횟수는 선택된 메모리 블록에서 수행된 프로그램 동작 및 소거 동작의 횟수를 의미한다. 예를 들면, 프로그램 동작이 1회 수행되고 소거 동작이 1회 수행되면 사이클 횟수는 1회 증가한다. 사이클 카운터(57)는 프로그램 동작 시 선택된 메모리 블록의 누적된 사이클 횟수를 사용자 데이터 관리부(52)로 전송할 수 있다.
메모리 인터페이스(58)는 메모리 컨트롤러(1200)와 저장 장치(1100) 사이에서 정보를 전달하도록 구성될 수 있다. 예를 들면, 프로그램 동작 시, 메모리 인터페이스(58)는 중앙 처리 장치(55)로부터 출력된 커맨드와, 시스템 메모리(56)로부터 출력된 데이터 세트 및 어드레스를 저장 장치(1100)에 포함된 선택된 메모리 장치에게 전송할 수 있다. 리드 동작 시, 메모리 인터페이스(58)는 저장 장치(1100)로부터 출력된 데이터 세트를 시스템 메모리(56)에게 전송할 수 있다. 시스템 메모리(56)에 전송된 데이터 세트는 에러 정정부(미도시)에 의해 수행되는 에러 정정 동작에 의해 에러가 검출 및 정정될 수 있으며, 데이터 세트에 포함된 사용자 데이터가 호스트 인터페이스(51)를 통해 호스트(1500)로 출력될 수 있다.
도 6은 본 발명의 실시 예에 따른 프로그램 동작을 설명하기 위한 도면이다.
도 6 및 도 5를 참조하면, 호스트(1500)가 메모리 컨트롤러(1200)에게 프로그램 요청을 출력하면(S61), 메모리 컨트롤러(1200)는 프로그램 요청에 응답하여 프로그램 동작이 수행될 메모리 블록을 선택할 수 있다(S62). 예를 들면, 메모리 컨트롤러(1200)는 프로그램 동작이 수행될 메모리 블록의 블록 어드레스를 선택할 수 있다.
사이클 카운터(57)가 선택된 메모리 블록의 사이클 횟수(cycle number)를 사용자 데이터 관리부(52)에게 전송하면, 사용자 데이터 관리부(52)는 사이클 횟수(cycle number)와 기준 값(reference value)을 서로 비교할 수 있다(S63). 기준 값은 홀수 또는 짝수로 지정될 수 있다.
선택된 메모리 블록의 사이클 횟수가 기준 값에 대응되지 않으면(NO), 사용자 데이터 관리부(52)는 사용자 데이터를 원본 그대로 시스템 메모리(56)에게 전송할 수 있고, 시스템 데이터 관리부(53)는 사용자 데이터에 대한 시스템 데이터를 생성하여 시스템 메모리(56)에게 전송할 수 있다. 이때, 사용자 데이터가 원본으로 유지되므로, 시스템 데이터에는 제1 인덱스 데이터가 포함될 수 있다.
이어서, 시스템 메모리(56)에 임시 저장된 데이터 세트는 메모리 인터페이스(58)로 전송되고, 메모리 인터페이스(58)에 저장된 데이터 세트는 선택된 메모리 장치에게 출력될 수 있다(S66).
선택된 메모리 블록의 사이클 횟수가 기준 값에 대응되면(YES), 사용자 데이터 관리부(52)는 사용자 데이터를 반전시킬 수 있다(S64). 반전된 사용자 데이터는 시스템 메모리(56)에게 전송될 수 있다.
이어서, 시스템 데이터 관리부(53)는 사용자 데이터에 대한 시스템 데이터를 생성할 수 있다. 이때, 시스템 데이터 관리부(53)는 사용자 데이터가 반전된 데이터임을 나타내기 위한 제2 인덱스 데이터를 생성하고, 워드 라인 어드레스에 따라 제2 인덱스 데이터에 대응되는 컬럼을 선택할 수 있다(S65). 예를 들면, 시스템 데이터 관리부(53)는 워드 라인 어드레스가 바뀔 때마다 인덱스 데이터가 저장될 메모리 셀의 컬럼을 변경할 수 있다.
S64 단계 및 S65 단계에서 생성된 반전된 사용자 데이터 및 시스템 데이터가 시스템 메모리(56)로 전송되면, 시스템 메모리(56)는 사용자 데이터 및 시스템 데이터를 포함한 데이터 세트를 메모리 인터페이스(58)로 전송하고, 메모리 인터페이스(58)는 데이터 세트를 선택된 메모리 장치에게 출력할 수 있다(S66).
상술한 실시 예에서는 선택된 메모리 블록의 사이클 횟수가 기준 값에 대응되는 경우(YES)에 제2 인덱스 데이터에 대응되는 컬럼이 변경되지만, 선택된 메모리 블록의 사이클 횟수가 기준 값에 대응되지 아니한 경우(NO)에도 제1 인덱스 데이터에 대응되는 컬럼을 변경하는 동작이 수행될 수도 있다.
도 7a 및 도 7b는 메모리 컨트롤러에서 생성되는 데이터 세트를 설명하기 위한 도면들이다.
도 7a를 참조하면, 하나의 페이지에 j+m 비트의 데이터가 저장된다고 가정하면, 1 비트의 데이터가 각각 저장되는 메모리 셀들에는 제1 내지 제j+m 컬럼들(C1~Cj+m)이 할당될 수 있다. 제1 컬럼(C1)에 대응되는 메모리 셀에는 제1 비트 라인이 연결될 수 있고, 제j+m 컬럼(Cj+m)에 대응되는 메모리 셀에는 제j+m 비트 라인이 연결될 수 있다.
하나의 페이지에서 시스템 데이터(system data)는 제1 내지 제j 컬럼들(C1~Cj)에 대응되는 메모리 셀들에 저장될 수 있고, 사용자 데이터(user data)는 제j+1 내지 제j+m 컬럼들(Cj+1~Cj+m)에 대응되는 메모리 셀들에 저장될 수 있다.
시스템 데이터는 인덱스 데이터(ID) 및 페이지 정보(PIF)를 포함할 수 있다. 인덱스 데이터(ID)는 제1 내지 제j 컬럼들(C1~Cj)에 대응되는 메모리 셀들 중 어느 하나에 저장될 수 있다. 페이지 정보(PIF)는 제1 내지 제j 컬럼들(C1~Cj) 중에서 인덱스 데이터(ID)에 대응되는 컬럼을 제외한 나머지 컬럼들에 대응되는 메모리 셀들에 저장될 수 있다. 페이지 정보(PIF)는 사용자 데이터에 대한 다양한 정보를 포함할 수 있다. 예를 들면, 페이지 정보(PIF)는 사용자 데이터의 논리 페이지 데이터 정보를 포함할 수 있다. 논리 페이지 데이터 정보는 멀티 레벨 셀 이상의 방식에서 시스템 데이터에 포함될 수 있는 정보이다. 예를 들면, 논리 페이지 데이터 정보에 따라 사용자 데이터는 하위 비트 데이터인지, 중간 비트 데이터인지 또는 상위 비트 데이터인지 판별될 수 있다.
도 7b를 참조하면, 도 7a에 도시된 도면과 다르게, 시스템 데이터(system data)와 사용자 데이터(user data)가 저장되는 순서가 바뀔 수도 있다. 예를 들면, 제1 내지 제m 컬럼들(C1~Cm)에 대응되는 메모리 셀들에 사용자 데이터(user data)가 저장되고, 제m+1 내지 제m+j 컬럼들(Cm+1~Cm+j)에 대응되는 메모리 셀들에 시스템 데이터(system data)가 저장될 수 있다.
도 8은 인덱스 데이터를 포함하는 시스템 데이터의 패턴을 설명하기 위한 도면이다.
도 8을 참조하면, 인덱스 데이터(ID)를 포함하는 시스템 데이터(system data)의 패턴은 인덱스 데이터(ID)가 저장되는 워드 라인에 따라 변경될 수 있다. 제1 내지 제4 워드 라인 어드레스들(ADD_WL1~ADD_WL4)을 예를 들어 설명하면, 제1 내지 제4 워드 라인들(WL1~WL4)에 각각 대응되는 제1 내지 제4 페이지들(1PG~4PG)에는 제1 내지 제4 데이터 세트들(1st data set ~ 4th data set)이 저장될 수 있다. 제1 페이지(1PG)에서 인덱스 데이터(ID)는 제2 컬럼(C2)에 해당되는 메모리 셀에 저장될 수 있고, 제2 페이지(2PG)에서 인덱스 데이터(ID)는 제2 컬럼(C2)과 다른 컬럼에 저장될 수 있다. 예를 들면, 제2 페이지(2PG)에서 인덱스 데이터(ID)는 제1 컬럼(C1)에 해당되는 메모리 셀에 저장될 수 있다. 제2 페이지(2PG)에서 인덱스 데이터(ID)가 제1 컬럼(C1)에 저장되면, 제3 페이지(3PG)에서는 제1 컬럼(C1)과 다른 제2 컬럼(C2)에 인덱스 데이터(ID)가 저장될 수 있다. 시스템 데이터 중에서 인덱스 데이터(ID)를 제외한 나머지 페이지 정보(PIF)는 시스템 데이터에 할당된 컬럼들 중에서 인덱스 데이터(ID)에 할당된 컬럼을 제외한 나머지 컬럼들의 메모리 셀들에 저장될 수 있다.
메모리 컨트롤러에서 생성된 데이터 세트를 메모리 장치에게 전송하는 방법을 구체적으로 설명하면 다음과 같다.
도 9a 및 도 9b는 메모리 컨트롤러에서 생성된 데이터 세트를 메모리 장치에게 전송하는 방법을 설명하기 위한 도면들이다.
도 9a에서는 제1 워드 라인(WL1)에 연결된 메모리 셀들에 제1 데이터 세트(1st data set)가 저장되는 방법이 도시되고, 도 9b에서는 제1 데이터 세트(1st data set)가 메모리 셀들에 저장된 후 제2 워드 라인(WL2)에 연결된 메모리 셀들에 제2 데이터 세트(2nd data set)가 저장되는 방법이 도시된다.
도 9a를 참조하면, 사용자 데이터 관리부(52)는 제1 사용자 데이터(1UDT)를 시스템 메모리(56)에 전송하고, 시스템 데이터 관리부(53)는 제1 시스템 데이터(1SDT)를 시스템 메모리(56)에 전송할 수 있다. 어드레스 관리부(54)가 제1 워드 라인 어드레스(1ADD_wl)를 시스템 메모리에 전송하면, 시스템 메모리(56)는 제1 사용자 데이터(1UDT) 및 제1 시스템 데이터(1SDT)를 포함하고 제1 워드 라인 어드레스(1ADD_wl)에 대응되는 제1 데이터 세트(1st data set)를 메모리 인터페이스(58)에게 전송할 수 있다. 메모리 인터페이스(58)는 제1 워드 라인 어드레스(1ADD_wl)에 대응되는 제1 데이터 세트(1st data set)를 메모리 장치(MD)에게 전송할 수 있다.
메모리 장치(MD)는 제1 데이터 세트가 입력되면, 제1 워드 라인(WL1)에 연결된 메모리 셀들 중에서 제1 서브 블록(1SB)에 포함된 메모리 셀들에 제1 시스템 데이터(1SDT)를 저장하고, 제2 서브 블록(2SB)에 포함된 메모리 셀들에 제1 사용자 데이터(1UDT)를 저장할 수 있다.
도 9b를 참조하면, 제1 데이터 세트가 메모리 장치(MD)에 저장되면, 사용자 데이터 관리부(52)는 제2 사용자 데이터(2UDT)를 시스템 메모리(56)에 전송하고, 시스템 데이터 관리부(53)는 제2 시스템 데이터(2SDT)를 시스템 메모리(56)에 전송할 수 있다. 어드레스 관리부(54)가 제2 워드 라인 어드레스(2ADD_wl)를 시스템 메모리에 전송하면, 시스템 메모리(56)는 제2 사용자 데이터(2UDT) 및 제2 시스템 데이터(2SDT)를 포함하고 제2 워드 라인 어드레스(2ADD_wl)에 대응되는 제2 데이터 세트(2nd data set)를 메모리 인터페이스(58)에게 전송할 수 있다. 메모리 인터페이스(58)는 제2 워드 라인 어드레스(2ADD_wl)에 대응되는 제2 데이터 세트(2nd data set)를 메모리 장치(MD)에게 전송할 수 있다.
메모리 장치(MD)는 제2 데이터 세트가 입력되면, 제2 워드 라인(WL2)에 연결된 메모리 셀들 중에서 제1 서브 블록(1SB)에 포함된 메모리 셀들에 제2 시스템 데이터(2SDT)를 저장하고, 제2 서브 블록(2SB)에 포함된 메모리 셀들에 제2 사용자 데이터(2UDT)를 저장할 수 있다.
상술한 방법에 따라 시스템 데이터는 메모리 장치의 선택된 메모리 블록에 저장될 수 있으며, 선택된 메모리 블록에 저장되는 시스템 데이터의 패턴은 다양하게 구현될 수 있다. 시스템 데이터의 다양한 패턴들을 설명하면 다음과 같다.
도 10은 본 발명의 제1 실시 예에 따른 시스템 데이터의 패턴을 설명하기 위한 도면이다.
도 10을 참조하면, 시스템 데이터는 지그재그 패턴을 가지는 인덱스 데이터(ID)를 포함할 수 있다. 인덱스 데이터(ID)는 제1 또는 제2 비트 라인(BL1 또는 BL2)에 연결된 메모리 셀들에 선택적으로 저장될 수 있다. 예를 들면, 홀수 번째 워드 라인들(WL1, WL3, WL4, … , WLn)에서는 제2 비트 라인(BL2)에 연결된 메모리 셀들에 인덱스 데이터(ID)가 저장될 수 있고, 짝수 번째 워드 라인들(WL2, WL4, WL6, … , WLn-1)에서는 제1 비트 라인(BL1)에 연결된 메모리 셀들에 인덱스 데이터(ID)가 저장될 수 있다. 즉, 동일한 컬럼(column)에 위치하고 로우(row) 방향으로 서로 인접한 메모리 셀들에 동일한 인덱스 데이터(ID)가 저장되지 않도록, 인덱스 데이터(ID)는 지그재그 패턴으로 메모리 셀들에 저장될 수 있다.
도 11은 본 발명의 제2 실시 예에 따른 시스템 데이터의 패턴을 설명하기 위한 도면이다.
도 11을 참조하면, 시스템 데이터는 지그재그 패턴을 가지는 인덱스 데이터(ID)를 포함할 수 있으며, 인덱스 데이터(ID)는 제3 또는 제4 비트 라인(BL3 또는 BL4)에 연결된 메모리 셀들에 선택적으로 저장될 수 있다. 예를 들면, 홀수 번째 워드 라인들(WL1, WL3, WL4, … , WLn)에서는 제4 비트 라인(BL4)에 연결된 메모리 셀들에 인덱스 데이터(ID)가 저장될 수 있고, 짝수 번째 워드 라인들(WL2, WL4, WL6, … , WLn-1)에서는 제3 비트 라인(BL3)에 연결된 메모리 셀들에 인덱스 데이터(ID)가 저장될 수 있다. 즉, 도 11을 참조하여 설명되는 제2 실시 예에서는, 인덱스 데이터(ID)가 제1 서브 블록(1SB)의 중간 지점에 대응되는 컬럼들의 메모리 셀들에 저장될 수 있다.
도 12는 본 발명의 제3 실시 예에 따른 시스템 데이터의 패턴을 설명하기 위한 도면이다.
도 12를 참조하면, 시스템 데이터는 제1 서브 블록(1SB) 내에서 워드 라인의 어드레스와 컬럼에 비례하는 패턴을 가지는 인덱스 데이터(ID)를 포함할 수 있다. 제1 서브 블록(1SB)에 포함된 각각의 페이지가 6 비트로 이루어진 경우를 예로 들면, 제1 서브 블록(1SB)에는 제1 내지 제6 비트 라인들(BL1~BL6)이 연결될 수 있다. 비트 라인들의 순번이 증가할 때마다 컬럼도 증가한다. 즉, 제1 비트 라인(BL1)은 제1 컬럼에 대응될 수 있고, 제2 비트 라인(BL2)은 제2 컬럼에 대응될 수 있으며, 이러한 방식으로 제6 비트 라인(BL6)은 제6 컬럼에 대응될 수 있다.
제1 내지 제6 워드 라인들(WL1~WL6) 각각에 대응되는 인덱스 데이터(ID)는 제1 내지 제6 워드 라인들(WL1~WL6)과 제1 내지 제6 비트 라인들(BL1~BL6)이 각각 중첩되는 메모리 셀들에 저장될 수 있고, 제7 워드 라인(WL7)부터 다시 제1 내지 제6 비트 라인들(BL1~BL6)에 중첩되는 메모리 셀들에 인덱스 데이터(ID)가 저장될 수 있다. 예를 들면, 인덱스 데이터(ID)는 제1 워드 라인(WL1) 및 제1 비트 라인(BL1)에 연결된 메모리 셀, 제2 워드 라인(WL2) 및 제2 비트 라인(BL2)에 연결된 메모리 셀, 제3 워드 라인(WL3) 및 제3 비트 라인(BL3)에 연결된 메모리 셀, 제4 워드 라인(WL4) 및 제4 비트 라인(BL4)에 연결된 메모리 셀, 제5 워드 라인(WL5) 및 제5 비트 라인(BL5)에 연결된 메모리 셀, 제6 워드 라인(WL6) 및 제6 비트 라인(BL6)에 연결된 메모리 셀에 각각 저장될 수 있다. 제6 비트 라인(BL6)이 제1 서브 블록(1SB)의 최대 컬럼에 대응되는 비트 라인이므로, 제6 워드 라인(WL6) 다음으로 제7 워드 라인(WL7)부터는 제1 비트 라인(BL1)에 연결된 메모리 셀에 인덱스 데이터(ID)가 저장될 수 있다.
도 13은 본 발명의 제4 실시 예에 따른 시스템 데이터의 패턴을 설명하기 위한 도면이다.
도 13을 참조하면, 시스템 데이터는 제1 서브 블록(1SB) 내에서 워드 라인의 어드레스와 컬럼에 비례하는 패턴과 워드 라인의 어드레스와 컬럼에 반비례하는 패턴이 연장되는 인덱스 데이터(ID)를 포함할 수 있다.
제1 서브 블록(1SB)에 포함된 각각의 페이지가 6 비트로 이루어진 경우를 예로 들면, 제1 서브 블록(1SB)에는 제1 내지 제6 비트 라인들(BL1~BL6)이 연결될 수 있다. 제3 실시 예에서는, 인덱스 데이터(ID)는 최소 컬럼부터 최대 컬럼까지 증가하고, 최대 컬럼부터 최소 컬럼까지 다시 감소하는 패턴으로 메모리 셀들에 저장될 수 있다. 즉, 워드 라인들의 어드레스에 비례하여, 인덱스 데이터(ID)가 저장되는 메모리 셀들의 패턴은 컬럼이 순차적으로 증가하거나 순차적으로 감소하는 패턴을 가질 수 있다.
도 14는 본 발명의 제5 실시 예에 따른 시스템 데이터의 패턴을 설명하기 위한 도면이다.
도 14를 참조하면, 제i 메모리 블록(BLKi)은 컬럼 방향으로 구분된 복수의 그룹들(GR1~GR3)을 포함할 수 있다. 예를 들면, 제1 워드 라인(WL1)으로 구분되는 제1 페이지(1PG)는 제1 내지 제3 그룹들(GR1~GR3)로 구분될 수 있고, 제2 워드 라인(WL2)으로 구분되는 제2 페이지(2PG)도 제1 내지 제3 그룹들(GR1~GR3)로 구분될 수 있으며, 이러한 방식으로 제1 내지 제8 페이지들(1PG~8PG) 각각은 제1 내지 제3 그룹들(GR1~GR3)로 구분될 수 있다. 서로 다른 그룹들에 포함된 서로 다른 페이지들 각각은 제1 및 제2 서브 블록들(1SB, 2SB)로 구분될 수 있으며, 각 그룹에 포함된 제1 서브 블록(1SB)에는 해당 그룹의 사용자 데이터에 대한 시스템 데이터가 저장될 수 있다. 시스템 데이터는 인덱스 데이터(ID) 및 페이지 정보를 포함할 수 있으며, 인덱스 데이터(ID)는 서로 인접한 페이지에서 동일한 컬럼의 메모리 셀들에 저장되지 않는 패턴을 가질 수 있다.
도 15는 본 발명의 실시 예에 따른 리드 동작을 설명하기 위한 도면이다.
도 15를 참조하면, 호스트가 메모리 시스템에게 논리 어드레스와 함께 리드 요청을 전송하면(S151), 메모리 시스템은 논리 어드레스에 대응되는 물리 어드레스에 따라 선택된 메모리 블록의 리드 동작을 수행할 수 있다(S152). 예를 들면, 메모리 시스템에 포함된 메모리 컨트롤러는 리드 요청에 따라 리드 커맨드를 생성하고, 논리 어드레스에 대응되는 물리 어드레스를 찾을 수 있다. 이어서, 메모리 컨트롤러는 리드 커맨드 및 물리 어드레스를 선택된 메모리 장치에게 전송할 수 있다. 선택된 메모리 장치는 물리 어드레스에 따라 선택된 메모리 블록의 리드 동작을 수행하여 리드된 데이터 세트를 메모리 컨트롤러에게 출력할 수 있다.
메모리 컨트롤러는 수신된 데이터 세트에 포함된 인덱스 데이터(ID)를 체크하여, 데이터 세트에 포함된 사용자 데이터가 원본 데이터(original data)인지 또는 반전된 데이터(inversed data)인지를 판단할 수 있다(S153). 프로그램 동작 시 인덱스 데이터(ID)가 저장된 컬럼이 워드 라인들에 따라 변경되었으므로, 리드 동작 시 메모리 컨트롤러는 수신된 데이터 세트에 대응되는 워드 라인 어드레스에 따라 시스템 데이터에서 인덱스 데이터(ID)를 찾을 수 있다.
인덱스 데이터(ID)가 제1 인덱스 데이터이면, 메모리 컨트롤러는 메모리 장치로부터 수신된 사용자 데이터를 원본 데이터(original data)로 판단할 수 있다. 이 경우, 메모리 컨트롤러는 메모리 장치로부터 수신된 사용자 데이터를 호스트로 출력할 수 있다(S155).
S153 단계에서, 인덱스 데이터(ID)가 제2 인덱스 데이터이면, 메모리 컨트롤러는 메모리 장치로부터 수신된 사용자 데이터를 반전된 데이터(inversed data)로 판단할 수 있다. 이 경우, 메모리 컨트롤러는 메모리 장치로부터 수신된 사용자 데이터를 반전시키고(S154), 반전된 데이터를 사용자 데이터로써 호스트에게 출력할 수 있다(S155).
도 16은 본 발명의 메모리 장치가 적용된 메모리 카드 시스템을 설명하기 위한 도면이다.
도 16을 참조하면, 메모리 카드 시스템(2000)은 메모리 컨트롤러(2100), 메모리 장치(2200), 및 커넥터(2300)를 포함한다.
메모리 컨트롤러(2100)는 메모리 장치(2200)와 연결된다. 메모리 컨트롤러(2100)는 메모리 장치(2200)를 접속(access)하도록 구성된다. 예를 들어, 메모리 컨트롤러(2100)는 메모리 장치(2200)의 프로그램, 리드 또는 소거 동작을 제어하거나, 배경(background) 동작을 제어하도록 구성될 수 있다. 메모리 컨트롤러(2100)는 메모리 장치(2200) 및 호스트(Host) 사이에 인터페이스를 제공하도록 구성된다. 메모리 컨트롤러(2100)는 메모리 장치(2200)를 제어하기 위한 펌웨어(firmware)를 구동하도록 구성된다. 메모리 컨트롤러(2100)는 도 5에 도시된 메모리 컨트롤러(1200)에 도시된 장치들(51~58)을 포함할 수 있고, 메모리 장치(2200)는 도 2에 도시된 메모리 장치(MD)와 동일하게 구성될 수 있다.
메모리 컨트롤러(2100)는 커넥터(2300)를 통해 외부 장치와 통신할 수 있다. 메모리 컨트롤러(2100)는 특정한 통신 규격에 따라 외부 장치(예를 들어, 호스트)와 통신할 수 있다. 예시적으로, 메모리 컨트롤러(2100)는 USB (Universal Serial Bus), MMC (multimedia card), eMMC(embedded MMC), PCI (peripheral component interconnection), PCI-E (PCI-express), ATA (Advanced Technology Attachment), Serial-ATA, Parallel-ATA, SCSI (small computer system interface), ESDI (enhanced small disk interface), IDE (Integrated Drive Electronics), 파이어와이어(Firewire), UFS(Universal Flash Storage), WIFI, Bluetooth, NVMe 등과 같은 다양한 통신 규격들 중 적어도 하나를 통해 외부 장치와 통신하도록 구성된다. 예시적으로, 커넥터(2300)는 상술된 다양한 통신 규격들 중 적어도 하나에 의해 정의될 수 있다.
예시적으로, 메모리 장치(2200)는 EEPROM (Electrically Erasable and Programmable ROM), 낸드 플래시 메모리, 노어 플래시 메모리, PRAM (Phase-change RAM), ReRAM (Resistive RAM), FRAM (Ferroelectric RAM), STT-MRAM(Spin Transfer Torque - Magnetic RAM) 등과 같은 다양한 비휘발성 메모리 소자들로 구성될 수 있다.
메모리 컨트롤러(2100) 및 메모리 장치(2200)는 하나의 반도체 장치로 집적되어, 메모리 카드를 구성할 수 있다. 예를 들면, 메모리 컨트롤러(2100) 및 메모리 장치(2200)는 하나의 반도체 장치로 집적되어 PC 카드(PCMCIA, personal computer memory card international association), 컴팩트 플래시 카드(CF), 스마트 미디어 카드(SM, SMC), 메모리 스틱, 멀티미디어 카드(MMC, RS-MMC, MMCmicro, eMMC), SD 카드(SD, miniSD, microSD, SDHC), 범용 플래시 기억장치(UFS) 등과 같은 메모리 카드를 구성할 수 있다.
도 17은 본 발명의 메모리 장치가 적용된 SSD(Solid State Drive) 시스템을 설명하기 위한 도면이다.
도 17을 참조하면, SSD 시스템(3000)은 호스트(3100) 및 SSD(3200)를 포함한다. SSD(3200)는 신호 커넥터(3001)를 통해 호스트(3100)와 신호를 주고 받고, 전원 커넥터(3002)를 통해 전원 전압을 입력받는다. SSD(3200)는 SSD 컨트롤러(3210), 복수의 플래시 메모리들(3221~322n), 보조 전원 장치(3230), 및 버퍼 메모리(3240)를 포함한다.
도 17에 도시된 플래시 메모리들(3221~322n)은 도 2에 도시된 메모리 장치(MD)와 동일하게 구성될 수 있다. 도 17에 도시된 SSD 컨트롤러(3210)는 도 5에 도시된 메모리 컨트롤러(1200)에 포함된 장치들(51~58)을 포함할 수 있다.
SSD 컨트롤러(3210)는 호스트(3100)로부터 수신된 신호에 응답하여 복수의 플래시 메모리들(3221~322n)을 제어할 수 있다. 예시적으로, 신호는 호스트(3100) 및 SSD(3200)의 인터페이스에 기반된 신호들일 수 있다. 예를 들어, 신호는 USB (Universal Serial Bus), MMC (multimedia card), eMMC(embedded MMC), PCI (peripheral component interconnection), PCI-E (PCI-express), ATA (Advanced Technology Attachment), Serial-ATA, Parallel-ATA, SCSI (small computer system interface), ESDI (enhanced small disk interface), IDE (Integrated Drive Electronics), 파이어와이어(Firewire), UFS(Universal Flash Storage), WIFI, Bluetooth, NVMe 등과 같은 인터페이스들 중 적어도 하나에 의해 정의된 신호일 수 있다.
보조 전원 장치(3230)는 전원 커넥터(3002)를 통해 호스트(3100)와 연결된다. 보조 전원 장치(3230)는 호스트(3100)로부터 전원을 입력 받고, 충전할 수 있다. 보조 전원 장치(3230)는 호스트(3100)로부터의 전원 공급이 원활하지 않을 경우, SSD(3200)의 전원을 제공할 수 있다. 예시적으로, 보조 전원 장치(3230)는 SSD(3200) 내에 위치할 수도 있고, SSD(3200) 외부에 위치할 수도 있다. 예를 들면, 보조 전원 장치(3230)는 메인 보드에 위치하며, SSD(3200)에 보조 전원을 제공할 수도 있다.
버퍼 메모리(3240)는 SSD(3200)의 버퍼 메모리로 동작할 수 있다. 예를 들어, 버퍼 메모리(3240)는 도 5에 도시된 시스템 메모리(56)와 별개로, SSD 시스템(3000)의 동작에 필요한 정보를 임시로 저장할 수 있다. 버퍼 메모리(3240)는 DRAM, SDRAM, DDR SDRAM, LPDDR SDRAM 등과 같은 휘발성 메모리 또는 FRAM, ReRAM, STT-MRAM, PRAM 등과 같은 비휘발성 메모리들을 포함할 수 있다.
1000: 메모리 시스템
1100: 저장 장치
1200: 메모리 컨트롤러 1500: 호스트
51: 호스트 인터페이스 52: 사용자 데이터 관리부
53: 시스템 데이터 관리부 54: 어드레스 관리부
55: 중앙 처리 장치 56: 시스템 메모리
57: 사이클 카운터 58: 메모리 인터페이스
1200: 메모리 컨트롤러 1500: 호스트
51: 호스트 인터페이스 52: 사용자 데이터 관리부
53: 시스템 데이터 관리부 54: 어드레스 관리부
55: 중앙 처리 장치 56: 시스템 메모리
57: 사이클 카운터 58: 메모리 인터페이스
Claims (20)
- 복수의 페이지들로 구분되는 메모리 셀들을 포함하고, 상기 복수의 페이지들에 각각 연결되며 서로 다른 로우(row)로 구분되는 워드 라인들 및 상기 복수의 페이지들에 공통으로 연결되며 서로 다른 컬럼(column)으로 구분되는 비트 라인들이 연결된 메모리 블록;
상기 복수의 페이지들에 각각 저장될 사용자 데이터의 정보를 포함하는 시스템 데이터를 생성하도록 구성된 시스템 데이터 관리부; 및
상기 복수의 페이지들에 대응되는 어드레스들을 생성하도록 구성된 어드레스 관리부를 포함하고,
상기 시스템 데이터 관리부는,
상기 어드레스들에 따라 상기 시스템 데이터가 저장되는 상기 컬럼(column)을 변경하는 메모리 시스템.
- 제1항에 있어서, 상기 메모리 블록은,
상기 시스템 데이터가 저장되는 제1 영역; 및
상기 사용자 데이터가 저장되는 제2 영역을 포함하는 메모리 시스템.
- 제1항에 있어서,
상기 복수의 페이지들 각각은 상기 제1 및 제2 영역들에 각각 포함된 상기 메모리 셀들을 포함하는 메모리 시스템.
- 제1항에 있어서, 상기 시스템 데이터 관리부는,
상기 사용자 데이터가 원본으로 유지되면 상기 사용자 데이터의 정보로써 상기 시스템 데이터에 포함되는 제1 인덱스 데이터를 생성하고,
상기 사용자 데이터가 반전된 데이터로 변경되면 상기 사용자 데이터의 정보로써 상기 시스템 데이터에 포함되는 제2 인덱스 데이터를 생성하도록 구성되는 메모리 시스템.
- 제4항에 있어서,
상기 제1 또는 제2 인덱스 데이터가 저장되는 메모리 셀은,
상기 제1 인덱스 데이터에 따라 소거 상태로 유지되거나,
상기 제2 인덱스 데이터에 따라 프로그램되는 메모리 시스템.
- 제4항에 있어서, 상기 시스템 데이터 관리부는,
상기 어드레스들이 연속되는 페이지들에서 상기 시스템 데이터가 서로 다른 비트 라인들에 연결된 메모리 셀들에 저장되도록 상기 컬럼을 변경하는 메모리 시스템.
- 제1항에 있어서,
상기 메모리 블록에서 수행되는 프로그램 및 소거 동작들에 대한 사이클 횟수를 카운트하도록 구성된 사이클 카운터;
상기 메모리 블록의 상기 사이클 횟수에 따라 상기 사용자 데이터를 원본으로 유지하거나 반전 데이터로 변경하도록 구성되는 사용자 데이터 관리부;
상기 사용자 데이터 및 상기 시스템 데이터를 임시로 저장하고, 상기 사용자 데이터 및 상기 시스템 데이터를 포함하는 데이터 세트를 출력하도록 구성되는 시스템 메모리; 및
상기 메모리 블록을 포함하는 메모리 장치에게 상기 데이터 세트를 출력하도록 구성된 메모리 인터페이스를 더 포함하는 메모리 시스템.
- 제7항에 있어서, 상기 사용자 데이터 관리부는,
상기 사이클 횟수가 기준 값에 대응되는지를 판단하고,
상기 사이클 횟수가 상기 기준 값에 대응되면 상기 사용자 데이터를 상기 반전 데이터로 변경하도록 구성되는 메모리 시스템.
- 제8항에 있어서,
상기 기준 값은 짝수로 설정되는 메모리 시스템.
- 제1 비트 라인과 제1 워드 라인에 연결된 제1 메모리 셀, 상기 제1 비트 라인에 인접한 제2 비트 라인과 상기 제1 워드 라인에 연결된 제2 메모리 셀, 상기 제1 워드 라인에 인접한 제2 워드 라인과 상기 제1 비트 라인에 연결된 제3 메모리 셀 및 상기 제2 비트 라인과 상기 제2 워드 라인에 연결된 제4 메모리 셀을 포함하는 메모리 장치; 및
프로그램 동작 시, 상기 메모리 장치에게 인덱스 데이터를 포함하는 데이터 세트들을 전송하도록 구성된 메모리 컨트롤러를 포함하고,
상기 메모리 컨트롤러는,
상기 인덱스 데이터가 상기 제1 및 제4 메모리 셀들에 저장되도록 상기 데이터 세트들을 생성하는 메모리 시스템.
- 제10항에 있어서, 상기 메모리 컨트롤러는,
상기 제1 및 제2 워드 라인들의 어드레스들에 따라 상기 데이터 세트들 각각에 포함되는 상기 인덱스 데이터의 컬럼들을 변경하도록 구성되는 시스템 데이터 관리부를 포함하는 메모리 시스템.
- 제11항에 있어서, 상기 시스템 데이터 관리부는,
상기 제1 워드 라인의 어드레스에 따라 상기 인덱스 데이터에 제1 컬럼을 할당하고,
상기 제2 워드 라인의 어드레스에 따라 상기 인덱스 데이터에 제2 컬럼을 할당하도록 구성되는 메모리 시스템.
- 제11항에 있어서, 상기 시스템 데이터 관리부는,
상기 제1 및 제2 워드 라인들에 연결된 제3 메모리 셀들에 저장될 사용자 데이터의 원본 데이터가 상기 메모리 장치에 전송될 때 상기 인덱스 데이터를 제1 인덱스 데이터로써 생성하고,
상기 제1 및 제2 워드 라인들에 연결된 상기 제3 메모리 셀들에 저장될 상기 사용자 데이터의 반전 데이터가 상기 메모리 장치에 전송될 때 상기 인덱스 데이터를 제2 인덱스 데이터로써 생성하도록 구성되는 메모리 시스템.
- 제13항에 있어서,
상기 제1 및 제4 메모리 셀들은,
상기 제1 인덱스 데이터에 따라 소거 상태로 유지되거나,
상기 제2 인덱스 데이터에 따라 프로그램되는 메모리 시스템.
- 제13항에 있어서, 상기 시스템 데이터 관리부는,
제1 및 제2 워드 라인들에 연결된 상기 제3 메모리 셀들에 저장될 상기 사용자 데이터에 대한 페이지 정보를 생성하고, 상기 페이지 정보가 상기 제2 및 제3 메모리 셀들에 저장되도록 상기 데이터 세트를 생성하는 메모리 시스템.
- 인덱스 데이터가 저장되는 제1 영역 및 사용자 데이터가 저장되는 제2 영역을 포함하는 메모리 블록;
상기 메모리 블록에 상기 인덱스 데이터 및 상기 사용자 데이터를 프로그램하도록 구성된 주변 회로; 및
상기 사용자 데이터의 상태에 따라 상기 인덱스 데이터를 생성하고, 상기 사용자 데이터 및 상기 인덱스 데이터를 상기 주변 회로에게 전송하도록 구성된 메모리 컨트롤러를 포함하고,
상기 인덱스 데이터는 상기 제1 영역에 포함된 페이지들마다 동일한 비트 수로 저장되고,
상기 인덱스 데이터는 상기 제1 영역에서 서로 다른 컬럼들에 분산되어 저장되는 메모리 시스템.
- 제16항에 있어서,
상기 제1 영역에 저장되는 상기 인덱스 데이터는 서로 동일한 데이터로 구성되는 메모리 시스템.
- 제16항에 있어서,
상기 서로 다른 컬럼들에 분산되어 저장되는 상기 인덱스 데이터는,
상기 제1 영역에 연결된 서로 다른 비트 라인들과 서로 다른 워드 라인들이 서로 중첩되는 메모리 셀들에 저장되는 메모리 시스템.
- 제16항에 있어서, 상기 메모리 컨트롤러는,
상기 인덱스 데이터가 저장될 페이지들의 어드레스들에 따라 상기 컬럼들을 분산시키는 메모리 시스템.
- 제19항에 있어서, 상기 메모리 컨트롤러는, 상기 사용자 데이터를 반전하고, 반전된 상기 사용자 데이터를 상기 주변 회로에게 전송할 때 상기 인덱스 데이터를 생성하도록 구성되는 메모리 시스템.
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020200183762A KR20220092215A (ko) | 2020-12-24 | 2020-12-24 | 메모리 컨트롤러를 포함하는 메모리 시스템 |
US17/360,789 US11688465B2 (en) | 2020-12-24 | 2021-06-28 | Memory system having memory controller |
CN202110906149.6A CN114675778A (zh) | 2020-12-24 | 2021-08-09 | 具有存储器控制器的存储器*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020200183762A KR20220092215A (ko) | 2020-12-24 | 2020-12-24 | 메모리 컨트롤러를 포함하는 메모리 시스템 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20220092215A true KR20220092215A (ko) | 2022-07-01 |
Family
ID=82069735
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020200183762A KR20220092215A (ko) | 2020-12-24 | 2020-12-24 | 메모리 컨트롤러를 포함하는 메모리 시스템 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11688465B2 (ko) |
KR (1) | KR20220092215A (ko) |
CN (1) | CN114675778A (ko) |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4491000B2 (ja) | 2007-08-17 | 2010-06-30 | 株式会社東芝 | メモリシステム |
KR20140123135A (ko) | 2013-04-10 | 2014-10-22 | 에스케이하이닉스 주식회사 | 플래그 셀들을 포함하는 반도체 메모리 장치 |
KR20210011198A (ko) * | 2019-07-22 | 2021-02-01 | 에스케이하이닉스 주식회사 | 컨트롤러, 메모리 시스템 및 그것의 동작 방법 |
-
2020
- 2020-12-24 KR KR1020200183762A patent/KR20220092215A/ko unknown
-
2021
- 2021-06-28 US US17/360,789 patent/US11688465B2/en active Active
- 2021-08-09 CN CN202110906149.6A patent/CN114675778A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US11688465B2 (en) | 2023-06-27 |
CN114675778A (zh) | 2022-06-28 |
US20220208272A1 (en) | 2022-06-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110275673B (zh) | 存储装置及其操作方法 | |
CN111696608A (zh) | 存储器装置及其操作方法 | |
CN114442915B (zh) | 存储器***以及操作其中所包括的存储器控制器的方法 | |
KR102211868B1 (ko) | 스토리지 장치 및 스토리지 장치의 동작 방법 | |
KR20210027783A (ko) | 저장 장치 및 그 동작 방법 | |
KR20200145199A (ko) | 저장 장치 및 그 동작 방법 | |
KR20220082473A (ko) | 메모리 장치 및 그 동작 방법 | |
KR20200034189A (ko) | 메모리 시스템, 그것의 동작 방법 및 비휘발성 메모리 장치 | |
KR20220043368A (ko) | 메모리 장치 및 이의 동작 방법 | |
CN111445939B (zh) | 存储装置及其操作方法 | |
KR20220018351A (ko) | 메모리 컨트롤러 및 이의 동작 방법 | |
CN114078530A (zh) | 存储器装置及其操作方法 | |
US9570181B2 (en) | Memory system | |
KR20210108208A (ko) | 저장 장치 및 그 동작 방법 | |
US11646089B2 (en) | Memory device for performing verify operation and operating method thereof | |
KR20230120930A (ko) | 메모리 장치 및 그 동작 방법 | |
CN114237975A (zh) | 存储器***、存储器装置和操作存储器装置的方法 | |
KR20220092215A (ko) | 메모리 컨트롤러를 포함하는 메모리 시스템 | |
KR20220064096A (ko) | 메모리 시스템 | |
KR20210138996A (ko) | 메모리 장치, 이를 포함하는 스토리지 장치 및 스토리지 장치의 동작 방법 | |
KR20200117555A (ko) | 메모리 시스템, 메모리 장치 및 메모리 컨트롤러 | |
US11550497B2 (en) | Memory system and operating method of the memory system | |
US11514976B2 (en) | Memory device having planes | |
US20240020015A1 (en) | Controller and method of operating the same | |
KR20240050568A (ko) | 메모리 장치 및 그것의 동작 방법 |