-
Stand der Technik
-
Die Erfindung betrifft eine Recheneinheit mit wenigstens einem Rechenkern, einer primären Speichereinrichtung, und wenigstens einer Hauptverbindungseinheit zur Verbindung des wenigstens einen Rechenkerns mit der primären Speichereinrichtung. Die Erfindung betrifft ferner ein Betriebsverfahren für eine derartige Recheneinheit. Derartige Recheneinheiten sind bekannt und beispielsweise in Form von Mikrocontrollern kommerziell verfügbar.
-
Offenbarung der Erfindung
-
Es ist Aufgabe der vorliegenden Erfindung, eine Recheneinheit der eingangs genannten Art dahingehend zu verbessern, dass sie eine gesteigerte Flexibilität, eine gesteigerte Betriebssicherheit und einen gesteigerten Gebrauchsnutzen aufweist.
-
Diese Aufgabe wird bei der Recheneinheit der eingangs genannten Art erfindungsgemäß dadurch gelöst, dass die Recheneinheit wenigstens zwei Funktionseinheiten aufweist, wobei wenigstens eine erste Funktionseinheit der wenigstens zwei Funktionseinheiten dazu ausgebildet ist, a) erste Daten von wenigstens einer weiteren Funktionseinheit der wenigstens zwei Funktionseinheiten zu empfangen und/oder b) zweite Daten an wenigstens eine weitere Funktionseinheit der wenigstens zwei Funktionseinheiten zu senden, wobei wenigstens eine primäre Verbindungseinheit vorgesehen ist, die dazu ausgebildet ist, zumindest zeitweise eine, insbesondere direkte, Datenverbindung zwischen der ersten Funktionseinheit und wenigstens einer weiteren Funktionseinheit der wenigstens zwei Funktionseinheiten herzustellen, wobei wenigstens eine Komponente der Recheneinheit dazu ausgebildet ist, eine Konfiguration wenigstens einer Funktionseinheit und/oder der primären Verbindungseinheit zu verändern, und wobei die Recheneinheit dazu ausgebildet ist, wenigstens zeitweise eine Veränderung der Konfiguration der wenigstens einen Funktionseinheit und/oder der primären Verbindungseinheit zu unterbinden.
-
Die erfindungsgemäßen Funktionseinheiten bieten die Möglichkeit, eine Rechenleistung und/oder die Funktionalität der Recheneinheit zu erweitern. Insbesondere ist durch die erfindungsgemäße Möglichkeit des direkten Datenaustauschs zwischen den Funktionseinheiten ein Datenfluss ermöglicht, welcher nicht die weiteren Komponenten der Recheneinheit wie beispielsweise deren Rechenkerne bzw. die primäre Speichereinrichtung mit einbezieht. Auf diese Weise können die Rechenkerne bzw. die primäre Speichereinrichtung bzw. die Hauptverbindungseinheit entlastet werden, während gleichzeitig ein oder mehrere erfindungsgemäße Funktionseinheiten für sie vorgesehene Berechnungsaufgaben wahrnehmen.
-
Weiter ist erfindungsgemäß vorgeschlagen, dass wenigstens eine primäre Verbindungseinheit vorgesehen ist, die dazu ausgebildet ist, zumindest zeitweise eine, insbesondere direkte, Datenverbindung zwischen der ersten Funktionseinheit und wenigstens einer weiteren Funktionseinheit der wenigstens zwei Funktionseinheiten herzustellen. Dies ermöglicht vorteilhaft die Steuerung eines Datenaustauschs bzw. Datenflusses zwischen verschiedenen Funktionseinheiten, so dass auch während des Betriebs der Recheneinheit z.B. eine Konfiguration bzw. Neukonfiguration der Datenverbindung(en) zwischen den betreffenden Funktionseinheiten möglich ist, wodurch eine gesteigerte Flexibilität erzielt wird. Bei einer bevorzugten Ausführungsform weist die primäre Verbindungseinheit wenigstens ein Koppelnetz auf. Besonders bevorzugt ist das Koppelnetz als blockierungsfreies Koppelnetz ausgelegt. In diesem Fall ermöglicht das Koppelnetz jederzeit die Herstellung von Datenverbindungen zwischen allen mit dem Koppelnetz verbundenen Funktion Einheiten sowie gegebenenfalls weiteren mit dem Koppelnetz verbundenen Einheiten wie beispielsweise Komponenten der Recheneinheit. Bei weiteren Ausführungsformen kann die primäre Verbindungseinheit auch andere Strukturen umfassen, beispielsweise wenigstens ein Bussystem, welches eine Datenverbindung zwischen den an das Bussystem angeschlossenen Funktionseinheiten herstellt. Bei weiteren Ausführungsformen kann die primäre Verbindungseinheit auch wenigstens eine direkte Datenverbindung zwischen wenigstens zwei Funktionseinheiten aufweisen. Ferner sind bei anderen Ausführungsformen auch direkte Datenverbindungen zwischen mehr als zwei Funktionseinheiten denkbar.
-
Weiter ist erfindungsgemäß vorgeschlagen, dass wenigstens eine Komponente der Recheneinheit dazu ausgebildet ist, eine Konfiguration wenigstens einer Funktionseinheit und/oder der primären Verbindungseinheit zu verändern, und dass die Recheneinheit dazu ausgebildet ist, wenigstens zeitweise eine Veränderung der Konfiguration der wenigstens einen Funktionseinheit und/oder der primären Verbindungseinheit zu unterbinden.
-
Einerseits ist dadurch vorteilhaft die Möglichkeit gegeben, die Funktionalität der wenigstens einen Funktionseinheit durch die Veränderung ihrer Konfiguration anzupassen, sodass die Flexibilität der erfindungsgemäßen Recheneinheit weiter gesteigert wird. Andererseits ist dadurch vorteilhaft die Möglichkeit gegeben, beispielsweise eine unerwünschte Veränderung der Konfiguration zu verhindern, wodurch eine Sicherheit und Zuverlässigkeit bei dem Betrieb der erfindungsgemäßen Recheneinheit ebenfalls weiter gesteigert wird.
-
Bei einer weiteren vorteilhaften Ausführungsform ist vorgesehen, dass mehrere Gruppen von Funktionseinheiten vorgesehen sind, wobei jeder der mehreren Gruppen wenigstens eine primäre Verbindungseinheit zugeordnet ist, die dazu ausgebildet ist, zumindest zeitweise eine, insbesondere direkte, Datenverbindung zwischen Funktionseinheiten der betreffenden Gruppe herzustellen. Dadurch können gleichsam mehrere Cluster von Funktionseinheiten bereitgestellt werden, welche jeweils gleichartige oder verschiedenartige Berechnungen oder sonstige Aufgaben ausführen können.
-
Bei einer weiteren Ausführungsform ist vorgesehen, dass eine primäre Verbindungseinheit, welche einer Gruppe von Funktionseinheiten zugeordnet ist, dazu ausgebildet ist, eine Datenverbindung zwischen Funktionseinheiten unterschiedlicher Gruppen herzustellen. Bei weiteren Ausführungsformen können die primären Verbindungseinheiten, die den jeweiligen Gruppen zugeordnet sind, wiederum wenigstens eine der folgenden Komponenten aufweisen: ein Koppelnetz, ein Bussystem, wenigstens eine direkte Datenverbindung.
-
Bei einer weiteren Ausführungsform ist wenigstens eine sekundäre Verbindungseinheit vorgesehen, die dazu ausgebildet ist, zumindest zeitweise eine direkte Datenverbindung zwischen den mehreren Gruppen herzustellen. Bei einer bevorzugten Ausführungsform weist die sekundäre Verbindungseinheit wenigstens ein Koppelnetz auf. Besonders bevorzugt ist das Koppelnetz als blockierungsfreies Koppelnetz ausgelegt. In diesem Fall ermöglicht das Koppelnetz jederzeit die Herstellung von Datenverbindungen zwischen allen mit dem Koppelnetz verbundenen Funktionseinheiten bzw. Gruppen von Funktionseinheiten sowie gegebenenfalls weiteren mit dem Koppelnetz verbundenen Einheiten wie beispielsweise Komponenten der Recheneinheit. Bei weiteren Ausführungsformen kann die sekundäre Verbindungseinheit auch andere Strukturen umfassen, beispielsweise wenigstens ein Bussystem, welches eine Datenverbindung zwischen den an das Bussystem angeschlossenen Funktionseinheiten bzw. Gruppen von Funktionseinheiten herstellt. Bei weiteren Ausführungsformen kann die sekundäre Verbindungseinheit auch wenigstens eine direkte Datenverbindung zwischen wenigstens zwei Funktionseinheiten bzw. Gruppen von Funktionseinheiten aufweisen. Ferner sind bei anderen Ausführungsformen auch direkte Datenverbindungen zwischen mehr als zwei Funktionseinheiten bzw. Gruppen von Funktionseinheiten denkbar.
-
Bei einer weiteren Ausführungsform ist vorgesehen, dass die primäre Verbindungseinheit und/oder die sekundäre Verbindungseinheit einen Konfigurationsspeicher zur zumindest zeitweisen Speicherung von einen Betrieb der betreffenden Verbindungseinheit steuernden Verbindungskonfigurationsdaten aufweist, wobei insbesondere wenigstens ein Rechenkern und/oder wenigstens eine Funktionseinheit und/oder wenigstens eine Peripheriekomponente der Recheneinheit dazu ausgebildet ist, wenigstens einen Teil der Verbindungskonfigurationsdaten zu verändern. Auf diese Weise kann z.B. ein Rechenkern der Recheneinheit den Datenfluss zwischen verschiedenen Funktionseinheiten, der über die primäre und/oder sekundäre Verbindungseinheit läuft, steuern.
-
Bei einer weiteren Ausführungsform ist vorgesehen, dass wenigstens eine Funktionseinheit einen lokalen Konfigurationsspeicher aufweist, der zur zumindest zeitweisen Speicherung eine Konfiguration der wenigstens einen Funktionseinheit charakterisierender Konfigurationsdaten ausgebildet ist, wobei wenigstens ein Rechenkern und/oder wenigstens eine andere Funktionseinheit und/oder wenigstens eine Peripheriekomponente der Recheneinheit dazu ausgebildet ist, wenigstens einen Teil der Konfigurationsdaten zu verändern. Auf diese Weise kann z.B. ein Rechenkern der Recheneinheit oder eine andere Funktionseinheit die Konfiguration der betreffenden Funktionseinheit beeinflussen.
-
Ein weiterer Aspekt ist gegeben durch eine Recheneinheit nach einer der vorstehenden Ausführungsformen, wobei wenigstens eine Funktionseinheit einen lokalen Konfigurationsspeicher aufweist, der zur zumindest zeitweisen Speicherung einer Konfiguration der die wenigstens eine Funktionseinheit charakterisierenden Konfigurationsdaten ausgebildet ist, wobei wenigstens ein Rechenkern und/oder wenigstens eine andere Funktionseinheit und/oder wenigstens eine Peripheriekomponente der Recheneinheit dazu ausgebildet ist, wenigstens einen Teil der Konfigurationsdaten zu verändern.
-
Bei einer weiteren Ausführungsform ist vorgesehen, dass wenigstens eine Funktionseinheit einen lokalen Funktionsspeicher aufweist, der zur zumindest zeitweisen Speicherung von Eingangsdaten und/oder Ausgangsdaten der Funktionseinheit bzw. von Zwischenergebnissen von Berechnungen der Funktionseinheit ausgebildet ist, wobei wenigstens ein Rechenkern und/oder wenigstens eine andere Funktionseinheit und/oder wenigstens eine Peripheriekomponente der Recheneinheit dazu ausgebildet ist, wenigstens einen Teil der Daten des lokalen Funktionsspeichers zu verändern. Auf diese Weise kann z.B. ein Rechenkern oder eine Peripheriekomponente der Recheneinheit oder die andere Funktionseinheit z.B. Ausgangsdaten der betreffenden Funktionseinheit beeinflussen.
-
Bei einer weiteren Ausführungsform ist vorgesehen, dass die Recheneinheit dazu ausgebildet ist, zumindest zeitweise wenigstens eine der folgenden Aktionen zu unterbinden: Verändern des Konfigurationsspeichers der primären Verbindungseinheit, Verändern des Konfigurationsspeichers der sekundären Verbindungseinheit, Verändern von Konfigurationsdaten wenigstens einer Funktionseinheit, Verändern von Funktionsdaten wenigstens einer Funktionseinheit. Dadurch ist vorteilhaft die Möglichkeit gegeben, die gemäß den vorstehenden Ausführungsformen bereitgestellte Flexibilität zumindest zeitweise gezielt einzuschränken, wodurch beispielsweise eine Ausbreitung von Fehlern in der Recheneinheit verhindert und damit eine Betriebssicherheit gesteigert werden kann. Durch diese Maßnahme kann möglichen Sicherheitsanforderungen (engl. „Safety“) entsprochen werden, indem beim Auftreten permanenter und/oder transienter Fehler diese Fehler keine Auswirkung auf einen sicheren Betrieb haben, indem besonders vorteilhaft die Ausbreitung von Fehlern eingeschränkt ist und somit ein sicherer Betrieb ermöglicht wird.
-
Bei einer weiteren Ausführungsform ist vorgesehen, dass wenigstens zwei Funktionseinheiten mittels einer direkten Datenverbindung miteinander verbindbar sind, wobei die Recheneinheit dazu ausgebildet ist, zumindest zeitweise die direkte Datenverbindung zu sperren oder wenigstens eine Veränderung von Daten wenigstens einer der wenigstens zwei Funktionseinheiten über die direkte Datenverbindung zu unterbinden. Durch die Verbindung mittels der direkten Datenverbindung, die insbesondere nicht die primäre bzw. sekundäre Verbindungseinheit enthält, besteht die Möglichkeit, z.B. zwei Funktionseinheiten abgestimmt aufeinander zu betreiben, so dass diese gemeinsam z.B. Daten mit einer größeren Datenbreite verarbeiten können, als dies für jede der beiden einzelnen Funktionseinheiten möglich wäre. Des Weiteren ist die hierfür nutzbare direkte Datenverbindung vorteilhaft zumindest zeitweise sperrbar, um eine gegenseitige Beeinflussung der beteiligten Funktionseinheiten im Fehlerfalle zu verhindern.
-
Bei einer weiteren Ausführungsform ist vorgesehen, dass wenigstens eine der Funktionseinheiten als Hardwareschaltung, insbesondere vollständig als Hardwareschaltung, ausgebildet ist. Dadurch ergibt sich eine besonders effiziente, leistungsfähige und klein bauende Anordnung.
-
Bei einer weiteren vorteilhaften Ausführungsform ist vorgesehen, dass die Recheneinheit (insbesondere eine ihrer Funktionseinheiten) dazu ausgebildet ist, eine Erkennung von Fehlern bei der Verarbeitung und/oder Speicherung und/oder Übertragung von Daten durch wenigstens eine ihrer Komponenten (z.B. Rechenkern, primäre Speichereinrichtung, Funktionseinheit, usw.) auszuführen. Sofern ein Fehler erkannt worden ist, kann beispielsweise eine Fehlerreaktion eingeleitet werden. Die Fehlerreaktion kann beispielsweise wenigstens eine der folgenden Maßnahmen umfassen: Senden einer Unterbrechungsanforderung IRQ (englisch: interrupt bzw. interrupt request), Blockieren von mittels der primären Verbindungseinheit und/oder mittels der sekundären Verbindungseinheit übertragbarer Daten bzw. Datenpakete, Unterbinden einer Veränderung von Verbindungskonfigurationsdaten einer primären und/oder sekundären Verbindungseinrichtung, Unterbinden einer Veränderung von Konfigurationsdaten wenigstens einer Funktionseinheit, Unterbinden einer Veränderung von Funktionsdaten wenigstens einer Funktionseinheit. Besonders vorteilhaft werden bei weiteren Ausführungsformen die von wenigstens einer Funktionseinheit und / oder von wenigstens einer anderen Komponente zu verarbeitenden und/oder zu speichernden und/oder zu übertragenden Daten in der Art und Weise aufbereitet bzw. zur Verfügung gestellt, so dass eine Fehlererkennung durch die fehlererkennende Funktionseinheit ermöglicht wird, beispielsweise durch das Hinzufügen redundanter Informationen zu den Daten, insbesondere durch Paritätsinformationen, fehlerkorrigierende Codes, etc.
-
Beispielsweise kann bei manchen Ausführungsformen wenigstens eine Funktionseinheit vorgesehen sein, die dazu ausgebildet ist, Daten zusätzlich mit Paritätsinformationen und/oder Fehlerkorrekturcodes zu versehen. Bei einer bevorzugten Ausführungsform kann die Funktionseinheit dazu ausgebildet sein, die Hamming-Distanz betreffender Daten zu erhöhen.
-
Besonders bevorzugt kann die erfindungsgemäße Recheneinheit in einem Steuergerät für ein Zielsystem verwendet werden, beispielsweise in einem Steuergerät für eine Brennkraftmaschine eines Kraftfahrzeugs oder für ein radarbasiertes Abstandsmessungssystem oder dergleichen. Im Gegensatz zu herkömmlichen Recheneinheiten wie beispielsweise herkömmlichen Mikrocontrollern ist die erfindungsgemäße Recheneinheit vorteilhaft um die durch die Funktionseinheiten bereitgestellte und nachstehend näher beschriebene Funktionalität erweitert und kann somit auch als Mikrocontroller mit der erfindungsgemäß ermöglichten Zusatzfunktionalität angesehen werden. Generell kann die erfindungsgemäße Recheneinheit überall da eingesetzt werden, wo konventionelle Recheneinheiten wie beispielsweise Mikrocontroller oder Mikroprozessoren oder digitale Signalprozessoren oder dergleichen eingesetzt werden, und wo eine zusätzliche Funktionalität und/oder eine höhere Leistungsfähigkeit, wie sie durch die erfindungsgemäßen Funktionseinheiten bereitgestellt wird, sowie ein zuverlässiger Betrieb wünschenswert ist. Es ist ferner möglich, in bestehenden Systemen vorhandene konventionelle Recheneinheiten durch die erfindungsgemäße Recheneinheit zu ersetzen, um eine effizientere Abarbeitung von seither durch die konventionellen Recheneinheiten ausgeführten Berechnungs- und sonstigen Aufgaben zu ermöglichen. Besonders vorteilhaft ist der Einsatz der erfindungsgemäßen Recheneinheit manchen Ausführungsformen zufolge auch im Bereich der Verarbeitung von sicherheitsrelevanten Daten bzw. zur Bearbeitung von kryptografischen Algorithmen denkbar.
-
Bei einer weiteren vorteilhaften Ausführungsform ist vorgesehen, dass wenigstens eine der Funktionseinheiten eine Eingangsschnittstelle zum Empfang der ersten Daten und/oder eine Ausgangsschnittstelle zur Ausgabe der zweiten Daten aufweist. Diese Ein- bzw. Ausgangsschnittstelle(n) können bei bevorzugten Ausführungsformen insbesondere zum Datenaustausch (Senden und/oder Empfangen) mit anderen gleichartigen oder verschiedenartigen Funktionseinheiten verwendet werden (oder ggf. auch mit anderen Komponenten, welche zu den Ein- bzw. Ausgangsschnittstelle(n) der Funktionseinheiten kompatible entsprechende Schnittstellen aufweisen).
-
Bei einer bevorzugten Ausführungsform können Eingangsdaten für wenigstens eine Funktionseinheit auch in einer primären Speichereinrichtung und/oder in einer sekundären Speichereinrichtung und/oder in weiteren Peripheriekomponenten vorliegen. Die primäre Speichereinrichtung und/oder sekundäre Speichereinrichtung und/oder Peripheriekomponenten können dabei jeweils in Untereinheiten unterteilt sein, in denen die Eingangsdaten vorliegen. Beispielsweise können Eingangsdaten in der primären und/oder sekundären Speichereinrichtung, vorliegen, wobei die primäre und/oder sekundäre Speichereinrichtung z.B. (ggf. neben anderen Speichertypen) einen Arbeitsspeicher, z.B. vom SRAM-Typ, aufweisen kann. Bei einer weiteren vorteilhaften Ausführungsform ist vorgesehen, dass wenigstens eine der Funktionseinheiten dazu ausgebildet ist, Daten aus der primären Speichereinrichtung und/oder aus der sekundären Speichereinrichtung und/oder aus weiteren Peripheriekomponenten (z.B. aus den adressierbaren Registern und/oder Speicherbereichen einer DMA-Steuereinheit und/oder einer Unterbrechungsanforderungs-Verteilereinrichtung und/oder weiterer Hardwarebeschleuniger) zu lesen und/oder in diese zu schreiben. Dies kann bei einer bevorzugten Ausführungsform insbesondere über eine von den vorstehend genannten Ein- bzw. Ausgangsschnittstelle(n) verschiedene (andersartige) Schnittstelle erfolgen, beispielsweise auch mittelbar über die von den vorstehend genannten Ein- bzw. Ausgangsschnittstelle(n) verschiedene (andersartige) Schnittstelle und z.B. über wenigstens eine primäre und/oder sekundäre Verbindungseinheit.
-
Gemäß einer weiteren Ausführungsform können die Eingangsschnittstelle und/oder die Ausgangsschnittstelle beispielsweise dazu ausgebildet sein, für die Funktionseinheit bestimmte erste Daten in einem vorgebbaren Format, beispielsweise in Form von Datenpaketen, zu empfangen bzw. zur Ausgabe an eine andere Einheit, beispielsweise eine andere Funktionseinheit, bestimmte zweite Daten in einem vorgebbaren Format, beispielsweise wiederum in Form von Datenpaketen, auszugeben.
-
Die Eingangsschnittstelle kann beispielsweise dazu ausgebildet sein, an die primäre Verbindungseinheit angeschlossen zu werden. Je nach Ausführung der primären Verbindungseinheit kann die Eingangsschnittstelle also beispielsweise dazu ausgebildet sein, an ein Koppelnetz und/oder ein Bussystem angeschlossen zu werden. Alternativ oder ergänzend kann die Eingangsschnittstelle auch dazu ausgebildet sein, eine direkte Datenverbindung zwischen der betreffenden Funktionseinheit und mindestens einer weiteren Funktionseinheit herzustellen, beispielsweise mittels direkt verschalteter Datenleitungen. Dieselben Ausführungen gelten in entsprechender Weise für die Ausbildung der Ausgangsschnittstelle bei weiteren Ausführungsformen der Erfindung.
-
Bei einer weiteren Ausführungsform ist vorgesehen, dass wenigstens eine der Funktionseinheiten eine lokale Steuereinrichtung zur Steuerung eines Betriebs der Funktionseinheit aufweist. Beispielsweise kann eine derartige lokale Steuereinrichtung wenigstens einen Zustandsautomaten (englisch: state machine) umfassen. Bei einer weiteren vorteilhaften Ausführungsform weist wenigstens eine der Funktionseinheiten eine lokale Berechnungseinheit auf. Bei einer weiteren vorteilhaften Ausführungsform kann die lokale Berechnungseinheit wenigstens ein grobgranulares Hardwareelement aufweisen oder als grobgranulares Hardwareelement ausgebildet sein.
-
Bei einer weiteren vorteilhaften Ausführungsform ist die Recheneinheit, insbesondere wenigstens eine Funktionseinheit, dazu ausgebildet, eine Erkennung von Fehlern in Eingangsdaten mittels Auswertung von Paritätsinformationen und/oder eine Korrektur von Fehlern mittels fehlerkorrigierender Kodes auszuführen. Die Paritätsinformationen und/oder fehlerkorrigierenden Kodes können beispielsweise zusammen mit den Ausgangsdaten von wenigstens einer weiteren Funktionseinheit und/oder auch von weiteren Komponenten der Recheneinheit gebildet werden, zum Beispiel einem Rechnerkern und/oder der Speichereinrichtung und/oder einem Bussystem bzw. einer Verbindungseinheit und/oder weiteren Peripheriekomponenten. In einer vorteilhaften Ausführungsform können Funktionseinheiten bei erkannten Fehlern mit einer Fehlerreaktion reagieren, beispielsweise durch Ausgabe eines speziellen Fehlersignals.
-
Mit anderen Worten sind die Ausführungsformen sehr gut geeignet, um auf einfache Art und Weise z.B. eine redundante Berechnung durchzuführen, (z.B. wenn mehrere gleichartige / identische Funktionseinheiten vorliegen, die redundant verwendet werden können) und / oder z.B. um Fehler in Eingangsdaten, die bei der Übertragung der Daten entstanden sind, mittels Auswertung von Paritätsinformationen zu erkennen (z.B. wenn entsprechende Paritätsinformationen vorliegen) und/oder um Fehler in Eingangsdaten, die bei der Übertragung der Daten entstanden sind, mittels fehlerkorrigierender Kodes korrigieren zu können (z.B. wenn fehlerkorrigierendes Kodes eingesetzt werden).
-
Bei einer weiteren vorteilhaften Ausführungsform ist wenigstens eine Funktionseinheit vorgesehen, die dazu ausgebildet ist, zueinander redundante Berechnungen von Rechenkernen und/oder Peripherieeinheiten der Recheneinheit auszuwerten. Beispielsweise können zueinander redundante Berechnungen durch die nachfolgend genannten Komponenten ausgeführt werden, und die wenigstens eine Funktionseinheit, bei der es sich beispielsweise um eine wie vorstehend beschriebene vergleichende Funktionseinheit handeln kann, ist dazu ausgebildet, die Ergebnisse der redundante Berechnungen miteinander zu vergleichen, beispielsweise um einen Fehler zu erkennen: (Rechenkern, Funktionseinheit), (Rechenkern, Rechenkern), (Rechenkern, Peripheriekomponente der Recheneinheit), (Peripheriekomponente der Recheneinheit, Funktionseinheit). Beispielsweise können also bei einer Ausführungsform zueinander redundante Berechnungen durch einen Rechenkern der Recheneinheit und durch eine Peripheriekomponente der Recheneinheit ausgeführt werden, und die wenigstens eine Funktionseinheit gemäß der vorliegenden Ausführungsform ist dazu ausgebildet, die betreffenden Ergebnisse der redundante Berechnungen auszuwerten, insbesondere miteinander zu vergleichen.
-
Weitere vorteilhafte Ausgestaltungen sind Gegenstand der Unteransprüche.
-
Weitere Lösungen der Aufgabe der vorliegenden Erfindung sind angegeben durch ein Steuergerät gemäß Patentanspruch 11 sowie ein Verfahren gemäß Patentanspruch 12.
-
Weitere Merkmale, Anwendungsmöglichkeiten und Vorteile der Erfindung ergeben sich aus der nachfolgenden Beschreibung von Ausführungsbeispielen der Erfindung, die in den Figuren der Zeichnung dargestellt sind. Dabei bilden alle beschriebenen oder dargestellten Merkmale für sich oder in beliebiger Kombination den Gegenstand der Erfindung, unabhängig von ihrer Zusammenfassung in den Patentansprüchen oder deren Rückbeziehung sowie unabhängig von ihrer Formulierung bzw. Darstellung in der Beschreibung bzw. in der Zeichnung.
-
In der Zeichnung zeigt:
- 1A schematisch ein Blockdiagramm einer Ausführungsform der erfindungsgemäßen Recheneinheit,
- 1B-1F schematisch weitere Ausführungsformen der erfindungsgemäßen Recheneinheit,
- 2A schematisch ein vereinfachtes Blockdiagramm einer Funktionseinheit gemäß einer Ausführungsform der Erfindung,
- 2B schematisch eine Datenstruktur gemäß einer Ausführungsform der Erfindung,
- 3 schematisch ein vereinfachtes Flussdiagramm einer Ausführungsform des erfindungsgemäßen Verfahrens,
- 4 ein Betriebsszenario gemäß einer Ausführungsform, und
- 5 schematisch eine weitere Ausführungsform.
-
1A zeigt schematisch ein Blockdiagramm einer Ausführungsform der erfindungsgemäßen Recheneinheit 100. Die Recheneinheit 100 weist mehrere Rechenkerne 110a, 110b, 110c auf sowie eine primäre Speichereinrichtung 120. Eine Hauptverbindungseinheit 130 (z.B. englisch: core interconnect), z.B. ein Bussystem oder ein Koppelnetz (englisch: crossbar switch), ist vorgesehen zur Verbindung der Rechenkerne untereinander bzw. zur Verbindung der Rechenkerne mit der primären Speichereinrichtung 120. Optional weist die Recheneinheit 100 weitere Peripheriekomponenten auf, was vorliegend durch den gestrichelt dargestellten Block 125 angedeutet ist. Beispielsweise kann es sich bei derartigen Peripheriekomponenten um Analog/Digital-Wandler, Ein-/Ausgabeschnittstellen, Zeitgeberbausteine, DMA („direct memory access“, deutsch:Speicherdirektzugriffs)-Steuereinheiten oder dergleichen handeln. Die primäre Speichereinrichtung 120 kann bei einer Ausführungsform vorteilhaft sowohl wenigstens einen Arbeitsspeicher (Direktzugriffsspeicher, RAM, Random Access Memory), insbesondere vom SRAM-Typ und/oder vom DRAM-Typ, als auch wenigstens einen nichtflüchtigen Speicher (non-volatile RAM (NVRAM)), aufweisen, z.B. als Flash, EPROM, Ferroelectric RAM (FeRAM), Magnetoresistiver RAM (MRAM), Phase-change RAM (PCRAM).
-
Erfindungsgemäß weist die Recheneinheit 100 wenigstens zwei Funktionseinheiten auf, wobei wenigstens eine erste Funktionseinheit 140a dazu ausgebildet ist, erste Daten von wenigstens einer weiteren Funktionseinheit 140, 140b zu empfangen und/oder zweite Daten an wenigstens eine weitere Funktionseinheit 140, 140b zu senden bzw. auszugeben. Weiter erfindungsgemäß ist wenigstens eine primäre Verbindungseinheit 150 vorgesehen, die dazu ausgebildet ist, zumindest zeitweise eine, insbesondere direkte, Datenverbindung a1, a2 zwischen der ersten Funktionseinheit 140a und wenigstens einer weiteren Funktionseinheit 140, 140b der wenigstens zwei Funktionseinheiten herzustellen.
-
Weiter erfindungsgemäß ist wenigstens eine Komponente 110a, 125, 140 der Recheneinheit 100 dazu ausgebildet, eine Konfiguration wenigstens einer Funktionseinheit 140, 140a, 140b und/oder der primären Verbindungseinheit 150 zu verändern, wodurch eine Funktionalität der betreffenden Funktionseinheit 140, 140a, 140b bzw. der primären Verbindungseinheit 150 beeinflusst werden kann. Dadurch kann die Recheneinheit 100 besonders flexibel an unterschiedliche Einsatzgebiete angepasst werden. Eine derartige Veränderung der Konfiguration der wenigstens einen Funktionseinheit 140, 140a, 140b und/oder der primären Verbindungseinheit 150 kann insbesondere auch dynamisch, d.h. während eines Betriebs der Recheneinheit 100, erfolgen.
-
Weiter erfindungsgemäß ist die Recheneinheit 100 dazu ausgebildet, wenigstens zeitweise eine Veränderung der Konfiguration der wenigstens einen Funktionseinheit 140, 140a, 140b und/oder der primären Verbindungseinheit 150 zu unterbinden. Dadurch kann eine Ausbreitung von Fehlern innerhalb der Recheneinheit 100 vorteilhaft verhindert werden.
-
Die erfindungsgemäßen Funktionseinheiten 140,140a, 140b bieten vorteilhaft die Möglichkeit, eine Rechenleistung und/oder die Funktionalität der Recheneinheit 100 zu erweitern. Insbesondere ist durch die erfindungsgemäße Möglichkeit des direkten Datenaustauschs zwischen den Funktionseinheiten ein Datenfluss ermöglicht, welcher nicht die weiteren Komponenten der Recheneinheit 100 wie beispielsweise deren Rechenkerne 110a, 110b, 110c bzw. die primäre Speichereinrichtung 120 bzw. die Hauptverbindungseinheit 130 miteinbezieht. Auf diese Weise können die Rechenkerne 110a, 110b, 110c, die primäre Speichereinrichtung 120, und die Hauptverbindungseinheit 130 entlastet werden, während gleichzeitig ein oder mehrere erfindungsgemäße Funktionseinheiten 140, 140a, 140b für sie vorgesehene Berechnungsaufgaben bzw. sonstige Aufgaben wahrnehmen.
-
Beispielsweise können die erfindungsgemäßen Funktionseinheiten 140,140a, 140b, die bevorzugt überwiegend, besonders bevorzugt jedoch vollständig, als Hardwareschaltung realisiert sind, dazu ausgebildet sein, Berechnungen und/oder Logikoperationen und/oder sonstige Funktionen auszuführen. Die Realisierung von Look-up-Tabellen, Kennlinien und/oder Kennfeldern durch Funktionseinheiten ist ebenfalls denkbar. Details zu einem inneren Aufbau der Funktionseinheiten und ihrer Kommunikation untereinander sind weiter unten u.a. unter Bezugnahme auf 2A, 2B angegeben. Nachfolgend wird jedoch zunächst unter Bezugnahme auf 1A bis 1F auf die Anordnung der Funktionseinheiten innerhalb der erfindungsgemäßen Recheneinheit 100 und deren Datenanbindung an die zentralen Komponenten 110a, 110b, 110c, 120, 130 der Recheneinheit 100 eingegangen.
-
Wie bereits vorstehend erwähnt, ist wenigstens eine primäre Verbindungseinheit 150 vorgesehen, die dazu ausgebildet ist, zumindest zeitweise eine, insbesondere direkte, Datenverbindung zwischen der ersten Funktionseinheit 140a und wenigstens einer weiteren Funktionseinheit 140, 140b herzustellen. Dies ermöglicht vorteilhaft die Steuerung eines Datenaustauschs bzw. Datenflusses zwischen verschiedenen Funktionseinheiten, so das auch während des Betriebs der Recheneinheit eine Konfiguration bzw. Neukonfiguration der Datenverbindung(en) zwischen den betreffenden Funktionseinheiten möglich ist, wodurch eine gesteigerte Flexibilität erzielt wird. Unter einer direkten Datenverbindung wird vorliegend verstanden, dass zwischen den beteiligten Funktionseinheiten Daten ausgetauscht werden können, ohne die Hauptverbindungseinheit 130 der Recheneinheit 100 zu verwenden. Vielmehr ermöglicht beispielsweise die primäre Verbindungseinheit 150 eine solche, direkte Datenverbindung zwischen den an sie angeschlossenen Funktionseinheiten, vgl. die Pfeile a1, a2, welche einen Datenfluss zwischen den Komponenten 140, 140a, 140b sowie der primären Verbindungseinheit 150 andeuten.
-
Bei einer bevorzugten Ausführungsform weist die primäre Verbindungseinheit 150 wenigstens ein Koppelnetz 152a auf. Besonders bevorzugt ist das Koppelnetz als blockierungsfreies Koppelnetz ausgelegt. In diesem Fall ermöglicht das Koppelnetz 152a jederzeit die Herstellung von Datenverbindungen zwischen allen mit dem Koppelnetz 152a verbundenen Funktionseinheiten 140, 140a, 140b sowie gegebenenfalls weiteren mit dem Koppelnetz verbundenen Einheiten wie beispielsweise Komponente 130 der Recheneinheit. Bei weiteren Ausführungsformen ist es auch denkbar, die primäre Verbindungseinheit 150 als nicht blockierungsfreies Koppelnetz auszulegen.
-
Bei weiteren Ausführungsformen kann die primäre Verbindungseinheit 150 auch andere Strukturen umfassen, beispielsweise wenigstens ein Bussystem oder wenigstens eine direkte Datenverbindung zwischen wenigstens zwei Funktionseinheiten. Ferner sind alternativ oder ergänzend zu dem Koppelnetz 152a bzw. generell zu der primären Verbindungseinheit 150 bei anderen Ausführungsformen auch direkte Datenverbindungen 152b (z.B. in Form von festverdrahteten Datenleitungen) zwischen anderen bzw. mehr als zwei Funktionseinheiten denkbar. Bei einer weiteren Ausführungsform kann vorgesehen sein, dass die wenigstens eine primäre Verbindungseinheit 150 mehrere der vorstehend genannten Verbindungsmechanismen aufweist, also beispielsweise ein Koppelnetz zur Verbindung einiger Funktionseinheiten bzw. aller Funktionseinheiten untereinander sowie beispielsweise ein Bussystem, welches mehrere bzw. alle Funktionseinheiten verbindet.
-
Bei einer weiteren Ausführungsform ist wenigstens eine sekundäre Verbindungseinheit 155, vgl. 1A, vorgesehen, die dazu ausgebildet ist, eine Datenverbindung, vgl. Pfeil a3, zwischen der Hauptverbindungseinheit 130 und wenigstens einer Funktionseinheit 140 entweder direkt und/oder mittelbar über die primäre Verbindungseinheit 150 herzustellen, wodurch eine leistungsfähige Anbindung zur Datenübertragung zwischen den betreffenden Funktionseinheiten 140, 140a, 140b sowie 110a, 110b, 110c, 120, 125 über die Hauptverbindungseinheit 130 gegeben ist.
-
Insgesamt ermöglicht die Vorsehung der Funktionseinheiten 140, 140a, 140b und ihre flexible Verbindung untereinander, die mittels der primären Verbindungseinheit 150 hergestellt wird, die Bereitstellung zusätzlicher Rechenleistung bzw. zusätzlicher Funktionalitäten innerhalb der erfindungsgemäßen Recheneinheit 100. Die Gesamtheit der Komponenten 140, 140a, 140b, 150 kann somit vorteilhaft auch als „flexible Hardwareerweiterung“ 1500 der Recheneinheit 100 aufgefasst werden, wobei diese flexible Hardwareerweiterung 1500 Rechenaufgaben besonders vorteilhaft im Wesentlichen eigenständig, also unabhängig von den Komponenten 110a, 110b, 110c, 120, 125, 130, ausführen kann, jedoch bei Bedarf über die Anbindung der sekundären Verbindungseinheit 155 effizient mit wenigstens einer der Komponenten 110a, 110b, 110c, 120, 125, 130 Daten austauschen kann. Bei einer Ausführungsform weist die primäre Verbindungseinheit 150 einen Konfigurationsspeicher 151 zur zumindest zeitweisen Speicherung von einen Betrieb der primären Verbindungseinheit 150 steuernden Verbindungskonfigurationsdaten VBK auf. Die Verbindungskonfigurationsdaten VBK können bei einer Ausführungsform beispielsweise steuern, ob von einer ersten Funktionseinheit an eine zweite Funktionseinheit gesendete Datenpakete überhaupt von der primären Verbindungseinheit 150 an die zweite Funktionseinheit weitergeleitet werden, bzw. auch gar nicht, bzw. ob diese gegebenenfalls verzögert weitergeleitet werden. Wenigstens eine Komponente der Recheneinheit 100, beispielsweise ein Rechenkern 110a und/oder wenigstens eine Funktionseinheit 140 und/oder wenigstens eine Peripheriekomponente 125 der Recheneinheit 100 kann bei einer weiteren Ausführungsform dazu ausgebildet sein, wenigstens einen Teil der Verbindungskonfigurationsdaten VBK zu verändern. Auf diese Weise kann die betreffende Komponente der Recheneinheit 100 Einfluss nehmen auf eine Steuerung des Datenflusses durch die primäre Verbindungseinheit 150. Besonders vorteilhaft kann beispielsweise ein Rechenkern 110a die Verbindungskonfigurationsdaten VBK zumindest vorübergehend so ändern, dass eine Datenübertragung von einer Funktionseinheit an eine zweite Funktionseinheit für diesen Zeitraum grundsätzlich unterbunden ist. Entsprechend braucht die Unterbrechung dabei nicht notwendigerweise an weitere Bedingungen gekoppelt sein, beispielsweise dass zuvor ein Fehler aufgetreten ist. Somit ist vorteilhafterweise sichergestellt, dass innerhalb von Funktionseinheiten auftretende Fehler sich nicht an die zumindest vorübergehend getrennten Funktionseinheiten ausbreiten können, insbesondere nicht mittels der primären Verbindungseinheit 150. In vorteilhaften Ausführungsformen kann die Trennung für die Berechnung sicherheitsrelevanter Funktionen eingesetzt werden, um bestimmten Sicherheitsanforderungen gerecht zu werden (englisch: „Safety“). In weiteren vorteilhaften Ausführungsformen kann die Trennung der Datenübertragung zwischen Funktionseinheiten wieder aufgehoben werden, um beispielsweise vorübergehend nicht sicherheitsrelevante Funktionen zu berechnen. Besonders vorteilhaft kann beispielsweise auch erst im Falle des Auftretens eines Fehlers ein Übergreifen von Fehlern von einer ersten Funktionseinheit auf eine zweite Funktionseinheit bzw. weitere Funktionseinheiten verhindert werden. Dies kann beispielsweise dann gegeben sein, wenn eine bestimmte Funktionseinheit fehlerhafte Ausgangsdaten bereitstellt und diese über die primäre Verbindungseinheit 150 an eine oder mehrere andere Funktionseinheiten ausgibt. Sofern beispielsweise ein Rechenkern 110a diesen Fehlerzustand erkannt hat, kann er Verbindungskonfigurationsdaten VBK zumindest vorübergehend entsprechend ändern, um zu verhindern, dass die fehlerhaften Ausgangsdaten an die anderen Funktionseinheiten ausgegeben werden.
-
Bei einer weiteren Ausführungsform kann ein Fehlerfall beispielsweise auch an eine Fehlerbehandlungseinheit 115 signalisiert werden.
-
1B zeigt schematisch ein Blockdiagramm einiger Komponenten der erfindungsgemäßen Recheneinheit gemäß einer weiteren Ausführungsform. Abgebildet ist ein erster Rechenkern 110a, die primäre Verbindungseinheit 150, sowie beispielhaft zwei Funktionseinheiten 140a, 140b. Ebenfalls in 1B abgebildet ist eine Wirkverbindung c1 ausgehend von dem ersten Rechenkern 110a zu den Verbindungskonfigurationsdaten VBK der primären Verbindungseinheit 150. Die Wirkverbindung c1 kann beispielsweise mittels einer Hauptverbindungseinheit 130 zwischen dem Rechenkern 110a und dem Konfigurationsspeicher 151 der primären Verbindungseinheit 150 realisiert sein. Ebenfalls in 1B abgebildet ist eine Wirkverbindung c1', ausgehend von einer weiteren Peripheriekomponente 125 zu den Verbindungskonfigurationsdaten VBK der primären Verbindungseinheit 150. Die Wirkverbindung c1' kann beispielsweise mittels einer direktverdrahteten Verbindung zwischen der weiteren Peripheriekomponente 125 und dem Konfigurationsspeicher 151 der primären Verbindungseinheit 150 realisiert sein.
-
Die Funktionseinheit 140a weist einen lokalen Konfigurationsspeicher 1430 auf, der zur zumindest zeitweisen Speicherung eine Konfiguration der wenigstens einen Funktionseinheit charakterisierenden Konfigurationsdaten ausgebildet ist. Ferner weist die Funktionseinheit 140a einen lokalen Funktionsspeicher 1440 auf, der zur zumindest zeitweisen Speicherung von Eingangsdaten und/oder Ausgangsdaten der Funktionseinheit 140a und/oder zur Speicherung von Zwischenergebnissen von Berechnungen der Funktionseinheit 140a ausgebildet ist. Die weitere Funktionseinheit 140b kann über vergleichbare lokale Konfigurationsspeicher bzw. Funktionsspeicher verfügen, die aus Gründen der Übersichtlichkeit jedoch nicht in 1B abgebildet sind.
-
Bei einer Ausführungsform ist der erste Rechenkern 110a und/oder eine Peripheriekomponente 125 dazu ausgebildet, wenigstens einen Teil der Konfigurationsdaten in dem Konfigurationsspeicher 1430 verändern. Dies ist in 1B durch die Pfeile c2, c2' angedeutet. Bei einer weiteren Ausführungsform ist der erste Rechenkern 110a und/oder eine Peripheriekomponente 125 dazu ausgebildet, wenigstens einen Teil der Daten des lokalen Funktionsspeichers 1440 der Funktionseinheit 140a zu verändern. Dies ist in 1B durch die Pfeile c3, c3' angedeutet.
-
Bei anderen Ausführungsformen ist auch denkbar, dass anstelle des ersten Rechenkerns 110a und /oder der Peripheriekomponente 125 oder zusätzlich hierzu ein oder mehrere andere Komponenten der Recheneinheit 100 (1A) dazu ausgebildet sind, die Verbindungskonfigurationsdaten VBK und/oder die Konfigurationsdaten des Konfigurationsspeichers 1430 und/oder wenigstens einen Teil des lokalen Funktionsspeichers 1440 zu verändern. Dadurch ist eine große Flexibilität bei dem Betrieb der Recheneinheit und ihrer Funktionseinheiten gegeben. Insbesondere kann dynamisch eine Rekonfiguration der betreffenden Funktionseinheiten erfolgen.
-
Besonders vorteilhaft ist bei einer weiteren Ausführungsform vorgesehen, dass die Recheneinheit 100 dazu ausgebildet ist, zumindest zeitweise wenigstens eine der folgenden Aktionen zu unterbinden: Verändern des Konfigurationsspeichers 151 der primären Verbindungseinheit 150, Verändern von Konfigurationsdaten wenigstens einer Funktionseinheit 140a, Verändern von Funktionsdaten wenigstens einer Funktionseinheit 140a.
-
Bei einer weiteren vorteilhaften Ausführungsform ist die Recheneinheit 100 bzw. wenigstens eine ihrer Komponenten, bevorzugt mindestens eine Funktionseinheit 140b, dazu ausgebildet, eine Erkennung von Fehlern in Eingangsdaten mittels Auswertung von Paritätsinformationen und/oder eine Korrektur von Fehlern in Eingangsdaten mittels fehlerkorrigierender Kodes auszuführen. Die Paritätsinformationen können beispielsweise in wenigstens einer Komponente der Recheneinheit 100 bzw. von wenigstens einer ihrer Komponenten, bevorzugt von mindestens einer Funktionseinheit 140, 140a, 140b und/oder einem Rechnerkern 110a, 110b, 110c und/oder der Speichereinrichtung 120 und/oder einem Bussystem 130 bzw. einer Verbindungseinheit 150, 155) für die Ausgangsdaten gebildet werden, welche der Funktionseinheit 140b zugeleitet werden. Bei weiteren Ausführungsformen kann dieses Prinzip auch auf die Anwendung der fehlerkorrigierenden Kodes angewandt werden.
-
Bei weiteren vorteilhaften Ausführungsformen kann vorgesehen sein, dass in Abhängigkeit von der Erkennung von Fehlern eine Änderung der Verbindungskonfigurationsdaten VBK bzw. von Daten des Konfigurationsspeichers 1430 bzw. von Daten des lokalen Funktionsspeichers 1440 erfolgt. Bei weiteren vorteilhaften Ausführungsform kann vorgesehen sein, dass in Abhängigkeit von der Erkennung von Fehlern wenigstens zeitweise eine Veränderung der Verbindungskonfigurationsdaten VBK bzw. von Daten des Konfigurationsspeichers 1430 bzw. von Daten des lokalen Funktionsspeichers 1440 unterbunden wird, um eine Ausbreitung von Fehlern innerhalb der Recheneinheit zu verhindern.
-
1C zeigt eine weitere Ausführungsform 100b der erfindungsgemäßen Recheneinheit. Analog zu 1A weist die Recheneinheit 100b gemäß 1C wiederum drei Rechenkerne 100a, 110b, 110c auf sowie eine primäre Speichereinrichtung 120 sowie gegebenenfalls weitere Peripherieeinheiten, welche in 1C jedoch nicht explizit abgebildet sind, sondern durch die drei Punkte rechts der primären Speichereinrichtung 120 symbolisiert sind. Bei der vorliegenden Ausführungsform ist eine flexible Hardwareerweiterung in Form von mehreren Gruppen G1, G2 von Funktionseinheiten vorgesehen. Eine erste Gruppe G1 weist vorliegend beispielhaft drei Funktionseinheiten 140c, 140d, 140e auf, die untereinander über eine erste primäre Verbindungseinheit 150_1 verbunden sind. Eine zweite Gruppe G2 weist vorliegend beispielhaft zwei Funktionseinheiten 140f, 140g auf, die untereinander über eine zweite primäre Verbindungseinheit 150_2 verbunden sind. Die erste primäre Verbindungseinheit 150_1 ist dazu ausgebildet, zumindest zeitweise eine, insbesondere direkte, Datenverbindung zwischen den Funktionseinheiten 140c, 140d, 140e der ersten Gruppe G1 herzustellen. Die zweite primäre Verbindungseinheit 150_2 ist dazu ausgebildet, zumindest zeitweise eine, insbesondere direkte, Datenverbindung zwischen den Funktionseinheiten 140f, 140g der zweiten Gruppe G2 herzustellen. Die erste primäre Verbindungseinheit 150_1 und/oder die zweite primäre Verbindungseinheit 150_2 können beispielsweise als Koppelnetz, insbesondere blockierungsfreies Koppelnetz, Bussystem, direkte Datenverbindung, wenigstens eine Kombination hieraus oder in sonstiger Weise ausgebildet sein. Eine entsprechende Datenverbindung der jeweiligen Funktionseinheiten derselben Gruppe ist in 1C durch nicht näher bezeichnete Blockpfeile zwischen den betreffenden Funktionseinheiten und der jeweils zugeordneten primären Verbindungseinheit symbolisiert.
-
Durch die vorliegende Ausführungsform 100b der Recheneinheit können gleichsam mehrere Cluster G1, G2 von Funktionseinheiten bereitgestellt werden, welche jeweils gleichartige oder verschiedenartige Berechnungen oder sonstige Aufgaben ausführen können. Bei einer besonders bevorzugten Ausführungsform ist vorgesehen, dass die beiden Cluster bzw. Gruppen G1, G2 zueinander redundante Berechnungen unter Verwendung derselben Eingangsdaten ausführen. Zusätzlich kann wenigstens eine weitere Funktionseinheit 140b" bei der Recheneinheit 100b dazu vorgesehen sein, die hierbei entstehenden Ausgangsdaten im Sinne der erfindungsgemäßen Erkennung von Fehlern bei der Verarbeitung und/oder Speicherung und/oder Übertragung von Daten auszuwerten, insbesondere die Daten zu vergleichen bzw. die Datenübertragung anhand der Paritätsinformationen auf Fehler zu prüfen bzw. die erhaltenen Daten mithilfe fehlerkorrigierender Codes zu korrigieren. Insbesondere sind bei dieser Ausführungsform auch Fehler erkennbar, die in wenigstens einer der primären Verbindungseinheiten 150_1, 150_2 entstehen.
-
Vorliegend ist eine Datenverbindung zwischen den Gruppen G1, G2, der weiteren Funktionseinheit 140b" und der Hauptverbindungseinheit 130 durch eine sekundäre Verbindungseinheit 155a realisiert, welche beispielsweise als Koppelnetz, Bussystem, oder in sonstiger Form ausgebildet sein kann. Entsprechende Datenverbindungen sind durch die Blockpfeile a4, a5, a5' symbolisiert. Die sekundäre Verbindungseinheit 155a kann ferner zur Herstellung einer direkten Datenverbindung zwischen den Gruppen G1, G2 bzw. deren Funktionseinheiten ausgebildet sein, also ohne Einbeziehung der Hauptverbindungseinheit 130 für eine solche Datenverbindung.
-
Bei einer weiteren Ausführungsform (nicht gezeigt) ist vorgesehen, dass eine primäre Verbindungseinheit 150_1, welche einer Gruppe G1 von Funktionseinheiten zugeordnet ist, dazu ausgebildet ist, eine Datenverbindung zwischen Funktionseinheiten unterschiedlicher Gruppen G1, G2 und/oder der weiteren Funktionseinheit 140b" herzustellen.
-
Die sekundäre Verbindungseinheit 155a weist einen Konfigurationsspeicher 151' auf, der vergleichbar zu dem Konfigurationsspeicher 151 der primären Verbindungseinheit 150 (1A) ausgebildet sein kann und dementsprechend zur zumindest zeitweisen Speicherung von Verbindungskonfigurationsdaten (nicht gezeigt) der sekundären Verbindungseinheit 155a vorgesehen sein kann.
-
Bei manchen Ausführungsformen können auch die in dem Konfigurationsspeicher 151' gespeicherten Verbindungskonfigurationsdaten der sekundären Verbindungseinheit 155a durch wenigstens eine Komponente 110a, 125, 140c der Recheneinheit 100b verändert werden, wodurch sich zu der vorstehend unter Bezugnahme auf 1A beschriebenen Komponente 150 vergleichbare Effekte ergeben. Beispielsweise wird so die Fähigkeit zur Gewährung und zur Unterbindung eines Datenaustausches geschaffen, jeweils mittelbar über die Hauptverbindungseinheit 130, die Funktionseinheiten der Gruppe G1 mit den weiteren Komponenten 110a, 125 der Recheneinheit 100 sowie die Funktionseinheiten der Gruppe G2 mit den weiteren Komponenten 110a, 125 der Recheneinheit 100. Bei weiteren Ausführungsformen kann vorgesehen sein, dass die Recheneinheit 100b (1C) dazu ausgebildet ist, zumindest zeitweise das Verändern von Verbindungskonfigurationsdaten bzw. von Daten des Konfigurationsspeichers 151' der sekundären Verbindungseinheit 155a zu unterbinden.
-
1D zeigt eine weitere Ausführungsform 100c der erfindungsgemäßen Recheneinheit. Im Gegensatz zu der Ausführungsform gemäß 1C ist eine sekundäre Verbindungseinheit 155c vorgesehen, welche jeweils eine Datenverbindung a6, a7 zwischen den primären Verbindungseinheiten 150_1, 150_2 der Gruppen G1, G2 herstellt, sowie eine Datenverbindung a8 zwischen diesen Elementen und der Hauptverbindungseinheit 130. Eine zur Fehlererkennung vorgesehene Funktionseinheit 140b" ist ebenfalls an die sekundäre Verbindungseinheit 155c angebunden, vergleiche den Pfeil a7'. Die sekundäre Verbindungseinheit 155c weist einen Konfigurationsspeicher 151" auf, der weiteren Ausführungsformen zufolge zumindest zeitweise durch wenigstens eine Komponente der Recheneinheit 100c, insbesondere z.B. durch einen Rechenkern 110a und/oder eine Peripheriekomponente 125 und/oder eine Funktionseinheit 140c, änderbar ist, um einen Datenfluss von Daten zwischen den Funktionseinheiten und über die sekundäre Verbindungseinheit 155c zu beeinflussen. Die sekundäre Verbindungseinheit 155c ermöglicht insbesondere die Gewährung sowie die Unterbindung eines Datenaustausches der Funktionseinheiten der Gruppe G1 mit den Funktionseinheiten der Gruppe G2.
-
Bei weiteren Ausführungsformen ist vorgesehen, dass die Recheneinheit 100c zumindest zeitweise Änderungen des Konfigurationsspeichers 151" unterbindet.
-
Bei einer Ausführungsform ist vorgesehen, dass die beiden Gruppen G1, G2 zueinander redundante Berechnungen ausführen, deren Ergebnisse durch die Funktionseinheit 140b" im Sinne einer Fehlererkennung auswertbar sind. Bei weiteren Ausführungsformen ist vorstellbar, dass Funktionseinheiten der ersten Gruppe G1 zeitlich nacheinander redundante Berechnungen ausführen, beispielsweise dieselbe Berechnungsaufgabe auf denselben Eingangsdaten mehrfach hintereinander wiederholen, und dass eine weitere Funktionseinheit, beispielsweise eine Funktionseinheit der zweiten Gruppe G2 oder die Funktionseinheit 140b", eine Auswertung der hierbei erhaltenen Ergebnisse im Sinne einer Fehlererkennung ausführt, insbesondere indem die in Gruppe G1 redundant berechneten Ausgabedaten jeweils an die auswertende Funktionseinheit der zweiten Gruppe G2 oder die Funktionseinheit 140b" übertragen werden.
-
1E zeigt eine weitere Ausführungsform 100d der erfindungsgemäßen Recheneinheit. Hierbei sind weitere Peripheriekomponenten der Recheneinheit 100d wie beispielsweise Analog/Digital-Wandler 125a, Schnittstellenbausteine 125b gezeigt. Bei dieser Ausführungsform ist als sekundäre Verbindungseinheit ferner ein Bussystem 155d vorgesehen, welches eine Datenverbindung a8' zwischen der Hauptverbindungseinheit 130 und der primären Verbindungseinheit 150 herstellt. Bevorzugt weist die primäre Verbindungseinheit 150 wiederum ein Koppelnetz 152 auf, um die verschiedenen Funktionseinheiten 140h, 140i, ..., 140p untereinander zu verbinden. Optional weist die Funktionseinheit 140h zusätzlich zu ihrer Datenverbindung zu dem Koppelnetz 152 eine direkte Datenverbindung a9 zu dem Bussystem 155d auf. Die weitere Funktionseinheit 140i ist in vergleichbarer Weise sowohl über das Koppelnetz 152 als auch eine direkte Verbindung a10 zu dem Bussystem 155d angebunden.
-
Bei einer vorteilhaften Ausführungsform kann wenigstens eine der Funktionseinheiten 140h, 140i, ..., 140p zur Erkennung von Fehlern bei der Verarbeitung und/oder Speicherung und/oder Übertragung von Daten wenigstens einer Komponente der Recheneinheit 100d ausgebildet sein, insbesondere auch zu einer Auswertung von zueinander redundanten Berechnungen von Komponenten der erfindungsgemäßen Recheneinheit, die nicht bzw. nicht nur Funktionseinheiten umfassen, sondern zusätzlich und/oder ausschließlich besonders vorteilhaft die Rechenkerne 110a, 110b, 110c und/oder die Peripherieeinheiten 125.
-
Bei manchen Ausführungsformen ist es möglich, dass eine oder mehrere Funktionseinheiten 140 auf die primäre Speichereinrichtung 120 zugreifen, was üblicherweise unter Verwendung der Hauptverbindungseinheit 130, der sekundären Verbindungseinheit 155 sowie gegebenenfalls einer primären Verbindungseinheit 150 (1A) erfolgt.
-
Bei manchen Ausführungsformen ist wenigstens eine Komponente 110a, 125a, 125b, 140h der Recheneinheit 100d dazu ausgebildet, eine Konfiguration wenigstens einer Funktionseinheit 140i, ..., 140p und/oder der primären Verbindungseinheit 150 zu verändern, wobei die Recheneinheit 100d dazu ausgebildet ist, wenigstens zeitweise eine solche Veränderung der Konfiguration der wenigstens einen Funktionseinheit und/oder der primären Verbindungseinheit zu unterbinden.
-
Bei einer weiteren bevorzugten Ausführungsform 100e der erfindungsgemäßen Recheneinheit, die nachstehend unter Bezugnahme auf 1F beschrieben ist, ist mindestens eine sekundäre Speichereinrichtung 160 vorgesehen. Die sekundäre Speichereinrichtung 160 ist vorzugsweise als Direktzugriffsspeicher (RAM), insbesondere als statischer Direktzugriffsspeicher (SRAM, static RAM) ausgebildet. Vorliegend ist beispielhaft eine sekundäre Speichereinrichtung 160 abgebildet; bei weiteren Ausführungsformen können jedoch auch mehrere sekundäre Speichereinrichtungen 160 vorgesehen sein. Für solche Ausführungsformen geltend die nachfolgend beschriebenen Aspekte, die beispielhaft an der einen in 1F abgebildeten sekundären Speichereinrichtung 160 erläutert sind, entsprechend.
-
Bei einer besonders vorteilhaften Ausführungsform weist die sekundäre Speichereinrichtung 160 mehrere Speicherbänke 162a, 162b, 162c, ..., 162n auf. Insbesondere kann die sekundäre Speichereinrichtung dazu ausgebildet sein, einen parallelen Datenzugriff auf wenigstens zwei der mehreren Speicherbänke 162a, 162b, 162c, ..., 162n zu ermöglichen. Dadurch wird vorteilhaft eine hohe Bandbreite für Zugriffe auf die sekundäre Speichereinrichtung 160 bzw. deren Bänke ermöglicht, und insbesondere können auch nicht zusammenhängende Datenblöcke parallel bzw. gleichzeitig in die sekundäre Speichereinrichtung 160 geschrieben bzw. von der sekundären Speichereinrichtung 160 gelesen werden.
-
Bei einer weiteren bevorzugten Ausführungsform können Daten der sekundären Speichereinrichtung 160 zur Steigerung der Betriebssicherheit auch mit Paritätsinformationen zur Erkennung von Fehlern angereichert und/oder mit fehlerkorrigierenden Kodes (ECC) versehen in der Speichereinrichtung 160 gespeichert sein. Bei Erkennung eines Fehlers kann dieser, sofern korrigierbar, korrigiert werden. Gegebenenfalls kann eine Fehlerreaktion, beispielsweise ein Interrupt IRQ (Unterbrechungsanforderung), ausgelöst werden. Diese kann gegebenenfalls eine Unterscheidung zwischen korrigierbaren und nicht korrigierbaren Fehler ermöglichen.
-
Bei einer weiteren Ausführungsform können Daten zur Steigerung der Betriebssicherheit auch redundant in der Speichereinrichtung 160 gespeichert sein. Beispielsweise können in einer ersten Speicherbank 162a dieselben Daten gespeichert sein wie in einer zweiten Speicherbank 162b. Optional kann wenigstens eine Funktionseinheit den Inhalt der betreffenden Speicherbänke miteinander vergleichen, um ein mögliches Auftreten von Fehlern bei der Speicherung von Daten zu erkennen und gegebenenfalls eine Fehlerreaktion, beispielsweise einen Interrupt IRQ , auszulösen.
-
In einer vorteilhaften Ausführungsform ist auch denkbar, dass eine Funktionseinheit 140h oder mehrere Funktionseinheiten (140, 140a... 140g) im Verbund, vorzugsweise zyklisch, Prüfsummen über zumindest manche Speicherbereiche der primären Speichereinrichtung 120 und/oder der sekundären Speichereinrichtung 160 bilden und auswerten, um Fehler im Bereich der Speichereinrichtung 120 und/oder 160 wie beispielsweise unerwünschte Zustandsänderungen erkennen zu können.
-
Vorliegend ist der sekundären Speichereinrichtung 160 ein Speicherbussystem 164 zugeordnet, welches einen Zugriff auf die Speicherbänke der sekundären Speichereinrichtung 160 ermöglicht, vgl. die Blockpfeile a11. Das Speicherbussystem 164 ist vorteilhafterweise über eine Buskopplungseinheit 165 mit dem Bussystem 155d gekoppelt, welches die vorstehend bereits beschriebene Datenverbindung zwischen dem Koppelnetz 152 bzw. den Funktionseinheiten 140i, 140k, ..., 140p und der Hauptverbindungseinheit 130 ermöglicht. Die Buskopplungseinheit 165 ermöglicht einen Datenaustausch zwischen dem Bussystem 155d und dem Speicherbussystem 164, vgl. den Pfeil a14. Dadurch wird insbesondere ermöglicht, dass Speicherbereiche der sekundären Speichereinrichtung 160 in einem globalen Adressraum der Recheneinheit 100e sichtbar werden und damit beispielsweise auch zugreifbar sind (Lesen und/oder Schreiben) für andere Peripheriekomponenten 125a, 125b der erfindungsgemäßen Recheneinheit 100. In einer besonders bevorzugten Ausführungsform kann ferner eine direkte Datenverbindung a12, a13 zwischen einzelnen Funktionseinheiten 140h, 140i und dem Speicherbussystem 164 bestehen, sodass die betreffenden Funktionseinheiten 140h, 140i direkt auf die sekundäre Speichereinrichtung 160 zugreifen können, insbesondere ohne das Koppelnetz der primären Verbindungseinheit 150 bzw. ggf. die Hauptverbindungseinheit 130 verwenden zu müssen. Bei einer weiteren Ausführungsform (nicht gezeigt) können mehrere parallele Speichereinrichtungen 160 mit den zuvor genannten Merkmalen vorhanden sein.
-
Bei manchen Ausführungsformen ist wenigstens eine Komponente 110a, 125a, 125b, 140h der Recheneinheit 100e dazu ausgebildet, eine Konfiguration wenigstens einer Funktionseinheit 140i, ..., 140p und/oder der primären Verbindungseinheit 150 zu verändern, wobei die Recheneinheit 100e dazu ausgebildet ist, wenigstens zeitweise eine solche Veränderung der Konfiguration der wenigstens einen Funktionseinheit und/oder der primären Verbindungseinheit zu unterbinden.
-
Nachfolgend werden Details betreffend einen Aufbau der erfindungsgemäßen Funktionseinheiten unter Bezugnahme auf 2A, 2B näher beschrieben. 2A zeigt hierzu schematisch ein vereinfachtes Blockdiagramm einer Funktionseinheit 1400 gemäß einer Ausführungsform der Erfindung. Die nachfolgend unter Bezugnahme auf 2A beschriebene Struktur der Funktionseinheit 1400 kann beispielsweise bei einer oder mehreren bzw. allen der vorstehend genannten und unter Bezugnahme auf die 1A bis 1F beschriebenen Funktionseinheiten 140,140a,..., 140p in der in 2A abgebildeten Weise oder wenigstens in ähnlicher Weise vorhanden sein. Es versteht sich, dass weiteren Ausführungen zufolge Abweichungen von der 2A beschriebenen Struktur ebenfalls möglich sind.
-
Die Funktionseinheit 1400 weist eine optionale, typischerweise aber vorhandene, Eingangsschnittstelle 1402 zum Empfang von ersten Daten auf, welche beispielsweise von einer weiteren Funktionseinheit (nicht gezeigt) an die Funktionseinheit 1400 gemäß 2A übertragen werden. Für die weitere Beschreibung der 2A wird beispielhaft davon ausgegangen, dass die Funktionseinheit 1400 über ihre Eingangsschnittstelle 1402 wenigstens eine Datenverbindung zu einer primären Verbindungseinheit 150 (vergleiche 1A) aufweist, wobei die primäre Verbindungseinheit 150 vorzugweise ein Koppelnetz 152a aufweist. Eine entsprechende Ausgangsschnittstelle des Koppelnetzes 152a, die mit der Eingangsschnittstelle 1402 der Funktionseinheit 1400 verbunden ist, ist in 2A durch das gestrichelt gezeichnete Rechteck 1502 symbolisiert. Erste Eingangsdaten, die der Eingangsschnittstelle 1402 der Funktionseinheit 1400 über die Ausgangsschnittstelle 1502 des Koppelnetzes 152 (1A) zuführbar sind, sind in 2A mit dem Blockpfeil a20 bezeichnet.
-
Bei einer weiteren vorteilhaften Ausführungsform kann vorgesehen sein, dass der Funktionseinheit 1400 mehrere Eingangsdaten, insbesondere gleichzeitig, zuführbar sind, was in 2A durch den gestrichelt gezeichneten Blockpfeil a21 sowie die Punkte zwischen dem Blockpfeilen a20, a21 angedeutet ist. Für den gleichzeitigen bzw. parallelen Empfang von Eingangsdaten können bei einer Ausführungsform z.B. entsprechend viele Eingangsschnittstellen 1402 vorgesehen sein (nicht gezeigt).
-
Bei einer Ausführungsform ist vorgesehen, dass die Eingangsschnittstelle 1402 zum Empfang von ersten Daten bzw. Eingangsdaten in Form von Datenpaketen ausgebildet ist. Die Datenpakete können beispielsweise ein Format haben, welches spezifisch ist für eine Kommunikation zwischen mehreren erfindungsgemäßen Funktionseinheiten 1400.
-
Bei einer weiteren Ausführungsform kann vorgesehen sein, dass die Eingangsschnittstelle 1402 nur geschriebene Daten empfangen kann, jedoch explizit keine Lesezugriffe von außen unterstützt bzw. diese alternativ unterbinden kann. Ebenso kann in einer weiteren Ausführungsform vorgesehen sein, dass die Funktionseinheit 1400 keinen Datentransfer, weder lesend noch schreibend über die Schnittstelle 1402 absetzen bzw. initiieren kann. Dazu kann die Schnittstelle 1402 technisch entsprechend eingeschränkt sein oder aber diese Zugriffmöglichkeit unterbunden werden, beispielsweise unter Steuerung durch einen Rechenkern 110a (1A) und/oder eine andere Komponente der Recheneinheit 100.
-
Bei weiteren Ausführungsformen (nicht gezeigt) kann auch vorgesehen sein, dass eine Funktionseinheit 1400 mehrere Eingangsschnittstellen 1402 des vorstehend beschriebenen Typs aufweist. Beispielhaft kann die Eingangsschnittstelle 1402 auch als funktionseinheitsspezifische Eingangsschnittstelle bezeichnet werden, weil sie speziell zur, vorzugsweise direkten, Datenkommunikation zwischen verschiedenen Funktionseinheiten untereinander vorgesehen ist. Unter einer direkten Datenkommunikation zwischen Funktionseinheiten wird hierbei eine Datenkommunikation verstanden, welche neben den beteiligten Funktionseinheiten allenfalls noch eine primäre Verbindungseinheit 150, beispielsweise mit dem Koppelnetz 152, aufweist, nicht jedoch beispielsweise die Hauptverbindungseinheit 130 der erfindungsgemäßen Recheneinheit 100 (1A).
-
Alternativ ist es bei weiteren Ausführungsformen (nicht gezeigt) auch denkbar, dass eine Funktionseinheit gar keine Eingangsschnittstelle 1402 des vorstehend beschriebenen Typs aufweist, also gar keine funktionseinheitsspezifische Eingangsschnittstelle. Eine derartig konfigurierte Funktionseinheit kann demnach keine Eingangsdaten von einer anderen Funktionseinheit über die vorstehend genannte Eingangsschnittstelle 1402 entgegennehmen. Beispielsweise kann eine derartige Funktionseinheit jedoch dazu ausgebildet sein, Daten aus einer anderen Quelle zu laden, beispielsweise aus der primären Speichereinrichtung 120 der Recheneinheit über die Verbindung a9 (1E) und/oder der sekundären Speichereinrichtung 160, vergleiche 1F. Das Laden solcher Daten aus einer anderen Quelle kann über eine entsprechend konfigurierte andersartige Schnittstelle erfolgen, beispielsweise über eine direkte Datenverbindung, z.B. zwischen der Funktionseinheit und der sekundären Speichereinrichtung 160, wie dies in 1F durch den Blockpfeil a12 symbolisiert ist. Eine derartige andersartige Schnittstelle ist in 2A auch angedeutet durch den gestrichelt gezeichneten Blockpfeil a24.
-
Bei einer bevorzugten Ausführungsform ist die Funktionseinheit 1400 dazu ausgebildet, über die Schnittstelle a24 eine vorgebbare Menge von Datenworten einzulesen bzw. an diese auszugeben, beispielsweise wenigstens ein Datenwort, oder aber z.B. N viele Datenwörter, mit N >= 1. Dies kann bevorzugt eigenständig erfolgen, also ohne dass eine (Re-)Konfiguration der Funktionseinheit oder eine Interaktion der Funktionseinheit mit anderen Komponenten erforderlich ist, bevor alle einzulesenden bzw. auszugebenden Datenworte gelesen bzw. geschrieben worden sind. Optional kann die Funktionseinheit auch dazu ausgebildet sein, Informationen, die die eingelesene bzw. ausgegebene Menge von Datenworten charakterisieren, an eine nachfolgende Funktionseinheit auszugeben.
-
Vorteilhafter Weise können Funktionseinheiten 1400 weiteren Ausführungsformen zufolge derart gestaltet sein, dass die durch die Funktionseinheit über die Eingangsschnittstelle 1402 empfangenen ersten Eingangsdaten über die Schnittstelle a24 unverändert oder in bearbeiteter Form ausgegeben werden, insb. an die sekundäre Speichereinrichtung 160 und / oder insb. Auch an eine der restlichen Komponenten der Recheneinheit 100, insb. an die primäre Speichereinrichtung 120 oder an weitere Peripheriekomponenten 125.
-
Zur Ausgabe von Ausgangsdaten weist die Funktionseinheit 1400 einer Ausführungsform zufolge eine optionale Ausgangsschnittstelle 1404 auf. Beispielsweise werden Ausgangsdaten durch die Funktionseinheit 1400 in Abhängigkeit von den über die Eingangsschnittstelle 1402 empfangenen ersten Daten gebildet und als zweite Daten über die Ausgangsschnittstelle 1404 ausgegeben, beispielsweise an eine oder mehrere andere Funktionseinheiten (nicht in 2A gezeigt). Eine Datenausgabe von der Funktionseinheit 1400 über ihre Ausgangsschnittstelle 1404 an sich selbst, z.B. über ihre Eingangsschnittstelle 1402, ist bei manchen Ausführungsformen ebenfalls denkbar. Die Ausgangsdaten sind in 2A durch den Blockpfeil a22 symbolisiert. Besonders vorteilhaft ist die Ausgangsschnittstelle 1404 ebenfalls an das Koppelnetz 152a (1A) angebunden, vergleiche die in 2A durch ein gestricheltes Rechteck symbolisierte Eingangsschnittstelle 1504 des Koppelnetzes 152a.
-
Bei weiteren Ausführungsformen (nicht gezeigt) kann auch vorgesehen sein, dass eine Funktionseinheit mehrere Ausgangsschnittstellen 1404 des vorstehend beschriebenen Typs aufweist. Beispielhaft kann die Ausgangsschnittstelle 1404 auch als funktionseinheitsspezifische Ausgangsschnittstelle bezeichnet werden, weil sie speziell zur, vorzugsweise direkten, Datenkommunikation zwischen verschiedenen Funktionseinheiten untereinander vorgesehen ist.
-
Bei einer weiteren vorteilhaften Ausführungsform kann vorgesehen sein, dass die Funktionseinheit 1400 mehrere Ausgangsdaten, insbesondere gleichzeitig, ausgeben kann, was in 2A durch den gestrichelt gezeichneten Blockpfeil a23 sowie die Punkte zwischen den Blockpfeilen a22, a23 angedeutet ist. Für die gleichzeitige bzw. parallele Ausgabe können wie zuvor beschrieben entsprechend viele Ausgangsschnittstellen 1404 vorgesehen sein.
-
Bei einer weiteren Ausführungsform kann vorgesehen sein, dass die Ausgangsschnittstelle 1404 nur Daten schreiben kann, nicht jedoch Lesezugriffe nach außen unterstützt bzw. diese alternativ unterbinden kann. Ebenso kann in einer Ausführungsform vorgesehen sein, dass die Funktionseinheit 1400 keine von außen initiierten Datentransfers, weder lesend noch schreibend über die Schnittstelle 1404 empfangen kann. Dazu kann die Schnittstelle 1404 technisch entsprechend eingeschränkt sein oder aber diese Zugriffmöglichkeit unterbunden werden.
-
Alternativ ist es bei weiteren Ausführungsformen (nicht gezeigt) auch denkbar, dass eine Funktionseinheit gar keine Ausgangsschnittstelle 1404 des vorstehend beschriebenen Typs aufweist, also gar keine funktionseinheitsspezifische Ausgangsschnittstelle. Eine derartig konfigurierte Funktionseinheit kann demnach keine Ausgangsdaten über die vorstehend genannte Ausgangsschnittstelle 1404 an andere Funktionseinheiten ausgeben. Beispielsweise kann eine derartige Funktionseinheit jedoch dazu ausgebildet sein, Daten an eine andere Einheit auszugeben, beispielsweise durch Schreiben in die primäre Speichereinrichtung 120 der Recheneinheit, z.B. über die Verbindung a9 (1E), und/oder die sekundäre Speichereinrichtung 160, z.B. über die Verbindung a12, vergleiche 1F. Das Schreiben solcher Daten kann über eine entsprechend konfigurierte andersartige Schnittstelle erfolgen, beispielsweise über eine direkte Datenverbindung zwischen der Funktionseinheit und der sekundären Speichereinrichtung 160, wie dies in 1F durch den Blockpfeil a12 symbolisiert ist. Eine derartige andersartige Schnittstelle ist in 2A auch angedeutet durch den bereits vorstehend erwähnten gestrichelt gezeichneten Blockpfeil a24.
-
Beispielsweise ist es auch denkbar, eine Funktionseinheit 1400, die z.B. zur Erkennung von Fehlern bei der Verarbeitung und/oder Speicherung und/oder Übertragung von Daten vorgesehen ist, ohne die Ausgangsschnittstelle 1404 vorzusehen. Eine solche Funktionseinheit kann beispielsweise über ein Ausgangssignal beispielsweise eine Unterbrechungsanforderung absetzen, zum Beispiel um einen erkannten Fehler an andere Komponenten der Recheneinheit 100 wie beispielsweise einen Rechenkern 110a und/oder weitere Peripheriekomponenten 125 zu signalisieren. Die Unterbrechungsanforderung IRQ kann beispielsweise durch eine lokale Steuereinrichtung 1410 der Funktionseinheit 1400 erzeugt und ausgegeben werden, die beispielsweise auch zur Fehlererkennung nutzbar ist.
-
In einer weiteren Ausführungsform kann eine Funktionseinheit 1400, die zur Erkennung von Fehlern bei der Verarbeitung und/oder Speicherung und/oder Übertragung von Daten vorgesehen ist, auch mit mindestens einer Ausgangsschnittstelle 1404 vorgesehen sein. Beispielsweise können die gegebenenfalls korrigierten Daten, Statusinformationen, insb. Fehlerinformationen, Konfigurationsdaten und/oder weitere Daten an wenigstens eine nachfolgende Funktionseinheit ausgegeben werden. Vorteilhafterweise kann dann die wenigstens eine nachfolgende Funktionseinheit über ein Ausgangssignal beispielsweise eine Unterbrechungsanforderung IRQ absetzen, zum Beispiel um einen von vorstehender Funktionseinheit erkannten Fehler an andere Komponenten der Recheneinheit 100 wie beispielsweise einen Rechenkern 110a und/oder weitere Peripheriekomponenten 125 zu signalisieren.
-
Vorteilhafterweise können Funktionseinheiten 1400 bei weiteren Ausführungsformen derart gestaltet sein, dass die durch die Funktionseinheit über die Schnittstelle a24 empfangenen Daten über die Ausgangsschnittstelle 1404 unverändert oder in bearbeiteter Form an eine oder mehrere nachfolgende Funktionseinheiten 1400 ausgegeben werden, wobei mittels der Schnittstelle a24 insbesondere Daten von der sekundären Speichereinrichtung 160 und/oder insb. auch von den restlichen Komponenten der Recheneinheit 100, insb. der primären Speichereinrichtung 120 oder von weiteren Peripheriekomponenten 125, eingelesen werden.
-
Die Funktionseinheit 1400 weist ferner eine lokale Steuereinrichtung 1410 auf, die zur Steuerung eines Betriebs der Funktionseinheit 1400 ausgebildet ist. Beispielsweise kann die lokale Steuereinrichtung 1410 wenigstens einen Zustandsautomaten (englisch: state machine) 1410a umfassen. Bei alternativen Ausführungsformen kann die lokale Steuereinrichtung 1410 auch sonstige, vorzugsweise fest verdrahtete, Hardwareschaltungen umfassen.
-
Bei einer besonders bevorzugten weiteren Ausführungsform kann der lokalen Steuereinrichtung 1410 auch eine lokale Rekonfigurationseinrichtung 1412 zugeordnet sein, welche eine Konfiguration bzw. Rekonfiguration der Funktionseinheit 1400, insbesondere auch dynamisch, also während des Betriebs der Funktionseinheit 1400, ermöglicht. Bei einer weiteren Ausführungsform ist es auch denkbar, die Funktionalität der lokalen Rekonfigurationseinrichtung 1412 durch einen entsprechenden Teil des Zustandsautomaten 1410a bzw. der lokalen Steuereinrichtung 1410 abzubilden. Bei einer weiteren Ausführungsform ist die Rekonfigurationseinrichtung 1412 dazu ausgebildet, während einer Konfiguration bzw. Rekonfiguration die möglichen Konfigurationsvarianten der betreffenden Funktionseinheit 1400 zu berücksichtigen, und/oder sicherzustellen, dass eine Konfiguration von einem definierten, gültigen Startpunkt bzw. Startzustand ausgeht, und/oder dass eine Rekonfiguration momentan ablaufende Berechnungen bzw. sonstige Funktionen der Funktionseinheit 1400 nicht beeinträchtigt bzw. unbeabsichtigt unterbricht.
-
Bei einer weiteren vorteilhaften Ausführungsform weist die Funktionseinheit eine lokale Berechnungseinheit 1420 auf. Einer weiteren vorteilhaften Ausführungsform zufolge kann die lokale Berechnungseinheit 1420 wenigstens ein grobgranulares Hardwareelement aufweisen oder als grobgranulares Hardwareelement ausgebildet sein. In diesem Fall kann die lokale Rekonfigurationseinrichtung 1412 vorteilhaft z.B. eine (Re-)Konfiguration der grobgranularen Hardwareelemente steuern. Vorteilhaft ist bei manchen Ausführungsformen auch die lokale Berechnungseinheit 1420 zur Erkennung von Fehlern bei der Verarbeitung und/oder Speicherung und/oder Übertragung von Daten durch wenigstens eine Komponente der Recheneinheit nutzbar. Hierzu kann die lokale Berechnungseinheit 1420 beispielsweise einen Vergleicher (nicht gezeigt) aufweisen, der z.B. redundant (durch andere und/oder die eigene Funktionseinheit) berechnete Ausgangsdaten im Sinne einer Fehlererkennung vergleicht.
-
Bei einer weiteren bevorzugten Ausführungsform weist wenigstens eine der Funktionseinheiten einer Recheneinheit 100 wenigstens ein grobgranulares Hardwareelement auf. Alternativ oder ergänzend kann wenigstens eine der Funktionseinheiten als grobgranulares Hardwareelement ausgebildet sein. Im Allgemeinen wird unter Granularität verstanden, bis zu welchem Grad ein System aus voneinander unterscheidbaren einzelnen Einheiten zusammengesetzt ist. Ein grobgranulares System ist aus vergleichsweise wenigen, vergleichsweise großen grobgranularen Elementen zusammengesetzt, wohingegen ein feingranulares System aus vergleichsweise vielen, vergleichsweise kleinen feingranularen Elementen zusammengesetzt ist. Im Speziellen kann Granularität im Bereich von Rechner-Architekturen durch die Anzahl logischer Gatter und damit einhergehend insbesondere durch ein Verhältnis zwischen Rechenoperationen bzw. Abarbeitungszeiten und Kommunikation bzw. Datenaustausch beschrieben werden. In feingranularen Hardwareelementen (jeweils ein logisches Gatter) können einfache logische Operationen schnell in vergleichsweise kurzer Abarbeitungszeit ausführt werden, jedoch werden zwischen einzelnen Elementen häufig Daten ausgetauscht. Im Gegensatz dazu werden in grobgranularen Hardwareelementen (jeweils mehrere logische Gatter) insbesondere jeweils komplexe Operationen mit vergleichsweise langen Abarbeitungszeiten ausgeführt und es werden seltener Daten zwischen einzelnen Elementen ausgetauscht.
-
Unter grobgranularen Hardwareelementen sind somit insbesondere Elemente zu verstehen, welche jeweils selbsttätig komplexe Rechenoperationen ausführen können, insbesondere ohne dafür häufig untereinander Daten auszutauschen. Beispielsweise sind die einzelnen grobgranularen Hardwareelemente jeweils als eines der folgenden Elemente ausgebildet: höherkomplexe Elemente wie arithmetisch-logische Einheit (ALU), Speicherzugriffseinheit, Kommunikationsschnittstelle und/oder weniger komplexe Einheiten wie Komparator, Addierer, Multiplizierer, Dividierer, Schieberegister, Barrel-Shifter, Multiplikationsaddierer („Multiply-Accumulate“, (MAC)), Register bzw. Registerblock, Speichereinheit (z.B. RAM, Flash usw.), Multiplexer (z.B. 2:1-MUX, M:N-MUX), Demultiplexer, Vergleicher (zum Beispiel für redundant berechnete Ausgangsdaten A1, A2), Prüfsummen-Berechnungseinheiten, Fehlerkorrektureinheiten (die beispielsweise fehlerkorrigierende Kodes anwenden können).
-
Beispielsweise weisen herkömmliche hardwarekonfigurierbare Logikschaltungen wie z.B. FPGAs oder CPLDs zumeist nur feingranulare Hardwareelementente auf, deren Konfiguration nur durch externe Vorgaben verändert werden kann. Derartige herkömmliche hardwarekonfigurierbare Logikschaltungen sind somit als (integrierte) Schaltkreise anzusehen, welche auf Hardwareebene in einer speziellen Programmierphase programmiert werden können. Dies gilt auch für FPGAs mit der Möglichkeit zur teilweisen (partiellen) Re-Konfiguration. Hier wird eine entsprechende Anzahl funktionsbestimmender Re-Konfigurationsmöglichkeiten vorgehalten, die nach externen Vorgaben verändert werden, wobei die betreffenden FPGA-Teile mittels einer partiellen Re-Konfigurationen in einer jeweils speziellen Re-Programmierphase entsprechend neu programmiert und verschaltet werden. Die umkonfigurierten FPGA-Teile ändern dabei die Logikfunktion selbst.
-
Im Gegensatz dazu stellt die erfindungsgemäße Funktionseinheit 1400 eine Berechnungseinheit bzw. eine Komponente einer Berechnungseinheit dar, deren Elemente, z.B. grobgranulare Hardwareelemente, intern durch die Funktionseinheit 1400 selbst bzw. ihre lokale Steuereinrichtung 1410 in der Funktion konfiguriert und z.B. neu miteinander verschaltet werden können, beispielsweise unter Verwendung und entsprechender Einstellung von Multiplexern. Ebenso kann vorgesehen sein, dass eine weitere Komponente der Recheneinheit 100 (1A), beispielsweise ein Rechenkern 110a, die Funktionseinheit 1400 bzw. ihre Komponenten konfiguriert.
-
Bei einer besonders bevorzugten Ausführungsform ist insbesondere eine für eine Fehlererkennung vorgesehene Funktionseinheit vollständig als Hardwareschaltung ausgebildet. Das umfasst z.B. sowohl die Möglichkeit zum Vergleich empfangener, redundant berechneter, Daten, sowie die Möglichkeit zur Erkennung und/oder Korrektur von Fehlern in der Datenübertragung. Vorzugsweise erfolgt der Vergleich empfangener, redundant berechneter, Daten in der lokalen Berechnungseinheit 1420 (2A) sowie eine daraus ggf. resultierende Fehlerbehandlung in der Steuereinrichtung 1410.
-
Vorzugsweise erfolgt eine Erkennung und/oder Korrektur von Fehlern in der Datenübertragung in der Eingangsschnittstelle 1402, beispielsweise unter Verwendung der empfangenen Paritärsinformationen und/oder fehlerkorrigierenden Kodes. Bei der Übertragung von Daten können diese Daten vorzugsweise durch die Ausgangsschnittstelle 1404 mit Paritätsinformationen und/oder fehlerkorrigierenden Kodes angereichert werden, um nachfolgenden Funktionseinheiten oder anderen Komponenten eine Fehlererkennung und/oder Fehlerkorrektur zu ermöglichen.
-
Ein weiterer Aspekt der erfindungsgemäßen Konfigurierbarkeit ist durch die Beeinflussung der Kommunikation und des Datenflusses zwischen verschiedenen Funktionseinheiten 140, 140a, 140b (1A) gegeben, was beispielsweise durch entsprechende Konfiguration der jeweiligen Funktionseinheiten gesteuert werden kann, und/oder durch eine Steuerung des Betriebs der die jeweiligen Funktionseinheiten verbindenden primären Verbindungseinheit(en) 150, vgl. 1A.
-
Hierzu kann wie vorstehend bereits mehrfach beschrieben wenigstens eine Komponente 110a, 125, 140 der Recheneinheit 100 dazu ausgebildet sein, eine Konfiguration wenigstens einer Funktionseinheit und/oder der primären Verbindungseinheit 150 zu verändern, wobei die Recheneinheit 100 dazu ausgebildet ist, wenigstens zeitweise eine Veränderung der Konfiguration der wenigstens einen Funktionseinheit und/oder der primären Verbindungseinheit 150 zu unterbinden.
-
Bei einer Ausführungsform ist die interne Funktion, z.B. Logikfunktion, einzelner grobgranularer Hardwareelementente bzw. sonstiger Elemente der Funktionseinheit 1400 jeweils fest verdrahtet und ändert sich somit im Gegensatz zu herkömmlichen hardwarekonfigurierbaren Logikschaltungen nicht. Hierbei kann wie vorstehend beschrieben eine Beeinflussung der Kommunikation und des Datenflusses zwischen verschiedenen Funktionseinheiten erfolgen, um eine Rekonfiguration zu erreichen.
-
Vorteilhaft kann eine Neu- bzw. Rekonfiguration der erfindungsgemäßen Recheneinheit bzw. wenigstens einer ihrer Funktionseinheiten 1400 bei manchen Ausführungsformen von der Recheneinheit 100 bzw. der in der betreffenden Funktionseinheit 1400 integrierten Steuereinrichtung 1410 selbst, also von innen heraus, gesteuert, durchgeführt und ggf. überwacht werden. Die Funktionseinheit 1400 kann sich somit unabhängig und automatisch selbst umkonfigurieren.
-
Besonders bevorzugt kann eine (Re-)Konfiguration im Betrieb der Recheneinheit 100 bzw. der Funktionseinheit 1400 erfolgen, z.B. als Bestandteil eines Gesamtalgorithmus, der durch eine oder mehrere der Funktionseinheiten 1400, 140, 140a, ... auszuwerten ist. Vorteilhafterweise kann vorgesehen sein, dass Funktionseinheiten 1400, beispielsweise 140a und 140b, andere Funktionseinheiten 1400, beispielsweise 140c und 140d, bzw. deren Komponenten konfigurieren, um z.B. solch einen übergreifenden Gesamtalgorithmus zu realisieren.
-
Bei einer bevorzugten Ausführungsform ist vorgesehen, dass sich die Funktionseinheit 1400 insbesondere dann selbst umkonfiguriert, wenn ein vorgebbarer Rechenabschnitt bzw. eine vorgebbare Berechnungsaufgabe ausgeführt bzw. beendet worden ist und somit die entsprechenden Ressourcen der Funktionseinheit für diese Berechnungsaufgabe nicht weiter benötigt werden. In diesem Fall kann die Funktionseinheit 1400 vorteilhaft selbst ihre Konfiguration z.B. so ändern, dass sie für einen nachfolgenden Rechenabschnitt bzw. eine nachfolgende Berechnungsaufgabe geeignet konfiguriert ist.
-
Bei einer weiteren vorteilhaften Ausführungsform kann die lokale Berechnungseinheit 1420 wenigstens eine der Komponenten aufweisen: Addierer, Multiplizierer, Dividierer, Schieberegister, Barrel-Shifter, Komparator, Multiplikationsakkumulator (MAC), arithmetisch-logische Einheit (ALU), Speichereinheit, Register, Multiplexer, Demultiplexer, Schnittstelle, insbesondere Kommunikationsschnittstelle, Speicherzugriffseinheit (z.B. DMA Einheit), Einheit zur Berechnung von Exponentialfunktionen, Einheit zur Berechnung von logarithmischen Funktionen, Einheit zur Berechnung von Exponentialfunktionen, Einheit zur Berechnung von Wurzelfunktionen, Einheit zur Berechnung von trigonometrischen Funktionen, Lookup-Tabelle(n), Vergleicher (zum Beispiel für redundant berechnete Ausgangsdaten A1,A2), Prüfsummen-Berechnungseinheiten, fehlerkorrigierende Kodes erzeugende Einheiten, Fehlererkennungseinheiten, Fehlerkorrektureinheiten (die beispielsweise fehlerkorrigierende Kodes anwenden können). Kombinationen hieraus sind bei weiteren Ausführungsformen ebenfalls denkbar. Bevorzugt können eine oder mehrere der vorstehend genannten Komponenten in der Berechnungseinheit 1420 der erfindungsgemäßen Funktionseinheit 1400 angeordnet sein.
-
Die Berechnungseinheit 1420 kann dementsprechend Berechnungen auf den der Funktionseinheit 1400 zugeführten Eingangsdaten, z.B. einen Vergleich, ausführen und hieraus erhaltene Ergebnisse beispielsweise als Ausgangsdaten wieder ausgeben. Ein Datenfluss für diesen Vorgang erfolgt dabei bevorzugt über die Eingangsschnittstelle 1402 (Empfang von Eingangsdaten), die Berechnungseinheit 1420 (Ausführung der Berechnungen), die Ausgangsschnittstelle 1404 (Ausgabe von Ausgangsdaten). Dieser Datenfluss ist charakteristisch für die Berechnung bzw. Verarbeitung von Daten innerhalb einer Funktionseinheit 1400. Verfügt eine Funktionseinheit 1400 bei weiteren Ausführungsformen beispielsweise auch über die Fähigkeit zur Erkennung von Fehlern bei der Verarbeitung und/oder Speicherung und/oder Übertragung von Daten, können zusätzliche Ausgangssignale, insbesondere ein Fehlersignal und/oder ein Interruptsignal, ausgegeben werden.
-
Außerhalb der Funktionseinheit 1400 kann der Datenfluss einer bevorzugten Ausführungsform zufolge beeinflusst werden durch die Vorgabe, an welche (weitere) Funktionseinheit Ausgangsdaten einer ersten Funktionseinheit weiterzuleiten sind, was durch eine entsprechende Steuerung der primären Verbindungseinheit 150 bewerkstelligbar ist. Steuerdaten hierfür können beispielsweise in dem Konfigurationsspeicher 151 (1A) der primären Verbindungseinheit 150 hinterlegt sein bzw. durch Komponenten der Recheneinheit 100, z.B. den Rechenkern 110a (1A) verändert werden.
-
Vorteilhafterweise kann die Steuerung der primären Verbindungseinheit 150 einmalig und somit für einen bestimmten Zeitraum dauerhaft eingestellt werden. Ebenso kann es vorteilhaft sein, die Steuerung der primären Verbindungseinheit 150 von Steuerdaten abhängig zu machen, die mit einzelnen oder auch mit jedem Paket mitversandt werden, insb. durch die Angabe einer Ziel-Funktionseinheit 1400.
-
Sofern komplexere Berechnungen auszuführen sind, können bei weiteren Ausführungsformen mehrere Funktionseinheiten, beispielsweise des in 2A abgebildeten Typs, vorgesehen werden, welche gleichartig oder ungleichartig konfigurierte Berechnungseinheiten 1420 aufweisen. Ein Datenfluss von Daten zwischen den verschiedenen Funktionseinheiten kann hierbei vorteilhaft durch einen Algorithmus bzw. die Struktur der auszuführenden komplexeren Berechnungen definiert sein. Besonders vorteilhaft weist eine Recheneinheit mehrere Funktionseinheiten zur Ausführung von Berechnungsaufgaben auf, und optional wenigstens eine Funktionseinheit zur Erkennung von Fehlern bei der Verarbeitung und/oder Speicherung und/oder Übertragung von Daten.
-
Bei einer weiteren vorteilhaften Ausführungsform ist vorgesehen, dass die Funktionseinheit 1400 einen lokalen Konfigurationsspeicher 1430 aufweist. Besonders bevorzugt kann der lokale Konfigurationsspeicher 1430 einen Registerspeicher umfassen, wobei insbesondere der lokale Konfigurationsspeicher 1430 mindestens ein, in vorteilhafter Weise jedoch eine Mehrzahl von Konfigurationsregistern 1432a, 1432b, 1432c, 1432d umfasst. In einer weiteren Ausführungsform kann der lokale Konfigurationsspeicher auch durch ein SRAM oder durch eine Kombination von Registerspeicher und SRAM repräsentiert werden. Im Folgenden wird die einen SRAM umfassende Ausführungsform als Registerspeicher zusammengefasst. Durch den lokalen Konfigurationsspeicher 1430 ist eine effiziente Konfiguration und Rekonfiguration, auch während des Betriebs der Funktionseinheit 1400, möglich, z.B. indem ein oder mehrere Konfigurationsregister 1432a, 1432b, 1432c, 1432d in der gewünschten Weise modifiziert werden. Das Modifizieren der Konfigurationsregister 1432a, 1432b, 1432c, 1432d kann beispielsweise durch die Funktionseinheit 1400 selbst und/oder durch eine andere Funktionseinheit (nicht gezeigt) erfolgen. Ferner ist es denkbar, dass bei weiteren Ausführungsformen ein Modifizieren der Konfigurationsregister einer Funktionseinheit 1400 durch weitere Komponenten der Recheneinheit 100 ( 1A), beispielsweise durch einen Rechenkern 110a, möglich ist, indem die betreffende Komponente 110a entsprechende Daten in das bzw. die Konfigurationsregister der Funktionseinheit 1400 schreibt. Durch den Inhalt der Konfigurationsregister ist manchen Ausführungsformen zufolge beispielsweise auch die Art und Weise der Erkennung von Fehlern bzw. der Datenvergleich beeinflussbar, oder auch die Bildung bzw. Auswertung von Prüfsummen bzw. von fehlererkennenden bzw. fehlerkorrigierenden Kodes.
-
Bei bevorzugten Ausführungsformen kann die Recheneinheit 100 auch das Modifizieren der Konfigurationsregister einer Funktionseinheit 1400 durch weitere Komponenten der Recheneinheit 100 zumindest zeitweise unterbinden.
-
Bei einer weiteren vorteilhaften Ausführungsform ist vorgesehen, dass die Funktionseinheit 1400 einen lokalen Funktionsspeicher 1440 aufweist. Besonders bevorzugt kann der lokale Funktionsspeicher 1440 einen Registerspeicher umfassen bzw. einen Teil eines Registerspeichers darstellen. Insbesondere kann der lokale Funktionsspeicher 1440 wenigstens ein Funktionsregister 1442a umfassen. Der lokale Funktionsspeicher 1440 kann vorteilhaft zur zumindest zeitweisen Speicherung von Eingangsdaten und/oder Ausgangsdaten der Funktionseinheit 1400 bzw. von Zwischenergebnissen von Berechnungen der Funktionseinheit 1400, wie sie von der Berechnungseinheit 1420 ausgeführt werden, verwendet werden. Bei einer weiteren vorteilhaften Ausführungsform ist es auch denkbar, die Funktionseinheit 1400 mit einer Vielzahl von Registerspeichern auszustatten, wobei eine erste Anzahl der Registerspeicher als Konfigurationsregister 1432a, 1432b, 1432c, 1432d verwendbar ist, und wobei eine zweite Anzahl der Registerspeicher als Funktionsregister 1442a verwendbar ist.
-
Ferner ist es denkbar, dass bei weiteren Ausführungsformen ein Modifizieren der Funktionsregister einer Funktionseinheit 1400 durch weitere Komponenten der Recheneinheit 100 (1A), beispielsweise durch einen Rechenkern 110a, möglich ist, indem die betreffende Komponente 110a entsprechende Daten in das bzw. die Funktionsregister der Funktionseinheit 1400 schreibt. Bei bevorzugten Ausführungsformen kann die Recheneinheit 100 auch das Modifizieren der Funktionsregister einer Funktionseinheit 1400 durch weitere Komponenten der Recheneinheit 100 zumindest zeitweise unterbinden. Bei einer bevorzugten Ausführungsform ist für den Datenaustausch zwischen verschiedenen Funktionseinheiten 1400 eine bestimmte Datenstruktur, beispielsweise in Form eines Datenpakets, vorgesehen. 2B zeigt schematisch eine vereinfachte Darstellung einer Datenstruktur DS für derartige Datenpakete gemäß einer Ausführungsform. Die Datenstruktur DS weist ein Adressfeld ADR auf. Das Adressfeld ADR ist unterteilt in eine erste Adresse ADR1, die eine bestimmte Funktionseinheit spezifiziert, für welche das die Datenstruktur DS aufweisende Datenpaket bestimmt ist. Eine optionale zweite Adresse ADR2 definiert eine Zieladresse innerhalb der durch die erste Adresse ADR1 bestimmten Funktionseinheit, wodurch vorteilhaft Einfluss darauf genommen werden kann, in welchem lokalen Speicherbereich der Ziel-Funktionseinheit in dem Datenpaket enthaltene Daten abgespeichert werden. Beispielsweise kann die zweite Adresse ADR2 dafür verwendet werden, bestimmte Speicherregister der Ziel-Funktionseinheit zu adressieren.
-
Bei Ausführungen der erfindungsgemäßen Recheneinheit, welche beispielsweise einige zehn Funktionseinheiten 1400 aufweisen, werden üblicherweise wenige Bits, beispielsweise etwa die Bits 10 bis 5 (also z.B. sechs Bits) ausreichen, um die erste Adresse ADR1 zu definieren. Vergleichbares gilt für die „interne Adressierung“ mittels der zweiten Adresse ADR2 bezüglich der in den Funktionseinheiten 1400 zur Verfügung stehenden Speicherregister, die bei einer Ausführungsform beispielsweise durch die Bits 4 bis 0 selektiert werden.
-
Weiter optional kann die Datenstruktur DS ein Datenfeld DAT aufweisen, welches Eingangsdaten, beispielsweise zur Berechnung durch die Ziel-Funktionseinheit, aufweist und/oder Konfigurationsdaten, welche beispielsweise zur Steuerung einer Konfiguration der Ziel-Funktionseinheit vorgesehen sind.
-
Bei weiteren Ausführungsformen ist es ebenfalls möglich, dass Datenpakete zwischen Funktionseinheiten ausgetauscht werden, welche ein leeres Datenfeld DAT, also weder Eingangsdaten für eine Berechnung noch Konfigurationsdaten für die Ziel-Funktionseinheit enthalten. Dies kann beispielsweise für eine Synchronisierung unterschiedlicher Funktionseinheiten von Bedeutung sein.
-
Optional können in der Datenstruktur DS auch noch Steuerdaten enthalten sein, welche in dem mit dem Bezugszeichen CTRL bezeichneten Datenfeld angeordnet sein können. Hierbei kann es sich beispielsweise um zusätzliche Steuerdaten (also zusätzlich zu den Konfigurationsdaten, die gegebenenfalls in dem Datenfeld DAT enthalten sind) handeln, beispielsweise Statusinformationen, Sicherheitsinformationen, Informationen betreffend eine Schleifentiefe bzw. Rekursionstiefe bei einer verschachtelten Ausführung von Schleifen bzw. rekursiven Berechnungen. Alternativ oder ergänzend können die Steuerdaten CTRL auch Paritätsinformationen und/oder Prüfsummen und dergleichen enthalten. Kombinationen aus den vorstehend genannten Informationen für die Steuerdaten sind ebenfalls denkbar.
-
Bei einer weiteren bevorzugten Ausführungsform ist wenigstens eine der Funktionseinheiten, wie vorstehend bereits angedeutet, als Hardwareschaltung, insbesondere vollständig als Hardwareschaltung, ausgebildet. Dadurch können vorteilhaft Berechnungen, Logikoperationen, Speicheroperationen und sonstige von der betreffenden Funktionseinheit bereitgestellte Funktionen wie beispielsweise die Realisierung von Look-up-Tabellen, Kennlinien und/oder Kennfeldern, Vergleiche (insbesondere von redundant berechneten Ausgangsdaten), die Bildung und/oder Auswertung von Paritätsinformationen und/oder fehlererkennenden bzw. fehlerkorrigierenden Kodes besonders schnell und effizient ausgeführt werden.
-
Bei einer weiteren vorteilhaften Ausführungsform ist vorgesehen, dass wenigstens eine der Funktionseinheiten 140, 140a, ..., 140p wenigstens eines der folgenden Elemente aufweist: einen Mikrocontroller, einen Software ausführenden Rechenkern (z.B. einen Rechenkern, der dazu ausgebildet ist, Software auszuführen), einen digitalen Signalprozessor (DSP), eine programmierbare Logikschaltung (beispielsweise einen FPGA, field programmable gate array), einen anwendungsspezifischen integrierten Schaltkreis (ASIC, application specific integrated circuit), insbesondere einen durch ein Gatter- und/oder Transistor-Array vorgefertigten aber noch nicht anwendungsspezifisch verdrahteten integrierten Schaltkreis, der z.B. erst in einem späteren Fertigungsschritt anwendungsspezifisch verdrahtet wird, und der z.B. als „Sea-of-Gates“ bezeichnet werden kann. Bei einer besonders bevorzugten Ausführungsform ist vorgesehen, dass alle Funktionseinheiten als Hardwareschaltung, insbesondere vollständig als Hardwareschaltung, ausgebildet sind. Dadurch ergibt sich eine besonders effiziente, leistungsfähige und klein bauende Anordnung. Bei anderen Ausführungsformen ist es möglich, dass ein oder mehrere Funktionseinheiten als Hardwareschaltung, insbesondere vollständig als Hardwareschaltung, ausgebildet sind, und dass wenigstens eine nicht vollständig als Hardwareschaltung ausgebildete Komponente bzw. eine sonstige Komponente in Form mindestens einer weiteren Funktionseinheit vorgesehen ist. Beispielsweise kann bei einer besonders bevorzugten Ausführungsform eine erste Anzahl Funktionseinheiten vorgesehen sein, die vollständig als Hardwareschaltung ausgebildet sind, und eine weitere Funktionseinheit kann beispielsweise einen Mikrocontroller oder einen programmierbaren Logikbaustein bzw. eine programmierbare Logikschaltung bzw. eine vergleichsweise einfach änderbare Logikschaltung aufweisen.
-
Bei besonders bevorzugten Ausführungsformen wird durch mehrere miteinander verbundene Komponenten wie z.B. Addierer, Multiplizierer, Dividierer, Schieberegister, Barrel-Shifter, Komparator, Multiplikationsakkumulator, arithmetisch-logische Einheit, Exponentialeinheit, Logarithmuseinheit, trigonometrische Einheit, Speichereinheit, Speicherzugriffseinheit, Register, Multiplexer, Schnittstelle, insbesondere Kommunikationsschnittstelle bzw. generell grobgranulare Hardwareelemente, die die Funktionseinheit(en) oder Bestandteile hiervon bilden können, eine vergleichsweise komplexe Berechnungseinrichtung bereitgestellt, wobei erfindungsgemäß vorteilhaft wenigstens eine erste Funktionseinheit dazu ausgebildet ist, erste Daten von wenigstens einer weiteren Funktionseinheit zu empfangen und/oder zweite Daten an wenigstens eine weitere Funktionseinheit zu senden, wie dies bereits vorstehend beschrieben worden ist. Dadurch kann ein Datenfluss definiert werden, der unter anderem auch die Ausführung von vergleichsweise komplexen Berechnungen ermöglicht, welche beispielsweise eine Vielzahl der vorstehend genannten Komponenten bzw. grobgranularen Hardwareelemente, oder generell Berechnungseinheiten, die über mehrere Funktionseinheiten verteilt sein können, nutzen, beispielsweise in einer vorgebbaren Reihenfolge gemäß einem auszuwertenden Algorithmus oder einer sonstigen Rechenregel. Die vorgebbare Reihenfolge kann beispielsweise durch den Datenfluss zwischen den verschiedenen Funktionseinheiten gesteuert werden. Dies kann wie vorstehend bereits beschrieben beispielsweise durch die Festlegung entsprechender Zieladressen ADR1 innerhalb einzelner Datenpakete erfolgen, vgl. 2B.
-
Einem weiteren Aspekt der vorliegenden Erfindung zufolge kann dieser Datenfluss besonders vorteilhaft auch dynamisch, das bedeutet während einer Laufzeit der erfindungsgemäßen Recheneinheit, beeinflusst bzw. verändert, also umkonfiguriert, werden. Bei einer bevorzugten Ausführungsform kann dies beispielsweise durch eine entsprechende Steuerung der primären Verbindungseinheit 150 bewerkstelligt werden, z.B. durch die Modifikation von Daten in einem entsprechenden Konfigurationsspeicher 151 (1A). In einer Ausführung erfolgt die Steuerung der primären Verbindungseinheit 150 vorteilhafterweise durch die Rechenkerne 110a, 110b, 110c und/oder durch eine weitere Peripheriekomponente 120 (insbesondere durch eine DMA-Steuereinrichtung). In einer weiteren Ausführung erfolgt die Steuerung der primären Verbindungseinheit 150 alternativ oder ergänzend vorteilhafterweise durch eine Funktionseinheit 140. Eine vergleichbare Steuerung ist bei weiteren Ausführungsformen auch für die sekundäre Verbindungseinheit 155a (1C) vorstellbar.
-
Nachstehend sind beispielhaft Aspekte eines Daten-bzw. Informationsflusses innerhalb der Funktionseinheit 1400 gemäß 2A beschrieben. Wie vorstehend bereits erwähnt kann die Funktionseinheit 1400 beispielsweise ein oder mehrere Datenpakete der in 2B näher bezeichneten Struktur DS über ihre Eingangsschnittstelle 1402 empfangen. Darin enthaltene Eingangsdaten, bei denen es sich vorliegend um Konfigurationsdaten handeln kann, werden von der Eingangsschnittstelle 1402, bevorzugt unter Steuerung einer Adresserkennungseinheit 1452 und in Abhängigkeit von Adressinformationen a26 des Datenpakets, an ein bestimmtes Konfigurationsregister 1432b weitergeleitet, wie dies in 2A durch den Pfeil a25 angedeutet ist.
-
Die Adresserkennungseinheit 1452 kann bei einer bevorzugten Ausführungsform beispielsweise eine Demultiplexer-Struktur aufweisen, welche direkt durch die in einem Datenpaket enthaltenen Adressinformationen ADR2 gesteuert wird. Ferner kann die Funktionseinheit 1400 über eine Prüfeinheit 1453 verfügen, mittels der überprüft werden kann, ob gültige Eingangsdaten in der Funktionseinheit 1400 vorliegen. Diese Information kann von der Prüfeinheit 1453 beispielsweise zu der lokalen Steuereinrichtung 1410 der Funktionseinheit 1400 übertragen werden, vgl. den Pfeil a30 aus 2A, welche den Betrieb der Funktionseinheit 1400 und beispielsweise der Berechnungseinheit 1420 in Abhängigkeit von dieser Information steuert.
-
Eine Datenverbindung zwischen der lokalen Steuereinrichtung 1410 und dem Konfigurationsspeicher 1430 bzw. dem Funktionsspeicher 1440 ist vorliegend durch den Pfeil a31 angedeutet. Eine Datenverbindung zwischen der Berechnungseinheit 1420 und dem Konfigurationsspeicher 1430 bzw. dem Funktionsspeicher 1440 ist vorliegend durch den Pfeil a32 angedeutet. Besonders vorteilhaft kann bei manchen Ausführungsformen auch eine direkte Datenverbindung zwischen der Steuereinrichtung 1410 und der Berechnungseinheit 1420 bestehen, vergleiche Pfeil a33.
-
Bei einer weiteren bevorzugten Ausführungsform ist eine Multiplexerstruktur 1454 vorgesehen, welche dazu ausgebildet ist, festzulegen, aus welchem bzw. welchen Registerspeichern und/oder Konfigurationsspeichern bzw. aus welchen sonstigen Quellen der Funktionseinheit 1400 mögliche Ausgangsdaten zum Ausgeben über die Ausgangsschnittstelle 1404 erhalten werden. Beispielhaft kann die Multiplexerstruktur 1454 über den Inhalt eines Konfigurationsregisters 1432d gesteuert werden, vergleiche Pfeil a29.
-
Für die Zusammenstellung eines auszugebenden Datenpakets können die auszugebenden Daten beispielsweise durch die Multiplexerstruktur 1454 bereitgestellt werden, vergleiche Pfeil a27. Adressinformationen für das auszugebende Datenpaket können beispielsweise aus einem Konfigurationsregister 1432c bereitgestellt bzw. ausgelesen werden, vergleiche Pfeil a28. Die Adressinformationen für das auszugebenden Datenpaket können beispielsweise wiederum die Adresse ADR1 (2B) für eine Ziel-Funktionseinheit enthalten, an welche das auszugebenden Datenpaket auszugeben ist, sowie gegebenenfalls die weiteren Adressinformationen ADR2 für die interne Adressierung innerhalb der Ziel-Funktionseinheit.
-
Ein bedeutender Vorteil der vorliegenden Erfindung besteht darin, dass die Funktionseinheiten 140, 140a, ..., 140p, 1400 aktiv, direkt und autonom (ohne das Erfordernis einer Steuerung durch zum Beispiel die Rechenkerne der Recheneinheit) miteinander kommunizieren bzw. Daten austauschen können, und dass eine Konfiguration bzw. Modifikation der Konfiguration von Funktionseinheiten und/oder Verbindungseinheiten 150, 155a durch andere Komponenten möglich ist und ggf. zumindest zeitweise auch unterbunden werden kann. Vorteilhaft können die Funktionseinheiten Datenpakete, insbesondere funktionseinheitsspezifische Datenpakete, an andere Funktionseinheiten ausgeben bzw.- Datenpakete, insbesondere funktionseinheitsspezifische Datenpakete, von anderen Funktionseinheiten empfangen.
-
Besonders bevorzugt können die Funktionseinheiten einer weiteren Ausführungsform zufolge selbst festlegen, an welche weitere Funktionseinheit bzw. Datensenke Ausgangsdaten der Funktionseinheit, beispielsweise in Form von einem oder mehreren Datenpaketen, ausgegeben werden. Eine Festlegung durch entsprechende Steuerung z.B. der primären Verbindungseinheit 150 bzw. ihrer Verbindungskonfigurationsdaten VBK ist ebenfalls denkbar.
-
Besonders vorteilhaft ist - neben den Funktionseinheiten und einer sie verbindenden primären Verbindungseinheit 150 - keine weitere Komponente der Recheneinheit 100 erforderlich, um den entsprechenden Datenaustausch zwischen den Funktionseinheiten zu ermöglichen. Insbesondere ist keine den Funktionseinheiten übergeordnete Einheit wie z.B. ein Rechenkern 110a erforderlich, um den Datenaustausch zu ermöglichen. Besonders vorteilhaft ist auch keine der Funktionseinheit 1400 übergeordnete Einheit erforderlich, um während der Laufzeit der Funktionseinheiten ein jeweiliges Ziel für Ausgangsdaten einer Funktionseinheit zu ermitteln, weil bei bevorzugten Ausführungsformen diese Aufgabe durch die lokale Steuereinrichtung 1410 ( 2A) übernommen werden kann bzw. die Vorgabe einer Zieladresse aus über die Eingangsschnittstelle 1402 erhaltenen Eingangs- und Konfigurationsdaten abgeleitet werden kann.
Bei weiteren vorteilhaften Ausführungsformen können die Berechnungsdaten bzw. Ausgangsdaten der Funktionseinheit abhängen von der Konfiguration der Funktionseinheit, von den zugeführten Eingangsdaten und gegebenenfalls von zusätzlichen Eingangsdaten bzw. Eingangssignalen, die der Funktionseinheit beispielsweise über weitere Eingangsschnittstellen (nicht gezeigt) zuführbar sind. Sofern beispielsweise eine direkte Datenverbindung zwischen der Funktionseinheit und einer externen Komponente 200 (zum Beispiel Zeitgeberbaustein der Recheneinheit oder Eingangs-/Ausgangsschnittstelle der Recheneinheit) vorgesehen ist, können beispielsweise Werte eines von der externen Komponente 200 in die Funktionseinheit gespiegelten Registers ebenfalls Einfluss auf die Ausgangsdaten der Funktionseinheit haben.
-
Bei einer weiteren besonders bevorzugten Ausführungsform kann eine Mehrzahl von gleichartigen oder verschiedenartigen Funktionseinheiten miteinander kombiniert und über eine primäre Verbindungseinheit datenmäßig miteinander verbunden werden, wodurch eine Form eines Berechnungsnetzwerks bzw. eine Berechnungseinrichtung erhalten wird, die dazu ausgebildet sein kann, einen bestimmten Algorithmus zu berechnen. Besonders bevorzugt kann die Berechnungseinrichtung Algorithmen berechnen, welche eine höhere Komplexität aufweisen als solche Algorithmen, die durch einzelne Funktionseinheiten, welche Bestandteile der Berechnungseinrichtung bilden, berechenbar sind. Insbesondere stellt die „flexible Hardwareerweiterung“ 1500 aus 1A eine solche Berechnungseinrichtung dar, ebenso wie jede der Gruppen G1, G2 aus 1C, 1D.
-
Bei einer weiteren bevorzugten Ausführungsform sind alle Komponenten der erfindungsgemäßen Recheneinheit auf einem selben Halbleitersubstrat angeordnet bzw. unter Verwendung derselben Halbleiterfertigungstechnologie hergestellt. Besonders vorteilhaft sind auch die erfindungsgemäßen Funktionseinheiten 140, 140a, 140b, ..., 140p; 1400 auf demselben Halbleitersubstrat angeordnet wie die weiteren Komponenten 110a, 110b, 110c, 115, 120, 130, 150, 155, 160 der Recheneinheit. Dadurch ergibt sich vorteilhaft eine besonders klein bauende Konfiguration sowie die Möglichkeit der Herstellung einer effizienten und hochperformanten Datenverbindung zwischen den Komponenten, beispielsweise unter Einbeziehung der Hauptverbindungseinheit 130 und wenigstens einer primären Verbindungseinheit 150.
-
3 zeigt schematisch ein vereinfachtes Flussdiagramm einer Ausführungsform eines Verfahrens zum Betreiben einer erfindungsgemäßen Recheneinheit 100, 100a, 100b, 100c, 100d, 100e, vgl. die 1A bis 1F.
-
In einem optionalen ersten Schritt 300 tauschen Funktionseinheiten 140, 140a (1A) Daten miteinander aus, beispielsweise durch Senden und/oder Empfangen gemäß der vorstehend beispielhaft beschriebenen Struktur nach 2A. Bei diesen Daten kann es sich beispielsweise um Eingangsdaten bzw. Zwischenergebnisse bzw. Ausgangsdaten von Berechnungen handeln. Das Empfangen bzw. Senden von Daten gemäß Schritt 300 kann bevorzugten Ausführungsformen zufolge über entsprechende Eingangsschnittstellen 1402 (2A) bzw. Ausgangsschnittstellen 1404 erfolgen.
-
In einem nachfolgenden Schritt 302 verändert wenigstens eine Komponente der Recheneinheit 100 (1A), z.B. ein zweiter Rechenkern 110b, eine Konfiguration der Funktionseinheit 140a, beispielsweise um Einfluss auf die mittels der Funktionseinheit 140a ausführbaren Berechnungen zu nehmen.
-
Sodann unterbindet die Recheneinheit in Schritt 304 wenigstens zeitweise eine Veränderung der Konfiguration der Funktionseinheit 140a (und/oder anderer Funktionseinheiten). Dieses kann beispielsweise mittels des ersten Rechenkerns 110a erfolgen. Dadurch wird erreicht, dass beispielsweise der zweite Rechenkern 110b zumindest zeitweise keine (weitere) Veränderung der Konfiguration der Funktionseinheit 140a vornehmen kann.
-
4 zeigt schematisch ein Betriebsszenario einer Recheneinheit 100 gemäß der vorliegenden Erfindung. Die Recheneinheit 100 ist Bestandteil eines Steuergeräts 1004 für eine Brennkraftmaschine 1002 eines Kraftfahrzeugs 1000. Die Recheneinheit 100 weist beispielsweise eine wie vorstehend unter Bezugnahme auf die 1A bis 1F beschriebene Konfiguration auf.
-
Die erfindungsgemäße Recheneinheit 100 weist eine besonders große Flexibilität auf, weil die in ihr enthaltenen Funktionseinheiten flexibel Daten miteinander austauschen und ggf. sogar dynamisch konfiguriert beziehungsweise rekonfiguriert werden können, wobei z.B. auch, vorzugsweise bedarfsweise, redundante Berechnungen und auch die Anwendung von fehlererkennenden bzw. fehlerkorrigierenden Kodes, effizient ermöglicht sind. Gleichzeitig ist durch die weiter erfindungsgemäße Möglichkeit, eine Veränderung der Konfiguration wenigstens einer Funktionseinheit zumindest zeitweise zu unterbinden, ein besonders zuverlässiger Betrieb der Recheneinheit 100 gegeben.
-
Bei einer weiteren vorteilhaften Ausführungsform ist vorgesehen, dass wenigstens zwei Funktionseinheiten miteinander gekoppelt werden, um zu ermöglichen, die Datenbreite von zu verarbeitenden Daten zu erhöhen. 5 zeigt hierzu schematisch ein vereinfachtes Blockdiagramm, in dem zwei Funktionseinheiten 1400h, 1400i einer Recheneinheit gemäß einer Ausführungsform gezeigt sind.
-
Bei der vorliegend beschriebenen Ausführungsform können die Funktionseinheiten 1400h, 1400i in einer ersten Betriebsart unabhängig voneinander arbeiten. Hierbei verarbeitet beispielsweise die Funktionseinheit 1400h ihr zugeführte Eingangsdaten a40 einer ersten Datenbreite von beispielsweise 32 Bit, wodurch Ausgangsdaten a42, beispielsweise ebenfalls mit einer Datenbreite von 32 Bit, erhalten werden. Die Funktionseinheit 1400i verarbeitet ihr zugeführte Eingangsdaten a41 (mit einer Datenbreite von beispielsweise ebenfalls 32 Bit) unabhängig von dem Betrieb der Funktionseinheit 1400h bzw. unabhängig von der Verarbeitung der Eingangsdaten a40, wodurch Ausgangsdaten a43, beispielsweise ebenfalls mit einer Datenbreite von 32 Bit, erhalten werden.
-
In einer zweiten Betriebsart können die Funktionseinheiten 1400h, 1400i jedoch auch miteinander gekoppelt werden, was durch den Blockpfeil a44 angedeutet ist. Dies ermöglicht eine Erhöhung der Datenbreite der durch die Funktionseinheiten 1400h, 1400i nunmehr gemeinsam verarbeiteten Daten, beispielsweise auf nunmehr 64 Bit. Besonders bevorzugt können die beteiligten Funktionseinheiten dazu ausgebildet sein, Operanden und die auf ihnen auszuführenden Rechenschritte untereinander zu verteilen und/oder zwischen den Funktionseinheiten 1400h, 1400i bzw. ihren jeweiligen lokalen Berechnungseinheiten (nicht gezeigt) aufzutrennen, vgl. Pfeil a44. Pfeil a44 charakterisiert hierbei eine gesonderte Datenverbindung zwischen den Funktionseinheiten 1400h, 1400i, die eine Abstimmung der Funktionseinheiten 1400h, 1400i hinsichtlich der gemeinsamen Datenverarbeitung ermöglicht.
-
Bei einer Ausführungsform können die Funktionseinheiten 1400h, 1400i dazu ausgebildet sein, dynamisch (während eines Betriebs der Funktionseinheiten 1400h, 1400i) zwischen der ersten Betriebsart und der zweiten Betriebsart zu wechseln. Dies kann beispielsweise durch entsprechende Konfiguration der Funktionseinheiten 1400h, 1400i erreicht werden.
-
Bei einer weiteren vorteilhaften Ausführungsform ist vorgesehen, dass die Funktionseinheiten sich bezüglich des Empfangs ihrer jeweiligen Eingangsdaten a40, a41 synchronisieren, um die gemeinsame Datenverarbeitung korrekt ausführen zu können. Dies kann beispielsweise umfassen, dass alle beteiligten Funktionseinheiten so lange mit der Ausführung von Berechnungen warten, bis alle beteiligten Funktionseinheiten über gültige Eingangsdaten verfügen, insbesondere wenn ein nicht synchronisierter Berechnungsstart eine fehlerhafte Berechnung zur Folge hätte. Vorteilhaft synchronisieren sich die Funktionseinheiten auch während der Ausführung der Berechnungen untereinander. Sofern die durch die gemeinsame Datenverarbeitung entstehenden Ausgangsdaten die Datenbreite einer Funktionseinheit, beispielsweise 32 Bit, überschreiten, kann bei manchen Ausführungsformen vorgesehen sein, dass die Funktionseinheiten 1400h, 1400i die Ausgangsdaten beispielsweise in aufgeteilter Form an ein oder mehrere Ziel-Funktionseinheiten senden.
-
In einer Ausführungsform können die Teil-Ausgangsdaten durch nur einen Teil der beteiligten Funktionseinheiten versendet werden, beispielsweise durch genau eine.
-
In einer alternativen Ausführungsform können alle beteiligten Funktionseinheiten den entsprechenden Teil der aufgetrennten Teil-Ausgangsdaten versenden.
-
In beiden vorstehend genannten Ausführungsformen kann das Versenden der Teil-Ausgangsdaten beispielsweise zeitlich nacheinander erfolgen, in letztgenannter Ausführungsform auch parallel.
-
Beispielsweise können einer Ausführungsform zufolge beide Funktionseinheiten 1400h, 1400i dazu ausgebildet sein, Additionen („ADD“) bzw. Subtraktionen („SUB“) mit einer Datenbreite von 32 Bit auszuführen. In der der zweiten Betriebsart entsprechenden gekoppelten Betriebsweise können die Funktionseinheiten 1400h, 1400i somit eine Addition bzw. Subtraktion mit einer Datenbreite von 64 Bit ausführen. Beispielsweise berechnet die Funktionseinheit 1400h die 32 höherwertigen Bits, während die Funktionseinheit 1400i die 32 niederwertigen Bits berechnet. Ferner kann vorgesehen sein, dass ein Übertragsbit (englisch_ „Carry Bit“) von der Funktionseinheit 1400i zu der Funktionseinheit 1400a übertragen wird, vergleiche Blockpfeil a44.
-
Bei manchen Ausführungsformen kann die Datenverbindung a44 der beiden Funktionseinheiten zumindest zeitweise durch die Recheneinheit unterbunden werden, wodurch ein Übergreifen von Fehlern von 1400h auf 1400i oder umgekehrt verhindert wird.
-
Weitere Aspekte und Vorteile der Erfindung sind:
- - Möglichkeit einer vollständigen oder zumindest teilweisen bzw. einschränkenden Trennung mehrerer vorhandener Komponenten 150 ( 1A), 155a (1C), 160 (1F), 1500 (1A) durch Gruppierung und/oder Auftrennung ganzheitlicher Komponenten 150 (1A), 155a ( 1C), 160 (1F), 1500 (1A) in Teile, insbesondere um im Fehlerfall ein Übergreifen von Fehlern durch die nun voneinander (zumindest teilweise) getrennten Bereiche zu unterbinden oder um zumindest die Anzahl möglicher übergreifender Fehler einzugrenzen.
- - Vermeidung / Reduzierung der Wahrscheinlichkeit, dass von der Recheneinheit 100 und/oder von Komponenten 140, 150, 160 gemachte Fehler sich auf das restliche System auswirken,
- - Insbesondere ist bei manchen Ausführungsformen auch ermöglicht: zumindest zeitweises Verbieten / Unterbinden / Verhindern / Einschränken von „eigentlich“ vorhandenen Freiheitsgraden (z.B. Konfiguration) der Komponente 1500 ( 1A) / Möglichkeiten der Architektur,
- - Bei manchen Ausführungsformen kann z.B. ein, bevorzugt globaler, „Enable“-Schalter für alle und/oder einen Teil der Funktionseinheiten und/oder für primäre Verbindungseinheit 150 vorgesehen sein, der das Verändern der Konfiguration zeitweise unterbindet. Der Enable-Schalter ist beispielsweise durch eine ausgewählte Komponente der Recheneinheit 100, z.B. (nur) den ersten Rechenkern 110a, und/oder z.B. nur eine spezielle Peripheriekomponente 125, steuerbar.
- - Bei weiteren Ausführungsformen kann auch eine Prüfung dahingehend erfolgen, dass die von absendenden Funktionseinheiten abgesendeten Datenpakete nur an bestimmte Ziel-Funktionseinheiten und/oder Gruppen von Ziel-Funktionseinheiten gerichtet sein dürfen und das Versenden an andere Ziel-Funktionseinheiten und/oder Gruppen von Ziel-Funktionseinheit als nicht zulässig erkannt und entsprechend unterbunden wird.
- - Das erfindungsgemäße Prinzip (Ändern der Konfiguration und/oder zeitweises Unterbinden solcher Änderungen) kann bei manchen Ausführungsformen auch selektiv auf eine oder mehrere Komponenten 140, 140a, .. , 150, 160 angewandt werden. Beispielsweise kann das erfindungsgemäße Prinzip (Ändern der Konfiguration und/oder zeitweises Unterbinden solcher Änderungen) auch auf mehrere Komponenten, insbesondere Funktionseinheiten und/oder Gruppen von Funktionseinheiten, gleichzeitig angewandt werden.
- - Bei manchen Ausführungsformen kann vorgesehen sein, dass eine Rekonfiguration einer bestimmten Funktionseinheit 140 (beispielsweise über die Änderung der Konfiguration durch eine andere Komponente der Recheneinheit, beispielsweise ein Rechenkern) nur dann ermöglicht ist, also nicht im erfindungsgemäßen Prinzip folgend unterbunden ist, wenn die bestimmte Funktionseinheit 140 sich in einem vorgebbaren Betriebszustand (beispielsweise passiver Zustand) befindet, der beispielsweise durch 1 Bit-flag („StartFlag“) signalisiert werden kann. Dies verhindert beispielsweise eine unerwünschte Rekonfiguration (Änderung der Konfiguration) während eines aktiven Betriebs der Funktionseinheit.
- - Bei manchen Ausführungsformen kann vorgesehen sein, dass Änderungen von Speicherelementen, insbesondere Registern (entweder alle Register oder einige vorgebbare Register, beispielsweise Konfigurationsregister, vergleiche Beschreibung zu 2A) von einer oder mehreren Funktionseinheiten unterbunden werden. Auf diese Weise kann verhindert werden, dass Komponenten der Recheneinheit die entsprechenden Register unerwünscht verändern. Dadurch wird die Betriebssicherheit der erfindungsgemäßen Recheneinheit weiter gesteigert. Es kann beispielsweise bevorzugt angewandt werden auf solche Register bzw. Teile von Registern von Funktionseinheiten, welche unbeeinflusst von anderen Funkfunktionseinheiten arbeiten können.
- - Bei einer weiteren Ausführungsform kann vorgesehen sein, dass durch die Recheneinheit 100 bzw. eine ihrer Komponenten, beispielsweise den primären Rechenkern 110a, vorgebbare Speicherzugriffe, beispielsweise aus der flexiblen Hardwareerweiterung 1500 (1A) heraus auf andere Komponenten der Recheneinheit (z.B. insb. über a24 über 155 auf 130) zumindest zeitweise unterbunden bzw. verboten werden. Dadurch können die betreffenden Speicherbereiche geschützt werden, was beispielsweise eine unerwünschte Modifikation dieser Speicherbereiche durch eine fehlerhaft arbeitende Funktionseinheit verhindert. Insbesondere lassen sich so auch eine gegebenenfalls vorhandene primäre Speichereinrichtung 120, eine sekundäre Speichereinrichtung 160 sowie weitere Peripheriekomponenten 125 vor unerwünschten Zugriffen (Schreiben und/oder Lesen) schützen.
- - Insgesamt ist durch die Anwendung des erfindungsgemäßen Prinzips eine große Flexibilität hinsichtlich der Einschränkung einer (Re-)Konfigurationsmöglichkeit von Funktionseinheiten 140 - insbesondere von allen oder nur ausgewählten Funktionseinheiten Einheiten - gegeben. Insbesondere kann bei manchen Ausführungsformen genau festgelegt sein für welche Komponenten der Recheneinheit, insbesondere für welche Funktionseinheiten, eine Konfiguration bzw. Veränderung der Konfiguration zumindest zeitweise unterbunden werden kann. Dadurch kann das erfindungsgemäße Prinzip selektiv auf einzelne oder mehrere Funktionseinheiten angewandt werden. Eine vergleichbare Flexibilität ist bei manchen Ausführungsformen auch dahingehend gegeben, dass festgelegt sein kann, welche Komponente bzw. welche Komponenten der Recheneinheit eine Veränderung der Konfiguration wenigstens einer Funktionseinheit und/oder der primären Verbindungseinheit vornehmen darf bzw. welche Komponente bzw. welche Komponenten der Recheneinheit eine Veränderung der Konfiguration wenigstens einer Funktionseinheit und/oder der primären Verbindungseinheit zumindest zeitweise unterbinden darf.
- - Bei weiteren Ausführungsform ist vorgesehen, dass dann, wenn ein Fehler im Bereich der Recheneinheit, insbesondere einer Funktionseinheit, festgestellt worden ist, ein oder mehrere Datenpakete bzw. generell der Datenaustausch mit der betreffenden fehlerhaften Komponente, insbesondere Funktionseinheit, blockiert wird, beispielsweise im Sinne eines Verwerfens oder eines Zurückhaltens betreffenden Datenpakete, bis erneut ein Empfang dieser Datenpakete möglich ist. Alternativ oder ergänzend kann eine Fehlerreaktion eingeleitet werden, beispielsweise im Sinne einer Signalisierung mittels einer Unterbrechungsanforderung (interrupt“) über eine Verteilereinrichtung für Unterbrechungsanforderungen („interrupt router“). Alternativ oder ergänzend kann auch vorgesehen sein, dass die Recheneinheit ein oder mehrere Maßnahmen zur Behebung von Fehlern ausführt, beispielsweise das Zurücksetzen einer oder mehrerer Funktionseinheiten bzw. der Betroffenen, fehlerhaft arbeitenden Komponente. Alternativ oder ergänzend kann auch eine vollständige Abschaltung wenigstens einer Komponente oder der gesamten Recheneinheit vorgesehen sein.
- - Manche Ausführungsformen ermöglichen zumindest zeitweise eine Unterbindung bzw. Verriegelung einer Rekonfiguration bzw. Umkonfiguration wenigstens einer Komponente der Recheneinheit; dies kann besonders bevorzugt bei weiteren Ausführungsformen während der aktiven Berechnung eines Algorithmus durch ein oder mehrere Funktionseinheiten angewandt werden. Ebenso ist es denkbar, eine Umkonfiguration einer ersten Funktionseinheit durch eine zweite Funktionseinheit zumindest zeitweise zu unterbinden. Ebenso ist es denkbar, eine Umkonfiguration einer Funktionseinheit durch eine andere Komponente der Recheneinheit oder sogar durch eine extern zu der Recheneinheit angeordnete Komponente (die beispielsweise über Speicherdirektzugriffe auf wenigstens eine Funktionseinheit zugreifen kann) zumindest zeitweise zu unterbinden.
- - Bei weiteren Ausführungsformen kann auch wenigstens eine der folgenden Maßnahmen vorgesehen sein: Sperrung von Schreibrechten und/oder Leserechten und/oder Sperrung von (Re-)Konfiguration von bestimmten Einheiten 140, 150, 160 auf bestimmte Einheiten. Bei weiteren Ausführungsformen kann die Sperrung beispielsweise zeitlich beschränkt sein, und/oder abhängig von Ereignissen beschränkt sein.
- - Besonders vorteilhaft lassen sich unter Anwendung des erfindungsgemäßen Prinzips auch mögliche negative Auswirkungen von in der Recheneinheit verursachten transienten Fehlern, insbesondere einmaligen Strahlungsfehlern (durch das Eindringen ionisierender Strahlung), bzw. permanenten Fehlern, insbesondere dauerhaften physikalischen Fehlern, verringern bzw. verhindern.
-
Weitere vorteilhafte Anwendungsgebiete für das erfindungsgemäße Prinzip und die erfindungsgemäße Recheneinheit sind Steuergeräte für den Betrieb von elektrischen Motoren bzw. Generatoren, Steuergeräte für Batterien, Fahrerassistenzsysteme, Chassis-Systeme, Elektrowerkzeuge, Haushaltsgeräte, und dergleichen.
-
Die erfindungsgemäße Recheneinheit 100 ermöglicht vorteilhaft die (z.B. optional durch Redundanz und/oder fehlerkorrigierende Kodes) gesicherte, effiziente Ausführung von rechenintensiven und aufwendigen mathematischen Berechnungen (insbesondere mit großer (Rechen-)Tiefe, viele Rechenoperationen), ohne dass hierzu spezielle Beschleunigerhardware wie beispielsweise der Einsatz mehrerer digitaler Signalprozessoren (DSP) oder ASICs zusätzlich zu einem herkömmlichen Mikrocontroller oder integriert in einen Mikrocontroller oder dergleichen erforderlich wären. Vielmehr können die rechenintensiven und aufwendigen mathematischen Berechnungen sowie die Absicherung bzw. Fehlererkennung vorteilhaft durch die erfindungsgemäßen Funktionseinheiten 140, ..., 1400 ausgeführt werden, welche zudem flexibel untereinander verbindbar sind, wodurch eine einfache Anpassung der erfindungsgemäßen Recheneinheit 100 an mannigfaltige rechenintensive und aufwendige mathematische Berechnungen bzw. Algorithmen möglich ist. Beispielsweise kann die erfindungsgemäße Recheneinheit 100 vorteilhaft zur Verarbeitung von Sensorwerten, zum Beispiel in einem Steuergerät eines Kraftfahrzeugs, verwendet werden.
-
Bei einer bevorzugten Ausführungsform ergibt sich eine beispielhafte Datenverarbeitungskette wie folgt: Ein Sensorsignal (zum Beispiel eines Drehzahlsensors) bildet Eingangsdaten für die Recheneinheit 100, (ggf. abgesicherte) Berechnungen innerhalb eines Rechenkerns 110a der Recheneinheit 100, weitere (ggf. abgesicherte) Berechnungen durch die erfindungsgemäßen Funktionseinheiten 140, (ggf. abgesicherte) weitere Berechnungen durch den Rechenkern 110a, (ggf. abgesicherte) Erzeugung eines Steuersignals als Ausgangssignal der Recheneinheit 100 für nachgeordnete Systeme wie beispielsweise Aktoren beziehungsweise Endstufen zur Ansteuerung von Aktoren.
-
Aufgrund ihrer Leistungsfähigkeit und Betriebssicherheit ist die erfindungsgemäße Recheneinheit besonders für Steuergeräte für Brennkraftmaschinen, insbesondere von Kraftfahrzeugen, geeignet, bei denen eine Vielzahl von Eingangswerten wie beispielsweise Sensorsignalen einer komplexen Verarbeitung unterzogen wird, um entsprechende Ausgangssignale für Aktoren wie beispielsweise magnetisch oder piezoelektrisch betätigte Einspritzventile für ein Kraftstoffeinspritzsystem der Brennkraftmaschine zu bilden, und bei denen i.d.R. auch vergleichsweise hohe Anforderung an die Betriebssicherheit (englisch: „safety“) gestellt werden. Die erfindungsgemäße Recheneinheit kann ferner vorteilhaft bei Steuergeräten für Fahrerassistenzsysteme eingesetzt werden, beispielsweise zur Auswertung von Radardaten zur Steuerung von Fahrerassistenzfunktionen, bei denen herkömmliche Steuergeräte typischerweise mehrere digitale Signalprozessoren aufweisen, um die anfallenden Datenmengen der Radarsensorik verarbeiten zu können. Die erfindungsgemäße Recheneinheit mit der flexible Hardwareerweiterung kann ferner vorteilhaft bei Steuergeräten eingesetzt werden, in denen komplexe regelungstechnische Modelle berechnet werden und/oder in denen eine komplexe digitale Signalverarbeitung erfolgt.
-
Neben den vorstehend bereits beschriebenen Berechnungsmöglichkeiten, welche durch einzelne Funktionseinheiten 1400 (2A) bzw. durch einen Verbund einzelner Funktionseinheiten, insbesondere durch deren jeweilige lokale Berechnungseinheit(en) 1420 realisiert werden können, ist es ebenfalls möglich, die nachfolgenden Funktionalitäten durch eine oder mehrere erfindungsgemäße Funktionseinheiten im Verbund bereitzustellen, sofern in einer entsprechenden Ausbaustufe der flexiblen Hardwareerweiterung 1500 die benötigten Grundfunktionalitäten in Form von Funktionseinheiten einschließlich Berechnungseinheiten überhaupt und zudem in erforderlicher Anzahl, Konfiguration und Verbindung untereinander vorhanden sind sowie eine Berechnung mit der erforderlichen Gesamtrechenleistung erlauben: Berechnung von (auch hochdimensionalen) Kennfeldern (mit z.B. mehr als fünf Dimensionen), Berechnung von datenbasierten Modellen, Berechnung von physikalischen Modellen, Berechnung von neuronalen Netzen, Lösung linearer Gleichungssysteme, Bildung inverser Matrizen (insbesondere Matrizen höherer Ordnung), Lösung nichtlinearer Gleichungssysteme, Zeit-zu-Frequenz Umwandlung beispielsweise durch Berechnung der Fast Fourier Transformation (FFT), Frequenz-zu-Zeit Umwandlung beispielsweise durch Berechnung der inversen Fast Fourier Transformation (iFFT), Berechnung verschiedener Filtertypen wie FIR (Finite Impulse Response), IIR (Infinite Impulse Response), usw. Auch hierbei kann vorteilhaft die erfindungsgemäße Erkennung bzw. Korrektur von Fehlern ausgeführt und damit die genannten Berechnungen abgesichert werden.