-
HINTERGRUND DER ERFINDUNG
-
Ausführungsformen der vorliegenden Erfindung beziehen sich auf einen Ansatz, der das effiziente Generieren von mindestens einer Zufallszahl ermöglicht.
-
KURZE DARSTELLUNG
-
Eine erste Ausführungsform bezieht sich auf eine Vorrichtung zum Generieren einer Zufallszahl, wobei die Vorrichtung Folgendes umfasst:
- – mindestens zwei Schieberegister,
- – eine Transformationsfunktion, die die Zufallszahl auf der Grundlage von mindestens einer Zelle von jedem der mindestens zwei Schieberegister generiert.
-
Eine zweite Ausführungsform bezieht sich auf ein Verfahren zum Generieren einer Zufallszahl, wobei das Verfahren Folgendes umfasst:
- – Generieren der Zufallszahl basierend auf mindestens einer Zelle von jedem von mindestens zwei Schieberegistern mittels einer Transformationsfunktion.
-
Eine dritte Ausführungsform bezieht sich auf eine Vorrichtung zum Generieren einer Zufallszahl, wobei die Vorrichtung Folgendes umfasst:
- – Mittel zum Generieren der Zufallszahl basierend auf mindestens einer Zelle von jedem von mindestens zwei Schieberegistern mittels einer Transformationsfunktion.
-
Eine vierte Ausführungsform ist auf ein Computerprogrammprodukt gerichtet, das direkt in einen Speicher einer digitalen Verarbeitungsvorrichtung ladbar ist, umfassend Softwarecodeanteile zum Durchführen der Schritte des hierin beschriebenen Verfahrens.
-
KURZE BESCHREIBUNG DER ZEICHNUNGEN
-
Ausführungsformen werden gezeigt und mit Bezug auf die Zeichnungen dargestellt. Die Zeichnungen dienen dazu, das grundlegende Konzept darzustellen, sodass nur Aspekte, die zum Verständnis des grundlegenden Konzepts benötigt werden, dargestellt sind. Die Zeichnungen sind nicht maßstabsgetreu. In den Zeichnungen bezeichnen die gleichen Bezugszeichen äquivalente Merkmale.
-
1 zeigt einen Pseudozufallszahlengenerator, der mehrere nichtlinear rückgekoppelte Schieberegister („nonlinear feedback shift register“, NLFSR) umfasst;
-
2 zeigt ein beispielhaftes Benutzungsfallszenario, das vier NLFSR umfasst;
-
3 zeigt einen beispielhaften Zufallsgenerator, der drei Schieberegister umfasst, wobei jedes Schieberegister ein NLFSR ist.
-
AUSFÜHRLICHE BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSFORMEN
-
Zufallszahlen werden von verschiedenen Anwendungen benötigt. Zum Beispiel kann ein Mikrocontroller, ein Prozessor oder irgendeine Verarbeitungsvorrichtung solche Zufallszahlen brauchen. Eine Anwendung kann im Verbergen und/oder Randomisieren von Daten in einem Sicherheitsszenario liegen.
-
Es ist anzumerken, dass sich „zufällig“ auf ein „echtes“ Zufallsereignis oder ein „Pseudo-“Zufallsereignis beziehen kann. Zum Beispiel kann ein Zufallsgenerator echte Zufallszahlen oder Pseudozufallszahlen produzieren. Je nach Benutzungsfallszenario können Zufallszahlen echte Zufallszahlen oder Pseudozufallszahlen sein. In dieser Beschreibung bezieht sich der Begriff „Zufallszahl“ entweder auf eine echte Zufallszahl oder eine Pseudozufallszahl.
-
Gemäß einem Beispiel kann eine Smartcard vier Zufallsbytes (oder Pseudozufallsbytes, s. o.) mit jedem Taktzyklus benötigen. Die Smartcard kann diese Zufallsbytes für verschiedene Anwendungen verwenden. Hierin dargestellte Beispiele beziehen sich auf einen Generator (Zufallszahlengenerator, Zufallsgenerator), der das effiziente Produzieren von Zufallsbytes ermöglicht, insbesondere mit weniger Hardware, was zu einer reduzierten Fläche auf einem Chip führt.
-
Um vier Zufallsbytes (d.h. 32 Zufallsbits) pro Taktzyklus zu produzieren, würden 32 parallele Schieberegister benötigt werden, was eine beträchtliche Menge an Chipfläche ergibt. Insbesondere zeigen dargestellte Beispiele, wie so eine große Chipfläche reduziert werden kann, was auch zu einer wirtschaftlichen Implementierung des Generators führt.
-
Hierin dargestellte Beispiele stellen insbesondere einen effizienten Generator bereit, der eine vordefinierte Anzahl an Zufallsbits (oder Zufallsbytes) pro Taktzyklus produziert. Der Generator kann z.B. ein Pseudozufallszahlengenerator („pseudo-random number generator“, PRNG) sein.
-
Die Zufallsbits können statistisch unabhängig voneinander sein, d.h. ein einzelner Zufallsbit deutet nicht auf irgendeinen anderen Zufallsbit bzw. stellt keinerlei Informationen darüber bereit.
-
Es ist anzumerken, dass irgendeine Zufallseinheit, die nicht ein Zufallsbit ist, verwendet werden kann. Jede Zufallseinheit kann k Bits umfassen, wobei k ≥ 2 ist. Wenn die Zufallseinheit ein Byte ist, ist k = 8.
-
Der Generator kann eine Anzahl an r rückgekoppelte Schieberegister umfassen, insbesondere eine Anzahl an r nichtlinear rückgekoppelten Schieberegistern („nonlinear feedback shift register“, NLFSR). Jeder NLFSR stellt gleichzeitig mehrere angrenzende Zellen (d.h. Bits) bereit. Anders ausgedrückt, produziert jeder NLFSR pro Taktsignal einen Ausgabevektor anstatt nur ein Ausgabebit.
-
Eine Transformation T (die entweder eine bijektive Funktion oder eine Kompressionsfunktion umfasst) wird auf einen Ausgabevektor u eines NLFSR angewandt, wodurch sich ein Vektor v wie folgt ergibt: v = T(u)
-
Die Transformation T stellt eine Datenkompression bereit, wenn der sich ergebende Vektor v kürzer als der Ausgabevektor u ist.
-
1 zeigt einen Pseudozufallszahlengenerator, der r NLFSR 101, 102, 103 umfasst.
-
Das NLFSR 101 produziert einen Ausgabevektor u1, der von einer Transformation T1 in einen Vektor v1 verarbeitet wird. Das NLFSR 102 produziert einen Ausgabevektor u2, der von einer Transformation T2 in einen Vektor v2 verarbeitet wird. Das NLFSR 103 produziert einen Ausgabevektor ur, der von einer Transformation Tr in einen Vektor vr verarbeitet wird.
-
Jede Transformation Ti (mit i = 1, ..., r) ergibt einen neuen Vektor vi. Die Vektoren vi werden konkateniert (d.h. verknüpft), wodurch sich ein Vektor v wie folgt ergibt: v = (v1|v2|...|vr)
-
Dieser Vektor v wird von einer zusätzlichen Transformation S (eine S-Box) verarbeitet, um einen Ausgabevektor w zu erhalten. Der Ausgabevektor w kann die gleiche Länge wie der Vektor v aufweisen oder er kann kürzer als der Vektor v sein. Im letzteren Szenario führt die Transformation S eine Datenkompression durch, d.h., die Transformation S umfasst eine Kompressionsfunktion.
-
Im Beispiel, das in 1 gezeigt wird, kann der Ausgabevektor w in Teile (z.B. Bits, Bytes, Wörter) wi unterteilt werden, mit i = 1, ..., t.
-
2 zeigt ein beispielhaftes Benutzungsfallszenario, das r = 4 NLFSR 201 bis 204 umfasst. Der NLFSR 201 hat eine Länge von 29 Bit, der NLFSR 202 hat eine Länge von 31 Bit, der NLFSR 203 hat eine Länge von 33 Bit und der NLFSR 204 hat eine Länge von 35 Bit. Daher umfassen die NLFSR 201 bis 204 128 Zellen (Flipflops); anders ausgedrückt hat der interne Zustand des PRNG, der in 2 gezeigt ist, eine Größe von 128 Bit.
-
Der PRNG kann initialisiert werden, indem ein Zufallsstartwert auf dessen 128 Zellen übertragen wird. Der Zufallsstartwert kann von einem echten Zufallsgenerator oder irgendeiner anderen echten Zufallsquelle oder Pseudozufallsquelle erhalten werden.
-
Die NLFSR 201 und 202 geben jeweils ihre ersten 14 Zellen aus, wodurch sich Ausgabevektoren u1 und u2, jeweils mit einer Größe von 14 Bit, ergeben. Die NLFSR 203 und 204 geben jeweils ihre ersten 16 Zellen aus, wodurch sich Ausgabevektoren u3 und u4, jeweils mit einer Größe von 16 Bit, ergeben. Es ist anzumerken, dass die Formulierung „ein Vektor a mit einer Größe von n Bit“ den Ausdrücken „ein Vektor a der Länge n“ bzw. „ein Vektor a mit einer Bitlänge von n“ entspricht.
-
Für jedes NLFSR wird eine Transformation Ti durchgeführt, die einen Vektor vi gemäß vi = Tiui, mit i = 1, ..., 4, ergibt. Alle Transformationen Ti, die in 2 gezeigt sind, umfassen Kompressionsfunktionen.
-
Im Beispiel, das in 2 gezeigt ist, komprimiert jede Transformation T1, T2 die 14-Bit Eingabevektoren in 10-Bit-Ausgabevektoren v1, v2 und jede Transformation T3, T4 komprimiert die 16-Bit Eingabevektoren in 12-Bit-Ausgabevektoren v3, v4. Der Vektor v wird gebildet, indem die Vektoren v1, v2, v3 und v4 konkateniert werden; daher ergibt sich eine Länge des Vektors v von 44 Bit.
-
Die Ausgabe der Transformation Ti wird an eine Transformation S geliefert, wobei die Transformation S einen 40-Bit(5 Byte)-Ausgabevektor w ergibt. Daher ist r gleich 4 und t gleich 5 in diesem Beispiel.
-
Daher stellt der Zufallsgenerator, der in 2 gezeigt ist, 5 Byte bereit, die von den verschiedenen Anwendungen eines Chips verwendet werden können.
-
Die hierin beschriebenen Beispiele können t Zufallswörter w1, w2, ..., wt bereitstellen, die bevorzugt
- – gleichmäßig verteilt und
- – statistisch unabhängig sind.
-
Daher kann ein Zufallswort w der Länge k irgendeinen von dessen 2k möglichen Werten aufnehmen, jeweils mit der gleichen Wahrscheinlichkeit p = 2–k.
-
Die verschiedenen Wörter nehmen deren jeweilige Werte unabhängig voneinander auf. Daher ermöglicht ein Wissen über einen Wert eines einzelnen Worts nicht eine Vorhersage mit Bezug auf einen Wert von irgendeinem anderen Wort.
-
Die Zufallswörter w1, w2, ..., wt können im Wesentlichen gleichmäßig verteilt und statistisch voneinander unabhängig sein, wenn das Folgende zutrifft:
- (1) Jedes der zugrunde liegenden NLFSR hat eine Periode, die sich zu 2N – j ergibt, wobei N die Länge des Schieberegisters und j ≥ 1 eine kleine Zahl ist. In so einem Szenario hat das NLFSR fast die maximale Zykluslänge 2N, d.h. der Ausgangszustand des NLFSRs wird sich nur nach 2N – j Taktzyklen wiederholen. Dazwischen wird es 2N – j verschiedene Zustände geben; d.h. es werden fast alle der 2N verschiedenen möglichen Zustände des Schieberegisters auftreten (da j bevorzugt eine kleine Zahl sein kann). Daher ist der Vektor ui, der vom Schieberegister i ausgegeben wird, (im Wesentlichen) gleichmäßig verteilt. Über einen langen Zeitraum kann jeder Wert des Vektors ui fast gleich oft vorkommen.
- (2) Die Transformationen Ti (mit i = 1, ..., r) und S können ein Merkmal aufweisen, das als „ausgeglichen“ bezeichnet werden kann: für jeden möglichen Ausgabevektor gibt es die gleiche Anzahl an Eingabevektoren, die auf dem jeweiligen Ausgabevektor abgebildet werden. Das bedeutet Folgendes: Wenn die Eingabevektoren gleichmäßig verteilt sind, sind die Ausgabevektoren auch gleichmäßig verteilt.
Die Transformation T1 (siehe 2) wandelt den 14-Bit-Eingabevektor u1 in den 10-Bit-Ausgabevektor v1 um. Es gibt 214 verschiedene Eingabevektoren und 210 verschiedene Ausgabevektor. Die Transformation T1 ist ausgeglichen, wenn Folgendes für jede Ausgabe gilt: Es gibt 24 = 16 verschiedene Eingabevektoren die auf einem Ausgabevektor abgebildet werden.
-
Gemäß einem Beispiel kann der PRNG Schieberegister (z.B. NLFSR) und mindestens eine Transformation (Ti, S) umfassen, sodass die generierten Zufallszahlen insbesondere gleichmäßig verteilt und/oder statistisch unabhängig sind.
-
Um eine wirtschaftliche Implementierung zu ermöglichen, können die Transformationen als lineare Funktionen realisiert werden. Dies ist akzeptabel, da die zugrunde liegenden Schieberegister schon nichtlinear sind. Durch die Verwendung von linearen Funktionen als Transformationen Ti und S ergeben sich die Vorteile von guten Diffusionseigenschaften und der möglichen wirtschaftlichen Realisierung der Funktionen in Hardware.
-
Eine lineare Abbildung, die einen binären n-Bit-Vektor in einen binären m-Bit-Vektor (m ≤ n) transformiert, kann mittels einer binären m×n-Matrix A realisiert werden. Diese lineare Abbildung ist ausgeglichen, wenn (und nur wenn) die Matrix A einen maximalen Rang aufweist, d.h. wenn in diesem Fall rang(A) = m gilt.
-
Für die linearen Funktionen ist es eine Gestaltungsmöglichkeit, dass die assoziierten Matrizen den maximalen Rang aufweisen.
-
3 zeigt einen beispielhaften Zufallsgenerator, der drei Schieberegister 301 bis 303 umfasst, wobei jedes Schieberegister ein NLFSR ist.
-
Das Schieberegister 301 hat eine Länge von 17 Bit und produziert einen Ausgabevektor u1 mit einer Größe von 8 Bit. Der Ausgabevektor u1 wird einer (linearen) Transformation T1 zugeführt, die einen Vektor v1 mit einer Größe von 5 Bit produziert.
-
Das Schieberegister 302 hat eine Länge von 19 Bit und produziert einen Ausgabevektor u2 mit einer Größe von 9 Bit. Der Ausgabevektor u2 wird einer (linearen) Transformation T2 zugeführt, die einen Vektor v2 mit einer Größe von 5 Bit produziert.
-
Das Schieberegister 303 hat eine Länge von 21 Bit und produziert einen Ausgabevektor u3 mit einer Größe von 10 Bit. Der Ausgabevektor u3 wird einer (linearen) Transformation T3 zugeführt, die einen Vektor v3 mit einer Größe von 6 Bit produziert.
-
Ein Vektor v der Länge 16 wird gebildet, indem die Vektoren v1, v2, v3 konkateniert werden. Der Vektor v wird von einer (linearen) Transformation S in einen 16-Bit-Ausgabevektor w verarbeitet. Der Vektor w stellt zwei Bytes 304, 305 für die weitere Verarbeitung bereit. Daher produziert der Generator nach 3 zwei statistisch unabhängige Bytes pro Taktzyklus.
-
Am Anfang können die drei Schieberegister 301 bis 303 in irgendeinem Zustand ungleich null gestartet werden. Das Schieberegister 301 hat die Periode von 217 – 1 für alle initialen Zustände ungleich null. Demgemäß hat das Schieberegister 302 die Periode von 219 – 1 für alle initialen Zustände ungleich null und das Schieberegister 303 die Periode von 221 – 1 für alle initialen Zustände ungleich null.
-
Die linearen Transformationen sind wie folgt:
-
Die lineare Transformation S kann wie folgt definiert werden:
-
Die Ränge der verwendeten Matrizen werden durch Folgendes gegeben:
rang(T1) = 5
rang(T2) = 5
rang(T3) = 6
rang(S) = 16
-
Die hierin vorgeschlagenen Beispiele können insbesondere einer der folgenden Lösungen zugrunde liegen. Insbesondere können Kombinationen der folgenden Merkmale verwendet werden, um ein erwünschtes Resultat zu erzielen. Die Merkmale des Verfahrens können mit irgendeinem Merkmal bzw. irgendwelchen Merkmalen der Vorrichtung, der Einrichtung oder des Systems kombiniert werden, oder umgekehrt.
-
Es wird eine Vorrichtung zum Generieren einer Zufallszahl bereitgestellt, wobei die Vorrichtung Folgendes umfasst:
- – mindestens zwei Schieberegister,
- – eine Transformationsfunktion, die die Zufallszahl auf der Grundlage von mindestens einer Zelle von jedem der mindestens zwei Schieberegister generiert.
-
Jedes Schieberegister kann mehrere Zellen umfassen. Das Schieberegister kann ein zyklisches Schieberegister, insbesondere ein rückgekoppeltes Schieberegister sein. Das Schieberegister kann ein nichtlinear rückgekoppeltes Schieberegister sein.
-
Die Transformationsfunktion kann nur einen Anteil der Zellen (bzw. alle Zellen) des Schieberegisters als Grundlage zum Generieren der Zufallszahl verwenden.
-
In diesem Zusammenhang kann eine Zufallszahl irgendeine echte Zufallszahl oder Pseudozufallszahl sein, die z.B. insbesondere mehrere Bits, Bytes oder Wörter umfassen kann. Vorteilhafterweise ermöglicht die dargestellte Lösung ein Generieren der Zufallszahl für jeden Taktzyklus.
-
Die mindestens zwei Schieberegister können mittels eines echten Zufallsstartwerts oder eines Pseudozufallsstartwerts initialisiert werden, zum Beispiel mittels einer Zufallszahl, die durch Hardware und/oder Software bereitgestellt werden kann.
-
In einer Ausführungsform umfasst die Transformationsfunktion
- – eine erste Transformationsstufe für jedes Schieberegister, die die mindestens eine Zelle des jeweiligen Schieberegisters auf mindestens einer Zwischenausgabe abbildet, wobei die Zwischenausgaben der mindestens zwei Schieberegister kombiniert werden,
- – eine zweite Transformationsstufe, die die kombinierten Zwischenausgaben auf der Zufallszahl abbildet.
-
Die mehreren zwischen Ausgaben der mindestens zwei Schieberegister können konkateniert und von der zweiten Transformationsstufe verarbeitet werden. Jede Transformationsstufe kann eine Abbildungsregel umfassen, um, verglichen mit der Anzahl an Bits, die in die Transformationsstufe eingegeben werden, die gleiche Anzahl an Bits oder eine reduzierte Anzahl an Bits bereitzustellen.
-
In einer Ausführungsform führt die erste Transformationsstufe eine Datenkompression durch, wobei die Datenkompression, verglichen mit ihrer Anzahl an Eingabezellen, eine reduzierte Anzahl an Zwischenausgabebits ergibt.
-
In einer Ausführungsform ist die zweite Transformationsstufe dazu angeordnet, eine Datenkompression durchzuführen, wobei die Datenkompression, verglichen mit der Anzahl an eingegebenen Bits als Zwischenausgaben der ersten Transformationsstufe, eine reduzierte Anzahl an Bits der Zufallszahl ergibt.
-
Es ist jedoch möglich, dass die erste und/oder die zweite Transformationsstufe keine Datenkompression bereitstellt.
-
In einer Ausführungsform umfasst die erste Transformationsstufe oder die zweite Transformationsstufe lineare Funktionen.
-
In einer Ausführungsform umfassen die erste Transformationsstufe und die zweite Transformationsstufe lineare Funktionen.
-
In einer Ausführungsform sind mehrere generierte Zufallszahlen im Wesentlichen gleichmäßig verteilt und im Wesentlichen statistisch unabhängig.
-
In einer Ausführungsform wird die Zufallszahl mit jedem Taktzyklus, der am Schieberegister und an der Transformationsfunktion angelegt wird, generiert.
-
In einer Ausführungsform weist jedes der mindestens zwei Schieberegister eine Periode auf, die sich zu 2N – j ergibt, wobei N die Länge des Schieberegisters und j eine kleine Zahl ist.
-
Die kleine Zahl j kann 1, 2 oder 3 sein und ist bevorzugt klein verglichen mit der Anzahl 2N an möglichen Zuständen des Schieberegisters.
-
In einer Ausführungsform ist die Transformationsfunktion derart angeordnet, dass es für jeden möglichen Ausgabevektor eine gleiche Anzahl an Eingabevektoren, die auf dem jeweiligen Ausgabevektor abgebildet werden, gibt.
-
In einer Ausführungsform ist jedes Schieberegister ein nichtlinear rückgekoppeltes Schieberegister.
-
In einer Ausführungsform sind die mindestens zwei Schieberegister und die Transformationsfunktion auf einem Die oder Chip implementiert.
-
In einer Ausführungsform weisen die mindestens zwei Schieberegister mindestens zum Teil eine unterschiedliche Länge auf.
-
In einer Ausführungsform generiert die Transformationsfunktion die Zufallszahl auf der Grundlage eines Anteils der Zellen der mindestens zwei Schieberegister, wobei eine verschiedene Anzahl an Zellen oder die gleiche Anzahl an Zellen für die mindestens zwei Schieberegister verwendet wird.
-
Es wird auch ein Verfahren zum Generieren einer Zufallszahl vorgeschlagen, wobei das Verfahren Folgendes umfasst:
- – Generieren der Zufallszahl auf der Grundlage von mindestens einer Zelle von jedem der mindestens zwei Schieberegister mittels einer Transformationsfunktion.
-
In einer Ausführungsform umfasst die Transformationsfunktion
- – eine erste Transformationsstufe für jedes Schieberegister, die die mindestens eine Zelle des jeweiligen Schieberegisters auf mindestens einer Zwischenausgabe abbildet, wobei die Zwischenausgaben der mindestens zwei Schieberegister kombiniert werden,
- – eine zweite Transformationsstufe, die die kombinierten Zwischenausgaben auf der Zufallszahl abbildet.
-
Ferner wird eine Vorrichtung zum Generieren einer Zufallszahl vorgeschlagen, wobei die Vorrichtung Folgendes umfasst:
- – Mittel zum Generieren der Zufallszahl auf der Grundlage von mindestens einer Zelle von jedem der mindestens zwei Schieberegister mittels einer Transformationsfunktion.
-
Es wird ein Computerprogrammprodukt bereitgestellt, das direkt in einen Speicher einer digitalen Verarbeitungsvorrichtung ladbar ist, umfassend Softwarecodeanteile zum Durchführen der Schritte des Verfahrens, wie es hierin beschrieben ist.
-
In einem oder mehreren Beispielen können die hier beschriebenen Funktionen wenigstens teilweise in Hardware implementiert werden, wie spezifischen Hardware-Komponenten oder einem Prozessor. Allgemeiner können die Techniken in Hardware, Prozessoren, Software, Firmware oder einer beliebigen Kombination davon implementiert werden. Bei der Implementierung in Software können die Funktionen als eine oder mehrere Instruktionen oder Code auf einem computerlesbaren Medium gespeichert oder über dieses übertragen werden und durch eine Hardware-basierte Verarbeitungseinheit ausgeführt werden. Computerlesbare Medien können computerlesbare Speichermedien umfassen, die einem greifbaren Medium entsprechen, wie Datenspeichermedien oder Kommunikationsmedien, die ein beliebiges Medium umfassen, das den Transfer eines Computerprogramms von einem Ort zu einem anderen erleichtert, z.B. gemäß einem Kommunikationsprotokoll. Auf diese Weise können computerlesbare Medien allgemein entsprechen: (1) greifbaren computerlesbaren Speichermedien, die nicht-transitorisch sind oder (2) einem Kommunikationsmedium, wie einem Signal oder einer Trägerwelle. Datenspeichermedien können beliebige verfügbare Medien sein, auf die von einem oder mehreren Computern oder einem oder mehreren Prozessoren zugegriffen werden kann, um Instruktionen, Code und/oder Datenstrukturen zur Implementierung der in dieser Offenbarung beschriebenen Techniken abzurufen. Ein Computerprogrammprodukt kann ein computerlesbares Medium umfassen.
-
Als Beispiel und nicht als Einschränkung können solche computerlesbaren Speichermedien umfassen: RAM, ROM, EEPROM, CD-ROM oder einen anderen optischen Plattenspeicher, Magnetplattenspeicher oder andere magnetische Speichervorrichtungen, Flash-Speicher, oder ein beliebiges anderes Medium, das verwendet werden kann, um einen gewünschten Programmcode in der Form von Instruktionen oder Datenstrukturen zu speichern, und auf das von einem Computer zugegriffen werden kann. Es wird auch eine beliebige Verbindung geeignet als computerlesbares Medium bezeichnet, d.h. ein computerlesbares Transmissionsmedium. Falls beispielsweise Instruktionen von einer Website, einem Server oder einer anderen entfernten Quelle unter Verwendung eines Koaxialkabels, eines faseroptischen Kabels, eines verdrillten Paars, einer Digital Subscriber Line (DSL) oder drahtloser Technologien, wie Infrarot, Funk und Mikrowellen, gesendet werden, dann sind das Koaxialkabel, das faseroptische Kabel, das verdrillte Paar, die DSL oder drahtlose Technologien, wie Infrarot, Funk und Mikrowellen, in der Definition von Medium eingeschlossen. Es ist jedoch klar, dass die computerlesbaren Speichermedien und Datenspeichermedien Verbindungen, Trägerwellen, Signale oder andere flüchtige Medien nicht umfassen, sondern stattdessen auf nicht-flüchtige, greifbare Speichermedien gerichtet sind. Disk und Disc, wie hier verwendet, umfassen Compact Disc (CD), Laser-Disc, optische Platte, Digital Versatile Disc (DVD), Diskette und Blu-ray Disc, wobei Disks üblicherweise Daten magnetisch reproduzieren, während Discs Daten optisch mit Lasern reproduzieren. Kombinationen der Obigen sollten auch innerhalb des Umfangs computerlesbarer Medien eingeschlossen sein.
-
Instruktionen können von einem oder mehreren Prozessoren ausgeführt werden, wie von einer oder mehreren Zentraleinheiten (CPU), digitalen Signalprozessoren (DSPs), Universal-Mikroprozessoren, anwendungsspezifischen Integrationsschaltungen (ASICs), feldprogrammierbaren Logikanordnungen (FPGAs) oder anderen äquivalenten integrierten oder diskreten Logikschaltungen. Demgemäß kann sich der hier verwendete Ausdruck „Prozessor“ auf eine beliebige der obigen Strukturen oder eine beliebige andere Struktur beziehen, die zur Implementierung der hier beschriebenen Techniken geeignet ist. Zusätzlich kann in einigen Aspekten die hier beschriebene Funktionalität innerhalb dedizierter Hardware- und/oder Software-Module vorgesehen werden, die zur Codierung und Decodierung ausgelegt sind, oder in einem kombinierten Codec eingeschlossen werden. Die Techniken könnten auch in einer oder mehreren Schaltungen oder Logikelementen vollständig implementiert werden.
-
Die Techniken dieser Offenbarung können in verschiedensten Vorrichtungen oder Einrichtungen implementiert werden, die ein drahtloses Handset, eine integrierte Schaltung (IC) oder einen Satz von ICs (z.B. einen Chipsatz) umfassen. Verschiedene Komponenten, Module oder Einheiten werden in dieser Offenbarung beschrieben, um funktionelle Aspekte von Vorrichtungen hervorzuheben, die ausgelegt sind, die offenbarten Techniken durchzuführen, erfordern jedoch nicht unbedingt eine Realisierung durch verschiedene Hardware-Einheiten. Stattdessen können, wie oben beschrieben, verschiedene Einheiten in einer einzelnen Hardware-Einheit kombiniert werden oder durch eine Ansammlung interoperativer Hardware-Einheiten vorgesehen werden, die einen oder mehrere Prozessoren umfassen, wie oben beschrieben, in Verbindung mit geeigneter Software und/oder Firmware.
-
Wenngleich diverse Ausführungsbeispiele der Erfindung offenbart worden sind, wird Fachleuten auf dem Gebiet klar ersichtlich sein, dass verschiedene Änderungen und Modifikationen vorgenommen werden können, die manche Vorteile der Erfindung hervorbringen können, ohne dabei vom Geist und dem Schutzumfang der Erfindung abzuweichen. Es wird für Fachleute mit durchschnittlichen Kenntnissen auf dem Gebiet offensichtlich sein, dass andere Komponenten, die dieselben Funktionen ausüben, passenderweise ersetzt werden können. Es ist anzumerken, dass Merkmale, die unter Bezugnahme auf eine spezielle Figur erklärt wurden, mit Merkmalen aus anderen Figuren kombiniert werden können, sogar in solchen Fällen, in denen dies nicht ausdrücklich erwähnt wurde. Außerdem können die Verfahren der Erfindung entweder in allen Software-Ausführungen unter Verwendung der passenden Prozessor-Anleitungen oder in Hybrid-Ausführungen, die eine Kombination aus Hardware-Logik und Software-Logik verwenden, zum Erreichen derselben Resultate eingesetzt werden. Solche Modifikationen an dem erfinderischen Konzept sind als durch die beigefügten Patentansprüche abgedeckt anzusehen.