DE10338701A1 - Safety controller, e.g. for use in chip cards or smart cards, has processor that can switch between power mode and security mode - Google Patents

Safety controller, e.g. for use in chip cards or smart cards, has processor that can switch between power mode and security mode Download PDF

Info

Publication number
DE10338701A1
DE10338701A1 DE10338701A DE10338701A DE10338701A1 DE 10338701 A1 DE10338701 A1 DE 10338701A1 DE 10338701 A DE10338701 A DE 10338701A DE 10338701 A DE10338701 A DE 10338701A DE 10338701 A1 DE10338701 A1 DE 10338701A1
Authority
DE
Germany
Prior art keywords
mode
processed
data
instruction
safety
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
DE10338701A
Other languages
German (de)
Inventor
Michael Smola
Berndt Gammel
Gerd Dirscherl
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Infineon Technologies AG
Original Assignee
Infineon Technologies AG
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Infineon Technologies AG filed Critical Infineon Technologies AG
Priority to DE10338701A priority Critical patent/DE10338701A1/en
Publication of DE10338701A1 publication Critical patent/DE10338701A1/en
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/75Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information by inhibiting the analysis of circuitry or operation
    • G06F21/755Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information by inhibiting the analysis of circuitry or operation with measures against power attack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K19/00Record carriers for use with machines and with at least a part designed to carry digital markings
    • G06K19/06Record carriers for use with machines and with at least a part designed to carry digital markings characterised by the kind of the digital marking, e.g. shape, nature, code
    • G06K19/067Record carriers with conductive marks, printed circuits or semiconductor circuit elements, e.g. credit or identity cards also with resonating or responding marks without active components
    • G06K19/07Record carriers with conductive marks, printed circuits or semiconductor circuit elements, e.g. credit or identity cards also with resonating or responding marks without active components with integrated circuit chips
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Computer Security & Cryptography (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Microcomputers (AREA)

Abstract

The controller [10] has a CPU [12] and computer circuitry [14], e.g. a universal asynchronous receiver-transmitter (UART) module, oscillator for data transmission. The controller operates to a program stored in electrically EPROM (EEPROM) or ROM memory [18]. The computer can switch between a power mode for fast operation and a security mode consuming low power.

Description

Die vorliegende Erfindung bezieht sich auf Controller im allgemeinen und insbesondere auf Sicherheitscontroller, wie sie beispielsweise in Chipkarten oder Smartcards eingesetzt werden, und wiederum insbesondere auf eine Steigerung der Leistungsfähigkeit solcher Sicherheitscontroller.The The present invention relates to controllers in general and in particular to security controllers, as for example used in smart cards or smart cards, and again in particular on increasing the performance of such security controllers.

Bei existierenden Sicherheits- bzw. Security-Mikrocontrollern ist es erforderlich, zu verhindern, dass es potentiellen Angreifern bei Anlegen verschiedener zu verarbeitender Daten mittels Auswertung bzw. Analyse der Laufzeit, die der Mikrocontroller zur programmgemäßen Verarbeitung der zu verarbeitenden Daten benötigt, möglich ist, Rückschlüsse auf gegebenenfalls geheime Daten zu ziehen, wie z.B. auf den zur Verschlüsselung der angelegten Daten verwendeten Schlüssel. Zu diesem Zweck werden Befehle, wie z.B. Schiebebefehle (SHIFT) oder Multiplikationsbefehle (MUL), die bei Geschwindigkeitsoptimierter Implementierung eine datenabhängige Laufzeit bzw. Befehlsdauer hätten, in den Mikrocontrollern so implementiert, dass die Befehle unabhängig von den zu verarbeitenden Daten eine konstante Laufzeit aufweisen. Dies bedeutet freilich, dass bei einer solchen Implementierung eines Befehls die Befehlsdauer mindestens der maximalen Laufzeit unter den Laufzeiten entsprechen muss, die dieser Befehl bei geschwindigkeitsoptimierter Implementierung benötigen würde. Im Ergebnis wird hiermit die Rechenleistung zugunsten der Sicherheit gegenüber ihrem theoretisch möglichen Optimum reduziert.at It is existing security or security microcontrollers required to prevent it from potential attackers Creation of various data to be processed by means of evaluation or analysis of the runtime, the microcontroller for program processing the data to be processed requires possible is, conclusions on optionally collecting secret data, e.g. on the encryption key used for the created data. For this purpose will be Commands, such as Shift commands (SHIFT) or multiplication commands (MUL), which is a data-dependent runtime with speed-optimized implementation or command duration, implemented in the microcontrollers so that the commands are independent of the data to be processed have a constant duration. This Of course, that means in such an implementation of a Command the instruction duration at least the maximum runtime among the Maturities must match this command at speed-optimized Need implementation would. The result is hereby the computing power in favor of security across from their theoretically possible Optimum reduced.

Dieses Problem findet insbesondere deshalb bei Sicherheitsmikrocontrollern so große Bedeutung, weil es die immer größer werdenden Anforderungen an die Sicherheit erforderlich gemacht haben, dass die Coprozessoren bzw. Rechenwerke innerhalb dieser Mikrocontroller Operanden mit großen Operanden längen, wie z.B. von üblicherweise 1.024, 2.048 oder teilweise noch mehr Bits, verarbeiten müssen. Entsprechend den großen Operandenlängen ist also hier der Unterschied zwischen der minimalen und der maximalen Laufzeit bzw. Befehlsdauer eines Befehls bei geschwindigkeitsoptimierter Implementierung besonders groß. So benötigt ein Shift-Befehl bei einer Implementierung, bei der unabhängig vom Schiebe-Offset bzw. Versatz die Laufzeit so lang ist, wie sie bei geschwindigkeitsoptimierter Implementierung erforderlich wäre, um einen Operanden um die maximale Anzahl an Stellen zu schieben, in dem Fall, dass das den Schiebebefehl implementierende Schieberegister 1.024 Bit lang ist, im Mittel 512 mal mehr Zeit als bei geschwindigkeitsoptimierter Implementierung. Ähnlich ist die Situation bei arithmetischen Operationen, wie z.B. Multiplikationen und Divisionen. Bei einigen Multiplikationsimplementierungen ist beispielsweise die Anzahl der „Einsen" im Multiplikator bestimmend für die Anzahl der erforderlichen, oft sequentiell durchzuführenden Additionen. Würden diese Implementierungen für die Multiplikation in einem Sicherheitscontroller verwendet werden, könnte ein potentieller Angreifer anhand der Laufzeit dieser auf hohe Geschwindigkeit ausgerichteten Implementierung auf die zu verarbeitenden und gegebenenfalls zu schützenden Daten rückschließen. Wird stattdessen die Multiplikation unabhängig von einer Auswertung der Einsen im Multiplikator durchgeführt, beträgt die Befehlsdauer auf jeden Fall maximal lang.This A particular problem therefore lies with safety microcontrollers so big Meaning, because it is the ever-growing Safety requirements have made that necessary the coprocessors or arithmetic units within these microcontrollers Operands with big ones Operands length, like e.g. from usually 1,024, 2,048 or sometimes even more bits have to process. Corresponding the big one Operand lengths So here is the difference between the minimum and the maximum Runtime or command duration of a command at speed-optimized Implementation especially big. So needed a shift command in an implementation that does not depend on Shift offset or offset the runtime is as long as they are at speed optimized implementation would be required to run a Operands to push the maximum number of digits in the Case, that the shift register implementing shift register 1,024 bits long, on average 512 times more time than speed-optimized Implementation. Similar is the situation with arithmetic operations, such as multiplications and divisions. For some multiplication implementations For example, determining the number of "ones" in the multiplier for the Number of required, often sequential Additions. would these implementations for the multiplication can be used in a security controller could a potential attacker based on the runtime of these at high speed oriented implementation to be processed and, where appropriate to be protected Infer data. Becomes instead the multiplication independent of an evaluation of the Ones performed in the multiplier, is the command duration in any case maximally long.

Zu dem Zeitnachteil, mit dem die erhöhte Sicherheit erkauft wird, kommt hinzu, dass die Abgleichung der Befehlsdauer zur Abarbeitung eines Befehls unabhängig vom zu verarbeitenden Datum zumeist auch inhärent mit einer entsprechenden Erhöhung des Stromverbrauchs des Mikrocontrollers einhergeht, was insbesondere bei Kontaktloschipkarten oder Anwendungen von Sicherheitscontrollern in tragbaren und beispielsweise batteriebetriebenen Geräten, wie z.B. Handys, von Nachteil ist.To the time disadvantage with which the increased security is bought Added to that is the alignment of the command duration for execution a command independently Of the date to be processed usually also inherent with a corresponding increase the power consumption of the microcontroller is accompanied, in particular for contactless chip cards or security controller applications in portable and, for example, battery-powered devices, such as e.g. Cell phones are at a disadvantage.

Ein großer Nachteil an bestehenden Sicherheitsmikrocontrollern besteht nun darin, dass die Befehle in den Befehlszeilen eines Programms immer unter vorbeschriebenem Abgleich der Laufzeiten, die die einzelnen Befehle für unterschiedliche zu verarbeitende Daten benötigen, stattfindet, ohne dabei zwischen sicherheitsrelevanter einerseits und geschwindigkeitskritischer, nicht-sicherheitskritischer Software andererseits zu unterscheiden, so dass auch im letztgenannten Fall unnötigerweise Leistungsverluste hingenommen werden müssen.One greater Disadvantage of existing safety microcontrollers is now in that the commands in the command lines of a program always under the above-mentioned adjustment of the maturities, which the individual Commands for Different data to be processed takes place without doing so between safety-relevant on the one hand and speed-critical, non-safety-critical software on the other hand, so that even in the latter case unnecessarily power losses must be accepted.

Die Aufgabe der vorliegenden Erfindung besteht darin, einen Controller mit einem Rechenwerk zu schaffen, der im wesentlichen dieselbe Sicherheit vor Ausspähung sicherheitsrelevanter Informationen wie herkömmliche Controller und gleichzeitig eine höhere Effizienz bzw. Leistungsfähigkeit in Hinblick auf sowohl Arbeitsgeschwindigkeit als auch Stromverbrauch ermöglicht.The The object of the present invention is a controller with an arithmetic unit that provides essentially the same security before spying safety-related information like conventional controllers and at the same time a higher one Efficiency and performance in terms of both work speed and power consumption allows.

Diese Aufgabe wird durch einen Controller gemäß Anspruch 1 gelöst.These The object is achieved by a controller according to claim 1.

Ein erfindungsgemäßer Controller umfasst ein Rechenwerk zur Verarbeitung eines zu verarbeitenden Datums in einem Leistungsmodus oder einem Sicherheitsmodus, das ausgebildet ist, um in dem Leistungsmodus das zu verarbeitende Datum zwar mit einer höheren Abhängigkeit zwischen Stromverbrauch oder Laufzeitverhalten einerseits und dem zu verarbeitenden Datum andererseits dafür aber schneller oder unter weniger Stromverbrauch zu verarbeiten als in dem Sicherheitsmodus, und eine Einrichtung zum gesteuerten Umschalten des Rechenwerks zwischen dem Leistungsmodus und dem Sicherheitsmodus.A controller according to the invention comprises an arithmetic unit for processing a data to be processed in a power mode or a safety mode, which is designed to operate in the power mode Although the date to be processed, with a higher dependency between power consumption or runtime behavior on the one hand and the date to be processed on the other hand to process faster or with less power consumption than in the security mode, and a means for controlled switching of the calculator between the power mode and the safety mode.

Die vorliegende Erfindung beruht auf der Erkenntnis, dass unter zum Teil nur geringem zusätzlichen Hardwareaufwand eine Erhöhung der Gesamtleistungsfähigkeit eines Controllers unter im wesentlichen keinen Einbußen bei der Sicherheit vor Ausspähung von sicherheitsrelevanten, von dem Controller zu verarbeitenden Daten erzielt werden kann, wenn das Rechenwerk eines Controllers mit der Fähigkeit ausgestattet wird, die Verarbeitung, wie z.B. eine bestimmte Rechenoperation, an einem zu verarbeitenden Datum in entweder einem Leistungsmodus oder einem Sicherheitsmodus durchführen zu können, wobei beim Leistungsmodus das zu verarbeitende Datum mit einer höheren Abhängigkeit zwischen Stromverbrauch oder Laufzeitverhalten einerseits und dem zu verarbeitenden Datum andererseits, aber dafür schneller oder mit weniger Stromverbrauch als im Sicherheitsmodus verarbeitet wird. Durch einfaches gesteuertes Umschalten des Rechenwerks zwischen dem Leistungsmodus und dem Sicherheitsmodus kann dann der Umstand berücksichtigt werden, dass manche Befehle in dem durch den Controller abzuarbeitenden Programm nicht-sicherheitskritische Daten betreffen und somit herkömmlicher Weise unnötigerweise durch das Rechenwerk im Sicherheitsmodus verarbeitet werden würden.The The present invention is based on the finding that under Part only small additional hardware expenditure an increase the total efficiency a controller with essentially no loss the security against spying of security-related, to be processed by the controller Data can be obtained if the calculator of a controller with the ability is equipped, the processing, such. a certain arithmetic operation, on a date to be processed in either a power mode or a security mode to be able to perform Date to be processed with a higher dependency between power consumption or runtime behavior on the one hand and the date to be processed on the other hand, but for that faster or with less power consumption than in safety mode is processed. By simply controlled switching of the calculator between The power mode and security mode may then be the circumstance considered will do that some commands in the to be processed by the controller Program non-safety-critical data and thus more conventional Way unnecessarily would be processed by the calculator in safety mode.

Gemäß Ausführungsbeispielen der vorliegenden Erfindung sind zur Implementierung der vorliegenden Erfindung in der CPU (central processing unit = zentrale Verarbeitungseinheit) eines Controllers in dessen Befehlssatz spezielle Befehle enthalten. Gemäß einem ersten Ausführungsbeispiel sind dies Befehle, die eigens vorgesehen sind, um zwischen dem Sicherheits- und Leistungsmodus hin- und herzuschalten. Nach einem weiteren Ausführungsbeispiel sind Befehle für Rechenoperationen doppelt vorgesehen, nämlich sowohl Befehle, die von dem Rechenwerk in dem Leistungsmodus durchgeführt werden, als auch solche, die dieselben Rechenoperationen betreffen, aber von dem Rechenwerk im Sicherheitsmodus durchgeführt werden. Nach einem wiederum weiteren Ausführungsbeispiel enthält der CPU-Befehlssatz Befehle, die Rechenoperationen betreffen, die durch das Rechenwerk durchgeführt werden sollen, und zudem einen Operanden enthalten, der anzeigt, ob das mit dem Befehl zu verarbeitende Datum durch das Rechenwerk im Leistungs- oder Sicherheitsmodus durchgeführt werden soll.According to embodiments The present invention is intended to implement the present invention Invention in the CPU (central processing unit) a controller whose command set contains special commands. According to one first embodiment these are commands that are specifically designed to move between the security and power mode switch back and forth. According to another embodiment are commands for Arithmetic operations are provided in duplicate, namely both commands issued by the arithmetic unit in the power mode, as well as those which concern the same operations, but from the calculator performed in safety mode become. In yet another embodiment, the CPU instruction set includes Commands that relate to arithmetic operations performed by the calculator carried out and also contain an operand indicating whether the date to be processed with the command is calculated by the calculator to be performed in power or safety mode.

Bevorzugte Ausführungsbeispiele der vorliegenden Erfindung werden nachfolgend Bezug nehmend auf die beiliegenden Zeichnungen näher erläutert. Es zeigen:preferred embodiments The present invention will be described below with reference to FIG the enclosed drawings closer explained. Show it:

1 ein Blockschaltbild eines Controllers gemäß einem ersten Ausführungsbeispiel der vorliegenden Erfindung; 1 a block diagram of a controller according to a first embodiment of the present invention;

2 eine schematische Zeichnung eines exemplarischen Aufbaus eines Befehls einer Befehlszeile eines Programms; und 2 a schematic drawing of an exemplary structure of a command line command of a program; and

3 ein Blockschaltbild eines Controllers gemäß einem weiteren Ausführungsbeispiel der vorliegenden Erfindung. 3 a block diagram of a controller according to another embodiment of the present invention.

1 zeigt einen Controller 10 mit einer CPU 12 und einem Rechenwerk 14. Gemäß dem vorliegenden Ausführungsbeispiel ist der Controller 10 beispielsweise ein Kryptomikrocontroller einer Multiapplikationschipkarte, die neben der CPU 12 und dem Rechenwerk 14 weitere Komponenten aufweist, wie z.B. eine Sende/Empfangsschnittstelle zum Datentransfer mit einem Terminal, wie z.B. ein UART-Modul (universal asynchronous receiver-transmitter = universeller asynchroner Sender/Empfänger), einen Oszillator zum Erzeugen eines internen Takts, ein Interrupt-Modul zum hardwaremäßigen Generieren von Interrupt-Signalen, einen Zufallsgenerator oder dergleichen, wobei dieselben durch einen Adress-Daten-Bus mit der CPU 12 verbunden sind, wobei jedoch solche Komponenten in 1 der Übersichtlichkeit halber nicht gezeigt sind. 1 shows a controller 10 with a CPU 12 and an arithmetic unit 14 , According to the present embodiment, the controller 10 For example, a crypto microcontroller of a multi-application chip card next to the CPU 12 and the calculator 14 has further components, such as a transmitting / receiving interface for data transfer with a terminal, such as a universal asynchronous receiver-transmitter (UART) module, an oscillator for generating an internal clock, an interrupt module for hardware Generating interrupt signals, a random number generator or the like, passing through an address data bus to the CPU 12 However, such components are in 1 for the sake of clarity are not shown.

Der Controller 10 ist zur Abarbeitung eines Programms bzw. einer Applikation 16 vorgesehen, das in einem Speicher 18 gespeichert ist, wie z.B. einem EEPROM oder ROM.The controller 10 is for processing a program or an application 16 provided in a memory 18 is stored, such as an EEPROM or ROM.

Die CPU 12 ist mit dem Speicher 18 verbunden, um die das Programm 16 betreffenden Programmdaten zu erhalten, und mit dem Rechenwerk 14, um in dem Fall von Befehlen in den Programmdaten, die eine Verarbeitung durch das Rechenwerk 14 erfordern, an dasselbe eine bestimmte Eingangsvariable mit der Aufforderung weiterzuleiten, an dieser eine dem Befehl entsprechende Rechenoperation durchzuführen, und um nach der Verarbeitung das Ergebnis von dem Rechenwerk 14 zu erhalten.The CPU 12 is with the store 18 connected to the the program 16 program data and with the calculator 14 in order, in the case of commands in the program data, to be processed by the calculator 14 require forwarding to it a particular input variable requesting to perform on it an arithmetic operation corresponding to the command and, after processing, the result from the arithmetic unit 14 to obtain.

Genauer ausgedrückt, liegt das Programm 16 entweder im physikalischen Adressraum des Speichers 18 oder im virtuellen Adressraum als linear angeordnete Abfolge von Befehlen vor, die von der CPU 12, abgesehen von dem Auftreten von Sprungbefehlen, nacheinander abgearbeitet werden. Hierzu umfasst die CPU 12 einen Programmzähler (nicht gezeigt), der – von Sprungbefehl einmal abgesehen, vor jedem befehl inkrementiert wird und auf den nächsten zu verarbeitenden Befehl in dem Speicher 18 zeigt. Basierend auf dem Programmzähler 12 erhält die CPU 12 von dem Speicher 18 in Form der Programmdaten bzw. eines Befehlsstromes nacheinander die Befehle der Befehlszeilen des Programms 16.More specifically, the program lies 16 either in the physical address space of the memory 18 or in the virtual address space as a linear sequence of instructions provided by the CPU 12 , apart from the occurrence of jump instructions, be processed one after the other. This includes the CPU 12 a program counter (not shown) that is incremented prior to each instruction, apart from the jump instruction, and to the next instruction to be processed in the memory 18 shows. Based on the program counter 12 gets the CPU 12 from the store 18 in the form of the program data or a command stream successively the commands of the command lines of the program 16 ,

Die CPU 12 umfasst einen Befehlsdecodierer 20, der vorgesehen ist, um den Befehlsstrom zu empfangen und die in demselben ankommenden Befehle zu interpretieren bzw. zu identifizieren, indem derselbe die ankommenden Befehle einer von mehreren Befehlsarten zuordnet, zu deren Abarbeitung die CPU 12 in der Lage ist, und die den sogenannten Befehlssatz der CPU 12 bilden.The CPU 12 includes an instruction decoder 20 which is provided to receive the instruction stream and to interpret the incoming instructions in the same by assigning the incoming instructions to one of several types of instructions, for the execution of which the CPU 12 is capable of, and the so-called instruction set of the CPU 12 form.

Um den allgemeinen Aufbau der die Befehlszeilen des Programms 16 bildenden Befehle zu veranschaulichen – Befehlszeile und Befehl werden im folgenden synonym verwendet –, zeigt 2 exemplarisch einen Befehl bestehend aus einem Operationscodefeld 22 und drei Operandenfeldern 24, 26 und 28. In dem Operationscodefeld 22 ist ein Operationscode Opcode enthalten, der eindeutig einer Befehlsart in dem Befehlssatz der CPU 12 zugeordnet ist. Nach dem vorliegenden exemplarischen Beispiel erfordert der Operationscode Opcode drei Operanden, nämlich die Operanden Operand1, Operand2 und Operand3, in den Operandenfeldern 2428. Die Bitlänge von Opcode und Operand1 – Operand3 beträgt beispielsweise jeweils 8, und die Bytes sind linear im physikalischen oder logischen Adressraum angeordnet, wie es durch einen die Abarbeitungs- bzw. Befehlsstromrichtung anzeigenden Pfeil 30 angedeutet ist.To the general structure of the command lines of the program 16 pictorial commands to illustrate - command line and command are used synonymously in the following - shows 2 an example of an instruction consisting of an operation code field 22 and three operand fields 24 . 26 and 28 , In the operation code field 22 is an opcode opcode that is unique to a type of instruction in the instruction set of the CPU 12 assigned. According to the present exemplary example, the opcode Opcode requires three operands, operands Operand1, Operand2, and Operand3, in the operand fields 24 - 28 , For example, the bit length of Opcode and Operand1 - Operand3 is 8, respectively, and the bytes are linearly arranged in the physical or logical address space as indicated by an arrow indicating the execution direction 30 is indicated.

Der in 2 gezeigte Befehl 2228 stellt nur eine Befehlszeile des Programms 16 dar und ihm gehen in dem Programm 16 bzw. im logischen oder Physikalischen Adressraum weitere Befehle voran bzw. ihm folgen weitere Befehle, wie es in 2 durch Punkte angedeutet ist.The in 2 shown command 22 - 28 represents only one command line of the program 16 and go in the program 16 or in the logical or physical address space further commands ahead or follow him more commands, as in 2 is indicated by dots.

Unter den Operationscodes 22 des Befehlssatzes der CPU 12 befinden sich einige, die sich auf das Rechenwerk 14 beziehen bzw. solche, die Instruktionen betreffen, die die Durchführung einer Rechenoperation durch das Rechenwerk 14 an einem zu verarbeitenden Datum fordern. Das zu verarbeitende Datum kann entweder an einer aus dem Operationscode oder dem bzw. den Operanden 2428 ableitbaren Position in dem Speicher 18, in einem aus dem Operationscode 22 oder dem bzw. den Operanden 2428 ableitbaren internen Register (nicht gezeigt) der CPU 12 oder in dem bzw. den Operandenfeldern 2428 des den Operationscode 22 enthaltenden Befehls selbst enthalten sein, oder abschnittweise an einer Kombination dieser möglichen Orte. Die Herleitung des zu verarbeitenden Datums aus dem ankommenden Befehl übernimmt ebenfalls der Befehlsdekodierer 20.Under the operation codes 22 of the instruction set of the CPU 12 There are some who are on the calculator 14 relate or those that relate to instructions that carry out an arithmetic operation by the arithmetic unit 14 on a date to be processed. The data to be processed can be either at one of the opcode or the operand (s) 24 - 28 derivable position in the memory 18 in one of the operation code 22 or the operand (s) 24 - 28 derivable internal register (not shown) of the CPU 12 or in the operand field (s) 24 - 28 of the operation code 22 containing the command itself, or sections of a combination of these possible locations. The derivation of the data to be processed from the incoming instruction is also undertaken by the instruction decoder 20 ,

Das besondere an dem Mikrocontroller 10 des vorliegenden Ausführungsbeispiels ist nun, dass die CPU 12 mit dem Befehlsdecodierer 20 und das Rechenwerk 14 gegenüber dem Aufbau von herkömmlichen Sicherheitsmikrocontrollern modifiziert sind, um bei der Verarbeitung der auf eine Verarbeitung von zu verarbeitenden Daten durch das Rechenwerk 14 abzielenden Befehle dafür zu sorgen, dass die zu verarbeitenden Daten durch das Rechenwerk 14 eben nicht nur auf eine bestimmte Art und Weise, bei Sicherheitscontrollern eben typischerweise eine leistungstechnisch gesehen unvorteilhafte, aber DPA-sichere oder gegen sonstige Angriffe Weise, durchgeführt werden, sondern dass die Art und Weise der Verarbeitung in dem Rechenwerk 14 an die Art der zu verarbeitenden Daten bzw. die Sicherheitsanforderung der dem Programm 16 entsprechenden Applikation angepasst werden kann.The special thing about the microcontroller 10 of the present embodiment is now that the CPU 12 with the command decoder 20 and the calculator 14 are modified from the structure of conventional security microcontrollers, in order to process the processing of data to be processed by the calculator 14 targeted commands to ensure that the data to be processed by the calculator 14 just not in a certain way, with security controllers just typically a performance-related unfavorable, but DPA-safe or against other attacks manner, be carried out, but that the way of processing in the calculator 14 the type of data to be processed or the security requirement of the program 16 appropriate application can be adapted.

Um dies zu ermöglichen, ist das Rechenwerk 14 derart ausgeführt, dass es in der Lage ist, alle Rechenoperationen, die auf dem Rechenwerk 14 durchgeführt werden sollen, auf zwei Weisen durchzuführen, nämlich einmal in einem Leistungsmodus und einmal in einem Sicherheitsmodus. Eine Rechenoperation im Leistungsmodus ist beispielsweise derart im Rechenwerk 14 implementiert, dass die Durchführung der Rechenoperation schnell und/oder mit geringem Stromverbrauch verbunden ist. Demgegenüber ist dieselbe Rechenoperation im Sicherheitsmodus derart implementiert, dass die Durchführung der Rechenoperation zwar langsamer ist und/oder mit weniger Stromverbrauch einhergeht, dass aber dafür bei der Durchführung der Rechenoperation in dem Rechenwerk 14 die Abhängigkeit zwischen Stromverbrauch oder dem Laufzeitverhalten einerseits und dem zu verarbeitenden Datum andererseits geringer ist als bei der Implementierung der Rechenoperation im Leistungsmodus.To make this possible, the calculator is 14 executed in such a way that it is capable of performing all arithmetic operations on the calculator 14 be performed in two ways, namely once in a power mode and once in a security mode. An arithmetic operation in the power mode is for example such in the calculator 14 implements that the performance of the arithmetic operation is fast and / or low power consumption. In contrast, the same arithmetic operation is implemented in the security mode such that the performance of the arithmetic operation is slower and / or associated with less power consumption, but that in carrying out the arithmetic operation in the arithmetic unit 14 on the other hand, the dependence between power consumption or the runtime behavior on the one hand and the date to be processed on the other hand is lower than in the implementation of the arithmetic operation in the power mode.

Die Art und Weisen, auf die diese Fähigkeit, Rechenoperationen auf zwei verschiedene Weisen durchzuführen, im Rechenwerk 14 implementiert werden kann, hängt insbesondere von der jeweiligen Rechenoperation ab und reicht von dem Vorsehen eines Schaltungsteils zur Implementierung der Rechenoperation im Leistungsmodus und eines weiteren, hiervon getrennten Schaltungsteils zur Implementierung der Rechenoperation im Sicherheitsmodus bis hin zu einem einzigen Schaltungsteil, der durch einen oder mehrere Schalter bzw. Deaktivieren von einigen Schaltungszweigen und aktiviert Lassen von einem gemeinsamen Schaltungsteil verändert werden kann, um entweder die Rechenoperation im Leistungsmodus oder die Rechenoperation im Sicherheitsmodus durchzuführen.The ways in which this ability to perform arithmetic operations in two different ways, in the calculator 14 can be implemented depends in particular on the particular Rechenope ration and ranging from the provision of a circuit part for implementing the arithmetic operation in the power mode and another, separate circuit part for implementing the operation in safety mode up to a single circuit part, by one or more switches or deactivating some circuit branches and activated can be changed by a common circuit part to perform either the arithmetic operation in the power mode or the arithmetic operation in the safety mode.

Insbesondere kann lediglich ein Schaltungsteil im Rechenwerk 14 zur Durchführung der Rechenoperation vorgesehen sein, und zwar zur Durchführung der Rechenoperation im Leistungsmodus, während ein weiterer, durch einen Schalter bzw. einen Umschaltmechanismus aktivierbarer Schaltungsteil aktiviert werden kann, zur Durchführung der Rechenoperation im Sicherheitsmodus im Anschluss an die Durchführung der Rechenoperation durch den Schaltungsteil, der die Rechenoparation im Leistungsmodus implementiert, solange Dummy-Operationen bzw. Leerlauf-Operationen durchzuführen, bis eine maximale Laufzeit erreicht wird, die der die Rechenoparation im Leistungsmodus implementierende Schaltungsteil höchstens zur Durchführung der Rechenoperation benötigt.In particular, only a circuit part in the calculator 14 be provided for performing the arithmetic operation, namely for performing the arithmetic operation in the power mode, while another, activatable by a switch or a switching mechanism circuit part can be activated to perform the arithmetic operation in the safety mode following the execution of the arithmetic operation by the circuit part, implementing the computational parsing in the power mode to perform dummy or idle operations until a maximum run time is reached, which the circuit part implementing the computational parsing in the power mode requires at most to perform the arithmetic operation.

Umgekehrt könnte das Rechenwerk 14 neben einem einzigen für die Durchführung der Rechenoperation vorgesehenen Schaltungsteil, und zwar zur Durchführung der Rechenoperation im Leistungsmodus, einen durch einen Schalter bzw. einen Umschaltmechanismus zuschaltbaren Schaltungsteil aufweisen, der nicht nach sondern während der Laufzeit der Verarbeitung des zu verarbeitenden Datums durch den die Rechenoperation im Leistungsmodus durchführenden Schaltungsteil eine Dummy-Operation durchführt, um dem Stromprofil des die zu verarbeitenden Daten eigentlich verarbeitenden Schaltungsteils ein weiteres, zufällig generiertes oder quasi-zufällig generiertes Stromprofil überlagert. Somit wird zwar nicht die Laufzeit der Rechenoperation für alle zu verarbeitenden Daten vereinheitlicht, aber die Korrelation zwischen dem Stromprofil und den zu verarbeitenden Daten bei Durchführung der Rechenoperation verringert sich, wodurch DPA-Angriffe erschwert werden.Conversely, the calculator could 14 in addition to a single provided for carrying out the arithmetic operation circuit portion, and indeed for performing the arithmetic operation in the power mode, a switchable by a switch or a switching mechanism circuit part, not after but during the term of the processing of the date to be processed by the arithmetic operation in Power mode performing circuit part performs a dummy operation to the current profile of the data to be processed actually processing circuit part superimposed on another, randomly generated or quasi-randomly generated current profile. Thus, while the run time of the arithmetic operation is unified for all the data to be processed, the correlation between the current profile and the data to be processed in performing the arithmetic operation is reduced, thereby making DPA attacks more difficult.

Um diese Funktionsfähigkeit des Rechenwerks zumindest anzudeuten, ist in 1 in dem Rechenwerk 14 ein Schaltungsteil A 14a, ein Schaltungsteil B 14b und ein Schalter 14c angedeutet, wobei der Schalter 14c, je nach obigem Ausführungsbeispiel, entweder einen der Schaltungsteile je nach Leistungs- oder Sicherheitsmodus aktiviert oder deaktiviert oder je nach Leistungsmodus oder Sicherheitsmodus einen der beiden Schaltungsteile zur Durchführung der Rechenoperation im gesamten auswählt.In order to at least indicate this functionality of the arithmetic unit, is in 1 in the calculator 14 a circuit part A 14a , a circuit part B 14b and a switch 14c indicated, the switch 14c depending on the above embodiment, either one of the circuit parts activated or deactivated depending on the power or safety mode or selects depending on the power mode or safety mode one of the two circuit parts for performing the arithmetic operation throughout.

Beispiele für Rechenoperationen im Rechenwerk 14 sind vielfältig und umfassen als nichtabschließende Liste von Beispielen eine Addition, Subtraktion, Multiplikation, Division, eine Schiebeoperation und dergleichen.Examples of arithmetic operations in the calculator 14 are various and include, as a non-exhaustive list of examples, addition, subtraction, multiplication, division, a shift operation, and the like.

Als konkrete Ausführungsform könnte das Rechenwerk 14 beispielsweise einen Schaltungsteil zur Durchführung einer Multiplikation im Leistungsmodus, die nach dem Booth-Look-Ahead-Algorithmus arbeitet, und einen Schaltungsteil zur Durchführung der Multiplikation im Sicherheitsmodus, die die Multiplikation auf gewöhnliche Weise mit einer Anzahl an Additionen durchführt, die der Anzahl an Bits des Multiplikators entspricht, sowie einen Schalter, der zwischen den beiden Schaltunsteilen umschaltet, um die Eingangsvariable von der CPU 12 an den ausgewählten Schaltungsteil weiterzuleiten, aufweisen.As a concrete embodiment, the calculator 14 For example, a circuit part for performing a multiplication in the power mode, which operates according to the Booth-look-ahead algorithm, and a circuit part for performing the multiplication in the safety mode, which performs the multiplication in a usual manner with a number of additions, the number of bits of the multiplier and a switch that switches between the two switching parts to the input variable from the CPU 12 to forward to the selected circuit part, have.

Nach dem Ausführungsbeispiel von 1 ist das Rechenwerk 14 zwischen dem Leistungs- und dem Sicherheitsmodus über eine mit einem Steuereingang des Rechwerks 14 verbundenen Steuer- bzw. Bitleitung zwischen CPU 12 und Rechenwerk 14 durch die CPU 12 umschaltbar. Die CPU 12 legt hierzu ein Signal mit entweder einem logisch hohen oder einem logisch niedrigen Zustand an die in 1 mit Modus überschriebene Bitleitung an, wobei im folgenden exemplarisch davon ausgegangen wird, dass der logisch hohe Zustand dem Leistungs- und der logisch niedrige Zustand dem Sicherheitsmodus zugeordnet ist.According to the embodiment of 1 is the calculator 14 between the power and safety modes via one with a control input of the controller 14 connected control or bit line between CPU 12 and calculator 14 through the CPU 12 switchable. The CPU 12 sets a signal with either a logic high or a logic low state to the in 1 mode overwritten bit line, wherein it is assumed in the following example, that the logic high state of the power and the logic low state is assigned to the safety mode.

Nachdem im Vorhergehenden der Aufbau des Controllers 10 beschrieben worden ist sowie die Funktionsweisen der einzelnen Komponenten, wird im folgenden die gesamte Funktionsweise bzw. das Wechselspiel zwischen den Komponenten beschrieben.After the above, the structure of the controller 10 has been described and the functioning of the individual components, the following is the entire operation or the interplay between the components described.

Es werde zunächst angenommen, der Befehlsdecodierer 20 erhalte aus dem Speicher 18 einen nächsten zu verarbeitenden Befehl des Programms 16, der sich auf eine durch das Rechenwerk 14 durchzuführende Rechenoperation bezieht. Der Befehlsdecodierer 20 decodiert den Befehl, indem er ihn anhand des Operationscodes 22 der entsprechenden Rechenoperation zuordnet. Den Operand oder die Operanden bzw. die Eingangsvariable(n) der Rechenoperation ermittelt der Befehlsdecodierer 20 je nach Befehl entweder unmittelbar aus den Operanden 2428 innerhalb des Befehls oder aus Speicherplätzen, die aus dem Operationscodes 22 oder den Operanden 2428 hervorgehen. Die Operanden für die Rechenoperation leitet die CPU 12 dann als Eingangsvariablen an das Rechenwerk 14 über eine geeignete Datenleitung weiter. Auf den Eingang der Eingangsvariable bzw. Eingangsvariablen hin führt das Rechenwerk 14 die Rechenoperation aus. Gleichzeitig zur Übertragung der Eingangsvariable(n) zu dem Rechenwerk 14 teilt die CPU 12 dem Rechenwerk 14 über die Modus-Leitung den Modus mit, in welchem die Rechenoperation durchzuführen ist. Das von dem Rechenwerk 14 zurückgesendete Ergebnis speichert die CPU 12 an einem entweder aus dem Operationscode oder aus einem der Operanden 2428 ableitbaren Speicherplatz, woraufhin der nächste zu verarbeitende Befehl aus dem Speicher 18 an der durch den Programmzähler angezeigten Adresse angefordert wird.Let us first assume the instruction decoder 20 get out of the store 18 a next command of the program to be processed 16 who is on one by the calculator 14 to be performed arithmetic operation. The command decoder 20 decodes the command by calling it using the opcode 22 assigns to the corresponding arithmetic operation. The operand or the operands or the input variable (s) of the arithmetic operation is determined by the instruction decoder 20 depending on the command either un indirectly from the operands 24 - 28 within the command or from memory locations resulting from the opcodes 22 or the operands 24 - 28 emerge. The operands for the arithmetic operation are passed by the CPU 12 then as input variables to the calculator 14 via a suitable data line on. The arithmetic unit leads to the input of the input variable or input variable 14 the arithmetic operation. Simultaneously with the transmission of the input variable (s) to the calculator 14 shares the CPU 12 the calculator 14 via the mode line the mode in which the arithmetic operation is to be performed. That of the calculator 14 The returned result is saved by the CPU 12 at either one of the opcode or one of the operands 24 - 28 derivable memory space, whereupon the next instruction to be processed from memory 18 is requested at the address indicated by the program counter.

Die Entscheidung, in welchem Modus eine Rechenoperation durchzuführen ist, entscheidet die CPU 12 programmgesteuert. Hierzu können beispielsweise im Befehlsatz der CPU 12 ein und derselben Rechenoperation jeweils zwei verschiedene Operationscodes 22 zugeordnet sein, so dass der Befehlsdecodierer 20 der CPU 12 bereits anhand des Operationscodes 22 erkennt, auf welchen logischen Zustand das Signal auf der Modus-Leitung zum Rechenwerk 14 hin umzuschalten ist. Ein Beispiel für einen Ausschnitt von Programmzeilen in dem Programm 16 unter Ausnutzung dieser doppelt im Befehlssatz vorhandenen Befehle für ein und dieselbe Rechenoperation könnte beispielsweise folgendermaßen aussehen:

Figure 00120001
The decision in which mode to perform an arithmetic operation is decided by the CPU 12 programmatically. For this purpose, for example, in the instruction set of the CPU 12 one and the same arithmetic operation in each case two different operation codes 22 be assigned so that the command decoder 20 the CPU 12 already based on the operation code 22 recognizes to which logical state the signal on the mode line to the calculator 14 is to switch. An example of a section of program lines in the program 16 For example, taking advantage of these double commands in the instruction set for one and the same operation might look like this:
Figure 00120001

Bei diesem Beispiel für die befehlsbezogene Umschaltung zwischen Sicherheits- und Leistungs- (Performance-) Modus sollen die in eckigen Klammern und nach den Strichpunkten beschriebenen Ausdrücke lediglich Bemerkungen darstellen, während mul_perf, sh_perf, div_sec und mul_sec die an die übliche Maschinenbefehlsschreibweise angelehnten Befehlsnamen andeuten sollen, die jeweils einem unterschiedlichen möglichen Operationscode des Befehlssatzes der CPU 12 zugeordnet sind. Die Endung „_perf" bedeutet, dass der jeweilige Befehl durch den Befehlsdecodierer 20 als eine im Leistungsmodus durchzuführende Rechenoperation erkannt wird, d.h. dass beim Senden der Eingangsvariable an das Rechenwerk die Modusleitung durch die CPU 12 auf einen logisch hohen Zustand einzustellen ist. Die Endung „_sec" bedeutet, dass die jeweilige Rechenoperation von dem Befehlsdecodierer 20 als eine im Sicherheitsmodus durchzuführende Rechenoperation interpretiert wird. Die Präfixe „mul", „sh" und „div" sind Beispiele für Multiplikation, Schiebeoperation und Division. Die Infor mation, welche von mehreren Rechoperationen, zu denen das Rechwerk 14 in der Lage ist, das Rechwerk 14 ausführen soll, wird dem Rechwerk beispielsweise ebenfalls durch die CPU 12 mitgeteilt. Die dem Befehlsnamen angefügten Variablen stellen die Operanden des jeweiligen Befehls dar. Möglich wäre beispielsweise, dass der erste Rechenoperand d0 bzw. d1 jeweils den Speicherplatz angibt, an dem der erste Rechenoperand, d.h. der Multiplikand, das zu schiebende Datum bzw. der Dividend, gespeichert ist, der zweite Operand den Speicherplatz angibt, an dem der zweite Rechenoperand angeordnet ist, d.h. der Multiplikator, der Versatz in Anzahl von Bits bzw. der Divisor, und der letzte Operand den Speicherort angibt, an dem das Ergebnis der Rechenoperation zu speichern ist.In this example of command switching between security and performance (performance) modes, the terms described in square brackets and semicolons are intended to represent only remarks, while mul_perf, sh_perf, div_sec, and mul_sec are intended to signify command names that are similar to standard machine-notation each of a different possible operation code of the instruction set of the CPU 12 assigned. The suffix "_perf" means that the respective instruction is executed by the instruction decoder 20 is recognized as an arithmetic operation to be performed in the power mode, that is, when the input variable is sent to the arithmetic unit, the mode line is through the CPU 12 is to be set to a logical high state. The suffix "_sec" means that the respective arithmetic operation of the instruction decoder 20 is interpreted as an arithmetic operation to be performed in the safety mode. The prefixes "mul", "sh", and "div" are examples of multiplication, shift operation, and division, the information of which is a number of computations, such as the law 14 is capable of the raking 14 For example, the rule is also executed by the CPU 12 communicated. The variables appended to the command name represent the operands of the respective command. It would be possible, for example, for the first arithmetic operand d0 or d1 to indicate the memory location at which the first arithmetic operand, ie the multiplicand, the data to be shifted or the dividend, is stored , the second operand indicates the memory location at which the second arithmetic operand is located, ie the multiplier, the offset in number of bits or the divisor, and the last operand indicates the memory location at which the result of the arithmetic operation is to be stored.

Wie es aus dem obigen Beispiel zu erkennen ist, ist es dem Programmierer bzw. dem Kompilierer möglich, durch geeignete Auswahl von Befehlen Einfluss darauf zu nehmen, wie die einzelnen Rechenoperationen durch das Rechenwerk 14 durchgeführt werden, indem die CPU 12 programmgesteuert den Modus einstellt, in welchem das Rechenwerk 14 arbeitet. Für alle Multiplikations-, Schiebe- und Divisionsbefehle innerhalb desjenigen Programmteils, der die Handhabung nicht-sicherheitskritische Daten betrifft und in obigem Beispiel mit <nicht-sicherheitskritischer_Code:> überschrieben ist, werden diejenigen Opcodes verwendet, die eine Durchführung der Rechoperationen im Leistungsmodus ergeben („_perf"), während für alle Multiplikations-, Schiebe- und Divisionsbefehle innerhalb desjenigen Programmteils, der die Handhabung sicherheitskritische Daten betrifft und in obigem Beispiel mit <sicherheitskritischer_Code:> überschrieben ist, diejenigen Opcodes verwendet werden, die eine Durchführung der Rechoperationen im Sicherheitsmodus ergeben („_sec")As can be seen from the above example, it is possible for the programmer or the compiler to influence by suitable selection of commands, such as the individual arithmetic operations by the arithmetic unit 14 be done by the CPU 12 programmatically sets the mode in which the calculator 14 is working. For all multiplication, shift and division commands inside half of that part of the program which concerns the handling of non-safety-critical data and is overwritten in the above example with <non-safety-critical code:>, those opcodes are used which result in performing the computation operations in the power mode ("_perf"), while for all multiplication , Shift and divide commands within that part of the program which concerns the handling of safety-critical data and which in the above example is overwritten with <safety-critical_code:>, those opcodes are used which result in the execution of the safety-mode computations ("_sec")

Operationscodes 22 einer CPU 12 sind zumeist nur äußerst begrenzt verfügbar. Ein weiteres Ausführungsbeispiel für die Programmsteuerung der Entscheidung, auf welchen Modus die CPU 12 das Rechenwerk 14 umschaltet, sieht deshalb lediglich einen Operationscode im Befehlssatz für eine bestimmte Rechenoperation vor, wobei jedoch der Befehlsdecodierer 20 beim Decodieren jedes Befehls, der sich auf eine Rechenoperation des Rechenwerks 14 bezieht, einen zusätzlichen Operanden erwartet, der angibt, in welchem Modus die Rechenoperation durchzuführen ist.opcodes 22 a CPU 12 are usually only very limited available. Another embodiment for program control of the decision on which mode the CPU 12 the calculator 14 Therefore, only one operation code is provided in the instruction set for a particular arithmetic operation, but the instruction decoder 20 when decoding each instruction that relates to an arithmetic operation of the calculator 14 expects an additional operand indicating in which mode the arithmetic operation is to be performed.

Um dies zu veranschaulichen, wird im folgenden noch einmal derjenige Programmausschnitt, der im Vorhergehenden Bezug nehmend auf das Ausführungsbeispiel mit befehlsbezogener Umschaltung erörtert worden ist, im Folgenden noch einmal in der Form aufgelistet, wie er sich bei dem vorliegenden Ausführungsbeispiel mit Umschaltung zwischen Sicherheits- und Leistungsmodus durch einen zusätzlichen Operanden in ansonsten gleichen Rechenoparationsbefehlen ergäbe:

Figure 00140001
In order to illustrate this, the section of program that was discussed above with reference to the embodiment with command-related switching will be listed again below in the form as it turns in the present embodiment with switching between security and Power mode by an additional operand in otherwise identical computational instructions:
Figure 00140001

Beide Beispiele, also sowohl das vorliegende als auch das vorhergehende, für denselben Programmausschnitt wirken auf dieselbe Art und Weise. Bei dem vorliegenden Ausführungsbeispiel mit operandenbezogener Umschaltung erkennt der Befehlsdecodierer 20 anhand des Operationscodes für mul, sh und div, dass es sich bei diesen Befehlen um eine Multiplikation, Schiebeoperation bzw. Division handelt. Für all diese Befehle existiert im Befehlssatz der CPU 12 auch nur jeweils ein gesonderter Opcode, so dass aus demselben noch nicht auf den für die betreffende Rechenoperation zu verwenden Modus geschlossen werden kann. Im Gegensatz zum Ausführungsbeispiel mit befehlsbezogener Umschaltung erwartet jedoch der Befehlsdecodierer 20 zusätzlich zu den die Speicherorte für den Rechenoperanden bzw. das Ergebnis angebenden Befehlsoperanden d0, d1 bzw. d2 einen weiteren Operanden, der je nach Wert, hier nämlich „PERF" für Performance- bzw. Leistungs-Modus und „SEC" Security- bzw. Sicherheitsmodus, die fehlende Information betreffend den zu verwendenden Modus liefert.Both examples, both the present and the preceding, for the same program section act in the same way. In the present embodiment, with operand related switching, the instruction decoder recognizes 20 Using the opcodes for mul, sh, and div, these commands are a multiplication, shift operation, or division. For all these commands exists in the instruction set of the CPU 12 also only a separate opcode in each case, so that the same can not yet be deduced from the mode to be used for the relevant arithmetic operation. However, unlike the command-related switch embodiment, the command decoder expects 20 In addition to the memory locations for the arithmetic operand or the result indicating instruction operands d0, d1 and d2 another operand, depending on the value, namely here "PERF" for performance or performance mode and "SEC" Security- or Security mode that provides missing information regarding the mode to use.

Gemäß letztem Ausführungsbeispiel musste der Befehlssatz der CPU 12 praktisch nicht erweitert werden, um die Fähigkeit des Rechenwerks 14 auszunutzen, ein und dieselbe Rechenoperationen in zwei unterschiedlichen Modi durchführen zu können. Der Befehlsdecodierer 20 erwartet bei diesem Ausführungsbeispiel lediglich einen zusätzlichen Operanden zur Angabe des zu verwendenden Modus, falls es sich bei dem Befehl um einen eine Rechenoperation des Rechenwerks 14 betreffenden Befehl handelt.According to the last embodiment, the instruction set of the CPU 12 practically can not be extended to the ability of the calculator 14 to exploit one and the same arithmetic operation in two different modes. The command decoder 20 in this embodiment only expects an additional operand to indicate the mode to be used, if the instruction is an arithmetic operation of the arithmetic unit 14 concerned command.

Bei den vorhergehenden Ausführungsbeispielen Bezug nehmend auf 1 wurde die Entscheidung des zu verwendenden Modus durch die CPU 12 für jede durch das Rechenwerk 14 durchzuführende Rechenoperation neu durchgeführt. Dies erfordert im Programmcode im Speicher 18 gegenüber herkömmlichem Programmcode, der nur Operationscodes für Befehle in einem Modus kennt, und bei dem diese Operationscodes keine zusätzlichen Operanden zur Angabe eines von zwei Moden erforderlich machen, zusätzlichen Speicher, und zwar um so mehr je größer die Anzahl an Rechenoperationsbefehlen im Programmcode ist, die die Durchführung einer Rechenoperation durch das Rechenwerk 14 erfordern.In the previous embodiments, referring to FIG 1 became the decision of the mode to be used by the CPU 12 for each through the calculator 14 to be performed new arithmetic operation. This requires in the program code in memory 18 to conventional program code which only knows operation codes for instructions in one mode, and to which those operations Codes require no additional operands to specify one of two modes, additional memory, and more so the greater the number of arithmetic operation commands in the program code, which is the execution of an arithmetic operation by the calculator 14 require.

Bezug nehmend auf 3 wird deshalb ein weiteres Ausführungsbeispiel für einen Controller 10' beschrieben, der gegenüber dem Controller 10 von 1 nur geringfügig modi fiziert ist, weshalb die in den 1 und 3 gleichen Elemente mit gleichen Bezugszeichen versehen sind und eine wiederholte Beschreibung dieser Elemente im folgenden weggelassen wird.Referring to 3 therefore becomes another embodiment of a controller 10 ' described to the controller 10 from 1 is only slightly modi fied, which is why in the 1 and 3 the same elements are provided with the same reference numerals and a repeated description of these elements is omitted below.

Der Controller 10' von 3 unterscheidet sich von demjenigen von 1 lediglich dadurch, dass ein Prozessor-Flag 40 zusätzlich vorgesehen wurde, um eine Angabe, die angibt, in welchem der beiden Modi das Rechenwerk 14 nachfolgend durchzuführende Rechenoperationen durchzuführen hat, gespeichert wird, d.h. ein Bit, das sich entweder in einem logisch hohen oder einem logisch niedrigen Zustand befindet, wobei im folgenden exemplarisch wieder davon ausgegangen wird, dass der logisch hohe Zustand den Leistungsmodus anzeigt, während der logisch niedrige Zustand den Sicherheitsmodus anzeigt. Auf das Prozessorflag 14 haben CPU 12 und Rechenwerk 14 Zugriff, und zwar die CPU 12, um das Flag 40 wie nachfolgend noch erörtert programmgesteuert einzustellen, und das Rechenwerk 14, um den aktuellen Zustand des Flags 40 zu erfahren.The controller 10 ' from 3 is different from that of 1 merely by having a processor flag 40 was additionally provided to provide an indication indicating in which of the two modes the calculator 14 is stored, that is, a bit that is either in a logic high or a logic low state, wherein the following is assumed by way of example again that the logic high state indicates the power mode, while the logic low state indicates the security mode. On the processor flag 14 have CPU 12 and calculator 14 Access, the CPU 12 to the flag 40 as discussed below programmatically set, and the calculator 14 to the current state of the flag 40 to experience.

Ansonsten unterscheidet sich der Controller 10' von demjenigen von 1 lediglich durch einen veränderten Befehlssatz für die CPU 12 bzw. einen dementsprechenden modifizierten Befehlsdecodierer 20.Otherwise, the controller is different 10 ' from that of 1 only by changing the instruction set for the CPU 12 or a corresponding modified instruction decoder 20 ,

Nachdem im Vorhergehenden der Aufbau des Controllers 10' beschrieben worden ist, wird im folgenden dessen veränderte Funktionsweise beschrieben.After the above, the structure of the controller 10 ' has been described, its changed operation will be described below.

Dem Befehlssatz der CPU 12 sind gegenüber dem normalen je einen Opcode für jede Rechenoperation enthaltenden Befehlssatz zwei Befehle bzw. Operationscodes zur Flageinstellung hinzugefügt, die eigens dafür vorgesehen sind, das Prozessor-Flag 40 umzustellen. Erkennt der Befehlsdecodierer 20 in einem ankommenden Befehl des Programms 16 einen ersten dieser Flageinstellungsoperationscodes, stellt die CPU 12 über eine geeignete Verbindung zu dem Prozessorflag 40 beispielsweise den Zustand des darin gespeicherten Bits auf einen logisch hohen Zustand ein, um dafür zu sorgen, dass nachfolgende Rechenoperationen im Rechenwerk 14 im Leistungsmodus durchgeführt werden. Erhält der Befehlsdecodierer 20 von da an unter den nachfolgenden Befehlen des Programms 16 solche, die sich auf Rechenoperationen des Rechenwerks 14 beziehen, leitet die CPU 12 die entsprechenden Rechenoperanden als Eingangsvariablen an das Rechenwerk 14 weiter, das seinerseits daraufhin vor der Verarbeitung der Eingangsvariablen in dem Prozessor-Flag 40 den logischen Zustand des darin gespeicherten Bits nachschlägt bzw. überprüft und diese Rechenoperationen dem Zustand des Flag-Bits entsprechend, hier also einem logisch hohen Zustand, im Leistungsmodus durchführt.The instruction set of the CPU 12 For example, in comparison with the normal instruction set containing one opcode for each arithmetic operation, two flag set operation codes are provided, which are dedicated to the processor flag 40 convert. Detects the command decoder 20 in an incoming command of the program 16 a first of these flag adjustment operation codes, represents the CPU 12 via an appropriate connection to the processor flag 40 For example, the state of the bit stored therein to a logic high state to ensure that subsequent arithmetic operations in the calculator 14 be performed in power mode. Receives the command decoder 20 from then on under the subsequent commands of the program 16 such, based on arithmetic operations of the calculator 14 refer, directs the CPU 12 the corresponding arithmetic operands as input variables to the arithmetic unit 14 then, in turn, before processing the input variables in the processor flag 40 the logic state of the stored therein bits checked or checked and performs these arithmetic operations according to the state of the flag bit, in this case a logical high state, in the power mode.

Erhält der Befehlsdecodierer 20 daraufhin irgendwann einen durchzuführenden Befehl aus dem Programm 16, der sich auf den zweiten der hinzugefügten Flageinstellungsoperationscodes bezieht, ändert die CPU 12 den logischen Zustand in dem Prozessor-Flag 40 auf den niedrigen logischen Zustand, der anzeigt, dass nachfolgende Rechenoperationen im Sicherheitsmodus durchzuführen sind. Von nun an eingehende, sich auf Rechenoperationen des Rechenwerks 14 beziehende Befehle werden nun von dem Befehlsdecodierer 20 zwar wieder gleichbleibend verarbeitet, d.h. die Rechenoperanden werden ermittelt und als Eingangsvariablen an das Rechenwerk 14 weitergeleitet, jedoch erkennt das Rechenwerk 14 beim Überprüfen des Flags 40 vor dem Durchführen der durchzuführenden Rechenoperationen anhand des logisch niedrigen Zustands des Bits in dem Prozessor-Flag 40, dass diese Rechenoperationen im Sicherheitsmodus durchzuführen sind. Dies ändert sich erst wieder, wenn ein Befehl des ersten Flageinstellungsoperationscodes anzeigt, dass das Flag 40 auf einen logisch hohen zustand einzustellen ist, woraufhin, wenn dies geschehen ist, das Rechwerk 14 alle Rechenoperationen wieder im Leistungsmodus durchführt usw.Receives the command decoder 20 then at some point a command to be executed from the program 16 which refers to the second of the added flag setting operation codes changes the CPU 12 the logic state in the processor flag 40 to the low logic state, indicating that subsequent arithmetic operations are to be performed in safety mode. From now on in detail, on arithmetic operations of the calculator 14 Commands are now issued by the instruction decoder 20 Although processed again consistently, ie the arithmetic operands are determined and as input variables to the calculator 14 Forwarded, however, recognizes the calculator 14 when checking the flag 40 before performing the arithmetic operations to be performed based on the logic low state of the bit in the processor flag 40 in that these arithmetic operations are to be performed in security mode. This changes only when a command of the first flag adjustment operation code indicates that the flag 40 is set to a logical high state, whereupon, when this is done, the Rake 14 performs all arithmetic operations again in the power mode, etc.

Um dies zu veranschaulichen, ist im folgenden noch einmal ein Programmausschnitt des Programms 16 exemplarisch aufgelistet, der demjenigen der vorhergehenden zwei erläuterten entspricht, sich von den obigen jedoch um die nunmehr flaggesteuerte Umschaltung zwischen Sicherheits- und Leistungsmodus unterscheidet:

Figure 00180001
To illustrate this, the following is again a program section of the program 16 listed by way of example, which corresponds to that of the previous two explained, but differs from the above to the now flag-controlled switching between safety and power mode:
Figure 00180001

Der hier gezeigte Programmteil erzielt im Enddefekt dieselben Wirkungen wie die im Vorhergehenden beschrieben Programmteile, verwendet jedoch hierzu lediglich normale und im Befehlssatz nur einmal vorkommende Rechenoperations-Befehle mul, sh und div unter Angabe der Rechenoperanden und Zielorte bzw. ihrer Speicherorte. Der Modus, in welchem eine Rechenoperation in dem Programm durchgeführt wird, bestimmt sich nicht mehr aus der Befehlszeile selbst, in welcher der Befehl für diese Rechenoperation steht, sondern lediglich daraus, in welchem Zustand sich gerade das Bit in der Prozessor-Flag 40 des Controllers 10' bei Abarbeitung dieser Befehlszeile bzw. dieses Befehls gerade befindet. So kann es durch Sprungbefehle tatsächlich auch vorkommen, dass ein und dieselbe Befehlszeile in dem Programm 16, die einen sich auf eine Rechenope ration des Rechenwerks 14 beziehenden Befehl enthält, während der Abarbeitung des Programms 16 mehrmals durchlaufen wird und dabei gegebenenfalls der darin enthaltende Befehl einmal im Leistungs- und einmal im Sicherheitsmodus durchgeführt wird, weil beispielsweise zwischenzeitlich durch einen der Flageinstellungsbefehle das Flag 40 umgestellt wurde. Die beiden Flageinstellungsbefehle sind in obigem Ausführungsbeispiel exemplarisch mit Lösche_Sicherheitsflag und Setze_Sicherheitsflag angezeigt. Wird bei obigem Programmausschnitt eine lineare Programmabarbeitung ohne Sprungbefehle vorausgesetzt, so bewirkt der erste Befehl in dem Programmabschnitt <nicht-sicherheitskritischer_Code:>, d.h. Lösche_Sicherheitsflag, dafür, dass die Befehle bis zum Auftauchen des Befehls Setze_Sicherheitsflag, d.h. hier mul, sh usw., im Leistungsmodus durchgeführt werden, während die sich an den Befehl Setze_Sicherheitsflag am Beginn des Programmabschnitts <nicht-sicherheitskritischer_Code:> anschließenden Befehle, hier div, mul usw., im Sicherheitsmodus durchgeführt werden, bis wieder am Beginn des Abschnitts <Ende_des_sicherheitskritichen_Codes> der Befehl Lösche_Sicherheitsflag auftaucht.The part of the program shown here achieves the same effects in the final defect as the program parts described above, but uses only normal arithmetic operation commands mul, sh and div which occur only once in the instruction set, indicating the arithmetic and destination locations or their memory locations. The mode in which an arithmetic operation is performed in the program is no longer determined from the command line itself, in which the command stands for this arithmetic operation, but only in which state is the bit in the processor flag 40 of the controller 10 ' when executing this command line or this command is currently located. So it can happen by jump commands actually also that one and the same command line in the program 16 , which rely on a Rechenope ration of the calculator 14 during the execution of the program 16 If necessary, the command contained therein is executed once in the power mode and once in the security mode, because, for example, in the meantime by one of the flag setting commands the flag 40 was converted. The two flag setting commands are shown in the above exemplary embodiment as an example with deletion_safety_flag and set_security_flag. If a linear program execution without jump instructions is assumed in the above program excerpt, then the first instruction in the program section <non-safety-critical_code:>, ie delete_security_flag, causes the instructions to escape until the instruction set_security_flag, ie here mul, sh, etc., occurs Performance mode, while at the start of the <non-safety-critical_code>> section of the <safety-critical-code>> command, in this case div, mul etc., the safety mode is executed until the deletion_security_flag command reappears at the beginning of the <end_of_the_certain_coded> section.

Alle drei im Vorhergehenden beschriebenen Ausführungsbeispiele ermöglichen es dem Programmierer von beispielsweise der von dem Kartenherausgeber engagierten Softwarefirma zur Erstellung des Applikationscodes für eine Chipkartenanwendung Programmteile des Applikationscodes mit weniger Sicherheit, aber dafür schneller und/oder unter geringerem Stromverbrauch durchzuführen zu lassen, während andere Programmteile desselben Applikationscodes so programmiert werden könne, dass sie mit ansonst bei Chipkarten üblicher hoher Sicherheit ausgeführt werden können.All allow three embodiments described above the programmer of, for example, the card issuer dedicated software company to create the application code for a smart card application Program parts of the application code with less security, but faster and / or lower power consumption leave while other program parts of the same application code are programmed in this way could be that they are otherwise executed with chip cards usual high security can.

Anwendungen dieser Art werden in der Zukunft vermehrt Anwendung finden, da es mehr und mehr üblich wird, mehrere Applikationen auf einem Controller ablaufen zu lassen, so dass es vermehrt vorkommen wird, dass auf ein und derselben Chipkarte Applikationen laufen, die ein unterschiedliches Maß an Sicherheit erfordern.applications This type will be used more frequently in the future, as it is more and more common is to run multiple applications on a controller, so that it will increasingly occur that on the same chip card applications run, which require a different level of security.

In bezug auf die Variante von 3, bei der ein Prozessor-Flag global zwischen dem Sicherheitsmodus und dem Performance-Modus umgeschaltet wurde, wird darauf hingewiesen, dass es unerheblich ist, wo sich das Prozessor-Flag 40 genau befindet, d.h. ob innerhalb oder außerhalb der CPU 12. Das Flag könnte ferner im Rechenwerk 14 selbst angeordnet sein. Das Ausführungsbeispiel von 3 mit dem speziellen Befehlspaar zur Umschaltung des Prozessor-Flags ist insbesondere für eine Pipline-Implementierung günstig.With respect to the variant of 3 in which a processor flag has been switched globally between the security mode and the performance mode, it is noted that it does not matter where the processor flag 40 is exactly, ie whether inside or outside the CPU 12 , The flag could also be in the calculator 14 be arranged by yourself. The embodiment of 3 with the special Be mismatch for switching the processor flag is particularly favorable for a pipline implementation.

Es sei darauf hingewiesen, dass die verschiedenen Ausführungsbeispiele von 1 und 3 miteinander kombiniert werden könnten.It should be noted that the various embodiments of 1 and 3 could be combined with each other.

Die vorhergehende Beschreibung bezog sich auf Ausführungsbeispiele, bei denen entweder zusätzliche Befehle mit bisher ungenutztem Operationscode eingeführt worden sind oder Befehlsdefinitionen umgeändert worden sind, um zusätzliche Operanden zur Anzeige eines Sicherheits- oder Leistungsmodus zu beinhalten. Welcher Modus von dem Rechenwerk zu verwenden war, wurde von der CPU als "programmgesteuert" mitgeteilt, insofern, als dass die Befehle in dem Programm selbst spezielle Befehle waren, die anzeigten, welcher Modus für die jeweilige Rechenoperation zu verwenden war. Eine hiervon verschiedene Möglichkeit der Steuerung des Umschaltens zwischen dem Leistungsmodus und dem Sicherheitsmodus gemäß einem weiteren Ausführungsbeispiel der vorliegenden Erfindung sieht vor, die Information darüber, ob eine bestimmte Rechenoperation im Leistungs- oder Sicherheitsmodus durchzuführen ist, nicht in die in dem auszuführendem Programm enthaltenen Rechenbefehle gesteckt wird, sondern dass diese Information in die durch das Programm zu verarbeitenden Daten, d.h. in die Rechenoperanden, selbst verlagert wird. Der Modussteuerung ist dann freilich immer noch programmgesteuert, jedoch nur noch insofern, als dass der Programmierer bzw. der Compiler dafür sorgen muss, dass die sicherheitskritische Daten auch als solche erkannt werden und sicherheitsunkritische eben als sicherheitsunkritische.The The previous description referred to embodiments in which either additional Commands have been introduced with previously unused operation code or command definitions have been changed to additional Operands for displaying a security or performance mode include. Which mode of the calculator was to be used was communicated by the CPU as "programmatically", insofar as as the commands in the program itself were special commands, which indicated which mode for the respective arithmetic operation was to be used. One of them different possibility the control of switching between the power mode and the Security mode according to a another embodiment The present invention provides the information about whether a particular arithmetic operation in power or safety mode perform is not in the program to be executed contained computational commands, but that this information into the data to be processed by the program, i. into the arithmetic operands, is relocated. The mode control is then always still programmatically, but only insofar as the programmer or the compiler for it must ensure that the safety-critical data as such be recognized and safety-critical just as safety-critical.

Ein Controller, der diese Art der Leistungs- und Sicherheitsmodus-Umschaltung verwendet, könnte wie derjenige von 1 aufgebaut sein. Um zu garantieren, dass die durch die CPU 12 gemäß dem Programm verarbeiteten Variablen bzw. Daten immer eine Information darüber enthalten, ob sie sicherheitskritisch oder sicherheitsunkritisch sind, d.h. im Sicherheits- oder Leistungsmodus zu verarbeiten sind, kann entweder jeder Speicherplatz für ein Datum bzw. für eine Rechenvariable in einen Datenteil und einen Modusflag-Teil auf gespalten werden, bzw. jedem individuell adressierbaren Speicherelement bzw. Wort in dem Speicher 18 ein Flag zugeordnet werden, das angibt, ob dieses Wort sicherheitskritische Informationen enthält oder nicht. Die Flags können dann beispielsweise durch spezielle Befehle umschaltbar sein, oder es gebe spezielle Schreibbefehle, die gleichzeitig einen Operanden enthielten, der angibt, ob das Flag des betreffenden Speicherplatzes auf „sicherheitskritisch" oder „sicherheitsunkritisch" zu setzen ist. Oder es kann per Definition der Speicher 18 derart unterteilt sein, dass per Definition Daten, die in einer bestimmten Hälfte bzw. einem bestimmten Abschnitt des Speichers 18 gespeichert sind, wie z.B. die unteren 2 kByte des Adressraumes, sicherheitskritisch sind bzw. als sicherheitskritisch zu betrachten sind, und dass Daten, die in der anderen Hälfte gespeichert sind, nicht sicherheitskritisch sind. In diesem Fall könnte die Zuordnung fest sein. Der Programmierer bzw. der Compiler selbst müssten vorab dafür sorgen, dass sicherheitskritische Daten immer in der richtigen Speicherhälfte abgelegt werden. In dem Fall der Zuordnung von Modusflags zu den einzelnen Speichereinheiten könnte freilich auch eine andere Granularität gewählt werden, als die Wort-Granularität, wie z.B. eine Seitengranularität, wobei jede Seite mehrere Wörter enthält, so dass der Flagein stellungsaufwand verringert werden könnte. In dem Fall der Aufteilung des Speichers 18 in zwei Hälften, einen für sicherheitskritische Daten, deren Verarbeitung auf jeden Fall den Sicherheitsmodus verlangt, und einen anderen Teil, in dem Daten enthalten sind, die eine Verarbeitung im Leistungsmodus erlauben, muss die Aufteilung nicht dazu führen dass die Daten auch physikalisch an einem Ort oder in einem zusammenhängenden Gebiet gespeichert sind. In dem Fall der virtuellen Adressierung beispielsweise führte die Einteilung, dass die unteren zwei kByte des logischen Adressraumes eines 128 kByte großen Speichers 18 sicherheitskritische Daten betreffen, während die anderen sicherheitsunkritische sind, nicht dazu, dass dieselben unbedingt auch physikalisch in einem 2 kByte-Block beieinander liegen, da ja die Abbildung zwischen den logischen Adressraum und dem physikalischen Adressraum beliebige Formen annehmen kann.A controller using this type of power and safety mode switching could be like that of 1 be constructed. To guarantee that through the CPU 12 According to the program variables or data processed always contain information as to whether they are safety-critical or safety-critical, ie to be processed in safety or power mode, either each storage space for a date or for a computational variable in a data part and a Modusflag- Part to be split, or each individually addressable memory element or word in the memory 18 be assigned a flag indicating whether or not this word contains safety-critical information. The flags may then be switchable by special commands, for example, or there may be special write commands that concurrently contain an operand indicating whether the flag of the particular memory location is to be set to "security-critical" or "security-non-critical". Or it can by definition the memory 18 be subdivided such that, by definition, data stored in a particular half or section of the memory 18 are stored, such as the lower 2 kbytes of the address space, are safety-critical or are considered critical to safety, and that data stored in the other half, are not critical to security. In this case, the assignment could be fixed. The programmer or the compiler itself would have to ensure in advance that safety-critical data is always stored in the correct memory half. Of course, in the case of assigning mode flags to the individual memory units, a different granularity than the word granularity, such as page granularity, where each page contains multiple words, could be used, so that the flagging effort could be reduced. In the case of the division of the memory 18 in two halves, one for safety-critical data, the processing of which definitely requires the safety mode, and another part, which contains data that allow processing in the power mode, the division does not have to result in the data being physically in one place or stored in a contiguous area. For example, in the case of virtual addressing, the scheduling resulted in the lower two kbytes of the logical address space of a 128 kbyte memory 18 Safety-critical data, while the others are security-critical, does not necessarily mean that they are physically adjacent to one another in a 2 kbyte block, since the mapping between the logical address space and the physical address space can take any form.

Wenn nun bei diesem Ausführungsbeispiel ein Rechenbefehl, wie z.B. eine Addition, zur CPU 12 gelangt, dann handelt es sich um einen ganz normalen Rechenbefehl, der der CPU 12 noch keine Auskunft darüber gibt, ob es sich um eine Rechenoperation handelt, die im Leistungs- oder Sicherheitsmodus durchzuführen ist. Der Befehlsdecodierer 20 liest nun entsprechend dem Befehl oder darin enthaltenen Befehlsoperanden, wie z.B. entsprechenden Adressangaben, die zu verarbeitenden Rechenvariablen aus dem Speicher 18 oder aus Registerinhalten der CPU 12. Dies macht er zumindest für eine der Rechenvariablen.Now, in this embodiment, a calculation command, such as an addition, to the CPU 12 then it is a normal calculation command, that of the CPU 12 no information yet as to whether it is an arithmetic operation to be performed in power or safety mode. The command decoder 20 Now reads according to the command or contained command operands, such as corresponding address information, the processing variables to be processed from the memory 18 or from register contents of the CPU 12 , At least that's what he does for one of the computational variables.

Gibt es mehrere könne je nach Befehlscode andere Rechenvariablen auch in dem Befehl selbst als Operanden enthalten sein. Je nach dem, wo die Rechenvariable in dem Speicher 18 gespeichert ist, nämlich in der sicherheitskritischen oder sicherheitsunkritischen Hälfte des Speichers 18, oder ob die Rechenvariable in einem Speicherelement des Speichers 18 gespeichert ist, der einem Modusflag zugeordnet ist, das einen Sicherheitsmodus oder Leistungsmodus zur Verarbeitung der darin enthalten Daten vorschreit, weiß die CPU 12, ob die Rechenoperation durch das Rechenwerk 14 im Leistungs- oder im Sicherheitsmodus durchzuführen ist. Wenn nur für eine Rechenvariable angegeben ist, dass es sich bei ihr um eine sicherheitskritische Information handelt, bei der der Sicherheitsmodus zu verwenden ist, schreibt die CPU 12 dem Rechenwerk 14 über die Modusleitung vor, die durch den Rechenbefehl vorgeschriebene Rechenoperation im Sicherheitsmodus durchzuführen. Die Rechenvariablen, die die CPU 12 aus ihren internen Registern holt, sind in diese Register durch vorhergehende Befehle geladen worden und ihnen sind deshalb beispielsweise Flagregister zugeordnet, die für spätere Rechenoperationen an den darin enthaltenen Rechenvariablen eine Information darüber speichern, ob es sich bei den in den internen Registern der CPU 12 gespeicherten Rechenvariablen um solche handelt, die aus dem sicherheitskritischen Teil de Speichers 18 stammen oder nicht, oder, was gleichbedeutend ist, aus einer Rechenoperation im Sicherheitsmodus oder im Leistungsmodus erhalten wurden. Wenn beispielsweise die CPU 12 von dem Rechenwerk 14 eine im sicherheitskritischen Modus berechnete Ergebnisvariable der Rechenoperation erhält und diese dem Rechenbefehl gemäß in einem internen Register der CPU speichern soll, wie z.B. dem Akkumulator, dann kann sie in einem dem Akkumulator zugeordneten Register bzw. Flag-Register speichern, dass es sich bei dem Akkumulatorinhalt um einen sicherheitskritischen Inhalt handelt. Dementsprechend setzt die CPU 12 das Akkumulatorregister auf einen Wert zur Angabe eines sicherheitsunkritischen Inhalts, wenn das Rechenergebnis durch Rechenoperation im Leistungsmodus erhalten worden ist. Bei direkten interne-Register-Ladebefehlen kann die CPU 12 entsprechend verfahren wie bei Rechenbefehlen, nämlich entsprechende Register-Flags so setzen, wie sie bei Rechenbefehlen die Modusleitung steuert.If there are several other arithmetic variables can also be contained in the instruction itself as operands, depending on the instruction code. Depending on where the computational variable in the memory 18 is stored, namely in the safety-critical or safety-critical half of the memory 18 , or whether the computational variable in a memory element of the memory 18 The CPU knows that it is associated with a mode flag that prompts a security mode or power mode to process the data contained therein 12 , whether the arithmetic operation by the calculator 14 in power or safety mode. If only one computational variable is stated to be safety-critical information using the safety mode, the CPU writes 12 the calculator 14 via the mode line, to perform the arithmetic operation prescribed by the arithmetic operation in the safety mode. The computational variables that the CPU 12 from their internal registers, have been loaded into these registers by previous instructions, and are therefore assigned, for example, flag registers which, for later computations on the arithmetic variables contained therein, store information as to whether they are in the internal registers of the CPU 12 stored arithmetic variables are those that come from the safety-critical part de memory 18 or not, or what is equivalent, obtained from a computational operation in secure mode or in performance mode. For example, if the CPU 12 from the calculator 14 receives a calculated in safety-critical mode result variable of the arithmetic operation and this according to the computational command to save in an internal register of the CPU, such as the accumulator, then it can store in a accumulator associated with the register or flag register that it is the accumulator content is a safety-critical content. Accordingly, the CPU continues 12 the accumulator register to a value for indicating a safety-critical content when the calculation result has been obtained by arithmetic operation in the power mode. For direct internal register load instructions, the CPU can 12 proceed as in arithmetic instructions, namely set corresponding register flags as they control the mode line in arithmetic instructions.

Bei diesem Ausführungsbeispiel sind folglich keine zusätzlichen Opcodes bzw. Operationscodes in einer existierenden CPU notwendig. Die Implementierung ist bei Existenz einer MMU (Memory Management unit = Speicherverwaltungseinheit) mit virtueller Speicheradressierung auch einfach. Letzteres Ausführungsbeispiel lässt sich freilich auch beliebig variieren. Bei einer MMU kann das Attribut „sicherheitskritisch" und „nicht sicherheitskritisch" freilich auch pro Segment vergeben werden, also je nach MMU-Prinzip seitenweise bzw. page-granular, nämlich in dem Fall einer paged bzw. seitenweise arbeitenden MMU, oder beliebig granular, also in Segmenten, nämlich in dem Fall einer segmented bzw. segmentweise arbeitenden MMU. Diese Aufteilung ist ebenfalls nicht nur im physikalischen Adressraum sondern auch im virtuellen Adressraum so realisierbar, was dem Compiler entgegenkommt, der ja normalerweise nicht von physikalischen Adressen weiß und daher Attribute normalerweise anhand virtueller Adressen vergeben bzw. bezüglich virtueller Adressen verwalten wird.at this embodiment are therefore not additional Opcodes or opcodes in an existing CPU necessary. The implementation is in existence of an MMU (Memory Management unit = memory management unit) with virtual memory addressing also easy. The latter embodiment let yourself Of course, they vary as well. In the case of an MMU, the attribute "safety-critical" and "not safety-critical" can of course also be pro Segment, ie according to the MMU principle, page by page or namely in the case of a paged MMU, or arbitrary granular, ie in segments, namely in the case of a segmented MMU. These Division is also not just in the physical address space but also in the virtual address space so realizable what the compiler which usually does not come from physical addresses white and therefore Attributes are usually assigned based on virtual addresses or in terms of manage virtual addresses.

1010
Controllercontroller
1212
CPUCPU
1414
Rechenwerkcalculator
14a14a
Schaltungsteilcircuit part
14b14b
Schaltungsteilcircuit part
14c14c
Schalterswitch
1616
Programmprogram
1818
SpeicherStorage
2020
BefehlsdecodiererInstruction decoder
2222
Operationscodeopcode
2424
Operandoperand
2626
Operandoperand
2828
Operandoperand
3030
BefehlsanordnungsrichtungCommand arrangement direction
4040
Prozessor-FlagProcessor Flag

Claims (10)

Controller mit einem Rechenwerk (14) zur Verarbeitung eines zu verarbeitenden Datums in einem Leistungsmodus oder einem Sicherheitsmodus, das ausgebildet ist, um in dem Leistungsmodus das zu verarbeitende Datum mit einer höheren Abhängigkeit zwischen einem Stromverbrauch oder einem Laufzeitverhalten einerseits und dem zu verarbeitenden Datum andererseits und schneller oder unter weniger Stromverbrauch zu verarbeiten als in dem Sicherheitsmodus; und einer Einrichtung (12, 40) zum gesteuerten Umschalten des Rechenwerks zwischen dem Leistungsmodus und dem Sicherheitsmodus.Controller with an arithmetic unit ( 14 ) for processing a data to be processed in a power mode or a safety mode, which is designed to be in the power mode the date to be processed with a higher dependency between a power consumption or a runtime behavior on the one hand and the date to be processed on the other hand faster and with less power consumption process as in the security mode; and a facility ( 12 . 40 ) for controlled switching of the calculator between the power mode and the safety mode. Controller gemäß Anspruch 1, bei dem die Einrichtung (12, 40) zum gesteuerten Umschalten programmgesteuert ist, derart, dass dieselbe die Umschaltvorgänge auf vorbestimmte Befehle in einem durch den Controller abzuarbeitenden Programm hin durchführt.Controller according to claim 1, in which the device ( 12 . 40 ) for controlled switching is program-controlled such that it performs the switching operations to predetermined instructions in a program to be executed by the controller. Controller gemäß Anspruch 1 oder 2, bei dem die Einrichtung zum gesteuerten Umschalten ein Flag (40) aufweist, das anzeigt, ob bei Rechenoperationen der Leistungsmodus oder der Sicherheitsmodus zu verwenden ist, und das Rechenwerk (14) ausgebildet ist, um die Verarbeitung abhängig von dem Zustand des Flags (40) entweder im Sicherheitsmodus oder im Leistungsmodus durchzuführen.A controller according to claim 1 or 2, wherein said controlled switching means is a flag (Fig. 40 ), which indicates whether in computing operations the power mode or the security mode is to be used, and the arithmetic unit ( 14 ) is adapted to the processing depending on the state of the flag ( 40 ) either in safety mode or in power mode. Controller gemäß einem der vorhergehenden Ansprüche, der einen Befehlssatz aus mehreren Befehlen, von denen jeder durch einen eindeutig zugeordneten Operationscode identifizierbar ist, und einen Befehlsdecodierer (20) zum Interpretieren von eingehenden Instruktionsdaten als einen der Befeh le des Befehlssatzes aufweist, wobei der Befehlsdecodierer (20) ausgebildet ist, um in dem Fall, dass der Befehl, als der die eingehenden Instruktionsdaten identifiziert werden, einem ersten Operationscode zugeordnet ist, das Rechenwerk auf den Leistungsmodus einzustellen, und um in dem Fall, dass der Befehl, als der die eingehenden Instruktionsdaten identifiziert werden, einem zweiten Operationscode zugeordnet ist, das Rechenwerk (14) in den Sicherheitsmodus einzustellen.A controller according to any one of the preceding claims, comprising an instruction set of a plurality of instructions, each identifiable by a unique operation code, and an instruction decoder ( 20 ) for interpreting incoming instruction data as one of the instructions of the instruction set, the instruction decoder ( 20 ) is adapted to set the arithmetic unit to the power mode in the case that the instruction identifying the incoming instruction data is assigned to a first operation code, and in the case that the instruction identifies the incoming instruction data as the instruction is assigned to a second operation code, the calculating unit ( 14 ) in the safety mode. Controller gemäß Anspruch 1 oder 2, bei dem die Einrichtung (12) zum gesteuerten Umschalten eine Steuerleitung aufweist, die mit einem Steuereingang des Rechenwerks (14) verbunden ist, und das Rechenwerk (14) ausgebildet ist, um die Verarbeitung des zu verarbeitenden Datums in dem Leistungsmodus durchzuführen, wenn ein Steuersignal auf der Steuerleitung einen ersten logischen Zustand aufweist, und die Verarbeitung des zu verarbeitenden Datum in dem Sicherheitsmodus durchzuführen, wenn das Steuersignal auf der Steuerleitung einen zweiten logischen Zustand aufweist.Controller according to claim 1 or 2, in which the device ( 12 ) has a control line for controlled switching, which is connected to a control input of the calculating unit ( 14 ), and the calculator ( 14 ) is adapted to perform the processing of the date to be processed in the power mode when a control signal on the control line has a first logical state, and to perform the processing of the date to be processed in the safety mode, when the control signal on the control line a second logical state having. Controller gemäß einem der Ansprüche 1, 2 oder 5, der ferner einen Befehlssatz aus mehreren Befehlen aufweist, von denen jeder durch einen eindeutigen zugeordneten Operationscode identifizierbar ist, sowie einen Befehlsdecodierer (20) zum Interpretieren von eingehenden Instruktionsdaten als einem der Befehle des Befehlssatzes, wobei der Befehlsdecodierer (20) ausgebildet ist, um in dem Fall, dass der Befehl, als der die eingehenden Instruktionsdaten interpretiert werden, einem dritten Operationscode zugeordnet ist, dem Rechenwerk (14) ein zu verarbeitendes Datum zur anschließenden Verarbeitung zuzuführen, wie es durch die eingehenden Instruktionsdaten angezeigt wird, und das Rechenwerk (14) für die anschließende Rechoperation auf den Leistungsmodus einzustellen, und um in dem Fall, dass der Befehl, als der die eingehenden Instruktionsdaten interpretiert werden, einem vierten Operationscode zugeordnet ist, dem Rechenwerk (14) das zu verarbeitende Datum zur anschließenden Verarbeitung zuzuführen, wie es durch die eingehenden Instruktionsdaten angezeigt wird, und das Rechenwerk (14) für die anschließende Rechenoperation auf den Sicherheitsmodus einzustellen.A controller according to any one of claims 1, 2 or 5, further comprising an instruction set of a plurality of instructions, each identifiable by a unique associated operation code, and an instruction decoder (10). 20 ) for interpreting incoming instruction data as one of the instructions of the instruction set, the instruction decoder ( 20 ) is adapted to the arithmetic unit (in the case that the command, as the incoming instruction data are interpreted, a third operation code is assigned 14 ) supply a data to be processed for subsequent processing, as indicated by the incoming instruction data, and the arithmetic unit ( 14 ) for the subsequent computing operation to the power mode, and in the event that the command, as the incoming instruction data is interpreted, a fourth operation code is assigned to the calculator ( 14 ) supplying the date to be processed for subsequent processing, as indicated by the incoming instruction data, and the arithmetic unit ( 14 ) for the subsequent arithmetic operation to the safety mode. Controller gemäß einem der Ansprüche 1, 2 oder 5, der ferner einen Befehlssatz aus mehreren Befehlen aufweist, von denen jeder durch einen eindeutig zugeordneten Operationscode identifizierbar ist, sowie einen Befehlsdecodierer (20) zum Interpretieren von eingehenden Instruktionsdaten als einem der Befehle des Befehlssatzes, wobei der Befehlsdecodierer (20) ausgebildet ist, um in dem Fall, dass der Befehl, als der die eingehenden Instruktionsdaten interpretiert werden, einem fünften Operationscode zugeordnet ist, dem Rechenwerk (14) ein zu verarbeitendes Datum zur anschließenden Verarbeitung zuzuführen, wie es durch die eingehenden Instruktionsdaten angezeigt wird, und einen Operanden innerhalb der eingehenden Instruktionsdaten daraufhin zu überprüfen, ob die anschließende Verarbeitung des zu verarbeitenden Datums im Sicherheitsmodus oder im Leistungsmodus durchzuführen ist, und in dem Fall, dass die anschließende Verarbeitung des zu verarbeitenden Datums im Sicherheitsmodus durchgeführt werden soll, das Rechenwerk für die anschließende Rechoperation auf den Sicherheitsmodus einzustellen, und in dem anderen Fall, dass die anschließende Verarbeitung des zu verarbeitenden Datums im Leistungsmodus durchgeführt werden soll, das Rechenwerk für die anschließende Rechoperation auf den Sicherheitsmodus einzustellen.A controller according to any one of claims 1, 2 or 5, further comprising an instruction set of a plurality of instructions, each identifiable by a unique operation code, and an instruction decoder (14). 20 ) for interpreting incoming instruction data as one of the instructions of the instruction set, the instruction decoder ( 20 ) is adapted to the arithmetic unit (in the case that the instruction, as the incoming instruction data is interpreted, a fifth operation code is assigned) 14 ) to supply a data to be processed for subsequent processing, as indicated by the incoming instruction data, and to check an operand within the incoming instruction data to see if the subsequent processing of the data to be processed is to be performed in the secure mode or in the power mode, and in that case in that the subsequent processing of the datum to be processed is to be carried out in the security mode, to set the arithmetic unit to the security mode for the subsequent rake operation, and in the other case that the subsequent processing of the datum to be processed is to be performed in the power mode, the arithmetic unit for the subsequent computation to the security mode. Controller gemäß einem der vorhergehenden Ansprüche, bei dem dem zu verarbeitenden Datum eine Information zugeordnet ist, ob dasselbe im Leistungs- oder Sicherheitsmodus zu verarbeiten ist, und der ferner folgendes Merkmal aufweist: eine Einrichtung zur Überprüfung der dem zu verarbeitenden Datum zugeordneten Information und zum Steuern der Einrichtung zum gesteuerten Umschalten abhängig von der Information.Controller according to a of the preceding claims, in which the information to be processed is assigned is whether to process the same in performance or security mode and further comprising: An institution to check the the information associated with the date to be processed and for controlling the controlled switching device depending on the information. Controller gemäß Anspruch 8, bei der die Einrichtung zum Überprüfen angepasst ist, um zu Überprüfen, ob eine Adresse, in der das zu verarbeitende Datum vor der Verarbeitung durch das Rechenwerk gespeichert ist, in einem vorbestimmten Adressabschnitt enthalten ist oder nicht, und um das Rechenwerk 14 in den Sicherheitsmodus einzustellen, falls dies der Fall ist.A controller according to claim 8, wherein the means for checking is adapted to check whether an address in which the data to be processed is stored prior to processing by the calculating unit is, is included in a predetermined address section or not, and the arithmetic unit 14 to set to safety mode if this is the case. Controller gemäß Anspruch 8 oder 9, bei der die Einrichtung zum Überprüfen angepasst ist, um in dem Fall zweier zu verarbeitender Daten beide zu verarbeitende Daten zu überprüfen, und die Steuerung der Einrichtung zum gesteuerten Umschalten abhängig davon vorzunehmen, ob entweder keines der beiden zu verarbeitenden Daten einer Verarbeitung im Sicherheitsmodus erfordert, oder mindestens eines.Controller according to claim 8 or 9, in which the means for checking is adapted to in the case to check both data to be processed for two data to be processed, and the control of the means for controlled switching depending thereon whether to use either of the two data to be processed requires processing in secure mode, or at least one.
DE10338701A 2003-08-22 2003-08-22 Safety controller, e.g. for use in chip cards or smart cards, has processor that can switch between power mode and security mode Withdrawn DE10338701A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
DE10338701A DE10338701A1 (en) 2003-08-22 2003-08-22 Safety controller, e.g. for use in chip cards or smart cards, has processor that can switch between power mode and security mode

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE10338701A DE10338701A1 (en) 2003-08-22 2003-08-22 Safety controller, e.g. for use in chip cards or smart cards, has processor that can switch between power mode and security mode

Publications (1)

Publication Number Publication Date
DE10338701A1 true DE10338701A1 (en) 2005-03-17

Family

ID=34201881

Family Applications (1)

Application Number Title Priority Date Filing Date
DE10338701A Withdrawn DE10338701A1 (en) 2003-08-22 2003-08-22 Safety controller, e.g. for use in chip cards or smart cards, has processor that can switch between power mode and security mode

Country Status (1)

Country Link
DE (1) DE10338701A1 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1818941A2 (en) * 2006-02-13 2007-08-15 MegaChips LSI Solutions Inc. Semiconductor memory and data access method
DE102010042574A1 (en) * 2010-10-18 2012-04-19 Continental Automotive Gmbh Method for operating microcontroller of automobile, involves interrupting specific functions by mechanism such that functions are executed without interference from execution of other functions

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Saputra, H. et al.: Masking the Energy Behavior of DES Encryption, In: Proceedings of the Design, Automation and Test in Europa Conference, March 3-7,2003, Munich, Germany, S.84-89
Saputra, H. et al.: Masking the Energy Behavior ofDES Encryption, In: Proceedings of the Design, Automation and Test in Europa Conference, March 3-7,2003, Munich, Germany, S.84-89 *

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1818941A2 (en) * 2006-02-13 2007-08-15 MegaChips LSI Solutions Inc. Semiconductor memory and data access method
EP1818941A3 (en) * 2006-02-13 2008-03-12 MegaChips Corporation Semiconductor memory and data access method
US7739467B2 (en) 2006-02-13 2010-06-15 Megachips Corporation Semiconductor memory and data access method
DE102010042574A1 (en) * 2010-10-18 2012-04-19 Continental Automotive Gmbh Method for operating microcontroller of automobile, involves interrupting specific functions by mechanism such that functions are executed without interference from execution of other functions
DE102010042574B4 (en) * 2010-10-18 2017-11-16 Continental Automotive Gmbh Method for operating a microcontroller for an automobile and microcontroller

