KR101200670B1 - 대용량 저장 액셀러레이터 - Google Patents

대용량 저장 액셀러레이터 Download PDF

Info

Publication number
KR101200670B1
KR101200670B1 KR1020067016395A KR20067016395A KR101200670B1 KR 101200670 B1 KR101200670 B1 KR 101200670B1 KR 1020067016395 A KR1020067016395 A KR 1020067016395A KR 20067016395 A KR20067016395 A KR 20067016395A KR 101200670 B1 KR101200670 B1 KR 101200670B1
Authority
KR
South Korea
Prior art keywords
data
storage device
volatile storage
volatile
address
Prior art date
Application number
KR1020067016395A
Other languages
English (en)
Other versions
KR20070001136A (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 샌디스크 코포레이션
Publication of KR20070001136A publication Critical patent/KR20070001136A/ko
Application granted granted Critical
Publication of KR101200670B1 publication Critical patent/KR101200670B1/ko

Links

Images

Classifications

    • 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays

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)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)

Abstract

데이터 저장 장치가 제공된다. 디스크 장치는 비-휘발성 메모리 장치와 조합되어, 상기 디스크 장치 홀로 얻을 수 있는 것보다 더 짧은 기록 액세스 시간과 훨씬 높은 데이터 기록 속도가 제공될 수 있다. 섹터의 인터리빙 버스트(Interleaving burst)는 두 개의 저장 장치들 사이에 기록할 수 있으며, 이는 디스크 장치의 탐색 시간에 따른 영향을 효과적으로 제거할 수 있다. 호스트 시스템으로부터의 불연속적인 논리 주소 전송 다음에, 저장 컨트롤러가 디스크 장치 상에서 룩-어헤드 탐색 연산(look-ahead seek operation)을 수행할 수 있다. 이러한 시스템은 비-휘발성 메모리 장치의 더 빠른 기록 액세스 특성을 활용할 수 있으며, 디스크 탐색 시간에 의해 초래되는 데드 시간(dead time)이 제거될 수 있다.

Description

대용량 저장 액셀러레이터{MASS STORAGE ACCELERATOR}
본 발명은 일반적으로 데이터 저장 장치에 관한 것이며, 더 세부적으로는 듀얼 매체 저장소에 관한 것이다.
범용 컴퓨터는 대용량 저장 시스템을 필요로 한다. 데이터의 직접 조작에 쓰이는 메인 메모리와 달리, 대용량 저장소는 데이터를 보유하기 위해 사용된다. 프로그램이 실행될 때, 프로그램은 대용량 저장소에 저장, 즉, 상기 프로그램의 전체, 또는 상기 프로그램의 일부가 메인 메모리로 복사되는 것이 일반적이다. 시스템이 프로그램 및 그에 관련된 데이터의 위치를 찾고, 대용량 저장 장치로부터 메인 메모리로 이동시킬 수 있는 속도가 시스템의 전체 속도이다.
일반적인 대용량 저장 장치로는, 플로피 디스크, 광 디스크와 광 테이프가 있다. 각각의 장치는 용량, 가격, 속도, 휴대성에 관련하여 장?단점을 갖는다.
덧붙이자면, 그 밖의 다른 장치, 가령, 플래시 메모리가 비-휘발성 저장소를 제공할 수 있다. 플래시 메모리는 전기적 소거 및 프로그램 가능 읽기 전용 메모리(EEPROM: Electrically Erasable Programmable Read-Only Memory)의 한 종류이다. 플래시 메모리가 휘발성 메인 메모리만큼 빠르지 않은 것이 일반적일지라도, 하드 디스크보다는 빠르다.
본 발명의 발명자는 각각의 장치의 장점을 극대화하고, 단점을 최소화하기 위해, 개별 장치들을 하나의 단일 대용량 저장 시스템으로 병합하는 발상에 착안했다. 예를 들자면, PCT 출원“MEMORY DEVICE" (WO 97/50035, 1997년 11월 31일)이 공개되었으며, 이는 본원에서 참조로서 인용된다. 상기 PCT 출원은 비교적 느린 액세스 대용량 데이터 저장 장치(가령 하드 디스크)와 비교적 빠른 액세스 데이터 저장 장치(가령, 플래시 메모리)를 모두 포함하는 메모리 시스템을 서술하고 있다. Daniel Auclair와 Eliyahou Harari의 U.S. 특허 "Mass Computer Storage System Having Both Solid State and Rotating Disk Types of Memory" (U.S. 특허 No.6,016,530, 2000년 1월 18일)가 이와 비슷한 개념을 가지며, 이는 본원에서 참조로서 인용된다.
비-휘발성 플래시 메모리 장치와 비-휘발성 하드 디스크를 조합함으로써, 최종 대용량 저장 시스템은 상기 부분들의 총합보다 더 클 수 있다. 그러나 이러한 메모리 시스템은 각각의 데이터 섹터의 단 하나의 버전이 유지되는 상황에서 제한된다. 데이터 섹터는 고속 메모리, 또는 저속 액세스 대용량 데이터 저장 장치에 저장되며, 상기 고속 메모리와 상기 저속 액세스 대용량 저장 장치의 용량의 총합과 동일한 논리 주소 공간이 제공된다.
하나 이상의 집적 회로 칩 상에 형성되는 플래시 셀의 배열을 사용하는, 상업적으로 성공적인 다수의 비-휘발성 메모리 프로덕트가 오늘날 사용되고 있다. 개별 집적 회로 칩 상의 메모리 컨트롤러가 메모리 어레이의 동작을 제어한다. 이러한 컨트롤러는 마이크로프로세서, 일부 비-휘발성 ROM(Read-Only Memory), 비-휘발 성 RAM(Random-Access Memory), 하나 이상의 특수 회로, 가령 프로그램 연산과 판독 연산 중에 상기 컨트롤러를 통과하는 데이터로부터 에러-보정 코드(ECC: Error-Correction-Code)를 연산하는 회로를 포함한다.
통상적인 플래시 어레이의 메모리 셀은 함께 소거될 수 있는 셀들의 개별 블록으로 나눠진다. 즉, 소거 블록은 소거 유닛(동시에 소거될 수 있는 최소 개수의 셀)이다. 각각의 소거 블록은 통상적으로 하나 이상의 데이터 페이지를 저장하며, 상기 페이지는 서로 다른 서브-어레이, 또는 플레인(plane)에서 병렬로 프로그래밍되거나 판독된다. 각각의 플레인은 데이터의 하나 이상의 섹터를 저장하며, 상기 섹터의 크기는 호스트 시스템에 의해 규정된다. 예를 들어 섹터는 마그네틱 디스크 드라이브 표준에 따르는 512byte의 사용자 데이터를 포함한다. 이러한 메모리들은 각각의 소거 블록 내에 16페이지, 또는 32 페이지, 또는 그 이상의 페이지로 구성되는 것이 통상적이며, 각각의 페이지는 하나, 또는 단지 소수의 데이터의 호스트 섹터만을 저장한다.
병렬성(parallelism)을 증가시키기 위해, 어레이가 서브-어레이(일명 플레인)로 나눠지는 것이 통상적이다. 각각의 플레인이 자신 고유의 데이터 레지스터와, 그 밖의 다른 병렬 연산용 회로를 포함하여, 데이터의 섹터가 프로그래밍되거나, 동시에 모든 플레인으로부터 판독될 수 있다. 단일 집적 회로 상의 어레이는 물리적으로 플레인으로 분할될 수 있거나, 또는 각각의 플레인이 별도의 집적 회로 칩으로부터 형성될 수 있다. 이러한 메모리 구현예의 예제가 Lee 외 다수의 U.S. Patent No. 5,798,968, "Plane decode/virtual sector architecture"(1998년 8월 25일)와, Lee 외 다수의 U.S. Patent No.5,890,192, "Concurrent write of multiple chunks of data into multiple subarrays of flash EEPROM"(1999년 3월 30일)이며, 이 둘 모두 본원에서 참조로서 인용된다.
메모리를 효율적으로 관리하기 위해, 가상 블록, 또는 메타블록(metablock)을 형성하기 위해, 소거 블록들이 함께 연결될 수 있다. 즉, 각각의 메타블록이 각각의 플레인으로부터 하나의 소거 블록을 포함하기 위해 형성된다. 상기 메타블록의 사용이 "Partial Block Data Programming And Reading Operations In A Non-Volatile Memory" (WO02/058074, 2002년 7월 25일)에서 서술되며, 이는 본원에서 참조로서 인용된다. 상기 메타블록은 호스트 논리 블록 주소에 의해 데이터의 프로그래밍 및 판독의 수신자로서 식별된다. 이와 유사하게, 메타블록의 모든 소거 블록은 함께 소거된다. 이러한 커다란 블록, 또는 메타블록에 의해 동작되는 메모리 시스템의 컨트롤러는, 호스트에 의해 수신된 논리 블록 주소(LBA)와 상기 메모리 셀 어레이내의 물리 블록 번호(PBN) 간의 변환을 유도하는 다수의 함수를 수행한다. 상기 블록 주소 내의 오프셋에 의해, 상기 블록 내의 개별 페이지가 식별되는 것이 일반적이다.
이러한 종류의 플래시 메모리 시스템은, 휴대용 애플리케이션의 대용량 저장 장치로서 사용되는 것이 일반적이다. 예를 들어 ATA 같은 프로토콜을 이용하는 논리 인터페이스를 통해, 플래시 메모리 장치는 호스트 시스템과 통신하며, 플래시 메모리 장치는 이동형 카드의 형태로 되어 있다. 상업적으로 이용 가능한 일부 카 드로는 CF 카드(CompactFlashTM card), MMC(MultiMedia card), SD 카드(Secure Digital card), 스마트 미디어 카드, P-Tag(Personnel tag) 및 메모리 스틱 카드가 있다. 호스트로는 개인용 컴퓨터, 노트북 컴퓨터, PDA(Personal Digital Assistant), 다양한 데이터 통신 시스템, 이와 유사한 종류의 설비가 있다. 메모리 카드의 구현 외에도, 이러한 종류의 메모리는 다양한 종류의 호스트 시스템으로 내장될 수 있다.
본 발명은 일반적으로 제 1 저장 장치와 제 2 저장 장치와 저장 컨트롤러를 포함하는 데이터 저장 시스템을 제공한다. 제 2 저장 장치는 제 2 저장 장치에 비해, 더 느린 평균 액세스 시간과 더 높은 용량을 갖는다. 평균 액세스 시간이란, 장치가 데이터의 판독, 또는 기록에 착수하기 전에 필요한 평균 지연이다.
한 가지 실시예에서, 저장 컨트롤러는 데이터의 제 1 부분을 제 1 저장 장치로 보내고, 데이터의 제 2 부분을 제 2 저장 장치로 보내는 기능을 한다. 또 다른 실시예에서, 저장 컨트롤러는 데이터의 제 1 부분을 제 1 저장 장치로부터 복구하고, 데이터의 제 2 부분을 제 2 저장 장치로부터 복구한다.
통상적으로, 데이터의 제 1 부분은 연속적인 데이터 스트림에서의 데이터의 제 1 부분이다. 이와 유사하게, 데이터의 제 2 부분은 데이터 스트림으로부터의 나머지 데이터 부분이다. 테이블은 데이터의 제 1 부분의 위치와 데이터의 제 2 부분의 위치에 관련된 정보를 유지하기 위해 사용되는 것이 일반적이다.
또 다른 실시예에서, 데이터 주소를 기록하기 위한 기록 명령어를 호스트 시스템 버스로부터 수신함으로써, 상기 데이터가 저장된다. 그 후 데이터의 제 1 부분이 제 1 저장 장치에 저장된다. 데이터의 제 1 부분이 상기 제 1 장치에 완전하게 저장되기 전에, 제 2 저장 장치는 데이터를 기록할 준비를 한다. 제 2 저장 장치가 준비된 후, 데이터의 나머지 부분이 상기 제 2 저장 장치에 저장된다.
또 다른 실시예에서, 판독 명령어가 호스트 시스템 버스로부터 수신된다. 그 후, 데이터의 제 1 부분이 상기 제 1 저장 장치 상에 위치하는지를 상기 데이터 저장 시스템은 판단한다. 제 1 저장 장치 상에 데이터가 존재할 경우, 데이터의 제 1 부분이 제 1 저장 장치로부터 판독되며, 데이터의 제 1 부분의 판독을 완료하기 전에, 제 2 저장 장치는 상기 데이터의 나머지 부분을 판독하기 위해 준비하고, 제 2 저장 장치로부터의 데이터의 나머지 부분이 판독된다. 그렇지 않을 경우, 데이터의 제 1 부분이 상기 제 1 저장 장치 상에 존재하지 않을 경우, 그 후, 데이터의 제 1 부분과 상기 데이터의 나머지 부분은 모두 제 2 저장 장치로부터 판독되어진다.
도 1A는 본 발명을 사용할 수 있는 바람직한 범용 컴퓨터 시스템을 도식한 도면이다.
도 1B는 도 1A의 범용 컴퓨터 시스템을 추상적으로 도식한 도면이다.
도 2A는 본 발명의 바람직한 실시예를 따르는 개선된 대용량 저장 장치를 도식한 도면이다.
도 2B는 본 발명의 또 다른 바람직한 실시예를 따르는 개선된 대용량 저장 장치를 도식한 도면이다.
도 3A는 하드 드라이브 주소 공간 및 플래시 주소 공간에서의 헤드 데이터와 바디 데이터를 추상적으로 도식한 도면이다.
도 3B는 개선된 대용량 저장 장치 전체를 위한 주소 공간에 관련된 하드 드라이브 주소 공간 및 플래시 주소 공간을 추상적으로 도식한 도면이다.
도 4A는 기록 명령어가 디스크 가속을 사용하지 않는 시스템에 의해 수신될 때, 발생하는 종래의 기록 프로세싱을 도식한 시간 추이 다이어그램이다.
도 4B는 본 발명의 바람직한 실시예에 따르는 디스크 가속을 사용하는 시스템이 기록 명령어를 수신할 때, 발생하는 기록 프로세싱을 도식한 시간 추이 다이어그램이다.
도 5A는 플래시 용량이 증가함에 따라, 시스템 성능이 향상됨을 도식한 그래프이다.
도 5B는 개선된 대용량 저장 장치의 이용 빈도가 감소함에 따라 시스템 성능이 향상됨을 도식한 그래프이다.
도 6은 링 버퍼를 도식한 도면이다.
도 7은 본 발명의 바람직한 실시예에 따르는 바람직한 기록 기법에 대한 흐름도이다.
도 8은 본 발명의 바람직한 실시예에 따르는 바람직한 판독 기법에 대한 흐름도이다.
도 9는 도 6의 링 버퍼 내의 섹터 저장 위치의 맵을 도식한 도면이다.
본 발명에 따라, 각각 장?단점을 갖는 두 개의 별도의 저장 장치를 조합함으로써, 종래의 대용량 저장 장치(즉 보조 메모리)가 개량된다. 예를 들어, 플래시 메모리가 하드 드라이브보다 더 빠른 액세스 시간을 가질지라도, 하드 드라이브의 저장 용량만큼을 갖는 것은 아니다. 본 발명에서, 임의의 두 개의 비-휘발성 저장 장치가 사용될 수 있으며, 이때 하나가 나머지 하나보다 더 빠른 액세스 시간을 갖는다. 저장 장치에 적용되는 액세스 시간은, 저장 장치가 데이터 요청(Request)을 수신하는 시점과 저장 장치가 실제로 데이터를 판독하거나 기록하기 시작하는 시점의 차이 시간으로서 규정되는 것이 일반적이다. 예를 들어, 하드, 또는 플로피 디스크 상의 데이터를 이용하여, 액세스 시간은 명령 오버헤드 시간, 탐색 시간, 정착 시간, 대기 시간의 총합과 동일하다.
탐색 시간과 대기 시간이 디스크의 전체 액세스 시간을 좌우한다. 디스크의 탐색 시간은 판독/기록 헤드가 하나의 트랙에서 다른 트랙으로 이동하기 위한 시간이다. 하드 디스크의 경우에 있어서, 일반적으로 인접 트랙을 탐색할 때는 1밀리세컨드, 풀-스트로크 탐색(내부 트랙에서 외부 트랙으로의 탐색, 또는 그 반대 방향 탐색)일 때는 15밀리세컨드, 랜덤 탐색 평균 시간은 10밀리세컨드이다. 대기 시간은, 헤드가 어드레스 트랙 상에 위치하면, 플래터(platter) 상의 어드레싱된 섹터가 상기 헤드를 회전시키기 위한 시간이며, 상기 디스크의 회전 속도의 함수이다. 7200rpm의 회전 속도에 있어서, 대기 시간은 평균 4.14밀리세컨드이고, 최대 8.3밀리세컨드이다.
이와는 다르게, 일반적인 플래시 디스크 장치 상에서, 데이터의 섹터는 약 30μS로 이동될 수 있고, 200μS로 플래시 메모리에서 병렬로 8개의 섹터가 프로그래밍될 수 있다. 이에 따라, 약 16MB/s의 버스트(burst) 기록 속도가 제공되며, 이때 매 250μS 마다 8개의 섹터가 기록될 수 있다. 그러나 상기 장치는 보조적인 하우스키핑 동작, 가령 가비지 수집(garbage collection), 데이터의 블록을 완성하기 위한, 그리고 데이터 소거를 위한 데이터 섹터의 재-배치를 수행해야한다. 따라서 8개의 섹터를 프로그래밍하기 위한 유효 시간은 더 길 수 있다. 따라서 유지되는 플래시의 기록 속도(write rate)가 약 15MB/Sec일 수 있다. 물론, 다른 섹터가 이동하고, 병렬 프로그래밍 체제가 서로 다른 동작 속도를 제공하는 플래시 디스크 장치에서 사용될 수 있다.
도 1A는 본 발명을 이용하는 범용 컴퓨터 시스템(100)을 도식한다. 구성요소로는 컴퓨터(105)와, 마우스(110)와 키보드(115) 같은 다양한 입력 장치들과, 모니터(120)와 프린터(125) 같은 다양한 출력 장치들이 있다.
도 1B는 도 1A의 컴퓨터 시스템(100)의 필수 구성요소를 추상적으로 도식한다. 단일 구성요소(130)는 사용자가 컴퓨터 시스템(100)과 상호작용할 수 있도록 하는 입력 장치를 나타내며, 마우스, 키보드가 있다. 이와 유사하게, 단일 구성요소(135)는 컴퓨터 시스템(100)이 획득한 것이 무엇인지를 디스플레이하는 출력 장치를 나타내며, 모니터와 프린터가 있다. 컴퓨터 시스템(100)의 중심부는 CPU(140) 이며, 이는 명령어를 실행하는 구성요소이다. 메인 메모리(145)는 일반적으로 휘발성이며, CPU(140)에게 실행되는 명령어와 상기 명령어에 의해 조작되는 데이터 모두를 제공한다. 이러한 구성요소(130, 135, 140, 145)는 종래 기술에서도 잘 알려져 있다.
개선된 대용량 저장 장치(150)에 의해, 컴퓨터 시스템(100)은 영구적으로 거대한 양의 데이터를 유지할 수 있다. 구성요소(130, 135, 140, 145, 150)는 호스트 버스(155)를 통해 서로 정보를 교환할 수 있다.
본 발명의 하나의 실시예에 따라서, 도 2A는 개선된 대용량 저장 장치(150A)를 도식한다. 두 개의 저장 장치, 즉 플래시 메모리 시스템(205)과 하드 드라이브(210)가 병렬로 연결되어 있다. 상기 플래시 메모리 시스템(205)은 플래시 메모리 어레이(215)와 플래시 컨트롤러(220)를 포함한다. 상기 하드 드라이브(210)는 마그네틱 하드 디스크(225)와 디스크 컨트롤러(230)를 포함한다. 각각의 컨트롤러(220, 230)는 각각의 메모리 타입별 특정 동작을 담당한다. 예를 들어, 플래시 컨트롤러(220)와 플래시 메모리 어레이(215) 간의 인터페이스(250)가 물리적 인터페이스이도록, 플래시 컨트롤러(220)는 데이터 섹터의 모든 논리-대-물리적 매핑과, 모든 플래시 메모리 관리를 제어한다. 상기 디스크 컨트롤러(230)는 판독과 기록을 위한 마그네틱 하드 디스크(225)의 동작을 관리한다. 컨트롤러(220, 230)는 모두 논리 인터페이스(260, 265)를 통해, 라우터(235)에 연결될 수 있다.
호스트 인터페이스(240)와 저장 컨트롤러(245)는 모두 라우터(235)로부터의 상향에 위치하며, 이로써 호스트 인터페이스(240)와 디스크 컨트롤러(230) 간의 방 향, 또는 호스트 인터페이스(240)와 플래시 컨트롤러(22) 간의 방향으로 데이터와 제어 정보가 통과될 수 있다. 이러한 전송은 자립적인 동작으로서 행해질 수 있다. 또는, 호스트 인터페이스(240)와 대용량 저장소 컨트롤러(220, 230) 중 하나 간의 방향으로 이뤄지는 데이터 전송과 함께, 이러한 전송이 이뤄질 수 있다. 이러한 데이터 전송을 위해, 라우터(235)가 제어 논리를 사용할 수 있다.
호스트 인터페이스(240)는 호스트 버스(155)에게 직접 인터페이스를 제공하고, 상기 호스트 버스(155) 상에서 사용되는 특정 프로토콜에 대한 모든 지원을 제공할 수 있다. 호스트 인터페이스(240)와, 디스크 컨트롤러(230)와, 마그네틱 하드 디스크(225)에 의해 형성되는 서브시스템뿐 아니라, 호스트 인터페이스(240)와, 플래시 컨트롤러(220)와, 플래시 메모리 어레이(215)에 의해 형성되는 서브시스템도 각각 완전한 데이터 저장 시스템을 형성한다. 라우터(235)는 호스트 인터페이스(240)로부터 수정 없이 데이터와 제어 신호를 통과시킬 수 있으며, 또는 컨트롤러(220, 230)와 통신하기 위한 또 다른 프로토콜을 확립할 수 있다. 라우터(235)와 대용량 저장 컨트롤러(220, 또는 230) 사이의 인터페이스(260, 265)가 표준 프로토콜, 가령 ATA일 수 있거나, 또는 개선된 대용량 저장 장치(150)를 위해 형성된 특수 인터페이스일 수 있다. 인터페이스(260, 265)는, 플래시 메모리 시스템(205)과 하드 드라이브(210)의 데이터의 개별 섹터로의 판독/기록의 랜덤 액세스를 제공하는 논리 인터페이스이며, 각각 저장 매체의 물리적 특성에 대해 의존적이지 않는 것이 일반적이다.
덧붙이자면, 플래시 컨트롤러(220)는 인터페이스(260) 상에서 특수 명령어, 또는 연산을 지원하여, 플래시 메모리 어레이(215)의 예약된 영역으로의 직접 액세스를 제공할 수 있다. 이때 상기 예약된 영역은 테이블과, 저장 컨트롤러(245A)에 의해 사용되는 정보 로그를 저장하기 위해 사용될 수 있다. 또는, 상기 저장 컨트롤러(245A)가 이러한 테이블과 로그를 위한 자신 고유의 비-휘발성 메모리를 가질 수 있다.
저장 컨트롤러(254A)는, 호스트 인터페이스(240)와 대용량 저장 컨트롤러(220, 230) 사이에서의 정보의 전송을 지시하는 지능형 제어 유닛이다. 저장 컨트롤러(254A)는 플래시 메모리 시스템(205), 또는 하드 드라이브(210)로의 데이터 저장, 또는 플래시 메모리 시스템(205), 또는 하드 드라이브(210)로부터의 데이터 판독을 조정한다. 저장 컨트롤러(245A)는 플래시 메모리 어레이(215)에 저장되는 정보에 대한 주소 테이블을 유지할 수 있다.
개선된 대용량 저장 장치(150)의 많은 구성요소, 가령, 호스트 인터페이스(240), 라우터(235), 플래시 컨트롤러(220), 디스크 컨트롤러(230)에서, 휘발성 메모리가 버퍼, 또는 캐시 메모리 기능을 할 수 있다. 단일 휘발성 메모리가 다양한 구성요소에서 동작하도록 스케줄링될 수 있으며, 또는 별개의 휘발성 메모리들이 각각의 구성요소 전용이 될 수 있다.
또 다른 실시예에서, 집적된 컨트롤러 장치에서, 상기 컨트롤러(220, 230)의 기능이 라우터(235)와 합쳐질 수 있다. 이러한 장치는 또한, 저장 컨트롤러(245)와 호스트 인터페이스(240)를 포함할 수 있다. 그러나 이러한 구성은 새로운 컨트롤러 유닛을 필요로 할 것이다. 따라서 컨트롤러(220, 230) 중 하나 이상이 메모리 장치 에 포함되는 것이 간단하지 않을 것이다. 이러한 구성에 따라 새로운 컨트롤 회로가 구축될 것이 요구되는 반면에, 총 요구되는 구성요소의 수는 감소할 수 있다.
도 2B는 본 발명의 또 다른 실시예에 따르는 개선된 대용량 저장 장치(150B)를 도식한다. 개선된 저장 장치(150B)는 도 2A의 개선된 대용량 저장 장치(150A)에서와 같은 하드 드라이브(210)를 유지하나, 라우터(235)와 호스트 인터페이스(240)의 기능뿐 아니라 도 2A의 저장 컨트롤러(245A)의 메인 기능을 포함하는 저장 컨트롤러(245B)를 이용한다. 논리 인터페이스(260)가 제거되고, 플래시 메모리 어레이(215B)에 직접 연결되어 있는 물리 인터페이스(275)로 대체된다. 이러한 구성에서, 디스크 액셀러레이터(250)는 ATA 인터페이스 상에서 하드드라이브(210)로의 전단 캐시(front-end cache)인 것이 바람직하며, 또는 하드 드라이브(210)의 선재하는 구성요소를 이용하기 위해 하드 드라이브(210) 어셈블리로 통합된다. 본 실시예에서, 플래시 컨트롤러(220)의 기능은 요구되지 않고, 플래시 메모리 어레이(215B)는 논리 데이터 저장 장치의 부분을 형성하지 않으나, 물리적 저장소로서 직접 사용된다. 이는 데이터 스트림의 일시적인 저장에 특히 적합하다.
사용되는 특정 구조와 관계없이, 제 2 장치가 대기중일 때, 제 1 저장 장치로부터 “헤드” 데이터를 기록하거나 판독함으로써, 디스크 가속(acceleration)이 성취될 수 있다. 도 2A와 도 2B에서 나타난 실시예에서, 플래시 메모리 어레이(215)는 마그네틱 하드 디스크(225)보다 명확히 짧은 대기 시간을 갖는다. 상기 마그네틱 하드 디스크(225)의 판독/기록 헤드가 적정 위치를 잡을 때까지 기다리는 대신에, 데이터 스트림의 처음 부분(“헤드 데이터”)이 플래시 메모리 시스 템(205)의 플래시 메모리 어레이(215)에 기록된다. 마그네틱 하드 디스크(225)는 하드 드라이브(210)의 마그네틱 하드 디스크(225)에 기록될 나머지 부분(“바디 데이터”)을 수락할 준비를 한다. 상기 헤드 데이터와 바디 데이터는 함께 단일 데이터 프래그먼트(data fragment)를 형성한다. 데이터 프래그먼트는 제 2 저장 장치로 하여금 사소하지 않은 액세스 시간을 소비하게 하는 데이터의 버스트(burst)로서 형성될 수 있다. 마그네틱 하드 디스크(225)의 경우에 있어서, 바로 앞의 데이터와 연속적이지 않는 일련의 데이터(sequential data)로서, 데이터 프래그먼트는 형성될 수 있으며, 이에 따라 하드 드라이브(210)가 탐색 시간, 또는 대기 시간을 보낸다.
개선된 대용량 저장 장치(150)가 사용되는 방법에 따라서, 필요한 기준치이도록, 또는 표준 크기이도록 헤드 데이터의 크기가 연산될 수 있다. 표준 크기는 다수의 요인들을 기반으로 할 수 있다. 예를 들면, 하드 드라이브(210)의 평균 탐색 시간과, 플래시 메모리 어레이(215)의 크기와, 명백하게 확장된 유효 프로그래밍 시간이 가비지 수집 동작을 야기시키기 전에 기록될 수 있는 논리적으로 연속인 섹터의 개수 중 하나 이상이 이에 해당한다.
도 3A는 하드 드라이브 주소 공간(315)과 플래시 주소 공간(320)에서 헤드 데이터(305)와 바디 데이터(310)를 추상적으로 나타낸 도면이다. 저장 컨트롤러(245A, 또는 245B)에 의해, 헤드 매핑 테이블(head mapping table)(315)이 사용되어, 헤드 데이터(305)와 바디 데이터(310)의 저장을 조정할 수 있다. 플래시 주소 공간(320)이 충분히 클 경우, 헤드 데이터(305)가 플래시 메모리 어레이(215) 안네 영구적으로 위치할 수 있다. 그러나 플래시 공간이 제한되어 있을 경우, 새로운 헤드 데이터를 위한 공간을 형성하기 위해, 헤드 데이터(305)가 플래시 메모리 어레이(215)로부터 제거될 수 있는 수단이 구현될 필요성이 있다.
이러한 수단은, 헤드 데이터(305)를 위한 디스크 주소 공간에서 예약 공간(330)을 포함할 수 있다. 플래시 메모리 어레이(215)에서 공간이 필요하기 때문에, 마그네틱 하드 디스크(225) 상에서 연속적인 전체 데이터 프래그먼트를 형성하면서, 헤드 데이터(305)는 상기 예약된 공간(330)으로 복사될 수 있다. 개선된 대용량 저장 장치(150A, 또는 150B)가 사용되지 않을 때, 헤드 데이터(305)의 복사가 배경 작업으로서 이뤄질 수 있는 것이 바람직하다. 이러한 섹터 재-배치의 주파수가, 디스크 장치와 플래시 메모리 장치에서의 메모리 용량의 비에 따라 좌우되고, 개선된 대용량 저장 장치(150)에 기록되는 개별 연속 섹터 시퀀스의 수에 따라 좌우되는 것이 바람직하다.
이와 유사하게, 도 3B는 개선된 대용량 저장 장치 전체를 위한 주소 공간(350)에 관련하여, 디스크 주소 공간(315)과 플래시 주소 공간(320)을 추상적으로 나타낸 도면이다. 디스크 주소 공간(315)에서 헤드 데이터를 위한 공간이 예약되기 때문에, 개선된 대용량 저장 장치를 위한 주소 공간(350)이 디스크 주소 공간(315)과 동일하다.
개선된 대용량 저장 장치를 사용하는 것으로부터의 시스템 성능 개선을 도 4A와 도 4B의 차이로서 이해할 수 있다. 도 4A는 대용량 저장 시스템이 기록 커맨드(405)를 수신할 때 발생하는, 종래의 기록 프로세싱을 나타낸 시간 추이 다이어 그램이다. 이때, 상기 대용량 저장 시스템은 본 발명에 의해 제공되는 디스크 가속을 사용하지 않는다. 통상적으로, 하드 드라이브(210)에 대한 판독/기록 헤드가 위치로 이동하기 시작하는 것(415)과 거의 동시에, 데이터(410)가 디스크 캐시로 전송되기 시작한다. 판독/기록 헤드와 마그네틱 하드 디스크(225)가 위치를 잡으면, 데이터(420)가 마그네틱 하드 디스크(225)로 기록되기 시작할 수 있다. 통상적으로, 캐시로부터 마그네틱 하드 디스크(225)로 데이터(420)를 기록하는데 걸리는 시간은 데이터(410)를 캐시로 전송시키는 시간보다 더 길다.
도 4B는 본 발명의 하나의 실시예에 따르는 디스크 가속을 사용하는 대용량 저장 시스템이 기록 명령어(405)를 수신할 때 발생하는 기록 프로세싱을 도식한 시간 추이 다이어그램이다. 몇 가지 서로 다른 연산이 상기 기록 명령어(405)가 수신된 결과로서, 나타날 수 있다. 가령, 헤드 데이터(425, 430)의 플래시 메모리로의 전송이 초기화될 수 있다. 휘발성 버퍼 메모리는 하우스키핑 연산을 플래시처럼 요구하지 않는다. 그러므로 헤드 데이터(430)를 플래시 메모리 시스템(205)으로 저장하는 것에는, 헤드 데이터(425)를 버퍼로 전송하는 것과, 그 후 헤드 데이터(430)를 플래시 메모리 시스템(205)에서 생성하기 위하여 헤드 데이터(425)를 버퍼로부터 플래시 메모리 시스템(205)으로 전송하는 것이 포함된다. 헤드 데이터(425, 430)가 저장되는 동안, 하드 드라이브(210)는 데이터를 수신할 준비를 한다. 헤드 데이터를 위한 공간이 예약될 경우, 새로운 기록 명령어(435)가 하드 드라이브(210)로 제공된다. 새로운 기록 명령어(435)에 의해, 판독/기록 헤드가 데이터 프래그먼트의 주소를 지시하는 것이 아니라, 바디 데이터의 주소를 지시하며, 이는 헤드 데이터를 위해 할당된 공간에 의해 오프셋된 프래그먼트 주소이다. 새로운 기록 명령어(435)가 하드 드라이브(210)에 의해 수신된 후, 판독/기록 헤드와 하드 디스크가 적정하게 위치한다(440).
헤드 데이터(425)가 플래시 버퍼(425)로 완전히 전송되면, 그 후, 바디 데이터(445)가 개선된 대용량 저장 장치의 디스크 캐시에 저장되기 시작한다. 그러므로 호스트 시스템이 개선된 대용량 저장 장치(150)로 데이터를 전송할 수 있는 속도는, 디스크 가속을 사용하지 않는 시스템에서와 동일하다. 판독/기록 헤드와 하드 디스크가 정위치에 놓일 때, 바디 데이터가 유효하게 되자마자, 바디 데이터(450)는 마그네틱 하드 디스크에 기록되기 시작할 수 있다. 도 4B에서의 데이터 프래그먼트가 기록되는데 걸리는 총 시간은, 도 4A에서 요구되는 총 시간보다 명확하게 더 작다.
한편 시스템 성능의 향상은 플래시 메모리 어레이(215)의 용량과, 개선된 대용량 저장 장치(150)를 얼마나 자주 액세스하는지에 달려 있다. 플래시 메모리 어레이(215)의 용량이 증가함에 따라, 시스템 성능은 더욱 향상된다(도 5A 참조). 플래시 메모리 어레이(215)가 커짐에 따라, 다수의 데이터 프래그먼트를 버스트(burst)하는 동안, 더 많은 데이터가 저장될 수 있다.
이와 유사하게, 도 5B는 시스템 성능이 낮아짐에 따라, 개선된 대용량 저장 장치(150)가 더 유용해지는 것을 도식한다. 대용량 저장 장치(150)를 끊임없이 액세스할 경우, 헤드 데이터를 플래시 메모리 어레이(215)로부터 마그네틱 하드 디스크(225)로 전송할 시간이 충분치 않을 것이다. 결국, 대용량 저장 장치(150)는 자 신의 에러-핸들링 루틴(error-handling routine)에 따라서, 새로운 헤드 데이터를 수락하기 전에 오래된 헤드 데이터를 전송하거나, 또는 플래시 메모리 어레이(215)를 사용하기를 중단하고, 새로운 데이터 프래그먼트를 위해 하드 드라이브(210)를 배타적으로(exclusively) 사용한다. 후자의 에러 핸들링 루틴이 사용될 경우, 시스템 성능은 하드 드라이브(210)만 사용하는 시스템(도 5B)과 동일해질 것이다. 플래시 메모리 어레이(215)가 일시적으로 유효하지 못할 경우(가령, 상기 플래시 메모리 어레이(215)가 가비지 수집 프로세스를 수행하고 있을 경우), 이러한 에러 핸들링 루틴이 역시 사용될 수 있다. 호스트 데이터가 하드 드라이브(210)에 기록되는 동안, 가비지 수집 연산이 수행될 경우, 플래시 메모리 어레이(215)의 비활성 시간일 수 있는 가비지 수집과의 충돌(collision)이 감소할 수 있다.
도 6은 링 버퍼(600)의 형태로, 플래시 메모리 어레이(215B)에서 데이터의 스트림의 섹터의 저장을 구성하는 한 가지 방법을 도식한다. 데이터의 섹터를 기록하기 위한 현재 위치가 기록 포인터(605)에 의해 정의되며, 도 6에서 상기 기록 포인터(605)는 무한 순환기의 주소 공간을 거쳐 시계 방향으로 이동한다. 상기 주소 공간은 메타블록(가령 610, 615)에 의해 형성되며, 상기 메타블록은 지정 순서로, 또는 기록 포인터(605)가 전체 메타블록으로부터 새로운 소거되는 메타블록으로 이동할 때 동적으로 결정되는 순서로 연결되어 있다. 도 6에서 소거 포인터(625)는 이와 유사하게, 무한 순환기의 주소 공간을 거쳐 시계 방향으로 이동한다. 새로운 데이터 섹터의 저장을 위하여, 소거 포인터(625)에 의해 식별되는 메타블록은, 소거되는 메타블록의 작은 풀(pool)이 기록 포인터(605)의 앞쪽에 유지되는 것이 보 장되는 속도로 소거된다. 링 버퍼(600)에서, 소거되는 블록에는 가장 최근의 기록 데이터가 포함된다.
헤드 데이터는 순환 주소 공간 즉, 가장 높은 주소로부터 가장 낮은 주소로의 다음 스텝을 제공함으로써, 주소 이동이 계속하여 이뤄질 수 있는 주소 공간에 저장된다. 도 2A에서 도식된 개선된 대용량 저장 장치(150A)의 실시예에서, 플래시 메모리 시스템(205)의 논리 주소 공간의 부분 내에 있는 순환하는 버퍼에 의해, 순환적인 주소 공간이 제공된다. 도 2B에서 도식된 개선된 대용량 저장 장치(150B)의 실시예에서, 플래시 메모리 어레이(215B)의 물리적 주소 공간 내에 있는 링 버퍼(600)에 의해, 순환적인 주소 공간이 제공된다.
플래시 메모리 어레이(215)의 용량은, 플래시 메모리의 비용을 가능한 낮게 유지하도록, 개선된 대용량 저장 장치(150)를 위한 전체 주소 공간(350)에 관련된 모든 헤드 데이터를 저장하기 위해 필요한 용량보다 작은 것이 일반적이다. 즉, 헤드 데이터의 저장을 계속하도록 플래시 메모리 어레이(215)에서 공간을 확보하기 위하여, 헤드 데이터를 플래시 메모리 어레이(215)로부터 마그네틱 하드 디스크(225) 상의 적정하게 예약된 공간으로 복사하기 위한 요구분이 존재한다. 이를 수행하기 위한 수단에 의해, 개선된 대용량 저장 장치(150)에 의해 성취되는 시스템 성능 향상의 중요한 효과가 나타날 수 있다.
도 9는 헤드 데이터의 하드 드라이브(210)로의 복사를 관리하는 방법에 관련되어 있는, 링 버퍼(600) 내에 있는 섹터 저장 위치의 맵을 도식한다. 링 버퍼(600)는 마지막 물리 주소로부터 첫 번째 물리 주소로의 랩-어라운드(wrap- around)를 이용하는 순환 주소 공간을 갖는다. 링 버퍼(600)는 메타블록(960, 965, 970, 975, 980, 985, 990, 995)을 포함한다. 증가하는 기록 포인터(605)에 의해 결정된 위치에서 섹터 데이터가 상기 버퍼에 기록된다. 도 9는 마치 선형 주소 공간에서 이동하는 것처럼, 순환 주소 공간을 도식하며, 이때 기록 포인터(605)를 내포하는 메타블록(960)이 버퍼(910)의 가장 상부로서 할당된다. 순환 버퍼(600)의 상기 기록 포인터(605) 바로 앞에서, 상기 메타블록(995)이 버퍼(904)의 끝으로서 할당된다. 소거 포인터(625)가 소거하기 위한 다음 표적 블록을 결정하고, 또한 버퍼에서 헤드 데이터 엔트리의 끝 부분을 정의한다. 소거 포인터(625)와 버퍼(940)의 끝부분 사이의 메타볼록이 소거 상태(erased state)에 놓이게 된다.
유효 헤드 데이터가 소거 포인터(625)에 의해 식별되는 메타블록(990)으로부터 복사되어, 메타블록(990)의 소거가 허용될 수 있다. 헤드 데이터(305)가 링 버퍼(600)로 기록된 후 상기 데이터가 판독되지 않을 경우, 헤드 데이터(305)가 마그네틱 하드 디스크(225) 상의 대응하는 예약된 공간(330)으로 복사된다. 그러나 헤드 데이터(305)가 기록되어 링 버퍼(600)에 유지되어 있고, 판독될 경우, 상기 헤드 데이터(305)가 플래시 메모리로부터 다시 복사될 수 있다. 이에 따라 호스트 시스템에 의해 판독될 헤드 데이터가 링 버퍼(600)에서 여전히 유효하게 유지될 수 있다. 헤드 매핑 테이블(325)을 사용하여, 그리고 데이터 섹터 자체의 헤더에 포함되는 논리 주소 정보를 사용하여 유효 헤드 데이터가 식별될 수 있다. 유효 헤드 데이터가 메타블록(990)과 또 다른 메타블록 사이의 경계를 중복시킬 경우, 전체 헤드 데이터가 고스란히 복사된다.
그러나 일부 논리 주소를 위한 더 최근의 헤드 데이터가 링 버퍼(600)의 외부에 존재할 때, 헤드 데이터가 유효하지 않을 수 있다. 이러한 경우에 있어서, 메타블록(990)의 삭제 전에 헤드 데이터가 복사될 필요가 없다.
미리 복사 연산(copy-ahead operation)이 소거 포인터(625)에 의해 식별되는 메타블록을 제외한 메타블록 상에서 수행될 수 있다. 이에 따라, 하드 디스크(225)로의 복사 연산이 호스트가 요청하는 디스크 액세스에 의해 일시적으로 방해되는 동안에도 플래시 메모리 어레이(115)로의 복사 연산은 계속되도록 할 수 있다. 요청되는 다음 복사 연산의 위치를 식별하기 위해, 플래시 복사 포인터(915)와 디스크 복사 포인터(905)가 사용된다. 소거 포인터(625)와 복사 포인터(905, 915) 사이에 위치하는 유효 헤드 데이터는 자신들의 요청된 복사 연산이 수행되도록 한다. 링 버퍼(600)에 가능한 많은 유효 헤드 데이터를 저장하는 것이 바람직하기 때문에, 이러한 수행되는 미리 복사 연산의 영역 상에 한도가 설정되어진다. 디스크 복사 한도(920)와 플래시 복사 한도(930)는 디스크 복사 포인터(905)와 플래시 복사 포인터(915)가 소거 포인터(625)에 앞서서 이동될 수 있는 최대 영역을 형성한다.
메타블록 소거는 소거 포인터(625)에 의해 식별되는 메타블록으로 제한될 필요가 없다. 가령, 소거 포인터(625)에서 메타블록(990)이 추가적인 플래시 복사 연산을 요구할 경우, 소거 포인터(625)와 디스크 복사 포인터(905) 사이의 메타블록(980)이 어떠한 복사되지 않은 유효 데이터도 내포하지 않을 동안, 상기 메타블록(980)은 즉시 소거된다. 이러한 경우에 있어서, 메타블록이 링 버퍼를 형성하도록 링크되어 있는, 순서를 형성하는 블록 링크 테이블(block link table)은, 새롭 게 소거된 메타블록(980)이 소거 포인터(625) 밑으로 위치하도록 수정될 수 있다.
헤드 데이터의 복사는 언제든 가능한 배경 작업으로서 수행된다. 플래시 메모리 어레이(215)로의 복사는, 호스트에서 디스크로의 데이터 전송, 또는 디스크에서 호스트로의 데이터 전송과 동시에 수행될 수 있다. 또는, 메타블록이 완전하게 복사되는 경우, 어떠한 실질적인 데이터도 이동될 필요가 없다. 간편하게, 버퍼 내의 데이터이 재-배치되도록 상기 블록 링크 테이블이 수정될 수 있다. 호스트 인터페이스가 비활성일 때, 링 버퍼(600)와 하드 디스크 캐시 간의 빠른 디스크 복사가 수행될 수 있다. 호스트 활동이 시작될 경우, 디스크 복사가 안전하게 중단되고, 잠시 후에, 재개되거나 반복될 수 있다.
플래시 메모리 어레이(215)에 저장되는 관리 테이블은 헤드 매핑 테이블(325)과, 블록 링킹 테이블을 포함할 수 있다. 한 가지 실시예에서, 상기 헤드 매핑 테이블(325)은 플래시 메모리 어레이(215)에 저장되는 유효한 헤드 데이터 프래그먼트에 대해 각각 단 하나의 엔트리를 갖는다. 그 후, 엔트리들은, 전용 블록의 헤드 매핑 테이블 섹터의 한 세트로 불연속 논리 주소 순서에 저장되어, 지정된 논리 주소를 갖는 엔트리를 검색할 수 있다. 각각의 엔트리는 개선된 대용량 저장 장치 내의 논리 주소와, 링 버퍼 내의 물리 주소와, (고정된 헤드 크기가 사용되지 않을 경우) 헤드 데이터의 크기와, 헤드 데이터가 기록된 후, 판독되었음을 나타내는 판독 플래그와, 헤드 데이터가 하드 드라이브(210)로 복사되었음을 나타내는 복사 플래그에 대한 개별 필드들을 가질 수 있다. 블록 링킹 테이블은 링 버퍼(600)내의 링크되어 있는 각각 메타블록에 대하여 각각 하나의 엔트리를 가질 수 있다. 전용 블록의 링크 테이블 섹터의 하나의 세트에서 엔트리가 블록 링킹 순서로 저장된다. 새로운 링크 테이블 섹터가 추가될 수 있고, 그 순서가 수정될 수 있다. 각각의 섹터는 가득할 필요가 없으며, 새로운 엔트리가 추가될 수 있다. 마지막으로 기록된 링크 테이블 섹터는 전용 블록에서 모든 유효 링크 테이블 섹터의 위치를 정의하는 정보를 내포할 수 있다.
도 7은 본 발명의 바람직한 실시예에 따르는 바람직한 기록 기법을 도식한 흐름도이다. 단계(705)에서, 임의의 주소 X에서 데이터를 기록하기 위해, 명령어가 호스트 시스템 버스(155)로부터 수신된다. 단계(710)에서, 개선된 대용량 저장 장치(150)는 주소 X가 이전에 액세스된 주소와 연속되어, 현존하는 데이터 프래그먼트의 한 부분이 되는지, 또는 이전 주소와 연속되지 않고, 새로운 데이터 프래그먼트의 시작부분을 형성하는지를 판단한다. 상기 주소가 연속되는 경우, 현존하는 데이터 프래그먼트의 연속으로서, 데이터가 하드 드라이브(210)에 직접 기록된다[단계(715)]. 주소가 불연속일 경우, 새로운 데이터 프래그먼트를 위한 헤드 데이터로서, 데이터를 플래시 메모리 어레이(215)로 기록하기 위한 시도가 만들어진다.
헤드 데이터가 기록될 경우, 그 후, 시스템은 플래시 메모리 어레이(215)가 준비되었는지 여부를 판단한다[단계(720)]. 어떠한 이유에서든 플래시 메모리 어레이(215)가 유효하지 않을 경우, 시스템은 하드 드라이브(210)로 간단하게 기록할 수 있고[단계(715)], 이러한 프래그먼트에 대하여 가속이 이뤄지지 않는다. 플래시 메모리 어레이(215)가 유효할 경우, 다음의 3개의 연산이 동시에 모두 발생할 수 있다.
3개의 연산 중 첫 번째는 탐색 명령어를 하드 드라이브(210)로 전송하는 것이다[단계(725)]. 데이터가 플래시 메모리 어레이(215)로부터 하드 드라이브(210)로 전송될 경우, 상기 탐색 명령어는 헤드 데이터의 크기와 동치인 오프셋을 고려한다. 따라서 상기 하드 드라이브(210)는 판독/기록 헤드를 주소 X+H로 위치하게 하는 탐색 명령어를 수신하며, 이때 H는 헤드 데이터 오프셋의 크기이다. 헤드 데이터가 플래시 메모리 어레이(215)로 기록된다[단계(730)]. 링 버퍼가 사용될 경우, 그 후, 헤드 데이터가 기록 포인터에서 기록된다. 헤드 데이터가 플래시 메모리 어레이(215)에 배타적으로(exclusively) 저장됨을 나타내도록 블록 매핑 테이블이 업데이트된다[단계(735)]. 데이터를 적정하게 조정하기 위해, 저장 컨트롤러(245)는 마그네틱 하드 디스크(225)의 논리 주소와, 플래시 메모리 어레이(215)의 물리 주소에 관련된 정보를 갖고 있어야 한다. 덧붙이자면, 블록 매핑 테이블에 그 밖의 다른 정보가 또한 저장될 수 있다. 예를 들면, 헤드 크기가 가변적일 경우, 헤드의 크기가 저장될 것이다. 그 밖의 다른 플래그가 도 8을 참조하여 다음에서 서술된다.
헤드 데이터가 플래시 메모리 어레이(215)에 기록되고, 블록 매핑 테이블이 업데이트되는 동안, 하드 드라이브(210)가 마그네틱 하드 디스크(225)가 적정한 위치에 있도록 기다린다[단계(740)]. 정위치에 놓이면, 개선된 대용량 저장 장치(150)는 호스트 시스템 버스(155)로부터 바디 데이터를 수신한다고 가정하면서, 바디 데이터가 마그네틱 하드 디스크(225)에 기록되기 시작할 수 있다[단계(745)].
도 8은 본 발명의 바람직한 실시예에 따르는 바람직한 판독 기법의 흐름도이 다. 명령어가 호스트 시스템 버스(155)로부터 수신되어 임의의 주소 X에서 데이터가 판독될 수 있다. 저장 컨트롤러(245)가 주소 X에 대한 엔트리가 블록 매핑 테이블에 존재하는지의 여부를 판단한다[단계(810)]. 상기 주소가 블록 매핑 테이블에 존재하지 않을 경우, 시스템은 하드 드라이브(210)로부터 데이터를 판독한다[단계(815)]. 그 후, 시스템은 플래시 메모리 어레이(215)가 기록하기 위해 준비하는지를 판단한다[단계(820)]. 플래시 메모리 어레이(215)가 어떤 이유(가령 가비지 수집)로 인하여 유효하지 않을 경우, 디스크 가속을 사용하지 않는 시스템에서와 같이, 간단하게 프로세스가 종료될 수 있다. 그러나 플래시 메모리 어레이(215)가 유효할 경우, 데이터가 하드 드라이브(210)로부터 판독되는 동안, 헤드 데이터가 플래시 메모리 어레이(215)로 복사될 수 있다[단계(825)]. 그 후, 헤드 데이터가 현재 상기 플래시 메모리 어레이(215) 상에 있음을 나타내도록, 블록 매핑 테이블이 업데이트될 수 있다[단계(830)].
블록 매핑 테이블에 엔트리가 존재하면, 그 후, 판독 명령어가 수신된 후[단계(805)], 저장 컨트롤러(245)가 서로 다른 경로를 따를 것이다. 주소가 블록 매핑 테이블에 존재할 경우[단계(810)], 그 후 저장 컨트롤러(245)가 하드 드라이브(210)의 바디 데이터의 주소에 대하여, 탐색 명령어를 하드 드라이브(210)에 전송할 것이다. 본 발명에서, 바디 데이터의 주소는 헤드 데이터의 크기만큼 오프셋된 주소 X일 수 있다. 통상적으로, 저장 컨트롤러(245)가 플래시 메모리 어레이(215)가 준비하도록 기다린다. 한편 특정 실시예는 헤드의 복사본이 하드 드라이브(210)에 존재하는지 여부를 판단하고, 적정할 경우 상기 하드 드라이브(210)로부 터 데이터를 판독하는 부가적인 에러 핸들링 루틴을 가질 수 있다. 배타적인 판독 기법이 사용되는 특정 실시예에서, 헤드 데이터의 복사본이 하드 드라이브내에 항상 존재할 것이다. 플래시 메모리 어레이(215)가 유효해지면, 헤드 데이터가 플래시로부터 판독된다[단계(845)]. 테이블 엔트리에 대응하는 데이터가 판독되었음을 나타내도록 블록 매핑 테이블의 플래그가 설정될 수 있다[단계(850)]. 메타블록이 소거될 때, 링 버퍼 배열이 사용될 경우, 이러한 플래그에 의해, 엔트리가 버퍼의 상부에 복사됨으로써, 하드 드라이브보다는 링 버퍼에 유지될 수 있다.
헤드 데이터가 플래시 메모리 어레이(215) 밖으로 완전하게 판독된 후, 그 후 시스템은 마그네틱 하드 디스크(225)가 정위치에 있도록 할 필요가 있다[단계(855)]. 적정하게 위치하면, 바디 데이터가 마그네틱 하드 디스크(225)로부터 판독된다[단계(860)].
다른 개선된 저장 장치가 플래시, 또는 하드 드라이브 외의 다른 기법을 사용할 수 있으며, 배터리 지원 RAM, 광 디스크, OUM(Ovonics Unfield Memory), MRAM(Magnetic RAM), FeRAM(Ferroelectric RAM), SoI(Silicon on Insulator) 등을 포함할 수 있다.

Claims (24)

  1. 데이터 저장 시스템에 있어서, 상기 시스템은
    제 1 비-휘발성 저장 장치,
    상기 제 1 비-휘발성 저장 장치보다 더 느린 평균 액세스 시간과 더 높은 용량을 갖는 제 2 비-휘발성 저장 장치로서, 이때 더 느린 평균 액세스 시간은 상기 제 2 비-휘발성 저장 장치가 데이터를 기록하기 시작할 수 있기 전에, 필요한 평균 지연(delay)인, 상기 제 2 비-휘발성 저장 장치, 그리고
    데이터의 제 1 부분을 제 1 비-휘발성 저장 장치로 보내는 기능과, 데이터의 제 2 부분을 제 2 비-휘발성 저장 장치로 보내는 기능을 수행하는 저장 컨트롤러
    를 포함하는 것을 특징으로 하는 데이터 저장 시스템.
  2. 제 1 항에 있어서, 상기 저장 컨트롤러는 상기 제 2 비-휘발성 저장 장치가 데이터의 제 1 부분을 수용할 수 있는 공간을 예약하도록 지시하는 기능을 수행하는 것을 특징으로 하는 데이터 저장 시스템.
  3. 제 2 항에 있어서, 상기 저장 컨트롤러는 제 1 비-휘발성 저장 장치가 데이터의 제 1 부분을 상기 제 2 비-휘발성 저장 장치의 예약된 공간으로 전송하도록 지시하는 기능을 수행하는 것을 특징으로 하는 데이터 저장 시스템.
  4. 제 1 항에 있어서, 상기 저장 컨트롤러가 데이터의 제 2 부분을 상기 제 2 비-휘발성 저장 장치로 보낼 때, 상기 제 1 비-휘발성 저장 장치는 가비지 수집(garbage collection)을 수행하는 것을 특징으로 하는 데이터 저장 시스템.
  5. 삭제
  6. 제 1 항에 있어서, 데이터의 제 1 부분 전체가 제 1 비-휘발성 저장 장치로 보내지기 전에, 제 2 비-휘발성 저장 장치가 지연되는 것을 특징으로 하는 데이터 저장 시스템.
  7. 제 1 항에 있어서, 상기 제 1 비-휘발성 저장 장치는 데이터를 물리적 주소(physical address)의 링 버퍼 배열(ring buffer arrangement)에 저장하는 것을 특징으로 하는 데이터 저장 시스템.
  8. 제 1 항에 있어서, 상기 제 1 비-휘발성 저장 장치는 논리적 주소(logical address)의 순환적 버퍼 배열(cyclic buffer arrangement)에 데이터를 저장하는 것을 특징으로 하는 데이터 저장 시스템.
  9. 제 1 항에 있어서, 상기 저장 컨트롤러는 제 1 비-휘발성 저장 장치로부터 데이터의 제 1 부분을 불러들이고, 제 2 비-휘발성 저장 장치로부터 데이터의 제 2 부분을 불러들이는 기능을 추가로 수행함을 특징으로 하는 데이터 저장 시스템.
  10. 제 1 항에 있어서,
    상기 제 1 비-휘발성 저장 장치는 고체 상태 메모리(solid-state memory)이며,
    상기 제 2 비-휘발성 저장 장치는 마그네틱 하드 디스크임을 특징으로 하는 데이터 저장 시스템.
  11. 제 10 항에 있어서, 상기 고체-상태 메모리는 플래시 메모리 시스템임을 특징으로 하는 데이터 저장 시스템.
  12. 데이터 저장 시스템에 있어서, 상기 시스템은
    제 1 비-휘발성 저장 장치,
    상기 제 1 비-휘발성 저장 장치보다 더 느린 평균 액세스 시간과 더 높은 용량을 갖는 제 2 비-휘발성 저장 장치로서, 이때 더 느린 평균 액세스 시간은 상기 제 2 비-휘발성 저장 장치가 데이터를 기록하기 시작할 수 있기 전에 필요한 평균 지연(delay)인, 상기 제 2 비-휘발성 저장 장치,
    상기 제 1 비-휘발성 저장 장치로부터 데이터의 제 1 부분을 불러들이는 기능과 상기 제 2 비-휘발성 저장 장치로부터 데이터의 제 2 부분을 불러들이는 기능을 수행하는 저장 컨트롤러
    를 포함하는 것을 특징으로 하는 데이터 저장 시스템.
  13. 데이터 저장 시스템에 있어서, 상기 시스템은
    헤드 데이터(head data)를 저장하는 기능을 수행하는 제 1 저장 장치로서, 이때 상기 헤드 데이터는 연속적인 데이터 스트림에서의 데이터의 제 1 부분인 상기 제 1 저장 장치,
    상기 제 1 저장 장치보다 더 느린 평균 액세스 시간과 더 높은 용량을 갖는 제 2 저장 장치로서, 이때 상기 제 2 저장 장치는 바디 데이터(body data)를 저장하는 기능을 수행하며, 상기 바디 데이터는 연속적인 데이터 스트림에서의 데이터의 나머지 부분인 상기 제 2 저장 장치,
    헤드 데이터의 위치 및 바디 데이터의 위치에 관한 정보를 포함하도록 작동하는 헤드 테이블, 그리고,
    헤드 테이블을 이용함으로써 데이터 저장 요청에 부응하는 기능을 수행하는 저장 컨트롤러
    를 포함하는 것을 특징으로 하는 데이터 저장 시스템.
  14. 데이터를 저장하는 방법에 있어서, 상기 방법은
    데이터 주소에 기록하기 위해, 호스트 시스템 버스로부터 기록 명령어를 수신하는 단계,
    상기 호스트 시스템 버스로부터 데이터 프래그먼트(data fragment)를 수신하는 단계,
    데이터 프래그먼트의 제 1 부분을 제 1 저장 장치에 저장하는 단계,
    제 1 저장 장치의 데이터 프래그먼트의 제 1 부분의 저장이 완성되기 전에, 제 2 저장 장치가 데이터를 기록할 준비를 하는 단계,
    상기 제 2 저장 장치가 준비된 후, 상기 제 2 저장 장치에 데이터 프래그먼트의 나머지 부분을 저장하는 단계
    를 포함하는 것을 특징으로 하는 데이터를 저장하는 방법.
  15. 제 14 항에 있어서, 데이터의 제 1 부분과 상기 데이터의 나머지 부분의 위치에 관련된 정보를 내포하는 헤드 테이블(head table)을 업데이트하는 단계를 더 포함하는 것을 특징으로 하는 데이터를 저장하는 방법.
  16. 제 14 항에 있어서, 제 2 저장 장치가 데이터를 기록할 준비를 하는 단계는 탐색 명령어를 제 2 주소로 전송하는 단계를 포함하며, 상기 제 2 주소는 상기 데이터 프래그먼트의 제 1 부분을 저장할 수 있는 데이터 주소와 오프셋과 동일한 것을 특징으로 하는 데이터를 저장하는 방법.
  17. 제 16 항에 있어서, 제 1 저장 장치로부터 상기 제 2 저장 장치의 데이터 주소로, 데이터 프래그먼트의 제 1 부분을 복사하는 단계를 뒤이어서 더 포함하는 것을 특징으로 하는 데이터를 저장하는 방법.
  18. 제 17 항에 있어서, 호스트 시스템 버스가, 제 1 저장 장치, 또는 제 2 저장 장치에 내포된 데이터로의 액세스를 요청하지 않는 동안, 복사가 수행되는 것을 특징으로 하는 데이터를 저장하는 방법.
  19. 제 14 항에 있어서, 제 1 저장 장치가 유효하지 않을 경우, 전체 데이터 프래그먼트는 제 2 저장 장치에 배타적으로(exclusively) 저장되는 것을 특징으로 하는 데이터를 저장하는 방법.
  20. 데이터를 불러들이기 위한 방법에 있어서, 상기 방법은
    데이터 주소에서 데이터를 판독하기 위해, 호스트 시스템 버스로부터 판독 명령어를 수신하는 단계,
    데이터의 제 1 부분이 제 1 저장 장치 상에 위치하고 있는지 여부를 판단하는 단계,
    데이터의 제 1 부분이 상기 제 1 저장 장치 상에 위치하고 있을 경우,
    - 데이터의 제 1 부분을 제 1 저장 장치로부터 판독하는 단계,
    - 상기 제 1 저장 장치의 데이터 프래그먼트의 제 1 부분의 판독이 완료되기 전에, 제 2 저장 장치는 상기 데이터의 나머지 부분을 판독할 준비를 하는 단계,
    - 상기 제 2 저장 장치가 데이터의 나머지 부분을 판독할 준비를 한 후, 데이터의 나머지 부분을 제 2 저장 장치로부터 판독하는 단계
    상기 데이터의 제 1 부분이 상기 제 1 저장 장치 상에 위치하지 않을 경우,
    - 상기 데이터의 제 1 부분과 상기 데이터의 나머지 부분을 모두 상기 제 2 저장 장치로부터 판독하는 단계
    를 포함하는 것을 특징으로 하는 데이터를 불러들이기 위한 방법.
  21. 제 20 항에 있어서, 데이터의 제 1 부분이 상기 제 1 장치 상에 위치하지 않다고 판단되어진 경우, 상기 제 2 저장 장치로부터 상기 제 1 저장 장치로 데이터의 제 1 부분을 복사하는 단계를 더 포함하는 것을 특징으로 하는 데이터를 불러들이기 위한 방법.
  22. 제 20 항에 있어서, 데이터가 요청됐다는 것을 나타내는 플래그를 헤드 맵 테이블(head map table)에 설정하는 단계를 더 포함하는 것을 특징으로 하는 데이터를 불러들이기 위한 방법.
  23. 제 20 항에 있어서, 제 1 저장 장치가 유효하지 않을 경우, 데이터의 제 1 부분과 데이터의 나머지 부분 모두 제 2 저장 장치로부터 판독되어지는 것을 특징으로 하는 데이터를 복구시키기 위한 방법.
  24. 데이터를 저장하기 위한 컴퓨터 프로그램 코드를 포함하는 컴퓨터 판독 가능 기록 매체에 있어서, 상기 컴퓨터 판독 가능 기록 매체는
    데이터 주소에 기록하도록 호스트 시스템 버스로부터 기록 명령어를 수신하는 컴퓨터 프로그램 코드,
    데이터 프래그먼트를 상기 호스트 시스템 버스로부터 수신하기 위한 컴퓨터 프로그램 코드,
    제 1 저장 장치에 상기 데이터 프래그먼트의 제 1 부분을 저장하기 위한 컴퓨터 프로그램 코드,
    상기 제 1 저장 장치로의 데이터 프래그먼트의 제 1 부분의 저장이 완료되기 전에, 제 2 저장 장치가 데이터를 기록할 준비를 하도록 하는 컴퓨터 프로그램 코드, 그리고
    상기 제 2 저장 장치가 준비된 후, 제 2 저장 장치에 데이터 프래그먼트의 나머지 부분을 저장하기 위한 컴퓨터 프로그램 코드
    를 저장하는 것을 특징으로 하는 컴퓨터 판독 가능 기록 매체.
KR1020067016395A 2004-02-04 2005-01-05 대용량 저장 액셀러레이터 KR101200670B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/772,789 2004-02-04
US10/772,789 US7127549B2 (en) 2004-02-04 2004-02-04 Disk acceleration using first and second storage devices
PCT/US2005/000275 WO2005081097A2 (en) 2004-02-04 2005-01-05 Mass storage accelerator

Publications (2)

Publication Number Publication Date
KR20070001136A KR20070001136A (ko) 2007-01-03
KR101200670B1 true KR101200670B1 (ko) 2012-11-12

Family

ID=34808627

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020067016395A KR101200670B1 (ko) 2004-02-04 2005-01-05 대용량 저장 액셀러레이터

Country Status (7)

Country Link
US (2) US7127549B2 (ko)
EP (2) EP2241966A3 (ko)
JP (3) JP4777263B2 (ko)
KR (1) KR101200670B1 (ko)
CN (1) CN100570546C (ko)
TW (1) TWI360050B (ko)
WO (1) WO2005081097A2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10956061B2 (en) 2018-03-27 2021-03-23 SK Hynix Inc. Computing system and operating method thereof

Families Citing this family (148)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7108975B2 (en) * 2001-09-21 2006-09-19 Regents Of The University Of Michigan Atlastin
US8291149B2 (en) * 2003-07-07 2012-10-16 Hitachi Ulsi Systems Co., Ltd. Storage device and storage system having a hard disk drive and flash memory
US7644239B2 (en) 2004-05-03 2010-01-05 Microsoft Corporation Non-volatile memory cache performance improvement
US7472222B2 (en) * 2004-10-12 2008-12-30 Hitachi Global Storage Technologies Netherlands B.V. HDD having both DRAM and flash memory
US7490197B2 (en) 2004-10-21 2009-02-10 Microsoft Corporation Using external memory devices to improve system performance
US9104315B2 (en) 2005-02-04 2015-08-11 Sandisk Technologies Inc. Systems and methods for a mass data storage system having a file-based interface to a host and a non-file-based interface to secondary storage
SG126788A1 (en) * 2005-04-19 2006-11-29 Trek 2000 Int Ltd Interface for non-volatile memories
US7318118B2 (en) * 2005-07-14 2008-01-08 Hitachi Global Storage Technologies B.V. System and method for selective write to flash memory in HDD
KR101345033B1 (ko) * 2005-08-26 2013-12-30 톰슨 라이센싱 개선된 트릭 재생을 위한 트랜스코딩된 이미지
US8914557B2 (en) 2005-12-16 2014-12-16 Microsoft Corporation Optimizing write and wear performance for a memory
US7747837B2 (en) 2005-12-21 2010-06-29 Sandisk Corporation Method and system for accessing non-volatile storage devices
US7793068B2 (en) 2005-12-21 2010-09-07 Sandisk Corporation Dual mode access for non-volatile storage devices
US7769978B2 (en) 2005-12-21 2010-08-03 Sandisk Corporation Method and system for accessing non-volatile storage devices
KR100755702B1 (ko) * 2005-12-27 2007-09-05 삼성전자주식회사 비휘발성 메모리가 캐쉬로 사용되는 저장 장치 및 그 동작방법
US20070147115A1 (en) * 2005-12-28 2007-06-28 Fong-Long Lin Unified memory and controller
US7519754B2 (en) * 2005-12-28 2009-04-14 Silicon Storage Technology, Inc. Hard disk drive cache memory and playback device
JP2008033412A (ja) * 2006-07-26 2008-02-14 Hitachi Ltd 計算機システムの性能管理方法、管理計算機、及びストレージ装置
US20080072084A1 (en) * 2006-09-20 2008-03-20 Chao-Kuang Yang Method for Power Management
US8745315B2 (en) * 2006-11-06 2014-06-03 Rambus Inc. Memory Systems and methods supporting volatile and wear-leveled nonvolatile physical memory
US20080244105A1 (en) * 2007-03-27 2008-10-02 Rothman Michael A Enhancing performance of input-output (i/o) components
WO2008149453A1 (ja) * 2007-06-08 2008-12-11 Fujitsu Limited 記憶装置、記憶制御装置及び制御方法
US8032699B2 (en) * 2007-06-15 2011-10-04 Seagate Technology Llc System and method of monitoring data storage activity
US20090006720A1 (en) * 2007-06-27 2009-01-01 Shai Traister Scheduling phased garbage collection and house keeping operations in a flash memory system
US8504784B2 (en) * 2007-06-27 2013-08-06 Sandisk Technologies Inc. Scheduling methods of phased garbage collection and housekeeping operations in a flash memory system
US20090002863A1 (en) * 2007-06-29 2009-01-01 Seagate Technology, Llc System and method of monitoring data operations at a data storage device
US8122322B2 (en) 2007-07-31 2012-02-21 Seagate Technology Llc System and method of storing reliability data
JP5124217B2 (ja) * 2007-09-18 2013-01-23 株式会社日立製作所 ストレージ装置
US8959307B1 (en) 2007-11-16 2015-02-17 Bitmicro Networks, Inc. Reduced latency memory read transactions in storage devices
US8416657B2 (en) * 2007-12-03 2013-04-09 Mediatek Inc. Method and system for managing data from host to optical disc
US8631203B2 (en) 2007-12-10 2014-01-14 Microsoft Corporation Management of external memory functioning as virtual cache
US20090172048A1 (en) * 2007-12-31 2009-07-02 Intel Corporation Memory storage of file fragments
US8327095B2 (en) * 2008-06-06 2012-12-04 International Business Machines Corporation Maintaining information of a relationship of target volumes comprising logical copies of a source volume
US8843691B2 (en) * 2008-06-25 2014-09-23 Stec, Inc. Prioritized erasure of data blocks in a flash storage device
KR101459520B1 (ko) * 2008-07-16 2014-11-07 시게이트 테크놀로지 엘엘씨 기입 속도를 향상시킬 수 있는 데이터 저장 장치, 및 이를포함하는 데이터 저장 시스템
KR101521493B1 (ko) 2008-07-16 2015-05-19 시게이트 테크놀로지 엘엘씨 통신 속도를 조절할 수 있는 컨트롤러, 상기 컨트롤러를포함하는 데이터 저장 장치, 및 상기 데이터 저장 장치를포함하는 데이터 통신 시스템
US9032151B2 (en) 2008-09-15 2015-05-12 Microsoft Technology Licensing, Llc Method and system for ensuring reliability of cache data and metadata subsequent to a reboot
US8032707B2 (en) 2008-09-15 2011-10-04 Microsoft Corporation Managing cache data and metadata
US7953774B2 (en) 2008-09-19 2011-05-31 Microsoft Corporation Aggregation of write traffic to a data store
WO2010041093A1 (en) 2008-10-09 2010-04-15 Federico Tiziani Virtualized ecc nand
US8112580B2 (en) * 2009-01-19 2012-02-07 Hitachi Global Storage Technologies Netherlands B.V. Disk drive having multiple disk surfaces accessible by a read/write head and nonvolatile memory for continuous data transfer
US20100199036A1 (en) * 2009-02-02 2010-08-05 Atrato, Inc. Systems and methods for block-level management of tiered storage
JP2010211858A (ja) 2009-03-09 2010-09-24 Sony Corp 記録再生装置及び記録再生方法
US20100287217A1 (en) * 2009-04-08 2010-11-11 Google Inc. Host control of background garbage collection in a data storage device
US8595572B2 (en) * 2009-04-08 2013-11-26 Google Inc. Data storage device with metadata command
US20100262979A1 (en) * 2009-04-08 2010-10-14 Google Inc. Circular command queues for communication between a host and a data storage device
US8639871B2 (en) * 2009-04-08 2014-01-28 Google Inc. Partitioning a flash memory data storage device
US8555141B2 (en) * 2009-06-04 2013-10-08 Lsi Corporation Flash memory organization
US8200857B2 (en) * 2009-11-30 2012-06-12 Lsi Corporation Coalescing multiple contexts into a single data transfer in a media controller architecture
US8219776B2 (en) * 2009-09-23 2012-07-10 Lsi Corporation Logical-to-physical address translation for solid state disks
US20100306451A1 (en) * 2009-06-01 2010-12-02 Joshua Johnson Architecture for nand flash constraint enforcement
US8516264B2 (en) * 2009-10-09 2013-08-20 Lsi Corporation Interlocking plain text passwords to data encryption keys
US8166258B2 (en) * 2009-07-24 2012-04-24 Lsi Corporation Skip operations for solid state disks
US8245112B2 (en) * 2009-06-04 2012-08-14 Lsi Corporation Flash memory organization
US8321639B2 (en) * 2009-12-30 2012-11-27 Lsi Corporation Command tracking for direct access block storage devices
US8151137B2 (en) * 2009-05-28 2012-04-03 Lsi Corporation Systems and methods for governing the life cycle of a solid state drive
US8176367B2 (en) * 2009-05-28 2012-05-08 Agere Systems Inc. Systems and methods for managing end of life in a solid state drive
US20120102261A1 (en) * 2009-07-07 2012-04-26 Harley Burger Systems and Methods for Tiered Non-Volatile Storage
US9135190B1 (en) 2009-09-04 2015-09-15 Bitmicro Networks, Inc. Multi-profile memory controller for computing devices
US8665601B1 (en) 2009-09-04 2014-03-04 Bitmicro Networks, Inc. Solid state drive with improved enclosure assembly
US8447908B2 (en) 2009-09-07 2013-05-21 Bitmicro Networks, Inc. Multilevel memory bus system for solid-state mass storage
US8243536B2 (en) * 2009-09-08 2012-08-14 Lsi Corporation Systems and methods for increasing bit density in a memory cell
US8458416B2 (en) * 2009-09-08 2013-06-04 Lsi Corporation Systems and methods for selecting bit per cell density of a memory cell based on data typing
US20110060862A1 (en) * 2009-09-08 2011-03-10 Lsi Corporation Systems and Methods for Switchable Memory Configuration
US8381077B2 (en) * 2009-09-08 2013-02-19 Lsi Corporation Systems and methods for implementing error correction in relation to a flash memory
US8243546B2 (en) * 2009-09-08 2012-08-14 Lsi Corporation Systems and methods for peak power and/or EMI reduction
US8560765B2 (en) * 2009-09-08 2013-10-15 Lsi Corporation Systems and methods for variable level use of a multi-level flash memory
US8174912B2 (en) * 2009-09-08 2012-05-08 Lsi Corporation Systems and methods for circular buffering control in a memory device
US8499220B2 (en) * 2009-09-08 2013-07-30 Lsi Corporation Systems and methods for re-designating memory regions as error code corrected memory regions
US20110060865A1 (en) * 2009-09-08 2011-03-10 Lsi Corporation Systems and Methods for Flash Memory Utilization
US8560804B2 (en) * 2009-09-14 2013-10-15 Bitmicro Networks, Inc. Reducing erase cycles in an electronic storage device that uses at least one erase-limited memory device
US8775719B2 (en) * 2009-09-21 2014-07-08 Aplus Flash Technology, Inc. NAND-based hybrid NVM design that integrates NAND and NOR in 1-die with parallel interface
US8996785B2 (en) * 2009-09-21 2015-03-31 Aplus Flash Technology, Inc. NAND-based hybrid NVM design that integrates NAND and NOR in 1-die with serial interface
CN102103545B (zh) * 2009-12-16 2013-03-27 中兴通讯股份有限公司 一种数据缓存的方法、装置及系统
US8463984B2 (en) * 2009-12-31 2013-06-11 Seagate Technology Llc Dynamic data flow management in a multiple cache architecture
US8289768B2 (en) * 2010-01-22 2012-10-16 Lsi Corporation Systems and methods for extended life multi-bit memory cells
US8756387B2 (en) * 2010-03-05 2014-06-17 International Business Machines Corporation Method and apparatus for optimizing the performance of a storage system
US8725931B1 (en) 2010-03-26 2014-05-13 Western Digital Technologies, Inc. System and method for managing the execution of memory commands in a solid-state memory
US8504766B2 (en) 2010-04-15 2013-08-06 Netapp, Inc. Methods and apparatus for cut-through cache management for a mirrored virtual volume of a virtualized storage system
US8489940B2 (en) 2010-04-16 2013-07-16 Netapp, Inc. Methods and apparatus for managing asynchronous dependent I/O for a virtual fibre channel target
US8782327B1 (en) 2010-05-11 2014-07-15 Western Digital Technologies, Inc. System and method for managing execution of internal commands and host commands in a solid-state memory
US9026716B2 (en) 2010-05-12 2015-05-05 Western Digital Technologies, Inc. System and method for managing garbage collection in solid-state memory
USRE49818E1 (en) * 2010-05-13 2024-01-30 Kioxia Corporation Information processing method in a multi-level hierarchical memory system
JP4988007B2 (ja) * 2010-05-13 2012-08-01 株式会社東芝 情報処理装置およびドライバ
JP4988008B2 (ja) * 2010-05-13 2012-08-01 株式会社東芝 情報処理装置およびドライバ
US9213628B2 (en) * 2010-07-14 2015-12-15 Nimble Storage, Inc. Methods and systems for reducing churn in flash-based cache
JP4886887B2 (ja) * 2010-07-23 2012-02-29 株式会社東芝 コマンド管理装置及び同コマンド管理装置を備えた記憶装置
US8261003B2 (en) 2010-08-11 2012-09-04 Lsi Corporation Apparatus and methods for managing expanded capacity of virtual volumes in a storage system
US8255634B2 (en) * 2010-08-11 2012-08-28 Lsi Corporation Apparatus and methods for look-ahead virtual volume meta-data processing in a storage controller
US8176218B2 (en) 2010-08-11 2012-05-08 Lsi Corporation Apparatus and methods for real-time routing of received commands in a split-path architecture storage controller
US8635412B1 (en) 2010-09-09 2014-01-21 Western Digital Technologies, Inc. Inter-processor communication
US9021192B1 (en) 2010-09-21 2015-04-28 Western Digital Technologies, Inc. System and method for enhancing processing of memory access requests
US9164886B1 (en) 2010-09-21 2015-10-20 Western Digital Technologies, Inc. System and method for multistage processing in a memory storage subsystem
US8825976B1 (en) 2010-09-28 2014-09-02 Western Digital Technologies, Inc. Hybrid drive executing biased migration policy during host boot to migrate data to a non-volatile semiconductor memory
US8560759B1 (en) * 2010-10-25 2013-10-15 Western Digital Technologies, Inc. Hybrid drive storing redundant copies of data on disk and in non-volatile semiconductor memory based on read frequency
US20120275046A1 (en) * 2011-04-27 2012-11-01 Toshiba America Information Systems, Inc. Splitting a data stream between two storage media in a hybrid disk drive
US9158670B1 (en) 2011-06-30 2015-10-13 Western Digital Technologies, Inc. System and method for dynamically adjusting garbage collection policies in solid-state memory
US9195530B1 (en) 2011-09-06 2015-11-24 Western Digital Technologies, Inc. Systems and methods for improved data management in data storage systems
US8700834B2 (en) 2011-09-06 2014-04-15 Western Digital Technologies, Inc. Systems and methods for an enhanced controller architecture in data storage systems
US8713357B1 (en) 2011-09-06 2014-04-29 Western Digital Technologies, Inc. Systems and methods for detailed error reporting in data storage systems
US8707104B1 (en) 2011-09-06 2014-04-22 Western Digital Technologies, Inc. Systems and methods for error injection in data storage systems
US9372755B1 (en) 2011-10-05 2016-06-21 Bitmicro Networks, Inc. Adaptive power cycle sequences for data recovery
KR101342658B1 (ko) 2011-12-06 2013-12-16 주식회사 디에이아이오 비휘발성 메모리 시스템 및 그 구성 방법
KR20130064521A (ko) * 2011-12-08 2013-06-18 삼성전자주식회사 데이터 저장 장치 및 그것의 데이터 관리 방법
US9128949B2 (en) 2012-01-18 2015-09-08 Cloudera, Inc. Memory allocation buffer for reduction of heap fragmentation
US9053008B1 (en) 2012-03-26 2015-06-09 Western Digital Technologies, Inc. Systems and methods for providing inline parameter service in data storage devices
US9009392B2 (en) 2012-04-25 2015-04-14 International Business Machines Corporation Leveraging a hybrid infrastructure for dynamic memory allocation and persistent file storage
US9043669B1 (en) 2012-05-18 2015-05-26 Bitmicro Networks, Inc. Distributed ECC engine for storage media
CN103870208B (zh) * 2012-12-17 2017-08-25 联想(北京)有限公司 信息处理的方法及电子设备
US10073851B2 (en) 2013-01-08 2018-09-11 Apple Inc. Fast new file creation cache
US9423457B2 (en) 2013-03-14 2016-08-23 Bitmicro Networks, Inc. Self-test solution for delay locked loops
US9916213B1 (en) 2013-03-15 2018-03-13 Bitmicro Networks, Inc. Bus arbitration with routing and failover mechanism
US9672178B1 (en) 2013-03-15 2017-06-06 Bitmicro Networks, Inc. Bit-mapped DMA transfer with dependency table configured to monitor status so that a processor is not rendered as a bottleneck in a system
US9430386B2 (en) 2013-03-15 2016-08-30 Bitmicro Networks, Inc. Multi-leveled cache management in a hybrid storage system
US9875205B1 (en) 2013-03-15 2018-01-23 Bitmicro Networks, Inc. Network of memory systems
US9720603B1 (en) 2013-03-15 2017-08-01 Bitmicro Networks, Inc. IOC to IOC distributed caching architecture
US9798688B1 (en) 2013-03-15 2017-10-24 Bitmicro Networks, Inc. Bus arbitration with routing and failover mechanism
US9400617B2 (en) 2013-03-15 2016-07-26 Bitmicro Networks, Inc. Hardware-assisted DMA transfer with dependency table configured to permit-in parallel-data drain from cache without processor intervention when filled or drained
US9501436B1 (en) 2013-03-15 2016-11-22 Bitmicro Networks, Inc. Multi-level message passing descriptor
US9842024B1 (en) 2013-03-15 2017-12-12 Bitmicro Networks, Inc. Flash electronic disk with RAID controller
US9934045B1 (en) 2013-03-15 2018-04-03 Bitmicro Networks, Inc. Embedded system boot from a storage device
US10489318B1 (en) 2013-03-15 2019-11-26 Bitmicro Networks, Inc. Scatter-gather approach for parallel data transfer in a mass storage system
US9734067B1 (en) 2013-03-15 2017-08-15 Bitmicro Networks, Inc. Write buffering
US9858084B2 (en) 2013-03-15 2018-01-02 Bitmicro Networks, Inc. Copying of power-on reset sequencer descriptor from nonvolatile memory to random access memory
US9971524B1 (en) 2013-03-15 2018-05-15 Bitmicro Networks, Inc. Scatter-gather approach for parallel data transfer in a mass storage system
US9164828B2 (en) 2013-09-26 2015-10-20 Seagate Technology Llc Systems and methods for enhanced data recovery in a solid state memory system
US9424179B2 (en) 2013-10-17 2016-08-23 Seagate Technology Llc Systems and methods for latency based data recycling in a solid state memory system
US9201729B2 (en) 2013-10-21 2015-12-01 Seagate Technology, Llc Systems and methods for soft data utilization in a solid state memory system
US9378840B2 (en) 2013-10-28 2016-06-28 Seagate Technology Llc Systems and methods for sub-zero threshold characterization in a memory cell
US9323467B2 (en) 2013-10-29 2016-04-26 Western Digital Technologies, Inc. Data storage device startup
US9276609B2 (en) 2013-11-16 2016-03-01 Seagate Technology Llc Systems and methods for soft decision generation in a solid state memory system
US9576683B2 (en) 2014-02-06 2017-02-21 Seagate Technology Llc Systems and methods for hard error reduction in a solid state memory device
US9378810B2 (en) 2014-02-11 2016-06-28 Seagate Technology Llc Systems and methods for last written page handling in a memory device
US10055150B1 (en) 2014-04-17 2018-08-21 Bitmicro Networks, Inc. Writing volatile scattered memory metadata to flash device
US10025736B1 (en) 2014-04-17 2018-07-17 Bitmicro Networks, Inc. Exchange message protocol message transmission between two devices
US10042792B1 (en) 2014-04-17 2018-08-07 Bitmicro Networks, Inc. Method for transferring and receiving frames across PCI express bus for SSD device
US9952991B1 (en) 2014-04-17 2018-04-24 Bitmicro Networks, Inc. Systematic method on queuing of descriptors for multiple flash intelligent DMA engine operation
US9811461B1 (en) 2014-04-17 2017-11-07 Bitmicro Networks, Inc. Data storage system
US10078604B1 (en) 2014-04-17 2018-09-18 Bitmicro Networks, Inc. Interrupt coalescing
US9672107B1 (en) * 2015-02-11 2017-06-06 Western Digital Technologies, Inc. Data protection for a data storage device
US9942324B2 (en) * 2015-08-05 2018-04-10 Futurewei Technologies, Inc. Rebalancing and elastic storage scheme with elastic named distributed circular buffers
CN106469119B (zh) * 2015-08-10 2020-07-07 北京忆恒创源科技有限公司 一种基于nvdimm的数据写缓存方法及其装置
TWI588824B (zh) * 2015-12-11 2017-06-21 捷鼎國際股份有限公司 加快在不連續頁面寫入資料之電腦系統及其方法
US9886209B2 (en) * 2016-02-16 2018-02-06 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Controlling file placement on a disk drive to improve file access
US10942844B2 (en) 2016-06-10 2021-03-09 Apple Inc. Reserved memory in memory management system
DE102016211386A1 (de) * 2016-06-14 2017-12-14 Robert Bosch Gmbh Verfahren zum Betreiben einer Recheneinheit
US10459658B2 (en) * 2016-06-23 2019-10-29 Seagate Technology Llc Hybrid data storage device with embedded command queuing
US10552050B1 (en) 2017-04-07 2020-02-04 Bitmicro Llc Multi-dimensional computer storage system
KR102655094B1 (ko) * 2018-11-16 2024-04-08 삼성전자주식회사 메모리를 공유하는 이종의 프로세서들을 포함하는 스토리지 장치 및 그것의 동작 방법

Family Cites Families (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US408357A (en) * 1889-08-06 William ruttan
US4896262A (en) 1984-02-24 1990-01-23 Kabushiki Kaisha Meidensha Emulation device for converting magnetic disc memory mode signal from computer into semiconductor memory access mode signal for semiconductor memory
GB2251324B (en) * 1990-12-31 1995-05-10 Intel Corp File structure for a non-volatile semiconductor memory
US5778418A (en) 1991-09-27 1998-07-07 Sandisk Corporation Mass computer storage system having both solid state and rotating disk types of memory
JPH0590669U (ja) * 1992-05-20 1993-12-10 ミツミ電機株式会社 再生装置
US5636355A (en) 1993-06-30 1997-06-03 Digital Equipment Corporation Disk cache management techniques using non-volatile storage
US5542066A (en) 1993-12-23 1996-07-30 International Business Machines Corporation Destaging modified data blocks from cache memory
JPH0883148A (ja) 1994-09-13 1996-03-26 Nec Corp 磁気ディスク装置
JPH08195022A (ja) * 1994-11-14 1996-07-30 Sega Enterp Ltd ディスク再生装置、カラオケシステム及びディスク再生方法
US5586291A (en) 1994-12-23 1996-12-17 Emc Corporation Disk controller with volatile and non-volatile cache memories
US5708846A (en) 1995-02-24 1998-01-13 Intel Corporation System for retrieving initial data sequence corresponding to next data sequence while locating next data sequence when branch point is reached during current data sequence
US6728851B1 (en) 1995-07-31 2004-04-27 Lexar Media, Inc. Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices
US5754888A (en) 1996-01-18 1998-05-19 The Board Of Governors For Higher Education, State Of Rhode Island And Providence Plantations System for destaging data during idle time by transferring to destage buffer, marking segment blank , reodering data in buffer, and transferring to beginning of segment
GB9613088D0 (en) 1996-06-21 1996-08-28 Memory Corp Plc Memory device
US5798968A (en) 1996-09-24 1998-08-25 Sandisk Corporation Plane decode/virtual sector architecture
US5890192A (en) 1996-11-05 1999-03-30 Sandisk Corporation Concurrent write of multiple chunks of data into multiple subarrays of flash EEPROM
US6424486B2 (en) * 1997-12-17 2002-07-23 Texas Instruments Incorporated Method and apparatus for positioning a read/write head of a hard disk drive
US6286056B1 (en) * 1998-06-26 2001-09-04 Seagate Technology Llc Data storage device with small computer system interface providing persistent reservations
US6408357B1 (en) 1999-01-15 2002-06-18 Western Digital Technologies, Inc. Disk drive having a cache portion for storing write data segments of a predetermined length
US6370614B1 (en) 1999-01-26 2002-04-09 Motive Power, Inc. I/O cache with user configurable preload
JP2000285590A (ja) * 1999-03-26 2000-10-13 Sony Corp ディスク装置
JP2001189912A (ja) * 1999-10-21 2001-07-10 Sanyo Electric Co Ltd デジタルtv放送記録再生装置
US7181608B2 (en) * 2000-02-03 2007-02-20 Realtime Data Llc Systems and methods for accelerated loading of operating systems and application programs
JP2002133835A (ja) * 2000-10-27 2002-05-10 Sharp Corp 記録装置
JP4523150B2 (ja) 2000-12-27 2010-08-11 レノボ シンガポール プライヴェート リミテッド データサーバシステム、コンピュータ装置、記憶媒体
US6763424B2 (en) 2001-01-19 2004-07-13 Sandisk Corporation Partial block data programming and reading operations in a non-volatile memory
US6631456B2 (en) 2001-03-06 2003-10-07 Lance Leighnor Hypercache RAM based disk emulation and method
GB0123412D0 (en) 2001-09-28 2001-11-21 Memquest Ltd Memory system sectors
JP3770138B2 (ja) * 2001-10-18 2006-04-26 ソニー株式会社 情報処理装置、情報処理装置の制御方法、情報処理装置の制御プログラム及び情報処理装置の制御プログラムを記録した記録媒体
JP2003123381A (ja) * 2001-10-11 2003-04-25 Sony Computer Entertainment Inc ディスク再生装置及び方法、メモリ制御プログラム、メモリ制御プログラムを記録した記録媒体
US6646948B1 (en) 2002-08-29 2003-11-11 Motorola, Inc. Data storage system utilizing a non-volatile IC based memory for reduction of data retrieval time
US7024614B1 (en) * 2002-12-24 2006-04-04 Western Digital Technologies, Inc. Disk drive employing a configuration data structure comprising a plurality of configuration parameters to facilitate disk commands
US20050125602A1 (en) * 2003-12-04 2005-06-09 Ehrlich Richard M. HDD with storage of critical data in FLASH
US20050125600A1 (en) * 2003-12-04 2005-06-09 Ehrlich Richard M. Method for storing HDD critical data in flash
US20050125603A1 (en) * 2003-12-04 2005-06-09 Ehrlich Richard M. Method for rapid availability of critical data through re-allocation

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10956061B2 (en) 2018-03-27 2021-03-23 SK Hynix Inc. Computing system and operating method thereof

Also Published As

Publication number Publication date
EP2241966A3 (en) 2010-11-17
JP4777263B2 (ja) 2011-09-21
CN101685382A (zh) 2010-03-31
CN1934529A (zh) 2007-03-21
KR20070001136A (ko) 2007-01-03
TW200604796A (en) 2006-02-01
JP2013218741A (ja) 2013-10-24
US7127549B2 (en) 2006-10-24
US20050172067A1 (en) 2005-08-04
WO2005081097A3 (en) 2005-11-24
JP2007522560A (ja) 2007-08-09
CN100570546C (zh) 2009-12-16
TWI360050B (en) 2012-03-11
EP2241966A2 (en) 2010-10-20
EP1716477A2 (en) 2006-11-02
JP2011192298A (ja) 2011-09-29
WO2005081097A2 (en) 2005-09-01
US20070028040A1 (en) 2007-02-01
US7310699B2 (en) 2007-12-18

Similar Documents

Publication Publication Date Title
KR101200670B1 (ko) 대용량 저장 액셀러레이터
US7302534B2 (en) Dual media storage device
US10126959B2 (en) Systems and methods for a mass data storage system having a file-based interface to a host and a non-file-based interface to secondary storage
US9507538B2 (en) File management system for devices containing solid-state media
US8489803B2 (en) Efficient use of flash memory in flash drives
US6751155B2 (en) Non-volatile memory control
KR100610647B1 (ko) 직접실행제어 기능과 스토리지 기능이 복합된 대용량저장장치
JP2013242908A (ja) ソリッドステートメモリ、それを含むコンピュータシステム及びその動作方法
KR20100011698A (ko) 데이터 머지를 수행하는 반도체 스토리지 시스템 및 그제어 방법
KR20070060301A (ko) 불휘발성 메모리를 쓰기 캐시로 구비한 하드 디스크드라이버
CN101685382B (zh) 使用第一及第二存储装置的磁盘加速

Legal Events

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

Payment date: 20151016

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20161019

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20171018

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee