-
Gebiet der Erfindung
-
Ausführungsformen der Erfindung betreffen im Allgemeinen ein Verfahren und eine Vorrichtung zur Injektion von Fehlern in einen Speicher.
-
Beschreibung des verwandten Fachgebiets
-
Um eine komplexe Fehlerbehandlungs- und Fehlerbehebungssoftware (SW) zu entwickeln und zu validieren, haben SW-Anbieter, wie beispielsweise die Anbieter von Betriebssystemen (OS), virtuellen Maschinenmanagern (VMM) usw. den Wunsch nach einer einfachen Schnittstelle, die Fehler in eine gegebene Systemadresse zum Testen von Software injizieren kann.
-
Bei gegenwärtigen Implementierungen gibt es keine einfache Schnittstelle, die zur Injektion von Fehlern in einen Speicher verwendet werden kann. Stattdessen werden komplexe Verfahren verwendet, die eine Verwendung eines Basic Input/Output Systems (BIOS) umfassen und die für ein Testen (DFx) von Fehlerinjektionsmechanismen konzipiert sind, die verwendet werden, um die Fehlerinjektion zu bewirken.
-
Ungünstigerweise sind diese Verfahren komplex und umfassen viele Konstruktionsproblemgesichtspunkte, die mit einem jeweiligen zu testenden Produkt verbunden sind. Darüber hinaus sind die Verfahren typischerweise nicht portabel, da sie für jedes zu testende Produkt „wiedererfunden” werden müssen. Beispielsweise muss eine gegebene Systemadresse in eine Speicheradresse übersetzt werden (da DFx-Mechanismen mit Speicheradressen arbeiten) und sie können auch Hilfe von einem Mikrocode erfordern, um bestimmte Eigenschaften zu entriegeln, die nur mit einem bestimmten zu testenden Produkt verwendet werden sollten.
-
Daher wäre es von Vorteil, eine einfache Schnittstelle zur Injektion von Fehlern zum Testen eines Produktes zu verwenden.
-
Kurzbeschreibung der Zeichnungen
-
Ein besseres Verständnis der vorliegenden Erfindung kann aus der folgenden detaillierten Beschreibung in Verbindung mit den folgenden Zeichnungen erhalten werden, in welchen:
-
1 eine Computersystemarchitektur zeigt, die bei Ausführungsformen der Erfindung verwendet werden kann;
-
2 eine Computersystemarchitektur zeigt, die bei Ausführungsformen der Erfindung verwendet werden kann;
-
3 ein Blockdiagramm einer für einen MCH bestimmten Schnittstelle gemäß einer Ausführungsform der Erfindung ist;
-
4 ein Flussdiagramm 400 ist, das den Ablauf der Testsoftware und den Ablauf der für den MCH bestimmten Schnittstelle (z. B. Hardware(HW)-Ablauf) gemäß einer Ausführungsform der Erfindung zeigt.
-
Detaillierte Beschreibung
-
In der folgenden Beschreibung werden zum Zweck der Erläuterung verschiedene spezielle Einzelheiten dargelegt, um ein umfassendes Verständnis der Ausführungsformen der nachfolgend beschriebenen Erfindung zu gewährleisten. Es ist jedoch für den Fachmann erkennbar, dass die Ausführungsformen der Erfindung ohne einige dieser Einzelheiten praktiziert werden können. Bei anderen Beispielen sind gut bekannte Strukturen und Vorrichtungen in der Form eines Blockdiagramms gezeigt, um eine Verschleierung der zugrunde liegenden Prinzipien der Ausführungsformen der Erfindung zu vermeiden.
-
Im Folgenden sind beispielhafte Computersysteme angegeben, die bei Ausführungsformen der Erfindung verwendet werden können, die nachfolgend erläutert werden und zur Ausführung von Befehlen hierin in Einzelheiten dargelegt sind. Andere Systementwicklungen und Konfigurationen, die im Stand der Technik der Laptops, Desktops, Handheld PCs, Personal Digital Assistants, Engineering Workstations, Server, Netzvorrichtungen, Netzhubs, Switches, eingebetteten Prozessoren, digitalen Signalprozessoren (DSPs), Grafikvorrichtungen, Videospielvorrichtungen, Set-Top-Boxes, Mikrocontrollern, Mobiltelefonen, tragbaren Medienspielern, handgehaltenen Vorrichtungen und verschiedenen anderen elektronischen Vorrichtungen bekannt sind, sind ebenfalls geeignet. Im Allgemeinen ist eine große Vielzahl von Systemen oder elektronischen Vorrichtungen, die in der Lage sind einen Prozessor und/oder eine andere Ausführungslogik zu integrieren, wie sie hierin erläutert wird, generell geeignet.
-
Im Folgenden wird auf 1 Bezug genommen, in der ein Blockdiagramm eines Computersystems 100 gemäß einer Ausführungsform der Erfindung gezeigt ist. Das System 100 kann ein oder mehrere Verarbeitungselemente 110, 115 umfassen, die mit einem Grafikspeichercontrollerhub (GMCH) 120 gekoppelt sind. Die optionale Natur zusätzlicher Verarbeitungselemente 115 ist in 1 durch gestrichelte Linien gezeigt. Jedes Verarbeitungselement kann ein einzelner Kern sein oder kann alternativ mehrere Kerne umfassen. Die Verarbeitungselemente können optional andere On-Die-Elemente neben Verarbeitungskernen, wie beispielsweise eine integrierte Speicherkontroller- und/oder eine integrierte E/A-Steuerungslogik aufweisen. Auch können für zumindest eine Ausführungsform der oder die Kerne der Verarbeitungselemente multithreaded sein, indem sie mehr als einen Hardwarethreadkontext pro Kern aufweisen können.
-
1 zeigt, dass der GMCH 120 mit einem Speicher 140 gekoppelt sein kann, der beispielsweise ein dynamischer Wahlzugriffsspeicher (DRAM) sein kann. Der DRAM kann bei zumindest einer Ausführungsform mit einem nicht-flüchtigen Cache verbunden sein. Der GMCH 120 kann ein Chipsatz oder ein Teil eines Chipsatzes sein. Der GMCH 120 kann mit dem oder den Prozessor(en) 110, 115 kommunizieren und eine Interaktion zwischen dem oder den Prozessor(en) 110, 115 und dem Speicher 140 steuern. Der GMCH 120 kann auch als eine beschleunigte Busschnittstelle zwischen dem oder den Prozessor(en) 110, 115 und anderen Elementen des Systems 100 wirken. Bei zumindest einer Ausführungsform kommuniziert der GMCH 120 mit dem oder den Prozessor(en) 110, 115 über einen Multi-Drop-Bus, wie beispielsweise einen Frontside-Bus (FSB) 195. Darüber hinaus ist der GMCH 120 mit einem Display 140 gekoppelt (wie beispielsweise einem Flachbilddisplay). Der GMCH 120 kann einen integrierten Grafikbeschleuniger aufweisen. Der GMCH 120 ist weiter mit einem Eingangs-/Ausgangs-(E/A)-Controllerhub (ICH) 150 gekoppelt, der verwendet werden kann, um verschiedene Periphervorrichtungen mit dem System 100 zu koppeln. In der Ausführungsform aus 1 ist beispielsweise eine externe Grafikvorrichtung 160 gezeigt, die eine diskrete Grafikvorrichtung sein kann, die mit dem ICH 150 zusammen mit einer anderen peripheren Vorrichtung 170 gekoppelt ist.
-
Alternativ können zusätzliche oder andere Verarbeitungselemente ebenfalls im System 100 vorhanden sein. Beispielsweise können zusätzliche Verarbeitungselemente 115 zusätzliche Prozessoren, die dieselben sind, wie der Prozessor 110, zusätzliche Prozessoren, die heterogen oder asymmetrisch zum Prozessor 110 sind, Beschleuniger (wie beispielsweise z. B. Grafikbeschleuniger oder Digitalsignalverarbeitungs-(DSP)-Einheiten), feldprogrammierbare Gatearrays oder jedes beliebige andere Verarbeitungselement aufweisen. Es kann eine Vielzahl von Unterschieden zwischen den physikalischen Ressourcen 110, 115 bezüglich eines Gütespektrums einschließlich von architektonischen, mikroarchitektonischen, thermischen, Energieverbrauchs-Charakteristika und dergleichen geben. Diese Unterschiede können sich effektiv als eine Asymmetrie oder Heterogenität zwischen den Verarbeitungselementen 110, 115 manifestieren. Für zumindest eine Ausführungsform können sich die verschiedenen Verarbeitungselemente 110, 115 in demselben Die-Package befinden.
-
Im Folgenden wird auf 2 Bezug genommen, in der ein Blockdiagramm eines weiteren Computersystems 200 gemäß einer Ausführungsform der vorliegenden Erfindungen gezeigt ist. Wie in 2 gezeigt ist, ist das Multiprozessorsystem 200 ein Punkt-zu-Punkt-Interconnect-System und umfasst ein erstes Verarbeitungselement 270 und ein zweites Verarbeitungselement 280, die über einen Punkt-zu-Punkt-Interconnect 250 verbunden sind. Wie in 2 gezeigt ist, kann jedes der Verarbeitungselemente 270 und 280 ein Multicore-Prozessor sein, umfassend einen ersten und einen zweiten Prozessorkern (d. h. Prozessorkerne 274a und 274b und Prozessorkerne 284a und 284b). Alternativ können eines oder mehrere der Verarbeitungselemente 270, 280 ein anderes Element als ein Prozessor sein, wie beispielsweise ein Beschleuniger oder ein feldprogrammierbares Gatearray. Während lediglich zwei Verarbeitungselemente 270, 280 gezeigt sind, ist klar verständlich, dass der Umfang der vorliegenden Erfindung nicht darauf beschränkt ist. Bei anderen Ausführungsformen können eines oder mehrere zusätzliche Verarbeitungselemente in einem gegebenen Prozessor vorhanden sein.
-
Ein erstes Verarbeitungselement 270 kann weiter einen Speichercontrollerhub (MCH) 272, der eine zweckbestimmte Schnittstelle 273 aufweist, wie nachfolgend beschrieben wird, und Punkt-zu-Punkt-(P-P)-Schnittstellen 276 und 278 aufweisen. Ähnlich kann das zweite Verarbeitungselement 280 einen MCH 282, der eine zweckbestimmte Schnittstelle 283 aufweist, wie nachfolgend beschrieben wird, und P-P-Schnittstellen 286 und 288 aufweisen. Die Prozessoren 270, 280 können Daten über eine Punkt-zu-Punkt-(PtP)-Schnittstelle 250 unter Verwendung von PtP-Schnittstellenschaltungen 278, 288 austauschen. Wie in 2 gezeigt ist, koppeln die MCHs 272 und 282 die Prozessoren an entsprechende Speicher, insbesondere einen Speicher 242 und einen Speicher 244, die Teile eines Hauptspeichers sein können, der lokal an die entsprechenden Prozessoren angeschlossen ist.
-
Die Prozessoren 270, 280 können jeweils Daten mit einem Chipsatz 290 über individuelle PtP-Schnittstellen 252, 254 unter Verwendung von Punkt-zu-Punkt-Schnittstellenschaltungen 276, 294, 286, 298 austauschen. Der Chipsatz 290 kann auch Daten mit einer Hochleistungsgrafikschaltung 238 über eine Hochleistungsgrafikschnittstelle 239 austauschen. Ausführungsformen der Erfindung können sich in jedem beliebigen Verarbeitungselement mit jeder beliebigen Anzahl von Verarbeitungskernen befinden. Gemäß einer Ausführungsform kann ein beliebiger Prozessorkern einen lokalen Cachespeicher (nicht gezeigt) aufweisen oder auf andere Weise mit diesem verbunden sein. Darüber hinaus kann ein gemeinsamer Cache (nicht gezeigt) in einem der Prozessoren außerhalb beider Prozessoren enthalten sein oder mit den Prozessoren über einen P2P-Interconnect verbunden sein, so dass lokale Cacheinformationen entweder eines oder beider Prozessoren in dem gemeinsamen Speicher gespeichert werden können, wenn ein Prozessor in einen Niedrigenergiemodus versetzt wird. Ein ersten Verarbeitungselement 270 und ein zweites Verarbeitungselement 280 können mit einem Chipsatz 290 über P-P-Interconnects 276, 286 bzw. 284 gekoppelt sein. Wie in 2 gezeigt ist, weist ein Chipsatz 290 P-P-Schnittstellen 294 und 298 auf. Darüber hinaus weist der Chipsatz 290 eine Schnittstelle 292 auf, um den Chipsatz 290 mit einer Hochleistungsgrafikmaschine 248 zu koppeln. Gemäß einer Ausführungsform kann der Bus 249 verwendet werden, um die Grafikmaschine 248 mit dem Chipsatz 290 zu koppeln. Alternativ kann ein Punkt-zu-Punkt-Interconnect 249 diese Komponenten koppeln. Der Chipsatz 290 kann wiederum mit einem ersten Bus 216 über eine Schnittstelle 296 gekoppelt sein. Gemäß einer anderen Ausführungsform kann der erste Bus 216 ein Peripheral Component Interconnect(PCI)-Bus oder ein Bus, wie beispielsweise ein PCI-Express-Bus oder ein anderer E/A-Interconnect-Bus der dritten Generation sein, obwohl der Umfang der vorliegenden Erfindung diesbezüglich nicht beschränkt ist.
-
Wie in der 2 gezeigt ist, können verschiedene E/A-Vorrichtungen 214 mit dem ersten Bus 216 zusammen mit einer Busbrücke 218 gekoppelt sein, die den ersten Bus 216 mit einem zweiten Bus 220 koppelt. Gemäß einer Ausführungsform kann der zweite 220 ein Bus mit niedrigem Pinzählwert (LPC) sein. Verschiedene Vorrichtungen können mit dem zweiten Bus 220 einschließlich von beispielsweise einer Tastatur/Maus 222, Kommunikationsvorrichtungen 226 und einer Datenspeichereinheit 228, wie beispielsweise einem Plattenlaufwerk oder einer anderen Massenspeichervorrichtung gekoppelt sein, die den Code 230 aufweisen kann, gemäß einer Ausführungsform. Darüber hinaus kann ein Audio-E/A 224 mit dem zweiten Bus 220 gekoppelt sein. Man beachte, dass andere Architekturen möglich sind. Beispielsweise kann ein System anstelle der Punkt-zu-Punkt-Architektur einen Multi-Drop-Bus oder eine andere derartige Architektur implementieren.
-
Gemäß einer Ausführungsform kann das Verarbeitungselement 270 einen MCH 272 aufweisen, der eine zweckbestimmte Schnittstelle 273 aufweist. Es ist zu beachten, dass andere Verarbeitungselemente MCHs aufweisen können, die auf ähnliche Weise zweckbestimmte Schnittstellen aufweisen (z. B. die zweckbestimmte Schnittstelle 283 des Verarbeitungselements 280). Wie beschrieben werden wird, kann die zweckbestimmte Schnittstelle 273 des MCH 272 verwendet werden, um Software eines Computersystems 200 zu testen, um eine Systemadresse zu programmieren, in die ein Fehler injiziert sein soll, und kann ein Maskenregister aufweisen, um auszuwählen, welche Art von Fehler injiziert werden soll.
-
Im Folgenden wird auf 3 Bezug genommen, in der ein Blockdiagramm der für den MCH-zweckbestimmten Schnittstelle 273 gezeigt ist, gemäß einer Ausführungsform der Erfindung. Bei einer Ausführungsform weist die für den MCH zweckbestimmte Schnittstelle 273 ein Fehlerinjektionssystemadressregister 302 und ein Fehlerinjektionsmaskenregister 330 auf, das mit dem Fehlerinjektionssystemadressregister gekoppelt ist. Falls das Fehlerinjektionssystemadressregister 302 eine Systemadresse aufweist, die mit einer hereinkommenden Schreibadresse 325 übereinstimmt, gibt das Fehlerinjektionsmaskenregister 330 einen Fehler an den Speicher 350 aus.
-
Ein Überblick über die für den MCH zweckbestimmte Schnittstelle 273 wird nun angegeben. Wie in 3 gezeigt ist, wird ein Fehlerinjektionssystemadressregister 302 bereitgestellt, so dass eine Testsoftware eines Computersystems die gewünschte Systemadresse programmieren kann, wobei darin ein Fehler injiziert werden soll. Die Logik 310 ist auch dazu vorgesehen, um nach einer Übereinstimmung zwischen dieser programmierten Adresse und der Adresse 325 für hereinkommende Anforderungen zu suchen. Sobald die Systemadresse in das Fehlerinjektionssystemadressregister 302 programmiert wurde, kann die Testsoftware ein Schreiben in diese Systemadresse 325 ausführen. Eine Adressenübereinstimmung kann dann einen Fehler (z. B. Daten 333) in diesen Ort des Speichers 350 triggern. Der Art des Fehlers (korrigiert oder nicht korrigiert) kann durch eine Softwareprogrammierung des Fehlerinjektionsmaskenregisters 330 ausgewählt werden, welches steuert, welche Bits den Fehler enthalten sollen. Als ein Beispiel kann die für den MCH bestimmte Schnittstelle 273 mit dem MCH 272 des Verarbeitungselements 270 des Computersystems 200, das mit dem Speicher 232 verbunden ist, verwendet werden. Jedoch kann sie auch mit jedem beliebigen anderen Computersystem verwendet werden. Beispielsweise können Ausführungsformen der Erfindung mit dem Computersystem 100 aus 1 implementiert werden.
-
Als ein Beispiel kann, wie in 3 gezeigt ist für Sicherheitszwecke, ein Verriegelungsmechanismus 301 mit dem Fehlerinjektionssystemadressregister 302 gekoppelt sein. Als ein besonderes Beispiel kann der Verriegelungsmechanismus 301 während des Systemmanagementmodes (SMM) entriegelt sein. Die Testsoftware kann die Verriegelung 320, die durch den Inverter 322 zum UND-Gate 324 gekoppelt ist, entriegeln und kann ein Schreiben zum Register 321 und zum UND-Gate 324 übertragen. Auf diese Weise kann ein Gültig-Bit 304 im Fehlerinjektionssystemadressregister 302 gesetzt werden und das System ist entriegelt.
-
Wie zuvor beschrieben, kann die Testsoftware die Fehlerinjektionssystemadresse zum Fehlerinjektionssystemadressregister 302 liefern. Der Entscheidungslogikblock 310 wird verwendet, um nach einer Übereinstimmung zwischen der Testsoftwareprogrammschreibadresse 325 und der Fehlerinjektionssystemadresse 302 zu suchen. Insbesondere, wenn ein Schreibe-in-den-Speicher-Signal 309 und ein Gültig-Signal 304 durch das UND-Gate 306 empfangen werden, das ein Signal zum Entscheidungslogikblock 310 sendet, und der Entscheidungslogikblock 310 die Fehlerinjektionssystemadresse vom Register 302 mit der Testsoftwareprogrammschreibadresse 325 abgleicht, überträgt der Entscheidungslogikblock 310 ein Fehlerinjektionssignal 312 zum Fehlerinjektionsmaskenregister 330.
-
Daher kann die Testsoftware, sobald die Fehlerinjektionssystemadresse in das Register 302 programmiert wurde, ein Schreiben an die Systemadresse 325 durchführen und sobald eine Adressübereinstimmung durch den Entscheidungslogikblock 310 bestimmt wurde, kann der Entscheidungsblock 310 ein Fehlerinjektionssignal 312 triggern, das in diesen Ort durch das Fehlerinjektionsmaskenregister 330 injiziert wird. Der Typ von Fehler (korrigiert oder nicht korrigiert) kann durch die Testsoftware-Vorprogrammierung der Datenmaskenregister des Fehlerinjektionsmaskenregisters 330 ausgewählt werden, das steuert, welche Bits den Fehler enthalten sollen. Wie in 3 zu erkennen ist, kann ein Datenfehler 333 durch den Datenpuffer 340 zum Speicher 350 für Testzwecke übertragen werden.
-
Auf diese Weise ermöglicht diese zuvor beschriebene Struktur und Methodologie die Injektion von Speicherfehlern 333 (korrigiert oder nicht korrigiert) in den Speicher 350 zur Erfassung und Korrektur von Softwareproblemen durch Testsoftware des Computersystems 200.
-
Mit zusätzlicher Bezugnahme zu 4 zeigt 4 ein Ablaufdiagramm 400, das den Ablauf der Testsoftware und den Ablauf der für den MCH bestimmten Schnittstelle (z. B. Hardware(HW)-Ablauf) veranschaulicht. Wie in 4 zu sehen ist, entriegelt die Testsoftware den Verriegelungsmechanismus 301, wie zuvor beschrieben wurde (Kreis 402). Als nächstes programmiert die Testsoftware x in das Fehlerinjektionssystemadressregister 302 (Kreis 404). Es sollte verständlich sein, dass x die Systemadresse ist, an der die Testsoftware den Fehler injizieren möchte.
-
Als nächstes programmiert die Testsoftware das Fehlerinjektionsmaskenregister 330, um den gewünschten Fehler zu bewirken (Kreis 406). Weiter setzt die Testsoftware das Gültig-Bit 304, um die Hardwarelogik zur Injektion bereitzumachen (Kreis 408). Als nächstes führt die Testsoftware ein Schreiben in die Adresse x durch (Kreis 410).
-
Betrachtet man den Hardware-Ablauf oder den Ablauf der für den MCH bestimmten Schnittstelle, wird bestimmt, ob es dort einen Zugriff zum Schreiben in den Speicher gibt (Entscheidungskreis 320). Falls nicht, fährt die Transaktion mit kein-Fehler-injiziert fort (Kreis 422). Jedoch falls es ein Schreiben in den Speicher ist, wird bestimmt, ob der Zugriff auf die Adresse x erfolgt und ob der Mechanismus bereitgemacht ist (Entscheidungskreis 425). Falls nicht, fährt die Transaktion mit kein-Fehler-injiziert fort (Kreis 422).
-
Jedoch wenn der Mechanismus bereitgestellt ist und der Zugriff auf die Adresse x erfolgt (z. B. beispielsweise bestimmt durch den Steuerungslogikblock 310) kann die Fehlerinjektionsmaske 330 angewandt werden (Kreis 430). Bei diesem Beispiel werden Daten 333 in den Speicher 350 mit dem Fehler 434 geschrieben. Wie zuvor beschrieben, kann der Fehler-Typ (korrigiert oder nicht korrigiert) durch die Testsoftware-Vorprogrammierung der Datenmaskenregister des Fehlerinjektionsmaskenregister 330 ausgewählt werden, das steuert, welche Bits den Fehler enthalten.
-
Darüber hinaus kann die Testsoftware ein Lesen an der Adresse x ausführen (Kreis 450) und die Hardware kann einen Fehler erfassen (Kreis 452). Die Hardware kann den Fehler protokollieren und einen Fehler signalisieren (Kreis 454) und die Fehlerbehandlungssoftware kann den Fehler behandeln (Kreis 456).
-
Auf diese Weise ermöglicht die oben beschriebene Struktur und Methodologie die Injektion von Speicherfehlern (korrigiert oder nicht korrigiert) in einen Speicher zur Erfassung und Korrektur von Softwareproblemen durch Testsoftware eines Computersystems. Darüber hinaus kann eine Verwendung der Ausführungsformen der zweckbestimmten Schnittstelle und der Softwaremethodologie, die zuvor beschrieben wurden, verwendet werden, um Fehlerinjektionserfordernisse von Softwareanbietern zu befriedigen, wie beispielsweise von Anbietern von Betriebssystemen und Anbietern des Virtual-Maschine-Managements, sowie den ursprünglichen Ausrüstungsherstellern. Die zuvor beschriebene Erfindung stellt eine einfache Schnittstelle bereit, die speziell für eine Injektion von Fehlern in einen Speicher zum Testen entwickelt ist. Insbesondere ermöglicht die Methodologie Injektionen von Speicherfehlern (korrigiert und/oder nicht korrigiert) zur Erfassung und Korrektur. Zusammengefasst ermöglicht die zuvor beschriebene Struktur und Methodologie wahre Fehlerinjektionen in einen Speicher und ermöglicht eine Entwicklung und Validierung von Abläufen zur Fehlerbehebung.
-
Ausführungsformen der hierin beschriebenen Mechanismen können als Hardware, Software, Firmware oder als eine Kombination solcher Implementierungsansätze implementiert sein. Ausführungsformen der Erfindung können als Computerprogramme oder als ein Programmcode implementiert sein, der auf programmierbaren Systemen läuft, die zumindest einen Prozessor, ein Datenspeichersystem (einschließlich eines flüchtigen und nicht-flüchtigen Speichers und/oder von Speicherelementen), zumindest eine Eingabevorrichtung und zumindest eine Ausgabevorrichtung aufweisen.
-
Ein Programmcode kann auf Eingangsdaten angewandt werden, um die hierin beschriebenen Funktionen auszuführen und um eine Ausgangsinformation zu erzeugen. Die Ausgangsinformation kann auf eine oder mehrere Ausgangsvorrichtungen in bekannter Weise angewandt werden. Für die Zwecke dieser Anmeldung weist ein Verarbeitungssystem ein beliebiges System auf, das einen Prozessor, wie beispielsweise einen digitalen Signalprozessor (DSP), einen Mikrocontroller, eine anwendungsspezifische integrierte Schaltung (ASIC) oder einen Mikroprozessor aufweist.
-
Der Programmcode kann als eine verfahrensorientierte Programmiersprache einer hohen Ebene oder als eine objektorientierte Programmiersprache implementiert sein, um mit einem Verarbeitungssystem zu kommunizieren. Der Programmcode kann auch in Assembler oder Maschinensprache implementiert sein, falls dies gewünscht ist. Die hierin beschriebenen Mechanismen sind nicht hinsichtlich ihres Umfangs auf irgendeine bestimmte Programmiersprache beschränkt. In jedem Fall kann die Sprache eine kompilierte oder interpretierte Sprache sein.
-
Einer oder mehrere Aspekte von mindestens einer Ausführungsform können durch repräsentative Daten implementiert werden, die auf einem maschinenlesbaren Medium gespeichert sind, das verschiedene Logiken im Prozessor repräsentiert, die, wenn sie von einer Maschine gelesen werden, die Maschine dazu veranlassen, eine Logik herzustellen, um die hierin beschriebenen Techniken auszuführen. Solche Darstellungen, die als „IP Kerne” bekannt sind, können auf einem materiellen maschinenlesbaren Medium gespeichert und an verschiedene Verbraucher oder Herstellungseinrichtungen geliefert werden, um sie in die Herstellungsmaschinen zu laden, die die Logik oder den Prozessor tatsächlich herstellen. Solche maschinenlesbare Speichermedien können ohne Beschränkung nicht-transitorische materielle Anordnungen von Partikeln aufweisen, die durch eine Maschine oder Vorrichtung hergestellt oder gebildet wurden, einschließlich von Speichermedien, wie beispielsweise Festplatten, jedem anderen beliebigen Typ von Platte einschließlich von Floppy-Disks, optischen Platten, Compact-Disk-Read-Only-Memories (CD-ROMs), wiederbeschreibbaren Compact-Platten (CD-RWs) und magneto-optischen Platten, Halbleitervorrichtungen, wie beispielsweise Lese-Nur-Speichern (ROMs), Wahlzugriffsspeichern (RAMs), wie beispielsweisen dynamischen Wahlzugriffsspeichern (DRAMs), statischen Wahlzugriffsspeichern (SRAMs), löschbaren programmierbaren Lese-Nur-Speichern (EPROMs), Flash-Speichern, elektrisch löschbaren programmierbaren Lese-Nur-Speichern (EEPROMs), magnetischen oder optischen Karten oder jedes anderen beliebigen Typs eines Mediums, das sich für eine Speicherung elektronischer Befehle eignet.
-
Dementsprechend weisen Ausführungsformen der Erfindung auch nicht-transistorische materielle maschinenlesbare Speicher auf, die Befehle zur Durchführung der Operationen gemäß Ausführungsformen der Erfindung aufweisen oder die Gestaltungsdaten, wie beispielsweise HDL aufweisen, die Strukturen, Schaltungen, Vorrichtungen, Prozessoren und/oder Systemmerkmale, die hierin beschrieben wurden, definieren. Solche Ausführungsformen können auch als Programmprodukte bezeichnet werden.
-
Bestimmte Operationen der hierin offenbarten Befehle können durch Hardwarekomponenten ausgeführt werden und können als maschinen-lesbare Befehle verkörpert sein, die dazu verwendet werden, um eine Schaltung oder eine andere Hardwarekomponente, die mit den Befehlen programmiert ist, zu veranlassen die Operationen ausführen oder dazu zuführen. Die Schaltung kann einen Allzweck- oder Spezialzweckprozessor oder eine Logikschaltung aufweisen, um lediglich einige Beispiele zu nennen. Die Operationen können auch optional durch eine Kombination aus Hardware und Software ausgeführt werden. Eine Ausführungslogik und/oder ein Prozessor kann eine spezielle oder bestimmte Schaltung oder eine andere Logik aufweisen, die auf einen Maschinenbefehl oder eines oder mehrere Steuerungssignale reagiert, die von dem Maschinenbefehl abgeleitet sind, um einen befehlsspezifizierten Ergebnisoperanden zu speichern. Beispielsweise können die hierin offenbarten Ausführungsformen der Befehle in einem oder mehreren der Systeme aus 1 und 2 ausgeführt werden und Ausführungsformen der Befehle können in einem Programmcode gespeichert werden, der in den Systemen ausgeführt werden soll. Zusätzlich können die Verarbeitungselemente dieser Figuren eine der detaillierten Pipelines und/oder Architekturen verwenden (z. B. die In-Order und Out-Of-Order-Architekturen), die hierin in Einzelheiten dargelegt wurden. Beispielsweise kann die Dekodiereinheit der In-Order-Architektur die Befehle dekodieren, den dekodierten Befehl zu einer Vektor- oder einer Skalar-Einheit usw. weitergeben.
-
Durchgängig durch die vorangehende Beschreibung wurden für den Zweck der Erläuterung verschiedene spezielle Einzelheiten dargelegt, um ein umfassendes Verständnis der Erfindung zu gewährleisten. Es ist jedoch für den Fachmann verständlich, dass die Erfindung ohne einige dieser speziellen Einzelheiten praktiziert werden kann. Dementsprechend soll der Umfang und die Idee der Erfindung anhand der folgenden Ansprüche beurteilt werden.