Ausführungsbeispiele gemäß der Erfindung beziehen sich auf integrierte Schaltungen zur Datenverarbeitung und insbesondere auf eine Arithmetik-Logik-Einheit und ein Verfahren zur Verarbeitung eines ersten binären Eingangssignals und eines zweiten binären Eingangssignals, entsprechend einer auswählbaren algebraischen Funktion.Embodiments of the invention relate to integrated circuits for data processing, and more particularly to an arithmetic logic unit and method for processing a first binary input signal and a second binary input signal, according to a selectable algebraic function.
Fehler in integierten Schaltungen können nicht völlig ausgeschlossen werden. Das gilt für die modernen Chips und wird noch mehr relevant für die Chips der nächsten Generationen. Die Beispiele der physikalischen Fehler sind ein Kurzschluss zur Masse oder zwischen den Leitungen, unterbrochene Leitungen, Fehler, die durch α-Teilchen und energiereichen Neutronen oder ein elektromagnetisches Feld verursacht werden usw. Die Fehler können permanent (dauerhaft) oder transient (kurzlebig) sein. Durch Testen können nur die permanenten Fehler, die zum Zeitpunkt des Testens entstanden sind, erkannt werden. Dabei wird der Schaltungsbetrieb unterbrochen. Durch den Einsatz der selbstprüfenden Schaltungen werden sowohl die permanenten Fehler als auch die transienten Fehler im laufenden Betrieb erkannt.Errors in integrated circuits can not be completely ruled out. That goes for the modern chips and will be even more relevant to the chips of the next generations. The examples of physical errors are a short to ground or between wires, broken wires, errors caused by α-particles and high-energy neutrons or an electromagnetic field, etc. The errors can be permanent or transient. Through testing, only the permanent errors that occurred at the time of testing can be recognized. The circuit operation is interrupted. By using the self-checking circuits, both the permanent errors and the transient errors are detected during operation.
Die selbstprüfenden Schaltungen werden da eingesetzt, wo es um die Zuverlässigkeit und Sicherheit der digitalen Schaltungen geht. Das sind zum Beispiel Safety Anwendungen (Sicherheitsanwendungen) in Automotive, Zugverkehr, Medizin, Defence (Abwehr) und AKW (Atomkraftwerk), fehlertolerante Computer für Flug- und Raumfahrt. In den Sicherheitsschaltungen werden sie angewendet, um die absichtlichen Fehler (Fehlerattacken) zu erkennen.The self-testing circuits are used where the reliability and safety of digital circuits is concerned. These are, for example, safety applications in automotive, train traffic, medicine, defense and nuclear power plants, fault-tolerant computers for aviation and aerospace. In the safety circuits they are used to detect the intentional errors (error attacks).
Entwurf von effektiven selbstprüfenden Schaltungen mit niedrigem Hardware-Bedarf ist eine große Herausforderung.Designing effective self-checking circuits with low hardware requirements is a big challenge.
Verschiedene Verfahren zum Entwurf von selbstprüfenden arithmetischen und logischen Einheiten sind bekannt.Various methods for designing self-checking arithmetic and logic units are known.
Die einfachste Methode ist Verdopplung und Vergleich (siehe z. B. „M. Gössel and S. Graf Error Detection Circuits. McGraw-Hill, London, 1993”; ”M. Gössel and V. Ocheretny and E. S. Sogomonyan and D. Marienfeld. New Methods of Concurrent Checking. Springer, 2008”). Die ursprüngliche Schaltung wird verdoppelt. Die Ausgänge der ursprünglichen Schaltung werden mit den Ausgängen der verdoppelten Schaltung verglichen. Sind sie ungleich, wird ein Fehler erkannt. Kein spezielles Fehlermodel wird bei der Methode benötigt. Die Nachteile des Verfahrens sind ein hoher Hardware-Overhead, der mehr als 100% der Fläche der ursprünglichen Schaltung erfordert, und ein hoher Stromverbrauch.The simplest method is duplication and comparison (see, for example, M. Gössel and S. Graf Error Detection Circuits, McGraw-Hill, London, 1993; M. Gössel and V. Ocheretny and ES Sogomonyan and D. Marienfeld. New Methods of Concurrent Checking, Springer, 2008 "). The original circuit is doubled. The outputs of the original circuit are compared with the outputs of the doubled circuit. If they are unequal, an error is detected. No special error model is needed in the method. The disadvantages of the method are a high hardware overhead, which requires more than 100% of the area of the original circuit, and a high power consumption.
Für die Fehlererkennung in den arithmetischen Einheiten können die Arithmetic Residue Codes (arithmetische Residuenkodes) verwendet werden (siehe z. B. „W. W. Peterson. On Checking an Adder. IBM Journal of Reseach and Development, :166–168, 1958”; ”W. W. Peterson and E. J. Weldon(Jr.). Error Correcting Codes. The MIT-Press, 1994”; ”A. Avizienis. Arithmethic Algorithms for Error-Coded Operands. IEEE Transactions on Computers, C-22(6):567–572, 1973”; ”G. G. Langdon and C. K. Tang. Concurrent Error Detection for Group Look-Ahead Binary Adders. IBM Journal of Reseach and Development, :563–573, 1970”; ”V. Ocheretnij and M. Gössel and E. S. Sogomonyan and D. Marienfeld. Modulo p = 3 Checking for a Carry Select Adder. Journal of Electronic Testing: Theory and Applications, 22:101–107, 2006”). Die Methode wird auch ”modulo checking” (modulo-prüfen) genannt. Ihr Hauptnachteil ist, dass Checkers (Prüfeinheiten) für die Arithmethic Residue Codes sehr komplexe Schaltungen sind. Außerdem sind die arithmetischen Kodes mit den Parttätskodes, die sehr oft für die Fehlererkennung in anderen Komponenten (wie Datenbusse und Speicher) verwendet werden, nicht kompatibel.The Arithmetic Residue Codes can be used for error detection in the arithmetic units (see, for example, "WW Peterson, On Checking an Adder, IBM Journal of Reseach and Development, 166-168, 1958"; "WW Peterson and EJ Weldon (Jr.), Error Correcting Codes, The MIT-Press, 1994 ";" A. Avizienis, Arithmetic Algorithms for Error-Coded Operands, IEEE Transactions on Computers, C-22 (6): 567-572, 1973 ";" GG Langdon and CK Tang Concurrent Error Detection for Group Look-Ahead Binary Adders. IBM Journal of Reseach and Development,: 563-573, 1970; "" V. Ocheretnij and M. Gössel and ES Sogomonyan and D. " Marienfeld, Modulo p = 3 Checking for a Carry Select Adder, Journal of Electronic Testing: Theory and Applications, 22: 101-107, 2006 "). The method is also called "modulo checking". Their main drawback is that checkers for Arithmetic Residue Codes are very complex circuits. In addition, the part-code arithmetic codes, which are often used for error detection in other components (such as data buses and memory), are not compatible.
Die selbstprüfenden arithmetischen und logischen Operatoren werden auch mit Hilfe von Berger Kodes implementiert (siehe z. B. „J-C. Lo and S. Thanawastien and T. R. N. Rao and M. Nicolaidis. An SFS Berger Check Prediction ALU and Its Application to Self-Checking Processor Designs. IEEE Transactions on CAD, 11(4):525–540, 1992”;] M. Pflanz and K. Walther and H. T. Vierhaus. On-line Error Detection Techniques for Dependable Embedded Processors with High Complexity. Proceedings of 7th International On-line Testing Workshop, pages 51–53, 2001”; ”S. S. Gorsche and B. Bose. A Self-Checking ALU Design with Efficient Codes. Proceedings of 14th IEEE VLSI Test Symposium, pages 157–161, 1996”). Bei diesem Verfahren werden alle unidirektionale Fehler erkannt. Die Nachteile sind die gleichen wie bei den Residue Codes – ein hoher Hardware-Aufwand für die Implementierung des Berger Kode Checkers und, dass der Berger Kode mit den Paritätskodes nicht kompatibel ist.Self-checking arithmetic and logical operators are also implemented using Berger codes (see, for example, JC Lo and S. Thanawastien and TRN Rao and M. Nicolaidis) to SFS Berger Check Prediction ALU and Its Application to Self-Checking Processor Designs, IEEE Transactions on CAD, 11 (4): 525-540, 1992 ";] M. Pflanz and K. Walther and HT Vierhaus, On-line Error Detection Techniques for Dependable Embedded Processors with High Complexity Proceedings of 7th International On -Salle Testing Workshop, pages 51-53, 2001 "," SS Gorsche and B. Bose, A Self-Checking ALU Design with Efficient Codes. "Proceedings of 14th IEEE VLSI Test Symposium, pages 157-161, 1996"). This procedure detects all unidirectional errors. The disadvantages are the same as with the Residue Codes - a high hardware overhead for implementing the Berger Kode Checker and that the Berger code is not compatible with the parity codes.
Die Paritätsprüfung wird auch eingesetzt, um die selbstprüfenden arithmethischen und logischen Einheiten zu implementieren. In „F. F. Sellers(Jr.) and M. Y. Hsiao and L. W. Bearnson. Error Detection Logic for Digital Computers. McGraw-Hill, 1968”; ”M. Y. Hsiao and F. F. Sellers. The Carry-Dependent Sum Adder. IEEE Transactions on Electronic Computers, EC-12(6):265-268, 1963”; ”M. Nicolaidis. Efficient Implementations of Self-Checking Adders and ALU's. Symposium on Fault-Tolerant Computing, pages 586-595, 1993”; „M. Nicolaidis. Implementation Techniques of Self-Checking Arithmetic Operators and Data Paths Based on Double-Rail and Parity Codes. US Patent No.5450340 , 1995”; ”M. Nicolaidis. Carry Checking/Parity Prediction Adders and ALUs. IEEE Transactions on VLSI Systems, 11(1):121–128, 2003”; ”V. Ocheretnij and M. Gössel and E. S. Sogomonyan. Code-Disjoint Carry-Dependent Sum Adder with Partial Look-Ahead. Proceedings of 7th International On-line Testing Workshop, pages 147–152, 2001” und ”S. Vassiliadis and E. M. Schwarz and M. Putrino and B. J. Feal. Parity Prediction for Binary Adders with Selection. US Patent No.4924424 , 1990” wurden paritätsgeprüfte Addierer vorgeschlagen. Die Prüfung der logischen Operationen wurde in „O. N. Garcia and T. R. N. Rao. On the Methods of Checking Logical Operation. Proceedings of 2nd Princeton Conference on Information Sciences and Systems, pages 89–95, 1968” betrachtet. Vom besonderem Interesse ist „M. Nicolaidis. Implementation Techniques of Self-Checking Arithmetic Operators and Data Paths Based on Double-Rail and Parity Codes. US Patent No.5450340 , 1995”. In „M. Nicolaidis. Implementation Techniques of Self-Checking Arithmetic Operators and Data Paths Based on Double-Rail and Parity Codes. US Patent No.5450340, 1995” und nachfolgenden Publikationen (siehe z. B. „M. Nicolaidis. Efficient Implementations of Self-Checking Adders and ALUs. Symposium on Fault-Tolerant Computing, pages 586–595, 1993”; „M. Nicolaidis. Carry Checking/Parity Prediction Adders and ALUs. IEEE Transactions on VLSI Systems, 11(1):121–128, 2003”) wurde eine selbstprüdende ALU präsentiert, die die Grundfunktionen (ADD, AND, OR und XNOR) implementiert. Die Paritätsprüfung erfordert einen niedrigeren Hardware-Aufwand als die oben genannten Methoden. Der Nachteil der Methode ist, dass ein einzelner Fehler in einem Übertragssignal (Carry Signal) eine gerade Anzahl der Bits im Berechnungsergebnis verfälscht und daher durch Parität nicht erkannt werden kann. Solche Fehler müssen besonders behandelt werden. In ”M. Y. Hsiao and F. F. Sellers. The Carry-Dependent Sum Adder. IEEE Transactions on Electronic Computers, EC-12(6):265–268, 1963” wurde eine spezielle Zelle vorgeschlagen, die die unerkannten Fehler in den Carries vermeidet. In ”M. Nicolaidis. Implementation Techniques of Self-Checking Arithmetic Operators and Data Paths Based on Double-Rail and Parity Codes. US Patent No.5450340, 1995”; ”M. Nicolaidis. Efficient Implementations of Self-Checking Adders and ALU's. Symposium on Fault-Tolerant Computing, pages 586–595, 1993” und „M. Nicolaidis. Carry Checking/Parity Prediction Adders and ALUs. IEEE Transactions on VLSI Systems, 11(1):121–128, 2003” wurden die Carries einfach verdoppelt. The parity check is also used to implement the self-checking arithmetic and logical units. In "FF Sellers (Jr.) and MY Hsiao and LW Bearnson. Error Detection Logic for Digital Computers. McGraw-Hill, 1968 ";"MY Hsiao and FF Sellers. The Carry-Dependent Sum Adder. IEEE Transactions on Electronic Computers, EC-12 (6): 265-268, 1963 ";"M. Nicolaidis. Efficient Implementations of Self-Checking Adders and ALU's. Symposium on Fault-Tolerant Computing, pages 586-595, 1993 ";"M. Nicolaidis. Implementation Techniques of Self-Checking Arithmetic Operators and Data Paths Based on Double-Rail and Parity Codes. US Patent No.5450340 , 1995 ";"M. Nicolaidis. Carry Checking / Parity Prediction Adders and ALUs. IEEE Transactions on VLSI Systems, 11 (1): 121-128, 2003 ";"V. Ocheretnij and M. Gössel and ES Sogomonyan. Code Disjoint Carry-Dependent Sum Adder with Partial Look-Ahead. Proceedings of 7th International On-line Testing Workshop, pages 147-152, 2001 "and" p. Vassiliadis and EM Black and M. Putrino and BJ Feal. Parity Prediction for Binary Adders with Selection. US Patent No. 4924424 , 1990 ", parity-verified adders were proposed. The audit of the logical operations was carried out in "ON Garcia and TRN Rao. On the Methods of Checking Logical Operation. Proceedings of 2nd Princeton Conference on Information Sciences and Systems, pages 89-95, 1968 ". Of particular interest is "M. Nicolaidis. Implementation Techniques of Self-Checking Arithmetic Operators and Data Paths Based on Double-Rail and Parity Codes. US Patent No.5450340 , 1995 ". In "M. Nicolaidis. Implementation Techniques of Self-Checking Arithmetic Operators and Data Paths Based on Double-Rail and Parity Codes. US Patent No. 5,450,340, 1995 "and subsequent publications (see, e.g.," M. Nicolaidis, Efficient Implementations of Self-Checking Adders and ALUs. Symposium on Fault-Tolerant Computing, pages 586-595, 1993 "; Nicolaidis, Carry Checking / Parity Prediction Adders and ALUs IEEE Transactions on VLSI Systems, 11 (1): 121-128, 2003 ") presented a self-polling ALU that implements the basic functions (ADD, AND, OR and XNOR). The parity check requires less hardware overhead than the above methods. The disadvantage of the method is that a single error in a carry signal falsifies an even number of bits in the calculation result and therefore can not be recognized by parity. Such errors need special treatment. In "MY Hsiao and FF Sellers. The Carry-Dependent Sum Adder. IEEE Transactions on Electronic Computers, EC-12 (6): 265-268, 1963, "a special cell has been proposed which avoids the unrecognized errors in the carries. In "M. Nicolaidis. Implementation Techniques of Self-Checking Arithmetic Operators and Data Paths Based on Double-Rail and Parity Codes. US Patent No.5450340, 1995 ";"M. Nicolaidis. Efficient Implementations of Self-Checking Adders and ALU's. Symposium on Fault-Tolerant Computing, pages 586-595, 1993 "and" M. Nicolaidis. Carry Checking / Parity Prediction Adders and ALUs. IEEE Transactions on VLSI Systems, 11 (1): 121-128, 2003 "the carries were simply doubled.
Eine andere Möglichkeit ist die Methode der partiellen Verdopplung. Bei der Methode wird nur ein Teil der Schaltung verdoppelt. Der nicht verdoppelte Teil wird durch eine Fehlererkennungsschaltung überwacht. Die Methode wurde für verschiedene Typen von Addierern, Multiplizierern und Dividierern angewandt (siehe z. B. „ E. S. Sogomonyan and M. Gössel. New Totally Self-Checking Ripple and Carry Look-Ahead Adders. Proceedings of 3rd On-Line Testing Workshop, pages 36-40, 1997”; ”E. S. Sogomonyan and V. Ocheretnij and M. Gössel. A New Code-Disjoint Sum Bit-Duplicated Carry Look-Ahead Adder for Parity Codes. Proceedings of 10th Asian Test Symposium, pages 57–62, 2001”; ”D. Marienfeld and E. S. Sogomonyan and V. Ocheretnij and M. Gössel. A New Self-Checking Code-Disjoint Carry Skip Adder. Proceedings of 8th IEEE International On-line Testing Workshop, 2002”; ”D. Marienfeld and E. S. Sogomonyan and V. Ocheretnij and M. Gössel. A New Self-Checking Code-Disjoint Carry Skip Adder. Proceedings of 8th IEEE International On-line Testing Workshop, 2002”; ”D. Marienfeld and V. Ocheretnij and M. Gössel and E. S. Sogomonyan. Partially Duplicated Code-Disjoint Carry Skip Adder. Proceedings of 7th IEEE International Symposium on DEFECT and FAULT TOLERANCE in VLSI Systems, pages 78–86, 2002”; ”E. S. Sogomonyan and D. Marienfeld and V. Ocheretnij and M. Gössel. A New Self-Checking Sum Bit-Duplicated Carry Select Adder. Proceedings of Design, Automation and Test in Europe Conference – DATE, pages 1360–1361, 2004”; ”D. Marienfeld and E. S. Sogomonyan and V. Ocheretnij and M. Gössel. A New Self-Checking Multiplier by Use of a Code-Disjoint Sum Bit-Duplicated Adder. Proceedings of 9th IEEE European Test Symposium, pages 73–78, 2004”;”] D. Marienfeld and E. S. Sogomonyan and V. Ocheretnij and M. Gössel. New Self-Checking Output-Duplicated Booth Multiplier with High Fault Coverage for Soft Errors. Proceedings of 14th IEEE Asian Test Symposium, pages 76–81, Calcutta, 2005”; ”D. Marienfeld and E. S. Sogomonyan and V. Ocheretnij and M. Gössel. A New Self-Checking and Code-Disjoint Non-Restoring Array Divider. Proceedings of 12th IEEE International On-line Test Symposium, pages 23–28, Como, Italy, 2006”). Die Vorteile des Verfahrens sind ein niedriger Hardware-Aufwand (vergleichbar mit dem Hardware-Aufwand bei der Paritätsprüfung) und hohe Fehlererkennungseigenschaften (fast wie bei der Methode der Verdopplung und Vergleichs).Another possibility is the method of partial doubling. The method doubles only part of the circuit. The non-doubled part is monitored by an error detection circuit. The method has been applied to various types of adders, multipliers and dividers (see, for example, ES Sogomonyan and M. Gössel, New Totally Self-Checking Ripple and Carry Look-Ahead Adders, Proceedings of 3rd On-Line Testing Workshop, pages 36-40, 1997; ES Sogomonyan and V. Ocheretnij and M. Gössel, A New Code-Disjoint Sum Bit-Duplicated Carry Look-Ahead Adder for Parity Codes Proceedings of 10th Asian Test Symposium, pages 57-62, 2001 D. Marienfeld and ES Sogomonyan and V. Ocheretnij and M. Gössel A New Self-Checking Code-Disjoint Carry Skip Adder Proceedings of 8th IEEE International On-line Testing Workshop, 2002 ";" D. Marienfeld and ES Sogomonyan and V. Ocheretnij and M. Gössel, A New Self-Checking Code-Disjoint Carry Skip Adder Proceedings of 8th IEEE International On-line Testing Workshop, 2002 ";" D. Marienfeld and V. Ocheretnij and M. Gössel and ES Sogomonyan Partially Duplicated Code-Disjoint Carry Skip Adder Pro cededings of 7th IEEE International Symposium on DEFECT and FAULT TOLERANCE in VLSI Systems, pages 78-86, 2002 "; "E. S. Sogomonyan and D. Marienfeld and V. Ocheretnij and M. Gössel. A New Self-Checking Sum Bit-Duplicated Carry Select Adder. Proceedings of Design, Automation and Test in Europe Conference - DATE, pages 1360-1361, 2004 "; "D. Marienfeld and E. S. Sogomonyan and V. Ocheretnij and M. Gössel. A New Self-Checking Multiplier by Using a Code-Disjoint Sum Bit-Duplicated Adder. Proceedings of 9th IEEE European Test Symposium, pages 73-78, 2004 ";"] D. Marienfeld and E. S. Sogomonyan and V. Ocheretnij and M. Gössel. New Self-Checking Duplicated Booth Multiplier with High Fault Coverage for Soft Errors. Proceedings of 14th IEEE Asian Test Symposium, pages 76-81, Calcutta, 2005 "; "D. Marienfeld and E. S. Sogomonyan and V. Ocheretnij and M. Gössel. A New Self-Checking and Code-Disjoint Non-Restoring Array Divider. Proceedings of 12th IEEE International On-line Test Symposium, pages 23-28, Como, Italy, 2006 "). The advantages of the method are a low hardware overhead (comparable to the hardware effort in the parity check) and high error detection properties (almost like the method of doubling and comparison).
In ”T. Nanya and T. Kawamura. Error Secure/Propagating Concept and its Application to the Design of Strongly Fault-Secure Prozessors. IEEE Transactions on Computers, 37(1):14–24, 1988” wurde ein Konzept zum Entwurf eines selbstprüfenden Prozessors vorgeschlagen. Register File (Datei) und die Kontrollvorrichtung des Prozessors sind mit Hilfe des Berger Kodes überwacht. Die ALU und die Datenbusse werden verdoppelt.In "T. Nanya and T. Kawamura. Error Secure / Propagating Concept and its Application to the Design of Strongly Fault-Secure Processors. IEEE Transactions on Computers, 37 (1): 14-24, 1988 ", a concept for designing a self-checking processor has been proposed. Register File and the Control device of the processor are monitored by means of the Berger code. The ALU and the data buses are doubled.
In „M. Y. Hsiao and F. F. Sellers. The Carry-Dependent Sum Adder. IEEE Transactions on Electronic Computers, EC-12(6):265–268, 1963”; ”E. S. Sogomonyan and V. Ocheretnij and M. Gössel. A New Code-Disjoint Sum Bit-Duplicated Carry Look-Ahead Adder for Parity Codes. Proceedings of 10th Asian Test Symposium, pages 57–62, 2001”; ”M. J. Smith. Application-Specific Integrated Circuits. Adison Wesley, Reading, MA, 1997” basiert. In „M. Y. Hsiao and F. F. Sellers. The Carry-Dependent Sum Adder. IEEE Transactions on Electronic Computers, EC-12(6):265–268, 1963” und „M. J. Smith. Application-Specific Integrated Circuits. Adison Wesley, Reading, MA, 1997” wurden spezielle Addierer-Zellen (Carry-Dependent Sum Addierer/übertragsabhängiger Summenaddierer und entsprechend Fast Ripple Addierer/schneller Riesel-Addierer) vorgeschlagen. In „E. S. Sogomonyan and V. Ocheretnij and M. Gössel. A New Code-Disjoint Sum Bit-Duplicated Carry Look-Ahead Adder for Parity Codes. Proceedings of 10th Asian Test Symposium, pages 57–62, 2001” wurde ein selbstprüfender Carry Look-Ahead Addierer präsentiert.In "M. Y. Hsiao and F.F. Sellers. The Carry-Dependent Sum Adder. IEEE Transactions on Electronic Computers, EC-12 (6): 265-268, 1963 "; "E. S. Sogomonyan and V. Ocheretnij and M. Gössel. A New Code Disjoint Sum Bit-Duplicated Carry Look-ahead adder for parity codes. Proceedings of 10th Asian Test Symposium, pages 57-62, 2001 "; "M. J. Smith. Application-Specific Integrated Circuits. Adison Wesley, Reading, MA, 1997 ". In "M. Y. Hsiao and F.F. Sellers. The Carry-Dependent Sum Adder. IEEE Transactions on Electronic Computers, EC-12 (6): 265-268, 1963 "and" M. J. Smith. Application-Specific Integrated Circuits. Adison Wesley, Reading, MA, 1997 "has proposed special add-on cells (carry-dependent sum adder / carry-dependent sum adder and correspondingly fast ripple adder / fast trickle adder). In "E. S. Sogomonyan and V. Ocheretnij and M. Gössel. A New Code Disjoint Sum Bit-Duplicated Carry Look-ahead adder for parity codes. Proceedings of 10th Asian Test Symposium, pages 57-62, 2001 "presented a self-checking Carry Look-ahead adder.
Weitere Beispiele für unterschiedliche selbstprüfende Addierer, Multiplizierer und Dividierer (siehe z. B. „E. S. Sogomonyan and M. Gössel. New Totally Self-Checking Ripple and Carry Look-Ahead Adders. Proceedings of 3rd On-Line Testing Workshop, pages 36–40, 1997”; ”E. S. Sogomonyan and V. Ocheretnij and M. Gössel. A New Code-Disjoint Sum Bit-Duplicated Carry Look-Ahead Adder for Parity Codes. Proceedings of 10th Asian Test Symposium, pages 57–62, 2001”; D. Marienfeld and E. S. Sogomonyan and V. Ocheretnij and M. Gössel. A New Self-Checking Code-Disjoint Carry Skip Adder. Proceedings of 8th IEEE International On-line Testing Workshop, 2002”; ”D. Marienfeld and V. Ocheretnij and M. Gössel and E. S. Sogomonyan. Partially Duplicated Code-Disjoint Carry Skip Adder. Proceedings of 7th IEEE International Symposium on DEFECT and FAULT TOLERANCE in VLSI Systems, pages 78–86, 2002”; ”B. S. Sogomonyan and D. Marienfeld and V. Ocheretnij and M. Gössel. A New Self-Checking Sum Bit-Duplicated Carry Select Adder. Proceedings of Design, Automation and Test in Europe Conference – DATE, pages 1360–1361, 2004”; ”E. S. Sogomonyan and D. Marienfeld and V. Ocheretnij and M. Gössel. A New Self-Checking Sum Bit-Duplicated Carry Select Adder. Proceedings of Design, Automation and Test in Europe Conference – DATE, pages 1360–1361, 2004”; ”D. Marienfeld and E. S. Sogomonyan and V. Ocheretnij and M. Gössel. New Self-Checking Output-Duplicated Booth Multiplier with High Fault Coverage for Soft Errors. Proceedings of 14th IEEE Asian Test Symposium, pages 76–81, Calcutta, 2005”; ”D. Marienfeld and E. S. Sogomonyan and V. Ocheretnij and M. Gössel. A New Self-Checking and Code-Disjoint Non-Restoring Array Divider. Proceedings of 12th IEEE International On-line Test Symposium, pages 23–28, Como, Italy, 2006”) angewandt. Allerdings sind die genannten Einsätze auf die Durchführung der entschprechenden Operation (wie Addition) beschränkt.Further examples of different self-checking adders, multipliers and dividers (see, for example, ES Sogomonyan and M. Gössel, New Totally Self-Checking Ripple and Carry Look-Ahead Adders, Proceedings of 3rd On-Line Testing Workshop, pages 36-40 , Sogomonyan and V. Ocheretnij and M. Gössel, A New Code-Disjoint Sum Bit-Duplicated Carry Look-Ahead Adder for Parity Codes Proceedings of 10th Asian Test Symposium, pages 57-62, 2001 "; Marienfeld and ES Sogomonyan and V. Ocheretnij and M. Gössel A New Self-Checking Code-Disjoint Carry Skip Adder Proceedings of 8th IEEE International On-line Testing Workshop, 2002 ";" D. Marienfeld and V. Ocheretnij and M Gössel and ES Sogomonyan Partially Duplicated Code-Disjoint Carry Skip Adder Proceedings of 7th IEEE International Symposium on DEFECT and FAULT TOLERANCE in VLSI Systems, pages 78-86, 2002 "BS Sogomonyan and D. Marienfeld and V. Ocheretnij and M. Gössel, A New Self-Che Cking Sum Bit-Duplicated Carry Select Adder. Proceedings of Design, Automation and Test in Europe Conference - DATE, pages 1360-1361, 2004 "; "E. S. Sogomonyan and D. Marienfeld and V. Ocheretnij and M. Gössel. A New Self-Checking Sum Bit-Duplicated Carry Select Adder. Proceedings of Design, Automation and Test in Europe Conference - DATE, pages 1360-1361, 2004 "; "D. Marienfeld and E. S. Sogomonyan and V. Ocheretnij and M. Gössel. New Self-Checking Duplicated Booth Multiplier with High Fault Coverage for Soft Errors. Proceedings of 14th IEEE Asian Test Symposium, pages 76-81, Calcutta, 2005 "; "D. Marienfeld and E. S. Sogomonyan and V. Ocheretnij and M. Gössel. A New Self-Checking and Code-Disjoint Non-Restoring Array Divider. Proceedings of 12th IEEE International On-line Test Symposium, pages 23-28, Como, Italy, 2006 "). However, these operations are limited to performing the corresponding operation (such as addition).
Viele der gezeigten Beispiele von selbstprüfenden integrierten Schaltungen realisieren jeweils nur eine algebraische Funktion, wie beispielsweise eine Addition. Es ist jedoch wünschenswert, eine Vielzahl von verschiedenen algebraischen Funktionen ausführen zu können.Many of the examples of self-checking integrated circuits shown each realize only one algebraic function, such as an addition. However, it is desirable to be able to perform a variety of different algebraic functions.
Die Aufgabe der vorliegenden Erfindung ist es, einen Ansatz zur Verarbeitung von binären Eingangssignalen entsprechend einer aus einer Mehrzahl auswählbaren algebraischen Funktionen zu schaffen, die es erlaubt, eine hohe Fehlererkennungswahrscheinlichkeit bei niedrigem Hardware-Aufwand zu realisieren.The object of the present invention is to provide an approach for processing binary input signals according to one of a plurality of selectable algebraic functions, which allows to realize a high error detection probability with low hardware overhead.
Diese Aufgabe wird durch eine Arithmetik-Logik-Einheit gemäß Anspruch 1 oder ein Verfahren gemäß Anspruch 19 gelöst.This object is achieved by an arithmetic logic unit according to claim 1 or a method according to claim 19.
Ein Ausführungsbeispiel gemäß der Erfindung schafft eine Arithmetik-Logik-Einheit zur Verarbeitung eines ersten binären Eingangssignals und eines zweiten binären Eingangssignals, entsprechend einer auswählbaren algebraischen Funktion. Die Arithmetik-Logik-Einheit umfasst eine Recheneinheit und einen Fehlerdetektor. Die Recheneinheit weist eine erste Gruppe von Verarbeitungsgattern, eine zweite Gruppe von Verarbeitungsgattern und eine Gruppe von Kontrollgattern auf Die erste Gruppe von Verarbeitungsgattern, die zweite Gruppe von Verarbeitungsgattern und die Gruppe von Kontrollgattern unterscheiden sich jeweils zumindest teilweise voneinander. Des Weiteren weist die erste Gruppe von Verarbeitungsgattern und die zweite Gruppe von Verarbeitungsgattern zumindest ein gemeinsames Verarbeitungsgatter auf. Die Gruppe von Kontrollgattern ist ausgelegt, um zumindest ein Verarbeitungsgatter der ersten Gruppe von Verarbeitungsgattern und zumindest ein Verarbeitungsgatter der zweiten Gruppe von Verarbeitungsgattern, basierend auf einem Kontrollsignal anzusteuern, um eine algebraische Funktion aus einer Mehrzahl von algebraischen Funktionen auszuwählen. Die erste Gruppe von Verarbeitungsgattern ist ausgelegt, um das erste binäre Eingangssignal und das zweite binäre Eingangssignal entsprechend der ausgewählten algebraischen Funktion zu verarbeiten, um ein erstes binäres Ausgangssignal zu erhalten. Des Weiteren ist die zweite Gruppe von Verarbeitungsgattern ausgelegt, um das erste binäre Eingangssignal und das zweite binäre Eingangssignal entsprechend der ausgewählten algebraischen Funktion oder entsprechend einer inversen algebraischen Funktion der ausgewählten algebraischen Funktion zu verarbeiten, um ein zweites binäres Ausgangssignal zu erhalten. Dabei entspricht das erste binäre Ausgangssignal dem zweiten binären Ausgangssignal oder einem inversen Ausgangssignal des zweiten binären Ausgangssignals, wenn die Recheneinheit fehlerfrei arbeitet. Der Fehlerdetektor ist ausgelegt, um das erste binäre Ausgangssignal mit dem zweiten binären Ausgangssignal oder mit dem inversen Ausgangssignal des zweiten binären Ausgangssignals zu vergleichen, um unabhängig von der ausgewählten algebraischen Funktion einen Fehler bei der Verarbeitung des ersten binären Eingangssignals und des zweiten binären Eingangssignals zu detektieren.An embodiment according to the invention provides an arithmetic logic unit for processing a first binary input signal and a second binary input signal, according to a selectable algebraic function. The arithmetic logic unit comprises a computing unit and an error detector. The arithmetic unit comprises a first group of processing gates, a second group of processing gates, and a group of control gates. The first group of processing gates, the second group of processing gates, and the group of control gates each differ at least partially from each other. Furthermore, the first group of processing gates and the second group of processing gates have at least one common processing gate. The set of control gates is configured to drive at least one processing gate of the first group of processing gates and at least one processing gate of the second group of processing gates based on a control signal to select an algebraic function from a plurality of algebraic functions. The first group of processing gates is configured to process the first binary input signal and the second binary input signal in accordance with the selected algebraic function to obtain a first binary output signal. Furthermore, the second group of Processing gates are adapted to process the first binary input signal and the second binary input signal according to the selected algebraic function or according to an inverse algebraic function of the selected algebraic function to obtain a second binary output signal. In this case, the first binary output signal corresponds to the second binary output signal or an inverse output signal of the second binary output signal if the arithmetic unit operates without errors. The error detector is configured to compare the first binary output signal to the second binary output signal or to the inverse output signal of the second binary output signal to detect an error in the processing of the first binary input signal and the second binary input signal, regardless of the selected algebraic function ,
Ausführungsbeispiele gemäß der Erfindung basieren auf dem Kerngedanken, durch eine teilweise Verdopplung der Verarbeitungsgatter zwei Ausgangssignale erzeugen zu können, die bei fehlerfreier Verarbeitung der Eingangssignale durch die Recheneinheit ident oder invers zueinander sind. Dadurch kann durch einen Vergleich der Ausgangssignale ein Fehler bei der Berechnung der beiden Ausgangssignale einfach festgestellt werden. Ein Fehler kann dabei unabhängig von der ausgewählten algebraischen Funktion detektiert werden.Embodiments according to the invention are based on the core idea of being able to generate two output signals by partially doubling the processing gates, which are identical or inverse to one another in the case of error-free processing of the input signals by the arithmetic unit. As a result, an error in the calculation of the two output signals can be easily determined by comparing the output signals. An error can be detected independently of the selected algebraic function.
Durch die nur teilweise Verdopplung der Verarbeitungsgatter kann der Hardwareaufwand im Vergleich zu komplett verdoppelten Systemen bei nahezu oder gleichen Fehlererkennungseigenschaften deutlich reduziert werden. Im Vergleich zu Code-basierten Fehlererkennungssystemen kann durch einen kleinen Hardware-Mehraufwand die Fehlererkennungswahrscheinlichkeit deutlich erhöht werden. Dadurch kann insgesamt eine hohe Fehlererkennungswahrscheinlichkeit bei vergleichsweise niedrigem Hardware-Mehraufwand erreicht werden.By only partially doubling the processing gates, the hardware outlay can be significantly reduced compared to completely duplicated systems with nearly identical fault detection characteristics. In comparison to code-based error detection systems, the error detection probability can be significantly increased by a small additional hardware overhead. As a result, overall a high error detection probability can be achieved with comparatively low hardware overhead.
Bei einigen Ausführungsbeispielen gemäß der Erfindung ist die Recheneinheit ausgelegt, um ein Hilfsausgangssignal, basierend auf einem Ausgangssignal eines gemeinsamen Verarbeitungsgatters der ersten Gruppe von Verarbeitungsgattern und der zweiten Gruppe von Verarbeitungsgattern, bereitzustellen. Das Hilfsausgangssignal wird beispielsweise durch eine andere Recheneinheit oder durch eine Übertragsvorausberechnungseinheit weiterverarbeitet. Da ein Fehler eines gemeinsamen Verarbeitungsgatters der ersten Gruppe von Verarbeitungsgattern und der zweiten Gruppe von Verarbeitungsgattern sich sowohl auf das erste binäre Ausgangssignal als auf das zweite binäre Ausgangssignal auswirken würde, kann ein solcher Fehler beispielsweise basierend auf dem Hilfsausgangssignal detektiert werden.In some embodiments according to the invention, the arithmetic unit is configured to provide an auxiliary output signal based on an output of a common processing gate of the first group of processing gates and the second group of processing gates. The auxiliary output signal is further processed, for example, by another arithmetic unit or by a carry pre-computation unit. Since an error of a common processing gate of the first group of processing gates and the second group of processing gates would affect both the first binary output signal and the second binary output signal, such an error may be detected based on the auxiliary output signal, for example.
Ausführungsbeispiele gemäß der Erfindung werden nachfolgend Bezug nehmend auf die beiliegenden Figuren näher erläutert. Es zeigen:Embodiments according to the invention are explained below with reference to the accompanying figures. Show it:
1 ein Blockschaltbild einer Arithmetik-Logik-Einheit zur Verarbeitung eines ersten binären Eingangssignals und eines zweiten binären Eingangssignals entsprechend einer auswählbaren algebraischen Funktion; 1 a block diagram of an arithmetic logic unit for processing a first binary input signal and a second binary input signal according to a selectable algebraic function;
2 eine allgemeine Struktur einer selbstprüfenden Arithmetik-Logik-Einheit; 2 a general structure of a self-checking arithmetic logic unit;
3 ein Blockschaltbild einer Arithmetik-Logik-Einheit; 3 a block diagram of an arithmetic logic unit;
4 ein Blockschaltbild einer Arithmetik-Logik-Einheit; 4 a block diagram of an arithmetic logic unit;
5 ein Blockschaltbild einer Arithmetik-Logik-Einheit; 5 a block diagram of an arithmetic logic unit;
6 ein Blockschaltbild einer Arithmetik-Logik-Einheit; 6 a block diagram of an arithmetic logic unit;
7 ein Flussdiagramm eines Verfahren zur Verarbeitung eines ersten binären Eingangssignals und eines zweiten binären Eingangssignals entsprechend einer auswählbaren algebraischen Funktion; 7 a flowchart of a method for processing a first binary input signal and a second binary input signal according to a selectable algebraic function;
8 ein Blockschaltbild einer Addierer-Zelle Ai eines selbstprüfenden Summenbit-verdoppelten Paralleladdierers mit Übertragsvorausberechnung; 8th a block diagram of an adder cell A i of a self-verifying sum bit double parallel adder with carry advance calculation;
9 ein Blockschaltbild von Addierer-Zellen eines selbstprüfenden Fast Ripple-Addierers (schnellen Riesel-Addierers); 9 a block diagram of adder cells of a self-checking fast ripple adder (fast trickle adder);
10 ein Blockschaltbild einer Addierer-Zelle eines selbstprüfenden Standard-Ripple-Addierers (schnellen Riesel-Addierers); und 10 a block diagram of an adder cell of a standard self-testing ripple adder (fast trickle adder); and
11 ein Blockschaltbild einer Arithmetik-Logik-Einheit. 11 a block diagram of an arithmetic logic unit.
Im Folgenden werden teilweise für Objekte und Funktionseinheiten, die gleiche oder ähnliche funktionelle Eigenschaften aufweisen, gleiche Bezugszeichen verwendet. Des Weiteren können optionale Merkmale der verschiedenen Ausführungsbeispiele miteinander kombinierbar oder zueinander austauschbar sein.Hereinafter, the same reference numerals are used in part for objects and functional units having the same or similar functional properties. Furthermore, optional features of the various embodiments may be combined with each other or interchangeable.
1 zeigt ein Blockschaltbild einer Arithmetik-Logik-Einheit 100 zur Verarbeitung eines ersten binären Eingangssignals ai und eines zweiten binären Eingangssignals bi entsprechend einer auswählbaren algebraischen Funktion gemäß einem Ausführungsbeispiel der Erfindung. Die Arithmetik-Logik-Einheit 100 umfasst eine Recheneinheit 110, verbunden mit einem Fehlerdetektor 120. Die Recheneinheit 110 weist eine erste Gruppe von Verarbeitungsgattern, eine zweite Gruppe von Verarbeitungsgattern und eine Gruppe von Kontrollgattern auf. Die erste Gruppe von Verarbeitungsgattern, die zweite Gruppe von Verarbeitungsgattern und die Gruppe von Kontrollgattern unterscheidet sich jeweils zumindest teilweise voneinander. Zusätzlich weist die erste Gruppe von Verarbeitungsgattern und die zweite Gruppe von Verarbeitungsgattern zumindest ein gemeinsames Verarbeitungsgatter auf. Die Gruppe von Kontrollgattern steuert zumindest ein Verarbeitungsgatter der ersten Gruppe von Verarbeitungsgattern und zumindest ein Verarbeitungsgatter der zweiten Gruppe von Verarbeitungsgattern, basierend auf einem Kontrollsignal mi an, um eine algebraische Funktion aus einer Mehrzahl von algebraischen Funktionen auszuwählen. Des Weiteren verarbeitet die erste Gruppe von Verarbeitungsgattern das erste binäre Eingangssignal ai und das zweite binäre Eingangssignal bi entsprechend der ausgewählten algebraischen Funktion, um ein erstes binäres Ausgangssignal si zu erhalten. Die zweite Gruppe von Verarbeitungsgattern verarbeitet das erste binäre Eingangssignal ai und das zweite binäre Eingangssignal bi entsprechend der ausgewählten algebraischen Funktion oder entsprechend einer inversen algebraischen Funktion der ausgewählten algebraischen Funktion, um ein zweites binäres Ausgangssignal s i zu erhalten. Das erste binäre Ausgangssignal entspricht dem zweiten binären Ausgangssignal oder einem inversen Ausgangssignal des zweiten binären Ausgangssignals, wenn die Recheneinheit 110 fehlerfrei arbeitet. Der Fehlerdetektor 120 vergleicht das erste binäre Ausgangssignal si mit dem zweiten binären Ausgangssignal s i oder mit dem inversen Ausgangssignal des zweiten binären Ausgangssignals s i , um unabhängig von der ausgewählten algebraischen Funktion einen Fehler 124 bei der Verarbeitung des ersten binären Eingangssignals ai und des zweiten binären Eingangssignals bi zu detektieren. 1 shows a block diagram of an arithmetic logic unit 100 for processing a first binary input signal a i and a second binary input signal b i according to a selectable algebraic function according to an embodiment of the invention. The arithmetic logic unit 100 includes a computing unit 110 connected to an error detector 120 , The arithmetic unit 110 has a first group of processing gates, a second group of processing gates, and a group of control gates. The first group of processing gates, the second group of processing gates, and the group of control gates are each at least partially different from each other. In addition, the first group of processing gates and the second group of processing gates have at least one common processing gate. The group of control gates drives at least one processing gate of the first group of processing gates and at least one processing gate of the second group of processing gates based on a control signal m i to select an algebraic function from a plurality of algebraic functions. Furthermore, the first group of processing gates processes the first binary input signal a i and the second binary input signal b i according to the selected algebraic function to obtain a first binary output signal s i . The second group of processing gates processes the first binary input signal a i and the second binary input signal b i according to the selected algebraic function or according to an inverse algebraic function of the selected algebraic function to a second binary output signal s i to obtain. The first binary output signal corresponds to the second binary output signal or an inverse output signal of the second binary output signal when the arithmetic unit 110 works without errors. The error detector 120 compares the first binary output signal s i with the second binary output signal s i or with the inverse output signal of the second binary output signal s i to make a mistake regardless of the selected algebraic function 124 in the processing of the first binary input signal a i and the second binary input signal b i .
Unter dem Begriff algebraische Funktion sind in diesem Zusammenhang beispielsweise logische Funktionen, wie z. B. eine UND-Verknüpfung, eine ODER-Verknüpfung, eine EXKLUSIV-ODER-Verknüpfung, eine NICHT-UND-Verknüpfung, eine NICHT-ODER-Verknüpfung oder eine EXKLUSIV-NICHT-ODER-Verknüpfung, oder arithmetische Funktionen, wie z. B. eine Addition, eine Subtraktion, eine Multiplikation oder eine Division sowie deren inverse oder negierte Funktion.The term algebraic function in this context, for example, logical functions such. For example, an AND, an OR, an EXCLUSIVE OR, a NAND, a NOR, or an EXCLUSIVE NON-OR, or arithmetic functions, such. As an addition, a subtraction, a multiplication or a division and their inverse or negated function.
Verarbeitungsgatter und Kontrollgatter sind Logikgatter und können von unterschiedlichem Typ, wie beispielsweise ein UND-Gatter (AND-Gatter), ein ODER-Gatter (OR-Gatter), ein NICHT-Gatter (NOT-Gatter), ein NICHT-UND-Gatter (NAND-Gatter), ein NICHT-ODER-Gatter (NOR-Gatter), ein EXKLUSIV-ODER-Gatter (XOR-Gatter) oder ein EXKLUSIV-NICHT-ODER-Gatter (XNOR-Gatter), sein. Ein Logik-Gatter kann ausschließlich der ersten Gruppe von Verarbeitungsgattern, ausschließlich der zweiten Gruppe von Verarbeitungsgattern oder ausschließlich der Gruppe von Kontrollgattern angehören, kann zwei der drei erwähnten Gruppen angehören oder kann allen drei Gruppen angehören. Zusätzlich kann die Recheneinheit 110 weitere Logikgatter umfassen, die keiner der drei Gruppen angehören, und beispielsweise dazu dienen, ein oder mehrere Hilfsgrößen zu berechnen und als Ausgangssignale an Ausgängen der Recheneinheit 110 bereitzustellen.Processing gates and control gates are logic gates and may be of different types, such as an AND gate (AND gate), an OR gate (OR gate), a NOT gate, a NAND gate ( NAND gate), a NOR gate (NOR gate), an EXOR gate (XOR gate), or an EXCLUSIVE-NOR gate (XNOR gate). A logic gate may belong exclusively to the first group of processing gates, excluding the second group of processing gates or only to the group of control gates, may belong to two of the three mentioned groups, or may belong to all three groups. In addition, the arithmetic unit 110 include further logic gates that do not belong to any of the three groups, and serve, for example, to calculate one or more auxiliary quantities and as outputs to outputs of the arithmetic unit 110 provide.
Ein Logikgatter gehört beispielsweise der ersten Gruppe von Verarbeitungsgattern an, wenn es im Verarbeitungspfad zwischen einem Eingang der Recheneinheit 110 an dem ein Eingangssignal, wie z. B. das ersten binären Eingangssignal ai, das zweiten binären Eingangssignal bi oder das Kontrollsignal mi, bereitgestellt wird und dem Ausgang des ersten binären Ausgangssignals si der Recheneinheit 110 angeordnet ist. Genauso gehört ein Logikgatter der z. B. zweiten Gruppe von Verarbeitungsgattern an, wenn das Logikgatter in dem Verarbeitungspfad des zweiten binären Ausgangssignals s i zwischen einem Eingang der Recheneinheit 110 an dem ein Eingangssignal bereitgestellt wird und dem Ausgang des zweiten binären Ausgangssignals s i der Recheneinheit 110 angeordnet ist. Des Weiteren kann ein Logikgatter beispielsweise der Gruppe von Kontrollgattern zugeordnet werden, wenn zumindest ein Eingang des Logikgatters ausschließlich von einem oder mehreren Kontrollsignalen mi abhängt.For example, a logic gate is associated with the first group of processing gates when in the processing path between an input of the computing unit 110 on which an input signal, such. B. the first binary input signal a i , the second binary input signal b i or the control signal m i , is provided and the output of the first binary output signal s i of the arithmetic unit 110 is arranged. Likewise, a logic gate of z. B. second group of processing gates when the logic gate in the processing path of the second binary output signal s i between an input of the arithmetic unit 110 where an input signal is provided and the output of the second binary output signal s i the arithmetic unit 110 is arranged. Furthermore, a logic gate may for example be assigned to the group of control gates if at least one input of the logic gate depends exclusively on one or more control signals m i .
Durch die gemeinsame Verwendung von einem Teil der Verarbeitungsgatter der ersten Gruppe von Verarbeitungsgattern und der zweiten Gruppe von Verarbeitungsgattern, um das erste binäre Ausgangssignal si und das zweite binäre Ausgangssignal s i zu erhalten, kann der Hardwareaufwand im Vergleich zu einer kompletten Verdopplung der Arithmetik-Logik-Einheit bei gleich bleibender oder nahezu gleich bleibender Fehlerdetektionswahrscheinlichkeit deutlich reduziert werden. Im Vergleich zu ausschließlich codebasierten Fehlererkennungssystemen kann die Fehlerdetektionswahrscheinlichkeit unter geringem zusätzlichen Hardwareaufwand deutlich erhöht werden.By sharing a portion of the processing gates of the first group of processing gates and the second group of processing gates, the first binary output signal s i and the second binary output signal s i To get the hardware cost compared to a complete doubling of the arithmetic logic unit can be significantly reduced with a constant or nearly constant error detection probability. Compared to only code-based error detection systems, the error detection probability can be significantly increased with little additional hardware.
Da das erste binäre Ausgangssignal s i dem zweiten binären Ausgangssignal s i oder dem inversen zweiten binären Ausgangssignal s i entspricht, kann ein Fehler 124 durch den Fehlerdetektor 120 durch einen Vergleich sehr einfach festgestellt werden. Erzeugt die zweite Gruppe von Verarbeitungsgattern das zweite binäre Ausgangssignal s i , basierend auf der inversen algebraischen Funktion der ausgewählten algebraischen Funktion kann die Recheneinheit 110 gleichzeitig das Ergebnis von zwei unterschiedlichen algebraischen Funktionen bereitstellen. Diese zusätzliche Funktionalität stellt gegenüber codebasierten Fehlererkennungssystemen ohne teilweiser Verdopplung und Systemen mit kompletter Verdopplung einen zusätzlichen Vorteil dar.Because the first binary output signal s i the second binary output signal s i or the inverse second binary output signal s i equivalent, can be a mistake 124 through the error detector 120 be easily determined by comparison. The second group of processing gates generates the second binary output signal s i , based on the inverse algebraic function of the selected algebraic function, the arithmetic unit 110 simultaneously provide the result of two different algebraic functions. This additional functionality provides an additional advantage over code-based error detection systems without partial duplication and systems with complete duplication.
So kann beispielsweise am Ausgang des ersten binären Ausgangssignals si eine Addition, eine logische UND-Verknüpfung, eine logische ODER-Verknüpfung und/oder eine logische EXKLUSIV-ODER-Verknüpfung realisiert werden und im Gegenzug am Ausgang des zweiten binären Ausgangssignals s i eine inverse Addition, eine NICHT-UND-Verknüpfung, eine NICHT-ODER-Verknüpfung und/oder eine EXKLUSIV-NICHT-ODER-Verknüpfung realisiert werden.Thus, for example, at the output of the first binary output signal s i an addition, a logical AND, a logical OR operation and / or a logical EXCLUSIVE OR operation can be realized and in turn at the output of the second binary output signal s i an inverse addition, a NAND-operation, a NOR-operation and / or an EXCLUSIVE-NOT-OR-operation are realized.
Das erste binäre Ausgangssignal entspricht nach jedem Rechentakt (z. B. Arbeitstakt der Recheneinheit) dem zweiten binären Ausgangssignal oder nach jedem Rechentakt einem inversen Ausgangssignal des zweiten binären Ausgangssignal, wenn die Recheneinheit fehlerfrei arbeitet. Dies kann jedoch auch der Fall sein, wenn beide Ausgangssignale fehlerhaft sind (z. B. wenn die Recheneinheit zwei Fehler aufweist, wobei jeder Fehler ein Ausgangssignal verändert). Solche Fehler können z. B. durch Implementierung von weiteren Fehlererkennungsmechanismen erkannt werden.The first binary output signal corresponds to the second binary output signal or to an inverse output signal of the second binary output signal after every calculation clock (eg operating cycle of the arithmetic unit) if the arithmetic unit operates without error. However, this may also be the case if both output signals are faulty (eg if the arithmetic unit has two errors, each error changing an output signal). Such errors can z. B. be recognized by implementation of other error detection mechanisms.
In einigen Ausführungsbeispielen gemäß der Erfindung stellt die Recheneinheit 110 ein Hilfsausgangssignal, basierend auf einem Ausgangssignal eines gemeinsamen Verarbeitungsgatters der ersten Gruppe von Verarbeitungsgattern und der zweiten Gruppe von Verarbeitungsgattern bereit. Dadurch kann beispielsweise basierend auf dem Hilfsausgangssignal auch ein Fehler eines gemeinsamen Verarbeitungsgatters erkannt werden, der sonst anhand des ersten binären Ausgangssignals si und des zweiten binären Ausgangssignals s i nicht erkennbar wäre.In some embodiments according to the invention, the arithmetic unit 110 an auxiliary output signal based on an output of a common processing gate of the first group of processing gates and the second group of processing gates. As a result, for example based on the auxiliary output signal, an error of a common processing gate can also be detected, which would otherwise be based on the first binary output signal s i and the second binary output signal s i would not be recognizable.
Wird für jedes gemeinsame Verarbeitungsgatter der ersten Gruppe von Verarbeitungsgattern und der zweiten Gruppe von Verarbeitungsgattern je ein Hilfsausgangssignal, basierend auf dem Ausgangssignal des jeweiligen gemeinsamen Verarbeitungsgatters bereitgestellt, kann ein Fehler in jedem der gemeinsamen Verarbeitungsgatter über das Hilfsausgangssignal detektiert werden.If an auxiliary output signal based on the output signal of the respective common processing gate is provided for each common processing gate of the first group of processing gates and the second group of processing gates, an error in each of the common processing gates may be detected via the auxiliary output signal.
Ein Hilfsausgangssignal kann beispielsweise ein so genanntes Übertragssignal, ein Propagiere-Signal oder ein Generiere-Signal sein. Solche Signale können auch zum Beispiel von optionalen, zusätzlichen Verarbeitungseinheiten der Arithmetik-Logik-Einheit, wie beispielsweise einer Übertragsvorausberechnungseinheit, weiterverarbeitet werden.An auxiliary output signal may be, for example, a so-called carry signal, a propagate signal or a generate signal. Such signals may also be further processed, for example, by optional additional processing units of the arithmetic logic unit, such as a carry pre-computation unit.
In einigen Ausführungsbeispielen gemäß der Erfindung können die Hilfsausgangssignale zur Berechnung von Überträgen oder zur Vorausberechnung von Übertragen verwendet werden.In some embodiments according to the invention, the auxiliary output signals may be used to calculate carry-outs or to predict carry-over.
Einige Ausführungsbeispiele gemäß der Erfindung beziehen sich auf eine Arithmetik-Logik-Einheit, die eine Mehrzahl von Recheneinheiten aufweist. Jede Recheneinheit der Mehrzahl von Recheneinheiten verarbeitet ein erstes binäres Eingangssignal und ein zweites binäres Eingangssignal. Beispielsweise stellt dabei jedes erste binäre Eingangssignal ein Bit eines ersten parallelen Eingangssignals mit n-parallelen Bits dar und jedes zweite binäre Eingangssignal ein Bit eines zweiten parallelen Eingangssignals mit n-parallelen Bits dar. Zum Beispiel kann sich das erste parallele Eingangssignal aus 8 parallelen Bits und das zweite parallele Eingangssignal ebenfalls aus 8 parallelen Bits zusammen setzen. Je ein Bit des ersten parallelen Eingangssignals und des zweiten parallelen Eingangssignals wird dann durch eine Recheneinheit der Arithmetik-Logik-Einheit verarbeitet, um ein erstes binäres Ausgangssignal und ein zweites binäres Ausgangssignal zu erhalten. Es werden also acht Recheneinheiten zur parallelen Verarbeitung benötigt. Die Summe der ersten binären Ausgangssignale der Recheneinheiten ergibt dann ein erstes paralleles Ausgangssignal mit 8 parallelen Bits und die Summe der zweiten binären Ausgangssignale der Recheneinheiten ergeben ein zweites paralleles Ausgangssignal mit wiederum 8 parallelen Bits. An Stelle von 8 parallelen Bits können die parallelen Eingangssignale und die parallelen Ausgangssignale auch eine beliebige andere Anzahl von parallelen Bits, wie z. B. 16, 32 oder 64 Bit, aufweisen.Some embodiments according to the invention relate to an arithmetic logic unit having a plurality of arithmetic units. Each arithmetic unit of the plurality of arithmetic units processes a first binary input signal and a second binary input signal. For example, each first binary input signal represents one bit of a first parallel input signal with n-parallel bits and every other binary input signal represents one bit of a second parallel input signal with n-parallel bits. For example, the first parallel input signal may consist of 8 parallel bits and the second parallel input signal also composed of 8 parallel bits together. One bit each of the first parallel input signal and the second parallel input signal is then processed by a computation unit of the arithmetic logic unit to obtain a first binary output signal and a second binary output signal. Thus, eight arithmetic units are needed for parallel processing. The sum of the first binary output signals of the arithmetic units then gives a first parallel output signal with 8 parallel bits and the sum of the second binary output signals of the arithmetic units result in a second parallel output signal again having 8 parallel bits. Instead of 8 parallel bits, the parallel Input signals and the parallel output signals also any other number of parallel bits, such. B. 16, 32 or 64 bits.
Einige Ausführungsbeispiele der Erfindung beziehen sich eine selbstprüfende Arithmetik-Logik-Einheit.Some embodiments of the invention relate to a self-checking arithmetic logic unit.
Nicht jede Schaltung mit Fehlererkennungseigenschaften ist selbstprüfend (in Engl. self-checking). Es gibt eine Definition von self-checking. Um die Qualität einer Fehlerdetektion durch gleichzeitige Überprüfung zu quantifizieren werden für Schaltungen mit gleichzeitiger Überprüfung die Begriffe selbsttestend, fehlergeschützt und vollkommen selbstprüfend verwendet.Not every circuit with error detection properties is self-checking. There is a definition of self-checking. To quantify the quality of error detection by simultaneous verification, the terms self-testing, error-protected and fully self-checking are used for circuits with simultaneous verification.
Bei selbsttestenden Schaltungen gibt es z. B. für jeden modellierten Fehler einen Eingangsvektor, der unter normalem Betrieb einen Ausgangsvektor erzeugt, der nicht zu einem Ausgangskode gehört. Bei fehlergeschützten Schaltungen wird z. B. für jeden modellierten Fehler eine fehlerhafte Ausgabe erzeugt, die nicht zu dem Ausgangskode gehört. Des Weiteren ist eine Schaltung z. B. vollkommen selbstprüfend, wenn sie selbsttestend und fehlergeschützt ist.For self-testing circuits, there are z. For example, for each modeled error, an input vector that generates an output vector under normal operation that does not belong to an output code. For fault-protected circuits z. For example, for each modeled error, erroneous output is generated that does not belong to the output code. Furthermore, a circuit z. B. completely self-checking, if it is self-testing and error-protected.
2 zeigt eine allgemeine Struktur einer Arithmetik-Logik-Einheit 200, entsprechend einem Ausführungsbeispiel gemäß der Erfindung. 2 shows a general structure of an arithmetic logic unit 200 , according to an embodiment according to the invention.
Die Eingangssignale, auch Eingangsoperanden oder Input-Operanden a = (a0, ...,an-1) und b = (b0, ..., bn-1) genannt, haben die Länge von n Bits. Dabei sind an-1 und bn-1 z. B. die Bits mit dem höchsten Stellenwert (MSBs, most significant bits). Außerdem ist in diesem Beispiel angenommen, dass die Operanden a und b paritätskodiert sind und pa (pa = a0 ⊕...⊕ an-1) und pb (pb = b0 ⊕...⊕ bn-1) die entsprechenden Paritätsbits sind. Falls die Operanden nicht kodiert sind, können die Paritätsbits mit Hilfe zwei XOR-Bäumen jeweils von der Länge n – 1 mit XOR-Gatter bestimmt werden.The input signals, also called input operands or input operands a = (a 0 ,..., A n-1 ) and b = (b 0 ,..., B n-1 ), have the length of n bits. Here, a n-1 and b n-1 z. For example, the most significant bits (MSBs). In addition, in this example, it is assumed that the operands a and b are parity-coded and p a (p a = a 0 ⊕ ... ⊕ a n-1 ) and p b (p b = b 0 ⊕ ... ⊕ b n -1 ) are the corresponding parity bits. If the operands are not encoded, the parity bits can be determined with the aid of two XOR trees each of length n-1 with an XOR gate.
Die Operanden a und b werden an die Eingänge der recheneinheiten, auch ALU-Zellen A0, ..., An-1 genannt, angelegt. Mit Hilfe von Kontrollsignalen m1, ..., mk wird eine (arithmetische oder logische) Operation ausgewählt, die ausgeführt werden soll. Die ALU-Zelle Ai, i = 0, ..., n – 1, implementiert in diesem Beispiel sowohl die Operation als auch die entsprechende inverse Operation. Die ausgewählte Operation und die inverse Operation werden am Ausgang si beziehungsweise am Ausgang s i implementiert. Außerdem gibt die ALU-Zelle Ai das Propagiere-Signal pi (Propagate-Signal, pi = ai ⊕ bi) aus. Die Propagiere-Signale aller ALU-Zellen werden modulo 2 summiert. Die Summe bildet die Parität p(a ⊕ b) der Input-Operanden a und b (p(a ⊕ b) = p0 ⊕...⊕ pn-1 = a0 ⊕ b0 ⊕...⊕ an-1 ⊕ bn-1).The operands a and b are applied to the inputs of the computation units, also called ALU cells A 0 ,..., A n-1 . With the aid of control signals m 1 ,..., M k , an (arithmetic or logical) operation is selected which is to be executed. The ALU cell A i , i = 0, ..., n-1, implements both the operation and the corresponding inverse operation in this example. The selected operation and the inverse operation are at the output s i and at the output, respectively s i implemented. In addition, the ALU cell A i outputs the propagation signal p i (propagate signal, p i = a i ⊕ b i ). The propagation signals of all ALU cells are summed modulo 2. The sum constituting the parity p (a ⊕ b) of the input operands A and B (p (a ⊕ b) = p 0 ⊕ ... ⊕ p n-1 = a 0 ⊕ b 0 ⊕ ... ⊕ a n -1 ⊕ b n-1 ).
Um die Fehler zu erkennen, wird die Ausgabe s = (s0, ..., sn-1) mit der Ausgabe s = (s 0, ..., s n-1) bitweise verglichen. Im Fall si = s i wird ein Fehler erkannt. Der Vergleich wird beispielsweise mit Hilfe eines selbstprüfenden Komparator 120 durchgeführt. In „W. C. Carter and P. R. Schneider, ”Design of dynamically checked cmputers,” in JFIP Congress, (Edinburg, Scotland), pp. 878–883, 1968.” wird ein Two-Rail Checker (Zweiwegprüfeinheit) dargestellt. Eine nützliche Eigenschaft dieses Komparators ist, dass einer seiner Ausgänge r1, r2, beispielsweise r1, die Parität seiner Eingabe s implementiert.To detect the errors, the output s = (s 0 , ..., s n-1 ) with the output s = ( s 0 , ..., s n-1 ) bitwise compared. In the case s i = s i an error is detected. The comparison is made, for example, by means of a self-checking comparator 120 carried out. In "WC Carter and PR Schneider," Design of dynamically checked cmputers, "in JFIP Congress, (Edinburg, Scotland), pp. 878-883, 1968. "a two-rail checker is shown. A useful feature of this comparator is that one of its outputs r 1 , r 2 , for example r 1 , implements the parity of its input s.
Eine mögliche Alternative ist ein selbstprüfende Komparator mit einem periodischen Ausgang, wie z. B. in „S. Kundu, E. S. Sogomonyan, M. Gössel, and S. Tarnick, ”Self-Checking Comparator with One Periodic Output,” IEEE Transactions on Computers, vol. C-45, no. 3, pp. 379–380, 1996.” gezeigt. Um die Fehler in den Operanden a und b und die Fehler in den Propagiere-Signalen zu erkennen, wird die Parität p(a ⊕ b) mit der XOR-Summe der Paritätsbits pa und pb verglichen.A possible alternative is a self-checking comparator with a periodic output, such. In "S. Kundu, ES Sogomonyan, M. Gössel, and S. Tarnick, "Self-Checking Comparator with One Periodic Output," IEEE Transactions on Computers, vol. C-45, no. 3, pp. 379-380, 1996. ". In order to detect the errors in the operands a and b and the errors in the propagation signals, the parity p (a ⊕ b) is compared with the XOR sum of the parity bits p a and p b .
Weil nur ein Teil der ALU 200 verdoppelt wird, kann die Struktur der beschriebenen selbstprüfenden ALU 200 der Methode der partiellen Verdopplung zugerechnet werden.Because only part of the ALU 200 can be doubled, the structure of the described self-testing ALU 200 be attributed to the method of partial doubling.
In einigen Ausführungsbeispielen gemäß der Erfindung sind die Verarbeitungsgatter der ersten Gruppe von Verarbeitungsgattern, die Verarbeitungsgatter der zweiten Gruppe von Verarbeitungsgattern und die Kontrollgatter der Gruppe von Kontrollgattern miteinander verbunden, so dass ein Einzelfehler eines Gatters der ersten Gruppe, der zweiten Gruppe oder der Kontrollgruppe durch den Fehlerdetektor 120 detektiert werden kann. In anderen Worten, tritt an einer Stelle in der Recheneinheit ein Fehler auf, wird das erste binäre Ausgangssignal si oder das zweite binäre Ausgangssignal s i so verändert, dass der Fehlerdetektor einen Fehler 124 detektiert. Die Logikgatter der drei Gruppen können beispielsweise so integriert werden, dass ein Einzelfehler detektiert werden kann, unabhängig davon, bei welchem Gatter der ersten Gruppe, der zweiten Gruppe oder der Kontrollgruppe der Einzelfehler auftritt.In some embodiments according to the invention, the processing gates of the first group of processing gates, the processing gate of the second group of processing gates and the control gate of the group of control gates are interconnected so that a single error of a gate of the first group, the second group or the control group is determined by the error detector 120 can be detected. In other words, if an error occurs at a position in the arithmetic unit, the first binary output signal becomes s i or the second binary output signal s i changed so that the error detector an error 124 detected. The logic gates of the three groups can be integrated, for example, so that a single error can be detected, regardless of which gate of the first group, the second group or the control group of individual errors occurs.
Ein Gatter besteht z. B. aus mehreren Transistoren, die miteinander verbunden sind, wobei einer oder mehrere der Transistoren fehlerhaft sein können. Ein fehlerhafter Transistor kann des Gatterausgang verfälschen. Ebenso verfälschen mehrere fehlerhafte Transistoren eines Gatters den Gatterausgang. Beides kann als Einzelfehler eines Gatters angesehen werden, da sich der Begriff Einzelfehler auf einen fehlerhaften Gatterausgang bezieht. Treten hingegen Fehler an mehr als einem Gatter auf spricht man z. B. von Mehrfachfehlern. A gate is z. Example, of a plurality of transistors which are interconnected, wherein one or more of the transistors may be faulty. A faulty transistor can corrupt the gate output. Likewise, a plurality of faulty transistors of a gate distort the gate output. Both can be regarded as a single fault of a gate, since the term single fault refers to a faulty gate output. If, on the other hand, errors occur in more than one gate, one speaks for example. B. of multiple errors.
Des Weiteren kann auch ein Fehler bei den elektrischen Verbindungen der Gatter untereinander und der Gatter mit den Eingängen und Ausgängen der Recheneinheit sowie bei den Eingänge und Ausgänge selbst auftreten. Tritt z. B. an nur einer Verbindung ein Fehler auf kann dieser ebenfalls als Einzelfehler bezeichnet werden. Tritt ein Fehler beispielsweise an mehreren Verbindungen auf oder an einer Verbindung und einem Gatter kann man wiederum von Mehrfachfehlern sprechen.Furthermore, a fault in the electrical connections of the gates with each other and the gate with the inputs and outputs of the arithmetic unit as well as at the inputs and outputs themselves occur. For example, B. on only one connection an error on this can also be referred to as a single error. If an error occurs, for example, at several connections or at a connection and a gate, one can again speak of multiple errors.
Einige Ausführungsbeispiele implementieren am Ausgang s (als erstes binäres Ausgangssignal) die Funktionen ADD (Addition), AND, OR und XOR und am Ausgang s (als zweites binäres Ausgangssignal) die inversen Funktionen ADD , NAND, NOR und XNOR. Im Folgenden wird die Implementierung der oben genannten arithmetischen und logischen Operatoren in der ALU-Zelle Ai, i = 0, ..., n – 1, detailliert betrachtet:Some embodiments implement at the output s (as a first binary output signal) the functions ADD (addition), AND, OR and XOR and at the output s (as second binary output) the inverse functions ADD , NAND, NOR and XNOR. In the following, the implementation of the abovementioned arithmetic and logical operators in the ALU cell A i , i = 0,..., N-1, is considered in detail:
Implementierung der Addition ADD am Ausgang si:Implementation of the addition ADD at the output s i :
Die Operation kann z. B. nach der bekannten Formel für die binäre Addition implementiert werden: si = ai ⊕ bi ⊕ ci-1, (1) wobei ci-1 Input-Übertragssignal (carry signal) und ai ⊕ bi = pi das Propagiere-Signal (Propagate-Signal) ist. Die Kombinatorik, die die Addition implementiert, kann für die Implementierung der AND, OR und XOR Funktionen wiederbenutzt werden.The operation can z. B. be implemented according to the known formula for the binary addition: s i = a i ⊕b i ⊕c i-1 , (1) wherein c i-1 input carry signal (carry signal) and a i ⊕ b i = p i is the propagate signal (propagate signal). The combinatorics that implement the addition can be reused to implement the AND, OR and XOR functions.
Implementierung der AND-Funktion (UND-Funktion, UND-Verknüpfung) am Ausgang si:Implementation of the AND function (AND function, AND operation) at the output s i :
Durch eine Steuerlogik (Kontrolllogik), die mit Hilfe der Kontrollsignalen m1, ..., mk gesteuert wird, kann z. B. der Input bi invertiert und mit dem Propagiere-Signal pi verodert (entsprechend einer ODER-Funktion verarbeitet) werden. Das resultierende Signal wird durch die Steuerlogik anschließend negiert, indem ci-1 auf „1” gesetzt wird. An Stelle von bi kann auch der Input ai verwendet werden.By a control logic (control logic), which is controlled by means of the control signals m 1 , ..., m k , z. B. the input b i inverted and with the propagate signal p i ORER (processed according to an OR function). The resulting signal is then negated by the control logic by setting c i-1 to "1". Instead of b i , the input a i can also be used.
Implementierung der OR-Funktion (ODER-Funktion, ODER-Verknüpfung) am Ausgang si:Implementation of the OR function (OR function, OR operation) at the output s i :
Durch eine Steuerlogik (Kontrolllogik), die mit Hilfe der Kontrollsignalen m1, ..., mk gesteuert wird, kann z. B. der Input bi mit dem Propagiere-Signal pi verodert werden. ci-1 wird von der Steuerlogik auf „0” gesetzt. An Stelle von bi kann auch der Input ai verwendet werden. (bi ∨ ai ⊕ bi) ⊕ 0 = bi ∨ pi = ai ∨ bi oder ai ∨ pi = ai ∨ bi By a control logic (control logic), which is controlled by means of the control signals m 1 , ..., m k , z. B. the input b i with the propagate signal p i are ORed. c i-1 is set to "0" by the control logic. Instead of b i , the input a i can also be used. (b i ∨ a i ⊕b i ) ⊕ 0 = b i ∨ p i = a i ∨ b i or a i ∨ p i = a i ∨ b i
Implementierung der XOR-Funktion (XOR-Verknüpfung) am Ausgang si:Implementation of the XOR function (XOR operation) at the output s i :
Durch eine Steuerlogik, die mit Hilfe der Kontrollsignalen m1, ..., mk gesteuert wird, kann z. B. das Signal ci-1 „0” gesetzt werden. ai ⊕ bi ⊕ 0 = ai ⊕ bi By a control logic, which is controlled by means of the control signals m 1 , ..., m k , z. B. the signal c i-1 "0" are set. a i ⊕b i ⊕ 0 = a i ⊕ b i
Implementierung der negierten Addition ADD (inverse Addition) am Ausgang s i :Implementation of the negated addition ADD (inverse addition) at the output s i :
Für die Implementierung der negierten Addition kann z. B. die Hilfsfunktion ƒ verwendet werden: For the implementation of the negated addition can z. B. the auxiliary function ƒ can be used:
Die Funktion ƒ wurde in „M. Y. Hsiao and F. F. Sellers. The Carry-Dependent Sum Adder. IEEE Transactions on Electronic Computers, EC-12(6):265-268, 1963” vorgeschlagen und beim Entwurf von Carry-Dependent Sum Addierern/Übertragsabhängiger Summenaddierer (siehe z. B. „M. Y. Hsiao and F. F. Sellers. The Carry-Dependent Sum Adder. IEEE Transactions on Electronic Computers, EC-12(6):265-268, 1963”; ”V. Ocheretnij and M. Gössel and E. S. Sogomonyan. Code-Disjoint Carry-Dependent Sum Adder with Partial Look-Ahead. Proceedings of 7th International On-line Testing Workshop, pages 147–152, 2001”; ”D. Marienfeld and E. S. Sogomonyan and V. Ocheretnij and M. Gössel. A New Self-Checking Multiplier by Use of a Code-Disjoint Sum Bit-Duplicated Adder. Proceedings of 9th IEEE European Test Symposium, pages 73–78, 200”; ”D. Marienfeld and E. S. Sogomonyan and V. Ocheretnij and M. Gössel. New Self-Checking Output-Duplicated Booth Multiplier with High Fault Coverage for Soft Errors. Proceedings of 14th IEEE Asian Test Symposium, pages 76–81, Calcutta, 2005”) und Sum-Bit Duplicated Addierern/Summenbit-duplizierender Addierer (siehe z. B.” E. S. Sogomonyan and V. Ocheretnij and M. Gössel. A New Code-Disjoint Sum Bit-Duplicated Carry Look-Ahead Adder for Parity Codes. Proceedings of 10th Asian Test Symposium, pages 57–62, 2001”;” D. Marienfeld and E. S. Sogomonyan and V. Ocheretnij and M. Gössel. A New Self-Checking Code-Disjoint Carry Skip Adder. Proceedings of 8th IEEE International On-line Testing Workshop, 2002”) verwendet. The function ƒ was written in "MY Hsiao and FF Sellers. The Carry-Dependent Sum Adder. IEEE Transactions on Electronic Computers, EC-12 (6): 265-268, 1963, "and in the design of carry-dependent sum adders / carry-dependent sum adders (see, for example," MY Hsiao and FF Sellers. "" The Carry-Dependent Sum Adder, IEEE Transactions on Electronic Computers, EC-12 (6): 265-268, 1963 ";" V. Ocheretnij and M. Gössel and ES Sogomonyan, Code-Disjoint Carry-Dependent Sum Adder with Partial Look-Ahead Proceedings of 7th International On-line Testing Workshop, pages 147-152, 2001 "; D. Marienfeld and ES Sogomonyan and V. Ocheretnij and M. Gössel." A New Self-Checking Multiplier by Use of a Code-Disjoint Sum Bit-Duplicated Adder Proceedings of 9th IEEE European Test Symposium, pages 73-78, 200 ";" D. Marienfeld and ES Sogomonyan and V. Ocheretnij and M. Gössel New Self-Checking Output-Duplicated Booth Multiplier with High Fault Coverage for Soft Errors. Proceedings of 14th IEEE Asian Test Symposium, pages 76-81, Calcutta, 2005 ") and Sum-Bit Dupli cated adders / sum bit duplicating adders (see e.g. B. "ES Sogomonyan and V. Ocheretnij and M. Gössel. A New Code Disjoint Sum Bit-Duplicated Carry Look-ahead adder for parity codes. Proceedings of 10th Asian Test Symposium, pages 57-62, 2001 ";" D. Marienfeld and ES Sogomonyan and V. Ocheretnij and M. Gössel. A New Self-Checking Code Disjoint Carry Skip Adder. Proceedings of 8th IEEE International On-line Testing Workshop, 2002 ").
Alternativ kann auch die inverse Hilfsfunktion ƒ verwendet werden.Alternatively, the inverse auxiliary function ƒ be used.
Das negierte Sum-Bit kann z. B. als eine XOR-Summe der Hilfsfunktion ƒ und des Übertragssignals ci definiert werden: The negated sum bit can z. B. be defined as an XOR sum of the auxiliary function ƒ and the carry signal c i :
Die Kombinatorik, die die negierte Addition implementiert, kann für die Implementierung der NAND, NOR und XNOR Funktionen wiederbenutzt werden.The combinator, which implements the negated addition, can be reused for the implementation of the NAND, NOR, and XNOR functions.
Implementierung der NAND-Funktion (Nicht-Und-Funktion, Nicht-Und-Verknüpfung) am Ausgang s i :Implementation of the NAND function (non-and-function, no-and-operation) at the output s i :
Durch eine Steuerlogik, die mit Hilfe der Kontrollsignalen m1, ..., mk gesteuert wird, können z. B. die Übertragssignale ci-1 und ci (Übertragssignale) auf „1” gesetzt werden: By a control logic, which is controlled by means of the control signals m 1 , ..., m k , z. B. the carry signals c i-1 and c i (carry signals) are set to "1":
Implementierung der NOR-Funktion (Nicht-Oder-Funktion, Nicht-Oder-Verknüpfung) am Ausgang s i :Implementation of the NOR function (no-or-function, no-OR operation) at the output s i :
Durch eine Steuerlogik, die mit Hilfe der Kontrollsignalen m1, ..., mk gesteuert wird, werden die Übertragssignale ci-1 und ci auf „0” gesetzt: By a control logic, which is controlled by means of the control signals m 1 , ..., m k , the carry signals c i-1 and c i are set to "0":
Implementierung der XNOR-Funktion (Nicht-Exklusiv-Oder-Verknüpfung) am Ausgang s i :Implementation of the XNOR function (non-exclusive-OR operation) at the output s i :
Durch eine Steuerlogik, die mit Hilfe der Kontrollsignalen m1, ..., mk, gesteuert wird, wird das Signal ai ⊕ ci-1 (oder bi ⊕ ci-1) geblockt und das Übertragssignal ci auf „0” gesetzt: By a control logic, which is controlled by means of the control signals m 1 , ..., m k , the signal a i ⊕ c i-1 (or b i ⊕ c i-1 ) is blocked and the carry signal c i to " 0 "set:
Alternativ kann das Propagiere-Signal pi auch beispielsweise wie folgt implementiert werden: Alternatively, the propagate signal p i can also be implemented, for example, as follows:
Die Addition wird dann z. B. wie folgend implementiert: The addition is then z. For example, as follows:
Die Kombinatorik, die die Addition implementiert, kann dann auch für die Implementierung der NAND-, OR- und/oder XOR-Funktionen verwendet werden. The combinator that implements the addition can then also be used to implement the NAND, OR, and / or XOR functions.
Die NAND-Funktion wird z. B. implementiert, indem eine Steuerlogik die Signale ci-1 und auf ”0” setzt.The NAND function is z. B. implemented by a control logic signals c i-1 and set to "0".
Die OR-Funktion wird beispielsweise implementiert, indem die Steuerlogik die Signale ci-1 und (ai ∧ bi) auf ”0” setzt.For example, the OR function is implemented by the control logic setting signals c i-1 and (a i ∧ b i ) to "0".
Die XOR-Funktion kann implementiert werden, indem die Steuerlogik das Signal ci-1 auf ”0” setzt.The XOR function can be implemented by the control logic setting signal c i-1 to "0".
Die beschriebene alternative Implementierung des Propagiere-Signals in einer ALU-Zelle ist z. B. in [”M. Nicolaidis. Implementation Techniques of Self-Checking Arithmetic Operators and Data Paths Based on Double-Rail and Parity Codes. US Patent No.5450340 , 1995”] beschrieben.The described alternative implementation of the propagate signal in an ALU cell is e.g. In ["M. Nicolaidis. Implementation Techniques of Self-Checking Arithmetic Operators and Data Paths Based on Double-Rail and Parity Codes. US Patent No.5450340 , 1995 "].
Falls das Propagiere-Signal pi wie oben alternativ beschrieben implementiert wird, kann die Hilfsfunktion fi auch für die Implementierung der Funktionen Addition, AND, OR und XOR verwendet werden.If the propagate signal p i is implemented as described above alternatively, the auxiliary function f i can also be used for the implementation of the functions Addition, AND, OR and XOR.
Die Hilfsfunktion fi kann dann als oder implementiert werden. Alternativ kann wiederum auch die inverse Hilfsfunktion ƒ implementiert werden.The auxiliary function f i can then as or be implemented. Alternatively, in turn, the inverse auxiliary function ƒ be implemented.
Die Addition kann dann z. B. wie folgend implementiert werden: oderThe addition can then z. For example, as follows: or
Die Kombinatorik, die die Addition implementiert, kann dann auch für die Implementierung der NAND-, OR- und XOR-Funktionen verwendet werden.The combinator that implements the addition can then also be used to implement the NAND, OR, and XOR functions.
Die NAND-Funktion kann z. B. implementiert werden, indem eine Steuerlogik die Signale ci, (ai ⊕ ci-1) bzw. (bi ⊕ ci-1) und auf ”0” setzt.The NAND function can, for. B. be implemented by a control logic signals c i , (a i ⊕ c i-1 ) or (b i ⊕ c i-1 ) and set to "0".
Die OR-Funktion kann implementiert werden, indem die Steuerlogik die Signale ci, (ai ⊕ ci-1) bzw. (bi ⊕ ci-1) und (ai ∧ bi) auf ”0” setzt.The OR function can be implemented by the control logic signals c i (a i ⊕ c i-1) or (b i ⊕ c i-1) and (a i ∧ b i) to "0" sets.
Des Weiteren kann die XOR-Funktion implementiert werden, indem die Steuerlogik die Signale ci, (ai ⊕ ci-1) bzw. (bi ⊕ ci-1) auf ”0” setzt.Furthermore, the XOR function can be implemented by the control logic setting the signals c i , (a i ⊕ c i-1 ) and (b i ⊕ c i-1 ) to "0".
Bei einigen Ausführungsbeispielen gemäß der Erfindung basiert die Recheneinheit, auch Zelle oder Arithmetik-Logik-Einheit-Zelle genannt, auf einer Paralleladdierer-Architektur mit Übertragsvorausberechnung (Carry Look-Ahead Addierer-Architektur), einer Schneller-Riesel-Addierer-Architektur (Fast Ripple Addierer-Architektur) oder einer Standard-Riesel-Addierer-Architektur (Standard Ripple Addierer-Architektur).In some embodiments according to the invention, the computing unit, also called cell or arithmetic logic unit cell, is based on a carry adder adder architecture, a fast trickle adder architecture Adder architecture) or a standard Riesel adder architecture (standard ripple adder architecture).
Für die Applikationen mit hohen Anforderungen an die Rechengeschwindigkeit können die ALU-Zellen auf selbstprüfenden Carry Look-Ahead Addierern (siehe z. B. „E. S. Sogomonyan and V. Ocheretnij and M. Gössel. A New Code-Disjoint Sum Bit-Duplicated Carry Look-Ahead Adder for Parity Codes. Proceedings of 10th Asian Test Symposium, pages 57–62, 2001”) basieren. Ein neu entwickelter selbstprüfender Fast Ripple Addierer kann als Basis für die ALU-Zellen dienen, die für Applikationen gedacht sind, für die der Hardware-Overhead (Hardware-Mehraufwand) und der Stromverbrauch kritisch sind.For high-speed applications, the ALU cells can be run on self-checking carry-look-ahead adders (see, eg, ES Sogomonyan and V. Ocheretnij and M. Gössel, A New Code-Disjoint Sum Bit-Duplicated Carry Look -Ahead Adder for Parity Codes. Proceedings of 10th Asian Test Symposium, pages 57-62, 2001 "). A newly developed self-checking Fast Ripple Adder can serve as the basis for the ALU cells, which are intended for applications for which the hardware overhead and power consumption are critical.
In den Ausführungsbeispielen werden unterschiedliche Implementierungen der Steuerlogik gezeigt. Dabei kann die Anzahl der Kontrollsignale auch variiren.In the exemplary embodiments, different implementations of the control logic are shown. The number of control signals can also vary.
Ein selbstprüfender Sum-Bit Duplicated Carry Look-Ahead Addierer (Summenbitduplizierender Paralleladierer mit Übertragsvorausberechnung) wurde in z. B. „E. S. Sogomonyan and V. Ocheretnij and M. Gössel. A New Code-Disjoint Sum Bit-Duplicated Carry Look-Ahead Adder for Parity Codes. Proceedings of 10th Asian Test Symposium, pages 57–62, 2001” vorgeschlagen. Seine Addierer-Zelle Ai ist in 8 dargestellt.A self-checking sum-bit Duplicated Carry look-ahead adder (sum-bit-duplicating parallel adder with carry-prediction) has been developed in z. B. "ES Sogomonyan and V. Ocheretnij and M. Gössel. A New Code Disjoint Sum Bit-Duplicated Carry Look-ahead adder for parity codes. Proceedings of 10th Asian Test Symposium, pages 57-62, 2001 "proposed. Its adder cell A i is in 8th shown.
Die Addierer-Zelle implementiert das Propagiere-Signal pi, das Generiere-Signal gi (Generate Signal), das Sum-Bit si und das negierte Sum-Bit s i . Aus den Propagiere- und Generiere-Signalen aller Addierer-Zellen errechnet die Carry Look-Ahead Einheit (Übertragsvorausberechnungseinheit) die Übertragssignale (Übertragssignale).The adder cell implements the propagate signal p i , the generate signal g i (Generate Signal), the sum bit s i and the negated sum bit s i , From the propagate and generate signals of all adder cells, the carry look-ahead unit calculates the carry signals (carry signals).
In den folgenden Beispielen werden Logikgatter mit je zwei Eingängen (2-Input-Gatter) verwendet. Die Anzahl der Gatter kann reduziert werden, indem komplexere Gatter (z. B. mit mehr als 2 Eingängen und komplexeren realisierbaren Funktionen) verwendet werden.The following examples use logic gates with two inputs (two input gates). The number of gates can be reduced by using more complex gates (eg with more than 2 inputs and more complex realizable functions).
In der in 8 gezeigten Recheneinheit 810 werden die Logikgatter 82 und 83 benötigt, um das Summen Bit si als Ausgangssignal zu erhalten. Die Logikgatter 82, 84, 85 und 86 werden zur Berechnung des negierten Summenbits s i benötigt. Des Weiteren wird das Logikgatter 81 zur Bereitstellung eines Generiere-Signals gi als weiteres Ausgangssignal der Recheneinheit 810 verwendet. Zusätzlich wird das Ausgangssignal pi (Propagiere-Signal, Propagate-Signal) des Logikgatters 82 als weiteres Ausgangssignal der Recheneinheit 810 bereitgestellt. Die Übertragungsvorausberechnungseinheit 830 kann basierend auf den Generierer-Signalen gi und den Propagiere-Signalen pi der Recheneinheiten der Arithmetik-Logik-Einheit 800, die Übertragssignale ci berechnen und den Recheneinheiten 810 bereitstellen.In the in 8th shown arithmetic unit 810 become the logic gates 82 and 83 needed to get the sum bit s i as an output signal. The logic gates 82 . 84 . 85 and 86 are used to calculate the negated sum bit s i needed. Furthermore, the logic gate 81 for providing a generate signal g i as a further output signal of the arithmetic unit 810 used. In addition, the output signal p i (propagate signal, propagate signal) of the logic gate 82 as another output signal of the arithmetic unit 810 provided. The transmission prediction unit 830 may be based on the generator signals g i and the propagation signals p i of the arithmetic logic units of the arithmetic unit 800 , calculate the carry signals c i and the arithmetic units 810 provide.
In diesem Beispiel stellen beispielsweise das Propagiere-Signal pi und das Generiere-Signal gi ein bereits zuvor erwähntes Hilfsausgangsignal der Recheneinheit dar. Basierend auf dem Propagiere-Signal pi und dem Generier-Signal gi kann beispielsweise eine Übertragsvorausberechnungseinheit 830 ein Übertragssignals ci bestimmen und der Recheneinheit bereitstellen.For example, in this example, the propagate signal p i and the generate signal g i represent an auxiliary output signal of the arithmetic unit already mentioned above. Based on the propagate signal p i and the generation signal g i , for example, a carry prediction unit 830 determine a carry signal c i and provide it to the arithmetic unit.
3 zeigt ein Blockschaltbild einer Arithmetik-Logik-Einheit 300 zur Verarbeitung eines ersten binären Eingangssignals ai und eines zweiten binären Eingangssignals bi entsprechend einer auswählbaren algebraischen Funktion gemäß einem Ausführungsbeispiel der Erfindung. Die Arithmetik-Logik-Einheit 300 basiert auf dem Konzept eines Parallel-Addierers mit Übertragsvorausberechnung. Die Arithmetik-Logik-Einheit 300 umfasst eine Mehrzahl von Recheneinheiten 110, von denen eine Recheneinheit Ai gezeigt ist, eine Übertragsvorausberechnungseinheit 830 und einem Fehlerdetektor, der in 3 nicht gezeigt ist. Die Recheneinheit Ai ist mit dem nicht-gezeigten Fehlerdetektor und der Übertragsvorausberechnungseinheit 830 sowie optional mit einer vorhergehenden und/oder einer nachfolgenden Recheneinheit verbunden. Der Recheneinheit Ai werden als Eingangssignale das erste binäre Eingangssignal ai, das zweite binäre Eingangssignal bi, ein erstes Kontrollsignal m1, ein zweites Kontrollsignal m2, ein Übertragssignal ci-1 einer vorhergehenden Recheneinheit und ein eigenes Übertragssignal ci der Recheneinheit Ai zur Verfügung gestellt. Die Übertragssignale ci, ci-1 werden von der Übertragsvorausberechnungseinheit 830 oder einer vorhergehenden oder nachfolgenden Recheneinheit berechnet und bereitgestellt. Umgekehrt stellt die Recheneinheit Ai das erste binäre Ausgangsignal si, das zweite binäre s i , ein Propagiere-Signal pi, ein Generiere-Signal gi und ein Übertragssignal ci-1 einer vorhergehenden Recheneinheit zur Verfügung. 3 shows a block diagram of an arithmetic logic unit 300 for processing a first binary input signal a i and a second binary input signal b i according to a selectable algebraic function according to an embodiment of the invention. The arithmetic logic unit 300 is based on the concept of a parallel adder with carry prediction. The arithmetic logic unit 300 includes a plurality of computing units 110 , of which a calculation unit A i is shown, a carry advance calculation unit 830 and an error detector which is in 3 not shown. The arithmetic unit A i is connected to the error detector (not shown) and the carry prediction unit 830 and optionally connected to a preceding and / or a subsequent arithmetic unit. The arithmetic unit A i are as input signals the first binary input signal a i , the second binary input signal b i , a first control signal m 1 , a second control signal m 2 , a carry signal c i-1 of a previous arithmetic unit and a separate carry signal c i of the arithmetic unit A i provided. The carry signals c i , c i-1 are from the carry pre-computation unit 830 or a preceding or succeeding arithmetic unit calculated and provided. Conversely, the arithmetic unit A i, the first binary output signal s i , the second binary s i , a propagate signal p i , a generate signal g i and a carry signal c i-1 of a preceding arithmetic unit.
Die Recheneinheit Ai umfasst ein erstes bis vierzehntes Logikgatter. Dabei ist das erste Logikgatter 31 ein UND-Gatter, und verknüpft das erste binäre Eingangssignal ai und das zweite binäre Eingangssignal bi entsprechend einer logischen UND-Verknüpfung, um das Generiere-Signal gi zu erhalten und an einem Ausgang der Recheneinheit Ai bereitzustellen. Bei dem zweiten Logikgatter 32 handelt es sich um ein XOR-Gatter, an dessen Eingängen das erste binäre Eingangssignal ai und das zweite binäre Eingangssignal bi anliegen, und das entsprechend einer logischen XOR-Funktion das Propagiere-Signal pi erzeugt und an einem Ausgang der Recheneinheit Ai bereitstellt. Das zweite Logikgatter 32 stellt das Propagiere-Signal pi sowohl als Hilfsausgangssignal als auch als Eingangssignal für das fünfte Logikgatter 35 und das achte Logikgatter 38 zur Verfügung. Das dritte Logikgatter 33 entspricht einem XOR-Gatter und mit einem ersten Eingang mit einem Ausgang des achten Logikgatters 38 und mit einem zweiten Eingang mit einem Ausgang des elften Logikgatters e3 verbunden. Das dritte Logikgatter 33 stellt an seinem Ausgang das erste binäre Ausgangssignal si zur Verfügung. Das vierte Logikgatter 34 entspricht einem weitren XOR-Gatter und ist mit einem zweiten Eingang mit einem Ausgang des elften Logikgatters e3 verbunden. Zusätzlich liegt an einem ersten Eingang des vierten Logikgatters 34 das erste binäre Eingangssignal ai an. Der Ausgang des vierten Logikgatters 34 ist mit einem Eingang des elften Logikgatters e5 verbunden. Das fünfte Logikgatter 35 ist ein NOR-Gatter, wobei ein erster Eingang des fünften Logikgatters 35 mit dem Ausgang des zweiten Logikgatters 32 und ein zweiter Eingang des fünften Logikgatters 35 mit einem Ausgang des elften Logikgatters e5 verbunden ist. Der Ausgang des fünften Logikgatters 35 ist mit einem Eingang des sechsten Logikgatters 36 verbunden. Das sechste Logikgatter 36 entspricht einem XOR-Gatter und erhält an einem zweiten Eingang das eigene Übertragssignal ci der Recheneinheit Ai bereitgestellt. Ein erster Eingang des sechsten Logikgatters 36 ist mit dem Ausgang des fünften Logikgatters 35 verbunden. Der Ausgang des sechsten Logikgatters 36 stellt das zweite binäre Ausgangssignal si bereit. Des Weiteren entspricht das siebte Logikgatter 37 einem XOR-Gatter und erhält an einem ersten Eingang das zweite binäre Eingangssignal bi und an einem zweiten Eingang das zweite Kontrollsignal m2 bereitgestellt. Der Ausgang des siebten Logikgatters 37 ist mit einem Eingang des vierzehnten Logikgatters e6 verbunden. Das achte Logikgatter 38 entspricht einem ODER-Gatter und ist mit einem ersten Eingang mit dem Ausgang des zweiten Logikgatters 32 und mit einem zweiten Eingang mit dem Ausgang des vierzehnten Logikgatters e6 verbunden. Der Ausgang des achten Logikgatters 38 ist mit einem Eingang des dritten Logikgatters 33 verbunden. Das neunte Logikgatter e1 entspricht einem weiteren ODER-Gatter und erhält an einem ersten Eingang das Übertragssignal ci-1 der vorhergehenden Recheneinheit und an einem zweiten Eingang das zweite Kontrollsignal m2 bereitgestellt. Der Ausgang des neunten Logikgatters e1 ist mit einem Eingang des elften Logikgatters e3 verbunden. Das zehnte Logikgatter e2 entspricht einem XNOR-Gatter und erhält an einem ersten Eingang das zweite Kontrollsignal m2 und an einem zweiten Eingang des erste Kontrollsignal m1 zur Verfügung gestellt. Der Ausgang des zehnten Logikgatters e2 ist mit einem Eingang des vierzehnten Logikgatters e6 verbunden. Des Weiteren erhält das elfte Logikgatter e3, das einem UND-Gatter entspricht, an einem zweiten Eingang das zweite Kontrollsignal m2 zur Verfügung gestellt und ist mit einem ersten Eingang mit dem Ausgang des neunten Logikgatters e1 verbunden. Der Ausgang des elften Logikgatters e3 ist mit einem Eingang des vierten Logikgatters 34 sowie mit einem Eingang des dritten Logikgatters 33 verbunden und stellt das Übertragssignal ci-1 der vorhergehenden Recheneinheit zur Verfügung. Das zwölfte Logikgatter e4 entspricht einem NAND-Gatter (NICHT-UND-Gatter) und erhält an einem ersten Eingang das zweite Kontrollsignal m2 und an einem zweiten invertierten Eingang das Kontrollsignal m1 bereitgestellt. Der Ausgang des zwölften Logikgatters e4 ist mit einem Eingang des dreizehnten Logikgatters e5 verbunden. Das dreizehnte Logikgatter e5 entspricht einem UND-Gatter und ist mit einem ersten Eingang mit dem Ausgang des vierten Logikgatter 34 und mit einem zweiten Eingang mit dem Ausgang des zwölften Logikgatters e4 verbunden. Der Ausgang des dreizehnten Logikgatters e5 ist mit einem Eingang des fünften Logikgatters 35 verbunden. Des Weiteren entspricht des vierzehnte Logikgatter e6 einem UND-Gatter und ist mit einem ersten Eingang mit dem Ausgang des siebten Logikgatters 37 und mit einem zweiten Eingang mit dem Ausgang des zehnten Logikgatters e2 verbunden. Der Ausgang des vierzehnten Logikgatters e6 ist mit einem Eingang des achten Logikgatters 38 verbunden.The arithmetic unit A i comprises a first to fourteenth logic gate. Here is the first logic gate 31 an AND gate, and combines the first binary input signal a i and the second binary input signal b i according to a logical AND operation to obtain the generating signal g i and to provide it at an output of the arithmetic unit A i . At the second logic gate 32 If it is an XOR gate, to whose inputs the first binary input signal a i and the second binary input signal b i abut, and corresponding to a logical XOR function, the propagating signal p i generated at an output of the arithmetic unit A i provides. The second logic gate 32 represents the propagate signal p i both as an auxiliary output signal and as an input signal for the fifth logic gate 35 and the eighth logic gate 38 to disposal. The third logic gate 33 corresponds to an XOR gate and to a first input to an output of the eighth logic gate 38 and with a second input with an output of the eleventh Logic gate e3 connected. The third logic gate 33 provides at its output the first binary output signal s i . The fourth logic gate 34 corresponds to a further XOR gate and is connected to a second input to an output of the eleventh logic gate e3. In addition, there is a first input of the fourth logic gate 34 the first binary input signal a i . The output of the fourth logic gate 34 is connected to an input of the eleventh logic gate e5. The fifth logic gate 35 is a NOR gate, wherein a first input of the fifth logic gate 35 with the output of the second logic gate 32 and a second input of the fifth logic gate 35 is connected to an output of the eleventh logic gate e5. The output of the fifth logic gate 35 is with an input of the sixth logic gate 36 connected. The sixth logic gate 36 corresponds to an XOR gate and receives its own carry signal c i of the arithmetic unit A i at a second input. A first input of the sixth logic gate 36 is at the output of the fifth logic gate 35 connected. The output of the sixth logic gate 36 provides the second binary output signal s i . Furthermore, the seventh logic gate corresponds 37 an XOR gate and receives the second binary input signal b i at a first input and the second control signal m 2 at a second input. The output of the seventh logic gate 37 is connected to an input of the fourteenth logic gate e6. The eighth logic gate 38 corresponds to an OR gate and is connected to a first input to the output of the second logic gate 32 and a second input connected to the output of the fourteenth logic gate e6. The output of the eighth logic gate 38 is with an input of the third logic gate 33 connected. The ninth logic gate e1 corresponds to a further OR gate and receives the carry signal c i-1 of the preceding arithmetic unit at a first input and the second control signal m 2 at a second input. The output of the ninth logic gate e1 is connected to an input of the eleventh logic gate e3. The tenth logic gate e2 corresponds to an XNOR gate and receives the second control signal m 2 at a first input and provided at a second input of the first control signal m 1 . The output of the tenth logic gate e2 is connected to an input of the fourteenth logic gate e6. Furthermore, the eleventh logic gate e3, which corresponds to an AND gate, receives the second control signal m 2 at a second input and is connected to the output of the ninth logic gate e1 by a first input. The output of the eleventh logic gate e3 is connected to an input of the fourth logic gate 34 as well as with an input of the third logic gate 33 connected and provides the carry signal c i-1 of the previous processing unit. The twelfth logic gate e4 corresponds to a NAND gate (NAND gate) and receives the second control signal m 2 at a first input and the control signal m 1 at a second inverted input. The output of the twelfth logic gate e4 is connected to an input of the thirteenth logic gate e5. The thirteenth logic gate e5 corresponds to an AND gate and is connected to a first input to the output of the fourth logic gate 34 and a second input connected to the output of the twelfth logic gate e4. The output of the thirteenth logic gate e5 is connected to an input of the fifth logic gate 35 connected. Furthermore, the fourteenth logic gate e6 is an AND gate and has a first input to the output of the seventh logic gate 37 and a second input connected to the output of the tenth logic gate e2. The output of the fourteenth logic gate e6 is connected to an input of the eighth logic gate 38 connected.
Zieht man die bereits erwähnte Definition der Gattergruppen heran, wonach die erste Gruppe von Verarbeitungsgattern jenen Gattern entspricht, die zur Berechnung des ersten binären Ausgangssignals si notwendig sind, die zweite Gruppe von Verarbeitungsgattern jenen Gattern entspricht, die zur Berechnung des zweiten binären Ausgangssignal si notwendig sind und die Gruppe von Kontrollgattern jene Logikgatter umfasst, bei denen zumindest ein Eingang ausschließlich von einem oder mehreren Kontrollsignalen abhängt, würde zur ersten Gruppe von Verarbeitungsgattern das zweite Logikgatter 32, das dritte Logikgatter 33, das siebte Logikgatter 37, das achte Logikgatter 38, das neunte Logikgatter e1, das zehnte Logikgatter e2, das elfte Logikgatter e3 und das vierzehnte Logikgatter e6 gehören. Die zweite Gruppe von Verarbeitungsgattern würde das zweite Logikgatter 32, das vierte Logikgatter 34, das fünfte Logikgatter 35, das sechste Logikgatter 36, das neunte Logikgatter e1, das elfte Logikgatter e3, das zwölfte Logikgatter e4 und das dreizehnte Logikgatter e5 umfassen. Des Weiteren gehören zu der Gruppe von Kontrollgattern das neunte bis vierzehnte Logikgatter e1, e2, e3, e4, e5, e6, die auch erstes bis sechstes Kontrollgatter genannt werden.Taking the above-mentioned definition of the gate groups, according to which the first group of processing gates corresponds to those gates which are necessary for calculating the first binary output signal s i , the second group of processing gates corresponds to those gates which are used to calculate the second binary output signal s i are necessary and the set of control gates comprises those logic gates in which at least one input depends exclusively on one or more control signals, the second logic gate would become the first group of processing gates 32 , the third logic gate 33 , the seventh logic gate 37 , the eighth logic gate 38 , the ninth logic gate e1, the tenth logic gate e2, the eleventh logic gate e3 and the fourteenth logic gate e6 belong. The second group of processing gates would be the second logic gate 32 , the fourth logic gate 34 , the fifth logic gate 35 , the sixth logic gate 36 , the eighth logic gate e1, the eleventh logic gate e3, the twelfth logic gate e4 and the thirteenth logic gate e5. Furthermore, the ninth to fourteenth logic gates e1, e2, e3, e4, e5, e6, which are also called first to sixth control gates, belong to the group of control gates.
Das zweite Logikgatter 32, das neunte Logikgatter e1 und das elfte Logikgatter e3 sind gemeinsame Verarbeitungsgatter der ersten Gruppe von Verarbeitungsgattern und der zweiten Gruppe von Verarbeitungsgattern.The second logic gate 32 , the ninth logic gate e1 and the eleventh logic gate e3 are common processing gates of the first group of processing gates and the second group of processing gates.
Das erste Logikgatter 31 berechnet ein Hilfsausgangssignal in Form des Generiere-Signals gi. Wird das Hilfsausgangssignal weiterverarbeitet und/oder der Recheneinheit als Eingangssignal wieder bereitgestellt, so wie dies beispielsweise in 3 durch die Übertragsvorausberechnungseinheit (stellt Übertragssignale basierend auf dem Generiere-Signal zur Verfügung) der Fall ist, so kann das erste Logikgatter (oder allgemein solche Logikgatter, Logikgatter, wie zum Beispiel auch die Gatter der Übertragsvorausberechnungseinheit) als Teil der ersten Gruppe von Verarbeitungsgattern und der zweiten Gruppe von Verarbeitungsgattern und somit, wie das zweite Logikgatter 32, das neunte Logikgatter e1 und das elfte Logikgatter e3, als gemeinsames Verarbeitungsgatter angesehen werden.The first logic gate 31 calculates an auxiliary output signal in the form of the generate signal g i . If the auxiliary output signal is processed further and / or provided again to the arithmetic unit as an input signal, as described, for example, in US Pat 3 by the carry pre-computation unit (providing carry signals based on the generate signal), the first logic gate (or generally such logic gates, logic gates, such as the gates of the carry pre-computation unit) as part of the first group of processing gates and the second group of processing gates and thus, like the second logic gate 32 , the ninth logic gate e1 and the eleventh logic gate e3, are considered as a common processing gate.
Die beschriebene Struktur von Logikgatter der Recheneinheit Ai kann sich in den weiteren Recheneinheiten der Arithmetik-Logik-Einheit (anderen ALU-Zellen) wiederholen. Dadurch können Eingangssignale mit mehreren parallelen Bits (bestehend aus mehreren ersten und zweiten binären Eingangssignalen) verarbeitet werden. Entsprechend ist dann ein Ausgangssignal mit mehreren parallelen Bits durch die Zusammenfassung der ersten binären Ausgangssignale oder der zweiten binären Ausgangssignale der Recheneinheiten der Arithmetik-Logik-Einheit gegeben.The described structure of logic gates of the arithmetic unit A i can be repeated in the further arithmetic unit of the arithmetic logic unit (other ALU cells). This allows input signals with multiple parallel bits (consisting of multiple first and second binary input signals) to be processed. Accordingly, an output signal having a plurality of parallel bits is then given by the combination of the first binary output signals or the second binary output signals of the arithmetic logic unit's arithmetic units.
Die von der Übertragungsvorausberechnungseinheit 830 bereitgestellten Übertragssignale ci, ci-1 können durch die Kontrollgatter entsprechend der ausgewählten algebraischen Funktion angepasst werden.The of the transmission prediction unit 830 provided carry signals c i , c i-1 can be adjusted by the control gates according to the selected algebraic function.
Um die Erläuterungen zu vereinfachen, wird diese ALU-Zelle Ai im Folgenden auch als ALU-CLA-1 bezeichnet.To simplify the explanation, this ALU cell A i is also referred to below as ALU CLA-1.
Die ALU-CLA-1 ist entsprechend den zuvor beschriebenen Techniken implementiert. Mit Hilfe von zwei Kotrollsignalen m1 und m2 wird eine Operation (algebraische Funktion) ausgewählt. Die Werte von m1 und m2 und die entsprechenden Operationen sind in der folgenden Tabelle dargestellt: The ALU CLA-1 is implemented according to the techniques described above. With the help of two Kotrollsignalen m 1 and m 2 , an operation (algebraic function) is selected. The values of m 1 and m 2 and the corresponding operations are shown in the following table:
Die Addition wird ausgeführt, wenn m1 = 1 und m2 = 0 sind. Am Ausgang des Kontrollgatters e3 wird das Übertragssignal ci-1 implementiert. Der Ausgang des Kontrollgatters e6 ist gleich 0 und das Propagiere-Signal pi wird durch das OR-Gatter 38 propagiert und mit ci-1 verxoriert (entsprechend einer XOR-Verknüpfung verarbeitet). Dadurch implementiert der Ausgang si die Summe. Dank der „1” am Ausgang des Gatters e4 implementiert das NOR-Gatter 35 die Hilfsfunktion ƒi (die Hilfsfunktion wurde bereits zuvor beschrieben) und die negierte Summe wird am Ausgang si implementiert.The addition is performed when m 1 = 1 and m 2 = 0. At the output of the control gate e3, the carry signal c i-1 is implemented. The output of the control gate e6 is 0 and the propagate signal p i is passed through the OR gate 38 propagated and with c i-1 verxoriert (processed according to an XOR operation). As a result, the output s i implements the sum. Thanks to the "1" at the output of gate e4, the NOR gate implements 35 the auxiliary function ƒ i (the auxiliary function has already been described above) and the negated sum is implemented at the output s i .
Im Fall der logischen AND-Operation (UND-Funktion) sind beide Kontrollsignale m1 und m2 gleich „1”. Dadurch sind die Ausgänge der Kontrollgatter e3 in allen ALU-Zellen gleich „1” und als Folge sind auch die Übertragssignale ci-1 und ci gleich „1”. Um die AND-Funktion zu implementieren, wird der Input bi (das zweite Eingangssignal) zunächst invertiert, indem er mit m2 = 1 xoriert (XOR-Gatter 37) wird. Dann wird der invertierte Input b i mit dem Propagiere-Signal pi verodert (OR-Gatter 38), weil der Ausgang des Kontrollgatters e2 gleich „1” ist. Schließlich wird b i ∨ ai ⊕ bi invertiert, indem es mit ci-1 = 1 verxoriert wird. Die Inverse der AND-Funktion, NAND-Funktion, wird am Ausgang s i implementiert, weil die Carries ci-1, und ci gleich „1” sind. Das kann geprüft werden, indem man ci-1 = 1 und ci = 1 in der Gleichung 3 einsetzt.In the case of the logical AND operation (AND function), both control signals m 1 and m 2 are equal to "1". As a result, the outputs of the control gates e3 in all ALU cells are equal to "1" and, as a consequence, the carry signals c i-1 and c i are also equal to "1". To implement the AND function, the input b i (the second input signal) is first inverted by x 2ing it with m 2 = 1 (XOR gate 37 ) becomes. Then the inverted input b i with the propagation signal p i ORED (OR gate 38 ), because the output of the control gate e2 is "1". Finally will b i ∨ a i ⊕ b i inverted by being versed with c i-1 = 1. The inverse of the AND function, NAND function, is output s i implements, because the carries c i-1 and c i are equal to "1". This can be tested by using c i-1 = 1 and c i = 1 in Equation 3.
Die OR-Operation (ODER-Funktion) wird ausgewählt, wenn m1 und m2 gleich „0” sind.The OR operation is selected when m 1 and m 2 are equal to "0".
In diesem Fall sind die Ausgänge der Kontrollgatter e3 in allen ALU-Zellen gleich „0”. Für m2 = 0 kommt der Input bi durch das XOR-Gatter 37 ohne Veränderungen durch und wird mit dem Propagiere-Signal pi verodert (OR-Gatter 38). Dabei blockt das Kontrollgatter e6 den Input bi nicht. Weil ci-1 gleich „0” ist, wird die Funktion bi ⊕ pi = ai ∨ bi zu den Ausgang si propagiert. Der Ausgang s i implementiert die NOR-Funktion, weil ci-1 und ci gleich „0” sind. Das kann geprüft werden, indem man ci-1 = 0 und ci = 0 in der Gleichung 3 einsetzt.In this case, the outputs of the control gates e3 in all ALU cells are equal to "0". For m 2 = 0, the input b i comes through the XOR gate 37 without changes through and is ORed with the propagation signal p i (OR gate 38 ). The control gate e6 does not block the input b i . Because c i-1 "0", the function b i ⊕ p i = a i b i ∨ to the output s i is propagated. The exit s i implements the NOR function because c i-1 and c i are equal to "0". This can be tested by using c i-1 = 0 and c i = 0 in Equation 3.
Für die XOR-Operation werden die Kontrollsignale m1 und m2 auf „0” und ensprechend auf „1” gesetzt. m1 = 0 setzt die Ausgänge der Kontrollgatter e3 in allen ALU-Zellen auf „0”. In diesem Fall sind ci-1 und ci gleich „0”. Die Kontrollgatter e5 und e6 blockieren die Ausgangssignale der Gatter 34 und 37. Somit implementiert der Ausgang si die Propagiere-Funktion pi = ai ⊕ bi und der Ausgang s i implementiert die negierte Propagiere-Funktion For the XOR operation, the control signals m 1 and m 2 are set to "0" and corresponding to "1". m 1 = 0 sets the outputs of the control gate e3 in all ALU cells to "0". In this case, c i-1 and c i are equal to "0". The control gates e5 and e6 block the output signals of the gates 34 and 37 , Thus, the output s i implements the propagation function p i = a i b i and the output s i implements the negated propagator function
Die vorgeschlagene ALU kann auch beispielsweise in einen Datenpfad leicht integriert werden, in dem Two-Rail Kode (Verdopplungskode) verwendet wird, weil an ihren Ausgängen s und s auch der Two-Rail Kode implementiert wird. Ebenso kann die vorgeschlagene ALU z. B. in einem Datenpfad, der mit Hilfe eines Paritätskodes geprüft wird, implementiert werden.The proposed ALU may also be easily integrated, for example, into a data path using two-rail code, because at its outputs s and s also the two-rail code is implemented. Likewise, the proposed ALU z. In a data path that is checked using a parity code.
Die vorgeschlagene selbstprüfende ALU kann alle einzelne Haft-Fehler (single stuck-at faults) erkennen. Ein Haftfehler ist beispielsweise ein Fehler bei dem ein Signal (z. B. Ausgangssignal eines Logikgatters) dauerhaft auf einem festen Logikpegel (0 oder 1) festhängt.The proposed self-checking ALU can detect all single stuck-at faults. An adhesion error is, for example, an error in which a signal (eg output of a logic gate) is permanently stuck at a fixed logic level (0 or 1).
Die Erkennung der verschiedenen möglichen Haft-Fehler wird im Folgenden betrachtet:
Fehler in den Operanden a und b, die eine ungerade Anzahl der Bits in den Operanden verfälschen, können durch den Vergleich von pa ⊕ pb mit p(a ⊕ b) erkannt werden.Detection of the various possible detention errors is considered below:
Errors in the operands a and b, which falsify an odd number of bits in the operands, can be detected by comparing p a ⊕ p b with p (a ⊕ b).
Alle einzelnen Haft-Fehler im XOR-Baum für. die Implementierung der Parität p(a ⊕ b) und im XOR-Gatter für die Implementierung von pa ⊕ pb können durch den Vergleich von pa ⊕ pb mit p(a ⊕ b) erkannt werden. Die Gatter des XOR-Baums können z. B. Gatter sein, die keiner der drei Gruppen von Gattern (erste Gruppe, zweite Gruppe und Gruppe von Kontrollgattern) zugeordnet werden.All single sticking errors in the XOR tree for. the implementation of the parity p (a ⊕ b) and in the XOR gate for the implementation of p a ⊕ p b can be identified by comparing p a ⊕ p b with p (a ⊕ b). The gates of the XOR tree can be z. For example, there may be gates that are not assigned to any of the three groups of gates (first group, second group, and group of control gates).
Alle einzelne Haft-Fehler in der ALU-Zelle ALU-CLA-1 können z. B. wie folgt erkannt werden:
Fehler im Gatter 31 verfälschen das Generiere-Signal gi. Als Folge implementiert die Übertragsvorausberechnungseinheit 830 (Carry Look-Ahead Einheit) ein fehlerhaftes Übertragssignal ci, das an die nächste ALU-Zelle Ai+1 angelegt wird. In der Ai+1 wird ci für die Implementierung von si+1 und s i+1 verwendet und an die ALU-Zelle Ai weitergeleitet. In der Ai wird ci nur für die Implementierung von s i verwendet. Der betrachtete Fehler wird durch den Vergleich von si mit s i erkannt. Für die logischen Operationen ist der Fehler redundant, weil die Kontrollsignale m1 und m2 den Ausgang des Kontrollgatters e3 unabhängig von dem Wert von ci steuern.All individual sticking faults in the ALU cell ALU-CLA-1 can be B. be recognized as follows:
Error in the gate 31 falsify the generate signal g i . As a result, the carry pre-computation unit implements 830 (Carry look-ahead unit) a faulty carry signal c i , which is applied to the next ALU cell A i + 1 . In the A i + 1 c i for the implementation of s i + 1 and s i + 1 used and forwarded to the ALU cell A i . In A i , c i is only used for the implementation of s i used. The considered error is by comparing s i with s i recognized. For the logical operations, the error is redundant because the control signals m 1 and m 2 control the output of the control gate e3 independently of the value of c i .
Fehler im Gatter 32 werden erkannt, indem man die Parität p(a ⊕ b) mit der Parität pa ⊕ pb vergleicht. Gatter 32 implementiert das Propagiere-Signal pi. Weil pi immer geprüft wird, kann es für die Implementierung von si und s i geteilt werden. Wird das Propagiere-Signal pi, das an die Carry Look-Ahead Einheit angelegt wird, vermischt, dann wird das änlich wie ein Fehler im Gatter 31 erkannt.Error in the gate 32 are detected by comparing the parity p (a ⊕ b) with the parity p a ⊕ p b . gate 32 implements the propagate signal p i . Because p i is always checked, it can be used for the implementation of s i and s i to be shared. If the propagate signal p i , which is applied to the carry look-ahead unit, mixed, then this is like a mistake in the gate 31 recognized.
Fehler in der Übertragsvorausberechnungseinheit können ähnlich wie Fehler in den Gattern 31 und 32 erkannt werden.Errors in the carry prediction unit can be similar to errors in the gates 31 and 32 be recognized.
Fehler in den Gatter 37, 38 und 33 verursachen einen fehlerhaften Output si. Sie werden durch den Vergleich von si mit s i erkannt.Error in the gate 37 . 38 and 33 cause a faulty output s i . They are by comparing s i with s i recognized.
Wegen den Fehlern in den Gatter 34, 35 und 36 wird der Output s i verfälscht. Die betrachteten Fehler werden erkannt, indem man si und s i vergleicht.Because of the mistakes in the gates 34 . 35 and 36 becomes the output s i falsified. The considered errors are recognized by s i and s i compares.
Bei Fehlern in den Kontrollgatter e1 und e3 wird das Übertragssignal ci-1 fehlerhaft. Das wird durch den Vergleich von si-1 mit s i-1 erkannt.For errors in the control gates e1 and e3, the carry signal c i-1 is faulty. This is done by comparing s i-1 with s i-1 recognized.
Fehler in den Kontrollgatter e2 und e6 verfälschen den Output si und werden erkannt, indem man si und s i vergleicht.Errors in the control gates e2 and e6 falsify the output s i and are detected by s i and s i compares.
Wegen Fehlern in den Kontrollgatter e4 und e5 wird der Output s i fehlerhaft. Die betrachteten Fehler werden beim Vergleich von si mit s i entdeckt.Due to errors in the control gates e4 and e5 the output becomes s i faulty. The considered errors become with the comparison of s i with s i discovered.
In 3 gezeigte Arithmetik-Logik-Einheit ist ein Beispiel für eine selbstprüfenden ALU-Zelle Ai auf der Basis von einem Paralleladdierer mit Übertragsvorausberechnung (Carry Look-Ahead Addierer). Bei alternativen Arithmetik-Logik-Einheiten kann man unter Beibehaltung der anderen Merkmale auch das Gatter 32 verdoppeln und das verdoppelte Gatter ausschließlich für die Implementierung der Ausgänge s verwenden. Zusätzlich kann dabei zur Berechnung eines Ausgangssignals die beschriebene Hilfsfunktion fi verwendet werden.In 3 The arithmetic logic unit shown is an example of a self-checking ALU cell A i based on a carry-ahead-adder parallel adder. In alternative arithmetic logic units, while maintaining the other features, the gate can also be used 32 double and use the doubled gate exclusively for the implementation of the outputs s. In addition, the described auxiliary function f i can be used to calculate an output signal.
4 zeigt ein Blockschaltbild einer Arithmetik-Logik-Einheit 400 zum Verarbeiten eines ersten binären Eingangssignals ai und eines zweiten binären Eingangssignals bi entsprechend einer auswählbaren algebraischen Funktion gemäß einem Ausführungsbeispiel der Erfindung. Die Arithmetik-Logik-Einheit 400 basiert wie die in 3 gezeigte Arithmetik-Logik-Einheit auf einem Paralleladdierer mit Übertragsvorausberechnung und umfasst eine Recheneinheit Ai, eine Übertragsvorausberechnungseinheit 830 und einen nicht-gezeigten Fehlerdetektor. Die Recheneinheit Ai erhält als Eingangssignal das erste binäre Eingangssignal ai, das zweite binäre Eingangssignal bi, ein erstes Kontrollsignal m1, ein zweites Kontrollsignal m2, ein drittes Kontrollsignal m3, ein Übertragssignal ci-1 einer vorhergehenden Recheneinheit und ein eigenes Übertragssignal ci der Recheneinheit A. Als Ausgangsignale erstellt die Recheneinheit Ai das erste binäre Ausgangssignal si, das zweite binäre s i , ein Generiere-Signal gi und ein Propagiere-Signal pi zur Verfügung. Die Übertragsvorausberechnungseinheit 830 kann basierend auf den Generiere-Signalen gi und den Propagiere-Signalen pi der Recheneinheiten der Arithmetik-Logik-Einheit 400 die Übertragssignale ci berechnen und den Recheneinheiten 110 zur Verfügung stellen. 4 shows a block diagram of an arithmetic logic unit 400 for processing a first binary input signal a i and a second binary input signal b i corresponding to a selectable one algebraic function according to an embodiment of the invention. The arithmetic logic unit 400 based like the one in 3 shown arithmetic logic unit on a parallel adder with carry pre-calculation and comprises a computing unit A i , a carry pre-calculation unit 830 and an error detector, not shown. The arithmetic unit A i receives as input the first binary input signal a i , the second binary input signal b i , a first control signal m 1 , a second control signal m 2 , a third control signal m 3 , a carry signal c i-1 of a preceding arithmetic unit and a own carry signal c i of the arithmetic unit A. As output signals, the arithmetic unit A i creates the first binary output signal s i , the second binary s i , a generate signal g i and a propagate signal p i . The carry-ahead calculation unit 830 can based on the generate signals g i and the propagation signals p i of the arithmetic logic unit of the arithmetic logic unit 400 calculate the carry signals c i and the arithmetic units 110 provide.
Die Recheneinheit Ai umfasst ein erstes bis vierzehntes Logikgatter. Das erste Logikgatter 31 entspricht einem UND-Gatter und bekommt an einem ersten Eingang das zweite binäre Eingangssignal bi und an einem zweiten Eingang das erste binäre Eingangssignal ai bereitgestellt. Der Ausgang des ersten Logikgatters 31 ist mit einem Eingang des neunten Logikgatters e1 verbunden und stellt das Generiere-Signal gi zur Verfügung. Das zweite Logikgatter 32 entspricht einem XOR-Gatter und erhält an einem ersten Eingang das zweite binäre Eingangssignal bi und an einem zweiten Eingang das erste binäre Eingangssignal ai bereitgestellt. Der Ausgang des zweiten Logikgatters 32 ist mit einem Eingang des elften Logikgatters e3, mit einem Eingang des fünften Logikgatters 35 und mit einem Eingang des achten Logikgatters 38 verbunden und stellt das Propagiere-Signal pi an einem Ausgang der Recheneinheit Ai zur Verfügung. Das dritte Logikgatter 33 entspricht einem weiteren XOR-Gatter und erhält an einem ersten Eingang ein Übertragssignal ci-1 der vorhergehenden Recheneinheit bereitgestellt und ist mit einem zweiten Eingang mit einem Ausgang des achten Logikgatters 38 verbunden. Das dritte Logikgatter 33 stellt an seinem Ausgang das erste binäre Ausgangssignal si zur Verfügung. Des Weiteren entspricht das vierte Logikgatter 34 einem XOR-Gatter und bekommt an einem ersten Eingang das erste binäre Eingangssignal ai und an einem zweiten Eingang das Übertragssignals ci-1 der vorhergehenden Recheneinheit zur Verfügung gestellt. Der Ausgang des vierten Logikgatters 34 ist mit einem Eingang des dreizehnten Logikgatters e5 verbunden. Das fünfte Logikgatter 35 entspricht einem NOR-Gatter und ist mit einem ersten Eingang mit dem Ausgang des zweiten Logikgatters 32 und mit einem zweiten Eingang mit dem Ausgang des dreizehnten Logikgatters e5 verbunden. Der Ausgang des fünften Logikgatters 35 ist mit einem Eingang des sechsten Logikgatters 36 verbunden. Das sechste Logikgatter 36 entspricht einem XOR-Gatter und erhält an einem ersten Eingang das Übertragssignals ci der eigenen Recheneinheit Ai bereitgestellt und ist mit einem zweiten Eingang mit dem Ausgang des fünften Logikgatters 35 verbunden. Das sechste Logikgatter 36 stellt an seinem Ausgang das zweite binäre Ausgangssignal s i zur Verfügung. Das siebte Logikgatter 37 entspricht einem weiteren XOR-Gatter und bekommt an einem ersten Eingang das zweite binäre Eingangssignal bi und an einem zweiten Eingang das zweite Kontrollsignal m2 bereitgestellt. Der Ausgang des siebten Logikgatters 37 ist mit einem Eingang des vierzehnten Logikgatters e6 verbunden. Das achte Logikgatter ist ein ODER-Gatter und ist mit einem ersten Eingang mit dem Ausgang des zweiten Logikgatters 32 und mit einem zweiten Eingang mit dem Ausgang des vierzehnten Logikgatters e6 verbunden. Der Ausgang des achten Logikgatters 38 ist mit einem Eingang des dritten Logikgatters 33 verbunden. Das neunte Logikgatter e1 entspricht einem weiteren ODER-Gatter und erhält an einem ersten Eingang das zweite Kontrollsignal m2 bereitgestellt. Ein zweiter Eingang ist mit dem Ausgang des ersten Logikgatters 31 verbunden und der Ausgang des neunten Logikgatters e1 ist mit einem Eingang des zehnten Logikgatters e2 verbunden. Das zehnte Logikgatter e2 entspricht einem UND-Gatter und erhält an einem ersten Eingang das erste Kontrollsignal m1 zur Verfügung gestellt. Des Weiteren ist das zehnte Logikgatter e2 mit einem zweiten Eingang mit dem Ausgang des neunten Logikgatters e1 verbunden und stellt an seinem Ausgang das Generiere-Signal gi an einem Ausgang der Recheneinheit Ai zur Verfügung. Das zehnte Logikgatter e3 erhält an einem ersten Eingang das erste Kontrollsignal m1 bereitgestellt und entspricht einem UND-Gatter. Ein zweiter Eingang des zehnten Logikgatters e3 ist mit dem Ausgang des zweiten Logikgatters 32 verbunden. Des Weiteren stellt das elfte Logikgatter e3 an seinem Ausgang das Propagiere-Signal pi zur Verfügung. Das zwölfte Logikgatter e4 entspricht einem NAND-Gatter (NICHT-UND-Gatter) und erhält an einem ersten Eingang das zweite Kontrollsignal m2 und an einem zweiten invertierten Eingang das erste Kontrollsignal m1 zur Verfügung gestellt. Der Ausgang des zwölften Logikgatters e4 ist mit einem Eingang des dreizehnten Logikgatters e5 verbunden. Das dreizehnte Logikgatter e5 entspricht einem UND-Gatter und ist mit einem ersten Eingang mit dem Ausgang des vierten Logikgatters 34 und mit einem zweiten Eingang mit dem Ausgang des zwölften Logikgatters e4 verbunden. Der Ausgang des dreizehnten Logikgatters e5 ist mit einem Eingang des fünften Logikgatters 35 verbunden. Das vierzehnte Logikgatter e6 entspricht einem UND-Gatter und erhält an einem ersten Eingang das dritte Kontrollsignal m3 zur Verfügung gestellt. Ein zweiter Eingang des vierzehnten Logikgatters e6 ist mit dem Ausgang des siebten Logikgatters 37 verbunden und der Ausgang des vierzehnten Logikgatters e6 ist mit einem Eingang des achten Logikgatters 38 verbunden.The arithmetic unit A i comprises a first to fourteenth logic gate. The first logic gate 31 corresponds to an AND gate and receives the second binary input signal b i at a first input and the first binary input signal a i at a second input. The output of the first logic gate 31 is connected to an input of the ninth logic gate e1, and sets the Generate signal g i are available. The second logic gate 32 corresponds to an XOR gate and receives the second binary input signal b i at a first input and the first binary input signal a i at a second input. The output of the second logic gate 32 is connected to an input of the eleventh logic gate e3, to an input of the fifth logic gate 35 and with an input of the eighth logic gate 38 connected and provides the propagate signal p i at an output of the arithmetic unit A i available. The third logic gate 33 corresponds to a further XOR gate and receives at a first input a carry signal c i-1 of the preceding arithmetic unit and is provided with a second input having an output of the eighth logic gate 38 connected. The third logic gate 33 provides at its output the first binary output signal s i . Furthermore, the fourth logic gate corresponds 34 an XOR gate and receives at a first input the first binary input signal a i and at a second input the carry signal c i-1 of the previous arithmetic unit provided. The output of the fourth logic gate 34 is connected to an input of the thirteenth logic gate e5. The fifth logic gate 35 corresponds to a NOR gate and is connected to a first input to the output of the second logic gate 32 and a second input connected to the output of the thirteenth logic gate e5. The output of the fifth logic gate 35 is with an input of the sixth logic gate 36 connected. The sixth logic gate 36 corresponds to an XOR gate and receives at a first input the carry signal c i of its own arithmetic unit A i provided and is connected to a second input to the output of the fifth logic gate 35 connected. The sixth logic gate 36 provides at its output the second binary output signal s i to disposal. The seventh logic gate 37 corresponds to a further XOR gate, and receives at a first input the second binary input signal b i and provided to a second input of the second control signal m 2. The output of the seventh logic gate 37 is connected to an input of the fourteenth logic gate e6. The eighth logic gate is an OR gate and has a first input to the output of the second logic gate 32 and a second input connected to the output of the fourteenth logic gate e6. The output of the eighth logic gate 38 is with an input of the third logic gate 33 connected. The ninth logic gate e1 corresponds to a further OR gate and receives the second control signal m 2 at a first input. A second input is connected to the output of the first logic gate 31 connected and the output of the ninth logic gate e1 is connected to an input of the tenth logic gate e2. The tenth logic gate e2 corresponds to an AND gate and receives the first control signal m 1 provided at a first input. Furthermore, the tenth logic gate e2 is connected to the output of the ninth logic gate e1 with a second input and provides at its output the generate signal g i at an output of the arithmetic unit A i . The tenth logic gate e3 receives the first control signal m 1 at a first input and corresponds to an AND gate. A second input of the tenth logic gate e3 is connected to the output of the second logic gate 32 connected. Furthermore, the eleventh logic gate e3 provides the propagation signal p i at its output. The twelfth logic gate e4 corresponds to a NAND gate (NAND gate) and receives the second control signal m 2 at a first input and the first control signal m 1 at a second inverted input. The output of the twelfth logic gate e4 is connected to an input of the thirteenth logic gate e5. The thirteenth logic gate e5 corresponds to an AND gate and has a first input to the output of the fourth logic gate 34 and a second input connected to the output of the twelfth logic gate e4. The output of the thirteenth logic gate e5 is connected to an input of the fifth logic gate 35 connected. The fourteenth logic gate e6 corresponds to an AND gate and receives the third control signal m 3 provided at a first input. A second input of the fourteenth logic gate e6 is connected to the output of the seventh logic gate 37 and the output of the fourteenth logic gate e6 is connected to an input of the eighth logic gate 38 connected.
Entsprechend der vorherigen Definition der Gattergruppen gehören das zweite Logikgatter 32, das dritte Logikgatter 33, das siebte Logikgatter 37, das achte Logikgatter 38 und das vierzehnte Logikgatter e6 zur ersten Gruppe von Verarbeitungsgattern und das zweite Logikgatter 32, das vierte Logikgatter 34, das fünfte Logikgatter 35, das sechste Logikgatter 36, das zwölfte Logikgatter e4 und das dreizehnte Logikgatter e5 zu der zweiten Gruppe von Verarbeitungsgattern. Das neunte bis vierzehnte Logikgatter gehören entsprechen der Definition zu der Gruppe der Kontrollgatter. According to the previous definition of the gate groups, the second logic gate belongs 32 , the third logic gate 33 , the seventh logic gate 37 , the eighth logic gate 38 and the fourteenth logic gate e6 to the first group of processing gates and the second logic gate 32 , the fourth logic gate 34 , the fifth logic gate 35 , the sixth logic gate 36 , the twelfth logic gate e4 and the thirteenth logic gate e5 to the second group of processing gates. The ninth to fourteenth logic gates belong to the definition of the group of control gates.
Das zweite Logikgatter 32 ist ein gemeinsames Verarbeitungsgatter der ersten Gruppe von Verarbeitungsgattern und der zweiten Gruppe von Verarbeitungsgattern.The second logic gate 32 is a common processing gate of the first group of processing gates and the second group of processing gates.
Das erste Logikgatter 31, das neunte Logikgatter e1 und das zehnte Logikgatter e2 berechnen ein Hilfsausgangssignal in Form des Generiere-Signals gi. Ebenso stellt das elfte Logikgatter e3 das vom zweiten Logikgatter generierte Propagiere-Signal pi als Hilfsausgangssignal zur Verfügung. Wird ein Hilfsausgangssignal weiterverarbeitet und/oder der Recheneinheit als Eingangssignal wieder bereitgestellt, so wie dies beispielsweise in 4 durch die Übertragsvorausberechnungseinheit (stellt Übertragssignale basierend auf dem Generiere-Signal und dem Propagiere-Signal zur Verfügung) der Fall ist, so kann das erste Logikgatter 31, das neunte Logikgatter e1, das zehnte Logikgatter e2 und das elfte Logikgatter e3 (oder allgemein solche Logikgatter, wie zum Beispiel auch die Gatter der Übertragsvorausberechnungseinheit) als Teil der ersten Gruppe von Verarbeitungsgattern und der zweiten Gruppe von Verarbeitungsgattern und somit, wie das zweite Logikgatter 32, als gemeinsames Verarbeitungsgatter angesehen werden.The first logic gate 31 , the ninth logic gate e1 and the tenth logic gate e2 calculate an auxiliary output signal in the form of the generate signal g i . Likewise, the eleventh logic gate e3 provides the propagation signal p i generated by the second logic gate as an auxiliary output signal. If an auxiliary output signal is further processed and / or provided to the arithmetic unit as an input signal again, as described, for example, in US Pat 4 by the carry pre-computation unit (providing carry signals based on the generate signal and the propagate signal), the first logic gate may 31 , the ninth logic gate e1, the tenth logic gate e2, and the eleventh logic gate e3 (or, more generally, such logic gates as, for example, the gates of the carry prediction unit) as part of the first group of processing gates and the second group of processing gates and thus, like the second logic gate 32 , be regarded as a common processing gate.
Im Gegensatz zu dem Beispiel aus 3 wird das Generiere-Signal gi am Ausgang des ersten Logikgatters 31 dieses Mal nicht direkt der Übertragungsvorausberechnungseinheit 830 zur Verfügung gestellt, sondern wird durch das neunte Logikgatter e1 und das zehnte Logikgatter e2 entsprechend der ausgewählte algebraische Funktion angepasst. Dadurch können indirekt die von der Übertragungsvorausberechnungseinheit 830 zur Verfügung gestellten Übertragungssignale ci, ci-1 beeinflusst werden.Unlike the example from 3 is the generate signal g i at the output of the first logic gate 31 not this time directly the transmission pre-calculation unit 830 but is adjusted by the ninth logic gate e1 and the tenth logic gate e2 according to the selected algebraic function. As a result, indirectly from the Übertragungsvorausberechnungseinheit 830 provided transmission signals c i , c i-1 are affected.
Um die folgenden Erläuterungen zu vereinfachen, wird die in 4 gezeigte ALU-Zelle im Folgenden als ALU-CLA-2 bezeichnet.To simplify the following explanations, the in 4 ALU cell shown below referred to as ALU-CLA-2.
Auch ALU-CLA-2 ist entsprechend den zuvor beschriebenen Techniken implementiert. Bei dieser Ausführung werden drei Kontrollsignale m1, m2 und m3 verwendet. Die Werte von m1, m2 und m3 und die entsprechenden Operationen sind in der folgenden Tabelle dargestellt: ALU-CLA-2 is also implemented according to the techniques described above. In this embodiment, three control signals m 1 , m 2 and m 3 are used. The values of m 1 , m 2 and m 3 and the corresponding operations are shown in the following table:
Die Addition wird ausgeführt, wenn m1 = 1, m2 = 0 und m3 = 0 sind. Durch m1 = 1 und m2 = 0 werden das Propagiere-Signal pi und das Generiere-Signal gi in jeder ALU-Zelle durch die Kontrollgatter e1, e2 und e3 geleitet und an die Eingänge der Carry Look-Ahead Einheit (Übertragsvorausberechnungseinheit) angelegt. Somit implementiert die Carry Look-Ahead Einheit die Übertragssignale (Übertragssignale) für jede ALU-Zelle. m3 = 0 blockt das Ausgangssignal des XOR-Gatters 37 und das Propagiere-Signal pi wird unverändert mit dem Übertragssignal ci-1 (XOR-Gatter 33), um die Summe am Ausgang si zu implementieren. Dank der „1” am Ausgang des Kontrollgatters e4 (m1 = 1 und m2 = 0) implementiert das NOR-Gatter 35 die Hilfsfunktion ƒi und die negierte Summe wird am Ausgang s i implementiert.The addition is carried out when m 1 = 1, m 2 = 0 and m 3 = 0. By m 1 = 1 and m 2 = 0, the propagate signal p i and the generate signal g i in each ALU cell are passed through the control gates e1, e2 and e3 and to the inputs of the carry look ahead unit (carry prediction unit ). Thus, the carry look-ahead unit implements the carry signals (carry signals) for each ALU cell. m 3 = 0 blocks the output signal of the XOR gate 37 and the propagate signal p i is unchanged with the carry signal c i-1 (XOR gate 33 ) to implement the sum at the output s i . Thanks to the "1" at the output of the control gate e4 (m1 = 1 and m 2 = 0), the NOR gate implements 35 the auxiliary function ƒ i and the negated sum is output s i implemented.
Im Fall der logischen AND-Operation sind alle Kontrollsignale m1, m2 und m3 gleich „1”. Durch m1 = 1 und m2 = 1 sind alle Propagiere- und Generiere-Signale, die an die Eingänge der Carry Look-Ahead Einheit angelegt werden, gleich „1” und als Folge sind auch alle Übertragssignale (darunter ci-1 und ci) gleich „1”. Um die AND-Funktion zu implementieren, wird der Input bi zunächst invertiert, indem er mit m2 = 1 xoriert (XOR-Gatter 37) wird. Dann wird der invertierte Input b i mit dem Propagiere-Signal pi verodert (OR-Gatter 38), weil m3 = 1 am Input des Kontrollgatters e6 anliegt. Schließlich wird b i ∨ ai ⊕ bi invertiert, indem es mit ci-1 = 1 verxoriert wird. Die Inverse der AND-Funktion, NAND-Funktion, wird am Ausgang s i implementiert, weil die Carries ci-1 und ci (Übertragssignale) gleich „1” sind. Das kann geprüft werden, indem man ci-1 = 1 und ci = 1 in der Gleichung 3 einsetzt.In the case of the logical AND operation, all the control signals m 1 , m 2 and m 3 are equal to "1". By m 1 = 1 and m 2 = 1, all propagate and generate signals applied to the inputs of the carry look-ahead unit are equal to "1" and as a result all carry signals (including c i-1 and c i ) equals "1". To implement the AND function, the input b i is first inverted by x 2ing it with m 2 = 1 (XOR). gate 37 ) becomes. Then the inverted input b i with the propagation signal p i ORED (OR gate 38 ), because m 3 = 1 is present at the input of the control gate e6. Finally will b i ∨ a i ⊕ b i inverted by being versed with c i-1 = 1. The inverse of the AND function, NAND function, is output s i implemented because the carry c i-1 and c i (carry signals) are equal to "1". This can be tested by using c i-1 = 1 and c i = 1 in Equation 3.
Die OR-Operation wird ausgewählt, wenn m1 und m2 gleich „0” und m3 gleich „1” sind. Weil m1 = 0 ist, sind alle Übertragssignale (darunter ci-1, und ci) gleich „0”. Für m2 = 0 kommt der Input bi durch das XOR-Gatter 37 ohne Veränderungen durch und wird mit dem Propagiere-Signal pi verodert (OR-Gatter 38). Dabei blockt das Kontrollgatter e6 den Input bi nicht (m3 = 1). Weil ci-1 gleich „0” ist, wird die Funktion bi ⊕ pi = ai ∨ bi zu den Ausgang si propagiert. Der Ausgang s i implementiert die NOR-Funktion, weil ci-1 und ci gleich „0” sind. Das kann geprüft werden, indem man ci-1 = 0 und ci = 0 in der Gleichung 3 einsetzt.The OR operation is selected when m 1 and m 2 are equal to "0" and m 3 equal to "1". Because m 1 = 0, all carry signals (including c i-1 , and c i ) are equal to "0". For m 2 = 0, the input b i comes through the XOR gate 37 without changes through and is ORed with the propagation signal p i (OR gate 38 ). The control gate e6 does not block the input b i (m 3 = 1). Because c i-1 "0", the function b i ⊕ p i = a i b i ∨ to the output s i is propagated. The exit s i implements the NOR function because c i-1 and c i are equal to "0". This can be tested by using c i-1 = 0 and c i = 0 in Equation 3.
Für m1 = 0, m2 = 1 und m3 = 0 wird XOR-Operation ausgewählt. Weil m1 = 0 ist, sind alle Übertragssignale (darunter ci-1 und ci) gleich „0”. Die Kontrollgatter e5 und e6 blockieren die Ausgangssignale der Gatter 34 und 37. Somit implementiert der Ausgang si die Propagiere-Funktion pi = ai ⊕ bi und der Ausgang s i implementiert die negierte Propagiere-Funktion For m 1 = 0, m 2 = 1 and m 3 = 0, XOR operation is selected. Because m 1 = 0, all carry signals (including c i-1 and c i ) are equal to "0". The control gates e5 and e6 block the output signals of the gates 34 and 37 , Thus, the output s i implements the propagation function p i = a i b i and the output s i implements the negated propagator function
Außer der Steuerlogik (Gatter e1 – e6) werden nur zwei Gatter (XOR-Gatter 37 und OR-Gatter 38) pro ALU-Zelle (ALU-CLA-1 oder ALU-CLA-2) hinzugefügt (in Bezug auf z. B. 8), um die logischen Operationen zu implementieren. Die Carry Look-Ahead Einheit ist in den ALU-CLA-1 und ALU-CLA-2 nicht verdoppelt. Deshalb ist der Hardware-Overhead der vorgeschlagenen selbstprüfenden ALU niedriger als der Hardware-Overhead bei der Methode der Verdopplung und Vergleich und vergleichbar mit dem Hardware-Overhead von einer paritätsgeprüften ALU (z. B. „M. Nicolaidis. Implementation Techniques of Self-Checking Arithmetic Operators and Data Paths Based on Double-Rail and Parity Codes. US Patent No. 5450340 , 1995”).Except the control logic (gates e1 - e6) only two gates (XOR gates 37 and OR gates 38 ) per ALU cell (ALU-CLA-1 or ALU-CLA-2) (with respect to eg 8th ) to implement the logical operations. The carry look-ahead unit is not doubled in the ALU-CLA-1 and ALU-CLA-2. Therefore, the hardware overhead of the proposed self-verifying ALU is lower than the hardware overhead in the method of duplication and comparison and comparable to the hardware overhead of a parity-verified ALU (e.g., "M. Nicolaidis." Implementation Techniques of Self-Checking Arithmetic Operators and Data Paths Based on Double-Rail and Parity Codes. US Pat. 5450340 , 1995 ").
In der ALU-CLA-1 werden Übertragssignale direkt mit Hilfe der Kontrollgatter e1 und e3 manipuliert. Die Steuerlogik der ALU-CLA-2 (Kontrollgatter e1, e2 und e3) manipuliert dagegen Propagiere- und Generiere-Signale und dadurch indirekt die Übertragssignale. Wenn Übertragssignale auf „0” gesetzt werden sollen, wird Carry Look-Ahead Einheit einfach abgeschaltet, indem alle Propagiere- und Generiere-Signale auf „0” gesetzt werden. Dadurch kann der Stromverbrauch reduziert werden.In the ALU-CLA-1, carry signals are manipulated directly using the control gates e1 and e3. By contrast, the control logic of the ALU CLA-2 (control gates e1, e2 and e3) manipulates propagation and generation signals and thereby indirectly the carry signals. When carry signals are to be set to "0", the Carry Look-Ahead unit is simply turned off by setting all propagate and generate signals to "0". This can reduce power consumption.
In der ALU-CLA-2 werden drei Kontrollsignale m1, m2 und m3 verwendet. Damit können acht (23 = 8) mögliche Operationen kodiert werden. Vier davon sind illegale Operationen (siehe vorherige Tabelle). Im Fall einer illegalen Operation werden unterschiedliche Funktionen an den Ausgängen si und s i der ALU-CLA-2 implementiert. Weil diese Funktionen zueinander nicht invers sind, ist die Bedingung si ≠ s i nicht immer erfüllt und die illegalle Operation wird erkannkt. Das Kontrollsignal m3 hat z. B. inverse Parität der Kotrollsignalen m1 und m2. Dadurch können Fehler erkannt werden, die eine ungerade Anzahl der Kontrollsignalen verfälschen.In the ALU-CLA-2, three control signals m 1 , m 2 and m 3 are used. Thus, eight (2 3 = 8) possible operations can be coded. Four of them are illegal operations (see previous table). In the case of an illegal operation, different functions on the outputs s i and s i the ALU-CLA-2 implemented. Because these functions are not inverse to each other, the condition is s i ≠ s i not always met and the illegal operation is recognized. The control signal m 3 has z. B. inverse parity of the Kotrollsignalen m 1 and m 2 . As a result, errors can be detected that falsify an odd number of control signals.
Die vorgeschlagene selbstprüfende ALU kann alle einzelne Haft-Fehler (single stuck-at faults) erkennen. Ein Haftfehler ist beispielsweise ein Fehler bei dem ein Signal (z. B. Ausgangssignal eines Logikgatters) dauerhaft auf einem festen Logikpegel (0 oder 1) festhängt.The proposed self-checking ALU can detect all single stuck-at faults. An adhesion error is, for example, an error in which a signal (eg output of a logic gate) is permanently stuck at a fixed logic level (0 or 1).
Die Erkennung der verschiedenen möglichen Haft-Fehler wird im Folgenden betrachtet:
Fehler in den Operanden a und bi die eine ungerade Anzahl der Bits in den Operanden verfälschen, können durch den Vergleich von pa ⊕ pb mit p(a ⊕ b) erkannt werden.Detection of the various possible detention errors is considered below:
Errors in the operands a and b i, which falsify an odd number of bits in the operands, can be detected by comparing p a ⊕ p b with p (a ⊕ b).
Alle einzelnen Haft-Fehler im XOR-Baum für die Implementierung der Parität p(a ⊕ b) und im XOR-Gatter für die Implementierung von pa ⊕ pb können durch den Vergleich von pa ⊕ pb mit p(a ⊕ b) erkannt werden.All individual sticking errors in the XOR tree for the implementation of the parity p (a ⊕ b) and in the XOR gate for the implementation of p a ⊕ p b can be calculated by comparing p a ⊕ p b with p (a ⊕ b ) be recognized.
Alle einzelne Haft-Fehler in der ALU-Zelle ALU-CLA-2 können zum Beispiel wie folgt erkannt werden:
Fehler im Gatter 31 verfälschen Generiere-Signal gi. Als Folge implementiert Carry Look-Ahead Einheit ein fehlerhaftes Übertragssignal ci. In der Ai wird ci nur für die Implementierung von s i verwendet. Der betrachtete Fehler wird durch den Vergleich von si mit s i erkannt. Für die logischen Operationen ist der Fehler redundant, weil die Kontrollsignale m1 und m2 den Ausgang des Kontrollgatters e2 unabhängig von dem Wert von gi steuern.For example, all individual sticking faults in the ALU cell ALU-CLA-2 can be recognized as follows:
Error in the gate 31 falsify generate signal g i . As a result, carry look-ahead unit implements an erroneous carry signal c i . In A i , c i is only used for the implementation of s i used. The considered error is by comparing s i with s i recognized. For the logical operations, the error is redundant because the control signals m 1 and m 2 control the output of the control gate e2 independently of the value of g i .
Fehler im Gatter 32 werden erkannt, indem man die Parität p(a ⊕ b) mit der Parität pa ⊕ pb vergleicht. Gatter 32 implementiert das Propagiere-Signal pi. Weil pi immer geprüft wird, kann es für die Implementierung von si und s i geteilt werden. Wird das Propagiere-Signal pi, das an die Carry Look-Ahead Einheit angelegt wird, verfälscht, dann wird das änlich wie Fehler im Gatter 31 erkannt. Error in the gate 32 are detected by comparing the parity p (a ⊕ b) with the parity p a ⊕ p b . gate 32 implements the propagate signal p i . Because p i is always checked, it can be used for the implementation of s i and s i to be shared. If the propagate signal p i , which is applied to the carry look-ahead unit, falsified, then this is similar to errors in the gate 31 recognized.
Fehler in der Übertragsvorausberechnungseinheit können ähnlich wie Fehler in den Gattern 31 und 32 erkannt werden.Errors in the carry prediction unit can be similar to errors in the gates 31 and 32 be recognized.
Fehler in den Gatter 37, 38 und 33 verursachen einen fehlerhaften Output si. Sie werden durch den Vergleich von si mit s i erkannt.Error in the gate 37 . 38 and 33 cause a faulty output s i . They are by comparing s i with s i recognized.
Wegen den Fehlern in den Gatter 34, 35 und 36 wird der Output s i verfälscht. Die betrachteten Fehler werden erkannt, indem man si und s i vergleicht.Because of the mistakes in the gates 34 . 35 and 36 becomes the output s i falsified. The considered errors are recognized by s i and s i compares.
Wegen den Fehlern in den Kotrollgatter e1, e2 und e3 werden Generiere-Signal gi und Propagiere-Signal pi verfälscht, die an die Carry Look-Ahead Einheit angelegt werden. Als Folge implementiert Carry Look-Ahead Einheit ein fehlerhaftes Übertragssignal ci, das in der ALU-Zelle Ai für die Implementierung von s i verwendet wird. Die betrachteten Fehler werden beim Vergleich von si mit s i entdeckt.Because of the errors in the Kotrollgatter e1, e2 and e3 Generate signal are i and g propagated distorted signal p i, which are applied to the carry look-ahead unit. As a consequence, Carry Look-Ahead unit implements a faulty carry signal c i that is used in the ALU cell A i for the implementation of s i is used. The considered errors become with the comparison of s i with s i discovered.
Fehler in den Kontrollgatter e4 und e5 verursachen den fehlerhaften Output s i . Sie werden durch Vergleich von si mit s i erkannt.Errors in the control gates e4 and e5 cause the faulty output s i , They are compared by s i with s i recognized.
Wegen den Fehlern im Kontrollgatter e6 wird der Output si fehlerhaft. Das wird erkannt, indem man si und s i vergleicht.Because of the errors in the control gate e6, the output s i becomes faulty. This is recognized by s i and s i compares.
Fehler in den Kontrollsignalen m1, m2 und m3, die eine ungerade Anzahl von ihnen verfälschen, werden erkannt, weil m3 die inverse Parität von m1 und m2 hat. Bei diesen Fehlern werden die illegalen Operationen ausgewählt. Anhand der vorherigen Tabelle kann man feststellen, dass bei jeder der illegalen Operationen die Funktionen, die an den Ausgängen si und s i ausgeführt werden, zueinander nicht invers sind. Dadurch wird die Bedingung si ≠ s i nicht immer erfüllt und die illegale Operation wird erkannt.Errors in the control signals m 1 , m 2 and m 3 , which falsify an odd number of them, are recognized because m 3 has the inverse parity of m 1 and m 2 . For these errors, the illegal operations are selected. From the previous table, it can be seen that in each of the illegal operations the functions that are at the outputs s i and s i are executed, not inverse to each other. This will be the condition s i ≠ s i not always met and the illegal operation is detected.
Die Arithmetik-Logik-Einheit 400 stellt beispielsweise eine selbstprüfende ALU-Zelle Ai auf der Basis von Paralleladdierern mit Übertragsvorausberechnung (Carry-Look-Ahead Addierer) oder genauer eines Summenbit-Paralleladdierers mit Übertragsvorausberechnung (Sum Bit Carry-Look-Ahead Addierer) dar.The arithmetic logic unit 400 represents, for example, a self-verifying ALU cell A i on the basis of parallel adders with carry-ahead-ahead adder or more precisely a sum bit carry adder with a sum bit carry-ahead adder.
Einige Ausführungsbeispiele gemäß der Erfindung basieren auf dem Prinzip eines Standard-Ripple-Addierers oder eines Fast-Ripple-Addierers, wie er beispielsweise in 9 und 10 gezeigt ist.Some embodiments according to the invention are based on the principle of a standard ripple adder or a fast-ripple adder, as described, for example, in US Pat 9 and 10 is shown.
In einer herkömmlichen Ripple-Addierer-Zelle oder Carry Ripple Addierer-Zelle (Übertrags-Riesel-Addierer-Zelle) werden das Sum-Bit si nach der Gleichung 1 und das Übertrags-Bit ci z. B. nach der Formel: ci = aibi ∨ (ai ⊕ bi)ci-1 = gi ∨ pici-1 (4) bestimmt. Die Addierer-Zellen werden nacheinander gekettet. Um das Sum-Bit mit dem höchsten Stellenwert (MSB) zu berechnen, müssen die Übertrags-Bits in allen vorigen Zellen bestimmt werden. Das verursacht eine signifikante Verzögerung bei der Berechnung der Summe. Diese Verzögerung kann reduziert werden, wenn die Fast Ripple Addierer-Zellen aus „M. J. Smith. Application-Specific Integrated Circuits. Adison Wesley, Reading, MA, 1997.” verwendet werden. In den Fast Ripple Addierer-Zellen wird ein einfaches Übertragssignal cj der herkömmlichen Zelle (Gleichung 4) durch zwei Übertragssignale C1j und C2j ersetzt, wobei j ein gerader Index ist, und durch C3j und C4j ersetzt, wobei j ein ungerader Index ist, ersetzt: In a conventional ripple adder cell or carry ripple adder cell, the sum bit s i according to Equation 1 and the carry bit c i z. For example, according to the formula: c i = a i b i ∨ (a i ⊕ b i ) c i-1 = g i ∨ p i c i-1 (4) certainly. The adder cells are sequentially chained. To calculate the highest order sum bit (MSB), the carry bits in all previous cells must be determined. This causes a significant delay in the calculation of the sum. This delay can be reduced if the Fast Ripple Adder cells from "MJ Smith. Application-Specific Integrated Circuits. Adison Wesley, Reading, MA, 1997. ". In the fast ripple adder cells a simple carry signal c j of the conventional cell (equation 4) by two carry signals C1 j and C2 j is replaced, where j is a straight index, and replaced by C3 j and C4 j, where j is an odd Index is, replaced:
Der Fast Ripple Addierer kann z. B. vergleichsweise schnell sein, weil die Verzögerung für die Berechnung der Übertragssignale einer Verzögerung des NAND-Gatters 94 pro Addierer-Zelle entspricht.The Fast Ripple adder can z. B. be comparatively fast, because the delay for the calculation of the carry signals of a delay of the NAND gate 94 per adder cell corresponds.
Der Fast Ripple Addierer wurde beim Entwurf von unterschiedlichen selbstprüfenden Addierer (z. B. „D. Marienfeld and V. Ocheretnij and M. Gössel and E. S. Sogomonyan. Partially Duplicated Code-Disjoint Carry Skip Adder. Proceedings of 7th IEEE International Symposium on DEFECT and FAULT TOLERANCE in VLSI Systems, pages 78–86, 2002”; E. S. Sogomonyan and D. Marienfeld and V. Ocheretnij and M. Gössel. A New Self-Checking Sum Bit-Duplicated Carry Select Adder. Proceedings of Design, Automation and Test in Europe Conference – DATE, pages 1360–1361, 2004”; E. S. Sogomonyan and D. Marienfeld and V. Ocheretnij and M. Gössel. Self-Checking Carry Select Adder with Sum Bit-Duplication. Proceedings of ARCS – Organic and Pervasive Computing, pages 84–91, 2004”) verwendet. The Fast Ripple Adder has been used in the design of various self-checking adders (e.g., D. Marienfeld and V. Ocheretnij and M. Gössel and ES Sogomonyan, Partially Duplicated Code-Disjoint Carry Skip Adder Proceedings of the 7th IEEE International Symposium on DEFECT and FAULT TOLERANCE in VLSI Systems, pages 78-86, 2002; ES Sogomonyan and D. Marienfeld and V. Ocheretnij and M. Gössel A New Self-Checking Sum Bit-Duplicated Carry Select Adder Proceedings of Design, Automation and Test in Europe Conference - DATE, pages 1360-1361, 2004; ES Sogomonyan and D. Marienfeld and V. Ocheretnij and M. Gössel Self-Checking Carry Select Adder with Sum Bit-Duplication Proceedings of ARCS - Organic and Pervasive Computing, pages 84-91, 2004 ").
Ein neuer selbstprüfender Fast Ripple Addierer wurde entwickelt. Zwei nacheinander folgenden Zellen des vorgeschlagenen Addierer sind in 9 dargestellt. Um die Erläuterungen zu vereinfachen, werden sie im Folgenden als FR-ADD bezeichnet.A new self-checking Fast Ripple adder has been developed. Two consecutive cells of the proposed adder are in 9 shown. To simplify the explanations, they are referred to as FR-ADD below.
FR-ADD implementiert sowohl die Sum-Bits si und si+1 (Summenbits) als auch die entsprechenden negierten Sum-Bits s i und s i+1 . Die Gatter von 91 bis 96 stellen den Fast Ripple Addierer von „M. J. Smith. Application-Specific Integrated Circuits. Adison Wesley, Reading, MA, 1997” dar. Um die negierten Sum-Bits zu implementieren, wird die Hilfsfunktion ƒ (Gleichung 2) verwendet. Dabei besteht der zusätzliche Hardware-Overhead nur aus drei Gatter (97–99) pro Zelle. Das Propagiere-Signal pi wird in der Zelle Ai für die Implementierung von si, ƒi und C3i geteilt. Entsprechend wird das Propagiere-Signal pi+1 für die Implementierung von si+1, ƒi+1 und C1i+1 geteilt. Die Gatter 95 implementieren Übertragssignale ci-1 und ci, die an die vorigen Zellen angeschlossen werden (ci-1 an Ai-1 und ci an Ai).FR-ADD implements both sum bits s i and s i + 1 (sum bits) as well as the corresponding negated sum bits s i and s i + 1 , The gates of 91 to 96 make the Fast Ripple adder from "MJ Smith. Application-Specific Integrated Circuits. Adison Wesley, Reading, MA, 1997. "In order to implement the negated sum bits, the auxiliary function ƒ (Equation 2) is used. The additional hardware overhead consists of only three gates (97-99) per cell. The propagate signal p i is divided in the cell A i for the implementation of s i , ƒ i and C3 i . Accordingly, the propagate signal p i + 1 is divided for the implementation of s i + 1 , ƒ i + 1 and C1 i + 1 . The gates 95 implement carry signals c i-1 and c i which are connected to the previous cells (c i-1 to A i-1 and c i to A i ).
In beiden gezeigten Recheneinheiten Ai, Ai+1 werden die Logikgatter 92, 95 und 96 zur Berechnung des Summenbits si verwendet und die Logikgatter 92, 95, 97, 98 und 99 zur Berechnung des negierten s i herangezogen. Des Weiteren dienen die Logikgatter 91, 93 und 94 zur Bereitstellung von Hilfsausgangssignalen, die zur Berechnung von Übertragssignalen ci (Übertragssignal) benötigt werden. Die beiden Recheneinheiten Ai, Ai+1 unterscheiden sich nur durch das Logikgatter 91, welches in der Recheneinheit Ai ein NAND-Gatter und in der Recheneinheit Ai+1 ein OR-Gatter ist, und das Logikgatter 95, welches in der Recheneinheit Ai ein UND-Gatter und in der Recheneinheit Ai+1 ein Nicht-UND-Gatter ist.In both arithmetic units A i , A i + 1 shown , the logic gates 92 . 95 and 96 used to calculate the sum bit s i and the logic gates 92 . 95 . 97 . 98 and 99 to calculate the negated s i used. Furthermore, the logic gates are used 91 . 93 and 94 for providing auxiliary output signals needed to calculate carry signals c i (carry signal). The two arithmetic units A i , A i + 1 differ only by the logic gate 91 Which is an OR gate in the arithmetic unit A i, a NAND gate and in the arithmetic unit A i + 1, and the logic gate 95 Which is in the arithmetic unit A i an AND gate and in the arithmetic unit A i + 1 is a non-AND gate.
11 zeigt ein Blockdiagramm einer Arithmetik-Logik-Einheit 1100 zur Verarbeitung eines ersten binären Eingangssignals ai und eines zweiten binären Eingangssignals b1 entsprechend einer auswählbaren algebraischen Funktion gemäß einem Ausführungsbeispiel der Erfindung. Die Arithmetik-Logik-Einheit 1100 umfasst eine Recheneinheit Ai und einen nicht-gezeigten Fehlerdetektor. 11 shows a block diagram of an arithmetic logic unit 1100 for processing a first binary input signal a i and a second binary input signal b 1 according to a selectable algebraic function according to an embodiment of the invention. The arithmetic logic unit 1100 comprises a computing unit A i and a fault detector, not shown.
Die Recheneinheit Ai ist mit dem nicht-gezeigten Fehlerdetektor sowie optional mit einer vorhergehenden und/oder einer nachfolgenden Recheneinheit verbunden. Der Recheneinheit Ai werden als Eingangssignale das erste binäre Eingangssignal ai, das zweite binäre Eingangssignal bi, ein erstes Kontrollsignal ml, ein zweites Kontrollsignal m2, ein Übertragssignal ci-1 einer vorhergehenden Recheneinheit und ein eigenes Übertragssignal ci der Recheneinheit Ai zur Verfügung gestellt. Umgekehrt stellt die Recheneinheit Ai das erste binäre Ausgangsignal si, das zweite binäre s i , ein Propagiere-Signal pi und ein Übertragssignal ci-1 einer vorhergehenden Recheneinheit zur Verfügung.The arithmetic unit A i is connected to the error detector, not shown, as well as optionally to a preceding and / or a subsequent arithmetic unit. The arithmetic unit A i are as input signals the first binary input signal a i , the second binary input signal b i , a first control signal m l , a second control signal m 2 , a carry signal c i-1 of a previous arithmetic unit and a separate carry signal c i of the arithmetic unit A i provided. Conversely, the arithmetic unit A i, the first binary output signal s i , the second binary s i , a propagate signal p i and a carry signal c i-1 of a preceding arithmetic unit.
Die Recheneinheit Ai umfasst ein erstes bis sechzehntes Logikgatter. Dabei ist das erste Logikgatter 71 ein UND-Gatter, und verknüpft das erste binäre Eingangssignal ai und das zweite binäre Eingangssignal bi entsprechend einer logischen UND-Verknüpfung und ist mit einem Ausgang mit einem Eingang des vierten Logikgatters 74 verbunden. Bei dem zweiten Logikgatter 72 handelt es sich um ein XOR-Gatter, an dessen Eingängen das erste binäre Eingangssignal ai und das zweite binäre Eingangssignal bi anliegen, und das entsprechend einer logischen XOR-Funktion das Propagiere-Signal pi erzeugt und an einem Ausgang der Recheneinheit Ai bereitstellt. Das zweite Logikgatter 72 stellt das Propagiere-Signal pi sowohl als Hilfsausgangssignal als auch als Eingangssignal für das dritte Logikgatter 73, das fünfte Logikgatter 75 und das achte Logikgatter 78 zur Verfügung. Das dritte Logikgatter 73 entspricht einem XOR-Gatter und ist mit einem ersten Eingang mit einem Ausgang des zweiten Logikgatters 72 verbunden und bekommt an einem zweiten Eingang das Übertragssignal ci-1 der vorhergehenden Recheneinheit bereitgestellt. Das dritte Logikgatter 73 ist mit einem Ausgang mit einem Eingang des vierten Logikgatters 74 verbunden. Das vierte Logikgatter 74 entspricht einem ODER-Gatter und ist mit einem ersten Eingang mit dem Ausgang des ersten Logikgatters 71 und mit einem zweiten Eingang mit einem Ausgang des dritten Logikgatters 73 verbunden. Der Ausgang des vierten Logikgatters 74 stellt das eigenes Übertragssignal ci zur Verfügung. Das fünfte Logikgatter 75 ist ein weiteres ODER-Gatter, wobei ein erster Eingang des fünften Logikgatters 75 mit dem Ausgang des zweiten Logikgatters 72 und ein zweiter Eingang des fünften Logikgatters 75 mit einem Ausgang des fünfzehnten Logikgatters e5 verbunden ist. Der Ausgang des fünften Logikgatters 75 ist mit einem Eingang des sechsten Logikgatters 76 verbunden. Das sechste Logikgatter 76 entspricht einem XOR-Gatter und erhält an einem zweiten Eingang das Übertragssignal ci-1 der vorhergehenden Recheneinheit bereitgestellt. Ein erster Eingang des sechsten Logikgatters 76 ist mit dem Ausgang des fünften Logikgatters 75 verbunden. Der Ausgang des sechsten Logikgatters 36 stellt das erste binäre Ausgangssignal si bereit. Des Weiteren entspricht das siebte Logikgatter 77 einem XOR-Gatter und erhält an einem ersten Eingang das erste binäre Eingangssignal ai bereitgestellt und ist mit einem zweiten Eingang mit einem Ausgang des dreizehnten Logikgatters e3 verbunden. Der Ausgang des siebten Logikgatters 77 ist mit einem Eingang des fünfzehnten Logikgatters e5 verbunden. Das achte Logikgatter 78 entspricht einem NOR-Gatter und ist mit einem ersten Eingang mit dem Ausgang des zweiten Logikgatters 72 und mit einem zweiten Eingang mit dem Ausgang des fünfzehnten Logikgatters e5 verbunden. Der Ausgang des achten Logikgatters 78 ist mit einem Eingang des neunten Logikgatters 79 verbunden. Das neunte Logikgatter 79 entspricht einem XOR-Gatter und erhält an einem zweiten Eingang das eigene Übertragssignal ci bereitgestellt und ist mit einem zweiten Eingang mit dem Ausgang des achten Logikgatters 78 verbunden. Der Ausgang des neunten Logikgatters 79 stellt das zweiten binären Ausgangssignal s i zur Verfügung. Das zehnte Logikgatter 70 entspricht einem XOR-Gatter und erhält an einem ersten Eingang das zweite binäre Eingangssignal bi und an einem zweiten Eingang des zweite Kontrollsignal m2 zur Verfügung gestellt. Der Ausgang des zehnten Logikgatters 70 ist mit einem Eingang des sechzehnten Logikgatters e6 verbunden. Des Weiteren erhält das elfte Logikgatter e1, das einem ODER-Gatter entspricht, an einem ersten Eingang das Übertragssignal ci-1 der vorhergehenden Recheneinheit und an einem zweiten Eingang das zweite Kontrollsignal m2 zur Verfügung gestellt.The arithmetic unit A i comprises a first to sixteenth logic gate. Here is the first logic gate 71 an AND gate, and combines the first binary input signal a i and the second binary input signal b i according to a logical AND operation and is connected to an output with an input of the fourth logic gate 74 connected. At the second logic gate 72 If it is an XOR gate, to whose inputs the first binary input signal a i and the second binary input signal b i abut, and corresponding to a logical XOR function, the propagating signal p i generated at an output of the arithmetic unit A i provides. The second logic gate 72 represents the propagate signal p i both as an auxiliary output signal and as an input signal for the third logic gate 73 , the fifth logic gate 75 and the eighth logic gate 78 to disposal. The third logic gate 73 corresponds to an XOR gate and is connected to a first input to an output of the second logic gate 72 connected and gets at a second input the carry signal c i-1 of the previous processor provided. The third logic gate 73 is with an output with an input of the fourth logic gate 74 connected. The fourth logic gate 74 corresponds to an OR gate and is connected to a first input to the output of the first logic gate 71 and a second input having an output of the third logic gate 73 connected. The output of the fourth logic gate 74 provides the own carry signal c i . The fifth logic gate 75 is another OR gate, wherein a first input of the fifth logic gate 75 with the output of the second logic gate 72 and a second input of the fifth logic gate 75 with an exit of the fifteenth Logic gate e5 is connected. The output of the fifth logic gate 75 is with an input of the sixth logic gate 76 connected. The sixth logic gate 76 corresponds to an XOR gate and receives the carry signal c i-1 of the preceding arithmetic unit at a second input. A first input of the sixth logic gate 76 is at the output of the fifth logic gate 75 connected. The output of the sixth logic gate 36 provides the first binary output signal s i . Furthermore, the seventh logic gate corresponds 77 an XOR gate and receives at a first input the first binary input signal a i provided and is connected to a second input to an output of the thirteenth logic gate e3. The output of the seventh logic gate 77 is connected to an input of the fifteenth logic gate e5. The eighth logic gate 78 corresponds to a NOR gate and is connected to a first input to the output of the second logic gate 72 and a second input connected to the output of the fifteenth logic gate e5. The output of the eighth logic gate 78 is with an input of the ninth logic gate 79 connected. The ninth logic gate 79 corresponds to an XOR gate and receives at a second input its own carry signal c i provided and is connected to a second input to the output of the eighth logic gate 78 connected. The output of the ninth logic gate 79 represents the second binary output signal s i to disposal. The tenth logic gate 70 corresponds to an XOR gate and receives at a first input the second binary input signal b i and at a second input of the second control signal m 2 provided. The output of the tenth logic gate 70 is connected to an input of the sixteenth logic gate e6. Furthermore, the eleventh logic gate e1, which corresponds to an OR gate, receives the carry signal c i-1 of the preceding arithmetic unit at a first input and the second control signal m 2 at a second input.
Der Ausgang des elften Logikgatters e1 ist mit einem Eingang des dreizehnten Logikgatters e3 verbunden. Das zwölfte Logikgatter e2 entspricht einem XNOR-Gatter und erhält an einem ersten Eingang das zweite Kontrollsignal m2 und an einem zweiten Eingang das erste Kontrollsignal m1 bereitgestellt. Der Ausgang des zwölften Logikgatters e2 ist mit einem Eingang des sechzehnten Logikgatters e6 verbunden. Das dreizehnte Logikgatter e3 entspricht einem UND-Gatter und ist mit einem ersten Eingang mit dem Ausgang des elften Logikgatter e1 verbunden und erhält an einem zweiten Eingang das erste Kontrollsignal m1 bereitgestellt. Der Ausgang des dreizehnten Logikgatters e3 ist mit einem Eingang des sechsten Logikgatters 76 sowie einem Eingang des siebenten Logikgatters 77 verbunden und stellt das Übertragssignal ci-1 der vorhergehenden Recheneinheit zur Verfügung. Des Weiteren entspricht das vierzehnte Logikgatter e4 einem NAND-Gatter und erhält an einem ersten Eingang das zweite Kontrollsignal m2 und an einem zweiten invertierten Eingang das erste Kontrollsignal m1 bereitgestellt. Der Ausgang des vierzehnten Logikgatters e4 ist mit einem Eingang des fünfzehnten Logikgatters 75 verbunden. Das fünfzehnte Logikgatter e5 entspricht einem UND-Gatter und ist mit einem ersten Eingang mit dem Ausgang des siebenten Logikgatter 77 und mit einem zweiten Eingang mit dem Ausgang des vierzehnten Logikgatters e4 verbunden. Der Ausgang des fünfzehnten Logikgatters e5 ist mit einem Eingang des achten Logikgatters 78 verbunden. Das sechzehnte Logikgatter e6 entspricht einem UND-Gatter und ist mit einem ersten Eingang mit dem Ausgang des zehnten Logikgatters 70 und mit einem zweiten Eingang mit dem Ausgang des zwölften Logikgatters e2 verbunden. Der Ausgang des sechzehnten Logikgatters e6 ist mit einem Eingang des fünften Logikgatters 75 verbunden.The output of the eleventh logic gate e1 is connected to an input of the thirteenth logic gate e3. The twelfth logic gate e2 corresponds to an XNOR gate and receives the second control signal m 2 at a first input and the first control signal m 1 at a second input. The output of the twelfth logic gate e2 is connected to an input of the sixteenth logic gate e6. The thirteenth logic gate corresponding to an AND gate E3 and is connected to a first input to the output of said eleventh logic gate e1 and receives at a second input the first control signal m 1 is provided. The output of the thirteenth logic gate e3 is connected to an input of the sixth logic gate 76 and an input of the seventh logic gate 77 connected and provides the carry signal c i-1 of the previous processing unit. Furthermore, the fourteenth logic gate corresponding to e4 a NAND gate and receives at a first input the second control signal provided m 2 and at a second inverted input of the first control signal m. 1 The output of the fourteenth logic gate e4 is connected to an input of the fifteenth logic gate 75 connected. The fifteenth logic gate e5 corresponds to an AND gate and has a first input to the output of the seventh logic gate 77 and a second input connected to the output of the fourteenth logic gate e4. The output of the fifteenth logic gate e5 is connected to an input of the eighth logic gate 78 connected. The sixteenth logic gate e6 corresponds to an AND gate and has a first input to the output of the tenth logic gate 70 and a second input connected to the output of the twelfth logic gate e2. The output of the sixteenth logic gate e6 is connected to an input of the fifth logic gate 75 connected.
Zieht man die bereits erwähnte Definition der Gattergruppen heran, wonach die erste Gruppe von Verarbeitungsgattern jenen Gattern entspricht, die zur Berechnung des ersten binären Ausgangssignals si notwendig sind, die zweite Gruppe von Verarbeitungsgattern jenen Gattern entspricht, die zur Berechnung des zweiten binären Ausgangssignals s i notwendig sind und die Gruppe von Kontrollgattern jene Logikgatter umfasst, bei denen zumindest ein Eingang ausschließlich von einem oder mehreren Kontrollsignalen abhängt, würde zur ersten Gruppe von Verarbeitungsgattern das zweite Logikgatter 72, das fünfte Logikgatter 75, das sechste Logikgatter 76, das zehnte Logikgatter 70, das elfte Logikgatter e1, das zwölfte Logikgatter e2, das dreizehnte Logikgatter e3 und das sechzehnte Logikgatter e6 gehören. Die zweite Gruppe von Verarbeitungsgattern würde das zweite Logikgatter 72, das siebente Logikgatter 77, das achte Logikgatter 78, das neunte Logikgatter 79, das elfte Logikgatter e1, das dreizehnte Logikgatter e3, das vierzehnte Logikgatter e4 und das fünfzehnte Logikgatter e5 umfassen. Des Weiteren gehören zu der Gruppe von Kontrollgattern das elfte bis fünfzehnte Logikgatter e1, e2, e3, e4, e5, e6, die auch erstes bis sechstes Kontrollgatter genannt werden.Taking the above-mentioned definition of the gate groups, according to which the first group of processing gates corresponds to those gates necessary for calculating the first binary output signal s i , the second group of processing gates corresponds to those gates used to calculate the second binary output signal s i are necessary and the set of control gates comprises those logic gates in which at least one input depends exclusively on one or more control signals, the second logic gate would become the first group of processing gates 72 , the fifth logic gate 75 , the sixth logic gate 76 , the tenth logic gate 70 , the eleventh logic gate e1, the twelfth logic gate e2, the thirteenth logic gate e3 and the sixteenth logic gate e6 belong. The second group of processing gates would be the second logic gate 72 , the seventh logic gate 77 , the eighth logic gate 78 , the ninth logic gate 79 , the eleventh logic gate e1, the thirteenth logic gate e3, the fourteenth logic gate e4 and the fifteenth logic gate e5. Furthermore, the group of control gates includes the eleventh to fifteenth logic gates e1, e2, e3, e4, e5, e6, which are also called first to sixth control gates.
Das zweite Logikgatter 72, das elfte Logikgatter e1 und das dreizehnte Logikgatter e3 sind gemeinsame Verarbeitungsgatter der ersten Gruppe von Verarbeitungsgattern und er zweiten Gruppe von Verarbeitungsgattern.The second logic gate 72 , the eleventh logic gate e1 and the thirteenth logic gate e3 are common processing gates of the first group of processing gates and the second group of processing gates.
Das erste Logikgatter 71, das dritte Logikgatter 73 und das vierte Logikgatter 74 berechnen ein Hilfsausgangssignal in Form des eigenen Übertragssignals ci. Wird ein Hilfsausgangssignal von einer Recheneinheit weiterverarbeitet, so wie dies beispielsweise in 11 durch eine nachfolgende Recheneinheit der Fall sein kann, so kann erste Logikgatter 71, das dritte Logikgatter 73 und das vierte Logikgatter 74 (oder allgemein solche Logikgatter) als Teil der ersten Gruppe von Verarbeitungsgattern und der zweiten Gruppe von Verarbeitungsgattern der nachfolgende Recheneinheit und somit, wie das zweite Logikgatter 72, das elfte Logikgatter e1 und das dreizehnte Logikgatter e3 der nachfolgende Recheneinheit, als gemeinsames Verarbeitungsgatter der nachfolgende Recheneinheit angesehen werden. Demzufolge können das erste Logikgatter 71, das dritte Logikgatter 73 und das vierte Logikgatter 74 einer vorhergehenden Recheneinheit als gemeinsames Verarbeitungsgatter der Recheneinheit Ai angesehen werden.The first logic gate 71 , the third logic gate 73 and the fourth logic gate 74 calculate an auxiliary output signal in the form of its own carry signal c i . If an auxiliary output signal is further processed by a computing unit, as described, for example, in US Pat 11 by a subsequent arithmetic unit of the case can be, so can first logic gates 71 , the third logic gate 73 and the fourth logic gate 74 (or in general, such logic gates) as part of the first group of processing gates and the second group of processing gates of the subsequent processing unit and thus, as the second logic gate 72 , the eleventh logic gate e1 and the thirteenth logic gate e3 of the subsequent arithmetic unit, are regarded as the common processing gate of the subsequent arithmetic unit. As a result, the first logic gate 71 , the third logic gate 73 and the fourth logic gate 74 a previous arithmetic unit as a common processing gate of the arithmetic unit A i are considered.
Die beschriebene Struktur von Logikgatter der Recheneinheit Ai kann sich in den weiteren Recheneinheiten der Arithmetik-Logik-Einheit (anderen ALU-Zellen) wiederholen. Dadurch können Eingangssignale mit mehreren parallelen Bits (bestehend aus mehreren ersten und zweiten binären Eingangssignalen) verarbeitet werden. Entsprechend ist dann ein Ausgangssignal mit mehreren parallelen Bits durch die Zusammenfassung der ersten binären Ausgangssignale oder der zweiten binären Ausgangssignale der Recheneinheiten der Arithmetik-Logik-Einheit gegeben.The described structure of logic gates of the arithmetic unit A i can be repeated in the further arithmetic unit of the arithmetic logic unit (other ALU cells). This allows input signals with multiple parallel bits (consisting of multiple first and second binary input signals) to be processed. Accordingly, an output signal having a plurality of parallel bits is then given by the combination of the first binary output signals or the second binary output signals of the arithmetic logic unit's arithmetic units.
5 zeigt ein Blickdiagramm einer Arithmetik-Logik-Einheit 500 zur Verarbeitung eines ersten binären Eingangssignals ai und eines zweiten binären Eingangssignals b1 entsprechend einer auswählbaren algebraischen Funktion gemäß einem Ausführungsbeispiel der Erfindung. Die Arithmetik-Logik-Einheit 500 umfasst eine erste Recheneinheit Ai, eine zweite Recheneinheit Ai+1 und einen nicht-gezeigten Fehlerdetektor. 5 shows a visual diagram of an arithmetic logic unit 500 for processing a first binary input signal a i and a second binary input signal b 1 according to a selectable algebraic function according to an embodiment of the invention. The arithmetic logic unit 500 comprises a first arithmetic unit A i , a second arithmetic unit A i + 1 and an error detector, not shown.
Die Recheneinheit Ai erhält als Eingangssignale das erste binäre Eingangssignal ai, das zweite binäre Eingangssignal bi, ein erstes Hilfsübertragssignal C1i-1 der vorhergehenden Recheneinheit, ein zweites Hilfsübertragssignal C2i-1 der vorhergehenden Recheneinheit, ein erstes Kontrollsignal m1, ein zweites Kontrollsignal m2 und ein eigenes Übertragssignals ci der Recheneinheit Ai bereitgestellt. Als Ausgangssignal liefert die Recheneinheit Ai das erste binäre Ausgangssignal si und das zweite binäre Ausgangssignal s i , ein Propagiere-Signal pi, ein Übertragssignal ci-1 der vorhergehenden Recheneinheit, ein erstes eigens Hilfsübertragssignal C3i und ein zweites eigenes Hilfsübertragungssignal C4i.The arithmetic unit A i receives as input signals the first binary input signal a i , the second binary input signal b i , a first auxiliary carry signal C1 i-1 of the preceding arithmetic unit, a second auxiliary carry signal C2 i-1 of the preceding arithmetic unit, a first control signal m 1 second control signal m 2 and a separate carry signal c i of the arithmetic unit A i provided. The arithmetic unit A i supplies the first binary output signal s i and the second binary output signal as an output signal s i , a propagate signal p i , a carry signal c i-1 of the preceding arithmetic unit, a first self-auxiliary carry signal C3 i and a second own auxiliary carry signal C4 i .
Die Recheneinheit Ai+1 bildet die nachfolgende Recheneinheit der Recheneinheit Ai und umgekehrt bildet die Recheneinheit Ai die vorhergehende Recheneinheit der Recheneinheit Ai+1. Dementsprechend erhält die Recheneinheit Ai+1 als Eingangssignale das erste Hilfsübertragssignal C3i der Recheneinheit Ai und das zweite Hilfsübertragssignal C4i der Recheneinheit Ai und stellt das Übertragssignal ci der Recheneinheit Ai zur Verfügung. Weitere Eingangssignale der Recheneinheit Ai+1 sind ein erstes binäres Eingangssignal ai+1, ein zweites binäres Eingangssignal bi+1, das erste Kontrollsignal m1, das zweite Kontrollsignal m2 und das eigene Übertragssignal ci+1 der Recheneinheit Ai+1. Als weitere Ausgangssignale stellt die Recheneinheit Ai+1 das erste binäre Ausgangssignal si+1, das zweite binäre Ausgangssignal s i+1 , ein erstes eigenes Hilfsübertragssignal C1i+1 der Recheneinheit Ai+1 und ein zweites eigenes Hilfsübertragssignal C2i+1 der Recheneinheit Ai+1 bereit.The arithmetic unit A i + 1 forms the following arithmetic unit of the arithmetic unit A i, and vice versa, the arithmetic unit A i forms the preceding arithmetic unit of the arithmetic unit A i + 1 . Accordingly, the arithmetic unit A i + 1 receives as input signals the first auxiliary carry signal C 3 i of the arithmetic unit A i and the second auxiliary carry signal C4 i of the arithmetic unit A i and provides the carry signal c i to the arithmetic unit A i . Further input signals of the arithmetic unit A i + 1 are a first binary input signal a i + 1 , a second binary input signal b i + 1 , the first control signal m 1 , the second control signal m 2 and the own carry signal c i + 1 of the arithmetic unit A i +1 . As further output signals, the arithmetic unit A i + 1 sets the first binary output signal s i + 1 , the second binary output signal s i + 1 , a first own auxiliary carry signal C1 i + 1 of the arithmetic unit A i + 1 and a second own auxiliary carry signal C2 i + 1 of the arithmetic unit A i + 1 ready.
Die erste Recheneinheit Ai umfasst ein erstes bis siebzehntes Logikgatter. Das erste Logikgatter 51 entspricht einem NAND-Gatter (NICHT-UND-Gatter) und erhält an einem ersten Eingang das zweite binäre Eingangssignal bi und an einem zweiten Eingang das erste binäre Eingangssignal ai bereitgestellt. Basierend auf den beiden Eingangssignalen stellt das erste Logikgatter 51 an einem Ausgang das zweite eigene Hilfsübertragssignals C4i bereit. Das zweite Logikgatter 52 entspricht einem XOR-Gatter und bekommt an einem ersten Eingang das zweite binäre Eingangssignal bi und an einem zweiten Eingang das erste binäre Eingangssignal ai zur Verfügung gestellt. Der Ausgang des zweiten Logikgatters 52 ist mit einem Eingang des dritten Logikgatters 53, mit einem Eingang des achten Logikgatters 58 und mit einem Eingang des elften Logikgatters 11 verbunden und stellt zusätzlich an einem Ausgang der Recheneinheit Ai das Propagiere-Signal pi zur Verfügung. Das dritte Logikgatter 53 entspricht einem UND-Gatter und ist mit einem ersten Eingang mit dem Ausgang des zweiten Logikgatters 52 verbunden. Des Weiteren erhält das dritte Logikgatter 53 an einem zweiten Eingang das zweite Hilfsübertragssignal C2i-1 der vorhergehenden Recheneinheit bereitgestellt und ist mit seinem Ausgang an einen Eingang des vierten Logikgatters 54 angeschlossen. Das vierte Logikgatter 54 entspricht einem NAND-Gatter und ist mit einem ersten Eingang mit dem Ausgang des dritten Logikgatters 53 verbunden. Zusätzlich erhält das vierte Logikgatter 54 an einem zweiten Eingang das erste Hilfsübertragungssignal C1i-1 zur Verfügung gestellt und stellt an seinem Ausgang das erste eigene Hilfsübertragssignal C3i der Recheneinheit Ai bereit. Das fünfte Logikgatter 55 entspricht einen UND-Gatter und erhält an einem ersten Eingang das zweite Hilfsübertragssignal C2i-1 der vorhergehenden Recheneinheit und an einem zweiten Eingang das erste Hilfsübertragssignal C1i-1 der vorhergehenden Recheneinheit bereitgestellt. Der Ausgang des fünften Logikgatters 55 ist mit einem Eingang des zwölften Logikgatters e1 verbunden. Des Weiteren entspricht das sechste Logikgatter 56 einem XOR-Gatter und ist mit einem ersten Eingang mit dem Ausgang des elften Logikgatters 11 und mit einem zweiten Eingang mit dem Ausgang des vierzehnten Logikgatters e3 verbunden. Das sechste Logikgatter 56 stellt an seinem Ausgang das erste binäre Ausgangssignal si zur Verfügung. Das siebte Logikgatter 57 entspricht einem XOR-Gatter und erhält an einem ersten Eingang das erste binäre Eingangssignal ai bereitgestellt. Des Weiteren ist das siebte Logikgatter 57 mit einem zweiten Eingang mit dem Ausgang des vierzehnten Logikgatters e3 und mit seinem Ausgang mit einem Eingang des sechzehnten Logikgatters e5 verbunden. Das achte Logikgatter 58 entspricht einen NOR-Gatter und ist mit einem ersten Eingang mit dem Ausgang des zweiten Logikgatters 52 und mit einem zweiten Eingang mit dem Ausgang des sechzehnten Logikgatters e5 verbunden. Der Ausgang des achten Logikgatters 58 ist mit einem Eingang des neunten Logikgatters 59 verbunden. Das neunte Logikgatter 59 ist mit einem ersten Eingang mit dem Ausgang des achten Logikgatters 58 verbunden und bekommt an einem zweiten Eingang das eigene Übertragssignal ci der Recheneinheit Ai von der Recheneinheit Ai+1 bereitgestellt. Das neunte Logikgatter 59 stellt das zweite binäre Ausgangssignal s i an seinem Ausgang bereit. Das zehnte Logikgatter 10 erhält an einem ersten Eingang das zweite binäre Eingangssignal bi und an einem zweiten Eingang das zweite Kontrollsignal m2 zur Verfügung gestellt. Der Ausgang des zehnten Logikgatters 10 ist mit einem Eingang des siebzehnten Logikgatters e6 verbunden. Das elfte Logikgatter 11 entspricht einem ODER-Gatter und ist mit einem ersten Eingang mit dem Ausgang des zweiten Logikgatters 52 und mit einem zweiten Eingang mit dem Ausgang des sechzehnten Logikgatter e6 verbunden. Der Ausgang des elften Logikgatters 11 ist mit einem Eingang des sechsten Logikgatters 56 verbunden. Das zwölfte Logikgatter e1 entspricht einem weiteren ODER-Gatter und ist mit einem ersten Eingang mit dem Ausgang des fünften Logikgatters 55 verbunden. Zusätzlich erhält das zwölfte Logikgatter e1 an einem zweiten Eingang das zweite Kontrollsignal m2 bereitgestellt und ist mit seinem Ausgang mit einem Eingang des vierzehnten Logikgatters e3 verbunden. Das dreizehnte Logikgatter e2 entspricht einem XNOR-Gatter und bekommt an einem ersten Eingang das zweite Kontrollsignal m2 und an einem zweiten Eingang das erste Kontrollsignal m1 bereitgestellt. Das dreizehnte Logikgatter e2 ist mit seinem Ausgang mit einem Eingang des siebzehnten Logikgatters e6 verbunden. Das dreizehnte Logikgatter e3 entspricht einem UND-Gatter und ist mit einem ersten Eingang mit dem Ausgang des zwölften Logikgatters e1 verbunden. Zusätzlich erhält das vierzehnte Logikgatter e3 an einem zweiten Eingang das erste Kontrollsignal m1 bereitgestellt und ist mit seinem Ausgang mit einem Eingang des siebten Logikgatters 57 und mit einem Eingang des sechsten Logikgatters 56 verbunden. Zusätzlich stellt das vierzehnte Logikgatter e3 das Übertragssignal ci-1 der vorhergehenden Recheneinheit zur Verfügung. Das fünfzehnte Logikgatter e4 entspricht einem NAND-Gatter und bekommt an einem ersten Eingang das zweite Kontrollsignal m2 und an einem zweiten invertierten Eingang das erste Kontrollsignal m1 bereitgestellt. Das fünfzehnte Logikgatter e4 ist mit seinem Ausgang mit einem Eingang des sechzehnten Logikgatters e5 verbunden. Das sechzehnte Logikgatter e5 entspricht einem UND-Gatter und ist mit einem ersten Eingang mit dem Ausgang des siebten Logikgatters 57 und mit einem zweiten Eingang mit dem Ausgang des fünfzehnten Logikgatters e4 verbunden. Der Ausgang des sechzehnten Logikgatters e5 ist mit einem Eingang des achten Logikgatters 58 verbunden. Des Weiteren entspricht der siebzehnte Logikgatter e6 einem UND-Gatter und ist mit einem ersten Eingang mit dem Ausgang des zehnten Logikgatter 10 und mit einem zweiten Eingang mit dem Ausgang des dreizehnten Logikgatters e2 verbunden. Der Ausgang des siebzehnten Logikgatters e6 ist mit einem Eingang des elften Logikgatters 11 verbunden.The first arithmetic unit A i comprises a first to seventeenth logic gate. The first logic gate 51 corresponds to a NAND gate (NAND gate) and receives at a first input the second binary input signal b i and at a second input the first binary input signal a i provided. Based on the two input signals represents the first logic gate 51 at an output the second own auxiliary carry signal C4 i ready. The second logic gate 52 corresponds to an XOR gate and receives the second binary input signal b i at a first input and the first binary input signal a i at a second input. The output of the second logic gate 52 is with an input of the third logic gate 53 , with an input of the eighth logic gate 58 and with an input of the eleventh logic gate 11 connected and in addition to an output of the arithmetic unit A i, the propagate signal p i available. The third logic gate 53 corresponds to an AND gate and is connected to a first input to the output of the second logic gate 52 connected. Furthermore, the third logic gate gets 53 at a second input, the second auxiliary carry signal C2 i-1 of the previous arithmetic unit and is provided with its output to an input of the fourth logic gate 54 connected. The fourth logic gate 54 corresponds to a NAND gate and has a first input to the output of the third logic gate 53 connected. In addition, the fourth logic gate gets 54 at a second input, the first auxiliary transmission signal C1 i-1 provided and provides at its output the first own auxiliary carry signal C3 i of the arithmetic unit A i ready. The fifth logic gate 55 corresponds to an AND gate and receives the second auxiliary carry signal C2 i-1 of the preceding arithmetic unit at a first input and the first auxiliary carry signal C1 i-1 of the preceding arithmetic unit at a second input. The output of the fifth logic gate 55 is connected to an input of the twelfth logic gate e1. Furthermore, the sixth logic gate corresponds 56 an XOR gate and has a first input to the output of the eleventh logic gate 11 and a second input to the output of the fourteenth logic gate e3 connected. The sixth logic gate 56 provides at its output the first binary output signal s i . The seventh logic gate 57 corresponds to an XOR gate and receives at a first input the first binary input signal a i provided. Furthermore, the seventh logic gate 57 with a second input connected to the output of the fourteenth logic gate e3 and its output connected to an input of the sixteenth logic gate e5. The eighth logic gate 58 corresponds to a NOR gate and is connected to a first input to the output of the second logic gate 52 and a second input connected to the output of the sixteenth logic gate e5. The output of the eighth logic gate 58 is with an input of the ninth logic gate 59 connected. The ninth logic gate 59 is with a first input to the output of the eighth logic gate 58 connected and gets at a second input its own carry signal c i of the arithmetic unit A i provided by the arithmetic unit A i + 1 . The ninth logic gate 59 represents the second binary output signal s i ready at his exit. The tenth logic gate 10 receives the second binary input signal b i at a first input and the second control signal m 2 at a second input. The output of the tenth logic gate 10 is connected to an input of the seventeenth logic gate e6. The eleventh logic gate 11 corresponds to an OR gate and is connected to a first input to the output of the second logic gate 52 and connected to a second input to the output of the sixteenth logic gate e6. The output of the eleventh logic gate 11 is with an input of the sixth logic gate 56 connected. The twelfth logic gate e1 corresponds to another OR gate and is connected to a first input to the output of the fifth logic gate 55 connected. In addition, the twelfth logic gate e1 receives the second control signal m 2 at a second input and has its output connected to an input of the fourteenth logic gate e3. The thirteenth logic gate e2 corresponds to an XNOR gate and receives the second control signal m 2 at a first input and the first control signal m 1 at a second input. The thirteenth logic gate e2 has its output connected to an input of the seventeenth logic gate e6. The thirteenth logic gate e3 corresponds to an AND gate and is connected to a first input to the output of the twelfth logic gate e1. In addition, the fourteenth logic gate e3 receives the first control signal m 1 at a second input and has its output connected to an input of the seventh logic gate 57 and with an input of the sixth logic gate 56 connected. In addition, the fourteenth logic gate e3 provides the carry signal c i-1 to the previous arithmetic unit. The fifteenth logic gate e4 corresponds to a NAND gate and receives the second control signal m 2 at a first input and the first control signal m 1 at a second inverted input. The fifteenth logic gate e4 has its output connected to an input of the sixteenth logic gate e5. The sixteenth logic gate e5 corresponds to an AND gate and has a first input to the output of the seventh logic gate 57 and a second input connected to the output of fifteenth logic gate e4. The output of the sixteenth logic gate e5 is connected to an input of the eighth logic gate 58 connected. Furthermore, the seventeenth logic gate e6 corresponds to an AND gate and has a first input to the output of the tenth logic gate 10 and a second input connected to the output of the thirteenth logic gate e2. The output of the seventeenth logic gate e6 is connected to an input of the eleventh logic gate 11 connected.
Die zweite Recheneinheit Ai+1 ist bis auf den Typ des ersten Logikgatters 51 und den Typ des fünften Logikgatters 55 ident zu der ersten Recheneinheit Ai. Das erste Logikgatter 51 der zweiten Recheneinheit Ai+1 entspricht anstelle eines NAND-Gatters einem ODER-Gatter und das fünfte Logikgatter 55 der zweiten Recheneinheit Ai+1 entspricht anstelle eines UND-Gatters einem NAND-Gatter (NICHT-UND-Gatter).The second arithmetic unit A i + 1 is up to the type of the first logic gate 51 and the type of the fifth logic gate 55 ident to the first arithmetic unit A i . The first logic gate 51 the second arithmetic unit A i + 1 corresponds to an OR gate and the fifth logic gate instead of a NAND gate 55 the second arithmetic unit A i + 1 corresponds to a NAND gate (NAND gate) instead of an AND gate.
Entsprechend der zuvor erwähnten Definition der Gattergruppen umfasst die erste Gruppe von Verarbeitungsgattern das zweite Logikgatter 52, das fünfte Logikgatter 55, das sechste Logikgatter 56, das zehnte Logikgatter 10, das elfte Logikgatter 11, das zwölfte Logikgatter e1, das dreizehnte Logikgatter e2, das vierzehnte Logikgatter e3 und das siebzehnte Logikgatter e6. Des Weiteren umfasst die zweite Gruppe von Verarbeitungsgattern das zweite Logikgatter 52, das fünfte Logikgatter 55, das siebte Logikgatter 57, das achte Logikgatter 58, das neunte Logikgatter 59, das zwölfte Logikgatter e1, das vierzehnte Logikgatter e3, das fünfzehnte Logikgatter e4 und das sechzehnte Logikgatter e5. Zusätzlich sind das zwölfte bis siebzehnte Logikgatter e1, e2, e3, e4, e5, e6 der Gruppe von Kontrollgattern zugeordnet.According to the aforementioned definition of the gate groups, the first group of processing gates comprises the second logic gate 52 , the fifth logic gate 55 , the sixth logic gate 56 , the tenth logic gate 10 , the eleventh logic gate 11 , the twelfth logic gate e1, the thirteenth logic gate e2, the fourteenth logic gate e3, and the seventeenth logic gate e6. Furthermore, the second group of processing gates comprises the second logic gate 52 , the fifth logic gate 55 , the seventh logic gate 57 , the eighth logic gate 58 , the ninth logic gate 59 , the twelfth logic gate e1, the fourteenth logic gate e3, the fifteenth logic gate e4 and the sixteenth logic gate e5. In addition, the twelfth to seventeenth logic gates e1, e2, e3, e4, e5, e6 are assigned to the group of control gates.
Die Gruppenzuordnung der Logikgatter der ersten Recheneinheit Ai entsprechend der Gruppenzuordnung der zweiten Recheneinheit Ai+1.The group assignment of the logic gates of the first arithmetic unit A i corresponding to the group assignment of the second arithmetic unit A i + 1 .
Das zweite Logikgatter 52, das fünfte Logikgatter 55, das zwölfte Logikgatter e1 und das dreizehnte Logikgatter e3 sind gemeinsame Verarbeitungsgatter der ersten Gruppe von Verarbeitungsgattern und er zweiten Gruppe von Verarbeitungsgattern.The second logic gate 52 , the fifth logic gate 55 , the twelfth logic gate e1 and the thirteenth logic gate e3 are common processing gates of the first group of processing gates and the second group of processing gates.
Das dritte Logikgatter 53 und das vierte Logikgatter 54 berechnen basierend auf dem Propagiere-Signal pi ein Hilfsausgangssignal in Form des ersten eigenen Hilfsübertragssignal C3i. Ebenso stellt erste Logikgatter 51 ein Hilfsausgangssignal in Form des zweiten eigenen Hilfsübertragssignals C4i zur Verfügung. Wird ein Hilfsausgangssignal von einer Recheneinheit weiterverarbeitet, so wie dies beispielsweise in 5 durch die nachfolgende Recheneinheit Ai+1 der Fall ist, so kann das erste Logikgatter 51, das dritte Logikgatter 53 und das vierte Logikgatter 54 (oder allgemein solche Logikgatter) als Teil der ersten Gruppe von Verarbeitungsgattern und der zweiten Gruppe von Verarbeitungsgattern der nachfolgende Recheneinheit Ai+1 und somit, wie das zweite Logikgatter 52, das fünfte Logikgatter 55, das zwölfte Logikgatter e1 und das dreizehnte Logikgatter e3 der nachfolgende Recheneinheit Ai+1, als gemeinsames Verarbeitungsgatter der nachfolgende Recheneinheit Ai+1 angesehen werden. Demzufolge können das erste Logikgatter 51, das dritte Logikgatter 53 und das vierte Logikgatter 54 einer vorhergehenden Recheneinheit als gemeinsames Verarbeitungsgatter der Recheneinheit Ai angesehen werden. The third logic gate 53 and the fourth logic gate 54 Calculate based on the propagating signal p i, an auxiliary output signal in the form of the first own auxiliary carry signal C3 i. Likewise represents first logic gates 51 an auxiliary output signal in the form of the second own auxiliary carry signal C4 i available. If an auxiliary output signal is further processed by a computing unit, as described, for example, in US Pat 5 by the subsequent arithmetic unit A i + 1 is the case, then the first logic gate 51 , the third logic gate 53 and the fourth logic gate 54 (or in general such logic gates) as part of the first group of processing gates and the second group of processing gates of the subsequent processing unit A i + 1 and thus, like the second logic gate 52 , the fifth logic gate 55 , The twelfth logic gate e1 and the thirteenth logic gate e3 of the following arithmetic unit A i + 1, as a common gate of the subsequent processing arithmetic unit A i + 1 are considered. As a result, the first logic gate 51 , the third logic gate 53 and the fourth logic gate 54 a previous arithmetic unit as a common processing gate of the arithmetic unit A i are considered.
Um Eingangssignale mit mehr als zwei parallelen Bits bearbeiten zu können, können je nach Bedarf weitere Recheneinheiten aneinander gehängt werden. Dabei wechseln sich Recheneinheiten vom Typ der ersten Recheneinheit Ai und Recheneinheiten vom Typ der zweiten Recheneinheit Ai+1, die sich aufgrund des ersten Logikgatters 51 und des fünften Logikgatters 55 unterscheiden, ab.In order to be able to process input signals with more than two parallel bits, further arithmetic units can be hung on each other as required. In this case, computing units of the type of the first arithmetic unit A i and arithmetic units of the type of the second arithmetic unit A i + 1 alternate, which are based on the first logic gate 51 and the fifth logic gate 55 differ, from.
Für dieses Beispiel kann die Funktionalität der FR-ADD aus 9 mit Hilfe der zuvor beschriebenen Techniken erweitert werden. Um die Erläuterungen zu vereinfachen, werden diese ALU-Zellen im Folgenden auch als ALU-FR-1 bezeichnet.For this example, the functionality of FR-ADD may be off 9 be extended with the help of the techniques described above. To simplify the explanation, these ALU cells are also referred to below as ALU-FR-1.
Die Steuerlogik in der ALU-FR-1 ist ähnlich der Steuerlogik der ALU-CLA-1 aufgebaut. Die Werte von zwei Kontrollsignalen m1 und m2 und die entsprechenden Operationen sind in der zur ALU-CLA-1 angegebenen Tabelle dargestellt.The control logic in the ALU-FR-1 is similar to the control logic of the ALU-CLA-1. The values of two control signals m 1 and m 2 and the corresponding operations are shown in the table given for ALU-CLA-1.
Die vorgeschlagene selbstprüfende ALU kann alle einzelne Haft-Fehler (single stuck-at faults) erkennen. Ein Haftfehler ist beispielsweise ein Fehler bei dem ein Signal (z. B. Ausgangssignal eines Logikgatters) dauerhaft auf einem festen Logikpegel (0 oder 1) festhängt.The proposed self-checking ALU can detect all single stuck-at faults. An adhesion error is, for example, an error in which a signal (eg output of a logic gate) is permanently stuck at a fixed logic level (0 or 1).
Die Erkennung der verschiedenen möglichen Haft-Fehler wird im Folgenden betrachtet:
Fehler in den Operanden a und b, die eine ungerade Anzahl der Bits in den Operanden verfälschen, können durch den Vergleich von pa ⊕ pb mit p(a ⊕ b) erkannt werden.Detection of the various possible detention errors is considered below:
Errors in the operands a and b, which falsify an odd number of bits in the operands, can be detected by comparing p a ⊕ p b with p (a ⊕ b).
Alle einzelnen Haft-Fehler im XOR-Baum für die Implementierung der Parität p(a ⊕ b) und im XOR-Gatter für die Implementierung von pa ⊕ pb können durch den Vergleich von pa ⊕ pb mit p(a ⊕ b) erkannt werden.All individual sticking errors in the XOR tree for the implementation of the parity p (a ⊕ b) and in the XOR gate for the implementation of p a ⊕ p b can be calculated by comparing p a ⊕ p b with p (a ⊕ b ) be recognized.
Alle einzelne Haft-Fehler in der ALU-Zelle Ai von ALU-FR-1 können zum Beispiel wie folgt detektiert werden:
Fehler im Gatter 51 verfälschen Übertragssignal C4i. Als Folge implementiert das Gatter 55 in der Zelle Ai+1 fehlerhaften Übertragssignal ci, das in der Zelle Ai für die Implementierung von s i verwendet wird. Der betrachtete Fehler wird durch den Vergleich von si mit s i erkannt. Für die logischen Operationen ist der Fehler redundant, weil die Kontrollsignale m1 und m2 den Ausgang des Kontrollgatters e3 unabhängig von dem Wert von C4i steuern.For example, all individual sticking faults in the ALU cell A i of ALU-FR-1 can be detected as follows:
Error in the gate 51 corrupt carry signal C4 i . As a consequence, the gate implements 55 in the cell A i + 1 erroneous carry signal c i , which in the cell A i for the implementation of s i is used. The considered error is by comparing s i with s i recognized. For the logical operations, the error is redundant because the control signals m 1 and m 2 control the output of the control gate e3 independently of the value of C4 i .
Fehler im Gatter 52 werden erkannt, indem man die Parität p(a ⊕ b) mit der Parität pa ⊕ pb vergleicht. Gatter 52 implementiert das Propagiere-Signal pi. Weil pi immer geprüft wird, kann es für die Implementierung von si und s i geteilt werden.Error in the gate 52 are detected by comparing the parity p (a ⊕ b) with the parity p a ⊕ p b . gate 52 implements the propagate signal p i . Because p i is always checked, it can be used for the implementation of s i and s i to be shared.
Wegen den Fehlern in den Gatter 53 und 54 wird Übertragssignal C3i fehlerhaft. Die betrachteten Fehler werden ähnlich wie Fehler im Gatter 51 erkannt.Because of the mistakes in the gates 53 and 54 Carry signal C3 i becomes defective. The considered errors become similar to errors in the gate 51 recognized.
Fehler im Gatter 55 verfälschen Übertragssignal ci-1 das in der Zelle Ai-1 für die Implementierung von s i-1 verwendet wird. Beim Vergleich von si-1 mit s i-1 werden die Fehler entdeckt. Die betrachteten Fehler sind für die logischen Operationen redundant, weil die Kontrollsignale m1 und m2 den Ausgang des Kontrollgatters e3 unabhängig von dem Wert am Ausgang des Gatters 5 steuern.Error in the gate 55 corrupt carry signal c i-1 that in cell A i-1 for the implementation of s i-1 is used. When comparing s i-1 with s i-1 the errors are discovered. The considered errors are redundant for the logical operations, because the control signals m 1 and m 2 control the output of the control gate e3 regardless of the value at the output of the gate 5 Taxes.
Fehler in den Gatter 10, 11 und 56 verursachen einen fehlerhaften Output si. Sie werden durch den Vergleich von si mit s i erkannt.Error in the gate 10 . 11 and 56 cause a faulty output s i . They are by comparing s i with s i recognized.
Wegen den Fehlern in den Gatter 57, 58 und 59 wird der Output s i verfälscht. Die betrachteten Fehler werden erkannt, indem man si und s i vergleicht. Because of the mistakes in the gates 57 . 58 and 59 becomes the output s i falsified. The considered errors are recognized by s i and s i compares.
Die vorigen Betrachtungen sind auch für Fehler in der Zelle Ai+1 ”von ALU-FR-1 gültig.The previous considerations are also valid for errors in cell A i + 1 "of ALU-FR-1.
Fehler in der Steuerlogik (Gatter e1–e6) werden ähnlich wie Fehler in der Steuerlogik (Kontrolllogik) von ALU-CLA-1 erkannt.Errors in the control logic (gates e1-e6) are detected similar to errors in the control logic (control logic) of ALU-CLA-1.
Bei der Arithmetik-Logik-Einheit 500 kann es sich beispielsweise um selbstprüfende ALU-Zellen Ai und Ai+1 auf der Basis von selbstprüfenden Fast-Ripple-Addierer handeln.In the arithmetic logic unit 500 these may be, for example, self-checking ALU cells A i and A i + 1 on the basis of self-checking fast ripple adders.
6 zeigt ein Blockschaltbild einer Arithmetik-Logik-Einheit 600 zum Verarbeiten eines ersten binären Eingangssignals ai, ai+1 und eines zweiten binären Eingangssignals bi, bi+1 entsprechend einer auswählbaren algebraischen Funktion gemäß einem Ausführungsbeispiel der Erfindung. Wie die in 5 gezeigte ALU basiert die Arithmetik-Logik-Einheit 600 auf einem Fast-Ripple-Addierer-Ansatz. Im Unterschied zur ersten Recheneinheit aus 5 erhält die erste Recheneinheit Ai der ALU 600 zusätzlich an drittes Kontrollsignal m3, ein invertiertes erstes Kontrollsignal m 1 und ein invertiertes zweites Kontrollsignal m 2 bereitgestellt. Ebenso erhält die zweite Recheneinheit Ai+1 im Gegensatz zur zweiten Recheneinheit aus 5 ein drittes Kontrollsignal m3, ein invertiertes erstes Kontrollsignal m 1 und ein invertiertes zweites Kontrollsignal m 2 bereitgestellt. Das nicht-invertierte erste Kontrollsignal m1 wird jedoch von der zweiten Recheneinheit Ai+1 nicht benötigt. Die Ausgangssignale der ersten Recheneinheit Ai und der zweiten Recheneinheit Ai+1 der ALU 600 entsprechen den Ausgangssignalen der ersten und der zweiten Recheneinheit aus 6 shows a block diagram of an arithmetic logic unit 600 for processing a first binary input signal a i , a i + 1 and a second binary input signal b i , b i + 1 corresponding to a selectable algebraic function according to an embodiment of the invention. Like the in 5 ALU is based on the arithmetic logic unit 600 on a fast ripple adder approach. In contrast to the first arithmetic unit 5 receives the first arithmetic unit A i of the ALU 600 in addition to the third control signal m 3 , an inverted first control signal m 1 and an inverted second control signal m 2 provided. Likewise, the second arithmetic unit A i + 1 is replaced by the second arithmetic unit 5 a third control signal m 3 , an inverted first control signal m 1 and an inverted second control signal m 2 provided. However, the non-inverted first control signal m 1 is not needed by the second arithmetic unit A i + 1 . The output signals of the first arithmetic unit A i and the second arithmetic unit A i + 1 of the ALU 600 correspond to the output signals of the first and the second arithmetic unit
5. 5 ,
Die erste Recheneinheit Ai umfasst ein erstes bis siebzehntes Logikgatter. Das erste Logikgatter 51 entspricht einem NAND-Gatter und erhält an einem ersten Eingang das zweite binäre Eingangssignal bi und an einem zweiten Eingang das erste binäre Eingangssignal ai bereitgestellt. Der Ausgang des ersten Logikgatters 51 ist mit einem Eingang des dreizehnten Logikgatters e2 verbunden.The first arithmetic unit A i comprises a first to seventeenth logic gate. The first logic gate 51 corresponds to a NAND gate and receives the second binary input signal b i at a first input and the first binary input signal a i at a second input. The output of the first logic gate 51 is connected to an input of the thirteenth logic gate e2.
Das zweite Logikgatter 52 entspricht einem XOR-Gatter und bekommt an einem ersten Eingang das binäre Eingangssignal bi und an einem zweiten Eingang das erste binäre Eingangssignal ai bereitgestellt. Der Ausgang des zweiten Logikgatters 52 ist mit einem Eingang des vierzehnten Logikgatters e3, mit einem Eingang des achten Logikgatters 58 und mit einem Eingang des elften Logikgatters 11 verbunden. Zusätzlich ist der Ausgang des zweiten Logikgatters 52 mit einem Ausgang der Recheneinheit Ai verbunden, um das Propagiere-Signal pi bereitzustellen. Das dritte Logikgatter 53 entspricht einem UND-Gatter und ist mit einem ersten Eingang mit dem Ausgang des vierzehnten Logikgatters e3 verbunden. Zusätzlich erhält das dritte Logikgatter 53 an einem zweiten Eingang das zweite Hilfsübertragssignal C2i-1 der vorhergehenden Recheneinheit bereitgestellt und ist mit seinem Ausgang mit einem Eingang des vierten Logikgatters 54 verbunden. Das vierte Logikgatter 54 entspricht einem NAND-Gatter und ist mit einem ersten Eingang mit dem Ausgang des dritten Logikgatters 53 verbunden. Des Weiteren bekommt das vierte Logikgatter 54 das erste Hilfsübertragssignal C1i-1 der vorhergehenden Recheneinheit zur Verfügung gestellt und stellt an seinem Ausgang das erste eigene Hilfsübertragssignal C3i der Recheneinheit Ai an die zweite Recheneinheit Ai+1 bereit. Das fünfte Logikgatter 55 entspricht einem UND-Gatter und erhält an einem ersten Eingang das zweite Hilfsübertragssignal C2i-1 der vorhergehenden Recheneinheit und an einem zweiten Eingang des ersten Hilfsübertragssignals C1i-1 der vorhergehenden Recheneinheit bereitgestellt. Der Ausgang des fünften Logikgatters 55 ist mit einem Eingang des siebten Logikgatters 57 und einem Eingang des sechsten Logikgatters 56 verbunden. Zusätzlich stellt das fünfte Logikgatter 55 das Übertragssignal ci-1 der vorherigen Recheneinheit an einem Ausgang der Recheneinheit Ai bereit. Das sechste Logikgatter 56 entspricht einem XOR-Gatter und ist mit einem ersten Eingang mit dem Ausgang des elften Logikgatters 11 und mit einem zweiten Eingang mit dem Ausgang des fünften Logikgatters 55 verbunden. Das sechste Logikgatter 56 stellt an seinem Ausgang das erste binäre Ausgangssignal si bereit. Das siebte Logikgatter 57 entspricht einem weiteren XOR-Gatter und erhält an einem ersten Eingang das erste binäre Eingangssignal ai bereitgestellt. Zusätzlich ist das siebte Logikgatter 57 mit einem zweiten Eingang mit dem Ausgang des fünften Logikgatters 55 und mit seinem Ausgang mit einem Eingang des sechzehnten Logikgatters e5 verbunden. Das achte Logikgatter 58 entspricht einem NOR-Gatter und ist mit einem ersten Eingang mit dem Ausgang des zweiten Logikgatters 52 und mit einem zweiten Eingang mit dem Ausgang des sechzehnten Logikgatters e5 verbunden. Der Ausgang des achten Logikgatters 58 ist mit einem Eingang des neunten Logikgatters 59 verbunden. Das neunte Logikgatter 59 entspricht einem XOR-Gatter und ist mit einem ersten Eingang mit dem Ausgang des achten Logikgatters 58 verbunden. Des Weiteren erhält das neunte Logikgatter 59 an einem zweiten Eingang das eigene Übertragssignal ci der ersten Recheneinheit Ai bereitgestellt und stellt an seinem Ausgang das zweite binäre Ausgangssignal s i zur Verfügung. Das zehnte Logikgatter 10 entspricht einem XOR-Gatter und bekommt an einem ersten Eingang das zweite binäre Eingangssignal bi und an einem zweiten Eingang das invertierte zweite Kontrollsignal m 2 zur Verfügung gestellt. Der Ausgang des zehnten Logikgatters 10 ist mit einem Eingang des siebzehnten Logikgatters e6 verbunden. Das elfte Logikgatter 11 entspricht einem ODER-Gatter und ist mit einem ersten Eingang mit dem Ausgang des zweiten Logikgatters 52 und mit einem zweiten Eingang mit dem Ausgang des siebzehnten Logikgatters e6 verbunden. Der Ausgang des elften Logikgatters 11 ist mit einem Eingang des sechsten Logikgatters 56 verbunden. Das zwölfte Logikgatter e1 entspricht einem ODER-Gatter und bekommt an einem ersten Eingang das zweite Kontrollsignal m2 bereitgestellt. Des Weiteren ist das zwölfte Logikgatter e1 mit einem zweiten Eingang mit dem Ausgang des dreizehnten Logikgatters e2 verbunden. An seinem Ausgang stellt das zwölfte Logikgatter e1 das zweite eigene Hilfsübertragssignal C4i der ersten Recheneinheit Ai zur Verfügung. Das dreizehnte Logikgatter e2 entspricht einem UND-Gatter und bekommt an einem ersten Eingang das erste Kontrollsignal m1 bereitgestellt. Des Weiteren ist das dreizehnte Logikgatter e2 mit einem zweiten Eingang mit dem Ausgang des ersten Logikgatters 51 und mit seinem Ausgang mit einem Eingang des zwölften Logikgatters e1 verbunden. Des Weiteren entspricht das vierzehnte Logikgatter e3 einem UND-Gatter und bekommt an einem ersten Eingang das dritte Kontrollsignal m3 zur Verfügung gestellt. Zusätzlich ist das vierzehnte Logikgatter e3 mit einem zweiten Eingang mit dem Ausgang des zweiten Logikgatters 52 und mit seinem Ausgang mit einem Eingang des dritten Logikgatters 52 verbunden. Das fünfzehnte Logikgatter e4 entspricht einem ODER-Gatter und bekommt an einem ersten Eingang das invertierte zweite Kontrollsignal m 2 und an dem zweiten Eingang des invertierten ersten Kontrollsignal m 1 bereitgestellt. Der Ausgang des fünfzehnten Logikgatters e4 ist an einen Eingang des fünfzehnten Logikgatters e5 angeschlossen. Das sechzehnte Logikgatter e5 entspricht einem UND-Gatter und ist mit einem ersten Eingang an den Ausgang des siebten Logikgatters 57 und mit einem zweiten Eingang an den Ausgang des fünfzehnten Logikgatters e4 angeschlossen. Der Ausgang des sechzehnten Logikgatter e5 ist mit einem Eingang des achten Logikgatters 58 verbunden. Das siebzehnte Logikgatter e6 entspricht einem UND-Gatter und ist mit einem ersten Eingang mit dem Ausgang des zehnten Logikgatters 10 verbunden. Des Weiteren erhält das siebzehnte Logikgatter e5 an einem zweiten Eingang das invertierte erste Kontrollsignal m 1 zur Verfügung gestellt uid ist mit seinem Ausgang an einen Eingang des elften Logikgatters 11 angeschlossen.The second logic gate 52 corresponds to an XOR gate and receives the binary input signal b i at a first input and the first binary input signal a i at a second input. The output of the second logic gate 52 is with an input of the fourteenth logic gate e3, with an input of the eighth logic gate 58 and with an input of the eleventh logic gate 11 connected. In addition, the output of the second logic gate 52 connected to an output of the arithmetic unit A i to provide the propagate signal p i . The third logic gate 53 corresponds to an AND gate and is connected to a first input to the output of the fourteenth logic gate e3. In addition, the third logic gate gets 53 at a second input, the second auxiliary carry signal C2 i-1 of the previous arithmetic unit and is provided with its output to an input of the fourth logic gate 54 connected. The fourth logic gate 54 corresponds to a NAND gate and has a first input to the output of the third logic gate 53 connected. Furthermore gets the fourth logic gate 54 the first auxiliary carry signal C1 i-1 of the previous arithmetic unit available and provides at its output the first own auxiliary carry signal C3 i the arithmetic unit A i to the second arithmetic unit A i + 1 ready. The fifth logic gate 55 corresponds to an AND gate and receives at a first input the second auxiliary carry signal C2 i-1 of the preceding arithmetic unit and provided at a second input of the first auxiliary carry signal C1 i-1 of the preceding arithmetic unit. The output of the fifth logic gate 55 is with an input of the seventh logic gate 57 and an input of the sixth logic gate 56 connected. In addition, the fifth logic gate represents 55 the carry signal c i-1 of the previous processor at an output of the arithmetic unit A i ready. The sixth logic gate 56 corresponds to an XOR gate and has a first input to the output of the eleventh logic gate 11 and a second input to the output of the fifth logic gate 55 connected. The sixth logic gate 56 provides at its output the first binary output signal s i . The seventh logic gate 57 corresponds to a further XOR gate and receives the first binary input signal a i at a first input. In addition, the seventh logic gate 57 with a second input to the output of the fifth logic gate 55 and having its output connected to an input of the sixteenth logic gate e5. The eighth logic gate 58 corresponds to a NOR gate and is connected to a first input to the output of the second logic gate 52 and a second input connected to the output of the sixteenth logic gate e5. The output of the eighth logic gate 58 is with an input of the ninth logic gate 59 connected. The ninth logic gate 59 corresponds to an XOR gate and has a first input to the output of the eighth logic gate 58 connected. Furthermore, the ninth logic gate gets 59 at a second input the own carry signal c i of the first Arithmetic unit A i provided and provides at its output the second binary output signal s i to disposal. The tenth logic gate 10 corresponds to an XOR gate and receives at a first input the second binary input signal b i and at a second input the inverted second control signal m 2 made available. The output of the tenth logic gate 10 is connected to an input of the seventeenth logic gate e6. The eleventh logic gate 11 corresponds to an OR gate and is connected to a first input to the output of the second logic gate 52 and a second input connected to the output of the seventeenth logic gate e6. The output of the eleventh logic gate 11 is with an input of the sixth logic gate 56 connected. The twelfth logic gate e1 corresponds to an OR gate and is provided with the second control signal m 2 at a first input. Furthermore, the twelfth logic gate e1 is connected at a second input to the output of the thirteenth logic gate e2. At its output, the twelfth logic gate e1 provides the second own auxiliary carry-over signal C4 i to the first processor A i . The thirteenth logic gate e2 corresponds to an AND gate and is provided with the first control signal m 1 at a first input. Furthermore, the thirteenth logic gate e2 has a second input to the output of the first logic gate 51 and its output connected to an input of the twelfth logic gate e1. Furthermore, the fourteenth logic gate e3 corresponds to an AND gate and is provided with the third control signal m 3 at a first input. In addition, the fourteenth logic gate e3 has a second input to the output of the second logic gate 52 and with its output to an input of the third logic gate 52 connected. The fifteenth logic gate e4 corresponds to an OR gate and receives at a first input the inverted second control signal m 2 and at the second input of the inverted first control signal m 1 provided. The output of the fifteenth logic gate e4 is connected to an input of the fifteenth logic gate e5. The sixteenth logic gate e5 corresponds to an AND gate and has a first input to the output of the seventh logic gate 57 and connected to a second input to the output of the fifteenth logic gate e4. The output of the sixteenth logic gate e5 is connected to an input of the eighth logic gate 58 connected. The seventeenth logic gate e6 corresponds to an AND gate and has a first input to the output of the tenth logic gate 10 connected. Furthermore, the seventeenth logic gate e5 receives the inverted first control signal at a second input m 1 provided uid is with its output to an input of the eleventh logic gate 11 connected.
Die zweite Recheneinheit Ai+1 ist ähnlich der ersten Recheneinheit Ai aufgebaut. Die zweite Recheneinheit Ai+1 umfasst jedoch ein achtzehntes Logikgatter e7 und unterscheidet sich zusätzlich in dem ersten, fünften, zwölften und dreizehnten Logikgatter. Das erste Logikgatter 51 der zweiten Recheneinheit Ai+1 entspricht anstelle eines NAND-Gatters einem ODER-Gatter und das fünfte Logikgatter 55 der zweiten Recheneinheit Ai+1 entspricht nicht einem UND-Gatter, sondern einem NAND-Gatter. Des Weiteren entspricht das zwölfte Logikgatter e1 weiterhin einem ODER-Gatter, ist jedoch mit seinem ersten Eingang an den Ausgang des dreizehnten Logikgatters e2 und mit seinem zweiten Eingang an den Ausgang des achtzehnten Logikgatters e7 angeschlossen. Der Ausgang des zwölften Logikgatters e1 stellt das zweite Hilfsübertragssignal C2i+1 für die nachfolgende Recheneinheit bereit. Das zusätzliche achtzehnte Logikgatter e7 entspricht einem XNOR-Gatter und bekommt an einem ersten Eingang das zweite Kontrollsignal m2 und an einem zweiten Eingang das dritte Kontrollsignal m3 bereitgestellt. Der Ausgang des achtzehnten Logikgatters e7 ist mit einem Eingang des zwölften Logikgatters e1 verbunden.The second arithmetic unit A i + 1 is constructed similar to the first arithmetic unit A i . However, the second arithmetic unit A i + 1 comprises an eighteenth logic gate e7 and additionally differs in the first, fifth, twelfth and thirteenth logic gates. The first logic gate 51 the second arithmetic unit A i + 1 corresponds to an OR gate and the fifth logic gate instead of a NAND gate 55 The second arithmetic unit A i + 1 does not correspond to an AND gate but to a NAND gate. Furthermore, the twelfth logic gate e1 still corresponds to an OR gate, but is connected with its first input to the output of the thirteenth logic gate e2 and with its second input to the output of the eighteenth logic gate e7. The output of the twelfth logic gate e1 provides the second auxiliary carry signal C2 i + 1 for the subsequent processing unit. The additional eighteenth logic gate e7 corresponds to an XNOR gate and receives the second control signal m 2 at a first input and the third control signal m 3 at a second input. The output of the eighteenth logic gate e7 is connected to an input of the twelfth logic gate e1.
Entsprechend der vorherigen Definition der Gruppen ist das zweite Logikgatter 52, das fünfte Logikgatter 55, das sechste Logikgatter 56, das zehnte Logikgatter 10, das elfte Logikgatter 11 und das siebzehnte Logikgatter e6 Teil der ersten Gruppe von Verarbeitungsgattern. Des Weiteren gehören das zweite Logikgatter 52, das fünfte Logikgatter 55, das siebte Logikgatter 57, das achte Logikgatter 58, das neunte Logikgatter 59, das fünfzehnte Logikgatter e4 und das sechzehnte Logikgatter e5 zu der zweiten Gruppe von Verarbeitungsgattern. Die Gruppe von Kontrollgattern der ersten Recheneinheit Ai umfasst das zwölfte bis siebzehnte Logikgatter. Zusätzlich umfasst die Gruppe von Kontrollgattern der zweiten Recheneinheit Ai+1 das achtzehnte Logikgatter e7.According to the previous definition of the groups, the second logic gate is 52 , the fifth logic gate 55 , the sixth logic gate 56 , the tenth logic gate 10 , the eleventh logic gate 11 and the seventeenth logic gate e6 is part of the first group of processing gates. Furthermore belong the second logic gate 52 , the fifth logic gate 55 , the seventh logic gate 57 , the eighth logic gate 58 , the ninth logic gate 59 , the fifteenth logic gate e4 and the sixteenth logic gate e5 to the second group of processing gates. The group of control gates of the first arithmetic unit A i comprises the twelfth to seventeenth logic gates. In addition, the group of control gates of the second arithmetic unit A i + 1 comprises the eighteenth logic gate e7.
Das zweite Logikgatter 52 und das fünfte Logikgatter 55 sind ein gemeinsames Verarbeitungsgatter der ersten Gruppe von Verarbeitungsgattern und der zweiten Gruppe von Verarbeitungsgattern.The second logic gate 52 and the fifth logic gate 55 are a common processing gate of the first group of processing gates and the second group of processing gates.
Das dritte Logikgatter 53, das vierte Logikgatter 54 und das vierzehnte Logikgatter e3, sowie das achtzehnte Logikgatter e7 bei der zweiten Recheneinheit Ai+1, berechnen basierend auf dem Propagiere-Signal pi ein Hilfsausgangssignal in Form des ersten eigenen Hilfsübertragssignal C3i. Ebenso stellen erste Logikgatter 51, das zwölfte Logikgatter e1 und das dreizehnte Logikgatter e2 ein Hilfsausgangssignal in Form des zweiten eigenen Hilfsübertragssignals C4i zur Verfügung. Wird ein Hilfsausgangssignal von einer Recheneinheit weiterverarbeitet, so wie dies beispielsweise in 6 durch die nachfolgende Recheneinheit Ai+1 der Fall ist, so kann das erste Logikgatter 51, das dritte Logikgatter 53, das vierte Logikgatter 54, das zwölfte Logikgatter e1, das dreizehnte Logikgatter e2 und das vierzehnte Logikgatter e3 (oder allgemein solche Logikgatter) als Teil der ersten Gruppe von Verarbeitungsgattern und der zweiten Gruppe von Verarbeitungsgattern der nachfolgende Recheneinheit Ai+1 und somit, wie das zweite Logikgatter 52 und das fünfte Logikgatter 55 der nachfolgende Recheneinheit Ai+1, als gemeinsames Verarbeitungsgatter der nachfolgende Recheneinheit Ai+1 angesehen werden. Demzufolge können das erste Logikgatter 51, das dritte Logikgatter 53, das vierte Logikgatter 54, das zwölfte Logikgatter e1, das dreizehnte Logikgatter e2 und das vierzehnte Logikgatter e3 einer vorhergehenden Recheneinheit als gemeinsames Verarbeitungsgatter der Recheneinheit Ai angesehen werden.The third logic gate 53 , the fourth logic gate 54 and the fourteenth logic gate E3, and the eighteenth logic gate e7 in the second arithmetic unit A i + 1, calculated based on the propagating signal p i, an auxiliary output signal in the form of the first own auxiliary carry signal C3 i. Similarly, first logic gates 51 , the twelfth logic gate e1 and the thirteenth logic gate e2 an auxiliary output signal in the form of the second own auxiliary carry signal C4 i available. If an auxiliary output signal is further processed by a computing unit, as described, for example, in US Pat 6 by the following arithmetic unit A i + 1 is the case, so can the first logic gate 51 , the third logic gate 53 , the fourth logic gate 54 , the twelfth logic gate e1, the thirteenth logic gate e2 and the fourteenth logic gate e3 (or in general such logic gates) as part of the first group of processing gates and the second group of processing gates of the subsequent processing unit A i + 1 and thus, like the second logic gate 52 and the fifth logic gate 55 the following arithmetic unit A i + 1 , as a common processing gate of the following arithmetic unit A i + 1 are considered. As a result, the first logic gate 51 , the third logic gate 53 , the fourth logic gate 54 , the twelfth logic gate e1, the thirteenth logic gate e2 and the fourteenth logic gate e3 of a preceding arithmetic unit are regarded as a common processing gate of the arithmetic unit A i .
Die Arithmetik-Logik-Einheit 600 entspricht beispielsweise einer selbstprüfenden ALU-Zellen Ai und Ai+1 auf der Basis von selbstprüfenden Fast-Ripple-Addierern.The arithmetic logic unit 600 corresponds, for example, to a self-checking ALU cells A i and A i + 1 on the basis of self-checking fast ripple adders.
Um die Erläuterungen zu vereinfachen, werden diese ALU-Zellen (aus 6) im Folgenden als ALU-FR-2 bezeichnet.To simplify the explanations, these ALU cells (out 6 ) hereinafter referred to as ALU-FR-2.
Auch bei der Implementierung der ALU-FR-2 können die zuvor beschriebenen Techniken eingesetzt werden. Drei Kontrollsignale m1, m2 und m3 werden dabei verwendet. Die Kodierung der Operationen in der ALU-FR-2 unterscheidet sich von der Kodierung der Operationen in der ALU-CLA-2, wo auch drei Kontrollsignale verwendet werden. Die Werte von m1, m2 und m3 und die entsprechenden Operationen sind in der folgenden Tabelle dargestellt: Also in the implementation of the ALU-FR-2, the techniques described above can be used. Three control signals m 1 , m 2 and m 3 are used. The coding of the operations in the ALU-FR-2 differs from the coding of the operations in the ALU-CLA-2, where also three control signals are used. The values of m 1 , m 2 and m 3 and the corresponding operations are shown in the following table:
Für {m1 = 0, m2 = 0, m3 = 1}, {m1 = 0, m2 = 1, m3 = 1}, {m1 = 1, m2 = 0, m3 = 0} und {m1 = 1, m2 = 1, m3 = 1} wird eine illegale Operation ausgeführt.For {m 1 = 0, m 2 = 0, m 3 = 1}, {m 1 = 0, m 2 = 1, m 3 = 1}, {m 1 = 1, m 2 = 0, m 3 = 0 } and {m 1 = 1, m 2 = 1, m 3 = 1}, an illegal operation is performed.
In der ALU-FR-2 werden die Übertragssignale C3i, C4i, C1i+1 und C2i+1 und dadurch die Übertragssignale ci und ci+1 mit Hilfe der Steuerlogik manipuliert.In the ALU FR-2, the carry signals C3 i, i C4 are manipulated C1 i + 1 and i + 1 C2, and thereby the carry signals c i and c i + 1 with the help of the control logic.
Das Übertragssignal ci-1, wird in der ALU-Zelle Ai von ALU-FR-2 als AND-Funktion (AND-Gatter 55) der Übertragssignale C1i-1 und C2i-1 implementiert. Das Übertragssignal ci, das in der ALU-Zelle Ai+1 implementiert wird, ist dagegen die NAND-Funktion (NAND-Gatter 5) der Übertragssignale C3i und C4i. Außerdem gibt es ein Unterschied in der Implementierung von C4i in der ALU-Zelle Ai (NAND-Gatter 51) und C2i+1 in der ALU-Zelle Ai+1 (OR-Gatter 51). Aus diesen Gründen unterscheidet sich die Steuerlogik in der Ai von der Steuerlogik in der Ai+1.The carry signal c i-1 is applied in the ALU cell A i of ALU-FR-2 as an AND function (AND gate 55 ) of the carry signals C1 i-1 and C2 i-1 . The carry signal c i implemented in the ALU cell A i + 1 , on the other hand, is the NAND function (NAND gate 5 ) of the carry signals C3 i and C4 i . There is also a difference in the implementation of C4 i in the ALU cell A i (NAND gate 51 ) and C2 i + 1 in the ALU cell A i + 1 (OR gate 51 ). For these reasons, the control logic in the A i differs from the control logic in the A i + 1 .
Im Folgenden wird die Manipulation der Übertragssignale ci und ci+1 durch die Steuerlogik in der ALU-FR-2 betrachtet (alle Bezeichnungen der Gatter und Signale beziehen sich auf die 6):
Bei der Addition (m1 = 1, m2 = 0, m3 = 1) werden die Übertragssignale C3i, C4i, C1i+1 und C2i+1 und dadurch die Übertragssignale ci und ci+1 von der Steuerlogik nicht beeinflusst.In the following, the manipulation of the carry signals c i and c i + 1 by the control logic in the ALU-FR-2 is considered (all designations of the gates and signals refer to FIGS 6 ):
In the addition (m 1 = 1, m 2 = 0, m 3 = 1), the carry signals C3 i, C4 i, C1 i + 1 and C 2 i + 1 and thus the carry signals c i and c i + 1 of the Control logic not affected.
Bei der AND-Operation (m1 = 0, m2 = 0, m3 = 0) müssen die Übertragssignale ci und ci+1 den zuvor beschriebenen Techniken auf „1” gesetzt werden. In der ALU-Zelle Ai setzen die Kontrollsignale m1 = 0 und m2 = 0 das Übertragssignal C4i auf „0”. Dadurch implementiert das NAND-Gatter 55 in der ALU-Zelle Ai+1 das Übertragssignal ci = 1. Für m2 = 0 und m3 = 0 sind die Übertragssignale C1i+1 und C2i+1 gleich „1”. Aus den C1i+1 und C2i+1 = 1 implementiert das AND-Gatter 55 in der ALU-Zelle Ai+2 das Übertragssignal ci+1 = 1.In the AND operation (m 1 = 0, m 2 = 0, m 3 = 0), the carry signals c i and c i + 1 must be set to "1" according to the techniques described above. In the ALU cell A i , the control signals m 1 = 0 and m 2 = 0 set the carry signal C4 i to "0". This implements the NAND gate 55 in the ALU cell A i + 1, the carry signal c i = 1. For m 2 = 0 and m 3 = 0, the carry signals C1 i + 1 and C2 i + 1 are equal to "1". From the C1 i + 1 and C2 i + 1 = 1, the AND gate implements 55 in the ALU cell A i + 2, the carry signal c i + 1 = 1.
Im Fall der OR-Operation (m1 = 0, m2 = 1, m3 = 0) oder XOR-Operation (m1 = 1, m2 = 1, m3 = 0) müssen die Übertragssignale ci und ci+1 auf „0” gesetzt werden. Wegen des Kontrollsignals m2 = 1 ist das Übertragssignal C4i gleich „1”. Weil m3 gleich „0” ist, ist das Übertragssignal C3i gleich „1”. Das NAND-Gatter 55 in der ALU-Zelle Ai+1 implementiert das Übertragssignal ci = 1. Für m2 = 1 und m3 = 0 ist das Übertragssignal C2i+1 gleich „0”. Deshalb implementiert das AND-Gatter 5 in der ALU-Zelle Ai+2 das Übertragssignal ci+1 = 0.In the case of the OR operation (m 1 = 0, m 2 = 1, m 3 = 0) or XOR operation (m 1 = 1, m 2 = 1, m 3 = 0), the carry signals c i and c i +1 to "0". Because of the control signal m 2 = 1, the carry signal C4 i is equal to "1". Because m 3 is equal to "0", the carry signal C3 i is equal to "1". The NAND gate 55 in the ALU cell A i + 1 , the carry signal implements c i = 1. For m 2 = 1 and m 3 = 0, the carry signal C2 i + 1 is "0". Therefore, the AND gate implements 5 in the ALU cell A i + 2, the carry signal c i + 1 = 0.
Die vorgeschlagene selbstprüfende ALU kann alle einzelne Haft-Fehler (single stuck-at faults) erkennen. Ein Haftfehler ist beispielsweise ein Fehler bei dem ein Signal (z. B. Ausgangssignal eines Logikgatters) dauerhaft auf einem festen Logikpegel (0 oder 1) festhängt. The proposed self-checking ALU can detect all single stuck-at faults. An adhesion error is, for example, an error in which a signal (eg output of a logic gate) is permanently stuck at a fixed logic level (0 or 1).
Die Erkennung der verschiedenen möglichen Haft-Fehler wird im Folgenden betrachtet:
Fehler in den Operanden a und b, die eine ungerade Anzahl der Bits in den Operanden verfälschen, können durch den Vergleich von pa ⊕ pb mit p(a ⊕ b) erkannt werden.Detection of the various possible detention errors is considered below:
Errors in the operands a and b, which falsify an odd number of bits in the operands, can be detected by comparing p a ⊕ p b with p (a ⊕ b).
Alle einzelnen Haft-Fehler im XOR-Baum für die Implementierung der Parität p(a ⊕ b) und im XOR-Gatter für die Implementierung von pa ⊕ pb können durch den Vergleich von pa ⊕ pb mit p(a ⊕ b) erkannt werden.All individual sticking errors in the XOR tree for the implementation of the parity p (a ⊕ b) and in the XOR gate for the implementation of p a ⊕ p b can be calculated by comparing p a ⊕ p b with p (a ⊕ b ) be recognized.
Alle einzelne Haft-Fehler in der ALU-Zellen Ai und Ai+1 von ALU-FR-2 können zum Beispiel wie folgt detektiert werden:
Fehler in den logischen Gatter 1–11 (erstes bis elftes Logikgatter) werden auf gleiche Weise wie die Fehler in den logischen Gatter 1–11 (erstes bis elftes Logikgatter) der ALU-FR-1 erkannt.All individual sticking faults in the ALU cells A i and A i + 1 of ALU-FR-2 can be detected, for example, as follows:
Errors in the logic gates 1 - 11 (first to eleventh logic gates) become the same as the errors in the logic gates 1 - 11 (first to eleventh logic gate) of the ALU-FR-1 detected.
Fehler in den Kontrollgatter e1–e3 der ALU-Zelle Ai verfälschen Übertragssignal C4i oder Übertragssignal C3i. Dadurch wird Übertragssignal ci fehlerhaft, das bei der Implementierung von s i verwendet wird. Die betrachteten Fehler werden durch den Vergleich von si mit s i erkannt.Errors in the control gates e1-e3 of the ALU cell A i corrupt carry signal C4 i or carry signal C3 i . As a result, carry signal c i is faulty, which in the implementation of s i is used. The errors considered are obtained by comparing s i with s i recognized.
Fehler im Kontrollgatter e1, e2, e3 oder e7 der ALU-Zelle Ai+1 verfälschen Übertragssignal C2i+1 oder Übertragssignal C1i+1. Als Folge wird Übertragssignal ci+1 fehlerhaft. ci+1 wird in der ALU-Zelle Ai+1 ausschließlich für die Implementierung von s i+1 verwendet. Beim Vergleich von si mit s i werden die betrachteten Fehler entdeckt.Errors in the control gate e1, e2, e3 or e7 of the ALU cell A i + 1 falsify carry signal C2 i + 1 or carry signal C1 i + 1 . As a result, carry signal c i + 1 becomes erroneous. c i + 1 is used in the ALU cell A i + 1 exclusively for the implementation of s i + 1 used. When comparing s i with s i the considered errors are discovered.
Fehler in den Kontrollgatter e4 und e5 der ALU-Zelle Ai verursachen den fehlerhaften Output s i . Das wird erkannt, indem man si und s i vergleicht.Errors in the control gates e4 and e5 of the ALU cell A i cause the erroneous output s i , This is recognized by s i and s i compares.
Wegen den Fehlern im Kontrollgatter e6 der ALU-Zelle Ai wird der Output si verfälscht. Die betrachteten Fehler werden durch den Vergleich von si mit s i erkannt.Because of the errors in the control gate e6 of the ALU cell A i , the output s i is corrupted. The errors considered are obtained by comparing s i with s i recognized.
Fehler in den Kontrollgatter e4, e5 und e6 der ALU-Zelle Ai+1 verfälschen entweder den Output s i+1 oder den Output si+1. Sie werden erkannt, indem si+1 mit s i+1 verglichen wird.Errors in the control gates e4, e5 and e6 of the ALU cell A i + 1 either distort the output s i + 1 or the output s i + 1 . They are recognized by s i + 1 with s i + 1 is compared.
Allgemein können Arithmetik-Logik-Einheiten, die nach dem beschriebenen Konzept aufgebaut sind auch viele mehrfache (multiple) Fehler erkennen. Zum Beispiel, können eine gerade Anzahl der verfälschten Bits im Ergebnis der ALU-Berechnung, die z. B. in der paritätsgeprüften ALU „M. Nicolaidis. Implementation Techniques of Self-Checking Arithmetic Operators and Data Paths Based on Double-Rail and Parity Codes. US Patent No.5450340 , 1995”; ” M. Nicolaidis. Efficient Implementations of Self-Checking Adders and ALU's. Symposium on Fault-Tolerant Computing, pages 586–595, 1993” und” M. Nicolaidis. Carry Checking/Parity Prediction Adders and ALUs. IEEE Transactions on VLSI Systems, 11(1):121–128, 2003” nicht erkannt werden. Diese können durch Verwendung des dem vorgeschlagenen Konzepts entdeckt werden. Nur Fehler werden nicht erkannt, die gleichzeitig den Ausgang si und den Ausgang s i in allen fehlerhaften ALU-Zellen verfälschen. Das gilt aber auch für die Methode der Verdopplung und Vergleich. Dadurch weist die vorgeschlagene ALU fast die gleichen Fehlererkennungseigenschaften wie die komplett verdoppelte ALU auf.In general, arithmetic logic units constructed according to the described concept can also detect many multiple (multiple) errors. For example, an even number of corrupted bits may result in the ALU calculation, e.g. In the parity-tested ALU "M. Nicolaidis. Implementation Techniques of Self-Checking Arithmetic Operators and Data Paths Based on Double-Rail and Parity Codes. US Patent No.5450340 , 1995 ";"M. Nicolaidis. Efficient Implementations of Self-Checking Adders and ALU's. Symposium on Fault-Tolerant Computing, pages 586-595, 1993 "and" M. Nicolaidis. Carry Checking / Parity Prediction Adders and ALUs. IEEE Transactions on VLSI Systems, 11 (1): 121-128, 2003 "are not recognized. These can be discovered by using the proposed concept. Only errors that do not recognize the output s i and the output at the same time are not recognized s i falsify in all defective ALU cells. This also applies to the method of duplication and comparison. As a result, the proposed ALU has almost the same error detection properties as the completely doubled ALU.
Durch eine Auswahl der Typen von Logikgatter (zum Beispiel UND-Gatter, ODER-Gatter, XOR-Gatter, ...) für die Logikgatter und ein Verbinden der Logikgatter entsprechend der Beschreibung von 3 bis 6 und 11 kann an dem Ausgang des ersten binären Ausgangssignals si auswählbar eine Addition, eine logische UND-Verknüpfung, eine logische ODER-Verknüpfung oder eine logische EXKLUSIV-ODER-Verknüpfung der beiden binären Eingangssignale realisiert werden. Entsprechend kann an dem Ausgang des zweiten binären Ausgangssignal s i eine inverse Addition, eine NICHT-UND-Verknüpfung, eine NICHT-ODER-Verknüpfung oder eine EXKLUSIV-NICHT-ODER-Verknüpfung realisiert werden. Dabei können Einzelfehler, wie z. B. Haftfehler, einer Recheneinheit, unabhängig davon, in welchem Logikgatter der Einzelfehler auftritt, durch den Fehlerdetektor erkannt werden. Aber nicht nur Fehler in Logik-Gatter können erkannt werden. Auch Fehler auf einer Leitung (Verbindung) zwischen den Gattern, Fehler auf den Eingängen (von Input-Operanden) und/oder Fehler an den Ausgängen können erkannt werden.By selecting the types of logic gates (eg, AND gates, OR gates, XOR gates, ...) for the logic gates and connecting the logic gates as described 3 to 6 and 11 At the output of the first binary output signal s i selectable, an addition, a logical AND operation, a logical OR operation or a logical EXCLUSIVE OR operation of the two binary input signals can be realized. Accordingly, at the output of the second binary output signal s i an inverse addition, a NAND-operation, a NOR-operation or an EXCLUSIVE-NOT-OR-operation are realized. This single errors, such. B. adhesion error, a computing unit, regardless of the logic gate in which the single error occurs, are detected by the error detector. But not only errors in logic gates can be detected. It is also possible to detect faults on a line (connection) between the gates, faults on the inputs (of input operands) and / or errors on the outputs.
Ausführungsbeispiele der Erfindung können auch auf selbstprüfende Addierer und ALU-Zellen auf der Basis von anderen Addierer-Typen basieren. Embodiments of the invention may also be based on self-checking adders and ALU cells based on other adder types.
Andere Addierer-Typen wie Carry Skip (Übertrag überspringen) oder Carry Select (Übertrag auswählen) sind aus Carry Ripple (darunter auch Fast Ripple) oder Carry Look-Ahead Addierer-Zellen aufgebaut. Deshalb können die vorgeschlagenen selbstprüfenden ALU-Zellen auch für die Implementierung einer selbstprüfenden ALU auf der Basis von Carry Skip oder Carry Select Addierer verwendet werden.Other types of adders, such as Carry Skip or Carry Select, are built from Carry Ripple (including Fast Ripple) or Carry Look-Ahead adder cells. Therefore, the proposed self-checking ALU cells can also be used for the implementation of a self-checking ALU based on Carry Skip or Carry Select adders.
Einige Ausführungsbeispiele gemäß der Erfindung beziehen sich auf eine Integration der selbstprüfenden ALU in Datenpfad eines Mikroprozessors.Some embodiments according to the invention relate to integration of the self-checking ALU in the data path of a microprocessor.
Der Paritätskode und der Two-Rail Kode (Verdopplungskode) werden sehr oft verwendet, um die Busse im Datenpfad eines Mikroprozessors zu überwachen.The parity code and the two-rail code (duplication code) are very often used to monitor the buses in the data path of a microprocessor.
Weil die Inputs a und b der vorgeschlagenen selbstprüfenden ALU paritätskodiert sind (Paritätsbits pa und pb) und die Parität ps des Outputs s (Ausgangssignale) am Ausgang des Two-Rail Checkers (Zweiwegprüfeinheit) implementiert wird, lässt sich die ALU sehr einfach in einen paritätsgeprüften Datenpfad integrieren.Because the inputs a and b of the proposed self-checking ALU are parity-coded (parity bits p a and p b ) and the parity p s of the output s (output signals) is implemented at the output of the two-rail checker, the ALU becomes very simple integrate into a parity-validated data path.
Die vorgeschlagene ALU kann in einen Datenpfad leicht integriert werden, in dem Two-Rail Kode verwendet wird, weil an ihren Ausgängen s und s auch der Two-Rail Kode implementiert wird.The proposed ALU can be easily integrated into a data path using two-rail code because at its outputs s and s also the two-rail code is implemented.
Bei alternativen Arithmetik-Logik-Einheiten kann man unter Beibehaltung der anderen Merkmale auch das Gatter 2 (zweites Logikgatter) in ALU-CLA-1, ALU-CLA-2, ALU-FR-1 und ALU-FR2 verdoppeln und das verdoppelte Gatter ausschließlich für die Implementierung eines der beiden Ausgänge s (und das ursprüngliche Gatter ausschließlich für den anderen Ausgang) zu verwenden. Zusätzlich kann dabei zur Berechnung eines Ausgangssignals die beschriebene Hilfsfunktion fi verwendet werden.In alternative arithmetic logic units, while retaining the other features, gate 2 (second logic gate) in ALU-CLA-1, ALU-CLA-2, ALU-FR-1, and ALU-FR2 can be doubled and the doubled gate exclusive for implementing one of the two outputs s (and the original gate exclusively for the other output). In addition, the described auxiliary function f i can be used to calculate an output signal.
Im Allgemeinen kann ein niedriger Hardware-Aufwand (im Vergleich zur Standard-Verdopplung) von einer vorgeschlagenen ALU z. B. durch folgendes erreicht werden:
Im Fall einer ALU, die auf dem Carry Look-ahead Addierer basiert, ist das Propagiere-Signal pi nur einmal implementiert, das Generiere-Signal gi nur einmal implementiert und die Carry Look-ahead Einheit nur einmal implementiert.In general, a low hardware overhead (compared to the standard doubling) of a proposed ALU z. B. be achieved by the following:
In the case of an ALU based on the carry look-ahead adder, the propagate signal p i is implemented only once, the generate signal g i is implemented only once and the carry look-ahead unit is implemented only once.
Im Fall einer ALU, die auf dem Ripple (Fast Ripple) Addierer basiert, ist Propagiere-Signal pi nur einmal implementiert, Generiere-Signal gi nur einmal implementiert und das Übertragssignal ci nur einmal implementiert. Also sind das Propagiere-Signal pi, das Generiere-Signal gi, Carry Look-ahead Einheit bzw. Übertrags-Generierung in der Ripple ALU nicht verdoppelt.In the case of an ALU based on the ripple (adder) adder, the propagate signal p i is implemented only once, the generate signal g i is implemented only once, and the carry signal c i is implemented only once. Thus, the propagate signal p i , the generate signal g i , carry look-ahead unit and carry generation in the ripple ALU are not duplicated.
Diese Signale können z. B. für die Implementierung des ersten Ausgangs si+1 als auch für die Implementierung des zweiten Ausgangs verwendet werden. Bei der Standard-Verdopplung ist das nicht der Fall (da gibt es keine gemeinsame Gatter oder Signale). Ein Fehler im Propagiere-Signal pi wird (bei einer Standard-Verdopplung) erkannt durch (”externen”) Vergleich pa xor pb mit p(a xor b) und, wenn er nach der Abzweigung des Signals auftritt, durch Vergleich der si und s i . si ist dabei korrekt und s i ist dann fehlerhaft.These signals can z. For the implementation of the first output s i + 1 as well as for the implementation of the second output be used. This is not the case with standard doubling (there are no common gates or signals). An error in the propagate signal p i is detected (in a standard doubling) by ("external") comparison p a xor p b with p (a xor b) and, if it occurs after the branching of the signal, by comparing the s i and s i , s i is correct and s i is then faulty.
Durch das beschriebene Konzept können Fehler in dem Generiere-Signal gi, in der Carry Look-ahead Einheit bzw. Übertrags-Generierung durch den Vergleich von si mit s i erkannt werden, weil sie nur den Ausgang s i der ALU-Zelle_i verfählschen können, und der Ausgang si korrekt bleibt. Also ist z. B. nicht nur das Propagiere-Signal pi ein gemeinsames Gatter. Das Generiere-Signal gi, das Übertragssignal ci und die Gatter in der Carry Look-ahead Einheit können das auch sein. Geschützt können sie durch den Vergleich si und s i sein.Due to the concept described, errors in the generate signal g i , in the carry look-ahead unit or carry generation by the comparison of s i with s i be recognized because they only have the output s i can ALU cell_i and the output s i remains correct. So is z. B. not only the propagate signal p i a common gate. The generate signal g i , the carry signal c i and the gates in the carry look-ahead unit may also be. They can be protected by comparing s i and s i be.
Falls das gemeinsame Gatter, welches das Propagiere-Signal erzeugt, verdoppelt wird, bleiben die anderen gemeinsamen Gatter, wie jene zur Erzeugung des Generiere-Signal gi, des Übertragssignal ci und die Gatter in Carry Look-ahead Einheit. Sie werden weiter für die Implementierung der beiden Ausgänge si und s i verwendet.If the common gate generating the propagate signal is doubled, the other common gates, such as those for generating the generate signal g i , the carry signal c i, and the gates remain in the carry look-ahead unit. They will continue to implement the two outputs s i and s i used.
Z. B. können in der (fast) Ripple ALU die Gatter für die Implementation des ci in den ALU-Zellen implementiert sein, aber sozusagen verteilt. Beispielsweise sind in 5 die Gatter 51, 53 und 54 in der Zelle Ai die gemeinsame Gatter für si+1 und in der Zelle Ai.For example, in the (near) ripple ALU, the gates for the implementation of the c i may be implemented in the ALU cells, but distributed as it were. For example, in 5 the gates 51 . 53 and 54 in cell A i the common gates for s i + 1 and in the cell A i .
Des Weiteren kann in manchen Beispielen die Übertragsvorausberechungseinheit gemeinsame Gatter für si und s i enthalten. Furthermore, in some examples, the carry prediction unit may have common gates for s i and s i contain.
Einige Ausführungsbeispiele gemäß der Erfindung beziehen sich auf eine Implementierungstechnik von selbstprüfenden arithmetischen und logischen Operatoren, basierend auf Verdoppelungscode.Some embodiments according to the invention relate to an implementation technique of self-checking arithmetic and logical operators based on duplication code.
Bei der Erfindung handelt es sich z. B. um neue Techniken zur Entwicklung von selbstprüfenden arithmetischen und logischen Operatoren, die eine Arithmetik-Logik Einheit (ALU) implementiert. Operatoren ”Addition (ADD)”, ”logische UND (AND)”, ”logische ODER (OR)” und ”logische Exclusive ODER (XOR)” werden betrachtet. Diese Operatoren ebenso wie ihre Inversen ( ADD , NAND, NOR und XNOR) werden innerhalb eine ALU-Zelle (Recheneinheit) implementiert. Die Fehler in der ALU-Schaltung werden z. B. erkannt, wenn der Operator und der inverse Operator nicht zu einander invers sind. Verschiedene neue ALU-Zellen werden vorgeschlagen – z. B. für die Applikationen mit hohen Anforderungen an der Rechengeschwindigkeit und für die Applikationen, für die der Hardware-Aufwand und der Stromverbrauch kritisch sind. Der Flächenbedarf bei der vorgeschlagenen Techniken ist kleiner als der Flächenbedarf bei der Methode der Verdopplung und Vergleichs und vergleichbar mit dem Flächenbedarf für die ALU, die mit Hilfe des Parttätskodes geprüft ist. Die vorgeschlagene selbstprüfende ALU besitzt fast die gleichen Fehlererkennungseigenschaften wie komplett verdoppelte selbstprüfende ALU.In the invention is z. For example, new techniques for developing self-checking arithmetic and logical operators that implement an arithmetic logic unit (ALU). Operators "addition (ADD)", "logical AND (AND)", "logical OR (OR)" and "logical exclusive OR (XOR)" are considered. These operators as well as their inverses ( ADD , NAND, NOR and XNOR) are implemented within an ALU cell (arithmetic unit). The errors in the ALU circuit are z. For example, if the operator and the inverse operator are not inverse to each other. Various new ALU cells are proposed - e.g. As for the applications with high demands on the computing speed and for the applications for which the hardware complexity and power consumption are critical. The space requirement in the proposed techniques is smaller than the area requirement for the doubling and comparison method and comparable to the area requirement for the ALU, which is checked by means of the partition code. The proposed self-checking ALU has almost the same error detection characteristics as completely doubled self-checking ALU.
Die vorgeschlagene selbstprüfende ALU implementiert z. B. sowohl die Ausgabe s als auch die negierte Ausgabe s . Durch den bitweisen Vergleich der beiden Ausgaben miteinander können Fehler in der ALU erkannt werden. Weil die Ausgaben der ALU durch den Verdopplungskode überwacht werden, sind die Fehlererkennungseigenschaften der ALU besser als die Fehlererkennungseigenschaften der paritätsgeprüften ALU und vergleichbar mit der Fehlererkennungseigenschaften der komplett verdoppelten ALU.The proposed self-checking ALU implements z. For example, both the output s and the negated output s , By comparing the two outputs bit by bit, errors in the ALU can be detected. Because the outputs of the ALU are monitored by the duplication code, the ALU's error detection properties are better than the parity-proven ALU's error detection properties and comparable to the error detection characteristics of the fully-doubled ALU.
Für die Implementierung des negierten Ausgangs si der ALU-Zelle wird z. B. eine Hilfsfunktion verwendet. Eine Logik steuert die Implementierung der Funktionspaaren – {ADD, ADD }, {AND, NAND}, {OR, NOR} und {XOR, XNOR}. Die Propagiere, Generiere- und Übertragssignale werden nicht verdoppelt. Dadurch kann der benötigte Hardware-Overhead für die Implementierung der selbstprüfenden ALU im Vergleich zu den Hardware-Overhead der komplett verdoppelten ALU deutlich reduziert werden und ist vergleichbar mit dem Hardware-Overhead für die paritätsgeprüften ALU.For the implementation of the negated output s i of the ALU cell z. B. uses an auxiliary function. A logic controls the implementation of the function pairs - {ADD, ADD }, {AND, NAND}, {OR, NOR} and {XOR, XNOR}. The propagation, generation and carry signals are not duplicated. This significantly reduces the hardware overhead required to implement the self-verifying ALU compared to the hardware overhead of the fully-doubled ALU, and is comparable to the hardware overhead for the parity-verified ALU.
Die Implementierung der logischen Funktionen (AND, OR, XOR) am Ausgang si kann basierend auf dem Grundkonzept auch anders als in den 3–6 und 11 gezeigt erfolgen.The implementation of the logical functions (AND, OR, XOR) at the output s i can also be different based on the basic concept than in the 3 - 6 and 11 shown done.
Eine andere Implementierung wäre z. B. das Propagiere-Signal als zu implementieren und Teile dieser Implementierung aibi und für die Implementierung der AND und NOR Funktionen zu nutzen.Another implementation would be z. B. the propagate signal as to implement and implement parts of this implementation a i b i and to use for the implementation of the AND and NOR functions.
Statt der zueinander inversen Funktionen können auch die gleichen Funktionen an den Ausgängen implementiert – {ADD, ADD}, {AND, AND}, {OR, OR) und {XOR, XOR}. Dies kann z. B. erfolgen, indem man die Inverse der Hilfsfunktion ƒ nimmt.Instead of mutually inverse functions, the same functions can be implemented on the outputs - {ADD, ADD}, {AND, AND}, {OR, OR) and {XOR, XOR}. This can be z. B. take place by taking the inverse of the auxiliary function ƒ.
Um die logischen Funktionen zu implementieren, werden z. B. Übertragssignale manipuliert. Sie können direkt oder indirekt mit Hilfe der Propagiere- und Generiere-Signale manipuliert werden. Das wurde in der Ausführungsbeispielen gezeigt. Außerdem können andere logische Gatter verwendet werden (z. B. mit drei Eingängen) oder die Steuerlogik wird anders aufgebaut. Auch die Kodierung der Operationen (laut den gezeigten Tabellen) kann anders aussehen.To implement the logical functions, z. B. manipulated carry signals. They can be manipulated directly or indirectly using the Propagation and Generate signals. This was shown in the embodiments. In addition, other logic gates can be used (eg, with three inputs) or the control logic is built differently. Also, the coding of the operations (according to the tables shown) may look different.
Die Anzahl der Kontrollsignale und die Kodierung der Operationen können anders, als in den 3–6 und 11 gezeigt, sein. In der allgemeinen Struktur der vorgeschlagenen ALU (2) ist die Anzahl der Kontrollsignale (m1, ..., mk) variabel angegeben. In den Ausführungsbeispielen werden zwei (k = 2) und drei (k = 3) Kontrollsignale verwendet.The number of control signals and the coding of the operations can be different than in the 3 - 6 and 11 be shown. In the general structure of the proposed ALU ( 2 ), the number of control signals (m 1 , ..., m k ) is variably indicated. In the embodiments, two (k = 2) and three (k = 3) control signals are used.
Bei einige Ausführungsbeispiele gemäß der Erfindung kann die vorgeschlagene selbstprüfende ALU in Mikroprozessoren für Anwendungen mit hohen Anforderungen an der Zuverlässigkeit und in Mikroprozessoren für Sicherheitsanwendungen eingesetzt werden. Das sind zum Beispiel Safety Anwendungen (Sicherheitsanwendungen) in Automotive, Zugverkehr, Medizin, Defence (Abwehr) und AKW (Atomkraftwerk), fehlertolerante Computer für Flug- und Raumfahrt, Chipkarten.In some embodiments according to the invention, the proposed self-checking ALU may be used in microprocessors for high reliability applications and in microprocessors for security applications. These are, for example, safety applications in automotive, train traffic, medicine, defense and nuclear power plants, fault-tolerant computers for aerospace, chip cards.
7 zeigt ein Flussdiagramm eines Verfahrens 700 zur Verarbeitung eines ersten binären Eingangssignals und eines zweiten binären Eingangssignals entsprechend einer auswählbaren algebraischen Funktion gemäß einem Ausführungsbeispiel der Erfindung. 7 shows a flowchart of a method 700 for processing a first binary input signal and a second binary input signal according to a selectable algebraic function according to an embodiment of the invention.
Das Verfahren 700 umfasst ein Ansteuern 710 zumindest eines Verarbeitungsgatters einer ersten Gruppe von Verarbeitungsgattern und zumindest eines Verarbeitungsgatter einer zweiten Gruppe von Verarbeitungsgattern durch eine Gruppe von Kontrollgattern basierend auf einem Kontrollsignal, um eine algebraische Funktion aus einer Mehrzahl von algebraischen Funktionen auszuwählen. Dabei unterscheiden sich die erste Gruppe von Verarbeitungsgattern, die zweite Gruppe von Verarbeitungsgattern und die Gruppe von Kontrollgattern jeweils zumindest teilweise voneinander. Die erste Gruppe von Verarbeitungsgattern und die zweite Gruppe von Verarbeitungsgattern weisen zumindest ein gemeinsames Verarbeitungsgatter auf.The procedure 700 includes a drive 710 at least one processing gate of a first group of processing gates and at least one processing gate of a second group of processing gates by a group of control gates based on a control signal to select an algebraic function from a plurality of algebraic functions. Here, the first group of processing gates, the second group of processing gates and the group of control gates each differ at least partially from each other. The first group of processing gates and the second group of processing gates have at least one common processing gate.
Des Weiteren umfasst das Verfahren 700 ein Verarbeiten 720 des ersten binären Eingangssignals und des zweiten binären Eingangssignals durch die erste Gruppe von Verarbeitungsgattern entsprechend der ausgewählten algebraischen Funktion, um ein erstes binäres Ausgangssignal zu erhalten.Furthermore, the method includes 700 a processing 720 of the first binary input signal and the second binary input signal through the first group of processing gates corresponding to the selected algebraic function to obtain a first binary output signal.
Zusätzlich wird das erste binäre Eingangssignal und das zweite binäre Eingangssignal durch die zweite Gruppe von Verarbeitungsgattern entsprechend der ausgewählten algebraischen Funktion oder entsprechend einer inversen algebraischen Funktion der ausgewählten algebraischen Funktion verarbeitet 730, um ein zweites binäres Ausgangssignal zu erhalten. Das erste binäre Ausgangssignal entspricht dem zweiten binären Ausgangssignal oder einem inversen Ausgangssignal des zweiten binären Ausgangssignals, wenn die Recheneinheit fehlerfrei arbeitet.In addition, the first binary input signal and the second binary input signal are processed by the second group of processing gates corresponding to the selected algebraic function or according to an inverse algebraic function of the selected algebraic function 730 to get a second binary output signal. The first binary output signal corresponds to the second binary output signal or an inverse output signal of the second binary output signal when the arithmetic unit is operating correctly.
Des Weiteren umfasst das Verfahren 700 ein Vergleichen des ersten binären Ausgangssignals mit dem zweiten binären Ausgangssignal oder mit dem inversen Ausgangssignal des zweiten binären Ausgangssignals, um unabhängig von der ausgewählten algebraischen Funktion einen Fehler bei der Verarbeitung des ersten binären Eingangssignals und des zweiten binären Eingangssignals zu detektieren.Furthermore, the method includes 700 comparing the first binary output signal with the second binary output signal or with the inverse output signal of the second binary output signal to detect an error in the processing of the first binary input signal and the second binary input signal, independently of the selected algebraic function.
Obwohl manche Aspekte im Zusammenhang mit einer Vorrichtung beschrieben wurden, versteht es sich, dass diese Aspekte auch eine Beschreibung des entsprechenden Verfahrens darstellen, sodass ein Block oder ein Bauelement einer Vorrichtung auch als ein entsprechender Verfahrensschritt oder als ein Merkmal eines Verfahrensschrittes zu verstehen ist. Analog dazu stellen Aspekte, die im Zusammenhang mit einem oder als ein Verfahrensschritt beschrieben wurden, auch eine Beschreibung eines entsprechenden Blocks oder Details oder Merkmals einer entsprechenden Vorrichtung dar.Although some aspects have been described in the context of a device, it will be understood that these aspects also constitute a description of the corresponding method, so that a block or a component of a device is also to be understood as a corresponding method step or as a feature of a method step. Similarly, aspects described in connection with or as a method step also represent a description of a corresponding block or detail or feature of a corresponding device.