DE69233361T2 - Ein-Chip-Mikrocomputer - Google Patents

Ein-Chip-Mikrocomputer Download PDF

Info

Publication number
DE69233361T2
DE69233361T2 DE69233361T DE69233361T DE69233361T2 DE 69233361 T2 DE69233361 T2 DE 69233361T2 DE 69233361 T DE69233361 T DE 69233361T DE 69233361 T DE69233361 T DE 69233361T DE 69233361 T2 DE69233361 T2 DE 69233361T2
Authority
DE
Germany
Prior art keywords
register
bit
bits
instruction
code
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.)
Expired - Lifetime
Application number
DE69233361T
Other languages
English (en)
Other versions
DE69233361D1 (de
Inventor
Shumpei Kawasaki
Eiji Sakakibara
Kaoru Koganei-shi Fukada
Takanaga Tama-shi Yamazaki
Yasushi Kokubunji-shi Akao
Shiro Kokubunji-shi Baba
Toshimasa Tachikawa-shi Kihara
Keiichi Tokorozawa-shi Kurakazu
Takashi Kodaira-shi Tsukamoto
Shigeki Kodaira-shi Masumura
Yasuhiro Kodaira-shi Tawara
Yugo Koganei-shi Kashiwagi
Shuya Akiruno-shi Fujita
Katsuhiko Kokobunji-shi Ishida
Noriko Sawa
Yoichi Asano
Hideaki Tokorozawa-shi Chaki
Tadahiko Kodaira-shi Sugawara
Masahiro Kokubunji-shi Kainaga
Kouki Yokohama-shi Noguchi
Mitsuru Naka-gun Watabe
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.)
Hitachi Ltd
Hitachi Solutions Technology Ltd
Original Assignee
Hitachi Ltd
Hitachi ULSI Systems Co Ltd
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
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=26482784&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=DE69233361(T2) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by Hitachi Ltd, Hitachi ULSI Systems Co Ltd filed Critical Hitachi Ltd
Application granted granted Critical
Publication of DE69233361D1 publication Critical patent/DE69233361D1/de
Publication of DE69233361T2 publication Critical patent/DE69233361T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/535Dividing only
    • 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/22Microcontrol or microprogram arrangements
    • G06F9/28Enhancement of operational speed, e.g. by using several microcontrol devices operating in parallel
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • 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
    • 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/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • 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/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30112Register structure comprising data of variable length
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/3013Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30149Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30163Decoding the operand specifier, e.g. specifier format with implied specifier, e.g. top of stack
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • 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
    • 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
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/324Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address using program counter relative addressing
    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/355Indexed addressing
    • G06F9/3557Indexed addressing using program counter as base address
    • 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/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3802Instruction prefetching
    • 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/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3814Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
    • 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/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • 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/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • 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/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • G06F9/38585Result writeback, i.e. updating the architectural state or memory with result invalidation, e.g. nullification
    • 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/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/535Indexing scheme relating to groups G06F7/535 - G06F7/5375
    • G06F2207/5352Non-restoring division not covered by G06F7/5375

