DE69534248T2 - Mehrbenutzersystem für Datenspeicherung, -zugriff und -verteilung, mit verteilter Speicherung eines kontinuierlichen Datenstromes - Google Patents

Mehrbenutzersystem für Datenspeicherung, -zugriff und -verteilung, mit verteilter Speicherung eines kontinuierlichen Datenstromes Download PDF

Info

Publication number
DE69534248T2
DE69534248T2 DE69534248T DE69534248T DE69534248T2 DE 69534248 T2 DE69534248 T2 DE 69534248T2 DE 69534248 T DE69534248 T DE 69534248T DE 69534248 T DE69534248 T DE 69534248T DE 69534248 T2 DE69534248 T2 DE 69534248T2
Authority
DE
Germany
Prior art keywords
data
user
information storage
users
storage devices
Prior art date
Legal status (The legal status 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 status listed.)
Expired - Lifetime
Application number
DE69534248T
Other languages
English (en)
Other versions
DE69534248D1 (de
Inventor
L. Robert BLIEDT
Danny Chin
T. James KABA
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sedna Patent Services LLC
Original Assignee
Sedna Patent Services LLC
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 Sedna Patent Services LLC filed Critical Sedna Patent Services LLC
Application granted granted Critical
Publication of DE69534248D1 publication Critical patent/DE69534248D1/de
Publication of DE69534248T2 publication Critical patent/DE69534248T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • 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
    • H04N21/226Characteristics of the server or Internal components of the server
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • 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
    • H04N21/231Content storage operation, e.g. caching movies for short term storage, replicating data over plural servers, prioritizing data for deletion
    • H04N21/2312Data placement on disk arrays
    • H04N21/2318Data placement on disk arrays using striping
    • 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
    • H04N21/238Interfacing the downstream path of the transmission network, e.g. adapting the transmission rate of a video stream to network bandwidth; Processing of multiplex streams
    • H04N21/2387Stream processing in response to a playback request from an end-user, e.g. for trick-play
    • 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
    • H04N21/239Interfacing the upstream path of the transmission network, e.g. prioritizing client content requests
    • H04N21/2393Interfacing the upstream path of the transmission network, e.g. prioritizing client content requests involving handling client requests
    • H04N21/2396Interfacing the upstream path of the transmission network, e.g. prioritizing client content requests involving handling client requests characterized by admission policies
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/63Control signaling related to video distribution between client, server and network components; Network processes for video distribution between server and clients or between remote clients, e.g. transmitting basic layer and enhancement layers over different transmission paths, setting up a peer-to-peer communication via Internet between remote STB's; Communication protocols; Addressing
    • H04N21/637Control signals issued by the client directed to the server or network components
    • H04N21/6377Control signals issued by the client directed to the server or network components directed to server
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/65Transmission of management data between client and server
    • H04N21/658Transmission by the client directed to the server
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/65Transmission of management data between client and server
    • H04N21/658Transmission by the client directed to the server
    • H04N21/6587Control parameters, e.g. trick play commands, viewpoint selection
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/83Generation or processing of protective or descriptive data associated with content; Content structuring
    • H04N21/845Structuring of content, e.g. decomposing content into time segments
    • H04N21/8456Structuring of content, e.g. decomposing content into time segments by decomposing the content in the time domain, e.g. in time segments
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B2220/00Record carriers by type
    • G11B2220/40Combinations of multiple record carriers
    • G11B2220/41Flat as opposed to hierarchical combination, e.g. library of tapes or discs, CD changer, or groups of record carriers that together store one title
    • G11B2220/412Distributed storage methods, i.e. the system may autonomously determine for a storage device that provides enough storage capacity for recording

Description

  • Die Erfindung bezieht sich auf ein System zum Speichern und zum Zugreifen auf elektronische Daten und insbesondere auf ein Datenspeicherungs-, Wiedergewinnungs- und Verteilungssystem, um es einer Mehrzahl von Systembenutzern zu ermöglichen, unabhängig voneinander auf zuvor gespeicherte elektronische Datenströme zuzugreifen.
  • In herkömmlichen elektronischen Datenspeicherungs- und Wiedergewinnungssystemen werden Daten typischerweise in einer Bank oder Anordnung von Speicherelementen abgelegt, die von einer zentralen Verarbeitungseinheit (CPU) gesteuert wird. Typischweise sind die Speicherelemente eine Kombination von Halbleiterspeicher wie DRAM (dynamic random access memory) oder SRAM (static random access memory) und rotierendem Magnetplattenspeicher (Plattenlaufwerksspeicher) wie das "Winchester" Festplattenlaufwerk. Der Halbleiterspeicher wird zum Speichern von Daten benutzt, die einen unmittelbaren Zugriff durch die CPU erfordern, wohingegen der Festplattenlaufwerksspeicher typischerweise benutzt wird, um Daten zu speichern, auf die weniger häufig durch die CPU zugegriffen wird.
  • Typischerweise sind die mit der Benutzung von Halbleiterspeicher zum Speichern einer gegebenen Menge an Daten verknüpften Kosten um ein bis zwei Größenordnungen höher als bei der Benutzung von Plattenlaufwerksspeicher zum Speichern der gleichen Datenmenge. Jedoch bietet Halbleiterspeicher eine Datenlatenz, d.h. eine Zeitverzögerung zwischen der Anforderung der Daten vom Speicher durch die CPU bis zur tatsächlichen Verfügbarkeit der angeforderten Daten für die CPU, die typischerweise drei bis vier Größenordnungen kleiner ist als die mit einem Plattenlaufwerkspeicher verbundene Datenlatenz. Als solches ist Halbleiterspeicher bei Applikationen sein Geld wert, bei denen die Datenlatenz kritisch ist.
  • Weiterhin erfordert Plattenlaufwerkspeicher typischerweise einen Datenzugriff in blockserieller Form. Als solches ist typischerweise ein zufälliger Zugriff auf ein beliebiges Bit der gespeicherten Daten im Laufwerk nicht möglich. Auch kann ein Plattenlaufwerkspeicher als eine mechanische Vorrichtung mechanische Defekte erleiden und hat eine geringere Zuverlässigkeit als Halbleiterspeicher.
  • In Rechen- oder Datenwiedergewinnungssystemen, bei denen mehrere Benutzer simultan auf im System gespeicherte Daten zugreifen können, werden verschiedene Mittel benutzt, um die Datenanfragen jedes Benutzers seriell zu verarbeiten. Allgemein muss das System simulieren, dass jeder der Benutzer einen unabhängigen Zugang zu den Daten hat. Allgemein wird eine solche Simulation durch preemptive oder Round-Robin-Multitasking-Algorithmen erzielt. Eine System-CPU führt diese Algorithmen aus, welche typischerweise im Betriebssystem des Rechen- oder Datenwiedergewin nungssystems integriert sind. Die CPU überträgt seriell jedem Benutzer die Kontrolle über die Systemdaten in der Art nach "Round-Robin".
  • Um den sichtbaren Durchsatz eines Plattenspeichers zu erhöhen, benutzen viele Rechnersysteme miteinander verbundene und als eine einzige Platte agierende Plattenlaufwerke. Ein Datenblock wird über N Platten verteilt, sodass jede Platte 1/N des Blocks an ähnlicher Stelle speichert. Die Platten werden parallel adressiert, sodass nach der anfänglichen Latenz Daten von jeder Platte gelesen werden, um die zum Lesen des Blocks benötigte Zeit zu reduzieren. Dieser Zuwachs an Durchsatz erlaubt es dem Speichersystem viele zusätzliche Benutzer zu bedienen, wenn ein Multitasking-Algorithmus benutzt wird. Jedoch vervielfacht eine Betriebsweise für viele Benutzer die effektive Latenz. Wenn M Benutzer bedient werden, müsste eine Benutzeranfrage für Daten eines anderen Datenstroms in eine Warteschlange eingereiht werden, bis M – 1 Benutzer bearbeitet worden wären. Durchschnittlich wird die Latenz um einen Faktor M/2 zunehmen.
  • Um die Zahl der Benutzer bei gegebener effektiver Latenz zu erhöhen, kann ein System mehrere in einer parallelen Verarbeitungsarchitektur angeordnete CPUs einsetzen. Da in einem solchen Datenspeichersystem von jedem Prozessor eine einzige Anweisung benutzt wird um auf den jeweiligen Datenstrom eines jeden Prozessors einzuwirken wird typischerweise eine Computerarchitektur für multiple Daten benutzt. In einer Computerarchitektur für multiple Daten ist jede CPU mit einem Plattenlaufwerksspeicher verbunden. Jede CPU greift, angewiesen durch einen Host-Computer, auf seinen zugehörigen Plattenlaufwerksspeicher zu. Im Ergebnis können die Prozessoren simultan auf alle Plattenlaufwerke parallel zugreifen, um einen verbesserten Durchsatz zu erreichen. Jeder Benutzer empfängt vom Plattenlaufwerk einen Datenblock durch eine gegebene CPU.
  • Um sicherzustellen, dass die Daten kontinuierlich vom System zu den Benutzern übertragen werden, kann ein Halbleiterspeicher relativ großer Kapazität benutzt werden, um die parallel ausgegebenen Datenströme von der Mehrzahl der CPUs zwischenzuspeichern. Solch eine Datenpufferung ist besonders notwendig, wenn die Daten Video- oder Audiodaten sind, die während ihrer Übertragung zu den Benutzern zum Zwecke des Ausgebens nicht unterbrochen werden dürfen. In solchen Systemen werden die Video- und Audiodaten von den Plattenlaufwerken zum Pufferspeicher als unterschiedliche Datenblöcke übertragen. Die Blöcke sind im Pufferspeicher seriell angeordnet, sodass die Blöcke beim Lesen des Pufferspeichers einen zusammenhängenden Datenstrom für jeden Benutzer bilden.
  • In solchen Informationsspeichersystemen muss jedoch der Pufferspeicher sehr groß sein und damit sehr teuer. Zum Beispiel muss in einem Zugriffssystem nach Round-Robin mit M Benutzern der Pufferspeicher zwischenzeitlich die gegebenen Daten eines Benutzers speichern, während die anderen M – 1 Benutzer vom parallel verarbeitenden Computer bedient werden. In einem typischen Videospeichersystem, bei dem 10–100 kB große Datenblöcke von 100–1000 Plattenlaufwerke für 1000 Benut zer gelesen werden, muss der Pufferspeicher 1–100 Gigabyte groß sein. Eine Halbleiterspeicheranordnung solch großer Kapazität ist extrem teuer.
  • Ein anderer mit der Benutzung von Plattenspeichern als Speichermedium verknüpfter Nachteil ist die Tatsache, dass Plattenlaufwerke nicht imstande sind, kontinuierlich und nicht unterbrochen Lese- oder Schreiboperationen durchzuführen. Typischerweise werden externe Befehle für den Zugriff auf Daten ignoriert oder verzögert, wenn das Laufwerk interne Verwaltungs- oder Wartungsoperationen durchführt. Die mit Abstand längste Verzögerung ergibt sich bei der Rekalibrierung der Kopfposition des Laufwerks. Solch eine Rekalibrierung wird periodisch durchgeführt, um Spurabtastfehler zu korrigieren, die sich bedingt durch eine unterschiedliche thermische Ausdehnung der Platten im Laufwerk einstellen können. Üblicherweise benötigen preiswerte Laufwerke 0,1–1,0 Sekunden, um eine Rekalibrierungsprozedur abzuschließen, die typischerweise alle 10–100 Betriebsminuten durchgeführt wird.
  • Um eine Unterbrechung der ausgegebenen Datenströme zu verhindern, muss das Datenverteilungssystem (DDS) zusätzlichen Pufferspeicher bereitstellen, um Daten zu speichern, die als Ausgabe während jedes Rekalibrierungszyklus des Laufwerks benutzt werden kann. In einem typischen System, bei dem zu jedem Benutzer Daten bei 1 bis 10 Mbit/s pro Benutzer übertragen werden, muss der Pufferspeicher eine Größe von 1–10 MBit haben. Für ein System mit 1000 Benutzern werden 10 GBit oder 1,25 GByte Halbleiterspeicher benötigt.
  • Starworks, "A Video Application Server", Fouad A. Tobagi, Joseph Pang, Compcon Spring '93, IEEE Computer Soc., beschreibt ein Verfahren zum Speichern von Daten in einem Mehrfachbenutzerdatenverteilungssystem. Ein Videostrom repräsentiert beispielsweise einen Film. Der Strom umfasst Videopakete, die einem Speicherpool zugeführt und dort gespeichert werden. Ein Algorithmus zum gemeinsamen Benutzen unterteilt einen einzigen Speicherpool in Bereiche fester Größe, was es mehreren Pipes erlaubt, Speicherbereiche nach Bedarf zuzuteilen oder freizugeben. Ein zyklisches Rechenzeitvergabeschema wird benutzt, um das Speichern und das Wiedergewinnen von Daten zu steuern. Die Techniken der streifenförmigen Datenanordnung bzw. des Stripings und des Sortierens werden benutzt. Striping bedeutet, dass von jedem Strom gewonnene Daten in einem gegebenen Zyklus über alle Platten der Plattenanordnung verteilt werden. Dies führt zu einer ausgewogenen Last für alle Platten.
  • Es besteht im Stand der Technik ein Bedarf nach einem DDS für eine Mehrzahl von Benutzern, das die erforderliche Größe des Pufferspeichers reduziert und das eine für den Benutzer nicht wahrnehmbare Datenzugriffslatenzzeit hat.
  • Die Erfindung stellt ein Verfahren zum Speichern von Daten in einem Mehrfachbenutzerdatenverteilungssystem bereit, das eine Mehrzahl von Informationsspeichereinrichtungen hat, wobei das Verfahren die Schritte aufweist:
    • a) Bereitstellen eines kontinuierlichen Datenstroms, der in diskrete Segmente unterteilt wird,
    • b) Aufteilen der Mehrzahl von Informationsspeichereinrichtungen in eine Mehrzahl von Untergruppen von Informationsspeichereinrichtungen, wobei jede Untergruppe zumindest zwei Informationsspeichereinrichtungen aufweist,
    • c) Auswählen eines ersten Satzes bzw. ersten Gruppe von sequentiellen diskreten Segmenten des Datenstroms für das Speichern in einem der Untergruppen von Informationsspeichereinrichtungen,
    • d) Speichern des ausgewählten ersten Satzes von diskreten Datensegmenten in einem streifenförmigen Muster in einer ersten der Untergruppen von Informationsspeichereinrichtungen und
    • e) Wiederholen des diskreten Segmentauswahlschrittes für einen nächsten Satz von sequentiellen diskreten Segmenten, die sequentiell auf den vorher ausgewählten Satz von diskreten Segmenten in den Datenstrom folgen, und Wiederholen des Speicherschrittes für diesen nächsten Satz von Segmenten, der in einem streifenförmigen Muster in einer nächsten Untergruppe von Informationsspeichereinrichtungen gespeichert wird, wobei die nächste Untergruppe sich von der Untergruppe, die in dem vorhergehenden Speicherschritt verwendet wurde, unterschiedet,
    • e1) sodass die gespeicherten diskreten Segmente über alle Untergruppen von Informationsspeichereinrichtungen eine Mehrzahl von zusammenhängenden Blöcken von gespeicherten Daten mit einer vorbestimmten Größe bilden, wobei jeder Block mit einer einzelnen der Untergruppen von Informationseinrichtungen verknüpft ist und einem Abschnitt der Speicherkapazität seiner verknüpften Untergruppe entspricht, und
    • e2) sodass die diskreten Segmente, die jeden der Datenblöcke bilden, ein streifenförmiges Muster in jedem Block und über die Mehrzahl von Untergruppen von Informationsspeichereinrichtungen haben.
  • Ausführungsformen der Erfindung benutzen eine erfinderische Mehrfachbenutzer-DDS, das einen digitalen Informationsserver enthält, der ein parallel verarbeitender Computer ist und der eine Mehrzahl von Prozessoren hat, die jeweils mit einer Informationsspeichervorrichtung, wie zum Beispiel ein magnetisches Plattenlaufwerk, ein optisches Plattenlaufwerk, ein RAM oder Ähnlichem verbunden ist. Das System benutzt eine bis dato unbekannte Art der streifenförmigen Datenanordnung für die Informationsspeicherung in einer Mehrzahl von Plattenlaufwerken. Diese Datenstreifenmethode unterteilt die Mehrzahl von Plattenlaufwerken gleichmäßig in eine Mehrzahl von Untergruppen von Plattenlaufwerken. Zum Beispiel gibt es, wenn der Server 500 Plattenlaufwerke enthält und die Untergruppe 5 Laufwerke hat, 100 Untergruppen von Laufwerken. Eine erste Untergruppe wird ausgewählt, und ein zusammenhängender Datenblock wird in einer sich wiederholenden streifenförmigen Weise in der Untergruppe der Plattenlaufwerke gespeichert. Danach wird eine zweite, an die erste Untergruppe angrenzende Untergruppe ausgewählt und darin ein weiterer zusammenhängender Datenblock in der streifenförmigen Weise gespeichert. Dieser Prozess wird für jede Untergruppe wiederholt. Wenn alle Untergruppen zum Speichern von Daten benutzt wurden, greift das Verfahren auf die erste Untergruppe zurück und speichert darin den nächsten zusammenhängenden Datenblock. Bei der Benutzung des Verfahrens können viele Datenquellen auf den Plattenlaufwerken für den nachfolgenden Zugriff durch eine Mehrzahl von Benutzern gespeichert werden. Um alle Prozessoren effizient zu benutzen, sind die Eingangsdaten zuvor in einer speziellen Weise angeordnet worden, die es erlaubt, jeden der zusammenhängenden Datenblöcke simultan in den Untergruppen der Plattenlaufwerke zu speichern.
  • Ein weiteres Merkmal von Ausführungsformen der Erfindung ist ein Datenwiedergewinnungsverfahren, das die Daten, die auf die oben beschrieben Weise gespeichert sind, benutzt, um die Latenz gegenüber DDS des Standes der Technik zu verbessern und um die notwendige Größe des Datenpuffers zu reduzieren. Das Verfahren definiert eine Serviceperiode umfassend eine Mehrzahl von Schlitzen bzw. Slots, welche den Benutzern zugewiesen werden. Innerhalb eines gegebenen Schlitzes greift ein zugewiesener Benutzer auf eine der Untergruppen der Plattenlaufwerke zu, um den Benutzer mit Daten zu versorgen. Benutzt man das erfinderische Datenzugriffsverfahren, so werden die Benutzer innerhalb der Serviceperiode den Schlitzen dynamisch zugeordnet, sodass die konkrete Zeit, zu der der Benutzer bedient wird, und die ihn bedienende Untergruppe von Serviceperiode zu Serviceperiode variiert. Die Zuordnung des Benutzers innerhalb der Serviceperiode wird durch den gegenwärtigen und den nächsten Betriebsmodus (den Modus, den er innerhalb der nächsten Serviceperiode benutzen wird) des Benutzers definiert. Zusätzlich stellt das Verfahren eine Fehlererkennung und Fehlerkorrektur für von den Plattenlaufwerken wiedergewonnene Daten bereit. Weiterhin ermöglicht es das Verfahren, den Plattenlaufwerken neue Daten zuzufügen. Weiterhin ermöglicht es das Verfahren den Plattenlaufwerken während jeder Serviceperiode Daten hinzuzufügen und erlaubt es, eine ausgewählte Anzahl von Laufwerken zu rekalibrieren, ohne dass der Betrieb des Systems beeinträchtigt wird.
  • Wegen der dynamischen Zuteilung der Benutzer würden normalerweise vom Server Daten in der Reihenfolge erzeugt, in der die Benutzer während einer Serviceperiode zugeteilt wurden. Die Reihenfolge der Datenausgabe würde daher von Serviceperiode zu Serviceperiode variieren.
  • Folglich müsste jedes mit dem DDS verbundene Datenbereitstellungssystem die gegenwärtige Reihenfolge der vom DDS erzeugten Daten bestimmen, um die Daten zum richtigen Benutzer weiterzuleiten. Um das Datenbereitstellungssystem von dieser Last zu befreien, enthält das DDS einen Ausgabezeitsequenzer, der die Daten vom Server neu ordnet, und zwar unabhängig von der Reihenfolge, in der die Benutzer innerhalb der Serviceperiode zugeteilt sind.
  • Die Figuren:
  • 1 stellt ein höheres Blockdiagramm eines Mehrfachbenutzerdatenverteilungs- und -bereitstellungssystems dar,
  • 2 stellt ein höheres Blockdiagramm eines DDS für mehrere Benutzer dar,
  • 3 stellt ein detailliertes Blockdiagramm eines Teils des in 2 gezeigten DDS dar,
  • 4 ist ein Datenspeicherabbild zur Veranschaulichung des bevorzugten Verfahrens zum Speichern von Daten in einer Plattenlaufwerksanordnung des DDS nach 2,
  • 5 ist ein Datenzugriffsabbild zur Veranschaulichung des bevorzugten Verfahrens zum Wiedergewinnen von Daten, die in der Plattenlaufwerksanordnung unter Benutzung des Speicherabbildes nach 4 abgelegt sind,
  • 6 zeigt ein Flussdiagramm der Datenwiedergewinnungsroutine, die von dem in 2 gezeigten DDS ausgeführt wird,
  • 7 zeigt ein Flussdiagramm der Benutzerbedienungsroutine, die von dem in 2 gezeigten DDS ausgeführt wird,
  • 8 zeigt ein Flussdiagramm der Benutzerneuzuteilungsroutine, die von dem in 2 gezeigten DDS ausgeführt wird,
  • 9 zeigt ein Flussdiagramm der Routine für die Zuteilung der Priorität 1, die von dem in 2 gezeigten DDS ausgeführt wird,
  • 10 zeigt ein Flussdiagramm der Routine für die Zuteilung der Priorität 2, 3 und 4, die von dem in 2 gezeigten DDS ausgeführt wird,
  • 11 zeigt ein Blockdiagramm eines Ausgabezeitsequenzers.
  • Zum erleichternden Verständnis wurden, soweit möglich, identische Bezugszeichen zur Bezeichnung identischer Elemente, die den Figuren gemeinsam sind, benutzt.
  • 1 zeigt ein höheres Blockdiagramm eines Mehrfachbenutzersdatenverteilungs- und bereitstellungssystems 100. Das Gesamtsystem besitzt zwei verschiedene Systemelemente: ein Verteilungszentrum 102 mit einem Datenspeicherungs-, -wiedergewinnungs- und -verteilungssystem 106 und ein Datenbereitstellungs- bzw. -liefersystem 104 mit einer Speichernetzwerkanordnung bzw. eines Netzwerks des "hub and spoke" (Nabe-Speiche-System). Allgemein enthält das Bereitstellungssystem 104 eine Mehrzahl von Benutzern 108, die mit der Netzwerkschnittstelleneinheiten 110, die konventionelle Datenverteilungs-Hubs bilden, verbunden sind. Eine (nicht gezeigte) Bereit stellungssystemschnittstelleneinheit kann benutzt werden, um die Daten des Verteilungssystems in einer Art und Weise zu formatieren, die mit dem Bereitstellungssystem kompatibel ist. Die Datenverbindung vom DDS (oder der Bereitstellungssystemschnittstelleneinheit) zu den Netzwerkschnittstelleneinheiten ist typischerweise eine Hochgeschwindigkeitsverbindung mit Datenmultiplexing, wie beispielsweise eine standardmäßige T1-Verbindung. Die Hubs demultiplexen diese Daten von diesen Verbindungen und den Benutzern werden serielle Datenströme gesendet, die sie zuvor vom DDS 106 angefordert haben. Zusätzlich steuern die Benutzer 108, über Befehlsverbindungen, den Datentyp und den Datenfluss, den jeder von ihnen erhält. Das DDS innerhalb des Verteilungszentrums verarbeitet von der Mehrzahl der Benutzer empfangene Befehle. Das DDS interpretiert die Befehle und führt sie aus. Das Datenbereitstellungssystem kann vom lokalen Telefonsystem, der lokalen Kabelgesellschaft, oder einer anderen Dienstanbietergesellschaft aufgebaut und betrieben werden. Alternativ kann das Datenbereitstellungssystem eine Busanordnung bilden, wie beispielsweise ein lokales Netzwerk in der Art des Ethernets oder einen Kabelfernsehverteiler. In den Fällen, in denen die Benutzer in der Nähe des Verteilungszentrums sind, kann das Datenbereitstellungssystem durch direkte Verbindungen zum Datenspeicherungs-, -wiedergewinnungs- und -verteilungssystem ersetzt werden. Das Datenbereitstellungssystem ist nicht Teil der Erfindung und ist nur ganz allgemein beschrieben, um den Leser eine Vorstellung von der Benutzung der Erfindung zu geben.
  • Es genügt zu sagen, dass das erfinderische DDS 106 Daten in kompatiblen Datenformaten zum Bereitstellungssystem 104 sendet, um die Verteilung der Daten zu den jeweiligen Benutzern zu erleichtern. Ein anschauliches Beispiel für die Benutzung des erfinderischen DDS 106 ist die innerhalb eines Video-on-Demand-(VOD-)Systems. Obwohl das erfinderische DDS im weitesten Sinne jeden Typ digitaler Daten verteilen kann, beispielsweise Audioinformationen, Videoinformationen, Textinformationen, Grafiken und Ähnliches, konzentriert sich die nachfolgende Erörterung zwecks vereinfachter Beschreibung der Erfindung auf die Benutzung der Erfindung innerhalb eines VOD-Systems mit einer großen Anzahl von Benutzern.
  • In einem VOD-System haben die Benutzer Schnittstelleneinheiten, die es jedem Benutzer ermöglichen, ein Videoprogramm, wie beispielsweise einen Spielfilm oder andere Multimediaprogramme, auszuwählen und die Wiedergabe dieses Programms unter Benutzung von videogerätartigen Steuerfunktionen zu steuern. Insbesondere kann ein Benutzer das Programm zu jeder Zeit abspielen, unterbrechen, stoppen, schnell oder besonders schnell vorwärts laufen lassen, rückwärts oder schnell rückwärts laufen lassen. Das DDS verarbeitet und arbeitet solche Benutzerbefehle schnell ab. Es ist wichtig, dass jeder Benutzer des Systems simultan dieselben Steuermerkmale bezüglich einer beliebigen Zahl von Programmen benutzen kann. Deshalb sieht jeder Benutzer seine Set-Top-Einheit als ein Videoabspielgerät an, das imstande ist, auf große Datenbanken mit Videoprogrammen zuzugreifen.
  • Das DDS 106 besitzt gewisse Vorrichtungen und begleitende Verfahren zur Ausführung der Benutzerbefehle ohne wahrnehmbare Verzögerung. Typischerweise werden angeforderte Daten, nachdem die Befehle ausgeführt wurden, vom Verteilungszentrum in einem Multiplexformat in eines von einer Mehrzahl von Benutzernetzwerken eingespeist. Netzwerkschnittstelleneinheiten innerhalb des Datenbereitstellungssystems demultiplexen die Datenströme und senden die Daten zum jeweiligen Benutzer. Die Daten können in einem digitalen Format gesendet werden oder werden in einigen Fällen in ein Analogsignal überführt, um vom Benutzer genutzt zu werden. Das Speichennetzwerkbereitstellungssystem ist nur eine Veranschaulichung einer Art von Netzwerkanordnungen. Der Fachmann wird erkennen, dass jedes von vielen verfügbaren Datenbereitstellungssystemen funktionieren würde, um die daten-gemultiplexten Daten vom DDS zu den Benutzern zu übertragen.
  • In 2 beinhaltet ein Blockdiagramm des in 1 gezeigten Mehrfachbbenutzer-DDS 106 eine Massenspeichervorrichtung 202, einen Host-Computer 204, eine Befehlsschnittstelle 206, einen digitalen Informationsserver 208 und einen Datenmultiplexschaltkreis 210. Im Allgemeinen werden einer Mehrzahl von (nicht gezeigten) Benutzern über Leitungen 212 gemultiplexte serielle Informationen gesendet. Jede Leitung repräsentiert einen Multiplexkanal, der mit der Mehrzahl von Benutzern über die Benutzernetzwerke verbunden ist.
  • Die Benutzer steuern den Betrieb des DDS 106 über eine Befehlsverbindung. Es wird angenommen, dass die Befehlsverbindung in den Verbindungen 212 integriert ist. Die spezielle Ausführung der Befehlsverbindung ist typischerweise durch das Datenbereitstellungssystem definiert. Jeder Befehl von der Befehlsverbindung wird von der Schnittstelle 206 ausgewertet. Die Schnittstelle 206 reformatiert die Befehle vom Datenbereitstellungssystem in ein Befehlsformat, das vom Host-Computer verstanden werden kann. Mit der Benutzung der Befehlsverbindung gewinnt der Benutzer die Fähigkeit zur Auswahl eines Videoprogramms, z.B. eines ausgewählten Multimediaprogramms, und kann danach das Videoprogramm stoppen, unterbrechen, zurück laufen lassen und schnell vorlaufen lassen. Mit anderen Worten stellt das VOD-System jedem Benutzer Funktionen bereit, die ähnlich sind zu denjenigen, die bei einem konventionellen Videokassettenabspielgerät verfügbar sind.
  • Im Betrieb ruft der Host-Computer, wenn der Benutzer Informationen, z.B. einen ausgewählten Multimediastrom, anfordert, die Informationen von der Speichervorrichtung 202 (zum Beispiel einer Videobandbibliothek) ab und liefert die abgerufenen Informationen an den Server 208. Der Server besitzt lokalen Speicher (eine Plattenlaufwerksanordnung), der die Informationen speichert. Wenn die vom Benutzer angeforderte Information gegenwärtig im Server gespeichert ist, muss auf den Massenspeicher 202 nicht zugegriffen werden.
  • Insbesondere ist der Server 208 ein Parallelverarbeitungscomputer mit einer Architektur für multiple Datenströme (SIMD). Insbesondere besitzt der Server 208 eine Mehrzahl von Controllern 216n und eine mit jedem Controller verknüpfte Mehrzahl von Prozessorsubsystemen 218n , 220n und 222n Jedes Prozessorsubsystem ist mit einer zugehörigen Massenspeichervorrichtung wie beispielsweise einem Plattenlaufwerk des Winchester-Typs 224n , 226n und 228n verbunden, aber andere Arten von Massenspeicher, zum Beispiel optische Plattenlaufwerke oder RAM (random access memory) können anstelle der magnetischen Plattenlaufwerke benutzt werden.
  • Die Speichervorrichtung 202 kann eine Mehrzahl von magnetischen oder optischen Plattenlaufwerken oder Halbleiterspeicher, oder eine Kombination von diesen, umfassen. Typischerweise besteht jedoch die Vorrichtung aus einem oder mehreren magnetischen Plattenlaufwerken. Daten der Vorrichtung 202 werden zwischen den Plattenlaufwerken innerhalb des Servers 208 über einen Datenformatierschaltkreis 203 und einen Eingabe-/Ausgabe-(E/A-)Schaltkreis verteilt. Der Schaltkreis 203 führt zwei Funktionen aus. Die erste Funktion puffert eintreffende Daten von der Vorrichtung 202, sodass verschiedene Segmente der eintreffenden Daten umgeordnet und simultan auf die Plattenlaufwerke abgelegt werden können. Diese erste Funktion wird im Detail mit Bezug auf 4 diskutiert. Eine zweite vom Schaltkreis 203 ausgeführte Funktion besteht im Reformatieren und Puffern digitalisierter Eingangsdaten, wie zum Beispiel aufgezeichnete Sendungen oder Livesendungen, sodass diese Übertragungen vom Server 208 gespeichert werden können. Nach der Speicherung können diese Daten von den Benutzern zukünftig zu jeder Zeit angesehen werden.
  • Der E/A-Schaltkreis kombiniert die parallel ausgegebenen Daten des Prozessorsubsystems in einen 64 Bit breiten seriellen Bitstrom (nachfolgend näher beschrieben). In dieser Offenbarung verarbeitet das System veranschaulichend durchgängig 64-Bit-breite serielle Bitströme, aber jede andere Bitstrombreite, z.B. 128-Bit-breite serielle Bitströme, liegen ebenfalls im Bereich dieser Erfindung. Auch besitzt der E/A-Schaltkreis Interprozessor-Kommunikationsschaltkreise, die die dynamische Zuteilung von Benutzern zu den Prozessoren, als auch Datenfehlererkennung und -korrektur ermöglichen. Die spezifischen Details des E/A-Schaltkreises werden nachfolgend mit Bezug auf die 3 und 11 erläutert.
  • Schließlich wird der 64 Bit breite serielle Ausgabedatenstrom vom E/A-Schaltkreis 214 zum Schaltkreis 210 überführt. Der Schaltkreis 210 reformatiert die seriellen Daten in der Art des Multiplexings, sodass eine große Zahl von Benutzern, zum Beispiel 3000 Benutzer, mit den verschiedenen Ports 212 des Multiplexschaltkreises verbunden werden können. Mit anderen Worten ordnet der Multiplexschaltkreis den seriellen Ausgabedatenstrom in eine Mehrzahl von Multiplexkanälen (jeder Kanal wird von einem Port repräsentiert) neu an. Jedem Benutzer mit einem gegebenen Kanal wird ein spezifischer Schlitz zugewiesen, in der Art, dass die Benutzerdaten durch das Datenbereitstellungssystem übertragen werden.
  • Veranschaulichend gibt es in einer praktischen Ausführung des erfinderischen DDS 128 Prozessorsubsysteme, zum Beispiel Prozessorsubsysteme 1181 bis 118128 , die mit jedem Controller, z.B. mit Controller 1161 , verbunden sind. Physikalisch sind ein Controller und seine 128 Prozessorsubsysteme auf einer einzigen Schaltkreiskarte montiert. Jede Karte besitzt 32 integrierte Schaltkreise mit Prozessorsubsystemen, jeder von ihnen mit vier Prozessoren. Der Server besitzt eine Gesamtzahl von vier Schaltkreiskarten, d.h. eine Gesamtzahl von 512 Prozessoren befinden sich im Server. Jeder der vier Prozessoren ist mit verschiedenen Prozessorunterstützungsschaltkreisen verknüpft, z.B. Speicher, Befehlslogik, E/A-Schaltkreise und Ähnlichem, um vier Prozessorsubsysteme auf jedem integrierten Schaltkreis zu bilden. Die Schaltkreiskarten sind über den Computer 204 miteinander verbunden. Der Computer 204 dient allgemein als eine Schnittstelle zwischen den Prozessorsubsystemen und den Benutzern. Zusätzlich fungiert der Host-Computer als ein Haupt-Controller, der den Betrieb der verschiedenen Controller und Prozessorsubsysteme innerhalb des Servers 208 überwacht. Der Fachmann wird erkennen, dass die Zahl der eingesetzten Prozessoren anwendungsspezifisch ist, und dass die Zahl der Prozessoren in einem Parallelverarbeitungscomputer leicht nach oben oder unten skaliert werden kann, um eine spezifische Anwendung auf dem Computer zu verwirklichen. Daher soll davon ausgegangen werden, dass die hierin beschriebene Erfindung in einem Server mit einer beliebigen Zahl von Prozessoren benutzt werden kann, die innerhalb des Servers auf beliebige Weise angeordnet sind.
  • Insbesondere ist 3 ein detailliertes Blockdiagramm eines Teils des in 2 gezeigten Servers 208. 3 stellt Details des Prozessorsubsystems 2182 und einen Teil des E/A-Schaltkreises 214 dar, ebenso wie das Plattenlaufwerk 224 und den Controller 2161 . Wie oben erläutert, besitzt jedes Prozessorsubsystem sowohl einen Prozessor 300, als auch lokalen Speicher 302 und verschiedene allgemein bekannte Prozessorunterstützungsschaltkreise 304. Mit jedem Prozessorsubsystem ist auch ein E/A-Schaltkreis 214 verknüpft. Angewiesen durch auf den Instruktionsbus gelegte Instruktionen führt der Prozessor arithmetische oder logische Operationen auf den in seinen internen Registern 306 oder anderem Halbleiterspeicher mit wahlfreiem Zugriff gespeicherten Daten aus.
  • Insbesondere wird der Prozessor 300 über den Eingangsbus 310 mit Eingangsdaten versorgt. Die Daten werden vorübergehend in einem Eingangsregister 312 gespeichert, bis sie vom Prozessor benutzt werden. Die Eingaberegister werden als konventionelle Schieberegister betrieben, sodass das System nach jedem Taktzyklus ein Datenwort (16 Bit) seriell von einem Prozessorsubsystem zum nächsten überträgt. Nachdem die geeigneten Eingangsdaten für jedes Prozessorsubsystem in die Eingangsregister eingetaktet wurden, werden die Daten simultan in die internen Register 306 aller Prozessoren geladen. Die Prozessorladefunktion wird durch einen besonderen Prozessorbefehl, der vom Controller 2161 über den Bus 308 gesendet wird, ermöglicht.
  • Der E/A-Schaltkreis besitzt auch einen oder mehrere Ausgaberegister 314, ein Eingangsregister 312, einen Teil des Interprozessorkommunikations-(IPC-)Buses 318 und eine Plattenlaufwerksschnittstelle 301. Die Register 314 sind 16-Bit-breite Register, die mit einem Ausgabeport des Prozessors verbunden sind, z.B. akzeptiert jedes Register 16 Bit parallele Daten und gibt 16-Bit-breite parallele Daten aus. Die Ausgaberegister bilden einen Teil des Ausgabezeitsequenzers (OTS), der vollständig mit Bezug auf 11 beschrieben wird. Es genügt zu sagen, dass der OTS die 16-Bit-Ausgabedaten von jedem Prozessor mit den Ausgabedaten der vier anderen Prozessoren kombiniert, um ein 64 Bit breites Datenelement zu erzeugen. Der Grund für die Benutzung des OTS wird offenkundig werden, wenn der restliche Teil des Systems beschrieben wird.
  • Jeder Prozessor kann mit benachbarten Prozessoren über den Interprozessorkommunikationsbus (IPC) 318 kommunizieren. Der IPC-Bus 318 ist eine Schaltkreisanordnung, die es erlaubt, Daten und andere Informationen von einem Prozessor zum anderen zu übertragen. Der IPC ist bidirektional, sodass Informationen in beide Richtungen entlang des Buses übermittelt werden können. Die spezifische Ausführung des IPC-Buses ist für die Erfindung nicht wichtig und jeder Bus, der es den Prozessoren ermöglicht Daten auszutauschen, wäre geeignet. Ein solcher IPC-Bus wird in der US-Patentanmeldung mit dem Titel "Advanced Massively Parallel Computer Apparatus" mit der Anmeldenummer 08/091,935, angemeldet am 14. Juli 1993, damit verbundene Publikationen US-A-5579527, US-A-5581778 und US-A-5867723, beschrieben, welche eine Continuation-in-part-Patentanmeldung von der am 5. August 1992 hinterlegten Anmeldung mit der Anmeldenummer 07/926,265 ist.
  • Die Plattenlaufwerksschnittstelle 301 verbindet die Plattenlaufwerkssubsysteme 2242 mit dem E/A-Schaltkreis 214. Die Plattenlaufwerksschnittstelle führt eine Konversion der Informationen von der Platte zum Prozessor und umgekehrt von seriell zu parallel vor.
  • Jedes Prozessorsubsystem 2182 ist indirekt (durch den E/A-Chip und eine Plattenlaufwerksschnittstelle) mit einem Plattenlaufwerkssubsystem 2242 , umfassend einen Plattencontroller 320 und eine Plattenlaufwerkseinheit 322, verbunden. Der Plattencontroller 320 führt Befehle des Prozessors 300 aus, um Daten von der Plattenlaufwerkseinheit 322 zum Prozessor zu übertragen. Da die Prozessoren und Plattenlaufwerke physikalisch voneinander entfernt sein können, ist die elektrische Verbindung zwischen jedem der Plattencontroller und seinen zugeordneten Controllern typischerweise als ein bitserieller, bidirektionaler Datenbus ausgebildet.
  • Jeder Prozessor empfängt vom Instruktionssequenzer 324 innerhalb des Controllers 2161 identische Instruktionen. Der Instruktionssequenzer speichert eine von jedem der Prozessoren auszuführende, ein Programm bildende Instruktionssequenz. Diese Instruktionssequenz wird durch den Host-Computer in den Sequenzer vorgeladen. Der besondere Prozess, mit welchem das Programm geladen und ausgeführt wird, ist aus dem Stand der Technik bekannt und erfordert keine weiteren Erläuterungen.
  • Nachdem Informationen als ein serieller Wortstrom vom Massenspeicher wiedergewonnen wurde, weist der Host-Computer die Controller im Betrieb an, die Informationen in den Plattenlaufwerks subsystemen in einer Art zu speichern, die im Stand der Technik als Datenstreifen bzw. Data-Striping bekannt ist. Insbesondere werden die Informationen immer als 16-Bit-Wort unter einer Mehrzahl von Plattenspeichern in einer gestreiften Weise abgelegt. Zum Beispiel wird, wie es im Speicherabbild 402 von 4 gezeigt ist, der Wortstrom 400 über 505 Plattenlaufwerke in einer Weise in Datenstreifen abgelegt, die eine geringe Zugriffslatenz ermöglicht. Für die nachfolgende Diskussion einer bevorzugten Technik des Datenstreifens wird angenommen, dass es vier Sätze von 128 parallelen Prozessoren gibt (insgesamt 512, von denen 505 für die Videodatenspeicherung benutzt werden) denen 512 Plattenlaufwerke zugeordnet sind. Die Plattenlaufwerke sind von 1 bis 512 durchnummeriert. Um Daten zu speichern, sind die 505 Plattenlaufwerke gleichmäßig in Untergruppen von Plattenlaufwerken unterteilt, z.B. fünf Plattenlaufwerke pro Untergruppe. Ein Teil des gespeicherten Videoprogramms ist innerhalb jeder Untergruppe in einer Streifen-Art abgelegt. Das Plattenlaufwerk 1 speichert das erste Wort (Wort 1) Eingangsdaten 400, Laufwerk 2 speichert Wort 2, Laufwerk 3 speichert Wort 3, Laufwerk 4 speichert Wort 4, und Laufwerk 5 speichert Wort 5. Danach wird Wort 6 auf das Laufwerk 1, Wort 7 auf dem Laufwerk 2, usw. abgelegt bis Laufwerk 5 80.000 Wort Informationen gespeichert hat, d.h. das Datenstreifen von Laufwerk 1 bis 5 wird 16.000 Mal wiederholt. Danach speichert Laufwerk 6 das nächste Wort (Wort 80.001) usw. bis alle Informationen auf den Plattenlaufwerken verteilt gespeichert sind. Wenn die Plattenlaufwerke 501 bis 505 jeweils ihre 80.000 Wort Daten gespeichert haben, kehrt das System (Umbrüche, wie durch die Linie 402 veranschaulicht) zu den Plattenlaufwerken 1 bis 5 zurück, um die nächsten 80.000 Wörter zu speichern. Dieser Prozess des Anordnens der Daten in Streifen bzw. Zeilen innerhalb jeder Untergruppe von Laufwerken, als auch über alle Untergruppen, wird wiederholt bis das gesamte Videoprogramm gespeichert ist.
  • Bei der vorangegangenen Erläuterung des Anordnens der Daten in Streifen wurde der Einfachheit halber angenommen, dass Daten auf einmal in einer Untergruppe von Plattenlaufwerken gespeichert wurden. Um jedoch den Parallelverarbeitungscomputer effizient zu nutzen, werden Eingangsdaten unter Benutzung aller Prozessoren und Plattenlaufwerke, z.B. 505 Prozessoren und Plattenlaufwerke, simultan abgelegt. Um diese gleichzeitige Speicherung zu erleichtern, zwischenspeichert der Datenformatierschaltkreis (203 in 2) die Eingangsdaten von der Massenspeichervorrichtung und gibt einen seriellen Datenstrom von 16-Bit-Datenwörter in Eingangsregistern in einer geeigneten Reihenfolge aus. Die spezifische Reihenfolge erleichtert die simultane Speicherung aller Wörter in allen Eingangsregistern. Zum Beispiel werden die Daten neu geordnet, sodass die Wörter 1–5, die Wörter 80.001–80.000 und die Wörter 160.001–160.005 usw. über alle Untergruppen von Plattenlaufwerken simultan gespeichert sind. In anderen Worten werden die Daten so umgeordnet, dass es möglich ist, die Datenwörter in einer einzigen Zeile des in 4 gezeigten Speicherabbilds simultan zu speichern.
  • Ähnlich hierzu kann ein anderes Videoprogramm unter Benutzung dieser Datenstreifenmethode gespeichert werden, indem die Speicherung des zweiten Programms mit den Plattenlaufwerken 6 bis 10 begonnen wird. Danach erfolgt der Beginn eines jeden Programms gegenüber dem Beginn des zuvor gespeicherten Programms mit einem Versatz von einer Untergruppe von Plattenlaufwerken. Als solche kann eine Mehrzahl von Videoprogrammen über die Plattenlaufwerke gespeichert werden.
  • Auch wird für die nachfolgende Diskussion angenommen, dass der Eingangsdatenstrom Paritätswörter hat, um die Fehlerkorrektur zu ermöglichen. Beispielhaft erhält man die Paritätswörter von den vorangegangenen vier Datenwörtern; z.B. ist das Paritätswort ein exklusives Oder auf Bit-für-Bit-Basis der Bits der vier vorangegangenen Datenwörter. Daher ist jedes fünfte Wort ein Paritätswort und besitzt jedes fünfte Plattenlaufwerk das Paritätswort der vorangegangenen vier Datenwörter. Alternativ hierzu können die Paritätswörter, wenn sie nicht in den Eingangsdaten enthalten sind, erzeugt und in den Datenstrom beim Speichern auf dem digitalen Informationsserver eingefügt werden.
  • Sobald die angeforderten Informationen (das Videoprogramm) auf den Plattenlaufwerken resident sind, kann ein Benutzer fordern, dass die Informationen von den Platten zum Benutzernetzwerk gesendet werden. Zum Beispiel wird durch Manipulation einer Befehlsvorrichtung (nicht gezeigt) ein Befehl vom Benutzer zu der Befehlsschnittstelle gesendet. Durch Benutzung dieser Befehlsvorrichtung kann der Benutzer Informationen auswählen, abspielen und bei der Wiedergabe der Informationen zurückspulen, schnell zurückspulen, schnell und besonders schnell vorwärts spulen, pausieren oder stoppen. Wenn zum Beispiel die Informationen ein ausgewählter Multimediastrom sind, kann der Benutzer einen speziellen Multimediastrom von einem Menü auf dem Fernsehbildschirm auswählen. Sobald der Multimediastrom ausgewählt ist, steuert der Benutzer die Wiedergabe des Multimediastroms, als ob er ein konventionelles Videokassettenabspielgerät benutzen würde. Die einfachste Funktion besteht darin, dass der Benutzer das Abspielen wählt, wonach der Multimediastrom durch die Parallelprozessoren von den Plattenlaufwerken abgerufen wird. Die Daten werden über den E/A-Schaltkreis zum Multiplexschaltkreis übertragen. Wie oben mit Bezug auf 2 beschrieben, formatiert der Multiplexschaltkreis die Daten in der Art des Multiplexings, sodass eine Anzahl von Benutzern an das System angeschlossen werden können.
  • Durch Benutzung des DDS können mehrere Benutzer simultan auf die gleiche oder auf verschiedene Informationen zugreifen. Zusätzlich können diese Benutzer zu jeder Zeit auf Informationen zugreifen und sie mit mehreren Geschwindigkeiten durchsehen, z.B. indem sie pausieren, schnell vorspulen, oder wenn gewünscht zurückspulen. Dies bedeutet, dass das DDS eine zentrale Datenbank darstellt, z.B. eine Videodatenbank, auf die zugegriffen werden kann als ob jeder Benutzer die gesamte Datenbank ohne wahrnehmbare Verzögerung bei sich zu Hause hätte.
  • 5 zeigt eine Datenkarte die benutzt wird, um angeforderte Datenströme von den Plattenlaufwerken durch die Prozessoren und letztlich zu den Benutzern zu übertragen. Speziell nach Aufrufen einer Funktion, z.B. Abspielen, wird einem Benutzer innerhalb einer Serviceperiode ein Slot bzw. Schlitz zugeteilt. Eine endliche Zahl von Schlitzen existiert, z.B. 3200. Der tatsächliche Schlitz, dem ein Benutzer zugeteilt wurde, wird nachfolgend diskutiert, wird dynamisch zugewiesen und kann anfänglich ein beliebiger der verfügbaren 3200 Schlitze sein. Abhängig von den von den Benutzern benutzten Funktionen werden die Benutzer während nachfolgender Serviceperioden verschiedenen Schlitzen zuteilt. Jedoch werden, wie nachfolgend beschrieben wird, einige der 3200 möglichen Schlitze für die Ausführung spezieller Funktionen reserviert.
  • Im Allgemeinen repräsentiert jeder Schlitz sich wiederholende Zugriffe auf aufeinanderfolgende "Elemente" von Informationen innerhalb eines abgerufenen Datenblocks. Diese Elemente können ein Byte (8 Bit) besitzen oder weniger als ein Bit Informationen. Die tatsächliche Elementgröße ist applikationsabhängig. Nachfolgend wird, in Einklang mit dem beispielhaften Datenspeicherabbild der 4, angenommen, dass jedes Element vier 16-Bit-Wörter Videoinformationen und ein 16-Bit-Wort Paritätsinformationen besitzt. Zusätzlich gibt es 505 Plattenlaufwerke und zugeordnete Prozessoren (weitere 7 Prozessoren sind Reserve und können eingesetzt werden, wenn einer der anderen Prozessoren und Plattenlaufwerke versagt), die für 100 von 3200 möglichen Benutzern simultan auf 100 Elemente von Videoinformationen zugreifen. Daher definiert jede Zeile von Daten und Paritätswörtern die 100 simultan bedienten Schlitze. Innerhalb jedes Schlitzes wird der zugeteilte Benutzer wiederholt 16.000 mal bedient, und werden die 80.000 Wörter Daten, die mit diesen Zugriffen verknüpft sind, im lokalen Speicher (RAM) gespeichert. Während einer gegebenen Serviceperiode speichert jeder Prozessor für einen gegebenen Schlitz 16.000 Wörter in seinem lokalen Speicher, d.h. nach einer Serviceperiode, die 30 Benutzer bedient, sind 480.000 Wörter im lokalen Speicher jedes Prozessors abgelegt.
  • Innerhalb einer Serviceperiode werden 3000 Benutzer durch die 500 Prozessoren bedient. Fünf Prozessoren, d.h. eine Untergruppe von Prozessoren, wird während einer Serviceperiode nicht genutzt, um Benutzer zu bedienen. Diese Prozessoren (die Prozessoren 16 bis 20 in der Serviceperiode 1 von 5) werden nicht benutzt, um Benutzer mit Daten zu beliefern während ihre zugehörigen Plattenlaufwerke rekalibriert werden. Rekalibrierung ist ein bekannter Prozess, der von den meisten preiswerten Laufwerken periodisch durchgeführt wird, z.B. alle 10 bis 100 Betriebsminuten. Um sicherzustellen, dass die Rekalibrierung nicht zufällig erfolgt und den Datenzugriff nachteilig beeinflusst, zwingt das System jedes Plattenlaufwerk dazu, zu einem vorbestimmten Zeitpunkt zu rekalibrieren, z.B. während eines Rekalibrierungsschlitzes. Die Rekalibrierung der Untergruppe von Plattenlaufwerken wird innerhalb einer Serviceperiode abgeschlossen.
  • Die zwei Zeilen von Schlitzen am Ende der Serviceperiode sind für zwei spezielle Funktionen reserviert. Die erste Funktion greift zum zweiten Mal auf Elemente zu, die nicht unter Benutzung des Paritätsworts korrigiert werden können, z.B. wenn in einem einzigen Datenelement zwei Fehler aufgetreten sind. Auf die Plattenlaufwerke, auf deren fehlerhafte Elemente ein erstes Mal zugegriffen wurde, wird ein zweites Mal zugegriffen, um zu versuchen, die Daten wiederzugewinnen. Wenn die Daten ohne Fehler wiedergewonnen wurden, werden sie im lokalen Speicher am Speicherort der fehlerhaften Daten abgelegt. Weiterhin rekonfiguriert sich der Server selbst, wenn ein Prozessor versagt, um den fehlerhaften Prozessor mit einem der Ersatzprozessoren zu ersetzen. Wenn ein Plattenlaufwerk versagt, können seine Daten durch Korrektur mit dem Paritätswort wiedergewonnen werden. Das Laufwerk kann dann ersetzt werden und die paritätsrekonstruierten Daten werden benutzt, um die Originaldaten für das neue Laufwerk zu rekonstruieren.
  • Die zweite Funktion, die während der zweiten speziellen Zeile von Schlitzen aktiviert wird, platziert mehr Daten in die Plattenlaufwerke. Wenn zum Beispiel ein Benutzer einen Multimediastrom auswählt, der gegenwärtig nicht auf den Plattenlaufwerken abgelegt ist, wird diese Zeile benutzt, um die Daten des gewählten Multimediastroms in der gleichen Weise zu speichern, wie sie oben mit Bezug auf 4 erläutert wurde, d.h. einem Abspeichern von 80.000 Wörtern eines Videoprogramms über fünf Laufwerke, dann einem Abspeichern von weiteren 80.000 Wörtern über die nächsten fünf Laufwerke usw., bis das gesamte Programm gespeichert ist. Durch Wiederholen dieses Speichervorgangs in einer aufeinander folgenden Anzahl von Serviceperioden wird ein vollständiges Videoprogramm unter den Plattenlaufwerken verteilt gespeichert, ohne dass dies für den Datenwiedergewinnungsprozess der Benutzer Auswirkungen hat.
  • Um die nächstfolgende Plattenlaufwerksuntergruppe zu rekalibrieren, z.B. die Laufwerke 21 bis 25, wird die Rekalibrierungsfunktion in jeder Serviceperiode um einen Schlitz weitergezählt. Wie in 5 gezeigt, werden daher, wenn angenommen wird, dass alle Benutzer im Abspielmodus sind, alle Benutzer um einen Schlitz innerhalb einer jeden Serviceperiode weitergezählt. Die nächsten 80.000 Wörter Daten des Benutzers 1 werden nun durch die Prozessoren 6 bis 10 und die Plattenlaufwerke 6 bis 10 bereitgestellt, und die nächsten 80.000 Wörter Daten des Benutzers 2 werden nun durch die Prozessoren 11 bis 15 und die Plattenlaufwerke 11 bis 15 bereitgestellt, usw. Die Fehlerkorrektur und das Datenausfüllen werden wie oben beschrieben bereitgestellt. Folglich wird bei Benutzung der Abspielfunktion ein Benutzer sequentiell von einem Prozessor zum nächsten weitergezählt, um die verteilten Daten in der Reihenfolge wiederzugewinnen, in der sie abgelegt wurden, z.B. in Blöcken von 80.000 Wörtern.
  • Für weitere Funktionen wie den schnellen Vorlauf springt der Benutzer eine vorbestimmte Anzahl von Schlitzen nach vorne, anstelle die Daten sequentiell wiederzugewinnen. Wenn zum Beispiel der Benutzer 2 während des Schlitzes 2 Daten in der Serviceperiode 1 abruft und dann einen schnellen Vorlauf anfordert, wird das nächste Datenelement für den Benutzer 2 in der Serviceperiode 2 beispielsweise während Schlitz 22 abgerufen. Danach wird der Schlitz, von dem Daten für den Benutzer 2 wiedergewonnen wurden, um einen Zählerstand von 20 weitergezählt, bis die Schnellvorlauffunktion beendet ist. Das Ergebnis ist ein Schnellvorlauf durch die Daten, z.B. einem Videoprogramm. Das gleiche allgemeine Verfahren wird benutzt für einen besonders schnellen Vorlauf, den Rücklauf oder den schnellen Rücklauf der Informationen. Die Geschwindigkeit sowohl der schnellen Vorlauffunktion als auch der schnellen Rücklauffunktion wird durch die Zahl der übersprungenen Schlitze bestimmt. Vor jeder Serviceperiode muss daher jeder Benutzer neuen Schlitzen, abhängig von ihren angeforderten Funktionen, zugeordnet werden. Die Details dieses Verfahrens der erneuten Zuordnung wird weiter unten beschrieben.
  • Für eine Pausenfunktion wird ein Schlitz benutzt, um wiederholt auf Informationen des gleichen Plattenlaufwerks zuzugreifen, und zwar bis der Pausenbefehl in einen anderen Befehl geändert wird. Der Stoppbefehl unterbricht natürlich die Informationsverteilung zu diesem Benutzer am gegebenen Ort. Das gegenwärtige Plattenlaufwerk, auf das zugegriffen wird, wird mit einer Benutzeridentifikation (Benutzer-ID) in einer Tabelle gespeichert, sodass, wenn der Benutzer das Abspielen erneut aufnimmt, das System das Übertragen von Daten vom zuletzt zugegriffenen Laufwerk starten kann.
  • Als Folge des Datenwiedergewinnungsverfahrens wird während jeder Serviceperiode erreicht, dass der lokale Speicher jeder Untergruppe 16.000 Wörter für jeden der 30 Benutzer, den ein jeweiliger Prozessor bedient, enthält. Sobald eine Serviceperiode beendet ist, fährt das System mit dem Zugriff auf neue Daten innerhalb der nächstfolgenden Serviceperiode fort. Die im lokalen Speicher von der vorangegangenen Serviceperiode gespeicherten Daten werden während der relativ langen Zugriffszeiten, die mit den Plattenlaufwerken einhergehen, ausgegeben. Im Grunde genommen werden die Daten einer vorangegangenen Serviceperiode werden unter Benutzung des Ausgabezeitsequenzers (OTS, beschrieben mit Bezug auf 11) zum Multiplexschaltkreis ausgegeben, während simultan hierzu neue Daten im lokalen Speicher für die aktuelle Serviceperiode gespeichert werden.
  • Insbesondere zeigt 6 ein Flussdiagramm einer Datenwiedergewinnungsroutine 600, die während jeder Serviceperiode benutzt wird. Diese Routine wird simultan von jedem einzelnen Prozessor ausgeführt. Der Einfachheit halber erläutert die nachfolgende Beschreibung diese Routine, als ob sie auf einem einzelnen Prozessor ausgeführt würde, der Leser soll sich jedoch bewusst sein, dass die Routine simultan in 504 anderen Prozessoren ausgeführt wird.
  • Die Routine wird mit Schritt 602, bezeichnet mit "START", gestartet. Bei Schritt 604 initialisiert die Routine eine Anzahl von Tabellen, sodass die gegenwärtig aktiven Benutzer entsprechenden Schlitzen zugeteilt werden. Diese Tabellen beinhalten eine globale Zuteilungstabelle (GAT) und ein Paar lokaler Zuteilungstabellen (LAT). Das Paar LAT beinhaltet eine aktuelle LAT (CLAT) und eine nächste LAT (NLAT). Im Allgemeinen beinhalten diese Tabellen Informationen betreffend der gegenwärtigen Funktion von jedem Benutzerzeitschlitz, z.B. die Benutzer-ID, die dem Benutzer zugewiesen wurde, der gegenwärtige und der nächste Betriebsmodus dieses Benutzers, die Plattenadresse für die nächsten Daten, auf die zugegriffen wird, um diesen Benutzer zu bedienen, usw.
  • Insbesondere enthält die GAT für jeden Benutzer, z.B. 3000 Benutzer, Informationen. Eine Kopie der GAT wird im lokalen Speicher jedes Prozessors abgelegt. Jegliche Änderungen an der GAT, z.B. eine Änderung des Betriebsmodus des Benutzers, wird durch den Host-Computer aktualisiert. Jeder Eintrag in der Tabelle wird mit den Zahlen 1 bis 3000 versehen (entsprechend der Benutzer-ID) und beinhaltet den nächsten Betriebsmodus für jeden Benutzer sowie eine Speicheradresse auf einer Platte, die für diesen Modus den Datenabruf durchführen wird. Typischerweise ist die Plattenadresse die Adresse des ersten Worts von den 16.000 Wörtern auf die zugegriffen wird.
  • Andererseits sind die LAT mit jedem Prozessor individuell verknüpft, z.B. ein anderes LAT-Paar für jeden Prozessor. Die CLAT definiert die durch den zugehörigen Prozessor durchzuführenden Datenwiedergewinnungsoperation für die aktuelle Serviceperiode. Die CLAT besitzt eine Liste mit den Benutzer-IDs für die durch den Prozessor während einer Serviceperiode zu bedienenden Benutzer, den gegenwärtigen Betriebsmodus jedes Benutzers, und die Adresse der Daten, auf die zuzugreifen ist. Wie der Name andeutet definiert die NLAT die vom zugehörigen Prozessor während der nächsten Serviceperiode durchzuführende Datenwiedergewinnungsoperation. Die NLAT besitzt eine Liste von Benutzer-IDs der in der nächsten Serviceperiode zu bedienenden Benutzer, ihre Betriebsmodi und die Adressen der zuzugreifenden Daten.
  • In Schritt 604 von 6 werden daher die Tabelleneinträge für die gegenwärtig aktiven Benutzer aktualisiert. Danach werden die Benutzer in Schritt 606 bedient, z.B. wird wird auf Daten des Plattenlaufwerks unter Ausführung einer Benutzerserviceroutine 700 zugegriffen. Dann werden in Schritt 608 die Zuteilungstabellen aktualisiert, um den Benutzern neue Schlitze zum Benutzen während der nächsten Serviceperiode zuzuteilen. Die Benutzerneuzuteilung wird durch Ausführen einer Benutzerneuzuteilungsroutine 800 erreicht. Die Erzeugungsschleife 610 für die Serviceperioden der Benutzer wird wiederholt ausgeführt, um eine aufeinander folgende Serie von Serviceperioden zu erzeugen, die ein wiederholtes Abrufen von Daten mit sich bringt und dann die Neuzuteilung der Benutzer.
  • Wie in 7 gezeigt, führt unter der Annahme, dass die Benutzer schon Schlitzen zugeteilt wurden, die Benutzerserviceroutine 700 alle Funktionen aus, um eine Benutzeranfrage nach Daten durchzuführen. Die Benutzerserviceroutine wird bei Schritt 702 gestartet und wird bis Schritt 704 fortgesetzt, wo die Routine nachfragt, ob der diese Routine ausführende Prozessor innerhalb eines thermischen Rekalibrierungsstreifens ist, z.B. eine vertikale Serie von Schlitzen (siehe 5), die benutzt werden um eine Plattenlaufwerksrekalibrierung vorzunehmen. Die GAT, CLAT und NLAT besitzen in einem Modusfeld jeder Tabelle eine Anzeige dafür, ob das Plattenlaufwerk rekalibriert werden muss. Wenn die Anfrage positiv beantwortet wird, veranlasst die Routine in Schritt 706, dass der mit dem Plattenlaufwerk verknüpfte Prozessor eine thermische Rekalibrierung seines Plattenlaufwerks durchführt. Alternativ verläuft die Routine entlang des Nein-Pfades bis zum Schritt 708, wenn die Anfrage bei Schritt 708 negativ beantwortet wird.
  • Bei Schritt 708 wird auf Daten von jedem der 30 Benutzer, die von dem diese Routine durchführenden Prozessor behandelt werden, zugegriffen. Solch ein Datenzugriff veranlasst den Prozessor, 16.000 Wörter für jeden der 30 Benutzer abzurufen. Die Startadresse der 16.000 Wörter ist für jeden der Benutzer in der CLAT enthalten. Der Prozessor gewinnt das Datenwort an dieser Adresse und ruft dann die nächsten 15.999 Wörter im Plattenlaufwerk ab. Jeder Benutzer, verknüpft mit jedem Prozessor, wird auf diese Weise sequentiell bedient.
  • Weiterhin führt der Prozessor, da diese Daten vom Plattenlaufwerk abgerufen und im lokalen Speicher abgelegt werden, eine Fehlerkorrektur durch. Da die Daten vom Plattenlaufwerk wiedergewonnen werden, berechnen sowohl der Prozessor, als auch der Laufwerkscontroller Prüfwörter der wiedergewonnenen Daten unter Benutzung eines Faltungsalgorithmus. Bei Abschluss des Wiedergewinnens sendet der Plattencontroller seine Prüfwörter zwecks Vergleich mit den vom Prozessor intern berechneten Werten zum Prozessor. Dieser Vergleich erlaubt es, Fehler in der Übertragung von Daten zum Prozessor zu detektieren.
  • Nachdem die Daten für einen bestimmten Benutzer zum lokalen Speicher übertragen sind, werden die Daten für den nächsten Benutzer abgerufen. Während des Abrufens der Daten des nächsten Benutzers werden die gefundenen Fehler in den Daten des vorhergehenden Benutzers korrigiert. Um den Fehlerkorrekturprozess zu ermöglichen, teilen sich benachbarte Prozessoren über den IPC-Bus kürzlich wiedergewonnene Datenwörter und ein Paritätswort, um eine Paritätsüberprüfung vorzunehmen. Das Paritätswort in Kombination mit den anderen vier Wörtern in einem Element kann benutzt werden um ein beliebiges Datenwort, das vom CRC-Fehlerdetektionsalgorithmus als fehlerhaft detektiert wurde, zu korrigieren. Wenn mehr als ein Wort fehlerhaft ist, können die Fehler nicht korrigiert werden. Deshalb definiert die Routine 700 in Schritt 710 einen speziellen Fehlerkorrekturschlitz, der einmal benutzt wird, nachdem alle Benutzerdaten wiedergewonnen wurden. In diesem Schlitz wird ein zweites Mal auf die fehlerhaften Daten zugegriffen, um zu versuchen sie korrekt wiederzugewinnen. Dieser Schlitz erlaubt es wie alle anderen, 16.000 Wörter durch einen vorgegebenen Prozessor zurückzugewinnen.
  • Bei den Schritten 712 und 714 werden neue Daten in das mit dem Prozessor verknüpfte Plattenlaufwerk geladen. Insbesondere wird Schritt 712 benutzt, um codierte Daten von Livesendungen oder aufgezeichneten Sendungen auf das Plattenlaufwerk zu speichern. Bei Schritt 714 kann ein Block von 16.000 Wörtern von Videoinformationen auf dem Plattenlaufwerk gespeichert werden. Zuletzt kehrt die Routine 700 zur Serviceperioden-Erzeugungschleife 610 von 6 zurück.
  • Es soll angemerkt werden, dass, während die Datenwiedergewinnungsroutine ausgeführt wird, der Prozessor während der vorangegangenen Serviceperiode auf die im lokalen Speicher abgelegten Daten zugreift und die Daten an den OTS ausgibt. Der OTS reorganisiert die Daten, um einen standardisierten Datenstrom zu erzeugen, der vom Neuzuteilungsprozess nicht verändert wird. In anderen Worten stellt der OTS sicher, dass, was für auch immer ein Schlitz einem Benutzer zugeordnet wird, die Benutzerdaten für den Multiplexerschaltkreis richtig reorganisiert werden.
  • 8 zeigt die Benutzerreallokationsroutine 800. Einmal pro Serviceperiode weist diese Routine jedem Benutzer einen geeigneten Schlitz zu, welcher die gegenwärtige Betriebsweise (Funktion) ausführt. Die Routine beginnt bei Schritt 802 fährt bis Schritt 804 fort, worin die Benutzer in Übereinstimmung mit ihrer gegenwärtigen Funktion und der Funktion, die sie zur Ausführung in der nächsten Serviceperiode angefordert haben, priorisiert werden.
  • Allgemein wird diese Routine benutzt um die 30 Benutzer, die vom Prozessor behandelt werden, in 30 mögliche Schlitze, die während der Serviceperiode verfügbar sind, neu zu verteilen. Die Neuzuteilung wird durch Vergleich der Informationen in den verschiedenen Zuteilungstabellen bewerkstelligt. Diese Informationen informieren einen Prozessor von der Priorität eines bestimmten Benutzers, z.B. muss ein bestimmter Benutzer auf Daten von einem bestimmten Prozessor aus zugreifen, oder kann der Benutzer auf Informationen von benachbarten Prozessoren aus zugreifen, ohne dass dies Auswirkungen auf die angesehenen Daten hat. Zum Beispiel wird die höchste Priorität, Priorität 1, immer denjenigen Benutzern zugewiesen, die gegenwärtig im Abspielmodus sind, und die in der nächsten Serviceperiode auch im Abspielmodus sind. Diesen Benutzern müssen die nächsten Serien von Datenwörtern von den jeweiligen Platten (plattenkritisch) bereitgestellt werden, und zur richtigen Zeit (zeitkritisch), denn sonst wird der Benutzer einen Sprung oder ein Überspringen im Video feststellen. Zusätzlich wird dem thermischen Rekalibrierungsprozess die Priorität 1 zugewiesen.
  • Auf der anderen Seite müssen die Benutzer, die aktuell zum Beispiel den schnellen Vorlauf benutzen, und die in der nächsten Serviceperiode den Abspielmodus benutzen werden, nicht mit dem exakt nächsten Satz an Datenwörtern (nicht plattenkritisch) versorgt werden, sondern müssen zur geeigneten Zeit (zeitkritisch) mit den Datenwörtern versorgt werden. Wenn die bereitgestellten Videodaten, wenn das Video erneut im Abspielmodus beginnt, mit einem Versatz von 80.000 Wörtern bereitgestellt werden, wird dies der Benutzer nicht wirklich bemerken. Daher wird den Benutzern, die vom schnellen Vorlauf in den Abspielmodus wechseln, eine geringere Priorität zugewiesen, Priorität 2. Die nachfolgende Tabelle fasst die verschiedenen Modi und ihre Prioritätszuordnungen zusammen. Tabelle 1 Teilnehmerprioritätstabelle
    Figure 00200001
    wobei
    zeitkritisch
  • 1
    = muss in dieser Serviceperiode bedient werden, spezielle Ausgabe
    2
    = muss in dieser Serviceperiode bedient werden, allgemeine Ausgabe
    3
    = muss so schnell wie möglich bedient werden, keine vorhergehende Ausgabe
    plattenkritisch
    1
    = muss durch diese Plattenuntergruppe bedient werden
    2
    = muss innerhalb +/–1 Plattenuntergruppe bedient werden
    3
    = muss innerhalb +/– ein paar Plattenuntergruppen bedient werden
    4
    = muss innerhalb +/– vielen Plattenuntergruppen bedient werden
  • Spezielle Ausgaben sind solche, die für den Benutzer bereitgestellt werden müssen, um eine genaue Datenwiederherstellung zu ermöglichen. Im Allgemeinen sind die Videodaten komprimiert und es gibt innerhalb der Daten gewisse Dekomprimierungskontrollworte, die zur richtigen Zeit zur Set-Top-Einheit des Benutzers gesendet werden müssen, um eine korrekte Datendekomprimierung und eine richtige Bildschirmanzeige zu ermöglichen. Diesen speziellen Ausgaben (d.h. Dekomprimierungskontrollworte und die hiermit verknüpften Daten) wird eine höhere zeitkritische Priorität als der allgemeinen Ausgabe zugewiesen. Die allgemeine Ausgabe enthält keine komprimierten Videodaten, kann aber Kontrolldaten besitzen, die für die Funktionalität der Set-Top-Einheit notwendig sind. Wenn es keine vorhergehende Ausgabe gab, kann die angeforderte Ausgabe nicht sehr zeitkritisch sein und die Daten können eher in einer der späteren Serviceperioden erzeugt werden als in der unmittelbar nächsten Serviceperiode, ohne dass dies Auswirkungen auf den Betrachter hat. Wenn man zum Beispiel vom Stoppmodus zum Abspielmodus kommt, würde eine Verzögerung von einer Serviceperiode beim erneuten Start des Programms keine großen Auswirkungen auf die Beurteilung des Videoprogramms durch den Zuschauer haben.
  • Die mit einem bestimmten Prozessor verknüpfte CLAT definiert den Betriebsmodus (die Funktion), der von jedem Benutzer, der aktuell durch diesen Prozessor bedient wird, ausgeübt wird. Wenn während der Serviceperiode einer der Benutzer seine Funktion ändert, aktualisiert der Host-Computer die GAT mit den neuen Funktionen des Benutzers und den Datenadressen, die zu diesem Benutzer gesendet werden müssen, um die neue Funktion zu realisieren. Der Host-Computer sendet allen Prozessoren diese Modusänderung.
  • Während der aktuellen Serviceperiode ruft der Prozessor die GAT-Informationen der gegenwärtig bedienten Benutzer ab. Diese GAT-Information wird in die NLAT eingefügt. Durch Vergleich der NLAT-Funktionen mit den CLAT-Funktionen bestimmt der Prozessor in Übereinstimmung mit Tabelle 1 die Priorität für jeden der gegenwärtigen Benutzer. Zusätzlich werden bei Schritt 804 die NLAT und die CLAT ausgelagert und zurückgeschoben, d.h. die Zeiger auf jede Tabelle werden ausgelagert und zurückgeschoben, sodass die Informationen der CLAT nun die Informationen der NLAT sind und umgekehrt. Da jeder der Prozessoren den gleichen Priorisierungsprozess erledigt sind nun alle Benutzer priorisiert, und schreitet die Benutzerneuzuteilungsroutine 800 mit Schritt 806 fort.
  • Bei Schritt 806 werden die Benutzer der Priorität 1 unter Benutzung der Neuzuteilungsroutine 900 für die Priorität 1 geeigneten Schlitzen neu zugeteilt. Nachdem die Benutzer der Priorität 1 neu zugeteilt wurden, teilt die Routine 800 die Benutzer der Priorität 2, 3 und 4 durch jeweilige Abarbeitung der Neuzuteilungsroutine 1000, 1100 und 1200 für die Benutzer der Prioritäten 2, 3 und 4 neu zu. Im Allgemeinen versucht jeder Prozessor unter Benutzung dieser Routinen, die Benutzer mit niedrigerer Priorität einem zugewiesenen Schlitz zuzuteilen. Wenn jedoch vermutet wird, dass zu viele Benutzer durch einen einzigen Prozessor bedient werden sollen, werden die überzähligen Benutzer von einem anderen Prozessor in einem anderen Schlitz bedient. Jede dieser Routinen wird unten im Detail erläutert. Die Benutzerneuzuteilungsroutine 800 kehrt bei Schritt 814 zur Benutzerroutine 700 zurück.
  • 9 stellt die Neuzuteilungsroutine 900 für die Priorität 1 dar. Die Routine beginnt bei Schritt 902 und macht bei Schritt 904 weiter. Bei Schritt 904 reicht die Routine bei Benutzung des IPC-Buses die Benutzer-IDs der Benutzer der Priorität 1 seiner CLAT an einen benachbarten Satz an Prozessoren weiter, die Benutzer im nächsten Schlitz bedienen werden, z.B. wird die ID fünf Prozessoren auf der rechten Seite weitergereicht. Simultan empfängt der Prozessor Identifikationen der Benutzer der Priorität 1 von einem der Prozessoren, die den Schlitz auf der linken Seite definieren. Diese Prozessor-IDs werden in die CLAT eingefügt.
  • Bei Schritt 906 müssen die in der GAT gespeicherten Benutzerdatenadressen für diejenigen Benutzer aktualisiert werden, die vom letzten Schlitz in einer Reihe, z.B. die Prozessoren 501 bis 505, zum ersten Schlitz in der nächsten Reihe, z.B. Prozessor 1 bis 5, weitergereicht wurden. Allgemein werden sich während des Weiterreiches eines Benutzers von einem Schlitz zum nächsten die Startadressen ihrer benötigten Daten nicht ändern. Wenn jedoch ein Benutzer vom letzten Schlitz dem ersten Schlitz in einer neuen Reihe zugeteilt wird, wird die erforderliche Datenadresse um 16.000 Adressen erhöht. Dies geschieht wegen der Art und Weise, wie Daten über die Plattenlaufwerke verteilt sind (siehe 4 und seine zugehörige Beschreibung). Folglich muss die GAT-Adresse für diesen Benutzer aktualisiert werden.
  • Bei Schritt 908 kehrt die Neuzuteilungsroutine 900 für die Priorität 1 zur Benutzerneuzuteilungsroutine 800 zurück.
  • 10 stellt ein Flussdiagramm der Prioritätsroutine 1000 für die Prioritäten 2, 3 und 4 dar. Die Routine wird beschrieben werden wie sie Benutzer der Priorität 2 neu zuteilt. Um jedoch Benutzer der Prioritäten 3 oder 4 zu zuzuteilen, wird die Routine für die Verarbeitung dieser Benutzer lediglich erneut ausgeführt.
  • Die Routine 1000 beginnt bei Schritt 1002 und fährt mit Schritt 1004 fort. Bei Schritt 1004 reicht der Prozessor bei Benutzung des IPC-Buses die Benutzer-IDs von Benutzern der Priorität 2 zu einem Zielprozessor weiter, der typischerweise eine gewisse Anzahl von Prozessoren entfernt ist. Die genaue Zahl von übersprungenen Prozessoren (oder Untergruppen von Prozessoren) hängt von der Priorität der Benutzer ab. Zum Beispiel überspringt ein Benutzer im schnellen Vorwärtsspulmodus (Benutzer der Priorität 2) abhängig von der Systemkonfiguration einige zehn oder sogar Hunderte von Prozessoren. Daher weist die Routine die Benutzer-ID abhängig vom Modus einem geeigneten aber entfernten Prozessor zu. Simultan empfängt der Prozessor die Benutzer-IDs von Benutzern, die diesem Prozessor zugeteilt werden sollen. Wenn der jeweilige Prozessor nicht seine 30 verfügbaren Schlitze mit Benutzern der Priorität 1 vollständig belegt hat, akzeptiert er Benutzer der Priorität 2 und platziert sie in seiner CLAT. Wie bei der Neuzuteilungsroutine für die Priorität 1 muss die Neuzuteilungsroutine für die Priorität 2 bei Schritt 1006 die Adresse in der GAT für die Benutzer erhöhen, die Zeilen getauscht haben.
  • Bei Schritt 1006 fragt die Routine nach, ob die Zahl der gegenwärtig zugeteilten Benutzer der Priorität 2 größer als die maximale Zahl erlaubter Benutzer ist, z.B. 30. Wenn dies der Fall ist, müssen die überzähligen Benutzer neu zugeteilt werden. Wenn daher die Nachfrage bejaht wird, so fährt die Routine entlang des Ja-Pfades bis zu den Schritten 1010 und 1012 weiter. Die beiden Schritte reichen wiederholt Benutzer-IDs weiter, empfangen solche und aktualisieren, sofern erforderlich, die GAT, bis keine Benutzer der Priorität 2 mehr neu zugeteilt werden müssen. Zu diesem Zeitpunkt wird die Anfrage bei Schritt 1008 bejaht und kehrt die Routine bei Schritt 1014 zur Benutzerneuzuteilungsroutine 800 zurück.
  • Um Benutzer der Prioritäten 3 und 4 neu zuzuteilen wird die in 10 dargestellte Routine für diese Benutzer erneut ausgeführt. Letztlich werden alle Benutzer geeigneten Schlitzen (Prozessoren) zugeteilt.
  • Nach der Ausführung der vorangegangenen Routinen sind pro Serviceperiode für jeden der 30 Benutzer 16.000 Datenwörter im lokalen Speicher innerhalb des zugeordneten Prozessors gespeichert. Eine Gruppe von vier aufeinander folgenden Prozessoren definiert ein Datenelement mit 4 Datenwörtern (64 Bit) für einen bestimmten Benutzer. Das Paritätswort wird nun ignoriert. Da die Benutzer dynamisch zugeteilt werden, ist die genaue Lage der Daten eines bestimmten Benutzers willkürlich. Um die Benutzung eines konventionellen Multiplexschaltkreises zu ermöglichen, müssen die Daten, wenn auf sie zugegriffen und sie vom Server ausgegeben werden, in einer wiederholbaren Reihenfolge sein. Daher wird zum Neuordnen der Benutzerdaten in eine vorbestimmte Ordnung, die vom Multiplexschaltkreis leicht benutzt werden kann, um die Daten an die Benutzer auszugeben, ein Ausgabezeitsequenzer (OTS) benutzt werden, um die Daten neu zu ordnen.
  • 11 stellt ein Blockdiagramm des OTS 1100 dar. Allgemein untersucht dieser Schaltkreis jedes Datenelement und ordnet es in einer vorbestimmten Weise neu an. Der Einfachheit halber sei die vorbestimmte Ordnung eine aufsteigende Ordnung sortiert nach Benutzer-IDs, z.B. von 1 bis 3000. Durch Benutzung des OTS wird eine willkürliche Ordnung der Benutzerausgabedaten zu einer 64 Bit breiten Sequenz von Ausgabedaten in einer Ordnung nach aufsteigenden Benutzer-IDs. Die 64 Bit breite Sequenz ist als eine Folge von 64-Bit-Datenelementen definiert, die über 64 parallele Leitungen ausgegeben werden und wobei das erste Bit vom ersten Datenelement jedes Benutzers in Zeile 1 ist, das zweite Bit vom ersten Datenelement jedes Benutzers in Zeile 2 usw. für alle 64 Bits in einem Datenelement. Die 64 parallelen Leistungen tragen daher ein Bit für jedes Benutzerdatenelement, das mit 3000 Benutzern verknüpft ist. Die Elemente werden von 1 bis 3000 angeordnet, werden dann für den nächsten Satz an Datenelementen wiederholt, usw. Folglich wurde die willkürlich geordnete Dateneingabe einer standardisierten numerischen Ordnung unterzogen, die wiederholbar ist, obwohl die Benutzer anderen Prozessoren zugeteilt sein können. Als Ergebnis hat der OTS-Schaltkreis im Wesentlichen als Eingabe einen ersten gemultiplexten Datenstrom und als Ausgabe einen zweiten gemultiplexten Datenstrom. Der zweite gemultiplexte Datenstrom ist eine reorganisierte Version des ersten Datenstroms.
  • Insbesondere besitzt der OTS einen Hauptzähler 1108, eine Mehrzahl von Datenelementauswahlschaltkreisen 1102, eine Mehrzahl von Multiplexern (MUX) 1104 und ein Ausgaberegister 1106. Der Hauptzähler zählt von 0 bis 2999, und springt dann zur 0 über, d.h., der Zähler hat einen Zählerstand entsprechend der Zahl der Benutzer. Wenn Benutzerdatenelemente für die Ausgabe bereit sind, wird jedes innerhalb jedes Datenelementauswahlschaltkreises zusammen mit einer Benutzer-ID gespeichert, die zum abgelegten Datenelement korrespondiert. Die Datenelementauswahlschaltkreise speichern daher kumulativ Datenelemente (4 Datenwörter oder 64 Bit) für jeden einzelnen Benutzer, z.B. für die Benutzer 1 bis 3000.
  • Wenn der Zähler sequentiell von 1 bis 3000 zählt, adressiert dieser Zählerstand den Datenelementauswahlschaltkreis und erzeugt für jeden Zählerstand des Hauptzählers ein Datenelement von einem der Schaltkreise. Die sequentiell verbundenen MUX 1104 reichen zur Umtaktung jedes der Datenelemente zu einem 64-Bit-Register 1106. Nach dem Umtakten ist die Ausgabe eine gemultiplexte Serie von Datenelementen, die in aufsteigender Ordnung nach Benutzer-IDs sortiert sind.
  • Insbesondere besitzt der Datenelementauswahlschaltkreis eine Registeranordnung 1110, die imstande ist die Datenelemente von allen Benutzern innerhalb einer Serviceperiode zu speichern und doppelt zu puffern, z.B. 30, ebenso wie die Benutzer-ID für jedes der 4 Wortelemente. Die Verwendung der doppelten Pufferung macht es der Anordnung möglich, Elemente zu speichern, während sie simultan Elemente abruft. Die Ausgaberegister der 16 Prozessoren (eine Prozessorgruppe) sind mit einem Datenelementauswahlschaltkreis 1102 verbunden. Jedes 64-Bit-Register 1114 innerhalb dieser Anordnung ist mit einem Wahlschalter 1112 verbunden. Wenn der Hauptzähler zählt und wenn sein Zählerstand der Benutzer-ID innerhalb der Anordnung 1110 entspricht, so wird das mit dieser Benutzer-ID verknüpfte Datenelement durch den Wahlschalter zum Verzögerer 1115 durchgereicht. Wenn der Hauptzähler die Null erreicht, wird in der typischen Art der Doppelpufferung auf die Register, die vorher Daten gespeichert haben, zugegriffen, um Daten abzurufen.
  • Zusätzlich wird, wenn ein Datenelement durch den Wahlschalter durchgereicht wird, ein Übereinstimmungs- bzw. MATCH-Signal erzeugt, das anzeigt, dass bei diesem bestimmten Zählerstand dieser bestimmte Datenelementauswahlschaltkreis 1102 eine Ausgabe hat. Das Datenelement und das MATCH-Signal werden in einem Verzögerer 1115 für eine vorbestimmte Zahl von Taktzyklen gehalten. Insbesondere entspricht die vorbestimmte Zahl von Taktzyklen einem Taktzyklus für jede Gruppe von 16 Prozessoren von links, das dieser Datenelementauswahlschaltkreis repräsentiert. Zum Beispiel hat der Datenelementauswahlschaltkreis, der Daten von der ganz linken Prozessorgruppe besitzt, keine Verzögerung, der Schaltkreis, der Daten von der nächsten angrenzenden Prozessorgruppe besitzt, hat eine Verzögerung von einem Taktzyklus, der Schaltkreis, der Daten von der nächsten angrenzenden Prozessorgruppe besitzt, hat zwei Taktzyklen Verzögerung etc.
  • Nachdem eine geeignete Verzögerung eingestellt wurde, wird das Datenelement an einen Eingang des MUX 1104 angelegt. Die Eingabewahl wird vom MATCH-Signal gesteuert. Wird das MATCH-Signal bestätigt, so wählt auf diese Weise der MUX die Eingabe aus, die zu dem Datenelementauswahlschaltkreis verbindet, der das MATCH-Signal erzeugt hat. Andernfalls macht der MUX mit der anderen Eingabe weiter. Bei Benutzung dieser Anordnung wird für jeden Zählerstand des Hauptzählers ein Datenelement erzeugt. Das Datenelement, das gerade durch jeden MUX gereicht wird, wird in ein 64 Bit breites Register eingetaktet. Durch jeden Taktzyklus werden die Datenelemente durch die MUX 1104 und ihre zugehörigen Register 1116 zu den Ausgaberegistern 1116 gereicht. Folglich ist die Ausgabe des Registers 1106 eine Serie 64 Bit breiter Datenelemente, die sequentiell in der Reihenfolge der Benutzer-IDs geordnet sind, z.B. von 1 bis 3000.
  • In der vorangegangenen Erläuterung besaß der OTS-Schaltkreis einen einzigen Haupttakt und eine Mehrzahl von Verzögerungsschaltkreisen. Solche Verzögerungsschaltkreise erfordern eine zusätzliche Verschaltung auf dem integrierten Schaltkreis des OTS. Daher wird in einer alternativen Ausführungsform eine Mehrzahl von Haupttakten benutzt, die jede individuell mit einem Datenelementauswahlschaltkreis verbunden sind. Der Anfangszählerstand jedes Haupttaktes ist voreingestellt, um inhärent eine Zählerstandverzögerung vorzugeben. Zum Beispiel wird, wenn der ganz linke Hauptzähler mit einem Zählerstand von 0 initialisiert wurde, der nächste benachbarte Zähler mit einem Zählerstand von 2998 initialisiert, usw. Die Zähler erzeugen eine geeignete Verzögerung (1 Taktzyklus für jeden Datenelementauswahlschaltkreis) wenn Datenelemente von den Registeranordnungen abgerufen werden.
  • Der neu geordnete Strom an Datenelementen lässt sich leicht von einem Multiplexschaltkreis handhaben, um die Datenelemente zu den geeigneten Benutzernetzwerken zu verteilen. Es sollte angemerkt werden, dass für eine vereinfachte Beschreibung der OTS als ein separater Schaltkreis der Prozessorsubsysteme beschrieben wurde. Der Fachmann wird jedoch erkennen, dass der OTS auch leicht im Prozessorsubsystem integriert sein kann, sodass die Registeranordnung zwischen den Subsystemen verteilt ist.
  • Obwohl verschiedene Ausführungsformen, welche die Lehre der Erfindung beinhalten, hierin gezeigt und im Detail beschrieben wurden, wird der Fachmann leicht viele andere abgewandelte Ausfüh rungsformen entwickeln, die ebenfalls diese Lehren beinhalten. Die hier offenbarte Vorrichtung und das Verfahren finden, neben anderen Anwendungen Verwendung in Videoservern, in abbildenden Systemen für medizinische Zwecke, für spezielle Effekte und Animationen sowie bei ortsbasierten Unterhaltungsystemen.

