KR20080066625A - 데이터 배포 및 버퍼링 - Google Patents

데이터 배포 및 버퍼링 Download PDF

Info

Publication number
KR20080066625A
KR20080066625A KR1020080004096A KR20080004096A KR20080066625A KR 20080066625 A KR20080066625 A KR 20080066625A KR 1020080004096 A KR1020080004096 A KR 1020080004096A KR 20080004096 A KR20080004096 A KR 20080004096A KR 20080066625 A KR20080066625 A KR 20080066625A
Authority
KR
South Korea
Prior art keywords
data
array
memory devices
data block
read buffer
Prior art date
Application number
KR1020080004096A
Other languages
English (en)
Other versions
KR101121479B1 (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 KR20080066625A publication Critical patent/KR20080066625A/ko
Application granted granted Critical
Publication of KR101121479B1 publication Critical patent/KR101121479B1/ko

Links

Images

Classifications

    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63BAPPARATUS FOR PHYSICAL TRAINING, GYMNASTICS, SWIMMING, CLIMBING, OR FENCING; BALL GAMES; TRAINING EQUIPMENT
    • A63B21/00Exercising apparatus for developing or strengthening the muscles or joints of the body by working against a counterforce, with or without measuring devices
    • A63B21/40Interfaces with the user related to strength training; Details thereof
    • A63B21/4027Specific exercise interfaces
    • A63B21/4033Handles, pedals, bars or platforms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/2801Broadband local area networks
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63BAPPARATUS FOR PHYSICAL TRAINING, GYMNASTICS, SWIMMING, CLIMBING, OR FENCING; BALL GAMES; TRAINING EQUIPMENT
    • A63B2209/00Characteristics of used materials
    • A63B2209/08Characteristics of used materials magnetic
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63BAPPARATUS FOR PHYSICAL TRAINING, GYMNASTICS, SWIMMING, CLIMBING, OR FENCING; BALL GAMES; TRAINING EQUIPMENT
    • A63B2213/00Exercising combined with therapy
    • A63B2213/007Exercising combined with therapy combined with magnetotherapy
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/61Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
    • H04L65/612Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio for unicast

Landscapes

  • Health & Medical Sciences (AREA)
  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biophysics (AREA)
  • Orthopedic Medicine & Surgery (AREA)
  • General Health & Medical Sciences (AREA)
  • Physical Education & Sports Medicine (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Information Transfer Between Computers (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

주문형 서버 시스템은 하나 이상의 플래시 기반 메모리 디바이스에 대한 액세스를 조정하는 메모리 제어기를 포함한다. 플래시 디바이스는 복수의 목적지 각각에 의해 각 네트워크를 통해 주문형으로 선택적으로 시청될 수 있는 다량의 비디오 콘텐츠를 저장한다. 플래시 메모리 디바이스의 어레이에 대한 액세스 갖는 것 외에도, 메모리 제어기는 대응하는 판독 버퍼 및 기입 버퍼에 대한 액세스를 갖는다. 판독 버퍼 및 기입 버퍼의 사용은, 메모리 제어기로 하여금 기입 버퍼 내에 저장된 데이터를 메모리 디바이스의 어레이로 전송하는 것과 메모리 디바이스의 어레이 내에 저장된 데이터를 판독 버퍼로 전송하는 것을 전환하도록 할 수 있다. 기입 버퍼는 상이한 사용자에 의한 시청을 위해 선택될 수 있는 주문형 비디오 콘텐츠를 저장한다. 판독 버퍼는 사용자에게 현재 스트리밍되고 있는 주문형 비디오 콘텐츠의 세그먼트를 저장한다.
Figure P1020080004096
서버 시스템, 스트리밍, 세그먼트, 기입 버퍼, 판독 버퍼

Description

데이터 배포 및 버퍼링{DATA DISTRIBUTION AND BUFFERING}
본 발명은 데이터의 배포 및 버퍼링에 관한 것이다.
종래 기술은, 주문형(on-demand) 케이블 네트워크의 가입자들에게 정보를 보다 신속하고 효과적으로 전송하는 것을 가능하게 하였다. 예를 들어, 케이블 네트워크 공간에서는, 디지털 케이블이 현재 각 텔레비전상에서 주문형 재생을 위한 서로 다른 종류의 스트리밍 데이터 콘텐츠를 수신하기 위한 복수의 채널들을 가입자들에게 제공한다.
종래의 케이블 기술에 따르면, 각 가입자들은 해당 케이블 회사에 의해 관리되는 서버로부터 송신되는 인코드된 디지털 정보를 수신하는 소위 셋톱 박스 장치를 가정 내에 가지고 있는 경우가 종종있다. 각 셋톱 박스는 인코드된 디지털 정보의 수신시에, 재생을 목적으로 디코드 기능을 수행한다. 일단 디코드되면, 시청자의 가정에 있는 각각의 셋톱 박스는 선택된 채널로부터 도출된 디코드된 데이터의 적당한 "래스터라이즈드(rasterized)" 신호를 이용하여 해당 TV 시스템을 구동한다. 이에 따라서, TV 시청자는 케이블 회사에 의해 송신되어 해당 셋톱 박스에 의해 수신된 그에 대응하는 TV 프로그램을 시청할 수가 있다.
통상, 해당 케이블 회사는 해당하는 타겟 셋톱 박스에 배포될 수 있는 정보 라이브러리를 보유하고 있거나, 이 정보 라이브러리에 대한 액세스를 갖는다. 따라서, 가입자는 홈 환경 내에서 시청을 위한 라이브러리로부터 아이템을 선택할 수 있다.
케이블 회사에 의해 관리되는 각 서버로부터 콘텐츠를 서빙하기 위한 한 가지 방법은, 하나 이상의 RAM(예컨대, 랜덤 액세스 메모리) 타입의 스토리지에 콘텐츠를 일시 저장할 것을 수반한다. 이렇게 사용되면, 전체 영화 등의 콘텐츠가 RAM에 저장되어 영화의 주문형 시청을 시작하는 하나 이상의 가입자들에게 배포되될 수 있다.
전술한 바와 같은 각각의 가입자들에게 배포하기 위한 콘텐츠 전체(예컨대,시작에서 끝까지의 복수의 영화)를 일시 기억하는 종래의 메모리(예컨대, RAM) 사용과 관련된 한가지 단점은, RAM 기반 스토리지와 관련한 비용 문제이다. 예를 들어, 대량의 콘텐츠(예컨대, 많은 수의 다른 영화들)를 배포하도록 구성된 서버가 많은 수의 서로 다른 가입자들에게 서로 다른 많은 유형의 영화들을 서빙할 능력을 갖기 위해 거대한 저장 용량의 RAM 기반 스토리지를 필요로 하는 것을 생각해 볼 수 있다.
RAM 기반 스토리지를 사용하는 것에 대한 가능한 대안책은, 콘텐츠를 디스크 기반 스토리지에 저장하는 것이다. 이 방법은, 디스크 기반 스토리지로부터 콘텐츠를 서빙(예컨대, 스트리밍)하면 속도가 느려져, 복수의 사용자들 각각이 원격 서버로부터의 콘텐츠 수신을 제어할 수 있는 진정한 의미의 주문형의 경험을 제공할 수 없기 때문에, 허용될 수 없다.
다음으로, 콘텐츠를 처리하고 배포하기에 유용한 몇 가지 실시예들을 개시한다. 예를 들어, 여기에 설명되는 일 실시예는, 데이터 프로세스 시스템의 어느 한 부분이 더 짧은 데이터 버스트를 관리하는 반면에, 긴 데이터 버스트를 구현하는 각 데이터 프로세스 시스템의 일부를 통해 고대역폭 인터페이스가 하나 이상의 플래시 장치로부터 데이터를 (디스크에 비해) 신속하게 검색할 수 있게 하는 것을 포함한다.
예를 들어, 이하에 상세하게 설명하게 될 일반적인 실시예에 따르면, 여기서의 시스템은 하나 이상의 플래시 기반 메모리 디바이스에 대한 액세스를 조정(coordinates)하는 메모리 제어기를 포함한다. 이러한 실시예에서는, 메모리 제어기는 플래시 메모리 디바이스 어레이 이외에 대응하는 판독 버퍼 및 기입 버퍼를 갖는다. 판독 버퍼 및 기입 버퍼를 이용하면, 메모리 제어기가 기입 버퍼 내에 저장되어 있는 데이터를 메모리 디바이스 어레이로 전송하는 것과, 메모리 디바이스 어레이 내의 데이터를 판독 버퍼에 전송하는 것 사이에서 전환을 할 수 있다.
특정 실시예에서는, 기입 버퍼 내에 저장된 데이터는 가입자들에게 주문형 배포를 위해 메모리 디바이스 어레이 내에 저장되어 있는 영화와 같은 비디오 콘텐츠이다. 판독 버퍼는 메모리 디바이스 어레이로부터 검색된 데이터의 세그먼트(예컨대, 비디오 콘텐츠의 일부)를 저장하는 하나 이상의 RAM 기반 메모리 디바이스를 포함한다. 따라서, 메모리 디바이스 어레이로부터 데이터를 직접적으로 배포하는 대신에, 메모리 제어기는 비디오 콘텐츠를 판독 버퍼(예컨대, 캐시)로부터의 스트리밍 데이터로서 배포한다. 판독 버퍼 내에 현재 있지 않은 비디오 콘텐츠 섹션을 제공하라는 인스트럭션(instruction)을 수신하면, 메모리 제어기는 다음 세그먼트를 위해 플래시 메모리 디바이스 어레이에 대한 액세스를 제공한다. 메모리 제어기는, 각 서버가 요청된 콘텐츠 전체를 배포하거나 또는 각 가입자가 해당 콘텐츠의 스트리밍을 정지하라는 인스트럭션을 발행할 때까지, 판독 버퍼로부터 콘텐츠를 스트리밍하고, 판독 버퍼의 콘텐츠를 갱신하는 프로세스를 반복한다.
일 실시예에서, 콘텐츠는 네비게이션을 목적으로 삽입(embeded) 포인터를 포함한다. 예를 들면, 기입 버퍼, 플래시 메모리 디바이스의 어레이, 및 판독 버퍼 내에 저장되어 있는 콘텐츠 내의 포인터는 콘텐츠 내의 서로 다른 위치에 대한 포워드 및 백워드를 가리킨다. 스트리밍되는 비디오 콘텐츠를 보고 있는 유저들은, 각각의 셋톱 박스로부터, 재생, 앞으로 빨리 감기, 정지, 되감기 등의 명령(command)를 발행할 수 있다. 각 서버에서의 비디오 콘텐츠의 스트리밍을 관리하고 있는 프로세서는, 스트리밍되는 콘텐츠와 관련된 네비게이션 포인터의 사용에 기초하여 발행된 명령에 따라 콘텐츠의 서로 다른 부분들을 네비게이션하고 배포한다. 환언하면, 서버에서의 프로세스는, 유저 명령의 수신에 기초하여 서로 다른 네비게이션 포인터를 이용하여 콘텐츠의 서로 다른 부분들을 스트리밍한다.
여기서의 기술은 복수의 가입자들에게 주문방식으로 라이브 또는 사전 기입된 데이터 스트림 등의 네비게이션 가능 데이터 스트림을 생성하여 배포하는 것과 같은 애플리케이션에 사용하기에 매우 적합하다. 그러나, 여기에서의 구성은 이러한 애플리케이션에서의 사용에 한정되지 않고, 여기서의 구성 및 그 변형이 다른 애플리케이션에도 또한 적합하다는 점을 주지해야 한다.
로직, 버퍼, 레지스터 등과 같은 이산 하드웨어 컴포넌트를 통해 잠재적으로 구현되는 것 외에도, 여기서의 다른 실시예들은 콘텐츠의 저장 및 배포 관리를 하는 전술한 기술을 지원하도록 구성된 컴퓨터화된 장치(예컨대, 컴퓨터 프로세서 시스템, 호스트 컴퓨터, 퍼스널 컴퓨터, 워크스테이션 등)와 같은 하드웨어 플랫폼을 포함할 수 있다. 이러한 실시예에서, 컴퓨터화된 장치는 메모리 시스템, 프로세서(예컨대, 프로세싱 장치), 및 개별의 상호접속을 포함한다. 상호접속은 프로세서를 메모리 시스템에 연결한다. 메모리 시스템은, 프로세서 상에서 실행될 때, 콘텐츠의 관리 및 배포를 가능하게 하는 애플리케이션(예컨대, 소프트웨어 코드)에 의해 인코드된다.
여기에 개시된 본 출원의 다른 실시예들은, 위에서 요약하고 아래에서 상세하게 개시하는 방법 실시예 및 동작들을 수행하는 소프트웨어 프로그램을 포함한다. 특히, 실시예들은 여기서 인코드된 컴퓨터 프로그램 로직이 컴퓨터화된 장치 상에서 실행되어 여기서 설명하는 콘텐츠의 저장 및 배포를 관리하는 컴퓨터 프로그램 프로덕트(예컨대, 컴퓨터 판독가능 매체)를 포함할 수 있다. 컴퓨터 프로그램 로직은, 컴퓨팅 시스템에서 적어도 하나의 프로세서에 의해 실행될 때, 프로세서로 하여금, 본 명세서의 실시예로서 여기에 나타내는 동작(예컨대, 방법)을 수행하게 한다. 여기에서 더욱 설명하는 이러한 구성들은 통상, 소프트웨어, 코드 및/또는 광학 매체(예컨대, CD-ROM), 플로피 또는 하드 디스크와 같은 컴퓨터 판독 가능 매체 상에 구성되거나 인코드되는 다른 데이터 구조, 또는 하나 이상의 ROM 또는 RAM 또는 PROM 칩에서의 마이크로코드 또는 펌웨어와 같은 다른 매체 또는 ASIC(Application Specific Integrated Circuit) 또는 FPGA(Field Programmable Gate Array) 또는 하나 이상의 모듈, 공유 라이브러리 등에서의 다운로드 가능 소프트웨어 이미지로서 제공된다. 소프트웨어 또는 펌웨어 또는 다른 이러한 구성들이 컴퓨터 장치상으로 인스톨되어, 컴퓨터화된 장치 내의 하나 이상의 프로세서들이 여기에 설명하는 기술들을 수행하게 할 수 있다.
또 하나의 본 출원의 특정 실시예는 본 발명의 실시예에 따라 콘텐츠 관리 및 분배를 지원하기 위한 인스트럭션들을 저장한 컴퓨터 판독 가능 매체를 포함하는 컴퓨터 프로그램 제품에 대한 것이다. 인스트럭션들은 개개의 컴퓨터 장치의 프로세서에 의해 수행될 때, 프로세서로 하여금, i) 콘텐츠 스트림의 특정 부분에 대한 요청을 수신하는 단계와, ii) 상기 요청을 수신한 것에 응답하여, 플래시 메모리 디바이스의 어레이로부터의 데이터 블록에 대한 액세스를 개시하는 단계 - 상기 데이터 블록은 콘텐츠 스트림의 특정 부분뿐만이 아니라 콘텐츠 스트림의 대응하는 연속 부분들을 포함함 - 와, iii) 개개의 목적지로의 주문형 스트리밍을 위해 상기 액세스된 데이터 블록의 적어도 일부분을 (RAM 기반) 판독 버퍼에 저장하는 단계와, iv) 콘텐츠 스트림의 특정 부분의 상기 개개의 목적지로의 전송을 개시하는 단계를 수행하도록 한다. 본 개시의 그 외의 실시예들은 이상에서 요약되고 이하에서 자세히 개시되는 방법 실시예 단계와 동작 중의 어느 것이라도 수행하는 소프트웨어 프로그램 및/또는 하드웨어를 포함한다.
본 요약이 모든 실시예 및/또는 본 개시 또는 청구된 발명의 추가의 신규한 특징을 모두 특정하고 있는 것은 아니다. 오히려, 본 요약은 서로 다른 실시예들 및 종래 기술과 비교할 때의 새로운 특징에 대한 예비적 논의를 제공하고 있을 뿐이다. 본 발명의 추가의 상세 사항 및/또는 가능한 전망(변형 사항들)을 알기 위해서는, 본 개시의 상세한 설명 부분과 해당 도면들을 참조해야 할 것이다.
본 발명에 따른 데이터의 배포 및 버퍼링에 의하면, 플래시 메모리 및 RAM 기반 스토리지의 효율적 사용을 가능하게 하는 효과가 있다.
본 출원의 앞서 언급되거나 그 외의 목적, 특징 및 이점들은 이하의 양호한 실시예들에 의한 더 자세한 설명으로부터 명백해질 것인데, 이 실시예들은 유사한 참조 부호들이 여러 도면들에 걸쳐서 동일 부분을 지칭하고 있는 첨부 도면들에 의해 도해되었다. 도면들은 예시적 실시예, 원리 및 개념들을 도해하는 데에 중점을 두기 위해서 반드시 척도에 맞추어져 도시되지는 않았다.
이하의 개시는 플래시 메모리 및 RAM 기반 스토리지의 효율적 사용을 지원하는 몇 가지 유용한 실시예를 포함한다. 예를 들어, 여기의 주문형 서버 시스템은 하나 또는 그 이상의 플래시 기반 메모리 디바이스로의 액세스를 조정하는 메모리 제어기를 포함한다. 플래시 장치는 개개의 네트워크를 통해 복수 목적지(multiple destinations) 각각에 의해 주문형으로 선택적으로 시청될 수 있는 많은 양의 콘텐츠(예를 들어, 삽입된 포인터 정보 세트들을 포함하는 비디오 콘텐츠)를 저장한다.
플래시 메모리 디바이스들의 어레이에 액세스하는 것에 더해서, 메모리 제어 기는 대응하는 판독 버퍼 및 기입 버퍼에 액세스한다. 판독 버퍼는, 플래시 장치들 중에서 작은 양의 데이터만이 해당 사용자에 의해 요청될 때, 플래시 장치들로부터 판독되어 출력된 많은 양의 데이터를 저장할 수 있다. 본 발명의 실시예에 따라 높은 플래시 판독 성능을 획득하는 방법은 대량 버스트 판독(large burst reads)을 개시하는 것이다. 데이터를 스트리밍할 때, 해당 프로세싱 엔진은 플래시 장치에 액세스하고, 어떤 주어진 시각에서도 작은 양의 데이터를 활용하고자 한다. 특정 스트림 내에서, 판독 액세스들은 선형으로 어드레싱될 수 있다. 따라서, 만일 초기의 대량 버스트의 잔여분이 더 큰 대역폭의 판독 버퍼에 저장되면, 가능한 최고의 플래시 프로세스량이 구현될 수 있다. 본 시스템은 유사한 이유로 기입 버퍼를 포함할 수 있는데, 또한 여기서 추가로 설명하는 바와 같이 판독/기입 인터리빙을 촉진시키기 위해서도 기입 버퍼를 포함한다.
본 발명의 실시예에 따른 캐시는 요청 사용자들에게 포워딩되는 스트리밍 데이터와 같은 데이터를 캐싱한다. 일 실시예에서, 기입 버퍼는 서로 다른 사용자들에 의해 보이기 위해서 선택될 수 있는 주문형 비디오 콘텐츠를 저장한다. 판독 버퍼는 사용자들에게 현재 스트리밍되고 있는 주문형 비디오의 세그먼트들을 저장한다.
도 1은 본 발명의 실시예에 따른 통신 시스템(100)의 예를 묘사하는 도면이다. 본 예의 맥락 하에서, 통신 시스템(100)(예로, 콘텐츠 리포지토리(repository) 및 데이터 스트리밍 시스템)은 콘텐츠 관리자(105), 네트워크(150)(예로, 공중 또는 개인 네트워크), 리포지토리(180), 데이터 스트림 변경 기(109), 및 비디오 정보를 보고 오디오 정보를 청취하는 것 등을 위한 복수의 사용자 도메인(190)(예로, 사용자 도메인 190-1,...,사용자 도메인 190-M 과 같은 홈 정보)을 포함한다.
도시된 실시예에서, 콘텐츠 관리자(105)는 호스트 시스템(115), 메모리 제어기(120), 기입 버퍼(122), 판독 버퍼(124), 및 메모리 디바이스들(145)을 포함한다. 각각의 사용자 도메인(190)(예로, 가정 집과 같은 가입자 환경)은, 개개의 미디어 플레이어(192)(예로, 텔레비젼, 컴퓨터 시스템, 오디오 시스템 등과 같은, 미디어플레이어 192-1,..., 미디어 플레이어 192-M), 및 셋 톱 박스(194)(예로, 셋 톱 박스 194-1,..., 셋 톱 박스 194-M)를 포함한다. 콘텐츠 관리자(105)는 사용자 도메인들(190)에 대한 원격 서버 로케이션에 소재한다.
일 실시예에 따르면, 사용자 도메인(190-1)과 관련된 개개의 사용자(예로, 가입자)는 하나 또는 그 이상의 입력 신호(196-1)(예로, 가입자에 의해 작동되는 핸드헬드 무선 원격 제어 장치와 같은 장치에 의해 생성되는 네비게이션 제어 신호들)를, 개개의 미디어 플레이어(192-1)(예로, 텔레비젼, 비디오 플레이어, 뮤직 플레이어 등)에 의해 재생될 콘텐츠(예로, 비디오 및/또는 오디오 정보)의 스트리밍을 제어하기 위한 목적으로 개개의 셋 톱 박스(194-1)에게 제공한다. 이런 구현에서, 개개의 셋 톱 박스(194-1)는 네트워크(150) 상에서 개개의 가입자로부터 수신된 입력 제어 신호들(196-1)을, 적어도 부분적으로 사용자 도메인들(190)로의 적합한 데이터의 서빙(serving)을 관리하는 호스트 시스템(115)으로 통신하여 준다.
주어진 콘텐츠 스트림에 대해서 네트워크(150) 상에서 개개의 사용자 도메 인(190)으로부터 수신된 명령들(예로, 개시, 정지, 고속 전진, 되감기 등)에 기초하여, 콘텐츠 관리자(105)의 호스트 시스템(115)은 메모리 제어기(120)와 통신한다. 예를 들어, 호스트 시스템(115)은 콘텐츠의 타이틀(또는 그 외의 고유 식별자)이 개개의 셋 톱 박스(194)로 스트리밍되도록 하고 및/또는 대응하는 콘텐츠의 위치가 개개의 셋 톱 박스(194)로 스트리밍되도록 통신하여 준다.
이미 논의한 대로, 메모리 제어기(120)는 판독 버퍼(124)에서의 스트림의 일시적 저장을 위해 메모리 디바이스들(145)로부터 데이터를 추출하는 동작을 관리한다. 메모리 제어기(120)는 호스트 시스템(115)이 네트워크(150) 상에서 적합한 콘텐츠를 콘텐츠 스트림을 시청하거나 기입하는 개개의 가입자로 스트리밍하도록 포워딩하거나 인에이블한다. 만일 호스트 시스템(115)이 판독 버퍼(124)에서 발견되지 않는 데이터 세그먼트를 검색하고자 시도할 때(예로, 액세스가 캐시 미스(chache miss)로 결론날 때), 메모리 제어기(120)는 메모리 디바이스들(145)로의 액세스를 개시하여 요청된 세그먼트뿐만이 아니라 개개의 콘텐츠 스트림의 그 밖의 세그먼트도 판독 버퍼(124)로 전송되도록 한다. 일 실시예에서, 메모리 제어기(120)는 (호스트 시스템(115)이 판독 버퍼(124)에 저장된 콘텐츠 범위의 말단으로부터 데이터 전송 데이터를 스트리밍한 것을 검출한 것에 기초하여) 콘텐츠 스트림의 새로운 세그먼트들이 판독 버퍼(124) 내에서의 저장을 위해 필요하다는 예측을 하여, 호스트 시스템(115)이 개개의 가입자에게 중단되지 않는 시청 경험을 제공하도록 할 수 있다.
따라서, 각각의 홈 환경은, 각 사용자가 네트워크(150)를 통해 콘텐츠 관리 자(content manager)(105)와 수신(예컨대, 스트리밍 데이터) 및 송신(예컨대, 입력 명령)하는 것을 가능하게 하는, 상대적으로 단순한 셋 톱 박스(194)를 포함할 수 있다. 도시된 바와 같이, 콘텐츠 관리자(105)는 사용자 요청에 따라 많은 비동기 데이터 스트림들을 처리하고 서로 다른 목적지(destination)로 배포하는 중앙 위치에 있는 서버일 수 있다.
네트워크(150)를 통해 가입자들로의 콘텐츠 스트리밍을 개시하기 전에, 중앙 관리자(105)는 메모리 디바이스(145)에 콘텐츠의 저장을 개시한다. 예를 들어, 리포지토리(repository)(180)는 MPEG(Moving Pictures Expert Group) 포맷에 따라 인코드된 복수의 영화와 같은 콘텐츠의 라이브러리를 포함할 수 있다. 리포지토리(180) 내의 콘텐츠는 네비게이션 포인터 세트를 포함할 수도 있고 포함하지 않을 수도 있다. 포함하지 않는다면, 데이터 스트림 변경기(109)는, 콘텐츠 관리자(105)로 포워드된 복수의 콘텐츠 스트림(예컨대, 영화) 각각에 대해, 도 2에 도시된 바와 같이, 대응 콘텐츠 세그먼트에 네비게이션 포인터 세트를 삽입한다.
보다 구체적으로, 도 2는 실시예들에 따라 각각의 콘텐츠 스트림(201)에 삽입된 포인터 세트들에 대한 도면이다. 콘텐츠 스트림 내의 세그먼트들은 하나 이상의 서로 다른 유형의 MPEG 프레임 정보(예컨대, I-프레임, B-프레임, P-프레임 등)를 포함할 수 있다. 세그먼트는 하나 이상의 픽처 그룹(예컨대, GOP들)일 수 있다.
메타데이터 이를테면 삽입된 네비게이션 포인터 세트들(예컨데, PS1, PS2 등)은 포워드 포인터(예컨대, FPT1, FPT2, FPT3 등) 및 백워드 포인터(예컨대, BPT1, BPT2, BPT3 등)를 포함할 수 있다. 예로서, 리포지토리(180)로부터 수신된 콘텐츠 스트림(201)은 초기에 SEG2, SEG3, SEG4, SEG5 등을 포함할 수 있다. 데이터 스트림 변경기(109)는 콘텐츠 스트림의 다른 위치에 포워드 및 백워드 포인터들을 포함하도록 콘텐츠 스트림(202)을 생성한다. 따라서, 네트워크(150)를 통해 콘텐츠 스트림(201 혹은 202)을 보는 가입자로부터 서로 다른 명령를 수신할 때, 호스트 시스템(115)은 (예컨대, 휴지(pause) 명령 수신에 응답하여) 동일한 콘텐츠 세그먼트의 반복 송신과 같은 동작을 수행할 수 있고, (예컨대, 재생 명령에 기초하여) 표준 시청 속도(normal viewing rate)로 콘텐츠 스트림의 세그먼트를 스트리밍할 수 있고, (예컨대, 빨리 감기 명령 수신에 기초하여) 추후 콘텐츠 스트림의 세그먼트들을 송신할 수 있고, (예컨대, 되감기 명령 수신에 기초하여) 이전 콘텐츠 스트림의 세그먼트들을 송신할 수 있다.
따라서, 콘텐츠 스트림(202) 내의 포워드 및 백워드 포인터들의 목적 중 하나는, 각각의 사용자가 리포지토리(180)에 저장된 각 데이터 스트림의 일부를 각자의 미디어 플레이어에서 재생하는 것을 제어할 수 있게 하는 것이다. 예를 들어, 삽입된 포워드 포인터(예컨대, FPT1, FPT2, FPT3) 및 백워드 포인터(예컨대, BPT1, BPT2, BPT3)는 각각의 사용자가 서로 다른 속도로 빨리 감기 및 되감기 기능과 같은 네비게이션을 수행할 수 있게 한다. 다시 말해, 가입자가, 느린 빨리 감기 속도로 시작한다면, 각 세그먼트 사이의 FPT1는 각각의 콘텐츠 스트림에서 다음의 연속 프레임으로 스킵하는 방법을 제공한다. FPT2는 후속하는 세그먼트로 2개의 세그먼트를 스킵하게 할 수 있고 따라서 더 빠른 빨리 감기 속도를 제공한다. FPT3 은 후속하는 세그먼트로 10개의 세그먼트를 스킵하게 할 수 있고 따라서 가입자를 위해 훨씬 더 빠른 빨리 감기 속도를 제공한다. FPT2 및 FPT3에 대한 이러한 후자의 경우에, 가입자는 콘텐츠 스트림(202)의 세 번째 및 열 번째 프레임(예컨대, 세그먼트) 마다 각각 시청할 수 있다. 각각의 콘텐츠에서 백워드 포인터들(예컨대, BPT는 백워드를 네비게이트하는데 사용될 수 있음)은 동일한 방식으로 스트리밍함에 유의한다.
다시 도 1을 참조하면, 데이터 스트림 변경기(109)는 삽입된 네비게이션 포인터 세트를 포함하는 콘텐츠 스트림(202)을 호스트 시스템(115)에 제공한다. 호스트 시스템(115)은, 차례로, 기입 버퍼(122)에 콘텐츠 스트림(202)의 저장을 개시한다. 기입 버퍼(122)에 저장된 콘텐츠 스트림(202)의 일부(예컨대, 하나 이상의 세그먼트 및 대응 포인터들)가 임계값을 초과했음을 검출할 때, 메모리 제어기(120)는 기입 버퍼 내의 콘텐츠 스트림(202)의 일부를 메모리 디바이스(145)에 저장하기 시작한다.
전송을 개시하기 위한 임계값은, 적어도, 메모리 디바이스(145)에 기입하기 위한 블록 크기에 일부 기초할 수 있다. 예를 들어, 일 실시예에서, 콘텐츠 관리자(105)는 그 외의 유사한 콘텐츠 스트림은 물론 콘텐츠 스트림(202)을 저장하기 위한 플래시 메모리 디바이스들의 어레이를 포함할 수 있다. 메모리 디바이스(145)의 어레이는 특정 바이트 수의 데이터를 메모리에 기입할 것을 요청할 수 있다. 기입 버퍼(122)가 특정한 콘텐츠 스트림을 특정 바이트 수 이상 포함하는 경우에, 특정한 콘텐츠는 기입 버퍼(122)로부터 메모리 디바이스(145)로 전송될 수 있다.
메모리 디바이스(145)에 저장된 콘텐츠 스트림(202)은 하나 이상의 가입자에게 배포될 수 있다. 본 예에 있어서, 환경(190-1)에서 각 사용자는, 판독 버퍼(124)로부터 스트림된 콘텐츠와 관련된 현재 시청 포인트를 빨리 감기 위해, 입력(196-1)(예컨대, 원격 제어 장치를 통한 명령)을 생성하는 것으로 가정한다. 데이터 스트림 관리자(105), 보다 구체적으로 호스트 시스템(115)은 네트워크(150)를 통해 이 명령을 수신하고, 그 후에 각각의 콘텐츠 스트림(판독 버퍼(124)로부터 수신된 것으로서)에서 포워드 포인터를 사용하여 네트워크(150)를 통해 사용자에게 데이터를 스트리밍하는데 있어서, 이전에 논의한 바와 같이 데이터 스트림(140) 내의 다른 위치로부터 앞쪽으로 데이터를 점프시켜(jump ahead) 스트리밍한다. 언급된 바와 같이, 포워드 포인터 FPT1은 제1 속도의 빨리 감기를 가능하게 하고, 포워드 포인터 FPT2는 제2 속도의 빨리 감기를 가능하게 하고, 포워드 포인터 FPT3은 제3 속도의 빨리 감기를 가능하게 한다. 일 실시예에서, 네트워크(150)는 인터넷, WAN(wide area network), LAN(local area network) 등과 같은 네트워크를 나타낸다. 따라서, 데이터 스트림 관리자(105-1)는 환경(190)과 같은 복수의 서로 다른 위치로의 데이터의 스트리밍을 관리하는 중심 위치로서 역할을 한다.
호스트 시스템(115)이 판독 버퍼(124)로부터 콘텐츠 스트림(202)을 수신할 수 있긴 하지만, 호스트 시스템(115)은 콘텐츠 스트림(202)으로부터 네비게이션 포인터들을 스트립할 수 있고, 단지 오리지널 MPEG 데이터 정보만 사용자에게 전송할 수 있다. 그러한 실시예에서, 호스트 시스템(115)은 상술한 바와 같이 네비게이션 포인터들을 사용하여 가입자로부터 수신된 각각의 명령에 기초하여 적절한 콘텐츠를 스트리밍한다.
도 3은 실시예에 따른 예시적인 콘텐츠 스토리지(content storage) 및 배포 시스템(disbribution system)에 대한 도면이다. 이러한 예시적인 실시예에서, 도 1의 도면에 따르면, 메모리 제어기(120)는 기입 버퍼(122)로부터 플래시 메모리 디바이스(345)의 어레이로의 콘텐츠 전송과 플래시 메모리 디바이스(345)의 어레이에 있는 콘텐츠의 판독 버퍼(124)(예컨대, 캐시)로의 전송 사이를 조정한다. 도 3에 도시된 바와 같이, 판독 버퍼(124)는 네트워크(150)를 경유하여 호스트 시스템(115)을 통해 각각의 가입자에게 스트리밍되는 콘텐츠의 일부(예컨대, 상술한 바와 같은 복수의 세그먼트들로 영화 전체는 아님)를 저장하기 위한 복수의 저장 영역(324)(예컨대, 영역 324-1, ..., 영역 324-M)으로 분할될 수 있다. 예를 들어, 판독 버퍼(124)의 영역(324-1)은 사용자 도메인(190-1)에 스트리밍되는 콘텐츠를 저장할 수 있고, 판독 버퍼(124)의 영역(324-M)은 사용자 도메인(190-M)으로 스트리밍되는 콘텐츠를 저장할 수 있다.
메모리 제어기(120)는, 각각의 가입자로의 이전 세그먼트들의 송신 이후에, 플래시 메모리 디바이스(345)의 어레이에 저장된 다음 세그먼트들의 세트(포워드 혹은 백워드 중 하나)를 영역(324)으로 전송한다. 하나의 실시예에서, 호스트 시스템(115)은 가입자에게 데이터의 연속적인 스트리밍을 지원하기 위해 필요한 것으로서 새로운 데이터를 갖는 영역(324)을 갱신하기 위한 요청을 생성한다. 대안적으로, 메모리 제어기(120)는 소정의 영역에 대해 스트리밍 데이터의 현재 세그먼트 위치를 모니터할 수 있고, 플래시 메모리 디바이스(345)의 어레이 내에 저장된 후속하는 콘텐츠 세그먼트들을 판독 버퍼(124)의 대응 영역으로 전송함으로써 필요에 따라 판독 버퍼(124) 내의 영역들을 갱신할 수 있다.
따라서, 이 실시예들은 다음의 동작들, 즉, 각각의 가입자에 의해 연속 방식으로 재생할 수 있는 비디오 데이터의 하나 이상의 로직 그룹핑(logical groupings)을 저장하기 위해 플래시 메모리 디바이스(345)의 어레이를 유지하는 동작; 네트워크(150)를 통해 서로 다른 각각의 목적지에 스트리밍하기 위한 비디오 데이터의 하나 이상의 로직 그룹핑의 서로 다른 대응 세그먼트들을 저장하기 위해 판독 버퍼(124)(예컨대, RAM-기반 스토리지)의 위치를 할당하는 동작; 및 판독 버퍼 내의 현재의 세그먼트들이 호스트 시스템(115)에 의해 각각의 목적지로 스트리밍되면 영역(324)(예컨대, RAM-기반 스토리지의 일부)을 비디오 데이터의 하나 이상의 로직 그룹핑의 각 새로운 세그먼트들로 갱신하는 동작을 지원한다.
일 실시예에서, 분배 시스템(300)은, 플래시 메모리 디바이스(380-1), 플래시 메모리 디바이스(380-2),..., 플래시 메모리 디바이스(380-J)를 포함하는 플래시 메모리 디바이스(345)(예컨대, NAND 기술에 기초하는 메모리들)의 어레이를 포함한다. 플래시 메모리 디바이스(345)의 어레이는 64개의 DIMM(Dual In-Line Memory Module)을 포함할 수 있다. 각각의 DIMM은 그 위에 8개(32 기가바이트)의 플래시 메모리 디바이스를 가질 수 있다. 메모리 제어기(120)는 플래시 메모리 디바이스(345)의 어레이에 스트립(striped) 데이터로서 콘텐츠를 저장한다.
일반적으로, 메모리 제어기(120)는 단일 바이트에 액세스하는 대신 플래시 메모리 디바이스(345)의 어레이로부터 데이터 블록(예컨대, 복수 바이트)에 액세스한다. 블록 크기는 각각의 플래시 메모리 디바이스로부터 2 킬로바이트(즉, 페이지)의 데이터로 특정될 수 있다. 플래시 메모리 디바이스(345) 내에 512 플래시 메모리 디바이스(예컨대, 복수의 DIMM의 각각 마다 64 x 8의 플래시 디바이스)가 존재하는 것으로 가정하면, 플래시 메모리 디바이스(345)의 어레이로부터의 단일 액세스는 1 메가바이트의 데이터 이상을 포함할 수 있다.
플래시 메모리 디바이스(345)의 어레이로부터 판독 버퍼(124)내의 영역(324)으로 이러한 거대한 양의 데이터를 전송하는 것은 오랜 시간이 걸릴 뿐만 아니라 특히, 판독 퍼버(124)가 상이한 가입자로의 스트리밍에 대한 콘텐츠를 저장하는 경우 판독 버퍼(124)의 크기가 상당히 클 것을 요청한다. 이러한 문제의 하나 또는 모두를 해결하기 위해, 메모리 제어기(120)는 전체 블록보다 더 적어지도록 각각의 액세스를 트렁케이트(truncate)할 수 있다. 즉, 판독 동작은 플래시 메모리 디바이스(345)의 어레이의 특정 어드레스로부터 수행될 수 있고, 미리 트렁케이트될 수 있다. 이것은 플래시 메모리 디바이스(345)의 메모리 서브시스템 어레이가 판독 데이터의 세분성(granularity)을 개선함과 동시에 플래시 메모리 디바이스(345)의 어레이로부터 액세스된 데이터의 전체 페이지를 클록킹 아웃(clocking out)하지 않고 판독 동작을 수행하는데 소요되는 시간을 감소시킬 수 있도록 한다. NAND 기반 플래시 메모리 디바이스는 판독 트렁케이션를 지원하고, 여기 개시된 일 실시예에서 이용될 수 있다.
메모리 제어기(120)는 각각의 블록 액세스를 개시할 수 있고, 플래시 메모리 디바이스(345)의 어레이로부터 데이터 판독을 위한 버스트 크기를 25%로 설정할 수 있다. 블록 액세스의 블록 판독 국면동안, 플래시 메모리 디바이스(345)의 어레이내의 데이터가 이용가능한 후에(예컨대, 메모리 디바이스의 대응하는 센스 증폭기로부터 판독되는 경우), 메모리 제어기(120)는 데이터의 이용가능 블록의 부분(예컨대, 본 예에서는 25%)만을 액세스한다. 따라서, 본 예와 관련해서, 메모리 제어기(120)는 플래시 메모리 디바이스(345)의 어레이내의 각각의 플래시 메모리 디바이스로부터 이용가능한 2 킬로바이트의 데이터를 액세스하지 않게 된다. 대신에, 메모리 제어기(120)는 판독 버퍼(124)내의 적절한 영역으로 전송하기 위해 플래시 디바이스마다 2킬로바이트의 1/4(예컨대, 512바이트)만을 액세스하고 전송한다. 버스트 크기를 25%로 설정하는 것에 기초하여, 메모리 제어기(120)는 플래시 메모리 디바이스(345)의 어레이로부터 이용가능한 1 메가바이트의 1/4(예컨대, 512 플래시 메모리 디바이스를 지나 스트립됨)을 전송한다. 따라서, 여기서의 실시예는 플래시 메모리 디바이스(345)의 어레이로부터 데이터 블록의 판독을 개시하고, 메모리 디바이스의 어레이로부터 검색을 위해 데이터 블록이 이용가능한후에, 모든 데이터 블록을 검색하는 대신에 데이터 블록의 단지 일부만을 검색하기 위해 판독을 트렁케이트하고, 데이터 블록의 일부의 주문형 스트리밍을 위해 할당된 판독 버퍼(124)의 영역(324) 내의 데이터 블록의 검색된 부분을 각각의 가입자 목적지에 저장하는 것을 포함한다. 여기 개시된 절차는 전체 메모리 서브시스템의 프로세스량을 제한하지만 설계는 실용적이 되도록 한다. 버퍼 크기와 전체 프로세스량간에 트레이드오프가 된다.
콘텐츠를 플래시 메모리 디바이스(345)의 어레이에 기입하는 것은 구 데이터를 소거하고, 그 후 새로운 데이터를 플래시 메모리 디바이스(345)의 어레이에 기입하는 것을 필요로 할 수 있다. 메모리 디바이스(345)의 어레이로부터 판독 퍼버(124)로 데이터의 전송과 기입 버퍼(122)로부터 플래시 메모리 디바이스(345)의 어레이로의 데이터의 전송을 인에이블 하는 중에, 메모리 제어기(120)는 플래시 메모리 디바이스(345)의 어레이 내에 저장된 데이터가 수정될 수 있는 수정 모드를 인에이블할 수 있다. 예컨대, 메모리 제어기(120)는 메모리 디바이스(345)의 어레이 내의 특정 위치에 저장되는 데이터의 새로운 페이지를 수신할 수 있다. 새로운 페이지의 수신에 응답하여, 메모리 제어기(120)는, 새로운 페이지로 재기입되는 메모리 디바이스의 어레이 내의 위치에 저장되는 현재 페이지를 포함하는 인접한 페이지의 범위를 검색한다. 로컬 버퍼에서, 메모리 제어기(120)는 복수 페이지의 검색된 범위 내의 현재 페이지를 새로운 페이지로 교체한다. 메모리 제어기(120)는 인접 페이지의 이전에 검색된 범위의 소거를 개시한다. 소거 후에, 수정 모드 동안, 메모리 제어기(120)는 특정 위치에 기입된 페이지를 제외하고 복수의 검색된 페이지의 저장을 개시한다. 본 예에서, 새로운 페이지는 구 페이지보다는 특정 위치에 기입된다.
따라서, 여기서의 실시예는 다른 페이지의 데이터를 잃어버리지 않고 64페이지의 블록 내에 몇몇 데이터의 페이지를 기입하여 플래시 메모리 내에서 효율적인 데이터의 수정을 지원한다. 예컨대, 전술한 실시예에 따르면, 메모리 제어기(120)는 버퍼로의 64페이지를 판독할 수 있고, 액세스된 64 페이지 블록을 소거할 수 있 고, 플래시 메모리 디바이스(345)의 어레이로 블록을 다시 기입하기 위한 목적을 위해 어느 하나의 새로운 페이지와 구 페이지를 결합할 수 있다.
도 4는 일 실시예에 따른 하나 이상의 프로세싱 기능(예컨대, 메모리 제어기 프로세싱 기능)을 구현하는 샘플 아키텍쳐를 도시하는 도면이다. 예컨대, 도시된 바와 같이, 콘텐츠 관리기(105)는, 프로세서(313) 및 본 명세서에 기술된 실시예를 수행할 수 있는 대응하는 소프트웨어 코드(예컨대, 메모리 제어기 애플리케이션 120-2)를 포함하는 각각의 컴퓨터 시스템 내에 구현될 수 있다. 전술한 바와 같이, 도 4에 도시된 바와 같은 실시예에 대한 대안으로서, 메모리 제어기(120) 및 콘텐츠 관리기(105)는 로직 게이트, 버퍼 등과 같은 하드웨어 콤포넌트, 또는 적절한 유형의 하드웨어 및 소프트웨어 자원 모두의 조합을 통해 구현될 수 있다.
도 4에 도시된 바와 같이, 본 발명의 콘텐츠 관리기(105)(예컨대, 컴퓨터 시스템)는 메모리 시스템(312), 프로세서(313), 입출력 인터페이스(314)를 연결하는 상호접속(311)을 포함한다. 입출력 인터페이스(314)는 콘텐츠 관리기(105)가 기입 버퍼(122), 메모리 디바이스(145), 판독 버퍼(124), 및 호스트 시스템(115)과 액세스 및/또는 통신하도록 한다.
메모리 시스템(312)은, 기입 버퍼(122)와 메모리 디바이스(145)간의 데이터의 전송, 메모리 디바이스(145)와 판독 버퍼(124)간의 데이터의 전송을 조정하고, 호스트 시스템(115)과 통신하는 기능을 지원하는 메모리 제어기 애플리케이션(120-1)으로 인코딩된다. 메모리 제어기 애플리케이션(120-1)은 여기 개시된 상이한 실시예에 따른 프로세스 기능을 지원하는 데이터 및/또는 로직 안스트럭션(예컨대, 메모리 또는 디스크와 같은 다른 컴퓨터 판독가능 매체에 저장된 코드)과 같은 소프트웨어 코드로서 구현될 수 있다. 동작중에, 프로세서(313)는 메모리 제어기 애플리케이션(120-1)의 로직 인스트럭션을 시작, 운용, 실행, 해석 또는 그렇지 않으면 수행하기 위해 상호접속(311)을 통해 메모리 시스템(312)에 액세스한다. 메모리 제어기 애플리케이션(120-1)의 실행은 메모리 제어기 프로세스(120-2)에서 프로세스 기능을 생성한다. 즉, 메모리 제어기 프로세스(120-2)는 도 1에서 기술된 바와 같이 메모리 제어기의 하나 이상의 부분을 나타낸다.
도 4에 도시된 컴퓨터 시스템 내에서 실행되는 메모리 제어기 애플리케이션(120-1)은 메모리 제어기 애플리케이션(120-1) 및/또는 메모리 제어기 프로세스(120-2) 중 하나 또는 양자 모두에 의해 표현될 수 있음을 유의한다. 설명을 위해, 여기 개시된 기술을 수행하기 위한 다양한 단계 및 기능 동작을 수행 또는 지원하는 것으로서 메모리 제어기(120)에 일반적인 참조 부호가 부여된다.
여기서의 예시적인 구성은 메모리 제어기 애플리케이션(120-1) 자신(즉, 실행되지 않는 또는 수행되지 않는 로직 인스트럭션 및/또는 데이터)을 포함한다는 것을 유의한다. 메모리 제어기 애플리케이션(120-1)은 컴퓨터 판독가능 매체(플로피 디스크등), 하드 디스크, 또는 광학 디스크에 저장될 수 있다. 메모리 제어기 애플리케이션(120-1)은 펌웨어, ROM, 또는 본 예에서, 예컨대, RAM내의 실행가능 코드 등과 같은 메모리 시스템(312) 내에 저장될 수 있다. 이러한 실시예에 부가하여, 다른 실시예는 메모리 제어기 프로세스(120-2)로서 프로세서(313) 내에서 메모리 제어기 애플리케이션(120-1)의 실행을 포함할 수 있음을 유의한다. 따라서, 당업자는 데이터 통신 디바이스는 여러 프로세스 및/또는 소프트웨어 및 여기 개시된 기능을 수행할 수 있는 하드웨어 콤포넌트를 포함할 수 있다는 것을 알 수 있다.
도 5는 본 실시예에 따른 플래시 또는 다른 형태의 메모리 디바이스(145)를 이용하여, 콘텐츠의 배포를 용이하게 하는 기술을 도시하는 플로우차트(500)이다. 도 1 내지 도 4와 마찬가지로, 도 5는 실시예에 관해 기술될 것임을 유의한다. 또한, 전술한 바와 같이, 메모리 제어기(120) 및 관련 기능은 하드웨어 및/또는 소프트웨어로 구현될 수 있음을 유의한다.
단계 510에서, 메모리 제어기(120)는 콘텐츠 스트림(202)과 같은 콘텐츠 스트림의 특정 부분에 대한 요청을 수신한다.
단계 520에서, 요청의 수신에 응답해서, 메모리 제어기(120)는 메모리 디바이스(145)(예를 들면, 플래시 메모리 디바이스의 어레이)로부터 데이터 블록(예컨대, 데이터의 다중 바이트)의 액세스를 개시한다. 메모리 제어기(120)에 의해 액세스된 데이터 블록은 호스트 시스템(115)에 의해 요청된 콘텐츠 스트림(202)의 특정 부분뿐만 아니라, 콘텐츠 스트림의 대응하는 인접 부분도 포함할 수 있다. 즉, 호스트 시스템(115)은 메모리 디바이스(145) 내의 콘텐츠 스트림(202)의 세그먼트(SEG100)를 요청할 수 있다. 이 요청에 응답하여, 호스트 시스템(115)이 판독 버퍼(122) 내의 스토리지에 대한 SEG100만의 검색 및 네트워크(150)를 통한 대응 가입자로의 장래 전송(future transmission)을 요청하더라도, 메모리 제어기(120)는 SEG100 내지 SEG150을 포함하는 메모리 디바이스(145)로부터 데이터 블록의 액 세스를 개시할 수 있다.
단계 530에서, 메모리 제어기(120)는 사용자 도메인(190-1)에서 가입자와 같은 각 목적지로의 주문형 스트리밍을 위해서 판독 버퍼(124) 내에 액세스된 데이터 블록(예를 들면, SEG100 내지 SEG112)의 전부(예를 들면, SEG100 내지 SEG150) 또는 일부(예를 들면, 액세스가 트렁케이트되는 경우 25%)를 저장한다. 단계 540에서, 메모리 제어기(120)는 호스트 시스템(115)을 통한 요청에 의해 특정되는 콘텐츠 스트림 특정 부분의 각 가입자 목적지로의 전송을 개시한다.
도 6 및 도 7이 결합되어, 본 실시예에 따른 데이터 전송 조정 및 데이터 배포 기술을 도시하는 플로우차트(600)(예를 들면, 플로우차트 600-1 및 플로우차트 600-2)를 형성한다.
도 6의 플로우차트(600-1)의 단계 610에서, 메모리 제어기(120)는 메모리 디바이스(145)에 저장된 콘텐츠 스트림(202)과 같은 콘텐츠 스트림의 특정 부분에 대한 요청을 호스트 시스템(115)으로부터 수신한다. 호스트 시스템(115)으로부터의 요청은, 가입자가 콘텐츠 스트림을 보기 위해 명령을 호스트 시스템(115) 전송하는 것에 응답하여 발생할 수 있다. 일 실시예에서, 가입자는 메모리 디바이스(145)에 저장된 콘텐츠의 목록으로부터 콘텐츠 스트림(예컨대, 영화)을 선택한다.
단계 615에서, 제1 요청의 수신에 응답하여, 메모리 제어기(120)는 (플래시 기반) 메모리 디바이스(145)(의 어레이)로부터 데이터 블록(예컨대, 데이터의 다중 바이트)의 액세스를 개시한다. 액세스되는 데이터 블록은 메모리 제어기(120)에 의해 요청된 콘텐츠 스트림의 특정 부분뿐만 아니라, 가입자가 보게 될, 호스트 시 스템(115)으로부터 포워드되는 콘텐츠 스트림의 대응하는 인접 부분을 포함한다.
단계 615와 관련된 보조 단계 620에서, 메모리 제어기(120)는 플래시 메모리 디바이스(145)의 어레이로부터 데이터 블록의 판독을 시작한다.
단계 615와 관련된 보조 단계 625에서, 데이터 블록이 메모리 디바이스(145)로부터의 검색에 이용가능하게 된 이후, 메모리 제어기는 메모리 디바이스(145)로부터의 데이터 블록 모두를 검색하는 대신에 메모리 디바이스(145)로부터의 각 데이터 판독을 트렁케이트하여 데이터 블록의 일부(예를 들면, 데이터 블록의 25%)를 검색한다. 즉, 상술한 바와 같이, 메모리 제어기(120)는 메모리 제어기(120)가 실제로 판독 버퍼(124)로 전송하는 것보다 큰 데이터 블록을 메모리 디바이스로부터 요청할 수 있다. 이는 메모리 디바이스(145) 내의 데이터를 판독 버퍼(124)로 전송하기 위해 액세스 수의 증가를 요청할 수 있다. 그러나, 판독 버퍼(124) 내의 더 작은 데이터 부분을 전송 및 저장하는 것은, 판독 버퍼(124)를 구현하는데 사용되어야 하는 RAM 기반 스토리지의 양을 감소시킨다.
단계 630에서, 메모리 제어기(120)는 사용자 도메인(190)과 같은 각 목적지로의 주문형 스트리밍을 위해, 메모리 디바이스(145)로부터 액세스된 데이터 블록의 적어도 일부를 판독 버퍼(124)에 저장한다.
단계 635에서, 메모리 제어기(120)는 요청에 의해 특정되는 콘텐츠 스트림의 특정 부분을 호스트 시스템(115)을 통해 각 가입자 목적지로 전송하는 것을 개시한다.
단계 640에서, 메모리 제어기(120)는 콘텐츠 스트림(202)의 상이한 또는 다 른 부분에 대한 다른 요청(예를 들면, 제2 요청)을 수신한다.
단계 645에서, 메모리 제어기(120)는 판독 버퍼로부터 호스트 시스템(115)으로 새로이 요청된 콘텐츠의 부분을 전송하는 것을 시작한다. 이 경우, 판독 버퍼(124)는 일반적으로 호스트 시스템(115)에 의해 요청된 콘텐츠 세그먼트를 저장하기 때문에, 캐시 히트(cache hit)(예를 들면, 판독 버퍼(124)가 캐시임)로 존재한다.
단계 650에서, 상술한 바와 같이, 메모리 디바이스(145)로부터 판독 버퍼(124)로 데이터를 이동시키는 전송 동작을 인에이블시킴과 동시에, 메모리 제어기(120)는 또한 메모리 디바이스(145)의 어레이 내의 종국적인 저장을 위해 수신된 데이터를 일시적으로 저장하는 기입 버퍼(122)를 유지한다.
단계 655에서, 기입 버퍼(122) 내의 수신 데이터가 임계값을 초과하는지를 검출한 것에 응답하여, 메모리 제어기(120)는, ⅰ) 메모리 디바이스(145)의 어레이로부터 기입 버퍼(124)로의 데이터의 액세스(전송)을 디스에이블하게 하고, ⅱ) 기입 버퍼(124)에 저장된 수신 데이터(네비게이션 포인터의 세트를 포함하거나 제외함)를 메모리 디바이스(145)의 어레이로 전송하는 것을 개시하며, ⅲ) 전송하는 동안, 기입 버퍼(124)로부터 각 목적지로 하나 이상의 콘텐츠 스트림의 스트리밍을 가능하여, 가입자들이 중단되지 않는 영화를 시청할 수 있으며, ⅳ) 전송 후, 메모리 디바이스(145)의 어레이에 저장된 데이터의 기입 버퍼(124)로의 전송을 다시 개시한다.
논의한 바와 같이, 본 명세서의 기술은 플래시 기반 메모리 디바이스에 저장 된 콘텐츠의 배포와 같은 애플리케이션에서의 사용에 적합하다. 그러나, 본 명세서에서의 구성은 그러한 애플리케이션에 한정되지 않으므로, 본 발명의 구성 및 그 변경은 다른 애플리케이션에도 적합함에 유의해야 한다.
본 발명은, 바람직한 실시예를 참조하여 특별히 도시되고 기술되었지만, 첨부된 특허청구범위에 의해 정의된 바와 같이 본 발명의 사상 및 범주로부터 벗어나지 않고 다양한 형태 및 세부사항의 변경이 가능하다는 것이 해당 기술분야의 당업자에 의해 이해될 것이다. 따라서, 본 발명의 실시예에 대한 상기 설명은 본 발명을 한정하고자 하는 것이 아니다. 오히려, 본 발명의 실시예에 대한 소정의 한정은 후속하는 특허청구범위에 나타난다.
도 1은 본 발명의 실시예에 따른 예시적 콘텐츠 관리자를 도시한 도면이다.
도 2는 본 발명의 실시예에 따른 과거 및 미래의 세그먼트들을 포인팅하는 다중 포인터 세트를 포함하는 예시적 데이터 스트림의 도면이다.
도 3은 본 발명의 실시예에 따라 스트리밍 콘텐츠를 버퍼링하는 예를 도해한 도면이다.
도 4는 본 발명의 실시예에 따른 메모리 제어기의 예시적 아키텍처의 도면이다.
도 5는 본 발명의 실시예에 따라 콘텐츠를 버퍼링하고 분배하는 기술을 도해한 플로우차트이다.
도 6 및 도 7은 함께 본 발명에 따라 콘텐츠를 버퍼링하고 분배하는 특정 기술을 도해하는 플로우차트를 형성하는 도면들이다.
<도면의 주요 부분에 대한 부호의 설명>
105: 콘텐츠 관리자
109: 메모리 스트림 변경자
115: 호스트 시스템
120: 메모리 제어기
122: 기입 버퍼
124: 판독 버퍼
145: 메모리 디바이스의 어레이
312: 메모리
313: 프로세서
345: 메모리 디바이스의 어레이

