KR20140142530A - Data storage device and method of scheduling command thereof - Google Patents
Data storage device and method of scheduling command thereof Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
- G06F9/4831—Task transfer initiation or dispatching by interrupt, e.g. masked with variable priority
- G06F9/4837—Task transfer initiation or dispatching by interrupt, e.g. masked with variable priority time dependent
-
- 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/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0646—Configuration or reconfiguration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/18—Handling requests for interconnection or transfer for access to memory bus based on priority control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-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
Description
본 발명은 반도체 메모리 장치에 관한 것으로, 좀 더 구체적으로는 데이터 저장 장치 및 그것의 명령어 스케줄링 방법에 관한 것이다.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
메모리 컨트롤러(110)는 호스트(Host)로부터 복수의 명령들을 수신한다. 호스트(Host)로부터 수신되는 명령들은 저장 매체(130)에 접근해야 하는 액세스 명령(Access Command)들을 포함한다. 예를 들어, 액세스 명령(Access Command)은 읽기(Read) 또는 쓰기(Write) 명령 등을 포함한다. 액세스 명령(Access Command)들을 수신하면, 메모리 컨트롤러(110)는 액세스 명령(Access Command)들을 채널별(CH1~CHn)로 할당한다. 메모리 컨트롤러(110)는 각 채널(CH1~CHn)에 할당된 명령들을 스케줄링 한다. 각 채널(CH1~CHn)에서 스케줄링 된 명령들은 스케줄링 순서에 따라 독립적으로 수행된다.The
버퍼 메모리(120)는 호스트(Host)로부터 수신되는 데이터 또는 호스트(Host)로 전송되는 데이터를 임시로 저장한다. 버퍼 메모리(120)는 휘발성 메모리(예를 들면 SRAM 또는 DRAM)로 구현될 수 있다. 또한, 버퍼 메모리(120)는 데이터를 임시로 저장할 수 있는 어떠한 장치로도 구현될 수 있다.The
저장 매체(130)는 불휘발성 메모리 장치를 포함한다. 이하에서 저장 매체(130)는 플래시 메모리(Flash Memory)로 구성되는 경우에 대해 예시적으로 설명될 것이다. 그러나 본 발명의 저장 매체(130)에 적용되는 불휘발성 메모리 장치는 특정 종류 및 특정 형태에만 국한되지 않고 다양한 형태로 구성될 수 있다. 예를 들면, 저장 매체(130)에 적용되는 불휘발성 메모리 장치는 플래시 메모리(Flash Memory)뿐만 아니라 MRAM, PRAM 등의 불휘발성 메모리를 포함할 수 있다.The
저장 매체(130)는 복수의 플래시 메모리(Flash Memory)들을 포함한다. 제 1 플래시 메모리들(131)은 제 1 채널(CH1)을 통하여 메모리 컨트롤러(110)와 연결된다. 제 2 플래시 메모리들(132)은 제 2 채널(CH2)을 통하여 메모리 컨트롤러(110)와 연결된다. 제 n 플래시 메모리들(133)은 제 n 채널(CHn)을 통하여 메모리 컨트롤러(110)와 연결된다. 각 채널(CH1~CHn)의 플래시 메모리들(131~133)은 스케줄링 순서에 따라 독립적으로 스케줄링 된 명령들을 수행한다.The
도 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
프로세싱 유닛(111)은 중앙 처리 장치(CPU) 또는 마이크로프로세서(Microprocessor)를 포함한다. 프로세싱 유닛(111)은 메모리 컨트롤러(110)의 동작을 전반적으로 제어한다. 프로세싱 유닛(111)은 메모리 컨트롤러(110)를 제어하기 위한 펌웨어(Firmware)를 구동하도록 구성된다. 이러한 펌웨어(Firmware)는 동작 메모리(112)에 로딩 되어 구동된다. 프로세싱 유닛(111)은 호스트(Host)로부터 수신된 액세스 명령(Access Command)들을 각 채널(CH1~CHn)에 할당한다. The
동작 메모리(112)에는 메모리 컨트롤러(110)를 제어하기 위한 펌웨어(Firmware) 및 데이터가 저장된다. 저장된 펌웨어(Firmware) 및 데이터는 프로세싱 유닛(111)에 의해 구동된다. 동작 메모리(112)는 캐시(Cache), DRAM, SRAM, PRAM, ROM, 플래시 메모리 장치들 중 적어도 하나를 포함한다. 동작 메모리(112)에는 펌웨어(Firmware)인 명령 스케줄러(Command Scheduler)가 로딩 되어 구동된다.In the
명령 스케줄러(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
호스트 인터페이스(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
버퍼 인터페이스(114)는 프로세싱 유닛(111)의 제어에 응답해서 버퍼 메모리(120, 도 1 참조)의 액세스 동작(예를 들면, 읽기/기록/소거 동작들)을 제어한다. 버퍼 메모리(120)는 휘발성 메모리(예를 들면, SRAM 또는 DRAM)로 구현될 수 있다. 버퍼 메모리(120)는 저장 매체(130)와 호스트(Host) 사이에서 전달되는 데이터를 임시적으로 저장하는 기능을 수행한다.The
플래시 인터페이스(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
도 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
복수의 명령 대기 큐들(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 (
복수의 플래시 메모리들(131~133)은 복수의 뱅크들(Bank 1~Bank m)을 포함할 수 있다. 본 발명에서 뱅크(Bank)는 하나의 채널 내에서 명령들을 인터리빙(Interleaving)하여 동작하는 단위를 말한다. 하나의 뱅크(Bank)는 하나의 플래시 메모리(Flash Memory)로 구현될 수 있고, 또는 복수의 플래시 메모리(Flash Memory)들로 구현될 수도 있다.The plurality of
프로세싱 유닛(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
이상의 스케줄링 방법에 따르면 제 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
따라서, 본 발명의 실시 예에 따른 명령 스케줄러(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 (
이상의 본 발명에 따른 명령 스케줄링(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
도 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
도 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
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
도 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
S120 단계에서, 메모리 컨트롤러(110)는 수신된 액세스 명령(Access Command)들을 각 채널(CH1~CHn)에 할당한다. 할당된 명령들은 수행될 채널 및 뱅크(Bank)가 정해진다.In step S120, the
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
S140 단계에서, 메모리 컨트롤러(110)는 선택된 채널에 할당된 명령들의 종류를 판별한다. 일반적으로 명령의 종류가 같으면 명령의 수행 시간도 일정한 범위 안에 존재할 것이다. 따라서, 명령의 종류에 따른 평균 수행 시간에 따라 미리 함께 스케줄링 될 명령들의 개수는 정해질 수 있다. 메모리 컨트롤러(110)는 미리 정해진 함께 스케줄링 될 명령들의 개수를 룩업 테이블(Look-up Table)로 저장할 수 있다.In step S140, the
S150 단계에서, 메모리 컨트롤러(110)는 선택된 채널에 할당된 명령들의 종류에 따라 스케줄링 될 명령들의 개수를 결정한다. 메모리 컨트롤러(110)는 미리 정해진 표(Table)에 따라 함께 스케줄링 될 명령들의 개수를 결정한다. 함께 스케줄링 될 명령들의 개수는 선택된 채널의 각 뱅크(Bank 1~Bank m)마다 독립적으로 결정된다. 그러므로 선택된 채널의 각 뱅크(Bank 1~Bank m)마다 함께 스케줄링 될 명령들의 개수는 다를 수 있다. 다만, 함께 스케줄링 되는 명령들의 개수는 명령 대기 큐(Command Waiting Queue)의 리소스(Resource) 크기에 의해 제한된다.In step S150, the
S160 단계에서, 메모리 컨트롤러(110)는 선택된 채널에 스케줄링 결정된 명령들을 함께 스케줄링 한다. 선택된 채널의 스케줄링이 완료되면, 메모리 컨트롤러(110)는 다음에 스케줄링 될 채널을 선택한다. 이상의 방법으로 메모리 컨트롤러(110)는 호스트(Host)로부터 수신된 모든 액세스 명령(Access Command)들이 스케줄링 될 때까지 각 채널(CH1~CHn)에 할당된 명령들을 계속 스케줄링 한다.In step S160, the
도 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
S220 단계에서, 메모리 컨트롤러(110)는 수신된 액세스 명령(Access Command)들을 각 채널(CH1~CHn)에 할당한다. 할당된 명령들은 수행될 채널 및 뱅크(Bank)가 정해진다.In step S220, the
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
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
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
S260 단계에서, 메모리 컨트롤러(110)는 선택된 채널에 결정된 명령들을 함께 스케줄링 한다. 선택된 채널의 스케줄링이 완료되면, 메모리 컨트롤러(110)는 다음에 스케줄링 될 채널을 선택한다. 이상의 방법으로 메모리 컨트롤러(110)는 호스트(Host)로부터 수신된 모든 액세스 명령(Access Command)들이 스케줄링 될 때까지 각 채널(CH1~CHn)에 할당된 명령들을 계속 스케줄링 한다.In step S260, the
도 5 및 도 6에서 설명한 본 발명의 실시 예에 따르면 데이터 저장 장치(100)는 각 채널의 각 뱅크(Bank)에서 유휴 시간(Idle Time)을 최소한으로 줄일 수 있다. 결국, 전반적으로 유휴 시간(Idle Time)이 감소하여 데이터 저장 장치(100)의 성능은 향상될 수 있다. 그리고 이상에서 살펴본 복수의 명령들을 스케줄링 하는 방법은 예시적인 것이고, 함께 스케줄링 될 명령들의 개수를 결정하는 방법은 이상의 실시 예에 의해 한정되지 않는다.According to the embodiment of the present invention described in FIGS. 5 and 6, the
본 발명에 따른 저장 매체 그리고/또는 메모리 컨트롤러는 다양한 형태들의 패키지를 이용하여 실장 될 수 있다. 예를 들면, 본 발명에 따른 저장 매체 그리고/또는 메모리 컨트롤러는 PoP(Package on Package), Ball grid arrays(BGAs), Chip scale packages(CSPs), Plastic Leaded Chip Carrier(PLCC), Plastic Dual In-Line Package(PDIP), Die in Waffle Pack, Die in Wafer Form, Chip On Board(COB), Ceramic Dual In-Line Package(CERDIP), Plastic 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.
상기 뱅크는 상기 불휘발성 메모리 장치들 중 적어도 하나를 포함하는 명령어 스케줄링 방법.The method according to claim 1,
Wherein the bank comprises at least one of the non-volatile memory devices.
상기 연속적으로 수행될 적어도 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.
상기 연속적으로 수행될 적어도 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.
제 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.
상기 제 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.
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)
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)
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)
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 |
-
2013
- 2013-06-04 KR KR1020130064069A patent/KR102079939B1/en active IP Right Grant
Patent Citations (5)
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)
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 |