KR102504291B1 - Method for managing buffer memory and method for performing write operation using the same - Google Patents

Method for managing buffer memory and method for performing write operation using the same Download PDF

Info

Publication number
KR102504291B1
KR102504291B1 KR1020160029104A KR20160029104A KR102504291B1 KR 102504291 B1 KR102504291 B1 KR 102504291B1 KR 1020160029104 A KR1020160029104 A KR 1020160029104A KR 20160029104 A KR20160029104 A KR 20160029104A KR 102504291 B1 KR102504291 B1 KR 102504291B1
Authority
KR
South Korea
Prior art keywords
buffer memory
memory
data
command
same
Prior art date
Application number
KR1020160029104A
Other languages
Korean (ko)
Other versions
KR20170092430A (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 US15/413,407 priority Critical patent/US10353626B2/en
Publication of KR20170092430A publication Critical patent/KR20170092430A/en
Application granted granted Critical
Publication of KR102504291B1 publication Critical patent/KR102504291B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes

Abstract

버퍼 메모리 관리 방법 및 이를 이용한 라이트 동작 수행 방법에 관하여 개시한다. 라이트 동작 수행 방법은 현재 수신된 라이트 동작을 지시하는 커맨드의 데이터 패턴과 이전에 수신된 커맨드들의 데이터 패턴을 비교하는 단계 및, 상기 라이트 동작을 지시하는 커맨드의 데이터 패턴이 이전에 수신된 커맨드들의 데이터 패턴과 동일한 경우에, 상기 이전에 수신된 커맨드들의 데이터 패턴을 재사용하여 상기 라이트 동작을 지시하는 커맨드에 따른 라이트 동작을 수행하는 단계를 포함한다.A method for managing a buffer memory and a method for performing a write operation using the same are disclosed. A method of performing a write operation includes comparing a data pattern of a command instructing a currently received write operation with a data pattern of previously received commands, and comparing the data pattern of a command instructing a write operation with data of previously received commands. and performing a write operation according to a command instructing the write operation by reusing the data pattern of the previously received commands when the pattern is the same.

Description

버퍼 메모리 관리 방법 및 이를 이용한 라이트 동작 수행 방법{Method for managing buffer memory and method for performing write operation using the same}Method for managing buffer memory and method for performing write operation using the same}

본 발명은 스토리지 디바이스 및 스토리지 디바이스에서의 커맨드 수행 방법에 관한 것으로서, 자세하게는 버퍼 메모리 관리 방법 및 이를 이용한 라이트 동작 수행 방법에 관한 것이다.The present invention relates to a storage device and a command execution method in the storage device, and more particularly, to a buffer memory management method and a write operation execution method using the same.

비휘발성 메모리 디바이스 중의 하나인 플래시 메모리 디바이스는 빠른 속도와 적은 소비전력으로 인하여 스토리지 디바이스에서 각광을 받고 있다. 플래시 메모리 디바이스를 채용하는 스토리지 디바이스는 많은 액세스가 일어나는 웹 서버나 파일 서버, 또는 DB 서버 등에서 활용되고 있다. 이러한 서버 환경에서의 스토리지 디바이스의 일정 저장 영역을 동일한 패턴으로 라이트하는 백 패터닝(back patterning) 동작을 펌웨어 오버헤드를 줄이면서 빠르게 처리하는 기술이 필요하게 되었다.A flash memory device, which is one of non-volatile memory devices, has been spotlighted as a storage device due to its high speed and low power consumption. A storage device employing a flash memory device is used in a web server, a file server, or a DB server where many accesses occur. In such a server environment, a technology for quickly processing a back patterning operation of writing a certain storage area of a storage device in the same pattern while reducing firmware overhead is required.

본 발명의 목적은 동일한 패턴을 라이트하는 동작에서의 펌웨어 오버헤드를 줄이기 위한 버퍼 메모리 관리 방법을 제공하는데 있다.An object of the present invention is to provide a buffer memory management method for reducing firmware overhead in an operation of writing the same pattern.

본 발명의 다른 목적은 동일한 패턴을 라이트하는 동작에서의 펌웨어 오버헤드를 줄이기 위한 라이트 동작 수행 방법을 제공하는데 있다.Another object of the present invention is to provide a method for performing a write operation to reduce firmware overhead in an operation of writing the same pattern.

본 발명의 기술적 사상의 일면에 따른 라이트 동작 수행 방법은 현재 수신된 라이트 동작을 지시하는 커맨드의 데이터 패턴과 이전에 수신된 커맨드들의 데이터 패턴을 비교하는 단계 및, 상기 라이트 동작을 지시하는 커맨드의 데이터 패턴이 이전에 수신된 커맨드들의 데이터 패턴과 동일한 경우에, 상기 이전에 수신된 커맨드들의 데이터 패턴을 재사용하여 상기 라이트 동작을 지시하는 커맨드에 따른 라이트 동작을 수행하는 단계를 포함한다.According to one aspect of the technical idea of the present invention, a method for performing a write operation includes comparing a data pattern of a command instructing a currently received write operation with a data pattern of previously received commands, and data of a command instructing the write operation. and performing a write operation according to a command instructing the write operation by reusing the data pattern of the previously received commands when the pattern is the same as the data pattern of previously received commands.

발명의 기술적 사상의 다른 면에 따른 버퍼 메모리 관리 방법은 호스트로부터 수신되는 커맨드의 데이터를 순차적으로 버퍼 메모리에 카피하는 단계 및, 상기 버퍼 메모리 내의 모든 페이지 버퍼들이 동일한 데이터 패턴으로 카피되어 있는 상태에서 상기 버퍼 메모리에 카피되어 있는 데이터 패턴과 동일한 데이터 패턴의 라이트 세임 커맨드(write same command)가 수신되는 경우에, 상기 버퍼 메모리에 상기 라이트 세임 커맨드의 데이터를 카피하는 동작을 스킵하는 단계를 포함하고, 상기 버퍼 메모리에 카피된 데이터를 이용하여 상기 라이트 세임 커맨드에 따른 라이트 동작을 수행하는 것을 특징으로 한다.According to another aspect of the technical concept of the present invention, a buffer memory management method includes sequentially copying data of a command received from a host to a buffer memory, and in a state in which all page buffers in the buffer memory are copied with the same data pattern. skipping an operation of copying data of the write same command to the buffer memory when a write same command having the same data pattern as a data pattern copied to the buffer memory is received; It is characterized in that a write operation according to the write same command is performed using the data copied to the buffer memory.

본 발명에 따르면 동일한 데이터 패턴을 반복적으로 라이트하는 커맨드를 처리할 때 버퍼 메모리에 커맨드의 데이터 패턴을 카피하는 동작을 스킵 처리하고 이전의 커맨드들의 데이터 패턴을 재사용하도록 버퍼 메모리를 관리함으로써, 라이트 세임 커맨드 처리 성능을 향상시킬 수 있는 효과가 발생된다.According to the present invention, when a command that repeatedly writes the same data pattern is processed, an operation of copying the data pattern of the command to the buffer memory is skipped and the buffer memory is managed to reuse the data pattern of previous commands, thereby enabling write same command. An effect capable of improving processing performance is generated.

그리고, 다이렉트 메모리 액세스 기능을 이용하여 버퍼 메모리에 커맨드의 데이터 패턴을 카피하는 동작과 펌웨어에서의 커맨드 처리 동작을 병렬적으로 수행함으로써, 라이트 세임 커맨드 처리 성능을 향상시킬 수 있는 효과가 발생된다.In addition, by parallelly performing an operation of copying a data pattern of a command to a buffer memory using a direct memory access function and a command processing operation in firmware, an effect of improving write same command processing performance occurs.

도 1a는 본 발명의 기술적 사상에 따른 컴퓨팅 시스템 구성의 일 예를 보여준다.
도 1b는 본 발명의 기술적 사상에 따른 컴퓨팅 시스템 구성의 다른 예를 보여준다.
도 2a는 본 발명의 기술적 사상에 따른 컴퓨팅 시스템 구성의 또 다른 예를 보여준다.
도 2b는 본 발명의 기술적 사상에 따른 컴퓨팅 시스템 구성의 또 다른 예를 보여준다.
도 3a는 도 1a 또는 도 2a에 도시된 스토리지 디바이스에 대한 세부 구성의 일 예를 보여주는 도면이다.
도 3b는 도 1b 또는 도 2b에 도시된 스토리지 디바이스에 대한 세부 구성의 일 예를 보여주는 도면이다.
도 4a는 도 3a에 도시된 메모리 컨트롤러 구성의 일 예를 보여준다.
도 4b는 도 3b에 도시된 메모리 컨트롤러 구성의 일 예를 보여준다.
도 5는 도 3a 또는 도 3b에 도시된 메모리 디바이스의 세부 구성의 일 예를 보여준다.
도 6은 도 5에 도시된 메모리 셀 어레이의 일 예를 보여준다.
도 7은 도 6에 도시된 메모리 셀 어레이에 포함된 제1메모리 블록의 일 예를 나타내는 회로도이다.
도 8은 본 발명의 실시 예에 따른 메모리 컨트롤러에서 라이트 세임 커맨드의 데이터를 처리하는 과정을 보여주는 도면이다.
도 9는 본 발명의 실시 예에 따른 메모리 컨트롤러의 버퍼 메모리에 라이트 세임 커맨드의 데이터가 카피되는 과정의 일 예를 보여주는 도면이다.
도 10은 본 발명의 실시 예에 따른 메모리 컨트롤러의 버퍼 메모리에 라이트 세임 커맨드의 데이터가 카피되는 과정의 다른 예를 보여주는 도면이다.
도 11은 본 발명의 실시 예에 따른 메모리 컨트롤러의 버퍼 메모리에서의 데이터의 통일성을 확인하는 방법을 보여주는 도면이다.
도 12는 본 발명의 실시 예에 따른 메모리 컨트롤러에서의 라이트 세임 커맨드를 수행하는 과정의 일 예를 보여주는 도면이다.
도 13은 본 발명의 실시 예에 따른 메모리 컨트롤러에서의 라이트 세임 커맨드를 수행하는 과정의 다른 예를 보여주는 도면이다.
도 14는 본 발명의 실시 예에 따른 메모리 컨트롤러에서의 다이렉트 메모리 액세스 모듈을 이용하지 않고 라이트 세임 커맨드를 수행하는 과정의 일 예를 보여주는 도면이다.
도 15는 본 발명의 실시 예에 따른 메모리 컨트롤러에서의 다이렉트 메모리 액세스 모듈을 이용하여 라이트 세임 커맨드를 수행하는 과정의 일 예를 보여주는 도면이다.
도 16은 본 발명의 실시 예에 따른 메모리 컨트롤러에서의 메모리 버퍼 내의 데이터 통일성이 확인된 경우의 라이트 세임 커맨드를 수행하는 과정의 일 예를 보여주는 도면이다.
도 17은 본 발명의 실시 예에 따른 라이트 동작 수행 방법의 흐름도이다.
도 18은 본 발명의 실시 예에 따른 버퍼 메모리 관리 방법의 흐름도이다.
도 19는 본 발명의 실시 예에 따른 컴퓨팅 시스템에서 수행되는 라이트 동작 방법의 흐름도이다.
1A shows an example of a configuration of a computing system according to the technical spirit of the present invention.
Figure 1b shows another example of a configuration of a computing system according to the technical idea of the present invention.
2a shows another example of a configuration of a computing system according to the technical idea of the present invention.
2b shows another example of a configuration of a computing system according to the technical idea of the present invention.
FIG. 3A is a diagram showing an example of a detailed configuration of the storage device shown in FIG. 1A or 2A.
FIG. 3B is a diagram showing an example of a detailed configuration of the storage device shown in FIG. 1B or 2B.
4A shows an example of a memory controller configuration shown in FIG. 3A.
FIG. 4B shows an example of the configuration of the memory controller shown in FIG. 3B.
5 shows an example of a detailed configuration of the memory device shown in FIG. 3A or 3B.
FIG. 6 shows an example of the memory cell array shown in FIG. 5 .
FIG. 7 is a circuit diagram illustrating an example of a first memory block included in the memory cell array shown in FIG. 6 .
8 is a diagram illustrating a process of processing data of a write same command in a memory controller according to an embodiment of the present invention.
9 is a diagram illustrating an example of a process of copying data of a write same command to a buffer memory of a memory controller according to an embodiment of the present invention.
10 is a diagram illustrating another example of a process of copying data of a write same command to a buffer memory of a memory controller according to an embodiment of the present invention.
11 is a diagram illustrating a method of checking unity of data in a buffer memory of a memory controller according to an embodiment of the present invention.
12 is a diagram illustrating an example of a process of executing a write same command in a memory controller according to an embodiment of the present invention.
13 is a diagram showing another example of a process of executing a write same command in a memory controller according to an embodiment of the present invention.
14 is a diagram illustrating an example of a process of executing a write same command without using a direct memory access module in a memory controller according to an embodiment of the present invention.
15 is a diagram illustrating an example of a process of executing a write same command using a direct memory access module in a memory controller according to an embodiment of the present invention.
16 is a diagram illustrating an example of a process of executing a write same command when consistency of data in a memory buffer is confirmed in a memory controller according to an embodiment of the present invention.
17 is a flowchart of a method for performing a write operation according to an embodiment of the present invention.
18 is a flowchart of a buffer memory management method according to an embodiment of the present invention.
19 is a flowchart of a light operation method performed in a computing system according to an embodiment of the present invention.

이하, 첨부한 도면을 참조하여 본 발명의 실시 예에 대해 상세히 설명한다. 본 발명의 실시 예는 당 업계에서 평균적인 지식을 가진 자에게 본 발명을 보다 완전하게 설명하기 위하여 제공되는 것이다. 본 발명은 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있는 바, 특정 실시 예들을 도면에 예시하고 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 유사한 구성요소에 대해 사용한다. 첨부된 도면에 있어서, 구조물들의 치수는 본 발명의 명확성을 기하기 위하여 실제보다 확대하거나 축소하여 도시한 것이다.Hereinafter, embodiments of the present invention will be described in detail with reference to the accompanying drawings. The embodiments of the present invention are provided to more completely explain the present invention to those skilled in the art. Since the present invention can have various changes and various forms, specific embodiments will be illustrated in the drawings and described in detail. However, it should be understood that this is not intended to limit the present invention to the specific disclosed form, and includes all modifications, equivalents, and substitutes included in the spirit and scope of the present invention. In describing each figure, like reference numbers are used for like elements. In the accompanying drawings, the dimensions of the structures are shown enlarged or reduced than actual for clarity of the present invention.

본 출원에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서 상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.Terms used in this application are only used to describe specific embodiments, and are not intended to limit the present invention. Singular expressions include plural expressions unless the context clearly dictates otherwise. In this application, terms such as "comprise" or "have" are intended to designate that there is a feature, number, step, operation, component, part, or combination thereof described in the specification, but one or more other features It should be understood that it does not preclude the possibility of the presence or addition of numbers, steps, operations, components, parts, or combinations thereof.

다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 갖는다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.Unless defined otherwise, all terms used herein, including technical or scientific terms, have the same meaning as commonly understood by one of ordinary skill in the art to which this invention belongs. Terms such as those defined in commonly used dictionaries should be interpreted as having a meaning consistent with the meaning in the context of the related art, and unless explicitly defined in this application, they are not interpreted in an ideal or excessively formal meaning. .

도 1a는 본 발명의 기술적 사상에 따른 컴퓨팅 시스템 구성의 일 예(1000A)를 보여준다. 1A shows an example 1000A of a configuration of a computing system according to the technical spirit of the present invention.

도 1a에 도시된 바와 같이, 컴퓨팅 시스템(1000A)은 호스트(100)와 스토리지 디바이스(200A)를 포함한다.As shown in FIG. 1A , a computing system 1000A includes a host 100 and a storage device 200A.

예로서, 컴퓨팅 시스템(1000A)은 개인용 컴퓨터, 셋톱 박스(set-top-box), 디지털 카메라, 네비게이션 장치, 모바일 장치, 스마트 카드 시스템 등이 될 수도 있다. 그리고, 스토리지 디바이스(200A)는 메모리 디바이스, SSD(Solid State Drive), 스마트 카드, 하드디스크 드라이브 등이 될 수 있다.By way of example, computing system 1000A may be a personal computer, set-top-box, digital camera, navigation device, mobile device, smart card system, or the like. Also, the storage device 200A may be a memory device, a solid state drive (SSD), a smart card, a hard disk drive, or the like.

호스트(100)와 I/O 디바이스(200A)는 전기적으로 연결되어 있다. 호스트(100)와 스토리지 디바이스(200A) 사이에서 이용되는 인터페이스 다양한 인터페이스 규격이 적용될 수 있다. 예로서, UFS(Universal Flash Storage) 인터페이스, eMMC(embedded Multi-Media Card) 인터페이스, SATA(Serial Advanced Technology Attachment) 인터페이스, SATAe(Serial Advanced Technology Attachment express) 인터페이스, SCSI(Small Computer System Interface), SCSIe(Small Computer System Interface express), NVMe(Non-Volatile Memory express) 인터페이스, PCI(Peripheral Component Interconnect) 인터페이스, PCIe(Peripheral Component Interconnect Express) 인터페이스 등이 적용될 수 있다.The host 100 and the I/O device 200A are electrically connected. Interface used between the host 100 and the storage device 200A Various interface standards may be applied. For example, Universal Flash Storage (UFS) interface, embedded Multi-Media Card (eMMC) interface, Serial Advanced Technology Attachment (SATA) interface, Serial Advanced Technology Attachment express (SATAe) interface, Small Computer System Interface (SCSI), SCSIe ( Small Computer System Interface express), NVMe (Non-Volatile Memory express) interface, PCI (Peripheral Component Interconnect) interface, PCIe (Peripheral Component Interconnect Express) interface, etc. may be applied.

호스트(100)는 스토리지 디바이스(200A)로 커맨드(CMD)를 전송할 수 있다. 그리고, 호스트(100)와 스토리지 디바이스(200A)간에 데이터(DATA)를 주고받을 수 있다. 예로서, 스토리지 디바이스(200A)는 임베디드 멀티미디어 카드(embedded Multi-Media Card; eMMC) 형태, 또는 유니버설 플래시 스토리지(Universal Flash Storage) 형태 등의 다양한 방식으로 구현될 수 있다.The host 100 may transmit a command CMD to the storage device 200A. In addition, data DATA may be exchanged between the host 100 and the storage device 200A. For example, the storage device 200A may be implemented in various ways, such as an embedded Multi-Media Card (eMMC) type or a universal flash storage type.

호스트(100)는 수행하고자 하는 테스크에 기초하여 발행되는 커맨드(CMD)를 스토리지 디바이스(200A)로 전송한다. 예로서, 호스트(100)에서 발생되는 커맨드(CMD)는 라이트 동작을 지시하는 커맨드 또는 리드 동작을 지시하는 커맨드가 포함될 수 있다. 그리고, 라이트 동작을 지시하는 커맨드에는 라이트 커맨드(write command) 또는 라이트 세임 커맨드(write same command)가 포함될 수 있다. The host 100 transmits a command CMD issued based on a task to be performed to the storage device 200A. For example, the command CMD generated by the host 100 may include a command instructing a write operation or a command instructing a read operation. Also, a command instructing a write operation may include a write command or a write same command.

예로서, 라이트 세임 커맨드는 데이터 패턴(data pattern), 스타트 LBA(start LBA), 길이(length) 정보로 이루어질 수 있다. 예로서, 라이트 세임 커맨드의 데이터 패턴은 하나의 섹터 사이즈로 구성될 수 있다. 라이트 세임 커맨드는 해당 데이터 패턴을 스타트 LBA부터 길이(length) 정보만큼 라이트하는 것을 지시하는 커맨드이다. For example, the write same command may include data pattern, start LBA, and length information. As an example, the data pattern of the write same command may consist of one sector size. The write same command is a command instructing to write a corresponding data pattern as much as length information from the start LBA.

예로서, 라이트 세임 커맨드는 스토리지 디바이스(200A)의 특정 저장 영역을 동일한 데이터 패턴으로 라이트하는 백 패터닝(back patterning) 동작을 수행하는데 이용될 수 있다.For example, the write same command may be used to perform a back patterning operation of writing a specific storage area of the storage device 200A with the same data pattern.

그리고, 호스트(100)는 스토리지 디바이스(200A)에 저장할 데이터(DATA)를 전송하거나, 스토리지 디바이스(200A)로부터 읽어낸 데이터(DATA)를 수신한다. Also, the host 100 transmits data DATA to be stored in the storage device 200A or receives data DATA read from the storage device 200A.

예로서, 호스트(100)는 처리할 데이터가 스토리지 디바이스(200A)에 저장되어 있는 경우에 스토리지 디바이스(200A)로 리드 커맨드를 전송한다. 그리고, 호스트(100)는 처리된 데이터를 스토리지 디바이스(200A)에 저장하고자 하는 경우에 스토리지 디바이스(200A)로 라이트 커맨드 또는 라이트 세임 커맨드를 전송한다.For example, the host 100 transmits a read command to the storage device 200A when data to be processed is stored in the storage device 200A. In addition, the host 100 transmits a write command or a write same command to the storage device 200A when storing the processed data in the storage device 200A.

다른 예로서, 호스트(100)는 페이지 폴트가 발생되는 경우에 메모리 스와핑 동작에 대한 페이지 인 동작 또는 페이지 아웃 동작 중 적어도 하나를 수행하는 리드 커맨드 또는 라이트 커맨드를 스토리지 디바이스(200A)로 전송한다. 페이지 폴트는 호스트(100)에서 애플리케이션 프로세스를 수행하기 위하여 읽고자 하는 페이지가 호스트(100)에 저장되어 있지 않는 경우에 발생된다. As another example, when a page fault occurs, the host 100 transmits a read command or a write command for performing at least one of a page-in operation and a page-out operation for a memory swapping operation to the storage device 200A. A page fault occurs when a page to be read to execute an application process in the host 100 is not stored in the host 100 .

스토리지 디바이스(200A)는 호스트(100)로부터 수신되는 커맨드에 따라서 리드 오퍼레이션 또는 라이트 오퍼레이션을 수행한다. 예로서, 스토리지 디바이스(200A)는 라이트 커맨드에서는 하드웨어로 수행하던 일부 동작을 라이트 세임 커맨드에서는 소프트웨어로 수행할 수 있다. The storage device 200A performs a read operation or a write operation according to a command received from the host 100 . For example, the storage device 200A may perform some operations performed by hardware in a write command by software in a write same command.

스토리지 디바이스(200A)는 버퍼 메모리(201) 및 버퍼 관리 모듈(202)를 포함한다. 버퍼 메모리(202)에는 스토리지 디바이스에 라이트할 데이터가 카피(copy)되거나 스토리지 디바이스에서 읽어낸 데이터가 카피된다. 예로서, 버퍼 메모리(201)는 링 버퍼 메모리(ring buffer memory) 타입으로 구현할 수 있다. 버퍼 관리 모듈(202)은 라이트 커맨드 또는 라이트 세임 커맨드의 데이터를 버퍼 메모리(201)에 카피(copy)하는 동작을 관리한다. The storage device 200A includes a buffer memory 201 and a buffer management module 202 . Data to be written to the storage device is copied to the buffer memory 202 or data read from the storage device is copied. For example, the buffer memory 201 may be implemented as a ring buffer memory type. The buffer management module 202 manages an operation of copying data of a write command or a write same command to the buffer memory 201 .

예로서, 버퍼 관리 모듈(202)은 호스트(100)로부터 수신되는 커맨드의 데이터를 순차적으로 버퍼 메모리(201)에 카피하는 동작을 수행한다. 그리고, 버퍼 관리 모듈(202)은 버퍼 메모리(201) 내의 모든 페이지 버퍼들이 동일한 데이터 패턴으로 카피되어 있는 상태에서 버퍼 메모리(201)에 카피되어 있는 데이터 패턴과 동일한 데이터 패턴의 라이트 세임 커맨드가 수신되는 경우에, 버퍼 메모리(201)에 라이트 세임 커맨드의 데이터를 카피하는 동작을 스킵(skip) 처리한다. 이에 따라서, 라이트 세임 커맨드의 데이터를 버퍼 메모리(201)에 카피하는데 이용되는 펌웨어 처리의 오버헤드를 줄일 수 있게 된다.For example, the buffer management module 202 sequentially copies command data received from the host 100 to the buffer memory 201 . In addition, the buffer management module 202 receives a write same command having the same data pattern as the data pattern copied to the buffer memory 201 in a state in which all page buffers in the buffer memory 201 are copied with the same data pattern. In this case, an operation of copying data of the write same command to the buffer memory 201 is skipped. Accordingly, it is possible to reduce the overhead of firmware processing used to copy data of the write same command to the buffer memory 201 .

스토리지 디바이스(200)는 버퍼 메모리(201) 내의 모든 페이지 버퍼들이 동일한 데이터 패턴으로 카피되어 있는 상태에서 버퍼 메모리(201)에 카피되어 있는 데이터 패턴과 동일한 데이터 패턴의 라이트 세임 커맨드가 수신되는 경우에, 버퍼 메모리(201)에 라이트 세임 커맨드의 데이터를 카피하는 동작을 스킵하고, 버퍼 메모리(201)에 카피된 데이터를 이용하여 라이트 세임 커맨드에 따른 라이트 동작을 수행한다. 이에 따라서, 이전에 수신된 커맨드들의 데이터 패턴을 재사용하여 라이트 세임 커맨드에 따른 라이트 동작을 수행할 수 있게 된다.The storage device 200 receives a write same command having the same data pattern as the data pattern copied to the buffer memory 201 while all page buffers in the buffer memory 201 are copied with the same data pattern. An operation of copying data of the same write command to the buffer memory 201 is skipped, and a write operation according to the same write command is performed using the data copied to the buffer memory 201 . Accordingly, it is possible to perform a write operation according to the write same command by reusing data patterns of previously received commands.

예로서, 버퍼 관리 모듈(202)은 도 17 내지 도 19에 도시된 바와 같은 라이트 동작 수행 방법 또는 버퍼 메모리 관리 방법의 흐름도를 수행하기 위한 프로그램 코드들을 포함할 수 있다.For example, the buffer management module 202 may include program codes for performing a write operation execution method or a flowchart of a buffer memory management method as shown in FIGS. 17 to 19 .

도 1b는 본 발명의 기술적 사상에 따른 컴퓨팅 시스템 구성의 다른 예(1000B)를 보여준다.1B shows another example 1000B of a configuration of a computing system according to the technical idea of the present invention.

도 1b에 도시된 바와 같이, 컴퓨팅 시스템(1000B)은 호스트(100)와 스토리지 디바이스(200B)를 포함한다.As shown in FIG. 1B , a computing system 1000B includes a host 100 and a storage device 200B.

호스트(100)는 도 1a에서 이미 설명하였으므로, 중복적인 설명은 피하기로 한다. 스토리지 디바이스(200B)는 도 1에 도시된 스토리지 디바이스(200A)에 다이렉트 메모리 액세스 모듈(203)이 추가된 구성을 갖는다.Since the host 100 has already been described in FIG. 1A, redundant description will be avoided. The storage device 200B has a configuration in which a direct memory access module 203 is added to the storage device 200A shown in FIG. 1 .

스토리지 디바이스(200B)는 버퍼 메모리(201), 버퍼 관리 모듈(202) 및 다이렉트 메모리 액세스 모듈(DMA 모듈, 203)을 포함한다. 버퍼 메모리(201) 및 버퍼 관리 모듈(202)에 대해서는 도 1a에서 설명하였으므로, 중복적인 설명은 피하기로 한다.The storage device 200B includes a buffer memory 201, a buffer management module 202 and a direct memory access module (DMA module) 203. Since the buffer memory 201 and the buffer management module 202 have been described with reference to FIG. 1A, redundant description will be avoided.

다이렉트 메모리 액세스 모듈(203)은 스토리지 디바이스(200B)의 중앙처리장치(CPU)에 의한 프로그램의 실행 없이 버퍼 메모리(201)에 데이터를 카피하는 동작을 지원한다. 이에 따라서, 다이렉트 메모리 액세스 모듈(203)은 라이트 커맨드 또는 라이트 세임 커맨드를 펌웨어에서 처리하는 동작과 병렬적으로 버퍼 메모리(201)에 데이터를 카피하는 동작을 수행할 수 있다. 이로 인하여, 라이트 커맨드 또는 라이트 세임 커맨드 처리 시간을 단축시킬 수 있다.The direct memory access module 203 supports an operation of copying data to the buffer memory 201 without executing a program by a central processing unit (CPU) of the storage device 200B. Accordingly, the direct memory access module 203 may perform an operation of copying data to the buffer memory 201 in parallel with an operation of processing a write command or a write same command in firmware. Accordingly, it is possible to shorten the processing time of a write command or a write same command.

도 2a는 본 발명의 기술적 사상에 따른 컴퓨팅 시스템 구성의 또 다른 예(2000A)를 보여준다.2A shows another example 2000A of a configuration of a computing system according to the technical spirit of the present invention.

도 2a에 도시된 바와 같이, 컴퓨팅 시스템(2000A)는 호스트(2100)와 I/O 디바이스 블록(2200A)을 구비한다.As shown in FIG. 2A , a computing system 2000A includes a host 2100 and an I/O device block 2200A.

호스트(2100)는 프로세서(2110), 메모리(2120), I/O 제어기(2130), I/O 브리지(2140) 및 I/O 버스(2150)를 포함한다. I/O 디바이스 블록(2200A)에는 복수개의 스토리지 디바이스들(2210-1 ~ 2210-M, 여기서 M은 2 이상의 정수)이 포함되어 있다. The host 2100 includes a processor 2110, a memory 2120, an I/O controller 2130, an I/O bridge 2140, and an I/O bus 2150. The I/O device block 2200A includes a plurality of storage devices 2210-1 to 2210-M, where M is an integer greater than or equal to 2.

예로서, 컴퓨팅 시스템(2000A)은 개인용 컴퓨터, 셋톱 박스(set-top-box), 디지털 카메라, 네비게이션 장치, 모바일 장치, 스마트 카드 시스템, 서버 시스템 등이 될 수도 있다. 그리고, I/O 디바이스 블록(2200A)에 포함된 스토리지 디바이스들(2210-1 ~ 2210-M)은 메모리 디바이스, SSD(Solid State Drive), 스마트 카드, 하드디스크 드라이브 등이 포함될 수 있다.By way of example, computing system 2000A may be a personal computer, set-top-box, digital camera, navigation device, mobile device, smart card system, server system, or the like. Also, the storage devices 2210-1 to 2210-M included in the I/O device block 2200A may include a memory device, a solid state drive (SSD), a smart card, a hard disk drive, and the like.

프로세서(2110)는 컴퓨팅 시스템(2000A)의 구성 수단들의 동작들의 제어를 수행하기 위한 회로, 인터페이스들 또는 프로그램 코드를 포함할 수 있다. 예로서, 프로세서(2110)는 CPU, ARM, 또는 주문형 반도체(ASIC: application specific integrated circuit)를 포함할 수 있다. The processor 2110 may include circuitry, interfaces, or program codes for controlling operations of components of the computing system 2000A. As an example, the processor 2110 may include a CPU, an ARM, or an application specific integrated circuit (ASIC).

메모리(2120)는 컴퓨팅 시스템(2000A)의 동작에 필요한 데이터, 명령들 또는 프로그램 코드들을 저장하는 SRAM 또는 DRAM을 포함할 수 있다. 또한, 비휘발성 메모리를 포함할 수도 있다.The memory 2120 may include SRAM or DRAM for storing data, instructions, or program codes necessary for the operation of the computing system 2000A. Also, it may include non-volatile memory.

프로세서(2110)는 메모리(2120)에 저장된 프로그램들을 구동시켜서 컴퓨팅 시스템(2000A)의 구성 수단들의 동작을 제어할 수 있다.The processor 2110 may control operations of components of the computing system 2000A by driving programs stored in the memory 2120 .

I/O 제어기(2130)는 I/O 디바이스 블록(2200A)의 스토리지 디바이스들(2210-1 ~ 2210-M)을 제어하는 동작을 수행한다. I/O 제어기(2130)는 프로세서(2110)로부터 I/O 커맨드를 수신하고, 수신된 I/O 커맨드에 기초하여 스토리지 디바이스들(2210-1 ~ 2210-M)을 제어한다.The I/O controller 2130 controls the storage devices 2210-1 to 2210-M of the I/O device block 2200A. The I/O controller 2130 receives an I/O command from the processor 2110 and controls the storage devices 2210-1 to 2210-M based on the received I/O command.

호스트 버스(2150)에는 호스트(2100) 구성 수단들이 전기적으로 접속되어 있다. 호스트 버스(2150)를 통하여 호스트(2100) 구성 수단들 간의 데이터 및 신호들을 주고 받을 수 있다.Components of the host 2100 are electrically connected to the host bus 2150 . Through the host bus 2150, data and signals may be exchanged between elements of the host 2100.

I/O 브리지(2140)는 호스트(2100)와 스토리지 디바이스들(2210-1 ~ 2210-M) 간의 데이터 통신을 위한 채널을 제어하는 동작을 수행한다. 예로서, I/O 브리지(2140)는 PCIe 브리지, SAS 브리지, 네트워크 브리지 등으로 구현할 수 있다.The I/O bridge 2140 controls a channel for data communication between the host 2100 and the storage devices 2210-1 to 2210-M. As an example, I/O bridge 2140 may be implemented as a PCIe bridge, a SAS bridge, a network bridge, or the like.

예로서, I/O 디바이스 블록(2200A)에 포함된 스토리지 디바이스들(2210-1 ~ 2210-M)은 각각 도 1a에 도시된 바와 같은 스토리지 디바이스(200A)로 구현될 수 있다. 다른 예로서, 스토리지 디바이스들(2210-1 ~ 2210-M) 각각은 솔리드 스테이트 드라이브(SSD) 또는 하드 디스크 드라이브(HDD)로 구현될 수도 있다. 스토리지 디바이스들(2210-1 ~ 2210-M) 각각은 버퍼 메모리(201-M) 및 버퍼 관리 모듈(202-M)을 포함한다. 버퍼 메모리(201-M) 및 버퍼 관리 모듈(202-M)의 동작은 도 1a에서 언급한 버퍼 메모리(201) 및 버퍼 관리 모듈(202)의 동작과 실질적으로 동일하므로, 중복적인 설명은 피하기로 한다.For example, each of the storage devices 2210-1 to 2210-M included in the I/O device block 2200A may be implemented as a storage device 200A as shown in FIG. 1A. As another example, each of the storage devices 2210-1 to 2210-M may be implemented as a solid state drive (SSD) or hard disk drive (HDD). Each of the storage devices 2210-1 to 2210-M includes a buffer memory 201-M and a buffer management module 202-M. Since the operations of the buffer memory 201-M and the buffer management module 202-M are substantially the same as those of the buffer memory 201 and buffer management module 202 mentioned in FIG. 1A, redundant description will be avoided. do.

도 2b는 본 발명의 기술적 사상에 따른 컴퓨팅 시스템 구성의 또 다른 예(2000B)를 보여준다.2B shows another example 2000B of a configuration of a computing system according to the technical concept of the present invention.

도 2b에 도시된 바와 같이, 컴퓨팅 시스템(2000B)는 호스트(2100)와 I/O 디바이스 블록(2200B)을 구비한다. 호스트(2100)에 대한 동작 설명은 도 1a에서 이미 하였으므로, 중복적인 설명은 피하기로 한다.As shown in FIG. 2B , a computing system 2000B includes a host 2100 and an I/O device block 2200B. Since operation of the host 2100 has already been described in FIG. 1A , redundant description will be avoided.

I/O 디바이스 블록(2200B)에는 복수개의 스토리지 디바이스들(2210'-1 ~ 2210'-M, 여기서 M은 2 이상의 정수)이 포함되어 있다. The I/O device block 2200B includes a plurality of storage devices 2210'-1 to 2210'-M, where M is an integer greater than or equal to 2.

예로서, I/O 디바이스 블록(2200B)에 포함된 스토리지 디바이스들(2210'-1 ~ 2210'-M)은 각각 도 1b에 도시된 바와 같은 스토리지 디바이스(200B)로 구현될 수 있다. 다른 예로서, 스토리지 디바이스들(2210'-1 ~ 2210'-M) 각각은 솔리드 스테이트 드라이브(SSD) 또는 하드 디스크 드라이브(HDD)로 구현될 수도 있다. 스토리지 디바이스들(2210'-1 ~ 2210'-M) 각각은 버퍼 메모리(201-M), 버퍼 관리 모듈(202-M) 및 다이렉트 메모리 액세스 모듈(203-M)을 포함한다. 버퍼 메모리(201-M), 버퍼 관리 모듈(202-M) 및 다이렉트 메모리 액세스 모듈(203-M)의 동작은 도 1b에서 언급한 버퍼 메모리(201), 버퍼 관리 모듈(202) 및 다이렉트 메모리 액세스 모듈(203)의 동작과 실질적으로 동일하므로, 중복적인 설명은 피하기로 한다.For example, each of the storage devices 2210'-1 to 2210'-M included in the I/O device block 2200B may be implemented as a storage device 200B as shown in FIG. 1B. As another example, each of the storage devices 2210'-1 to 2210'-M may be implemented as a solid state drive (SSD) or a hard disk drive (HDD). Each of the storage devices 2210'-1 to 2210'-M includes a buffer memory 201-M, a buffer management module 202-M, and a direct memory access module 203-M. The operations of the buffer memory 201-M, the buffer management module 202-M, and the direct memory access module 203-M are the same as the buffer memory 201, the buffer management module 202, and the direct memory access mentioned in FIG. 1B. Since the operation of module 203 is substantially the same, redundant description will be avoided.

도 3a는 도 1a 또는 도 2a에 도시된 스토리지 디바이스에 대한 세부 구성의 일 예를 보여주는 도면이다.FIG. 3A is a diagram showing an example of a detailed configuration of the storage device shown in FIG. 1A or 2A.