Description

  • HINTERGRUND DER ERFINDUNG
  • Die Erfindung betrifft eine Mikrocomputer-Architektur, spezieller einen Mikrocomputer vom RISC(Reduced Instruction Set Computer)-Typ, und spezieller betrifft sie eine Technologie, die dann effektiv wirkt, wenn sie bei einem Mikrocomputer angewandt wird, der mit einer Vorrichtung zu seiner Steuerung als Baustein zusammengefasst wird.
  • Darüber hinaus betrifft die Erfindung eine Schaltung für codierte Division, wie eine Dividierschaltung für eine codierte Binärzahl beliebiger Länge mit mehrfacher Genauigkeit, und spezieller eine Technologie, die dann effektiv wirkt, wenn sie beim Dividierschritt eines Mikrocomputers vom RISC-Typ angewandt wird.
  • Der schwerwiegendste Engpass zum Verringern der Anzahl von Maschinenzyklen, die dazu erforderlich sind, einen Befehl auszuführen, ist bekanntlicherweise das Decodieren des Befehls. Um dieses Decodieren zu beschleunigen, ist es als wirksam bekannt, ein Befehlsformat mit fester Länge zu verwenden, damit die Grenze des Befehls mitgeteilt werden kann, bevor ein voriger Befehl interpretiert wurde. Bei einem sogenannten "RISC-Computer" werden die meisten Befehle dadurch in einem Zyklus ausgeführt, dass ein Befehlsformat mit fester Länge und eine Pipeline für mehrere Schritte verwendet werden. Ein herkömmlicher RISC-Computer verwendet ohne Ausnahme ein 32-Bit-Befehlsformat. Dieses Befehlsformat mit einer festen Länge von 32 Bits ist dahingehend von Vorteil, dass ohne Decodieren des Operationscodes dadurch bestimmt werden kann, welches Register zu lesen ist, dass in den Befehlsformaten Felder für ein Quellregister und ein Zielregister festgelegt werden, und dadurch, dass keine Ausrichtung erforderlich ist, wenn ein unmittelbarer Wert decodiert wird. Demgegenüber benötigt ein Befehlsformat mit einer festen Länge von 32 Bits unabhängig davon, wie einfach der Inhalt eines Befehls beschrieben werden kann, 32 Bits. Im Ergebnis ist die Anzahl der durch den Befehlscode belegten Bits erhöht, was zum Problem führt, dass der durch ein Programm zu belegende Anteil des Speicherbereichs entsprechend erhöht ist. Wenn der durch das Programm belegte Speicherbereich erhöht ist, muss ein Speicher mit größerem Speichervermögen eingebaut werden, was die Kosten des Mikrocomputersystems erhöht, was es erschwert, ein System mit hervorragendem Kosten/Nutzen-Verhältnis zu schaffen. Da ein RISC-Prozessor eine Architektur zum Beschleunigen der Ausführung von Befehlen durch Verringern der Anzahl von Befehlen hat, entsteht eine Tendenz dahingehend, dass für den Befehlssatz die nicht definierten Operationscodes stärker zunehmen. Eine Anzahl undefinierter Operationscodes beeinträchtigt die Codeeffizienz des Objektprogramms und beeinträchtigt den Speichernutzungsgrad am schlimmsten.
  • Es wurde ein Konzept hinsichtlich der Datenwortlänge vorgeschlagen. In diesem Fall haben wir jedoch herausgefunden, dass verschiedene Probleme dadurch gelöst werden müssen, dass ein Befehlsformat fester Länge mit kleinerer Bitanzahl als der Datenwortlänge verwendet wird. Z.B. müssen neue Maßnahmen zur Datenverarbeitung für den Fall untersucht werden, bei dem unmittelbare Daten mit einer Bitanzahl entsprechend der Datenwortlänge benötigt werden oder zur Art zum Zuweisen einer Verzweigungszieladresse wie einer Absolutadresse hinsichtlich des vergrößerten Programms oder der Systemstruktur. Andererseits gelang es der oben genannten Anmeldung nicht, irgendeine Beziehung zweiter Potenz zwischen der Datenwortlänge und der Anweisungswortlänge zu berücksichtigen. Demgemäß gelang es der Anmeldung nicht, eine derartige Fehlausrichtung sicher zu verhindern, bei der eine Anweisung über eine Wortgrenze des Speichers hinweg vorhanden ist, wobei neue Punkte wie die Nutzungseffizienz des Speichers, eine Vereinfachung des Softwareprogramms oder die Verarbeitungsrate ungeprüft blieben.
  • Als Unterteilungstechnologie, wie sie in einem Mikrocomputer oder dergleichen auszuführen ist, ist andererseits ein Unterteilungsverfahren gut bekannt, bei dem die Codes des Quotienten und des Rests aus dem Code eines Dividenden und dem Codes eines Divisors bestimmt werden, um die Division mit dem Absolutwert des Dividenden mittels eines Verfahrens mit rückzugewinnendem oder rückgewonnenem Wert auszuführen, bis die Codes des Quotienten und des Rests schließlich korrigiert sind. In den letzten Jahren wurden mehrere Schaltungen mit codierter Division und Verfahren zum Ausführen von Divisionen im codierten Zustand ohne Verwendung der Absolutwerte des Dividenden und des Divisors offenbart. Wenn die Division mit dem codierten Dividenden und Divisor auszuführen ist, verwendet jedes Verfahren grundlegend die folgenden Prozeduren. Genauer gesagt, wird dann, wenn der Code des Dividenden oder des Teilrests und der Code des Divisors gleich sind, das Ergebnis der Subtraktion des Divisors vom Dividenden oder des Teilrests als neuer Teilrest verwendet. Wenn dagegen der Code des Dividenden oder des Teilrests und der Code des Divisors verschieden sind, wird das Ergebnis einer Addition des Divisors zum Dividenden oder zum Teilrest als neuer Teilrest verwendet. Demgemäß wird der Quotient dadurch bestimmt, dass die Subtraktionen oder Additionen sequenziell wiederholt werden. Dabei kann dann, wenn der Dividend positiv ist oder er nicht im Divisor enthalten ist, eine korrekte Antwort dadurch erzielt werden, dass einige Quotienten-oder Restkorrekturen auf Grundlage dieser Prozeduren ausgeführt werden. Wenn jedoch der Dividend negativ ist und er im Divisor enthalten ist, ist der so bestimmte Quotient um den Wert "1" mit einer LSB-Gewichtung zum kleineren Absolutwert hin kleiner als der korrigierte Quotient. Dieser Fehler wird dadurch verursacht, dass der Code des Teilrests als korrekt angesehen wird, wenn eine negativer Dividend vorliegt, oder dass der Teilrest der oben genannten Addition oder Subtraktion unterzogen wird, so dass er den Wert null annimmt.
  • Um diesen Fehler zu beseitigen, wurden mehrere Dividierschaltungen entwickelt, die mit Einrichtungen zum Erkennen, dass der Teilrest null ist, um den Quotienten zu korrigieren, versehen sind. In JP-A-2165320 ist z.B. eine Technik offenbart, gemäß der die Einrichtung für eine nicht rückgewinnbare Division mit einem Register versehen ist, das dann gesetzt wird, wenn das Arithmetikergebnis (d.h. der Teilrest) in jeder Zeile null ist, und das rückgesetzt wird, wenn der Wert 1 in das geringstsignifikante Bit in jeder Zeile des Dividenden gelangt, so dass der Quotient und der Rest unter Verwendung des Ergebnisses des Registers korrigiert werden. Gemäß dieser Offenbarung wird eine korrekte, codierte Division dadurch realisiert, dass der Fall erkannt und korrigiert wird, in dem der Teilrest null ist, wozu das oben genannte Setz- und Rücksetzregister verwendet wird. In JP-A-2171828 ist andererseits eine andere Technik zum Verhindern der Ausgabe eines fehlerhaften Quotientenbits für den Fall eines negativen Dividenden offenbart, wobei in jedem Schritt der Ermittlung des Quotientenbits erfasst wird, ob der Teilrest null ist oder nicht. In JP-A-59160235 ist darüber hinaus eine Technik offenbart, die mit Hardware zum Erkennen des Falls versehen ist, bei dem der Teilrest null ist, so dass das höchstsignifikante Bit des Teilrests als 1 angesehen werden kann, wenn der Dividend negativ ist und der Teilrest im Verlauf der Division null wird.
  • Demgemäß wird beim Stand der Technik zur Division mit dem codierten Dividenden und die Divisor das Quotientenbit dadurch korrigiert, dass erkannt wird, dass der Teilrest null ist. Gemäß dieser Technik muss jedesmal beim Ermitteln des Teilrests erkannt werden, ob er null ist oder nicht, und diese Entscheidungen müssen n mal ausgeführt werden, wenn der Divisor über n Bits verfügt. Darüber hinaus wird nicht ermittelt, ob der Teilrest null ist oder nicht, bevor nicht alle Bits untersucht sind. Daher ist eine Spezialhardware erforderlich, wenn die Entscheidung zu beschleunigen ist.
  • US-A-4,868,784 offenbart einen Mikrocomputer mit dem im Oberbegriff des Anspruchs 1 enthaltenen Merkmalen. Der bekannte Mikrocomputer nutzt einen komplexen Befehlssatz, und er ist nicht vom RISC-Typ.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Es ist eine Aufgabe der Erfindung, die verschiedenen Probleme zu überwinden, wie sie mit der Verwendung eines Befehlsformats mit fester Länge mit kleinerer Bitanzahl als einer Datenwortlänge einhergehen. Eine speziellere Aufgabe der Erfindung ist es, einen Mikrocomputer zu schaffen, der einem oder mehreren der aus den folgenden Punkten ausgewählten Punkten genügen kann: es besteht selbst dann, wenn die Bitanzahl des Befehlsformats fester Länge kleiner als die einer Datenwortlänge ist, keine Einschränkung, und zwar weder hinsichtlich der Verwendung unmittelbarer Daten noch hinsichtlich der Zuweisung einer Absolutadresse; eine Beschreibung, wie eine erforderliche Verschiebung, kann im Befehlsformat fester Länge mit begrenzter Bitanzahl ausgeführt werden; es wird dazu beigetragen, ein Fehlausrichtung der Programmanordnung in einem Speicher zu verhindern; außerdem ist die Codeeffizienz oder der Speichernutzungsgrad, gesehen vom Standpunkt des Inhalts eines Unterstützungsbefehls aus, verbessert.
  • Die vorstehenden sowie andere Aufgaben und neuartige Merkmale der Erfindung werden aus der folgenden Beschreibung, die unter Bezugnahme auf die beigefügten Zeichnungen erfolgen soll, ersichtlich werden.
  • Repräsentative Punkte der hier zu offenbarenden Erfindung werden nachfolgend kurz zusammengefasst.
    • (1) Bei einem Mikrocomputer unter Verwendung eines Universalregister-Verfahrens wird ein Befehlsformat fester Länge verwendet, das über eine kleinere Bitanzahl verfügt, als sie der Maximallänge eines der Befehlsausführungseinrichtung zugeführten Datenworts entspricht.
    • (2) Damit die für das Befehlsformat fester Länge vorgegebene Bitanzahl eine Fehlausrichtung eines Programms in einem Speicher verhindern kann, können das Befehlsformat fester Länge und die maximale Datenwortlänge auf eine Bitanzahl eingestellt werden, die eine Potenz von 2 ist. Wenn die maximale Datenwortlänge z. B. 32 Bits beträgt, wird das Befehlsformat auf 16 Bits festgelegt.
    • (3) Wenn zwischen der maximalen Datenwortlänge und der Bitanzahl des Befehlsformats die oben genannte Beziehung gilt, können mehrere Befehle in einem gemeinsamen Zyklus vorab abgerufen werden, um die Befehle dadurch wirkungsvoll abzurufen, dass ein interner Bus mit einer Bitanzahl verwendet wird, die der der maximalen Datenwortlänge entspricht oder die Buszugriffsanzahl für den Befehlszugriff verringert wird.
    • (4) Wenn der interne Bus für die Datenübertragung und den Befehlsabruf gemeinsam genutzt wird, kann eine Pipelinesteuerung zum Bevorzugen des Datenabrufs ausgeführt werden, um dadurch den Gesamtzeitplan für die Befehlsausführung einschließlich eines Befehlsabrufs, der mit einem Datenabruf in Konflikt steht, zu verzögern, um entweder eine Verarbeitung zu vereinfachen, wenn ein Datenabruf und ein Befehlsabruf in Konflikt stehen, oder um eine durch den ersteren hervorgerufene Nachverarbeitung zu vereinfachen.
    • (5) Um den Zustand einfach zu meistern, bei dem die Universalregister auf Befehle vor und nach einer Pipelineausführung verwendet werden, kann eine Pipelinesteuerung ausgeführt werden, da das Universalregister-Verfahren verwendet wird, in dem der Zustand erfasst wird, für den hinsichtlich der Verwendung der Universalregister auf die mehreren Befehle hin, wie sie auf Pipelineweise auszuführen sind, ein Konflikt besteht, was auf Grundlage der Information eines im Befehlsformat enthaltenen Registerzuweisungsbereichs erfolgt, um dadurch die Ausführung eines Befehls nach dem Registerkonfliktzustand auf Grundlage des erkannten Registerkonfliktzustands und der Ausführungszyklusanzahl des bevorzugt auszuführenden Befehls zu verzögern.
    • (6) Damit die Einschränkung hinsichtlich der Bitanzahl des Befehlsformats fester Länge die Verwendung unmittelbarer Daten nicht begrenzt, ist es ratsam, einen Befehl zu unterstützen, der eine Beschreibung zum Zuweisen der unmittelbaren Daten in einer Datenbeziehung zum Versetzen des Werts einer Verschiebung relativ zum Wert eines vorbestimmten Registers enthält.
    • (7) Selbst wenn das Befehlsformat fester Länge eine eingeschränkte Bitanzahl aufweist, kann die für die Datenverarbeitung erforderliche Verschiebung oder die Bitanzahl der unmittelbaren Daten maximiert werden, um einen Befehl zum impliziten Zuweisen eines vorbestimmten Universalregisters zu unterstützen, wobei es sich trotz fehlendem Registerzuweisungsfeld im Befehl um einen Operanden handelt.
    • (8) Selbst wenn das Befehlsformat fester Länge eine eingeschränkte Bitanzahl aufweist, kann, in ähnlicher Weise, die für die Verarbeitung erforder liche Verschiebung oder die Bitanzahl der unmittelbaren Daten maximiert werden, um einen Befehl zu unterstützen, der eine Beschreibung enthält, die dazu dient, ein wahres oder falsches Arithmetikergebnis für eine spezifizierte Bedingung auf ein vorbestimmtes Statusflag hin widerzuspiegeln.
    • (9) Ein geeignetes Verzweigungsziel, das die Verschiebungslänge zuweist, wird entsprechend den Arten von Verzweigungsbefehlen fest zugewiesen. Bei einem Befehlsformat mit einer festen Länge von 16 Bits wird die Verschiebung eines bedingten Verzweigungsbefehls auf 8 Bits festgelegt, und die Verschiebungen eines Unterroutine-Verzweigungsbefehls und eines Befehls für unbedingte Verzweigung werden auf 12 Bits festgelegt.
    • (10) Wenn ein Dividend bei einer codierten Division negativ ist, wird eine vorläufige Verarbeitung dadurch ausgeführt, dass der Wert "1" mit der Gewichtung des LSB des Dividenden vom Dividenden abgezogen wird. Dieser Dividend ist eine ganze Zahl, wenn seine LSB-Gewichtung 1 ist. Wenn der Dividend eine Festkommazahl ist, entsteht selbst dann kein wesentlicher Einfluss, wenn die Division dadurch ausgeführt wird, dass angenommen wird, er sei eine ganze Zahl. Dies, da das Komma später eingestellt werden kann. Demgemäß tritt selbst dann kein wesentlicher Schaden auf, wenn die Zwischenrechnungen ausgeführt werden, während der Dividend als ganze Zahl angesehen wird, in dem davon ausgegangen wird, dass das Gewicht des LSB des Dividenden 1 ist. In der folgenden Beschreibung wird der Dividend als ganze Zahl angesehen, solange nichts anderes speziell angegeben ist.
    • (11) Es ist zu beachten, dass das Codebit für einen negativen Dividenden 1 ist, während es für einen positiven Dividenden oder einen solchen vom Wert null 0 ist, wobei eine Subtraktion, bei der ein Codebit (z.B. das MSB) vom Dividenden subtrahiert wird, eine Subtraktion von 1 von einem negativen Dividenden ist. Diese Berechnung kann als Transformation einer negativen ganzen Zahl gemäß einem 2-er-Komplement-Ausdruck in einen 1-er-Komplement-Ausdruck angesehen werden. Auf diese Weise kann die Vorverarbeitung des Dividenden ohne Berücksichtigung, ob er positiv oder negativ ist, ausgeführt werden. Die 35 zeigt einen Transformationszustand, in dem z.B. die Zahl 1 von einer negativen ganzen Zahl mit vier Bits abgezogen wird. Da ein zusätzliches Bit dazu erforderlich ist, den Minimalwert eines 2-er-Komplements einer endlichen Bitanzahl in ein 1-er-Komplement zu transformieren, wird, falls erforderlich, eine Erweiterung um 1 Bit ausgeführt. Da ein Teilrest positiv sein kann, wird die oben genannte Transformation für eine negative ganze Zahl über alle ganze Zahlen erstreckt, um einen neuen ganzzahligen Ausdruck einzuführen. Z.B. wird ein in der 36 dargestellter Ausdruck innerhalb eines Bereichs codierter ganzer Zahlen von 4 Bits verwendet. Wenn eine beliebige ganze Zahl durch eine Zahl ZZ ausgedrückt wird, die durch Subtrahieren von 1 von dieser ganzen Zahl berechnet wird, kann der Ausdruck von ZZ, der durch Subtrahieren von 1 von einer ganzen Zahl unter Verwendung eines 2-er-Komplements transformiert wurde, einem 1-er-Komplement bei einer ganzen Zahl nicht größer als 0 entsprechend angesehen werden, und er kann durch eine Zahl, die um 1 kleiner als der inhärente Wert ist, mit einer ganzen Zahl nicht kleiner als null ausgedrückt werden. Dabei hat das Codebit 0 wie bei einer negativen Zahl den Wert 1.
    • (12) Um den Quotienten und den Teilrest (oder den Rest) in der Prozedur der codierten Division aufrecht zu erhalten, können der Quotient (oder das Quotientenbit) und der Rest (oder der Teilrest) in einer einzelnen Speichereinrichtung wie einem Register zwischengespeichert werden, damit die Anzahl der Verarbeitungsschritte zum Transformieren des Quotientenbits oder des Teilrests, wie sie zu berechnen sind oder für die Berechnungen für das Register oder dergleichen zu verwenden sind, verringert werden kann.
    • (1) Durch die vorstehend beschriebenen Maßnahmen ermöglicht es die Verwendung eines Befehlsformats mit einer festen Länge von 16 Bits für eine Datenwortlänge von 32 Bits, die Entscheidung, wo eine Befehlsgrenze liegt, zu treffen, bevor der vorige Befehl abgeschlossen ist, wie bei einer bekannten RISC-Maschine mit einem Befehlsformat mit einer festen Länge von 32 Bits, und zwar dahingehend, dass das Befehlsformat feste Länge aufweist, wodurch für einen Vorteil, wie eine Vereinfachung der Befehlsdecodierung, gesorgt ist.
    • (2) Der Programmumfang ist kleiner als dann, wenn ein Befehlsformat mit einer festen Länge von 32 Bits verwendet wird. Genauer gesagt, steht bei einer RISC-Architektur zum Beschleunigen der Ausführung von Befehlen durch Verringern der Arten derselben die Tendenz, dass sich im Befehlssatz viele undefinierte Operationscodes befinden. Wenn die Befehlslänge dabei gegenüber der im Stand der Technik halbiert wird, wird der Nutzungswirkungsgrad des Programmspeichers verbessert.
    • (3) Die verschiedenen Probleme, wie sie der Verwendung eines Befehlsformats fester Länge mit kleinerer Bitanzahl als der der Datenwortlänge innewohnen, sind durch die folgenden Tatsachen gelöst: Weder die Verwendung unmittelbarer Daten noch die Zuweisung einer Absolutadresse sind eingeschränkt, und zwar auch dann nicht, wenn die Bitanzahl des Befehlsformats fester Länge kleiner als die der Datenwortlänge ist; eine Beschreibung, wie eine erforderliche Verschiebung, kann in einem Befehlsformat mit fester Länge mit begrenzter Bitanzahl ausgeführt werden; es ist ein Beitrag dazu geleistet, eine Fehlausrichtung der Programmanordnung in einem Speicher zu verhindern; und die Codeeffizienz oder der Speichernutzungsgrad ist hinsichtlich des Inhalts eines Unterstützungsbefehls stärker verbessert.
    • (4) Gemäß der Einrichtung zur oben genannten codierten Division wird der Quotient wie folgt bestimmt: Subtrahieren des Werts 1 mit der Gewichtung des LSB eines Dividenden vom Dividenden, wenn dieser negativ ist; Vorhersagen des Codes eines Quotienten; Addieren und Subtrahieren eines Divisors zum Dividenden oder zum Teilrest bzw. von diesem, während dies abhängt, ob die Exklusiv-ODER-Verknüpfung zwischen dem Code des Dividenden oder dem Teilrest und dem Code des Divisors den Wert 0 oder 1 hat, um das Quotientenbit durch die Exklusiv-ODER-Verknüpfung zwischen dem Code des Quotients und dem Code des Divisors zu veranschaulichen; und Korrigieren des Quotienten des 1-er-Komplements in ein 2-er-Komplement, wenn der Quotient negativ ist.
    • (5) Wenn der oben genannte Dividend negativ ist, entspricht die Subtraktion des Werts 1 mit der Gewichtung des LSB des Dividenden vom Dividenden der Vorverarbeitung zum Ausdrücken des Werts 0, so dass alle Bits und die Codebits durch 1 ausgedrückt werden. Diese Vorverarbeitung erübrigt es, zu erfassen, dass der Teilrest 0 ist, wenn der Dividend negativ ist. Im Ergebnis können die Divisionen einschließlich der Überlaufprüfung oder der Korrektur des Rests auf Grundlage von Information wie des Codebits des ersten Dividenden, des Codebits des Teilrests, des Codebits des Divisors und des Codebits des Quotienten kontrolliert werden. Dies kann die Hardware und die Software für die Divisionen vereinfachen und die Anwendung auf codierte Divisionen beliebiger Länge und beliebiger Genauigkeit beeinflussen. Außerdem kann das Register zum Zwischenspeichern des Teilrests um 1 Bit zur höhersignifikanten Seite verschoben werden, und die Verarbeitung zum Anwenden einer Maßnahme für eine Verschiebung im Quotientenbit kann beschleunigt werden.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • 1 ist ein Blockdiagramm, das ein Beispiel eines Systems zeigt, das einen Mikrocomputer MCU gemäß einer Ausführungsform der Erfindung verwendet;
  • 2 ist ein Blockdiagramm, das einen Mikrocomputer gemäß einer Ausführungsform der Erfindung zeigt;
  • 3 ist ein Diagramm zum schematischen Erläutern einer Stiftanordnung für ein Mikrocomputergehäuse gemäß der vorliegenden Ausführungsform;
  • 4 ist ein erläuterndes Diagramm, das ein Beispiel für die Beziehung der Datenwortlänge und der Befehlswortlänge zur Busbreite beim Mikrocomputer gemäß der vorliegenden Ausführungsform zeigt;
  • 5 ist ein Blockdiagramm, das ein Beispiel eines internen Blocks einer zentralen Verarbeitungseinheit zeigt, insbesondere deren Befehlssteuerungssystem im Mikrocomputer der vorliegenden Ausführungsform;
  • 6 ist ein Blockdiagramm, das die Struktur einer Hälfte einer Ausführungseinheit der zentralen Verarbeitungseinheit zeigt;
  • 7 ist ein Blockdiagramm, das die Struktur der anderen Hälfte der Ausführungseinheit der zentralen Verarbeitungseinheit zeigt;
  • 8 ist ein Diagramm zum Erläutern eines Beispiels einer Stufe einer Pipelineverarbeitung durch die zentrale Verarbeitungseinheit;
  • 9 ist ein Diagramm zum Erläutern eines Beispiels einer Pipelinesequenz in einem Registerkonfliktzustand;
  • 10 ist ein Diagramm zum Erläutern eines anderen Beispiels einer Pipelinesequenz in einem Registerkonfliktzustand;
  • 11 ist ein Diagramm zum Erläutern eines Beispiels einer Pipeline-Steuerungssequenz im Fall eines Konflikts zwischen einem Datenabruf und einem Befehlsabruf;
  • 12 ist ein Operationstiming-Diagramm, das ein Beispiel für den Fall zeigt, dass mehrere Zyklusbefehle ausgeführt werden;
  • 13 ist ein erläuterndes Diagramm, das eine Tabelle einer Hälfte von Datenübertragungsbefehlen zeigt, die im Mikrocomputer der vorliegenden Ausführungsform auszuführen sind;
  • 14 ist ein erläuterndes Diagramm, das eine Tabelle mit der restlichen Hälfte von Datenübertragungsbefehlen zeigt, die im Mikrocomputer der vorliegenden Ausführungsform auszuführen sind;
  • 15 ist ein erläuterndes Diagramm, das eine Tabelle von Logikoperationsbefehlen zeigt, die vom Mikrocomputer der vorliegenden Ausführungsform auszuführen sind;
  • 16 ist ein erläuterndes Diagramm, das eine Tabelle einer Hälfte von Arithmetikoperationsbefehlen zeigt, die vom Mikrocomputer der vorliegenden Ausführungsform auszuführen sind;
  • 17 ist ein erläuterndes Diagramm, das eine Tabelle der restlichen Hälfte von Arithmetikoperationsbefehlen zeigt, die vom Mikrocomputer der vorliegenden Ausführungsform auszuführen sind;
  • 18 ist ein erläuterndes Diagramm, das eine Tabelle von Befehlen zeigt, die vom Mikrocomputer der vorliegenden Ausführungsform auszuführen sind;
  • 19 ist ein erläuterndes Diagramm, das eine Tabelle von Verzweigungsbefehlen zeigt, die vom Mikrocomputer der vorliegenden Ausführungsform auszuführen sind;
  • 20 ist ein erläuterndes Diagramm, das eine Tabelle einer Hälfte von Systemsteuerungsbefehlen zeigt, die vom Mikrocomputer der vorliegenden Ausführungsform auszuführen sind;
  • 21 ist ein erläuterndes Diagramm, das eine Tabelle der restlichen Hälfte von Systemsteuerungsbefehlen zeigt, die vom Mikrocomputer der vorliegenden Ausführungsform auszuführen sind;
  • 22 ist ein Diagramm zum Erläutern von Beschreibungstypen in den 13 bis 21;
  • 23 ist ein erläuterndes Diagramm, das eine Tabelle von Adressiermodi bei den in den 13 bis 21 dargestellten mnemonischen Bestimmungsangaben zeigt;
  • 24 ist ein erläuterndes Diagramm, das ein Beispiel von Beziehungen zwischen den Verschiebungslängen von Verzweigungsbefehlen und der Auftrittshäufigkeit von Befehlen mit den Verschiebungslängen zeigt;
  • 25 ist ein erläuterndes Diagramm, das ein Beispiel für die Beziehungen zwischen den Verschiebungslängen von Befehlen für ein immer zu erfolgendes Verzweigen und der Auftrittshäufigkeit von Befehlen mit den Verschiebungslängen zeigt;
  • 26 ist ein erläuterndes Diagramm, das ein Beispiel für die Beziehungen zwischen den Verschiebungslängen von Unterroutine-Aufrufbefehlen und der Auftrittshäufigkeit von Befehlen mit den Verschiebungslängen zeigt;
  • 27 ist ein erläuterndes Diagramm, das ein Beispiel für die Beziehungen zwischen den Verschiebungslängen von Sprungbefehlen oder Unterroutine-Sprungbefehlen und der Auftrittshäufigkeit von Befehlen mit den Verschiebungslängen zeigt;
  • 28 ist ein Diagramm zum Erläutern der Struktur eines Registers eines Beispiels als Programmiermodell.
  • 29 ist ein schematisches Diagramm, das das Prinzip einer Vorverarbeitung für einen Dividenden bei einer codierten Division gemäß der Erfindung zeigt;
  • 30 ist ein Diagramm zum Erläutern eines Prinzipbeispiels der Codedivisionsverarbeitung im Fall negativ ÷ negativ;
  • 31 ist ein Diagramm zum Erläutern eines Prinzipbeispiels der Codedivisionsverarbeitung im Fall negativ ÷ positiv;
  • 32 ist ein Diagramm zum Erläutern eines Prinzipbeispiels der Codedivisionsverarbeitung im Fall positiv ÷ positiv;
  • 33 ist eine erläuternde Ansicht, die auf allgemeine Form die Gesamtheit der Grundangaben oder Verarbeitungsprozeduren der codierten Division gemäß der Erfindung veranschaulicht;
  • 34(A) ist ein Diagramm zum Erläutern der Art einer Vorkorrektur eines Dividenden, und die 34(B) ist ein Diagramm zum Erläutern einer Vorhersage des Codes eines Quotienten;
  • 35 ist ein Diagramm zum Erläutern eines Beispiels der Vorkorrektur eines negativen Dividenden;
  • 36 ist ein Diagramm zum Erläutern eines Beispiels des Ausdrucks eines Teilrests nach der Vorkorrektur durch Subtrahieren von 1 vom negativen Dividenden;
  • 37(A) ist ein Diagramm zum Erläutern eines Beispiels, wie ein Addier/Subtrahier-Befehl bei der Codedividierprozedur zu entnehmen ist, und die
  • 37(B) ist ein Diagramm zum Erläutern eines Beispiels, wie ein Quotientenbit zum entnehmen ist;
  • 38 ist ein Diagramm zum Erläutern eines Beispiels, wie der Dividend und der Rest zu korrigieren ist;
  • 39 ist ein Diagramm zum Erläutern einer speziellen Verarbeitungsprozedur zur Vorkorrektur und der Divisionsverarbeitung bei einer codierten Division von –8 ÷ –3;
  • 40 ist ein Diagramm zum Erläutern einer speziellen Verarbeitungsprozedur einer Nachverarbeitung als Fortsetzung der Verarbeitung der 39;
  • 41 ist ein Diagramm zum Erläutern einer speziellen Verarbeitungsprozedur zur Vorkorrektur und der Divisionsverarbeitung bei einer codierten Division von –8 ÷ 3;
  • 42 ist ein Diagramm zum Erläutern einer speziellen Verarbeitungsprozedur einer Nachverarbeitung als Fortsetzung der Verarbeitung der 41;
  • 43 ist ein Diagramm zum Erläutern einer speziellen Verarbeitungsprozedur zur Vorkorrektur und der Divisionsverarbeitung bei einer codierten Division von –9 ÷ –3;
  • 44 ist ein Diagramm zum Erläutern einer speziellen Verarbeitungsprozedur einer Nachverarbeitung als Fortsetzung der Verarbeitung der 43;
  • 45 ist ein Diagramm zum Erläutern einer speziellen Verarbeitungsprozedur zur Vorkorrektur und der Divisionsverarbeitung bei einer codierten Division von –9 ÷ 3;
  • 46 ist ein Diagramm zum Erläutern einer speziellen Verarbeitungsprozedur einer Nachverarbeitung als Fortsetzung der Verarbeitung der 45;
  • 47 ist ein Diagramm zum Erläutern einer speziellen Verarbeitungsprozedur zur Vorkorrektur und der Divisionsverarbeitung bei einer codierten Division von 8 ÷ 3;
  • 48 ist ein Diagramm zum Erläutern einer speziellen Verarbeitungsprozedur einer Nachverarbeitung als Fortsetzung der Verarbeitung der 47;
  • 49 ist ein Diagramm zum Erläutern einer speziellen Verarbeitungsprozedur zur Vorkorrektur und der Divisionsverarbeitung bei einer codierten Division von 8 ÷ –3;
  • 50 ist ein Diagramm zum Erläutern einer speziellen Verarbeitungsprozedur einer Nachverarbeitung als Fortsetzung der Verarbeitung der 49;
  • 51 ist ein Blockdiagramm, das eine Ausführungseinheit einer Operationseinheit für codierte Division zeigt;
  • 52 ist ein Logikschaltbild, das ein Beispiel einer Logik-Arithmetikoperationsschaltung, einer Operationsschaltung und einer Operationssteuerschaltung, wie in der 51 dargestellt, zeigt;
  • 53 ist ein detailliertes Diagramm zum Erläutern eines Beispiels einer Anweisungsbeschreibung für codierte Division;
  • 54 ist ein Diagramm zum Erläutern der Operationen der Schaltungen der 51 zum Ausführen der Anweisung EOR RO,R0 in der 53;
  • 55 ist ein Diagramm zum Erläutern der Operationen der Schaltungen der 51 zum Ausführen der Anweisung SL16 R1 in der 53;
  • 56 ist ein Diagramm zum Erläutern der Operationen der Schaltungen der 51 zum Ausführen der Anweisung DIVOS R0,R2 in der 53;
  • 57 ist ein Diagramm zum Erläutern der Operationen der Schaltungen der 51 zum Ausführen der Anweisung MOVT R3 in der 53;
  • 58 ist ein Diagramm zum Erläutern der Operationen der Schaltungen der 51 zum Ausführen der Anweisung SUBC R0,R2 in der 53;
  • 59 ist ein Diagramm zum Erläutern der Operationen der Schaltungen der 51 zum Ausführen der Anweisung DIVOS R1,R2 in der 53;
  • 60 ist ein Diagramm zum Erläutern der Operationen der Schaltungen der 51 zum Ausführen der Anweisung DIV1 R1,R2 in der 53;
  • 61 ist ein Diagramm zum Erläutern der Operationen der Schaltungen der 51 zum Ausführen der Anweisung MOV R2,R4 in der 53;
  • 62 ist ein Diagramm zum Erläutern der Operationen der Schaltungen der 51 zum Ausführen der Anweisung EXTS.W R2,R2 in der 53;
  • 63 ist ein Diagramm zum Erläutern der Operationen der Schaltungen der 51 zum Ausführen der Anweisung ROTCL R2 in der 53;
  • 64 ist ein Diagramm zum Erläutern der Operationen der Schaltungen der 51 zum Ausführen der Anweisung ADDC R0,R2 in der 53;
  • 65 ist ein Diagramm zum Erläutern der Operationen der Schaltungen der 51 zum Ausführen der Anweisung DIVOS R0,R4 in der 53;
  • 66 ist ein Diagramm zum Erläutern der Operationen der Schaltungen der 51 zum Ausführen der Anweisung MOVT R0 in der 53;
  • 67 ist ein Diagramm zum Erläutern der Operationen der Schaltungen der 51 zum Ausführen der Anweisung FOR R3,R0 in der 53;
  • 68 ist ein Diagramm zum Erläutern der Operationen der Schaltungen der 51 zum Ausführen der Anweisung ROTCR R0 in der 53;
  • 69 ist ein Diagramm zum Erläutern der Operationen der Schaltungen der 51 zum Ausführen der Anweisung DIVOS R1,R4 in der 53;
  • 70 ist ein Diagramm zum Erläutern der Operationen der Schaltungen der 51 zum Ausführen der Anweisung FOR RO,ROTCR R4 in der 53;
  • 71 ist ein Diagramm zum Erläutern der Operationen der Schaltungen der 51 zum Ausführen der Anweisung DIV1 R1,R4 in der 53;
  • 72 ist ein Diagramm zum Erläutern der Operationen der Schaltungen der 51 zum Ausführen der Anweisung SR16 R4 in der 53;
  • 73 ist ein Diagramm zum Erläutern der Operationen der Schaltungen der 51 zum Ausführen der Anweisung ADD R3,R4 in der 53;
  • 74 ist ein Diagramm zum Erläutern der Operationen der Schaltungen der 51 zum Ausführen der Anweisung EXTS.W R4,R4 in der 53;
  • 75(A) ist ein Diagramm zum Erläutern des Zustands eines Registers entsprechend den Operationen der 54, 75(B) ist ein Diagramm zum Erläutern des Zustands eines Registers entsprechend den Operationen der 55, und 75(C) ist ein Diagramm zum Erläutern des Zustands eines Registers entsprechend den Operationen der 56;
  • 76(D) ist ein Diagramm zum Erläutern des Zustands eines Registers entsprechend den Operationen der 57, 76(E) ist ein Diagramm zum Erläutern des Zustands eines Registers entsprechend den Operationen der 58, und 76(F) ist ein Diagramm zum Erläutern des Zustands eines Registers entsprechend den Operationen der 59;
  • 77(G) ist ein Diagramm zum Erläutern des Zustands eines Registers entsprechend den Operationen der 60, und 77(H) ist ein Diagramm zum Erläutern des Zustands eines Registers entsprechend den Operationen der 62;
  • 78(I) ist ein Diagramm zum Erläutern des Zustands eines Registers entsprechend den Operationen der 63, 78(J) ist ein Diagramm zum Erläutern des Zustands eines Registers entsprechend den Operationen der 64, und 78(K) ist ein Diagramm zum Erläutern des Zustands eines Registers entsprechend den Operationen der 65;
  • 79(L) ist ein Diagramm zum Erläutern des Zustands eines Registers entsprechend den Operationen der 66, 79(M) ist ein Diagramm zum Erläutern des Zustands eines Registers entsprechend den Operationen der 67, und 79(N) ist ein Diagramm zum Erläutern des Zustands eines Registers entsprechend den Operationen der 68;
  • 80(O) ist ein Diagramm zum Erläutern des Zustands eines Registers entsprechend den Operationen der 69, 80(P) ist ein Diagramm zum Erläutern des Zustands eines Registers entsprechend den Operationen der 70, und 80(Q) ist ein Diagramm zum Erläutern des Zustands eines Registers entsprechend den Operationen der 71;
  • 81(R) ist ein Diagramm zum Erläutern des Zustands eines Registers ent sprechend den Operationen der 72, 81(S) ist ein Diagramm zum Erläutern des Zustands eines Registers entsprechend den Operationen der 73, und 81(T) ist ein Diagramm zum Erläutern des Zustands eines Registers entsprechend den Operationen der 74;
  • 82(A) ist ein Flussdiagramm, das die Gesamtheit einer Codedivisionsverarbeitung zeigt, wie sie in den 54 bis 74 erläutert ist, und die
  • 82(B) ist ein Flussdiagramm, das eine zugehörige Vorverarbeitung zeigt;
  • 83(A) ist ein Flussdiagramm, das die Division 1 der 82 detailliert zeigt, und 83(B) ist ein Flussdiagramm, das die Verarbeitung eines Divisionsschritts zeigt;
  • 84(A) ist ein Flussdiagramm, das die Gesamtheit der Nachverarbeitung der 82 detailliert zeigt, und 84(B) ist ein Flussdiagramm, das die Verarbeitung einer Quotientenkorrektur zeigt;
  • 85(A) ist ein Flussdiagramm, das die erste Restkorrektureinrichtung bei der Nachverarbeitung der 84 detailliert zeigt, und 85(B) ist ein Flussdiagramm, das die Verarbeitung der zweiten Restverarbeitungseinrichtung zeigt;
  • 86 ist ein Diagramm zum Erläutern eines Beispiels einer Anweisungsbeschreibung für eine codierte Division von 8 Bits ÷ 8 Bits;
  • 87 ist ein Diagramm zum Erläutern eines Beispiels einer Anweisungsbeschreibung für eine codierte Division von 64 Bits ÷ 32 Bits;
  • 88 ist ein Diagramm zum Erläutern eines Beispiels einer Anweisungsbeschreibung für eine codierte Division von 32 Bits ÷ 32 Bits;
  • 89 ist ein Diagramm zum Erläutern eines Beispiels einer Anweisungsbeschreibung für eine codierte Division von 16 Bits ÷ 16 Bits;
  • 90 ist ein Diagramm zum Erläutern eines Beispiels einer Anweisungsbeschreibung für eine codierte Division von 16 Bits ÷ 8 Bits; und
  • 91 ist ein Diagramm zum Erläutern eines Beispiels einer Anweisungsbeschreibung für eine codierte Division von 32 Bits ÷ 16 Bits.
  • BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSFORMEN
  • Nachfolgend wird die Erfindung in Zusammenhang mit Ausführungsformen derselben in der Reihenfolge von Gesichtspunkten beschrieben, die grob wie folgt in Einzelpunkte eingeteilt sind: Mikrocomputer, der ein Befehlsformat fester Länge mit einer kleineren Bitanzahl als der der maximalen Datenwortlänge verwendet; und codierte Dividiervorgänge, wie sie von einem derartigen Mikrocomputer auszuführen sind. Der Inhalt des ersteren Gesichtspunkts wird unter Punkten [1] bis [17] beschrieben, während der Inhalt des letzteren Gesichtspunkts unter den Punkten [18] bis [24] beschrieben wird.
  • [1] Anwendungssystem eines Mikrocomputers
  • 1 zeigt ein Beispiel eines Systems, das einen Mikrocomputer MCU gemäß einer Ausführungsform der Erfindung verwendet. Dieser Mikrocomputer MCU ist über einen externen Steuerbus ECB, einen externten Datenbus EDB und einen externen Adressbus EAB mit einem externen Speicher EMRY und einem externen, Benutzer-definierten Eingangs/Ausgangs-Block EI/0 verbunden, und er ist ferner mittels eines Port-Eingangs/Ausgangs-Busses PIOB mit einer externen Einrichtung EEQ verbunden. Diese externe Einrichtung EEQ ist eine vorbestimmte Einrichtung zur Bausteinbildung des Mikrocomputersystems.
  • [2] Blockstruktur des Mikrocomputers
  • 2 zeigt den Mikrocomputer MCU gemäß einer Ausführungsform der Erfindung. Der Mikrocomputer MCU ist, wie es dargestellt ist, durch eine gut bekannte Herstelltechnik für integrierte Halbleiterschaltungen mit einem einzelnen Halbleitersubstrat, wie einem Siliziumsubstrat, aufgebaut. Die in der Figur auftretenden Bezugsbuchstaben CPU kennzeichnen eine zentrale Verarbeitungseinheit zum Steuern des Mikrocomputers MCU in seiner Gesamtheit. Die Buchstaben Port/I/O kennzeichnen einen Eingangs/Ausgangs-Port, der durch die zentrale Verarbeitungseinheit CPU dazu zu verwenden ist, ein Signal aufzunehmen/auszugeben, um eine externe Displayvorrichtung anzusteuern und den Zustand eines externen Schalters zu untersuchen. Die zentrale Verarbeitungseinheit CPU führt Eingabe/Ausgabe-Vorgänge durch Lese/Schreib-Vorgänge hinsichtlich eines einer bestimmten Adresse zugewiesenen Registers aus. Die Buchstaben Port/Cont kennzeichnen einen Port für Eingabe/Ausgabe- Vorgänge betreffend den Datenbus. Die Buchstaben Port/Address kennzeichnen einen Port für Eingabe/Ausgabe-Vorgänge betreffend den Adressbus. Die Buchstaben I/O kennzeichnen eine periphere Vorrichtung auf dem Chip des Mikrocomputers MCU, die eine serielle Kommunikationsschnittstelle, einen Timer usw. enthält. Die Buchstaben DMAC kennzeichnen einen Controller für direkten Speicherzugriff (DMA = direct memory access). Ein ROM (Festwertspeicher) ist ein auf dem Chip aufgebauter Befehlsspeicher, der die Befehle (d. h. die Betriebsprogramme) für die zentrale Verarbeitungseinheit CPU und eine Konstantwerttabelle speichert. Ein RAM (Direktzugriffsspeicher) ist ein auf dem Chip aufgebauter Speicher, der als Arbeitsbereich der zentralen Verarbeitungseinheit CPU oder als Primärspeicherbereich für Daten verwendet wird. Die Buchstaben BSC kennzeichnen einen Buszustandscontroller zum Steuern des Buszugriffs auf das Innere und Äußere des Mikrocomputers MCU. Die Buchstaben CACHE kennzeichnen einen Cachespeicher, d. h. einen Speicher zum Zwischenspeichern eines Befehls, der dadurch vorweg als am häufigsten verwendet bekannt ist, dass das Zugriffsmuster eines Befehls betreffend die zentrale Verarbeitungseinheit CPU erkannt wird, um die Zugriffshäufigkeit auf ein Anwendungsprogramm oder dergleichen von einem externen Speicher mit niedriger Zugriffsrate zu verringern, um dadurch die Verarbeitung zu beschleunigen. Die Buchstaben BURST/REFRESH kennzeichnen eine Burst/Auffrisch-Vorrichtung für eine Burststeuerung bei kontinuierlicher Datenübertragung und eine Auffrischsteuerung für einen dynamischen Direktzugriffsspeicher (DRAM), die für einen Zugriff in einem Hochgeschwindigkeits-Seitenmodus, wenn der DRAM als externer Speicher verwendet wird, und für einen Auffrischvorgang des DRAM verwendet wird. Die Buchstaben edb kennzeichnen einen internen Datenbus, der über einen Port Port/Data mit dem externen Datenbus EDB verbunden ist, und die Buchstaben eab kennzeichnen einen internen Adressbus, der über einen Port Port/Add mit dem externen Adressbus EAB verbunden ist. Diese zwei internen Busse sind nicht mit der zentralen Verarbeitungseinheit CPU verbunden. Andererseits kennzeichnen die Buchstaben IDB31-0 interne Datenbusse von 32 Bits, und IAB23-0 kennzeichnen interne Adressbusse von 24 Bits. Diese zwei internen Busse sind mit der zentralen Verarbeitungseinheit CPU verbunden.
  • Diese zentrale Verarbeitungseinheit CPU erhält vom Befehlsspeicher ROM oder vom Cachespeicher CACHE einen Befehl, damit die vom Datenspeicher RAM oder vom externen Speicher EMRY ausgegebenen Daten einer vorbestimmten Verarbeitung entsprechend dem angegebenen Befehl unterzogen werden.
  • [3] Stiftanordnung des Mikrocomputer-Bausteins
  • 3 zeigt schematisch eine Stiftanordnung des Bausteins des oben genannten Mikrocomputers MCU. In derselben Figur veranschaulichen frei laufende Timer FRT0 und FRT1 einen Analog/Digital-Wandler A/D, einen Digital/Analog-Wandler D/A und serielle Kommunikationsschnittstellen SCI0 und SCI1 beispielhaft die Peripherieschaltung I/O der 2, und in 3 dargestellte entsprechende Ports PORT 1 bis PORT 4 sind Eingabe/Ausgabe-Ports, die den einzelnen Peripherievorrichtungen und demgemäß dem Port Port/I/O der 2 entsprechen. Der Mikrocomputer MCU ist in ein QFP-Gehäuse mit 112 Stiften eingesetzt. Adressbusse (A0-23) von 24 Bits sind dem oben genannten Adressbus EAB verbunden, und Datenbusse (D0-31) von 32 Bits sind mit dem oben genannten Datenbus EDB verbunden. Diese Busse A0-23 und D0-31 werden dann verwendet, wenn die zentrale Verarbeitungseinheit CPU, der Controller DMAC für direkten Speicherzugriff oder der Burst/Auffrisch-Steuerblock BURST/REFRESH auf den externen Speicher EMRY zugreift. Taktsignale sind solche zum Spezifizieren des Grundtimings des Zeitpunkts, zu dem das Innere des Mikrocomputers MCU und seine externen Systeme synchron arbeiten. Wenn ein nicht dargestellter Quarzoszillator mit den Anschlüssen EXTAL und XTAL verbunden ist, entsteht z. B. Resonanz dahingehend, dass mittels einer elektrischen Schaltung im Chip des Mikrocomputers MCU eine Schwingung entsteht. Dieser Chip erfasst die Schwingungsspannung zum Erzeugen interner Synchronisiertakte Φ 1 und Φ 2, wie dies nachfolgend beschrieben wird. Diese Taktsignale Φ 1 und Φ 2 sind nicht überlappende Taktsignale, bei denen keine ihrer hohen Periode überlappt, obwohl keine spezielle Beschränkung hierauf besteht. Gleichzeitig gibt der Mikrocomputer MCU an seinem Anschluss CLK ein Taktsignal mit einem Signalverlauf und einer Phase aus, die im Wesentlichen mit denen des Signals Φ 1 identisch sind, um das externe System und das Innere der LSI zu synchronisieren. Das Steuersignal enthält Folgendes: ein Betriebsmodus-Einstellsignal und ein Interrupt-Eingabesignal, wie ein Rücksetzsignal (RES), oder ein Bereitschaftssignal (STBY); ein Datenbus-Steuersignal, wie ein Lese-Abtastsignal (RD) oder ein Schreib-Abtastsignal (WRHH); oder ein DRAM-Auffrischsteuer- oder Bus-Prioritätszuteilungssignal. Buchstaben Vss und Vcc kennzeichnen einen Masseanschluss und einen Versorgungsspannungsanschluss. Der Port PORT1 führt Eingabe/Ausgabe-Vorgänge für zwei Kanäle des Steuersignals DMAC betreffend den Controller DMAC für direkten Speicherzugriff aus. Der Port PORT2 führt Eingabe/Ausgabe-Vorgänge betreffend das Signal FRT zum Steuern und Lesen der frei laufenden Timer FRT0 und FRT1 von außerhalb des Mikrocomputers MCU aus. Der Port PORT3 führt Eingabe/Ausgabe-Vorgänge für analoge Signale aus, die dem Analog/Digital-Wandler A/D und dem Digital/Analog-Wandler D/A zugeführt werden. Die Bezugspotenziale für den Analog/Digital-Wandler A/D und den Digital/Analog-Wandler D/A werden von Anschlüssen AVcc und AVss zugeführt. Der Port PORT4 führt Eingabe/Ausgabe-Vorgänge für serielle Kommunikationssignale aus, die zu drei Taktsignal-, Datensignal-, Datenübertragungs- und Datenempfangssystemen für zwei Kanäle gehören.
  • [4] Befehlswortlänge und Datenwortlänge
  • 4 zeigt ein Beispiel für die Beziehung zwischen der Datenwortlänge und der Befehlswortlänge von der Busbreite (d. h. der Anzahl von einen Bus aufbauenden Signalleitungen) im Mikrocomputer MCU der vorliegenden Ausführungsform. Dieser Mikrocomputer MCU verfügt über eine Architektur vom RISC-Typ und ein Befehlsformat fester Länge. Die Busse, die die internen Datenbusse IDB31-0, über die Daten und Befehle übertragen werden, sind mit 32 Bits (entsprechend 32 Signalleitungen) versehen. Dabei beträgt die Bitanzahl der später beschriebenen verschiedenen Register 32 Bits. Die Daten in einem Speicher sind in einem Speicherbereich mit einer Breite von 32 Bits mit Byteeinheit (8 Bits), Worteinheit (16 Bits) und Langworteinheit (32 Bits) angeordnet. Adressen werden in Byteeinheit dem Speicher zugewiesen. Im Ergebnis gilt: auf Bytedaten wird mit der Einheit von n Adressen (n: ganze Zahl) zugegriffen; auf Wortdaten wird mit der Einheit von 2n Adressen zugegriffen; und auf Langwortdaten wird mit der Einheit von 4n Adressen zugegriffen. Es wird davon ausgegangen, dass andere Speicherzugriffe zu einem Adressfehler gehören. Andererseits werden Befehle mit einem Befehlsformat mit einer festen Länge von 16 Bits (entsprechend 16 Signalleitungen) formattiert. Kurz gesagt, besteht ein Befehl fester Länge aus Bits der n-ten Potenz von 2, und es gilt die Beziehung m ≥ n, wenn die Anzahl der die Busbreite bildenden Signalleitungen die m-te Potenz von 2 ist.
  • In 4 sind mehrere Beispiele des oben genannten Befehlsformats fester Länge von 16 Bits dargestellt: vier Bits "rrrr" kennzeichnen ein zugewiesenes Feld eines Quellregisters; vier Bits "RRRR" kennzeichnen ein zugewiesenes Feld eines Zielregisters. Bits "d---dd" kennzeichnen eine Verschiebung; und Bits " ii-i" kennzeichnen einen unmittelbaren Datenwert. Bei einem Befehlsformat von 16 Bits fällt das Zielregister-Zuweisungsfeld RRRR auf das achte Bit ausgehend vom vierten Bit unter Bezug auf die linke Seite des Formats, und das Quellregister-Zuweisungsfeld rrrr fällt auf das zwölfte Bit ausgehend vom neunten Bit. Die linken vier Bits des Befehlsformats sind mindestens einem Operationscode-Zuweisungsfeld zugewiesen. Das Befehlssys tem des Mikrocomputers MCU erlaubt es, das Zielregister-Zuweisungsfeld RRRR als Teil des Operationscode-Zuweisungsfelds zu verwenden, und das Quellregister-Zuweisungsfeld rrrr als Teil der Verschiebung oder eines unmittelbaren Datenwerts zu verwenden.
  • Dank der Verwendung eines Befehlsformats mit einer festen Länge von 16 Bits bei einer Datenwortlänge von 32 Bits kann vor dem Ende eines vorangehenden Befehls die Lage der Befehlsgrenze erkannt werden, wie bei einer bekannten RISC-Maschine mit einem Befehlsformat fester Länge von 32 Bits, um dadurch den Vorteil einer Vereinfachung des Befehlsdecodierprozesses zu gewährleisten. Außerdem kann die Programmkapazität kleiner als dann gemacht werden, wenn ein Befehlsformat fester Länge von 32 Bits verwendet wird. Bei einer RISC-Architektur, die dazu vorgesehen ist, die Ausführung von Befehlen durch Verringern der Anzahl von Befehlsarten zu beschleunigen, besteht die Tendenz, dass in einem Befehlssatz die nicht definierten Operationscodes zunehmen. Wenn die Befehlslänge nun auf die Hälfte gegenüber dem Stand der Technik verringert ist, kann die Effizienz der Nutzung des Programmspeichers verbessert werden. Dank der verringerten Befehlswortlänge im Vergleich zur Datenwortlänge kann ein im Wesentlichen nutzloses Bitarray kleiner als dann gemacht werden, wenn die zwei Wortlängen gleich gemacht sind, so dass der Nutzungswirkungsgrad des Programmspeichers verbessert werden kann. Im Ergebnis kann der Nutzungswirkungsgrad des Speichers zum Speichern des Programms verbessert werden, um ein Anwendungsfeld zu erhalten, das einen Speicher mit begrenztem Speichervermögen auf der Leiterplatte oder einen in den Chip im Prozessor eingebauten Programmspeicher verwendet, abgesehen von Problemen, wie einem Mangel an Speicherkapazität im Programmspeicher beim Aufbauen des Systems oder eines unvermeidlich großen Umfangs des Speichers. So können die Systemkosten gesenkt werden.
  • Da darüber hinaus das Befehlsformat mit fester Länge von 16 Bits der halben Länge der Datenwortlänge und der Busbreite von 32 Bits entspricht, tritt eine Befehls-Fehlausrichtung im Programmspeicher, wie dahingehend, dass ein Befehl eines einzelnen Formats über die Speichergrenze (oder die Wortgrenze) hinweg angeordnet wird, weniger häufig als dann auf, wenn die Befehlswortlänge dadurch verkürzt wird, dass sie auf eine bruchteilige Bitanzahl (z. B. auf eine andere Bitanzahl als einer Potenz von 2) hinsichtlich der Busbreite oder der Datenwortlänge eingestellt ist.
  • [5] Befehlssteuerungssystem der CPU
  • 5 zeigt ein Beispiel des internen Blocks, d. h. des Befehlssteuerungssystems der oben genannten zentralen Verarbeitungseinheit CPU. Buchstaben IRH und IRL kennzeichnen einzelne Befehlspuffer (d. h. Befehlsschlangen) von 16 Bits zum einzelnen Zwischenspeichern von Befehlen fester Länge von 16 Bits. Diese Register IRH und IRL werden in einem Befehlsabrufzyklus einzeln mit Befehlen geladen. Dies, da die Befehle über die internen Datenbusse IDB31-0 mit einer Einheit von 32 Bits übertragen werden. Diese Befehle werden über einen Multiplexer MPX in das Befehlsregister IR1 geladen. Das Befehlsregister IR1 weist 16 Bits auf. Dieses Befehlsregister IR1 führt eine Zwischenspeicherung des Befehls aus, der sich im Befehlsdecodierstadium befindet. Im Befehlsregister IR1 wird unter Bezugnahme auf das linke Ende, das entsprechend dem Befehlsformat einer festen Länge von 16 Bits als "RRRR" angegeben ist, dafür gesorgt, dass das fünfte bis achte Bit zum Zielregisterfeld gehören, und es wird dafür gesorgt, dass das neunte bis zwölfte Bit, die als "rrrr" angegeben sind, zum Quellregisterfeld gehören. Diese Felder sind im Befehlsfeld fixiert. Dabei wird, wie zuvor beschrieben, das Quellregisterfeld immer zum Auswählen des Quelloperanden verwendet, und das Zielregisterfeld wird immer zum Auswählen des zweiten Quelloperanden oder des Zieloperanden verwendet. Jedes Registerfeld kann einen Teil des Operationscodes oder die Nummer eines Registers bedeutet. Ob der Inhalt des Registers, der den Feldern RRRR und rrrr zugeordnet ist, Informationsteilen zum Auswählen eines Registers entspricht oder nicht, wird am linken Ende des oben genannten Befehlsformats fester Länge durch den Inhalt der Operationscodes der Bits 1 bis 4 bestimmt. Jedoch werden die Werte der Registerfelder RRRR und rrrr über das Befehlsregister IR2 in einen Quellregister-Decodierer SRD und einen Zielregister-Decodierer DRD eingegeben und decodiert.
  • Die Decodierungsergebnisse durch den oben genannten Quellregister-Decodierer SRD und den Zielregister-Decodierer DRD werden dazu verwendet zu entscheiden, welches von Universalregistern R0H und R0L, ... sowie R15H und R15L, die in einer Ausführungseinheit für Arithmetikoperationen enthalten sind, auszuwählen ist. Andererseits werden die vom oben genannten Befehlsregister IR2 ausgegebenen Werte der Registerfelder RRRR und rrrr über Zwischenspeicher WBR0 und WBR1 in einen Rückschreibregister-Decodier WBRD eingespeist, damit die durch die Befehlsausführungen erhaltenen Arithmetikergebnisse eingeschrieben werden, um die Universalregister entsprechend den Decodierungsergebnissen auszuwählen. Darüber hinaus werden die Werte der Registerfelder RRRR und rrrr, d. h. die im oben genannten Zwischenspeicher WBR1 zwischengespeicherten Registernummern, wie sie verwendet werden, einem Registerinhalt-Prüfblock RCCB zugeführt, damit sie mit den Ausgangssignalen der Befehlsregister IR1 und IR2 verglichen werden, um Gleichheit (oder einen Registerkonflikt) herauszufinden, bei der jeder Befehl, d. h. ein folgender Befehl, auf ein gemeinsames Register zugreift, wenn die sequenziell abgerufenen Befehle auf Pipelineweise ausgeführt werden. Der Registerkonflikt wird auf das Signal S1 hin an einen Flagoperation- & Pipelinesteuerungs-Decodierer FO&PCD geliefert. Wenn das so aufgeschaltete Signal S1 dem Flagoperation- & Pipelinesteuerungs-Decodierer FO&PCD zugeführt wird, werden Überspringungs-Steuerungsvorgänge entsprechend der Anzahl erfolgter Befehlsausführungszyklen ausgeführt, um die Ausführungszyklen der Befehle unter Verwendung der in Konflikt stehenden Register aufzuheben oder zu verzögern. Kurz gesagt, wird, wenn der Flagoperation- & Pipelinesteuerungs-Decodierer FO&PCD das Steuersignal Skip ausgibt, das Decodieren des anschließend auszuführenden Befehls im Quellregister-Decodierer SRD und im Zielregister-Decodierer DRD verzögert. Im Ergebnis wird der Ausführungszyklus eines folgenden Befehls zu einem Zeitpunkt gestartet, nachdem der Schreibvorgang betreffend die in Konflikt stehenden Register durch Ausführen des vorigen Befehls beendet ist.
  • Der im oben genannten Befehlsregister IR1 zwischengespeicherte Befehl wird einem Abbildungs-Steuerblock MCB zugeführt, um die Adressen eines steuernden Hochgeschwindigkeits-Festwertspeichers (d. h. Hardwaresequenz-ROM) HSC-ROM zu indizieren. Dieser Abbildungs-Steuerblock MCB hat die Aufgabe, die Eintrittsadresse eines geeigneten steuernden Hochgeschwindigkeits-Festwertspeichers MHSC-ROM entsprechend dem Inhalt zu berechnen. Das Ausgangssignal des steuernden Hochgeschwindigkeits-Festwertspeichers HSC-ROM besteht aus zwei Teilen: einem Mikrocodefeld MCF und einem Pipeline-Steuerfeld PCF, die durch ein Hardwaresequenzsteuerungs-Befehlsregister HIR wie ein Mikrobefehlsregister zwischengespeichert werden. Der erste Teil im Mikrobefehlsfeld liefert über eine flache Decodierlogik, d. h. einen Befehlsdecodierer ID, ein Steuersignal an die Ausführungseinheit EXEC. Der letztere Teil errichtet die Sequenz eines Befehls mit zwei oder mehr Zyklen durch den Flagoperation- & Pipelinesteuerungs-Decodierer FO&PCD, oder er steuert die Pipeline. Der Flagoperation- & Pipelinesteuerungs-Decodierer FO&PCD verfügt über acht Flags C, W, B, L, M, I, S und S zum Steuern der Pipelines. Darüber hinaus verfügt dieser Flagoperation-& Pipelinesteuerungs-Decodierer FO&PCD über ein Statusregister SR mit einem Wahrheitsbit T (das kurz als "T-Bit" bezeichnet wird), das für bedingte Verzweigungen verwendet wird.
  • Dieses T-Bit wird abhängig vom Arithmetikergebnis ausgewählter, im Befehl angegebener Bedingungen auf Wahr oder Falsch gesetzt, wie dies nachfolgend beschrieben wird.
  • Der Inhalt des oben genannten Befehlsregister IR1 wird vor einer Arithmetikausführungsphase (EX) an das Befehlsregister IR2 übertragen, damit mittels des oben genannten Registerinhalt-Prüfblocks RCCB überprüft wird, ob zwischen Befehlen im Pipelinezustand der späteren Speicherzugriffsphase (MA) und der Rückschreibphase (WB) ein Konflikt entsteht oder nicht, und dieses Ergebnis wird als Signal S1 ausgegeben. Dabei ist im Befehlsregister IR2 der Wert des Registerfelds gespeichert. Die Werte der Registerfelder RRRR und rrrr, die, wie oben beschrieben, in den Befehlsregistern IR1 und IR2 zwischengespeichert sind, werden dem oben genannten Quellregister-Decodierer SRD, dem Zielregister-Decodierer DRD und dem Rückschreibregister-Decodierer WBRD zugeführt. Der Quellregister-Decodierer SRD, der Zielregister-Decodierer DRD und der Rückschreibregister-Decodierer WBRD erzeugen ein Auswählsignal zum Auswählen eines Paars von 16 Universalregistern R0H und R0L, ... und R15H und R15L, und sie liefern es an die Ausführungseinheit EXEC.
  • Die Speicherschnittstelle MIF erkennt, ob die zentrale Verarbeitungseinheit CPU auf einen Speicher zugreifen muss oder nicht und ob der Speicher vom Lese- oder vom Schreibtyp ist, und sie liefert ein zum Zugreifen auf den Speicher erforderliches Signal. Andererseits hat ein Befehlsabruf- & Befehlsregister-Steuerungsblock IF&IRC die Funktion zu ermitteln, ob ein Befehlsabruf von einem Speicher erforderlich ist oder nicht, und wann der Inhalt der Befehlsregister IRH und IRL zu aktualisieren ist und das erforderliche Signal auszugeben. Die Funktion dieses Befehlsabruf- & Befehlsregister-Steuerungsblocks IF&IRC ist diejenige, ein vorbestimmtes Steuersignal unter Bezugnahme auf den Zustand der Pipeline, den Zustand des Speichers und den Zustand der Befehlsschlangen (IRH und IRL) auszugeben, um dadurch die Befehlsschlange oder den Befehlsabruf zu steuern. Was die vorliegende Ausführungsform auszeichnet, besteht darin, dass der Befehlsabruf mit einer Einheit von 32 Bits ausgeführt wird, so dass er zwei Befehle mit einer Befehlslänge von 16 Bits enthält. Dies erübrigt es, in einer anderen Phase erneut einen Befehl abzurufen, der gleichzeitig mit dem vorigen Befehl abgerufen wurde. Diese Ereignisse werden für die Steuerung dann vollständig beurteilt, wenn ein Befehlsabruf auszuführen ist. Der Befehlsabruf- & Befehlsregister-Steuerungsblock IF&IRC ist als finite Zustandsmaschine konstruiert, und eine detaillierte Beschreibung der Struktur dieser Maschi ne wird weggelassen, da die Struktur als solche in der Technik gut bekannt ist.
  • Übrigens kennzeichnen die in der 5 erscheinenden Buchstaben IMB einen Puffer zum Liefern unmittelbarer Daten in einem Befehl an die Ausführungseinheit EXEC. Darüber hinaus sind die Befehlsschlangen IRH und IRL und das Zwischenspeicherungs-Timing des Befehlsregisters IR1 ist mit dem oben genannten Taktsignal Φ1 synchronisiert. Das Latchtiming des Befehlsregisters IR2 des Mikrobefehlsregisters MIR und der Register WBR0 und WBR1 sowie das Ausgabetiming des Signals S1 durch den oben genannten Registerinhalt-Prüfblock RCCB sind mit dem oben genannten Taktsignal Φ2 synchronisiert.
  • Da die Datenbusbreite 32 Bits beträgt, wohingegen der Befehl fester Länge 16 Bits ausmacht, sind zwei Befehlspuffer IRH und IRL vorhanden. Trotz dieser Maßnahme wird jedoch die Anzahl von Befehlspuffern abhängig davon bestimmt, wieviele Befehle fester Länge innerhalb der Datenbusbreite übertragen werden können, z. B.: vier Befehlspuffer im Fall eines Befehls einer festen Länge von 8 Bits; und acht Befehlspuffer im Fall eines Befehls einer festen Länge von 4 Bits.
  • [6] Ausführungseinheit der CPU
  • Die 6 und 7 zeigen ein Beispiel der Ausführungseinheit EXEC der zentralen Verarbeitungseinheit CPU. In den zwei Figuren sind mit A, B, C und D gekennzeichnete Busse gemeinsam angeschlossen. Die Ausführungseinheit EXEC enthält Folgendes: einen Befehlsabrufblock IFB und einen Universalblock GRB zum Abrufen eines Befehls und zum Aktualisieren eines Programmzählers; einen Operationsblock OPB für Additions-/Subtraktions- und Verschiebeoperationen; und einen Speicherzugriffsblock MAB und einen Multiplizierblock MULT zum Zugreifen auf einen Speicher und zum Ausrichten von Daten. Diese einzelnen Blöcke sind über die vier Datenbusse A, B, C und D mit einer Breite von 32 Bits miteinander verbunden.
  • Die oben genannten Befehlspuffer (oder Befehlsschlangen) IRH und IRL, der Multiplexer MPX und das Befehlsregister IR1, die einen Teil des oben genannten Befehlsabrufblocks IFB bilden, sind in der Blockstruktur der 5 getrennt von der Ausführungseinheit EXEC dargestellt, jedoch können sie in dieser enthalten sein, wie es in 6 dargestellt ist. Ein unmittelbarer Puffer IMB ist eine Logikmaßnahme zum Abschneiden und für Bitverschiebung, falls erforderlich, unmittelbarer Daten. Die Buchstaben PCH und PCL kenn zeichnen Programmzähler zum Zwischenspeichern von Adressen für den Befehlsabruf. Eine Arithmetikeinheit AUH für Hoch und eine Arithmetikeinheit AUL für Niedrig sind Addierer, die eine Addition von 32 Bits ausführen können, um die Programmzähler zu aktualisieren. Ein Prozeduradressregister PRH für Hoch und ein Prozeduradresseregister PRL für Niedrig, sind Prozeduradresseregister zum Zwischenspeichern von Rückadressen für einen Funktionsaufruf. Ein Vektorbasisregister VBRH für Hoch und ein Vektorbasisregister VBRL für Niedrig werden für Speicherbereiche eines Interruptvektorbereichs zum Zwischenspeichern der Basisadressen verwendet. Ein Globalbasisregister GBRH für Hoch und ein Globalbasisregister GBRL für Niedrig werden als Speicherregister für die I/O-Basisadresse verwendet. Ein Unterbrechungsregister BRH für Hoch und ein Unterbrechungsregister BRL für Niedrig werden als Speicherregister für Rücksprung-Zieladressen ausgehend von einer Unterbrechungsroutine verwendet.
  • Der oben genannte Universalregisterblock GRB enthält sechzehn Universalregister mit einer Länge von 32 Bits, wie mit R0H und R0L bis R15H und R15L gekennzeichnet. Im oben genannten Operationsblock OPB sind ein Schieberegister SFTH für Hoch und ein Schieberegister SFTL für Niedrig Hardware für Bitverschiebungen und Rotationen. Eine Arithmetik-Logik-Einheit für Hoch und eine Arithmetik-Logik-Einheit für Niedrig sind Operationseinheiten für arithmetisch-logische Operationen. Die Buchstaben SWP&EXT kennzeichnen Hardware zum Ausführen eines Vertauschbefehls, einer Code oder Vorzeichenerweiterung und einer Nullerweiterung. Eine Ausrichteinheit ALN ist Hardware zum Ausrichten der Daten, auf die von einem Speicher oder einer I/O-Einheit in Byte- oder Wortform zugegriffen wird. Ein Speicherlesepuffer MRBH für Hoch und ein Speicherlesepuffer MRBL für Niedrig sind Zwischenregister zum Zwischenspeichern der aus einem Speicher ausgelesenen Daten. Ein Speicherschreibpuffer MWBH für Hoch und ein Speicherschreibpuffer MWBL für Niedrig sind Zwischenregister zum Zwischenspeichern von in einen Speicher einzuschreibenden Daten. Ein Speicheradresspuffer MABH für Hoch und ein Speicheradresspuffer MABL für Niedrig sind Zwischenregister zum Zwischenspeichern von Adressen bei einem Speicherzugriff. Ein MULT-Puffer MLTB ist ein Zwischenregister zum Übertragen eines Multiplikators und eines Multiplikanten an den Multiplizierblock MULT.
  • Die Verbindungsbeziehungen zwischen dem Inneren und Äußeren der zentralen Verarbeitungseinheit CPU über die Busse sind die folgenden. Genauer gesagt, kennzeichnen die Buchstaben MTBL und MTBH bilaterale Spezialbusse zum Anschließen des Multiplizierblocks MULT. In den 6 und 7 entsprechen die Buchstaben IDBH und IDBL den Datenbussen IDB31-0 der 2, und die Buchstaben IABH und IABBL entsprechen den Adressbussen IAB23-0 in 2. Die Werte der oben genannten Programmzähler PCH und PCL werden an die Adressbusse IABH und IABL ausgegeben, und die Befehlspuffer IRH und IRL erfassen die Daten von den Datenbussen IDBH und IDBL, damit die Ausgangssignale der Zwischenregister MBWH und MWBL an die Datenbusse IDBH und IDBL geliefert werden. Die Zwischenregister MRBH und MRBL nehmen die Daten von den Datenbussen IDBH und IDBL und den Spezialbussen MTBH und MTBL auf. Die durch die Zwischenregister MABH und MABL zwischengespeicherten Adressinformationen werden an die Adressbusse IABH und IABL ausgegeben. Das Ausgangssignal des Multiplikations-Zwischenregisters MLTB wird an die Spezialbusse MTBH und MTBL ausgegeben.
  • [7] Pipelinestufe durch die CPU
  • 8 zeigt ein Beispiel für eine Stufe einer Pipelineverarbeitung durch die zentrale Verarbeitungseinheit CPU. Diese zentrale Verarbeitungseinheit CPU verfügt über eine grundlegende Pipelinestruktur mit fünf Stufen mit den folgenden Grundphasen:
    • IF: Befehlsabruf;
    • ID: Befehlsdecodierung;
    • Ex: Ausführung;
    • MA: Speicherzugriff und
    • WB: Rückschreiben
  • In 8, die ein Beispiel für den Ausführungsinhalt jeder Pipelinestufe zeigt, entspricht der Adressbus den Adressbussen IAB23-0 der 2, und der Datenbus entspricht IDB31-0 in derselben. Die Buchstaben IR in 8 entsprechen den Befehlspuffern IRH und IRL in den 6 und 5. In 8 entsprechen die Buchstaben A-Bus, B-Bus, C-Bus und D-Bus dem Bus A, dem Bus B, dem Bus C bzw. dem Bus D in 7. In ähnlicher Weise entsprechen die Buchstaben MAB und MRB in 8 den Buchstaben MABH, MABL, MRBH und MRBL in 7.
  • [8] Pipelinesequenz im Registerkonfliktzustand
  • Unter Bezugnahme auf die 9 wird die Pipelinesequenz im oben genannten Zustand eines Registerkonflikts beschrieben. Zuallererst wird die Bedeutung von in dieser Figur dargestellten Signalen nachfolgend beschrieben. Die Signalverläufe der oben genannten nicht überlappenden zweiphasigen Taktsig nale Φ1 und Φ2, die als Operations-Bezugstaktsignale wirken, sind oben in 9 dargestellt. Ein Zyklus ist als Periode definiert, die mit dem Anstieg des Taktsignals Φ1 beginnt und mit dem nächsten Anstieg des Signals Φ1 endet. Anschließend sind die Zustände eines Adressbusses und eines Datenbusses dargestellt. Als Nächstes kennzeichnen die Buchstaben IRLatch ein Latchsignal eines Befehlspuffers (IR (32 Bits) oder IRH und IRL). Das Signal IRLatch zeigt den Signalverlauf für das Eingangslatchsignal des Register IR1. Das Register IR1 (16 Bits) für eine Zwischenspeicherung des in einer Befehlsdecodierstufe enthaltenen Befehls aus. Das oben genannte Hardwaresequenz-Steuerungsbefehls-Register HIR ist ein Register zum Zwischenspeichern eines teilweise decodierten Mikrocodes, einer Sequenzinformation oder einer Pipeline-Steuerinformation. Die in 9 auftretenden Buchstaben Reg. Content Flag spezifizieren ein Flag, das anzeigt, dass es erforderlich ist, einen Konflikt zwischen einem Befehl LOAD und einem Befehl EXEC unter Verwendung der Ausführungseinheit zu überprüfen. Dieser Konflikt wird in einem 4. Zyklus überprüft, um ein Inhaltsflag (oder C-Flag) zu setzen. Gleichzeitig wird ein LOAD-Flag (oder ein L-Flag) gesetzt, das anzeigt, dass es erforderlich ist, einen Operanden zu laden. In ähnlicher Weise wird im 4. Zyklus ein Buszyklusflag (oder B-Flag) gesetzt, das das Erfordernis einer Busoperation anzeigt. Dieses Flag zeigt an, ob der Buszyklus ausgeführt wird oder nicht. Ein Befehlsabruf-Sperrflag (d. h. ein IF-Sperrflag: I-Flag) ist ein solches, das anzeigt, dass ein Befehlsabruf unterbrochen wird und durch einen Datenzugriff ersetzt wird. Ein Überspringsignal (d. h. ein Signal Skip) ist ein Flag, das bedeutet, dass eine in der Ausführungseinheit EXEC auszuführende Verarbeitung in diesem Zyklus aufgehoben wird. Die Ausführung zeigt eine in der Ausführungseinheit EXEC auszuführende Verarbeitung an. Reg. Write ist ein in ein Register einzuschreibendes Signal. Auf das Signal Reg. Write hin speichert das Zielregister, gemäß Befehl, die normale Operation über den C-Bus ein. Beim Ausführen des Befehls LOAD und des Befehls MULT führt das Zielregister, nach Befehl, eine Zwischenspeicherung über den D-Bus aus. Gemäß dieser Bedeutung ist das Signal Reg. Write im Timingdiagramm so dargestellt, dass es für den C-Bus und den D-Bus unterteilt ist, so dass ein Schreibvorgang bevorzugt für den C-Bus ausgeführt wird, wenn die zwei Signale Reg. Write für den C-Bus und den D-Bus im selben Register in Konflikt stehen. Kurz gesagt, wird nur der Schreibvorgang vom C-Bus ausgeführt. Das im 5. Zyklus geschriebene Signal, wie durch gestrichelte Linien dargestellt, kennzeichnet das Einschreiben in das Register, das durch das Signal Skip gesperrt ist. MAB bedeutet einen Speicheradressebus zum Ausgeben einer Adresse, wenn ein Datenzugriff ausgeführt wird. MRB Latch für einen Speicherlesepuffer ist ein Signal zum Zwi schenspeichern von Daten. PC kennzeichnet den Wert eines Programmzählers.
  • 9 ist ein zeitbezogenes Diagramm zum beispielhaften Darstellen der Sequenzen zwischen Befehlen LOAD (LOAD @R1, R2) und Befehlen ADD (ADD R2, R3). Das Register R2 für den Befehl LOAD zum Zwischenspeichern der Daten und das Register R2, das beim Befehl ADD zu verwenden ist, sind in solcher Weise gemeinsam, dass der Wert des Registers R2 für Operationen für seinen Wert verwendet wird, wie dann bestimmt, wenn die Befehlsausführung im normalen Pipelineablauf ausgeführt wird. Bei diesem Beispiel ist das Timing, gemäß dem die Pipelineansteuerung auszuführen ist, über sechs Zyklen dargestellt, wenn für den Gebrauch des Registers R2 ein Konflikt besteht. Die unterste Spalte kennzeichnet die Ausführungssituationen betreffend die Pipeline. Da das Register R2 des Ziels des Befehls LORD und das Quellregister R2 des Befehls ADD in Konflikt stehen, tritt im 5. Zyklus, wie schraffiert dargestellt, eine Blockierung (oder Verzögerung) ein. Hinsichtlich dieser Blockierung wird es erforderlich, als Erstes zu erkennen, ob ein Registerkonfliktzustand auftritt oder nicht, und zu erkennen, wieviele Zyklen des Ausführungszyklus (EX) zu verzögern sind, um den Registerkonflikt zu vermeiden. Die erstere Erkennung wird dadurch ausgeführt, dass das vom oben genannten Registerinhalt-Prüfblock RCCB ausgegebene Signal S1 aufgeschaltet wird, um die im vorigen, vom oben genannten Register WBR1 ausgegebenen Befehl enthaltene Registerauswählinformation und die im folgenden Befehl enthaltene Registerauswählinformation (z. B. die im Befehl ADD zum Auswählen des Registers R2 gemäß diesem Beispiel enthaltene Information) zu vergleichen. Die letztere Erkennung kann gemäß dem Decodierungsergebnis des Operationscodes erfolgen. Da die Anzahl der Ausführungszyklen (EX) des Befehls LOAD die beim Beispiel dargestellt ist, tritt die Blockierung nur im fünften Zyklus auf.
  • 10 zeigt ein anderes Beispiel für die Pipelinesequenz im Registerkonfliktzustand. 10 ist ein zeitbezogenes Diagramm zum beispielhaften Darstellen der Sequenzen hinsichtlich der Befehle MUL (MUL R1, R2) als Multiplizierbefehle, der Befehle ADD (ADD R4, R3) und der Befehle SUB (SUB R3, R2). Das Register R2 für den Befehl MUL zum Zwischenspeichern der Daten und das durch die Befehle SUB zu verwendende Register R2 sind gemeinsam. Solange sich nicht der Registerkonfliktzustand in den Pipelinesequenzen widerspiegelt, tritt es auf, dass das Register R2 für eine andere Operation verwendet wird, bevor sein Wert ermittelt ist, wenn der Befehl ausgeführt wird. Beim vorliegenden Beispiel ist über sieben Zyklen dargestellt, mit welchem Timing die Steuerung der Pipeline ausgeführt wird, wie im Fall der artiger in Konflikt stehender Registerverwendungen. Das Wiedergabeformat in der vorliegenden Figur ist ähnlich dem in 9, und es sind die Ausführungen von Multiplikationen in vier Zyklen veranschaulicht, was jedoch nicht detailliert angegeben ist. Die Befehle MULT werden in vier Stufen EX, ML, ML und ML ausgeführt. Der Multiplizierer kann die Multiplikationen ausführen, um das Ergebnis von 16b*16b in 32b in vier Zyklen zwischenzuspeichern. Diese Berechnungen können dadurch ausgeführt werden, dass das Teilprodukt 16b*4b und die Gesamtsumme für jeden Zyklus bestimmt werden. Im Fall dieses Beispiels wird der Befehl SUB mit einer Verzögerung von 2 Zyklen gegenüber dem Befehl MULT in das Register R1 abgerufen, und der Ausführungszyklus (EX) des Befehls SUB wird um zwei Zyklen verzögert, da der Befehl MULT in den vier Zyklen EX, ML, ML und ML multipliziert wird.
  • [9] Pipelinesequenz bei einem Speicherzugriffskonflikt
  • 11 zeigt eine beispielhafte Pipeline-Steuersequenz für den Fall, dass ein Datenabruf von einem Speicher und ein Befehlsabruf in Konflikt stehen. In diesem Fall wird der Datenabruf bevorzugt, so dass der einen Befehlsabruf mit Konflikt enthaltende Befehlsausführungszeitplan in seiner Gesamtheit verschoben wird. Für diese Steuerung wird das Befehlsabruf-Warteflag (IF Wait Flag) so gesetzt, dass der Start des Befehlsabrufzyklus verzögert wird, während das Ladeflag (LOAD Flag) und das Buszyklusflag (Bus Cycle Flag) in Konflikt stehen.
  • [10] Sequenz der Befehlsausführung über mehrere Zyklen
  • 12 ist ein zeitbezogenes Diagramm, das ein Beispiel für den Fall zeigt, dass mehrere Zyklusbefehle ausgeführt werden. Hier wird beispielhaft ein Befehl "AND.B #imm, @R1" oder eine Art von UND-Befehlen (d. h. logisches Produkt) erläutert. Dies ist ein Befehl zum Berechnen des logischen Produkts zwischen einem 8-Bit-Datenwert aus einem in Bezug auf das Register R1 ausgewählten Speicher und dem unmittelbaren 8-Bit-Datenwert. Dieser Befehl AND.B ist ein solcher mit mehreren Zyklusbefehlen, die auf den Makrobefehl 1, den Mikrobefehl 1 und den Mikrobefehl 2 auszuführen sind. Der oben genannte Makrobefehl 1 ist ein Befehl zum Abrufen eines Byteoperanden aus dem Bereich eines Speichers, der entsprechend dem Inhalt des Register R1 ausgewählt wird. Der oben genannte Mikrobefehl 1 ist ein Befehl zum Ausführen einer UND-Operation für den oben genannten Byteoperanden und den unmittelbaren Datenwert. Der oben genannte Mikrobefehl 2 ist ein Befehl zum Einschreiben des Byteoperanden in den Bereich eines Speichers, der entsprechend dem Inhalt des Registers R1 ausgewählt wird.
  • Der Ausführungsinhalt des oben genannten Befehls AND.B wird wie folgt in der Sprache C beschrieben:
  • Gemäß dieser Beschreibung bestehen zwischen der Stufe ID (Befehlsdecodierung) und der Stufe EX (Ausführung) des Mikrobefehls 1 sowie zwischen der Stufe μ-IF (Mikrobefehlsabruf) und der Stufe ID des Mikrobefehls 2 Leerlaufzyklen. Dies, da der in der Stufe MA (Speicherzugriff) des Makrobefehls 1 abgerufene Operand in der Stufe EK (Ausführung) des Mikrobefehls 1 zu verwenden ist.
  • [11] Befehlszuweisung der CPU
  • Die der zentralen Verarbeitungseinheit CPU zuzuweisenden Befehle sind: Datenübertragungsbefehle, wie sie in den 13 und 14 dargestellt sind; Befehle für logische Operationen, wie in 15 dargestellt; Befehle für arithmetische Operationen, wie in den 16 und 17 dargestellt; Verschiebebefehle, wie in 18 dargestellt; Verzweigungsbefehle, wie in 19 dargestellt; und Systemsteuerungsbefehle, wie in den 20 und 21 dargestellt. Die 22 erläutert die Beschreibungsformate der 13 bis 21. Gemäß diesen Formaten sind die Einzelpunkte der Befehle in den 13 bis 21 mnemonisch angegeben. Die Adressierungsmodi bei diesen mnemonischen Angaben sind in der 23 tabellarisch aufgelistet. Wie es aus den verschiedenen Befehlscodes erkennbar ist, können alle ganzzahligen Berechnungen, Verzweigungsverfahren und Steuerungsbefehle des Universalregistersystems selbst bei den 65.563 Kombinationen ausgewählt werden, die mit einem Befehlsformat einer festen Länge von 16 Bits ausdrückbar sind. Das Decodieren kann dadurch mit weniger logischen Ausdrücken ausgeführt werden, dass die Bitzuweisungen so konzipiert werden, dass Befehle ähnlicher Funktionen gruppiert werden. Ein Befehlsarray mit einem mit "1111" startenden Operationscode wird vollständig reserviert, so dass Berechnungen mit einfacher oder doppelter Genauigkeit in Übereinstimmung mit den IEEE-Leitkommastandards ausgewählt werden können.
  • [12] Verschiebungslänge eines Verzweigungsbefehls
  • In den 24, 25, 26 und 27 sind die Beziehungen zwischen den Verschiebungslängen von Verzweigungsbefehlen und Befehlen in verschiedenen Programmen, die als Beispiele herausgegriffen sind, und den Auftrittshäufigkeiten der Befehle mit derartigen Verschiebungslängen aufgetragen. Die 24 und 25 betreffen Befehle für bedingte Verzweigung (d. h. Verzweigungsbefehle) und Befehle für unbedingte Verzweigung (d. h. Befehle, bei denen immer zu verzweigen ist); die 26 betrifft Unterroutineaufruf-Befehle; und die 27 betrifft Sprungbefehle oder Unterroutine-Sprungbefehle. Hierbei dient eine "Verzweigung" zum Auswählen eines von mehreren Befehlssätzen, die beim Ausführen eines Computerprogramms ausgewählt werden können. "Sprung" bedeutet ein Abweichen von der impliziten oder speziellen Ausführungsreihenfolge von Befehlen, wie aktuell bei der Ausführung des Computerprogramms ausgeführt. Die "Verschiebung" wird dazu verwendet, eine Sprungadresse auszuwählen. Daher kann zu einer um so weiteren Adresse gesprungen werden, je größer die Bitanzahl der Verschiebungslänge ist.
  • Die Frequenzverteilungen der Verschiebung auf die Verzweigungsbefehle hin sind, wie es in den 24 bis 26 dargestellt ist, Daten, die durch Analysieren der verschiedenen Programme des Mikrocomputers H8/500 von Hitachi, Ltd. erhalten wurden. Diese Figuren veranschaulichen die Verteilung der Verschiebungswerte der einzelnen Arten der verwendeten Verzweigungsdividenden. Die Abszisse kennzeichnet die log-2-Werte der verwendeten Verschiebungswerte. Rechts vom Ursprung 0 ist der Wert log 2 (d. h. die Verschie bung) durch eine positive ganze Zahl (1, 3, 5, 7, ...) wiedergegeben, wenn der Verschiebungswert positiv ist. Links ist der Wert-log 2 {d. h. die -Verschiebung} durch eine negative Zahl, für eine Verschiebung mit negativem Wert, wiedergegeben. Die Ordinate kennzeichnet die Auftrittshäufigkeit mit der Einheit %. Die Daten wurden für neun verschiedene Programme erfasst.
  • Wie es aus den 24 und 25 erkennbar ist, sind die Verzweigungsbefehle und die Befehle für Verzweigungen, die immer erfolgen, mit höherer Auftrittshäufigkeit näher um das Zentrum verteilt, so dass die Verteilung im Wesentlichen mittels einer Verschiebung von 8 Bits abgedeckt werden kann. Es konnte auch herausgefunden werden, dass die Verteilung der Unterroutine-Aufrufbefehle gemäß 26 vollständig mit einem Verschiebungsfeld von 12 bis 13 Bits abgedeckt werden kann, obwohl es ziemlich breit ist. Im Fall der in 27 dargestellten Sprungbefehle oder Unterroutine-Sprungbefehle nimmt darüber hinaus der Abszissenwert eine solche Verschiebung ein, dass er so definiert ist, dass er die Differenz zwischen der Adresse, an der der Sprungbefehl vorhanden ist, und der Adresse des Sprungziels bedeutet. Es konnte herausgefunden werden, dass auch das Sprungziel weit entfernt ist.
  • Beim Mikrocomputer MCU der vorliegenden Ausführungsform ist die Verschiebung für Befehle mit bedingter Verzweigung auf 8 Bits festgelegt, und die Verschiebung von Unterroutine-Verzweigungsbefehlen und Befehlen für unbedingte Verzweigung ist zu 12 Bits festgelegt, so dass diese Befehle auf das Befehlsformat einer festen Länge von 16 Bits eingeschränkt sind. Bei den in 19 dargestellten verschiedenen Verzweigungsbefehlen gilt z. B.: es ist dafür gesorgt, dass die einzelnen Befehle BC, BT und BF zu Befehlen für bedingte Verzweigung gehören; es ist dafür gesorgt, dass der Befehl BSR in derselben Figur zu Unterroutine-Verzweigungsbefehlen gehört; und es ist dafür gesorgt, dass der Befehl BRA zu Befehlen für unbedingte Verzweigung gehört. Auf den Detailinhalt der einzelnen Befehle sollte hinsichtlich der Beschreibungseinzelheiten für Befehle wie folgt Bezug genommen werden.
  • Beim modularen Programmierverfahren zum Erstellen eines Programms als Satz relativ kleiner Unterroutinen (oder Funktionen) springen die Befehle für bedingte Verzweigung innerhalb der Funktionen. Da die meisten Funktionen eine Größe aufweisen, die einigen hundert Bytes entspricht, kann die Verteilung im Wesentlichen durch eine Verschiebung von 8 Bits abgedeckt werden. Andererseits hat eine Unterroutinenverzweigung die Tendenz, aus einer Funktion selbst zu einem fernen Ort herauszuspringen, so dass eine Verschiebung von größerer Bitanzahl als bei einem Befehl für bedingte Verzweigung erforderlich ist. Eine unbedingte Verzweigung kann dazu verwendet werden, eine andere Funktion bei der letzten von Funktionen aufzurufen, um das Programm zu beschleunigen. Da es als vorteilhaft erscheint, dass eine unbedingte Verzweigung ähnlich wie eine Unterroutine-Verzweigungsbedingung gehandhabt wird, ist die Bitanzahl für die Verschiebung gleich derjenigen für eine Unterroutinenverzweigung. So trägt die feste Zuweisung der korrekten Verschiebungslänge entsprechend der Art des Verzweigungsbefehls zur Realisierung eines Befehlsformats mit einer festen Länge von 16 Bits bei, ohne dass wesentliche Störungen auftreten.
  • [13] Verarbeitung unmittelbarer Daten
  • Wenn das Befehlsformat mit einer festen Länge von 16 Bits verwendet wird, ist es angesichts der Tatsache, dass die Datenwortlänge 32 Bits beträgt, nicht praxisgerecht, alle unmittelbaren Werte auf 16 Bits oder weniger zu beschränken. Bei der vorliegenden Ausführungsform ist ein Verfahren verwendet, bei dem der Wert eines Registers, wie des Programmzählers PC, und die Relativadresse dazu genutzt werden, die unmittelbaren Werte von 16 Bits oder mehr innerhalb eines Befehlsformats auszuwählen.
  • Die Befehle für unmittelbare Verarbeitung sind beispielhaft durch die in 13 dargestellten Ladebefehle gegeben, wie MOV.W@(disp, PC)Rn oder MOV.L@(disp. PC)Rn. Diese Befehle sind solche zum Einspeichern eines unmittelbaren Datenwerts in ein Universalregister Rn. Wenn die Daten Wörter-/Langwörter sind, wird auf die Daten in einer Tabelle Bezug genommen, die an einer Adresse gespeichert ist, die dadurch spezifiziert wird, dass die Verschiebung zum Inhalt des Programmzählers PC addiert wird. Wenn die Daten Wörter sind, wird die Verschiebung um 1 bis 9 Bits nach links verschoben, so dass sich der Relativabstand zur Tabelle von –256 bis +254 Bytes ändert. Der Programmzähler PC ist die Kopfadresse, die um zwei Befehle hinter dem aktuellen Befehl liegt. Dies macht es erforderlich, einen Wortdatenwert an einer Grenze von 2 Bits anzuordnen. Wenn die Daten Langwörter sind, wird die Verschiebung um 2 bis 10 Bits nach links verschoben, damit der Relativabstand zum Operanden von –512 bis +508 Bytes geändert wird. Der Programmzähler PC ist die Kopfadresse, die um zwei Befehle hinter dem vorliegenden Befehl liegt, jedoch sind die zwei gering signifikanten Bits auf B und 00 korrigiert. Dies macht es erforderlich, einen Langwort-Datenwert an der Grenze von 4 Bytes anzuordnen.
  • [14] Implizite Registerauswahl
  • Die implizite Registerauswahl soll dazu dienen, ein für einen Operanden festgelegtes Universalregister trotz der Tatsache auszuwählen, dass in einem Befehl kein Registerauswählfeld vorhanden ist. Das Universalregister wird, wie hier spezifiziert, dazu verwendet, z. B. eine Speicheradresse zu bestimmen oder den aus einem Speicher abgerufenen Datenwert einzuspeichern. Der Befehl für diese implizite Registerauswahl kann beispielhaft durch MOV @(disp, R1)R0 oder MOV R0, @(disp. R1) angegeben werden, wie in 14 dargestellt. Wie es aus den dem Befehl in derselben Figur entsprechenden Codes ersichtlich ist, enthält der Befehl nur den Operationscode und die Verschiebung von dddddddd von 8 Bits, jedoch kein Registerauswählfeld. Diese Verschiebung wird dazu verwendet, eine Speicheradresse gemeinsam mit dem Wert des implizit ausgewählten Registers R1 zu bestimmen. Dank dieser impliziten Registerauswahl kann selbst bei einem Befehl, der den Wert des Registers und der Verschiebung benötigt, die Befehlswortlänge auf 16 Bits eingeschränkt werden, ohne dass irgendeine Verringerung der Bitanzahl erforderlich wäre, die für die Verschiebung erforderlich ist.
  • [15] Funktionsmäßig zusammengesetzter Befehl
  • Ein funktionsmäßig zusammengesetzter Befehl ist beispielsweise ein Bitoperationsbefehl, wie AND.B #imm, R1, wie in 15 dargestellt. Dieser Befehl ist ein solcher aus drei Befehlen zum Erzeugen des logischen Produkts (d. h. für eine UND-Operation) zwischen dem 8-Bit-Datenwert eines Speichers, der relativ zum zuvor implizit ausgewählten Register R1 ausgewählt wurde, wie zuvor, und dem unmittelbaren Datenwert von 8 Bits zum Ausführen eines Lesevorgangs betreffend den Speicher, der UND-Operation und der Schreibrücklieferung des Ergebnisses der UND-Operation in den Speicher. Eine Operation dieser Art tritt beim Steuern von als Baustein ausgebildeten Bauteilen häufig auf, und die Verwendung eines derartig funktionsmäßig zusammengesetzten Befehls im Befehlsformat mit einer festen Länge von 16 Bits trägt zu einer Verbesserung der Codeeffizienz bei.
  • [16] Wahr/Falsch-Einstellbefehl für eine ausgewählte Bedingung
  • Ein Befehl zum Einstellen von Wahr/Falsch für das Arithmetikergebnis betreffend eine ausgewählte Bedingung kann beispielhaft durch acht Arten von CMP-Befehlen angegeben werden, wie beispielhaft in 16 dargestellt. Es handelt sich um Befehle zum Vergleichen von Operanden zum Setzen des Vergleichsergebnisses auf das T(True = Wahr)–Bit des oben genannten Statusregisters SR. Zum Beispiel vergleichen die mit COMP/EQ, Rm und RnFF spezifizierten Befehle, ob die Werte der Register Rm und Rn gleich sind oder nicht, und sie setzen das T-Bit auf 1, falls JA gilt, löschen jedoch dasselbe auf 0. Durch Zuweisen des T-Bits zum Statusregister, damit die Operation des Setzens des T-Bits auf Wahr/Falsch für das Vergleichsergebnis auf einen Befehl mit einem Befehlsformat mit einer festen Länge von 16 Bits ausgeführt werden kann, kann der nächste Befehl, wie der oben genannte Befehl BT für eine bedingte Verzweigung für eine Operation auf Grundlage des sich ergebenden Werts Wahr/Falsch unmittelbar auf das T-Bit Bezug nehmen. So muss die Beschreibung der Bedingung, die für das Arithmetikergebnis gemäß dem vorigen Befehl erforderlich ist, nicht in diesem BT-Befehl selbst erfolgen, so dass der Bereich der für den BT-Befehl erforderlichen Verschiebung entsprechend im beschränkten Befehlsformat fester Länge vergrößert werden kann. Im Ergebnis trägt diese Struktur zur Erzielung eines Befehlsformats mit einer festen Länge von 16 Bits bei.
  • [17] Liste von Befehlen
  • Zuvor wurden kennzeichnende Befehle repräsentativ beschrieben, die ein Format mit einer festen Länge von 16 Bits aufweisen. Um alle Gesichtspunkte eines Befehlsformats mit einer festen Länge von 16 Bits klarzustellen, werden alle Befehle des Mikrocomputers des vorliegenden Ausführungsbeispiels nachfolgend aufeinanderfolgend in alphabetischer Reihenfolge beschrieben. Zu den Beschreibungen der einzelnen Befehle gehören die Befehlsnamen, die Formate (wobei "imm" und "disp" Zahlenwerte oder Symbole kennzeichnen), die durch die Eingabeformate des Assemblers vorgegeben werden, Hinweise zum Gebrauch der Befehle, Beschreibungen für Operationen, wiedergegeben in der Sprache C, Operationsbeispiele (wobei der Zustand vor und nach einer Befehlsausführung angegeben wird), wie durch Assembler-Mnemonikangaben beispielhaft veranschaulicht, und Codes. Vor der Beschreibung der einzelnen Befehle werden hier die Registerstrukturen als Programmiermodelle, wie sie zu beachten sind, wenn ein Programm auszuführen ist, unter Bezugnahme auf die 28 beschrieben. Die Register als Programmiermodelle sind beispielhaft nicht nur durch die oben genannten Universalregister R0 (d. h. R0H, R0L) bis R15 (d. h. R15H, R15L) gegeben, sondern auch durch Steuerregister, wie ein Statusregister SR, ein Prozedurregister PR (d. h. PRH, PRL), ein Globalbasisregister GB (BGRH, GBRL), einen Programmzähler PC (PCH, PCL), ein Vektorbasisregister VBR (VBRH, VBRL) oder ein Unterbrechungsregister BR (BRH, BRL). Beim Beispiel der 28 gilt Folgendes: das Register R0 ist ein Akkumulator; das Register R1 ist ein Indexregister; und das Register R15 ist ein Stackzeiger. Beim Statusregister SR der 28 gilt Folgendes: auf das M/Q-Bit wird bei einem Befehl DIV Bezug genommen; das I-Bit ist ein Maskierungsbit; das Vorzeichen "–" entspricht einem umgekehrten Bit; und auf das D-Bit wird bei einem Befehl PASS Bezug genommen; das C-Bit ist ein solches, das Übertrag/Borgen/Überlauf/Unterschreiten/Herausschieben widerspiegelt; und das T-Bit ist ein solches, das Wahr (1) und Falsch (0) wiedergibt, wie es zuvor beschrieben ist.
  • Bei den Operationsbeschreibungen, deren Inhalt in C angegeben wird, ist die Verwendung der folgenden Ressourcen angenommen, wobei jedoch keine spezielle Beschränkung hierauf besteht:
  • Figure 00380001
  • Der Inhalt der einzelnen Größen betreffend die Adresse Addr wird rückgeliefert.
  • Die Lesewerte anderer Wörter als der Adresse (2n) und anderer Langwörter als der Adresse (4n) werden als Adressfehler erkannt.
  • Figure 00380002
  • Die Daten Data werden mit ihren einzelnen Größen in die Adresse Addr eingeschrieben.
  • Die Schreibwerte von anderen Wörtern als den Adressen (2n) und anderen Langwörtern als den Adressen (4n) werden als Adressfehler erkannt.
  • Figure 00390001
  • Figure 00400001
  • Figure 00410001
  • Figure 00420001
  • Figure 00430001
  • Figure 00440001
  • Figure 00450001
  • Figure 00460001
  • Figure 00470001
  • Figure 00480001
  • Figure 00490001
  • Figure 00500001
  • Figure 00510001
  • Figure 00520001
  • Figure 00530001
  • Figure 00540001
  • Figure 00550001
  • Figure 00560001
  • Figure 00570001
  • Figure 00580001
  • Figure 00590001
  • Figure 00600001
  • Figure 00610001
  • Figure 00620001
  • Figure 00630001
  • Figure 00640001
  • Figure 00650001
  • Figure 00660001
  • Figure 00670001
  • Figure 00680001
  • Figure 00690001
  • Figure 00700001
  • Figure 00710001
  • Figure 00720001
  • Figure 00730001
  • Figure 00740001
  • Figure 00750001
  • Figure 00760001
  • Figure 00770001
  • Figure 00780001
  • Figure 00790001
  • Figure 00800001
  • Figure 00810001
  • Figure 00820001
  • Figure 00830001
  • Figure 00840001
  • Figure 00850001
  • Figure 00860001
  • Figure 00870001
  • Figure 00880001
  • Figure 00890001
  • Figure 00900001
  • Figure 00910001
  • Figure 00920001
  • Figure 00930001
  • Figure 00940001
  • Figure 00950001
  • Figure 00960001
  • Figure 00970001
  • Figure 00980001
  • Figure 00990001
  • Figure 01000001
  • Figure 01010001
  • Figure 01020001
  • Figure 01030001
  • Figure 01040001
  • Figure 01050001
  • Figure 01060001
  • Figure 01070001
  • Figure 01080001
  • Figure 01090001
  • Figure 01100001
  • Figure 01110001
  • Figure 01120001
  • Figure 01130001
  • Figure 01140001
  • Figure 01150001
  • Figure 01160001
  • Figure 01170001
  • Figure 01180001
  • Figure 01190001
  • Figure 01200001
  • Figure 01210001
  • Figure 01220001
  • Figure 01230001
  • Figure 01240001
  • Figure 01250001
  • Figure 01260001
  • Figure 01270001
  • Figure 01280001
  • Figure 01290001
  • Figure 01300001
  • Figure 01310001
  • Figure 01320001
  • Figure 01330001
  • Figure 01340001
  • Figure 01350001
  • Figure 01360001
  • Figure 01370001
  • Figure 01380001
  • Figure 01390001
  • Figure 01400001
  • Figure 01410001
  • Figure 01420001
  • Figure 01430001
  • Figure 01440001
  • Figure 01450001
  • Figure 01460001
  • Figure 01470001
  • Figure 01480001
  • Als Nächstes werden nachfolgend Ausführungsformen der insoweit beschriebenen codierten Divisionen, wie sie unter Verwendung des Mikrocomputers oder dergleichen auszuführen sind, beschrieben.
  • [18] Prinzip der Vorverarbeitung eines Dividenden bei codierter Division
  • Die 29 zeigt schematisch das Prinzip einer Vorverarbeitung eines Dividenden bei codierter Division gemäß der vorliegenden Ausführungsform. Bei der codierten Division, die z.B. durch Y (Quotient) = X (Dividend) ÷ 3 (Divisor) ausgedrückt ist, wird der Wert (X – 1), d.h. die Differenz, die dadurch erhalten wird, dass 1 vom Dividenden X abgezogen wird, als Dividend verwendet, wenn der Dividend negativ ist. Dem Prinzip nach wird die Division im Zustand ausgeführt, in dem die Koordinate des Quotienten Y um 1 nach links verschoben wird, wie es in derselben Figur dargestellt ist. So ist es abweichend vom Stand der Technik nicht erforderlich, jedesmal im Verlauf der Operation zum Bestimmen des Quotienten festzulegen, ob der Teilrest null ist oder nicht, und eine Hardware für die Entscheidung bereitzustellen. Wenn ein genauer Rest zu bestimmen ist, wird der zuletzt bestimmte Rest korrigiert.
  • [19] Verarbeitungsprozedur eines prinzipiellen Beispiels codierter Division
  • Die 30 zeigt die Verarbeitungsprozedur eines prinzipiellen Beispiels codierter Division für den Fall, dass der Dividend negativ ist. In derselben Figur ist die Division –9 ÷ –3 ein Beispiel. Die Zahl "–9" ist als 2-er-Komplement durch "110111" ausgedrückt, und die Zahl "–3" ist durch "101" ausgedrückt. Da der Dividend negativ ist, wird als Dividend der Wert "110110" verwendet, der durch Subtrahieren von 1 von –9 erhalten wird. Der Code des Quotienten wird aus der Exklusiv-ODER-Verknüpfung des Codes "1" des Dividenden und des Codes "1" des Divisors bestimmt (*1). Die erste Berechnung des Teilrests wird dadurch ausgeführt, dass der Dividend "110110" addiert oder subtrahiert wird und der Wert "1101" vom Codebit des Divisors zur signifikanteren Seite hin (d.h. nach links) erweitert wird, während die Stellen der Codebits ausgeglichen werden. Die Berechnung ist die Subtraktion, wenn die Exklusiv-ODER-Verknüpfung der zwei Codebits null ergibt, und sie ist die Addition, wenn die Exklusiv-ODER-Verknüpfung 1 (*2) ergibt. Bei diesem Beispiel wird die Subtraktion ausgeführt. Im Ergebnis wird der erste Teilrest "000010" erhalten. Der dem ersten Teilrest entsprechende Quotient ist (*3) durch den invertierten Logikwert der Exklusiv-ODER-Verknüpfung zwischen dem höchstsignifikanten Bit des Teilrests und dem Codebit des Di visors gegeben. In ähnlicher Weise werden die Quotientenbits sequenziell bestimmt. Wenn ein genauer Rest erforderlich ist, wird gemäß diesem Beispiel der Wert 1 zum endgültigen Rest addiert. Wenn die Division ausgeführt wird, während der Dividend unverändert auf dem Wert "110111" belassen wird, wie es auf der unteren Seite in derselben Figur dargestellt ist, wird kein korrektes Quotientenbit bestimmt, da alle Bits des Rests auf "0" gesetzt sind. Daher wird jedesmal dann, wenn der Teilrest berechnet wird, ermittelt, ob alle Bits des Teilrests den Wert "0" haben oder nicht. Falls ja, muss der Logikwert des Quotientenbits invertiert werden. Übrigens zeigt die 31 ein Beispiel einer codierten Division für den Fall negativ ÷ positiv, und die 32 zeigt individuelle Beispiele codierter Divisionen für die Fälle positiv ÷ positiv und positiv ÷ negativ.
  • [20] Gesamtverarbeitungsprozedur einer codierten Division
  • Die 33 ist ein allgemeines Format, das die Gesamtheit der Grundannahmen oder Verarbeitungsprozeduren einer codierten Division gemäß der vorliegenden Ausführungsform zeigt, die aus der bisher erfolgten Beschreibung konturmäßig verständlich sein sollte.
  • «1» Es erfolgt eine Korrektur hinsichtlich eines Dividenden. Genauer gesagt, wird der Wert 1 vom Dividend abgezogen, wie es in der 34(A) dargestellt ist, wenn der Dividend negativ ist. Diese Verarbeitung sollte individuell dadurch ausgeführt werden, dass der Code des Dividenden untersucht wird, jedoch wird bei der vorliegenden Ausführungsform das Verfahren des Entnehmens des Codebits des Dividenden zum Subtrahieren desselben vom Dividenden verwendet. Anders gesagt, wird als Vorverarbeitung der Division die Operation des Subtrahierens des Codebits oder des MSB des Dividenden verwendet. Da das MSB des Dividenden 1 ist, wenn der Dividend negativ ist, wird der Wert 1 vom Dividend subtrahiert. Da der Dividend ein MSB vom Wert 0 hat, falls er positiv ist, verbleibt er unverändert. So kann durch Verwenden der Verarbeitung des Subtrahierens des MSB vom Dividenden mit diesem MSB das Divisionsprogramm ausgeführt werden, ohne dass zu berücksichtigen wäre, ob der Dividend positiv oder negativ ist. Da darüber hinaus keine derartige Entscheidung erforderlich ist, wird die Divisionsverarbeitung beschleunigt, wobei immer noch eine bessere Division selbst unter Verwendung einer üblichen Schaltung ausgeführt werden kann, unabhängig davon, ob der Dividend positiv oder negativ ist.
  • Hierbei ist zu beachten, dass der vom Dividenden zu subtrahierende Wert die Gewichtung des LSB des Dividenden aufweist. Die Bitposition oder die Stelle des Dividenden, von der der oben genannte Wert "1" zu subtrahieren ist, ist das geringstsignifikante Bit (LSB) des Dividenden. Der Grund, weswegen wir es wagen, eine derartige Beschreibung vorzunehmen, besteht darin, den Fall zu berücksichtigen, bei dem der Dividend eine Festkommazahl ist, wie es bereits beschrieben wurde. Darüber hinaus handelt es sich, wobei zu beachten ist, dass das Codebit 1 ist, wenn der Dividend negativ ist, und dass es 0 ist, wenn er positiv ist, um die Subtraktion von 1 vom negativen Dividenden, wenn das Codebit (d.h. das MSB des Dividenden) von einem Dividenden mit Codebit subtrahiert wird. Dies könnte als Transformation der als 2-er-Komplement ausgedrückten negativen ganzen Zahl in ein 1-er-Komplement angesehen werden. Demgemäß kann die Vorverarbeitung für den Dividenden ausgeführt werden, ohne dass berücksichtigt wird, ob dieser positiv oder negativ ist. Die 35 zeigt den Zustand einer Transformation, bei der der Wert 1 von einer negativen ganzen Zahl mit 4 Bits subtrahiert wird. Da 1 zusätzliches Bit erforderlich ist, um das Minimum des 2-er-Komplements einer endlichen Bitanzahl in ein 1-er-Komplement umzuwandeln, wird, falls erforderlich, eine Erweiterung um 1 Bit ausgeführt. Da der Teilrest positiv sein kann, wird andererseits die oben genannte Transformation für die negative ganze Zahl über die gesamte ganze Zahl erstreckt, um einen Ausdruck einer neuen ganzen Zahl einzuführen. Innerhalb eines Bereichs einer codierten ganzen Zahl von z.B. 4 Bits wird ein Ausdruck verwendet, wie er in der 36 dargestellt ist. Übrigens kann, wenn im Ausdruck eine beliebige ganze Zahl durch ZZ ausgedrückt wird, wobei der Wert 1 von dieser Zahl abgezogen wird, der Ausdruck ZZ, der einer Transformation dahingehend unterzogen wurde, dass unter Verwendung des 2-er-Komplements 1 von der ganzen Zahl abgezogen wurde, als identisch mit dem 1-er-Komplement angesehen werden, so dass er durch die Zahl 0 oder größer ausgedrückt werden kann, die um 1 kleiner als der intrinsische Wert ist. Dabei hat das Codebit 0 wie bei einer negativen Zahl den Wert 1.
  • «2» Der Code eines Quotienten wird aus einem Dividenden und einem Divisor bestimmt, wie es in der 34(B) dargestellt ist. Genauer gesagt, wird der Code des Quotienten aus der Exklusiv-ODER-Verknüpfung zwischen dem Code des Dividenden und dem Code des Divisors vorhergesagt.
  • «3» Es werden Quotientenbits erstellt, während sequenziell die Teilreste bestimmt werden. Die Additions- und Subtraktionsbefehle zum Bestimmen des Teilrests werden gemäß der 37(A) bestimmt. Genauer gesagt, wird, wenn die Exklusiv-ODER-Verknüpfung zwischen dem Code Q des Teilrests (oder des Dividenden) und dem Code M des Divisors 0 ist, die Subtraktion angewiesen, um den Divisor schematisch vom Teilrest (oder Dividenden) zu subtrahieren. Wenn die Exklusiv-ODER-Verknüpfung zwischen dem Code Q des Teilrests (oder des Dividenden) und dem Code M des Divisors 1 ist, wird die Addition angewiesen, um den Divisor schematisch zum Teilrest (oder zum Dividenden) zu addieren. Das Quotientenbit wird dadurch erhalten, wie es in der 37(B) dargestellt ist, dass das Ergebnis der Exklusiv-ODER-Verknüpfung zwischen dem Codebit des Teilrests nach der oben genannten Subtraktion oder Addition und dem Codebit des Divisors invertiert wird.
  • Hier wird das Verfahren detaillierter beschrieben, gemäß dem das Quotientenbit berechnet wird. Die aufsummierten Inhalte des Quotientenbit-Berechnungsverfahrens werden in die folgenden Punkte a), b), c) und d) eingeteilt, wie es in der 37(B) dargestellt ist:
    • a) Fall A ÷ B (A ≥ 0, B > 0, A und B: 2-er-Komplemente) Wie es in der Technik gut bekannt ist, wird das Quotientenbit auf 1 gesetzt, wenn das Codebit des Teilrests 0 ist, und es wird auf 0 gesetzt, wenn das Codebit des Teilrests 1 ist.
    • b) Fall A ÷ B (A ≥ 0, B < 0, A und B: 2-er-Komplemente) Da der Quotient negativ ist, ist die Vorgehensweise, um das Quotientenbit zu erzeugen, gegenüber dem Fall (a) umgedreht. Kurz gesagt, wird das Quotientenbit auf 0 gesetzt, wenn das Codebit des Teilrests 0 ist, und es wird auf 1 gesetzt, wenn das Codebit des Teilrests 1 ist. Der Quotient ist ein 1-er-Komplement. Der Quotient wird schließlich in ein 2-er-Komplement gewandelt, wie dies in einem später beschriebenen Punkt «4» beschrieben wird, wenn alle Quotientenbits bestimmt sind.
    • c) Fall A ÷ B (A < 0, B < 0, A und B: 2-er-Komplemente) Die Gewichtung 1 des LSB des Dividenden wird vorab vom Dividenden mit dem LSB subtrahiert. Negative Ausdrücke des Dividenden und bei der vorliegenden Ausführungsform sind 1-er-Komplemente, und der positive Ausdruck ist um die Gewichtung 1 des LSB kleiner als der intrinsische Wert. Das MSB-Codebit wird auf 1 gesetzt, wenn es kleiner als 0 ist, und auf 0, wenn es größer als 0 ist. Da der Quotient positiv ist, wird das Quotientenbit auf 1 gesetzt, wenn das MSB-Codebit bei der vorliegenden Ausführungsform 1 ist, und es wird auf 0 gesetzt, wenn das MSB-Codebit bei der vorliegenden Ausführungsform 0 ist.
    • d) Fall A ÷ B (A < 0, B > 0, A und B: 2-er-Komplemente) Die Gewichtung 1 des LSB des Dividenden wird vorab vom Dividenden mit dem LSB subtrahiert. Negative Ausdrücke des Dividenden und bei der vorliegenden Ausführungsform sind 1-er-Komplemente, und der positive Ausdruck ist um die Gewichtung 1 des LSB kleiner als der intrinsische Wert. Das MSB-Codebit wird auf 1 gesetzt, wenn es kleiner als 0 ist, und auf 0, wenn es größer als 0 ist. Da der Quotient negativ ist, ist die Art zum Erstellen des Quotientenbits gegenüber der im Fall (c) umgekehrt. Das Quotientenbit wird auf 1 gesetzt, wenn das MSB-Codebit bei der vorliegenden Ausführungsform 1 ist, und auf 0, wenn das MSB-Codebit bei der vorliegenden Ausführungsform 0 ist. Der Quotient wird abschließend in ein 2-er-Komplement gewandelt, wie es im späten beschriebenen Punkt «4» beschrieben wird, wenn alle Quotientenbits bestimmt sind.
  • «4» Der im oben genannten Punkt «3» erhaltene Quotient ist wegen seines Codes unter Umständen nicht immer ein genauer Wert. Dies, da der Quotient ein 1-er-Komplement ist, wenn sein im oben genannten Punkt «2» bestimmter Code 1 ist. Im Ergebnis wird der abschließende Quotient entsprechend dem Code des oben genannten Quotienten und dem Quotientenbit bestimmt. Da der Quotient, falls er negativ ist (wobei das Codebit des Quotienten 1 ist), durch ein 1-er-Komplement ausgedrückt wird, wie es in der 38 dargestellt ist, wird eine Korrektur dadurch ausgeführt, dass zum im Punkt «3» erhaltenen Quotienten 1 addiert wird, um ihn in ein 2-er-Komplement zu wandeln. So wird ein korrekter Quotient bestimmt. Darüber hinaus wird für die abschließende vorliegende Ausführungsform eine Restkorrektur ausgeführt, wie es in der 38 dargestellt ist.
  • [21] Spezielle Beispiele codierter Divisionen
  • Die 39 und 40 zeigen ein spezielles Beispiel der Verarbeitung, die die oben genannten Grundprozeduren einer codierten Division verwendet. Das dargestellte Beispiel ist auf eine codierte Division –8 ÷ –3 gerichtet, die dahingehend beschrieben wird, dass ein Universalregister von 6 Bits verwendet wird, um dadurch das Verständnis zu erleichtern. Die 4 zeigt die Verarbeitung, wie sie anschließend an die in der 39 dargestellte Endverarbeitung auszuführen ist, und Beschreibungen in der Spaltenrichtung sind identisch mit denen der 39. In diesen Figuren spezifizieren die Zeichen R0 bis R4 einzelne Universalregister von 6 Bits, und die Buchstaben Q, M und T kennzeichnen Bitflags in Steuerregistern oder Statusregistern. Unter diesen spezifiziert der Buchstabe Q die Bits zum Zwischenspeichern der Codes der Dividenden oder der Teilreste; der Buchstabe M spezifiziert die Bits zum Zwischenspeichern der Codes der Divisoren; und der Buchstabe T kennzeichnet die Bits zum Zwischenspeichern der Quotientenbits oder der Überträge. An den linken Enden der Figuren sind die Anweisungscodes und die Operanden eingetragen, und in den entsprechenden Spalten sind die Inhalte der Universalregister und der Bitflags dargestellt. In den Angaben, die die Inhalte der Universalregister und der Bitflags anzeigen, bedeuten die unterstrichenen Inhalte, dass sie durch Ausführen der entsprechenden Anweisungen aktualisiert werden. Der Buchstabe X gibt an, dass die Werte der Bits nicht festgelegt sind. In diesem Punkt wird die Verarbeitung der codierten Division sequenziell beschrieben, und nachfolgend werden Beispiele von Symbolen aufgelistet, wie sie in der Beschreibung verwendet werden:
    • ←: zwischenzuspeichern;
    • MSB (Rn): das MSB (höchstsignifikante Bit) des Registers Rn;
    • LSB (Rn): das LSB (geringstsignifikante Bit) des Registers Rn;
    • ^ : Operator, der eine Exklusiv-ODER-Verknüpfung anzeigt;
    • Rn«=1: Linksverschiebung des Werts des Registers Rn um 1 Bit;
    • Rn»=1: Rechtsverschiebung des Werts des Registers Rn um 1 Bit;
    • (Q:Rn): Binärzahl von 7 Bits, die dadurch erstellt wird, dass das Bit Q zum MSB des Registers Rn addiert wird;
    • (M:Rn): Binärzahl von 7 Bits, die dadurch erstellt wird, dass das Bit M zum MSB des Registers Rn addiert wird;
    • – : Operator, der eine Negation (Bitinvertierung) anzeigt;
    • Rotation von (Rn:T) in der Uhrzeigerrichtung: der Wert des Registers Rn wird nach rechts verschoben, während das Bit T im MSB des Registers Rn verschoben wird, um das LSB des herausgeschobenen Werts im Bit T zwischenzu speichern; und
    • Rotation von (Rn:T) in der Gegenuhrzeigerrichtung: der Wert des Registers Rn wird nach links verschoben, während das Bit T im MSB des Registers Rn verschoben wird, um das LSB des herausgeschobenen Werts im Bit T zwischenzuspeichern.
  • (1) FOR R0,R0
  • R0E←0: Die Werte des Registers R0 werden alle auf 0 gesetzt.
  • (2) SL3 R1
  • Die weniger signifikanten 3 Bits (Divisor) des Registers R1 werden zu 3 mehrsignifikanten Bits nach links verschoben.
  • (3) DIVOS R0,R2
  • Q←MSB (R2), M←MSB(R0)=0, T←Q^M=Q^0=Q.
  • Demgemäß werden die Codes der Dividenden in den Bits T zwischengespeichert.
  • (4) MOVT R3
  • R3←T. Die Codes der Dividenden werden im LSB (R3) zwischengespeichert. Diese Codes sind zum Bestimmen der Reste erforderlich.
  • (5) SUBC R0,R2
  • R2←(R2-T). Das 2-er-Komplement wird in ein 1-er-Komplement transformiert. Dies entspricht der Subtraktion des Werts 1 vom im R2 zwischengespeicherten Dividenden, wenn der Dividend negativ ist. Tatsächlich dient diese Verarbeitung zum Subtrahieren des Werts des MSB-Codebits eines Dividenden vom Dividenden. Demgemäß ist es nicht erforderlich, zu erfassen, ob der R3 positiv oder negativ ist, so dass in beiden Fällen dieselbe Anweisung ausgeführt werden kann: Anders gesagt, wird ein Verarbeitungsablauf beseitigt, gemäß dem eine Verzweigung erfolgt, um 1 zu subtrahieren, falls der Dividend negativ ist.
  • (6) DIVOS R1,R2
    • Q←MSB(R2): Der Code des Dividenden wird im Bit Q erhalten;
    • M←MSB(R1): Der Code des Divisors wird im Bit M erhalten;
    • T←Q^M: Der Code des Quotienten wird erhalten.
  • (7) DIV1 R1,R2
  • Die Anweisung DIV1 R1,R2 zwischen "l.arepeat 3" und ".aendr" wird dreimal wiederholt.
  • In jedem Ausführungszyklus der Anweisung DIV1 wird Folgendes ausgeführt:
    • – für Q^M=0 wird eine Subtraktionsanweisung ausgegeben, und für Q^M=1 wird eine Additionsanweisung ausgegeben;
    • – das Bit Q wird durch Q←MSB(R2) erhalten; der Dividend des R2 wird durch R2«=1 um 1 Bit nach links verschoben; und das Bit T (hier der Code des Quotienten) wird durch LSB (R2)←T im LSB des R2 zwischengespeichert;
    • – die Operation wird durch (Q:R2)←(Q:R2)±(M:R1) entsprechend den Additions-/Subtraktionsbefehlen ausgeführt; und
    • – das Quotientenbit wird durch T←(Q^M) im Bit T zwischengespeichert.
  • Durch dreimaliges Ausführen der Anweisung DIV1 wird der Code des letzten Teilrests in das Bit Q eingeführt; das geringstsignifikante Bit des Quotienten wird in das Bit T eingeführt; der kleinste Teilrest wird in die höhersignifikanten 3 Bits des R2 eingeführt; und der Quotient wird in die weniger signifikanten 3 Bits desselben eingeführt. Der durch (6) DIVOS R1,-R2 im Bit T erhaltene Code des Quotienten wird in das weniger signifikante Bit 3. Bit eingeführt.
  • (8) MOV R2,R4
  • R2 wird in R4 kopiert. Dies dient zum Bestimmen des Rests dadurch, dass das R4 genutzt wird.
  • (9) EXTS.W R2,R2
  • Das geringstsignifikante 3. Bit wird codemäßig auf die höhersignifikanten 3 Bits erweitert. Dieser Code zeigt den Code des Quotienten an.
  • (10) ROTCL R2
  • (R2:T) wird in der Gegenuhrzeigerrichtung verdreht. Genauer gesagt, wird der Wert des Registers R2 nach links verschoben, während das Bit T im LSB des Registers R2 verschoben wird, um das MSB des herausgeschobenen Werts im Bit T zwischenzuspeichern. Im Ergebnis wird der Quotient in den weniger signifikanten 3 Bits von R2 zwischengespeichert, und der Code des Quotienten wird im Bit T zwischengespeichert.
  • (11) ADDC R0,R2
  • Durch R2←R2+T wird ein 1-er-Komplement in ein 2-er-Komplement gewandelt. Genauer gesagt, wird der Quotient unmittelbar vor der Ausführung dieser Anweisung durch R2 zwischengespeichert, und sein Code wird im Bit T zwischengespeichert. Im Ergebnis wird das 1-er-Komplement, wenn es durch den R2 zwischengespeichert ist, dadurch in ein 2-er-Komplement gewandelt, dass der Wert des Bits T zum Wert von R2 addiert wird. Da T=0 gilt, wenn der Quotient negativ ist, wird der Wert von R2 vom 1-er-Komplement durch Addieren von T zum 2-er-Komplement gewandelt. So wird ein korrekter Quotient bestimmt.
  • (12) DIVOS R0,R4
  • Das MSB (der Code des Rests) von R4 wird durch Q←MSB(RS) im Bit Q zwischengespeichert;
    das MSB von R0 (=0) wird durch M←MSB(R0) im Bit M zwischengespeichert; und
    die Exklusiv-ODER-Verknüpfung zwischen dem Bit Q und dem Bit M, d.h., das Bit Q (der Code des Rests) wird durch T←Q^M=Q^0=Q im Bit T zwischengespeichert, so dass der Code des Rests im Bit T erhalten wird.
  • (13) MMOVT R0
  • Der Code des Rests vor der Korrektur, der im Bit T zwischengespeichert ist, wird durch R0←T im LSB von R0 zwischengespeichert. Dies wird zum Korrigieren des Rests verwendet.
  • (14) FOR R3,R0
  • Das Ergebnis der Exklusiv-ODER-Verknüpfung zwischen dem Code des Dividenden und dem Code des Rests vor der Korrektur wird R0←R3^R0 im LSB zwischenge speichert.
  • (15) ROTCR R0
  • Durch Rotieren von (R0:T) in der Uhrzeigerrichtung wird der Wert des Registers R0 nach rechts verschoben, während das Bit T im MSB des Registers R0 verschoben wird, um das LSB des herausgeschobenen Werts im Bit T zwischenzuspeichern. Dadurch wird das Ergebnis der Exklusiv-ODER-Verknüpfung zwischen dem Code des Dividenden und dem Code des Rests vor der Korrektur in das Bit T eingesetzt.
  • (16) BF L1
  • Wenn das Bit T den Wert 0 hat, erfolgt eine Verzweigung zur Marke L1. Es ist keine Korrektur des Rests erforderlich, da die Codes des Dividenden und des Rests für T=0 identisch sind.
  • (17) DIVOS R1,R4
  • Der Code des Rests vor der Korrektur wird durch Q←MSB(R4) im Bit Q zwischengespeichert;
    der Code des Divisors wird durch M←MSB(R1) im Bit M zwischengespeichert; und
    das Ergebnis der Exklusiv-ODER-Verknüpfung zwischen dem Bit Q und dem Bit M wird durch T←Q^M im Bit T zwischengespeichert.
  • (18) ROTCR R4
  • Durch die Rotation von (R4:T) in der Uhrzeigerrichtung wird eine Verarbeitung zum Negieren der Linksverschiebung der folgenden Anweisung DIV1 ausgeführt.
  • (19) DIV1 R1,R4
  • Für Q^M=1 wird ein Subtraktionsbefehl ausgegeben und für Q^M=1 wird ein Additionsbefehl ausgegeben;
    das Bit Q wird durch Q←MSB(R4) erhalten; der Wert von R4 wird durch R4«=1 um 1 Bit nach links verschoben und das Bit T (mit dem Ergebnis der Exklusiv-ODER-Verknüpfung zwischen dem Code des Divisors und dem Code des Rests vor der Korrektur zu diesem Zeitpunkt) wird durch LSB(R4)←T im LSB von R4 zwischengespeichert;
    die 7 aufsummierten Bits des Bits M und des Werts von R1 werden zu den 7 Bits der Summe des Bits Q und des Werts von R4 durch ((Q:R4)←(Q:R4)±(M:R1) entsprechend dem Entscheidungsergebnis für die oben genannte Addition/Subtraktion addiert oder davon subtrahiert, und das Ergebnis wird im Bit Q und R4 zwischengespeichert; und
    der invertierte Wert des Ergebnisses dieser Exklusiv-ODER-Verknüpfung wird durch T←(Q^M) im Bit T zwischengespeichert.
  • (20) SR3 R4
  • Die signifikanteren 3 Bits (entsprechend dem Rest) von R4 werden nach rechts zu den weniger signifikanten 3 Bits von R4 verschoben.
  • (21) ADD R3,R4
  • R3 führt eine Zwischenspeicherung des Codes des Dividenden aus. R4 führt eine Zwischenspeicherung des Rests vor der Korrektur aus. Da der Code eines Dividenden durch die oben genannte Anweisung (5) SUBC R0,R2 vom Dividenden subtrahiert wird, wird der korrigierte Rest in den weniger signifikanten 3 Bits von R4 dadurch erhalten, dass R3 zu R4 addiert wird, d.h. durch Transformieren des Rests, wenn er ein 1-er-Komplement ist, in ein 2-er-Komplement.
  • (22) EXTS.W R4,R4
  • Die signifikantere Seite von R4 zum Zwischenspeichern des korrigierten Rests in den weniger signifikanten 3 Bits wird codemäßig erweitert, um den endgültigen Rest mit insgesamt 6 Bits zu bestimmen.
  • Hierbei werden gemäß der vorstehenden Beschreibung zu den 39 und 40 bei dreifachen Wiederholen der Anweisung DIV1 sowohl der Quotient als auch der Rest in R2 zwischengespeichert, und der Wert von R2 wird Bit für Bit jedesmal dann nach links verschoben (R2«=1), wenn die Anweisung DIV1 ausgeführt wird. Wenn es diesbezüglich erforderlich ist, wie beim Operationsverfahren gemäß dem Stand der Technik, zu entscheiden, ob alle Bits des Teilrests 0 sind oder nicht, wenn der Dividend negativ ist, muss die Entscheidung relativ kompliziert dadurch ausgeführt werden, dass jedesmal die in R2 festzulegende Stellenposition des Teilrests bestimmt werden muss. Daher muss beim Operationsverfahren, bei dem wie im Stand der Technik entschieden werden muss, ob alle Bits des Teilrests 0 sind oder nicht, wenn der Dividend negativ ist, die Entscheidung nicht durch Ändern der Stellenposition des Teilrests jedesmal dann, wenn der Quotient und der Rest in verschiedenen Registern zwischengespeichert werden, ausgeführt werden. Bei dieser Modifizierung wird vielmehr die Anzahl der Transferanweisungen, wie sie zum Zwischenspeichern des Quotienten und des Rests in den verschiedenen Registern auszuführen sind, erhöht. Da es bei der vorliegenden Ausführungsform nicht erforderlich ist, jedesmal zu bestimmen, ob alle Bits des Teilrests 0 sind oder nicht, kann die Anzahl der auszuführenden Anweisungen dadurch verringert werden, dass sowohl der Quotient als auch der Rest in R2 zwischengespeichert werden, um eine Beschleunigung der Verarbeitung der codierten Division zu erleichtern.
  • Übrigens zeigen die 41 und 42 ein spezielles Beispiel der Verarbeitung der codierten Division –8 ÷ 3; die 43 und 44 zeigen ein spezielles Beispiel der Verarbeitung der codierten Division –9 ÷ –3; die 45 und 46 zeigen ein spezielles Beispiel der Verarbeitung der codierten Division–3 ÷ 3; die 47 und 48 zeigen ein spezielles Beispiel der Verarbeitung der codierten Division 8 ÷ 3; und die 49 und 50 zeigen ein spezielles Beispiel der Verarbeitung der codierten Division 8 ÷ –3. Diese Inhalte sind von denen der 39 und 40 hinsichtlich der Werte des Dividenden und des Divisors verschieden, und eine detaillierte Beschreibung dazu wird weggelassen.
  • [22] Operationseinheit für codierte Division
  • Die 51 zeigt eine Ausführungsform der Operationseinheit, die dazu in der Lage ist, die oben genannte codierte Division auszuführen. Diese Operationseinheit kann als anderer Ausdruck verstanden werden, der gegenüber dem Universalregisterblock GRB und dem Operationsblock OPB, wie sie in den 6 und 7 dargestellt sind, so modifiziert ist, dass die Erläuterung der codierten Division erleichtert ist. In der 51 ist die Operationseinheit durch fünf Universalregister R0 bis R4 repräsentiert. Das Register R2 wird zum Zwischenspeichern eines Dividenden oder eines Teilrests verwendet, und das Register R1 wird zum Zwischenspeichern eines Divisors verwendet. Die Zahl 3 gekennzeichnet ein Steuerbitregister (d.h. eine dritte Steuerbit-Latcheinrichtung) zum Zwischenspeichern des Codebits eines Quotienten oder eines Quotientenbits. Dieses Steuerbitregister 3 wird nachfolgend kurz als "Bit T" bezeichnet. Die Zahl 4 kennzeichnet ein Schieberegister, das auf den Befehl eines Schiebesteuersignals reagiert, um das oben genannte Bit T über eine Selektorschaltung 14 zum weniger signifikanten Bit oder zum höchstsignifikanten Bit zu verschieben und um das höchstsignifikante Bit oder das geringstsignifikante Bit zu einer Selektorschaltung 15 zu verschieben. Auf den Befehl eines Verschiebesteuersignals hin verschiebt dieses Schieberegister darüber hinaus logisch entweder die höhersignifikanten 16 Bits eines 32-Bit-Eingangssignals zu den weniger signifikanten 16 Bits, oder es verschiebt die weniger signifikanten 16 Bits zu den höhersignifikanten 16 Bits, und es gibt sie aus. Die Zahl 5 kennzeichnet ein Steuerbitregister (d.h. eine Steuerbit-Latcheinrichtung), die die Rolle eines Bits spielt, das zu einem Bit addiert wird, das höher als das höchstsignifikante Bit des Dividenden oder des Teilrests ist. Dieses Steuerbitregister wird kurz als "Bit Q" bezeichnet. Die Zahl 6 kennzeichnet ein Steuerbitregister (d.h. eine zweite Steuerbit-Latcheinrichtung), das die Rolle eines Bits spielt, das zu einem Bit addiert wird, das höher als das höchstsignifikante Bit des Divisors ist. Dieses Steuerbitregister 6 wird kurz als "Bit M" bezeichnet. Die Zahl 7 kennzeichnet eine Operationssteuerschaltung zum Anweisen einer Addition/Subtraktion an eine Arithmetik-Logikoperationsschaltung 8. Diese Zahl 8 kennzeichnet eine Arithmetik-Logikoperationsschaltung von 32 Bits. Diese Arithmetik-Logikoperationsschaltung 8 kann das Eingangssignal eines Ports B abhängig vom Befehl durch die Operationssteuerschaltung 7 zum Eingangssignal eines Ports A addieren oder von ihm subtrahieren, und sie kann das Ergebnis an einen mit dem Dividenden Register R2 verbundenen Bus oder dergleichen ausgeben, und sie führt eine arithmetische Logikoperation mittels Übertrags- oder Borgeflags aus. Die Arithmetik-Logikoperationsschaltung 8 ist ferner dazu in die Lage versetzt, nicht nur das Eingangs-MSB (höchstsignifikante Bit) des Ports B zum Bit M auszugeben, sondern auch Operationen wie eine Addition, eine Subtraktion mit Übertrag, eine Addition mit Übertrag, eine Addition mit Übertrag, eine Exklusiv-ODER-Verknüpfung (EOR) oder eine logische UND-Verknüpfung auszuführen. Die Zahl 9 kennzeichnet eine Operationsschaltung zum Addieren oder Subtrahieren des Werts des Steuerbitregisters 6 zum bzw, vom Wert des Steuerbitregisters 5 gemeinsam mit dem Übertrag oder dem Borgewert der Arithmetik-Logikoperationsschaltung 8. Die Zahl 10 kennzeichnet kann die Negation zwischen dem Ergebnis der Operationsschaltung 9 und der Exklusiv-ODER-Verknüpfung des Steuerbitregisters berechnen, um das Ergebnis der Selektorschaltung 12 auszugeben, und kann die Exklusiv-ODER-Verknüpfung zwischen dem Wert des Steuerbitregisters 5 und dem Wert des Steuerbitregisters 6 berechnen und das Ergebnis an die Selektorschaltung 12 ausgeben. Die Zahl 11 kennzeichnet eine Selektorschaltung zum Auswählen des Eingangssignals des Steuerbitre gisters 5 und zum Auswählen entweder des Ausgangssignals des Schieberegisters über die Selektorschaltung 15 oder des Ausgangssignals der Operationsschaltung 9. Die Zahl 12 kennzeichnet die Selektorschaltung zum Auswählen entweder des Übertrags oder des Borgewerts der Arithmetik-Logikoperationsschaltung 8, des Operationsergebnisses der Operationsschaltung 10 oder des Ausgangssignals der Selektorschaltung 15, um den ausgewählten Wert an das Steuerbitregister 3 oder die Operationsschaltung 9 auszugeben. Die Zahl 13 kennzeichnet eine Selektorschaltung zum Auswählen und Ausgeben entweder der Selektorschaltung 11 zum Auswählen des Eingangssignals für das Steuerbitregister 5 oder der Selektorschaltung 15 zum Auswählen des Eingangssignals der Operationsschaltung 9. Die Zahl 16 kennzeichnet eine Selektorschaltung zum Zuführen des Ausgangssignals des Steuerregisters 3 zur Arithmetik-Logikoperationsschaltung 8 oder zur Selektorschaltung 14. Die Zahl 17 kennzeichnet eine Codeerweiterungsschaltung, deren Eingang mit dem Port B der Arithmetik-Logikoperationsschaltung 8 verbunden ist. Diese Codeerweiterungsschaltung 17 kann auch die Erweiterung null ausführen.
  • 52 zeigt ein Beispiel der Arithmetik-Logikoperationsschaltung 8, der Operationsschaltung 9, der Operationsschaltung 10 und der Operationssteuerschaltung 7, wie sie in der 51 dargestellt sind. Die Operationssteuerschaltung 7 ist so aufgebaut, wie es unter (b) derselben Figur dargestellt ist, dass sie eine Exklusiv-ODER-Schaltung vom Typ mit zwei Eingängen und eine Exklusiv-ODER-Schaltung mit zwei Eingängen für das Ausgangssignal der ersteren und ein Steuersignal aufweist. Die Operationsschaltung 7 gibt das Ausgangssignal der ersteren Exklusiv-ODER-Schaltung unverändert aus, wenn das Steuersignal 0 ist, und sie negiert (invertiert) das Ausgangssignal der ersteren Exklusiv-ODER-Schaltung, und gibt es aus, wenn das Steuersignal 1 ist. Die Operationssteuerschaltung 10 ist so aufgebaut, wie es unter (d) in der 52 dargestellt ist, dass sie eine Exklusiv-ODER-Schaltung vom Typ mit zwei Eingängen und eine Exklusiv-ODER-Schaltung mit zwei Eingängen für das Ausgangssignal der ersteren und ein Steuersignal aufweist. Die Operationsschaltung 10 gibt das Ausgangssignal der ersteren Exklusiv-ODER-Schaltung unverändert aus, wenn das Steuersignal 0 ist und sie negiert (invertiert) das Ausgangssignal der ersteren Exklusiv-ODER-Schaltung, und gibt es aus, wenn das Steuersignal 1 ist. Wie es unter (a) in der 52 dargestellt ist, ist die Arithmetik-Logikoperationsschaltung 8 mit Volladdierern von 32 Bits versehen, wie es repräsentativ für ihre Logikeinheiten für Additionen und Subtraktionen dargestellt ist. Die Zeichen B00 bis B31 kennzeichnen Eingänge des Ports P; die Zeichen A00 bis A31 kennzeichnen Eingänge des Ports A; die Zeichen C/B kennzeichnen Übertrag/Borgewert; und die Buchstaben SUB kennzeichnen das Ausgangssignal der Betriebssteuerschaltung.
  • [23] Beispiele zur Operation der Operationseinheit für codierte Division
  • Die 53 zeigt ein Beispiel eines Anweisungsarrays für codierte Division. Die in derselben Figur dargestellte Erläuterung dient zum Bestimmen des Quotienten und des Restbetrags (oder Rests) durch Ausführen einer codierten Division von 32 Bits ÷ 16 Bits unter Verwendung der in der 51 dargestellten Schaltung. Bei dieser Division wird der Dividend codierter 32 Bits durch das Register R2 zwischengespeichert, und der Divisor codierter 16 Bits wird im Register R1 zwischengespeichert, wie es im Folgenden wiedergegeben ist: R2÷R1=R2 – – – R4.
  • Der Quotient wird im Register R2 zwischengespeichert, und der Restbetrag wird im Register R4 zwischengespeichert.
  • Die 54 bis 74 zeigen die Operationen der Schaltung der 51 auf sequenzielle Weise, wenn die Anweisungen der 53 sequenziell ausgeführt werden, und die 75 bis 81 zeigen ähnlich die Operationen auf sequenzielle Weise, während Nachdruck auf die Zustände der Register gelegt ist. Unter Bezugnahme auf diese Figuren werden die Operationen der Operationseinheiten sequenziell mit der Einheit einer Anweisung für die codierte Division beschrieben. Übrigens ist in der nachfolgenden Beschreibung angenommen, dass die 32-Bit-Daten durch 16-Bit-Daten unterteilt werden, wie es oben beschrieben ist. Es wird auch davon ausgegangen, dass der Dividend und der Divisor als 2-er-Komplemente vorliegen, bei denen die Codebits die höchstsignifikanten Bits sind, und dass auch der Quotient als 2-er-Komplement gegeben ist. In dieser Beschreibung wird die Erfassung eines Überlaufs des Quotienten nicht ausgeführt. Wenn der Dividend das negative Minimum des 2-er-Komplements ist, unterscheidet sich die Verarbeitungsprozedur vom vorgesehenen Algorithmus. In diesem Fall tritt immer sicher ein Überlauf auf, so dass der Quotient nicht gewährleistet ist. Die Erkennung des Überlaufs wird, falls erforderlich, vorab ausgeführt. Als Grundvoraussetzung zum Ausführen des Anweisungsarrays der 53 wird der codierte 16-Bit-Divisor im Register 1 zwischengespeichert, und der Dividend wird im Register 2 zwischengespeichert. Die Register werden als Arbeitsregister verwendet. Der Quotient wird im Register R2 zwischengespeichert.
  • (1) FOR R0,R0
  • Wie es in den 54 und 75 dargestellt ist, wird der Wert des Arbeitsre gisters R0 durch Ausführen dieser Anweisung auf 0 gesetzt. Diese Anweisung ist nicht erforderlich, wenn der Wert von R0 bereits 0 ist. In der 54 werden das Schieberegister 4 und die Codeerweiterungsschaltung 17 nicht betrieben, um das Eingangssignal durch sie auszugeben. Die Arithmetik-Logikoperationsschaltung 8 bildet Bit für Bit die Exklusiv-ODER-Verknüpfung zwischen dem Eingangssignal am Port A und dem Eingangssignal am Port B. So werden alle Bits des Werts des Registers R0 auf 0 gesetzt.
  • (2) SL16 R1
  • Wie es in den 55 und 75 dargestellt ist, wird durch Ausführen dieser Anweisung der im Divisorregister R1 zwischengespeicherte Divisor um 16 Bits zur Seite höhersignifikanter Bits (nach links) verschoben, und der Wert 0 wird in die weniger signifikanten 16 Bits verschoben. Die Linksverschiebung von 16 Bits wird durch das Schieberegister 4 ausgeführt. Die Arithmetik-Logikoperationsschaltung 8 gibt durch sie das Eingangssignal am Port A aus.
  • (3) DIVOS R0,R2
  • Auf diese Anweisung hin wird, wie es in den 56 und 75 dargestellt ist, das MSB des Registers R2 im Bit Q zwischengespeichert; das MSB des Registers R0 wird im Bit M zwischengespeichert; und die Exklusiv-ODER-Verknüpfung zwischen dem Bit Q und dem Bit M wird im Bit T zwischengespeichert. Da der Wert des Registers R0 zu diesem Zeitpunkt auf 0 gesetzt ist, speichert das Bit T das MSB des durch das Register R2 zwischengespeicherten Dividenden ein. Bei dieser Verarbeitung speist das Schieberegister 4 das Eingangs-MSB an die Selektorschaltung 15. Die Codeerweiterungsschaltung 17 gibt das Eingangssignal durch sie hindurch aus. Die Arithmetik-Logikoperationsschaltung 8 gibt das MSB vom Eingang des Ports B aus. Die Operation der Exklusiv-ODER-Verknüpfung zwischen dem Bit Q und dem Bit M wird durch die Operationsschaltung 10 ausgeführt.
  • (4) MOVT R3
  • Auf diese Anweisung hin wird, wie es in den 57 und 76 dargestellt ist, der Wert des Bits T, d.h. der Code des Dividenden, im Register R3 zwischengespeichert. Dies, da das Codebit des Dividenden zum Bestimmen des Rests abgespeichert wird. Bei dieser Verarbeitung addiert die Arithmetik-Logikoperationsschaltung 8 den Wert des Bits T zum Bitarray von 32 Bits jedes Bits 0 und gibt den Wert aus.
  • (5) SUBC R0,R2
  • Auf diese Anweisung hin wird, wie es in den 58 und 76 dargestellt ist, vom Register R0 der Übertrag vom R2 abgezogen. Das Bit T ist das übertragsbit. Da das Register R0 den Wert 0 hat, wird das 2-er-Komplement durch Subtrahieren des Bits T (d.h. des Codebits des Dividenden) vom Register R2 in ein 1-er-Komplement gewandelt. Bei dieser Verarbeitung geben das Schieberegister 4 und die Codeerweiterungsschaltung 7 ihre Eingangssignale durch sie hindurch aus. Die Arithmetik-Logikoperationsschaltung 8 subtrahiert das Eingangssignal des Ports B und das C/B-Eingangssignal vom Eingangssignal des Ports A und gibt das Subtraktionsergebnis und C/B aus. Anders gesagt, wird von R0 der Übertrag vom Dividendenregister R2 auf die Anweisung SUBC hin abgezogen. Der Übertrag wird als identisch mit dem Steuerbitregister 3 erkannt. Da R0 den Wert 0 hat, wird der Wert des Steuerbitregisters 3 vom Dividendenregister R2 abgezogen. So wird die Verarbeitung des Subtrahierens des Werts des Codebits eines Dividenden vom Dividenden beendet. Als Ergebnis dieser Verarbeitung verbleibt der Dividend unverändert, wenn er 0 oder größer ist, und er wird durch ein 1-er-Komplement ausgedrückt, wenn er negativ ist. Die 35 zeigt ein Beispiel zum Veranschaulichen, wie der Ausdruck des Dividenden durch die Korrektur verändert wird, wenn der Dividend negativ ist und über 4 Bits verfügt. Wenn die oben genannte Korrektur auf das Minimum "100" des codierten 2-er-Komplements von 4 Bits angewandt wird, benötigt der Ausdruck 5 Bits wie "10111". Da bei der vorliegenden Ausführungsform der Dividend durch ein codiertes 2-er-Komplement von 32 Bits ausgedrückt ist, benötigt der Ausdruck 33 Bits, wenn die oben genannte Korrektur auf das Minimum des codierten 2-er-Komplements von 32 Bits angewandt wird. Obwohl der Ausdruck mit 33 Bits erstellt werden kann, wobei das Steuerbitregister 3 das höchstsignifikante Bit liefert, geht die vorliegende Ausführungsform nicht so weit. Dies, da der Fall eines Überlaufs erkannt und vorab ausgeschlossen werden kann, obwohl der Überlauf immer auftritt, so dass es unmöglich ist, einen korrekten Quotienten zu erhalten, wenn der Dividend das Minimum des codierten 2-er-Komplements von 32 Bits ist.
  • (6) DIVOS R1,R2
  • Auf diese Anweisung hin wird, wie es in den 59 und 76 dargestellt ist, das MSB (Codebit) des im Register R2 zwischengespeicherten Dividenden im Bit Q zwischengespeicherte das MSB (Codebit) des im Register R1 zwischengespeicherten Divisors wird im Bit M zwischengespeichert; und es wird die Exklusiv-ODER-Verknüpfung zwischen dem Bit Q und dem Bit M gebildet und als Code des Quotienten im Bit T zwischengespeichert. Diese Operation ist gültig, wenn die um einen Vorgang frühere Ausführung der Anweisung SUBC R0,R2 keinen Überlauf verursacht. Dabei gibt das Schieberegister 4 das MSB des 32-Bit-Eingangssignal aus. Die Codeerweiterungsschaltung 17 gibt ihr Eingangssignal durch sie hindurch aus. Die Arithmetik-Logikoperationsschaltung 8 gibt das MSB des Eingangssignal des Ports B aus. Die Exklusiv-ODER-Operation wird durch die Operationsschaltung 10 ausgeführt. Auf diese Anweisung DIVOS hin, werden die 3 Steuerbitregister initialisiert. Der erste Operand der Anweisung DIVOS wird im Divisorregister R1 eingetragen, und der zweite Operand wird in R2, d.h. im Dividendenregister R2, eingetragen. Die Anweisung DIVOS gibt den ersten Operanden in die Arithmetik-Logikoperationsschaltung 8 ein, um das MSB des ersten Operanden im Steuerbitregister 6 zwischenzuspeichern. Parallel zu dieser Verarbeitung veranlasst die Anweisung DIVOS das Schieberegister 4 dazu, das MSB des zweiten Operanden herauszuschieben und es über die Selektorschaltung 15 und die Selektorschaltung 11 im Steuerbitregister 5 zwischenzuspeichern. Die Werte des Steuerbitregisters 5 und des Steuerbitregisters 6 werden selbst nach dem Ende der Anweisung DIVOS zwischengespeichert. Der Wert des Steuerbitregisters 5 wird über die Selektorschaltung 13 in die Operationsschaltung 10 eingegeben. Der Wert des Steuerbitregisters 6 wird in die Operationsschaltung 10 eingegeben. Diese Operationsschaltung 10 berechnet die oben genannten Exklusiv-ODER-Verknüpfungen mit zwei Eingangssignalen, und sie führt eine Zwischenspeicherung des Ergebnisses über die Selektorschaltung 12 im Steuerbitregister 3 aus. Der Wert des Steuerbitregisters 3 wird selbst nach dem Ende der Anweisung DIVOS zwischengespeichert. R1 mit dem ersten Operanden und R2 mit dem zweiten Operanden werden nicht umgeschrieben.
  • Diese Anweisung DIVOS sorgt dafür, dass das Codebit des Dividenden im Steuerbitregister 5 zwischengespeichert wird, das Codebit des Divisors im Steuerbitregister 6 zwischengespeichert wird und die Exklusiv-ODER-Verknüpfung aus dem Steuerbitregister 5 und dem Steuerbitregister 6 im Steuerbitregister 3 zwischengespeichert wird. Die Werte des Steuerbitregisters 5 und des Steuerbitregisters 6 werden dazu verwendet, zu bestimmen, ob beim ersten Schritt einer folgenden Division eine Addition oder eine Subtraktion auszuführen ist. Das Steuerbitregister 6 wird als Codeerweiterungseinheit des Divisors bei der folgenden Division verwendet. Der Wert des Steuerbitregisters 3 zeigt den Code des Quotienten an. Wenn dieser Quotient negativ ist, wird er in ein 2-er-Komplement gewandelt, nachdem er als 1-er-Komplement erkannt wurde. Wenn das Minimum eines mit 16 Bits codierten 2-er-Komple ments der Quotient ist, sind 17 Bits erforderlich, um ein 1-er-Komplement auszudrücken. Der Wert des Steuerbitregisters 3 unmittelbar nach dem Ende der aktuellen Anweisung DIVOS wird zum Codebit des 1-er-Komplements von 17 Bits.
  • Wenn der Dividend das Minimum eines mit 32 Bit codierten 2-er-Komplements einnimmt, erhält das Dividendenregister R2 durch die oben genannte Korrektur der Subtraktion von 1 den positiven Maximalwert, so dass der Wert des Steuerbitregisters 5 unmittelbar nach dem Ende der Anweisung DIVOS 0 ist. Da das Steuerbitregister 5 normalerweise das Codebit des Dividenden empfängt, sollte sein Wert 1 sein. Wenn daher der Quotientenbit das Minimum des mit 32 Bits codierten 2-er-Komplements einnimmt, ist die Steuerprozedur verschieden von der der eigentlichen Absicht. Wie oben angegeben, tritt immer ein Überlauf auf, wenn der Dividend das Minimum des mit 32 Bits codierten 2-er-Komplements einnimmt. Jedoch kann dieser Überlaufsfall vorab erkannt und ausgeschlossen werden. Nachfolgend wird dem Fall keine spezielle Berücksichtigung geschenkt, bei dem der Dividend den Minimalwert des mit 32 Bits codierten 2-er-Komplements einnimmt.
  • (7) DIV1 R1,R2
  • In der Erläuterung der 53 ist die Anweisung ".arepeat 16" eine Mikroanweisung eines Assemblers, die bedeutet, dass eine Anweisung zwischen "– .arepeat 16" und ".aendr" auf das 16fache erweitert wird. Demgemäß wird die Anweisung DIV1 16 mal wiederholt, um die substanzielle Division auszuführen. R1 des ersten Operanden der Anweisung DIV1 ist ein Divisorregister, und R2 des zweiten Operanden der Anweisung DIV1 ist ein Dividendenregister. In den 60 und 77 ist die einmalige Ausführung der Anweisung DIV1 grob in Verarbeitungen (i), (ii), (iii) und (iv) eingeteilt.
    • (i) Als Erstes werden die Werte des Steuerbitregisters 5 und des Steuerbitregisters 6 durch die Operationssteuerschaltung 7 abgerufen, um die Negation der Exklusiv-ODER-Verknüpfung zwischen den zwei Eingangssignalen zu berechnen. Dieses Ergebnis wird an die Arithmetik-Logikoperationsschaltung 8 geliefert, die den Wert als Operationsbefehl zwischenspeichert. Dieser Operationsbefehl wird einer Subtraktion zugeführt, wenn das Ergebnis der Exklusiv-ODER-Verknüpfung 1 ist, aber einer Addition, wenn das Ergebnis 0 ist.
    • (ii) Als Nächstes wird der Wert des Dividendenregisters R2 in das Schieberegister 4 eingegeben. Das Schieberegister 4 verschiebt die eingegebenen 32 Bits um 1 Bit zu den signifikanteren Bits hin. Gleichzeitig damit wird der Wert des Steuerbitregisters 3 in das LSB verschoben, und das herausgeschobene MSB-Bit wird durch die Selektorschaltung 15 zur Selektorschaltung 11 geliefert und im Steuerbitregister 5 zwischengespeichert.
    • (iii) Als Nächstes werden die 33 Bits, die durch Addieren des Steuerbitregisters zum höchstsignifikanten Bit des Divisorregisters R1 erstellt wurden, zu den 33 Bits addiert, oder von ihnen subtrahiert, die durch Addieren des Werts des Steuerbitregisters 5 zum höchstsignifikanten Bit des 32-Bit-Ausgangssignals des Schieberegisters 4 erstellt wurden. Wenn bei der Verarbeitung (i) der Additionsbefehl eingespeist wird, wird eine Addition ausgeführt, während dann, wenn in der Verarbeitung (i) der Subtraktionsbefehl eingespeist wird, eine Subtraktion ausgeführt wird. Die Addition/Subtraktion zwischen dem 32-Bit-Ausgangssignal des Schieberegisters 4 und dem Wert des Divisorregisters R1 wird von der Arithmetik-Logikoperationsschaltung 8 ausgeführt. Im Ergebnis wird der Übertrag oder das Borgesignal, wie es durch die Arithmetik-Logikoperationsschaltung 8 erstellt wird, über die Selektorschaltung 12 an die Operationsschaltung 9 geliefert. Das von der Arithmetik-Logikoperationsschaltung 8 erzielte Operationsergebnis von 32 Bits wird im Dividendenregister R2 zwischengespeichert. Die Addition/Subtraktion zwischen dem Steuerbitregister 5 und dem Steuerbitregister 6 wird mit dem in der Arithmetik-Logikoperationsschaltung 8 erstellten Übertrag oder Borgewert durch die Operationseinheit 9 ausgeführt. Das Ergebnis der Operationsschaltung 9 ist das Codebit des Teilrests. Dieses Code des Teilrests wird auf einem Weg zur Selektorschaltung 11 geliefert und im Steuerbitregister 5 zwischengespeichert, und es wird auf dem anderen Weg in die Operationsschaltung 10 eingegeben.
    • (iv) Die Operationsschaltung 10 berechnet die Negation der Exklusiv-ODER-Verknüpfung zwischen dem Code des Teilrests und dem Wert des Steuerbitregisters 6. Das Ergebnis wird an die Selektorschaltung 12 geliefert und im Steuerbitregister 3 zwischengespeichert. Dabei ist der Wert des Steuerbitregisters 3 das Quotientenbit.
  • Unmittelbar nachdem die Anweisung DIV1 16 mal wiederholt wurde, befindet sich der letzte Teilrest im Steuerbitregister 5; das geringstsignifikante Bit des Quotienten befindet sich im Steuerbitregister 3; der letzte Teilrest befindet sich in den höhersignifikanten 16 Bits des Dividendenregisters R2; und die höhersignifikanten 16 Bits des Quotienten von 17 Bits befinden sich in den weniger signifikanten 16 Bits.
  • (8) MOV R2,R4
  • Auf diese Anweisung hin wird, wie es in der 61 dargestellt ist, der Wert des Registers R2 für das Register R4 freigegeben, damit der in den höhersignifikanten 16 Bits des Registers R2 zwischengespeicherte Teilrest durch die Maßnahmen zum Bestimmen des Quotienten nicht zerstört wird.
  • (9) EXTS.W R2,R2
  • Der Code des Quotienten, wie er auf die oben genannte Anweisung DIVOS hin an das Bit T ausgegeben wird, wird dadurch an die Position des Codebits der weniger signifikanten 16 Bits des Registers R2 gebracht, dass die oben genannte Anweisung DIV1 16 mal wiederholt wird. Die Anweisung EXTS.W R2,R2 führt eine Codeerweiterung des Codebits der weniger signifikanten 16 Bits auf die höhersignifikanten 16 Bits aus, wie es in den 62 und 77 dargestellt ist. Bei dieser Verarbeitung führt die Codeerweiterungsschaltung der 62 eine Codeerweiterung der weniger signifikanten Bits auf 32 Bits aus. Genauer gesagt, werden auf die Anweisung EXTX.W hin die Codes der weniger signifikanten 16 Bits des Dividendenregisters R2 auf die höhersignifikanten 16 Bits erweitert. Da das Codebit des in der vorstehenden Verarbeitung (6) DIVOS R1,R2 bestimmten Quotienten im Codebit der weniger signifikanten 16 Bits des Dividendenregisters R2 zwischengespeichert ist, ist dieser Quotientencode zu den höhersignifikanten 16 Bits erweitert.
  • (10) ROTCL R2
  • Das Bit T enthält das letzte Quotientenbit, das in der 16ten Anweisung DIV1 bestimmt wurde. Auf ROTCL R2 hin wird, wie es in den 63 und 78 dargestellt ist, das Schieberegister 4 dazu verwendet, das Bit T in das LSB des Registers R2 zu verschieben. Gleichzeitig damit wird der Wert des Registers R2 nach links verschoben, um das herausgeschobene MSB (Codebit) an das Bit T auszugeben. Genauer gesagt, wird das geringstsignifikante Bit des im Steuerbitregister 3 zwischengespeicherten Quotienten in das Dividendenregisters R2 verschoben. Das herausgeschobene Codebit wird im Steuerbitregister 3 zwischengespeichert. Dabei wird der Quotient im Dividendenregister R2 zwischengespeichert. Wenn das Steuerbitregister 3 den Wert 0 hat, d.h., wenn der Quotient positiv ist, ist keine Korrektur erforderlich. Wenn dagegen das Steuerbitregister 3 den Wert 1 hat, d.h., wenn der Quotient negativ ist, muss der Quotient in ein 2-er-Komplement gewandelt werden, da er als 1-er-Komplement ausgedrückt ist.
  • (11) ADDC R0,R2
  • Unmittelbar vor dem Ausführen dieser Anweisung speichert das Register R2 den Quotienten ein; und das Bit T speichert den Code des Quotienten ein. Auf diese Anweisung ADDC hin wird, wie es in den 64 und 78 dargestellt ist, der Wert des Bits T zum Wert des Registers R2 addiert, um das im Register R2 zwischengespeicherte 1-er-Komplement in ein 2-er-Komplement zu wandeln. Da T=0 gilt, wenn der Quotient positiv ist, ändert sich der Wert des Registers R2 selbst dann nicht, wenn T addiert wird. Da T=1 gilt, wenn der Quotient negativ ist, wird der Wert des Registers R2 durch Addieren von T vom 1-er-Komplement in ein 2-er-Komplement gewandelt. Im Ergebnis wird ein korrekter Quotient bestimmt. Bei dieser Verarbeitung subtrahiert die Arithmetik-Logikoperationsschaltung 8 das Eingangssignal des Ports B vom Eingangssignal des Ports A, und sie subtrahiert ferner das Bit T (Übertrag/Borgewert), um den Borgewert im Bit T zwischenzuspeichern. Kurz gesagt, ist die Anweisung ADDC eine Additionsanweisung mit Übertrag. Das Steuerbitregister 3 wird als mit dem Übertrag identisch erkannt, und die Anweisung ADDC addiert das Register R0 mit dem Wert 0 und das Steuerbitregister 3 zum Dividendenregister R2. Der Wert des Dividendenregisters R2 ist gegenüber dem vor der Ausführung der Anweisung ADDC unverändert, wenn das Steuerbitregister 3 den Wert 0 hat, jedoch wird der im Dividendenregister R2 zwischengespeicherte Quotient vom 1-er-Komplement in ein 2-er-Komplement gewandelt, wenn das Steuerbitregister 3 den Wert 1 hat. Im Ergebnis kann ein korrekter Quotient erhalten werden.
  • In der 53 sind die folgenden Anweisungen DIVOS bis EXTS.W der oben genannten Anweisung ADDC erforderlich, um den Rest zu bestimmen.
  • (12) DIVOS R0,R4
  • Diese Anweisung dient zum Zwischenspeichern des MSB (Code des Rests) des Registers R4 im Bit T. Genauer gesagt, wird das MSB des Registers R4 in das Bit Q gebracht; das MSB des Registers R0 wird in das Bit M gebracht; und die Exklusiv-ODER-Verknüpfung zwischen dem Bit Q und dem Bit M wird in das Bit T gebracht, wie es in den 65 und 78 dargestellt ist. Da das Register R0 dabei den Wert 0 hat, wie es oben beschrieben wurde, ist das Bit M 0, und der Wert (Code des Rests) des Bits M wird unverändert in das Bit T gebracht. Bei dieser Verarbeitung gibt das Schieberegister 4 das MSB des Eingangssignals an das Bit Q aus. Die Codeerweiterungsschaltung 17 gibt ihr Eingangssignal durch sie hindurch aus. Die Arithmetik-Logikoperationsschaltung 8 gibt das MSB (Codebit) des Eingangssignals des Ports B als Bit M aus. Die Operationsschaltung 10 bildet die Exklusiv-ODER-Verknüpfung der zwei Eingangssignale und gibt sie aus.
  • (13) MOVT R0
  • Auf diese Anweisung hin wird, wie es in den 66 und 79 dargestellt ist, der Wert (Code des Rests vor der Korrektur) des Bits T im Register R0 zwischengespeichert. Bei dieser Verarbeitung addiert die Arithmetik-Logikoperationsschaltung 8 den Wert des Bits T zu den 32-Bit-Daten aller Bits, und sie gibt die Addition an das Register R0 aus.
  • (14) FOR R3,R0
  • Auf diese Anweisung hin wird, wie es in den 67 und 79 dargestellt ist, eine Exklusiv-ODER-Verknüpfung zwischen dem Inhalt des Registers R3 und dem Inhalt des Registers R0 gebildet. Bei dieser Verarbeitung geben das Schieberegister 4 und die Codeerweiterungsschaltung 17 ihre Eingangssignale durch sie hindurch aus. Die Arithmetik-Logikoperationsschaltung 8 bildet die Exklusiv-ODER-Verknüpfung für jedes Bit zwischen dem Eingangssignal des Ports A und dem Eingangssignal des Ports B, und sie gibt den Wert an das Register R0 aus.
  • (15) ROTCR R0
  • Auf die oben genannte Anweisung FOR hin wird das LSB des Registers R0 auf 1 gesetzt, wenn der Code des Dividenden und der Code des Rests (vor der Korrektur) verschieden sind, aber auf 0, wenn die Codes identisch sind. Auf die Anweisung ROTCR R0 hin wird, wie es in den 68 und 79 dargestellt ist, das LSB des Registers R0 im Bit T zwischengespeichert. Bei dieser Verarbeitung verschiebt das Schieberegister 4 den Wert des Registers R0 nach links, während das Bit T in das MSB verschoben wird, und es erfolgt eine Zwischenspeicherung des herausgeschobenen LSB im Bit T. Die Arithmetik-Logikoperationsschaltung 8 gibt durch sie hindurch das Eingangssignal des Ports A aus.
  • (16) BF L1
  • Diese Anweisung gibt an, dass der Wert des Bits T, wenn es sich um 0 handelt, in eine Anweisung mit der Marke L1 verzweigt wird und dass die nächste Anweisung DIVOS dieser Anweisung BF ausgeführt wird, wenn der Wert des Bits T 1 ist.
  • (17) DIVOS R1,R4
  • Diese Anweisung bewirkt gemeinsam mit der Anweisung ROTOR und der Anweisung DIV1, die folgend auf diese Anweisung auszuführen sind, dass der Rest korrigiert wird. Dabei wird der Rest vor der Korrektur in den höhersignifikanten 16 Bits des Registers R4 zwischengespeichert, und der Divisor wird in den höhersignifikanten 16 Bits des Registers R1 zwischengespeichert. Wenn die Codes der zwei verschieden sind, wird eine Addition ausgeführt, während im Fall der Identität eine Subtraktion ausgeführt wird. Demgemäß wird, auf diese Anweisung DIVOS hin, wie es in den 69 und 80 dargestellt ist, der Code des Rests (vor der Korrektur) im Bit Q zwischengespeichert, und der Code des Divisors wird im Bit M zwischengespeichert, so dass sie dazu verwendet werden können, die Addition/Subtraktion bei der später beschriebenen Anweisung DIV1 festzulegen. Das Bit T speichert das Ergebnis einer Exklusiv-ODER-Verknüpfung zwischen dem Bit Q und dem Bit M ein. Bei dieser Verarbeitung gibt das Schieberegister 4 sein eingegebenes MSB an das Bit Q aus. Die Codeerweiterungsschaltung 17 gibt ihr Eingangssignal durch sie hindurch aus. Die Arithmetik-Logikoperationsschaltung 8 gibt das MSB (Codebit) des Eingangssignal des Ports B aus. Die Operationsschaltung 10 bildet die Exklusiv-ODER-Verknüpfung zwischen den zwei Eingangssignalen und gibt sie aus.
  • (18) ROTOR R4
  • Auf die später beschriebene Anweisung DIV1 hin, für Addition oder Subtraktion nach einer Verschiebung nach links, wird der Wert im Register R4 in der Uhrzeigerrichtung rotiert, um die Linksverschiebung aufzuheben. Dieser Zustand ist in den 70 und 80 dargestellt. Bei dieser Verarbeitung verschiebt die Verschiebung den Wert des Registers R4 nach rechts, während das Bit T in das MSB verschoben wird und das herausgeschobene LSB als Bit T zwischengespeichert wird. Die Arithmetik-Logikoperationsschaltung 8 gibt durch sie hindurch das Eingangssignal des Ports A aus.
  • (19) DIV1 R1,R4
  • Diese Anweisung DIV1 wird grob in die folgenden Verarbeitungen (i), (ii), (iii) und (iv) unterteilt, wie es in den 71 und 80 dargestellt ist.
    • (i) Als Erstes werden das Bit Q des Steuerbitregisters 5 und das Bit M des Steuerbitregisters 6 in der Arithmetiksteuerschaltung 7 abgerufen, um die Negation der Exklusiv-ODER-Verknüpfung der zwei Eingangssignale zu berechnen. Dieses Ergebnis wird an die Arithmetik-Logikoperationsschaltung 8 geliefert, die den Wert als Operationsbefehl zwischenspeichert. Dieser Operationsbefehl ist ein Subtraktionsbefehl, wenn das Ergebnis der oben genannten Exklusiv-ODER-Verknüpfung 1 ist (d.h., wenn der Code des Rests vor der Korrektur und der Code des Divisors identisch sind), und er ist ein Additionsbefehl, wenn der Wert 0 ist (d.h., wenn der Code des Rests vor der Korrektur und der Rest des Divisors verschieden sind).
    • (ii) Als Nächstes wird der Wert des Registers R4 in das Schieberegister 4 eingegeben. Dieses Schieberegisters 4 verschiebt den Wert des Registers R4 um 1 Bit nach links, während das Bit T in das LSB des Werts des Registers R4 verschoben wird und das herausgeschobene MSB im Bit Q zwischengespeichert wird.
    • (iii) Als Nächstes werden die 33 Bits der Addition des Bits M und des Werts des Registers R1 zu den 33 Bits der Addition des Bits Q und des Werts des Registers R4 addiert oder davon subtrahiert, und das Ergebnis wird im Bit Q und im Register R4 zwischengespeichert. Die Addition/Subtraktion zwischen dem Ausgangssignal des Schieberegisters 4 und dem Wert des Registers R4 werden durch die Arithmetik-Logikoperationsschaltung 8 ausgeführt. Im Ergebnis wird der Übertrag oder der Borgewert, wie er von der Arithmetik-Logikoperationsschaltung 8 erstellt wird, über die Selektorschaltung 12 an die Operationsschaltung 9 geliefert. Diese Operationsschaltung 9 nimmt diesen Übertrag/Borgewert auf und führt die Addition/Subtraktion des Bits Q und des Bits M entsprechend dem Übertrag/Borgewert aus.
    • (iv) Die Operationsschaltung 10 berechnet die Negation des durch die oben genannte Operationsschaltung 9 berechneten Werts, d.h. der Exklusiv-ODER-Verknüpfung zwischen dem Bit Q und dem Bit M. Dieses Ergebnis wird über die Selektorschaltung 12 im Bit T zwischengespeichert.
  • (20) SR16 R4
  • Auf diese Anweisung hin werden, wie es in den 72 und 81 dargestellt ist, die höhersignifikanten 16 Bits (entsprechend dem Rest) des Registers R4 nach rechts zu den weniger signifikanten 16 Bits des Registers R4 verschoben. Die Verschiebeverarbeitung wird durch das Schieberegister 4 ausgeführt.
  • (21) ADD R3,R4
  • Das Register R3 speichert auf die oben genannte Anweisung MOVT R3 den Code des Dividenden ein. Da der Code (MSB) des Dividenden auf die oben genannte Anweisung (5) SUBC R0,R2 hin von diesem Dividenden subtrahiert wird, kann es erforderlich sein, den im Register R4 zwischengespeicherten Rest zu korrigieren, um den korrigierten Rest zu bestimmen. Auf die Anweisung ADD R3,-R4 hin, wird der Code (R3) des Dividenden zum Rest vor der Korrektur addiert. Bei dieser Verarbeitung, wie sie in den 73 und 81 dargestellt ist, geben das Schieberegister 4 und die Codeerweiterungsschaltung 17 ihre individuellen Eingangswerte durch sie hindurch aus. Die Arithmetik-Logikoperationsschaltung 8 addiert den Eingangswert am Port B und den Eingangswert am Port A, und sie gibt das Additionsergebnis und den Übertrag aus. Das Additionsergebnis wird im Register R4 zwischengespeichert, und der korrigierte Rest wird in den weniger signifikanten 16 Bits dieses Registers R4 zwischengespeichert.
  • (22) EXTS.W R4,R4
  • Auf diese Anweisung hin wird, wie es in den 74 und 81 dargestellt ist, die höhersignifikante Seite des Registers R4 mit dem in den weniger signifikanten 16 Bits zwischengespeicherten korrigierten Rest codemäßig erweitert, um den endgültigen Rest von insgesamt 32 Bits zu bestimmen. Bei dieser Verarbeitung erweitert die Codeerweiterungsschaltung 17 den Code am 16. Bit von der weniger signifikanten Seite des Eingangswerts auf die höhersignifikanten 16 Bits. Die Arithmetik-Logikoperationsschaltung 8 gibt den Eingangswert am Port B durch sie hindurch zum Register R4 aus.
  • Die codierte Divisionsverarbeitung, wie sie unter Bezugnahme auf die 54 bis 74 beschrieben wurde, wird grob, wenn sie als Flussdiagramm zusam mengefasst wird, in die Vorverarbeitung, die Division 1 und die Nachverarbeitung unterteilt, wie es in der 82(A) dargestellt ist, und die Verarbeitung der oben genannten Division 1 dient zum 16maligen Wiederholen des Divisionsschritts, wie es in der 83(A) dargestellt ist. Der Inhalt der Vorverarbeitung ist in der 82(B) dargestellt. Der Inhalt der Verarbeitung des Divisionsschritts in der 83(B) dargestellt; und der Inhalt der Nachverarbeitung ist in der 85 dargestellt. Bei dieser Nachverarbeitung werden eine Quotientenkorrektur, eine erste Teilrest-Korrekturmaßnahme und eine zweite Teilrest-Korrekturmaßnahme ausgeführt. Die Verarbeitung der Quotientenkorrektur ist in der 84(B) dargestellt; die erste Teilrest-Korrekturmaßnahme ist in der 85(A) dargestellt; und die zweite Teilrest-Korrekturmaßnahme ist in der 85(B) dargestellt. Die Inhalte der einzelnen Flussdiagramme sind aus der bisherigen Beschreibung heraus leicht verständlich, wobei keine weitere Beschreibung erfolgt.
  • Der Quotient und der Rest werden beim Beispiel gemäß der Anweisungsbeschreibung der 53 im gemeinsamen Register R2 zwischengespeichert, jedoch können sie in verschiedenen Registern zwischengespeichert werden. Wenn der Quotient im nicht dargestellten Register R5 zwischenzuspeichern ist, wird z.B. bei der Beschreibung zur 53 die Anweisung MOV R0,R5 folgend auf die Anweisung FOR R0,R0 eingefügt, und die Anweisung ROTCL R5 wird vor der Anweisung DIV1 R1,R2 eingefügt, so dass diese Anweisungen DIV1 R1,R2 und die Anweisung ROTCL 16 mal wiederholt werden. Dann kann die Anweisung EXTS.W R2,R2 in die Anweisung EXTS.W R5,R5 geändert werden; die nächste Anweisung ROTCL R2 kann in die Anweisung ROTCL R5 geändert werden; und die nächste Anweisung ADDC R0,R2 kann in die Anweisung ADDC R0,R5 geändert werden.
  • Übrigens zeigen die 86 bis 91 andere Beispiele von Modifizierungen der Anweisungsbeschreibung für die codierte Division. Diese Modi lassen die Beschreibung der Korrekturverarbeitung betreffend den Rest weg. Die Anweisung SL8 Rn ist eine solche zum Verschieben des Registers Rn um 8 Bits nach links. Die einzelnen Bits der weniger signifikanten 8 Bits von Rn nach der Ausführung der Anweisung sind 0. Die Anweisung EXTS.B Rn,Rm ist eine solche zur Codeerweiterung der weniger signifikanten 8 Bits des Rn auf 32 Bits und zum Zwischenspeichern der 32 Bits im Rm. Diese Inhalte sind aus der Beschreibung der vorigen Ausführungsformen leicht verständlich, wobei jedoch keine detaillierte Beschreibung erfolgt.
  • [24] DIVOS/DIVOU/DIV1 (Schrittunterteilung)
  • Anweisung
  • Hier wird die bei der vorigen Beschreibung verwendete Anweisung DIVOS beschrieben, sowie die Beispiele der Operation und des Gebrauchs der Anweisung DIV1. Die zu beschreibenden Inhalte haben die Voraussetzungen gemäß dem oben genannten Punkt [17] Liste von Anweisungen gemeinsam. Jedoch sind diese Inhalte hinsichtlich Einzelheiten der Operationsbeispiele, ausgedrückt durch die Sprache C, verschieden von der im genannten Punkt enthaltenen Anweisung DIV1.
  • Format:
    • DIV1 Rm,Rn
    • DIVOS Rm,Rn
    • DIVOU
  • Beschreibung:
  • Der Inhalt von 32 Bits des Universalregisters Rn wird in einem Schritt mit dem Inhalt von Rm unterteilt, und das Ergebnis von 1 Bit wird im Bit T zwischengespeichert. Die Anweisung DIVOS ist eine Initialisierungsanweisung der codierten Division zum Zwischenspeichern des MSB des Dividenden (Rn) im Bit Q, des MSB des Divisors (Rm) im Bit M und der EOR-Verknüpfung des Bits M und des Bits Q im Bit T. Die Anweisung DIVOU ist eine Initialisierungsanweisung für codefreie Division zum Löschen der Bits M/Q/T auf 0. Der Quotient wird dadurch erhalten, dass die Anweisung DIV1 (in Kombination mit ROTCL, falls erforderlich) mittels der Anzahl der Bits des Divisors ausgegeben wird. Während dieser Wiederholung wird ein Zwischenergebnis im zugewiesenen Register und in den Bits M/Q/T zwischengespeichert. Wenn diese unnötig durch Software umgeschrieben werden, kann das Operationsergebnis nicht klargestellt werden. Es werden keine Erkennung eines Teilens durch 0 und eines Überlaufs und keine Operation für den Teilrest bereitgestellt. Die Divisionsabfolge kann aus den folgenden Gebrauchsbeispielen erfasst werden.
  • Operation:
    Figure 01770001
  • Figure 01780001
  • Figure 01790001
  • Figure 01800001
  • Gebrauchsbeispiel 1:
    • R1(32 Bits) ÷ R0(16 Bits) = R1(16 Bits): kein Code
    • SL16 R0; Divisor wird auf die höriersignifikanten 16 Bits gesetzt, und die weniger signifikanten 16 Bits werden auf 0 gesetzt.
    • Test R0,R0; Teilung durch 0 wird geprüft. TEST R0,R0 ist eine Anweisung zum Setzen des Bits T auf 1, wenn die ODER-Verknüpfung zwischen R0 und R0 den Wert 0 hat, und auf 0, falls sie 1 ist.
    • BT ZERO_DIV; verzweigt auf ZERO_DIV, falls T=0 gilt.
    • CMP/HS R0,R1; Es wird auf Überlauf geprüft. Das Bit T wird auf 1 gesetzt, falls R0 ≤ R1 ohne Code gilt.
    • BT OVER_DIV;
    • DIVOU; Flaginitialisierung
    • .arepeat 16;
    • DIV1 R0,R1; 16 mal wiederholen
    • .aendr;
    • ROTCL R1;
    • EXTU.W R1,R1; R1 = Quotient
  • Gebrauchsbeispiel 2:
    • R1:R2(64 Bits) ÷ R0(32 Bits) = R2(32 Bits): kein Code
    • TEST R0,R0; Teilen durch 0 wird geprüft
    • BT ZERO_DIV;
    • CMP/HS R0,R1; Überlauf wird geprüft
    • BT OVER_DIV;
    • DIVOU; Flaginitialisierung
    • .arepeat 32;
    • ROTCL R2; 32 mal wiederholen
    • DIV1 R0,R1;
    • .aredr;
    • ROTCL R2; R2 = Quotient
  • Gebrauchsbeispiel 3:
    • R1(16 Bits) ÷ R0(16 Bits) = R1(16 Bits): kein Code
    • SL16 R0; Divisor wird auf die höhersignifikanten 16 Bits gesetzt, und die weniger signifikanten 16 Bits werden auf 0 gesetzt.
    • EXTS.W R1,R1; Dividend wird codemäßig auf 32 Bits erweitert
    • EOR R2,R2; R2=0
    • DIVOS R2,R2;
    • SUBC R2,R1; um –1 dekrementieren, wenn der Dividend negativ ist
    • DIVOS R0,R1; Flaginitialisierung
    • .arepeat 16;
    • DIV1 R0,R1; 16 mal wiederholen
    • .aendr;
    • EXTS.W R1,R1; R1=Quotient (Ausdruck als 1-er-Komplement)
    • ROTCL R1;
    • ADDC R2,R1; um +1 inkrementieren, wenn das Codebit des MSB des Quotienten auf 1 steht, und Transformieren in einen Ausdruck entsprechend einem 2-er-Komplement
    • EXTS.W R1,R1; R1 = Quotient (Ausdruck als 2-er-Komplement)
  • Gebrauchsbeispiel 4:
    • R2(32 Bits) ÷ R0(32 Bits) = R2(32 Bits): kein Code
    • EOR R3,R3;
    • DIVOS R3,R2;
    • SUBC R1,R1; Dividend wird codemäßig auf 64 Bits erweitert (R1:R2)
    • SUBC R3,R2; um –1 dekrementieren, wenn der Dividend negativ ist
    • DIVOS R0,R1; Flaginitialisierung
    • .arepeat 32;
    • ROTCL R2; 23 mal wiederholen
    • DIV1 R0,R1;
    • .aendr;
    • ROTCL R2; R2 = Quotient (Ausdruck als 1-er-Komplement)
    • ADDC R3,R2; um +1 inkrementieren, wenn das Codebit-MSB des Quotienten 1 ist, und Transformation in einen Ausdruck als 2-er-Komplement
    • ; R2 = Quotient (Ausdruck als 2-er-Komplement)
  • Obwohl unsere Erfindung speziell in Verbindung mit Ausführungsformen derselben beschrieben wurde, soll sie nicht hierauf beschränkt sein, sondern sie kann selbstverständlich auf verschiedene Arten modifiziert werden, ohne dass dadurch von ihrem Schutzumfang abgewichen wird.
  • Z.B. sollten die Datenwortlänge und die Bitanzahl im Anweisungsformat fester Länge nicht auf die Datenwortlänge von 32 Bits und das Anweisungsformat einer festen Länge von 16 Bits beschränkt sein, sondern sie können individuell mit Bitanzahlen, die Potenzen von 2 sind, modifiziert werden. Die codierte Division kann auch bei einer 3-Operanden-Risk-Anweisung mit 32 Bits angewandt werden. Die Steuerung für die codierte Division kann nicht nur durch ein Mikroprogrammverfahren sondern auch durch eine verdrahtete Logik ausgeführt werden, die eine Spezialoperationsschaltung bildet. Falls bei der codierten Division keine spezielle Anweisung wie die oben genannte Anweisung DIV1 existiert, kann diese Situation dadurch gemeistert werden, dass auf eine andere Anweisung hin eine ähnliche Verarbeitung zu einer Unterroutine hin erfolgt.
  • Obwohl die bisher erfolgte Beschreibung auf den Fall gerichtet ist, dass unsere Erfindung bei einem Mikrocomputer mit einem in ihn gesetzten Programm-ROM angewandt wird, was das den Hintergrund der Erfindung bildende Anwendungsgebiet bildet, soll die Erfindung nicht hierauf beschränkt sein, sondern sie kann auch in weitem Umfang bei einem Mikrocomputer angewandt werden, der weder einen Programm-ROM noch dessen Peripherieschaltung enthält. Außerdem wurde die vorstehende Beschreibung für den Fall beschrieben, dass die codierte Division bei einem Verfahren ohne Rückgewinnung angewandt wird, jedoch kann sie selbstverständlich auch bei einem Rückgewinnungsverfahren angewandt werden.
  • Nachfolgend werden die durch die hier offenbarten repräsentativen Beispiele der Erfindung erzielten Wirkungen kurz beschrieben:
    • (1) Bei einem Mikrocomputer unter Verwendung des Universalregister-Verfahrens wird ein Befehlsformat fester Länge mit einer kleineren Bitanzahl als derjenigen der Maximallänge eines der Befehlsausführungseinrichtung zugeführten Datenwort verwendet. Im Ergebnis wird die Wirkung erzielt, dass es möglich ist, einen Mikroprozessor mit kleiner Programmkapazität oder hohem Nutzungsgrad eines Programmspeichers und mit geringen Systemkosten zu schaffen, während der Vorteil einer Vereinfachung einer Befehlsdecodierung genossen werden kann, wie sie beispielhaft bei einer bekannten RISC-Maschine mit einem Befehlsformat fester Länge von 32 Bits oder dergleichen vorliegt.
    • (2) Das Befehlsformat fester Länge und die maximale Datenwortlänge werden auf eine Bitanzahl einer Potenz von 2 eingestellt, so dass bei einer maximalen Datenwortlänge von 32 Bits das Befehlsformat z. B. auf 16 Bits festgelegt ist. so wird eine andere Wirkung dahingehend erzielt, dass sich entweder ein Befehl oder ein Datenwert über einen ROM/RAM mit identischer Bitstruktur erstrecken kann, während eine Fehlausrichtung des Programms im Speicher verhindert ist und Übereinstimmung mit einem kommerziell verfügbaren allgemeinen Speicher gewährleistet ist.
    • (3) Wenn das oben genannte Befehlsformat fester Länge und die oben genannte maximale Datenwortlänge einzeln auf Bitanzahlen einer Potenz von 2 einzustellen sind, können mehrere Befehle wirkungsvoll unter Verwendung eines internen Busses mit einer Bitanzahl, die derjenigen der maximalen Datenwortlänge entspricht, abgerufen werden, und die Buszugriffsanzahl für den Befehlsabruf kann dadurch verringert werden, dass die Befehle vorab in einem gemeinsamen Zyklus abgerufen werden.
    • (4) Wenn der interne Datenbus für eine Datenübertragung und einen Befehlsabruf gemeinsam genutzt wird, wird die Pipelinesteuerung so ausgeführt, dass der Datenabruf bevorzugt wird, um dadurch den gesamten Befehlsausführungs-Zeitplan einschließlich eines Befehlsabrufs zu verzögern, der mit dem Datenabruf in Konflikt steht, wenn der Datenabruf und der Befehlsabruf für den Speicher in Konflikt stehen.
    • (5) Es wird ein weiterer Effekt dahingehend erzielt, dass die Einschränkung der Bitanzahl des Befehlsformats fester Länge die Verwendung unmittelbarer Daten dadurch nicht beschränkt, dass ein Befehl unterstützt wird, der eine Beschreibung zum Zuweisen eines unmittelbaren Datenwerts in einer Datenbeziehung enthält, um den Verschiebewert relativ zum Wert eines vorbestimmten Registers zu versetzen.
    • (6) Es wird ein weiterer Effekt dahingehend erzielt, dass selbst beim Befehlsformat mit fester Länge mit einer eingeschränkten Bitanzahl die zur Verarbeitung erforderliche Verschiebung oder die Bitanzahl unmittelbarer Daten dadurch maximiert werden kann, dass ein Befehl zum impliziten Zuweisen eines vorbestimmten Universalregisters unterstützt wird, wobei trotz fehlendem Registerzuweisungsfeld im Befehl eine Fixierung als Operand besteht.
    • (7) Es wird ein weiterer Effekt dahingehend erzielt, dass die für die Verarbeitung erforderliche Verschiebung oder die Bitanzahl eines unmittelbaren Datenwerts selbst bei einem Befehlsformat fester Länge mit beschränkter Bitanzahl dadurch maximiert werden kann, dass ein Befehl unterstützt wird, der eine Beschreibung enthält, die wahr oder falsch für das Arithmetikergebnis einer spezifizierten Bedingung gemäß einem vorbestimmten Zustandsflag widerspiegelt.
    • (8) Dank dieser Effekte ist es möglich, die verschiedenen Probleme zu überwinden, wie sie mit der Verwendung eines Befehlsformats fester Länge mit einer kleineren Bitanzahl als derjenigen der Datenwortlänge einhergehen. Beispielsweise gilt Folgendes: weder die Verwendung unmittelbarer Daten noch die Zuweisung einer Absolutadresse sind beschränkt, und zwar selbst dann nicht, wenn die Bitanzahl des Befehlsformats fester Länge kleiner als die der Datenwortlänge ist; eine Beschreibung, wie eine erforderliche Verschiebung, kann im Befehlsformat fester Länge mit begrenzter Bitanzahl ausgeführt werden; es ist ein Beitrag zum Verhindern einer festen Ausrichtung der Programmanordnung in einem Speicher geleistet; die Codeeffizienz oder der Speichernutzungsgrad ist, gesehen vom Standpunkt des Inhalts eines Unterstützungsbefehls aus, verbessert.
    • (9) Ein Konfliktzustand zwischen der Nutzung der Universalregister auf Befehle vor und nach einer Pipelineausführung, die das Universalregister-Verfahren benutzt, kann einfach dadurch gemeistert werden, dass der Registerkonfliktzustand im Universalregister auf Grundlage der Information eines Registerzuweisungsbereichs im Befehlsformat erfasst wird und die Pipeline-Steuereinrichtung zum relativen Verzögern der Ausführung der anschließenden Befehle auf Grundlage des Erkennungsergebnisses und der Befehlsausführungs-Zyklusanzahl verwendet wird.
    • (10) Für ein Befehlsformat einer festen Länge von 16 Bits ist die Verschie bung eines Befehls für bedingte Verzweigung auf 8 Bits festgelegt, und die Verschiebungen eines Unterroutine-Verzweigungsbefehls und eines Befehls für unbedingte Verzweigung sind auf 12 Bits festgelegt. Im Ergebnis kann ein geeignetes Verzweigungsziel abhängig von den Verzweigungsbefehlsarten zugewiesen werden, ohne dass es zu wesentlichen Beeinträchtigungen des aktuellen Betriebs kommt, während die Befehlsformatlänge beschränkt ist.
    • (11) Wenn ein Dividend negativ ist, wird eine Vorverarbeitung dadurch ausgeführt, dass der Wert "1" mit der Gewichtung des LSB eines Dividenden vom Dividenden selbst abgezogen wird, so dass die Division mit Codes ausgeführt werden kann, was vom Stand der Technik abweicht, bei dem jedesmal bestimmt wird, ob der Teilrest 0 ist oder nicht. Im Ergebnis kann die Division mit hoher Geschwindigkeit ausgeführt werden. Anders gesagt, können Effekte ähnlich wie beim Stand der Technik oder besser als diese, bei dem die Division dadurch beschleunigt wird, dass Spezialhardware bereitgestellt wird, um mit einer kleineren Anzahl von Schritten zu bestimmen, ob der Teilrest 0 ist oder nicht, realisiert werden, ohne dass der Umfang der Hardware erweitert wird.
    • (12) Wenn eine Division mit Codes multipler Länge (oder beliebiger Länge) beim Stand der Technik auszuführen ist, muss jedesmal zum Bestimmen, ob der Teilrest 0 ist oder nicht, die Entscheidung Teilrest = 0 entsprechend der Bitanzahl (z.B. 8 Bits, 16 Bits, 32 Bits oder 64 Bits) des Teilrests ausgeführt werden, so dass der Umfang der Software und der Hardware proportional zur Bitanzahl zunimmt. Diesbezüglich kann, da die Erfindung keine Entscheidung Teilrest = 0 benötigt, eine codierte Division multipler Länge (oder beliebiger Länge) oder eine codierte Entscheidung beliebiger Länge und beliebiger Genauigkeit leicht gemeistert werden, ohne dass der Umfang der Software und der Umfang der Hardware zu erhöhen wären.
    • (13) Durch Verwenden der Operation des Subtrahierens des Codebits oder des MSB des Dividenden als Vorverarbeitung zur Division kann das Divisionsprogramm erstellt werden, ohne dass zu berücksichtigen ist, ob der Dividend positiv oder negativ ist. Da keine derartige Entscheidung erforderlich ist, kann die Divisionsgeschwindigkeit erhöht werden und die Division selbst kann dadurch ausgeführt werden, dass eine übliche Schaltung unabhängig davon genutzt wird, ob der Dividend positiv oder negativ ist.
    • (14) Da die Entscheidung einer übermäßigen Subtraktion oder Addition des Divisors zum bzw. vom Teilrest und die Berechnung des Quotientenbits nur aus dem MSB des Dividenden oder dem Teilrest und dem MSB des Divisors ausgeführt werden können, kann die Hardware für die Division weiter vereinfacht werden. Da darüber hinaus die Entscheidung betreffend eine übermäßige Subtraktion oder Addition des Divisors vom bzw. zum Teilrest, die Entschei dung der Addition/Subtraktion und die Berechnung des Quotientenbits nur aus dem MSB des Dividenden oder dem Teilrest und dem MSB des Divisors ausgeführt werden können, kann auch bei einer Division beliebiger Länge eine einfache Anwendung erfolgen. Da, noch darüber hinaus, die Entscheidung der Addition/Subtraktion im Divisionsschritt nur mittels des MSB ausgeführt werden kann, kannder übliche Divisionsschritt sowohl für codierte als auch codefreie Divisionsvorgänge durch Initialisieren der Division verwendet werden.
    • (15) Wenn der Quotient und der Rest bei einem Verschiebevorgang in einem einzelnen Dividendenregister zwischenzuspeichern sind, muss im Stand der Technik die Entscheidung Teilrest = 0 dadurch ausgeführt werden, dass jedesmal die Stellenpositionen des zu bestimmenden Teilrests geändert werden. Auf Grundlage dieser Tatsache ist der Stand der Technik durch komplizierte Verarbeitung und eine verlängerte Verarbeitungszeit beschränkt. Jedoch unterliegt die Erfindung keiner derartigen Einschränkung oder einer anderen Einschränkung, gemäß der die Transferanweisungen zunehmen würden, wie sie auszuführen sind, um den Quotienten und den Rest in verschiedenen Registern zwischenzuspeichern. Im Ergebnis kann die codierte Division weiter auf einfache Weise beschleunigt werden.
  • Fig. 3
    • A/D-Signals // A/D-Signale
    • Clock Signals // Taktsignale
    • Control Signals // Steuersignale
    • DMAC Control Signals // DMAC-Steuersignale
    • FRT Signals // FRT-Signale
    • Refresh // Auffrischen
    • SCI Signals // SCI-Signale
  • Fig. 4
    • Bus Width of 32 Bits (32 Signal Lines) // Busbreite von 32 Bits (32 Signalleitungen)
    • Data of Register // Registrierdaten
    • Data on Memory // Daten im Speicher
    • Instruction // Befehl
    • Instruction Format of Fixed 16 Bit Length (16 Signal Lines) // Befehlsformat mit einer festen Länge von 16 Bits (16 Signalleitungen)
    • Long Word // Langwort
    • Word // Wort
  • Fig. 5
    • DRD: Zielregister-Decodierer
    • FO & PCD: Flagoperation & Pipelinesteuerungs-Decodierer
    • ID: Befehlsdecodierer
    • IF & IRC: Befehlsabruf & IR-Steuerung
    • MCB: Abbildungssteuerung
    • MIR: Mikrocodefeld
    • PCF: Pipelinesteuerung
    • RCCB: Registerinhaltsprüfung
    • REG NO. OR Imm // Register Nr. oder Imm
    • Skip Control // Überspringungssteuerung
    • SRD: Quellregister-Decodierer
    • WBRD: Rückschreibregister-Decodierer
  • Fig. 6
    • General Purpose Register Block // Universalregister-Block
    • Instruction Fetch Block // Befehlsabruf-Block
  • Fig. 7
    • Memory Access Block // Speicherzugriffs-Block
    • Operation Block // Operationsblock
  • Fig. 8 bis 11
    • Address // Adresse
    • Address Bus // Adressbus
    • Data // Daten
    • Data Bus // Datenbus
    • Destination Dec. // Zieldecodierung
    • Dest. Delay // Zielverzögerung
    • Inst. 2 Word // Befehl von zwei Wörtern
    • IR-Latch // IR-Zwischenspeicherung
    • MRB Latch // MRB-Zwischenspeicherung
    • Only Memory Access // Nurspeicherzugriff
    • Pipe-Line Execution Timing // Timing für die Ausführung in der Pipeline
    • Reg. Data // Registerdaten
    • Reg. Field // Registerfeld
    • Reg.Read // Lese aus dem Register
    • Reg.Write // Schreiben in das Register
    • Source Dec. // Quelldecodierung
    • Write-Back Dec. // Rückschreibdecodierung
  • Fig. 9
    • ADD // Addieren
    • Content Flag // Inhaltsflag
    • IF Inhi. Flag // IF-Sperrflag
    • IF to Mem. // IF in den Speicher
    • Load // Laden
    • Load Flag // Ladeflag
    • Next Op. // Nächster Befehl
    • Pipe-Line Control Timing at Register Conflict (Load Execution) // Steuertiming für die Pipeline bei Registerkonflikt (Ausführung eines Ladevorgangs)
    • Skip Sig. // Überspringsignal
  • Fig. 10
    • Bus Cycle Flag // Buszyklusflag
    • Execution // Ausführung
    • IF Inhibit Flag // IF-Sperrflag
    • MULT // Multiplikation
    • MULT Flag // Multiplikationsflag
    • Pipe-Line Control Timing at Register Conflict (Multi-Execution) // Steuertiming für die Pipeline bei Registerkonflikt (Mehrfachausführung)
    • SUB // Subtraktion
  • Fig. 11
    • Hardware // Hardware
    • IF Wait Flag // IF-Warteflag
    • Pipe-Line Control Timing at Memory Access Conflict // Steuertiming für die Pipeline bei Speicherzugriffskonflikt
  • Fig. 12
    • Execution of Plural Cycles // Ausführung mehrerer Zyklen
    • Macro Instruction // Makrobefehl
    • Pipe-Flow for Instruction Execution of Plural Cycles // Pipelineablauf für die Befehlsausführung mehrerer Zyklen
  • Fig. 13 bis Fig. 21
    • Code // Code
    • Code Extension // Codeerweiterung
    • Execution State // Ausführungszustand
    • Instruction // Befehl
    • Instructions (1) for Data Transfer // Befehle (1) zur Datenübertragung
    • Instructions (2) for Data Transfer // Befehle (1) zur Datenübertragung
    • Operation // Operation
  • Fig. 14
    • Central 32 Bits of Reg // mittlere 32 Bits des Registers
    • Interchange of Less Significant 2 Bytes // Austausch der weniger signifikanten zwei Bytes
    • Interchange of More & Less Significant Words // Austausch von weniger & mehr signifikanten Wörtern
  • Fig. 15
    • If Result = 0 // Wenn Ergebnis = 0
    • Instructions for Logic Operation // Befehle für logische Operationen
  • Fig. 16
    • Carry // Übertrag
    • Divide on Step // Dividierschritt
    • If Any Byte is Equal // Wenn irgendein Byte gleich ist
    • Instructions (1) for Arithmetic Operation // Befehle (1) für arithmetische Operationen
    • MSB of Reg // MSB des Registers
    • Overflow // Überlauf
    • Saturation // Sättigung
    • With Codes // mit Codes
    • Without Codes // ohne Codes
  • Fig. 17
    • Borrow // Borgewert
    • Code-Extend // Code-Erweiterung
    • From Bytes // von Bytes
    • Instructions (2) for Arithmetic Operation // Befehle (1) für arithmetische Operationen
    • REG with Codes // Register mit Codes
    • REG without Codes // Register ohne Codes
    • Underflow // Unterschreiten
    • Zero-Extend // Null-Erweiterung
  • Fig. 18
    • Shift Instructions // Verschiebebefehle
  • Fig. 19
    • Branch Instructions // Verzweigungsbefehle
    • Delay Branch // Verzögernde Verzweigung
  • Fig. 20
    • Break Exceptional Process // Unterbrechungs-Ausnahmeprozess
    • DEBUG Exceptional Process if D = 1 // DEBUG-Ausnahmeprozess, wenn D = 1 gilt
    • Delay Branch, Stack Area // Verzögernde Verzweigung, Stackbereich
    • System Control Instructions (1) // Systemsteuerbefehle (1)
  • Fig. 21
    • Stack Area // Stackbereich
    • System Control Instructions (2) // Systemsteuerbefehle (2)
  • Fig. 22
    • Code // Code
    • Destination // Ziel
    • Destination Register // Zielregister
    • Direction of Transfer // Übertragungsrichtung
    • Displacement // Verschiebung
    • Execution State // Ausführungszustand
    • Immediate Date // Unmittelbarer Datenwert
    • Indicated in the Order of MSB LSB // in der Reihenfolge MSB LSB angegeben
    • Indicated Mnemonically // Mnemonische Angabe
    • Indicated Schematically // Schematisch angegeben
    • Instruction // Befehl
    • Memory Operand // Speicheroperand
    • Operation // Operation
    • Operation Code // Operationscode
    • Size // Größe
    • Source // Quelle
    • Source Register // Quellregister
    • Value with no Weight // Wert ohne Gewichtung
  • Fig. 23
    • Address Mode // Adressmodus
    • Code-Extended to Validate 32-Bit Data Always // Codeerweiterung, um immer gültige 32-Bit-Daten zu erstellen
    • Description // Beschreibung
    • Designation // Bezeichnung
    • Incremented by 1 for Bytes, by 2 for Words and by 4 for Long Words // um 1 für Bytes, um 2 für Wörter und um 4 für Langwörter inkrementiert
    • Decremented by 1 for Bytes, by 2 for Words and by 4 for Long Words // um 1 für Bytes, um 2 für Wörter und um 4 für Langwörter dekrementiert
    • disp Is Code-Extended Always for Leftward Shift of 2 Bits // disp wird für eine Linksverschiebung um 2 Bits immer Code-erweitert
    • disp Is Code-Extended for Leftward Shifts of 0 for Bytes, 1 for Words and 2 for Long Words // disp wird für eine Linksverschiebung um 0 für Bytes, 1 für Wörter und 2 für Langwörter Code-erweitert
    • disp Is Code-Extended for Leftward Shifts of Bit for Words and 2 Bits for Long Words and for less significant 2 Bits Mask of PC // disp wird für eine Linksverschiebung von 1 Bit für Wörter und 2 Bits für Langwörter und für eine PC-Maskierung der zwei weniger signifikanten Bits Code-erweitert
    • disp of Conditional Branch Instruction is Code-Extended Always for Leftward Shifts of 1 Bit // disp eines Befehls für bedingte Verzweigung wird für Linksverschiebungen um 1 Bits immer Code-erweitert
    • disp of Unconditional Branch Instruction is Code-Extended Always for Leftward Shifts of 1 Bit // disp eines Befehls für unbedingte Verzweigung wird für Linksverschiebungen um 1 Bit immer Code-erweitert
    • imm of MOV and ADD Instructions are Code-Extended Always for Validating 32 Bits // imm entsprechend den Befehlen MOV und ADD erfahren für 32 gültige Bits immer eine Null-Erweiterung
    • imm of TEST, AND or AND EOR Instructions are Zero-Extended Always for Validating 32 Bits // imm entsprechend den Befehlen TEST, UND oder UND-EOR erfahren für 32 gültige Bits immer eine Null-Erweiterung
    • imm of TRAP Instruction is Code-Extended Always for Leftward Shifts of 2 Bits // imm des Befehls TRAP wird für eine Linksverschiebung um 2 Bits immer Code-erweitert
  • Fig. 24
    • CRT Control for Weaving M/C // Farbkathodenstrahlröhre-Steuerung für Webe-M/C
    • Dry Stone // Trockenstein
    • Engine Control // Maschinensteuerung
    • Keyboard 1 (C Language) // Tastatur 1 (Sprache C)
    • Keyboard 2 (C Language) // Tastatur 2 (Sprache C)
    • Keyboard 3 (ASM) // Tastatur 3 (ASM)
    • Percentage in Total Bcc // Prozentsatz von Bcc am Gesamten
    • Radio Control (for Data Transmission Tests) // Funksteuerung (für Datenübertragungstests)
    • Scanner Control // Scannersteuerung
    • Telegraph // Telegraf
  • Fig. 25
    • Percentage in Total BRA // Prozentsatz von BRA am Gesamten
  • Fig. 26
    • Percentage in Total BSR // Prozentsatz von BSR am Gesamten
  • Fig. 27
    • JMP (Containing JSR) // JMP (Enthält JSR)
    • Percentage in Total JMP // Prozentsatz von JMP am Gesamten
  • Fig. 28
    • Accumulator Index Register // Akkumulator-Indexregister
    • Control Register // Steuerregister
    • General Purpose Register // Universalregister
    • Reserved Bit // Reserviertes Bit
    • BR: Unterbrechungsregister
    • GBR: Globalbasisregister
    • PC: Programmzähler
    • PR: Prozedurregister
    • SP: Stackzeiger
    • SR: Statusregister
    • VBR: Vektorbasisregister
  • Fig. 30 bis 32
    • 1 Is Subtracted From Dividend // 1 wird vom Dividenden subtrahiert
    • Add // Addieren
    • Complement Of 1 Is Changed Into That Of 2 // 1-er Komplement wird auf 2-er Komplement geändert
    • Correct // korrekt
    • Correction Of Remainder // Korrektur des Rests
    • Dividend Is Left As It Is // Dividend bleibt unverändert
    • And Remainder 0 // und Rest 0
    • And Remainder 2 // und Rest 2
    • Invert The Result Of EOR // EOR-Ergebnis invertieren
    • Negative // negativ
    • No Correct // keine Korrektur
    • Not Correct // nicht korrekt
    • Remainder // Rest
    • Subtract // subtrahieren
  • Fig. 33
    • ((1)) 1 wird vom Dividenden subtrahiert, wenn dieser negativ ist (das MSB des Dividenden wird vom Dividenden subtrahiert)
    • ((2)) Code des Quotienten wird aus denen des Dividenden und des Divisors bestimmt
    • ((3)) Addition und Subtraktion des Divisors zum bzw. vom Teilrest werden aus den Codes von Dividend/Teilrest und des Divisors bestimmt und mit Codes dividiert
    • ((4)) Das Ergebnis von ((2)) und der ermittelte Quotient werden addiert und subtrahiert Add (Partial Remainder + Y) For // Addieren (Teilrest + Y) für Code Of // Code von Code Of Quotient Is Determined // Code des Quotienten wird bestimmt Construction // Konstruktion Cycle // Zyklus Q Is The Code Of Partial Remainder // Q ist der Code des Teilrests Quotient Bit // Quotientenbit Shift Bits Of Partial Remainder And Quotient Leftward By 1 // Bits des Teilrests und des Quotienten um 1 nach links verschieben Subtract (Partial Remainder – Y) 4 // Subtrahieren (Teilrest – Y) für
  • Fig. 34(A)
    • Code Bit (Complement Of 2) Of Dividend // Codebit (2-er-Komplement) des Dividenden
    • Correction // Korrektur
    • None // keine
    • Pre-Correction Of Dividend // Vorkorrektur des Dividenden
  • Fig. 34(B)
    • Code Bit Of Dividend // Codebit des Dividenden
    • Code Bit Of Divisor // Codebit des Divisors
    • Codebit Of Quotient // Codebit des Quotienten
    • Prediction Of Code Of Quotient // Vorhersage des Codes des Quotienten
  • Fig. 35
    • After Change Of Subtraction Of 1 // nach der Änderung einer Subtraktion von 1
    • Indication Of Complement Of 2 // Angabe des 2-er-Komplements Negativ Dividend // negativer Dividend
    • Pre-Correction Of Negative Dividend // Vorkorrektur eines negativen Dividenden
  • Fig. 36
    • Acceptable As Equal To Complement Of 1 // akzeptierbar, wenn einem 1-er-Komplement entsprechend
    • After Pre-Correction Of Subtraction Of 1 // nach einer Vorkorrektur einer Subtraktion von 1
    • Example Of Expression Of Partial Remainder After Pre-Correction Of Subtraction Of 1 From Negative Dividend // Beispiel für den Ausdruck des Teilrests nach einer Vorkorrektur einer Subtraktion von 1 vom negativen Dividenden
    • Indication Of Complement Of 2 // Angabe als 2-er-Komplement
    • Partial Remainder For Negative Dividend // Teilrest bei negativem Dividenden
    • Remarks // Anmerkungen
    • Smaller By 1 Than Binary Number // um 1 kleiner als die Binärzahl
  • Fig. 37(A)
    • Code Bit (Complement Of 2) Of Divisor // Codebit (2-er-Komplement) des Divisors
    • Code Bit (Complement Of 2 Or ZZ) Of Dividend Or Partial Remainder // Codebit (2-er-Komplement oder ZZ) des Dividenden oder des Teilrests
    • Command Of Addition & Subtraction // Additions- & Subtraktionsbefehl
    • Subtraction // Subtraktion
  • Fig. 37(B)
    • Code Bit (Complement Of 2) Of Divisor // Codebit (2-er-Komplement) des Divisors
    • Code Bit (Complement Of 2 Or ZZ) Of Dividend Or Partial Remainder // Codebit (2-er-Komplement oder ZZ) des Teilrests
    • How To Make Quotient Bit // Erstellung des Quotientenbits Quotient Bit // Quotientenbit
  • Fig. 38
    • Code Bit (Complement Of 2) Of Dividend // Codebit (2-er-Komplement) des Dividenden
    • Code Bit (Complement Of 2) Of Divisor (≠0) // Codebit (2-er-Komplement) des Divisors (≠0)
    • Code Bit (Complement Of 2 Or ZZ) Of Last Partial Remainder // Codebit (2-er-Komplement oder ZZ) des letzten Teilrests
    • Correction Of The Division // Korrektur nach der Division None // keine
    • Quotient Correction (Complement Of 2) Of Last Partial Remainder r // Quotientenkorrektur (2-er-Komplement) des letzten Teilrests r
  • Fig. 39 bis 50
    • Binary Number Of 7 Bits // Binärzahl von 7 Bits
    • Coded // codiert
    • Code Of Dividend // Code des Dividenden
    • Internal Operation
    • Negative // negativ
    • Positive // positiv
    • Remainder // Rest
    • Work Register // Arbeitsregister
  • Fig. 52(A)
    • Arithmetic Logic Operation Circuit // Arithmetik-Logikoperationsschaltung
    • Full Adder // Volladdierer
  • Fig. 52(B) bis 52(D)
    • (b) Arithmetiksteuerschaltung
    • (c) Arithmetikschaltung
    • (d) Arithmetikschaltung Control Signal // Steuersignal
  • Fig. 53
    • Coded // codiert
    • Remainder // Rest
  • Fig. 54 bis 74
    • Starting Point // Startpunkt
    • Terminal Point // Endpunkt
    • Command Of Addition/Subtraction // Additions/Subtraktionsbefehl
  • Fig. 76
    • Code Of Dividend // Code des Dividenden
    • Reflection Of Borrow // Widerspiegelung des Borgewerts
  • Fig. 77
    • Command Of Addition // Additionsbefehl
    • Command Of Subtraction // Subtraktionsbefehl
    • FOR Of Q & M // EOR-Verknüpfung von Q & M
  • Fig. 78
    • Code Of Quotient // Code des Quotienten
    • Code Of Remainder (Before Correction) // Code des Rests (vor einer Korrektur)
    • Complement Of 1 // 1-er-Komplement
    • Complement Of 2 // 2-er-Komplement
    • Last Quotient Bit // letztes Quotientenbit
  • Fig. 79
    • 0 If These Codes Are Equal // 0 wenn diese Codes gleich sind
    • 1 If These Codes Are Different // 1 wenn diese Codes verschieden sind
    • Code Of Dividend // Code des Dividenden
    • Code Of Remainder (Before Correction) // Code des Rests (vor einer Korrektur)
    • Copy // kopieren
    • Rightward Shift // Verschiebung nach rechts
    • Zero // null
  • Fig. 80
    • Code Of Divisor // Code des Divisors
    • Code Of Remainder (Before Correction) // Code des Rests (vor einer Korrektur)
    • Command Of Addition // Additionsbefehl
    • Command Of Subtraction // Subtraktionsbefehl
    • FOR Of Q & M // EOR-Verknüpfung von Q & M
    • No Special Meaning // keine spezielle Bedeutung
    • Rightward Shift // Verschiebung nach rechts
  • Fig. 81
    • Code Extension // Codeerweiterung
    • Code Of Dividend // Code des Dividenden
    • Correct Remainder // Rest korrigieren
    • Remainder // Rest
  • Fig. 82(A)
    • – Codierte Division
    • – "Vorverarbeitung"
    • – "Division 1"
    • – "Nachverarbeitung"
    • – Ende
  • Fig. 82(B)
    • – Vorverarbeitung
    • – R2 (Dividendenregister) F Dividend
    • – R1 (Divisorregister) F Divisor
    • – Verschieben von R1 (Divisor) um 16 Bits nach links
    • – R2 (zweiter Dividend) ← R2-Codebits für R2
    • – LSB (vierte Steuerbit-Speichereinrichtung) von R3 ← Code des Dividenden
    • – Q (erste Steuerbit-Speichereinrichtung 5) ← Code des Dividenden
    • – M (zweite Steuerbit-Speichereinrichtung 6) ← Code des Divisors
    • – T (dritte Steuerbit-Speichereinrichtung 3) ← Exklusiv-ODER-Verknüpfung von Q und M
    • – zurück
  • Fig. 83(A)
    • – Division 1
    • – 16maliges Ausführen der "Divisionsschritte"
    • – zurück
  • Fig. 83(B)
    • – Divisionsschritt
    • Additions- & Subtraktionsbefehl ← Negation der Exklusiv-ODER-Verknüpfung von Q (Code des Teilrests) und M (Code des Divisors)
    • Q ← MSB von R2; R2 um 1 Bit nach links verschieben; LSB von R2 ← T (Quotientenbit)
    • – Additions- & Subtraktionsbefehl?
    • Addieren einer Binärzahl von 33 Bits (die Bits M werden zum MSB von R1 addiert) zu einer Binärzahl von 33 Bits (Bits Q werden zum MSB von R2 addiert)
    • Subtrahieren einer Binärzahl von 33 Bits (die Bits M werden zum MSB von R1 addiert) von einer Binärzahl von 33 Bits (Bits Q werden zum MSB von R2 addiert)
    • T ← negieren der Exklusiv-ODER-Verknüpfung von Q (Code des Teilrests) und M (Code des Divisors)
    • – zurück
  • Fig. 84(A)
    • – Nachverarbeitung
    • – R4 (Restregister) ← R2
    • – "Quotientenkorrektur" (Ändern des 1-er-Komplements in ein 2-er-Komplement)
    • – "Erste Restkorrekturmaßnahme" (Korrektur einer übermäßigen Subtraktion/Addition des Rests)
    • – "Zweite Restkorrekturmaßnahme" (Addieren des Codes des ersten Dividenden zum Rest)
    • – zurück
  • Fig. 84(B)
    • – Quotientenkorrektur
    • – Codeerweiterung der weniger signifikanten 16 Bits von R2 auf 32 Bits (Code: Code des Quotienten)
    • – Bit T und R2 um 1 Bit verdrehen
    • – R2 (Quotient) ← R2 + T
    • – zurück
  • Fig. 85(A)
    • – Erste Restkorrekturmaßnahme
    • – T ← MSB (Code des letzten Teilrests) von R4; LSB von R0 ← T
    • – LSB von R0 ← T
    • – R0 ← Exklusiv-ODER-Verknüpfung von R3 und R0
    • – T ← LSB von R0
    • – Codes von R4 (letzter Teilrest) und R1 (Divisor)?
    • – R4 (Rest) ← R4 (letzter Teilrest) + R1 (Divisor)
    • – zurück
  • Fig. 85(H)
    • – Zweite Restkorrekturmaßnahme
    • – Verschieben von R2 um 16 Bits nach rechts
    • – R2 ← LSB (Code des Dividenden) von R2 + R3
    • – Codeerweiterung der weniger signifikanten 16 Bits von R2 auf 32 Bits
    • – zurück
  • Fig. 86 bis 91
    • Coded // codiert

Claims (8)

  1. Auf einem einzelnen Chip ausgebildeter Mikrocomputer mit einer CPU, einem Speicher und einem mit der CPU und dem Speicher gekoppelten Datenbus (IDB31-0), dadurch gekennzeichnet, daß der Mikrocomputer ein RISC-Computer (Computer mit verringerter Befehlsmenge) ist, wobei die CPU mehrere 32-Bit-Allzweckregister (R0L, R0H, ..., R15H, R15L) aufweist und jeder in dem Speicher gespeicherte Befehl eine feste Länge von 16 Bit hat.
  2. Mikrocomputer nach Anspruch 1, wobei der Speicher einen Festspeicher (ROM) und/oder einen Cache-Speicher und/oder einen Random-Access-Speicher (RAM) aufweist.
  3. Mikrocomputer nach Anspruch 1 oder 2, wobei der Datenbus (IDB31-0) eine Breite von 32 Bit hat.
  4. Mikrocomputer nach einem der vorhergehenden Ansprüche mit ferner einer mit dem Datenbus (IDB31-0) gekoppelten Direktspeicher-Zugriffsteuerung (DMAC).
  5. Mikrocomputer nach einem der vorhergehenden Ansprüche, wobei die CPU ein Programmzählerregister (PCH, PCL) mit einer Länge von 32 Bit aufweist.
  6. Mikrocomputer nach einem der vorhergehenden Ansprüche, wobei die Anzahl der Allzweckregister (R0H, R0L, ..., R15H, R15L) sechzehn ist.
  7. Mikrocomputer nach einem der vorhergehenden Ansprüche, wobei ein von der CPU zu verarbeitender Befehl einen Bereich zur Bezeichnung von zwei der Allzweckregister (R0H, R0L, ..., R15H, R15L) aufweist.
  8. Mikrocomputer nach einem der vorhergehenden Ansprüche mit ferner einem 32-Bit-Basisregister (GBRH, GBRL) zum Speichern einer Basisadresse und einem 32-Bit-Prozedurregister (PRH, PRL) zum Speichern einer Rückkehradresse aus einer Subroutinenprozedur.
DE69233361T 1991-06-24 1992-06-22 Ein-Chip-Mikrocomputer Expired - Lifetime DE69233361T2 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP17873991 1991-06-24
JP17873991 1991-06-24
JP15452592 1992-05-21
JP4154525A JP2984463B2 (ja) 1991-06-24 1992-05-21 マイクロコンピュータ

Publications (2)

Publication Number Publication Date
DE69233361D1 DE69233361D1 (de) 2004-07-08
DE69233361T2 true DE69233361T2 (de) 2005-06-02

Family

ID=26482784

Family Applications (3)

Application Number Title Priority Date Filing Date
DE69233361T Expired - Lifetime DE69233361T2 (de) 1991-06-24 1992-06-22 Ein-Chip-Mikrocomputer
DE69233412T Expired - Lifetime DE69233412T2 (de) 1991-06-24 1992-06-22 Vorrichtung und Rechnerprogrammprodukt zur Ausführung von Verzweigungsbefehlen
DE69232232T Expired - Lifetime DE69232232T2 (de) 1991-06-24 1992-06-22 Mikrocomputer

Family Applications After (2)

Application Number Title Priority Date Filing Date
DE69233412T Expired - Lifetime DE69233412T2 (de) 1991-06-24 1992-06-22 Vorrichtung und Rechnerprogrammprodukt zur Ausführung von Verzweigungsbefehlen
DE69232232T Expired - Lifetime DE69232232T2 (de) 1991-06-24 1992-06-22 Mikrocomputer

Country Status (6)

Country Link
US (12) US5991545A (de)
EP (4) EP0525375B1 (de)
JP (1) JP2984463B2 (de)
KR (3) KR100294559B1 (de)
DE (3) DE69233361T2 (de)
HK (2) HK1011101A1 (de)

Families Citing this family (88)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3105197B2 (ja) * 1991-06-24 2000-10-30 株式会社日立製作所 除算回路及び除算方法
JP2984463B2 (ja) * 1991-06-24 1999-11-29 株式会社日立製作所 マイクロコンピュータ
JP3000857B2 (ja) * 1994-08-31 2000-01-17 松下電工株式会社 プログラマブルコントローラ
JP3504355B2 (ja) * 1994-12-06 2004-03-08 松下電器産業株式会社 プロセッサ
CN1264085C (zh) * 1995-08-31 2006-07-12 英特尔公司 一种用于执行多媒体应用的操作的装置、系统和方法
US6366999B1 (en) * 1998-01-28 2002-04-02 Bops, Inc. Methods and apparatus to support conditional execution in a VLIW-based array processor with subword execution
US6684348B1 (en) 1999-10-01 2004-01-27 Hitachi, Ltd. Circuit for processing trace information
JP2001142692A (ja) * 1999-10-01 2001-05-25 Hitachi Ltd 2つの異なる固定長命令セットを実行するマイクロプロセッサ、マイクロコンピュータおよび命令実行方法
US6826191B1 (en) 1999-10-01 2004-11-30 Stmicroelectronics Ltd. Packets containing transaction attributes
US6487683B1 (en) 1999-10-01 2002-11-26 Stmicroelectronics Limited Microcomputer debug architecture and method
US6530047B1 (en) 1999-10-01 2003-03-04 Stmicroelectronics Limited System and method for communicating with an integrated circuit
US6772325B1 (en) * 1999-10-01 2004-08-03 Hitachi, Ltd. Processor architecture and operation for exploiting improved branch control instruction
US6598128B1 (en) 1999-10-01 2003-07-22 Hitachi, Ltd. Microprocessor having improved memory management unit and cache memory
US6463553B1 (en) 1999-10-01 2002-10-08 Stmicroelectronics, Ltd. Microcomputer debug architecture and method
US6598177B1 (en) 1999-10-01 2003-07-22 Stmicroelectronics Ltd. Monitoring error conditions in an integrated circuit
US7793261B1 (en) 1999-10-01 2010-09-07 Stmicroelectronics Limited Interface for transferring debug information
US6412047B2 (en) 1999-10-01 2002-06-25 Stmicroelectronics, Inc. Coherency protocol
US6434665B1 (en) 1999-10-01 2002-08-13 Stmicroelectronics, Inc. Cache memory store buffer
US6557119B1 (en) 1999-10-01 2003-04-29 Stmicroelectronics Limited Microcomputer debug architecture and method
US7260745B1 (en) 1999-10-01 2007-08-21 Stmicroelectronics Ltd. Detection of information on an interconnect
US7000078B1 (en) 1999-10-01 2006-02-14 Stmicroelectronics Ltd. System and method for maintaining cache coherency in a shared memory system
US6460174B1 (en) 1999-10-01 2002-10-01 Stmicroelectronics, Ltd. Methods and models for use in designing an integrated circuit
US6693914B1 (en) 1999-10-01 2004-02-17 Stmicroelectronics, Inc. Arbitration mechanism for packet transmission
US6591369B1 (en) 1999-10-01 2003-07-08 Stmicroelectronics, Ltd. System and method for communicating with an integrated circuit
US6546480B1 (en) 1999-10-01 2003-04-08 Hitachi, Ltd. Instructions for arithmetic operations on vectored data
US6457118B1 (en) 1999-10-01 2002-09-24 Hitachi Ltd Method and system for selecting and using source operands in computer system instructions
US6349371B1 (en) 1999-10-01 2002-02-19 Stmicroelectronics Ltd. Circuit for storing information
US6298394B1 (en) 1999-10-01 2001-10-02 Stmicroelectronics, Ltd. System and method for capturing information on an interconnect in an integrated circuit
US6701405B1 (en) 1999-10-01 2004-03-02 Hitachi, Ltd. DMA handshake protocol
US6629115B1 (en) 1999-10-01 2003-09-30 Hitachi, Ltd. Method and apparatus for manipulating vectored data
US6496905B1 (en) 1999-10-01 2002-12-17 Hitachi, Ltd. Write buffer with burst capability
US6629207B1 (en) 1999-10-01 2003-09-30 Hitachi, Ltd. Method for loading instructions or data into a locked way of a cache memory
US6665816B1 (en) 1999-10-01 2003-12-16 Stmicroelectronics Limited Data shift register
US6859891B2 (en) 1999-10-01 2005-02-22 Stmicroelectronics Limited Apparatus and method for shadowing processor information
US6918065B1 (en) 1999-10-01 2005-07-12 Hitachi, Ltd. Method for compressing and decompressing trace information
US6408381B1 (en) 1999-10-01 2002-06-18 Hitachi, Ltd. Mechanism for fast access to control space in a pipeline processor
US6567932B2 (en) 1999-10-01 2003-05-20 Stmicroelectronics Limited System and method for communicating with an integrated circuit
US6590907B1 (en) 1999-10-01 2003-07-08 Stmicroelectronics Ltd. Integrated circuit with additional ports
US7072817B1 (en) 1999-10-01 2006-07-04 Stmicroelectronics Ltd. Method of designing an initiator in an integrated circuit
US6449712B1 (en) 1999-10-01 2002-09-10 Hitachi, Ltd. Emulating execution of smaller fixed-length branch/delay slot instructions with a sequence of larger fixed-length instructions
US6542983B1 (en) 1999-10-01 2003-04-01 Hitachi, Ltd. Microcomputer/floating point processor interface and method
US6615370B1 (en) 1999-10-01 2003-09-02 Hitachi, Ltd. Circuit for storing trace information
US6574651B1 (en) 1999-10-01 2003-06-03 Hitachi, Ltd. Method and apparatus for arithmetic operation on vectored data
US6412043B1 (en) 1999-10-01 2002-06-25 Hitachi, Ltd. Microprocessor having improved memory management unit and cache memory
US6553460B1 (en) 1999-10-01 2003-04-22 Hitachi, Ltd. Microprocessor having improved memory management unit and cache memory
US6732307B1 (en) 1999-10-01 2004-05-04 Hitachi, Ltd. Apparatus and method for storing trace information
US7266728B1 (en) 1999-10-01 2007-09-04 Stmicroelectronics Ltd. Circuit for monitoring information on an interconnect
US6633971B2 (en) 1999-10-01 2003-10-14 Hitachi, Ltd. Mechanism for forward data in a processor pipeline using a single pipefile connected to the pipeline
US6502210B1 (en) 1999-10-01 2002-12-31 Stmicroelectronics, Ltd. Microcomputer debug architecture and method
US6351803B2 (en) 1999-10-01 2002-02-26 Hitachi Ltd. Mechanism for power efficient processing in a pipeline processor
US6820195B1 (en) 1999-10-01 2004-11-16 Hitachi, Ltd. Aligning load/store data with big/little endian determined rotation distance control
US6928073B2 (en) * 1999-10-01 2005-08-09 Stmicroelectronics Ltd. Integrated circuit implementing packet transmission
US6601189B1 (en) 1999-10-01 2003-07-29 Stmicroelectronics Limited System and method for communicating with an integrated circuit
US6779145B1 (en) 1999-10-01 2004-08-17 Stmicroelectronics Limited System and method for communicating with an integrated circuit
US7149878B1 (en) * 2000-10-30 2006-12-12 Mips Technologies, Inc. Changing instruction set architecture mode by comparison of current instruction execution address with boundary address register values
DE10055659C1 (de) * 2000-11-10 2002-03-28 Infineon Technologies Ag Berechnungsschaltung zur Division eines Festpunktsignals
US7711926B2 (en) * 2001-04-18 2010-05-04 Mips Technologies, Inc. Mapping system and method for instruction set processing
US6826681B2 (en) * 2001-06-18 2004-11-30 Mips Technologies, Inc. Instruction specified register value saving in allocated caller stack or not yet allocated callee stack
US7167514B2 (en) * 2001-07-18 2007-01-23 Agere Systems Inc. Processing of quinary data
US7107439B2 (en) * 2001-08-10 2006-09-12 Mips Technologies, Inc. System and method of controlling software decompression through exceptions
JP2003186567A (ja) * 2001-12-19 2003-07-04 Matsushita Electric Ind Co Ltd マイクロプロセッサ
US7574585B1 (en) * 2003-01-31 2009-08-11 Zilog, Inc. Implementing software breakpoints and debugger therefor
US7194601B2 (en) * 2003-04-03 2007-03-20 Via-Cyrix, Inc Low-power decode circuitry and method for a processor having multiple decoders
US7458763B2 (en) 2003-11-10 2008-12-02 Blueshift Technologies, Inc. Mid-entry load lock for semiconductor handling system
US10086511B2 (en) 2003-11-10 2018-10-02 Brooks Automation, Inc. Semiconductor manufacturing systems
US20070269297A1 (en) 2003-11-10 2007-11-22 Meulen Peter V D Semiconductor wafer handling and transport
US20070282480A1 (en) * 2003-11-10 2007-12-06 Pannese Patrick D Methods and systems for controlling a semiconductor fabrication process
CN1555005A (zh) * 2003-12-29 2004-12-15 ����ͨѶ�ɷ����޹�˾ 动态循环流水线的交叠式命令提交方法
US7334116B2 (en) * 2004-10-06 2008-02-19 Sony Computer Entertainment Inc. Bit manipulation on data in a bitstream that is stored in a memory having an address boundary length
WO2008030637A2 (en) * 2006-05-01 2008-03-13 Blueshift Technologies, Inc. Methods and systems for controlling a semiconductor fabrication process
US7810073B2 (en) * 2006-09-05 2010-10-05 International Business Machines Corporation Method of translating n to n instructions employing an enhanced extended translation facility
US7908474B2 (en) * 2006-09-22 2011-03-15 International Business Machines Corporation Method for improved key management for ATMs and other remote devices
US7870087B2 (en) * 2006-11-02 2011-01-11 D-Wave Systems Inc. Processing relational database problems using analog processors
US7599901B2 (en) * 2006-12-06 2009-10-06 Microsoft Corporation Processing data-centric business models
US7873591B2 (en) * 2007-02-02 2011-01-18 Microsoft Corporation User-interface architecture for manipulating business models
JP5169760B2 (ja) * 2008-01-28 2013-03-27 富士通株式会社 通信装置、受信データサイズチェック方法、倍数判定回路および倍数判定方法
US9003170B2 (en) 2009-12-22 2015-04-07 Intel Corporation Bit range isolation instructions, methods, and apparatus
RU2469376C1 (ru) * 2011-07-06 2012-12-10 Федеральное государственное унитарное предприятие "Научно-производственное объединение автоматики имени академика Н.А. Семихатова" Вычислительное устройство бинс
US20130042091A1 (en) * 2011-08-12 2013-02-14 Qualcomm Incorporated BIT Splitting Instruction
US10025556B2 (en) * 2014-09-08 2018-07-17 Atmel Corporation Optimized multi-precision division
US10220516B2 (en) 2015-10-06 2019-03-05 Mtm Robotics, Llc System and method for self-contained independently controlled modular manufacturing tools
US10025299B2 (en) 2015-10-06 2018-07-17 Mtm Robotics, Llc System and method for self-contained modular manufacturing device having nested controllers
US10252421B2 (en) 2015-10-06 2019-04-09 Mtm Robotics Llc Self-contained modular manufacturing tool
US10022872B2 (en) 2015-10-06 2018-07-17 Mtm Robotics, Llc Self-contained modular manufacturing tool responsive to locally stored historical data
CN111628845B (zh) * 2017-09-01 2022-12-06 惠州市德赛西威汽车电子股份有限公司 一种提高数据传输效率的方法
US20210096877A1 (en) * 2019-09-26 2021-04-01 Advanced Micro Devices, Inc. Collapsing bubbles in a processing unit pipeline
CN110941211A (zh) * 2019-10-17 2020-03-31 华晟现代电子科技(香港)有限公司 一种基于物联网精简功能的微处理器及控制方法
US11755327B2 (en) 2020-03-02 2023-09-12 Microsoft Technology Licensing, Llc Delivering immediate values by using program counter (PC)-relative load instructions to fetch literal data in processor-based devices

Family Cites Families (54)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5447455A (en) 1977-09-22 1979-04-14 Toshiba Corp Data processor
US4240139A (en) * 1977-09-22 1980-12-16 Tokyo Shibaura Denki Kabushiki Kaisha Address generating system
US4296469A (en) * 1978-11-17 1981-10-20 Motorola, Inc. Execution unit for data processor using segmented bus structure
US4325120A (en) * 1978-12-21 1982-04-13 Intel Corporation Data processing system
JPS55127639A (en) 1979-03-23 1980-10-02 Nec Corp Data processor
US4312034A (en) * 1979-05-21 1982-01-19 Motorola, Inc. ALU and Condition code control unit for data processor
US4354228A (en) * 1979-12-20 1982-10-12 International Business Machines Corporation Flexible processor on a single semiconductor substrate using a plurality of arrays
US4402043A (en) 1980-11-24 1983-08-30 Texas Instruments Incorporated Microprocessor with compressed control ROM
US4433378A (en) * 1981-09-28 1984-02-21 Western Digital Chip topography for MOS packet network interface circuit
US4868784A (en) * 1982-02-22 1989-09-19 Texas Instruments Incorporated Microcomputer with a multi-channel serial port having a single port address
JPS58189739A (ja) * 1982-04-30 1983-11-05 Hitachi Ltd デ−タ処理システム
US4569018A (en) * 1982-11-15 1986-02-04 Data General Corp. Digital data processing system having dual-purpose scratchpad and address translation memory
JPS6051948A (ja) * 1983-08-31 1985-03-23 Hitachi Ltd 情報処理装置
US4604722A (en) * 1983-09-30 1986-08-05 Honeywell Information Systems Inc. Decimal arithmetic logic unit for doubling or complementing decimal operand
JPS6260034A (ja) 1985-09-10 1987-03-16 Toshiba Corp ストア−ドプログラム方式制御装置
JPS62143140A (ja) 1985-12-18 1987-06-26 Fujitsu Ltd 条件付分岐命令設定方式
EP0239081B1 (de) * 1986-03-26 1995-09-06 Hitachi, Ltd. Datenprozessor in Pipelinestruktur mit der Fähigkeit mehrere Befehle parallel zu dekodieren und auszuführen
JPS635432A (ja) 1986-06-25 1988-01-11 Nec Corp マイクロプロセツサ
US4992934A (en) * 1986-12-15 1991-02-12 United Technologies Corporation Reduced instruction set computing apparatus and methods
JPS6491228A (en) * 1987-09-30 1989-04-10 Takeshi Sakamura Data processor
JPS6481032A (en) 1987-09-24 1989-03-27 Hitachi Ltd Microprocessor
US4947366A (en) * 1987-10-02 1990-08-07 Advanced Micro Devices, Inc. Input/output controller incorporating address mapped input/output windows and read ahead/write behind capabilities
US5019968A (en) * 1988-03-29 1991-05-28 Yulan Wang Three-dimensional vector processor
EP0340453B1 (de) * 1988-04-01 1997-06-11 Nec Corporation Reihenfolgesteuersystem zur Behandlung von Befehlen
JPH07120278B2 (ja) * 1988-07-04 1995-12-20 三菱電機株式会社 データ処理装置
JP3098242B2 (ja) * 1988-07-13 2000-10-16 日本電気株式会社 データ処理装置
US5202967A (en) * 1988-08-09 1993-04-13 Matsushita Electric Industrial Co., Ltd. Data processing apparatus for performing parallel decoding and parallel execution of a variable word length instruction
US5132925A (en) * 1988-08-18 1992-07-21 Digital Equipment Corporation Radix-16 divider using overlapped quotient bit selection and concurrent quotient rounding and correction
US5023827A (en) * 1988-08-18 1991-06-11 Digital Equipment Corporation Radix-16 divider using overlapped quotient bit selection and concurrent quotient rounding and correction
US5050068A (en) * 1988-10-03 1991-09-17 Duke University Method and apparatus for using extracted program flow information to prepare for execution multiple instruction streams
JPH0628034B2 (ja) 1988-10-24 1994-04-13 工業技術院長 タグ付計算機
JPH02125333A (ja) 1988-11-04 1990-05-14 Hitachi Micro Comput Eng Ltd プログラムメモリ
JP2810068B2 (ja) * 1988-11-11 1998-10-15 株式会社日立製作所 プロセッサシステム、コンピュータシステム及び命令処理方法
JP2664750B2 (ja) * 1988-12-24 1997-10-22 株式会社東芝 演算装置及び演算処理方法
US5097435A (en) * 1988-12-24 1992-03-17 Kabushiki Kaisha Toshiba High speed dividing apparatus
JPH02308330A (ja) 1989-05-23 1990-12-21 Nec Corp 知識情報処理装置
US5050668A (en) * 1989-09-11 1991-09-24 Allied-Signal Inc. Stress relief for an annular recuperator
JPH03127125A (ja) 1989-10-13 1991-05-30 Hitachi Ltd 学習による多重分岐処理の自動変更方式
DE8913210U1 (de) * 1989-11-08 1989-12-14 Howal Gmbh, 7505 Ettlingen, De
JP2816248B2 (ja) * 1989-11-08 1998-10-27 株式会社日立製作所 データプロセッサ
US5016210A (en) * 1989-11-15 1991-05-14 United Technologies Corporation Binary division of signed operands
JPH063583B2 (ja) * 1990-01-11 1994-01-12 インターナシヨナル・ビジネス・マシーンズ・コーポレーシヨン 命令デコード・サイクル中にアドレスを生成するデジタル・コンピュータおよびその方法
US5095526A (en) * 1990-01-26 1992-03-10 Apple Computer, Inc. Microprocessor with improved interrupt response with interrupt data saving dependent upon processor status
EP0463965B1 (de) * 1990-06-29 1998-09-09 Digital Equipment Corporation Sprungvorhersageeinheit für hochleistungsfähigen Prozessor
US5155843A (en) * 1990-06-29 1992-10-13 Digital Equipment Corporation Error transition mode for multi-processor system
US5193167A (en) * 1990-06-29 1993-03-09 Digital Equipment Corporation Ensuring data integrity by locked-load and conditional-store operations in a multiprocessor system
JPH04104350A (ja) * 1990-08-23 1992-04-06 Hitachi Ltd マイクロプロセッサ
US5317740A (en) * 1991-03-07 1994-05-31 Digital Equipment Corporation Alternate and iterative analysis of computer programs for locating translatable code by resolving callbacks and other conflicting mutual dependencies
JP2984463B2 (ja) * 1991-06-24 1999-11-29 株式会社日立製作所 マイクロコンピュータ
JP2761688B2 (ja) * 1992-02-07 1998-06-04 三菱電機株式会社 データ処理装置
US5272660A (en) * 1992-06-01 1993-12-21 Motorola, Inc. Method and apparatus for performing integer and floating point division using a single SRT divider in a data processor
JP3127125B2 (ja) 1996-05-29 2001-01-22 株式会社ノダ 内装ドアの製造方法
US6282633B1 (en) * 1998-11-13 2001-08-28 Tensilica, Inc. High data density RISC processor
US6961819B2 (en) * 2002-04-26 2005-11-01 Mips Technologies, Inc. Method and apparatus for redirection of operations between interfaces

Also Published As

Publication number Publication date
US20080313444A1 (en) 2008-12-18
EP1122638A2 (de) 2001-08-08
US5682545A (en) 1997-10-28
EP0902361A3 (de) 2002-01-02
US5991545A (en) 1999-11-23
DE69233412T2 (de) 2005-02-17
JP2984463B2 (ja) 1999-11-29
EP0902361B1 (de) 2004-06-02
EP0525375B1 (de) 2001-11-28
US6272620B1 (en) 2001-08-07
KR100294560B1 (ko) 2001-09-17
US20100191934A1 (en) 2010-07-29
HK1039661A1 (en) 2002-05-03
DE69233412D1 (de) 2004-10-21
DE69232232T2 (de) 2002-08-29
KR930001056A (ko) 1993-01-16
US6122724A (en) 2000-09-19
DE69232232D1 (de) 2002-01-10
US5969976A (en) 1999-10-19
EP0902358A2 (de) 1999-03-17
EP1122638A3 (de) 2002-01-23
US6131154A (en) 2000-10-10
US6996700B2 (en) 2006-02-07
EP0902358A3 (de) 2002-01-02
US6343357B1 (en) 2002-01-29
EP0525375A2 (de) 1993-02-03
KR100294559B1 (ko) 2001-09-17
EP1122638B1 (de) 2004-09-15
US20020078325A1 (en) 2002-06-20
KR100268635B1 (ko) 2000-10-16
US6253308B1 (en) 2001-06-26
HK1039661B (zh) 2005-02-25
EP0902361A2 (de) 1999-03-17
US20050251651A1 (en) 2005-11-10
EP0525375A3 (en) 1993-04-21
DE69233361D1 (de) 2004-07-08
JPH05197546A (ja) 1993-08-06
HK1011101A1 (en) 1999-07-02

Similar Documents

Publication Publication Date Title
DE69233361T2 (de) Ein-Chip-Mikrocomputer
DE19735348B4 (de) Vektorprozessor zur Einzelbefehl-Mehrdaten-Verarbeitung unter Verwendung von mehreren Bänken von Vektorregistern und zugehöriges Verfahren zum Betreiben desselben
DE19735350B4 (de) Vektorprozessor zum Ausführen paralleler Operationen und Verfahren hierfür
DE19540102C2 (de) Verfahren und Gleitkomma-Recheneinheit mit einer Logik für eine Vierfach-Präzisions-Arithmetik
DE2903349C2 (de) Prozessor und Verfahren zur Datenverarbeitung
DE112007001989B4 (de) Ausführung von Rundungsoperationen entsprechend einer Anweisung
DE2900324A1 (de) Mikroprogrammierbare arithmetische fliesskommaeinheit
DE112012003864T5 (de) Mehrfach adressierbare Registerdateien und dazugehörige Formatumwandlungen
DE112006000340T5 (de) Datenprozessor, der für eine effiziente digitale Signalverarbeitung ausgebildet ist, und Verfahren für den Prozessor
DE112010004887T5 (de) Verfahren und Vorrichtung zur Durchführung einer Verschiebe- und Exklusiv-ODER-Operation in einer einzelnen Instruktion
DE19920214A1 (de) Verfahren und Einrichtung zum Konvertieren einer Zahl zwischen einem Gleitkommaformat und einem Ganzzahlformat
DE2949375A1 (de) Gleitkommaprozessor
DE102018129341A1 (de) Verfahren und Einrichtung für Mehrfachlade- und Mehrfachspeicher-Vektorbefehle
DE112013003741T5 (de) Systeme, Vorrichtungen und Verfahren zum Durchführen einer Konfliktdetektion unf einer Übertragung von Inhalten eines Registers an Datenelementpositionen eines anderen Registers
DE2612054A1 (de) Verfahren zur adressentwicklung und prozessor zur durchfuehrung des verfahrens
DE112011103195T5 (de) Funktionseinheit zur Berechnung von führenden Nullen von Vektoren, von abschließenden Nullen von Vektoren, der Anzahl von Einsen von Vektoroperanden und der Vektorparität
DE102018006798A1 (de) Einrichtung und Verfahren zum Multiplizieren, Addieren/Subtrahieren und Akkumulieren von gepackten Datenelementen
DE112015003588T5 (de) Maschinenbefehle zum Umsetzen von einem gepackten Dezimalformat zu einem dezimalen Gleitkommaformat
DE69629646T2 (de) Verfahren zur durchführung einer &#34;rotate through carry&#34; operatiion
DE19738542A1 (de) Datenverarbeitungseinrichtung
DE69632970T2 (de) Mikroprozessor mit reduzierten Programmcodes
DE2830334C2 (de)
DE19735349B4 (de) Vektorprozessor und Verfahren zu dessen Betrieb
DE2702722A1 (de) Instruktionsinterpretation in elektronischen datenverarbeitungsanlagen
US5265204A (en) Method and apparatus for bit operational process

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
R071 Expiry of right

Ref document number: 902361

Country of ref document: EP