Similar Documents

Publication Publication Date Title
EP1222739B1 (en) Reconfigurable gate array
EP1342154A2 (en) Cryptographic processor
EP1342148B1 (en) Cryptographic processor
DE2524046C2 (en) Electronic data processing system
DE2935906C2 (en) microprocessor
CH623947A5 (en)
DE2910839A1 (en) DEVICE FOR EXECUTING A SPECIAL BRANCHING INSTRUCTION
DE2515696A1 (en) ARRANGEMENT FOR SELECTIVE DELETION OF PARTS OR REPLACEMENT OF DATA IN A CACHE
EP1599794A2 (en) Processor with different types of control units for commonly used resources
DE102018202446A1 (en) Method for modularizing a software architecture
DE102018005976A1 (en) SYSTEMS, APPARATUS AND METHOD FOR MULTIPLICATION AND ACCUMULATING VECTOR PACKED AWARD-BASED VALUES
EP1352318B1 (en) Microprocessor circuit for portable data carriers
DE102009019891B3 (en) Microcontroller- or microprocessor unit for multiple current consumption modes, has register or memory, which contains bit fields for defining selected current consumption modes
EP1407348B1 (en) Method for controlling a central processing unit for an addressing relating to a memory and a controller
DE10338701A1 (en) Safety controller, e.g. for use in chip cards or smart cards, has processor that can switch between power mode and security mode
DE10227618B4 (en) logic circuit
EP1543411B1 (en) Processor with explicit information on information to be secured in sub-program branches
EP1393164A1 (en) Processor comprising an internal memory configuration
DE102019116104A1 (en) CRYPTOGRAPHIC PROCESSING DEVICE AND METHOD FOR THE CRYPTOGRAPHIC PROCESSING OF DATA
EP0981079B1 (en) Programmable one bit data processing apparatus
EP1497713B1 (en) Processor and method for simultaneously doing a calculation and carrying out a copying process
AT501213B1 (en) METHOD FOR CONTROLLING THE CYCLIC FEEDING OF INSTRUCTION WORDS FOR DATA ELEMENTS AND DATA PROCESSING EQUIPMENT WITH SUCH A CONTROL
DE2760416C2 (en) Branch control arrangement for an electronic data processing arrangement
DE10256586A1 (en) Data processing device with microprocessor and with additional computing unit and associated method
DE10056764B4 (en) Method and system for improved utilization of buffer size in a parallel processor

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8130 Withdrawal