KR101777032B1 - 데이터 저장 장치의 액세스 시간을 코드화 검색을 이용하여 줄이는 저장 방법 및 장치 - Google Patents

데이터 저장 장치의 액세스 시간을 코드화 검색을 이용하여 줄이는 저장 방법 및 장치 Download PDF

Info

Publication number
KR101777032B1
KR101777032B1 KR1020157029539A KR20157029539A KR101777032B1 KR 101777032 B1 KR101777032 B1 KR 101777032B1 KR 1020157029539 A KR1020157029539 A KR 1020157029539A KR 20157029539 A KR20157029539 A KR 20157029539A KR 101777032 B1 KR101777032 B1 KR 101777032B1
Authority
KR
South Korea
Prior art keywords
block
read
disk
data blocks
blocks
Prior art date
Application number
KR1020157029539A
Other languages
English (en)
Other versions
KR20150129856A (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 KR20150129856A publication Critical patent/KR20150129856A/ko
Application granted granted Critical
Publication of KR101777032B1 publication Critical patent/KR101777032B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/10009Improvement or modification of read or write signals
    • G11B20/10481Improvement or modification of read or write signals optimisation methods
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/12Formatting, e.g. arrangement of data block or words on the record carriers
    • G11B20/1217Formatting, e.g. arrangement of data block or words on the record carriers on discs
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B27/00Editing; Indexing; Addressing; Timing or synchronising; Monitoring; Measuring tape travel
    • G11B27/10Indexing; Addressing; Timing or synchronising; Measuring tape travel
    • G11B27/102Programmed access in sequence to addressed parts of tracks of operating record carriers
    • G11B27/105Programmed access in sequence to addressed parts of tracks of operating record carriers of operating discs
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B2020/10916Seeking data on the record carrier for preparing an access to a specific address

Landscapes

  • Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)
  • General Engineering & Computer Science (AREA)

Abstract

디스크 기반의 데이터 저장 장치(예, 하드 디스크 드라이브)에 저장되는 데이터 블록은 선형 독립적인 복수의 네트워크 코드화 블록을 형성하기 위해 함께 코딩된다. 다음으로 네트워크 코드화 블록은 데이터 저장 장치에 저장된다. 다음으로, 코드화 검색은 시간 효율적 방법으로 상기 데이터 저장 장치로부터 상기 본래의 데이터 블록을 검색하도록 이용될 수 있다. 판독 요청은 본래의 데이터 블록과 연관되는 새로운 코드화 패킷을 요청하며 데이터 저장 장치로 보내질 수 있다. 판독 요청에 반응하여, 데이터 저장 장치는 장치의 판독 요소의 현재 위치와 가장 가까운 디스크로부터 새로운 코드화 패킷을 판독할 수 있다.

Description

데이터 저장 장치의 액세스 시간을 코드화 검색을 이용하여 줄이는 방법 및 장치{METHOD AND APPARATUS TO REDUCE ACCESS TIME IN A DATA STORAGE DEVICE USING CODED SEEKING}
본 서에 기술되는 주제는 일반적으로 데이터 저장에 관련되고, 보다 특정하게는 코딩을 이용하여 데이터 저장 장치의 데이터 액세스 속도를 높이는 테크닉 및 시스템에 관련한다.
오랜 시간 동안 하드 디스크 드라이브는 주요한 데이터 저장 네트워크였다. 지난 어플리케이션 프로그램(20)년 동안, 하드 디스크 드라이브의 비용은 급격히 떨어지고, 이러한 드라이브에 저장되는 데이터의 밀도는 매우 증가해서, 이는 싸고 높은 능력의 저장소 장치를 이뤄냈다. 특히 특정 성능의 장점으로 인해 이동식 장치에서 고체 상태의 저장 장치(solid state storage device)가 널리 쓰였다. 예를 들어, 액츄에이터, 판독/기록 헤드, 및 하드 디스크의 플래터의 물리적 이동은 많은 예시에서 수 밀리초에서 수십 밀리초까지의 단위에서 이뤄질 수 있는 데이터의 단일 블록에 대한 액세스 시간으로 이어질 수 있다.
하드 디스크와 연관되는 좁은 통로는 이러한 드라이브의 많은 I/O의 잠재적인 감소 알고리즘을 적극적으로 발전시켰다. 이러한 알고리즘은 예를 들어, 선행 판독(read-ahead) 알고리즘 및 이들의 더 복잡한 변형이다. 일반적으로, 이러한 알고리즘은 공통의 액세스 패턴을 예측하고 개발하는 스케줄링 기법에 의존한다. 그러나 이러한 알고리즘은 I/O 액세스 속도 증가에 대한 늘어나는 요구를 맞추는데 실패했다.
하드 디스크 드라이브 및 이동식 기계부를 가지는 다른 데이터 저장 장치에서 평균 액세스 시간을 감소시킬 수 있는 기술에 대한 일반적인 수요가 있다.
본서에 기술되는 다양한 실시예들에서, 이동식 기계부(예, 하드 디스크 드라이브 및 다른 디스크 기반의 데이터 저장 장치)를 가지는 데이터 저장 장치의 평균 액세스 시간을 줄이는 코딩을 이용하는 테크닉 및 시스템이 제공된다. 적어도 하나의 실시예에서, 평균 블록 판독 시간을 줄여주는 드라이브 블록 간의 코딩을 이용하는 디스크 기반의 데이터 저장 장치 및 시스템을 위한 단순한 코딩 기법이 제공된다. 다음으로, 코드화 검색은 빠르고 효율적인 방법으로 데이터 저장 장치로부터 데이터를 판독하기 위해 도입될 수 있다.
종래의 디스크 드라이브에서, 디스크 제어기는 판독 요청(예, 디스크의 특정 섹터에 저장되는 데이터 블록)에 반응하여 디스크 또는 플래터로부터 개별의 데이터 블록을 검색한다.
본 서에 기술되는 코드화 검색 테크닉을 이용하여, 제어기는 판독 요청에 반응하여 판독 헤드의 위치에 가장 가까운 새로운(innovative) 코드화 블록을 검색하고 확인할 수 있다. 즉. 디스크 제어기에 도달하는 각각의 요청 당, 제어기는 평균 물리적 드라이브 운동을 줄이는 방법으로, 현재 판독 헤드 위치에 가장 가까운 유용한 정보를 포함하는 많은 코드화 데이터 블록 중에 하나를 검색할 수 있다. 이러한 방식에서, 각각의 데이터 블록의 평균 검색 시간은 줄어들 수 있다.
본 서에 기술되는 개념, 시스템, 회로, 및 테크닉의 일측에 따라, 드라이브 제어기는 (i) 디지털 데이터의 저장을 위한 적어도 하나의 플래터로부터 복수의 네이티브 데이터 블록과 연관되는 새로운 코드화 블록의 검색을 요청하는 판독 요청을 수신; (ii)판독 요청에 반응하여, 디스크 드라이브의 판독 변환기의 현재 위치와 가장 가까운 적어도 하나의 플래터에 보관되는 복수의 네이티브 데이터 블록과 연관되는 새로운 코드화 블록을 확인; 및 (iii) 적어도 하나의 플래터로부터 확인되는 새로운 코드화 블록을 판독하도록 구성된다.
일실시예에서, 드라이브 제어기는 다음의 특징 중 적어도 하나를 포함할 수 있고, 다음의 기능 중 적어도 하나를 수행할 수 있다: 상기 드라이브 제어기는 액세스할 수 있는 최소한의 시간을 이용하는 저장된 코드화 블록을 선택함으로써 상기 판독 변환기의 상기 현재 위치와 가장 가까운 상기 새로운 코드화 블록을 확인하도록 구성될 수 있고; 상기 드라이브 제어기는 상기 판독 변환기와 물리적으로 가장 가까운 저장된 코드화 블록을 선택함으로써 상기 판독 변환기의 상기 현재 위치와 가장 가까운 상기 새로운 코드화 블록을 확인하도록 구성될 수 있고; 및/또는 상기 드라이브 제어기는 상기 판독 변환기의 상기 현재 위치와 가장 가까운 새로운 코드화 블록을 확인하는 경우, 최근에 검색된 상기 복수의 네이티브 데이터 블록과 연관되는 코드화 블록을 무시하도록 구성될 수 있다.
본 서에 기술되는 개념, 시스템, 회로, 및 테크닉의 다른 일측에 따라, 새로운 코드화 블록은 상기 선형 결합을 생성하도록 이용되는 계수 리스트와 상기 복수의 네이티브 데이터 블록의 선형 결합을 포함한다. 이러한 코드화 블록은 적어도 하나의 플래터로부터 판독될 수 있다.
일실시예에서, 적어도 하나의 플래터는 상기 복수의 네이티브 데이터 블록과 연관되는 적어도 N개의 선형으로 독립적인 코드화 블록을 가지고, N은 상기 복수의 네이티브 데이터 블록 내의 네이티브 데이터 블록의 상기 개수이다.
본 서에 기술되는 개념, 시스템, 회로, 및 테크닉의 또 다른 일측에 따라, 복수의 네이티브 데이터 블록과 연관되는 다중 네트워크 코드화 블록을 가지는 디스크 기반의 데이터 저장 장치로부터 데이터를 검색하는 데 이용되는 방법이 제공된다. 더욱 상세하게, 상기 방법은: 상기 복수의 네이티브 데이터 블록과 연관되는 새로운 코드화 블록의 검색을 요청하는 판독 요청을 수신하는 단계, 상기 판독 요청에 반응하여, 상기 디스크 기반의 데이터 저장 장치의 판독 변환기의 현재 위치와 가장 가까운 상기 디스크 기반의 데이터 저장 장치에 보관되는 새로운 코드화 블록을 확인하는 단계, 및 상기 확인된 새로운 코드화 블록을 판독하는 단계를 포함한다.
일실시예에서, 상기 복수의 네이티브 데이터 블록과 연관되는 상기 디스크 기반의 데이터 저장 장치에 저장되는 상기 다중 네트워크 코드화 블록은 각각 상기 복수의 네이티브 데이터 블록의 선형 결합을 포함한다.
일실시예에서, 상기 복수의 네이티브 데이터 블록과 연관되는 상기 디스크 기반의 데이터 저장 장치에 저장되는 상기 다중 네트워크 코드화 블록은 각각 상기 상응하는 선형 결합을 생성하기 위해 이용되는 계수 리스트를 포함한다.
일실시예에서, 새로운 코드화 블록의 검색을 요청하는 판독 요청을 수신하는 단계는 상기 복수의 네이티브 데이터 블록과 연관되는 이전의 검색된 코드화 블록의 디코딩에 유용한 추가의 자유도를 제공하는 코드화 블록의 검색을 요청하는 판독 요청을 수신하는 단계를 포함한다.
일실시예에서, 수신하는 단계, 확인하는 단계, 및 판독하는 단계는 상기 디스크 기반의 데이터 저장 장치와 연관되는 제어기에 의해 수행된다.
일실시예에서, 상기 디스크 기반의 데이터 저장 장치는 적어도 N개의 선형 독립적인 코드화 블록을 가지고, N은 상기 복수의 네이티브 데이터 블록 내의 네이티브 블록의 상기 개수이다.
일실시예에서, 상기 디스크 기반의 데이터 저장 장치는 자기 디스크 드라이브이다.
본 서에 기술되는 개념, 시스템, 회로, 및 테크닉의 다른 일측에 따라, 복수의 네이티브 데이터 블록과 연관되는 다중 네트워크 코드화 블록을 가지는 디스크 기반의 데이터 저장 장치로부터 데이터를 검색하는 데 이용되는 방법이 제공된다. 더 상세하게, 상기 방법은 상기 디스크 기반의 저장 장치로부터 검색될 필요가 있는 상기 복수의 네이티브 데이터 블록을 결정하는 단계; 및 상기 복수의 네이티브 데이터 블록과 연관되는 새로운 코드화 블록의 검색을 요청하는 판독 요청을 상기 디스크 기반의 데이터 저장 장치에 발신하는 단계를 포함한다.
일실시예에서, 상기 방법은 상기 판독 요청에 반응하여, 상기 복수의 네이티브 데이터 블록과 연관되는 새로운 코드화 블록을 수신하는 단계; 상기 복수의 네이티브 데이터 블록에 연관되는 상기 새로운 코드화 블록을 메모리에 임시적으로 저장하는 단계; 상기 복수의 네이티브 데이터 블록을 추출하는 디코딩이 가능하도록, 상기 복수의 네이티브 데이터 블록과 연관되는 충분한 수의 새로운 코드화 블록이 상기 디스크 기반의 데이터 저장 장치로부터 검색되었는지 여부를 결정하는 단계; 및 상기 복수의 네이티브 데이터 블록을 추출하는 디코딩이 가능하도록, 상기 복수의 네이티브 데이터 블록과 연관되는 충분한 수의 새로운 코드화 블록이 상기 디스크 기반의 데이터 저장 장치로부터 검색되지 않은 경우, 상기 복수의 네이티브 데이터 블록과 연관되는 새로운 코드화 블록의 검색을 요청하는 다른 판독 요청을 상기 디스크 기반의 데이터 저장 장치로 발신하는 단계를 더 포함한다.
일실시예에서, 상기 방법은 디코딩이 가능하도록, 상기 복수의 네이티브 데이터 블록과 연관되는 충분한 수의 새로운 코드화 블록이 상기 디스크 기반의 데이터 저장 장치로부터 검색될 때까지 수신하는 단계, 임시적으로 저장하는 단계, 결정하는 단계, 및 다른 판독 요청을 발신하는 단계를 반복하는 단계를 더 포함한다.
일실시예에서, 상기 디스크 기반의 데이터 저장 장치로부터 충분한 수의 새로운 코드화 블록이 검색된 후에, 상기 디스크 기반의 데이터 저장 장치로부터 네이티브 데이터 블록을 추출하는 새로운 코드화 블록을 디코딩하는 단계를 더 포함한다.
일실시예에서, 상기 복수의 네이티브 데이터 블록과 연관되는 상기 디스크 기반의 데이터 저장 장치에 저장되는 상기 다중 네트워크 코드화 블록은 각각 상기 복수의 네이티브 데이터 블록의 선형 결합을 포함한다.
일실시예에서, 상기 복수의 네이티브 데이터 블록과 연관되는 상기 디스크 기반의 데이터 저장 장치에 저장되는 상기 다중 네트워크 코드화 블록은 각각 상기 상응하는 선형 결합을 생성하기 위해 이용되는 계수 리스트를 포함한다.
본 서에 기술되는 개념, 시스템, 회로, 및 테크닉의 또 다른 일측에 따라, 데이터를 디스크 기반의 데이터 저장 장치에 저장하는 방법이 제공된다. 더 상세하게, 상기 방법은 상기 디스크 기반의 데이터 저장 장치에 저장되는 복수의 데이터 블록을 확인하는 단계 -상기 복수의 데이터 블록은 N개의 데이터 블록을 가짐-; 상기 복수의 데이터 블록을 이용하여 복수의 네트워크 코드화 블록을 생성하는 단계 -각각의 네트워크 코드화 블록은 상기 다른 네트워크 코드화 블록으로부터 랜덤 계수의 다른 세트를 이용하여 생성되는 상기 복수의 데이터 블록의 선형 결합을 포함함-; 및 상응하는 랜덤 계수를 이용하여 상기 디스크 기반의 데이터 저장 장치의 개별 블록 위치에 상기 네트워크 코드화 블록을 기록하는 단계를 포함한다.
일실시예에서, 상기 디스크 기반의 데이터 저장 장치에 저장되는 복수의 데이터 블록을 확인하는 단계는: 상기 디스크 기반의 데이터 저장 장치에 저장되는 파일을 획득하는 단계; 상기 파일을, 각각 N 개의 데이터 블록을 포함하는 복수의 동일 사이즈의 블록 윈도우로 분할하는 단계; 상기 복수의 동일 사이즈의 블록 윈도우 중 하나를 선택하는 단계를 포함한다.
일실시예에서, 상기 방법은 상기 복수의 동일 사이즈의 블록 윈도우에서 각각의 블록 당 생성 및 저장을 반복하는 단계를 더 포함한다.
본 서에 기술되는 개념, 시스템, 회로, 및 테크닉의 또 다른 일측에 따라, 디스크 드라이브는 드라이브 제어기; 및 상기 드라이브 제어기에 의한 제어 중인 디지털 데이터의 저장을 위한 적어도 하나의 플래터를 포함하고, 상기 드라이브 제어기는 (i)상기 적어도 하나의 플래터로부터 복수의 네이티브 데이터 블록과 연관되는 새로운 코드화 블록의 검색을 요청하는 판독 요청을 수신; (ii)상기 판독 요청에 반응하여, 상기 디스크 드라이브의 판독 변환기의 현재 위치와 가장 가까운 적어도 하나의 플래터에 보관되는 상기 복수의 네이티브 데이터 블록과 연관되는 새로운 코드화 블록을 확인; 및 (iii)상기 적어도 하나의 플래터로부터 상기 확인되는 새로운 코드화 블록을 판독하도록 구성된다.
일실시예에서, 적어도 하나의 플래터로부터 판독되는 상기 확인되는 새로운 코드화 블록은 상기 선형 결합을 생성하도록 이용되는 계수 리스트와 상기 복수의 네이티브 데이터 블록의 선형 결합을 포함한다.
일실시예에서, 적어도 하나의 플래터는 상기 복수의 네이티브 데이터 블록과 연관되는 적어도 N개의 선형으로 독립적인 코드화 블록을 가지고, N은 상기 복수의 네이티브 데이터 블록 내의 네이티브 데이터 블록의 상기 개수이다.
본 서에 기술되는 개념, 시스템, 회로, 및 테크닉의 또 다른 일측에 따라, 시스템은 프로세서; 및 상기 프로세서에 의해 액세스를 위한 디지털 데이터를 저장하는 디스크 드라이브를 포함하고, 상기 프로세서는 네이티브 데이터 패킷 그룹과 연관되는 새로운 코드화 블록의 검색을 요청하는 판독 요청을 상기 디스크 드라이브에 발신하도록 구성된다.
일실시예에서, 상기 프로세서는, 디코딩이 가능하도록 충분한 새로운 코드화 블록이 검색될 때까지 상기 네이티브 데이터 패킷의 그룹과 연관되는 새로운 코드화 블록의 검색을 요청하는 판독 요청을 상기 디스크 드라이브에 연속해서 발신하도록 구성된다.
일실시예에서, 상기 디스크 드라이브는 (i)복수의 네이티브 데이터 블록과 연관되는 새로운 코드화 블록의 검색을 요청하는 상기 판독 요청을 수신; (ii)상기 판독 요청에 반응하여, 상기 디스크 드라이브의 판독 변환기의 현재 위치와 가장 가까운 상기 디스크 드라이브에 저장되는 상기 복수의 네이티브 데이터 블록과 연관되는 새로운 코드화 블록을 확인; 및 (iii)상기 판독 변환기를 이용하여 상기 확인되는 새로운 코드화 블록을 판독하도록 구성되는 드라이브 제어기를 포함한다.
일실시예에서, 상기 드라이브 제어기는 액세스할 수 있는 최소한의 시간을 이용하는 저장된 코드화 블록을 선택함으로써 상기 판독 변환기의 상기 현재 위치와 가장 가까운 상기 새로운 코드화 블록을 확인하도록 구성된다.
일실시예에서, 상기 드라이브 제어기는 상기 판독 변환기와 물리적으로 가장 가까운 저장된 코드화 블록을 선택함으로써 상기 판독 변환기의 상기 현재 위치와 가장 가까운 상기 새로운 코드화 블록을 확인하도록 구성된다.
일실시예에서, 상기 드라이브 제어기는 상기 판독 변환기의 상기 현재 위치와 가장 가까운 새로운 코드화 블록을 확인하는 경우, 최근에 검색된 상기 복수의 네이티브 데이터 블록과 연관되는 코드화 블록을 무시하도록 구성된다.
일실시예에서, 상기 디스크 드라이브는 (i)상기 디스크 드라이브에 저장되는 복수의 데이터 블록을 획득 -상기 복수의 데이터 블록은 N개의 데이터 블록을 가짐-; (ii)상기 복수의 데이터 블록을 이용하여 복수의 네트워크 코드화 블록을 생성 -각각의 네트워크 코드화 블록은 상기 다른 네트워크 코드화 블록으로부터 다른 세트의 랜덤 계수를 이용하여 생성되는 상기 복수의 데이터 블록의 선형 결합을 포함함-; 및 (iii)상응하는 랜덤 계수를 이용하여 상기 생성되는 네트워크 코드화 블록을 상기 디스크 드라이브의 적어도 하나의 플래터의 개별의 블록 위치에 기록하도록 구성되는 드라이브 제어기를 포함한다.
본 서에 기술되는 개념, 시스템, 회로, 및 테크닉의 또 다른 일측에 따라, 드라이브 제어기는 (i) 디지털 데이터의 저장을 위한 적어도 하나의 플래터로부터 복수의 네이티브 데이터 블록과 연관되는 새로운 코드화 블록의 검색을 요청하는 판독 요청을 수신; (ii)판독 요청에 반응하여, 디스크 드라이브의 판독 변환기의 현재 위치와 가장 가까운 적어도 하나의 플래터에 보관되는 복수의 네이티브 데이터 블록과 연관되는 새로운 코드화 블록을 확인; 및 (iii) 적어도 하나의 플래터로부터 확인되는 새로운 코드화 블록을 판독하도록 구성된다.
일실시예에서, 드라이브 제어기는 다음의 특징 중 적어도 하나를 포함할 수 있고, 다음의 기능 중 적어도 하나를 수행할 수 있다: 상기 드라이브 제어기는 액세스할 수 있는 최소한의 시간을 이용하는 저장된 코드화 블록을 선택함으로써 상기 판독 변환기의 상기 현재 위치와 가장 가까운 상기 새로운 코드화 블록을 확인하도록 구성될 수 있고; 상기 드라이브 제어기는 상기 판독 변환기와 물리적으로 가장 가까운 저장된 코드화 블록을 선택함으로써 상기 판독 변환기의 상기 현재 위치와 가장 가까운 상기 새로운 코드화 블록을 확인하도록 구성될 수 있고; 및/또는 상기 드라이브 제어기는 상기 판독 변환기의 상기 현재 위치와 가장 가까운 새로운 코드화 블록을 확인하는 경우, 최근에 검색된 상기 복수의 네이티브 데이터 블록과 연관되는 코드화 블록을 무시하도록 구성될 수 있다.
본 서에 기술되는 개념, 시스템, 회로, 및 테크닉의 또 다른 일측에 따라, 새로운 코드화 블록은 상기 선형 결합을 생성하도록 이용되는 계수 리스트와 상기 복수의 네이티브 데이터 블록의 선형 결합을 포함한다. 이러한 코드화 블록은 적어도 하나의 플래터로부터 판독될 수 있다.
일실시예에서, 적어도 하나의 플래터는 상기 복수의 네이티브 데이터 블록과 연관되는 적어도 N개의 선형으로 독립적인 코드화 블록을 가지고, N은 상기 복수의 네이티브 데이터 블록 내의 네이티브 데이터 블록의 상기 개수이다.
전술되는 특징은 다음의 도면의 설명으로부터 더 자세히 이해될 수 있다.
도 1은 본 서에 기술되는 특징을 통합할 수 있는 명시적인 컴퓨팅 시스템을 도시한다.
도 2는 본 서에 기술되는 특징을 통합할 수 있는 명시적인 디스크 드라이브의 상면도이다.
도 3은 일실시예에 따라 코드화 블록(E[T 1 ])의 데이터 액세스 시간의 예상 값이 w의 다른 값을 위해 코드화 블록을 생성하기 위해 이용되는 복수의 네이티브 데이터 블록
Figure 112015099431398-pct00001
과 함께 변하는 것을 도시하는 명시적인 그래프이다.
도 4는 일실시예에 따라 디스크 드라이브 구현 코드화 검색이 블록 윈도우의 자유도를 따라 이동하면서
Figure 112015099431398-pct00002
가 변하는 것을 도시하는 명시적인 그래프이다.
도 5는 일실시예에 따라 코드화 검색을 지원하는 방법으로 네트워크 코딩을 이용하여 디스크 드라이브에 데이터를 저장하는 방법을 도시하는 흐름도이다.
도 6은 일실시예에 따라 코딩 검색을 이용하여 디스크 드라이브로부터 데이터 검색에 이용하기 위한 방법을 도시하는 흐름도이다.
도 7은 일실시예에 따라 데이터 검색을 지원하는 디스크 드라이브로부터 데이터 검색에 이용하기 위한 방법을 도시하는 흐름도이다.
코딩은 단일 블록 내의 오류 정정을 위해 하드 디스크 드라이브 내에서 오랫동안 이용되었다. 예를 들어 리드 솔로몬 코드(Reed-Solomon code), LDPC(low density parity check) 코드, 및 다른 것 등의 코드는 디스크 드라이브 내에서 가장 일반적으로 이용되는 것들이다. 그러나, 코딩은 하드 드라이브 내의 I/O 대시를 줄이기 위해 이용되지는 못했다. 하드 디스크 드라이브 및 이동식 기계부를 가지는 다른 데이터 저장 장치에서 평균 액세스 시간을 감소시킬 수 있는 기술에 대한 테크닉 및 시스템이 본 서에 기술된다. 이러한 테크닉 및 시스템은 선행 판독 알고리즘 및 다른 I/O 대기 감소 알고리즘에 추가되거나 대체되어 이용될 수 있다.
도 1은 본 서에 기술되는 특징을 통합할 수 있는 명시적인 컴퓨팅 시스템(컴퓨팅 시스템(10))을 도시한다. 도시되는 바와 같이, 컴퓨팅 시스템(10)은 예를 들어 프로세서(12), 메모리(14), 디스크 드라이브(16)을 포함할 수 있다. 프로세서(12)는 예를 들어 비휘발성 형식의 프로그램 파일 및 데이터 파일을 저장하기 위해 디스크 드라이브(16)을 이용할 수 있다. 프로세서(12)는 예를 들어 프로세서(12)에 의해 현재 수행 중인 프로그램을 저장하기 위해 메모리(14)를 이용할 수 있다. 도시되는 바와 같이, 프로세서(12)는 컴퓨팅 시스템(10)의 전체 운영을 제어하기 위해 운영 시스템(18)을 실행할 수 있다. 프로세서(12)는 또한 적어도 하나의 어플리케이션 프로그램(20)을 실해할 수 있다. 프로세서(12)는 예를 들어 범용의 마이크로 프로세서, DSP(digital signal processor), RISC(reduced instruction set computer), 마이크로컨트롤러, 및/또는 이들의 결합을 포함하는 다른 것 등을 포함하여 컴퓨터 명령어를 프로세싱할 수 있는 임의 타입의 프로세서를 포함할 수 있다.
도 1에 도시되는 바와 같이, 디스크 드라이브(16)은 드라이브 제어기(22), 드라이브 캐시(24), 및 적어도 하나의 플래터(26)을 포함할 수 있다. 드라이브 제어기(22)는 디스크 드라이브(16)의 동작을 제어한다. 예를 들어, 드라이브 제어기(22)는 적어도 하나의 디지털 프로세싱 장치를 포함할 수 있다. 플래터(26)은 디지털 데이터가 디스크 드라이브(16) 내에 저장되는 저장 매체이다. 자기 디스크 드라이브(예, 하드 디스크 드라이브) 내에서 각각의 플래터(26)은 자기성 물질로 코팅될 수 있어서 디지털 데이터가 자성 형식(예, 자극 전도 또는 일부 다른 자극 표시)으로 그 안에 저장되는 것이 허용된다. 비록 다른 기법에는 존재하지 않지만, 데이터는 전형적으로 플래터(26)의 표면에 있는 동심의 트랙에 저장된다. 데이터는 각각의 플래터(26)의 적어도 한 측면에 저장될 수 있다. 디스크 드라이브는 단일 플래터를 포함할 수 있지만, 일반적으로 복수의 플래터는 중심 스핀들 위에서 다른 하나 위해 축적되어 디스크 드라이브가 동작하는 동안 플래터(26)의 회전축으로서 역할한다. 판독 및 기록 요소는 플래터(26)의 트랙에 데이터를 기록 또는 판독하는 변환기로서 이용될 수 있다.
드라이브 캐시(24)는 플래터(26)와 외부 장치(예, 프로세서(12)) 사이에서 판독 및 기록 동작 동안 데이터 버퍼로서 이용될 수 있다. 따라서, 드라이브 캐시(24)는 다른 것들 사이에서 플래터(26) 및 디스크 드라이브(16)의 I/O 포트와 연관되는 판독/기록 채널 사이의 데이터 속도 파이를 보상하는 판독 및/또는 기록에 대한 임시 데이터 저장소를 제공하기 위해 동작할 수 있다. 드라이브 캐시(24)는 일반적으로 임의의 주어진 시간에서 최대
Figure 112016129513237-pct00003
블록을 저장할 수 있다.
디스크 드라이브 내의 각각의 활성화 플래터는 일반적으로 하나의 판독 요소 및 하나의 기록 요소를 연관지어 가지고 있다. 일부 경우에, 단일 요소는 플래터 표면의 판독 및 기록을 수행하기 위해 이용될 수 있지만, (동일한 판독/기록 헤드의 부분일 수 있지만) 일반적으로 분리된 판독 및 기록 요소가 제공된다. 판독 및 기록 요소는 대개 이동식 액츄에이터 암의 말단에 연결되어 이들이 상응하는 플래터 표면에 대해 제어 가능하게 위치될 수 있게 한다. 보이스 코일 모터 또는 다른 타입의 모터는 드라이브 제어기(22)의 제어 중에 액츄에이터 암을 이동시키기 위해 이용될 수 있다. 데이터는 대개 플래터 표면의 알려진 위치(예, 상응하는 트랙의 알려진 포인트)에 있는 고정된 길이의 블록의 디스크 드라이브 플래터에 저장된다. 서보 정보는 또한 상응하는 액세스 동작 중에 판독 또는 기록 요소를 위치시키는 데 이용하기 위해 디스크 플래터의 표면에서 제공된다.
디스크 드라이브 동작 중에 플래터(26)은 미리 정해진 속도로 중앙 축에 대해 회전된다. 일반적으로 드라이브 제어기(22)는 외부 소스(예, 프로세서(12)의 운영 시스템(18) 등)로부터 판독 및 기록 요청을 수신하고 (판독 요청에 대한) 드라이브로부터 데이터 블록의 판독 또는 데이터 블록의 (기록 요청에 대한) 드라이브로의 기록에 의한 요청을 수행한다. 판독 및 기록 요청에 대해 드라이브 제어기(22)는 먼저 적절한 트랙을 검색하기 위해 상응하는 판독 및 기록 요소를 유도한다. 상기 요소가 트랙의 중앙에 위치한 후, 드라이브 제어기는 판독 또는 기록 요소 아래의 트랙 (또는 섹터의) 위치에 요구되는 블록을 위치시키는 충분한 양을 플래터가 회전시키도록 드라이브 제어기는 대기한다.
디스크 드라이브는 일반적으로 랜덤 액세스 저장 장치이다. 즉, 임의 시간에 단일 데이터 블록은 임의 활성화 플래터 표면의 섹터 또는 임의 블록의 위치에서 판독 또는 기록될 수 있다. 어드밴스드 포맷 스탠다드(Advanced Format Standard)로서 알려진 하나의 디스크 드라이브 표준에서 개별의 데이터 블록은 코일 모터(40)96 바이트 사이즈이다. 다른 표준에서는 다른 사이즈가 이용될 수 있다. 공통의 판독 기술에서, 디스크 드라이브에 저장되는 데이터 파일은 복수의 블록으로 분할될 수 있고, 각각은 적절한 블록 사이즈를 가진다. 예를 들어, 단을 파일
Figure 112015099431398-pct00004
Figure 112015099431398-pct00005
인 데이터 블록 세트로 분해될 수 있다. 다음으로 개별의 블록이 디스크 플래터의 가능한 블록 위치에 위치될 수 있다. 기록은 디스크의 파일에 연관되는 다양한 블록의 장소를 추적하며 유지된다. 많은 경우에, 플래터 표면의 가용한 블록 장소는 함께 그룹화 되지 않을 수 있다. 따라서 디스크 표면에 블록이 저장되는 장소는 서로 가까울 필요는 없다. 즉, 일부 경우에, 파일에 연관되는 블록은 적어도 하나의 플래터의 표면 사이에서 분배될 수 있다.
공통의 판독 시나리오에서, 드라이브 제어기(22)는 운영 시스템(18)으로부터 블록 요청을 수신할 수 있다. 블록
Figure 112015099431398-pct00006
에 대한 요청이 드라이브 제어기(22)에 도달하는 경우, 드라이브 제어기(22)는 먼저
Figure 112015099431398-pct00007
가 현재 드라이브 캐시(24)에 위치하는 지 여부를 확인한다.
Figure 112015099431398-pct00008
가 현재 드라이브 캐시(24)에 위치하는 경우, 드라이브 제어기(22)는
Figure 112015099431398-pct00009
가 드라이브 캐시(24)로부터 운영 시스템(18)으로 요청에 반응하여 전송되도록 유도한다. 이는 일반적인 디스크 판독 동작과 비교했을 때 즉각적인 전송으로 간주될 수 있고, 판독 프로세스를 상당히 가속시킬 수 있다.
Figure 112015099431398-pct00010
가 현재 드라이브 캐시(24)에 위치하지 않는 경우, 블록은 랜덤 블록 액세스 시간
Figure 112015099431398-pct00011
를 가지고 플래터(26)으로부터 판독될 수 있다. 블록 액세스 시간
Figure 112015099431398-pct00012
는 다음과 같이 표현될 수 있다.
Figure 112015099431398-pct00013
여기서
Figure 112015099431398-pct00014
은 회전 대기 시간이고,
Figure 112015099431398-pct00015
는 검색 시간이고,
Figure 112015099431398-pct00016
는 플래터의 각 속도와 헤드의 회전 이동 사이의 비율이고,
Figure 112015099431398-pct00017
는 제어기 프로세싱 및 블록 리드 아웃 시간이다. 이러한 접근법을 이용하면, 판독 프로세스는
Figure 112015099431398-pct00018
의 큐로서 모델링될 수 있고, 여기서
Figure 112015099431398-pct00019
Figure 112015099431398-pct00020
로 주어지는 평균 서비스 속력 및 캐시 사이즈의 함수이다. 파일과 연관되는 블록이 디스크 드라이브의 플래터를 건너서 분배되는 경우, 디스크 드라이브로부터의 파일과 연관되는 모든 블록을 개별적으로 판독하는 것은 매우 시간 소비적이다.
본 서에 기술되는 다양한 실시예에서, 네트워크 코딩은 더 빠르고 더 효율적인 방법으로 판독 동작이 수행될 수 있게 하는 방법으로 데이터를 디스크 드라이브의 플래터에 저장하는 데 이용된다. 이러한 판독 기술은 코드화 검색으로서 참조될 수 있다. 파일
Figure 112015099431398-pct00021
와 연관되는 로데이터 블록
Figure 112015099431398-pct00022
을 플래터 표면의 상응하는 위치에 저장하는 것 대신에, 파일과 연관되는 데이터의 네트워크 코드화 블록이 저장된다. 네트워크 코딩은 데이터 요소의 선형 결합을 생성함으로써 데이터를 엔코딩하는 기술이다. 이러한 선형 결합은 후에 본래의 데이터 요소를 추출하기 위해 "디코딩"될 수 있다. 디코딩 프로세스는 일반적으로 선형 기술을 이용하는 본래의 데이터 요소를 해결하기 위해 "자유도"로서 충분한 수의 선형 결합(및/또는 본래의 데이터 요소)가 사용하도록 요구한다.
네트워크 코딩의 대중적인 한 형식은 RLNC(random linear network coding)로서 알려져 있다. RLNC를 이용하면, 데이터 요소가 랜덤으로 생성되는 계수를 이용하여 선형으로 결합된다. 랜덤으로 생성되는 계수의 다른 세트가 동일한 데이터 요소의 다른 선형 결합을 생성하기 위해 이용되는 경우, 결과의 선형 결합은 일반적으로 다른 것과 선형으로 독립적(즉, 새로운 것임)이고, 이에 따라 각각은 디코딩에서 이용될 수 있는 자유도를 나타낸다.
코드화 저장을 위해 가능한 한 가지 기술에서, 파일
Figure 112015099431398-pct00023
Figure 112015099431398-pct00024
개의 동일한 사이즈의 "블록 윈도우"로 분리되거나 각각
Figure 112015099431398-pct00025
개의 데이터 블록을 포함하도록 생성된다.
Figure 112015099431398-pct00026
번째 블록 윈도우 파일은
Figure 112015099431398-pct00027
로서 참조될 수 있다. 블록 윈도우
Figure 112015099431398-pct00028
는 파일 블록 인덱스의 부분 집합을 포함할 수 있고 파일과 연관되는 다른 모든 블록 윈도우로부터 떨어져 나올 수 있다. 코드화 블록
Figure 112015099431398-pct00029
은 다음과 같이 블록 윈도우
Figure 112015099431398-pct00030
을 위해 생성될 수 있다.
Figure 112015099431398-pct00031
여기서
Figure 112016129513237-pct00032
는 랜덤 계수이고
Figure 112016129513237-pct00033
는 블록 윈도우
Figure 112016129513237-pct00034
과 연관되는 데이터 블록이다. 복수의 다른 코드 블록
Figure 112016129513237-pct00035
는 각각의 블록 윈도우
Figure 112016129513237-pct00036
로 생성될 수 있다. 계수
Figure 112016129513237-pct00037
Figure 112016129513237-pct00038
사이즈의 유한 필드
Figure 112016129513237-pct00039
로부터 나올 수 있고, 블록 윈도우
Figure 112016129513237-pct00040
와 연관되는 개별의 코드화 블록
Figure 112016129513237-pct00041
는 다른 높은 가능성 및 일부 확실한 경우에 선형 독립적이다. 각각의 코드화 블록
Figure 112016129513237-pct00042
는 이에 따라 상응하는 블록 윈도우 내의 모든 데이터 블록의 분리된 정보를 제공한다. 파일
Figure 112016129513237-pct00043
의 각각의 블록 윈도우와 연관되는 코드화 블록은 디스크 드라이브의 플래터에 저장될 수 있다. 각각의 블록 윈도우에서 생성되어 저장되는 코드화 블록
Figure 112016129513237-pct00044
의 수는 블록 윈도우의 모든 데이터 블록을 해결하기 위해 요구되는 최소한의 수이지만, 이 수보다 더 클 수는 없다. 각각의 코드화 블록을 생성하기 위해 이용되는 계수
Figure 112016129513237-pct00045
는 코드화 블록과 연관되는 디스크 표면에 저장될 수 있다.
다음으로 운영 시스템(18)이 디스크 드라이브(16)으로부터 파일
Figure 112016129513237-pct00046
의 판독을 원하는 경우, 모든 블록 윈도우를 리커버할 때까지 하나씩 디스크 드라이브(16)로부터 각각의 블록 윈도우를 판독할 수 있다. 각각의 블록 윈도우 당, 운영 시스템(18)은 블록 윈도우와 연계되는 새로운 코드화 블록 (또는 자유도)를 요청하는 요청을 드라이브 제어기(22)에게 발신할 수 있다. 각각의 판독 요청당 드라이브 제어기(22)는 코드화 블록과 연관되는 계수를 따라 하나의 코드화 블록을 검색할 수 있다. 운영 시스템(18)은 블록 윈도우의 데이터 블록을 디코딩하기 위해 충분한 수의 자유도가 검색될 때까지 새로운 코드화 블록의 요청을 계속해서 발신한다. 네트워크 코드화 데이터 블록을 디코딩하는 임의의 기술이 코드화 블록을 디코딩하기 위해 이용될 수 있다. 적어도 하나의 구현에서, 예를 들어 가우스 조단(Gauss-Jordan) 제거 또는 유사한 기술 등의 진보적인 디코딩 기술이 수신한 코드화 블록을 디코딩하기 위해 운영 시스템(18)에 의해 이용될 수 있다. 다른 기술이 대안으로 이용될 수 있다. 코드화 블록 (또는 자유도)를 검색하기 위해 드라이브 제어기(22)에 의해 이용되는 기술이 파일
Figure 112016129513237-pct00047
의 전체 검색 속도를 상당히 높힐 수 있다는 점이 더 자세히 후술된다.
드라이브 제어기(22)는 각각 저장되는 파일의 각각의 블록 윈도우에 연관하는 모든 코드화 블록의 플래터의 위치 기록을 가진다. 특정 파일의 특정 블록 윈도우와 연관되는 새로운 코드화 블록의 판독 요청이 수신되는 경우, 드라이브 제어기(22)는 플래터에 저장된 어떤 상응하는 코드화 블록이 디스크 드라이브(16)의 판독 헤드의 현재 위치와 가장 가까운지 결정한다. 다음으로 드라이브 제어기(22)는 상응하는 표면의 상응하는 트랙을 검색하고 해당 코드화 블록을 판독한다. 동일 파일의 동일 블록 윈도우에 연관되는 새로운 코드화 블록의 다음 판독 요청이 수신되는 경우, 드라이브 제어기(22)는 어떤 다른 상응하는 코드화 블록이 디스크 드라이브(16)의 판독 헤드의 현재 위치와 가장 가까운지 결정한다. 다음으로 동일한 과정이 각각의 새로운 요청 당 반복될 수 있다. 따라서, 일부 구현에서 드라이브 제어기(22)는 최근에 검색된 데이터를 추적하여 주어진 블록 윈도우와 연관되는 동일한 코드화 블록이 동일한 파일 판독 동작 동안 운영 시스템에 두 번 보내지지 않도록 할 수 있다(이는 동일한 코드화 블록을 두 번 판독하는 것이 디코딩의 사용을 위한 새로운 자유도를 제공하지 않기 때문이다). "가장 가까운" 코드화 블록이 각각의 판독 요청에서 이용되기 때문에, 상당한 양의 검색 및 대기 시간이 파일 판독 동작 동안 회피될 수 있다.
일부 구현에서, 드라이브 제어기(22)는 먼저 확인되는 블록 윈도우와 연관되는 새로운 코드화 블록이 플래터의 코드화 블록을 검색하기 전에 드라이브 캐시(24) 내에 저장되었는 지를 결정할 수 있다. 드라이브 캐시(24)의 확인되는 블록 윈도우와 연관되는 코드화 블록이 존재하고, 코드화 블록이 현재 파일 판독 동작 동안 운영 시스템(18)에게 아직 발신되지 않은 경우에, 코드화 블록은 판독 요청에 반응하여 드라이브 캐시(24)로부터 운영 시스템(18)으로 보내질 수 있다.
일반적인 시나리오에서, 운영 시스템(18)이 블록 윈도우
Figure 112015099431398-pct00048
의 자유도에 대한 요청을 발신하는 경우, 상응하는 디스크 드라이브의 판독 헤드 및 플래터는 다른 것들에 대해 물리적으로 랜덤한 배향에 있을 수 있다. 도 2는 이러한 상황을 도시하는 디스크 드라이브(30)의 상면도이다. 도시되는 바와 같이, 디스크 드라이브(30)은 방향(34)로 회전하는 플래터(32), 액츄에이터 암(38)의 말단에 연결되는 판독 요소(36), 및 디스크 제어기의 제어 중인 축에 관해 액츄에이터 암(38)을 피봇하는 코일 모터(40)을 포함한다. 판독 요청이 수신되는 경우, 판독 요소(36)은 플래터에 저장되는 다양한 코드화 블록에 관해 랜덤한 위치에 있을 수 있다. 드라이브 제어기는 다음으로 플래터의 다양한 코드화 블록 중 어느 것이 판독 요소(36)의 현재 위치와 가장 가까운 지 결정할 수 있다. 다른 실시예에서, "가장 가까운"이란 표현은 물리적으로 가장 가깝거나(즉, 코드화 블록과 판독 요소 사이의 거리가 가장 짧음) 또는 시간적으로 가장 가까운 것(즉, 블록과 판독 요소는 가장 빨리 이동할 수 있음)을 의미할 수 있다. 가장 가까운 블록을 찾기 위한 기술은 리스트의 각각의 블록으로 이동하기 위해 필요한 거리 또는 시간을 계산하는 단계 및 리스트로부터의 최소한의 요소를 검색하는 단계를 포함할 수 있다. 거리 또는 시간 계산은 각각의 블록의 물리적 위치 및 헤드의 현재 위치에 기반할 수 있다. 최적으로 윈도우의 모든 블록에 액세스하는 순서를 계산하기 위해, 공지된 TSP(Traveling Salesman Problem)의 해법 또는 근사적 해법이 이용될 수 있다. 보다 특정하게, 각각의 블록은 방향성 없게 가중된 그래프의 요소에 의해 고려될 수 있다. 다음으로 잠재적인 헤드 및 플래터의 이동은 이동 시간 또는 거리의 함수 가중치를 이용하여 그래프의 경로로서 모델링될 수 있다.
가장 가까운 코드화 블록
Figure 112015099431398-pct00049
이 확인된 후에, 드라이브 제어기는 (검색 과정으로 알려진) 판독 요소(36)가 코드화 블록에 연관되는 트랙(42)을 따라 중심을 잡을 때까지 액츄에이터 암(38)을 피봇하게 유도할 수 있다. 드라이브 제어기는 이러한 프로세스 동안 판독 요소(36)의 현재 위치를 추적하는 플래터(32)의 표면으로부터 판독된 서보 정보를 이용할 수 있다. 판독 요소(36)이 적적한 트랙(42)에 있는 경우, 드라이브 제어기는 플래터(32)가, 판독 요소(36)이 요구되는 코드화 블록
Figure 112015099431398-pct00050
위에 위치하는 포인트에 착수할 때까지 대기할 수 있다. 판독 요소가 트랙(42)에 도착하는 것과 요구되는 코드화 블록이 판독 요소(36)에 도달하는 것 사이의 시간 지연은 회전 대기로서 알려져 있다. 판독 요소(36)가 트랙(42)의 요구되는 코드화 블록에 도달하면, 드라이브 제어기는 플래터 표면으로부터 코드화 섹터 (및 상응하는 계수 정보)를 판독할 수 있다. 다음으로 이러한 프로세스는 각각의 판독되는 다른 코드화 블록에서 반복될 수 있다.
전술된 바와 같이, 많은 경우에, 블록 윈도우와 연관되는 코드화 블록은 적어도 하나의 플래터 표면에서 랜덤하게 퍼질 수 있다. 각각의 판독 요청이 도달하면, 디스크 제어기는 드라이브에 저장되는 다음의 "가장 가까운" 새로운 코드화 블록을 선택 및 검색할 수 있다. 식(1)과 동일한 형식을 이용하여,
Figure 112015099431398-pct00051
번째 코드화 블록 (또는
Figure 112015099431398-pct00052
번째 자유도)을 위한 랜덤 액세스 시간
Figure 112015099431398-pct00053
이 다음과 같이 표현될 수 있다.
Figure 112015099431398-pct00054
여기서
Figure 112015099431398-pct00055
Figure 112015099431398-pct00056
번째 코드화 블록의 회전 대기이고
Figure 112015099431398-pct00057
Figure 112015099431398-pct00058
번째 코드화 블록에 대한 검색 시간이다.
전술된 바와 같이, 판독 요청이 수신되는 경우, 드라이브 제어기는 어느 코드화 블록이 판독 요소와 가장 가까운지 결정할 수 있고, 다음으로 코드화 블록을 판독할 수 있다. 판독 요소를 이러한 블록의 시작 지점으로 이동시키기 위해 요구되는 시간은 각도에 모두 연관되고 액추에이터 암은 반드시 코드화되는 블록의 트랙 및 거리와 함께 배열해야 하고, 판독 요소는 다음으로 이러한 트랙을 따라 해당 코드화 블록의 시작 지점으로 이동한다. 하나의 가능한 접근법에서, (도 2에 도시되는) 파라미터
Figure 112015099431398-pct00059
는 플래터(32)가 관련 트랙(42)에서
Figure 112015099431398-pct00060
번째 코드화 블록
Figure 112015099431398-pct00061
을 판독하는 움직임의 전체 범위의 부분으로서 설명될 수 있다.
Figure 112015099431398-pct00062
Figure 112015099431398-pct00063
가 동일한 코드화 블록에서 인용되는 것으로 가정되고, 회전 대기 및 검색 시간 각각이 통계적으로 독립적인 경우, 블록 윈도우에 연관되는 제1 코드화 블록에 대해
Figure 112015099431398-pct00064
Figure 112015099431398-pct00065
, 액세스 시간
Figure 112015099431398-pct00066
은 다음과 같이 계산될 수 있다.
Figure 112015099431398-pct00067
Figure 112015099431398-pct00068
여기서 상기 min은 동일한 코딩 블록에 적용된다.
Figure 112015099431398-pct00069
Figure 112015099431398-pct00070
모두 고정된 수의 균일한 랜덤 변수에서 최소값이고, 이들의 PDF는 동일한 형식을 가진다.
Figure 112015099431398-pct00071
Figure 112015099431398-pct00072
의 예상되는 값은 다음과 같이 주어진다.
Figure 112015099431398-pct00073
따라서
Figure 112015099431398-pct00074
이 증가할수록, 랜덤 자유도에 액세스하는 디스크의 속도 또한 증가한다.
Figure 112015099431398-pct00075
이 무한대로 갈수록
Figure 112015099431398-pct00076
의 값은
Figure 112015099431398-pct00077
의 값으로 수렴하는 것을 유념해야 한다. 현대적인 하드 디스크 드라이브에서, 검색 시간 및 회전 대기는 전체 판독 시간의 약 3분의 2로 설명될 수 있다. 따라서, 실질적인 시스템에서, 설명되는 기술을 이용하면 상당한 속도의 이익이 가능하다. 도 3은 다른 w의 값에 따라
Figure 112015099431398-pct00078
과 함께
Figure 112015099431398-pct00079
이 어떻게 변하는 지를 보여주는 그래프이다.
전술된 바와 같이, 블록 윈도우와 연관되는 코드화 블록은 디스크 드라이브의 단일 플래터 표면 또는 다중 플래터 표면에 저장될 수 있다. 다중 플래터 표면이 이용되는 경우, 유사한 기술이 판독 요소의 현재 위치와 가장 가까운 코드화 블록을 확인하기 위해 이용될 수 있다. 즉, 코드화 블록은 동작의 액세스 시간을 최소화하는 다음 판독 동작을 위해 선택될 수 있다.
컨텐츠가
Figure 112015099431398-pct00080
블럭을 통해 코딩되는 경우, 모든
Figure 112015099431398-pct00081
블록은 디코딩되기 위해 상응하는 블록 윈도우에서 액세스될 필요가 있다. 일반적으로, 코드 검색 이득은 액세스되는 제1 자유도에서 가장 크고 다음의 자유도에서 줄어든다. 마지막 자유도에서, 코드화 검색 시스템의 액세스 시간은 코딩하지 않은 기법과 등가일 수 있다.
Figure 112015099431398-pct00082
의 비율은
Figure 112015099431398-pct00083
과 함께 줄어드는 속도 증가 이득을 측정하는 계량으로서 이용될 수 있다. 근사적으로, 파라미터
Figure 112015099431398-pct00084
은 식(7)에서
Figure 112015099431398-pct00085
로 대체할 수 있다. 도 4는 디스크 드라이브가 블록 윈도우의 자유도를 따라 이동하면서 어떻게
Figure 112015099431398-pct00086
이 변할 수 있는 지 보여주는 명시적인 도면이다.
검색 시간의 속도 향상은 블로킹 가능성을 줄여주는 것을 포함한 추가의 이점이 있을 수 있다. 특히, 디스크 드라이브를
Figure 112015099431398-pct00087
의 큐로서 모델링하는 경우, 코딩되지 않은 시스템에서
Figure 112015099431398-pct00088
에 비례하는 블로킹 확률을 가진다.
Figure 112015099431398-pct00089
(8)
여기서
Figure 112015099431398-pct00090
Figure 112015099431398-pct00091
는 각각 도착 및 서비스 속도에 대한
Figure 112015099431398-pct00092
번째의 모멘트이다. 제1 자유도에 대해 등가의 코딩되는 검색 블로킹 가능성
Figure 112015099431398-pct00093
Figure 112015099431398-pct00094
이 작은 경우에, 다음과 같이 비례한다.
Figure 112015099431398-pct00095
Figure 112015099431398-pct00096
하드 디스크 드라이브의 속도 증가 및 코드화 검색의 이용을 통해 가능해지는 블로킹 확률의 감소는 디스크 드라이브 내의 물리적 이동부에 대한 의존성을 감소시키는 경향이 있다. 다양한 실시예에서, 이러한 기술은 운영 시스템이 다중의 코드화 블록을 저장하고 충분한 자유도가 판독되는 경우 블록을 디코딩하도록 요청할 수 있다. 즉, 디스크 드라이브에 의해 본질적으로 수행된 일이 운영 시스템 또는 드라이브 제어기로 전달되고 빠른 RAM 또는 빠른 캐시를 각각 이용하여 수행될 수 있다. 코드화 검색의 이점은 요청이 불균일하 랜덤인 경우 가장 잘 나타난다. 요청되는 많은 구조가 존재하는 경우, 코드화 검색의 장점은 코드화 기록을 수행해야만 하는 단점보다 클 수 있다. 코드화 검색을 수행하기 위해 이용되는 블록 윈도우의 사이즈는 기술의 전체 장점에 영향을 줄 수 있다. 예를 들어, 블록 윈도우가 아주 작은 경우, 코드화 검색의 장점은 약해질 수 있다. 블록 윈도우가 아주 큰 경우, 디코딩 지연이 늘어날 수 있다. 특정 시스템에서 이용되는 가장 좋은 블록 윈도우의 사이즈는 저장 유닛의 사이즈, 파일 사이즈, 및 운영 시스템 타이밍 및 지연 보장 요건에 연관될 수 있다.
도 5,6, 및 7은 일실시예에 따라 디스크 드라이브에서 코드화 검색을 위한 명시적인 프로세스를 다양하게 도시하는 흐름도이다.
(도 5의 요소(52)로 나타내어지는) 직사각형 요소는 본 서에 "프로세싱 블록"으로 표시되고, 컴퓨터 소프트웨어 명령 또는 명령어의 그룹을 나타낼 수 있다. 도 5, 6 및 7의 흐름도는 본 서에 기술되는 디자인의 명시적인 일실시예를 나타내고 개요로 나타난 프로세스를 일반적으로 따르는 이러한 도면의 변형이 본 서에 기술되고 청구되는 개념, 시스템 및 테크닉의 범위 내에서 고려된다.
대안으로, 프로세싱 블록은 디지털 신호 프로세서 회로, ASIC(application specific integrated circuit), FPGA(field programmable gate array)와 같은 기능적 등가 회로에 의해 수행되는 동작을 표시한다. 일부 프로세싱 블록은 수동으로 수행되고, 다른 블록은 프로세서에 의해 수행된다. 흐름도는 특정 프로그래밍 언어의 신택스를 제공하지 않는다. 오히려, 흐름도는 회로의 집적 및/또는 특정 장치에서 요구되는 프로세싱을 수행하는 컴퓨터 프로그램의 생성을 위해 요구되는 일반적인 기술에 대한 정보를 설명한다. 루프의 시작 및 변수와 같은 많은 일반적인 프로그램 요소 및 임시 변수의 이용은 도시되지 않았음을 유념해야 한다. 본 서에 달리 기술되지 않는 한, 기술되는 특정 시퀀스는 오직 명시적 목적일 뿐이고 본 서에 청구 및/또는 기술되는 개념의 원리를 벗어나지 않은 채 변할 수 있다는 것은 당업자에 의해 이해될 것이다. 따라서, 달리 명시되지 않는 한, 아래에 기술되는 프로세스는 가능한 경우, 도 5, 6 및 7에 도시되는 시퀀스가 편리하고 바람직한 임의의 순서로 수행될 수 있음을 의미한다.
도 5는 일실시예에 따라 코드화 검색을 지원하는 방법으로 네트워크 코딩을 이용하여 디스크 드라이브에 데이터를 저장하는 방법(50)을 도시하는 흐름도이다. 방법(50)은 예를 들어, 운영 시스템, 디스크 드라이브 제어기, 또는 다른 프로세서 또는 데이터 자장 장치, 시스템, 또는 네트워크와 연관되는 제어기와 연결되어 구현될 수 있다. 일부 실시예에서 방법(50)과 연관되는 수행은 다중의 프로세서 및/또는 함께 운영되는 제어기를 이용하여 수행될 수 있다. 디스크 드라이브에 저장되는 파일이 먼저 수신되거나 확인될 수 있다(블록(52)). 파일은 각각이
Figure 112015099431398-pct00097
개의 데이터 블록을 가지는 복수의 동일한 폭의 블록 윈도우
Figure 112015099431398-pct00098
로 나뉠 수 있다(블록(54)). 각각의 블록 윈도우에서, 복수의 새로운 코드화 블록이 네트워크 코딩 기술을 이용하여 생성될 수 있다(블록(56, 58)). 각각의 코드화 블록은 랜덤 계수를 이용하여 구성되는 상응하는
Figure 112015099431398-pct00099
개의 데이터 블록의 선형 결합을 포함하여 코드화 블록이 다른 것과 선형으로 독립적일 수 있다. 일반적으로
Figure 112015099431398-pct00100
개 이상의 데이터 블록은 각각의 블록 윈도우에서 생성된다. 각각의 블록 윈도우에서 생성되는 코드화 블록은 다음으로 디스크 드라이브에 저장될 수 있다(블록(60)). 이런 프로세스는 본래 파일의 모든 블록 윈도우가 프로세싱되어 저장될 때까지 반복될 수 있다(블록(62, 64)). 코드화 검색을 지원하는 디스크 드라이브에 코드화 데이터를 기록하는 단계를 위한 다른 변형된 기술이 대안으로 이용될 수 있다. 예를 들어, 하나의 이러한 접근법에서, 파일은 블록 윈도우를 먼저 형성할 필요 없이
Figure 112015099431398-pct00101
개의 데이터 블록으로 분할될 수 있다.
Figure 112015099431398-pct00102
개의 데이터 블록은 다음으로 저장을 위한 코드화 블록을 생성하기 위해 이용될 수 있다.
도 6은 일실시예에 따라 코딩 검색을 이용하여 디스크 드라이브로부터 데이터 검색에 이용하기 위한 방법(70)을 도시하는 흐름도이다. 방법(70)은 예를 들어 운영 시스템, 디스크 드라이브 제어기, 또는 일부 다른 프로세서 또는 데이터 저장 장치, 시스템, 또는 네트워크와 연관되는 제어기와 연결되어 수행될 수 있다. 일부 실시예에서, 방법(50)과 연관되는 행동이 다중의 프로세서 및/또는 함께 동작하는 제어기를 이용하여 수행된다. 판독 요청은 먼저 복수의 네이티브 데이터 블록과 연관되는 새로운 코드의 데이터 블록 (또는 자유도)를 요청하는 판독 요청을 수신한다(블록(72)). 복수의 네이티브 데이터 블록은 예를 들어 데이터 파일의 특정 블록 윈도우 또는 일부 다른 네이티브 데이터 블록 그룹과 연관되는 복수의 블록을 포함할 수 있다. 디스크 드라이브의 판독 헤드의 현재 위치와 가장 가까운 복수의 네이티브 데이터 블록과 연관되는 새로운 코드화 데이터 블록이 다음으로 선택된다(블록(74)). 새로운 코드화 데이터 블록은 복수의 네이티브 데이터 블록과 연관된 것으로 알려진 이러한 코드화 블록 그룹으로부터 선택될 수 있다. 다음으로 디스크 드라이브는 판독 요소가 선택된 코드화 데이터 블록의 위치로 이동하게 하고 코드화 블록을 판독하도록 유도할 수 있다(블록(76)). 이러한 프로세스는 복수의 네이티브 데이터 블록과 연관되는 새로운 코드화 데이터 블록을 위해 수신되는 새로운 판독 요청 각각에서 반복될 수 있다. 일부 구현에서, 공통의 데이터 판독 프로세스(예, 특정 파일의 판독 동작) 동안 최근에 판독된 복수의 네이티브 데이터 블록과 연관되는 코드화 데이터 블록은 선택 프로세스 동안 무시되어 현재 요청에 반응하여 드라이브로부터 검색되는 코드화 데이터 블록이 이전에 검색된 코드화 블록과 선형적으로 독립일 수 있게 한다.
도 7은 일실시예에 따라 데이터 검색을 지원하는 디스크 드라이브로부터 데이터 검색에 이용하기 위한 방법(80)을 도시하는 흐름도이다. 방법(80)은 예를 들어, 데이터를 비휘발성 형식으로 저장하는 디스크 드라이브를 이용하는 컴퓨팅 시스템의 운영 시스템 또는 일부 다른 프로세서 또는 디스크 드라이브와 연관되는 제어기와 연관되어 수행될 수 있다. 네이티브 데이터 블록 그룹이 디스크 드라이브로부터 검색될 필요가 있는지 먼저 결정한다(블록(82)). 일부 구현에서 비록 데이터 블록의 다른 그룹이 대안으로 이용되더라고 네이티브 데이터 블록 그룹은 데이터 저장 장치에 보관되는 데이터 파일과 연관되는 블록 윈도우를 나타내 수 있다. 일부 실시예에서, 데이터 블록의 그룹 내의 오직 단일 데이터 블록만이 관심 있을 수가 있지만, 전체 블록이 검색되어 요구되는 블록에 대해 액세스되기 위해 디코딩될 수 있다. 판독 요청은 다음으로 디스크 드라이브에 보내져 판독되어야 할 데이터 블록과 연관되는 새로운 코드화 블록 (또는 자유도)를 요청한다(블록(84)). 요청에 반응하여 디스크 드라이브로부터 판독되는 코드화 블록이 디스크 드라이브로부터 이어 수신되고 메모리에 임시적으로 저장된다(블록(86)). 코드화 블록으로부터 네이티브 데이터 블록 그룹을 추출하기 위해 디스크 드라이브로부터 충분한 수의 새로운 코드화 블록(또는 자유도)이 검색되었는지 여부가 결정될 수 있다(블록(88)). 충분히 검색되지 않은 경우(블록(88-N)), 다른 판독 요청이 디스크 드라이브로 보내져서 데이터 블록 그룹과 연관되는 새로운 코드화 블록(블록(84)) 및 프로세스가 반복되게 할 수 있다. 이러한 프로세스는 디코딩이 가능하게 충분한 수의 새로운 코드화 블록이 검색될 때까지 이어질 수 있다(블록(88-Y)). 이러한 점에서 새로운 코드화 블록은 디코딩될 수 있다(블록(90)). 일부 구현에서, 이는 모든 검색되는 코드화 블록을 이용하는 완전한 디코딩 동작을 포함할 수 있다. 진보적인 디코딩이 이용되는 구현에서, 이는 디코딩 프로세스의 마지막 단계의 수행을 포함할 수 있다.
비록 마그네틱 하드 디스크 드라이브의 상황에서 전술되었지만, 본 서에 기술되는 많은 특징이 예를 들어 다른 디스크 기반의 서비스(예, CDROMs, DVDs, BluRayㄾ discs 등)를 포함하는 적어도 하나의 이동부를 포함하는 다른 데이터 저장 장치와 연결되어 이용될 수 있음이 이해되어야 한다.
본 발명의 명시적인 실시예를 기술하였기 때문에, 이러한 개념을 통합하는 다른 실시예 또한 이용될 수 있다는 것이 당업자에게 명확할 것이다. 본 서에 포함되는 실시예는 기술되는 실시예에 국한되어서는 안되고 오직 청구항의 범위와 개념에 대해서만 정해질 것이다. 본 서에 인용되는 모든 공지와 참조는 그 전체가 참조로서 본 서에 명확하게 병합된다.

Claims (26)

  1. 데이터를 디스크 기반의 데이터 저장 장치에 저장하는 방법에 있어서,
    상기 디스크 기반의 데이터 저장 장치에 저장되는 복수의 데이터 블록을 확인하는 단계 - 상기 복수의 데이터 블록은 N개의 데이터 블록을 가짐 -;
    상기 복수의 데이터 블록을 이용하여 복수의 네트워크 코드화 블록을 생성하는 단계 - 각각의 네트워크 코드화 블록은 다른 네트워크 코드화 블록으로부터 랜덤 계수의 다른 세트를 이용하여 생성되는 상기 복수의 데이터 블록의 선형 결합을 포함함 -; 및
    상응하는 랜덤 계수를 이용하여 상기 디스크 기반의 데이터 저장 장치의 개별 블록 위치에 상기 네트워크 코드화 블록을 기록하는 단계
    를 포함하고,
    상기 디스크 기반의 데이터 저장 장치에 저장되는 복수의 데이터 블록을 확인하는 단계는,
    상기 디스크 기반의 데이터 저장 장치에 저장되는 파일을 획득하는 단계;
    상기 파일을, 각각 N 개의 데이터 블록을 포함하는 복수의 동일 사이즈의 블록 윈도우로 분할하는 단계; 및
    상기 복수의 동일 사이즈의 블록 윈도우 중 하나를 선택하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 디스크 기반의 데이터 저장 장치는 자기 디스크 드라이브, 자기 및 고체 상태 디스크 드라이브의 하이브리드, 및 광학 디스크 드라이브 중 적어도 하나를 포함하는 방법.
  3. 제1항에 있어서,
    상기 복수의 동일 사이즈의 블록 윈도우에서 각각의 블록 당 생성 및 기록을 반복하는 단계를 더 포함하는 방법.
  4. 디스크 드라이브에 있어서,
    드라이브 제어기; 및
    상기 드라이브 제어기에 의한 제어 중인 디지털 데이터의 저장을 위한 적어도 하나의 플래터
    를 포함하고,
    상기 드라이브 제어기는
    상기 적어도 하나의 플래터로부터 복수의 네이티브 데이터 블록과 연관되는 새로운 코드화 블록의 검색을 요청하는 판독 요청을 수신;
    상기 판독 요청에 반응하여, 상기 디스크 드라이브의 판독 변환기의 현재 위치와 가장 가까운 적어도 하나의 플래터에 보관되는 상기 복수의 네이티브 데이터 블록과 연관되는 새로운 코드화 블록을 확인; 및
    상기 적어도 하나의 플래터로부터 확인되는 상기 새로운 코드화 블록을 판독
    하도록 구성되는 디스크 드라이브.
  5. 제4항에 있어서,
    상기 적어도 하나의 플래터로부터 확인되는 상기 새로운 코드화 블록은 선형 결합을 생성하도록 이용되는 계수 리스트와 상기 복수의 네이티브 데이터 블록의 선형 결합을 포함하는 디스크 드라이브.
  6. 제5항에 있어서,
    상기 드라이브 제어기는
    복수의 네이티브 데이터 블록과 연관되는 새로운 코드화 블록의 검색을 요청하는 판독 요청을 수신;
    상기 판독 요청에 반응하여, 상기 디스크 드라이브의 판독 변환기의 현재 위치와 가장 가까운 상기 디스크 드라이브에 저장되는 상기 복수의 네이티브 데이터 블록과 연관되는 새로운 코드화 블록을 확인; 및
    상기 판독 변환기를 이용하여 상기 확인되는 상기 새로운 코드화 블록을 판독
    하도록 더 구성되는 디스크 드라이브.
  7. 제6항에 있어서,
    상기 드라이브 제어기는 액세스할 수 있는 최소한의 시간을 이용하는 저장된 코드화 블록, 및 상기 판독 변환기와 물리적으로 가장 가까운 저장된 코드화 블록 중 적어도 하나를 선택함으로써 상기 판독 변환기의 상기 현재 위치와 가장 가까운 상기 새로운 코드화 블록을 확인하도록 구성되는 디스크 드라이브.
  8. 제6항에 있어서,
    상기 드라이브 제어기는 상기 판독 변환기와 물리적으로 가장 가까운 저장된 코드화 블록을 선택함으로써 상기 판독 변환기의 상기 현재 위치와 가장 가까운 상기 새로운 코드화 블록을 확인하도록 구성되는 디스크 드라이브.
  9. 제6항에 있어서,
    상기 드라이브 제어기는 상기 판독 변환기의 상기 현재 위치와 가장 가까운 새로운 코드화 블록을 확인하는 경우, 최근에 검색된 상기 복수의 네이티브 데이터 블록과 연관되는 코드화 블록을 무시하도록 구성되는 디스크 드라이브.

  10. 삭제
  11. 삭제
  12. 삭제
  13. 삭제
  14. 삭제
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
  26. 삭제
KR1020157029539A 2013-03-15 2014-03-12 데이터 저장 장치의 액세스 시간을 코드화 검색을 이용하여 줄이는 저장 방법 및 장치 KR101777032B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201361788746P 2013-03-15 2013-03-15
US61/788,746 2013-03-15
US13/965,645 US9019643B2 (en) 2013-03-15 2013-08-13 Method and apparatus to reduce access time in a data storage device using coded seeking
US13/965,645 2013-08-13
PCT/US2014/024368 WO2014150837A1 (en) 2013-03-15 2014-03-12 Method and apparatus to reduce access time in a data storage device using coded seeking

Publications (2)

Publication Number Publication Date
KR20150129856A KR20150129856A (ko) 2015-11-20
KR101777032B1 true KR101777032B1 (ko) 2017-09-08

Family

ID=51526065

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157029539A KR101777032B1 (ko) 2013-03-15 2014-03-12 데이터 저장 장치의 액세스 시간을 코드화 검색을 이용하여 줄이는 저장 방법 및 장치

Country Status (7)

Country Link
US (2) US9019643B2 (ko)
EP (1) EP2972751B1 (ko)
JP (1) JP6106327B2 (ko)
KR (1) KR101777032B1 (ko)
CN (1) CN105144075B (ko)
PL (1) PL2972751T3 (ko)
WO (1) WO2014150837A1 (ko)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
ES2742286T3 (es) 2010-03-25 2020-02-13 Massachusetts Inst Technology Codificación de red segura para transmisión por secuencias de vídeo, inalámbrica de multirresolución
US10530574B2 (en) 2010-03-25 2020-01-07 Massachusetts Institute Of Technology Secure network coding for multi-description wireless transmission
US9294113B2 (en) 2011-07-05 2016-03-22 Massachusetts Institute Of Technology Energy-efficient time-stampless adaptive nonuniform sampling
US9544126B2 (en) 2011-10-31 2017-01-10 Massachusetts Institute Of Technology Joint use of multi-packet reception and network coding for performance improvement
WO2013067488A1 (en) 2011-11-05 2013-05-10 Massachusetts Institute Of Technology Method and apparatus for efficient transmission of information to multiple nodes
US8780693B2 (en) 2011-11-08 2014-07-15 Massachusetts Institute Of Technology Coding approach for a robust and flexible communication protocol
US9537759B2 (en) 2012-01-31 2017-01-03 Massachusetts Institute Of Technology Multi-path data transfer using network coding
US9160687B2 (en) 2012-02-15 2015-10-13 Massachusetts Institute Of Technology Method and apparatus for performing finite memory network coding in an arbitrary network
US9369255B2 (en) 2012-10-18 2016-06-14 Massachusetts Institute Of Technology Method and apparatus for reducing feedback and enhancing message dissemination efficiency in a multicast network
US10311243B2 (en) 2013-03-14 2019-06-04 Massachusetts Institute Of Technology Method and apparatus for secure communication
US9607003B2 (en) 2013-03-14 2017-03-28 Massachusetts Institute Of Technology Network coded storage with multi-resolution codes
US9369541B2 (en) 2013-03-14 2016-06-14 Massachusetts Institute Of Technology Method and apparatus for implementing distributed content caching in a content delivery network
US9019643B2 (en) 2013-03-15 2015-04-28 Massachusetts Institute Of Technology Method and apparatus to reduce access time in a data storage device using coded seeking
US9185529B2 (en) 2013-03-15 2015-11-10 Massachusetts Institute Of Technology Wireless reliability architecture and methods using network coding
ES2926238T3 (es) 2017-03-29 2022-10-24 Massachusetts Inst Technology Sistema y técnica para la generación de paquetes basados en codificación de red de ventana deslizante
ES2950133T3 (es) 2018-05-16 2023-10-05 Code On Tech Inc Aparato de codificación multitrayecto y técnicas relacionadas
US11563644B2 (en) 2019-01-04 2023-01-24 GoTenna, Inc. Method and apparatus for modeling mobility and dynamic connectivity on a stationary wireless testbed
US10985951B2 (en) 2019-03-15 2021-04-20 The Research Foundation for the State University Integrating Volterra series model and deep neural networks to equalize nonlinear power amplifiers
US11526375B2 (en) 2019-06-17 2022-12-13 Bank Of America Corporation Systems and methods for pre-executing idiosyncratic computation through the application of algorithmic prediction of user behavior patterns

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090210640A1 (en) * 2008-02-14 2009-08-20 Camden John Davis Methods and systems for improving read performance in data de-duplication storage

Family Cites Families (76)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5577056A (en) 1995-02-24 1996-11-19 Hughes Aircraft Co. Method and apparatus for adjusting the postamble false detection probability threshold for a burst transmission
US6359923B1 (en) 1997-12-18 2002-03-19 At&T Wireless Services, Inc. Highly bandwidth efficient communications
US6128773A (en) 1997-10-01 2000-10-03 Hewlett-Packard Company Automatically measuring software complexity
US20080043675A1 (en) 1998-05-29 2008-02-21 Research In Motion Limited System and Method for Redirecting Data to a Wireless Device Over a Plurality of Communication Paths
WO2001054293A1 (en) 2000-01-17 2001-07-26 Samsung Electronics Co., Ltd Apparatus and method for allocating channel using ovsf code for uplink synchronous transmission scheme in a w-cdma communication system
US7432935B2 (en) 2002-11-19 2008-10-07 Mental Images Gmbh Image synthesis methods and systems for generating sample points in a graphics scene
US20110238855A1 (en) 2000-09-25 2011-09-29 Yevgeny Korsunsky Processing data flows with a data flow processor
GB2367459A (en) 2000-09-28 2002-04-03 Roke Manor Research Method of compressing data packets
CN1262972C (zh) 2000-09-28 2006-07-05 罗克马诺尔研究有限公司 改进的霍夫曼数据压缩方法
US7047169B2 (en) 2001-01-18 2006-05-16 The Board Of Trustees Of The University Of Illinois Method for optimizing a solution set
US20030028719A1 (en) 2001-08-06 2003-02-06 Rege Satish L. Disc drives divided into multiple logical containers
US7095343B2 (en) 2001-10-09 2006-08-22 Trustees Of Princeton University code compression algorithms and architectures for embedded systems
US7502317B2 (en) 2002-05-17 2009-03-10 Alcatel-Lucent Usa Inc. Method for differentiating services and users in communication networks
US7283564B2 (en) 2002-06-26 2007-10-16 Standard Microsystems Corp. Communication system and method for sending asynchronous data and/or isochronous streaming data across a synchronous network within a frame segment using a coding violation to signify at least the beginning of a data transfer
US7164691B2 (en) 2002-06-26 2007-01-16 Standard Microsystems Corporation Communication system and method for sending isochronous streaming data across a synchronous network within a frame segment using a coding violation to signify invalid or empty bytes within the frame segment
US20040203752A1 (en) 2002-11-18 2004-10-14 Toshiba America Information Systems, Inc. Mobility communications system
US7574518B2 (en) 2003-06-23 2009-08-11 Microsoft Corporation System and method for computing low complexity algebraic network codes for a multicast network
JP2007502470A (ja) * 2003-08-14 2007-02-08 コンペレント・テクノロジーズ 仮想ディスク・ドライブのシステムおよび方法
US7773506B2 (en) 2003-10-14 2010-08-10 Qualcomm Incorporated Method and apparatus for data communications over multiple channels
US7349440B1 (en) 2003-10-15 2008-03-25 Microsoft Corporation System and method for broadcasting information over a network
US7408938B1 (en) 2003-10-15 2008-08-05 Microsoft Coporation System and method for efficient broadcast of information over a network
US7706365B2 (en) 2003-11-25 2010-04-27 California Institute Of Technology Randomized distributed network coding
US7225382B2 (en) 2004-05-04 2007-05-29 Telefonakiebolaget Lm Ericsson (Publ) Incremental redundancy operation in a wireless communication network
US7756051B2 (en) * 2004-07-02 2010-07-13 Microsoft Corporation Content distribution using network coding
EP1638239A1 (en) 2004-09-20 2006-03-22 Alcatel Extended repeat request scheme for mobile communication networks
US8102837B2 (en) 2004-12-30 2012-01-24 Massachusetts Institute Of Technology Network coding approach to rapid information dissemination
US7414978B2 (en) 2004-12-30 2008-08-19 Massachusetts Institute Of Technology Minimum-cost routing with network coding
US20060224760A1 (en) 2005-03-15 2006-10-05 1000 Oaks Hu Lian Technology Development (Beijing) Co., Ltd. Method and system for providing streaming content in a peer-to-peer network with network coding
US7529198B2 (en) 2005-04-07 2009-05-05 Microsoft Corporation Scalable overlay network
US7599873B2 (en) 2005-07-19 2009-10-06 Etf Labs, Llc System and method for ETF investing
EP1780924A1 (en) 2005-10-31 2007-05-02 Siemens Aktiengesellschaft Method to determine the number of data streams to be used in a MIMO system
FR2893798B1 (fr) 2005-11-21 2008-01-04 Alcatel Sa Dispositif et procede de generation de rafales composites a preservation de priorite, pour un equipement d'un reseau de communication a commutation de rafales
DE602005021807D1 (de) 2005-12-22 2010-07-22 Microsoft Corp Optimierungen für Netzwerkkodierung und Netzwerkdekodierung
US7664198B2 (en) 2006-03-21 2010-02-16 Kyocera Corporation System and method for broadcasting data over a wireless network using rateless codes
US8040836B2 (en) 2006-05-26 2011-10-18 Microsoft Corporation Local network coding for wireless networks
US8233558B2 (en) 2006-05-31 2012-07-31 Cornell University Methods and systems for space-time coding for distributed cooperative communicaton
CN101490999A (zh) 2006-07-13 2009-07-22 杜比实验室特许公司 表示意在用于人感知的刺激的材料与编解码无关的加密
US7821980B2 (en) 2006-08-03 2010-10-26 Nokia Corporation Variable rate soft information forwarding
US7843831B2 (en) 2006-08-22 2010-11-30 Embarq Holdings Company Llc System and method for routing data on a packet network
US8027284B2 (en) 2006-11-27 2011-09-27 Ntt Docomo, Inc. Method and apparatus for reliable multicasting in wireless relay networks
EP2098005B1 (en) 2006-11-29 2013-05-29 Telefonaktiebolaget LM Ericsson (publ) Reliable multicast with linearly independent data packet coding
US7876677B2 (en) 2007-05-22 2011-01-25 Apple Inc. Transmission control protocol queue sorting
US7945842B2 (en) 2007-06-19 2011-05-17 International Business Machines Corporation Method and apparatus for rateless source coding with/without decoder side information
US7912003B2 (en) 2007-06-27 2011-03-22 Microsoft Corporation Multipath forwarding algorithms using network coding
US7873878B2 (en) * 2007-09-24 2011-01-18 International Business Machines Corporation Data integrity validation in storage systems
US8705345B2 (en) 2007-11-26 2014-04-22 Iowa State University Research Foundation, Inc. Network protection using network coding
US8260952B2 (en) 2008-01-31 2012-09-04 Microsoft Corporation Multi-rate peer-assisted data streaming
US7916665B2 (en) 2008-03-18 2011-03-29 Canon Kabushiki Kaisha Method and device for building of a network coding scheme for data transmission, corresponding computer program product and storage means
US20080259796A1 (en) 2008-04-17 2008-10-23 Glen Patrick Abousleman Method and apparatus for network-adaptive video coding
US8787250B2 (en) 2008-05-15 2014-07-22 Telsima Corporation Systems and methods for distributed data routing in a wireless network
US8204086B2 (en) 2008-05-19 2012-06-19 Microsoft Corporation Natural network coding for multi-hop wireless network
US8068426B2 (en) 2008-05-29 2011-11-29 Massachusetts Institute Of Technology Feedback-based online network coding
US8509288B2 (en) 2008-06-04 2013-08-13 Polytechnic Institute Of New York University Spatial multiplexing gain for a distributed cooperative communications system using randomized coding
US8130228B2 (en) 2008-06-13 2012-03-06 International Business Machines Corporation System and method for processing low density parity check codes using a deterministic caching apparatus
US8527848B2 (en) 2008-06-16 2013-09-03 Lg Electronics Inc. Cooperative symbol level network coding in multi-channel wireless networks
US8279781B2 (en) 2008-08-28 2012-10-02 Massachusetts Institute Of Technology Random linear network coding for time division duplexing
US8504504B2 (en) 2008-09-26 2013-08-06 Oracle America, Inc. System and method for distributed denial of service identification and prevention
KR100970388B1 (ko) 2008-10-31 2010-07-15 한국전자통신연구원 네트워크 흐름기반 스케일러블 비디오 코딩 적응 장치 및 그 방법
US8130776B1 (en) 2009-08-28 2012-03-06 Massachusetts Institute Of Technology Method and apparatus providing network coding based flow control
EP2486696B1 (en) 2009-10-06 2014-04-02 Thomson Licensing A method and apparatus for hop-by-hop reliable multicast in wireless networks
CN102907169B (zh) 2009-10-22 2015-11-25 交互数字专利控股公司 用于采用物理层网络编码的双向中继方案的方法和装置
ES2742286T3 (es) 2010-03-25 2020-02-13 Massachusetts Inst Technology Codificación de red segura para transmisión por secuencias de vídeo, inalámbrica de multirresolución
US8014097B1 (en) * 2010-05-07 2011-09-06 Hitachi Global Storage Technologies Netherlands B.V. Disk drive with adaptive counting of writes to the data tracks for minimizing the effect of adjacent track encroachment
US8599934B2 (en) 2010-09-08 2013-12-03 Cisco Technology, Inc. System and method for skip coding during video conferencing in a network environment
US8482441B2 (en) 2011-06-03 2013-07-09 Massachusetts Institute Of Technology Method and apparatus to perform functional compression
US9294113B2 (en) 2011-07-05 2016-03-22 Massachusetts Institute Of Technology Energy-efficient time-stampless adaptive nonuniform sampling
US9544126B2 (en) 2011-10-31 2017-01-10 Massachusetts Institute Of Technology Joint use of multi-packet reception and network coding for performance improvement
WO2013067488A1 (en) 2011-11-05 2013-05-10 Massachusetts Institute Of Technology Method and apparatus for efficient transmission of information to multiple nodes
US8780693B2 (en) 2011-11-08 2014-07-15 Massachusetts Institute Of Technology Coding approach for a robust and flexible communication protocol
US9537759B2 (en) 2012-01-31 2017-01-03 Massachusetts Institute Of Technology Multi-path data transfer using network coding
US9160687B2 (en) 2012-02-15 2015-10-13 Massachusetts Institute Of Technology Method and apparatus for performing finite memory network coding in an arbitrary network
US9607003B2 (en) 2013-03-14 2017-03-28 Massachusetts Institute Of Technology Network coded storage with multi-resolution codes
US10311243B2 (en) 2013-03-14 2019-06-04 Massachusetts Institute Of Technology Method and apparatus for secure communication
US9369541B2 (en) 2013-03-14 2016-06-14 Massachusetts Institute Of Technology Method and apparatus for implementing distributed content caching in a content delivery network
US9019643B2 (en) 2013-03-15 2015-04-28 Massachusetts Institute Of Technology Method and apparatus to reduce access time in a data storage device using coded seeking
US9185529B2 (en) 2013-03-15 2015-11-10 Massachusetts Institute Of Technology Wireless reliability architecture and methods using network coding

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090210640A1 (en) * 2008-02-14 2009-08-20 Camden John Davis Methods and systems for improving read performance in data de-duplication storage

