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 PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3808—Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; 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
본 발명은 스토리지 디바이스 및 스토리지 디바이스에서의 커맨드 수행 방법에 관한 것으로서, 자세하게는 버퍼 메모리 관리 방법 및 이를 이용한 라이트 동작 수행 방법에 관한 것이다.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
예로서, 컴퓨팅 시스템(1000A)은 개인용 컴퓨터, 셋톱 박스(set-top-box), 디지털 카메라, 네비게이션 장치, 모바일 장치, 스마트 카드 시스템 등이 될 수도 있다. 그리고, 스토리지 디바이스(200A)는 메모리 디바이스, SSD(Solid State Drive), 스마트 카드, 하드디스크 드라이브 등이 될 수 있다.By way of example,
호스트(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
호스트(100)는 스토리지 디바이스(200A)로 커맨드(CMD)를 전송할 수 있다. 그리고, 호스트(100)와 스토리지 디바이스(200A)간에 데이터(DATA)를 주고받을 수 있다. 예로서, 스토리지 디바이스(200A)는 임베디드 멀티미디어 카드(embedded Multi-Media Card; eMMC) 형태, 또는 유니버설 플래시 스토리지(Universal Flash Storage) 형태 등의 다양한 방식으로 구현될 수 있다.The
호스트(100)는 수행하고자 하는 테스크에 기초하여 발행되는 커맨드(CMD)를 스토리지 디바이스(200A)로 전송한다. 예로서, 호스트(100)에서 발생되는 커맨드(CMD)는 라이트 동작을 지시하는 커맨드 또는 리드 동작을 지시하는 커맨드가 포함될 수 있다. 그리고, 라이트 동작을 지시하는 커맨드에는 라이트 커맨드(write command) 또는 라이트 세임 커맨드(write same command)가 포함될 수 있다. The
예로서, 라이트 세임 커맨드는 데이터 패턴(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
그리고, 호스트(100)는 스토리지 디바이스(200A)에 저장할 데이터(DATA)를 전송하거나, 스토리지 디바이스(200A)로부터 읽어낸 데이터(DATA)를 수신한다. Also, the
예로서, 호스트(100)는 처리할 데이터가 스토리지 디바이스(200A)에 저장되어 있는 경우에 스토리지 디바이스(200A)로 리드 커맨드를 전송한다. 그리고, 호스트(100)는 처리된 데이터를 스토리지 디바이스(200A)에 저장하고자 하는 경우에 스토리지 디바이스(200A)로 라이트 커맨드 또는 라이트 세임 커맨드를 전송한다.For example, the
다른 예로서, 호스트(100)는 페이지 폴트가 발생되는 경우에 메모리 스와핑 동작에 대한 페이지 인 동작 또는 페이지 아웃 동작 중 적어도 하나를 수행하는 리드 커맨드 또는 라이트 커맨드를 스토리지 디바이스(200A)로 전송한다. 페이지 폴트는 호스트(100)에서 애플리케이션 프로세스를 수행하기 위하여 읽고자 하는 페이지가 호스트(100)에 저장되어 있지 않는 경우에 발생된다. As another example, when a page fault occurs, the
스토리지 디바이스(200A)는 호스트(100)로부터 수신되는 커맨드에 따라서 리드 오퍼레이션 또는 라이트 오퍼레이션을 수행한다. 예로서, 스토리지 디바이스(200A)는 라이트 커맨드에서는 하드웨어로 수행하던 일부 동작을 라이트 세임 커맨드에서는 소프트웨어로 수행할 수 있다. The
스토리지 디바이스(200A)는 버퍼 메모리(201) 및 버퍼 관리 모듈(202)를 포함한다. 버퍼 메모리(202)에는 스토리지 디바이스에 라이트할 데이터가 카피(copy)되거나 스토리지 디바이스에서 읽어낸 데이터가 카피된다. 예로서, 버퍼 메모리(201)는 링 버퍼 메모리(ring buffer memory) 타입으로 구현할 수 있다. 버퍼 관리 모듈(202)은 라이트 커맨드 또는 라이트 세임 커맨드의 데이터를 버퍼 메모리(201)에 카피(copy)하는 동작을 관리한다. The
예로서, 버퍼 관리 모듈(202)은 호스트(100)로부터 수신되는 커맨드의 데이터를 순차적으로 버퍼 메모리(201)에 카피하는 동작을 수행한다. 그리고, 버퍼 관리 모듈(202)은 버퍼 메모리(201) 내의 모든 페이지 버퍼들이 동일한 데이터 패턴으로 카피되어 있는 상태에서 버퍼 메모리(201)에 카피되어 있는 데이터 패턴과 동일한 데이터 패턴의 라이트 세임 커맨드가 수신되는 경우에, 버퍼 메모리(201)에 라이트 세임 커맨드의 데이터를 카피하는 동작을 스킵(skip) 처리한다. 이에 따라서, 라이트 세임 커맨드의 데이터를 버퍼 메모리(201)에 카피하는데 이용되는 펌웨어 처리의 오버헤드를 줄일 수 있게 된다.For example, the
스토리지 디바이스(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
예로서, 버퍼 관리 모듈(202)은 도 17 내지 도 19에 도시된 바와 같은 라이트 동작 수행 방법 또는 버퍼 메모리 관리 방법의 흐름도를 수행하기 위한 프로그램 코드들을 포함할 수 있다.For example, the
도 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
호스트(100)는 도 1a에서 이미 설명하였으므로, 중복적인 설명은 피하기로 한다. 스토리지 디바이스(200B)는 도 1에 도시된 스토리지 디바이스(200A)에 다이렉트 메모리 액세스 모듈(203)이 추가된 구성을 갖는다.Since the
스토리지 디바이스(200B)는 버퍼 메모리(201), 버퍼 관리 모듈(202) 및 다이렉트 메모리 액세스 모듈(DMA 모듈, 203)을 포함한다. 버퍼 메모리(201) 및 버퍼 관리 모듈(202)에 대해서는 도 1a에서 설명하였으므로, 중복적인 설명은 피하기로 한다.The
다이렉트 메모리 액세스 모듈(203)은 스토리지 디바이스(200B)의 중앙처리장치(CPU)에 의한 프로그램의 실행 없이 버퍼 메모리(201)에 데이터를 카피하는 동작을 지원한다. 이에 따라서, 다이렉트 메모리 액세스 모듈(203)은 라이트 커맨드 또는 라이트 세임 커맨드를 펌웨어에서 처리하는 동작과 병렬적으로 버퍼 메모리(201)에 데이터를 카피하는 동작을 수행할 수 있다. 이로 인하여, 라이트 커맨드 또는 라이트 세임 커맨드 처리 시간을 단축시킬 수 있다.The direct
도 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
호스트(2100)는 프로세서(2110), 메모리(2120), I/O 제어기(2130), I/O 브리지(2140) 및 I/O 버스(2150)를 포함한다. I/O 디바이스 블록(2200A)에는 복수개의 스토리지 디바이스들(2210-1 ~ 2210-M, 여기서 M은 2 이상의 정수)이 포함되어 있다. The
예로서, 컴퓨팅 시스템(2000A)은 개인용 컴퓨터, 셋톱 박스(set-top-box), 디지털 카메라, 네비게이션 장치, 모바일 장치, 스마트 카드 시스템, 서버 시스템 등이 될 수도 있다. 그리고, I/O 디바이스 블록(2200A)에 포함된 스토리지 디바이스들(2210-1 ~ 2210-M)은 메모리 디바이스, SSD(Solid State Drive), 스마트 카드, 하드디스크 드라이브 등이 포함될 수 있다.By way of example,
프로세서(2110)는 컴퓨팅 시스템(2000A)의 구성 수단들의 동작들의 제어를 수행하기 위한 회로, 인터페이스들 또는 프로그램 코드를 포함할 수 있다. 예로서, 프로세서(2110)는 CPU, ARM, 또는 주문형 반도체(ASIC: application specific integrated circuit)를 포함할 수 있다. The
메모리(2120)는 컴퓨팅 시스템(2000A)의 동작에 필요한 데이터, 명령들 또는 프로그램 코드들을 저장하는 SRAM 또는 DRAM을 포함할 수 있다. 또한, 비휘발성 메모리를 포함할 수도 있다.The
프로세서(2110)는 메모리(2120)에 저장된 프로그램들을 구동시켜서 컴퓨팅 시스템(2000A)의 구성 수단들의 동작을 제어할 수 있다.The
I/O 제어기(2130)는 I/O 디바이스 블록(2200A)의 스토리지 디바이스들(2210-1 ~ 2210-M)을 제어하는 동작을 수행한다. I/O 제어기(2130)는 프로세서(2110)로부터 I/O 커맨드를 수신하고, 수신된 I/O 커맨드에 기초하여 스토리지 디바이스들(2210-1 ~ 2210-M)을 제어한다.The I/
호스트 버스(2150)에는 호스트(2100) 구성 수단들이 전기적으로 접속되어 있다. 호스트 버스(2150)를 통하여 호스트(2100) 구성 수단들 간의 데이터 및 신호들을 주고 받을 수 있다.Components of the
I/O 브리지(2140)는 호스트(2100)와 스토리지 디바이스들(2210-1 ~ 2210-M) 간의 데이터 통신을 위한 채널을 제어하는 동작을 수행한다. 예로서, I/O 브리지(2140)는 PCIe 브리지, SAS 브리지, 네트워크 브리지 등으로 구현할 수 있다.The I/
예로서, 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/
도 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
I/O 디바이스 블록(2200B)에는 복수개의 스토리지 디바이스들(2210'-1 ~ 2210'-M, 여기서 M은 2 이상의 정수)이 포함되어 있다. The I/
예로서, 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/
도 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
메모리 디바이스(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
메모리 컨트롤러(210A)는 호스트로부터 수신되는 커맨드에 기초하여 메모리 디바이스(220)에 대한 제어 동작을 수행할 수 있다. 메모리 컨트롤러(210A)는 호스트로부터 수신되는 커맨드에 따라서 복수의 채널들(CH1 ~CHM)을 통하여 접속된 메모리 디바이스(220)에 대한 프로그램(또는 쓰기), 독출 및 소거 동작을 제어한다. The
메모리 컨트롤러(210A)와 메모리 디바이스(220) 사이에는 오퍼레이션 수행에 필요한 신호들을 I/O 처리하기 위한 채널(channel)들이 형성되어 있다. 오퍼레이션 수행에 필요한 신호들은 예로서 커맨드, 어드레스 및 데이터 등이 될 수 있다.Channels for I/O processing of signals required for operation are formed between the
메모리 컨트롤러(210A)는 버퍼 메모리(201) 및 버퍼 관리 모듈(202)를 포함한다. 버퍼 메모리(201) 및 버퍼 관리 모듈(202)에 대한 동작 설명은 도 1a에서 이미 하였으므로 중복적인 설명은 피하기로 한다. The
메모리 컨트롤러(210A)는 버퍼 관리 모듈(202)을 이용하여 메모리 디바이스(220)에 라이트할 데이터를 버퍼 메모리(201)에 카피(copy)하거나 메모리 디바이스(220)에서 읽어낸 데이터를 버퍼 메모리(201)에 카피한다. 예로서, 메모리 컨트롤러(210A)는 버퍼 메모리(201) 내의 모든 페이지 버퍼들이 동일한 데이터 패턴으로 카피되어 있는 상태에서 버퍼 메모리(201)에 카피되어 있는 데이터 패턴과 동일한 데이터 패턴의 라이트 세임 커맨드가 수신되는 경우에, 버퍼 메모리(201)에 라이트 세임 커맨드의 데이터를 카피하는 동작을 스킵한다. 이에 따라서, 라이트 세임 커맨드의 데이터를 버퍼 메모리(201)에 카피하는데 이용되는 메모리 컨트롤러(210A)에서의 펌웨어 처리의 오버헤드를 줄일 수 있게 된다.The
그리고, 메모리 컨트롤러(210A)는 버퍼 메모리(201)에 카피된 데이터를 메모리 디바이스(220)로 전송하여 라이트 세임 커맨드에 따른 라이트 동작을 수행한다. 이에 따라서, 메모리 컨트롤러(210A)는 이전에 수신된 커맨드들의 데이터 패턴을 재사용하여 라이트 세임 커맨드에 따른 라이트 동작을 수행할 수 있게 된다.The
도 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
메모리 컨트롤러(210B)는 호스트로부터 수신되는 커맨드에 기초하여 메모리 디바이스(220)에 대한 제어 동작을 수행할 수 있다. 메모리 컨트롤러(210B)는 호스트로부터 수신되는 커맨드에 따라서 복수의 채널들(CH1 ~CHM)을 통하여 접속된 메모리 디바이스(220)에 대한 프로그램(또는 쓰기), 독출 및 소거 동작을 제어한다The
메모리 컨트롤러(210B)는 버퍼 메모리(201), 버퍼 관리 모듈(202) 및 다이렉트 메모리 액세스 모듈(203)을 포함한다. 버퍼 메모리(201), 버퍼 관리 모듈(202) 및 다이렉트 메모리 액세스 모듈(203)에 대한 동작 설명은 도 1b에서 이미 하였으므로 중복적인 설명은 피하기로 한다. The
메모리 컨트롤러(210B)는 버퍼 관리 모듈(202) 및 다이렉트 메모리 액세스 모듈(203)을 이용하여 라이트 커맨드 또는 라이트 세임 커맨드를 펌웨어에서 처리하는 동작과 병렬적으로 버퍼 메모리(201)에 데이터를 카피하는 동작을 수행한다.The
세부적으로, 메모리 컨트롤러(210B)는 버퍼 관리 모듈(202)을 이용하여 메모리 디바이스(220)에 라이트할 데이터를 버퍼 메모리(201)에 카피(copy)하거나 메모리 디바이스(220)에서 읽어낸 데이터를 버퍼 메모리(201)에 카피한다. 특히, 다이렉트 메모리 액세스 모듈(203)를 이용하여 버퍼 메모리(201)에 데이터를 카피하는 동작과 커맨드를 펌웨어에서 처리하는 동작을 병렬적으로 수행할 수 있다.In detail, the
예로서, 메모리 컨트롤러(210B)는 버퍼 메모리(201) 내의 모든 페이지 버퍼들이 동일한 데이터 패턴으로 카피되어 있는 상태에서 버퍼 메모리(201)에 카피되어 있는 데이터 패턴과 동일한 데이터 패턴의 라이트 세임 커맨드가 수신되는 경우에, 버퍼 메모리(201)에 라이트 세임 커맨드의 데이터를 카피하는 동작을 스킵한다.For example, the
메모리 컨트롤러(210B)는 버퍼 메모리(201)에 카피된 데이터를 메모리 디바이스(220)로 전송하여 라이트 세임 커맨드에 따른 라이트 동작을 수행한다. 이에 따라서, 메모리 컨트롤러(210B)는 이전에 수신된 커맨드들의 데이터 패턴을 재사용하여 라이트 세임 커맨드에 따른 라이트 동작을 수행할 수 있게 된다.The
도 4a는 도 3a에 도시된 메모리 컨트롤러(210A) 구성의 일 예를 보여준다.FIG. 4A shows an example of a configuration of the
도 4a에 도시된 바와 같이, 메모리 컨트롤러(210A)는 프로세서(211A), RAM(Random Access Memory; 212A), 호스트 인터페이스(213), 메모리 인터페이스(214), ROM(Read Only Memory, 215) 및 버스(216)를 구비한다.As shown in FIG. 4A , the
메모리 컨트롤러(210A)의 구성요소들은 버스(216)를 통하여 데이터 및 각종 신호들을 주고 받는다.Elements of the
프로세서(211A)는 RAM(212A)에 저장된 프로그램 코드 및 데이터들을 이용하여 스토리지 디바이스(200A 또는 2210-M)의 동작을 전반적으로 제어할 수 있다. 스토리지 디바이스(200A 또는 2210-M)가 초기화될 때 프로세서(211A)는 메모리 디바이스(220)에 저장된 스토리지 디바이스(200A 또는 2210-M)에서 수행되는 동작들을 제어하는데 필요한 프로그램 코드 및 데이터들을 읽어내어 RAM(212A)에 로딩시킬 수 있다.The
RAM(212A)은 프로세서(211A)의 제어에 따라 동작하며, 버퍼 메모리(201) 영역이 할당될 수 있다. 그리고, RAM(212A)에는 버퍼 관리 모듈(202)용 소프트웨어가 로딩될 수 있다. 또한, RAM(212A)에는 호스트 인터페이스 계층(HIL)에서 수행되는 프로세스에 대한 프로그램 코드와 플래시 변환 계층(FTL)에서 수행되는 프로세스에 대한 프로그램 코드가 로딩될 수 있다.The
호스트 인터페이스(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
메모리 인터페이스(214)는 메모리 디바이스(220)와 전기적으로 연결되어 있다. 메모리 인터페이스(214)는 프로세서(211A)의 제어에 따라서 메모리 디바이스(220)로 커맨드, 어드레스 및 데이터를 전송하거나, 메모리 디바이스(220)로부터 데이터를 수신할 수 있다. 메모리 인터페이스(214)는 NAND 플래시 메모리 또는 NOR 플래시 메모리를 지원하도록 구성될 수 있다. 메모리 인터페이스(214)는 복수 개의 채널들을 통하여 소프트웨어 또는 하드웨어 인터리브 동작들이 수행되도록 구성될 수도 있다.The
ROM(215)에는 스토리지 디바이스가 채용된 장치의 초기 부팅에 필요한 코드 정보를 저장할 수 있다.The
프로세서(211A)는 RAM(212A)에 로딩된 버퍼 관리 모듈(202)용 소프트웨어를 구동시켜 메모리 디바이스(220)에 라이트할 데이터를 버퍼 메모리(201)에 카피(copy)하거나 메모리 디바이스(220)에서 읽어낸 데이터를 버퍼 메모리(201)에 카피한다. 예로서, 프로세서(211A)는 버퍼 메모리(201) 내의 모든 페이지 버퍼들이 동일한 데이터 패턴으로 카피되어 있는 상태에서 버퍼 메모리(201)에 카피되어 있는 데이터 패턴과 동일한 데이터 패턴의 라이트 세임 커맨드가 수신되는 경우에, 버퍼 메모리(201)에 라이트 세임 커맨드의 데이터를 카피하는 동작을 스킵한다. The
또한, 프로세서(211A)는 호스트로부터 수신되는 커맨드에 대하여 호스트 인터페이스 계층(HIL) 및 플래시 변환 계층(FTL)에서의 펌웨어 처리를 수행한다. 프로세서(211A)는 HIL 및 FTL에서의 펌웨어 처리에 기초한 커맨드와 함께 버퍼 메모리(201)에 카피된 데이터를 메모리 디바이스(220)로 전송한다. 이에 따라서, 라이트 세임 커맨드에 따른 라이트 동작을 메모리 디바이스(220)에서 수행하게 된다.Also, the
도 4b는 도 3b에 도시된 메모리 컨트롤러(210B) 구성의 일 예를 보여준다.FIG. 4B shows an example of a configuration of the
도 4b에 도시된 바와 같이, 메모리 컨트롤러(210B)는 프로세서(211B), RAM(Random Access Memory; 212B), 호스트 인터페이스(213), 메모리 인터페이스(214), ROM(Read Only Memory, 215) 및 버스(216)를 구비한다.As shown in FIG. 4B , the
호스트 인터페이스(213), 메모리 인터페이스(214), ROM(Read Only Memory, 215) 및 버스(216)에 대한 동작은 도 4a에서 설명하였으므로, 중복적인 설명은 피하기로 한다.Operations of the
RAM(212B)은 프로세서(211B)의 제어에 따라 동작하며, 버퍼 메모리(201) 영역이 할당될 수 있다. 그리고, RAM(212B)에는 버퍼 관리 모듈(202)용 소프트웨어 및 다이렉트 메모리 액세스 모듈(203)용 소프트웨어가 로딩될 수 있다. 또한, RAM(212A)에는 호스트 인터페이스 계층(HIL)에서 수행되는 프로세스에 대한 프로그램 코드와 플래시 변환 계층(FTL)에서 수행되는 프로세스에 대한 프로그램 코드가 로딩될 수 있다.The
프로세서(211B)는 RAM(212B)에 로딩된 버퍼 관리 모듈(202)용 소프트웨어를 구동시켜 메모리 디바이스(220)에 라이트할 데이터를 버퍼 메모리(201)에 카피(copy)하거나 메모리 디바이스(220)에서 읽어낸 데이터를 버퍼 메모리(201)에 카피한다. 특히, 프로세서(211B)는 다이렉트 메모리 액세스 모듈(203)를 이용하여 버퍼 메모리(201)에 데이터를 카피하는 동작과 커맨드를 펌웨어에서 처리하는 동작을 병렬적으로 수행할 수 있다. 예로서, 프로세서(211B)는 버퍼 메모리(201) 내의 모든 페이지 버퍼들이 동일한 데이터 패턴으로 카피되어 있는 상태에서 버퍼 메모리(201)에 카피되어 있는 데이터 패턴과 동일한 데이터 패턴의 라이트 세임 커맨드가 수신되는 경우에, 버퍼 메모리(201)에 라이트 세임 커맨드의 데이터를 카피하는 동작을 스킵한다. The
또한, 프로세서(211B)는 호스트로부터 수신되는 커맨드에 대하여 HIL 및 FTL에서의 펌웨어 처리를 수행한다. 프로세서(211B)는 HIL 및 FTL에서의 펌웨어 처리에 기초한 커맨드와 함께 버퍼 메모리(201)에 카피된 데이터를 메모리 디바이스(220)로 전송한다. 이에 따라서, 라이트 세임 커맨드에 따른 라이트 동작을 메모리 디바이스(220)에서 수행하게 된다.Also, the
도 5는 도 3a 또는 도 3b에 도시된 메모리 디바이스(220)의 세부 구성의 일 예를 보여준다.5 shows an example of a detailed configuration of the
도 5를 참조하면, 메모리 디바이스(220)는 메모리 셀 어레이(11), 제어 로직(control logic; 12), 전압 생성부(13), 로우 디코더(14) 및 페이지 버퍼(15)를 포함할 수 있다. 이하에서는, 메모리 디바이스(220)에 포함된 구성 요소들에 대하여 상술하기로 한다.Referring to FIG. 5 , the
메모리 셀 어레이(11)는 하나 이상의 스트링 선택 라인(SSL), 복수의 워드 라인들(WL) 및 하나 이상의 접지 선택 라인(GSL)에 연결될 수 있으며, 또한 복수의 비트 라인들(BL)에 연결될 수 있다. 메모리 셀 어레이(11)는 복수의 워드 라인들(WL) 및 복수의 비트 라인들(BL)이 교차하는 영역들에 배치되는 복수의 메모리 셀들(MC)을 포함할 수 있다.The
메모리 셀 어레이(11)에 소거 전압이 인가되면 복수의 메모리 셀들(MC)은 소거 상태가 되며, 메모리 셀 어레이(11)에 프로그램 전압이 인가되면 복수의 메모리 셀들(MC)은 프로그램 상태가 된다. 이때, 각 메모리 셀(MC)은 문턱 전압에 따라 구분되는 소거 상태 및 제1 내지 제n 프로그램 상태들(P1 내지 Pn) 중 하나를 가질 수 있다.When an erase voltage is applied to the
여기서, 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
제어 로직(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
전압 생성부(13)는 전압 제어 신호(CTRL_vol)를 기초로 하여 메모리 셀 어레이(11)에 대한 프로그램, 독출 및 소거 동작을 수행하기 위한 다양한 종류의 전압들을 생성할 수 있다. 구체적으로, 전압 생성부(13)는 복수의 워드 라인들(WL)을 구동하기 위한 제1 구동 전압(VWL), 복수의 스트링 선택 라인들(SSL)을 구동하기 위한 제2 구동 전압(VSSL) 및 복수의 라운드 선택 라인들(GSL)을 구동하기 위한 제3 구동 전압(VGSL)을 생성할 수 있다. The
이때, 제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
한편, 프로그램 동작 시에 로우 디코더(14)는 선택된 워드 라인에 프로그램 전압을 인가하고, 비 선택된 워드 라인에 패스 전압을 인가할 수 있다. 본 실시예에서, 프로그램 루프들 중 적어도 하나에서 로우 디코더(14)는 선택된 워드 라인 및 추가 선택된 워드 라인에 프로그램 전압을 인가할 수 있다. Meanwhile, during a program operation, the
페이지 버퍼(15)는 복수의 비트 라인들(BL)을 통해 메모리 셀 어레이(11)에 연결될 수 있다. 구체적으로, 독출 동작 시에 페이지 버퍼(15)는 감지 증폭기(sense amplifier)로 동작하여 메모리 셀 어레이(11)에 저장된 데이터(DATA)를 출력할 수 있다. 한편, 프로그램 동작 시에 페이지 버퍼(15)는 기입 드라이버(write driver)로 동작하여 메모리 셀 어레이(11)에 저장하고자 하는 데이터(DATA)를 입력시킬 수 있다. 라이트 커맨드 또는 라이트 세임 커맨드를 처리하는 과정에서는 메모리 컨트롤러(210A 또는 210B)의 버퍼 메모리(201)에 카피된 데이터가 페이지 버퍼(15)에 로딩된다. The
도 6은 도 5에 도시된 메모리 셀 어레이(11)의 일 예를 보여준다.FIG. 6 shows an example of the
도 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
도 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
복수의 워드 라인들(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
호스트(100)로부터 수신되는 라이트 세임 커맨드의 데이터 패턴은 섹터 사이즈를 갖는다. 예로서, 프로세서(211A 또는 211B)는 라이트 세임 커맨드와 함께 수신되는 섹터 사이즈의 데이터 패턴(Ds)을 버퍼1에 저장한다. 예로서, 버퍼1은 RAM(212A 또는 212B)의 저장 영역에 할당될 수 있다. 버퍼1은 섹터 사이즈를 갖는다.A data pattern of a write same command received from the
그리고 나서, 프로세서(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
그리고 나서, 프로세서(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
도 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
예로서, 커맨드 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
따라서, 커맨드 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
도 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
예로서, 커맨드 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
메모리 컨트롤러(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
커맨드 WriteSame A를 처리하고 나서 커맨드 WriteSame B가 메모리 컨트롤러(210A 또는 210B)로 수신되는 경우, 프로세서(211A 또는 211B)는 도 10의 (b)에 도시된 바와 같이 버퍼 메모리(201)의 데이터 패턴 A가 저장된 페이지 버퍼의 다음에 할당된 12개의 페이지 버퍼에 데이터 패턴 B를 반복적으로 카피한다.When the command WriteSame A is received by the
다음으로, 커맨드 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
도 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
도 11은 본 발명의 실시 예에 따른 메모리 컨트롤러(210A 또는 210B)의 버퍼 메모리(201)에서의 데이터의 통일성을 확인하는 방법을 보여주는 도면이다. 도 4a 또는 도 4b에 도시된 메모리 컨트롤러(210A 또는 210B)의 구성을 참조하여 설명하기로 한다.FIG. 11 is a diagram illustrating a method of verifying unity of data in the
예로서, 메모리 컨트롤러(210A 또는 210B)는 이전 처리된 커맨드의 데이터 보존을 위하여 도 10과 같은 방식으로 버퍼 메모리(201)를 관리한다. 그리고, 버퍼 메모리(201)는 복수개의 페이지 버퍼들이 링 버퍼 형식으로 구성될 수 있다. 도 10에서는 설명의 편의를 위하여 버퍼 메모리(201)가 32개의 페이지 버퍼들이 링 버퍼 형식으로 구성된 사례를 보여준다.For example, the
프로세서(211A 또는 211B)는 버퍼 메모리(201)의 페이지 버퍼들에 연속적으로 동일한 데이터 패턴이 카피되는 회수를 카운트한다. 예로서, 도 11에서는 동일 버퍼 카운트(same buffer count) 값으로 표시하였다. 그리고, 버퍼 메모리(201)의 페이지 버퍼에 데이터가 저장되지 않은 상태를 'E'로 표시하였다.The
도 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
도 11(c)와 같이, 버퍼 메모리(201)의 데이터 패턴 A가 8개 페이지 버퍼에 카피되고 나서 데이터 B가 하나의 페이지 버퍼에 카피되면 동일 버퍼 카운트 값은 '1'로 변경된다. As shown in FIG. 11(c), when data pattern A of the
다음으로 도 11(d)와 같이, 버퍼 메모리(201)의 데이터 패턴 B가 하나의 페이지 버퍼에 카피되고 나서 데이터 B가 5개의 페이지 버퍼에 카피되면 동일 버퍼 카운트 값은 '6'으로 변경된다.Next, as shown in FIG. 11(d), when data pattern B of the
다음으로 도 11(e)와 같이, 버퍼 메모리(201)의 데이터 패턴 B가 5개의 페이지 버퍼에 카피되고 나서 데이터 C가 하나의 페이지 버퍼에 카피되면 동일 버퍼 카운트 값은 '1'로 변경된다.Next, as shown in FIG. 11(e), when data pattern B of the
다음으로 도 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
다음으로 도 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
다음으로 도 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
즉, 동일 버퍼 카운트 값이 버퍼 메모리(201)의 총 페이지 버퍼의 개수와 동일해지면 버퍼 메모리(201)의 모든 페이지 버퍼들은 동일한 데이터 패턴으로 카피된다.That is, when the same buffer count value becomes equal to the total number of page buffers in the
도 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
도 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
예로서, 메모리 컨트롤러(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
도 12를 참조하면, 메모리 컨트롤러(210A 또는 210B)로 라이트 세임 커맨드가 수신될 때마다 버퍼 메모리(201)에 라이트 세임 커맨드의 데이터 패턴을 카피하는 동작 구간과 프로세서(211A 또는 211B)에서 펌웨어로 라이트 동작을 처리하는 동작 구간이 필요하게 된다. Referring to FIG. 12 , whenever a write same command is received by the
도 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
도 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
예로서, 메모리 컨트롤러(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
도 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
그러나, 동일한 데이터 패턴으로 버퍼 메모리(201)의 모든 페이지 버퍼들이 카피되는 TI 시점 이후에는 라이트 세임 커맨드에 대하여 버퍼 메모리(201)에 카피하는 동작을 스킵하고 프로세서(211A 또는 211B)에서 펌웨어로 라이트 동작을 처리할 수 있다.However, after the TI point at which all page buffers of the
예로서, 케이스1에서는 TI 시점 이후의 커맨드 WriteSame 4 ~ WriteSame 9에 대한 버퍼 메모리(201)에 카피하는 동작을 스킵하고 프로세서(211A 또는 211B)에서 펌웨어로 라이트 동작을 처리할 수 있다. 즉, TI 시점 이후에는 버퍼 메모리(201)에서의 메모리 카피가 발생되지 않는다.For example, in
다른 예로서, 케이스2에는 하나의 커맨드 WriteSame 1의 길이 정보에 따른 데이터 패턴의 페이지 개수가 버퍼 메모리(201)의 총 페이지 버퍼의 개수를 초과하는 사례를 보여준다. 이 경우에는 하나의 커맨드 WriteSame 1에 따른 버퍼 메모리(201)에서의 메모리 카피를 시간 T1 시점 이전까지만 수행하고, 시간 T1 시점 이후에는 버퍼 메모리(201)에 카피하는 동작을 스킵한다. 이에 따라서, T1 시점 이후에는 버퍼 메모리(201)에 이전에 카피된 데이터를 이용하여 프로세서(211A 또는 211B)에서 펌웨어로 라이트 동작을 처리할 수 있다. As another example,
따라서, 도 12 및 도 13을 참조하면, 도 9와 같은 방식으로 버퍼 메모리(201)를 관리하는 경우에 비하여 도 10과 같은 방식으로 버퍼 메모리(201)를 관리하는 것이 성능 면에서 유리하다.Therefore, referring to FIGS. 12 and 13 , managing the
도 14는 본 발명의 실시 예에 따른 메모리 컨트롤러(210A)에서의 다이렉트 메모리 액세스 모듈(203)을 이용하지 않고 라이트 세임 커맨드를 수행하는 과정의 일 예를 보여주는 도면이다.14 is a diagram showing an example of a process of executing a write same command without using the direct
도 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
도 15는 본 발명의 실시 예에 따른 메모리 컨트롤러(210B)에서의 다이렉트 메모리 액세스 모듈(203)을 이용하여 라이트 세임 커맨드를 수행하는 과정의 일 예를 보여주는 도면이다.15 is a diagram showing an example of a process of executing a write same command using the direct
도 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
도 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
도 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
도 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
프로세서 (211A 또는 211B)는 호스트로부터 라이트 동작을 지시하는 커맨드가 수신되는지를 판단한다(S110). 예로서, 라이트 동작을 지시하는 커맨드에는 라이트 세임 커맨드(write same command)가 포함될 수 있다.The
호스트로부터 라이트 동작을 지시하는 커맨드가 수신되는 경우에, 프로세서 (211A 또는 211B)는 이전에 수신된 커맨드들의 데이터 패턴과 현재 수신된 라이트 동작을 지시하는 커맨드의 데이터 패턴을 비교한다(S120). 예로서, 프로세서(211A 또는 211B)는 현재 수신된 라이트 동작을 지시하는 커맨드의 데이터 패턴에 포함된 CRC(cyclical redundancy check) 값과 이전에 수신된 커맨드들의 데이터 패턴에 포함된 CRC 값이 동일하면 데이터 패턴이 동일한 것으로 판정할 수 있다.When a command instructing a write operation is received from the host, the
프로세서(211A 또는 211B)는 버퍼 메모리(201)의 모든 페이지 버퍼들에 저장된 이전에 수신된 커맨드들의 데이터 패턴과 현재 수신된 라이트 동작을 지시하는 커맨드의 데이터 패턴이 동일한지를 판단한다(S130). 예로서, 프로세서(211A 또는 211B)는 버퍼 메모리(201)의 모든 페이지 버퍼들이 동일한 데이터 패턴으로 카피되어 있고, 현재 수신된 라이트 동작을 지시하는 커맨드의 데이터 패턴이 버퍼 메모리(201)에 카피된 데이터 패턴과 동일한지를 판단한다.The
오퍼레이션 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
만일, 오퍼레이션 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
도 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
프로세서(211A 또는 211B)는 호스트로부터 수신되는 커맨드들의 데이터를 순차적으로 버퍼 메모리(201)에 카피하는 동작을 수행한다(S210). 예로서, 호스트로부터 라이트 세임 커맨드들이 연속적으로 수신되는 경우에, 프로세서(211A 또는 211B)는 호스트로부터 수신되는 라이트 세임 커맨드들의 데이터 패턴을 순차적으로 버퍼 메모리(201)에 카피한다. 예로서, 도 10에 도시된 바와 같이 이전에 처리된 커맨드들의 데이터 패턴을 보존하는 방식으로 라이트 세임 커맨드들의 데이터 패턴을 순차적으로 버퍼 메모리(201)에 카피한다.The
다음으로, 프로세서(211A 또는 211B)는 버퍼 메모리(201)의 모든 페이지 버퍼들이 동일한 데이터 패턴으로 카피되어 있는지를 판단한다(S220). 예로서, 도 11에 도시된 바와 같이 동일 버퍼 카운트(same buffer count) 값을 이용하여 버퍼 메모리(201)의 모든 페이지 버퍼들이 동일한 데이터 패턴으로 카피되어 있는지를 판단할 수 있다.Next, the
오퍼레이션 S220의 판단 결과 버퍼 메모리(201)의 모든 페이지 버퍼들이 동일한 데이터 패턴으로 카피되어 있는 경우에, 프로세서(211A 또는 211B)는 현재 수신된 라이트 세임 커맨드의 데이터 패턴과 버퍼 메모리(201)의 페이지 버퍼에 카피되어 있는 데이터 패턴이 동일한지를 판단한다(S230).As a result of the determination in operation S220, when all page buffers of the
오퍼레이션 S220의 판단 결과 버퍼 메모리(201)의 모든 페이지 버퍼들이 동일한 데이터 패턴으로 카피되어 있지 않거나, 오퍼레이션 S230의 판단 결과 현재 수신된 라이트 세임 커맨드의 데이터 패턴과 버퍼 메모리(201)의 페이지 버퍼에 카피되어 있는 데이터 패턴이 동일하지 않은 경우에, 프로세서(211A 또는 211B)는 현재 수신된 라이트 세임 커맨드의 데이터 패턴을 버퍼 메모리(201)에 카피하는 동작을 수행한다(S240). 예로서, 도 10 또는 도 11과 같은 방식으로 현재 수신된 라이트 세임 커맨드의 데이터 패턴을 버퍼 메모리(201)에 카피할 수 있다.As a result of determination in operation S220, all page buffers of the
오퍼레이션 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
도 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
컴퓨팅 시스템(1000A)은 소프트웨어적으로 호스트 시스템, 호스트 인터페이스 계층(HIL) 및 플래시 변환 계층(FTL)로 분류할 수 있다. 호스트 시스템은 호스트(100)의 펌웨어에서 수행되고, 호스트 인터페이스 계층(HIL) 및 플래시 변환 계층(FTL)은 스토리지 디바이스(200A)의 펌웨어에서 수행된다.The
호스트 시스템에서 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
만일 오퍼레이션 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
한편, 상기에서 설명된 본 발명에 적용되는 스토리지 디바이스는 다양한 형태들의 패키지를 이용하여 실장 될 수 있다. 예를 들면, 본 발명에 따른 스토리지 디바이스는 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/
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.
상기 버퍼 메모리 내의 모든 페이지 버퍼들이 동일한 데이터 패턴으로 카피되어 있는 상태에서 상기 버퍼 메모리에 카피되어 있는 데이터 패턴과 동일한 데이터 패턴의 라이트 세임 커맨드(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.
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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20220027488A (en) | 2020-08-27 | 2022-03-08 | 에스케이하이닉스 주식회사 | Memory controller and operating method thereof |
Citations (1)
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)
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 |
-
2016
- 2016-03-10 KR KR1020160029104A patent/KR102504291B1/en active IP Right Grant
Patent Citations (1)
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 |