-
HINTERGRUND
-
Die vorliegende Anmeldung betrifft allgemein eine verbesserte Datenverarbeitungsvorrichtung und ein verbessertes Datenverarbeitungsverfahren, und insbesondere Mechanismen zur Gewährleistung von Ressourcenaffinität für Netzadapter mit mehreren Warteschlangen durch dynamische Rekonfigurierung.
-
Mit zunehmender Geschwindigkeit der Ethernet-Medien nimmt die Notwendigkeit zu, mehr Systemressourcen zu nutzen, um die theoretische Maximalleistung bei einer niedrigstmöglichen Latenzzeit zu erreichen. Der Systemressourcenbedarf von Ethernet-Adaptern schließt aufgrund der Notwendigkeit einer großen Zahl von Sende-/Empfangsdeskriptoren und -puffern einen großen physikalischen Speicherbedarf und entsprechende Abbildungsressourcen für DMA-Ein-/ Ausgabespeicher ein. Ein 10-GBit/s-Ethernet-Treiber belegt typischerweise etwa 150 bis 300 MB physikalischen Systemspeicher und DMA-Ein-/Ausgabespeicher pro Adapter.
-
Unter traditionellen Treibermodellen weist ein Einheitentreiber Sende-/ Empfangsressourcen in einer Menge zu, die es dem Adapter erlauben würde, seine theoretisch maximale Leistung zu erreichen. Wenn die Auslastung oder der Netzverkehr aber derart ist, dass die maximalen Leistungsgrenzen nicht benötigt werden, belegt der Treiber mehr Ressourcen als erforderlich, was eine Verschwendung von Systemressourcen darstellt. Darüber hinaus hat dieses Modell nicht die Fähigkeit, veränderliche Auslastungen auf effiziente Weise zu handhaben.
-
In der
US 7548513 B2 ist eine mit einer empfangsseitigen Skalierunq (RSS) kompatible Computerumgebung offenbart, wobei die Computerumgebung die zumindest eine Wiedergewinnungswarteschlange jeder Empfangswarteschlange, die voll oder zu langsam funktionierend ist, zuweisen kann.
-
In der
US 2008 / 0 181 245 A1 sind ein System und ein Verfahren zur Mehrkernbearbeitung eines Datenverkehrs zwischen Datenverarbeitungsgeräten offenbart, wobei eine Vielzahl von Techniken beschrieben ist, die hohe Geschwindigkeit des Datenverkehrs durch Verteilung von Sendungs- und Empfangsbearbeitung über mehrere Verarbeitungskerne zu ermöglichen.
-
In der
US 2003 / 0 076 849 A1 sind eine dynamische Zuordnung einer Warteschlange und eine dynamische Aufhebung der Zuordnung der Warteschlange zum Managen eines Datenverkehrs über einen Vermittlungsknoten offenbart.
-
ÜBERBLICK
-
In einem Ausführungsbeispiel wird ein Verfahren in einem Datenverarbeitungssystem bereitgestellt, um durch dynamische Rekonfigurierung Ressourcenaffinität für Netzadapter mit mehreren Warteschlangen zu gewährleisten. Das Ausführungsbeispiel weist ein anfängliches Warteschlangenpaar in einem Speicher zu. Das Ausführungsbeispiel bestimmt, ob eine Auslastung des Datenverarbeitungssystems über einen vorbestimmten oberen Schwellenwert gestiegen ist. Wenn die Auslastung über den vorbestimmten oberen Schwellenwert gestiegen ist, weist das Ausführungsbeispiel ein zusätzliches Warteschlangenpaar im Speicher zu und initialisiert es. Das Ausführungsbeispiel programmiert einen Mechanismus zur empfangsseitigen Skalierung (RSS) in einem Netzadapter, um das dynamische Einfügen einer zusätzlichen Verarbeitungsengine zu erlauben, die dem zusätzlichen Warteschlangenpaar zugeordnet ist. Das Ausführungsbeispiel aktiviert das Hashing von Sendetupeln in das zusätzliche Warteschlangenpaar.
-
In einem anderen Ausführungsbeispiel wird ein Computerprogrammerzeugnis bereitgestellt, umfassend ein computernutzbares oder -lesbares Speichermedium mit einem computerlesbaren Programmcode. Wenn es auf einer Recheneinrichtung ausgeführt wird, veranlasst das computerlesbare Programm die Recheneinrichtung, verschiedene Einzeloperationen und Kombinationen von Operationen durchzuführen, die oben in Bezug auf das Ausführungsbeispiel des Verfahrens beschrieben wurden.
-
In einem weiteren Ausführungsbeispiel wird ein System/eine Vorrichtung bereitgestellt. Das System/die Vorrichtung kann einen oder mehrere Prozessor(en) und einen Speicher umfassen, der mit dem oder den Prozessor(en) verbunden ist. Der Speicher kann Befehle umfassen, die, wenn sie vom Prozessor oder von den Prozessoren ausgeführt werden, bewirken, dass der oder die Prozessor(en) verschiedene Einzeloperationen oder Kombinationen von Operationen durchführen, die oben in Bezug auf das Ausführungsbeispiel des Verfahrens beschrieben wurden. Diese und andere Merkmale und Vorteile der vorliegenden Erfindung werden in der folgenden detaillierten Beschreibung der beispielhaften Ausführungsformen der vorliegenden Erfindung beschrieben oder für einen Fachmann offensichtlich werden.
-
Figurenliste
-
Die Erfindung sowie ein bevorzugter Anwendungsmodus und weitere Aufgaben und Vorteile davon gehen am besten aus der folgenden detaillierten Beschreibung von Ausführungsbeispielen in Verbindung mit den beigefügten Zeichnungen hervor, wobei:
- 1 eine bildliche Darstellung eines beispielhaften verteilten Datenverarbeitungssystems zeigt, in welchem Aspekte der Ausführungsbeispiele realisiert sein können;
- 2 ein Blockdiagramm eines Datenverarbeitungssystems zeigt, mit welchem Aspekte der Ausführungsbeispiele vorteilhafterweise genutzt werden können;
- 3 ein Blockdiagramm einer beispielhaften logisch partitionierten Plattform zeigt, in welcher die Ausführungsbeispiele realisiert sein können;
- 4 eine beispielhafte Realisierung eines Mechanismus zeigt, der Ressourcenaffinität für Netzadapter mit mehreren Warteschlangen durch dynamische Rekonfigurierung nach einem Ausführungsbeispiel gewährleistet; und
- 5 ein Flussdiagramm zeigt, das beispielhafte Operationen zur Bereitstellung von Ressourcenaffinität für Netzadapter mit mehreren Warteschlangen durch dynamische Rekonfigurierung nach einem Ausführungsbeispiel beschreibt.
-
AUSFÜHRLICHE BESCHREIBUNG
-
Die Ausführungsbeispiele stellen einen Mechanismus bereit, der durch dynamische Rekonfigurierung der zugrundeliegenden Hardware Ressourcenaffinität für Active Memory Sharing (AMS) und die CPU-Nutzung gewährleistet, um den Bedürfnissen veränderlicher Auslastungen ohne Unterbrechung in der Leistung oder im Dienst zu entsprechen. Moderne Adapter können für eine maximale Leistung mehrere Paket-Warteschlangenpaare (QPs) bereitstellen. Diese Adapter können in der Lage sein, durch die Verwendung von mehreren Sende-/Empfangswarteschlangen (QPs) pro Schnittstelle eine parallele Netzdatenverarbeitung durchzuführen, was ein wesentliches Merkmal für hohe Transaktionslasten und das Erreichen höherer Übertragungsgeschwindigkeiten mit kleinen Paketgrößen ist. Der Eingangs- bzw. Empfangsverkehr kann durch den Adapter nach dem Hash-Verfahren tupelweise dem geeigneten QP und dem zugeordneten Interrupt für die Betriebssystemverarbeitung zugeführt werden. Der Ausgangs- bzw. Sendeverkehr kann durch den Betriebssystem (OS)-Treiber nach dem Hash-Verfahren tupelweise an den Adapter ausgegeben werden. Adapter und OS-Treiber weisen typischerweise mehrere QPs mit genügend Deskriptoren und Puffern zu, um eine maximale Leistung zu erreichen, normalerweise zwei bis vier QPs bei einem durchschnittlichen Speicherbedarf von etwa 250 MB pro Adapter. Jedes QP kann einen zugeordneten Empfangsinterrupt haben, weshalb ein zusätzlicher CPU-Nutzungsaufwand auftritt, der auf die erhöhte Interruptzuteilung zurückzuführen ist, wenn mehrere QPs in Gebrauch sind und der Datenverkehr so gering ist, dass er leicht von einem einzigen QP bewältigt werden könnte. Dieses Problem ist für Performance-Teams von zunehmendem Interesse, da die Analyse bekannter Adapter zeigt, dass mehrere QPs sich in den meisten normalen Anwendungsfällen negativ auf die Leistung auswirken, aber bei bestimmten Arbeitslasten mit hoher Belastung und hohem Transaktionsaufkommen zum Erreichen der theoretischen Maximalleistung wesentlich sind.
-
Daher können die Ausführungsbeispiele in vielen verschiedenen Arten von Datenverarbeitungsumgebungen einschließlich einer verteilten Datenverarbeitungsumgebung, einer einzigen Datenverarbeitungseinheit oder dergleichen verwendet werden. Um einen Kontext für die Beschreibung der spezifischen Elemente und Funktionalitäten der Ausführungsbeispiele zu geben, werden die 1 bis 3 im Folgenden als Beispielumgebungen beschrieben, in welchen Aspekte der Ausführungsbeispiele realisiert sein können. Auch wenn die Beschreibung anhand von 1 bis 3 sich hauptsächlich auf eine Realisierung eines Mechanismus für eine einzelne Datenverarbeitungseinheit konzentriert, der durch dynamische Rekonfigurierung Ressourcenaffinität für Netzadapter mit mehreren Warteschlangen gewährleistet, ist dies nur ein Beispiel und soll keine Einschränkung hinsichtlich der Merkmale der vorliegenden Erfindung ausdrücken oder implizieren. Im Gegenteil, die Ausführungsbeispiele sollen verteilte Datenverarbeitungsumgebungen und Ausführungsformen einschließen, in welchen Ressourcenaffinität für Netzadapter mit mehreren Warteschlangen durch dynamische Rekonfigurierung gewährleistet werden kann.
-
Nun auf die Zeichnungen Bezug nehmend, und insbesondere auf 1 bis 3, werden Beispieldiagramme von Datenverarbeitungsumgebungen gezeigt, in welchen Ausführungsbeispiele der vorliegenden Erfindung realisiert sein können. Es ist anzumerken, dass 1 bis 3 nur Beispiele sind und keine Einschränkungen hinsichtlich der Umgebungen ausdrücken oder implizieren sollen, in welchen Aspekte oder Ausführungsformen der vorliegenden Erfindung realisiert sein können. Viele Modifikationen können an den dargestellten Umgebungen vorgenommen werden, ohne vom Geist und Umfang der vorliegenden Erfindung abzuweichen.
-
Nun auf die Zeichnungen Bezug nehmend, zeigt 1 eine bildhafte Darstellung eines beispielhaften verteilten Datenverarbeitungssystems, in welchem Aspekte der Ausführungsbeispiele realisiert sein können. Das verteilte Datenverarbeitungssystem 100 kann ein Computernetz umfassen, in welchem Aspekte der Ausführungsbeispiele realisiert sein können. Das verteilte Datenverarbeitungssystem 100 enthält mindestens ein Netzwerk 102, welches das Medium ist, das verwendet wird, um Kommunikationsverbindungen zwischen verschiedenen Einheiten und Computern herzustellen, die im verteilten Datenverarbeitungssystem 100 miteinander verbunden sind. Das Netzwerk 102 kann Verbindungen wie drahtgebundene, drahtlose Kommunikationsverbindungen oder Lichtwellenleiter umfassen.
-
Im dargestellten Beispiel sind der Server 104 und der Server 106 zusammen mit der Speichereinheit 108 mit dem Netzwerk 102 verbunden. Zusätzlich sind auch Clients 110, 112 und 114 mit dem Netzwerk 102 verbunden. Diese Clients 110, 112 und 114 können zum Beispiel PCs, Netzcomputer oder dergleichen sein. Im dargestellten Beispiel stellt der Server 104 den Clients 110, 112 und 114 Daten wie Bootdateien, Betriebssystem-Images und Anwendungen bereit. Die Clients 110, 112 und 114 sind im dargestellten Beispiel Clients zum Server 104. Das verteilte Datenverarbeitungssystem 100 kann zusätzliche Server, Clients und sonstige Einheiten umfassen, die nicht gezeigt werden.
-
Im dargestellten Beispiel ist das verteilte Datenverarbeitungssystem 100 das Internet, wobei das Netzwerk 102 eine weltweite Sammlung von Netzwerken und Gateways darstellt, das die TCP/IP-Protokollunterstützung benutzt, um miteinander zu kommunizieren. Das Herzstück des Internets ist ein Rückgrat aus Hochgeschwindkeits-Datenübertragungsleitungen zwischen Hauptknoten oder Hostcomputern, bestehend aus Tausenden von kommerziellen, staatlichen, universitären und sonstigen Computersystemen, die Daten und Nachrichten weiterleiten. Selbstverständlich kann das verteilte Datenverarbeitungssystem 100 auch implementiert werden, um mehrere verschiedene Netzwerktypen wie z.B. ein Intranet, ein lokales Netz (LAN), ein Weitverkehrsnetz (WAN) oder dergleichen einzuschließen. Wie oben erwähnt, ist 1 als Beispiel gedacht, nicht als Beschränkung der Architektur für verschiedene Ausführungsformen der vorliegenden Erfindung, und deshalb sind die spezifischen Elemente, die in 1 gezeigt werden, hinsichtlich der Umgebungen, in welchen die Ausführungsbeispiele der vorliegenden Erfindung realisiert sein können, nicht als einschränkend zu verstehen.
-
In den Ausführungsbeispielen ist eine Computerarchitektur als eine Kombination von Hardware und Software realisiert. Der Softwareteil der Computerarchitektur kann als Mikrocode oder Millicode bezeichnet werden. Die Kombination aus Hard- und Software ergibt einen Befehlsvorrat und eine Systemarchitektur, auf welchen der Rest der Software des Computers wie z.B. das Basic Input/Output System (BIOS), Virtual-Machine-Monitore (VMM), Hypervisoren, Anwendungen usw. betrieben werden. Die Computerarchitektur, die durch die Ausgangskombination erzeugt wird, ist für die Computersoftware (BIOS usw.) unveränderlich, außer durch definierte Schnittstellen, von denen es wenige geben kann. Nun auf 2 Bezug nehmend, wird ein Blockdiagramm eines Datenverarbeitungssystems gezeigt, mit welchem Aspekte der Ausführungsbeispiele vorteilhaft genutzt werden können. Wie gezeigt, umfasst das Datenverarbeitungssystem 200 Prozessoreinheiten 211a bis 211n. Jede der Prozessoreinheiten 211a bis 211n umfasst einen Prozessor und einen Cachespeicher. Zum Beispiel enthält die Prozessoreinheit 211a einen Prozessor 212a und einen Cachespeicher 213a, und die Prozessoreinheit 211n enthält einen Prozessor 212n und einen Cachespeicher 213n.
-
Die Prozessoreinheiten 211a bis 211n sind mit dem Hauptbus 215 verbunden. Der Hauptbus 215 unterstützt die Systemplatine 220, die Prozessoreinheiten 211a bis 211n und Speicherkarten 223 enthält. Die Systemplatine 220 enthält auch einen Datenschalter 221 und einen Speichercontroller/Cache 222. Der Speichercontroller/Cache 222 unterstützt Speicherkarten 223, die lokalen Speicher 216 mit mehreren DIMM-Modulen aufweisen.
-
Der Datenschalter 221 ist mit der Busbrücke 217 und Busbrücke 218 verbunden, die auf der nativen E/A-Platine 224 liegen. Wie gezeigt, ist die Busbrücke 218 über den Systembus 219 mit PCI-Brücken 225 und 226 verbunden. Die PCI-Brücke 225 ist über den PCI-Bus 228 mit verschiedenen E/A-Geräten verbunden. Wie gezeigt, kann eine Festplatte 236 über einen SCSI-Hostadapter 230 mit dem PCI-Bus 228 verbunden sein. Ein Grafikadapter 231 kann direkt oder indirekt mit dem PCI-Bus 228 verbunden sein. Die PCI-Brücke 226 stellt über den PCI-Bus 227 durch einen Netzadapter 234 und Adapterkartensteckplätze 235a bis 235n Verbindungen für externe Datenströme bereit.
-
Ein ISA-Bus 229 ist über eine ISA-Brücke 232 mit dem PCI-Bus 228 verbunden. Die ISA-Brücke 232 stellt über einen nativen E/A-Controller 233 mit seriellen Anschlüssen Serial 1 und Serial 2 Anschlussmöglichkeiten bereit. Ein Diskettenlaufwerksanschluss, ein Tastaturanschluss und ein Mausanschluss werden vom nativen E/A-Controller 233 bereitgestellt, um dem Datenverarbeitungssystem 200 die Annahme von Daten zu erlauben, die von einem Benutzer über ein entsprechendes Eingabegerät eingegeben werden. Zusätzlich stellt ein mit dem ISA-Bus 229 verbundener nicht flüchtiger RAM (NVRAM) 240 nicht flüchtigen Speicher bereit, um bestimmte Arten von Daten vor Systemunterbrechungen oder Systemfehlern wie z.B. Stromversorgungsproblemen zu schützen. Auch eine Systemfirmware 241 ist mit dem ISA-Bus 229 verbunden, um die anfänglichen BIOS-Funktionen auszuführen. Ein Dienstprozessor 244 ist mit dem ISA-Bus 229 verbunden, um die Funktionalität für die Systemdiagnose oder Systemwartung bereitzustellen.
-
Das Betriebssystem (OS) ist auf der Festplatte 236 gespeichert, die auch Speicherplatz für zusätzliche Anwendungssoftware zur Ausführung durch ein Datenverarbeitungssystem bereitstellen kann. Der NVRAM 240 wird benutzt, um Systemvariablen und Fehlerinformation zur Isolierung vor Ort austauschbarer Einheiten (FRU) bereitzustellen. Beim Systemstart lädt das Bootprogramm das Betriebssystem und initiiert die Ausführung des Betriebssystems. Um das Betriebssystem zu laden, sucht das Bootprogramm zuerst ein Betriebssystemkern-Image auf der Festplatte 236, lädt das Kernel-Image in den Speicher und springt zu einer Anfangsadresse, die vom Betriebssystemkern vorgegeben wird. Typischerweise wird das Betriebssystem in den Arbeitsspeicher (RAM) des Datenverarbeitungssystems geladen. Sobald es geladen und initialisiert wurde, steuert das Betriebssystem die Ausführung von Programmen und kann Dienste wie die Ressourcenzuweisung, -planung, Ein-/Ausgabesteuerung und Datenverwaltung bereitstellen.
-
Das Ausführungsbeispiel kann in verschiedenen Datenverarbeitungssystemen ausgeführt werden, die unterschiedliche Hardwarekonfigurationen und Software wie z.B. Bootprogramme und Betriebssysteme verwenden. Das Datenverarbeitungssystem 200 kann zum Beispiel ein eigenständiges System oder Teil eines Netzwerks wie z.B. eines lokalen Netzes (LAN) oder eines Weitverkehrsnetzes (WAN) sein. Wie oben erwähnt, ist 2 als Beispiel gedacht, nicht als Beschränkung der Architektur für verschiedene Ausführungsformen der vorliegenden Erfindung, und daher sind die spezifischen Elemente, die in 2 gezeigt werden, hinsichtlich der Umgebungen, in welchen die Ausführungsbeispiele der vorliegenden Erfindung realisiert sein können, nicht als einschränkend zu verstehen.
-
Nun auf 3 Bezug nehmend, wird ein Blockdiagramm einer beispielhaften logisch partitionierten Plattform gezeigt, in welcher die Ausführungsbeispiele realisiert sein können. Die Hardware in der logisch partitionierten Plattform 300 kann zum Beispiel mit der Hardware des Datenverarbeitungssystems 200 in 2 realisiert sein.
-
Die logisch partitionierte Plattform 300 schließt die partitionierte Hardware 330, Betriebssysteme 302, 304, 306, 308 und einen Virtual-Machine-Monitor (VMM) 310 ein. Die Betriebssysteme 302, 304, 306 und 308 können mehrere Kopien eines einzelnen Betriebssystems oder mehrere verschiedene Betriebssysteme sein, die gleichzeitig auf der logisch partitionierten Plattform 300 ausgeführt werden. Diese Betriebssysteme können zum Beispiel mit z/OS implementiert sein, das ausgelegt ist, um eine Schnittstelle zu einem Virtualisierungsmechanismus wie Partitionsverwaltungsfirmware zu bilden, z.B. einem Hypervisor. z/OS wird in diesen Ausführungsbeispielen nur als Beispiel verwendet. Natürlich können je nach Realisierung andere Arten von Betriebssystemen wie z.B. OS/400, AIX® und Linux® verwendet werden. Die Betriebssysteme 302, 304, 306 und 308 liegen jeweils in logischen Partitionen 303, 305, 307 und 309.
-
Die Hypervisor-Software ist ein Beispiel für Software, die zur Realisierung der Plattform (in diesem Beispiel Virtual-Machine-Monitor 310) verwendet werden kann und von der International Business Machines Corporation erhältlich ist. Firmware ist „Software“, die in einem Speicherchip gespeichert ist, der seinen Inhalt ohne elektrischen Strom behält, wie zum Beispiel ein Nur-Lese-Speicher (ROM), ein programmierbarer ROM (PROM), ein löschbarer programmierbarer ROM (EPROM) und ein elektrisch löschbarer programmierbarer ROM (EEPROM).
-
Die logisch partitionierte Plattform 300 kann auch das PowerVMTM Active Memory™ Sharing von IBM® verwenden, was eine erweiterte Speichervirtualisierungstechnik von IBM® PowerVM™ ist, die IBM Power Systems Speichervirtualisierungsfähigkeiten verleiht, um mehreren logischen Partitionen die Nutzung eines gemeinsamen physikalischen Speicherpools zu erlauben. Der physikalische Speicher von IBM Power Systems® kann mehreren logischen Partitionen entweder in einem dedizierten Modus oder in einem Modus für die gemeinsame Nutzung zugewiesen werden. Ein Systemadministrator hat die Möglichkeit, physikalischen Speicher einer logischen Partition und physikalischen Speicher einem Pool zuzuweisen, der von anderen logischen Partitionen gemeinsam benutzt wird. Eine Einzelpartition kann entweder dedizierten oder gemeinsam genutzten Speicher aufweisen. Das Active Memory™ Sharing kann eingesetzt werden, um die Speicherauslastung auf dem System zu erhöhen, indem der Systemspeicherbedarf verringert wird oder das Anlegen zusätzlicher logischer Partitionen auf einem bestehenden System zugelassen wird.
-
Die logischen Partitionen 303, 305, 307 und 309 umfassen auch Partitionsfirmware-Ladeprogramme 311, 313, 315 und 317. Die Partitionsfirmware-Ladeprogramme 311, 313, 315 und 317 können mit IPL- oder einleitendem Bootprogrammcode, offener Firmware nach der Norm IEEE-1275 und Laüfzeitabstraktionssoftware (RTAS) realisiert sein, die von der International Business Machines Corporation erhältlich ist.
-
Wenn die logischen Partitionen 303, 305, 307 und 309 instanziiert sind, wird eine Kopie des Bootprogrammcodes durch den Virtual-Machine-Monitor 310 in die logischen Partitionen 303, 305, 307 und 309 geladen. Danach wird die Steuerung an den Bootprogrammcode übergeben, wobei der Bootprogrammcode dann die offene Firmware und die RTAS lädt. Die Prozessoren, die den logischen Partitionen 303, 305, 307 und 309 zugeordnet oder zugewiesen sind, werden dann dem Speicher der logischen Partition zugeteilt, um die logische Partitionsfirmware auszuführen.
-
Die partitionierte Hardware 330 umfasst ein Vielzahl von Prozessoren 332 bis 338, eine Vielzahl von Systemspeichereinheiten 340 bis 346, eine Vielzahl von Ein-/Ausgabe (E/A)-Adaptern 348 bis 362 und eine Speichereinheit 370. Jeder von den Prozessoren 332 bis 338, den Speichereinheiten 340 bis 346, der NVRAM-Speicher 398 und den E/A-Adaptern 348 bis 362 kann einer von mehreren logischen Partitionen 303, 305, 307 und 309 innerhalb der logisch partitionierten Plattform 300 zugewiesen werden, wovon jede einem der Betriebssysteme 302, 304, 306 und 308 entspricht.
-
Der Virtual-Machine-Monitor 310 führt eine Anzahl von Funktionen und Dienste für die logischen Partitionen 303, 305, 307 und 309 durch, um die Partitionierung der logisch partitionierten Plattform 300 zu erzeugen und zu erzwingen. Der Virtual-Machine-Monitor 310 ist eine firmwarerealisierte virtuelle Maschine, die der zugrundeliegenden Hardware entspricht. Daher erlaubt der Virtual-Machine-Monitor 310 die gleichzeitige Ausführung unabhängiger Betriebssystem-Images 302, 304, 306 und 308, indem er alle Hardwareressourcen der logisch partitionierten Plattform 300 virtualisiert.
-
Der Dienstprozessor 390 kann verwendet werden, um verschiedene Dienste wie z.B. die Verarbeitung von Plattformfehlern in den logischen Partitionen 303, 305, 307 und 309 bereitzustellen. Der Dienstprozessor 390 kann auch als Serviceagent wirken, um Fehler an einen Anbieter wie z.B. International Business Machines Corporation zurückzumelden. Der Betrieb der verschiedenen logischen Partitionen kann über eine Hardwaresystemkonsole 380 gesteuert werden. Die Hardwaresystemkonsole 380 ist ein separates Datenverarbeitungssystem, von dem aus ein Systemadministrator verschiedene Funktionen einschließlich der Neuzuweisung von Ressourcen an andere logische Partitionen ausführen kann.
-
Die Ausführungsbeispiele sehen vor, dass ein Betriebssystem (OS)-Treiber am Anfang nur ein einziges Warteschlangenpaar (QP) zuweist, d.h., ein Sende-/Empfangs-Paar, dessen Ressourcenbedarf leicht über dem für einen Normalbetrieb erforderlichen Minimum liegt. Wenn der Datenverkehrsfluss oder die Auslastung vorbestimmte Schwellenwerte übersteigt, weist der OS-Treiber bei Bedarf auf dynamische Weise zusätzliche QPs zu. Wenn QPs zum ausgeführten OS-Treiber hinzugefügt werden und einem Adapter verfügbar gemacht werden, wird der Datenverkehr nach dem Hashverfahren sowohl den Eingangs- bzw. Empfangs- als auch den Ausgangs- bzw. Sendepfaden zu mehr Zentraleinheiten (CPUs) zugeführt, wodurch die Leistung und die CPU/Speicherressourcennutzung auf effektive Weise skaliert wird. Da die Leistungsskalierung eher über zusätzliche QPs als durch eine statische Deskriptorzahl erreicht wird, können die Systemressourcen verringert werden, wenn sie nicht mehr benötigt werden. Wenn der Datenverkehrsfluss und die Auslastung einen festgelegten Mindestschwellenwert unterschreiten, kann der OS-Treiber QPs entfernen und zu einer minimalen Ressourcennutzung für den Normalbetrieb zurückkehren. Dieser Zyklus wiederholt sich, wenn die Auslastung oder der Datenverkehr zunimmt. Dadurch erreichen die Ausführungsbeispiele auf effektive Weise die dynamische Rekonfigurierung, um die Leistung zu optimieren, während sie die CPU-Nutzung und die Active Memory Sharing-Affinität gewährleisten.
-
4 ist ein beispielhaftes Blockdiagramm, das die Hauptkomponenten und ihre Wechselwirkungen nach einem Ausführungsbeispiel darstellt. Die in 4 gezeigten Elemente können in Hardware, Software oder jeder Kombination von Hardware und Software realisiert sein. In einem Ausführungsbeispiel sind die Elemente von 4 als Software realisiert, die auf ein oder mehr Prozessoren von ein oder mehr Datenverarbeitungseinheiten oder -systemen ausgeführt werden.
-
4 zeigt eine beispielhafte Realisierung eines Mechanismus, der durch dynamische Rekonfigurierung nach einem Ausführungsbeispiel Ressourcenaffinität für Netzadapter mit mehreren Warteschlangen bereitstellt. Das Datenverarbeitungssystem 400 umfasst den Einheitentreiber 402 im Betriebssystem 404. Der Einheitentreiber 402 stellt im Speicher 408 ein oder mehr Warteschlangenpaare 406a bis 406n zur Verwendung durch die Anwendung 410 und den Netzadapter 412 bereit. Auch wenn das Ausführungsbeispiel nur einen Einheitentreiber 402, eine Anwendung 410 und einen Netzadapter 412 darstellt, wird ein Fachmann erkennen, dass das Datenverarbeitungssystem 400 eine Vielzahl von Einheitentreibern, eine Vielzahl von Anwendungen und eine Vielzahl von Netzadaptern im Datenverarbeitungssystem 400 umfassen kann.
-
Wenn das Betriebssystem 404 startet, konfiguriert und initialisiert das Betriebssystem 404 den Einheitentreiber 402. Der Einheitentreiber 402 weist dann ein anfängliches Warteschlangenpaar 406a zu, das mehrere Empfangsdeskriptoren/-puffer und mehrere Sendedeskriptoren/-puffer im Speicher 408 umfassen kann. Der Einheitentreiber 402 startet dann den Netzadapter 412, sodass der Datenverkehr zum Netzadapter 412 übertragen werden kann. Wenn während des Betriebs nur ein Warteschlangenpaar 406a initialisiert wurde, empfängt der Einheitentreiber 402 den Datenverkehr, der an den Netzadapter 412 zu übertragen ist, und sendet den Datenverkehr zur Bereitstellung an den Netzadapter 412. Der Netzadapter 412 sendet den Datenverkehr dann über das Netzwerk 424 an eine Einheit wie den Server 416, den Server 418, den Client 420, den Client 422 oder dergleichen. Umgekehrt, wenn der Netzadapter 412 von einer Einheit wie z.B. dem Server 416, dem Server 418, dem Client 420, dem Client 422 oder dergleichen über das Netzwerk 424 Datenverkehr empfängt, der an den Einheitentreiber 402 zu übertragen ist, löst der Netzadapter 412 einen Interrupt für die Verarbeitung durch das Betriebssystem 404 aus, und der Datenverkehr wird an den Einheitentreiber 402 gesendet. Jedes der Warteschlangenpaare 406a und 406b bis 406n, die zusätzlich zugewiesen werden können, wie unten beschrieben, weist seinen eigenen zugeordneten Empfangsinterrupt auf.
-
Nachdem der Einheitentreiber 402 das Warteschlangenpaar 406a zugewiesen und instanziiert hat, überwacht der Einheitentreiber 402 ständig anhand des Datenflusses und der Ressourcenverfügbarkeit eine Auslastung des Betriebssystems 404. Der Einheitentreiber 402 kann Parameter wie z.B. die Sende-/Empfangsbytes pro Sekunde, eine Zahl der Datenfluss-Steuerrahmen, die vom Netzadapter 412 gesendet und empfangen werden, eine Zahl der DMA-Überläufe, die vom Netzadapter 412 erkannt werden, eine Zahl von Übertragungszeitüberschreitungsereignissen, die vom Einheitentreiber 402 erkannt werden, eine Zahl der Empfangspakete, die vom Einheitentreiber 402 pro Interrupt verarbeitet werden, eine Zahl der Sendepakete in einer Software-Warteschlange oder dergleichen überwachen. Wenn der Einheitentreiber 402 durch die Auslastungsüberwachung wie z.B., wenn ein vorbestimmter oberer Schwellenwert überschritten wird, einen unzureichenden Ressourcenzustand erkennt, kann der Einheitentreiber 402 auf dynamische Weise ein zusätzliches Warteschlangenpaar 406b bis 406n zuweisen und initialisieren. Der Einheitentreiber 402 programmiert dann den Mechanismus 414 zur empfangsseitigen Skalierung (RSS) im Netzadapter 412, um das dynamische Einfügen einer zusätzlichen Verarbeitungsengine, die dem Warteschlangenpaar 406a und dem zusätzlichen Warteschlangenpaar 406b bis 406n zugeordnet ist, zu erlauben. Der Einheitentreiber 402 aktiviert dann das Hashing von Sendetupeln in das Warteschlangenpaar 406a und das zusätzliche Warteschlangenpaar 406b bis 406n. Das Hashing von Empfangstupeln und die Verarbeitung durch den Netzadapter 412 werden durch die Programmierung des RSS-Mechanismus 414 automatisch aktiviert. Der Einheitentreiber 402 fährt damit fort, eines der Warteschlangenpaare 406b bis 406n hinzuzufügen, wenn es nicht bereits zugewiesen und initialisiert wurde, bis alle verfügbaren Warteschlangenpaare 406b bis 406n verbraucht sind oder bis die Warteschlangenpaare 406a bis 406n eine Zahl der Zentraleinheiten im Datenverarbeitungssystem 400 übersteigt. Der Einheitentreiber 402 programmiert auch den RSS-Mechanismus 414 im Netzadapter 412 neu, um jedes Mal, wenn ein neues Warteschlangenpaar 406b bis 406n hinzugefügt wird, das dynamische Einfügen einer zusätzlichen Verarbeitungsengine zu erlauben, und aktiviert das Hashing von Sendetupeln in das neue Warteschlangenpaar 406b bis 406n.
-
Wenn der Einheitentreiber 402 eine Abnahme in der Auslastung erkennt, wie z.B., wenn die Auslastung unter einen vorbestimmten unteren Schwellenwert fällt, kann der Einheitentreiber 402 den RSS-Mechanismus 414 im Netzadapter 412 auf dynamische Weise neu programmieren, um die Löschung eines der zugewiesenen Warteschlangenpaare 406a bis 406n zu erlauben. Der Einheitentreiber 402 deaktiviert dann das Hashing von Sendetupeln in das gelöschte Warteschlangenpaar 406a bis 406n. Sobald das gelöschte Warteschlangenpaar 406a bis 406n stillgelegt wurde, entfernt der Einheitentreiber 402 das gelöschte Warteschlangenpaar 406a bis 406n, wodurch der vom gelöschten Warteschlangenpaar 406a bis 406n genutzte Speicher freigegeben wird. Wie bei der Aktivierung des Hashings von Empfangstupeln im Netzadapter 412 werden das Hashing und die Verarbeitung von Empfangstupeln durch den Netzadapter 412 durch die Neuprogrammierung des RSS-Mechanismus 414 automatisch deaktiviert.
-
Daher stellen die Ausführungsbeispiele einen Mechanismus bereit, der durch dynamische Rekonfigurierung der zugrundeliegenden Hardware Ressourcenaffinität für das Active Memory Sharing (AMS) und die CPU-Nutzung gewährleistet, um den Bedürfnissen veränderlicher Auslastungen ohne Unterbrechung in der Leistung oder im Dienst zu entsprechen. Wenn der Datenverkehrsfluss oder die Auslastung vorbestimmte Schwellenwerte übersteigt, weist der Einheitentreiber bei Bedarf auf dynamische Weise zusätzliche Warteschlangenpaare zu. Wenn der Datenverkehrsfluss und die Auslastung unter einen vorbestimmten Mindestschwellenwert abfallen, kann der Einheitentreiber Warteschlangenpaare entfernen und zur minimalen Ressourcennutzung für den Normalbetrieb zurückkehren. Dieser Zyklus wiederholt sich, wenn die Auslastung oder der Datenverkehr zu- oder abnimmt.
-
Wie der Fachmann erkennen wird, kann die vorliegende Erfindung als System, Verfahren oder Computerprogrammerzeugnis ausgeführt werden. Daher können Aspekte der vorliegenden Erfindung die Form einer kompletten Hardware-Ausführungsform, einer kompletten Software-Ausführungsform (einschließlich Firmware, speicherresidenter Software, Mikrocode usw.) oder einer Ausführungsform annehmen, die Software- und Hardwareaspekte kombiniert, die hierin alle allgemein als „Schaltung“, „Modul“ oder „System“ bezeichnet werden können. Überdies können Aspekte der vorliegenden Erfindung die Form eines Computerprogrammerzeugnisses annehmen, das in einem computerlesbaren Medium oder mehreren computerlesbaren Medien mit einem darauf ausgeführten computerlesbaren Programmcode ausgeführt ist. Jede Kombination eines computerlesbaren Mediums oder mehrerer computerlesbarer Medien kann verwendet werden. Das computerlesbare Medium kann ein computerlesbarer Signalträger oder ein computerlesbares Speichermedium sein. Ein computerlesbares Speichermedium kann zum Beispiel, ohne aber darauf beschränkt zu sein, ein elektronisches, magnetisches, optisches, elektromagnetisches, Infrarot- oder Halbleiter-System, eine entsprechende Vorrichtung oder Einheit oder jede geeignete Kombination des Vorstehenden sein. Spezifischere Beispiele (eine nicht erschöpfende Liste) des computerlesbaren Speichermediums schließen folgendes ein: eine elektrische Verbindung mit einer oder mehreren Drahtleitungen, eine tragbare Computerdiskette, eine Festplatte, einen Arbeitsspeicher (RAM), einen Nur-Lese-Speicher (ROM), einen löschbaren programmierbaren Nur-Lese-Speicher (EPROM oder Flashspeicher), einen Lichtwellenleiter, eine CD-ROM, eine optische Speichereinheit, eine magnetische Speichereinheit oder jede geeignete Kombination des Vorstehenden. Im Kontext dieses Dokuments kann ein computerlesbares Speichermedium jedes materielle Medium sein, das ein Programm zur Verwendung durch oder in Verbindung mit einem Befehlsausführungssystem oder einer entsprechenden Vorrichtung oder Einheit enthalten oder speichern kann.
-
Ein computerlesbarer Signalträger kann ein verbreitetes Datensignal mit computerlesbarem Programmcode sein, der zum Beispiel im Basisband oder als Teil einer Trägerwelle darin ausgeführt ist. Ein derartiges verbreitetes Signal kann verschiedene Formen annehmen, einschließlich, ohne aber darauf beschränkt zu sein, elektromagnetisch, optisch oder jede geeignete Kombination daraus. Ein computerlesbarer Signalträger kann jedes computerlesbare Medium sein, das kein computerlesbares Speichermedium ist und das ein Programm zur Verwendung durch oder in Verbindung mit einem Befehlsausführungssystem oder einer entsprechenden Vorrichtung oder Einheit übertragen, verbreiten oder transportieren kann.
-
Der Programmcode, der auf einem computerlesbaren Medium ausgeführt ist, kann durch jedes geeignete Medium übertragen werden, einschließlich, ohne aber darauf beschränkt zu sein, drahtlos, drahtgebunden, Lichtwellenleiterkabel, Funkfrequenz (HF) usw., oder jede geeignete Kombination daraus.
-
Der Computerprogrammcode zur Durchführung von Operationen für Aspekte der vorliegenden Erfindung kann in jeder Kombination einer oder mehrerer Programmiersprachen geschrieben sein, einschließlich einer objektorientierten Programmiersprache wie Java™, Smalltalk™, C++ oder dergleichen und konventioneller prozeduraler Programmiersprachen wie die Programmiersprache „C“ oder ähnliche Programmiersprachen. Der Programmcode kann gänzlich auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Softwarepaket, teilweise auf dem Computer des Benutzers und teilweise auf einem fernen Computer oder gänzlich auf dem fernen Computer oder Server ausgeführt werden. Im letzteren Szenario kann der ferne Computer durch jede Art von Netzwerk einschließlich eines lokalen Netzes (LAN) oder eines Weitverkehrsnetzes (WAN) mit dem Computer eines Benutzers verbunden sein, oder die Verbindung kann zu einem externen Computer hergestellt werden (zum Beispiel über das Internet durch einen Internet-Dienstanbieter).
-
Aspekte der vorliegenden Erfindung werden im Folgenden Bezug nehmend auf Fluss- und/oder Blockdiagramme von Verfahren, Vorrichtungen (Systemen) und Computerprogrammerzeugnissen nach Ausführungsbeispielen der Erfindung beschrieben. Es versteht sich, dass jeder Block der Fluss- und/oder Blockdiagramme und Kombinationen von Blöcken in den Flussdiagrammen und/oder Blockdiagrammen durch Computerprogrammbefehle realisiert sein können. Diese Computerprogrammbefehle können einem Prozessor eines Mehrzweckcomputers, Spezialcomputers oder einer sonstigen programmierbaren Datenverarbeitungsvorrichtung zur Herstellung einer Maschine so bereitgestellt werden, dass die Befehle, die über den Prozessor des Computers oder der sonstigen programmierbaren Datenverarbeitungsvorrichtung ausgeführt werden, Mittel zur Durchführung der Funktionen/Vorgänge ergeben, die im Block oder in Blöcken der Fluss- und/oder Blockdiagramme angegeben sind.
-
Diese Computerprogrammbefehle können auch in einem computerlesbaren Medium gespeichert sein, das einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder sonstige Einheiten anweisen kann, auf eine bestimmte Weise zu funktionieren, sodass die Befehle, die im computerlesbaren Medium gespeichert sind, ein Erzeugnis mit Befehlen ergeben, die Funktionen/Vorgänge realisieren, die im Block oder in Blöcken der Fluss- und/oder Blockdiagramme angegeben sind.
-
Die Computerprogrammbefehle können auch in einen Computer, in eine andere programmierbare Datenverarbeitungsvorrichtung oder in sonstige Einheiten geladen werden, um die Durchführung einer Reihe von Arbeitsgängen auf dem Computer, der anderen programmierbaren Vorrichtung oder sonstigen Einheiten zu bewirken, um einen computergestützten Prozess zu ergeben, sodass die Befehle, die auf dem Computer oder der sonstigen programmierbaren Vorrichtung ausgeführt werden, Prozesse zur Ausführung der Funktionen/Vorgänge ergeben, die im Block oder in Blöcken der Fluss- und/oder Blockdiagramme angegeben sind.
-
Nun auf 5 Bezug nehmend, zeigt diese Figur ein Flussdiagramm, das Beispieloperationen zur Gewährleistung von Ressourcenaffinität für Netzadapter mit mehreren Warteschlangen durch dynamische Rekonfigurierung nach einem Ausführungsbeispiel beschreibt. Am Anfang der Operation weist ein konfigurierter und initialisierter Einheitentreiber ein anfängliches Warteschlangenpaar in einem Speicher zu (Schritt 502). Der Einheitentreiber startet dann den Netzadapter, sodass der Datenverkehr zum Netzadapter übertragen werden kann (Schritt 504).
-
Nachdem der Einheitentreiber das Warteschlangenpaar zugewiesen und instanziiert hat, überwacht der Einheitentreiber ständig eine Auslastung des Betriebssystems anhand des Datenflusses und der Ressourcenverfügbarkeit (Schritt 506). Der Einheitentreiber kann Parameter wie die Sende-/Empfangsbytes pro Sekunde, eine Zahl der Datenfluss-Steuerrahmen, die vom Netzadapter gesendet und empfangen werden, eine Zahl der DMA-Überläufe, die vom Netzadapter erkannt werden, eine Zahl von Übertragungszeitüberschreitungsereignissen, die vom Einheitentreiber erkannt werden, eine Zahl der Empfangspakete, die vom Einheitentreiber pro Interrupt verarbeitet werden, eine Zahl der Sendepakete in einer Software-Warteschlange oder dergleichen überwachen. Der Einheitentreiber bestimmt dann, ob ein vorbestimmter oberer Schwellenwert überschritten worden ist, was einen unzureichenden Ressourcenzustand durch die Auslastungsüberwachung anzeigt (Schritt 508). Wenn in Schritt 508 die Auslastung über den vorbestimmten oberen Schwellenwert gestiegen ist, weist der Einheitentreiber auf dynamische Weise ein zusätzliches Warteschlangenpaar im Speicher zu und initialisiert es (Schritt 510). Der Einheitentreiber programmiert/reprogrammiert dann den RSS-Mechanismus im Netzadapter, um das dynamische Einfügen einer zusätzlichen Verarbeitungsengine (Schritt 512) zu erlauben, und der Einheitentreiber aktiviert das Hashing von Sendetupeln in das neu zugewiesene Warteschlangenpaar (Schritt 514), wonach die Operation zu Schritt 506 zurückkehrt.
-
Wenn die Auslastung in Schritt 508 nicht über den vorbestimmten oberen Schwellenwert gestiegen ist, bestimmt der Einheitentreiber, ob die Auslastung unter einen vorbestimmten unteren Schwellenwert gefallen ist (Schritt 516). Wenn der Einheitentreiber in Schritt 516 bestimmt, dass die Auslastung nicht unter den vorbestimmten unteren Schwellenwert gefallen ist, kehrt die Operation zu Schritt 506 zurück. Wenn der Einheitentreiber in Schritt 516 bestimmt, dass die Auslastung unter den vorbestimmten unteren Schwellenwert gefallen ist, bestimmt der Einheitentreiber, ob nur ein zuzuweisendes Warteschlangenpaar übrig ist (Schritt 518). Wenn der Einheitentreiber in Schritt 518 bestimmt, dass nur ein Warteschlangenpaar übrig ist, kehrt das Verfahren zu Schritt 506 zurück. Wenn der Einheitentreiber in Schritt 518 bestimmt, dass mehr als ein Warteschlangenpaar übrig ist, kann der Einheitentreiber den RSS-Mechanismus im Netzadapter auf dynamische Weise neu programmieren, um die Löschung eines zugewiesenen Warteschlangenpaars zu erlauben (Schritt 520). Der Einheitentreiber deaktiviert dann das Hashing von Sendetupeln in ein angegebenes Warteschlangenpaar (Schritt 522). Der Einheitentreiber bestimmt dann, ob die Arbeitslast zum angegebenen Warteschlangenpaar stillgelegt worden ist (Schritt 524). Wenn der Einheitentreiber in Schritt 524 bestimmt, dass die Auslastung zum angegebenen Warteschlangenpaar nicht stillgelegt wurde, kehrt das Verfahren zu Schritt 524 zurück. Wenn der Einheitentreiber in Schritt 524 bestimmt, dass die Arbeitslast zum angegebenen Warteschlangenpaar stillgelegt wurde, entfernt der Einheitentreiber das angegebene Warteschlangenpaar aus dem Speicher (Schritt 526), wodurch der Speicher, der vom angegebenen Warteschlangenpaar genutzt wurde, freigegeben wird. Dann kehrt die Operation zu Schritt 506 zurück.
-
Die Fluss- und Blockdiagramme in den Zeichnungen veranschaulichen die Architektur, die Funktionalität und die Arbeitsweise möglicher Realisierungen von Systemen, Verfahren und Computerprogrammprodukten nach verschiedenen Ausführungsformen der vorliegenden Erfindung. In diesem Zusammenhang kann jeder Block in den Fluss- oder Blockdiagrammen ein Codemodul, ein Codesegment oder einen Codeteil darstellen, die eine oder mehrere ausführbare Befehle zur Realisierung der spezifizierten logischen Funktion(en) umfassen. Es ist auch anzumerken, dass die in den Blöcken genannten Funktionen in einigen alternativen Ausführungen in einer anderen Reihenfolge als der in der Figur genannten auftreten können. Zum Beispiel können zwei Blöcke, die aufeinanderfolgend dargestellt sind, tatsächlich im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können abhängig von der beteiligten Funktionalität manchmal in umgekehrter Reihenfolge ausgeführt werden. Es ist auch anzumerken, dass jeder Block in den Block- und/oder Flussdiagrammen und Kombinationen von Blöcken in den Block- und/oder Flussdiagrammen durch Systeme auf der Basis von Spezialhardware, die die spezifizierten Funktionen der Vorgänge durchführen, oder durch Kombinationen von Spezialhardware und Computeranweisungen ausgeführt werden können.
-
Die Ausführungsbeispiele stellen also Mechanismen bereit, die durch dynamische Rekonfigurierung der zugrundeliegenden Hardware Ressourcenaffinität für das Active Memory Sharing (AMS) und die CPU-Nutzung bereitstellen, um den Bedürfnissen veränderlicher Auslastungen ohne Unterbrechung in der Leistung oder im Dienst zu entsprechen. Wenn der Datenverkehrsfluss oder die Auslastung vorbestimmte Schwellenwerte übersteigt, weist der Einheitentreiber bei Bedarf auf dynamische Weise zusätzliche Warteschlangenpaare zu. Wenn der Datenverkehrsfluss und die Auslastung unter einen vorbestimmten Mindestschwellenwert fallen, kann der Einheitentreiber Warteschlangenpaare entfernen und zur minimalen Ressourcennutzung für den Normalbetrieb zurückkehren. Dieser Zyklus wiederholt sich, wenn die Auslastung oder der Datenverkehr zu- oder abnimmt.
-
Wie oben erwähnt, versteht es sich, dass die Ausführungsbeispiele die Form einer kompletten Hardware-Ausführungsform, einer kompletten Software-Ausführungsform oder einer Ausführungsform annehmen können, die sowohl Hardware- als auch Softwareelemente enthält. In einer beispielhaften Ausführungsform sind die Mechanismen der Ausführungsbeispiele in Software oder Programmcode ausgeführt, was Firmware, residente Software, Mikrocode usw. einschließt, ohne aber darauf beschränkt zu sein.
-
Ein Datenverarbeitungssystem, das zum Speichern und/oder Ausführen von Programmcode geeignet ist, wird mindestens einen Prozessor einschließen, der über einen Systembus direkt oder indirekt mit Speicherelementen verbunden ist. Die Speicherelemente können einen Lokalspeicher, der während der eigentlichen Ausführung des Programmcodes verwendet wird, einen Massenspeicher und Caches einschließen, die für die temporäre Speicherung mindestens bestimmter Programmcodeteile sorgen, um die Häufigkeit zu verringern, mit welcher der Code bei der Ausführung aus dem Massenspeicher abgerufen werden muss.
-
Ein-/Ausgabe- oder E/A-Einheiten (einschließlich, aber ohne darauf beschränkt zu sein, Tastaturen, Anzeigen, Zeigereinheiten usw.) können entweder direkt oder durch dazwischenliegende E/A-Controller mit dem System verbunden sein. Auch Netzadapter können mit dem System verbunden sein, um die Verbindung des Datenverarbeitungssystems mit anderen Datenverarbeitungssystemen oder entfernten Druckern oder Speichereinheiten über dazwischenliegende private oder öffentliche Netze zu erlauben. Modems, Kabelmodems und Ethernetkarten sind nur einige der aktuell verfügbaren Netzadaptertypen.
-
Die Beschreibung der vorliegenden Erfindung soll der Veranschaulichung und Beschreibung dienen, ohne aber erschöpfend oder auf die Erfindung in der offenbarten Form eingeschränkt zu sein. Einem Fachmann werden viele Modifikationen und Varianten einfallen. Die Ausführungsform wurde gewählt und beschrieben, um die Prinzipien der Erfindung und die praktische Anwendung am besten zu erklären und um anderen Fachleuten das Verständnis der Erfindung für verschiedene Ausführungsformen mit verschiedenen Modifikationen, wie sie für die vorgesehene spezifische Anwendung geeignet sind, zu ermöglichen.