DE112011105692T5 - Verfahren und eine Vorrichtung zur Injektion von Fehlern in einen Speicherhintergrund - Google Patents

Verfahren und eine Vorrichtung zur Injektion von Fehlern in einen Speicherhintergrund Download PDF

Info

Publication number
DE112011105692T5
DE112011105692T5 DE112011105692.3T DE112011105692T DE112011105692T5 DE 112011105692 T5 DE112011105692 T5 DE 112011105692T5 DE 112011105692 T DE112011105692 T DE 112011105692T DE 112011105692 T5 DE112011105692 T5 DE 112011105692T5
Authority
DE
Germany
Prior art keywords
error
error injection
register
memory
system address
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
DE112011105692.3T
Other languages
English (en)
Inventor
Kai Cheng
Gopikrishna Jandhyala
Theodros Yigzaw
Jose A. Vargas
Mohan J. Kumar
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE112011105692T5 publication Critical patent/DE112011105692T5/de
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/26Functional testing
    • G06F11/263Generation of test inputs, e.g. test vectors, patterns or sequences ; with adaptation of the tested hardware for testability with external testers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3664Environments for testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Detection And Correction Of Errors (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)

Abstract

Offenbart werden eine Vorrichtung und ein Verfahren zum Injizieren von Fehlern in einen Speicher. Gemäß einer Ausführungsform weist eine zweckbestimmte Schnittstelle ein Fehlerinjektionssystemadressregister und ein Fehlerinjektionsmaskierungsregister auf, das mit dem Fehlerinjektionssystemadressregister gekoppelt ist. Falls das Fehlerinjektionssystemadressregister eine Systemadresse aufweist, die mit einer hereinkommenden Schreibadresse übereinstimmt, gibt das Fehlerinjektionsmaskierungsregister einen Fehler an den Speicher aus.

Description

  • 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.

