KR100228937B1 - 매체 스트리머 - Google Patents

매체 스트리머 Download PDF

Info

Publication number
KR100228937B1
KR100228937B1 KR1019950028705A KR19950028705A KR100228937B1 KR 100228937 B1 KR100228937 B1 KR 100228937B1 KR 1019950028705 A KR1019950028705 A KR 1019950028705A KR 19950028705 A KR19950028705 A KR 19950028705A KR 100228937 B1 KR100228937 B1 KR 100228937B1
Authority
KR
South Korea
Prior art keywords
video
data
command
node
storage node
Prior art date
Application number
KR1019950028705A
Other languages
English (en)
Other versions
KR960011911A (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 KR960011911A publication Critical patent/KR960011911A/ko
Application granted granted Critical
Publication of KR100228937B1 publication Critical patent/KR100228937B1/ko

Links

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B15/00Driving, starting or stopping record carriers of filamentary or web form; Driving both such record carriers and heads; Guiding such record carriers or containers therefor; Control thereof; Control of operating function
    • G11B15/18Driving; Starting; Stopping; Arrangements for control or regulation thereof
    • 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

Landscapes

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

Abstract

본 발명은 적어도 하나의 제어 노드(18)와; 적어도 하나의 제어 노드에 접속된 출력부를 갖는 사용자 인터페이스(64, 65, 66)와; 적어도 하나의 비디오 프리젠테이션의 디지탈 표시를 저장하는 적어도 하나의 저장 노드(16, 17)와; 다수의 통신 노드내의 각 통신 노드가 다수의 통신 노드로 부터 적어도 하나의 비디오 프리젠테이션의 디지탈 표시를 수신하는 입력 포트를 갖는 상기 다수의 통신 노드를 포함하는 매체 스트리머(10)에 관한 것이다. 비디오 프리젠테이션은 전체 비디오를 제공하는 시간 T 를 요구하며, 다수의 N 블럭으로서 저장된다. 각 데이타 블럭은 비디오 프리젠데이션의 T/N 주기에 상응하는 데이타를 저장한다. 각 통신 노드는 또한 디지탈 표시를 출력하는 다수의 출력 포트를 구비한다. 회로 스위치(12)는 적어도 하나의 저장 노드와 통신 노드의 입력 포트사이에 연결되어 하나이상의 입력 포트를 적어도 하나의 저장 노드에 접속시킨다. 사용자 인터페이스는 실행에 대한 커맨드를 지정하는 기능을 포함하며, 적어도 하나의 제어 노드는 회로 스의치와 제휴하여, 적어오 하나의 저장 노드 및 다수의 통신 노드중 적어도 하나의 노드를 제어하는 개별적인 하나의 커맨드에 응답하여, 상기 개별적인 하나의 커맨드와 연관된 기능을 수행한다. 상기 커맨드들은 로드 커맨드, 이젝트 커맨드, 재생 커맨드, 느린 재생 커맨드, 고속 감기 커맨드, 일시 중지 커맨드, 중단 커맨드, 되감기 커맨드 및 음소거 커맨드를 포함하는 그룹으로 부터 선택된 커맨드를 포함하는 비디오 카셋트 레코드에 사용되는 커맨드와 유사한 커맨드를 포함할 수 있다.
이 커맨드들은 또한 재생 리스트 커맨드, 재생 길이 커맨드 및 배치 커맨드를 포함하는 그룹으로 부터 선택된 커맨드를 포함할 수 있다.
사용자 인터페이스를 통해 응용 프로그램을 적어도 하나의 제어 노드에 연결하기 의해 동기적 응용 프로그램 인터페이스가 제공된다. API 는 원격 절차 호출 절차를 포함한다.

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)으로 다수의 터미날에 동시에 비디오를 제공하는 대화형 비디오 서버 시스템(aninteractive video server system)에 관한 것이다.
본 발명과 관련된 기술은 1994년 9윌 8일자로 출원된 미국 특허 출원 제 08/302,625 호(명칭: "Video Optimized Media Streamer", 발명자: 더블유. 알. 벨 크냅(W.R. Belknap) 등)와, 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 0ptimized Media Streamer with Cache Management'', 발명자: 더블유.알.벨크냅(W.R. Belknap) 등)와, 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 techno1ogy)은 종래 기술의 테이프 시스템에 대한 훌륭한 대안이 된다.
디스크 시스템의 디지탈 디스크 데이타를 랜덤하게 액세스하는 능력 및 매우 넓은 대역폭을 이용할 경우, 디스크 기술의 확장성(expendability), 하드웨어 비용 및 성능내에서 요구되는 시스템 기능 및 성능이 얻어진다. 종래에는, 비디오 및 영화를 저장하기 위해 디스크 화일을 사용하는 것은 저장 매체의 비용으로 인해 전혀 고려되지 않았다. 그러나, 이러한 비용은 최근에 급격하게 감소되었다.
MPEG 표준을 이용하여 압축된 비디오 데이타를 사용하는 새로이 등장하고 있는 많은 시장에 대해, 비용면에서 효율적인 방식으로 비디오 데이타를 저장할 수 있는 각종 방법이 존재한다. 본 발명은 여러가지 다른 많은 성능 요건에 대한 계층적인 해결책(hierarchical solution)을 제공하여, 시장의 요건을 만족시키도록 커스텀화될 수 있는 모듈별 시스템 접근 방안을 제공한다.
본 발명은 비디오에 사용할 수 있는 컴퓨터 서브시스템을 제공하며, 본 시스템은 컴퓨터 분야의 통상적인 인터페이스를 통해 멀티미디어 환경의 등시성 데이타 스트림 전송을 가능하게 한다. 본 발명에 따른 매체 스트리머(a media streamer)는 등시성 데이타 스트림의 전송을 위해 최적화되며, ATM(Asynchronus Transfer Mode) 기술에 의해 데이타를 새로운 컴퓨터 네트워크내로 스트리밍할 수 있다. 본 발명은 시스템 제어를 위해 VTR(Video Tape Recoder)과 유사한 기능을 제공하면서 비디오 테이프의 단점을 제거한다. 본 발명의 시스템은, 단말 사용자에게 1 에서 1000개에 이르는 독립적으로 제어되는 데이타 스트림을 전송하는 스케일러빌러티(scaleability)와, 단일의 데이타 복제본으로부터 복수의 등시성 데이타 스트림을 전송하는 능력과, 혼합 출력 인터페이스(mixed output interface)와, 혼합 데이타 레이트와, 단순한 "오픈 시스템" 제어 인터페이스와, 자동화 제어 지원(automation contro1 support)과, 저장 계층 지원(storage hierarchy support)과, 스트림 전송을 위한 저비용화라고 하는 특징을 제공한다.
본 발명의 일 면에 따르면, 매체 스트리머는 적어도 하나의 제어 노드와, 적어도 하나의 제어 노드에 접속된 출력부를 갖는 사용자 인터페이스와, 적어도 하나의 비디오 프리젠테이션(video presentation)의 디지탈 표현(digital representation)을 저장하는 적어도 하나의 저장 노드와, 상기 적어도 하나의 저장 노드로부터 적어도 하나의 비디오 프리젠테이션의 디지탈 표현을 수신하는 입력 포트를 제각기 갖는 다수의 통신 노드를 포함한다. 비디오 프리젠테이션을 완전히 표시하는데 시간 T가 소요되며, 비디오 프리젠테이션은 다수의 N 개의 데이타 블럭으로 저장된다. 각 데이타 블럭은 비디오 프리젠테이션의 T/N 기간에 상응하는 데이타를 저장하고 있다.
다수의 통신 노드증 각 노드는 또한 다수의 출력 포트를 가지며, 다수의 출력 포트의 각각은 하나의 디지탈 표현을 출력한다. 회로 스위치(circuit switch)는, 하나 이상의 통신 노드의 입력 포트를 적어도 하나의 저장 노드에 접속시켜 저장 노드에 저장된 디지탈 표현이 하나 이상의 통신 노드의 출력 포트에 나타나도록, 적어도 하나의 저장 노드와 다수의 통신 노드의 입력 포트 사이에 접속 된다.
사용자 인터페이스는 실행을 위한 커맨드들을 지정하는 기능을 구비하며, 적어도 하나의 제어 노드는 개개의 커맨드에 응답하고, 상기 회로 스위치와 협력하여 적어도 하나의 저장 노드 및 적어도 하나의 통신 노드를 제어함으로써 개개의 커맨드(command)와 연관된 기능을 실행한다.
상기 커맨드들은 로드 커맨드(Load command), 이젝트 커맨드(Eject command), 재생 커맨드(Play command), 저속 재생 커맨드(S1ow command), 고속 감기 커맨드(Fast Forward command), 일시 중지 커맨드(Pause command), 중단 커맨드(Stop command), 되감기 커맨드(Rewind command) 및 음소거 커맨드(Mute command)를 포함하는 그룹으로부터 선택되는 커맨드를 포함하는 비디오 카셋트 레코드에 사용되는 커맨드와 유사한 커맨드를 포함할 수 있다. 이 커맨드들은 또한 재생 리스트 커맨드(Play list comnnnd), 재생 길이 커맨드(Play length command), 및 배치 커맨드(Batch command)를 포함하는 그룹으로부터 선택된 커맨드를 포함할 수 있다.
적어도 하나의 제어 노드는 재생 리스트 커맨드에 응답하여 통신 노드의 사용자 지정 출력 포트(user-specified output port)로부터 사용자 지정 순서로 출력되는 사용자 지정 비디오 프리젠테이션(user-specified video presentation)의 리스트를 생성하며, 또한 재생 길이 커맨드에 응답하여 사용자 지정 기간(user-specified period of time)동안 사용자 지정 출력 포트로부터 사용자 지정 비디오 프리젠테이션을 출력한다.
적어도 하나의 제어 노드는 또한 배치 커맨드에 응답하여 적어도 둘 이상의 비디오 카셋트 레코더에 사용되는 커맨드와 유사한 커맨드로 구성된 사용자 지정 저장 리스트를 액세스하고, 그 후 사용자의 지시에 의해, 액세스된 저장 리스트를 구성하는 모든 커맨드를 순차적으로 실행한다.
다른 커맨드는 외부 소스로부터의 비디오 프리젠테이션의 로딩 및 외부 저장 장치로의 비디오 프리젠테이션의 출력을 가능하게 한다.
본 발명의 또 다른 면에 따르면, 매체 스트리머는 사용자 인터페이스를 통해 응용 프로그램(application program)을 적어도 하나의 제어 노드에 연결하는 동기식 응용 프로그램 인터페이스(synchronous application program interface:API)를 포함한다. API는 원격 프로시쥬어 호출(Remote Procedure Cal1:RPC) 프로시쥬어를 포함한다. 적어도 하나의 제어노드는 RPC 프로시쥬어에 응답하여 프로시쥬어를 실행하며, 회로 스위치와 협력하여 적어도 하나의 저장 노드 및 다수의 통신 노드중 적어도 하나의 노드를 제어함으로써 개개의 프로시쥬어와 연관된 적어도 하나의 기능을 실행한다. 적어도 하나의 제어 노드는 각 프로시쥬어에 대해 주어진 하나의 프로시쥬어의 실행 종료를 나타내는 종료 코드(termination code)를 복귀시킨다.
본 명세서에서는 다음과 같은 약어들이 사용된다.
AAL-5 : ATM 적응층-5 (ATM ADPTION 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 ALTERATION LINE. 프랑스를 제외한 유럽에서 표준으로 이용되는 컬러 텔레비젼 포맷.
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 POTOCOL/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 component ) .
(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)의 기능상의 능력은 전송되는 스트림의 수 및 저장되는 멀티미디어 시간량을 제외하고는 동일하게 유지될 수 있다.
제 1a 도에는, 낮은 대기시간 스위치(12)가 보다 상세히 도시된다. 다수의 회로 스위치 칩(도시되지 않음)은 (개략적으로 도시된)평면 보드(planar boads)를 통해 상호연결된 크로스바 스위치 카드(crossbar switch cards)(20)상에서 상호연결된다. 평면의 단일 카드(20)는 16 개의 노드 포트를 갖는 낮은 대기시간 크로스바 스위치를 구성한다. 부가의 카드(20)가 추가되어 부가의 노드 포트 및, 필요하다면, 고이용도를 위한 능동 리던던트 노드 포트를 구성할 수도 있다. 낮은 대기시간 스위치(12)의 각 포트는, 전이중(full duplex) 통신 채널을 통해, 예를 들면, 초당 25 메가바이트를 전송시킬 수 있다.
정보는 스위치(12)를 통해 패킷으로 전송된다. 각 패킷은 각 스위치 칩의 각 크로스바 스위치 포인트의 스위칭 상태를 제어하는 헤더 부분을 포함한다. 제어 노드(18)는 낮은 대기시간 스위치(12)를 통해 피어-투-피어 동작(peer-to-peer operation)을 가능하게 하는데 필요한 정보를 다른 노드(저장 노드(16, 17) 및 통신 노드(14))에 제공한다.
제 1b 도에는, 테이프 저장 노드(17)의 내부가 상세히 도시되어 있다. 이하에서 이해되겠지만, 테이프 저장 노드(17)는 비디오 프리젠테이션의 디지탈 표현을 저장하기 위한 고용량 저장 설비를 제공한다.
여기서, 비디오 프리젠테이션은 표시 및/또는 처리를 위해 적합한 하나 이상의이미지를 포함할 수 있다. 비디오 프리젠테이션은 오디오 부분을 포함할 수도 있다. 하나 이상의 이미지는 필름, 영학 혹은 애니메이션 시퀀스(sequence)의 순차적인 프레임들(sequential 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 c1ock 등).
애플리케이션 커맨드는 제어 인터페이스를 통해 매체 스트리머(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_POSIT ION, 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-CREATE 커맨드는 매체 스트리머(10)에게 멀티미디어 화일 및 그와 연관된 메타데이타(metadata)를 위해 하나 이상의 저장 노드(16, 17)에서의 저장을 할당하도록 명령한다. VS-CREATE 커맨드는 스트림 밀도와 요구되는 동시 사용자의 최대 수를 지정한다.
VS-CONNECT-LIST, VS-PLAY-AT-SIGNAL 및 VS-RECORD-AT-SIGNAL 의 3개의 부가적인 커맨드는 방송 분야에서 자동화 제어 시스템을 지원한다. VS-CONNECT-LlST는 애플리케이션이 서브시스템에 대해 일련의 재생 커맨드를 단일 커맨드로 지정할수 있게 한다. 매체 스트리머(10)는 각 재생 커맨드가 제어 인터페이스를 통해 송출된 것처럼 각 재생 커맨드를 실행할 것이지만, 하나의 스트림 전송과 다음 스트림 전송 사이에는 불연속없이 전이할 것이다.
예시적인 시퀀스가 이하 개시된다.
(1) 제어 노드(18)는 FILE1, FILE2 및 FILE3의 전부 혹은 일부가 차례로 재생될 것을 나타내는 재생 서브커맨드와 함께 VS-CONNECT-LIST 커맨드를 수신한다. 제어 노드(18)는 화일의 최대 데이타 레이트를 결정하고 통신 노드(14)상에 자원을 할당한다. 할당된 통신 노드(14)는 상세한 재생 리스트를 받아서 등시성 스트림 전송을 시작한다.
(2) FILE 1 전송이 끝날 즈음에서, 통신 노드(14)는 FILE2의 전송을 시작하지만, 노드의 출력 포트로의 전송은 가능하지 않게 한다. FILE1이 완료되거나 혹은 자동화 제어 인터페이스로부터 신호가 발생하면, 통신 노드(14)는 제 1 스트림으로부터 제 2 스트림으로 출력 포트를 스위칭한다. 이러한 스위칭은 1/30 초내에 혹은 하나의 표준 비디오 프레임 시간내에 수행된다.
(3) 통신 노드(14)는 FILE1 과 연관된 자원을 할당해제한다.
VS-PLAY-AT-SIGNAL 및 VS-RECORD-AT-SIGNAL은, 외부 자동화 제어 인터페이스로부터의 신호가 비디오 프레임 경계에 대해 정확하게 재생 및 기록 동작을 위한 데이타 전송을 가능하게 한다. 전술한 예에서, VS-CONNECT-LIST는 외부 자동화 제어 인터페이스 신호에 근거하여 FILE1 에서 FlLE2 로의 전이(transition)를 가능하게 하기 위한 PLAY-AT-SIGNAL 서브커맨드를 포함한다. 서브커맨드가 그 대신 VS-PLAY 이었다면, 전이는 단지 FILE1 전송이 완료된 때에만 발생한다.
매체 스트리머(10)가 실행하는 다른 커맨드들은 저장 계층을 관리하는 능력을 제공한다. 이들 커맨드로는 VS-DUMP, VS-RESTORE, VS-SEND, VS-RECEIVE 및 VS-RECEIVE_AND_PLAY 이 있다. 각각의 커맨드는 하나 이상의 멀티미디어 화일을 저장 노드(16)와 두개의 외부에서 정의된 계층적 엔티티(hierachical entities) 사이에 이동시킨다.
(1) VS-DUMP 및 VS-RESTORE 는 제어 노드(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)는 버퍼를 비우며, 공백 버퍼(free buffer)의 리스트에 이를 부가한다. 각각의 입력 스레드(110)는 그들 자신의 요구 큐를 갖는다. 연관된 디스크 드라이브상에 비디오 데이타를 갖는 각각의 능동 스트림에 대하여, 큐(120)는 다음 버퍼를 채우도록 요구 시간에 따라 정렬(데이타 레이트, 스트라이핑 레벨 등에 근거함)되어 유지된다. 스레드는 큐(120)내에서 제 1 요구를 취하여, 이를 공백 버퍼와 연관시키고 I/O 요구를 송출하여 디스크 드라이브로부터의 데이타를 상기 버퍼에 채운다. 버퍼가 가득 차면, 이 버퍼는 풀(ful1) 버퍼들의 리스트에 부가된다. 이 리스트는 스트림 데이타에 대한 요구가 수신될 때 메시지 스레드(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)에게 알린다. 그리고 나서, 스트림 재생을 시작한다. 첫 번째 버퍼가 출력(2 Mbit/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초마다 출력을 스케쥴링한다.
본 예에서, (100,000 바이트가 이미 판독되었으므로, 처음에는 3개의 요구가 재생 시작후 4초마다 발생하게 되고, 5개 요구(각기 50,000바이트)의 다음 시퀀스가 이전 시퀀스의 마지막 요구가 있은지 4초후에 도달하게 되는 첫 번쩨 세그먼트의 경우를 제외하면, 저장 노드(16)는 0.2 초의 간격으로 5 개의 요구가 도착할 것을 예상할 수 있다. 저장 노드에서의 버퍼 크기는 250,000 바이트이므로, 전술한 예와 같이, 저장 노드(16)는 4초마다 디스크로부터 입력을 스케쥴링할 것이다.
C5. 재생 동작의 설명
이하 개시되는 단계는 스트림의 재생 동작에 대한 제어 및 데이타 흐름이다.이들 단계는 재생을 위한 비디오 설정을 나타내며, 제 5 도에 도시되어 있다. 이들 단계는 시간적 순서로 이루어진다.
1. 사용자는 커맨드를 호출하여 이전에 로딩된 특정 비디오로 포트를 설정한다. 요구는 제어 노드(18)로 전송된다.
2. 제어 노드(18)내의 스레드는 요구 및 VS-CONNECT 기능을 수신한다.
3. 제어 노드 스레드는 그 비디오의 카탈로그 엔트리(cata1og 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), 재생, 저속 재생(S1ow), 일시정지, 정지, 되감기, 고속 감기(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) 시스템/프트 어드레스는 각각의 비디오 레벨에서 지정된다는 것에 유의해야 한다. 이는 애플리케이션 제어 프로그램이 어떤 제어 포인트로도 비디오 완료 메시지를 전송할 수 있다는 것을 뜻한다. 예를 들면, 하나의 애플리케이션이 다수의 혹은 모든 클라이언트 제어 시스템에 대한 비디오 완료 메시지를 처리하기 위해 하나의 중앙 시스템/포트의 사용을 원할 수도 있다. 또 다른 애플리케이션에서는, 다수의 상이한 시스템/포트 어드레스를 이용하여 하나의 클라이언트 제어 시스템에 대한 비디오 완료 메시지를 처리할 수도 있다.
이 같은 사사 구조에 따르면, 매체 스트리머(10)는 계층적 하드웨어 및 소프트웨어 플랫폼에 의해, 동기 및 비동기 유형의 동작들을 효율적으로 처리함으로써, 다수의 동시 발생 클라이언트 제어 시스템을 지원할 수 있으면서도 정확한 동작 요구 순서를 보장한다. 예를 들어, 본 매체 스트리머(10)는 PS/2 시스템에서 동작하는 IBM OS/2 오퍼레이팅 시스템을 이용할 수 있는 반면, 클라이언트 제어 시스템은RS/6000 시스템상에서 동작하는 IBM AIX 오퍼레이팅 시스템을 사용할 수 도 있다. (IBM, 0S/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)는 세그먼트 Sk를 비디오 드라이버(170)의 버퍼내로 판독하기 위해, 화일 시스템(166)을 호출한다.
A2. 화일 시스템(166)은 Sk 의 일부분을 화일 시스템(166)내의 캐쉬 버퍼로판독한다.
A3. 화일 시스템(166)은 캐쉬 버퍼를 비디오 드라이버(170)내의 버퍼로 복제한다.
단계 A2 및 A3 는 수회 반복된다.
A4. 화일 시스템(166)은 Sk 를 비디오 포트 1(172)에 기록하기 위해, 비디오 드라이버(170)를 호출한다.
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 로 판독하는 호출이 따르는 경우, 세그먼트 또는(하나의 I/0 동작으로) 디스크 캐쉬 버퍼로부터 포트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 datarate)를 최대화한다. 바람직한 구현은 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 개의 스트라이프화일중 하나에 포함된다.
전술한 스트라이핑 기법에 의하면, 파라메터는 각 개별 비디오의 스트라이핑을 커스텀화하도록 아래와 같이 계산된다.
먼저, 디스크로부터 적절히 효과적인 데이타 레이트를 성취하도록 세그먼트 크기가 선택된다. 그러나, 이 세그먼트 크기는 대기시간에 악영향을 끼칠 정도로 커서는 안되며, 메모리내에 버퍼링 및 캐슁될 수 있도록 충분히 작아야 한다. 바람직한 세그먼트 크기는 256 KB 이며, 128 KB/sec 에서 512 n>sec 에 이르는 범위의 데이타 레이트의 비디오 프리젠테이션에 대해서는 일정하다. 비디오 데이타 레이트가 더 크면, 더 큰 세그먼트 크기를 사용하는 것이 바람직하다. 세그먼트 크기는 동일한 매체상에 저장된 비디오 프리젠테이션의 범위에 대해서는 I/O 동작의 기본 단위에 의존한다. 이용되는 원리는 약 0.5 에서 2 초 정도의 비디오 데이타를 포함할 수 있는 세그먼트 크기를 이용하는 것이다.
다음으로, 스트라이프의 수, 즉, 비디오 데이타가 분포되는 디스크의 수를 결정한다. 이 수는 요구되는 전체 데이타 레이트를 유지할 수 있을 정도로 충분히 커야 하며, 예상되는 이용 비율에 따라 각 비디오 프리젠테이션에 대해 개별적으로 계산된다. 보다 구체적으로, 각 디스크는 그와 연관된 논리적 용적을 갖는다. 각 비디오 프리젠테이션은 필요한 스트라이프 수 만큼의 구성요소 화일들로 분할된다. 각 구성 화일은 상이한 논리적 용적상에 저장된다. 예를 들면, 비디오 데이타가 스트림당 250 KB/sec 의 레이트로 전송되고, 30 개의 동시 스트림이 동일한 비디오로부터 이를 테면 15 초의 간격을 두고 시작되어 지원된다면, 적어도 7.5 MB/sec의 전체 데이타 레이트가 성취된다. 디스크 드라이브가 평균 3 MB/sec를 지원할 수 있다면, 비디오 프리젠테이션에 대해 적어도 3 개의 스트라이프가 요구된다.
데이타가 디스크로부터 판독될 수 있는 유효 레이트는 판독 동작의 크기에 의해 영향을 받는다. 예를 들면, 데이타가 4KB 블럭으로 디스크로부터 (디스크상의 무작위 위치에서) 판독된다면, 유효 데이타 레이트는 1MB/sec 정도가 될 것이다. 반면에, 데이타가 256 KB 블럭으로 판독된다면, 데이타 레이트는 3 MB/sec 정도가 될 것이다. 그러나, 데이타가 매우 큰 블럭으로 판독된다면, 버퍼에 대해 필요한 메모리도 또한 증가할 것이며, 데이타 판독을 수행함에 있어서의 대기시간 및 지연도 또한 증가할 것인데, 이는 상기 판독 동작은 데이타가 액세스될 수 있기전에 완료되어야 하기 때문이다. 따라서, 데이타 전송의 크기를 선택하는데 있어서는 절충이 필요하다. 이 데이타 전송의 크기는 장치 및 메모리 구조의 특성에 따라 선택된다. 바람직하게, 데이타 전송의 크기는 선택된 세그먼트의 크기이다. 주어진 세그먼트 크기에 대해, 장치로부터의 유효 데이타 레이트가 결정된다. 예를 들어, 몇몇 디스크 드라이브의 경우, 256 KB의 세그먼트 크기는 디스크 드라이브(3MB/sec의 유효 데이타 레이트를 가짐) 및 버퍼 크기(256KB)의 효과적인 사용에 대한 양호한 밸런스를 제공한다.
스트라이핑이 사용되지 않는다면, 지원될 수 있는 최대 스트림의 수는 디스크의 유효 데이타 레이트에 의해 제한된다. 예를 들면, 유효 데이타 레이트가 3MB/sec 이고 스트림 데이타 레이트가 200KB/sec 이면, 단지 15개의 스트림만이 디스크로부터 지원될 수 있다. 예로서, 동일 비디오의 60 개의 스트림이 필요하다면, 데이타는 4 개의 디스크상에서 복제(duplicate)되어야 한다. 그러나, 본 발명에 따라 스트라이핑이 사용되면,1/4 용량의 디스크가 4 개 사용될 수도 있다. 비디오 데이타의 단일 복제본으로부터의 총 60 개의 동시 스트림을 위해, 15 개의 스트림이 4 개의 각 스트라이프로부터 동시에 재생될 수 있다. 스트림의 시작 시간은 스큐되어 60 개의 스트림에 대한 요구가 스트라이프 사이에서 고르게 간격지워지도록 한다. 스트림이 서로 근접하여 시작되면, 캐슁된 비디오 데이타를 사용하므로써 I/O에 대한 필요성이 감소한다는 사실을 주목해야 한다.
주어진 비디오에 대한 스트라이프의 수는 두 요인에 의해 영향을 받는다. 첫번째 요인은 주어진 비디오로부터 임의의 시간에 제공되어야 하는 스트림의 최대수이며, 또 다른 요인은 임의의 시간에 주어진 비디오와 동일한 디스크상에 저장된 모든 비디오로부터 제공되어야 하는 스트림의 총 수이다.
비디오에 대한 스트라이프의 수 s는 아래와 같이 결정된다.
s = 최대(r*n/d, r*m/d)
여기서, r = 스트림이 재생되는 공칭 데이타 레이트,
n = 공칭 레이트에서 이러한 비디오 프리젠테이션으로부터의 동시 스트림의 최대 수,
d = 디스크로부터의 유효 데이타 레이트(디스크로부터의 유효 데이타 레이트는 세그먼트 크기에 의해 영향을 받는다는 사실에 주의하자),
m = 공칭 레이트에서 이러한 비디오 프리젠테이션의 임의의 부분을 포함하는 모든 디스크로부터의 동시 스트림의 최대 수,
s = 비디오 프리젠테이션에 대한 스트라이프의 수이다.
비디오 프리젠테이션에 대한 데이타가 스트라이프되는 디스크 수는 세트로 관리되며, 매우 큰 물리적 디스크로 간주될 수 있다. 스트라이핑으로 인해 비디오화일이 시스템의 물리적 화일 시스템이 허용하는 가장 큰 화일의 크기 제한을 초과하는 것이 허용된다. 비디오 데이타는, 일반적으로, 세트내의 모든 디스크상에서 항상 동일한 저장량을 요구하지는 않는다. 디스크 사용의 균형을 맞추기 위해, 비디오가 스트라이프될 때, 스트라이핑은 가장 많은 자유 공간(free space)을 갖는 디스크로부터 시작된다.
일 예로서, 2 Mbit/sec(250,000 bytes/sec)(즉, r이 250,00O 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 은 'Max(모든 동시 스트림의 데이타 레이트의 합)'로 대체되어야 한다.
데이타를 기록하기 위해, 이러한 기법을 사용하면, 비디오 프리젠테이션의 디지탈 표현에 대한 복수의 복제본을 필요로 하지 않고서도 데이타를 판독하여 지정 레이트에서 많은 스트림을 전송할 수 있다. 복수의 디스크 용적에 걸쳐 데이타를 스트라이핑하므로써, 하나의 스트림 전송을 위한 화일의 한 부분에 대한 판독은 또 다른 스트림 전송을 위한 화일의 다른 부분의 판독을 방해하지 않게 된다.
I. 매체 스트리머 데이타 전송 및 변환 절차
I.1. 스위치(18)로의 비디오 전송을 위한 능동적인 대역폭 할당
종래의 경우, 비디오 서버는 일반적으로 두가지 형태중 하나였다. 즉, PC기술(PC technology)을 이용하여 저가이지만 낮은 대역폭의 비디오 서버를 구축하거나 슈퍼 컴퓨팅 기술(super-computing technology)을 이용하여 고 대역폭을 갖지만 고가의 서버를 구현하였다. 따라서, 본 발명의 목적은 높은 비용이 소모되는 슈퍼 컴퓨팅 기술을 사용하지 않고 고 대역폭 비디오를 전송하는 것이다.
낮은 비용으로 고 대역폭을 성취하는 바람직한 해결 방안은 (제 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)내의 인터페이스 어댑터로 전송된다. 이용된 인터페이스는 SCSI20MB/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) 사이에 삽입된다. FIF0 메모리(224)는 제어기(226)가 데이타를 더 작은 블럭(전형적으로 512 바이트)으로 버퍼(214)에서 FIFO(224)로 전송하고, 다시 이 데이타를 MP 디코더(216)로의 전송을 위해 직렬 비트 스트림으로 변환하는 것을 허용한다. 오디오 및 비디오 디코더 칩들(216,218)은 모두 동일한 직렬 데이타 스트림으로부터 그들의 입력을 취하여 요구된 데이타를 내부적으로 분리하여 디코드할 수 있다. FIF0 메모리(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 비디오 출력 어댑터의 기능성에 적합하도록 표준 공통 커맨드와 함께 이용된다. 모든 SCSl 커맨드의 경우처럼, 매 커맨드 후에 유효 상태 바이트(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 (7)

  1. 매체 스트리머에 있어서,
    ① 적어도 하나의 제어 노드(control node)와,
    ② 상기 적어도 하나의 제어 노드에 접속되는 출력부(an output)를 갖는 사용자 인터페이스(a user interface)와,
    ③ 적어도 하나의 비디오 프리젠테이션(video presentation)의 디지탈 표현(a digita1 representation)을 저장하는 적어도 하나의 저장 노드(storage node)-상기 비디오 프리젠테이션은 그것을 완전히 표시하는데 시간 T를 필요로 하며 또한 다수의 N 개의 데이타 블럭으로서 저장되며, 각 데이타 블럭은 비디오 프리젠테이션의 T/N 기간에 상응하는 데이타를 저장하고 있음 - 와,
    ④ 상기 적어도 하나의 저장 노드로부터 적어도 하나의 비디오 프리젠테이션의 디지탈 표현을 수신하는 입력 포트를 제각기 가지며, 또한 데이타 표현을 사용할 사용자(consumer)에게 디지탈 표현을 등시성 데이타 스트림으로서 출력하는 다수의 출력 포트를 제각기 갖는 다수의 통신 노드와,
    ⑤ 상기 적어도 하나의 저장 노드와 상기 적어도 하나의 제어 노드에 접속된 다수의 통신 노드의 입력 포트 사이에 접속되어, 상기 하나 이상의 입력 포트와 상기 적어도 하나의 저장 노드를 전기적으로 접속함으로써 저장된 디지탈 표현을 비차단의 비버퍼형 방식으로(in a non-blocking, non-buffered manner) 상기 하나의 이상의 입력 포트에 전달할 수 있게 하는 낮은 대기시간의 회로 스위치를 포함하며,
    상기 사용자 인터페이스는 실행을 위한 커맨드들을 지정하는 수단을 포함하며,
    상기 적어도 하나의 제어 노드는 개별의 커맨드에 응답하고, 상기 낮은 대기시간 회로 스위치와 협력하여 상기 적어도 하나의 저장 노드와 적어도 하나의 통신노드 중의 적어도 하나를 제어함으로써 상기 커맨드의 각각과 연관된 기능을 실행하는
    매체 스트리머.
  2. 제 1 항에 있어서,
    상기 커맨드는 로드 커맨드(Load command), 이젝트 커맨드(Eject command),재생 커맨드(Play command), 저속 재생 커맨드(S1ow command), 고속 감기 커맨드(Fast Forward command), 일시 중지 커맨드(Pause command), 중단 커맨드(Stop command), 되감기 커맨드(Rewind command) 및 음소거 커맨드(Mute command)를 포함하는 그룹으로부터 선택되는 커맨드를 포함하는 비디오 카셋트 레코드에 사용되는 커맨드와 유사한 커맨드인
    매체 스트리머.
  3. 제 1 항에 있어서,
    상기 커맨드는 재생 리스트 커맨드(Play list command) 및 재생 길이 커맨드(Play length command)를 포함하는 그룹으로부터 선택되는 커맨드를 포함하는
    매체 스트리머.
  4. 제 5 항에 있어서,
    상기 적어도 하나의 제어 노드는 상기 재생 리스트 커맨드에 응답하여, 상기 통신 노드들 중의 하나의 사용자 지정 출력 포트(user-specified output port)로부터 사용자 지정 순서로 출력되는 사용자 지정 비디오 프리젠테이션(user-specified video presentation)의 리스트를 생성하는
    매체 스트리머.
  5. 제 5 항에 있어서,
    상기 적어도 하나의 제어 노드는 재생 길이 커맨드에 응답하여, 사용자 지정기간(user-specified period of time)동안 사용자 지정 출력 포트로부터 사용자 지정 비디오 프리젠테이션을 출력하는
    매체 스트리머.
  6. 매체 스트리머에 있어서,
    ① 적어도 하나의 제어 노드와,
    ② 상기 적어도 하나의 제어 노드에 접속되는 출력부를 갖는 사용자 인터페이스와,
    ③ 적어도 하나의 비디오 프리젠테이션의 디지탈 표현을 저장하는 적어도 하나의 저장 노드와,
    ④ 상기 적어도 하나의 저장 노드로부터 적어도 하나의 비디오 프리젠테이션의 디지탈 표현을 수신하는 입력 포트를 제각기 가지며, 또한 데이타 표현을 사용할 사용자(consumer)에게 디지탈 표현을 등시성 데이타 스트림으로서 출력하는 다수의 출력 포트를 제각기 갖는 다수의 통신 노드와,
    ⑤ 상기 적어도 하나의 저장 노드와 상기 적어도 하나의 제어 노드에 접속된 다수의 통신 노드의 입력 포트 사이에 접속되어, 상기 하나 이상의 입력 포트와 상기 적어도 하나의 저장 노드를 전기적으로 접속함으로써, 저장된 디지탈 표현을 비차단의 비버퍼형 방식으로 상기 하나의 이상의 입력 포트에 전달할 수 있게 하는 낮은 대기시간의 회로 스위치를 포함하며,
    상기 사용자 인터페이스는 실행을 위한 커맨드들을 지정하는 수단을 포함하며,
    상기 적어도 하나의 제어 노드는 개별의 커맨드에 응답하고, 상기 낮은 대기시간 회로 스위치와 협력하여 상기 적어도 하나의 저장 노드와 적어도 하나의 통신노드 중의 적어도 하나를 제어함으로써 상기 커맨드의 각각과 연관된 기능을 실행하며,
    상기 커맨드들의 일부는 비디오 카세트 레코더에 사용되는 커맨드와 유사한 커맨드이며, 상기 커맨드들의 다른 일부는 배치 커맨드(Batch command)이며,
    상기 적어도 하나의 제어 노드는 상기 배치 커맨드에 응답하여 적어도 둘 이상의 상기 비디오 카셋트 레코더에 사용된 커맨드와 유사한 커맨드로 구성되는 사용자 지정 저장 리스트를 액세스함으로써, 사용자로부터의 지시에 의해, 액세스된 저장 리스트로 구성되는 모든 커맨드들을 순차적으로 실행하는
    매체 스트리머.
  7. 매체 스트리머에 있어서,
    ① 적어도 하나의 제어 노드와,
    ② 상기 적어도 하나의 제어 노드에 접속되는 출력부를 갖는 사용자 인터페이스와,
    ③ 적어도 하나의 비디오 프리젠테이션의 디지달 표현을 저장하는 적어도 하나의 저장 노드와,
    ④ 상기 적어도 하나의 저장 노드의 출력부에 접속되어 그로부터 적어도 하나의 비디오 프리젠테이션의 디지탈 표현을 수신하는 입력 포트를 제각기 가지며, 또한 데이타 표현을 사용할 사용자에게 디지탈 표현을 등시성 출력 스트림으로서 출력하는 다수의 출력 포트를 제각기 갖는 다수의 통신 노드와,
    ⑤ 상기 적어도 하나의 저장 노드와 상기 다수의 통신 노드의 입력 포트를 비차단의 비버퍼형 방식으로 제어가능하게 전기적으로 상호접속시키는 상기 적어도 하나의 제어 노드, 및 외부 인터페이스에 접속된 낮은 대기시간의 회로 스위치와,
    ⑥ 상기 사용자 인터페이스를 사용하여 사용자 응용 프로그램과 상기 적어도 하나의 제어 노드를 접속시키는 동기식 응용 프로그램 인터페이스 - 상기 응용 프로그램 인터페이스는 원격 프로시쥬어 호출(Remote Procedure Call:RPC) 프로시쥬어로 구성됨 - 를 포함하며,
    상기 적어도 하나의 제어 노드는 RPC 프로시쥬어에 응답하여 상기 RPC 프로시쥬어들을 실행하고, 상기 회로 스위치와 협력하여, 상기 적어도 하나의 저장 노드와 적어도 하나의 통신 노드 중 적어도 하나를 제어함으로써 각각의 프로시쥬어와 연관된 적어도 하나의 기능을 실행하고, 각각의 프로시쥬어에 대해 주어진 프로시주어의 실행이 완료되었음을 나타내는 종료 코드(termination code)를 복귀시키는
    매체 스트리머.
KR1019950028705A 1994-09-08 1995-09-04 매체 스트리머 KR100228937B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US30319094A 1994-09-08 1994-09-08
US08/303,190 1994-09-08
US8/303,190 1994-09-08

Publications (2)

Publication Number Publication Date
KR960011911A KR960011911A (ko) 1996-04-20
KR100228937B1 true KR100228937B1 (ko) 1999-11-01

Family

ID=23170920

Family Applications (1)

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

Country Status (5)

Country Link
US (1) US5805821A (ko)
EP (1) EP0701372A1 (ko)
JP (1) JP3110989B2 (ko)
KR (1) KR100228937B1 (ko)
CA (1) CA2153445C (ko)

Families Citing this family (176)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6061504A (en) * 1995-10-27 2000-05-09 Emc Corporation Video file server using an integrated cached disk array and stream server computers
US5933603A (en) * 1995-10-27 1999-08-03 Emc Corporation Video file server maintaining sliding windows of a video data set in random access memories of stream server computers for immediate video-on-demand service beginning at any specified location
US5948062A (en) * 1995-10-27 1999-09-07 Emc Corporation Network file server using a cached disk array storing a network file directory including file locking information and data mover computers each having file system software for shared read-write file access
US7266686B1 (en) 1996-05-09 2007-09-04 Two-Way Media Llc Multicasting method and apparatus
US6370543B2 (en) * 1996-05-24 2002-04-09 Magnifi, Inc. Display of media previews
US6374260B1 (en) 1996-05-24 2002-04-16 Magnifi, Inc. Method and apparatus for uploading, indexing, analyzing, and searching media content
US5903892A (en) 1996-05-24 1999-05-11 Magnifi, Inc. Indexing of media content on a network
JP3258236B2 (ja) 1996-05-28 2002-02-18 株式会社日立製作所 マルチメディア情報転送システム
US5893140A (en) * 1996-08-14 1999-04-06 Emc Corporation File server having a file system cache and protocol for truly safe asynchronous writes
US6298386B1 (en) 1996-08-14 2001-10-02 Emc Corporation Network file server having a message collector queue for connection and connectionless oriented protocols
DE69735614T2 (de) * 1996-10-18 2006-09-07 Matsushita Electric Industrial Co., Ltd., Kadoma Datenübertragungsgerät und Datenübertragungssystem zur Arbitrierung von mehreren E/A Ports in DMA
US6173329B1 (en) * 1997-02-19 2001-01-09 Nippon Telegraph And Telephone Corporation Distributed multimedia server device and distributed multimedia server data access method
US5909594A (en) * 1997-02-24 1999-06-01 Silicon Graphics, Inc. System for communications where first priority data transfer is not disturbed by second priority data transfer and where allocated bandwidth is removed when process terminates abnormally
US6032188A (en) * 1997-03-12 2000-02-29 Microsoft Corporation Method and system for controlling data flow
US6026234A (en) * 1997-03-19 2000-02-15 International Business Machines Corporation Method and apparatus for profiling indirect procedure calls in a computer program
US6185621B1 (en) * 1997-03-25 2001-02-06 Philips Electronics N.A. Corp. Direct copying between disk blocks in memory onto a network as sequential access files
JPH10268900A (ja) * 1997-03-26 1998-10-09 Oki Micro Design Miyazaki:Kk 音声記録再生装置
US5999935A (en) * 1997-03-28 1999-12-07 International Business Machines Corporation Tail compression of a sparse log stream of a multisystem environment
US6125393A (en) * 1997-03-28 2000-09-26 International Business Machines Corporation System of compressing the tail of a sparse log stream of a multisystem environment
US6654933B1 (en) 1999-09-21 2003-11-25 Kasenna, Inc. System and method for media stream indexing
US5892915A (en) * 1997-04-25 1999-04-06 Emc Corporation System having client sending edit commands to server during transmission of continuous media from one clip in play list for editing the play list
JPH114446A (ja) * 1997-06-12 1999-01-06 Sony Corp 情報信号デコード方法及び装置
US5950205A (en) * 1997-09-25 1999-09-07 Cisco Technology, Inc. Data transmission over the internet using a cache memory file system
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
US6594699B1 (en) * 1997-10-10 2003-07-15 Kasenna, Inc. System for capability based multimedia streaming over a network
CA2251456C (en) * 1997-10-31 2007-02-13 Sony Corporation An apparatus for storing and transmitting data
US6311014B1 (en) * 1997-12-24 2001-10-30 Texas Instruments Incorporated Unified audio/video interface for a digital video disk system
US6205181B1 (en) * 1998-03-10 2001-03-20 Chips & Technologies, Llc Interleaved strip data storage system for video processing
US6038630A (en) * 1998-03-24 2000-03-14 International Business Machines Corporation Shared access control device for integrated system with multiple functional units accessing external structures over multiple data buses
US7272298B1 (en) 1998-05-06 2007-09-18 Burst.Com, Inc. System and method for time-shifted program viewing
US6182112B1 (en) * 1998-06-12 2001-01-30 Unisys Corporation Method of and apparatus for bandwidth control of transfers via a bi-directional interface
US8380041B2 (en) 1998-07-30 2013-02-19 Tivo Inc. Transportable digital video recorder system
US6233389B1 (en) 1998-07-30 2001-05-15 Tivo, Inc. Multimedia time warping system
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
US6323755B1 (en) * 1998-08-19 2001-11-27 International Business Machines Corporation Dynamic bus locking in a cross bar switch
US6275890B1 (en) * 1998-08-19 2001-08-14 International Business Machines Corporation Low latency data path in a cross-bar switch providing dynamically prioritized bus arbitration
US6697869B1 (en) * 1998-08-24 2004-02-24 Koninklijke Philips Electronics N.V. Emulation of streaming over the internet in a broadcast application
DE19839121A1 (de) * 1998-08-27 2000-03-02 Rohde & Schwarz Anordnung zum kontinuierlichen und unterbrechungsfreien Einlesen einer großen Datenmenge eines elektronischen Meßgerätes in einen Speicher
GB9821768D0 (en) * 1998-10-06 1998-12-02 Sgs Thomson Microelectronics Data transfer
US6182167B1 (en) * 1998-10-22 2001-01-30 International Business Machines Corporation Automatic sharing of SCSI multiport device with standard command protocol in conjunction with offline signaling
US6389494B1 (en) * 1998-12-30 2002-05-14 Emc Corporation System for interfacing a data storage system to a host utilizing a plurality of busses for carrying end-user data and a separate bus for carrying interface state data
US7117275B1 (en) 1999-01-04 2006-10-03 Emc Corporation Data storage system having separate data transfer section and message network
US7073020B1 (en) 1999-01-04 2006-07-04 Emc Corporation Method for message transfer in computer storage system
JP3419334B2 (ja) * 1999-01-14 2003-06-23 日本電気株式会社 データ処理装置および方法
KR100758514B1 (ko) * 1999-01-21 2007-09-14 소니 서비스 센터(유럽) 엔.브이. 캐로셀 정보를 배열하는 정보 서버 및 방법
EP1022901B1 (en) * 1999-01-21 2007-11-21 Sony Service Centre (Europe) N.V. Information server
US7492393B2 (en) * 1999-02-12 2009-02-17 Sony Corporation Method of and apparatus for generating a precise frame rate in digital video transmission from a computer system to a digital video device
US6408436B1 (en) 1999-03-18 2002-06-18 Next Level Communications Method and apparatus for cross-connection of video signals
US6378035B1 (en) 1999-04-06 2002-04-23 Microsoft Corporation Streaming information appliance with buffer read and write synchronization
WO2000060590A1 (en) * 1999-04-06 2000-10-12 Microsoft Corporation Streaming information appliance with circular buffer
US6535920B1 (en) 1999-04-06 2003-03-18 Microsoft Corporation Analyzing, indexing and seeking of streaming information
US6748481B1 (en) * 1999-04-06 2004-06-08 Microsoft Corporation Streaming information appliance with circular buffer for receiving and selectively reading blocks of streaming information
US6463486B1 (en) 1999-04-06 2002-10-08 Microsoft Corporation System for handling streaming information using a plurality of reader modules by enumerating output pins and associated streams of information
US6820144B2 (en) 1999-04-06 2004-11-16 Microsoft Corporation Data format for a streaming information appliance
EP1049278A1 (en) * 1999-04-30 2000-11-02 Sony International (Europe) GmbH Broadcast API - an application programming interface for accessing information services provided by a broadcast system
KR100520670B1 (ko) * 1999-05-06 2005-10-10 주식회사 하이닉스반도체 포토레지스트 패턴의 형성방법
JP3926513B2 (ja) 1999-08-09 2007-06-06 富士通株式会社 情報配信装置、情報配信方法および情報配信プログラムを記録したコンピュータ読み取り可能な記録媒体
US6972770B1 (en) 1999-08-19 2005-12-06 International Business Machines Corporation Method and apparatus for performing raster operations in a data processing system
US6526434B1 (en) 1999-08-24 2003-02-25 International Business Machines Corporation System and method for efficient transfer of data blocks from client to server
US6598074B1 (en) * 1999-09-23 2003-07-22 Rocket Network, Inc. System and method for enabling multimedia production collaboration over a network
US6438630B1 (en) 1999-10-06 2002-08-20 Sun Microsystems, Inc. Scheduling storage accesses for multiple continuous media streams
US6385673B1 (en) 1999-10-06 2002-05-07 Sun Microsystems, Inc. System and method for adjusting performance of a media storage by decreasing a maximum throughput by a primary derate parameter to specify available & guaranteed rate parameters and determining ring buffer sizes for streams
US6721789B1 (en) 1999-10-06 2004-04-13 Sun Microsystems, Inc. Scheduling storage accesses for rate-guaranteed and non-rate-guaranteed requests
US6684274B1 (en) * 1999-11-09 2004-01-27 Sun Microsystems, Inc. Host bus adapter based scalable performance storage architecture
US6604155B1 (en) * 1999-11-09 2003-08-05 Sun Microsystems, Inc. Storage architecture employing a transfer node to achieve scalable performance
WO2001041449A2 (en) * 1999-12-06 2001-06-07 Streaming21, Inc. Method and system for delivering real time video and audio
US6901453B1 (en) * 2000-02-16 2005-05-31 Microsoft Corporation Modularization of broadcast receiver driver components
US6850967B1 (en) * 2000-02-19 2005-02-01 Hewlett-Packard Development Company, L.P. System and method for ensuring transparent sychronization of multiple applications across remote systems
US7392256B2 (en) * 2000-03-02 2008-06-24 International Business Machines Corporation Data gather scatter—redistribution machine
US6963910B1 (en) * 2000-03-03 2005-11-08 International Business Machines Corporation Graphical user interface for creating assets
US6763377B1 (en) 2000-03-03 2004-07-13 International Business Machines Corporation Asset management and scheduling graphical user interface for media streamer
US20030236919A1 (en) * 2000-03-03 2003-12-25 Johnson Scott C. Network connected computing system
US20020108059A1 (en) * 2000-03-03 2002-08-08 Canion Rodney S. Network security accelerator
US20030236861A1 (en) * 2000-03-03 2003-12-25 Johnson Scott C. Network content delivery system with peer to peer processing components
US7117259B1 (en) 2000-03-03 2006-10-03 International Business Machines Corporation Server time window for multiple selectable servers in a graphical user interface
EP1287677A2 (en) * 2000-03-13 2003-03-05 Comnet Media Corporation Video data management, transmission, and control system and method employing distributed video segments microcasting
US7398312B1 (en) * 2000-03-29 2008-07-08 Lucent Technologies Inc. Method and system for caching streaming multimedia on the internet
US7003601B1 (en) 2000-03-31 2006-02-21 Emc Corporation Data storage system having separate data transfer section and message network with plural directions on a common printed circuit board
US6993621B1 (en) 2000-03-31 2006-01-31 Emc Corporation Data storage system having separate data transfer section and message network with plural directors on a common printed circuit board and redundant switching networks
US6581112B1 (en) 2000-03-31 2003-06-17 Emc Corporation Direct memory access (DMA) receiver
US7007194B1 (en) 2000-06-29 2006-02-28 Emc Corporation Data storage system having point-to-point configuration
US6584513B1 (en) 2000-03-31 2003-06-24 Emc Corporation Direct memory access (DMA) transmitter
US7010575B1 (en) 2000-03-31 2006-03-07 Emc Corporation Data storage system having separate data transfer section and message network having bus arbitration
US6779071B1 (en) 2000-04-28 2004-08-17 Emc Corporation Data storage system having separate data transfer section and message network with status register
US6651130B1 (en) 2000-04-28 2003-11-18 Emc Corporation Data storage system having separate data transfer section and message network with bus arbitration
US6578109B1 (en) * 2000-06-29 2003-06-10 Sony Corporation System and method for effectively implementing isochronous processor cache
GB2374697A (en) * 2000-06-29 2002-10-23 Emc Corp Data storage system having point-to-point configuration
US6654370B1 (en) * 2000-06-30 2003-11-25 Marconi Communications, Inc. Backplane synchronization in a distributed system with clock drift and transport delay
US7310678B2 (en) * 2000-07-28 2007-12-18 Kasenna, Inc. System, server, and method for variable bit rate multimedia streaming
US7277956B2 (en) * 2000-07-28 2007-10-02 Kasenna, Inc. System and method for improved utilization of bandwidth in a computer system serving multiple users
DE60138127D1 (de) * 2000-11-03 2009-05-07 Genentech Inc Stoffwechseländerungen in gärungen zur produktion rekombinanter proteine
EP1342364A2 (en) 2000-11-28 2003-09-10 SeaChange International, Inc. Content/service handling and delivery
CN1720578A (zh) * 2000-12-07 2006-01-11 三因迪斯克公司 从非易失性存储卡、致密盘或其他介质中回放记录音频、视频或其他内容的系统、方法和设备
US7206854B2 (en) * 2000-12-11 2007-04-17 General Instrument Corporation Seamless arbitrary data insertion for streaming media
US7213075B2 (en) * 2000-12-15 2007-05-01 International Business Machines Corporation Application server and streaming server streaming multimedia file in a client specific format
US7246369B1 (en) 2000-12-27 2007-07-17 Info Valve Computing, Inc. Broadband video distribution system using segments
US7143433B1 (en) 2000-12-27 2006-11-28 Infovalve Computing Inc. Video distribution system using dynamic segmenting of video data files
KR100364747B1 (ko) * 2000-12-30 2002-12-16 엘지전자 주식회사 Aal2/aal5 변환 장치 및 방법
US20070198739A1 (en) 2001-01-19 2007-08-23 Streamworks Technologies, Inc. System and method for routing media
US20040025186A1 (en) * 2001-01-19 2004-02-05 Jennings Charles A. System and method for managing media
US7191244B2 (en) * 2001-01-19 2007-03-13 Streamworks Technologies, Inc. System and method for routing media
US7054949B2 (en) * 2001-01-19 2006-05-30 World Streaming Network, Inc. System and method for streaming media
US7085842B2 (en) 2001-02-12 2006-08-01 Open Text Corporation Line navigation conferencing system
US20020156912A1 (en) * 2001-02-15 2002-10-24 Hurst John T. Programming content distribution
WO2002071191A2 (en) * 2001-03-02 2002-09-12 Kasenna, Inc. Metadata enabled push-pull model for efficient low-latency video-content distribution over a network
US20020147827A1 (en) * 2001-04-06 2002-10-10 International Business Machines Corporation Method, system and computer program product for streaming of data
JP3946965B2 (ja) * 2001-04-09 2007-07-18 ソニー株式会社 無体財産権を保護する情報を記録する記録装置、記録方法、記録媒体、およびプログラム
US20020157113A1 (en) * 2001-04-20 2002-10-24 Fred Allegrezza System and method for retrieving and storing multimedia data
DE60205257D1 (de) * 2001-05-17 2005-09-01 Optibase Herzelia Verfahren und vorrichtung für videorundfunk von mehrfach angereicherten medienformaten
US7330900B2 (en) * 2001-07-06 2008-02-12 Dialogic Corporation Low-latency packet processor
JP2003030018A (ja) * 2001-07-13 2003-01-31 Sony Corp データ通信装置および方法、データ通信システム、情報処理装置および方法、記録媒体、並びにプログラム
US7072911B1 (en) * 2001-07-27 2006-07-04 Novell, Inc. System and method for incremental replication of changes in a state based distributed database
CN1190076C (zh) * 2001-08-06 2005-02-16 松下电器产业株式会社 数据流处理器
US7161615B2 (en) * 2001-11-30 2007-01-09 Pelco System and method for tracking objects and obscuring fields of view under video surveillance
US8417827B2 (en) * 2001-12-12 2013-04-09 Nokia Corporation Synchronous media playback and messaging system
US6925499B1 (en) 2001-12-19 2005-08-02 Info Value Computing, Inc. Video distribution system using disk load balancing by file copying
US7039784B1 (en) 2001-12-20 2006-05-02 Info Value Computing Inc. Video distribution system using dynamic disk load balancing with variable sub-segmenting
US7668901B2 (en) * 2002-04-15 2010-02-23 Avid Technology, Inc. Methods and system using a local proxy server to process media data for local area users
US20030204614A1 (en) * 2002-04-29 2003-10-30 The Boeing Company Method and apparatus for the display and distribution of cinema grade content in real time
US7116894B1 (en) * 2002-05-24 2006-10-03 Digeo, Inc. System and method for digital multimedia stream conversion
EP1398786B1 (en) * 2002-09-12 2010-04-07 STMicroelectronics Asia Pacific Pte Ltd. Pseudo bidimensional randomly accessible memory
US7716312B2 (en) 2002-11-13 2010-05-11 Avid Technology, Inc. Method and system for transferring large data files over parallel connections
US6907478B2 (en) * 2003-02-18 2005-06-14 Adaptec, Inc. Systems and methods optimizing data transfer throughput of a system on chip
US7324555B1 (en) 2003-03-20 2008-01-29 Infovalue Computing, Inc. Streaming while fetching broadband video objects using heterogeneous and dynamic optimized segmentation size
US7287180B1 (en) 2003-03-20 2007-10-23 Info Value Computing, Inc. Hardware independent hierarchical cluster of heterogeneous media servers using a hierarchical command beat protocol to synchronize distributed parallel computing systems and employing a virtual dynamic network topology for distributed parallel computing system
JP4792196B2 (ja) 2003-03-27 2011-10-12 三洋電機株式会社 データ入出力方法、およびその方法を利用可能な記憶装置およびホスト装置
WO2005004490A2 (en) * 2003-06-13 2005-01-13 Lumexis Corporation Remote interface optical network
US7409442B2 (en) * 2003-08-25 2008-08-05 International Business Machines Corporation Method for communicating control messages between a first device and a second device
US7610381B2 (en) * 2003-09-12 2009-10-27 Hewlett-Packard Development Company, L.P. System and method for evaluating a capacity of a streaming media server for supporting a workload
US20050234961A1 (en) * 2004-04-16 2005-10-20 Pinnacle Systems, Inc. Systems and Methods for providing a proxy for a shared file system
US7228364B2 (en) * 2004-06-24 2007-06-05 Dell Products L.P. System and method of SCSI and SAS hardware validation
US8879730B2 (en) * 2004-09-09 2014-11-04 Texas Instruments Incorporated System and method for bit stream compatible local link encryption
CN101023413A (zh) * 2004-09-16 2007-08-22 佳能株式会社 在与图像有关的装置和信息装置之间的通信
TWI237806B (en) * 2004-11-03 2005-08-11 Sunplus Technology Co Ltd Audio decoding system with ring buffer and method thereof
CN102665112B (zh) 2004-11-19 2015-08-19 Tivo股份有限公司 用于多媒体内容的安全传输和回放的方法和设备
WO2006058213A2 (en) 2004-11-24 2006-06-01 Qformx System for transmission of synchronous video with compression through channels with varying transmission delay
US7533182B2 (en) * 2005-01-24 2009-05-12 Starz Media, Llc Portable screening room
JP4355674B2 (ja) 2005-03-17 2009-11-04 富士通株式会社 リモートコピー方法及びストレージシステム
US20070139189A1 (en) * 2005-12-05 2007-06-21 Helmig Kevin S Multi-platform monitoring system and method
US7793329B2 (en) 2006-02-06 2010-09-07 Kasenna, Inc. Method and system for reducing switching delays between digital video feeds using multicast slotted transmission technique
US8259789B2 (en) * 2006-02-08 2012-09-04 Adtech Global Solutions, Inc. Methods and systems for picture rate reduction of stored video while under continuous record load
US20080012872A1 (en) * 2006-05-25 2008-01-17 Flickinger Jon M Jr System for Real-time Processing Changes Between Video Content in Disparate Formats
US7876768B2 (en) * 2006-06-30 2011-01-25 Ver Steeg William C Systems and methods of assembling an elementary stream from an encapsulated multimedia transport stream
US7895635B2 (en) * 2006-06-30 2011-02-22 Versteeg William C Systems and methods of assembling an elementary stream from an encapsulated multimedia transport stream
WO2008033870A2 (en) 2006-09-11 2008-03-20 Lumexis Corporation Fiber-to-the-seat (ftts) fiber distribution system
US8700014B2 (en) 2006-11-22 2014-04-15 Bindu Rama Rao Audio guided system for providing guidance to user of mobile device on multi-step activities
US10803474B2 (en) 2006-11-22 2020-10-13 Qualtrics, Llc System for creating and distributing interactive advertisements to mobile devices
US11256386B2 (en) 2006-11-22 2022-02-22 Qualtrics, Llc Media management system supporting a plurality of mobile devices
US8478250B2 (en) 2007-07-30 2013-07-02 Bindu Rama Rao Interactive media management server
US8380175B2 (en) * 2006-11-22 2013-02-19 Bindu Rama Rao System for providing interactive advertisements to user of mobile devices
US7983611B2 (en) * 2006-11-22 2011-07-19 Bindu Rama Rao Mobile device that presents interactive media and processes user response
CN101335883B (zh) * 2007-06-29 2011-01-12 国际商业机器公司 在数字视频广播系统中对视频流进行处理的方法和设备
US8149711B2 (en) * 2007-07-25 2012-04-03 Silicon Image, Inc. Data stream control for network devices
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
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
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
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
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
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
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
US8437617B2 (en) 2009-06-17 2013-05-07 Echostar Technologies L.L.C. Method and apparatus for modifying the presentation of content
CN102576356B (zh) 2009-08-06 2016-04-27 路美克斯公司 串联联网光纤到座位的机内娱乐系统
WO2011020071A1 (en) 2009-08-14 2011-02-17 Lumexis Corp. Video display unit docking assembly for fiber-to-the-screen inflight entertainment system
WO2011022708A1 (en) 2009-08-20 2011-02-24 Lumexis Corp. Serial networking fiber optic inflight entertainment system network configuration
US8934758B2 (en) 2010-02-09 2015-01-13 Echostar Global B.V. Methods and apparatus for presenting supplemental content in association with recorded content
US20120026079A1 (en) * 2010-07-27 2012-02-02 Apple Inc. Using a display abstraction to control a display
US8483286B2 (en) 2010-10-27 2013-07-09 Cyberlink Corp. Batch processing of media content
WO2013152129A1 (en) * 2012-04-03 2013-10-10 Fourth Wall Studios, Inc. Transmedia story management systems and methods
US9229847B1 (en) 2012-04-18 2016-01-05 Open Invention Network, Llc Memory sharing for buffered macro-pipelined data plane processing in multicore embedded systems
WO2014071971A1 (en) * 2012-11-07 2014-05-15 Telefonaktiebolaget L M Ericsson (Publ) Pre-buffering of content data items to be rendered at a mobile terminal
US10848802B2 (en) 2017-09-13 2020-11-24 Cisco Technology, Inc. IP traffic software high precision pacer
US10848539B2 (en) 2018-09-20 2020-11-24 Cisco Technology, Inc. Genlock mechanism for software pacing of media constant bit rate streams
US10534736B1 (en) * 2018-12-31 2020-01-14 Texas Instruments Incorporated Shared buffer for multi-output display systems
US11172269B2 (en) 2020-03-04 2021-11-09 Dish Network L.L.C. Automated commercial content shifting in a video streaming system

Family Cites Families (31)

* 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
US4616263A (en) * 1985-02-11 1986-10-07 Gte Corporation Video subsystem for a hybrid videotex facility
US5089885A (en) * 1986-11-14 1992-02-18 Video Jukebox Network, Inc. Telephone access display system with remote monitoring
IT1219727B (it) * 1988-06-16 1990-05-24 Italtel Spa Sistema di comunicazione a larga banda
JP3002471B2 (ja) * 1988-08-19 2000-01-24 株式会社日立製作所 番組配信装置
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
US5088091A (en) * 1989-06-22 1992-02-11 Digital Equipment Corporation High-speed mesh connected local area network
US5099319A (en) * 1989-10-23 1992-03-24 Esch Arthur G Video information delivery method and apparatus
CA2022302C (en) * 1990-07-30 1995-02-28 Douglas J. Ballantyne Method and apparatus for distribution of movies
DE69232164T2 (de) * 1991-08-22 2002-07-18 Sun Microsystems, Inc. Netzwerkvideoanbietergerät und-verfahren
EP0531599B1 (en) * 1991-09-13 1998-07-22 International Business Machines Corporation Configurable gigabit/s switch adapter
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
CA2117422A1 (en) * 1992-02-11 1993-08-19 Mark C. Koz Adaptive video file server and methods for its use
DE69223996T2 (de) * 1992-02-11 1998-08-06 Intelligent Instr Corp Adaptiver videodateienprozessor und verfahren für seine anwendung
US5452419A (en) * 1992-03-06 1995-09-19 Pitney Bowes Inc. Serial communication control system between nodes having predetermined intervals for synchronous communications and mediating asynchronous communications for unused time in the predetermined intervals
US5371532A (en) * 1992-05-15 1994-12-06 Bell Communications Research, Inc. Communications architecture and method for distributing information services
CA2071416A1 (en) * 1992-06-17 1993-12-18 Michel Fortier Video store and forward apparatus and method
AU4543593A (en) * 1992-07-08 1994-01-31 Bell Atlantic Network Services, Inc. Media server for supplying video and multi-media data over the public telephone switched network
US5307490A (en) * 1992-08-28 1994-04-26 Tandem Computers, Inc. Method and system for implementing remote procedure calls in a distributed computer system
US5289461A (en) * 1992-12-14 1994-02-22 International Business Machines Corporation Interconnection method for digital multimedia communications
US5428730A (en) * 1992-12-15 1995-06-27 International Business Machines Corporation Multimedia system having software mechanism providing standardized interfaces and controls for the operation of multimedia devices
US5550982A (en) * 1993-06-24 1996-08-27 Starlight Networks Video application server
US5442390A (en) * 1993-07-07 1995-08-15 Digital Equipment Corporation Video on demand with memory accessing and or like functions
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
US5491800A (en) * 1993-12-20 1996-02-13 Taligent, Inc. Object-oriented remote procedure call networking system
US5586257A (en) * 1994-05-05 1996-12-17 Perlman; Stephen G. Network architecture to support multiple site real-time video games
US5521631A (en) * 1994-05-25 1996-05-28 Spectravision, Inc. Interactive digital video services system with store and forward capabilities
US5606359A (en) * 1994-06-30 1997-02-25 Hewlett-Packard Company Video on demand system with multiple data sources configured to provide vcr-like services
US5668948A (en) * 1994-09-08 1997-09-16 International Business Machines Corporation Media streamer with control node enabling same isochronous streams to appear simultaneously at output ports or different streams to appear simultaneously at output ports

Also Published As

Publication number Publication date
CA2153445C (en) 2002-05-21
JPH08130714A (ja) 1996-05-21
EP0701372A1 (en) 1996-03-13
US5805821A (en) 1998-09-08
KR960011911A (ko) 1996-04-20
JP3110989B2 (ja) 2000-11-20
CA2153445A1 (en) 1996-03-09

Similar Documents

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

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
LAPS Lapse due to unpaid annual fee