Claims (13)

  1. Verfahren zum Speichern von Daten in einem Mehrfachbenutzerdatenverteilungssystem (106) mit einer Mehrzahl von Informationsspeichereinrichtungen (224n, 226n, 228n), wobei das Verfahren die Schritte aufweist: a) Bereitstellen eines kontinuierlichen Datenstroms (400), der in diskrete Segmente (W1–W11) unterteilt wird, b) Aufteilen der Mehrzahl von Informationsspeichereinrichtungen (224n, 226n, 228n) in eine Mehrzahl von Untergruppen von Informationsspeichereinrichtungen, wobei jede Untergruppe zumindest zwei Informationsspeichereinrichtungen aufweist, c) Auswählen eines ersten Satzes bzw. ersten Gruppe von sequentiellen diskreten Segmenten des Datenstroms für das Speichern in einem der Untergruppen von Informationsspeichereinrichtungen, d) Speichern des ausgewählten ersten Satzes von diskreten Datensegmenten in einem streifenförmigen Muster in einer ersten der Untergruppen von Informationsspeichereinrichtungen und e) Wiederholen des diskreten Segmentauswahlschrittes für einen nächsten Satz von sequentiellen diskreten Segmenten, die sequentiell auf den vorher ausgewählten Satz von diskreten Segmenten in den Datenstrom folgen, und Wiederholen des Speicherschrittes für diesen nächsten Satz von Segmenten, der in einem streifenförmigen Muster in einer nächsten Untergruppe von Informationsspeichereinrichtungen gespeichert wird, wobei die nächste Untergruppe sich von der Untergruppe, die in dem vorhergehenden Speicherschritt verwendet wurde, unterschiedet, e1) so daß die gespeicherten diskreten Segmente über alle Untergruppen von Informationsspeichereinrichtungen eine Mehrzahl von zusammenhängenden Blöcken von gespeicherten Daten mit einer vorbestimmten Größe bilden, wobei jeder Block mit einer einzelnen der Untergruppen von Informationseinrichtungen verknüpft ist und einem Abschnitt der Speicherkapazität seiner verknüpften Untergruppe entspricht, und e2) so daß die diskreten Segmente, die jeden der Datenblöcke bilden, ein streifenförmiges Muster in jedem Block und über die Mehrzahl von Untergruppen von Informationsspeichereinrichtungen haben.
  2. Verfahren nach Anspruch 1, das weiterhin das gleichzeitige Speichern von Gruppen von diskreten Datensegmenten in jeder Untergruppe von Informationsspeichervorrichtungen aufweist.
  3. Verfahren nach Anspruch 1, bei dem die Datenblöcke sequentiell in der Untergruppe von Informationsspeichereinrichtungen gespeichert werden, so daß Datenblöcke ein Streifenmuster von zusammenhängenden Blöcken entlang der Mehrzahl von Untergruppen von Informationsspeichereinrichtungen bilden.
  4. Verfahren nach Anspruch 1, das weiterhin die Schritte aufweist: Zuweisen jedes Benutzers innerhalb der Mehrzahl von Benutzern zu zumindest einem Prozessor innerhalb einer Mehrzahl von parallelen Prozessoren, die jeweils mit einer entsprechenden der Informationsspeichereinrichtungen verbunden sind, wobei einer der zugewiesenen Prozessoren einen Slot innerhalb einer Dienstperiode, die eine Mehrzahl von Slots aufweist, darstellt, Zugreifen für jeden der Benutzer und in Antwort auf einen Benutzerbefehl unter Verwendung des zugewiesenen Prozessors auf ein spezifiziertes diskretes Datensegment innerhalb einer Informationsspeichereinrichtung, die mit dem zugewiesenen Prozessor verknüpft ist, Versorgen jedes Benutzers mit einem entsprechenden spezifizierten diskreten Datensegment, erneutes Zuweisen jedes Benutzers zu einem anderen Prozessor, der einen anderen Slot innerhalb einer nachfolgenden Dienstperiode darstellt, abhängig von dem gegenwärtigen Betriebsmodus, der von jedem der Benutzer ausgewählt wird und Wiederholen der Zugriffs-, Speicher- und Neuzuweisungsschritte, um einen kontinuierlichen Strom von zugegriffenen diskreten Datensegmenten für jeden der Benutzer zu erzeugen.
  5. Verfahren nach Anspruch 4, wobei die Zugriffs-/Liefer- und Neuzuweisungsschritte sequentielle Dienstperioden bzw. Serviceperioden festlegen, während denen jeder Benutzer mit Daten beliefert wird.
  6. Verfahren nach Anspruch 5, bei dem der Neuzuweisungsschritt weiterhin die Schritte aufweist: Erneutzuweisen jedes der Benutzers auf Basis eines ausgewählten Betriebsmodus für jeden der Benutzer für die Implementierung in einer nachfolgenden Serviceperiode.
  7. Verfahren nach Anspruch 6, das die Schritte aufweist: Aktualisieren einer globalen Zuweisungstabelle, die Betriebsmoden des Benutzers und Informationsspeichereinrichtungsadreßorte für die Datensegmente, auf die zugegriffen wird, enthält, in Antwort auf irgendwelche Veränderungen des Betriebsmodus, der von irgendeinem der Benutzer ausgewählt wird, Vergleichen des Betriebsmodus, der in der gegenwärtigen Serviceperiode verwendet wird, mit dem Betriebsmodus in der globalen Zuweisungstabelle, Priorisieren jedes Benutzers basierend auf den Ergebnissen des Vergleichsschrittes und Neuzuweisen der Benutzer zu den Prozessoren basierend auf der Priorisierung der Benutzer.
  8. Verfahren nach Anspruch 7, bei dem die Priorisierung durchgeführt wird durch Bestimmen einer Zeit und einer Platte, die kritisch für das diskrete Datensegment ist, das jedem Benutzer bereitgestellt wird, in Antwort auf den Betriebsmodus, der von jedem Benutzer ausgewählt wird.
  9. Verfahren nach Anspruch 8, bei dem jeder der Benutzer einer Untergruppe der Mehrzahl von Prozessoren und Informationsspeichereinrichtungen zugewiesen und neuzugewiesen wird, so daß von der Untergruppe der Mehrzahl von Informationsspeichereinrichtungen auf Daten zugegriffen wird, wobei die Daten, auf die zugegriffen wird, von jeder Informationsspeichereinrichtung in der Untergruppe von Informationsspeichereinrichtungen verkettet sind, um ein Datenelement zu bilden.
  10. Verfahren nach Anspruch 9, das die Schritte des wiederholten Zugreifens auf die Informationsspeichereinrichtungen innerhalb jeder Untergruppe aufweist, um eine Serie von Datenelementen zu erzeugen, die den Block von Datensegmenten für jeden der Benutzer darstellen und das Liefern der Reihe von Datenelementen zu jedem Benutzer aufweist.
  11. Verfahren nach Anspruch 9, das die Schritte aufweist: Bereitstellen eines neuen Stroms von kontinuierlichen diskreten Datensegmenten, Speichern, während einer Serviceperiode, des neuen Stromes von kontinuierlichen diskreten Segmenten von Daten innerhalb der Informationsspeichereinrichtungen, während, bei derselben Dienstperiode, die Prozessoren Datensegmente zu den Benutzern liefern.
  12. Verfahren nach Anspruch 1, das weiterhin in einem Fall, wo alle Untergruppen von Informationsspeichereinrichtungen ein oder mehrere Male verwendet wurden in einer vorbestimmten Ordnung von Untergruppen, den Schritt des erneuten Verwendens der Untergruppen für das Speichern ausgewählter nächster Gruppen von sequentiellen diskreten Segmenten in derselben vorbestimmten Ordnung der Untergruppen.
  13. Verfahren nach Anspruch 1, das das gleichzeitige Speichern des Satzes von diskreten Datensegmenten innerhalb einer Untergruppe von Informationsspeichereinrichtungen aufweist.
DE69534248T 1994-07-19 1995-07-17 Mehrbenutzersystem für Datenspeicherung, -zugriff und -verteilung, mit verteilter Speicherung eines kontinuierlichen Datenstromes Expired - Lifetime DE69534248T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/275,742 US5671377A (en) 1994-07-19 1994-07-19 System for supplying streams of data to multiple users by distributing a data stream to multiple processors and enabling each user to manipulate supplied data stream
PCT/US1995/008640 WO1996002931A1 (en) 1994-07-19 1995-07-17 Multiple user data storage, retrieval and distribution system
US275742 2001-03-14

Publications (2)

Publication Number Publication Date
DE69534248D1 DE69534248D1 (de) 2005-07-07
DE69534248T2 true DE69534248T2 (de) 2006-05-04

Family

ID=23053618

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69534248T Expired - Lifetime DE69534248T2 (de) 1994-07-19 1995-07-17 Mehrbenutzersystem für Datenspeicherung, -zugriff und -verteilung, mit verteilter Speicherung eines kontinuierlichen Datenstromes

Country Status (8)

Country Link
US (4) US5671377A (de)
EP (2) EP1548606A3 (de)
JP (1) JP4195725B2 (de)
KR (2) KR100374070B1 (de)
CA (2) CA2195431C (de)
DE (1) DE69534248T2 (de)
ES (1) ES2240976T3 (de)
WO (1) WO1996002931A1 (de)

Families Citing this family (187)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DK0786121T3 (da) 1994-10-12 2000-07-03 Touchtunes Music Corp System til digital, intelligent audiovisuel gengivelse
US7424731B1 (en) 1994-10-12 2008-09-09 Touchtunes Music Corporation Home digital audiovisual information recording and playback system
US8661477B2 (en) 1994-10-12 2014-02-25 Touchtunes Music Corporation System for distributing and selecting audio and video information and method implemented by said system
US7188352B2 (en) 1995-07-11 2007-03-06 Touchtunes Music Corporation Intelligent digital audiovisual playback system
US6769128B1 (en) 1995-06-07 2004-07-27 United Video Properties, Inc. Electronic television program guide schedule system and method with data feed access
US5991811A (en) * 1995-09-04 1999-11-23 Kabushiki Kaisha Toshiba Information transmission system utilizing both real-time data transmitted in a normal-in-time direction and in a retrospective-in-time direction
US6449730B2 (en) 1995-10-24 2002-09-10 Seachange Technology, Inc. Loosely coupled mass storage computer cluster
US5862312A (en) 1995-10-24 1999-01-19 Seachange Technology, Inc. Loosely coupled mass storage computer cluster
JP3277787B2 (ja) * 1995-12-21 2002-04-22 ソニー株式会社 音声・映像データ記録・再生装置
JP3288213B2 (ja) * 1996-01-11 2002-06-04 日本電気株式会社 サーバ
US5812741A (en) * 1996-02-14 1998-09-22 Jack Kennedy Metal Products And Buildings, Inc. Serial sequencers connected in parallel
US6469753B1 (en) 1996-05-03 2002-10-22 Starsight Telecast, Inc. Information system
US6175854B1 (en) * 1996-06-11 2001-01-16 Ameritech Services, Inc. Computer system architecture and method for multi-user, real-time applications
GB2315889A (en) * 1996-07-31 1998-02-11 Ibm Locating and sampling of data in parallel processing systems
JPH1091360A (ja) * 1996-09-12 1998-04-10 Fujitsu Ltd ディスク制御方式
FR2753868A1 (fr) 1996-09-25 1998-03-27 Technical Maintenance Corp Procede de selection d'un enregistrement sur un systeme numerique de reproduction audiovisuel et systeme pour mise en oeuvre du procede
US6748446B2 (en) * 1996-11-29 2004-06-08 Canon Kabushiki Kaisha Communication method and apparatus with modification of routing path by intermediate relay apparatus
EP0951775A1 (de) * 1997-01-13 1999-10-27 John Overton Automatisiertes bildarchivierungssystem
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
US6782427B1 (en) * 1997-04-02 2004-08-24 Allegro Software Development Corporation Serving data from a resource limited system
US9113122B2 (en) 1997-04-21 2015-08-18 Rovi Guides, Inc. Method and apparatus for time-shifting video and text in a text-enhanced television program
BRPI9812104B1 (pt) 1997-07-21 2016-12-27 Guide E Inc método para navegar por um guia de programa interativo
FR2769165B1 (fr) 1997-09-26 2002-11-29 Technical Maintenance Corp Systeme sans fil a transmission numerique pour haut-parleurs
US6434687B1 (en) * 1997-12-17 2002-08-13 Src Computers, Inc. System and method for accelerating web site access and processing utilizing a computer system incorporating reconfigurable processors operating under a single operating system image
US6415373B1 (en) 1997-12-24 2002-07-02 Avid Technology, Inc. Computer system and process for transferring multiple high bandwidth streams of data between multiple storage units and multiple applications in a scalable and reliable manner
US6374336B1 (en) 1997-12-24 2002-04-16 Avid Technology, Inc. Computer system and process for transferring multiple high bandwidth streams of data between multiple storage units and multiple applications in a scalable and reliable manner
US7810123B1 (en) * 1998-02-18 2010-10-05 Verizon Corporate Services Group Inc. Method and system for interactive multimedia
US6961801B1 (en) * 1998-04-03 2005-11-01 Avid Technology, Inc. Method and apparatus for accessing video data in memory across flow-controlled interconnects
JP4234233B2 (ja) * 1998-05-27 2009-03-04 富士通株式会社 情報記憶装置及びプログラムが記憶された記録媒体
US7394816B1 (en) 1998-06-26 2008-07-01 Aol Llc, A Delaware Limited Liability Company Distributing personalized content
US7233978B2 (en) * 1998-07-08 2007-06-19 Econnectix, Llc Method and apparatus for managing location information in a network separate from the data to which the location information pertains
US7103640B1 (en) 1999-09-14 2006-09-05 Econnectix, Llc Network distributed tracking wire transfer protocol
CN1867068A (zh) 1998-07-14 2006-11-22 联合视频制品公司 交互式电视节目导视系统及其方法
FR2781582B1 (fr) 1998-07-21 2001-01-12 Technical Maintenance Corp Systeme de telechargement d'objets ou de fichiers pour mise a jour de logiciels
US8028318B2 (en) 1999-07-21 2011-09-27 Touchtunes Music Corporation Remote control unit for activating and deactivating means for payment and for displaying payment status
FR2781580B1 (fr) 1998-07-22 2000-09-22 Technical Maintenance Corp Circuit de commande de son pour systeme de reproduction audiovisuelle numerique intelligent
FR2781591B1 (fr) 1998-07-22 2000-09-22 Technical Maintenance Corp Systeme de reproduction audiovisuelle
US6898762B2 (en) 1998-08-21 2005-05-24 United Video Properties, Inc. Client-server electronic program guide
US6298071B1 (en) * 1998-09-03 2001-10-02 Diva Systems Corporation Method and apparatus for processing variable bit rate information in an information distribution system
US6389218B2 (en) * 1998-11-30 2002-05-14 Diva Systems Corporation Method and apparatus for simultaneously producing compressed play and trick play bitstreams from a video frame sequence
US6859799B1 (en) 1998-11-30 2005-02-22 Gemstar Development Corporation Search engine for video and graphics
US7000243B1 (en) 1998-12-31 2006-02-14 Oncommand Corporation Allocating computer resources within a video distribution system
US7444663B2 (en) 1998-12-31 2008-10-28 Lodgenet Interactive Corporation Menuing system for controlling content delivery within a video distribution system
US8726330B2 (en) 1999-02-22 2014-05-13 Touchtunes Music Corporation Intelligent digital audiovisual playback system
US7536705B1 (en) * 1999-02-22 2009-05-19 Tvworks, Llc System and method for interactive distribution of selectable presentations
US6691208B2 (en) * 1999-03-12 2004-02-10 Diva Systems Corp. Queuing architecture including a plurality of queues and associated method for controlling admission for disk access requests for video content
US6282207B1 (en) * 1999-03-30 2001-08-28 Diva Systems Corporation Method and apparatus for storing and accessing multiple constant bit rate data
US7243133B2 (en) * 1999-03-30 2007-07-10 Sedna Patent Services, Llc Method and apparatus for reducing latency in an interactive information distribution system
US6604224B1 (en) * 1999-03-31 2003-08-05 Diva Systems Corporation Method of performing content integrity analysis of a data stream
US6289376B1 (en) * 1999-03-31 2001-09-11 Diva Systems Corp. Tightly-coupled disk-to-CPU storage server
US7086077B2 (en) * 1999-04-01 2006-08-01 Sedna Patent Services, Llc Service rate change method and apparatus
US8763053B1 (en) * 1999-04-01 2014-06-24 Cox Communications, Inc. File system for a file server of a video-on-demand system
US6233607B1 (en) * 1999-04-01 2001-05-15 Diva Systems Corp. Modular storage server architecture with dynamic data management
US6721794B2 (en) 1999-04-01 2004-04-13 Diva Systems Corp. Method of data management for efficiently storing and retrieving data to respond to user access requests
US7142567B1 (en) * 1999-04-01 2006-11-28 Sedna Patent Services, Llc Rate generator in a video on demand system having multiple constant bit rate data
US6526580B2 (en) 1999-04-16 2003-02-25 Digeo, Inc. Broadband data broadcasting service
US6473858B1 (en) 1999-04-16 2002-10-29 Digeo, Inc. Method and apparatus for broadcasting data with access control
US6463465B1 (en) * 1999-05-07 2002-10-08 Sun Microsystems, Inc. System for facilitating remote access to parallel file system in a network using priviliged kernel mode and unpriviliged user mode to avoid processing failure
FR2796482B1 (fr) 1999-07-16 2002-09-06 Touchtunes Music Corp Systeme de gestion a distance d'au moins un dispositif de reproduction d'informations audiovisuelles
US7010492B1 (en) 1999-09-30 2006-03-07 International Business Machines Corporation Method and apparatus for dynamic distribution of controlled and additional selective overlays in a streaming media
US8341662B1 (en) 1999-09-30 2012-12-25 International Business Machine Corporation User-controlled selective overlay in a streaming media
WO2001043439A1 (en) 1999-12-10 2001-06-14 Diva Systems Corporation Method and apparatus for performing user migration within a video on demand environment
DE19960741A1 (de) * 1999-12-20 2001-06-21 Thomson Brandt Gmbh System zum Austausch von Daten
US6681397B1 (en) * 2000-01-21 2004-01-20 Diva Systems Corp. Visual improvement of video stream transitions
AU2001236577A1 (en) * 2000-01-28 2001-08-07 Williams Communications, Llc A system and method for mirroring and caching compressed data in a content distribution system
FR2805377B1 (fr) 2000-02-23 2003-09-12 Touchtunes Music Corp Procede de commande anticipee d'une selection, systeme numerique et juke-box permettant la mise en oeuvre du procede
FR2805072B1 (fr) 2000-02-16 2002-04-05 Touchtunes Music Corp Procede d'ajustement du volume sonore d'un enregistrement sonore numerique
FR2805060B1 (fr) 2000-02-16 2005-04-08 Touchtunes Music Corp Procede de reception de fichiers lors d'un telechargement
AU5005601A (en) 2000-03-31 2001-10-15 United Video Properties Inc Systems and methods for reducing cut-offs in program recording
US9788058B2 (en) 2000-04-24 2017-10-10 Comcast Cable Communications Management, Llc Method and system for automatic insertion of interactive TV triggers into a broadcast data stream
US7702995B2 (en) * 2000-04-24 2010-04-20 TVWorks, LLC. Method and system for transforming content for execution on multiple platforms
US8936101B2 (en) 2008-07-17 2015-01-20 Halliburton Energy Services, Inc. Interventionless set packer and setting method for same
US8296792B2 (en) * 2000-04-24 2012-10-23 Tvworks, Llc Method and system to provide interactivity using an interactive channel bug
US20020010928A1 (en) * 2000-04-24 2002-01-24 Ranjit Sahota Method and system for integrating internet advertising with television commercials
US7051111B1 (en) 2000-04-25 2006-05-23 Digeo, Inc. Multiple source proxy management system
FR2808906B1 (fr) 2000-05-10 2005-02-11 Touchtunes Music Corp Dispositif et procede de gestion a distance d'un reseau de systemes de reproduction d'informations audiovisuelles
US6356803B1 (en) 2000-05-19 2002-03-12 International Business Machines Corporation Automated data storage library distributed control system
AU2001265180A1 (en) * 2000-05-31 2001-12-11 Minerva Networks, Inc. Method and system for pausing and replaying scheduled rich media broadcasts
US20080005275A1 (en) * 2000-06-02 2008-01-03 Econnectix, Llc Method and apparatus for managing location information in a network separate from the data to which the location information pertains
FR2811175B1 (fr) 2000-06-29 2002-12-27 Touchtunes Music Corp Procede de distribution d'informations audiovisuelles et systeme de distribution d'informations audiovisuelles
FR2811114B1 (fr) 2000-06-29 2002-12-27 Touchtunes Music Corp Dispositif et procede de communication entre un systeme de reproduction d'informations audiovisuelles et d'une machine electronique de divertissement
WO2002015018A1 (en) * 2000-08-11 2002-02-21 3Ware, Inc. Architecture for providing block-level storage access over a computer network
US8250357B2 (en) 2000-09-13 2012-08-21 Fortinet, Inc. Tunnel interface for securing traffic over a network
FR2814085B1 (fr) 2000-09-15 2005-02-11 Touchtunes Music Corp Procede de divertissement base sur les jeux concours a choix multiples
US7050376B2 (en) 2000-09-19 2006-05-23 Lg Electronics Inc. Optical disc player and method for reproducing thereof
US7103906B1 (en) 2000-09-29 2006-09-05 International Business Machines Corporation User controlled multi-device media-on-demand system
KR20190096450A (ko) * 2000-10-11 2019-08-19 로비 가이드스, 인크. 매체 콘텐츠 배달 시스템 및 방법
AU2002211570A1 (en) 2000-10-11 2002-04-22 United Video Properties, Inc. Systems and methods for caching data in media-on-demand systems
US6996742B2 (en) * 2000-11-28 2006-02-07 Sedna Patent Services, Llc Method for regenerating and streaming content from a video server using RAID 5 data striping
JP4114480B2 (ja) * 2001-02-24 2008-07-09 インターナショナル・ビジネス・マシーンズ・コーポレーション グローバル割込みおよびバリア・ネットワーク
US6973666B1 (en) * 2001-02-28 2005-12-06 Unisys Corporation Method of moving video data thru a video-on-demand system which avoids paging by an operating system
US20020157113A1 (en) * 2001-04-20 2002-10-24 Fred Allegrezza System and method for retrieving and storing multimedia data
US6883110B1 (en) 2001-06-18 2005-04-19 Gateway, Inc. System and method for providing a data backup of a server on client systems in a network
US7181547B1 (en) 2001-06-28 2007-02-20 Fortinet, Inc. Identifying nodes in a ring network
US20040022202A1 (en) 2002-08-05 2004-02-05 Chih-Lung Yang Method and apparatus for continuously receiving images from a plurality of video channels and for alternately continuously transmitting to each of a plurality of participants in a video conference individual images containing information concerning each of said video channels
US6535240B2 (en) 2001-07-16 2003-03-18 Chih-Lung Yang Method and apparatus for continuously receiving frames from a plurality of video channels and for alternately continuously transmitting to each of a plurality of participants in a video conference individual frames containing information concerning each of said video channels
US6871263B2 (en) 2001-08-28 2005-03-22 Sedna Patent Services, Llc Method and apparatus for striping data onto a plurality of disk drives
US8966527B1 (en) * 2001-10-16 2015-02-24 The Directv Group, Inc. System and method for media inserts in a media distribution system
US6901491B2 (en) * 2001-10-22 2005-05-31 Sun Microsystems, Inc. Method and apparatus for integration of communication links with a remote direct memory access protocol
US7788396B2 (en) * 2001-11-28 2010-08-31 Interactive Content Engines, Llc Synchronized data transfer system
US7437472B2 (en) * 2001-11-28 2008-10-14 Interactive Content Engines, Llc. Interactive broadband server system
US7644136B2 (en) * 2001-11-28 2010-01-05 Interactive Content Engines, Llc. Virtual file system
US7810121B2 (en) * 2002-05-03 2010-10-05 Time Warner Interactive Video Group, Inc. Technique for delivering network personal video recorder service and broadcast programming service over a communications network
US7376950B2 (en) * 2002-05-08 2008-05-20 Intel Corporation Signal aggregation
US20040006667A1 (en) * 2002-06-21 2004-01-08 Bik Aart J.C. Apparatus and method for implementing adjacent, non-unit stride memory access patterns utilizing SIMD instructions
US7492387B2 (en) 2002-08-05 2009-02-17 Chih-Lung Yang Implementation of MPCP MCU technology for the H.264 video standard
US8103589B2 (en) 2002-09-16 2012-01-24 Touchtunes Music Corporation Digital downloading jukebox system with central and local music servers
US7822687B2 (en) 2002-09-16 2010-10-26 Francois Brillon Jukebox with customizable avatar
US10373420B2 (en) 2002-09-16 2019-08-06 Touchtunes Music Corporation Digital downloading jukebox with enhanced communication features
US11029823B2 (en) 2002-09-16 2021-06-08 Touchtunes Music Corporation Jukebox with customizable avatar
US8151304B2 (en) 2002-09-16 2012-04-03 Touchtunes Music Corporation Digital downloading jukebox system with user-tailored music management, communications, and other tools
US8332895B2 (en) 2002-09-16 2012-12-11 Touchtunes Music Corporation Digital downloading jukebox system with user-tailored music management, communications, and other tools
US9646339B2 (en) 2002-09-16 2017-05-09 Touchtunes Music Corporation Digital downloading jukebox system with central and local music servers
US8584175B2 (en) 2002-09-16 2013-11-12 Touchtunes Music Corporation Digital downloading jukebox system with user-tailored music management, communications, and other tools
KR100895146B1 (ko) * 2002-10-19 2009-05-04 엘지전자 주식회사 홈네트워크 제어 방법
US7266120B2 (en) 2002-11-18 2007-09-04 Fortinet, Inc. System and method for hardware accelerated packet multicast in a virtual routing system
US7552192B2 (en) * 2002-12-18 2009-06-23 Ronnie Gerome Carmichael Massively parallel computer network-utilizing MPACT and multipoint parallel server (MPAS) technologies
JP4274523B2 (ja) * 2003-01-24 2009-06-10 株式会社日立製作所 記憶装置システム、及び記憶装置システムの起動方法
US7493646B2 (en) 2003-01-30 2009-02-17 United Video Properties, Inc. Interactive television systems with digital video recording and adjustable reminders
US20060051059A1 (en) 2004-09-08 2006-03-09 Krakirian Haig H Video recorder having user extended and automatically extended time slots
US7568034B1 (en) 2003-07-03 2009-07-28 Google Inc. System and method for data distribution
US8136025B1 (en) 2003-07-03 2012-03-13 Google Inc. Assigning document identification tags
JP2005157521A (ja) * 2003-11-21 2005-06-16 Hitachi Ltd 遠隔記憶装置の状態情報監視方法および記憶サブシステム
US7334090B2 (en) * 2003-12-17 2008-02-19 At&T Delaware Intellectual Property, Inc. Methods, systems, and storage mediums for providing information storage services
US7739418B2 (en) * 2004-04-12 2010-06-15 Hewlett-Packard Development Company, L.P. Resource management system
JP4421385B2 (ja) 2004-06-09 2010-02-24 株式会社日立製作所 計算機システム
US8086575B2 (en) 2004-09-23 2011-12-27 Rovi Solutions Corporation Methods and apparatus for integrating disparate media formats in a networked media system
US8131926B2 (en) * 2004-10-20 2012-03-06 Seagate Technology, Llc Generic storage container for allocating multiple data formats
US8131969B2 (en) * 2004-10-20 2012-03-06 Seagate Technology Llc Updating system configuration information
US7594075B2 (en) 2004-10-20 2009-09-22 Seagate Technology Llc Metadata for a grid based data storage system
US8346843B2 (en) * 2004-12-10 2013-01-01 Google Inc. System and method for scalable data distribution
US20100071070A1 (en) * 2005-01-07 2010-03-18 Amandeep Jawa Managing Sharing of Media Content From a Server Computer to One or More of a Plurality of Client Computers Across the Computer Network
US20060167982A1 (en) * 2005-01-07 2006-07-27 Apple Computer, Inc. Restricted media sharing over networks
EP1688841A1 (de) * 2005-02-04 2006-08-09 Sap Ag Parallele dynamische Verarbeitung
US9973817B1 (en) 2005-04-08 2018-05-15 Rovi Guides, Inc. System and method for providing a list of video-on-demand programs
US8401869B2 (en) * 2005-08-24 2013-03-19 Image Stream Medical, Inc. Streaming video network system
US20070079342A1 (en) 2005-09-30 2007-04-05 Guideworks, Llc Systems and methods for managing local storage of on-demand content
US7716100B2 (en) * 2005-12-02 2010-05-11 Kuberre Systems, Inc. Methods and systems for computing platform
US9681105B2 (en) 2005-12-29 2017-06-13 Rovi Guides, Inc. Interactive media guidance system having multiple devices
US8607287B2 (en) 2005-12-29 2013-12-10 United Video Properties, Inc. Interactive media guidance system having multiple devices
US7734853B2 (en) * 2006-02-28 2010-06-08 Arm Limited Latency dependent data bus transmission
WO2007143693A2 (en) * 2006-06-06 2007-12-13 Channel D Corporation System and method for displaying and editing digitally sampled audio data
US8229109B2 (en) * 2006-06-27 2012-07-24 Intel Corporation Modular reduction using folding
US9171419B2 (en) 2007-01-17 2015-10-27 Touchtunes Music Corporation Coin operated entertainment system
US9330529B2 (en) 2007-01-17 2016-05-03 Touchtunes Music Corporation Game terminal configured for interaction with jukebox device systems including same, and/or associated methods
US7934027B2 (en) * 2007-01-19 2011-04-26 Hewlett-Packard Development Company, L.P. Critical resource management
US7801888B2 (en) 2007-03-09 2010-09-21 Microsoft Corporation Media content search results ranked by popularity
US9953481B2 (en) 2007-03-26 2018-04-24 Touchtunes Music Corporation Jukebox with associated video server
US20090019492A1 (en) 2007-07-11 2009-01-15 United Video Properties, Inc. Systems and methods for mirroring and transcoding media content
US8689078B2 (en) 2007-07-13 2014-04-01 Intel Corporation Determining a message residue
US9324064B2 (en) 2007-09-24 2016-04-26 Touchtunes Music Corporation Digital jukebox device with karaoke and/or photo booth features, and associated methods
US10290006B2 (en) 2008-08-15 2019-05-14 Touchtunes Music Corporation Digital signage and gaming services to comply with federal and state alcohol and beverage laws and regulations
US8332887B2 (en) 2008-01-10 2012-12-11 Touchtunes Music Corporation System and/or methods for distributing advertisements from a central advertisement network to a peripheral device via a local advertisement server
US7886214B2 (en) * 2007-12-18 2011-02-08 Intel Corporation Determining a message residue
US8042025B2 (en) * 2007-12-18 2011-10-18 Intel Corporation Determining a message residue
US20090171839A1 (en) * 2007-12-28 2009-07-02 Rosano Sharon A Systems and methods for processing recurring payment transactions
TWI367422B (en) * 2008-05-13 2012-07-01 Jmicron Technology Corp Raid5 controller and accessing method with data stream distribution and aggregation operations based on the primitive data access block of storage devices
US8601526B2 (en) 2008-06-13 2013-12-03 United Video Properties, Inc. Systems and methods for displaying media content and media guidance information
US8849435B2 (en) 2008-07-09 2014-09-30 Touchtunes Music Corporation Digital downloading jukebox with revenue-enhancing features
US10063934B2 (en) 2008-11-25 2018-08-28 Rovi Technologies Corporation Reducing unicast session duration with restart TV
US10564804B2 (en) 2009-03-18 2020-02-18 Touchtunes Music Corporation Digital jukebox device with improved user interfaces, and associated methods
US10719149B2 (en) 2009-03-18 2020-07-21 Touchtunes Music Corporation Digital jukebox device with improved user interfaces, and associated methods
US9292166B2 (en) 2009-03-18 2016-03-22 Touchtunes Music Corporation Digital jukebox device with improved karaoke-related user interfaces, and associated methods
KR101748448B1 (ko) 2009-03-18 2017-06-16 터치튠즈 뮤직 코포레이션 엔터테인먼트 서버 및 관련 소셜 네트워킹 서비스
US9166714B2 (en) 2009-09-11 2015-10-20 Veveo, Inc. Method of and system for presenting enriched video viewing analytics
US9014546B2 (en) 2009-09-23 2015-04-21 Rovi Guides, Inc. Systems and methods for automatically detecting users within detection regions of media devices
WO2011094330A1 (en) 2010-01-26 2011-08-04 Touchtunes Music Corporation Digital jukebox device with improved user interfaces, and associated methods
US8935719B2 (en) 2011-08-25 2015-01-13 Comcast Cable Communications, Llc Application triggering
US8805418B2 (en) 2011-12-23 2014-08-12 United Video Properties, Inc. Methods and systems for performing actions based on location-based rules
US11151224B2 (en) 2012-01-09 2021-10-19 Touchtunes Music Corporation Systems and/or methods for monitoring audio inputs to jukebox devices
US20130191569A1 (en) * 2012-01-25 2013-07-25 Qualcomm Incorporated Multi-lane high-speed interfaces for high speed synchronous serial interface (hsi), and related systems and methods
US8862564B2 (en) 2012-03-16 2014-10-14 Google Inc. Sponsoring resource downloads
CN104205863B (zh) * 2012-03-27 2017-10-27 三菱电机株式会社 数字广播接收装置和数字广播接收方法
US9414114B2 (en) 2013-03-13 2016-08-09 Comcast Cable Holdings, Llc Selective interactivity
KR101507810B1 (ko) * 2013-06-25 2015-04-07 삼성전자주식회사 의료 영상 장치를 이용하여 피검사자를 촬영하기 위한 사용자 인터페이스를 제공하는 방법 및 장치
US9674563B2 (en) 2013-11-04 2017-06-06 Rovi Guides, Inc. Systems and methods for recommending content
WO2015070070A1 (en) 2013-11-07 2015-05-14 Touchtunes Music Corporation Techniques for generating electronic menu graphical user interface layouts for use in connection with electronic devices
US11076205B2 (en) 2014-03-07 2021-07-27 Comcast Cable Communications, Llc Retrieving supplemental content
EP3123293A4 (de) 2014-03-25 2017-09-27 Touchtunes Music Corporation Digitale jukebox-vorrichtung mit verbesserten benutzeroberflächen sowie entsprechende verfahren
RU2550555C1 (ru) * 2014-07-21 2015-05-10 ООО Научно-исследовательский центр супер-ЭВМ и нейрокомпьютеров Мультиконтроллер распределяемой памяти
US9948962B2 (en) 2014-11-13 2018-04-17 Time Warner Cable Enterprises Llc Apparatus and methods for efficient delivery of electronic program guide data
US11829333B2 (en) * 2015-05-08 2023-11-28 Chicago Mercantile Exchange Inc. Thread safe lock-free concurrent write operations for use with multi-threaded in-line logging
US9836528B1 (en) 2015-07-20 2017-12-05 Google Inc. Data constrained resource access
KR101734160B1 (ko) * 2016-04-28 2017-05-11 주식회사 디에이아이오 작업부하 편중을 완화하는 저장 장치
US9941866B2 (en) 2016-07-12 2018-04-10 Qualcomm Incorporated Apparatus for design for testability of multiport register arrays
WO2018089993A1 (en) * 2016-11-14 2018-05-17 Google Llc Sorting for data-parallel computing devices
US20230179828A1 (en) * 2020-04-28 2023-06-08 Lg Electronics Inc. Signal processing device and video display device comprising same

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4057829B1 (en) * 1973-12-18 1995-07-25 Spectradyne Inc Communication TV monitoring and control system
US4344134A (en) * 1980-06-30 1982-08-10 Burroughs Corporation Partitionable parallel processor
US4546451A (en) * 1982-02-12 1985-10-08 Metheus Corporation Raster graphics display refresh memory architecture offering rapid access speed
CA1293819C (en) * 1986-08-29 1991-12-31 Thinking Machines Corporation Very large scale computer
CA1289671C (en) * 1986-10-28 1991-09-24 Thinking Machines Corporation Massively parallel processor
US5175865A (en) * 1986-10-28 1992-12-29 Thinking Machines Corporation Partitioning the processors of a massively parallel single array processor into sub-arrays selectively controlled by host computers
US5276866A (en) * 1988-07-19 1994-01-04 Michael Paolini System with two different communication mediums, transmitting retrieved video and compressed audio information to plural receivers responsively to users' requests
US5148432A (en) * 1988-11-14 1992-09-15 Array Technology Corporation Arrayed disk drive system and method
US4947244A (en) * 1989-05-03 1990-08-07 On Command Video Corporation Video selection and distribution system
ATE154182T1 (de) * 1989-08-23 1997-06-15 Delta Beta Pty Ltd Optimisierung einer programmübertragung
JPH04219859A (ja) * 1990-03-12 1992-08-10 Hewlett Packard Co <Hp> 並列プロセッサに直列命令ストリームデータを分散するハードウェアディストリビュータ
US5034741A (en) * 1990-03-22 1991-07-23 United Technologies Corporation Variable length bit patterns for data representation
US5341474A (en) * 1992-05-15 1994-08-23 Bell Communications Research, Inc. Communications architecture and buffer for distributing information services
US5276681A (en) * 1992-06-25 1994-01-04 Starlight Networks Process for fair and prioritized access to limited output buffers in a multi-port switch
US5857112A (en) * 1992-09-09 1999-01-05 Hashemi; Ebrahim System for achieving enhanced performance and data availability in a unified redundant array of disk drives by using user defined partitioning and level of redundancy
JPH06290158A (ja) * 1993-03-31 1994-10-18 Fujitsu Ltd 再構成可能なトーラス・ネットワーク方式
WO1994029795A1 (en) * 1993-06-04 1994-12-22 Network Appliance Corporation A method for providing parity in a raid sub-system using a non-volatile memory
US5414455A (en) * 1993-07-07 1995-05-09 Digital Equipment Corporation Segmented video on demand system
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
US5463732A (en) * 1994-05-13 1995-10-31 David Sarnoff Research Center, Inc. Method and apparatus for accessing a distributed data buffer
US5592470A (en) * 1994-12-21 1997-01-07 At&T Broadband wireless system and network architecture providing broadband/narrowband service with optimal static and dynamic bandwidth/channel allocation
US5706048A (en) * 1995-04-24 1998-01-06 Motorola, Inc. Wireless digital data access system and method
US5862312A (en) * 1995-10-24 1999-01-19 Seachange Technology, Inc. Loosely coupled mass storage computer cluster
JP3133004B2 (ja) * 1996-11-21 2001-02-05 株式会社日立製作所 ディスクアレイ装置およびその制御方法
US6058455A (en) * 1997-07-02 2000-05-02 International Business Corporation RAID system having a selectable unattended mode of operation with conditional and hierarchical automatic re-configuration
US6101615A (en) * 1998-04-08 2000-08-08 International Business Machines Corporation Method and apparatus for improving sequential writes to RAID-6 devices
US6334168B1 (en) * 1999-02-19 2001-12-25 International Business Machines Corporation Method and system for updating data in a data storage system
US6289376B1 (en) * 1999-03-31 2001-09-11 Diva Systems Corp. Tightly-coupled disk-to-CPU storage server
US6195727B1 (en) * 1999-03-31 2001-02-27 International Business Machines Corporation Coalescing raid commands accessing contiguous data in write-through mode
US6233607B1 (en) * 1999-04-01 2001-05-15 Diva Systems Corp. Modular storage server architecture with dynamic data management

Also Published As

Publication number Publication date
JPH10503066A (ja) 1998-03-17
EP0771468B1 (de) 2005-06-01
EP1548606A3 (de) 2012-02-15
KR100374070B1 (ko) 2003-05-12
US5671377A (en) 1997-09-23
KR970705256A (ko) 1997-09-06
ES2240976T3 (es) 2005-10-16
US6529994B1 (en) 2003-03-04
EP1548606A2 (de) 2005-06-29
EP0771468A1 (de) 1997-05-07
US5913026A (en) 1999-06-15
WO1996002931A1 (en) 1996-02-01
JP4195725B2 (ja) 2008-12-10
CA2195431A1 (en) 1996-02-01
CA2499802A1 (en) 1996-02-01
CA2195431C (en) 2005-06-14
CA2499802C (en) 2009-09-29
KR100377092B1 (ko) 2003-03-19
DE69534248D1 (de) 2005-07-07
US5920702A (en) 1999-07-06
EP0771468A4 (de) 2000-08-23

Similar Documents

Publication Publication Date Title
DE69534248T2 (de) Mehrbenutzersystem für Datenspeicherung, -zugriff und -verteilung, mit verteilter Speicherung eines kontinuierlichen Datenstromes
DE69737904T2 (de) System und Verfahren zur Bearbeitung von Multimedia-Datenströmen in gemeinsamen Ringarchitektur-Multimedia-Teilsystemclustern
DE69632424T2 (de) Server für kontinuierliche Daten und Datentransferschema für mehrfache gleichzeitige Datenzugriffe
DE69731822T2 (de) Datenpuffersystem für mehrere datenspeicheranordnungen
DE69733622T2 (de) System und Verfahren zum zeitnahen Liefern von digitalen Informationen unter Verwendung einer Fragmentierung und Sequenzierung, um die mittlere Bandbreite unddie Spitzenbandbreite zu verringern
DE69631755T2 (de) Informationsverarbeitungsgerät, -system und verfahren für ein datenübertragungsnetzwerk
DE60111039T2 (de) Speichersystem das aus mehreren speichergeräten besteht, mit verschiedenen fehlertoleranten verfahren
US5832287A (en) Wideband on-demand video distribution system and method
DE69534861T2 (de) Netzwerkvideoanbietersystem
DE102012216568B4 (de) Scheduling und Managen von Rechentasks mit unterschiedlichen Ausführungsprioritätsstufen
DE69534616T2 (de) System und Verfahren zum Verarbeiten von E/A-Anfragen über einen Schnittstellenbus zu einer Speicherplattenanordnung
DE60123396T2 (de) Diskzuordnungssystem mit umordnung einer begrenzten anzahl von anforderungen
Chua et al. Disk striping strategies for large video-on-demand servers
DE60205231T2 (de) Vorrichtung und verfahren zur effizienten zuteilung von speicherbandbreite in einem netzwerkprozessor
DE4423949A1 (de) E/A-Hilfssystem und Exklusiv-Steuerverfahren, Datenspeicherverfahren und Speicherinitialisierungsverfahren in einem E/A-Hilfssystem
DE69918201T2 (de) Videodatenspeicherung und -übertragung sowie Verfahren dafür
EP0012207B1 (de) Speicherhierarchie mit Ladungsverschiebungsspeicher
DE69737962T2 (de) Netzwerkvideoserver
DE3744128C2 (de)
CN117149096B (zh) 磁盘重构方法、装置、设备及存储介质
DE4447853C2 (de) E/A-Hilfssystem und Datenspeicherverfahren in einem E/A-Hilfssystem
CN113709241A (zh) 一种云场景下物理资源的调度分配组合方法与系统
DE69533418T2 (de) Einrichtung zur Übertragung von Daten
DE2928618C2 (de) Schaltungsanordnung für die Zuweisung der mit je einem peripheren Gerät verbundenen Ein-/Ausgabe-Teilkanäle zu den Ein-/Ausgabe-Kanälen einer datenverarbeitenden Anlage
Beng et al. Disk Striping Strategies for Large Video-on-Demand Servers

Legal Events

Date Code Title Description
8364 No opposition during term of opposition