KR20140142530A - Data storage device and method of scheduling command thereof - Google Patents

Data storage device and method of scheduling command thereof Download PDF

Info

Publication number
KR20140142530A
KR20140142530A KR1020130064069A KR20130064069A KR20140142530A KR 20140142530 A KR20140142530 A KR 20140142530A KR 1020130064069 A KR1020130064069 A KR 1020130064069A KR 20130064069 A KR20130064069 A KR 20130064069A KR 20140142530 A KR20140142530 A KR 20140142530A
Authority
KR
South Korea
Prior art keywords
instructions
bank
time
commands
instruction
Prior art date
Application number
KR1020130064069A
Other languages
Korean (ko)
Other versions
KR102079939B1 (en
Inventor
왕홍문
류준길
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020130064069A priority Critical patent/KR102079939B1/en
Publication of KR20140142530A publication Critical patent/KR20140142530A/en
Application granted granted Critical
Publication of KR102079939B1 publication Critical patent/KR102079939B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • G06F9/4831Task transfer initiation or dispatching by interrupt, e.g. masked with variable priority
    • G06F9/4837Task transfer initiation or dispatching by interrupt, e.g. masked with variable priority time dependent
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/18Handling requests for interconnection or transfer for access to memory bus based on priority control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

According to the present invention, a command scheduling method of a data storage device, including multiple non-volatile memory devices accessed by each bank unit and a memory controller electrically connected through multiple channels and the non-volatile memory devices, includes: a step of allocating access commands to the non-volatile memory devices by bank unit, a step of determining each type of the access commands, a step of determining at least two commands continuously executed for a bank without idle time based on prewritten information, and a step of scheduling the commands continuously executed for the bank. The prewritten information includes information about the number of commands continuously executed according to each type of the access commands.

Description

데이터 저장 장치 및 그것의 명령어 스케줄링 방법{DATA STORAGE DEVICE AND METHOD OF SCHEDULING COMMAND THEREOF}≪ Desc / Clms Page number 1 > DATA STORAGE DEVICE AND METHOD OF SCHEDULING COMMAND THEREOF

본 발명은 반도체 메모리 장치에 관한 것으로, 좀 더 구체적으로는 데이터 저장 장치 및 그것의 명령어 스케줄링 방법에 관한 것이다.The present invention relates to semiconductor memory devices, and more particularly, to a data storage device and a method for scheduling instructions thereof.

반도체 메모리 장치는 크게 휘발성 반도체 메모리 장치(Volatile semiconductor memory device)와 불휘발성 반도체 메모리 장치(Non-volatile semiconductor memory device)로 구분될 수 있다. 휘발성 반도체 메모리 장치는 읽고 쓰는 속도가 빠르지만 전원 공급이 끊기면 저장된 내용이 사라져 버리는 단점이 있다. 반면에 불휘발성 반도체 메모리 장치는 전원 공급이 중단되더라도 그 내용을 보존한다. 그러므로 불휘발성 반도체 메모리 장치는 전원이 공급되었는지의 여부에 관계 없이 보존되어야 할 내용을 기억시키는 데 쓰인다.The semiconductor memory device may be classified into a volatile semiconductor memory device and a non-volatile semiconductor memory device. The volatile semiconductor memory device has a drawback that the read and write speed is fast but the stored contents disappear when the power supply is interrupted. On the other hand, the nonvolatile semiconductor memory device preserves its contents even if the power supply is interrupted. Therefore, a nonvolatile semiconductor memory device is used to store contents to be stored regardless of whether power is supplied or not.

불휘발성 반도체 메모리 장치(예를 들면, 플래시 메모리)는 전원의 차단시에도 저장된 데이터를 유지할 수 있기 때문에, 컴퓨터 및 메모리 카드 등에 널리 사용되고 있다. 최근 들어서는, 휴대폰, PDA, 디지털 카메라 등과 같은 모바일 기기의 사용이 급증함에 따라, 하드 디스크 드라이브(HDD) 대신 불휘발성 반도체 메모리 장치가 저장 장치로서 사용되고 있다. 불휘발성 반도체 메모리 장치를 저장 매체로 사용하는 장치를 솔리드 스테이트 드라이브(Solid State Drive) 또는 솔리드 스테이트 디스크(Solid State Disk)라고도 한다. 이하에서는 간단히 SSD라 칭하기로 한다.A nonvolatile semiconductor memory device (for example, a flash memory) is widely used in computers, memory cards and the like because it can retain stored data even when the power is turned off. Recently, as the use of mobile devices such as a mobile phone, a PDA, a digital camera and the like is rapidly increasing, a nonvolatile semiconductor memory device is used as a storage device instead of a hard disk drive (HDD). An apparatus using a nonvolatile semiconductor memory device as a storage medium is also referred to as a solid state drive or a solid state disk. Hereinafter, it will be simply referred to as an SSD.

저전력·대용량화의 추세에 따라 SSD의 저장 매체로 사용되는 불휘발성 메모리 장치는 큰 저장 용량을 제공해야 한다. 저장 용량의 확장을 위하여 SSD에 장착되는 불휘발성 메모리 장치들의 수를 증가시키거나, 대용량의 불휘발성 메모리 장치를 사용할 수 있을 것이다. SSD는 이러한 대용량의 불휘발성 메모리 장치를 효율적으로 관리하기 위하여 멀티 채널 인터리빙(Multi Channel Interleaving) 방식을 사용할 수 있다. 멀티 채널 인터리빙(Multi Channel Interleaving) 방식에 따라 SSD는 불휘발성 메모리 장치를 복수의 채널로 나누어 각각의 채널에서 독립적으로 명령을 수행한다. 멀티 채널 인터리빙(Multi Channel Interleaving) 방식으로 SSD가 가장 효율적으로 운용되기 위해서는 쉬고 있는 채널 없이 모든 채널에서 동작이 수행되고 있어야 할 것이다.Due to the trend of low power and large capacity, nonvolatile memory devices used as SSD storage media must provide large storage capacity. It is possible to increase the number of nonvolatile memory devices mounted on the SSD or to use a large capacity nonvolatile memory device for expanding the storage capacity. In order to efficiently manage such large capacity nonvolatile memory devices, SSD can use a multi-channel interleaving method. According to a multi-channel interleaving scheme, an SSD divides a non-volatile memory device into a plurality of channels and independently executes commands on each channel. In order to operate the SSD most efficiently by multi-channel interleaving, all channels should be operated without a resting channel.

본 발명의 목적은 멀티 채널 인터리빙(Multi Channel Interleaving) 방식을 사용하는 데이터 저장 장치의 성능을 향상시키기 위하여 복수의 명령들을 함께 스케줄링 하는 데이터 저장 장치 및 그것의 명령어 스케줄링 방법을 제공하는 데 있다.It is an object of the present invention to provide a data storage device and a command scheduling method thereof for simultaneously scheduling a plurality of instructions in order to improve the performance of a data storage device using a multi-channel interleaving method.

상기 목적을 달성하기 위한 본 발명에 따른 각각 뱅크 단위로 액세스 되는 복수의 불휘발성 메모리 장치들 및 상기 복수의 불휘발성 메모리 장치들과 복수의 채널들을 통해서 전기적으로 연결되는 메모리 컨트롤러를 포함하는 데이터 저장 장치의 명령어 스케줄링 방법은 액세스 명령들을 상기 뱅크 단위로 상기 복수의 불휘발성 메모리 장치들에 할당하는 단계, 상기 액세스 명령들 각각의 종류를 판별하는 단계, 미리 작성된 정보를 기초로 상기 뱅크에 대하여 유휴 시간 없이 연속적으로 수행될 적어도 2개의 명령들을 결정하는 단계, 그리고 상기 뱅크에 대하여 상기 연속적으로 수행될 적어도 2개의 명령들을 스케줄링 하는 단계를 포함하고, 상기 미리 작성된 정보는 상기 액세스 명령들 각각의 종류에 따라 연속적으로 수행될 명령들의 개수에 대한 정보를 포함한다.According to an aspect of the present invention, there is provided a data storage device including a plurality of nonvolatile memory devices accessed on a bank-by-bank basis, and a memory controller electrically connected to the plurality of nonvolatile memory devices through a plurality of channels, Comprising the steps of: allocating access instructions to the plurality of nonvolatile memory devices on a bank-by-bank basis; determining the type of each of the access instructions; determining, based on previously written information, The method comprising the steps of: determining at least two instructions to be successively executed, and scheduling at least two instructions to be successively performed on the bank, wherein the pre- For the number of instructions to be executed Information.

또한, 본 발명에 따른 각각 뱅크 단위로 액세스 되는 복수의 불휘발성 메모리 장치들 및 상기 복수의 불휘발성 메모리 장치들과 복수의 채널들을 통해서 전기적으로 연결되는 메모리 컨트롤러를 포함하는 데이터 저장 장치의 명령어 스케줄링 방법은 액세스 명령들을 상기 뱅크 단위로 상기 복수의 불휘발성 메모리 장치들에 할당하는 단계, 상기 액세스 명령들 각각의 수행 시간을 계산하는 단계, 상기 액세스 명령들의 수행 시간 합계와 오버헤드 시간을 비교하여 상기 뱅크에 대하여 유휴 시간 없이 연속적으로 수행될 적어도 2개의 명령들을 결정하는 단계, 그리고 상기 뱅크에 대하여 상기 연속적으로 수행될 적어도 2개의 명령들을 스케줄링 하는 단계를 포함한다.Also, there is provided a method of scheduling instructions of a data storage device, comprising a plurality of non-volatile memory devices accessed on a bank-by-bank basis and a memory controller electrically connected to the plurality of non-volatile memory devices through a plurality of channels, Assigning access instructions to the plurality of non-volatile memory devices on a bank-by-bank basis, calculating a run time of each of the access instructions, comparing an execution time sum of the access instructions with an overhead time, Determining at least two instructions to be successively performed with no idle time for the bank, and scheduling the at least two instructions to be successively performed on the bank.

또한, 본 발명에 따른 데이터 저장 장치는 각각 뱅크 단위로 액세스 되는 복수의 불휘발성 메모리 장치들, 그리고 상기 복수의 불휘발성 메모리 장치들과 복수의 채널들을 통해서 전기적으로 연결되며, 액세스 명령들을 상기 뱅크 단위로 할당하는 메모리 컨트롤러를 포함하되, 상기 메모리 컨트롤러는 상기 액세스 명령들의 종류를 판별하고, 미리 작성된 정보에 기초하여 상기 뱅크에 대하여 유휴 시간 없이 연속적으로 수행될 적어도 2개의 명령들을 스케줄링 하고, 상기 미리 작성된 정보는 상기 액세스 명령들의 종류에 따라 상기 연속적으로 수행될 적어도 2개의 명령들의 개수에 대한 정보를 포함한다.According to another aspect of the present invention, there is provided a data storage device including a plurality of nonvolatile memory devices, each of which is accessed on a bank basis, and a plurality of nonvolatile memory devices electrically connected to the plurality of nonvolatile memory devices through a plurality of channels, Wherein the memory controller identifies the type of the access instructions, schedules at least two instructions to be continuously executed with respect to the bank on the basis of the previously prepared information, The information includes information on the number of at least two instructions to be successively executed according to the type of the access instructions.

이상과 같은 본 발명의 실시 예에 따르면, 데이터 저장 장치의 각 채널에서 수행 시간이 오버헤드 시간(Overhead Time)보다 짧은 복수의 명령들을 함께 스케줄링 하여 각 채널의 유휴 시간(Idle Time)을 최소화하는 데이터 저장 장치 및 그것의 명령어 스케줄링 방법을 제공할 수 있다.According to the embodiment of the present invention described above, data for minimizing the idle time of each channel by scheduling a plurality of commands having a shorter execution time than the overhead time in each channel of the data storage device A storage device and its instruction scheduling method.

도 1은 본 발명의 실시 예에 따른 데이터 저장 장치를 보여주는 구성도이다.
도 2는 도 1의 메모리 컨트롤러를 자세히 보여주는 구성도이다.
도 3은 도 2의 플래시 인터페이스와 연결되는 복수의 플래시 메모리들을 자세히 보여주는 구성도이다.
도 4a는 도 1의 데이터 저장 장치의 명령 수행 과정을 보여주는 타이밍도이다.
도 4b는 도 1의 데이터 저장 장치의 다른 명령 수행 과정을 보여주는 타이밍도이다.
도 5는 본 발명의 실시 예에 따른 데이터 저장 장치의 제어 방법을 보여주는 순서도이다.
도 6은 본 발명의 다른 실시 예에 따른 데이터 저장 장치의 제어 방법을 보여주는 순서도이다.
1 is a block diagram illustrating a data storage device according to an embodiment of the present invention.
FIG. 2 is a block diagram showing the memory controller of FIG. 1 in detail.
FIG. 3 is a configuration diagram showing a plurality of flash memories connected to the flash interface of FIG. 2 in detail.
4A is a timing diagram illustrating an instruction execution process of the data storage device of FIG.
4B is a timing diagram illustrating another instruction execution process of the data storage device of FIG.
5 is a flowchart illustrating a method of controlling a data storage device according to an embodiment of the present invention.
6 is a flowchart illustrating a method of controlling a data storage device according to another embodiment of the present invention.

앞의 일반적인 설명 및 다음의 상세한 설명 모두 예시적이라는 것이 이해되어야 하며, 청구된 발명의 부가적인 설명이 제공되는 것으로 여겨져야 한다. 참조부호들이 본 발명의 바람직한 실시 예들에 상세히 표시되어 있으며, 그것의 예들이 참조 도면들에 표시되어 있다. 가능한 어떤 경우에도, 동일한 참조 번호들이 동일한 또는 유사한 부분을 참조하기 위해서 설명 및 도면들에 사용된다.It is to be understood that both the foregoing general description and the following detailed description are exemplary and should provide a further description of the claimed invention. Reference numerals are shown in detail in the preferred embodiments of the present invention, examples of which are shown in the drawings. Wherever possible, the same reference numbers are used in the description and drawings to refer to the same or like parts.

이하에서는, 플래시 메모리(Flash Memory)가 본 발명의 특징 및 기능을 설명하기 위한 저장 장치 또는 전자 장치의 한 예로서 사용될 것이다. 하지만, 이 기술 분야에 정통한 사람은 여기에 기재된 내용에 따라 본 발명의 다른 이점들 및 성능을 쉽게 이해할 수 있을 것이다. 또한, 본 발명은 다른 실시 예들을 통해 구현되거나 적용될 수 있을 것이다. 게다가, 상세한 설명은 본 발명의 범위, 기술적 사상 그리고 다른 목적으로부터 상당히 벗어나지 않고, 관점 및 응용에 따라 수정되거나 변경될 수 있다.Hereinafter, a flash memory will be used as an example of a storage device or an electronic device for explaining the features and functions of the present invention. However, those skilled in the art will readily appreciate other advantages and capabilities of the present invention in accordance with the teachings herein. Further, the present invention may be implemented or applied through other embodiments. In addition, the detailed description may be modified or changed in accordance with the aspects and applications without departing substantially from the scope, technical ideas and other objects of the present invention.

도 1은 본 발명의 실시 예에 따른 데이터 저장 장치를 보여주는 구성도이다. 도 1을 참조하면, 데이터 저장 장치(100)는 메모리의 동작을 전반적으로 제어하는 메모리 컨트롤러(110), 송수신 되는 데이터를 임시로 저장하는 버퍼 메모리(120) 및 복수의 채널을 통하여 메모리 컨트롤러(110)와 전기적으로 연결되는 저장 매체(130)를 포함한다. 예를 들어, 데이터 저장 장치(100)는 멀티 채널 인터리빙(Multi Channel Interleaving) 방식을 사용하는 SSD, 메모리 카드 등 다양한 저장 장치들을 포함할 수 있다.1 is a block diagram illustrating a data storage device according to an embodiment of the present invention. 1, the data storage device 100 includes a memory controller 110 for controlling the operation of a memory, a buffer memory 120 for temporarily storing data to be transmitted and received, and a memory controller 110 And a storage medium 130 electrically connected to the storage medium 130. For example, the data storage device 100 may include various storage devices such as an SSD and a memory card using a multi-channel interleaving scheme.

메모리 컨트롤러(110)는 호스트(Host)로부터 복수의 명령들을 수신한다. 호스트(Host)로부터 수신되는 명령들은 저장 매체(130)에 접근해야 하는 액세스 명령(Access Command)들을 포함한다. 예를 들어, 액세스 명령(Access Command)은 읽기(Read) 또는 쓰기(Write) 명령 등을 포함한다. 액세스 명령(Access Command)들을 수신하면, 메모리 컨트롤러(110)는 액세스 명령(Access Command)들을 채널별(CH1~CHn)로 할당한다. 메모리 컨트롤러(110)는 각 채널(CH1~CHn)에 할당된 명령들을 스케줄링 한다. 각 채널(CH1~CHn)에서 스케줄링 된 명령들은 스케줄링 순서에 따라 독립적으로 수행된다.The memory controller 110 receives a plurality of commands from a host. The commands received from the host include access commands that require access to the storage medium 130. For example, an access command includes a read command or a write command. Upon receiving the access commands, the memory controller 110 allocates access commands to the channels CH1 to CHn. The memory controller 110 schedules commands assigned to the respective channels CH1 to CHn. The commands scheduled in the respective channels CH1 to CHn are independently performed according to the scheduling order.

버퍼 메모리(120)는 호스트(Host)로부터 수신되는 데이터 또는 호스트(Host)로 전송되는 데이터를 임시로 저장한다. 버퍼 메모리(120)는 휘발성 메모리(예를 들면 SRAM 또는 DRAM)로 구현될 수 있다. 또한, 버퍼 메모리(120)는 데이터를 임시로 저장할 수 있는 어떠한 장치로도 구현될 수 있다.The buffer memory 120 temporarily stores data received from a host or data transmitted to a host. The buffer memory 120 may be implemented with volatile memory (e.g., SRAM or DRAM). In addition, the buffer memory 120 may be implemented as any device capable of temporarily storing data.

저장 매체(130)는 불휘발성 메모리 장치를 포함한다. 이하에서 저장 매체(130)는 플래시 메모리(Flash Memory)로 구성되는 경우에 대해 예시적으로 설명될 것이다. 그러나 본 발명의 저장 매체(130)에 적용되는 불휘발성 메모리 장치는 특정 종류 및 특정 형태에만 국한되지 않고 다양한 형태로 구성될 수 있다. 예를 들면, 저장 매체(130)에 적용되는 불휘발성 메모리 장치는 플래시 메모리(Flash Memory)뿐만 아니라 MRAM, PRAM 등의 불휘발성 메모리를 포함할 수 있다.The storage medium 130 includes a non-volatile memory device. Hereinafter, a case where the storage medium 130 is composed of a flash memory will be exemplarily described. However, the nonvolatile memory device applied to the storage medium 130 of the present invention is not limited to a specific type and a specific type, and may be configured in various forms. For example, the nonvolatile memory device applied to the storage medium 130 may include a nonvolatile memory such as an MRAM, a PRAM, as well as a flash memory.

저장 매체(130)는 복수의 플래시 메모리(Flash Memory)들을 포함한다. 제 1 플래시 메모리들(131)은 제 1 채널(CH1)을 통하여 메모리 컨트롤러(110)와 연결된다. 제 2 플래시 메모리들(132)은 제 2 채널(CH2)을 통하여 메모리 컨트롤러(110)와 연결된다. 제 n 플래시 메모리들(133)은 제 n 채널(CHn)을 통하여 메모리 컨트롤러(110)와 연결된다. 각 채널(CH1~CHn)의 플래시 메모리들(131~133)은 스케줄링 순서에 따라 독립적으로 스케줄링 된 명령들을 수행한다.The storage medium 130 includes a plurality of flash memories. The first flash memories 131 are connected to the memory controller 110 through the first channel CH1. The second flash memories 132 are connected to the memory controller 110 through the second channel CH2. The nth flash memories 133 are connected to the memory controller 110 through the n-th channel CHn. The flash memories 131 to 133 of the channels CH1 to CHn execute independently scheduled commands according to the scheduling order.

도 2는 도 1의 메모리 컨트롤러를 자세히 보여주는 구성도이다. 도 2를 참조하면, 메모리 컨트롤러(110)는 프로세싱 유닛(111), 동작 메모리(112), 호스트 인터페이스(113), 버퍼 인터페이스(114) 및 플래시 인터페이스(115)를 포함할 수 있다. 하지만, 메모리 컨트롤러(110)의 구성 요소들이 언급된 구성 요소들에 국한되지 않음은 잘 이해될 것이다. 예를 들면, 메모리 컨트롤러(110)는 초기 부팅 동작에 필요한 코드 데이터를 저장하는 ROM, 손상된 데이터를 복구하는 에러 정정 유닛(ECC) 등이 더 포함될 수 있다.FIG. 2 is a block diagram showing the memory controller of FIG. 1 in detail. 2, the memory controller 110 may include a processing unit 111, an operation memory 112, a host interface 113, a buffer interface 114 and a flash interface 115. [ However, it will be appreciated that the components of the memory controller 110 are not limited to the components mentioned. For example, the memory controller 110 may further include a ROM for storing code data necessary for the initial booting operation, an error correction unit (ECC) for recovering damaged data, and the like.

프로세싱 유닛(111)은 중앙 처리 장치(CPU) 또는 마이크로프로세서(Microprocessor)를 포함한다. 프로세싱 유닛(111)은 메모리 컨트롤러(110)의 동작을 전반적으로 제어한다. 프로세싱 유닛(111)은 메모리 컨트롤러(110)를 제어하기 위한 펌웨어(Firmware)를 구동하도록 구성된다. 이러한 펌웨어(Firmware)는 동작 메모리(112)에 로딩 되어 구동된다. 프로세싱 유닛(111)은 호스트(Host)로부터 수신된 액세스 명령(Access Command)들을 각 채널(CH1~CHn)에 할당한다. The processing unit 111 includes a central processing unit (CPU) or a microprocessor. The processing unit 111 controls the operation of the memory controller 110 as a whole. The processing unit 111 is configured to drive firmware for controlling the memory controller 110. This firmware is loaded into the operation memory 112 and is driven. The processing unit 111 assigns access commands received from a host to each of the channels CH1 to CHn.

동작 메모리(112)에는 메모리 컨트롤러(110)를 제어하기 위한 펌웨어(Firmware) 및 데이터가 저장된다. 저장된 펌웨어(Firmware) 및 데이터는 프로세싱 유닛(111)에 의해 구동된다. 동작 메모리(112)는 캐시(Cache), DRAM, SRAM, PRAM, ROM, 플래시 메모리 장치들 중 적어도 하나를 포함한다. 동작 메모리(112)에는 펌웨어(Firmware)인 명령 스케줄러(Command Scheduler)가 로딩 되어 구동된다.In the operation memory 112, firmware and data for controlling the memory controller 110 are stored. The stored firmware and data are driven by the processing unit 111. [ The operation memory 112 includes at least one of a cache, DRAM, SRAM, PRAM, ROM, and flash memory devices. The operation memory 112 is loaded with a command scheduler which is a firmware.

명령 스케줄러(Command Scheduler)는 프로세싱 유닛(111)에 의해 각 채널(CH1~CHn)에 할당된 명령들을 채널별(CH1~CHn)로 스케줄링 한다. 명령 스케줄러(Command Scheduler)는 각 채널(CH1~CHn)에 할당된 명령들의 수행 시간(Operation time) 및 리소스(Resource, 예를 들어 명령 대기 큐의 메모리 용량)의 크기를 고려하여 한번에 스케줄링 될 명령들의 개수를 결정한다. 이에 관하여는 도 3에서 자세히 설명될 것이다.The command scheduler schedules commands assigned to the channels CH1 to CHn by the processing unit 111 on a channel-by-channel basis (CH1 to CHn). The command scheduler determines the number of instructions to be scheduled at one time in consideration of the operation time of the commands allocated to the channels CH1 to CHn and the size of the resources (e.g., the memory capacity of the command wait queue) Determine the number. This will be described in detail in Fig.

호스트 인터페이스(113)는 호스트(Host)와 메모리 컨트롤러(110) 사이의 인터페이스를 제공한다. 호스트(Host)와 메모리 컨트롤러(110)는 다양한 표준 인터페이스들 중 하나를 통해 연결될 수 있다. 또는 호스트(Host)와 메모리 컨트롤러(110)는 다양한 표준 인터페이스들 중 복수의 인터페이스들을 통해 연결될 수 있다. 여기에서, 표준 인터페이스들은 ATA(Advanced Technology Attachment), SATA(Serial ATA), e-SATA(external SATA), SCSI(Small Computer Small Interface), SAS(Serial Attached SCSI), PCI(Peripheral Component Interconnection), PCI-E(PCI Express), USB(Universal Serial Bus), IEEE 1394, NVMe(Non-volatile Memory Express), Card 인터페이스 등과 같은 다양한 인터페이스 방식들을 포함한다.The host interface 113 provides an interface between the host (Host) and the memory controller 110. The host and the memory controller 110 may be connected through one of a variety of standard interfaces. Or the host and the memory controller 110 may be connected through a plurality of interfaces among various standard interfaces. Here, the standard interfaces may include at least one of Advanced Technology Attachment (ATA), Serial ATA (SATA), External SATA (SATA), Small Computer Small Interface (SCSI), Serial Attached SCSI (SAS), Peripheral Component Interconnection -E (PCI Express), Universal Serial Bus (USB), IEEE 1394, Non-volatile Memory Express (NVMe), Card interface and the like.

버퍼 인터페이스(114)는 프로세싱 유닛(111)의 제어에 응답해서 버퍼 메모리(120, 도 1 참조)의 액세스 동작(예를 들면, 읽기/기록/소거 동작들)을 제어한다. 버퍼 메모리(120)는 휘발성 메모리(예를 들면, SRAM 또는 DRAM)로 구현될 수 있다. 버퍼 메모리(120)는 저장 매체(130)와 호스트(Host) 사이에서 전달되는 데이터를 임시적으로 저장하는 기능을 수행한다.The buffer interface 114 controls access operations (e.g., read / write / erase operations) of the buffer memory 120 (see FIG. 1) in response to control of the processing unit 111. The buffer memory 120 may be implemented with volatile memory (e.g., SRAM or DRAM). The buffer memory 120 temporarily stores data transferred between the storage medium 130 and a host.

플래시 인터페이스(115)는 복수의 플래시 메모리들(131∼133)과 복수의 채널들(CH1∼CHn)을 통해 데이터를 주고받는다. 각 채널(CH1∼CHn)에는 복수의 플래시 메모리들(131~133)이 전기적으로 연결될 수 있다. 플래시 인터페이스(115)는 각 채널(CH1~CHn)에 연결되는 명령 대기 큐(Command Waiting Queue)들을 포함한다. 명령 스케줄러(Command Scheduler)는 각 채널(CH1~CHn)에 할당된 명령들을 각 채널(CH1~CHn)의 명령 대기 큐(Command Waiting Queue)에 스케줄링 한다. 스케줄링 된 명령들은 각 채널(CH1~CHn)의 복수의 플래시 메모리들(131~133)에서 독립적으로 수행된다.The flash interface 115 exchanges data with a plurality of flash memories 131 to 133 through a plurality of channels CH1 to CHn. A plurality of flash memories 131 to 133 may be electrically connected to each of the channels CH1 to CHn. The flash interface 115 includes Command Waiting Queues connected to the respective channels CH1 to CHn. The command scheduler schedules the commands allocated to the channels CH1 to CHn to the command waiting queues of the channels CH1 to CHn. The scheduled commands are independently performed in the plurality of flash memories 131 to 133 of the respective channels CH1 to CHn.

도 3은 도 2의 플래시 인터페이스와 연결되는 복수의 플래시 메모리들을 자세히 보여주는 구성도이다. 도 3을 참조하면, 플래시 인터페이스(115)는 복수의 명령 대기 큐들(Queue 1~Queue n)을 포함한다. 복수의 명령 대기 큐들(Queue 1~Queue n)은 복수의 채널들(CH1~CHn)을 통해서 복수의 플래시 메모리들(131~133)과 연결된다.FIG. 3 is a configuration diagram showing a plurality of flash memories connected to the flash interface of FIG. 2 in detail. Referring to FIG. 3, the flash interface 115 includes a plurality of command wait queues (Queue 1 ~ Queue n). The plurality of command wait queues (Queue 1 to Queue n) are connected to the plurality of flash memories 131 to 133 through the plurality of channels CH1 to CHn.

복수의 명령 대기 큐들(Queue 1~Queue n)은 휘발성 메모리(예를 들면, SRAM 또는 DRAM)로 구현될 수 있다. 복수의 명령 대기 큐들(Queue 1~Queue n)은 각 채널(CH1~CHn)과 독립적으로 연결된다. 제 1 명령 대기 큐(Queue 1)는 제 1 채널(CH1)을 통하여 제 1 플래시 메모리들(131)과 연결된다. 제 2 명령 대기 큐(Queue 2)는 제 2 채널(CH2)을 통하여 제 2 플래시 메모리들(132)과 연결된다. 제 n 명령 대기 큐(Queue n)는 제 n 채널(CHn)을 통하여 제 n 플래시 메모리들(133)과 연결된다. 복수의 명령 대기 큐들(Queue 1~Queue n)에는 스케줄링 되는 명령들 및 그와 관련된 정보들이 저장된다.The plurality of command wait queues (Queue 1 to Queue n) may be implemented with volatile memory (e.g., SRAM or DRAM). The plurality of command wait queues (Queue 1 to Queue n) are independently connected to the respective channels (CH1 to CHn). The first command wait queue (Queue 1) is connected to the first flash memories 131 through the first channel CH1. The second command wait queue (Queue 2) is connected to the second flash memories 132 through the second channel (CH2). The n-th command wait queue (Queue n) is connected to the n-th flash memories 133 via the n-th channel CHn. The plurality of command wait queues (Queue 1 to Queue n) stores the commands to be scheduled and the information associated therewith.

복수의 플래시 메모리들(131~133)은 복수의 뱅크들(Bank 1~Bank m)을 포함할 수 있다. 본 발명에서 뱅크(Bank)는 하나의 채널 내에서 명령들을 인터리빙(Interleaving)하여 동작하는 단위를 말한다. 하나의 뱅크(Bank)는 하나의 플래시 메모리(Flash Memory)로 구현될 수 있고, 또는 복수의 플래시 메모리(Flash Memory)들로 구현될 수도 있다.The plurality of flash memories 131 to 133 may include a plurality of banks (Bank 1 to Bank m). In the present invention, a bank is a unit that operates by interleaving commands in one channel. One bank may be implemented as a single flash memory or a plurality of flash memories.

프로세싱 유닛(111, 도 2 참조)은 호스트(Host)로부터 수신된 액세스 명령(Access Command)들을 각 채널(CH1~CHn)에 할당한다. 각 채널(CH1~CHn)에 명령들이 할당될 때, 명령들의 수행될 채널 및 뱅크(Bank)가 결정된다. 명령 스케줄러(Command Scheduler)는 할당된 명령들을 채널별(CH1~CHn)로 스케줄링 한다. 예를 들면, 명령 스케줄러(Command Scheduler)는 제 1 채널(CH1)을 선택한다. 명령 스케줄러(Command Scheduler)는 제 1 플래시 메모리들(131)의 제 1 뱅크(Bank 1)에서 수행될 첫 번째 명령부터 제 m 뱅크(Bank m)에서 수행될 첫 번째 명령까지를 제 1 명령 대기 큐(Queue 1)에 스케줄링 한다. 제 1 채널(CH1)의 첫 번째 명령들에 대한 스케줄링이 완료되면, 명령 스케줄러(Command Scheduler)는 제 2 채널(CH2)을 선택한다. 명령 스케줄러(Command Scheduler)는 제 2 플래시 메모리들(132)의 뱅크들(Bank 1~Bank m)에서 수행될 첫 번째 명령들을 제 1 채널(CH1)과 같은 방법으로 제 2 명령 대기 큐(Queue 2)에 스케줄링 한다. 이와 같은 방법으로 제 n 채널(CHn)까지 각 뱅크(Bank)에서 수행될 첫 번째 명령들이 스케줄링 된 후, 명령 스케줄러(Command Scheduler)는 제 1 명령 대기 큐(Queue 1)에 첫 번째 명령들과 같은 방법으로 두 번째 명령들을 스케줄링 한다. 각 채널(CH1~CHn)의 명령 대기 큐(Queue 1~Queue n)에 스케줄링 된 명령들은 스케줄링 순서에 따라 각 채널(CH1~CHn)의 각 뱅크(Bank 1~Bank m)에서 독립적으로 수행된다.The processing unit 111 (see FIG. 2) assigns access commands received from a host to each of the channels CH1 to CHn. When the commands are assigned to the respective channels CH1 to CHn, the channels and banks to be executed of the commands are determined. The command scheduler schedules the allocated commands on a channel-by-channel basis (CH1 to CHn). For example, the command scheduler selects the first channel CH1. The command scheduler receives a command from the first command to be executed in the first bank (Bank 1) of the first flash memories 131 to the first command to be executed in the m-th bank (Bank m) (Queue 1). When the scheduling of the first commands of the first channel CH1 is completed, the command scheduler selects the second channel CH2. The Command Scheduler transmits the first instructions to be executed in the banks (Bank 1 to Bank m) of the second flash memories 132 to the second command wait queue (Queue 2) in the same manner as the first channel ). In this way, after the first instructions to be executed in each bank up to the n-th channel CHn are scheduled, the command scheduler adds the same instructions as the first instructions to the first command wait queue (Queue 1) The second instructions are scheduled. The instructions scheduled in the command wait queues (Queue 1 to Queue n) of the channels CH1 to CHn are independently performed in the respective banks (Bank 1 to Bank m) of the channels CH1 to CHn according to the scheduling order.

이상의 스케줄링 방법에 따르면 제 1 명령 대기 큐(Queue 1)에 스케줄링 될 두 번째 명령들은 모든 채널들(CH1~CHn)에서 첫 번째 명령들의 스케줄링이 완료된 이후에 스케줄링 될 수 있다. 만약 제 1 채널(CH1)의 제 1 뱅크(Bank 1)에서 수행된 첫 번째 명령의 수행 시간이 너무 짧은 경우, 제 1 채널(CH1)의 제 1 뱅크(Bank 1)에 두 번째 명령이 수행되기 전에 첫 번째 명령은 완료될 수 있다. 그러면 제 1 채널(CH1)의 제 1 뱅크(Bank 1)는 두 번째 명령이 수행될 때까지 동작을 쉬게 된다. 멀티 채널 인터리빙(Multi Channel Interleaving) 방식을 사용하는 경우, 각 채널(CH1~CHn)의 각 뱅크(Bank)에서 이러한 유휴 시간(Idle Time)이 증가할수록 데이터 저장 장치(100)의 성능은 떨어지게 된다.According to the above scheduling method, the second instructions to be scheduled in the first instruction wait queue (Queue 1) can be scheduled after the scheduling of the first instructions in all the channels (CH1 to CHn) is completed. If the execution time of the first instruction executed in the first bank (Bank 1) of the first channel (CH1) is too short, a second instruction is executed in the first bank (Bank1) of the first channel (CH1) The first command can be completed before. Then, the first bank (Bank 1) of the first channel CH1 is rested until the second command is executed. When the multi-channel interleaving scheme is used, the performance of the data storage device 100 decreases as the idle time increases in each bank of the channels CH1 to CHn.

따라서, 본 발명의 실시 예에 따른 명령 스케줄러(Command Scheduler)는 각 채널(CH1~CHn)의 각 뱅크(Bank 1~Bank m)에서 수행될 복수의 명령들을 함께 스케줄링 할 수 있다. 이하에서 하나의 뱅크(Bank)에서 수행될 첫 번째 명령이 명령 대기 큐(Command Waiting Queue)에 스케줄링 된 후 두 번째 명령이 스케줄링 되기까지 걸리는 시간을 오버헤드 시간(Overhead Time)이라 정의하기로 한다. 오버헤드 시간(Overhead Time)은 채널 및 뱅크(Bank)의 개수에 따라 일정한 값으로 정해질 수 있다. 명령 스케줄러(Command Scheduler)는 함께 스케줄링 될 명령들의 수행 시간 합계와 오버헤드 시간(Overhead Time)을 비교하여 함께 스케줄링 될 명령들의 개수를 정할 수 있다. 예를 들면, 명령들은 그 종류에 따라 평균 수행 시간의 예측이 가능할 것이다. 명령의 종류에 따른 평균 수행 시간에 따라 함께 스케줄링 될 명령들의 개수가 미리 정해질 수 있다. 명령 스케줄러(Command Scheduler)는 미리 정해진 개수에 따라 복수의 명령들을 함께 스케줄링 할 수 있다. 또는, 명령 스케줄러(Command Scheduler)는 채널에 할당된 명령들의 수행 시간을 계산하여 스케줄링 할 때마다 스케줄링 될 명령들의 개수를 결정할 수 있다. 자세한 내용은 도 5 및 도 6에서 설명될 것이다.Therefore, the command scheduler according to the embodiment of the present invention can schedule a plurality of commands to be performed in each of the banks (Bank 1 to Bank m) of the channels CH1 to CHn together. Hereinafter, the time taken for the first command to be executed in one bank to be scheduled in the Command Waiting Queue and the second command to be scheduled is defined as Overhead Time. The overhead time can be set to a constant value according to the number of channels and banks. The Command Scheduler compares the execution time sum of the instructions to be scheduled together with the Overhead Time to determine the number of instructions to be scheduled together. For example, the instructions may be able to predict the average execution time according to their type. The number of instructions to be scheduled together can be predetermined according to the average execution time according to the type of instruction. The Command Scheduler can schedule a plurality of instructions together according to a predetermined number. Alternatively, the Command Scheduler may calculate the execution time of the commands allocated to the channel and determine the number of instructions to be scheduled each time the scheduling is performed. The details will be described in Fig. 5 and Fig.

이상의 본 발명에 따른 명령 스케줄링(Command Scheduling) 방법에 따르면 각 뱅크(Bank)의 유휴 시간(Idle Time)은 줄어들게 된다. 유휴 시간(Idle Time)이 감소하면 데이터 저장 장치(100)의 성능은 향상될 수 있다. 다만, 한번에 스케줄링 되는 명령들의 개수는 명령 대기 큐(Queue 1~Queue n)의 리소스(Resource) 크기에 의해 제한될 수 있다.According to the command scheduling method of the present invention, the idle time of each bank is reduced. If the Idle Time decreases, the performance of the data storage device 100 can be improved. However, the number of instructions to be scheduled at one time may be limited by the resource size of the instruction wait queue (Queue 1 to Queue n).

도 4a 및 도 4b는 본 발명에 따른 명령 스케줄링(Command Scheduling) 방법의 효과를 설명하기 위한 도면이다. 이하에서는 도 1 내지 도 3을 참조하여 설명할 것이다. 도 4a 및 도 4b에서 데이터 저장 장치(100)는 예시적으로 2개의 채널들(CH1, CH2)을 포함한다고 가정할 것이다. 또한, 각 채널(CH1, CH2)은 2개의 뱅크들(Bank 1, Bank 2)을 포함한다고 가정할 것이다. 하지만, 이것은 설명을 위한 가정일 뿐, 데이터 저장 장치(100)는 복수의 채널들 및 각 채널에 포함되는 복수의 뱅크(Bank)들을 포함할 수 있다. t1 내지 t8의 값은 도 4a와 도 4b에서 다를 수 있다.4A and 4B are diagrams for explaining the effect of the command scheduling method according to the present invention. Hereinafter, a description will be given with reference to Figs. 1 to 3. Fig. In FIGS. 4A and 4B, it is assumed that the data storage device 100 illustratively includes two channels CH1 and CH2. It is also assumed that each channel CH1, CH2 includes two banks (Bank 1, Bank 2). However, this is only an assumption for explanation, and the data storage device 100 may include a plurality of channels and a plurality of banks included in each channel. The values of t1 to t8 may be different in Figs. 4A and 4B.

도 4a는 도 1의 데이터 저장 장치의 명령 수행 과정을 보여주는 타이밍도이다. 메모리 컨트롤러(110)에 포함된 명령 스케줄러(Command Scheduler)는 명령 대기 큐들(Queue 1, Queue 2)에 모든 뱅크(Bank)들에서 수행될 명령들을 순차적으로 스케줄링 한다. 도 4a를 참조하면, t1 시점에 제 1 채널(CH1)의 제 1 뱅크(Bank 1)에서 수행될 첫 번째 명령은 스케줄링 되고 수행되기 시작한다. 첫 번째 명령은 t1 시점부터 제 1 수행 시간(First Operation Time) 후인 t3 시점에 완료된다. 도 4a에서 데이터 저장 장치(100)의 오버헤드 시간(Overhead Time)은 ΔTOH(t5-t1)이다. 결국, 제 1 채널(CH1)의 제 1 뱅크(Bank 1)에서 유휴 시간(Idle Time, ΔTidle)이 존재하게 된다. 나머지 뱅크(Bank)들에서도 역시 유휴 시간(Idle Time)이 존재할 수 있다. 각 뱅크(Bank)에서 유휴 시간(Idle Time)이 길어질수록 데이터 저장 장치(100)의 성능은 떨어질 것이다. 만약에 채널 및 뱅크(Bank)의 개수가 늘어나면 오버헤드 시간(Overhead Time)은 더 길어질 것이다. 오버헤드 시간(Overhead Time)이 길어지면 유휴 시간(Idle Time)도 길어질 것이다.4A is a timing diagram illustrating an instruction execution process of the data storage device of FIG. The Command Scheduler included in the memory controller 110 sequentially schedules commands to be executed in all the banks in the command wait queues (Queue 1, Queue 2). Referring to FIG. 4A, at time t1, the first instruction to be performed in the first bank (Bank 1) of the first channel (CH1) is scheduled and starts to be performed. The first instruction is completed at a time point t3 after the first operation time from the time t1. In FIG. 4A, the overhead time of the data storage device 100 is DELTA T OH (t5-t1). As a result, an idle time (Idle Time, AT idle ) exists in the first bank (Bank 1) of the first channel (CH1). Idle time may also exist in the remaining banks. The longer the idle time in each bank, the lower the performance of the data storage device 100 will be. If the number of channels and banks is increased, the overhead time will be longer. The longer the overhead time, the longer the idle time.

t5 시점에 제 1 채널(CH1)의 제 1 뱅크(Bank 1)에서 수행될 두 번째 명령은 스케줄링 되고 수행되기 시작한다. 두 번째 명령은 t5 시점부터 제 2 수행 시간(Second Operation Time) 후인 t7 시점에 완료된다. 제 2 수행 시간(Second Operation Time)은 ΔTOH보다 길다. 따라서 세 번째 명령은 t7 시점보다 이전에 스케줄링 된다(스케줄링 시점은 미도시). 세 번째 명령은 두 번째 명령이 완료되는 t7 시점에 바로 수행되기 시작할 수 있다. 그러므로 제 2 수행 시간(Second Operation Time)과 제 3 수행 시간(Third Operation Time) 사이에는 유휴 시간(Idle Time)이 없다. 결국, 명령 수행 시간이 오버헤드 시간(Overhead Time)보다 길게 되면, 각 뱅크(Bank)에서 유휴 시간(Idle Time)이 없을 수 있다.At time t5, the second instruction to be performed in the first bank (Bank 1) of the first channel (CH1) is scheduled and started to be performed. The second instruction is completed at time t5 after the second operation time from t5. The second operation time is longer than? T OH . Therefore, the third instruction is scheduled before time t7 (scheduling time is not shown). The third command may begin to run immediately at time t7 when the second command completes. Therefore, there is no idle time between the second operation time and the third operation time. As a result, if the instruction execution time is longer than the overhead time, there may be no idle time in each bank.

도 4b는 도 1의 데이터 저장 장치의 다른 명령 수행 과정을 보여주는 타이밍도이다. 도 4b를 참조하면, t1 시점에 제 1 채널(CH1)의 제 1 뱅크(Bank 1)에서 수행될 첫 번째 및 두 번째 명령이 함께 스케줄링 되고, 첫 번째 명령은 수행되기 시작한다. t3 시점에 첫 번째 명령은 완료되고, 바로 두 번째 명령이 수행되기 시작한다. t1 시점부터 오버헤드 시간(Overhead Time)이 지난 후인 t5 시점에 세 번째 명령은 스케줄링 된다. t7 시점에 두 번째 명령은 완료되고, 유휴 시간(Idle Time) 없이 세 번째 명령은 수행되기 시작한다. 나머지 뱅크(Bank)들에서도 첫 번째 및 두 번째 명령이 함께 스케줄링 된다. 이와 같이 함께 스케줄링 되는 명령들의 수행 시간 총합이 오버헤드 시간(Overhead Time)보다 길도록 복수의 명령들이 함께 스케줄링 되면, 각 채널(CH1, CH2)의 각 뱅크(Bank 1, Bank 2)에서 유휴 시간(Idle Time)은 줄어들게 된다. 유휴 시간(Idle Time)이 감소하면, 데이터 저장 장치(100)의 성능은 향상될 것이다.4B is a timing diagram illustrating another instruction execution process of the data storage device of FIG. Referring to FIG. 4B, the first and second instructions to be performed in the first bank (Bank 1) of the first channel CH1 are scheduled together at time t1, and the first instruction starts to be executed. At time t3, the first command is completed, and the second command immediately begins to execute. The third instruction is scheduled at time t5 after the overhead time from t1. At time t7, the second instruction is completed and the third instruction starts to run without idle time. In the remaining banks, the first and second instructions are also scheduled together. When a plurality of instructions are scheduled together so that the sum of the execution times of the instructions to be scheduled together is longer than the overhead time, the idle time (1, 2, 3, Idle Time) is reduced. If the Idle Time decreases, the performance of the data storage device 100 will be improved.

도 5는 본 발명의 실시 예에 따른 데이터 저장 장치의 제어 방법을 보여주는 순서도이다. 이하에서는 도 1 내지 도 3을 참조하여 설명한다. 도 5를 참조하면, 명령의 종류에 따라 미리 정해진 개수의 명령들을 함께 스케줄링 하는 방법이 설명된다.5 is a flowchart illustrating a method of controlling a data storage device according to an embodiment of the present invention. Hereinafter, a description will be given with reference to Figs. 1 to 3. Fig. Referring to FIG. 5, a method of scheduling a predetermined number of instructions together according to the type of instruction will be described.

S110 단계에서, 메모리 컨트롤러(110)는 호스트(Host)로부터 액세스 명령(Access Command)들을 수신한다. 예를 들면, 액세스 명령(Access Command)들은 읽기(Read) 또는 쓰기(Write) 명령 등과 같이 저장 매체(130)에 접근을 요하는 명령들을 포함한다.In step S110, the memory controller 110 receives access commands from a host. For example, the access commands include commands that require access to the storage medium 130, such as a Read or Write command.

S120 단계에서, 메모리 컨트롤러(110)는 수신된 액세스 명령(Access Command)들을 각 채널(CH1~CHn)에 할당한다. 할당된 명령들은 수행될 채널 및 뱅크(Bank)가 정해진다.In step S120, the memory controller 110 allocates the received access commands (Access Commands) to the respective channels CH1 to CHn. The allocated commands specify the channels and banks to be executed.

S130 단계에서, 액세스 명령(Access Command)들이 각 채널(CH1~CHn)에 할당된 후, 메모리 컨트롤러(110)는 할당된 명령들을 스케줄링 하기 위해서 채널들(CH1~CHn) 중에서 하나의 채널을 선택한다. 예를 들면, 메모리 컨트롤러(110)는 제 1 채널(CH1)을 선택할 수 있다.In step S130, after the access commands are allocated to the respective channels CH1 to CHn, the memory controller 110 selects one channel among the channels CH1 to CHn in order to schedule the allocated commands . For example, the memory controller 110 may select the first channel CH1.

S140 단계에서, 메모리 컨트롤러(110)는 선택된 채널에 할당된 명령들의 종류를 판별한다. 일반적으로 명령의 종류가 같으면 명령의 수행 시간도 일정한 범위 안에 존재할 것이다. 따라서, 명령의 종류에 따른 평균 수행 시간에 따라 미리 함께 스케줄링 될 명령들의 개수는 정해질 수 있다. 메모리 컨트롤러(110)는 미리 정해진 함께 스케줄링 될 명령들의 개수를 룩업 테이블(Look-up Table)로 저장할 수 있다.In step S140, the memory controller 110 determines the type of commands allocated to the selected channel. In general, if the types of commands are the same, the execution time of commands will be within a certain range. Accordingly, the number of instructions to be scheduled together in advance can be determined according to the average execution time according to the type of instruction. The memory controller 110 may store a predetermined number of instructions to be scheduled together into a look-up table.

S150 단계에서, 메모리 컨트롤러(110)는 선택된 채널에 할당된 명령들의 종류에 따라 스케줄링 될 명령들의 개수를 결정한다. 메모리 컨트롤러(110)는 미리 정해진 표(Table)에 따라 함께 스케줄링 될 명령들의 개수를 결정한다. 함께 스케줄링 될 명령들의 개수는 선택된 채널의 각 뱅크(Bank 1~Bank m)마다 독립적으로 결정된다. 그러므로 선택된 채널의 각 뱅크(Bank 1~Bank m)마다 함께 스케줄링 될 명령들의 개수는 다를 수 있다. 다만, 함께 스케줄링 되는 명령들의 개수는 명령 대기 큐(Command Waiting Queue)의 리소스(Resource) 크기에 의해 제한된다.In step S150, the memory controller 110 determines the number of instructions to be scheduled according to the types of instructions allocated to the selected channel. The memory controller 110 determines the number of instructions to be scheduled together according to a predetermined table. The number of instructions to be scheduled together is determined independently for each bank (Bank 1 to Bank m) of the selected channel. Therefore, the number of instructions to be scheduled together for each bank (Bank 1 to Bank m) of the selected channel may be different. However, the number of commands scheduled together is limited by the resource size of the Command Waiting Queue.

S160 단계에서, 메모리 컨트롤러(110)는 선택된 채널에 스케줄링 결정된 명령들을 함께 스케줄링 한다. 선택된 채널의 스케줄링이 완료되면, 메모리 컨트롤러(110)는 다음에 스케줄링 될 채널을 선택한다. 이상의 방법으로 메모리 컨트롤러(110)는 호스트(Host)로부터 수신된 모든 액세스 명령(Access Command)들이 스케줄링 될 때까지 각 채널(CH1~CHn)에 할당된 명령들을 계속 스케줄링 한다.In step S160, the memory controller 110 schedules together the commands determined to be scheduled for the selected channel. When the scheduling of the selected channel is completed, the memory controller 110 selects a channel to be scheduled next. In this manner, the memory controller 110 continuously schedules the commands allocated to the respective channels CH1 to CHn until all the access commands received from the host are scheduled.

도 6은 본 발명의 다른 실시 예에 따른 데이터 저장 장치의 제어 방법을 보여주는 순서도이다. 이하에서는 도 1 내지 도 3을 참조하여 설명한다. 도 6을 참조하면, 각 채널(CH1~CHn)에 할당된 명령들의 수행 시간을 계산하고, 함께 스케줄링 될 명령들의 수행 시간 합계와 오버헤드 시간(Overhead Time)을 비교하여 복수의 명령들을 함께 스케줄링 하는 방법이 설명된다.6 is a flowchart illustrating a method of controlling a data storage device according to another embodiment of the present invention. Hereinafter, a description will be given with reference to Figs. 1 to 3. Fig. Referring to FIG. 6, the execution time of commands allocated to each of the channels CH1 to CHn is calculated, and the total execution time of commands to be scheduled together with the overhead time is compared to schedule a plurality of commands together The method is described.

S210 단계에서, 메모리 컨트롤러(110)는 호스트(Host)로부터 액세스 명령(Access Command)들을 수신한다. 예를 들면, 액세스 명령(Access Command)들은 읽기(Read) 또는 쓰기(Write) 명령 등과 같이 저장 매체(130)에 접근을 요하는 명령들을 포함한다.In step S210, the memory controller 110 receives access commands from a host. For example, the access commands include commands that require access to the storage medium 130, such as a Read or Write command.

S220 단계에서, 메모리 컨트롤러(110)는 수신된 액세스 명령(Access Command)들을 각 채널(CH1~CHn)에 할당한다. 할당된 명령들은 수행될 채널 및 뱅크(Bank)가 정해진다.In step S220, the memory controller 110 allocates the received access commands to the channels CH1 to CHn. The allocated commands specify the channels and banks to be executed.

S230 단계에서, 액세스 명령(Access Command)들이 각 채널(CH1~CHn)에 할당된 후, 메모리 컨트롤러(110)는 할당된 명령들을 스케줄링 하기 위해서 채널들(CH1~CHn) 중에서 하나의 채널을 선택한다. 예를 들면, 메모리 컨트롤러(110)는 제 1 채널(CH1)을 선택할 수 있다.In step S230, after the access commands are assigned to the respective channels CH1 to CHn, the memory controller 110 selects one of the channels CH1 to CHn in order to schedule the allocated commands . For example, the memory controller 110 may select the first channel CH1.

S240 단계에서, 메모리 컨트롤러(110)는 선택된 채널에 할당된 각 명령의 수행 시간을 계산한다. 메모리 컨트롤러(110)는 스케줄링 될 첫 번째 명령부터 순차적으로 수행 시간을 합하면서 오버헤드 시간(Overhead Time)과 비교한다. 예를 들면, 메모리 컨트롤러(110)는 첫 번째 명령의 수행 시간과 오버헤드 시간(Overhead Time)을 비교한다. 첫 번째 명령의 수행 시간이 오버헤드 시간(Overhead Time)보다 작으면, 메모리 컨트롤러(110)는 첫 번째 및 두 번째 명령의 수행 시간 합계와 오버헤드 시간(Overhead Time)을 비교한다. 첫 번째 및 두 번째 명령의 수행 시간 합계가 오버헤드 시간(Overhead Time)보다 작으면, 메모리 컨트롤러(110)는 첫 번째, 두 번째 및 세 번째 명령의 수행 시간 합계와 오버헤드 시간(Overhead Time)을 비교한다. 이와 같은 방법으로 메모리 컨트롤러(110)는 스케줄링 될 명령들의 수행 시간 합계가 오버헤드 시간(Overhead Time)보다 크거나 같을 때까지 반복하여 비교한다.In step S240, the memory controller 110 calculates the execution time of each command allocated to the selected channel. The memory controller 110 compares the execution time sequentially with the overhead time from the first command to be scheduled. For example, the memory controller 110 compares the execution time of the first instruction with the overhead time. If the execution time of the first instruction is less than the overhead time, the memory controller 110 compares the execution time sum of the first and second instructions with the overhead time. If the sum of the execution times of the first and second instructions is less than the overhead time, the memory controller 110 compares the execution time sum of the first, second, and third instructions with the overhead time Compare. In this manner, the memory controller 110 repeatedly compares the execution time of the instructions to be scheduled until the sum of the execution times of the instructions to be scheduled is equal to or greater than the overhead time.

S250 단계에서, 메모리 컨트롤러(110)는 선택된 채널에 스케줄링 될 명령들의 수행 시간 합계에 따라 스케줄링 되는 명령들의 개수를 결정한다. 메모리 컨트롤러(110)는 스케줄링 될 명령들의 수행 시간 합계가 오버헤드 시간(Overhead Time)보다 크거나 같을 때의 명령들의 개수를 함께 스케줄링 되는 명령들의 개수로 결정한다. 예를 들면, 첫 번째 명령의 수행 시간이 오버헤드 시간(Overhead Time)보다 크거나 같으면, 메모리 컨트롤러(110)는 첫 번째 명령만 스케줄링 한다. 첫 번째 명령의 수행 시간은 오버헤드 시간(Overhead Time)보다 작으나 첫 번째 및 두 번째 명령의 수행 시간 합계가 오버헤드 시간(Overhead Time)보다 크거나 같으면, 메모리 컨트롤러(110)는 첫 번째 및 두 번째 명령을 함께 스케줄링 한다. 첫 번째 및 두 번째 명령의 수행 시간 합계가 오버헤드 시간(Overhead Time)보다 작으나 첫 번째, 두 번째 및 세 번째 명령의 수행 시간 합계가 오버헤드 시간(Overhead Time)보다 크거나 같으면, 메모리 컨트롤러(110)는 첫 번째, 두 번째 및 세 번째 명령을 함께 스케줄링 한다. 다만, 함께 스케줄링 되는 명령들의 개수는 명령 대기 큐(Command Waiting Queue)의 리소스(Resource) 크기에 의해 제한된다.In step S250, the memory controller 110 determines the number of instructions to be scheduled according to the execution time sum of the instructions to be scheduled for the selected channel. The memory controller 110 determines the number of instructions when the total execution time of the instructions to be scheduled is equal to or greater than the overhead time as the number of instructions to be scheduled together. For example, if the execution time of the first instruction is greater than or equal to the overhead time, the memory controller 110 schedules only the first instruction. If the execution time of the first instruction is less than the overhead time but the sum of the execution times of the first and second instructions is greater than or equal to the overhead time, Schedules commands together. If the sum of the execution times of the first and second instructions is less than the overhead time but the sum of the execution times of the first, second and third instructions is greater than or equal to the overhead time, ) Schedules the first, second, and third instructions together. However, the number of commands scheduled together is limited by the resource size of the Command Waiting Queue.

S260 단계에서, 메모리 컨트롤러(110)는 선택된 채널에 결정된 명령들을 함께 스케줄링 한다. 선택된 채널의 스케줄링이 완료되면, 메모리 컨트롤러(110)는 다음에 스케줄링 될 채널을 선택한다. 이상의 방법으로 메모리 컨트롤러(110)는 호스트(Host)로부터 수신된 모든 액세스 명령(Access Command)들이 스케줄링 될 때까지 각 채널(CH1~CHn)에 할당된 명령들을 계속 스케줄링 한다.In step S260, the memory controller 110 schedules the determined commands together with the selected channel. When the scheduling of the selected channel is completed, the memory controller 110 selects a channel to be scheduled next. In this manner, the memory controller 110 continuously schedules the commands allocated to the respective channels CH1 to CHn until all the access commands received from the host are scheduled.

도 5 및 도 6에서 설명한 본 발명의 실시 예에 따르면 데이터 저장 장치(100)는 각 채널의 각 뱅크(Bank)에서 유휴 시간(Idle Time)을 최소한으로 줄일 수 있다. 결국, 전반적으로 유휴 시간(Idle Time)이 감소하여 데이터 저장 장치(100)의 성능은 향상될 수 있다. 그리고 이상에서 살펴본 복수의 명령들을 스케줄링 하는 방법은 예시적인 것이고, 함께 스케줄링 될 명령들의 개수를 결정하는 방법은 이상의 실시 예에 의해 한정되지 않는다.According to the embodiment of the present invention described in FIGS. 5 and 6, the data storage device 100 can minimize the idle time in each bank of each channel. As a result, the overall performance of the data storage device 100 can be improved by reducing the idle time. The method of scheduling a plurality of instructions as described above is exemplary, and the method of determining the number of instructions to be scheduled together is not limited to the above embodiment.

본 발명에 따른 저장 매체 그리고/또는 메모리 컨트롤러는 다양한 형태들의 패키지를 이용하여 실장 될 수 있다. 예를 들면, 본 발명에 따른 저장 매체 그리고/또는 메모리 컨트롤러는 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 Metric Quad Flat Pack(MQFP), Thin Quad Flatpack(TQFP), Small Outline(SOIC), Shrink Small Outline Package(SSOP), Thin Small Outline(TSOP), System In Package(SIP), Multi Chip Package(MCP), Wafer-level Fabricated Package(WFP), Wafer-Level Processed Stack Package(WSP), 등과 같은 패키지들을 이용하여 실장 될 수 있다.The storage medium and / or memory controller according to the present invention may be implemented using various types of packages. For example, the storage medium and / or the memory controller according to the present invention may be implemented as a package on package (PoP), ball grid arrays (BGAs), chip scale packages (CSPs), plastic leaded chip carriers Die in Wafer Form, Chip On Board (COB), Ceramic Dual In-Line Package (CERDIP), Plastic Metric Quad Flat Pack (MQFP), Thin Quad Flatpack (TQFP), Small Outline (SOIC), Shrink Small Outline Package (SSOP), Thin Small Outline (TSOP), System In Package (SIP), Multi Chip Package (MCP), Wafer-level Fabricated Package ), ≪ / RTI > and the like.

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

100 : 데이터 저장 장치
110 : 메모리 컨트롤러
111 : 프로세싱 유닛
112 : 동작 메모리
113 : 호스트 인터페이스
114 : 버퍼 인터페이스
115 : 플래시 인터페이스
120 : 버퍼 메모리
130 : 저장 매체
131 : 제 1 복수의 플래시 메모리들
132 : 제 2 복수의 플래시 메모리들
133 : 제 n 복수의 플래시 메모리들
100: Data storage device
110: Memory controller
111: Processing unit
112: Operation memory
113: Host interface
114: buffer interface
115: Flash interface
120: buffer memory
130: Storage medium
131: a first plurality of flash memories
132: a second plurality of flash memories
133: n multiple flash memories

Claims (8)

각각 뱅크 단위로 액세스 되는 복수의 불휘발성 메모리 장치들 및 상기 복수의 불휘발성 메모리 장치들과 복수의 채널들을 통해서 전기적으로 연결되는 메모리 컨트롤러를 포함하는 데이터 저장 장치의 명령어 스케줄링 방법에 있어서:
액세스 명령들을 상기 뱅크 단위로 상기 복수의 불휘발성 메모리 장치들에 할당하는 단계;
상기 액세스 명령들 각각의 종류를 판별하는 단계;
미리 작성된 정보를 기초로 상기 뱅크에 대하여 유휴 시간 없이 연속적으로 수행될 적어도 2개의 명령들을 결정하는 단계; 그리고
상기 뱅크에 대하여 상기 연속적으로 수행될 적어도 2개의 명령들을 스케줄링 하는 단계를 포함하고,
상기 미리 작성된 정보는 상기 액세스 명령들 각각의 종류에 따라 연속적으로 수행될 명령들의 개수에 대한 정보를 포함하는 명령어 스케줄링 방법.
A method for scheduling instructions in a data storage device, the method comprising: a plurality of non-volatile memory devices, each accessed in a bank unit; and a memory controller electrically connected to the plurality of non-volatile memory devices through a plurality of channels,
Allocating access instructions to the plurality of nonvolatile memory devices on a bank-by-bank basis;
Determining a type of each of the access commands;
Determining at least two instructions to be successively performed on the bank based on previously written information without idle time; And
Scheduling at least two instructions to be successively performed on the bank,
Wherein the pre-written information includes information on the number of instructions to be successively executed according to the type of each of the access instructions.
제 1 항에 있어서,
상기 뱅크는 상기 불휘발성 메모리 장치들 중 적어도 하나를 포함하는 명령어 스케줄링 방법.
The method according to claim 1,
Wherein the bank comprises at least one of the non-volatile memory devices.
제 1 항에 있어서,
상기 연속적으로 수행될 적어도 2개의 명령들을 결정하는 단계에서, 상기 미리 작성된 정보는 룩업 테이블로 제공되는 명령어 스케줄링 방법.
The method according to claim 1,
Wherein the pre-written information is provided as a look-up table in the step of determining at least two instructions to be successively performed.
각각 뱅크 단위로 액세스 되는 복수의 불휘발성 메모리 장치들 및 상기 복수의 불휘발성 메모리 장치들과 복수의 채널들을 통해서 전기적으로 연결되는 메모리 컨트롤러를 포함하는 데이터 저장 장치의 명령어 스케줄링 방법에 있어서:
액세스 명령들을 상기 뱅크 단위로 상기 복수의 불휘발성 메모리 장치들에 할당하는 단계;
상기 액세스 명령들 각각의 수행 시간을 계산하는 단계;
상기 액세스 명령들의 수행 시간 합계와 오버헤드 시간을 비교하여 상기 뱅크에 대하여 유휴 시간 없이 연속적으로 수행될 적어도 2개의 명령들을 결정하는 단계; 그리고
상기 뱅크에 대하여 상기 연속적으로 수행될 적어도 2개의 명령들을 스케줄링 하는 단계를 포함하는 명령어 스케줄링 방법.
A method for scheduling instructions in a data storage device, the method comprising: a plurality of non-volatile memory devices, each accessed in a bank unit; and a memory controller electrically connected to the plurality of non-volatile memory devices through a plurality of channels,
Allocating access instructions to the plurality of nonvolatile memory devices on a bank-by-bank basis;
Calculating the execution time of each of the access instructions;
Comparing at least one execution time sum of the access instructions with an overhead time to determine at least two instructions to be continuously executed without idle time for the bank; And
And scheduling at least two instructions to be successively performed on the bank.
제 4 항에 있어서,
상기 연속적으로 수행될 적어도 2개의 명령들을 결정하는 단계에서,
상기 오버헤드 시간은 상기 뱅크에 대하여 스케줄링 한 후에 다음 스케줄링 할 때까지의 시간인 명령어 스케줄링 방법.
5. The method of claim 4,
Determining at least two instructions to be successively performed,
Wherein the overhead time is a time from scheduling to the next bank to the next scheduling.
제 5 항에 있어서,
제 1 수행 시간 합계는 제 1 명령의 수행 시간과 제 2 명령의 수행 시간을 합하여 계산되고,
상기 제 1 수행 시간 합계가 상기 오버헤드 시간보다 큰 경우, 상기 연속적으로 수행될 적어도 2개의 명령들은 상기 제 1 명령 및 상기 제 2 명령으로 결정되는 명령어 스케줄링 방법.
6. The method of claim 5,
The first execution time sum is calculated by adding the execution time of the first instruction and the execution time of the second instruction,
Wherein when the sum of the first execution time is greater than the overhead time, at least two instructions to be successively performed are determined as the first instruction and the second instruction.
제 6 항에 있어서,
상기 제 1 수행 시간 합계가 상기 오버헤드 시간보다 작은 경우, 제 2 수행 시간 합계는 상기 제 1 수행 시간 합계와 제 3 명령의 수행 시간을 합하여 계산되고,
상기 제 2 수행 시간 합계가 상기 오버헤드 시간보다 큰 경우, 상기 연속적으로 수행될 적어도 2개의 명령들은 상기 제 1 명령, 상기 제 2 명령 및 상기 제 3 명령으로 결정되는 명령어 스케줄링 방법.
The method according to claim 6,
If the sum of the first execution time is less than the overhead time, the second execution time sum is calculated by summing the sum of the first execution time and the execution time of the third instruction,
Wherein when the sum of the second execution time is greater than the overhead time, the at least two instructions to be successively performed are determined as the first instruction, the second instruction and the third instruction.
각각 뱅크 단위로 액세스 되는 복수의 불휘발성 메모리 장치들; 그리고
상기 복수의 불휘발성 메모리 장치들과 복수의 채널들을 통해서 전기적으로 연결되며, 액세스 명령들을 상기 뱅크 단위로 할당하는 메모리 컨트롤러를 포함하되,
상기 메모리 컨트롤러는 상기 액세스 명령들의 종류를 판별하고, 미리 작성된 정보에 기초하여 상기 뱅크에 대하여 유휴 시간 없이 연속적으로 수행될 적어도 2개의 명령들을 스케줄링 하고,
상기 미리 작성된 정보는 상기 액세스 명령들의 종류에 따라 상기 연속적으로 수행될 적어도 2개의 명령들의 개수에 대한 정보를 포함하는 데이터 저장 장치.
A plurality of nonvolatile memory devices accessed on a bank-by-bank basis; And
And a memory controller electrically connected to the plurality of nonvolatile memory devices through a plurality of channels and allocating access commands on the bank basis,
Wherein the memory controller determines the type of the access instructions, schedules at least two instructions to be continuously executed with no idle time for the bank based on the information previously prepared,
Wherein the pre-written information includes information on the number of at least two instructions to be successively performed according to the type of the access instructions.
KR1020130064069A 2013-06-04 2013-06-04 Data storage device and method of scheduling command thereof KR102079939B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020130064069A KR102079939B1 (en) 2013-06-04 2013-06-04 Data storage device and method of scheduling command thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020130064069A KR102079939B1 (en) 2013-06-04 2013-06-04 Data storage device and method of scheduling command thereof

