DE69830965T2 - System zur wiedergabe von daten in einem video-server - Google Patents

System zur wiedergabe von daten in einem video-server Download PDF

Info

Publication number
DE69830965T2
DE69830965T2 DE69830965T DE69830965T DE69830965T2 DE 69830965 T2 DE69830965 T2 DE 69830965T2 DE 69830965 T DE69830965 T DE 69830965T DE 69830965 T DE69830965 T DE 69830965T DE 69830965 T2 DE69830965 T2 DE 69830965T2
Authority
DE
Germany
Prior art keywords
blocks
block
load
max
scheduler
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 - Fee Related
Application number
DE69830965T
Other languages
English (en)
Other versions
DE69830965D1 (de
Inventor
Henricus Johannes KORST
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.)
Koninklijke Philips NV
Original Assignee
Koninklijke Philips Electronics NV
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 Koninklijke Philips Electronics NV filed Critical Koninklijke Philips Electronics NV
Publication of DE69830965D1 publication Critical patent/DE69830965D1/de
Application granted granted Critical
Publication of DE69830965T2 publication Critical patent/DE69830965T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • 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/232Content retrieval operation locally within server, e.g. reading video streams from disk arrays
    • H04N21/2326Scheduling disk or memory reading operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Television Signal Processing For Recording (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

  • Die vorliegende Erfindung bezieht sich auf ein System zum Abrufen von Blöcken mit Daten, wie Audio- und/oder Videodaten, von einem Speichermedium und zum Liefern der Blöcke in Form einer Anzahl von maximal Nmax Datenströmen zu Benutzern, wobei jeder Datenstrom eine identische maximale Verbrauchsrate von Rmax Datenelementen in der Sekunde hat und wobei das Speichermedium eine Bandbreite von wenigstens Nmax·Rmax Datenelementen in der Sekunde hat; wobei das Speichermedium eine Anzahl Speichereinheiten aufweist.
  • Ein System dieser Art wird in einem Multimedia-Server und insbesondere in einem "Video-on-Demand"- oder einem "Near-Video-on-Demand"-System angewandt. Eine allgemeine Anforderung in derartigen Systemen ist, dass jedem aktiven Benutzer ein kontinuierlicher, ununterbrochener Datenstrom geliefert wird. Typischerweise werden Daten aus einem herkömmlichen Speichermedium, wie Festplatten, die in einer Platteneinrichtung vorgesehen sind, wie einem RAID-System, ausgelesen. Im Allgemeinen kann zwischen einem System mit einer festen Verbrauchsrate und einem System mit einer variablen Verbrauchsrate ein Unterschied gemacht werden. In einem System mit einer festen Verbrauchsrate werden Daten typischerweise einem Benutzer als ein Datenstrom mit einer festen rate zugeführt. Meistens ist die Rate für jeden Strom in dem System identisch. Ein Beispiel eines derartigen Systems ist ein "Near-Video-on-Demand"-System, wobei eine Anzahl Filme parallel zueinander abgespielt werden können und derselbe Film mehrere Male parallel abgespielt werden kann, wobei meistens beispielsweise alle fünf oder fünfzehn Minuten eine neue Kopie desselben Films gestartet wird. In einem System mit einer variablen Verbrauchsrate, wobei ein Benutzer Daten verbraucht, die in der Zeit variieren. Typischerweise kann eine maximale Verbrauchsrate für jeden Datenstrom definiert werden. In der Praxis wird meistens eine identische maximale Verbrauchsrate für alle Ströme verwendet, obschon es möglich sein kann, auf effiziente Weise Ströme mit verschiedenen maximalen Verbrauchsraten zu unterstützen (beispielsweise eine maximale Rate für einen Audio-Strom und eine andere maximale Rate für einen kombinierten Video- und Audio-Strom). Systeme mit einer variablen Verbrauchsrate werden beispielsweise für Systeme angewandt, die VCR-ähnliche Funktionen, wie Pause oder Zeitlupe, unterstützen, oder Systeme, die Kompressionsschemen mit variabler Bitrate anwenden, wie MPEG-2.
  • Um einem Benutzer Daten als ständigen Datenstrom zu liefern, sind spezielle Zeitablaufsteuerungen zum Auslesen von Daten von den Platten erforderlich mit einem geeigneten Schema zur vorübergehenden Pufferung der ausgelesenen Daten bevor die Daten dem Benutzer zugeführt werden. Für ein System mit einer festen Verbrauchsrate wird typischerweise zu festen regelmäßigen Intervallen für jeden Strom ein fester Betrag an Daten (ausreichend für wenigstens eine Periode) ausgelesen und in dem Puffer gespeichert. Innerhalb eines Systems mit einer variablen Verbrauchsrate können verschiedene Ströme einen vorbestimmten Block des Puffers zu verschiedenen Zeitpunkten leeren. Typischerweise werden während eines Intervalls nur Daten für Ströme ausgelesen, deren Puffer Raum haben für einen Block von Daten. Andere Ströme werden übersprungen. Dadurch ist die Dauer des Intervalls zum Auslesen von Daten variable, begrenzt durch die Situation, in der alle aktiven Ströme einen neuen Datenblock erfordern.
  • Um eine große Plattenbandbreite zu gewährleisten, die erforderlich ist, wenn alle Datenströme mit der maximalen Datenrate verbrauchen, werden die Daten üblicherweise über alle Platten in der Einrichtung gestreift. Insbesondere für Systeme mit variabler Datenrate wird dies dadurch erreicht, dass jeder Datenblock über alle Platten aufgeteilt werden, so dass ein Antrag zum Auslesen dieses einen Plattenzugriff auf jede der Platten bedeutet. Dadurch wird die Belastung der Platten optimal ausgewuchtet.
  • Im Allgemeinen wird die Anzahl Platten in der Platteneinrichtung durch die erforderliche Bandbreite bestimmt, und zwar im Hinblick auf die Anzahl Datenströme, die parallel unterstützt werden. An sich wächst die Anzahl Platten mit der maximalen Anzahl Datenströme. Um zu gewährleisten, dass die Effektivität des Zugriffs auf eine Platte mehr oder weniger konstant bleibt, soll die Größe eines Blocks, ausgelesen aus einer einzelnen Platte für einen Datenstrom nach wie vor die gleiche sein (Das Auslesen zu kleiner Blöcke einer Platte steigert die Gesamtkosten, insbesondere wenn die Größe unter die Größe einer Spur sinkt). Dadurch wächst die Größe des akkumulierten Blocks, der über alle Platten gestreift ist, wächst linear mit der Anzahl Platten und folglich mit der maximalen Anzahl Datenströme. Dies führt dazu, dass die Größe des Puffers ebenfalls mit der maximalen Anzahl Datenströme linear wächst. Da für jeden Datenstrom ein Puffer erforderlich ist, ist der kombinierte Effekt, dass die Gesamtgröße des Puffers im Wesentlichen quadratisch von der maximalen Anzahl Datenströme abhängig ist, was die Kosten des Pufferns zu einem herrschenden Faktor macht, insbesondere für Systeme, die eine Vielzahl Datenströme unter stützen. Ein weiterer negativer Effekt ist, dass die Reaktionszeit des Systems zum Ermöglichen, dass ein neuer Datenstrom aktiv wird, im Wesentlichen linear wächst, da das Zeitintervall, das zum neuen Füllen der Puffer erforderlich ist, linear wächst und während eines derartigen Intervalls können keine neuen Benutzer in das System eintreten.
  • Es ist nun u. a. eine Aufgabe der vorliegenden Erfindung, ein System der oben beschriebenen Art zu schaffen, wobei die Pufferkosten im Wesentlichen linear mit der maximalen Anzahl unterstützter Datenströme wachsen. Es ist eine weitere Aufgabe, ein derartiges System zu schaffen, in dem die Reaktionszeit im Wesentlichen die gleiche bleibt, ungeachtet der maximalen Anzahl unterstützter Datenströme.
  • Zum Erfüllen dieser Aufgabe weist das System nach der vorliegenden Erfindung das Kennzeichen auf, dass eine vorbestimmte Selektion von Blöcken einige Male in dem Speichermedium gespeichert ist, wobei einzelne Blöcke der Selektion als Ganzes in wenigstens zwei verschiedenen und im Wesentlichen beliebig selektierten Speichereinheiten gespeichert werden; und dass das System Folgendes umfasst:
    • – einen Scheduler zur Steuerung der Auslese der Blöcke für die Datenströme von dem Speichermedium, wobei für jeden Block aus einem entsprechenden Satz aller Speichereinheiten, in denen der Block gespeichert ist, eine einzige Speichereinheit selektiert wird, woraus der Block ausgelesen werden soll und dass der selektierten Speichereinheit ein entsprechender Ausleseantrag zugeordnet wird; wobei der Scheduler derart wirksam ist, dass er die Speichereinheit aus dem Satz derart selektiert, dass die Belastung der vielen Speichereinheiten ausgewuchtet wird; und
    • – einen Leser um in Reaktion auf einen Blockausleseantrag, den entsprechenden Block aus der zugeordneten Speichereinheit auszulesen um diesen Block in dem entsprechenden Datenstrom einem Benutzer zu liefern.
  • Dadurch, dass gewährleistet wird, dass ein Block in wenigstens zwei verschiedene Speichereinheiten gespeichert wird, hat der Scheduler eine Wahl bei der Selektion, aus welcher Speichereinheit der Block während der Wiedergabe ausgelesen wird. Dies ermöglicht es, dass der Scheduler die Speichereinheiten derart wählt, dass die Belastung der Speichereinheiten ausgewuchtet ist. Dadurch, dass die Blöcke in beliebig selektierten Speichereinheiten selektiert werden, kann eine relativ gleichmäßige Belastung während der Wiedergabe erreicht werden, sogar für Systeme mit variabler Rate, für die es sonst schwer ist oder sogar unmöglich, vorherzusagen, wie die Belastung an einzelnen Speichereinheiten sich in der Zeit für die aktiven Ströme entwickeln wird. In einem einfachen System werden alle Blöcke aller Titel zweimal in dem System gespeichert, d.h. in zwei verschiedenen Speichereinheiten des Systems. Die Selektion der Blöcke kann auf alternative Art und Weise ein teil aller Blöcke sein, wobei die restlichen Blöcke nur einmal gespeichert werden.
  • Der von dem System nach der vorliegenden Erfindung gebotenen Lösung liegt die Erkenntnis zugrunde, dass anders als bei der Bandbreite, die Kapazität des Speichermediums nicht der bestimmende Faktor ist und zunehmend ein weniger wichtige Faktor wird, da die Kapazität der Festplatten im Schnitt mit einer höheren Rate (typischerweise 60% jährlich) als die Bandbreite (typischerweise ein Wachstum von 40% jährlich) wächst. Wenn nur vorausgesetzt wird, das in zwei Jahren eine typische Platte eine Speicherkapazität von 25 Gbyte haben wird und eine gewährleistete Datenrate von 85 Mbit/s, können die nachfolgenden zwei Szenarios vergegenwärtigt werden. In einem ersten Szenario wird eine Video-on-Demand-Version des Systems nach der vorliegenden Erfindung benutzt zum Bieten eines Bereichs von bis zu 20 Filmen, wie in einem Kino, für maximal 1000 Benutzer. Die Filme sind unter Anwendung von MPEG2 mit einer mittleren rate von 4 Mbit/s codiert. Wenn nun vorausgesetzt wird, dass ein Film im Schnitt eine Länge von 90 Minuten hat, so ist eine gesamte Speicherkapazität von 90·60·4.106 = 21.6·109 Bits = 2,5 Gbyte je Film erforderlich, was zu einer gesamten erforderlichen Speicherkapazität von etwa 50 Gbyte führt. Wenn alle Blöcke zweimal gespeichert werden, muss die Kapazität etwa 100 Gbyte betragen, entsprechend 4 oder 5 Platten. Um gleichzeitig 1000 Benutzer unterstützen zu können, ist eine insgesamt gewährleistete Bandbreite von 4000 Mbit/s erforderlich, was 47 Platten entspricht. Nur dann, wenn es in einem derartigen System erforderlich ist, mehr als 235 Filme zu speichern, wird die Speicherkapazität der Platten relevant. In einem mehr gemäßigten Szenario, in dem das System nach der vorliegenden Erfindung benutzt wird bis zu hundert Benutzern eine Wahl von Filmen zu bieten, wie dies für ein Hotel typisch ist, sind in Bezug auf die Bandbreite fünf Platten erforderlich. Bei voller Duplikation aller Blöcke können die fünf Platten 23 Filme speichern, was mehr ist als in einem derartigen System meistens geboten wird.
  • Der vorliegenden Erfindung liegt weiterhin die Erkenntnis zugrunde, dass obschon Datenblöcke mehrere Male gespeichert sind, im Wesentlichen in einem Typischen System weniger Speichereinheiten in dem System nach der vorliegenden Erfindung erforderlich sind als in einem herkömmlichen System. Wie bereits für oben stehende Szenarien dargelegt, ist Bandbreite der begrenzende Faktor für die meisten praktischen Systeme und dies wird sogar noch zunehmen. Dadurch, dass Datenblöcke nicht länger über einzelne Speichereinheiten gestreift werden, sondern dass stattdessen der ganze Block von einer Platte ausgelesen wird, wird die Effizienz im Auslesen von Daten aus der Speichereinheit verbessert. In dem ersten Szenario führt eine Effizienzverbesserung von etwas mehr als 2% bereits zu Platteneinsparung.
  • Ein weiterer Vorteil des Systems nach der vorliegenden Erfindung liegt in der verbesserten Robustheit des Systems. Wenn beispielsweise eine von zwanzig Platten fehlt und alle Blöcke dupliziert werden, wird der Scheduler im Schnitt für einen von zwanzig Blöcken nicht imstande sein, zu wählen, von welcher Einheit der Block ausgelesen werden soll. Es dürfte einleuchten, dass dadurch die mittlere Belastung einer Speichereinheit um 5,3% zunehmen wird und die maximale Belastung an einer der restlichen Speichereinheiten wird auch um im Wesentlichen den gleichen Prozentsatz zunehmen. In dem meisten Fällen, wo das System nicht durch die maximale Anzahl Benutzer angewandt wird, wird dies reichlich Gelegenheit geben, die fehlerhafte Platte zu ersetzen. Es sind keine weiteren Maßnahmen, wie Paritätsplatten erforderlich.
  • Weiterhin nimmt die Ausdehnungsfähigkeit des Systems zu. Wenn eine zusätzliche Bandbreite (oder Speicherkapazität) erforderlich ist, kann eine zusätzliche Platte zu dem System hinzugefügt werden. Danach müssen Blöcke von den bereits vorhandenen Platten zu den neuen Platten verlagert werden. Die zu verlagernden Blöcke können beliebig selektiert werden. Typischerweise werden die zu verlagernden Blöcke im Wesentlichen die mittlere Anzahl Blöcke sein, die auf einer Platte gespeichert sind. In dem System nach der vorliegenden Erfindung ist der Eingriff auf die Wirkung des Systems sehr gering. In einem System mit 50 Platten braucht nur 2% der Blöcke verlagert zu werden. Alle anderen Blöcke werden überhaupt nicht beeinflusst. Auch der Verlagerungsvorgang kann durchgeführt werden, wenn die Kapazität verfügbar ist zum Verlagern eines Blocks (d.h. der Vorgang kann im Hintergrund durchgeführt werden, während das System operationell ist). Wenn Blöcke zu der neuen Platte verlagert werden, nimmt die Kapazität des Systems langsam zu bis zum Schluss die gewünschte Anzahl Blöcke zu der neuen Platte verlagert worden sind. Im Gegensatz dazu braucht für ein typisches System, in dem Blöcke über alle Platten verteilt sind, auf alle Platten zugegriffen werden und es kann sogar erforderlich sein, dass Blö cke neu gebaut werden müssen, um Daten auf der neuen Platte zu speichern. Ein derartiger riesiger Vorgang muss meistens durchgeführt werden, wenn das System abgetrennt ist.
  • Ein auf Disks basierter Speicherserver für 3D interaktive Applikationen, wie einen architektonischen Spaziergang durch eine Stadt wie Los Angeles, ist beschrieben in: "Randimized data Allocation for Real-Time Disk I/O", Compcon '96 ("41 st IEEE Computer Society International Conference", Santa Clara, den 25.–28. Februar 1996). In diesem System, wobei es sich um sehr große 3D Modelle handelt, wenigstens in der Größenordnung eines Terabytes, ist die Art des I/O-Stromes gegenüber obere Grenzen der Verzögerung und Mittelbenutzung viel anders als bei Video-on-Demand-Systemen, wo diese Aspekte (weitgehend) vorhersagbar sind. Für dieses System bestimmt ein unvorhersagbarer Vorgang des Benutzers, ob ein völlig neuer teil des Modells sichtbar wird und dem Benutzer präsentiert werden soll. Damit eine hohe Spitzenbandbreite geschaffen werden kann, die zum Präsentieren eines neuen Teils des Modells erforderlich ist, wird ein Datenblock typischerweise über sieben Platten verteilt, die eine Gruppe von sieben Blöcken bilden, die je eine volle Spur auf der Platte belegen. Die Gruppe von sieben Platten werden aus dem Satz verfügbarer Platten beliebig selektiert. Einer der sieben Blöcke ist ein Paritätsblock. Die beliebige Verteilung der Gruppen führt zu einer statistischen Variation in den Längen der Schlangen. Die Variation kann dadurch verringert werden, dass nur g–1 Blöcke einer Gruppe von g Blöcken ausgelesen werden. Wenn der nicht gelesene Block ein Datenblock ist, wird der Paritätsblock zum Rekonstruieren des nicht gelesenen Blocks benutzt.
  • Die in dem Unteranspruch 2 definierte Maßnahme beschreibt einen einfachen Scheduler, in dem Anträge zum Abholen von Datenblöcken von dem Speichermedium durch den Scheduler einzeln verarbeitet werden und typischerweise in der Folge, in der sie bei dem Scheduler eintreffen. Für jeden Antrag bestimmt der Scheduler auf Basis der dann aktuellen Belastung, herrührend von den bereits zugeordneten Blockausleseanträgen, welcher Speichereinheit der Antrag zugeordnet werden soll, die dann die Speichereinheit ist, welche die geringste Belastung von allen Speichereinheiten hat, die den auszulesenden Block speichern.
  • Die Maßnahme, wie diese in dem Unteranspruch 3 definiert ist, wuchtet die Belastung aus durch Verteilung der Anträge für eine Gruppe von auszulesenden Blöcken. Dies ermöglicht eine gleichmäßigere Belastung im Vergleich zu der Zuordnung der Anträge auf einer individuellen Basis, wobei bereits zugeordnete Anträge nicht länger beeinflusst werden können. So kann beispielsweise das Zuordnen von Anträgen zu der nachfolgenden Situation führen.
  • Es kann der Speichereinheit A ein Antrag zugeordnet werden, wobei diese Einheit aus zwei möglichen Speichereinheiten A und B gewählt ist, die eine gleiche Belastung haben. Die Belastung an der Speichereinheit C ist um eine Einheit höher als die Anfangsbelastung an A und B. Für einen nächsten Antrag muss zwischen den Speichereinheiten A und C gewählt werden. Da die beiden A und C nun eine gleiche Belastung haben, wird, wie die Wahl auch sein wird, diese Wahl immer zu der Zunahme der Belastung einer der Speichereinheiten führen. Durch Erledigung der beiden Anträge in einer Gruppe, kann der erste Antrag B zugeordnet werden und der zweite Antrag kann A zugeordnet werden, was zu einer niedrigeren maximalen Belastung an der drei Einheiten führt. In den meisten Systemen werden die Speichereinheiten auf eine synchronisierte Weise ausgelesen (d.h. der Lesevorgang wird für alle Platten gleichzeitig gestartet, wobei das Auslesen selber in einer Schwingbewegung des Kopfes der Platte durchgeführt wird), dabei implizierend, dass eine Zunahme der Belastung der Speichereinheit mit der höchsten Belastung zu einem längeren Intervall führt zum Auslesen von den Speichereinheiten. Dies führt zu einer längeren Reaktionszeit zum Akzeptieren neuer Benutzer.
  • Die Maßnahme, wie in dem Unteranspruch 4 definiert, beschreibt einen einfachen Scheduler zum Auswuchten der Belastung für eine Gruppe von Anträgen, in denen Anträge zum Abholen von Datenblöcken von dem Speichermedium einzeln durch den Scheduler erledigt werden und typischerweise in der Folge in der sie bei dem Scheduler eintreffen. Für jeden Antrag bestimmt der Scheduler auf Basis der dann aktuellen Belastung, herrührend von den bereits zugeordneten Blockausleseanträgen, welcher Speichereinheit der Antrag zugeordnet werden soll, und zwar derjenigen Speichereinheit, welche die niedrigste Belastung von allen Speichereinheiten hat, die den auszulesenden Block speichern. Weiterhin brauchen Anträge, die zur Zeit erledigt werden oder die bereits endgültig Speichereinheiten zugeordnet worden sind (beispielsweise bereits ausgegeben zu einem Hardware-Ausleseantragspuffer, der Anträge für in einem nachfolgenden Schwingvorgang der Platte auszulesende Blöcke speichert) nicht betrachtet zu werden. Dadurch, dass gewährleistet wird, dass die Belastung gleichmäßig innerhalb jeder nachfolgenden Gruppe ausgewuchtet wird, wird eine relativ gleichmäßige Belastung der Speichereinheiten beibehalten, als Ergebnis der aufeinander folgenden Gruppen.
  • Die Maßnahme, wie in dem Unteranspruch 5 definiert, ermöglicht das Erhalten einer sehr gleichmäßigen Belastung an den Speichereinheiten. Simulationen haben gezeigt, dass durch Verwendung der anfangs sequentiellen Zuordnung, wie in Anspruch 4 beschrieben, wonach nur eine Runde einer sequentiellen Neuzuordnung folgt, wie in Anspruch 5 beschrieben, ist die Verteilung sehr nahe bei einem Optimum. Es dürfte einleuchten, dass die Bedingung zum Durchführen einer nächsten Wiederholung einfach ein Zähler sein kann (wie eine Durchführung nur eines Neuzuordnungsschrittes), aber sie kann auch beispielsweise von der Qualität der Verteilung abhängig sein, die bisher erhalten worden ist im Hinblick auf die maximale Belastung und die mittlere Belastung. Die Maßnahme, wie in dem Unteranspruch 6 definiert, gibt ein einfaches Kriterium, ob der vorhergehende Wiederholungsschritt ggf. zu einer Verbesserung geführt hat.
  • Die Maßnahme, wie diese in dem Unteranspruch 7 definiert ist, beschreibt, wie auf Basis einer Analogie mit einem maximalen Flussproblem eine optimale Verteilung der Last erreicht werden kann.
  • Die Maßnahme, wie diese in dem Unteranspruch 8 definiert ist, schafft eine effektive und einfache Art und Weise eine optimale Belastung zu erreichen.
  • Die Maßnahme, wie diese in dem Unteranspruch 9 definiert ist, beschreibt, dass Titel mit einem Multiplikationsfaktor assoziiert sind, der einen Pegel der Multiplikation des Titels angibt. Auf vorteilhafte Weise kann mehr als nur ein anderer Multiplikationsfaktor in dem System verwendet werden. So wird beispielsweise einer Gruppe der beliebtesten Titel ein hoher Multiplikationsfaktor zugeordnet (beispielsweise höher als 2, wodurch angegeben wird, dass für die Titel mehr als die doppelte Anzahl Blöcke gespeichert werden als für einen Teil des Titels), während für nicht regelmäßig beantragte Filme, wie alte Favoriten, ein niedriger Multiplikationsfaktor verwendet wird (beispielsweise zwischen der Verwendung von kaum Blöcken zur Speicherung des Titels bis Verwendung von 1,5fach der Anzahl Blöcke). Simulationen haben gezeigt, dass für Filme mit einer gleichen Beliebtheit bereits gute Ergebnisse erreicht werden können mit einem Multiplikationsfaktor von etwa 1,75 (d.h. 75% der Blöcke bei Wiedergabe sind zweimal verfügbar). Es dürfte einleuchten, dass durch Multiplikation der beliebtesten Titel ein gesamter Multiplikationsfaktor von 75% bei Wiedergabe bereits durch Verdopplung von im Wesentlichen weniger als 75% der Titel erreicht wird.
  • Es dürfte einleuchten, dass die Titel-spezifische Multiplikation auch auf andere Systeme mit einer Form von mehrfacher Speicherung von Blöcken angewandt werden kann. Ein derartiges System könnte als ein System zum Abrufen von Datenblöcken, wie Audio- und/oder Video-Daten, beschrieben werden, von einem Speichermedium und zum Liefern der Blöcke in Form einer Anzahl Datenströme zu Benutzern; wobei das Speichermedium eine Anzahl Speichereinheiten aufweist; wobei eine vorbestimmte Selektion von Blöcken mehrfach in dem Speichermedium gespeichert wird, indem einzelne Blöcke der Selektion in wenigstens zwei verschiedenen und nicht überlappenden Gruppen von wenigstens einer Speichereinheit gespeichert werden; wobei die Blöcke zu einer Anzahl Titel gehören, wobei jeder Titel eine Folge von Datenblöcken aufweist und mit einem vorbestimmten Multiplikationsfaktor assoziiert ist; wobei der Multiplikationsfaktor eines Titels zu einem Verhältnis der Anzahl Blöcke gehört, die in dem Speichermedium für den Titel und die Anzahl Blöcke des Titels gespeichert sind;
    wobei das System Folgendes umfasst:
    Einen Scheduler zur Steuerung der Auslese der Blöcke für die Datenströme von dem Speichermedium, wobei für jeden Block aus einem entsprechenden Satz aller Speichereinheiten, in denen der Block gespeichert ist, eine einzige Speichereinheit selektiert wird, woraus der Block ausgelesen werden soll und dass der selektierten Speichereinheit ein entsprechender Ausleseantrag zugeordnet wird; und
    einen Leser um in Reaktion auf einen Blockausleseantrag, den entsprechenden Block aus der zugeordneten Speichereinheit auszulesen um diesen Block in dem entsprechenden Datenstrom einem Benutzer zu liefern.
  • Es dürfte einleuchten, dass ein Block in einer einzigen Speichereinheit gespeichert sein kann oder in einer Gruppe von mehr als nur einer Speichereinheit gespeichert sein kann (beispielsweise verteilt über einige Speichereinheiten oder das Speichermedium um die Bandbreite zu steigern). Wenn der Block mehrfach gespeichert wird, dann wird jeder Datenelement des Blocks in wenigstens zwei verschiedenen Speichereinheiten gespeichert (keine vollständige Überlappung). Auf diese Weise wird Redundanz erreicht, was die Robustheit steigert, aber auch Auswuchtung bei der Wiedergabe ermöglicht. Wenn beispielsweise ein Block über eine Gruppe von zwei Platten verteilt ist (d.h. als zwei Subblöcke SB1 und SB2 gespeichert) und dreimal gespeichert wird, dann wird vorzugsweise jeder der zwei verschiedenen Subblöcke in drei verschiedenen Speichereinheiten gespeichert. In dem Fall ist, wenn nur eine Speichereinheit ausfällt, jeder Subblock dennoch von wenigstens zwei Speichereinheiten aus verfügbar. Vorzugsweise wird die Gruppe von Speichereinheiten "beliebig" selektiert, wobei die Lastauswuchtung bei der Wiedergabe ansteigt. Das System kann aber auch für weitgehend nicht beliebige Speicherstrategien Vorteile Bieten. Eine oft angewandte nicht beliebig Speicherstrategie ist das sog. "round-robin"-Verfahren. In einem derartigen System werden Blöcke eines einzigen Titels auf aufeinander folgenden Platten in der Sequenz der Wiedergabe gespeichert. So kann beispielsweise für ein System mit sieben Hauptplatten der erste Block eines Titels auf Platte 1 gespeichert werden; Block 2 auf Platte 2, ... Block 7 auf Platte 7, Block 8 auf Platte 1, Block 9 auf Platte 2 usw. Zum Erhalten von Redundanz in einem derartigen System wird typischerweise eine Paritätsplatte hinzugefügt (in dem Beispiel Platte 8), wobei die Paritätsplatte für jeden Zyklus (Block 1 bis Block 7; Block 8 bis Block 15) einen Paritätsblock speichert, berechnet über die Blöcke des Zyklus. Wenn alle Hauptplatte funktionieren, erfordert ein Zyklus 7 aufeinander folgende Plattenzugriffe (einen Zugriff aus jede der Platten). Wenn aber eine der Hauptplatten ausfällt, sind noch sechs normale Zugriffe erforderlich, mit sieben zusätzlichen Zugriffen für den Block, der nicht unmittelbar ausgelesen werden kann (ein Zugriff auf die Paritätsplatte und sechs Zugriffe auf die immer noch operationellen Hauptplatten). Folglich halbiert sich meistens die Leistung des Systems in einer derartigen Situation. Auf alternative Weise können alle sechs normal zugreifharen Blöcke eines Zyklus in dem Speicher bleiben und zum rekonstruieren des Blocks aus der nicht verfügbaren Platte verwendet werden, und zwar in Kombination mit dem Paritätsblock. Dies aber erfordert eine wesentliche Zunahme der Speicheranforderungen, was typischerweise dazu führt, dass das System imstande ist, wesentlich weniger Benutzer zu bedienen. Dadurch, dass Blöcke mehrfach gespeichert werden, wird die Robustheit des Systems gesteigert. Vorzugsweise wird derselbe Block optimal "phasenverschoben" gespeichert, damit die Schlimmstfall-Zugriffsverzögerung reduziert wird. So kann beispielsweise in dem oben beschriebenen System, wenn die Blöcke je zweimal gespeichert werden, vorzugsweise der Block 1 auch auf Platte 3 (oder 4) gespeichert werden, wodurch die Schlimmstfall-Verzögerung für einen neuen Benutzer auf nahezu die halbe Zyklusdauer statt auf die Dauer eines ganzen Zyklus reduziert wird. Wenn eine der Hauptplatte ausfällt, sind alle Blöcke dennoch verfügbar. Zwei der sieben Blöcke eines Zyklus werden auf einer Platte verfügbar sein. Das normale "roundrobin"-Ausleseschema kann nicht länger verwendet werden. Vorzugsweise wird für jeden Block entschieden, und zwar auf Basis einer aktuellen Belastung, aus welcher Speichereinheit der Block ausgelesen werden soll. Wie oben bereits für ein System mit beliebiger Speicherung von Blöcken angegeben, wird die Auswuchtung nicht allzu sehr beeinflusst, wenn nicht alle Blöcke mehrfach vorhanden sind. Als solches wird die Leistungsdegradation einigermaßen mit dem herkömmlichen "round-robin"-Schema verglichen. Das mehrfache Speichern eines Blocks kann die Speicherkosten steigern. Eine derartige Steigerung kann (teilweise) dadurch verschoben werden, dass keine einzelne Paritätsplatten verwendet werden. So können beispielsweise in einem System in dem "round-robin"-Stil die 20% beliebtesten Titel (meistens wenigstens 80% des Gebrauchs deckend) zweimal gespeichert werden, während alle anderen Titel nur einmal gespeichert werden. Es wird keine Paritätsplatte mehr verwendet. Wenn eine Platte ausfällt, werden 80% der Benutzer nicht betroffen. Die 80% am wenigsten beliebte Titel brauchen nicht von dem Sicherheitsspeicher, wie von einem Band, abgeholt zu werden, wodurch möglicherweise 20% der Benutzer betroffen werden. In einem derartigen Fall kann es sein dass es nicht möglich ist, einige oder all diese Titel zu bedienen, bis die ausgefallene Platte ersetzt worden oder neu gebaut ist. Es dürfte einleuchten, dass das Konzept der Multiplikation sich auf ein einziges kohärentes Speichermedium bezieht, wobei die Speichereinheiten direkt zugreifbar sind und Redundanz und Belastungsauswuchtung ausschließlich für diese Gruppe von Speichereinheiten auftritt. Ein Beispiel eines derartigen Speichermediums ist eine Plattenanordnung mit einer Gruppe von Platten, verbunden über einen gemeinsamen Bus mit einem Controller. Es dürfte einleuchten, dass nicht eingeschlossen ist eine Kombination einer derartigen Platteanordnung und eines Sicherheitsspeichers, wie eines Bandes, der ebenfalls Blöcke der Titel speichert. In einer hierarchischen Plattenanordnung, wobei kleiner Plattenanordnungen gruppiert werden zum Bilden einer großen Plattenanordnung, bezieht sich das Speichermedium entweder auf die kleinere Plattenanordnung oder auf die größere, welche auch immer zur Speicherung aller Blöcke eines einzigen Titels verwendet wird.
  • Die Maßnahme, wie diese in dem Unteranspruch 10 definiert ist, illustriert, dass ein Titel mehrfach als Ganzes gespeichert sein kann (beispielsweise zwei- oder dreifach) und dass auf alternative Art und Weise oder zusätzlich ein Prozentsatz einzelner Blöcke des Titels mehrfach gespeichert sein kann. So kann beispielsweise ein Multiplikationsfaktor von 1,75 darstellen, dass der Titel als eine Folge nicht überlappender aufeinander folgender Gruppen von vier Blöcken gesehen werden kann, wobei drei Blöcke jeder Grup pe (beispielsweise die ersten drei Blöcke) zweimal gespeichert werden und ein einziger Block (beispielsweise der letzte Block) nur einmal gespeichert wird. Auf gleiche Weise kann ein Multiplikationsfaktor von 2,5 darstellen, dass jeder "ungerade" Block des Titels zweimal gespeichert wird und dass jeder "gerade" Block dreimal gespeichert wird.
  • Ausführungsbeispiele der Erfindung sind in der Zeichnung dargestellt und werden im Folgenden näher beschrieben. Es zeigen:
  • 1 ein Blockschaltbild des Systems nach der vorliegenden Erfindung,
  • 2 ein Flussdiagramm eines linearen sequentiellen Schemas zum Selektieren von Speichereinheiten zur Wiedergabe,
  • 3 ein Flussdiagramm eines iterativen linearen sequentiellen Schemas zum Selektieren von Speichereinheiten zur Wiedergabe,
  • 4 ein Schema zum Selektieren von Speichereinheiten zur Wiedergabe auf Basis der Auflösung eines maximalen Flusses durch ein Netzwerk von Knotenpunkten,
  • 5 eine Darstellung einer alternativen iterativen Prozedur zum Selektieren von Speichereinheiten zur Wiedergabe, und
  • 6 eine Darstellung simulierter Ergebnisse für eine Vielfalt von Multiplikationsfaktoren von keine Multiplikation von Blöcken zu Vollduplikation aller Blöcke.
  • 1 zeigt ein Blockschaltbild eines Systems 100 nach der vorliegenden Erfindung. Ein Beispiel eines derartigen Systems 100 ist ein Multimediaserver. Multimedia-Applikationen können gekennzeichnet sein durch einen ausführlichen Gebrauch von audio-visuellem Material. Zur Wiedergabe von Audio oder Video ist eine (nahezu) kontinuierliche Zulieferung von Audio/Video-Daten erforderlich. Bekannte Beispiele eines Multimediaservers umfassen einen "near-video-on-demand"-Server und einen "video-on-demand"-Server. In einem "near-video-on-demand"-System bestimmt der Dienstanbieter, wann ein Titel wiedergegeben wird. Ein Datenstrom mit den Daten des Titels kann von vielen Benutzern gleichzeitig empfangen werden. In einem "video-on-demand"-System selektiert typischerweise der Benutzer einen Titel und steuert mit VCR-ähnlichen Steuerungen die Wiedergabe des Titels. Der Pegel der Interaktion ist höher und ein Datenstrom wird typischerweise nur von einem einzigen Benutzer "konsumiert". Ein Multimediaserver wird meistens unter Verwendung eines Dateiservers implementiert, der spezifisch zum Liefern kontinuierlicher Datenströme mit einer gleichen Datenrate entworfen ist (typischerweise begrenzt durch eine identische maximale Datenrate) für eine größere Anzahl paralaller Benutzer. Meistens werden ein oder mehrere Multimediatitel auf einem Hintergrundspeichermedium 110 gespeichert. Zur Zeit werden normalerweise Platten, wie Festplatten, als Hintergrundspeichermedium 110 verwendet, und zwar auf Basis deren großen Kapazität zu geringen Kosten und der Möglichkeit eines beliebigen Zugriffs. Es dürfte einleuchten, dass auch andere Speichermedien, wie optische Platten, oder sogar Halbleiterspeicherkarten verwendet werden können. Das Speichermedium ist in eine Anzahl Speichereinheiten aufgeteilt, von denen beispielsweise 102, 104, 106 und 108 dargestellt sind. Das Speichermedium 110 ist deswegen durch ein Cluster von Speichereinheiten, wie ein RAID-System, gebildet. Die Speichereinheit, wie eine Festplatte, kann an sich weiterhin wieder aufgeteilt sein (was zu einem hierarchischen Cluster führt). Zwecks der vorliegenden Beschreibung wird eine derartige aufgeteilte Speichereinheit als eine Speichereinheit betrachtet (mit einer höheren Bandbreite und/oder einer größeren Speicherkapazität als die Subeinheiten innerhalb der Speichereinheit). Für ein typisches Video-on-Demand-System, das Platten-basierte Speichermedien benutzt, wird die Anzahl Speichereinheiten, die das Speichermedium 110 bilden, durch die erforderliche Bandbreite bestimmt. Typischerweise werden alle Datenströme durch Datenelemente in der Sekunde mit einer gleichen maximalen Verbrauchsrate Rmax begrenzt, wobei ein Datenelement beispielsweise ein Byte sein kann. Für MPEG-2 codiertes Material wird die maximale Verbrauchsrate typischerweise derart gewählt, dass diese zwischen etwa 2 oder 15 Mbit/s liegt, je nach der gewünschten Qualität. Ein System, entworfen zum gleichzeitigen Unterstützen von bis zu Nmax Datenströme erfordert im Wesentlichen Nmax·Rmax/B Speichereinheiten, wobei B die Bandbreite einer einzelnen Speichereinheit ist. Es dürfte einleuchten, dass in der Praxis die maximale Verbrauchsrate für einen bestimmten Datenstrom niedriger sein kann, beispielsweise wenn der entsprechende Titel von geringerer Qualität oder von einem anderen Typ ist (beispielsweise Audio, während die meisten Ströme eine Kombination von Audio und Video betreffen) als eine Schlimmstfall-Situation, wofür das System üblicherweise entworfen worden ist.
  • Das System 100 umfasst einen Leser 180 zum Auslesen von Daten aus dem Speichermedium 110. Der Leser 180 kann beispielsweise unter Verwendung einer SCSI-Schnittstelle implementiert werden. Auf vorteilhafte Weise ist das Speichermedium 110 auch in dem System 100 vorgesehen. Für ein Platte-orientiertes Speichermedium 100 werden Daten als ein "Disk Access Block" (DAB) abgerufen. Je nach dem gewählten Steuerungsalgorithmus kann ein Vorzug gegeben werden um Daten als DABs mit einer festen Größe auszulesen oder als DABs mit einer variablen Größe. DABs, die nacheinander aus derselben Platte ausgelesen werden, werden typischerweise nicht aneinander grenzend auf der Platte gespeichert. Meistens gehören DABs, die nacheinander aus derselben Platte ausgelesen werden, zu verschiedenen Dateien (wobei eine Datei die Sammlung von Blöcken ist, die zu einem Titel gehören), da die Platte DABs für eine Anzahl Datenströme liefern muss, und zwar auf eine bestimmte verschlüsselte Art und Weise. Sogar wenn DABs, die nacheinander ausgelesen werden sollen, zu derselben Datei gehören, nach der vorliegenden Erfindung werden aufeinander folgende Blöcke einer Datei nicht aneinander grenzend in einer Speichereinheit gespeichert, sondern werden beliebig über die Speichereinheiten des Speichermediums 110 verteilt. Dadurch, dass DABs nicht aneinander grenzend ausgelesen werden, braucht der Plattenkopf zwischen dem Auslesen eines DABs verlagert zu werden und der geeignete Startpunkt eines nächsten DABs soll warten. Eine derartige Umschaltung nimmt viel Zeit, in der keine Daten gelesen werden können. Um das Schalten zu reduzieren wird oft die sog. "Disk Sweeping"-Technik angewandt. In einem derartigen Schema ist der Leser 180 imstande, eine Anzahl, beispielsweise acht, DABs aus der Speichereinheit 110 in einem einzigen Vorgang auszulesen. Die DABs dieses Vorgangs werden auf Basis deren physikalischer Spurlage geordnet. Für den Lesevorgang wird der Plattenkopf in nur einer Richtung verlagert (beispielsweise von Innen nach Außen und umgekehrt), wobei nur zum Lesen der DABs des Batches angehalten wird. Auf diese Weise wird das Schalten wesentlich reduziert. Auf vorteilhafte Weise wird ein Leser 180 verwendet, der ein Batch ausgelesener Anträge akzeptiert und intern die erforderliche Planung der beantragten Lesevorgängen durchführt, damit die meist optimale Auslesung für die betreffende Platte durchgeführt wird. Der Leser 180 kann auch einen Cachspeicher aufweisen zur vorübergehenden Speicherung von Daten, ausgelesen aus der Platte vor der Lieferung der Daten, ggf. in einer anderen Sequenz als ausgelesen aus der Platte, über einen Bus 140 zu dem restlichen Teil des Systems 100. Es dürfte einleuchten, dass die Rolle des Lesers, wie die Steuerung, das Arrangieren einer Reinigungssequenz und das in den Cachspeicher bringen ausgelesener Daten, auch verteilt sein kann, wobei jede der Speichereinheiten einen eigenen Controller hat, der diese Funktionen durchführt. Sollte dies der Fall sein, so ist eine Hauptaufgabe der Lesers 180 die Vorgänge der jeweiligen "intelligenten" Steuereinheiten zu koordinieren.
  • Insbesondere für Video kann ein Datenstrom sehr aufwendig sein. Um das Volumen zu reduzieren werden typischerweise Kompressionstechniken durchgeführt. Das Kompressionsschema kann zu einem Datenstrom mit einer festen Rate führen, beispielsweise unter Anwendung einer Form von MPEG-1-Codierung mit einer festen Rate, oder eines Datenstroms mit einer variablen Rate, beispielsweise unter Anwendung einer Form von MPEG-2-Codierung mit variabler Rate. Das System nach der vorliegenden Erfindung setzt voraus, dass für Datenströme mit variabler Rate eine feste identische maximale Verbrauchsrate von Rmax Datenelemente in der Sekunde gegeben wird, was zum Bemessen des Systems benutzt wird (beispielsweise Bandbreite des Systems und/oder Größe des Speichers) damit gewährleistet wird, dass das System in einer Schlimmstfall-Situation noch arbeitet (beispielsweise wenn alle Datenströme Daten mit der maximalen Datenrate verbrauchen). Normalerweise werden die Daten von dem System 100 in komprimierter Form in dem Speichermedium 110 gespeichert und verarbeitet. Nur bei dem Benutzer 130 wird der Datenstrom decodiert, und zwar unter Verwendung eines Decoders. Insbesondere für ein System mit variabler Rate kann das System 100 auch imstande sein, VCR-ähnliche Steuerfunktionen zu unterstützen. In einem derartigen Fall kann ein Datenstrom in einem sich in einem Zustand einer Anzahl Zustände befinden, wie in einem aktiven und einen unterbrochenen Zustand, wobei ein aktiver Datenstrom einem Benutzer Daten liefern kann und ein unterbrochener Datenstrom kann zu der betreffenden zeit einem Benutzer keine Daten liefern. Typischerweise bleiben, wenn ein Benutzer vorübergehend aufhört, Daten zu verbrauchen, die Ströme aktiv. Wenn der Benutzer Ströme schaltet (beispielsweise explizit einen neuen Titel selektiert oder implizit mit einem neuen Strom versehen wird, beispielsweise wenn das System instruiert wird, in der schnellen Vorlaufmode zu arbeiten, was dazu führt, dass ein neuer Strom mit demselben Titel selektiert wird, der schnell abgespielt wird), wird der Strom vorübergehend angehalten, damit neue Daten geladen werden können. Es dürfte einleuchten, dass eine Zeitlupenfunktion dadurch implementiert werden kann, dass Daten mit einer niedrigen Rate verbraucht werden (der Strom ist nach wie vor aktiv) oder dass zu einem neuen Strom geschaltet wird (der Strom wird vorübergehend angehalten). Das System 100 behält für den Datenstrom einen Stromzustand, der den aktuellen Zustand angibt. Der Stromzustand für einen oder mehrere Datenströme kann in einem Zustandsspeicher 190 gespeichert werden, wie in dem Hauptspeicher (RAM) des Servers oder in Spezialregistern.
  • Daten werden aus dem Speichermedium 100 für nur einen Datenstrom gleichzeitig ausgelesen, oder, wie oben beschrieben, für ein Batch von Datenströmen, wo bei die Daten des Batches als ein Zeitmultiplex-Strom über den Bus 140 geliefert werden. In allen Fällen ist das Speichermedium 100 nicht imstande, simultan kontinuierlich Datenströme zu allen Benutzern des Systems zu liefern. Stattdessen werden Daten für einen Subsatz von Datenströmen ausgelesen und dem restlichen Teil des Systems 100 mit einer höheren Datenrate als von den entsprechenden Datenströmen verbraucht, zugeführt. Das System 100 umfasst dazu Puffer 120 um zu erreichen, dass Daten mit der erforderlichen Rate den Benutzern 130 zugeführt werden. Meistens werden die Puffer 120 unter Verwendung eines RAMs implementiert. Das System 100 umfasst weiterhin Kommunikationsmittel 150 zum Übertragen von Datenströmen zu Benutzern. Die Kommunikationsmittel 150 können von allen beliebigen geeigneten Mitteln gebildet werden, wie einem LAN, zum Liefern der Daten zu den Benutzern, die in der Nähe des Systems 100 sind. In der Praxis wird ein Telekommunikations- oder Kabelnetzwerk verwendet zum Liefern der Daten über einen größeren Abstand.
  • Das System 100 umfasst auch eine Steuereinheit 160 zur Steuerung des Systems 100. Ein Hauptteil der Steuereinheit wird durch den Scheduler 170 gebildet, der bestimmt, welche DABs von dem Leser 180 aus dem Speichermedium 110 ausgelesen werden sollen, damit vermieden wird, dass ein Unterfluss oder ein Überfluss der Puffer 120 auftritt. Die Steuereinheit wird typischerweise durch einen Prozessor, wie einen RISC-Prozessor oder einen Prozessor von dem CISC-Typ, der unter Ansteuerung eines in Echtzeit arbeitenden Systems arbeitet, das von einem Speichermedium, wie einem ROM oder einer Festplatte, geladen wird. Der Scheduler 170 kann als Software-Modul integriert in das Operationssystem implementiert werden oder als Applikationsprogramm geladen werden. Typischerweise empfängt der Scheduler 170 Zustandsinformation, wie einen Füllgrad der Puffer, wobei bei diesem Empfang der Scheduler 170 seine Entscheidung trifft. Für Systeme, die VCR-ähnliche Steuerungen bieten, empfängt der Scheduler ebenfalls Information in Bezug auf den Zustand eines Stroms. In derartigen Systemen wird Steuerinformation typischerweise von den Benutzern 130 über die Kommunikationsmittel 150 empfangen.
  • In dem System nach der vorliegenden Erfindung wird eine Selektion von Blöcken mehrfach in dem Speichermedium 110 dadurch gespeichert, dass sie in wenigstens zwei verschiedenen und beliebig selektierten Speichereinheiten gespeichert wird. Der Block wird vollständig multipliziert. Dadurch ist ein derartiger Block vollständig von allen Speichereinheiten verfügbar, in denen der Block gespeichert ist (dies im Gegensatz zu der Verwendung einer Form eines Fehlerdetektions- oder Korrekturcodes, wobei ein Teil eines Blocks manchmal aus anderen Teilen neu erzeugt werden kann, die in anderen Speichereinheiten gespeichert sind). Die Blöcke können Off-Line in den Speichereinheiten gespeichert werden (d.h. nicht während das System operationell ist beim Liefern von Daten zu Benutzern). So kann es beispielsweise möglich sein, das System (oder einen Teil des Systems) Off-Line umzuschalten, wodurch es ermöglicht wird, dass Titel von den Speichereinheiten hinzugefügt (oder entfernt) werden. Auf alternative Art und Weise können die Speichereinheiten von einem entfernbaren Typ sein, wobei ein separates System (beispielsweise bei dem Inhaber der Titel vorhanden oder bei dem Verteiler der Titel zu einem Video-on-Demand-Serveranbieter) auf die gewünschte Art und Weise zur Speicherung der Titel auf den Speichereinheiten verwendet wird. Meistens aber werden die Titel in den Speichereinheiten gespeichert, während das System operationell ist. Ein Teil der Bandbreite kann zum Ändern von Titeln reserviert werden, die in den Speichereinheiten gespeichert sind oder ein derartiger Vorgang kann zu Zeitpunkten durchgeführt werden, wenn das System nicht völlig belastet ist (d.h. wenn das System nicht der maximalen Anzahl Datenströme bedient, wie dies während bestimmter Teile der Nacht, insbesondere wochentags üblich ist). Das System (oder das separate System) umfasst (in der Figur nicht dargestellte) Mittel zur vielfachen Speicherung einer Selektion von Blöcken in dem Speichermedium, durch Gewährleistung, dass ein derartiger Block in wenigstens zwei Speichereinheiten gespeichert ist. Vorzugsweise wird ein derartiger Block in genau zwei Speichereinheiten gespeichert, wobei die Speichereinheiten beliebig aus dem Satz von Speichereinheiten des Speichermediums 110 selektiert werden. Die Selektion der Platten wird vorzugsweise für jeden mehrfach zu speichernden Block separat durchgeführt. Ein (pseudo)beliebiger Sequenzgenerator kann verwendet werden zum Erzeugen einer beliebigen Zahl innerhalb des Bereichs verfügbarer Speichereinheiten. Für jeden nachfolgenden Block der Selektion von Blöcken gibt eine nächste beliebige Nummer die Speichereinheit an, in der die Mittel den Block speichern. Wie nachstehend noch detailliert beschrieben wird, ermöglicht die beliebige Selektion der Speichereinheiten eine gute Auswuchtung der Belastung, wenn die Blöcke abgerufen werden. Nebst der Selektion der Speichereinheit(en) auf eine (pseudo)beliebige Art und Weise, dürfte der Fachmann imstande sein, einen geeigneten Algorithmus zu entwerfen oder zu selektieren, der für ein bestimmtes System den gewünschten "Beliebigkeit"-Effekt erreicht. Offenbar wird bevorzugt, dass ein Block, der mehrfach gespeichert wird, jeweils in einer anderen Speichereinheit gespeichert wird, das sonst die Multiplikation nicht zu einer Verbesserung der Belastungsauswuchtung führt (und auch nicht zu einer Verbesserung der Robustheit). Dies kann auf einfache Art und Weise dadurch erreicht werden, dass, wenn eine erzeugte beliebige Nummer einer Speichereinheit entspricht, die bereits den betreffenden Block speichert, eine nächste beliebige Nummer verwendet wird. Es dürfte einleuchten, dass statt der Speicherung eines selektierten Blocks in zwei Speichereinheiten die Blöcke auch in mehr Speichereinheiten gespeichert werden können. Je mehr Speichereinheiten verwendet werden, umso weniger "beliebig" die Zuordnung eines zu Speichereinheiten zu sein braucht. Es sei bemerkt, dass "Balanced Allocations" von Y. Azar u. a. "ACM Symposium on the Theory of Computing" Seiten 593–602, 1994 beschreibt, dass wenn n Bälle in n Kästen gelegt werden, wobei für jeden Ball beliebig zwei Kästen selektiert sind und der Ball wird in denjenigen Kasten gelegt, der zu dem Zeitpunkt der Unterbringung weniger voll ist, mit hoher Wahrscheinlichkeit der meistgefüllte Kasten nur 1n 1n n/1n 2 + O(1) Bälle enthält. Dies ist exponentiell weniger als wenn der Ball in einen beliebig gewählten Kasten gelegt wurde, was dazu führen würde, dass der meist gefüllte Kasten mit hoher Wahrscheinlichkeit 1n n/1n 1n n(1 + o(1)) Bälle enthält. Diese Ergebnisse zeigen, dass insbesondere für eine Vielzahl von Blöcken Duplikation aller Blöcke vollständig und Speicherung der Blöcke beliebig auf zwei Platten dazu führt, dass die Platten im Wesentlichen eine gleiche Anzahl Blöcke enthalten. Für praktische Zwecke kann vorausgesetzt werden, dass die Anzahl Blöcke, die auf einer bestimmten Platte gespeichert sind, nahe bei einer mittleren Anzahl Blöcke liegt, die auf allen Platten gespeichert sind.
  • Die Selektion von Blöcken, die mehrfach gespeichert werden, kann alle Blöcke aller Titel in dem System betreffen. Auf alternative Weise entspricht die Selektion allen Blöcken eines Subsatzes aller Titel in dem System. Auf vorteilhafte Weise wird ein derartiger Subsatz durch die beliebtesten Titel gebildet (beispielsweise die Sammlung von Titeln, die einen vorbestimmten Prozentsatz decken, wie 90%, aller Zugriffe von Benutzern, oder einen Prozentsatz, wie 10%, aller Titel, auf die am meisten zugegriffen wird). Auf alternative Weise oder in Kombination kann die Selektion von Blöcken einem Subsatz von Blöcken eines Titels entsprechen. So wird beispielsweise jeder zweite Blocke eines Titels mehrfach gespeichert, während die anderen Blöcke eines Titels nur einmal gespeichert werden. Es dürfte einleuchten, dass viele Abwandlungen möglich sein. So kann beispielsweise von einer Gruppe von drei aufeinander folgenden Blöcken eines Titels der erste Block einmal gespeichert werden, der zweite Block zweimal, und der dritte Block dreimal. Auch die Frage, welcher Block der Blöcke einer Gruppe mehrfach gespeichert wird, kann anders sein, beispielsweise beliebig selektiert werden.
  • Im Allgemeinen beziehet sich die Blöcke, die in dem Speichermedium 110 gespeichert sind, auf eine Anzahl Titel, wobei jeder Titel (meistens als Datei gespeichert) eine Folge von Datenblöcken aufweist. Vorzugsweise ist jeder Titel (oder eine Gruppe von Titeln) mit einem vorbestimmten Multiplikationsfaktor assoziiert. Der Multiplikationsfaktor eines Titels bezieht sich auf ein Verhältnis der Anzahl Blöcke, die in dem Speichermedium für den Titel gespeichert sind und der Anzahl Blöcke des Titels. Wenn beispielsweise der Titel N Blöcke aufweist und der Titel ist als M Blöcke (M ≥ N) gespeichert, dann ist der Multiplikationsfaktor durch M/N gegeben. Wenn beispielsweise alle 1000 Blöcke eines Titels (N = 1000) dupliziert werden, was zu M = 2000 führt, dann ist der Multiplikationsfaktor 2. Auf gleiche Weise ist, wenn alle Blöcke dreimal gespeichert sind, der Multiplikationsfaktor 3. Als Solcher gibt der Multiplikationsfaktor eines Titels an, wie oft einzelne Blöcke des Titels in dem Speichermedium gespeichert sind. Andererseits ist, wenn die Hälfte der Blöcke eines Titels zweimal gespeichert sind und die andere Hälfte ist nur einmal gespeichert, der Multiplikationsfaktor 1,5. Wenn drei von vier Blöcken eines Titels (d.h. 75% des Titels) zweimal gespeichert ist und das restliche Viertel ist nur einmal gespeichert, dann ist der Multiplikationsfaktor 1,75 (M = 750·2 + 250·1 = 1750). In diesen Beispielen gibt der Multiplikationsfaktor eines Titels an, welcher Prozentsatz Blöcke des Titels mehrfach in dem Speichermedium gespeichert ist. Vorzugsweise gibt der ganze Teil des Multiplikationsfaktors (weniger eins) an, wie oft einzelne Blöcke des Titels in dem Speichermedium gespeichert sind, während der restliche Teil einen Prozentsatz Blöcke angibt (weniger als alle Blöcke) des Titels, die noch einmal in dem Speichermedium 100 gespeichert sind. Es dürfte einleuchten, dass andere Kombinationen ebenfalls möglich sind. Wenn beispielsweise die Hälfte der Blöcke einmal und die andere Hälfte dreimal gespeichert ist, ist der Multiplikationsfaktor auch 2 (M = 500·1 + 500·3 = 2000). Ein derartiges spezifisches Multiplikationsschema kann für bestimmte Titel verwendet werden, in denen beispielsweise auf einen Teil des Titels sehr oft zugegriffen wird wobei aber andere Teile meistens übersprungen werden. Es dürfte einleuchten, dass statt eines Multiplikationsfaktors von M/N auch andere Multiplikationsfaktoren verwendet werden können, die den Grad der Multiplikation der selektierten Blöcke ausdrücken.
  • Vorzugsweise ist der Multiplikationsfaktor eines Titels von der Beliebtheit des Titels abhängig. Auf vorteilhafte Weise wird für die beliebtesten Titel ein hoher Multiplikationsfaktor gewählt, während für "alt und beliebt", worauf weniger oft zugegriffen wird, ein niedrigerer Multiplikationsfaktor verwendet wird. Die Multiplikationsfaktoren können derart gewählt werden, dass für eine Typische Anwendung des Systems (d.h. mit einer mittleren Auswuchtung zwischen beliebten und weniger beliebten Titels) der mittlere Multiplikationsfaktor auf einem gewünschten Pegel liegt. Offenbar kann der Multiplikationsfaktor für Gruppen von Titeln gewählt werden, kann aber auch für einzelne Titel gewählt werden.
  • Der Scheduler 170 steuert das Auslesen von Blöcken aus dem Speichermedium 110. Im Betrieb empfängt der Scheduler 170 einen Antrag zum Auslesen eines neuen Blocks, beispielsweise wenn einer der Puffer 125 Raum hat zur Speicherung eines neuen Blocks oder wenn einer der Benutzer einen neuen Titel selektiert. Es dürfte einleuchten, dass der Scheduler 170 auch aktiv überprüft, ob die Puffer 125 Raum haben für neue Blöcke. Wenn ein neuer Block erforderlich ist, bestimmt der Scheduler 170 einen Satz von Speichereinheiten, in denen der Block gespeichert wird. Wenn der Block in nur einer Speichereinheit gespeichert wird (d.h. der Block gehört nicht zu der Selektion von Blöcken, die mehrfach gespeichert werden), stellt der Scheduler einen Antrag zum Auslesen des Blocks an die Speichereinheit. Wenn der Block mehrfach gespeichert ist, wählt der Scheduler 170 eine dieser Speichereinheiten und stellt den Antrag zum Auslesen des Blocks an die gewählte Speichereinheit. Der Scheduler selektiert die Speichereinheit aus dem Satz, und zwar derart, dass die Belastung an den Speichereinheiten des Speichermediums 100 ausgewuchtet ist.
  • In Reaktion auf einen Blockausleseantrag, gestellt durch den Scheduler 170 arrangiert der Leser 180, dass der entsprechende Block aus der betreffenden Speichereinheit ausgelesen wird. Der ausgelesen Block wird in einem der Puffer 125 gespeichert, der dem Datenstrom entspricht, für den der Block zur Zuführung zu einem Benutzer ausgelesen wurde.
  • In einer einfachen Ausführungsform des Systems nach der vorliegenden Erfindung erledigt der Scheduler einen Antrag zum Abholen eines Blocks für einen Datenstrom auf einer individuellen Basis. Wenn ein Antrag eintrifft (oder der Scheduler 170 detektiert auf eigener Initiative, dass ein neuer Block angefordert wird), selektiert der Schedu ler 170 aus dem entsprechenden Satz diejenige Speichereinheit, die zu dem betreffenden Zeitpunkt die geringste Belastung hat. Es finden weder Neuzuordnungen von vorhergehenden Anträgen statt, noch werden Erwägungen gegeben zum Abholen eines Blocks, der bereits bei dem Scheduler eingetroffen sein kann. Der einzige Einfluss vorhergehender Blockanträge ist über die Belastung der Speichereinheiten, was auf Basis der Blockausleseanträgen bestimmt wird, die bereits zugeordnet wurden, für die aber bisher noch kein Block ausgelesen worden ist. Es dürfte einleuchten, dass unter praktischen Umständen der Scheduler 170 nur zugeordnete Blockanträge berücksichtigen kann, von denen der Scheduler 170 imstande ist, den Zustand zu bestimmen. So kann beispielsweise der Leser 180 (oder einzelne Controller der Speichereinheiten) imstande sein in Hardware eine bestimmte Form interner Scheduling durchzuführen um die Reinigungssequenz zu optimieren. Wenn ein Ausleseantrag einmal gestellt worden ist, kann es sein, dass der Scheduler 170 nicht länger imstande ist, zu bestimmen, wann der aktuelle Block ausgelesen werden soll oder ausgelesen ist. Als solcher kann der Scheduler 170 derartige Blockausleseanträge als beendet betrachten und dass sie nicht länger zu der Belastung beitragen. In einer alternativen Ausführungsform des Systems nach der vorliegenden Erfindung wuchtet der Scheduler 170 die Belastung an den Speichereinheiten dadurch aus, dass er mi8t einer Gruppe von mehr als einem Antrag zum Abrufen eines Block gleichzeitig fertig wird. Dadurch gibt es nicht nur die Möglichkeit einer besseren Auswuchtung, sondern es stimmt auch mit einer zyklischen Annäherung überein, die üblicherweise in Video-Servern verwendet wird, wobei in jedem Zyklus zunächst ermittelt wird, für welche Datenströme ein Block ausgelesen werden soll, dass danach die entsprechenden Blockausleseanträge zugeordnet werden und dass zum Schluss die Blocke in einem Reinigungsdurchgang ausgelesen werden. Der Reinigungsdurchgang kann ggf. für alle Speichereinheiten synchronisiert werden. Nach der vorliegenden Erfindung bestimmt der Scheduler 170 zunächst eine Gruppe von Blöcken, die innerhalb eines nächsten Zyklus ausgelesen werden sollen. Danach selektiert der Scheduler 170 für alle Blöcke der Gruppen, aus welcher Speichereinheit der Block ausgelesen werden soll, so dass die Belastung an den Speichereinheiten ausgewuchtet ist und ordnet einen entsprechenden Ausleseantrag zu. Zum Schluss sorgt der Scheduler 170 dafür, dass der Leser 180 die entsprechenden Blöcke aus den zugeordneten Speichereinheiten ausliest. Dadurch, dass nur die Belastung betrachtet wird, die aus Zuordnungen für die Gruppe herrührt, kann die Belastung wenigstens für die betreffenden Speichereinheiten ausgewuchtet werden (d.h. diejenigen Speichereinheiten, die ein Kopie eines der auszulesenden Blöcke enthalten). Da typischerweise die Gruppe wesentlich größer sein wird als die gesamte Anzahl Speichereinheiten, werden meistens alle Speichereinheiten betroffen. Auf alternative Weise kann der Scheduler 170 auch die Belastung berücksichtigen, die von einer Zuordnung einer vorhergehenden Gruppe herrührt, wenn diese Gruppen noch nicht alle ausgelesen wurden. Wie oben beschrieben, werden normalerweise Blockausleseanträge nur von dem Scheduler 170 ausgegeben, und zwar um die Zeit, wo der Leser 180 alle Blöcke für die vorhergehende Gruppe gelesen hat. In einer derartigen Annäherung reicht es, dass nur die Belastung ausgewuchtet wird, die aus Blöcken der Gruppe herrühren, da es keine Belastung mehr gibt, herrührend aus anderen Gruppen.
  • 2 zeigt ein Flussdiagramm der Wirkungsweise des Schedulers 170 in einer weiteren Ausführungsform des Systems nach der vorliegenden Erfindung, wobei der Scheduler sequentiell mit den Blöcken der Gruppe fertig wird. Es wird vorausgesetzt, dass es eine bestimmte Sequenz in den Blöcken gibt. Die Sequenz an sich ist nicht wichtig. Die Sequenz kann beispielsweise die Sequenz sein, worin der Scheduler 170 den Antrag empfängt zum Abrufen des Blocks. Eine alternative Sequenz kann auf der Sequenz der Puffer basieren, für die der Block geleint ist. Vorzugsweise wird für ein System, das verschiedene Multiplikationsfaktoren benutzt, die Sequenz durch den Multiplikationsfaktor bestimmt, wobei Ausleseanträge für Blöcke mit einem niedrigen Multiplikationsfaktor zunächst zugeordnet werden und Anträge für Blöcke mit einem hohen Multiplikationsfaktor als letztere. Auf diese Art und Weise ist für alle Blöcke Wahlfreiheit verfügbar (für die ersten Blöcke, da die Speichereinheiten noch nicht stark belastet sind; für die letzten Blöcke durch die Wahl, herrührend aus dem höheren Pegel der Multiplikation), was zu einer besseren Belastungsauswuchtung führt. In dem Schritt 200 selektiert der Scheduler einen ersten Block der Sequenz. Ein selektierter Block wird in den Schritten 210, 220 und ggf. in dem Block 230 verarbeitet. In dem Schritt 240 testet der Scheduler 170, ob alle Blöcke der Gruppe verarbeitet worden sind. Sollte dies der Fall sein, so wird der Vorgang beendet. Sollte dies nicht der Fall sein, so wird in dem Schritt 250 ein nächsten Block der Gruppe selektiert und der Prozess wird in dem Schritt 210 fortgesetzt. Für jeden Block bestimmt der Scheduler 170 in dem Schritt 210 einen Satz mit Speichereinheiten, in denen der Block gespeichert wird. In dem Schritt 215 wird ein etwaiger Test durchgeführt, der Bei Systemen angewandt werden kann, in denen nicht alle Blöcke mehrfach gespeichert werden. Wenn der Block in nur einer einzigen Speichereinheit gespeichert ist (d.h. der Block gehört nicht zu der Selektion von Blöcken, die mehrfach gespeichert werden), ordnet der Scheduler in dem Schritt 220 einen Ausleseantrag zum Auslesen des Blocks der Speichereinheit zu. Wenn der Block mehrfach gespeichert wird, wählt der Scheduler 170 in dem Schritt 230 eine der Speichereinheiten aus dem Satz und ordnet in dem Schritt 220 den Ausleseantrag zum Auslesen des Blocks der gewählten Speichereinheit zu. Der Scheduler selektier die Speichereinheit, die zu dem betreffenden Zeitpunkt eine sehr niedrige Belastung hat, herrührend von Blockausleseanträgen, die bereits für vorhergehend verarbeitete Blöcke der Gruppe zugeordnet worden sind. Dieser Algorithmus wird weiterhin als lineare Zuordnungsalgorithmus bezeichnet.
  • 3 zeigt ein Flussdiagramm der Wirkungsweise des Schedulers 170 in einer weiteren Ausführungsform des Systems nach der vorliegenden Erfindung. In dem Schritt 310 führt der Scheduler 170 eine Anfangszuordnung durch. Der Scheduler selektiert für jeden der Blöcke der Gruppe eine vorläufige Speichereinheit und ordnet den entsprechenden Blockausleseantrag der vorläufigen selektierten Speichereinheit zu. Der Selektionsprozess kann einfach sein, wie immer beim selektieren einer ersten Speichereinheit aus dem Satz (wobei die Speichereinheiten derart betrachtet werden, als seien sie sequentielle gegliedert) oder bei beliebigen Selektieren einer Speichereinheit aus dem Satz von Speichereinheiten. Vorzugsweise wird die Anfangszuordnung in dem Schritt 310 unter Anwendung des sequentielle Zuordnungsschemas nach 2 durchgeführt, wobei die Auswuchtung innerhalb der Gruppe berücksichtigt wird. Nach der Anfangszuordnung startet der Scheduler 170 eine Wiederholungsprozedur, in der für jeden Block der Gruppe eine Speichereinheit neu selektiert wird und der entsprechende Blockausleseantrag neu zugeordnet wird. Vorzugsweise wird die Neuzuordnung wie folgt durchgeführt, was dem Schema aus 2 entspricht. Wenn vorausgesetzt wird, dass es in den Blöcken eine gewisse Sequenz gibt, selektiert der Scheduler 170 in dem Schritt 320 einen ersten Block der Sequenz. Ein selektierter Block wird in den Schritten 330, 340 und 350 verarbeitet. In dem Schritt 360 testet der Scheduler 170, ob alle Blöcke der Gruppe verarbeitet worden sind. Sollte dies der Fall sein, dann ist eine Schleife der Wiederholungsprozedur beendet. Sollte dies nicht der Fall sein, so wird in dem Schritt 370 ein nächster Block der Gruppe selektiert und der Prozess wird mit dem Schritt 330 fortgesetzt. In dem Schritt 380 überprüft der Scheduler 170, ob eine Bedingung zum Beenden der Schleife erfüllt worden ist. Sollte dies der Fall sein, so wird die Schleife beendet, sonst wird in dem Schritt 320 eine nächste Schleife gestartet. Die Bedingung an sich kann eine einfache Bedingung sein, wie ob die Schleife eine vorbestimmte Anzahl Male durchgeführt worden ist, oder ob die maximale Belastung, herrührend von der letzten Schleife, dieselbe ist wie bevor die Schleife gestartet wurde. Für jeden Block bestimmt der Scheduler 170 in dem Schritt 330, in welchem Satz von Speichereinheiten der Block gespeichert wird. In dem Schritt 335 wird ein etwaiger Test durchgeführt, der in Systemen angewandt werden kann, in denen nicht alle Blöcke mehrfach gespeichert werden. Wenn der Block in nur einer einzige Speichereinheit gespeichert wird (d.h. der Block gehört nicht zu der Selektion von Blöcken, die mehrfach gespeichert werden), ordnet der Scheduler in dem Schritt 340 einen Ausleseantrag zum Auslesen des Blocks der Speichereinheit zu. Wenn der Block mehrfach gespeichert wird, wählt der Scheduler 170 in dem Schritt 350 eine der Speichereinheiten aus dem Satz und ordnet in dem Schritt 340 den Ausleseantrag zum Auslesen des Blocks der gewählten Speichereinheit zu. Der Scheduler 170 selektiert die Speichereinheit, die zu dem betreffenden Zeitpunkt eine sehr geringe Belastung hat, herrührend aus den Blockausleseanträgen, die bereits für vorher verarbeitete Blöcke der Gruppe zugeordnet worden sind. Dieser Algorithmus wird weiterhin als der lineare Neuzuordnungsalgorithmus bezeichnet, wobei die Anfangszuordnung durch den linearen Zuordnungsalgorithmus durchgeführt wird.
  • Bei einer weiteren Ausführungsform nach der vorliegenden Erfindung ordnet der Scheduler 170 Blockausleseanträge für die Blöcke der Gruppe entsprechend einer Zuordnung zu, hergeleitet von der Lösung eines ähnlichen Maximalflussproblems. Wie in dem Schritt 310 nach 3 führt der Scheduler 170 zunächst eine Anfangszuordnung dadurch durch, dass für jeden der Blöcke der Gruppe eine vorläufige Speichereinheit selektiert wird und dass der entsprechende Blockausleseantrag der vorläufigen selektierten Speichereinheit zugeordnet wird. Ein ähnliches maximales Flussproblem wird wie folgt definiert. Es wird ein Netzwerk von Knotenpunkten ni definiert, die für jede Speichereinheit si einen entsprechenden Knotenpunkt haben (Vertex) ni. Das Netzwerk umfasst ebenfalls einen Quellen-Knotenpunkt (s) und einen Senken-Knotenpunkt (d). Jeder Knotenpunkt ni ist mit nj (ni ≠ nj) verbunden, und zwar über einen entsprechenden Bogen (gerichteten Rand) mit einer Kapazität entsprechend der Anzahl Blöcke, die in si sowie in sj gespeichert sind und für die der entsprechende Blockausleseantrag si zugeordnet worden ist. As sich gibt die Kapazität die Anzahl Blöcke an, die von si bis sj neu zugeordnet werden können. 4A zeigt ein Netzwerk für drei Speichereinheiten si bis sj, dargestellt durch die betreffenden Knotenpunkte n1 bis n3. In dem Beispiel wird vorausgesetzt, dass die betreffenden Anfangsbelastungen der Speichereinheiten si bis s3 15, 12 und 10 sind (wie in der Mitte jedes entsprechenden Knotenpunktes angegeben). Neben jedem Bogen von dem Einen Knotenpunkt zu dem anderen ist angegeben, wie viele Blockausleseanträge neu zugeordnet werden können zwischen den Speichereinheiten entsprechend den Knotenpunkten (so können beispielsweise in dem Beispiel drei Blöcke von s1 bis s3 neu zugeordnet werden und zwei von s3 bis s1. Das Problem ist derart definiert, dass bestimmt werden kann, ob die maximale Belastung lmax an den Speichereinheiten um k Einheiten verringert werden kann, wobei die Belastung von der vorläufigen Zuordnung von Blockausleseanträgen zu den Speichereinheiten herrührt. Dazu wird die Quelle s über einen entsprechenden Bogen mit einer Kapazität von max(k + li – imax, 0) mit jedem Knotenpunkt ni verbunden. In dieser Formel entspricht li einer Belastung der Speichereinheit si, herrührend aus den Blockausleseanträgen, die bereits vorher si zugeordnet wurden. Folglich wird die maximale Belastung lmax durch lmax = max{1i} über alle Speichereinheiten gegeben. In dem Beispiel nach 4A ist lmax = 15. Weiterhin ist jeder Knotenpunkt ni über einen entsprechenden Bogen mit einer Kapazität von max(lmax – li – k, 0) mit der Senke d verbunden. In dem Beispiel nach 4A ist k entsprechend 2 gewählt und die entsprechenden Kapazitäten der Quelle zu den betreffenden Knotenpunkten und von den Knotenpunkten zu der Senke sind dargestellt. Daraufhin wird der maximale Fluss durch das Netzwerk berechnet. 4B zeigt ein mögliches Ergebnis des berechneten Flusses. Neben jedem Bogen ist der Fluss angegeben (anders als in 4A, wobei die Kapazität angegeben wurde). Der Fluss in einem Bogen kann die Kapazität nicht übersteigen. Die Kapazitäten der Bögen von der Quelle s zu den betreffenden Knotenpunkten sind derart definiert worden, dass, wenn und nur dann, wenn der berechnete Fluss von der Quelle s zu den betreffenden Knotenpunkten mit der Kapazität übereinstimmt (d.h. die Kapazität ist völlig benutzt) die maximale Belastung tatsächlich um k Einheiten verringert werden kann. Wenn beispielsweise die Belastung an einem Knotenpunkt der maximalen Belastung lmax entspricht, ist es erwünscht, die Belastung an diesem Knotenpunkt um k Einheiten zu verringern, dies reflektiert durch eine Kapazität von max(k + li – lmax, 0) = max(k + lmax – lmax, 0) = k. Auf gleiche Weise ist es für einen Knotenpunkt mit einer Belastung von lmax – 1 erwünscht, die Belastung um k – 1 Einheit zu verringern, dies gegenüber einer Kapazität von max(k + lmax – 1 – lmax, 0) = max(k – 1, 0) = k – 1 (unter Voraussetzung dass k ≥ 0). Die Formel drückt auch aus, dass eine Belastung an einem Kno tenpunkt von lmax – k (oder sogar höher) nicht verringert zu werden braucht. Auf gleiche Weise drücken die Kapazitäten des Bogens von den betreffenden Knotenpunkten zu der Senke d um wie viele Einheiten die Belastung an den Knotenpunkten erhöht werden kann, ohne dass die erwünschte maximale Belastung von lmax – k überschritten wird. Es dürfte einleuchten, dass der berechnete Fluss von den Knotenpunkten zu der Senke niedriger sein kann die betreffenden Kapazitäten, was besagt, dass das System nicht völlig ausgelastet ist (in 4B ist der Fluss von n3 zu der Senke gleich 1, während die Kapazität 3 beträgt, was angibt, dass die Belastung an n3 gesteigert werden darf, und zwar bis zu zwei weiteren Blöcken). Wenn der berechnete maximale Fluss zeigt, dass die maximale Belastung um k Einheiten verringert werden kann, ordnet der Scheduler 170 eine Anzahl Blockausleseanträge von si zu sj (si ≠ sj) zu, die dem resultierenden berechneten Fluss von ni bis nj entspricht. 4C zeigt eine Neuzuordnung entsprechend den berechneten Flüssen aus 4B. Zum Berechnen des maximalen Flusses durch das Netzwerk kann jeder beliebige Algorithmus, wie der durchaus bekannte Ford&Fulkerson-Algorithmus verwendet werden. Einzelheiten von Maximalfluss-Grundlagen sind in "Algorithmic Graph Theory", Alan Gibson, Cambridge University Press, 1998, Seiten 96–106 beschrieben.
  • Die maximale Belastung an Speichereinheiten eines durchaus ausgewuchteten Systems wird zwischen (einschließlich der Begrenzungen) der nach oben gerundeten mittleren Belastung lavg an den Speichereinheiten und der maximalen Belastung lmax, herrührens aus der vorläufigen Zuordnung liegen. Auf diese Weise kann k zwischen 1 und lmax – lavg gewählt werden (wenn lmax dem Wert lavg entspricht, kann die Belastung nicht verringert werden). Um den maximalen Wert für k zu bestimmen, für den die maximale Belastung dennoch verringert werden kann, können mehrere Schemen angewandt werden. So können beispielsweise ausgehend von einer der Begrenzungen nacheinander alle Werte von k versucht werden, bis das erwünschte Ergebnis erreicht ist, beispielsweise ausgehend von k = lmax – lavg, wird der maximale Fluss berechnet; wenn nicht erfolgreich, so wird k verringert bis es erfolgreich ist oder bis der letzte Wert von k (k = 1) ohne Erfolg verucht wurde. Auch eine "binäre Suche" kann durchgeführt werden, wobei k derart gewählt wird, dass dieser Wert etwa in der Mitte des Intervalls liegt. Wenn erfolgreich, so wird der Prozess mit der oberen Hälfte des Intervalls wiederholt, sonst mit der unteren Hälfte des Intervalls. Der Prozess wird wiederholt, bis der Wert von k erreicht ist.
  • Bei einer Ausführungsform des Systems nach der vorliegenden Erfindung wird ein gleiches Ergebnis erreicht, wie dies erreicht werden kann durch Lösung des beschriebenen Algorithmus auf Basis des Maximalflussproblems, und zwar dadurch, dass der Scheduler 170 eine wiederholte Prozedur durchführt, die in 5 dargestellt ist. Wie oben ist der erste Schritt 510 das Durchführen einer Anfangszuordnung, und zwar dadurch, dass für jeden der Blöcke der Gruppe eine vorläufige Speichereinheit selektiert wird und dass der entsprechende Blockausleseantrag der vorläufigen selektierten Speichereinheit zugeordnet wird. Nach der Anfangszuordnung startet der Scheduler 170 eine wiederholte Prozedur, in der ein versuch gemacht wird, einen Blockausleseantrag aus einer Speichereinheit mit maximaler Belastung einer Speichereinheit neu zuzuordnen, deren Belastung geringer ist als lmax – 1. Die Neuzuordnung kann unmittelbar von der einen Speichereinheit zu der anderen, aber auch eine Kette von Neuzuordnungen kann auftreten. In dem Schritt 520 selektiert der Scheduler eine Speichereinheit si mit einer Belastung an si, die einer maximalen Belastung lmax an der Anzahl Speichereinheiten entspricht. Die Belastung rührt von aktuell zugeordneten Blockausleseanträgen her. Es dürfte einleuchten, dass mehr als eine Speichereinheit die maximale Belastung haben kann. Sollte dies der Fall sein, so kann jede derselben selektiert werden (beispielsweise die erste derselben). In dem Schritt 530 bestimmt der Scheduler, ob es eine Strecke von si zu einer anderen Speichereinheit sj gibt mit einer Belastung weniger als lmax – 1. Es wird beabsichtigt, einen Ausleseantrag von si zu sj zu verlagern, und zwar über die Strecke, wobei die Belastung an si um eins reduziert und die Belastung an sj um eins gesteigert wird. Zum Erhalten einer Verbesserung sollte die resultierende Belastung an sj kleiner sein ans lmax, was bedeutet, dass die Anfangsbelastung an sj weniger sein soll als lmax – 1. Damit es möglich ist, einen Ausleseantrag über die Strecke zu verlagern, wird die Strecke durch eine Folge von Speichereinheiten sp1, sp2, ..., spl gebildet, wobei si = sp1 und sj = sp1 ist und wobei für jedes Paar spk, sp(k+1) ein Blockausleseantrag von Spk zu Sp(k+1) zugeordnet werden kann, wobei k von l bis l – 1 reicht. Jeder geeignete Algorithmus kann verwendet werden um zu ermitteln, ob es eine derartige Strecke gibt. So kann bs eine Graphik, wie in 4 dargestellt, für die Speichereinheiten s1 bis s3 (dargestellt durch die Knotenpunkte n1 bis n3) gebildet werden und eine Baumsuche, durchgeführt durch die Graphik. Wenn es eine Strecke gibt, ordnet der Scheduler 170 in dem Schritt 540 einen Blockausleseantrag von spk bis sp(k+1) für k in einem Bereich von 1 bis l – 1 zu. Daraufhin wird die Prozedur mit dem Schritt 520 neu gestartet. Z dem betreffenden Zeitpunkt ist die Belastung an si um eins verringert. Wenn noch andere Speichereinheiten eine gleiche maximale Belastung haben wie si vorher hatte, wird eine dieser Einheiten vorher in dem Schritt 520 selektiert. Wenn si die einzige Speichereinheit (oder die letzte Speichereinheit) mit dieser maximalen Belastung war, wird dies automatisch die maximale Belastung an dem System um eins verringert haben. Dadurch hat si nun wieder eine maximale Belastung (was meistens auch einige andere Speichereinheiten haben), sei es um eins niedriger als vorher. Dieser Prozess wird wiederholt, bis für eine Speichereinheit keine Strecke gefunden werden kann um die Belastung zu verringern.
  • Das Verhalten von drei Algorithmen nach der vorliegenden Erfindung, und zwar Lineare Zuordnung (LA), lineare Neuzuordnung und Maximalflusszuordnung (MFA), ist simuliert worden. Für m = 5 bis 30 Platten (in Schritten von 5) ist eine Simulation durchgeführt worden, wobei weiterhin die Anzahl aktiver Ströme mit der Anzahl Ströme geteilt durch die Anzahl Platten, in dem Bereich von 5 bis 30 (in Schritten von 5) variiert worden ist. An sich reicht die Anzahl aktiver Ströme von 25 bis 900. Die nachfolgende Tabelle zeigt die Ergebnisse der Simulation für 1000000 aufeinander folgende Durchgänge. Alle Blöcke sind völlig dupliziert worden und in jedem Durchgang wird ein Datenblock für jeden aktiven Strom abgerufen, gegenüber einem Schlimmstfall-Szenario, in dem alle Ströme ständig mit der maximalen rate verbrauchen. Von jedes Gruppe von drei Ergebnisses, dargestellt in der Tabelle, bezieht sich das obere Ergebnis auf den LA-Algorithmus, das mittlere Ergebnis bezieht sich auf den LR-Algorithmus und das untere Ergebnis bezieht sich auf den MFA-Algorithmus. Jedes Ergebnis zeigt die maximal beobachtete Belastung, wobei die Anzahl male, dass die maximale Belastung beobachtet wurde, eingeklammert ist.
  • Figure 00280001
  • Figure 00290001
  • Die dargestellten Simulationen zeigen, dass mit dem relativ einfachen LR-Algorithmus gute Ergebnisse erzielt werden können mit in nahezu allen Situationen einer gleichen maximalen Belastung, wie mit dem MFA-Algorithmus erhalten (was die best erzielbare Belastungsauswuchtung ergibt), obschon die Anzahl Male, dass die maximale Belastung beobachtet wurde, höher ist als für den MFA-Algorithmus. Die Simulationen zeigen ebenfalls, dass durch vollständiger Duplikation von Blöcken und Speicherung der Blöcke auf beliebige Art und Weise eine maximale Belastung erreicht werden kann, was, insbesondere für den LR- und den MFA-Algorithmus, für die meisten simulierten Situationen um nur 3–10% höher ist als die mittlere Belastung, was die untere Grenze ist. An sich ist die Auswuchtung, wie erreicht werden kann, sehr gut.
  • Die nachfolgende Tabelle zeigt die mittlere maximale beobachtete Belastung für die gleichen Simulationen, bestätigend, dass insbesondere für größere Systeme die maximale Belastung im Schnitt der mittleren Belastung an allen Platten annähert.
  • Figure 00290002
  • Figure 00300001
  • 6 zeigt simulierte Ergebnisse für den MFA-Algorithmus für 1000000 aufeinander folgende Durchgänge, mit 15 Platten und 225 aktiven Datenströmen (was zu einer mittleren Belastung von 15 Strömen je Platte führt), wobei der Multiplikationsfaktor variiert wird, und zwar von 1 (keine Multiplikation) bis 2 (volle Multiplikation). Ein Multiplikationsfaktor von 1,25 (25% Duplikation) gibt an, dass 1 zu 4 Blöcken dupliziert wurde. Die Figur zeigt, wie oft (vertikal) eine maximale Belastung (horizontal) beobachtet wurde. Für ein System, in dem jeder Block nur einmal gespeichert wird (0% Duplikation), zeigt die Figur, dass die beobachteten maximalen Belastungen im Wesentlichen zwischen 18 und 28 Strömen je Platte liegen, wobei maximale Belastungen weit über 30 nur selten auftreten. Es dürfte einleuchten, dass wenn ein derartiges Schema gewählt wird, ein derartiges System derart bemessen sein sollte, dass es imstande ist, etwa 30 Ströme je Platte zu erledigen, während die mittlere Belastung nur 15 Ströme je Platte beträgt, was eine Überbemessung von einem Faktor 2 ergibt. Für ein System mit einem Duplikationsfaktor von 50% liegen die beobachteten maximalen Belastungen im Wesentlichen zwischen 15 und 18 Strömen je Platte. Die Bemessung eines derartigen Systems für beispielsweise 20 Ströme je Platte (eine Überbemessung von 33%) wird kaum ein Problem geben (d.h. eine maximale Belastung über 20). An sich zeigt 5, dass für Systeme, bei denen die Speicherkapazität ein be grenzender Faktor ist, können gute Ergebnisse erreicht werden mit einem Duplikationsgrad von weniger als 100%. Simulationen zeigen, dass ein Duplikationsgrad im Bereich von etwa 60–80% bereits gute Ergebnisse bringt. In einem derartigen Fall kann die Überbemessung weniger sein als 25% und für größere Systeme sogar weit darunter. Für eine 100% Duplikation kann für den LR- und MFA-Algorithmus ein System mit 15 Platten und bemessen zum Unterstützen von 16 Strömen je Platte (eine 6,7% Überbemessung) ohne dass Probleme in den Simulationen beobachtet werden konnten) 225 Ströme unterstützen (im Schnitt 15 Ströme je Platte). Man soll bedenken, dass in praktischen Umständen die Ergebnisse noch besser sein werden. Die Simulationen sind durchgeführt worden unter der Voraussetzung einer Schlimmstfall-Situation, wobei alle Ströme Daten mit der maximalen Datenrate verbrauchen und die Plattenleistung als sehr niedrig spezifiziert ist. In der Praxis wird die Plattenleistung besser sein und für Systeme mit einer variablen Verbrauchsrate wird die mittlere Verbrauchsrate weit unter der maximalen Verbrauchsrate liegen. Folglich kann insbesondere für größere Systeme der Pegel der Überbemessung sogar noch weiter verringert werden.
  • 2
  • Anfang
    200
    Selektiere den 1. Block
    210
    Bestimme den Satz
    215
    Satzgröße = 1?
    230
    Selektiere S.U.
    220
    Zuordnen zu S.U.
    240
    Mehr Blöcke ?
    250
    Selektiere den nächsten Block
    Ende
  • 3
  • Anfang
    310
    Anfangszuordnung
    320
    Selektiere den 1. Block
    330
    Bestimme den Satz
    335
    Satzgröße = 1 ?
    350
    Selektiere zu S.U.
    340
    Zuordnen zu S.U.
    360
    Mehr Blöcke ?
    370
    Selektiere den nächsten Block
    380
    Bediunung erfüllt
    Ende
  • 5
  • Anfang
    510
    Anfangszuordnung
    520
    Selektiere S.U.
    530
    Gibt es eine Strecke ?
    540
    Neuzuordnung von Blöcken
    Ende
  • 6
  • Anzahl Abtastwerte
    Duplikation
    Maximale Belastung

Claims (10)

  1. System (100) zum Abrufen von Blöcken mit Daten, wie Audio- und/oder Videodaten, von einem Speichermedium (110) und zum Liefern der Blöcke in Form einer Anzahl von maximal Nmax Datenströmen zu Benutzern, wobei jeder Datenstrom eine identische maximale Verbrauchsrate von Rmax Datenelementen in der Sekunde hat und wobei das Speichermedium (110) eine Bandbreite von wenigstens Nmax·Rmax Datenelementen in der Sekunde hat; wobei das Speichermedium (110) eine Anzahl Speichereinheiten (102, 104, 106, 108) aufweist, dadurch gekennzeichnet, dass – eine vorbestimmte Selektion von Blöcken einige Male in dem Speichermedium (110) gespeichert ist, wobei einzelne Blöcke der Selektion als Ganzes in wenigstens zwei verschiedenen und im Wesentlichen beliebig selektierten Speichereinheiten (102, 104, 106, 108) gespeichert werden; – das System Folgendes umfasst: – einen Scheduler (170) zur Steuerung der Auslese der Blöcke für die Datenströme von dem Speichermedium, wobei für jeden Block aus einem entsprechenden Satz aller Speichereinheiten in denen der Block gespeichert ist, eine einzige Speichereinheit selektiert wird, woraus der Block ausgelesen werden soll und dass der selektierten Speichereinheit ein entsprechender Ausleseantrag zugeordnet wird; wobei der Scheduler (170) derart wirksam ist, dass er die Speichereinheit aus dem Satz derart selektiert, dass die Belastung der vielen Speichereinheiten ausgewuchtet wird; und – einen Leser (180) um in Reaktion auf einen Blockausleseantrag, den entsprechenden Block aus der zugeordneten Speichereinheit auszulesen um diesen Block in dem entsprechenden Datenstrom einem Benutzer zu liefern.
  2. System nach Anspruch 1, wobei der Scheduler (170) derart wirksam ist, dass er, in Reaktion auf einen Antrag zum Abrufen eines Blocks für einen Datenstrom, aus dem entsprechenden Satz diejenige Speichereinheit selektiert, die zu dem betreffenden Zeitpunkt die geringste Belastung hat, herrührend aus bereits zugeordneten Blockausleseanträgen.
  3. System nach Anspruch 1, wobei der Scheduler (170) derart wirksam ist, dass er die Belastung an der Vielzahl von Speichereinheiten dadurch auswuchtet, dass zyklisch Folgendes durchgeführt wird: – das Ermitteln einer Gruppe von Blöcken, die innerhalb eines nächsten Zyklus ausgelesen werden soll, – das Durchführen der Selektion und der Zuordnung für alle Blöcke in der Gruppe, so dass die Belastung an der Vielzahl von Speichereinheiten, herrührend aus den zugeordneten Blockausleseanträgen, ausgewuchtet wird; und – dafür Sorgen, dass der Leser die entsprechenden Blöcke aus den zugeordneten Speichereinheiten liest.
  4. System nach Anspruch 3, wobei der Scheduler (170) derart wirksam ist, dass er die Selektion und die Zuordnung dadurch durchführt, dass die Blöcke der Gruppe nacheinander und für jeden Block verarbeitet werden; dass es aus dem entsprechenden Satz die Speichereinheit selektiert, der zu dem betreffenden Zeitpunkt eine geringste Belastung hat, herrührend aus den Blockausleseanträgen, die bereits für Blöcke der Gruppe zugeordnet worden sind; und dass es der selektierten Speichereinheit den entsprechenden Blockausleseantrag zuordnet.
  5. System nach Anspruch 3, wobei der Scheduler (170) derart wirksam ist, dass er für jeden der Blöcke der Gruppe eine vorläufige Speichereinheit selektiert und der selektierten vorläufigen Speichereinheit den entsprechenden Blockausleseantrag zuordnet und dass es wiederholt eine Speichereinheit neu selektiert und den entsprechenden Blockausleseantrag neu zuordnet, bis eine vorbestimmte Bedingung erfüllt ist, und zwar dadurch, dass die Blöcke der Gruppe nacheinander und für jeden Block verarbeitet werden: – durch Selektion der Speichereinheit aus dem entsprechenden Satz, die zu dem betreffenden Zeitpunkt die geringste Belastung hat, herrührend aus Blockausleseanträgen, die bereits für Blöcke der Gruppe zugeordnet worden sind; und – durch Zuordnung des entsprechenden Blockausleseantrags zu der selektierten Speichereinheit.
  6. System nach Anspruch 5, wobei die Bedingung ist, dass eine maximale Be lastung an wenigstens einer der Speichereinheiten die gleiche ist wie eine maximale Belastung an wenigstens einer der Speichereinheiten an dem Ende einer vorhergehenden Wiederholung.
  7. System nach Anspruch 3, wobei der Scheduler (170) derart wirksam ist, dass für jeden der Blöcke der Gruppe, eine vorläufige Speichereinheit selektiert wird und dass der vorläufigen selektierten Speichereinheit der entsprechende Blockausleseantrag zugeordnet wird, und dass für Blöcke der Gruppe, eine Speichereinheit neu selektiert wird und der entsprechende Blockausleseantrag neu zugeordnet wird, und zwar dadurch, dass: – ermittelt wird, ob eine maximale Belastung, herrührend aus der vorläufigen Zuordnung von Blockausleseanträgen um k Einheiten verringert werden kann; – ein maximales Flussproblem dadurch gelöst wird, dass ein maximaler Fluss von einer Quelle zu einer Abfuhr über ein Netzwerk von Knotenpunkten ni berechnet wird, wobei für jede Speichereinheit si ein entsprechender Knotenpunkt ni definiert wird; wobei die Quelle mit jedem Knotenpunkt ni verbunden ist, und zwar über einen entsprechenden Bogen mit einer Kapazität von max(k + li – lmax, 0), wobei li einer Belastung an der Speichereinheit si entspricht, herrührend von den Blockausleseanträgen, die vorläufig si und imax = max{1i} zugeordnet worden sind; wobei jeder Knotenpunkt ni mit nj verbunden ist (ni ≠ nj), und zwar über einen entsprechenden Bogen mit einer Kapazität entsprechend der Anzahl Blöcke, die in si sowie in sj gespeichert sind und für welche die entsprechenden Blockausleseanträge si zugeordnet worden sind; und wobei jeder Knotenpunkt ni über einen entsprechenden Bogen mit einer Kapazität von max(lmax – li – k, 0) mit der Abfuhr verbunden ist; und entschieden wird, dass die maximale Belastung um k Einheiten verringert werden kann, wenn ein berechneter maximaler Fluss durch das Netzwerk derart ist, dass der Fluss von der Quelle zu jedem Knotenpunkt ni dem Wert max(k + li – lmax, 0) entspricht; und wenn die maximale Belastung um k Einheiten verringert werden kann, eine Anzahl Blockausleseanträge von si sj zugeordnet werden, (si ≠ sj), die dem resultierenden berechneten Fluss von ni zu nj entspricht.
  8. System nach Anspruch 3, wobei der Scheduler (170) derart wirksam ist, dass für jeden der Blöcke der Gruppe eine vorläufige Speichereinheit selektiert wird und der vorläufigen selektierten Speichereinheit der entsprechende Blockausleseantrag zugeordnet wird und dass für Blöcke der Gruppe eine Speichereinheit neu selektiert und der entsprechende Blockausleseantrag neu zugeordnet wird, und zwar dadurch, dass: wiederholt: eine Speichereinheit si selektiert wird, wobei eine Belastung an si einer maximalen Belastung lmax an der Anzahl Speichereinheiten entspricht, wobei die Belastungen aus den aktuell zugeordneten Blockausleseanträgen herrühren; ermittelt wird, ob es von si zu einer Speichereinheit sj eine Strecke gibt mit einer Belastung kleiner als lmax – 1, wobei die Strecke durch eine Folge von Speichereinheiten sp1, sp2, ..., spi, wobei si = spi ist und sj = sp1 ist und wobei für jedes Paar spk, sp(k+1) ein Blockausleseantrag von spk zu sp(k+1) zugeordnet werden kann, wobei k zwischen l und l–1 liegt; und wenn es eine Strecke gibt: dass dann von spk zu sp(k+1) ein Blockausleseantrag neu zugeordnet wird, wobei k zwischen l und l–1 liegt; bis es keine Strecke gibt.
  9. System nach Anspruch 1, wobei die Blöcke sich auf eine Anzahl Titel beziehen, wobei jeder Titel eine Folge von Datenblöcken aufweist und mit einem vorbestimmten Multiplikationsfaktor assoziiert ist; wobei der Multiplikationsfaktor eines Titels sich auf ein Verhältnis der Anzahl in dem Speichermedium gespeicherter Blöcke für den Titel zu der Anzahl Blöcke des Titels bezieht.
  10. System nach Anspruch 8, wobei der Multiplikationsfaktor eines Titels bestimmt, wie oft einzelne Blöcke des Titels in dem Speichermedium gespeichert werden und/oder welcher Prozentsatz an Blöcken des Titels oft in dem Speichermedium gespeichert werden.
DE69830965T 1997-05-26 1998-05-14 System zur wiedergabe von daten in einem video-server Expired - Fee Related DE69830965T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP97201590 1997-05-26
EP97201590 1997-05-26
PCT/IB1998/000720 WO1998054657A2 (en) 1997-05-26 1998-05-14 System for retrieving data in a video server

Publications (2)

Publication Number Publication Date
DE69830965D1 DE69830965D1 (de) 2005-09-01
DE69830965T2 true DE69830965T2 (de) 2006-05-24

Family

ID=8228368

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69830965T Expired - Fee Related DE69830965T2 (de) 1997-05-26 1998-05-14 System zur wiedergabe von daten in einem video-server

Country Status (5)

Country Link
US (1) US6415328B1 (de)
EP (1) EP0919035B1 (de)
JP (1) JP4151991B2 (de)
DE (1) DE69830965T2 (de)
WO (1) WO1998054657A2 (de)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1046280A1 (de) * 1998-10-30 2000-10-25 Koninklijke Philips Electronics N.V. Speichersystem
DE19900636B8 (de) 1999-01-11 2005-04-07 Gailer, Peter Datenzugriffs- und -verwaltungssystem sowie Verfahren zum Datenzugriff und zur Datenverwaltung für ein Rechnersystem sowie deren Verwendung
US6401126B1 (en) * 1999-03-10 2002-06-04 Microsoft Corporation File server system and method for scheduling data streams according to a distributed scheduling policy
US7213061B1 (en) * 1999-04-29 2007-05-01 Amx Llc Internet control system and method
US6657646B2 (en) * 1999-06-08 2003-12-02 Amx Corporation System and method for multimedia display
US6636941B1 (en) * 2000-01-18 2003-10-21 International Business Machines Corporation Enhanced stable disk storage
US6668304B1 (en) * 2000-01-18 2003-12-23 International Business Machines Corporation Transaction support on logical disks
JP2003536329A (ja) 2000-06-02 2003-12-02 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 記憶媒体からブロックを読み出すための方法及びシステム
GB2365557A (en) * 2000-08-04 2002-02-20 Quantel Ltd Stored data distribution in file server systems
US7788396B2 (en) * 2001-11-28 2010-08-31 Interactive Content Engines, Llc Synchronized data transfer system
US6886074B1 (en) * 2001-12-05 2005-04-26 Adaptec, Inc. Method and apparatus for raid load balancing
US6925499B1 (en) * 2001-12-19 2005-08-02 Info Value Computing, Inc. Video distribution system using disk load balancing by file copying
US7039784B1 (en) * 2001-12-20 2006-05-02 Info Value Computing Inc. Video distribution system using dynamic disk load balancing with variable sub-segmenting
US7742504B2 (en) * 2002-01-24 2010-06-22 University Of Southern California Continuous media system
US7373414B2 (en) * 2002-08-29 2008-05-13 Amx Llc Multi-media system and method for simultaneously delivering multi-media data to multiple destinations
US6865627B2 (en) * 2002-12-27 2005-03-08 Microsoft Corp Regulating real-time data capture rates to match processor-bound data consumption rates
US7342584B2 (en) * 2004-11-18 2008-03-11 Amx, Llc Method and computer program for implementing interactive bargraphs of any shape or design on a graphical user interface
AU2006287639C1 (en) 2005-09-07 2012-06-28 Open Invention Network, Llc Method and computer program for device configuration
US9407676B2 (en) * 2013-11-25 2016-08-02 At&T Intellectual Property I, Lp Method and apparatus for distributing media content

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5414845A (en) * 1992-06-26 1995-05-09 International Business Machines Corporation Network-based computer system with improved network scheduling system
US5544327A (en) * 1994-03-01 1996-08-06 International Business Machines Corporation Load balancing in video-on-demand servers by allocating buffer to streams with successively larger buffer requirements until the buffer requirements of a stream can not be satisfied
US5544313A (en) * 1994-05-11 1996-08-06 International Business Machines Corporation Baton passing optimization scheme for load balancing/configuration planning in a video-on-demand computer system
US5712976A (en) * 1994-09-08 1998-01-27 International Business Machines Corporation Video data streamer for simultaneously conveying same one or different ones of data blocks stored in storage node to each of plurality of communication nodes
US5625811A (en) * 1994-10-31 1997-04-29 International Business Machines Corporation Method and system for database load balancing
US5828879A (en) * 1994-12-22 1998-10-27 Fore Systems, Inc. Method and a scheduler for controlling when a server provides service to an entity
US5926649A (en) * 1996-10-23 1999-07-20 Industrial Technology Research Institute Media server for storage and retrieval of voluminous multimedia data
DE69731377D1 (de) * 1996-12-23 2004-12-02 Koninkl Philips Electronics Nv Verfahren und system zur bereitstellung von datenströmen
JP2000515706A (ja) * 1997-05-26 2000-11-21 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ ストリームサーバにおいてデータを取り出すシステム
US6018359A (en) * 1998-04-24 2000-01-25 Massachusetts Institute Of Technology System and method for multicast video-on-demand delivery system

Also Published As

Publication number Publication date
JP4151991B2 (ja) 2008-09-17
US6415328B1 (en) 2002-07-02
DE69830965D1 (de) 2005-09-01
WO1998054657A3 (en) 1999-03-04
EP0919035B1 (de) 2005-07-27
JP2000515709A (ja) 2000-11-21
EP0919035A2 (de) 1999-06-02
WO1998054657A2 (en) 1998-12-03

Similar Documents

Publication Publication Date Title
DE69830965T2 (de) System zur wiedergabe von daten in einem video-server
Ghandeharizadeh et al. Mitra: A scalable continuous media server
EP0916118B1 (de) System zur wiedergabe von daten in einem datenflussserver
DE69534248T2 (de) Mehrbenutzersystem für Datenspeicherung, -zugriff und -verteilung, mit verteilter Speicherung eines kontinuierlichen Datenstromes
DE112018005869T5 (de) Strukturanpassung einer namensraumzuordnung in nicht flüchtigen speichervorrichtungen
US6317807B1 (en) Data storage apparatus and method allocating sets of data
Venkatasubramanian et al. Load management in distributed video servers
DE60123396T2 (de) Diskzuordnungssystem mit umordnung einer begrenzten anzahl von anforderungen
DE112013006504B4 (de) Speichersystem und Datenverwaltungsverfahren
US7096328B2 (en) Pseudorandom data storage
DE60005205T2 (de) Vorrichtung und verfahren zur zusammensetzung eines mediaspeichersystems
DE60111039T2 (de) Speichersystem das aus mehreren speichergeräten besteht, mit verschiedenen fehlertoleranten verfahren
Chua et al. Disk striping strategies for large video-on-demand servers
DE10236796B4 (de) Verfahren und Anordnung zur randomisierten Datenspeicherung in Speichernetzwerken und/oder einem Intranet und/oder dem Internet sowie ein entsprechendes Computerprogramm-Erzeugnis und ein entsprechendes computerlesbares Speichermedium
DE60316141T2 (de) Echtzeit-speicherbereichsnetzwerk
Vin et al. Optimizing the placement of multimedia objects on disk arrays
DE112010004931T5 (de) Mehrphasige Wiederherstellung von Dateisystemen mit SelektiverBedarfsweiser Verfügbarkeit von Daten(
Ghandeharizadeh et al. Placement of continuous media in multi-zone disks
Oyang et al. Design of multimedia storage systems for on-demand playback
DE112020003457B4 (de) Umwandeln von speicherpools mit kleinem speicherbereich in speicherpools mit grossem speicherbereich am speicherort
Anastasiadis et al. Modular and efficient resource management in the exedra media server
Anastasiadis et al. Maximizing Throughput in Replicated Disk Striping of Variable Bit-Rate Streams.
Ghandeharizadeh et al. An overview of techniques to support continuous retrieval of multimedia objects
Chang et al. 2D BubbleUp: Managing Parallel Disks for Media Servers.
Cheng et al. Disk and file system design for MPEG-2 video-on-demand servers

Legal Events

Date Code Title Description
8320 Willingness to grant licences declared (paragraph 23)
8328 Change in the person/name/address of the agent

Representative=s name: VOLMER, G., DIPL.-ING., PAT.-ANW., 52066 AACHEN

8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee