-
TECHNISCHES GEBIET
-
Ausführungsbeispiele beziehen sich auf Zwei-Die-Systeme-auf-einem-Chip (SoC; Systems on a Chip) für funktionale Sicherheitsanwendungen. Einige Ausführungsbeispiele beziehen sich auf ein SoC mit mehreren Dies, die Sicherheitsintegritätslevel (SILs; Safety Integration Levels), Hardware-Fehlertoleranz (HFT; Hardware Fault Tolerance) und/oder funktionale Sicherheit (FuSa, functional safety) für externe Anwendungen bereitstellen, die auf einem gepaarten SoC implementiert sind.
-
HINTERGRUND
-
Viele Anwendungen erfordern ein SIL und eine HFT. Beispielsweise erfordern einige Anwendungen, dass sie in 90 % der Zeit sicher fehlschlagen, wenn ein Systemfehler vorliegt. Der Entwickler möchte die Kosten und die Komplexität reduzieren, die erforderlich sind, um einer Anwendung ein SIL und eine HFT bereitzustellen. Es kann zeitaufwendig sein und zusätzliche Hardware für den Entwickler einer Anwendung erfordern, ein SIL und eine HFT bereitzustellen. Zusätzlich kann das Bereitstellen eines SIL und einer HFT über die Implementierung der Anwendung hinaus zusätzliche Fähigkeiten erfordern.
-
Figurenliste
-
Die vorliegende Offenbarung ist beispielhaft und nicht einschränkend in den Figuren der beiliegenden Zeichnungen dargestellt, in denen gleiche Bezugszeichen ähnliche Elemente anzeigen und in denen:
- 1 gemäß einigen Ausführungsbeispielen ein System mit einer zwei-Die-Architektur darstellt,
- 2 gemäß einigen Ausführungsbeispielen eine Vorrichtung darstellt;
- 3 gemäß einigen Ausführungsbeispielen eine 1oo2 Sicherer-Zustand-Systemlogik darstellt;
- 4 gemäß einigen Ausführungsbeispielen eine 1oo2 Architektur ist;
- 5 gemäß einigen Ausführungsbeispielen ein System mit einer zwei-Die-Architektur darstellt,
- 6 gemäß einigen Ausführungsbeispielen eine 1oo2D Sicherer-Zustand-Systemlogik darstellt;
- 7 gemäß einigen Ausführungsbeispielen eine 1oo2D Architektur ist;
- 8 gemäß einigen Ausführungsbeispielen ein Verfahren für Hardware-Fehlertoleranz darstellt;
- 9A-9B gemäß einem Ausführungsbeispiel Blockdiagramme sind, die ein generisches, vektorfreundliches Anweisungsformat und dessen Anweisungsvorlagen darstellen;
- 10A-10D gemäß einem Ausführungsbeispiel Blockdiagramme sind, die ein spezifisches vektorfreundliches Anweisungsformat darstellen;
- 11 gemäß einem Ausführungsbeispiel ein Blockdiagramm einer Registerarchitektur ist;
- 12A gemäß einem Ausführungsbeispiel ein Blockdiagramm ist, das sowohl eine In-Order- (in Reihenfolge) Pipeline als auch eine Registerumbenennung-, Out-of-Order- (außerhalb der Reihenfolge) Ausgabe/Ausführungs-Pipeline darstellt;
- 12B gemäß einem Ausführungsbeispiel eine Blockdiagramm ist, das sowohl einen In-Order Architektur-Kern als auch eine Registerumbenennung-, Out-of-Order Ausgabe/Ausführungs-Architektur darstellt, die in einem Prozessor umfasst sein soll, darstellt;
- 13A-13B Blockdiagramme einer spezifischeren In-Order-Kernarchitektur, wobei der Kern gemäß einem Ausführungsbeispiel einer von mehreren Logikblöcken (umfassend andere Kerne desselben Typs und/oder unterschiedlicher Typen) in einem Chip wäre;
- 14 gemäß einem Ausführungsbeispiel ein Blockdiagramm eines Prozessors ist, der mehr als einen Kern aufweisen kann, eine integrierte Speichersteuerung aufweisen kann und integrierte Grafik aufweisen kann;
- 15-18 gemäß einem Ausführungsbeispiel Blockdiagramme von Computer-Architekturen sind;
- 19 gemäß einem Ausführungsbeispiel ein Blockdiagramm ist, das die Verwendung eines Software-Anweisungsumwandlers zum Umwandeln von binären Anweisungen in einem Quell-Anweisungssatz zu binären Anweisungen in einem Ziel-Anweisungssatz kontrastiert; und
- 20 gemäß einem Ausführungsbeispiel ein Blockdiagramm ist, das eine beispielhafte Maschine darstellt, auf der irgendeine oder mehrere der Techniken (z. B. Methodologien), die hierin erörtert sind, ausgeführt werden können.
-
BESCHREIBUNG
-
Die folgende Beschreibung und die Zeichnungen stellen bestimmte Ausführungsbeispiele ausreichend dar, um es Fachleuten zu ermöglichen, diese auszuführen. Andere Ausführungsbeispiele können strukturelle, logische, elektrische, prozessuale und andere Änderungen umfassen. Abschnitte und Merkmale einiger Ausführungsbeispiele können bei anderen Ausführungsbeispielen umfasst sein oder gegen solche aus anderen Ausführungsbeispielen ausgetauscht werden. Die in den Ansprüchen dargelegten Ausführungsbeispiele umfassen alle verfügbaren Entsprechungen dieser Ansprüche.
-
Es werden Systeme, computerlesbare Medien und Verfahren für ein Zwei-Die-SoC bereitgestellt, das SILs und/oder HFTs bereitstellt. Bei einigen Ausführungsbeispielen ist ein SoC eine integrierte Schaltung (IC), die einige oder alle Komponenten eines Computers oder eines elektronischen Systems in einen einzelnen Chip integriert. Einige Ausführungsbeispiele umfassen zwei Kanäle, die auf unterschiedlichen SoCs implementiert sind (z.B. kann dieselbe Anwendung auf zwei unterschiedlichen Chips implementiert sein), wobei eines der SoCs eine Diagnose und Schaltungslogik bereitstellt, um bei einem fehlerhaften Kanal die Kanäle umzuschalten. Einige Ausführungsbeispiele umfassen ein Abschalten (de-energizing) eines Eingangs-/Ausgangs- (I/O; input/output) Kanals (z.B. Sensoreingang und Aktorausgang) und/oder das Stoppen der Kommunikation mit Aktoren, wenn Fehler anzeigen, dass der Ausgang von einem der beiden Kanäle fehlerhaft ist. Einige Ausführungsbeispiele umfassen das Abschalten eines I/O-Kanals und/oder das Stoppen der Kommunikation mit Aktoren, wenn Fehler anzeigen, dass der Ausgang von beiden Kanälen fehlerhaft ist.
-
Ein Zwei-Die-SoC, z.B. eine primäre Vorrichtung, stellt FuSa bereit, wobei ein zweiter Die der primären Vorrichtung einen integrierten Sicherheitsmonitor mit Quervergleichsfähigkeit umfasst, der sicherheitsrelevante Sicherheiten wie Firmware- (FW) / Software- (SW) und Hardware-Schnittstellen (HW) für ein sekundäres SoC, z.B. eine sekundäre Vorrichtung, bereitstellt, um mit der primären Vorrichtung zusammenzupassen und mit derselben zu koppeln, und ein erster Die der primären Vorrichtung eine Anwendung ausführt, die auf der sekundären Vorrichtung dupliziert wird.
-
Ein technisches Problem besteht darin, wie ein SIL für eine Anwendung bereitgestellt werden kann, die die Komplexität reduziert, die für die Implementierung des SIL für die Anwendung erforderlich ist. Einige Ausführungsbeispiele ermöglichen die Unterstützung eines SIL auf einem SoC mit zwei Dies, z. B. eine primäre Vorrichtung, die mit einer sekundären Vorrichtung z. B. einem sekundären SoC, zusammenpasst. Bei einigen Ausführungsbeispielen ermöglicht ein Zwei-Die-SoC Systemintegratoren die einfachere Implementierung eines HFT>0-Systems zur Erfüllung höherer SIL-Standards, indem eine sekundäre Vorrichtung mit einer primären Vorrichtung gekoppelt wird.
-
Die Anwendung wird auf der primären Vorrichtung ausgeführt oder betrieben und separat, z.B. dupliziert, auf der sekundären Vorrichtung, z.B. dem SoC eines Entwicklers. Die primäre Vorrichtung stellt die Funktionalität bereit, z.B. Hardware und Software/Firmware, um das SIL und/oder die HFT zu implementieren. Ein Plattformintegrator muss das SIL und/oder die HFT nicht separat implementieren, sondern bringt eher das SoC, das die Anwendung betreibt, an die primäre Vorrichtung an. Die primäre Vorrichtung stellt 1oo2 oder 1oo2D für die Anwendung bereit, gemäß einigen Ausführungsbeispielen. Die primäre Vorrichtung, z.B. ein Zwei-Die-SoC, wird im Hinblick auf die sekundäre Vorrichtung integriert, z.B. einen anderen SoC, um die 1oo2 und 1oo2D Anwendungsstandards zu erfüllen. Für 1oo2 kann die sekundäre Vorrichtung, z.B. SoC, gemäß einigen Ausführungsbeispielen nicht FuSa-zertifiziert und ein handelsübliches Teil sein.
-
Die primäre Vorrichtung ist konform (oder zertifiziert) im Hinblick auf die Internationale Elektrotechnische Kommission (IEC; International Electrotechnical Commission) 61508 und/oder ISO26262 Automobil, gemäß einigen Ausführungsbeispielen. Die Anwendung, z.B. eine Sicherheitsanwendung, wird sowohl auf der primären Vorrichtung, z.B. einem der Dies eines Zwei-Die SoCs, als auch auf einer sekundären Vorrichtung, z.B. einem anderen SoC, ausgeführt. Bei einigen Ausführungsbeispielen können sekundäre Vorrichtungen mit höherer Performance verwendet werden, um andere Anwendungen auszuführen und gleichzeitig ein SIL für die Sicherheitsanwendung bereitzustellen. Eine unterschiedliche Implementierung von zwei Kanälen, z.B. die Anwendung, die sowohl auf der primären Vorrichtung als auch auf der sekundären Vorrichtung ausgeführt wird, reduziert die Abhängigkeit von systematischen Fehlervermeidungs- und Kontrollanforderungen, gemäß einigen Ausführungsbeispielen.
-
Einige Ausführungsbeispiele umfassen die Verwendung einer separaten Master-Steuerungseinheit (MCU; Master Control Unit) und zweier SoCs, die jeweils eine Kopie der Anwendung ausführen. Für die Anwendung wird eine spezifisch angepasste Lösung zur Kreuzüberwachung des Ausgangs und von Fehlern von den beiden SoCs entwickelt, um ein SIL und eine HFT, z.B. IEC 61508, bereitzustellen. Die Ausführungsbeispiele mit der separaten MCU erfordern oft eine externe Abstimmung durch die MCU und eine Überwachungslogik sowie eine spezifisch angepasste Software. Einige Ausführungsbeispiele beziehen sich auf eine Zwei-Die-SoC-Architektur mit integrierter Sicherheitsmonitor-IP und anderen eingebauten Sicherheitsmerkmalen, die eine einfachere Integration mit einem anderen SoC ermöglicht, um eine Hardware-Fehlertoleranz zu erreichen. Einige Ausführungsbeispiele beziehen sich im Allgemeinen auf funktionale Sicherheitsanwendungen. Einige Ausführungsbeispiele beziehen sich auf Anwendungen mit höherem Sicherheitsintegritätslevel, die HFT>0 unter Verwendung mehrerer redundanter Verarbeitungskanäle erfordern.
-
Bei einigen Ausführungsbeispielen kann die Konformität mit höheren funktionalen Sicherheitsanforderungen schwierig sein, z.B. SIL>=3 gemäß IEC61508-Standards. Um die IEC 61508-Standards zu erfüllen, umfassen Plattformen oft zwei separate (z. B. redundante) Verarbeitungskanäle, wobei sich jeder Verarbeitungskanal auf einem unabhängigen Bauelement (z. B. System-auf-Chip/SoC) befindet. Die Systemintegration einer Architektur mit Kreuzüberwachung umfasst häufig Hardware und Software, die für die Kreuzüberwachungs-Lösung spezifisch angepasst ist, was aufgrund der Komplexität der Entwicklung und Zertifizierung kostspielig sein kann. Zusätzlich umfasst spezifisch angepasste Hardware oft eine relativ hohe Komponentenanzahl (z.B. Materialliste/BOM; bill of material), und spezifisch angepasste Lösungen werden aufgrund von Änderungen der SoC-Technologie und Änderungen der funktionalen Sicherheitsstandards oft hinfällig. Bei einigen Ausführungsbeispielen existieren Sicherheitsfunktionen und nicht-Sicherheitsfunktionen nebeneinander, was es für Originalausrüstungshersteller (OEMs; original equipment manufacturers) oft schwierig macht, die Verarbeitungsanforderungen zu bestimmen.
-
1 stellt gemäß einigen Ausführungsbeispielen ein System 100 mit einer Zwei-Die-Architektur dar. Dargestellt in 1 ist die primäre Vorrichtung 102, die sekundäre Vorrichtung 104, die sichere Systemlogik 106, der Sensor- und Aktuator-Ein-/Ausgang (I/O) 2 108, der Sensor- und Aktuator-I/O 1 110, die Steuerung 112, der Sensor- und Aktuator-I/O 114 und die Verbindungen 150 bis 180. Der Die 1 115 und die sekundäre Vorrichtung 104 implementieren jeweils eine Anwendung 117, 227 und Die 2 125 überwacht die Aktivität, um ein SIL und eine HFT gemäß einigen Ausführungsbeispielen bereitzustellen. Der Die 1 115 und die sekundäre Vorrichtung 104 implementieren jeweils eine Anwendung 117, 127, und Die 2 125 überwacht die Aktivität, um Quervergleich und Diagnose zur Erfüllung der SIL-Spezifikationen gemäß einigen Ausführungsbeispielen bereitzustellen. Die Anwendung 117, 127 kann in Hardware, Software und/oder Firmware implementiert sein. Die Anwendung 117, 127 kann teilweise außerhalb des Dies 1 115 oder der sekundären Vorrichtung 104 implementiert sein. Die Verarbeitungslogik kann zusätzliche Komponenten außerhalb des Dies benötigen, um die Anwendung auszuführen. So kann beispielsweise jedes SoC einen externen DRAM benötigen. Zum Beispiel kann der DRAM 212 (von 2) Abschnitte der Implementierung der Anwendung 117, 127 umfassen. Die Anwendung 127 dupliziert die Funktionalität der Anwendung 117 für Redundanz oder zur Implementierung von HFT=1.
-
Die Anwendung 117, 127 nimmt den Eingang 119, 129 von Sensor und Aktuator I/O 114 und verarbeitet den Eingang 119, 129, um den Ausgang 121, 131 zu erzeugen (z.B. jeweils über Sensor und Aktuator I/O 1 110 und Sensor und Aktuator I/O 2 108). Die Anwendungen 117, 127 können separate Anwendungen sein. Die Anwendungen 117 und 127 können gemäß einigen Ausführungsbeispielen unterschiedlich implementiert werden. Die Anwendungen 117, 127 erzeugen jeweils Quervergleichsdaten 123, 133.
-
Die primäre Vorrichtung 102 umfasst Die 1 115 und Die 2 125. Der Die 1 115 umfasst die Verarbeitungslogik 116 und die Fehler 118. Der Die 2 125 umfasst den Sicherheitsmonitor 120, die Fehler 122 und die I/O-Schnittstelle 124. Die sekundäre Vorrichtung 104 umfasst die Verarbeitungslogik 126, die I/O-Schnittstelle 128 und die Fehler 130. Der Die 1 115 und der Die 2 125 sind Blöcke aus Halbleitermaterial, auf denen die Funktionsschaltung hergestellt wird, z.B. auf denen die Verarbeitungslogik 116, die Fehler 118, der Sicherheitsmonitor 120, die Fehler 122 und die I/O-Schnittstelle 124 hergestellt werden. Die primäre Vorrichtung 102 kann ein Siliziumchip sein, auf dem Die 1 115 und Die 2 125 hergestellt werden. Die primäre Vorrichtung 102 kann ein Package sein, das Die 1 115 und Die 2 125 integriert. Die primäre Vorrichtung 102 kann mehr als zwei Dies umfassen. Die sekundäre Vorrichtung 104 ist ein System-auf-einem-Chip (SoC). Die sekundäre Vorrichtung 104 kann mehrere Dies umfassen. Die sekundäre Vorrichtung 104 kann ein System auf einer Platine sein.
-
Der Die 1 115, der Die 2 125 und die sekundäre Vorrichtung 104 weisen getrennte Takte auf (z.B. unter Bezugnahme auf 2, Takt 208 und/oder unabhängige Taktquelle 222), gemäß einigen Ausführungsbeispielen. Der Die 1 115, der Die 2 125 und die sekundäre Vorrichtung 104 verfügen über eine separate Leistungsquelle (z.B. Leistung 204 und/oder externe VR/PMIC 206), gemäß einigen Ausführungsbeispielen. Der Die 1 115, der Die 2 125 und die sekundäre Vorrichtung 104 können jeweils zusätzliche Schnittstellen und Komponenten umfassen, z.B. wie in Verbindung mit 2 offenbart.
-
2 wird in Verbindung mit 1 offenbart. 2 stellt gemäß einigen Ausführungsbeispielen eine Vorrichtung 202 dar. Die Vorrichtung 202 kann ein Siliziumchip oder ein Abschnitt eines Siliziumchips sein, gemäß einigen Ausführungsbeispielen. Die Vorrichtung 202 kann eine Platine sein. Die Vorrichtung 202 umfasst eines oder mehrere von den Folgenden: Leistung 204, externer Spannungsregler (VR; voltage regulator)/ integrierte Leistungsmanagement-Schaltung (PMIC; power management integrated circuit) 206 Takt 208, Sicherung 210, separater dynamischer Direktzugriffsspeicher (RAM; dynamic random access) (DRAM; dynamic RAM) 212, Prozessor 214, Schnittstelle 216, statische RAM- (SRAM; static RAM) / DRAM-Steuerung 218, Sicherheitsmonitortakt 220, unabhängige Taktquelle 222 und andere Elemente 224. Die Leistung 204 kann eine Leistungsquelle sein, die Leistung für die Vorrichtung 202 bereitstellt. Der VR/PMIC 206 stellt Leistungs- und Leistungs-Zurücksetzen-Signale bereit. Der Takt 208 kann ein Takt sein, der Teil des Siliziumchips ist. Die Sicherung 210 kann eine oder mehrere Sicherungen sein. Der DRAM 212 kann ein externer Speicher sein. Der Prozessor 214 kann der Sicherheitsmonitor 120, die Verarbeitungslogik 116, 126 oder ein anderer Abschnitt eines Siliziumchips sein, der Funktionen ausführt.
-
Die Schnittstelle 216 kann eine oder mehrere Schnittstellen zwischen der Vorrichtung 202 und Elementen der Vorrichtung 202 sein, z.B. eine Schnittstelle für die I/O-Schnittstelle 124, 180, Fehler 118, 130, den Sicherheitsmonitor 120 und/oder die Verarbeitungslogik 116, 126.
-
Die SRAM/DRAM-Steuerung 218 stellt Speicher bereit, der Teil der Vorrichtung 202 sein kann. Die Unabhängige Taktquelle 222 ist eine Taktquelle, die von zumindest einem anderen Takt unabhängig ist, der von dem System 100 verwendet wird. Andere Elemente 224 können ein oder mehrere zusätzliche Elemente umfassen, die Teil der Vorrichtung 202 sind oder eine Schnittstelle zu der Vorrichtung 202 bilden, usw. Die primäre Vorrichtung 102, der Die 1 115, der Die 2 125 und/oder die sekundäre Vorrichtung 104 kann die Vorrichtung 202 sein, gemäß einigen Ausführungsbeispielen.
-
Erneut Bezug nehmend auf 1, sind die Verarbeitungslogik 116, die Verarbeitungslogik 126 und der Sicherheitsmonitor 120 sind zentrale Verarbeitungseinheit- (CPU; central processing unit) Kerne oder eine andere Art von Verarbeitungslogik (z.B. siehe 9-18), gemäß einigen Ausführungsbeispielen. Fehler 118, 130 und 122 überwachen jeweils den Die 1 115, die sekundäre Vorrichtung 104 und den Die 2 125 auf Fehler. Solche detektierten Fehler können Software-, Firmware- oder Hardware-Fehler sein. Die Fehler 118, 130, 122 sind in Hardware, Firmware und/oder Software implementiert. Fehler können basierend auf Überprüfungen der Hardware, Firmware und/oder Software detektiert werden, wie z.B. Fehlerkorrekturcodes (ECC; error correction codes), Parität, CRC, eingebauter Selbsttest (BIST; built-in seiftest) etc.
-
Die Fehlerdetektion 118 signalisiert dem Sicherheitsmonitor 120 Fehler über die Verbindung 161. Die Fehlerdetektion 122 signalisiert dem Sicherheitsmonitor 120 Fehler über die Verbindung 162. Die Fehlererkennung 130 signalisiert Fehler an den Sicherheitsmonitor 120 über 152B und/oder an die Verarbeitungslogik 116 über die Verbindung 152A. Bei einigen Ausführungsbeispielen signalisiert die Fehlerdetektion 130 Fehler an den Sicherheitsmonitor 120 über 152B, und es gibt keine Verbindung 152A. Bei einigen Ausführungsbeispielen signalisiert die Fehlerdetektion 130 Fehler an die Verarbeitungslogik 116 und es gibt keine Verbindung 152B. Wenn die Fehlerdetektion 130 Fehler an die Verarbeitungslogik 116 signalisiert, signalisiert die Verarbeitungslogik 116 die Fehler über die Verbindung 158 an den Sicherheitsmonitor 120, gemäß einigen Ausführungsbeispielen. Die Fehlerdetektion 118, 130 und/oder 122 kann unterschiedliche Verbindungen und/oder Pfade verwenden, um Fehler an den Sicherheitsmonitor 120 zu signalisiert, gemäß einigen Ausführungsbeispielen.
-
Die I/O-Schnittstelle 124 und I/O-Schnittstelle 128 sind jeweils Schnittstellen für Sensor und Aktuator I/O 1 110 und Sensor und Aktuator I/O 2 108. Die I/O-Schnittstelle 124 empfängt/sendet I/O-Daten von der/zu der Verarbeitungslogik 116 über die Verbindung 160. Die I/O-Schnittstelle 128 empfängt/sendet I/O-Daten von der/an die Verarbeitungslogik 126 über die Verbindung 150A. Die Verarbeitungslogik 126 empfängt Eingangsdaten von der Verarbeitungslogik 116 und sendet Ausgangsdaten über die Verbindung 150B an die Verarbeitungslogik 116, gemäß einigen Ausführungsbeispielen. Wenn die Verarbeitungslogik 116 Eingangsdaten von der I/O-Schnittstelle 124 über die Verbindung 160 empfängt, sendet die Verarbeitungslogik 116 Eingangsdaten an die Verarbeitungslogik 126 über die Verbindung 150B, gemäß einigen Ausführungsbeispielen.
-
Wenn die Verarbeitungslogik 116 Ausgangsdaten von der Verarbeitungslogik 126 über die Verbindung 150B empfängt, sendet die Verarbeitungslogik 116 Ausgangsdaten an die I/O-Schnittstelle 124. Bei einigen Ausführungsbeispielen kommuniziert die Verarbeitungslogik 126 I/O-Daten über die Verbindung 150A mit der I/O-Schnittstelle 128 und verwendet nicht die Verbindung 150B für I/O-Daten. Bei einigen Ausführungsbeispielen gibt es keine Verbindung 150B für die Kommunikation von I/O-Daten. Bei einigen Ausführungsbeispielen kommuniziert die Verarbeitungslogik 126 I/O-Daten über die Verbindung 150B und verwendet nicht die Verbindung 150A für I/O-Daten. Bei einigen Ausführungsbeispielen gibt es keine Verbindung 150A für die Kommunikation von I/O-Daten.
-
Bei einigen Ausführungsbeispielen kommuniziert die I/O-Schnittstelle 128 Eingangsdaten 129 und Ausgangsdaten 131 an Sensor- und Aktuator-I/O 114. Die Eingangsdaten 129 und die Ausgangsdaten 131 können über Sensor und Aktor I/O 2 108 und Steuerung 112 kommuniziert werden. Der Sensor- und Aktuator-I/O 2 108 und der Sensor- und Aktuator-I/O 1 110 können Verbindungen sein oder können Verbindungen umfassend Puffer und/oder Protokollunterstützung sein. Die Steuerung 112 kann steuern, ob Ausgangsdaten 121, 131 von Sensor- und Aktuator-I/O 1 110 über Verbindung 174 oder Ausgangsdaten von Sensor- und Aktuator-I/O 2 108 über Verbindung 176 für Ausgangsdaten für Sensor- und Aktuator-I/O 114 über Verbindung 178 ausgewählt werden. Bei einigen Ausführungsbeispielen bestimmt die Steuerung 112, den Ausgang über die Verbindung 178 abzuschalten und/oder die Kommunikation zu Aktuatoren zu stoppen. Die Eingangsdaten 119, 129 werden von Sensor- und Aktuator-I/O 114 über Verbindung 178 durch Steuerung 112 empfangen. Die Steuerung 112 sendet die Eingangsdaten 119, 129 an Sensor- und Aktuator-I/O 1 110 und Sensor- und Aktuator-I/O 2 108. Bei einigen Ausführungsbeispielen sendet die Steuerung 112 die Eingangsdaten 119, 129 möglicherweise nicht an einen oder beide der Sensor- und Aktuator-I/O 1 110 oder Sensor- und Aktuator-I/O 2 108. Die sichere Systemlogik 106 kann einen Zustand 113 umfassen. Der Zustand 113 kann das Ergebnis einer Logik sein, z.B. Tabelle 1. Der Zustand 113 kann dauerhaft sein, z.B. um die Verbindung 178 aufgrund von Fehlern abzuschalten und/oder die Kommunikation zu Aktuatoren zu stoppen.
-
Bei einigen Ausführungsbeispielen ist die Steuerung 112 Teil des Dies 2 125. Beispielsweise kann die I/O-Schnittstelle 124 mit dem Sensor- und Aktuator-I/O 114 verbunden sein und die I/O-Daten der Verarbeitungslogik 116 und der Verarbeitungslogik 126 können mit der Steuerung 112 verbunden sein. Beispielsweise kann die Verarbeitungslogik 126 Ausgangsdaten 131 über die Verbindung 150B an die Verarbeitungslogik 116 senden, und die Verarbeitungslogik 116 kann Ausgangsdaten 131 von der Verarbeitungslogik 126 senden und Daten 121 über die Verbindung 160 an die Steuerung 112 ausgeben.
-
Die Verbindung 160 kann in die Steuerung 112 einspeisen, wobei der Ausgang der Steuerung 112 in die I/O-Schnittstelle 124 geht. Es kann mehrere Steuerungen geben. Zum Beispiel kann eine Steuerung 112 vorliegen, so dass der Sicherheitsmonitor die Verbindung 160 abschalten und/oder die Kommunikation zu den Aktuatoren auf Verbindung 160 stoppen kann. Bei einigen Ausführungsbeispielen liegt die Steuerung 112 möglicherweise nicht vor, z. B. können Sensor- und Aktuator-I/O 2 108 eine Verbindung 175 zu Sensor- und Aktuator-I/O 114 aufweisen und Sensor- und Aktuator-I/O 1 110 können eine Verbindung 177 zu Sensor- und Aktuator-I/O 114 aufweisen.
-
3 wird in Verbindung mit 1 offenbart. 3 stellt gemäß einigen Ausführungsbeispielen eine 1oo2 Sicherer-Zustand-Systemlogik dar. In 3 wird der primäre Kanalfehler 302, der sekundäre Kanalfehler 304, der Quervergleichsfehler 306, OR 308 und der sichere Zustand 310 dargestellt. Der primäre Kanalfehler 302 ist ein Signal, das einen Fehler auf dem primären Kanal anzeigt. Zum Beispiel zeigt die Fehlerdetektion 118 (1) Fehler auf dem primären Kanal an. Der sekundäre Kanalfehler 304 ist ein Signal, das einen Fehler auf dem sekundären Kanal anzeigt. Zum Beispiel ist die Fehlerdetektion 130 ein Signal, das einen Fehler auf dem sekundären Kanal anzeigt, welcher an die Verarbeitungslogik 116 und/oder den Sicherheitsmonitor 120 gesendet werden kann. Die Quervergleichsfehler 306 basieren auf einem Vergleich von Quervergleichsdaten 123, die von dem Prozessor des primären Kanals gesendet werden, und Quervergleichsdaten 133, die von dem Prozessor des sekundären Kanals gesendet werden. Beispielsweise kann die Verarbeitungslogik 116 (Prozessor des primären Kanals) Quervergleichsdaten 123 über die Verbindung 158 an den Sicherheitsmonitor 120 senden. Die Verarbeitungslogik 126 (Prozessor des sekundären Kanals) kann Quervergleichsdaten 133 über die Verbindung 156B an den Sicherheitsmonitor 120 und/oder an die Verarbeitungslogik 116 über die Verbindung 156A senden (und dann sendet die Verarbeitungslogik 116 Quervergleichsdaten 133 über die Verbindung 158 an den Sicherheitsmonitor 120). Bei einigen Ausführungsbeispielen ist die Verarbeitungslogik 116 ausgebildet, um Quervergleichsdaten 123 mit Quervergleichsdaten 133 zu vergleichen und dem Sicherheitsmonitor 120 einen Fehler anzuzeigen, wenn diese nicht übereinstimmen.
-
Die Quervergleichsdaten 123, 133 sind Daten, die jeweils durch die Verarbeitungslogik 116, 126 erzeugt werden. Beispielsweise kann die Verarbeitungslogik 116, 126 Eingangsdaten 119, 129 von Sensor- und Aktuator-I/O 114 empfangen und aus den Eingangsdaten 119, 129 einen zyklischen Redundanzcode (CRC; cycle redundancy code) erzeugen. Die Quervergleichsdaten können der CRC sein. Die Quervergleichsdaten 123, 133 können Daten umfassen, die auf den Eingangsdaten 119, 129 und den Ausgangsdaten 121, 131 basieren. Der Quervergleich kann mehrere CRCs und/oder andere Daten umfassen, die verwendet werden können, um zu bestimmen, ob die Eingangsdaten 119, 129, die von der Verarbeitungslogik 116 und der Verarbeitungslogik 126 empfangen werden, gleich sind. Ferner können die Quervergleichsdaten 123, 133 Daten umfassen, die verwendet werden können, um zu bestimmen, ob jeweils die Ausgangsdaten 121, 131 aus der Verarbeitungslogik 116 und Verarbeitungslogik 126 gleich oder wahrscheinlich gleich sind. Auch hier können neben anderen Daten auch CRCs bestimmt werden. Die Quervergleichsdaten 123, 133 können eine Form der Komprimierung der Ausgangsdaten sein, um den Vergleich der Ausgangsdaten 121 von Anwendung 117 (Verarbeitungslogik 116) mit den Ausgangsdaten 131 von Anwendung 127 (Verarbeitungslogik 126) zu ermöglichen.
-
ODER (OR) 308 kann ‚oder‘ Logik anzeigen, die in Hardware, Software oder Firmware implementiert ist. OR 308 kann auf einer Platine (nicht abgebildet) implementiert sein, die die primäre Vorrichtung 102 und die sekundäre Vorrichtung 104 hostet, z.B. kann die Steuerung 112 das OR 308 implementieren. OR 308 kann durch den Sicherheitsmonitor 120 implementiert werden, der einen Schalter (z.B., wenn die Steuerung 112 ein Schalter ist) über die Verbindung 172 steuert. Der OR 308 kann durch die sichere Systemlogik 106 implementiert werden, die Teil des Sicherheitsmonitors 120 sein kann. Beispielsweise zeigen Verbindung 164 und/oder Verbindung 152B den sekundären Kanalfehler 304 an, Verbindung 166 zeigt den primären Kanalfehler 302 an und Verbindung 168 zeigt die Quervergleichsdaten 123, 133, Fehler 306 an, z.B. vergleicht der Sicherheitsmonitor 120 die Quervergleichsdaten 123, 133 von Anwendung 117 und Anwendung 127 und bestimmt, dass von Anwendung 117 und Anwendung 127 unterschiedliche Ausgangsdaten erzeugt werden. Die sichere Systemlogik 106 kann das OR 308 mit den Eingangsverbindungen 164 (oder 152B), 166 und 168 und der Ausgangsverbindung 172 implementieren, die den Kanal abschalten und/oder die Kommunikation zu Aktuatoren über die Verbindung 178 stoppen, wenn ein primärer Kanalfehler 302 (z. B, Verbindung 166 zeigt den primären Kanalfehler 166 an), ein sekundärer Kanalfehler 304 (z.B. Verbindung 164 und/oder Verbindung 152B zeigen den sekundären Kanalfehler 304 an) oder ein Quervergleichsfehler 306 (z.B. Verbindung 168 zeigt einen Quervergleichsdatenfehler an) vorliegt. Bei einigen Ausführungsbeispielen kann die sichere Systemlogik 106 die Verbindung 180 und/oder die Verbindung 174 abschalten und/oder die Kommunikation zu Aktuatoren über die Verbindung 109 stoppen. Bei einigen Ausführungsbeispielen kann die sichere Systemlogik 106 die Verbindung 170 und/oder die Verbindung 176 abschalten und/oder die Kommunikation zu Aktuatoren über die Verbindung 111 stoppen. Bei einigen Ausführungsbeispielen kann die sichere Systemlogik 106 die Verbindung 178 abschalten und/oder die Kommunikation zu den Aktuatoren über die Verbindungen 109, 111 stoppen, indem die Verbindungen 170/176 und 180/174 abgeschaltet werden. Die Verbindungen 170/176 und 180/174 umfassen einen Eingangsabschnitt für die Eingangsdaten 119, 129 und einen Ausgangsabschnitt für die Ausgangsdaten 121, 131, so dass die sichere Systemlogik 106 gemäß einigen Ausführungsbeispielen den Ausgangsabschnitt der Kommunikation stoppen kann, z.B. Abschalten, ohne den Eingangsabschnitt zu stoppen. Bei einigen Ausführungsbeispielen wird der sichere Zustand erreicht, indem die Kommunikation zu den Aktuatoren (160 und 150A) gestoppt wird. Bei einigen Ausführungsbeispielen ist die Steuerung 112 ein Schalter und Sensor- und Aktuator-I/O 1 110 und Sensor- und Aktuator-I/O 2 108 sind Verbindungen. Bei einigen Ausführungsbeispielen ist die sichere Systemlogik 106 nicht Teil des Dies 2 125. Bei einigen Ausführungsbeispielen ist die sichere Systemlogik 106 Teil des Sicherheitsmonitors 120. Bei einigen Ausführungsbeispielen können unterschiedliche logische Operationen von der sicheren Systemlogik 106 ausgeführt werden, z. B. kann Verbindung 172 verwendet werden, um die Ausgangsdaten 121 von Verbindung 176, die Ausgangsdaten 133 von Verbindung 174 auszuwählen oder um Verbindung 178 für keine Ausgangsdaten abzuschalten.
-
Bei einigen Ausführungsbeispielen implementiert der Sicherheitsmonitor 126 des Dies 2 110 der primären Vorrichtung 106 Diagnose- und Querüberwachungsfunktionen, die die Rolle einer externen Master-Steuerungseinheit (MCU; Master Control Unit) ersetzen können. Bei einigen Ausführungsbeispielen kann sich die MCU auf eine Mikroprozessorsteuerungseinheit beziehen. Der Sicherheitsmonitor 126 kann gemäß einigen Ausführungsbeispielen andere Hardware- (HW) und Software- (SW) Diagnosemaßnahmen der primären Vorrichtung 106 steuern und überwachen. Der Sicherheitsmonitor 120 kann gemäß einigen Ausführungsbeispielen andere HW- und SW-Diagnosemaßnahmen der sekundären Vorrichtung 104 steuern und überwachen. Bei einigen Ausführungsbeispielen kann der Sicherheitsmonitor 120 die Logik des OR 308 implementieren und über die Verbindung 172 den Zustand des sicheren Zustands 310 (z.B. Verbindung 178) steuern.
-
Bei einigen Ausführungsbeispielen nimmt die Steuerung 112 die Eingangsdaten 119, 129 von dem Sensor- und Aktuator-I/O 114 und sendet sie an die beiden Verbindungen 174, 176. Bei einigen Ausführungsbeispielen werden die Ausgangsdaten 131 von der sekundären Vorrichtung 104 nicht auf Verbindung 178 gesendet. Nur die Ausgangsdaten von Anwendung 117 werden auf Verbindung 178 gesendet. Die Quervergleichsdaten (z.B. gesendet auf Verbindung 158B und/oder 156A), Fehlerdetektion 118 und Fehlerdetektion 130, werden vom Sicherheitsmonitor 120 verwendet, um das Ergebnis von OR 308 zu ermitteln (3). Der Sicherheitsmonitor 120 wählt entweder aus, dass die Ausgangsdaten aus der Verarbeitungslogik 116 auf Verbindung 178 gesendet werden sollen, oder er schaltet die Verbindung 178 ab, entsprechend einigen Ausführungsformen. Bei einigen Ausführungsbeispielen liegt die Steuerung 512 möglicherweise nicht vor, z. B. können Sensor- und Aktuator-I/O 2 108 eine Verbindung 175 zu Sensor- und Aktuator-I/O 114 aufweisen und Sensor- und Aktuator-I/O 1 110 können eine Verbindung 177 zu Sensor- und Aktuator-I/O 114 aufweisen.
-
Bei einigen Ausführungsbeispielen gibt es keine Verbindung 150B oder Verbindung 150A, da die Ausgangsdaten von Anwendung 127 nicht über die Bestimmung der Quervergleichsdaten 133 hinaus verwendet werden. Bei einigen Ausführungsbeispielen geht der Sicherheitsmonitor 120 für Verbindung 178 in den abgeschalteten Zustand über, wenn die Fehlerdetektion 122 erzeugt wird, die darauf hinweist, dass Die 2 125 Fehler aufweist. Bei einigen Ausführungsbeispielen wird, wenn ein Fehler der Fehlerdetektion 118 gemeldet wird, die Verbindung 160 abgeschaltet, so dass der Datenausgang 121 nicht gesendet wird. Bei einigen Ausführungsbeispielen wird, wenn ein Fehler der Fehlerdetektion 130 gemeldet wird, die Verbindung 150A und/oder 150B abgeschaltet, so dass der Datenausgang 131 nicht gesendet wird. Ein abgeschalteter Zustand für die Verbindung 178 kann verhindern, dass die Ausgangsdaten 121, 131 an Sensor- und Aktuator-I/O 114 übertragen werden, während die Eingangsdaten 119, 129 von Sensor- und Aktuator-I/O 114 erlaubt werden, gemäß einigen Ausführungsbeispielen.
-
Sensor- und Aktuator-I/O 114 können Sensoren und Aktoren sein. Die Sensoren können z.B. elektronische Vorrichtungen sein, die elektrische oder elektronische Signale erzeugen, die zur Steuerung 112 gesendet werden. Die Beispielsensoren umfassen Videokameras, Mikrofone, Bewegungsdetektoren, an Maschinen angebrachte Sensoren, die Maschinenpositionen melden, an Autos angebrachte Sensoren, z.B. ob eine Tür geschlossen ist oder eine Temperatur des Motors, etc. Die Aktuatoren umfassen Aktuatoren, die den Betrieb einer Maschine anpassen, Aktuatoren, die elektronische, elektrische oder mechanische Vorrichtungen ein- oder ausschalten, Aktuatoren, die Lichter ein- oder ausschalten, Aktuatoren, die ein Automobil betreiben, etc. Bei einem Beispiel können die Eingangssensordaten Eingangsdaten von einem Bewegungsdetektor oder einer Videokamera sein, die an einem Automobil angebracht sind, und die Ausgangsaktuatordaten können Daten zur Steuerung der Bewegung des Automobils sein.
-
Bei einigen Ausführungsbeispielen können der Die1 115 und der Die 2 125 ein gleicher Die sein, z.B. können die Verarbeitungslogik 116 und der Sicherheitsmonitor 120 sich auf demselben Die befinden. Bei einigen Ausführungsbeispielen umfasst die primäre Vorrichtung 102 nur einen Die, der alle Komponenten von Die 1 115 und Die 2 125 von 1 und/oder 5 umfasst.
-
4 ist gemäß einigen Ausführungsbeispielen eine 1oo2-Architektur 400. In 4 sind Kanal 1 402, optionale Diagnose 404, Kanal 2 406, 1oo2 408 und Sensor I/O 410 dargestellt. Die 1oo2-Architektur 400 kann ausgebildet sein, um bei irgendwelchen Anzeigen von Fehlern in einen sicheren Zustand (z.B. Sensor I/O 410 abschalten) überzugehen. Der Kanal 1 402 kann die Verbindung 176 sein (1). Der Kanal 2 406 kann die Verbindung 174 sein (1). Der Kanal 1 402 und Kanal 2 406 sind Kanäle zur Übertragung von Eingangs- und Ausgangsdaten (z.B. Eingangsdaten 119, 129, Ausgangsdaten 121, 131). Die Diagnosen 404 und 1oo2 408 können die 1oo2 sichere Systemlogik 300 implementieren, wie in Verbindung mit 3 offenbart, z.B. können die Diagnosen 404 und 1oo2 408 die sichere Systemlogik 106 und die Steuerung 112 sein, wie in Verbindung mit 1-3 offenbart. Die 1oo2 Architektur 400 ist gemäß manchen Ausführungsformen konform mit IEC 61508.
-
5 stellt gemäß einigen Ausführungsbeispielen ein System 500 mit einer Zwei-Die-Architektur dar. Dargestellt in 5 ist die primäre Vorrichtung 102, die sekundäre Vorrichtung 104, die sichere Systemlogik 506, Sensor- und Aktuator-I/O 2 108, Sensor- und Aktuator-I/O 1 110, die Steuerung 512, Sensor- und Aktuator-I/O 114 und die Verbindungen 150 bis 180 und die Verbindung 550. Die primäre Vorrichtung 102 kann gleich oder ähnlich zu der primären Vorrichtung 102 sein, wie in Verbindung mit 1 offenbart. Die sekundäre Vorrichtung 104 kann gleich oder ähnlich zu der sekundären Vorrichtung 104 von 1 sein. Sensor- und Aktuator-I/O 1 110 können gleich oder ähnlich wie Sensor- und Aktuator-I/O 1 110 sein, wie in Verbindung mit 1 offenbart. Sensor- und Aktuator-I/O 2 108 können gleich oder ähnlich wie Sensor- und Aktuator-I/O 2 108 sein, wie in Verbindung mit 1 offenbart. Sensor- und Aktuator-I/O 114 können gleich oder ähnlich wie Sensor- und Aktuator-I/O 114 sein, wie in Verbindung mit 1 offenbart.
-
In 5 werden die von der Anwendung 127 erzeugten Ausgangsdaten 131 über die Verbindung 550 an die I/O-Schnittstelle 128 gesendet. Bei einigen Ausführungsbeispielen ist die sichere Systemlogik 506 nicht Teil des Dies 2 125. Bei einigen Ausführungsbeispielen ist die sichere Systemlogik 506 Teil des Sicherheitsmonitors 120 und/oder des Dies 2 125. Bei einigen Ausführungsbeispielen ist die Steuerung 512 nicht Teil des Dies 2 125. Bei einigen Ausführungsbeispielen ist die Steuerung 512 Teil des Sicherheitsmonitors 120 und/oder des Dies 2 125. Bei einigen Ausführungsbeispielen wird die Fehlerdetektion 130 über die Verbindung 152B an die sichere Systemlogik 506 gemeldet, nicht aber an den Sicherheitsmonitor 120.
-
6 wird in Verbindung mit 5 offenbart. 6 stellt gemäß einigen Ausführungsbeispielen eine 1oo2D Sicherer-Zustand-Systemlogik 600 dar. In 6 ist Kanal 1 Abschalten 602, Kanal 2 Abschalten 604, der primäre Kanalfehler 606, der sekundäre Kanalfehler 608, der Quervergleichsfehler 610, der sichere Zustand (beide Kanäle abschalten) 612, ODER (OR) 614, UND (AND) 616, NICHT (NOT)618, UND 620 und ODER 622 dargestellt. Bei einigen Ausführungsbeispielen kann Kanal 1 Abschalten 602, Kanal 2 Abschalten und/oder der sichere Zustand (Abschalten beider Kanäle) 612 verhindern, dass Ausgangsdaten an Sensor- und Aktuator-I/O (z.B. Sensor und Aktuator 114) übertragen werden, während Eingangsdaten von Sensor- und Aktuator-I/O gemäß einigen Ausführungsbeispielen erlaubt werden. Bei einigen Ausführungsbeispielen wird der sichere Zustand erreicht, indem die Kommunikation zu den Aktuatoren gestoppt wird (160 und 150A).
-
Der primäre Kanalfehler 606 ist ein Signal, das einen Fehler auf dem primären Kanal anzeigt. Zum Beispiel zeigt die Fehlerdetektion 118 (5) Fehler auf dem primären Kanal an. Fehler können über die Verbindung 161 von Die 1 115 zu Die 2 125 signalisiert werden, z.B. an den Sicherheitsmonitor 120. Fehler können über die Verbindung 166, gemäß einigen Ausführungsbeispielen, an die Systemsicherheitslogik 506 gemeldet werden.
-
Der sekundäre Kanalfehler 608 ist ein Signal, das einen Fehler auf dem sekundären Kanal anzeigt. Zum Beispiel ist die Fehlerdetektion 130 ein Signal, das einen Fehler auf dem sekundären Kanal anzeigt und kann an die Verarbeitungslogik 116, die sichere Systemlogik 506 und/oder den Sicherheitsmonitor 120 gesendet werden. Die Quervergleichsfehler 610 basieren auf einem Vergleich von Quervergleichsdaten 123, die von dem Prozessor des primären Kanals gesendet werden, und Quervergleichsdaten 131, die von dem Prozessor des sekundären Kanals gesendet werden. Beispielsweise kann die Verarbeitungslogik 116 (Prozessor des primären Kanals) Quervergleichsdaten 123 über die Verbindung 158 an den Sicherheitsmonitor senden. Die Verarbeitungslogik 126 (Prozessor des sekundären Kanals) kann Quervergleichsdaten 131 über die Verbindung 156B an den Sicherheitsmonitor 120 und/oder an die Verarbeitungslogik 116 über die Verbindung 156A senden. Quervergleichsfehler können von dem Sicherheitsmonitor 120 über die Verbindung 168 an die sichere Systemlogik 506 des Systems gemeldet werden. Bei einigen Ausführungsbeispielen vergleicht die Verarbeitungslogik 116 die Quervergleichsdaten 123 mit den Quervergleichsdaten 131, um zu bestimmen, ob ein Quervergleichsfehler 610 vorliegt. Die Verarbeitungslogik 116 kann dann über die Verbindung 158 an den Sicherheitsmonitor 120 signalisieren, dass ein Quervergleichsfehler 610 vorliegt, und der Sicherheitsmonitor 120 kann über die Verbindung 168 an die sichere Systemlogik 506 signalisieren, dass ein Quervergleichsfehler 610 vorliegt. Bei einigen Ausführungsbeispielen vergleicht der Sicherheitsmonitor 120 die Quervergleichsdaten 123 (über die Verbindung 158) mit den Quervergleichsdaten 133 (über die Verbindung 156B), um zu bestimmen, ob ein Quervergleichsfehler 610 vorliegt. Der Sicherheitsmonitor 120 kann der sicheren Systemlogik 506 über die Verbindung168 signalisieren, dass ein Quervergleichsfehler 610 vorliegt.
-
Das Kanal 1 Abschalten 602 verbindet mit Verbindung 170 und/oder 176, um die Verbindung, die die Ausgangsdaten 121 der Verarbeitungslogik 116 sendet, abzuschalten. Das Kanal 2 Abschalten 604 verbindet mit Verbindung 180 und/oder 174, um die Verbindung, die die Ausgangsdaten 131 der Verarbeitungslogik 126 sendet, abzuschalten.
-
Die UNDs
616,
620 implementieren logische ‚Und‘-Funktionen. Die ODER
614,
622 implementieren eine logische ‚Oder‘-Funktion. NICHT
618 implementiert ein logisches ‚Nicht‘. Der sichere Zustand (beide Kanäle abschalten) 612 verbindet mit Verbindung
178, um die Verbindung abzuschalten, die die Ausgangsdaten
121 oder die Ausgangsdaten
123 sendet.
Tabelle 1 Logiktabelle für FIG. 6
EINGÄNGE | AUSGÄNGE |
Primärer Kanalfehler 606 | Sekundärer Kanalfehler 608 | Quervergleichsfehler 610 | Kanal 1-Abschalten 602 | Kanal 2-Abschalten 604 | Sicherer Zustand (Abschalten beider Kanäle) 612 |
0 | 0 | 0 | 0 | 0 | 0 |
0 | 0 | 1 | 0 | 0 | 1 |
0 | 1 | 0 | 0 | 1 | 0 |
0 | 1 | 1 | 0 | 1 | 0 |
1 | 0 | 0 | 1 | 0 | 0 |
1 | 0 | 1 | 1 | 0 | 0 |
1 | 1 | 0 | 1 | 1 | 1 |
1 | 1 | 1 | 1 | 1 | 1 |
-
Tabelle 1 stellt den Betrieb der Ausgänge Kanal 1 Abschalten 602, Kanal 2 Abschalten 604 und den sicheren Zustand (Abschalten beider Kanäle) 612 dar. Wenn der eine oder der andere Kanal einen Fehler anzeigt, dann schaltet das System 500 auf die anderen Ausgangsdaten 121, 131 um. Die Logik von 6 kann durch den Sicherheitsmonitor 120, die sichere Systemlogik 506 und/oder die Steuerung 512 implementiert sein. Die sichere Systemlogik 506 kann einen Zustand 513 umfassen, der den Zustand der Ausgänge anzeigen kann. Verbindung 572 kann die Steuerung 512 steuern, um auszuwählen, welche Ausgangsdaten 121, 123 an Verbindung 178 gesendet werden. Beispielsweise kann die sichere Systemlogik 506 die Funktionalität von Tabelle 1 implementieren und die Verbindung 572 kann Verbindung 174 abschalten (Kanal 2 Abschalten 604), die Verbindung 176 abschalten (Kanal 1 Abschalten 602), in den sicheren Zustand gehen (z.B. die Verbindung 178 abschalten) oder zwischen der Verbindung 174 (Ausgangsdaten 131 von dem sekundären Kanal verwenden) oder der Verbindung 176 (Ausgangsdaten 123 von dem primären Kanal verwenden) wählen. Bei einigen Ausführungsbeispielen kann die sichere Systemlogik 506 die Verbindung 180 und/oder die Verbindung 174 über die Verbindung 190 abschalten. Bei einigen Ausführungsbeispielen kann die sichere Systemlogik 506 die Verbindung 170 und/oder die Verbindung 176 über die Verbindung 111 abschalten. Bei einigen Ausführungsbeispielen kann die sichere Systemlogik 106 die Verbindung 178 über die Verbindungen 190, 111 abschalten, indem die Verbindungen 170/176 und 180/174 abgeschaltet werden. Bei einigen Ausführungsbeispielen ist die Steuerung 512 Teil des Dies 2 125 und des Sicherheitsmonitors 120, der die sichere Systemlogik 506 umfasst und die Steuerung 512 steuert, um auszuwählen, welche Ausgangsdaten 121 (von Verbindung 158) oder Ausgangsdaten 131 (von Verbindung 180) an Verbindung 178 gesendet werden.
-
Bei einigen Ausführungsbeispielen schaltet die sekundäre Vorrichtung 104 (z.B. die Verarbeitungslogik 126) die Verbindung 180 ab, wenn die Fehlerdetektion 130 detektiert wird. Bei einigen Ausführungsbeispielen schaltet die Verarbeitungslogik 116 die Verbindung 158 ab, wenn die Fehlerdetektion 118 detektiert wird. Bei einigen Ausführungsbeispielen kann das Kanal 1 Abschalten 602, Kanal 2 Abschalten und/oder der sichere Zustand (Abschalten beider Kanäle) 612 anzeigen, dass die Ausgangsdaten 121, 131 und/oder Befehle an Aktuatoren nicht an Sensor- und Aktuator-I/O 114 gesendet werden.
-
7 ist gemäß einigen Ausführungsbeispielen eine 1oo2D Architektur 700. In 7 sind Kanal 1 702, Diagnose 704, 706, Kanal 2 710, 1oo2D 708 und Sensor I/O 712 dargestellt. Die 1oo2D-Architektur 700 kann ausgebildet sein, um basierend auf Tabelle 1 in einen sicheren Zustand (z.B. Sensor-I/O 712 abschalten) überzugehen. Der Kanal 1 702 kann die Verbindung 176 sein (5). Der Kanal 2 710 kann die Verbindung 174 sein (5). Der Kanal 1 502 und Kanal 2 710 sind Kanäle zur Übertragung von Eingangs- und Ausgangsdaten (z.B. Eingangsdaten 119, 129, Ausgangsdaten 121, 131). Die Diagnosen 704, 706 und 1oo2D 708 können die 1oo2D Sicherer-Zustand-Systemlogik 600 implementieren, wie in Verbindung mit Tabelle 1 offenbart, z.B. können die Diagnosen 704, 706 und 1oo2D 708 die sichere Systemlogik 506 und die Steuerung 512 sein, wie in Verbindung mit 5 offenbart. Die 1oo2D Architektur 700 ist gemäß manchen Ausführungsformen konform mit IEC 61508.
-
Einige Ausführungsbeispiele verwenden weniger Leistung, da die sekundäre Vorrichtung 104 eine Vorrichtung mit geringer Performance sein kann, die minimale Sicherheitsfunktionen bereitstellt, die die primäre Vorrichtung 102 spiegeln. Bei einigen Ausführungsbeispielen ist die primäre Vorrichtung 102 und/oder die sekundäre Vorrichtung 104 für den Betrieb einer Mensch-Maschine-Schnittstelle (HMI; human-machine interface) ausgebildet. Zum Beispiel kann die primäre Vorrichtung 102 und/oder die sekundäre Vorrichtung 104 eine Schnittstelle 216 (2) zu einem anderen Computer oder Anzeige umfassen und eine Anwendung umfassen, um es einem Menschen zu ermöglichen, Informationen zu konsumieren und einzugeben.
-
Bei einigen Ausführungsbeispielen kommuniziert die sekundäre Vorrichtung 104 mit dem Die 1 115 und/oder dem Sicherheitsmonitor 120 über eine Anwendungsprogrammierschnittstelle (API; application programming interface). Beispielsweise können die Quervergleichsdaten 131 über die Verbindung 156A und/oder die Verbindung 156B durch Zugriff auf eine API an die Verarbeitungslogik 116 und/oder den Sicherheitsmonitor 120 übertragen werden. Bei einigen Ausführungsbeispielen erfolgt die Kommunikation der Fehlerdetektionsdaten 118, 130, Eingangsdaten 119, 129, Ausgangsdaten 121, 131 und/oder der Quervergleichsdaten 123, 131 durch Verschlüsselung der Daten, z.B. unter Verwendung von einem oder mehreren Black-Channel-Protokollen oder End-to-End (e2e) -Protokollen.
-
Bei einigen Ausführungsbeispielen kann das System 100 das System 200 basierend auf den im System 100 umfassten Konfigurationsparameter implementieren, z.B. kann ein Konfigurationsparameter auswählen, ob die 1oo2 Sicherer-Zustand-Systemlogik 300 oder die 1oo2d Sicherer-Zustand-Systemlogik 600 implementiert werden soll. Ein zusätzlicher Parameter kann auswählen, ob die Verbindung 150B deaktiviert werden soll. Bei einigen Ausführungsbeispielen kann das System 100 einen Parameter aufweisen, der die Option a) auswählt, bei der die Quervergleichsdaten 133 über die Verbindung 156B direkt an den Sicherheitsmonitor 120 gesendet werden, oder die Option b), bei der die Quervergleichsdaten 133 über die Verbindung 156A an die Verarbeitungslogik 116 gesendet werden. Bei Option b) kann die Verarbeitungslogik 116 entweder die Quervergleichsdaten 123 mit den Quervergleichsdaten 131 vergleichen und bei Nichtübereinstimmung eine Fehleranzeige über die Verbindung 158 an den Sicherheitsmonitor 120 senden, oder die Verarbeitungslogik 116 kann die Quervergleichsdaten 131 über die Verbindung 158 an den Sicherheitsmonitor 120 weiterleiten.
-
Bei einigen Ausführungsbeispielen kann das System 100 einen Parameter aufweisen, der die Option a) auswählt, bei der die Fehlerdetektion 130 über die Verbindung 152B direkt an den Sicherheitsmonitor 120 gesendet wird, oder die Option b), bei der die Fehlerdetektion 130 über die Verbindung 152A an die Verarbeitungslogik 116 gesendet wird. Bei einigen Ausführungsbeispielen ist eine erste Anwendung ausgebildet, um Eingangsdaten 119 zu empfangen und Ausgangsdaten 121 und Quervergleichsdaten 123 zu erzeugen. Bei einigen Ausführungsbeispielen ist eine zweite Anwendung ausgebildet, um Eingangsdaten 129 zu empfangen und Ausgangsdaten 131 und Quervergleichsdaten 131 zu erzeugen. Die erste Anwendung und die zweite Anwendung können in einer Kombination aus Software, Hardware oder Firmware implementiert sein. Die erste Anwendung und die zweite Anwendung arbeiten in einer lose gekoppelten Lockstep-Weise. Die erste Anwendung und die zweite Anwendung sind möglicherweise nicht identisch, aber die Quervergleichsdaten 123, 131 müssen übereinstimmen, gemäß einigen Ausführungsbeispielen. Bei einigen Ausführungsbeispielen meldet der Sicherheitsmonitor 120 sowohl an die Verarbeitungslogik 116 als auch an die Verarbeitungslogik 126, wenn eine Fehlanpassung oder ein Fehler zwischen den Quervergleichsdaten 123, 131 detektiert wird. Bei einigen Ausführungsbeispielen bieten System 100 und System 400 SIL2 oder SIL3 für Hardware-Ausfälle und SC3 für systematische Ausfälle.
-
8 stellt gemäß einigen Ausführungsbeispielen ein Verfahren für Hardware-Fehlertoleranz dar. Das Verfahren 800 beginnt bei Operation 802 ansprechend auf das Empfangen einer Anzeige eines ersten Fehlers von einer ersten Verarbeitungslogik eines ersten Dies, mit dem Senden eines Signals zum Abschalten von ersten Ausgangsdaten von der ersten Verarbeitungslogik. Beispielsweise kann der Sicherheitsmonitor 120 über die Verbindung 161 einen Fehler 118 von Die 1 115 empfangen und ansprechend darauf über die Verbindung 572 ein Signal senden, das die Ausgangsdaten 121 von Verbindung 170, 176 deaktiviert.
-
Das Verfahren 800 fährt bei Operation 804 fort, ansprechend auf das Empfangen einer Anzeige eines zweiten Fehlers von einer sekundären Vorrichtung, mit dem Senden eines Signals zum Abschalten von zweiten Ausgangsdaten der sekundären Vorrichtung. Beispielsweise kann der Sicherheitsmonitor 120 über die Verbindung 152b (oder 152a über Verbindung 158) einen Fehler 130 von der sekundären Vorrichtung 104 empfangen und ansprechend darauf über die Verbindung 572 ein Signal senden, das die Ausgangsdaten 131 von Verbindung 180, 174 deaktiviert.
-
Das Verfahren 800 wird bei Operation 806 mit dem Empfang erster Quervergleichsdaten vom ersten Die fortgesetzt. Zum Beispiel kann der Sicherheitsmonitor 120 die Quervergleichsdaten 123 von der Verarbeitungslogik 116 über die Verbindung 158 empfangen.
-
Das Verfahren 800 wird bei Operation 808 mit dem Empfang von zweiten Quervergleichsdaten von der sekundären Vorrichtung fortgesetzt. Beispielsweise kann der Sicherheitsmonitor 120 Quervergleichsdaten 131 von der Verarbeitungslogik 126 über die Verbindung 156b (oder 156a über die Verbindung 158) empfangen.
-
Das Verfahren 800 fährt bei Operation 810 fort, ansprechend auf einen Vergleich von ersten Quervergleichsdaten mit zweiten Quervergleichsdaten, die einen Fehler anzeigen und das Nicht-Empfangen des ersten Fehlers oder des zweiten Fehlers, mit dem Senden eines Signals zum Abschalten der ersten Ausgangsdaten und der zweiten Ausgangsdaten. Beispielsweise kann, wie in Tabelle 1 offenbart, der Sicherheitsmonitor 120 ausgebildet sein, um ein Signal über die Verbindung 572 zu senden, um die Verbindung 178 abzuschalten, wenn die Fehlerdetektion 118 und die Fehlerdetektion 130 keinen Fehler anzeigen, aber ein Vergleich der Quervergleichsdaten 123 und der Quervergleichsdaten 133 einen Fehler anzeigt, z.B. wenn sie nicht gleich sind. Bei einigen Ausführungsbeispielen basieren die ersten Quervergleichsdaten auf ersten Ausgangsdaten und die zweiten Quervergleichsdaten basieren auf zweiten Ausgangsdaten.
-
Eine oder mehrere der Operationen des Verfahrens 800 können optional sein. Das Verfahren 800 kann zusätzliche Operationen umfassen. Operationen des Verfahrens 800 können in einer unterschiedlichen Reihenfolge ausgeführt werden, gemäß einigen Ausführungsbeispielen. Das Verfahren 800 kann durch eine Vorrichtung eines SoC mit zwei Dies ausgeführt werden, gemäß einigen Ausführungsbeispielen. Eine oder mehrere der Operationen können in einer unterschiedlichen Sequenz und/oder gleichzeitig durchgeführt werden, z.B. können die Operationen 806, 808, 810 in einer unterschiedlichen Reihenfolge und/oder gleichzeitig durchgeführt werden.
-
Eine oder mehrere der Operationen des Verfahrens 800 können durch die Anweisungen 824 durchgeführt werden (8). Eine oder mehrere der Operationen des Verfahrens 800 können unter Verwendung des Anweisungsformats oder der Registerarchitektur, wie in 9A, 9B, 10A, 10B, 10C, 10D und/oder 11 offenbart, durchgeführt werden. Zum Beispiel kann eine Vorrichtung eines Sicherheitsmonitors 120 die Anweisungsformate oder die Registerarchitektur verwenden, wie in 9A, 9B, 10A, 10B, 10C, 10D und/oder 11 offenbart. Die Verarbeitungslogik 116, 126 kann das Anweisungsformat oder die Registerarchitektur verwenden, wie in 9A, 9B, 10A, 10B, 10C, 10D und/oder 11 offenbart. Die 1 115, Die 2 125, und/oder die sekundäre Vorrichtung 104 können das Anweisungsformat oder die Registerarchitektur verwenden, wie in 9A, 9B, 10A, 10B, 10C, 10D und/oder 11 offenbart. Der Die 1 115, der Die 2 125, die sekundäre Vorrichtung 104 und/oder die Verarbeitungslogik 116, 126 können eine Pipeline 1200 und/oder einen Kern 1290 umfassen, z.B. kann der Die 1 115 ein Kern 1290 sein.
-
Der Die 1 115, der Die 2 125 und/oder die sekundäre Vorrichtung 104 können ein oder mehrere Elemente der in 13A und 13B offenbarten Kernarchitekturen umfassen. Beispielsweise kann die Verarbeitungslogik 116, 126 einen Cache 1306, 1304, 1306A verwenden, um die Anwendung zu implementieren. Der Die 1 115, der Die 2 125 und/oder die sekundäre Vorrichtung 104 können ein oder mehrere Elemente des Prozessors 1400 umfassen oder darin umfasst sein, wie in 14 offenbart. Zum Beispiel kann die Verarbeitungslogik 116, 126 eine Spezialzwecklogik 1408, der Prozessor 1400 und/oder mit dem Prozessor 1400 verbunden sein.
-
Der Die 1 115, der Die 2 125 und/oder die sekundäre Vorrichtung 104 können ein oder mehrere Elemente der Computer-Architekturen der 15- 18 umfassen oder darin umfasst sein. Zum Beispiel kann unter Bezugnahme auf 5, die I/O-Schnittstelle 124, 128 der I/O 1560 sein. Die Verarbeitungslogik 116, 126 und/oder der Sicherheitsmonitor 120 können der Prozessor 1510 sein, etc. Eines oder mehrere der Elemente der Computerarchitektur der 15-18 können für den Die 1 115, den Die 2 125, die sekundäre Vorrichtung 104 dupliziert werden. Bei einigen Ausführungsbeispielen ist I/F (Interface) 1696 die I/O-Schnittstelle 124, 128, und der Sensor- und Aktuator-I/O 114 umfasst die Komm.-Vorrichtung 1627, die extern zu der primären Vorrichtung 102 ist.
-
Bei einigen Ausführungsbeispielen kann der Die 1 115 mit dem System auf einem Chip 1800 implementiert sein, wobei ein zusätzlicher Die ein zusätzliches System auf einem Chip 1800 für den Die 2 125 bereitstellt. Bei einigen Ausführungsbeispielen ist eine Anwendung (nicht abgebildet), die von der Verarbeitungslogik 116 mit einem Duplikat, ausgeführt von der Verarbeitungslogik 126, ausgeführt wird, teilweise in Software implementiert, z.B. eine Sprache hoher Ebene 1902, bei der die Sprache hoher Ebene 1902 für einen Prozessor ohne X86-Anweisungssatzkem 1914 oder einen Prozessor mit zumindest einem x86-Anweisungssatzkern 1916 verarbeitet wird, gemäß einigen Ausführungsbeispielen.
-
Ein Prozessor-Teilsystem kann verwendet werden, um die Operationen auf dem maschinenlesbaren Medium durchzuführen. Das Prozessor-Teilsystem kann einen oder mehrere Prozessoren umfassen, jeder mit einem oder mehreren Kernen. Zusätzlich kann das Prozessor-Teilsystem auf einer oder mehreren physischen Vorrichtungen angeordnet sein. Das Prozessor-Teilsystem kann einen oder mehrere spezialisierte Prozessoren umfassen, wie beispielsweise eine Grafikverarbeitungseinheit (GPU; graphics processing unit), einen digitalen Signalprozessor (DSP; digital signal processor), ein feld-programmierbares Gate-Array (FPGA; field programmable gate array), oder einen Prozessor mit fester Funktion.
-
Beispiele, wie hierin beschrieben, können Logik oder eine Anzahl von Komponenten, Modulen oder Mechanismen umfassen oder basierend auf denselben arbeiten. Module können Hardware, Software oder Firmware sein, die kommunikativ mit einem oder mehreren Prozessoren gekoppelt sind, um die hierin beschriebenen Operationen auszuführen. Die Module können Hardware-Module sein, und somit können Module als greifbare Einheiten betrachtet werden, die in der Lage sind, spezifische Operationen durchzuführen, und sie können auf eine bestimmte Weise ausgebildet oder angeordnet sein. Bei einem Beispiel können Schaltungen auf eine bestimmte Weise als Modul angeordnet werden (z.B. intern oder im Hinblick auf externe Entitäten wie beispielsweise andere Schaltungen). Bei einem Beispiel kann das ganze oder ein Teil von einem oder mehreren Computersystemen (z. B. ein alleinstehendes, Client- oder Server-Computersystem) oder ein oder mehrere Hardware-Prozessoren durch Firmware oder Software (z.B. Anweisungen, einen Anwendungsabschnitt oder eine Anwendung) als ein Modul ausgebildet sein, das arbeitet, um bestimmte Operationen auszuführen. Bei einem Beispiel kann die Software auf einem maschinenlesbaren Medium vorliegen. Bei einem Beispiel kann die Software bei Ausführung durch die zugrundeliegende Hardware des Moduls verursachen, dass die Hardware die spezifischen Operationen ausführt. Dementsprechend ist der Begriff Hardware-Modul so zu verstehen, dass er eine greifbare Einheit umfasst, sei dies eine Einheit, die physisch konstruiert ist, speziell ausgebildet ist (z.B. fest verdrahtet) oder temporär (z.B. vorübergehend) ausgebildet (z.B. programmiert) ist, um auf eine bestimmte Weise zu arbeiten oder einen Teil oder alles von irgendeiner hierin beschriebenen Operation auszuführen. Bei Betrachtung von Beispielen, bei denen Module temporär ausgebildet sind, ist es nicht erforderlich, dass jedes der Module zu irgendeinem Zeitpunkt instantiiert wird. Zum Beispiel, wo die Module einen Allzweck-Hardware-Prozessor umfassen, der unter Verwendung von Software ausgebildet ist, kann der Allzweck-Hardware-Prozessor zu unterschiedlichen Zeiten als jeweilige unterschiedliche Module ausgebildet sein. Software kann dementsprechend einen Hardware-Prozessor ausbilden, um zum Beispiel ein bestimmtes Modul zu einem Zeitpunkt zu bilden und ein unterschiedliches Modul zu einem unterschiedlichen Zeitpunkt zu bilden. Module können auch Software- oder Firmware-Module sein, die arbeiten, um die hierin beschriebenen Methodologien durchzuführen.
-
Schaltungsanordnung oder Schaltungen können nach Gebrauch in diesem Dokument zum Beispiel einzeln oder in irgendeiner Kombination eine fest verdrahtete Schaltungsanordnung, programmierbare Schaltungsanordnung, wie beispielsweise Computerprozessoren, die einen oder mehrere einzelne Anweisungsverarbeitungskerne umfassen, Zustandsmaschinenschaltungsanordnung und/oder Firmware, die Anweisungen speichert, die durch die programmierbare Schaltungsanordnung ausgeführt werden, umfassen. Die Schaltungen, Schaltungsanordnung oder Module können kollektiv oder einzeln als eine Schaltungsanordnung ausgeführt sein, die einen Teil eines größeren Systems bildet, zum Beispiel eine integrierte Schaltung (IC; integrated circuit), System-auf-einem-Chip (SoC), Desktop-Computer, Laptop-Computer, Tablet-Computer, Server, Smartphones, etc.
-
Nach Gebrauch in irgendeinem Ausführungsbeispiel hierin kann sich der Begriff „Logik“ auf Firmware und/oder Schaltungsanordnungen beziehen, die ausgebildet sind, um irgendwelche der vorangehend erwähnten Operationen durchzuführen. Firmware kann als Code, Anweisungen oder Anweisungssätze und/oder Daten, die in Speicherbauelementen und/oder Schaltungsanordnungen hartcodiert (z.B. nichtflüchtig) sind, ausgebildet sein.
-
„Schaltungsanordnungen“ können, wie sie hierin in irgendeinem Ausführungsbeispiel verwendet werden, zum Beispiel einzeln oder in irgendeiner Kombination fest verdrahtete Schaltungsanordnungen, programmierbare Schaltungsanordnungen, Zustandsmaschinenschaltungsanordnungen, Logik - und/oder Firmware, die die Anwendungen speichert, die durch die programmierbare Schaltungsanordnung ausgeführt werden, umfassen. Die Schaltungsanordnung kann als eine integrierte Schaltung ausgeführt sein, wie beispielsweise ein Integrierte-Schaltung-Chip. Bei einigen Ausführungsbeispielen kann die Schaltungsanordnung zumindest teilweise dadurch gebildet werden, dass die Prozessorschaltungsanordnung entsprechend der hierin beschriebenen Funktionalität Code- und/oder Anweisungssätze (z.B. Software, Firmware, etc.) ausführt, wodurch ein Allzweckprozessor in eine Spezialzweck-Verarbeitungsumgebung umgewandelt wird, um eine oder mehrere der hierin beschriebenen Operationen auszuführen. Bei einigen Ausführungsbeispielen kann die Prozessorschaltungsanordnung als eine eigenständige integrierte Schaltung ausgeführt sein, oder kann als eine von mehreren Komponenten auf einer integrierten Schaltung eingebracht sein. Bei einigen Ausführungsbeispielen können die verschiedenen Komponenten und die Schaltungsanordnung des Knotens oder anderer Systeme in einer System-auf-einem-Chip-(SoC; system-on-a-chip) Architektur kombiniert sein.
-
Die nachfolgenden Figuren beschreiben Architekturen und Systeme zur Implementierung der vorangehenden Ausführungsbeispiele. Bei einigen Ausführungsbeispielen werden eine oder mehrere der vorangehend beschriebenen Hardwarekomponenten und/oder Anweisungen wie nachfolgend beschrieben emuliert oder als Softwaremodule implementiert.
-
Ausführungsbeispiele der vorangehend beschriebenen Anweisung(en) können in einem „generischen, vektorfreundlichen Anweisungsformat“ verkörpert werden, das nachfolgend beschrieben wird. Bei anderen Ausführungsbeispielen wird ein solches Format nicht verwendet, und es wird ein anderes Anweisungsformat verwendet, jedoch ist die nachfolgende Beschreibung der Writemask-Register, verschiedener Datentransformationen (Swizzle, Broadcast usw.), Adressierung etc. allgemein auf die Beschreibung der Ausführungsbeispiele der einen oder der mehreren vorangehenden Anweisungen anwendbar. Zusätzlich werden Systeme, Architekturen und Pipelines nachfolgend beschrieben. Ausführungsbeispiele der vorangehen Anweisung(en) können auf solchen Systemen, Architekturen und Pipelines ausgeführt werden, sind aber nicht auf die Beschriebenen beschränkt.
-
Ein Anweisungssatz kann ein oder mehrere Anweisungsformate umfassen. Ein gegebenes Anweisungsformat kann verschiedene Felder definieren (z.B. Anzahl der Bits, Lage der Bits), um unter anderem die auszuführende Operation (z.B. Opcode) und den einen oder die mehreren Operanden spezifizieren, an denen diese Operation ausgeführt werden soll, und/oder ein oder mehrere andere Datenfelder (z. B. Maske). Einige Anweisungsformate werden durch die Definition von Anweisungsvorlagen (oder Teilformaten) weiter unterteilt. Beispielsweise können die Anweisungsvorlagen eines bestimmten Anweisungsformats definiert sein, um unterschiedliche Teilmengen der Felder des Anweisungsformats zu umfassen (die umfassten Felder sind üblicherweise in der gleichen Reihenfolge, aber zumindest einige weisen unterschiedliche Bitpositionen aus, da weniger Felder umfasst sind) und/oder derart definiert sein, dass ein gegebenes Feld unterschiedlich interpretiert wird. So wird jede Anweisung einer ISA unter Verwendung eines gegebenen Anweisungsformats (und, falls definiert, in einer gegebenen Anweisungsvorlage dieses Anweisungsformats) ausgedrückt und umfasst Felder zur Angabe der Operation und der Operanden. Beispielsweise hat eine ADD-Anweisung einen spezifischen Opcode und ein Anweisungsformat auf, das ein Opcode-Feld umfasst, zur Spezifizierung dieses Opcodes und der Operandenfelder zur Auswahl von Operanden (Quelle1/Ziel und Quelle2); und ein Auftreten dieser ADD-Anweisung in einem Anweisungsstrom weist spezifische Inhalte in den Operandenfeldern auf, die spezifische Operanden auswählen. Ein Satz von SIMD-Erweiterungen, die als Advanced Vector Extensions (AVX) bezeichnet werden (AVX1 und AVX2) und das Vector Extensions (VEX)-Kodierungsschema verwenden wurde freigegeben und/oder veröffentlicht (z.B. siehe Intel® 64 und IA-32 Architectures Software Developer's Manual, September 2014; und siehe Intel® Advanced Vector Extensions Programming Reference, Oktober 2014).
-
Anwei sungsformate
-
Ausführungsbeispiele der hierin beschriebenen Anweisung(en) können in unterschiedlichen Formaten verkörpert sein. Zusätzlich werden Systeme, Architekturen und Pipelines nachfolgend beschrieben. Verkörperungen der Anweisung(en) können auf solchen Systemen, Architekturen und Pipelines ausgeführt werden, sind aber nicht auf die Beschriebenen beschränkt.
-
Generisches vektorfreundliches Anweisungsformat
-
Ein vektorfreundliches Anweisungsformat ist ein Anweisungsformat, das für Vektoranweisungen geeignet ist (z.B. gibt es bestimmte Felder, die spezifisch für Vektoroperationen sind). Während Ausführungsbeispiele beschrieben werden, in denen sowohl Vektor- als auch Skalaroperationen durch das vektorfreundliche Anweisungsformat unterstützt werden, verwenden alternative Ausführungsformen nur Vektoroperationen im vektorfreundlichen Anweisungsformat.
-
9A-9B sind gemäß einem Ausführungsbeispiel Blockdiagramme, die ein generisches, vektorfreundliches Anweisungsformat und dessen Anweisungsvorlagen darstellen. 9A ist ein Blockdiagramm, das ein generisches vektorfreundliches Anweisungsformat und dessen Klasse-A-Anweisungsvorlagen gemäß einem Ausführungsbeispiel darstellt; während 9B ein Blockdiagramm ist, das das generische vektorfreundliche Anweisungsformat und dessen Klasse-B-Anweisungsvorlagen gemäß einem Ausführungsbeispiel darstellt. Insbesondere ein generisches vektorfreundliches Anweisungsformat 900, für das Anweisungsvorlagen der Klasse A und der Klasse B definiert sind, die beide Kein-Speicherzugriff- 905 Anweisungsvorlagen und Speicherzugriff- 920 Anweisungsvorlagen umfassen. Der Begriff generisch im Zusammenhang mit dem vektorfreundlichen Anweisungsformat bezieht sich darauf, dass das Befehlsformat nicht an irgendeinen bestimmten Anweisungssatz gebunden ist.
-
Während Ausführungsbeispiele beschrieben werden, in denen das vektorfreundliche Anweisungsformat Folgendes unterstützt: eine 64-Byte-Vektoroperandenlänge (oder -größe) mit 32-Bit- (4 Byte) oder 64-Bit- (8 Byte) Datenelementbreiten (oder -größen) (und somit besteht ein 64-Byte-Vektor entweder aus 16 doppelwortgroßen Elementen oder alternativ aus 8 vierwortgroßen Elementen); eine 64-Byte-Vektoroperandenlänge (oder -größe) mit 16-Bit- (2 Byte) oder 8-Bit- (1 Byte) Datenelementbreiten (oder -größen); eine 32 Byte Vektoroperandenlänge (oder -größe) mit 32 Bit (4 Byte), 64 Bit (8 Byte), 16 Bit (2 Byte) oder 8 Bit (1 Byte) Datenelementbreiten (oder -größen); und einer Vektoroperandenlänge (oder -größe) von 16 Byte mit Datenelementbreiten (oder -größen) von 32 Bit (4 Byte), 64 Bit (8 Byte), 16 Bit (2 Byte) oder 8 Bit (1 Byte); alternative Ausführungsbeispiele können mehr, weniger und/oder unterschiedliche Vektoroperandengrößen unterstützen (z.B. 256 Byte Vektoroperanden) mit mehr, weniger oder unterschiedlichen Datenelementbreiten (z.B. 128 Bit (16 Byte) Datenelementbreiten).
-
Die Klasse-A-Anweisungsvorlagen in 9A umfassen: 1) innerhalb der Kein-Speicherzugriff- 905 Anweisungsvorlagen wird eine Kein-Speicherzugriff, Voll-Runden-Steuerungs-Typ-Operation - 910 Anweisungsvorlage und eine Kein-Speicherzugriff Datentransformationsytp-Operation-915 Anweisungsvorlage; und 2) innerhalb der Speicherzugriff- 920 Anweisungsvorlage wird eine Speicherzugriff, Temporal -925 Anweisungsvorlage und eine Speicherzugriff, Nichttemporal 930 Anweisungsvorlage gezeigt. Die Anweisungsvorlagen der Klasse B in 9B umfassen: 1) innerhalb der Kein-Speicherzugriff- 905 Anweisungsvorlagen wird eine Kein-Speicherzugriff, Schreibmaske-Steuerung, Teilrunden-Steuertyp-Operation -912 Anweisungsvorlage und eine Kein-Speicherzugriff, Schreibmaske-Steuerung, V-Größe-Typ-Operation- 917 Anweisungsvorlage gezeigt; und 2) innerhalb der Speicherzugriff-920 Anweisungsvorlagen wird eine Speicherzugriff, Schreibmaske-Steuerung -927 Anweisungsvorlage gezeigt.
-
Das generische vektorfreundliche Anweisungsformat 900 umfasst die folgenden Felder, die nachfolgend in der in 9A-9B dargestellten Reihenfolge aufgeführt sind. Das Formatfeld 940 - ein spezifischer Wert (ein Anweisungsformat-Identifiziererwert) in diesem Feld identifiziert eindeutig das vektorfreundliche Anweisungsformat und damit das Auftreten von Anweisungen in dem vektorfreundlichen Anweisungsformat in Anweisungsströmen. Somit ist dieses Feld insofern optional, als es für einen Anweisungssatz, der nur das generische vektorfreundliche Anweisungsformat aufweist, nicht benötigt wird.
-
Basisoperationsfeld 942 - sein Inhalt unterscheidet unterschiedliche Basisoperationen. Das Registerindexfeld 944 - sein Inhalt, direkt oder durch Adressenerzeugung, spezifiziert die Positionen der Quell- und Zieloperanden, sei es in Registern oder im Speicher. Diese umfassen eine ausreichende Anzahl von Bits, um N Register aus einer PxQ-Registerdatei (z. B. 32x512, 16x128, 32x1024, 64x1024) auszuwählen. Während N bei einem Ausführungsbeispiel bis zu drei Quellen und ein Zielregister sein kann, können alternative Ausführungsbeispiele mehr oder weniger Quellen und Zielregister unterstützen (können z.B. bis zu zwei Quellen unterstützen, wobei eine dieser Quellen auch als das Ziel agiert, können bis zu drei Quellen unterstützen, wobei eine dieser Quellen auch als Ziel agiert, können bis zu zwei Quellen und ein Ziel unterstützen).
-
Modifiziererfeld 946 - sein Inhalt unterscheidet das Auftreten von Anweisungen in dem generischen Vektoranweisungsformat, die den Speicherzugriff spezifizieren, von solchen, die dies nicht tun, d.h. zwischen Kein-Speicherzugriff- 905 Anweisungsvorlagen und Speicherzugriff- 920 Anweisungsvorlagen. Speicherzugriffsoperationen lesen und/oder schreiben in die Speicherhierarchie (in einigen Fällen werden die Quell- und/oder Zieladressen unter Verwendung von Werten in Registern spezifiziert), während Kein-Speicherzugriff-Operationen dies nicht tun (z.B. sind Quelle und Ziel Register). Während dieses Feld bei einem Ausführungsbeispiel auch zwischen drei unterschiedlichen Arten der Durchführung von Speicheradressberechnungen auswählt, können alternative Ausführungsbeispiele mehr, weniger oder unterschiedliche Arten der Durchführung von Speicheradressberechnungen unterstützen.
-
Augmentationsoperationsfeld 950 - sein Inhalt unterscheidet, welche aus einer Vielzahl von unterschiedlichen Operationen zusätzlich zur Basisoperation durchgeführt werden soll. Dieses Feld ist kontextspezifisch. Bei einem Ausführungsbeispiel ist dieses Feld in ein Klassenfeld 968, ein Alphafeld 952 und ein Betafeld 954 unterteilt. Das Augmentationsoperationsfeld 950 erlaubt es, dass gemeinsame Gruppen von Operationen in einer einzelnen Anweisung anstelle von 2, 3 oder 4 Anweisungen durchgeführt werden.
-
Skalierungsfeld 960 - sein Inhalt ermöglicht die Skalierung des Inhalts des Indexfeldes für die Erzeugung von Speicheradressen (z.B. für eine Adressenerzeugung, die 2-Skala * Index + Basis verwendet).
-
Verschiebungsfeld 962A- sein Inhalt wird als Teil der Speicheradressenerzeugung verwendet (z.B. für eine Adressenerzeugung, die 2-Skala * Index + Basis + Verschiebung verwendet).
-
Verschiebungsfaktorfeld 962B (es wird darauf hingewiesen, dass die Gegenüberstellung von Verschiebungsfeld 962A direkt über Verschiebungsfaktorfeld 962B anzeigt, dass das eine oder das andere verwendet wird) - sein Inhalt wird als Teil der Adressenerzeugung verwendet; er spezifiziert einen Verschiebungsfaktor, der um die Größe eines Speicherzugriffs (N) skaliert werden soll - wobei N die Anzahl der Bytes in dem Speicherzugriff ist (z.B. für eine Adressenerzeugung, die 2Skala * Index + Basis + skalierte Verschiebung verwendet). Redundante Bits niedriger Ordnung werden ignoriert, und daher wird der Inhalt des Verschiebungsfaktorfeldes mit der Gesamtgröße (N) des Speicheroperanden multipliziert, um die endgültige Verschiebung zu erzeugen, die bei der Berechnung einer effektiven Adresse verwendet werden soll. Der Wert von N wird von der Prozessor-Hardware bei Laufzeit basierend auf dem Vollständiger-Opcode-Feld 974 (später hierin beschrieben) und dem Datenmanipulationsfeld 954C bestimmt. Das Verschiebungsfeld 962A und das Verschiebungsfaktorfeld 962B sind insofern optional, als sie nicht für die Kein-Speicherzugriff- 905 Anweisungsvorlagen verwendet werden und/oder unterschiedliche Ausführungsformen nur eine oder keine der beiden implementieren.
-
Datenelementbreite-Feld 964 - sein Inhalt unterscheidet, welche von einer Anzahl von Datenelementbreiten verwendet werden soll (bei einigen Ausführungsbeispielen für alle Anweisungen; bei anderen Ausführungsbeispielen nur für einige der Anweisungen). Dieses Feld ist optional in dem Sinne, dass es nicht benötigt wird, wenn nur eine Datenelementbreite unterstützt wird und/oder Datenelementbreiten unter Verwendung eines Aspekts der Opcodes unterstützt werden.
-
Schreibmaske-Feld 970 - sein Inhalt steuert auf einer Pro-Datenelementposition-Basis, ob diese Datenelementposition in dem Zielvektoroperanden das Ergebnis der Basisoperation und der Augmentationsoperation widerspiegelt. Anweisungsvorlagen der Klasse A unterstützen Zusammenführungs-Schreib-Maskieren, während Anweisungsvorlagen der Klasse B sowohl Zusammenführungs- als auch Nullsetzen-Schreib-Maskieren unterstützen. Beim Zusammenführen ermöglichen es Vektormasken, irgendeinen Satz von Elementen im Ziel vor Aktualisierungen während der Ausführung irgendeiner Operation (spezifiziert durch die Basisoperation und die Augmentationsoperation) zu schützen; bei einem anderen Ausführungsbeispiel wird der alte Wert jedes Elements des Ziels beibehalten, bei dem das entsprechende Maskenbit eine 0 aufweist. Im Gegensatz dazu erlauben die Nullsetzungs-Vektormasken das Nullsetzen irgendeines Satzes von Elementen in dem Ziel während der Ausführung irgendeiner Operation (spezifiziert durch die Basisoperation und die Augmentationsoperation); bei einem Ausführungsbeispiel wird ein Element des Ziels auf 0 gesetzt, wenn das entsprechende Maskenbit den Wert 0 aufweist. Eine Teilmenge dieser Funktionalität ist die Fähigkeit, die Vektorlänge der ausgeführten Operation zu steuern (d.h. die Spanne der Elemente, die modifiziert werden, vom ersten bis zum letzten); es ist jedoch nicht erforderlich, dass die Elemente, die modifiziert werden, aufeinander folgen. So erlaubt das Schreibmaske-Feld 970 partielle Vektoroperationen, umfassend Laden, Speichern, Arithmetik, Logik usw. Während Ausführungsbeispiele beschrieben werden, in denen der Inhalt des Schreibmaske-Feldes 970 eines aus einer Anzahl von Schreibmaske-Registern auswählt, das die zu verwendende Schreibmaske umfasst (und somit der Inhalt des Schreibmaske-Feldes 970 indirekt die durchzuführende Maskierung identifiziert), ermöglichen alternative Ausführungsbeispiele stattdessen oder zusätzlich, dass der Inhalt des Schreibmaske-Feldes 970 die durchzuführende Maskierung direkt spezifiziert.
-
Unmittelbarwert-Feld 972 - sein Inhalt ermöglicht die Festlegung eines Unmittelbarwerts. Dieses Feld ist optional in dem Sinne, dass es in einer Implementierung des generischen vektorfreundlichen Formats, die keinen Unmittelbarwert unterstützt, nicht vorliegt, und dass es in Anweisungen, die keinen Unmittelbarwert verwenden, nicht vorliegt.
-
Klassenfeld 968 - sein Inhalt unterscheidet zwischen unterschiedlichen Klassen von Anweisungen. Bezugnehmend auf 9A-9B wählen die Inhalte dieses Feldes zwischen Klasse-A- und Klasse-B-Anweisungen aus. In 9A-9B werden Quadrate mit abgerundeten Ecken verwendet, um anzuzeigen, dass ein spezifischer Wert in einem Feld vorliegt (z.B. jeweils Klasse A 968A und Klasse B 968B für das Klassenfeld 968 in 9A-9B).
-
Anweisungsvorlagen der Klasse A
-
Im Fall der Kein-Speicherzugriff-905 Anweisungsvorlagen der Klasse A wird das Alphafeld 952 als ein RS-Feld 952A interpretiert, dessen Inhalt unterscheidet, welche der unterschiedlichen Augmentationsoperationsarten durchgeführt werden soll (z.B. sind Runden 952A.1 und Datentransformation 952A.2 jeweils für die Kein-Speicherzugriff, Runden-Typ-Operation 910 und die Kein-Speicherzugriff, Datentransformations-Typ-Operation- 915 Anweisungsvorlage spezifiziert), während das Betafeld 954 unterscheidet, welche der Operationen des spezifizierten Typs durchgeführt werden soll. In den Kein-Speicherzugriff- 905 Anweisungsvorlagen sind das Skalierungsfeld 960, das Verschiebungsfeld 962A und das Verschiebungsskalierungsfeld 962B nicht vorhanden.
-
Kein-Speicherzugriff-Anweisungsvorlagen Voll-Runden-Steuerungs-Typ-Operation
-
In der Kein-Speicherzugriff-Voll-Runden-Steuerungs-Typ-Operation- 910 Anweisungsvorlage wird das Betafeld als ein Runden-Steuerungsfeld 954A interpretiert, dessen Inhalt€ statisches Runden bereitstellt. Während in den beschriebenen Ausführungsbeispielen das Runden-Steuerungsfeld 954A ein Feld 956 zur Unterdrückung aller Fließkomma-Ausnahmen (SAE; suppress all floating point exceptions) und ein Runden-Operations-Steuerungsfeld 958 umfasst, können alternative Ausführungsbeispiele diese beiden Konzepte in dasselbe Feld kodieren können unterstützen oder nur das eine oder das andere dieser Konzepte/Felder umfassen (können z.B. nur das Runden-Operations-Steuerungsfeld 958 umfassen).
-
SAE-Feld 956 - sein Inhalt unterscheidet, ob das Melden von Ausnahmeereignissen deaktiviert werden soll oder nicht; wenn der Inhalt des SAE-Feldes 956 anzeigt, dass die Unterdrückung aktiviert ist, meldet eine gegebene Anweisung nicht irgendeine Art von Fließkomma-Ausnahme-Flag und löst nicht irgendeinen Fließkomma-Ausnahme-Handhaber aus.
-
Das Runden-Operations-Steuerungsfeld 958 - sein Inhalt unterscheidet, welche aus einer Gruppe von Runden-Operationen durchgeführt werden soll (z.B. Aufrunden, Abrunden, Runden gegen Null und Runden auf die nächste). So erlaubt das Runden-Operations-Steuerungsfeld 958 die Änderung des Runden-Modus auf einer Pro-Anweisung-Basis. Bei einem Ausführungsbeispiel, bei dem ein Prozessor ein Steuerregister zur Angabe von Runden-Modi umfasst, überschreibt der Inhalt des Runden-Operations-Steuerungsfeldes 950 diesen Registerwert.
-
Kein-Speicherzugriff Anweisungsvorlagen - Datentransformations-Typ-Operation
-
In der Kein-Speicherzugriff-Datentransformations-Typ-Operation- 915 Anweisungsvorlage wird das Betafeld 954 als Datentransformationsfeld 954B interpretiert, dessen Inhalt unterscheidet, welche aus einer Anzahl von Datentransformationen durchgeführt werden soll (z.B. keine Datentransformation, Swizzle, Rundsenden (Broadcast)).
-
Im Falle einer Speicherzugriff- 920 Anweisungsvorlage der Klasse A wird das Alphafeld 952 als ein Verdrängungshinweisfeld 952B interpretiert, dessen Inhalt unterscheidet, welcher der Verdrängungshinweise verwendet werden soll (in 9A, Temporal 952B.1 und Nichttemporal 952B.2 werden jeweils spezifiziert für den Speicherzugriff, Temporal- 925 Anweisungsvorlage und Speicherzugriff, Nichttemporal- 930 Anweisungsvorlage), während das Betafeld 954 als ein Datenmanipulationsfeld 954C interpretiert wird, dessen Inhalt unterscheidet, welche aus einer Anzahl von Datenmanipulationsoperationen (auch als Primitive bezeichnet) durchgeführt werden soll (z.B. keine Manipulation; Rundsenden; Aufwärtswandlung einer Quelle; und Abwärtswandlung eines Ziels). Die Speicherzugriff- 920 Anweisungsvorlagen umfassen das Skalierungsfeld 960, und optional das Verschiebungsfeld 962A oder das Verschiebungsskalierungsfeld 962B.
-
Vektor-Speicher-Anweisungen führen Vektor-Laden aus dem und Vektor-Speicherungen in den Speicher aus, mit Wandlungsunterstützung. Wie bei regulären Vektoranweisungen übertragen Vektorspeicheranweisungen Daten datenelementweise vom/zum Speicher, wobei die tatsächlich übertragenen Elemente durch den Inhalt der als die Schreibmaske ausgewählten Vektor-maske bestimmt werden.
-
Speicherzugriff-Anweisungsvorlagen - Temporal
-
Temporale Daten sind Daten, die wahrscheinlich früh genug wiederverwendet werden, um vom Caching zu profitieren. Dies ist jedoch ein Hinweis, und unterschiedliche Prozessoren können dies auf unterschiedliche Weise implementieren, umfassend das vollständige Ignorieren des Hinweises.
-
Speicherzugriff-Anweisungsvorlagen - Nichttemporal
-
Nichttemporale Daten sind Daten, bei denen es unwahrscheinlich ist, dass sie früh genug wiederverwendet werden, um vom Caching im 1.-Level-Cache zu profitieren, und denen bei einer Verdrängung Priorität eingeräumt werden sollte. Dies ist jedoch ein Hinweis, und unterschiedliche Prozessoren können ihn auf unterschiedliche Weise implementieren, umfassend das vollständige Ignorieren des Hinweises.
-
Anweisungsvorlagen der Klasse B
-
Im Fall der Anweisungsvorlagen der Klasse B wird das Alphafeld 952 als ein Schreibmaske-Steuerungs- (Z) Feld 952C interpretiert, dessen Inhalt unterscheidet, ob das durch das Schreibmaske-Feld 970 gesteuerte Schreib-Maskieren eine Zusammenführung oder eine Nullbildung (zeroing) sein soll.
-
Im Fall der Kein-Speicherzugriff- 905 Anweisungsvorlagen der Klasse B wird ein Teil des Betafeldes 954 als ein RL-Feld 957A interpretiert, dessen Inhalt unterscheidet, welche der unterschiedlichen Augmentationsoperationsarten durchgeführt werden soll (z.B. sind Runden 957A.1 und Vektorlänge (VGRÖSSE) 957A.2 jeweils für die Kein-Speicherzugriff, Schreibmaske-Steuerung, Teilrunden-Steuertyp-Operation 912 Anweisungsvorlage und die Kein-Speicherzugriff, Schreibmaske-Steuerung, VGRÖSSE-Typ-Operation-917 Anweisungsvorlage spezifiziert), während der Rest des Betafeldes 954 unterscheidet, welche der Operationen des spezifiziertens Typs durchgeführt werden soll. In den Kein-Speicherzugriff- 905 Anweisungsvorlagen sind das Skalierungsfeld 960, das Verschiebungsfeld 962A und das Verschiebungsskalenfeld 962B nicht vorhanden.
-
In der Kein-Speicherzugriff, Schreibmaske-Steuerung, Teilrunden-Steuerungstyp-Operation- 910 Anweisungsvorlage wird der Rest des Betafeldes 954 als Rundenoperationsfeld 959A interpretiert, und das Melden von Ausnahmeereignissen ist deaktiviert (eine gegebene Anweisung meldet nicht irgendeine Art von Fließkomma-Ausnahme-Flag und löst nicht irgendeinen Fließkomma-Ausnahme-Handhaber aus).
-
Das Runden-Operations-Steuerungsfeld 959A - genau wie das Runden-Operations-Steuerungsfeld 958 unterscheidet sein Inhalt, welche aus einer Gruppe von Runden-Operationen durchgeführt werden soll (z.B. Aufrunden, Abrunden, Runden gegen Null und Runden auf die nächste). So erlaubt das Runden-Operations-Steuerungsfeld 959A die Änderung des Runden-Modus auf einer Pro-Anweisung-Basis. Bei einem Ausführungsbeispiel, bei dem ein Prozessor ein Steuerregister zur Spezifizierung von Runden-Modi umfasst, überschreibt der Inhalt des Runden-Operations-Steuerungsfeldes 950 diesen Registerwert.
-
In der Kein-Speicherzugriff, Schreibmaske-Steuerung, VGRÖSSE-Typ-Operation- 917 Anweisungsvorlage (instruction template), wird der Rest des Betafeldes 954 als Vektorlängenfeld 959B interpretiert, dessen Inhalt unterscheidet, auf welcher aus einer Anzahl von Daten-Vektorlängen durchgeführt werden soll (z.B. 128, 256, oder 512 Bytes).
-
Im Falle einer Speicherzugriff- 920 Anweisungsvorlage der Klasse B wird ein Teil des Betafeldes 954 als Rundsende-Feld 957B interpretiert, dessen Inhalt unterscheidet, ob die Datenmanipulationsoperation vom Rundsende-Typ durchgeführt werden soll oder nicht, während der Rest des Betafeldes 954 als das Vektorlängenfeld 959B interpretiert wird. Die Speicherzugriff- 920 Anweisungsvorlagen umfassen das Skalierungsfeld 960, und optional das Verschiebungsfeld 962A oder das Verschiebungsskalierungsfeld 962B.
-
Im Hinblick auf das generische vektorfreundliche Anweisungsformat 900 wird ein Vollständiger-Opcode-Feld 974 gezeigt, das das Formatfeld 940, das Basisoperationsfeld 942 und das Datenelementbreite-Feld 964 umfasst. Während ein Ausführungsbeispiel gezeigt wird, bei dem das Vollständiger-Opcode-Feld 974 alle diese Felder umfasst, umfasst das Vollständiger-Opcode-Feld 974 weniger als alle diese Felder in Ausführungsbeispielen, die nicht alle davon unterstützen. Das Vollständiger-Opcode-Feld 974 stellt den Operationscode (Opcode) bereit.
-
Das Augmentationsoperationsfeld 950, das Datenelementbreitefeld 964 und das Schreibmaske-Feld 970 ermöglichen die Spezifizierung dieser Merkmale auf einer Pro-Anweisung-Basis in dem generischen vektorfreundlichen Anweisungsformat. Die Kombination aus Schreibmaske-Feld und Datenelementbreitenfeld erzeugt typisierte Anweisungen, dadurch, dass sie die Anwendung der Maske basierend auf unterschiedlichen Datenelementbreiten ermöglichen.
-
Die verschiedenen Anweisungsvorlagen, die in Klasse A und Klasse B zu finden sind, sind in unterschiedlichen Situationen von Vorteil. Bei einigen Ausführungsbeispielen können unterschiedliche Prozessoren oder unterschiedliche Kerne innerhalb eines Prozessors nur Klasse A, nur Klasse B oder beide Klassen unterstützen. So kann z.B. ein Hoch-Performance-Allzweck-Out-of-Order-Kern, der für Allzweck-Rechnen bestimmt ist, nur die Klasse B unterstützen, ein Kern, der in erster Linie für Grafik- und/oder wissenschaftliche (Durchsatz-) Berechnungen bestimmt ist, nur die Klasse A und ein Kern, der für beide bestimmt ist, kann beide unterstützen (ein Kern, der eine gewisse Mischung aus Vorlagen und Anweisungen aus beiden Klassen aufweist, aber nicht alle Vorlagen und Anweisungen aus beiden Klassen, fällt natürlich in den Schutzbereich der Erfindung). Außerdem kann ein einzelner Prozessor mehrere Kerne umfassen, die alle dieselbe Klasse unterstützen oder in denen unterschiedliche Kerne unterschiedliche Klassen unterstützen. Beispielsweise kann in einem Prozessor mit separaten Grafik- und Allzweckkernen einer der Grafikkerne, der in erster Linie für Grafik- und/oder wissenschaftliche Berechnung vorgesehen ist, nur Klasse A unterstützen, während einer oder mehrere der Allzweckkerne Hoch-Performance-Allzweckkerne mit Out-of-Order Ausführung und Registerumbenennung sein können, die für Allzweckberechnungen vorgesehen sind und nur Klasse B unterstützen. Ein anderer Prozessor, der keinen separaten Grafikkern hat, kann einen allgemeineren In-Order- oder Out-of-Order-Allzweckkern umfassen, der sowohl Klasse A als auch Klasse B unterstützt. Programme, die in einer Sprache hoher Ebene geschrieben sind, würden (z.B. gerade rechtzeitig kompiliert oder statisch kompiliert) in eine Vielzahl von unterschiedlichen ausführbaren Formen gebracht, umfassend 1) eine Form, die nur Anweisungen der Klasse(n) umfasst, die von dem Zielprozessor für die Ausführung unterstützt werden; oder 2) eine Form mit alternativen Routinen, die unter Verwendung unterschiedlicher Kombinationen der Anweisungen aller Klassen geschrieben sind, und mit einem Steuer-Flusscode, der die auszuführenden Routinen basierend auf den Anweisungen auswählt, die von dem Prozessor unterstützt werden, der den Code gerade ausführt.
-
Spezifisches vektorfreundliches Anweisungsformat
-
10A ist gemäß einem Ausführungsbeispiel ein Blockdiagramm, das ein spezifisches vektorfreundliches Anweisungsformat darstellt. 10 zeigt ein spezifisches vektorfreundliches Anweisungsformat 1000, das insofern spezifisch ist, als es die Position, Größe, Interpretation und Reihenfolge der Felder sowie Werte für einige dieser Felder spezifiziert. Zur Erweiterung des x86-Anweisungssatzes kann das spezifische vektorfreundliche Anweisungsformat 1000 verwendet werden, und daher sind einige der Felder ähnlich oder identisch mit denen, die in dem bestehenden x86-Anweisungssatz und dessen Erweiterung (z.B. AVX) verwendet werden. Dieses Format bleibt konsistent mit dem Präfixkodierungsfeld, dem Real-Opcode-Bytefeld, dem MOD R/M-Feld, dem SIB-Feld, dem Verschiebungsfeld und den Unmittelbarwert-Feldern des bestehenden x86-Anweisungssatzes mit Erweiterungen. Die Felder von 9, in die die Felder von 10 abgebildet sind, sind dargestellt.
-
Es wird darauf hingewiesen, dass, obwohl die Ausführungsbeispiele zu Illustrationszwecken im Zusammenhang mit dem generischen vektorfreundlichen Anweisungsformat 900 unter Bezugnahme auf das spezifische vektorfreundliche Anweisungsformat 1000 beschrieben werden, die Erfindung nicht auf das spezifische vektorfreundliche Anweisungsformat 1000 beschränkt ist, außer wo dies beansprucht wird. Beispielsweise betrachtet das generische, vektorfreundliche Anweisungsformat 900 eine Vielzahl möglicher Größen für die verschiedenen Felder, während das spezifische vektorfreundliche Anweisungsformat 1000 mit Feldern spezifischer Größen dargestellt wird. Als spezifisches Beispiel, während das Datenelementbreitenfeld 964 als ein Ein-BitFeld in dem spezifischen vektorfreundlichen Anweisungsformat 1000 dargestellt ist, ist die Erfindung nicht dahingehend eingeschränkt (d.h. das generische vektorfreundliche Anweisungsformat 900 berücksichtige andere Größen des Datenelementbreitenfeldes 964).
-
Das generische vektorfreundliche Anweisungsformat 900 umfasst die folgenden Felder, die nachfolgend in der in 10A dargestellten Reihenfolge aufgeführt sind. EVEX Präfix (Bytes 0-3) 1002 - wird in einer Vier-Byte-Form kodiert.
-
Formatfeld 940 (EVEX Byte 0, Bits [7:0]) - das erste Byte (EVEX Byte 0) ist das Formatfeld 940 und es enthält 0x62 (den eindeutigen Wert, der zur Unterscheidung des vektorfreundlichen Anweisungsformats bei einem Ausführungsbeispiel verwendet wird).
-
Das zweite bis vierte Byte (EVEX Bytes 1-3) umfassen eine Anzahl von Bitfeldern, die spezifische Fähigkeit bereitstellen. Das REX-Feld 1005 (EVEX Byte 1, Bits [7-5]) - besteht aus einem EVEX.R-Bitfeld (EVEX Byte 1, Bit [7] - R), EVEX.X-Bitfeld (EVEX Byte 1, Bit [6] - X) und 957BEX Byte 1, Bit [5] - B). Die EVEX.R, EVEX.X und EVEX.B Bitfelder stellen die gleiche Funktionalität wie die entsprechenden VEX-Bitfelder bereit und werden unter Verwendung einer 1s-Komplementform kodiert, d.h. ZMM0 wird als 1111B, ZMM15 wird als 0000B kodiert. Andere Felder der Anweisungen kodieren die unteren drei Bits der Registerindizes, wie im Stand der Technik bekannt ist (rrr, xxx und bbb), so dass Rrrr, Xxxx und Bbbb durch Hinzufügen von EVEX.R, EVEX.X und EVEX.B gebildet werden können.
-
Das REX'-Feld 910 - dies ist der erste Teil des REX'-Feldes 910 und ist das EVEX.R' Bitfeld (EVEX Byte 1, Bit [4] - R'), das zur Kodierung entweder der oberen 16 oder der unteren 16 des erweiterten 32-Registersatzes verwendet wird. Bei einem Ausführungsbeispiel wird dieses Bit zusammen mit anderen, wie nachstehend angezeigt, im bit-invertierten Format gespeichert, um (im bekannten x86-32-Bit-Modus) von der BOUND- (GRENZE-) Anweisung zu unterscheiden, deren reales Opcode-Byte 62 ist, aber in dem MOD R/M-Feld (nachfolgend beschrieben) den Wert 11 in dem MOD-Feld nicht akzeptiert; alternative Ausführungsbeispiele speichern dieses und die anderen nachfolgenden angezeigten Bits nicht in dem invertierten Format. Ein Wert von 1 wird zur Kodierung der unteren 16 Register verwendet. Anders ausgedrückt wird R'Rrrr durch die Kombination von EVEX.R', EVEX.R und den anderen RRR von anderen Feldern gebildet.
-
Opcode-Abbildungs-Feld 1015 (EVEX Byte 1, Bits [3:0] - mmmm) - sein Inhalt kodiert ein impliziertes führendes Opcode-Byte (0F, 0F 38 oder 0F 3). Das Datenelementbreite-Feld 964 (EVEX Byte 2, Bit [7] - W) - wird durch die Notation EVEX.W repräsentiert. EVEX.W wird verwendet, um die Granularität (Größe) des Datentyps (entweder 32-Bit-Datenelemente oder 64-Bit-Datenelemente) zu definieren.
-
EVEX.vvvv 1020 (EVEX Byte 2, Bits [6:3] -vvvv) - die Rolle von EVEX.vvvv kann Folgendes umfassen: 1) EVEX.vvvv kodiert den ersten Quellregister-Operanden, spezifiziert in invertierter (1s-Komplement) Form und ist gültig für Anweisungen mit 2 oder mehr Quelloperanden; 2) EVEX.vvvv kodiert den Zielregister-Operanden, spezifiziert in 1s-Komplementform für bestimmte Vektorverschiebungen; oder 3) EVEX.vvvv kodiert nicht irgendeinen Operanden, das Feld ist reserviert und sollte 1111b umfassen. Somit kodiert das EVEX.vvvv Feld 1020 die 4 niederwertigen Bits des ersten Quellregisterspezifizierers, die in invertierter Form (1s-Komplement) gespeichert sind. Abhängig von der Anweisung wird ein zusätzliches unterschiedliches EVEX-Bitfeld verwendet, um die Spezifizierergröße auf 32 Register zu erweitern.
-
EVEX.U 968 Klassenfeld (EVEX Byte 2, Bit [2] -U) - Wenn EVEX.U = 0, zeigt es die Klasse A oder EVEX.U0 an; wenn EVEX.U = 1, zeigt es die Klasse B oder EVEX.U1 an. Das Präfixkodierungsfeld 1025 (EVEX-Byte 2, Bits [1:0]-pp) - stellt zusätzliche Bits für das Basisoperationsfeld bereit. Zusätzlich zu dem Bereitstellen von Unterstützung für die Legacy-SSE-Anweisungen in dem EVEX-Präfix-Format hat dies auch den Vorteil, dass das SIMD-Präfix komprimiert wird (statt eines Bytes zur Darstellung des SIMD-Präfixes benötigt das EVEX-Präfix nur 2 Bits). Bei einem Ausführungsbeispiel, zur Unterstützung von Legacy-SSE-Anweisungen, die ein SIMD-Präfix (66H, F2H, F3H) sowohl in dem Legacy-Format als auch in dem EVEX-Präfix-Format verwenden, werden diese Legacy-SIMD-Präfixe in das SIMD-Präfix-Codierfeld codiert; und werden zur Laufzeit in das Legacy-SIMD-Präfix erweitert, bevor sie dem PLA des Dekodierers bereitgestellt werden (sodass das PLA sowohl das Legacy- als auch das EVEX-Format dieser Legacy-Anweisungen ohne Modifikation ausführen kann). Obwohl neuere Anweisungen den Inhalt des EVEX-Präfixkodierungsfeldes direkt als eine Opcode-Erweiterung verwenden könnten, erweitern bestimmte Ausführungsbeispiele aus Gründen der Konsistenz in ähnlicher Weise, erlauben aber unterschiedliche Bedeutungen, die durch diese Legacy-SIMD-Präfixe spezifiziert werden sollen. Ein alternatives Ausführungsbeispiel könnte das PLA so neu entwerfen, dass es die 2-Bit-SIMD-Präfixkodierungen unterstützt und somit die Erweiterung nicht erforderlich ist.
-
Alphafeld 952 (EVEX Byte 3, Bit [7] - EH; auch bekannt als EVEX.EH, EVEX.rs, EVEX.RL, EVEX. Schreibmaske-Steuerung, und EVEX.N; auch mit α dargestellt) - wie vorangehend beschrieben, ist dieses Feld kontextspezifisch. Betafeld 954 (EVEX Byte 3, Bits [6:4]-SSS, auch bekannt als EVEX.s2-0, EVEX.r2-0, EVEX.rr1, EVEX.LL0, EVEX.LLB; auch mit βββ dargestellt) - wie vorangehend beschrieben, ist dieses Feld kontextspezifisch.
-
Das REX-Feld 910 - dies ist der Rest des REX'-Feldes 910 und ist das EVEX.V'-Bitfeld (EVEX Byte 3, Bit [3] - V'), das zur Kodierung entweder der oberen 16 oder der unteren 16 des erweiterten 32-Registersatzes verwendet werden kann. Dieses Bit wird in dem bit-invertierten Format gespeichert. Ein Wert von 1 wird zur Kodierung der unteren 16 Register verwendet. Anders ausgedrückt wird V'VVVV durch die Kombination von EVEX.V', EVEX.vvvv gebildet.
-
Das Schreibmaske-Feld 970 (EVEX-Byte 3, Bits [2:0]-kkk) - sein Inhalt spezifiziert den Index eines Registers in den Schreibmaske-Registern wie vorangehend beschrieben. Bei einem Ausführungsbeispiel weist der spezifische Wert EVEX.kkk=000 ein spezielles Verhalten auf, das impliziert, dass keine Schreibmaske für die jeweilige Anweisung verwendet wird (dies kann auf verschiedene Weisen implementiert werden, umfassend die Verwendung einer Schreibmaske, die mit allen Einsen fest verdrahtet ist, oder einer Hardware, die die Maskierungshardware umgeht).
-
Das Real-Opcode-Feld 1030 (Byte 4) ist auch als das Opcode-Byte bekannt. In diesem Feld wird ein Teil des Opcodes spezifiziert. Das MOD R/M Feld 1040 (Byte 5) umfasst MOD Feld 1042, Reg Feld 1044 und R/M Feld 1046. Wie vorangehend beschrieben, unterscheidet der Inhalt des MOD-Feldes 1042 zwischen Speicherzugriff- und Kein-Speicherzugriff-Operationen. Die Rolle des Reg-Feldes 1044 lässt sich auf zwei Situationen zusammenfassen: Kodieren entweder wird des Zielregisteroperanden oder eines Quellregisteroperanden, oder Behandlung als Opcode-Erweiterung behandelt und nicht Verwendung zur Kodierung irgendeines Anweisungsoperanden verwendet. Die Rolle des R/M-Feldes 1046 kann Folgendes umfassen: Codierung des Anweisungsoperanden, der eine Speicheradresse referenziert, oder Codierung entweder des Zielregisteroperanden oder eines Quellregisteroperanden.
-
Skalierung, Index, Basis-(SIB) Byte (Byte 6) - Wie vorangehend beschrieben, wird der Inhalt des Skalierungsfeldes 950 zur Erzeugung von Speicheradressen verwendet. SIB.xxx 1054 und SIB.bbb 1056 - auf den Inhalt dieser Felder wurde vorangehend in Bezug auf die Registerindizes Xxxx und Bbbb verwiesen.
-
Verschiebungsfeld 962A (Bytes 7-10) - wenn MOD-Feld 1042 10 enthält, sind die Bytes 7-10 das Verschiebungsfeld 962A, und es funktioniert genauso wie die Legacy-32-Bit-Verschiebung (disp32) und arbeitet bei Byte-Granularität.
-
Das Verschiebungsfaktor-Feld 962B (Byte 7) - wenn MOD-Feld 1042 01 enthält, ist Byte 7 das Verschiebungsfaktor-Feld 962B. Die Position dieses Feldes ist die gleiche wie die der Legacy-x86-Anweisungssatz- 8-Bit-Verschiebung (disp8), die bei Byte-Granularität arbeitet. Da disp8 vorzeichenerweitert ist, kann es nur Versätze zwischen -128 und 127 Bytes adressieren; in Bezug auf 64-Byte-Cache-Zeilen verwendet disp8 8 Bits, die auf nur vier wirklich nützliche Werte gesetzt werden können -128, -64, 0 und 64; da oft ein größerer Bereich benötigt wird, wird disp32 verwendet; disp32 benötigt jedoch 4 Bytes. Im Gegensatz zu disp8 und disp32 ist das Verschiebungsfaktorfeld 962B eine Neuinterpretation von disp8; bei Verwendung des Verschiebungsfaktorfeldes 962B wird die tatsächliche Verschiebung durch den Inhalt des Verschiebungsfaktorfeldes multipliziert mit der Größe des Speicheroperandenzugriffs (N) bestimmt. Diese Art der Verschiebung wird als disp8*N bezeichnet. Dies verringert die durchschnittliche Anweisungslänge (ein einzelnes Byte, das für die Verschiebung verwendet wird, aber mit einem viel größeren Bereich). Eine solche komprimierte Verschiebung basiert auf der Annahme, dass die effektive Verschiebung ein Vielfaches der Granularität des Speicherzugriffs beträgt und daher die redundanten niederwertigen Bits des Adress-Versatzes nicht kodiert werden müssen. Anders ausgedrückt ersetzt das Verschiebungsfaktorfeld 962B die Legacy-x86-Anweisungssatz-8-Bit-Verschiebung. Daher wird das Verschiebungsfaktorfeld 962B auf die gleiche Weise kodiert wie eine x86-Anweisungssatz-8-Bit-Verschiebung (also keine Änderungen in den ModRM/SIB-Kodierungsregeln), mit der einzigen Ausnahme, dass disp8 auf disp8*N überladen wird. Anders ausgedrückt gibt es keine Änderungen in den Kodierungsregeln oder Kodierungslängen, sondern nur in der Interpretation des Verschiebungswertes durch die Hardware (die die Verschiebung um die Größe des Speicheroperanden skalieren muss, um einen byteweisen Adress-Versatz zu erhalten). Das Unmittelbarwert-Feld 972 arbeitet wie vorangehend beschrieben.
-
Vollständiger-Opcode-Feld
-
10B ist ein Blockdiagramm, das die Felder des spezifischen vektorfreundlichen Anweisungsformats 1000 darstellt, die gemäß einem Ausführungsbeispiel das Vollständiger-Opcode-Feld 974 ausmachen. Insbesondere umfasst das Vollständiger-Opcode-Feld 974 das Formatfeld 940, das Basisoperationsfeld 942 und das Datenelementbreiten- (W) Feld 964. Das Basisoperationsfeld 942 umfasst das Präfixkodierungsfeld 1025, das Opcode-Abbildung-Feld 1015 und das Real-Opcode-Feld 1030.
-
Register-Index-Feld
-
10C ist ein Blockdiagramm, das die Felder des spezifischen vektorfreundlichen Anweisungsformats 1000 darstellt, die gemäß einem Ausführungsbeispiel das Registerindexfeld 944 ausmachen. Insbesondere umfasst das Registerindexfeld 944 das REX-Feld 1005, das REX'-Feld 1010, das MODR/M.reg-Feld 1044, das MODR/M.r/m-Feld 1046, das VVVV-Feld 1020, xxx-Feld 1054 und das bbb-Feld 1056.
-
Augmentationsoperationsfeld
-
10D ist ein Blockdiagramm, das die Felder des spezifischen vektorfreundlichen Anweisungsformats 1000 darstellt, die gemäß einem Ausführungsbeispiel das Augmentationsoperationsfeld 950 ausmachen. Wenn das Klassen- (U) Feld 968 0 enthält, bezeichnet es EVEX.U0 (Klasse A 968A); wenn es 1 enthält, bezeichnet es EVEX.U1 (Klasse B 968B). Wenn U=0 und das MOD-Feld 1042 11 enthält (was eine Keine-Speicherzugriff-Operation bezeichnet), wird das Alphafeld 952 (EVEX-Byte 3, Bit [7] - EH) als das rs-Feld 952A interpretiert. Wenn das rs-Feld 952A eine 1 enthält (Runden 952A.1), wird das Beta-Feld 954 (EVEX Byte 3, Bits [6:4] - SSS) als das Runden-Steuerungsfeld 954A interpretiert. Das Runden-Steuerungsfeld 954A umfasst ein Ein-Bit-SAE-Feld 956 und ein Zwei-Bit-Runden-Operationsfeld 958. Wenn das rs-Feld 952A eine 0 enthält (Datentransformation 952A.2), wird das Betafeld 954 (EVEX Byte 3, Bits [6:4] - SSS) als ein Drei-Bit-Datentransformationsfeld 954B interpretiert. Wenn U=0 und das MOD-Feld 1042 00, 01 oder 10 enthält (was eine Speicherzugriffsoperation bezeichnet), wird das Alphafeld 952 (EVEX Byte 3, Bit [7] - EH) als das Verdrängungshinweis- (EH; eviction hint) Feld 952B interpretiert und das Betafeld 954 (EVEX Byte 3, Bit [6:4] - SSS) wird als ein Drei-Bit-Datenmanipulationsfeld 954C interpretiert.
-
Wenn U=1, wird das Alphafeld 952 (EVEX Byte 3, Bit [7] - EH) als das Schreibmaske-Steuerungs-Feld (Z) 952C interpretiert. Wenn U=1 und das MOD-Feld 1042 enthält 11 (was eine Kein-Speicherzugriff-Operation bezeichnet), wird ein Teil des Betafeldes 954 (EVEX Byte 3, Bit [4]- S0) als das RL-Feld 957A interpretiert; wenn es eine 1 enthält (Runden 957A.1), wird der Rest des Betafeldes 954 (EVEX Byte 3, Bit [6-5]- S2-1) als das Runden-Operationsfeld 959A interpretiert, während, wenn das RL-Feld 957A eine 0 (VSIZE 957.A2) enthält, der Rest des Betafeldes 954 (EVEX Byte 3, Bit [6-5]- S2-1) als das Vektorlängenfeld 959B (EVEX Byte 3, Bit [6-5]- L1-0) interpretiert wird. Wenn U=1 und das MOD-Feld 1042 00, 01 oder 10 enthält (was eine Speicherzugriffsoperation bezeichnet), wird das Betafeld 954 (EVEX Byte 3, Bits [6:4] - SSS) als das Vektorlängenfeld 959B und (EVEX Byte 3, Bit [6- 5] - L1-0) als das Rundsenden-Feld 957B (EVEX Byte 3, Bit [4] - B) interpretiert.
-
Registerarchitektur
-
11 ist gemäß einem Ausführungsbeispiel ein Blockdiagramm einer Registerarchitektur 1100. Bei dem dargestellten Ausführungsbeispiel liegen 32 Vektorregister 1110 vor, die 512 Bit breit sind; diese Register werden als zmm0 bis zmm31 referenziert. Die 256 niederwertigen Bits der unteren 16 zmm-Register werden auf den Registern ymm0-16 überlagert. Die 128 niederwertigen Bits der unteren 16 zmm-Register (die 128 niederwertigen Bits der ymm-Register) werden auf den Registern xmm0-15 überlagert. Das spezifische vektorfreundliche Anweisungsformat 1000 arbeitet auf diesen überlagerten Registerdateien, wie in den nachstehenden Tabellen dargestellt.
-
Einstellbare Vektorlängenklasse-Operationsregister
-
Anweisungsvorlagen, die nicht das Vektorlängenfeld 959B A (9A; U=0) 910, 915, 925, 930 zmm-Register (die Vektorlänge beträgt 64 Byte) umfassen. B (9B; U=1) 912 zmm-Register (die Vektorlänge beträgt 64 Byte). Anweisungsvorlagen, die das Vektorlängenfeld 959B B (9B; U=1) 917, 927 zmm-, ymm- oder xmm-Register umfassen (die Vektorlänge beträgt 64 Byte, 32 Byte oder 16 Byte), abhängig von dem Vektorlängenfeld 959B.
-
Anders ausgedrückt wählt das Vektorlängenfeld 959B zwischen einer maximalen Länge und einer oder mehreren anderen kürzeren Längen aus, wobei jede dieser kürzeren Längen die Hälfte der Länge der vorhergehenden Länge beträgt; und Anweisungsvorlagen ohne das Vektorlängenfeld 959B arbeiten auf der maximalen Vektorlänge. Ferner arbeiten die Klasse B-Anweisungsvorlagen des spezifischen vektorfreundlichen Anweisungsformats 1000 bei einem Ausführungsbeispiel auf gepackten oder skalaren Einfach-/Doppel-Präzisions-Fließkommadaten und gepackten oder skalaren Integer-Daten. Skalare Operationen sind Operationen, die an der niederwertigsten Datenelementposition in einem zmm/ymm/xmm-Register durchgeführt werden; die höherwertigen Datenelementpositionen werden abhängig von dem Ausführungsbeispiel entweder so belassen, wie sie vor der Anweisung waren, oder auf Null gesetzt.
-
Schreibmaske-Register 1115 - bei dem dargestellten Ausführungsbeispiel liegen 8 Schreibmaske-Register vor (k0 bis k7), die jeweils 64 Bit groß sind. Bei einem alternativen Ausführungsbeispiel sind die Schreibmaske-Register 1115 16 Bit groß. Wie vorangehend beschrieben, kann bei einem Ausführungsbeispiel das Vektor-Maske-Register k0 nicht als Schreibmaske verwendet werden; wenn die Codierung, die normalerweise k0 anzeigen würde, für eine Schreibmaske verwendet wird, wählt sie eine fest verdrahtete Schreibmaske von 0xFFFF aus, wodurch das Schreib-Maskieren für diese Anweisung effektiv deaktiviert wird.
-
Allzweckregister 1125 - bei dem dargestellten Ausführungsbeispiel liegen sechzehn 64-Bit-Allzweckregister vor, die zusammen mit den bestehenden x86-Adressierungsmodi zur Adressierung von Speicheroperanden verwendet werden. Diese Register werden durch die Namen RAX, RBX, RCX, RDX, RBP, RSI, RDI, RSP und R8 bis R15 referenziert.
-
Skalare Fließkommastapel-Registerdatei (x87-Stapel) 1145, auf der die MMX-gepackte Integer-Flach-Registerdatei 1150 aliasiert ist - bei dem dargestellten Ausführungsbeispiel ist der x87-Stapel ein Acht-Element-Stapel, der verwendet wird, um skalare Fließkommaoperationen auf 32/64/80-Bit-Fließkommadaten unter Verwendung der x87-Anweisungssatzerweiterung durchzuführen; während die MMX-Register verwendet werden, um Operationen auf 64-Bit-gepackten Integer-Daten durchzuführen sowie Operanden für einige Operationen zu halten, die zwischen den MMX- und XMM-Registern durchgeführt werden.
-
Alternative Ausführungsbeispiele können breitere oder schmalere Register verwenden. Zusätzlich können alternative Ausführungsbeispiele mehr, weniger oder unterschiedliche Registerdateien und Register verwenden.
-
Kernarchitekturen, Prozessoren und Computerarchitekturen
-
Prozessorkerne können auf unterschiedliche Weise, für unterschiedliche Zwecke und in unterschiedlichen Prozessoren implementiert werden. Implementierungen solcher Kerne können beispielsweise umfassen: 1) einen Allzweck-In-Order-Kern, der für Allzweck-Rechnen bestimmt ist; 2) einen Hochperformance-Allzweck-Out-of-Order-Kern, der für Allzweck-Rechnen bestimmt ist; 3) einen Spezialzweckkern, der in erster Linie für Grafik- und/oder wissenschaftliche (Durchsatz-) Berechnungen bestimmt ist. Implementierungen unterschiedlicher Prozessoren können umfassen: 1) eine CPU, die einen oder mehrere Allzweck-In-Order-Kerne, der für Allzweck-Rechnen bestimmt ist und/oder einen oder mehrere Allzweck-Out-of-Order-Kerne, der für Allzweck-Rechnen bestimmt ist; und 2) einen Co-Prozessor, der einen oder mehrere Spezialzweckkerne umfasst, die in erster Linie für Grafik und/oder Wissenschaft (Durchsatz) bestimmt sind. Solche unterschiedlichen Prozessoren führen zu unterschiedlichen Computersystemarchitekturen, möglicherweise umfassend: 1) den Co-Prozessor auf einem von der CPU getrennten Chip; 2) den Co-Prozessor auf einem separaten Die in dem gleichen Package wie eine CPU; 3) den Co-Prozessor auf demselben Die wie eine CPU (in diesem Fall wird ein solcher Co-Prozessor manchmal als Spezialzwecklogik bezeichnet, wie z.B. integrierte Grafik und/oder wissenschaftliche (Durchsatz-) Logik, oder als Spezialzweckkerne); und 4) ein System auf einem Chip, das auf demselben Die die beschriebene CPU (manchmal auch als Anwendungskern(e) oder Anwendungsprozessor(en) bezeichnet), den vorangehend beschriebenen Co-Prozessor und zusätzliche Funktionalität umfassen kann. Kernarchitekturen werden als nächstes beschrieben, gefolgt von Beschreibungen von Prozessoren und Computerarchitekturen.
-
Kernarchitekturen
-
In-Order- und Out-of-Order-Kern-Blockdiagramm. 12A ist gemäß Ausführungsbeispielen ein Blockdiagramm, das sowohl eine In-Order-Pipeline als auch eine Registerumbenennung, Out-of-Order-Ausgabe/Ausführung-Pipeline darstellt. 12B ist gemäß einem Ausführungsbeispiel ein Blockdiagramm, das sowohl einen In-Order-Architektur-Kern als auch eine Registerumbenennung, Out-of-Order Ausgabe/Ausführungs-Architektur darstellt, die in einem Prozessor umfasst sein soll. Die Kästchen in durchgezogenen Linien in 12A-12B veranschaulichen die In-Order-Pipeline und In-Order Kern, während die optionale Hinzufügung der gestrichelt linierten Kästchen die Registers Umbenennung, Out-of-Order-Ausgabe-/Ausführung-Pipeline und Kern darstellt. Vorausgesetzt, dass der In-Order-Aspekt eine Teilmenge des Out-of-Order-Aspekts ist, wird der Out-of-Order-Aspekt beschrieben.
-
In 12A umfasst eine Prozessor-Pipeline 1200 eine Abruf-Stufe 1202, eine Längendekodierungsstufe 1204, eine Dekodierungsstufe 1206, eine Zuordnungsstufe 1208, eine Umbenennungsstufe 1210, eine Zeitplanungs-Stufe 1212 (auch als Abfertigung oder Ausgabe bekannt), eine Register-Lese-/Speicher-Lese-Stufe 1214, eine Ausführungsstufe 1216, eine Rückschreib-/Speicherschreib-Stufe 1218, eine Ausnahmehandhabungsstufe 1222 und eine Commit-Stufe 1224.
-
12B zeigt den Prozessorkern 1290 umfassend eine Front-End-Einheit 1230, die mit einer Ausführungsmaschinen-Einheit 1250 gekoppelt ist, und beide sind mit einer Speichereinheit 1270 gekoppelt. Der Kern 1290 kann ein Kern mit Reduzierter-Anweisungssatz-Berechnung (RISC; Reduced Instruction Set Computing), ein Kern mit Komplexer-Anweisungssatz-Berechnung (CISC; Complex Instruction Set Computing), ein Sehr-Langes-Anweisungs-Wort- (VLIW; Very Long Instruction Word) Kern oder ein hybrider oder alternativer Kerntyp sein. Als noch weitere Option kann der Kern 1290 ein Spezialzweckkern sein, wie z.B. ein Netzwerk- oder Kommunikationskern, eine Komprimierungsmaschine, ein Co-Prozessorkern, ein Allzweck-Berechnung-Grafikverarbeitungseinheit- (GPGPU; general purpose computing graphics processing unit) Kern, ein Grafikkern oder ähnliches.
-
Die Front-End-Einheit 1230 umfasst eine Zweigvorhersageeinheit 1232, die mit einer Anweisungs-Cache-Einheit 1234 gekoppelt ist, die mit einem Anweisungs-Übersetzungs-Lookaside-Puffer (TLB; translation lookaside buffer) 1236 gekoppelt ist, der mit einer Anweisungsabrufeinheit 1238 gekoppelt ist, die mit einer Dekodiereinheit 1240 gekoppelt ist. Die Dekodiereinheit 1240 (oder der Dekodierer) kann Anweisungen dekodieren und als eine Ausgabe eine oder mehrere Mikrooperationen, Mikrocode-Eingangspunkte, Mikroanweisungen, andere Anweisungen oder andere Steuersignale erzeugen, die von den ursprünglichen Anweisungen dekodiert werden oder die anderweitig die ursprünglichen Anweisungen widerspiegeln oder von ihnen hergeleitet sind. Die Decodiereinheit 1240 kann unter Verwendung verschiedener unterschiedlicher Mechanismen implementiert sein. Beispiele von geeigneten Mechanismen umfassen, sind aber nicht beschränkt auf Nachschlagtabellen, Hardware-Implementierungen, programmierbare Logik-Arrays (PLAs; programmable logic arrays), Mikrocode-Nur-Lese-Speicher (ROMs; read only memories) etc. Bei einem Ausführungsbeispiel umfasst der Kern 1290 einen Mikrocode-ROM oder ein anderes Medium, das Mikrocode für bestimmte Makroanweisungen speichert (z.B. in der Dekodiereinheit 1240 oder anderweitig innerhalb der Front-End-Einheit 1230). Die Decodiereinheit 1240 ist mit einer Umbenennungs-/Zuweisungseinheit 1252 in der Ausführungsmaschinen-Einheit 1250 gekoppelt.
-
Die Ausführungsmaschine-Einheit 1250 umfasst die Umbenennungs-/Zuweisungseinheit 1252, die mit einer Stilllegungseinheit 1254 und einem Satz von einer oder mehreren Planer-Einheit(en) 1256 gekoppelt ist. Die eine oder die mehreren Planer-Einheiten 1256 repräsentieren irgendeine Anzahl von unterschiedlichen Planern, umfassend Reservierungsstationen, zentrale Anweisungsfenster etc. Die eine oder die mehreren Planer-Einheiten 1256 sind mit der einen oder den mehreren Physische-Registerdatei(en)-Einheiten 1258 gekoppelt. Jede der einen oder der mehreren Physische-Registerdatei(en)- Einheiten 1258 repräsentiert eine oder mehrere physische Registerdateien, wobei unterschiedliche derselben einen oder mehrere unterschiedliche Datentypen speichern, wie z.B. skalare Ganzzahl (Integer), skalares Fließkomma, gepackte Ganzzahl, gepacktes Fließkomma, Vektorganzzahl, Vektor-Fließkomma, Status (z.B. ein Anweisungszeiger, der die Adresse der nächsten auszuführenden Anweisung ist), etc. Bei einem Ausführungsbeispiel umfasst die Physische-Registerdatei(en)-Einheit 1258 eine Vektorregistereinheit, eine Schreibmaske-Registereinheit und eine Skalar-Registereinheit. Diese Registereinheiten können architektonische Vektorregister, Vektor-Maske-Register und Allzweckregister bereitstellen. Die eine oder die mehreren physischen Registerdateien-Einheiten 1258 werden von der Stilllegungseinheit (retirement unit) 1254 überlappt, um verschiedene Möglichkeiten zu veranschaulichen, wie die Umbenennung von Registern und die Out-of-Order-Ausführung implementiert werden kann (z.B. durch Verwendung eines oder mehrerer Neuordnungspuffer und einer oder mehrerer Stilllegungsregister-Dateien; unter Verwendung einer oder mehreren Zukunftsdateien, eines oder mehrere Verlaufspuffer und einer oder mehrerer Stilllegungsregister-Dateien; durch Verwendung von Register-Abbildungen und eines Registerpools etc.). Die Stilllegungseinheit 1254 und die eine oder die mehreren Physische-Registerdatei(en)-Einheiten 1258 sind mit dem einen oder den mehreren Ausführungsclustern 1260 gekoppelt. Das eine oder die mehreren Ausführungscluster 1260 umfassen einen Satz von einer oder mehreren Ausführungseinheiten 1262 und einen Satz von einer oder mehreren Speicherzugriffseinheiten 1264. Die Ausführungseinheiten 1262 können verschiedene Operationen (z.B. Verschiebungen, Addition, Subtraktion, Multiplikation) und an verschiedenen Datentypen (z.B. Skalar-Fließkomma, gepackte Ganzzahl, gepacktes Fließkomma, Vektorganzzahl, Vektorfließkomma) durchführen. Während einige Ausführungsbeispiele eine Anzahl von Ausführungseinheiten umfassen können, die für bestimmte Funktionen oder Funktionsgruppen dediziert sind, können andere Ausführungsbeispiele nur eine Ausführungseinheit oder mehrere Ausführungseinheiten umfassen, die alle Revirement Funktionen ausführen. Die eine oder die mehreren Planer- (Scheduler) Einheiten 1256, die eine oder die mehreren Physische-Registerdatei(en)-Einheiten 1258 und das eine oder die mehreren Ausführungscluster 1260 werden als möglicherweise plural dargestellt, da bestimmte Ausführungsbeispiele separate Pipelines für bestimmte Arten von Daten/Operationen erstellen (z.B. eine Skalar-Ganzzahl-Pipeline, eine Skalar-Fließkomma-/gepackte Ganzzahl-/gepackte Gleitkomma-/VektorGanzzahl-/Vektor-Fließkomma-Pipeline und/oder eine Speicherzugriffs-Pipeline, die jeweils ihre eigene Planer-Einheit, eine Physische-Registerdatei(en)-Einheit und/oder Ausführungscluster haben - und im Falle einer separaten Speicherzugriffs-Pipeline sind bestimmte Ausführungsbeispiele implementiert, in denen nur das Ausführungscluster dieser Pipeline die eine oder die mehreren Speicherzugriffseinheiten 1264 aufweist). Es wird auch darauf hingewiesen, dass, wo getrennte Pipelines verwendet werden, eine oder mehrere dieser Pipelines Out-of-Order sein können und der Rest In-Order ist.
-
Der Satz von Speicherzugriffseinheiten 1264 ist mit der Speichereinheit 1270 gekoppelt, die eine Daten-TLB-Einheit 1272 umfasst, die mit einer Daten-Cache-Einheit 1274 gekoppelt ist, die mit einer Level-2 (L2)-Cache-Einheit 1276 gekoppelt ist. Bei einem Ausführungsbeispiel können die Speicherzugriffseinheiten 1264 eine Ladeeinheit, eine Speicheradresseinheit und eine Speicherdateneinheit umfassen, von denen jede mit der Daten-TLB-Einheit 1272 in der Speichereinheit 1270 gekoppelt ist. Die Anweisungs-Cache-Einheit 1234 ist ferner mit einer Level-2 (L2)-Cache-Einheit 1276 in der Speichereinheit 1270 gekoppelt. Die L2-Cache-Einheit 1276 ist mit einer oder mehreren anderen Cache-Ebenen und schließlich mit einem Hauptspeicher gekoppelt.
-
Beispielhalber kann die Register-Umbenennung, Out-of-Order Ausgabe-/Ausführungskernarchitektur (issue/execution core) die Pipeline 1200 wie folgt implementieren: 1) der Anweisungsabruf 1238 führt die Abruf- und Längendekodierungsstufen 1202 und 1204 durch; 2) die Dekodierungseinheit 1240 führt die Dekodierungsstufe 1206 durch; 3) die Umbenennungs-/Zuweisungseinheit 1252 führt die Zuweisungsstufe 1208 und die Umbenennungsstufe 1210 durch; 4) die eine oder die mehreren Planer-Einheiten 1256 führen die Planungs-Stufe 1212 durch; 5) die einen oder die mehreren Physische-Registerdatei(en)-Einheiten 1258 und die Speichereinheit 1270 führen die Register-Lese-/Speicher-Lese-Stufe 1214 durch; das Ausführungscluster 1260 führt die Ausführungsphase 1216 durch; 6) die Speichereinheit 1270 und die eine oder die mehreren Physische-Registerdatei(en)-Einheiten 1258 führen die Rückschreib-/Speicherschreib-Stude 1218 durch; 7) verschiedene Einheiten können an der Ausnahmehandhabungsphase 1222 beteiligt sein; und 8) die Stilllegungseinheit 1254 und die eine oder die mehreren Physische-Registerdatei(en)-Einheiten 1258 führen die Commit-Phase 1224 durch.
-
Der Kern 1290 kann einen oder mehrere Anweisungssätze unterstützen (z.B. den x86-Anweisungssatz (mit einigen Erweiterungen, die mit neueren Versionen hinzugefügt wurden); den MIPS-Anweisungssatz von MIPS Technologies of Sunnyvale, CA; den ARM-Anweisungssatz (mit optionalen zusätzlichen Erweiterungen wie NEON) von ARM Holdings of Sunnyvale, CA), umfassend die hierin beschriebenen Anweisung(en). Bei einem Ausführungsbeispiel umfasst der Kern 1290 Logik zur Unterstützung einer Gepackte-Daten-Anweisungssatz-Erweiterung (z.B. AVX1, AVX2), wodurch es den Operationen erlaubt wird, die von vielen Multimedia-Anwendungen verwendet werden, unter Verwendung der gepackten Daten ausgeführt zu werden.
-
Es wird darauf hingewiesen, dass der Kern Multithreading (Ausführen von zwei oder mehr parallelen Sätzen von Operationen oder Threads) unterstützen kann, und dies auf verschiedene Weise tun kann, umfassend Zeitscheiben-Multithreading, simultanes Multithreading (wobei ein einzelner physischer Kern einen logischen Kern für jeden der Threads bereitstellt, die der physische Kern gleichzeitig einem Multithreading unterzieht) oder eine Kombination davon (z.B. Zeitscheiben-Abrufen und Dekodieren und danach simultanes Multithreading, wie in der Intel® Hyperthreading-Technologie).
-
Während die Register-Umbenennung im Zusammenhang mit der Out-of-Order-Ausführung beschrieben wird, wird darauf hingewiesen, dass die Register-Umbenennung in einer In-Order-Architektur verwendet werden kann. Während das dargestellte Ausführungsbeispiel des Prozessors auch separate Anweisungs- und Daten-Cache-Einheiten 1234/1274 und eine gemeinschaftlich verwendete L2-Cache-Einheit 1276 umfasst, können alternative Ausführungsbeispiele einen einzelnen internen Cache sowohl für Anweisungen als auch für Daten haben, wie z.B. einen internen Level 1- (L1) Cache oder mehrere Levels des internen Caches. Bei einigen Ausführungsbeispielen kann das System eine Kombination aus einem internen Cache und einem externen Cache umfassen, die sich außerhalb des Kerns und/oder des Prozessors befindet. Alternativ kann der gesamte Cache außerhalb des Kerns und/oder des Prozessors liegen.
-
Spezifische In-Order-Kernarchitektur
-
13A-13B stellen Blockdiagramme einer spezifischeren In-Order-Kernarchitektur dar, wobei der Kern gemäß einem Ausführungsbeispiel einer von mehreren Logikblöcken (umfassend andere Kerne desselben Typs und/oder unterschiedlicher Typen) in einem Chip wäre. Die Logikblöcke kommunizieren durch ein Verbindungsnetzwerk mit hoher Bandbreite (z.B. ein Ringnetzwerk) mit einer festen Funktionslogik, Speicher-I/O-Schnittstellen und anderer notwendiger I/O-Logik, abhängig von der Anwendung.
-
13A ist ein Blockdiagramm eines einzelnen Prozessorkerns, zusammen mit seiner Verbindung zu dem Auf-Die-Verbindungsnetzwerk 1302 und mit seiner lokalen Teilmenge des Level 2 (L2) Caches 1304, gemäß einem Ausführungsbeispiel. Bei einem Ausführungsbeispiel unterstützt ein Anweisungsdekodierer 1300 den x86-Anweisungssatz mit einer gepackten Daten-Anweisungssatz-Erweiterung. Ein L1-Cache 1306 ermöglicht Niedriglatenzzeit-Zugriffe auf den Cache-Speicher in die Skalar- und Vektoreinheiten. Während bei einem Ausführungsbeispiel (zur Vereinfachung des Entwurfs) eine Skalareinheit 1308 und eine Vektoreinheit 1310 getrennte Registersätze verwenden (jeweils Skalarregister 1312 und Vektorregister 1314) und die zwischen ihnen übertragenen Daten in den Speicher geschrieben und dann aus einem Level 1 (L1) Cache 1306 wieder zurückgelesen werden, können alternative Ausführungsbeispiele einen anderen Ansatz verwenden (z.B. einen einzelnen Registersatz verwenden oder einen Kommunikationspfad umfassen, der es ermöglicht, Daten zwischen den beiden Registerdateien zu übertragen, ohne dass sie geschrieben und zurückgelesen werden).
-
Die lokale Teilmenge des L2-Caches 1304 ist Teil eines globalen L2-Caches, der in separate lokale Teilmengen unterteilt ist, eine pro Prozessorkern. Jeder Prozessorkern hat einen direkten Zugriffspfad auf seine eigene lokale Teilmenge des L2-Cache 1304. Daten, die von einem Prozessorkern gelesen werden, werden in seiner L2-Cache-Teilmenge 1304 gespeichert und es kann schnell darauf zugegriffen werden, parallel mit anderen Prozessorkernen, die auf ihre eigenen lokalen L2-Cache-Teilmengen zugreifen. Von einem Prozessorkern geschriebene Daten werden in einer eigenen L2-Cache-Teilmenge 1304 gespeichert und bei Bedarf aus anderen Teilmengen übertragen. Das Ringnetzwerk stellt die Kohärenz für gemeinschaftlich verwendete Daten sicher. Das Ringnetzwerk ist bidirektional, um es Agenten wie Prozessorkernen, L2-Caches und anderen Logikblöcken zu erlauben, innerhalb des Chips miteinander kommunizieren zu können. Jeder Ringdatenpfad ist 1012 Bits pro Richtung breit.
-
13B stellt gemäß einem Ausführungsbeispiel eine erweiterte Ansicht des Prozessorkerns in 13A dar. 13B umfasst einen L1-Daten-Cache 1306A, Teil des L1-Cache 1304, sowie weitere Einzelheiten bezüglich der Vektoreinheit 1310 und der Vektorregister 1314. Insbesondere ist die Vektoreinheit 1310 eine 16-Breite-Vektorverarbeitungseinheit (VPU; vector processing unit) (siehe die 16-Breite-ALU 1328), die einen oder mehrere der Ganzzahl-, Einzel-Präzisions-Fließ- und Doppel-Präzisions-Fließ-Anweisungen ausführt. Die VPU unterstützt das Swizzling der Registereingänge mit der Swizzle-Einheit 1320, die numerische Konvertierung mit den numerischen Konvertierungseinheiten 1322A-B und die Replikation mit der Replikationseinheit 1324 an dem Speichereingang. Die Schreibmaske-Register 1326 ermöglichen die Vorhersage von resultierenden Vektorschreibvorgängen.
-
14 ist gemäß Ausführungsbeispielen ein Blockdiagramm eines Prozessors 1400, der mehr als einen Kern aufweisen kann, eine integrierte Speichersteuerung aufweisen kann und integrierte Grafik aufweisen kann. Die durchgezogen linierten Kästchen in 14 stellen einen Prozessor 1400 mit einem einzelnen Kern 1402A dar, einem Systemagenten 1410, einem Satz von einer oder mehreren Bus-Steuerungseinheiten 1416, während der optionale Zusatz der gestrichelt linierten Kästchen einen alternativen Prozessor 1400 mit mehreren Kernen 1402A-N, einem Satz von einer oder mehreren integrierten Speicher-Steuerungseinheiten 1414 in der Systemagenten-Einheit 1410 und Spezialzwecklogik 1408 darstellt.
-
Unterschiedliche Implementierungen des Prozessors 1400 können daher umfassen: 1) eine CPU mit der Spezialzwecklogik 1408, die integrierte Grafik und/oder wissenschaftliche (Durchsatz-) Logik ist (die einen oder mehrere Kerne umfassen kann), und die Kerne 1402A-N, die einer oder mehrere Allzweckkerne sind (z.B. In-Order-Allzweckkerne, Out-of-Order-Allzweckkerne, eine Kombination der beiden); 2) einen Co-Prozessor, wobei die Kerne 1402A-N eine große Anzahl von Spezialzweckkernen sind, die hauptsächlich für Grafik und/oder Wissenschaft (Durchsatz) bestimmt sind; und 3) einen Co-Prozessor, wobei die Kerne 1402A-N eine große Anzahl Allzweck-In-Order--Kerne sind. So kann der Prozessor 1400 ein Allzweckprozessor, Co-Prozessor oder Spezialzweckprozessor sein, wie z.B. ein Netzwerk- oder Kommunikationsprozessor, Komprimierungsmaschine, Grafikprozessor, GPGPU (Allzweck-Grafikverarbeitungseinheit; general purpose graphics processing unit), ein Hoch-Durchsatz-Co-Prozessor mit vielen integrierten Kernen (MIC; many integrated core) (umfassend 30 oder mehr Kerne), ein eingebetteter Prozessor oder ähnliches. Der Prozessor kann auf einem oder mehreren Chips implementiert sein. Der Prozessor 1400 kann ein Teil eines oder mehrerer Substrate sein und/oder auf diesen unter Verwendung irgendeiner Anzahl von Prozesstechnologien, wie z.B. BiCMOS, CMOS oder NMOS, implementiert sein.
-
Die Speicherhierarchie umfasst eine oder mehrere Cache-Ebenen innerhalb der Kerne, einen Satz oder eine oder mehrere gemeinschaftlich verwendete Cache-Einheiten 1406 und externen Speicher (nicht gezeigt), der mit dem Satz integrierter Speicher-Steuerungs-Einheiten 1414 gekoppelt ist. Der Satz von gemeinschaftlich verwendeten Cache-Einheiten 1406 kann einen oder mehrere Mittlere-Ebene-Caches (mid-level cache), wie beispielsweise ein Level 2 (L2), ein Level 3 (L3), ein Level 4 (L4) oder andere Cache-Level, einen Last-Level-Cache (LLC; Letzte-Ebene-Cache) und/oder Kombinationen derselben umfassen. Während bei einem Ausführungsbeispiel eine ringbasierte Verbindungseinheit 1412 die integrierte Grafiklogik 1408, den Satz von gemeinschaftlich verwendeten Cache-Einheiten 1406 und die Systemagenten-Einheit 1410/die eine oder die mehreren integrierten Speicher-Steuerungseinheiten 1414 miteinander verbindet, können alternative Ausführungsformen irgendeine Anzahl bekannter Techniken zur Verbindung solcher Einheiten verwenden. Bei einem Ausführungsbeispiel wird die Kohärenz zwischen einer oder mehreren Cache-Einheiten 1404A-N und Kernen 1402A-N aufrechterhalten.
-
Bei einigen Ausführungsbeispielen sind einer oder mehrere der Kerne 1402AN in der Lage für Multithreading. Der Systemagent 1410 umfasst diese Komponenten, die die Kerne 1402A-N koordinieren und betreiben. Die Systemagenteneinheit 1410 kann z.B. eine Leistungssteuerungseinheit (PCU; power control unit) und eine Anzeigeeinheit umfassen. Die PCU kann Logik und Komponenten sein oder umfassen, die zur Regelung des Leistungszustands der Kerne 1402A-N und der integrierten Grafiklogik 1408 benötigt werden. Die Anzeigeeinheit dient zum Antreiben eines oder mehrerer extern verbundener Anzeigen.
-
Die Kerne 1402A-N können in Bezug auf den Architektur-Anweisungssatz homogen oder heterogen sein; d.h. zwei oder mehr der Kerne 1402A-N können in der Lage sein, denselben Anweisungssatz ausführen, während andere möglicherweise in der Lage sind, nur eine Teilmenge dieses Anweisungssatzes oder einen anderen unterschiedlichen Anweisungssatz auszuführen.
-
Computer-Architekturen
-
15-18 sind Blockdiagramme von Computer-Architekturen. Andere in der Technik bekannte Systementwürfe und -konfigurationen für Laptops, Desktops, handgehaltene PCs, persönliche digitale Assistenten, Ingenieurs-Arbeitsplätze, Server, Netzwerkvorrichtungen, Netzwerk-Hubs, Schalter, eingebettete Prozessoren, digitale Signalprozessoren (DSPs; digital signal processors), Grafikvorrichtungen, Videospielvorrichtungen, Set-Top-Boxen, Mikrocontroller, Mobiltelefone, tragbare Medienabspielgeräte, handgehaltene Vorrichtungen und verschiedene andere elektronische Vorrichtungen sind ebenfalls geeignet. Im Allgemeinen sind eine große Vielzahl von Systemen oder elektronischen Vorrichtungen, die in der Lage sind, einen Prozessor und/oder eine andere Ausführungslogik einzubringen, wie hierin offenbart, im Allgemeinen geeignet.
-
Unter Bezugnahme nun auf 15 ist ein Blockdiagramm eines Systems 1500 gemäß einem Ausführungsbeispiel gezeigt. Das System 1500 kann einen oder mehrere Prozessoren 1510, 1515 umfassen, die mit einem Steuerungs-Hub 1520 gekoppelt sind. Bei einem Ausführungsbeispiel umfasst der Steuerungs-Hub 1520 einen Grafikspeicher-Steuerungs-Hub (GMCH; graphics memory controller hub) 1590 und einen Eingabe/Ausgabe-Hub (IOH; Input/Output Hub) 1550 (die sich auf separaten Chips befinden können); der GMCH 1590 umfasst Speicher- und Grafiksteuerungen, mit denen der Speicher 1540 und ein Co-Prozessor 1545 gekoppelt sind; der IOH 1550 koppelt Eingabe/Ausgabe (I/O)-Vorrichtungen 1560 an den GMCH 1590. Alternativ sind eine oder beide der Speicher- und Grafiksteuerungen innerhalb des Prozessors integriert (wie hierin beschrieben), der Speicher 1540 und der Co-Prozessor 1545 sind direkt mit dem Prozessor 1510 und dem Steuerungs-Hub 1520 in einem einzelnen Chip mit dem IOH 1550 gekoppelt.
-
Der optionale Charakter der zusätzlichen Prozessoren 1515 ist in 15 mit gestrichelten Linien dargestellt. Jeder Prozessor 1510, 1515 kann einen oder mehrere der hierin beschriebenen Prozessorkerne umfassen und kann eine Version des Prozessors 1400 sein.
-
Der Speicher 1540 kann z. B. ein dynamischer Direktzugriffsspeicher (DRAM; dynamic random access memory), ein Phasenwechselspeicher (PCM; phase change memory) oder eine Kombination aus beiden sein. Bei zumindest einem Ausführungsbeispiel kommuniziert der Steuerungs-Hub 1520 mit dem einen oder den mehreren Prozessoren 1510, 1515 über einen Multi-Drop-Bus, wie z.B. einen Frontside-Bus (FSB), eine Punkt-zu-Punkt-Schnittstelle wie QuickPath Interconnect (QPI) oder eine ähnliche Verbindung 1595.
-
Bei einem Ausführungsbeispiel ist der Co-Prozessor 1545 ein Spezialzweckprozessor, wie z.B. ein MIC-Prozessor mit hohem Durchsatz, ein Netzwerk- oder Kommunikationsprozessor, eine Komprimierungsmaschine, ein Grafikprozessor, eine GPGPU, ein eingebetteter Prozessor oder ähnliches. Bei einem Ausführungsbeispiel kann der Steuerungs-Hub 1520 einen integrierten Grafikbeschleuniger umfassen.
-
Es kann eine Vielzahl von Unterschieden zwischen den physischen Ressourcen 1510, 1515 in Bezug auf ein Spektrum von Metriken von Gütefaktoren geben, umfassend architektonische, mikroarchitektonische, thermische, Leistungsverbrauch-Charakteristiken und ähnliches.
-
Bei einem Ausführungsbeispiel führt der Prozessor 1510 Anweisungen aus, die Datenverarbeitungsvorgänge eines allgemeinen Typs steuern. In den Anweisungen können Co-Prozessor-Anweisungen eingebettet sein. Der Prozessor 1510 erkennt diese Co-Prozessor-Anweisungen als von einem Typ, der von dem angebrachten Co-Prozessor 1545 ausgeführt werden sollte. Dementsprechend gibt der Prozessor 1510 diese Co-Prozessor-Anweisungen (oder Steuersignale, die Co-Prozessor-Anweisungen darstellen) auf einem Co-Prozessor-Bus oder einer anderen Verbindung an den Co-Prozessor 1545 aus. Der eine oder die mehreren Co-Prozessoren 1545 akzeptieren die empfangenen Co-Prozessor-Anweisungen und führen diese aus.
-
Unter Bezugnahme nun auf 16 ist ein Blockdiagramm eines ersten spezifischeren Systems 1600 gemäß einem Ausführungsbeispiel gezeigt. Wie in 16 gezeigt, ist das Multiprozessorsystem 1000 ein Punkt-zu-Punkt-Verbindungssystem, und umfasst einen ersten Prozessor 1670 und einen zweiten Prozessor 1680, die über eine Punkt-zu-Punkt-Verbindung 1650 gekoppelt sind. Jeder der Prozessoren 1670 und 1680 kann eine Version des Prozessors 1400 sein. Bei einem Ausführungsbeispiel sind die Prozessoren 1670 und 1680 jeweils die Prozessoren 1510 und 1515, während der Co-Prozessor 1638 der Co-Prozessor 1545 ist. Bei einem anderen Ausführungsbeispiel sind die Prozessoren 1670 und 1680 jeweils der Prozessor 1510 und der Co-Prozessor 1545.
-
Gezeigt werden jeweils die Prozessoren 1670 und 1680 umfassend jeweils die integrierten Speicher-Steuerungseinheiten (IMC) 1672 und 1682. Der Prozessor 1670 umfasst als Teil seiner Bus-Steuerungseinheiten auch Punkt-zu-Punkt (P-P) Schnittstellen 1676 und 1678; in ähnlicher Weise umfasst der zweite Prozessor 1680 die P-P-Schnittstellen 1686 und 1688. Die Prozessoren 1670, 1680 können über eine Punkt-zu-Punkt-Schnittstelle 1650 unter Verwendung von P-P-Schnittstellenschaltungen 1678, 1688 Informationen austauschen. Wie in 16 gezeigt, koppeln die IMCs 672 und 1682 die Prozessoren mit jeweiligen Speichern, nämlich einem Speicher 1632 und einem Speicher 1634, die Abschnitte des Hauptspeichers sein können, die lokal an die jeweiligen Prozessoren angebracht sind.
-
Die Prozessoren 1670 und 1680 können jeweils Informationen mit einem Chipsatz 1690 über individuelle P-P-Schnittstellen 1652, 1654 unter Verwendung der Punkt-zu-Punkt-Schnittstellenschaltungen 1676, 1694, 1686 und 1698 austauschen. Der Chipsatz 1690 kann optional Informationen mit dem Co-Prozessor 1638 über eine Hoch-Performance-Schnittstelle 1639 austauschen. Bei einem Ausführungsbeispiel ist der Co-Prozessor 1638 ein Spezialzweckprozessor, wie z.B. ein MIC-Prozessor mit hohem Durchsatz, ein Netzwerk- oder Kommunikationsprozessor, eine Komprimierungsmaschine, ein Grafikprozessor, eine GPGPU, ein eingebetteter Prozessor oder ähnliches.
-
Ein gemeinschaftlich verwendeter Cache (nicht gezeigt) kann entweder in einem der beiden Prozessoren oder außerhalb der beiden Prozessoren umfasst sein, jedoch über eine P-P-Verbindung mit den Prozessoren verbunden sein, so dass die lokalen Cache-Informationen eines oder beider Prozessoren in dem gemeinschaftlich verwendeten Cache gespeichert werden können, wenn ein Prozessor in einen Niedrig-Leistung-Modus versetzt wird.
-
Der Chipsatz 1690 kann über eine Schnittstelle 1696 mit einem ersten Bus 1616 gekoppelt sein. Bei einem Ausführungsbeispiel kann der erste Bus 1616 ein Peripheral Component Interconnect-Bus (PCI) oder ein Bus wie beispielsweise ein PCI-Express-Bus oder ein anderer I/O-Verbindungsbus der dritten Generation sein, obwohl der Umfang der vorliegenden Erfindung nicht diesbezüglich eingeschränkt ist.
-
Wie in 16 gezeigt, können verschiedene Eingabe-/Ausgabe-(I/O) Vorrichtungen 1614 mit dem ersten Bus 1616 gekoppelt sein, zusammen mit einer Busbrücke 1618, die den ersten Bus 1616 mit einem zweiten Bus 1620 koppelt. Bei einem Ausführungsbeispiel sind ein oder mehrere zusätzliche Prozessoren 1615, wie z.B. Co-Prozessoren, MIC-Prozessoren mit hohem Durchsatz, GPGPUs, Beschleuniger (wie z.B. Grafikbeschleuniger oder digitale Signalverarbeitungs- (DSP)Einheiten), feldprogrammierbare Gate-Arrays oder irgendein anderer Prozessor mit dem ersten Bus 1616 gekoppelt. Bei einem Ausführungsbeispiel kann der zweite Bus 1620 ein Low Pin Count (LPC)-Bus sein. Mit einem zweiten Bus 1620 können verschiedene Vorrichtungen gekoppelt werden, umfassend z.B. eine Tastatur und/oder Maus 1622, Kommunikationsvorrichtungen 1627 und eine Speicherungseinheit 1628 (storage unit), wie z.B. ein Plattenlaufwerk oder eine andere Massenspeichervorrichtung, die Anweisungen/Code und Daten 1630 bei einem Ausführungsbeispiel umfassen kann. Ferner kann ein Audio-I/O 1624 mit dem zweiten Bus 1620 gekoppelt sein. Es wird darauf hingewiesen, dass andere Architekturen möglich sind. Zum Beispiel kann ein System anstelle der Punkt-zu-Punkt-Architektur von 16 einen Multi-Drop-Bus oder eine andere derartige Architektur implementieren.
-
Unter Bezugnahme nun auf 17 ist ein Blockdiagramm eines zweiten spezifischeren Systems 1700 gemäß einem Ausführungsbeispiel gezeigt. Gleiche Elemente in 16 und 17 tragen gleiche Bezugszeichen, und bestimmte Aspekte von 16 wurden in 17 weggelassen, um andere Aspekte von 17 nicht zu verunklaren.
-
17 stellt dar, dass die Prozessoren 1670, 1680 jeweils die integrierte Speicher- und I/O-Steuerlogik („CL“; control logic) 1672 und 1682 umfassen können. So umfassen die CL 1672, 1682 integrierte Speicher-Steuerungseinheiten und umfassen I/O-Steuerlogik. 17 stellt dar, dass die Speicher 1632, 1634 nicht nur mit der CL 1672, 1682 gekoppelt sind, sondern dass auch die I/O-Vorrichtungen 1714 mit der Steuerlogik 1672, 1682 gekoppelt sind. Die Legacy-I/O-Vorrichtungen 1715 sind mit dem Chipsatz 1690 gekoppelt.
-
Unter Bezugnahme nun auf 18 ist ein Blockdiagramm eines SoC 1800 gemäß einem Ausführungsbeispiel gezeigt. Ähnliche Elemente in 14 tragen gleiche Bezugszeichen. Auch gestrichelt linierte Kästchen sind bei fortgeschritteneren SoCs optionale Merkmale. In 18 sind eine oder mehrere Verbindungseinheiten 1802 gekoppelt mit: einem Anwendungsprozessor 1810, der einen Satz von einem oder mehreren Kernen 1402A-N mit integrierten Cache-Einheiten 1404A-N und einer oder mehreren gemeinschaftlich verwendeten Cache-Einheiten 1406 umfasst; einer Systemagenten-Einheit 1410; einer oder mehreren Bus-Steuerungseinheiten 1416; einer oder mehreren integrierten Speicher-Steuerungseinheiten 1414; einem Satz aus oder einem oder mehreren Co-Prozessoren 1820, die integrierte Grafiklogik, einen Bildprozessor, einen Audioprozessor und einen Videoprozessor umfassen können; eine statische Direktzugriffsspeicher-(SRAM; static random access memory) Einheit 1830; eine Direktspeicherzugriffs- (DMA; direct memory access) Einheit 1832; und eine Anzeigeeinheit 1840 zur Kopplung mit einer oder mehreren externen Anzeigen. Bei einem Ausführungsbeispiel umfassen der eine oder die mehreren Co-Prozessoren 1820 einen Spezialzweckprozessor, wie z.B. einen Netzwerk- oder Kommunikationsprozessor, eine Komprimierungsmaschine, eine GPGPU, einen Hochdurchsatz-MIC-Prozessor, einen eingebetteten Prozessor oder ähnliches.
-
Ausführungsbeispiele der hierin offenbarten Mechanismen können in Hardware, Software, Firmware oder einer Kombination solcher Implementierungsansätze implementiert werden. Ausführungsbeispiele der Erfindung können als Computerprogramme oder Programmcode implementiert werden, die auf programmierbaren Systemen ausgeführt werden, die zumindest einen Prozessor, ein Speicherungssystem (umfassend flüchtigen und nichtflüchtigen Speicher und/oder Speicherungselemente), zumindest eine Eingabevorrichtung und zumindest eine Ausgabevorrichtung umfassen.
-
Programmcode, wie der in 16 dargestellte Code 1630, kann auf Eingabeanweisungen angewendet werden, um die hierin beschriebenen Funktionen auszuführen und Ausgabeinformationen zu erzeugen. Die Ausgabeinformationen können in bekannter Weise auf eine oder mehrere Ausgabevorrichtungen angewendet werden. Für die Zwecke dieser Anwendung umfasst ein Verarbeitungssystem irgendein System, das einen Prozessor umfasst, wie z.B. einen digitalen Signalprozessor (DSP), einen Mikrocontroller, eine anwendungsspezifische integrierte Schaltung (ASIC; application specific integrated circuit) oder einen Mikroprozessor.
-
Der Programmcode kann in einer prozedur- oder objekt-orientierten Programmiersprache höherer Ebene implementiert sein, um mit einem Verarbeitungsprozessor zu kommunizieren. Der Programmcode kann auch in einer Anordnungs- oder einer Maschinensprache implementieren sein, falls erwünscht. Tatsächlich sind die hierin beschriebenen Mechanismen im Umfang nicht auf irgendeine bestimmte Programmiersprache beschränkt. In jedem Fall kann die Sprache eine kompilierte oder interpretierte Sprache sein.
-
Ein oder mehrere Aspekte von zumindest einem Ausführungsbeispiel können durch repräsentative Anweisungen implementiert sein, die auf einem maschinenlesbaren Medium gespeichert sind, das verschiedene Logiken innerhalb des Prozessors repräsentiert, die, wenn sie von einer Maschine gelesen werden, die Maschine veranlassen, Logik zur Ausführung der hierin beschriebenen Techniken herzustellen. Solche Darstellungen, die als „IP-Kerne“ bekannt sind, können auf einem greifbaren, maschinenlesbaren Medium gespeichert und an verschiedene Kunden oder Herstellungseinrichtungen geliefert werden, um sie in die Fertigungsmaschinen zu laden, die die Logik oder den Prozessor tatsächlich herstellen.
-
Ein solches maschinenlesbares Speicherungsmedium kann ohne Beschränkung nichtflüchtige, greifbare Anordnungen von Artikeln umfassen, die durch eine Maschine oder Vorrichtung hergestellt oder gebildet werden, umfassend Speichermedien wie beispielsweise Festplatten, irgendeine andere Art von Platte umfassend Floppy Disks, optische Platten, Kompaktplatten-Nur-Lese-Speicher (CD-ROMs; compact disk read-only memories), wiederbeschreibbare Kompaktplatten (CD-RWs; compact disk rewritables) und magneto-optische Platten, Halbleiterbauelemente wie beispielsweise Nur-Lese-Speicher (ROMs; read-only memories), Direktzugriffsspeicher (RAMs) wie z.B. Dynamische RAMs (DRAMs), statische RAMs (SRAMs), löschbare programmierbare Nur-Lese-Speicher (EPROMs; erasable programmable ROMs), Flash-Speicher, elektrisch löschbare programmierbare Nur-Lese-Speicher (EEPROMs; electrically erasable programmable ROMs), Phasenwechselspeicher (PCM), magnetische oder optische Karten oder irgendeine Art von Medien, geeignet zum Speichern elektronischer Anweisungen.
-
Dementsprechend umfassen Ausführungsbeispiele der Erfindung auch nichtflüchtige, greifbare, maschinenlesbare Medien, die Anweisungen umfassen oder Entwurfsdaten umfassen, wie z.B. eine Hardware-Beschreibungssprache (HDL; Hardware Description Language), die hierin beschriebene Strukturen, Schaltungen, Vorrichtungen, Prozessoren und/oder Systemmerkmale definiert. Solche Ausführungsbeispiele können auch als Programmprodukte bezeichnet werden.
-
Emulation (umfassend binäre Übersetzung, Code-Morphing etc.) In einigen Fällen kann ein Anweisungswandler verwendet werden, um eine Anweisung von einem Quellanweisungssatz in einen Zielanweisungssatz zu konvertieren. Beispielsweise kann der Anweisungswandler eine Anweisung übersetzen (z.B. unter Verwendung statischer binärer Übersetzung, dynamischer binärer Übersetzung umfassend dynamische Kompilierung), morphen, emulieren oder anderweitig in eine oder mehrere andere Anweisungen umwandeln, die vom Kern verarbeitet werden sollen. Der Anweisungswandler kann in Software Hardware, Firmware oder einer Kombination derselben implementiert sein. Der Anweisungswandler kann sich auf dem Prozessor, weg von dem Prozessor oder teilweise auf und teilweise weg von dem Prozessor befinden.
-
19 ist gemäß Ausführungsbeispielen ein Blockdiagramm, das die Verwendung eines Software-Anweisungsumwandlers zum Umwandeln von binären Anweisungen in einem Quellanweisungssatz zu binären Anweisungen in einem Zielanweisungssatz kontrastiert. Bei dem dargestellten Ausführungsbeispiel ist der Anweisungsumwandler ein Software-Anweisungsumwandler, obwohl der Anweisungsumwandler alternativ auch in Software, Firmware, Hardware oder verschiedenen Kombinationen davon implementiert sein kann. 19 zeigt ein Programm in einer Sprache hoher Ebene 1902, das unter Verwendung eines x86-Kompilierers 1904 kompiliert werden kann, um x86-Binärcode 1906 zu erzeugen, der von einem Prozessor mit zumindest einem x86-Anweisungssatz-Kern 1916 nativ ausgeführt werden kann. Der Prozessor mit zumindest einem x86-Anweisungssatzkern 1916 stellt irgendeinen Prozessor dar, der im Wesentlichen die gleichen Funktionen wie ein Intel-Prozessor mit zumindest einem x86-Anweisungssatzkern ausführen kann, indem er (1) einen wesentlichen Teil des Anweisungssatzes des Intel x86-Anweisungssatzkerns oder (2) Objektcodeversionen von Anwendungen oder anderer Software, die darauf abzielen, auf einem Intel-Prozessor mit zumindest einem x86-Anweisungssatzkern ausgeführt zu werden, kompatibel ausführt oder anderweitig verarbeitet, um im Wesentlichen das gleiche Ergebnis wie ein Intel-Prozessor mit zumindest einem x86-Anweisungssatzkern zu erzielen. Der x86-Kompilierer 1904 stellt einen Kompilierer dar, der in der Lage ist, x86-Binärcode 1906 (z. B. Objektcode) zu erzeugen, der mit oder ohne zusätzliche Verknüpfungsverarbeitung auf dem Prozessor mit zumindest einem x86-Anweisungssatz-Kern 1916 ausgeführt werden kann. Ähnlich zeigt 19, dass das Programm in der Sprache hoher Ebene 1902 unter Verwendung eines alternativen Anweisungssatz-Kompilierers 1908 kompiliert werden kann, um einen alternativen Anweisungssatz-Binärcode 1910 zu erzeugen, der von einem Prozessor ohne zumindest einen x86-Anweisungssatzkern 1914 nativ ausgeführt werden kann (z.B. ein Prozessor mit Kernen, die den MIPS-Anweisungssatz von MIPS Technologies of Sunnyvale, CA und/oder den ARM-Anweisungssatz von ARM Holdings of Sunnyvale, CA ausführen). Der Anweisungswandler 1912 wird verwendet, um den x86-Binärcode 1906 in Code umzuwandeln, der von dem Prozessor ohne einen x86-Anweisungssatz-Kern 1914 nativ ausgeführt werden kann. Dieser umgewandelte Code ist wahrscheinlich nicht derselbe wie der Binärcode des alternativen Anweisungssatzes 1910, da ein Anweisungswandler, der dazu in der Lage ist, schwierig herzustellen ist; der umgewandelte Code führt jedoch die allgemeine Operation aus und besteht aus Anweisungen aus dem alternativen Anweisungssatz. So stellt der Anweisungswandler 1912 Software, Firmware, Hardware oder eine Kombination derselben dar, die durch Emulation, Simulation oder irgendeinen anderen Prozess einem Prozessor oder einer anderen elektronischen Vorrichtungen, die keinen x86-Anweisungssatz-Prozessor oder -Kern aufweist, die Ausführung des x86-Binärcodes 1906 ermöglicht.
-
20 ist ein Blockdiagramm, das gemäß einem Ausführungsbeispiel eine Maschine in der beispielhaften Form eines Computersystems 2000 darstellt, innerhalb dessen ein Satz oder eine Sequenz von Anweisungen ausgeführt werden kann, um die Maschine zum Ausführen irgendeiner der hierin erörterten Methodologien zu veranlassen. Bei alternativen Ausführungsbeispielen arbeitet Maschine als eine eigenständige Vorrichtung, oder sie kann mit anderen Maschinen verbunden (z.B. vernetzt) sein. In einer vernetzten Anwendung kann die Maschine in der Eigenschaft von entweder einer Server- oder einer Client-Maschine in Server-Client-Netzwerkumgebungen arbeiten, oder sie kann als eine Peer-Maschine in Peer-to-Peer- (oder verteilten) Netzwerkumgebungen agieren. Die Maschine kann eine am Kopf befestigte Anzeige, eine tragbare (wearable) Vorrichtung, ein Personal-Computer (PC), ein Tablet-PC, ein Hybrid-Tablet, ein persönlicher digitaler Assistent (PDA; Personal Digital Assistant), ein Mobiltelefon, oder irgendeine Maschine sein, die fähig zum Ausführen von Anweisungen (sequentiell oder anderweitig) ist, die Aktionen spezifizieren, die durch diese Maschine ausgeführt werden sollen. Während nur eine einzige Maschine dargestellt ist, soll der Begriff „Maschine“ ferner auch irgendeine Sammlung von Maschinen umfassen, die individuell oder gemeinsam einen Satz (oder mehrere Sätze) von Anweisungen ausführen, um irgendeine oder mehrere der hierin erörterten Methoden auszuführen. Ähnlich ist der Begriff „prozessorbasiertes System“ so zu verstehen, dass er irgendeinen Satz einer oder mehrerer Maschinen umfasst, die durch einen Prozessor (z.B. einen Computer) gesteuert oder betrieben werden, um einzeln oder gemeinsam Anweisungen auszuführen, um eine oder mehrere der hierin erörterten Methodologien durchzuführen.
-
Das beispielhafte Computersystem 2000 umfasst zumindest einen Prozessor 2002 (z.B. eine zentrale Verarbeitungseinheit (CPU; central processing unit), eine Grafikverarbeitungseinheit (GPU; graphics processing unit), oder beides, Prozessorkerne, Computerknoten, etc.), einen Hauptspeicher 2004 und einen statischen Speicher 2006, die miteinander über einen Link 2008 (z.B. einen Bus) kommunizieren. Das Computer-System 2000 kann ferner eine Video-Anzeigeeinheit 2010, eine alphanumerische Eingabevorrichtung 2012 (z.B. eine Tastatur) und eine Navigationsvorrichtung 2014 mit Benutzerschnittstelle (UI; user interface) (z. B. eine Maus) aufweisen. Bei einem Ausführungsbeispiel sind die Video-Anzeigeeinheit 2010, die Eingabevorrichtung 2012 und die UI-Navigationsvorrichtung 2014 in eine Berührungsbildschirmanzeige eingebracht. Das Computersystem 2000 kann zusätzlich eine Speicherungsvorrichtung 2016 (z.B. eine Laufwerkeinheit), eine Signalerzeugungsvorrichtung 2018 (z.B. einen Lautsprecher), eine Netzwerkschnittstellenvorrichtung 2020, und einen oder mehrere Sensoren (nicht gezeigt) wie beispielsweise einen Globales-Positionierungssystem- (GPS; global positioning system) Sensor, Kompass, Beschleunigungssensor, Gyrometer, Magnetometer oder anderen Sensor umfassen.
-
Die Speicherungsvorrichtung 2016 umfasst ein maschinenlesbares Medium 2022, auf dem ein oder mehrere Sätze von Datenstrukturen und Anweisungen 2024 (z.B. Software) gespeichert sind, die durch irgendeine oder mehrere der Methodologien oder Funktionen, die hierin beschrieben werden, ausgeführt oder benutzt werden. Die Anweisungen 2024 können auch vollständig oder zumindest teilweise innerhalb des Hauptspeichers 2004, statischen Speichers 2006 und/oder innerhalb des Prozessors 2002 während der Ausführung derselben durch das Computersystem 2000 vorliegen, wobei der Hauptspeicher 2004, der statische Speicher 2006 und der Prozessor 2002 auch maschinenlesbare Medien bilden.
-
Obwohl das maschinenlesbare Medium 2022 bei einem beispielhaften Ausführungsbeispiel als ein einzelnes Medium dargestellt ist, kann der Begriff „maschinenlesbares Medium“ ein einzelnes Medium oder mehrere Medien umfassen (z.B. eine zentralisierte oder verteilte Datenbank und/oder zugeordnete Caches und Server), die die eine oder die mehreren Anweisungen 2024 speichern. Der Begriff „maschinenlesbares Medium“ ist auch so zu verstehen, dass er irgendein greifbares Medium umfasst, das in der Lage ist, Anweisungen zur Ausführung durch die Maschine zu speichern, zu kodieren oder zu tragen, und das die Maschine dazu veranlasst, irgendeine oder mehrere der Methodologien der vorliegenden Offenbarung durchzuführen, oder das in der Lage ist, Datenstrukturen, die durch derartige Anweisungen verwendet werden können oder diesen zugeordnet sind, zu speichern, zu kodieren oder zu tragen. Der Begriff „maschinenlesbares Medium“ soll dementsprechend Festkörperspeicher (solid-state memories) und optische und magnetische Medien umfassen, ist aber nicht darauf beschränkt. Spezifische Beispiele von maschinenlesbaren Medien umfassen nicht-flüchtigen Speicher, beispielsweise umfassend, aber nicht beschränkt auf, Halbleiterspeicherbauelemente (z.B. elektrisch programmierbaren Nur-Lese-Speicher (EPROM), elektrisch löschbaren programmierbaren Nur-Lese-Speicher (EEPROM) und Flash-Speicher-Bauelemente; Magnetplatten wie beispielsweise interne Festplatten und Wechselplatten; magneto-optische Platten; und CD-ROM- und DVD-ROM-Platten.
-
Die Anweisungen 2024 können ferner über ein Kommunikationsnetzwerk 2026 unter Verwendung eines Übertragungsmediums via die Netzwerkschnittstellenvorrichtung 2020 unter Verwendung irgendeiner der Anzahl von gut bekannten Übertragungsprotokollen (z.B. HTTP) gesendet oder empfangen werden. Beispiele von Kommunikationsnetzwerken umfassen ein lokales Netz (LAN), ein Weitbereichsnetz (WAN), das Internet, Mobilfunknetze, Plain Old Telephone (einfacher alter Telefondienst; POTS) -Netze und drahtlose Datennetze (z.B. Bluetooth, Wi-Fi, 3G und 4G LTE/LTE-A, 5G, DSRC oder WiMAX-Netze). Der Begriff „Übertragungsmedium“ ist so aufzufassen, dass er irgendein nicht greifbares Medium umfasst, das in der Lage ist, Anweisungen zur Ausführung durch die Maschine zu speichern, zu kodieren oder zu tragen, und digitale oder analoge Kommunikationssignale oder ein anderes nicht greifbares Medium zum Ermöglichen von Kommunikation solcher Software umfasst.
-
Beispiel 1 ist eine Vorrichtung eines Systems, die Vorrichtung umfassend: einen ersten Die, der erste Die umfassend: eine erste Verarbeitungslogik; eine erste Verbindung zu einer zweiten Verarbeitungslogik eines zweiten Dies, wobei die erste Verbindung mit der ersten Verarbeitungslogik gekoppelt ist; eine zweite Verbindung zu einem Eingangs-/Ausgangs- (I/O) Kanal, wobei die zweite Verbindung mit der ersten Verarbeitungslogik gekoppelt ist; einen Speicher, gekoppelt mit der ersten Verarbeitungslogik; den zweiten Die, der zweite Die umfassend: eine zweite Verarbeitungslogik; eine dritte Verbindung von einer sekundären Vorrichtung, wobei sich die sekundäre Vorrichtung außerhalb des Systems befindet, und wobei die dritte Verbindung mit der zweiten Verarbeitungslogik gekoppelt ist; einen Speicher, gekoppelt mit der zweiten Verarbeitungslogik, wobei die zweite Verarbeitungslogik ausgebildet ist zum: ansprechend auf das Empfangen einer Anzeige eines ersten Fehlers von dem ersten Die, Senden eines Signals zum Abschalten von ersten Ausgangsdaten von der zweiten Verbindung; ansprechend auf das Empfangen einer Anzeige eines zweiten Fehlers von der sekundären Vorrichtung über die dritte Verbindung, Senden eines Signals zum Abschalten von zweiten Ausgangsdaten der sekundären Vorrichtung; Empfangen von ersten Quervergleichsdaten von dem ersten Die; Empfangen von zweiten Quervergleichsdaten von der sekundären Vorrichtung; und ansprechend auf einen Vergleich von ersten Quervergleichsdaten mit zweiten Quervergleichsdaten, die einen Fehler anzeigen und das Nicht-Empfangen des ersten Fehlers oder des zweiten Fehlers, Senden eines Signals zum Abschalten der ersten Ausgangsdaten und der zweiten Ausgangsdaten.
-
Bei Beispiel 2 umfasst der Gegenstand von Beispiel 1, wobei die ersten Quervergleichsdaten auf ersten Ausgangsdaten basieren und die zweiten Quervergleichsdaten auf zweiten Ausgangsdaten basieren.
-
Bei Beispiel 3 umfasst der Gegenstand der Beispiele 1-2, wobei die zweite Verarbeitungslogik ferner ausgebildet ist zum: ansprechend auf einen Vergleich von ersten Quervergleichsdaten mit zweiten Quervergleichsdaten, die den Fehler anzeigen und das Empfangen des ersten Fehlers und des zweiten Fehlers, Senden des Signals zum Abschalten der ersten Ausgangsdaten und der zweiten Ausgangsdaten.
-
Bei Beispiel 4 umfasst der Gegenstand der Beispiele 1-3, wobei das System ferner eine erste Leistungsquelle, einen ersten Takt und eine erste Sicherung umfasst, wobei die erste Leistungsquelle, der erste Takt und die erste Sicherung mit dem ersten Die gekoppelt sind; und eine zweite Leistungsquelle, einen zweiten Takt und eine zweite Sicherung, wobei die zweite Leistungsquelle, der zweite Takt und die zweite Sicherung mit dem zweiten Die gekoppelt sind.
-
Bei Beispiel 5 umfasst der Gegenstand der Beispiele 1-4, wobei die erste Verarbeitungslogik ferner ausgebildet ist zum: Empfangen von Eingangsdaten von externen Sensoren über die zweite Verbindung; Erzeugen von Ausgangsdaten basierend auf dem Eingang; und Senden der Ausgangsdaten über die zweite Verbindung.
-
Bei Beispiel 6 umfasst der Gegenstand von Beispiel 5, wobei die erste Verarbeitungslogik ferner ausgebildet ist zum: Erzeugen der ersten Vergleichsdaten basierend auf den Ausgangsdaten.
-
Bei Beispiel 7 umfasst der Gegenstand der Beispiele 1-6, wobei das System ein System-auf-einem-Chip (SoC) ist.
-
Bei Beispiel 8 umfasst der Gegenstand der Beispiele 1-7, das System ferner umfassend: einen Schalter, wobei der Schalter ausgebildet ist, um die ersten Ausgangsdaten von der ersten Verarbeitungslogik auf einer vierten Verbindung und die zweiten Ausgangsdaten von der sekundären Vorrichtung auf einer fünften Verbindung zu empfangen und um dritte Ausgangsdaten auf einer sechsten Verbindung auszugeben, wobei der Schalter ausgebildet ist, um Signale von der zweiten Verarbeitungslogik auf einer siebten Verbindung zu empfangen.
-
Bei Beispiel 9 umfasst der Gegenstand von Beispiel 8, wobei der Schalter ferner ausgebildet ist zum: Auswählen aus drei Konfigurationen basierend auf den Signalen von der zweiten Verarbeitungslogik und der sekundären Vorrichtung, die drei Konfigurationen umfassend: Senden der ersten Ausgangsdaten auf der sechsten Verbindung, Senden der zweiten Ausgangsdaten auf der sechsten Verbindung und Abschalten der sechsten Verbindung.
-
Bei Beispiel 10 umfasst der Gegenstand der Beispiele 1-9, der erste Die ferner umfassend: eine dritte Verarbeitungslogik zum Detektieren von Fehlern mit dem ersten Die, wobei die dritte Verarbeitungslogik ausgebildet ist, um eine Anzeige von Fehlern mit dem ersten Die an die erste Verarbeitungslogik oder die zweite Verarbeitungslogik zu senden.
-
Bei Beispiel 11 umfasst der Gegenstand der Beispiele 1-10, der zweite Die ferner umfassend: eine vierte Verarbeitungslogik zum Detektieren von Fehlern mit dem zweiten Die, wobei die vierte Verarbeitungslogik ausgebildet ist, um eine Anzeige von Fehlern mit dem zweiten Die an die zweite Verarbeitungslogik zu senden; und wobei die zweite Verarbeitungslogik ferner ausgebildet ist zum: ansprechend auf das Anzeigen von Fehlern mit dem zweiten Die, Senden des Signals zum Abschalten der ersten Ausgangsdaten und der zweiten Ausgangsdaten.
-
Bei Beispiel 12 umfasst der Gegenstand der Beispiele 1-11, wobei die zweite Verbindung ausgebildet ist, um mit dem zweiten Die zu verbinden, und wobei der zweite Die ferner eine I/O-Schnittstelle umfasst, die I/O-Schnittstelle umfassend I/O-Pins zum Empfangen und Senden von Daten an eine externe Vorrichtung, wobei die zweite Verbindung mit der I/O-Schnittstelle verbunden ist.
-
Bei Beispiel 13 umfasst der Gegenstand der Beispiel 1-12, wobei die zweite Verbindung ausgebildet ist, um einen Eingang von Sensoren zu empfangen und die ersten Ausgangsdaten Daten zur Steuerung von Aktuatoren umfassen, und wobei die dritte Verbindung ausgebildet ist, um den Eingang von den Sensoren zu empfangen und die zweiten Ausgangsdaten die Daten zur Steuerung der Aktuatoren umfassen.
-
Bei Beispiel 14 umfasst der Gegenstand der Beispiele 1-13, wobei die erste Verarbeitungslogik ausgebildet ist, um eine gleiche Anwendung als die sekundäre Vorrichtung gleichzeitig und redundant zu implementieren.
-
Bei Beispiel 15 umfasst der Gegenstand der Beispiele 1-14, wobei die Verarbeitungslogik ferner ausgebildet ist zum: Empfangen eines zweiten Fehlers von der sekundären Vorrichtung und Senden des zweiten Fehlers an den zweiten Die.
-
Bei Beispiel 16 umfasst der Gegenstand der Beispiel 1-15, wobei die Verarbeitungslogik ferner ausgebildet ist zum: Empfangen von zweiten Vergleichsdaten von der sekundären Vorrichtung und Senden der zweiten Vergleichsdaten an die zweite Verarbeitungslogik.
-
Bei Beispiel 17 umfasst der Gegenstand der Beispiele 1-16, wobei das System eine integrierte Schaltung ist und der erste Die und der zweite Die Teil der integrierten Schaltung sind.
-
Bei Beispiel 18 umfasst der Gegenstand der Beispiel 1-17, wobei die ersten Quervergleichsdaten ein erster Fehler-Detektionscode basierend auf den ersten Ausgangsdaten und die zweiten Quervergleichsdaten ein zweiter Fehler-Detektionscode basierend auf den zweiten Ausgangsdaten sind, und wobei ansprechend auf den Vergleich ferner umfassend: wenn die ersten Quervergleichsdaten und die zweiten Quervergleichsdaten nicht gleich sind, zeigen die ersten Quervergleichsdaten und die zweiten Quervergleichsdaten den Fehler an.
-
Bei Beispiel 19 umfasst der Gegenstand der Beispiele 1-18, wobei die ersten Ausgangsdaten von der zweiten Verbindung und die zweiten Ausgangsdaten von der sekundären Vorrichtung Befehle für Aktuatoren umfassen.
-
Beispiel 20 ist zumindest ein maschinenlesbares Medium, umfassend Anweisungen für Hardware-Fehlertoleranz welche bei Ausführung auf einer Maschine die Maschine veranlassen zum Ausführen von Operationen, umfassend: ansprechend auf das Empfangen einer Anzeige eines ersten Fehlers von einem ersten Die, Senden eines Signals zum Abschalten von ersten Ausgangsdaten von einer ersten Verarbeitungslogik, wobei der erste Die die erste Verarbeitungslogik umfasst; ansprechend auf das Empfangen einer Anzeige eines zweiten Fehlers von einer sekundären Vorrichtung, Senden eines Signals zum Abschalten von zweiten Ausgangsdaten der sekundären Vorrichtung; Empfangen von ersten Quervergleichsdaten von dem ersten Die; Empfangen von zweiten Quervergleichsdaten von der sekundären Vorrichtung; und ansprechend auf einen Vergleich von ersten Quervergleichsdaten mit zweiten Quervergleichsdaten, die einen Fehler anzeigen, und das Nicht-Empfangen des ersten Fehlers oder des zweiten Fehlers, Senden eines Signals zum Abschalten der ersten Ausgangsdaten und der zweiten Ausgangsdaten.
-
Bei Beispiel 21 umfasst der Gegenstand von Beispiel 20, wobei die ersten Quervergleichsdaten auf ersten Ausgangsdaten basieren und die zweiten Quervergleichsdaten auf zweiten Ausgangsdaten basieren.
-
Bei Beispiel 22 umfasst der Gegenstand der Beispiele 20-21, die Operationen ferner umfassend: ansprechend auf einen Vergleich von ersten Quervergleichsdaten mit zweiten Quervergleichsdaten, die den Fehler anzeigen, und das Empfangen des ersten Fehlers und des zweiten Fehlers, Senden des Signals zum Abschalten der ersten Ausgangsdaten und der zweiten Ausgangsdaten.
-
Bei Beispiel 23 umfasst der Gegenstand der Beispiele 20-22, die Operationen ferner umfassend: Empfangen von Eingangsdaten von externen Sensoren über die zweite Verbindung; Erzeugen von Ausgangsdaten basierend auf dem Eingang; und Senden der Ausgangsdaten über die zweite Verbindung.
-
Bei Beispiel 24 umfasst der Gegenstand von Beispiel 23, die Operationen ferner umfassend: Erzeugen der ersten Vergleichsdaten basierend auf den Ausgangsdaten.
-
Bei Beispiel 25 umfasst der Gegenstand der Beispiele 20-24, die Operationen ferner umfassend: Empfangen eines zweiten Fehlers von der sekundären Vorrichtung und Senden des zweiten Fehlers an den zweiten Die.
-
Bei Beispiel 26 umfasst der Gegenstand der Beispiele 20-25, die Operationen ferner umfassend: Empfangen von zweiten Vergleichsdaten von der sekundären Vorrichtung und Senden der zweiten Vergleichsdaten an die zweite Verarbeitungslogik.
-
Bei Beispiel 27 umfasst der Gegenstand der Beispiel 20-26, wobei die ersten Quervergleichsdaten ein erster Fehler-Detektionscode basierend auf den ersten Ausgangsdaten und die zweiten Quervergleichsdaten ein zweiter Fehler-Detektionscode basierend auf den zweiten Ausgangsdaten sind, und wobei ansprechend auf den Vergleich ferner umfassend: wenn die ersten Quervergleichsdaten und die zweiten Quervergleichsdaten nicht gleich sind, zeigen die ersten Quervergleichsdaten und die zweiten Quervergleichsdaten den Fehler an.
-
Bei Beispiel 28 umfasst der Gegenstand der Beispiele 20-27, wobei die ersten Ausgangsdaten von der zweiten Verbindung und die zweiten Ausgangsdaten von der sekundären Vorrichtung Befehle für Aktuatoren umfassen.
-
Beispiel 29 ist ein Verfahren für Hardware-Fehlertoleranz, das Verfahren umfassend: ansprechend auf das Empfangen einer Anzeige eines ersten Fehlers von einer ersten Verarbeitungslogik eines ersten Dies, Senden eines Signals zum Abschalten von ersten Ausgangsdaten von der ersten Verarbeitungslogik; ansprechend auf das Empfangen einer Anzeige eines zweiten Fehlers von einer sekundären Vorrichtung, Senden eines Signals zum Abschalten von zweiten Ausgangsdaten der sekundären Vorrichtung; Empfangen von ersten Quervergleichsdaten von dem ersten Die; Empfangen von zweiten Quervergleichsdaten von der sekundären Vorrichtung; und ansprechend auf einen Vergleich von ersten Quervergleichsdaten mit zweiten Quervergleichsdaten, die einen Fehler anzeigen, und das Nicht-Empfangen des ersten Fehlers oder des zweiten Fehlers, Senden eines Signals zum Abschalten der ersten Ausgangsdaten und der zweiten Ausgangsdaten.
-
Bei Beispiel 30 umfasst der Gegenstand von Beispiel 29, wobei die ersten Quervergleichsdaten auf ersten Ausgangsdaten basieren und die zweiten Quervergleichsdaten auf zweiten Ausgangsdaten basieren.
-
Bei Beispiel 31 umfasst der Gegenstand der Beispiele 29-30, das Verfahren ferner umfassend: ansprechend auf einen Vergleich von ersten Quervergleichsdaten mit zweiten Quervergleichsdaten, die den Fehler anzeigen, und das Empfangen des ersten Fehlers und des zweiten Fehlers, Senden des Signals zum Abschalten der ersten Ausgangsdaten und der zweiten Ausgangsdaten.
-
Bei Beispiel 32 umfasst der Gegenstand der Beispiele 29-31, das Verfahren ferner umfassend: Empfangen von Eingangsdaten von externen Sensoren über die zweite Verbindung; Erzeugen von Ausgangsdaten basierend auf dem Eingang; und Senden der Ausgangsdaten über die zweite Verbindung.
-
Bei Beispiel 33 umfasst der Gegenstand der Beispiele 29-32, das Verfahren ferner umfassend: Erzeugen der ersten Vergleichsdaten basierend auf den Ausgangsdaten.
-
Bei Beispiel 34 umfasst der Gegenstand der Beispiele 29-33, das Verfahren ferner umfassend: Empfangen eines zweiten Fehlers von der sekundären Vorrichtung und Senden des zweiten Fehlers an den zweiten Die.
-
Bei Beispiel 35 umfasst der Gegenstand der Beispiele 29-34, das Verfahren ferner umfassend: Empfangen von zweiten Vergleichsdaten von der sekundären Vorrichtung und Senden der zweiten Vergleichsdaten an die zweite Verarbeitungslogik.
-
Bei Beispiel 36 umfasst der Gegenstand der Beispiele 29-35, wobei die ersten Quervergleichsdaten ein erster Fehler-Detektionscode basierend auf den ersten Ausgangsdaten und die zweiten Quervergleichsdaten ein zweiter Fehler-Detektionscode basierend auf den zweiten Ausgangsdaten sind, und ansprechend auf den Vergleich ferner umfassend: wenn die ersten Quervergleichsdaten und die zweiten Quervergleichsdaten nicht gleich sind, zeigen die ersten Quervergleichsdaten und die zweiten Quervergleichsdaten den Fehler an.
-
Bei Beispiel 37 umfasst der Gegenstand der Beispiele 29-36, wobei die ersten Ausgangsdaten von der zweiten Verbindung und die zweiten Ausgangsdaten von der sekundären Vorrichtung Befehle für Aktuatoren umfassen.
-
Beispiel 38 ist eine Vorrichtung eines Systems, die Vorrichtung umfassend: Mittel für einen ersten Die, der erste Die umfassend: Mittel für die erste Verarbeitungslogik; Mittel für eine erste Verbindung zu einer zweiten Verarbeitungslogik eines zweiten Dies, wobei die erste Verbindung mit der ersten Verarbeitungslogik gekoppelt ist; Mittel für eine zweite Verbindung zu einem Eingangs-/Ausgangs- (I/O) Kanal, wobei die zweite Verbindung mit der ersten Verarbeitungslogik gekoppelt ist; Mittel für einen Speicher, gekoppelt mit der ersten Verarbeitungslogik; den zweiten Die, der zweite Die umfassend: Mittel für die zweite Verarbeitungslogik; Mittel für eine dritte Verbindung von einer sekundären Vorrichtung, wobei sich die sekundäre Vorrichtung außerhalb des Systems befindet, und wobei die dritte Verbindung mit der zweiten Verarbeitungslogik gekoppelt ist; Mittel für einen Speicher, gekoppelt mit der zweiten Verarbeitungslogik, wobei die zweite Verarbeitungslogik ausgebildet ist zum: ansprechend auf das Empfangen einer Anzeige eines ersten Fehlers von dem ersten Die, Mittel zum Senden eines Signals zum Abschalten von ersten Ausgangsdaten von der zweiten Verbindung; ansprechend auf das Empfangen einer Anzeige eines zweiten Fehlers von der sekundären Vorrichtung über die dritte Verbindung, Mittel zum Senden eines Signals zum Abschalten von zweiten Ausgangsdaten der sekundären Vorrichtung; Mittel zum Empfangen von ersten Quervergleichsdaten von dem ersten Die; Mittel zum Empfangen von zweiten Quervergleichsdaten von der sekundären Vorrichtung; und ansprechend auf einen Vergleich von ersten Quervergleichsdaten mit zweiten Quervergleichsdaten, die einen Fehler anzeigen und das Nicht-Empfangen des ersten Fehlers oder des zweiten Fehlers, Mittel zum Senden eines Signals zum Abschalten der ersten Ausgangsdaten und der zweiten Ausgangsdaten.
-
Bei Beispiel 39 umfasst der Gegenstand von Beispiel 38, wobei die ersten Quervergleichsdaten auf ersten Ausgangsdaten basieren und die zweiten Quervergleichsdaten auf zweiten Ausgangsdaten basieren.
-
Bei Beispiel 40 umfasst der Gegenstand der Beispiele 38-39, die Mittel für die zweite Verarbeitungslogik ferner umfassend: ansprechend auf einen Vergleich von ersten Quervergleichsdaten mit zweiten Quervergleichsdaten, die den Fehler anzeigen und das Empfangen des ersten Fehlers und des zweiten Fehlers, Mittel zum Senden des Signals zum Abschalten der ersten Ausgangsdaten und der zweiten Ausgangsdaten.
-
Bei Beispiel 41 umfasst der Gegenstand der Beispiele 38-40, wobei das System ferner Mittel für eine erste Leistungsquelle, Mittel für einen ersten Takt und Mittel für eine erste Sicherung umfasst, wobei die Mittel für die erste Leistungsquelle, die Mittel für den ersten Takt und die Mittel für die erste Sicherung mit den Mitteln für den ersten Die gekoppelt sind.
-
Bei Beispiel 42 umfasst der Gegenstand der Beispiele 36-41, die Mittel für die erste Verarbeitungslogik ferner umfassend: Mittel zum Empfangen von Eingangsdaten von externen Sensoren über die zweite Verbindung; Mittel zum Erzeugen von Ausgangsdaten basierend auf dem Eingang; und Mittel zum Senden der Ausgangsdaten über die zweite Verbindung.
-
Bei Beispiel 43 umfasst der Gegenstand von Beispiel 42, die Mittel für die erste Verarbeitungslogik ferner umfassend: Mittel zum Erzeugen der ersten Vergleichsdaten basierend auf den Ausgangsdaten.
-
Bei Beispiel 44 umfasst der Gegenstand der Beispiele 36-43, wobei das System ein System-auf-einem-Chip (SoC) ist.
-
Bei Beispiel 45 umfasst der Gegenstand der Beispiele 36-44, das System ferner umfassend: Mittel für einen Schalter, wobei das Mittel für den Schalter ausgebildet ist, um die ersten Ausgangsdaten von der ersten Verarbeitungslogik auf einer vierten Verbindung und die zweiten Ausgangsdaten von der sekundären Vorrichtung auf einer fünften Verbindung zu empfangen und um die dritten Ausgangsdaten auf einer sechsten Verbindung auszugeben, wobei das Mittel für den Schalter ausgebildet ist, um Signale von der zweiten Verarbeitungslogik auf einer siebten Verbindung zu empfangen.
-
Bei Beispiel 46 umfasst der Gegenstand von Beispiel 45, die Mittel für den Schalter ferner umfassend: Mittel zum Auswählen aus drei Konfigurationen basierend auf den Signalen von der zweiten Verarbeitungslogik und der sekundären Vorrichtung, die drei Konfigurationen umfassend: Senden der ersten Ausgangsdaten auf der sechsten Verbindung, Senden der zweiten Ausgangsdaten auf der sechsten Verbindung und Abschalten der sechsten Verbindung.
-
Bei Beispiel 47 umfasst der Gegenstand der Beispiele 36-46, der erste Die ferner umfassend: Mittel für eine dritte Verarbeitungslogik zum Detektieren von Fehlern mit dem ersten Die, wobei das Mittel für die dritte Verarbeitungslogik ausgebildet ist, um eine Anzeige von Fehlern mit dem ersten Die an die erste Verarbeitungslogik oder die zweite Verarbeitungslogik zu senden.
-
Bei Beispiel 48 umfasst der Gegenstand der Beispiele 36-47, die Mittel für den zweiten Die ferner umfassend: Mittel für eine vierte Verarbeitungslogik zum Detektieren von Fehlern mit dem zweiten Die, wobei die Mittel für die vierte Verarbeitungslogik ausgebildet sind, um eine Anzeige von Fehlern mit dem zweiten Die an die zweite Verarbeitungslogik zu senden; und die Mittel für die zweite Verarbeitungslogik ferner umfassend: ansprechend auf das Anzeigen von Fehlern mit dem zweiten Die, Mittel zum Senden des Signals zum Abschalten der ersten Ausgangsdaten und der zweiten Ausgangsdaten.
-
Bei Beispiel 49 umfasst der Gegenstand der Beispiele 36-48, wobei die Mittel für die zweite Verbindung ausgebildet sind, um mit dem zweiten Die zu verbinden, und wobei die Mittel für den zweiten Die ferner Mittel für eine I/O-Schnittstelle umfassen, die Mittel für die 1/0-Schnittstelle umfassend I/O-Pins zum Empfangen und Senden von Daten an eine externe Vorrichtung, wobei die Mittel für die zweite Verbindung mit der I/O-Schnittstelle verbunden sind.
-
Bei Beispiel 50 umfasst der Gegenstand der Beispiel 36-49, wobei die Mittel für die zweite Verbindung ausgebildet sind, um einen Eingang von Sensoren zu empfangen und die ersten Ausgangsdaten Daten umfassen zur Steuerung von Aktuatoren, und wobei das Mittel für die dritte Verbindung ausgebildet ist, um die Eingänge von den Sensoren zu empfangen und die zweiten Ausgangsdaten die Daten zur Steuerung der Aktuatoren umfassen.
-
Bei Beispiel 51 umfasst der Gegenstand der Beispiele 36-50, wobei das Mittel für die erste Verarbeitungslogik ausgebildet ist, um eine gleiche Anwendung als die sekundäre Vorrichtung gleichzeitig und redundant zu implementieren.
-
Bei Beispiel 52 umfasst der Gegenstand der Beispiele 36-51, die Mittel für die Verarbeitungslogik ferner umfassend: Mittel zum Empfangen eines zweiten Fehlers von der sekundären Vorrichtung und Senden des zweiten Fehlers an den zweiten Die.
-
Bei Beispiel 53 umfasst der Gegenstand der Beispiel 36-52, die Mittel für die Verarbeitungslogik ferner umfassend: Mittel zum Empfangen von zweiten Vergleichsdaten von der sekundären Vorrichtung und Senden der zweiten Vergleichsdaten an die zweite Verarbeitungslogik.
-
Bei Beispiel 54 umfasst der Gegenstand der Beispiele 36-53, wobei das System eine integrierte Schaltung ist und die Mittel für den ersten Die und die Mittel für den zweiten Die Teil der integrierten Schaltung sind.
-
Bei Beispiel 55 umfasst der Gegenstand der Beispiel 36-54, wobei die ersten Quervergleichsdaten ein erster Fehler-Detektionscode basierend auf den ersten Ausgangsdaten und die zweiten Quervergleichsdaten ein zweiter Fehler-Detektionscode basierend auf den zweiten Ausgangsdaten sind, und wobei ansprechend auf den Vergleich ferner umfassend: wenn die ersten Quervergleichsdaten und die zweiten Quervergleichsdaten nicht gleich sind, zeigen die ersten Quervergleichsdaten und die zweiten Quervergleichsdaten den Fehler an.
-
Bei Beispiel 56 umfasst der Gegenstand der Beispiele 1-55, wobei die ersten Ausgangsdaten von der zweiten Verbindung und die zweiten Ausgangsdaten von der sekundären Vorrichtung Befehle für Aktuatoren umfassen.
-
Beispiel 57 ist zumindest ein maschinenlesbares Medium, umfassend Anweisungen, die, wenn sie durch eine Verarbeitungsschaltungsanordnung ausgeführt werden, verursachen, dass die Verarbeitungsschaltungsanordnung Operationen durchführt, um irgendeines der Beispiele 1-56 zu implementieren.
-
Beispiel 58 ist eine Vorrichtung umfassend Mittel, um irgendeines der Beispiele 1-56 zu implementieren. Beispiel 59 ist ein System, um irgendeines der Beispiele 1-56 zu implementieren. Beispiel 60 ist ein Verfahren, um irgendeines der Beispiele 1-56 zu implementieren.
-
Die Zusammenfassung ist in Übereinstimmung mit 37 C.F.R Abschnitt 1.72(b) vorgesehen, wonach es einer Zusammenfassung bedarf, die ein schnelles Leserverständnis über die Beschaffenheit und den Inhalt der technischen Offenbarung erlaubt. Sie wird mit dem Verständnis eingereicht, dass sie nicht benutzt werden wird, um den Schutzbereich oder die Bedeutung der Ansprüche einzuschränken oder zu interpretieren. Die folgenden Ansprüche sind hiermit in die detaillierte Beschreibung aufgenommen, wobei jeder Anspruch als getrenntes Ausführungsbeispiel für sich steht.