Publications (2)

Publication Number Publication Date
KR20140142530A true KR20140142530A (en) 2014-12-12
KR102079939B1 KR102079939B1 (en) 2020-02-21

Family

ID=52459993

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130064069A KR102079939B1 (en) 2013-06-04 2013-06-04 Data storage device and method of scheduling command thereof

Country Status (1)

Country Link
KR (1) KR102079939B1 (en)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160122631A (en) * 2015-04-14 2016-10-24 삼성전자주식회사 Memory systems having improved out-of-order execution of commands and methods for operating the same
WO2017112021A1 (en) * 2015-12-21 2017-06-29 Intel Corporation METHOD AND APPARATUS TO ENABLE INDIVIDUAL NON VOLATLE MEMORY EXPRESS (NVMe) INPUT/OUTPUT (IO) QUEUES ON DIFFERING NETWORK ADDRESSES OF AN NVMe CONTROLLER
CN109947662A (en) * 2017-12-20 2019-06-28 爱思开海力士有限公司 Storage system and its operating method
WO2020242750A1 (en) * 2019-05-31 2020-12-03 Micron Technology, Inc. Predictive data transfer based on availability of media units in memory sub-systems
US10893050B2 (en) 2016-08-24 2021-01-12 Intel Corporation Computer product, method, and system to dynamically provide discovery services for host nodes of target systems and storage resources in a network
US10970231B2 (en) 2016-09-28 2021-04-06 Intel Corporation Management of virtual target storage resources by use of an access control list and input/output queues

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220157155A (en) 2021-05-20 2022-11-29 에스케이하이닉스 주식회사 Storage device and operating method thereof
US20210286561A1 (en) * 2021-06-02 2021-09-16 Intel Corporation Double fetch for long burst length memory data transfer

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3223530B2 (en) * 1991-08-20 2001-10-29 富士通株式会社 Data transfer instruction generation processing method
JP2004110786A (en) * 2002-09-16 2004-04-08 Arm Ltd Data processor and data processing method
KR20090065504A (en) * 2006-12-25 2009-06-22 파나소닉 주식회사 Memory control device, memory device, and memory control method
KR20100042885A (en) * 2008-10-17 2010-04-27 삼성전자주식회사 Methods for operating nonvolatile memory devices
KR20110130265A (en) * 2010-05-27 2011-12-05 삼성전자주식회사 Controlling method for non-volatile memory device

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3223530B2 (en) * 1991-08-20 2001-10-29 富士通株式会社 Data transfer instruction generation processing method
JP2004110786A (en) * 2002-09-16 2004-04-08 Arm Ltd Data processor and data processing method
KR20090065504A (en) * 2006-12-25 2009-06-22 파나소닉 주식회사 Memory control device, memory device, and memory control method
KR20100042885A (en) * 2008-10-17 2010-04-27 삼성전자주식회사 Methods for operating nonvolatile memory devices
KR20110130265A (en) * 2010-05-27 2011-12-05 삼성전자주식회사 Controlling method for non-volatile memory device

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160122631A (en) * 2015-04-14 2016-10-24 삼성전자주식회사 Memory systems having improved out-of-order execution of commands and methods for operating the same
WO2017112021A1 (en) * 2015-12-21 2017-06-29 Intel Corporation METHOD AND APPARATUS TO ENABLE INDIVIDUAL NON VOLATLE MEMORY EXPRESS (NVMe) INPUT/OUTPUT (IO) QUEUES ON DIFFERING NETWORK ADDRESSES OF AN NVMe CONTROLLER
US10275160B2 (en) 2015-12-21 2019-04-30 Intel Corporation Method and apparatus to enable individual non volatile memory express (NVME) input/output (IO) Queues on differing network addresses of an NVME controller
US11385795B2 (en) 2015-12-21 2022-07-12 Intel Corporation Method and apparatus to enable individual non volatile memory express (NVMe) input/output (IO) queues on differing network addresses of an NVMe controller
US10893050B2 (en) 2016-08-24 2021-01-12 Intel Corporation Computer product, method, and system to dynamically provide discovery services for host nodes of target systems and storage resources in a network
US11630783B2 (en) 2016-09-28 2023-04-18 Intel Corporation Management of accesses to target storage resources
US10970231B2 (en) 2016-09-28 2021-04-06 Intel Corporation Management of virtual target storage resources by use of an access control list and input/output queues
CN109947662A (en) * 2017-12-20 2019-06-28 爱思开海力士有限公司 Storage system and its operating method
CN109947662B (en) * 2017-12-20 2024-04-09 爱思开海力士有限公司 Memory system and method of operating the same
CN113924545A (en) * 2019-05-31 2022-01-11 美光科技公司 Predictive data transfer based on availability of media units in a memory subsystem
WO2020242750A1 (en) * 2019-05-31 2020-12-03 Micron Technology, Inc. Predictive data transfer based on availability of media units in memory sub-systems
US11669272B2 (en) 2019-05-31 2023-06-06 Micron Technology, Inc. Predictive data transfer based on availability of media units in memory sub-systems
EP3977256A4 (en) * 2019-05-31 2023-06-28 Micron Technology, Inc. Predictive data transfer based on availability of media units in memory sub-systems
CN113924545B (en) * 2019-05-31 2024-04-23 美光科技公司 Predictive data transfer based on availability of media units in a memory subsystem

Also Published As

Publication number Publication date
KR102079939B1 (en) 2020-02-21

Similar Documents

Publication Publication Date Title
KR102079939B1 (en) Data storage device and method of scheduling command thereof
US9711232B2 (en) Dynamic non-volatile memory operation scheduling for controlling power consumption of solid-state drives
CN110088723B (en) System and method for processing and arbitrating commit and completion queues
US8171242B2 (en) Systems and methods for scheduling a memory command for execution based on a history of previously executed memory commands
US9977487B2 (en) Dynamic non-volatile memory operation scheduling for controlling power consumption of solid-state drives
US10782915B2 (en) Device controller that schedules memory access to a host memory, and storage device including the same
US8356135B2 (en) Memory device and control method
US20160179402A1 (en) Memory system
CN109697027B (en) Data storage device including shared memory region and dedicated memory region
US20130305008A1 (en) Memory operation timing control method and memory system using the same
KR101687762B1 (en) Storage device and command scheduling method thereof
US20150253992A1 (en) Memory system and control method
US20150205540A1 (en) Memory system including nonvolatile memory devices and operating method
US20160070647A1 (en) Memory system
US20220350655A1 (en) Controller and memory system having the same
US8621140B2 (en) Flash memory apparatus for controlling operation in response to generation of interrupt signal and method of controlling the same
US20100125697A1 (en) Computing device having storage, apparatus and method of managing storage, and file system recorded recording medium
US11068189B2 (en) Storage device and control method thereof
US10528289B2 (en) Data storage method for optimizing data storage device and its data storage device
KR20100120518A (en) Data storage device and read commands execution method thereof
US20240211174A1 (en) Apparatus and method for processing read command based on deterioration state of memory device
US20240086086A1 (en) Ssd performance per power state improvement by deterministic utilization control
US10310746B2 (en) Method, associated memory device and controller thereof for performing dynamic resource management
KR102549540B1 (en) Storage device and method of operating the same
US9208076B2 (en) Nonvolatile storage device and method of storing data thereof

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant