KR20190062161A - 기회적 기록들을 갖는 단일 포트 메모리 - Google Patents

기회적 기록들을 갖는 단일 포트 메모리 Download PDF

Info

Publication number
KR20190062161A
KR20190062161A KR1020180115225A KR20180115225A KR20190062161A KR 20190062161 A KR20190062161 A KR 20190062161A KR 1020180115225 A KR1020180115225 A KR 1020180115225A KR 20180115225 A KR20180115225 A KR 20180115225A KR 20190062161 A KR20190062161 A KR 20190062161A
Authority
KR
South Korea
Prior art keywords
memory
port memory
data
single port
port
Prior art date
Application number
KR1020180115225A
Other languages
English (en)
Other versions
KR102215495B1 (ko
Inventor
란 자미르
데이비드 아브라함
에란 샤론
이단 알로드
Original Assignee
웨스턴 디지털 테크놀로지스, 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 웨스턴 디지털 테크놀로지스, 인코포레이티드 filed Critical 웨스턴 디지털 테크놀로지스, 인코포레이티드
Publication of KR20190062161A publication Critical patent/KR20190062161A/ko
Application granted granted Critical
Publication of KR102215495B1 publication Critical patent/KR102215495B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/108Parity data distribution in semiconductor storages, e.g. in SSD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/41Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming static cells with positive feedback, i.e. cells not needing refreshing or charge regeneration, e.g. bistable multivibrator or Schmitt trigger
    • G11C11/413Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing, timing or power reduction
    • G11C11/417Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing, timing or power reduction for memory cells of the field-effect type
    • G11C11/419Read-write [R-W] circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5671Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge trapping in an insulator
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/26Sensing or reading circuits; Data output circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • H03M13/1128Judging correct decoding and iterative stopping criteria other than syndrome check and upper limit for decoding iterations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • G11C16/0483Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C2029/0411Online error correction
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2211/00Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C2211/56Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
    • G11C2211/562Multilevel memory programming aspects
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2211/00Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C2211/56Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
    • G11C2211/563Multilevel memory reading aspects
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2216/00Indexing scheme relating to G11C16/00 and subgroups, for features not directly covered by these groups
    • G11C2216/12Reading and writing aspects of erasable programmable read-only memories
    • G11C2216/22Nonvolatile memory in which reading can be carried out from one memory bank or array whilst a word or sector in another bank or array is being erased or programmed simultaneously
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1015Read-write modes for single port memories, i.e. having either a random port or a serial port
    • G11C7/1042Read-write modes for single port memories, i.e. having either a random port or a serial port using interleaving techniques, i.e. read-write of one part of the memory while preparing another part
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Human Computer Interaction (AREA)
  • Computer Hardware Design (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Probability & Statistics with Applications (AREA)
  • Read Only Memory (AREA)
  • Semiconductor Memories (AREA)
  • Non-Volatile Memory (AREA)

Abstract

장치는 제 1 단일 포트 메모리, 제 2 단일 포트 메모리, 및 제 1 단일 포트 메모리와 통신하고 제 2 단일 포트 메모리와 통신하는 하나 이상의 제어 회로를 포함한다. 하나 이상의 제어 회로는 제 1 또는 제 2 단일 포트 메모리 내의 저장된 데이터의 물리적 위치로부터 클럭 사이클에서 저장된 데이터의 판독을 개시하고, 저장된 데이터의 물리적 위치를 포함하지 않는 제 1 단일 포트 메모리 또는 제 2 단일 포트 메모리 중 어느 것에 클럭 사이클에서 새로운 데이터의 기록을 개시하도록 구성된다.

Description

기회적 기록을 갖는 단일 포트 메모리{SINGLE-PORT MEMORY WITH OPPORTUNISTIC WRITES}
반도체 메모리는 셀룰러 전화기, 디지털 카메라, 개인 휴대 정보 단말기, 의료용 전자기기, 모바일 컴퓨팅 디바이스, 및 비-모바일 컴퓨팅 디바이스와 같은 다양한 전자 디바이스들에서 널리 사용된다. 반도체 메모리는 비휘발성 메모리 또는 휘발성 메모리를 포함할 수 있다. 비휘발성 메모리는, 비휘발성 메모리가 전원(예컨대, 배터리)에 접속되어 있지 않을 때에도 정보가 저장 및 보유되게 한다. 비휘발성 메모리의 예는 플래시 메모리(예컨대, NAND-타입 및 NOR-타입 플래시 메모리) 및 EEPROM(Electrically Erasable Programmable Read-Only Memory)을 포함한다.
전하 트래핑 재료가 데이터 상태를 나타내는 전하를 저장하기 위하여 비휘발성 메모리 디바이스들에서 사용될 수 있다. 전하 트래핑 재료는 3차원(3D) 적층형 메모리 구조물로 수직으로 배열될 수 있다. 3D 메모리 구조물의 일례는 교호하는 전도성 및 유전체 층들의 적층물을 포함하는 BiCS(Bit Cost Scalable) 아키텍처이다. 메모리 홀(hole)이 적층물에 형성되고, 이어서 수직 NAND 스트링(string)이 메모리 셀들의 수직 컬럼(column)을 생성하기 위하여 전하 트래핑 층을 포함하는 재료들로 메모리 홀을 충전함으로써 형성된다. 각각의 메모리 셀은 데이터의 하나 이상의 비트를 저장할 수 있다.
메모리 시스템이 전자 디바이스에 배치되는 경우, 비휘발성 메모리 시스템은 데이터를 프로그래밍할 수 있고/있거나, 데이터를 판독할 수 있고/있거나 데이터를 소거할 수 있다. 데이터가 프로그래밍될 때, 또는 데이터가 비휘발성 메모리에 저장되는 동안 프로그래밍한 후에, 에러들이 데이터에서 발생할 수 있다. 그러한 에러들이 정정되게 하기 위하여, 일부 리던던트 데이터(redundant data)가 계산될 수 있고 인코딩 스킴(scheme)에 따라 사용자 데이터와 함께 저장될 수 있다. 비휘발성 메모리로부터 판독된 데이터를 저장 및 디코딩하기 전의 데이터 인코딩은 비휘발성 메모리 시스템 내의 ECC(Error Correction Code) 인코더/디코더에 의해 수행될 수 있다.
유사한 참조번호의 요소는 상이한 도면 내의 공통 컴포넌트를 지칭한다.
도 1은 3D 적층형 비휘발성 저장 디바이스의 사시도이다.
도 2는 도 1의 저장 디바이스의 기능 블록도이다.
도 3은 제어기의 일 실시예를 도시하는 블록도이다.
도 4는 3차원 모놀리식 메모리 구조물의 일 실시예의 일부의 사시도이다.
도 4a는 2개의 평면들을 갖는 메모리 구조물의 블록도이다.
도 4b는 메모리 셀들의 블록의 일부의 평면도를 도시한다.
도 4c는 메모리 셀들의 블록의 일부의 단면도를 도시한다.
도 4d는 선택 게이트 층들 및 워드 라인 층들의 도면을 도시한다.
도 4e는 메모리 셀들의 수직 컬럼의 단면도이다.
도 4f는 복수의 NAND 스트링들의 개략도이다.
도 5는 비휘발성 메모리 시스템의 일례를 도시한다.
도 6a는 ECC 디코더 및 이중 포트 RAM 메모리를 포함하는 제어 회로들의 일례를 도시한다.
도 6b는 ECC 디코더 및 2개의 단일 포트 RAM 메모리들을 포함하는 제어 회로들의 일례를 도시한다.
도 6c는 ECC 디코더 및 2개의 단일 포트 RAM 메모리들을 포함하는 제어 회로들의 다른 예를 도시한다.
도 7은 이중 포트 메모리 및 단일 포트 메모리들의 비교를 도시한다.
도 8은 이중 포트 메모리와 단일 포트 메모리 사이의 몇몇 차이를 도시한다.
도 9는 이중 포트 메모리의 동작의 일례를 도시한다.
도 10은 순차적 액세스들을 갖는 2개의 단일 포트 메모리들의 동작의 일례를 도시한다.
도 11은 비-순차적 액세스들을 갖는 2개의 단일 포트 메모리들의 동작의 일례를 도시한다.
도 12는 비-순차적 액세스들 및 기회적 기록(opportunistic write)들을 갖는 2개의 단일 포트 메모리들의 동작의 일례를 도시한다.
도 13a는 제어 회로들을 갖는 단일 포트 메모리들의 일례를 도시한다.
도 13b는 제어 회로들을 갖는 단일 포트 메모리들의 다른 예를 도시한다.
도 14는 논리-물리적 맵 또는 테이블을 도시한다.
도 15는 기회적 기록들을 사용한 2개의 단일 포트 메모리들 사이의 바이어스를 도시한다.
도 16은 판독으로 비지(busy) 상태가 아닌 단일 포트 메모리가 어느 것이든 그에 프레시(fresh) 데이터를 기록하는 단계를 포함하는 방법을 도시한다.
도 17은 오프라인 및 온라인 단계들의 일례를 도시한다.
일부 응용예들에서, RAM(Random Access Memory) 내의 데이터는, 예컨대 주어진 클록 사이클로 판독 및 기록 양측 모두를 수행함으로써, 빈번하게 액세스될 수 있다. 그러한 병렬 판독 및 기록 동작들은 이중 포트 메모리에 의해 다루어질 수 있다. 그러나, 이중 포트 메모리는 몇몇 단점들을 갖는다. 단일 포트 메모리들이 일부 응용예들에서 병렬 판독 및 기록 액세스를 허용하도록 사용될 수 있는 한편, 단일 포트 메모리들의 사용은 판독 및 기록이 동일한 단일 포트 메모리로 지향될 때마다 지연들을 야기할 수 있다. 이는 액세스, 예컨대 LDPC(Low Density Parity Check) 디코더와 같은 반복 ECC 디코더에 의한 RAM으로의 액세스가 비순차적이 되는 유의한 요인일 수 있다.
2개의 단일 포트 메모리들은 판독될 데이터를 저장하는 단일 포트 메모리가 어느 것이든 그에 판독을 지향시킴으로써 병렬로, 그리고 판독을 수행하는 데 비지 상태가 아닌 단일 포트 메모리가 어느 것이든 그에 (즉, 판독될 데이터를 저장하지 않는 단일 포트 메모리에) 기회적 기록을 지향시킴으로써 병렬로 (예컨대, 동일한 클록 사이클에) 액세스될 수 있다. 물리적 데이터 위치들은 논리-물리적 맵 또는 테이블을 사용하여 추적될 수 있다. 따라서, 논리적 어드레스들의 단일 포트 메모리들에 대한 할당은 온더플라이(on the fly)로 수행되고 주어진 논리적 어드레스를 갖는 데이터가 어느 하나의 단일 포트 메모리에 저장될 수 있다.
하나의 단일 포트 메모리는 더 많은 기록들을 수신하는 경향이 있을 수 있고, 따라서 바이어스를 생성하고, 이는 추가의 메모리 용량을 필요로 할 수 있다. 바이어스를 감소시키기 위하여, 특정 메모리 사용자에 대한 액세스의 패턴에 기초하여 낮은 바이어스를 제공하는 것으로 알려진 초기 맵핑이 생성될 수 있다. 논리-물리적 맵은 초기 맵핑에 따라 초기화될 수 있고, 이는 어느 정도의 초기 기간 동안 사용될 수 있다. 낮은 바이어스는 조합된 단일 포트 메모리 용량이 동일한 응용예에 대해 이중 포트 메모리보다 약간 더 클 수 있도록 작은 크기의 추가의 메모리 용량을 필요로 한다.
도 1 내지 도 4f는 본 명세서에서 제안되는 기술을 구현하는 데 사용될 수 있는 메모리 시스템의 일례를 설명한다. 도 1은 3차원(3D) 적층형 비휘발성 메모리 디바이스의 사시도이다. 메모리 디바이스(100)는 기판(101)을 포함한다. 기판 상에 그리고 그 위에는 메모리 셀들(비휘발성 저장 요소들)의 예시적인 블록들(BLK0, BLK1)이 있다. 또한, 기판(101) 상에는 블록들에 의한 사용을 위한 지원 회로들을 갖는 주연부 영역(104)이 있다. 기판(101)은 또한, 회로들의 신호들을 반송하기 위한 전도성 경로들로 패턴화되는 하나 이상의 하부 금속 층과 함께 블록들 아래의 회로들을 지지할 수 있다. 블록들은 메모리 디바이스의 중간 영역(102)에 형성된다. 메모리 디바이스의 상부 영역(103)에는, 하나 이상의 상부 금속 층이 회로들의 신호들을 반송하기 위한 전도성 경로들로 패턴화된다. 각각의 블록은, 적층물의 교호하는 레벨들이 워드 라인들을 나타내는 메모리 셀들의 적층된 영역을 포함한다. 일례로서 2개의 블록들이 도시되어 있지만, 추가의 블록들이 사용될 수 있어서, x- 및/또는 y-방향들로 연장될 수 있다.
하나의 예시적인 구현예에서, 평면의 x-방향으로의 길이는 워드 라인들에 대한 신호 경로들이 연장되는 방향(워드 라인 또는 SGD 라인 방향)을 나타내고, 평면의 y-방향으로의 폭은 비트 라인들에 대한 신호 경로들이 연장되는 방향(비트 라인 방향)을 나타낸다. z-방향은 메모리 디바이스의 높이를 나타낸다.
도 2는 도 1의 3D 적층형 비휘발성 메모리 디바이스(100)와 같은 예시적인 메모리 디바이스의 기능 블록도이다. 도 2에 도시된 컴포넌트들은 전기 회로들이다. 메모리 디바이스(100)는 하나 이상의 메모리 다이(108)를 포함한다. 각각의 메모리 다이(108)는 (예를 들어, 메모리 셀들의 3D 어레이와 같은) 메모리 셀들의 3차원 메모리 구조물(126), 제어 회로부(110), 및 판독/기록 회로들(128)을 포함한다. 다른 실시예들에서, 메모리 셀들의 2차원 어레이가 사용될 수 있다. 메모리 구조물(126)은 로우(row) 디코더(124)를 통해 워드 라인들에 의해 그리고 컬럼 디코더(132)를 통해 비트 라인들에 의해 어드레싱가능하다. 판독/기록 회로들(128)은 SB1, SB2,..,SBp(감지 회로부)를 포함한 다수의 감지 블록들(150)을 포함하고, 하나의 페이지의 메모리 셀들이 동시에 판독 또는 프로그래밍되는 것을 허용한다. 일부 시스템들에서는, 하나 이상의 메모리 다이(108)와 동일한 메모리 디바이스(100)(예컨대, 제거가능 저장 카드) 내에 제어기(122)가 포함된다. 그러나, 다른 시스템들에서, 제어기는 메모리 다이(108)로부터 분리될 수 있다. 일부 실시예들에서, 제어기는 메모리 다이와 상이한 다이 상에 있을 것이다. 일부 실시예들에서, 하나의 제어기(122)가 다수의 메모리 다이(108)와 통신할 것이다. 다른 실시예들에서, 각각의 메모리 다이(108)는 그 자신의 제어기를 갖는다. 커맨드들 및 데이터가 데이터 버스(120)를 통하여 호스트(140)와 제어기(122) 사이에서 전달되고, 라인들(118)을 통하여 제어기(122)와 하나 이상의 메모리 다이(108) 사이에서 전달된다. 일 실시예에서, 메모리 다이(108)는 라인들(118)에 접속된 한 세트의 입력 및/또는 출력(I/O) 핀들을 포함한다.
메모리 구조물(126)은, 3D 어레이를 포함하여, 메모리 셀들의 하나 이상의 어레이를 포함할 수 있다. 메모리 구조물은 다수의 메모리 레벨들이, 개재된 기판들 없이, 웨이퍼와 같은 단일 기판 위에 형성되는 (그리고 그 내에는 형성되지 않는) 모놀리식 3차원 메모리 구조물을 포함할 수 있다. 메모리 구조물은 실리콘 기판 위에 활성 영역이 배치된 메모리 셀들의 어레이들의 하나 이상의 물리적 레벨에 모놀리식으로 형성되는 임의의 타입의 비휘발성 메모리를 포함할 수 있다. 메모리 구조물은, 연관된 회로부가 기판 위에 있든 기판 내에 있든, 메모리 셀들의 동작과 연관된 회로부를 갖는 비휘발성 메모리 디바이스 내에 있을 수 있다.
제어 회로부(110)는 판독/기록 회로들(128)과 협력하여 메모리 구조물(126)에 대한 메모리 동작들(예컨대, 소거, 프로그래밍, 판독, 및 기타)을 수행하며, 상태 머신(112), 온-칩 어드레스 디코더(114), 및 전력 제어 모듈(116)을 포함한다. 상태 머신(112)은 메모리 동작들의 칩-레벨 제어를 제공한다. 온도 검출 회로(113)는 온도를 검출하도록 구성되고, 당업계에 공지된 임의의 적합한 온도 검출 회로일 수 있다. 일 실시예에서, 상태 머신(112)은 소프트웨어에 의해 프로그래밍가능하다. 다른 실시예들에서, 상태 머신(112)은 소프트웨어를 사용하지 않고, 완전히 하드웨어(예컨대, 전기 회로들)로 구현된다. 일 실시예에서, 제어 회로부(110)는 레지스터들, ROM 퓨즈(fuse)들, 및 디폴트 값들, 예컨대, 베이스 전압들 및 다른 파라미터들을 저장하기 위한 다른 저장 디바이스들을 포함한다.
온-칩 어드레스 디코더(114)는 호스트(140) 또는 제어기(122)에 의해 사용되는 어드레스들 사이의 어드레스 인터페이스를 디코더들(124, 132)에 의해 사용되는 하드웨어 어드레스에 제공한다. 전력 제어 모듈(116)은 메모리 동작 동안 워드 라인들 및 비트 라인들에 공급되는 전력 및 전압들을 제어한다. 이는 3D 구성으로 된 (아래에서 논의되는) 워드 라인 층들을 위한 드라이버들, 선택 트랜지스터들(예컨대, SGS 및 SGD 트랜지스터들, 아래에서 논의됨) 및 소스 라인들을 포함할 수 있다. 전력 제어 모듈(116)은 전압들을 생성하기 위한 전하 펌프들을 포함할 수 있다. 감지 블록들은 비트 라인 드라이버들을 포함한다. SGS 트랜지스터는 NAND 스트링의 소스 단부에 있는 선택 게이트 트랜지스터이고, SGD 트랜지스터는 NAND 스트링의 드레인 단부에 있는 선택 게이트 트랜지스터이다.
제어 회로부(110), 상태 머신(112), 디코더들(114/124/132), 온도 검출 회로(113), 전력 제어 모듈(116), 감지 블록들(150), 판독/기록 회로들(128), 및 제어기(122) 중 임의의 하나 또는 이들의 임의의 조합이 본 명세서에서 설명되는 기능들을 수행하는 하나 이상의 제어 회로(또는 관리 회로)로 여겨질 수 있다.
(온-칩 또는 오프-칩) 제어기(122)(이는, 일 실시예에서, 전기 회로임)는, 모두가 상호접속된 하나 이상의 프로세서(122c), ROM(122a), RAM(122b), 메모리 인터페이스(122d) 및 호스트 인터페이스(122e)를 포함할 수 있다. 하나 이상의 프로세서(122C)는 제어 회로의 일례이다. 다른 실시예들은 하나 이상의 기능을 수행하도록 설계된 상태 머신들 또는 다른 맞춤형 회로들을 사용할 수 있다. 저장 디바이스들(ROM(122a), RAM(122b))은 한 세트의 명령어들과 같은 코드를 포함하고, 프로세서(122c)는 본 명세서에서 설명되는 기능을 제공하기 위하여 한 세트의 명령어들을 실행하도록 동작가능하다. 대안으로, 또는 추가로, 프로세서(122c)는 하나 이상의 워드 라인에 접속된 메모리 셀들의 예약된 영역과 같은 메모리 구조물 내의 저장 디바이스로부터의 코드에 액세스할 수 있다. ROM(122a), RAM(122b) 및 프로세서(122c)와 통신 상태에 있는 메모리 인터페이스(122d)는 제어기(122)와 메모리 다이(108) 사이에 전기적 인터페이스를 제공하는 전기 회로이다. 예를 들어, 메모리 인터페이스(122d)는 신호들의 포맷 또는 타이밍을 변경시킬 수 있고, 버퍼를 제공할 수 있고, 서지(surge)들로부터 격리될 수 있고, I/O를 래치(latch)할 수 있고, 등일 수 있다. 프로세서(122C)는 메모리 인터페이스(122d)를 통하여 제어 회로부(110)(또는 메모리 다이(108)의 임의의 다른 컴포넌트)로 커맨드들을 송출할 수 있다. ROM(122a), RAM(122b) 및 프로세서(122c)와 통신 상태에 있는 호스트 인터페이스(122e)는 제어기(122)와 호스트(140) 사이에 전기적 인터페이스를 제공하는 전기 회로이다. 예를 들어, 호스트 인터페이스(122e)는 신호들의 포맷 또는 타이밍을 변경시킬 수 있고, 버퍼를 제공할 수 있고, 서지들로부터 격리될 수 있고, I/O를 래치할 수 있고, 등일 수 있다. 호스트(140)로부터의 커맨드들 및 데이터는 호스트 인터페이스(122e)를 통하여 제어기(122)에 의해 수신된다. 호스트(140)로 전송되는 데이터는 호스트 인터페이스(122e)를 통하여 송신된다.
메모리 구조물(126) 내의 다수의 메모리 요소들은 그들이 직렬로 접속되도록 또는 각각의 요소가 개별적으로 액세스가능하도록 구성될 수 있다. 비제한적 예로서, NAND 구성의 플래시 메모리 디바이스들(NAND 플래시 메모리)은 전형적으로 직렬로 접속된 메모리 요소들을 포함한다. NAND 스트링은 한 세트의 직렬로 접속된 메모리 셀들 및 선택 게이트 트랜지스터들의 일례이다.
NAND 플래시 메모리 어레이는 어레이가 다수의 NAND 스트링들 - 그들 중 하나의 NAND 스트링은 단일 비트 라인을 공유하고 그룹으로서 액세스되는 다수의 메모리 셀들로 구성됨 - 로 구성되도록 구성될 수 있다. 대안으로, 메모리 요소들은 각각의 요소가 개별적으로 액세스가능하도록 구성될 수 있다 - 예컨대, NOR 메모리 어레이. NAND 및 NOR 메모리 구성들은 예시적인 것이고, 메모리 셀들은 달리 구성될 수 있다.
메모리 셀들은, 복수의 로우들 및/또는 컬럼들에서와 같이, 순서화된 어레이에서의 단일 메모리 디바이스 레벨로 배열될 수 있다. 그러나, 메모리 요소들은 비정규(non-regular) 또는 비직교 구성들로, 또는 어레이로 여겨지지 않는 구조물들로 배열될 수 있다.
3차원 메모리 어레이는 메모리 셀들이 다수의 평면들 또는 다수의 메모리 디바이스 레벨들을 차지하도록 배열되고, 그에 의해 구조물을 3차원으로 (즉, x, y 및 z 방향들로 - 여기서, z 방향은 기판의 주 표면에 실질적으로 수직이고, x 및 y 방향들은 기판의 주 표면에 실질적으로 평행함) 형성한다.
비제한적 예로서, 3차원 메모리 구조물은 다수의 2차원 메모리 디바이스 레벨들의 적층물로서 수직으로 배열될 수 있다. 다른 비제한적인 예로서, 3차원 메모리 어레이는 각각의 컬럼이 다수의 메모리 셀들을 갖는 다수의 수직 컬럼들(예컨대, 기판의 주 표면에 실질적으로 수직으로, 즉, y 방향으로 연장된 컬럼들)로서 배열될 수 있다. 수직 컬럼들은 2차원 구성으로, 예컨대, x-y 평면 내에 배열될 수 있어서, 메모리 셀들이 다수의 수직으로 적층된 메모리 평면들 상에 있는, 메모리 셀들의 3차원 배열을 생성할 수 있다. 3차원의 메모리 요소들의 다른 구성들이 또한 3차원 메모리 어레이를 구성할 수 있다.
비제한적 예로서, 3차원 NAND 메모리 어레이에서, 메모리 요소들은 서로 커플링되어, 다수의 수평 메모리 디바이스 레벨들을 가로질러 가는 수직 NAND 스트링들을 형성할 수 있다. 일부 NAND 스트링들이 메모리 요소들을 단일 메모리 레벨로 포함하는 한편 다른 스트링들은 다수의 메모리 레벨들을 통하여 걸쳐 있는 메모리 요소들을 포함하는 다른 3차원 구성들이 구상될 수 있다. 3차원 메모리 어레이들은 또한 NOR 구성으로 그리고 ReRAM 구성으로 설계될 수 있다.
당업자는, 본 명세서에서 설명되는 기술이 단일의 특정 메모리 구조물에 제한되는 것이 아니라, 본 명세서에서 설명되는 바와 같은 기술의 사상 및 범주 내에서 그리고 당업자에 의해 이해되는 바와 같이 많은 관련 메모리 구조물들을 커버함을 인식할 것이다.
도 3은 제어기(122)를 더 상세히 설명하는, 예시적인 메모리 시스템(100)의 블록도이다. 일 실시예에서, 도 3의 시스템은 SSD(Solid-State Drive)이다. 본 명세서에서 사용되는 바와 같이, 플래시 메모리 제어기는, 플래시 메모리에 저장된 데이터를 관리하고 컴퓨터 또는 전자 디바이스와 같은 호스트와 통신하는 디바이스이다. 플래시 메모리 제어기는 본 명세서에서 설명되는 특정 기능에 더하여 다양한 기능을 가질 수 있다. 예를 들어, 플래시 메모리 제어기는 메모리가 적절하게 동작하고 있음을 보장하도록, 불량한 플래시 메모리 셀들을 매핑 아웃(mapping out)하도록, 그리고 향후의 결함(failed) 셀들을 대신하기 위한 여분의 메모리 셀들을 할당하도록 플래시 메모리를 포맷화할 수 있다. 여분의 셀들의 일부는 플래시 메모리 제어기를 동작시키고 다른 특징들을 구현하기 위하여 펌웨어를 보유하는 데 사용될 수 있다. 동작 시, 호스트가 플래시 메모리로부터 데이터를 판독하거나 그에 데이터를 기록할 필요가 있는 경우, 이는 플래시 메모리 제어기와 통신할 것이다. 호스트가 데이터가 판독/기록된 논리적 어드레스를 제공하는 경우, 플래시 메모리 제어기는 호스트로부터 수신된 논리적 어드레스를 플래시 메모리 내의 물리적 어드레스로 변환할 수 있다. (대안으로, 호스트는 물리적 어드레스를 제공할 수 있다). 플래시 메모리 제어기는 또한, 웨어 레벨링(wear leveling)(달리 반복적으로 기록되지 않을 메모리의 특정 블록들의 마모를 피하도록 기록들을 분포시킴) 및 가비지 수집(garbage collection)(블록이 풀(full)이 된 후에, 데이터의 유효 페이지들만을 새로운 블록으로 이동시켜, 풀 블록이 소거 및 재사용될 수 있게 함)과 같은, 그러나 그에 제한되지 않는, 다양한 메모리 관리 기능들을 수행할 수 있다.
제어기(122)와 비휘발성 메모리 다이(108) 사이의 통신 인터페이스는 토글 모드(Toggle Mode) 200, 400, 또는 800과 같은 임의의 적합한 플래시 인터페이스일 수 있다. 일 실시예에서, 메모리 시스템(100)은 카드 기반 시스템, 예컨대, SD(Secure Digital) 또는 마이크로-SD(Micro Secure Digital) 카드일 수 있다. 대안의 실시예에서, 메모리 시스템(100)은 임베디드 메모리 시스템의 일부일 수 있다. 예를 들어, 플래시 메모리는, 예컨대, 개인용 컴퓨터에 설치된 SSD(Solid-State Disk) 드라이브의 형태로, 호스트 내에 임베드될 수 있다.
일부 실시예들에서, 비휘발성 메모리 시스템(100)은 제어기(122)와 비휘발성 메모리 다이(108) 사이에 단일 채널을 포함하고, 본 명세서에서 설명되는 주제는 단일 메모리 채널을 갖는 것으로 제한되지 않는다. 예를 들어, 일부 메모리 시스템 아키텍처들에서, 2개, 4개, 8개 또는 그 이상의 채널들이, 제어기 용량에 따라, 제어기와 메모리 다이 사이에 존재할 수 있다. 도면에 단일 채널이 도시되어 있더라도, 본 명세서에서 설명된 임의의 실시예에는, 제어기와 메모리 다이 사이에 하나 초과의 채널이 존재할 수 있다.
도 3에 도시된 바와 같이, 제어기(122)는 호스트와 인터페이싱하는 프론트엔드 모듈(front-end module)(208), 하나 이상의 비휘발성 메모리 다이(108)와 인터페이싱하는 백엔드 모듈(back-end module)(210), 및 이제 상세히 설명될 기능들을 수행하는 다양한 다른 모듈들을 포함한다.
도 3에 도시된 제어기(122)의 컴포넌트들은, 예를 들어, 다른 컴포넌트들과 함께 사용하기 위하여 설계된 패키징된 기능적 하드웨어 유닛(예컨대, 전기 회로), 관련된 기능들 중 특정 기능을 통상 수행하는 (마이크로)프로세서 또는 프로세싱 회로부(또는 하나 이상의 프로세서)에 의해 실행가능한 프로그램 코드(예컨대, 소프트웨어 또는 펌웨어)의 일부, 또는 더 큰 시스템과 인터페이싱하는 자립형 하드웨어 또는 소프트웨어 컴포넌트의 형태를 취할 수 있다. 예를 들어, 각각의 모듈은 ASIC(Application Specific Integrated Circuit), FPGA(Field Programmable Gate Array), 회로, 디지털 논리 회로, 아날로그 회로, 이산 회로들의 조합, 게이트들, 또는 임의의 다른 타입의 하드웨어, 또는 이들의 조합을 포함할 수 있다. 대안으로, 또는 추가로, 각각의 모듈은 제어기(122)가 본 명세서에서 설명되는 기능들을 수행하기 위하여 하나 이상의 프로세서를 프로그래밍하도록 프로세서 판독가능 디바이스(예컨대, 메모리) 내에 저장된 소프트웨어를 포함하거나 그로 구성될 수 있다. 도 3에 도시된 아키텍처는 도 2에 도시된 제어기(122)의 컴포넌트들(즉, RAM, ROM, 프로세서, 인터페이스)을 사용할 수 있는 (또는 사용할 수 없는) 하나의 예시적인 구현예이다.
제어기(122)의 모듈들을 다시 참조하면, 버퍼 관리자/버스 제어기(214)는 RAM(216) 내의 버퍼들을 관리하고 제어기(122)의 내부 버스 중재를 제어한다. ROM(Read Only Memory)(218)는 시스템 부트 코드를 저장한다. 제어기(122)와 분리되어 위치된 것으로 도 3에 도시되어 있지만, 다른 실시예들에서, RAM(216) 및 ROM(218) 중 하나 또는 양측 모두는 제어기 내에 위치될 수 있다. 또 다른 실시예들에서, RAM 및 ROM의 일부분들은 제어기(122) 내에 그리고 제어기 외부에 위치될 수 있다. 추가로, 일부 구현예들에서, 제어기(122), RAM(216), 및 ROM(218)은 별도의 반도체 다이 상에 위치될 수 있다.
프론트엔드 모듈(208)은 호스트 또는 다음 레벨의 저장 제어기와의 전기적 인터페이스를 제공하는 호스트 인터페이스(220) 및 물리 계층 인터페이스(222)(PHY)를 포함한다. 호스트 인터페이스(220)의 타입의 선택은 사용되는 메모리의 타입에 종속될 수 있다. 호스트 인터페이스들(220)의 예들은 SATA, SATA 익스프레스, SAS, 파이버 채널(Fibre Channel), USB, PCIe, 및 NVMe를 포함하지만 이에 제한되지 않는다. 호스트 인터페이스(220)는 데이터, 제어 신호들, 및 타이밍 신호들에 대한 전달을 가능하게 하는 통신 인터페이스일 수 있다.
백엔드 모듈(210)은 ECC(Error Correction Controller) 엔진을 포함하고, ECC 엔진(224)은 호스트로부터 수신된 데이터 바이트들을 인코딩하고 비휘발성 메모리로부터 판독된 데이터 바이트들을 디코딩하고 에러 정정한다. 커맨드 시퀀서(command sequencer)(226)는 비휘발성 메모리 다이(108)로 송신될 커맨드 시퀀스들, 예컨대, 프로그램 및 소거 커맨드 시퀀스들을 생성한다. RAID(Redundant Array of Independent Dies) 모듈(228)은 RAID 패리티(parity)의 생성 및 결함 데이터의 복구를 관리한다. RAID 패리티는 비휘발성 메모리 시스템(100)에 기록되는 데이터에 대한 무결성 보호(integrity protection)의 추가 레벨로서 사용될 수 있다. 일부 경우들에서, RAID 모듈(228)은 ECC 엔진(224)의 일부일 수 있다. RAID 패리티는 통상의 명칭이 암시하는 바와 같이 여분의 다이 또는 다이들로서 추가될 수 있지만, 이는 또한, 예컨대 여분의 평면, 또는 여분의 블록, 또는 블록 내의 여분의 WL들로서, 기존의 다이 내에 추가될 수 있다는 것에 유의하여야 한다. ECC 엔진(224) 및 RAID 모듈(228) 양측 모두는, 에러들이 발생하는 경우에 복구하는 데 사용될 수 있는 리던던트 데이터를 계산하고 리던던시 인코더들의 예들로서 여겨질 수 있다. 이와 함께, ECC 엔진(224) 및 RAID 모듈(228)은 조합된 리던던시 인코더(234)를 형성하는 것으로 여겨질 수 있다. 메모리 인터페이스(230)는 커맨드 시퀀스들을 비휘발성 메모리 다이(108)에 제공하고, 비휘발성 메모리 다이(108)로부터 스테이터스 정보(status information)를 수신한다. 일 실시예에서, 메모리 인터페이스(230)는 토글 모드 200, 400, 또는 800 인터페이스와 같은 DDR(Double Data Rate) 인터페이스일 수 있다. 플래시 제어 계층(232)은 백엔드 모듈(210)의 전체 동작을 제어한다.
도 3에 도시된 메모리 시스템(100)의 추가 컴포넌트들은 비휘발성 메모리 다이(108)의 메모리 셀들의 웨어 레벨링을 수행하는 매체 관리 계층(238)을 포함한다. 메모리 시스템(100)은 또한 제어기(122)와 인터페이싱할 수 있는 외부 전기적 인터페이스들, 외부 RAM, 저항들, 커패시터들, 또는 다른 컴포넌트들과 같은 다른 개별 컴포넌트들(240)을 포함한다. 대안의 실시예들에서, 물리 계층 인터페이스(222), RAID 모듈(228), 매체 관리 계층(238) 및 버퍼 관리/버스 제어기(214) 중 하나 이상은 제어기(122)에서 필수가 아닌 선택적인 컴포넌트들이다.
FTL(Flash Translation Layer) 또는 MML(Media Management Layer)(238)은 호스트와의 인터페이싱 및 플래시 에러들을 다룰 수 있는 플래시 관리의 일부로서 통합될 수 있다. 특히, MML은 플래시 관리에서의 모듈일 수도 있고, NAND 관리의 실질을 담당할 수도 있다. 특히, MML(238)은, 호스트로부터의 기록들을 다이(108)의 플래시 메모리(126)로의 기록들로 변환하는 메모리 디바이스 펌웨어에서의 알고리즘을 포함할 수 있다. MML(238)은, 1) 플래시 메모리가 제한된 내구성을 가질 수 있고/있거나; 2) 플래시 메모리(126)가 다수의 페이지들로 오직 기록될 수 있고/있거나; 3) 플래시 메모리(126)가 블록으로서 소거되지 않으면 플래시 메모리가 기록되지 않을 수 있기 때문에 필요할 수 있다. MML(238)은 호스트에 대해 가시적(visible)이지 않을 수 있는 플래시 메모리(126)의 이러한 잠재적인 제한들을 이해한다. 따라서, MML(238)은 호스트로부터의 기록들을 플래시 메모리(126)로의 기록들로 변환하는 것을 시도한다.
제어기(122)는 하나 이상의 메모리 다이(108)와 인터페이싱할 수 있다. 일 실시예에서, 제어기(122) 및 다수의 메모리 다이들(비휘발성 저장 시스템(100)을 함께 포함)은 호스트 내부의 하드 디스크 드라이브 대신에, NAS 디바이스로서 에뮬레이팅(emulate)할 수 있거나, 대체할 수 있거나, 이용될 수 있는 등의 SSD(Solid-State Drive)를 구현한다. 추가로, SSD가 하드 드라이브로서 작동하게 될 필요는 없다.
도 4는 복수의 메모리 셀들을 포함하는 모놀리식 3차원 메모리 구조물(126)의 일부의 사시도이다. 예를 들어, 도 4는 메모리의 하나의 블록의 일부를 도시한다. 도시된 구조물은 교호하는 유전체 층들 및 전도성 층들의 적층물 위에 위치된 한 세트의 비트 라인들(BL)을 포함한다. 예시를 목적으로, 유전체 층들 중 하나가 D로 마킹되고 전도성 층들(또한 워드 라인 층들로 지칭됨) 중 하나가 W로 마킹된다. 교호하는 유전체 층들 및 전도성 층들의 개수는 특정 구현 요건에 기초하여 가변될 수 있다. 한 세트의 실시예들은 108 내지 216개의 교호하는 유전체 층들 및 전도성 층들, 예를 들어, 96개의 데이터 워드 라인 층들, 8개의 선택 층들, 4개의 더미 워드 라인 층(dummy word line layer)들 및 108개의 유전체 층들을 포함한다. 108 내지 216보다 많거나 적은 층들이 또한 사용될 수 있다. 아래에서 설명되는 바와 같이, 교호하는 유전체 층들 및 전도성 층들은 국소 상호접속부들(LI)에 의해 4개의 "핑거(finger)들"로 분할된다. 도 4는 2개의 핑거들 및 2개의 국소 상호접속부들(LI)만을 도시한다. 교호하는 유전체 층들 및 워드 라인 층들 아래에는 소스 라인 층(SL)이 있다. 메모리 홀들이 교호하는 유전체 층들 및 전도성 층들의 적층물 내에 형성된다. 예를 들어, 메모리 홀들 중 하나가 MH로 마킹되어 있다. 도 4에서, 유전체 층들은 판독기가 교호하는 유전체 층들 및 전도성 층들의 적층물 내에 위치된 메모리 홀들을 볼 수 있도록 시스루(see-through)로 도시되어 있다는 것에 유의하여야 한다. 일 실시예에서, NAND 스트링들은 메모리 셀들의 수직 컬럼을 생성하도록 메모리 홀을 전하 트래핑 층을 포함하는 재료들로 충전함으로써 형성된다. 각각의 메모리 셀은 데이터의 하나 이상의 비트를 저장할 수 있다. 3차원 모놀리식 메모리 구조물(126)의 더 상세한 사항들은 도 4a 내지 도 4f와 관련하여 아래에서 제공된다.
도 4a는 2개의 평면들(302, 304)로 분할된 메모리 구조물(126)의 하나의 예시적인 조직을 설명하는 블록도이다. 이어서, 각각의 평면은 M개의 블록들로 분할된다. 일례에서, 각각의 평면은 약 2000개의 블록들을 갖는다. 그러나, 상이한 개수의 블록들 및 평면들이 또한 사용될 수 있다. 일 실시예에서, 2개의 평면 메모리들에 대해, 블록 ID들은 통상 짝수 블록들이 하나의 평면에 속하고 홀수 블록들이 다른 평면에 속하도록 되어 있고; 그러므로, 평면(302)은 블록 0, 블록 2, 블록 4, 블록 6,..을 포함하고, 평면(304)은 블록 1, 블록 3, 블록 5, 블록 7,..을 포함한다. 일 실시예에서, 메모리 셀들의 블록은 소거의 유닛이다. 즉, 블록의 모든 메모리 셀들은 함께 소거된다. 다른 실시예들에서, 메모리 셀들은 다른 이유들로, 예컨대, 메모리 구조물(126)을 편성하여 신호전달 및 선택 회로들을 인에이블시키기 위하여, 블록들로 그룹화될 수 있다.
도 4b 내지 도 4f는 하나의 예시적인 3D NAND 구조물을 도시한다. 도 4b는 메모리 구조물(126)로부터의 하나의 블록의 일부의 평면도를 도시하는 블록도이다. 도 4b에 도시된 블록의 일부는 도 4a의 블록 2의 부분(306)에 대응한다. 도 4b에서 알 수 있는 바와 같이, 도 4b에 도시된 블록은 332의 방향으로 연장된다. 일 실시예에서, 메모리 어레이는 60개의 층들을 가질 것이다. 다른 실시예들은 60개 미만 또는 초과의 층들을 갖는다. 그러나, 도 4b는 상단 층만을 도시한다.
도 4b는 수직 컬럼들을 나타내는 복수의 원들을 도시한다. 수직 컬럼들의 각각은 다수의 선택 트랜지스터들 및 다수의 메모리 셀들을 포함한다. 일 실시예에서, 각각의 수직 컬럼은 NAND 스트링을 구현한다. 예를 들어, 도 4b는 수직 컬럼들(422, 432, 442 452)을 도시한다. 수직 컬럼(422)은 NAND 스트링(482)을 구현한다. 수직 컬럼(432)은 NAND 스트링(484)을 구현한다. 수직 컬럼(442)은 NAND 스트링(486)을 구현한다. 수직 컬럼(452)은 NAND 스트링(488)을 구현한다. 수직 컬럼들의 더 상세한 사항들은 아래에서 제공된다. 도 4b에 도시된 블록이 화살표(330)의 방향으로 그리고 화살표(332)의 방향으로 연장되기 때문에, 블록은 도 4b에 도시된 것보다 더 많은 수직 컬럼들을 포함한다.
도 4b는 또한 비트 라인들(411, 412, 413, 414, …419)을 포함하는 한 세트의 비트 라인들(425)을 도시한다. 도 4b는 블록의 단지 일부만이 도시되어 있기 때문에 24개의 비트 라인들을 도시한다. 24개 초과의 비트 라인들이 블록의 수직 컬럼들에 접속된 것이 고려된다. 수직 컬럼들을 나타내는 원들의 각각은 하나의 비트 라인에 대한 그의 접속부를 표시하도록 "x"를 갖는다. 예를 들어, 비트 라인(414)은 수직 컬럼들(422, 432, 442, 452)에 접속된다.
도 4b에 도시된 블록은 다양한 층들을 수직 컬럼들 아래의 소스 라인에 접속시키는 한 세트의 국소 상호접속부들(402, 404, 406, 408, 410)을 포함한다. 국소 상호접속부들(402, 404, 406, 408, 410)은 또한 블록의 각각의 층을 4개의 영역들로 분할하는 역할을 하는데; 예를 들어, 도 4b에 도시된 상단 층은 핑거들로 지칭되는 영역들(420, 430, 440, 450)로 분할된다. 메모리 셀들을 구현하는 블록의 층들에서, 4개의 영역들은 국소 상호접속부들에 의해 분리되는 워드 라인 핑거들로 지칭된다. 일 실시예에서, 블록의 공통 레벨 상의 워드 라인 핑거들은 블록의 단부에서 서로 접속되어 단일 워드 라인을 형성한다. 다른 실시예에서, 동일한 레벨 상의 워드 라인 핑거들은 서로 접속되지 않는다. 하나의 예시적인 구현예에서, 비트 라인은 영역들(420, 430, 440, 450) 각각 내의 하나의 수직 컬럼에만 접속된다. 그러한 구현예에서, 각각의 블록은 활성 컬럼들의 16개의 로우들을 갖고, 각각의 비트 라인은 각각의 블록 내의 4개의 로우들에 접속된다. 일 실시예에서, 공통 비트 라인에 접속된 4개의 로우들의 모두는 (서로 접속된 동일한 레벨 상의 상이한 워드 라인 핑거들을 통하여) 동일한 워드 라인에 접속되고; 그러므로, 시스템은 소스측 선택 라인들 및 드레인측 선택 라인들을 사용하여 메모리 동작(프로그래밍, 검증, 판독, 및/또는 소거)을 거치는 4개 중 하나(또는 다른 하나의 서브세트)를 선택한다.
도 4b가 블록 내에 수직 컬럼들의 4개의 로우들, 4개의 영역들 및 수직 컬럼들의 16개의 로우들을 갖는 각각의 영역을 도시하지만, 그러한 정확한 수들은 하나의 예시적인 구현예이다. 다른 실시예들은 블록당 더 많거나 더 적은 영역들, 영역당 수직 컬럼들의 더 많거나 더 적은 로우들, 및 블록당 수직 컬럼들의 더 많거나 더 적은 로우들을 포함할 수 있다.
도 4b는 또한 스태거링(staggering)된 수직 컬럼들을 도시한다. 다른 실시예들에서, 스태거링의 상이한 패턴들이 사용될 수 있다. 일부 실시예들에서, 수직 컬럼들은 스태거링되지 않는다.
도 4c는 도 4b의 라인 AA를 따르는 단면도를 보여주는 3차원 메모리 구조물(126)의 실시예의 일부를 도시한다. 이러한 단면도는 수직 컬럼들(432, 434) 및 영역(430)(도 4b 참조)을 통하여 절단된다. 도 4c의 구조물은 4개의 드레인측 선택 층들(SGD0, SGD1, SGD2, SGD3); 4개의 소스측 선택 층들(SGS0, SGS1, SGS2, SGS3); 4개의 더미 워드 라인 층들(DD0, DD1, DS0, DS1); 및 데이터 메모리 셀들에 접속하기 위한 48개의 데이터 워드 라인 층들(WLL0 내지 WLL47)을 포함한다. 다른 실시예들은 4개 초과 또는 미만의 드레인측 선택 층들, 4개 초과 또는 미만의 소스측 선택 층들, 4개 초과 또는 미만의 더미 워드 라인 층들, 및 48개 초과 또는 미만의 워드 라인 층들(예컨대, 96개의 워드 라인 층들)을 구현할 수 있다. 수직 컬럼들(432, 434)은 드레인측 선택 층들, 소스측 선택 층들, 더미 워드 라인 층들 및 워드 라인 층들을 통하여 돌출된 것으로 도시되어 있다. 일 실시예에서, 각각의 수직 컬럼은 NAND 스트링을 포함한다. 예를 들어, 수직 컬럼(432)은 NAND 스트링(484)을 포함한다. 아래에 나열된 층들 및 수직 컬럼들 아래에는 기판(101), 기판 상의 절연 필름(454), 및 소스 라인(SL)이 있다. 수직 컬럼(432)의 NAND 스트링은 적층물의 하단에 소스 단부를 갖고 적층물의 상단에 드레인 단부를 갖는다. 도 4b와 일치하는 바와 같이, 도 4c는 커넥터(415)를 통하여 비트 라인(414)에 접속된 수직 컬럼(432)을 도시한다. 국소 상호접속부들(404, 406)이 또한 도시되어 있다.
참조하기 용이하도록, 드레인측 선택 층들(SGD0, SGD1, SGD2, SGD3); 소스측 선택 층들(SGS0, SGS1, SGS2, SGS3); 더미 워드 라인 층들(DD0, DD1, DS0, DS1); 및 워드 라인 층들(WLL0 내지 WLL47)은 집합적으로 전도성 층들로 지칭된다. 일 실시예에서, 전도성 층들은 TiN과 텅스텐의 조합으로 제조된다. 다른 실시예들에서, 다른 재료들, 예컨대, 도핑된 폴리실리콘, 금속, 예컨대, 텅스텐 또는 금속 규화물이 전도성 층들을 형성하는 데 사용될 수 있다. 일부 실시예들에서, 상이한 전도성 층들이 상이한 재료들로 형성될 수 있다. 전도성 층들 사이에는 유전체 층들(DL0 내지 DL59)이 있다. 예를 들어, 유전체 층(DL49)은 워드 라인 층(WLL43) 위에 그리고 워드 라인 층(WLL44) 아래에 있다. 일 실시예에서, 유전체 층들은 SiO2로 제조된다. 다른 실시예들에서, 다른 유전체 재료들이 유전체 층들을 형성하는 데 사용될 수 있다.
비휘발성 메모리 셀들은 적층물 내의 교호하는 전도성 및 유전체 층들을 통하여 연장되는 수직 컬럼들을 따라서 형성된다. 일 실시예에서, 메모리 셀들은 NAND 스트링들로 배열된다. 워드 라인 층(WLL0 내지 WLL47)은 메모리 셀들(또한 데이터 메모리 셀들로 지칭됨)에 접속된다. 더미 워드 라인 층들(DD0, DD1, DS0, DS1)은 더미 메모리 셀들에 접속된다. 더미 메모리 셀이 사용자 데이터를 저장하지 않는 한편, 데이터 메모리 셀은 사용자 데이터를 저장하는 데 적격이다. 드레인측 선택 층들(SGD0, SGD1, SGD2, SGD3)은 NAND 스트링들과 비트 라인들을 전기적으로 접속 및 접속해제하는 데 사용된다. 소스측 선택 층들(SGS0, SGS1, SGS2, SGS3)은 NAND 스트링들과 소스 라인(SL)을 전기적으로 접속 및 접속해제하는 데 사용된다.
도 4d는 도 4c에 부분적으로 도시된 블록에 대한 전도성 층들(SGD0, SGD1, SGD2, SGD3, SGS0, SGS1, SGS2, SGS3, DD0, DD1, DS0, DS1, WLL0 내지 WLL47)의 논리 표현을 도시한다. 도 4b와 관련하여 앞서 언급된 바와 같이, 일 실시예에서, 국소 상호접속부들(402, 404, 406, 408, 410)은 각각의 전도성 층을 4개의 영역들 또는 핑거들로 분해한다. 예를 들어, 워드 라인 층(WLL31)은 영역들(460, 462, 464, 466)로 분할된다. 워드 라인 층들(WLL0 내지 WLL31)의 경우, 영역들은 워드 라인 핑거들로 지칭되는데; 예를 들어, 워드 라인 층(WLL46)은 워드 라인 핑거들(460, 462, 464, 466)로 분할된다. 일 실시예에서, 동일한 레벨 상의 4개의 워드 라인 핑거들은 서로 접속된다. 다른 실시예에서, 각각의 워드 라인 핑거는 개별 워드 라인으로서 동작한다.
드레인측 선택 게이트 층(SGD0)(상단 층)은 또한 영역들(420, 430, 440, 450) - 또한 핑거들 또는 선택 라인 핑거들로 알려짐 - 로 분할된다. 일 실시예에서, 동일한 레벨 상의 4개의 선택 라인 핑거들은 서로 접속된다. 다른 실시예에서, 각각의 선택 라인 핑거는 개별 워드 라인으로서 동작한다.
도 4e는 수직 컬럼(432)의 일부를 포함하는 도 4c의 영역(429)의 단면도를 도시한다. 일 실시예에서, 수직 컬럼들은 원형이고, 4개의 층들을 포함하지만; 다른 실시예들에서는, 4개 초과 또는 미만의 층들이 포함될 수 있고 다른 형상들이 사용될 수 있다. 일 실시예에서, 수직 컬럼(432)은 SiO2와 같은 유전체로 제조된 내부 코어(470)를 포함한다. 다른 재료들이 또한 사용될 수 있다. 내부 코어(470) 둘레에는 폴리실리콘 채널, 채널(471)이 있다. 폴리실리콘 이외의 재료들이 또한 사용될 수 있다. 이는 비트 라인에 접속된 채널(471)인 것에 유의하여야 한다. 채널(471) 둘레에는 터널링 유전체(tunneling dielectric)(472)가 있다. 일 실시예에서, 터널링 유전체(472)는 ONO 구조를 갖는다. 터널링 유전체(472) 둘레에는 (예를 들어) 질화규소와 같은 전하 트래핑 층(473)이 있다. 다른 메모리 재료들 및 구조들이 또한 사용될 수 있다. 본 명세서에서 설명되는 기술은 임의의 특정 재료 또는 구조에 제한되지 않는다.
도 4e는 유전체 층들(DLL49, DLL50, DLL51, DLL52, DLL53), 및 워드 라인 층들(WLL43, WLL44, WLL45, WLL46, WLL47)을 도시한다. 워드 라인 층들의 각각은 차단 산화물 층(478)(SiO2)에 의해 둘러싸인 산화알루미늄 층(477)에 의해 둘러싸인 워드 라인 영역(476)을 포함한다. 워드 라인 층들의 수직 컬럼과의 물리적 상호작용은 메모리 셀들을 형성한다. 따라서, 메모리 셀은, 일 실시예에서, 채널(471), 터널링 유전체(472), 전하 트래핑 층(473), 차단 산화물 층(478), 산화알루미늄 층(477) 및 워드 라인 영역(476)을 포함한다. 예를 들어, 워드 라인 층(WLL47) 및 수직 컬럼(432)의 일부는 메모리 셀(MC1)을 포함한다. 워드 라인 층(WLL46) 및 수직 컬럼(432)의 일부는 메모리 셀(MC2)을 포함한다. 워드 라인 층(WLL45) 및 수직 컬럼(432)의 일부는 메모리 셀(MC3)을 포함한다. 워드 라인 층(WLL44) 및 수직 컬럼(432)의 일부는 메모리 셀(MC4)을 포함한다. 워드 라인 층(WLL43) 및 수직 컬럼(432)의 일부는 메모리 셀(MC5)을 포함한다. 다른 아키텍처들에서, 메모리 셀이 상이한 구조를 가질 수 있지만; 메모리 셀은 여전히 저장 유닛일 것이다.
메모리 셀이 프로그래밍된 경우, 전자들은 메모리 셀과 연관된 전하 트래핑 층(473)의 일부에 저장된다. 이들 전자는, 워드 라인 영역(476) 상의 적절한 전압에 응답하여, 채널(471)로부터, 터널링 유전체(472)를 통하여, 전하 트래핑 층(473) 내로 인출된다. 메모리 셀의 임계 전압(Vth)은 저장된 전하의 양에 비례하여 증가된다. 일 실시예에서, 비휘발성 저장 시스템의 프로그래밍은 전하 트래핑 층 내로의 전자들의 파울러-노드하임 터널링(Fowler-Nordheim tunneling)을 통하여 달성된다. 소거 동작 동안, 전자들이 채널로 복귀되거나 정공들이 전하 트래핑 층 내로 주입되어 전자들과 재결합한다. 일 실시예에서, GIDL(Gate Induced Drain Leakage)과 같은 물리적 메커니즘을 통하여 전하 트래핑 층 내로의 정공 주입을 사용하여 소거가 달성된다.
도 4f는 전체 블록을 가로질러 이어지는 물리적 워드 라인들(WLL0 내지 WLL47)을 도시한다. 도 4g의 구조는 비트 라인들(411, 412, 413, 414, …419)을 포함하는 도 4a 내지 도 4f의 블록 2의 부분(306)에 대응한다. 블록 내에는, 각각의 비트 라인이 4개의 NAND 스트링들에 접속되어 있다. 드레인측 선택 라인들(SGD0, SGD1, SGD2, SGD3)은 4개의 NAND 스트링들 중 어느 것이 연관된 비트 라인에 접속된 것인지 결정하는 데 사용된다. 블록은 또한 4개의 하위 블록들(SB0, SB1, SB2, SB3)로 분할되는 것으로 생각될 수 있다. 하위 블록(SB0)은 SGD0 및 SGS0에 의해 제어되는 이러한 수직 NAND 스트링들에 대응하고, 하위 블록(SB1)은 SGD1 및 SGS1에 의해 제어되는 이러한 수직 NAND 스트링들에 대응하고, 하위 블록(SB2)은 SGD2 및 SGS2에 의해 제어되는 이러한 수직 NAND 스트링들에 대응하고, 하위 블록(SB3)은 SGD3 및 SGS3에 의해 제어되는 이러한 수직 NAND 스트링들에 대응한다.
도 4 내지 도 4f의 예시적인 메모리 시스템이 전하 트래핑 재료를 갖는 수직 NAND 스트링들을 포함하는 3차원 메모리 구조물이지만, 다른 (2D 및 3D) 메모리 구조물들이 또한 본 명세서에서 설명되는 기술과 함께 사용될 수 있다. 예를 들어, 플로팅 게이트 메모리들(예컨대, NAND-타입 및 NOR-타입 플래시 메모리 ReRAM 메모리들, 자기저항 메모리(예컨대, MRAM), 및 상변화(phase change) 메모리(예컨대, PCRAM)가 또한 사용될 수 있다.
ReRAM 메모리의 일례에는 X 라인들 및 Y 라인들(예컨대, 워드 라인들 및 비트 라인들)에 의해 액세스되는 교차점 어레이에 배열되는 가역적 저항-스위칭 요소들이 포함된다. 다른 실시예에서, 메모리 셀들은 전도성 브리지 메모리 요소들을 포함할 수 있다. 전도성 브리지 메모리 요소는 또한 프로그래밍가능 금속화 셀로 지칭될 수 있다. 전도성 브리지 메모리 요소는 고체 전해질 내의 이온들의 물리적 재배치에 기초하여 상태 변경 요소로서 사용될 수 있다. 일부 경우에 있어서, 전도성 브리지 메모리 요소는 2개의 고체 금속 전극들, 즉 상대적으로 불활성인 하나의 고체 금속 전극(예컨대, 텅스텐) 및 전기화학적으로 활성인 다른 하나의 고체 금속 전극(예컨대, 은 또는 구리)을 포함할 수 있는데, 이때 2개의 전극들 사이에는 얇은 고체 전해질 필름이 있다. 온도가 증가함에 따라, 이온들의 이동도가 또한 증가하여, 전도성 브리지 메모리 셀에 대한 프로그래밍 임계치가 감소하게 한다. 따라서, 전도성 브리지 메모리 요소는 온도에 따라 광범위한 프로그래밍 임계치들을 가질 수 있다.
자기저항 메모리(MRAM)는 자기 저장 요소들에 의해 데이터를 저장한다. 요소들은 2개의 강자성 플레이트들로 형성되는데, 이들 각각은 얇은 절연 층에 의해 분리되는 자화(magnetization)를 보유할 수 있다. 2개의 플레이트들 중 하나는 특정 극성으로 설정된 영구 자석이고; 다른 플레이트의 자화는 외부 자기장의 것을 저장 메모리에 매칭시키도록 변경될 수 있다. 이러한 구성은 스핀 밸브(spin valve)로 알려져 있고 MRAM 비트에 대한 가장 단순한 구조이다. 메모리 디바이스가 그러한 메모리 셀들의 그리드로부터 구성된다. 비휘발성 저장 시스템을 프로그래밍하기 위한 일 실시예에서, 각각의 메모리 셀은 한 쌍의 기록 라인들 사이에 놓이며, 이 라인들은 서로에 대해 직각이고, 하나는 셀 위에서 그리고 하나는 셀 아래에서 셀에 평행하게 배열된다. 전류가 그들을 통과할 때, 유도 자기장이 생성된다.
상변화 메모리(PCRAM)는 칼코겐화물 유리의 고유 거동을 이용한다. 일 실시예는 GeTe - Sb2Te3 초격자를 사용하여, 레이저 펄스(또는 다른 광원으로부터의 광 펄스)로 게르마늄 원자의 배위(co-ordination) 상태를 간단히 변화시킴으로써 비-열적 상변화를 달성한다. 따라서, 프로그래밍의 도즈(dose)들은 레이저 펄스들이다. 메모리 셀들은 메모리 셀들이 광을 수신하는 것을 차단함으로써 억제될 수 있다. 본 명세서에서 "펄스"의 사용은 사각 펄스를 필요로 하는 것이 아니라 사운드, 전류, 전압, 광, 또는 기타 파의 (연속적 또는 불연속적) 진동 또는 버스트(burst)를 포함한다는 점에 유의한다.
많은 비휘발성 저장 시스템들에서, 에러들은 메모리로부터 판독되는 미가공 데이터에서 발생할 수 있고, ECC 인코더/디코더(예컨대, 도 3의 ECC 엔진(224))는 데이터가 호스트로 전송되기 전에 그러한 에러들을 검출 및 정정하는 데 사용될 수 있다.
도 5는 비휘발성 메모리(504)와 통신 상태에 있는 메모리 제어기(502)의 제어 회로들을 포함하는 비휘발성 메모리 시스템(500)의 일부 컴포넌트들을 도시한다. 메모리 제어기(502)는 호스트와의 통신을 위한 호스트 인터페이스(506) 및 비휘발성 메모리(504)와의 통신을 위한 메모리 인터페이스(508)를 포함한다. ECC 인코더/디코더(또는 ECC 엔진), 즉 ECC 디코더(510)는 호스트 인터페이스(506)와 메모리(508) 사이에 있어서 호스트로부터 수신된 데이터를 인코딩한 후에 이를 비휘발성 메모리(504)에 저장하고 비휘발성 메모리(504)로부터 판독된 미가공 데이터를 디코딩한 후에 이를 호스트로 전송한다. 용어 "디코더" 또는 "ECC 디코더"는 본 명세서에서, 인코딩 및 디코딩 양측 모두를 수행할 수 있거나 또는 디코딩을 단독으로 수행할 수 있는 ECC 모듈 또는 ECC 머신을 지칭하는 데 사용된다.
ECC 디코딩은, 예컨대 비트들을 플립핑(flipping)하여 ECC 코드워드(codeword)를 획득함으로써, 솔루션을 발견하려고 시도하기 위한 다수의 반복들을 수행하는 것을 포함할 수 있다. RAM(512)은 ECC 디코더(510)가 상이한 반복들로부터 출력들을 저장하는 것을 허용하도록 ECC 디코더(510)에 커플링된다. 단일 메모리, 즉 RAM(512)이 ECC 디코더(510)에 커플링된 것으로 도시되어 있지만, 일부 ECC 디코더들은 데이터를 저장하기 위한 다수의 메모리들(예컨대, 상이한 디코딩 데이터를 유지하기 위한 상이한 RAM)을 가질 수 있다. 여기서 제시된 기술의 태양들은 메모리의 임의의 특정 배열로 제한되지 않는다. 일부 메모리 제어기들에서, ECC 디코더에 의해 사용되는 RAM은 상당한 비용을 의미할 수 있고 상당한 전력을 소비할 수 있다.
도 6a는 비휘발성 메모리 제어기, 즉 호스트 인터페이스(606)와 메모리 인터페이스(608) 사이에 ECC 디코더(610)를 포함하는 제어기(600)의 일례를 도시한다. ECC 디코더(610)는 데이터를 반복적으로 디코딩하는 경우에 ECC 디코더(610)에 의해 생성된 데이터가 신속하게 기록 및 판독될 수 있도록 이중 포트 메모리(612)(이중 포트 RAM)에 커플링된다. 이중 포트 메모리는 데이터가 하나의 포트를 통하여 기록되면서 데이터가 다른 포트를 통하여 판독되는 것을 허용한다. 예를 들어, 주어진 클록 사이클에서, ECC 디코더는 포트 A를 통하여 이중 포트 메모리(612) 내에 데이터를 기록할 수 있고 포트 B를 통하여 이중 포트 메모리(612)로부터 데이터를 판독할 수 있다. 이중 포트 메모리(612)에 저장된 데이터는, 데이터가 포트 A를 통하여 이중 포트 메모리(612) 내의 임의의 어드레스에 기록될 수 있는 한편 이중 포트 메모리(612) 내의 임의의 다른 데이터가 포트 B를 통하여 병렬로 판독될 수 있도록, 양측 포트를 통하여 동일하게 액세스가능하다. 그러한 병렬 액세스는 주어진 클록 주파수에 대해 높은 액세스 속도를 제공한다. 용어 "이중 포트"는 각각의 포트가 판독 또는 기록할 수 있는 2개의 포트들을 갖는 메모리를 지칭할 수 있다. 그에 반해서, "2-포트"는 하나의 포트가 기록 전용 포트이고 다른 포트는 판독 전용 포트인 2개의 포트들을 갖는 메모리를 지칭할 수 있다. 제어기(600)가 2-포트 메모리 또는 이중 포트 메모리로 구현될 수 있다는 것을 이해할 것이다.
도 6b는 호스트 인터페이스(616)와 메모리 인터페이스(618) 사이에 ECC 디코더(620)를 포함하는 메모리 제어기(630)의 다른 예를 도시한다. ECC 디코더(620)는 ECC 디코더(620)에 의해 생성된 데이터가 저장 및 검색될 수 있도록 단일 포트 메모리(622a) 및 단일 포트 메모리(622b)에 커플링된다.
도 6c는 비휘발성 메모리 제어기, 즉 제어기(640)의 다른 예를 도시하는데, 여기서는 단일 포트 메모리(622a) 및 단일 포트 메모리(622b)가 ECC 디코더(620)에 커플링되어 있다. 제어기(640)에서, 단일 포트 메모리들(622a, 622b)은 포트 A 또는 포트 B가 단일 포트 메모리(622a) 또는 단일 포트 메모리(622b)에 액세스하게 하는 라우팅 회로(642)를 통하여 2개의 포트들, 즉 포트 A 및 포트 B를 공유하는 2개의 메모리 뱅크들로서 배열된다. 따라서, 라우팅 회로(642)는 2개의 스위칭 구성들, 즉 포트 A가 단일 포트 메모리(622a)에 커플링되고 포트 B가 단일 포트 메모리(622b)에 커플링된 제1 구성 및 포트 A가 단일 포트 메모리(622b)에 커플링되고 포트 B가 단일 포트 메모리(622a)에 커플링된 제2 구성을 갖는다. 이는 단일 포트 메모리들 사이의 액세스의 인터리빙(interleaving)을 허용한다. 이러한 배열이 조합된 단일 포트 메모리들(622a, 622b)의 전체 물리적 메모리 공간으로 하여금 포트들 A 및 B를 통하여 액세스되게 하지만, 병렬 액세스는 2개의 단일 포트 메모리들에 병렬로 액세스하는 것으로 제한된다(즉, 동일한 단일 포트 메모리에 액세스하는 2개의 병렬 동작들을 가질 수 없다). 따라서, 주어진 클록 사이클에서, 포트 A가 단일 포트 메모리(622a)에 커플링되어 단일 포트 메모리(622a) 내의 어드레스에 액세스하면, 다른 동작은 포트 B를 통하여 병렬로 단일 포트 메모리(622b) 내의 어드레스에 액세스할 수 있지만, 단일 포트 메모리(622a) 내의 다른 어드레스에는 액세스할 수 없다. 라우팅 회로(642)가 본 예에서는 메모리 유닛(644)의 내부에 (즉, 포트들 A 및 B와 단일 포트 메모리들(622a, 622b) 사이에) 있는 것으로 도시되어 있지만, 다른 예에서, 라우팅은 메모리 유닛(644)의 외부에 (예컨대, ECC 디코더(620)와 메모리 유닛(644) 사이에) 구현될 수 있다.
도 7은 이중 포트 메모리와 단일 포트 메모리 사이의 (예컨대, 도 6a의 이중 포트 메모리(612)와 도 6b 및 도 6c의 단일 포트 메모리들(622a, 622b) 사이의) 비교를 도시한다. 이중 포트 메모리(740)가 L*W개(여기서, L은 컬럼을 따르는 셀들의 개수이고, W는 병렬로 액세스될 수 있는 로우를 따르는 셀들의 개수임 - 예컨대 주어진 클록 사이클에서 W개의 비트들이 판독됨)인 다수의 메모리 셀들(다수의 비트들)과 함께 도시되어 있다. 유사하게, 단일 포트 메모리들(742a, 742b)은 집합적으로 L*W개인 다수의 셀들을 갖는다. 일부 응용예들에서, 어느 배열도 상이한 배열들에 있어서의 일부 이점들 및 단점들을 갖고서 사용될 수 있다. 예를 들어, 28 KB를 저장하는 용량을 갖는 이중 포트 메모리가 각각 14 KB를 저장하는 2개의 단일 포트 메모리들로 대체될 수 있다(예컨대, 72개의 라인들을 갖는 이중 포트 메모리가 각각 36개의 라인들의 2개의 단일 포트 메모리들에 의해 대체될 수 있다).
도 8은 단일 포트 및 이중 포트 메모리들의 예들 사이에서 알아낼 수 있는 차이들을 도시한다. 제1 라인은 100% 면적 및 전력을 갖는 것으로서 단일 포트 메모리를 도시한다(즉, 도 7의 우측에 도시된 바와 같은 단일 포트 메모리는 비교를 위한 베이스라인으로서 제공된다). 제2 라인은 동일한 풋프린트(footprint)(100% 면적)를 유지하고 단일 포트 예에 의해 사용되는 전력의 160%를 사용하는 초고밀도(ultra-high-density)의 2-포트 메모리(또는 이중 포트 메모리)의 일례를 도시한다. 제3 라인은 단일 포트 메모리와 동일한 전력 소비(즉, 100% 전력)를 유지하고 단일 포트 설계에 필요한 면적의 200%(200% 면적)를 사용하는 고밀도(high-density)의 2-포트 메모리(또는 이중 포트 메모리)의 일례를 도시한다. 따라서, 면적 및/또는 전력 소비의 관점에서 이중 포트 또는 2-포트 메모리보다는 오히려 단일 포트 메모리를 사용하는 것에 있어서의 장점이 유의할 수 있다는 것을 알 수 있다.
도 9는 데이터의 2개의 순차적인 스트림들(예컨대, 어드레스들(100 내지 107)을 갖는 데이터의 판독들의 스트림 및 어드레스들(672 내지 679)을 갖는 데이터의 기록들의 스트림)에 대해 병렬로 동작하는 이중 포트 메모리(예컨대, 도 6a의 이중 포트 메모리(612))의 일례를 도시한다. 이들 스트림들은, 예를 들어, ECC 디코더에 의한 상이한 미가공 데이터의 디코딩에서의 반복들에 대응할 수 있거나, 이중 포트 메모리에 저장된 다른 데이터에 대응할 수 있다. 데이터 100 내지 107이 이중 포트 메모리의 포트 A를 통하여 판독되는 한편, 데이터 672 내지 679는 포트 B를 통하여 병렬로 기록된다. 클록 사이클들이 상단 라인을 따라서 도시되어 있다. 매 클록 사이클에서, 판독 동작 및 기록 동작 양측 모두가 병렬로 수행되는 것, 예컨대 클록 사이클 0에서, 어드레스 100을 갖는 데이터는 판독되고 어드레스 672를 갖는 데이터는 기록되는 것, 클록 사이클 1에서, 어드레스 101을 갖는 데이터는 판독되고 어드레스 637을 갖는 데이터는 기록되는 것, 등을 알 수 있다.
도 10은 도 9에 도시된 바와 같이 데이터의 동일한 순차적인 스트림들에 대해 동작하는 2개의 단일 포트 메모리들(예컨대, 도 6c의 단일 포트 메모리들(622a, 622b))의 일례를 도시한다. 도 10의 예에서, 각각의 단일 포트 메모리에는, 홀수 어드레스들을 하나의 단일 포트 메모리에 그리고 짝수 어드레스들을 다른 단일 포트 메모리에 할당함으로써, 논리적 어드레스들의 절반이 할당된다(즉, 논리적 어드레스 공간은 논리적 어드레스 공간의 절반이 각각의 단일 포트 메모리에 할당되어 구획된다). 따라서, 홀수 어드레스들(도 10에서 진하게 음영처리됨)에 대한 액세스들이 제1 단일 포트 메모리(예컨대, 단일 포트 메모리(622a))에 대한 액세스인 한편, 짝수 어드레스들(도 10에서 연하게 음영처리됨)에 대한 액세스는 제2 단일 포트 메모리(예컨대, 단일 포트 메모리(622b))에 대한 액세스들이다. 클록 사이클 0에서, 포트 A 및 포트 B 양측 모두는 짝수 어드레스들(각각 어드레스 100 및 어드레스 672)을 다룬다. 모든 짝수 어드레스들이 동일한 단일 포트 메모리에 할당되기 때문에, 이러한 액세스들이 병렬로 다뤄질 수 없고 하나의 액세스가 일정 클록 사이클을 대기하여야만 하는 이유로, 충돌이 존재한다. 이러한 경우에, 포트 B는 다음 클록 사이클까지 어드레스 672("672(w)")에 액세스하기를 기다린다. 후속하여, 클록 사이클 1에서, 포트 A가 홀수 어드레스, 즉 어드레스 101을 다루는 한편, 포트 B는 짝수 어드레스 672로 병렬로 진행한다. 후속하여, 단일 포트 메모리들 양측 모두는, 포트 A 및 포트 B가 그들이 다루는 시퀀스들에 따라서 홀수 및 짝수 어드레스들에 액세스 할 시에 교대함에 따라, 각각의 클록 사이클에서 병렬로 액세스된다. 라우팅 회로, 예컨대, 라우팅 회로(642)는 각각의 클록 사이클에서 구성들 사이에서 스위칭함으로써 그러한 인터리빙된 액세스를 제공할 수 있다. 따라서, 단지 하나의 액세스를 갖는 초기 클록 사이클 후에, 2개의 시퀀스들이 2개의 단일 포트 메모리들에 대한 병렬 액세스를 가능하게 하는 어드레스들의 홀수/짝수 페어링(pairing)을 보장하도록 오프셋된다. 그러한 배열은 (예컨대, 도 10에 도시된 바와 같이 2개의 시퀀스들을 다루기 위하여) 단일 포트 메모리가 메모리 액세스가 순차적인 응용예들에서 효율적으로 사용되게 할 수 있다.
액세스가 순차적이지 않은 경우(예컨대, 액세스되는 어드레스들이 랜덤하거나, 또는 비순차적인 경우) 단일 포트 메모리의 사용은 어려울 수 있다. 예를 들어, 일부 경우에, 반복 ECC 디코더, 예컨대, LDPC 디코더는 비순차적인 (즉, 도 9 및 도 10에 도시된 바와 같이 순차적인 어드레스들의 스트림들에서 일어나지 않는) 방식으로 메모리에 액세스할 수 있다. 예를 들어, LDPC 디코더가 코드워드와 연관된 확률 데이터를 저장할 수 있고, 솔루션을 발견하려고 시도하기 위하여 확률 데이터의 청크(chunk)들에 액세스할 수 있다. 이러한 청크들은 비순차적으로 액세스될 수 있다. 그러한 시스템은, 포트들 양측 모두가 동일한 단일 포트 메모리로부터 판독하기를 원하는 경우에 일어나는 대기 상태들 때문에, 최대 50%만큼 저하된 처리율을 가질 수 있다. 따라서, 그러한 시스템에서 단일 포트 메모리의 사용은 상당한 영향을 미칠 수 있다.
도 11은 홀수 어드레스들(음영처리 안됨) 및 짝수 어드레스들(음영처리됨)이 각각 할당되는 한 쌍의 단일 포트 메모리들에 대한 포트 A 및 포트 B에 의한 비-순차적 액세스들의 일례를 도시하는데, 즉, 홀수/짝수 어드레스들에 기초하여 논리적 어드레스 공간이 단일 포트 메모리들 사이에서 구획된다. 클록 0에서, 포트들 양측 모두는, 단지 하나(포트 A)가 진행할 수 있고 다른 하나(포트 B)가 대기 상태("6(w)")로 진입하도록, 짝수 어드레스들 4 및 6을 다룬다. 클록 사이클 1에서, 포트 B는 어드레스 6으로 진행하고, 이제 짝수 어드레스 2를 다루는 포트 A는 대기하여야만 한다. 클록 사이클 2에서, 포트 A가 어드레스 2로 진행하는 한편, 포트 B는 어드레스 5를 병렬로 다룬다. 후속하여, 클록 사이클 3에서, 포트들 양측 모두는 포트 B("23(w))에 대해 다른 대기 상태를 요청하는 홀수 어드레스들 47 및 23을 다룬다. 후속하여, 클록 사이클 4에서, 포트 B는 어드레스 23으로 진행하고, 포트 A는 대기 상태("17(w)")에 진입한다. 많은 대기 상태들이 일어날 수 있다는 것을 그리고 처리율이 상당히 영향을 받는다는 것을 알 수 있다.
본 기술의 일례에 따르면, 단일 포트 메모리들은 높은 처리율을 제공하도록 그리고 동일한 단일 포트 메모리에 액세스하라는 동시 요청들과 연관된 대기 상태들을 피하도록 구성될 수 있다. 둘 이상의 단일 포트 메모리들에 저장된 데이터가, 그가 저장되었던 메모리가 어느 것이든, 그의 위치로부터 판독될 수 있는 한편, 데이터는 동일한 클록 사이클에서 다른 단일 포트 메모리에 기록된다. 따라서, 한 쌍의 단일 포트 메모리들의 경우, 판독 액세스로 비지 상태가 아닌 단일 포트 메모리가 어느 것이든 그는 병렬 기회적 기록 액세스를 위하여 사용된다. 이는 데이터를 기록하기 위한 목적지(destination)들이 어드레스들의 단일 포트 메모리들로의 미리결정된 정적 할당(static assignment)(예컨대, 전술된 홀수/짝수 할당 스킴)에 기초하기보다는 오히려 계속되는 판독 액세스들에 따라 동적으로(dynamically) 할당되는 것을 의미한다. 논리-물리적 맵이 특정 데이터가 저장되는 물리적 메모리 내의 위치들을 기록하기 위하여 (즉, 저장된 데이터의 각각의 논리적 어드레스에 대한 물리적 어드레스를 기록하기 위하여) 유지될 수 있고, 따라서 (어느 하나의 단일 포트 메모리 내의 위치에 저장될 수 있는) 데이터를 추적하기 위한 기록을 유지한다. 그러한 스킴은 단일 포트 메모리들이 비-순차적 액세스를 효율적인 방식으로 다루는 것을 가능하게 할 수 있다. (예컨대, 논리-물리적 맵 또는 테이블을 유지하는) 일부 추가 오버헤드(overhead)가 요구될 수 있지만, 비용 및/또는 전력 이익들이 그러한 어떠한 단점보다도 더 클 수 있다.
도 12는 논리적 어드레스들의 단일 포트 메모리들에 대한 동적 할당을 사용하는 한 쌍의 단일 포트 메모리들(예컨대, 도 6c의 단일 포트 메모리들(622a, 622b)) 내에서의 비-순차적 액세스를 다루는 일례를 도시한다. 도 12는 제1 단일 포트 메모리(예컨대, 단일 포트 메모리(622a))에 대한 액세스가 음영처리되지 않은 입력값들에 의해 도시되고 제2 단일 포트 메모리(예컨대, 단일 포트 메모리(622b))에 대한 액세스가 음영처리된 입력값들에 의해 도시된, 도 11에서와 같은 액세스들의 동일한 시퀀스를 도시한다. 본 예에서 단순화를 위하여, 포트 A가 판독들을 다루는 한편, 포트 B는 기록들을 다룬다(다른 예에서, 판독들 및 기록들은 포트들 양측 모두에서 혼합될 수 있다). 클록 사이클 0에서, 포트 A는 논리적 어드레스 4를 갖는 데이터의 제1 단일 포트 메모리 내에서 그것이 저장된 물리적 위치로부터의 판독을 다루는데, 여기에서 포트 B로부터의 논리적 어드레스 6을 갖는 데이터는 제2 단일 포트 메모리에 (즉, 논리적 어드레스 4를 갖는 데이터를 저장하는 위치를 포함하지 않고 대응하는 판독 커맨드로 비지 상태가 아닌 단일 포트 메모리에) 기록된다. 논리적 어드레스 6의 제2 단일 포트 메모리에 대한 할당은 제1 단일 포트 메모리가 비지 상태라는 결정에 응답하여 이루어지고, 동적 할당(미리결정된 할당의 결과가 아님)의 일례이다. 클록 사이클 1에서, 어드레스 2를 갖는 데이터는 제1 단일 포트 메모리가 판독 커맨드로 비지 상태가 아니도록 그리고 포트 B로부터 논리적 어드레스 5를 갖는 데이터를 기록하기 위하여 선택되도록 (데이터가 이미 기록되었던) 제2 단일 포트 메모리로부터 판독된다. 클록 사이클 2에서, 어드레스 47을 갖는 데이터는 제2 단일 포트 메모리가 판독 커맨드로 비지 상태가 아니도록 그리고 논리적 어드레스 23을 갖는 데이터를 기록하기 위하여 선택되도록 제1 단일 포트 메모리로부터 판독된다. 클록 사이클 3에서, 어드레스 17을 갖는 데이터는 제2 단일 포트 메모리가 판독 커맨드로 비지 상태가 아니도록 그리고 논리적 어드레스 8을 갖는 데이터를 기록하기 위하여 선택되도록 제1 단일 포트 메모리로부터 판독된다. 클록 사이클 4에서, 어드레스 20을 갖는 데이터는 제1 단일 포트 메모리가 판독 커맨드로 비지 상태가 아니도록 그리고 논리적 어드레스 11을 갖는 데이터를 기록하기 위하여 선택되도록 제2 단일 포트 메모리로부터 판독된다.
도 11과 도 12를 비교하면, 도 12의 예에서는 대기 상태들이 일어나지 않아서 클록 사이클 0 내지 클록 사이클 4에서 메모리 액세스들(판독들 및 기록들)의 개수가 도 11에서보다 도 12에서 더 크다는 것을 (6개와 비교하여 10개의 액세스들) 알 수 있다. 이는 처리율의 상당한 증가를 나타낸다.
주어진 논리적 어드레스가 2개의 단일 포트 메모리들 중 어느 하나에 할당될 수 있기 때문에, 테이블 또는 맵은 데이터가 저장되는 물리적 위치들을 추적하도록 유지될 수 있다. 도 13a는 메모리 사용 회로(1302)(예컨대, 반복 ECC 디코더, 예컨대 LDPC 디코더, 터보 디코더, 또는 유사 디코더)가 제1 단일 포트 메모리(1304a) 및 제2 단일 포트 메모리(1304b)를 포함하는 메모리 시스템(1300)과 통신하는 일례를 도시한다. 메모리 사용 회로가 판독 및 기록을 동시에 (동일한 클록 사이클에서) 포트들 A 및 B에 송출하는 경우, 메모리 시스템(1300)은 (데이터가 저장되는 메모리가 어느 것이든) 제1 단일 포트 메모리(1304a) 또는 제2 단일 포트 메모리(1304b) 내의 저장된 데이터의 물리적 위치로부터 일정 클록 사이클에서 저장된 데이터를 판독하도록 구성되고, 제1 단일 포트 메모리(1304a) 또는 제2 단일 포트 메모리(1304b) 중 물리적 위치를 포함하지 않는 어느 것이든 그에 대한 일정 클록 사이클에서의 프레시 데이터의 기록을 초기화하도록 구성된다.
메모리 시스템(1300)은 포트들 A 및 B와 단일 포트 메모리들(1304a 내지 1304b) 사이에서 데이터를 라우팅하도록 구성된 라우팅 회로(1306)를 포함한다. 라우팅 회로(1306)는 테이블(1310)에 따라서 라우팅 회로(1306)의 구성을 제어하는 논리 회로(1308)에 접속된다. 예를 들어, 판독 커맨드가 포트 A에서 수신되는 경우, 논리 회로(1308)는, 예컨대 어느 하나의 단일 포트 메모리(1304a 또는 1304b) 내의 물리적 어드레스를 식별하기 위하여 포트 A로부터 논리적 어드레스를 사용하여 테이블(1310)을 검색함으로써, 판독되는 데이터의 위치를 결정하도록 테이블(1310)을 검토할 수 있다. 이어서, 논리 회로(1308)는 판독을 대응하는 물리적 위치로 지향시키기 위하여 라우팅 회로(1306)를 구성한다. 포트 B에서 병렬로 수신된 기록 커맨드는 다른 단일 포트 메모리(1304a 또는 1304b), 즉, 제1 단일 포트 메모리(1304a) 또는 제2 단일 포트 메모리(1304b) 중 물리적 어드레스에 의해 표시되는 물리적 위치를 포함하지 않는 어느 것이든 그로 전송된다. 따라서, 판독이 제1 단일 포트 메모리(1304a) 내의 물리적 위치로 지향되면, 논리 회로(1308)는 단일 포트 메모리들(1304a 및 1304b) 양측 모두가 병렬로 액세스되도록 데이터를 기록할 제2 단일 포트 메모리(1304b) 내의 위치를 선택한다. 논리 회로(1308)는, 예컨대 클록 사이클마다 업데이트함으로써, 임의의 프레시 데이터의 물리적 위치로, 그가 기록될 때, 테이블(1310)을 업데이트하도록 구성될 수 있다.
도 13b는 논리-물리적 변환이 메모리 사용 회로(1302)와 메모리 시스템(1350) 사이에서 수행되는 대안의 배열을 도시한다. 변환 회로(1322)가 메모리 사용 회로(1302)와 메모리 시스템(1350)의 포트들 A 및 B 사이에 위치된다. 논리 회로(1324)는 메모리 사용 회로(1302)로부터 수신된 논리적 어드레스들에 대응하는 물리적 어드레스들을 식별하기 위하여 테이블(1326)을 사용한다. 대응하는 커맨드들이 생성되어 포트들 A 및 B로 전송된다. 예를 들어, 판독 커맨드가 포트 A에 대해 수신되는 경우, 논리 회로(1324)는, 예컨대 어느 하나의 단일 포트 메모리(1304a 또는 1304b) 내의 물리적 어드레스를 식별하기 위하여 수신된 논리적 어드레스를 사용하여 테이블(1326)을 검색함으로써, 판독될 데이터의 위치를 결정하도록 테이블(1326)을 검토할 수 있다. 이어서, 논리 회로(1324)는 판독을 대응하는 물리적 위치로 지향시키기 위하여 변형된 커맨드를 그에 따라서 생성한다. 이는 포트 A 또는 포트 B로 전송될 수 있다. 포트 B에 대해 병렬로 수신된 기록 커맨드는 다른 단일 포트 메모리(1304a 또는 1304b), 즉, 제1 단일 포트 메모리(1304a) 또는 제2 단일 포트 메모리(1304b) 중 물리적 어드레스에 의해 표시되는 물리적 위치를 포함하지 않는 어느 것이든 그로 전송된다. 따라서, 판독이 제1 단일 포트 메모리(1304a) 내의 물리적 위치로 지향되면, 논리 회로(1324)는 단일 포트 메모리들(1304a 및 1304b) 양측 모두가 병렬로 액세스되도록 데이터를 기록할 제2 단일 포트 메모리(1304b) 내의 위치를 선택한다. 논리 회로(1324)는 반복 디코더의 출력 또는 중간 결과들 또는 제1 단일 포트 메모리 또는 제2 단일 포트 메모리 내의 다른 데이터를 기록하기 위한 목적지를 식별하기 위한 수단으로 여겨질 수 있다. 논리 회로(1324)는 또한 논리-물리적 맵에 따른 병렬 판독 동작을 위하여 제1 단일 포트 메모리 또는 제2 단일 포트 메모리 내의 물리적 위치를 식별한다. 기록을 위한 목적지는 제1 단일 포트 메모리 또는 제2 단일 포트 메모리 중 논리-물리적 맵에 의해 판독 동작을 위해 표시되는 물리적 위치를 포함하지 않는 어느 것이든 그로부터 식별될 수 있다.
논리 회로(1324)는 제1 단일 포트 메모리(1304a) 또는 제2 단일 포트 메모리(1304b)에 저장된 데이터의 물리적 위치를 표시하는 테이블(1326)을 업데이트한다. 논리 회로(1324)는 이러한 방식으로 임의의 프레시 데이터의 물리적 위치로 테이블(1326)을 업데이트하도록 구성될 수 있고, 반복 디코더의 출력들 또는 다른 데이터를 기록하기 위하여 식별된 목적지들에 따라 논리-물리적 맵을 업데이트하기 위한 수단으로 여겨질 수 있다. 라우팅 회로(1328)가 본 예에서 메모리 시스템(1350) 내에 제공되지만, 이는 테이블 및 논리 회로를 필요로 하지 않는 단순한 스위치일 수 있고, 단지 2개의 구성들(예컨대, 단일 포트 메모리(1304a)에 대한 포트 A 및 단일 포트 메모리(1304b)에 대한 포트 B, 또는 단일 포트 메모리(1304b)에 대한 포트 A 및 단일 포트 메모리(1304a)에 대한 포트 B)을 가질 수 있다. 다른 예에서, 라우팅 회로(1328)가 제공되지 않을 수 있고, 모든 스위칭 및 라우팅 기능들이 변환 회로(1322), 논리 회로(1324), 및 테이블(1326)에 의해 수행될 수 있다.
도 14는 제1 단일 포트 메모리 또는 제2 단일 포트 메모리 내의 저장된 데이터의 물리적 위치를 표시하는 테이블(1310) 또는 테이블(1326)과 같은 맵 또는 테이블의 일례를 도시한다. 각각의 라인은 좌측 컬럼에 표시된 바와 같은 논리적 어드레스에 대응할 수 있고 대응하는 물리적 어드레스는 우측 컬럼에 있다. 따라서, 본 예의 N개의 논리적 어드레스들에 대해 논리적 어드레스 0을 갖는 데이터는 물리적 어드레스 23에 저장되고, 논리적 어드레스 1을 갖는 데이터는 물리적 어드레스 4에 저장되고, 등이다. 물리적 어드레스들은 제1 단일 포트 메모리와 제2 단일 포트 메모리 사이에서 동일하게 분할되는데, 예컨대 물리적 어드레스들 0 내지 N/2-1이 제1 단일 포트 메모리 내에 있을 수 있고 물리적 어드레스들 N/2 내지 N-1이 제2 단일 포트 메모리 내에 있을 수 있거나, 또는 홀수 물리적 어드레스들이 제1 단일 포트 메모리 내에 있을 수 있고 짝수 물리적 어드레스들이 제2 단일 포트 메모리 내에 있을 수 있거나, 또는 일부 다른 분할이 적용될 수 있다. 판독 요청이 수용되는 경우, 대응하는 물리적 어드레스는 그러한 테이블로부터 신속하게 획득될 수 있고 다른 단일 포트 메모리 내의 물리적 어드레스는 병렬 기록을 위한 목적지로서 식별될 수 있다. 이러한 입력값들은 프레시 데이터가 판독과 함께 병렬로 기록하기 위하여 동적으로 할당됨에 따라 업데이트된다. 그러한 테이블은 단일 포트 메모리들(1304a 및 1304b)과 비교하여 작을 수 있다는 것을 이해할 것이다. 예를 들어, 개별 코드워드 비트에 대한 확률을 나타내기 위하여 7 비트들을 사용하여 디코딩되는 4 KB 코드워드의 경우, 개별 4 KB 코드워드와 연관된 확률 데이터를 저장하는 데 28 KB의 RAM 용량이 필요할 수 있다. 그러한 확률 데이터는 개별적으로 판독 및 기록될 수 있는 청크들로 업데이트될 수 있다. 예를 들어, 청크는 RAM 내의 라인에 대응할 수 있다. 일례에서, 코드워드는 각각의 청크에 대한 확률 데이터가 RAM 내의 개별 라인에 저장된 (예컨대, 이중 포트 메모리 내의 72개의 라인들에 또는 2개의 단일 포트 메모리들 내의 각각 36개의 라인들에 저장된) 72개의 청크들에 대응한다. 72개의 어드레스들을 갖는 그러한 물리적 메모리 공간의 논리-물리적 맵 또는 테이블은 그러한 테이블이 논리-물리적 테이블 또는 맵을 저장하기 위한 수단으로 여겨질 수 있는 작은 추가의 RAM을 사용하여 저장될 수 있도록 RAM 크기의 1% 미만을 나타낼 수 있다.
메모리 시스템(1300, 1350)과 같은 메모리 시스템 내의 한 가지 어려움은 2개의 단일 포트 메모리들의 가능성 있는 균일하지 않은 또는 동등하지 않은 사용, 또는 "바이어스"이다. 도 15는 제1 또는 제2 단일 포트 메모리 내의 물리적 어드레스들에 논리적 어드레스들을 할당하기 위하여 동적 할당을 사용한 한 쌍의 단일 포트 메모리들(예컨대, 도 13a 및 도 13b의 단일 포트 메모리들(1304a, 1304b))에 대한 비-순차적 액세스의 일례를 도시한다. 클록 사이클들이 상단 로우에 표시되고, (어느 포트로부터의) 판독 액세스들이 제2 로우에 표시되고, (어느 포트로부터의) 기록 액세스들이 제3 로우에 표시되고, 바이어스가 제4 로우에 표시된다. 바이어스가 더 많은 데이터로 하여금 하나의 메모리에 저장되게 할 수 있기 때문에, 메모리에 대한 증가된 개수의 기록들을 다룸으로써 일부 추가 용량을 필요로 할 수 있어서 임의의 바이어스를 다루는 것과 연관된 비용이 존재할 수 있게 한다. 2개의 단일 포트 메모리들에 대한 액세스는 음영처리로 도시되어 있는데, 제1 단일 포트 메모리에 대한 액세스는 음영처리되어 있지 않고 제2 단일 포트 메모리에 대한 액세스는 음영처리되어 있다. 클록 사이클들 0 내지 6의 경우, 단지 판독들만 일어나고 이때 바이어스는 존재하지 않는다. 후속하여, 4개의 기록들(논리적 어드레스들 0, 8, 17, 및 47)은 제2 단일 포트 메모리로 지향되어 바이어스가 클록 사이클들 7 내지 10에 걸쳐서 1에서 4로 증가하게 한다. 후속하여, 4개의 판독들(논리적 어드레스들 11, 12, 43, 및 44)은 제2 단일 포트 메모리로 지향되고, 병렬로, 4개의 기록들(논리적 어드레스들 77, 4, 5, 및 33)은 제1 단일 포트 메모리로 지향되고, 그에 의해 클록 사이클들 11 내지 14에 걸쳐서 바이어스를 4에서 다시 0으로 감소시킨다. 바이어스 때문에, 데이터의 n/2개의 청크들을 보유하기에 충분한 용량을 각각 갖는 2개의 단일 포트 메모리들은 (예컨대, 코드워드를 나타내기 위하여 데이터의 n개의 개별적으로 어드레싱가능한 청크들을 사용하는 반복 디코더에 대해) 데이터의 n개의 청크들을 보유하기 위한 용량을 갖는 이중 포트 메모리를 대신하기에 충분하지 않을 수 있다. 바이어스가 크면 클수록, 한 쌍의 단일 포트 메모리들 내에 데이터를 수용하기 위하여 더 많은 추가의 용량이 요구될 수 있다. 일부 반복 디코딩 시스템들의 경우, 단일 포트 메모리들 사이의 논리적 공간의 미리결정된 정적 구획(예컨대, 앞서 논의된 홀수/짝수 구획)은 바이어스 때문에 추가의 25% 메모리 용량을 필요로 할 수 있다.
본 기술의 태양에 따르면, 제1 단일 포트 메모리 및 제2 단일 포트 메모리(예컨대, 1304a 및 1304b)를 포함하는 물리적 메모리 공간에 대한 논리적 어드레스 공간의 논리-물리적 맵이 낮은 바이어스를 제공하기 위하여 초기 맵핑에 따라서 초기화될 수 있다. 예를 들어, 일부 반복 디코더들이 합리적으로 예측가능한 패턴에 따라 데이터에 액세스한다. 디코더 액세스의 모델이 생성될 수 있고 바이어스를 예측하는 데 사용될 수 있다. 그러한 모델은 (예컨대, 테스트 중에, 또는 동작 중에 디코더 출력을 로깅(logging)함으로써) 실제 데이터에 작용하는 반복 디코더의 관찰에 기초할 수 있다. 따라서, 도 15에 도시된 바와 같은 데이터는 시간 경과에 따라 바이어스를 추적하기 위하여 기록될 수 있다. 그러한 모델은 또한 소프트웨어에 의해 시뮬레이션될 수 있다(반복 디코더 출력은 소프트웨어에 의해 예측될 수 있다). 따라서, 발생될 가능성이 있는 최악의 바이어스를 나타내는 최악의 경우의 상황이 얻어질 수 있다. 단일 포트 메모리는 최악의 경우의 바이어스를 수용하도록 그에 따라서 크기설정될 수 있다. 따라서, 최악의 경우의 바이어스가 4인 경우, 도 15에 도시된 바와 같이, 4개의 추가의 라인들이 필요할 수 있다.
디코더에 전력공급되는 경우, RAM 내에 판독할 데이터가 없어서, 전술된 바와 같이 판독으로 비지 상태가 아닌 단일 포트 메모리들에 기록하는 스킴이 어느 하나의 단일 포트 메모리에 데이터를 자유롭게 기록한다. 일부 초기 맵핑이 이러한 상황에 사용될 수 있다. 적절한 초기 맵핑의 선택은 낮은 바이어스를 제공할 수 있고 따라서 더 작은 용량의 메모리의 사용을 허용할 수 있다는 것이 밝혀졌다. 적절한 초기 맵핑의 선택은 디폴트 맵핑 스킴(예컨대, 홀수/짝수 할당, 또는 일부 다른 단순한 할당 스킴)으로 시작하는 것 및 할당들이 변경됨에 따라 바이어스를 모델링하는 것을 포함할 수 있다. 이러한 방식으로, 주어진 사용 패턴에 대해 낮은 바이어스를 제공하는 초기 할당 스킴이 획득될 수 있다. 그러한 초기 할당 스킴은 제품 개발 중에 개발될 수 있고, 하드웨어에 저장될 수 있거나, 펌웨어의 일부로서 저장될 수 있거나, 또는 달리 저장될 수 있다. 일부 경우에, 메모리 액세스의 상이한 패턴을 반영하기 위하여 초기 맵핑이 업데이트될 수 있다.
도 16은 초기 맵핑에 따라 논리적 어드레스 공간의 물리적 메모리 공간으로의 논리-물리적 맵을 초기화시키는 단계(1660)를 포함하는 방법의 일례를 도시하는데, 물리적 메모리 공간은 제1 단일 포트 메모리 및 제2 단일 포트 메모리를 포함한다. 예를 들어, 초기 맵핑은 낮은 바이어스를 제공하는 초기 맵핑을 결정하기 위하여 상이한 맵핑들에 대해 메모리 액세스 패턴들을 시뮬레이션함으로써 획득될 수 있다. 본 방법은 동작의 초기 기간 동안 초기 맵핑에 따라 제1 단일 포트 메모리 및 제2 단일 포트 메모리 내의 위치들에 프레시 데이터를 기록하는 단계(1662)를 추가로 포함한다. 따라서, 초기에 (일부 초기 클록 사이클들 동안), 메모리가 입력값들을 갖지 않거나 입력값들이 거의 없고, 판독들이 전혀 또는 거의 수행되지 않는 경우, 데이터는 초기 맵핑에 의해 표시된 위치들에서 기록된다. 동작의 초기 기간에 후속하여, 본 방법은 일정 클록 사이클에서 프레시 데이터를, 제1 단일 포트 메모리 또는 제2 단일 포트 메모리 중 일정 클록 사이클에서 판독 커맨드로 비지 상태가 아닌 어느 것이든 그에 기록하는 단계(1664)를 포함한다. 따라서, 동작의 초기 기간에 후속하여, 초기 맵핑 또는 임의의 다른 미리결정된 맵핑을 따르는 대신에, 데이터는 단일 포트 메모리에 동적으로 할당되고 판독 커맨드를 수행하는 데 비지 상태가 아닌 단일 포트 메모리가 어느 것이든 그에 기록된다.
도 17은 제품 개발 중에 수행될 수 있는 오프라인 구성 및 제품의 동작 중에 구현될 수 있는 온라인 단계들을 포함하는 본 기술의 태양들을 도시한다. 인터리빙된 단일 포트 메모리들이 사용되고(1770) 및 ECC 인코더들과 같은 하나 이상의 메모리 사용 회로에 커플링될 수 있다. 예를 들어, 단일 이중 포트 메모리보다는 오히려 2개의 단일 포트 메모리들이 사용될 수 있다. 데이터가 뱅크 바이어스("뱅크 바이어스", "메모리 바이어스", 또는 "바이어스", 즉, 논리적 어드레스들의 물리적 어드레스들에 대한 동적 할당을 사용하는 경우 하나의 메모리 또는 뱅크가 다른 뱅크보다 더 많은 기록들을 수신하는 경향)를 최소화하도록 단일 포트 메모리들 내에 배열된다(1772). 따라서, 동작 중에 낮은 바이어스를 위해 메모리 내에 데이터를 배열하도록 초기 맵핑이 생성될 수 있다. 메모리는 최대 바이어스에 따라서 추가된다(1774). 따라서, 2개의 단일 포트 메모리들의 용량은 동일한 응용에 대해 단일 이중 포트 메모리보다 더 클 수 있고, 이때 추가된 메모리는 바이어스를 반영한다. 단계들(1770, 1772, 1774)은 제품 개발 동안, 제품을 고객에게 수송하기 전에, 오프라인으로 수행될 수 있다. 데이터 배열들을 최적화하는 것은 또한 데이터 배열을 업데이트하기 위하여 온라인으로 수행될 수 있다.
제품의 온라인 동작 동안, 정규 판독들 및 기회적 기록들이 수행된다(1776). 정규 판독이 논리-물리적 맵에 의해 표시된 단일 포트 메모리 내의 위치로 지향될 수 있는 한편, 정규 판독과 병렬로 수행되는 기회적 기록은 달리 유휴 상태(idle)인 단일 포트 메모리 내의 위치로 지향될 수 있는데, 이는 그것이 위치를 포함하지 않기 때문이다. 데이터 배열은 단일 포트 메모리들 내에서 논리적 어드레스들을 물리적 어드레스들과 링크시키는 논리-물리적 맵 또는 테이블을 유지함으로써 추적된다(1778). 일부 경우에, 일부 데이터 재배열이 바이어스를 감소시키기 위하여 온라인으로 이루어질 수 있는데, 예컨대 일부 경우에, 어드레스들이 동작 중에 바이어스를 감소시키기 위하여 단일 포트 메모리들 사이에서 스와핑(swapping)될 수 있다. 예를 들어, 액세스의 패턴들을 변화시킴으로써 바이어스를 증가시킬 수 있고, 데이터 맵핑에 대한 일부 변화가 그에 응답하여 이루어질 수 있다.
장치의 일례는 제1 단일 포트 메모리, 제2 단일 포트 메모리, 및 제1 단일 포트 메모리와 통신하고 제2 단일 포트 메모리와 통신하는 하나 이상의 제어 회로를 포함하고, 하나 이상의 제어 회로는 제1 또는 제2 단일 포트 메모리 내의 저장된 데이터의 물리적 위치로부터 일정 클록 사이클에서의 저장된 데이터의 판독을 초기화하도록 구성되고 제1 단일 포트 메모리 또는 제2 단일 포트 메모리 중 저장된 데이터의 물리적 위치를 포함하지 않는 어느 것이든 그에 대한 일정 클록 사이클에서의 프레시 데이터의 기록을 초기화하도록 구성된다.
장치는 제1 단일 포트 메모리 또는 제2 단일 포트 메모리 내의 저장된 데이터의 물리적 위치를 표시하는 테이블을 추가로 포함할 수 있다. 하나 이상의 제어 회로는 프레시 데이터의 물리적 위치로 테이블을 업데이트하도록 구성될 수 있다. 장치는 테이블을 초기화하기 위한 복수의 저장된 초기 테이블 입력값들을 추가로 포함할 수 있고, 하나 이상의 제어 회로는 초기 클록 사이클들에서 복수의 저장된 초기 테이블 입력값들에 의해 표시되는 위치들에 데이터를 기록하도록 구성된다. 장치는 반복 디코더를 추가로 포함할 수 있고, 저장된 데이터 및 프레시 데이터는 디코딩 동작의 비트 확률들을 나타낼 수 있다. 장치는 한 세트의 비휘발성 메모리 셀들을 추가로 포함할 수 있고, 반복 디코더는 한 세트의 비휘발성 메모리 셀들로부터 판독된 데이터를 수신하도록 그리고 한 세트의 비휘발성 메모리 셀들로부터 판독된 데이터의 반복 디코딩을 수행하도록 구성된다. 반복 디코더는 LDPC 디코더일 수 있고, 한 세트의 비휘발성 메모리 셀들은 NAND 플래시 메모리에 형성될 수 있다. LDPC 디코더는 제어기 다이에 형성될 수 있고 NAND 플래시 메모리는 실리콘 기판 위에 활성 영역이 배치된 메모리 셀들의 어레이들의 하나 이상의 물리적 레벨에 모놀리식으로 형성될 수 있다. 장치는 데이터의 n개의 개별적으로 어드레싱가능한 청크들의 저장된 출력들에 대한 액세스를 필요로 하는 반복 디코더를 포함할 수 있고, 제1 단일 포트 메모리 및 제2 단일 포트 메모리는 제1 단일 포트 메모리와 제2 단일 포트 메모리 사이에 메모리 바이어스를 허용하기 위한 초과 용량을 더하여 데이터의 n개의 개별적으로 어드레싱가능한 청크들을 보유하기에 충분한 조합된 용량을 가질 수 있다. 제1 단일 포트 메모리는 제1 SRAM(Static Random Access Memory)일 수 있고, 제2 단일 포트 메모리는 제2 SRAM일 수 있고, 하나 이상의 제어 회로는 반복 ECC 디코더를 포함할 수 있다. 제1 단일 포트 메모리, 제2 단일 포트 메모리 및 하나 이상의 제어 회로는 비휘발성 메모리 시스템의 비휘발성 메모리 인터페이스와 호스트 인터페이스 사이에 개재될 수 있다.
방법의 일례는 초기 맵핑에 따라 논리적 어드레스 공간의 물리적 메모리 공간으로의 논리-물리적 맵을 초기화시키는 단계 - 물리적 메모리 공간은 제1 단일 포트 메모리 및 제2 단일 포트 메모리를 포함함 -; 동작의 초기 기간 동안 초기 맵핑에 따라 제1 단일 포트 메모리 및 제2 단일 포트 메모리 내의 위치들에 프레시 데이터를 기록하는 단계; 및 동작의 초기 기간에 후속하여, 일정 클록 사이클에서 프레시 데이터를, 일정 클록 사이클에서 제1 단일 포트 메모리 또는 제2 단일 포트 메모리 중 판독 커맨드로 비지 상태가 아닌 어느 것이든 그에 기록하는 단계를 포함한다.
본 방법은 동작의 초기 기간에 후속하여, 일정 클록 사이클에서, 저장된 데이터의 일부를, 저장된 데이터의 일부가 논리-물리적 맵에 따라 위치되는 제1 단일 포트 메모리 또는 제2 단일 포트 메모리 내의 물리적 위치로부터 판독하는 단계; 일정 클록 사이클에서, 제1 단일 포트 메모리 또는 제2 단일 포트 메모리 중 저장된 데이터의 일부를 판독하기 위하여 액세스되지 않는 어느 것이든 그에 프레시 데이터를 기록하는 단계; 및 논리-물리적 맵 내의 프레시 데이터의 위치들을 기록하는 단계를 추가로 포함할 수 있다. 본 방법은 RAM 내에 논리-물리적 맵을 유지하는 단계, 각각의 판독에 대해 논리-물리적 맵을 판독하는 단계, 및 제1 단일 포트 메모리 또는 제2 단일 포트 메모리에 대한 각각의 기록에 대해 논리-물리적 맵을 업데이트하는 단계를 추가로 포함할 수 있다. 본 방법은 반복 ECC(Error Correction Code) 디코더에 의해 생성되는 반복들의 모델로부터 초기 맵핑을 생성하는 단계를 추가로 포함할 수 있고, 초기 맵핑은 반복 ECC 디코더 출력들 또는 중간 결과들을 저장하는 데 사용되는 경우 제1 단일 포트 메모리와 제2 단일 포트 메모리 사이에 낮은 바이어스를 제공하도록 생성된다. 초기 맵핑은 낮은 바이어스를 제공하는 할당 스킴을 획득하기 위하여 디폴트 할당 스킴으로부터 제1 단일 포트 메모리와 제2 단일 포트 메모리 사이에서 데이터 할당들을 스와핑함으로써 획득될 수 있다. 본 방법은 한 세트의 비휘발성 메모리 셀들로부터 미가공 데이터를 판독하는 단계; 미가공 데이터에 대해 제1 디코딩 반복을 수행하고, 제1 단일 포트 메모리 또는 제2 단일 포트 메모리에 프레시 데이터로서 제1 디코딩 반복의 결과를 저장하는 단계; 및 후속하여, 제1 단일 포트 메모리 또는 제2 단일 포트 메모리로부터 제1 디코딩 반복의 결과를 판독하고, 후속 디코딩 반복을 수행하는 단계를 추가로 포함할 수 있다. 제1 디코딩 반복 및 후속 디코딩 반복은 LDPC 반복들일 수 있다.
장치의 일례는 반복 디코더, 반복 디코더에 커플링된 제1 단일 포트 메모리, 반복 디코더에 커플링된 제2 단일 포트 메모리, 및 논리-물리적 맵에 따라서 제1 단일 포트 메모리 또는 제2 단일 포트 메모리 내의 물리적 위치로부터 판독과 병렬로 제1 단일 포트 메모리 또는 제2 단일 포트 메모리 내의 반복 디코더의 출력을 기록하기 위한 목적지를 식별하기 위한 수단을 포함하는데, 목적지는 제1 단일 포트 메모리 또는 제2 단일 포트 메모리 중 논리-물리적 맵에 의해 표시되는 물리적 위치를 포함하지 않는 어느 것이든 그로부터 식별된다.
장치는 논리-물리적 맵을 저장하기 위한 수단, 및 반복 디코더의 출력들 또는 중간 결과들을 기록하기 위하여 식별된 목적지들에 따라 논리-물리적 맵을 업데이트하기 위한 수단을 추가로 포함할 수 있다.
본 문헌의 목적상, 명세서 내에서 "일 실시예", "하나의 실시예", "일부 실시예들", 또는 "다른 실시예"에 대한 언급은 상이한 실시예들 또는 동일한 실시예를 기술하는 데 사용될 수 있다.
본 문헌의 목적상, 접속은 직접 접속 또는 (예컨대, 하나 이상의 다른 부품들을 통한) 간접 접속일 수 있다. 일부 경우들에 있어서, 하나의 요소가 다른 요소에 접속되거나 커플링되는 것으로 언급되는 경우, 그 요소는 다른 요소에 직접적으로 접속될 수 있거나, 또는 개재 요소들을 통해 다른 요소에 간접적으로 접속될 수 있다. 하나의 요소가 다른 요소에 직접적으로 접속되는 것으로 언급되는 경우, 그 요소와 다른 요소 사이에는 개재 요소들이 없다. 2개의 디바이스들은, 그들이 직접적으로 또는 간접적으로 접속되어 그들이 그들 사이에서 전자 신호들을 통신할 수 있게 되는 경우에 "통신 중"이다.
본 문헌의 목적상, "~에 기초한"이라는 용어는 "~에 적어도 부분적으로 기초한"으로 해독될 수 있다.
본 문헌의 목적상, 추가 맥락 없이, "제1" 물체, "제2" 물체, 및 "제3" 물체와 같은 숫자와 관련된 용어들의 사용은 물체들의 순차를 암시하는 것이 아니라, 그 대신, 상이한 물체들을 식별하기 위한 식별 목적으로 사용될 수 있다.
본 문헌의 목적상, 물체들의 "세트"라는 용어는 물체들 중 하나 이상의 물체들의 "세트"를 지칭할 수 있다.
전술한 상세한 설명은 예시 및 설명의 목적으로 제시되었다. 그것은 망라하거나 개시된 정확한 형태로 제한하도록 의도되지 않는다. 상기의 교시 내용의 관점에서 많은 수정 및 변형이 가능하다. 기술된 실시예들은 제안된 기술의 원리 및 그의 실제 응용을 가장 잘 설명하기 위해 선택되었고, 이에 의해, 당업자가 다양한 실시예들에서 그리고 심사숙고된 특정 용도에 적합하게 된 바와 같은 다양한 수정예들로 그것을 가장 잘 활용할 수 있게 하였다. 그 범주는 명세서에 첨부된 청구범위에 의해 정의되는 것으로 의도된다.

Claims (15)

  1. 제1 단일 포트 메모리;
    제2 단일 포트 메모리; 및
    상기 제1 단일 포트 메모리와 통신하고 상기 제2 단일 포트 메모리와 통신하는 하나 이상의 제어 회로를 포함하고, 상기 하나 이상의 제어 회로는 상기 제1 또는 제2 단일 포트 메모리 내의 저장된 데이터의 물리적 위치로부터 일정 클록 사이클에서의 상기 저장된 데이터의 판독을 초기화하도록 구성되고 상기 제1 단일 포트 메모리 또는 상기 제2 단일 포트 메모리 중 상기 저장된 데이터의 상기 물리적 위치를 포함하지 않는 어느 것이든 그에 대한 상기 클록 사이클에서의 프레시 데이터의 기록을 초기화하도록 구성되는, 장치.
  2. 제1항에 있어서, 상기 제1 단일 포트 메모리 또는 상기 제2 단일 포트 메모리 내의 상기 저장된 데이터의 물리적 위치를 표시하는 테이블을 추가로 포함하는, 장치.
  3. 제2항에 있어서, 상기 하나 이상의 제어 회로는 상기 프레시 데이터의 물리적 위치로 상기 테이블을 업데이트하도록 구성된, 장치.
  4. 제3항에 있어서, 상기 테이블을 초기화하기 위한 복수의 저장된 초기 테이블 입력값들을 추가로 포함하고, 상기 하나 이상의 제어 회로는 초기 클록 사이클들에서 상기 복수의 저장된 초기 테이블 입력값들에 의해 표시되는 위치들에서 데이터를 기록하도록 구성된, 장치.
  5. 제1항에 있어서, 반복 디코더를 추가로 포함하고, 상기 저장된 데이터 및 상기 프레시 데이터는 디코딩 동작의 반복들을 나타내는, 장치.
  6. 제5항에 있어서, 한 세트의 비휘발성 메모리 셀들을 추가로 포함하고, 상기 반복 디코더는 상기 한 세트의 비휘발성 메모리 셀들로부터 판독된 데이터를 수신하도록 그리고 상기 한 세트의 비휘발성 메모리 셀들로부터 판독된 상기 데이터의 반복 디코딩을 수행하도록 구성된, 장치.
  7. 제6항에 있어서, 상기 반복 디코더는 LDPC(Low Density Parity Check) 디코더이고, 상기 한 세트의 비휘발성 메모리 셀들은 NAND 플래시 메모리에 형성된, 장치.
  8. 제1항에 있어서, 상기 제1 단일 포트 메모리는 제1 SRAM(Static Random Access Memory)이고, 상기 제2 단일 포트 메모리는 제2 SRAM이고, 상기 하나 이상의 제어 회로는 반복 ECC(Error Correction Code) 디코더를 포함하는, 장치.
  9. 제1항에 있어서, 상기 제1 단일 포트 메모리, 상기 제2 단일 포트 메모리 및 상기 하나 이상의 제어 회로는 비휘발성 메모리 시스템의 비휘발성 메모리 인터페이스와 호스트 인터페이스 사이에 개재된, 장치.
  10. 초기 맵핑에 따라 논리적 어드레스 공간의 물리적 메모리 공간으로의 논리-물리적 맵을 초기화시키는 단계 - 상기 물리적 메모리 공간은 제1 단일 포트 메모리 및 제2 단일 포트 메모리를 포함함 -;
    동작의 초기 기간 동안 상기 초기 맵핑에 따라 상기 제1 단일 포트 메모리 및 상기 제2 단일 포트 메모리 내의 위치들에 프레시 데이터를 기록하는 단계; 및
    동작의 상기 초기 기간에 후속하여, 일정 클록 사이클에서 프레시 데이터를, 상기 제1 단일 포트 메모리 또는 상기 제2 단일 포트 메모리 중 상기 클록 사이클에서 판독 커맨드로 비지(busy) 상태가 아닌 어느 것이든 그에 기록하는 단계를 포함하는 방법.
  11. 제10항에 있어서,
    동작의 상기 초기 기간에 후속하여, 상기 클록 사이클에서의 저장된 데이터의 일부를, 상기 저장된 데이터의 일부가 상기 논리-물리적 맵에 따라 위치되는 상기 제1 단일 포트 메모리 또는 상기 제2 단일 포트 메모리 내의 물리적 위치로부터 판독하는 단계;
    상기 제1 단일 포트 메모리 또는 상기 제2 단일 포트 메모리 중 상기 저장된 데이터의 일부를 판독하기 위하여 액세스되지 않는 어느 것이든 그에 상기 클록 사이클에서 프레시 데이터를 기록하는 단계; 및
    상기 논리-물리적 맵 내의 프레시 데이터의 위치들을 기록하는 단계를 추가로 포함하는, 방법.
  12. 제11항에 있어서, RAM(Random Access Memory) 내에 상기 논리-물리적 맵을 유지하는 단계, 각각의 판독에 대해 상기 논리-물리적 맵을 판독하는 단계, 및 상기 제1 단일 포트 메모리 또는 상기 제2 단일 포트 메모리에 대한 각각의 기록에 대해 상기 논리-물리적 맵을 업데이트하는 단계를 추가로 포함하는, 방법.
  13. 제10항에 있어서, 반복 ECC 디코더에 의해 생성되는 반복들의 모델로부터 상기 초기 맵핑을 생성하는 단계를 추가로 포함하고, 상기 초기 맵핑은 반복 ECC 디코더 출력들 또는 중간 결과들을 저장하는 데 사용되는 경우 상기 제1 단일 포트 메모리와 상기 제2 단일 포트 메모리 사이에 낮은 바이어스를 제공하도록 생성되는, 방법.
  14. 제13항에 있어서, 상기 초기 맵핑은 낮은 바이어스를 제공하는 할당 스킴을 획득하기 위하여 디폴트 할당 스킴으로부터 상기 제1 단일 포트 메모리와 상기 제2 단일 포트 메모리 사이에서 데이터 할당들을 스와핑(swapping)함으로써 획득되는, 방법.
  15. 제10항에 있어서,
    한 세트의 비휘발성 메모리 셀들로부터 미가공 데이터를 판독하는 단계;
    상기 미가공 데이터에 대해 제1 디코딩 반복을 수행하고, 상기 제1 단일 포트 메모리 또는 상기 제2 단일 포트 메모리에 프레시 데이터로서 상기 제1 디코딩 반복의 결과를 저장하는 단계; 및
    후속하여, 상기 제1 단일 포트 메모리 또는 상기 제2 단일 포트 메모리로부터 상기 제1 디코딩 반복의 상기 결과를 판독하고, 후속 디코딩 반복을 수행하는 단계를 추가로 포함하는, 방법.
KR1020180115225A 2017-11-28 2018-09-27 기회적 기록들을 갖는 단일 포트 메모리 KR102215495B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/824,038 US10553285B2 (en) 2017-11-28 2017-11-28 Single-port memory with opportunistic writes
US15/824,038 2017-11-28

Publications (2)

Publication Number Publication Date
KR20190062161A true KR20190062161A (ko) 2019-06-05
KR102215495B1 KR102215495B1 (ko) 2021-02-10

Family

ID=66634578

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180115225A KR102215495B1 (ko) 2017-11-28 2018-09-27 기회적 기록들을 갖는 단일 포트 메모리

Country Status (2)

Country Link
US (1) US10553285B2 (ko)
KR (1) KR102215495B1 (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10839894B2 (en) * 2018-06-29 2020-11-17 Taiwan Semiconductor Manufacturing Company Ltd. Memory computation circuit and method
US11200167B2 (en) * 2019-12-10 2021-12-14 Pony Ai Inc. Dynamic memory address encoding
US11475929B2 (en) * 2020-02-27 2022-10-18 Taiwan Semiconductor Manufacturing Company, Ltd. Memory refresh
DE102020133713A1 (de) 2020-02-27 2021-09-02 Taiwan Semiconductor Manufacturing Co., Ltd. Speicheraktualisierung
JP2021179672A (ja) * 2020-05-11 2021-11-18 ソニーセミコンダクタソリューションズ株式会社 メモリモジュール
US11923869B2 (en) * 2022-06-14 2024-03-05 Western Digital Technologies, Inc. Data storage device with dynamic mapping of low-density parity check (LDPC) engines

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20100117295A (ko) * 2009-04-24 2010-11-03 삼성전자주식회사 데이터 저장 장치의 동작 방법 및 이에 따른 데이터 저장 장치
KR20130109240A (ko) * 2011-02-02 2013-10-07 마이크론 테크놀로지, 인크 블록 배향 비휘발성 메모리에 액세스하는 제어 장치 및 방법
KR20130121165A (ko) * 2011-02-02 2013-11-05 마이크론 테크놀로지, 인크 메모리 시스템 내 적어도 반 자율적인 모듈 및 방법
KR20130142941A (ko) * 2012-06-19 2013-12-30 삼성전자주식회사 선형 어드레스 리맵핑 로직을 포함하는 메모리 시스템 및 시스템 온 칩
KR20170012462A (ko) * 2014-05-30 2017-02-02 샌디스크 테크놀로지스 엘엘씨 3차원 메모리 디바이스의 동적 워드 라인 기반 구성을 위한 방법 및 시스템
KR20170047235A (ko) * 2014-08-20 2017-05-04 샌디스크 테크놀로지스 엘엘씨 격리 프로세스의 힐링 효과들을 사용하는 저장 모듈 및 방법
KR20170064625A (ko) * 2015-12-01 2017-06-12 삼성전자주식회사 이중화 저장 장치, 그것을 포함한 서버 시스템 및 그것의 동작 방법
KR20170107769A (ko) * 2016-03-16 2017-09-26 에스케이하이닉스 주식회사 메모리 시스템 및 그의 동작 방법

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6055606A (en) * 1997-09-05 2000-04-25 Sandcraft, Inc. Writeback cache cell with a dual ported dirty bit cell and method for operating such a cache cell
US6996163B2 (en) * 2003-03-27 2006-02-07 Arraycomm, Inc. Walsh-Hadamard decoder
US7181563B2 (en) * 2003-10-23 2007-02-20 Lsi Logic Corporation FIFO memory with single port memory modules for allowing simultaneous read and write operations
US7206251B1 (en) * 2005-03-08 2007-04-17 Altera Corporation Dual port PLD embedded memory block to support read-before-write in one clock cycle
FR2925517B1 (fr) * 2007-12-21 2010-01-08 Bostik Sa Adhesifs sensibles a la pression a pouvoir adhesif stable en temperature.
US8493811B2 (en) * 2010-02-10 2013-07-23 Apple Inc. Memory having asynchronous read with fast read output
US8645609B2 (en) * 2010-12-06 2014-02-04 Brocade Communications Systems, Inc. Two-port memory implemented with single-port memory blocks
US9641464B2 (en) * 2012-04-30 2017-05-02 Nxp Usa, Inc. FIFO buffer system providing same clock cycle response to pop commands
US9003121B2 (en) * 2012-08-16 2015-04-07 Broadcom Corporation Multi-ported memory with multiple access support
US11099746B2 (en) * 2015-04-29 2021-08-24 Marvell Israel (M.I.S.L) Ltd. Multi-bank memory with one read port and one or more write ports per cycle
US11403173B2 (en) * 2015-04-30 2022-08-02 Marvell Israel (M.I.S.L) Ltd. Multiple read and write port memory
US10089018B2 (en) * 2015-05-07 2018-10-02 Marvell Israel (M.I.S.L) Ltd. Multi-bank memory with multiple read ports and multiple write ports per cycle
US10168938B2 (en) * 2016-11-25 2019-01-01 Hughes Network Systems, Llc LDPC decoder design to significantly increase throughput in ASIC by utilizing pseudo two port memory structure
US20180188972A1 (en) * 2016-12-30 2018-07-05 Intel Corporation Matrix storage using data shifting memory
US10230395B2 (en) * 2017-03-31 2019-03-12 Sandisk Technologies Llc Determining codebooks for different memory areas of a storage device

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20100117295A (ko) * 2009-04-24 2010-11-03 삼성전자주식회사 데이터 저장 장치의 동작 방법 및 이에 따른 데이터 저장 장치
KR20130109240A (ko) * 2011-02-02 2013-10-07 마이크론 테크놀로지, 인크 블록 배향 비휘발성 메모리에 액세스하는 제어 장치 및 방법
KR20130121165A (ko) * 2011-02-02 2013-11-05 마이크론 테크놀로지, 인크 메모리 시스템 내 적어도 반 자율적인 모듈 및 방법
KR20130142941A (ko) * 2012-06-19 2013-12-30 삼성전자주식회사 선형 어드레스 리맵핑 로직을 포함하는 메모리 시스템 및 시스템 온 칩
KR20170012462A (ko) * 2014-05-30 2017-02-02 샌디스크 테크놀로지스 엘엘씨 3차원 메모리 디바이스의 동적 워드 라인 기반 구성을 위한 방법 및 시스템
KR20170047235A (ko) * 2014-08-20 2017-05-04 샌디스크 테크놀로지스 엘엘씨 격리 프로세스의 힐링 효과들을 사용하는 저장 모듈 및 방법
KR20170064625A (ko) * 2015-12-01 2017-06-12 삼성전자주식회사 이중화 저장 장치, 그것을 포함한 서버 시스템 및 그것의 동작 방법
KR20170107769A (ko) * 2016-03-16 2017-09-26 에스케이하이닉스 주식회사 메모리 시스템 및 그의 동작 방법

Also Published As

Publication number Publication date
US10553285B2 (en) 2020-02-04
US20190164610A1 (en) 2019-05-30
KR102215495B1 (ko) 2021-02-10

Similar Documents

Publication Publication Date Title
US10394706B2 (en) Non-volatile storage with adaptive command prediction
KR102215495B1 (ko) 기회적 기록들을 갖는 단일 포트 메모리
CN109119120B (zh) 非易失性存储器子区块擦除干扰管理方案
CN107958677B (zh) 具有智能温度感测和局部限制的非易失性存储器
CN108573733B (zh) 具有编程失败恢复的非易失性存储器
US10403377B2 (en) Non-volatile storage with adaptive redundancy
US9785357B2 (en) Systems and methods for sampling data at a non-volatile memory system
US10579548B2 (en) Adaptive interleaving of data transfer requests
CN110800059B (zh) 非易失性存储装置和操作非易失性存储装置的方法
US10534738B2 (en) Host bus adaptor with configurable interface
US10452471B2 (en) Non-volatile memory with dynamic write abort detection and recovery
CN111292792B (zh) 3d存储器中的晶体管阈值电压维持
US9633738B1 (en) Accelerated physical secure erase
US10068656B2 (en) Non-volatile memory with multi-pass programming
US20190107957A1 (en) Non-volatile memory with regional and inter-region wear leveling
US10558576B2 (en) Storage device with rapid overlay access
US20190035480A1 (en) Non-volatile Memory With Methods To Reduce Creep-Up Field Between Dummy Control Gate And Select Gate
US20180342304A1 (en) System and method for string-based erase verify to create partial good blocks
EP3613047B1 (en) Non-volatile memory with reduced program speed variation
US9760481B2 (en) Multiport memory
US10096355B2 (en) Dynamic management of programming states to improve endurance
US11442666B2 (en) Storage system and dual-write programming method with reverse order for secondary block
US11437104B2 (en) Storage system and method for a hybrid quad-level cell (QLC) write scheme for reduced random access memory (RAM) footprint
US11651800B2 (en) Sense amplifier mapping and control scheme for non-volatile memory
US9620201B1 (en) Storage system and method for using hybrid blocks with sub-block erase operations

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant