EP1506496A2 - Rekonfigurierbare digitale logikeinheit - Google Patents

Rekonfigurierbare digitale logikeinheit

Info

Publication number
EP1506496A2
EP1506496A2 EP02776857A EP02776857A EP1506496A2 EP 1506496 A2 EP1506496 A2 EP 1506496A2 EP 02776857 A EP02776857 A EP 02776857A EP 02776857 A EP02776857 A EP 02776857A EP 1506496 A2 EP1506496 A2 EP 1506496A2
Authority
EP
European Patent Office
Prior art keywords
logic
unit according
logic unit
cells
microprogram
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
EP02776857A
Other languages
English (en)
French (fr)
Inventor
Joachim Bangert
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.)
Siemens AG
Original Assignee
Siemens 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 Siemens AG filed Critical Siemens AG
Publication of EP1506496A2 publication Critical patent/EP1506496A2/de
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • 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

Definitions

  • the invention relates to a reconfigurable digital logic unit.
  • programmable logic modules such as processors execute programs that are loaded from a memory. These memories can be integrated as discrete components (eg hard disk, memory chip) or in the processor. A well-known example of the former are the well-known IBM-compatible ones . PCs, for the latter so-called flash microprocessors.
  • the software to be executed is stored in the form of command words as a machine command in the memory. The command words are loaded, analyzed and executed in a processing unit. The processing of a single command word triggers a large number of individual actions in the logic unit.
  • a decisive characteristic of conventional programmable logic modules is that the processing unit is reprogrammed for a few clock cycles by each new command word. The information about the previous command word in the processing unit is overwritten, apart from register contents.
  • the processing unit of modern microprocessors is very complex due to the large number of possible operations. More than 30 million transistors are required for fewer than 500 possible command words, which leads to a correspondingly high energy consumption, since each transistor also consumes energy when it is not in use and is in the “waiting state”. In order to achieve energy savings, it has already been proposed to adapt the operating voltage, ie to reduce it. The clock frequency can also be reduced, but this reduces the overall performance of the logic unit. The effort to design, manufacture and test these transistors is immense. The functionality once designed cannot be changed. Only one task can be processed at a time.
  • the central unit ie the computer core, consists of the main components main memory, control unit and processing unit (arithmetic unit).
  • the main memory stores instruction words (program data) and processing data (operand words) and makes them available on request.
  • the main memory also stores intermediate and final results of the processing.
  • Main memories can be implemented by volatile or non-volatile memories.
  • the control unit organizes the order in which command words are processed. It requests command words from the main memory and causes the execution of the command word in the processing unit. It analyzes command words and initiates the delivery of processing data to the processing unit.
  • the processing unit carries out the operation on the processing data and delivers the results to the main memory.
  • the processing unit For each operation, the processing unit contains a microprogram that enables the necessary transmission lines.
  • the processing unit is set by the control unit to the respective operation, ie to the command to be processed.
  • Peripheral devices are assigned to this central unit, which can be the external storage, input and output devices mentioned above.
  • the described main components of the central unit can be physically separated, but mostly they are implemented on a common processor chip with a cache or, for example, on an embedded ROM.
  • the known digital logic units have the disadvantage, in particular in the case of frequently recurring actions, for example when executing program loops, that instruction words are loaded and executed which were already a few processor clock cycles in an instruction register.
  • An example of such a loop is a keyboard query.
  • all loop commands are repeated at short intervals, the command words having to be reloaded each time as if they were completely new.
  • Most of the processor is not needed while waiting, but cannot do any other tasks during this time.
  • processors to different circumstances are already carried out at a low level of complexity.
  • An example of this is the switching of memory banks of a processor that contain different programs. Memory banks that are not currently being used can be changed. This technique is called IAP (in application programming).
  • IAP in application programming
  • the improvement achieved by this measure is comparatively small because of the processor hardware nothing is changed, only the programs to be executed are loaded simultaneously with other processes.
  • Programmable logic devices are often used for less complex tasks.
  • Such logic modules are, for example, from US 4,870,302 or the publication “Ranmuthu, IW, et al. ; Magneto-resistive elements - An Alternative to Floating Gate Technology; In: Proceedings of the Midwest Symposiums on Circuits and Systems, 1992, pg (s). 134 - 136 vol.l known.
  • the entire application program is translated into suitable commands in a special compiler (so-called Fitter).
  • Fitter special compiler
  • the configurable areas have the following properties: either they define links between specified points (routing areas) or they process logical input signals to logical output signals (logic cell areas).
  • routing areas logical input signals
  • logic cell areas logical output signals
  • connections that deviate from the PLD's technical specifications implemented by the manufacturer are required, two or more connection blocks must be cascaded, which increases runtime and delays in throughput. As a result, the actual speed of application program execution cannot be predicted. In many cases, adaptations in the program are necessary, for example, to be able to implement a minimum speed requirement or synchronicity of signals in a PLD. If properties other than those available are required when processing logical signals (eg higher bit width), then cascading must also be carried out. As a result, the link areas in the PLD are larger in area than the logic areas.
  • the architectural concept of the PLDs envisages distributing the programming information from the fitter to a large number of identical logic cells on the PLD chip. These are linked by a large number of similar routing areas. The programming information is thus distributed in the area.
  • the configurability of the PLDs is limited to a few configurable parameters that are permanently set during booting. Two memories are required: an external boot memory chip (discrete chip, eg the EEPROM 113 in US 4,870,302) and internal, memory cells distributed over a large area
  • the local memory cells After booting, the local memory cells contain the information for the connections and for the logic functions of the cells. The area and loss conduction efficiency of the distributed
  • Memory cells are approximately two orders of magnitude worse than discrete memory chips of the same performance. However, if the application program requires less performance than the chip provides, the unused areas inevitably also consume power loss. Typical levels of utilization of PLD's resources are around 30% to 70%. At a certain point, only a fraction of them are actively involved in processing logic information.
  • the invention is therefore based on the problem of avoiding the disadvantages mentioned and of specifying a digital logic unit in which the utilization of the hardware is improved.
  • a reconfigurable digital logic unit comprising a plurality of logic cells with configurable properties; an internal memory with a plurality of microprograms, containing information relating to the functionality of a plurality of logic cells, at least one of the microprograms being reprogrammable, depending on a specific application, at least during the ongoing operation of the logic unit; a means for selecting at least one microprogram; and a means for configuring logic cells in accordance with the functionality information of the selected microprogram, at least during the ongoing operation of the logic unit.
  • the term "functionality” is understood to mean both "data processing * and" data linking *.
  • the logic unit according to the invention is therefore variable during operation, i.e. the logic cells are configurable during the operation of the logic unit, the or the
  • Micro programs can be reprogrammed while the logic unit is running. It is therefore possible at any time to adapt the logic unit to the task set and to be processed, since no fixed configuration and programming is specified by the manufacturer, rather it can be configured quasi in situ and the properties changed and adapted.
  • the programmer can change the programming or the configuration in terms of software, but it can also be an independent learning system.
  • logic cell is to be understood as any element that performs a logic function. In the simplest case it can be a single memory cell, in the more complex case it can be a gate, a subnetwork consisting of several gates or even a processor element.
  • configurable property * means all non-volatile, but changeable properties or working parameters.
  • Examples of a logic cell are the bit width at the input / the number of variables, the physical position of the inputs, the coding of the bits (e.g. serial or parallel), the logical processing of the bits, the time behavior, the register function, the local memory function, the Bit width at the output, the physical position of the output bits or the readiness for operation, but this list is not exhaustive. The changes can be carried out independently of other processors in the chip, ideally the bit processing and linkage changes in every cycle.
  • Logic cells with configurable properties that have a magnetoresistive layer system are particularly suitable.
  • FRAM ferroelectric RAM
  • Each logic cell of the logic unit according to the invention can have at least one magnetoresistive layer system and input and output connections which are connected to connecting conductor tracks.
  • the layer system can be of the GMR type (giant magneto resistive), TMR type (tunnel magneto resistive) or of the AMR type (anisotropy magneto resistive).
  • the direction of magnetization of a magnetic layer can be used for information storage. This storage process can be carried out very quickly and almost indefinitely.
  • the resistance of the memory cell is either low or high, depending on the direction of magnetization of the free magnetic layer relative to a reference direction.
  • a logic cell based on it can be used as a logic gate, whereby by activating or interconnecting several cells practically all common gate functions (eg NOR, XOR, AND, OR, INV, etc.) can be realized. It is essential that the functionality between at least two of these gate functions can be changed by appropriate means.
  • a logic cell can also be used as memory, in particular the result of a logic operation can be saved. Memory cells of the TRAM type (tunnel rando access memory) are particularly suitable, since they can be written to indefinitely.
  • the digital logic unit provides links from logic cells to logic cell blocks, which have the function of a half adder, a full adder or a multiplier.
  • a logic cell can include local memory. This can save intermediate or final results of a logical link.
  • the digital logic unit comprises an internal memory with a plurality of micro programs. It can be a memory which is addressed by command words from a main memory and contains information relating to the functionality and the linking of several logic cells. A command word is loaded from the main memory, analyzed and the logic cell arrangement required for this is derived using the microprogram. Such a microprogram can be compared to a command macro, it contains a number of basic operations that are realized by linking several logic cells can be. Typical basic operations are loading, analyzing or selecting. Accordingly, a microprogram can be viewed as a blueprint or circuit structure that contains all the information required about the logic cells. In addition, information about any memories, registers or similar components that may be required can also be contained. A microprogram can also contain constants, for example the number "0" can be defined as a constant. In addition, information about inputs, outputs or the linking of the inputs with variables and constants can be defined by a microprogram.
  • microprograms for example a keyboard query can be defined by a microprogram, as can the output of
  • Any logical links can also be saved in the form of microprograms, for example arithmetic links such as basic arithmetic operations, but also much more complex algorithms. Logic links are broken down into individual components, each of which is defined by a microprogram.
  • a microprogram can be reprogrammed.
  • the microprogram can be loaded and changed depending on a specific application. This results in a particularly high level of flexibility for the logic unit. It can also be provided that a microprogram has commands for defining new microprograms or for changing existing microprograms.
  • a microprogram comprises instructions containing firmware.
  • command sequences of a micro program can be recognized by an application program and stored as a new micro program.
  • the digital logic unit according to the invention can also contain a means for selecting at least one microprogram.
  • the microprograms can be predefined or redefined in the sense of "evolvable hardware".
  • the memory can contain a multiplicity of instruction words which each select at least one microprogram by means of the means.
  • a program pointer can be used to select the at least one microprogram.
  • the digital logic unit further comprises a means for configuring logic cells in accordance with the functionality information of the selected microprogram.
  • the logic cell links defined by the selected microprogram and the local memory cells that may be required are programmed in reprogrammable hardware.
  • the magnetoresistive logic cells are replaced by a
  • Programming routine programmed.
  • the programming routine determines the order in which the individual logic cells receive a programming stream. This will program the desired logic gate functions. Links between different logic cells are also established.
  • the memories used in the digital logic unit according to the invention have the advantage that the memory contents are not volatile, ie they are retained even after the voltage has been switched off. Nevertheless, already programmed logic cells can be reprogrammed at a later point in time, ie the functionality of a logic cell can be reconfigured. Program loops therefore run "in hardware", that is, for a certain logical linkage, a precisely matching hardware structure is created, which is optimally adapted to the problem to be processed. A voltage only has to be supplied to such logic cells that are actually needed at the moment. When a program loop defined by logic cells is finally left, the associated logic cells can be switched off so that they no longer consume energy. This avoids the problem that occurs with conventional logic units in that large parts of the hardware are constantly in a waiting state in which they consume power.
  • logic cell links can basically be formed in any form on the grid. Logic cell links are preferred in which logic cells to be linked are directly or as closely as possible adjacent.
  • the linked logic cells can be both linear and flat on the grid, i.e. be arranged in the form of functional blocks.
  • the logic cells with the magnetoresistive layer system and the input and output connections are connected to connecting conductor tracks which run essentially horizontally and vertically and preferably cross at right angles.
  • the conductor tracks can consist of a copper material.
  • logic cells are arranged in a grid-like manner in different layers or levels. With three-dimensional ordered logic cells results in a much greater variety of connection options. It is also possible to save a variable or constant in a logic cell. Various logic programs can then access this logic cell. For example, one of the microprograms can be arranged in a higher layer, another microprogram can be placed next to the logic cell. This logic cell can therefore be used by several microprograms.
  • connection of different layer planes of the logic cells can take place in a known manner through contact holes arranged perpendicular to the layer plane.
  • Such three-dimensional structures are known and therefore do not require any further explanation.
  • Reconfigurable digital logic units are preferred which contain four to six layer planes of intersecting interconnects with interposed magnetoresistive layer systems.
  • the individual layers can be separated from one another by an insulation layer.
  • further components that can be produced using conventional silicon technology can preferably be present on an outside. Provision can also be made for layers that are adjacent to one another to be arranged offset in the plane of the surface. In this way, for example, a straight-line connecting conductor track can be formed between the second and fourth layers.
  • the grid arrangement can be Cartesian, but "honeycombs" can also be arranged in the form of the hexagonally closest packing in order to form a larger number of closest neighbors.
  • the processing of logic functions can be controlled by at least one command counter.
  • a command counter which can also be referred to as a command token, signals which of the logic cells is currently active, ie the command token points to the logic cell currently working or to the logic link currently working.
  • the command counter can be a logical signal be set only for one logic cell ("1 *) and not set for all other logic cells (" 0 *).
  • a single command counter is provided for the logic unit. Accordingly, only a single logic cell or a single logic cell link can be active at a time. The remaining logic cells are not active during this time.
  • the command counter is "passed on", i.e. it points to the next logic cell to be processed.
  • the microprogram or a plurality of microprograms can be arranged one behind the other on the logic cell array, so that the individual logic cells are processed sequentially.
  • the logic cells or the logic cell links can be stored optionally on the logic cell field, this arrangement is comparable to the storage of data on a hard disk.
  • a logic unit has a plurality of command counters which can be active at the same time. Accordingly, two or more microprograms can run simultaneously, i.e. parallel processing takes place.
  • the command counter or the command token can be designed as a logic signal, which is stored in a flag register and is reset after the calculation is complete.
  • a "1" means that the logic cell linkage is active, after the calculation the flag is reset to "0".
  • Only an active logic cell arrangement or an active microprogram has the value "1", which means that the operating voltage for the logic cells linked to the active microprogram is released. It is possible to share programmed constants and to transfer results.
  • Micro programs can be processed in different ways. With synchronous logic units polled the flag with the next clock and then activated the next microprogram. It can be provided that the processing in synchronous logic units is simply time-controlled, ie each microprogram has the same amount of time for processing the programmed command words. It is also possible for the processing of synchronous logic units to take place in a complex, time-controlled manner, ie each microprogram is linked to a predetermined time for processing the programmed command words. This time information can, for example, be contained in a variable of the microprogram.
  • logic enable signal is passed on directly.
  • the time of processing the programmed command words is irrelevant. If necessary, measures for synchronizing several simultaneously active microprograms are necessary in order to avoid conflicts such as simultaneous access to a memory cell.
  • the logic unit comprises a table of the occupied and / or unused logic cells. It is also conceivable to use an algorithm that checks whether a required logic cell arrangement, e.g. a multiplier already exists as a configured block in the logic cell array. In this case, the same logic cell arrangement could be used by different microprograms. Furthermore, it can be provided that an algorithm finds free areas of the logic cells in order to optimally use the existing logic cells. Likewise, it can be provided that logic cells are checked for their functionality and, if necessary, marked as defective logic cells in a table.
  • Fig. 1 shows a cross section through a logic unit according to the invention, consisting of several layers of
  • FIG. 2 shows a schematic sectional view of a logic unit according to the invention with vertical connection holes
  • Fig. 3 is a schematic flow diagram of the configuration of a digital logic unit according to the invention.
  • the digital logic unit 1 shown in section in FIG. 1 consists of several layers of magnetoresistive logic cells 2, each of which has a magnetoresistive layer system with input and output connections, not shown in FIG. 1, which are connected to the connecting conductor tracks 3, 4.
  • the conductor tracks 3, 4 comprise a multiplicity of parallel conductor tracks arranged in different planes.
  • the individual conductor tracks are electrically insulated from one another; a connection can only be made via the logic cells 2, which adjoin both the conductor tracks 3 and 4.
  • Each of the memory cells is separated from the adjacent layer by an insulation layer 5.
  • the logic unit 1 can expediently comprise four to six such individual layers.
  • the logic cells 2 are non-volatile, but can be reprogrammed; they are rewritable logic components that can be programmed at a high speed. They offer the possibility of realizing a logical function and a memory at the same time, or of activating or interrupting links.
  • FIG. 2 shows a schematic sectional view of a logic unit according to the invention with vertical connection holes between the individual layers.
  • Logic unit 1 consists of layers 8, 9, 10, which are constructed analogously to the logic unit of FIG. 1. Contact holes 12 are formed between the layers 8, 9, 10 and a lower layer 11, which establish a vertical connection between the layers or between logic cells arranged on the layers.
  • a grid structure can also be implemented, in which the connecting conductor tracks are formed along all three spatial axes and a logic cell is located in each crossing point of the grid. To address a logic cell, its X, Y and Z coordinates are required.
  • An internal memory 13 comprises a number of different microprograms 14, which contain information about the connection of several logic cells.
  • a program pointer 15 selects one of the micro programs of the memory 13.
  • the selected microprogram 16 contains all the information required for programming the logic cells 2. This is information relating to the processing unit, the control unit, variables, input / output processes (I / O) and a command token. It is not necessary that each microprogram Informa ⁇ functions having to all these points, depending on the task individual points can be omitted o-
  • the microprogram can contain further program information.
  • a programming routine 17 analyzes the information of the selected microprogram 16 and programs the required logic functions.
  • a logic cell array 18 comprises a large number of magnetoresistive logic cells 19 arranged regularly in rows and columns, which are shown schematically in FIG. 3 by grid points.
  • the logic cell array 18 can comprise a very large number of logic cells 19, for example it could contain 1000 by 1000 cells, that is to say a total of 1 million logic cells.
  • the logic cell array 18 consists of a single layer. It is also possible to combine a plurality of such logic cell arrays to form a logic cell grid.
  • Each individual logic cell 19 can carry out a basic link, for example it can be an AND or XOR gate or can be configured accordingly.
  • the programming routine 17 selects those logic cells 19 or groups of logic cells that are not occupied or that are no longer required and can be reprogrammed.
  • a table 20 is used for this purpose, which can also be designed as a list and contains the free, available logic cells. Alternatively, the occupied logic cells can be detected, as can logic cells that have been found to be defective.
  • the table 20 can also be designed as a two- or three-dimensional matrix and have an entry for each logic cell 19 which contains information about the current status. After each programming operation, the table 20 is updated, newly occupied logic cells 19 are identified accordingly in the table 20, logic cells 19 that are no longer required released again. On the basis of the information in table 20, it is determined in which area of logic cell array 18 the microprogram 16 currently being programmed is stored. The information about programmed states and links can be saved in a very space-saving manner.
  • the main memory and its associated periphery which contains processing data and command words in a known manner, are not shown in FIG. 3, the command words selecting the active microprogram from the internal memory 13.
  • the logic cell array 18 already has some programmed logic cell blocks 21, 22, 23, each of which is assigned a specific microprogram of the memory 13.
  • a contact point 24 is shown schematically between the logic cell blocks 21 and 22, at which signals or data can be exchanged between the logic cell blocks 21, 22.
  • several such contact points can also be arranged between two adjacent logic cell blocks.
  • the logic cell field 18 contains further logic cell blocks 27, 28, which are identified in table 20 as no longer required. These can be reconfigured later.
  • a command token is required to operate the logic cell blocks 21, 22, 23. It is a logic signal that is present at an output of the logic cell blocks 21, 22, 23. This is intended to ensure that only one of the logic cell blocks is active at a time.
  • the command token is set for the active logic cell block, then the operating voltage is supplied to this logic cell block. After the microprogram assigned to this logic cell block has been processed, the command token is reset and the operating voltage is switched off. The command token is passed on to the next logic cell block so that it can work.
  • command tokens It is also possible for several command tokens to be set at the same time, so that several microprograms are processed simultaneously.
  • This mode of operation corresponds to a distributed processor.
  • the logic cell blocks assigned to the respective command tokens work independently of one another, that is, it must be avoided that collisions occur when accessing the memory or the address or data lines. Accordingly, it can be provided that several logic cell blocks work synchronously.
  • an asynchronous mode of operation is also possible if measures are taken to prevent the aforementioned collisions from occurring.

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Logic Circuits (AREA)

Abstract

Rekonfigurierbare digitale Logikeinheit, umfassend: eine Mehrzahl von Logikzellen (19, 26) mit konfigurierbaren Eigenschaften; einen Speicher (13) mit einer Mehrzahl von Mikroprogrammen (14, 16), enthaltend Informationen betreffend die Funktionalität mehrerer Logikzellen (19, 26), wobei mindestens eines der Mikroprogramme (14, 16) in Abhängigkeit von einer bestimmten Anwendung zumindest während des laufenden Betriebs der Logikeinheit reprogrammierbar ist; ein Mittel zum Auswählen wenigstens eines Mikroprogramms (14, 16); ein Mittel zum Konfigurieren von Logikzellen entsprechend den Funktionalitätsinformationen des ausgewählten Mikrorogramms (14, 16) zumindest während des laufenden Betriebs der Logikeinheit.

Description

Beschreibung
Rekonfigurierbare digitale Logikeinheit
Die Erfindung betrifft eine rekonfigurierbare digitale Logikeinheit.
Herkömmliche programmierbare logische Bausteine wie Prozessoren führen Programme aus, die aus einem Speicher geladen wer- den. Diese Speicher können als diskrete Bausteine (z.B. Festplatte, Speicher-Chip) oder im Prozessor integriert sein. Ein bekanntes Beispiel für ersteres sind die bekannten IBM-kompatiblen. PC's, für letzteres sog. Flash-Microprozessoren. Die auszuführende Software ist -in Form von Befehlswörtern als Ma- schinenbefehl im Speicher abgelegt. Die Befehlswörter werden geladen, analysiert und in einer Verarbeitungseinheit ausgeführt. Die Verarbeitung eines einzigen Befehlswortes löst eine Vielzahl von Einzelaktionen in der Logikeinheit aus.
Ein entscheidendes Kennzeichen herkömmlicher programmierbarer Logikbausteine ist, dass die Verarbeitungseinheit durch jedes neue Befehlswort für einige Taktzyklen neu programmiert wird. Die Informationen über das vorherige Befehlswort in der Verarbeitungseinheit werden überschrieben, abgesehen von Regis- terinhalten. Die Verarbeitungseinheit moderner Mikroprozessoren ist aufgrund der Vielzahl möglicher Operationen sehr aufwendig aufgebaut. Für weniger als 500 mögliche Befehlsworte werden mehr als 30 Millionen Transistoren benötigt, was zu einem entsprechend hohen Energieverbrauch führt, da jeder Transistor auch dann Energie verbraucht, wenn er nicht genutzt wird und sich im „Wartezustand* befindet. Um eine Energieeinsparung zu erzielen, ist bereits vorgeschlagen worden die Betriebsspannung anzupassen, d.h. zu reduzieren. Ebenso kann die Taktfrequenz verringert werden, allerdings sinkt da- durch die Gesamtleistung der Logikeinheit. Der Aufwand für das Design, die Fertigung und den Test dieser Transistoren ist immens. Die einmal entworfene Funktionalität kann nicht verändert werden. Zu einer bestimmten Zeit kann nur eine Aufgabe abgearbeitet werden.
Besonders bei der Ausführung von Programmschleifen ist nur ein geringer Teil des Prozessors aktiv. Die meisten Anwendungen enthalten eine große Zahl von Programmschleifen, wobei jede Schleife nur relativ wenige in die Schleife eingebettete Befehle enthält. Dabei kann es sich um Zählschleifen handeln, beispielsweise um die Anzahl der Spülvorgänge in einer Waschmaschine. Ebenso sind bedingte Schleifen sehr häufig, bei denen die Zahl der Wiederholungen bei Schleifeneintritt unbekannt ist, da die Schleife in Abhängigkeit eines Ergebnisses verlassen wird. Tritt das Ereignis nicht auf, werden die vorherigen Befehle in der Schleife wiederholt.
Bekannte digitale Logikeinheiten, insbesondere Computer mit Mikroprozessoren, beruhen auf der Konzeption des von-Neumann- Computers. Die Zentraleinheit, d.h. der Computerkern besteht aus den Hauptbestandteilen Hauptspeicher, Steuereinheit und Verarbeitungseinheit (Rechenwerk) . Der Hauptspeicher speichert Befehlswörter (Programmdaten) und Verarbeitungsdaten (Operandenwörter) und stellt diese auf Anforderung zur Verfü- gung. Ferner nimmt der Hauptspeicher Zwischen- und Endresultate der Verarbeitung auf. Hauptspeicher können durch flüchtige oder nichtflüchtige Speicher realisiert werden. Die Steuereinheit organisiert die Reihenfolge, in der Befehlswörter abgearbeitet werden. Sie fordert Befehlswörter aus dem Hauptspeicher an und veranlasst die Ausführung des Befehlswortes in der Verarbeitungseinheit. Sie analysiert Befehlswörter und veranlasst die Lieferung von Verarbeitungsdaten an die Verarbeitungseinheit. Die Verarbeitungseinheit führt die Operation an den Verarbeitungsdaten aus und liefert die Re- sultate an den Hauptspeicher. Für jede Operation enthält die Verarbeitungseinheit ein Mikroprogramm, das die benötigten Übertragungsleitungen freischaltet. Die Verarbeitungseinheit wird durch die Steuereinheit auf die jeweilige Operation, d.h. auf den abzuarbeitenden Befehl eingestellt. Dieser Zentraleinheit sind Peripheriegeräte zugeordnet, bei denen es sich um die oben erwähnten externen Speicher, Ein- und Ausga- begeräte handeln kann. Die beschriebenen Hauptkomponenten der Zentraleinheit können physikalisch getrennt sein, zumeist sind sie jedoch auf einem gemeinsamen Prozessorchip mit einem Cache oder beispielsweise auf einem embedded ROM realisiert.
Die bekannten digitalen Logikeinheiten weisen insbesondere bei häufig wiederkehrenden Aktionen, beispielsweise bei der Ausführung von Programmschleifen den Nachteil auf, dass Befehlswörter geladen und ausgeführt werden, die bereits einige Prozessortakte zuvor in einem Befehlsregister standen. Ein Beispiel für eine derartige Schleife ist eine Tastaturabfrage. In dem Fall, dass keine Taste gedrückt ist, werden sämtliche Schleifenbefehle in kurzem Abstand wiederholt, wobei jedes Mal die Befehlswörter erneut geladen werden müssen, als wären sie vollkommen neu. Der allergrößte Teil des Prozessors wird während des Wartens nicht benötigt, er kann jedoch in dieser Zeit keine anderen Aufgaben ausführen.
Der Ausnutzungsgrad einer derartigen Logikeinheit ist äußerst schlecht, da weniger als ein Tausendstel der vorhandenen Hardware genutzt wird. Der überwiegende Teil der Chipfläche bleibt ungenutzt, dennoch muss kontinuierlich Energie zum Betrieb aufgewendet werden.
Die Anpassung von Prozessoren an unterschiedliche Gegebenhei- ten wird bereits auf einer niedrigen Komplexitätsebene durchgeführt. Ein Beispiel dafür ist das Umschalten von Speicherbänken eines Prozessors, die unterschiedliche Programme enthalten. Aktuell nicht genutzte Speicherbänke können verändert werden. Diese Technik wird als IAP (in application program- ming) bezeichnet. Die durch diese Maßnahme erzielte Verbesserung ist vergleichsweise gering, da an der Prozessorhardware nichts geändert wird, sondern nur die auszuführenden Programme zeitgleich mit anderen Prozessen geladen werden.
Für weniger komplexe Aufgaben werden häufig programmierbare Logikbausteine (PLD) eingesetzt. Solche Logikbausteine sind z.B. aus US 4,870,302 oder der Veröffentlichung „Ranmuthu, I.W., et al . ; Magneto-resistive elements - An Alternative to Floating Gate Technology; In: Proceedings of the Midwest Symposiums on Circuits and Systems, 1992, pg(s) . 134 - 136 vol.l bekannt. Das gesamte Anwendungsprogramm wird bei solchen Logikbausteinen in einem Spezial-Compiler (sog. Fitter) in geeignete Befehle übersetzt. Das PLD wird mit diesen Programmdaten einmalig, in der Regel beim Booten definiert: aus einem Programmspeicher wird ein Programm ausgelesen, konfigu- rierbare Bereiche werden konfiguriert. Die konfigurierbaren Bereiche haben folgende Eigenschaften: entweder definieren sie Verknüpfungen zwischen vorgegebenen Punkten (routing- Bereiche) oder verarbeiten logische Eingangssignale zu logischen Ausgangssignalen (Logikzellen-Bereiche) . Werden aber von den vom Hersteller realisierten technischen Vorgaben des PLD's abweichende Verbindungen benötigt, müssen zwei oder mehrere Verbindungsblöcke kaskadiert werden, es kommt zu Laufzeitzunahmen und Durchlauf erzögerungen. Dadurch kann die tatsächliche Geschwindigkeit der Anwendungsprogrammausführung nicht vorhergesagt werden. In vielen Fällen sind Anpassungen im Programm erforderlich, um beispielsweise eine minimale Geschwindigkeitsforderung oder eine Synchronizität von Signalen in einem PLD realisieren zu können. Werden bei der Verarbeitung logischer Signale andere Eigenschaften als die vorhande- nen verlangt (z.B. höhere Bitbreite), dann muss ebenfalls kaskadiert werden. Dadurch sind im PLD die Verknüpfungsbereiche flächenmäßig größer als die Logikbereiche. Trotz der Kon- figurierbarkeit der Bausteine ist also die Flexibilität für unterschiedliche Aufgaben gering. Bei praktischen Problemen wird daher im allgemeinen ein anderer Chip mit anderer Chiparchitektur gewählt, deren Ressourcen dem Problem (z.B. Bitbreite, Durchlaufverzögerungsanforderungen) besser angepasst ist. Das Architekturkonzept der PLD's sieht vor, die Programmierinformationen vom Fitter auf eine Vielzahl gleichartiger Logikzellen auf dem PLD-Chip zu verteilen. Diese werden durch eine Vielzahl gleichartiger Routingbereiche verknüpft. Die Programmierinformation wird also in der Fläche verteilt. Die Konfigurierbarkeit der PLD's beschränkt sich auf wenige konfigurierbare Parameter, die beim Booten fest eingestellt werden. Es werden dabei zwei Speicher benötigt: ein externer Boot-Speicher-Chip (diskreter Chip, z.B. das EEPROM 113 in US 4,870,302) und interne, flächig verteilte Speicherzellen
(z.B. nach den Fig. 3a und 10a in US 4,870,302 oder Fig. 5 in der Veröffentlichung von Ranmuthu et al . Die lokalen Speicherzellen enthalten nach dem Booten die Informationen für die Verknüpfungen und für die Logikfunktionen der Zellen. Die Flächen- und die Verlustleitungseffizienz der verteilten
Speicherzellen ist ca. zwei Größenordnungen schlechter als von diskreten Speicherchips gleicher Leistungsfähigkeit. Benötigt das Anwendungsprogramm aber weniger Leistungsfähigkeit als der Chip bereitstellt, so verbrauchen die nicht genutzten Bereiche unvermeidlich ebenfalls Verlustleistung. Typische Ausnutzungsgrade der Ressourcen von PLD's liegen bei ca. 30% bis 70%. Zu einem bestimmten Zeitpunkt sind davon auch nur Bruchteile aktiv an der Verarbeitung von Logikinformationen beteiligt.
Der Erfindung liegt daher das Problem zugrunde, die genannten Nachteile zu vermeiden und eine digitale Logikeinheit anzugeben, bei der die Ausnutzung der Hardware verbessert ist.
Dieses Problem wird gelöst durch eine rekonfigurierbare digitale Logikeinheit, umfassend eine Mehrzahl von Logikzellen mit konfigurierbaren Eigenschaften; einen internen Speicher mit einer Mehrzahl von Mikroprogrammen, enthaltend Informationen betreffend die Funktionalität mehrerer Logikzellen, wo- bei zumindest eines der Mikroprogramme in Abhängigkeit von einer bestimmten Anwendung zumindest während des laufenden Betriebs der Logikeinheit reprogrammierbar ist; ein Mittel zum Auswählen wenigstens eines Mikroprogramms; sowie ein Mittel zum Konfigurieren von Logikzellen entsprechend den Funktionalitätsinformationen des ausgewählten Mikroprogramms zumindest während des laufenden Betriebs der Logikeinheit. Un~ ter dem Begriff „Funktionalität* ist sowohl „Datenverarbeitung* sowie „Datenverknüpfung* zu verstehen.
Die erfindungsgemäße Logikeinheit ist also während des laufenden Betriebs variabel, d.h. die Logikzellen sind während des Betriebs der Logikeinheit konfigurierbar, das oder die
Mikroprogramme können während des laufenden Betriebs der Logikeinheit reprogrammiert werden. Es ist also jederzeit eine Anpassung der Logikeinheit an die gestellte und zu bearbeitende Aufgabe möglich, da keine feste Konfiguration und Pro- grammierung herstellerseits vorgegeben ist, vielmehr kann quasi in-situ konfiguriert werden und die Eigenschaften verändert und angepasst werden. Die Änderung der Programmierung oder der Konfiguration kann vom Programmierer softwaremäßig vorgegeben sein, es kann sich aber auch um ein selbstständige lernendes System handeln. Infolge der stets gegebenen Variationsmöglichkeit müssen also nicht alle möglichen Befehle bzw. Verknüpfungen auf dem Chip realisiert sein, vielmehr lassen sich die benötigten Verknüpfungen während des Betriebs gemäß dem gerade gegebenen Erfordernis erzeugen. Es wird also wesentlich weniger Platz auf dem Chip benötigt, auch kann die Verlustleitung deutlich verringert werden, da aufgrund der Einstellmöglichkeit nur solche Zellen und Verknüpfungen konfiguriert werden, die für die geforderte Anwendung benötigt werden.
Dabei ist unter dem Begriff „Logikzelle* jedwedes eine Logikfunktion ausführendes Element zu verstehen. Im einfachsten Fall kann es sich um eine einzelne Speicherzelle handeln, im komplexeren Fall um ein Gatter, ein Subnetzwerk aus mehreren Gattern oder gar ein Prozessorelement handeln. Das Prinzip einer Logikzelle entspricht dem einer Subroutine, es kann eine einfache Funktionalität enthalten (z.B. „Ausgang = Ein- gang* oder „Ausgang = konstant*) oder als Subnetzwerk mit erheblicher komplexer Funktionalität ausgebildet sein. Meist wird es Teilaufgaben enthalten, die sich durch häufige Verwendung (z.B. Primitives (z.B. Gatterfunktionen) oder Vollad- dierer) oder zweckmäßige und vorteilhafte Ausgestaltungen (insbesondere in Form kommerzieller IP) auszeichnen.
Unter dem Begriff „konfigurierbare Eigenschaft* sind alle nichtflüchtigen, aber änderbaren Eigenschaften oder Arbeits- parameter zu verstehen. Als Beispiele für eine Logikzelle sind die Bitbreite am Eingang / die Anzahl der Variablen, die physikalische Position der Eingänge, die Codierung der Bits (z.B. seriell oder parallel), die logische Verarbeitung der Bits, das Zeitverhalten, die Registerfunktion, die lokale Speicherfunktion, die Bitbreite am Ausgang, die physikalische Position der Ausgangsbits oder die Betriebsbereitschaft zu nennen, wobei diese Aufzählung nicht abschließend ist. Die Änderungen sind unabhängig von anderen Prozessoren im Chip durchführbar, idealerweise erfolgt die Änderung der Bitverar- beitung und Verknüpfung in jedem Takt.
Besonders geeignet sind solche Logikzellen mit konfigurierbaren Eigenschaften, die ein magnetoresistives Schichtsystem aufweisen.
Anstelle von Logikzellen mit magnetoresistiven Schichten können auch alternative, ähnlich leistungsfähige Technologien eingesetzt werden, beispielsweise ferroelektrische RAMs (FRAM) .
Jede Logikzelle der erfindungsgemäßen Logikeinheit kann wenigstens ein magnetoresistives Schichtsystem sowie Eingangsund Ausgangsanschlüsse aufweisen, die an Verbindungsleiterbahnen angeschlossen sind. Das Schichtsystem kann vom GMR-Typ (giant magneto resistive) , TMR-Typ (tunnel magneto resistive) oder vom AMR-Typ (anisotropy magneto resistive) sein. Die Magnetisierungsrichtung einer magnetischen Schicht kann zur Informationsspeicherung benutzt werden. Dieser Speichervorgang ist sehr schnell und nahezu unbegrenzt oft durchführbar. Der Widerstand der Speicherzelle ist entweder niedrig oder hoch, in Abhängigkeit von der Magnetisierungsrichtung der freien magnetischen Schicht relativ zu einer Referenzrichtung. Eine darauf basierende Logikzelle kann als logisches Gatter verwendet werden, wobei durch die Ansteuerung bzw. die Zusammenschaltung mehrerer Zellen praktisch alle üb- liehen Gatterfunktionen (z.B. NOR, XOR, AND, OR, INV u.s.w.) realisiert werden können. Wesentlich ist dabei, dass durch entsprechende Mittel die Funktionalität zwischen wenigstens zwei dieser Gatterfunktionen verändert werden kann. Ebenso kann eine Logikzelle als Speicher verwendet werden, insbeson- dere kann das Ergebnis einer logischen Verknüpfung gespeichert werden. Besonders geeignet sind Speicherzellen vom TRAM-Typ (tunnel rando access memory) , da diese unbegrenzt beschreibbar sind.
Erfindungsgemäß sind bei der digitalen Logikeinheit Verknüpfungen von Logikzellen zu Logikzellenblöcken vorgesehen, die die Funktion eines Halbaddierers, eines Volladdierers oder eines Multiplikators haben. Zusätzlich kann eine Logikzelle einen lokalen Speicher umfassen. Dieser kann Zwischen- oder Endergebnisse einer logischen Verknüpfung speichern.
Die erfindungsgemäße digitale Logikeinheit umfasst einen internen Speicher mit einer Mehrzahl von Mikroprogrammen. Es kann sich dabei um einen Speicher handeln, der durch Befehls- Wörter aus einem Hauptspeicher angesprochen wird und Informationen betreffend die Funktionalität und die Verknüpfung mehrerer Logikzellen enthält. Ein Befehlswort wird aus dem Hauptspeicher geladen, analysiert und anhand des Mikroprogramms wird die dafür benötigte Logikzellenanordnung abgelei- tet. Ein solches Mikroprogramm ist mit einem Befehlsmakro vergleichbar, es enthält eine Anzahl von Grundoperationen, die durch eine Verknüpfung mehrerer Logikzellen realisiert werden können. Typische Grundoperationen sind das Laden, Analysieren oder Auswählen. Ein Mikroprogramm kann dementsprechend als Bauplan oder Schaltungsaufbau angesehen werden, der sämtliche benötigten Informationen über die Logikzellen ent- hält. Zusätzlich können auch Informationen über gegebenenfalls benötigte Speicher, Register oder ähnliche Komponenten enthalten sein. Ferner kann ein Mikroprogramm auch Konstanten enthalten, beispielsweise kann die Zahl "0" als Konstante definiert werden. Außerdem können Informationen über Eingänge, Ausgänge oder die Verknüpfung der Eingänge mit Variablen und Konstanten durch ein Mikroprogramm definiert sein.
Viele Standardaufgaben können durch die Mikroprogramme abgedeckt werden, beispielsweise kann eine Tastaturabfrage durch ein Mikroprogramm definiert werden, ebenso die Ausgabe von
Daten an ein externes Gerät oder die Eingabe und der Empfang von Daten eines externen Geräts. Ebenso können beliebige logische Verknüpfungen in Form von Mikroprogrammen gespeichert werden, beispielweise arithmetische Verknüpfungen wie die Grundrechenarten, aber auch wesentlich komplexere Algorithmen. Logikverknüpfungen werden in einzelne Bestandteile zerlegt, die jeweils durch ein Mikroprogramm definiert werden.
Mit besonderem Vorteil ist erfindungsgemäß vorgesehen, dass ein Mikroprogramm reprogrammierbar ist. Das Mikroprogramm kann geladen und in Abhängigkeit von einer bestimmten Anwendung geändert werden. Dadurch wird eine besonders hohe Flexibilität der Logikeinheit erreicht. Es kann auch vorgesehen sein, dass ein Mikroprogramm Befehle zur Definition neuer Mikroprogramme oder zum Ändern vorhandener Mikroprogramme aufweist.
Gemäß einer Weiterbildung des Erfindungsgedankens ist vorgesehen, dass ein Mikroprogramm Firmware enthaltende Befehle umfasst. Ferner können Befehlsfolgen eines Mikroprogramms von einem Anwendungsprogramm erkannt werden und als neues Mikroprogramm abgelegt werden. Die erfindungsgemäße digitale Logikeinheit kann ferner ein Mittel zum Auswählen wenigstens eines Mikroprogramms enthalten. Die Mikroprogramme können vordefiniert sein oder im Sin- ne einer "evolvable hardware" auch neu definiert werden. Der Speicher kann eine Vielzahl von Befehlswörtern enthalten, die durch das Mittel jeweils wenigstens ein Mikroprogramm auswählen.
Das Auswählen des wenigstens einen Mikroprogramms kann durch einen Programmzeiger (program pointer) erfolgen.
Die erfindungsgemäße digitale Logikeinheit umfasst ferner ein Mittel zum Konfigurieren von Logikzellen entsprechend den Funktionalitätsinformationen des ausgewählten Mikroprogramms.
Die durch das ausgewählte Mikroprogramm definierten Logikzellenverknüpfungen sowie die gegebenenfalls benötigten lokalen Speicherzellen werden in reprogrammierbare Hardware program- miert. Die magnetoresistiven Logikzellen werden durch eine
Programmierroutine programmiert. Die Programmierroutine legt fest, in welcher Reihenfolge die einzelnen Logikzellen einen Programmierstrom erhalten. Dadurch werden die gewünschten Logikgatterfunktionen programmiert. Ebenso werden Verknüpfungen zwischen verschiedenen Logikzellen hergestellt.
Die bei der erfindungsgemäßen digitalen Logikeinheit verwendeten Speicher weisen den Vorteil auf, dass der Speicherinhalt nicht flüchtig ist, d.h. er bleibt auch nach dem Ab- schalten der Spannung erhalten. Dennoch können bereits programmierte Logikzellen zu einem späteren Zeitpunkt umprogrammiert werden, d.h. die Funktionalität einer Logikzelle kann rekonfiguriert werden. Programmschleifen laufen daher "in Hardware", d.h. für eine bestimmte logische Verknüpfung wird ein exakt dazu passender Hardwareaufbau geschaffen, der möglichst optimal an das zu bearbeitende Problem angepasst ist. Eine Spannung muss lediglich solchen Logikzellen zugeführt werden, die tatsächlich augenblicklich benötigt werden. Wenn eine durch Logikzellen definierte Programmschleife endgültig verlassen wird, können die zugehörigen Logikzellen abgeschaltet werden, so dass sie keine Energie mehr verbrauchen. Da- durch wird das bei herkömmlichen Logikeinheiten auftretende Problem vermieden, dass große Teile der Hardware ständig in einem Wartezustand sind, in welchem sie Strom verbrauchen.
Es hat sich als besonders günstig herausgestellt, die Logik- zellen rasterfeidartig anzuordnen. Dadurch wird eine regelmäßig angeordnete Logikzellenschicht erzeugt, bei der jede einzelne Logikzelle wie die Komponente einer Matrix durch die Angabe der Reihe und der Spalte adressiert werden kann. Es kann auch vorgesehen sein, dass verschiedene Typen von Logik- zellen regelmäßig auf dem Rasterfeld verteilt sind, beispielsweise können häufig benötigte Gatter wie NOR-, XOR- und AND-Gatter in allen Bereichen des Rasterfelds angeordnet sein, so dass beim Verknüpfen von einzelnen Logikzellen nur relativ geringe Abstände und weniger Funktionalitätskonfigu- rationen zu überbrücken sind. Logikzellenverknüpfungen können auf dem Rasterfeld grundsätzlich in beliebiger Form ausgebildet sein. Bevorzugt werden Logikzellenverknüpfungen, bei denen zu verknüpfende Logikzellen direkt oder möglichst nah benachbart sind. Die verknüpften Logikzellen können auf dem Rasterfeld sowohl linienförmig als auch flächig, d.h. in Form von Funktionsblöcken angeordnet sein.
Die Logikzellen mit dem magnetoresistiven Schichtsystem und den Eingangs- und Ausgangsanschlüssen sind an Verbindungslei- terbahnen angeschlossen, die im Wesentlichen horizontal und vertikal verlaufen und sich vorzugsweise rechtwinklig kreuzen. Die Leiterbahnen können aus einem Kupfermaterial bestehen.
In weiterer Ausgestaltung des Erfindungsgedankens kann vorgesehen sein, dass Logikzellen in verschiedenen Schichten oder Ebenen gitterartig angeordnet sind. Mit dreidimensional ange- ordneten Logikzellen ergibt sich eine wesentlich größere Vielfalt der Verknüpfungsmöglichkeiten. Es ist auch möglich, eine Variable oder Konstante in einer Logikzelle zu speichern. Auf diese Logikzelle kann dann von verschiedenen Mikroprogrammen zugegriffen werden. Beispielsweise kann eines der Mikroprogramme in einer höheren Schicht angeordnet sein, ein anderes Mikroprogramm kann neben der Logikzelle platziert sein. Diese Logikzelle kann also von mehreren Mikroprogrammen genutzt werden.
Die Verbindung verschiedener Schichtebenen der Logikzellen kann in bekannter Weise durch senkrecht zur Schichtebene angeordnete Kontaktlöcher erfolgen. Derartige dreidimensionale Aufbauten sind bekannt und bedürfen daher keiner weiteren Er- läuterung. Bevorzugt werden rekonfigurierbare digitale Logikeinheiten, die vier bis sechs Schichtebenen sich kreuzender Verbindungsleiterbahnen mit zwischenliegenden magnetoresisti- ven Schichtsystemen enthalten. Die einzelnen Schichten können durch eine Isolationsschicht voneinander getrennt sein. Zu- sätzlich können vorzugsweise auf einer Außenseite weitere Bauelemente vorhanden sein, die in herkömmlicher Siliziumtechnologie hergestellt sein können. Es kann auch vorgesehen sein, dass vorzugsweise zueinander benachbarte Schichten in Flächenebene zueinander versetzt angeordnet sind. Dadurch kann beispielsweise eine geradlinige Verbindungsleiterbahn zwischen der zweiten und der vierten Schicht gebildet werden. Die Gitteranordnung kann kartesisch sein, aber auch "Bienenwaben" in der Form der hexagonal dichtesten Packung angeordnet sein, um eine größere Anzahl nächster Nachbarn zu bilden.
Erfindungsgemäß ist vorgesehen, dass die Abarbeitung von Logikfunktionen durch wenigstens einen Befehlszähler steuerbar ist. Ein Befehlszähler, der auch als Befehlstoken bezeichnet werden kann, signalisiert, welche der Logikzellen augenblick- lieh aktiv ist, d.h. das Befehlstoken zeigt auf die aktuell arbeitende Logikzelle bzw. auf die aktuell arbeitende Logikverknüpfung. Der Befehlszähler kann ein logisches Signal sein, das nur bei einer Logikzelle gesetzt ist („1*) und bei allen anderen Logikzellen nicht gesetzt ist („0*).
Gemäß einer ersten Ausführungsvariante der Erfindung ist ein einziger Befehlszähler für die Logikeinheit vorgesehen. Dementsprechend kann zu einem Zeitpunkt nur eine einzige Logikzelle bzw. eine einzige Logikzellenverknüpfung aktiv sein. Die übrigen Logikzellen sind währenddessen nicht aktiv. Wenn die entsprechende Logikfunktion abgearbeitet ist, wird der Befehlszähler "weitergegeben", d.h. er zeigt auf die nächste abzuarbeitende Logikzelle. Das Mikroprogramm bzw. mehrere Mikroprogramme können hintereinander auf dem Logikzellenfeld angeordnet sein, so dass die einzelnen Logikzellen sequentiell abgearbeitet werden. Alternativ ist es auch möglich, dass die Logikzellen bzw. die Logikzellenverknüpfungen wahlfrei auf dem Logikzellenfeld gespeichert sind, diese Anordnung ist mit der Speicherung von Daten auf einer Festplatte vergleichbar .
Gemäß einer zweiten Ausgestaltung kann vorgesehen sein, dass eine Logikeinheit mehrere Befehlszähler besitzt, die gleichzeitig aktiv sein können. Demnach können zwei oder mehrere Mikroprogramme gleichzeitig ablaufen, d.h. es findet eine Parallelbearbeitung statt. Der Befehlszähler bzw. das Be- fehlstoken kann als logisches Signal ausgebildet sein, das in einem Flag-Register gespeichert wird und nach Abschluss der Berechnung zurückgesetzt wird. Eine "1" bedeutet, dass die Logikzellenverknüpfung aktiv ist, nach der Berechnung wird das flag auf "0" zurückgesetzt. Nur eine aktive Logikzellen- anordnung bzw. ein aktives Mikroprogramm weist den Wert "1" auf, was dazu führt, dass die Betriebsspannung für die mit dem aktiven Mikroprogramm verknüpften Logikzellen freige- schaltet wird. Die gemeinsame Nutzung von programmierten Konstanten und die Übergabe von Ergebnissen ist möglich.
Die Abarbeitung von Mikroprogrammen kann auf unterschiedliche Arten erfolgen. Bei synchron arbeitenden Logikeinheiten wird mit dem nächsten Takt das Flag abgefragt und anschließend das nächste Mikroprogramm aktiviert. Es kann vorgesehen sein, dass die Abarbeitung bei synchronen Logikeinheiten einfach zeitgesteuert erfolgt, d.h. jedes Mikroprogramm hat gleich viel Zeit zur Abarbeitung der programmierten Befehlsworte. Es ist auch möglich, dass die Abarbeitung bei synchronen Logikeinheiten komplex zeitgesteuert erfolgt, d.h. jedes Mikroprogramm ist mit einer vorgegebenen Zeit zur Abarbeitung der programmierten Befehlsworte verknüpft. Diese Zeitinformation kann beispielsweise in einer Variablen des Mikroprogramms enthalten sein.
Darüber hinaus kann bei asynchron arbeitenden Logikeinheiten vorgesehen sein, dass das logische Freigabesignal direkt wei- tergereicht wird. Die Zeit der Abarbeitung der programmierten Befehlsworte spielt dabei keine Rolle. Gegebenenfalls sind Maßnahmen zur Synchronisierung mehrerer gleichzeitig aktiver Mikroprogramme erforderlich, um Konflikte wie einen gleichzeitigen Zugriff auf eine Speicherzelle zu vermeiden.
In einer Weiterbildung der Erfindung kann vorgesehen sein, dass die Logikeinheit eine Tabelle der belegten und/oder nicht belegten Logikzellen umfasst. Es ist auch denkbar, dass ein Algorithmus verwendet wird, der überprüft, ob eine benö- tigte Logikzellenanordnung, z.B. ein Multiplizierer, bereits als konfigurierter Block in dem Logikzellenfeld vorhanden ist. In diesem Fall könnte dieselbe Logikzellenanordnung von verschiedenen Mikroprogrammen verwendet werden. Ferner kann es vorgesehen sein, dass ein Algorithmus freie Bereiche der Logikzellen findet, um eine optimale Ausnutzung der vorhandenen Logikzellen zu erreichen. Gleichermaßen kann vorgesehen sein, dass Logikzellen auf ihre Funktionsfähigkeit geprüft werden und gegebenenfalls als defekt klassifizierte Logikzellen in einer Tabelle markiert werden.
Weitere Vorteile und Einzelheiten der Erfindung ergeben sich aus dem im Folgenden beschriebenen Ausführungsbeispiel sowie anhand der Zeichnungen. Die Zeichnungen sind schematische Darstellungen und zeigen:
Fig. 1 einen Querschnitt durch eine erfindungsgemäße Logikeinheit, bestehend aus mehreren Schichten von
Logikzellen;
Fig. 2 eine schematische Schnittansicht einer erfindungsgemäßen Logikeinheit mit vertikalen Verbindungslö- ehern; und
Fig. 3 ein sche atisches Ablaufdiagramm der Konfigurierung einer erfindungsgemäßen digitalen Logikeinheit.
Die in Fig. 1 im Schnitt dargestellte digitale Logikeinheit 1 besteht aus mehreren Schichten magnetoresistiver Logikzellen 2, von denen jede ein magnetoresistives SchichtSystem mit in Fig. 1 nicht dargestellten Eingangs- und Ausgangsanschlüssen aufweist, die an die Verbindungsleiterbahnen 3, 4 angeschlos- sen sind. Die Leiterbahnen 3, 4 umfassen eine Vielzahl von in unterschiedlichen Ebenen angeordneten parallelen Leiterbahnen. Die einzelnen Leiterbahnen sind elektrisch voneinander isoliert, eine Verbindung kann nur über die Logikzellen 2 erfolgen, die sowohl an die Leiterbahnen 3 als auch 4 angren- zen. Jede der Speicherzellen ist durch eine Isolationsschicht 5 von der benachbarten Schicht getrennt. Die Logikeinheit 1 kann zweckmäßigerweise vier bis sechs derartige Einzelschichten umfassen.
Die Logikzellen 2 sind nichtflüchtig, aber reprogrammierbar, es handelt sich um wiederbeschreibbare Logikbauelemente, die mit einer hohen Geschwindigkeit zu programmieren sind. Sie bieten die Möglichkeit, eine logische Funktion und gleichzeitig einen Speicher zu realisieren oder auch Verknüpfungen freizuschalten oder zu unterbrechen. Unterhalb der unteren Isolationsschicht 6 sind schematisch weitere Bauelemente 7 dargestellt, die in herkömmlicher Silizium-Technologie aufgebaut sind. Es ist daher möglich Logikzellen 2 mit Siliziumhalbleitern zu kombinieren.
Fig. 2 zeigt eine schematische Schnittansicht einer erfindungsgemäßen Logikeinheit mit vertikalen Verbindungslöchern zwischen den Einzelschichten.
Die Logikeinheit 1 besteht aus den Schichten 8, 9, 10, die analog zu der Logikeinheit von Fig. 1 aufgebaut sind. Zwischen den Schichten 8, 9, 10 und einer unteren Schicht 11 sind Kontaktlöcher 12 ausgebildet, die eine vertikale Verbindung zwischen den Schichten, bzw. zwischen auf den Schichten angeordneten Logikzellen herstellen. In ähnlicher Weise kann auch ein Gitteraufbau realisiert werden, bei dem die Verbindungsleiterbahnen entlang aller drei Raumachsen ausgebildet sind und sich in jedem Kreuzungspunkt des Gitters eine Logikzelle befindet. Zur Adressierung einer Logikzelle ist ihre X- , Y- und Z-Koordinate erforderlich.
In Fig. 3 ist schematisch der Ablauf bei der Konfigurierung der digitalen Logikeinheit gezeigt.
Ein interner Speicher 13 umfasst eine Anzahl von unterschiedlichen Mikroprogrammen 14, die Informationen über die Verknüpfung mehrerer Logikzellen enthalten.
Ein Programmpointer 15 wählt eines der Mikroprogramme des Speichers 13 aus. Das ausgewählte Mikroprogramm 16 enthält alle Informationen, die für die Programmierung der Logikzellen 2 benötigt werden. Es handelt sich dabei um Informationen betreffend die Verarbeitungseinheit, die Steuereinheit, Variablen, Eingabe-/Ausgabe-Prozesse (I/O) und ein Befehlstoken. Es ist nicht erforderlich, dass jedes Mikroprogramm Informa¬ tionen zu allen genannten Punkten aufweist, in Abhängigkeit von der Aufgabenstellung können einzelne Punkte entfallen o- der das Mikroprogramm kann weitere Programminformationen enthalten.
Eine Programmierroutine 17 analysiert die Informationen des ausgewählten Mikroprogramms 16 und programmiert die benötigten Logikfunktionen.
Ein Logikzellenfeld 18 umfasst eine große Anzahl regelmäßig in Reihen und Spalten angeordneter magnetoresistiver Logik- zellen 19, die in Fig. 3 schematisch durch Rasterpunkte dargestellt sind. Das Logikzellenfeld 18 kann sehr viele Logikzellen 19 umfassen, beispielsweise könnte es 1000 mal 1000 Zellen, also insgesamt 1 Million Logikzellen enthalten. Bei diesem Ausführungsbeispiel besteht das Logikzellenfeld 18 aus einer einzigen Schicht. Es ist auch möglich, mehrere derartige Logikzellenfelder zu einem Logikzellengitter zu kombinieren.
Jede einzelne Logikzelle 19 kann eine Grundverknüpfung durch- führen, sie kann beispielsweise ein AND- oder XOR-Gatter sein oder sich entsprechend konfigurieren lassen.
Zur Programmierung der benötigten Logikoperationen und der lokalen Speicherstellen wählt die Programmierroutine 17 die- jenigen Logikzellen 19, bzw. Gruppen von Logikzellen aus, die nicht belegt sind bzw. die nicht mehr benötigt werden und reprogrammiert werden können. Dazu dient eine Tabelle 20, die auch als Liste ausgebildet sein kann und die freien, zur Verfügung stehenden Logikzellen enthält. Alternativ können die belegten Logikzellen erfasst sein, ebenso solche Logikzellen, die sich als defekt herausgestellt haben. Die Tabelle 20 kann auch als zwei- oder dreidimensionale Matrix ausgebildet sein und zu jeder Logikzelle 19 einen Eintrag aufweisen, der eine Information über den aktuellen Status enthält. Nach jedem Programmiervorgang wird die Tabelle 20 aktualisiert, neu belegte Logikzellen 19 werden in der Tabelle 20 entsprechend gekennzeichnet, nicht mehr benötigte Logikzellen 19 werden wieder frei gegeben. Aufgrund der Informationen der Tabelle 20 wird festgelegt, in welchem Bereich des Logikzellenfelds 18 das aktuell zu programmierende Mikroprogramm 16 gespeichert wird. Die Informationen über programmierte Zustände und Verknüpfungen sind sehr platzsparend abzuspeichern.
Nicht gezeigt ist in Fig. 3 der Hauptspeicher sowie dessen dazugehörige Peripherie, der auf bekannte Weise Verarbeitungsdaten und Befehlsworte enthält, wobei die Befehlsworte das aktive Mikroprogramm aus dem internen Speicher 13 auswählen.
Wie in Fig. 3 zu erkennen ist, weist das Logikzellenfeld 18 bereits einige programmierte Logikzellenblöcke 21, 22, 23 auf, denen jeweils ein bestimmtes Mikroprogramm des Speichers 13 zugeordnet ist. Zwischen den Logikzellenblöcken 21 und 22 ist schematisch ein Kontaktpunkt 24 eingezeichnet, an dem Signale oder Daten zwischen den Logikzellenblöcken 21, 22 ausgetauscht werden können. Selbstverständlich können zwi- sehen zwei benachbarten Logikzellenblöcken auch mehrere derartige Kontaktpunkte angeordnet sein.
Zur Programmierung einer Logikzelle muss diese zunächst in dem Auswahlschritt 25 anhand ihrer Reihe und Spalte bestimmt werden. Die ausgewählte Logikzelle 26 wird anschließend durch die Programmierroutine 17 programmiert, dieser Vorgang schließt die Verschaltung der benötigten Verbindungsleitungen ein.
Das Logikzellenfeld 18 enthält weitere Logikzellenblöcke 27, 28, die in der Tabelle 20 als nicht mehr benötigt gekennzeichnet sind. Diese können zu einem späteren Zeitpunkt rekonfiguriert werden.
Wenn sämtliche Logikzellen der Logikzellenblöcke 21, 22, 23 programmiert sind, kann die Abarbeitung der zugehörigen Logikzellenverknüpfungen unmittelbar danach beginnen. Mehrere Logikzellenblöcke können auch derart miteinander verkettet werden, dass sie einen Ring oder eine Schleife bilden.
Zum Betrieb der Logikzellenblöcke 21, 22, 23 ist ein Be- fehlstoken erforderlich. Es handelt sich dabei um ein logisches Signal, das an einem Ausgang der Logikzellenblöcke 21, 22, 23 anliegt. Dadurch soll erreicht werden, dass jeweils nur einer der Logikzellenblöcke aktiv ist. Bei dem aktiven Logikzellenblock wird das Befehlstoken gesetzt, anschließend wird diesem Logikzellenblock die Betriebsspannung zugeführt. Nach der Abarbeitung des diesem Logikzellenblock zugeordneten Mikroprogramms wird das Befehlstoken zurückgesetzt und die Betriebsspannung abgeschaltet. Das Befehlstoken wird an den nächsten Logikzellenblock weitergegeben, so dass dieser ar- beiten kann.
Es ist auch möglich, dass gleichzeitig mehrere Befehlstoken gesetzt sind, so dass mehrere Mikroprogramme gleichzeitig abgearbeitet werden. Diese Betriebsweise entspricht einem ver- teilten Prozessor. Allerdings ist darauf zu achten, dass die den jeweiligen Befehlstoken zugeordneten Logikzellenblöcke unabhängig voneinander arbeiten, das heißt es muss vermieden werden, dass es zu Kollisionen bei Zugriffen auf Speicher o- der Adress- oder Datenleitungen kommt. Dementsprechend kann es vorgesehen sein, dass mehrere Logikzellenblöcken synchron arbeiten. Eine asynchrone Arbeitsweise ist allerdings auch möglich, wenn Vorkehrungen gegen das Auftreten der genannten Kollisionen getroffen werden.

Claims

Patentansprüche
1. Rekonfigurierbare digitale Logikeinheit, umfassend:
- eine Mehrzahl von Logikzellen (19, 26) mit konfigurierbaren Eigenschaften;
- einen Speicher (13) mit einer Mehrzahl von Mikroprogrammen (14, 16) , enthaltend Informationen betreffend die Funktionalität mehrerer Logikzellen (19, 26) , wobei mindestens eines der Mikroprogramme (14, 16) in Abhängigkeit von einer bestimmten Anwendung zumindest während des laufenden Betriebs der Logikeinheit reprogrammierbar ist;
- ein Mittel zum Auswählen wenigstens eines Mikroprogramms (14, 16);
- ein Mittel zum Konfigurieren von Logikzellen entsprechend den Funktionalitätsinformationen des ausgewählten Mikroprogramms (14, 16) zumindest während des laufenden Betriebs der Logikeinheit.
2. Logikeinheit nach Anspruch 1, d a d u r c h g e - k e n n z e i c h n e t, dass die Logikzellen (19, 26) ein magnetoresistives Schichtsystem aufweisen.
3. Logikeinheit nach Anspruch 1 oder 2, d a d u r c h g e k e n n z e i c h n e t, dass die Logikzellen (19, 26) rasterfeldartig angeordnet sind.
4. Logikeinheit nach einem der vorangehenden Ansprüche, d a d u r c h g e k e n n z e i c h n e t, dass die Logikzellen (19, 26) an im Wesentlichen horizontal und vertikal verlaufenden Verbindungsleiterbahnen (3, 4) angeschlossen sind.
5. Logikeinheit nach Anspruch 4, d a d u r c h g e k e n n z e i c h n e t, dass sich kreuzende Leiterbahnen (3, 4) in unterschiedlichen Ebenen angeordnet sind.
6. Logikeinheit nach einem der vorangehenden Ansprüche, d a d u r c h g e k e n n z e i c h n e t, dass Logikzellen (19, 26) in verschiedenen Schichten gitterartig angeordnet sind.
7. Logikeinheit nach einem der vorangehenden Ansprüche, d a d u r c h g e k e n n z e i c h n e t, dass Logikzellen (19, 26) versetzt zueinander angeordnet sind.
8.. Logikeinheit nach einem der vorangehenden Ansprüche, d a d u r c h g e k e n n z e i c h n e t, dass einer Logikzelle (19, 26) eine der primitiven Logikfunktionen AND, XOR, OR, INV oder der inversen Funktionen NAND, XNOR, NOR, BUF zugeordnet ist oder dass eine Logikzelle (19, 26) derart konfiguriert werden kann.
9. Logikeinheit nach einem der vorangehenden Ansprüche, d a d u r c h g e k e n n z e i c h n e t, dass mehrere Logikzellen (19, 26) zu einem Logikzellenblock (21, 22, 23) verknüpft sind.
10. Logikeinheit nach Anspruch 9, d a d u r c h g e k e n n z e i c h n e t, dass ein Logikzellenblock (21, 22, 23) als Halbaddierer oder Volladdierer oder Multiplikator ausgebildet ist.
11. Logikeinheit nach einem der vorangehenden Ansprüche, d a d u r c h g e k e n n z e i c h n e t, dass eine Logikzelle (19, 26) einen lokalen Speicher aufweist oder als Speicher konfigurierbar ist.
12. Logikeinheit nach einem der vorangehenden Ansprüche, d a d u r c h g e k e n n z e i c h n e t, dass Befehle zur vorzugsweise anwendungsorientierten Definition neuer Mikroprogramme und/oder zum Ändern vorhandener Mikroprogramme vorhanden sind.
13. Logikeinheit nach einem der vorangehenden Ansprüche, d a d u r c h g e k e n n z e i c h n e t, dass ein Mikroprogramm (14, 16) Firmware enthaltende Befehle enthält.
14. Logikeinheit nach einem der vorangehenden Ansprüche, d a d u r c h g e k e n n z e i c h n e t, dass Befehlsfolgen eines Mikroprogramms (14, 16) von einem Anwendungsprogramm erkennbar sind und als neues Mikroprogramm ablegbar sind.
15. Logikeinheit nach einem der vorangehenden Ansprüche, d a d u r c h g e k e n n z e i c h n e t, dass ein Mikroprogramm (14, 16) Befehle zur Konfigurierung von Logikfunktionen und/oder Verknüpfungen und/oder Variablen und/oder Konstanten enthält.
16. Logikeinheit nach einem der vorangehenden Ansprüche, d a d u r c h g e k e n n z e i c h n e t, dass ein Mikroprogramm (14, 16) mit einem Speicher, insbesondere einem flüchtigen oder nichtflüchtigen oder permanenten Speicher, zusammenwirkt.
17. Logikeinheit nach einem der Ansprüche 9 bis 16, d a d u r c h g e k e n n z e i c h n e t, dass ein Mikroprogramm (14, 16) in einen Logikzellenblock (21, 22, 23) ko- pierbar ist.
18. Logikeinheit nach einem der Ansprüche 9 bis 17, d , a- d u r c h g e k e n n z e i c h n e t, dass ein Mikroprogramm (14, 16) Mittel zum Konfigurieren von Verbindungen zwischen den rekonfigurierbaren Logikzellen (19, 26) und/oder den Logikzellenblöcken (21, 22, 23) und/oder nicht konfigurierbaren Logikzellen aufweist.
19. Logikeinheit nach einem der vorangehenden Ansprüche, d a d u r c h g e k e n n z e i c h n e t, dass die Abarbeitung von Logikfunktionen durch wenigstens einen Befehlszähler steuerbar ist.
20. Logikeinheit nach Anspruch 19, d a d u r c h g e k e n n z e i c h n e t, dass die Betriebsspannung für die dem Befehlszähler aktuell zugeordnete Logikzelle (19, 26) und/oder für einen dem Befehlszähler aktuell zugeordneten Logikzellenblock (21, 22, 23) oder für einen Teil dieses Logikzellenblocks (21, 22, 23) freigeschaltet wird.
21. Logikeinheit nach Anspruch 19 oder 20, d a d u r c h g e k e n n z e i c h n e t, dass sie mehrere Befehlszähler aufweist.
22. Logikeinheit nach einem der Ansprüche 19 bis 21, d a d u r c h g e k e n n z e i c h n e t, dass sie mittels des bzw. der Befehlszähler zur synchronen Abarbeitung mehrerer Logikfunktionen ausgebildet ist.
23. Logikeinheit nach Anspruch 22, d a d u r c h g e k e n n z e i c h n e t, dass Mikroprogramme (14, 16) der- art ausgebildet sind, dass die Abarbeitung von Logikfunktionen in einem vorgegebenen Zeitraum erfolgt.
24. Logikeinheit nach Anspruch 22, d a d u r c h g ek e n n z e i c h n e t, dass ein Mikroprogramm (14, 16) derart ausgebildet ist, dass es eine die Zeit zur Abarbeitung von Logikfunktionen betreffende Information aufweist.
25. Logikeinheit nach einem der Ansprüche 19 bis 21, d a d u r c h g e k e n n z e i c h n e t, dass sie zur a- synchronen Abarbeitung von Logikfunktionen ausgebildet ist.
26. Logikeinheit nach einem der vorangehenden Ansprüche, d a d u r c h g e k e n n z e i c h n e t, dass sie eine Tabelle (20) betreffend die Belegung des Logikzellenfelds mit Mikroprogrammen aufweist.
27. Logikeinheit nach Anspruch 26, d a d u r c h g e k e n n z e i c h n e t, dass die Tabelle (20) Informationen zu defekten Logikzellen enthält.
EP02776857A 2001-10-29 2002-10-25 Rekonfigurierbare digitale logikeinheit Withdrawn EP1506496A2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
DE10153349 2001-10-29
DE10153349 2001-10-29
PCT/DE2002/004019 WO2003038644A2 (de) 2001-10-29 2002-10-25 Rekonfigurierbare digitale logikeinheit

Publications (1)

Publication Number Publication Date
EP1506496A2 true EP1506496A2 (de) 2005-02-16

Family

ID=7704099

Family Applications (1)

Application Number Title Priority Date Filing Date
EP02776857A Withdrawn EP1506496A2 (de) 2001-10-29 2002-10-25 Rekonfigurierbare digitale logikeinheit

Country Status (5)

Country Link
US (1) US7225321B2 (de)
EP (1) EP1506496A2 (de)
JP (1) JP3857691B2 (de)
DE (1) DE10249204A1 (de)
WO (1) WO2003038644A2 (de)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102004045527B4 (de) 2003-10-08 2009-12-03 Siemens Ag Konfigurierbare Logikschaltungsanordnung
US7745685B2 (en) * 2005-10-31 2010-06-29 Kimberly-Clark Worldwide, Inc. Absorbent articles with improved odor control
US7847586B2 (en) * 2007-08-20 2010-12-07 Northern Lights Semiconductor Corp. Integrate circuit chip with magnetic devices
WO2009063596A1 (ja) * 2007-11-12 2009-05-22 Panasonic Corporation 再構成可能回路、リセット方法、及び構成情報生成装置

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4870302A (en) 1984-03-12 1989-09-26 Xilinx, Inc. Configurable electrical circuit having configurable logic elements and configurable interconnects
US4791603A (en) 1986-07-18 1988-12-13 Honeywell Inc. Dynamically reconfigurable array logic
GB8906145D0 (en) * 1989-03-17 1989-05-04 Algotronix Ltd Configurable cellular array
US5301344A (en) * 1991-01-29 1994-04-05 Analogic Corporation Multibus sequential processor to perform in parallel a plurality of reconfigurable logic operations on a plurality of data sets
US5794062A (en) 1995-04-17 1998-08-11 Ricoh Company Ltd. System and method for dynamically reconfigurable computing using a processing unit having changeable internal hardware organization
US5712578A (en) * 1995-12-27 1998-01-27 Intel Corporation PLA architecture having improved clock signal to output timing using a type-I domino and plane
US6173434B1 (en) 1996-04-22 2001-01-09 Brigham Young University Dynamically-configurable digital processor using method for relocating logic array modules
US5828858A (en) * 1996-09-16 1998-10-27 Virginia Tech Intellectual Properties, Inc. Worm-hole run-time reconfigurable processor field programmable gate array (FPGA)
US5805477A (en) 1996-09-26 1998-09-08 Hewlett-Packard Company Arithmetic cell for field programmable devices
US6047115A (en) * 1997-05-29 2000-04-04 Xilinx, Inc. Method for configuring FPGA memory planes for virtual hardware computation
TW440835B (en) 1998-09-30 2001-06-16 Siemens Ag Magnetoresistive memory with raised interference security
EP1073951A1 (de) * 1999-02-15 2001-02-07 Koninklijke Philips Electronics N.V. Datenprozessor mit konfigurierbarer funktionseinheit und verfahren zu dessen anwendung
US6507214B1 (en) * 2000-10-26 2003-01-14 Cypress Semiconductor Corporation Digital configurable macro architecture
US6779168B2 (en) * 2002-02-01 2004-08-17 Lsi Logic Corporation Magnetoresistive memory for a complex programmable logic device

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
See references of WO03038644A2 *

Also Published As

Publication number Publication date
WO2003038644A2 (de) 2003-05-08
WO2003038644A3 (de) 2004-12-23
JP2005510901A (ja) 2005-04-21
JP3857691B2 (ja) 2006-12-13
DE10249204A1 (de) 2003-05-28
US20040250052A1 (en) 2004-12-09
US7225321B2 (en) 2007-05-29

Similar Documents

Publication Publication Date Title
DE69827589T2 (de) Konfigurierbare Verarbeitungsanordnung und Verfahren zur Benutzung dieser Anordnung, um eine Zentraleinheit aufzubauen
DE4417575C2 (de) Verbesserte Array-Architektur für programmierbare logische Zellen
DE68927907T2 (de) Einchipmikrorechner
DE69520665T2 (de) Anordnung von nichtflüchtigen EEPROM,insbesondere Flash-EEPROM
DE69430320T2 (de) Anwendungsspezifische module in einem programmierbaren logikbaustein
DE69330974T2 (de) Unterbrechungsfreies wahlfreies Zugriffspeichersystem
WO2004038599A1 (de) Rekonfigurierbare sequenzerstruktur
DE69032342T2 (de) Mikroprozessor und Verfahren zur Aufstellung seiner Peripheriefunktionen
WO2004021176A2 (de) Verfahren und vorrichtung zur datenverarbeitung
WO1998029952A1 (de) VERFAHREN ZUM SELBSTÄNDIGEN DYNAMISCHEN UMLADEN VON DATENFLUSSPROZESSOREN (DFPs) SOWIE BAUSTEINEN MIT ZWEI- ODER MEHRDIMENSIONALEN PROGRAMMIERBAREN ZELLSTRUKTUREN (FPGAs, DPGAs, o.dgl.)
DE2907181A1 (de) Befehlssatz-modifizierregister fuer einen datenprozessor
DE102004045527B4 (de) Konfigurierbare Logikschaltungsanordnung
DE102005005073B4 (de) Rechnereinrichtung mit rekonfigurierbarer Architektur zur parallelen Berechnung beliebiger Algorithmen
WO2004079564A2 (de) Prozessor mit verschiedenartigen steuerwerken für gemeinsam genutzte ressourcen
EP1506496A2 (de) Rekonfigurierbare digitale logikeinheit
EP1449083B1 (de) Verfahren zum debuggen rekonfigurierbarer architekturen
WO2000017772A2 (de) Konfigurierbarer hardware-block
DE69417809T2 (de) Emulationssystem für Mikrorechner
DE10347975B4 (de) Einrichtung der programmierbaren Logik
EP1789889A1 (de) Rechnereinrichtung mit rekonfigurierbarer architektur zur aufnahme eines globalen zellularen automaten
DE69733251T2 (de) Datenverarbeitungssystem zur dynamischen Verwendung von Betriebsmitteln
DE102021204651A1 (de) Vorrichtung und Verfahren basierend auf memristiven Domino-Verarbeitungseinheit-basierten Computerparadigmen
EP1116127B1 (de) Programmgesteuerte einheit
EP0269811A2 (de) In integrierter Technik hergestellter Baustein zur Erstellung integrierter Schaltungen
DE102017200460A1 (de) Recheneinheit und Betriebsverfahren hierfür

Legal Events

Date Code Title Description
PUAI Public reference made under article 153(3) epc to a published international application that has entered the european phase

Free format text: ORIGINAL CODE: 0009012

17P Request for examination filed

Effective date: 20040408

AK Designated contracting states

Kind code of ref document: A2

Designated state(s): DE FR GB

R17D Deferred search report published (corrected)

Effective date: 20041223

RAP1 Party data changed (applicant data changed or rights of an application transferred)

Owner name: SIEMENS AKTIENGESELLSCHAFT

RAP1 Party data changed (applicant data changed or rights of an application transferred)

Owner name: SIEMENS AKTIENGESELLSCHAFT

17Q First examination report despatched

Effective date: 20161116

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: THE APPLICATION IS DEEMED TO BE WITHDRAWN

18D Application deemed to be withdrawn

Effective date: 20170328