KR101522402B1 - 반도체 디스크 장치 및 그것의 데이터 관리 방법 - Google Patents

반도체 디스크 장치 및 그것의 데이터 관리 방법 Download PDF

Info

Publication number
KR101522402B1
KR101522402B1 KR1020080101095A KR20080101095A KR101522402B1 KR 101522402 B1 KR101522402 B1 KR 101522402B1 KR 1020080101095 A KR1020080101095 A KR 1020080101095A KR 20080101095 A KR20080101095 A KR 20080101095A KR 101522402 B1 KR101522402 B1 KR 101522402B1
Authority
KR
South Korea
Prior art keywords
data
read request
host
read
predicted
Prior art date
Application number
KR1020080101095A
Other languages
English (en)
Other versions
KR20100039180A (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 US12/585,935 priority Critical patent/US8327066B2/en
Publication of KR20100039180A publication Critical patent/KR20100039180A/ko
Priority to US13/067,436 priority patent/US20110238900A1/en
Priority to US13/067,434 priority patent/US8904088B2/en
Priority to US14/508,393 priority patent/US9542199B2/en
Application granted granted Critical
Publication of KR101522402B1 publication Critical patent/KR101522402B1/ko

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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • G06F12/0692Multiconfiguration, e.g. local and global addressing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1666Error detection or correction of the data by redundancy in hardware where the redundant component is memory or memory area
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0615Address space extension
    • 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • G06F9/453Help systems

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Stored Programmes (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • For Increasing The Reliability Of Semiconductor Memories (AREA)

Abstract

본 발명의 반도체 디스크 장치의 데이터 처리 방법은, 호스트로부터의 반복되는 읽기 요청들로부터, 현재 읽기 요청에 대한 다음 읽기 요청을 복수의 후보군으로 데이터 베이스화하는 단계; 및 제 1 데이터에 대한 읽기 요청에 응답하여, 상기 제 1 데이터의 대응하는 상기 복수의 후보군들 중 어느 하나를 상기 제 1 데이터의 다음에 읽기 요청될 제 2 데이터로 예측하고, 제 2 데이터를 불휘발성 메모리 장치로부터 프리패치하는 단계를 포함한다.

Description

반도체 디스크 장치 및 그것의 데이터 관리 방법{SOLID STATE DISK AND DATA MANAGE METHOD THEREOF}
본 발명은 불휘발성 메모리 시스템에 관한 것으로, 더욱 상세하게는 불휘발성 메모리 장치를 기억 매체로 사용하는 반도체 디스크 장치 및 그것의 데이터 관리 방법에 관한 것이다.
일반적으로, 플래시 메모리는 전기적으로 셀의 데이터를 일괄적으로 소거하는 기능이 있기 때문에, 컴퓨터 및 메모리 카드 등에 널리 사용되고 있다. 최근 들어서는, 휴대폰, PDA, 디지털카메라 등과 같은 휴대용 정보기기의 사용이 급증함에 따라, 하드디스크 대신 플래시 메모리가 저장 장치로서 널리 사용되고 있다. 상술한 모바일 기기들은 다양한 기능들(예를 들면, 동영상 재생 기능)을 제공하기 위해서 점차 대용량의 저장 장치들을 필요로 하고 있다. 그러한 요구를 충족하기 위한 다양한 노력들이 행해져 오고 있다. 그러한 노력들 중 하나로서 하나의 메모리 셀에 2-비트 데이터 또는 그보다 많은 비트들을 저장하는 멀티 비트 메모리 장치가 활발히 개발되어 오고 있다. 하나의 메모리 셀에 멀티 비트 데이터가 저장되는 메모리 셀을 이하에서는 "MLC(Multi-Leveled Cell)"라 칭하기로 한다. 그에 반해 메 모리 셀당 1-비트의 데이터가 저장되는 메모리 셀을 "SLC(Single-Leveled Cell)"라 칭하기로 한다. MLC를 채택한 플래시 메모리 장치는 가용 용량의 증가는 가능하지만, 데이터의 기입에 소요되는 시간이 증가한다. 반면에, SLC를 채택한 플래시 메모리 장치는 가용 용량은 상대적으로 작지만, 데이터의 기입에 소요되는 시간이 짧아 MLC에 비하여 고속으로 동작한다.
플래시 메모리는 다른 메모리 소자와 비교할 때, 비교적 낮은 단가로 빠른 읽기 속도를 제공할 수 있는 장점이 있다. 그러나 플래시 메모리에 데이터를 기입하기 위해서는 소거 동작이 반드시 선행되어야 하며, 기입되는 데이터의 단위보다 삭제되는 데이터의 단위가 크다는 특징이 있다. 이러한 특징은 플래시 메모리를 주 메모리로 사용하는 것을 어렵게 할 뿐만 아니라, 플래시 메모리가 보조기억장치로 사용되는 경우에도 일반 하드디스크용 파일 시스템(File System)을 그대로 활용하는 것을 저해하는 요인이 된다. 따라서, 플래시 메모리의 삭제 연산을 감추기 위해, 파일 시스템과 플래시 메모리 사이에 플래시 변환 계층(Flash translation layer; 이하, FTL이라 칭함)이 사용된다. FTL은, 플래시 메모리의 기입 동작시, 파일 시스템이 생성한 논리주소를 삭제 연산이 수행된 플래시 메모리의 물리 주소로 맵핑시켜 주는 역할을 수행한다. 상술한 FTL의 어드레스 맵핑 기능으로 인해, 호스트는 플래시 메모리 장치를 하드디스크 드라이버(또는 SRAM)와 동일한 방식으로 인식하고 액세스한다.
최근에는 기술의 진보와 플래시 메모리 장치의 가격 인하에 따라 플래시 메모리를 하드 디스크 저장 매체로 사용하는 대용량 저장 장치가 일반화되고 있다. 이러한 저장 장치를 반도체 디스크 장치 또는 솔리드 스테이트 드라이브(Solid State Drive) 또는 솔리드 스테이트 디스크(Solid State Disk)라고도 한다. 이하에서는 SSD라 칭하기로 한다. SSD로의 액세스 동작에 의하면, 탐색시간 없이 고속으로 데이터를 입출력할 수 있으면서도 기계적 지연이나 실패율이 현저히 적다. 또한, SSD는 외부의 충격에도 데이터가 쉽게 손상되지 않으며, 발열·소음 및 전력소모가 적고, 소형화·경량화할 수 있는 장점이 있다. 따라서, 기계적으로 회전하는 플래터(Platter)를 사용하지 않는 SSD는 대용량화가 가속되는 모바일 트랜드에 따라 급격히 수요가 늘고 있다. 일반적으로, SSD를 장착하는 컴퓨터와 같은 호스트와 SSD 간에는 고속의 인터페이싱 방식이 채택되고 있다. 호스트(Host)의 버스 포맷으로 USB(Universal Serieal Bus), PCI express, SATA(Serieal ATA) 등으로 구성될 수 있다. 일반적으로 상술한 호스트의 버스 포맷에 의한 데이터 전송 속도(예를 들면, STAT)는 SSD 내부의 메모리 채널의 전송 속도보다 월등히 빠르다. 따라서, 고성능의 SSD를 구현하기 위해, 호스트의 액세스 요구(Request)에 대한 응답 속도를 높이기 위한 연구가 활발하게 진행되고 있다.
본 발명의 목적은 고속의 액세스 속도를 제공하기 위한 반도체 디스크 장치 및 그것의 데이터 관리 방법을 제공하는 데 있다.
상기 목적을 달성하기 위한 본 발명의 반도체 디스크 장치의 데이터 처리 방 법은, 호스트로부터의 반복되는 읽기 요청들로부터, 현재 읽기 요청의 다음 읽기 요청을 복수의 후보군으로 데이터 베이스화하는 단계; 및 제 1 데이터에 대한 읽기 요청에 응답하여, 상기 제 1 데이터의 대응하는 상기 복수의 후보군들 중 어느 하나를 상기 제 1 데이터의 다음에 읽기 요청될 제 2 데이터로 예측하고, 제 2 데이터를 불휘발성 메모리 장치로부터 프리패치하는 단계를 포함한다.
상기 목적을 달성하기 위한 본 발명의 메모리 시스템은, 불휘발성 메모리 장치; 상기 불휘발성 메모리 장치로부터 독출된 데이터가 일시 저장되는 버퍼 메모리; 및 호스트로부터의 반복적으로 제공되는 읽기 요청들의 패턴을 누적하여 패턴 데이터 베이스를 형성하고, 상기 패턴 데이터 베이스를 참조하여 현재의 읽기 요청에 뒤따르는 다음 읽기 요청을 예측하고, 예측된 데이터를 불휘발성 메모리 장치로부터 상기 버퍼 메모리로 프리패치하는 메모리 컨트롤러를 포함하되, 상기 불휘발성 메모리 장치는 상기 예측된 데이터를 저장하기 위한 예측 데이터 영역을 포함한다.
이상과 같은 본 발명에 따른 장치 및 방법에 따르면, 호스트로부터의 읽기 요청에 대해 높은 반응 속도도 데이터를 제공할 수 있는 반도체 디스크 장치(SSD)를 제공할 수 있다.
앞의 일반적인 설명 및 다음의 상세한 설명 모두 예시적이라는 것이 이해되어야 하며, 청구된 발명의 부가적인 설명이 제공되는 것으로 여겨져야 한다. 참조 부호들이 본 발명의 바람직한 실시 예들에 상세히 표시되어 있으며, 그것의 예들이 참조 도면들에 표시되어 있다. 가능한 어떤 경우에도, 동일한 참조 번호들이 동일한 또는 유사한 부분을 참조하기 위해서 설명 및 도면들에 사용된다.
이하에서는, 본 발명의 특징 및 기능을 설명하기 위한 불휘발성 메모리 시스템으로 반도체 디스크 장치를 한 예로서 사용할 것이다. 또한, 예측되는 요청(Request)들이 읽기 요청(Read request)을 위주로 설명되었으나, 본 발명은 이에 국한되지 않는다. 하지만, 이 기술 분야에 정통한 사람은 여기에 기재된 내용에 따라 본 발명의 다른 이점들 및 성능을 쉽게 이해할 수 있을 것이다. 또한, 저장 매체로서 플래시 메모리를 예로 들어 설명되었으나, 또 다른 불휘발성 메모리 장치들로 구성될 수 있다. 예를 들면, 저장 매체로서 PRAM, MRAM, ReRAM, FRAM 등이 사용될 수 있으며, 이종의 메모리 장치들이 혼용되는 메모리 시스템에도 적용될 수 있다.
본 발명은 다른 실시 예들을 통해 구현되거나 적용될 수 있을 것이다. 게다가, 상세한 설명은 본 발명의 범위, 기술적 사상 그리고 다른 목적으로부터 상당히 벗어나지 않고 관점 및 응용에 따라 수정되거나 변경될 수 있다. 이하, 본 발명에 따른 실시예를 첨부된 도면을 참조하여 상세히 설명한다.
도 1은 본 발명의 기술적 특징을 간략하게 보여주는 블록도이다. 도 1을 참조하면, 본 발명의 반도체 디스크 장치(200)는 입출력 포트를 통해 외부 호스트( 100)와 데이터를 교환한다. 반도체 디스크 장치(200)는 호스트(100)로부터 읽기/쓰기 요청에 응답하여 불휘발성 메모리(240)에 데이터를 저장하거나 독출한다. 본 발 명의 반도체 디스크 장치(200)는 호스트(100)로부터 제공되는 요청의 패턴을 미리 예측한다. 따라서, 반도체 디스크 장치(200)는 호스트(100)의 읽기 요청에 대한 응답 속도를 높일 수 있다.
호스트(100)는 반도체 디스크 장치(200)로 데이터를 쓰도록 요청한다. 호스트(100)는 데이터 쓰기 요청시에 그에 대응하는 어드레스와 데이터를 제공한다. 또한, 호스트(100)는 반도체 디스크 장치(200)로 데이터의 읽기 요청을 제공한다. 컴퓨터 시스템에서, 호스트(100)의 읽기 요청은 시퀀셜 요청(Sequential request)과 랜덤 요청(Random request)로 크게 구분될 수 있다. 시퀀셜 요청(Sequential request)은 연속적으로 데이터를 읽도록 요청하는 읽기 요청을 말한다. 시퀀셜 요청(Sequential request)시에는 현재 요청되는 데이터에 연속되는 데이터를 미리 프리패치(Prefetch)하여 호스트(100)로 전송함으로써 읽기 속도를 높일 수 있다. 반면에 랜덤 요청(Random request)의 경우, 호스트(100)가 현재의 읽기 요청에 이어지는 다음 읽기 요청 데이터를 예측하기 쉽지 않다. 그러나 통계적인 자료에 따르면, 랜덤 요청(Random request)에도 일정한 패턴을 가지는 경우가 많다. 랜덤 요청에 대한 일정한 패턴을 반도체 디스크 장치(200)가 인식할 수 있다면, 현재의 읽기 요청에 대한 다음 읽기 요청을 예측할 수 있으며, 이는 성능 향상을 의미한다.
반도체 디스크 장치(200)는 호스트(100)의 읽기 요청에 응답하여 불휘발성 메모리(240)에 저장된 데이터를 제공한다. 반도체 디스크 장치(200)는 호스트(100)의 랜덤 요청(Random request)에 대해 현재의 읽기 요청되는 데이터의 다음 읽기 요청(Next read request)을 예측할 수 있다. 반도체 디스크 장치(200)는 예측된 데 이터를 미리 프리패치(Prefetch)하여 버퍼 메모리(230)에 저장하여 제공함으로써 응답 속도를 높일 수 있다. 일반적인 하드디스크 드라이버(HDD)의 경우, 랜덤 요청시에 탐색(Seek)과 구동 지연(Rotational Latency)의 문제로 소요되는 비용이 크다. 따라서, 하드디스크 드라이버(HDD)에서 랜덤 요청시에 잘못 예측된 데이터를 프리패치하는 경우에는 심각한 속도 지연의 문제를 피할 수 없다. 그러나, 반도체 디스크 장치(200)에서는 탐색과 구동 지연과 같은 비용 문제를 고려할 필요가 없다. 반도체 디스크 장치(200)에서는 잘못된 예측으로 인하여 발생하는 비용이 상대적으로 미미하기 때문에 랜덤 요청(Random request)에 대한 프리패치를 사용할 수 있다. 랜덤 요청시에, 다음 읽기 요청의 예측과 프리패치를 수행하는 본 발명의 반도체 디스크 장치(200)의 구성은 다음과 같다.
SSD 컨트롤러(210)는 호스트(100)와 반도체 디스크 장치(200)와의 물리적 연결을 제공한다. 즉, SSD 컨트롤러(210)는 호스트(100)의 버스 포맷(Bus format)에 대응하여 반도체 디스크 장치(200)와의 인터페이싱을 제공한다. 호스트(100)의 버스 포맷으로 USB(Universal Serieal Bus), PCI express, SATA(Serieal ATA), PATA(Parallel ATA) 등으로 구성될 수 있다. 또한, SSD 컨트롤러(210)는 호스트(100)가 반도체 디스크 장치(200)를 하드디스크 드라이버(HDD)로 인식하도록 지원하는 디스크 에뮬레이션(Disk Emulation) 기능을 지원한다. 예를 들면, 어드레스 맵핑(Address mapping) 시에 불휘발성 메모리(240)의 삭제 연산을 숨기기 위한 플래시 변환 계층(Flash Translation Layer:FTL)과 같은 기능을 제공한다.
또한, 본 발명의 입출력 요청에 대한 예측 기능을 제공하기 위하여 SSD 컨트 롤러(210)는 입출력 예측 엔진(220)을 포함한다. 입출력 예측 엔진(220)은 호스트(100)로부터 제공되는 읽기 요청의 패턴들에 대한 학습 기능을 구비한다. 입출력 예측 엔진(220)은 학습 기능을 제공하기 위하여 호스트(100)로부터 입력되는 데이터의 주소를 데이터 베이스(Data base)화 한다. 그리고 현재 입력되는 읽기 요청의 데이터 주소와 다음 읽기 요청의 데이터 주소에 상관 관계를 부여한다. 즉, 현재 입력된 데이터 주소의 다음 데이터의 주소들을 데이터 베이스화하여 가장 빈번하게 발생하는 다음 데이터 주소를 예측값으로 제공할 수 있다. 입출력 예측 엔진(220)의 학습 동작은 이러한 읽기 요청에 대응하는 데이터 주소들을 데이터 베이스로 만드는 작업에 해당한다. 즉, 호스트(100)가 특정 기능을 수행하기 위해서 요청하는 랜덤 요청들에는 일정한 패턴을 가지는 경우가 많다. 따라서, 이 경우에 현재 읽기 요청되는 데이터에 의해서 예측되는 다음 읽기 요청의 데이터를 불휘발성 메모리 (240)로부터 읽어 버퍼 메모리(230)에 저장해 두면, 다음 읽기 요청시에 보다 신속한 응답이 가능하다. 입출력 예측 엔진(220)은 상술한 학습 기능과 학습된 정보를 참조하여 예측 데이터의 프리패치 기능을 수행한다. 또한, 버퍼 메모리(230)에 프리패치된 예측 데이터를 다음 읽기 요청이 발생하는 즉시 호스트(100)로 전달하는 기능을 수행한다. 입출력 예측 엔진(220)의 기능을 후술하는 도 2에서 더 자세히 설명하기로 한다.
버퍼 메모리(230)에는 호스트(100)로부터 제공되는 쓰기 데이터가 일시 저장된다. 또한, 버퍼 메모리(230)에는 호스트(100)의 읽기 요청에 응답하여 불휘발성 메모리(240)로부터 독출된 데이터가 일시 저장한다. 호스트(100)의 읽기 요청시에 불휘발성 메모리(240)에 존재하는 데이터가 캐시되어 있는 경우에는, 버퍼 메모리(230)는 캐시된 데이터를 직접 호스트(100)로 제공하는 캐시 기능을 지원한다. 이때, 불휘발성 메모리(240)로의 액세스는 발생하지 않는다. 앞서 설명된 바와 같이, 호스트(100)의 버스 포맷(예를 들면, STAT)에 의한 데이터 전송 속도는 반도체 디스크 장치(200)의 메모리 채널의 전송 속도보다 월등히 빠르다. 즉, 호스트(100)의 인터페이스 속도가 월등히 높은 경우, 대용량의 버퍼 메모리(230)를 제공함으로써 속도 차이로 발생하는 퍼포먼스 저하를 최소화시킬 수 있다. 버퍼 메모리(230)는 대용량의 보조 기억 장치로 사용되는 반도체 디스크 장치(200)에서 충분한 버퍼링을 제공하기 위해 동기식 DRAM(Synchronous DRAM)으로 제공될 수 있다. 하지만, 버퍼 메모리(230)가 여기의 개시에 국한되지 않음은 이 분야의 통상적인 지식을 습득한 자들에게 자명하다.
불휘발성 메모리(240)는 반도체 디스크 장치(200)의 불휘발성 저장 매체로서 제공된다. 예를 들면, 불휘발성 메모리(240)는 대용량의 저장 능력을 가지는 낸드 플래시 메모리(NAND-type Flash memory)로 제공될 수 있다. 저장 매체로서 플래시 메모리를 예로 들어 설명되었으나, 또 다른 불휘발성 메모리 장치들로 구성될 수 있다. 예를 들면, 저장 매체로서 PRAM, MRAM, ReRAM, FRAM, NOR 플래시 메모리 등이 사용될 수 있으며, 이종의 메모리 장치들이 혼용되는 메모리 시스템에도 적용될 수 있다.
이상의 구성들을 포함하는 본 발명의 반도체 디스크 장치(200)는 호스트(100)로부터 입력되는 읽기 요청의 시퀀스들에 대한 학습 기능을 수행한다. 따라 서, 반도체 디스크 장치(200)는 학습된 자료를 참조하여 현재 입력되는 읽기 요청의 다음 읽기 요청의 예측 데이터를 미리 불휘발성 메모리(240)로부터 독출하여 버퍼 메모리(230)에 프리패치(Prefetch)한다. 그리고, 프리패치된 예측 데이터는 차후에 입력되는 읽기 요청과 매칭되는 되는 것으로 판정되면 호스트(100) 측으로 즉시 전달될 것이다. 따라서, 반도체 디스크 장치(200)는 호스트(100)로부터의 요청들에 대한 학습을 통하여, 불휘발성 메모리(240)로부터 예측 데이터의 프리패치를 실시한다. 프리패치 동작은 현재 요청된 데이터가 버퍼 메모리(230)로부터 호스트(100)로 전송되는 불휘발성 메모리(240)의 유휴 시간(Idle time)에 이루어진다. 따라서, 본 발명의 반도체 디스크 장치(200)는 학습에 의한 예측을 통해서 호스트(100)로부터의 요청에 최대한 신속한 응답을 제공할 수 있다. 여기서, 학습을 통한 다음 데이터의 예측과 예측된 데이터에 대한 프리패치 동작은 앞서 설명된 시퀀셜 요청(Sequential request)과 랜덤 요청(Random request)에 대해서 모두 적용가능하다.
도 2는 도 1의 SSD 컨트롤러(210)의 상세한 구성(또는, 소프트웨어)을 보여주는 블록도이다. 도 2를 참조하면, 본 발명의 SSD 컨트롤러(210)는 호스트(100) 및 불휘발성 메모리(240)와의 인터페이싱을 위한 인터페이싱 모듈(211)과 인터페이싱 모듈(211)을 기반으로 하여 예측 기능을 제공하기 위한 입출력 예측 엔진(210)을 포함한다. 좀더 자세히 설명하면 다음과 같다.
인터페이싱 모듈(211)은 SSD 컨트롤러(210)의 주요 인터페이싱 기능을 수행한다. 인터페이싱 모듈(211)은 호스트(100)와의 인터페이싱과 반도체 디스크 장 치(200)의 내부 캐시 기능을 담당하는 호스트 인터페이스 계층(HIL, 212)을 포함한다. 호스트 인터페이스 계층(HIL, 212)은 호스트(100)로부터 제공되는 읽기 또는 쓰기와 같은 요청(Request)에 대응하는 내부 명령어를 SSD 컨트롤러(210)에 제공한다. 그리고 호스트 인터페이스 계층(212)은 호스트(100)로 전송되는 데이터에 대한 캐시 기능을 제공한다. 즉, 버퍼 메모리(230)에 현재 존재하는 데이터와 읽기 요청된 데이터가 매칭되는 경우, 호스트 인터페이스 계층(212)은 불휘발성 메모리(240)로의 액세스 없이 버퍼 메모리(230)에 저장된 데이터를 호스트(100)로 전달한다.
플래시 변환 계층(FTL, 213)은 호스트로부터 제공되는 논리 주소(Logical address)를 불휘발성 메모리(240)의 물리 주소(Physical address)로 변환하는 역할을 수행한다. 이밖에 플래시 변환 계층(213)은 웨어 레벨링(Wear leveling) 동작을 수행하기 위한 소거 카운트(Erase count)를 수행한다. 또한, 플래시 변환 계층(213)은 불휘발성 메모리(240)의 각 블록들에 흩어져 있는 유효 데이터들을 모아서 하나의 블록에 채우는 가비지 컬렉션(Garbage Collection) 동작을 지원한다. 플래시 변환 계층(213)은 호스트(100)의 파일 시스템(File system)의 읽기/쓰기 요청에 응답하여 상술한 어드레스 맵핑, 소거 레벨링, 그리고 가비지 컬렉션을 수행한다.
플래시 인터페이스 계층(214)은 SSD 컨트롤러(210)와 불휘발성 메모리(240)와의 인터페이싱 동작을 위한 로우 레벨(Low level) 동작을 수행한다. 예를 들면, 불휘발성 메모리(240)의 하드웨어를 제어하기 위한 로우 레벨 드라이버(LLD), 불휘발성 메모리(240)로부터 독출된 데이터의 에러를 정정하기 위한 에러 정정 코 드(Error correction code : ECC) 및 오류 블록 관리 모듈(Bad Block Management : BBM) 등이 플래시 인터페이스 계층(214)에 포함된다. 즉, 플래시 변환 계층(213)의 제어에 따라 플래시 인터페이스 계층(214)은 SSD 컨트롤러(210)와 불휘발성 메모리(240) 간의 데이터 교환을 담당한다.
상술한 인터페이싱 모듈(211)을 기반으로 본 발명의 입출력 예측 엔진(210)은 호스트(100)의 랜덤 요청에 대한 학습 동작과, 학습된 자료를 이용한 예측 동작을 수행한다. 입출력 예측 엔진(210)을 구성하는 HIL & FTL 인터페이스(221), 데이터 베이스 매니저(222) 및 패턴 데이터 페이스(223) 블록들을 좀더 자세히 설명하면 다음과 같다.
HIL & FTL 인터페이스(221)는 입출력 예측 엔진(210)과 인터페이싱 모듈(211)과의 인터페이싱을 제공한다. 특히, 데이터 베이스 매니저(222) 및 패턴 데이터 베이스(223)를 통해서 예측된 읽기 패턴에 대해서 HIL & FTL 인터페이스(221)는 미리 읽기를 수행하기 위해 인터페이싱 모듈(211)과 통신한다. 즉, HIL & FTL 인터페이스(221)는 예측된 데이터를 불휘발성 메모리(240)로부터 버퍼 메모리(230)에 프리패치하도록 플래시 인터페이스 계층(214)과 통신한다. 그리고, 예측된 읽기 요청이 입력되면, HIL & FTL 인터페이스(221)는 버퍼 메모리(230)에 프리패치된 미리 읽기 데이터를 호스트(100)로 전송하도록 호스트 인터페이스 계층(212)과 통신하게 될 것이다.
데이터 베이스 매니저(222)는 랜덤 요청(Random request)에 해당하는 입출력 패턴에 대해서 패턴 데이터 베이스(223)를 업데이트하는 학습 기능을 수행한다. 또 한, 데이터 베이스 매니저(222)는 학습된 패턴 데이터 베이스(223)를 참조하여 현재 읽기 요청에 대한 다음 읽기 요청을 예측한다. 즉, 데이터 베이스 매니저(222)는 현재 읽기 요청시에 제공되는 어드레스로부터 다음 읽기 요청의 어드레스를 예측하여 HIL & FTL 인터페이스(221)가 미리 읽기를 수행하도록 제어한다. 학습과, 학습에 의해서 축적된 정보를 참조하여 데이터 베이스 매니저(222)는 랜덤 요청시에도 프리패치를 실시할 수 있다.
패턴 데이터 베이스(223)는 호스트(100)로부터의 요청들에 대한 패턴 정보를 저장한다. 즉, 패턴 데이터 베이스(223)에는 특정 기능을 수행하기 위해 제공되는 복수의 읽기 요청들의 학습된 패턴들이 저장된다. 데이터 베이스 매니저(222)에 의해서 읽기 패턴들을 패턴 데이터 베이스(223)에 실시간으로 업데이트된다. 이러한 설정에 따라, 패턴 데이터 베이스(223)는 학습된 자료를 바탕으로 어느 하나의 읽기 요청에 대한 다음 읽기 요청을 예측하도록 예측 데이터를 제공할 수 있다.
이상에서 설명된 SSD 컨트롤러(210) 및 입출력 예측 엔진(220)에 따르면, 호스트(100)로부터의 데이터 입출력 패턴을 저장하는 패턴 데이터 베이스(223)와 학습 기능과 예측 기능을 가지는 데이터 베이스 매니저(222)와 예측된 데이터를 미리 프리패치하기 위한 HIL & FTL 인터페이스(221)를 포함한다. 이러한 학습과 예측에 따라, 본 발명의 SSD 컨트롤러(210)는 랜덤 요청들에 대해서도 신속하게 대응할 수 있어 높은 응답 속도를 제공할 수 있다.
도 3은 상술한 도 2의 데이터 베이스 매니저(222)에 의한 패턴 데이터 베이스(223)의 업데이트 방법을 간략히 보여주는 도면이다. 도 3을 참조하면, 패턴 데 이터 베이스(223)에 의하여 읽기 요청시 가장 빈번하게 발생하는 패턴이 학습된다. 호스트(100)로부터 읽기 요청이 발생하면, 읽기 명령어(Read command)와 함께 어드레스(LBA)와 데이터의 크기를 정의하는 연속되는 섹터 수(nSC)가 반도체 디스크 장치(200)로 제공된다. 각각의 특정 동작을 제공하기 위한 읽기 패턴들(Ptrn1~Ptrn4)이 존재하는 것으로 가정하여 복수의 읽기 패턴 그룹(250)을 예시적으로 도시하였다. 이하에서는 읽기 패턴들(Ptrn1~Ptrn4)의 발생에 따라 읽기 요청이 순차적으로 발생하는 경우의 패턴 데이터 베이스(223)의 업데이트 방법을 설명하기로 한다.
어드레스(LBA_0)의 읽기 요청이 제공되면, 패턴 데이터 베이스(223) 내의 어드레스(LBA_0)에 대응하는 DB 엘리먼트(260)는 현재 읽기 요청(Current Req.)에 대응하는 자료들(nAddr, nCnt)을 업데이트한다. 어드레스(LBA_0)에 대응하는 DB 엘리먼트(260)는 패턴 데이터 베이스(Pattern DB, 223) 내의 수많은 DB 엘리먼트들 중에서 하나에 불과하다. DB 엘리먼트(260)는 입력된 현재 읽기 요청(Current Req.)에 대응하는 키값(nAddr)과 요청된 빈도 수(nCnt)를 포함한다. 그리고 DB 엘리먼트(260)는 현재 입력된 읽기 요청(Current Req.)에 뒤따르는 예측 값으로 복수의 후보군들(Next1~Next3)를 가질 수 있다. 복수의 후보군들(Next1~Next3) 각각은 어드레스(nAddr1, nAddr2, nAddr3)와 요청된 빈도 수(nCnt1, nCnt2, nCnt3)를 포함한다. 여기서, DB 엘리먼트(260)에 포함되는 키값(nAddr)은 현재 입력된 읽기 요청된 데이터의 맨 마지막 위치로 제공될 수 있다. 그리고 각각의 빈도 수들(nCnt1, nCnt2, nCnt3)은 현재 읽기 요청된 어드레스(LBA_0)가 입력 이후에 뒤따르는 읽기 요청에 한해서만 카운트-업(Count-up) 될 것이다.
만일, 복수의 읽기 패턴들(Ptrn1, Ptrn2, Ptrn3, Ptrn4)이 순차적으로 반도체 디스크 장치(200)로 제공되는 경우에 어드레스(LBA_0)에 대응하는 DB 엘리먼트(260)의 업데이트 과정을 간략히 설명하기로 한다. 우선, 제 1 패턴(Ptrn1)에 따른 읽기 요청들이 제공되면, 현재 요청 정보(261)의 키값(nAddr)에는 어드레스(LBA_0)로부터 요청된 섹터 수에 1을 차감한 수(LBA_0 + nSC - 1)가 저장된다. 그리고, 현재 요청 정보(261)의 빈도 수(nCnt)가 카운트-업 된다. 이어서, 읽기 요청(LBA_1)이 제공됨에 따라 제 1 예측 후보(Next1, 262)의 어드레스(Next nAddr1)에는 어드레스(LBA_1)이 저장되고 빈도 수(nCnt1)는 카운트-업 될 것이다. 하나의 DB 엘리먼트(260)에서는 대응하는 현재 읽기 요청(LBA_0)의 다음에 제공되는 읽기 요청에만 관심이 있다. 따라서, 제 1 패턴(Ptrn1)에서 발생하는 어드레스들(LBA_2, LBA_3)을 갖는 읽기 요청들에 대한 학습은 다른 DB 엘리먼트들에서 각각 업데이트될 것이므로 여기서는 고려하지 않기로 한다.
이어서, 제 2 패턴(Ptrn2)에 의한 읽기 요청들이 제공되면, 현재 요청 정보(261)의 어드레스(nAddr)는 현재 요청된 데이터의 마지막 섹터의 주소(LBA_0 + nSC-1)를 키값으로 유지한다. 그리고 현재 요청 정보(261)의 빈도 (nCnt)만 카운트-업 된다. 현재 요청 정보(261)에 연속되는 다음 데이터는 어드레스(LBA_1)과는 다른 어드레스(LBA_b)로 입력되었다. 따라서, 제 2 예측 후보(Next2, 263)의 어드레스(Next nAddr1)에는 어드레스(LBA_b)가, 그리고 빈도 수(nCnt2)가 카운트-업 될 것이다.
제 3 패턴(Ptrn3)에 의한 읽기 요청들이 제공되면, 어드레스(LBA_x)는 현재 요청 정보(261)와는 관계가 없으므로 DB 엘리먼트(260)는 변화하지 않는다.
반면, 제 4 패턴(Ptrn4)에 의한 읽기 요청들이 제공되면, 그리고 현재 요청 정보(261)에서는 빈도 수(nCnt)만 카운트-업 된다. 현재 요청 정보(261)에 연속되는 다음 데이터는 어드레스(LBA_1)가 입력되었다. 따라서, 제 1 예측 후보(Next1, 261)의 어드레스(Next nAddr1)에는 어드레스(LBA_1)가 유지되고 빈도 수(nCnt1)만 카운트-업 될 것이다.
복수의 읽기 패턴들(Ptrn1, Ptrn2, Ptrn3, Ptrn4)에 의해서 어드레스(LBA_0)에 대응하는 DB 엘리먼트(260)는 아래의 표 1과 같은 상태(Status)로 업데이트될 것이다.
LBA_0 + nSC -1 3 LBA_1 2 LBA_b 1 x x
상술한 표 1에 의해서 표현되는 DB 엘리먼트(260)에 따르면, 현재 요청 정보(261)에서 키값(nAddr)은 현재 요청의 마지막 섹터 어드레스(LBA_0 + nSC - 1)로 제공될 수 있다. 그리고 현재 요청 정보(261)에서 요청된 빈도 수(nCnt)는 3회로 업데이트될 것이다. 제 1 예측 후보(Next1, 262)의 어드레스는 LBA_1이, 빈도 수(nCnt1)는 2로 업데이트된다. 그리고 제 2 예측 후보(Next2, 263)의 어드레스는 LBA_b가, 빈도 수(nCnt2)는 1로 업데이트된다. 제 3 예측 후보(Next3, 264)에 대응하는 값은 아직 입력되지 않았기 때문에 특정 값이 저장되지는 않았다. 이러한 방식으로 호스트(100)로부터의 읽기 요청에 대하여 반복되는 요청 시퀀스는 높은 빈도 수를 갖는 예측 후보를 가지게 될 것이다. 가장 높은 빈도 수에 대응하는 예측 후보를 예측 값으로 제공하여 프리패치가 가능하다. 패턴들에 대한 학습을 반복하면 많은 수의 DB 엘리먼트들이 생성될 것이다. 많은 수의 DB 엘리먼트들을 통해서 호스트로부터의 다양한 요청에 대해서 높은 정밀도를 갖는 예측값을 제공할 수 있다.
이상의 업데이트 과정을 통하여 반도체 디스크 장치(200)로 요청되는 각각의 읽기 패턴들이 복수의 DB 엘리먼트들을 통하여 학습된다. 즉, 현재 요청 정보(261)에 대응하는 예측 후보군들의 빈도 수(nCnt1, nCnt2, nCnt3) 중 가장 높은 어느 하나를 예측 데이터로 제공함으로써 프리패치가 가능하다. 여기서, 설명의 편의를 위하여 복수의 후보군들을 3개로 도시하였으나, 본 발명은 이에 국한되지 않는다. 또한, 학습의 문턱값을 제공하기 위하여 DB 엘리먼트들의 현재 요청 정보(261)에 포함되는 빈도 수(nCnt)를 사용할 수 있다. 즉, 읽기 요청의 빈도 수(nCnt)가 특정 값에 도달한 이후부터 상술한 예측 데이터를 프리패치하도록 설정될 수 있을 것이다. 또한, 상술한 예측 후보군들의 빈도 수(nCnt1, nCnt2, nCnt3)는 예측 데이터의 제공 이후에도 지속적으로 업데이트된다. 따라서, 시스템의 프로그램 환경에 변화가 생기는 경우에도 능동적으로 변화된 최적의 예측값을 지속적으로 제공할 수 있다.
도 4는 상술한 패턴들에 대한 학습 동작을 간략히 보여주는 순서도이다. 도 4를 참조하면, 입출력 예측 엔진(220, 도 2 참조)에 의한 패턴 데이터 베이스(223)의 업데이트 동작이 개시된다.
패턴 데이터 베이스(223)의 업데이트를 통한 학습 동작이 시작되면, SSD 컨트롤러(210)는 읽기 요청(Req_n, n=0)을 수신한다. 여기서, 첫 번째 읽기 요청(Req_0)을 통해서 수신되는 어드레스(LBA)와 섹터 수(nSC)를 통해서 DB 엘리먼트의 키값(nAddr)이 구해진다(S10). 이어서 다음 읽기 요청을 수신하기 위하여 n(n은 자연수)이 카운트-업 된다(S20). 그리고 첫 번째 읽기 요청(Req_0)에 이어지는 다음 읽기 요청(Req_1)이 수신될 것이다(S30). 데이터 베이스 매니저(222)는 이어지는 연속되는 읽기 요청들(Req_0, Req_1)을 참조하여 패턴 데이터 베이스(223)를 업데이트 한다. 즉, 읽기 요청(Req_1)에 의해서 제공되는 어드레스가 읽기 요청(Req_0)에 대한 예측 후보로 패턴 데이터 베이스(223)의 DB 엘리먼트에 등록될 것이다(S40). 읽기 요청 (Req_n)에 연속되는 읽기 요청이 존재하는 경우, 절차는 단계(S20)로 궤환하여 패턴 데이터 베이스(223)를 지속적으로 업데이트 한다. 그러나, 더 이상의 연속되는 읽기 요청이 존재하지 않는 경우, 패턴 데이터 베이스(223)에 대한 학습 동작은 종료된다(S50).
도 5는 도 4의 학습 동작을 통해서 축적된 패턴 데이터 베이스를 참조하여 현재 읽기 요청에 이어지는 다음 요청의 예측과 프리패치 동작을 보여주는 순서도이다. 도 5의 예측 및 프리패치는 현재의 요청에 대한 처리와 병렬적으로 실시되는 실시예를 보여준다. 좀더 자세히 설명하면 다음과 같다.
패턴 예측 동작이 활성화되면, 입출력 예측 엔진(210)은 호스트(100, 도 1 참조)로부터의 읽기 요청이 수신되었는지를 모니터링한다. 그리고 읽기 요청이 존재하는 경우, 읽기 요청에 대응하는 명령어, 어드레스(LBA, nSC)를 수신한다(S110). 읽기 요청(Read request)의 수신에 따라, 현재 읽기 요청된 데이터를 호스트로 전송하는 단계들(S120~S150)과, 예측된 읽기 데이터를 프리패치(Prefetch)하기 위한 단계들(S170~S190)이 각각 병렬적으로 진행된다. 즉, 고성능의 병렬처리가 가능한 프로세싱 유닛이 지원되는 반도체 디스크 장치(200)라면 이러한 현재 읽기 요청된 데이터의 호스트 전송과 예측된 읽기 데이터의 프리패치의 병행이 가능할 것이다.
우선, 현재 읽기 요청된 데이터를 호스트로 전송하는 단계들(S120~S150)을 살펴보면, 현재 읽기 요청된 데이터가 버퍼 메모리(230)에 캐시되어 있는지를 확인하기 위한 스캔 동작이 호스트 인터페이스 계층(212)에 의해서 실시된다(S120). 만일, 버퍼 메모리(230)에 현재 읽기 요청된 데이터가 존재하면(Hit), 절차는 불휘발성 메모리(240)로의 액세스 없이 버퍼 메모리(230)에 캐시된 데이터를 호스트로 전송하는 단계(S150)로 이동한다. 반면, 현재 읽기 요청된 데이터가 버퍼 메모리(230)에 캐시되어 있지 않은 것으로 검출되면(No hit), 절차는 불휘발성 메모리(240)를 액세스하여 요청된 데이터를 독출하는 단계(S140)로 이동한다. 버퍼 메모리(230)에 현재 읽기 요청된 데이터의 캐시 여부는 명령어와 어드레스의 비교를 통해서 구현될 수 있다(S130). 불휘발성 메모리(240)를 액세스하여 요청된 데이터를 독출하기 위하여, 플래시 변환 계층(213)은 호스트(100)로부터 제공된 명령어 및 어드레스를 불휘발성 메모리(240)의 명령어 및 어드레스로 전환한다. 그리고 전환된 명령어 및 어드레스를 불휘발성 메모리(240)에 제공함으로써 요청된 데이터가 독출되어 버퍼 메모리(230)에 로드될 것이다(S140). 이어서, 버퍼 메모리(230)에 저장된 독출 데이터는 호스트(100)로 전송된다(S150).
또한, 예측된 읽기 데이터를 프리패치(Prefetch)하기 위한 단계들(S170~S190)이 상술한 읽기 요청된 데이터의 전송 동작과 병행하여 실시될 수 있다. 데이터 베이스 매니저(222)는 현재 읽기 요청된 어드레스(=키값)로부터 예측되는 다음 요청 데이터를 패턴 데이터 베이스(223)를 참조하여 검색한다(S170). 이어서, 현재의 요청에 대한 업데이트를 실시한다. 즉, 현재 읽기 요청에 대응하는 DB 엘리먼트를 업데이트한다(S180). 데이터 베이스 매니저(222)에 의해서 검색된 예측 데이터는 이후 HIL & FTL 인터페이스(221)에 의해서 불휘발성 메모리(240)로부터 버퍼 메모리(230)로 프리패치 된다(S190).
현재 읽기 요청된 데이터의 호스트(100)로의 전송과, 현재 읽기 요청에 대해 예측된 다음 읽기 요청의 프리패치가 완료되면, 절차는 다음의 읽기 요청이 존재하는지 판단하는 단계(S160)로 이동한다. 만일, 이어지는 다음 읽기 요청이 없으면 절차는 종료되고, 다음 읽기 요청이 존재하면, 읽기 요청을 수신하는 단계(S110)로 궤환한다(S160).
이상에서는 본 발명의 일 실시예에 따른 현재의 읽기 요청을 실행하는 단계와 현재의 읽기 요청의 다음 읽기 요청의 예측 및 프리패치 동작이 병행되는 SSD 컨트롤러(210)의 동작이 설명되었다. 이러한 예측 및 프리패치 동작을 사용하면, 현재의 요청된 데이터가 호스트(100)로 전송되는 유휴 시간(Idle time) 동안 예측된 데이터가 불휘발성 메모리(240)로부터 버퍼 메모리(230)에 프리패치(Prefetch)된다. 따라서, 이후에 입력되는 다음 읽기 요청이 프리패치된 예측 데이터와 일치하는 경우에는 버퍼 메모리(230)에 캐시된 예측 데이터가 호스트로 전송되어, 반도체 디스크 장치(200)의 응답 속도를 높일 수 있다. 여기서, 유휴 시간(Idle time)은 불휘발성 메모리(240)의 채널 동작을 설명하는 용어이다. 즉, 버퍼 메모리(230)로부터 호스트(100)로의 데이터 전송시에는 불휘발성 메모리(240)의 채널이 별도의 데이터 전송을 담당하고 있지 않음을 의미한다.
도 6은 현재의 읽기 요청에 이어지는 다음 읽기 요청의 예측과 프리패치 동작의 다른 실시예를 보여주는 순서도이다. 도 6을 참조하면, 현재 읽기 요청된 데이터의 캐시 검색과 다음 읽기 요청의 예측 및 프리패치가 순차적으로 일어나는 실시예를 보여준다. 좀더 자세히 설명하면 다음과 같다.
패턴 예측 동작이 활성화되면, 입출력 예측 엔진(210)은 호스트(100, 도 1 참조)로부터의 읽기 요청이 수신되었는지를 모니터링한다. 그리고 읽기 요청이 존재하는 경우, 읽기 요청에 대응하는 명령어, 어드레스(LBA, nSC)를 수신한다(S210). 호스트 인터페이스 계층(212)에 의하여 현재 읽기 요청된 데이터가 버퍼 메모리(230)에 캐시되어 있는지를 확인하기 위한 스캔 동작이 실시된다(S220). 만일, 버퍼 메모리(230)에 현재 읽기 요청된 데이터가 존재하면(Hit), 절차는 불휘발성 메모리(240)를 액세스하는 단계를 스킵(Skip)하도록 설정된다. 그러나, 현재 읽기 요청된 데이터가 버퍼 메모리(230)에 캐시되어 있지 않은 것으로 검출되면(No hit), 절차는 불휘발성 메모리(240)를 액세스하여 요청된 데이터를 독출하는 단계(S240)로 이동한다(S230).
이어서, 버퍼 메모리(230)에 로드된 현재 읽기 요청된 데이터의 호스트(100)로의 전송이 실시된다(S250). 호스트로의 현재 읽기 요청된 데이터의 전송과 더불어, 현재 읽기 요청에 대한 다음 읽기 요청의 예측 및 프리패치를 위한 제반 동작 단계들(S260~S280)이 실시된다. 데이터 베이스 매니저(222)는 현재 읽기 요청된 어드레스로부터 예측되는 다음 읽기 요청 데이터를 패턴 데이터 베이스(223)를 참조하여 검색한다(S260). 이어서, 현재의 요청에 대한 업데이트를 실시한다. 즉, 현재 읽기 요청에 대응하는 DB 엘리먼트를 업데이트한다(S270). 데이터 베이스 매니저(222)에 의해서 검색된 예측 데이터는 이후 HIL & FTL 인터페이스(221)에 의해서 불휘발성 메모리(240)로부터 버퍼 메모리(230)로 프리패치된다(S280).
현재 읽기 요청된 데이터의 호스트(100)로의 전송과 예측된 데이터의 프리패치가 완료되면, 절차는 다음의 읽기 요청이 존재하는지 판단하는 단계(S290)로 이동한다. 만일, 이어지는 다음 읽기 요청이 없으면 절차는 종료되고, 다음 읽기 요청이 존재하면, 읽기 요청을 수신하는 단계(S210)로 궤환한다.
이상에서는 본 발명의 다른 실시예에 따르면, 현재의 읽기 요청을 실행하는 단계와 현재의 읽기 요청에 대한 다음 읽기 요청의 예측 및 프리패치 동작이 순차적으로 진행되는 SSD 컨트롤러(210)의 동작이 설명되었다. 이러한 예측 및 프리패치 동작을 사용하면, 현재의 요청된 데이터가 호스트로 전송되는 시간(Idle time) 동안 예측된 데이터가 불휘발성 메모리(240)로부터 버퍼 메모리(230)에 프리패치된다. 따라서, 이후에 입력되는 다음 읽기 요청이 프리패치된 예측 데이터와 일치하는 경우에는 버퍼 메모리(230)에 캐시된 예측 데이터가 호스트로 전송되어, 반도체 디스크 장치(200)의 응답 속도를 높일 수 있다.
도 7은 본 발명의 SSD 컨트롤러(210, 도 1 참조)에서 이루어지는 예측된 데이터의 프리패치 동작 및 예측된 읽기 요청과 현재 읽기 요청간 비교 동작을 포함하는 또 다른 실시예를 보여주는 순서도이다. 도 7을 참조하면, 예측된 읽기 요청과 현재 읽기 요청의 일치 여부에 따른 동작 절차들이 개시된다.
현재의 읽기 요청이 호스트로부터 제공되면, SSD 컨트롤러(210)는 읽기 요청을 수신한다(S310). 수신된 현재의 읽기 요청에 응답하여, SSD 컨트롤러(210)는 이전에 예측된 읽기 요청과 현재의 읽기 요청이 일치하는 지를 검출하기 위한 비교 동작을 실시한다. 이러한 예측된 읽기 요청과 실제로 입력된 현재의 읽기 요청간의 비교는 어드레스(LBA)와 섹터 수(nSC)를 참조하여 실시될 수 있다(S320). 예측된 읽기 요청과 실제로 입력된 현재의 읽기 요청간의 비교 동작의 결과(S330)에 따라서, 절차는 일치하는 경우(S340)와 일치하지 않는 경우(S370)로 분기된다.
예측된 읽기 요청과 실제로 입력된 현재의 읽기 요청이 동일한 경우, 우선 예측된 읽기 요청에 대응하는 프리패치 동작이 진행중인지 또는 완료되었는지를 판단한다(S340). 만일, 예측된 읽기 요청에 대응하는 데이터의 프리패치가 완료된 경우라면, 프리패치된 데이터의 호스트로의 전송을 위한 단계(S360)로 스킵한다. 반면에, 예측된 읽기 요청에 대응하는 데이터의 프리패치가 여전히 진행중인 경우라면, 절차는 프리패치 동작을 지속하는 단계(S350)를 거친다. 프리패치가 완료되면, 프리패치된 데이터는 단계(S360)을 거쳐서 호스트(Host)로 전송될 것이다.
예측된 읽기 요청과 실제로 입력된 현재의 읽기 요청이 동일하지 않은 경우, 우선 예측된 읽기 요청에 대응하는 프리패치 동작이 진행중인지 또는 완료되었는지를 판단한다(S370). 만일, 예측된 읽기 요청에 대응하는 데이터의 프리패치가 완료된 경우라면, 절차는 프리패치된 데이터를 무시(Discard)하고 현재의 읽기 요청에 해당되는 데이터를 불휘발성 메모리에 액세스하여 독출하는 단계(S390)로 스킵한다. 반면에, 예측된 읽기 요청에 대응하는 데이터의 프리패치 동작이 여전히 진행중인 경우라면, 절차는 프리패치 동작을 중지하도록 불휘발성 메모리 장치를 제어하는 단계(S380)로 진행된다. 잘못된 예측 데이터를 프리패치하는 동작을 중지하고, SSD 컨트롤러(210)는 현재의 읽기 요청에 대응하는 데이터를 불휘발성 메모리로부터 독출하여 버퍼 메모리(230)에 저장할 것이다. 이후, 버퍼 메모리(230)에 저장된 현재 읽기 요청에 대응하는 데이터는 호스트(Host)로 전송될 것이다.
이상의 도 7에 의해서 설명된 실시예에 따르면, 현재의 읽기 요청에 대응하는 예측된 읽기 요청이 동일하지 경우에 대해서 보다 상세하게 설명되었다.
도 8은 본 발명의 반도체 디스크 장치(200)로 입력되는 읽기 요청들의 패턴을 예시적으로 보여주는 도면이다. 도 8을 참조하면, 읽기 요청은 어드레스(LBA)와 대응하는 어드레스로부터 연속되는 섹터들의 수(nSC)가 입력된다. 이러한 읽기 요청들은 특정 애플리케이션이나, 윈도우즈(Windows)와 같은 운영 체제(OS)가 설치된 컴퓨터 시스템의 부팅 과정을 예로 들 수 있다. 이상에서 언급한 시스템의 부팅이나 응용 프로그램 실행 등은 데이터 입출력 패턴의 많은 부분이 항상 동일하게 발생한다. 따라서, 동일하게 반복되는 입출력 패턴을 학습시켜 예측 데이터로 프리패치하는 본 발명을 사용하여 시스템에 대한 반도체 디스크 장치(200)의 응답 속도를 높일 수 있다.
도 9는 상술한 도 8의 읽기 요청들이 반복적으로 입력되는 경우(예를 들면, 부팅 동작시)에 수행되는 학습 동작에 따라 설정되는 패턴 데이터 베이스(300)를 간략히 보여주는 도면이다. 도 9를 참조하면, 각각의 읽기 요청들에 대응하는 어드레스 및 섹터 수는 패턴 데이터 베이스(300)의 DB 엘리먼트 하나를 구성한다. 그리고 DB 엘리먼트들(310, 320, 330, 340, 350, …)의 순차적인 조합을 통해서 도 7의 읽기 요청 패턴들이 고정적으로 입력되는 경우에 지속적인 예측 동작과 프리패치 동작이 가능하다. 좀더 자세히 설명하면 다음과 같다.
첫 번째 입력된 읽기 요청(LBA=169439, nSC=16)에 대응하는 DB 엘리먼트(310)를 구성하기 위하여, 데이터 베이스 매니저(222)는 키값(311)을 생성한다. 키값(311)은 읽기 요청(LBA=169439, nSC=16)된 데이터 중 마지막 섹터의 위치(LBA + nSC - 1)로 정의된다. 따라서, 읽기 요청(LBA=169439, nSC=16)에 대응하는 DB 엘리먼트(310)의 키값(311)은 '169454'로 설정된다. 그리고, 읽기 요청(LBA=169439, nSC=16)에 대한 다음 읽기 요청의 예측값(312)으로는 읽기 요청(LBA=169455, nSC=16)의 첫 번째 어드레스(LBA=169455)가 정의된다. 여기서, 예측되는 기타 후보군에 대한 언급은 생략하기로 한다.
도시되지는 않았지만, 두 번째 읽기 요청(LBA=169455, nSC=16)에 대한 DB 엘리먼트는 키값 '169470(=169455 + 16 - 1)'과 예측값 '169471'을 가질 것이다. 세 번째 입력된 읽기 요청(LBA=169471, nSC=16)에 대응하는 DB 엘리먼트(320)는 키값(321)으로 '169486(=169471 + 16 - 1)'(321), 예측값(322)으로 '169471'을 가질 것이다. 네 번째 입력된 읽기 요청(LBA=6320903, nSC=2)에 대응하는 DB 엘리먼트(330)는 키값(331)으로 '6320904(=6320903 + 2 - 1)'(331), 예측값(332)으로 '1134783'을 가질 것이다. 다섯 번째 입력된 읽기 요청(LBA=1134783, nSC=2)에 대응하는 DB 엘리먼트(340)는 키값(341)으로 '1134784(=1134783 + 2 - 1)'(341), 예측값(342)으로 '1134783'을 가질 것이다. 여섯 번째 입력된 읽기 요청(LBA=1134787, nSC=127)에 대응하는 DB 엘리먼트(350)는 키값(351)으로 '1134913(=1134787 + 127 - 1)'(351), 예측값(352)으로 '1134914'을 가질 것이다. 계속하여, 도 8의 읽기 요청들 각각에 대한 DB 엘리먼트들이 생성되어 패턴 데이터 베이스(300)를 구축할 것이다.
상술한 과정에 따라 구성된 패턴 데이터 베이스(300)에 기초하여 입력되는 읽기 요청에 대응하는 다음 읽기 요청의 예측과 프리패치 과정을 간략히 설명하기로 한다. 만일, 현재 읽기 요청(LBA=6320903, nSC=2)이 입력되면, 데이터 베이스 매니저(222)는 키값으로 '6320904'를 생성하여 패턴 데이터 베이스(223)를 검색한다. 이때, DB 엘리먼트(330)가 검색될 것이며, 예측값(332) '1134783'를 획득할 것이다. 그러면, 예측값(332) '1134783'에 대응하는 다음 읽기 요청의 데이터를 미리 불휘발성 메모리(240)로부터 버퍼 메모리(230)로 프리패치될 것이다.
이상의 패턴 데이터 베이스에 기초하면, 읽기 요청들이 불연속적인 랜덤 요청임에도 불구하고 다음 읽기 요청을 예측할 수 있다. 따라서, 반도체 디스크 장치의 응답 속도를 획기적으로 향상시킬 수 있다.
도 10은 본 발명의 다른 기술적 특징에 따른 반도체 디스크 장치(500)를 보여주는 블록도이다. 도 10을 참조하면, 반도체 디스크 장치(500)는 호스트(400)로부터 읽기/쓰기 요청에 응답하여 불휘발성 메모리(540)에 데이터를 저장하거나 독출한다. 본 발명의 반도체 디스크 장치(500)는 호스트(400)로부터 제공되는 요청의 패턴을 미리 예측한다. 현재 요청된 데이터가 버퍼 메모리(530)로부터 호스트로 전송되는 시간 동안, 예측된 다음 데이터가 불휘발성 메모리(540)로부터 버퍼 메모리(530)에 프리패치된다. 도 1의 실시예와는 달리, 도 10에 기재된 반도체 디스크 장치(500)는 학습을 통해서 특정 기준을 충족하는 것으로 파악된 데이터는 불휘발성 메모리(540) 내에 예측 데이터 영역(550)에 저장할 수 있다. 상술한 특정 기준은 반복되는 빈도 수가 높은 읽기 패턴을 갖는 데이터들이 될 수 있다. 입출력 예측 엔진(520)을 통해서 상술한 특정 기준을 만족하는 데이터들이 불휘발성 메모리(540)의 예측 데이터 영역(550)에 프로그램된다. 예측 데이터 영역(550)은 불휘발성 메모리(540)에 할당되는 어느 하나의 메모리 영역일 수 있다. 또는, 예측 데이터 영역(550)은 불휘발성 메모리(540)로부터 버퍼 메모리(530)로 가장 높은 프리패치 속도를 제공할 수 있는 영역으로 제공될 수 있다. 예를 들면, 싱글 레벨 셀(SLC)로 구성되는 영역에 예측 데이터 영역(550)을 할당할 수 있을 것이다.
이상의 구성들을 포함하는 본 발명의 반도체 디스크 장치(500)는 호스트(400)로부터 입력되는 읽기 요청의 시퀀스들에 대한 학습 기능, 예측 기능, 예측된 데이터에 대한 프리패치 기능을 수행한다. 특히, 예측 데이터 영역(550)의 제공에 따라 호스트로의 신속한 응답뿐 아니라 학습된 데이터에 대해서 높은 프리패치 속도를 제공할 수 있다. 프리패치 동작은 현재 요청된 데이터가 버퍼 메모리(530)로부터 호스트(400)로 전송되는 불휘발성 메모리(540)의 유휴 시간(Idle time)에 이루어진다. 따라서, 불휘발성 메모리(540)와 버퍼 메모리(530) 간의 채널 성능을 최적화하여 호스트(400)로부터의 요청에 보다 신속한 응답을 제공할 수 있다.
도 11에는 본 발명에 따른 반도체 디스크 장치(SSD)를 장착하는 컴퓨팅 시스템(600)이 개략적으로 도시되어 있다. 본 발명에 따른 컴퓨팅 시스템(600)은 시스템 버스(660)에 전기적으로 연결된 마이크로프로세서(620), 램(630), 사용자 인터페이스(640), 베이스밴드 칩셋(Baseband chipset)과 같은 모뎀(650) 및 반도체 디스크 장치(610)를 포함한다. 반도체 디스크 장치(610)는 SSD 컨트롤러(611), 그리고 플래시 메모리 장치(612)를 포함한다. 플래시 메모리 장치(612)에는 마이크로프로세서(620)에 의해서 처리된/처리될 N-비트 데이터(N은 1 또는 그보다 큰 정수)가 SSD 컨트롤러(611)를 통해 저장될 것이다. 여기서, 반도체 디스크 장치(610)는 도 1 또는 도 9에 도시된 반도체 디스크 장치(200 도는 500)와 실질적으로 동일하다. 본 발명에 따른 컴퓨팅 시스템이 모바일 장치인 경우, 컴퓨팅 시스템의 동작 전압을 공급하기 위한 배터리(미도시됨)가 추가적으로 제공될 것이다. 비록 도면에는 도시되지 않았지만, 본 발명에 따른 컴퓨팅 시스템에는 응용 칩셋(Application chipset), 카메라 이미지 프로세서(Camera Image Processor: CIS), 모바일 디램, 등이 더 제공될 수 있음은 이 분야의 통상적인 지식을 습득한 자들에게 자명하다. 본 발명의 반도체 디스크 장치(610)를 통해서 컴퓨팅 시스템(600)은 반도체 디스크 장치(610)로의 고속 액세스가 가능하다. 그리고, 고속으로 부팅되는 컴퓨팅 시스템(600)을 구현할 수 있다.
본 발명에 따른 플래시 메모리 장치 그리고/또는 SSD 컨트롤러는 다양한 형태들의 패키지를 이용하여 실장될 수 있다. 예를 들면, 본 발명에 따른 플래시 메모리 장치 그리고/또는 메모리 컨트롤러는 PoP(Package on Package), Ball grid arrays(BGAs), Chip scale packages(CSPs), Plastic Leaded Chip Carrier(PLCC), Plastic Dual In-Line Package(PDIP), Die in Waffle Pack, Die in Wafer Form, Chip On Board(COB), Ceramic Dual In-Line Package(CERDIP), Plastic Metric Quad Flat Pack(MQFP), Thin Quad Flatpack(TQFP), Small Outline(SOIC), Shrink Small Outline Package(SSOP), Thin Small Outline(TSOP), Thin Quad Flatpack(TQFP), System In Package(SIP), Multi Chip Package(MCP), Wafer-level Fabricated Package(WFP), Wafer-Level Processed Stack Package(WSP), 등과 같은 패키지들을 이용하여 실장될 수 있다.
이상에서와 같이 도면과 명세서에서 최적 실시예가 개시되었다. 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
도 1은 본 발명의 반도체 디스크 장치를 포함하는 시스템을 보여주는 블록도;
도 2는 본 발명의 SSD 컨트롤러를 보여주는 블록도;
도 3은 본 발명의 입출력 요청의 학습 과정을 보여주는 도면;
도 4는 본 발명의 입출력 요청에 대한 학습 방법을 보여주는 순서도;
도 5는 본 발명의 예측 및 프리패치 동작의 일 실시예를 보여주는 순서도;
도 6은 본 발명의 예측 및 프리패치 동작의 다른 실시예를 보여주는 순서도;
도 7은 본 발명의 예측 및 프리패치 동작의 또다른 실시예를 보여주는 순서도;
도 8은 일정한 패턴을 갖는 호스트로부터 제공되는 읽기 요청 시퀀스를 보여주는 도면;
도 9는 도 8의 패턴들에 대한 학습 및 예측을 설명하는 도면;
도 10은 본 발명에 따른 반도체 디스크 장치의 다른 실시예를 보여주는 블록도; 및
도 11은 본 발명에 따른 컴퓨팅 시스템을 보여주는 블록도.
*도면의 주요 부분에 대한 부호의 설명*
100 : 호스트 200 : 반도체 디스크 장치(SSD)
210 : SSD 컨트롤러 211 : 호스트 인터페이스 계층
212 : 플래시 변환 계층 213 : 플래시 인터페이스 계층
220 : 입출력 예측 엔진 221 : HIL & FTL 인터페이스
222 : 데이터 베이스 매니저 223 : 패턴 데이터 베이스
230 : 버퍼 메모리 240 : 불휘발성 메모리
400 : 호스트 500 : 반도체 디스크 장치(SSD)
510 : SSD 컨트롤러 520 : 입출력 예측 엔진
530 : 버퍼 메모리 540 : 불휘발성 메모리
550 : 예측 데이터 영역 600 : 컴퓨팅 시스템
610 : 반도체 디스크 장치 611 : SSD 컨트롤러
612 : 플래시 메모리 620 : 프로세싱 유닛
630 : 램 640 : 유저 인터페이스
650 : 모뎀 660 : 시스템 버스

Claims (19)

  1. 호스트와 데이터를 교환하며, 불휘발성 메모리 장치를 갖는 반도체 디스크 장치의 데이터 처리 방법에 있어서:
    상기 호스트로부터의 반복되는 읽기 요청들로부터, 현재 읽기 요청에 대한 다음 읽기 요청을 복수의 후보군으로 데이터 베이스화하는 단계; 및
    제 1 데이터에 대한 읽기 요청에 응답하여, 상기 제 1 데이터에 대응하는 상기 복수의 후보군들 중 어느 하나를 상기 제 1 데이터의 다음에 읽기 요청될 제 2 데이터로 예측하고, 상기 제 2 데이터를 상기 불휘발성 메모리 장치로부터 프리패치하는 단계를 포함하되,
    상기 데이터 베이스화하는 단계는:
    (a) 제 1 어드레스에 대응하는 상기 현재 읽기 요청을 수신하는 단계;
    (b) 제 2 어드레스에 대응하는 상기 다음 읽기 요청을 수신하는 단계; 및
    (c) 상기 제 2 어드레스에 대응하는 데이터를 상기 제 1 어드레스에 대응하는 데이터의 상기 복수의 후보군들 중 어느 하나로 지정하는 단계를 포함하고,
    상기 복수의 후보군들 중 상기 읽기 요청 횟수가 가장 큰 어느 하나가 상기 제 2 데이터로 제공되는 데이터 처리 방법.
  2. 삭제
  3. 제 1 항에 있어서,
    상기 (a) 단계 내지 상기 (c) 단계는 학습 루프를 구성하며, 상기 학습 루프는 복수 회 반복되는 것을 특징으로 하는 데이터 처리 방법.
  4. 제 3 항에 있어서,
    상기 학습 루프의 반복에 따라, 상기 제 1 어드레스에 대응하는 데이터의 읽기 요청에 대한 데이터 베이스 요소(DB element)가 형성되며, 상기 데이터 베이스 요소는 상기 복수의 후보군들 각각에 대한 읽기 요청 회수를 포함하는 데이터 처리 방법.
  5. 삭제
  6. 제 1 항에 있어서,
    상기 프리패치하는 단계는:
    (a) 제 1 데이터에 대한 읽기 요청을 수신하는 단계;
    (b) 상기 제 1 데이터에 대한 읽기 요청의 다음에 읽기 요청되는 상기 제 2 데이터를 검색하는 단계; 및
    (c) 상기 제 2 데이터를 상기 불휘발성 메모리 장치로부터 버퍼 메모리로 프리패치(Prefetch)하는 단계를 포함하는 데이터 처리 방법.
  7. 제 6 항에 있어서,
    호스트로부터 상기 프리패치된 상기 제 2 데이터에 대한 읽기 요청이 발생하면, 상기 불휘발성 메모리 장치로의 액세스 없이 상기 제 2 데이터가 상기 호스트로 전송되는 데이터 처리 방법.
  8. 제 6 항에 있어서,
    상기 (c) 단계는 상기 제 1 데이터가 상기 호스트로 전송되는 타임 구간에 실시되는 데이터 처리 방법.
  9. 제 1 항에 있어서,
    상기 프리패치하는 단계에서, 상기 제 2 데이터에 대한 프리패치 동작이 완료되기 이전에 다음 읽기 요청이 제공되면, 상기 다음 읽기 요청과 상기 예측된 읽기 요청의 비교 결과에 따라 상기 프리패치 동작의 진행 여부를 결정하는 단계를 더 포함하는 데이터 처리 방법.
  10. 불휘발성 메모리 장치;
    상기 불휘발성 메모리 장치로부터 독출된 데이터가 일시 저장되는 버퍼 메모리; 및
    호스트로부터의 반복적으로 제공되는 읽기 요청들의 패턴을 누적하여 패턴 데이터 베이스를 형성하고, 상기 패턴 데이터 베이스를 참조하여 현재의 읽기 요청에 뒤따르는 다음 읽기 요청을 예측하고, 예측된 데이터를 불휘발성 메모리 장치로부터 상기 버퍼 메모리로 프리패치하는 메모리 컨트롤러를 포함하되,
    상기 불휘발성 메모리 장치는 상기 예측된 데이터를 저장하기 위한 예측 데이터 영역을 포함하고,
    상기 예측 데이터 영역은 상기 불휘발성 메모리 장치의 메모리 영역들 중 가장 높은 속도로 액세스되는 영역에 대응하되,
    상기 패턴 데이터 베이스는, 상기 현재 읽기 요청의 어드레스 정보를 갖는 키값과; 그리고 상기 다음 읽기 요청에 대한 예측 어드레스 및 발생 빈도 수를 저장하는 예측 후보값을 가지는 데이터 베이스 요소(DB element)를 포함하고,
    상기 메모리 컨트롤러는 어느 하나의 키값에 대응하는 복수의 예측 후보값들 중 상기 발생 빈도 수가 가장 큰 어느 하나를 상기 현재 읽기 요청에 대한 예측값으로 제공하는 메모리 시스템.
  11. 제 10 항에 있어서,
    상기 메모리 컨트롤러는:
    상기 호스트 및 상기 불휘발성 메모리 사이에서 인터페이싱을 제공하는 인터페이싱 블록과; 및
    상기 인터페이싱 블록을 경유하는 읽기 요청들의 패턴을 감지하여 상기 패턴 데이터 베이스를 구성하고, 상기 패턴 데이터 베이스로부터 상기 다음 읽기 요청을 예측하는 입출력 예측 엔진을 포함하는 메모리 시스템.
  12. 제 11 항에 있어서,
    상기 입출력 예측 엔진은, 상기 현재 읽기 요청에 응답하여 상기 패턴 데이터 베이스를 업데이트하고, 상기 다음 읽기 요청의 예측 데이터를 추정하여 상기 인터페이싱 블록이 상기 예측 데이터를 프리패치하도록 제어하는 데이터 베이스 매니저를 포함하는 메모리 시스템.
  13. 삭제
  14. 삭제
  15. 삭제
  16. 제 10 항에 있어서,
    상기 데이터 베이스 요소는 상기 현재 읽기 요청의 입력된 총 횟수를 나타내는 입력 횟수(nCnt)를 더 포함하는 메모리 시스템.
  17. 제 16 항에 있어서,
    상기 메모리 컨트롤러는 상기 입력 횟수(nCnt)가 특정 값에 도달한 이후부터 상기 예측값을 제공하는 메모리 시스템.
  18. 삭제
  19. 삭제
KR1020080101095A 2008-09-30 2008-10-15 반도체 디스크 장치 및 그것의 데이터 관리 방법 KR101522402B1 (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
US12/585,935 US8327066B2 (en) 2008-09-30 2009-09-29 Method of managing a solid state drive, associated systems and implementations
US13/067,436 US20110238900A1 (en) 2008-09-30 2011-06-01 Method of managing a solid state drive, associated systems and implementations
US13/067,434 US8904088B2 (en) 2008-09-30 2011-06-01 Method of managing a solid state drive, associated systems and implementations
US14/508,393 US9542199B2 (en) 2008-09-30 2014-10-07 Method of managing a solid state drive, associated systems and implementations

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13682208P 2008-10-07 2008-10-07
US61/136,822 2008-10-07

Publications (2)

Publication Number Publication Date
KR20100039180A KR20100039180A (ko) 2010-04-15
KR101522402B1 true KR101522402B1 (ko) 2015-05-26

Family

ID=42215784

Family Applications (4)

Application Number Title Priority Date Filing Date
KR1020080101093A KR20100039179A (ko) 2008-09-30 2008-10-15 메모리 장치의 상태를 검사하는 메모리 시스템, 저장 장치,그리고 메모리 컨트롤러
KR1020080101097A KR101552207B1 (ko) 2008-09-30 2008-10-15 예비 영역을 가지는 반도체 메모리 장치
KR1020080101098A KR101546072B1 (ko) 2008-09-30 2008-10-15 반도체 디스크 장치, 그것을 포함하는 컴퓨팅 시스템, 그리고 그것의 동작 방법
KR1020080101095A KR101522402B1 (ko) 2008-09-30 2008-10-15 반도체 디스크 장치 및 그것의 데이터 관리 방법

Family Applications Before (3)

Application Number Title Priority Date Filing Date
KR1020080101093A KR20100039179A (ko) 2008-09-30 2008-10-15 메모리 장치의 상태를 검사하는 메모리 시스템, 저장 장치,그리고 메모리 컨트롤러
KR1020080101097A KR101552207B1 (ko) 2008-09-30 2008-10-15 예비 영역을 가지는 반도체 메모리 장치
KR1020080101098A KR101546072B1 (ko) 2008-09-30 2008-10-15 반도체 디스크 장치, 그것을 포함하는 컴퓨팅 시스템, 그리고 그것의 동작 방법

Country Status (1)

Country Link
KR (4) KR20100039179A (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10896136B2 (en) 2018-09-12 2021-01-19 Samsung Electronics Co., Ltd. Storage system including secondary memory that predicts and prefetches data
US11119699B2 (en) 2018-12-13 2021-09-14 SK Hynix Inc. Data processing system and operating method thereof

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101678571B1 (ko) * 2010-10-05 2016-11-22 삼성전자주식회사 컴퓨팅 시스템의 부팅방법
KR101300443B1 (ko) * 2011-09-22 2013-08-27 서울대학교산학협력단 바이패스 경로를 이용하여 신뢰성 검증을 할 수 있는 플래시 메모리 저장 장치, 및 이를 이용한 플래시 메모리 저장 장치의 신뢰성 검증 시스템 및 방법
KR20140066391A (ko) 2012-11-23 2014-06-02 삼성전자주식회사 서든 파워 오프 감지 회로를 포함하는 불휘발성 메모리 장치 및 그것의 서든 파워 오프 감지 방법
KR102147628B1 (ko) * 2013-01-21 2020-08-26 삼성전자 주식회사 메모리 시스템
KR102098697B1 (ko) 2013-03-15 2020-04-08 삼성전자주식회사 비휘발성 메모리 시스템, 이를 포함하는 시스템 및 상기 비휘발성 메모리 시스템의 적응적 사용자 저장 영역 조절 방법
KR102291507B1 (ko) * 2014-05-20 2021-08-20 삼성전자주식회사 메모리 컨트롤러의 동작 방법
US9766818B2 (en) * 2014-12-31 2017-09-19 Samsung Electronics Co., Ltd. Electronic system with learning mechanism and method of operation thereof
WO2017026861A1 (ko) * 2015-08-13 2017-02-16 주식회사 바른전자 온도에 따라 색깔이 가변되는 메모리카드
KR101708236B1 (ko) 2015-10-23 2017-02-20 전자부품연구원 로컬 처리 장치 및 그 데이터 송수신 방법
KR102450555B1 (ko) * 2015-11-09 2022-10-05 삼성전자주식회사 스토리지 장치 및 그것의 동작 방법
KR102656190B1 (ko) * 2016-11-24 2024-04-11 삼성전자주식회사 불휘발성 메모리 장치를 포함하는 스토리지 장치 및 불휘발성 메모리 장치의 액세스 방법
US10445195B2 (en) 2017-08-07 2019-10-15 Micron Technology, Inc. Performing data restore operations in memory
KR102568896B1 (ko) * 2018-04-19 2023-08-21 에스케이하이닉스 주식회사 메모리 컨트롤러 및 이를 포함하는 메모리 시스템
KR102211122B1 (ko) * 2018-12-20 2021-02-02 삼성전자주식회사 스토리지 장치 및 스토리지 시스템
KR20220036468A (ko) 2020-09-16 2022-03-23 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006260067A (ja) * 2005-03-16 2006-09-28 Internatl Business Mach Corp <Ibm> 先読み装置、先読み方法、および先読みプログラム
JP2007537548A (ja) * 2004-05-14 2007-12-20 ヒューレット−パッカード デベロップメント カンパニー エル.ピー. ストレージエリアネットワークレベルにおける代替キャッシュ方式の提供

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6260156B1 (en) 1998-12-04 2001-07-10 Datalight, Inc. Method and system for managing bad areas in flash memory
US7596656B2 (en) 2006-09-28 2009-09-29 Sandisk Corporation Memory cards with end of life recovery and resizing

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007537548A (ja) * 2004-05-14 2007-12-20 ヒューレット−パッカード デベロップメント カンパニー エル.ピー. ストレージエリアネットワークレベルにおける代替キャッシュ方式の提供
JP2006260067A (ja) * 2005-03-16 2006-09-28 Internatl Business Mach Corp <Ibm> 先読み装置、先読み方法、および先読みプログラム

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10896136B2 (en) 2018-09-12 2021-01-19 Samsung Electronics Co., Ltd. Storage system including secondary memory that predicts and prefetches data
US11119699B2 (en) 2018-12-13 2021-09-14 SK Hynix Inc. Data processing system and operating method thereof

Also Published As

Publication number Publication date
KR20100039179A (ko) 2010-04-15
KR20100039182A (ko) 2010-04-15
KR101552207B1 (ko) 2015-09-14
KR20100039180A (ko) 2010-04-15
KR20100039181A (ko) 2010-04-15
KR101546072B1 (ko) 2015-08-21

Similar Documents

Publication Publication Date Title
KR101522402B1 (ko) 반도체 디스크 장치 및 그것의 데이터 관리 방법
US11893238B2 (en) Method of controlling nonvolatile semiconductor memory
US9239780B2 (en) Selection of memory blocks for garbage collection based on variable block life threshold
US9244619B2 (en) Method of managing data storage device and data storage device
KR100562906B1 (ko) 시리얼 플래시 메모리에서의 xip를 위한 우선순위기반의 플래시 메모리 제어 장치 및 이를 이용한 메모리관리 방법, 이에 따른 플래시 메모리 칩
US8918580B2 (en) Storage device with buffer memory including non-volatile RAM and volatile RAM
KR101553532B1 (ko) 스토리지 장치
US9852061B2 (en) Memory device and operating method of memory device
US8321624B2 (en) Memory device and management method of memory device
KR101533744B1 (ko) 플래시 메모리 시스템 및 그것의 플래시 변환 계층 설계 방법
US8555000B2 (en) Data storage device and data storing method thereof
JP5649742B2 (ja) トランザクションログの復元
CN113614702B (zh) 基于检测到的读取命令活跃流的自适应预读高速缓存管理器
KR20200019421A (ko) 메모리 시스템 내 대용량 데이터 저장이 가능한 블록에서의 유효 데이터 체크 방법 및 장치
KR20220060372A (ko) 메모리 시스템 및 그것의 동작방법
CN114077389A (zh) 控制器、存储器系统以及数据处理系统
US8516194B2 (en) Systems and methods for caching data with a nonvolatile memory cache
KR20170033480A (ko) 스토리지 장치 및 그것을 포함하는 서버 시스템의 매칭 키 검색 방법
US9575883B2 (en) Control device, storage device, and storage control method
CN112286836A (zh) 用于在存储器系统中执行访问操作的方法和设备
CN111813714A (zh) 存储器系统、操作存储器系统的方法以及数据处理系统
US11579792B2 (en) Data movement between different cell regions in non-volatile memory
US11893269B2 (en) Apparatus and method for improving read performance in a system

Legal Events

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

Payment date: 20180430

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20190429

Year of fee payment: 5