Claims (22)

  1. Vorrichtung zur Injektion von Fehlern in einen Speicher, aufweisend: ein Fehlerinjektionssystemadressregister; und ein Fehlerinjektionsmaskierungsregister, das mit dem Fehlerinjektionssystemadressregister gekoppelt ist, wobei, wenn das Fehlerinjektionssystemadressregister eine Systemadresse aufweist, die mit einer hereinkommenden Schreibadresse übereinstimmt, das Fehlerinjektionsmaskierungsregister einen Fehler an den Speicher ausgibt.
  2. Vorrichtung nach Anspruch 1, wobei die Vorrichtung eine Komponente eines Speichersteuerungshubs (MCH) eines Prozessors ist.
  3. Vorrichtung nach Anspruch 1, wobei das Fehlerinjektionsmaskierungsregister mit dem Fehler vorprogrammiert ist.
  4. Vorrichtung nach Anspruch 3, wobei der Fehler zumindest einen von einem korrigierten Fehler und einem nicht korrigierten Fehler aufweist.
  5. Vorrichtung nach Anspruch 1, die weiter einen Verriegelungsmechanismus aufweist, der mit dem Fehlerinjektionssystemadressregister gekoppelt ist, wobei der Verriegelungsmechanismus vorgesehen ist, um das Fehlerinjektionssystemadressregister zu verriegeln oder zu entriegeln, so dass das Fehlerinjektionsmaskierungsregister aktiviert ist, um den Fehler an den Speicher auszugeben bzw. deaktiviert ist, um den Fehler an den Speicher auszugeben.
  6. Vorrichtung nach Anspruch 5, wobei der Verriegelungsmechanismus weiter ein Gültig-Bit des Fehlerinjektionssystemadressregisters aufweist.
  7. Vorrichtung nach Anspruch 5, die weiter einen Logikblock aufweist, wobei der Logikblock ein Fehlerinjektionssignal zum Fehlerinjektionsmaskierungsregister überträgt, so dass das Fehlerinjektionsmaskierungsregister den Fehler an den Speicher ausgibt.
  8. Vorrichtung nach Anspruch 7, wobei der Logikblock das Fehlerinjektionssignal an das Fehlerinjektionsmaskierungsregister ausgibt, falls der Verriegelungsmechanismus entriegelt ist und die Systemadresse mit der hereinkommenden Schreibadresse übereinstimmt.
  9. Computersystem, aufweisend: einen Speicher; einen Prozessor zur Bearbeitung von Instruktionen; und einen Speichercontrollerhub (MCH), der eine zweckbestimmte Schnittstelle aufweist, um einen Fehler in den Speicher zu injizieren, wobei die zweckbestimmte Schnittstelle aufweist: ein Fehlerinjektionssystemadressregister; und ein Fehlerinjektionsmaskierungsregister, das mit dem Fehlerinjektionssystemadressregister gekoppelt ist, wobei, wenn das Fehlerinjektionssystemadressregister eine Systemadresse aufweist, die mit einer hereinkommenden Schreibadresse übereinstimmt, das Fehlerinjektionsmaskierungsregister den Fehler an den Speicher ausgibt.
  10. Computersystem nach Anspruch 9, wobei das Fehlerinjektionsmaskierungsregister mit dem Fehler vorprogrammiert ist.
  11. Computersystem nach Anspruch 10, wobei der Fehler zumindest einen von einem korrigierten Fehler und einem nicht korrigierten Fehler aufweist.
  12. Computersystem nach Anspruch 9, das weiter einen Verriegelungsmechanismus aufweist, der mit dem Fehlerinjektionssystemadressregister gekoppelt ist, wobei der Verriegelungsmechanismus vorgesehen ist, um das Fehlerinjektionssystemadressregister zu verriegeln oder zu entriegeln, so dass das Fehlerinjektionsmaskierungsregister aktiviert ist, um den Fehler an den Speicher auszugeben bzw. deaktiviert ist, um den Fehler an den Speicher auszugeben.
  13. Computersystem nach Anspruch 12, wobei der Verriegelungsmechanismus weiter ein Gültig-Bit des Fehlerinjektionssystemadressregisters aufweist.
  14. Computersystem nach Anspruch 12, das weiter einen Logikblock aufweist, wobei der Logikblock ein Fehlerinjektionssignal an das Fehlerinjektionsmaskierungsregister sendet, so dass das Fehlerinjektionsmaskierungsregister den Fehler an den Speicher ausgibt.
  15. Computersystem nach Anspruch 14, wobei der Logikblock das Fehlerinjektionssignal an das Fehlerinjektionsmaskierungsregister sendet, wenn der Verriegelungsmechanismus entriegelt ist und die Systemadresse mit der hereinkommenden Schreibadresse übereinstimmt.
  16. Verfahren zum Injizieren von Fehlern in einen Speicher, aufweisend: Empfangen einer Systemadresse von einer Testsoftware an einem Fehlerinjektionssystemadressregister; Bestimmen, ob die Systemadresse des Fehlerinjektionssystemadressregisters mit einer hereinkommenden Schreibadresse übereinstimmt; und falls die Systemadresse mit der hereinkommenden Schreibadresse übereinstimmt, Befehligen eines Fehlerinjektionsmaskierungsregisters, einen Fehler an den Speicher auszugeben.
  17. Verfahren nach Anspruch 16, das weiter ein Vorprogrammieren des Fehlerinjektionsmaskierungsregisters mit dem Fehler aufweist.
  18. Verfahren nach Anspruch 17, wobei der Fehler zumindest einen von einem korrigierten Fehler und einem nicht korrigierten Fehler aufweist.
  19. Verfahren nach Anspruch 16, wobei ein Verriegelungsmechanismus mit dem Fehlerinjektionssystemadressregister gekoppelt ist, wobei der Verriegelungsmechanismus vorgesehen ist, um das Fehlerinjektionssystemadressregister zu verriegeln oder zu entriegeln, so dass das Fehlerinjektionsmaskierungsregister aktiviert ist, um den Fehler an den Speicher auszugeben bzw. deaktiviert ist, um den Fehler an den Speicher auszugeben.
  20. Verfahren nach Anspruch 19, wobei der Verriegelungsmechanismus weiter ein Gültig-Bit des Fehlerinjektionssystemadressregisters aufweist.
  21. Verfahren nach Anspruch 19, das weiter ein Übertragen eines Fehlerinjektionssignals an das Fehlerinjektionsmaskierungsregister aufweist, so dass das Fehlerinjektionsmaskierungsregister den Fehler an den Speicher ausgibt.
  22. Verfahren nach Anspruch 21, das weiter ein Übertragen des Fehlerinjektionssignals an das Fehlerinjektionsmaskierungsregister aufweist, wenn der Verriegelungsmechanismus entriegelt ist und die Systemadresse mit der hereinkommenden Schreibadresse übereinstimmt.