Also Published As

Publication number Publication date
CN105144075A (zh) 2015-12-09
EP2972751B1 (en) 2018-11-28
US9019643B2 (en) 2015-04-28
WO2014150837A1 (en) 2014-09-25
JP6106327B2 (ja) 2017-03-29
US20140268398A1 (en) 2014-09-18
EP2972751A4 (en) 2016-11-16
PL2972751T3 (pl) 2019-04-30
KR20150129856A (ko) 2015-11-20
JP2016519354A (ja) 2016-06-30
US20150348584A1 (en) 2015-12-03
US9361936B2 (en) 2016-06-07
CN105144075B (zh) 2018-09-25
EP2972751A1 (en) 2016-01-20

Similar Documents

Publication Publication Date Title
KR101777032B1 (ko) 데이터 저장 장치의 액세스 시간을 코드화 검색을 이용하여 줄이는 저장 방법 및 장치
US6272565B1 (en) Method, system, and program for reordering a queue of input/output (I/O) commands into buckets defining ranges of consecutive sector numbers in a storage medium and performing iterations of a selection routine to select and I/O command to execute
US9754628B2 (en) Reducing total seek time for determining an access sequence of data stored on a tape medium
US6839802B2 (en) Method, system, and program for writing files to zone formatted storage media to improve data transfer rates
US9921774B2 (en) Data storage management in a memory device
US6789163B2 (en) Optimizing data transfer performance through partial write command purging in a disc drive
US10614852B2 (en) Data-center drive with split-actuator that increases read/write performance via data striping
US6732292B2 (en) Adaptive bi-directional write skip masks in a data storage device
US7225293B2 (en) Method, system, and program for executing input/output requests
TW201407968A (zh) 具有保留區段再處理的資料處理系統
US20160260458A1 (en) Apparatus and method for dynamic multiple actuator drive data access
US9685179B2 (en) Tape device and controller thereof
US10418053B1 (en) Disk-drive with efficient command-reordering
US6788489B1 (en) Employing off-track capability in data access operations in a direct access storage device
US10657995B2 (en) Magnetic disk device and method
US8055840B2 (en) Storage device including a controller for rearranging writing commands
US10102145B1 (en) Out of order LBA processing
US9946599B1 (en) Systems and methods for enhanced data access to a hard disk drive with caching
US11620089B2 (en) Non-volatile storage of high resolution tape directory
US20160299686A1 (en) Disk device and controlling method of disk device
JP2010287128A (ja) コントローラ、記憶媒体、及び情報制御方法
US10540110B2 (en) Multi-channel data storage for accelerated single-channel read throughput
US20230305746A1 (en) Efficient scheduling of data storage disc input/output

Legal Events

Date Code Title Description
A201 Request for examination
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant