KR101777032B1 - 데이터 저장 장치의 액세스 시간을 코드화 검색을 이용하여 줄이는 저장 방법 및 장치 - Google Patents
데이터 저장 장치의 액세스 시간을 코드화 검색을 이용하여 줄이는 저장 방법 및 장치 Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11B—INFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
- G11B20/00—Signal processing not specific to the method of recording or reproducing; Circuits therefor
- G11B20/10—Digital recording or reproducing
- G11B20/10009—Improvement or modification of read or write signals
- G11B20/10481—Improvement or modification of read or write signals optimisation methods
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11B—INFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
- G11B20/00—Signal processing not specific to the method of recording or reproducing; Circuits therefor
- G11B20/10—Digital recording or reproducing
- G11B20/12—Formatting, e.g. arrangement of data block or words on the record carriers
- G11B20/1217—Formatting, e.g. arrangement of data block or words on the record carriers on discs
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11B—INFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
- G11B20/00—Signal processing not specific to the method of recording or reproducing; Circuits therefor
- G11B20/10—Digital recording or reproducing
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11B—INFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
- G11B27/00—Editing; Indexing; Addressing; Timing or synchronising; Monitoring; Measuring tape travel
- G11B27/10—Indexing; Addressing; Timing or synchronising; Measuring tape travel
- G11B27/102—Programmed access in sequence to addressed parts of tracks of operating record carriers
- G11B27/105—Programmed access in sequence to addressed parts of tracks of operating record carriers of operating discs
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11B—INFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
- G11B20/00—Signal processing not specific to the method of recording or reproducing; Circuits therefor
- G11B20/10—Digital recording or reproducing
- G11B2020/10916—Seeking 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
본 서에 기술되는 주제는 일반적으로 데이터 저장에 관련되고, 보다 특정하게는 코딩을 이용하여 데이터 저장 장치의 데이터 액세스 속도를 높이는 테크닉 및 시스템에 관련한다.
오랜 시간 동안 하드 디스크 드라이브는 주요한 데이터 저장 네트워크였다. 지난 어플리케이션 프로그램(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의 다른 값을 위해 코드화 블록을 생성하기 위해 이용되는 복수의 네이티브 데이터 블록 과 함께 변하는 것을 도시하는 명시적인 그래프이다.
도 4는 일실시예에 따라 디스크 드라이브 구현 코드화 검색이 블록 윈도우의 자유도를 따라 이동하면서 가 변하는 것을 도시하는 명시적인 그래프이다.
도 5는 일실시예에 따라 코드화 검색을 지원하는 방법으로 네트워크 코딩을 이용하여 디스크 드라이브에 데이터를 저장하는 방법을 도시하는 흐름도이다.
도 6은 일실시예에 따라 코딩 검색을 이용하여 디스크 드라이브로부터 데이터 검색에 이용하기 위한 방법을 도시하는 흐름도이다.
도 7은 일실시예에 따라 데이터 검색을 지원하는 디스크 드라이브로부터 데이터 검색에 이용하기 위한 방법을 도시하는 흐름도이다.
도 1은 본 서에 기술되는 특징을 통합할 수 있는 명시적인 컴퓨팅 시스템을 도시한다.
도 2는 본 서에 기술되는 특징을 통합할 수 있는 명시적인 디스크 드라이브의 상면도이다.
도 3은 일실시예에 따라 코드화 블록(E[T 1 ])의 데이터 액세스 시간의 예상 값이 w의 다른 값을 위해 코드화 블록을 생성하기 위해 이용되는 복수의 네이티브 데이터 블록 과 함께 변하는 것을 도시하는 명시적인 그래프이다.
도 4는 일실시예에 따라 디스크 드라이브 구현 코드화 검색이 블록 윈도우의 자유도를 따라 이동하면서 가 변하는 것을 도시하는 명시적인 그래프이다.
도 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)는 일반적으로 임의의 주어진 시간에서 최대 블록을 저장할 수 있다.
디스크 드라이브 내의 각각의 활성화 플래터는 일반적으로 하나의 판독 요소 및 하나의 기록 요소를 연관지어 가지고 있다. 일부 경우에, 단일 요소는 플래터 표면의 판독 및 기록을 수행하기 위해 이용될 수 있지만, (동일한 판독/기록 헤드의 부분일 수 있지만) 일반적으로 분리된 판독 및 기록 요소가 제공된다. 판독 및 기록 요소는 대개 이동식 액츄에이터 암의 말단에 연결되어 이들이 상응하는 플래터 표면에 대해 제어 가능하게 위치될 수 있게 한다. 보이스 코일 모터 또는 다른 타입의 모터는 드라이브 제어기(22)의 제어 중에 액츄에이터 암을 이동시키기 위해 이용될 수 있다. 데이터는 대개 플래터 표면의 알려진 위치(예, 상응하는 트랙의 알려진 포인트)에 있는 고정된 길이의 블록의 디스크 드라이브 플래터에 저장된다. 서보 정보는 또한 상응하는 액세스 동작 중에 판독 또는 기록 요소를 위치시키는 데 이용하기 위해 디스크 플래터의 표면에서 제공된다.
디스크 드라이브 동작 중에 플래터(26)은 미리 정해진 속도로 중앙 축에 대해 회전된다. 일반적으로 드라이브 제어기(22)는 외부 소스(예, 프로세서(12)의 운영 시스템(18) 등)로부터 판독 및 기록 요청을 수신하고 (판독 요청에 대한) 드라이브로부터 데이터 블록의 판독 또는 데이터 블록의 (기록 요청에 대한) 드라이브로의 기록에 의한 요청을 수행한다. 판독 및 기록 요청에 대해 드라이브 제어기(22)는 먼저 적절한 트랙을 검색하기 위해 상응하는 판독 및 기록 요소를 유도한다. 상기 요소가 트랙의 중앙에 위치한 후, 드라이브 제어기는 판독 또는 기록 요소 아래의 트랙 (또는 섹터의) 위치에 요구되는 블록을 위치시키는 충분한 양을 플래터가 회전시키도록 드라이브 제어기는 대기한다.
디스크 드라이브는 일반적으로 랜덤 액세스 저장 장치이다. 즉, 임의 시간에 단일 데이터 블록은 임의 활성화 플래터 표면의 섹터 또는 임의 블록의 위치에서 판독 또는 기록될 수 있다. 어드밴스드 포맷 스탠다드(Advanced Format Standard)로서 알려진 하나의 디스크 드라이브 표준에서 개별의 데이터 블록은 코일 모터(40)96 바이트 사이즈이다. 다른 표준에서는 다른 사이즈가 이용될 수 있다. 공통의 판독 기술에서, 디스크 드라이브에 저장되는 데이터 파일은 복수의 블록으로 분할될 수 있고, 각각은 적절한 블록 사이즈를 가진다. 예를 들어, 단을 파일는 인 데이터 블록 세트로 분해될 수 있다. 다음으로 개별의 블록이 디스크 플래터의 가능한 블록 위치에 위치될 수 있다. 기록은 디스크의 파일에 연관되는 다양한 블록의 장소를 추적하며 유지된다. 많은 경우에, 플래터 표면의 가용한 블록 장소는 함께 그룹화 되지 않을 수 있다. 따라서 디스크 표면에 블록이 저장되는 장소는 서로 가까울 필요는 없다. 즉, 일부 경우에, 파일에 연관되는 블록은 적어도 하나의 플래터의 표면 사이에서 분배될 수 있다.
공통의 판독 시나리오에서, 드라이브 제어기(22)는 운영 시스템(18)으로부터 블록 요청을 수신할 수 있다. 블록에 대한 요청이 드라이브 제어기(22)에 도달하는 경우, 드라이브 제어기(22)는 먼저 가 현재 드라이브 캐시(24)에 위치하는 지 여부를 확인한다. 가 현재 드라이브 캐시(24)에 위치하는 경우, 드라이브 제어기(22)는 가 드라이브 캐시(24)로부터 운영 시스템(18)으로 요청에 반응하여 전송되도록 유도한다. 이는 일반적인 디스크 판독 동작과 비교했을 때 즉각적인 전송으로 간주될 수 있고, 판독 프로세스를 상당히 가속시킬 수 있다. 가 현재 드라이브 캐시(24)에 위치하지 않는 경우, 블록은 랜덤 블록 액세스 시간를 가지고 플래터(26)으로부터 판독될 수 있다. 블록 액세스 시간 는 다음과 같이 표현될 수 있다.
여기서 은 회전 대기 시간이고, 는 검색 시간이고, 는 플래터의 각 속도와 헤드의 회전 이동 사이의 비율이고,는 제어기 프로세싱 및 블록 리드 아웃 시간이다. 이러한 접근법을 이용하면, 판독 프로세스는 의 큐로서 모델링될 수 있고, 여기서 는 로 주어지는 평균 서비스 속력 및 캐시 사이즈의 함수이다. 파일과 연관되는 블록이 디스크 드라이브의 플래터를 건너서 분배되는 경우, 디스크 드라이브로부터의 파일과 연관되는 모든 블록을 개별적으로 판독하는 것은 매우 시간 소비적이다.
본 서에 기술되는 다양한 실시예에서, 네트워크 코딩은 더 빠르고 더 효율적인 방법으로 판독 동작이 수행될 수 있게 하는 방법으로 데이터를 디스크 드라이브의 플래터에 저장하는 데 이용된다. 이러한 판독 기술은 코드화 검색으로서 참조될 수 있다. 파일와 연관되는 로데이터 블록을 플래터 표면의 상응하는 위치에 저장하는 것 대신에, 파일과 연관되는 데이터의 네트워크 코드화 블록이 저장된다. 네트워크 코딩은 데이터 요소의 선형 결합을 생성함으로써 데이터를 엔코딩하는 기술이다. 이러한 선형 결합은 후에 본래의 데이터 요소를 추출하기 위해 "디코딩"될 수 있다. 디코딩 프로세스는 일반적으로 선형 기술을 이용하는 본래의 데이터 요소를 해결하기 위해 "자유도"로서 충분한 수의 선형 결합(및/또는 본래의 데이터 요소)가 사용하도록 요구한다.
네트워크 코딩의 대중적인 한 형식은 RLNC(random linear network coding)로서 알려져 있다. RLNC를 이용하면, 데이터 요소가 랜덤으로 생성되는 계수를 이용하여 선형으로 결합된다. 랜덤으로 생성되는 계수의 다른 세트가 동일한 데이터 요소의 다른 선형 결합을 생성하기 위해 이용되는 경우, 결과의 선형 결합은 일반적으로 다른 것과 선형으로 독립적(즉, 새로운 것임)이고, 이에 따라 각각은 디코딩에서 이용될 수 있는 자유도를 나타낸다.
코드화 저장을 위해 가능한 한 가지 기술에서, 파일는 개의 동일한 사이즈의 "블록 윈도우"로 분리되거나 각각 개의 데이터 블록을 포함하도록 생성된다. 번째 블록 윈도우 파일은 로서 참조될 수 있다. 블록 윈도우는 파일 블록 인덱스의 부분 집합을 포함할 수 있고 파일과 연관되는 다른 모든 블록 윈도우로부터 떨어져 나올 수 있다. 코드화 블록 은 다음과 같이 블록 윈도우을 위해 생성될 수 있다.
여기서 는 랜덤 계수이고 는 블록 윈도우과 연관되는 데이터 블록이다. 복수의 다른 코드 블록는 각각의 블록 윈도우로 생성될 수 있다. 계수 는 사이즈의 유한 필드 로부터 나올 수 있고, 블록 윈도우와 연관되는 개별의 코드화 블록는 다른 높은 가능성 및 일부 확실한 경우에 선형 독립적이다. 각각의 코드화 블록 는 이에 따라 상응하는 블록 윈도우 내의 모든 데이터 블록의 분리된 정보를 제공한다. 파일 의 각각의 블록 윈도우와 연관되는 코드화 블록은 디스크 드라이브의 플래터에 저장될 수 있다. 각각의 블록 윈도우에서 생성되어 저장되는 코드화 블록의 수는 블록 윈도우의 모든 데이터 블록을 해결하기 위해 요구되는 최소한의 수이지만, 이 수보다 더 클 수는 없다. 각각의 코드화 블록을 생성하기 위해 이용되는 계수 는 코드화 블록과 연관되는 디스크 표면에 저장될 수 있다.
다음으로 운영 시스템(18)이 디스크 드라이브(16)으로부터 파일 의 판독을 원하는 경우, 모든 블록 윈도우를 리커버할 때까지 하나씩 디스크 드라이브(16)로부터 각각의 블록 윈도우를 판독할 수 있다. 각각의 블록 윈도우 당, 운영 시스템(18)은 블록 윈도우와 연계되는 새로운 코드화 블록 (또는 자유도)를 요청하는 요청을 드라이브 제어기(22)에게 발신할 수 있다. 각각의 판독 요청당 드라이브 제어기(22)는 코드화 블록과 연관되는 계수를 따라 하나의 코드화 블록을 검색할 수 있다. 운영 시스템(18)은 블록 윈도우의 데이터 블록을 디코딩하기 위해 충분한 수의 자유도가 검색될 때까지 새로운 코드화 블록의 요청을 계속해서 발신한다. 네트워크 코드화 데이터 블록을 디코딩하는 임의의 기술이 코드화 블록을 디코딩하기 위해 이용될 수 있다. 적어도 하나의 구현에서, 예를 들어 가우스 조단(Gauss-Jordan) 제거 또는 유사한 기술 등의 진보적인 디코딩 기술이 수신한 코드화 블록을 디코딩하기 위해 운영 시스템(18)에 의해 이용될 수 있다. 다른 기술이 대안으로 이용될 수 있다. 코드화 블록 (또는 자유도)를 검색하기 위해 드라이브 제어기(22)에 의해 이용되는 기술이 파일 의 전체 검색 속도를 상당히 높힐 수 있다는 점이 더 자세히 후술된다.
드라이브 제어기(22)는 각각 저장되는 파일의 각각의 블록 윈도우에 연관하는 모든 코드화 블록의 플래터의 위치 기록을 가진다. 특정 파일의 특정 블록 윈도우와 연관되는 새로운 코드화 블록의 판독 요청이 수신되는 경우, 드라이브 제어기(22)는 플래터에 저장된 어떤 상응하는 코드화 블록이 디스크 드라이브(16)의 판독 헤드의 현재 위치와 가장 가까운지 결정한다. 다음으로 드라이브 제어기(22)는 상응하는 표면의 상응하는 트랙을 검색하고 해당 코드화 블록을 판독한다. 동일 파일의 동일 블록 윈도우에 연관되는 새로운 코드화 블록의 다음 판독 요청이 수신되는 경우, 드라이브 제어기(22)는 어떤 다른 상응하는 코드화 블록이 디스크 드라이브(16)의 판독 헤드의 현재 위치와 가장 가까운지 결정한다. 다음으로 동일한 과정이 각각의 새로운 요청 당 반복될 수 있다. 따라서, 일부 구현에서 드라이브 제어기(22)는 최근에 검색된 데이터를 추적하여 주어진 블록 윈도우와 연관되는 동일한 코드화 블록이 동일한 파일 판독 동작 동안 운영 시스템에 두 번 보내지지 않도록 할 수 있다(이는 동일한 코드화 블록을 두 번 판독하는 것이 디코딩의 사용을 위한 새로운 자유도를 제공하지 않기 때문이다). "가장 가까운" 코드화 블록이 각각의 판독 요청에서 이용되기 때문에, 상당한 양의 검색 및 대기 시간이 파일 판독 동작 동안 회피될 수 있다.
일부 구현에서, 드라이브 제어기(22)는 먼저 확인되는 블록 윈도우와 연관되는 새로운 코드화 블록이 플래터의 코드화 블록을 검색하기 전에 드라이브 캐시(24) 내에 저장되었는 지를 결정할 수 있다. 드라이브 캐시(24)의 확인되는 블록 윈도우와 연관되는 코드화 블록이 존재하고, 코드화 블록이 현재 파일 판독 동작 동안 운영 시스템(18)에게 아직 발신되지 않은 경우에, 코드화 블록은 판독 요청에 반응하여 드라이브 캐시(24)로부터 운영 시스템(18)으로 보내질 수 있다.
일반적인 시나리오에서, 운영 시스템(18)이 블록 윈도우의 자유도에 대한 요청을 발신하는 경우, 상응하는 디스크 드라이브의 판독 헤드 및 플래터는 다른 것들에 대해 물리적으로 랜덤한 배향에 있을 수 있다. 도 2는 이러한 상황을 도시하는 디스크 드라이브(30)의 상면도이다. 도시되는 바와 같이, 디스크 드라이브(30)은 방향(34)로 회전하는 플래터(32), 액츄에이터 암(38)의 말단에 연결되는 판독 요소(36), 및 디스크 제어기의 제어 중인 축에 관해 액츄에이터 암(38)을 피봇하는 코일 모터(40)을 포함한다. 판독 요청이 수신되는 경우, 판독 요소(36)은 플래터에 저장되는 다양한 코드화 블록에 관해 랜덤한 위치에 있을 수 있다. 드라이브 제어기는 다음으로 플래터의 다양한 코드화 블록 중 어느 것이 판독 요소(36)의 현재 위치와 가장 가까운 지 결정할 수 있다. 다른 실시예에서, "가장 가까운"이란 표현은 물리적으로 가장 가깝거나(즉, 코드화 블록과 판독 요소 사이의 거리가 가장 짧음) 또는 시간적으로 가장 가까운 것(즉, 블록과 판독 요소는 가장 빨리 이동할 수 있음)을 의미할 수 있다. 가장 가까운 블록을 찾기 위한 기술은 리스트의 각각의 블록으로 이동하기 위해 필요한 거리 또는 시간을 계산하는 단계 및 리스트로부터의 최소한의 요소를 검색하는 단계를 포함할 수 있다. 거리 또는 시간 계산은 각각의 블록의 물리적 위치 및 헤드의 현재 위치에 기반할 수 있다. 최적으로 윈도우의 모든 블록에 액세스하는 순서를 계산하기 위해, 공지된 TSP(Traveling Salesman Problem)의 해법 또는 근사적 해법이 이용될 수 있다. 보다 특정하게, 각각의 블록은 방향성 없게 가중된 그래프의 요소에 의해 고려될 수 있다. 다음으로 잠재적인 헤드 및 플래터의 이동은 이동 시간 또는 거리의 함수 가중치를 이용하여 그래프의 경로로서 모델링될 수 있다.
가장 가까운 코드화 블록이 확인된 후에, 드라이브 제어기는 (검색 과정으로 알려진) 판독 요소(36)가 코드화 블록에 연관되는 트랙(42)을 따라 중심을 잡을 때까지 액츄에이터 암(38)을 피봇하게 유도할 수 있다. 드라이브 제어기는 이러한 프로세스 동안 판독 요소(36)의 현재 위치를 추적하는 플래터(32)의 표면으로부터 판독된 서보 정보를 이용할 수 있다. 판독 요소(36)이 적적한 트랙(42)에 있는 경우, 드라이브 제어기는 플래터(32)가, 판독 요소(36)이 요구되는 코드화 블록 위에 위치하는 포인트에 착수할 때까지 대기할 수 있다. 판독 요소가 트랙(42)에 도착하는 것과 요구되는 코드화 블록이 판독 요소(36)에 도달하는 것 사이의 시간 지연은 회전 대기로서 알려져 있다. 판독 요소(36)가 트랙(42)의 요구되는 코드화 블록에 도달하면, 드라이브 제어기는 플래터 표면으로부터 코드화 섹터 (및 상응하는 계수 정보)를 판독할 수 있다. 다음으로 이러한 프로세스는 각각의 판독되는 다른 코드화 블록에서 반복될 수 있다.
전술된 바와 같이, 많은 경우에, 블록 윈도우와 연관되는 코드화 블록은 적어도 하나의 플래터 표면에서 랜덤하게 퍼질 수 있다. 각각의 판독 요청이 도달하면, 디스크 제어기는 드라이브에 저장되는 다음의 "가장 가까운" 새로운 코드화 블록을 선택 및 검색할 수 있다. 식(1)과 동일한 형식을 이용하여, 번째 코드화 블록 (또는 번째 자유도)을 위한 랜덤 액세스 시간 이 다음과 같이 표현될 수 있다.
전술된 바와 같이, 판독 요청이 수신되는 경우, 드라이브 제어기는 어느 코드화 블록이 판독 요소와 가장 가까운지 결정할 수 있고, 다음으로 코드화 블록을 판독할 수 있다. 판독 요소를 이러한 블록의 시작 지점으로 이동시키기 위해 요구되는 시간은 각도에 모두 연관되고 액추에이터 암은 반드시 코드화되는 블록의 트랙 및 거리와 함께 배열해야 하고, 판독 요소는 다음으로 이러한 트랙을 따라 해당 코드화 블록의 시작 지점으로 이동한다. 하나의 가능한 접근법에서, (도 2에 도시되는) 파라미터는 플래터(32)가 관련 트랙(42)에서 번째 코드화 블록 을 판독하는 움직임의 전체 범위의 부분으로서 설명될 수 있다.
및 가 동일한 코드화 블록에서 인용되는 것으로 가정되고, 회전 대기 및 검색 시간 각각이 통계적으로 독립적인 경우, 블록 윈도우에 연관되는 제1 코드화 블록에 대해 및 , 액세스 시간 은 다음과 같이 계산될 수 있다.
및
따라서 이 증가할수록, 랜덤 자유도에 액세스하는 디스크의 속도 또한 증가한다. 이 무한대로 갈수록 의 값은 의 값으로 수렴하는 것을 유념해야 한다. 현대적인 하드 디스크 드라이브에서, 검색 시간 및 회전 대기는 전체 판독 시간의 약 3분의 2로 설명될 수 있다. 따라서, 실질적인 시스템에서, 설명되는 기술을 이용하면 상당한 속도의 이익이 가능하다. 도 3은 다른 w의 값에 따라 과 함께이 어떻게 변하는 지를 보여주는 그래프이다.
전술된 바와 같이, 블록 윈도우와 연관되는 코드화 블록은 디스크 드라이브의 단일 플래터 표면 또는 다중 플래터 표면에 저장될 수 있다. 다중 플래터 표면이 이용되는 경우, 유사한 기술이 판독 요소의 현재 위치와 가장 가까운 코드화 블록을 확인하기 위해 이용될 수 있다. 즉, 코드화 블록은 동작의 액세스 시간을 최소화하는 다음 판독 동작을 위해 선택될 수 있다.
컨텐츠가 블럭을 통해 코딩되는 경우, 모든 블록은 디코딩되기 위해 상응하는 블록 윈도우에서 액세스될 필요가 있다. 일반적으로, 코드 검색 이득은 액세스되는 제1 자유도에서 가장 크고 다음의 자유도에서 줄어든다. 마지막 자유도에서, 코드화 검색 시스템의 액세스 시간은 코딩하지 않은 기법과 등가일 수 있다. 의 비율은 과 함께 줄어드는 속도 증가 이득을 측정하는 계량으로서 이용될 수 있다. 근사적으로, 파라미터 은 식(7)에서 로 대체할 수 있다. 도 4는 디스크 드라이브가 블록 윈도우의 자유도를 따라 이동하면서 어떻게 이 변할 수 있는 지 보여주는 명시적인 도면이다.
검색 시간의 속도 향상은 블로킹 가능성을 줄여주는 것을 포함한 추가의 이점이 있을 수 있다. 특히, 디스크 드라이브를 의 큐로서 모델링하는 경우, 코딩되지 않은 시스템에서 에 비례하는 블로킹 확률을 가진다.
하드 디스크 드라이브의 속도 증가 및 코드화 검색의 이용을 통해 가능해지는 블로킹 확률의 감소는 디스크 드라이브 내의 물리적 이동부에 대한 의존성을 감소시키는 경향이 있다. 다양한 실시예에서, 이러한 기술은 운영 시스템이 다중의 코드화 블록을 저장하고 충분한 자유도가 판독되는 경우 블록을 디코딩하도록 요청할 수 있다. 즉, 디스크 드라이브에 의해 본질적으로 수행된 일이 운영 시스템 또는 드라이브 제어기로 전달되고 빠른 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)). 파일은 각각이 개의 데이터 블록을 가지는 복수의 동일한 폭의 블록 윈도우로 나뉠 수 있다(블록(54)). 각각의 블록 윈도우에서, 복수의 새로운 코드화 블록이 네트워크 코딩 기술을 이용하여 생성될 수 있다(블록(56, 58)). 각각의 코드화 블록은 랜덤 계수를 이용하여 구성되는 상응하는 개의 데이터 블록의 선형 결합을 포함하여 코드화 블록이 다른 것과 선형으로 독립적일 수 있다. 일반적으로 개 이상의 데이터 블록은 각각의 블록 윈도우에서 생성된다. 각각의 블록 윈도우에서 생성되는 코드화 블록은 다음으로 디스크 드라이브에 저장될 수 있다(블록(60)). 이런 프로세스는 본래 파일의 모든 블록 윈도우가 프로세싱되어 저장될 때까지 반복될 수 있다(블록(62, 64)). 코드화 검색을 지원하는 디스크 드라이브에 코드화 데이터를 기록하는 단계를 위한 다른 변형된 기술이 대안으로 이용될 수 있다. 예를 들어, 하나의 이러한 접근법에서, 파일은 블록 윈도우를 먼저 형성할 필요 없이개의 데이터 블록으로 분할될 수 있다. 개의 데이터 블록은 다음으로 저장을 위한 코드화 블록을 생성하기 위해 이용될 수 있다.
도 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)
- 데이터를 디스크 기반의 데이터 저장 장치에 저장하는 방법에 있어서,
상기 디스크 기반의 데이터 저장 장치에 저장되는 복수의 데이터 블록을 확인하는 단계 - 상기 복수의 데이터 블록은 N개의 데이터 블록을 가짐 -;
상기 복수의 데이터 블록을 이용하여 복수의 네트워크 코드화 블록을 생성하는 단계 - 각각의 네트워크 코드화 블록은 다른 네트워크 코드화 블록으로부터 랜덤 계수의 다른 세트를 이용하여 생성되는 상기 복수의 데이터 블록의 선형 결합을 포함함 -; 및
상응하는 랜덤 계수를 이용하여 상기 디스크 기반의 데이터 저장 장치의 개별 블록 위치에 상기 네트워크 코드화 블록을 기록하는 단계
를 포함하고,
상기 디스크 기반의 데이터 저장 장치에 저장되는 복수의 데이터 블록을 확인하는 단계는,
상기 디스크 기반의 데이터 저장 장치에 저장되는 파일을 획득하는 단계;
상기 파일을, 각각 N 개의 데이터 블록을 포함하는 복수의 동일 사이즈의 블록 윈도우로 분할하는 단계; 및
상기 복수의 동일 사이즈의 블록 윈도우 중 하나를 선택하는 단계
를 포함하는 방법.
- 제1항에 있어서,
상기 디스크 기반의 데이터 저장 장치는 자기 디스크 드라이브, 자기 및 고체 상태 디스크 드라이브의 하이브리드, 및 광학 디스크 드라이브 중 적어도 하나를 포함하는 방법.
- 제1항에 있어서,
상기 복수의 동일 사이즈의 블록 윈도우에서 각각의 블록 당 생성 및 기록을 반복하는 단계를 더 포함하는 방법.
- 디스크 드라이브에 있어서,
드라이브 제어기; 및
상기 드라이브 제어기에 의한 제어 중인 디지털 데이터의 저장을 위한 적어도 하나의 플래터
를 포함하고,
상기 드라이브 제어기는
상기 적어도 하나의 플래터로부터 복수의 네이티브 데이터 블록과 연관되는 새로운 코드화 블록의 검색을 요청하는 판독 요청을 수신;
상기 판독 요청에 반응하여, 상기 디스크 드라이브의 판독 변환기의 현재 위치와 가장 가까운 적어도 하나의 플래터에 보관되는 상기 복수의 네이티브 데이터 블록과 연관되는 새로운 코드화 블록을 확인; 및
상기 적어도 하나의 플래터로부터 확인되는 상기 새로운 코드화 블록을 판독
하도록 구성되는 디스크 드라이브.
- 제4항에 있어서,
상기 적어도 하나의 플래터로부터 확인되는 상기 새로운 코드화 블록은 선형 결합을 생성하도록 이용되는 계수 리스트와 상기 복수의 네이티브 데이터 블록의 선형 결합을 포함하는 디스크 드라이브.
- 제5항에 있어서,
상기 드라이브 제어기는
복수의 네이티브 데이터 블록과 연관되는 새로운 코드화 블록의 검색을 요청하는 판독 요청을 수신;
상기 판독 요청에 반응하여, 상기 디스크 드라이브의 판독 변환기의 현재 위치와 가장 가까운 상기 디스크 드라이브에 저장되는 상기 복수의 네이티브 데이터 블록과 연관되는 새로운 코드화 블록을 확인; 및
상기 판독 변환기를 이용하여 상기 확인되는 상기 새로운 코드화 블록을 판독
하도록 더 구성되는 디스크 드라이브.
- 제6항에 있어서,
상기 드라이브 제어기는 액세스할 수 있는 최소한의 시간을 이용하는 저장된 코드화 블록, 및 상기 판독 변환기와 물리적으로 가장 가까운 저장된 코드화 블록 중 적어도 하나를 선택함으로써 상기 판독 변환기의 상기 현재 위치와 가장 가까운 상기 새로운 코드화 블록을 확인하도록 구성되는 디스크 드라이브.
- 제6항에 있어서,
상기 드라이브 제어기는 상기 판독 변환기와 물리적으로 가장 가까운 저장된 코드화 블록을 선택함으로써 상기 판독 변환기의 상기 현재 위치와 가장 가까운 상기 새로운 코드화 블록을 확인하도록 구성되는 디스크 드라이브.
- 제6항에 있어서,
상기 드라이브 제어기는 상기 판독 변환기의 상기 현재 위치와 가장 가까운 새로운 코드화 블록을 확인하는 경우, 최근에 검색된 상기 복수의 네이티브 데이터 블록과 연관되는 코드화 블록을 무시하도록 구성되는 디스크 드라이브.
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
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)
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)
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)
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 |
-
2013
- 2013-08-13 US US13/965,645 patent/US9019643B2/en active Active
-
2014
- 2014-03-12 JP JP2016501509A patent/JP6106327B2/ja active Active
- 2014-03-12 CN CN201480015010.0A patent/CN105144075B/zh active Active
- 2014-03-12 PL PL14767979T patent/PL2972751T3/pl unknown
- 2014-03-12 KR KR1020157029539A patent/KR101777032B1/ko active IP Right Grant
- 2014-03-12 WO PCT/US2014/024368 patent/WO2014150837A1/en active Application Filing
- 2014-03-12 EP EP14767979.9A patent/EP2972751B1/en active Active
-
2015
- 2015-03-25 US US14/668,185 patent/US9361936B2/en active Active
Patent Citations (1)
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 |