-
Hintergrund
-
Computersysteme werden von vielen verschiedenen Komponenten gebildet, die miteinander gekoppelt sind, um Verarbeitungskapazitäten, Kommunikationskapazitäten, Speicherkapazitäten usw. zu liefern. In modernen Computersystemen gibt es häufig mehrere Prozessoren, wie zum Beispiel zwei oder mehr Mehrkernprozessoren.
-
Im Verlauf von Operationen in einem Multiprozessorcomputersystem versuchen mehrere Prozessoren, auf dieselben Daten zuzugreifen. Dementsprechend kann für das System ein Kohärenzschema vorgesehen sein, um eine konsistente Sicht von Daten in dem System zu ermöglichen. Ein solcher Mechanismus, der in vielen Computersystemen verwendet wird, ist ein Sperrprotokoll (lock protocol), bei dem ein Prozessor versucht, den Betrieb der anderen Prozessoren zu blockieren, um somit zu verhindern, dass diese Prozessoren Zyklen auf zahlreichen Verbindungen ausführen, während der sperrende Prozessor eine atomare Operation an bestimmten Daten durchführt. Diese Sperroperation kann jedoch einen großen Einfluss auf die Systemleistung haben, da all die anderen Prozessoren in dem System an der Ausführung von Transaktionen gehindert werden, bis die atomare Operation abgeschlossen ist.
-
Kurze Beschreibung der Zeichnungen
-
1 zeigt ein Flussdiagramm eines Verfahrens gemäß einer Ausführungsform der vorliegenden Erfindung
-
2 zeigt ein Flussdiagramm einer gemäß einer Ausführungsform der vorliegenden Erfindung durchgeführten Signalisierung.
-
3 zeigt ein Blockdiagramm eines Prozessors gemäß einer Ausführungsform der vorliegenden Erfindung.
-
4 zeigt ein Blockdiagramm eines Systems gemäß einer Ausführungsform der vorliegenden Erfindung.
-
5 zeigt ein Blockdiagramm eines Systems gemäß einer weiteren Ausführungsform der vorliegenden Erfindung.
-
Ausführliche Beschreibung
-
Bei zahlreichen Ausführungsformen können Systemagenten Transaktionen auf einer Verbindung, wie zum Beispiel einer Punkt-zu-Punkt(point-to-point (PtP))-Verbindung, einen Bus oder einen anderen Verbindungsmechanismus, durchführen, selbst wenn ein anderer Agent einen bestimmten Speicherbereich gesperrt hat. Das heißt, solange festgestellt werden kann, dass eine von einem Agenten zu sendende Transaktion nicht mit einem Bereich in Konflikt steht, der mit einer anhängigen Sperrung verbunden ist, kann die Transaktion während der Sperrung gesendet werden. Obwohl die hier beschriebenen Ausführungsformen mit Multiprozessorsystemen in Verbindung stehen, die Prozessoren, Chipsätze, wie zum Beispiel Eingabe/Ausgabe-Hubs (input/output hubs (IOHs)), Peripheriegeräte-Steuerungs-Hubs usw. enthalten, so versteht es sich, dass der Schutzumfang der vorliegenden Erfindung diesbezüglich nicht beschränkt ist und auf andere Systeme anwendbar ist, die für gemeinsamen Zugriff auf bestimmte Daten sorgen.
-
Unter Bezugnahme auf 1, ist dort ein Flussdiagramm eines Verfahrens gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Wie in 1 gezeigt ist, kann das Verfahren 100 von einem Systemagenten, wie zum Bespiel einem Prozessor, durchgeführt werden, der versucht, Transaktionen auf einer Verbindung (interconnect), wie zum Beispiel einer PtP-Verbindung oder einem Bus, auszuführen. Obwohl der Schutzumfang der vorliegenden Erfindung diesbezüglich nicht beschränkt ist, kann in zahlreichen Ausführungsformen das Verfahren 100 durch Logik in einem Nicht-Kern-Abschnitt eines Mehrkernprozessors durchgeführt werden. Es versteht sich jedoch, dass das Verfahren von 1 von einer anderen Logik in verschiedenen Ausführungsformen durchgeführt werden kann. Wie ersichtlich ist, kann das Verfahren 100 mit Empfangen einer Sperrnachricht für eine erste Adresse von einem Stilllegungs-Master (quiesce master) (Block 110) beginnen. Dieser Stilllegungs-Master kann in einer Ausführungsform ein E/A-Hub sein. Wie weiter unten erläutert wird, kann diese Sperrnachricht eine Stoppanforderung-Nachricht sein und ferner die erste Adresse enthalten oder dieser die erste Adresse folgen. Diese Adresse identifiziert somit einen Speicherbereich. In einigen Ausführungsformen kann eine einzige Adresse vorgesehen sein, die zum Beispiel einer Cache-Zeile mit Daten, die einer Sperrung unterzogen werden sollen, entsprechen. In anderen Ausführungsformen kann jedoch diese Adresse einer bestimmten Cache-Zeile und einer nächsten Cache-Zeile (CL und CL + 1) entsprechen. In weiteren Ausführungsformen kann diese Adresse ein Speicherbereich, zum Beispiel ein seitengroßer Bereich von Speicher sein, der einer Sperrung unterzogen werden soll. Es ist zu beachten, dass diese Sperrung von einem anderen Prozessor angefordert sein kann, um zu ermöglichen, dass der Prozessor eine atomare Operation auf den an der Adresse vorhandenen oder in einem durch die Adresse repräsentierten Speicherbereich vorhandenen Daten durchführt.
-
Weiterhin auf 1 bezugnehmend, geht die Steuerung zu Block 120 über, wo ein Eintrag in einen Verfolgungspuffer des Prozessors für die erste Adresse geschrieben werden kann. Beispielsweise kann ein Cache-Controller von Nicht-Kern-Logik des Mehrkernprozessors einen Verfolgungspuffer enthalten, der eine Vielzahl von Einträgen enthält, wobei jeder Eintrag für einen Speicherbereich des Systems dient, der zur Zeit einer Sperrung unterliegt. Zahlreiche Informationen können in diesen Einträgen gespeichert werden. Zum Beispiel kann in einer Ausführungsform jeder Eintrag die Adresse, einen gültigen Indikator, eine Identifikation des Anforderers der Sperrung usw. enthalten.
-
Wie zu sehen ist, geht die Steuerung zu Raute 130 voran, wo festgestellt werden kann, ob eine Freigabenachricht für die erste Adresse von dem Stilllegungs-Master empfangen worden ist. Diese Freigabenachricht kann somit mit einer Anzeige übereinstimmen, dass der Sperrprozessor die Sperrung dieser Adresse oder dieses Speicherbereichs deaktiviert hat.
-
Wenn ja, geht die Steuerung zu Block 140, wo der Eintrag in dem Verfolgungsspeicher für diese erste Adresse gelöscht werden kann.
-
Wenn stattdessen keine Freigabenachricht empfangen worden ist, bleibt die Sperrung für diese erste Adresse wirksam. In zahlreichen Ausführungsformen kann der Prozessor, im Gegensatz zu einem herkömmlichen Systembetrieb, obwohl eine Sperre wirksam ist, unverändert Transaktionen entlang einer Verbindung senden, solange die Transaktionen nicht mit irgendwelchen Adressen in Konflikt stehen, die einer aktuellen Sperrung unterzogen sind. Dementsprechend geht die Steuerung zu Raute 150, wo festgestellt werden kann, ob der Prozessor eine anhängige Transaktion hat, die entlang der Verbindung gesendet werden soll. Beispielsweise kann ein Verfolgungspuffer in dem Nicht-Kern zum Speichern von anhängigen Transaktionen, die entlang der Verbindung gesendet werden sollen, vorhanden sein. Wenn irgendwelche Transaktionen in diesem Puffer vorhanden sind, geht die Steuerung zu Raute 160. Dort kann ermittelt werden, ob eine Adresse der anhängigen Transaktion, die zur Übertragung von der Verbindung ausgewählt ist, mit einem Eintrag in dem Verfolgungspuffer übereinstimmt. Diese Analyse bestimmt somit, ob die Adresse dieser Transaktion mit irgendwelchen aktuellen anhängigen Sperroperationen in Konflikt geraten würde. Wenn es keinen Konflikt gibt, geht die Steuerung zu Block 180, wo die Transaktion entlang der Verbindung gesendet werden kann, da in diesem Fall die Transaktion keine gesperrte Adresse stört.
-
Ansonsten bedeutet dies, wenn die Adresse mit einem Eintrag in dem Verfolgungspuffer übereinstimmt, dass ein Konflikt auftreten würde, und dementsprechend geht die Steuerung zu Block 170, wo verhindert werden kann, dass diese Transaktion auf der Verbindung gesendet wird, während die Konfliktadresse in einem Eintrag in dem Verfolgungspuffer präsent bleibt. Man beachte, dass von beiden Blöcken 170 und 180 die Steuerung zu Raute 130 geht, wie oben erörtert. Obwohl mit dieser speziellen Implementierung in der Ausführungsform von 1 gezeigt, versteht es sich, dass der Schutzumfang der vorliegenden Erfindung in dieser Hinsicht nicht beschränkt ist.
-
Um einen Betrieb gemäß einer Ausführungsform der vorliegenden Erfindung darzustellen, wird auf 2 Bezug genommen, die ein Flussdiagramm einer gemäß einer Ausführungsform der vorliegenden Erfindung durchgeführten Signalisierung zeigt. Wie in 2 gezeigt ist, sind drei Agenten vorhanden, nämlich ein Anforderungsprozessor (PROC1), ein Peer-Prozessor (PROC2) und ein Stilllegungs-Master, der in der Ausführungsform von 2 ein E/A-Hub sein kann. Obwohl mit nur drei derartigen Agenten gezeigt, versteht sich, dass der Schutzbereich der vorliegenden Erfindung in dieser Hinsicht nicht beschränkt ist, und in vielen Ausführungsformen mehr als zwei Bearbeitungsknoten und mehr als ein Stillungs-Master vorhanden sein können. Während die Peer- und Anforderungsagenten als Prozessoren gezeigt sind, versteht es sich ferner, dass der Schutzbereich der vorliegenden Erfindung in dieser Hinsicht nicht beschränkt ist und in anderen Ausführungsformen andere Geräte, wie zum Beispiel Steuerungen, Grafikchips usw. auch Agenten sein können.
-
Wie in 2 zu sehen ist, können Operationen beginnen, wenn der Anforderer eine Verarbeitungssperranforderung (ProcLock) initiiert, die zum Stilllegungs-Master gerichtet ist. Gemeinsam mit dieser Sperranforderung wird eine Adresse für die Sperranforderung gesendet. Das heißt, statt dass einfach eine Gesamtsperre angefordert wird, die somit bewirkt, dass alle Agenten entlang deren Verbindungen deren Betrieb ruhen lassen, dient die Anforderung für eine Sperrung nur eines bestimmten Speicherbereiches, der durch die Adresse repräsentiert wird.
-
Wie man sieht, sendet der Master, in Antwort auf den Empfang dieser Anforderung in dem Stilllegungs-Master, eine Sperrnachricht an die Agenten des Systems. Wie speziell in 2 zu sehen ist, kann diese Sperrnachricht (StopReq1) (gemeinsam mit der Adresse, für die die Sperrung durchgeführt wird) zum Peer-Agenten gesendet werden, und ferner kann diese Sperrnachricht auch zum Anforderer gesendet werden. In Antwort auf den Empfang dieser Sperrnachricht kann der Peer-Agent einen Eintrag in seinen Sperrverfolgungspuffer schreiben, um anzuzeigen, dass diese Adresse einer Sperrung unterliegt. Wenn dies geschehen ist, kann der Peer-Agent eine Bestätigung zum Stilllegungs-Master zurücksenden (nämlich eine Abschlussnachricht (CmpD)). Wie ferner ersichtlich ist, kann der Anforderer auch eine Bestätigung dieser Nachricht senden.
-
Dann kann der Stilllegungs-Master eine weitere Sperrnachricht an die Agenten senden, die zum Zweck der Vermeidung von Deadlock verwendet werden kann. Es ist zu beachten, dass dieser Sperrnachricht (StopReq2) keine zugehörige Adresse folgt. Bei Bestätigung des Empfangs dieser Sperrnachricht durch die Agenten kann nun eine Sperrphase eintreten. Das heißt, dass der Anforderer seine gewünschte atomare Operation durchführen kann, da sichergestellt ist, dass keine anderen Agenten auf die Adresse zugreifen oder im Begriff sind, darauf zuzugreifen. Um die Sperrphase zu beginnen, sendet der Stilllegungs-Master eine Bestätigung an den Anforderer. Bei Empfangen dieser Bestätigung kann der Anforderer seiner atomare Operation durchführen, die in der gezeigten Ausführungsform ein atomares Lesen-Modifizieren-Schreiben sein kann, bei der Daten an der Adresse gelesen werden, die Daten von dem Anforderer modifiziert werden und die modifizierten Daten dann wieder zurück zu ihrem Ursprung geschrieben werden. Dies ist in der 2 als ein nicht kohärentes Lesen (NcRead)), gefolgt von einer Datenrückgabe (DataNc), gezeigt. Danach kann der Anforderer seine Modifikationen der Daten vornehmen und dementsprechend die Daten zurückschreiben (als ein nicht kohärentes Schreiben (NcWr)).
-
Es ist zu beachten, dass während der Sperrphase der Peer-Agent eine oder mehrere Transaktionen senden kann, solange die mit diesen Transaktionen verbundenen Adressen nicht den Adressen entsprechen, die in Einträgen seines Sperrverfolgungspuffers vorhanden sind. Solange dies der Fall ist, kann der Peer-Agent eine oder mehrere Transaktionen während dieser Sperrphase senden.
-
Wenn die modifizierten Schreibdaten von dem Stilllegungs-Master empfangen worden sind, kann er ein „Abschluss” zum Anforderer zurücksenden, was bewirkt, dass der Anforderer eine Entsperranforderungsnachricht sendet, um dadurch die Sperrphase zu beenden. Wie in 2 gezeigt ist, kann dementsprechend der Stilllegungs-Master eine Freigabenachricht an die Agenten des Systems senden. Wie in 2 gezeigt ist, kann insbesondere diese Freigabenachricht (StartReq1) gemeinsam mit oder gefolgt von der Adresse gesendet werden. Als Reaktion auf den Empfang dieser Freigabenachricht kann der Peer seinen Sperrverfolgungspuffereintrag, der mit dieser Adresse verbunden ist, löschen und eine Abschlussnachricht senden. Einer Bestätigung dieser Operation kann sich eine weitere Freigabenachricht an die Systemagenten anschließen. Obwohl mit spezieller Implementierung in der Ausführungsform der 2 gezeigt, versteht sich, dass der Schutzumfang der vorliegenden Erfindung diesbezüglich nicht beschränkt ist.
-
Nunmehr auf 3 bezugnehmend, ist dort ein Blockdiagramm eines Prozessors gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Wie in 3 gezeigt ist, kann der Prozessor 300 ein Mehrkernprozessor mit einer Vielzahl von Kernen 310 a–310 n sein. In einer Ausführungsform kann jeder Kern konfiguriert sein, um bei mehreren Spannungen und/oder Frequenzen zu arbeiten, und, wie angewiesen, in einen Turbomodus überzugehen. Die zahlreichen Kerne können über eine Verbindung 315 mit einem Systemagenten oder Nicht-Kern 320 gekoppelt sein, der zahlreiche Komponenten enthält. Wie man sieht, kann der Nicht-Kern 320 einen gemeinsamen Cache 330 enthalten, der ein Last-Level-Cache sein kann. Zusätzlich kann der Nicht-Kern einen integrierten Speicherkontroller 340, zahlreiche Schnittstellen 350 und eine Leistungsregeleinheit 355 enthalten.
-
Immer noch auf 3 bezugnehmend, enthält der Nicht-Kern ferner einen Cache-Controller 335, der Kohärenzoperationen und Verwaltung von gemeinsamen Cache 330 steuern kann. Zusätzlich kann der Cache-Controller 335 einen Sperrverfolgungspuffer 337 enthalten, der verwendet werden kann, um Einträge zu speichern, um Stellen bzw. Bereiche im Systemspeicher zu identifizieren, die anhängigen Sperrungen unterliegen. Insbesondere kann der Sperrverfolgungspuffer 337, wie oben erörtert, eine Vielzahl von Einträgen enthalten, wobei jeder davon eine Adresse speichert, die mit einer empfangenen Sperrnachricht verbunden ist, die zum Prozessor gesendet werden kann, wenn ein Stilllegungs-Master einem bestimmten Agenten eine Sperre für eine Adresse auferlegt, die einen Speicherbereich repräsentiert.
-
Der Cache-Controller 335 kann ferner eine Sperrüberwachungslogik 339 enthalten, die eintreffende Nachrichten zum Prozessor überwachen kann, um zu bestimmen, ob irgendwelche Sperrnachrichten empfangen worden sind, und falls ja, zu bewirken, dass eine Adresse, die mit der Nachricht verbunden ist, in dem Sperrverfolgungspuffer 337 gespeichert wird. Zusätzlich kann die Sperrüberwachungslogik 339 bewirken, dass ein Eintrag gelöscht wird, wenn eine bestimmte Sperre aufgehoben worden ist. Darüber hinaus kann die Sperrüberwachungslogik 339 ferner dabei helfen, ausgehende Transaktionen vom Prozessor zu verarbeiten, sodass die Logik durch Bezugnahme auf die Einträge in dem Sperrverfolgungspuffer 337 bestimmen kann, ob eine Adresse einer bestimmten Transaktion einer anhängigen Sperroperation unterliegt, und die Übertragung einer Transaktion verhindern kann, wenn ein Konflikt auftreten würde.
-
Unter weiterer Bezugnahme auf 3 kann der Prozessor 300 mit einem Systemspeicher 360, zum Beispiel über einen Speicherbus, kommunizieren. Zusätzlich kann durch Schnittstellen 350 eine Verbindung mit zahlreichen Komponenten außerhalb des Chips (offchip), wie zum Beispiel Peripheriegeräten, Massenspeicher usw., hergestellt werden. Während mit dieser speziellen Implementierung in der Ausführungsform von 3 gezeigt, ist der Schutzbereich der vorliegenden Erfindung diesbezüglich nicht beschränkt. Es ist auch zu beachten, dass der Prozessor und Speicher von 3 ein einziger Mehrkernprozessor und entsprechender lokaler Speicher eines Multiprozessorsystems mit mehreren Prozessoren und Speichern sein.
-
Ausführungsformen können in vielen verschiedenen Systemtypen enthalten sein, die mit zahleichen Systemagenten, wie zum Beispiel Prozessorsockel, Chipsätze, Speicher, unter anderem Systemagenten, die über Punkt-zu-Punkt Verbindungen oder andere seriell basierte Verbindungen gekoppelt sind, gestaltet sein können.
-
4 zeigt ein Blockdiagramm eines Systems, dass über PtP-Verbindungen miteinander gekoppelt sein kann. Wie in 4 gezeigt ist, kann das System 400 mehrere Prozessorsockel, nämlich Prozessorsockel 420a–420d (allgemein Prozessorsockel 420), enthalten. Jeder Prozessorsockel kann ein Mehrkernprozessor sein, der einen Verfolgungspuffer und Logik gemäß einer Ausführungsform der vorliegenden Erfindung enthält, um Adressen zu überwachen, die Sperren unterliegen, und Transaktionsübertragung entsprechend während Sperrphasen zu steuern.
-
Weiterhin auf 4 bezugnehmend, enthält das System 400 ferner Chipsatzkomponenten. Wie in 4 gezeigt ist, enthält das System 400 insbesondere einen ersten Hub-Agenten 445 und einen zweiten Hub-Agenten 450, von denen beide IOHs entsprechen können. Solche Hub-Agenten können verwendet werden, um das System 400 mit zahlreichen Peripheriegeräten, Netzwerken oder anderen derartigen Systemen zu koppeln.
-
Um eine Kommunikation zwischen den zahlreichen Komponenten des Systems 400 zu ermöglichen, können zahlreiche Punkt-zu-Punkt-Verbindungen vorhanden sein, um die Komponenten miteinander zu koppeln. Wie in 4 gezeigt ist, kann jeder Prozessorsockel 420 insbesondere eine Schnittstelle zu drei Verbindungen mit den anderen Prozessorsockeln enthalten. Ferner können Verbindungen zu einem der ersten und zweiten Hub-Agenten 445 und 450 ferner pro Prozessorsockel vorgesehen sein. Dementsprechend kann der erste Prozessorsockel 420a eine Schnittstelle zu Verbindungen 430, 432 und 436 zwischen sich selbst und zweiten, dritten und vierten Prozessorsockeln 420b–d bereitstellen. Der erste Prozessorsockel 420a stellt ferner eine Schnittstelle zu einer Verbindung 442 bereit, die zwischen ihm und dem ersten Hub-Agenten 445 gekoppelt ist. In ähnlicher Weise ist der zweite Prozessorsockel 420b mit dritten und vierten Prozessorsockeln 420c und 420d über Verbindungen 434 bzw. 438 gekoppelt und ferner mit dem ersten Hub-Agenten 445 über die Verbindung 444 gekoppelt. In ähnlicher Weise sind dritte und vierte Prozessorsockel 420c und 420d über eine Verbindung 435 gekoppelt, während beide Prozessorsockel mit dem zweien Hub-Agenten 450 über Verbindungen 446 bzw. 448 kommunizieren. Während mit dieser speziellen Implementierung in der Ausführungsform von 4 beschrieben, versteht es sich, dass der Schutzbereich der vorliegenden Erfindung nicht in der Form beschränkt ist.
-
Ausführungsformen können auch in anderen Systemen implementiert sein. Nunmehr auf 5 bezugnehmend, ist dort ein Blockdiagramm eines Systems gemäß einer weiteren Ausführungsform der vorliegenden Erfindung gezeigt. Wie in 5 gezeigt ist, kann ein Multiprozessorsystem 500 eine Vielzahl von Prozessoren 510 1–510 n enthalten, von denen jeder ein Mehrkernprozessor sein kann, der einen Verfolgungsspeicher und Logik gemäß einer Ausführungsform der vorliegenden Erfindung enthält, um Adressen zu überwachen, die Sperren unterliegen. Wie ersichtlich ist, kann jeder der Prozessoren mit jedem anderen Prozessor durch eine PtP-Verbindung verbunden sein. Zusätzlich kann jeder Prozessor 510 mit einem lokalen Teil bzw. Abschnitt eines Systemspeichers, nämlich lokalen Speichern 520 1–520 n, gekoppelt sein.
-
Jeder Prozessor 510 kann wiederum an einen IOH 530 gekoppelt sein, der in zahlreichen Ausführungsformen als ein Stillungs-Master agieren kann, um somit eintreffende Sperranforderungen von den verschiedenen Prozessoren zu empfangen.
-
Wenn solche Anforderungen mit einer Angabe einer Region, die gesperrt werden soll, empfangen werden, kann der IOH 530 korrespondierende Sperrnachrichten zu den Prozessoren senden, die mit der Adresse verbunden sind, um somit zu bewirken, dass diese Stellen bzw. Bereiche in einem Verfolgungspuffer der Prozessoren bleiben und überwacht werden. Auf diese Weise können die anderen Prozessoren nicht im Zusammenhang stehende Transaktionen (das heißt, nicht mit der Adresse der Sperrtransaktionen im Zusammenhang stehend) während einer Sperrphase senden, um dadurch Systemlatenz zu reduzieren. Wie ferner ersichtlich ist, kann der IOH 530 mit anderen Komponenten des Systems koppeln. In der gezeigten Ausführungsform kann der IOH 530 mit einem Peripherie-Controller-Hub 540 koppeln, der wiederum mit einem oder mehreren Peripheriegeräten 550 koppeln kann. Obwohl auf dieser hohen Ebene in der Ausführungsform von 5 gezeigt, versteht es sich, dass der Schutzbereich der vorliegenden Erfindung diesbezüglich nicht beschränkt ist.
-
Ausführungsformen können in Code implementiert und auf einem nicht flüchtigen Speichermedium mit darauf gespeicherten Anweisungen gespeichert werden, das verwendet werden kann, um ein System zu programmieren, um diese Anweisungen auszuführen. Das Speichermedium kann, ohne aber darauf beschränkt zu sein, jede Art von Disk, einschließlich Floppy-Disk, optische Platten, Festkörperlaufwerke (SSDs), Kompaktdisk Nur-Lese-Speicher (CD-ROM), Kompaktdisk Rewritables (CD-RWs) und magnetooptische Platten, Halbleitereinrichtungen, wie zum Beispiel Nur-Lese-Speicher (ROMs), Direktzugriffsspeicher (RAMs), wie zum Beispiel dynamischer Direktzugriffsspeicher (DRAMs), statische Direktzugriffsspeicher (SRAMs), löschbare programmierbare Nur-Lese-Speicher (EPROMs), Flash-Speicher, elektrisch löschbare programmierbare Nur-Lese-Speicher (EEPROMs), magnetische oder optische Karten, oder jede andere Art von Medien, die zum Speichern von elektronischen Befehlen bzw. Anweisungen geeignet sind, einschließen.
-
Während die vorliegende Erfindung unter Bezugnahme auf eine begrenzte Anzahl von Ausführungsformen beschrieben worden ist, werden Fachleute auf dem Gebiet erkennen, dass zahlreiche Modifikationen und Variationen an selbigen vorgenommen werden können. Es ist beabsichtigt, dass die beigefügten Ansprüche solche Modifikationen und Variationen, die in den wahren Geist und Schutzbereich der vorliegenden Erfindung fallen, abdecken.