DE112011105692.3T 2011-09-29 2011-09-29 Verfahren und eine Vorrichtung zur Injektion von Fehlern in einen Speicherhintergrund Withdrawn DE112011105692T5 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2011/053956 WO2013048406A1 (en) 2011-09-29 2011-09-29 Method and apparatus for injecting errors into memory

Publications (1)

Publication Number Publication Date
DE112011105692T5 true DE112011105692T5 (de) 2014-07-24

Family

ID=47996149

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112011105692.3T Withdrawn DE112011105692T5 (de) 2011-09-29 2011-09-29 Verfahren und eine Vorrichtung zur Injektion von Fehlern in einen Speicherhintergrund

Country Status (8)

Country Link
US (1) US9405646B2 (de)
JP (1) JP2014531681A (de)
KR (1) KR101732557B1 (de)
CN (1) CN103890733B (de)
BR (1) BR112014007425A2 (de)
DE (1) DE112011105692T5 (de)
GB (1) GB2509849B (de)
WO (1) WO2013048406A1 (de)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017131639A1 (en) 2016-01-26 2017-08-03 1/1Hewlett Packard Enterprise Development Lp Dram-level error injection and tracking
US10691572B2 (en) 2017-08-30 2020-06-23 Nvidia Corporation Liveness as a factor to evaluate memory vulnerability to soft errors
CN107729231B (zh) * 2017-09-19 2021-02-02 北京东土科技股份有限公司 一种基于操作系统的故障注入方法及装置
KR102388803B1 (ko) * 2017-11-02 2022-04-20 삼성전자주식회사 반도체 메모리 장치, 이를 포함하는 메모리 시스템 및 반도체 메모리 장치의 동작 방법
CN108959049B (zh) * 2018-06-27 2021-12-17 郑州云海信息技术有限公司 Smm的健壮性和稳定性的测试方法、装置及存储介质
US10922203B1 (en) 2018-09-21 2021-02-16 Nvidia Corporation Fault injection architecture for resilient GPU computing
KR20210149445A (ko) 2020-06-02 2021-12-09 삼성전자주식회사 메모리 모듈 및 메모리 모듈의 동작 방법
US11983100B2 (en) * 2020-09-29 2024-05-14 Amazon Technologies, Inc. Automated testing of systems and applications
CN112349343A (zh) * 2020-11-06 2021-02-09 海光信息技术股份有限公司 电路结构、芯片以及电子设备
CN115019862A (zh) * 2021-03-04 2022-09-06 瑞昱半导体股份有限公司 静态随机存取存储器的纠错电路的验证方法
CN113064782B (zh) * 2021-03-22 2023-03-24 山东英信计算机技术有限公司 一种内存注错自动化系统、使用方法及介质

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4759019A (en) * 1986-07-10 1988-07-19 International Business Machines Corporation Programmable fault injection tool
JPH05134018A (ja) * 1991-11-13 1993-05-28 Nec Ibaraki Ltd 擬障方式
JP3512442B2 (ja) * 1993-08-31 2004-03-29 富士通株式会社 記憶装置の試験用エラー発生制御装置
US5671352A (en) * 1995-07-07 1997-09-23 Sun Microsystems, Inc. Error injection to a behavioral model
US5875195A (en) * 1997-03-31 1999-02-23 International Business Machines Corporation Method and apparatus for error injection techniques
JPH10312337A (ja) * 1997-05-12 1998-11-24 Kofu Nippon Denki Kk 記憶装置の試験回路
US7587639B2 (en) * 2004-11-09 2009-09-08 Intel Corporation System and method for error injection using a flexible program interface field
CN100350390C (zh) * 2006-11-29 2007-11-21 哈尔滨工业大学 容错计算机系统的搭接式故障注入装置及方法
US7818626B1 (en) 2007-01-12 2010-10-19 Oracle America, Inc. Memory error injector and associated methods
US8065573B2 (en) 2007-03-26 2011-11-22 Cray Inc. Method and apparatus for tracking, reporting and correcting single-bit memory errors
US8522080B2 (en) * 2008-03-24 2013-08-27 Emulex Design & Manufacturing Corporation Generation of simulated errors for high-level system validation
JP2010225239A (ja) * 2009-03-24 2010-10-07 Toshiba Corp 半導体集積回路およびメモリの機能検証方法
US20110161592A1 (en) 2009-12-31 2011-06-30 Nachimuthu Murugasamy K Dynamic system reconfiguration

Also Published As

Publication number Publication date
WO2013048406A1 (en) 2013-04-04
BR112014007425A2 (pt) 2017-04-04
CN103890733B (zh) 2018-05-15
JP2014531681A (ja) 2014-11-27
US9405646B2 (en) 2016-08-02
GB2509849A (en) 2014-07-16
CN103890733A (zh) 2014-06-25
KR20140057369A (ko) 2014-05-12
US20130275810A1 (en) 2013-10-17
GB2509849B (en) 2021-02-03
GB201405276D0 (en) 2014-05-07
KR101732557B1 (ko) 2017-05-04

Similar Documents

Publication Publication Date Title
DE112011105692T5 (de) Verfahren und eine Vorrichtung zur Injektion von Fehlern in einen Speicherhintergrund
DE10394383B4 (de) Verfahren und Vorrichtung zum Laden eines vertrauenswürdigen Betriebssystems
DE102012224363B4 (de) Informationsverarbeitungssystem mit Hardware- und Softwarevorablesezugriff
DE112010004971T5 (de) Ein System, Verfahren und eine Vorrichtung für einen Cache-Flush eines Seitenbereichs und TLB Invalidierung eines Bereichs von Einträgen
DE102014003705A1 (de) Prozessoren, Verfahren und Systeme zur Befehlsemulation
DE102014003690A1 (de) Prozessoren, Verfahren und Systeme zur Befehlsemulation
DE112016005823T5 (de) Überwachen des betriebs eines prozessors
DE2619159A1 (de) Fehlererkennungs- und korrektureinrichtung
DE102010054614A1 (de) Eindringen in eine gesicherte EDV-Umgebung unter Verwendung mehrerer authentifizierter Codemodule
DE112012007088B4 (de) Vorrichtung, verfahren und system mit einem befehl zum reduzieren von elementen in einem vektorregister mit einem schrittweisem zugriffsmuster
DE102014003798A1 (de) Verfahren zum Booten eines heterogenen Systems und Präsentieren einer symmetrischen Kernansicht
DE112013005338T5 (de) Vorrichtung und Verfahren für Beschleunigeraufruf mit geringer Latenz
DE102008012337A1 (de) Programmcode-Trace-Signatur
DE102011108933A1 (de) Sichere Speicherung durch interneBetriebssicherstellung
DE102008061062A1 (de) Befehle und Logik zum Durchführen von Maskenlade- und -speicheroperationen
DE112013004783T5 (de) Durch Lese- und Schreibmasken gesteuerter Vektor-Verschiebebefehl
DE102018002294A1 (de) Effizientes bereichsbasiertes speicher-rückschreiben zum verbessern der host-zu-geräte-kommunikation für optimale energie und leistung
DE102020129549A1 (de) Leistungsüberwachung in heterogenen systemen
DE112019006898T5 (de) Dynamisches umschalten zwischen ept- und schattenseitentabellen zur laufzeitprozessorverifikation
DE112007003015T5 (de) Verfahren und Vorrichtung zur Cache-gestützten Fehlerdetektion und -korrektur in einem Speicher
DE112017001700T5 (de) Prozessoren, Verfahren, Systeme und Anweisungen zum Abruf von Daten auf der angegebenen Cache-Ebene mit garantiertem Abschluss
DE202019005683U1 (de) Prozessorkern mit Unterstützung einer Befehlssatzarchitektur für heterogene Systeme
DE112011103197T5 (de) Verfahren und Vorrichtung für universelle logische Operationen
DE102015222096A1 (de) Schaltung, System und Verfahren zum Speicher-Patchen
DE102022107196A1 (de) Sichere direkte Peer-to-Peer-Speicherzugriffsanforderung zwischen Geräten

Legal Events

Date Code Title Description
R082 Change of representative

Representative=s name: BOEHMERT & BOEHMERT, DE

Representative=s name: BOEHMERT & BOEHMERT ANWALTSPARTNERSCHAFT MBB -, DE

R083 Amendment of/additions to inventor(s)
R012 Request for examination validly filed

Effective date: 20140327

R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee