KR102321221B1 - 버퍼 상에서 메모리 동작을 제어하기 위한 장치 및 방법 - Google Patents
버퍼 상에서 메모리 동작을 제어하기 위한 장치 및 방법 Download PDFInfo
- Publication number
- KR102321221B1 KR102321221B1 KR1020197036807A KR20197036807A KR102321221B1 KR 102321221 B1 KR102321221 B1 KR 102321221B1 KR 1020197036807 A KR1020197036807 A KR 1020197036807A KR 20197036807 A KR20197036807 A KR 20197036807A KR 102321221 B1 KR102321221 B1 KR 102321221B1
- Authority
- KR
- South Korea
- Prior art keywords
- data
- memory device
- cache
- host
- memory
- Prior art date
Links
Images
Classifications
-
- 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
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- 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/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- 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/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
-
- 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/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering 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/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/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- 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
- 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/28—Using a specific disk cache architecture
- G06F2212/283—Plural cache memories
-
- 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/60—Details of cache memory
- G06F2212/601—Reconfiguration of cache memory
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)
- Computer Security & Cryptography (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Read Only Memory (AREA)
- Memory System (AREA)
Abstract
본 개시내용은 버퍼 상에서 메모리 동작을 제어하기 위한 장치 및 방법에 관한 것이다. 예시적인 장치는 메모리 디바이스 및 호스트를 포함한다. 메모리 디바이스는 버퍼 및 메모리 셀의 어레이를 포함하며, 버퍼는 복수의 캐시를 포함한다. 호스트는 시스템 제어기를 포함하며, 시스템 제어기는 버퍼에서의 데이터에 대한 메모리 동작의 수행을 제어하도록 구성된다. 메모리 동작은 복수의 캐시 간의 데이터 이동과 연관된다.
Description
본 개시내용은 일반적으로 메모리 디바이스에 관한 것으로, 더욱 특히, 버퍼 상에서 메모리 동작을 제어하기 위한 장치 및 방법에 관한 것이다.
메모리 디바이스는 통상적으로 컴퓨터 또는 다른 전자 디바이스에서 내부의, 반도체, 집적 회로로서 제공된다. 휘발성 및 비-휘발성 메모리를 포함하는 많은 상이한 유형의 메모리가 있다. 휘발성 메모리는 그의 데이터를 유지하기 위해 전력을 필요로 할 수 있으며, 특히, 랜덤-액세스 메모리(RAM), 동적 랜덤 액세스 메모리(DRAM), 및 동기식 동적 랜덤 액세스 메모리(SDRAM)를 포함할 수 있다. 비-휘발성 메모리는 동력을 공급받지 않을 때 저장된 데이터를 유지함으로써 영구 데이터를 제공할 수 있으며, 특히, NAND 플래시 메모리, NOR 플래시 메모리, 판독 전용 메모리(ROM), 전기적으로 삭제 가능한 프로그램 가능 ROM(EEPROM), 삭제 가능한 프로그램 가능 ROM(EPROM), 및 상 변화 랜덤 액세스 메모리(PCRAM), 저항성 랜덤 액세스 메모리(RRAM), 및 자기 랜덤 액세스 메모리(MRAM)와 같은 저항성 가변 메모리를 포함할 수 있다.
메모리 디바이스는 고체 상태 드라이브(SSD)와 같은 메모리 시스템의 저장 볼륨을 형성하기 위해 함께 조합될 수 있다. 고체 상태 드라이브는, 다양한 다른 유형의 비-휘발성 및 휘발성 메모리 중에서, 비-휘발성 메모리(예컨대, NAND 플래시 메모리 및 NOR 플래시 메모리)를 포함할 수 있으며, 및/또는 휘발성 메모리(예컨대, DRAM 및 SRAM)를 포함할 수 있다.
SSD는, 고체 상태 드라이브가 성능, 크기, 중량, 울퉁불퉁함, 동작 온도 범위, 및 전력 소비에 대하여 하드 드라이브에 비해 이점을 가질 수 있으므로, 컴퓨터에 대한 주 저장 볼륨으로서 하드 디스크 드라이브를 대신하기 위해 사용될 수 있다. 예를 들어, SSD는, 자기 디스크 드라이브와 연관된 탐색 시간, 지연시간, 및 다른 전기 기계 지연을 피할 수 있는, 이동 부품의 부족으로 인해 자기 디스크 드라이브에 비교할 때 우수한 성능을 가질 수 있다.
전자 시스템은 종종, 명령어를 검색하고 실행하며 실행된 명령어의 결과를 적절한 위치로 저장할 수 있는, 다수의 프로세싱 리소스(예컨대, 하나 이상의 프로세서)를 포함한다. 프로세서는 예를 들면, 데이터(예컨대, 하나 이상의 피연산자)에 대한 연산(예컨대, 컴퓨팅 동작)을 수행함으로써 명령어를 실행하기 위해 사용될 수 있는, 산술 논리 유닛(ALU) 회로, 부동 소수점 유닛(FPU) 회로, 및 조합 논리 블록과 같은 다수의 기능 유닛을 포함할 수 있다. 여기에서 사용된 바와 같이, 컴퓨팅 동작은, 예를 들면, AND, OR, NOT, NOT, NAND, NOR 및 XOR과 같은 부울 연산, 및/또는 데이터를 조작하는 것을 수반할 수 있는 다른 동작(예컨대, 많은 다른 가능한 동작 중에서, 반전, 시프트, 산술, 통계)일 수 있다. 예를 들면, 기능 유닛 회로는 다수의 논리 연산을 통해, 피연산자에 대한 덧셈, 뺄셈, 곱셈, 및 나눗셈과 같은, 산술 연산을 수행하기 위해 사용될 수 있다. 상기 설명된 바와 같은 컴퓨팅 동작은, 여기에서 사용된 바와 같이, (예컨대, 종종 프로세싱 리소스와 연관된 기능 유닛을 통한) 데이터 조작을 수반하지 않는 동작을 나타낼 수 있는, "메모리 동작"과 구별될 수 있다. 메모리 동작의 예는 데이터 판독, 데이터 기록, 및 데이터 리프레시 동작을 포함한다.
메모리 디바이스에서 호스트로부터 수신된 데이터는 일시적으로 버퍼에 저장될 수 있다. 예를 들어, 호스트는 데이터를 메모리 디바이스로 전송할 수 있으며, 버퍼는 데이터의 또 다른 부분을 메모리 디바이스에 프로그래밍하는 동안 데이터의 일부분을 저장할 수 있다. 이와 같이, 호스트는 데이터를 메모리 디바이스로 프로그래밍하는 것의 완료까지 또 다른 데이터를 메모리 디바이스로 전송하는 것을 기다릴 필요가 없다. 다양한 방식으로(예컨대, 호스트에 의해) 버퍼의 이용이 유용할 수 있다.
도 1은 본 개시내용의 다수의 실시형태에 따른 버퍼 상에서 메모리 동작의 제어를 위한 컴퓨팅 시스템의 형태에서의 장치의 블록도이다.
도 2는 본 개시내용의 다수의 실시형태에 따른 버퍼 상에서 메모리 동작을 제어하도록 구성된 메모리 디바이스의 형태에서의 장치의 블록도이다.
도 3은 본 개시내용의 다수의 실시형태에 따른 버퍼 상에서 메모리 동작을 제어하도록 구성된 다중평면 메모리 디바이스의 형태에서의 장치의 블록도이다.
도 4는 본 개시내용의 다수의 실시형태에 따른 버퍼 상에서 메모리 동작을 제어하는 것과 연관된 버퍼의 형태에서의 장치의 블록도이다.
도 5는 본 개시내용의 다수의 실시형태에 따른 호스트의 내부에서 유지된 세트 피처 인터페이스의 예를 예시한 표를 예시한다.
도 6은 본 개시내용의 다수의 실시형태에 따른 버퍼 상에서 메모리 동작을 제어하는 것과 연관된 타이밍 도를 예시한다.
도 7은 본 개시내용의 다수의 실시형태에 따른 버퍼 상에서 메모리 동작을 제어하는 것과 연관된 타이밍 도를 예시한다.
도 2는 본 개시내용의 다수의 실시형태에 따른 버퍼 상에서 메모리 동작을 제어하도록 구성된 메모리 디바이스의 형태에서의 장치의 블록도이다.
도 3은 본 개시내용의 다수의 실시형태에 따른 버퍼 상에서 메모리 동작을 제어하도록 구성된 다중평면 메모리 디바이스의 형태에서의 장치의 블록도이다.
도 4는 본 개시내용의 다수의 실시형태에 따른 버퍼 상에서 메모리 동작을 제어하는 것과 연관된 버퍼의 형태에서의 장치의 블록도이다.
도 5는 본 개시내용의 다수의 실시형태에 따른 호스트의 내부에서 유지된 세트 피처 인터페이스의 예를 예시한 표를 예시한다.
도 6은 본 개시내용의 다수의 실시형태에 따른 버퍼 상에서 메모리 동작을 제어하는 것과 연관된 타이밍 도를 예시한다.
도 7은 본 개시내용의 다수의 실시형태에 따른 버퍼 상에서 메모리 동작을 제어하는 것과 연관된 타이밍 도를 예시한다.
본 개시내용은 버퍼 상에서 메모리 동작을 제어하기 위한 장치 및 방법에 관한 것이다. 예시적인 장치는 메모리 디바이스 및 호스트를 포함한다. 메모리 디바이스는 버퍼 및 메모리 셀의 어레이를 포함하며, 버퍼는 복수의 캐시를 포함한다. 호스트는 시스템 제어기를 포함하며, 시스템 제어기는 버퍼에서 데이터에 대한 메모리 동작의 수행을 제어하도록 구성된다. 메모리 동작은 복수의 캐시 간의 데이터 이동과 연관된다.
본 개시내용의 실시형태는 부가적인 메모리 리소스를 호스트에 제공하는 것과 같은 다양한 유익을 제공할 수 있다. 예를 들면, 본 개시내용의 다수의 실시형태는 메모리 디바이스의 내부 버퍼의 데이터에 대해 호스트-개시 동작을 위한 메커니즘을 제공한다. 내부 버퍼 상에서 수행되는 동작을 제어/추적할 수 없는 호스트를 고려해보자. 이러한 접근법에서, 내부 버퍼는 단지 호스트로부터 수신된 데이터를 메모리 디바이스의 메모리 셀의 어레이로 전달하기 때문에 복수의 캐시(예컨대, 내부 버퍼의)는 각각, 예를 들면 호스트에 대한 메모리 리소스로서 인식되지 않는 정적 랜덤 액세스 메모리(SRAM)로서 동작할 수 있다. 이와 같이, 내부 버퍼의 복수의 캐시는 호스트에 메모리 리소스로서 사용되지 않는다.
반대로, 호스트는, 여기에서 설명된 다수의 실시형태에서, 내부 버퍼의 복수의 캐시에서의 데이터에 대한 동작(예컨대, 메모리 동작 및/또는 컴퓨팅 동작)의 수행을 제어하도록 구성될 수 있다. 이와 같이, 호스트는, 예를 들면, 내부 버퍼에 저장된 데이터를 다른 곳으로 이동시키며, 부가적인 메모리 리소스로서 복수의 캐시를 사용할 수 있다. 호스트에 의해 개시되며 내부 버퍼 상에서 수행될 수 있는 동작은 또한, 다양한 다른 유익 중에서, 메모리 디바이스의 신뢰성을 개선하는 것과 연관될 수 있다.
본 개시내용의 다음의 상세한 설명에서, 그 일부를 형성하며, 개시내용의 하나 이상의 실시형태가 어떻게 실시될 수 있는지가 예시로서 도시되는 수반된 도면에 대한 참조가 이루어진다. 이들 실시형태는 이 기술분야의 통상의 기술자가 본 개시내용의 실시형태를 실시할 수 있게 하기 위해 충분히 상세하게 설명되며, 다른 실시형태가 이용될 수 있고 프로세스, 전기적, 및/또는 구조적 변화가 본 개시내용의 범위로부터 벗어나지 않고 이루어질 수 있다는 것이 이해될 것이다.
여기에서 사용된 용어는 단지 특정한 실시형태를 설명할 목적을 위한 것이며, 제한적이도록 의도되지 않는다는 것이 이해될 것이다. 여기에서 사용된 바와 같이, 단수형 형태는, 맥락이 달리 명확하게 지시하지 않는다면, 단수형 및 복수형 지시 대상 모두를 포함할 수 있다. 또한, "다수의", "적어도 하나", 및 "하나 이상", 예컨대, 다수의 메모리 어레이는 하나 이상의 메모리 어레이를 나타낼 수 있는 반면, "복수의"는 이러한 것 중 하나 이상을 나타내도록 의도된다. 더욱이, 단어 "~할 수 있다" 및 "~할 수 있을 것이다"는 본 출원 전체에 걸쳐, 의무적인 의미, 즉 ~해야 한다가 아닌, 허용적 의미, 즉 ~할 가능성이 있는, ~할 수 있는 것으로 사용된다. 용어 "포함시키다" 및 이의 파생어는 "~로 제한되지 않지만, ~를 포함하는"을 의미한다. 용어 "결합된" 및 "결합한"은 맥락에 대해 적절한 경우, 물리적으로 또는 명령 및/또는 데이터로의 액세스 및 그것의 움직임(송신)을 위해 직접 또는 간접적으로 연결되는 것을 의미한다. 용어 "데이터" 및 "데이터 값"은 맥락에 대해 적절한 경우, 여기에서 상호 교환 가능하게 사용되며 동일한 의미를 가질 수 있다.
여기에서 도면은 첫 숫자 또는 숫자들이 도면 번호에 대응하며 나머지 숫자는 도면에서 요소 또는 구성요소를 식별하는 넘버링 관계를 따른다. 상이한 도면 사이에서의 유사한 요소 또는 구성요소는 유사한 숫자의 사용에 의해 식별될 수 있다. 예를 들면, 126은 도 1에서의 요소 "26"을 언급할 수 있으며, 유사한 요소는 도 4에서 426으로서 언급될 수 있다. 하나의 도면 내에서 다수의 유사한 요소는 하이픈 및 또 다른 숫자 또는 글자에 앞서 참조 숫자를 갖고 언급될 수 있다. 예를 들면, 126-0은 도 1에서 요소 26-0을 언급하고 126-1은 요소 26-1을 언급할 수 있으며, 이것은 요소 26-0과 유사할 수 있다. 이러한 유사한 요소는 일반적으로 하이프 핀 및 추가 숫자 또는 글자 없이 언급될 수 있다. 예를 들면, 요소 126-0 및 126-0은 일반적으로 205로서 언급될 수 있다.
도 1은 본 개시내용의 다수의 실시형태에 따른 버퍼 상에서 메모리 동작의 제어를 위해 컴퓨팅 시스템(100)의 형태에서의 장치의 블록도이다. 여기에서 사용된 바와 같이, 호스트(예컨대, 102), 메모리 디바이스 시스템(예컨대, 104), 호스트 제어기(예컨대, 시스템 제어기(118)), 또는 메모리 디바이스 제어기(예컨대, 디바이스 제어기(120))는 또한 각각 "장치"로서 개별적으로 고려될 수 있다.
컴퓨팅 시스템(100)은 디바이스 인터페이스(108)를 통해 호스트(102)에 결합된 메모리 디바이스 시스템(104)(예컨대, SSD)을 포함한다 여기에서 사용된 바와 같이, "~에 결합된”은, 유선 또는 무선에 관계없이, 전기적, 광학적, 자기적 등과 같은 연결을 포함하는, 간접적 통신 연결 또는 직접적 통신 연결(예컨대, 매개 구성요소 없이)일 수 있는, 구성요소 간의 연결을 나타내도록 의도된다. 메모리 디바이스 시스템(104)은 예를 들면, 다수의 SSD를 사용하여 구현된 고체 상태 저장 기기일 수 있다. 컴퓨팅 시스템(100)은, 호스트의 내부에 있는 제어기(예컨대, 시스템 제어기(118)) 외에, 메모리 디바이스 시스템(104) 내부에 있는 제어기(예컨대, 디바이스 제어기(120))를 포함할 수 있다. 디바이스 제어기(120)는 다수의 적절한 메모리 인터페이스(도시되지 않음)를 통해 메모리 디바이스 시스템(104)에서의 다수의 메모리 리소스에 결합될 수 있다. 메모리 리소스는, 다수의 실시형태에서, 휘발성 메모리 디바이스(예컨대, DRAM, SRAM 등) 및/또는 비-휘발성 메모리 디바이스(예컨대, NAND, NOR 등)를 포함할 수 있는, 메모리 디바이스(124-0, ..., 124-N-1)와 같은, 다수의 SSD 메모리 리소스를 포함할 수 있다.
예시적인 호스트(102)는 다른 호스트 시스템 중에서, 랩탑 컴퓨터, 개인용 컴퓨터, 디지털 카메라, 디지털 레코딩 및 재생 디바이스, 이동 전화, PDA(개인용 디지털 보조기), 메모리 카드 판독기, 및 인터페이스 허브를 포함할 수 있다. 호스트 인터페이스(106)는 호스트 구성요소와의 상호작용을 위한 다른 커넥터 및 인터페이스 중에서, 직렬 고급 기술 접속(SATA), 주변 구성요소 상호접속 고속(PCIe), 또는 범용 직렬 버스(USB)를 포함할 수 있다. 디바이스 인터페이스(108)와 조합한 호스트 인터페이스(106)는 메모리 디바이스(104)와 호스트(102) 사이에서 제어, 어드레스, 데이터, 및 다른 신호를 전달하기 위한 인터페이스를 제공할 수 있다.
호스트(102)는 메모리 및 버스 제어(107)에 결합된 다수의 프로세서(105)(예컨대, 병렬 프로세서, 코-프로세서, 중앙 처리 유닛(CPU) 등)를 포함할 수 있다. 프로세서(105)는 예를 들면, 다수의 마이크로프로세서, 또는 다수의 애플리케이션-특정 집적 회로(ASIC)와 같은, 몇몇 다른 유형의 제어 회로일 수 있다. 컴퓨팅 시스템(100)의 다른 구성요소가 또한 프로세서를 가질 수 있다. 메모리 및 버스 제어(107)는 메모리(116) 및/또는 이에 결합된 다른 구성요소를 가질 수 있다. 이 예에서, 주변 및 버스 제어(109)는 (예컨대, 호스트 인터페이스(106)를 통해서) 호스트 메모리(116), (예컨대, 범용 직렬 버스(USB) 인터페이스를 통해서) 플래시 드라이브(도시되지 않음), 비-휘발성 메모리 호스트 제어 인터페이스(NVMHCI) 플래시 메모리(도시되지 않음), 및/또는 (예컨대, 시스템 제어기(118)를 통해서 그리고 디바이스 인터페이스(108)를 통해) 메모리 디바이스 시스템(104)에 결합될 수 있다. 메모리 디바이스 시스템(104)은 다수의 상이한 컴퓨팅 시스템에서 하드 디스크 드라이브(HDD) 외에, 또는 그 대신에 사용될 수 있다. 도 1에 예시된 컴퓨팅 시스템(100)은 이러한 시스템의 일례이지만, 본 개시내용의 실시형태는 도 1에 도시된 구성으로 제한되지 않는다.
일례로서, 메모리 디바이스 시스템(104)은 SSD일 수 있다. 메모리 디바이스 시스템(104)은 버스(예컨대, 버스(122-0, ..., 122-N-1))를 통해 다수의 메모리 리소스(예컨대, 메모리 디바이스(124-0, ..., 124-N-1))에 결합된 디바이스 제어기(120)(예컨대, 메모리 제어 회로, 펌웨어 및/또는 소프트웨어)를 포함할 수 있다. SSD 메모리 리소스의 예는 도 2 및 도 3과 관련되어 추가로 설명된다. 단일 유닛 메모리 디바이스(230)에 디바이스 제어기(120)를 결합하기 위한 버스(예컨대, 핀)의 예는 (예컨대, 입력/출력(I/O) 라인(I/O0, I/O1, …, I/O7)으로서, 그러나 이러한 I/O 라인의 수는 8개의 I/O 라인으로 제한되지 않고) (232)로 도시되며 도 2와 관련하여 설명된다. 복수의 평면(343)을 포함하는, 다중평면 메모리 디바이스(340)에 디바이스 제어기(120)를 결합하기 위한 버스(예컨대, 핀)의 예는 (예컨대, DQ 버스(DQ0, DQ1, ..., DQ7로서, 그러나, 이러한 데이터(DQ) 버스의 수는 8개의 I/O 라인에 제한되지 않고) (342)로 도시되며 도 3과 관련하여 설명된다. 도 2에 도시된 I/O 라인(232)을 가진 단일 유닛 메모리 디바이스(230) 및 도 3에 도시된 DQ 버스(342)를 가진 다중평면 메모리 디바이스(340)는 예로서 제공되지만; 본 개시내용의 실시형태는 이들 예로 제한되지 않는다.
시스템 제어기(118)는 호스트(102)와의 통신을 위한 호스트 인터페이스(106) 및 버스(122-0, ..., 122-N-1)를 통한 메모리 디바이스(124-0, ..., 124-N-1)와의 통신(예컨대, 232 및/또는 342)을 위한 디바이스 인터페이스(108)를 포함한다. 다양한 버스가 또한 메모리 디바이스(140) 및/또는 그의 디바이스 제어기(120)와 시스템 제어기(118) 사이에서 다양한 신호(예컨대, 특히, 데이터 신호, 제어 신호, 및/또는 어드레스 신호)를 전송 및/또는 수신할 수 있다.
시스템 제어기(118)는 메모리 디바이스(124)로 복수의 세트 피처 명령을 발행하도록 구성되는 세트 피처 인터페이스(119)를 포함한다. 세트 피처 인터페이스(119)는, 몇몇 실시형태에서, 시스템 제어기(118)와 연관될 수 있다(예컨대, 이의 부분으로서 형성될 수 있다). 세트 피처 명령을 수신하는 것에 응답하여, 메모리 디바이스(124)는 예를 들면, 버퍼(126) 상에서 메모리 동작을 수행하도록 구성된다. 세트 피처 인터페이스(119)의 실시형태는 519에서 도시되며 도 5와 관련하여 설명된다.
시스템 제어기(118)는 버퍼(126)(예컨대, 126-0, ..., 126-N-1)에서 데이터에 대한 메모리 동작의 수행을 제어하도록 구성될 수 있다. 시스템 제어기(118)에 의해 수행된 동작은 복수의 캐시 간의 데이터 이동과 연관될 수 있다. 도시되고 도 4와 관련하여 설명된 바와 같이, 데이터 이동은, 예를 들면, 버퍼(126)의 제2 캐시가 메모리 리소스로서 외부 제어기(예컨대, 시스템 제어기(118))에 이용 가능하도록 버퍼(126)의 제2 캐시(예컨대, 2차 데이터 캐시(SDC)(427)) 상에 저장된 데이터를 각각의 버퍼(126)의 제1 캐시(예컨대, 1차 데이터 캐시(PDC)(429))로 이동시키는 것을 포함할 수 있다.
제1 및 제2 및/또는 1차 및 2차와 같은 서수는 여기에서 유사한 및/또는 선택 가능하게 결합된 구성요소(예컨대, 데이터의 부분, 및/또는 데이터 캐시 등)를 연관시키고 및/또는 구별하도록 돕기 위해 사용되며 맥락이 달리 명확하게 지시하지 않는다면(예컨대, 인접한 등과 같은 용어를 사용함으로써 등), 구성요소 간에 특정한 순서화 및/또는 관계를 나타내기 위해 사용되지 않는다.
일례로서, 시스템 제어기(118)는 또한 데이터가 버퍼(126)로부터 메모리 셀의 어레이(128)(예컨대, 128-0, ..., 128-N-1)로 프로그래밍되는 동안 제2 캐시(예컨대, SDC(427))의 사용과 연관된 프로그램 보류 명령을 발행하며 데이터의 제1 부분이 제2 캐시(예컨대, SDC(427))로부터 복수의 제1 캐시(예컨대, PDC(429)) 중 하나의 캐시로 이동되도록 제1 명령을 발행하기 위한 요청을 수신하도록 구성될 수 있다. 데이터의 제1 부분은 데이터가 메모리 셀의 어레이(128)로 프로그래밍되는 동안 메모리 셀의 어레이(128)로 프로그래밍되지 않는 비트의 양이다. 이 예에서, 시스템 제어기(118)는 또한 데이터의 제1 부분이 각각의 복수의 제1 캐시의 캐시 상에 저장되는 동안 프로그램 보류 명령과 연관된 동작이 제2 캐시 상에서 수행되도록 프로그램 보류 명령인 제2 명령을 발행하고, 데이터의 제1 부분이 각각의 복수의 제1 캐시로부터 제2 캐시로 이동되도록 제3 명령을 발행하고, 프로그램 재개 명령인 제4 명령을 발행하며, 데이터의 제1 부분이 버퍼(126)로부터 메모리 셀의 어레이로 프로그래밍되도록 제5 명령을 발행하도록 구성될 수 있다. 이와 같이, 프로그램 보류 명령이 발행되기 전에 메모리 셀의 어레이(128)로 이미 프로그래밍된 데이터의 제2 부분은 메모리 셀의 어레이(128)로 재프로그램될 필요가 없다. 복수의 캐시 간에(예컨대, SDC(427) 및 PDC(429-0, ..., 429-N-1) 간에) 데이터를 이동시키는 것과 연관된 추가 세부사항은 도 6과 관련하여 설명된다.
시스템 제어기(118)에 의해 수행된 동작은 버퍼(126)의 복수의 캐시(예컨대, SDC(427) 및/또는 PDC(429))가 메모리 리소스로서 외부 제어기(예컨대, 메모리 디바이스의 외부에 있는 시스템 제어기(118))에 이용 가능하도록 버퍼(126) 상에 저장된 데이터를 호스트(102)로 이동시키는 것을 포함할 수 있다. 예로서, 시스템 제어기(118)는 또한 데이터를 복수의 제1 캐시(예컨대, PDC(429))의 캐시로부터 제2 캐시로, 및 제2 캐시(예컨대, SDC(427))로부터 시스템 제어기(118)로 I/O 라인을 통해 이동되도록 프로그램 보류 상태 동안 제1 명령을 발행하기 위해 구성될 수 있다. 이 예에서, 시스템 제어기(118)는 또한 제2 캐시 및 각각의 복수의 제1 캐시의 캐시의 사용과 연관된 판독 동작을 수행하며, 데이터가 호스트(102)로부터 제2 캐시로, 및 제2 캐시로부터 각각의 복수의 제1 캐시의 캐시로 이동되도록 판독 동작의 완료 시 제2 명령을 발행하기 위해 구성될 수 있다. 데이터를 버퍼(126)로부터 호스트(102)로 이동시키는 것과 연관된 추가 세부사항은 도 7과 관련하여 설명된다.
시스템 제어기(118)에 의해 수행된 동작은 또한 데이터를 메모리 셀의 어레이(128)로 프로그래밍하는 것과 연관된 실패 이벤트에 응답하여 버퍼(126)를 통해 메모리 셀의 어레이(128)로부터 호스트(102)로 데이터를 이동시키는 것을 포함할 수 있다. 예를 들면, 호스트(102)는 버퍼(126)로부터 메모리 셀의 어레이(128)로 프로그래밍 중인 데이터를 제어/추적하도록 구성될 수 있다. 이와 같이, 또 다른 동작에 의해 중단되는(예컨대, 데이터 프로그래밍을 통해 더 높은 우선순위를 제공받은) 데이터 프로그래밍은 데이터의 손실을 야기하지 않는다.
도 1에 예시된 예는 버스로서 작용하는 단일 디바이스 인터페이스(108)를 포함하지만, 메모리 디바이스 시스템(104)은 별개의 데이터 버스(DQ 버스), 제어 버스, 및/또는 어드레스 버스를 포함할 수 있다. 이러한 버스는, 이에 제한되지 않지만, 개방 NAND 플래시 인터페이스(ONFI), 소형 플래시 인터페이스, 멀티미디어 카드(MMC), 보안 디지털(SD), CE-ATA, 산업용 표준 아키텍처(ISA), 마이크로-채널 아키텍처(MSA), 확장 ISA(EISA), 지능형 드라이브 전자 장치(IDE), VESA 로컬 버스(VLB), 주변 구성요소 상호접속(PCI), 카드 버스, 범용 직렬 버스(USB), 고급 그래픽 포트(AGP), 개인용 컴퓨터 메모리 카드 국제 연관 버스(PCMCIA), 파이어와이어(IEEE 1394), 및 소형 컴퓨터 시스템 인터페이스(SCSI)에 관련된 버스 구조를 포함하는 다양한 유형의 버스 구조를 가질 수 있다. 시스템 제어기(118)는 메모리 디바이스 시스템(104)(예컨대, NV-DDR, NV-DDR2, NV-DDR3 등)과 연관된 다양한 데이터 인터페이스 유형을 지원하도록 구성될 수 있다.
시스템 제어기(118)는, 다수의 실시형태에서, 예를 들면, 호스트(102)와 메모리 디바이스 시스템(104) 사이에서 논리 대 물리 어드레스 변환과 연관된, 플래시 변환 층(FTL)일 수 있는, 변환 구성요소(도시되지 않음)를 포함할 수 있다. 예를 들면, 변환 구성요소는 논리 블록 어드레스(LBA) 대 물리 블록 어드레스(PBA)의 매핑 표를 포함할 수 있다. 여기에서 설명된 페이지, 블록, 평면 및/또는 연관된 워드 라인이 또한 논리 어드레스에서부터 물리 어드레스로 (예컨대, 디바이스 제어기(120)에 의해) 매핑될 수 있다. 도 1에 도시되지 않지만, 디바이스 제어기(120)는 또한 하드웨어, 펌웨어, 및/또는 소프트웨어로 구현되며 메모리 디바이스 시스템(104)의 관리와 다양한 다른 구성요소를 포함할 수 있다.
다수의 메모리 디바이스(124-0, ..., 124-N-1)는, 다수의 실시형태에서, 버퍼(126)(예컨대, 126-1, ..., 126-N-1), 및 메모리 셀의 어레이(128)(예컨대, 128-0, ..., 128-N-1)를 포함할 수 있다. 다수의 실시형태에서, 버퍼(126-0, ..., 126-N-1)의 각각은 각각의 메모리 디바이스(124-0, ..., 124-N-1)의 내부 버퍼일 수 있다(예컨대, 버퍼(126-0)는 메모리 디바이스(124-0)의 내부에 위치된다). 여기에서 예시된 바와 같이, 디바이스 제어기(120)가 다수의 메모리 디바이스(124-0, …, 124-N-1)의 각각에 결합되는 버스(122)(예컨대, 122-0, …, 122-N-1)는 버퍼의 캐시(예컨대, SDC(427))에 결합될 수 있다. 이와 같이, 디바이스 제어기를 통해, 호스트(102)로부터 수신된 데이터 및/또는 신호는 메모리 디바이스(124)의 버퍼(126)에서, 및 그 후 메모리 셀의 어레이(124)에서 수신될 수 있다.
도 2는 본 개시내용의 다수의 실시형태에 따른 버퍼 상에서 메모리 동작을 제어하도록 구성된 메모리 디바이스(230) 형태에서의 장치의 블록도이다. 도 2에 예시된 메모리 디바이스(230)는, 다수의 실시형태에서, 여기에서 설명된 바와 같이, 메모리 동작의 제어를 위해 이용될 수 있는 단일 유닛 메모리 디바이스의 예를 도시한다. 메모리 디바이스(230)는 휘발성 메모리 리소스(예컨대, 다른 휘발성 메모리 디바이스 구성 중에서, DRAM)로서 또는 비-휘발성 메모리 리소스(예컨대, 다른 비-휘발성 메모리 디바이스 구성 중에서, NAND)로서 구성될 수 있다.
도 1과 관련하여 설명된 바와 같이, 도 2에 예시된 메모리 디바이스(230)는 메모리 디바이스(230)를 포함하는 메모리 디바이스 시스템(104)의 내부에 있는 디바이스 제어기(120)에 결합하기 위해(예컨대, 호스트(102)의 내부에 있는 시스템 제어기(118)에 의해, 디바이스 인터페이스(106)를 통해, 지시된 대로 프로그래밍 동작의 입력 및/또는 출력을 위해) 다수의 버스(232)(예컨대, I/O0, I/O1, …, I/O7)를 포함할 수 있다. 메모리 디바이스(230)는, 다수의 실시형태에서, 여기에서 설명된 바와 같이, 복수의 블록을 포함할 수 있다. 일례로서, 단일 블록(예컨대, 231)은 다수의 워드 라인(도시되지 않음)과 연관된 64페이지를 포함할 수 있다. 이 예에서, 각각 단일 워드 라인과 연관된 8개 페이지는 단일 블록(231)에 대해 64페이지를 산출하며, 각각의 워드 라인은 단일 버스(예컨대, 도 2에서의 8개 버스(232))에 결합된다. 다수의 실시형태에서, 각각의 페이지는 2048(2K) 바이트의 데이터 저장 용량을 가질 수 있으며 메모리 디바이스(230)는 1024(1K) 블록을 가질 수 있지만; 본 개시내용의 실시형태는 도 2에 도시된 구성에 제한되지 않는다.
도 2와 관련하여 설명된 각각의 워드 라인은 버스(232)에 결합될 수 있다. 다수의 실시형태에서, 각각의 버스는 하나 이상의 워드 라인에 결합될 수 있다. 예를 들면, 버스(232)당 복수의 워드 라인은 블록(231)당 워드 라인의 수로서 다수의 버스의 수(예컨대, 도 2에서 8) 곱하기 버스(232)당 복수의 워드 라인의 수를 형성하기 위해 블록(231)에서 수직으로 배향될 수 있다(예컨대, 적층될 수 있다).
도 3은 본 개시내용의 다수의 실시형태에 따른 버퍼 상에서 메모리 동작을 제어하도록 구성된 다중평면 메모리 디바이스(340)의 형태에서의 장치의 블록도이다. 도 3에 예시된 다중평면 메모리 디바이스(340)는 다수의 실시형태에서, 버퍼 상에서의 메모리 동작의 제어를 위해 이용될 수 있는 4 평면 메모리 디바이스(실시형태는 2, 4, 8, 16개 등의 평면을 포함할 수 있지만, 예컨대, 343에서 도시된 바와 같이 평면 0, 평면 1, 평면 2, 및 평면 3)의 예를 도시한다. 다중평면 메모리 디바이스(340)의 복수의 평면의 조합은 논리 유닛(LUN)으로 지칭될 수 있다. 다중평면 메모리 디바이스(340)는 휘발성 메모리 리소스(예컨대, 다른 휘발성 메모리 디바이스 구성 중에서, DRAM)로서 또는 비-휘발성 메모리 리소스(예컨대, 다른 비-휘발성 메모리 디바이스 구성 중에서, NAND)로서 구성될 수 있다. 명확을 기하기 위하여, 도 3에 예시된 다중평면 메모리 디바이스(340)는 비-휘발성 NAND 구성으로 이하에서 설명된다.
다수의 실시형태에서, LUN(340)은 도 1과 관련되어 도시되고 설명된 메모리 디바이스 시스템(104)에 대한 저장 용량을 제공할 수 있다. 평면(343)은 다이 또는 칩일 수 있으며, 이것은 조합될 때 LUN(340)으로 지칭될 수 있다. 예를 들어, 평면(343)은 각각이 다수의 다이를 포함하는 다중-칩 패키지(MCP)일 수 있다. 다이는, 예를 들면, NAND 플래시 메모리 셀의 다수의 어레이 및 연관된 주변 회로(예컨대, 기록 회로, 판독 회로, I/O 회로, 버퍼 등)를 포함하는 NAND 다이일 수 있다.
도 1과 관련하여 설명된 바와 같이, 도 3에 예시된 LUN(340)은 메모리 디바이스 시스템(104)의 내부에 있는 디바이스 제어기(120)에 결합하기 위해(예컨대, 호스트(102)의 내부에 있는 시스템 제어기(118)에 의해, 디바이스 인터페이스(106)를 통해, 지시된 대로 프로그래밍 동작의 입력 및/또는 출력을 위해) 다수의 버스(342)(예컨대, 데이터 버스(DQ0, DQ1, ..., DQ7))를 포함할 수 있다. 메모리 평면(343)의 각각은, 다수의 실시형태에서, 여기에서 설명된 바와 같이, 복수의 블록을 포함할 수 있다. 일례로서, 각각의 평면에서 단일 블록(예컨대, 341)은 다수의 워드 라인(도시되지 않음)과 연관된 128페이지를 포함할 수 있다. 이 예에서, 각각이 단일 워드 라인과 연관된 16페이지는 각각의 평면(343)에서 단일 블록(341)에 대해 128페이지를 산출하며, 각각의 워드 라인은 단일 버스(예컨대, 도 3에서 8개 버스(342))에 결합된다. 다수의 실시형태에서, 각각의 페이지는 8192(8K) 바이트의 데이터 저장 용량을 가질 수 있으며 LUN(340)의 각각의 평면(343)은 2048(2K) 블록을 가질 수 있다. 도 3에 예시된 바와 같이, LUN의 평면의 조합은 8192(8K) 블록을 포함할 수 있지만(4 평면 곱하기 평면당 2048블록은 8192블록과 같다); 본 개시내용의 실시형태는 도 3에 도시된 구성에 제한되지 않는다.
도 3과 관련하여 설명된 각각의 워드 라인은 버스(342)에 결합될 수 있다. 다수의 실시형태에서, 각각의 버스는 하나 이상의 워드 라인에 결합될 수 있다. 예를 들어, 버스(342)당 복수의 워드 라인은 블록(341)당 워드 라인의 수로서 다수의 버스의 수(예컨대, 도 3에서 8) 곱하기 버스(342)당 복수의 워드 라인의 수를 형성하기 위해 각각의 평면(343)의 각각의 블록(341)에서 수직으로 배향될 수 있다(예컨대, 적층될 수 있다).
도 3에 도시된 예에서, 평면(0, 1, 2, 및 3)의 각각으로부터의 블록으로부터 형성된 각각의 블록(0, 1, …, 8191)은 유닛으로서 함께 삭제될 수 있는 메모리 셀을 포함한다(예컨대, 각각의 물리 블록에서의 셀은 삭제 유닛으로서 대체로 동시 방식으로 삭제될 수 있다). 각각의 블록은 각각 각각의 워드 라인(예컨대, 액세스 라인)에 결합될 수 있는 메모리 셀의 다수의 물리적 행을 포함할 수 있다. 각각의 블록에서 행의 수는 32, 64, 또는 128일 수 있지만, 실시형태는 특정한 수의 행으로 제한되지 않으며, 이것은 일괄적으로 블록당 행으로 지칭될 수 있다.
이 기술분야의 통상의 기술자가 이해할 바와 같이, 워드 라인에 결합된 각각의 행은 셀의 다수의 물리 페이지를 포함할 수 있다. 셀의 물리 페이지는 함께 또는 기능 그룹으로서 프로그래밍되고/되거나 기록될 수 있는 메모리 셀의 수를 나타낼 수 있다. 예를 들면, 각각의 행은 셀의 다수의 물리 페이지(예컨대, 짝수로 넘버링된 비트 라인에 결합된 셀과 연관된 짝수 페이지, 및 홀수로 넘버링된 비트 라인에 결합된 셀과 연관된 홀수 페이지)를 포함할 수 있다. 부가적으로, 다중레벨 셀을 포함하는 실시형태에 대해, 물리 페이지는 논리 하부 페이지를 향한 비트, 논리 상부 페이지를 향한 비트, 및 논리 중간 페이지의 각각의 수를 향한 하나 이상의 비트를 부여하는 물리 페이지에서의 각각의 셀을 갖고 데이터의 다수의 논리 페이지를 저장할 수 있다.
도 2에 예시된 메모리 디바이스(230)에 대한 예시적인 메모리 리소스로서 설명된 NAND 메모리 디바이스 및/또는 도 3에 예시된 LUN(340)은, 다수의 실시형태에서, 단일 데이터 유닛(예컨대, 1비트)을 저장하도록 구성된 단일 레벨 셀(SLC), 및/또는 하나 이상의 데이터 유닛을 저장하도록 구성된 다중레벨 셀(MLC)을 가진 NAND 다이(예컨대, NAND 플래시 어레이)를 포함할 수 있다. 부가적으로, 셀은, 셀당 저장된 데이터 유닛의 양에 의존할 수 있는, 다양한 상이한 프로그래밍 프로세스를 통해 프로그램 가능할 수 있지만; 셀당 특정한 양의 데이터 유닛(예컨대, 2비트, 3비트, 4비트 등)을 저장하도록 구성된 셀은 상이한 프로그래밍 프로세스를 통해 프로그램 가능할 수 있다. 예를 들면, 3-비트 MLC는 2-패스 프로그래밍 프로세스(예컨대, 제1 프로그래밍 패스가 하부 페이지 및 중간 페이지 데이터 상태에 기초하여 삭제 상태로부터 4개의 분포 중 하나로 셀의 임계 전압을 위치시키며 제2 프로그래밍 패스는 상부 페이지 데이터 상태에 기초하여 4개의 분포 중 하나로부터 8개의 분포 중 하나로 셀의 임계 전압을 위치시키는 4-8 프로세스) 또는 3-패스 프로그래밍 프로세스(예컨대, 2-4-8 프로세스)를 통해 프로그램 가능할 수 있다.
본 개시내용의 실시형태는 도 3에 도시된 예로 제한되지 않는다. 예를 들면, 본 개시내용의 실시형태에 따른 메모리 시스템은 LUN(340)당 4개보다 많거나 또는 적은 평면(343)을 포함할 수 있으며 특정한 메모리 어레이 아키텍처(예컨대, NAND, NOR, DRAM, PCM 등)에 제한되지 않는다. 또한, 하나의 디바이스 제어기(120)가 도 1에서 메모리 디바이스 시스템마다 도시되지만, 실시형태는 도 2에서의 메모리 디바이스(230)당 디바이스 제어기(120) 및/또는 도 3에서의 LUN(340) 또는 이의 평면(343)당 디바이스 제어기(120)(예컨대, NAND 다이당 하나의 제어기)를 포함할 수 있다.
내부 SSD 디바이스 제어기에 결합된 메모리 디바이스 시스템(104)에서의 메모리 디바이스(124)는, 다수의 실시형태에서, 비-휘발성 메모리 리소스(예컨대, NAND)로서 구성된 다수의 SSD일 수 있지만, 실시형태는 그렇게 제한되지 않는다. 다수의 실시형태에서, 메모리 디바이스(124, 230, 및/또는 340)는 호스트(102)로부터의 명령의 수신에 응답하여 버퍼(126)에서의 데이터에 대한 메모리 동작을 수행하도록 구성된다. 호스트(102)로부터의 명령의 수신에 응답하여 버퍼(126)에서의 데이터에 대한 메모리 동작을 수행하는 것은, 도 6 및 도 7과 관련되어 추가로 설명되는 바와 같이, 메모리 리소스로서 버퍼(126)의 복수의 캐시를 사용하는 것과 같은 유익을 제공할 수 있다.
일례로서, 메모리 디바이스(124)는, 호스트로부터의 명령의 수신에 응답하여, 버퍼의 제2 캐시(예컨대, SDC(427)) 및 복수의 제1 캐시(예컨대, PDC(429))의 캐시가 호스트(102)에 메모리 리소스로서 이용 가능하도록 프로그램 보류 상태에 있는 동안 데이터를 버퍼(126)로부터 호스트(102)로 이동시키고, 데이터가 호스트(102) 상에 저장되는 동안 버퍼의 제2 캐시 및 복수의 제1 캐시의 캐시의 사용과 연관된 판독 동작을 수행하며, 판독 동작의 완료 시 데이터를 호스트로부터 버퍼(126)로 이동시키도록 구성될 수 있다.
도 4는 본 개시내용의 다수의 실시형태에 따른 버퍼 상에서 메모리 동작을 제어하는 것과 연관된 버퍼(426)의 형태에서의 장치의 블록도이다. 도 1에서 도시되며 이와 관련하여 설명된 바와 같이, 버퍼(426)는 메모리 디바이스(124)의 내부에 위치되며 버스(122)(예컨대, 도 2 및 도 3과 관련하여 설명된 바와 같이 I/O(232) 또는 DQ(342))를 통해 디바이스 제어기(120)에 결합된다.
도 4에 도시된 바와 같이, 버퍼(426)는 복수의 1차 데이터 캐시(예컨대, PDC(429)) 및 2차 데이터 캐시(예컨대, SDC(427))를 포함하는 복수의 캐시를 포함할 수 있다. SDC(427)는 I/O 라인(432)을 통해 시스템 제어기(118)에 결합될 수 있다. 다수의 실시형태에서, SDC(427)는, I/O(432)(예컨대, 도 1에 설명된 바와 같이 버스(122))를 통해, 디바이스 제어기(120)에 결합되며, 그 후 호스트(102)에 결합되지만, 실시형태는 그렇게 제한되지 않는다. 이와 같이, 버퍼(426)는 복수의 PDC(429-0, ..., 429-N-1)에서 수신하기 전에 SDC에서 호스트(102)로부터 데이터 및/또는 명령을 수신할 수 있다. 복수의 PDC는 SDC(427)에 및 메모리 셀(428)의 어레이(예컨대, 128-0, ..., 128-N-1)에 결합된다. 이와 같이, 버퍼(426)에서 수신된 데이터는 메모리 셀(428)의 어레이로 프로그래밍되기 전에 복수의 PDC(429)에 저장될 수 있다.
단일 SDC(427)가 도 4에 도시되지만, 실시형태는 그렇게 제한되지 않는다. 예를 들면, 버퍼(426)는 복수의 SDC(427)를 포함할 수 있으며, 여기에서 복수의 SDC(427)의 각각은 I/O 라인(432)을 통해 호스트(402)에 및 복수의 PDC(429)(예컨대, 429-0, 429-1, 429-2, ..., 429-N-1)의 세트에 결합된다. 이와 같이, 이 예에서, 버퍼(426)는 각각의 각각의 SDC(427)에 결합된 복수의 I/O 라인(432)을 통해 호스트(402)로부터 데이터 및/또는 신호를 수신할 수 있다.
다수의 실시형태에서, 호스트(402)는, 시스템 제어기(118)를 통해, 복수의 캐시(예컨대, SDC(427) 및/또는 PDC(429)) 상에서 다양한 메모리 동작의 수행을 제어하도록 구성될 수 있다. 예를 들어, 메모리 동작은 버퍼의 복수의 캐시를 리셋하는 것, 버퍼의 복수의 캐시 간에 데이터를 이동시키는 것, 및/또는 복수의 캐시 중 제1 캐시 상에 저장된 데이터를 복수의 캐시 중 제2 캐시 상에 저장된 다른 데이터와 스와핑하는 것을 포함할 수 있다.
다수의 실시형태에서, 시스템 제어기(118)는 또한 복수의 캐시(예컨대, SDC(427) 및/또는 PDC(429))에서의 데이터에 대한 컴퓨팅 동작을 수행하도록 구성될 수 있다. 예를 들어, 시스템 제어기(118)는 복수의 캐시로부터 데이터 이동을 지시하기 위한 명령을 메모리 디바이스(124)로 발행할 수 있다. 데이터는 컴퓨팅 동작을 수행할 때 사용될 수 있는 특정한 컴퓨팅 구성요소로 이동될 수 있으며, 컴퓨팅 동작의 결과는 저장되고/되거나 상이한 곳(예컨대, 버퍼(126), 메모리 셀의 어레이(128), 및/또는 호스트(102))으로 이동될 수 있다.
도 5는 본 개시내용의 다수의 실시형태에 따른 호스트(102)의 내부에 유지된 세트 피처 인터페이스(519)의 예를 예시한 표를 예시한다. 119에서 도시되고 도 1과 관련하여 설명된 바와 같이, 호스트(102)의 내부에 있는 세트 피처 인터페이스(519)는 시스템 제어기(118)와 연관될 수 있다(예컨대, 이의 부분으로서 형성될 수 있다).
다수의 실시형태에서, 도 5에 도시된 세트 피처 인터페이스(519)의 표는 다수의 피처(561)를 포함할 수 있으며, 다수의 피처는 복수의 옵션(552)을 가진다. 세트 피처 인터페이스(519)에서 피처(561) 및/또는 옵션(552)은 명령의 입력을 통해 선택 가능하게 가능해질 수 있다(예컨대, 이용될 수 있다). 명령은, 다양한 실시형태에서, 다른 가능성 중에서, 프로세서(105), 메모리 및 버스 제어(107), 주변 장치 및 버스 제어(109), 호스트 메모리(116), 시스템 제어기(118), 및/또는 사용자(도시되지 않음)로부터 입력될 수 있다.
세트 피처 인터페이스(519)에서의 피처(561)의 예는 버퍼(예컨대, 버퍼(126)) 상에서 수행될 수 있는 페이지 버퍼 동작(563)의 선택에 대한 지시일 수 있다. 예를 들어, 페이지 버퍼 동작(563)은 다수의 실시형태에서, 특정한 I/O 라인(232) 및/또는 데이터 버스(342)(예컨대, (542)로 도시된 (DQ0, DQ1, ..., DQ7))에 대해 선택 가능하게 가능해질 수 있는(예컨대, 지시될 수 있는) 복사 동작(554-1), 리셋 동작(554-2), 및 스왑 동작(554-3)을 포함할 수 있다.
예를 들면, 복사 동작(554-1)은 데이터 버스(DQ6 및 DQ7)에 관하여 가능해질 수 있다. 복사 동작(554-1)을 가능하게 하는 것은 세트 피처 인터페이스(519)에서 데이터 버스(DQ6 및 DQ7)에 대한 0 데이터 값의 입력에 의해 달성될 수 있다. 리셋 동작(554-2)은 가능화될 수 있는 또 다른 옵션(552)이다. 예를 들어, 리셋 동작(554-2)은, 예를 들면, DQ7에 대한 1 데이터 값의 입력 및 DQ6에 대한 0 데이터 값의 입력에 의해 가능화될 수 있다. 스왑 동작(554-3)은 가능화될 수 있는 또 다른 옵션(552)이다. 예를 들어, 스왑 동작은 DQ6에 대한 1 데이터 값의 입력 및 DQ7에 대한 0 데이터 값의 입력에 의해 가능화될 수 있다.
세트 피처 인터페이스(519)에서 피처(561)의 또 다른 예는 평면 선택(565)에 대한 지시일 수 있다. 예를 들어, 특정한 평면을 선택하는 것은, 다수의 실시형태에서, 특정한 DQ(예컨대, 542에서 도시된 DQ0, DQ1, …, DQ7)에 대해 선택 가능하도록 가능화될 수 있다(예컨대, 지시될 수 있다). 예를 들어, 옵션(556-1)은 DQ7에 대한 1 데이터 값의 입력에 의해 PLANE 0(예컨대, 데이터 버스(DQ7)에 할당되는 특정한 평면)을 선택하도록 가능화될 수 있다. 또 다른 예에서, 옵션(556-2)은 DQ6 및 DQ7에 대한 1 데이터 값의 입력에 의해 PLANE 0 및 PLANE 1을 선택하도록 가능화될 수 있다(예컨대, PLANE 1은 데이터 버스(DQ6)에 할당된다). 이와 같이, 복수의 PLANE(예컨대, PLANE 0 및 PLANE 1)은 다수의 데이터 버스(542)에 대한 대응하는 데이터 값(예컨대, 1의 데이터 값)의 입력에 의해 동시에 선택될 수 있다. 예를 들어, 옵션(556-3)은 각각의 평면에 할당되는 모든 데이터 버스에 대한 1 데이터 값의 입력에 의해(예컨대, 4개의 평면이 있을 때 DQ4, DQ5, DQ6, 및 DQ7에 대한 1 데이터 값의 입력에 의해) 모든 PLANE을 선택하도록 가능화될 수 있다.
세트 피처 인터페이스(519)에서 피처(561)의 또 다른 예는 버퍼 선택(567)(예컨대, 단일 캐시)에 대한 지시일 수 있다. 예를 들어, 특정한 캐시를 선택하는 것은 다수의 실시형태에서, 특정한 DQ(예컨대, 542에서 도시된 DQ0, DQ1, …, DQ7)에 대해 선택 가능하게 가능화될 수 있다(예컨대, 지시될 수 있다). 예를 들어, 옵션(558-1)은 DQ7에 대한 1 데이터 값의 입력에 의해 SDC(427)를 선택하도록 가능화될 수 있다. 또 다른 예에서, 옵션(558-2)은 DQ6에 대한 1 데이터 값의 입력에 의해 PDC 0(예컨대, 429-0)을 선택하도록 가능화될 수 있다. 유사하게, 옵션(558-3, 558-4, 및 558-3)은 각각 PDC 1(예컨대, 427-1), PDC 2(예컨대, 427-2), 및 PDC 3(예컨대, 427-3)을 선택하도록 선택 가능하게 가능화될 수 있다. 예를 들어, PDC 1(예컨대, 427-1), PDC 2(예컨대, 427-2), 및 PDC 3(예컨대, 427-3)은 각각 DQ3, DQ4, 및 DQ5에 대한 1 데이터 값의 입력에 의해 선택될 수 있다.
세트 피처 인터페이스(519)에서 피처(561)의 또 다른 예는 버퍼 선택(569)(예컨대, 동시에 다수의 캐시)에 대한 지시일 수 있다. 예를 들어, 특정한 캐시를 선택하는 것은, 다수의 실시형태에서, 특정한 DQ(예컨대, 542에서 도시된 DQ0, DQ1, …, DQ7)에 대해 선택 가능하게 가능화될 수 있다(예컨대, 지시될 수 있다). 예를 들어, 옵션(560-1)은 DQ3, DQ5, 및 DQ7에 대한 1 데이터 값의 입력에 의해 SDC(427), PDC 1(예컨대, 429-1), 및 PDC 3(예컨대, 429-3)을 선택하도록 가능화될 수 있다. 또 다른 예에서, 옵션(560-2)은 DQ3 및 DQ4에 대한 1 데이터 값의 입력에 의해 PDC 2(예컨대, 429-2) 및 PDC 3(예컨대, 429-3)을 선택하도록 가능화될 수 있다.
다른 피처(561) 및/또는 옵션(552)이 세트 피처 인터페이스(519)에서 이용 가능할 수 있다. 또한, 하나 이상의 세트 피처 인터페이스(519)가 컴퓨팅 시스템(100)에 대해 유지될 수 있다. 예를 들어, 다수의 실시형태에서, 복수의 세트 피처 인터페이스(519)는 메모리 디바이스 시스템(104)이 휘발성 메모리 리소스 및/또는 비-휘발성 메모리 리소스를 포함할 수 있는 복수의 메모리 디바이스(124)를 포함할 때 유지될 수 있다.
도 6은 본 개시내용의 다수의 실시형태에 따른 버퍼(626) 상에서 메모리 동작을 제어하는 것과 연관된 타이밍 도를 예시한다. 이 예에서, t1에서, 메모리 디바이스는 (예컨대, 화살표(671)로 표시된 바와 같이) 버퍼(626)로부터 메모리 셀의 어레이(628)로 (예컨대, 호스트(602)로부터 수신된) 프로그래밍 데이터를 개시하도록 구성된다. 다수의 실시형태에서, 데이터를 프로그래밍하는 것은 도 3과 관련하여 설명된 바와 같이 2-패스 또는 3-패스 프로그래밍을 포함할 수 있다. 시간 t2에서, 호스트(602)는 데이터가 프로그래밍되는 동안(예컨대, 시간 t1에서 개시되는 동안) 프로그램 보류 명령을 발행하기 위한 요청을 수신한다. 예로서, 화살표(672)는 프로그램 보류 명령을 발행하기 위한 요청을 나타낸다. 시간 t3에서, (예컨대, 시스템 제어기(118)를 통해) 호스트(602)는 (화살표(673)로 표시된 바와 같이) 메모리 셀의 어레이(628)로 프로그래밍되지 않은 데이터의 일부분이 (예컨대, SDC(427)로부터 PDCx(429)로) 이동되도록 제1 명령을 메모리 디바이스(624)로 발행한다.
화살표(674)로 표시된 바와 같이, 메모리 디바이스(624)는 호스트(602)로부터의 제1 명령의 수신에 응답하여 메모리 셀의 어레이(628)로 프로그래밍되지 않은 데이터의 제1 부분을 버퍼(626)의 제2 캐시로부터 복수의 제1 캐시의 캐시로 이동시키도록 구성된다. 예를 들어, 메모리 셀의 어레이(628)로 프로그래밍되지 않은 데이터의 제1 부분은 버퍼(626)의 SDC(427)에 결합되는 PDC(429) 중 하나(예컨대, PDCx)로 이동되고 그에 저장될 수 있다. 그 결과, SDC(427)는 메모리 리소스로서 호스트(602)에 이용 가능하다. 따라서, 시간 t4에, 호스트(602)는 (예컨대, 화살표(675)로 표시된 바와 같이) 메모리 리소스로서 호스트(602)에 이용 가능한 SDC(427) 및 PDC(429)의 부분을 사용함으로써 프로그램 보류 상태를 개시하기 위해 제2 명령(예컨대, 프로그램 보류 명령)을 발행하며 프로그램 보류 상태와 연관된 동작을 수행할 수 있다.
시간 t5에서, 제3 명령은 데이터의 제1 부분이 그것이 원래 저장된 곳으로 되돌아가도록 (화살표(676)로 표시된 바와 같이) 프로그램 보류 상태와 연관된 동작의 완료 시 호스트(602)로부터 발행될 수 있다. 화살표(677)로 표시된 바와 같이, 메모리 디바이스(624)는 호스트(602)로부터의 제3 명령의 수신에 응답하여 데이터의 제1 부분을 복수의 제1 캐시의 캐시로부터 버퍼의 제2 캐시로 이동시키도록 구성될 수 있다. 예를 들어, PDC(429) 중 하나(예컨대, PDCx)에 저장되는 데이터의 제1 부분은, 시간 t1에서 데이터의 제1 부분이 원래 저장되었던, SDC(427)로 되돌아갈 수 있다. 시간 t6에서, 호스트(602)는 데이터의 제1 부분이 SDC(427)로 되돌아가는 것에 응답하여 (예컨대, 화살표(678)로 표시된 바와 같이) 제4 명령(예컨대, 프로그램 재개 명령)을 발행할 수 있다. 예를 들어, 제4 명령(예컨대, 프로그램 재개 명령)의 발행에 응답하여, 컴퓨팅 시스템(100)은 프로그램 보류 상태를 종료하고 또 다른 상태(예컨대, 프로그램 보류 상태에 진입하기 전 상태)로 진입할 수 있다. 시간 t8에서, 메모리 디바이스는 또한 시간 t7에서 호스트(602)로부터의 (예컨대, 화살표(679)로 표시된 바와 같이) 제5 명령의 수신에 응답하여 (예컨대, 화살표(680)로 표시된 바와 같이) 데이터의 제1 부분을 버퍼(624)로부터 메모리 셀의 어레이(628)로 프로그래밍하도록 구성된다.
프로그램 보류 명령이 발행되기 전에, 메모리 셀의 어레이로 이미 프로그래밍된 데이터의 제2 부분은 메모리 셀의 어레이로 재프로그래밍되지 않는다. 예를 들어, 메모리 디바이스의 내부 버퍼에서 수행되고 있는 메모리 동작을 추적/제어할 수 없는 호스트를 고려하자. 호스트가 어떻게 프로그래밍(예컨대, 도 3과 관련하여 설명된 바와 같이 2-패스 또는 3-패스 프로그래밍)을 완료하는지를 추적할 수 없으므로, 호스트는 전체 데이터가 버퍼로부터 메모리 셀의 어레이로 재기록될 수 있도록 (예컨대, 데이터를 메모리 셀의 어레이로 프로그래밍하는 것이 또 다른 동작에 의해 중단될 때) 데이터를 메모리 디바이스로 재전송할 필요가 있을 것이다.
반대로, 호스트(602)는, 다수의 실시형태에서, 메모리 동작을 추적/제어하기 위한 (예컨대, 버퍼(626)로부터 메모리 셀의 어레이(628)로 프로그래밍 중인 데이터를 추적/제어하는) 능력을 가진다. 이와 같이, 데이터를 버퍼(626)로부터 메모리 셀의 어레이(628)로 프로그래밍하는 것이 더 높은 우선순위를 제공받은 또 다른 동작(예컨대, 프로그램 보류 명령과 연관된 동작)에 의해 중단될 때에도, 전체 데이터는 호스트(602)로부터 재전송될 필요가 없다. 대신에, 호스트(602)는 메모리 디바이스(624)가 PDC(429) 중 하나에 데이터의 제1 부분(예컨대, 메모리 셀의 어레이(628)로 아직 프로그래밍되지 않은)을 저장하며, 메모리 셀(628)의 어레이로 이미 프로그래밍된 데이터의 제2 부분을 재프로그래밍하지 않고 데이터의 제1 부분을 메모리 셀의 어레이(628)로 프로그래밍하는 것을 재개시하도록 구성되도록 명령을 메모리 디바이스(624)로 발행하기 위해 구성된다. 따라서, 버퍼(626)로부터 메모리 셀들의 어레이(628)로 데이터를 프로그래밍하는 것과 연관된 지연시간은 감소될 수 있다.
도 7은 본 개시내용의 다수의 실시형태에 따른 버퍼(726) 상에서 메모리 동작을 제어하는 것과 연관된 타이밍 도를 예시한다. 이 예에서, 시간 t1에서, 호스트(702)는 (예컨대, 화살표(781)로 표시된 바와 같이) 프로그램 보류 상태를 개시하기 위해 제1 명령(예컨대, 프로그램 보류 상태)을 발행한다. 시간 t2에서, 호스트(702)는 (예컨대, 화살표(782)로 표시된 바와 같이) 버퍼(726)에 저장된 데이터를 호스트(702)로 이동시키기 위해 프로그램 보류 상태(예컨대, 제1 명령에 의해 진입된 상태) 동안 제2 명령을 발행한다. 다수의 실시형태에서, 제2 명령은 세트 피처 명령일 수 있다. 예를 들어, 제2 명령은 한 곳에 저장된 데이터를 또 다른 곳으로 이동시키는 복사 명령(554-1)일 수 있다.
제2 명령의 수신에 응답하여, 메모리 디바이스(124)는 (예컨대, 화살표(782)로 표시된 바와 같이) 버퍼(726)로부터 호스트(702)로 (예컨대, 버퍼(726)에 저장된) 데이터를 이동시키도록 구성될 수 있다. 예를 들어, 메모리 디바이스는 PDC(429) 중 하나(예컨대, PDCx)에 저장된 데이터를 SDC(427)로 (예컨대, 화살표(783)로 표시된 바와 같이), 및 시간 t3에서 SDC(427)로부터 호스트(702)로 (예컨대, 화살표(784)로 표시된 바와 같이) 이동시키도록 구성된다. 그 결과, 버퍼(726)의 적어도 두 개의 캐시는 메모리 리소스로서 호스트(702)에 이용 가능하다. 그 결과, 시간 t4에서, 적어도 두 개의 캐시(예컨대, SDC(427) 및 PDC(429) 중 하나)를 사용한 동작은 (예컨대, 화살표(785)로 표시된 바와 같이) 버퍼(726)의 두 개의 캐시에 이전에 저장된 데이터가 호스트(702)(예컨대, 호스트 메모리(116))에 저장되는 동안 수행될 수 있다. 버퍼(726)의 두 개의 캐시를 사용하는 것과 연관된 동작은 예를 들면, 하드 및/또는 소프트 데이터 판독들에서 사용하기 위한 감지 전압 및/또는 판독 기준 전압을 조정하는 것과 연관되는 소프트-비트 판독 동작, 정정된 판독 동작, 캐시 판독 동작, 및/또는 채널 교정을 포함할 수 있다. 다수의 실시형태에서, 소프트 데이터는, 예를 들면, 하드 데이터의 품질 및/또는 신뢰성(예컨대, 하드 데이터를 저장하는 셀의 또는 상이한 데이터를 저장한 셀의 확률에 관한 정보)을 나타낼 수 있다. 따라서, 소프트 데이터는 다른 유익 중에서, 증가된 정확도 및/또는 신뢰도(예컨대, 감소된 에러율), 및/또는 증가된 메모리 수명과 같은 유익을 제공할 수 있다.
시간 t5에서, 호스트(702)는 (예컨대, 화살표(786)로 표시된 바와 같이) SDC(427) 및 PDC(429) 중 하나(예컨대, PDCx) 중 하나와 연관된 동작의 완료 시 제3 명령을 메모리 디바이스(624)(예컨대, 버퍼(726))로 발행할 수 있다. 제3 명령은 세트 피처 명령일 수 있다. 예를 들어, 제3 명령은 데이터를 하나의 곳(예컨대, 호스트(702))으로부터 또 다른 곳(예컨대, 버퍼(726))으로 이동시키는 복사 명령(554-1)일 수 있다. 시간 t6에서, 메모리 디바이스(624)는, (예컨대, 화살표(787)로 표시된 바와 같이) (예컨대, 호스트(702)로부터의 제3 명령의 수신에 응답하여) 데이터를 호스트(702)로부터, 데이터가 호스트(702)로 이동되기 전에 원래 저장된 곳인 버퍼(726)로 이동시키도록 구성된다. 예를 들어, 호스트(702)에 저장되는 데이터(예컨대, SDC(427) 및 PDCx(429)를 사용하는 것과 연관된 동작이 수행되는 동안)는 호스트(702)로부터 SDC(427)로(예컨대, 화살표(788)로 표시된 바와 같이), 및 SDC(427)로부터 PDCx(429)로(예컨대, 화살표(788)로 표시된 바와 같이) 이동될 수 있으며, 여기에서 데이터는 호스트(702)로 이동되기 전에 원래 저장되었다. 시간 t7에서, 호스트(702)는 (예컨대, 화살표(789)로 표시된 바와 같이) 데이터를 PDCx(429)로 이동시키는 것에 응답하여 프로그램 보류 상태를 종료하도록 제4 명령(예컨대, 프로그램 재개 명령)을 발행할 수 있다.
도 7과 관련하여 설명된 실시형태는 호스트-개시 명령을 통해 메모리 디바이스의 신뢰성을 개선하는 것과 같은 유익을 제공한다. 예를 들어, 메모리 셀(128)의 어레이로 프로그래밍된 다음에도 복수의 캐시(예컨대, SDC(427) 및 PDC(429))에 남아있는 데이터(예컨대, 2-패스 또는 3 패스 프로그램을 종료할 때를 나타내는 금지 데이터의 양 및 사용자 데이터의 양을 포함)를 고려하자. 프로그램 보류 명령의 발행(예컨대, 그에 의해 프로그램 보류 상태에 들어감)은 호스트 및/또는 메모리 디바이스가 남아있는 데이터를 복수의 캐시에서 다른 곳(예컨대, 호스트 및/또는 메모리 셀의 어레이)으로 이동시키는 것을 방지할 수 있다. 이와 같이, 적어도 두 개의 캐시를 사용하는 것과 연관된 동작(예컨대, 두 개의 캐시를 이용할 필요가 없는 정상 판독 동작이 아님)은 남아있는 데이터가 복수의 캐시에 저장되는 한 수행되지 않을 수 있다.
반대로, 호스트(702)는, 다수의 실시형태에서, 남아있는 데이터를 복수의 캐시(예컨대, SDC(427) 및 PDC(429))로부터, 호스트 메모리(116)와 같은 다른 곳으로 이동시키도록 구성될 수 있다. 그러므로, 복수의 캐시(예컨대, SDC(427) 및 PDC(429))가 메모리 리소스로서 호스트(702)에 이용 가능하며, 호스트(702)는 두 개의 캐시를 사용하는 것과 연관된 동작을 수행하도록 구성될 수 있다. 이와 같이, 실시형태는, 호스트-개시 명령을 통해 메모리 디바이스의 신뢰성을 개선하는 것과 같은, 유익을 제공한다.
특정 실시형태가 여기에 예시되고 설명되었지만, 이 기술분야의 통상의 기술자는 동일한 결과를 달성하기 위해 산출된 배열이 도시된 특정 실시형태로 대체될 수 있다는 것을 이해할 것이다. 본 개시내용은 본 개시내용의 다수의 실시형태의 각색 또는 변화를 커버하도록 의도된다. 상기 설명은 제한적인 방식이 아닌, 예시적인 것으로 이루어졌다는 것이 이해될 것이다. 상기 실시형태의 조합, 및 여기에서 구체적으로 설명되지 않은 다른 실시형태는 상기 설명의 검토 시 이 기술분야의 숙련자에게 명백할 것이다. 본 개시내용의 다수의 실시형태의 범위는 상기 구조 및 방법이 사용되는 다른 애플리케이션을 포함한다. 그러므로, 본 개시내용의 다수의 실시형태의 범위는, 이러한 청구항이 자격을 부여받은 등가물의 전체 범위와 함께, 첨부된 청구항을 참조하여 설명되어야 한다.
앞서 말한 상세한 설명에서, 몇몇 특징은 개시를 간소화할 목적을 위해 단일 실시형태에서 함께 그룹핑된다. 개시내용의 이러한 방법은 본 개시내용의 개시된 실시형태가 각각의 청구항에서 명확히 나열된 것보다 많은 특징을 사용해야 한다는 의도를 반영한 것으로 해석되지 않을 것이다. 오히려, 다음의 청구항이 반영하는 바와 같이, 발명의 주제는 단일의 개시된 실시형태의 모두보다 적은 특징에 있다. 따라서, 다음의 청구항은 여기에서 상세한 설명으로 통합되며, 각각의 청구항은 별개의 실시형태로서 그 자체로 성립한다.
Claims (20)
- 장치로서,
시스템 제어기를 포함하는 호스트; 및
상기 호스트에 결합된 메모리 디바이스를 포함하되, 상기 메모리 디바이스는,
메모리 셀의 어레이; 및
복수의 캐시를 포함하는 버퍼를 포함하고;
상기 시스템 제어기는 상기 버퍼에서의 데이터에 대한 메모리 동작의 수행을 제어하도록 구성되고; 그리고
상기 메모리 동작은 상기 복수의 캐시 간의 데이터 이동과 연관되고,
상기 시스템 제어기는,
데이터가 상기 버퍼로부터 상기 메모리 셀의 어레이로 프로그래밍되는 동안, 프로그램 보류 명령을 발행하기 위한 요청을 수신하도록;
상기 데이터의 제1 부분이 제2 캐시로부터 복수의 제1 캐시의 캐시로 이동되도록 제1 명령을 상기 메모리 디바이스로 발행하되, 상기 데이터의 상기 제1 부분은 상기 데이터가 상기 메모리 셀의 어레이로 프로그래밍되는 동안 상기 메모리 셀의 어레이로 프로그래밍되지 않는 비트의 양인, 상기 제1 명령을 상기 메모리 디바이스로 발행하도록; 그리고
상기 데이터의 상기 제1 부분이 각각의 복수의 제1 캐시의 상기 캐시 상에 저장되는 동안 상기 제2 캐시 상에서, 프로그램 보류 상태 동안, 특정한 동작이 수행되도록 상기 프로그램 보류 명령인 제2 명령을 상기 메모리 디바이스로 발행하도록 더 구성되는, 장치. - 삭제
- 제1항에 있어서, 상기 시스템 제어기는,
상기 데이터의 상기 제1 부분이 상기 각각의 복수의 제1 캐시의 상기 캐시로부터 상기 제2 캐시로 이동되도록 제3 명령을 상기 메모리 디바이스로 발행하도록;
프로그램 재개 명령인 제4 명령을 상기 메모리 디바이스로 발행하도록; 그리고
상기 데이터의 상기 제1 부분이 상기 버퍼로부터 상기 메모리 셀의 어레이로 프로그래밍되도록 제5 명령을 상기 메모리 디바이스로 발행하도록 더 구성되는, 장치. - 제1항에 있어서, 상기 제1 명령이 발행되기 전에 상기 메모리 셀의 어레이로 이미 프로그래밍된 데이터의 제2 부분은 상기 메모리 셀의 어레이로 재프로그래밍되지 않는, 장치.
- 장치로서,
시스템 제어기를 포함하는 호스트; 및
상기 호스트에 결합된 메모리 디바이스를 포함하되, 상기 메모리 디바이스는,
메모리 셀의 어레이; 및
복수의 캐시를 포함하는 버퍼를 포함하고;
상기 시스템 제어기는 상기 버퍼에서의 데이터에 대한 메모리 동작의 수행을 제어하도록 구성되고; 그리고
상기 메모리 동작은 상기 복수의 캐시 간의 데이터 이동과 연관되고,
상기 시스템 제어기는,
프로그램 보류 상태를 개시하기 위해 프로그램 보류 명령인 제1 명령을 상기 메모리 디바이스로 발행하도록;
데이터가 복수의 제1 캐시의 캐시로부터 제2 캐시로, 그리고 입력/출력(I/O) 라인을 통해 상기 제2 캐시로부터 상기 호스트로 이동되도록 상기 프로그램 보류 상태 동안 제2 명령을 상기 메모리 디바이스로 발행하되, 상기 제2 캐시는 상기 I/O 라인을 통해 상기 호스트에 결합되는, 상기 제2 명령을 상기 메모리 디바이스로 발행하도록;
상기 데이터가 상기 호스트에 저장되는 동안, 상기 제2 캐시 및 상기 각각의 복수의 제1 캐시의 상기 캐시를 사용하여 판독 동작을 수행하도록; 그리고
상기 데이터가 상기 호스트로부터 상기 제2 캐시로 그리고 상기 제2 캐시로부터 상기 각각의 복수의 제1 캐시의 상기 캐시로 이동되도록 상기 판독 동작의 완료 시 제3 명령을 상기 메모리 디바이스로 발행하도록 더 구성되는, 장치. - 제3항 및 제4항 중 어느 한 항에 있어서, 상기 시스템 제어기는 복수의 세트 피처 명령을 상기 메모리 디바이스로 발행하도록 구성된 세트 피처 인터페이스를 포함하는, 장치.
- 제3항 및 제4항 중 어느 한 항에 있어서, 상기 시스템 제어기는 상기 복수의 캐시에서의 데이터에 대한 컴퓨팅 동작을 수행하도록 더 구성되는, 장치.
- 시스템으로서,
메모리 디바이스로서,
메모리 셀의 어레이; 및
제2 캐시에 결합된 복수의 제1 캐시를 포함하는 버퍼를 포함하는, 상기 메모리 디바이스; 및
상기 버퍼에 결합된 호스트를 포함하되, 상기 호스트는,
상기 복수의 제1 캐시의 적어도 일부분 및 상기 제2 캐시가 메모리 리소스로서 상기 호스트에 이용 가능하도록 상기 버퍼로부터 상기 호스트로 데이터를 이동시키게 하는 명령을 상기 메모리 디바이스에 발행하도록; 그리고
상기 데이터가 상기 호스트에 저장되고 있는 동안, 상기 복수의 제1 캐시의 상기 적어도 일부분 및 상기 제2 캐시를 이용해서 후속의 동작을 수행하도록 구성되는, 시스템. - 제8항에 있어서, 상기 명령은 상기 호스트에 의해 발행된 복수의 명령 중 하나이고, 상기 호스트는,
프로그램 보류 상태를 개시시키는 제1 명령을 상기 메모리 디바이스에 발행하도록;
상기 메모리 디바이스로 하여금 상기 복수의 제1 캐시 중 하나의 제1 캐시에 저장된 데이터를 상기 제2 캐시로 그리고 상기 제2 캐시로부터 상기 호스트로 이동시키게 하는 제2 명령을 상기 메모리 디바이스에 발행하도록; 그리고
상기 복수의 제1 캐시 중 상기 하나의 제1 캐시 및 상기 제2 캐시를 이용해서 상기 후속의 동작을 수행하도록 구성되는, 시스템. - 제9항에 있어서, 상기 호스트는, 상기 후속의 동작의 완료 시, 상기 메모리 디바이스로 하여금 상기 데이터를 상기 데이터가 원래 저장되어 있던 상기 복수의 제1 캐시 중 상기 하나의 제1 캐시로 도로 이동시키게끔 하는 제3 명령을 상기 메모리 디바이스에 발행하도록 구성되는, 시스템.
- 제10항에 있어서, 상기 호스트는, 상기 프로그램 보류 상태를 종료시키는 제4 명령을 상기 메모리 디바이스에 발행하도록 구성되는, 시스템.
- 제8항 내지 제11항 중 어느 한 항에 있어서, 상기 후속의 동작은 판독 동작인, 시스템.
- 제8항 내지 제11항 중 어느 한 항에 있어서, 상기 후속의 동작은,
소프트-비트 판독 동작;
정정된 판독 동작;
캐시 판독 동작; 및
채널 교정
으로부터 선택된 동작을 포함하는, 시스템. - 제8항 내지 제11항 중 어느 한 항에 있어서, 상기 호스트는 상기 버퍼로부터 상기 메모리 셀의 어레이로 프로그래밍 중인 데이터를 추적하도록 구성되는, 시스템.
- 방법으로서,
데이터가 메모리 디바이스의 버퍼로부터 상기 메모리 디바이스의 메모리 셀의 어레이로 프로그래밍되는 동안 프로그램 보류 명령을 상기 메모리 디바이스에 발행하는 단계;
상기 데이터의 제1 부분이 상기 어레이로 프로그래밍되는 것을 방지하도록 상기 어레이로 프로그래밍되고 있는 상기 데이터의 상기 제1 부분을 1차 데이터 캐시로부터 2차 데이터 캐시로 이동시키게 하는 제1 명령을 상기 메모리 디바이스에 발행하는 단계;
상기 데이터의 상기 제1 부분이 상기 2차 데이터 캐시로부터 상기 1차 데이터 캐시로 이동하는 것에 후속하여, 프로그램 보류 상태를 개시시키고 그리고 상기 데이터의 상기 제1 부분이 이동된 상기 2차 데이터 캐시를 이용하는 동작을 수행하게 하는 제2 명령을 상기 메모리 디바이스에 발행하는 단계; 및
상기 2차 데이터 캐시를 사용하는 상기 동작의 완료 후에 제3 명령을 발행하는 단계로서, 상기 제3 명령의 실행은 상기 데이터의 상기 제1 부분을 상기 1차 데이터 캐시로 도로 이동시키게 하는, 상기 제3 명령을 발행하는 단계를 포함하는, 방법. - 제15항에 있어서, 상기 데이터의 상기 제1 부분을 상기 2차 데이터 캐시로 도로 이동시킨 후에 상기 메모리 디바이스에 제4 명령을 발행함으로써 상기 프로그램 보류 상태를 종료시키는 단계를 더 포함하는, 방법.
- 제16항에 있어서, 상기 메모리 셀의 어레이에 사전에 프로그래밍되어 있지 않던 상기 데이터의 상기 제1 부분을 상기 메모리 셀의 어레이에 프로그래밍시키게 하는 제5 명령을 상기 메모리 디바이스에 발행하는 단계를 더 포함하는, 방법.
- 삭제
- 삭제
- 삭제
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/609,569 | 2017-05-31 | ||
US15/609,569 US10372353B2 (en) | 2017-05-31 | 2017-05-31 | Apparatuses and methods to control memory operations on buffers |
PCT/US2018/035100 WO2018222692A2 (en) | 2017-05-31 | 2018-05-30 | Apparatuses and methods to control memory operations on buffers |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20190142416A KR20190142416A (ko) | 2019-12-26 |
KR102321221B1 true KR102321221B1 (ko) | 2021-11-04 |
Family
ID=64455017
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020197036807A KR102321221B1 (ko) | 2017-05-31 | 2018-05-30 | 버퍼 상에서 메모리 동작을 제어하기 위한 장치 및 방법 |
Country Status (4)
Country | Link |
---|---|
US (3) | US10372353B2 (ko) |
KR (1) | KR102321221B1 (ko) |
CN (1) | CN110678852B (ko) |
WO (1) | WO2018222692A2 (ko) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11029950B2 (en) | 2019-07-03 | 2021-06-08 | International Business Machines Corporation | Reducing latency of common source data movement instructions |
KR20210155467A (ko) | 2020-06-16 | 2021-12-23 | 에스케이하이닉스 주식회사 | 메모리 시스템, 메모리 컨트롤러 및 메모리 시스템의 동작 방법 |
US11188473B1 (en) * | 2020-10-30 | 2021-11-30 | Micron Technology, Inc. | Cache release command for cache reads in a memory sub-system |
WO2022125909A1 (en) * | 2020-12-11 | 2022-06-16 | Micron Technology, Inc. | Multi-tier cache for a memory system |
US11922011B2 (en) * | 2021-09-01 | 2024-03-05 | Micron Technology, Inc. | Virtual management unit scheme for two-pass programming in a memory sub-system |
US11971826B2 (en) | 2021-09-16 | 2024-04-30 | Sandisk Technologies Llc | Architecture and data path options for compression of soft bit data in non-volatile memories |
US11971829B2 (en) * | 2021-09-16 | 2024-04-30 | Sandisk Technologies Llc | On-the-fly compression scheme for soft bit data in non-volatile memory |
US11901019B2 (en) | 2021-09-16 | 2024-02-13 | Sandisk Technologies Llc | Use of data latches for compression of soft bit data in non-volatile memories |
US11894068B2 (en) | 2021-09-16 | 2024-02-06 | Sandisk Technologies Llc | Efficient sensing of soft bit data for non-volatile memory |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160026406A1 (en) * | 2014-06-05 | 2016-01-28 | Sandisk Technologies Inc. | Methods, systems, and computer readable media for providing flexible host memory buffer |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0348628A3 (en) * | 1988-06-28 | 1991-01-02 | International Business Machines Corporation | Cache storage system |
US5584039A (en) * | 1993-11-08 | 1996-12-10 | International Business Machines Corporation | System for coordinating execution of multiple concurrent channel programs without host processor involvement using suspend and resume commands to control data transfer between I/O devices |
US5539895A (en) * | 1994-05-12 | 1996-07-23 | International Business Machines Corporation | Hierarchical computer cache system |
KR100684873B1 (ko) | 2004-11-22 | 2007-02-20 | 삼성전자주식회사 | 불휘발성 메모리 장치 및 그것의 워드라인 전압 제어 방법 |
ITRM20060139A1 (it) * | 2006-03-13 | 2007-09-14 | Micron Technology Inc | Sistema ad unita di controllo distribuito di dispositivo di memoria |
US8700830B2 (en) | 2007-11-20 | 2014-04-15 | Spansion Llc | Memory buffering system that improves read/write performance and provides low latency for mobile systems |
US8751755B2 (en) | 2007-12-27 | 2014-06-10 | Sandisk Enterprise Ip Llc | Mass storage controller volatile memory containing metadata related to flash memory storage |
JP5026309B2 (ja) * | 2008-03-06 | 2012-09-12 | 株式会社日立製作所 | バックアップデータ管理システム及びバックアップデータ管理方法 |
US8111549B2 (en) | 2009-07-13 | 2012-02-07 | Intel Corporation | Dynamic wordline start voltage for nand programming |
US9021158B2 (en) * | 2009-09-09 | 2015-04-28 | SanDisk Technologies, Inc. | Program suspend/resume for memory |
JP5521816B2 (ja) * | 2010-06-18 | 2014-06-18 | 富士通株式会社 | 記憶装置、制御装置および記憶装置の制御方法 |
KR20120110771A (ko) * | 2011-03-30 | 2012-10-10 | 에스케이하이닉스 주식회사 | 반도체 메모리 장치 및 그 구동방법 |
US9164679B2 (en) * | 2011-04-06 | 2015-10-20 | Patents1, Llc | System, method and computer program product for multi-thread operation involving first memory of a first memory class and second memory of a second memory class |
JP5323170B2 (ja) * | 2011-12-05 | 2013-10-23 | ウィンボンド エレクトロニクス コーポレーション | 不揮発性半導体メモリおよびそのデータの読出し方法 |
US8719507B2 (en) * | 2012-01-04 | 2014-05-06 | International Business Machines Corporation | Near neighbor data cache sharing |
US9311239B2 (en) * | 2013-03-14 | 2016-04-12 | Intel Corporation | Power efficient level one data cache access with pre-validated tags |
US9779025B2 (en) * | 2014-06-02 | 2017-10-03 | Micron Technology, Inc. | Cache architecture for comparing data |
US20170031601A1 (en) | 2015-07-30 | 2017-02-02 | Kabushiki Kaisha Toshiba | Memory system and storage system |
TWI553478B (zh) | 2015-09-23 | 2016-10-11 | 瑞昱半導體股份有限公司 | 能夠使用外部揮發性記憶體的裝置以及能夠釋放內部揮發性記憶體的裝置 |
US10102129B2 (en) * | 2015-12-21 | 2018-10-16 | Intel Corporation | Minimizing snoop traffic locally and across cores on a chip multi-core fabric |
US10152436B2 (en) * | 2016-03-30 | 2018-12-11 | Oracle International Corporation | Mutual exclusion in a non-coherent memory hierarchy |
-
2017
- 2017-05-31 US US15/609,569 patent/US10372353B2/en active Active
-
2018
- 2018-05-30 WO PCT/US2018/035100 patent/WO2018222692A2/en active Application Filing
- 2018-05-30 KR KR1020197036807A patent/KR102321221B1/ko active IP Right Grant
- 2018-05-30 CN CN201880034824.7A patent/CN110678852B/zh active Active
-
2019
- 2019-07-09 US US16/506,020 patent/US10936210B2/en active Active
-
2021
- 2021-02-26 US US17/187,066 patent/US11556251B2/en active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160026406A1 (en) * | 2014-06-05 | 2016-01-28 | Sandisk Technologies Inc. | Methods, systems, and computer readable media for providing flexible host memory buffer |
Also Published As
Publication number | Publication date |
---|---|
US10936210B2 (en) | 2021-03-02 |
KR20190142416A (ko) | 2019-12-26 |
US20190332284A1 (en) | 2019-10-31 |
CN110678852A (zh) | 2020-01-10 |
US20210181955A1 (en) | 2021-06-17 |
US11556251B2 (en) | 2023-01-17 |
WO2018222692A2 (en) | 2018-12-06 |
WO2018222692A3 (en) | 2019-02-21 |
US20180349029A1 (en) | 2018-12-06 |
US10372353B2 (en) | 2019-08-06 |
CN110678852B (zh) | 2023-11-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102321221B1 (ko) | 버퍼 상에서 메모리 동작을 제어하기 위한 장치 및 방법 | |
US10579537B2 (en) | Memory having a static cache and a dynamic cache | |
US11334248B2 (en) | Storage device and method of changing between memory blocks of different bits based on delay of migration request | |
US11698748B2 (en) | Memory comprising memory controller configured to determine a logical address of a target zone system and method of operating the memory controller | |
KR20130084682A (ko) | 카피백 동작 | |
US20200218653A1 (en) | Controller, data storage device, and operating method thereof | |
US20190369889A1 (en) | Memory device configuration commands | |
CN114078543A (zh) | 存储器控制器及其操作方法 | |
US11461238B2 (en) | Storage device, memory controller, and method for fetching write commands from submission queues to perform full page writes | |
US11199975B2 (en) | Interface circuit for processing commands, memory device including the same, storage device, and method of operating the memory device | |
US20180113803A1 (en) | Operation method of memory controller and operation method of storage device including the same | |
KR102645786B1 (ko) | 컨트롤러, 메모리 시스템 및 그것의 동작 방법 | |
KR20220022407A (ko) | 저장 장치 및 그 동작 방법 | |
US12019550B2 (en) | Concurrent page cache resource access in a multi-plane memory device | |
US11055011B2 (en) | Storage device | |
US11157401B2 (en) | Data storage device and operating method thereof performing a block scan operation for checking for valid page counts | |
KR102303653B1 (ko) | 메모리 장치 및 이를 포함하는 메모리 시스템 | |
US11194512B2 (en) | Data storage device which selectively performs a cache read or a normal read operation depending on work load and operating method thereof | |
US20140149646A1 (en) | Memory systems including flash memories, first buffer memories, second buffer memories and memory controllers and methods for operating the same | |
US11842078B2 (en) | Asynchronous interrupt event handling in multi-plane memory devices | |
US11868658B2 (en) | Memory controller including first processor for generating commands and second processor for generating logging information and method of operating the memory controller | |
US20240126448A1 (en) | Adaptive read disturb scan | |
US20220113903A1 (en) | Single memory bank storage for servicing memory access commands | |
CN115691616A (zh) | 基于管芯生成的脉冲信号的状态轮询 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |