KR100817203B1 - Method for reading data of a nonvolatile storage device - Google Patents

Method for reading data of a nonvolatile storage device Download PDF

Info

Publication number
KR100817203B1
KR100817203B1 KR1020060133120A KR20060133120A KR100817203B1 KR 100817203 B1 KR100817203 B1 KR 100817203B1 KR 1020060133120 A KR1020060133120 A KR 1020060133120A KR 20060133120 A KR20060133120 A KR 20060133120A KR 100817203 B1 KR100817203 B1 KR 100817203B1
Authority
KR
South Korea
Prior art keywords
data
timestamp
host
storage device
fsm
Prior art date
Application number
KR1020060133120A
Other languages
Korean (ko)
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 KR1020060133120A priority Critical patent/KR100817203B1/en
Application granted granted Critical
Publication of KR100817203B1 publication Critical patent/KR100817203B1/en

Links

Images

Classifications

    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • 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
    • 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]
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/26Sensing or reading circuits; Data output circuits

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Read Only Memory (AREA)

Abstract

A method for reading data of a nonvolatile storage device is provided to synchronize data transmission by operating a storage FSM(Finite State Machine) and a host FSM in parallel without firmware change, by using a register capable of being accessed by the storage FSM and the host FSM at the same time as a time stamp register. According to a method for reading data of a nonvolatile storage device(330), data of a first number of blocks are read from the nonvolatile storage device and then data of the blocks are stored in a data buffer(360). In correspondence to storage the block data in the data buffer, first time stamp is increased and is stored in a time stamp register(370). It is determined to transmit the data of the blocks stored in the data buffer to a host(310), by comparing the first time stamp with second time stamp.

Description

비휘발성 저장장치의 데이터 판독 방법{Method for Reading Data of a Nonvolatile Storage Device}Method for Reading Data of a Nonvolatile Storage Device

도 1은 종래 기술에 따라 FIFO를 이용하여 데이터를 버퍼링하는 데이터 스토리지 시스템을 도시한 도면. 1 illustrates a data storage system for buffering data using FIFOs according to the prior art.

도 2는 종래 기술에 따라 캐시 메모리를 이용하여 데이터를 버퍼링하는 데이터 스토리지 시스템을 도시한 도면.2 illustrates a data storage system for buffering data using cache memory in accordance with the prior art.

도 3은 본 발명의 일실시예에 따른 타임스탬프 레지스터를 이용하여 Storage FSM 및 Host FSM(Finite State Machine)이 펌웨어의 개입 없이 병렬적으로 동작하는 데이터 스토리지 시스템을 도시한 도면.3 is a diagram illustrating a data storage system in which a Storage FSM and a Host Finite State Machine (FSM) operate in parallel without firmware intervention by using a timestamp register according to an embodiment of the present invention.

도 4는 본 발명의 일실시예에 따른 비휘발성 저장장치의 데이터 판독 방법의 순서를 도시한 흐름도.4 is a flowchart illustrating a procedure of a data reading method of a nonvolatile storage device according to an embodiment of the present invention.

도 5는 본 발명의 일실시예에 따른 Storage FSM의 동작 흐름도.5 is an operation flowchart of a Storage FSM according to an embodiment of the present invention.

도 6은 본 발명의 일실시예에 따른 Host FSM의 동작 흐름도.6 is an operation flowchart of a Host FSM according to an embodiment of the present invention.

본 발명은 비휘발성 저장장치의 데이터 판독 방법에 관한 것으로, 더욱 상세 하게는 Storage FSM 및 Host FSM(Finite State Machine)이 펌웨어의 개입 없이 병렬적으로 동작하게 함으로써 데이터 전송을 동기화하는 비휘발성 저장장치의 데이터 판독 방법에 관한 것이다.The present invention relates to a method of reading data of a nonvolatile storage device, and more particularly, to a storage FSM and a host finite state machine (FSM) operating in parallel without firmware intervention to synchronize data transfers. It relates to a data reading method.

현대 사회에서 컴퓨터가 차지하는 비중은 매우 크다. 컴퓨터를 이용한 작업은 기본적으로 데이터의 처리 및 저장이라 할 수 있다. 이 중에서 데이터 처리를 수행하는 CPU(중앙 처리 장치)는 반도체 집적 기술의 급격한 발달로 인해 매우 빠른 속도로 향상되고 있지만, 데이터 저장장치는 용량 면에서는 많은 발전이 있는 반면, 성능 면에서는 중앙 처리 장치의 성능 향상을 따라가지 못하고 있다. 전체 시스템 효율의 저하를 초래하는 데이터 저장장치의 병목을 해결하기 위하여 많은 기법들이 고안 및 사용되고 있으며, 이 중 호스트 시스템에서 데이터 저장장치 내부에 이르기까지 여러 단계에 걸쳐 사용되고 있는 메모리 계층 구조를 이용하는 방법이 가장 많이 연구가 되어왔다. In modern society, the proportion of computers is very large. Computer-based work is basically the processing and storage of data. Among them, the central processing unit (CPU) that performs data processing is rapidly improving due to the rapid development of semiconductor integrated technology.However, the data storage device has much progress in terms of capacity, while in terms of performance, It doesn't keep up with performance improvements. Many techniques have been devised and used to solve the bottleneck of the data storage device which causes the deterioration of the overall system efficiency. Among them, the method using the memory hierarchy, which is used in various stages from the host system to the data storage device, is used. Most research has been done.

호스트 시스템에서는 비교적 많은 양의 메모리 버퍼를 이용하고 성능 향상을 위해 복잡한 알고리즘을 사용할 수 있지만, 데이터 저장장치 내부에서 사용되는 버퍼는 마이크로 컨트롤러의 성능 제한과 메모리 크기 제한, 또한 하드웨어적인 고속 전송의 필요성 등에 의해 단순하면서도 빠른 알고리즘이 주로 채택된다.Host systems can use a relatively large amount of memory buffers and use complex algorithms to improve performance, but buffers used within data storage devices are limited in the performance limitations of microcontrollers, memory size limitations, and the need for high-speed hardware transfers. Simple and fast algorithms are mainly adopted.

일반적으로 데이터 저장장치에는 호스트 인터페이스, 비휘발성 저장장치, 데이터버퍼 등이 사용되며, 호스트 인터페이스와 데이터버퍼간의 데이터 전송을 위한 Host FSM, 데이터버퍼와 비휘발성 저장장치간의 데이터 전송을 위한 Storage FSM, 상기 각각의 FSM을 제어하며 전체 데이터 저장장치 시스템의 동작을 총괄하는 펌웨 어(Firmware) 등이 존재한다.Generally, a host interface, a nonvolatile storage device, and a data buffer are used for the data storage device. A host FSM for data transfer between the host interface and the data buffer, a Storage FSM for data transfer between the data buffer and the nonvolatile storage device, and There are firmwares that control each FSM and oversee the operation of the entire data storage system.

