KR100207882B1 - 매체 스트리머 - Google Patents

매체 스트리머 Download PDF

Info

Publication number
KR100207882B1
KR100207882B1 KR1019950028703A KR19950028703A KR100207882B1 KR 100207882 B1 KR100207882 B1 KR 100207882B1 KR 1019950028703 A KR1019950028703 A KR 1019950028703A KR 19950028703 A KR19950028703 A KR 19950028703A KR 100207882 B1 KR100207882 B1 KR 100207882B1
Authority
KR
South Korea
Prior art keywords
data
video
node
storage
output
Prior art date
Application number
KR1019950028703A
Other languages
English (en)
Other versions
KR960011724A (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 KR960011724A publication Critical patent/KR960011724A/ko
Application granted granted Critical
Publication of KR100207882B1 publication Critical patent/KR100207882B1/ko

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N7/00Television systems
    • H04N7/16Analogue secrecy systems; Analogue subscription systems
    • H04N7/173Analogue secrecy systems; Analogue subscription systems with two-way working, e.g. subscriber sending a programme selection signal
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04HBROADCAST COMMUNICATION
    • H04H20/00Arrangements for broadcast or for distribution combined with broadcast
    • H04H20/42Arrangements for resource management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04HBROADCAST COMMUNICATION
    • H04H60/00Arrangements for broadcast applications with a direct linking to broadcast information or broadcast space-time; Broadcast-related systems
    • H04H60/02Arrangements for generating broadcast information; Arrangements for generating broadcast-related information with a direct linking to broadcast information or to broadcast space-time; Arrangements for simultaneous generation of broadcast information and broadcast-related information
    • H04H60/04Studio equipment; Interconnection of studios
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/21Server components or server architectures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N7/00Television systems
    • H04N7/16Analogue secrecy systems; Analogue subscription systems
    • H04N7/173Analogue secrecy systems; Analogue subscription systems with two-way working, e.g. subscriber sending a programme selection signal
    • H04N7/17309Transmission or handling of upstream communications
    • H04N7/17336Handling of requests in head-ends
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04HBROADCAST COMMUNICATION
    • H04H60/00Arrangements for broadcast applications with a direct linking to broadcast information or broadcast space-time; Broadcast-related systems
    • H04H60/02Arrangements for generating broadcast information; Arrangements for generating broadcast-related information with a direct linking to broadcast information or to broadcast space-time; Arrangements for simultaneous generation of broadcast information and broadcast-related information
    • H04H60/06Arrangements for scheduling broadcast services or broadcast-related services

Landscapes

  • Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Multimedia (AREA)
  • Business, Economics & Management (AREA)
  • General Business, Economics & Management (AREA)
  • Television Signal Processing For Recording (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Catalysts (AREA)

Abstract

본 발명은 비디오 프리젠테이션의 디지탈 표시를 저장하는 적어도 하나의 저장 노드(16,17)를 포함하는 매체 스트리머(10)에 관한 것이다. 비디오 프리젠테이션은 전체 비디오를 나타내기 위한 시간 T를 요구하며, N개의 다수의 데이타 블럭으로서 저장되고, 각 데이타 블럭은 상기 비디오 프리젠테이션의 T/N 주기에 근사적으로 상응하는 데이타를 저장한다. 매체 스트리머는 또한 다수의 통신 노드내의 각 통신 노드가 적어도 하나의 입력 포트 및 적어도 하나의 출력 포트를 갖는 상기 다수의 통신 포트(14)와; 적어도 하나의 저장 노드와 상기 다수의 통신 노드의 입력 포트 사이에 연결된 회로 스위치(18)로서, 하나 이상의 입력 포트를 적어도 하나의 저장 노드에 선택적으로 접속하여, 상기 저장 노드에 저장된 디지탈 프리젠테이션을 상기 하나이상의 출력 포트에 나타나도록하는 회로 스위치와; 상기 N개의 블럭중 임의의 한 블럭이 상기 다수의 통신 노드중 임의 노드의 임의 출력 포트에 나타나도록 하기 위해 상기 다수의 통신 노드 및 상기 적어도 하나의 저장 장치 노드에 접속된 적어도 하나의 제어 노드(18)를 포함한다.

Description

매체 스트리머
제1도는 본 발명에 따라 구현된 매체 스트리머의 블럭도.
제1a도는 제1도에 도시된 회로 스위치를 상세히 도시한 블럭도.
제1b도는 제1도에 도시된 테이프 저장 노드를 상세히 도시한 블럭도.
제1c도는 제1도에 도시된 디스크 저장 노드를 상세히 도시한 블럭도.
제1d도는 제1도에 도시된 통신 노드를 상세히 도시한 블럭도.
제2도는 높은 우선순위로 실행되는 비디오 스트림 출력 제어 커맨드들의 리스트 및 낮은 우선순위로 실행되는 데이터 관리 커맨드들의 리스트.
제3도는 통신 노드 데이터 흐름을 나타내는 블럭도.
제4도는 디스크 저장 노드 데이터 흐름을 나타내는 블럭도.
제5도는 접속이 성취될 수 있게 하는 제어 메시지 흐름을 도시한 도면.
제6도는 재생이 이루어질 수 있게 하는 제어 메시지 흐름을 도시한 도면.
제7도는 매체 스트리머와 고객 제어 시스템 사이에 존재하는 인터페이스를 도시한 도면.
제8도는 매체 스트리머를 동작시키는 데 이용되는 다수의 소프트(soft)키를 도시하는 디스플레이 패널을 도시한 도면.
제9도는 제8도에 도시된 로드 소프트 키를 선택할 때 디스플레이되는 로드 선택 패널을 도시한 도면.
제10도는 제8도에서 배치 키가 선택될 때 디스플레이되는 배치 선택 패널을 도시한 도면.
제11도는 고객 제어 시스템 및 매체 스트리머 사이에 존재하는 다양한 고객/서버 관계를 도시한 도면.
제12도는 비디오 데이터를 액세싱하고 이 데이터를 하나 이상의 출력 포트에 제공하는 종래 기술의 기법을 도시한 도면.
제13도는 얼마나 많은 수의 비디오 포트가 통신 노드 캐쉬 메모리내에 포함된 단일 비디오 세그먼트를 액세스할 수 있는 지를 나타내는 블럭도.
제14도는 얼마나 많은 수의 비디오 포트가 디스크 저장 노드상의 캐쉬 메모리내에 포함된 비디오 세그먼트를 직접 액세스할 수 있는지를 나타내는 블럭도.
제15도는 본 발명에 따라 이용되는 메모리 할당 방안을 도시한 도면.
제16도는 비디오 1에 대해 분할된 논리 화일을 도시한 도면.
제17도는 비디오 1의 다양한 세그먼트들이 다수의 디스크 드라이브에 걸쳐서 스트라이핑되는 방법을 예시한 도면.
제18도는 저장 노드와 크로스바 스위치간의 종래의 스위치 인터페이스를 도시한 도면.
제19도는 제18도에 도시된 종래의 스위치 인터페이스가 저장 노드에 대한 확장된 출력 대역폭을 제공하기 위해 변경되는 방법을 예시한 도면.
제20도는 비디오 출력 버스로의 일정한 비디오 출력을 보장하는 절차를 예시한 블럭도.
제21도는 디지탈 비디오 데이터를 아날로그 비디오 데이터로 변환하는데 이용되는 비디오 어댑터의 블럭도.
제22도는 제21도에 도시된 비디오 어댑터 카드를 제어하는데 SCSI 버스 커맨드가 이용될 수 있게 하는 제어 모듈을 나타내는 블럭도.
* 도면의 주요부분에 대한 부호의 설명
10 : 비디오 최적 스트림 서버 시스템 12 : 낮은 대기시간 스위치
14 : 통신 노드 15 : 비디오 포트
16 : 디스크 저장 노드 17 : 디스크 저장 노드
18 : 제어 모드 20 : 스위치 카드
24 : 테이프 라이브러리 제어 및 인터페이스
26 : 테이프 라이브러리 28 : SCSI 테이프 라이브러리
30 : 메모리 34,44,54 : PC
36 : 에티프 및 화일 관리
38,40,50 : 스위치 인터페이스 및 버퍼 42 : RAID 버퍼
46 : 저장 노드 제어 및 비디오 화일 시스템
48 : 디스크 제어 및 RAID 매핑
52 : 스티림 버퍼 및 통신 인터페이스
56 : 통신 노드 58 : 스트림 제어
60 : 프레임 동기화에 대한 자동화 제어 인터페이스
62 : 자동화 제어 설비 64 : 시스템 제어기
65 : 사용자 제어 100,110 : 입력 스레드
102,112 : 출력 스레드 160,162 : 디스크 화일
172,194 : 비디오 포트 1 174,196 : 비디오 포트 2
180,182 : 디스크 저장 노드 184 : 캐쉬 메모리
186 : 통신 노드 190,192 : 디스크 드라이브
198 : 디스크 캐쉬 버퍼 200 : 직렬 통신 칩
202 : 비디오 데이터 버퍼 1 204 : 비디오 데이터 버퍼 2
206 : 비디오 데이터 버퍼 3 208 : 출력 FIFO
220 : NTSC 222 : D/A 컨버터
224 : FIFO 227 : 어댑터
본 발명은 멀티미디어 데이터 전송용 시스템(a system for delivery of multimedia data)에 관한 것으로, 특히 최소의 버퍼링(minimal buffering)으로 다수의 터미날에 동시에 비디오를 제공하는 대화형 비디오 서버 시스템(an interactive video server system)에 관한 것이다.
본 발명과 관련된 기술은 1994년 9월 8일자로 출원된 미국 특허 출원 제 08/302,616 호(명칭 : Video Optimized Media Streamer for Generating Isochronous Data Streams, 발명자 : 더블유. 알. 벨크냅(W.R. Belknap)등)와, 1994년 9월 8일자로 출원된 미국 특허 출원 제 08/302,626 호(명칭: Video Optimized Media Streamer Data Flow Architecture, 발명자 : 엠.헨레이(M.Henlay) 등)와, 1994년 9월 8일자로 출원된 미국 특허 출원 제 08/302,619 호(명칭: Video Optimized Media Streamer with Cache Management, 발명자 : 더블유.알.벨크냅(W.R. Belknap)등)와, 1994년 9월 8일자로 출원된 미국 특허 출원 제 08/303,190 호(명칭: Video Optimized Media Streamer User Interface, 발명자: 에이. 삭세나(A.Saxena)등)와, 1994년 9월 8일자로 출원된 미국 특허 출원 제 08/302,624 호(명칭: Video Optimized Media Streamer with Distributed Video Data Storage, 발명자: 팔콘(Falcon)등)에 개산되어 있으며, 본 명세서에서 그 전체 내용이 참조된다.
오늘날, 영화 및 비디오의 재생은 오히려 구식 기술에 의해 이루어지고 있다. 주요 저장 매체로는 VHS 레코더/재생기(recoder/player)와 같은 아날로그 테이프(analog tape)에서부터, 텔레비젼 스튜디오 및 방송기기에 의해 사용되는 고품질 및 고가의 D1 VTR에 이르기까지 다양하다. 그러나, 이러한 구식 기술에는 많은 문제점이 존재한다. 이중에서 몇몇 문제점을 고찰하면, 테이프를 로딩시키는 데 수동조작이 요구되며, 기계적인 장치, 테이프 헤드 및 테이프 자체의 마모 및 비용상의 문제점들이 포함된다. 방송국이 겪는 한가지 중요한 한계는 이러한 종래의 VTR은 한 번에 하나의 기능만을 순차적으로 수행할 수 밖에 없다는 것이다. 또한, 각 테이프 장치의 가격은 $75,000 에서 $15,000에 이른다.
TV 방송국은 그들의 수입을 증대시키기를 위해, 짧은 영화에 상당하는 특정 광고 방송을 정규 방송 사이에 삽입하고 각 도시를 개별 시장화하려 한다. 그러나, 이러한 작업은 테이프 기술로는 매우 어려운 작업으로서 심지어는 매우 값비싼 디지탈 D1 테이프 시스템 혹은 테이프 로봇(tape robot)을 사용하더라도 마찬가지로 어려운 작업이 된다.
최종 사용자에게 멀티미디어 데이터를 전송하는 통상적인 방법은 (1) 방송분야의 방법과 (2) 컴퓨터 분야의 방법과 같이 두개의 범주로 나눠질 수 있다. 방송 분야의 방법(동화상(motion picture), 케이블, 텔레비젼 네트워크 및 레코드 분야를 포함함)은 일반적으로 아날로그 혹은 디지탈로 기록된 테이프 형태의 저장을 제공한다. 이러한 테이프를 재생하면 등시성 데이터 스트림(isochronous data stream)이 발생되며, 이 스트림은 방송 장비를 통해 최종 사용자에게 전송된다. 컴퓨터 분야의 방법은 일반적으로 디스크 혹은 테이프로 보강된 디스크 형태의 저장을 제공하며, DVI, JPEG 및 MPEG과 같은 압축된 디지탈 포맷으로 데이터를 기록한다. 요구시에, 컴퓨터는 비등시성 데이터 스트림을 최종 사용자에게 전송하며, 여기서 데이터 스트림은 연속적인 시청이 가능하도록 하드웨어 버퍼(hardware buffers) 및 특정 애플리케이션 코드(special application code)에 의해 평활화된다.
비디오 테이프 서브시스템은 통상적으로 저장 매체의 가격으로 인해 컴퓨터 디스크 서브시스템에 비해 비용면에서 유리하지만, 테이프 관리, 액세스 대기시간 및 비교적 낮은 신뢰성면에서 상대적으로 불리하다. 이러한 단점들은 컴퓨터 저장 매체의 가격 하락 및 실시간 디지탈 압축/압축해제 기법의 출현으로 인해 더욱 크게 부각되고 있다.
비록, 컴퓨터 서브시스템이 가격 및 성능면에서 향상되기는 했으나, 일반적으로 비디오 분야에서 적합하지 않은 것으로 생각되었다. 컴퓨터는 주로 비등시성 인터페이스 및 프로토콜을 갖는 워크스테이션 및 다른 컴퓨터 터미날과 인터페이스한다. 최종 사용자에게 멀티미디어 데이터를 매끄럽게(등시적으로) 전송될 수 있게 보장하려면, 컴퓨터 시스템에, 통상적인 통신 방법에서의 고유 결점을 극복할 수 있는 특정 애플리케이션 코드 및 대용량 버퍼가 구비되어야 했다. 또한, 컴퓨터는 등시성 데이터 스트림을 취급하고 이들 스트림을 높은 정확도로 스위칭하는 멀티미디어 분야의 장비에 대해 호환성 있는 인터페이스가 부족하기 때문에 비디오에는 많이 사용되지 않았다.
디지탈 포맷으로 비디오 자료를 압축하고 저장하는 컴퓨터 사용의 도입으로 인해, 텔레비젼 방송, 영화 제작, 전화선을 통한 주문형 비디오(Video on Demand), 호텔에서의 유료 영화 시청등의 각종 주요 분야에서 커다란 변혁이 일어나게 되었다. 압축 기술은 100x 에서 180x의 압축 비로 만족할 만한 결과를 얻을 만큼 발전하였다. 이러한 압축 비에 의하면 랜덤 액세스 디스크 기술(random access disk technology)은 종래 기술의 테이프 시스템에 대한 훌륭한 대안이 된다.
디스크 시스템의 디지탈 디스크 데이터를 랜덤하게 액세스하는 능력 및 매우 넓은 대역폭을 이용할 경우, 디스크 기술의 확장성(expendability), 하드웨어 비용 및 성능내에서 요구되는 시스템 기능 및 성능이 얻어진다. 종래에는, 비디오 및 영화를 저장하기 위해 디스크 화일을 사용하는 것은 저장 매체의 비용으로 인해 전혀 고려되지 않았다. 그러나, 이러한 비용은 최근에 급격하게 감소되었다.
MPEG 표준을 이용하여 압축된 비디오 데이터를 사용하는 새로이 등장하고 있는 많은 시장에 대해, 비용면에서 효율적인 방식으로 비디오 데이터를 저장할 수 있는 각종 방법이 존재한다. 본 발명은 여러가지 다른 많은 성능 요건에 대한 계층적인 해결책(hierarchical solution)을 제공하여, 시장의 요건을 만족시키도록 커스텀화될 수 있는 모듈별 시스템 접근 방안을 제공한다.
본 발명은 비디오에 사용할 수 있는 컴퓨터 서브시스템을 제공하며, 본 시스템은 컴퓨터 분야의 통상적인 인터페이스를 통해 멀티미디어 환경의 등시성 데이터 스트림 전송을 가능하게 한다. 본 발명에 따른 매체 스트리머(a media streamer)는 등시성 데이터 스트림의 전송을 위해 최적화되며, ATM(Asynchronus Transfer Mode) 기술에 의해 데이터를 새로운 컴퓨터 네트워크내로 스트리밍할 수 있다. 본 발명은 시스템 제어를 위해 VTR(Video Tape Recoder)과 유사한 기능을 제공하면서 비디오 테이프의 단점을 제거한다. 본 발명의 시스템은, 최종 사용자에게 1 에서 1000개에 이르는 독립적으로 제어되는 데이터 스트림을 전송하는 스케일어빌러티(scaleability)와, 단일의 데이터 복제본으로부터 복수의 등시성 데이터 스트림을 전송하는 능력과, 혼합 출력 인터페이스(mixed output interface)와, 혼합 데이터 전송 속도와, 단순한 오픈 시스템 제어 인터페이스와, 자동화 제어 지원(automation control support)과, 저장 계층 지원(storage hierarchy support)과, 하나의 전송 스트림당 저비용이라는 특징을 제공한다.
본 발명에 따른 매체 스트리머는 비디오 프리젠테이션(video presentation)의 디지탈 표현을 저장하는 적어도 하나의 저장 노드를 포함한다. 비디오 프리젠테이션을 완전히 표시하는 데 시간 T가 소요되며, 비디오 프리젠테이션은 다수의 N개 데이터 블럭으로 저장된다. 각 데이터 블럭은 대체로 비디오 프리젠테이션의 T/N기간에 대략 대응하는 데이터를 저장한다. 매체 스트리머는 또한 적어도 하나의 입력 포트와 적어도 하나의 출력 포트를 제각기 갖는 다수의 통신 노드와, 적어도 하나의 저장 노드와 상기 다수의 통신 노드의 입력 포트사이에 접속된 회로 스위치-이 회로 스위치는 하나 이상의 입력 포트를 적어도 하나의 저장 노드에 선택적으로 접속하여 이 저장 노드에 저장된 데이터의 디지탈 표현이 하나 이상의 출력 포트에 나타날 수 있게 함-와, 적어도 상기 다수의 통신 노드들과 적어도 하나의 저장 노드에 접속되어 N개 블럭들중 어느 하나의 블럭이 상기 다수의 통신 노드들중 어느한 노드의 임의의 출력 포트에 나타내어질 수 있게 하는 적어도 하나의 제어 노드를 포함한다.
하나의 동작 모드에서, 적어도 하나의 제어 노드는 N개 블럭들중 동일한 블럭이 다수의 출력 포트들에 동시에 나타내어질 수 있게 하며, 다른 동작 모드에서, 적어도 하나의 제어 노드는 N개의 블럭들중 상이한 블럭이 다수의 출력 포트에 동시에 나타내어질 수 있게 한다.
본 명세서에서는 다음과 같은 약어들이 사용된다.
AAL-5 : ATM 적응층-5(ATM ADAPTION LAYER-5). 데이터 전송에 적합한 ATM 서비스 클래스를 나타냄.
ATM : 비동기 전송 모드(ASYNCRHONOUS TRANSFER MODE). 근거리 혹은 광역 네트워크 혹은 이 모두에 사용될 수 있는 고속 스위칭 및 전송 기술을 말하며, 데이터 및 비디오/오디오의 모두를 전송하도록 설계됨.
Betacam : 전문적 품질의 아날로그 비디오 포맷.
CCIR 601 : 디지탈 텔레비젼의 표준 해상도로서, 휘도는 720×840(NTSC의 경우) 혹은 720×576(PAL의 경우)이고, 크로미넌스는 수평 방향으로 2:1로 부샘플됨.
CPU : 중앙 처리 장치(CENTRAL PROCESSING UNIT). 컴퓨터 구조에서 컴퓨터 인스트럭션을 처리하는 주 요소.
CRC : 주기적 리던던시 검사(CYCLIC REDUNDANCY CHECK). 데이터 에러 감지 방안.
D1 : CCIR 601에 따르는 디지탈 비디오 기록 포맷. 19mm 비디오 테이프상에 기록.
D2 : SMPTE 244M에 따르는 디지탈 비디오 기록 포맷. 19mm 비디오 테이프상에 기록.
D3 : SMPTE 244M에 따르는 디지탈 비디오 기록 포맷. 1/2 비디오 테이프상에 기록.
DASD : 직접 액세스 저장 장치(DIRECT ACCESS STORAGE DEVICE). 어드레싱될 수 있는 모든 온 라인 데이터 저장 장치 혹은 CD-ROM 재생기. 자기 디스크 드라이브와 동의어로 사용됨.
DMA : 직접 메모리 액세스(DIRECT MEMORY ACCESS). 컴퓨터 구조에서 데이터 전송에 CPU의 개입을 요구하지 않는 데이터 전송 방법.
DVI : CD-롬 디스크로부터 컴퓨터 스크린상으로 비디오를 재생하는데 일반적으로 사용되는 비교적 낮은 품질의 디지탈 비디오 압축 포맷.
E1 : T1의 유럽식 사용 기호.
FIFO : 선입 선출(FIRST IN FIRST OUT). 입력 순서대로 처리하는 큐 제어 방법.
GenLock : 다른 비디오 신호에 대한 동기화 프로세스를 나타내는 것으로서, 컴퓨터에서 비디오 신호 포착시에 이 신호의 스캐닝 파라메터에 디지탈화 처리를 동기시키는데 필요함.
I/O : 입력/출력
등시성(Isochronous) : 시간에 민감하고 중단없이 전송되는 정보를 서술하는데 이용됨. 실시간으로 전송되는 비디오 및 오디오 데이터는 등시성임.
JPEG : 포토그래픽 전문가 그룹 연합(JOINT PHOTOGRAPHIC EXPERT GROUP). 국제 표준 기구(International Standards Organization)의 산하에 있으며, 컴퓨터 시스템에서 이용하기 위한 정지화상의 디지탈 압축에 대해 제안된 국제 표준을 정의하는 활동 위원회.
KB : 킬로 바이트(KILO BYTES). 1024 바이트.
LAN : 근거리 네트워크(LOCAL AREA NETWORK). 약 1 마일내의 거리에서 터미날, 컴퓨터 및 주변 장치를 서로 연결하는 연선 쌍(twisted pair), 동축 혹은 광섬유 케이블(coax, or fiber optic cables)을 통한 고속 전송.
LRU : 최근에 최소 사용 반도(LEAST RECENTLY USED).
MPEG : 동 화상 전문가 그룹(MOVING PICTURE EXPERTS GROUP). 국제 표준 기구(International Standards Organization)의 산하에 있으며, 이동 비디오/오디오의 디지탈 압축/압축해제에 대한 표준을 정의하는 활동 위원회. MPEG-1은 초기 표준이며, 현재 사용되고 있고, MPEG-2는 차기 표준이며, 디지탈이고, 융통성이 있으며, 스케일가능한 비디오 전송을 지원함. 이 그룹은 다중 해상도(multiple resolution), 비트 속도(bit rate) 및 전송 메카니즘(delivery mechanism)을 커버함.
MRU : 최근에 최대 사용 빈도(MOST RECENTLY USED).
MTNU : MOST TIME TO NEXT USE.
NTSC 포맷 : NATIONAL TELEVISON STANDARDS COMMITTE. 미국 및 일본에서 표준으로 이용되는 컬러 텔레비젼 포맷.
PAL 포맷 : PHASE ALTERNATION LIEN. 프랑스를 제외한 유럽에서 표준으로 이용되는 컬러 텔레비젼 포맷.
PC : 퍼스널 컴퓨터(PERSONAL COMPUTER). 가정용 혹은 사업용으로 이용될 수 있는 비교적 저가의 컴퓨터.
RAID : 저가 디스크의 리던던트 어레이(REDUNDANT ARRAY of INEXPENSIVE DISKS). 출력 대역폭을 증가시키고 리던던트 백업(redundant backup)을 제공하기 위해 직렬로 동작하는 다수의 자기 혹은 광 디스크를 이용하는 저장 배열(storage arrangement).
SCSI : 소형 컴퓨터 시스템 인터페이스(SMALL COMPUTER SYSTEM INTERFACE). 주변 장치 및 이 장치의 제어기를 컴퓨터에 접속하기 위한 산업 표준.
SIF : 소스 입력 포맷(SOURCE INPUT FORMAT). CCIR 601 해상도의 1/4.
SMPTE : 동 화상 및 텔레비젼 엔지니어들의 모인(SOCIETY OF MOTION PICTURE TELEVISION ENGINEERS).
SSA : 직렬 저장 구조(SERIAL STORAGE ARCHITECTURE). 주변 장치 및 이 장치의 제어기를 컴퓨터에 연결하기 위한 표준. SCSI로 대체가능.
T1 : 1.544 Mb/sec 의 비트 속도를 갖는 전화 네트워크로의 디지탈 인터페이스.
TCP/IP : 전송 제어 프로토콜/인터네트 프로그램(TRANSMISSION CONTROL PROTOCOL/INTERNET PROGRAM). 네트워크상의 유사하지 않은 컴퓨터들을 연결하는 미국방성에 의해 개발된 프로토콜 세트
VHS : 수직 나선 스캔(VERTICAL HELICAL SCAN). 자기 테이프상에 아날로그 비디오를 기록하는 공통 포맷.
VTR : 비디오 테이프 레코드(VIDEO TAPE RECODER). 자기 테이프상에 비디오를 기록하는 장치.
VCR : 비디오 카셋트 레코더(VIDEO CASSETTE RECORDER). VTR과 동일함.
[A. 일반구조(GENERAL ARCHITECTURE)]
비디오 최적화된 스트림 서버 시스템(video optimized stream server system)(10)(이하 매체 스트리머로 칭함)이 제1도에 도시되어 있다. 이 시스템은 스케일어빌러티(scaleability), 높은 이용도(high availability) 및 구성의 유연성(configuration flexibility)을 제공하는, 4개의 구조적으로 다른 구성요소들을 포함한다. 그 구성요소는 다음과 같다.
(1) 낮은 대기시간 스위치(Low Latency Switch(12) : 통신노드(14), 하나 이상의 저장 노드(16,17) 및 하나 이상의 제어 노드(18)사이에서 데이터 및 제어 정보를 전송하는 주요 책무(primary task)를 수행하는 하드웨어/마이크로코드 구성요소(hardware/microcode omponent).
(2) 통신 노드(14) : 일반적으로 NTSC, PAL, D1, D2 등과 같은 방송 분야에서 널리 쓰이는 외부 지정 인터페이스(externally defined interface)를 통해 (데이터를 등시적으로 전송하는) 재생 혹은 (데이터를 등시적으로 수신하는) 기록을 가능하게 하는 주요 책무를 수행하는 하드웨어/마이크로코드 구성요소. 디지탈-비디오 인터페이스(digital-to-video interface)는 각 통신 노드(14)의 출력에 접속된 다수의 비디오 포트(15)내에 포함된 비디오 카드로 구현된다.
(3) 저장 노드(16,17) : 디스크와 같은 저장 매체 및 이와 연관된 저장 이용도 옵션을 관리하는 주요 책무를 수행하는 하드웨어/마이크로코드 구성요소.
(4) 제어 노드(18) : 컴퓨터 분야에서 널리 쓰이는 외부 규정 서브시스템 인터페이스로부터의 제어 커맨드를 수신하여 실행하는 주요 책무를 수행하는 하드웨어/마이크로코드 구성요소.
64개의 노드 구성을 갖는 대표적인 매체 스트리머는 낮은 대기시간 스위치(12)로 상호연결된 31개의 통신 노드, 31개의 저장 노드 및 2개의 제어 노드를 포함한다. 더욱 소형의 시스템은 스위치를 포함하지 않고, 통신, 저장 및 제어 기능을 지원하는 단일의 하드웨어 노드를 포함할 수도 있다. 매체 스트리머(10)의 설계는, 고객의 설치에 따라 소형 시스템에서 대형 시스템으로 발전될 수 있다. 모든 구성에서, 매체 스트리머(10)의 기능적인 능력은 전송된 스트림의 수 및 저장된 멀티미디어 시간(hours)의 수를 제외하고는 동일하게 유지될 수 있다.
제1a도에, 낮은 대기시간 스위치(12)가 더욱 상세히 도시된다. 다수의 회로 스위치 칩(도시되지 않음)은 (개략적으로 도시된)평면 보드(planar boads)를 통해 상호연결된 크로스바 스위치 카드(crossbar switch cards)(20)상에서 상호연결된다. 평면의 단일 카드(20)는 16개의 노드 포트를 갖는 낮은 대기시간 크로스바 스위치를 구성한다. 부가의 카드(20)가 추가되어 부가의 노드 포트 및, 필요하다면, 고이 용도를 위한 능동 리던던트 노드 포트를 구성할 수도 있다. 낮은 대기시간 스위치(12)의 각 포트는, 예를 들면, 초당 25 메가바이트의 전이중 통신 채널을 인에이블시킨다.
정보는 스위치(12)를 통해 패킷으로 전송된다. 각 패킷은 각 스위치 칩의 각 크로스바 스위치 포인트의 스위칭 상태를 제어하는 헤드 부분을 포함한다. 제어 노드(18)는 낮은 대기시간 스위치(12)를 통해 피어-투-피어 동작(peer-to-peer operation)을 가능하게 하는데 필요한 정보를 다른 노드(저장 노드(16,17) 및 통신 노드(14))에 제공한다.
제1b도에는, 테이프 저장 노드(17)의 내부가 상세히 도시되어 있다. 이하에서 이해되겠지만, 테이프 저장 노드(17)는 비디오 프리젠테이션의 디지탈 표현을 저장하기 위한 고용량 저장 설비를 제공한다.
여기서, 비디오 프리젠테이션은 표시 및/또는 처리를 위해 적합한 하나 이상의 이미지를 포함할 수 있다. 비디오 프리젠테이션은 오디오 부분을 포함할 수도 있다. 하나 이상의 이미지는 필름, 영화 혹은 애니메이션 시퀀스(sequence)의 순차적인 프레임들(sequenctial frames)과 같이 논리적으로 연관될 수 있다. 이미지는 최초에 카메라 혹은 디지탈 컴퓨터 혹은 카메라와 디지탈 컴퓨터의 조합으로 발생될 수 있다. 오디오 부분은 연속적인 이미지들의 디스플레이와 동기된다. 본 명세서에서, 비디오 프리젠테이션의 데이터 표현은 하나 이상의 이미지와 가능하게는 오디오를 표시하기에 적합한 어떤 디지탈 데이터 포맷일 수 있다. 디지탈 데이터는 부호화 및/또는 압축될 수 있다.
다시 제1b도를 참조하면, 테이프 저장 노드(17)는 테이프 라이브러리(26)에 포함된 다수의 테이프 레코드를 액세스할 수 있게 하는 테이프 라이브러리 제어 인터페이스(24)를 포함한다. 또 다른 인터페이스(28)는 SCSI 버스 상호연결을 통해 다른 테이프 라이브러리를 액세스할 수 있게 한다. 내부 시스템 메모리(30)는 어느 하나의 인터페이스(24,28)로부터 혹은 DMA 데이터 전송 경로(32)를 통해 수신된 비디오 데이터를 버퍼링한다. 이 시스템 메모리(30)는 테이프 라이브러리 및 화일 관리 동작용의 소프트웨어(36)를 포함하는 PC(34)의 일부분일 수 있다. 스위치 인터페이스 및 버퍼 모듈(38)(디스크 저장 노드(16), 통신 노드(14) 및 제어 노드(18)에서도 이용됨)은 테이프 저장 노드(17)와 낮은 대기시간 스위치(12)간을 상호연결한다. 즉, 모듈(38)은 데이터 전송을 패킷으로 분할해서, 각 패킷에 헤더 부분을 부가하는 역할을 담당한다. 이 헤더 부분은 스위치(12)에 의해 패킷을 경로배정하는데 이용된다. 스위치(12)로부터 패킷을 수신하면, 모듈(38)은 수신된 데이터를 국부적으로 버퍼링하거나 달리 처리하기전에 헤더 부분을 분리하는 역할을 담당한다.
테이프 라이브러리(26)로 부터의 비디오 데이터는 첫번째 버퍼링 동작시에 시스템 메모리(30)내로 입력된다. 다음, 제어 노드(18)로 부터의 초기의 명령에 응답하여, 비디오 데이터는 낮은 대기시간 스위치(12)를 통해 디스크 저장 노드(16)로 경로배정되어, 필요할 때 사실상 즉시 액세스될 수 있게 준비된다.
제1c도에는 디스크 저장 노드(16)의 내부가 상세히 도시되어 있다. 각 디스크 저장 노드(16)는 스위치 인터페이스 및 버퍼 모듈(40)을 포함하며, 이 모듈(40)은 RAID 버퍼 비디오 캐쉬 및 저장 인터페이스 모듈(42)과의 사이에서 데이터가 전송되는 것을 가능하게 한다. 인터페이스(42)는 수신된 비디오 데이터를 다수의 디스크(45)상으로 전달하며, 데이터를 유사-RAID 형식(quasi-RAID fashion)으로 이들 디스크에 걸쳐 전파한다. RAID 메모리 저장의 상세한 사항은 종래에 잘 알려진 것으로서, 1988년 6월 1-3일에 시카고에서 개최된 ACM SIGMOD Conference에서 패트슨 등에 의해 발표된 A Case for Redundant Arrays of Inexpensive Disks(RAID)의 109-116 페이지에 상세히 기술된다.
디스크 저장 노드(16)는 또한 내부 PC(44)를 구비하며, 이 PC는 소프트웨어 모듈(46,48)을 포함한다. 이 모듈은 각기 저장 노드 제어 및 비디오 화일 시스템과, 디스크 제어 및 디스크(45)상에 저장된 데이터에 대한 RAID 매핑을 제공한다. 본질적으로, 각 디스크 저장 노드(16)는 테이프 저장 노드(17)보다 더 즉각적인 비디오 데이터 이용도를 제공한다. 각 디스크 저장 노드(16)는 또한 스위치 인터페이스 및 버퍼 모듈(40)의 반도체 메모리내에 비디오 데이터를 (캐쉬 방식으로) 버퍼링하며, 그에 대한 요구 수신시 비디오 데이터를 더욱 빠르게 제공할 수 있게 한다.
일반적으로, 저장 노드는 대량 저장 장치(mass storage unit)(또는 대량 저장 장치에 대한 인터페이스)를 포함하고, 이 저장 장치로 데이터를 기록하거나 혹은 그로부터 판독한 국부적으로 버퍼링하는 능력을 갖는다. 저장 노드는 하나 이상의 테이프 드라이브 및/혹은 디스크 드라이브 형태의 순차 액세스 대량 저장 장치를 포함할 수도 있으며, 랜덤 액세스 유형으로 액세스되는 하나 이상의 디스크 드라이브 및/혹은 반도체 메모리와 같은 랜덤 액세스 저장 장치를 포함할 수도 있다.
제1d도에는 통신 노드(14)의 내부 구성요소가 도시된다. 전술한 각각의 노드와 유사하게, 통신 노드(14)는 전술한 바와 같이 낮은 대기시간 스위치(12)와의 통신을 가능하게 하는 스위치 인터페이스 및 버퍼 모듈(50)을 포함한다. 비디오 데이터는 사용자 터미날(도시되지 않음)로의 전송을 위해 스위치 인터페이스 및 버퍼 모듈(50)과 스트림 버퍼 및 통신 인터페이스(52)사이에서 직접적으로 전송된다. PC(54)는 소프트웨어 모듈(56,58)을 포함하며, 이들 모듈은 각각 통신 노드 제어(예를 들면, 스트림 시작/중단 동작)를 제공하고, 등시성 데이터 스트림의 연속적인 발생을 가능하게 한다. 스트림 버퍼 및 통신 인터페이스(52)에 대한 부가적인 입력(60)은 출력 데이터를 프레임 동기화시킨다. 이 데이터는 자동화 제어 설비(62)로 부터 수신되며, 이 설비는 또한 매체 스트리머(10)(제1도 참조)의 전체적인 동작 제어를 행하는 시스템 제어기(64)에 의해 제어된다. 시스템 제어기(64)는 사용자 제어 세트(set top box)(65)로 부터의 입력에 응답하여, 매체 스트리머(10)가 요구된 비디오 프리젠테이션을 액세스할 수 있게 하는 커맨드를 발생한다. 시스템 제어기(64)는 사용자 인터페이스 및 디스플레이 설비(66)를 구비하며, 이 설비는 사용자로 하여금, 예를 들어, 하드웨어 혹은 소프트웨어 버튼에 의해, 커맨드와 다른 데이터를 입력하여, 비디오 프리젠테이션 식별, 비디오 프리젠테이션의 스케쥴링 및 비디오 프리젠테이션 재생에 대한 제어를 가능하게 한다.
각 제어 노드(18)는 PC로서 구성되며, 낮은 대기시간 스위치(12)와의 인터페이스를 위한 스위치 인터페이스 모듈을 포함한다. 각 제어 노드(18)는 시스템 제어기(64)로 부터의 입력에 응답하여, 통신 노드(14) 및 저장 노드(16,17)로 정보를 제공하므로써 낮은 대기시간 스위치(12)를 통해 원하는 상호접속이 이루어질 수 있게 한다. 또한, 제어 노드(18)는 하나 이상의 디스크 저장 노드(16)로부터 요구된 비디오 데이터를 스테이징(staging)하고, 스트림 전송 인터페이스를 통해 사용자 디스플레이 터미날로 상기 비디오 데이터를 전송할 수 있게 하는 소프트웨어를 포함한다. 제어 노드(18)는 또한 낮은 대기시간 스위치(12)를 통해 전송된 커맨드에 의해 테이프 및 디스크 저장 노드(16,17) 모두의 동작을 제어한다.
매체 스트리머는 제1도에 도시된 3개의 체계화된 외부 인터페이스를 갖는다. 이 외부 인터페이스는 아래와 같다.
(1) 제어 인터페이스(Control Interface) : TCP/IP 프로토콜을 실행하는 오픈 시스템 인터페이스(이서네트 LAN, 토큰 링 LAN, 직렬 포트, 모뎀 등).
(2) 스트림 전송 인터페이스 : 데이터 스트림 전송을 위해 설계된 몇몇 분야 표준 인터페이스들중 하나(NTSC, D1 등).
(3) 자동화 제어 인터페이스 : 스트림 출력의 정확한 동기화를 위한 산업 표준 제어 인터페이스의 집합(GenLock, BlackBurst, SMPTE clock 등).
애플리케이션 커맨드는 제어 인터페이스를 통해 매체 스트리머(10)로 송출된다. 데이터 로드 커맨드(data load command)가 송출되면, 제어 노드는 입력되는 데이터 화일을 세그먼트들(즉, 데이터 블럭들)로 나누고, 이 데이터 화일을 하나 이상의 저장 노드에 걸쳐 유포시킨다. 데이터 자료의 밀도 및 데이터의 동시 사용자 수는 저장 노드(16,17)상의 데이터 배치에 영향을 미친다. 데이터 자료 밀도 및/혹은 동시 사용자 수가 증가하면 용량 및 대역폭을 위해 더욱 많은 저장 노드를 이용하게 된다.
최종 사용자에게로 데이터 스트리밍을 시작하라는 커맨드가 제어 인터페이스를 통해 송출되면, 제어 노드(18)는 적절한 통신 노드(14)를 선택하여 동작시키며, 저장 노드(16,17)상의 데이터 화일 세그먼트 위치를 나타내는 제어 정보를 전달한다. 통신 노드(14)는 자신과 연루될 저장 노드(16,17)를 활성화시키며, 낮은 대기시간 스위치(12)를 통해 전송된 커맨드 패킷에 의해 이들 저장 노드와의 통신을 수행하므로써 데이터 전송을 시작한다.
데이터는 낮은 대기시간 스위치(12)를 통해 적시(just in time) 스케쥴링 알고리즘에 따라 디스크 저장 노드(16)와 통신 노드(14)간에 전송된다. 스케쥴링 및 데이터 흐름 제어에 사용되는 기법은 이하 상세히 기술된다. 통신 노드(14)로부터 출력된 데이터 스트림은, 단일의 통신 노드 스트림이 각 디스크 저장 노드(16)의 용량 및 대역폭의 일부를 사용하도록 디스크 저장 노드(16)로/로부터 다중화된다. 이러한 방법으로, 많은 통신 노드(14)는 디스크 저장 노드(16)상의 동일한 혹은 상이한 데이터에 대한 액세스를 다중화 할 수 있다. 예를 들어, 매체 스트리머(10)는 이들 통신 노드(14)로부터 1500 개의 개별적으로 제어된 최종 사용자 스트림을 제공할 수 있으며, 각각의 스트림은 디스크 저장 노드(16)에 걸쳐 분산된 단일 멀티미디어 화일에 대한 액세스를 다중화한다. 이러한 능력은 단일 복제 다중 스트림(single copy multiple stream)이라고 칭한다.
제어 인터페이스를 통해 수신된 커맨드는 두가지의 상이한 범주에서 실행된다. 데이타를 관리하나 스트림 제어에 직접적으로 연관되지 않은 이들 커맨드는 낮은 우선순위로 수행된다. 이렇게 함으로써, 애플리케이션은 최종 사용자에 대한 데이터 스트림의 전송을 방해하지 않고 새로운 데이터를 매체 스트리머(10)내로 로딩할 수 있다. 스트림 전송에 영향을 끼치는 커맨드(즉, 출력)는 높은 우선순위로 실행된다.
제2도에는 제어 인터페이스 커맨드가 도시되어 있다. 매체 스트리머(10)에서 데이터를 로딩하고 관리하는 낮은 우선순위 데이터 관리 커맨드로는 VS-CREATE, VS-OPEN, VS-READ, VS-WRITE, VS-GET_POSITION, VS-SET_POSITION, VS-CLOSE, VS-RENAME, VS-DELETE, GET_ATTRIBUTES 및 VS-GET_NAMES가 포함된다.
스트림 출력을 시작하고 관리하는 높은 우선순위 스트림 제어 커맨드로는 VS-CONNECT, VS-PLAY, VS-RECORD, VS-SEEK, VS-PAUSE, VS-STOP 및 VS-DISCONNECT가 포함된다. 제어 노드(18)는 스트림 제어 커맨드를 감시하여 요구들이 실행될 수 있게 한다. 제어 노드(18)에서의 이러한 허용 제어(admission control) 기능(facility)은 매체 스트리머(10)의 능력(capabilities)이 초과될 때 스트림을 시작하라는 요구를 거절할 수도 있다. 이러한 동작을 아래와 같은 상황에서 발생한다.
(1) 시스템내의 몇몇 구성요소가 고장나서 최대의 동작이 금지된 경우.
(2) 데이터 화일에 대해 지정된 수(VS-CREATE 커맨드의 파라메터에 의해 지정됨)의 동시 스트림이 초과된 경우.
(3) 시스템으로 부터의 지정된 수(설치시 구성에 의해 지정됨)의 동시 스트림이 초과된 경우.
통신 노드(14)는 각각 잠재적으로 상이한 대역폭(스트림) 능력 및 물리적 정의를 갖는 이종 그룹(heterogeneous group)으로서 관리된다. VS-CONNECT 커맨드는 매체 스트리머(10)에게 통신 노드(14)와, 등시성 데이터 스트림의 전송을 가능하게 하는 그와 관련된 대역폭의 일부 혹은 전부를 할당하도록 명령한다. 예를 들면, 매체 스트리머(10)는 270 Mbits/Sec로 통신 노드(14)를 통해 압촉되지 않은 데이터 스트림을 재생하면서, 다른 통신 노드(14)상에서는 훨씬 더 낮은 데이터 전송속도(보통 1-16 Mbit/Sec)로 압축된 데이터 스트림을 동시에 재생할 수 있다.
저장 노드(16,17)는 각기 잠재적으로 상이한 대역폭(스트림) 능력 및 물리적 정의를 갖는 이종 그룹으로서 관리된다. VS-CREAT 커맨드는 매체 스트리머(10)에게 멀티미디어 화일 및 그와 연관된 메타데이터(metadata)를 위해 하나 이상의 저장 노드(16,17)에서의 저장을 할당하도록 명령한다. VS-CREATE 커맨드는 스트림 밀도와 요구되는 동시 사용자의 최대 수를 지정한다.
VS-CONNECT-LIST, VS-PLAY-AT-SIGNAL 및 VS-RECORD-AT-SIGNAL 의 3개의 부가적인 커맨드는 방송 분야에서 자동화 제어 시스템을 지원한다. VS-CONNECT-LIST는 애플리케이션이 서브시스템에 대해 일련의 재생 커맨드를 단일 커맨드로 지정할 수 있게 한다. 매체 스트리머(10)는 각 재생 커맨드가 제어 인터페이스를 통해 송출된 것처럼 각 재생 커맨드를 실행할 것이지만, 하나의 스트림 전송과 다음 스트림 전송 사이에는 불연속없이 전이할 것이다.
예시적인 시퀀스가 이하 개시된다.
(1) 제어 노드(18)는 FILE 1, FILE 2 및 FILE 3의 전부 혹은 일부가 차례로 재생될 것을 나타내는 재생 서브커맨드와 함께 VS-CONNECT-LIST 커맨드를 수신한다. 제어 노드(18)는 화일의 최대 데이터 전송 속도를 결정하고 통신 노드(14)상에 자원을 할당한다. 할당된 통신 노드(14)는 상세한 재생 리스트를 받아서 등시성 스트림 전송을 시작한다.
(2) FILE 1 전송이 끝날 즈음에서, 통신 노드(14)는 FILE 2의 전송을 시작하지만, 노드의 출력 포트로의 전송은 가능하지 않게 한다. FILE 1이 완료되거나 혹은 자동화 제어 인터페이스로부터 신호가 발생하면, 통신 노드(14)는 제1스트림으로부터 제2스트림으로 출력 포트를 스위칭한다. 이러한 스위칭은 1/30초내에 혹은 하나의 표준 비디오 프레임 시간내에 수행된다.
(3) 통신 노드(14)는 FILE 1과 연관된 자원을 할당해제한다.
VS-PLAY-AT SIGNAL 및 VS-RECORD-AT-SIGNAL은, 외부 자동화 제어 인터페이스로 부터의 신호가 비디오 프레임 경계에 대해 정확하게 재생 및 기록동작을 위한 데이터 전송을 가능하게 한다. 전술한 예에서, VS-CONNECT-LIST는 외부 자동화 제어 인터페이스 신호에 근거하여 FILE 1에서 FILE 2로의 전이(transition)를 가능하게 하기 위한 PLAY-AT-SIGNAL 서브커맨드를 포함한다. 서브커맨드가 그 대신 VS-PLAY 이었다면, 전이는 단지 FILE 1 전송이 완료된 때에만 발생한다.
매체 스트리머(10)가 실행하는 다른 커맨드들은 저장 계층을 관리하는 능력을 제공한다. 이들 커맨드로는 VS-DUMP, VS-RESTORE, VS-SEND, VS-RECEIVE 및 VS-RECEIVE_AND_PLAY이 있다. 각각의 커맨드는 하나 이상의 멀티미디어 화일을 저장 노드(16)와 두개의 외부에서 정의된 계층적 엔티티(hierachical entities) 사이에 이동시킨다.
(1) VS-DUMP 및 VS-RESOTRE는 제어 노드(18)가 액세스가능한 테이프 저장 장치(17)와 디스크 저장 노드(16) 사이의 데이터 전송을 가능하게 한다. 이러한 데이터 전송은 제어 애플리케이션에 의해 혹은 제어 노드(18)에 의해 자동적으로 시작될 수도 있다.
(2) VS-SEND 및 VS-RECEIVE는 멀티미디어 화일을 다른 매체 스트리머로 전송하는 방법을 제공한다. 선택사양적으로, 수신 매체 스트리머는 전체 화일을 기다리지 않고 입력되는 화일을 사전할당된 통신 노드로 즉시 재생할 수 있다.
매체 스트리머 구조내에 정의된 모듈 설계 및 기능 세트에 부가하여, 데이터 흐름은 등시성 데이터 스트림 전송을 위해 최적화되어, 비용이 상당히 감소된다. 특히,
(1) 낮은 대기시간 스위치의 대역폭은 부착된 노드의 대역폭을 초과하며, 노드사이의 통신은 거의 방해받지 않는다.
(2) 프로세서 메모리로의 데이터 전송은 회피되어, 더욱 큰 대역폭이 제공된다.
(3) 데이터의 처리는 회피되어, 값비싼 처리 장비는 불필요해진다.
(4) 데이터의 전송은 주의깊게 스케쥴링되며, 따라서 큰 데이터 캐쉬가 회피되게 된다.
종래의 컴퓨터 개념에서, 매체 스트리머(10)는 상호연결된 어댑터 시스템으로서 가능하며, 낮은 대기시간 스위치(17)를 통해 어댑터들사이에서 피어-투-피어 데이터 전송(peer-to-peer data transfer)을 수행할 수 있는 능력을 갖는다. 낮은 대기시간 스위치(12)는 데이터 저장 장치를 액세스하며, 호스트 컴퓨터의 개입없이 하나의 어터 메모리로부터 다른 어댑터 메모리로 데이터 세그먼트를 전송한다.
[B. 등시적 전송을 위한 디지탈 압축된 비디오 데이터의 계층적 관리]
매체 스트리머(10)는 계층적 저장 요소(hierarchical storage elements)를 제공하며, 극 소형의 비디오 시스템으로부터 초대형 비디오 시스템으로의 스케일어빌러티를 허용하도록 설계되어 있다. 매체 스트리머는 또한 주문형 비디오(Video on Demand), 준 주문형 비디오, 광고 삽입, 고 품질의 비압축 비디오 저장, 포착 및 재생(capture and playback) 기능을 만족시키는데 필요한 다양한 요건에 적합한 저장관리의 융통성을 제공한다.
[B1. 테이프 저장 장치]
매체 스트리머(10)에서, 비디오 프리젠테이션은 고 성능 디지탈 테이프로부터 디스크로 이동되어, 최종 사용자에 의해 요구되는 훨씬 낮은 속도로 재생된다. 이러한 방법으로, 최소한의 비디오 시간이 디스크 서브시스템에 저장된다. 시스템이 준 주문형 비디오인 경우, 예로서, 단지 5분 정도의 영화만이 임의의 한 순간에 디스크 저장 장치에 저장될 필요가 있다. 이것은, 전형적인 2시간짜리 영화를 저장하기 위해 각기 5분짜리 세그먼트가 22개 필요함을 의미한다. 이 결과, 비디오 프리젠테이션 전체가 임의의 한 순간에 디스크 화일에 유지되지 않으므로, 비디오 프리젠테이션을 위한 전체 디스크 저장 요구량은 감소한다. 단지 재생중의 비디오 프리젠테이션 부분만이 디스크 화일에 존재하면 된다.
즉, 비디오 프리젠테이션을 완전히 제공하는데 시간 T가 필요하고, N개의 데이터 블럭을 갖는 디지탈 표현으로 저장되어 있다면, 각 데이터 블럭은 비디오 프리젠테이션의 대략 T/N 기간에 상응하는 비디오 프리젠테이션 부분을 저장한다. N개의 데이터 블럭중 마지막 데이터 블럭은 T/N 기간 미만으로 저장될 수도 있다.
이러한 시스템에 대한 수요가 증대하고 스트림의 수가 증가함에 따라, 통계적인 평균에 따르면, 비디오 스트림 요구의 약 25% 정도가 동일한 영화에 대한 것이 된다. 그러나, 이들 요구는 서로 상이한 초단위 이하의 시간 간격이고, 시청자의 분포는 이들 초단위 이하 요구들중 50% 이상이 15개 영화 세그먼트의 그룹내에 놓이게 될 것이다.
본 발명의 일면은 상기 요구를 만족시키는 최적의 기술을 활용하는 것이다. (예를 들면, IBM사가 제작한)랜덤 액세스 카트리지 로더는 디지탈 테이프 시스템으로서, 이 시스템은 테이프 당 고 저장 능력(high storage capacity), 드로어(drawer) 당 100개 테이프의 기계적인 로보틱 로딩 및 드러오 당 2개까지의 테이프 드라이버를 구비한다. 이러한 설비는 주문형 영화 시스템에 효과적인 테이프 라이브러리이다. 그러나, 본 발명은 또한 영화에 사용되는 대용량 저장 장치를 제공하는 매우 낮은 가격의 디지탈 테이프 저장 라이브러리 시스템을 가능하게 하며, 낮은 요구의 영화가 테이프에서 속도 매칭 버퍼로, 그 다음 비디오 압축해제 및 분산 채널로 직접 재생되는 것을 가능하게 한다.
임의의 비디오 시스템에 계층적인 테이프 저장 장치를 결합하는 두번째 장점은, 디스크가 동작하지 않을 경우에 디스크상에 저장된 임의의 영화로의 신속한 백업을 제공한다는 데 있다. 전형적인 시스템은 여분의(spare) 디스크를 보유하므로, 하나의 디스크 장치가 고장났을 경우, 영화는 테이프로부터 재로딩될 수 있다. 이러한 시스템은 전형적으로 RAID 혹은 유사-RAID(RAID-like) 시스템과 결합된다.
[B2. 디스크 저장 시스템]
비디오 스트림에 대한 요구가 더욱 높은 수준으로 증가하면, 전체 영화를 디스크상에 저장하고, 비디오 데이터를 테이프로부터 디스크로 연속적으로 이동시키는 데 요구되는 시스템 성능 오버헤드를 절약하는 것이 더욱 효과적이다. 라이브러리내의 일반적인 영화의 수는 임의의 한 시각에서 재생될 영화의 수보다 10배에서 100배까지 많으므로, 전형적인 시스템은 또한 테이프상에 저장되는 영화의 라이브러리를 보존하게 된다. 사용자가 특정 영화를 요구할 때, 그 영화의 세그먼트는 디스크 저장 노드(16)로 로드되고 이 노드에서 시작된다.
다수의 사용자가 동일한 영화를 시청하기를 원할 경우, 이 영화를 디스크상에 유지하는 것이 유리하다. 이들 영화는 전형적으로 금주의 가장 인기있는(이하 HOT이라 칭함) 영화로서, 가장 피크를 이루는 시청 시간전에 테이프로부터 디스크로 사전로딩된다. 이로 인해 피크 시청 시간동안 시스템상의 작업 부하를 한층 감소시킬 수 있다.
[B3. 캐쉬로부터의 영화]
HOT 영화에 대한 요구가 증가하면, 매체 스트리머(10)는 MRU-기반 알고리즘(MRU-based algorithm)을 통해 이러한 HOT 영화를 캐쉬로 이동시키기로 결정한다. 이것은 실질적인 캐쉬 메모리를 필요로 하지만, 능동 스트림의 수에 대한 비용의 비율에서 보면, 캐쉬에 의해 지원될 수 있는 큰 용량은 매체 스트리머(10)의 전체 비용을 낮출 수 있다.
비디오 데이터의 속성과, 어느 비디오가 재생중에 있고 어느 데이터가 다음에 요구되며, 얼마나 걸리는지를 시스템이 항상 미리 인식한다는 사실 때문에, 캐쉬, 내부 버퍼, 디스크 저장장치, 테이프 로더, 버스 성능 등을 최적화하는 방법이 사용된다.
모든 저장 매체에 걸친 내용의 배치 및 분산을 제어하는 알고리즘은 광대역폭 스펙트럼 요건에 대한 등시성 데이터의 전송을 가능하게 한다. 등시성 데이터의 전송은 실질적으로 100% 예측가능하므로, 상기 알고리즘은 사용자 액세스 데이터의 캐슁이 항상 예측가능하지는 않은 컴퓨터 분야의 다른 세그먼트에 대해 이용되는 통상적인 알고리즘과는 매우 상이하다.
[C. 매체 스트리머 데이터 흐름 구조]
전술한 바와 같이, 매체 스트리머(10)는 비디오 스트림을 LAN, ATM 등과 같은 네트워크를 통해 부속된 TV 세트 및 셋 탑 박스와 같은 각종 출력 장치로 전송한다. 저장 용량 및 동시 스트림 수에 대한 요건을 만족시키기 위해, 다수의 저장 노드 및 통신 노드를 포함하는 분산된 구조가 바람직하다. 데이터는 저장 노드(16,17)상에 저장되고 통신 노드에 의해 전송된다. 통신 노드(14)는 적절한 저장 노드(16,17)로부터 데이터를 획득한다. 제어 노드(18)는 외부 세계로 단일 시스템 이미지를 제공한다. 이들 노드는 교차 접속형의 낮은 대기시간 스위치(12)에 의해 접속된다.
데이터 속도 및 전송되는 데이터는 각 스트림에 대해 예측가능하다. 본 발명은 이러한 예측가능성을 이용하여, 자원을 최대한 활용하고 필요시에 매 단계에서 각 스트림에 대해 데이터가 이용가능하도록 데이터 흐름 구조를 구성한다.
저장 노드(16,17)와 통신 노드(14)사이의 데이터 흐름은 다양한 방법으로 설정될 수 있다.
통신 노드(14)는 일반적으로 복수의 스트림 전송을 담당한다. 통신 노드는 이들 스트림 각각에 대한 유보 데이터 요구를 가질 수도 있으며, 이 요구된 데이터는 상이한 저장 노드(16,17)로부터의 것일 수도 있다. 만약 상이한 저장 노드가 동일한 통신 노드로의 데이터 전송을 동시에 시도하였다면, 단 하나의 저장 노드만이 데이터를 송신할 수 있을 것이고, 나머지 저장 노드들은 차단될 것이다. 이러한 차단은 이들 저장 노드가 데이터 전송을 다시 시도하게 하므로, 스위치 활용성을 저하시키고, 저장 노드에서 통신 노드로 데이터를 전송하는 데 소요되는 시간을 크게 변화시킨다. 본 발명에 있어서, 상이한 저장 노드(16,17)사이에는 통신 노드(14)의 입력 포트에 대한 회선 쟁탈(contention)이 존재하지 않는다.
요구되는 버퍼링의 양은 아래와 같이 결정될 수 있다. 통신 노드(14)는 저장 노드(16,17)로 요구를 전송하고 데이터를 수신하는 데 걸리는 평균 시간을 결정한다. 이 평균 시간은 저장 노드로 요구를 전송하는 시간과 응답을 수신하는 시간을 저장 노드가 요구를 처리하는 데 필요한 시간에 가산하므로써 결정된다. 저장 노드는 디스크로부터 데이터를 판독하는 데 요구되는 평균 시간과 요구를 처리하는 데 관련된 어떤 지연 시간들을 가산함으로써 그 요구를 처리하기 위해 필요한 평균 시간을 결정한다. 이것이 요구를 처리하는데 있어서의 대기시간(latency)이다. 요구되는 버퍼링의 양은 스트림 데이터 속도로 이 대기시간을 커버하는데 필요한 메모리 저장용량이다. 이하 개시되는 해결책은 매체 스트리머 환경에서의 특수 상황을 이용하여, 대기시간을 감소시키고 따라서 필요한 자원을 감소시킨다. 대기시간은 이전 단계로부터 데이터 요구를 예상하는 동시에, 데이터의 모든 스테이지(예컨대, 저장 노드 및 통신 노드내)에서 적시(just in time) 스케쥴링 알고리즘을 이용함으로써 감소된다.
통신 노드(14)의 입력 포트에 대한 저장 노드(16,17)의 회선 쟁탈은 이하 두가지 기준을 이용하여 제거된다.
(1) 저장 노드(16,17)는 특정 요구의 수신시에만 통신 노드(14)로 데이터를 전송한다.
(2) 주어진 통신 노드(14)는 저장 노드로부터 판독된 데이터에 대한 모든 요구를 직렬화하여, 통신 노드(14)가 전송하고 있는 스트림의 수에 무관하게, 임의의 한 순간에는 통신 노드(14)로부터 데이터를 수신하기 위한 단 하나의 요구만이 존재하게 한다.
전술한 바와 같이, 대기시간의 감소는 모든 스테이지에서 적시 스케쥴링 알고리즘에 의존한다. 이의 기본적인 원리는 스트림의 데이터 흐름의 모든 스테이지에서, 데이터는 그 데이터에 대한 요구가 도달하는 즉시 이용가능하다는 것이다. 이러한 원리로 인해, 요구를 전송하고 임의의 데이터 전송을 수행하는데 필요한 시간에 대한 대기시간이 감소된다. 따라서, 제어 노드(18)가 특정 스트림의 데이터에 대한 요구를 저장 노드(16)로 전송할 때, 저장 노드(16)는 거의 즉각적으로 요구에 대한 응답을 할 수 있다. 이러한 특성은 전술한 회선 쟁탈 문제에 대한 해결책에 있어서 매우 중요한 사항이다.
매체 스트리머 환경에서 데이터에 대한 액세스는 순차적이고 스트림의 데이터 전송 속도는 예측가능하기 때문에, 저장 노드(16)는 기대되는 특정 스트림의 데이터에 대한 다음 요구가 발생할 때를 예상할 수 있다. 이 요구에 응답하여 제공되는 데이터의 아이덴티티도 알려져 있다. 저장 노드(16)는 또한 데이터가 저장되는 위치와 다른 스트림에 대해 기대되는 요구를 알고있다. 이러한 정보와, 디스크로 부터의 판독 요구를 처리하는데 걸리는 예상 시간이 주어지면, 저장 노드(16)는 판독 동작을 스케쥴링하여, 통신 노드(14)로 부터의 요구가 도착하기 바로 전에 데이터를 이용가능하게 할 수 있다. 예를 들어, 스트림 데이터 전송 속도가 250KB/sec이고, 저장 노드(16)가 비디오의 매 4번째 세그먼트를 포함한다면, 이 스트림의 데이터에 대한 요구는 매 4초마다 도착할 것이다. 판독 요구를 처리하는 시간이 500msec라면(판독 요구가 500msec내에 완료될 것이 필수 요건), 이 요구는 통신 노드(14)로부터의 요구 수신이 예상되는 시간보다 적어도 500msec 이전에 스케쥴링된다.
[C1. 제어 노드(18) 기능]
제어 노드(18) 기능은 제어 흐름을 위해 매체 스트리머(10)와 외부 세계간에 인터페이스를 제공하는 것이다. 이 기능은 또한 매체 스트리머(10)가 분산 시스템(distributed system)으로서 구현되더라도, 외부 세계에 단일 시스템 이미지를 제공한다. 제어 노드 기능은 지정된 애플리케이션 프로그램 인터페이스(Application Program Interface:API)에 의해 구현된다. API는 매체 스트리머(10)내에 비디오 내용을 생성하는 기능과 비디오 데이터의 재생/기록과 같은 실시간 기능을 제공한다. 제어 노드(18)는 비디오를 재생 또는 정지시키라는 실시간 요구를 통신 노드(14)로 전송한다.
[C2. 통신 노드(14)]
통신 노드(14)는, 접속/접속해제 요구를 제어하는 스레드(a thread), 재생/정지(play/stop) 및 일지정지/동작재개(pause/resume) 요구를 제어하는 스레드, 점프(jump) 요구(정방향 탐색 및 역방향 탐색)를 제어하는 스레드와 같은 실시간 비디오 인터페이스를 처리하는 전용 스레드(동일 프로세스내에서)를 갖는다. 또한, 통신 노드(14)는 저장 노드(16)로부터 스트림의 데이터를 판독하는 입력 스레드 및 출력 포트로 데이터를 기록하는 출력 스레드를 갖는다.
제3도에는 비디오가 재생되는 동안 데이터를 처리하는 통신 노드(14)에서의 데이터 흐름 구조가 도시되어 있다. 데이터 흐름 구조는 저장 노드(16)로부터 데이터를 획득하는 입력 스레드(100)를 포함한다. 입력 스레드(100)는 저장 노드로부터의 데이터 수신을 직렬화하여, 임의의 한 순간에 단지 하나의 저장 노드만이 데이터를 전송하게 한다. 입력 스레드(100)는, 출력 스레드(102)가 임의의 스트림에 대해 버퍼로부터의 기록을 행해야 할 때, 버퍼가 이미 데이터로 가득 채워져 있게 보장한다. 또한, 스트림에 대한 입력 및 출력 동작을 스케쥴링하는 스케쥴러 기능(104)이 존재한다. 이 기능은 입력 및 출력 스레드(100,102) 모두에 의해 이용된다.
각 스레드는 요구들을 큐로부터 처리한다. 출력 스레드(102)에 대한 요구 큐(106)는 스트림을 식별하고 비워져야 할 관련 버퍼를 가리키는 요구들을 포함한다. 이들 요구는 비디오 출력 인터페이스에 기록될 시간에 따라 순서대로 배열된다. 출력 스레드(102)가 버퍼를 비울때, 출력 스레드는 버퍼가 비워졌음을 표시하고, 스케쥴러 기능(104)을 호출하여 그 스트림에 대한 입력 큐(108)내의 요구를 입력 스레드로 큐잉(버퍼가 가득 채워지도록)하게 한다. 입력 스레드(100)의 큐(108)는 또한 버퍼에 채워질 시간에 따라 순서대로 배열된다.
입력 스레드(100)는 또한 요구 시간에 따라 배열된 큐(108)로부터 요구를 처리한다. 입력 스레드(100)의 역할은 저장 노드(16)로부터 버퍼를 채우는 것이다. 큐내의 각 요구에 대해, 입력 스레드(100)는 아래의 동작을 취한다. 입력 스레드(100)는 그 스트림의 다음 데이터 세그먼트를 가지는 저장 노드(16)를 결정한다(비디오 스트림용 데이터는 바람직하게는 다수의 저장 노드에 걸쳐 스트라이프되어 있다). 입력 스레드(100)는 이후 스트림 데이터를 요구하는 요구를 상기 결정된 저장 노드로 전송(스위치(12)를 통한 메시지를 이용함)하고, 데이터가 도착하기를 기다린다.
이 프로토콜은 임의의 시간에 단지 하나의 저장 노드(16)가 특정 통신 노드(14)로 데이터를 전송하게 될 것을 보장한다. 즉, 이 프로토콜은 저장 노드가 통신 노드(14)로 데이터를 비동기적으로 전송하는 경우에 발생할 수 있는 총돌을 제거하게 된다. 요구된 데이터가 저장 노드(16)로부터 수신되면, 입력 스레드(100)는 버퍼가 가득 찼음을 표시하고, 스케쥴러(104)를 호출하여 (스트림의 데이터 전송 속도에 따라) 출력 스레드(102)로 요구를 버퍼링(스트림의 데이터 속도에 근거함)하여 버퍼를 비운다.
[C3. 저장 노드(16)]
제4도는 스트림의 재생을 지원하는 저장 노드(16)의 데이터 흐름 구조를 도시한다. 저장 노드(16)는 비디오 데이터를 포함하는 버퍼의 풀(a pool of buffers)을 갖는다. 저장 노드(16)는 각각의 논리적 디스크 드라이브에 대한 입력 스레드(110) 및 스위치 매트릭스(12)를 통해 통신 노드(14)에 데이터를 기록하는 출력 스레드(112)를 갖는다. 저장 노드(16)는 또한 동작들을 스케쥴링 하기 위해 입력 및 출력 스레드(110,112)에 의해 이용되는 스케쥴러 기능을 갖는다. 저장 노드(16)는 또한 데이터를 요구하는 통신 노드(14)로 부터의 요구를 처리하는 메시지 스레드(116)를 갖는다.
데이터를 요구하는 메시지가 통신 노드(14)로부터 수신되면, 메시지 스레드(116)는 통상 이미 버퍼링된 요구된 데이터를 찾아서, 출력 스레드로 요구를 큐잉한다(큐(118)). 이들 요구는 시간 순서대로 큐잉된다. 출력 스레드(112)는 버퍼를 비우며, 자유 버퍼의 리스트에 이를 부가한다. 각각의 입력 스레드(110)는 그들 자신의 요구 큐를 갖는다. 연관된 디스크 드라이브상에 비디오 데이터를 갖는 각각의 능동 스트림에 대하여, 큐(120)는 다음 버퍼를 채우도록 요구 시간에 따라 정렬(데이터 전송 속도, 스트라이핑 레벨 등에 근거함)되어 유지된다. 스레드는 큐(120)내에서 제1요구를 취하여, 이를 자유 버퍼와 연관시키고 I/O 요구를 송출하여 디스크 드라이브로 부터의 데이터를 상기 버퍼에 채운다. 버퍼가 가득 차면, 이 버퍼는 풀(full) 버퍼들의 리스트에 부가된다. 이 리스트는 스트림 데이터에 대한 요구가 수신될 때 메시지 스레드(116)에 의해 검사된다. 데이터 메시지가 통신 노드(14)로부터 수신되고 요구된 버퍼가 가득 차지 않았을 때, 이는 기한(deadline)이 잘못된 것으로 간주된다.
[C4. 적시(just in time) 스케쥴링]
적시(just in time) 스케쥴링 기법은 통신 노드(14) 및 저장 노드(16) 모두에 이용된다. 이 기법은 아래의 파라메터를 사용한다.
bc = 통신 노드(14)에서의 버퍼 크기
bs = 저장 노드(16)에서의 버퍼 크기
r = 비디오 스트림 데이터 속도
n = 비디오 스트림 데이터를 포함하는 비디오 스트라이프 수
sr = 스트라이프 데이터 속도
sr = r/n
이 알고리즘은 아래와 같이 사용된다.
(1) sfc = 임의 스트림에 대한 통신 노드에서의 요구의 빈도 = r/bc
(2) dfc = 저장 노드에서의 디스크 판독 요구 빈도 = sr/bs
비디오 데이터의 스트라이핑(striping)은 이후 H 절에서 상세히 설명된다.
요구는 상기 표현들에 의해 결정된 빈도에 따라 스케쥴링되는데, 데이타가 필요하게 되기 이전에 완성된다. 이러한 동작은 비디오 스트림 재생 시작시에 데이터 파이프에 데이터를 주입(priming)함으로써 성취된다.
sfc 및 dfc의 계산은 스트림을 재생하는 통신 노드(14) 및 비디오 데이터를 포함하는 저장 노드(16) 모두에서 접속시에 이루어진다. 상기 빈도(혹은 그 역, 즉, 시간 간격)는, 저장 노드(16)에서 디스크로 부터의 입력을 스케쥴링(제4도 참조)하고, 통신 노드(14)에서 포트로의 출력(및 저장 노드로 부터의 입력)을 스케쥴링(제3도 참조)하는 데 이용된다.
[적시(Just In Time) 스케쥴링의 예]
4개의 저장 노드상에 스트라이프된 비디오로부터 2.0Mbits/sec(250,000바이트/초)로 스트림을 재생한다고 가정한다. 또한 통신 노드에서의 버퍼 크기가 50,000바이트이고, 디스크 노드에서의 버퍼 크기가 250,000 바이트라고 가정한다. 또한, 데이터는 250,000 바이트/sec의 세그먼트들로 스트라이프된다고 가정한다.
적시(Just In Time) 알고리즘에서의 각종 파라메터 값은 다음과 같다.
bc = 250,000 바이트 (통신 노드(14)에서의 버퍼 크기)
bs = 250,000 바이트 (저장 노드(16)에서의 버퍼 크기)
r = 250,000 바이트/sec (스트림 데이터 전송 속도)
n = 4 (이 스트림에 대한 비디오 스트라이프 수)
sr = r/n = 6250 바이트/sec 혹은 250,000/4 sec 즉, 매 4초마다 250,000 바이트
sfc = r/bc = 1/sec (통신 노드(14)에서의 요구 빈도)
dfc = r/bs = 1/sec (저장 노드(16)에서의 요구 빈도)
스트림을 재생하는 역할을 하는 통신 노드(14)는 1/sec의 빈도 혹은 1.0 초의간격으로 입력 및 출력 요구를 스케쥴링한다. 통신 노드(14)는 스트림 전용의 두 버퍼를 갖는다고 가정하면, 통신 노드(14)는 그 비디오 스트림을 출력하기 전에 상기 두 버퍼가 가득 차 있게 한다.
접속시에, 통신 노드(14)는 비디오 데이터의 스트라이프를 포함하는 4개의 모든 저장 노드로 메시지를 전송할 것이다. 첫번째 2개의 저장 노드는 스트라이프로부터의 제1세그먼트에 대한 요구를 기대할 것이며, 버퍼를 채우도록 디스크 요구를 스케쥴링한다. 통신 노드(14)는 입력 요구를 스케쥴하여(제3도) 각각 250,000 바이트의 크기를 갖는 두 버퍼로 첫번째 2개의 세그먼트를 판독할 것이다. 재생 요구시, 통신 노드(14)는 먼저 두 버퍼가 가득 채워져 있게 한 후, 재생이 막 시작됨을 모든 저장 노드(16)에게 알린다. 그리고 나서, 스트림 재생을 시작한다. 첫번째 출력(2Mbit/sec (혹은 250,000 바이트/sec)의 속도로 1초 동안) 되면 통신 노드(14)는 저장 노드(16)로부터 데이터를 요구할 것이다. 통신 노드(14)는 이후 1초의 간격으로 순차적으로 각 저장 노드로부터 데이터를 요구한다. 즉, 4초의 간격으로 특정 저장 노드로부터 데이터를 요구할 것이다. 이러한 통신 노드는 항상 한 번에 250,000 바이트의 데이터를 요구한다. 통신 노드가 저장 노드(16)로부터 데이터를 요구하는 빈도의 계산은 접속시에 통신 노드(14)에 의해 수행된다.
저장 노드(16)는 이하 개시되는 바와 같이 스트림 데이터에 대한 요구를 예상한다. 스트라이프 3을 포함하는 저장 노드(16)(이하 H절 참조)는, 재생이 시작된지 1초후에, 그리고 그 이후에는 매 4초마다 예상할 수 있다. 스트라이프 4를 포함하는 저장 노드(16)는 재새이 시작된지 2초후에, 그리고 그 이후에는 매 4초마다 요구를 예상할 수 있다. 스트라이프 2를 포함하는 저장 노드(16)는 재생이 시작된지 4초후에, 그리고 그 이후에는 매 4초마다 요구를 예상할 수 있다. 즉, 전술한 바와 같이, 각 저장 노드(16)는 소정의 개시시간으로부터 매 4초당 250,000 바이트의 빈도로 디스크로부터 입력을 스케쥴링한다. 이러한 스케쥴링은 재생 커맨드가 수신되고 그 스트림에 대한 버퍼가 출력된 후에 저장 노드(16)에서 이루어진다. 요구 빈도의 계산은 접속 요구가 수신된 때에 수행된다.
통신 노드(14) 및 저장 노드(16)에서 상이한 크기의 버퍼를 사용하는 것도 또한 가능한다. 예를 들면, 통신 노드(14)에서의 버퍼크기는 50,000 바이트일 수 있으며, 저장 노드(16)에서의 버퍼 크기는 250,000 바이트일 수도 있다. 이러한 경우, 통신 노드(14)에서의 요구 빈도는 (250,000/50,000)=5/sec, 즉, 매 0.2초 간격이며, 반면에, 저장 노드(16)에서의 빈도는 1/sec가 될 것이다. 통신 노드(14)는 첫번째 스트라이프를 포함하는 저장 노드로부터 처음 두 버퍼(100,000 바이트)를 판독한다. (세그먼트 크기가 250,000 바이트이고, 첫번째 세그먼트를 포함하는 저장 노드(16)는 접속시에 디스크로부터의 입력을 스케쥴링함에 유의해야 한다.) 재생이 시작되면, 통신 노드(14)는 이를 저장 노드(16)에게 알리고, 첫번째 버퍼를 출력한다. 버퍼가 빌 때, 통신 노드(14)는 다음 입력을 스케쥴링한다. 버퍼는 0.2초마다 비워지며, 통신 노드(14)는 0.2초마다 저장 노드(16)로 부터의 입력을 요구하며, 또한 0.2초 마다 출력을 스케쥴링한다.
본 예에서, 10,000 바이트가 이미 판독되었으므로, 처음에는 3개의 요구가 재생 시작후 4초마다 발생하게 되고, 5개 요구(각기 50,000 바이트)의 다음 시퀀스는 이전 시퀀스의 마지막 요구가 있은지 4초후에 도달하게 되는 첫번째 세그먼트를 제외하고, 저장 노드(16)는 0.2초의 간격으로 5개의 요구가 도착할 것을 예상할 수 있다. 저장 노드에서의 버퍼 크기는 250,000 바이트이므로, 전술한 예와 같이, 저장 노드(16)는 4초마다 디스크로부터 입력을 스케쥴링할 것이다.
[C5. 재생 동작의 설명]
이하 개시되는 단계는 스트림의 재생 동작에 대한 제어 및 데이터 흐름이다. 이들 단계는 재생을 위한 비디오 설정을 나타내며, 제5도에 도시되어 있다. 이들 단계는 시간적 순서로 이루어진다.
1. 사용자는 커맨드를 호출하여 이전에 로딩된 특정 비디오로 포트를 설정한다. 요구는 제어 노드(18)로 전송된다.
2. 제어 노드(18)내의 스레드는 요구 및 VS-CONNECT 기능을 수신한다.
3. 제어 노드 스레드는 그 비디오의 카탈로그 엔트리(catalog entry)를 오픈하여 스트라이프 된 화일 정보로 그 비디오 메모리 기술자를 설정한다.
4. 제어 노드(18)는 요구에 대해 통신 노드(14) 및 그 노드상의 출력 포트를 할당한다.
5. 제어 노드(18)는 할당된 통신 노드(14)로 메시지를 전송한다.
6. 통신 노드(14)내의 스레드는 제어 노드(18)로부터 메시지를 수신한다.
7. 통신 노드 스레드는 스트라이프 화일을 포함하는 저장 노드(16)로 오픈 요구를 전송한다.
8,9. 각 저장 노드(16)내의 스레드는 개방 요구를 수신하여, 요구된 스트라이프 화일을 오픈하며, 임의의 필요한 자원을 할당하는 동시에, 디스크로 부터의 입력을 스케쥴링한다(스트라이프 화일이 최초의 수개 세그먼트를 포함하는 경우).
10. 저장 노드 스레드는 스트라이프 화일에 대한 핸들(식별자)을 갖는 응답을 통신 노드(14)로 복귀시킨다.
11. 통신 노드(14)내의 스레드는 연관된 모든 저장 노드로 부터의 응답을 대기하며, 성공적으로 응답을 수신한 경우, 출력 포트의 설정을 포함하여 스트림 자원을 할당한다.
12. 통신 노드(14)는 이후 입력을 스케쥴하여 비디오 데이터 파이프라인을 주입(prime)한다.
13. 통신 노드(14)는 이후 응답을 다시 제어 노드(18)로 전송한다.
14. 통신 노드(14)로부터 성공적으로 응답을 수신할 경우 제어 노드 스레드는 이 스트림과 연관된 차후의 요구에 이용되도록 이 스트림에 대한 응답을 사용자에게 복귀시킨다.
이하 개시되는 단계는 비디오 스트림이 성공적으로 설정된 후 재생 요구의 수신시 취해지는 동작을 시간적 순서로 나타낸다. 이 단계들은 제6도에 도시되어 있다.
1. 사용자는 재생 커맨드를 호출한다.
2. 제어 노드(18)내의 스레드는 요구를 수신한다.
3. 제어 노드(18)내의 스레드는 수신된 요구가 설정된 스트림에 대한 것인지를 확인하여, 할당된 통신 노드(14)로 재생 요구를 송신한다.
4. 통신 노드(14)내의 스레드는 재생 요구를 수신한다.
5. 통신 노드(14)는 연관된 모든 저장 노드로 재생 요구를 전송하며, 이들 저장 노드는 이 스트림에 대한 차후의 요구를 예상하면서 그들 자신의 동작을 스케쥴링한다. 연관된 저장 노드라 함은 요구된 비디오 프리젠테이션의 스트라이프를 적어도 하나이상 저장하는 노드를 말한다. 연관된 각각의 저장 노드(16)의 스레드는 요구를 수신하여, 이 스트림에 대한 차후의 요구를 서비스하는 스케쥴을 설정한다. 각 연관된 저장 노드는 통신 노드(14)로 응답을 복귀시킨다.
6. 통신 노드 스레드는 데이터 파이프라인(비디오 데이터로 사전로딩됨)을 주입하여, 스트림의 출력을 가능하게 한다. 통신 노드(14)는 이후 응답을 다시 제어 노드(18)로 전송한다.
7. 제어 노드(18)는 스트림이 재생중에 있는 사용자에게로 응답을 다시 전송한다.
입력 및 출력 스레드는 정지/일시정지 커맨드가 수신되거나 혹은 비디오가 완료될 때까지 특성 포트로의 비디오 프리젠테이션을 계속 전송한다.
[D. 매체 스트리머에 대한 사용자 및 애플리케이션 인터페이스]
매체 스트리머(10)는 수동 서버로서, 외부 제어 시스템으로부터 제어 커맨드 수신시에 비디오 서버 동작을 수행한다. 제7도는 매체 스트리머(10) 애플리케이션의 시스템 구조를 나타내며, 시스템에 제공된 인터페이스를 도시한다.
매체 스트리머(10)는 사용자 및 애플리케이션 프로그램에 대한 2레벨의 인터페이스 즉, 사용자 인터페이스(제7도의 (A)) 및 애플리케이션 프로그램 인터페이스(제7도의 (B))를 제공하여 이들의 동작을 제어한다.
2레벨 인터페이스는 모두 고객 제어 시스템에 제공되어, 원격 절차 호출(RPC) 메카니즘을 통해 매체 스트리머(10)와 통신한다. 매체 스트리머(10)상이 아니라 고객 제어 시스템상에 인터페이스를 제공함으로써, 매체 스트리머(10)로부터의 애플리케이션 소프트웨어 분리가 이루어진다. 이것은 고객 제어 시스템상의 애플리케이션 소프트웨어를 변경하거나 혹은 대체할 것을 요구하지 않으므로, 매체 스트리머(10)를 업그레이드하거나 혹은 대체하는 것을 용이하게 한다.
[D1. 사용자 통신]
매체 스트리머(10)는 다음과 같은 두 유형의 사용자 인터페이스를 제공한다.
a. 커맨드 라인 인터페이스(command line interface)
b. 그래픽 사용자 인터페이스(graphic user interface)
[D1.1 커맨드 라인 인터페이스]
커맨드 라인 인터페이스는 사용자 콘솔 혹은 인터페이스(제1도에 참조부호(65,66)로 도시됨)상에 프롬프트를 디스플레이한다. 커맨드 프롬프트가 나타나면, 사용자는 커맨드 키워드로 시작하고 파라메터가 뒤따르는 커맨드를 입력한다. 커맨드의 실행후, 인터페이스는 프롬프트를 다시 디스플레이하고 다음 커맨드 입력을 기다린다. 매체 스트리머 커맨드 라인 인터페이스는 특히 이하 개시되는 두 유형의 동작에 적합하다.
배치 제어(Batch control) : 배치 제어는 일련의 비디오 제어 커맨드를 포함하는 커맨드 스크립트(command script)의 실행 시작을 포함한다. 예를 들면, 방송 분야에서, 커맨드 스크립트는 확장된 기간동안 사전기록되고, 스케쥴링된 프로그램을 포함하도록 미리 준비될 수 있다. 스케쥴링된 시작 시간에, 더 이상의 조작가 개입없이 단일 배치 커맨드에 의해 커맨드 스크립트가 실행되어 방송을 시작하게 된다.
자동제어(Automatic Control) : 자동 제어는 매체 스트리머(10)상에 저장된 자료를 갱신 및 재생하는 프로그램에 의해 발생된 커맨드 리스트의 실행을 포함한다. 예를 들면, 뉴스국(news agency)에서는 매일 매체 스트리머(10)내로 새로운 자료를 로딩할 수 있다. 새로운 자료를 관리하는 애플리케이션 제어 프로그램은 매체 스트리머 커맨드(예를 들면, 로드, 삭제(Delete), 언로드(Unload)를 발생하여 새로운 자료로 매체 스트리머(10)를 갱신할 수 있다. 발생된 커맨드는 실행을 위해 커맨드 라인 인터페이스내로 전송될 수 있다.
[D1.2. 그래픽 사용자 인터페이스]
제8도는 매체 스트리머 그래픽 사용자 인터페이스의 일 예이다. 이러한 인터페이스는 비디오 카셋트 레코더의 제어 패널(control panel)과 유사하며, 재생, 일시정지, 되감기(Rewind) 및 정지와 같은 제어 버튼을 갖는다. 또한, 이 인터페이스는 동작이 사용자에 의한 동작이 선택에 관련될 때 선택 패널을 제공한다(예를 들면, 로드는 사용자에게 로딩할 비디오 프리젠테이션을 선택하도록 요구한다.) 그래픽 사용자 인터페이스는 특히 직접 사용자 인터페이스에 유용하다.
배치 버튼(130) 및 입력/출력(Import/Export) 버튼(132)은 그래픽 사용자 인터페이스에 포함된다. 이들 버튼의 기능은 이하 개시된다.
[D2. 사용자 기능]
매체 스트리머(10)는 다음과 같은 3가지 일반적인 유형의 사용자 기능을 제공한다.
입력/출력,
VCR식 재생 버튼,
확장 사용자 제어.
[D2.1. 입력/출력]
입력/출력 기능은 비디오 데이터를 매체 스트리머(10)내로 혹은 매체 스트리머(10)로부터 전송하는데 이용된다. 비디오가 고객 제어 시스템에서 매체 스트리머(10)로 전송(입력)될 때, 비디오 데이터의 소스는 고객 제어 시스템의 화일 혹은 장치로서 지정된다. 비디오 데이터의 목표는 매체 스트리머(10)내의 고유 명칭으로 지정된다. 비디오가 매체 스트리머(10)에서 고객 제어 시스템으로 전송(출력)될 때, 비디오 데이터의 소스는 매체 스트리머(10)내의 그의 명칭으로 지정되며, 비디오 데이터의 목표는 고객 제어 시스템의 화일 혹은 장치로 지정된다.
사용자 기능의 입력/출력 범주에서, 매체 스트리머(10)는 또한 삭제(delete) 기능을 제공하여 비디오를 제거하며, 속성 획득(get attributes) 기능을 제공하여 저장된 비디오에 대한 정보(명칭, 데이터 속도 등)를 획득한다.
그래픽 사용자 기능을 통해서 입력/출력 기능을 호출하려면, 사용자는 입력/출력 소프트 버튼(132)(제8도)을 클릭해야 한다. 이 입력/출력 버튼을 클릭하면 입력, 출력, 삭제, 속성 획득을 포함하는 새로운 패널이 나타나며 각각의 기능을 호출할 수 있다.
[D2.2. VCR식 재생 제어]
매체 스트리머(10)는 VCR식 재생 제어 세트를 제공한다. 제8도의 매체 스트리머 그래픽 사용자 인터페이스는 로드, 이젝트(Eject), 재생 저속 재생(Slow), 일시정지, 정지, 되감기, 고속 전진(Fast Forward) 및 뮤트(Mute) 기능과 같은 기능들이 이용가능함을 도시한다. 이들 기능은 그래픽 사용자 인터페이스상의 상응하는 소프트 버튼을 클릭하므로써 동작한다. 매체 스트리머 커맨드 라인 인터페이스는 이와 유사한 기능 세트를 제공한다.
설정(setup) - 특정 출력 포트에 대한 비디오를 설정한다. 이는 비디오 카셋트를 VCR내로 로딩하는 것과 유사한다.
재생 - 설정된 비디오 재생을 시작하거나 혹은 일시정지된 비디오 재생을 재개한다.
일시정지(pause) : 비디오 재생을 일시정지한다.
분리(Detach) - VCR로부터 비디오 카셋트를 이젝트하는 것과 유사하다.
상태(status) - 어떤 비디오가 재생중에 있는가 및 경과된 재생 시간과 같은 포트의 상태를 디스플레이한다.
[D2.3. 확장 사용자 제어]
방송 분야와 같은 특정 애플리케이션 요건을 지원하기 위해, 본 발명은 다음과 같은 각종 확장 사용자 제어 기능을 제공한다.
재생 리스트(Play list) - 임의의 포트상에 재생될 복수의 비디오들 및 이들이 재생되는 순서를 설정한다.
재생 길이(Play length) - 비디오가 재생될 시간을 제한한다.
배치 동작(batch operation) - 커맨드 화일에 저장된 동작들의 리스트를 수행한다.
재생 리스트 및 재생 길이 제어 기능은 그래픽 사용자 인터페이스상의 로드 버튼(134)으로 성취된다. 각 설정 커맨드는 특정 포트에 대한 재생 리스트에 부가될 비디오를 지정한다. 이 커맨드는 또한 비디오가 재생되는 시간 제한을 지정한다.
제9도는 재생 리스트에 부가될 비디오를 선택하고 비디오를 재생하기 위한 시간 제한을 지정하기 위해 그래픽 사용자 인터페이스상의 로드라는 소프트 버튼(134)을 클릭하므로써 나타나는 패널을 도시한다. 사용자가 화일(Files) 박스(136)내의 어떤 화일 명칭을 클릭하면, 클릭된 명칭은 화일 명칭 박스(138)로 입력된다. 사용자가 부가(Add) 버튼(140)을 클릭하면, 화일 명칭 박스(138)내의 화일 명칭은 그의 시간 제한과 함께 재생 리스트 박스(142)로 부가되며, 현재의 재생 리스트(재생 리스트상의 각 비디오의 시간 제한과 함께)를 디스플레이한다.
배치 동작을 그래픽 사용자 인터페이스상의 배치 소프트 버튼(134)을 이용하여 성취된다.(제8도 참조)
배치버튼(130)이 클릭되면, 배치 선택 패널이 디스플레이되어 사용자가 커맨드 화일 명칭을 선택하거나 혹은 입력하게 한다. 배치 선택 패널상의 실행(Execute) 버튼(144)을 누른다면, 선택된 커맨드 화일내의 커맨드의 실행이 시작된다. 제10도는 그래픽 사용자 인터페이스상의 배치 및 실행 동작의 일 예이다. 예를 들면, 사용자는 먼저 c:/batchcmd 디렉토리내의 BATCH 2 화일에 커맨드 스크립트를 생성한다. 사용자는 이후 제8도에 도시된 그래픽 사용자 인터페이스상의 배치 버튼(130)을 클릭하여 배치 선택 패널을 나타낼 수 있다. 다음, 사용자는 배치 선택 패널의 디렉토리 박스(146)내의 c:/batchcmd를 클릭한다. 이렇게 하면, 화일 박스(148)내에 화일 리스트가 디스플레이된다. 화일 박스(148)내의 BATCH 2라인을 클릭하므로써, 이 라인은 화일 명칭 박스(150)로 입력된다. 최종적으로, 사용자는 실행버튼을 클릭하므로써 BATCH 2화일에 저장된 커맨드를 차례대로 실행할 수 있다.
[D3. 애플리케이션 프로그램 인터페이스]
매체 스트리머(10)는 전술한 애플리케이션 프로그램(API)을 제공하며, 이에 의해 애플리케이션 제어 프로그램은 매체 스트리머(10)와 대화할 수 있고 그의 동작을 제어할 수 있다. (제7도 참조)
API는 원격 절차 호출(RPC)-기반의 절차들로 구성된다. 애플리케이션 제어 프로그램은 절차 호출을 행하므로써 API 기능을 호출한다. 절차 호출의 파라메터는 수행될 기능을 지정한다. 애플리케이션 제어 프로그램은 매체 스트리머(10)의 논리적 및 물리적 위치를 고려하지 않고 API 기능을 호출한다. 비디오 서비스를 제공하기 위한 매체 스트리머(10)의 아이덴티티(identity)는 고객 제어 시스템 셋업시 혹은 선택사양적으로 애플리케이션 제어 프로그램 개시시에 확립된다. 일단 매체 스트리머(10)의 아이덴티티가 확립되면, 절차 호출은 서비스를 위해 올바른 매체 스트리머(10)로 보내진다.
이하 개시되는 경우 외에, API 기능은 동기하여 처리된다. 즉, 일단 기능 호출이 호출자에게 복귀되면, 이 기능은 완료되며, 매체 스트리머(10)에서 부가적인 처리는 필요치 않다. API 기능을 동기적 동작으로 구현하므로써, 환경 전환(context switching), 비동기적 신호전송 및 궤환을 위한 부가적인 처리 오버헤드가 회피된다. 이러한 성능은 엄격한 실시간 요건에 기인하는 비디오 서버 애플리케이션에서 중요하다.
API 기능의 처리는 요구가 수신되는 순서대로 실행된다. 이러한 실행은 사용자 동작이 정확한 순서대로 처리될 수 있게 한다. 예를 들면, 비디오는 접속(설정)된 후에야 재생될 수 있다. 또 다른 예로써, 일시정지 요구 다음에 후속하는 재생 요구의 순서가 바뀐다면 사용자에게는 완전히 다른 결과가 나타날 것이다.
VS-PLAY 기능은 비디오의 재생을 시작하며, (비디오 재생의 완료까지 기다리지 않고) 즉각적으로 제어를 호출자에게 복귀시킨다. 이 구조의 논리적 근거는, 통상 비디오 재생 시간이 길고(수분~수시간) 예측 불가능(일시정지 혹은 정지 커맨드라 존재할 수 있음)하므로, VS-PLAY 기능을 비동기적으로 이루어지게 하므로써, 예측불가능하게 긴 기간동안 할당되어야 하는 자원을 자유롭게 한다는 것이다.
비디오 재생의 완료시에, 매체 스트리머(10)는 비디오 완료를 애플리케이션 제어 프로그램에게 알리기 위해 애플리케이션 제어 프로그램에 의해 지정된 시스템/포트 어드레스로 비동기적 호출을 발생한다. 시스템/포트 어드레스는, 애플리케이션 제어 프로그램이 API VS-CONNECT 기능을 호출하여 비디오를 접속할 때, 애플리케이션 제어 프로그램에 의해 지정된다. VS-PLAY에 대한 되호출(callback) 시스템/포트 어드레스는 각각의 비디오 레벨에서 지정된다는 것에 유의해야 한다. 이는 애플리케이션 제어 프로그램이 어떤 제어 포인트로도 비디오 완료 메시지를 전송할 수 있다는 것을 뜻한다. 예를 들면, 하나의 애플리케이션이 다수의 혹은 모든 고객 제어 시스템에 대한 비디오 완료 메시지를 처리하기 위해 하나의 중앙 시스템/포트의 사용을 원할 수도 있다. 또 다른 애플리케이션에서는, 다수의 상이한 시스템/포트 어드레스를 이용하여 하나의 고객 제어 시스템에 대한 비디오 완료 메시지를 처리할 수도 있다.
이 같은 API 구조에 따르면, 매체 스트리머(10)는 계층적 하드웨어 및 소프트웨어 플랫폼에 의해, 동기 및 비동기 유형의 동작들을 효율적으로 처리함으로써, 다수의 동시 발생 고객 제어 시스템을 지원할 수 있으면서도 정확한 동작 요구 순서를 보장한다. 예를 들어, 본 매체 스트리머(10)는 PS/2 시스템에서 동작하는 IBM OS/2 오퍼레이팅 시스템을 이용할 수 있는 반면, 고객 제어 시스템은 RS/6000 시스템상에서 동작하는 IBM AIX 오퍼레이팅 시스템을 사용할 수도 있다. (IBM, OS/2, PS/2, AIX 및 RS/6000은 모두 IBM사의 등록상표이다.)
[D4. 고객/매체 스트리머 통신]
고객 제어 시스템과 매체 스트리머(10)사이의 통신은 예를 들면, 잘 알려진 유형의 원격 절차 호출(RPC) 설비를 통하여 성취된다.
제11도는 고객 제어 시스템(11)과 매체 스트리머(10)사이의 RPC 통신 구조를 도시한다. 매체 스트리머 기능을 호출함에 있어서, 고객 제어 시스템(11)은 RPC 고객으로 기능하고, 매체 스트리머(10)는 RPC 서버로 기능한다. 이러한 사실은 제11도에 (A)로 도시되어 있다. 그러나, 비동기적 기능, 즉, VS-PLAY에 대해서는, 그 기능의 완료시에 매체 스트리머(10)가 고객 제어 시스템(11)으로 호출을 발생하게 한다. 이 경우, 고객 제어 시스템(11)은 RPC 서버로 기능하며, 반면에 매체 스트리머(10)는 RPC고객이다. 이러한 사실은 제11도에 (B)로 도시되어 있다.
[D4.1 고객 제어 시스템(11)]
고객 제어 시스템(11)에서, 사용자 커맨드 라인 인터페이스는 3개의 내부 병렬 프로세스(스레드)로 구성된다. 제1프로세스는 사용자 커맨드 라인 입력을 파싱(parse)하고, API 기능을 호출함으로써 요구된 동작을 수행하며, 이에 의해 매체 스트리머(10)에 대한 RPC 호출이 발생된다. (제11도의 (A)). 이러한 프로세스는 또한 다양한 출력 포트에 대해 설정되고 재생되는 비디오들의 상태를 추적한다. 제2프로세스는 주기적으로 그들의 지정된 시간 제한에 대해 각 비디오의 경과된 재생 시간을 검사한다. 비디오가 자신의 시간 제한에 도달하면, 비디오는 정지되고 접속해제되며, 동일 출력 포트에 대한 대기 큐내의 다음 비디오(존재한다면)가 시작된다. 고객 제어 시스템(11)에서 제3프로세스는 RPC 서버로 기능하여 매체 스트리머(10)로부터 VS-PLAY 비동기적 종료 통고(asynchronus termination notification)를 수신한다(제11도의 (B)).
[D4.2 매체 스트리머(10)]
매체 스트리머(10)의 동작이 개시되는 동안, 두 병렬 프로세스(스레드)가 호출되어 고객 제어 시스템(11)과 매체 스트리머(10)사이에서 RPC를 지원한다. 제1프로세스는 고객 제어 시스템(11)으로 부터의 API 기능 호출에 대한 RPC 서버로서 동작한다. 제1프로세스는 RPC 호출을 수신하여 요구된 기능(VS-CONNECT, VS-PLAY, VS-DISCONNECT 등)을 실행하는 절차를 디스패치(dispatch)한다. 제2프로세스는 적절한 고객 제어 시스템 어드레스를 호출하여 비동기적 종료 발생을 애플리케이션 제어 프로그램에게 통지하는 RPC 고객으로서 기능한다. 제2프로세스는 내부 파이프를 대기하기 위해 스스로 차단하며, 이러한 내부 파이프는 비디오 재생을 처리하는 다른 프로세스에 의해 기록된다. 후자, 즉, 다른 프로세스가 비디오의 끝이나 비정상적인 종료 상태에 도달하면, 이 프로세스는 파이프에 메시지를 기록한다. 그러면 차단된 프로세스는 이 메시지를 판독하여, 적절한 고객 제어 시스템(11) 포트 어드레스로 RPC 호출(제11도의 (B))을 발생하며, 이에 의해 고객 제어 시스템은 자신의 상태를 갱신하고 그에 따른 동작을 수행할 수 있다.
[E. 비디오 전송을 위한 매체 스트리머 메모리 구성 및 최적화]
본 발명은 일면은 캐쉬 관리 및 이와 관련된 I/O 동작을 비디오 전송 환경에 알맞게 하기 위한 통삽된 메카니즘을 제공한다. 본 발명의 이러한 일면은 이하 상세히 기술된다.
[E1. 종래의 캐쉬 관리]
캐쉬 관리를 위한 종래의 메카니즘은 캐쉬 제어기 및 오퍼레이팅 시스템의 화일 서브시스템내에 구축된다. 이들은 범용 목적으로 사용되도록 설계되었으며, 비디오 전송 요구를 만족시킬 수 있도록 특수화되어 있지는 않다.
제12도는 통상의 캐쉬 관리 메카니즘이 비디오 전송을 위해 구현될 수 있는 한가지 가능한 방법을 도시한다. 이 기법은 두 디스크 화일(160,162)간에 비디오 분할(한개 화일에 대해서는 너무 크기 때문) 및 화일 시스템(166), 매체 서버(168) 및 비디오 드라이버(170)를 포함하는 프로세스를 이용한다. 또한 두개의 비디오 스트림을 위한 두개의 비디오 어댑터 포트(172,174)가 도시되어 있다. 또한, 디스크 화일(160)의 세그먼트를 주 저장장치로 판독하고 또한 계속해서 이 데이터를 제1비디오 포트(172)에 기록하는 데이터 흐름과, 동일한 세그먼트를 판독하여 이를 제2비디오 포트(174)에 기록하는 데이터 흐름이 도시된다. 제12도는 본 발명의 매체 스트리머(10)에 의해 다루어져서 극복되는 종래 기술에 있어서의 문제점을 설명하기 위해 사용된다.
[제12도의 A1-A12 단계에 대한 설명]
A1. 매체 서버(168)는 화일 시스템(166)을 호출하여 세그먼트 Sk를 비디오 드라이버(170)의 버퍼내로 판독한다.
A2. 화일 시스템(166)은 Sk의 일부분을 화일 시스템(166)내의 캐쉬 버퍼로 판독한다.
A3. 화일 시스템(166)은 케쉬 버퍼를 비디오 드라이버(170)내의 버퍼로 복제한다.
단계 A2 및 A3는 수회 반복된다.
A4. 화일 시스템(166)은 비디오 드라이버(170)를 호출하여 Sk를 비디오 포트 1(172)에 기록한다.
A5. 비디오 드라이버(170)는 Sk의 일부분을 비디오 드라이버(170)내의 버퍼로 복제한다.
A6. 비디오 드라이버(170)는 버퍼를 비디오 포트 1(172)에 기록한다.
단계 A5 및 A6은 수회 반복된다.
단계 A7-A12는 포트 1이 포트 2로 변경된 것을 제외하고는 유사한 방식으로 기능한다. Sk의 일부분이 포트 2에 의해 요구된 때에 화일 시스템(166)내의 캐쉬내에 존재한다면, 단계 A8은 생략될 수 있다.
이해할 수 있는 바와 같이, 비디오 전송은 다수의 데이터 스트림을 통한 대량 데이터의 전송을 포함한다. 전반적인 사용 패턴은 캐슁을 최적화하는 데 사용되는 두 통상적인 패턴들, 즉, 랜덤 및 순차적인 패턴중 어느것에도 적합하지 않다. 랜덤 옵션이 선택되면, 대부분의 캐쉬 버퍼는 최근에 판독된 비디오 세그먼트로 부터의 데이터를 포함할 것이지만, 비디오 세그먼트가 종료되기 전에 그들을 판독하기 위한 라인내의 비디오 스트림을 포함하지는 않을 것이다. 순차적인 옵션이 선택되면, 가장 최근에 사용된 캐쉬 버퍼는 먼저 재사용될 것이고, 따라서 화일 시스템 캐쉬에서 필요한 세그먼트 부분을 발견할 수 있는 기회는 더 적게 될 것이다. 전술한 바와 같이, 비디오 전송의 중요한 요소는 등시적으로 즉, 사용자 혹은 시청자가 만족하지 못할 수 있는 중단없이 데이터 스트림을 전송하는 것이다. 지금 막 설명한 바와 같이, 종래 기술의 캐슁 메카니즘은 사용자에 대한 비디오 데이터 스트림의 등시적 전송을 보장할 수 없다.
제12도에서 예시되는 부가적인 문제점은 다음과 같다.
a. 디스크 및 비디오 포트 I/O는 일반적인 화일 시스템 요건을 만족시키기 위해 비교적 작은 세그먼트로 수행된다. 이것은 비디오 세그먼트 크기의 세그먼트들에 의해 요구되는 것보다 더 많은 처리 시간, 디스크 탐색 오버세드 및 버스 오버헤드를 요구한다.
b. 화일 시스템 캐쉬 버퍼와 매체 서버 버퍼사이 및 매체 서버 퍼버와 비디오 드라이버 버퍼사이에서 데이터를 복제하기 위한 처리 시간은 바람직하지 않은 오버헤드로서 이것은 제거하는 것이 바람직하다.
c. 동일한 시간에 동일한 비디오 세그먼트의 복제본을 포함하는 두 비디오 버퍼(172,174)를 이용하는 것은 주 메모리 사용에 있어서 비효율적이다. 심지어 동일한 데이터가 화일 시스템 캐쉬에도 저장되고 비디오 드라이버 버퍼에도 저장될 때는 더욱 낭비된다.
[E2. 비디오용으로 최적화된 캐쉬 관리]
본 발명의 일측면에 따른 캐쉬 관리 동작의 3가지 주요한 유형은, 스트림에 걸친 세그먼트 크기의 캐쉬 버퍼 공유, 예측 캐슁(predictive caching) 및 캐슁을 최적화하기 위한 동기화이다.
[E2.1. 스트림에 걸친 세그먼트 크기의 캐쉬 버퍼 공유]
비디오는 고정된 크기의 세그먼트로 저장되어 관리된다. 세그먼트는 순차적으로 번호가 매겨지고, 예를 들면 세그먼트 5는 세그먼트 6보다 프리젠테이션의 시작에 더 근접한 비디오 프리젠테이션의 일 부분을 저장하게 된다. 세그먼트 크기는 디스크 I/O, 비디오 I/O, 버스 사용 및 프로세서 사용을 최적화하도록 선택된다. 비디오 세그먼트는 비디오 명칭에만 의존하는 고정된 내용 및 세그먼트 번호를 갖는다. 디스크 및 비디오 출력을 위한 모든 I/O 및 모든 캐슁 동작은 세그먼트 경계상에서 정렬되어 수행된다.
본 발명의 이러한 측면은, 기초적인 하드웨어가 피어-투-피어 동작을 지원하는지의 여부, 즉, 통신 노드(14)내의 캐쉬 메모리를 통하지 않고, 통신 노드(14)내의 디스크와 비디오 출력 카드사이에 직접적인 데이터 흐름이 이루어지느냐의 여부에 따라 두가지 형식을 갖는다. 피어-투-피어 동작의 경우, 캐슁은 디스크 저장 장치(16)에서 수행된다. 피어-투-피어 동작을 지원하지 않는 하드웨어의 경우, 데이터는 세그먼트 크기의 블럭들로 (통신 노드(14)내의) 페이지 정렬된 연속하는 캐쉬 메모리내로 직접 판독되어, I/O 동작 및 데이터 전송을 최소화시킨다(이하 개시되는 F절의 비디오 최적화 디지탈 메모리 할당을 참조).
상기 데이터는 동일 위치에 유지되며, 비디오 세그먼트가 더 이상 필요하지 않을 때까지 이 위치에서 직접적으로 기록된다. 비디오 세그먼트가 캐슁된 동안, 비디오 세그먼트를 출력하는데 필요한 모든 비디오 스트림은 동일한 캐쉬 버퍼를 액세스한다. 따라서, 비디오 세그먼트의 단일 복제는 다수의 사용자에 의해 이용되며, 동일한 비디오 세그먼트의 부가적인 복제본을 판독하기 위한 부가적인 I/O, 프로세서 및 버퍼 메모리 사용은 회피된다. 피어-투-피어 동작에 대해, 남아있는 I/O의 절반, 거의 모든 프로세서 및 주 메모리 사용은 통신 노드(14)에서 회피된다.
제13도는 피어-투-피어 동작이 없는 시스템의 경우에 대한 본 발명의 구현을 도시한다. 비디오 데이터는 디스크 저장 노드(16)상에서 스트라이프되고, 따라서 홀수 번호의 세그먼트는 제1디스크 저장 노드(180)상에 존재하고, 짝수 번호의 세그먼트는 제2디스크 저장 노드(182)상에 존재하게 된다(이하 개시되는 H절 참조).
이러한 구성에 대한 데이터의 흐름이 또한 제13도에 도시되어 있다. 도시된 바와 같이, 세그먼트 Sk는 디스크(182)로부터 통신 노드(186)내의 캐쉬 버퍼(184)로 판독되고, 이후 비디오 출력 포트 1 및 2에 기록된다. Sk 비디오 데이터 세그먼트는 하나의 I/O 동작에 의해 캐쉬 버퍼(184)내로 직접 판독되며, 이후 포트 1에 기록된다. 다음, Sk 비디오 데이터 세그먼트는 하나의 I/O 동작에 의해 캐쉬 버퍼(184)로부터 포트 2에 기록된다.
이해할 수 있는 바와 같이, 제12도에 도시된 종래의 방법에 대해 설명된 모든 문제점들은 제13도에 도시된 시스템에 의해 극복된다.
제14도는 디스크 저장 노드와 비디오 출력 카드 사이의 피어-투-피어 동작에 대한 지원을 포함하는 구성에서의 데이터 흐름을 도시한다. 디스크 드라이브쌍(190,192)은 스트라이프된 비디오 프리젠테이션을 포함하며, 이 비디오 프리젠테이션은 개재된 통신 노드(14)의 주 메모리를 통과하지 않고 비디오 포트 쌍(194,196)에 직접 제공된다.
이러한 구성에 대한 데이터 흐름은(하나의 I/O 동작에 의해) 디스크(192)로 부터 디스크 캐쉬 버퍼(198)를 거쳐 포트 1로 직접 세그먼트 Sk를 판독하는 것이다.
세그먼트 Sk를 포트 2로 판독하는 호출이 따르는 경우, 세그먼트 Sk는 (하나의 I/O 동작으로) 디스크 캐쉬 버퍼로부터 포트 2로 직접 판독된다.
포트 1에 대하여 디스크 캐쉬 버퍼(198)내로의 판독된 데이터 포트 2에 대한 기록을 위해 여전히 존재하면, 메모리, 버스 및 프로세스 자원의 가능한 최상의 사용으로 포트 1 및 2에 대한 비디오 세그먼트의 전송이 이루어진다.
예를 들어, 통신 노드(14)의 단 하나의 포트로 재생중인 비디오 프리젠테이션에 대해 피어-투-피어 동작을 이용하고, 통신 노드(14)의 복수의 포트로 재생중인 비디오 프리젠테이션에 대해 통신 노드(14)내의 캐슁을 이용함으로써, 피어-투-피어 동작과 주 메모리 캐슁 메카니즘을 결합하는 것도 가능하다.
디스크 저장 노드와 통신 노드사이에 캐슁 역할을 분할하는 방안이, 주어진 하드웨어 구성에 의해 지원될 수 있는 비디오 스트림의 수를 최대로 하기 위해 선택된다. 만약 지원되어야 할 스트림의 수가 알려져 있다면, 캐슁 저장의 양 및 배치는 결정될 수 있다.
[E2.2. 예측 캐슁]
예측 캐슁 메카니즘은 비디오 전송에 적합한 캐슁 방안에 대한 필요를 만족시킨다. 비디오 프리젠테이션은 일반적으로 매우 예측가능하다. 전형적으로, 이들 비디오 프리젠테이션은 처음에 재생을 시작하여, 상당히 긴 사전설정된 기간동안 고정된 속도로 재생하며, 종료점에 도달했을 때만 정지한다. 매체 스트리머(10)의 캐슁 방안은 이러한 예측가능성을 이용하여 임의의 시간에 캐쉬되는 비디오 세그먼트 세트의 최적화를 성취한다.
이러한 예측가능성은 판독 동작을 스케쥴링하여 캐쉬 버퍼를 채우고, 캐쉬 버퍼를 재사용하는 알고리즘을 구동하는데 이용된다. 이용된 후 소멸될 것으로 예측되는 내용을 가진 버퍼는 즉시 재사용되어, 더 높은 우선 순위의 사용을 위해 공간을 해방한다. 적절한 시간에 적용되어야 하는 내용을 갖는 버퍼는, 그들의 마지막 사용이 비록 오래전에 있었다고 할지라도 재사용되지 않는다.
보다 구체적으로, 비디오 v1, v2, . . . 가 있고, 이들 비디오를 재생하는 스트림 s1, s2, . . .이 주이지면, 각 스트림 sj 은 하나의 비디오 v(sj)를 재생하고, v(sj)의 k번째 세그먼트의 기록을 위해 예측된 시간은 선형 함수,
t(sj, k) = a(sj) + r(sj)k
이다. 여기서, a(sj)는 시작 시간 및 시작 세그먼트 번호에 의존하고, r(sj)는 세그먼트를 재생하는데 걸리는 일정시간이며, t(sj,k)는 스트림 sj의 k번째 세그먼트를 재생하도록 스케쥴링된 시간이다.
이러한 정보는 판독 동작을 스케쥴하여 캐쉬 버퍼를 채우고, 캐쉬 버퍼의 재사용을 위한 알고리즘을 제어하는 데 사용된다. 캐쉬 관리 알고리즘 동작의 몇몇 예가 이하 개시된다.
[예 A]
현재 재생중인 임의의 비디오 스트림들중 어느 것에 의해서도 재생되지 않을 것으로 예측되는 비디오 세그먼트를 포함하는 캐쉬 버퍼가, 재생이 예측되는 임의의 버퍼를 재사용하기 전에 재사용된다. 이러한 제약 조건(constraint)을 만족시킨 후, 비디오 재생 빈도 및 세그먼트 번호를 가중치로 이용하여, 비디오 세그먼트의 캐슁을 유지하는 우선 순위를 결정한다. 이러한 그룹내의 최고 보유 우선순위는 빈번히 재생되는 비디오에서 초기에 발생하는 비디오 세그먼트에 할당된다.
[예 B]
재생이 예측되는 비디오 세그먼트를 포함하는 캐쉬 버퍼에 대해서, 다음 예측되는 재생 시간 및 비디오 세그먼트를 재생하기 위해 남은 스트림들의 수를 가중치로 사용하여, 비디오 세그먼트가 캐슁을 유지하는 우선순위를 결정한다. 이 가중치는 본질적으로, 캐쉬 버퍼의 보유 우선 순위를, 임의의 비디오 세그먼트에 대해 캐쉬 버퍼가 재사용된 경우의 예측되는 I/O의 수와 캐쉬 버퍼가 보유된 경우의 예측되는 I/O 수와의 차로 설정되게 한다.
예를 들어, v5가 s7상에서 재생되고, v8이 s2 및 s3상에서 재생되며(s2는 s3보다 5초뒤진다), v4가 스트림 s12 내지 s20 상에서 재생된다면(각 스트림은 다음보다 30초 뒤진다), s7에 의해 이미 사용된 v5 데이터를 포함하는 버퍼가 먼저 재사용되고, 뒤이어 s2에 의해 이미 사용된 v8 데이터를 포함하는 버퍼가 재사용되며, 뒤이어 s12에 의해 이미 사용된 v4 데이터를 포함하는 버퍼가 재사용되고, 뒤어어 가장 낮은 보유 우선순위를 갖는 남아있는 버퍼가 재사용된다.
캐쉬 관리 알고리즘은 접속 동작(가까운 장래에 비디오 세그먼트가 재생될 것을 예측할 수 있지만, 그 때가 정확하지는 않은 경우) 및 정지 동작(이전 예측이 수정되어야 할 경우)과 같은 특정한 경우를 위해 변화를 제공한다.
[E2.3. 캐슁 최적화를 위한 스트림 동기화]
주어진 비디오 세그먼트를 포함하는 캐쉬 버퍼가 저장장치에 머무르는 시간을 최소화하여 다른 비디오 스트림에 대해 사용가능한 시스템 용량을 더 많이 남겨두기 위해서는, 그 주어진 비디오 세그먼트를 요구하는 모든 스트림을 클러스터화(cluster)하는 것이 바람직하다. 비디오 재생중에는, 통상 세그먼트가 재생되는 속도에 거의 융통성이 없다. 그러나, 몇몇 비디오 전송 애플리케이션에서 재생 속도는 융통성이 있다(즉, 비디오 및 오디오는 사람의 역반응을 일으키지 않고 조금씩 가속되거나 감속될 수 있다). 또한, 비디오는 시청자의 즉시 시청이외의 목적을 위해 전송될 수 있다. 속도의 변화가 허용되는 경우, (시간상) 앞에서 나오는 스트림은 최소 허용 속도로 재생되며, (시간상) 뒤에어 나오는 스트림 출력은 최대 허용 속도로 재생되어 스트림들사이의 간격을 좁히고 세그먼트가 버퍼링되어 있는 시간을 감소시킨다.
접속 및 재생 동작동안 동일한 비디오 프리젠테이션을 사용하는 스트림들의 클러스터화가 또한 고려된다. 예를 들어, VS-PLAY-AT-SIGNAL 은 복수의 스트림상에서 동시에 비디오 재생을 시작하는 데 사용될 수 있다. 이러한 동작은 클러스터화를 개선시켜, 다른 비디오 스트림을 위해 더 많은 시스템 자원을 남겨놓으므로써, 시스템의 유효 용량을 증가시킨다. 보다 구체적으로, 클러스터화는, 첫번째 스트림을 두번째 스트림과 일치하도록 단기간 지연시킴으로써, 캐쉬내의 세그먼트들의 하나의 복제본이 상기 두 스트림 모두에 사용될 수 있게 하여 처리 자산을 절약한다.
[F. 비디오용으로 최적화된 디지탈 메모리 할당]
디지탈 비디오 데이터는 그것이 랜덤하지 않고 순차적이며 대용량이고 내용보다는 오히려 시간이 중요하다는 점에서 정규 데이터 프로세싱 데이터와는 다른 속성을 갖는다. 복수의 데이터 스트림은 높은 비트 속도로 전송되어야 하며, 데이터 경로내의 모든 중요하지 않은 오버헤드는 최소화되어야 한다. 매체 스트리머(10)의 효율 및 능력을 최대화하기 위해 주위깊은 버퍼 관리가 요구된다. 메모리 할당, 할당해제 및 액세스는 이러한 프로세스에서 중요 요소로서, 부적절한 사용으로 인해 메모리 단편화, 효율의 감소 및 비디오 데이터의 지연 및 변질이 초래될 수 있다.
본 발명의 매체 스트리머(10)는 고급 애플리케이션으로 하여금 디지탈 비디오 데이터에 대한 스왑불가능(non-swappable)하며 페이지 정렬된 연속하는 메모리 세그먼트(블럭)를 할당 및 할당해제하게 허용하는 메모리 할당 절차를 이용한다. 이 절차는 비디오 전송 애플리케이션에 단순한 고급 인터페이스를 제공하며, 저급 오퍼레이팅 시스테 모듈 및 코드 세그먼트를 이용하여 요구된 크기로 메모리 블럭을 할당한다. 이 메모리 블럭은, 물리적 메모리내에서 연속적이고 고정되어, 가상 메모리 스와핑 혹은 페이징으로부터 발생 가능한 지연 혹은 변질과, 데이터 전송 소프트웨어로 수집/분산 루틴을 구현해야만 하는 복잡성을 제거한다.
고급 인터페이스는 또한 요구된 메모리 블럭에 대한 다양한 어드레싱 모드값을 복귀시키므로, 매체 스트리머 환경에서 동시에 동작할 수 있는 각종 메모리 모델에 적합하도록 고가의 동작 능동 어드레스 변환을 행해야 할 필요성을 없앤다. 물리적 어드레스는 각종 애플리케이션에 의해 이용되는 프로세서 선형(process linear) 및 프로세스 세그먼트된 어드레스(process segmented address)는 물론, 고정 디스크 장치와 같은 다른 장치 드라이버에 의한 직접 액세스에도 사용가능하다. 메모리 블럭을 시스템으로 복귀시키는 할당해제 루틴을 또한 제공하여, 메모리 단편화 문제를 제거하는데, 이것은 메모리가 모두 단일 블럭으로서 복귀되기 때문이다.
[F.1. 메모리 할당에 이용되는 커맨드]
[1. 물리 메모리 할당]
요구된 크기의 메모리 블럭을 할당한다. 제어 블럭은 이 제어 블럭의 길이와 함께 메모리 영역의 각종 메모리 모델 어드레스를 가지고 복귀된다.
[2. 물리적 메모리 할당해제]
메모리 블럭을 오퍼레이팅 시스템으로 복귀시키고 관련된 메모리 포인터를 해방시킨다.
[F2. 애플리케이션 프로그램 인터페이스]
장치 드라이버가 시스템 구성 화일내에 정의되면, 시스템의 작동개시시에 자동적으로 초기화된다. 이후, 애플리케이션은 의사 장치(a pseudo device)로서 장치 드라이버를 오픈하여 그의 라벨을 획득한 후, 인터페이스를 사용하여 커맨드 및 파라메터를 전송한다. 지원되는 커맨드는 메모리 할당 및 메모리 할당해제이며, 파라메터는 논리적 메모리 어드레스에 대한 메모리 크기 및 포인터이다. 이들 어드레스는 일단 메모리의 물리적 블럭이 할당되면 장치 드라이버에 의해 설정되고, 물리적 어드레스가 논리적 어드레스로 변환된다. 할당이 실패하면, 널(null)이 복귀된다.
제15도는 이러한 절차를 이용하는 전형적인 애플리케이션 세트를 도시한다. 32비트 애플리케이션은 데이터를 위해 버퍼 1을 요구하며, 이후 데이터는 수정되어 버퍼 2로 배치된다. 그리고 나서, 이 버퍼는 세그먼트된 어드레스를 이용하는 16비트 애플리케이션에 의해 혹은 고정 디스크 드라이브와 같은 물리적 장치에 의해 직접적으로 조작된다. 이러한 할당 방안을 사용하여, 고정된 물리적 연속 버퍼를 사전할당함으로써, 각 애플리케이션은 데이터를 액세스하기 위해 각자 고유의 직접 어드레싱을 사용하는 것이 가능하게 되어, 어드레스 변환 및 동적 메모리 할당 지연이 제거된다. 비디오 애플리케이션은 이러한 방안을 사용하여 디지탈 비디오 데이터를 물리적 디스크로부터 버퍼로 직접 배치한 후, 이 디지탈 비디오 데이터를 프로세스내에서 여러번 이동시키지 않고 출력 장치로 직접적으로 전송하므로써 데이터 이동을 최소화시킨다.
[G. 비디오 애플리케이션을 위해 최적화된 디스크 드라이브]
비디오 스트림은 사람의 눈에 움직임이 불연속적인 것으로서 인식되고 귀에 의해 소리가 끊기는 것으로 인식될 수 있을 정도의 지연없이 그들의 목적지로 등시적으로 전송되어야 한다는 것이 중요하다. 현재의 디스크 기술은 데이터 액세스시에 심각한 지연을 초래할 수 있는 예측 실패 분석(predictive failure analysis)을 수행하는 것과 같은 주기적인 동작을 포함한다. 대부분의 I/O 동작이 100ms 내에서 완료되는 반면, 100ms 의 주기적인 지연은 일반적인 현상이며 꼬박 3초의 지연이 발생할 수 있다.
매체 스트리머(10)는 고속의 데이터 전송을 효율적으로 유지할 수 있어야 한다. 범용 데이터 저장 및 검색을 위해 구성된 디스트 드라이브는, 비디오 서버 애플리케이션에 대해 최적화되지 않는다면, 메모리, 디스크 버퍼, SCSI 버스 및 디스크 용량의 사용에 있어서 비효율적이 된다.
본 발명의 일 측면에 따르면, 본 발명과 함께 이용된 디스크 드라이브는 디스크 파라메터를 최적화하므로써 대량 데이터의 시기 적절하고 매끄러운 전송을 수행하도록 적합화된다. 이들 파라메터는 비디오 서버에 대해 특수화된 디스크 드라이브의 제조시에 적용될 수 있으며, 혹은 커맨드 메타니즘을 통해 설정될 수 있는 변수일 수도 있다.
주기적인 동작을 제어하는 파라메터는 지연을 제거하거나 최소화하도록 설정된다. 버퍼 사용에 영향을 끼치는 파라메터는 단일의 판독 혹은 기록 동작으로 초대량의 데이터 전송을 허용할 수 있도록 설정된다. SCSI 버스와 프로세서 버스 사이의 속도 정합에 영향을 주는 파라메터는, 데이터 전송이 너무 빨리 혹은 너무 늦게 시작되지 않도록 조정된다. 디스크 매체 그 자체는 유효 용량 및 대역폭을 최대화하는 섹터 크기로 포맷(format)된다.
최적화를 달성하려면, 물리적 디스크 매체는 최대 허용 물리적 섹터 크기를 갖도록 포맷되어야 한다. 이러한 포맷 옵션은 섹터사이의 간격에서 소모되는 공간의 양을 최소화하고, 장치 용량을 최대화하며, 버스크 데이터 전송 속도(burst data rate)를 최대화한다. 바람직한 구현은 744 바이트의 섹터이다.
디스크는 관련 버퍼(associated buffer)를 가질 수도 있다. 이 버퍼는 데이터의 전송 동안 버스의 이용도에 따라 비동기적으로 디스크 매체로부터 데이터를 판독하는 데 사용된다. 유사하게 이 버퍼는 디스크 매체로의 데이터 전송과는 비동기적으로 버스로부터 도달하는 데이터를 유지하는데 사용된다. 버퍼는 다수의 세그먼트로 분할될 수또 있으며, 이 분할된 세그먼트의 수는 파라메터에 의해 제어된다. 너무 많은 세그먼트로 분할된다면, 각각의 세그먼트는 단일 전송시에 요구되는 데이터의 양을 유지하기에 너무 작을 수도 있다. 버퍼가 가득 찰 경우, 장치는 재접속을 초기화하고 전송을 시작한다. 이 때, 버스/장치가 이용가능하지 않으면, 순환 지연(rotational delay)이 계속해서 발생할 것이다. 바람직한 구현에서, 이 값은, 임의의 버퍼 세그먼트가 적어도 전송 데이터의 크기만큼 크도록(예를 들면, 1) 설정되어야 한다.
버퍼 세그먼트가 판독 동작에 의해 채워지기 시작하면, 디스크는 호스트로의 데이터 전송을 행하기 위해 버스에 대한 재접속을 시도한다. 디스크가 이러한 재접속을 시도하는 시점은 버스 활용의 효율성에 영향을 끼친다. 버스와 디스크의 상대적인 속도는 버퍼 채움(full) 동작 동안에 호스트로 데어터 전송을 시작하기에 최적의 시점을 결정한다. 유사하게, 기록 동작동안, 버퍼는 호스트로부터 도달하는 데이터로 채워질 것이며, 채움 동작의 특정 시점에서 디스크는 버스에 대한 재접속을 시도해야 한다. 정확한 속도 정합으로, SCSI 버스상에서의 접속해재/재선택 사이클은 더욱 최소화되며, 최대 처리량(higher maximum throughput)이 더 커지게 된다.
재접속이 시도되는 시기를 제어하는 파라메터들은 판독 버퍼 채움 비(read buffer full ratio) 및 기록 버퍼 비움 비(write buffer empty ratio)로 칭해진다. 비디오 데이터의 경우, 이들 비를 계산하는 바람직한 알고리즘은 256X(순시 SCSI 데이터 전송 속도-유지가능한 디스크 데이터 전송 속도)/순시 SCSI 데이터 전송 속도이다. 버퍼 채움 비 및 버퍼 비움 비의 현재의 바람직한 값은 약 204이다.
몇몇 디스크 드라이브 설계는 온도 변화에 따라 헤드 위치의 주기적인 재조정을 요구한다. 이들 디스크 드라이브 유형중 몇몇은 또한 동일한 시간에 조립체내의 모든 헤드에 대해 열적 보상이 이루어졌는지 혹은 한 번에 하나의 헤드에 대한 열적 보상만이 이루어졌는지의 여부에 따른 제어를 허용한다. 모든 헤드에 대한 열적 보상이 한번에 이루어졌다면, 비디오 데이터에 대한 판독 동작동안 수백 msec의 지연이 계속해서 발생할 수 있다. 판독시의 지연이 길면 길수록, 데이터 흐름을 매끄럽게 하고 멀티미디어 프리젠테이션에서의 결함을 방지하기 위해 더 큰 주 메모리 버퍼가 필요하게 된다. 바람직한 해결방안은 한번에 하나의 헤드를 열적 보상할 수 있도록 열정 보상 헤드 제어 기능(Thermal Compensation Head Control function)을 프로그램하는 것이다.
에러 기록의 보관 및 예측 실패 분석(predictive failure analysis)의 수행을 완료하는데는 수초가 걸릴 수 있다. 이들 지연은 멀티미디어 프리젠테이션에서 지연을 감소시키고 결함을 방지하는 매우 큰 주 메모리 버퍼가 없다면 비디오 서버 애플리케이션에 의해서 용인될 수 있다. 유휴 시간 제한 기능 파라메터(Limit Idle Time Function parameters)는 에러 기록의 보관 및 유휴 시간 기능 수행을 금지하는 데 사용될 수 있다. 바람직한 구현은 이들 기능을 제한하도록 파라메터를 설정한다.
[H. 비디오 데이터에 대한 데이터 스트라이핑]
비디오 애플리케이션에서는, 동일한 데이터로부터 복수의 스트림을 전송할 필요성(예를 들면, 영화)이 있다. 이러한 필요는 고속 데이터 전송속도, 즉, 하나의 스트림을 전송하는데 필요한 데이터 전송 속도를 동일한 데이터를 동시에 액세스하는 스트림의 수만큼 승산한 속도로 데이터를 판독할 필요성을 의미한다. 통상적으로, 이러한 문제는 다수의 데이터 복제본을 가짐으로써 해결되었으며, 이로 인해 부가적인 비용이 발생되었다. 본 발명의 매체 스트리머(10)는 데이터의 단일의 복제본으로부터 다수의 동시 스트림을 서비스하는 기법을 이용한다. 이 기법은 개별 스트림에 대한 데이터 속도 및 데이터를 동시에 액세스할 수 있는 스트림의 수를 고려한다.
전술한 데이터 스트라이핑은, 데이터가 스트라이프(stripe)로 칭해지는 복수의 화일 요소(multiple file components)로 존재하도록 분할되는 논리적 화일 개념을 포함한다. 각 스트라이프는 상이한 디스크 용적상에 존재할 수 있으며, 이로 인해 논리적 화일은 복수의 물리적 디스크들에 걸쳐 있을 수 있다. 디스크는 근거리에 혹은 원거리에 존재할 수도 있다.
데이터는 논리적 화일에 기록될 때, 순차적으로 스트라이프내에 배치될 수 있는 논리적 길이(즉, 세그먼트)로 분할된다. 제16도에 도시한 바와 같이, 비디오, 즉, 비디오 1에 대한 논리적 화일은 각기 지정된 크기(예컨대, 256KB)를 갖는 M개의 세그먼트 또는 블럭으로 분할된다. 마지막 세그먼트는 단지 일부만이 데이터로 채워질 수 있다. 하나의 데이터 세그먼크가 제1스트라이프에 배치된 후, 다음 세그먼트가 제2스트파이프에 배치되는 형식으로, 데이터 세그먼트의 배치가 이루어진다. 세그먼트가 각 스트라이프에 모두 기록되면, 다음 세그먼트는 제1스트라이프에 기록된다. 따라서, 화일이 N개의 스트라이프로 스트라이프되어있다면, 스트라이프 1은 세그먼트 1, N+1, 2*N+1 등을 포함하며, 스트라이프 2는 세그먼트 2, N+2, 2*N+2 등을 포함할 것이다.
이와 유사한 데이터 스트라이핑이 데이터 프로세싱 RAID 구성에 사용되는 것으로 알려져 있는데, 여기서 스트라이핑의 목적은 디스크가 손실되는 경우 데이터 보전성(data integrity)을 보장하기 위한 것이다. 이러한 RAID 저장 시스템은 N개의 디스크중 하나를 데어터 복구가 요구된 경우에 이용되는 패리티 데이터의 저장 장치에 제공한다. 매체 스트리머(10)의 디스크 저장 노드(16)는 RAID식 구조로 구성되지만, 비디오 데이터의 복제본이 테이프 저장장치로부터 이용가능하므로, 패리티 데이터는 요구되지 않는다.
제17도는 전술한 데이터 구성의 첫번째 중요한 측면을 도시한다. 즉, 사용 가능한 디스크 드라이브의 전역에 걸쳐 분산된 데이터 블럭 혹은 세그먼트로 각 비디오 프리젠테이션을 분할함으로써 각 비디오 프리젠테이션이 다수의 복제본을 필요로 하지 않고서도 다수의 드라이브로부터 동시에 액세스되는 것을 가능하게 한다. 따라서, 이러한 개념은 데이터 보전성 혹은 성능을 위한 스트라이핑이 아닌 동시성 혹은 대역폭을 위한 스트라이핑이 된다. 따라서, 매체 스트림(10)은 바이트 블럭에 의해서라기 보다는 재생 세그먼트에 의해 비디오 프리젠테이션을 스트라이프한다.
제17도에 도시한 바와 같이, 비디오 데이터 화일 1은 M개의 세그먼트로 분리되고, 4개의 스트라이프로 분리되며, 스트라이프 1은 비디오 화일 1의 세그먼트 1,5,9 등을 포함하는 화일이고, 스트라이프 2는 비디오 화일 1의 세그먼트 2,6,10 등을 포함하는 화일이며, 스트라이프 3는 비디오 화일 1의 세그먼트 3,7,11 등을 포함하는 화일이고, 스트라이프 4는 비디오 화일 1의 세그먼트 4,8,12 등을 포함하는 화일이며, 비디오 화일의 모든 M개의 세그먼트는 4개의 스트라이프 화일중 하나에 포함된다.
전술한 스트라이핑 기법에 의하면, 파라메터는 각 개별 비디오의 스트라이핑을 커스텀화하도록 아래와 같이 계산된다.
먼저, 디스크로부터 적절히 효과적인 데이터 전송 속도를 성취하도록 세그먼트 크기가 선택된다. 그러나, 이 세그먼트 크기는 대기시간에 악영향을 끼칠 정도로 커서는 안되며, 메모리내에 버퍼링 및 캐슁될 수 있도록 충분히 작아야 한다. 바람직한 세그먼트 크기는 256KB이며, 128KB/sec 에서 512KB/sec에 이르는 범위의 데이터 전송 속도의 비디오 프리젠테이션에 대해서는 일정하다. 비디오 데이터 전송 속도가 더 크면, 더 큰 세그먼트 크기를 사용하는 것이 바람직하다. 세그먼트 크기는 동일한 매체상에 저장된 비디오 프리젠테이션의 범위에 대해서는 I/O 동작의 기본 단위에 의존한다. 이용되는 원리는 약 0.5에서 2초 정도의 비디오 데이터를 포함할 수 있는 세그먼트 크기를 이용하는 것이다.
다음으로, 스트라이프의 수, 즉, 비디오 데이터가 분포되는 디스크의 수를 결정한다. 이 수는 요구되는 전체 데이터 전송 속도를 유지할 수 있을 정도로 충분히 커야 하며, 예상되는 이용 비율에 따라 각 비디오 프리젠테이션에 대해 개별적으로 계산된다. 보다 구체적으로, 각 디스크는 그와 연관된 논리적 용적을 갖는다. 각 비디오 프리젠테이션은 필요한 스트라이프 수 만큼의 구성요소 화일들로 분할된다. 각 구성 화일은 상이한 논리적 용적상에 저장된다. 예를 들면, 비디오 데이터가 스트림당 250KB/sec 의 속도로 전송되고, 30개의 동시 스트림이 동일한 비디오로부터 이를테면 15초의 간격을 두고 시작되어 지원된다면, 적어도 7.5MB/sec의 전체 데이터 전송 속도가 성취된다. 디스크 드라이브가 평균 3MB/sec를 지원할 수 있다면, 비디오 프리젠테이션에 대해 적어도 3개의 스트라이프가 요구된다.
데이터가 디스크로부터 판독될 수 있는 유효 전송 속도는 판독 동작의 크기에 의해 영향을 받는다. 예를 들면, 데이터가 4KB 블럭으로 디스크로부터 (디스크상의 무작위 위치에서) 판독된다면, 유효 데이터 전송 속도는 1MB/sec 정도가 될 것이다. 반면에 데이터가 256KB 블럭으로 판독된다면, 데이터 전송 또는 3MB/sec 정도가 될 것이다. 그러나, 데이터가 매우 큰 블럭으로 판독된다면, 버퍼에 대해 필요한 메모리도 또한 증가할 것이며, 데이터 판독을 수행함에 있어서의 대기시간 및 지연도 또한 증가할 것인데, 이는 상기 판독 동작은 데이터가 액세스될 수 있기전에 완료되어야 하기 때문이다. 따라서, 데이터 전송의 크기를 선택하는데 있어서는 절충이 필요하다. 이 데이터 전송의 크기는 장치 및 메모리 구조의 특성에 따라 선택된다. 바람직하게, 데이터 전송의 크기는 선택된 세그먼트의 크기이다. 주어진 세그먼트 크기에 대해, 장치로 부터의 유효 데어터 전송 속도가 결정된다. 예를 들어, 몇몇 디스크 드라이브의 경우, 256KB의 세그먼트 크기는 디스크 드라이브(3MB/sec의 유효 데이터 전송속도를 가짐) 및 버퍼 크기(256KB)의 효과적인 사용에 대한 양호한 밸런스를 제공한다.
스트라이핑이 사용되지 않는다면, 지원될 수 있는 최대 스트림의 수는 디스크의 유효 데이터 전송속도에 의해 제한된다. 예를 들면, 유효 데이터 전송 속도가 3MB/sec이고 스트림 데이터 전송 속도가 200KB/sec 이면, 단지 15개의 스트림만이 디스크로부터 지원될 수 있다. 예로서, 동일 비디오의 60개의 스트림이 필요하다면, 데이터는 4개의 디스크상에서 복제(duplicate)되어야 한다. 그러나, 본 발명에 따라 스트라이핑이 사용되면, 1/4용량의 디스크가 4개 사용될 수도 있다. 15개의 스트림이, 비디오 데이터의 단일 복제본으로 부터의 총 60개의 동시 스트림에 대해 4개의 각 스트라이프로부터 동시에 재생될 수 있다. 스트림의 시작 시간은 스큐되어 60개의 스트림에 대한 요구가 스트라이프 사이에 고르게 간격지워지도록 한다. 스트림이 서로 근접하여 시작되면, 캐슁된 비디오 데이터를 사용하므로써 I/O에 대한 필요성이 감소한다는 사실을 주목해야 한다.
주어진 비디오에 대한 스트라이프의 수는 두 요인에 의해 영향을 받는다. 첫번째 요인은 주어진 비디오로부터 임의의 시간에 제공되어야 하는 스트림의 최대수이며, 또 다른 요인은 임의의 시간에 주어진 비디오와 동일한 디스크상에 저장된 모든 비디오로부터 제공되어야 하는 스트림의 총 수이다.
비디오에 대한 스트라이프의 수 s는 아래와 같이 결정된다.
여기서, r = 스트림이 재생되는 공칭 데이터 전송 속도,
n = 공칭 전송 속도에서 이러한 비디오 프리젠테이션으로 부터의 동시 스트림의 최대 수,
d = 디스크로 부터의 유효 데이터 전송 속도(디스크로 부터의 유효 데이터 전송 속도는 세그먼트 크기에 의해 영향을 받는다는 사실에 주의하자),
m = 공칭 전송 속도에서 이러한 비디오 프리젠테이션의 임의의 부분을 포함하는 모든 디스크로부터의 동시 스트림의 최대 수,
s = 비디오 프리젠테이션에 대한 스트라이프의 수이다.
비디오 프리젠테이션에 대한 데이터가 스트라이프되는 디스크 수는 세트로 관리되며, 매우 큰 물리적 디스크로 간주될 수 있다. 스트라이핑으로 인해 비디오 화일이 시스템의 물리적 화일 시스템이 허용하는 가장 큰 화일의 크기 제한을 초과하는 것이 허용된다. 비디오 데이터는, 일반적으로, 세트내의 모든 디스크상에서 항상 동일한 저장량을 요구하지는 않는다. 디스크 사용의 균형을 맞추기 위해, 비디오가 스트라이프될 때, 스트라이핑은 가장 많은 자유 공간(free space)을 갖는 디스크로부터 시작된다.
일 예로서, 2Mbit/sec(250,000 bytes/sec)(즉, r이 250,000 bytes/sec임)로 재생되어야 하는 비디오 프리젠테이션의 경우를 고려하고, 이 비디오로부터 최고 30개의 동시 스트림(즉, n=30)을 전송해야 한다고 가정하자. 이러한 예에서, m은 또한 30, 즉, 모든 디스크로부터 전송되어야 할 스트림의 수가 30이라고 가정하자. 또한, 데이터는 250,000 바이트의 세그먼트들로 스트라이프되고, 주어진 세그먼트 크기(250,000바이트)에 대한 디스크로 부터의 유효 데이터 전송 속도는 3,000,000 바이트/sec라고 가정하자. 따라서, 필요한 스트라이프의 수 n는 (250,000*30/3,000,000), 즉, 2.5로서, 3으로 반올림된다(s=상한(r*n/d)).
이러한 데이터를 포함하는 모든 디스크로 부터의 최대 스트림의 수가 예를 들어 45 이면, 250,000*45/3,000,000 즉, 3.75개의 스트라이프가 필요한데, 반올림하여 4개의 스트라이프가 필요하다.
비디오를 3개의 스트라이프로 스트라이핑하는 것이 비디오의 단일 복제본으로부터 30개의 스트림을 전송하는 요건을 만족시키는 데 충분하다고 할지라도, 비디오를 포함하는 디스크가 또한 다른 내용을 포함하고, 그 비디오로부터 지원되는 스트림의 전체 수가 45 이면, 4개의 디스크 드라이브가 필요하게 된다(스트라이핑 레벨 4).
알고리즘이 매체 스트리머(10)에서 사용되는 방법이 이하 개시된다. 저장 장치(디스크 드라이브의 수)는 디스크의 그룹으로 분리된다. 각 그룹은 (사전결정된 세그먼트 크기에 따라 디스크당 유효 데이터 전송속도로) 주어진 수의 동시 스트림을 전송할 수 있는 용량 및 능력을 갖는다. 각 그룹에 대한 세그먼트 크기는 일정하다. 상이한 그룹은 상이한 세그먼트 크기를 선택할 수 있다(따라서, 상이한 유효 데이터 전송 속도를 갖는다). 비디오 프리젠테이션이 스트라이프될 때, 임의의 그룹이 먼저 이하 개시되는 기준에 의해 선택된다.
세그먼트 크기는 비디오의 데이터 전송 속도와 정합된다. 즉, 스트림 데이터 전송 속도가 250,000 bytes/sec 이면, 세그먼트 크기는 125K~500KB의 범위내에 놓인다. 그 다음 기준은 그룹내의 디스크의 수가 최대 동시 스트림 수, 즉, 디스크 수를 지원하기에 충분하도록 보장하는 것이다. 여기서 r는 스트림 데이터 전송 속도이고, n은 동시 스트림의 최대 수이며, d는 그룹내의 디스크의 유효 전송 속도이다. 최종적으로, 디스크 그룹내의 모든 비디오로부터 지원되어야 하는 동시 스트림의 전체 합이 이 그룹의 능력을 초과하지 않도록 해야 한다. 즉, m이 이그룹의 능력이라면, m-n은 이미 그룹내에 이미 저장된 비디오로부터 동시에 재생될 수 있는 모든 스트림의 합과 동일하거나 혹은 이 보다 커야 한다.
계산은 비디오 데이터가 매체 스트리머(10)내로 로딩될 때에 제어 노드(18)에서 수행된다. 가장 간단한 경우에 있어서, 모든 디스크는 단일 풀(a single pool)내에 존재하게 되며, 이 단일 풀은 저장 및 지원가능한 스트림의 수 모두에 대한 매체 스트리머(10)의 전체 능력을 정의한다. 이 경우, 주어진 동시 스트림의 수를 지원하는 데 필요한 디스크(혹은 스트라이프)의 수가 공식 m*r/d로부터 계산되며, 여기어 m은 스트림의 수이고, r은 스트림에 대한 데이터 전송 속도이며, d는 디스크에 대한 유효 데이터 전송 속도이다. 스트림이 상이한 전송 속도를 가질 수 있는 경우, 전술한 공식에서 m*r은 '최대(모든 동시 스트림의 데이터 전송 속도의 합)'으로 의해 대체되어야 한다.
데이터를 기록하기 위해, 이러한 기법을 사용하면, 비디오 프리젠테이션의 디지탈 표현에 대한 복수의 복제본을 필요로 하지 않고서도 지정 속도에서 많은 스트림을 전송하기 위한 데이터가 판독될 수 있다. 복수의 디스크 용적에 걸쳐 데이터를 스트라이핑하므로써, 하나의 스트림 전송을 위한 화일의 한 부분에 대한 판독은 또 다른 스트림 전송을 위한 화일의 다른 부분의 판독을 방해하지 않게 된다.
[I. 매체 스트리머 데이터 전송 및 변환 절차]
[I.1. 스위치(18)로의 비디오 전송을 위한 능동적인 대역폭 할당]
종래의 경우, 비디오 서버는 일반적으로 두가지 형태중 하나였다. 즉, PC기술(PC technology)을 이용하여 저가이지만 낮은 대역폭의 비디오 서버를 구축하거나 슈퍼 컴퓨팅 기술(super-computing technolgy)을 이용하여 고 대역폭을 갖지만 고가의 서버를 구현하였다. 따라서, 본 발명의 목적은 높은 비용이 소모되는 슈퍼 컴퓨팅 기술을 사용하지 않고 고 대역폭 비디오를 전송하는 것이다.
낮은 비용으로 고 대역폭을 성취하는 바람직한 해결 방안은 (제1도에 도시된 바와 같이)낮은 대기시간 스위치(18), 예컨대, 크로스바 회로 스위치 매트릭스(crossbar circuit switch matrix)를 사용하여 저가의 PC 기반 노드를 비디오 서버에 상호연결하는 것이다. 매체 스트리머 구조의 중요한 측면은 각 저장 노드(16) 및 통신 노드(14)에서 사용가능한 비디오 스트림 대역폭의 효율적인 사용이다. 대역폭은 비디오 데이터의 특수한 성질을, 저비용의 스위치 기술의 동적 실시간 대역폭 할당 능력과 결합하므로써 최대화된다.
제18도에는 스위치 인터페이스와 저장 노드사이의 통상적인 논리적 접속이 도시되어 있다. 스위치 인터페이스는, 비디오(및 제어 정보)가 저장 노드와 양방향 전송가능하도록 전이중(duplex)으로 설계되어야 한다(즉, 정보는 동시에 양 방향으로 전송될 수 있다). 비디오 내용은 일단 저장 노드에 기록된 후 다수회 판독되므로, 저장 노드에 대한 대부분의 대역폭 요구는 스위치쪽을 향해 이루어진다. 전형적인 스위치 인터페이스의 경우, 기록 기능에 전용되는 대역폭의 절반정도가 아주 드물게 이용되므로 저장 노드의 대역폭 이용도는 낮다.
제19도에는 본 발명에 따른 스위치 인터페이스가 도시되어 있다. 이 인터페이스는 자신의 전체 대역폭을 실시간으로 스위치(18)의 외부 혹은 내부로 동적으로 할당하여 노드의 현재 요구를 만족시킨다. (저장 노드(16)는 예로서 사용되었다.) 통신 노드(14)는 유사한 요건을 가지지만, 그들의 대역폭 대부분은 스위치(18)로부터 외측으로의 방향으로 이용된다.
동적 할당은, 스위치(18)에 대한 적절한 경로배정 헤더(routing header)를 이용하여 둘 이상의 물리적 스위치 인터페이스를 하나의 논리적 스위치 인터페이스(18a)로 그루핑함으로써 성취된다. 그리고 나서, 예컨대, 판독시에 비디오 데이터는 두 물리적 인터페이스간에 분할된다. 이것은 전술한 바와 같이 다수의 저장 장치에 걸쳐 데이터를 스트라이핑하므로써 촉진된다. 수신 노드에 비디오 데이터를 다시 단일의 논리적 스트림으로 조합한다.
예를 들면, 제18도에서의 스위치 인터페이스는 전이중 2X MB/sec, 즉, 각 방향에서 X MB/sec로 규정된다. 그러나, 비디오 데이터는 통상 한 방향(저장 노드에서 스위치로)으로만 전송된다. 따라서, 비록 노드가 그 용량의 2배(2X)의 기능을 갖더라도, 비디오 대역폭의 단지 X MB/sec만이 저장 노드로부터 전송된다. 이러한 저장 노드의 이용효율은 낮다. 제19도의 스위치 인터페이스는 비디오를 저장노드로부터 스위치로 전송하는데에 전체 2X MB/sec 대역폭을 동적으로 할당한다. 이 결과, 노드로 부터의 대역폭이 증가하고, 비디오 서버로부터의 대역폭이 증가하며, 비디오 스트림당 비용이 감소된다.
[J. 통신 어댑터를 이용한 등시적 비디오 데이터 전송]
디지탈 비디오 데이터는 순차적이고, 연속적이며, 대용량이고 내용보다는 시간이 중요하다. 비디오 데이터의 스트림은 높은 비트 속도를 등시적으로 전송되어야 하므로, 데이터 경로내의 모든 불필요한 오버헤드가 최소화될 것을 요구한다. 전형적으로, 수신 하드웨어는 비디오 셋탑 박스이거나 혹은 어떤 다른 적절한 비디오 데이터 수신기이다. 표준 직렬 통신 프로토콜은 종종 하드웨어 레벨에서 동기화 및 데이터 검증을 위해 스트림내로 부가의 데이터 비트 및 바이트를 삽입한다. 수신기가 부가된 데이터를 투명하게 제거할 수 없다면, 이러한 데이터 삽입은 비디오 데이터 스트림을 변질시킨다. 이들 데이터 비트 및 바이트에 의해 도입되는 추가적인 오버헤드는 또한 유효 데이터 전송 속도를 감소시켜서, 비디오 압축해제 및 변환에러를 생성한다.
표준 통신 어댑터를 통한 비디오 데이터의 전송은, 사용자에게로의 등시적인 전송을 보장하기 위해, 대부분의 표준 직렬 통신 프로토콜 속성을 무효화시킬 필요가 있음이 밝혀졌다. 이를 성취하는 방법은 사용되는 통신 어댑터에 따라 다르지만, 그 기초 개념은 이하 개시되는 바와 같다. 제20도에서, 통신 노드(14)내의 직렬 통신 칩(200)은 데이터 포맷팅 및 패리티, 시작 및 중단 비트, 순환 리던던시 검사 코드(cyclic redundancy check code) 및 동기화 바이트(sync bytes)와 같은 보전성 정보(integrity information)를 무효화시키며, 유휴 문자(idle characters)을 발생을 금지한다. 입력 FIFO 버퍼(202,204,206)는 일정한(등시적인) 출력 비디오 데이터 스트림을 보장하기 위해 사용되며, 데이터 블럭의 로딩을 위한 버스 사이클을 허용하게 된다. 1000 바이트 FIFO 버퍼(208)는 CPU 및 버스 로딩 논리를 단순화한다.
통신 출력 칩(200)이 초기 동기 바이트 발생을 금지하지 않으면, 동기 바이트의 값은 각 데이터 블럭의 제1바이트의 값으로 프로그램된다(따라서, 데이터 블럭 포인터는 제2바이트를 가리키게 된다). 바이트 정렬은 실제 데이터로 관리되어야 하는데, 그 이유는, 임의의 패딩 바이트(padding bytes)가 실제의 압축된 비디오 데이터의 일 부분이 아니면, 이 패딩 데이터는 데이터 스트림을 변질시키기 때문이다.
압축된 비디오 데이터의 고품질 레벨에 요구되는 일정한 고속 직렬 데이터 출력을 성취하기 위해, 순환 버퍼 혹은 다수의 대용량 버퍼(예컨대, 202,204,206)가 사용되어야 한다. 이것은, 이전에 채워진 버퍼로부터 데이터를 출력하는 동안 입력 버퍼를 채우기에 충분한 시간을 확보하기 위해 필요하다. 버퍼 패킹(buffer packing)은 비디오 데이터 스트림 경로에서 초기에 이루어지지 않으면, 비디오 종단부의 환경으로 인해 매우 작은 버퍼를 초래하며, 이 버퍼는 다음 버퍼 전송이 완료되기 전에 출력되어, 데이터 언더런(data underrun)을 발생한다. 이것은 최소 3개의 큰 독립적인 버퍼를 필요로 한다. 이중 모드 메모리내의 순환 버퍼(판독 동작동안 기록가능한)는 또한 적합한 구조이다.
[J1. 압축된 MPEG-1, 1+, 혹은 MPEG-2 디지탈 데이터 포맷으로부터 산업표준 텔레비젼 포맷(NTSC 혹은 PAL)으로의 비디오 이미지 및 영화의 변환]
전술한 바와 같이, 디지탈 비디오 데이터는 디스크로부터 버퍼 메모리로 전송된다. 일단, 충분한 데이터가 버퍼 메모리에 저장되면, 이 데이터는 메모리 메모리로부터 통신 노드(14)내의 인터페이스 어댑터로 전송된다. 이용된 인터페이스는 SCSI 20MB/sec, 고속/광대역 인터페이스(fast/wide interface) 혹은 SSA 직렬 SCSI 인터페이스이다. SCSI 인터페이스는 15개 어드레스를 처리하도록 확장되며, SSA 구조는 최고 256개의 어드레스를 지원한다. 다른 적합한 인터페이스는 RS422, V.35, V.36 등을 포함하지만, 이에 한정되지는 않는다.
제21도에 도시된 바와 같이, 인터페이스로 부터의 비디오 데이터는 통신 노드(14)로부터 통신 버스(210)를 가로질러, 데이터가 버퍼링되는 NTSC 어댑터(212)로 전송된다. 어댑터(212)는 로컬 버퍼(214)로 부터 데이터를 인출하며, 로컬 버퍼에는 버스의 성능을 최대로 하도록 복수의 데이터 블럭이 저장되어 있다. 어댑터(212)의 주요 목적은 메모리(214)로부터 MPEG 칩(216,218)으로, 그리고 NTSC 칩(220) 및 D/A(222)로 데이터의 등시적인 흐름을 유지함으로써, 비디오 및/혹은 오디오 전송이 중단되지 않게 보장하는 것이다.
MPEG 논리 모듈(216,218)은 (압축된) 디지탈 비디오 데이터를 구성요소 레벨의 비디오 및 오디오로 변환한다. NTSC 인코더(220)는 신호를 NTSC 기본대역 아날로그 신호로 변환한다. MPEG 오디오 디코더(216)는 디지탈 오디오를 병렬 디지탈 데이터로 변환하며, 이후 이 병렬 디지탈 데이터는 D/A 컨버터(222)를 통해 전송된, 좌·우의 오디오 출력을 발생하도록 필터링된다.
속도 정합 및 등시적 전송 문제에 대한 해결책은 시스템의 대역폭 전송을 최대화할 뿐 아니라, 최소의 성능 제약요건을 부가하는 방안이다.
전형적으로, 애플리케이션 개발자는 프로세서와, 디스크 화일, 테이프 화일, 광 저장 장치등과 같은 기계적인 저장장치사이의 데이터의 전송 및 제어를 위해 SSA 및 SCSI와 같은 버스 구조를 이용하여 왔다. 이들 버스는, 비디오 데이터의 속도 및 등시적 전송을 제어하는 수단이 제공된다면, 비디오 데이터의 고 대역폭 전송에 적합하게 되는 속성을 포함한다.
SCSI 버스는 20MB/sec 에서 데이터의 버스트 전송을 허용하며, 이것은 버퍼 메모리에서 지정 NTSC 어댑터로 임의의 한 비디오 신호가 전송되는 시간의 양을 최소화한다. 어댑터 카드(212)는 최고의 전송 속도로 버스(210)에서 메모리로 데이터를 버스트 전송하며, NTSC 디코더 칩(216,218)으로의 전송을 위해 훨씬 낮은 속도로 버퍼(214)에서 데이터를 제거하는 성능을 갖는 대용량 버퍼(214)를 포함한다. 버퍼(214)는 또한 보다 작은 버퍼로 세그먼트되고 소프트웨어 제어를 거쳐 접속되어, 순환방식으로 접속된 다중 버퍼로서 동작한다.
이것은, 시스템으로 하여금 가변 블럭 크기의 데이터를 분리된 버퍼로 전송할 수 있게 하여, 재생 순서를 제어한다. 이러한 접근 방안의 잇점은, 비디오 데이터에 대한 어떤 요구가 발생하기 전에 매우 높은 전송 속도로 비디오 데이터의 블럭들을 잘 전송할 수 있도록 시스템 소프트웨어를 해방시킨다는 것이다. 이러한 방안은 동적 처리량 요건에 따라 많은 다중 비디오 스트림을 관리하는 능력을 갖는 매체 스트리머(10)를 제공한다. 통신 노드내의 프로세스가 시간이 있을 때, 프로세서는 순차적으로 재생될 복수의 큰 데이터 블럭을 전송할 수 있다. 일단 이러한 동작이 수행되면, 프로세서는 해방되어, 저 속의 연속적인 등시적 데이터를 각 포트로 즉시 전송할 필요없이 다른 스트림을 제어한다.
디코더 시스템의 비용 효율을 더욱 개선하기 위해, 소형의 FIFO 메모리(224)가 더 큰 디코더 버퍼(214)와 MPEG 디코더(216,218) 사이에 삽입된다. FIFO 메모리(224)는 제어기(226)가 데이터를 더 작은 블럭(전형적으로 512바이트)으로 버퍼(214)에서 FIFO(224)로 전송하고, 다시 이 데이터를 MPEG 디코더(216)로의 전송을 위해 직렬 비트 스트림으로 변환하는 것을 허용한다. 오디오 및 비디오 디코더 칩들(216,218)은 모두 동일한 직렬 데이터 스트림으로부터 그들의 입력을 취하여 요구된 데이터를 내부적으로 분리하여 디코드할 수 있다. FIFO 메모리(224)의 출력으로부터 데이터 전송은 등시적인 방법으로 혹은 사실상 등시적인 방식으로 수행되어, 비디오 프리젠테이션의 사용자 혹은 고객에서 중단되지 않는 비디오 프리젠테이션을 전송할 수 있게 보장한다.
[K. SCSI 장치로의 디지탈 비디오의 전송]
제22도에 도시된 바와 같이, 버퍼 메모리로 부터의 압축된 디지탈 비디오 데이터 및 커맨드 스트림은 장치 레벨 소프트웨어에 의해 SCSI 커맨드 및 데이터 스트림으로 변환되며, SCSI 버스(210)를 통해 SCSI II 고속 데이터 전송 속도로 목표 어댑터(212)에게 전송된다. 그리고 나서, 데이터는 버퍼링되고, 요구된 내용 출력 전송 속도로 MPEG 로직에 공급되어, 압축해제된 후 아날로그 데이터 및 오디오 데이터로 변환된다. 데이터 흐름의 속도를 일정하게 유지하고 적절한 버퍼 관리를 보장하기 위해 SCSI 버스(210)을 통해 궤환이 제공된다.
SCSI NTSC/PAL 어댑터(212)는 SCSI 버스(210)에 공급 인터페이스를 제공하며, 표준 SCSI 프로토콜의 서브세트를 지원한다. 정규 동작 모드는 어댑터(212)를 개방하여, 이 어댑터에 데이터(비디오 및 오디오) 스트림을 기록하며, 기록이 종료된 때에만 어댑터(212)를 폐쇄한다. 어댑터(212)는, 통신 노드(14) 및 저장 노드(16)가 데이터 블럭을 제공하는 동안, 그의 버퍼를 채움 상태(full)로 유지하는데 필요한만큼 빨리 데이터를 인출하며, 여기서 데이터 블럭의 사이즈는 버스 데이터 전송을 최적화하고 버스 오버헤드를 최소화하도록 정해진다.
시스템 파라메터는 필요하다면, 모드 선택 SCSI 커맨드를 사용하여 제어 패킷을 통해 덮어기록(overwrite)될 수 있다. 비디오/오디오 동기화는 어댑터(212)내에서 이루어지며, 외부 제어는 요구되지 않는다. 자동 재동기화 및 연속되는 오디오/비디오 출력에 의해 에러는 최소화된다.
[K1. SCSI 레벨 커맨드 설명]
직접 액세스 및 순차적 장치 커맨드의 혼합이 SCSI 비디오 출력 어댑터의 기능성에 적합하도록 표준 공통 커맨드와 함께 이용된다. 모든 SCSI 커맨드의 경우처럼, 매 커맨드 후에 유효 상태 바이트(valid status byte)가 복귀되고, 검사 상태가 복귀되면 감지 데이터 영역(sense data area)은 에러 상태로 로딩된다. 이용된 표준 SCSI 커맨드로 RESET, INQUIRY, REQUEST, SENSE, MODE SELECT, MODE SENSE, READ, WRITE, REVERSE, RELEASE, TEST UNIT READY 등이 포함된다.
비디오 커맨드 :
비디오 제어 캐먼드는 사용자 레벨 비디오 출력 제어 커맨드이고, 전술한 표준 커맨드에 대한 확장이다. 이 비디오 제어 커맨드는, 하위 레벨 오퍼레이팅 시스템으로의 단순화된 사용자 레벨 프론트 엔드(front end) 또는 SCSI 비디오 출력 어댑터(212)에 대해 직접적으로 인터페이스하는 SCSI 커맨드를 제공한다. 각 커맨드의 구현은 마이크로코드를 이용하여, 필요한 비디오 장치 기능을 실행하며, 무효 제어 상태에 의해 발생하는 비디오 및 오디오 이상(anomalies)을 회피한다. 단일 SCSI 커맨드, 즉, SCSI 시작/정지 단위 커맨드는 비디오 제어 커맨드를 목표 SCSI 비디오 출력 어댑터(212)로 전송하는데 이용되며, 이 커맨드와 함께 어떤 필요한 파라메터도 전송된다. 이것은 사용자 애플리케이션 인터페이스 및 어댑터 카드(212) 마이크로코드 모두를 단순화한다. 이하 이용되는 커맨드가 설명된다.
정지(Stop)(SCSI 시작/정지 1 - 파라메터 = 모드)
MPEG 칩 세트(216,218)내로의 데이터 입력이 정지되고, 오디오는 뮤팅(mute)되며, 비디오는 블랭킹(blank)된다. 파라메터 필드는 정지 모드를 선택한다. 정규 모드는, 버퍼 및 위치 포인터가 현상태를 그대로 유지하게 하여 재생(PLAY)이 비디오 스트림내의 동일한 위치에서 지속되게 한다. 제2모드(영화의 끝 혹은 중지시)는 버퍼 포인터를 다음 버퍼의 시작점에 설정하고 현재 버퍼를 해제한다. 제3모드는 또한 영화 종단부에 대한 것으로, 데이터 버퍼가 완전히 빌 때까지 정지(뮤팅 및 블랭킹)가 지연된다. 제4모드는 특정의 MPEG 디코더 구현과 더불어 이용될 수 있으며, 정지가 지연되는 동안 오디오를 제공하나. 데이터가 끝났을 때의 마지막 유효 프레임을 동결시킨다. 이들 각각의 경우에 있어서, 비디오 어댑터(212) 마이크로코드는 정지 시점(stopping point)을, 비디오 및 오디오 출력이 명확한 재시작을 허용하는 적절한 경계점에서 중단되도록 결정한다.
일시정지(Pause)(SCSI 시작/정지 2 - 파라메터없음)
MPEG 칩 세트(216,218)로의 데이터 입력은 중단되고, 오디오는 뮤팅되지만, 비디오는 블랭킹되지 않는다. 이것에 의하면, MPEG 비디오 칩 세트(216,218)는 마지막 양호한 프레임의 동결을 유지한다. 이는 비디오 튜브의 번-인(burn-in)을 야기하므로 제한된다. 정지 커맨드는 바람직하게는 제어 노드(18)에 의해 송출되지만, 5분내에 어떠한 커맨드로 수신되지 않으면 비디오 출력은 자동적으로 블랭킹된다. 어댑터(212) 마이크로코드는 버퍼 위치 및 디코더 상태를 유지하여 다시 매끄러운 재생으로 전환될 수 있게 한다.
블랭킹-뮤팅(Blank-Mute)(SCSI 시작/정지 3 - 파라메터 = 모드)
이 커맨드는 오디오 출력에 영향을 주지 않고 비디오 출력을 블랭킹하거나, 비디오 출력에 영향을 주지않고 오디오 출력을 뮤팅하거나 혹은 이 모두를 실행한다. 뮤팅 및 블랭킹 모두는 파라메터를 이용하는 단일 커맨드로 턴 오프될 수 있으며, 이것은 더욱 매끄러운 전이 및 커맨드 오버헤드 감소를 가능하게 한다. 이들은 하드웨어 제어에 의해 압축해제 및 아날로그의 변환후에 비디오 어댑터(212)상에서 구현되며, 확실하고 매끄러운 변이를 보장한다.
저속 재생(slow play)(SCSI 시작/정지 4 - 파라메터 = 속도)
이 커맨드는 MPEG 칩 세트(216,218)로의 데이터 입력 속도를 느리게 하여 간헐적인 프레임 동결을 야기함으로써, VCR에서의 저속 재생 기능을 모방한다. 오디오는 디지탈 에러 노이즈를 피하기 위해 뮤팅된다. 파라메터 필드는 상대적인 속도를 0에서 100까지 지정한다. 이와 다른 구현은 디코더 칩 세트(216,218)의 에러 처리를 금지하고, 디코더 칩 세트내로의 데이터 클럭 속도를 원하는 재생 속도로 변경한다. 이것은 비디오 어댑터의 클럭 구조의 융통성에 의존한다.
재생(play)(SCSI 시작/중단 - 5 파라메터 = 버퍼)
이 커맨드는 MPEG 칩 세트(216,218)내로의 데이터 공급 프로세스를 시작하여, 오디오 및 비디오 출력을 가능하게 한다. 버퍼 선택 번호가 전송되어 어느 버퍼로부터 재생 순서를 시작해야 하는가를 결정하며, 0 값은 현재 재생 버퍼가 사용되어야 함을 나타낸다(전형적 동작). 0이 아닌 값은 어댑터(212)가 단지 정지(STOP) 모드에 있을 때만 용인되고, 일시정지(PAUSE) 모드에 있을 경우에는 버퍼 선택 파라메터는 무시되고 재생은 현재 버퍼 선택 및 위치를 사용하여 재개시된다.
'재생(PLAYING)'중에, 제어기(226)는 버퍼를 통해서 순차적으로 순환하여, MPEG 칩 세트(216,218)내로의 안정한 데이터 스트림을 유지한다. 데이터는 적절한 속도로 버퍼에서 MPEG 버스로 N개의 바이트가 판독될 때까지 어드레스 0으로 부터 시작하여 판독되며, 이후 제어기(226)는 다음 버퍼로 스위칭되어 데이터 판독을 계속한다.
어댑터 버스 및 마이크로코드는 어댑터 버퍼(214)내로의 SCSI 고속 데이터 전송과, MPEG 칩 세트(216,218)에 공급될 출력 FIFO(224)상으로의 데이터의 안정한 로딩 모두를 위한 충분한 대역폭을 제공한다.
고속 전진(Fast Forward)(SCSI 시작/정지 6 - 파라메터 = 속도)
이 커맨드는 VCR 상의 고속 전진을 모방하는 방식으로 데이터 전체에 걸쳐 스캐닝하는데 이용된다. 속도 파라메터에 의해 결정되는 두 가지 동작 모드가 존재한다. 속도 0는 비디오 및 오디오가 블랭킹 및 뮤팅되어야 하는 고속 전진을 의미하며, 버퍼는 플러시(flush)되며, 비디오 스트림의 전진된 새로운 위치로부터 데이터가 수신될 때 자동 재생(implicit play)이 실행된다. 1과 10 사이의 정수 값은 입력 스트림이 전진되는 속도를 나타낸다. 비디오는 데이터 블럭을 통한 스킵에 의해 샘플링되어 지정된 평균 데이터 전송 속도를 성취하게 된다. 어댑터(212)는 거의 정규 속도로 데이터의 일부분을 재생하며, 앞쪽으로 점프(jump)하여 다음 부분을 재생한 후, 고속 전진 동작을 행한다.
되감기(SCSI 시작/정지 7 - 파라메터 = 버퍼)
이 커맨드는 VCR 상에서의 되감기를 모방하는 방식으로 데이터를 통해 뒤쪽으로 스캐닝하는데 사용된다. 속도 파라메터에 의해 결정되는 두 가지 동작 모드가 존재한다. 속도 0 는 비디오 및 오디오가 블랭킹 및 뮤팅된 고속 되감기로서, 버퍼는 플러시되며, 비디오 스트림의 후진된 새로운 위치로부터 데이터가 수신될 때 자동 재생(implicit play)이 실행된다. 1 과 10 사이의 정수 값은 입력 스트림이 되감기는 속도를 나타낸다. 비디오는 데이터 블럭을 통한 스킵에 의해 샘플링되어 지정된 평균 데이터 전송 속도를 성취하게 된다. 되감기 데이터 스트림은 비디오 스트림의 점진적으로 앞 부분으로부터 샘플링된 작은 데어터 블럭을 조합함으로써 생성된다. 어댑터 카드(212)는 정규 속도로 재생하도록 전이 및 동기화를 매끄럽게 처리하며, 다음의 샘플된 부분으로 다시 스킵함으로써 되감기 스캐닝을 실행한다.
[K2. 버퍼 관리(BUFFER MANAGEMENT)]
디지탈 비디오 서버는 데이터를 많은 동시 출력 장치로 제공하지만, 디지탈 비디오 데이터 압축해제 및 변환은 일정한 데이터 스트림을 요구한다. 데이터 버퍼링 기법은 SCSI 데이터 버스트 모드 전송의 장점을 취하는데 이용되며, 데이터 언더런(data underrun) 및 버퍼 오버런(buffer overrun)을 또한 피하면서, 최소의 개입으로 매체 스트리머(10)가 다수의 스트림에 대해 데이터를 전송하는 것을 허용한다. SCSI 비디오 어댑터 카드(212)는 비디오 데이터를 위한 대용량 퍼버(214)를 포함하여, SCSI 버스트 모드 데이터 전송 프로세스를 완전히 이용하도록 한다. 실시예에서는 768K짜리 하나의 버퍼(214)로 구성되어 있으며, 로컬 로직(local logic)에 의해 순환 회로 버퍼(wrap-around circular buffer)로써 처리된다. 순환 버퍼는, 디지탈 비디오 데이터를 전송할 때 저장 및 관리 오버헤드의 측면에서 비효율적인 고정된 길이의 버퍼가 아니라 가변 크기의 데이터 블럭을 동적으로 제어한다.
비디오 어댑터 카드(212) 마이크로코드는 몇 개의 버퍼 포인트를 지원하여, 데이터의 현재 길이 및 선두(top)는 물론, 데이터의 마지막 선두도 유지한다. 이것은, 필요하다면 실패한 전송을 덮어기록하는 재시도를 허용하거나 포인터를 현재 버퍼내의 바이트 위치에 위치시키는 것이 허용된다. 데이터 블럭 길이는 디코드 칩 세트(216,218)로의 유효한 데이터 전송을 보장하기 위해 전송시와 동일하게 유지된다(예를 들면, 심지어 중간 로직에 의해 긴 워드 정렬이 이용될지라도 바이트 또는 워드는 특정된다). 이러한 방법은 안정 상태 동작 오버헤드를 최소화하면서, 데이터 버퍼에 대한 융통성있는 제어를 허용한다.
[K2.1. 버퍼 선택 및 위치]
복수 버퍼 세트가 요구된 경우, 복수의 포인터가 모든 버퍼 연관 동작에 대해 이용가능하다. 예를 들면, 하나의 세트는 재생 버퍼 및 이 버퍼내의 현재 위치를 선택하는데 사용될 수 있으며, 제2세트는 데이터 사전로딩 동작에 대해 기록 버퍼 및 이 버퍼내의 위치(통상, 0)를 선택하는데 이용된다. 가변 길이 데이터 블럭이 또한 지원되므로 수신된 각 데이터 블럭에 대해 현재 길이 및 최대 길이값이 유지된다.
[K2.2. 자동 모드]
버퍼 동작은 비디오 어댑터의 제어기(226)에 의해 관리되며, 다음 사용가능한 버퍼 공간내에 N 바이트의 데이터를 이 버퍼의 어드레스 0에서 시작하여 위치시킨다. 제어기(226)는 각 버퍼내의 데이터 길이 및 그 데이터의 재생여부를 추적한다. 충분한 버퍼 공간이 확보될 때마다. 카드는 다음 기록(WRITE) 커맨드를 수신하여 데이터를 버퍼내로 DMA 전송한다. 전체 데이터 블럭을 수용할 수 있을 정도로 충분한 버퍼 공간이 확보되지 않는 경우(전형적으로 저속 재생 또는 일시정지 상태), 기록은 수용되지 않고 버퍼 채움 복귀 코드(buffer full return code)가 복귀된다.
[K2.3. 수동 모드]
위치지정(LOCATE) 커맨드는 각 버퍼 액세스 커맨드(기록, 삭제 등)에 대해 '현재' 기록 버퍼 및 이 버퍼내의 위치(전형적으로, 0)를 결정하는데 이용된다. 이 버퍼 위치는 성공적으로 전송된 마지막 데이터 블럭의 데이터의 시작과 상관된다. 이것은 바람직하게는 비디오 스트림 전이 관리를 위해 수행되며, 시스템내의 커맨드 오버헤드를 최소화하기 위해 가능한 한 빨리 자동 모드가 재활성화된다.
[K2.4. 에러 관리]
디지탈 비디오 데이터 전송은 데이터 프로세싱 애플리케이션에서 일반적으로 SCSI가 이용되는 랜덤 데이터 액세스 이용에 비해 상이한 에러 관리 요건을 갖는다. 소소한 데이터 손실이 전송 중단보다는 덜 치명적이므로, 종래의 재시도 및 데이터 유효화 기법이 변경되거나 혹은 금지되었다. 정규 SCSI 에러 치러 절차에 따라 각 커맨드의 종료시에 상태 단계(status phase)동안 상태 바이트가 복귀된다. 이 상태 바이트로는, 양호(00) 상태(GOOD condition), 목표 SCSI 칩(227)이 커맨드를 수용할 수 없는 경우를 나타내는 비지(8h)(BUSY), 에러가 발생한 경우를 나타내는 검사 상태(02h)(CHECK CONDITION)가 있다.
[K2.5. 에러 복구]
SCSI 비디오 어댑터(212)의 제어기(226)는 에러 및 상태 정보의 로딩을 위해, 검사 상태 응답시에 요구 감지 커맨드(Request Sense command)를 자동적으로 발생하고, 복구 절차가 가능한지의 여부를 판정한다. 정규 복구 절차는 에러 상태를 클리어(clear)하고, 모든 변질된 데이터를 폐기하며, 가능한 한 신속하게 정규 재생을 재개시한다. 최악의 경우, 어댑터(212)는 리셋되어야 할 수도 있으며, 재생이 재개시되기 전에 데이터가 재로딩되어야 할 수도 있다. 에러 상태를 기록되며, 다음 조회(INQUIRY) 혹은 요구 감지 SCSI 동작에 의해 호스트 시스템에 보고된다.
[K2.6. 자동 재시도(AUTOMATIC RETRIES)]
버퍼 채움 혹은 장치 비지 상태(busy condition)에서, 재시도는 X 회까지 자동적으로 수행되며, 이 X는 스트림 데이터 속도에 따른다. 이러한 재시도는 다음 데이터 버퍼가 도착하는 시점까지만 허용된다. 이 시점에서, 그 상태가 예상할 수 없는 경우(즉, 버퍼가 채움 상태이지만 일시정지 상태가 아니거나 저속 재생 모드에 있는 경우), 에러는 기록되며, 비디오 재생을 복구 및 계속하기 위해 장치 리셋 및 클리어가 필요할 수도 있다.
이제까지는 사용자에게 비디오 프리젠테이션을 전송하는 것과 주로 관련하여 설명하였으나, 양 방향 비디오 어댑터를 사용하여 비디오 프리젠테이션을 수신하고, 비디오 프리젠테이션을 그의 데이터 표현으로서 디지탈화하며, 낮은 대기시간 스위치(18)를 거쳐 제어 노드(18)에 의해 지정된 바와 같은 저장 노드(16,17)내의 저장을 위해 버스(210)를 통해 통신 노드(14)로 데이터 표현을 전송할 수 있다.
전술한 바은 본 발명의 예시에 불과한 것으로, 당업자라면 본 발명을 벗어나지 않는 범위내에서 각종 변경을 행할 수 있을 것이다. 따라서, 본 발명은 특허 청구 범위의 범주에 속하는 이들 모든 대체, 수정 및 변경을 포함한다.

Claims (14)

  1. ① 비디오 프리젠테이션(a video presentation)의 디지탈 표현을 다수의 N개 데이터 블럭들로서 저장하는 적어도 하나의 저장 노드(storage node)-상기 비디오 프리젠테이션을 완전히 표시하는데 시간 T가 요구되며, 상기 각 데이터 블럭은 상기 비디오 프리젠테이션의 T/N 기간에 대략 대응하는 데이터를 저장함-와, ② 적어도 하나의 입력 포트(input port)와, 적어도 하나의 출력 포트(output port)와, 상기 데이터 블럭이 디스패치를 위해 준비되어야 할 때 상기 적어도 하나의 저장 노드로부터 데이터 블럭을 요구하는 요구 큐 수단(request queue means)과, 상기 데이터 블럭을 등시성 출력 스트림(an isochronous output stream)으로 변환하여 상기 등시성 출력 스트림을 상기 출력 포트로 전송하는 출력 수단을 제각기 갖는 다수의 통신 노드(a plurality of communication nodes)와, ③ 상기 적어도 하나의 저장 노드와 상기 다수의 통신 노드의 입력 포트 사이에 접속되어, 상기 적어도 하나의 저장 노드에 저장된 데이터 블럭들이 상기 통신 노드들중 하나 이상의 통신 노드로 디스패치될 수 있도록 상기 적어도 하나의 저장 노드에 상기 입력 포트들중 하나 이상의 입력 포트를 선택적으로 결합하는 회로 스위치(a circuit switch)와, ④ 적어도 상기 다수의 통신 노드들과 상기 적어도 하나의 저장 노드들에 결합되어 입력 사용자 커맨드들을 상기 다수의 통신 노드들에 대한 제어 커맨드로 변환하고, (i) 상기 N개의 블럭들중 동일한 블럭에 대응하는 등시성 데이터 스트림이 상기 다수의 출력 포트들에 동시에 나타날 수 있게 하며, (ii) 상기 N개의 블럭들중 다른 블럭들에 대응하는 등시성 데이터 스트림이 상기 다수의 출력 포트들에 동시에 나타날 수 있게 하는 적어도 하나의 제어 노드(control node)를 포함하는 매체 스트리머(media streamer).
  2. 제1항에 있어서, 상기 적어도 하나의 제어 노드는 상기 N개 블럭들의 개개의 블럭들의 시간 순서화된 스트림이 상기 적어도 하나의 저장 노드로부터 순차적으로 출력될 수 있게 하는 매체 스트리머.
  3. 제2항에 있어서, 상기 적어도 하나의 저장 노드는 상기 비디오 프리젠테이션의 상기 디지탈 표현의 단일 복제본(a single copy)을 저장하고, 상기 시간 순서화된 스트림은 상기 회로 스위치로 입력되며, 상기 회로 스위치는 상기 입력되는 시간 순서화된 스트림에 응답하여 다수의 시간 순서화된 스트림을 상기 다수의 입력 포트로 출력하는 매체 스트리머.
  4. 제3항에 있어서, 상기 다수의 시간 순서화된 스트림들 각각은, 상기 N개 블럭들중 동일한 블럭들의 동기 프리젠테이션(synchronous presentation)으로 이루어지는 매체 스트리머.
  5. 제3항에 있어서, 상기 다수의 시간 순서화된 스트림중 적어도 몇몇 스트림은 상기 N개 블럭들중 상이한 블럭들의 동시 프리젠테이션(simultaneous presentation)으로 이루어지는 매체 스트리머.
  6. 제1항에 있어서, 상기 적어도 하나의 저장 노드는 상기 디지탈 표현을 저장하기 위한 순차 액세스 저장장치(sequential access storage)와, 상기 순차 액세스 저장장치의 출력에 접속된 입력단을 갖는 랜덤 액세스 저장장치를 포함하는 매체 스트리머.
  7. 제1항에 있어서, 상기 적어도 하나의 제어 노드는 비디오 프리젠테이션들중 지정된 프리젠테이션들에 대한 요구를 수신하는 입력단을 가지며, 상기 적어도 하나의 저장 노드는, 적어도 하나의 제어 노드의 비디오 프리젠테이션 요구 수신시, 사실상 즉시 출력될 수 있는 하나 이상의 비디오 프리젠테이션들의 N개의 블럭들중 사전 결정된 블럭 또는 블럭들을 갖는 매체 스트리머.
  8. 제1항에 있어서, 상기 적어도 하나의 제어 노드는 상기 적어도 하나의 저장 노드내에 비디오 프리젠테이션의 디지탈 표현을 저장하기 위한 적어도 하나의 커맨드를 구비한 제1커맨드 세트(a first set of commands)를 포함하는 커맨드들에 응답하며, 상기 적어도 하나의 제어 노드는 상기 통신 노드들중 적어도 한 통신 노드의 입력 포트로 상기 N개 블럭들 각각의 시간 순서화된 스트림의 전송을 초기화시키는 적어도 하나의 커맨드를 포함하는 제2커맨드 세트(a second set of commands)에 응답하며, 상기 적어도 하나의 제어 노드는 상기 제2커맨드 세트의 커맨드들에 대해 상기 제1커맨드 세트의 커맨드들보다 더 높은 우선순위로 응답하는 매체 스트리머.
  9. 제1항에 있어서, 상기 회로 스위치는 크로스바 스위치(crossbar switch)로 이루어지는 매체 스트리머.
  10. ① 비디오 프리젠테이션의 디지탈 표현을 다수의 N개 데이터 블럭들로서 저장하는 적어도 하나의 저장 노드-상기 비디오 프리젠테이션을 완전히 표시하는데 시간 T가 요구되며, 상기 각 데이터 블럭은 상기 비디오 프리젠테이션의 T/N 기간에 대응하는 데이터를 저장함-와, ② 적어도 하나의 입력 포트와, 적어도 하나의 출력 포트와, 상기 데이터 블럭이 디스패치를 위해 준비되어야 할 때 상기 적어도 하나의 저장 노드로부터 데이터 블럭을 요구하기 위한 요구 큐 수단과, 상기 데이터 블럭을 등시성 출력 스트림으로 변환하여 상기 등시성 출력 스트림을 상기 출력 포트로 전송하는 출력 수단을 제각기 구비하는 다수의 통신 노드와, ③ 상기 적어도 하나의 저장 노드와 상기 다수의 통신 노드의 입력 포트 사이에 접속되어, 상기 적어도 하나의 저장 노드에 저장된 데이터 블럭들이 상기 통신 노드들중 하나 이상의 통신 노드들의 입력 포트들로 디스패치될 수 있도록 상기 입력 포트들중 하나 이상의 입력 포트를 상기 적어도 하나의 저장 노드에 선택적으로 결합하는 회로 스위치와, ④ 적어도 상기 다수의 통신 노드들과 상기 적어도 하나의 저장 노드들에 결합되어, 상기 N개의 블럭들중 임의의 블럭에 대응하는 등시성 데이터 스트림이 상기 다수의 통신 노드들중 임의의 통신 노드의 임의의 출력 포트에 나타날 수 있게 하는 적어도 하나의 제어 노드-상기 적어도 하나의 제어 노드는 비디오 프리젠테이션에 대한 요구를 수신하는 입력단을 갖고, 상기 적어도 하나의 저장 노드는, 상기 적어도 하나의 제어 노드의 비디오 프리젠테이션 요구 수신시에 사실상 즉시 출력될 수 있는 하나 이상의 비디오 프리젠테이션들의 N개 데이터 블럭들중 적어도 하나를 가지며, 상기 적어도 하나의 제어 노드는 또한 (i) 상기 N개의 데이터 블럭들중 동일한 블럭에 대응하는 등시성 데이터 스트림들이 다수의 출력 포트들에 동시에 나타날 수 있게 하며, (ii) 상기 N개의 블럭들중 상이한 블럭들에 대응하는 등시성 데이터 스트림이 다수의 출력 포트들에 동시에 나타날 수 있게 함-를 포함하는 매체 스트리머.
  11. 제10항에 있어서, 상기 적어도 하나의 저장 노드는 상기 디지탈 표현을 저장하기 위한 순차인 액세스 저장장치와, 상기 순차 액세스 저장장치의 출력에 접속된 입력단을 갖는 랜덤 액세스 저장장치를 포함하는 매체 스트리머.
  12. 제11항에 있어서, 상기 순차 액세스 저장장치는 적어도 하나의 테이프 장치(tape unit)로 이루어지며, 상기 랜덤 액세스 저장장치는 적어도 하나의 디스크 장치(disk unit)로 이루어지는 매체 스트리머.
  13. 제11항에 있어서, 상기 순차 액세스 저장장치는 적어도 하나의 디스크 장치로 이루어지고, 상기 랜덤 액세스 저장장치는 적어도 하나의 반도체 메모리 장치(semiconductor memory unit)로 이루어지는 매체 스트리머.
  14. 제11항에 있어서, 상기 순차 액세스 저장장치는 적어도 하나의 테이프 장치로 이루어지고, 상기 랜덤 랙세스 저장장치는 적어도 하나의 디스크 장치 및, 상기 적어도 하나의 디스크 장치의 출력에 결합된 반도체 메모리 장치로 이루어지는 매체 스트리머.
KR1019950028703A 1994-09-08 1995-09-04 매체 스트리머 KR100207882B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/302,625 1994-09-08
US08/302,625 US5668948A (en) 1994-09-08 1994-09-08 Media streamer with control node enabling same isochronous streams to appear simultaneously at output ports or different streams to appear simultaneously at output ports
US8/302,625 1994-09-08

Publications (2)

Publication Number Publication Date
KR960011724A KR960011724A (ko) 1996-04-20
KR100207882B1 true KR100207882B1 (ko) 1999-07-15

Family

ID=23168556

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019950028703A KR100207882B1 (ko) 1994-09-08 1995-09-04 매체 스트리머

Country Status (9)

Country Link
US (1) US5668948A (ko)
EP (1) EP0701371B1 (ko)
JP (1) JP3048897B2 (ko)
KR (1) KR100207882B1 (ko)
CN (1) CN1112043C (ko)
AT (1) ATE192007T1 (ko)
CA (1) CA2154042C (ko)
DE (1) DE69516346T2 (ko)
ES (1) ES2144579T3 (ko)

Families Citing this family (149)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0879685A (ja) * 1994-08-31 1996-03-22 Sony Corp ニア・ビデオ・オン・デマンドシステムにおけるプログラム再生装置
CA2153445C (en) * 1994-09-08 2002-05-21 Ashok Raj Saxena Video optimized media streamer user interface
SE503633C2 (sv) * 1994-10-17 1996-07-22 Ericsson Telefon Ab L M Lastdelande system och förfarande för behandling av data samt kommunikationssystem med lastdelning
US5828904A (en) * 1995-05-09 1998-10-27 Apple Computer, Inc. System for data retrieval by scheduling retrieval if number of units scheduled equals or less than predetermined number and retrieving before or at time elapsed
US7577782B2 (en) 1996-02-02 2009-08-18 Sony Corporation Application programming interface for data transfer and bus management over a bus structure
US6631435B1 (en) * 1996-02-02 2003-10-07 Sony Corporation Application programming interface for data transfer and bus management over a bus structure
US6519268B1 (en) * 1996-03-07 2003-02-11 Sony Corporation Asynchronous data pipe for automatically managing asynchronous data transfers between an application and a bus structure
US6233637B1 (en) 1996-03-07 2001-05-15 Sony Corporation Isochronous data pipe for managing and manipulating a high-speed stream of isochronous data flowing between an application and a bus structure
US5745756A (en) * 1996-06-24 1998-04-28 International Business Machines Corporation Method and system for managing movement of large multi-media data files from an archival storage to an active storage within a multi-media server computer system
JP3039380B2 (ja) * 1996-07-04 2000-05-08 日本電気株式会社 マルチメディア通信端末装置
DE19631939A1 (de) * 1996-08-08 1998-02-12 Sel Alcatel Ag Digitaler ISDN-Video-Server
US5838912A (en) * 1996-09-04 1998-11-17 International Business Machines Corporation Distribution of digitally encoded presentations
JPH10178627A (ja) * 1996-10-18 1998-06-30 Canon Inc サーバシステム及びサーバシステムにおける信号の配信方法
US5987518A (en) * 1996-10-28 1999-11-16 General Instrument Corporation Method and apparatus for communicating internet protocol data over a broadband MPEG channel
KR100270354B1 (ko) * 1996-11-20 2000-11-01 정선종 이기종망간의 중계 서버 및 실시간 중계 방법
US6253375B1 (en) 1997-01-13 2001-06-26 Diva Systems Corporation System for interactively distributing information services
JP2001509979A (ja) * 1997-01-29 2001-07-24 ウィンボンド エレクトロニクス コーポレーション アメリカ 動画ビデオカメラ用ディジタル動画および静止画キャプチャー・アダプタ
US5831805A (en) * 1997-02-13 1998-11-03 Sony Corporation Local power failure detection and clock disabling circuit
JPH10229420A (ja) 1997-02-17 1998-08-25 Matsushita Electric Ind Co Ltd 通信システム
US6173329B1 (en) * 1997-02-19 2001-01-09 Nippon Telegraph And Telephone Corporation Distributed multimedia server device and distributed multimedia server data access method
US5978881A (en) * 1997-02-24 1999-11-02 Sigma Electronics, Inc. Scalable switcher with detachably securable frame adapter cards for routing audio and video signals
US5845152A (en) * 1997-03-19 1998-12-01 Apple Computer, Inc. Method for transmission of isochronous data with two cycle look ahead
JPH10268900A (ja) * 1997-03-26 1998-10-09 Oki Micro Design Miyazaki:Kk 音声記録再生装置
US6134596A (en) * 1997-09-18 2000-10-17 Microsoft Corporation Continuous media file server system and method for scheduling network resources to play multiple files having different data transmission rates
US6516356B1 (en) 1997-09-30 2003-02-04 International Business Machines Corporation Application interface to a media server and a method of implementing the same
US6202124B1 (en) * 1998-05-05 2001-03-13 International Business Machines Corporation Data storage system with outboard physical data transfer operation utilizing data path distinct from host
US7272298B1 (en) 1998-05-06 2007-09-18 Burst.Com, Inc. System and method for time-shifted program viewing
US20010044850A1 (en) * 1998-07-22 2001-11-22 Uri Raz Method and apparatus for determining the order of streaming modules
US7197570B2 (en) * 1998-07-22 2007-03-27 Appstream Inc. System and method to send predicted application streamlets to a client device
US8577205B2 (en) 1998-07-30 2013-11-05 Tivo Inc. Digital video recording system
US7558472B2 (en) 2000-08-22 2009-07-07 Tivo Inc. Multimedia signal processing system
US6233389B1 (en) 1998-07-30 2001-05-15 Tivo, Inc. Multimedia time warping system
US8380041B2 (en) 1998-07-30 2013-02-19 Tivo Inc. Transportable digital video recorder system
US6697869B1 (en) * 1998-08-24 2004-02-24 Koninklijke Philips Electronics N.V. Emulation of streaming over the internet in a broadcast application
US7068729B2 (en) 2001-12-21 2006-06-27 Digital Fountain, Inc. Multi-stage code generator and decoder for communication systems
US6307487B1 (en) 1998-09-23 2001-10-23 Digital Fountain, Inc. Information additive code generator and decoder for communication systems
US6167471A (en) 1998-10-14 2000-12-26 Sony Corporation Method of and apparatus for dispatching a processing element to a program location based on channel number of received data
US6389218B2 (en) 1998-11-30 2002-05-14 Diva Systems Corporation Method and apparatus for simultaneously producing compressed play and trick play bitstreams from a video frame sequence
US11109114B2 (en) 2001-04-18 2021-08-31 Grass Valley Canada Advertisement management method, system, and computer program product
US6408436B1 (en) 1999-03-18 2002-06-18 Next Level Communications Method and apparatus for cross-connection of video signals
US6247069B1 (en) 1999-05-12 2001-06-12 Sony Corporation Automatically configuring storage array including a plurality of media storage devices for storing and providing data within a network of devices
US6859846B2 (en) 1999-05-12 2005-02-22 Sony Corporation Method of distributed recording whereby the need to transition to a second recording device from a first recording device is broadcast by the first recording device
US6381746B1 (en) * 1999-05-26 2002-04-30 Unisys Corporation Scaleable video system having shared control circuits for sending multiple video streams to respective sets of viewers
US6934759B2 (en) * 1999-05-26 2005-08-23 Enounce, Inc. Method and apparatus for user-time-alignment for broadcast works
AU5140200A (en) * 1999-05-26 2000-12-18 Enounce, Incorporated Method and apparatus for controlling time-scale modification during multi-media broadcasts
EP1065589A1 (en) * 1999-06-28 2001-01-03 Lucent Technologies Inc. Multimedia processing system architecture
US6742019B1 (en) * 1999-07-23 2004-05-25 International Business Machines Corporation Sieved caching for increasing data rate capacity of a heterogeneous striping group
US6721859B1 (en) 1999-10-21 2004-04-13 Sony Corporation Multi-protocol media storage device implementing protocols optimized for storing and retrieving both asynchronous and isochronous data
DE60033917T2 (de) * 1999-11-01 2007-07-05 Seiko Epson Corp. Datenausgabesteuergerät und Verfahren um Datenausgabedienst zu ermöglichen
US6523108B1 (en) 1999-11-23 2003-02-18 Sony Corporation Method of and apparatus for extracting a string of bits from a binary bit string and depositing a string of bits onto a binary bit string
US7281034B1 (en) 2000-01-24 2007-10-09 Friskit, Inc. System and method for media playback over a network using links that contain control signals and commands
US6519648B1 (en) 2000-01-24 2003-02-11 Friskit, Inc. Streaming media search and continuous playback of multiple media resources located on a network
US6721741B1 (en) 2000-01-24 2004-04-13 Friskit, Inc. Streaming media search system
US7228305B1 (en) 2000-01-24 2007-06-05 Friskit, Inc. Rating system for streaming media playback system
US6389467B1 (en) 2000-01-24 2002-05-14 Friskit, Inc. Streaming media search and continuous playback system of media resources located by multiple network addresses
US6714720B1 (en) * 2000-03-06 2004-03-30 Ati International Srl Method and apparatus for storing multi-media data
US6778346B2 (en) * 2000-03-30 2004-08-17 Sony Corporation Recording and reproducing apparatus and file managing method using the same
US7006515B1 (en) * 2000-04-07 2006-02-28 Omneon Video Networks Isochronous queue and buffer management
US7010537B2 (en) * 2000-04-27 2006-03-07 Friskit, Inc. Method and system for visual network searching
US7720821B1 (en) 2000-06-30 2010-05-18 Sony Corporation Method of and apparatus for writing and reading time sensitive data within a storage device
USRE47053E1 (en) 2000-06-30 2018-09-18 Benhov Gmbh, Llc Method and system for subscriber-based audio service over a communication network
KR100575527B1 (ko) * 2000-08-22 2006-05-03 엘지전자 주식회사 디지털 데이터 스트림의 기록방법
US7840691B1 (en) 2000-09-07 2010-11-23 Zamora Radio, Llc Personal broadcast server system for providing a customized broadcast
US7716358B2 (en) 2000-09-12 2010-05-11 Wag Acquisition, Llc Streaming media buffering system
US8595372B2 (en) * 2000-09-12 2013-11-26 Wag Acquisition, Llc Streaming media buffering system
US6766376B2 (en) 2000-09-12 2004-07-20 Sn Acquisition, L.L.C Streaming media buffering system
US6904475B1 (en) 2000-11-06 2005-06-07 Sony Corporation Programmable first-in first-out (FIFO) memory buffer for concurrent data stream handling
US7085842B2 (en) 2001-02-12 2006-08-01 Open Text Corporation Line navigation conferencing system
US7962482B2 (en) 2001-05-16 2011-06-14 Pandora Media, Inc. Methods and systems for utilizing contextual feedback to generate and modify playlists
US7124292B2 (en) * 2001-05-21 2006-10-17 Sony Corporation Automatically configuring storage array including a plurality of media storage devices for storing and providing data within a network of devices
WO2002103551A1 (en) 2001-06-15 2002-12-27 Cadence Design Systems, Inc. Enhancing mergeability of datapaths and reducing datapath widths by rebalancing data flow topology
US7047308B2 (en) * 2001-08-31 2006-05-16 Sharp Laboratories Of America, Inc. System and method for simultaneous media playout
GB2386738B (en) 2002-03-18 2005-09-21 Hewlett Packard Co Media playing
US9240810B2 (en) 2002-06-11 2016-01-19 Digital Fountain, Inc. Systems and processes for decoding chain reaction codes through inactivation
EP2357732B1 (en) 2002-10-05 2022-04-06 QUALCOMM Incorporated Systematic encoding and decoding of chain reaction codes
US20040090964A1 (en) * 2002-11-07 2004-05-13 Coke Reed Means and apparatus for a scaleable congestion free switching system with intelligent control II
CN1195274C (zh) * 2003-01-25 2005-03-30 华中科技大学 基于集群视频服务器的节目源分片分布式存储方法
US7343425B1 (en) 2003-02-21 2008-03-11 Marvell International Ltd. Multi-speed serial interface for media access control and physical layer devices
KR100556844B1 (ko) * 2003-04-19 2006-03-10 엘지전자 주식회사 동영상 전송 시스템의 에러 검출 방법
US6988110B2 (en) * 2003-04-23 2006-01-17 International Business Machines Corporation Storage system class distinction cues for run-time data management
US8296764B2 (en) * 2003-08-14 2012-10-23 Nvidia Corporation Internal synchronization control for adaptive integrated circuitry
US7139960B2 (en) 2003-10-06 2006-11-21 Digital Fountain, Inc. Error-correcting multi-stage code generator and decoder for communication systems having single transmitters or multiple transmitters
WO2005112250A2 (en) 2004-05-07 2005-11-24 Digital Fountain, Inc. File download and streaming system
US8346157B1 (en) 2004-06-16 2013-01-01 Colby Steven M Content customization in asymmertic communication systems
US7228364B2 (en) * 2004-06-24 2007-06-05 Dell Products L.P. System and method of SCSI and SAS hardware validation
US7672300B1 (en) 2004-07-22 2010-03-02 Marvell Israel (M.I.S.L.) Ltd. Network device with multiple MAC/PHY ports
US7610011B2 (en) 2004-09-19 2009-10-27 Adam Albrett Providing alternative programming on a radio in response to user input
US9967534B1 (en) 2004-11-19 2018-05-08 Tivo Solutions Inc. Digital video recorder video editing system
WO2007095550A2 (en) 2006-02-13 2007-08-23 Digital Fountain, Inc. Streaming and buffering using variable fec overhead and protection periods
US9270414B2 (en) 2006-02-21 2016-02-23 Digital Fountain, Inc. Multiple-field based code generator and decoder for communications systems
WO2007134196A2 (en) 2006-05-10 2007-11-22 Digital Fountain, Inc. Code generator and decoder using hybrid codes
US9386064B2 (en) 2006-06-09 2016-07-05 Qualcomm Incorporated Enhanced block-request streaming using URL templates and construction rules
US9419749B2 (en) 2009-08-19 2016-08-16 Qualcomm Incorporated Methods and apparatus employing FEC codes with permanent inactivation of symbols for encoding and decoding processes
US9432433B2 (en) 2006-06-09 2016-08-30 Qualcomm Incorporated Enhanced block-request streaming system using signaling or block creation
US9380096B2 (en) 2006-06-09 2016-06-28 Qualcomm Incorporated Enhanced block-request streaming system for handling low-latency streaming
US9209934B2 (en) 2006-06-09 2015-12-08 Qualcomm Incorporated Enhanced block-request streaming using cooperative parallel HTTP and forward error correction
US9178535B2 (en) 2006-06-09 2015-11-03 Digital Fountain, Inc. Dynamic stream interleaving and sub-stream based delivery
EP2078391A2 (en) * 2006-10-24 2009-07-15 Nxp B.V. System comprising nodes with active and passive ports
CA2671731A1 (en) 2007-01-04 2008-07-17 Qualcomm Incorporated Method and apparatus for distributed spectrum sensing for wireless communication
BRPI0816680A2 (pt) 2007-09-12 2015-03-17 Qualcomm Inc Gerar e comunicar informações de identificação de origem pra habilitar comunicações confiáveis.
US8136140B2 (en) 2007-11-20 2012-03-13 Dish Network L.L.C. Methods and apparatus for generating metadata utilized to filter content from a video stream using text data
US8165450B2 (en) 2007-11-19 2012-04-24 Echostar Technologies L.L.C. Methods and apparatus for filtering content in a video stream using text data
US8165451B2 (en) 2007-11-20 2012-04-24 Echostar Technologies L.L.C. Methods and apparatus for displaying information regarding interstitials of a video stream
US8606085B2 (en) 2008-03-20 2013-12-10 Dish Network L.L.C. Method and apparatus for replacement of audio data in recorded audio/video stream
US8156520B2 (en) 2008-05-30 2012-04-10 EchoStar Technologies, L.L.C. Methods and apparatus for presenting substitute content in an audio/video stream using text data
WO2010060106A1 (en) * 2008-11-24 2010-05-27 Ankeena Networks, Inc., Adaptive network content delivery system
US8510771B2 (en) 2008-12-24 2013-08-13 Echostar Technologies L.L.C. Methods and apparatus for filtering content from a presentation stream using signature data
US8588579B2 (en) 2008-12-24 2013-11-19 Echostar Technologies L.L.C. Methods and apparatus for filtering and inserting content into a presentation stream using signature data
US8407735B2 (en) 2008-12-24 2013-03-26 Echostar Technologies L.L.C. Methods and apparatus for identifying segments of content in a presentation stream using signature data
US8578272B2 (en) 2008-12-31 2013-11-05 Apple Inc. Real-time or near real-time streaming
US8260877B2 (en) 2008-12-31 2012-09-04 Apple Inc. Variant streams for real-time or near real-time streaming to provide failover protection
US20100169303A1 (en) 2008-12-31 2010-07-01 David Biderman Playlists for real-time or near real-time streaming
US8156089B2 (en) * 2008-12-31 2012-04-10 Apple, Inc. Real-time or near real-time streaming with compressed playlists
US9281847B2 (en) 2009-02-27 2016-03-08 Qualcomm Incorporated Mobile reception of digital video broadcasting—terrestrial services
US8437617B2 (en) 2009-06-17 2013-05-07 Echostar Technologies L.L.C. Method and apparatus for modifying the presentation of content
US9112618B2 (en) * 2009-07-02 2015-08-18 Qualcomm Incorporated Coding latency reductions during transmitter quieting
US9288010B2 (en) 2009-08-19 2016-03-15 Qualcomm Incorporated Universal file delivery methods for providing unequal error protection and bundled file delivery services
US9917874B2 (en) 2009-09-22 2018-03-13 Qualcomm Incorporated Enhanced block-request streaming using block partitioning or request controls for improved client-side handling
US7702805B1 (en) 2009-10-05 2010-04-20 Adobe Systems Incorporated Streaming media seek
CN102118612B (zh) * 2009-12-31 2012-11-14 Tcl集团股份有限公司 一种音视频硬解码芯片内存资源的获取方法及系统
US8934758B2 (en) 2010-02-09 2015-01-13 Echostar Global B.V. Methods and apparatus for presenting supplemental content in association with recorded content
US8560642B2 (en) 2010-04-01 2013-10-15 Apple Inc. Real-time or near real-time streaming
GB201105502D0 (en) 2010-04-01 2011-05-18 Apple Inc Real time or near real time streaming
US8805963B2 (en) 2010-04-01 2014-08-12 Apple Inc. Real-time or near real-time streaming
TWI451279B (zh) 2010-04-07 2014-09-01 Apple Inc 即時或接近即時串流傳輸之內容存取控制
US9049497B2 (en) 2010-06-29 2015-06-02 Qualcomm Incorporated Signaling random access points for streaming video data
US8918533B2 (en) 2010-07-13 2014-12-23 Qualcomm Incorporated Video switching for streaming video data
US9185439B2 (en) 2010-07-15 2015-11-10 Qualcomm Incorporated Signaling data for multiplexing video components
US9596447B2 (en) 2010-07-21 2017-03-14 Qualcomm Incorporated Providing frame packing type information for video coding
US8806050B2 (en) 2010-08-10 2014-08-12 Qualcomm Incorporated Manifest file updates for network streaming of coded multimedia data
US9704393B2 (en) * 2011-01-11 2017-07-11 Videonetics Technology Private Limited Integrated intelligent server based system and method/systems adapted to facilitate fail-safe integration and/or optimized utilization of various sensory inputs
US8958375B2 (en) 2011-02-11 2015-02-17 Qualcomm Incorporated Framing for an improved radio link protocol including FEC
US9270299B2 (en) 2011-02-11 2016-02-23 Qualcomm Incorporated Encoding and decoding using elastic codes with flexible source block mapping
US8856283B2 (en) 2011-06-03 2014-10-07 Apple Inc. Playlists for real-time or near real-time streaming
US8843586B2 (en) 2011-06-03 2014-09-23 Apple Inc. Playlists for real-time or near real-time streaming
US9253233B2 (en) 2011-08-31 2016-02-02 Qualcomm Incorporated Switch signaling methods providing improved switching between representations for adaptive HTTP streaming
US9843844B2 (en) 2011-10-05 2017-12-12 Qualcomm Incorporated Network streaming of media data
US20130110900A1 (en) * 2011-10-28 2013-05-02 Comcast Cable Communications, Llc System and method for controlling and consuming content
US9294226B2 (en) 2012-03-26 2016-03-22 Qualcomm Incorporated Universal object delivery and template-based file delivery
GB2501145A (en) * 2012-04-12 2013-10-16 Supercell Oy Rendering and modifying objects on a graphical user interface
US20150049099A1 (en) * 2013-08-13 2015-02-19 Mediatek Inc. Data processing apparatus for transmitting/receiving compressed pixel data groups of picture over display interface and related data processing method
JP6141511B2 (ja) 2014-02-27 2017-06-07 三菱電機株式会社 データ記憶装置
CA2978488C (en) * 2015-03-10 2023-08-22 Royal Bank Of Canada Systems and methods for managing data
US9940255B2 (en) * 2015-11-09 2018-04-10 International Business Machines Corporation Implementing hardware accelerator for storage write cache management for identification of data age in storage write cache
JPWO2017145781A1 (ja) * 2016-02-25 2018-10-04 日本電信電話株式会社 ペーシング制御装置、ペーシング制御方法、及びプログラム
US10284888B2 (en) * 2017-06-03 2019-05-07 Apple Inc. Multiple live HLS streams
CN109067665B (zh) 2018-09-25 2022-01-11 华为技术有限公司 拥塞控制方法和网络设备
US11172269B2 (en) 2020-03-04 2021-11-09 Dish Network L.L.C. Automated commercial content shifting in a video streaming system
CN111757144B (zh) * 2020-04-13 2022-03-08 湖南化工职业技术学院(湖南工业高级技工学校) 一种网络计算机多媒体视频播放方法和系统

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4679191A (en) * 1983-05-04 1987-07-07 Cxc Corporation Variable bandwidth switching system
IT1219727B (it) * 1988-06-16 1990-05-24 Italtel Spa Sistema di comunicazione a larga banda
JP3002471B2 (ja) * 1988-08-19 2000-01-24 株式会社日立製作所 番組配信装置
DE68925515T2 (de) * 1988-11-11 1996-05-30 Victor Company Of Japan Datenverarbeitungsgerät
US4949187A (en) * 1988-12-16 1990-08-14 Cohen Jason M Video communications system having a remotely controlled central source of video and audio data
EP0573406B1 (en) * 1989-08-23 1997-06-04 Delta Beta Pty. Ltd. Program transmission optimisation
US5421031A (en) * 1989-08-23 1995-05-30 Delta Beta Pty. Ltd. Program transmission optimisation
US5099319A (en) * 1989-10-23 1992-03-24 Esch Arthur G Video information delivery method and apparatus
US5166926A (en) * 1990-12-18 1992-11-24 Bell Communications Research, Inc. Packet address look-ahead technique for use in implementing a high speed packet switch
EP0529864B1 (en) * 1991-08-22 2001-10-31 Sun Microsystems, Inc. Network video server apparatus and method
US5247347A (en) * 1991-09-27 1993-09-21 Bell Atlantic Network Services, Inc. Pstn architecture for video-on-demand services
US5237658A (en) * 1991-10-01 1993-08-17 Tandem Computers Incorporated Linear and orthogonal expansion of array storage in multiprocessor computing systems
AU2313592A (en) * 1992-02-11 1993-09-03 Masato Hata Adaptive video file server and methods for its use
CA2117422A1 (en) * 1992-02-11 1993-08-19 Mark C. Koz Adaptive video file server and methods for its use
WO1994001964A1 (en) * 1992-07-08 1994-01-20 Bell Atlantic Network Services, Inc. Media server for supplying video and multi-media data over the public telephone switched network
US5404537A (en) * 1992-09-17 1995-04-04 International Business Machines Corp. Priority interrupt switching apparatus for real time systems
US5357276A (en) * 1992-12-01 1994-10-18 Scientific-Atlanta, Inc. Method of providing video on demand with VCR like functions
US5289461A (en) * 1992-12-14 1994-02-22 International Business Machines Corporation Interconnection method for digital multimedia communications
US5442389A (en) * 1992-12-28 1995-08-15 At&T Corp. Program server for interactive television system
US5508732A (en) * 1993-03-22 1996-04-16 International Business Machines Corporation Data server, control server and gateway architecture system and method for broadcasting digital video on demand
US5442390A (en) * 1993-07-07 1995-08-15 Digital Equipment Corporation Video on demand with memory accessing and or like functions
US5414455A (en) * 1993-07-07 1995-05-09 Digital Equipment Corporation Segmented video on demand system
JP2577699B2 (ja) * 1993-08-26 1997-02-05 日本電信電話株式会社 多重読書き方法
US5528513A (en) * 1993-11-04 1996-06-18 Digital Equipment Corp. Scheduling and admission control policy for a continuous media server
US5473362A (en) * 1993-11-30 1995-12-05 Microsoft Corporation Video on demand system comprising stripped data across plural storable devices with time multiplex scheduling
US5453779A (en) * 1994-03-15 1995-09-26 International Business Machines Corporation Scheduling policies with grouping for providing VCR control functions in a video server
US5461415A (en) * 1994-03-15 1995-10-24 International Business Machines Corporation Look-ahead scheduling to support video-on-demand applications

Also Published As

Publication number Publication date
JPH08154233A (ja) 1996-06-11
DE69516346T2 (de) 2000-10-19
EP0701371B1 (en) 2000-04-19
KR960011724A (ko) 1996-04-20
CN1119812A (zh) 1996-04-03
EP0701371A1 (en) 1996-03-13
DE69516346D1 (de) 2000-05-25
CA2154042C (en) 2001-03-27
CN1112043C (zh) 2003-06-18
US5668948A (en) 1997-09-16
ATE192007T1 (de) 2000-05-15
ES2144579T3 (es) 2000-06-16
JP3048897B2 (ja) 2000-06-05
CA2154042A1 (en) 1996-03-09

Similar Documents

Publication Publication Date Title
KR100207882B1 (ko) 매체 스트리머
KR100228937B1 (ko) 매체 스트리머
KR100192723B1 (ko) 매체 스트리머
KR0184627B1 (ko) 분산형 비디오 데이타 저장 장치를 구비하고 비디오에 최적화된 매체 스트리머
JP3234752B2 (ja) 媒体ストリーマ
JP3110987B2 (ja) 等時性データ・ストリームを生成するビデオ用に最適化された媒体ストリーマ
US5790794A (en) Video storage unit architecture
US6005599A (en) Video storage and delivery apparatus and system
US5440336A (en) System and method for storing and forwarding audio and/or visual information on demand
US5606359A (en) Video on demand system with multiple data sources configured to provide vcr-like services
EP0701373B1 (en) Video server system
EP1175776B1 (en) Video on demand system

Legal Events

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

Payment date: 20030207

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee