KR20150050332A - 내부 디스크 드라이브 데이터 압축을 위한 시스템 및 방법 - Google Patents

내부 디스크 드라이브 데이터 압축을 위한 시스템 및 방법 Download PDF

Info

Publication number
KR20150050332A
KR20150050332A KR1020140114222A KR20140114222A KR20150050332A KR 20150050332 A KR20150050332 A KR 20150050332A KR 1020140114222 A KR1020140114222 A KR 1020140114222A KR 20140114222 A KR20140114222 A KR 20140114222A KR 20150050332 A KR20150050332 A KR 20150050332A
Authority
KR
South Korea
Prior art keywords
data
data set
storage medium
magnetic storage
solid state
Prior art date
Application number
KR1020140114222A
Other languages
English (en)
Inventor
샤오후아 양
이바드 아흐메드
Original Assignee
엘에스아이 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 엘에스아이 코포레이션 filed Critical 엘에스아이 코포레이션
Publication of KR20150050332A publication Critical patent/KR20150050332A/ko

Links

Images

Classifications

    • 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/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • 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/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/108Parity data distribution in semiconductor storages, e.g. in SSD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/1009Cache, i.e. caches used in RAID system with parity

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)

Abstract

본 발명은 데이터 저장 압축을 위한 시스템들 및 방법들에 관한 것이다.

Description

내부 디스크 드라이브 데이터 압축을 위한 시스템 및 방법{SYSTEMS AND METHODS FOR INTERNAL DISK DRIVE DATA COMPRESSION}
본 발명은 데이터 저장 압축을 위한 시스템 및 방법에 관한 것이다.
관련 출원들에 대한 상호 참조
본 출원은 Yang 등에 의해 2013년 10월 31일자로 출원된, "Systems and Methods for Internal Disk Drive Data Compression" 이라는 명칭의 미국 특허 출원 제 61/898,420 호에 대한 우선권을 주장한다(그것의 비-가출원임). 전술한 가특허 출원의 전체는 모든 목적을 위해 본 명세서에서 참조로 인용된다.
데이터가 자기 저장 매체로/로부터 전송되는 저장 시스템들을 포함하는 다양한 데이터 전송 시스템들이 개발되어 왔다. 이러한 데이터는 전송되어 저장 매체 상에 유지되어야 하는 데이터의 볼륨을 감소시키기 위해 호스트에서 압축될 수 있다. 그러한 호스트측 압축은 데이터 처리량을 감소시키는 병목 현상이 될 수 있다.
그러므로, 적어도 전술한 이유들로 인해, 본 기술 분야에서는 데이터 압축을 위한 진보된 시스템 및 방법에 대한 필요성이 존재한다.
본 발명은 데이터 저장 압축을 위한 시스템 및 방법에 관한 것이다.
본 발명의 다양한 실시예들은, 반도체 디바이스 및 자기 저장 매체를 포함하는 데이터 저장 시스템을 제공한다. 반도체 디바이스는 기록 데이터 세트를 포함하는 기록 코맨드를 호스트 디바이스로부터 수신하도록 동작가능한 호스트 인터페이스 회로; 기록 데이터 세트를 압축하여 압축된 데이터 세트를 산출하도록 동작가능한 압축 회로; 및 인코딩 알고리즘을 압축된 데이터 세트에 적용하여 인코딩된 데이터 세트를 산출하도록 동작가능한 기록 채널 회로를 포함한다. 자기 저장 매체는 인코딩된 데이터 세트에 대응하는 자기 신호를 저장하도록 동작가능하다.
이러한 요약은 본 발명의 일부 실시예들에 대한 일반적인 개요만을 제공한다. "일 실시예에서", "일 실시예에 따르면", "다양한 실시예들에서", "하나 이상의 실시예에서", "특정 실시예들에서" 등의 문구들은 일반적으로, 그러한 문구를 뒤따르는 특정한 특징, 구조 또는 특성이 본 발명의 적어도 하나의 실시예에 포함되고, 본 발명의 하나보다 많은 실시예에 포함될 수 있음을 의미한다. 중요하게, 그러한 문구들이 동일한 실시예를 지칭할 필요는 없다. 이하의 상세한 설명, 첨부된 청구항들 및 수반되는 도면들로부터 본 발명의 여러 가지 다른 실시예들이 보다 명백해질 것이다.
본 발명의 다양한 실시예들에 대한 추가적인 이해가, 본 명세서의 나머지 부분들에서 기술되는 도면들에 대한 참조에 의해 실현될 수 있다. 도면들에 있어서, 유사한 참조 번호들이 수 개의 도면들 전체를 통해 유사한 구성요소들을 지칭하도록 이용된다. 일부의 경우, 하위 케이스 문자로 구성되는 서브라벨은 다수의 유사한 구성요소들 중 하나를 표기하기 위해 참조 번호와 관련된다. 존재하는 서브라벨에 대한 사양없이 참조 번호에 대한 참조가 행해질 때, 그것은 모든 그러한 다수의 유사한 구성요소들을 지칭하는 것으로 의도된다.
도 1은 본 발명의 일부 실시예들에 따른, 스크래치 메모리에 의존하는 내부 데이터 압축/압축해제를 포함하는 데이터 저장 시스템을 도시한다.
도 2a 내지 2b는 이용가능한 경우 스크래치 메모리에 의존하고, 그리고 스크래치 메모리가 이용가능하지 않은 경우 자기 저장 매체에 의존하는 디스크 드라이브 데이터를 내부적으로 압축/압축해제하기 위한 본 발명의 하나 이상의 실시예에 따른 방법을 도시하는 흐름도이다.
도 3은 스크래치 메모리에 의존하는 디스크 드라이브 데이터를 내부적으로 압축/압축해제하기 위한 본 발명의 일부 실시예들에 따른 방법을 도시하는 흐름도이다.
도 4는 스크래치 메모리 및 자기 저장 매체 둘다에 의존하는 디스크 드라이브 데이터를 내부적으로 압축/압축해제하기 위한 본 발명의 일부 실시예들에 따른 방법을 도시하는 흐름도이다.
본 발명은 데이터 저장 압축을 위한 시스템 및 방법에 관한 것이다.
본 발명의 다양한 실시예들은, 반도체 디바이스 및 자기 저장 매체를 포함하는 데이터 저장 시스템을 제공한다. 반도체 디바이스는 기록 데이터 세트를 포함하는 기록 코맨드를 호스트 디바이스로부터 수신하도록 동작가능한 호스트 인터페이스 회로; 기록 데이터 세트를 압축하여 압축된 데이터 세트를 산출하도록 동작가능한 압축 회로; 및 인코딩 알고리즘을 압축된 데이터 세트에 적용하여 인코딩된 데이터 세트를 산출하도록 동작가능한 기록 채널 회로를 포함한다. 자기 저장 매체는 인코딩된 데이터 세트에 대응하는 자기 신호를 저장하도록 동작가능하다.
전술한 실시예들의 일부 경우들에 있어서, 시스템은 기록 데이터 세트를 저장하고, 기록 데이터 세트를 압축 회로에 전송하도록 동작가능한 고체 상태 메모리 디바이스를 더 포함한다. 일부 경우, 고체 상태 메모리 디바이스는 랜덤 액세스 메모리 디바이스이다. 다양한 경우들에 있어서, 시스템은 기록 데이터 세트가 고체 상태 메모리 디바이스에 저장되게 하고, 고체 상태 메모리 디바이스로부터 기록 데이터 세트를 액세스하고, 기록 데이터 세트를 압축 회로에 제공하도록 동작가능한 데이터 흐름 제어 회로를 더 포함한다. 일부의 그러한 경우들에 있어서, 데이터 흐름 제어 회로는, 기록 데이터 세트가 자기 저장 매체에 저장되게 하고, 자기 저장 매체가 미약한 이용(insubstantial usage)을 나타낼 때, 자기 저장 매체로부터 기록 데이터 세트를 액세스하도록 더 동작가능하다. 하나 이상의 경우들에 있어서, 인코딩된 데이터 세트는 압축된 인코딩된 데이터 세트이고, 기록 데이터 세트가 자기 저장 매체에 저장되게 하는 것은, 데이터 인코딩 알고리즘을 기록 데이터 세트에 적용하여 비압축된 인코딩된 데이터 세트를 산출하는 것과, 비압축된 인코딩된 데이터 세트를 자기 저장 매체에 저장하는 것을 포함한다. 특정한 경우들에 있어서, 자기 저장 매체가 미약한 이용을 나타낼 때, 자기 저장 매체로부터 기록 데이터 세트를 액세스하는 것은, 데이터 디코딩 알고리즘을 비압축된 인코딩된 데이터 세트에 적용하여 기록 데이터 세트를 산출하는 것을 포함한다.
본 발명의 다른 실시예들은 데이터를 하드 디스크 드라이브에 저장하기 위한 방법들을 제공한다. 방법들은, 자기 저장 매체를 제공하고, 고체 상태 메모리를 제공하고, 수신된 기록 데이터 세트를 수신하고, 수신된 기록 데이터 세트를 고체 상태 메모리에 저장된 기록 데이터 세트로서 저장하고, 고체 상태 메모리로부터 저장된 기록 데이터 세트를 액세스된 기록 데이터 세트로서 액세스하고, 압축 알고리즘을 액세스된 기록 데이터 세트에 적용하여 압축된 데이터 세트를 산출하고, 압축된 데이터 세트를 인코딩하여 인코딩된 데이터 세트를 산출하고, 인코딩된 데이터 세트를 자기 저장 매체에 저장하는 것을 포함한다. 일부 경우들에 있어서, 고체 상태 메모리 디바이스는 랜덤 액세스 메모리 디바이스이고, 자기 저장 매체는 하드 디스크 드라이브의 디스크 플래터(disk platter)이다.
전술한 실시예들의 다양한 경우들에 있어서, 방법들은 수신된 기록 데이터 세트를 자기 저장 매체에 저장하고, 수신된 기록 데이터 세트를 고체 상태 메모리에 저장된 기록 데이터 세트로서 저장하기 전에 자기 저장 매체로부터 기록 데이터 세트를 검색하는 것을 더 포함한다. 인코딩된 데이터 세트가 압축된 인코딩된 데이터 세트인 특정한 경우, 수신된 기록 데이터 세트를 자기 저장 매체에 저장하는 것은, 수신된 기록 데이터 세트를 인코딩하여 비압축된 인코딩된 데이터 세트를 ㅅ산출하는 것과, 비압축된 인코딩된 데이터 세트를 자기 저장 매체에 저장하는 것을 포함한다. 일부 경우들에 있어서, 자기 저장 매체가 미약한 이용을 나타낼 때, 자기 저장 매체로부터 기록 데이터 세트를 액세스하는 것은, 데이터 디코딩 알고리즘을 비압축된 인코딩된 데이터 세트에 적용하여 수신된 기록 데이터 세트를 복원하는 것을 포함한다.
본 발명의 다른 실시예들은 저장 디바이스들을 제공한다. 그러한 저장 디바이스들은 고체 상태 메모리 디바이스, 반도체 디바이스, 자기 저장 매체 및 판독/기록 헤드를 포함한다. 반도체 디바이스는 기록 데이터 세트를 포함하는 기록 코맨드를 호스트 디바이스로부터 수신하도록 동작가능한 호스트 인터페이스 회로, 기록 데이터 세트를 압축하여 압축된 데이터 세트를 산출하도록 동작가능한 압축 회로, 기록 데이터 세트가 고체 상태 메모리 디바이스에 저장되게 하고, 고체 상태 메모리 디바이스로부터 기록 데이터 세트를 액세스하고, 기록 데이터 세트를 압축 회로에 제공하도록 동작가능한 데이터 흐름 제어 회로, 및 인코딩 알고리즘을 압축된 데이터 세트에 적용하여 인코딩된 데이터 세트를 산출하도록 동작가능한 기록 채널 회로를 포함한다. 판독/기록 헤드는 자기 저장 매체와 관련하여 배치되고, 인코딩된 데이터 세트에 대응하는 신호로 저장 매체를 자화(magnetize)하도록 동작가능하다. 전술한 실시예들의 일부 경우들에 있어서, 인코딩된 데이터 세트는 압축된 인코딩된 데이터 세트이고, 데이터 흐름 제어 회로는, 데이터 인코딩 알고리즘을 기록 데이터 세트에 적용하여 비압축된 인코딩된 데이터 세트를 산출하고, 비압축된 인코딩된 데이터 세트를 자기 저장 매체에 저장하고, 자기 저장 매체로부터 비압축된 인코딩된 데이터 세트를 액세스하고, 데이터 디코딩 알고리즘을 비압축된 인코딩된 데이터 세트에 적용하여 기록 데이터 세트를 산출하도록 더 동작가능하다.
도 1을 참조하면, 본 발명의 일부 실시예들에 따른, 스크래치 메모리에 의존하는 내부 데이터 압축/압축해제를 포함하는 데이터 저장 시스템(100)이 도시된다. 데이터 저장 시스템(100)은 데이터 제어 회로(190), 스크래치 메모리(180), 자기 저장 매체(178) 및 관련된 제어 회로(디스크 플래터로서 도시됨)를 포함한다. 데이터 저장 시스템(100)은, 예를 들면, 호스트 인터페이스(120)를 통해 컴퓨터(101)를 이용하여 액세스가능하다. 컴퓨터(101)는 저장을 위한 데이터를 제공하고, 이전에 저장된 데이터를 요청할 수 있는, 본 기술 분야에 알려져 있는 임의의 디바이스일 수 있음을 주지해야 한다.
자기 저장 매체(178)와 관련된 제어 회로는 모터 제어기(168) 및 스핀들 모터(172)를 포함한다. 동작시에, 데이터 요청(판독 또는 기록)이 호스트 인터페이스(120)에 의해 수신된다. 호스트 인터페이스 회로(120)는 자기 저장 매체(178)로의/로부터의 데이터의 어드레싱 및 타이밍을 제어한다. 자기 저장 매체(178) 상의 데이터는 판독/기록 헤드 어셈블리(176)에 의해, 어셈블리가 디스크 플래터(178) 위에 적절하게 위치될 때에 검출될 수 있는 자기 신호들의 그룹들로 구성된다. 일 실시예에서, 디스크 플래터(178)는 길이 방향 또는 수직의 레코딩 방안에 따라 레코딩된 자기 신호들을 포함한다.
컴퓨터(101)로부터 수신된 판독 요청에 응답하여, 호스트 인터페이스(120)는 제어 신호를 하드 디스크 제어기(166)에, 그리고 제어 신호를 모터 제어기(168)에 제공한다. 하드 디스크 제어기(166)는 자기 저장 매체(178)와 관련하여 판독/기록 헤드 어셈블리(176)를 위치시킨다. 모터 제어기(168)는 스핀들 모터(172)를 구동하여, 자기 저장 매체를 결정된 스핀 레이트(RPM)에서 회전시킨다. 판독/기록 헤드 어셈블리(176)가 적절한 데이터 트랙에 인접하여 위치되면, 자기 저장 매체(178) 상의 데이터를 나타내는 자기 신호들이, 저장 매체(178)가 스핀들 모터(172)에 의해 회전됨에 따라, 판독/기록 헤드 어셈블리(176)에 의해 대응하는 위치들에서 감지된다. 감지된 자기 신호들은 자기 저장 매체(178) 상의 자기 데이터를 나타내는 연속적인, 극히 작은(minute) 아날로그 신호들로서 제공된다. 이러한 극히 작은 아날로그 신호들은 판독/기록 헤드 어셈블리(176)로부터 전치증폭기(170)를 통해 데이터 제어 회로(190)로 전송된다. 전치증폭기(170)는 자기 저장 매체(178)로부터 액세스된 극히 작은 아날로그 신호들을 증폭하도록 동작가능하다.
호스트 인터페이스 회로(120) 이외에, 데이터 제어 회로(190)는 데이터 흐름 제어 회로(182), 압축/압축해제 회로(122), 기록 채널 회로(130), 기록 드라이버(140) 및 판독 채널 회로(110)를 포함한다. 컴퓨터(101)로부터 호스트 인터페이스 회로(120)로의 판독 요청에 의해 트리거링된 판독 동작 동안, 자기 저장 매체(178)로부터 감지된 데이터는 전치증폭기(170)를 통해 판독 채널 회로(110)에 전달된다. 판독 채널 회로(110)는 수신된 데이터에 데이터 디코딩 알고리즘을 적용하여 압축된 데이터를 산출한다. 판독 채널 회로(110)는 본 기술 분야에 알려진 임의의 판독 채널 회로일 수 있다. 본 발명의 하나의 특정한 실시예에서, 판독 채널 회로는 데이터 검출기 회로 및 데이터 디코더 회로를 포함하고, 이들 각각은 중앙 메모리를 통해 통신가능하게 연결된다. 본 발명의 하나의 그러한 실시예에서, 데이터 검출기 회로는 전치증폭기(170)를 통해 수신된 데이터에 데이터 검출 알고리즘을 적용하여 검출된 출력을 산출하는 최대 귀납적(maximum a posteriori) 데이터 검출기 회로이다. 검출된 출력은 중앙 메모리에 저장된다. 데이터 디코더 회로는, 예를 들면, 저밀도 패리티 체크 디코더 회로일 수 있다. 데이터 디코더 회로는 검출된 출력에 데이터 디코딩 알고리즘을 적용하여 압축된 데이터 세트를 산출한다.
호스트 인터페이스 회로(120)는 데이터 제어 회로(190)의 다양한 회로를 통한 데이터의 흐름을 통제하는 코맨드를 데이터 흐름 제어 회로(182)에 제공한다. 특히, 데이터 흐름 제어 회로(182)는 스크래치 메모리(180)에서의 판독 채널 회로(110)로부터의 압축된 데이터의 저장을 지시한다. 본 발명의 일부 실시예들에서, 스크래치 메모리(180)는 고체 상태 메모리 디바이스이다. 하나의 특정한 경우, 스크래치 메모리(180)는 DDR SDRAM이다. 데이터 흐름 제어 회로(182)는 압축/압축해제 회로(122)로부터, 압축/압축해제 회로(122)의 이용가능성을 나타내는 신호를 기다린다. 압축/압축해제 회로(122)가 이용가능해질 때, 데이터 흐름 제어 회로(182)는 스크래치 메모리(180)에 이전에 저장된 압축된 데이터를 액세스하고, 그것을 압축/압축해제 회로(122)에 제공한다.
압축/압축해제 회로(122)는 본 기술 분야에 알려진 임의의 압축/압축해제 알고리즘을 적용할 수 있다. 압축/압축해제 회로(122)는 압축된 데이터에 압축해제 알고리즘을 적용하여 판독 데이터를 산출한다. 이러한 판독 데이터는 자기 저장 매체(178)에 기록될, 컴퓨터(101)로부터 원래 수신되었던 데이터이다. 데이터 흐름 제어 회로(182)는 압축/압축해제 회로(122)로부터의 판독 데이터를 스크래치 메모리(180)에 다시 저장하도록 지시하며, 스크래치 메모리(180)에서 판독 데이터는 호스트 인터페이스 회로(120)를 통한 컴퓨터(101)에 대한 전송을 기다린다. 특히, 호스트 인터페이스 회로(120)가 데이터 흐름 제어 회로(182)에게 이전에 저장된 판독 데이터를 전송하는데 이용가능한 대역폭이 있음을 시그널링할 때, 데이터 흐름 제어 회로(182)는 이전에 저장된 판독 데이터가 스크래치 메모리(180)로부터 액세스되고, 판독 데이터(103)로서 컴퓨터(101)에 제공되도록 한다.
컴퓨터(101)로부터 수신된 기록 요청에 응답하여, 호스트 인터페이스(120)는 제어 신호를 하드 디스크 제어기(166)에 제공하고, 제어 신호를 모터 제어기(168)에게 제공한다. 하드 디스크 제어기(166)는 자기 저장 매체(178)와 관련하여 판독/기록 헤드 어셈블리(176)를 위치시킨다. 모터 제어기(168)는 스핀들 모터(172)를 구동하여 자기 저장 매체를 결정된 스핀 레이트(RPM)로 회전시킨다. 판독/기록 헤드 어셈블리(176)가 적절한 데이터 트랙에 인접하여 위치되면, 자기 저장 매체(178) 상에 저장될 데이터를 나타내는 신호들이, 데이터를 자기 신호들로서 자기 저장 매체(178) 상에 기록하는 데이터 제어 회로(190)에 의해 판독/기록 헤드 어셈블리(176)에 제공된다.
컴퓨터(101)로부터 호스트 인터페이스 회로(120)로의 기록 요청에 의해 트리거링된 기록 동작 동안, 기록 데이터(101)가 컴퓨터(101)로부터 호스트 인터페이스 회로(120)로 제공된다. 데이터 흐름 제어 회로(182)는 수신된 기록 데이터를 스크래치 메모리(180)에 저장하도록 지시한다. 데이터 흐름 제어 회로(182)는 압축/압축해제 회로(122)의 이용가능성을 나타내는 신호를 압축/압축해제 회로(122)로부터 기다린다. 압축/압축해제 회로(122)가 이용가능할 때, 데이터 흐름 제어 회로(182)는 스크래치 메모리(180)에 이전에 저장된 기록 데이터에 액세스하고, 그것을 압축/압축해제 회로(122)에 제공한다.
압축/압축해제 회로(122)는 기록 데이터에 압축 알고리즘을 적용하여 압축된 데이터를 산출한다. 데이터 흐름 제어 회로(182)는 압축/압축해제 회로(122)로부터 스크래치 메모리(180)로 다시 압축된 데이터를 저장하도록 지시하고, 스크래치 메모리(180)에서 압축된 데이터는 기록 채널 회로(130)로의 전송을 기다린다. 데이터 흐름 제어 회로(182)는 기록 채널(즉, 기록 채널 회로(130), 기록 드라이버(140) 및 판독/기록 헤드(176)의 결합)의 이용가능성을 기다린다. 기록 채널이 이용가능해질 때, 데이터 흐름 제어 회로(182)는 스크래치 메모리(180)로부터의 압축된 데이터에 액세스하고, 액세스된 데이터를 기록 채널 회로(130)에 제공한다. 이러한 프로세스의 일부로서, 데이터 흐름 제어 회로(182)는 저장된 압축된 데이터가, 자기 저장 매체(178)의 자기 데이터 포맷 입도(magnetic data format granularity)에 따라, 고정된 포맷 크기로 리어셈블링되도록 한다.
그 다음, 기록 채널 회로(130)가 수신된 압축된 데이터에 데이터 인코딩 알고리즘을 적용하여 인코딩된 출력을 산출한다. 본 발명의 일부 실시예들에서, 인코딩 알고리즘은 저밀도 패리티 체크 인코딩 알고리즘이다. 결과적인 인코딩된 출력은 기록 드라이버(140)에 제공된 코드워드들로서 포맷팅된다. 기록 드라이버(140)는 판독/기록 헤드 어셈블리(176)에 대한 전송을 위해 수신된 코드워드를 포맷팅 또는 준비할 수 있는, 본 기술 분야에 알려져 있는 임이의 회로일 수 있다. 또한, 기록 드라이버(140)는 비압축된 데이터(즉, 원래의 호스트 데이터)의 논리적 블록 어드레스를, 인코딩된 압축된 데이터가 저장되는 자기 저장 매체(178) 상의 물리적 블록 어드레스에 연결하는 로그 엔트리(log entry)를 생성 및 유지한다. 이러한 연결 데이터는 하드 디스크 제어기(166)에 제공되고, 하드 디스크 제어기(166)에서, 요청하는 호스트에 의해 제공된 논리적 블록 어드레스에 기초하여 저장된 압축된 데이터에 대해 액세스하도록 지시하는데 이용된다. 이번에는, 판독/기록 헤드(176)는 자기 저장 매체(178)를 자화하여, 인코딩된 데이터를 나타낸다. 데이터 제어 회로(190)에 내부적인 (즉, 호스트 인터페이스 회로(120)와 기록 채널 회로(130) 사이에서) 압축을 수행함으로써, 컴퓨터(101) 사이에 병목현상이 발생되지 않고, 자기 저장 매체(178)에 저장된 코드워드들의 크기가 압축으로 인해 변하지 않음을 주지해야 한다.
일부 실시예들에서, 다수의 압축된 데이터 세트들이 자기 저장 매체(178)에 의해 수용된 크기들(예를 들면, 4KB)에 매칭되는 데이터 세트 크기들로 함께 재그룹화됨을 주지해야 한다. 일부 경우들에 있어서, 데이터는 단일 포맷 비트를 이용하여 압축가능하지 않은 것으로서 표시될 수 있다. 그러한 경우, 데이터는 압축되지 않거나 또는 압축해제된다. 데이터가 압축가능하지 않은 경우에도, 그것은 압축된 데이터에 적용된 재그룹화 프로세스로 인해 다수의 물리적 섹터들에 걸쳐서 분할될 수 있다. 단일 포맷 비트를 반대 방향으로 설정하는 것은, 데이터가 압축가능하며, 전술한 압축 및 압축해제를 겪을 것임을 나타낸다. 더욱이, 데이터 저장 시스템(100)은 특정 구현에 따라 도 2a-2b, 3, 4와 관련하여 후술되는 방법들 중 임의의 것과 일치하도록 동작될 수 있음을 주지해야 한다.
저장 시스템(100)은, 예를 들면, RAID(redundant array of inexpensive disks or redundant array of independent disks) 기반 저장 시스템과 같은 보다 큰 저장 시스템 내로 통합될 수 있음을 주지해야 한다. 그러한 RAID 저장 시스템은 다수의 디스크들을 논리적 유닛으로서 결합하는 중복성을 통해 안정성 및 신뢰성을 증가시킨다. 데이터는 다양한 알고리즘에 따라 RAID 저장 시스템에 포함된 다수의 디스크들을 통해 기록되고, 그것이 단일의 디스크인 것처럼 운영 체제에 의해 액세스될 수 있다. 예를 들어, 데이터는 RAID 저장 시스템에서의 다수의 디스크들에 미러링되거나, 또는 다수의 기법으로 다수의 디스크들에 걸쳐서 슬라이싱되어 분배될 수 있다. RAID 저장 시스템에서의 적은 수의 디스크들이 실패하거나 또는 이용불가능해진다면, 에러 정정 기법들을 이용하여, RAID 저장 시스템에서의 다른 디스크들로부터의 데이터의 나머지 부분들에 기초해서, 누락된 데이터를 재생성할 수 있다. RAID 저장 시스템에서의 디스크들은, 제한적인 것은 아니지만, 저장 시스템(100)과 같은 개별적인 저장 시스템들일 수 있으며, 서로 근접하여 위치되거나 또는 증가된 보안성을 위해 보다 널리 분포될 수 있다. 기록 동작시에, 기록 데이터가 제어기에 제공되고, 제어기는 예를 들면, 기록 데이터를 미러링하거나 또는 스트립핑함으로써, 디스크들을 통해 기록 데이터를 저장한다. 판독 동작시에, 제어기는 디스크들로부터 데이터를 검색한다. 그 다음, 제어기는 RAID 저장 시스템이 단일 디스크인 것처럼, 결과적인 판독 데이터를 산출한다.
판독 채널 회로(110)와 관련하여 이용된 데이터 디코더 회로는, 제한적인 것은 아니지만, 본 기술 분야에 알려져 있는 저밀도 패리티 체크(low density parity check; LDPC) 디코더 회로일 수 있다. 그러한 저밀도 패리티 체크 기술은 사실상 임의의 채널을 통한 정보의 송신 또는 사실상 임의의 매체 상에서의 정보의 저장에 적용가능하다. 송신 응용들은, 제한적인 것은 아니지만, 광 섬유, 무선 주파수 채널들, 유선 또는 무선 로컬 영역 네트워크들, 디지털 가입자 라인 기술들, 무선 셀룰라, 구리 또는 광 섬유와 같은 임의의 매체를 통한 이더넷, 케이블 텔레비젼과 같은 케이블 채널들, 및 인공위성 통신들을 포함한다. 저장 응용은, 제한적인 것은 아니지만, 하드 디스크 드라이브들, 컴택트 디스크들, 디지털 비디오 디스크들, 자기 테이프들, 및 DRAM, NAND 플래시, NOR 플래시, 다른 비휘발성 메모리들 및 고체 상태 드라이브들과 같은 메모리 디바이스들을 포함한다.
또한, 저장 시스템(100)은 추가적인 저장을 제공하기 위해 자기 저장 매체(178)와 병렬로 이용될 수 있는 추가적인 고체 상태 메모리들을 포함하도록 변형될 수 있음을 주지해야 한다. 그러한 경우, 고체 상태 메모리는 정보를 수신하여, 판독 채널 회로(110)에 직접 제공한다. 대안적으로, 고체 상태 메모리는 자기 저장 매체(178)에 의해 제공되는 것보다 빠른 액세스 시간을 제공하는 캐시로서 이용될 수 있다. 그러한 경우, 고체 상태 메모리는 인터페이스 제어기(120)와 판독 채널 회로(110) 사이에 배치되어, 요청된 데이터가 고체 상태 메모리에서 이용가능하지 않을 때, 또는 고체 상태 메모리가 새롭게 기록된 데이터 세트를 유지하기에 충분한 스토리지를 갖지 않을 때, 자기 저장 매체(178)에 대한 패스 스루(pass through)로서 동작한다.
도 2a-2b를 참조하면, 흐름도(200)는 스크래치 메모리가 이용가능할 때에는 스크래치 메모리에 의존하고, 스크래치 메모리가 이용가능하지 않을 때에는 자기 저장 매체에 의존하여, 디스크 드라이브 데이터를 내부적으로 압축/압축해제하기 위한 본 발명의 하나 이상의 실시예에 따른 방법을 도시한다. 흐름도(200)를 따라서, 호스트로부터 요청이 수신된다(블록 203). 호스트는 저장 매체로의/로부터의 데이터의 판독 및/또는 기록을 요청할 수 있는, 본 기술 분야에 알려져 있는 임의의 디바이스일 수 있다. 하나의 예로서, 호스트는 컴퓨터일 수 있다. 요청이 기록 요청인지의 여부가 결정된다(블록 205). 수신된 요청이 기록 요청인 것으로 결정되는 경우(블록 205), 기록 데이터 및 대응하는 논리적 기록 어드레스가 수신된다(블록 210).
스크래치 메모리 바이패스 및 처리가 수행된다(블록 212). 도 2b로 돌아가면, 블록(212)의 처리의 세부사항이 도시된다. 도 2b에 도시된 바와 같이, 스크래치 메모리가 이용가능한지의 여부가 결정된다(블록 224). 스크래치 메모리의 이용가능성은, 스크래치 메모리가 기록 데이터를 저장할 충분한 공간을 갖는지의 여부에 기초한다. 스크래치 메모리가 이용가능하지 않은 경우(블록 224), 수신된 기록 데이터는 자기 저장 매체 상의 스크래치 위치에 저장된다(블록 229). 자기 저장 매체가 오프라인인지(즉, 액세스가 없을 것으로 예상되는 상당한 시간 기간을 갖는지) 여부가 결정된다(블록 234). 자기 저장 매체가 오프라인이고, 또한 스크래치 메모리가 이용가능한 경우(블록 234), 기록 데이터가 자기 저장 매체 상의 스크래치 위치로부터 액세스되고, 스크래치 메모리에 저장된다(블록 239). 기록 데이터가 자기 저장 매체의 스크래치 위치에 기록되기 전에 인코딩된 경우, 저장 매체 상의 스크래치 위치로부터 기록 데이터를 액세스하는 처리는 이전에 인코딩된 데이터를 디코딩하여 원래의 기록 데이터를 산출하는 것을 포함한다.
일시적인 유지 영역으로서 자기 저장 매체 상의 스크래치 메모리 영역을 이용하는 이러한 방안은 저속 압축 알고리즘이 구현될 수 있도록 한다. 기록할 몇 개의 섹터가 있는 경우, 데이터는 압축이 완료될 때까지 스크래치 메모리 디바이스에서 유지될 수 있다. 반대로, 데이터 기록이 계속될 때, 느린 레이트 압축기는 데이터를 실시간으로 압축할 수 없을 것이며, 따라서 데이터 기록에서의 슬로우 다운(slow down)이 일시적으로 저장된 데이터의 압축을 허용할 때까지, 비압축된 데이터가 자기 저장 매체 상의 스크래치 메모리 영역에 일시적으로 저장된다. 매체는 스크래치 매체이거나, 또는 데이터가 통상적으로 저장되는 매체일 수 있다.
그 다음, 기록 데이터가 스크래치 메모리로부터 액세스되고, 압축 회로가 데이터 압축 알고리즘을 검색된 데이터에 적용하여 압축된 데이터를 산출하고, 압축된 데이터는 스크래치 메모리에 다시 기록된다(블록 244). 데이터 압축 알고리즘은 본 기술 분야에 알려진 임의의 압축 알고리즘일 수 있다.
인코딩 회로가 이용가능한지(즉, 비지(busy)가 아닌지) 여부가 결정된다(블록 249). 인코딩 회로가 비지가 아닌 경우(블록 249), 이전에 저장된 압축된 데이터가 스크래치 메모리로부터 액세스된다(블록 244). 액세스된 압축된 데이터는 데이터가 저장되는 저장 매체의 포맷 크기(예를 들면, 4KB)에 매칭되는 크기의 세그먼트들로 그룹화된다. 이 때, 그룹화를 반영하기 위해 논리적 어드레스의 물리적 어드레스로의 맵핑이 업데이트되며, 그룹화는 데이터가 저장되는 저장 매체 상의 물리적 어드레스에 영향을 미친다. 인코딩 알고리즘이 압축된 데이터에 적용되어 인코딩된 데이터를 산출하며, 인코딩된 데이터는 기록 어드레스에 대응하는 자기 저장 매체 상의 위치에 기록된다. 본 발명의 일부 실시예들에서, 데이터 인코딩 회로는 저밀도 패리티 체크 인코딩 회로이다. 그 다음, 처리는 도 2a의 블록(203)으로 리턴된다. 대안적으로, 스크래치 메모리가 이용가능한 경우(블록 224), 처리는 도 2b의 블록(215)으로 리턴된다.
도 2a를 다시 참조하면, 기록 데이터가 스크래치 메모리에 저장된다(블록 215). 논리적 기록 어드레스는 수신된 데이터가 액세스가능한 저장 매체 상의 물리적 어드레스로 결국에는 맵핑 또는 연결된다. 하드 디스크 제어기는 논리적 어드레스를 물리적 어드레스에 연결하는 테이블을 유지한다. 본 발명의 일부 실시예들에서, 스크래치 메모리는 고체 상태 메모리 디바이스이다. 하나의 특정한 경우, 스크래치 메모리는 DDR SDRAM이다.
그 다음, 압축 회로가 이용가능한지(즉, 비지가 아닌지) 여부가 결정된다(블록 220). 압축 회로가 이용가능한 경우(블록 220), 스크래치 메모리에 이전에 저장된 기록 데이터가 스크래치 메모리로부터 액세스되고(블록 225), 데이터 압축 알고리즘이 검색된 데이터에 적용되어 압축된 데이터를 산출한다(블록 230). 데이터 압축 알고리즘은 본 기술 분야에 알려진 임의의 압축 알고리즘일 수 있다. 결과적인 압축된 데이터는 스크래치 메모리에 다시 저장된다(블록 235).
인코딩 회로가 이용가능한지(즉, 비지가 아닌지) 여부가 결정된다(블록 240). 인코딩 회로가 비지가 아닌 경우(블록 240), 이전에 저장된 압축된 데이터가 스크래치 메모리로부터 액세스된다(블록 245). 액세스된 압축된 데이터는 데이터가 저장될 저장 매체의 포맷 크기(예를 들면, 4KB)에 매칭되는 크기의 세그먼트들로 그룹화된다. 이 때, 그룹화를 반영하기 위해 논리적 어드레스의 물리적 어드레스로의 맵핑이 업데이트되며, 그룹화는 데이터가 저장되는 저장 매체 상의 물리적 어드레스에 영향을 미친다. 인코딩 알고리즘이 압축된 데이터의 세그먼트에 적용되어 인코딩된 데이터 세트(들)을 산출한다(블록 250). 본 발명의 일부 실시예들에서, 데이터 인코딩 회로는 저밀도 패리티 체크 인코딩 회로이다. 그 다음, 인코딩된 데이터가 원래의 논리적 기록 어드레스에 대응하는 물리적 위치에서 자기 저장 매체에 기록된다(블록 255). 본 발명의 일부 실시예들에서, 자기 저장 매체는 하드 디스크 드라이브의 디스크 플래터이다.
대안적으로, 수신된 요청이 기록 요청이 아닌 것으로 결정되는 경우(블록 205), 수신된 요청이 판독 요청인지의 여부가 결정된다(블록 260). 수신된 요청이 판독 요청인 것으로 결정되는 경우(블록 260), 데이터가 판독되는 논리적 판독 어드레스가 수신된다(블록 265). 이러한 논리적 판독 어드레스는 요청된 데이터가 저장되었던 저장 매체 상의 위치에 대응하는 물리적 어드레스에 맵핑된다. 논리적 판독 어드레스로부터 물리적 어드레스로의 이러한 변환은, 데이터가 저장 매체에 저장되었을 때에 업데이트되었던, 논리적 어드레스를 물리적 어드레스에 연결하는 테이블을 이용하여 수행된다(예를 들면, 블록 245를 참조). 인코딩된 데이터가, 물리적 어드레스에 대응하는 자기 저장 매체 상의 위치로부터 액세스된다(블록 270). 그 다음, 인코딩된 데이터는 디코딩 회로에 의해 디코딩되어, 압축된 데이터를 산출한다(블록 280). 데이터 디코딩 회로는 저밀도 패리티 체크 디코딩 회로를 포함할 수 있다. 결과적인 압축된 데이터는 스크래치 메모리에 저장된다(블록 285).
그 다음, 압축해제 회로가 이용가능한지(즉, 비지가 아닌지) 여부가 결정된다(블록 290). 압축해제 회로가 이용가능한 경우(블록 290), 스크래치 메모리에 이전에 저장된 압축된 데이터가 스크래치 메모리로부터 액세스된다(블록 295). 이러한 프로세스는 블록(245)에서 수행된 그룹화 이전에 존재하였던 원래의 압축된 데이터를 리어셈블링하는 것을 포함한다. 데이터 압축해제 알고리즘이 검색된 데이터에 적용되어 판독 데이터를 산출한다(블록 201). 본질적으로, 데이터 압축해제 알고리즘은 데이터 압축 알고리즘에 의해 적용된 압축을 반대로 하며, 본 기술 분야에 알려진 임의의 압축해제 알고리즘일 수 있다. 결과적인 판독 데이터는 스크래치 메모리에 다시 저장된다(블록 206). 결국, 판독 데이터는 스크래치 메모리로부터 액세스되고, 요청하는 호스트에게 제공된다(블록 211).
가비지(garbage)(이동/제거 또는 삭제되는 섹터들)를 수집하고, 처리량의 이유로 디스크에 기록된 비압축된 데이터를 압축하기 위해, 조각 모으기(defragmentation) 및 가비지 수집이 규칙적으로 동작되어, 압축 및 비압축된 데이터를 판독하고, 여전히 유효한 데이터를 압축하고, 그들을 디스크 내에 재기록한다. 이러한 프로세스에서, LBA -> PBA 테이블이 업데이트/유지될 필요가 있다.
도 3을 참조하면, 흐름도(300)는 스크래치 메모리에 의존하는 디스크 드라이브 데이터를 내부적으로 압축/압축해제하기 위한 본 발명의 일부 실시예들에 따른 방법을 도시한다. 흐름도(300)를 따라, 요청이 호스트로부터 수신된다(블록 303). 호스트는 저장 매체로의/로부터의 데이터의 판독 및/또는 기록을 요청할 수 있는, 본 기술 분야에 알려진 임의의 디바이스일 수 있다. 하나의 예로서, 호스트는 컴퓨터일 수 있다. 요청이 기록 요청인지의 여부가 결정된다(블록 305). 수신된 요청이 기록 요청인 것으로 결정되는 경우(블록 305), 기록 데이터 및 대응하는 논리적 기록 어드레스가 수신되고(블록 310), 스크래치 메모리에 저장된다(블록 315). 논리적 기록 어드레스가 결국, 수신된 데이터가 액세스가능한 저장 매체 상의 물리적 어드레스로 맵핑 또는 연결된다. 하드 디스크 제어기는 논리적 어드레스를 물리적 어드레스에 연결하는 테이블을 유지한다. 본 발명의 일부 실시예들에서, 스크래치 메모리는 고체 상태 메모리 디바이스이다. 하나의 특정한 경우, 스크래치 메모리는 DDR SDRAM이다.
그 다음, 압축 회로가 이용가능한지(즉, 비지가 아닌지) 여부가 결정된다(블록 320). 압축 회로가 이용가능한 경우(블록 320), 스크래치 메모리에 이전에 저장된 기록 데이터가 스크래치 메모리로부터 액세스되고(블록 325), 데이터 압축 알고리즘이 검색된 데이터에 적용되어 압축된 데이터를 산출한다(블록 330). 데이터 압축 알고리즘은 본 기술 분야에 알려진 임의의 압축 알고리즘일 수 있다. 결과적인 압축된 데이터는 스크래치 메모리에 다시 저장된다(블록 335).
인코딩 회로가 이용가능한지(즉, 비지가 아닌지) 여부가 결정된다(블록 340). 인코딩 회로가 비지가 아닌 경우(블록 340), 이전에 저장된 압축된 데이터가 스크래치 메모리로부터 액세스된다(블록 345). 액세스된 압축된 데이터는 데이터가 저장될 저장 매체의 포맷 크기(예를 들면, 4KB)에 매칭되는 크기의 세그먼트들로 그룹화된다. 이 때, 그룹화를 반영하기 위해 논리적 어드레스의 물리적 어드레스로의 맵핑이 업데이트되며, 그룹화는 데이터가 저장되는 저장 매체 상의 물리적 어드레스에 영향을 미친다. 인코딩 알고리즘이 압축된 데이터의 세그먼트에 적용되어 인코딩된 데이터 세트(들)을 산출한다(블록 350). 본 발명의 일부 실시예들에서, 데이터 인코딩 회로는 저밀도 패리티 체크 인코딩 회로이다. 그 다음, 인코딩된 데이터가 원래의 논리적 기록 어드레스에 대응하는 물리적 위치에서 자기 저장 매체에 기록된다(블록 355). 본 발명의 일부 실시예들에서, 자기 저장 매체는 하드 디스크 드라이브의 디스크 플래터이다.
대안적으로, 수신된 요청이 기록 요청이 아닌 것으로 결정되는 경우(블록 305), 수신된 요청이 판독 요청인지의 여부가 결정된다(블록 360). 수신된 요청이 판독 요청인 것으로 결정되는 경우(블록 360), 데이터가 판독되는 논리적 판독 어드레스가 수신된다(블록 365). 이러한 논리적 판독 어드레스는 요청된 데이터가 저장되었던 저장 매체 상의 위치에 대응하는 물리적 어드레스에 맵핑된다. 논리적 판독 어드레스로부터 물리적 어드레스로의 이러한 변환은, 데이터가 저장 매체에 저장되었을 때에 업데이트되었던, 논리적 어드레스를 물리적 어드레스에 연결하는 테이블을 이용하여 수행된다(예를 들면, 블록 345를 참조). 인코딩된 데이터가, 물리적 어드레스에 대응하는 자기 저장 매체 상의 위치로부터 액세스된다(블록 370). 그 다음, 인코딩된 데이터는 디코딩 회로에 의해 디코딩되어, 압축된 데이터를 산출한다(블록 380). 데이터 디코딩 회로는 저밀도 패리티 체크 디코딩 회로를 포함할 수 있다. 결과적인 압축된 데이터는 스크래치 메모리에 저장된다(블록 385).
그 다음, 압축해제 회로가 이용가능한지(즉, 비지가 아닌지) 여부가 결정된다(블록 390). 압축해제 회로가 이용가능한 경우(블록 390), 스크래치 메모리에 이전에 저장된 압축된 데이터가 스크래치 메모리로부터 액세스된다(블록 395). 이러한 프로세스는 블록(345)에서 수행된 그룹화 이전에 존재하였던 원래의 압축된 데이터를 리어셈블링하는 것을 포함한다. 데이터 압축해제 알고리즘이 검색된 데이터에 적용되어 판독 데이터를 산출한다(블록 301). 본질적으로, 데이터 압축해제 알고리즘은 데이터 압축 알고리즘에 의해 적용된 압축을 반대로 하며, 본 기술 분야에 알려진 임의의 압축해제 알고리즘일 수 있다. 결과적인 판독 데이터는 스크래치 메모리에 다시 저장된다(블록 306). 결국, 판독 데이터는 스크래치 메모리로부터 액세스되고, 요청하는 호스트에게 제공된다(블록 311).
일부의 경우, 압축해제가 호스트 측에서 수행될 수 있다. 그러한 경우, 블록(306)은 판독 데이터를 호스트에게 직접 송신하는 프로세스에 의해 대체될 것이며, 블록(311)이 제거된다.
도 4를 참조하면, 흐름도(400)는 스크래치 메모리 및 자기 저장 매체 둘다에 의존하는 디스크 드라이브 데이터를 내부적으로 압축/압축해제하기 위한 본 발명의 일부 실시예들에 따른 방법을 도시한다. 흐름도(400)를 따라, 요청이 호스트로부터 수신된다(블록 403). 호스트는 저장 매체로의/로부터의 데이터의 판독 및/또는 기록을 요청할 수 있는, 본 기술 분야에 알려져 있는 임의의 디바이스일 수 있다. 하나의 예로서, 호스트는 컴퓨터일 수 있다. 요청이 기록 요청인지의 여부가 결정된다(블록 405). 수신된 요청이 기록 요청인 것으로 결정되는 경우(블록 205), 기록 데이터 및 대응하는 논리적 기록 어드레스가 수신되고, 스크래치 메모리에 저장된다(블록 410). 본 발명의 일부 실시예들에서, 스크래치 메모리는 고체 상태 메모리 디바이스이다. 하나의 특정한 경우, 스크래치 메모리는 DDR SDRAM이다.
이전에 저장된 기록 데이터가 스크래치 메모리로부터 액세스되고, 자기 저장 매체 상의 스크래치 위치에 저장된다(블록 415). 자기 저장 매체에 저장하는 이러한 프로세스는 비압축된 기록 데이터를 인코딩하고, 인코딩된 비압축된 기록 데이터를 자기 저장 매체에 기록하는 것을 포함할 수 있다. 본 발명의 일부 실시예들에서, 자기 저장 매체는 하드 디스크 드라이브의 디스크 플래터이다.
자기 저장 매체가 오프라인인지(즉, 액세스가 없을 것으로 예상되는 상당한 시간 기간을 갖는지) 여부가 결정된다(블록 420). 자기 저장 매체가 오프라인인 경우(블록 420), 기록 데이터가 자기 저장 매체 상의 스크래치 위치로부터 액세스되고, 스크래치 메모리에 저장된다(블록 425). 기록 데이터가 자기 저장 매체 상의 스크래치 위치에 대한 기록 이전에 인코딩된 경우, 저장 매체 상의 스크래치 위치로부터 기록 데이터를 액세스하는 프로세스는 이전에 인코딩된 데이터를 디코딩하여 원래의 기록 데이터를 산출하는 것을 포함한다.
그 다음, 기록 데이터가 스크래치 메모리로부터 액세스되고, 압축 회로가 데이터 압축 알고리즘을 검색된 데이터에 적용하여 압축된 데이터를 산출하며, 압축된 데이터는 스크래치 메모리에 다시 기록된다(블록 430). 데이터 압축 알고리즘은 본 기술 분야에 알려진 임의의 압축 알고리즘일 수 있다.
인코딩 회로가 이용가능한지(즉, 비지가 아닌지) 여부가 결정된다(블록 440). 인코딩 회로가 비지가 아닌 경우(블록 440), 이전에 저장된 압축된 데이터가 스크래치 메모리로부터 액세스된다(블록 445). 액세스된 압축된 데이터는 데이터가 저장될 저장 매체의 포맷 크기(예를 들면, 4KB)에 매칭되는 크기의 세그먼트들로 그룹화된다. 이 때, 그룹화를 반영하기 위해 논리적 어드레스의 물리적 어드레스로의 맵핑이 업데이트되며, 그룹화는 데이터가 저장되는 저장 매체 상의 물리적 어드레스에 영향을 미친다. 인코딩 알고리즘이 압축된 데이터의 세그먼트에 적용되어 인코딩된 데이터를 산출하고, 인코딩된 데이터는 기록 어드레스에 대응하는 자기 저장 매체 상의 위치에 기록된다. 본 발명의 일부 실시예들에서, 데이터 인코딩 회로는 저밀도 패리티 체크 인코딩 회로이다.
대안적으로, 수신된 요청이 기록 요청이 아닌 것으로 결정되는 경우(블록 405), 수신된 요청이 판독 요청인지의 여부가 결정된다(블록 460). 수신된 요청이 판독 요청인 것으로 결정되는 경우(블록 460), 데이터가 판독되는 논리적 어드레스가 수신되고(블록 465), 수신된 어드레스에 대응하는 인코딩된 데이터가 자기 저장 매체로부터 액세스되고, 인코딩된 데이터가 스크래치 메모리에 저장된다(블록 465). 이러한 논리적 판독 어드레스는 요청된 데이터가 저장되었던 저장 매체 상의 위치에 대응하는 물리적 어드레스에 맵핑된다. 논리적 판독 어드레스로부터 물리적 어드레스로의 이러한 변환은, 데이터가 저장 매체에 저장되었을 때에 업데이트되었던, 논리적 어드레스를 물리적 어드레스에 연결하는 테이블을 이용하여 수행된다(예를 들면, 블록 445를 참조). 인코딩된 데이터가, 물리적 어드레스에 대응하는 자기 저장 매체 상의 위치로부터 액세스되고, 액세스된 인코딩된 데이터가 스크래치 메모리에 저장된다.
디코딩 회로가 이용가능한지 여부가 결정된다(블록 470). 디코딩 회로가 이용가능한 경우(블록 470), 자기 저장 매체가 오프라인인지(즉, 액세스가 없을 것으로 예상되는 상당한 시간 기간을 갖는지), 또는 데이터 압축해제기 회로가 이용가능한지 여부가 결정된다(블록 480). 어느 하나가 참(true)인 경우(블록 480), 인코딩된 데이터가 스크래치 메모리로부터 액세스되고, 디코딩 회로가 데이터 디코딩 알고리즘을 인코딩된 데이터에 적용하여, 스크래치 메모리에 다시 저장되는 압축된 데이터를 산출한다(블록 475). 데이터 디코딩 회로는 저밀도 패리티 체크 디코딩 회로를 포함할 수 있다. 그 다음, 압축된 데이터가 스크래치 메모리로부터 액세스된다(블록 485). 이러한 프로세스는 블록(445)에서 수행된 그룹화 이전에 존재하였던 원래의 압축된 데이터 세트를 리어셈블링하는 것을 포함한다. 데이터 압축해제 알고리즘이 원래의 압축된 데이터 세트에 적용되어 판독 데이터를 산출한다. 본질적으로, 데이터 압축해제 알고리즘은 데이터 압축 알고리즘에 의해 적용된 압축을 반대로 하며, 본 기술 분야에 알려진 임의의 압축해제 알고리즘일 수 있다. 결과적인 판독 데이터는 스크래치 메모리에 다시 저장된다. 결국, 판독 데이터는 스크래치 메모리로부터 액세스되고, 요청하는 호스트에게 제공된다(블록 490).
위에서 설명된 다양한 블록들은 다른 기능과 더불어 집적 회로들에서 구현될 수 있음을 주지해야 한다. 그러한 집적 회로들은 주어진 블록, 시스템 또는 회로, 또는 단지 그러한 블록, 시스템 또는 회로의 서브세트의 기능들 전부를 포함할 수 있다. 더욱이, 블록들, 시스템들 또는 회로들의 요소들은 다수의 집적 회로들에 걸쳐서 구현될 수 있다. 그러한 집적 회로들은, 제한적인 것은 아니지만, 모놀리식 집적 회로, 플립 칩 집적 회로, 멀티칩 집적 회로 및/또는 혼합 신호 집적 회로를 포함하는, 본 기술 분야에 알려진 임의의 타입의 집적 회로일 수 있다. 또한, 본 명세서에서 기술된 블록들, 시스템들 또는 회로들의 다양한 기능들은 소프트웨어 또는 펌웨어로 구현될 수 있음을 주지해야 한다. 그러한 일부 경우들에 있어서, 전체 시스템, 블록 또는 회로는 그 소프트웨어 또는 펌웨어 등가물을 이용하여 구현될 수 있다. 다른 경우들에 있어서, 주어진 시스템, 블록 또는 회로의 하나의 부분은 소프트웨어 또는 펌웨어로 구현될 수 있는 반면, 다른 부분들은 하드웨어로 구현된다.
결론적으로, 본 발명은 데이터 저장을 위한 신규한 시스템들, 디바이스들, 방법들 및 배열들을 제공한다. 본 발명의 하나 이상의 실시예의 상세한 설명들이 위에서 제공되었지만, 본 기술 분야의 당업자라면, 본 발명의 사상을 변경하지 않고서, 다양한 대안들, 변형들 및 등가물들이 가능함을 명백히 알 것이다. 따라서, 전술한 설명은 첨부된 청구항들에 의해 정의되는 본 발명의 영역을 제한하는 것으로서 간주되지 않아야 한다.

Claims (20)

  1. 데이터 저장 시스템으로서,
    반도체 디바이스 - 상기 반도체 디바이스는, 기록 데이터 세트를 포함하는 기록 코맨드를 호스트 디바이스로부터 수신하도록 동작가능한 호스트 인터페이스 회로와, 상기 기록 데이터 세트를 압축하여 압축된 데이터 세트를 산출하도록 동작가능한 압축 회로와, 데이터 인코딩 알고리즘을 상기 압축된 데이터 세트에 적용하여 인코딩된 데이터 세트를 산출하도록 동작가능한 기록 채널 회로를 포함함 - 와,
    상기 인코딩된 데이터 세트에 대응하는 자기 신호를 저장하도록 동작가능한 자기 저장 매체를 포함하는
    데이터 저장 시스템.
  2. 제1항에 있어서,
    상기 기록 데이터 세트를 저장하고, 상기 기록 데이터 세트를 상기 압축 회로에 전송하도록 동작가능한 고체 상태 메모리 디바이스를 더 포함하는
    데이터 저장 시스템.
  3. 제2항에 있어서,
    상기 고체 상태 메모리 디바이스는 랜덤 액세스 메모리 디바이스인
    데이터 저장 시스템.
  4. 제1항에 있어서,
    고체 상태 메모리 디바이스와,
    상기 기록 데이터 세트가 상기 고체 상태 메모리 디바이스에 저장되게 하고, 상기 고체 상태 메모리 디바이스로부터의 상기 기록 데이터 세트에 액세스하고, 상기 기록 데이터 세트를 상기 압축 회로에 제공하도록 동작가능한 데이터 흐름 제어 회로를 더 포함하는
    데이터 저장 시스템.
  5. 제4항에 있어서,
    상기 데이터 흐름 제어 회로는,
    상기 기록 데이터 세트가 상기 자기 저장 매체에 저장되게 하고,
    상기 자기 저장 매체가 미약한 이용(insubstantial usage)을 나타낼 때, 상기 자기 저장 매체로부터의 상기 기록 데이터 세트에 액세스하도록 더 동작가능한
    데이터 저장 시스템.
  6. 제5항에 있어서,
    상기 인코딩된 데이터 세트는 압축되고 인코딩된 데이터 세트이고,
    상기 기록 데이터 세트가 상기 자기 저장 매체에 저장되게 하는 것은,
    상기 데이터 인코딩 알고리즘을 상기 기록 데이터 세트에 적용하여 비압축된 인코딩된 데이터 세트를 산출하는 것과,
    상기 비압축된 인코딩된 데이터 세트를 상기 자기 저장 매체에 저장하는 것을 포함하고,
    상기 자기 저장 매체가 미약한 이용을 나타낼 때, 상기 자기 저장 매체로부터의 상기 기록 데이터 세트에 액세스하는 것은,
    데이터 디코딩 알고리즘을 상기 비압축된 인코딩된 데이터 세트에 적용하여 상기 기록 데이터 세트를 산출하는 것을 포함하는
    데이터 저장 시스템.
  7. 제1항에 있어서,
    상기 데이터 인코딩 알고리즘은 저밀도 패리티 체크 인코딩 알고리즘인
    데이터 저장 시스템.
  8. 제1항에 있어서,
    상기 데이터 저장 시스템은 호스트 디바이스를 더 포함하는
    데이터 저장 시스템.
  9. 제8항에 있어서,
    상기 호스트 디바이스는 컴퓨터인
    데이터 저장 시스템.
  10. 제1항에 있어서,
    상기 호스트 인터페이스 회로는 상기 호스트 디바이스로부터 판독 코맨드를 수신하도록 더 동작가능한
    데이터 저장 시스템.
  11. 하드 디스크 드라이브에 데이터를 저장하기 위한 방법으로서,
    자기 저장 매체를 제공하는 단계와,
    고체 상태 메모리를 제공하는 단계와,
    수신된 기록 데이터 세트를 수신하는 단계와,
    상기 수신된 기록 데이터 세트를 저장된 기록 데이터 세트로서 상기 고체 상태 메모리에 저장하는 단계와,
    액세스된 기록 데이터 세트로서 상기 고체 상태 메모리로부터의 상기 저장된 기록 데이터 세트에 액세스하는 단계와,
    압축 알고리즘을 상기 액세스된 기록 데이터 세트에 적용하여 압축된 데이터 세트를 산출하는 단계와,
    상기 압축된 데이터 세트를 인코딩하여 인코딩된 데이터 세트를 산출하는 단계와,
    상기 인코딩된 데이터 세트를 상기 자기 저장 매체에 저장하는 단계를 포함하는
    데이터 저장 방법.
  12. 제11항에 있어서,
    상기 고체 상태 메모리 디바이스는 랜덤 액세스 메모리 디바이스인
    데이터 저장 방법.
  13. 제11항에 있어서,
    상기 자기 저장 매체는 하드 디스크 드라이브의 디스크 플래터인
    데이터 저장 방법.
  14. 제11항에 있어서,
    호스트 디바이스로부터, 상기 기록 데이터 세트를 포함하는 기록 코맨드를 수신하는 단계를 더 포함하는
    데이터 저장 방법.
  15. 제14항에 있어서,
    상기 호스트 디바이스는 컴퓨터인
    데이터 저장 방법.
  16. 제11항에 있어서,
    상기 수신된 기록 데이터 세트를 상기 자기 저장 매체에 저장하는 단계와,
    상기 수신된 기록 데이터 세트를 저장된 기록 데이터 세트로서 상기 고체 상태 메모리에 저장하기 전에 상기 자기 저장 매체로부터 상기 기록 데이터 세트를 검색하는 단계를 더 포함하는
    데이터 저장 방법.
  17. 제16항에 있어서,
    상기 인코딩된 데이터 세트는 압축되고 인코딩된 데이터 세트이고,
    상기 수신된 기록 데이터 세트를 상기 자기 저장 매체에 저장하는 것은,
    상기 수신된 기록 데이터 세트를 인코딩하여 비압축된 인코딩된 데이터 세트를 산출하는 것과,
    상기 비압축된 인코딩된 데이터 세트를 상기 자기 저장 매체에 저장하는 것을 포함하고,
    상기 자기 저장 매체가 미약한 이용을 나타낼 때, 상기 자기 저장 매체로부터의 상기 기록 데이터 세트에 액세스하는 것은,
    데이터 디코딩 알고리즘을 상기 비압축된 인코딩된 데이터 세트에 적용하여 상기 수신된 기록 데이터 세트를 복원하는 것을 포함하는
    데이터 저장 방법.
  18. 제11항에 있어서,
    인코딩 알고리즘은 저밀도 패리티 체크 인코딩 알고리즘인
    데이터 저장 방법.
  19. 저장 디바이스로서,
    고체 상태 메모리 디바이스와,
    반도체 디바이스 - 상기 반도체 디바이스는, 기록 데이터 세트를 포함하는 기록 코맨드를 호스트 디바이스로부터 수신하도록 동작가능한 호스트 인터페이스 회로와, 상기 기록 데이터 세트를 압축하여 압축된 데이터 세트를 산출하도록 동작가능한 압축 회로와, 상기 기록 데이터 세트가 상기 고체 상태 메모리 디바이스에 저장되게 하고, 상기 고체 상태 메모리 디바이스로부터의 상기 기록 데이터 세트에 액세스하고, 상기 기록 데이터 세트를 상기 압축 회로에 제공하도록 동작가능한 데이터 흐름 제어 회로와, 데이터 인코딩 알고리즘을 상기 압축된 데이터 세트에 적용하여 인코딩된 데이터 세트를 산출하도록 동작가능한 기록 채널 회로를 포함함 - 와,
    자기 저장 매체와,
    상기 자기 저장 매체와 관련하여 배치되고, 상기 인코딩된 데이터 세트에 대응하는 신호로 상기 저장 매체를 자화하도록 동작가능한 판독/기록 헤드를 포함하는
    저장 디바이스.
  20. 제19항에 있어서,
    상기 인코딩된 데이터 세트는 압축되고 인코딩된 데이터 세트이고,
    상기 데이터 흐름 제어 회로는,
    상기 데이터 인코딩 알고리즘을 상기 기록 데이터 세트에 적용하여 비압축된 인코딩된 데이터 세트를 산출하고,
    상기 비압축된 인코딩된 데이터 세트를 상기 자기 저장 매체에 저장하고,
    상기 자기 저장 매체로부터의 상기 비압축된 인코딩된 데이터 세트에 액세스하고,
    데이터 디코딩 알고리즘을 상기 비압축된 인코딩된 데이터 세트에 적용하여 상기 기록 데이터 세트를 산출하도록 더 동작가능한
    저장 디바이스.
KR1020140114222A 2013-10-31 2014-08-29 내부 디스크 드라이브 데이터 압축을 위한 시스템 및 방법 KR20150050332A (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201361898420P 2013-10-31 2013-10-31
US61/898,420 2013-10-31
US14/082,261 US9436550B2 (en) 2013-10-31 2013-11-18 Systems and methods for internal disk drive data compression
US14/082,261 2013-11-18

Publications (1)

Publication Number Publication Date
KR20150050332A true KR20150050332A (ko) 2015-05-08

Family

ID=52811943

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140114222A KR20150050332A (ko) 2013-10-31 2014-08-29 내부 디스크 드라이브 데이터 압축을 위한 시스템 및 방법

Country Status (6)

Country Link
US (1) US9436550B2 (ko)
JP (1) JP2015088171A (ko)
KR (1) KR20150050332A (ko)
CN (1) CN104598387A (ko)
DE (1) DE102014115855A1 (ko)
TW (1) TW201516659A (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104834476B (zh) * 2014-02-10 2016-10-19 安华高科技通用Ip(新加坡)公司 基于段结束标记的数据对准的系统和方法
CN108345428B (zh) * 2017-01-22 2021-08-31 厦门旌存半导体技术有限公司 控制密集型控制系统及其方法

Family Cites Families (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5222069A (en) 1990-09-20 1993-06-22 Ampex Systems Corporation Miscorrection arrangement for the concealment of misdetected or miscorrected digital signals
JP2558994B2 (ja) 1992-07-06 1996-11-27 松下電器産業株式会社 デジタル画像信号の誤り補正方法及び誤り補正装置
US5589994A (en) 1992-08-21 1996-12-31 Mitsubishi Denki Kabushiki Kaisha Image recording method and apparatus with reduced error propagation
US5938790A (en) 1997-03-04 1999-08-17 Silicon Systems Research Ltd. Sequence error event detection and correction using fixed block digital sum codes
US6029264A (en) 1997-04-28 2000-02-22 The Trustees Of Princeton University System and method for error correcting a received data stream in a concatenated system
EP0945989A1 (en) 1998-03-12 1999-09-29 Hitachi Micro Systems Europe Limited Viterbi decoding
US6272659B1 (en) 1998-05-18 2001-08-07 Cirrus Logic, Inc. Error correction code processor employing adjustable correction power for miscorrection minimization
JP4324276B2 (ja) 1998-06-03 2009-09-02 株式会社日立グローバルストレージテクノロジーズ 磁気ディスク誤り訂正方法及び装置
US6446234B1 (en) 1999-03-16 2002-09-03 International Business Machines Corporation Method and apparatus for updating cyclic redundancy check information for data storage
US6438724B1 (en) 1999-03-16 2002-08-20 International Business Machines Corporation Method and apparatus for deterministically altering cyclic redundancy check information for data storage
JP3584967B2 (ja) 2000-08-04 2004-11-04 インターナショナル・ビジネス・マシーンズ・コーポレーション データの再生装置及び再生方法
US6694477B1 (en) 2000-09-28 2004-02-17 Western Digital Technologies, Inc. Communication channel employing an ECC decoder enhanced by likely error events of a trellis sequence detector
US7178086B2 (en) 2003-09-17 2007-02-13 Hitachi Global Storage Technologies Netherlands, B.V. Direct partial update of CRC/ECC check bytes
US7383487B2 (en) 2004-01-10 2008-06-03 Broadcom Corporation IPHD (iterative parallel hybrid decoding) of various MLC (multi-level code) signals
US7685497B2 (en) 2004-03-31 2010-03-23 Nxp B.V. Method and apparatus for efficient computation of check equations in periodical low density parity check (LDPC) codes
US7257762B2 (en) * 2004-10-07 2007-08-14 Lsi Corporation Memory interface with write buffer and encoder
TWI241073B (en) 2005-01-03 2005-10-01 Sunplus Technology Co Ltd Decoding device for product code decoding and method thereof
JP4036338B2 (ja) 2005-03-04 2008-01-23 国立大学法人東京工業大学 誤りバイト数を制限したバイト内複数スポッティバイト誤り訂正・検出方法及び装置
JP2009527174A (ja) 2006-02-17 2009-07-23 ノキア コーポレイション Mimo受信機を提供する装置、方法およびコンピュータ・プログラム
US8046660B2 (en) * 2006-08-07 2011-10-25 Marvell World Trade Ltd. System and method for correcting errors in non-volatile memory using product codes
US8019959B2 (en) * 2007-02-09 2011-09-13 Marvell World Trade Ltd. Nonvolatile memory system
US9128868B2 (en) 2008-01-31 2015-09-08 International Business Machines Corporation System for error decoding with retries and associated methods
EP2223431A4 (en) 2008-08-15 2010-09-01 Lsi Corp DECODING LIST OF CODED WORDS CLOSE IN RAM MEMORY
US8321772B1 (en) 2008-10-20 2012-11-27 Link—A—Media Devices Corporation SOVA sharing during LDPC global iteration
US20110109773A1 (en) 2009-11-10 2011-05-12 General Electric Company System and method for adaptive nonlinear compressed visual sensing
KR20110073932A (ko) * 2009-12-24 2011-06-30 주식회사 하이닉스반도체 Ecc 회로를 포함하는 반도체 스토리지 시스템 및 그 제어 방법
US9548758B2 (en) 2010-01-05 2017-01-17 Alcatel-Lucent Usa Inc. Secure compressive sampling using codebook of sampling matrices
BR112012017145A2 (pt) 2010-01-15 2018-06-19 Thomson Licensing codificação de vídeo usando detecção compressiva.
US8458555B2 (en) 2010-06-30 2013-06-04 Lsi Corporation Breaking trapping sets using targeted bit adjustment
JP5712609B2 (ja) * 2010-12-24 2015-05-07 富士通株式会社 データ処理装置及びデータ記録方法
US8862972B2 (en) 2011-06-29 2014-10-14 Lsi Corporation Low latency multi-detector noise cancellation
US20130024163A1 (en) 2011-07-19 2013-01-24 Lsi Corporation Systems and Methods for Early Stage Noise Compensation in a Detection Channel
US8977937B2 (en) * 2012-03-16 2015-03-10 Lsi Corporation Systems and methods for compression driven variable rate decoding in a data processing system
US9230596B2 (en) * 2012-03-22 2016-01-05 Avago Technologies General Ip (Singapore) Pte. Ltd. Systems and methods for variable rate coding in a data processing system
US8949704B2 (en) * 2012-03-22 2015-02-03 Lsi Corporation Systems and methods for mis-correction correction in a data processing system
US9178534B2 (en) * 2012-05-29 2015-11-03 International Business Machines Corporation Methods for partial reverse concatenation for data storage devices using composite codes
US20140055881A1 (en) * 2012-08-22 2014-02-27 Lsi Corporation Recording regions in a shingled magnetic hard disk drive system

Also Published As

Publication number Publication date
US20150121173A1 (en) 2015-04-30
TW201516659A (zh) 2015-05-01
JP2015088171A (ja) 2015-05-07
DE102014115855A1 (de) 2015-04-30
CN104598387A (zh) 2015-05-06
US9436550B2 (en) 2016-09-06

Similar Documents

Publication Publication Date Title
US7958331B2 (en) Storage device with opportunistic address space
US9230596B2 (en) Systems and methods for variable rate coding in a data processing system
KR101910840B1 (ko) 동적 그래뉼기반 매개 스토리지
US10037245B2 (en) Raid system performance enhancement using compressed data and byte addressable storage devices
US9043684B2 (en) Systems and methods for variable redundancy data protection
US9921774B2 (en) Data storage management in a memory device
US9971515B2 (en) Incremental background media scan
US20130073816A1 (en) Method of storing data in a storage medium and data storage device including the storage medium
US10140180B1 (en) Segment-based outer code recovery
US10996886B2 (en) Method and system for facilitating atomicity and latency assurance on variable sized I/O
US10678443B2 (en) Method and system for high-density converged storage via memory bus
JP2004362583A (ja) ユニバーサルフォーマット記憶ドライブおよびユニバーサルフォーマットでデータを記憶するための方法
US20110314235A1 (en) Data storage device and write method thereof
US11074124B2 (en) Method and system for enhancing throughput of big data analysis in a NAND-based read source storage
US7219259B2 (en) Apparatus and method to preserve data integrity during a power loss
US10437667B2 (en) Raid system performance enhancement using compressed data
US20150062738A1 (en) Systems and Methods for Variable Sector Count Spreading and De-Spreading
US7120766B2 (en) Apparatus and method to initialize information disposed in an information storage and retrieval system
US9436550B2 (en) Systems and methods for internal disk drive data compression
US11177012B1 (en) Fast copy through controller
US20030115404A1 (en) Write-once memory device including non-volatile memory for temporary storage
US20080086676A1 (en) Segregation of redundant control bits in an ecc permuted, systematic modulation code
US7206908B2 (en) Apparatus and method to convert a plurality of sectors from a first sector format to a second sector format
US20170344425A1 (en) Error-laden data handling on a storage device
EP2605121B1 (en) Systems and methods for handling out of order reporting in a storage device

Legal Events

Date Code Title Description
N231 Notification of change of applicant
WITN Withdrawal due to no request for examination