KR100817203B1 - Method for reading data of a nonvolatile storage device - Google Patents
Method for reading data of a nonvolatile storage device Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- 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
-
- 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]
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/26—Sensing 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
Description
도 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
최근에는 데이터버퍼를 캐시 메모리로 이용함으로써 더욱 성능을 향상시키고 있다. 도 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
만약 호스트(210)로부터의 읽기 요청에 해당하는 데이터가 데이터버퍼(260)에 없고, 비휘발성 저장장치(230)로부터 읽어서 호스트(210)로 전송해야 할 경우, Storage FSM(240)에게는 해당 데이터를 비휘발성 저장장치(230)에서 읽어 데이터버퍼의 일정 영역으로 저장하는 명령을, 그리고 Host FSM(220)에게는 상기된 데이터버퍼(260)의 일정 영역에서 데이터를 읽어 호스트(210)로 전송하는 명령을 내리게 된다. If data corresponding to a read request from the
이때, 각 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
상기 문제를 피하기 위하여 일반적으로 전체 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
이를 해결하기 위해 전체 데이터를 작은 블록 단위로 나누어 처리할 경우 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
이에 따라 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
그 다음으로, 펌웨어(350)는 타임스탬프 레지스터(370) 값을 소정의 값으로 초기화한다. 본 발명의 일실시예에 따르면, 펌웨어(350)는 타임스탬프 레지스터(370) 값을 Host FSM(320) 및 Storage FSM(340)에 전달되는 타임스탬프의 값보다 작은 임의의 값으로 초기화한다. 본 발명의 또 다른 실시예에 따르면, 타임스탬프 레지스터(370)의 값을 '0'으로 초기화를 하고, 각각의 FSM에게 전달하는 타임스탬 프 역시 '0'으로 설정할 수 있다.The
그 다음으로, 펌웨어(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
이하에서는 도 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
각 데이터 블록이 전송되는 것을 Host FSM(320) 및 Storage FSM(340)이 펌웨어의 개입없이 알 수 있도록 하기 위해, 단계(410)에서 동일하게 설정된 제1 타임스탬프 및 상기 제2 타임스탬프의 초기값을, 각 데이터 블록이 전송될 때마다 동일한 비율로 변경시키고, 이를 비교함으로써 알 수 있도록 한다. Initial values of the first timestamp and the second timestamp set equally in
단계(420)에서 Storage FSM(340)은 제1 개수의 블록의 데이터를 판독하여 데이터버퍼(360)에 저장하고, 단계(430)에서 제1 타임스탬프를 변경한다. 비휘발성 저장장치(330)로부터 데이터버퍼(360)로 데이터 블록이 모두 전송되지 않은 경우, 다시 단계(420)로 가서 다음 데이터 블록을 전송하고, 데이터 블록이 모두 전송되면 종료한다.In
단계(440)에서 Host FSM(320)은 변경된 제1 타임스탬프의 값과 제2 타임스탬프의 값을 비교하여, 데이터버퍼(360)에 저장된 상기 제1 개수의 블록의 데이터를 호스트(310)로 전송할지 여부를 결정한다. In
이때, 각 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
단계(440)에서의 비교 결과 데이터버퍼(360)에 비활성 저장장치(330)로부터 읽어온 데이터 블록이 있다고 판단된 경우, Host FSM(320)은 데이터버퍼(360)로부터 호스트(310)로 상기 데이터 블록을 전송하고(단계 450), 단계(460)에서 제2 타임스탬프를 변경한다. 데이터버퍼(360)로부터 호스트(310)로 데이터 블록이 모두 전송되지 않은 경우 다시 단계(440)를 진행하고, 데이터 블록이 모두 전송되면 종료한다.If it is determined in
예를 들어, 단계(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
이하에서는 도 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
단계(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
단계(530, 540)에서 비휘발성 저장장치(330)의 주소 pa로부터 1 블록을 읽고, 데이터 버퍼(360)의 주소 ba에 저장한다.In
단계(550)에서는, 다음 루프에서 비휘발성 저장장치(330)로부터 다음 데이터 블록을 읽어 데이터버퍼(360)에 저장하기 위해 pa 및 ba를 1 증가시키고, 전송해야 할 전체 블록의 개수에서 한 블록을 읽었으므로 cnt를 1 감소시킨다. 또한, Host FSM(320)과의 데이터 전송의 동기화를 위해, 제1 타임스탬프 ts 값을 1 증가시킨다.In
단계(560)에서 타임스탬프 레지스터(370)에 상기 증가된 ts값을 기록하고, 다시 단계(520)로 이동하여, 모든 블록을 처리하였는지 검사한 후에(cnt가 '0'이 아닌 경우) 아직 처리할 블록이 남았을 경우 단계(520)에서 단계(560)까지의 루프를 반복하고 처리가 모두 끝났을 경우(cnt가 '0'인 경우) 단계 단계(510)로 돌아가 펌웨어(350)로부터 다음 명령을 기다린다.In
이하에서는 도 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
단계(620)에서 펌웨어(350)로부터의 상기 명령을 받은 경우, 즉, 상기 데이터버퍼(360)의 주소 ba2, 상기 블록의 개수 cnt2, 및 시작 타임스탬프 ts2를 수신한 경우, 블록의 개수 cnt2가 '0'인지 비교한다. cnt2가 '0'인 경우(데이터 블록을 모두 전송한 경우), 단계(610)로 이동하여 펌웨어(350)로부터 다음 명령을 대기하고, cnt2가 '0'이 아닌 경우(전송해야할 데이터 블록이 남은 경우), 단계(630)을 진행한다. 명령 수행 초기 단계에서는 cnt2가 '0'이 아닌 값을 가지므로 단계(630)으로 이동한다.When receiving the command from the
단계(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
단계(640)에서 데이터버퍼(360)의 주소 ba2로부터 1 블록을 읽어, 호스트(310)로 전송한다.In
단계(650)에서는, 다음 루프에서 데이터버퍼(360)로부터 다음 데이터 블록을 읽어 호스트(310)로 전송하기 위해 ba2를 1 증가시키고, 전송해야 할 전체 블록의 개수에서 한 블록을 읽었으므로 cnt2를 1 감소시킨다. 또한, Storage FSM(340)과의 데이터 전송의 동기화를 위해, 제2 타임스탬프 ts2 값을 1 증가시키고, 다시 단계(620)로 이동하여, 모든 블록을 처리하였는지 검사한 후에(cnt2가 '0'이 아닌 경우) 아직 처리할 블록이 남았을 경우 단계(620)에서 단계(650)까지의 루프를 반복하고 처리가 모두 끝났을 경우(cnt2가 '0'인 경우) 단계(610)로 돌아가 펌웨어(350)로부터 다음 명령을 기다린다.In
도 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)
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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101735590B1 (en) * | 2016-01-22 | 2017-05-15 | 한양대학교 산학협력단 | Transaction extracting apparatus and method thereof |
Citations (4)
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 |
-
2006
- 2006-12-22 KR KR1020060133120A patent/KR100817203B1/en active IP Right Grant
Patent Citations (4)
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)
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 |