-
STAND DER TECHNIK
-
Gebiet
-
Die Offenbarung betrifft ein Verfahren, ein System und ein Erzeugnis für eine Schnittstelle für die Verwaltung von Datenverschiebung in einem Speichersystem mit Thin Provisioning (schlanker Speicherzuweisung).
-
Stand der Technik
-
Ein Speichersystem kann aus einer Speicher-Steuereinheit bestehen, die eine Vielzahl von physischen Speichereinheiten steuert. Die Vielzahl von physischen Speichereinheiten kann Festplatten, Solid-State-Disks, Bänder usw. enthalten. Die Speicher-Steuereinheit kann die Vielzahl von physischen Speichereinheiten in eine Vielzahl von logischen Speichereinheiten konfigurieren, die eine Vielzahl von Speicherdatenträgern umfassen.
-
In einem Speichersystem ist eine logische Einheitennummer oder LUN (Logical Unit Number) eine Nummer, die zum Kennzeichnen einer logischen Einheit verwendet wird. Eine logische Einheit ist eine logische Speichereinheit, die von einem Speicherprotokoll adressiert wird, wie beispielsweise Small Computer System Interface (SCSI), Fibre Channel, Internet Small Computer System Interface (iSCSI) usw., die in dem Speichersystem verwendet werden können.
-
Datenverschiebungsoperationen innerhalb des Speichersystems können aus einer Reihe von Gründen auftreten, einschließlich dem Verschieben einer Datei von einem Dateisystem in ein anderes, dem Defragmentieren eines Dateisystems, dem Ausrichten von Blöcken usw. Zu Datenverschiebungsoperationen kann das Verschieben von Daten von einer logischen Quelleneinheit (LUN) in eine Ziel-LUN gehören. Beim Kopieren von Daten von einer Quellen-LUN in eine Ziel-LUN müssen die Daten möglicherweise zuerst von der Quellen-LUN in den Host-Speicher kopiert werden, und dann können die Daten in das gewünschte Ziel auf der Ziel-LUN geschrieben werden, indem die Daten vom Host-Speicher in die Ziel-LUN kopiert werden.
-
Thin-Provisioning-Mechanismen können auf Speichersysteme angewendet werden. Ein Speichersystem, das Thin Provisioning verwendet, kann als Speichersystem mit Thin Provisioning bezeichnet werden. Durch Thin Provisioning wird Speicher zugeordnet (z.B. physische Plattenblöcke oder andere gleichwertige Elemente mit Speicherkapazität), wenn Anwendungsdaten tatsächlich in einen Speicherdatenträger geschrieben werden, der an einen Host angeschlossen ist. Dies ist der Unterschied zum herkömmlichen Speicherdatenträger mit Full Provisioning, bei dem die Kapazität des Speicherdatenträgers zum Zeitpunkt der Erstellung des Speicherdatenträgers vollständig zugeordnet wird. Wenn Speicherdatenträger mit Full Provisioning verwendet werden, besitzt der Host, an den der Speicherdatenträger mit Full Provisioning angeschlossen ist, über die volle Speicherkapazität, und dies nimmt im Back-End-System zusätzlichen Speicher in Anspruch.
-
Ein Speicherdatenträger, der Thin Provisioning unterstützt, wird als ein platzsparender Speicherdatenträger bezeichnet. Zu dem Zeitpunkt, zu dem der platzsparende Speicherdatenträger erstellt wird, wird der Speicherdatenträger so erstellt, als ob die Bereitstellung der vom Benutzer angeforderten vollen Kapazität möglich sei, da aber die tatsächliche Zuordnung von Speicherplatz erst mit dem ersten Host-Schreibvorgang stattfindet, ist diese Kapazität eine virtuelle Kapazität. Alle Eingabe/Ausgabe- (E/A-) Aktivitäten, die vom Speichersystem ausgeführt werden, um bei Bedarf Speicherplatz zuzuordnen, sind für den Host vollkommen transparent.
-
Die
US 2010/0191783 A1 betrifft eine Schnittstelle zwischen einem bestehenden lokalen Dateisystem und einem Datenspeicher (z.B. einem „Einmal-Schreiben“-Speicher). Die Schnittstelle erzeugt ein „versioniertes“ Dateisystem und exportiert dieses in den Datenspeicher. Der Zustand des lokalen Dateisystems zu einem bestimmten Zeitpunkt kann mit Hilfe des versionierten Dateisystems bestimmt werden. Vorzugsweise besteht das versionierte Dateisystem aus einem Satz strukturierter Datenrepräsentationen (wie z.B. XML), die Metadaten umfassen, die mit den aktuellen Dateisystemdaten verknüpft sind. Im Betrieb erstellt die Schnittstelle strukturierte Datenrepräsentationen, die den Versionen des lokalen Dateisystems entsprechen, sowie die eigentlichen Dateisystemdaten, die diese strukturierten Datenrepräsentationen darstellen, und exportiert sie in den Datenspeicher. Ein mit der Schnittstelle verknüpfter Cache speichert kürzlich verwendete Daten und Metadaten sowie alle Schreibdaten und Metadaten, die darauf warten, in den Datenspeicher übertragen zu werden. Vor der Übertragung können eine oder mehrere Datentransformationen, wie Komprimierung, Verschlüsselung, Deduplizierung und ähnliches, auf die Daten und Metadaten angewendet werden. Der Datenspeicher umfasst jede Art von Back-End-Speichergerät, System oder Architektur. In einer Ausführungsform umfasst der Datenspeicher einen oder mehrere Anbieter von Cloud-Storage-Diensten. Je nach Bedarf wird dann eine bestimmte strukturierte Datenrepräsentation verwendet, um eine zugehörige Version des Dateisystems abzurufen. Auf diese Weise erfordert das versionierte Dateisystem nur einmaliges Schreibverhalten des Datenspeichers, um seinen vollständigen Zustand zu jedem Zeitpunkt zu erhalten. Der Cache ermöglicht eine nahezu sofortige Wiederherstellung des Dateisystems auf einer Bedarfsbasis. Wenn sich die Schnittstelle vor einem generischen Datenspeicher befindet, verwandelt die Schnittstelle diesen Datenspeicher in ein „versioniertes Dateisystem“ („VFS“). Ein Inhaltskontrollsystem (CCS) wird zur Konfiguration und Verwaltung der Schnittstelle verwendet.
-
Die
US 5,835,954 A betrifft unterbrechungsfreie Datenmigrationen, die von einem Quell-DASD (Direct Access Storage Device) zum Ziel-DASD in einem Daten-Subsystem durchgeführt werden. Sowohl Quell- als auch Ziel-DASDs bestehen aus einem Cache und einem nichtflüchtigen Speicher (NVS). In Bezug auf den Host arbeitet das Ziel-DASD im Allgemeinen als Quelle und verwaltet Anfragen für den Zugriff auf die Quell-DASD-Daten durch die Ausgabe von E/A-Anforderungen an das Quell-DASD. Zuerst initiiert der Ziel-DASD einen Hintergrund-Datentransfer, bei dem die Daten vom Quell-DASD auf den Ziel-DASD kopiert werden, wobei der Ziel-DASD darauf vorbereitet wird, den Quell-DASD zu ersetzen. Der Datentransfer beinhaltet das Kopieren von Datenelementen direkt vom Cache des Quell-DASD in den Cache des Ziel-DASD sowie das Kopieren von Datenelementen vom NVS des Quell-DASD in den NVS des Ziel-DASD. Während des Datentransfers im Hintergrund kann der Host immer noch Datenzugriffsoperationen, wie z.B. Lesen und Schreiben, mit dem Ziel-DASD durchführen. Für Daten, die bereits vom Quell-DASD auf den Ziel-DASD kopiert wurden, liest der Host diese Daten vom Ziel-DASD. Host-Anforderungen zum Lesen von Daten, die noch nicht auf den Quell-DASD kopiert wurden, führen zu einem Staging der Daten vom Quell-DASD auf den Ziel-DASD. Bei Host-Schreibanforderungen müssen die Daten in den Ziel-DASD geschrieben werden, wenn keine Quelldaten zum Abschluss des Schreibvorgangs benötigt werden. Um Host-Schreibanforderungen zu erfüllen, die Daten erfordern, die noch nicht vom Quell-DASD kopiert wurden, werden die Daten vom Quell-DASD auf den Ziel-DASD kopiert.
-
Die
US 7,685,399 B2 betrifft ein Verfahren zum Verschieben der Daten zwischen den Speicheradressen in einem Computersystem, bei dem Daten, die durch Speicheradressen referenziert werden, im physischen Speicher gespeichert werden. Das Verfahren umfasst das Bereitstellen eines Übersetzungsmechanismus zum Abbilden jeweiliger Seiten von aneinandergrenzenden Speicheradressen auf entsprechende Stellen im physikalischen Speicher gemäß einer spezifizierten Abbildung, wobei eine erste Seite von Speicheradressen auf eine erste Stelle im physikalischen Speicher und eine zweite Seite von Speicheradressen auf eine zweite Stelle im physikalischen Speicher abgebildet wird; und Ändern der spezifizierten Abbildung des Übersetzungsmechanismus auf eine neue Abbildung, bei der die zweite Seite von Speicheradressen auf die erste Stelle im physischen Speicher abgebildet wird, wodurch die an der ersten Stelle gespeicherten Daten effektiv von der ersten Seite von Speicheradressen auf die zweite Seite von Speicheradressen verschoben werden, ohne die Daten zwischen Stellen im physischen Speicher zu verschieben.
-
Die
US 7,904,681 B1 betrifft ein Verfahren und ein System, die eine Datenmigration von einem logischen Quell-Datenvolumen zu einem logischen Ziel-Datenvolumen in der Signalkommunikation mit dem logischen Quell-Datenvolumen mit minimaler Unterbrechung der Zugänglichkeit dieser Daten ermöglichen. Die Kohärenz der Daten auf dem logischen Quell--Datenvolumen und dem logischen Ziel-Datenvolumen wird bestätigt. Eine Zuordnung einer ersten Pseudoname wird zu einem Identifikator des logischen Quell--Datenvolumens und eine Zuordnung einer zweiten Pseudoname zu einem Identifikator des logischen Ziel Quell--Informationen, die spezifisch für den von ihm identifizierten Logical-Volume sind. Der erste Pseudoname wird dann dem Ziel-Logical-Volume-Bezeichner zugeordnet.
-
Die
US 2009/0125680 A1 betrifft Zuordnungsinformationen, die angeben, welche physikalischen Bereiche welchen virtuellen Bereichen für ein virtuelles Volumen, dessen Kapazität dynamisch erweitert wird, zugeordnet wurden. Die
US 2009/0125680 A1 betrifft ferner Informationen zur Verwaltung physikalischer Bereiche, die angeben, welche physikalischen Bereiche welchen virtuellen Bereichen zugeordnet wurden. Die Verwaltungsinformationen für physikalische Bereiche werden referenziert, um festzustellen, ob ein physikalischer Bereich mit geringer Zuverlässigkeit, d.h. ein physikalischer Bereich, dessen Zuverlässigkeit durch das Auftreten eines Fehlers in einem bestimmten physischen Speichergerät verringert wurde und der zu einer RAID-Gruppe gehört, die dieses bestimmte physische Speichergerät umfasst, einem virtuellen Bereich zugewiesen wurde oder nicht. Ein Datenwiederherstellungsprozess wird nicht für einen physikalischen Bereich mit geringer Zuverlässigkeit durchgeführt, der nicht einem virtuellen Bereich zugeordnet wurde, sondern ein Datenwiederherstellungsprozess wird für einen physikalischen Bereich mit geringer Zuverlässigkeit durchgeführt, der einem virtuellen Bereich zugeordnet wurde.
-
KURZDARSTELLUNG DER BEVORZUGTEN AUSFÜHRUNGSFORMEN
-
Bereitgestellt werden ein Verfahren nach Anspruch 1, 2 oder 10, ein System nach Anspruch 14, 15 oder 16, ein Computerprogrammprodukt nach Anspruch 17 und ein Netzwerk nach Anspruch 18.
-
In einem Beispiel empfängt eine Datenverarbeitungseinheit eine Anforderung, einen logischen Quellenblock einer logischen Quelleneinheit mit Thin Provisioning in einen logischen Zielblock einer logischen Zieleinheit mit Thin Provisioning zu kopieren, wobei in den logischen Einheiten mit Thin Provisioning physischer Speicherplatz zugeordnet wird in Reaktion auf eine Schreiboperation, die durchgeführt wird, nicht aber während der Erstellung der logischen Einheiten mit Thin Provisioning. Die Datenverarbeitungseinheit erzeugt Metadaten, die eine Entsprechung zwischen dem logischen Quellenblock und dem logischen Zielblock speichern, wobei die Zuordnung von jeglichem physischen Speicherplatz für den logischen Zielblock in der logischen Zieleinheit mit Thin Provisioning vermieden wird.
-
Im weiteren Beispiel stellt eine Speicherverwaltungsanwendung, die in der Datenverarbeitungseinheit ausgeführt wird, eine Anwendungsprogrammierschnittstelle bereit, um physischen Speicher neu zuzuordnen, der aktuell dem logischen Quellenblock der logischen Quelleneinheit mit Thin Provisioning zugeordnet ist, der dem logischen Zielblock der logischen Zieleinheit mit Thin Provisioning zugeordnet werden soll, ohne Daten physisch aus dem logischen Quellenblock mit Thin Provisioning in die logische Einheit mit Thin Provisioning zu verschieben.
-
Im noch weiteren Beispiel stellt eine Speicherverwaltungsanwendung, die in der Datenverarbeitungseinheit ausgeführt wird, eine Anwendungsprogrammierschnittstelle bereit, um physischen Speicher zu tauschen, der aktuell dem logischen Quellenblock der logischen Quelleneinheit mit Thin Provisioning zugeordnet ist, der mit physischem Speicher getauscht werden soll, der einem logischen Zielblock der logischen Zieleinheit mit Thin Provisioning zugeordnet ist, wobei bei der Ausführung der Anwendungsprogrammierschnittstelle der Austausch atomar ausgeführt wird.
-
Im noch weiteren Beispiel wird eine Anwendungsprogrammierschnittstelle bereitgestellt, die eine virtuelle Datenverschiebung aus der logischen Quelleneinheit mit Thin Provisioning in die logische Zieleinheit mit Thin Provisioning gestattet, ohne tatsächlich irgendeine physische Verschiebung von Daten aus der logischen Quelleneinheit mit Thin Provisioning in die logische Zieleinheit mit Thin Provisioning vorzunehmen, um Merkmale von Thin-Provisioning-Systemen für die Bereitstellung von Zuordnungen zwischen virtuellen und physischen Blöcken zu nutzen.
-
Im noch weiteren Beispiel werden Daten, die im logischen Quellenblock gespeichert sind, als Reaktion auf eine Rekonfiguration der logischen Quelleneinheit mit Thin Provisioning oder der logischen Zieleinheit mit Thin Provisioning als mit Full Provisioning physisch in den logischen Zielblock kopiert.
-
Im weiteren Beispiel sind die logische Quelleneinheit mit Thin Provisioning und die logische Zieleinheit mit Thin Provisioning logische Darstellungen von Speicher, der in einer oder mehreren physischen Speichereinheiten verwaltet wird, die mit der Datenverarbeitungseinheit verbunden sind. Der logische Quellenblock ist eine logische Unterteilung der logischen Quelleneinheit mit Thin Provisioning. Der logische Zielblock ist eine logische Unterteilung der logischen Zieleinheit mit Thin Provisioning.
-
In bestimmten Ausführungsformen ist das Netzwerk so konfiguriert, dass es eine Cloud-Computing-Umgebung bereitstellt, in dem die Datenverarbeitungseinheit einen Datenverarbeitungs- und Speicherdienst bereitstellt.
-
Figurenliste
-
Im Folgenden wird auf die Zeichnungen Bezug genommen, in denen gleiche Bezugszeichen durchgängig für entsprechende Teile stehen:
- 1 veranschaulicht ein Blockschema einer Datenverarbeitungsumgebung, die eine Datenverarbeitungseinheit enthält, die gemäß bestimmten Ausführungsformen über ein Netzwerk mit einer Vielzahl von physischen Speichereinheiten verbunden ist;
- 2 veranschaulicht ein Blockschema, das eine Zuordnung von beispielhaften virtuellen Datenverschiebungsoperationen gemäß bestimmten Ausführungsformen zeigt;
- 3 veranschaulicht ein Blockschema, das beispielhafte Anwendungsprogrammierschnittstellen gemäß bestimmten Ausführungsformen zeigt;
- 4 veranschaulicht ein Blockschema, das eine Datenverschiebung über mehrere Schichten mit Hilfe mehrerer Ressourcen gemäß bestimmten Ausführungsformen zeigt;
- 5 veranschaulicht ein Blockschema, das zeigt, wie eine Datenverschiebung mit Hilfe einer Neuzuordnungs- (Remap-) Anwendungsprogrammierschnittstelle gemäß bestimmten Ausführungsformen vermieden wird;
- 6 veranschaulicht ein Ablaufdiagramm, das bestimmte Operationen gemäß bestimmten Ausführungsformen zeigt; und
- 7 veranschaulicht ein Blockschema eines Datenverarbeitungssystems, das bestimmte Elemente zeigt, die in der Datenverarbeitungseinheit von 1 gemäß bestimmten Ausführungsformen enthalten sein können.
-
AUSFÜHRLICHE BESCHREIBUNG
-
In der folgenden Beschreibung wird auf die begleitenden Zeichnungen Bezug genommen, die einen Bestandteil hiervon bilden, und die mehrere Ausführungsformen veranschaulichen. Es versteht sich von selbst, dass andere Ausführungsformen verwendet und strukturelle und funktionsfähige Änderungen vorgenommen werden dürfen.
-
Datenverschiebung in Speichersystemen
-
Wenn einige oder alle Datenverschiebungen in Speichersystemen vermieden werden, können erhebliche Leistungsverbesserungen eintreten. In Umgebungen von Unternehmensspeichersystemen können Mechanismen für die intelligente Verwaltung von Daten und die Vermeidung unnötiger Betriebskosten für Datenverschiebungen die Leistung des Speichersystems erheblich verbessern. Mit der explosionsartigen Zunahme von Daten, wie beispielsweise digitalen Fotos, digitalen Videos usw., sind zudem die Speicherleistung und Reduzierung von Speicheranforderungen zu wichtigen Faktoren bei der Auswahl eines Speicheranbieters geworden, und die Benutzer können bevorzugt Speicheranbieter wählen, die Speichersysteme bereitstellen, die unnötige Datenverschiebungen vermeiden und auch die Verschwendung von Speicherplatz vermeiden.
-
Es sollte erwähnt werden, dass, wenn die Datenreplikation in einem Rechenzentrum aktiviert ist, jeder Schreibvorgang auf die replizierten Datenträger eventuell über eine teure Netzwerkverbindung in ein fernes Speichersystem repliziert werden muss. Wenn daher die Datenverschiebung reduziert wird, führt dies auch zu Einsparungen von Bandbreite über die Datenreplikationsverbindung.
-
Bestimmte Systeme führen Kopiervorgänge aus, wie z.B. eine dateisystemübergreifende Verschiebung von Dateien usw., indem Daten aus dem Speichersystem in den Host-Speicher eingelesen und die Daten auf einen neuen Speicherplatz zurück in das Speichersystem geschrieben werden. In bestimmten Fällen kann es eine erhebliche Menge Zeit in Anspruch nehmen, diese Operationen auszuführen, und es kann wertvolle Bandbreite für das Lesen und Schreiben der Daten verschwendet werden, weil mehr Daten über die Replikationsverbindung gesendet werden müssen.
-
Virtuelle Datenverschiebung in Thin-Provisioning-Systemen
-
Bestimmte Ausführungsformen nutzen die Fähigkeit der Thin-Provisioning-Systeme, physischen Speicher zu virtuellem Adressspeicherplatz zuzuordnen, indem eine Anwendungsprogrammierschnittelle (API) bereitgestellt wird, die eine virtuelle Datenverschiebung von einer logischen Quellenblockadresse einer logischen Quelleneinheit zu einem logischen Zielblock einer logischen Zieleinheit gestattet, ohne tatsächlich irgendeine physische Verschiebung von Daten von der logischen Quelleneinheit in die logische Zieleinheit auszuführen.
-
Beispielhafte Ausführungsformen
-
1 veranschaulicht ein Blockschema einer Datenverarbeitungsumgebung 100, die eine Datenverarbeitungseinheit 102 enthält, die gemäß bestimmten Ausführungsformen über ein Netzwerk 106 mit einer Vielzahl von physischen Speichereinheiten 104a ... 104n verbunden ist.
-
Die Datenverarbeitungseinheit 102 kann jede geeignete Datenverarbeitungseinheit umfassen, einschließlich denjenigen, die auf dem Fachgebiet derzeit bekannt sind wie zum Beispiel ein Personal Computer, eine Workstation, ein Server, ein Mainframe, ein Handheld-Computer, ein Palmtop-Computer, ein Telefongerät, eine Netzwerkeinheit, ein Blade-Computer, ein Server usw. Die physischen Speichereinheiten 104a ... 104n können alle geeigneten Speichereinheiten umfassen wie zum Beispiel Festplatten, Solid-State-Disks, lineare Speichereinheiten usw. Die Datenverarbeitungseinheit 102 und die physischen Speichereinheiten 104a ... 104n können über das Netzwerk 106 Daten austauschen, wobei das Netzwerk 106 jedes geeignete Netzwerk umfassen kann wie zum Beispiel das Internet, ein Speicherbereichsnetz, ein Weitverkehrsnetz, ein lokales Netz usw. In bestimmten Ausführungsformen kann die Datenverarbeitungseinheit 102 in einer Cloud-Computing-Umgebung implementiert sein und für Benutzer Verarbeitungs- und Speicherdienste bereitstellen.
-
Die Datenverarbeitungseinheit 102 führt eine Speicherverwaltungsanwendung 108 aus, die die Vielzahl von Speichereinheiten 104a ... 104n steuert. In bestimmten Ausführungsformen kann die Speicherverwaltungsanwendung 108 oder irgendeine andere Anwendung die Vielzahl der physischen Speichereinheiten 104a ... 104n zu einer Vielzahl von logischen Einheiten mit Thin Provisioning (LUN) 112a, 112b, ..., 112m zugeordnet (Bezugszeichen 110) haben. Die logischen Einheiten mit Thin Provisioning 112a ... 112m können platzsparende Speicherdatenträger umfassen, und diese platzsparenden Speicherdatenträger sparen Speicherplatz, wenn Speicherplatz nur eventuell oder vorübergehend gebraucht wird. Ohne die Verwendung von platzsparenden Speicherdatenträgern nehmen Zielspeicherdatenträger dieselbe physische Kapazität in Anspruch wie Quellenspeicherdatenträger. Wenn ein normaler Speicherdatenträger erstellt wird, belegt er die definierte Kapazität auf den physischen Laufwerken. Ein platzsparender Speicherdatenträger belegt keine physische Kapazität bei der ursprünglichen Erstellung. Speicherplatz wird zugeordnet, wenn Daten tatsächlich auf den platzsparenden Speicherdatenträger geschrieben werden, wodurch eine Bereitstellung der Kapazität des Zielspeicherdatenträgers mit Thin Provisioning ermöglicht wird (mit anderen Worten, kleiner als mit der vollen Kapazität des Quellenspeicherdatenträgers). Daher kann ein Administrator zunächst weniger Speicherkapazität bereitstellen, was helfen kann, die Menge an physischem Speicher zu verringern, die von vielen Installationen benötigt wird.
-
Die Speicherverwaltungsanwendung 108, die in der Datenverarbeitungseinheit 102 ausgeführt wird, kann in bestimmten Ausführungsformen eine oder mehrere Anwendungsprogrammierschnittstellen (API) 114 implementieren. Die Anwendungsprogrammierschnittstellen 114 können das Verschieben von Daten von einer logischen Quelleneinheit mit Thin Provisioning in eine logische Zieleinheit mit Thin Provisioning gestatten, ohne die in einer oder mehreren physischen Speichereinheiten gespeicherten Daten physisch zu kopieren.
-
2 veranschaulicht ein Blockschema 200, das beispielhafte virtuelle Datenverschiebungsoperationen 202 gemäß bestimmten Ausführungsformen zeigt. Die in 2 veranschaulichten beispielhaften virtuellen Datenverschiebungsoperationen können durch die Speicherverwaltungsanwendung 108 erfolgen, die in der Datenverarbeitungseinheit 102 ausgeführt wird.
-
Die Speicherverwaltungsanwendung 108 kann einen Befehl 204 empfangen, einen oder mehrere logische Blöcke aus einer logischen Quelleneinheit mit Thin Provisioning 206 in eine logische Zieleinheit mit Thin Provisioning 208 zu kopieren. Die Quelleneinheit mit Thin Provisioning 206 kann eine Vielzahl von logischen Blöcken umfassen, die in logischen Blockadressen 210a, 210b, ..., 210m gespeichert sind, und der logische Zieldatenträger mit Thin Provisioning 208 kann eine Vielzahl von logischen Blöcken umfassen, die in logischen Blockadressen 212a, 212b, ..., 212n gespeichert sind. Zum Beispiel werden die logischen Blockadressen LBA-S1, LBA-S2, LBA-SM der logischen Quelleneinheit mit Thin Provisioning 206 jeweils mit den Bezugszeichen 210a, 210b, 210m angezeigt, und die logischen Blockadressen LBA-T1, LBA-T2, LBA-TN der logischen Zieleinheiten mit Thin Provisioning 208 werden jeweils mit den Bezugszeichen 212a, 212b, 212n gezeigt.
-
In bestimmten beispielhaften Ausführungsformen empfängt die Speicherverwaltungsanwendung 108 einen Befehl 204, unter LBA S2 210b gespeicherte Blöcke der logischen Quelleneinheit mit Thin Provisioning nach LBA-T1 212a der logischen Einheit mit Thin Provisioning zu kopieren. In Reaktion darauf verwendet die Speicherverwaltungsanwendung 108 die Anwendungsprogrammierschnittstelle 114, um die Metadaten 214 zu erzeugen. In den Metadaten 214 kann ein Zeiger 216 eine Entsprechung zwischen LBA-S2 der logischen Quelleneinheit mit Thin Provisioning (mit Bezugszeichen 218 gezeigt) und LBA-T1 der logischen Zieleinheit mit Thin Provisioning (mit Bezugszeichen 220 gezeigt) bereitstellen. Aus der logischen Quelleneinheit mit Thin Provisioning 206 werden keine Datenblöcke physisch in die logische Zieleinheit mit Thin Provisioning 208 kopiert. Der Zeiger 216 gibt an, dass Daten, die in LBA-T1 220 der logischen Zieleinheit mit Thin Provisioning kopiert werden sollten, (die tatsächlich aber nicht kopiert wurden), tatsächlich in LBA-S2 218 der logischen Quelleneinheit mit Thin Provisioning gespeichert sind. Wenn eine Leseanforderung für Daten empfangen wird, die nach LBA-T1 212a der logischen Zieleinheit mit Thin Provisioning 208 kopiert werden sollten, werden die Daten von der Speicherverwaltungsanwendung 108 aus LBA-S1 210a der logischen Quelleneinheit mit Thin Provisioning nach der Verarbeitung der Metadaten 214 bereitgestellt, die den Zeiger 216 enthalten.
-
3 veranschaulicht ein Blockschema 300, das beispielhafte Anwendungsprogrammierschnittstellen 302 gemäß bestimmten Ausführungsformen zeigt. Die beispielhaften Anwendungsprogrammierschnittstellen 302 können Beispiele für die in den 1 und 2 gezeigten Anwendungsprogrammierschnittstellen 114 sein.
-
In 3 sind zwei verschiedene Anwendungsprogrammierschnittstellen (API) gezeigt. Eine erste Anwendungsprogrammierschnittstelle ist die Remap-API (Neuzuordnungs-API) 304, und die zweite Anwendungsprogrammierschnittstelle ist die Swap-API (Tausch-API) 306.
-
Die Remap-API 304 gestattet, dass physischer Speicher, der aktuell einer logischen Quellenblockadresse (sourceLBA-Parameter 310) einer logischen Quelleneinheit (sourceLUN-Parameter 308) zugeordnet ist, der angegebenen logischen Zielblockadresse (targetLBA-Parameter 314) der logischen Zieleinheit (targetLUN-Parameter 312) zugeordnet wird, ohne eine Lese- oder Schreiboperation für die Daten durch die Anwendung zu verursachen. Die logische Darstellung der Remap-API 304 ist wie folgt (wobei der size-Parameter 316 die Größe des zuzuordnenden Blocks ist):
- remap(sourceLun, sourceLBA, targetLUN, targetLBA, size).
-
Die Swap-API 306 gestattet, dass physischer Speicher, der einer logischen Quellenblockadresse (sourceLBA-Parameter 320) einer logischen Quelleneinheit (sourceLUN-Parameter 318) zugewiesen ist, virtuell mit dem physischen Speicher atomar getauscht wird, der einer logischen Zielblockadresse (targetLBA-Parameter 324) einer logischen Zieleinheit (targetLUN-Parameter 322) für eine angegebene Größe (size-Parameter 326) zugewiesen ist. Die logische Darstellung der Swap-AP! 306 ist wie folgt:
- swap(sourceLun, sourceLBA, targetLUN, targetLBA, size)
-
In bestimmten Ausführungsformen können die logische Quelleneinheit und die logische Zieleinheit verschiedene logische Einheiten sein. In bestimmten anderen Ausführungsformen können die Remap- und die Swap-API für logische Blockadressen verwendet werden, die sich innerhalb derselben logischen Einheit befinden. Die logischen Quellen- und Zieleinheiten sind jedoch Teil desselben Speicher-Array.
-
In Fällen, in denen Datenreplikation auf dem zugrunde liegenden Speicher-Array konfiguriert ist, können die beispielhaften APIs 302 so angewendet werden, dass die Verschiebeoperationen ausgeführt werden können, ohne Daten über die Replikationsverknüpfung zum fernen Speicher zu verschieben, wodurch erhebliche Mengen an Replikationsbandbreite eingespart werden. Dieselbe von den APIs 302 bereitgestellte Fähigkeit kann von einem Speicher eingesetzt werden, der als protokollstrukturiertes Array konfiguriert ist.
-
Unter Verwendung der oben genannten API 302 können Anwendungen wie beispielsweise Dateisysteme physischen Speicher, der aktuell zu einer Quellen-LUN zugeordnet ist, einer Ziel-LUN neu zuordnen, wodurch bestimmte Dateisystemoperationen ohne eine tatsächliche Datenverschiebung ausgeführt werden können.
-
Eine Veranschaulichung dessen, wie die APIs 302 physische Datenverschiebungen einsparen, ist im Folgenden gezeigt:
- Das Dateisystem (F1) über LUN=LUN1 hat eine Datei /a, die sich auf LBA = LBA1 befindet und die Größe 4 K aufweist.
-
Diese Datei (Datei /a) muss in ein anderes Dateisystem (F2) verschoben werden, das über LUN=LUN2 auf demselben Platten-Array erstellt wurde.
-
F2 legt fest, dass für die zu verschiebende Datei die neue LBA = L2 ist. Dies wird auf der Grundlage der Verfügbarkeit von freien Blöcken auf F2 festgelegt.
-
Im Fall von Full Provisioning werden die Dateidaten mit der Größe 4 K von {LUN1, LBA1} [d.h. von LBA1 auf LUN1] auf {LUN2, LBA2} kopiert, wenn der Befehl „move /f1/a/f2/a“ ausgeführt wird, weil diese Verschiebeoperation eine dateisystemübergreifende Verschiebung zur Folge hat.
-
Im Fall von Thin Provisioning kann jedoch unter Verwendung der APIs 302 diese Dateiverschiebung (über zwei getrennte Dateisysteme) durch Aufrufen der Remap-API 304 wie folgt erreicht werden:
- remap(LUN1, LBA1, LUN2, LBA2, 4k).
-
Es ist anzumerken, dass eine „move“- (Verschiebe-) Operation (Verschiebung einer einzelnen Datei) intern einen oder mehrere Remap- (Neuzuordnungs-) Aufrufe verursachen kann, was von der Dateigröße und der Größe der Zuordnungseinheit der Ziel- und Quellendateisysteme abhängt. Der oben genannte API-Aufruf wird intern von dem Platten-Array mit Thin Provisioning so interpretiert, den bisher zu {LUN1, LBA1} zugeordneten physischen Speicher, der {LUN2, LBA2} zugeordnet werden soll, neu zuzuordnen, wodurch die Notwendigkeit entfällt, Daten physisch von LUN1 nach LUN2 zu kopieren.
-
(6) Das Dateisystem F2 kann jetzt auf dieselbe Datei mit reduziertem Aufwand zugreifen, indem die für den Kopiervorgang benötigte Zeit vermieden wird. Das Vorgenannte ist möglich, weil in Speicher-Arrays mit Thin Provisioning virtuelle LBAs physischem Speicher nach Bedarf zugeordnet werden, und daher ist es möglich, physischen Speicher zu einer neuen LBA bei und nach Bedarf neu zuzuordnen. Auf ähnliche Weise können die vorgenannten APIs 302 von jeder Anwendung aufgerufen werden, wenn eine Datenverschiebung über LUNs übergreifend erforderlich ist, die sich auf demselben Platten-Array befinden, die Thin Provisioning unterstützt. Die Anwendung kann ein Dateisystem oder eine Datenbank auf einem Host sein. Es ist ebenfalls anzumerken, dass die APIs 302 einschließlich der Remap-API 304 in Form eines beispielhaften SCSI-Befehls verfügbar sein können, den ein Betriebssystem oder andere Anwendungen ausführen können. In bestimmten Ausführungsformen kann der Name eines beispielhaften SCSI-Befehls REMAP lauten und alle Parameter, die in der Remap-API 304 erwähnt wurden, oder andere gleichwertige Parameter enthalten.
-
4 veranschaulicht ein Blockschema 400, das eine Datenbewegung über mehrere Schichten unter Verwendung mehrerer Ressourcen gemäß bestimmten Ausführungsformen zeigt. Wenn ein Host 402 eine Datei 404, die sich in einem Dateisystem 406 befindet, in ein anderes Dateisystem 410 kopiert und Full Provisioning 411 verwendet wird, werden die Daten in 4 innerhalb des Speicher-Array dateisystemübergreifend verschoben, d.h. kopiert, wobei Ressourcen wie Netzwerkbandbreite usw. verwendet werden, um die Datei 404 auf den Speicherplatz 408 zu kopieren.
-
In 4 ist zu sehen, dass Daten physisch von der logischen Blockadresse 413 der logischen Einheit 412 auf die logische Blockadresse 414 der logischen Einheit 416 verschoben werden. Die Datenverschiebung über mehrere Schichten unter Verwendung mehrerer Ressourcen wird durch das Bezugszeichen 418 im Speicher-Array 420 gezeigt.
-
5 veranschaulicht ein Blockschema 500, das zeigt, wie die Datenverschiebung unter Verwendung der Remap-Anwendungsprogrammierschnittstelle 304 gemäß bestimmten Ausführungsformen vermieden wird. Wenn in 5 ein Host 502 eine Anforderung verarbeitet, eine Datei 504, die sich in einem Dateisystem 506 befindet, in ein anderes Dateisystem 510 zu kopieren und Thin Provisioning 511 verwendet wird, werden die Daten nicht dateisystemübergreifend innerhalb des Speicher-Array verschoben. Stattdessen ist aus dem Blockschema 500 ersichtlich, dass durch die Verwendung der Remap-API 304 praktisch keine Datenverschiebung vorhanden ist, ausgenommen die Aktualisierung der Zeiger in den Dateisystem-Metadaten. Dies führt zu einer erheblichen Leistungsverbesserung und einer optimaleren Nutzung der Ressourcen in einem Speicherbereichsnetz .
-
In 5 ist zu sehen, dass die Daten nicht physisch von der logischen Blockadresse 513 der logischen Einheit 512 nach der logischen Blockadresse 514 der logischen Einheit 516 verschoben werden. Das Vermeiden einer Datenverschiebung über mehrere Schichten unter Verwendung mehrerer Ressourcen wird mit dem Bezugszeichen 518 im Speicher-Array 520 gezeigt. Es ist zu sehen, dass die Remap-API 304 verursacht, dass die logische Zielblockadresse 514 und die logische Quellenblockadresse 513 auf denselben physischen Speicherplatz 522 im physischen Speicher 524 zeigen.
-
6 veranschaulicht ein Ablaufdiagramm 600, das bestimmte Operationen gemäß bestimmten Ausführungsformen zeigt. Die in 6 gezeigten Operationen können von der Speicherverwaltungsanwendung 108 implementiert werden, die in der Datenverarbeitungseinheit 102 ausgeführt wird.
-
Die Steuerung beginnt bei Block 602, in dem die Speicherverwaltungsanwendung 108, die in der Datenverarbeitungseinheit 102 ausgeführt wird, eine Anwendungsprogrammierschnittstelle bereitstellt, (z.B. die in 3 gezeigte Remap-API 304), um physischen Speicher neu zuzuordnen, der aktuell einem logischen Quellenblock einer logischen Quelleneinheit mit Thin Provisioning zugeordnet ist, der einem logischen Zielblock einer logischen Zieleinheit mit Thin Provisioning zugeordnet werden soll, ohne Daten physisch von der logischen Quelleneinheit mit Thin Provisioning in die logische Zieleinheit mit Thin Provisioning zu verschieben,
-
Parallel zur Ausführung von Block 602 stellt die Speicherverwaltungsanwendung 108, die in der Datenverarbeitungseinheit 102 ausgeführt wird, (an Block 604) eine Anwendungsprogrammierschnittstelle bereit (z.B. die in 3 gezeigte Swap-API 306), um physischen Speicher zu tauschen, der aktuell einem logischen Quellenblock einer logischen Quelleneinheit mit Thin Provisioning zugewiesen ist und mit dem physischen Speicher, der einem logischen Zielblock einer logischen Zieleinheit mit Thin Provisioning zugewiesen ist, getauscht werden soll, wobei die Ausführung der Anwendungsprogrammierschnittstelle den Austausch atomar ausführt.
-
Nachdem Verstreichen einer gewissen Zeit fährt die Steuerung entweder von Block 602 oder von Block 604 aus mit Block 606 fort. An Block 606 empfängt die Datenverarbeitungseinheit 102 eine Aufforderung, einen logischen Quellenblock einer logischen Quelleneinheit mit Thin Provisioning 206 in einen logischen Zielblock einer logischen Zieleinheit mit Thin Provisioning 208 zu kopieren, wobei in logischen Einheiten mit Thin Provisioning physischer Speicherplatz in Reaktion auf eine gerade durchgeführte Schreiboperation zugeordnet wird, nicht aber während der Erstellung von logischen Einheiten mit Thin Provisioning
-
Die Datenverarbeitungseinheit 102 erzeugt (am Block 608) die Metadaten 214, die eine Entsprechung 216 zwischen dem logischen Quellenblock und dem logischen Zielblock speichern, wobei die Zuordnung von jeglichem physischem Speicherplatz für den logischen Zielblock in der logischen Zieleinheit mit Thin Provisioning vermieden wird.
-
Vom Block 608 aus kann die Steuerung parallel zum Block 610 oder Block 612 fortfahren. Am Block 610 werden die im logischen Quellenblock gespeicherten Daten als Reaktion auf eine Rekonfiguration der logischen Quelleneinheit mit Thin Provisioning oder der logischen Zieleinheit mit Thin Provisioning als mit Full Provisioning physisch in den logischen Zielblock kopiert.
-
Am Block 612 führt die Speicherverwaltungsanwendung 108 eine Leseoperation des logischen Zielblocks aus, indem sie auf den logischen Quellenblock von der Entsprechung 216 aus zugreift, die in den Metadaten 214 verwaltet wird.
-
Bestimmte in 1 bis 6 gezeigte Ausführungsformen stellen sicher, das in Thin-Provisioning-Systemen bestimmte Operationen, die ansonsten (innerhalb desselben Platten-Array) zu einer physischen Datenverschiebung von einer logischen Einheit in eine andere geführt haben könnten, durch Neuzuordnungs- und Tausch-Operationen über Zeiger ersetzt werden, wobei die physische Datenverschiebung von logischen Quellen- in logische Zieleinheiten vermieden wird.
-
In Full-Provisioning-Systemen kann jede Operation zur Datenverschiebung von einer logischen Einheit in eine andere dazu führen, dass Daten aus der Quellen-LUN in den Hostspeicher ausgelesen und danach zurück in die Ziel-LUN geschrieben werden. Dies umfasst die Nutzung von Bandbreite. Bestimmte Ausführungsformen stellen sicher, dass in Thin-Provisioning-Systemen eine Anzahl von Operationen vermieden wird, die anderenfalls zu einer Datenverschiebung mit intensiver Bandbreitennutzung geführt hätten, woraus sich eine verbesserte Ressourcen-Auslastung und eine verbesserte Leistung ergeben.
-
In Full-Provisioning-Systemen führt eine Operation zur Datenverschiebung auf einem Platten-Array dazu, dass neue Daten für einen fernen Standort repliziert werden, wenn Datenreplikation für das Platten-Array konfiguriert ist. Bestimmte Ausführungsformen sparen Netzbandbreite, indem sie sicherstellen, dass Schreiboperationen minimal gehalten werden. Eine Reduzierung der Datenverschiebung über das Netzwerk und reduzierte Lese- und Schreibvorgänge auf Platten stellen einen verringerten Energieverbrauch sicher und damit umweltfreundlichere Rechenzentren und erhebliche Kosteneinsparungen.
-
Weitere Ausführungsformdetails
-
Die beschriebenen Operationen können als ein Verfahren, eine Vorrichtung oder ein Computerprogrammprodukt unter Verwendung von standardmäßigen Programmier- und/oder Konstruktionstechniken implementiert werden, um Software, Firmware, Hardware oder irgendeine Kombination davon zu erzeugen. Dementsprechend können Aspekte der Ausführungsformen die Form einer gänzlichen Hardware-Ausführungsform, einer gänzlichen Software-Ausführungsform (darunter Firmware, residente Software, Mikrocode usw.) oder einer Ausführungsform annehmen, die Software- und Hardware-Aspekte kombiniert, auf die insgesamt hierin als „Schaltung“, „Modul“ oder „System“ Bezug genommen werden kann. Des Weiteren können Aspekte der Ausführungsformen die Form eines Computerprogrammprodukts annehmen, das in einem oder mehreren computerlesbaren Medien mit dort integriertem computerlesbarem Programmcode integriert ist.
-
Jede Kombination von einem oder mehreren computerlesbaren Medien kann verwendet werden. Das computerlesbare Medium kann ein computerlesbares Signalmedium oder ein computerlesbares Speichermedium sein. Ein computerlesbares Speichermedium kann zum Beispiel, aber nicht darauf beschränkt, ein elektronisches, magnetisches, optisches, elektromagnetisches, Infrarot- oder Halbleitersystem oder eine entsprechende Vorrichtung oder Einheit oder jede geeignete Kombination des Vorgenannten sein. Spezifischere Beispiele (nicht erschöpfende Liste) für das computerlesbare Speichermedium würden Folgendes umfassen: eine elektrische Verbindung mit einer oder mehreren Leitungen, eine tragbare Computerdiskette, eine Festplatte, einen Arbeitsspeicher (RAM), einen Nur-Lese-Speicher (ROM), einen löschbaren programmierbaren Nur-Lese-Speicher (EPROM- oder Flash-Speicher), einen Lichtwellenleiter, einen tragbaren CD-Nur-Lese-Speicher (CD-ROM), eine optische Speichereinheit, eine magnetische Speichereinheit oder jede geeignete Kombination des Vorgenannten. Im Kontext dieses Dokuments kann ein computerlesbares Speichermedium jedes materielle Medium sein, das ein Programm zur Verwendung durch oder in Verbindung mit einem System, einer Vorrichtung oder einer Einheit zum Ausführen von Befehlen enthalten oder speichern kann.
-
Ein computerlesbares Signalmedium kann ein verbreitetes Datensignal mit einem darin integrierten computerlesbaren Programmcode sein, zum Beispiel im Basisband oder als Teil einer Trägerwelle. Ein solches verbreitetes Signal kann jede von einer Reihe von Formen annehmen, darunter, aber nicht darauf beschränkt, elektromagnetisch, optisch oder jede geeignete Kombination davon. Ein computerlesbares Signalmedium kann jedes computerlesbare Medium sein, das kein computerlesbares Speichermedium ist, und das ein Programm zur Verwendung durch oder in Verbindung mit einem System, einer Vorrichtung oder einer Einheit zum Ausführen von Befehlen übertragen, verbreiten oder transportieren kann.
-
In ein computerlesbares Medium integrierter Programmcode kann unter Verwendung jedes geeigneten Mediums übertragen werden, darunter, aber nicht darauf beschränkt, drahtlos, über Festnetz, Lichtwellenleiterkabel, Funk usw. oder jede geeignete Kombination des Vorgenannten.
-
Computerprogrammcode zum Ausführen von Operationen von Aspekten der vorliegenden Erfindung kann in jeder Kombination von einer oder mehreren Programmiersprachen geschrieben sein, unter anderem einer objektorientierten Programmiersprache wie Java (Java ist eine Marke oder eingetragene Marke von Oracle und/oder dessen angeschlossenen Unternehmen.), Smalltalk, C++ oder Ähnlichem und konventionellen prozeduralen Programmiersprachen wie der Programmiersprache „C“ oder ähnlichen Programmiersprachen. Der Programmcode kann vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Software-Paket, teilweise auf dem Computer des Benutzers und teilweise auf einem fernen Computer oder vollständig auf dem fernen Computer oder Server ausgeführt werden. In letzterem Szenario kann der ferne Computer über jeden Typ von Netzwerk mit dem Computer des Benutzers verbunden sein, darunter ein lokales Netz (LAN) oder ein Weitverkehrsnetz (WAN), oder die Verbindung kann zu einem externen Computer hergestellt werden (zum Beispiel über das Internet unter Verwendung eines Internet-Diensteanbieters).
-
Aspekte der vorliegenden Erfindung werden im Folgenden unter Bezugnahme auf die Ablaufdiagrammdarstellungen und/oder Blockschemata von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es versteht sich von selbst, dass jeder Block der Ablaufdiagrammdarstellungen und/oder Blockschemata und Kombinationen von Blöcken in den Ablaufdiagrammdarstellungen und/oder Blockschemata mittels Computerprogrammanweisungen implementiert werden können. Diese Computerprogrammanweisungen können für einen Prozessor eines Mehrzweckcomputers, eines Computers für besondere Zwecke oder andere Vorrichtungen zum Verarbeiten von programmierbaren Daten zum Erzeugen einer Maschine bereitgestellt werden, so dass die Anweisungen, die über den Prozessor des Computers oder andere Vorrichtungen zum Verarbeiten von programmierbaren Daten ausgeführt werden, Mittel zum Implementieren der Funktionen/Handlungen erstellen, die in dem Block oder den Blöcken des Ablaufdiagramms und/oder des Blockschemas angegeben sind.
-
Diese Computerprogrammanweisungen können auch in einem computerlesbaren Medium gespeichert werden, das einen Computer, eine andere Vorrichtung zum Verarbeiten von programmierbaren Daten oder andere Einheiten anweisen kann, auf eine bestimmte Weise zu funktionieren, so dass die in einem computerlesbaren Medium gespeicherten Anweisungen einen Fertigungsartikel erzeugen, der Anweisungen enthält, die die im Block oder in den Blöcken des Ablaufdiagramms und/oder des Blockschemas angegebenen Funktionen/Handlungen implementieren.
-
Die Computerprogrammanweisungen können auch in einen Computer, andere Vorrichtungen zum Verarbeiten von programmierbaren Daten oder andere Einheiten geladen werden, um zu veranlassen, dass eine Reihe von Operationsschritten auf dem Computer, anderen programmierbaren Vorrichtungen oder anderen Einheiten ausgeführt wird, um einen computerimplementierten Prozess zu erzeugen, so dass die Anweisungen, die auf dem Computer oder anderen programmierbaren Vorrichtungen ausgeführt werden, Prozesse zum Implementieren der Funktionen/Handlungen bereitstellen, die in dem Block oder den Blöcken des Ablaufdiagramms und/oder des Blockschemas angegeben sind.
-
7 veranschaulicht ein Blockschema, das bestimmte Elemente zeigt, die gemäß bestimmten Ausführungsformen in der Datenverarbeitungseinheit 102 enthalten sein können. Das System 700 kann die Datenverarbeitungseinheit 102 umfassen und kann eine Schaltung 702 enthalten, die in bestimmten Ausführungsformen mindestens einen Prozessor 704 enthalten kann. Das System 700 kann auch einen Speicher 706 (z.B. eine flüchtige Speichereinheit) und einen Speicher 708 enthalten. Der Speicher 708 kann eine nichtflüchtige Speichereinheit (z.B. EEPROM, ROM, PROM, RAM, DRAM, SRAM, Flash, Firmware, programmierbare Logik usw.), ein Magnetplattenlaufwerk, ein optisches Plattenlaufwerk, ein Bandlaufwerk usw. enthalten. Der Speicher 708 kann eine interne Speichereinheit, eine angeschlossene Speichereinheit und/oder eine Netzzugriffsspeichereinheit umfassen. Das System 700 kann eine Programmlogik 710 mit dem Code 712 enthalten, der in den Speicher 706 geladen und von dem Prozessor 704 oder der Schaltung 702 ausgeführt werden kann. In bestimmten Ausführungsformen kann die Programmlogik 710 mit dem Code 712 im Speicher 708 gespeichert sein. In bestimmten anderen Ausführungsformen kann die Programmlogik 710 in der Schaltung 702 implementiert sein. Daher kann die Programmlogik 710, obwohl 7 die Programmlogik 710 getrennt von den anderen Elementen zeigt, im Speicher 706 und/oder in der Schaltung 702 implementiert sein.
-
Bestimmte Ausführungsformen können auf ein Verfahren zur Implementierung von Datenverarbeitungsanweisungen in ein Datenverarbeitungssystem durch eine Person oder einen automatischen integrierten computerlesbaren Code ausgerichtet sein, wobei der Code in Kombination mit dem Datenverarbeitungssystem fähig ist, die Operationen der beschriebenen Ausführungsformen auszuführen.