[go: up one dir, main page]

KR100817203B1 - 비휘발성 저장장치의 데이터 판독 방법 - Google Patents

비휘발성 저장장치의 데이터 판독 방법 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
nonvolatile storage
Prior art date
Legal status (The legal status 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 status listed.)
Expired - Fee Related
Application number
KR1020060133120A
Other languages
English (en)
Inventor
조유근
민상렬
이수관
한주선
Original Assignee
재단법인서울대학교산학협력재단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 재단법인서울대학교산학협력재단 filed Critical 재단법인서울대학교산학협력재단
Priority to KR1020060133120A priority Critical patent/KR100817203B1/ko
Application granted granted Critical
Publication of KR100817203B1 publication Critical patent/KR100817203B1/ko
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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

본 발명은 비휘발성 저장장치의 데이터 판독 방법에 관한 것으로, 더욱 상세하게는 Storage FSM 및 Host FSM(Finite State Machine)이 타임스탬프를 이용하여 펌웨어의 개입 없이 병렬적으로 동작하게 함으로써 데이터 전송을 동기화하는 비휘발성 저장장치의 데이터 판독 방법에 관한 것이다. 본 발명에 따르는 비휘발성 저장장치의 데이터 판독 방법은, 비휘발성 저장장치로부터 제1 개수의 블록의 데이터를 판독하여 상기 제1 개수의 블록의 데이터를 데이터버퍼에 저장하는 제1 단계, 상기 저장에 대응하여, 제1 타임스탬프를 증가시키고 타임스탬프 레지스터에 저장하는 제2 단계, 및 상기 제1 타임스탬프 및 제2 타임스탬프를 비교하여, 상기 데이터버퍼에 저장된 상기 제1 개수의 블록의 데이터를 호스트로 전송할지 여부를 결정하는 제3 단계를 포함한다. 또한, 본 발명에 따르면 비휘발성 저장장치로부터 데이터버퍼로 읽어온 일부의 데이터 블록을, 데이터버퍼에 모든 데이터가 찰 때까지 기다리지 않고도 호스트로 읽어올 수 있게 된다.
비휘발성 저장장치(Nonvolatile Storage Device), 플래시 메모리(Flash Memory), 데이터(Data), 판독, 버퍼(Buffer), 펌웨어(Firmware), 타임스탬프(Timestamp), 레지스터

Description

비휘발성 저장장치의 데이터 판독 방법{Method for Reading Data of a Nonvolatile Storage Device}
도 1은 종래 기술에 따라 FIFO를 이용하여 데이터를 버퍼링하는 데이터 스토리지 시스템을 도시한 도면.
도 2는 종래 기술에 따라 캐시 메모리를 이용하여 데이터를 버퍼링하는 데이터 스토리지 시스템을 도시한 도면.
도 3은 본 발명의 일실시예에 따른 타임스탬프 레지스터를 이용하여 Storage FSM 및 Host FSM(Finite State Machine)이 펌웨어의 개입 없이 병렬적으로 동작하는 데이터 스토리지 시스템을 도시한 도면.
도 4는 본 발명의 일실시예에 따른 비휘발성 저장장치의 데이터 판독 방법의 순서를 도시한 흐름도.
도 5는 본 발명의 일실시예에 따른 Storage FSM의 동작 흐름도.
도 6은 본 발명의 일실시예에 따른 Host FSM의 동작 흐름도.
본 발명은 비휘발성 저장장치의 데이터 판독 방법에 관한 것으로, 더욱 상세 하게는 Storage FSM 및 Host FSM(Finite State Machine)이 펌웨어의 개입 없이 병렬적으로 동작하게 함으로써 데이터 전송을 동기화하는 비휘발성 저장장치의 데이터 판독 방법에 관한 것이다.
현대 사회에서 컴퓨터가 차지하는 비중은 매우 크다. 컴퓨터를 이용한 작업은 기본적으로 데이터의 처리 및 저장이라 할 수 있다. 이 중에서 데이터 처리를 수행하는 CPU(중앙 처리 장치)는 반도체 집적 기술의 급격한 발달로 인해 매우 빠른 속도로 향상되고 있지만, 데이터 저장장치는 용량 면에서는 많은 발전이 있는 반면, 성능 면에서는 중앙 처리 장치의 성능 향상을 따라가지 못하고 있다. 전체 시스템 효율의 저하를 초래하는 데이터 저장장치의 병목을 해결하기 위하여 많은 기법들이 고안 및 사용되고 있으며, 이 중 호스트 시스템에서 데이터 저장장치 내부에 이르기까지 여러 단계에 걸쳐 사용되고 있는 메모리 계층 구조를 이용하는 방법이 가장 많이 연구가 되어왔다.
호스트 시스템에서는 비교적 많은 양의 메모리 버퍼를 이용하고 성능 향상을 위해 복잡한 알고리즘을 사용할 수 있지만, 데이터 저장장치 내부에서 사용되는 버퍼는 마이크로 컨트롤러의 성능 제한과 메모리 크기 제한, 또한 하드웨어적인 고속 전송의 필요성 등에 의해 단순하면서도 빠른 알고리즘이 주로 채택된다.
일반적으로 데이터 저장장치에는 호스트 인터페이스, 비휘발성 저장장치, 데이터버퍼 등이 사용되며, 호스트 인터페이스와 데이터버퍼간의 데이터 전송을 위한 Host FSM, 데이터버퍼와 비휘발성 저장장치간의 데이터 전송을 위한 Storage FSM, 상기 각각의 FSM을 제어하며 전체 데이터 저장장치 시스템의 동작을 총괄하는 펌웨 어(Firmware) 등이 존재한다.
펌웨어는 Storage FSM 및 Host FSM에게 저수준의 명령(low level command)을 내리고, 각 FSM 은 해당 작업을 종료하거나 추가의 펌웨어 지원이 필요할 경우 인터럽트를 통해 펌웨어와 통신을 하게 된다. 펌웨어는 전체 데이터 저장장치의 동작을 제어하기 때문에 잦은 인터럽트로 인해 펌웨어의 동작이 자주 중단되면 급격한 성능 저하가 일어난다.
비휘발성 저장장치는 전원이 끊어져도 정보를 유지하고 있어 전원이 공급되면 다시 저장된 정보를 사용할 수 있는 기억 매체로, ROM, 자기 테이프, 자기 코어, 자기 디스크, 자기 원통 등이 있으며, 본 발명에서는 데이터가 저장된 후에 전원이 공급되지 않아도 데이터를 유지하는 플래시 메모리(Flash memory)를 예로서 설명한다.
도 1은 종래 기술에 따라 FIFO(First-Input First-Out)를 이용하여 데이터를 버퍼링하는 데이터 스토리지 시스템을 도시한 도면이다.
종래에는 데이터버퍼(160)를 단지 저속의 비휘발성 저장장치(130)와 고속의 호스트(110) 인터페이스 사이에서 데이터를 버퍼링하는 용도로만 사용하였다. 이 경우 한번 비휘발성 저장장치(130)에서 호스트(110)로, 또는 호스트(110)에서 비휘발성 저장장치(130)로 데이터가 전송된 후에는 데이터버퍼(160)의 데이터를 더 이상 사용할 수 없고, 다시 비휘발성 저장장치(130) 또는 호스트(110)에서 데이터를 데이터버퍼(160)로 읽어와야 했다. 이때 펌웨어(150)의 역할은 거의 필요하지 않으며, Storage FSM(140) 및 Host FSM(120) 역시 간단한 로직에 의해 데이터 전송을 수행할 수 있고, 데이터버퍼(160)는 일반적인 FIFO를 이용하게 된다.
최근에는 데이터버퍼를 캐시 메모리로 이용함으로써 더욱 성능을 향상시키고 있다. 도 2는 캐시 메모리를 이용하여 데이터를 버퍼링하는 데이터 스토리지 시스템을 도시한 도면이다.
펌웨어(250)는 현재 데이터버퍼(260)에 있는 데이터들을 동적으로 추적함으로써 호스트(210)로부터의 읽기 요청이 데이터버퍼(260)에 있는 내용일 경우 비휘발성 저장장치(230)를 다시 접근하지 않고 버퍼메모리에서 바로 읽어가라는 명령을 Host FSM(220)에 주게 된다.
만약 호스트(210)로부터의 읽기 요청에 해당하는 데이터가 데이터버퍼(260)에 없고, 비휘발성 저장장치(230)로부터 읽어서 호스트(210)로 전송해야 할 경우, Storage FSM(240)에게는 해당 데이터를 비휘발성 저장장치(230)에서 읽어 데이터버퍼의 일정 영역으로 저장하는 명령을, 그리고 Host FSM(220)에게는 상기된 데이터버퍼(260)의 일정 영역에서 데이터를 읽어 호스트(210)로 전송하는 명령을 내리게 된다.
이때, 각 FSM들을 단순히 병렬적으로 동작시킬 경우, Storage data가 완전히 데이터버퍼(260)에 도달하기 전에 Host FSM(220)이 데이터버퍼의 내용을 읽어서 호스트(210)로 전송하게 되어, 잘못된 데이터가 전송될 수 있다.
상기 문제를 피하기 위하여 일반적으로 전체 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)을 동작시킬 경우 많은 양의 데이터를 고속으로 전송하는 것이 어려워 진다.
이를 해결하기 위해 전체 데이터를 작은 블록 단위로 나누어 처리할 경우 Storage FSM(240) 및 Host FSM(220)간의 병렬성은 증대시킬 수 있지만, 인터럽트 횟수가 많아져 펌웨어(260)의 개입이 많아지므로 역시 많은 성능 향상을 기대할 수 없다.
이에 따라 Storage FSM 및 Host FSM이 펌웨어의 개입 없이 병렬적으로 동작하게 함으로써 데이터 전송을 동기화하는 기술의 개발이 요구되었다.
따라서, 본 발명은 상술한 종래의 문제점을 극복하기 위한 것으로서, Storage FSM 및 Host FSM이 동시에 접근할 수 있는 소량(예를 들어, 1 word)의 레지스터를 추가하여 타임스탬프 레지스터로 사용함으로써 펌웨어의 개입 없이 Storage FSM 및 Host FSM이 병렬적으로 동작하여 데이터 전송을 동기화할 수 있도록 하는 것을 목적으로 한다.
또한, 본 발명에 따른 비휘발성 저장장치의 데이터 판독 방법은 비휘발성 저장장치로부터 데이터버퍼로 read data를 모두 읽어올 때까지 기다리지 않고도, 데이터버퍼로 읽어온 일부의 데이터를 바로 호스트로 전송할 수 있도록 하는 것을 그 목적으로 한다.
상기와 같은 본 발명의 목적을 달성하고 상술한 종래 기술의 문제점을 해결하기 위한 본 발명에 따른 비휘발성 저장장치의 데이터 판독 방법은, 비휘발성 저장장치로부터 제1 개수의 블록의 데이터를 판독하여 상기 제1 개수의 블록의 데이터를 데이터버퍼에 저장하는 제1 단계, 상기 저장에 대응하여, 제1 타임스탬프를 증가시키고, 상기 제1 타임스탬프를 타임스탬프 레지스터에 저장하는 제2 단계, 및 상기 타임스탬프 레지스터에 저장된 값 및 제2 타임스탬프를 비교하여, 상기 데이터버퍼에 저장된 상기 제1 개수의 블록의 데이터를 호스트로 전송할지 여부를 결정하는 제3 단계를 포함한다.
본 발명의 일측에 따른 비휘발성 저장장치의 데이터 판독 방법은, 상기 데이터 버퍼에 저장된 상기 제1 개수의 블록의 데이터를 상기 호스트로 전송하는 경우, 상기 제2 타임스탬프를 변경하는 제4 단계를 더 포함한다.
본 발명의 또 다른 일측에 따른 비휘발성 저장장치의 데이터 판독 방법은, 비휘발성 저장장치로부터 제1 개수의 블록의 데이터를 판독하여 상기 제1 개수의 블록의 데이터를 데이터 버퍼에 저장하는 제1 단계, 상기 저장에 대응하여, 제1 타임스탬프를 변경하는 제2 단계, 상기 제1 타임스탬프에 기초하여, 상기 데이터 버퍼에 저장된 상기 제1 개수의 블록의 데이터를 호스트로 전송할지 여부를 결정하는 제3 단계를 포함한다.
본 발명의 또 다른 일측에 따른 비휘발성 저장장치의 데이터 판독 방법은, 상기 데이터 버퍼에 저장된 상기 제1 개수의 블록의 데이터를 상기 호스트로 전송하는 경우, 상기 제2 타임스탬프를 변경하는 제4 단계 및 상기 변경된 제1 타임스탬프를 타임스탬프 레지스터에 저장하는 제5 단계를 더 포함한다.
이하 첨부 도면들 및 첨부 도면들에 기재된 내용들을 참조하여 본 발명의 바람직한 실시예를 상세하게 설명하지만, 본 발명이 실시예들에 의해 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조부호는 동일한 부재를 나타낸다.
도 3은 본 발명의 일실시예에 따른 타임스탬프 레지스터를 이용하여 Storage FSM 및 Host FSM이 펌웨어의 개입 없이 병렬적으로 동작하는 데이터 스토리지 시스템을 도시한 도면이다.
도면에 도시된 바와 같이, 호스트(310)로부터 read 요청을 수신하면, 펌웨어(350)는 해당 데이터가 데이터버퍼(360)에 있는지 확인한다. 해당 데이터가 데이터버퍼(360)에 있으면 해당 데이터를 호스트(310)로 전달하고, 데이터버퍼(360)에 없으면, 펌웨어(350)는 데이터버퍼(360) 내에 읽어온 데이터를 저장하는데 필요한 가용 공간(free space)을 확보한다.
그 다음으로, 펌웨어(350)는 타임스탬프 레지스터(370) 값을 소정의 값으로 초기화한다. 본 발명의 일실시예에 따르면, 펌웨어(350)는 타임스탬프 레지스터(370) 값을 Host FSM(320) 및 Storage FSM(340)에 전달되는 타임스탬프의 값보다 작은 임의의 값으로 초기화한다. 본 발명의 또 다른 실시예에 따르면, 타임스탬프 레지스터(370)의 값을 '0'으로 초기화를 하고, 각각의 FSM에게 전달하는 타임스탬 프 역시 '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를 전달한다.
이하에서는 도 3을 참조하여 도 4에 도시된 본 발명의 실시예에 따른 비휘발성 저장장치의 데이터 판독 방법의 순서를 상세히 설명한다.
단계(410)에서 펌웨어(350)는 제1 타임스탬프 및 제2 타임스탬프의 초기값을 동일하게 설정하여(예를 들어, '0') Host FSM(320) 및 Storage FSM(340)으로 각각 전달한다. 상기 제1 타임스탬프는 비휘발성 저장장치(330)로부터 데이터버퍼(360)로의 저장에 대응하고, 상기 제2 타임스탬프는 데이터버퍼(360)로부터 호스트(310)로의 전송에 대응한다.
각 데이터 블록이 전송되는 것을 Host FSM(320) 및 Storage FSM(340)이 펌웨어의 개입없이 알 수 있도록 하기 위해, 단계(410)에서 동일하게 설정된 제1 타임스탬프 및 상기 제2 타임스탬프의 초기값을, 각 데이터 블록이 전송될 때마다 동일한 비율로 변경시키고, 이를 비교함으로써 알 수 있도록 한다.
단계(420)에서 Storage FSM(340)은 제1 개수의 블록의 데이터를 판독하여 데이터버퍼(360)에 저장하고, 단계(430)에서 제1 타임스탬프를 변경한다. 비휘발성 저장장치(330)로부터 데이터버퍼(360)로 데이터 블록이 모두 전송되지 않은 경우, 다시 단계(420)로 가서 다음 데이터 블록을 전송하고, 데이터 블록이 모두 전송되면 종료한다.
단계(440)에서 Host FSM(320)은 변경된 제1 타임스탬프의 값과 제2 타임스탬프의 값을 비교하여, 데이터버퍼(360)에 저장된 상기 제1 개수의 블록의 데이터를 호스트(310)로 전송할지 여부를 결정한다.
이때, 각 FSM으로부터 접근 가능한 타임스탬프 레지스터를 사용하여 비교할 수 있다. 비휘발성 저장장치(330)로부터 데이터버퍼(360)로의 데이터 블록 저장에 대응하여, Host FSM(320)은 제1 타임스탬프의 값을 변경하여 타임스탬프 레지스터에 저장하고, Storage FSM(340)은 상기 타임스탬프 레지스터로부터 변경된 제1 타임스탬프의 값을 판독하여 제2 타임스탬프의 값과 비교할 수 있다.
단계(440)에서의 비교 결과 데이터버퍼(360)에 비활성 저장장치(330)로부터 읽어온 데이터 블록이 있다고 판단된 경우, Host FSM(320)은 데이터버퍼(360)로부터 호스트(310)로 상기 데이터 블록을 전송하고(단계 450), 단계(460)에서 제2 타임스탬프를 변경한다. 데이터버퍼(360)로부터 호스트(310)로 데이터 블록이 모두 전송되지 않은 경우 다시 단계(440)를 진행하고, 데이터 블록이 모두 전송되면 종료한다.
예를 들어, 단계(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만큼 증가시킨다.
이하에서는 도 3을 참조하여 도 5에 도시된 본 발명의 실시예에 따른 Storage FSM의 동작 과정을 상세히 설명한다.
단계(510)에서 Storage FSM(340)은 펌웨어(350)로부터 비활성 저장장치(330)의 데이터를 데이터버퍼(360)로 읽어오라는 명령을 기다린다.
단계(520)에서 펌웨어(350)로부터의 상기 명령을 받은 경우, 즉, 비휘발성 저장장치(330)의 주소 pa, 전송해야 할 블록의 개수 cnt, 데이터버퍼(360)의 주소 ba, 및 시작 타임스탬프 ts를 수신한 경우, 전송해야 할 블록의 개수 cnt가 '0'인지 비교한다. cnt가 '0'인 경우(데이터 블록을 모두 전송한 경우), 단계(510)로 이동하여 펌웨어(350)로부터 다음 명령을 대기하고, cnt가 '0'이 아닌 경우(전송해야할 데이터 블록이 남은 경우), 단계(530, 540)을 진행한다. 명령 수행 초기 단계에서는 cnt가 '0'이 아닌 값을 가지므로 단계(530, 540)으로 이동한다.
단계(530, 540)에서 비휘발성 저장장치(330)의 주소 pa로부터 1 블록을 읽고, 데이터 버퍼(360)의 주소 ba에 저장한다.
단계(550)에서는, 다음 루프에서 비휘발성 저장장치(330)로부터 다음 데이터 블록을 읽어 데이터버퍼(360)에 저장하기 위해 pa 및 ba를 1 증가시키고, 전송해야 할 전체 블록의 개수에서 한 블록을 읽었으므로 cnt를 1 감소시킨다. 또한, Host FSM(320)과의 데이터 전송의 동기화를 위해, 제1 타임스탬프 ts 값을 1 증가시킨다.
단계(560)에서 타임스탬프 레지스터(370)에 상기 증가된 ts값을 기록하고, 다시 단계(520)로 이동하여, 모든 블록을 처리하였는지 검사한 후에(cnt가 '0'이 아닌 경우) 아직 처리할 블록이 남았을 경우 단계(520)에서 단계(560)까지의 루프를 반복하고 처리가 모두 끝났을 경우(cnt가 '0'인 경우) 단계 단계(510)로 돌아가 펌웨어(350)로부터 다음 명령을 기다린다.
이하에서는 도 3을 참조하여 도 6에 도시된 본 발명의 실시예에 따른 HostFSM의 동작 과정을 상세히 설명한다.
단계(610)에서 전체 시스템이 동작을 시작한 후에 Host FSM(320)은 펌웨어(350)로부터 데이터버퍼(360)의 데이터를 호스트(310)로 읽어오라는 명령을 기다린다.
단계(620)에서 펌웨어(350)로부터의 상기 명령을 받은 경우, 즉, 상기 데이터버퍼(360)의 주소 ba2, 상기 블록의 개수 cnt2, 및 시작 타임스탬프 ts2를 수신한 경우, 블록의 개수 cnt2가 '0'인지 비교한다. cnt2가 '0'인 경우(데이터 블록을 모두 전송한 경우), 단계(610)로 이동하여 펌웨어(350)로부터 다음 명령을 대기하고, cnt2가 '0'이 아닌 경우(전송해야할 데이터 블록이 남은 경우), 단계(630)을 진행한다. 명령 수행 초기 단계에서는 cnt2가 '0'이 아닌 값을 가지므로 단계(630)으로 이동한다.
단계(630)에서 제2 타임스탬프 ts2가 타임스탬프 레지스터(370)보다 작지 않 은 경우 계속 대기하다가, 타임스탬프 레지스터(370)의 값이 ts2보다 큰 값을 가질 경우 단계(640)을 진행한다. 이때 타임스탬프 레지스터(370)의 값이 ts2 보다 큰 값을 가지게 된다는 것은, 데이터버퍼(360)의 주소 ba2에 있는 블록이 도 5에서 설명된 Storage FSM의 동작에 의해 전송된 유효한 블록임을 보장하는 것이 된다. 즉 펌웨어(350)의 개입 없이 타임스탬프 레지스터(370)를 이용함으로써, Host FSM(320) 및 Storage FSM(340)간의 데이터 동기화를 가능하게 한다.
단계(640)에서 데이터버퍼(360)의 주소 ba2로부터 1 블록을 읽어, 호스트(310)로 전송한다.
단계(650)에서는, 다음 루프에서 데이터버퍼(360)로부터 다음 데이터 블록을 읽어 호스트(310)로 전송하기 위해 ba2를 1 증가시키고, 전송해야 할 전체 블록의 개수에서 한 블록을 읽었으므로 cnt2를 1 감소시킨다. 또한, Storage FSM(340)과의 데이터 전송의 동기화를 위해, 제2 타임스탬프 ts2 값을 1 증가시키고, 다시 단계(620)로 이동하여, 모든 블록을 처리하였는지 검사한 후에(cnt2가 '0'이 아닌 경우) 아직 처리할 블록이 남았을 경우 단계(620)에서 단계(650)까지의 루프를 반복하고 처리가 모두 끝났을 경우(cnt2가 '0'인 경우) 단계(610)로 돌아가 펌웨어(350)로부터 다음 명령을 기다린다.
도 5 및 도 6에서는 각각의 FSM이 전송해야 할 데이터 블록의 개수인 cnt 및 cnt2가 1 인 경우만 보였지만 복수개의 블록을 전송하는 방법으로 간단하게 확장할 수 있다.
또한 본 발명의 실시예들은 다양한 컴퓨터로 구현되는 동작을 수행하기 위한 프로그램 명령을 포함하는 컴퓨터 판독 가능 매체를 포함한다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다.
이상과 같이 본 발명은 비록 한정된 실시예와 도면에 의해 설명되었으나, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상의 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다. 그러므로, 본 발명의 범위는 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.
본 발명에 따르면, Storage FSM 및 Host FSM이 동시에 접근할 수 있는 소량(예를 들어, 1 word)의 레지스터를 추가하여 타임스탬프 레지스터로 사용함으로써 펌웨어의 개입 없이 Storage FSM 및 Host FSM이 병렬적으로 동작하여 데이터 전송을 동기화할 수 있고, 전체 데이터 스토리지 시스템의 성능을 향상시킬 수 있다.
또한, 본 발명에 따르면, 비휘발성 저장장치로부터 데이터버퍼로 read data를 모두 읽어올 때까지 기다리지 않고도, 데이터버퍼로 읽어온 일부의 데이터를 바로 호스트로 전송할 수 있다.
또한, 본 발명에 따르면, 데이터버퍼를 캐싱 및 버퍼링의 용도로 동시에 사용할 수 있기 때문에 한정된 버퍼 크기를 효율적으로 사용할 수 있다.

Claims (12)

  1. 비휘발성 저장장치로부터 제1 개수의 블록의 데이터를 판독하여 상기 제1 개수의 블록의 데이터를 데이터버퍼에 저장하는 제1 단계;
    상기 저장에 대응하여, 제1 타임스탬프를 증가시키고 타임스탬프 레지스터에 저장하는 제2 단계; 및
    상기 제1 타임스탬프 및 제2 타임스탬프를 비교하여, 상기 데이터버퍼에 저장된 상기 제1 개수의 블록의 데이터를 호스트로 전송할지 여부를 결정하는 제3 단계
    를 포함하는 것을 특징으로 하는 비휘발성 저장장치의 데이터 판독 방법.
  2. 제1항에 있어서,
    상기 제1 타임스탬프는 상기 비휘발성 저장장치로부터 상기 데이터버퍼로의 저장에 대응하고, 상기 제2 타임스탬프는 상기 데이터버퍼로부터 상기 호스트로의 전송에 대응하는 것을 특징으로 하는 비휘발성 저장장치의 데이터 판독 방법.
  3. 제1항에 있어서,
    상기 제1 타임스탬프의 초기값 및 상기 제2 타임스탬프의 초기값은 동일한 것을 특징으로 하는 비휘발성 저장장치의 데이터 판독 방법.
  4. 제1항에 있어서,
    상기 데이터버퍼에 저장된 상기 제1 개수의 블록의 데이터를 상기 호스트로 전송하는 경우, 상기 제2 타임스탬프를 변경하는 제4 단계
    를 더 포함하는 것을 특징으로 하는 비휘발성 저장장치의 데이터 판독 방법.
  5. 비휘발성 저장장치로부터 제1 개수의 블록의 데이터를 판독하여 상기 제1 개수의 블록의 데이터를 데이터버퍼에 저장하는 제1 단계;
    상기 저장에 대응하여, 제1 타임스탬프를 변경하는 제2 단계;
    상기 제1 타임스탬프에 기초하여, 상기 데이터버퍼에 저장된 상기 제1 개수의 블록의 데이터를 호스트로 전송할지 여부를 결정하는 제3 단계
    를 포함하는 것을 특징으로 하는 비휘발성 저장장치의 데이터 판독 방법.
  6. 제5항에 있어서, 상기 제3 단계는,
    상기 제1 타임스탬프 및 제2 타임스탬프의 비교 결과에 따라, 상기 데이터버퍼에 저장된 상기 제1 개수의 블록의 데이터를 호스트로 전송할지 여부를 결정하는 것을 특징으로 하는 비휘발성 저장장치의 데이터 판독 방법.
  7. 제6항에 있어서,
    상기 제1 타임스탬프는 상기 비휘발성 저장장치로부터 상기 데이터버퍼로의 저장에 대응하고, 상기 제2 타임스탬프는 상기 데이터버퍼로부터 상기 호스트로의 전송에 대응하는 것을 특징으로 하는 비휘발성 저장장치의 데이터 판독 방법.
  8. 제7항에 있어서,
    상기 제1 타임스탬프 및 상기 제2 타임스탬프의 초기값은 동일한 것을 특징으로 하는 비휘발성 저장장치의 데이터 판독 방법.
  9. 제6항에 있어서,
    상기 데이터버퍼에 저장된 상기 제1 개수의 블록의 데이터를 상기 호스트로 전송하는 경우, 상기 제2 타임스탬프를 변경하는 제4 단계
    를 더 포함하는 것을 특징으로 하는 비휘발성 저장장치의 데이터 판독 방법.
  10. 제5항에 있어서,
    상기 변경된 제1 타임스탬프를 타임스탬프 레지스터에 저장하는 제5 단계
    를 더 포함하는 것을 특징으로 하는 비휘발성 저장장치의 데이터 판독 방법.
  11. 제10항에 있어서, 상기 제3 단계는,
    상기 타임스탬프 레지스터로부터 상기 제1 타임스탬프를 판독하는 단계;
    상기 제1 타임스탬프 및 제2 타임스탬프를 비교하는 단계; 및
    상기 제1 타임스탬프 및 상기 제2 타임스탬프의 비교 결과에 따라, 상기 데이터버퍼에 저장된 상기 제1 개수의 블록의 데이터를 호스트로 전송할지 여부를 결 정하는 단계
    를 포함하는 것을 특징으로 하는 비휘발성 저장장치의 데이터 판독 방법.
  12. 제1항 내지 제11항 중 어느 한 항의 방법을 실행하는 프로그램을 기록한 컴퓨터 판독가능 기록매체.
KR1020060133120A 2006-12-22 2006-12-22 비휘발성 저장장치의 데이터 판독 방법 Expired - Fee Related KR100817203B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020060133120A KR100817203B1 (ko) 2006-12-22 2006-12-22 비휘발성 저장장치의 데이터 판독 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020060133120A KR100817203B1 (ko) 2006-12-22 2006-12-22 비휘발성 저장장치의 데이터 판독 방법

Publications (1)

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

Family

ID=39411827

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060133120A Expired - Fee Related KR100817203B1 (ko) 2006-12-22 2006-12-22 비휘발성 저장장치의 데이터 판독 방법

Country Status (1)

Country Link
KR (1) KR100817203B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101735590B1 (ko) * 2016-01-22 2017-05-15 한양대학교 산학협력단 트랜잭션 추출 장치 및 방법

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR19990013405A (ko) * 1997-07-10 1999-02-25 포만제프리엘 공유 메모리 프로세싱 시스템에 대한 캐시 일관성 네트워크 어댑터
JP2001184305A (ja) 1999-12-22 2001-07-06 Nec Corp 外部バス制御装置
KR20050096447A (ko) * 2004-03-30 2005-10-06 삼성전자주식회사 메모리 카드 시스템 및 그것의 대기 시간 조절 방법
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 (ko) * 1997-07-10 1999-02-25 포만제프리엘 공유 메모리 프로세싱 시스템에 대한 캐시 일관성 네트워크 어댑터
JP2001184305A (ja) 1999-12-22 2001-07-06 Nec Corp 外部バス制御装置
KR20050096447A (ko) * 2004-03-30 2005-10-06 삼성전자주식회사 메모리 카드 시스템 및 그것의 대기 시간 조절 방법
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 (ko) * 2016-01-22 2017-05-15 한양대학교 산학협력단 트랜잭션 추출 장치 및 방법

Similar Documents

Publication Publication Date Title
US11635902B2 (en) Storage device processing stream data, system including the same, and operation method
US8832333B2 (en) Memory system and data transfer method
KR101051815B1 (ko) 저장 컨트롤러 및 저장 시스템
US20130326113A1 (en) Usage of a flag bit to suppress data transfer in a mass storage system having non-volatile memory
US20160306588A1 (en) Solid state disk and data moving method
KR100708128B1 (ko) 낸드 플래시 메모리 제어 장치 및 방법
CN101568903A (zh) Nand闪存的基于命令的控制
KR102106261B1 (ko) 메모리 컨트롤러의 작동 방법과 이를 포함하는 장치들의 작동 방법들
US6931501B1 (en) Method and apparatus for merging contiguous like commands
EP3506075A1 (en) Mass storage device capable of fine grained read and/or write operations
CN102521179A (zh) 一种dma读操作的实现装置和方法
CN110543433A (zh) 一种混合内存的数据迁移方法及装置
AU2015203828B2 (en) Implementing enhanced performance with read before write to phase change memory to avoid write cancellations
KR20100120518A (ko) 데이터 저장 장치 및 그것의 읽기 커멘드 처리 방법
US10459847B1 (en) Non-volatile memory device application programming interface
KR100817203B1 (ko) 비휘발성 저장장치의 데이터 판독 방법
KR102076248B1 (ko) 선택 지연 가비지 컬렉션 방법 및 이를 이용한 메모리 시스템
US10942672B2 (en) Data transfer method and apparatus for differential data granularities
TW201342193A (zh) 高效能進階主機控制器介面
US8667188B2 (en) Communication between a computer and a data storage device
CN109284231B (zh) 内存访问请求的处理方法、装置及内存控制器
CN100444144C (zh) 微电脑系统的直接内存存取作业方法
US12189986B2 (en) Methods and systems for software based prefetching for low buffer depth sequential read traffic
US10228883B2 (en) Storage device that postpones completion of read command to begin execution of a non-read command
KR101039397B1 (ko) Mla의 독출 동작 속도를 증가시키기 위한 멀티 포트 메모리 장치의 공유 영역 관리 방법 및 그를 위한 프로그램을 기록한 컴퓨터로 독출 가능한 기록매체

Legal Events

Date Code Title Description
A201 Request for examination
PA0109 Patent application

St.27 status event code: A-0-1-A10-A12-nap-PA0109

PA0201 Request for examination

St.27 status event code: A-1-2-D10-D11-exm-PA0201

P11-X000 Amendment of application requested

St.27 status event code: A-2-2-P10-P11-nap-X000

P13-X000 Application amended

St.27 status event code: A-2-2-P10-P13-nap-X000

P11-X000 Amendment of application requested

St.27 status event code: A-2-2-P10-P11-nap-X000

P13-X000 Application amended

St.27 status event code: A-2-2-P10-P13-nap-X000

R15-X000 Change to inventor requested

St.27 status event code: A-3-3-R10-R15-oth-X000

R16-X000 Change to inventor recorded

St.27 status event code: A-3-3-R10-R16-oth-X000

D13-X000 Search requested

St.27 status event code: A-1-2-D10-D13-srh-X000

D14-X000 Search report completed

St.27 status event code: A-1-2-D10-D14-srh-X000

E701 Decision to grant or registration of patent right
PE0701 Decision of registration

St.27 status event code: A-1-2-D10-D22-exm-PE0701

R18-X000 Changes to party contact information recorded

St.27 status event code: A-3-3-R10-R18-oth-X000

GRNT Written decision to grant
PR0701 Registration of establishment

St.27 status event code: A-2-4-F10-F11-exm-PR0701

PR1002 Payment of registration fee

St.27 status event code: A-2-2-U10-U11-oth-PR1002

Fee payment year number: 1

PG1601 Publication of registration

St.27 status event code: A-4-4-Q10-Q13-nap-PG1601

PR1001 Payment of annual fee

St.27 status event code: A-4-4-U10-U11-oth-PR1001

Fee payment year number: 4

PR1001 Payment of annual fee

St.27 status event code: A-4-4-U10-U11-oth-PR1001

Fee payment year number: 5

FPAY Annual fee payment

Payment date: 20130422

Year of fee payment: 6

PR1001 Payment of annual fee

St.27 status event code: A-4-4-U10-U11-oth-PR1001

Fee payment year number: 6

FPAY Annual fee payment

Payment date: 20140311

Year of fee payment: 7

PR1001 Payment of annual fee

St.27 status event code: A-4-4-U10-U11-oth-PR1001

Fee payment year number: 7

R18-X000 Changes to party contact information recorded

St.27 status event code: A-5-5-R10-R18-oth-X000

FPAY Annual fee payment

Payment date: 20150212

Year of fee payment: 8

PR1001 Payment of annual fee

St.27 status event code: A-4-4-U10-U11-oth-PR1001

Fee payment year number: 8

R18-X000 Changes to party contact information recorded

St.27 status event code: A-5-5-R10-R18-oth-X000

FPAY Annual fee payment

Payment date: 20160122

Year of fee payment: 9

PR1001 Payment of annual fee

St.27 status event code: A-4-4-U10-U11-oth-PR1001

Fee payment year number: 9

P22-X000 Classification modified

St.27 status event code: A-4-4-P10-P22-nap-X000

PR1001 Payment of annual fee

St.27 status event code: A-4-4-U10-U11-oth-PR1001

Fee payment year number: 10

FPAY Annual fee payment

Payment date: 20180222

Year of fee payment: 11

PR1001 Payment of annual fee

St.27 status event code: A-4-4-U10-U11-oth-PR1001

Fee payment year number: 11

P22-X000 Classification modified

St.27 status event code: A-4-4-P10-P22-nap-X000

PR1001 Payment of annual fee

St.27 status event code: A-4-4-U10-U11-oth-PR1001

Fee payment year number: 12

FPAY Annual fee payment

Payment date: 20200302

Year of fee payment: 13

PR1001 Payment of annual fee

St.27 status event code: A-4-4-U10-U11-oth-PR1001

Fee payment year number: 13

PR1001 Payment of annual fee

St.27 status event code: A-4-4-U10-U11-oth-PR1001

Fee payment year number: 14

PR1001 Payment of annual fee

St.27 status event code: A-4-4-U10-U11-oth-PR1001

Fee payment year number: 15

PR1001 Payment of annual fee

St.27 status event code: A-4-4-U10-U11-oth-PR1001

Fee payment year number: 16

PR1001 Payment of annual fee

St.27 status event code: A-4-4-U10-U11-oth-PR1001

Fee payment year number: 17

PC1903 Unpaid annual fee

St.27 status event code: A-4-4-U10-U13-oth-PC1903

Not in force date: 20250321

Payment event data comment text: Termination Category : DEFAULT_OF_REGISTRATION_FEE

H13 Ip right lapsed

Free format text: ST27 STATUS EVENT CODE: N-4-6-H10-H13-OTH-PC1903 (AS PROVIDED BY THE NATIONAL OFFICE); TERMINATION CATEGORY : DEFAULT_OF_REGISTRATION_FEE

Effective date: 20250321

PC1903 Unpaid annual fee

St.27 status event code: N-4-6-H10-H13-oth-PC1903

Ip right cessation event data comment text: Termination Category : DEFAULT_OF_REGISTRATION_FEE

Not in force date: 20250321