KR20160065644A - Memory controller, system including the same, and method thereof - Google Patents
Memory controller, system including the same, and method thereof Download PDFInfo
- Publication number
- KR20160065644A KR20160065644A KR1020140169899A KR20140169899A KR20160065644A KR 20160065644 A KR20160065644 A KR 20160065644A KR 1020140169899 A KR1020140169899 A KR 1020140169899A KR 20140169899 A KR20140169899 A KR 20140169899A KR 20160065644 A KR20160065644 A KR 20160065644A
- Authority
- KR
- South Korea
- Prior art keywords
- command
- banks
- memory controller
- bank
- instruction
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0207—Addressing or allocation; Relocation with multidimensional access, e.g. row/column, matrix
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0215—Addressing or allocation; Relocation with look ahead addressing means
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
Description
아래 실시예들은 메모리 컨트롤러, 이를 포함하는 시스템, 및 이의 동작 방법에 관한 것이다.The following embodiments relate to a memory controller, a system including the same, and a method of operation thereof.
플래시 메모리 장치의 플래시 변환 계층은 미리 정해진 라이트 타켓 페이지에 라이트를 시도하려 하며, 이 때 해당 뱅크에 다른 동작이 수행 중이면 다른 뱅크는 아이들 상태에 있더라도 라이트 동작이 지연되는 현상이 발생하여 플래시 메모리 장치의 전체적인 성능 저하의 요인이 된다.The flash conversion layer of the flash memory device tries to write to a predetermined write target page. If another operation is being performed on the corresponding bank, the write operation is delayed even if the other bank is in the idle state. Which is a cause of the overall performance degradation.
읽기 동작의 경우도 해당 뱅크가 다른 동작이 수행 중이면 마찬가지로 아이들 상태로 천이되기 전까지 읽기 지연이 발생하여 플래시 메모리 장치의 전체적인 성능 저하의 요인이 된다.In the case of the read operation, if the corresponding bank is performing another operation, the read delay till the transition to the idle state occurs, which causes the overall performance degradation of the flash memory device.
실시예들은 호스트로부터 전송된 명령에 기초하여 명령 큐를 분석하고, 분석 결과에 따라 복수의 뱅크들을 제어할 수 있는 기술을 제공할 수 있다.Embodiments can provide a technique for analyzing a command queue based on commands sent from a host and controlling a plurality of banks according to an analysis result.
또한, 실시예들은 쓰기 명령에 대해서는 시간적으로 접근성이 빠른 뱅크를 선택하여 상기 쓰기 명령을 선택한 뱅크에 할당하는 기술을 제공할 수 있다.In addition, the embodiments can provide a technique for selecting a bank having a quick accessibility with respect to a write command and allocating the write command to the selected bank.
뿐만 아니라, 실시예들은 읽기 명령에 대해서는 가장 높은 우선순위를 부여하여 상기 읽기 명령에 해당하는 뱅크에 할당하는 기술을 제공할 수 있다.In addition, the embodiments may provide a technique of allocating the read command to the bank corresponding to the read command by giving the highest priority to the read command.
일 실시 예에 따른 메모리 컨트롤러의 동작 방법은 호스트로부터 전송된 명령을 수신하는 단계와, 상기 명령에 기초하여 복수의 뱅크들의 명령 큐를 분석하고, 분석 결과에 따라 상기 복수의 뱅크들을 제어하는 단계를 포함할 수 있다.A method of operating a memory controller according to an exemplary embodiment includes receiving an instruction transmitted from a host, analyzing a command queue of the plurality of banks based on the instruction, and controlling the plurality of banks according to an analysis result .
상기 명령이 쓰기 명령일 때, 상기 제어하는 단계는 상기 명령 큐에서 상기 복수의 뱅크들 각각에 할당된 명령들의 수행 시간을 합산하고, 상기 복수의 뱅크들 중에서 합산 값이 가장 작은 뱅크를 선택하는 단계와, 상기 쓰기 명령을 상기 가장 작은 뱅크에 할당하는 단계를 포함할 수 있다.When the command is a write command, the controlling step sums the execution time of instructions allocated to each of the plurality of banks in the command queue, and selects a bank having the smallest sum value among the plurality of banks And allocating the write command to the smallest bank.
상기 명령이 읽기 명령일 때, 상기 제어하는 단계는 상기 읽기 명령을 상기 복수의 뱅크들 중에서 상기 읽기 명령에 해당하는 뱅크에 가장 높은 순위로 할당하는 단계를 포함할 수 있다.When the command is a read command, the controlling step may include allocating the read command to the bank corresponding to the read command in the highest order among the plurality of banks.
상기 할당하는 단계는 상기 쓰기 명령을 상기 가장 작은 뱅크의 명령 큐에 순차적으로 삽입하는 단계를 포함할 수 있다.The allocating step may include sequentially inserting the write command into the instruction queue of the smallest bank.
상기 할당하는 단계는 상기 읽기 명령에 우선순위를 부여하여 상기 읽기 명령을 상기 읽기 명령에 해당하는 뱅크의 명령 큐의 헤드에 삽입하는 단계를 포함할 수 있다.The allocating may include prioritizing the read command and inserting the read command into the head of the command queue of the bank corresponding to the read command.
상기 명령 큐는 상기 복수의 뱅크들 각각에 대응되도록 구현될 수 있다.The instruction queue may be implemented to correspond to each of the plurality of banks.
상기 제어하는 단계는 상기 복수의 뱅크들이 포함된 메모리 장치의 아키텍처에 기초한 액세스 타입(access type)에 따른 상기 명령의 가중치에 따라 상기 복수의 뱅크들을 제어하는 단계를 포함할 수 있다.The controlling may include controlling the plurality of banks according to a weight of the instruction according to an access type based on an architecture of a memory device including the plurality of banks.
일 실시 예에 따른 메모리 컨트롤러는 호스트로부터 전송된 명령을 쌓아두는 명령 큐와, 상기 명령에 기초하여 상기 명령 큐를 분석하고, 분석 결과에 따라 복수의 뱅크들을 제어하는 할당 모듈을 포함할 수 있다.The memory controller according to an exemplary embodiment may include an instruction queue for accumulating instructions transmitted from a host, an assignment module for analyzing the instruction queue based on the instructions, and controlling a plurality of banks according to an analysis result.
상기 명령이 쓰기 명령일 때, 상기 할당 모듈은 상기 명령 큐에서 상기 복수의 뱅크들 각각에 할당된 명령들의 수행 시간을 합산하고, 상기 쓰기 명령을 상기 복수의 뱅크들 중에서 합산 값이 가장 작은 뱅크에 할당할 수 있다.When the instruction is a write command, the allocation module sums the execution time of instructions allocated to each of the plurality of banks in the instruction queue and writes the write instruction to the bank having the smallest sum value among the plurality of banks Can be assigned.
상기 명령이 읽기 명령일 때, 상기 할당 모듈은 상기 읽기 명령을 상기 복수의 뱅크들 중에서 상기 읽기 명령에 해당하는 뱅크에 가장 높은 순위로 할당할 수 있다.When the command is a read command, the allocation module can allocate the read command to the bank corresponding to the read command in the highest order among the plurality of banks.
상기 명령 큐는 상기 복수의 뱅크들 각각에 대응되도록 구현될 수 있다.The instruction queue may be implemented to correspond to each of the plurality of banks.
상기 명령 큐는 상기 할당 모듈의 내부에 구현될 수 있다.The command queue may be implemented within the allocation module.
일 실시 예에 따른 데이터 저장 장치는 상기 메모리 컨트롤러와, 상기 복수의 뱅크들을 포함하는 메모리 장치를 포함할 수 있다.A data storage device according to one embodiment may include the memory controller and a memory device including the plurality of banks.
상기 데이터 저장 장치는 솔리드 스테이트 드라이브(solid state drive(SSD)), 유니버셜 플래시 스토리지(universal flash storage(UFS)), 플래시 USB 드라이브(flash universal serial bus drive), 또는 임베디드 멀티미디어 카드(embedded multimedia card(eMMC))일 수 있다.The data storage device may be a solid state drive (SSD), a universal flash storage (UFS), a flash universal serial bus drive, or an embedded multimedia card (eMMC) )).
일 실시 예에 따른 전자 시스템은 상기 메모리 컨트롤러와, 상기 호스트를 포함할 수 있다.An electronic system according to an embodiment may include the memory controller and the host.
도 1은 일 실시예에 따른 전자 시스템의 개략적인 블록도이다.
도 2는 도 1에 도시된 메모리 컨트롤러의 일 실시 예에 따른 개략적인 블록도이다.
도 3은 도 1에 도시된 불휘발성 메모리 장치의 개략적인 블록도이다.
도 4는 도 1에 도시된 전자 시스템의 일 실시 예에 따른 계층 구조를 나타내는 도면이고, 도 5는 일 실시 예에 따른 메모리 컨트롤러의 동작 방법을 설명하기 위한 플로우 차트이다.
도 6은 도 4에 도시된 할당 모듈의 동작 방법의 일 실시예를 설명하기 위한 도면이다.
도 7은 도 4에 도시된 할당 모듈의 동작 방법의 다른 실시예를 설명하기 위한 도면이다.
도 8은 도 4에 도시된 할당 모듈의 동작 방법의 또 다른 실시예를 설명하기 위한 도면이다.
도 9는 도 1에 도시된 메모리 컨트롤러의 다른 실시 예에 따른 개략적인 블록도이다.
도 10는 도 1에 도시된 메모리 컨트롤러와 불휘발성 메모리 장치를 포함하는 전자 시스템의 일 실시 예에 따른 블록도이다.
도 11은 도 1에 도시된 메모리 컨트롤러와 불휘발성 메모리 장치를 포함하는 전자 시스템의 다른 실시 예에 따른 블록도이다.
도 12은 도 1에 도시된 메모리 컨트롤러와 불휘발성 메모리 장치를 포함하는 전자 시스템의 또 다른 실시 예에 따른 블록도이다.
도 13은 도 1에 도시된 데이터 저장 장치를 포함하는 전자 시스템의 또 다른 실시 예에 따른 블록도이다.
도 14는 본 발명의 일 실시 예에 따른 전자 시스템의 블록도이다.1 is a schematic block diagram of an electronic system according to one embodiment.
2 is a schematic block diagram according to one embodiment of the memory controller shown in FIG.
3 is a schematic block diagram of the nonvolatile memory device shown in FIG.
FIG. 4 is a diagram illustrating a hierarchical structure according to an embodiment of the electronic system shown in FIG. 1. FIG. 5 is a flowchart illustrating an operation method of a memory controller according to an embodiment.
FIG. 6 is a diagram for explaining an operation method of the allocation module shown in FIG. 4. FIG.
FIG. 7 is a view for explaining another embodiment of the operation method of the allocation module shown in FIG.
FIG. 8 is a diagram for explaining another embodiment of the operation method of the assignment module shown in FIG.
9 is a schematic block diagram according to another embodiment of the memory controller shown in FIG.
10 is a block diagram according to one embodiment of an electronic system including the memory controller and non-volatile memory device shown in FIG.
11 is a block diagram according to another embodiment of an electronic system including the memory controller and non-volatile memory device shown in FIG.
12 is a block diagram in accordance with another embodiment of an electronic system including the memory controller and non-volatile memory device shown in FIG.
13 is a block diagram in accordance with another embodiment of an electronic system including the data storage device shown in FIG.
14 is a block diagram of an electronic system according to an embodiment of the present invention.
본 명세서에 개시되어 있는 본 발명의 개념에 따른 실시예들에 대해서 특정한 구조적 또는 기능적 설명들은 단지 본 발명의 개념에 따른 실시예들을 설명하기 위한 목적으로 예시된 것으로서, 본 발명의 개념에 따른 실시예들은 다양한 형태로 실시될 수 있으며 본 명세서에 설명된 실시예들에 한정되지 않는다.It is to be understood that the specific structural or functional descriptions of embodiments of the present invention disclosed herein are presented for the purpose of describing embodiments only in accordance with the concepts of the present invention, May be embodied in various forms and are not limited to the embodiments described herein.
본 발명의 개념에 따른 실시예들은 다양한 변경들을 가할 수 있고 여러 가지 형태들을 가질 수 있으므로 실시예들을 도면에 예시하고 본 명세서에 상세하게 설명하고자 한다. 그러나, 이는 본 발명의 개념에 따른 실시예들을 특정한 개시형태들에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물, 또는 대체물을 포함한다.Embodiments in accordance with the concepts of the present invention are capable of various modifications and may take various forms, so that the embodiments are illustrated in the drawings and described in detail herein. It should be understood, however, that it is not intended to limit the embodiments according to the concepts of the present invention to the particular forms disclosed, but includes all modifications, equivalents, or alternatives falling within the spirit and scope of the invention.
제1 또는 제2 등의 용어를 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만, 예를 들어 본 발명의 개념에 따른 권리 범위로부터 이탈되지 않은 채, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소는 제1 구성요소로도 명명될 수 있다.The terms first, second, or the like may be used to describe various elements, but the elements should not be limited by the terms. The terms may be named for the purpose of distinguishing one element from another, for example without departing from the scope of the right according to the concept of the present invention, the first element being referred to as the second element, Similarly, the second component may also be referred to as the first component.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성요소들 간의 관계를 설명하는 표현들, 예를 들어 "~사이에"와 "바로~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.It is to be understood that when an element is referred to as being "connected" or "connected" to another element, it may be directly connected or connected to the other element, . On the other hand, when an element is referred to as being "directly connected" or "directly connected" to another element, it should be understood that there are no other elements in between. Expressions that describe the relationship between components, such as "between" and "between" or "neighboring to" and "directly adjacent to" should be interpreted as well.
본 명세서에서 사용한 용어는 단지 특정한 실시예들을 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 설시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.The terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting of the invention. The singular expressions include plural expressions unless the context clearly dictates otherwise. In this specification, the terms "comprises ", or" having ", or the like, specify that there is a stated feature, number, step, operation, , Steps, operations, components, parts, or combinations thereof, as a matter of principle.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
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 are to be interpreted as having a meaning consistent with the meaning of the context in the relevant art and, unless explicitly defined herein, are to be interpreted as ideal or overly formal Do not.
이하, 실시예들을 첨부된 도면을 참조하여 상세하게 설명한다.
Hereinafter, embodiments will be described in detail with reference to the accompanying drawings.
본 명세서에서의 모듈(module)은 본 명세서에서 설명되는 각 명칭에 따른 기능과 동작을 수행할 수 있는 하드웨어를 의미할 수도 있고, 특정 기능과 동작을 수행할 수 있는 컴퓨터 프로그램 코드를 의미할 수도 있고, 또는 특정 기능과 동작을 수행시킬 수 있는 컴퓨터 프로그램 코드가 탑재된 전자적 기록 매체, 예를 들어 프로세서 또는 마이크로 프로세서를 의미할 수 있다.A module in this specification may mean hardware capable of performing the functions and operations according to the respective names described in this specification and may mean computer program codes capable of performing specific functions and operations , Or an electronic recording medium, e.g., a processor or a microprocessor, equipped with computer program code capable of performing certain functions and operations.
다시 말해, 모듈이란 본 발명의 기술적 사상을 수행하기 위한 하드웨어 및/또는 상기 하드웨어를 구동하기 위한 소프트웨어의 기능적 및/또는 구조적 결합을 의미할 수 있다.
In other words, a module may mean a functional and / or structural combination of hardware for carrying out the technical idea of the present invention and / or software for driving the hardware.
도 1은 일 실시예에 따른 전자 시스템의 개략적인 블록도이다.1 is a schematic block diagram of an electronic system according to one embodiment.
도 1을 참조하면, 전자 시스템(electronic system; 1)은 호스트(host; 10)와 데이터 저장 장치(data storage device; 20)를 포함할 수 있다.Referring to FIG. 1, an
전자 시스템(1)은 PC(personal computer), 서버(server), 데이터 서버, 데이터베이스 서버, 웹 서버, 네트워크-결합 스토리지(network-attached storage(NAS)), 또는 휴대용 전자 장치로 구현될 수 있다.The
휴대용 전자 장치는 랩탑 컴퓨터(laptop computer), 넷북(netbook), 이동전화기, 스마트폰(smartphone), 태블릿(tablet) PC, 모바일 인터넷 디바이스(mobile internet device(MID)), PDA(personal digital assistant), EDA(enterprise digital assistant), 디지털 스틸 카메라(digital still camera), 디지털 비디오 카메라(digital video camera), PMP(portable multimedia player), PND(personal navigation 또는 portable navigation device), 휴대용 게임 콘솔(handheld game console), 또는 e-북(e-book)으로 구현될 수 있다.Portable electronic devices include, but are not limited to, a laptop computer, a netbook, a mobile phone, a smartphone, a tablet PC, a mobile internet device (MID), a personal digital assistant (PDA) An enterprise digital assistant (EDA), a digital still camera, a digital video camera, a portable multimedia player (PMP), a personal navigation or portable navigation device (PND), a handheld game console, , Or an e-book (e-book).
호스트(10)는 인터페이스(30)를 통해 데이터 저장 장치(20)와 통신할 수 있다. 예를 들어, 호스트(10)는 인터페이스(30)를 통해 데이터 및/또는 명령을 데이터 저장 장치(20)로 전송할 수 있다. 예를 들어, 호스트(100)는 애플리케이션 프로세서 또는 모바일 애플리케이션 프로세서를 의미할 수 있다.The
인터페이스(30)는 통신을 위하여 인터페이스 프로토콜(interface protocol)을 포함할 수 있다.The
예를 들어, 인터페이스 프로토콜은 UHI(UHS-I 또는 UHS-II), PCI-E(peripheral component interconnect-express), ATA(Advanced attached SCSI), SATA(serial advanced technology attachment), SAS(Serial Attached SCSI), 또는 DDRx(Double Data Rate x)와 같은 인터페이스 프로토콜일 수 있다.For example, the interface protocol may be UHI (UHS-I or UHS-II), peripheral component interconnect-express (PCI-E), advanced attached SCSI (ATA), serial advanced technology attachment (SATA) , Or Double Data Rate x (DDRx).
또한, 인터페이스 프로토콜은 USB(Universal Serial Bus), MMC(multi-media card), ESDI(enhanced small disk interface), 또는 IDE(Integrated Drive Electronics) 등에 적합한 프로토콜일 수 있다.In addition, the interface protocol may be a protocol suitable for a USB (Universal Serial Bus), a multi-media card (MMC), an enhanced small disk interface (ESDI), or an IDE (Integrated Drive Electronics).
데이터 저장 장치(20)는 메모리 컨트롤러(memory controller; 100)와 불휘발성 메모리 장치(non-volatile memory device; 200)를 포함할 수 있다.The
데이터 저장 장치(20)는 데이터베이스, 솔리드 스테이트 드라이브(Solid State Drive(SSD)), 유니버셜 플래시 스토리지(universal flash storage(UFS)), 플래시 USB 드라이브(flash universal serial bus drive), SD(secure digital) 카드, MMC(multimedia card), 임베디드 MMC(embedded MMC), 스마트 카드(smart card), 메모리 카드(memory card), 또는 레이드(Redundant Array of Independent Disks(RAID) 또는 Redundant Array of Inexpensive Disks(RAID))로 구현될 수 있으나, 반드시 이에 한정되지 않는다.The
예를 들어, 데이터 저장 장치(20)는 eMMC, UFC, 또는 SSD 등과 같이 플래시 메모리 컨트롤러를 포함하는 플래시-기반 데이터 저장 장치일 수 있다.For example, the
메모리 컨트롤러(100)는 호스트(10)의 명령에 따라 불휘발성 메모리 장치(200)를 제어함으로써 데이터를 리드하거나 데이터를 라이트할 수 있다.The
또한, 메모리 컨트롤러(100)는 불휘발성 메모리 장치(200)의 동작 조건(operation condition)을 제어하거나 불휘발성 메모리 장치(200)의 효율적은 관리를 위하여 필요한 내부 동작(예를 들어, 가비지 컬렉션(garbage collection), 웨어 레벨링(wear-leveling) 등)을 제어할 수 있다.
The
도 2는 도 1에 도시된 메모리 컨트롤러의 일 실시 예에 따른 개략적인 블록도이다.2 is a schematic block diagram according to one embodiment of the memory controller shown in FIG.
도 1 및 도 2를 참조하면, 메모리 컨트롤러(100)는 제1 메모리(fist memory; 110), CPU(central processing unit; 120), 제2 메모리(second memory; 130), 불휘발성 메모리 인터페이스(non-volatile memory interface; 140), 및 ECC 블록(error correction code(ECC) block; 150)을 포함할 수 있다.1 and 2, the
제1 메모리(110)는 CPU(120)의 동작에 필요한 프로그램 코드 또는 펌웨어(firmware)를 저장할 수 있다. 제1 메모리(110)는 불휘발성 메모리, 예를 들어 RAM으로 구현될 수 있다.The
CPU(120)는 메모리 컨트롤러(100)의 전반적인 동작을 제어할 수 있다. CPU(120)는 버스(160)를 통하여 제1 메모리(110), 제2 메모리(130), 및 ECC 블록(150) 사이에서 데이터의 교환을 제어할 수 있다.The
또한, CPU(120)는 불휘발성 메모리 장치(200)의 FTL(Flash Translation Layer)을 구동할 수 있다. FTL에 대해서는 도 4를 참조하여 후술한다.In addition, the
제2 메모리(130)는 휘발성 메모리, 예를 들어 DRAM(dynamic RAM) 또는 SRAM(static RAM)으로 구현될 수 있다. 제2 메모리(130)는 인터페이스(30)를 통해 호스트(10)로부터 전송된 데이터를 일시적으로 저장 또는 버퍼링할 수 있다. 또한, 제2 메모리(130)는 인터페이스(30)를 통해 호스트(10)로 전송하기 위한 불휘발성 메모리 장치(200)로부터 출력된 데이터를 일시적으로 저장 또는 버퍼링할 수 있다. 예를 들어, 제2 메모리(130)는 버퍼 메모리(buffer memory)일 수 있다. 도 2에서는 제2 메모리(130)가 메모리 컨트롤러(100)의 내부에 구현되는 것으로 도시되어 있지만, 메모리 컨트롤러(100)의 외부에 구현될 수도 있다.The
불휘발성 메모리 인터페이스(140)는 불휘발성 메모리 장치(200)와 메모리 컨트롤러(100) 사이에서 데이터의 교환을 인터페이싱할 수 있다.The
ECC(error correction code) 블록(150)은 불휘발성 메모리 장치(200)에 저장될 데이터 또는 불휘발성 메모리 장치(200)로부터 리드된 데이터에 포함된 에러를 에러 정정 코드(error correction code(ECC))를 이용하여 검출 및 정정할 수 있다.An error correction code (ECC) block 150 is an error correction code (ECC) for error contained in data to be stored in the
불휘발성 메모리 장치(200)는 각종 프로그램들(programs)과 데이터(data)를 저장할 수 있다.
The
도 3은 도 1에 도시된 불휘발성 메모리 장치의 개략적인 블록도이다.3 is a schematic block diagram of the nonvolatile memory device shown in FIG.
도 1 내지 도 3을 참조하면, 불휘발성 메모리 장치(200)는 플래시 메모리 장치일 수 있으나, 이에 한정되지 않으며, PRAM, MRAM, ReRAM, 또는 FeRAM 장치일 수 있다. 불휘발성 메모리 장치(200)가 플래시 메모리 장치인 경우, 불휘발성 메모리 장치(200)는 플로팅 게이트 방식의 NAND 플래시 메모리 장치 또는 CTF(Charge Trap Flash) 방식의 NAND 플래시 메모리 장치일 수 있다. 불휘발성 메모리 장치(200)의 메모리 셀 트랜지스터들은 2차원적으로 배열된 구조를 가질 수도 있고, 또한 3차원적으로 배열된 구조를 가질 수도 있다.1 to 3, the
불휘발성 메모리 장치(200)는 복수의 뱅크들(210)을 포함할 수 있다. 복수의 뱅크들 각각은 뱅크(Bank0) 내지 뱅크(BankN)로 레벨된 메모리 셀 어레이(memory cell array; 211)를 포함할 수 있다. 메모리 셀 어레이(211)는 불휘발성 메모리 셀들을 포함할 수 있다.The
불휘발성 메모리 셀들 각각은 EEPROM(Electrically Erasable Programmable Read-Only Memory), 플래시(flash) 메모리, MRAM(Magnetic RAM), 스핀전달토크 MRAM(Spin-Transfer Torque MRAM), Conductive bridging RAM(CBRAM), FeRAM(Ferroelectric RAM), PRAM(Phase change RAM), 저항 메모리(Resistive RAM(RRAM)), 나노튜브 RRAM(Nanotube RRAM), 폴리머 RAM(Polymer RAM: PoRAM)), 나노 부유 게이트 메모리(Nano Floating Gate Memory: NFGM), 홀로그래픽 메모리(holographic memory), 분자 전자 메모리(Molecular Electronics Memory Device), 또는 절연 저항 변화 메모리(Insulator Resistance Change Memory)로 구현될 수 있다. 불휘발성 메모리 셀들 각각은 1-비트 또는 그 이상의 비트들을 저장할 수 있다. 예를 들어, 불휘발성 메모리 셀들은 셀(cell)당 1-비트 정보를 저장할 수 있는 싱글-레벨 셀들(single level cells(SLCs)) 및/또는 셀당 2-비트 정보 또는 그 이상의 정보를 저장할 수 있는 멀티-레벨 셀들(multi-level cells(MLCs))을 포함할 수 있다.
Each of the non-volatile memory cells may be electrically erasable programmable read-only memory (EEPROM), flash memory, magnetic RAM, spin transfer torque MRAM, conductive bridging RAM (CBRAM), FeRAM A ferroelectric RAM, a phase change RAM (PRAM), a resistive RAM (RRAM), a nanotube RRAM, a polymer RAM (PoRAM), a nano floating gate memory (NFGM) ), A holographic memory, a Molecular Electronics Memory Device, or an Insulator Resistance Change Memory. Each of the non-volatile memory cells may store one or more bits. For example, non-volatile memory cells may store single-level cells (SLCs) capable of storing 1-bit information per cell and / or 2-bit information per cell And may include multi-level cells (MLCs).
도 4는 도 1에 도시된 전자 시스템의 일 실시 예에 따른 계층 구조를 나타내는 도면이고, 도 5는 일 실시 예에 따른 메모리 컨트롤러의 동작 방법을 설명하기 위한 플로우 차트이다.FIG. 4 is a diagram illustrating a hierarchical structure according to an embodiment of the electronic system shown in FIG. 1. FIG. 5 is a flowchart illustrating an operation method of a memory controller according to an embodiment.
도 1, 도 4, 및 도 5를 참조하면, 전자 시스템(1A)은 도 1의 호스트(10)의 일 실시예에 따른 호스트(10A)와 도 1의 데이터 저장 장치(20)의 일 실시 예에 따른 데이터 저장 장치(20A)를 포함할 수 있다.1, 4, and 5,
데이터 저장 장치(20A)는 도 1의 메모리 컨트롤러(100)의 일 실시 예에 따른 플래시 컨트롤러(100A)와 도 1의 불휘발성 메모리 장치(200)의 일 실시 예에 따른 플래시 메모리 장치(200A)를 포함할 수 있다.The data storage device 20A includes a
플래시 컨트롤러(100A)는 FTL(flash translation layer; 170)과 인터페이스 레이어(interface layer; 140A)를 포함할 수 있다.The
인터페이스 레이어(140A)는 플래시 컨트롤러(100A)가 플래시 메모리 장치(200A)에 액세스할 수 있도록 플래시 인터페이스를 제공하는 계층이다. 인터페이스 레이어(140A)는 도 2에 도시된 불휘발성 메모리 인터페이스(140)의 전부 또는 일부에 상응할 수 있다.The
FTL(170)은 논리-물리 주소 매핑 모듈(logical-physical address mapping module; 172), 가비지 콜렉션 모듈(garbage collection module; 174), 웨어-레벨링 모듈(wear-leveling module; 176), 및 할당 모듈(allocation module; 178)을 포함할 수 있다.The
논리-물리 주소 매핑 모듈(172), 가비지 콜렉션 모듈(174), 웨어-레벨링 모듈(176), 및 할당 모듈(178) 각각은 기능 및 논리적으로 분리될 수 있음을 나타내는 것이며, 반드시 구성들 각각이 별도의 물리적 장치로 구분되거나 별도의 코드로 작성됨을 의미하는 것은 아니다.Each of the logical-physical
논리-물리 주소 매핑 모듈(172)은 주소 매핑 테이블(address mapping table)을 이용하여 파일시스템의 논리적 주소와 플래시 메모리 장치(200A)의 물리적 주소를 매핑할 수 있다.The logical-physical
가비지 콜렉션 모듈(174)은 플래시 메모리 장치(200A)의 블록 내의 유효한 페이지를 관리하기 위한 가비지 콜렉션(garbage collection) 동작을 제어할 수 있다. 가비지 콜렉션 동작은 플래시 메모리 장치(200A)의 기존 블록 내의 유효한 페이지를 새로운 블록에 복사하고, 기존 블록을 이레이즈(erase)하여 프리 블록(free block)으로써 재사용할 수 있도록 하는 동작이다.The
웨어-레벨링 모듈(176)은 플래시 메모리 장치(200A)의 수명을 늘리기 위해 웨어-레벨링 동작을 수행할 수 있다. 웨어-레벨링 동작은 블록들의 삭제 기능 횟수를 균일하게 관리하여 특정 블록의 수명이 짧아지는 것을 방지하는 동작이다.Leveling
할당 모듈(178)은 호스트(10A)로부터 전송된 명령을 수신할 수 있다(S110).The
할당 모듈(178)은 호스트(10A)로부터 출력된 명령에 기초하여 복수의 뱅크들의 명령 큐를 분석하고, 분석 결과에 따라 복수의 뱅크들을 제어할 수 있다(S130).The
또한, 할당 모듈(178)은 복수의 뱅크들이 포함된 메모리 장치, 예를 들어 플래시 메모리 장치(200A)의 아키텍처에 기초한 액세스 타입(access type)따른 명령의 가중치에 따라 복수의 뱅크들을 제어할 수 있다.
In addition, the
도 6은 도 4에 도시된 할당 모듈의 동작 방법의 일 실시예를 설명하기 위한 도면이다.FIG. 6 is a diagram for explaining an operation method of the allocation module shown in FIG. 4. FIG.
도 6을 참조하면, 할당 모듈(178)은 호스트(10A)로부터 전송된 명령을 수신할 수 있다. 할당 모듈(178)은 명령에 기초하여 복수의 뱅크들(Bank0~BankN)의 명령 큐(179)를 분석하고, 분석 결과에 따라 복수의 뱅크들(Bank0~BankN)을 제어할 수 있다.Referring to FIG. 6, the
명령 큐(179)는 복수의 명령 큐들(179-1~179-n)을 포함할 수 있다. 복수의 명령 큐들(179-1~179-n) 각각은 복수의 뱅크들(Bank0~BankN) 각각에 대응될 수 있다. 예를 들어, 제1 명령 큐(179-1)는 제1 뱅크(Bank0)에 대응되고, 제2 명령 큐(179-2)는 제2 뱅크(Bank1)에 대응되고, 제n 명령 큐(179-n)은 제n 뱅크(BankN)에 대응될 수 있다.The
호스트(10A)로부터 전송된 명령이 쓰기 명령(W)일 때, 할당 모듈(178)은 명령 큐(179)에서 복수의 뱅크들(Bank0~BankN) 각각에 할당된 명령들의 수행 시간을 합산할 수 있다. 할당 모듈(178)은 명령 큐(179)를 통해 복수의 뱅크들(Bank0~BankN) 각각의 지연 시간을 예측할 수 있다. 이때, 할당 모듈(178)은 복수의 뱅크들(Bank0~BankN) 중에서 할당된 명령들의 수행 시간의 합산 값이 가장 작은 뱅크를 선택할 수 있다.When the command sent from the
할당 모듈(178)은 쓰기 명령(W)을 합산 값이 가장 작은 뱅크에 할당할 수 있다. 예를 들어, 할당 모듈은(178)은 합산 값이 가장 작은 뱅크의 명령 큐에 순차적으로 삽입할 수 있다.The
설명의 편의를 위해, 제1 명령 큐(179-1)에는 명령들(a1~a9)이 쌓여있고, 제2 명령 큐(179-2)에는 명령들(b1~b7)이 쌓여있고, 제n 명령 큐(179-n)에는 명령들(n1~n8)이 쌓여있다고 가정한다.For convenience of explanation, the instructions a1 to a9 are accumulated in the first instruction queue 179-1, the instructions b1 to b7 are accumulated in the second instruction queue 179-2, It is assumed that the instruction queues 179-n accumulate instructions n1 through n8.
예를 들어, 할당 모듈(178)은 제1 뱅크(Bank0)에 할당된 명령들(a1~a9)의 수행 시간을 알기 위해 제1 명령 큐(179-1)에 쌓인 명령들(a1~a9)의 수행 시간을 합산할 수 있다. 할당 모듈(178)은 제2 뱅크(Bank1)에 할당된 명령들(b1~b7)의 수행 시간을 알기 위해 제2 명령 큐(179-2)에 쌓인 명령들(b1~b7)의 수행 시간을 합산할 수 있다. 할당 모듈(178)은 제n 뱅크(BankN)에 할당된 명령들(n1~n8)의 수행 시간을 알기 위해 제n 명령 큐(179-n)에 쌓인 명령들(n1~n8)의 수행 시간을 합산할 수 있다.For example, the assigning
할당 모듈(178)은 복수의 뱅크들(Bank0~BankN) 중에서 할당된 명령들의 수행 시간의 합산 값이 가장 작은 뱅크로 제2 뱅크(Bank1)를 선택할 수 있다.The
할당 모듈은(178)은 제2 뱅크(Bank1)의 명령 큐(179-2)에 순차적으로 삽입할 수 있다. 따라서, 쓰기 명령(W)은 명령들(b1~b7)이 실행되고 나서, 순차적으로 실행될 수 있다.The
쓰기 명령(W)에 대해서는 시간적으로 접근성이 빠른 뱅크를 선택하여 쓰기 명령(W)을 선택한 뱅크의 명령 큐에 삽입함으로써, 플래시 메모리 장치(200A)는 지연 시간을 최소화하여 쓰기 성능을 향상시킬 수 있다.
With respect to the write command W, the
도 7은 도 4에 도시된 할당 모듈의 동작 방법의 다른 실시예를 설명하기 위한 도면이다.FIG. 7 is a view for explaining another embodiment of the operation method of the allocation module shown in FIG.
도 7을 참조하면, 할당 모듈(178)은 호스트(10A)로부터 전송된 명령을 수신할 수 있다. 할당 모듈(178)은 명령에 기초하여 복수의 뱅크들(Bank0~BankN)의 명령 큐(179)를 분석하고, 분석 결과에 따라 복수의 뱅크들(Bank0~BankN)을 제어할 수 있다.Referring to Fig. 7, the
호스트(10A)로부터 전송된 명령이 읽기 명령(R)일 때, 할당 모듈(178)은 복수의 뱅크들(Bank0~BankN) 중에서 읽기 명령(R)에 해당하는 뱅크를 선택할 수 있다. 할당 모듈(178)은 읽기 명령(R)을 읽기 명령(R)에 해당하는 뱅크에 가장 높은 순위로 할당할 수 있다. 예를 들어, 할당 모듈(178)은 읽기 명령(R)에 우선순위를 부여하여 읽기 명령(R)을 읽기 명령(R)에 해당하는 뱅크의 명령 큐의 헤드에 삽입할 수 있다.When the command transmitted from the
설명의 편의를 위해, 제1 명령 큐(179-1)에는 명령들(a1~a9)이 쌓여있고, 제2 명령 큐(179-2)에는 명령들(b1~b7)이 쌓여있고, 제n 명령 큐(179-n)에는 명령들(n1~n8)이 쌓여있다고 가정한다.For convenience of explanation, the instructions a1 to a9 are accumulated in the first instruction queue 179-1, the instructions b1 to b7 are accumulated in the second instruction queue 179-2, It is assumed that the instruction queues 179-n accumulate instructions n1 through n8.
할당 모듈(178)은 호스트(10A)로부터 읽기 명령(R)을 수신하고, 복수의 뱅크들(Bank0~BankN) 중에서 읽기 명령(R)에 해당하는 뱅크를 제1 뱅크(Bank0)로 선택할 수 있다.The
할당 모듈(178)은 읽기 명령(R)에 명령들(a1~a9)보다 우선순위를 부여하여 명령 큐(179-1)의 헤드에 삽입할 수 있다. 따라서, 읽기 명령(R)은 명령들(a1~a9)보다 가장 먼저 실행될 수 있다.The
읽기 명령(R)에 대해서는 가장 높은 우선순위를 부여하여 읽기 명령(R)을 읽기 명령(R)에 해당하는 뱅크의 명령 큐에 삽입함으로써, 플래시 메모리 장치(200A)는 지연 시간을 최소화하여 읽기 성능을 향상시킬 수 있다.
The read command R is given the highest priority and the read command R is inserted into the command queue of the bank corresponding to the read command R so that the
도 8은 도 4에 도시된 할당 모듈의 동작 방법의 또 다른 실시예를 설명하기 위한 도면이다.FIG. 8 is a diagram for explaining another embodiment of the operation method of the assignment module shown in FIG.
도 8을 참조하면, 할당 모듈(178)은 복수의 뱅크들이 포함된 메모리 장치, 예를 들어 플래시 메모리 장치(200A)의 아키텍처에 기초한 액세스 타입(access type)에 따른 명령(예를 들어, 프로그램(program), 읽기(read), 이레이즈(erase), 쓰기(write)) 의 가중치에 따라 복수의 뱅크들을 제어할 수 있다. 예를 들어, 아키텍처는 SLC 낸드 구조와 MLC 낸드 구조를 포함할 수 있다.8, the
각 명령, 예를 들어, 프로그램(program), 읽기(read), 이레이즈(erase), 쓰기(write)는 아키텍처에 기초한 액세스 타입(access type)에 따라 서로 다른 소요시간을 가질 수 있다. 예를 들어, 동일하게 보이는 프로그램 명령과 읽기 명령도 서로 다른 소요시간을 가질 수 있다. 이에, 각 명령은 아키텍처에 기초한 액세스 타입(access type)에 따라 서로 다른 가중치를 가지거나 부여될 수 있다.Each instruction, for example, program, read, erase, and write, can have different time requirements depending on the access type based on the architecture. For example, program commands and read commands that look the same can have different times. Thus, each instruction can have different weights or be given different depending on the access type based on the architecture.
도 8은 MLC 낸드 구조에서 LSB 페이지에만 프로그램된 경우와 MSB 페이지까지 프로그램된 경우를 가정하여 실험한 수치를 나타낸다.FIG. 8 shows experimental values assuming that only the LSB page is programmed and the MSB page is programmed in the MLC NAND structure.
도 8에 도시된 바와 같이, 프로그램 명령과 읽기 명령의 가중치는 플래시 메모리 장치(200A)의 아키텍처에 기초한 액세스 타입(access type)에 따라 다를 수 있다. 또한, LSB 페이지에만 프로그램된 상태에서 LSB 페이지를 읽는 동작이 MSB 페이지까지 프로그램된 상태에서 LSB 페이지를 읽는 동작보다 약 3~4 ?정도 tR time이 적게 소요됨을 알 수 있다.As shown in FIG. 8, the weights of the program command and the read command may differ depending on the access type based on the architecture of the
도 8에서와 같이 명령의 가중치가 실험적 수치로 정해질 수 있지만, 이에 한정되지 않고 사용자 및/또는 설계자에 의해서 명령의 가중치는 설정될 수 있다.As shown in FIG. 8, the weight of the command can be set to an experimental value, but not limited thereto, and the weight of the command can be set by the user and / or the designer.
도 6, 도 7, 및 도 8에서는 할당 모듈(178)의 동작 방법이 독립적으로 구분되는 것으로 설명하고 있지만, 이에 한정되지 않으며 할당 모듈(178)은 도 6 및/또는 도 7에서 설명된 동작 방법에 도 8에서 설명된 동작 방법을 더하여 복수의 뱅크들을 제어할 수 있다.
6, FIG. 7, and FIG. 8, the assignment method of the
도 9는 도 1에 도시된 메모리 컨트롤러의 다른 실시 예에 따른 개략적인 블록도이다.9 is a schematic block diagram according to another embodiment of the memory controller shown in FIG.
도 9를 참조하면, 할당 모듈(178)은 FTL(170)의 외부에 구현될 수 있다.Referring to FIG. 9, the
예를 들어, 할당 모듈(178)은 CPU(120) 이외의 독립적인 하드웨어로 구현될 수 있다.For example, the
다른 예를 들어, 할당 모듈(178)이 펌웨어(firmware) 또는 소프트웨어로 구현될 때, 할당 모듈(178)은 CPU(120)에 의해 실행될 수 있다.In another example, when the
도 9의 메모리 컨트롤러(100B)의 구조와 동작은 도 2의 메모리 컨트롤러(100)의 구조와 동작과 실질적으로 동일할 수 있다.
The structure and operation of the
도 10는 도 1에 도시된 메모리 컨트롤러와 불휘발성 메모리 장치를 포함하는 전자 시스템의 일 실시 예에 따른 블록도이다.10 is a block diagram according to one embodiment of an electronic system including the memory controller and non-volatile memory device shown in FIG.
도 1과 도 10를 참조하면, 전자 시스템(400)은 이동 전화기(cellular phone), 스마트 폰(smart phone), PDA(personal digital assistant), 또는 무선 통신 장치 등으로 구현될 수 있다. 1 and 10, the
전자 시스템(400)은 불휘발성 메모리 장치(200), 불휘발성 메모리 장치(200)의 동작을 제어할 수 있는 메모리 컨트롤러(100), 프로세서(processor; 410), 디스플레이(display; 420), 무선 송수신기(radio transceiver; 430), 입력 장치(input device; 440)를 포함할 수 있다. The
메모리 컨트롤러(100)는 프로세서(410)의 제어에 따라 불휘발성 메모리 장치(200)의 데이터 액세스 동작, 예를 들어 프로그램(program) 동작, 이레이즈(erase) 동작, 또는 리드(read) 동작을 제어할 수 있다. The
불휘발성 메모리 장치(200)에 프로그램된 데이터는 프로세서(410) 및/또는 메모리 컨트롤러(100)의 제어에 따라 디스플레이(420)를 통하여 디스플레이될 수 있다.The data programmed into the
프로세서(410)는 메모리 컨트롤러(100)로부터 출력된 데이터, 무선 송수신기 (430)로부터 출력된 데이터, 또는 입력 장치(440)로부터 출력된 데이터가 디스플레이(420)를 통하여 디스플레이될 수 있도록 디스플레이(420)의 동작을 제어할 수 있다.The
무선 송수신기(430)는 안테나(ANT)를 통하여 무선 신호를 주거나 받을 수 있다. 예를 들어, 무선 송수신기(430)는 안테나(ANT)를 통하여 수신된 무선 신호를 프로세서(410)에서 처리될 수 있는 신호로 변환할 수 있다. The
따라서, 프로세서(410)는 무선 송수신기(430)로부터 출력된 신호를 처리하고 처리된 신호를 메모리 컨트롤러(100) 또는 디스플레이(420)로 전송할 수 있다.Thus, the
또한, 무선 송수신기(430)는 프로세서(410)로부터 출력된 신호를 무선 신호로 변경하고 변경된 무선 신호를 안테나(ANT)를 통하여 외부 장치로 출력할 수 있다. In addition, the
입력 장치(440)는 프로세서(410)의 동작을 제어하기 위한 제어 신호 또는 프로세서(410)에 의하여 처리될 데이터를 입력할 수 있는 장치로서, 터치 패드(touch pad)와 컴퓨터 마우스(computer mouse)와 같은 포인팅 장치(pointing device), 키패드(keypad), 또는 키보드 등으로 구현될 수 있다. The
예를 들어, 불휘발성 메모리 장치(200)의 동작을 제어할 수 있는 메모리 컨트롤러(100)는 프로세서(410)의 일부로서 구현될 수 있고 또한 프로세서(410)와 별도의 칩으로 구현될 수 있다.
For example, the
도 11은 도 1에 도시된 메모리 컨트롤러와 불휘발성 메모리 장치를 포함하는 전자 시스템의 다른 실시 예에 따른 블록도이다.11 is a block diagram according to another embodiment of an electronic system including the memory controller and non-volatile memory device shown in FIG.
도 1과 도 11을 참조하면, 전자 시스템(500)은 메모리 카드(memory card) 또는 스마트 카드(smart card) 등으로 구현될 수 있다. Referring to FIGS. 1 and 11, the
전자 시스템(500)은 메모리 컨트롤러(100), 불휘발성 메모리 장치(200), 및 카드 인터페이스(520)를 포함한다. The
메모리 컨트롤러(100)는 불휘발성 메모리 장치(200)와 카드 인터페이스(520) 사이에서 데이터의 교환을 제어할 수 있다. The
카드 인터페이스(520)는 호스트(530)의 프로토콜에 따라 호스트(530)와 메모리 컨트롤러(100) 사이에서 데이터 교환을 인터페이싱할 수 있다. The
예를 들어, 카드 인터페이스(520)는 SD(secure digital) 카드 인터페이스 또는 MMC(multi-media card) 인터페이스일 수 있으나 이에 한정되는 것은 아니다. For example, the
다른 예를 들어, 카드 인터페이스(520)는 USB(Universal Serial Bus) 프로토콜, IC(InterChip)-USB 프로토콜을 지원할 수 있다. 여기서, 카드 인터페이스라 함은 호스트(530)가 사용하는 프로토콜을 지원할 수 있는 하드웨어, 상기 하드웨어에 탑재된 소프트웨어, 또는 신호 전송 방식을 의미할 수 있다.For example, the
호스트(530)는 PC, 태블릿 PC, 디지털 카메라, 디지털 오디오 플레이어, 이동 전화기, 콘솔 비디오 게임 하드웨어, 또는 디지털 셋-탑 박스 등으로 구현될 수 있다.The
전자 시스템(500)이 호스트(530)의 호스트 인터페이스(550)와 접속될 때, 호스트 인터페이스(550)는 마이크로프로세서(540)의 제어에 따라 카드 인터페이스(520)와 메모리 컨트롤러(100)를 통하여 불휘발성 메모리 장치(200)와 데이터 통신을 수행할 수 있다.
When the
도 12은 도 1에 도시된 메모리 컨트롤러와 불휘발성 메모리 장치를 포함하는 전자 시스템의 또 다른 실시 예에 따른 블록도이다.12 is a block diagram in accordance with another embodiment of an electronic system including the memory controller and non-volatile memory device shown in FIG.
도 1과 도 12을 참조하면, 전자 시스템(600)은 SSD(solid state drive)로 구현될 수 있다. Referring to Figures 1 and 12, the
전자 시스템(600)은 메모리 컨트롤러(100), 복수의 불휘발성 메모리 장치들(200), 버퍼 매니저(620), 휘발성 메모리 장치(630), 및 호스트(640)를 포함할 수 있다.The
메모리 컨트롤러(100)는 복수의 불휘발성 메모리 장치들(200) 각각의 데이터 처리 동작을 제어할 수 있다.The
버퍼 매니저(620)는 메모리 컨트롤러(100)와 호스트(640) 사이에서 주고받는 데이터를 휘발성 메모리 장치(630)에 저장하는 것을 제어할 수 있다.The
휘발성 메모리 장치(630)는 메모리 컨트롤러(100)와 호스트(640) 사이에서 주고받는 데이터를 버퍼링할 수 있다. 예를 들어, 휘발성 메모리 장치(630)는 DRAM(dynamic random access memory)으로 구현될 수 있다.
The
도 13은 도 1에 도시된 데이터 저장 장치를 포함하는 전자 시스템의 또 다른 실시 예에 따른 블록도이다.13 is a block diagram in accordance with another embodiment of an electronic system including the data storage device shown in FIG.
도 1과 도 13을 참조하면, RAID(redundant array of independent disks) 시스템으로 구현될 수 있는 데이터 처리 시스템(700)은 RAID 컨트롤러(710)와 다수의 메모리 시스템들(700-1~700-n; n는 자연수)을 포함할 수 있다. 1 and 13, a
다수의 메모리 시스템들(700-1~700-n) 각각은 도 1에 도시된 데이터 저장 장치(20)일 수 있다. 다수의 메모리 시스템들(700-1~700-n)은 RAID 어레이(array)를 구성할 수 있다. 예를 들어, 데이터 처리 시스템(700)은 PC(personal computer) 또는 SSD로 구현될 수 있다. Each of the plurality of memory systems 700-1 through 700-n may be the
프로그램 동작이 수행되는 동안, RAID 컨트롤러(710)는 호스트(HOST)로부터 출력된 프로그램 명령에 따라 호스트(HOST)로부터 출력된 프로그램 데이터를 RAID 레벨에 따라 다수의 메모리 시스템들(700-1~700-n) 중에서 적어도 어느 하나로 전송할 수 있다.While the program operation is being performed, the
리드 동작이 수행되는 동안, RAID 컨트롤러(710)는 호스트(HOST)로부터 출력된 리드 명령에 따라 다수의 메모리 시스템들(700-1~700-n) 중에서 적어도 어느 하나의 메모리 시스템으로부터 리드된 데이터를 호스트(HOST)로 전송할 수 있다.During the read operation, the
도 13의 호스트(HOST)는 도 1의 호스트(10)를 의미할 수 있다.
The host (HOST) in FIG. 13 may mean the
도 14는 본 발명의 일 실시 예에 따른 전자 시스템의 블록도이다.14 is a block diagram of an electronic system according to an embodiment of the present invention.
도 1과 도 14를 참조하면, 도 1의 전자 시스템(1)은 도 14의 전자 시스템(1000)으로 구현될 수 있다. 전자 시스템(1000)은 MIPI®(mobile industry processor interface)를 사용 또는 지원할 수 있는 데이터 처리 장치, 예컨대, PDA (personal digital assistants), PMP(portable multimedia player), IPTV(internet protocol television) 또는 스마트 폰(smart phone)으로 구현될 수 있다.Referring to Figures 1 and 14, the
애플리케이션 프로세서(1010)에 구현된 CSI 호스트(camera serial interface(CSI) host; 1012)는 카메라 시리얼 인터페이스를 통하여 이미지 센서 (1040)의 CSI 장치(1041)와 시리얼 통신할 수 있다. 이때, 예를 들어, CSI 호스트 (1012)는 디시리얼라이저(deserializer(DES))를 포함할 수 있고, CSI 장치(1041)는 시리얼라이저(serializer(SER))를 포함할 수 있다.A CSI host (CSI host) 1012 implemented in the
애플리케이션 프로세서(1010)에 구현된 DSI 호스트(1011)는 디스플레이 시리얼 인터페이스(display serial interface(DSI))를 통하여 디스플레이(1050)의 DSI 장치(1051)와 시리얼 통신할 수 있다. 이때, 예를 들어, DSI 호스트(1011)는 시리얼라이저(SER)를 포함할 수 있고, DSI 장치(1051)는 디시리얼라이저(DES)를 포함할 수 있다.The
예를 들어, 전자 시스템(1000)은 애플리케이션 프로세서(1010)와 통신할 수 있는 RF 칩(1060)을 더 포함할 수 있다. 애플리케이션 프로세서(1010)에 포함된 PHY(PHYsical layer; 1013)와 RF 칩(1060)에 포함된 PHY(1061)는 MIPI DigRF에 따라 데이터를 주고받을 수 있다.For example, the
예를 들어, 전자 시스템(1000)은 GPS(1020) 수신기, 스토리지(storage; 1070), 마이크로폰(microphone(MIC); 1080), DRAM(dynamic random access memory; 1085) 및 스피커(speaker; 1090)를 더 포함할 수 있다.For example, the
도 1의 호스트(10)는 도 14의 AP(1010)로 구현되고, 도 1의 데이터 저장 장치(20)는 도 14의 스토리지(1070)로 구현될 수 있다.The
전자 시스템(1000)은 Wimax(world interoperability for microwave access; 1030) 모듈, WLAN(wireless lan; 1100) 모듈 및/또는 UWB(ultra wideband; 1110) 모듈 등을 이용하여 통신할 수 있다.
The
이상에서 설명된 장치는 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.The apparatus described above may be implemented as a hardware component, a software component, and / or a combination of hardware components and software components. For example, the apparatus and components described in the embodiments may be implemented within a computer system, such as, for example, a processor, a controller, an arithmetic logic unit (ALU), a digital signal processor, a microcomputer, a field programmable gate array (FPGA) , A programmable logic unit (PLU), a microprocessor, or any other device capable of executing and responding to instructions. The processing device may execute an operating system (OS) and one or more software applications running on the operating system. The processing device may also access, store, manipulate, process, and generate data in response to execution of the software. For ease of understanding, the processing apparatus may be described as being used singly, but those skilled in the art will recognize that the processing apparatus may have a plurality of processing elements and / As shown in FIG. For example, the processing unit may comprise a plurality of processors or one processor and one controller. Other processing configurations are also possible, such as a parallel processor.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.The software may include a computer program, code, instructions, or a combination of one or more of the foregoing, and may be configured to configure the processing device to operate as desired or to process it collectively or collectively Device can be commanded. The software and / or data may be in the form of any type of machine, component, physical device, virtual equipment, computer storage media, or device , Or may be permanently or temporarily embodied in a transmitted signal wave. The software may be distributed over a networked computer system and stored or executed in a distributed manner. The software and data may be stored on one or more computer readable recording media.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.The method according to an embodiment may be implemented in the form of a program command that can be executed through various computer means and recorded in a computer-readable medium. The computer-readable medium may include program instructions, data files, data structures, and the like, alone or in combination. The program instructions to be recorded on the medium may be those specially designed and configured for the embodiments or may be available to those skilled in the art of computer software. Examples of computer-readable media include magnetic media such as hard disks, floppy disks and magnetic tape; optical media such as CD-ROMs and DVDs; magnetic media such as floppy disks; Magneto-optical media, and hardware devices specifically configured to store and execute program instructions such as ROM, RAM, flash memory, and the like. Examples of program instructions include machine language code such as those produced by a compiler, as well as high-level language code that can be executed by a computer using an interpreter or the like. The hardware devices described above may be configured to operate as one or more software modules to perform the operations of the embodiments, and vice versa.
이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.While the present invention has been particularly shown and described with reference to exemplary embodiments thereof, it is to be understood that the invention is not limited to the disclosed exemplary embodiments. For example, it is to be understood that the techniques described may be performed in a different order than the described methods, and / or that components of the described systems, structures, devices, circuits, Lt; / RTI > or equivalents, even if it is replaced or replaced.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.Therefore, other implementations, other embodiments, and equivalents to the claims are also within the scope of the following claims.
Claims (16)
상기 명령에 기초하여 복수의 뱅크들의 명령 큐를 분석하고, 분석 결과에 따라 상기 복수의 뱅크들을 제어하는 단계
를 포함하는 메모리 컨트롤러의 동작 방법.
Receiving an instruction transmitted from a host;
Analyzing a command queue of the plurality of banks based on the command, and controlling the plurality of banks according to an analysis result
The memory controller comprising:
상기 명령이 쓰기 명령일 때,
상기 제어하는 단계는,
상기 명령 큐에서 상기 복수의 뱅크들 각각에 할당된 명령들의 수행 시간을 합산하고, 상기 복수의 뱅크들 중에서 합산 값이 가장 작은 뱅크를 선택하는 단계; 및
상기 쓰기 명령을 상기 가장 작은 뱅크에 할당하는 단계
를 포함하는 메모리 컨트롤러의 동작 방법.
The method according to claim 1,
When the command is a write command,
Wherein the controlling comprises:
Summing execution times of instructions allocated to each of the plurality of banks in the instruction queue and selecting a bank having the smallest sum value among the plurality of banks; And
Assigning the write command to the smallest bank;
The memory controller comprising:
상기 명령이 읽기 명령일 때,
상기 제어하는 단계는,
상기 읽기 명령을 상기 복수의 뱅크들 중에서 상기 읽기 명령에 해당하는 뱅크에 가장 높은 순위로 할당하는 단계
를 포함하는 메모리 컨트롤러의 동작 방법.
The method according to claim 1,
When the command is a read command,
Wherein the controlling comprises:
Allocating the read command to the bank corresponding to the read command in the highest order among the plurality of banks
The memory controller comprising:
상기 할당하는 단계는,
상기 쓰기 명령을 상기 가장 작은 뱅크의 명령 큐에 순차적으로 삽입하는 단계
를 포함하는 메모리 컨트롤러의 동작 방법.
3. The method of claim 2,
Wherein the assigning comprises:
Sequentially inserting the write command into a command queue of the smallest bank
The memory controller comprising:
상기 할당하는 단계는,
상기 읽기 명령에 우선순위를 부여하여 상기 읽기 명령을 상기 읽기 명령에 해당하는 뱅크의 명령 큐의 헤드에 삽입하는 단계
를 포함하는 메모리 컨트롤러의 동작 방법.
The method of claim 3,
Wherein the assigning comprises:
Assigning a priority to the read command and inserting the read command into the head of the command queue of the bank corresponding to the read command
The memory controller comprising:
상기 명령 큐는 상기 복수의 뱅크들 각각에 대응되도록 구현되는 메모리 컨트롤러의 동작 방법.
The method according to claim 1,
Wherein the instruction queue is implemented to correspond to each of the plurality of banks.
상기 제어하는 단계는,
상기 복수의 뱅크들이 포함된 메모리 장치의 아키텍처에 기초한 액세스 타입(access type)에 따른 상기 명령의 가중치에 따라 상기 복수의 뱅크들을 제어하는 단계
를 포함하는 메모리 컨트롤러의 동작 방법.
The method according to claim 1,
Wherein the controlling comprises:
Controlling the plurality of banks according to a weight of the instruction according to an access type based on an architecture of a memory device including the plurality of banks,
The memory controller comprising:
상기 명령에 기초하여 상기 명령 큐를 분석하고, 분석 결과에 따라 복수의 뱅크들을 제어하는 할당 모듈
을 포함하는 메모리 컨트롤러.
A command queue for stacking commands transmitted from a host; And
An allocation module for analyzing the instruction queue based on the instruction and controlling a plurality of banks according to an analysis result,
.
상기 명령이 쓰기 명령일 때,
상기 할당 모듈은 상기 명령 큐에서 상기 복수의 뱅크들 각각에 할당된 명령들의 수행 시간을 합산하고, 상기 쓰기 명령을 상기 복수의 뱅크들 중에서 합산 값이 가장 작은 뱅크에 할당하는 메모리 컨트롤러.
9. The method of claim 8,
When the command is a write command,
Wherein the allocation module sums the execution time of instructions allocated to each of the plurality of banks in the instruction queue and allocates the write instruction to a bank having the smallest sum value among the plurality of banks.
상기 명령이 읽기 명령일 때,
상기 할당 모듈은 상기 읽기 명령을 상기 복수의 뱅크들 중에서 상기 읽기 명령에 해당하는 뱅크에 가장 높은 순위로 할당하는 메모리 컨트롤러.
9. The method of claim 8,
When the command is a read command,
Wherein the allocation module allocates the read command to the bank corresponding to the read command in the highest order among the plurality of banks.
상기 명령 큐는 상기 복수의 뱅크들 각각에 대응되도록 구현되는 메모리 컨트롤러.
9. The method of claim 8,
Wherein the instruction queue is implemented to correspond to each of the plurality of banks.
상기 명령 큐는 상기 할당 모듈의 내부에 구현되는 메모리 컨트롤러.
9. The method of claim 8,
Wherein the instruction queue is implemented within the allocation module.
상기 복수의 뱅크들을 포함하는 메모리 장치를 포함하는 데이터 저장 장치.
The memory controller of claim 8; And
And a memory device including the plurality of banks.
상기 데이터 저장 장치는 솔리드 스테이트 드라이브(solid state drive(SSD)), 유니버셜 플래시 스토리지(universal flash storage(UFS)), 플래시 USB 드라이브(flash universal serial bus drive), 또는 임베디드 멀티미디어 카드(embedded multimedia card(eMMC)) 인 데이터 저장 장치.
14. The method of claim 13,
The data storage device may be a solid state drive (SSD), a universal flash storage (UFS), a flash universal serial bus drive, or an embedded multimedia card (eMMC) ).
상기 호스트를 포함하는 전자 시스템.
The memory controller of claim 8; And
And the host.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020140169899A KR20160065644A (en) | 2014-12-01 | 2014-12-01 | Memory controller, system including the same, and method thereof |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020140169899A KR20160065644A (en) | 2014-12-01 | 2014-12-01 | Memory controller, system including the same, and method thereof |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20160065644A true KR20160065644A (en) | 2016-06-09 |
Family
ID=56138910
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020140169899A KR20160065644A (en) | 2014-12-01 | 2014-12-01 | Memory controller, system including the same, and method thereof |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR20160065644A (en) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20190097712A (en) * | 2018-02-13 | 2019-08-21 | 에스케이하이닉스 주식회사 | Memory system and operating method thereof |
US10691624B2 (en) | 2018-05-17 | 2020-06-23 | Samsung Electronics Co., Ltd. | Universal flash storage, electronic device capable of connecting to a plurality type of memory devices and method thereof |
-
2014
- 2014-12-01 KR KR1020140169899A patent/KR20160065644A/en not_active Application Discontinuation
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20190097712A (en) * | 2018-02-13 | 2019-08-21 | 에스케이하이닉스 주식회사 | Memory system and operating method thereof |
US10691624B2 (en) | 2018-05-17 | 2020-06-23 | Samsung Electronics Co., Ltd. | Universal flash storage, electronic device capable of connecting to a plurality type of memory devices and method thereof |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11086537B2 (en) | Method and system to perform urgency level garbage collection based on write history of memory blocks | |
KR102164630B1 (en) | Memory controller, and operation method of the memory controller | |
US9690700B2 (en) | Host-driven garbage collection | |
US9460006B2 (en) | Nonvolatile memory system, system including the same, and method of adaptively adjusting user storage region in the same | |
US9244619B2 (en) | Method of managing data storage device and data storage device | |
CN107179996B (en) | Data storage device and method of operating the same | |
KR101467939B1 (en) | Variable overprovisioning for nonvolatile storage | |
CN109426449B (en) | Memory system and operating method thereof | |
US20140013032A1 (en) | Method and apparatus for controlling writing data in storage unit based on nand flash memory | |
US10817418B2 (en) | Apparatus and method for checking valid data in memory system | |
KR102378295B1 (en) | storage cache management | |
KR102595233B1 (en) | Data processing system and operating method thereof | |
CN112445716A (en) | Remapping techniques for NAND storage | |
US10957411B2 (en) | Apparatus and method for managing valid data in memory system | |
US20140372674A1 (en) | Memory controller, operating method, and memory system including same | |
KR102480016B1 (en) | Non-volatile memory system using a plurality of mapping units and Operating method thereof | |
KR20230040057A (en) | Apparatus and method for improving read performance in a system | |
KR20160065661A (en) | Memory controller, system including the same, and method thereof | |
KR20160065644A (en) | Memory controller, system including the same, and method thereof | |
KR102425470B1 (en) | Data storage device and operating method thereof | |
CN109407968B (en) | Memory system and operating method thereof | |
KR20160065659A (en) | Memory controller, system including the same, and method thereof | |
US20240319894A1 (en) | Storage device for managing buffer storing a logical to physical mapping unit, and method for operating the same | |
US20240143216A1 (en) | Storage device managing metadata memory blocks each storing metadata units, and method of operating the same | |
KR102717019B1 (en) | Memory controller and operating method thereof |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
WITN | Withdrawal due to no request for examination |