펌웨어는 Storage FSM 및 Host FSM에게 저수준의 명령(low level command)을 내리고, 각 FSM 은 해당 작업을 종료하거나 추가의 펌웨어 지원이 필요할 경우 인터럽트를 통해 펌웨어와 통신을 하게 된다. 펌웨어는 전체 데이터 저장장치의 동작을 제어하기 때문에 잦은 인터럽트로 인해 펌웨어의 동작이 자주 중단되면 급격한 성능 저하가 일어난다.The firmware issues low-level commands to the Storage FSM and Host FSM, and each FSM communicates with the firmware through an interrupt when it completes its task or requires additional firmware support. Since the firmware controls the operation of the entire data storage device, if the firmware is frequently interrupted due to frequent interrupts, a sudden decrease in performance occurs.

비휘발성 저장장치는 전원이 끊어져도 정보를 유지하고 있어 전원이 공급되면 다시 저장된 정보를 사용할 수 있는 기억 매체로, ROM, 자기 테이프, 자기 코어, 자기 디스크, 자기 원통 등이 있으며, 본 발명에서는 데이터가 저장된 후에 전원이 공급되지 않아도 데이터를 유지하는 플래시 메모리(Flash memory)를 예로서 설명한다.A nonvolatile storage device maintains information even when power is cut off. The nonvolatile storage device maintains information when power is supplied, and includes a ROM, a magnetic tape, a magnetic core, a magnetic disk, a magnetic cylinder, and the like. A flash memory that retains data even after power is stored is described as an example.

도 1은 종래 기술에 따라 FIFO(First-Input First-Out)를 이용하여 데이터를 버퍼링하는 데이터 스토리지 시스템을 도시한 도면이다.1 is a diagram illustrating a data storage system for buffering data using first-input first-out (FIFO) according to the prior art.

종래에는 데이터버퍼(160)를 단지 저속의 비휘발성 저장장치(130)와 고속의 호스트(110) 인터페이스 사이에서 데이터를 버퍼링하는 용도로만 사용하였다. 이 경우 한번 비휘발성 저장장치(130)에서 호스트(110)로, 또는 호스트(110)에서 비휘발성 저장장치(130)로 데이터가 전송된 후에는 데이터버퍼(160)의 데이터를 더 이상 사용할 수 없고, 다시 비휘발성 저장장치(130) 또는 호스트(110)에서 데이터를 데이터버퍼(160)로 읽어와야 했다. 이때 펌웨어(150)의 역할은 거의 필요하지 않으며, Storage FSM(140) 및 Host FSM(120) 역시 간단한 로직에 의해 데이터 전송을 수행할 수 있고, 데이터버퍼(160)는 일반적인 FIFO를 이용하게 된다. In the past, the data buffer 160 was used only for buffering data between the low speed nonvolatile storage device 130 and the high speed host 110 interface. In this case, once data is transferred from the nonvolatile storage device 130 to the host 110 or from the host 110 to the nonvolatile storage device 130, the data of the data buffer 160 may no longer be used. In addition, data has to be read from the nonvolatile storage device 130 or the host 110 to the data buffer 160. At this time, the role of the firmware 150 is rarely required, and the Storage FSM 140 and the Host FSM 120 may also perform data transmission by simple logic, and the data buffer 160 uses a general FIFO.

최근에는 데이터버퍼를 캐시 메모리로 이용함으로써 더욱 성능을 향상시키고 있다. 도 2는 캐시 메모리를 이용하여 데이터를 버퍼링하는 데이터 스토리지 시스템을 도시한 도면이다.Recently, data buffers are used as cache memory to improve performance. 2 illustrates a data storage system for buffering data using a cache memory.

펌웨어(250)는 현재 데이터버퍼(260)에 있는 데이터들을 동적으로 추적함으로써 호스트(210)로부터의 읽기 요청이 데이터버퍼(260)에 있는 내용일 경우 비휘발성 저장장치(230)를 다시 접근하지 않고 버퍼메모리에서 바로 읽어가라는 명령을 Host FSM(220)에 주게 된다. The firmware 250 dynamically tracks the data currently in the data buffer 260 so that if the read request from the host 210 is in the data buffer 260, the firmware 250 does not access the nonvolatile storage device 230 again. The command to read directly from the buffer memory is given to the Host FSM 220.

만약 호스트(210)로부터의 읽기 요청에 해당하는 데이터가 데이터버퍼(260)에 없고, 비휘발성 저장장치(230)로부터 읽어서 호스트(210)로 전송해야 할 경우, Storage FSM(240)에게는 해당 데이터를 비휘발성 저장장치(230)에서 읽어 데이터버퍼의 일정 영역으로 저장하는 명령을, 그리고 Host FSM(220)에게는 상기된 데이터버퍼(260)의 일정 영역에서 데이터를 읽어 호스트(210)로 전송하는 명령을 내리게 된다. If data corresponding to a read request from the host 210 does not exist in the data buffer 260, and the data is to be read from the nonvolatile storage device 230 and transmitted to the host 210, the storage FSM 240 sends the corresponding data to the storage 210. A command for reading from the nonvolatile storage device 230 and storing the data in a predetermined area of the data buffer, and a command for reading the data from the predetermined area of the data buffer 260 and transmitting it to the host 210. Get off.

이때, 각 FSM들을 단순히 병렬적으로 동작시킬 경우, Storage data가 완전히 데이터버퍼(260)에 도달하기 전에 Host FSM(220)이 데이터버퍼의 내용을 읽어서 호스트(210)로 전송하게 되어, 잘못된 데이터가 전송될 수 있다. In this case, when each FSM is simply operated in parallel, the host FSM 220 reads the contents of the data buffer and transmits the contents to the host 210 before the storage data reaches the data buffer 260 completely. Can be sent.

상기 문제를 피하기 위하여 일반적으로 전체 read data를 비휘발성 저장장치(230)로부터 데이터버퍼(260)로 옮기는 명령을 Storage FSM(240)에게 주고, Storage FSM(240)이 해당 작업을 마친 후 인터럽트를 통해 펌웨어(250)에게 작업 종료를 알려주면 펌웨어(250)는 해당 데이터를 데이터버퍼(260)에서 읽어 호스트(210)로 전송하라는 명령을 Host FSM(220)에게 주게 된다. 상기 명령에 의해 Host FSM(220)이 데이터 전송을 종료하면 전체 작업을 마치게 된다. 이렇게 단계적으로 Storage FSM(240) 및 Host FSM(220)을 동작시킬 경우 많은 양의 데이터를 고속으로 전송하는 것이 어려워 진다. In order to avoid the problem, generally, a command to move the entire read data from the nonvolatile storage device 230 to the data buffer 260 is given to the Storage FSM 240, and the Storage FSM 240 performs an interrupt after completing the operation. When the firmware 250 notifies the end of the operation, the firmware 250 gives a command to the Host FSM 220 to read the data from the data buffer 260 and transmit the data to the host 210. When the host FSM 220 terminates the data transmission by the command, the entire work is completed. When operating the Storage FSM 240 and the Host FSM 220 in this manner it is difficult to transfer a large amount of data at high speed.

이를 해결하기 위해 전체 데이터를 작은 블록 단위로 나누어 처리할 경우 Storage FSM(240) 및 Host FSM(220)간의 병렬성은 증대시킬 수 있지만, 인터럽트 횟수가 많아져 펌웨어(260)의 개입이 많아지므로 역시 많은 성능 향상을 기대할 수 없다.In order to solve this problem, if the entire data is divided into small block units, the parallelism between the Storage FSM 240 and the Host FSM 220 may be increased, but since the number of interrupts increases, the intervention of the firmware 260 may increase. You cannot expect performance improvements.

이에 따라 Storage FSM 및 Host FSM이 펌웨어의 개입 없이 병렬적으로 동작하게 함으로써 데이터 전송을 동기화하는 기술의 개발이 요구되었다.Accordingly, the development of a technology for synchronizing data transmission by allowing the Storage FSM and the Host FSM to operate in parallel without firmware intervention is required.

따라서, 본 발명은 상술한 종래의 문제점을 극복하기 위한 것으로서, Storage FSM 및 Host FSM이 동시에 접근할 수 있는 소량(예를 들어, 1 word)의 레지스터를 추가하여 타임스탬프 레지스터로 사용함으로써 펌웨어의 개입 없이 Storage FSM 및 Host FSM이 병렬적으로 동작하여 데이터 전송을 동기화할 수 있도록 하는 것을 목적으로 한다.Accordingly, the present invention is to overcome the above-mentioned conventional problems, by adding a small amount (for example, 1 word) registers that can be accessed by the Storage FSM and the Host FSM at the same time to use as a time stamp register, the intervention of the firmware Its purpose is to enable Storage FSM and Host FSM to operate in parallel to synchronize data transfer.

또한, 본 발명에 따른 비휘발성 저장장치의 데이터 판독 방법은 비휘발성 저장장치로부터 데이터버퍼로 read data를 모두 읽어올 때까지 기다리지 않고도, 데이터버퍼로 읽어온 일부의 데이터를 바로 호스트로 전송할 수 있도록 하는 것을 그 목적으로 한다.In addition, the data read method of the non-volatile storage device according to the present invention allows to transfer a portion of the data read to the data buffer directly to the host without waiting until all the read data to read from the non-volatile storage device to the data buffer For that purpose.

상기와 같은 본 발명의 목적을 달성하고 상술한 종래 기술의 문제점을 해결하기 위한 본 발명에 따른 비휘발성 저장장치의 데이터 판독 방법은, 비휘발성 저장장치로부터 제1 개수의 블록의 데이터를 판독하여 상기 제1 개수의 블록의 데이터를 데이터버퍼에 저장하는 제1 단계, 상기 저장에 대응하여, 제1 타임스탬프를 증가시키고, 상기 제1 타임스탬프를 타임스탬프 레지스터에 저장하는 제2 단계, 및 상기 타임스탬프 레지스터에 저장된 값 및 제2 타임스탬프를 비교하여, 상기 데이터버퍼에 저장된 상기 제1 개수의 블록의 데이터를 호스트로 전송할지 여부를 결정하는 제3 단계를 포함한다.A data reading method of a nonvolatile storage device according to the present invention for achieving the object of the present invention as described above and to solve the problems of the prior art described above, by reading the first number of blocks of data from the nonvolatile storage device; A first step of storing data of a first number of blocks in a data buffer, a second step of increasing a first timestamp corresponding to the storage, and storing the first timestamp in a timestamp register, and the time And comparing a second timestamp with a value stored in a stamp register to determine whether to transmit data of the first number of blocks stored in the data buffer to a host.

본 발명의 일측에 따른 비휘발성 저장장치의 데이터 판독 방법은, 상기 데이터 버퍼에 저장된 상기 제1 개수의 블록의 데이터를 상기 호스트로 전송하는 경우, 상기 제2 타임스탬프를 변경하는 제4 단계를 더 포함한다.The data reading method of a nonvolatile storage device according to an aspect of the present invention may further include a fourth step of changing the second timestamp when data of the first number of blocks stored in the data buffer is transmitted to the host. Include.

본 발명의 또 다른 일측에 따른 비휘발성 저장장치의 데이터 판독 방법은, 비휘발성 저장장치로부터 제1 개수의 블록의 데이터를 판독하여 상기 제1 개수의 블록의 데이터를 데이터 버퍼에 저장하는 제1 단계, 상기 저장에 대응하여, 제1 타임스탬프를 변경하는 제2 단계, 상기 제1 타임스탬프에 기초하여, 상기 데이터 버퍼에 저장된 상기 제1 개수의 블록의 데이터를 호스트로 전송할지 여부를 결정하는 제3 단계를 포함한다.According to another aspect of the present invention, a data reading method of a nonvolatile storage device includes: reading a data of a first number of blocks from a nonvolatile storage device and storing data of the first number of blocks in a data buffer; And a second step of changing a first timestamp in response to the storage, and determining whether to transmit data of the first number of blocks stored in the data buffer to a host based on the first timestamp. Includes three steps.

본 발명의 또 다른 일측에 따른 비휘발성 저장장치의 데이터 판독 방법은, 상기 데이터 버퍼에 저장된 상기 제1 개수의 블록의 데이터를 상기 호스트로 전송하는 경우, 상기 제2 타임스탬프를 변경하는 제4 단계 및 상기 변경된 제1 타임스탬프를 타임스탬프 레지스터에 저장하는 제5 단계를 더 포함한다.According to another aspect of the present invention, there is provided a data reading method of a nonvolatile storage device, the fourth step of changing the second timestamp when data of the first number of blocks stored in the data buffer is transmitted to the host. And a fifth step of storing the modified first timestamp in a timestamp register.

이하 첨부 도면들 및 첨부 도면들에 기재된 내용들을 참조하여 본 발명의 바람직한 실시예를 상세하게 설명하지만, 본 발명이 실시예들에 의해 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조부호는 동일한 부재를 나타낸다.Hereinafter, exemplary embodiments of the present invention will be described in detail with reference to the accompanying drawings and the contents described in the accompanying drawings, but the present invention is not limited or limited to the embodiments. Like reference numerals in the drawings denote like elements.

도 3은 본 발명의 일실시예에 따른 타임스탬프 레지스터를 이용하여 Storage FSM 및 Host FSM이 펌웨어의 개입 없이 병렬적으로 동작하는 데이터 스토리지 시스템을 도시한 도면이다.3 is a diagram illustrating a data storage system in which a Storage FSM and a Host FSM operate in parallel without firmware intervention by using a timestamp register according to an exemplary embodiment of the present invention.

도면에 도시된 바와 같이, 호스트(310)로부터 read 요청을 수신하면, 펌웨어(350)는 해당 데이터가 데이터버퍼(360)에 있는지 확인한다. 해당 데이터가 데이터버퍼(360)에 있으면 해당 데이터를 호스트(310)로 전달하고, 데이터버퍼(360)에 없으면, 펌웨어(350)는 데이터버퍼(360) 내에 읽어온 데이터를 저장하는데 필요한 가용 공간(free space)을 확보한다. As shown in the figure, upon receiving a read request from the host 310, the firmware 350 checks whether the corresponding data is in the data buffer 360. If the data is in the data buffer 360, the data is transferred to the host 310. If the data is not in the data buffer 360, the firmware 350 stores the available space required to store the data read in the data buffer 360. free space).

그 다음으로, 펌웨어(350)는 타임스탬프 레지스터(370) 값을 소정의 값으로 초기화한다. 본 발명의 일실시예에 따르면, 펌웨어(350)는 타임스탬프 레지스터(370) 값을 Host FSM(320) 및 Storage FSM(340)에 전달되는 타임스탬프의 값보다 작은 임의의 값으로 초기화한다. 본 발명의 또 다른 실시예에 따르면, 타임스탬프 레지스터(370)의 값을 '0'으로 초기화를 하고, 각각의 FSM에게 전달하는 타임스탬 프 역시 '0'으로 설정할 수 있다.The firmware 350 then initializes the time stamp register 370 value to a predetermined value. According to one embodiment of the invention, the firmware 350 initializes the timestamp register 370 value to any value less than the value of the timestamp delivered to the Host FSM 320 and the Storage FSM 340. According to another embodiment of the present invention, the time stamp register 370 initializes the value to '0', and the time stamp transmitted to each FSM may also be set to '0'.

그 다음으로, 펌웨어(350)는 Storage FSM(340)에게 읽어오려는 데이터가 저장된 비휘발성 저장장치(330)의 시작 주소 pa(physical address), 전송해야 할 블록의 개수 cnt(count), 비휘발성 저장장치(330)로부터 읽은 데이터를 저장할 데이터버퍼(360)의 주소 ba(buffer address), 및 시작 타임스탬프 ts(start timestamp)를 전달하고, Host FSM(320)에게 해당 데이터가 저장된 상기 데이터버퍼(360) 주소 ba2, 상기 블록의 개수 cnt2, 및 상기 시작 타임스탬프 ts2를 전달한다. Next, the firmware 350 stores the starting address pa (physical address) of the nonvolatile storage device 330 in which data to be read to the Storage FSM 340 is stored, the number of blocks to be transmitted, cnt (count), and the nonvolatile storage. The address ba (buffer address) of the data buffer 360 to store the data read from the device 330, and a start timestamp ts (start timestamp) are transmitted to the host FSM 320, and the data buffer 360 stores the data. ) Transfers the address ba2, the number cnt2 of the blocks, and the start timestamp ts2.

이하에서는 도 3을 참조하여 도 4에 도시된 본 발명의 실시예에 따른 비휘발성 저장장치의 데이터 판독 방법의 순서를 상세히 설명한다.Hereinafter, a procedure of a data reading method of a nonvolatile storage device according to an exemplary embodiment of the present invention shown in FIG. 4 will be described in detail with reference to FIG. 3.

단계(410)에서 펌웨어(350)는 제1 타임스탬프 및 제2 타임스탬프의 초기값을 동일하게 설정하여(예를 들어, '0') Host FSM(320) 및 Storage FSM(340)으로 각각 전달한다. 상기 제1 타임스탬프는 비휘발성 저장장치(330)로부터 데이터버퍼(360)로의 저장에 대응하고, 상기 제2 타임스탬프는 데이터버퍼(360)로부터 호스트(310)로의 전송에 대응한다. In step 410, the firmware 350 sets the initial values of the first timestamp and the second timestamp equally (for example, '0') and delivers them to the Host FSM 320 and the Storage FSM 340, respectively. do. The first time stamp corresponds to storage from the nonvolatile storage device 330 to the data buffer 360, and the second time stamp corresponds to transmission from the data buffer 360 to the host 310.

각 데이터 블록이 전송되는 것을 Host FSM(320) 및 Storage FSM(340)이 펌웨어의 개입없이 알 수 있도록 하기 위해, 단계(410)에서 동일하게 설정된 제1 타임스탬프 및 상기 제2 타임스탬프의 초기값을, 각 데이터 블록이 전송될 때마다 동일한 비율로 변경시키고, 이를 비교함으로써 알 수 있도록 한다. Initial values of the first timestamp and the second timestamp set equally in step 410 so that the Host FSM 320 and the Storage FSM 340 knows each data block is transmitted without the intervention of firmware. It can be known by changing each data block at the same rate as it is transmitted and comparing them.

단계(420)에서 Storage FSM(340)은 제1 개수의 블록의 데이터를 판독하여 데이터버퍼(360)에 저장하고, 단계(430)에서 제1 타임스탬프를 변경한다. 비휘발성 저장장치(330)로부터 데이터버퍼(360)로 데이터 블록이 모두 전송되지 않은 경우, 다시 단계(420)로 가서 다음 데이터 블록을 전송하고, 데이터 블록이 모두 전송되면 종료한다.In operation 420, the storage FSM 340 reads the data of the first number of blocks, stores the data in the data buffer 360, and changes the first time stamp in operation 430. If all data blocks have not been transmitted from the nonvolatile storage device 330 to the data buffer 360, the process returns to step 420 to transmit the next data block and ends when all data blocks are transmitted.

단계(440)에서 Host FSM(320)은 변경된 제1 타임스탬프의 값과 제2 타임스탬프의 값을 비교하여, 데이터버퍼(360)에 저장된 상기 제1 개수의 블록의 데이터를 호스트(310)로 전송할지 여부를 결정한다. In operation 440, the host FSM 320 compares the changed value of the first time stamp with the value of the second time stamp, and transmits the data of the first number of blocks stored in the data buffer 360 to the host 310. Determine whether to send.

이때, 각 FSM으로부터 접근 가능한 타임스탬프 레지스터를 사용하여 비교할 수 있다. 비휘발성 저장장치(330)로부터 데이터버퍼(360)로의 데이터 블록 저장에 대응하여, Host FSM(320)은 제1 타임스탬프의 값을 변경하여 타임스탬프 레지스터에 저장하고, Storage FSM(340)은 상기 타임스탬프 레지스터로부터 변경된 제1 타임스탬프의 값을 판독하여 제2 타임스탬프의 값과 비교할 수 있다.At this time, a comparison can be made using a timestamp register accessible from each FSM. In response to storing the data block from the nonvolatile storage device 330 to the data buffer 360, the Host FSM 320 changes the value of the first timestamp and stores the value in the timestamp register, and the Storage FSM 340 stores the data block. The value of the changed first timestamp may be read from the timestamp register and compared with the value of the second timestamp.

단계(440)에서의 비교 결과 데이터버퍼(360)에 비활성 저장장치(330)로부터 읽어온 데이터 블록이 있다고 판단된 경우, Host FSM(320)은 데이터버퍼(360)로부터 호스트(310)로 상기 데이터 블록을 전송하고(단계 450), 단계(460)에서 제2 타임스탬프를 변경한다. 데이터버퍼(360)로부터 호스트(310)로 데이터 블록이 모두 전송되지 않은 경우 다시 단계(440)를 진행하고, 데이터 블록이 모두 전송되면 종료한다.If it is determined in step 440 that the data buffer 360 has a data block read from the inactive storage device 330, the Host FSM 320 sends the data from the data buffer 360 to the host 310. The block is sent (step 450), and in step 460 the second timestamp is changed. If all data blocks are not transmitted from the data buffer 360 to the host 310, the process proceeds to step 440 again, and ends when all data blocks are transmitted.

예를 들어, 단계(410)에서 펌웨어(350)는 제1 타임스탬프 및 제2 타임스탬프의 초기값을 '0'으로 동일하게 설정하고, 단계(420)에서 Storage FSM(340)는 비휘발성 저장장치(330)로부터 데이터버퍼(360)로 데이터 블록의 전송하고, 이에 대응 하여 단계(430)에서 제1 타임스탬프를 1만큼 증가시킨 후, 단계(440)에서 제2 타임스탬프의 값이 제1 타임스탬프의 값보다 작은 경우, Host FSM(310)은 상기 데이터 블록을 호스트(310)로 읽어오고(단계 450), 이에 대응하여 단계(460)에서 제2 타임스탬프 역시 1만큼 증가시킨다. For example, in step 410 the firmware 350 sets the initial value of the first timestamp and the second timestamp equal to '0', and in step 420 the Storage FSM 340 stores the non-volatile storage. Transmitting the data block from the device 330 to the data buffer 360 and correspondingly increasing the first timestamp by 1 in step 430, and then in step 440 the value of the second timestamp is determined by the first timestamp. If less than the value of the timestamp, the Host FSM 310 reads the data block to the host 310 (step 450), and correspondingly increments the second timestamp by one in step 460 as well.

이하에서는 도 3을 참조하여 도 5에 도시된 본 발명의 실시예에 따른 Storage FSM의 동작 과정을 상세히 설명한다.Hereinafter, an operation process of the storage FSM according to the embodiment of the present invention shown in FIG. 5 will be described in detail with reference to FIG. 3.

단계(510)에서 Storage FSM(340)은 펌웨어(350)로부터 비활성 저장장치(330)의 데이터를 데이터버퍼(360)로 읽어오라는 명령을 기다린다.In operation 510, the Storage FSM 340 waits for a command to read data from the inactive storage device 330 from the firmware 350 to the data buffer 360.

단계(520)에서 펌웨어(350)로부터의 상기 명령을 받은 경우, 즉, 비휘발성 저장장치(330)의 주소 pa, 전송해야 할 블록의 개수 cnt, 데이터버퍼(360)의 주소 ba, 및 시작 타임스탬프 ts를 수신한 경우, 전송해야 할 블록의 개수 cnt가 '0'인지 비교한다. cnt가 '0'인 경우(데이터 블록을 모두 전송한 경우), 단계(510)로 이동하여 펌웨어(350)로부터 다음 명령을 대기하고, cnt가 '0'이 아닌 경우(전송해야할 데이터 블록이 남은 경우), 단계(530, 540)을 진행한다. 명령 수행 초기 단계에서는 cnt가 '0'이 아닌 값을 가지므로 단계(530, 540)으로 이동한다.When the command from the firmware 350 is received in step 520, that is, the address pa of the nonvolatile storage device 330, the number of blocks to be transmitted cnt, the address ba of the data buffer 360, and the start time. When the stamp ts is received, it is compared whether the number cnt of blocks to be transmitted is '0'. If cnt is '0' (when all data blocks have been sent), go to step 510 to wait for the next command from firmware 350, and if cnt is not '0' (remaining data blocks to be sent) Case), proceed to steps 530 and 540. In the initial stage of command execution, since cnt has a value other than '0', the process moves to steps 530 and 540.

단계(530, 540)에서 비휘발성 저장장치(330)의 주소 pa로부터 1 블록을 읽고, 데이터 버퍼(360)의 주소 ba에 저장한다.In operation 530 and 540, one block is read from the address pa of the nonvolatile storage device 330 and stored in the address ba of the data buffer 360.

단계(550)에서는, 다음 루프에서 비휘발성 저장장치(330)로부터 다음 데이터 블록을 읽어 데이터버퍼(360)에 저장하기 위해 pa 및 ba를 1 증가시키고, 전송해야 할 전체 블록의 개수에서 한 블록을 읽었으므로 cnt를 1 감소시킨다. 또한, Host FSM(320)과의 데이터 전송의 동기화를 위해, 제1 타임스탬프 ts 값을 1 증가시킨다.In step 550, in the next loop, pa and ba are increased by 1 to read the next block of data from the nonvolatile storage device 330 and store it in the data buffer 360, and add one block from the total number of blocks to be transmitted. Read it, so decrement cnt by 1. In addition, for synchronization of data transmission with the Host FSM 320, the first timestamp ts value is increased by one.