도 3a에 도시된 바와 같이, 스토리지 디바이스(200A 또는 2210-M)는 메모리 컨트롤러(210A) 및 메모리 디바이스(220)를 포함한다. As shown in FIG. 3A , the storage device 200A or 2210 -M includes a memory controller 210A and a memory device 220 .

메모리 디바이스(220)는 하나 이상의 비휘발성 메모리(NVM; 220-1)로 구성될 수 있다. 예로서, 메모리 디바이스(220)에 적용되는 비휘발성 메모리(220-1)는 플래시 메모리뿐만 아니라 PRAM(Phase change RAM), FRAM(Ferroelectric RAM), MRAM(Magnetic RAM) 등으로 구성될 수 있다. 다른 예로서, 메모리 디바이스(220)는 적어도 하나 이상의 비휘발성 메모리들과 적어도 하나 이상의 휘발성 메모리가 혼합된 형태로 구성될 수 있고, 적어도 두 종류 이상의 비휘발성 메모리들이 혼합된 형태로 구성될 수도 있다. 예로서, 메모리 디바이스(220)를 플래시 메모리 등과 같은 비휘발성 메모리 디바이스로 구현하는 경우에 스토리지 디바이스(200A 또는 2210-M)는 SSD(Solid State Drive)가 될 수 있다.The memory device 220 may include one or more non-volatile memory (NVM) 220-1. For example, the nonvolatile memory 220 - 1 applied to the memory device 220 may include not only a flash memory but also a phase change RAM (PRAM), a ferroelectric RAM (FRAM), and a magnetic RAM (MRAM). As another example, the memory device 220 may be configured in a mixed form of one or more nonvolatile memories and one or more volatile memories, or may be configured in a mixed form of at least two or more types of nonvolatile memories. For example, when the memory device 220 is implemented as a non-volatile memory device such as a flash memory, the storage device 200A or 2210-M may be a solid state drive (SSD).

메모리 컨트롤러(210A)는 호스트로부터 수신되는 커맨드에 기초하여 메모리 디바이스(220)에 대한 제어 동작을 수행할 수 있다. 메모리 컨트롤러(210A)는 호스트로부터 수신되는 커맨드에 따라서 복수의 채널들(CH1 ~CHM)을 통하여 접속된 메모리 디바이스(220)에 대한 프로그램(또는 쓰기), 독출 및 소거 동작을 제어한다. The memory controller 210A may perform a control operation on the memory device 220 based on a command received from the host. The memory controller 210A controls program (or write), read, and erase operations of the memory device 220 connected through a plurality of channels CH1 to CHM according to commands received from the host.

메모리 컨트롤러(210A)와 메모리 디바이스(220) 사이에는 오퍼레이션 수행에 필요한 신호들을 I/O 처리하기 위한 채널(channel)들이 형성되어 있다. 오퍼레이션 수행에 필요한 신호들은 예로서 커맨드, 어드레스 및 데이터 등이 될 수 있다.Channels for I/O processing of signals required for operation are formed between the memory controller 210A and the memory device 220 . Signals necessary for performing an operation may be, for example, a command, an address, and data.

메모리 컨트롤러(210A)는 버퍼 메모리(201) 및 버퍼 관리 모듈(202)를 포함한다. 버퍼 메모리(201) 및 버퍼 관리 모듈(202)에 대한 동작 설명은 도 1a에서 이미 하였으므로 중복적인 설명은 피하기로 한다. The memory controller 210A includes a buffer memory 201 and a buffer management module 202 . Since operations of the buffer memory 201 and the buffer management module 202 have already been described with reference to FIG. 1A , redundant description will be avoided.

메모리 컨트롤러(210A)는 버퍼 관리 모듈(202)을 이용하여 메모리 디바이스(220)에 라이트할 데이터를 버퍼 메모리(201)에 카피(copy)하거나 메모리 디바이스(220)에서 읽어낸 데이터를 버퍼 메모리(201)에 카피한다. 예로서, 메모리 컨트롤러(210A)는 버퍼 메모리(201) 내의 모든 페이지 버퍼들이 동일한 데이터 패턴으로 카피되어 있는 상태에서 버퍼 메모리(201)에 카피되어 있는 데이터 패턴과 동일한 데이터 패턴의 라이트 세임 커맨드가 수신되는 경우에, 버퍼 메모리(201)에 라이트 세임 커맨드의 데이터를 카피하는 동작을 스킵한다. 이에 따라서, 라이트 세임 커맨드의 데이터를 버퍼 메모리(201)에 카피하는데 이용되는 메모리 컨트롤러(210A)에서의 펌웨어 처리의 오버헤드를 줄일 수 있게 된다.The memory controller 210A copies data to be written to the memory device 220 to the buffer memory 201 using the buffer management module 202 or data read from the memory device 220 to the buffer memory 201. ) is copied to For example, the memory controller 210A receives a write same command having the same data pattern as the data pattern copied to the buffer memory 201 in a state in which all page buffers in the buffer memory 201 are copied with the same data pattern. In this case, the operation of copying data of the write same command to the buffer memory 201 is skipped. Accordingly, the overhead of firmware processing in the memory controller 210A used to copy data of the write same command to the buffer memory 201 can be reduced.

그리고, 메모리 컨트롤러(210A)는 버퍼 메모리(201)에 카피된 데이터를 메모리 디바이스(220)로 전송하여 라이트 세임 커맨드에 따른 라이트 동작을 수행한다. 이에 따라서, 메모리 컨트롤러(210A)는 이전에 수신된 커맨드들의 데이터 패턴을 재사용하여 라이트 세임 커맨드에 따른 라이트 동작을 수행할 수 있게 된다.The memory controller 210A transmits the data copied to the buffer memory 201 to the memory device 220 and performs a write operation according to the write same command. Accordingly, the memory controller 210A can perform a write operation according to the write same command by reusing data patterns of previously received commands.

도 3b는 도 1b 또는 도 2b에 도시된 스토리지 디바이스에 대한 세부 구성의 일 예를 보여주는 도면이다.FIG. 3B is a diagram showing an example of a detailed configuration of the storage device shown in FIG. 1B or 2B.

도 3b에 도시된 바와 같이, 스토리지 디바이스(200B 또는 2210'-M)는 메모리 컨트롤러(210B) 및 메모리 디바이스(220)를 포함한다. 메모리 디바이스(220)는 도 3a에서 이미 설명하였으므로, 중복적인 설명은 피하기로 한다.As shown in FIG. 3B , the storage device 200B or 2210'-M includes a memory controller 210B and a memory device 220 . Since the memory device 220 has already been described with reference to FIG. 3A , redundant description will be avoided.

메모리 컨트롤러(210B)는 호스트로부터 수신되는 커맨드에 기초하여 메모리 디바이스(220)에 대한 제어 동작을 수행할 수 있다. 메모리 컨트롤러(210B)는 호스트로부터 수신되는 커맨드에 따라서 복수의 채널들(CH1 ~CHM)을 통하여 접속된 메모리 디바이스(220)에 대한 프로그램(또는 쓰기), 독출 및 소거 동작을 제어한다The memory controller 210B may perform a control operation on the memory device 220 based on a command received from the host. The memory controller 210B controls program (or write), read, and erase operations for the memory device 220 connected through a plurality of channels CH1 to CHM according to commands received from the host.

메모리 컨트롤러(210B)는 버퍼 메모리(201), 버퍼 관리 모듈(202) 및 다이렉트 메모리 액세스 모듈(203)을 포함한다. 버퍼 메모리(201), 버퍼 관리 모듈(202) 및 다이렉트 메모리 액세스 모듈(203)에 대한 동작 설명은 도 1b에서 이미 하였으므로 중복적인 설명은 피하기로 한다. The memory controller 210B includes a buffer memory 201 , a buffer management module 202 and a direct memory access module 203 . Since operations of the buffer memory 201, the buffer management module 202, and the direct memory access module 203 have already been described in FIG. 1B, redundant description will be avoided.

메모리 컨트롤러(210B)는 버퍼 관리 모듈(202) 및 다이렉트 메모리 액세스 모듈(203)을 이용하여 라이트 커맨드 또는 라이트 세임 커맨드를 펌웨어에서 처리하는 동작과 병렬적으로 버퍼 메모리(201)에 데이터를 카피하는 동작을 수행한다.The memory controller 210B performs an operation of copying data to the buffer memory 201 in parallel with an operation of processing a write command or a write same command in the firmware using the buffer management module 202 and the direct memory access module 203. Do it.

세부적으로, 메모리 컨트롤러(210B)는 버퍼 관리 모듈(202)을 이용하여 메모리 디바이스(220)에 라이트할 데이터를 버퍼 메모리(201)에 카피(copy)하거나 메모리 디바이스(220)에서 읽어낸 데이터를 버퍼 메모리(201)에 카피한다. 특히, 다이렉트 메모리 액세스 모듈(203)를 이용하여 버퍼 메모리(201)에 데이터를 카피하는 동작과 커맨드를 펌웨어에서 처리하는 동작을 병렬적으로 수행할 수 있다.In detail, the memory controller 210B copies data to be written to the memory device 220 to the buffer memory 201 using the buffer management module 202 or buffers data read from the memory device 220. copied to the memory 201. In particular, an operation of copying data to the buffer memory 201 using the direct memory access module 203 and an operation of processing a command in the firmware may be performed in parallel.

예로서, 메모리 컨트롤러(210B)는 버퍼 메모리(201) 내의 모든 페이지 버퍼들이 동일한 데이터 패턴으로 카피되어 있는 상태에서 버퍼 메모리(201)에 카피되어 있는 데이터 패턴과 동일한 데이터 패턴의 라이트 세임 커맨드가 수신되는 경우에, 버퍼 메모리(201)에 라이트 세임 커맨드의 데이터를 카피하는 동작을 스킵한다.For example, the memory controller 210B receives a write same command having the same data pattern as the data pattern copied to the buffer memory 201 in a state in which all page buffers in the buffer memory 201 are copied with the same data pattern. In this case, the operation of copying data of the write same command to the buffer memory 201 is skipped.

메모리 컨트롤러(210B)는 버퍼 메모리(201)에 카피된 데이터를 메모리 디바이스(220)로 전송하여 라이트 세임 커맨드에 따른 라이트 동작을 수행한다. 이에 따라서, 메모리 컨트롤러(210B)는 이전에 수신된 커맨드들의 데이터 패턴을 재사용하여 라이트 세임 커맨드에 따른 라이트 동작을 수행할 수 있게 된다.The memory controller 210B transmits the data copied to the buffer memory 201 to the memory device 220 and performs a write operation according to the write same command. Accordingly, the memory controller 210B can reuse data patterns of previously received commands to perform a write operation according to the write same command.

도 4a는 도 3a에 도시된 메모리 컨트롤러(210A) 구성의 일 예를 보여준다.FIG. 4A shows an example of a configuration of the memory controller 210A shown in FIG. 3A.

도 4a에 도시된 바와 같이, 메모리 컨트롤러(210A)는 프로세서(211A), RAM(Random Access Memory; 212A), 호스트 인터페이스(213), 메모리 인터페이스(214), ROM(Read Only Memory, 215) 및 버스(216)를 구비한다.As shown in FIG. 4A , the memory controller 210A includes a processor 211A, a random access memory (RAM) 212A, a host interface 213, a memory interface 214, a read only memory (ROM) 215) and a bus (216).

메모리 컨트롤러(210A)의 구성요소들은 버스(216)를 통하여 데이터 및 각종 신호들을 주고 받는다.Elements of the memory controller 210A exchange data and various signals through the bus 216 .

프로세서(211A)는 RAM(212A)에 저장된 프로그램 코드 및 데이터들을 이용하여 스토리지 디바이스(200A 또는 2210-M)의 동작을 전반적으로 제어할 수 있다. 스토리지 디바이스(200A 또는 2210-M)가 초기화될 때 프로세서(211A)는 메모리 디바이스(220)에 저장된 스토리지 디바이스(200A 또는 2210-M)에서 수행되는 동작들을 제어하는데 필요한 프로그램 코드 및 데이터들을 읽어내어 RAM(212A)에 로딩시킬 수 있다.The processor 211A may generally control the operation of the storage device 200A or 2210-M using program codes and data stored in the RAM 212A. When the storage device 200A or 2210-M is initialized, the processor 211A reads program codes and data necessary for controlling operations performed in the storage device 200A or 2210-M stored in the memory device 220 to RAM. (212A) can be loaded.

RAM(212A)은 프로세서(211A)의 제어에 따라 동작하며, 버퍼 메모리(201) 영역이 할당될 수 있다. 그리고, RAM(212A)에는 버퍼 관리 모듈(202)용 소프트웨어가 로딩될 수 있다. 또한, RAM(212A)에는 호스트 인터페이스 계층(HIL)에서 수행되는 프로세스에 대한 프로그램 코드와 플래시 변환 계층(FTL)에서 수행되는 프로세스에 대한 프로그램 코드가 로딩될 수 있다.The RAM 212A operates under the control of the processor 211A, and an area of the buffer memory 201 may be allocated. Also, software for the buffer management module 202 may be loaded into the RAM 212A. In addition, program codes for processes executed in the host interface layer (HIL) and program codes for processes executed in the flash translation layer (FTL) may be loaded into the RAM 212A.

호스트 인터페이스(213)는 메모리 컨트롤러(210A)에 접속되는 호스트와의 데이터 교환 프로토콜을 구비하고 메모리 컨트롤러(210A)와 호스트 사이의 인터페이스를 수행한다. 호스트 인터페이스(213)는 예로서 ATA(Advanced Technology Attachment) 인터페이스, SATA(Serial Advanced Technology Attachment) 인터페이스, PATA(Parallel Advanced Technology Attachment) 인터페이스, USB(Universal Serial Bus) 또는 SAS(Serial Attached Small Computer System) 인터페이스, SCSI(Small Computer System Interface), eMMC(embedded Multi Media Card) 인터페이스, UFS(Universal Flash Storage) 인터페이스, PCI(Peripheral Component Interconnect) 인터페이스, PCIe(Peripheral Component Interconnect Express) 인터페이스로 구현할 수 있다. 그러나 이는 예시일 뿐 이에 제한되는 것은 아니다. 호스트 인터페이스(213)는 프로세서(211A)의 제어에 따라서 호스트로부터 커맨드 및 데이터를 수신하거나, 호스트로 데이터를 전송할 수 있다.The host interface 213 has a data exchange protocol with a host connected to the memory controller 210A and performs an interface between the memory controller 210A and the host. The host interface 213 is, for example, an Advanced Technology Attachment (ATA) interface, a Serial Advanced Technology Attachment (SATA) interface, a Parallel Advanced Technology Attachment (PATA) interface, a Universal Serial Bus (USB) or a Serial Attached Small Computer System (SAS) interface. , SCSI (Small Computer System Interface), eMMC (embedded Multi Media Card) interface, UFS (Universal Flash Storage) interface, PCI (Peripheral Component Interconnect) interface, PCIe (Peripheral Component Interconnect Express) interface can be implemented. However, this is only an example and is not limited thereto. The host interface 213 may receive commands and data from the host or transmit data to the host under the control of the processor 211A.

메모리 인터페이스(214)는 메모리 디바이스(220)와 전기적으로 연결되어 있다. 메모리 인터페이스(214)는 프로세서(211A)의 제어에 따라서 메모리 디바이스(220)로 커맨드, 어드레스 및 데이터를 전송하거나, 메모리 디바이스(220)로부터 데이터를 수신할 수 있다. 메모리 인터페이스(214)는 NAND 플래시 메모리 또는 NOR 플래시 메모리를 지원하도록 구성될 수 있다. 메모리 인터페이스(214)는 복수 개의 채널들을 통하여 소프트웨어 또는 하드웨어 인터리브 동작들이 수행되도록 구성될 수도 있다.The memory interface 214 is electrically connected to the memory device 220 . The memory interface 214 may transmit commands, addresses, and data to the memory device 220 or receive data from the memory device 220 under the control of the processor 211A. Memory interface 214 may be configured to support NAND flash memory or NOR flash memory. The memory interface 214 may be configured to perform software or hardware interleaved operations over a plurality of channels.

ROM(215)에는 스토리지 디바이스가 채용된 장치의 초기 부팅에 필요한 코드 정보를 저장할 수 있다.The ROM 215 may store code information necessary for initial booting of a device employing a storage device.

프로세서(211A)는 RAM(212A)에 로딩된 버퍼 관리 모듈(202)용 소프트웨어를 구동시켜 메모리 디바이스(220)에 라이트할 데이터를 버퍼 메모리(201)에 카피(copy)하거나 메모리 디바이스(220)에서 읽어낸 데이터를 버퍼 메모리(201)에 카피한다. 예로서, 프로세서(211A)는 버퍼 메모리(201) 내의 모든 페이지 버퍼들이 동일한 데이터 패턴으로 카피되어 있는 상태에서 버퍼 메모리(201)에 카피되어 있는 데이터 패턴과 동일한 데이터 패턴의 라이트 세임 커맨드가 수신되는 경우에, 버퍼 메모리(201)에 라이트 세임 커맨드의 데이터를 카피하는 동작을 스킵한다. The processor 211A runs the software for the buffer management module 202 loaded in the RAM 212A to copy data to be written to the memory device 220 to the buffer memory 201 or to the memory device 220. The read data is copied to the buffer memory 201. For example, the processor 211A receives a write same command having the same data pattern as the data pattern copied to the buffer memory 201 while all page buffers in the buffer memory 201 are copied with the same data pattern. In this case, the operation of copying data of the write same command to the buffer memory 201 is skipped.

또한, 프로세서(211A)는 호스트로부터 수신되는 커맨드에 대하여 호스트 인터페이스 계층(HIL) 및 플래시 변환 계층(FTL)에서의 펌웨어 처리를 수행한다. 프로세서(211A)는 HIL 및 FTL에서의 펌웨어 처리에 기초한 커맨드와 함께 버퍼 메모리(201)에 카피된 데이터를 메모리 디바이스(220)로 전송한다. 이에 따라서, 라이트 세임 커맨드에 따른 라이트 동작을 메모리 디바이스(220)에서 수행하게 된다.Also, the processor 211A performs firmware processing in a host interface layer (HIL) and a flash translation layer (FTL) with respect to commands received from the host. The processor 211A transmits the data copied to the buffer memory 201 to the memory device 220 together with commands based on firmware processing in HIL and FTL. Accordingly, the write operation according to the write same command is performed in the memory device 220 .

도 4b는 도 3b에 도시된 메모리 컨트롤러(210B) 구성의 일 예를 보여준다.FIG. 4B shows an example of a configuration of the memory controller 210B shown in FIG. 3B.

도 4b에 도시된 바와 같이, 메모리 컨트롤러(210B)는 프로세서(211B), RAM(Random Access Memory; 212B), 호스트 인터페이스(213), 메모리 인터페이스(214), ROM(Read Only Memory, 215) 및 버스(216)를 구비한다.As shown in FIG. 4B , the memory controller 210B includes a processor 211B, a random access memory (RAM) 212B, a host interface 213, a memory interface 214, a read only memory (ROM) 215) and a bus (216).

호스트 인터페이스(213), 메모리 인터페이스(214), ROM(Read Only Memory, 215) 및 버스(216)에 대한 동작은 도 4a에서 설명하였으므로, 중복적인 설명은 피하기로 한다.Operations of the host interface 213, the memory interface 214, the read only memory (ROM) 215, and the bus 216 have been described with reference to FIG. 4A, so redundant description will be avoided.

RAM(212B)은 프로세서(211B)의 제어에 따라 동작하며, 버퍼 메모리(201) 영역이 할당될 수 있다. 그리고, RAM(212B)에는 버퍼 관리 모듈(202)용 소프트웨어 및 다이렉트 메모리 액세스 모듈(203)용 소프트웨어가 로딩될 수 있다. 또한, RAM(212A)에는 호스트 인터페이스 계층(HIL)에서 수행되는 프로세스에 대한 프로그램 코드와 플래시 변환 계층(FTL)에서 수행되는 프로세스에 대한 프로그램 코드가 로딩될 수 있다.The RAM 212B operates under the control of the processor 211B, and an area of the buffer memory 201 may be allocated. Also, software for the buffer management module 202 and software for the direct memory access module 203 may be loaded into the RAM 212B. In addition, program codes for processes executed in the host interface layer (HIL) and program codes for processes executed in the flash translation layer (FTL) may be loaded into the RAM 212A.

프로세서(211B)는 RAM(212B)에 로딩된 버퍼 관리 모듈(202)용 소프트웨어를 구동시켜 메모리 디바이스(220)에 라이트할 데이터를 버퍼 메모리(201)에 카피(copy)하거나 메모리 디바이스(220)에서 읽어낸 데이터를 버퍼 메모리(201)에 카피한다. 특히, 프로세서(211B)는 다이렉트 메모리 액세스 모듈(203)를 이용하여 버퍼 메모리(201)에 데이터를 카피하는 동작과 커맨드를 펌웨어에서 처리하는 동작을 병렬적으로 수행할 수 있다. 예로서, 프로세서(211B)는 버퍼 메모리(201) 내의 모든 페이지 버퍼들이 동일한 데이터 패턴으로 카피되어 있는 상태에서 버퍼 메모리(201)에 카피되어 있는 데이터 패턴과 동일한 데이터 패턴의 라이트 세임 커맨드가 수신되는 경우에, 버퍼 메모리(201)에 라이트 세임 커맨드의 데이터를 카피하는 동작을 스킵한다. The processor 211B runs the software for the buffer management module 202 loaded in the RAM 212B to copy data to be written to the memory device 220 to the buffer memory 201 or to the memory device 220. The read data is copied to the buffer memory 201. In particular, the processor 211B may perform an operation of copying data to the buffer memory 201 using the direct memory access module 203 and an operation of processing a command in firmware in parallel. For example, the processor 211B receives a write same command having the same data pattern as the data pattern copied to the buffer memory 201 while all page buffers in the buffer memory 201 are copied with the same data pattern. In this case, the operation of copying data of the write same command to the buffer memory 201 is skipped.

또한, 프로세서(211B)는 호스트로부터 수신되는 커맨드에 대하여 HIL 및 FTL에서의 펌웨어 처리를 수행한다. 프로세서(211B)는 HIL 및 FTL에서의 펌웨어 처리에 기초한 커맨드와 함께 버퍼 메모리(201)에 카피된 데이터를 메모리 디바이스(220)로 전송한다. 이에 따라서, 라이트 세임 커맨드에 따른 라이트 동작을 메모리 디바이스(220)에서 수행하게 된다.Also, the processor 211B performs firmware processing in HIL and FTL with respect to commands received from the host. The processor 211B transmits the data copied to the buffer memory 201 to the memory device 220 together with commands based on firmware processing in HIL and FTL. Accordingly, the write operation according to the write same command is performed in the memory device 220 .

도 5는 도 3a 또는 도 3b에 도시된 메모리 디바이스(220)의 세부 구성의 일 예를 보여준다.5 shows an example of a detailed configuration of the memory device 220 shown in FIG. 3A or 3B.

도 5를 참조하면, 메모리 디바이스(220)는 메모리 셀 어레이(11), 제어 로직(control logic; 12), 전압 생성부(13), 로우 디코더(14) 및 페이지 버퍼(15)를 포함할 수 있다. 이하에서는, 메모리 디바이스(220)에 포함된 구성 요소들에 대하여 상술하기로 한다.Referring to FIG. 5 , the memory device 220 may include a memory cell array 11, a control logic 12, a voltage generator 13, a row decoder 14, and a page buffer 15. there is. Hereinafter, components included in the memory device 220 will be described in detail.

메모리 셀 어레이(11)는 하나 이상의 스트링 선택 라인(SSL), 복수의 워드 라인들(WL) 및 하나 이상의 접지 선택 라인(GSL)에 연결될 수 있으며, 또한 복수의 비트 라인들(BL)에 연결될 수 있다. 메모리 셀 어레이(11)는 복수의 워드 라인들(WL) 및 복수의 비트 라인들(BL)이 교차하는 영역들에 배치되는 복수의 메모리 셀들(MC)을 포함할 수 있다.The memory cell array 11 may be connected to one or more string select lines SSL, a plurality of word lines WL, and one or more ground select lines GSL, and may also be connected to a plurality of bit lines BL. there is. The memory cell array 11 may include a plurality of memory cells MC disposed in regions where a plurality of word lines WL and a plurality of bit lines BL intersect.

메모리 셀 어레이(11)에 소거 전압이 인가되면 복수의 메모리 셀들(MC)은 소거 상태가 되며, 메모리 셀 어레이(11)에 프로그램 전압이 인가되면 복수의 메모리 셀들(MC)은 프로그램 상태가 된다. 이때, 각 메모리 셀(MC)은 문턱 전압에 따라 구분되는 소거 상태 및 제1 내지 제n 프로그램 상태들(P1 내지 Pn) 중 하나를 가질 수 있다.When an erase voltage is applied to the memory cell array 11, the plurality of memory cells MC are in an erase state, and when a program voltage is applied to the memory cell array 11, the plurality of memory cells MC are in a program state. In this case, each memory cell MC may have one of an erase state and first to n th program states P1 to Pn classified according to a threshold voltage.

여기서, n은 2 이상의 자연수일 수 있다. 예를 들어, 메모리 셀(MC)이 2 비트 레벨 셀인 경우 n은 3일 수 있다. 다른 예에서, 메모리 셀(MC)이 3 비트 레벨 셀인 경우 n은 7일 수 있다. 또 다른 예에서, 메모리 셀(MC)이 4 비트 레벨 셀인 경우 n은 15일 수 있다. 이와 같이, 복수의 메모리 셀들(MC)은 멀티 레벨 셀들을 포함할 수 있다. 그러나, 본 발명의 기술적 사상은 이에 한정되지 않고, 복수의 메모리 셀들(MC)은 싱글 레벨 셀들을 포함할 수도 있다.Here, n may be a natural number of 2 or more. For example, n may be 3 when the memory cell MC is a 2-bit level cell. In another example, when the memory cell MC is a 3-bit level cell, n may be 7. In another example, n may be 15 when the memory cell MC is a 4-bit level cell. As such, the plurality of memory cells MC may include multi-level cells. However, the technical idea of the present invention is not limited thereto, and the plurality of memory cells MC may include single-level cells.

제어 로직(12)은 메모리 컨트롤러(210A)로부터 수신한 커맨드(CMD), 어드레스(ADDR) 및 제어 신호(CTRL)를 기초로 하여, 메모리 셀 어레이(11)에 데이터를 기입하거나 메모리 셀 어레이(11)로부터 데이터를 독출하기 위한 각종 제어 신호를 출력할 수 있다. 이로써, 제어 로직(12)은 메모리 디바이스(220) 내의 각종 동작을 전반적으로 제어할 수 있다.The control logic 12 writes data into the memory cell array 11 or operates the memory cell array 11 based on the command CMD, address ADDR, and control signal CTRL received from the memory controller 210A. ), various control signals for reading data can be output. As such, the control logic 12 may overall control various operations within the memory device 220 .

제어 로직(12A)에서 출력된 각종 제어 신호는 전압 생성부(13), 로우 디코더(14) 및 페이지 버퍼(15)에 제공될 수 있다. 구체적으로, 제어 로직(12)은 전압 생성부(13)에 전압 제어 신호(CTRL_vol)를 제공할 수 있고, 로우 디코더(14)에 로우 어드레스(X_ADDR)를 제공할 수 있으며, 페이지 버퍼(15)에 칼럼 어드레스(Y_ADDR)를 제공할 수 있다.Various control signals output from the control logic 12A may be provided to the voltage generator 13 , the row decoder 14 , and the page buffer 15 . Specifically, the control logic 12 may provide the voltage control signal CTRL_vol to the voltage generator 13, may provide the row address X_ADDR to the row decoder 14, and may provide the page buffer 15 A column address (Y_ADDR) can be provided.

전압 생성부(13)는 전압 제어 신호(CTRL_vol)를 기초로 하여 메모리 셀 어레이(11)에 대한 프로그램, 독출 및 소거 동작을 수행하기 위한 다양한 종류의 전압들을 생성할 수 있다. 구체적으로, 전압 생성부(13)는 복수의 워드 라인들(WL)을 구동하기 위한 제1 구동 전압(VWL), 복수의 스트링 선택 라인들(SSL)을 구동하기 위한 제2 구동 전압(VSSL) 및 복수의 라운드 선택 라인들(GSL)을 구동하기 위한 제3 구동 전압(VGSL)을 생성할 수 있다. The voltage generator 13 may generate various types of voltages for performing program, read, and erase operations on the memory cell array 11 based on the voltage control signal CTRL_vol. Specifically, the voltage generator 13 generates a first driving voltage VWL for driving a plurality of word lines WL and a second driving voltage VSSL for driving a plurality of string select lines SSL. and a third driving voltage VGSL for driving the plurality of round select lines GSL.

이때, 제1 구동 전압(VWL)은 프로그램 전압(또는 기입 전압), 독출 전압, 소거 전압, 패스 전압 또는 프로그램 검증 전압일 수 있다. 또한, 제2 구동 전압(VSSL)은 스트링 선택 전압, 즉, 온(on) 전압 또는 오프(off) 전압일 수 있다. 나아가, 제3 구동 전압(VGSL)은 그라운드 선택 전압, 즉, 온 전압 또는 오프 전압일 수 있다.In this case, the first driving voltage VWL may be a program voltage (or write voltage), a read voltage, an erase voltage, a pass voltage, or a program verify voltage. Also, the second driving voltage VSSL may be a string selection voltage, that is, an on voltage or an off voltage. Furthermore, the third driving voltage VGSL may be a ground selection voltage, that is, an on voltage or an off voltage.

로우 디코더(14)는 복수의 워드 라인들(WL)을 통해 메모리 셀 어레이(11)에 연결되고, 제어 로직(12)으로부터 수신한 로우 어드레스(X_ADDR)에 응답하여 복수의 워드 라인들(WL) 중 일부 워드 라인을 활성화할 수 있다. 구체적으로, 독출 동작 시에 로우 디코더(14)는 선택된 워드 라인에 독출 전압을 인가하고, 비 선택된 워드 라인에 패스 전압을 인가할 수 있다. The row decoder 14 is connected to the memory cell array 11 through a plurality of word lines WL, and in response to the row address X_ADDR received from the control logic 12, the plurality of word lines WL Some of the word lines can be activated. Specifically, during a read operation, the row decoder 14 may apply a read voltage to a selected word line and a pass voltage to a non-selected word line.

한편, 프로그램 동작 시에 로우 디코더(14)는 선택된 워드 라인에 프로그램 전압을 인가하고, 비 선택된 워드 라인에 패스 전압을 인가할 수 있다. 본 실시예에서, 프로그램 루프들 중 적어도 하나에서 로우 디코더(14)는 선택된 워드 라인 및 추가 선택된 워드 라인에 프로그램 전압을 인가할 수 있다. Meanwhile, during a program operation, the row decoder 14 may apply a program voltage to a selected word line and a pass voltage to an unselected word line. In this embodiment, in at least one of the program loops, the row decoder 14 may apply a program voltage to the selected word line and the additional selected word line.

페이지 버퍼(15)는 복수의 비트 라인들(BL)을 통해 메모리 셀 어레이(11)에 연결될 수 있다. 구체적으로, 독출 동작 시에 페이지 버퍼(15)는 감지 증폭기(sense amplifier)로 동작하여 메모리 셀 어레이(11)에 저장된 데이터(DATA)를 출력할 수 있다. 한편, 프로그램 동작 시에 페이지 버퍼(15)는 기입 드라이버(write driver)로 동작하여 메모리 셀 어레이(11)에 저장하고자 하는 데이터(DATA)를 입력시킬 수 있다. 라이트 커맨드 또는 라이트 세임 커맨드를 처리하는 과정에서는 메모리 컨트롤러(210A 또는 210B)의 버퍼 메모리(201)에 카피된 데이터가 페이지 버퍼(15)에 로딩된다. The page buffer 15 may be connected to the memory cell array 11 through a plurality of bit lines BL. Specifically, during a read operation, the page buffer 15 may operate as a sense amplifier to output data DATA stored in the memory cell array 11 . Meanwhile, during a program operation, the page buffer 15 operates as a write driver to input data DATA to be stored into the memory cell array 11 . In the process of processing a write command or a write same command, data copied to the buffer memory 201 of the memory controller 210A or 210B is loaded into the page buffer 15 .

도 6은 도 5에 도시된 메모리 셀 어레이(11)의 일 예를 보여준다.FIG. 6 shows an example of the memory cell array 11 shown in FIG. 5 .

도 6을 참조하면, 메모리 셀 어레이(11)는 플래시 메모리 셀 어레이일 수 있다. 이때, 메모리 셀 어레이(11)는 a(a는 2 이상의 정수)개의 메모리 블록들(BLK1 내지 BLKa)을 포함하고, 각 메모리 블록(BLK1 내지 BLKa)은 b(b는 2이상의 정수)개의 페이지들(PAGE1 내지 PAGEb)을 포함하며, 각 페이지들(PAGE1 내지 PAGEb)은 c(c는 2 이상의 정수)개의 섹터들(SEC1 내지 SECc)을 포함할 수 있다. 도 6에서는 도시의 편의를 위해, 메모리 블록 BLK1에 대하여만 페이지들(PAGE0 내지 PAGEb) 및 섹터들(SEC1 내지 SECc)을 도시하였으나, 다른 메모리 블록들(BLK2 내지 BLKa)도 블록 BLK1과 동일한 구조를 가질 수 있다.Referring to FIG. 6 , the memory cell array 11 may be a flash memory cell array. At this time, the memory cell array 11 includes a (a is an integer greater than or equal to 2) memory blocks BLK1 to BLKa, and each memory block BLK1 to BLKa includes b (b is an integer greater than or equal to 2) pages. (PAGE1 to PAGEb), and each of the pages (PAGE1 to PAGEb) may include c (c is an integer of 2 or more) number of sectors (SEC1 to SECc). For convenience of illustration, in FIG. 6, pages PAGE0 to PAGEb and sectors SEC1 to SECc are shown only for the memory block BLK1, but other memory blocks BLK2 to BLKa have the same structure as the block BLK1. can have

도 7은 도 6에 도시된 메모리 셀 어레이에 포함된 제1메모리 블록의 일 예(BLK1a)를 나타내는 회로도이다.FIG. 7 is a circuit diagram illustrating an example BLK1a of a first memory block included in the memory cell array shown in FIG. 6 .

도 7을 참조하면, 제1 메모리 블록(BLK1a)은 수직 구조의 낸드 플래시 메모리일 수 있다. 이때, 도 6에 도시된 각 블록들(BLK1 내지 BLKa)은 도 7과 같이 구현될 수 있다. 도 7에서, 제1 방향은 x 방향으로, 제2 방향은 y 방향으로, 제3 방향은 z 방향으로 지칭하기로 한다. 그러나, 본 발명은 이에 한정되지 않고, 제1 내지 제3 방향은 변경될 수도 있다.Referring to FIG. 7 , the first memory block BLK1a may be a NAND flash memory having a vertical structure. At this time, each of the blocks BLK1 to BLKa shown in FIG. 6 may be implemented as shown in FIG. 7 . In FIG. 7 , the first direction is referred to as the x direction, the second direction as the y direction, and the third direction as the z direction. However, the present invention is not limited thereto, and the first to third directions may be changed.

제1 메모리 블록(BLK1a)은 복수의 셀 스트링들(CST), 복수의 워드 라인들(WL), 복수의 비트 라인들(BL), 복수의 그라운드 선택 라인들(GSL1, GSL2), 복수의 스트링 선택 라인들(SSL1, SSL2) 및 공통 소스 라인(CSL)을 포함할 수 있다. 여기서, 셀 스트링들(CST)의 개수, 워드 라인들(WL)의 개수, 비트 라인들(BL)의 개수, 그라운드 선택 라인들(GSL1, GSL2)의 개수 및 스트링 선택 라인들(SSL1, SSL2)의 개수는 실시 예에 따라 다양하게 변경될 수 있다.The first memory block BLK1a includes a plurality of cell strings CST, a plurality of word lines WL, a plurality of bit lines BL, a plurality of ground select lines GSL1 and GSL2, and a plurality of strings. It may include select lines SSL1 and SSL2 and a common source line CSL. Here, the number of cell strings CST, the number of word lines WL, the number of bit lines BL, the number of ground select lines GSL1 and GSL2, and the number of string select lines SSL1 and SSL2 The number of may be variously changed according to embodiments.

셀 스트링(CST)은 대응되는 비트 라인(BL)과 공통 소스 라인(CSL) 사이에 직렬로 연결된 스트링 선택 트랜지스터(SST), 복수의 메모리 셀들(MC) 및 그라운드 선택 트랜지스터(GST)를 포함할 수 있다. 그러나, 본 발명은 이에 한정되지 않고, 다른 실시 예에서, 셀 스트링(CST)은 적어도 하나의 더미 셀을 더 포함할 수 있다. 또 다른 실시 예에서, 셀 스트링(CST)은 적어도 두 개의 스트링 선택 트랜지스터들 또는 적어도 두 개의 그라운드 선택 트랜지스터들을 포함할 수도 있다.The cell string CST may include a string select transistor SST, a plurality of memory cells MC, and a ground select transistor GST connected in series between the corresponding bit line BL and the common source line CSL. there is. However, the present invention is not limited thereto, and in another embodiment, the cell string CST may further include at least one dummy cell. In another embodiment, the cell string CST may include at least two string select transistors or at least two ground select transistors.

또한, 셀 스트링(CST)은 제3 방향(z 방향)으로 신장될 수 있는데, 구체적으로, 기판 상에 수직 방향(z 방향)으로 신장될 수 있다. 따라서, 셀 스트링(CST)을 포함하는 메모리 블록(BLK1a)을 수직 방향의 낸드 플래시 메모리라고 지칭할 수 있다. 이와 같이, 셀 스트링(CST)을 기판 상에 수직 방향(z)으로 신장시킴으로써, 메모리 셀 어레이(11)의 집적도를 향상시킬 수 있다.In addition, the cell string CST may extend in a third direction (z direction), specifically, in a vertical direction (z direction) on the substrate. Accordingly, the memory block BLK1a including the cell string CST may be referred to as a vertical NAND flash memory. In this way, the degree of integration of the memory cell array 11 can be improved by extending the cell string CST in the vertical direction z on the substrate.

복수의 워드 라인들(WL)은 제1 방향(x) 및 제2 방향(y)으로 연장되고, 각 워드 라인(WL)은 대응되는 메모리 셀들(MC)과 연결될 수 있다. 이에 따라, 동일 층에서 제1 방향(x) 및 제2 방향(y)을 따라 이웃하게 배열된 복수의 메모리 셀들(MC)은 동일한 워드 라인(WL)에 연결될 수 있다. 구체적으로, 각 워드 라인(WL)은 메모리 셀(MC)의 게이트에 연결되어 메모리 셀(MC)을 제어할 수 있다. 이때, 복수의 메모리 셀들(MC)은 데이터를 저장할 수 있으며, 연결된 워드 라인(WL)의 제어에 따라 프로그램, 독출 또는 소거될 수 있다.The plurality of word lines WL extend in the first direction x and the second direction y, and each word line WL may be connected to corresponding memory cells MC. Accordingly, a plurality of memory cells MC adjacently arranged along the first direction (x) and the second direction (y) on the same layer may be connected to the same word line (WL). Specifically, each word line WL may be connected to a gate of the memory cell MC to control the memory cell MC. In this case, the plurality of memory cells MC may store data and may be programmed, read, or erased according to the control of the connected word line WL.

복수의 비트 라인들(BL)은 제1 방향(x)으로 연장되고, 스트링 선택 트랜지스터(SST)와 연결될 수 있다. 이에 따라, 제1 방향(x)을 따라 이웃하게 배열된 복수의 스트링 선택 트랜지스터들(SST)은 동일한 비트 라인(BL)에 연결될 수 있다. 구체적으로, 각 비트 라인(BL)은 스트링 선택 트랜지스터(SST)의 드레인에 연결될 수 있다.The plurality of bit lines BL may extend in the first direction (x) and may be connected to the string select transistor SST. Accordingly, the plurality of string select transistors SST arranged adjacently along the first direction x may be connected to the same bit line BL. Specifically, each bit line BL may be connected to the drain of the string select transistor SST.

복수의 스트링 선택 라인들(SSL1, SSL2)은 제2 방향(y)으로 연장되고, 스트링 선택 트랜지스터(SST)와 연결될 수 있다. 이에 따라, 제2 방향(y)을 따라 이웃하게 배열된 복수의 스트링 선택 트랜지스터들(SST)은 동일한 스트링 선택 라인(SSL1 또는 SSL2)에 연결될 수 있다. 구체적으로, 각 스트링 선택 라인(SSL1 또는 SSL2)은 스트링 선택 트랜지스터(SST)의 게이트에 연결되어 스트링 선택 트랜지스터(SST)를 제어할 수 있다.The plurality of string select lines SSL1 and SSL2 may extend in the second direction y and be connected to the string select transistor SST. Accordingly, the plurality of string select transistors SST arranged adjacently along the second direction y may be connected to the same string select line SSL1 or SSL2. Specifically, each string select line SSL1 or SSL2 may be connected to the gate of the string select transistor SST to control the string select transistor SST.

복수의 그라운드 선택 라인들(GSL1, GSL2)은 제2 방향(y)으로 연장되고, 그라운드 선택 트랜지스터(GST)와 연결될 수 있다. 이에 따라, 제2 방향(y)을 따라 이웃하게 배열된 복수의 그라운드 선택 트랜지스터들(GST)은 동일한 그라운드 선택 라인(GSL1 또는 GSL2)에 연결될 수 있다. 구체적으로, 각 그라운드 선택 라인(GSL1 또는 GSL2)은 그라운드 선택 트랜지스터(GST)의 게이트에 연결되어 그라운드 선택 트랜지스터(GST)를 제어할 수 있다. The plurality of ground select lines GSL1 and GSL2 may extend in the second direction y and be connected to the ground select transistor GST. Accordingly, the plurality of ground select transistors GST arranged adjacently along the second direction y may be connected to the same ground select line GSL1 or GSL2. Specifically, each ground select line GSL1 or GSL2 is connected to the gate of the ground select transistor GST to control the ground select transistor GST.

또한, 각 셀 스트링(CST)에 포함된 그라운드 선택 트랜지스터들(GST)은 공통 소스 라인(CSL)에 공통으로 연결될 수 있다. 구체적으로, 공통 소스 라인(CSL)은 그라운드 선택 트랜지스터(GST)의 소스에 연결될 수 있다.Also, the ground select transistors GST included in each cell string CST may be connected in common to the common source line CSL. Specifically, the common source line CSL may be connected to the source of the ground select transistor GST.

여기서, 동일한 워드 라인(WL) 및 동일한 스트링 선택 라인(SSL1 또는 SSL2)에 공통으로 연결되고, 제2 방향(y)을 따라 이웃하게 배치되는 복수의 메모리 셀들(MC)은 페이지(PAGE)라고 지칭할 수 있다. 예를 들어, 제1 워드 라인(WL1)에 공통으로 연결되고, 제1 스트링 선택 라인(SSL1)에 공통으로 연결되며, 제2 방향(y)을 따라 이웃하게 배치되는 복수의 메모리 셀들(MC)은 제1 페이지(PAGE1)라고 지칭할 수 있다. 또한, 제1 워드 라인(WL1)에 공통으로 연결되고, 제2 스트링 선택 라인(SSL2)에 공통으로 연결되며, 제2 방향(y)을 따라 이웃하게 배치되는 복수의 메모리 셀들(MC)은 제2 페이지(PAGE2)라고 지칭할 수 있다.Here, a plurality of memory cells MC that are commonly connected to the same word line WL and the same string select line SSL1 or SSL2 and disposed adjacently along the second direction y are referred to as pages. can do. For example, a plurality of memory cells MC connected in common to the first word line WL1, connected in common to the first string select line SSL1, and disposed adjacently along the second direction y may be referred to as a first page PAGE1. In addition, a plurality of memory cells MC connected in common to the first word line WL1, connected in common to the second string select line SSL2, and disposed adjacently along the second direction y are It may be referred to as page 2 (PAGE2).

메모리 셀(MC)에 대한 프로그램 동작을 수행하기 위해서는, 비트 라인(BL)에 0V를 인가하고, 스트링 선택 라인(SSL)에 온(on) 전압을 인가하고, 그라운드 선택 라인(GSL)에 오프(off) 전압을 인가할 수 있다. 온 전압은 스트링 선택 트랜지스터(SST)를 턴-온(turn-on) 시키도록 그 문턱 전압보다 크거나 같을 수 있고, 오프 전압은 그라운드 선택 트랜지스터들(GST)을 턴-오프(turn-off) 시키도록 그 문턱 전압보다 작을 수 있다. 또한, 메모리 셀들(MC) 중 선택 메모리 셀에는 프로그램 전압을 인가하고, 나머지 메모리 셀들에는 패스 전압을 인가할 수 있다. 프로그램 전압이 인가되면, F-N 터널링에 의해 메모리 셀들(MC) 내로 전하가 주입될 수 있다. 패스 전압은 메모리 셀들(MC)의 문턱 전압보다 클 수 있다.To perform a program operation on the memory cell MC, 0 V is applied to the bit line BL, an on voltage is applied to the string select line SSL, and an off (off) voltage is applied to the ground select line GSL. off) voltage can be applied. The on voltage may be greater than or equal to the threshold voltage to turn on the string select transistor SST, and the off voltage to turn off the ground select transistors GST. may be less than the threshold voltage. Also, a program voltage may be applied to a selected memory cell among the memory cells MC, and a pass voltage may be applied to the remaining memory cells. When the program voltage is applied, charges may be injected into the memory cells MC by F-N tunneling. The pass voltage may be greater than the threshold voltage of the memory cells MC.

메모리 셀(MC)에 대한 소거 동작을 수행하기 위해서는, 메모리 셀들(MC)의 바디(body)에 소거 전압을 인가하고, 워드 라인들(WL)에 0V를 인가할 수 있다. 이에 따라, 메모리 셀들(MC)의 데이터가 일시에 소거될 수 있다.To perform an erase operation on the memory cells MC, an erase voltage may be applied to bodies of the memory cells MC and 0V may be applied to the word lines WL. Accordingly, the data of the memory cells MC may be erased at one time.

도 8은 본 발명의 메모리 컨트롤러(210A 또는 210B)에서 라이트 세임 커맨드의 데이터를 처리하는 과정을 보여주는 도면이다. 도 4a 또는 도 4b에 도시된 메모리 컨트롤러(210A 또는 210B)의 구성을 참조하여 설명하기로 한다.8 is a diagram showing a process of processing data of a write same command in the memory controller 210A or 210B of the present invention. The configuration of the memory controller 210A or 210B shown in FIG. 4A or 4B will be described.

호스트(100)로부터 수신되는 라이트 세임 커맨드의 데이터 패턴은 섹터 사이즈를 갖는다. 예로서, 프로세서(211A 또는 211B)는 라이트 세임 커맨드와 함께 수신되는 섹터 사이즈의 데이터 패턴(Ds)을 버퍼1에 저장한다. 예로서, 버퍼1은 RAM(212A 또는 212B)의 저장 영역에 할당될 수 있다. 버퍼1은 섹터 사이즈를 갖는다.A data pattern of a write same command received from the host 100 has a sector size. For example, the processor 211A or 211B stores the sector-sized data pattern Ds received together with the write same command in buffer 1. As an example, buffer 1 may be allocated to a storage area of RAM 212A or 212B. Buffer 1 has sector size.

그리고 나서, 프로세서(211A 또는 211B)는 버퍼1에 저장된 섹터 사이즈의 데이터(Ds)를 페이지 단위로 버퍼2에 복사한다. 예로서, 버퍼2는 RAM(212A 또는 212B)의 저장 영역에 할당될 수 있다. 버퍼2는 페이지 사이즈를 갖는다. 프로세서(211A 또는 211B)는 복수개의 동일한 섹터 데이터(Ds)로 페이지 단위의 데이터(A)를 구성하여 버퍼2에 저장할 수 있다. 예로서, 프로세서(211A 또는 211B)는 섹터 데이터(Ds)에 PI(protect information)를 부가하여 버퍼2에 저장할 수 있다. 예로서, PI는 논리적 블록 어드레스(LBA) 정보로 구성될 수 있다.Then, the processor 211A or 211B copies the sector-sized data Ds stored in the buffer 1 to the buffer 2 in page units. As an example, buffer 2 may be allocated to a storage area of RAM 212A or 212B. Buffer2 has page size. The processor 211A or 211B may configure data A in page units with a plurality of identical sector data Ds and store the data A in the buffer 2 . For example, the processor 211A or 211B may add protect information (PI) to sector data Ds and store it in buffer 2. As an example, PI may consist of Logical Block Address (LBA) information.

그리고 나서, 프로세서(211A 또는 211B)는 버퍼2에 저장된 페이지 사이즈의 데이터(A)를 라이트 세임 커맨드의 길이 정보에 상응하는 페이지 개수만큼 반복하여 버퍼3에 복사한다. 예로서, 버퍼3은 RAM(212A 또는 212B)의 저장 영역에 할당될 수 있다. 본 발명의 실시 예에서 버퍼3은 버퍼 메모리(201)로 표시하였다. 예로서, 섹터 사이즈가 512 바이트(byte)이고, 페이지 사이즈가 8K 바이트이고, 라이트 세임 커맨드의 길이 정보가 "48"인 경우에, 프로세서(211A 또는 211B)는 데이터(A)를 3회 반복하여 버퍼3에 카피한다. 이는 하나의 페이지가 16개의 섹터로 구성되고, 섹터 길이 정보에 해당되는 "48"개의 데이터 사이즈는 3개 페이지에 해당되기 때문이다.Then, the processor 211A or 211B repeatedly copies the page size data A stored in the buffer 2 to the buffer 3 by the number of pages corresponding to the length information of the write same command. As an example, buffer 3 may be allocated to a storage area of RAM 212A or 212B. In the embodiment of the present invention, buffer 3 is indicated as a buffer memory 201. For example, when the sector size is 512 bytes, the page size is 8K bytes, and the length information of the write same command is “48”, the processor 211A or 211B repeats data A three times Copy to buffer 3. This is because one page is composed of 16 sectors, and the data size of "48" corresponding to sector length information corresponds to 3 pages.

도 9는 본 발명의 실시 예에 따른 메모리 컨트롤러(210A 또는 210B)의 버퍼 메모리(201)에 라이트 세임 커맨드의 데이터가 카피되는 과정의 일 예를 보여주는 도면이다. 도 4a 또는 도 4b에 도시된 메모리 컨트롤러(210A 또는 210B)의 구성을 참조하여 설명하기로 한다.9 is a diagram illustrating an example of a process of copying data of a write same command to the buffer memory 201 of the memory controller 210A or 210B according to an embodiment of the present invention. The configuration of the memory controller 210A or 210B shown in FIG. 4A or 4B will be described.

예로서, 커맨드 WriteSame A는 데이터 패턴 A를 13개 페이지에 반복적으로 라이트하는 것을 지시하는 커맨드이고, WriteSame B는 데이터 패턴 B를 12개 페이지에 반복적으로 라이트하는 것을 지시하는 커맨드라고 가정하자.As an example, assume that the command WriteSame A is a command instructing to repeatedly write data pattern A to 13 pages, and WriteSame B is a command instructing to repeatedly write data pattern B to 12 pages.

메모리 컨트롤러(210A 또는 210B)로 커맨드 WriteSame A가 수신되는 경우에, 프로세서(211A 또는 211B)는 도 9의 (a)에 도시된 바와 같이 버퍼 메모리(201)의 13개 페이지 버퍼에 데이터 패턴 A를 반복적으로 카피한다. 프로세서(211A 또는 211B)는 커맨드 WriteSame A를 처리하고 나서 버퍼 메모리(201)를 플러시(flush) 한다.When the command WriteSame A is received by the memory controller 210A or 210B, the processor 211A or 211B writes data pattern A into the 13 page buffer of the buffer memory 201 as shown in (a) of FIG. Copy repeatedly. The processor 211A or 211B processes the command WriteSame A and then flushes the buffer memory 201.

따라서, 커맨드 WriteSame A를 처리하고 나서 커맨드 WriteSame B가 메모리 컨트롤러(210A 또는 210B)로 수신되는 경우, 프로세서(211A 또는 211B)는 도 9의 (b)에 도시된 바와 같이 버퍼 메모리(201)의 12개 페이지 버퍼에 데이터 패턴 B를 반복적으로 카피한다. 도 9의 (b)를 참조하면, 이전에 처리된 커맨드 WriteSame A에 따른 데이터 패턴 A는 버퍼 메모리(201)에 보존되지 않는다.Therefore, when the command WriteSame A is processed and then the command WriteSame B is received by the memory controller 210A or 210B, the processor 211A or 211B processes 12 of the buffer memory 201 as shown in FIG. Repeatedly copy data pattern B to each page buffer. Referring to (b) of FIG. 9 , the data pattern A according to the previously processed command WriteSame A is not stored in the buffer memory 201 .

도 10은 본 발명의 실시 예에 따른 메모리 컨트롤러(210A 또는 210B)의 버퍼 메모리(201)에 라이트 세임 커맨드의 데이터가 카피되는 과정의 다른 예를 보여주는 도면이다. 도 4a 또는 도 4b에 도시된 메모리 컨트롤러(210A 또는 210B)의 구성을 참조하여 설명하기로 한다.10 is a diagram showing another example of a process of copying data of a write same command to the buffer memory 201 of the memory controller 210A or 210B according to an embodiment of the present invention. The configuration of the memory controller 210A or 210B shown in FIG. 4A or 4B will be described.

예로서, 커맨드 WriteSame A, WriteSame B, WriteSame C가 순차적으로 메모리 컨트롤러(210A 또는 210B)로 수신되는 것으로 가정하자. 여기에서, 커맨드 WriteSame A는 데이터 패턴 A를 13개 페이지에 반복적으로 라이트하는 것을 지시하는 커맨드이고, WriteSame B는 데이터 패턴 B를 12개 페이지에 반복적으로 라이트하는 것을 지시하는 커맨드이고, WriteSame C는 데이터 패턴 C를 7개 페이지에 반복적으로 라이트하는 것을 지시하는 커맨드라고 가정하자.As an example, it is assumed that the commands WriteSame A, WriteSame B, and WriteSame C are sequentially received by the memory controller 210A or 210B. Here, the command WriteSame A is a command for repeatedly writing data pattern A to 13 pages, WriteSame B is a command for repeatedly writing data pattern B to 12 pages, and WriteSame C is a command for repeatedly writing data pattern B to 12 pages. Assume that it is a command instructing to repeatedly write pattern C on seven pages.

메모리 컨트롤러(210A 또는 210B)로 커맨드 WriteSame A가 수신되는 경우에, 프로세서(211A 또는 211B)는 도 10의 (a)에 도시된 바와 같이 버퍼 메모리(201)의 13개 페이지 버퍼에 데이터 패턴 A를 반복적으로 카피한다. 프로세서(211A 또는 211B)는 커맨드 WriteSame A를 처리하고 나서 버퍼 메모리(201)를 플러시 하는 동작을 수행하지 않는다. 즉, 커맨드 WriteSame A 처리 후에도 데이터 패턴 A는 버퍼 메모리(201)에 보존된다. When the command WriteSame A is received by the memory controller 210A or 210B, the processor 211A or 211B writes data pattern A into the 13 page buffer of the buffer memory 201 as shown in FIG. 10(a). Copy repeatedly. The processor 211A or 211B does not perform an operation to flush the buffer memory 201 after processing the command WriteSame A. That is, data pattern A is retained in the buffer memory 201 even after processing the command WriteSame A.

커맨드 WriteSame A를 처리하고 나서 커맨드 WriteSame B가 메모리 컨트롤러(210A 또는 210B)로 수신되는 경우, 프로세서(211A 또는 211B)는 도 10의 (b)에 도시된 바와 같이 버퍼 메모리(201)의 데이터 패턴 A가 저장된 페이지 버퍼의 다음에 할당된 12개의 페이지 버퍼에 데이터 패턴 B를 반복적으로 카피한다.When the command WriteSame A is received by the memory controller 210A or 210B after processing the command WriteSame A, the processor 211A or 211B processes the data pattern A of the buffer memory 201 as shown in FIG. 10(b). The data pattern B is repeatedly copied to 12 page buffers allocated next to the page buffer where B is stored.

다음으로, 커맨드 WriteSame A 및 WriteSame B를 처리하고 나서 커맨드 WriteSame C가 메모리 컨트롤러(210A 또는 210B)로 수신되는 경우, 프로세서(211A 또는 211B)는 도 10의 (c)에 도시된 바와 같이 버퍼 메모리(201)의 데이터 패턴 A 및 데이터 패턴 B가 저장된 페이지 버퍼의 다음에 할당된 7개의 페이지 버퍼에 데이터 패턴 C를 반복적으로 카피한다.Next, when the command WriteSame C is received by the memory controller 210A or 210B after processing the commands WriteSame A and WriteSame B, the processor 211A or 211B processes the buffer memory (as shown in FIG. 10(c)). In step 201), data pattern C is repeatedly copied to 7 page buffers allocated next to the page buffers in which data pattern A and data pattern B are stored.

도 10의 (c)를 참조하면, 커맨드 WriteSame A, WriteSame B, WriteSame C가 순차적으로 처리된 후에도 버퍼 메모리(201)에 데이터 패턴 A, B, C가 보존된다는 사실을 알 수 있다.Referring to (c) of FIG. 10 , it can be seen that data patterns A, B, and C are preserved in the buffer memory 201 even after the commands WriteSame A, WriteSame B, and WriteSame C are sequentially processed.

도 11은 본 발명의 실시 예에 따른 메모리 컨트롤러(210A 또는 210B)의 버퍼 메모리(201)에서의 데이터의 통일성을 확인하는 방법을 보여주는 도면이다. 도 4a 또는 도 4b에 도시된 메모리 컨트롤러(210A 또는 210B)의 구성을 참조하여 설명하기로 한다.FIG. 11 is a diagram illustrating a method of verifying unity of data in the buffer memory 201 of the memory controller 210A or 210B according to an embodiment of the present invention. The configuration of the memory controller 210A or 210B shown in FIG. 4A or 4B will be described.

예로서, 메모리 컨트롤러(210A 또는 210B)는 이전 처리된 커맨드의 데이터 보존을 위하여 도 10과 같은 방식으로 버퍼 메모리(201)를 관리한다. 그리고, 버퍼 메모리(201)는 복수개의 페이지 버퍼들이 링 버퍼 형식으로 구성될 수 있다. 도 10에서는 설명의 편의를 위하여 버퍼 메모리(201)가 32개의 페이지 버퍼들이 링 버퍼 형식으로 구성된 사례를 보여준다.For example, the memory controller 210A or 210B manages the buffer memory 201 in the manner shown in FIG. 10 to preserve data of previously processed commands. Also, the buffer memory 201 may include a plurality of page buffers in a ring buffer format. 10 shows an example in which the buffer memory 201 includes 32 page buffers in a ring buffer format for convenience of description.

프로세서(211A 또는 211B)는 버퍼 메모리(201)의 페이지 버퍼들에 연속적으로 동일한 데이터 패턴이 카피되는 회수를 카운트한다. 예로서, 도 11에서는 동일 버퍼 카운트(same buffer count) 값으로 표시하였다. 그리고, 버퍼 메모리(201)의 페이지 버퍼에 데이터가 저장되지 않은 상태를 'E'로 표시하였다.The processor 211A or 211B counts the number of times the same data pattern is continuously copied to the page buffers of the buffer memory 201 . As an example, in FIG. 11, the same buffer count value is indicated. A state in which no data is stored in the page buffer of the buffer memory 201 is indicated by 'E'.

도 11(a)와 같이, 버퍼 메모리(201)의 모든 페이지 버퍼들이 비어있는 상태에서는 동일 버퍼 카운트(same buffer count) 값은 '0'이 된다. 도 11(b)와 같이, 버퍼 메모리(201)의 8개 페이지 버퍼에 데이터 패턴 A가 카피되는 경우에 동일 버퍼 카운트 값은 '8'이 된다. As shown in FIG. 11(a), in a state in which all page buffers of the buffer memory 201 are empty, the same buffer count value becomes '0'. As shown in FIG. 11(b), when the data pattern A is copied to the 8 page buffers of the buffer memory 201, the same buffer count value becomes '8'.

도 11(c)와 같이, 버퍼 메모리(201)의 데이터 패턴 A가 8개 페이지 버퍼에 카피되고 나서 데이터 B가 하나의 페이지 버퍼에 카피되면 동일 버퍼 카운트 값은 '1'로 변경된다. As shown in FIG. 11(c), when data pattern A of the buffer memory 201 is copied to eight page buffers and then data B is copied to one page buffer, the same buffer count value is changed to '1'.

다음으로 도 11(d)와 같이, 버퍼 메모리(201)의 데이터 패턴 B가 하나의 페이지 버퍼에 카피되고 나서 데이터 B가 5개의 페이지 버퍼에 카피되면 동일 버퍼 카운트 값은 '6'으로 변경된다.Next, as shown in FIG. 11(d), when data pattern B of the buffer memory 201 is copied to one page buffer and then data B is copied to five page buffers, the same buffer count value is changed to '6'.

다음으로 도 11(e)와 같이, 버퍼 메모리(201)의 데이터 패턴 B가 5개의 페이지 버퍼에 카피되고 나서 데이터 C가 하나의 페이지 버퍼에 카피되면 동일 버퍼 카운트 값은 '1'로 변경된다.Next, as shown in FIG. 11(e), when data pattern B of the buffer memory 201 is copied to five page buffers and then data C is copied to one page buffer, the same buffer count value is changed to '1'.

다음으로 도 11(f)와 같이, 버퍼 메모리(201)의 데이터 패턴 C가 하나의 페이지 버퍼에 카피되고 나서 데이터 C가 20개의 페이지 버퍼에 카피되면 동일 버퍼 카운트 값은 '21'로 변경된다. 도 11(f)를 참조하면, 버퍼 메모리(201)를 링 버퍼 형식으로 구성하였으므로, 모든 페이지 버퍼들에 데이터가 저장된 후에는 가장 오래된 데이터 패턴 A가 저장된 페이지 버퍼에 데이터 패턴 C가 업데이트된다. 즉, 20개 페이지의 데이터 패턴 C 중에서 버퍼 메모리(201)의 비어 있는 18개 페이지 버퍼에 우선적으로 카피하고 나서 나머지 2개 페이지의 데이터 C를 데이터 패턴 A가 저장되어 있던 2개의 페이지 버퍼에 카피한다.Next, as shown in FIG. 11(f), when data pattern C of the buffer memory 201 is copied to one page buffer and then data C is copied to 20 page buffers, the same buffer count value is changed to '21'. Referring to FIG. 11(f), since the buffer memory 201 is configured in the form of a ring buffer, data pattern C is updated in the page buffer in which the oldest data pattern A is stored after data is stored in all page buffers. That is, among the 20 pages of data pattern C, first copy to the empty 18-page buffer of the buffer memory 201, and then copy the remaining 2 pages of data C to the 2 page buffers where the data pattern A is stored. .

다음으로 도 11(g)와 같이, 버퍼 메모리(201)의 데이터 패턴 C가 20개의 페이지 버퍼에 카피되고 나서 데이터 C가 10개의 페이지 버퍼에 카피되면 동일 버퍼 카운트 값은 '31'로 변경된다. 도 11(g)를 참조하면, 모든 페이지 버퍼들에 데이터가 저장되어 있는 상태이므로, 가장 오래된 데이터 패턴 A 및 B가 저장되어 있던 10개의 페이지 버퍼에 데이터 패턴 C가 업데이트된다. Next, as shown in FIG. 11(g), when data pattern C of the buffer memory 201 is copied to 20 page buffers and then data C is copied to 10 page buffers, the same buffer count value is changed to '31'. Referring to FIG. 11(g), since data is stored in all page buffers, data pattern C is updated in 10 page buffers in which the oldest data patterns A and B are stored.

다음으로 도 11(h)와 같이, 버퍼 메모리(201)의 데이터 패턴 C가 10개의 페이지 버퍼에 카피되고 나서 데이터 C가 하나의 페이지 버퍼에 카피되면 동일 버퍼 카운트 값은 '32'로 변경된다. 도 11(h)를 참조하면, 모든 페이지 버퍼들에 데이터가 저장되어 있는 상태이므로, 가장 오래된 데이터 패턴 B가 저장되어 있던 하나의 페이지 버퍼에 데이터 패턴 C가 업데이트된다. 이에 따라서, 버퍼 메모리(201)의 모든 페이지 버퍼들은 데이터 패턴 C가 저장된다. 따라서, 동일 버퍼 카운트 값이 '32'를 나타내는 경우에 버퍼 메모리(201)의 모든 페이지 버퍼들은 동일한 데이터 패턴으로 카피되어 있는 상태를 알 수 있다.Next, as shown in FIG. 11(h), when data pattern C of the buffer memory 201 is copied to 10 page buffers and then data C is copied to one page buffer, the same buffer count value is changed to '32'. Referring to FIG. 11(h), since data is stored in all page buffers, data pattern C is updated in one page buffer where the oldest data pattern B is stored. Accordingly, data pattern C is stored in all page buffers of the buffer memory 201 . Accordingly, when the same buffer count value indicates '32', it can be known that all page buffers of the buffer memory 201 are copied with the same data pattern.

즉, 동일 버퍼 카운트 값이 버퍼 메모리(201)의 총 페이지 버퍼의 개수와 동일해지면 버퍼 메모리(201)의 모든 페이지 버퍼들은 동일한 데이터 패턴으로 카피된다.That is, when the same buffer count value becomes equal to the total number of page buffers in the buffer memory 201, all page buffers in the buffer memory 201 are copied with the same data pattern.

도 12는 본 발명의 실시 예에 따른 메모리 컨트롤러(210A 또는 210B)에서의 라이트 세임 커맨드를 수행하는 과정의 일 예를 보여주는 도면이다. 도 4a 또는 도 4b에 도시된 메모리 컨트롤러(210A 또는 210B)의 구성을 참조하여 설명하기로 한다.12 is a diagram illustrating an example of a process of executing a write same command in the memory controller 210A or 210B according to an embodiment of the present invention. The configuration of the memory controller 210A or 210B shown in FIG. 4A or 4B will be described.

도 12에서 'M'으로 표시된 구간은 버퍼 메모리(201)에 데이터 패턴을 카피하는 구간이며, 'W'로 표시된 구간은 펌웨어를 이용하여 프로세서(211A 또는 211B)에서 라이트 동작을 처리하는 구간이다. 그리고, 커맨드 WriteSame 1 ~ WriteSame 9의 데이터 패턴이 모두 동일하다고 가정하자.In FIG. 12, a section marked with 'M' is a section in which data patterns are copied to the buffer memory 201, and a section marked with 'W' is a section in which the processor 211A or 211B processes a write operation using firmware. Assume that the data patterns of commands WriteSame 1 to WriteSame 9 are all the same.

예로서, 메모리 컨트롤러(210A 또는 210B)가 도 9와 같은 방식으로 버퍼 메모리(201)를 관리하는 경우의 메모리 컨트롤러(210A 또는 210B)에서의 라이트 세임 커맨드를 수행하는 과정이 도 12에 도시되었다. 즉, 프로세서(211A 또는 211B)에서 하나의 라이트 세임 커맨드를 처리하고 나서 버퍼 메모리(201)를 플러시 처리하는 방식으로 버퍼 메모리(201)를 관리하는 경우의 라이트 세임 커맨드를 수행하는 과정이 도 12에 도시되었다.As an example, FIG. 12 illustrates a process of executing a write same command in the memory controller 210A or 210B when the memory controller 210A or 210B manages the buffer memory 201 in the same manner as in FIG. 9 . 12 shows a process of executing a write same command when the processor 211A or 211B manages the buffer memory 201 by flushing the buffer memory 201 after processing one write same command. has been shown

도 12를 참조하면, 메모리 컨트롤러(210A 또는 210B)로 라이트 세임 커맨드가 수신될 때마다 버퍼 메모리(201)에 라이트 세임 커맨드의 데이터 패턴을 카피하는 동작 구간과 프로세서(211A 또는 211B)에서 펌웨어로 라이트 동작을 처리하는 동작 구간이 필요하게 된다. Referring to FIG. 12 , whenever a write same command is received by the memory controller 210A or 210B, an operation section in which the data pattern of the write same command is copied to the buffer memory 201 and the processor 211A or 211B writes the same data to the firmware An action section that processes an action is required.

도 13은 본 발명의 실시 예에 따른 메모리 컨트롤러(210A 또는 210B)에서의 라이트 세임 커맨드를 수행하는 과정의 다른 예를 보여주는 도면이다. 도 4a 또는 도 4b에 도시된 메모리 컨트롤러(210A 또는 210B)의 구성을 참조하여 설명하기로 한다.13 is a diagram showing another example of a process of executing a write same command in the memory controller 210A or 210B according to an embodiment of the present invention. The configuration of the memory controller 210A or 210B shown in FIG. 4A or 4B will be described.

도 13에서 'M'으로 표시된 구간은 버퍼 메모리(201)에 데이터 패턴을 카피하는 구간이며, 'W'로 표시된 구간은 펌웨어를 이용하여 프로세서(211A 또는 211B)에서 라이트 동작을 처리하는 구간이다. 그리고, 커맨드 WriteSame 1 ~ WriteSame 9의 데이터 패턴이 모두 동일하다고 가정하자.In FIG. 13, a section marked with 'M' is a section in which data patterns are copied to the buffer memory 201, and a section marked with 'W' is a section in which the processor 211A or 211B processes a write operation using firmware. Assume that the data patterns of commands WriteSame 1 to WriteSame 9 are all the same.

예로서, 메모리 컨트롤러(210A 또는 210B)가 도 10과 같은 방식으로 버퍼 메모리(201)를 관리하는 경우의 메모리 컨트롤러(210A 또는 210B)에서의 라이트 세임 커맨드를 수행하는 과정이 도 13에 도시되었다. 즉, 프로세서(211A 또는 211B)는 이전 처리된 커맨드의 데이터를 플러시하지 않고 보존하는 방식으로 버퍼 메모리(201)를 관리하는 경우의 라이트 세임 커맨드를 수행하는 과정이 도 13에 도시되었다.As an example, FIG. 13 illustrates a process of executing a write same command in the memory controller 210A or 210B when the memory controller 210A or 210B manages the buffer memory 201 in the same manner as in FIG. 10 . That is, a process of executing a write same command when the processor 211A or 211B manages the buffer memory 201 in a manner of preserving data of a previously processed command without flushing is illustrated in FIG. 13 .

도 13을 참조하면, 동일한 데이터 패턴으로 버퍼 메모리(201)의 모든 페이지 버퍼들이 카피될 때까지는 버퍼 메모리(201)에 라이트 세임 커맨드의 데이터 패턴을 카피하는 동작 구간과 프로세서(211A 또는 211B)에서 펌웨어로 라이트 동작을 처리하는 동작 구간이 필요하게 된다. 예로서, 동일한 데이터 패턴으로 버퍼 메모리(201)의 모든 페이지 버퍼들이 카피되는 TI 시점 이전 까지는 버퍼 메모리(201)에 라이트 세임 커맨드의 데이터 패턴을 카피하는 동작 구간과 프로세서(211A 또는 211B)에서 펌웨어로 라이트 동작을 처리하는 동작 구간이 필요하게 된다.Referring to FIG. 13, an operation period in which the data pattern of the write same command is copied to the buffer memory 201 until all page buffers of the buffer memory 201 are copied with the same data pattern, and the firmware in the processor 211A or 211B Therefore, an operation period for processing a low light operation is required. For example, until the TI point at which all page buffers of the buffer memory 201 are copied with the same data pattern, the operation section of copying the data pattern of the write same command to the buffer memory 201 and the processor 211A or 211B to firmware An operation section processing a light operation is required.

그러나, 동일한 데이터 패턴으로 버퍼 메모리(201)의 모든 페이지 버퍼들이 카피되는 TI 시점 이후에는 라이트 세임 커맨드에 대하여 버퍼 메모리(201)에 카피하는 동작을 스킵하고 프로세서(211A 또는 211B)에서 펌웨어로 라이트 동작을 처리할 수 있다.However, after the TI point at which all page buffers of the buffer memory 201 are copied with the same data pattern, the copying operation to the buffer memory 201 is skipped for the write same command, and the processor 211A or 211B performs a write operation by firmware. can handle

예로서, 케이스1에서는 TI 시점 이후의 커맨드 WriteSame 4 ~ WriteSame 9에 대한 버퍼 메모리(201)에 카피하는 동작을 스킵하고 프로세서(211A 또는 211B)에서 펌웨어로 라이트 동작을 처리할 수 있다. 즉, TI 시점 이후에는 버퍼 메모리(201)에서의 메모리 카피가 발생되지 않는다.For example, in Case 1, the operation of copying commands WriteSame 4 to WriteSame 9 after TI to the buffer memory 201 may be skipped, and the processor 211A or 211B may process the write operation with firmware. That is, memory copying in the buffer memory 201 does not occur after the TI time point.

다른 예로서, 케이스2에는 하나의 커맨드 WriteSame 1의 길이 정보에 따른 데이터 패턴의 페이지 개수가 버퍼 메모리(201)의 총 페이지 버퍼의 개수를 초과하는 사례를 보여준다. 이 경우에는 하나의 커맨드 WriteSame 1에 따른 버퍼 메모리(201)에서의 메모리 카피를 시간 T1 시점 이전까지만 수행하고, 시간 T1 시점 이후에는 버퍼 메모리(201)에 카피하는 동작을 스킵한다. 이에 따라서, T1 시점 이후에는 버퍼 메모리(201)에 이전에 카피된 데이터를 이용하여 프로세서(211A 또는 211B)에서 펌웨어로 라이트 동작을 처리할 수 있다. As another example, case 2 shows a case in which the number of pages of a data pattern according to length information of one command WriteSame 1 exceeds the total number of page buffers of the buffer memory 201 . In this case, memory copying in the buffer memory 201 according to one command WriteSame 1 is performed until before time T1, and the operation of copying to the buffer memory 201 after time T1 is skipped. Accordingly, after the time point T1, the processor 211A or 211B may process a write operation with firmware using data previously copied to the buffer memory 201.

따라서, 도 12 및 도 13을 참조하면, 도 9와 같은 방식으로 버퍼 메모리(201)를 관리하는 경우에 비하여 도 10과 같은 방식으로 버퍼 메모리(201)를 관리하는 것이 성능 면에서 유리하다.Therefore, referring to FIGS. 12 and 13 , managing the buffer memory 201 in the manner of FIG. 10 is advantageous in terms of performance compared to managing the buffer memory 201 in the manner of FIG. 9 .

도 14는 본 발명의 실시 예에 따른 메모리 컨트롤러(210A)에서의 다이렉트 메모리 액세스 모듈(203)을 이용하지 않고 라이트 세임 커맨드를 수행하는 과정의 일 예를 보여주는 도면이다.14 is a diagram showing an example of a process of executing a write same command without using the direct memory access module 203 in the memory controller 210A according to an embodiment of the present invention.

도 14를 참조하면, 버퍼 메모리(201)에 데이터를 카피하는 동작(MEMCPY)과 프로세서(211A)에서 펌웨어로 라이트 커맨드를 처리하는 동작(WRITE)이 직렬적이 수행된다. Referring to FIG. 14 , an operation of copying data to the buffer memory 201 (MEMCPY) and an operation of processing a write command by firmware in the processor 211A (WRITE) are serially performed.