Claims (23)

  1. 콘텐츠 스트림의 특정 부분에 대한 제1 요청을 수신하는 단계와,
    상기 제1 요청의 수신에 응답하여, 메모리 디바이스의 어레이로부터 데이터 블록의 액세스를 개시하는 단계 - 상기 데이터 블록은 상기 콘텐츠 스트림의 특정 부분과, 상기 콘텐츠 스트림의 대응하는 인접 부분을 포함함 -와,
    상기 액세스된 데이터 블록의 적어도 일부를, 각각의 목적지로의 주문형 스트리밍(on-demand streaming)을 위한 판독 버퍼에 저장하는 단계와,
    상기 콘텐츠 스트림의 특정 부분을 상기 각각의 목적지로 전송을 개시하는 단계를 포함하는 방법.
  2. 제1항에 있어서, 상기 메모리 디바이스의 어레이로부터 상기 데이터 블록의 액세스를 개시하는 단계는, 상기 제1 요청에 의해 특정되는 데이터보다 상기 메모리 디바이스의 어레이로부터 더 많은 데이터를 검색하는 단계를 포함하며,
    상기 데이터 블록의 적어도 일부를 저장하는 단계는, 상기 제1 요청에 의해 특정되는 데이터보다 상기 메모리 디바이스의 어레이로부터 검색되는 더 많은 데이터를 판독 버퍼에 저장하는 단계를 포함하는 방법.
  3. 제2항에 있어서, 상기 콘텐츠 스트림의 다른 부분에 대한 제2 요청을 수신하는 단계와,
    상기 판독 버퍼로부터 콘텐츠의 다른 부분의 전송을 개시하는 단계를 더 포함하며,
    상기 콘텐츠 스트림의 다른 부분은 상기 판독 버퍼에 저장된 상기 데이터 블록의 일부에 포함되는 방법.
  4. 제3항에 있어서, 상기 메모리 디바이스의 어레이로부터 상기 데이터 블록의 액세스를 개시하는 단계는,
    상기 메모리 디바이스의 어레이로부터 상기 데이터 블록의 판독을 개시하는 단계와,
    상기 데이터 블록이 상기 메모리 디바이스의 어레이로부터 검색을 위해 이용가능하게 된 후, 상기 데이터 블록 모두를 검색하는 대신에, 상기 데이터 블록의 일부를 검색하도록 각각의 판독을 트렁케이트(truncate)하는 단계와,
    상기 데이터 블록의 일부를 상기 판독 버퍼에 저장하는 단계를 포함하는 방법.
  5. 제1항에 있어서, 상기 메모리 디바이스의 어레이로부터 상기 데이터 블록의 액세스를 개시하는 단계는,
    상기 메모리 디바이스의 어레이로부터 상기 데이터 블록의 판독을 개시하는 단계와,
    상기 데이터 블록이 상기 메모리 디바이스의 어레이로부터 검색을 위해 이용 가능하게 된 후, 상기 데이터 블록 모두를 검색하는 대신에, 상기 데이터 블록의 일부를 검색하도록 상기 판독을 트렁케이트하는 단계와,
    상기 각각의 목적지로 향하는 상기 데이터 블록의 일부의 주문형 스트리밍에 할당된 상기 판독 버퍼의 영역에 상기 데이터 블록의 일부를 저장하는 단계를 포함하는 방법.
  6. 제1항에 있어서,
    상기 메모리 디바이스의 어레이로부터 상기 판독 버퍼로 데이터의 전송을 인에이블하면서, 상기 메모리 디바이스의 어레이에 최후 스토리지(eventual storage)에 대한 수신 데이터를 임시로 저장하기 위한 기입 버퍼를 유지하는 단계와,
    상기 수신된 데이터가 임계값을 초과했다는 검출에 응답하여,
    ⅰ) 상기 메모리 디바이스의 어레이로부터 상기 판독 버퍼로 데이터의 액세스를 디스에이블하는 단계와,
    ⅱ) 상기 기입 버퍼에 저장된 수신 데이터를 상기 메모리 디바이스의 어레이로 전송을 개시하는 단계와,
    ⅲ) 상기 전송 동안, 상기 판독 버퍼 내의 상기 콘텐츠 스트림의 특정 부분을 상기 목적지 각각으로 스트리밍하는 단계와,
    ⅳ) 상기 전송 후, 상기 메모리 디바이스의 어레이에 저장된 데이터를 상기 판독 버퍼에 다시 전송하는 것을 인에이블하는 단계를 더 포함하는 방법.
  7. 제1항에 있어서,
    상기 메모리 디바이스의 어레이로부터 상기 판독 버퍼로 데이터의 전송을 인에이블하는 중에, 상기 메모리 디바이스의 어레이에 저장된 데이터가 수정될 수 있는 수정 모드를 인에이블하는 단계와,
    상기 메모리 디바이스의 어레이 내의 각각의 위치에 저장될 데이터의 새로운 페이지를 수신하는 단계와,
    상기 메모리 디바이스의 어레이 내의 상기 위치에 저장된 현재 페이지를 포함하는 복수의 페이지의 범위를 검색하는 단계와,
    상기 검색된 복수 페이지의 범위 내의 상기 현재 페이지를 상기 새로운 페이지로 대체하는 단계와,
    상기 수정 모드 동안, 새로운 페이지를 포함하는 상기 복수의 페이지를 상기 메모리 디바이스의 어레이로 스토리지를 개시하여, 상기 새로운 페이지가 상기 메모리 디바이스의 어레이 내의 각각의 위치에 저장되는 단계를 더 포함하는 방법.
  8. 제7항에 있어서, 새로운 페이지를 포함하는 상기 복수의 페이지를 상기 메모리 디바이스의 어레이로 스토리지를 개시하는 단계는, 상기 메모리 디바이스의 어레이로부터 상기 현재 페이지를 포함하는 상기 복수의 페이지를 소거하는 단계를 포함하는 방법.
  9. 제1항에 있어서, 상기 데이터 블록의 액세스를 개시하는 단계는, 데이터가 저장된 복수의 바이트의 블록 액세스를 지원하는 플레시 메모리 디바이스의 어레이를 액세스하는 단계를 포함하는 방법.
  10. 제9항에 있어서, 상기 액세스된 데이터 블록의 적어도 일부를 저장하는 단계는, 상기 액세스된 데이터 블록의 일부를 RAM-기저 스토리지(Random Access Memory-based storage)에 저장하는 단계를 포함하는 방법.
  11. 제10항에 있어서,
    재생할 수 있는 비디오 데이터의 적어도 하나의 로직 그룹핑을 인접 방식으로 저장하기 위해 상기 플래시 메모리 디바이스의 어레이를 유지하는 단계와,
    네트워크를 통해 다른 목적지 각각으로의 스트리밍을 위한 상기 적어도 하나의 로직 그룹핑의 다른 대응하는 세그먼트를 저장하기 위해 상기 RAM-기반 스토리지의 일부를 할당하는 단계와,
    상기 다른 대응하는 세그먼트가 상기 각각의 목적지로 스트리밍될 때, 상기 비디오 데이터의 적어도 하나의 로직 그룹핑의 새로운 세그먼트들 각각에 대한 상기 RAM-기반 스토리지의 일부를 갱신하는 단계를 더 포함하는 방법.
  12. 선택 및 페이스트 동작을 지원하는 컴퓨터 시스템으로서,
    프로세서와,
    상기 프로세서에 의해 실행되는 어플리케이션과 관련된 인스트럭션을 저장하 는 메모리 유닛과,
    상기 컴퓨터 시스템이, 콘텐츠 스트림의 특정 부분에 대한 제1 요청을 수신하고,
    상기 제1 요청의 수신에 응답하여, 메모리 디바이스의 어레이로부터 데이터 블록의 액세스를 개시하며 - 상기 데이터 블록은 상기 콘텐츠 스트림의 특정 부분과, 상기 콘텐츠 스트림의 대응하는 인접 부분을 포함함 -,
    상기 액세스된 데이터 블록의 적어도 일부를, 목적지 각각으로의 주문형 스트리밍(on-demand streaming)을 위한 판독 버퍼에 저장하고,
    상기 콘텐츠 스트림의 특정 부분을 상기 각각의 목적지로 전송을 개시하는
    동작을 수행하고, 상기 어플리케이션을 실행할 수 있게 하는, 상기 프로세서 및 상기 메모리 유닛을 연결하는 상호접속부(interconnect)를 포함하는 컴퓨터 시스템.
  13. 제12항에 있어서, 상기 메모리 디바이스의 어레이로부터 상기 데이터 블록의 액세스를 개시하는 동작은, 상기 제1 요청에 의해 특정되는 데이터보다 상기 메모리 디바이스의 어레이로부터 더 많은 데이터를 검색하는 동작을 포함하며,
    상기 데이터 블록의 적어도 일부를 저장하는 동작은, 상기 제1 요청에 의해 특정되는 데이터보다 상기 메모리 디바이스의 어레이로부터 검색되는 더 많은 데이터를 판독 버퍼에 저장하는 동작을 포함하는 컴퓨터 시스템.
  14. 제13항에 있어서, 상기 콘텐츠 스트림의 다른 부분에 대한 제2 요청을 수신하는 동작과,
    상기 판독 버퍼로부터 콘텐츠의 다른 부분의 전송을 개시하는 동작을 더 지원하며,
    상기 콘텐츠 스트림의 다른 부분은 상기 판독 버퍼에 저장된 상기 데이터 블록의 일부에 포함되는 컴퓨터 시스템.
  15. 제14항에 있어서, 상기 메모리 디바이스의 어레이로부터 상기 데이터 블록의 액세스를 개시하는 동작은,
    상기 메모리 디바이스의 어레이로부터 상기 데이터 블록의 판독을 개시하는 동작과,
    상기 데이터 블록이 상기 메모리 디바이스의 어레이로부터 검색을 위해 이용가능하게 된 후, 상기 데이터 블록 모두를 검색하는 대신에, 상기 데이터 블록의 일부를 검색하도록 상기 판독을 트렁케이트하는 동작과,
    상기 데이터 블록의 일부를 상기 판독 버퍼에 저장하는 동작을 포함하는 컴퓨터 시스템.
  16. 제13항에 있어서, 상기 메모리 디바이스의 어레이로부터 상기 데이터 블록의 액세스를 개시하는 동작은,
    상기 메모리 디바이스의 어레이로부터 상기 데이터 블록의 판독을 개시하는 동작과,
    상기 데이터 블록이 상기 메모리 디바이스의 어레이로부터 검색을 위해 이용가능하게 된 후, 상기 데이터 블록 모두를 검색하는 대신에, 상기 데이터 블록의 일부를 검색하도록 상기 판독을 트렁케이트하는 동작과,
    상기 목적지 각각으로 향하는 상기 데이터 블록의 일부의 주문형 스트리밍에 할당된 상기 판독 버퍼의 영역에 상기 데이터 블록의 일부를 저장하는 동작을 포함하는 컴퓨터 시스템.
  17. 제13항에 있어서, 상기 메모리 디바이스의 어레이로부터 상기 판독 버퍼로 데이터의 전송을 인에이블 하면서, 상기 메모리 디바이스의 어레이에 최후 스토리지(eventual storage)에 대한 수신 데이터를 임시로 저장하기 위한 기입 버퍼를 유지하는 동작과,
    수신된 데이터가 임계값을 초과했다는 검출에 응답하여,
    ⅰ) 상기 메모리 디바이스의 어레이로부터 상기 판독 버퍼로 데이터의 액세스를 디스에이블하는 동작과,
    ⅱ) 상기 기입 버퍼에 저장된 수신 데이터를 상기 메모리 디바이스의 어레이로 전송을 개시하는 동작과,
    ⅲ) 상기 전송 동안, 상기 판독 버퍼 내의 상기 콘텐츠 스트림의 특정 부분을 상기 목적지 각각으로 스트리밍하는 동작과,
    ⅳ) 상기 전송 후, 상기 메모리 디바이스의 어레이에 저장된 데이터를 상기 판독 버퍼에 다시 전송하는 것을 인에이블하는 동작을 더 지원하는 컴퓨터 시스템.
  18. 제13항에 있어서, 상기 메모리 디바이스의 어레이로부터 상기 판독 버퍼로 데이터의 전송을 인에이블하는 중에, 상기 메모리 디바이스의 어레이에 저장된 데이터가 수정될 수 있는 수정 모드를 인에이블하는 동작과,
    상기 메모리 디바이스의 어레이 내의 각각의 위치에 저장될 데이터의 새로운 페이지를 수신하는 동작과,
    상기 메모리 디바이스의 어레이 내의 상기 위치에 저장된 현재 페이지를 포함하는 복수의 페이지의 범위를 검색하는 동작과,
    상기 검색된 복수 페이지의 범위 내의 상기 현재 페이지를 상기 새로운 페이지로 대체하는 동작과,
    상기 수정 모드 동안, 새로운 페이지를 포함하는 상기 복수의 페이지를 상기 메모리 디바이스의 어레이로 스토리지를 개시하여, 상기 새로운 페이지가 상기 메모리 디바이스의 어레이 내의 각각의 위치에 저장되는 동작을 더 지원하는 컴퓨터 시스템.
  19. 제18항에 있어서, 새로운 페이지를 포함하는 상기 복수의 페이지를 상기 메모리 디바이스의 어레이로 스토리지를 개시하는 동작은, 상기 메모리 디바이스의 어레이로부터 상기 현재 페이지를 포함하는 상기 복수의 페이지를 소거하는 동작을 포함하는 컴퓨터 시스템.
  20. 제13항에 있어서, 상기 데이터 블록의 액세스를 개시하는 동작은, 데이터가 저장된 복수의 바이트의 블록 액세스를 지원하는 플레시 메모리 디바이스의 어레이를 액세스하는 동작을 포함하는 컴퓨터 시스템.
  21. 제20항에 있어서, 상기 액세스된 데이터 블록의 적어도 일부를 저장하는 동작은, 상기 액세스된 데이터 블록의 일부를 RAM-기저 스토리지에 저장하는 동작을 포함하는 컴퓨터 시스템.
  22. 제21항에 있어서,
    재생할 수 있는 비디오 데이터의 적어도 하나의 로직 그룹핑을 인접 방식으로 저장하기 위해 상기 플래시 메모리 디바이스의 어레이를 유지하는 동작과,
    네트워크를 통해 다른 목적지 각각으로의 스트리밍을 위한 상기 적어도 하나의 로직 그룹핑의 다른 대응하는 세그먼트를 저장하기 위해 상기 RAM-기반 스토리지의 일부를 할당하는 동작과,
    상기 다른 대응하는 세그먼트가 상기 각각의 목적지로 스트리밍될 때, 상기 비디오 데이터의 적어도 하나의 로직 그룹핑의 새로운 세그먼트들 각각에 대한 상기 RAM-기반 스토리지의 일부를 갱신하는 동작을 더 지원하는 컴퓨터 시스템.
  23. 콘텐츠 스트림의 특정 부분에 대한 요청을 수신하는 수단과,
    상기 요청의 수신에 응답하여, 메모리 디바이스의 어레이로부터 데이터 블록의 액세스를 개시하는 수단 - 상기 데이터 블록은 상기 콘텐츠 스트림의 특정 부분과, 상기 콘텐츠 스트림의 대응하는 인접 부분을 포함함 -과,
    상기 액세스된 데이터 블록의 적어도 일부를, 각 목적지로의 주문형 스트리밍(on-demand streaming)에 대한 판독 버퍼에 저장하는 수단과,
    상기 콘텐츠 스트림의 특정 부분을 상기 각각의 목적지로 전송을 개시하는 수단을 포함하는 시스템.
KR1020080004096A 2007-01-12 2008-01-14 데이터 배포 및 버퍼링 KR101121479B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/652,924 US7924456B1 (en) 2007-01-12 2007-01-12 Data distribution and buffering
US11/652,924 2007-01-12

Publications (2)

Publication Number Publication Date
KR20080066625A true KR20080066625A (ko) 2008-07-16
KR101121479B1 KR101121479B1 (ko) 2012-02-28

Family

ID=39531035

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020080004096A KR101121479B1 (ko) 2007-01-12 2008-01-14 데이터 배포 및 버퍼링

Country Status (5)

Country Link
US (1) US7924456B1 (ko)
JP (1) JP4754585B2 (ko)
KR (1) KR101121479B1 (ko)
CN (1) CN101242520B (ko)
DE (1) DE102008003894B4 (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8964013B2 (en) * 2009-12-31 2015-02-24 Broadcom Corporation Display with elastic light manipulator
US9247286B2 (en) 2009-12-31 2016-01-26 Broadcom Corporation Frame formatting supporting mixed two and three dimensional video data communication
CN102136289B (zh) * 2010-12-30 2013-03-13 华为技术有限公司 一种媒体内容的存储方法、读取方法、装置和系统
CN102130960B (zh) 2011-03-23 2013-10-09 华为技术有限公司 一种媒体流化的方法和媒体控制器
US8762452B2 (en) * 2011-12-19 2014-06-24 Ericsson Television Inc. Virtualization in adaptive stream creation and delivery
CN102547385A (zh) * 2011-12-29 2012-07-04 深圳市同洲视讯传媒有限公司 一种分布式推流的方法、装置及系统

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2146472C (en) * 1994-04-22 2007-10-09 Kevin Elliott Bridgewater Packet video signal inverse transport processor with memory address circuitry
US6138147A (en) * 1995-07-14 2000-10-24 Oracle Corporation Method and apparatus for implementing seamless playback of continuous media feeds
US6067108A (en) * 1996-12-12 2000-05-23 Trw Inc. Solid-state mass storage data stream generator
JP3173418B2 (ja) 1997-04-18 2001-06-04 日本電気株式会社 ストリーム再生制御方式及びプログラムを記録した機械読み取り可能な記録媒体
JP3396639B2 (ja) * 1998-09-30 2003-04-14 株式会社東芝 階層記憶装置及び階層記憶制御方法
KR100746842B1 (ko) * 1999-03-23 2007-08-09 코닌클리케 필립스 일렉트로닉스 엔.브이. 멀티미디어 서버
US6785704B1 (en) 1999-12-20 2004-08-31 Fastforward Networks Content distribution system for operation over an internetwork including content peering arrangements
US7096481B1 (en) 2000-01-04 2006-08-22 Emc Corporation Preparation of metadata for splicing of encoded MPEG video and audio
CN1159913C (zh) * 2001-02-13 2004-07-28 中广大正信息科技有限公司 在有线电视单向网上实现视频随选点播的芯片
US20020169926A1 (en) 2001-04-19 2002-11-14 Thomas Pinckney Systems and methods for efficient cache management in streaming applications
EP1283639B1 (en) * 2001-08-10 2007-05-02 Broadbus Technologies, Inc. Methods and apparatus for reproducing prerecorded and live works stored on a server
JP2003060638A (ja) * 2001-08-15 2003-02-28 Sony Corp コンテンツ提供装置及びコンテンツ提供方法
CN1142660C (zh) * 2001-11-06 2004-03-17 四川大学 流式播放视频服务器系统
US20030095783A1 (en) 2001-11-21 2003-05-22 Broadbus Technologies, Inc. Methods and apparatus for generating multiple network streams from a large scale memory buffer
JP3676330B2 (ja) 2002-08-09 2005-07-27 エヌ・ティ・ティ・コムウェア株式会社 コンテンツ配信サーバ及びコンテンツ配信方法ならびにプログラム
US7809252B2 (en) 2003-04-09 2010-10-05 Corel Inc. Systems and methods for caching multimedia data
JP2006285809A (ja) * 2005-04-04 2006-10-19 Hitachi Ltd ストリーミング向け性能保証を行うストレージ装置
KR100895859B1 (ko) * 2005-05-18 2009-05-06 니폰덴신뎅와 가부시키가이샤 분산형 멀티미디어 서버 시스템 및 멀티미디어 정보분배방법

Also Published As

Publication number Publication date
KR101121479B1 (ko) 2012-02-28
DE102008003894A1 (de) 2008-07-24
DE102008003894B4 (de) 2021-07-29
JP4754585B2 (ja) 2011-08-24
CN101242520B (zh) 2012-04-04
CN101242520A (zh) 2008-08-13
US7924456B1 (en) 2011-04-12
JP2008234629A (ja) 2008-10-02

Similar Documents

Publication Publication Date Title
US10405048B2 (en) Methods and apparatus for supporting VOD requests in a system with hierarchical content stores
Gemmell et al. Multimedia storage servers: A tutorial
KR101121479B1 (ko) 데이터 배포 및 버퍼링
US8578431B2 (en) Adaptive timeshift service
KR102274466B1 (ko) 실시간 캐싱 기법을 이용한 동영상 스트리밍 방법 및 그 시스템
JP2008262686A (ja) 同報通信データを記録するための方法、および、装置
US20240048792A1 (en) System and method for storing multimedia files using an archive file format
US20190265895A1 (en) Method and Device for Improving File System Write Bandwidth through Hard Disk Track Management
US20070294500A1 (en) Methods and system to provide references associated with data streams
US20160225407A1 (en) Full fidelity remote video editing
KR100982392B1 (ko) 저장 디바이스 캐시 메모리 관리
JP2005513645A6 (ja) 記憶装置キャッシュメモリマネージメント
US9229944B2 (en) Scalable networked digital video recordings via shard-based architecture
KR101295455B1 (ko) 동영상 파일의 분할저장 재생기법을 이용한 VoD 버퍼링방법 및 그 시스템

Legal Events

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

Payment date: 20150109

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20160113

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20170123

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20180111

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20200114

Year of fee payment: 9