KR20180134119A - 비휘발성 메모리 시스템 및 그 동작 방법 - Google Patents

비휘발성 메모리 시스템 및 그 동작 방법 Download PDF

Info

Publication number
KR20180134119A
KR20180134119A KR1020170071600A KR20170071600A KR20180134119A KR 20180134119 A KR20180134119 A KR 20180134119A KR 1020170071600 A KR1020170071600 A KR 1020170071600A KR 20170071600 A KR20170071600 A KR 20170071600A KR 20180134119 A KR20180134119 A KR 20180134119A
Authority
KR
South Korea
Prior art keywords
buffer
data
data blocks
memory
volatile memory
Prior art date
Application number
KR1020170071600A
Other languages
English (en)
Inventor
백진호
주영표
김명서
문윤정
이호균
임의철
Original Assignee
에스케이하이닉스 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 에스케이하이닉스 주식회사 filed Critical 에스케이하이닉스 주식회사
Priority to KR1020170071600A priority Critical patent/KR20180134119A/ko
Publication of KR20180134119A publication Critical patent/KR20180134119A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System (AREA)
  • Read Only Memory (AREA)

Abstract

비휘발성 메모리 시스템은, 캐시를 갖는 프로세서와, 캐시 크기보다 큰 크기의 읽기/쓰기 데이터 단위를 갖는 제1 버퍼를 포함하는 메모리 컨트롤러와, 그리고 읽기/쓰기 데이터 단위와 같은 크기의 제2 버퍼 및 메모리 셀들을 갖는 비휘발성 메모리소자를 포함한다. 메모리 컨트롤러는, 프로세서로부터의 쓰기 명령에 따라 캐시 크기의 쓰기 데이터 블록으로 제1 버퍼를 모두 채운 후에 상기 제1 버퍼를 채운 데이터 블록들을 비휘발성 메모리소자의 제2 버퍼에 전송한다.

Description

비휘발성 메모리 시스템 및 그 동작 방법{Nonvolatile memory system and method of operating the same}
본 개시의 여러 실시예들은 비휘발성 메모리 시스템 및 그 동작 방법에 관한 것으로서, 특히 비휘발성 메모리소자에 대한 읽기/쓰기 데이터 크기가 호스트 내의 캐시 라인 크기보다 큰 비휘발성 메모리 시스템 및 그 동작 방법에 관한 것이다.
최근 휴대폰과 같은 휴대용(portable) 기기가 생활 필수품화 되면서 반도체를 이용한 메모리 소자에 대한 수요가 급증하고 있다. 이와 같은 메모리 기술은 디램(DRAM)으로 대표되는 휘발성 메모리소자와, 낸드(NAND) 플래시로 대표되는 비휘발성 메모리소자로 나누어 볼 수 있다. 특히 다양한 휴대용 기기들에서 대용량의 비휘발성 메모리소자를 요구하는 경향이 증가하면서, 전력이 공급되지 않아도 데이터를 보존할 수 있는 비휘발성 메모리소자에 대한 적용 범위가 점점 확대되고 있다. 차세대 비휘발성 메모리소자로 주목받고 있는 메모리로는 강유전체 메모리(FeRAM), 자기메모리(MRAM), 저항형메모리(RRAM), 상변화메모리(PCM) 등이 있다.
이와 같은 비휘발성 메모리소자는, 단위 셀 단위로 읽기 및 쓰기 동작이 가능하지만, 데이터 읽기 및 쓰기 동작의 효율성을 위해 페이지(page) 단위로의 읽기 및 쓰기 동작이 이루어지도록 설계되는 것이 일반적이다. 즉 호스트 시스템과 비휘발성 메모리소자 사이에는 페이지 단위로의 데이터 전송이 이루어지며, 이를 위해 호스트 시스템과 비휘발성 메모리소자 사이에는 페이지와 동일한 전송 용량의 메모리 버스를 통해 데이터가 전송된다. 반면에 호스트 내에서의 캐시 라인(cache line)의 용량은 비휘발성 메모리소자의 읽기/쓰기 데이터 단위보다 작을 수 있다. 이 경우 캐시 라인의 데이터를 비휘발성 메모리소자의 특정 페이지에 저장하기 위해서는, 비휘발성 메모리소자의 읽기/쓰기 데이터 단위, 예컨대 페이지 단위의 전체 데이터를 읽은 후에 캐시 라인과 같은 크기의 데이터를 페이지 단위의 전체 데이터에 병합하고, 다시 병합된 전체 데이터를 비휘발성 메모리소자에 쓰는 읽기/변경/쓰기(read/modify/write) 방식이 채택되고 있다.
본 출원이 해결하고자 하는 과제는, 비휘발성 메모리소자의 읽기/쓰기 데이터 단위가 호스트의 캐시 라인의 크기보다 큰 경우, 캐시 라인의 데이터를 비휘발성 메모리소자에 저장하기 위해 요구되는 읽기/변경/쓰기 프로세스를 각각 메모리 컨트롤러 및 비휘발성 메모리소자에서 독립적으로 수행함으로써, 일반적인 읽기/변경/쓰기 방식에서 메모리 컨트롤러 내의 버퍼에 읽기/쓰기 데이터 단위의 데이터들을 읽음으로써 발생되는 오버헤드 문제를 방지하고, 또한 데이터 변경 과정을 수행하기 위해 요구되는 비휘발성 메모리소자 내의 로직 구성을 간단하게 할 수 있는 비휘발성 메모리 시스템은 제공하는 것이다.
본 출원이 해결하고자 하는 다른 과제는, 위와 같은 비휘발성 메모리 시스템의 동작 방법을 제공하는 것이다.
본 개시의 일 예에 따른 비휘발성 메모리 시스템은, 캐시를 갖는 프로세서와, 제1 버퍼를 포함하는 메모리 컨트롤러와, 그리고 제2 버퍼 및 메모리 셀들을 갖는 비휘발성 메모리소자를 포함한다. 제1 버퍼와 제2 버퍼의 크기는, 비휘발성 메모리소자의 읽기/쓰기 데이터 단위와 동일하다. 메모리 컨트롤러는, 프로세서로부터의 쓰기 명령에 따라 캐시 크기의 쓰기 데이터 블록으로 제1 버퍼를 모두 채운 후에 상기 제1 버퍼를 채운 데이터 블록들을 비휘발성 메모리소자의 제2 버퍼에 전송한다.
본 개시의 일 예에 따른 비휘발성 메모리 시스템의 동작 방법은, 프로세서와 메모리 컨트롤러 사이의 데이터 전송은 제1 데이터 전송 크기 단위로 이루어지고, 메모리 컨트롤러와 비휘발성 메모리소자 사이의 데이터 전송은 제1 데이터 전송 크기 단위보다 큰 제2 데이터 전송 크기 단위로 이루어지는 비휘발성 메모리 시스템의 동작 방법에 관한 것으로서, 프로세서로부터의 쓰기 명령에 따라 제1 데이터 전송 크기 단위의 데이터 블록을 메모리 컨트롤러 내의 제1 버퍼에 저장하는 병합 단계와, 제1 버퍼가 데이터 블록으로 채워질 때까지 병합 단계를 반복하여 수행하는 단계와, 그리고 제1 버퍼가 데이터 블록들로 채워진 후에 제1 버퍼 내의 데이터 블록들을 비휘발성 메모리소자의 제2 버퍼로 전송하는 단계를 포함한다.
여러 실시예들에 따르면, 비휘발성 메모리소자의 읽기/쓰기 데이터 단위가 캐시 크기보다 큰 경우 읽기/변경/쓰기 프로세스를 위한 병합 과정 및 변경 과정을 각각 메모리 컨트롤러 및 비휘발성 메모리소자에서 독립적으로 수행하도록 함으로써, 메모리 컨트롤러 내의 버퍼에 읽기/쓰기 데이터 단위의 데이터들을 읽음으로써 발생되는 오버헤드 문제를 방지하고, 또한 데이터 변경 과정을 수행하기 위해 요구되는 비휘발성 메모리소자 내의 로직 구성을 간단하게 할 수 있다는 이점이 제공된다.
도 1은 본 개시의 일 예에 따른 비휘발성 메모리 시스템을 나타내 보인 블록도이다.
도 2는 도 1의 비휘발성 메모리 시스템의 메모리 셀을 나타내 보인 블록도이다.
도 3 내지 도 8은 도 1의 비휘발성 메모리 시스템의 동작 방법의 일 예를 설명하기 위해 나타내 보인 블록도들이다.
도 9 내지 도 13은 도 1의 비휘발성 메모리 시스템의 동작 방법의 다른 예를 설명하기 위해 나타내 보인 블록도들이다.
도 14는 본 개시의 다른 예에 따른 비휘발성 메모리 시스템을 나타내 보인 블록도이다.
도 15 내지 도 22은 도 14의 비휘발성 메모리 시스템의 동작 방법의 일 예를 설명하기 위해 나타내 보인 블록도들이다.
도 23은 본 개시의 또 다른 예에 따른 비휘발성 메모리 시스템을 나타내 보인 블록도이다.
도 24는 본 개시의 또 다른 예에 따른 비휘발성 메모리 시스템을 나타내 보인 블록도이다.
본 출원의 예의 기재에서 "제1" 및 "제2"와 같은 기재는 부재를 구분하기 위한 것이며, 부재 자체를 한정하거나 특정한 순서를 의미하는 것으로 사용된 것은 아니다. 또한, 어느 부재의 "상"에 위치하거나 "상부", "하부", 또는 "측면"에 위치한다는 기재는 상대적인 위치 관계를 의미하는 것이지 그 부재에 직접 접촉하거나 또는 사이 계면에 다른 부재가 더 도입되는 특정한 경우를 한정하는 것은 아니다. 또한, 어느 한 구성 요소가 다른 구성 요소에 "연결되어 있다"거나 "접속되어 있다"의 기재는, 다른 구성 요소에 전기적 또는 기계적으로 직접 연결되어 있거나 또는 접속되어 있을 수 있으며, 또는, 중간에 다른 별도의 구성 요소들이 개재되어 연결 관계 또는 접속 관계를 구성할 수도 있다.
도 1은 본 개시의 일 예에 따른 비휘발성 메모리 시스템(100)을 나타내 보인 블록도이다. 그리고 도 2는 도 1의 비휘발성 메모리 시스템(100)의 메모리 셀(310)을 나타내 보인 블록도이다. 먼저 도 1을 참조하면, 일 예에 따른 비휘발성 메모리 시스템(100)은, 호스트 시스템(200) 및 비휘발성 메모리소자(300)를 포함하여 구성될 수 있다.
호스트 시스템(200)은 프로세서(210) 및 메모리 컨트롤러(220)를 포함할 수 있다. 프로세서(210)는 하나 이상의 프로세싱 코어들(processing cores)을 포함할 수 있다. 프로세서(210)는 캐시(cache)(211)를 포함할 수 있다. 일 예에서 캐시(211) 내에는 프로세서(210)가 처리할 커맨드(command), 데이터(data), 및 어드레스(address)가 저장될 수 있다. 프로세서(210)와 메모리 컨트롤러(220)는 캐시 라인(cache line)(214)을 통해 통신한다. 일 예에서 캐시 라인(214)을 통해 전송되는 데이터 용량은 캐시(211)의 저장 용량과 동일할 수 있다. 예컨대 캐시(211)의 저장 용량 및 캐시 라인(214)의 데이터 전송 용량은 각각 64 Byte로 구성될 수 있다.
메모리 컨트롤러(220)는 내부의 제1 버퍼(221)를 포함한다. 제1 버퍼(221)는 캐시 라인(214)을 통해 전송되는 데이터 용량보다 큰 크기의 용량을 갖는다. 일 예에서 제1 버퍼(221)의 저장 용량, 즉 비휘발성 메모리소자(300)의 읽기/쓰기 데이터 단위는 캐시 라인(214)의 데이터 전송 용량의 적어도 2배 이상일 수 있다. 본 예에서는 제1 버퍼(221)의 저장 용량 및 비휘발성 메모리소자(300)의 읽기/쓰기 데이터 단위가 캐시 라인(214)의 데이터 전송 용량의 4배인 경우를 예로 들어 설명하기로 한다. 이 경우 캐시 라인(214)의 데이터 전송 용량이 64 Byte로 구성되고, 제1 버퍼(221)는 256 Byte의 저장 용량을 갖는다. 따라서 제1 버퍼(221)가 데이터로 모두 채워지기 위해서는 캐시 라인(214)을 통해 4번의 데이터 전송이 이루어져야 한다.
프로세서(210)로부터 캐시 라인(214)을 통해 캐시 라인(214)의 데이터 전송 용량, 예컨대 64 Byte 단위의 데이터 블록이 메모리 컨트롤러(220)로 전송되면, 메모리 컨트롤러(220) 내의 제1 버퍼(221)에 저장된다. 일 예에서 메모리 컨트롤러(220)는, 제1 버퍼(221) 내에 데이터 블록이 전송되더라도 제1 버퍼(221)가 데이터 블록들로 모두 채워질 때까지 제1 버퍼(221) 내의 데이터 블록들이 비휘발성 메모리소자(300)로 전송되는 것을 보류한다. 그리고 제1 버퍼(221)가 데이터 블록들로 모두 채워진 후에 제1 버퍼(221) 내의 데이터 블록들을 비휘발성 메모리소자(300)로 전송시킨다.
기존의 읽기/변경/쓰기(read/modify/write) 프로세스의 일 예에 따르면, 캐시(211)의 64 Byte 데이터를 비휘발성 메모리소자(300)의 특정 페이지에 저장하기 위해 프로세서(210)로부터의 쓰기 명령이 발생하면, 메모리 컨트롤러는 그 쓰기 명령에 대응되는 비휘발성 메모리소자(300)의 페이지 데이터, 예컨대 256 Byte의 전체 데이터를 메모리 컨트롤러 내의 제1 버퍼로 읽어 들인 후에, 저장하고자 하는 캐시(211)의 64 Byte 데이터를 제1 버퍼의 데이터에 병합한 후에 제1 버퍼의 전체 데이터를 비휘발성 메모리소자로 전송하는 동작을 제어한다. 이 경우 64 Byte의 데이터 블록을 비휘발성 메모리소자(300)에 쓰기 위해서는 선행적으로 비휘발성 메모리소자(300)의 256 Byte의 전체 데이터를 메모리 컨트롤러 내의 제1 버퍼로 읽어 들여야 하는 오버헤드(overhead)가 발생된다.
기존의 읽기/변경/쓰기(read/modify/write) 프로세스의 다른 예에 따르면, 캐시(211)의 64 Byte 데이터를 비휘발성 메모리소자(300)의 특정 페이지에 저장하기 위해 프로세서(210)로부터의 쓰기 명령이 발생하면, 메모리 컨트롤러는 그 쓰기 명령에 대응되는 64 Byte의 데이터 블록을 비휘발성 메모리소자에 전송한다. 그러면 비휘발성 메모리소자는, 해당 페이지의 256 Byte의 전체 데이터를 읽은 후에 제2 버퍼에 저장한다. 이후 전송된 64 Byte 데이터 블록을 제2 버퍼의 전체 데이터에 병합한 후에 비어 있는 페이지에 쓰고, 어드레스 맵핑을 수행한다. 이 경우 비휘발성 메모리소자 내부에서 256 Byte의 전체 데이터에 대한 읽기 동작과, 전송된 64 Byte의 데이터 블록의 병합 동작과, 그리고 256 Byte의 병합된 전체 데이터의 메모리셀로의 쓰기 동작을 수행하여야 하며, 이와 같은 동작들을 위한 복잡한 로직이 요구된다. 더욱이 이 경우 쓰여진 데이터에 읽기 동작시 비휘발성 메모리소자의 제2 버퍼 내에 맵핑이 이루어진 어드레스의 데이터가 정상적으로 존재하는지 알 수 없다. 따라서 읽기 동작을 위해서는 비휘발성 메모리소자의 제2 버퍼 내에 맵핑이 이루어진 어드레스의 데이터가 준비되었는지의 여부를 확인할 수 있는 추가적인 프로세스가 필요하고, 이는 읽기 레이턴시(read latency)가 비결정적(non-deterministric)인 특성을 갖는 원인으로 작용할 수 있다.
이에 반하여, 본 예에 따른 비휘발성 메모리 시스템(100)의 경우, 제1 버퍼(221) 내에 데이터 블록이 전송되더라도 제1 버퍼(221)가 데이터 블록들로 모두 채워질 때까지 제1 버퍼(221) 내의 데이터 블록들이 비휘발성 메모리소자(300)로 전송되는 것이 보류된다. 그리고 제1 버퍼(221)가 데이터 블록들로 모두 채워진 후에 제1 버퍼(221) 내의 데이터 블록들을 비휘발성 메모리소자(300)로 전송시킨다. 즉 병합 과정은 메모리 컨트롤러(220)의 제1 버퍼(221) 내에서 수행되고, 비휘발성 메모리소자에서는 쓰기 과정만 수행된다. 따라서 캐시(211)의 64 Byte 데이터를 비휘발성 메모리소자(300)의 특정 페이지에 저장하기 위해서 선행적으로 요구되는 과정인 비휘발성 메모리소자(300)로부터의 256 Byte의 전체 데이터를 메모리 컨트롤러(220)의 제1 버퍼(221)에 읽어 들이는 과정이 필요하지 않아서 기존의 오버헤드 문제가 발생되지 않는다. 또한 비휘발성 메모리소자(300) 내에서는 쓰기 동작만을 수행함으로써 기존의 읽기 동작 및 병합 동작에 필요한 로직이 불필요하며, 읽기 레이턴시도 결정적deterministric)인 특성을 나타낸다.
다른 예에서, 메모리 컨트롤러(220)는 제1 버퍼(221)가 데이터 블록들로 모두 채워지기 전에 제1 버퍼(221) 내의 데이터 블록들을 비휘발성 메모리소자(300)로 전송시킬 수도 있다. 예컨대 256 Byte 용량의 제1 버퍼(221)에 2개의 64 Byte의 데이터 블록들이 채워진 상태, 즉 제1 버퍼(221)의 절반만 데이터 블록들로 채워진 상태에서 이 데이터 블록들을 비휘발성 메모리소자(300)로 전송시킬 수 있다. 이는 제1 버퍼(221)가 비워져야 하는 경우, 예컨대 다른 페이지 어드레스의 쓰기 명령이 프로세서(210)로부터 전송되는 경우가 발생되는 경우 수행될 수 있다. 이 경우 비휘발성 메모리소자(300)는 통상의 읽기/변경/쓰기 모드로 동작할 수 있다. 즉 비휘발성 메모리소자(300)는, 비휘발성 메모리소자(300) 내부의 제2 버퍼에 256 Byte의 전체 데이터를 읽은 후에 전송된 128 Byte 데이터 블록들을 제2 버퍼로 읽어 들인 전체 데이터에 병합한 후에 메모리 셀에 쓸 수 있도록 구성될 수 있다.
비휘발성 메모리소자(300)는, 일정 크기의 데이터 단위로 읽기/쓰기 동작이 이루어지는 메모리소자로 정의될 수 있다. 일 예에서 비휘발성 메모리소자(300)는 FRAM(Ferroelectric RAM), MRAM(Magnetic RAM), PRAM(Phase change RAM), 또는 NAND 플래시 메모리소자를 포함할 수 있다. 비휘발성 메모리소자(300)는 메모리 셀(310) 및 제2 버퍼(320)를 포함할 수 있다. 도 2에 나타낸 바와 같이, 메모리 셀(310)은 복수개, 예컨대 N개의 메모리 블록들(311-1, …, 311-N)을 포함할 수 있다. 메모리 블록들(311-1, …, 311-N) 각각은 복수개, 예컨대 M개의 메모리 페이지들을 포함할 수 있다. 즉 첫번째 메모리 블록(311-1)은 M개의 메모리 페이지들(321-11, 321-12, …, 321-1M)을 포함할 수 있다. 마찬가지로 N번째 메모리 블록(311-N)도 M개의 메모리 페이지들(321-N1, 321-N2, …, 321-NM)을 포함할 수 있다. N개의 메모리 블록들(311-1, …, 311-N)은 동일하게 구성될 수 있다. 이에 따라 첫번째 메모리 블록(311-1)의 M개의 메모리 페이지들(321-11, 321-12, …, 321-1M)과, N번째 메모리 블록(311-N)의 M개의 메모리 페이지들(321-N1, 321-N2, …, 321-NM)은 모두 동일한 저장 용량을 갖도록 구성될 수 있다.
다시 도 1을 참조하면, 비휘발성 메모리소자(300)의 제2 버퍼(320)는 읽기/쓰기 데이터 단위와 같은 크기의 저장 용량을 갖는다. 이에 따라 제2 버퍼(320)는 메모리 컨트롤러(220)의 제1 버퍼(221)와 같은 크기, 예컨대 256 Byte의 저장 용량을 갖는다. 일 예에서 제2 버퍼(320)의 저장 용량과 메모리 셀(310)의 메모리 페이지들 각각의 저장 용량은 동일할 수 있다. 이 경우 메모리 컨트롤러(220)의 제1 버퍼(221)의 저장 용량 또한 메모리 셀(310)의 메모리 페이지들 각각의 저장 용량과 동일할 수 있다.
호스트 시스템(200)의 메모리 컨트롤러(220)와 비휘발성 메모리소자(300)는 제1 버퍼(221)와 동일한 데이터 전송 용량을 갖는 메모리 버스(250)를 통해 통신할 수 있다. 즉 메모리 버스(250)의 전송 용량은, 메모리 컨트롤러(220)의 제1 버퍼(221)의 저장 용량, 비휘발성 메모리소자(300)의 제2 버퍼(320)의 저장 용량, 및 메모리 셀(310)의 메모리 페이지들 각각의 저장 용량과 동일할 수 있다. 따라서 메모리 컨트롤러(220) 내의 제1 버퍼(221)를 모두 채우는 데이터 블록들은, 메모리 버스(250)를 통해 하나의 프로세스로 비휘발성 메모리소자(300)의 제2 버퍼(320)로 전송될 수 있다. 다른 예에서 메모리 버스(250)의 데이터전송 용량은 비휘발성 메모리소자(300)의 읽기/쓰기 데이터 단위의 크기보다 작을 수도 있다. 이 경우 메모리 컨트롤러(220) 내의 제1 버퍼(221)를 모두 채우는 데이터 블록들이 비휘발성 메모리소자(300)의 제2 버퍼(320)로 전송되는 과정은 복수의 프로세스들을 통해 수행될 수 있다.
도 3 내지 도 8은 도 1의 비휘발성 메모리 시스템(100)의 동작 방법의 일 예를 설명하기 위해 나타내 보인 블록도들이다. 도 3 내지 도 8에서 도 1 및 도 2와 동일한 참조부호는 동일한 구성요소를 나타낸다. 본 예에서는 비휘발성 메모리소자(300)의 메모리 셀(310)의 첫번째 메모리 블록(311-1)으로의 데이터 쓰기 동작을 예로 들기로 한다. 구체적으로 메모리 셀(310)의 첫번째 메모리 블록(311-1)의 첫번째 메모리 페이지(321-11)에는 제1 데이터(D11), 제2 데이터(D12), 제3 데이터(D13), 및 제4 데이터(D14)가 저장되어 있고, 나머지 메모리 페이지들(321-12, …, 321-1M)은 비어 있는 메모리 페이지들인 경우를 예로 들기로 한다. 본 예에서 메모리 페이지의 저장 용량은 256 Byte이고, 제1 데이터(D11), 제2 데이터(D12), 제3 데이터(D13), 및 제4 데이터(D14)는 각각 64 Byte의 크기를 갖는다.
먼저 도 3에 나타낸 바와 같이, 호스트 시스템(200)의 프로세서(210)에 의해 메모리 셀(310)의 첫번째 메모리 블록(311-1)의 첫번째 메모리 페이지(321-11)의 제1 데이터(D11)를 제1 쓰기 데이터(D11')로 갱신하기 위한 쓰기 명령이 발생되면, 제1 쓰기 데이터(D11')는 프로세서(210)의 캐시(211)로부터 캐시 라인(214)을 통해 메모리 컨트롤러(220)의 제1 버퍼(221)에 저장된다. 제1 쓰기 데이터(D11')는 캐시 라인(214)의 데이터 전송 크기와 동일한 64 Byte의 크기를 갖는다. 256 Byte 저장용량을 갖는 제1 버퍼(221)의 전체 저장소의 1/4 영역에는 제1 쓰기 데이터(D11')가 저장되고, 나머지 저장소들은 비어 있는 상태가 된다. 이 상태에서 비휘발성 메모리소자(300)의 메모리 셀(310)에 대한 쓰기 동작은 진행되지 않고 보류된다.
다음에 도 4에 나타낸 바와 같이, 호스트 시스템(200)의 프로세서(210)에 의해 메모리 셀(310)의 첫번째 메모리 블록(311-1)의 첫번째 메모리 페이지(321-11)의 제2 데이터(D12)를 제2 쓰기 데이터(D12')로 갱신하기 위한 쓰기 명령이 발생되면, 제2 쓰기 데이터(D12')는 프로세서(210)의 캐시(211)로부터 캐시 라인(214)을 통해 메모리 컨트롤러(220)의 제1 버퍼(221)에 저장된다. 제2 쓰기 데이터(D12')는 캐시 라인(214)의 데이터 전송 크기와 동일한 64 Byte의 크기를 갖는다. 256 Byte의 저장용량을 갖는 제1 버퍼(221)에는 제1 쓰기 데이터(D11') 및 제2 쓰기 데이터(D12')가 저장되고, 나머지 제1 버퍼(221)의 저장 용량의 절반은 비어 있는 상태가 된다. 이 상태에서 비휘발성 메모리소자(300)의 메모리 셀(310)에 대한 쓰기 동작은 여전히 진행되지 않고 보류된다.
다음에 도 5에 나타낸 바와 같이, 호스트 시스템(200)의 프로세서(210)에 의해 메모리 셀(310)의 첫번째 메모리 블록(311-1)의 첫번째 메모리 페이지(321-11)의 제3 데이터(D13)를 제3 쓰기 데이터(D13')로 갱신하기 위한 쓰기 명령이 발생되면, 제3 쓰기 데이터(D13')는 프로세서(210)의 캐시(211)로부터 캐시 라인(214)을 통해 메모리 컨트롤러(220)의 제1 버퍼(221)에 저장된다. 제3 쓰기 데이터(D13')는 캐시 라인(214)의 데이터 전송 크기와 동일한 64 Byte의 크기를 갖는다. 256 Byte의 저장용량을 갖는 제1 버퍼(221)에는 제1 쓰기 데이터(D11'), 제2 쓰기 데이터(D12'), 및 제3 쓰기 데이터(D13')가 저장되고, 제1 버퍼(221)의 나머지는 비어 있는 상태가 된다. 이 상태에서 비휘발성 메모리소자(300)의 메모리 셀(310)에 대한 쓰기 동작은 여전히 진행되지 않고 보류된다.
다음에 도 6에 나타낸 바와 같이, 호스트 시스템(200)의 프로세서(210)에 의해 메모리 셀(310)의 첫번째 메모리 블록(311-1)의 첫번째 메모리 페이지(321-11)의 제4 데이터(D14)를 제4 쓰기 데이터(D14')로 갱신하기 위한 쓰기 명령이 발생되면, 제4 쓰기 데이터(D14')는 프로세서(210)의 캐시(211)로부터 캐시 라인(214)을 통해 메모리 컨트롤러(220)의 제1 버퍼(221)에 저장된다. 제4 쓰기 데이터(D14')는 캐시 라인(214)의 데이터 전송 크기와 동일한 64 Byte의 크기를 갖는다. 256 Byte의 저장용량을 갖는 제1 버퍼(221)에는 제1 쓰기 데이터(D11'), 제2 쓰기 데이터(D12'), 제3 쓰기 데이터(D13'), 및 제4 쓰기 데이터(D14')가 저장된다. 즉 256 Byte의 저장용량를 갖는 제1 버퍼(221)는 각각 64 Byte 크기의 제1 내지 제4 쓰기 데이터(D11'-D14')로 모두 채워진다.
다음에 도 7에 나타낸 바와 같이, 제1 버퍼(221)가 제1 내지 제4 쓰기 데이터(D11'-D14')로 모두 채워지면, 메모리 컨트롤러(220)는 메모리 버스(250)를 통해 비휘발성 메모리소자(300)의 제2 버퍼(320)로 제1 내지 제4 쓰기 데이터(D11'-D14')를 전송한다. 이에 따라 256 Byte의 제2 버퍼(320)에는 각각 64 Byte인 제1 내지 제4 쓰기 데이터(D11'-D14')로 채워진다. 그리고 메모리 컨트롤러(220)의 제1 버퍼(221)는 비워진 상태가 된다.
다음에 도 8에 나타낸 바와 같이, 비휘발성 메모리소자(300)는, 제2 버퍼(320)에 저장된 제1 내지 제4 쓰기 데이터(D11'-D14')를 첫번째 블록(311-1)의 메모리 페이지들 중 비어 있는 메모리 페이지들(321-12, …, 321-1M) 중 하나, 예컨대 두번째 메모리 페이지(321-12)에 쓴다. 이에 따라 첫번째 블록(311-1)의 첫번째 메모리 페이지(321-11)에는 업데이트되기 전의 제1 내지 제4 데이터(D11-D14)가 저장된 상태가 되고, 두번째 메모리 페이지(321-12)에는 업데이트된 제1 내지 제4 쓰기 데이터(D11'-D14')가 저장된 상태가 된다. 업데이트되기 전의 기존의 제1 내지 제4 데이터(D11-D14)가 저장되는 첫번째 메모리 페이지(321-11)는 스테일(stale) 상태로 바뀌며, 후속의 이레이즈(erase) 과정을 통해 비어 있는 메모리 페이지로 전환된다.
도 9 내지 도 13은 도 1의 비휘발성 메모리 시스템(100)의 동작 방법의 다른 예를 설명하기 위해 나타내 보인 블록도들이다. 도 9 내지 도 13에서 도 1 및 도 2와 동일한 참조부호는 동일한 구성요소를 나타낸다. 본 예에 따르면, 메모리 컨트롤러(220)의 제1 버퍼(221)가 모두 채워지기 전에 프로세서(210)로부터 다른 쓰기 명령이 발생되는 경우 비휘발성 메모리 시스템(100)은 읽기/변경/쓰기 동작을 수행하여 제1 버퍼(221)에 저장되어 있는 데이터에 대한 쓰기 동작을 수행한다.
도 9에 나타낸 바와 같이, 메모리 셀(310)의 첫번째 메모리 블록(311-1)의 첫번째 메모리 페이지(321-11)에는 제1 데이터(D11), 제2 데이터(D12), 제3 데이터(D13), 및 제4 데이터(D14)가 저장되어 있고, 두번째 메모리 페이지(321-12)에는 제5 데이터(D21), 제6 데이터(D22), 제7 데이터(D23), 및 제8 데이터(D24)가 저장되어 있으며, 그리고 나머지 메모리 페이지들(…, 321-1M)은 비어 있는 경우를 예로 들기로 한다. 본 예에서 메모리 페이지의 저장 용량은 256 Byte이고, 제1 데이터(D11), 제2 데이터(D12), 제3 데이터(D13), 및 제4 데이터(D14)는 각각 64 Byte의 크기를 갖는다. 마찬가지로 제5 데이터(D21), 제6 데이터(D22), 제7 데이터(D23), 및 제8 데이터(D24)도 각각 64 Byte의 크기를 갖는다.
호스트 시스템(200)의 프로세서(210)에 의해 메모리 셀(310)의 첫번째 메모리 블록(311-1)의 첫번째 메모리 페이지(321-11)의 제1 데이터(D11)를 제1 쓰기 데이터(D11')로 갱신하기 위한 제1 쓰기 명령이 발생되면, 제1 쓰기 데이터(D11')는 프로세서(210)의 캐시(211)로부터 캐시 라인(214)을 통해 메모리 컨트롤러(220)의 제1 버퍼(221)에 저장된다. 제1 쓰기 데이터(D11')는 캐시 라인(214)의 데이터 전송 크기와 동일한 64 Byte의 크기를 갖는다. 256 Byte 저장용량을 갖는 제1 버퍼(221)의 전체 저장소의 1/4 영역에는 제1 쓰기 데이터(D11')가 저장되고, 나머지 저장소들은 비어 있는 상태가 된다.
도 10에 나타낸 바와 같이, 이 상태에서 메모리 컨트롤러(220)의 제1 버퍼(221)를 비워줘야 하는 상황이 발생하는 경우, 제1 버퍼(221)가 모두 채워지지 않더라도 제1 쓰기 데이터(D11')를 비휘발성 메모리소자(300)에 쓰는 동작을 수행한다. 일 예에서 프로세서(210)에 의해 메모리 셀(310)의 첫번째 메모리 블록(311-1)의 두번째 메모리 페이지(321-12)의 제5 데이터(D21)를 제5 쓰기 데이터(D21')로 갱신하기 위한 제2 쓰기 명령이 발생되는 경우, 제5 쓰기 데이터(D21')는 프로세서(210)의 캐시(211)로부터 캐시 라인(214)을 통해 메모리 컨트롤러(220)의 제1 버퍼(221)에 저장되어야 하며, 이를 위해 제1 버퍼(221)에 저장되어 있던 제1 쓰기 데이터(D11')를 처리하여 제1 버퍼(221)를 비워야 할 필요가 있다.
도 11에 나타낸 바와 같이, 메모리 컨트롤러(220)는, 제1 버퍼(221)에 저장되어 있던 제1 쓰기 데이터(D11')를 메모리 버스(250)를 통해 비휘발성 메모리소자(300)의 제2 버퍼(320)로 전송한다. 한편 비휘발성 메모리소자(300)는 제1 쓰기 데이터(D11')가 쓰여질 첫번째 메모리 페이지(321-11)의 모든 데이터, 즉 제1 내지 제4 데이터(D11-D12)를 제2 버퍼(320)에 저장한다. 비워진 상태의 메모리 컨트롤러(220)의 제1 버퍼(221)에는 제2 쓰기 명령에 의해 전송되는 제5 쓰기 데이터(D21')가 저장된다.
도 12에 나타낸 바와 같이, 비휘발성 메모리소자(300)는, 제2 버퍼(320) 내의 제1 데이터(D11)를 메모리 컨트롤러(220)의 제1 버퍼(221)로부터 전송되는 제1 쓰기 데이터(D11')로 변경한다. 이에 따라 256 Byte의 저장용량을 갖는 제2 버퍼(320)에는 각각 64 Byte인 제1 쓰기 데이터(D11') 및 제2 내지 제4 쓰기 데이터(D12-D14)로 채워진 상태가 된다.
도 13에 나타낸 바와 같이, 비휘발성 메모리 소자(300)는 제2 버퍼(320)에 저장되어 있는 제1 쓰기 데이터(D11') 및 제2 내지 제4 쓰기 데이터(D12-D14)에 대한 첫번째 메모리 페이지(321-11)로의 쓰기 동작을 수행한다. 이에 따라 첫번째 메모리 블록(311-1)의 첫번째 메모리 페이지(321-11)에는 제1 쓰기 데이터(D11') 및 제2 내지 제4 쓰기 데이터(D12-D14)가 저장되며, 이전의 제1 데이터(D11)는 제1 쓰기 데이터(D11')로 업데이트된다.
도 14는 본 개시의 다른 예에 따른 비휘발성 메모리 시스템(400)을 나타내 보인 블록도이다. 도 14를 참조하면, 일 예에 따른 비휘발성 메모리 시스템(400)은, 호스트 시스템(500) 및 비휘발성 메모리소자(600)를 포함하여 구성될 수 있다. 호스트 시스템(500)은 프로세서(510) 및 메모리 컨트롤러(520)를 포함할 수 있다. 프로세서(510)는 하나 이상의 프로세싱 코어들(processing cores)을 포함할 수 있다. 프로세서(510)는 캐시(211)를 포함할 수 있다. 일 예에서 캐시(511) 내에는 프로세서(510)가 처리할 커맨드, 데이터, 및 어드레스가 저장될 수 있다. 프로세서(510)와 메모리 컨트롤러(520)는 캐시 라인(514)을 통해 통신한다. 일 예에서 캐시 라인(514)을 통해 전송되는 데이터 용량은 캐시(511)의 저장 용량과 동일할 수 있다. 예컨대 캐시(511)의 저장 용량 및 캐시 라인(514)의 데이터 전송 용량은 각각 64 Byte로 구성될 수 있다.
메모리 컨트롤러(520)는 복수개, 예컨대 3개의 제1 버퍼들(521-523)를 포함한다. 비록 본 예에서 메모리 컨트롤러(520)는 3개의 제1 버퍼들(521-523)을 갖지만, 이는 단지 설명의 간단을 위한 하나의 예시로서, 메모리 컨트롤러(520)는 2개 또는 3개보다 더 많은 제1 버퍼들을 포함할 수 있다. 제1 버퍼들(521-523) 각각은, 캐시 라인(514)을 통해 전송되는 데이터 용량보다 큰 크기의 용량을 갖는다. 일 예에서 제1 버퍼들(521-523) 각각의 저장 용량, 즉 비휘발성 메모리 시스템(400)의 읽기/쓰기 데이터 단위는 캐시 라인(414)의 데이터 전송 용량의 적어도 2배 이상일 수 있다. 본 예에서는 제1 버퍼들(521-523) 각각의 저장 용량이 캐시 라인(514)의 데이터 전송 용량의 4배인 경우를 예로 들어 설명하기로 한다. 이 경우 캐시 라인(514)의 데이터 전송 용량이 64 Byte로 구성되고, 제1 버퍼들(521-523) 각각은 256 Byte의 저장 용량을 갖는다. 따라서 제1 버퍼들(521-523) 각각이 데이터로 모두 채워지기 위해서는 각각 캐시 라인(514)을 통해 4번의 데이터 전송이 이루어져야 한다.
비휘발성 메모리소자(600)의 첫번째 메모리 페이지 영역에 대한 제1 쓰기 명령에 의해, 프로세서(510)로부터 캐시 라인(514)을 통해 캐시 라인(514)의 데이터 전송 용량, 예컨대 64 Byte 단위의 제1 쓰기 데이터 블록이 메모리 컨트롤러(520)로 전송되면, 메모리 컨트롤러(520) 내의 제1 버퍼들(521-523) 중 어느 하나, 예컨대 첫번째 제1 버퍼(521) 내에 저장한다. 메모리 컨트롤러(520)는, 첫번째 제1 버퍼(521) 내에 제1 데이터 블록이 전송되더라도 첫번째 제1 버퍼(521)가 모두 채워질 때까지 첫번째 제1 버퍼(521) 내의 데이터 블록들이 비휘발성 메모리소자(600)로 전송되는 것을 보류한다. 그리고 첫번째 제1 버퍼(521)가 데이터 블록들로 모두 채워진 후에 첫번째 제1 버퍼(521) 내의 데이터 블록들을 비휘발성 메모리소자(600)로 전송시킨다.
메모리 컨트롤러(520)는, 제1 버퍼들(521-523) 각각이 동일한 메모리 페이지 어드레스의 쓰기 데이터를 저장하도록 제어한다. 예컨대 프로세서(510)로부터 캐시 라인(514)을 통해 메모리 컨트롤러(520)로 전송되는 64 Byte 단위의 제2 쓰기 데이터 블록이 첫번째 제1 버퍼(521)에 저장된 제1 쓰기 데이터 블록과 다른 메모리 페이지 어드레스를 갖는 경우, 메모리 컨트롤러(520)는 전송된 제2 쓰기 데이터 블록을 첫번째 제1 버퍼(521)가 아닌 다른 제1 버퍼, 예컨대 두번째 제1 버퍼(522)에 저장한다. 즉 첫번째 제1 버퍼(521)가 모두 채워지기 전에 비휘발성 메모리소자(600)의 다른 메모리 페이지 영역에 대한 제2 쓰기 명령이 발생되는 경우, 제2 쓰기 명령에 대응되어 전송되는 제2 쓰기 데이터 블록은 제1 쓰기 데이터 블록이 저장되어 있는 첫번째 제1 버퍼(521)를 제외한 나머지 중 어느 하나에 저장된다. 이 경우에도 메모리 컨트롤러(520)는, 두번째 제1 버퍼(522)가 데이터 블록들로 모두 채워질 때까지 두번째 제1 버퍼(522) 내의 데이터 블록들이 비휘발성 메모리소자(600)로 전송되는 것을 보류한다. 그리고 후속의 쓰기 명령들에 의해 두번째 제1 버퍼(522)가 데이터 블록들로 모두 채워진 후에 두번째 제1 버퍼(522) 내의 데이터 블록들을 비휘발성 메모리소자(600)로 전송시킨다.
비휘발성 메모리소자(600)는, 일정 크기의 데이터 단위로 읽기/쓰기 동작이 이루어지는 메모리소자로 정의될 수 있다. 일 예에서 비휘발성 메모리소자(600)는 FRAM, MRAM, PRAM, 또는 NAND 플래시 메모리소자를 포함할 수 있다. 비휘발성 메모리소자(600)는 메모리 셀(610) 및 복수개, 예컨대 2개의 제2 버퍼들(621, 622)을 포함할 수 있다. 비록 본 예에서 비휘발성 메모리소자(600)는 2개의 제2 버퍼들(621, 622)을 갖지만, 이는 단지 설명의 간단을 위한 하나의 예시로서, 비휘발성 메모리소자(600)는 2개보다 많은 제2 버퍼들을 포함할 수 있다. 메모리 셀(610)은, 도 2를 참조하여 설명한 바와 동일하다.
비휘발성 메모리소자(600)의 제2 버퍼들(621, 622) 각각은 읽기/쓰기 데이터 단위와 같은 크기의 저장 용량을 갖는다. 이에 따라 제2 버퍼들(621, 622) 각각은 메모리 컨트롤러(620)의 제1 버퍼들(521-523) 각각과 같은 크기, 예컨대 256 Byte의 저장 용량을 갖는다. 일 예에서 제2 버퍼들(621, 622) 각각의 저장 용량과 메모리 셀(610)의 메모리 페이지들 각각의 저장 용량은 동일할 수 있다. 이 경우 메모리 컨트롤러(620)의 제1 버퍼들(521-523) 각각의 저장 용량 또한 메모리 셀(610)의 메모리 페이지들 각각의 저장 용량과 동일할 수 있다.
호스트 시스템(500)의 메모리 컨트롤러(520)와 비휘발성 메모리소자(600)는 제1 버퍼들(521-523) 각각과 동일한 데이터 전송 용량을 갖는 메모리 버스(550)를 통해 통신할 수 있다. 즉 메모리 버스(550)의 전송 용량은, 메모리 컨트롤러(520)의 제1 버퍼들(521-523) 각각의 저장 용량, 비휘발성 메모리소자(600)의 제2 버퍼들(621, 622) 각각의 저장 용량, 및 메모리 셀(610)의 메모리 페이지들 각각의 저장 용량과 동일할 수 있다. 따라서 메모리 컨트롤러(520) 내의 제1 버퍼들(521-523) 중 어느 하나의 제1 버퍼를 모두 채우는 데이터 블록들은, 메모리 버스(550)를 통해 하나의 프로세스로 비휘발성 메모리소자(600)의 제2 버퍼들(621, 622) 중 어느 하나의 제2 버퍼로 전송될 수 있다.
도 15 내지 도 22는 도 14의 비휘발성 메모리 시스템(400)의 동작 방법을 설명하기 위해 나타내 보인 블록도들이다. 도 15 내지 도 22에서 도 14와 동일한 참조부호는 동일한 구성요소를 나타낸다. 본 예에서는 비휘발성 메모리소자(600)의 메모리 셀(610)의 첫번째 메모리 블록(611-1)으로의 데이터 쓰기 동작을 예로 들기로 한다. 구체적으로 메모리 셀(610)의 첫번째 메모리 블록(611-1)의 첫번째 메모리 페이지(621-11)에는 제1 데이터(D11), 제2 데이터(D12), 제3 데이터(D13), 및 제4 데이터(D14)가 저장되어 있고, 두번째 메모리 페이지(621-12)에는 제1 데이터(D21), 제2 데이터(D22), 제3 데이터(D23), 및 제4 데이터(D24)이 저장되어 있으며, 그리고 나머지 메모리 페이지들(621-13, …, 621-1M)은 비어 있는 메모리 페이지들인 경우를 예로 들기로 한다. 본 예에서 메모리 페이지의 저장 용량은 256 Byte이고, 제1 데이터(D11, D21), 제2 데이터(D12, D22), 제3 데이터(D13, D23), 및 제4 데이터(D14, D24)는 각각 64 Byte의 크기를 갖는다.
먼저 도 15에 나타낸 바와 같이, 호스트 시스템(500)의 프로세서(510)에 의해 메모리 셀(610)의 첫번째 메모리 블록(611-1)의 첫번째 메모리 페이지(621-11)의 제1 데이터(D11)를 제1 쓰기 데이터(D11')로 갱신하기 위한 쓰기 명령이 발생되면, 제1 쓰기 데이터(D11')는 프로세서(510)의 캐시(511)로부터 캐시 라인(514)을 통해 메모리 컨트롤러(520)의 첫번째 제1 버퍼(521)에 저장된다. 제1 쓰기 데이터(D11')는 캐시 라인(514)의 데이터 전송 크기와 동일한 64 Byte의 크기를 갖는다. 256 Byte의 첫번째 제1 버퍼(521)의 전체 저장소의 1/4에는 제1 쓰기 데이터(D11')가 저장되고, 나머지 저장소는 비어 있는 상태가 된다. 이 상태에서 비휘발성 메모리소자(600)의 메모리 셀(610)에 대한 쓰기 동작은 진행되지 않는다.
다음에 도 16에 나타낸 바와 같이, 호스트 시스템(500)의 프로세서(510)에 의해 메모리 셀(610)의 첫번째 메모리 블록(611-1)의 두번째 메모리 페이지(621-11)의 제1 데이터(D21)를 제1 쓰기 데이터(D21')로 갱신하기 위한 쓰기 명령이 발생되면, 제1 쓰기 데이터(D21')는 프로세서(510)의 캐시(511)로부터 캐시 라인(514)을 통해 메모리 컨트롤러(520)의 두번째 제1 버퍼(522)에 저장된다. 제1 쓰기 데이터(D21') 또한 캐시 라인(514)의 데이터 전송 크기와 동일한 64 Byte의 크기를 갖는다. 256 Byte의 두번째 제1 버퍼(522)에는 64 Byte의 제1 쓰기 데이터(D21')가 저장되고, 두번째 제1 버퍼(522)의 나머지 저장 용량은 비어 있는 상태가 된다. 첫번째 제1 버퍼(521)의 저장 상태는 변화하지 않는다. 이 상태에서 비휘발성 메모리소자(600)의 메모리 셀(610)에 대한 쓰기 동작은 진행되지 않는다.
다음에 도 17에 나타낸 바와 같이, 호스트 시스템(500)의 프로세서(510)에 의해 메모리 셀(610)의 첫번째 메모리 블록(611-1)의 첫번째 메모리 페이지(621-11)의 제2 데이터(D12)를 제2 쓰기 데이터(D12')로 갱신하기 위한 쓰기 명령이 발생되면, 제2 쓰기 데이터(D12')는 프로세서(510)의 캐시(511)로부터 캐시 라인(514)을 통해 메모리 컨트롤러(520)의 첫번째 제1 버퍼(521)에 저장된다. 제2 쓰기 데이터(D12')는 캐시 라인(514)의 데이터 전송 크기와 동일한 64 Byte의 크기를 갖는다. 256 Byte의 첫번째 제1 버퍼(521)에는 64 Byte의 제1 쓰기 데이터(D11') 및 64 Byte의 제2 쓰기 데이터(D12')가 저장되고, 첫번째 제1 버퍼(521)의 나머지는 비어 있는 상태가 된다. 두번째 제1 버퍼(522)의 저장 상태는 변화하지 않는다. 이 상태에서 비휘발성 메모리소자(600)의 메모리 셀(610)에 대한 쓰기 동작은 진행되지 않는다.
다음에 도 18에 나타낸 바와 같이, 호스트 시스템(500)의 프로세서(510)에 의해 메모리 셀(610)의 첫번째 메모리 블록(611-1)의 첫번째 메모리 페이지(621-11)의 제3 데이터(D13)를 제3 쓰기 데이터(D13')로 갱신하기 위한 쓰기 명령이 발생되면, 제3 쓰기 데이터(D13')는 프로세서(510)의 캐시(511)로부터 캐시 라인(514)을 통해 메모리 컨트롤러(520)의 첫번째 제1 버퍼(521)에 저장된다. 제3 쓰기 데이터(D13')는 캐시 라인(514)의 데이터 전송 크기와 동일한 64 Byte의 크기를 갖는다. 256 Byte의 첫번째 제1 버퍼(521)에는 64 Byte의 제1 쓰기 데이터(D11'), 64 Byte의 제2 쓰기 데이터(D12'), 및 64 Byte의 제3 쓰기 데이터(D13')가 저장되고, 첫번째 제1 버퍼(521)의 나머지는 비어 있는 상태가 된다. 두번째 제1 버퍼(522)의 저장 상태는 변화하지 않는다. 이 상태에서 비휘발성 메모리소자(600)의 메모리 셀(610)에 대한 쓰기 동작은 진행되지 않는다.
다음에 도 19에 나타낸 바와 같이, 호스트 시스템(500)의 프로세서(510)에 의해 메모리 셀(610)의 첫번째 메모리 블록(611-1)의 두번째 메모리 페이지(621-11)의 제2 데이터(D22)를 제2 쓰기 데이터(D22')로 갱신하기 위한 쓰기 명령이 발생되면, 제2 쓰기 데이터(D22')는 프로세서(510)의 캐시(511)로부터 캐시 라인(514)을 통해 메모리 컨트롤러(520)의 두번째 제1 버퍼(522)에 저장된다. 제2 쓰기 데이터(D22') 또한 캐시 라인(514)의 데이터 전송 크기와 동일한 64 Byte의 크기를 갖는다. 256 Byte의 두번째 제1 버퍼(522)에는 64 Byte의 제1 쓰기 데이터(D21') 및 64 Byte의 제2 쓰기 데이터(D22')가 저장되고, 두번째 제1 버퍼(522)의 나머지 저장 용량은 비어 있는 상태가 된다. 첫번째 제1 버퍼(521)의 저장 상태는 변화하지 않는다. 이 상태에서 비휘발성 메모리소자(600)의 메모리 셀(610)에 대한 쓰기 동작은 진행되지 않는다.
다음에 도 20에 나타낸 바와 같이, 호스트 시스템(500)의 프로세서(510)에 의해 메모리 셀(610)의 첫번째 메모리 블록(611-1)의 첫번째 메모리 페이지(621-11)의 제4 데이터(D14)를 제4 쓰기 데이터(D14')로 갱신하기 위한 쓰기 명령이 발생되면, 제4 쓰기 데이터(D14')는 프로세서(510)의 캐시(511)로부터 캐시 라인(514)을 통해 메모리 컨트롤러(520)의 첫번째 제1 버퍼(521)에 저장된다. 제4 쓰기 데이터(D14')는 캐시 라인(514)의 데이터 전송 크기와 동일한 64 Byte의 크기를 갖는다. 256 Byte의 첫번째 제1 버퍼(521)는 64 Byte의 제1 쓰기 데이터(D11'), 64 Byte의 제2 쓰기 데이터(D12'), 64 Byte의 제3 쓰기 데이터(D13'), 및 64 Byte의 제4 쓰기 데이터(D14')로 모두 채워진다. 두번째 제1 버퍼(522)의 저장 상태는 변화하지 않는다.
다음에 도 21에 나타낸 바와 같이, 첫번째 제1 버퍼(521)가 제1 내지 제4 쓰기 데이터(D11'-D14')로 모두 채워지면, 메모리 컨트롤러(520)는 메모리 버스(550)를 통해 비휘발성 메모리소자(600)의 첫번째 제2 버퍼(621)로 제1 내지 제4 쓰기 데이터(D11'-D14')를 전송한다. 이에 따라 256 Byte의 첫번째 제2 버퍼(320)에는 각각 64 Byte인 제1 내지 제4 쓰기 데이터(D11'-D14')로 채워진다. 그리고 메모리 컨트롤러(520)의 첫번째 제1 버퍼(521)는 비워진 상태가 된다.
다음에 도 22에 나타낸 바와 같이, 비휘발성 메모리소자(600)는, 첫번째 제2 버퍼(621)에 저장된 제1 내지 제4 쓰기 데이터(D11'-D14')를 첫번째 블록(611-1)의 메모리 페이지들 중 비어 있는 메모리 페이지들(621-13, …, 621-1M) 중 하나, 예컨대 세번째 메모리 페이지(621-13)에 쓴다. 이에 따라 첫번째 블록(611-1)의 첫번째 메모리 페이지(621-11)에는 업데이트되기 전의 제1 내지 제4 데이터(D11-D14)가 저장된 상태가 되고, 세번째 메모리 페이지(621-13)에는 업데이트된 제1 내지 제4 쓰기 데이터(D11'-D14')가 저장된 상태가 된다. 업데이트되기 전의 기존의 제1 내지 제4 데이터(D11-D14)가 저장되는 첫번째 메모리 페이지(621-11)는 스테일(stale) 상태로 바뀌며, 후속의 이레이즈(erase) 과정을 통해 비어 있는 메모리 페이지로 전환된다.
한편 본 예에 있어서 모든 제1 버퍼들(521-523)이 일부의 데이터 블록들을 포함하여 비어 있는 제1 버퍼가 없는 상태에서 프로세서(210)로부터 다른 메모리 페이지 어드레스 영역에 대한 쓰기 명령이 발생하면, 제1 버퍼들(521-523) 중 어느 하나의 제1 버퍼에 저장되는 데이터 블록은 비휘발성 메모리 소자(600)로 전송될 수 있다. 이 경우 비휘발성 메모리 소자(600) 내에서의 데이터 블록 업데이트 과정은 도 9 내지 도 13을 참조하여 설명한 바와 동일하다.
도 23은 본 개시의 또 다른 예에 따른 비휘발성 메모리 시스템을 나타내 보인 블록도이다. 도 23을 참조하면, 본 예에 따른 비휘발성 메모리 시스템(700)은, 호스트 시스템(710), 메모리 컨트롤러(720), 및 비휘발성 메모리소자(300)를 포함하여 구성된다. 비휘발성 메모리소자(300)는 도 1 및 도 2를 참조하여 설명한 바와 동일하다.
호스트 시스템(710)은, 프로세서(711)를 포함할 수 있다. 프로세서(711)는, 하나 이상의 프로세싱 코어들을 포함할 수 있다. 프로세서(711)는 캐시(712)를 포함할 수 있다. 일 예에서 캐시(712) 내에는 프로세서(711)가 처리할 커맨드, 데이터, 및 어드레스가 저장될 수 있다. 호스트 시스템(710)을 구성하는 프로세서(711)와 메모리 컨트롤러(720)는 캐시 라인(730)을 통해 통신한다. 일 예에서 캐시 라인(730)을 통해 전송되는 데이터 용량은 캐시(712)의 저장 용량과 동일할 수 있다. 예컨대 캐시(712)의 저장 용량 및 캐시 라인(730)의 데이터 전송 용량은 각각 64 Byte로 구성될 수 있다.
메모리 컨트롤러(720)는 내부의 제1 버퍼(721)를 포함한다. 제1 버퍼(721)는 캐시 라인(7360)을 통해 전송되는 데이터 용량보다 큰 크기의 용량을 갖는다. 일 예에서 제1 버퍼(721)의 저장 용량, 즉 비휘발성 메모리 소자(300)의 읽기/쓰기 데이터 단위는 캐시 라인(730)의 데이터 전송 용량의 적어도 2배 이상일 수 있다. 예컨대 제1 버퍼(721)의 저장 용량 및 비활성 메모리소자(300)의 읽기/쓰기 데이터 단위가 캐시 라인(730)의 데이터 전송 용량의 4배인 경우, 캐시 라인(214)의 데이터 전송 용량이 64 Byte로 구성되고, 제1 버퍼(221)는 256 Byte의 저장 용량을 갖는다. 따라서, 제1 버퍼(721)가 데이터로 모두 채워지기 위해서는 캐시 라인(730)을 통해 4번의 데이터 전송이 이루어져야 한다.
메모리 컨트롤러(720)와 비휘발성 메모리소자(300)는 제1 버퍼(721)와 동일한 데이터 전송 용량을 갖는 메모리 버스(740)를 통해 통신할 수 있다. 즉 메모리 버스(740)의 전송 용량은, 메모리 컨트롤러(720)의 제1 버퍼(721)의 저장 용량, 비휘발성 메모리소자(300)의 제2 버퍼(320)의 저장 용량, 및 메모리 셀(310)의 메모리 페이지들 각각의 저장 용량과 동일할 수 있다. 따라서 메모리 컨트롤러(720) 내의 제1 버퍼(721)를 모두 채우는 데이터 블록들은, 메모리 버스(740)를 통해 하나의 프로세스로 비휘발성 메모리소자(300)의 제2 버퍼(320)로 전송될 수 있다. 다른 예에서 메모리 버스(740)의 데이터전송 용량은 비휘발성 메모리소자(300)의 읽기/쓰기 데이터 단위의 크기보다 작을 수도 있다. 이 경우 메모리 컨트롤러(720) 내의 제1 버퍼(721)를 모두 채우는 데이터 블록들이 비휘발성 메모리소자(300)의 제2 버퍼(320)로 전송되는 과정은 복수의 프로세스들을 통해 수행될 수 있다.
본 예에 따른 비휘발성 메모리 시스템(700)의 동작을 도 3 내지 도 13을 참조하여 설명한 바와 동일하다. 즉, 호스트 시스템(710)의 프로세서(711)로부터 캐시 라인(730)을 통해 캐시 라인(730)의 데이터 전송 용량, 예컨대 64 Byte 단위의 데이터 블록이 메모리 컨트롤러(720)로 전송되면, 메모리 컨트롤러(720) 내의 제1 버퍼(721)에 저장된다. 메모리 컨트롤러(720)는, 제1 버퍼(721) 내에 데이터 블록이 전송되더라도 제1 버퍼(721)가 데이터 블록들로 모두 채워질 때까지 제1 버퍼(721) 내의 데이터 블록들이 비휘발성 메모리소자(300)로 전송되는 것을 보류한다. 그리고 제1 버퍼(721)가 데이터 블록들로 모두 채워진 후에 제1 버퍼(721) 내의 데이터 블록들을 비휘발성 메모리소자(300)로 전송시킨다.
제1 버퍼(721)가 비워져야 하는 경우, 예컨대 다른 페이지 어드레스의 쓰기 명령이 호스트 시스템(710)의 프로세서(711)로부터 전송되는 경우가 발생되는 경우, 메모리 컨트롤러(720)는 제1 버퍼(721)가 데이터 블록들로 모두 채워지기 전에 제1 버퍼(721) 내의 데이터 블록들을 비휘발성 메모리소자(300)로 전송시킬 수도 있다. 예컨대 256 Byte 용량의 제1 버퍼(721)에 2개의 64 Byte의 데이터 블록들이 채워진 상태, 즉 제1 버퍼(721)의 절반만 데이터 블록들로 채워진 상태에서 이 데이터 블록들을 비휘발성 메모리소자(300)로 전송시킬 수 있다. 이 경우 비휘발성 메모리소자(300)는 통상의 읽기/변경/쓰기 모드로 동작할 수 있다. 즉 비휘발성 메모리소자(300)는, 비휘발성 메모리소자(300) 내부의 제2 버퍼에 256 Byte의 전체 데이터를 읽은 후에 전송된 128 Byte 데이터 블록들을 제2 버퍼로 읽어 들인 전체 데이터에 병합한 후에 메모리 셀에 쓸 수 있도록 구성될 수 있다.
도 24는 본 개시의 또 다른 예에 따른 비휘발성 메모리 시스템을 나타내 보인 블록도이다. 도 24를 참조하면, 본 예에 따른 비휘발성 메모리 시스템(800)은, 호스트 시스템(810), 메모리 컨트롤러(820), 및 비휘발성 메모리소자(600)를 포함하여 구성된다. 비휘발성 메모리소자(600)는 도 14를 참조하여 설명한 바와 동일하다.
호스트 시스템(810)은, 프로세서(811)를 포함할 수 있다. 프로세서(811)는, 하나 이상의 프로세싱 코어들을 포함할 수 있다. 프로세서(811)는 캐시(812)를 포함할 수 있다. 일 예에서 캐시(812) 내에는 프로세서(811)가 처리할 커맨드, 데이터, 및 어드레스가 저장될 수 있다. 호스트 시스템(810)을 구성하는 프로세서(811)와 메모리 컨트롤러(820)는 캐시 라인(830)을 통해 통신한다. 일 예에서 캐시 라인(830)을 통해 전송되는 데이터 용량은 캐시(812)의 저장 용량과 동일할 수 있다. 예컨대 캐시(812)의 저장 용량 및 캐시 라인(830)의 데이터 전송 용량은 각각 64 Byte로 구성될 수 있다.
메모리 컨트롤러(820)는 복수개, 예컨대 3개의 제1 버퍼들(821-823)을 포함한다. 비록 본 예에서 메모리 컨트롤러(820)는 3개의 제1 버퍼들(821-823)을 갖지만, 이는 단지 설명의 간단을 위한 하나의 예시로서, 메모리 컨트롤러(820)는 2개 또는 3개보다 더 많은 제1 버퍼들을 포함할 수 있다. 제1 버퍼들(821-823) 각각은, 캐시 라인(830)을 통해 전송되는 데이터 용량보다 큰 크기의 용량을 갖는다. 일 예에서 제1 버퍼들(821-823) 각각의 저장 용량, 즉 비휘발성 메모리 시스템(800)의 읽기/쓰기 데이터 단위는 캐시 라인(812)의 데이터 전송 용량의 적어도 2배 이상일 수 있다. 본 예에서는 제1 버퍼들(821-823) 각각의 저장 용량이 캐시 라인(812)의 데이터 전송 용량의 4배인 경우를 예로 들어 설명하기로 한다. 이 경우 캐시 라인(812)의 데이터 전송 용량이 64 Byte로 구성되고, 제1 버퍼들(821-823) 각각은 256 Byte의 저장 용량을 갖는다. 따라서 제1 버퍼들(821-823) 각각이 데이터로 모두 채워지기 위해서는 각각 캐시 라인(812)을 통해 4번의 데이터 전송이 이루어져야 한다.
메모리 컨트롤러(820)와 비휘발성 메모리소자(600)는 제1 버퍼들(821-823) 각각과 동일한 데이터 전송 용량을 갖는 메모리 버스(840)를 통해 통신할 수 있다. 즉 메모리 버스(840)의 전송 용량은, 메모리 컨트롤러(820)의 제1 버퍼들(821-823) 각각의 저장 용량, 비휘발성 메모리소자(600)의 제2 버퍼들(621, 622) 각각의 저장 용량, 및 메모리 셀(610)의 메모리 페이지들 각각의 저장 용량과 동일할 수 있다. 따라서 메모리 컨트롤러(820) 내의 제1 버퍼들(821-823) 중 어느 하나의 제1 버퍼를 모두 채우는 데이터 블록들은, 메모리 버스(840)를 통해 하나의 프로세스로 비휘발성 메모리소자(600)의 제2 버퍼들(621, 622) 중 어느 하나의 제2 버퍼로 전송될 수 있다. 본 예에 따른 비휘발성 메모리 시스템(800)의 동작을 도 15 내지 도 22를 참조하여 설명한 바와 동일하다.
상술한 바와 같이 본 출원의 실시 형태들을 도면들을 예시하며 설명하지만, 이는 본 출원에서 제시하고자 하는 바를 설명하기 위한 것이며, 세밀하게 제시된 형상으로 본 출원에서 제시하고자 하는 바를 한정하고자 한 것은 아니다.
100...비휘발성 메모리 시스템 200...호스트 시스템
210...프로세서 211...캐시(cache)
214...캐시 라인(cache line) 220...메모리 컨트롤러
221...제1 버퍼 250...메모리 버스
300...비휘발성 메모리소자 310...메모리 셀
320...제2 버퍼

Claims (29)

  1. 캐시를 갖는 프로세서;
    상기 캐시 크기보다 큰 크기의 읽기/쓰기 데이터 단위를 갖는 제1 버퍼를 포함하는 메모리 컨트롤러; 및
    상기 읽기/쓰기 데이터 단위와 같은 크기의 제2 버퍼 및 메모리 셀을 갖는 비휘발성 메모리소자를 포함하되,
    상기 메모리 컨트롤러는, 상기 프로세서로부터의 쓰기 명령에 따라 상기 캐시 크기의 쓰기 데이터 블록들로 상기 제1 버퍼를 모두 채운 후에 상기 제1 버퍼를 채운 데이터 블록들을 상기 비휘발성 메모리소자의 제2 버퍼에 전송하는 비휘발성 메모리 시스템.
  2. 제1항에 있어서,
    상기 프로세스 및 메모리 컨트롤러는 호스트 시스템을 구성하는 비휘발성 메모리 시스템.
  3. 제1항에 있어서,
    상기 프로세스 및 메모리 컨트롤러는 상기 캐시 크기와 동일한 데이터 전송 용량을 갖는 캐시 라인을 통해 통신하는 비휘발성 메모리 시스템.
  4. 제1항에 있어서,
    상기 읽기/쓰기 데이터 단위의 크기는 상기 캐시 크기의 적어도 2배 이상인 비휘발성 메모리 시스템.
  5. 제1항에 있어서,
    상기 비휘발성 메모리소자의 메모리 셀은 복수개의 페이지들을 포함하는 비휘발성 메모리 시스템.
  6. 제5항에 있어서,
    상기 제1 버퍼 및 제2 버퍼는 상기 페이지들 각각의 용량과 동일한 데이터 저장 용량을 갖는 비휘발성 메모리 시스템.
  7. 제6항에 있어서,
    상기 비휘발성 메모리소자는, 상기 제1 버퍼 내의 데이터 블록들이 상기 제2 버퍼에 전송된 후에 상기 제2 버퍼 내의 데이터 블록들을 상기 메모리 셀의 페이지들 중 비어있는 페이지에 저장시키는 비휘발성 메모리 시스템.
  8. 제1항에 있어서,
    상기 메모리 컨트롤러는, 상기 프로세서로부터의 쓰기 명령에 따라 상기 캐시 크기의 쓰기 데이터 블록들로 상기 제1 버퍼가 모두 채워지기 전에 다른 쓰기 명령이 발생되는 경우, 상기 제1 버퍼를 일부 채운 데이터 블록들을 상기 비휘발성 메모리소자의 제2 버퍼에 전송하는 비휘발성 메모리 시스템.
  9. 제8항에 있어서,
    상기 비휘발성 메모리소자는, 상기 제1 버퍼 내의 데이터 블록들이 상기 제2 버퍼에 전송된 후에 상기 제2 버퍼 내의 데이터 블록들을 상기 메모리 셀에 저장시키는 비휘발성 메모리 시스템.
  10. 제1항에 있어서,
    상기 메모리 컨트롤러는, 상기 제1 버퍼를 복수개 포함하는 비휘발성 메모리 시스템.
  11. 제10항에 있어서,
    상기 메모리 컨트롤러는, 복수개의 제1 버퍼들 중 어느 하나의 제1 버퍼에는 상기 메모리 셀들의 어느 하나의 페이지 데이터에 대응되는 데이터 블록들을 채우고, 다른 하나의 제1 버퍼에는 다른 하나의 페이지 데이터에 대응되는 데이터 블록들을 채우는 비휘발성 메모리 시스템.
  12. 제11항에 있어서,
    상기 메모리 컨트롤러는, 상기 어느 하나의 제1 버퍼 및 다른 하나의 제1 버퍼 중 데이터 블록들로 먼저 채워진 제1 버퍼의 데이터 블록들을 상기 비휘발성 메모리소자의 제2 버퍼에 전송하는 비휘발성 메모리 시스템.
  13. 제12항에 있어서,
    상기 비휘발성 메모리소자는, 데이터 블록들로 먼저 채워진 제1 버퍼의 데이터 블록들이 상기 비휘발성 메모리소자의 제2 버퍼에 전송된 후에 상기 제2 버퍼 내의 데이터 블록들을 상기 메모리 셀의 페이지들 중 비어있는 페이지에 저장시키는 비휘발성 메모리 시스템.
  14. 제10항에 있어서,
    상기 메모리 컨트롤러는, 상기 제1 버퍼들이 모두 채워지기 전에 다른 쓰기 명령이 발생되는 경우, 상기 제1 버퍼들 중 어느 하나의 제1 버퍼를 일부 채운 데이터 블록들을 상기 비휘발성 메모리소자의 제2 버퍼에 전송하는 비휘발성 메모리 시스템.
  15. 제14항에 있어서,
    상기 비휘발성 메모리소자는, 어느 하나의 제1 버퍼를 일부 채운 데이터 블록들이 상기 비휘발성 메모리소자의 제2 버퍼에 전송된 후에 상기 제2 버퍼 내의 데이터 블록들을 상기 메모리 셀에 저장시키는 비휘발성 메모리 시스템.
  16. 제1항에 있어서,
    상기 비휘발성 메모리소자는, 상기 제2 버퍼를 복수개 포함하는 비휘발성 메모리 시스템.
  17. 제1항에 있어서,
    상기 비휘발성 메모리소자는, FRAM, MRAM, PRAM, 또는 NAND 플래시메모리를 포함하는 비휘발성 메모리 시스템.
  18. 프로세서와 메모리 컨트롤러 사이의 데이터 전송은 캐시 크기 단위로 이루어지고, 상기 메모리 컨트롤러와 비휘발성 메모리소자의 읽기/쓰기 데이터 크기 단위는 상기 캐시 크기 단위보다 큰 비휘발성 메모리 시스템의 동작 방법에 있어서,
    상기 프로세서로부터의 쓰기 명령에 따라 상기 캐시 크기 단위의 데이터 블록을 상기 메모리 컨트롤러 내의 제1 버퍼에 저장하는 병합 단계;
    상기 제1 버퍼가 상기 데이터 블록으로 채워질 때까지 상기 병합 단계를 반복하여 수행하는 단계; 및
    상기 제1 버퍼가 데이터 블록들로 채워진 후에 상기 제1 버퍼를 채운 데이터 블록들을 상기 비휘발성 메모리소자의 제2 버퍼로 전송하는 단계를 포함하는 비휘발성 메모리 시스템의 동작 방법.
  19. 제18항에 있어서,
    상기 메모리 컨트롤러 내의 제1 버퍼 및 상기 비휘발성 메모리소자의 제2 버퍼는, 상기 읽기/쓰기 데이터 크기와 같은 저장 용량을 갖는 비휘발성 메모리 시스템의 동작 방법.
  20. 제18항에 있어서,
    상기 읽기/쓰기 데이터 크기는 상기 캐시 크기의 적어도 2배 이상인 비휘발성 메모리 시스템의 동작 방법.
  21. 제18항에 있어서,
    상기 제1 버퍼 내의 데이터 블록들을 상기 비휘발성 메모리소자의 제2 버퍼로 전송한 후에 상기 제2 버퍼 내의 데이터 블록들을 상기 비휘발성 메모리소자의 메모리 셀의 페이지들 중 비어있는 페이지에 저장시키는 단계를 더 포함하는 비휘발성 메모리 시스템의 동작 방법.
  22. 제18항에 있어서,
    상기 제1 버퍼가 상기 데이터 블록으로 채워지기 전에 다른 쓰기 명령이 발생되는 경우, 상기 제1 버퍼를 일부 채운 데이터 블록들을 상기 비휘발성 메모리소자의 제2 버퍼에 전송하는 단계를 더 포함하는 비휘발성 메모리 시스템의 동작 방법.
  23. 제22항에 있어서,
    상기 제1 버퍼 내의 데이터 블록들이 상기 제2 버퍼에 전송된 후에 상기 제2 버퍼 내의 데이터 블록들을 상기 비휘발성 메모리소자의 메모리 셀에 저장시키는 단계를 더 포함하는 비휘발성 메모리 시스템의 동작 방법.
  24. 제23항에 있어서,
    상기 제2 버퍼 내의 데이터 블록들을 상기 메모리 셀에 저장시키는 단계는,
    쓰기 명령에 의해 지정된 상기 메모리 셀의 페이지 데이터를 상기 제2 버퍼에 저장하는 단계;
    상기 제2 버퍼에 저장된 페이지 데이터 중 일부를 상기 제1 버퍼로부터 전송되는 데이터 블록들로 대체시키는 단계;
    상기 데이터 블록들로 일부가 대체된 페이지 데이터를 상기 메모리 셀의 동일 페이지에 저장하는 단계를 포함하는 비휘발성 메모리 시스템의 동작 방법.
  25. 프로세서와 메모리 컨트롤러 사이의 데이터 전송은 캐시 크기 단위로 이루어지고, 상기 메모리 컨트롤러와 비휘발성 메모리소자의 읽기/쓰기 데이터 크기 단위는 상기 캐시 크기 단위보다 큰 비휘발성 메모리 시스템의 동작 방법에 있어서,
    상기 프로세서로부터의 쓰기 명령에 따라 상기 캐시 크기 단위의 데이터 블록을 상기 메모리 컨트롤러 내의 제1 버퍼들 중 어느 하나의 제1 버퍼에는 상기 비휘발성 메모리 소자의 제1 페이지 데이터에 대응되는 제1 데이터 블록들을 채우고, 다른 하나의 제1 버퍼에는 상기 비휘발성 메모리 소자의 제2 페이지 데이터에 대응되는 제2 데이터 블록들을 채우는 병합 단계;
    상기 제1 버퍼들 중 상기 어느 하나의 제1 버퍼가 상기 제1 데이터 블록들로 채워지거나 상기 다른 하나의 제1 버퍼가 상기 제2 데이터 블록들로 채워질 때까지 상기 병합 단계를 반복하여 수행하는 단계; 및
    상기 제1 버퍼들 중 상기 어느 하나의 제1 버퍼가 상기 제1 데이터 블록들로 채워지거나 상기 다른 하나의 제1 버퍼가 상기 제2 데이터 블록들로 채워진 후에 먼저 제1 버퍼를 채운 데이터 블록들을 상기 비휘발성 메모리소자의 제2 버퍼로 전송하는 단계를 포함하는 비휘발성 메모리 시스템의 동작 방법.
  26. 제25항에 있어서,
    상기 제1 버퍼를 채운 데이터 블록들이 상기 비휘발성 메모리소자의 제2 버퍼에 전송된 후에 상기 제2 버퍼 내의 데이터 블록들을 상기 비휘발성 메모리소자의 메모리 셀의 페이지들 중 비어있는 페이지에 저장시키는 단계를 더 포함하는 비휘발성 메모리 시스템의 동작 방법.
  27. 제25항에 있어서,
    상기 제1 버퍼들이 모두 채워지기 전에 다른 쓰기 명령이 발생되는 경우, 상기 제1 버퍼들 중 어느 하나의 제1 버퍼를 일부 채운 데이터 블록들을 상기 비휘발성 메모리소자의 제2 버퍼에 전송하는 비휘발성 메모리 시스템의 동작 방법.
  28. 제27항에 있어서,
    상기 어느 하나의 제1 버퍼를 일부 채운 데이터 블록들이 상기 비휘발성 메모리소자의 제2 버퍼에 전송된 후에 상기 제2 버퍼 내의 데이터 블록들을 상기 비휘발성 메모리소자의 메모리 셀에 저장시키는 단계를 더 포함하는 비휘발성 메모리 시스템의 동작 방법.
  29. 제28항에 있어서,
    상기 제2 버퍼 내의 데이터 블록들을 상기 메모리 셀에 저장시키는 단계는,
    쓰기 명령에 의해 지정된 상기 메모리 셀의 페이지 데이터를 상기 제2 버퍼에 저장하는 단계;
    상기 제2 버퍼에 저장된 페이지 데이터 중 일부를 상기 제1 버퍼로부터 전송되는 데이터 블록들로 대체시키는 단계;
    상기 데이터 블록들로 일부가 대체된 페이지 데이터를 상기 메모리 셀의 동일 페이지에 저장하는 단계를 포함하는 비휘발성 메모리 시스템의 동작 방법.
KR1020170071600A 2017-06-08 2017-06-08 비휘발성 메모리 시스템 및 그 동작 방법 KR20180134119A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020170071600A KR20180134119A (ko) 2017-06-08 2017-06-08 비휘발성 메모리 시스템 및 그 동작 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170071600A KR20180134119A (ko) 2017-06-08 2017-06-08 비휘발성 메모리 시스템 및 그 동작 방법

Publications (1)

Publication Number Publication Date
KR20180134119A true KR20180134119A (ko) 2018-12-18

Family

ID=64952317

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170071600A KR20180134119A (ko) 2017-06-08 2017-06-08 비휘발성 메모리 시스템 및 그 동작 방법

Country Status (1)

Country Link
KR (1) KR20180134119A (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220102540A (ko) * 2021-01-13 2022-07-20 삼성전자주식회사 호스트 메모리 버퍼를 이용하는 프로세서 및 이를 포함하는 스토리지 시스템
US11544198B2 (en) 2020-11-26 2023-01-03 SK Hynix Inc. Data storage device employing caching groups defined by write counts of data blocks and operating method thereof

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11544198B2 (en) 2020-11-26 2023-01-03 SK Hynix Inc. Data storage device employing caching groups defined by write counts of data blocks and operating method thereof
KR20220102540A (ko) * 2021-01-13 2022-07-20 삼성전자주식회사 호스트 메모리 버퍼를 이용하는 프로세서 및 이를 포함하는 스토리지 시스템

Similar Documents

Publication Publication Date Title
US7193923B2 (en) Semiconductor memory device and access method and memory control system for same
US11573742B2 (en) Dynamic data placement for collision avoidance among concurrent write streams
US11487666B2 (en) Timed data transfer between a host system and a memory sub-system
KR101573047B1 (ko) 복합 메모리 장치 및 이를 이용한 i/o 처리 방법
US11709632B2 (en) Input/output size control between a host system and a memory sub-system
KR20210019580A (ko) 메모리 시스템의 분리된 성능 도메인
CN112384890A (zh) 预测性分页以加速存储器存取
US9268681B2 (en) Heterogeneous data paths for systems having tiered memories
JP2011118469A (ja) メモリ管理装置およびメモリ管理方法
US11269552B2 (en) Multi-pass data programming in a memory sub-system having multiple dies and planes
US11782841B2 (en) Management of programming mode transitions to accommodate a constant size of data transfer between a host system and a memory sub-system
US11537305B1 (en) Dissimilar write prioritization in ZNS devices
CN114746834A (zh) 基于分区状态的分区附加命令调度
US10235049B2 (en) Device and method to manage access method for memory pages
KR20180134119A (ko) 비휘발성 메모리 시스템 및 그 동작 방법
US20240036768A1 (en) Partial Execution of a Write Command from a Host System
US11262936B2 (en) Memory controller, storage device, information processing system, and memory control method
JP2011070470A (ja) 半導体記憶装置
US20210181980A1 (en) Storage System and Method for Improving Utilization of a Communication Channel between a Host and the Storage System
JP6145227B2 (ja) 半導体装置
JP2005250831A (ja) 半導体メモリ装置
CN115295046A (zh) 具有优化读取的非易失性存储器