도 15는 본 발명의 실시 예에 따른 메모리 컨트롤러(210B)에서의 다이렉트 메모리 액세스 모듈(203)을 이용하여 라이트 세임 커맨드를 수행하는 과정의 일 예를 보여주는 도면이다.15 is a diagram showing an example of a process of executing a write same command using the direct memory access module 203 in the memory controller 210B according to an embodiment of the present invention.

도 15를 참조하면, 버퍼 메모리(201)에 데이터를 카피하는 동작(MEMCPY)과 프로세서(211B)에서 펌웨어로 라이트 커맨드를 처리하는 동작(WRITE)이 병렬적으로 수행된다. 즉, 버퍼 메모리(201)에 데이터를 카피하는 동작(MEMCPY)과 프로세서(211B)에서 펌웨어로 라이트 커맨드를 처리하는 동작(WRITE)이 각각 독립적으로 수행될 수 있다.Referring to FIG. 15 , an operation of copying data to the buffer memory 201 (MEMCPY) and an operation of processing a write command by firmware in the processor 211B (WRITE) are performed in parallel. That is, an operation of copying data to the buffer memory 201 (MEMCPY) and an operation of processing a write command by firmware in the processor 211B (WRITE) may be independently performed.

도 16은 본 발명의 실시 예에 따른 메모리 컨트롤러(210B)에서의 메모리 버퍼(201) 내의 데이터 통일성이 확인된 경우의 라이트 세임 커맨드를 수행하는 과정의 일 예를 보여주는 도면이다.16 is a diagram illustrating an example of a process of executing a write same command when consistency of data in the memory buffer 201 is confirmed in the memory controller 210B according to an embodiment of the present invention.

도 16을 참조하면, 버퍼 메모리(201)의 모든 페이지 버퍼들에 동일한 데이터 패턴이 카피되는 시점 T1 이전까지는 버퍼 메모리(201)에 데이터를 카피하는 동작(MEMCPY)과 프로세서(211B)에서 펌웨어로 라이트 커맨드를 처리하는 동작(WRITE)이 병렬적으로 수행된다. 버퍼 메모리(201)의 모든 페이지 버퍼들에 동일한 데이터 패턴이 카피되는 시점 T1 이후에는 라이트 세임 커맨드의 데이터 패턴을 버퍼 메모리(201)에 카피하는 동작을 스킵하고, 프로세서(211B)에서 펌웨어로 라이트 커맨드를 처리하는 동작(WRITE)을 수행한다.Referring to FIG. 16, until time T1 when the same data pattern is copied to all page buffers of the buffer memory 201, an operation of copying data to the buffer memory 201 (MEMCPY) and writing by the processor 211B to firmware The operation of processing the command (WRITE) is performed in parallel. After the point in time T1 when the same data pattern is copied to all page buffers of the buffer memory 201, the operation of copying the data pattern of the write same command to the buffer memory 201 is skipped, and the processor 211B transfers the write command to the firmware. It performs the operation (WRITE) to process.

도 17은 본 발명의 실시 예에 따른 라이트 동작 수행 방법의 흐름도이다. 예로서, 도 17의 흐름도는 도 1a, 1b, 2a, 2b에 포함된 스토리지 디바이스를 포함하는 다양한 형태로 스토리지 디바이스의 메모리 컨트롤러에서 수행될 수 있다. 예로서, 도 4a 또는 도 4b에 도시된 스토리지 디바이스의 메모리 컨트롤러(210A 또는 210B)에서 수행될 수 있다.17 is a flowchart of a method for performing a write operation according to an embodiment of the present invention. As an example, the flowchart of FIG. 17 may be performed in a memory controller of a storage device in various forms including the storage devices included in FIGS. 1A, 1B, 2A, and 2B. For example, it may be performed in the memory controller 210A or 210B of the storage device shown in FIG. 4A or 4B.

프로세서 (211A 또는 211B)는 호스트로부터 라이트 동작을 지시하는 커맨드가 수신되는지를 판단한다(S110). 예로서, 라이트 동작을 지시하는 커맨드에는 라이트 세임 커맨드(write same command)가 포함될 수 있다.The processor 211A or 211B determines whether a command instructing a write operation is received from the host (S110). For example, a command instructing a write operation may include a write same command.

호스트로부터 라이트 동작을 지시하는 커맨드가 수신되는 경우에, 프로세서 (211A 또는 211B)는 이전에 수신된 커맨드들의 데이터 패턴과 현재 수신된 라이트 동작을 지시하는 커맨드의 데이터 패턴을 비교한다(S120). 예로서, 프로세서(211A 또는 211B)는 현재 수신된 라이트 동작을 지시하는 커맨드의 데이터 패턴에 포함된 CRC(cyclical redundancy check) 값과 이전에 수신된 커맨드들의 데이터 패턴에 포함된 CRC 값이 동일하면 데이터 패턴이 동일한 것으로 판정할 수 있다.When a command instructing a write operation is received from the host, the processor 211A or 211B compares a data pattern of previously received commands with a data pattern of a command instructing a write operation currently received (S120). For example, if a cyclical redundancy check (CRC) value included in a data pattern of a currently received command indicating a write operation is the same as a CRC value included in a data pattern of previously received commands, the processor 211A or 211B performs data processing. It can be determined that the patterns are the same.

프로세서(211A 또는 211B)는 버퍼 메모리(201)의 모든 페이지 버퍼들에 저장된 이전에 수신된 커맨드들의 데이터 패턴과 현재 수신된 라이트 동작을 지시하는 커맨드의 데이터 패턴이 동일한지를 판단한다(S130). 예로서, 프로세서(211A 또는 211B)는 버퍼 메모리(201)의 모든 페이지 버퍼들이 동일한 데이터 패턴으로 카피되어 있고, 현재 수신된 라이트 동작을 지시하는 커맨드의 데이터 패턴이 버퍼 메모리(201)에 카피된 데이터 패턴과 동일한지를 판단한다.The processor 211A or 211B determines whether a data pattern of previously received commands stored in all page buffers of the buffer memory 201 and a data pattern of a command indicating a currently received write operation are the same (S130). For example, the processor 211A or 211B determines that all page buffers of the buffer memory 201 are copied with the same data pattern, and the data pattern of the command instructing the currently received write operation is copied to the buffer memory 201. Determine whether the pattern is the same.

오퍼레이션 S130의 판단 결과 버퍼 메모리(201)의 모든 페이지 버퍼들에 저장된 이전에 수신된 커맨드들의 데이터 패턴과 현재 수신된 라이트 동작을 지시하는 커맨드의 데이터 패턴이 동일하지 않은 경우에는, 현재 수신된 라이트 동작을 지시하는 커맨드의 데이터 패턴을 버퍼 메모리(201)에 카피하는 동작을 수행한다(S140). 예로서, 버퍼 메모리(201)의 모든 페이지 버퍼들이 동일한 데이터 패턴으로 카피되어 있지 않은 경우, 또는 버퍼 메모리(201)의 모든 페이지 버퍼들이 동일한 데이터 패턴으로 카피되어 있으나 현재 수신된 라이트 동작을 지시하는 커맨드의 데이터 패턴이 버퍼 메모리(201)의 페이지 버퍼에 카피되어 있는 데이터 패턴과 동일하지 않은 경우에는, 현재 수신된 라이트 동작을 지시하는 커맨드의 데이터 패턴을 버퍼 메모리(201)에 카피하는 동작을 수행한다.As a result of the determination in operation S130, when the data pattern of previously received commands stored in all page buffers of the buffer memory 201 and the data pattern of the command indicating the currently received write operation are not the same, the currently received write operation An operation of copying the data pattern of the command indicating to the buffer memory 201 is performed (S140). For example, when all page buffers of the buffer memory 201 are not copied with the same data pattern, or all page buffers of the buffer memory 201 are copied with the same data pattern, but a command indicating the currently received write operation If the data pattern of the buffer memory 201 is not the same as the data pattern copied to the page buffer of the buffer memory 201, an operation of copying the data pattern of the command instructing the currently received write operation to the buffer memory 201 is performed. .

만일, 오퍼레이션 S130의 판단 결과 버퍼 메모리(201)의 모든 페이지 버퍼들에 저장된 이전에 수신된 커맨드들의 데이터 패턴과 현재 수신된 라이트 동작을 지시하는 커맨드의 데이터 패턴이 동일한 경우에는, 현재 수신된 라이트 동작을 지시하는 커맨드의 데이터 패턴을 버퍼 메모리(201)에 카피하는 동작을 스킵하고, 버퍼 메모리(201)에 카피된 데이터를 이용하여 메모리 디바이스(220)에 라이트하는 동작을 수행한다(S150). 또한, 오퍼레이션 S140을 수행한 이후에는 버퍼 메모리(201)에 카피된 데이터를 이용하여 메모리 디바이스(220)에 라이트하는 동작을 수행한다If, as a result of operation S130, the data pattern of previously received commands stored in all page buffers of the buffer memory 201 and the data pattern of the command indicating the currently received write operation are the same, the currently received write operation The operation of copying the data pattern of the command indicating to the buffer memory 201 is skipped, and an operation of writing the data copied to the buffer memory 201 to the memory device 220 is performed (S150). Also, after operation S140 is performed, an operation of writing the data copied to the buffer memory 201 to the memory device 220 is performed.

도 18은 본 발명의 실시 예에 따른 버퍼 메모리 관리 방법의 흐름도이다. 예로서, 도 17의 흐름도는 도 1a, 1b, 2a, 2b에 포함된 스토리지 디바이스를 포함하는 다양한 형태로 스토리지 디바이스의 메모리 컨트롤러에서 수행될 수 있다. 예로서, 도 4a 또는 도 4b에 도시된 스토리지 디바이스의 메모리 컨트롤러(210A 또는 210B)에서 수행될 수 있다.18 is a flowchart of a buffer memory management method according to an embodiment of the present invention. As an example, the flowchart of FIG. 17 may be performed in a memory controller of a storage device in various forms including the storage devices included in FIGS. 1A, 1B, 2A, and 2B. For example, it may be performed in the memory controller 210A or 210B of the storage device shown in FIG. 4A or 4B.

프로세서(211A 또는 211B)는 호스트로부터 수신되는 커맨드들의 데이터를 순차적으로 버퍼 메모리(201)에 카피하는 동작을 수행한다(S210). 예로서, 호스트로부터 라이트 세임 커맨드들이 연속적으로 수신되는 경우에, 프로세서(211A 또는 211B)는 호스트로부터 수신되는 라이트 세임 커맨드들의 데이터 패턴을 순차적으로 버퍼 메모리(201)에 카피한다. 예로서, 도 10에 도시된 바와 같이 이전에 처리된 커맨드들의 데이터 패턴을 보존하는 방식으로 라이트 세임 커맨드들의 데이터 패턴을 순차적으로 버퍼 메모리(201)에 카피한다.The processor 211A or 211B sequentially copies data of commands received from the host to the buffer memory 201 (S210). For example, when write same commands are continuously received from the host, the processor 211A or 211B sequentially copies data patterns of the write same commands received from the host to the buffer memory 201 . For example, as shown in FIG. 10 , data patterns of write same commands are sequentially copied to the buffer memory 201 in a manner of preserving data patterns of previously processed commands.

다음으로, 프로세서(211A 또는 211B)는 버퍼 메모리(201)의 모든 페이지 버퍼들이 동일한 데이터 패턴으로 카피되어 있는지를 판단한다(S220). 예로서, 도 11에 도시된 바와 같이 동일 버퍼 카운트(same buffer count) 값을 이용하여 버퍼 메모리(201)의 모든 페이지 버퍼들이 동일한 데이터 패턴으로 카피되어 있는지를 판단할 수 있다.Next, the processor 211A or 211B determines whether all page buffers of the buffer memory 201 are copied with the same data pattern (S220). For example, as shown in FIG. 11 , it may be determined whether all page buffers of the buffer memory 201 are copied with the same data pattern using the same buffer count value.

오퍼레이션 S220의 판단 결과 버퍼 메모리(201)의 모든 페이지 버퍼들이 동일한 데이터 패턴으로 카피되어 있는 경우에, 프로세서(211A 또는 211B)는 현재 수신된 라이트 세임 커맨드의 데이터 패턴과 버퍼 메모리(201)의 페이지 버퍼에 카피되어 있는 데이터 패턴이 동일한지를 판단한다(S230).As a result of the determination in operation S220, when all page buffers of the buffer memory 201 have been copied with the same data pattern, the processor 211A or 211B processes the data pattern of the currently received write same command and the page buffer of the buffer memory 201. It is determined whether the data patterns copied to are the same (S230).

오퍼레이션 S220의 판단 결과 버퍼 메모리(201)의 모든 페이지 버퍼들이 동일한 데이터 패턴으로 카피되어 있지 않거나, 오퍼레이션 S230의 판단 결과 현재 수신된 라이트 세임 커맨드의 데이터 패턴과 버퍼 메모리(201)의 페이지 버퍼에 카피되어 있는 데이터 패턴이 동일하지 않은 경우에, 프로세서(211A 또는 211B)는 현재 수신된 라이트 세임 커맨드의 데이터 패턴을 버퍼 메모리(201)에 카피하는 동작을 수행한다(S240). 예로서, 도 10 또는 도 11과 같은 방식으로 현재 수신된 라이트 세임 커맨드의 데이터 패턴을 버퍼 메모리(201)에 카피할 수 있다.As a result of determination in operation S220, all page buffers of the buffer memory 201 are not copied with the same data pattern, or as a result of determination in operation S230, the data pattern of the currently received write same command and the page buffer of the buffer memory 201 are copied. If the existing data patterns are not the same, the processor 211A or 211B copies the data pattern of the currently received write same command to the buffer memory 201 (S240). For example, the data pattern of the currently received write same command may be copied to the buffer memory 201 in the manner shown in FIG. 10 or FIG. 11 .

오퍼레이션 S230의 판단 결과 현재 수신된 라이트 세임 커맨드의 데이터 패턴과 버퍼 메모리(201)의 페이지 버퍼에 카피되어 있는 데이터 패턴이 동일한 경우에, 프로세서(211A 또는 211B)는 현재 수신된 라이트 세임 커맨드의 데이터 패턴을 버퍼 메모리(201)에 카피하는 동작을 스킵 처리한다(S250).When the data pattern of the currently received write same command and the data pattern copied to the page buffer of the buffer memory 201 are identical as a result of the determination in operation S230, the processor 211A or 211B returns the currently received data pattern of the write same command. The operation of copying to the buffer memory 201 is skipped (S250).

도 19는 본 발명의 실시 예에 따른 컴퓨팅 시스템에서 수행되는 라이트 라이트 동작 방법의 흐름도이다. 도 17의 흐름도는 도 1a, 1b, 2a, 2b에 포함된 컴퓨팅 시스템을 포함하는 다양한 형태의 컴퓨팅 시스템에서 수행될 수 있다. 설명의 편의를 위하여 도 1의 컴퓨팅 시스템(1000A)에서 수행되는 라이트 세임 커맨드 처리 방법에 대하여 설명하기로 한다.19 is a flowchart of a light operation method performed in a computing system according to an embodiment of the present invention. The flowchart of FIG. 17 may be performed in various types of computing systems including the computing systems included in FIGS. 1A, 1B, 2A, and 2B. For convenience of description, a method of processing a write same command performed in the computing system 1000A of FIG. 1 will be described.

컴퓨팅 시스템(1000A)은 소프트웨어적으로 호스트 시스템, 호스트 인터페이스 계층(HIL) 및 플래시 변환 계층(FTL)로 분류할 수 있다. 호스트 시스템은 호스트(100)의 펌웨어에서 수행되고, 호스트 인터페이스 계층(HIL) 및 플래시 변환 계층(FTL)은 스토리지 디바이스(200A)의 펌웨어에서 수행된다.The computing system 1000A may be classified into a host system, a host interface layer (HIL), and a flash translation layer (FTL) in terms of software. The host system is implemented in the firmware of the host 100, and the host interface layer (HIL) and flash translation layer (FTL) are implemented in the firmware of the storage device 200A.

호스트 시스템에서 1섹터 사이즈의 데이터와 섹터 길이 정보를 포함하는 라이트 세임 커맨드를 생성하여 호스트 인터페이스 계층(HIL)로 전송한다(S310).In the host system, a write same command including one sector size data and sector length information is generated and transmitted to the host interface layer (HIL) (S310).

호스트 인터페이스 계층(HIL)에서는 라이트 세임 커맨드의 1섹터 사이즈의 데이터 패턴과 이전에 수신된 커맨드의 데이터 패턴이 동일한지를 판단한다(S320). 예로서, 1섹터 사이즈의 데이터 패턴에 포함된 CRC 값과 이전에 수신된 커맨드들의 데이터 패턴에 포함된 CRC 값이 동일하면, 동일한 데이터 패턴으로 판단할 수 있다. 다른 예로서, 1섹터 사이즈의 데이터 패턴과 이전에 수신된 커맨드들의 데이터 패턴의 모든 비트들을 비교할 수도 있다.The host interface layer (HIL) determines whether the 1-sector size data pattern of the write same command and the data pattern of the previously received command are the same (S320). For example, if a CRC value included in a data pattern having a size of 1 sector and a CRC value included in data patterns of previously received commands are the same, it may be determined that the data pattern is the same. As another example, all bits of a data pattern of one sector size and data patterns of previously received commands may be compared.

그리고, 호스트 인터페이스 계층(HIL)에서는 라이트 세임 커맨드의 1섹터 사이즈의 데이터 패턴을 1페이지 사이즈 데이터 패턴으로 복사 처리한다(S330).Then, in the host interface layer (HIL), copy processing is performed from the data pattern of the size of 1 sector of the write same command to the data pattern of size of 1 page (S330).

그리고 나서, 호스트 인터페이스 계층(HIL)에서 복사 처리된 1페이지 사이즈의 데이터 패턴, 논리적 페이지 번호 길이(LPN length) 정보 및 패턴 검출 결과(pattern detect result) 정보를 플래시 변환 계층(FTL)으로 전송한다(S340). 여기에서, 논리적 페이지 번호(LPN) 길이 정보는 라이트 세임 커맨드에 포함된 섹터 길이 정보를 페이지 길이 정보로 변환한 길이 정보에 해당된다. 그리고, 패턴 검출 결과 정보는 라이트 세임 커맨드의 1섹터 사이즈의 데이터 패턴과 이전에 수신된 커맨드의 데이터 패턴이 동일한지를 판단한 결과 정보에 해당된다.Then, the copy-processed 1-page data pattern in the host interface layer (HIL), logical page number length (LPN length) information, and pattern detect result information are transmitted to the flash translation layer (FTL) ( S340). Here, the logical page number (LPN) length information corresponds to length information obtained by converting sector length information included in the write same command into page length information. And, the pattern detection result information corresponds to information as a result of determining whether the one-sector size data pattern of the write same command and the data pattern of the previously received command are the same.