단계(560)에서 타임스탬프 레지스터(370)에 상기 증가된 ts값을 기록하고, 다시 단계(520)로 이동하여, 모든 블록을 처리하였는지 검사한 후에(cnt가 '0'이 아닌 경우) 아직 처리할 블록이 남았을 경우 단계(520)에서 단계(560)까지의 루프를 반복하고 처리가 모두 끝났을 경우(cnt가 '0'인 경우) 단계 단계(510)로 돌아가 펌웨어(350)로부터 다음 명령을 기다린다.In step 560, the increased ts value is recorded in the timestamp register 370, and the flow goes back to step 520 to check that all blocks have been processed (if cnt is not '0'), yet to be processed. If there are blocks left to do, repeat the loop from step 520 to step 560, and if the processing is complete (cnt is '0'), return to step step 510 and wait for the next command from the firmware 350. .

이하에서는 도 3을 참조하여 도 6에 도시된 본 발명의 실시예에 따른 HostFSM의 동작 과정을 상세히 설명한다.Hereinafter, an operation process of the HostFSM according to the embodiment of the present invention shown in FIG. 6 will be described in detail with reference to FIG. 3.

단계(610)에서 전체 시스템이 동작을 시작한 후에 Host FSM(320)은 펌웨어(350)로부터 데이터버퍼(360)의 데이터를 호스트(310)로 읽어오라는 명령을 기다린다.After the entire system starts operation at step 610, the Host FSM 320 waits for a command to read data from the data buffer 360 from the firmware 350 to the host 310.

단계(620)에서 펌웨어(350)로부터의 상기 명령을 받은 경우, 즉, 상기 데이터버퍼(360)의 주소 ba2, 상기 블록의 개수 cnt2, 및 시작 타임스탬프 ts2를 수신한 경우, 블록의 개수 cnt2가 '0'인지 비교한다. cnt2가 '0'인 경우(데이터 블록을 모두 전송한 경우), 단계(610)로 이동하여 펌웨어(350)로부터 다음 명령을 대기하고, cnt2가 '0'이 아닌 경우(전송해야할 데이터 블록이 남은 경우), 단계(630)을 진행한다. 명령 수행 초기 단계에서는 cnt2가 '0'이 아닌 값을 가지므로 단계(630)으로 이동한다.When receiving the command from the firmware 350 in step 620, that is, when the address ba2 of the data buffer 360, the number of blocks cnt2, and the start timestamp ts2 are received, the number of blocks cnt2 is Compares to '0' If cnt2 is '0' (when all data blocks have been sent), go to step 610 to wait for the next command from firmware 350, and if cnt2 is not '0' (remaining data blocks to be sent) Case), proceed to step 630. In the initial stage of the command execution, since cnt2 has a value other than '0', the process moves to step 630.

단계(630)에서 제2 타임스탬프 ts2가 타임스탬프 레지스터(370)보다 작지 않 은 경우 계속 대기하다가, 타임스탬프 레지스터(370)의 값이 ts2보다 큰 값을 가질 경우 단계(640)을 진행한다. 이때 타임스탬프 레지스터(370)의 값이 ts2 보다 큰 값을 가지게 된다는 것은, 데이터버퍼(360)의 주소 ba2에 있는 블록이 도 5에서 설명된 Storage FSM의 동작에 의해 전송된 유효한 블록임을 보장하는 것이 된다. 즉 펌웨어(350)의 개입 없이 타임스탬프 레지스터(370)를 이용함으로써, Host FSM(320) 및 Storage FSM(340)간의 데이터 동기화를 가능하게 한다.If the second timestamp ts2 is not smaller than the timestamp register 370 in step 630, the process continues to wait. If the value of the timestamp register 370 has a value greater than ts2, step 640 is performed. In this case, the value of the timestamp register 370 having a value greater than ts2 means that the block at the address ba2 of the data buffer 360 is a valid block transmitted by the operation of the Storage FSM described in FIG. 5. do. That is, by using the time stamp register 370 without intervention of the firmware 350, data synchronization between the Host FSM 320 and the Storage FSM 340 is possible.

단계(640)에서 데이터버퍼(360)의 주소 ba2로부터 1 블록을 읽어, 호스트(310)로 전송한다.In operation 640, one block is read from the address ba2 of the data buffer 360 and transmitted to the host 310.

단계(650)에서는, 다음 루프에서 데이터버퍼(360)로부터 다음 데이터 블록을 읽어 호스트(310)로 전송하기 위해 ba2를 1 증가시키고, 전송해야 할 전체 블록의 개수에서 한 블록을 읽었으므로 cnt2를 1 감소시킨다. 또한, Storage FSM(340)과의 데이터 전송의 동기화를 위해, 제2 타임스탬프 ts2 값을 1 증가시키고, 다시 단계(620)로 이동하여, 모든 블록을 처리하였는지 검사한 후에(cnt2가 '0'이 아닌 경우) 아직 처리할 블록이 남았을 경우 단계(620)에서 단계(650)까지의 루프를 반복하고 처리가 모두 끝났을 경우(cnt2가 '0'인 경우) 단계(610)로 돌아가 펌웨어(350)로부터 다음 명령을 기다린다.In step 650, in the next loop, ba2 is increased by one to read the next block of data from the data buffer 360 and transmitted to the host 310, and cnt2 is read because one block is read from the total number of blocks to be transmitted. Decrease. In addition, for synchronization of data transmission with the Storage FSM 340, the second timestamp ts2 value is increased by 1, and the process moves to step 620 again, after checking whether all blocks have been processed (cnt2 is '0'). If not yet) if there are still blocks to process, repeat the loop from step 620 to step 650 and if all processing is complete (cnt2 is '0'), go back to step 610 and firmware 350 Wait for the next command

도 5 및 도 6에서는 각각의 FSM이 전송해야 할 데이터 블록의 개수인 cnt 및 cnt2가 1 인 경우만 보였지만 복수개의 블록을 전송하는 방법으로 간단하게 확장할 수 있다.In FIGS. 5 and 6, only cnt and cnt2, which are the number of data blocks to be transmitted by each FSM, are shown as 1, but can be easily extended by transmitting a plurality of blocks.

또한 본 발명의 실시예들은 다양한 컴퓨터로 구현되는 동작을 수행하기 위한 프로그램 명령을 포함하는 컴퓨터 판독 가능 매체를 포함한다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다.Embodiments of the invention also include computer-readable media containing program instructions for performing various computer-implemented operations. The computer readable medium may include program instructions, data files, data structures, etc. alone or in combination. The medium or program instructions may be those specially designed and constructed for the purposes of the present invention, or they may be of the kind well-known and available to those having skill in the computer software arts. Examples of computer-readable recording media include magnetic media such as hard disks, floppy disks, and magnetic tape, optical media such as CD-ROMs, DVDs, and magnetic disks, such as floppy disks. Magneto-optical media, and hardware devices specifically configured to store and execute program instructions, such as ROM, RAM, flash memory, and the like. Examples of program instructions include not only machine code generated by a compiler, but also high-level language code that can be executed by a computer using an interpreter or the like.

이상과 같이 본 발명은 비록 한정된 실시예와 도면에 의해 설명되었으나, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상의 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다. 그러므로, 본 발명의 범위는 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.As described above, although the present invention has been described with reference to limited embodiments and drawings, the present invention is not limited to the above embodiments, and those skilled in the art to which the present invention pertains various modifications and variations from such descriptions. This is possible. Therefore, the scope of the present invention should not be limited to the described embodiments, but should be determined not only by the claims below but also by the equivalents of the claims.

본 발명에 따르면, Storage FSM 및 Host FSM이 동시에 접근할 수 있는 소량(예를 들어, 1 word)의 레지스터를 추가하여 타임스탬프 레지스터로 사용함으로써 펌웨어의 개입 없이 Storage FSM 및 Host FSM이 병렬적으로 동작하여 데이터 전송을 동기화할 수 있고, 전체 데이터 스토리지 시스템의 성능을 향상시킬 수 있다.According to the present invention, the storage FSM and the Host FSM operate in parallel without firmware intervention by adding a small amount of registers (for example, 1 word) that the Storage FSM and the Host FSM can access simultaneously and using them as time stamp registers. This allows you to synchronize data transfers and improve the performance of your entire data storage system.

또한, 본 발명에 따르면, 비휘발성 저장장치로부터 데이터버퍼로 read data를 모두 읽어올 때까지 기다리지 않고도, 데이터버퍼로 읽어온 일부의 데이터를 바로 호스트로 전송할 수 있다.In addition, according to the present invention, some data read into the data buffer can be directly transmitted to the host without waiting until all read data is read from the nonvolatile storage device into the data buffer.

또한, 본 발명에 따르면, 데이터버퍼를 캐싱 및 버퍼링의 용도로 동시에 사용할 수 있기 때문에 한정된 버퍼 크기를 효율적으로 사용할 수 있다.In addition, according to the present invention, since the data buffer can be used simultaneously for the purposes of caching and buffering, it is possible to efficiently use a limited buffer size.

Claims (12)

비휘발성 저장장치로부터 제1 개수의 블록의 데이터를 판독하여 상기 제1 개수의 블록의 데이터를 데이터버퍼에 저장하는 제1 단계;A first step of reading data of a first number of blocks from a nonvolatile storage device and storing data of the first number of blocks in a data buffer; 상기 저장에 대응하여, 제1 타임스탬프를 증가시키고 타임스탬프 레지스터에 저장하는 제2 단계; 및In response to said storing, a second step of incrementing a first timestamp and storing in a timestamp register; And 상기 제1 타임스탬프 및 제2 타임스탬프를 비교하여, 상기 데이터버퍼에 저장된 상기 제1 개수의 블록의 데이터를 호스트로 전송할지 여부를 결정하는 제3 단계A third step of determining whether to transmit data of the first number of blocks stored in the data buffer to a host by comparing the first time stamp and the second time stamp; 를 포함하는 것을 특징으로 하는 비휘발성 저장장치의 데이터 판독 방법.Data read method of a nonvolatile storage device comprising a. 제1항에 있어서,The method of claim 1, 상기 제1 타임스탬프는 상기 비휘발성 저장장치로부터 상기 데이터버퍼로의 저장에 대응하고, 상기 제2 타임스탬프는 상기 데이터버퍼로부터 상기 호스트로의 전송에 대응하는 것을 특징으로 하는 비휘발성 저장장치의 데이터 판독 방법.Wherein the first timestamp corresponds to storage from the nonvolatile storage device to the data buffer, and the second timestamp corresponds to transfer from the databuffer to the host. Read method. 제1항에 있어서,The method of claim 1, 상기 제1 타임스탬프의 초기값 및 상기 제2 타임스탬프의 초기값은 동일한 것을 특징으로 하는 비휘발성 저장장치의 데이터 판독 방법.And an initial value of the first time stamp and an initial value of the second time stamp are the same. 제1항에 있어서,The method of claim 1, 상기 데이터버퍼에 저장된 상기 제1 개수의 블록의 데이터를 상기 호스트로 전송하는 경우, 상기 제2 타임스탬프를 변경하는 제4 단계A fourth step of changing the second timestamp when transmitting data of the first number of blocks stored in the data buffer to the host; 를 더 포함하는 것을 특징으로 하는 비휘발성 저장장치의 데이터 판독 방법.The data reading method of the nonvolatile storage device further comprising. 비휘발성 저장장치로부터 제1 개수의 블록의 데이터를 판독하여 상기 제1 개수의 블록의 데이터를 데이터버퍼에 저장하는 제1 단계;A first step of reading data of a first number of blocks from a nonvolatile storage device and storing data of the first number of blocks in a data buffer; 상기 저장에 대응하여, 제1 타임스탬프를 변경하는 제2 단계;A second step of changing a first timestamp in response to the storage; 상기 제1 타임스탬프에 기초하여, 상기 데이터버퍼에 저장된 상기 제1 개수의 블록의 데이터를 호스트로 전송할지 여부를 결정하는 제3 단계A third step of determining whether to transmit data of the first number of blocks stored in the data buffer to a host based on the first timestamp 를 포함하는 것을 특징으로 하는 비휘발성 저장장치의 데이터 판독 방법.Data read method of a nonvolatile storage device comprising a. 제5항에 있어서, 상기 제3 단계는,The method of claim 5, wherein the third step, 상기 제1 타임스탬프 및 제2 타임스탬프의 비교 결과에 따라, 상기 데이터버퍼에 저장된 상기 제1 개수의 블록의 데이터를 호스트로 전송할지 여부를 결정하는 것을 특징으로 하는 비휘발성 저장장치의 데이터 판독 방법.And determining whether to transmit data of the first number of blocks stored in the data buffer to a host according to a comparison result of the first time stamp and the second time stamp. . 제6항에 있어서,The method of claim 6, 상기 제1 타임스탬프는 상기 비휘발성 저장장치로부터 상기 데이터버퍼로의 저장에 대응하고, 상기 제2 타임스탬프는 상기 데이터버퍼로부터 상기 호스트로의 전송에 대응하는 것을 특징으로 하는 비휘발성 저장장치의 데이터 판독 방법.Wherein the first timestamp corresponds to storage from the nonvolatile storage device to the data buffer, and the second timestamp corresponds to transfer from the databuffer to the host. Read method. 제7항에 있어서,The method of claim 7, wherein 상기 제1 타임스탬프 및 상기 제2 타임스탬프의 초기값은 동일한 것을 특징으로 하는 비휘발성 저장장치의 데이터 판독 방법.And an initial value of the first time stamp and the second time stamp is the same. 제6항에 있어서,The method of claim 6, 상기 데이터버퍼에 저장된 상기 제1 개수의 블록의 데이터를 상기 호스트로 전송하는 경우, 상기 제2 타임스탬프를 변경하는 제4 단계A fourth step of changing the second timestamp when transmitting data of the first number of blocks stored in the data buffer to the host; 를 더 포함하는 것을 특징으로 하는 비휘발성 저장장치의 데이터 판독 방법.The data reading method of the nonvolatile storage device further comprising. 제5항에 있어서,The method of claim 5, 상기 변경된 제1 타임스탬프를 타임스탬프 레지스터에 저장하는 제5 단계A fifth step of storing the changed first timestamp in a timestamp register 를 더 포함하는 것을 특징으로 하는 비휘발성 저장장치의 데이터 판독 방법.The data reading method of the nonvolatile storage device further comprising. 제10항에 있어서, 상기 제3 단계는,The method of claim 10, wherein the third step, 상기 타임스탬프 레지스터로부터 상기 제1 타임스탬프를 판독하는 단계;Reading the first timestamp from the timestamp register; 상기 제1 타임스탬프 및 제2 타임스탬프를 비교하는 단계; 및Comparing the first timestamp and the second timestamp; And 상기 제1 타임스탬프 및 상기 제2 타임스탬프의 비교 결과에 따라, 상기 데이터버퍼에 저장된 상기 제1 개수의 블록의 데이터를 호스트로 전송할지 여부를 결 정하는 단계Determining whether to transmit data of the first number of blocks stored in the data buffer to a host according to a comparison result of the first timestamp and the second timestamp. 를 포함하는 것을 특징으로 하는 비휘발성 저장장치의 데이터 판독 방법.Data read method of a nonvolatile storage device comprising a. 제1항 내지 제11항 중 어느 한 항의 방법을 실행하는 프로그램을 기록한 컴퓨터 판독가능 기록매체.A computer-readable recording medium having recorded thereon a program for executing the method of any one of claims 1 to 11.
KR1020060133120A 2006-12-22 2006-12-22 Method for reading data of a nonvolatile storage device KR100817203B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020060133120A KR100817203B1 (en) 2006-12-22 2006-12-22 Method for reading data of a nonvolatile storage device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020060133120A KR100817203B1 (en) 2006-12-22 2006-12-22 Method for reading data of a nonvolatile storage device

Publications (1)

Publication Number Publication Date
KR100817203B1 true KR100817203B1 (en) 2008-03-27

Family

ID=39411827

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060133120A KR100817203B1 (en) 2006-12-22 2006-12-22 Method for reading data of a nonvolatile storage device

Country Status (1)

Country Link
KR (1) KR100817203B1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101735590B1 (en) * 2016-01-22 2017-05-15 한양대학교 산학협력단 Transaction extracting apparatus and method thereof

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR19990013405A (en) * 1997-07-10 1999-02-25 포만제프리엘 Cache Coherence Network Adapter for Shared Memory Processing Systems
JP2001184305A (en) 1999-12-22 2001-07-06 Nec Corp External bus controller
KR20050096447A (en) * 2004-03-30 2005-10-06 삼성전자주식회사 Memory card system and method for control maximum ready time thereof
WO2006065575A1 (en) 2004-12-16 2006-06-22 Sandisk Corporation Non-volatile memory and method with multi-stream update tracking

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR19990013405A (en) * 1997-07-10 1999-02-25 포만제프리엘 Cache Coherence Network Adapter for Shared Memory Processing Systems
JP2001184305A (en) 1999-12-22 2001-07-06 Nec Corp External bus controller
KR20050096447A (en) * 2004-03-30 2005-10-06 삼성전자주식회사 Memory card system and method for control maximum ready time thereof
WO2006065575A1 (en) 2004-12-16 2006-06-22 Sandisk Corporation Non-volatile memory and method with multi-stream update tracking

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101735590B1 (en) * 2016-01-22 2017-05-15 한양대학교 산학협력단 Transaction extracting apparatus and method thereof

Similar Documents

Publication Publication Date Title
US10042563B2 (en) Segmenting read requests and interleaving segmented read and write requests to reduce latency and maximize throughput in a flash storage device
US8832333B2 (en) Memory system and data transfer method
KR101245011B1 (en) Method and system for queuing transfers of multiple non-contiguous address ranges with a single command
KR100708128B1 (en) An apparatus and method for controlling nand flash memory
KR101051815B1 (en) Storage controller and storage system
US11635902B2 (en) Storage device processing stream data, system including the same, and operation method
US10203878B2 (en) Near memory accelerator
US20130326113A1 (en) Usage of a flag bit to suppress data transfer in a mass storage system having non-volatile memory
JP2007087388A (en) Memory controller and data processing system comprising the same
US20070162637A1 (en) Method, apparatus and program storage device for enabling multiple asynchronous direct memory access task executions
US9400603B2 (en) Implementing enhanced performance flash memory devices
KR102106261B1 (en) Method of operating memory controller and methods for devices having same
EP3506075A1 (en) Mass storage device capable of fine grained read and/or write operations
CN102521179A (en) Achieving device and achieving method of direct memory access (DMA) reading operation
KR20140032789A (en) Controller of nonvolatile memory device and command scheduling method thereof
US6931501B1 (en) Method and apparatus for merging contiguous like commands
AU2015203828B2 (en) Implementing enhanced performance with read before write to phase change memory to avoid write cancellations
KR20100120518A (en) Data storage device and read commands execution method thereof
KR100817203B1 (en) Method for reading data of a nonvolatile storage device
US10459847B1 (en) Non-volatile memory device application programming interface
CN111176566A (en) eMMC read-write control method supporting queue command and storage medium
TW201342193A (en) High-performance AHCI
US20060277326A1 (en) Data transfer system and method
KR102076248B1 (en) Selective Delay Garbage Collection Method And Memory System Using The Same
US10942672B2 (en) Data transfer method and apparatus for differential data granularities

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20130422

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20140311

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20150212

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20160122

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20180222

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20200302

Year of fee payment: 13