플래시 변환 계층(FTL)에서는 호스트 인터페이스 계층(HIL)으로부터 수신된 패턴 검출 결과 정보가 현재 수신된 라이트 세임 커맨드의 1섹터 사이즈의 데이터 패턴과 이전에 처리된 커맨드의 데이터 패턴이 동일한 것을 나타내는지를 판단한다(S350).In the flash translation layer (FTL), it is determined whether the pattern detection result information received from the host interface layer (HIL) indicates that the 1-sector size data pattern of the currently received write same command and the data pattern of the previously processed command are the same. (S350).

오퍼레이션 S350의 판단 결과 호스트 인터페이스 계층(HIL)으로부터 수신된 패턴 검출 결과 정보가 현재 수신된 라이트 세임 커맨드의 1섹터 사이즈의 데이터 패턴과 이전에 처리된 커맨드의 데이터 패턴이 동일한 것을 나타내는 경우에, 플래시 변환 계층(FTL)에서는 버퍼 메모리(201)의 모든 페이지 버퍼들에 현재 수신된 라이트 세임 커맨드의 데이터 패턴으로 카피되어 있는지를 판단한다(S360).As a result of determination in operation S350, when the pattern detection result information received from the host interface layer (HIL) indicates that the 1-sector size data pattern of the currently received write same command and the data pattern of the previously processed command are the same, flash conversion In the layer (FTL), it is determined whether the data pattern of the currently received write same command is copied to all page buffers of the buffer memory 201 (S360).

오퍼레이션 S350의 판단 결과 호스트 인터페이스 계층(HIL)으로부터 수신된 패턴 검출 결과 정보가 현재 수신된 라이트 세임 커맨드의 1섹터 사이즈의 데이터 패턴과 이전에 처리된 커맨드의 데이터 패턴이 동일하지 않은 것을 나타내는 경우, 또는 오퍼레이션 S360의 판단 결과 버퍼 메모리(201)의 모든 페이지 버퍼들에 현재 수신된 라이트 세임 커맨드의 데이터 패턴으로 카피되어 있지 않은 경우에 호스트 인터페이스 계층(HIL)으로부터 수신된 1페이지 사이즈의 데이터 패턴을 논리적 페이지 번호(LPN) 길이 정보에 상응하는 회수만큼 버퍼 메모리(201)에 복사한다(S370).When the pattern detection result information received from the host interface layer (HIL) as a result of determination in operation S350 indicates that the 1-sector size data pattern of the currently received write same command and the data pattern of the previously processed command are not identical, or As a result of operation S360, if all page buffers of the buffer memory 201 have not copied the data pattern of the currently received write same command, the 1-page size data pattern received from the host interface layer (HIL) is converted to a logical page. It is copied to the buffer memory 201 as many times as the number of times corresponding to the number (LPN) length information (S370).

만일 오퍼레이션 S360의 판단 결과 버퍼 메모리(201)의 모든 페이지 버퍼들에 현재 수신된 라이트 세임 커맨드의 데이터 패턴으로 카피되어 있는 경우에, 플래시 변환 계층(FTL)에서는 버퍼 메모리(201)에 복사되어 있는 데이터를 이용하여 라이트 동작 처리를 수행한다(S380). 이에 따라서, 버퍼 메모리(201)의 모든 페이지 버퍼들에 현재 수신된 라이트 세임 커맨드의 데이터 패턴으로 카피되어 있는 경우에는 현재 수신된 라이트 세임 커맨드의 데이터 패턴을 버퍼 메모리(201)에 복사하는 동작을 스킵할 수 있게 된다.If, as a result of operation S360, the data pattern of the currently received write same command is copied to all page buffers of the buffer memory 201 as a result of the determination, the data copied to the buffer memory 201 in the flash translation layer (FTL) A light operation process is performed using (S380). Accordingly, if the data pattern of the currently received write same command is copied to all page buffers of the buffer memory 201, the operation of copying the data pattern of the currently received write same command to the buffer memory 201 is skipped. You will be able to do it.

한편, 상기에서 설명된 본 발명에 적용되는 스토리지 디바이스는 다양한 형태들의 패키지를 이용하여 실장 될 수 있다. 예를 들면, 본 발명에 따른 스토리지 디바이스는 PoP(Package on Package), Ball grid arrays(BGAs), Chip scale packages(CSPs), Plastic Leaded Chip Carrier(PLCC), Plastic Dual In-Line Package(PDIP), Die in Waffle Pack, Die in Wafer Form, Chip On Board(COB), Ceramic Dual In-Line Package(CERDIP), Plastic MetricQuad Flat Pack(MQFP), Thin Quad Flatpack(TQFP), Small Outline(SOIC), Shrink Small Outline Package(SSOP), Thin Small Outline(TSOP), Thin Quad Flatpack(TQFP), System In Package(SIP), Multi Chip Package(MCP), Wafer-level Fabricated Package(WFP), Wafer-Level Processed Stack Package(WSP), 등과 같은 패키지들을 이용하여 실장될 수 있다.Meanwhile, the storage device applied to the present invention described above may be mounted using various types of packages. For example, the storage device according to the present invention includes PoP (Package on Package), Ball grid arrays (BGAs), Chip scale packages (CSPs), Plastic Leaded Chip Carrier (PLCC), Plastic Dual In-Line Package (PDIP), Die in Waffle Pack, Die in Wafer Form, Chip On Board (COB), Ceramic Dual In-Line Package (CERDIP), Plastic MetricQuad Flat Pack (MQFP), Thin Quad Flatpack (TQFP), Small Outline (SOIC), Shrink Small Outline Package (SSOP), Thin Small Outline (TSOP), Thin Quad Flatpack (TQFP), System In Package (SIP), Multi Chip Package (MCP), Wafer-level Fabricated Package (WFP), Wafer-Level Processed Stack Package ( WSP), etc. can be mounted using packages such as

이상에서와 같이 도면과 명세서에서 최적 실시예가 개시되었다. 여기서 특정한 용어들이었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.As described above, the optimum embodiment has been disclosed in the drawings and specifications. Although specific terms have been used herein, they are only used for the purpose of describing the present invention, and are not used to limit the scope of the present invention described in the meaning or claims. Therefore, those of ordinary skill in the art will understand that various modifications and equivalent other embodiments are possible therefrom. Therefore, the true technical protection scope of the present invention should be determined by the technical spirit of the appended claims.

1000A, 1000B, 2000A, 2000B: 컴퓨팅 시스템
100, 2100: 호스트
200A, 200B, 2210-1, 2210-M, 2210'-1, 2210'-M: 스토리지 디바이스
201, 201-1, 201-M: 버퍼 메모리
202, 202-1, 202-M: 버퍼 관리 모듈
203, 203-1, 203-M: 다이렉트 메모리 액세스 모듈
2110, 211A, 211B: 프로세서
2120: 메모리 2130: I/O 제어기
2140: I/O 브리지 2200A, 2200B: I/O 디바이스 블록
210A, 210B: 메모리 컨트롤러 220: 메모리 디바이스
220-1: 비휘발성 메모리
212A, 212B: RAM 213: 호스트 인터페이스
214: 메모리 인터페이스 215: ROM
216: 버스 11: 메모리 셀 어레이
12: 제어 로직 13: 전압 생성부
14: 로우 디코더 15: 페이지 버퍼
1000A, 1000B, 2000A, 2000B: Computing Systems
100, 2100: host
200A, 200B, 2210-1, 2210-M, 2210'-1, 2210'-M: Storage Device
201, 201-1, 201-M: buffer memory
202, 202-1, 202-M: buffer management module
203, 203-1, 203-M: Direct memory access module
2110, 211A, 211B: Processor
2120: memory 2130: I/O controller
2140: I/O Bridge 2200A, 2200B: I/O Device Block
210A, 210B: memory controller 220: memory device
220-1: non-volatile memory
212A, 212B: RAM 213: Host interface
214: memory interface 215: ROM
216: bus 11: memory cell array
12: control logic 13: voltage generator
14: row decoder 15: page buffer

Claims (10)

현재 수신된 라이트 동작을 지시하는 커맨드의 데이터 패턴과 이전에 수신된 커맨드들의 데이터 패턴을 비교하는 단계;
상기 라이트 동작을 지시하는 커맨드의 데이터 패턴이 이전에 수신된 커맨드들의 데이터 패턴과 동일한 경우에, 버퍼 메모리 내에서 상기 데이터 패턴이 저장된 페이지 버퍼들의 개수가 상기 버퍼 메모리에 설정된 동일 버퍼 카운트와의 일치 여부를 결정하는 단계; 및
상기 결정 결과를 기반으로 상기 버퍼 메모리에 카피된 데이터를 선택적으로 이용하여 라이트 동작을 수행하는 단계를 포함하는 라이트 동작 수행 방법.
comparing a data pattern of a command indicating a currently received write operation with a data pattern of previously received commands;
When the data pattern of the command instructing the write operation is the same as the data pattern of previously received commands, whether the number of page buffers in which the data pattern is stored matches the same buffer count set in the buffer memory determining; and
and performing a write operation by selectively using the data copied to the buffer memory based on the determination result.
제1항에 있어서, 상기 라이트 동작을 지시하는 커맨드는 라이트 세임 커맨드(write same command)를 포함하며, 상기 라이트 세임 커맨드는 하나의 데이터 패턴을 2개 이상의 페이지들에 각각 라이트하는 동작을 수행하는 커맨드임을 특징으로 하는 라이트 동작 수행 방법.The method of claim 1 , wherein the command instructing the write operation includes a write same command, and the write same command is a command for performing an operation of writing one data pattern to two or more pages, respectively. A method for performing a light operation, characterized in that. 제1항에 있어서, 상기 데이터 패턴을 비교하는 단계는 상기 라이트 동작을 지시하는 커맨드의 데이터 패턴에 포함된 CRC(cyclical redundancy check) 값과 이전에 수신된 커맨드들의 데이터 패턴에 포함된 CRC 값이 동일하면 데이터 패턴이 동일한 것으로 판정하는 것을 특징으로 하는 라이트 동작 수행 방법.2 . The method of claim 1 , wherein the comparing of the data patterns includes a cyclical redundancy check (CRC) value included in the data pattern of the command instructing the write operation and a CRC value included in the data pattern of previously received commands. A method of performing a write operation, characterized in that it is determined that the data patterns are the same. 제1항에 있어서, 상기 데이터 패턴을 비교하는 단계는 메모리 컨트롤러의 호스트 인터페이스 계층에서 수행하고, 상기 호스트 인터페이스 계층에서 상기 패턴 비교 결과에 대한 정보를 플래시 변환 계층으로 전송하며, 상기 플래시 변환 계층에서 상기 패턴 비교 결과에 대한 정보에 기초하여 상기 이전에 수신된 커맨드들의 데이터 패턴의 재사용 여부를 결정하는 것을 특징으로 하는 라이트 동작 수행 방법.The method of claim 1 , wherein the comparing of the data patterns is performed in a host interface layer of a memory controller, the host interface layer transmits information about a result of the pattern comparison to a flash conversion layer, and the flash conversion layer transmits information about a result of the pattern comparison. and determining whether or not to reuse data patterns of the previously received commands based on information about a pattern comparison result. 제1항에 있어서, 상기 이전에 수신된 커맨드들의 데이터 패턴이 순차적으로 카피되는 버퍼 메모리 내의 모든 페이지들이 동일한 데이터 패턴으로 메모리 카피되어 있고 상기 버퍼 메모리에 카피된 데이터 패턴과 상기 라이트 동작을 지시하는 커맨드의 데이터 패턴이 동일한 경우에, 상기 라이트 동작을 지시하는 커맨드의 데이터 패턴을 상기 버퍼 메모리에 카피하는 동작을 스킵(skip)하는 것을 특징으로 하는 라이트 동작 수행 방법.The method of claim 1 , wherein all pages in a buffer memory to which data patterns of the previously received commands are sequentially copied are memory-copied with the same data pattern, and the data patterns copied to the buffer memory and the command instructing the write operation and skipping an operation of copying a data pattern of a command instructing the write operation to the buffer memory when the data patterns of the write operations are the same. 제5항에 있어서, 상기 버퍼 메모리는 링 버퍼 메모리를 포함하고, 상기 링 버퍼 메모리에 동일 데이터 패턴이 연속적으로 카피되는 페이지 버퍼들의 개수를 카운팅하고, 상기 카운팅된 페이지 버퍼들의 개수가 상기 버퍼 메모리에 포함된 페이지 버퍼들의 총 개수와 일치하는 경우에 버퍼 메모리 내의 모든 페이지들이 동일한 데이터 패턴으로 메모리 카피되어 있는 것으로 판정하는 것을 특징으로 하는 라이트 동작 수행 방법.6. The method of claim 5, wherein the buffer memory includes a ring buffer memory, counts the number of page buffers to which the same data pattern is continuously copied to the ring buffer memory, and the counted number of page buffers is stored in the buffer memory. A method of performing a write operation comprising: determining that all pages in a buffer memory are memory copied with the same data pattern when the total number of included page buffers is the same. 호스트로부터 수신되는 커맨드의 데이터를 순차적으로 버퍼 메모리에 카피하는 단계; 및
상기 버퍼 메모리 내의 모든 페이지 버퍼들이 동일한 데이터 패턴으로 카피되어 있는 상태에서 상기 버퍼 메모리에 카피되어 있는 데이터 패턴과 동일한 데이터 패턴의 라이트 세임 커맨드(write same command)가 수신되는 경우에, 상기 버퍼 메모리에 상기 라이트 세임 커맨드의 데이터를 카피하는 동작을 스킵하는 단계를 포함하고,
상기 버퍼 메모리에 카피된 데이터를 이용하여 상기 라이트 세임 커맨드에 따른 라이트 동작을 수행하는 것을 특징으로 하는 버퍼 메모리 관리 방법.
sequentially copying command data received from the host to a buffer memory; and
When a write same command of the same data pattern as the data pattern copied to the buffer memory is received while all the page buffers in the buffer memory are copied with the same data pattern, the write same command is received in the buffer memory. Skipping an operation of copying data of a light same command;
and performing a write operation according to the write same command using the data copied to the buffer memory.
제7항에 있어서, 상기 버퍼 메모리는 링 버퍼 메모리를 포함하고, 상기 링 버퍼 메모리에 동일 데이터 패턴이 연속적으로 카피된 페이지 버퍼들의 개수가 상기 버퍼 메모리에 포함된 페이지 버퍼들의 총 개수와 일치하는 경우에 버퍼 메모리 내의 모든 페이지들이 동일한 데이터 패턴으로 메모리 카피되어 있는 것으로 판정하는 것을 특징으로 하는 버퍼 메모리 관리 방법.8. The method of claim 7, wherein the buffer memory includes a ring buffer memory, and the number of page buffers to which the same data pattern is continuously copied to the ring buffer memory is equal to the total number of page buffers included in the buffer memory. A buffer memory management method characterized in that it is determined that all pages in the buffer memory are memory copied with the same data pattern. 제7항에 있어서, 상기 라이트 세임 커맨드의 데이터 패턴에 포함된 CRC 값과 이전에 수신된 커맨드들의 데이터 패턴에 포함된 CRC(cyclical redundancy check) 값이 동일하면 데이터 패턴이 동일한 것으로 판정하는 것을 특징으로 하는 버퍼 메모리 관리 방법.8. The method of claim 7 , wherein if a CRC value included in the data patterns of the write same command and a cyclical redundancy check (CRC) value included in the data patterns of previously received commands are identical, it is determined that the data patterns are identical. buffer memory management method. 제7항에 있어서, 상기 버퍼 메모리에 카피하는 동작과 상기 라이트 세임 커맨드를 펌웨어에서 처리하는 동작을 병렬적으로 수행하는 것을 특징으로 하는 버퍼 메모리 관리 방법.8 . The method of claim 7 , wherein the operation of copying the write command to the buffer memory and the operation of processing the write same command in firmware are performed in parallel.
KR1020160029104A 2016-02-03 2016-03-10 Method for managing buffer memory and method for performing write operation using the same KR102504291B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US15/413,407 US10353626B2 (en) 2016-02-03 2017-01-23 Buffer memory management method and write method using the same

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201662290933P 2016-02-03 2016-02-03
US62/290,933 2016-02-03

Publications (2)

Publication Number Publication Date
KR20170092430A KR20170092430A (en) 2017-08-11
KR102504291B1 true KR102504291B1 (en) 2023-02-27

Family

ID=59651653

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160029104A KR102504291B1 (en) 2016-02-03 2016-03-10 Method for managing buffer memory and method for performing write operation using the same

Country Status (1)

Country Link
KR (1) KR102504291B1 (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220027488A (en) 2020-08-27 2022-03-08 에스케이하이닉스 주식회사 Memory controller and operating method thereof

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012198639A (en) * 2011-03-18 2012-10-18 Fujitsu Ltd Control apparatus, control method, and storage apparatus

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101631162B1 (en) * 2009-06-11 2016-06-17 삼성전자주식회사 Storage device including flash memory and data storing method thereof
KR20150060026A (en) * 2013-11-25 2015-06-03 삼성전자주식회사 Method and apparatus for rendering a current command using a previous command

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012198639A (en) * 2011-03-18 2012-10-18 Fujitsu Ltd Control apparatus, control method, and storage apparatus

Also Published As

Publication number Publication date
KR20170092430A (en) 2017-08-11

Similar Documents

Publication Publication Date Title
KR102254392B1 (en) Operating method of memory controller and nonvolatile memory system including nonvolatile memory device and memory controller
KR102094334B1 (en) Non-volatile multi-level cell memory system and Method for performing adaptive data back-up in the system
US9281068B2 (en) Nonvolatile memory and related reprogramming method
KR101678907B1 (en) Nonvolatile memory device capable of reducing read disturbance and read method thereof
KR102050896B1 (en) Memory controller and operating method of the same
US20150347291A1 (en) Flash memory based storage system and operating method
KR20170035155A (en) Memory Controller, Non-volatile Memory System and Operating Method thereof
KR101716716B1 (en) Flash memory device having flag cells and program operating method thereof
KR20130033017A (en) Operating method for nonvolatile memory device
KR20110128992A (en) Method of merging blocks for a semiconductor memory device
US9990149B2 (en) Memory device for internally performing read-verify operation, method of operating the same, and memory system including the same
KR102317787B1 (en) Method for managing flow of message transmission and storage device adopting the same
TWI775879B (en) Memory system and operating method thereof
US10353626B2 (en) Buffer memory management method and write method using the same
KR20190043860A (en) Memory system and operation method thereof
CN114489466A (en) Memory system and operating method thereof
US11056177B2 (en) Controller, memory system including the same, and method of operating the memory system
CN112908370A (en) Memory device and method of operating the same
KR20210108208A (en) Storage device and operating method thereof
KR102504291B1 (en) Method for managing buffer memory and method for performing write operation using the same
KR20210041233A (en) Memory system, memory controller, and operating method
US11586379B2 (en) Memory system and method of operating the same
KR102303653B1 (en) Memory device and memory system including the same
KR20190047391A (en) Nonvolatile memory device configured to be accessed without block address and method of operating the same
CN116136738A (en) Memory system for performing background operation using external device and operating method thereof

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