DE69926458T2 - Vorrichtung und Verfahren für einen Software-Haltepunkt während eines Verzögerungsschlitzes - Google Patents

Vorrichtung und Verfahren für einen Software-Haltepunkt während eines Verzögerungsschlitzes Download PDF

Info

Publication number
DE69926458T2
DE69926458T2 DE69926458T DE69926458T DE69926458T2 DE 69926458 T2 DE69926458 T2 DE 69926458T2 DE 69926458 T DE69926458 T DE 69926458T DE 69926458 T DE69926458 T DE 69926458T DE 69926458 T2 DE69926458 T2 DE 69926458T2
Authority
DE
Germany
Prior art keywords
instruction
command
length
instructions
software breakpoint
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
DE69926458T
Other languages
English (en)
Other versions
DE69926458D1 (de
Inventor
Shigeshi Abiko
Gilbert Laurenti
Mark Buser
Eric Ponsot
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.)
Texas Instruments Inc
Original Assignee
Texas Instruments Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Texas Instruments Inc filed Critical Texas Instruments Inc
Publication of DE69926458D1 publication Critical patent/DE69926458D1/de
Application granted granted Critical
Publication of DE69926458T2 publication Critical patent/DE69926458T2/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/76Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data
    • G06F7/764Masking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/01Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
    • 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/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/607Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers number-of-ones counters, i.e. devices for counting the number of input lines set to ONE among a plurality of input lines, also called bit counters or parallel counters
    • 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/74Selecting or encoding within a word the position of one or more bits having a specified value, e.g. most or least significant one or zero detection, priority encoders
    • 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/76Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data
    • G06F7/762Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data having at least two separately controlled rearrangement levels, e.g. multistage interconnection networks
    • 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
    • G06F9/30014Arithmetic instructions with variable precision
    • 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/30018Bit or string 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • 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/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30083Power or thermal control 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/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
    • 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/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
    • 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/321Program or instruction counter, e.g. incrementing
    • 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/325Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter
    • 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/3552Indexed addressing using wraparound, e.g. modulo or circular 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/38Concurrent instruction execution, e.g. pipeline or 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 or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • 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 or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming
    • 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 or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3856Reordering of instructions, e.g. using queues or age tags
    • 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 or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • 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 or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • G06F9/3879Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set
    • 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 or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • 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 or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
    • G06F9/3891Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute organised in groups of units sharing resources, e.g. clusters
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K13/00Conveying record carriers from one station to another, e.g. from stack to punching mechanism
    • G06K13/02Conveying record carriers from one station to another, e.g. from stack to punching mechanism the record carrier having longitudinal dimension comparable with transverse dimension, e.g. punched card
    • G06K13/08Feeding or discharging cards
    • G06K13/0806Feeding or discharging cards using an arrangement for ejection of an inserted card
    • G06K13/0825Feeding or discharging cards using an arrangement for ejection of an inserted card the ejection arrangement being of the push-push kind

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Debugging And Monitoring (AREA)
  • Advance Control (AREA)
  • Microcomputers (AREA)
  • Power Sources (AREA)
  • Executing Machine-Instructions (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

  • GEBIET DER ERFINDUNG
  • Die vorliegende Erfindung bezieht sich auf Prozessoren und auf die Emulation eines Prozessors, um Hardware oder Software auszutesten.
  • HINTERGRUND DER ERFINDUNG
  • Mikroprozessoren sind Mehrzweckprozessoren, die hohe Befehlsdurchsätze erfordern, um die darauf ablaufende Software auszuführen, wobei sie, abhängig von den beteiligten speziellen Software-Anwendungen, einen weiten Bereich von Verarbeitungsanforderungen besitzen können. Es ist bekannt, einen Stapel vorzusehen, der verwendet werden kann, um Variablen von einer Software-Routine zu einer weiteren weiterzuleiten. Stapel werden außerdem verwendet, um die Inhalte des Programmzählers aufrechtzuerhalten, wenn eine erste Software-Routine eine zweite Software-Routine aufruft, sodass der Programmablauf beim Abschluss der aufgerufenen zweiten Routine zur ersten Software-Routine zurückkehren kann. Ein Aufruf innerhalb der zweiten Software-Routine kann eine dritte Routine aufrufen usw. Außerdem ist es bekannt, einen Software-Unterbrechungspunkt-Befehl vorzusehen, der während des Austestens der Software zu verwenden ist.
  • Es sind viele verschiedene Typen von Prozessoren bekannt, von denen die Mikroprozessoren nur ein Beispiel sind. Digitale Signalprozessoren (DSPs) werden z. B. weit und breit verwendet, insbesondere für spezifische Anwendungen, wie z. B. mobile Verarbeitungsanwendungen. Die DSPs sind typischerweise konfiguriert, um die Leistung der betroffenen Anwendungen zu optimieren, wobei sie spezialisiertere Ausführungseinheiten und Befehlssätze verwenden, um dies zu erreichen. Insbesondere, aber nicht ausschließlich, ist es bei Anwendungen, wie z. B. Mobiltelekommunikationsanwendungen, erwünscht, eine ständig zunehmende DSP-Leistung bereitzustellen, während die Leistungsaufnahme so niedrig wie möglich gehalten wird.
  • Die europäische Patentanmeldung 0 849 672 beschreibt eine Decodierungs- und Ausführungsanordnung für Befehle, die auf Daten mit verschiedenen Längenformaten wirkt.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Spezielle und bevorzugte Aspekte der Erfindung sind in den beigefügten unabhängigen und abhängigen Ansprüchen dargelegt. Kombinationen aus Merkmalen der abhängigen Ansprüche können mit Merkmalen der unabhängigen Ansprüche kombiniert werden, wie es geeignet ist, und nicht lediglich so, wie in den Ansprüchen explizit dargelegt ist. Die vorliegende Erfindung ist auf die Verbesserung der Leistung von Prozessoren, wie z. B., aber nicht ausschließlich, von digitalen Signalprozessoren, gerichtet.
  • Gemäß einem ersten Aspekt der Erfindung wird ein Prozessor geschaffen, der ein programmierbarer digitaler Signalprozessor (DSP) ist, der sowohl eine hohe Codedichte als auch eine leichte Programmierung bietet. Die Architektur und der Befehlssatz sind für eine niedrigere Leistungsaufnahme und die Ausführung mit hohem Wirkungsgrad sowohl von DSP-Algorithmen, wie z. B. für schnurlose Telephone, als auch von reinen Steueraufgaben optimiert. Der Prozessor enthält eine Befehlspuffereinheit, die so betreibbar ist, dass sie einen von einem Befehlsspeicher geholten Befehl decodiert. Der Befehl kann eine Anzahl von Befehlsformatlängen besitzen. Der Prozessor besitzt außerdem eine Datenrecheneinheit, die die Befehle ausführt, die durch die Befehlspuffereinheit decodiert werden, und einen Programmzähler, der so betreibbar ist, dass er eine Befehlsadresse bereitstellt, die für den Befehlspuffer bereitgestellt wird. Die Befehlspuffereinheit ist so betreibbar, dass sie einen Software-Unterbrechungspunkt-Befehl (SWBP) decodiert, der eine Länge besitzt, die gleich einem der Befehlslängenformate des Befehlssatzes ist.
  • Gemäß einem weiteren Aspekt der vorliegenden Erfindung ist der Befehlspuffer so betreibbar, dass er einen Software-Unterbrechungspunkt-Befehl, der mit einem nicht operationalen Befehl kombiniert ist, in einem einzigen Zyklus deco diert, sodass der kombinierte Software-Unterbrechungspunkt-Befehl und der nicht operationale Befehl (NOP) durch die Datenrecheneinheit als ein einziger Befehl behandelt werden.
  • Gemäß einem weiteren Aspekt der vorliegenden Erfindung besitzt der Software-Unterbrechungspunkt-Befehl eine kleine Anzahl von Befehlslängenformaten, die kleiner als die Anzahl der Befehlslängenformate im vollständigen Befehlssatz ist. Für die Kombination aus dem SWBP- und dem NOP-Befehl gibt es jedoch ein kombiniertes Befehlslängenformat, um jedem Befehlslängenformat des Befehlssatzes zu entsprechen.
  • Gemäß einem weiteren Aspekt der vorliegenden Erfindung wird ein Verfahren zum Betreiben eines digitalen Systems geschaffen. Mehrere Befehle werden in einer Befehlspipeline des Prozessorkerns ausgeführt, wobei die Befehle in Reaktion auf einen Programmzähler von einem dem Prozessorkern zugeordneten Befehlsspeicher geholt werden, wobei die Folge von Befehlen aus einer Befehlsmenge ausgewählt wird, die eine Anzahl von Befehlslängenformaten besitzt. Während der Emulation wird ein Befehl in der Folge von Befehlen durch einen Software-Unterbrechungspunkt-Befehl, der dasselbe Befehlslängenformat wie der Befehl hat, den er ersetzt, ungeachtet der Länge ersetzt. Die Ausführungsfolge wird durch Ausführen des Software-Unterbrechungspunkt-Befehls nach der Ausführung eines Teils der Folge von Befehlen unterbrochen. Dann wird die Ausführung der Folge von Befehlen durch Ersetzen des Software-Unterbrechungspunkt-Befehls durch den vorher ersetzen Befehl in der Folge von Befehlen wiederaufgenommen.
  • Ein weiterer Aspekt der vorliegenden Erfindung ist, dass der erste Software-Unterbrechungspunkt-Befehl durch Auswählen eines von einigen Software-Unterbrechungspunkt-Befehlen und Kombinieren des Software-Unterbrechungspunkt-Befehls mit dem nicht operationalen Befehl, derart, dass die kombinierte Länge des Software-Unterbrechungspunkt-Befehls und des nicht operationalen Befehls gleich der Befehlslänge des ersetzen Befehls ist, gebildet.
  • Ein weiterer Aspekt der vorliegenden Erfindung ist, dass, wenn ein Software-Unterbrechungspunkt-Befehl in einem Verzögerungsschlitz ausgeführt wird, der sich aus der Ausführung eines Befehls des diskontinuierlichen Typs ergibt, eine Rücksprungadresse mit demselben Wert gespeichert wird, den sie hätte, wenn der ersetzte Befehl in der Folge von Befehlen vorhanden wäre.
  • KURZBESCHREIBUNG DER ZEICHNUNG
  • Besondere Ausführungsformen gemäß der Erfindung werden nun lediglich beispielhaft und unter Bezugnahme auf die beigefügten Zeichnungen beschrieben, in denen gleiche Bezugszeichen verwendet werden, um gleiche Teile zu bezeichnen, und in der sich die Figuren auf den Prozessor nach 1 beziehen, wenn es nicht anders angegeben ist, und in der:
  • 1 ein schematischer Blockschaltplan eines Prozessors gemäß einer Ausführungsform der Erfindung ist;
  • 2 eine schematische Darstellung eines Kerns des Prozessors nach 1 ist;
  • 3 ein ausführlicherer schematischer Blockschaltplan der verschiedenen Ausführungseinheiten des Kerns des Prozessors ist;
  • 4 eine schematische Darstellung einer Befehlspuffer-Warteschlange und eines Befehlsdecodierers des Prozessors ist;
  • 5 eine schematische Darstellung des Kerns des Prozessors ist, um die Operation der Pipeline des Prozessors zu erklären;
  • 6 ein Blockschaltplan des Prozessors ist, der einen verbundenen Speicher der Speichermanagementeinheit veranschaulicht;
  • 7 die vereinheitlichte Struktur der Programm- und Daten-Speicherräume des Prozessors zeigt;
  • 8 eine schematische Darstellung der Befehlspipeline während der Ausführung eines Software-Unterbrechungspunkt-Befehls ist;
  • 9 ein Ablaufplan ist, der den Ablauf der Ausführung des Programms während eines Unterprogramm-Aufrufs veranschaulicht;
  • 10A10C Zeitlinien sind, die die Berechnung einer Rücksprungadresse während des Unterprogramm-Aufrufs nach 9 im Zusammenhang mit einem Software-Unterbrechungspunkt-Befehl veranschaulichen;
  • 10 eine graphische Darstellung ist, die die Unterbrechungspunkt-Befehle mit verschiedenen Längen veranschaulicht, die durch die Kombination mit nicht operationalen Befehlen gemäß einem Aspekt der vorliegenden Erfindung gebildet werden;
  • 11 ein ausführlicherer Blockschaltplan der verschiedenen Register ist, die in der Befehlspuffereinheit nach 4 verwendet werden;
  • 12 ein Taktdiagramm ist, das die Operation der Befehlspipeline während eines Unterprogramm-Aufrufs veranschaulicht;
  • 13 ein Taktdiagramm ist, das die Operation der Befehlspipeline während der Ausführung eines Software-Unterbrechungspunkt-Befehls veranschaulicht, der im ersten Verzögerungsschlitz nach einem CALL-Befehl angeordnet ist;
  • 14 ein Taktdiagramm ist, das die Operation der Befehlspipeline während der Ausführung eines Software-Unterbrechungspunkt-Befehls veranschaulicht, der im zweiten Verzögerungsschlitz nach einem CALL-Befehl angeordnet ist;
  • 15 eine schematische Darstellung einer integrierten Schaltung ist, die den Prozessor enthält; und
  • 16 eine schematische Darstellung einer Telekommunikationsvorrichtung ist, die den Prozessor nach 1 enthält.
  • BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSFORMEN
  • Obwohl die Erfindung besondere Anwendung in digitalen Signalprozessoren (DSPs) findet, die z. B. in einer anwendungsspezifischen integrierten Schaltung (ASIC) implementiert sind, findet sie außerdem Anwendung in anderen Formen von Prozessoren.
  • Die Grundarchitektur eines Beispiels eines Prozessors gemäß der Erfindung wird nun beschrieben. Der Prozessor 100 ist ein programmierbarer Festkomma-DSP-Kern mit variabler Befehlslänge (8 Bits bis 48 Bits), der sowohl eine hohe Codedichte als auch eine leichte Programmierung bietet. Die Architektur und der Befehlssatz sind für eine niedrigere Leistungsaufnahme und die Ausführung mit hohem Wirkungsgrad sowohl von DSP-Algorithmen als auch von reinen Steueraufgaben, wie z. B. für schnurlose Telephone, optimiert. Der Prozessor 100 enthält Emulations- und Codeaustest-Einrichtungen.
  • 1 ist ein schematischer Überblick über ein digitales System 10 gemäß einer Ausführungsform der vorliegenden Erfindung. Das digitale System enthält einen Prozessor 100 und eine Prozessor-Hauptplatine 20. In einem speziellen Beispiel der Erfindung ist das digitale System ein System 10 eines digitalen Signalprozessors, das in einer anwendungsspezifischen integrierten Schaltung (ASIC) implementiert ist. Im Interesse der Klarheit zeigt 1 nur diejenigen Abschnitte des Mikroprozessors 100, die für ein Verständnis einer Ausführungsform der vorliegenden Erfindung relevant sind. Die Einzelheiten der allgemeinen Konstruktion für DSPs sind wohlbekannt, wobei sie leicht anderswo gefunden werden können. US-Patent 5.072.418, erteilt an Frederick Boutaud u. a., beschreibt z. B. einen DSP ausführlich. US-Patent 5.329.471, erteilt an Gary Swoboda u. a., beschreibt ausführlich, wie ein DSP zu prüfen und zu emulieren ist. Einzelheiten der Abschnitte des Mikroprozessors 100, die für eine Ausführungsform der vorliegenden Erfindung relevant sind, werden im Folgenden ausreichend ausführlich erklärt, um einem Durchschnittsfachmann auf dem Gebiet der Mikroprozessoren zu ermöglichen, die Erfindung auszuführen und zu verwenden.
  • Wie in 1 gezeigt ist, bildet der Prozessor 100 eine Zentraleinheit (CPU) mit einem Prozessorkern 102 und einer Speicherschnittstelle 104, um den Prozessorkern 102 mit den Speichereinheiten außerhalb des Prozessorkerns 102 zu verbinden.
  • Die Prozessor-Hauptplatine 20 umfasst einen Hauptplatinen-Bus 22, mit dem die Speichermanagementeinheit 104 des Prozessors verbunden ist. Mit dem Hauptplatinen-Bus 22 sind außerdem ein Befehls-Cache-Speicher 24, die Peripherievorrichtungen 26 und eine externe Schnittstelle 28 verbunden.
  • Es ist klar, dass in anderen Beispielen die Erfindung unter Verwendung anderer Konfigurationen und/oder anderer Technologien implementiert sein könnte. Der Prozessor 100 könnte z. B. eine erste integrierte Schaltung bilden, wobei die Prozessor-Hauptplatine 20 davon separat ist. Der Prozessor 100 könnte z. B. ein DSP sein, der von einer Hauptplatine 20 separat ist und auf einer Hauptplatine 20 angebracht ist, die einen Hauptplatinen-Bus 22, die Peripherieschnittstellen und die externen Schnittstellen unterstützt. Der Prozessor 100 könnte z. B. anstatt ein DSP ein Mikroprozessor sein, wobei er in anderen Technologien als der ASIC-Technologie implementiert sein könnte. Der Prozessor oder ein Prozessor, der den Prozessor enthält, könnte in einer oder mehreren integrierten Schaltungen implementiert sein.
  • 2 veranschaulicht die Grundstruktur einer Ausführungsform des Prozessorkerns 102. Wie veranschaulicht ist, enthält diese Ausführungsform des Prozessorkerns 102 vier Elemente, nämlich eine Befehlspuffereinheit (I-Einheit) 106 und drei Ausführungseinheiten. Die Ausführungseinheiten sind eine Programmablaufeinheit (P-Einheit) 108, eine Adressendaten-Ablaufeinheit (A-Einheit) 110 und eine Datenrecheneinheit (D-Einheit) 112, um die von der Befehlspuffereinheit (I-Einheit) 106 decodierten Befehle auszuführen und um den Programmablauf zu steuern und zu überwachen.
  • 3 veranschaulicht die P-Einheit 108, die A-Einheit 110 und die D-Einheit 112 des Prozessorkerns 102 ausführlicher, wobei sie die Busstruktur zeigt, die die verschiedenen Elemente des Prozessorkerns 102 verbindet. Die P-Einheit 108 enthält z. B. die Schleifen-Steuerschaltungsanordnung, die GoTo/Verzweigungs-Steuerschaltungsanordnung und verschiedenen Register, um den Programmablauf zu steuern und zu überwachen, wie z. B. die Wiederholungszählerregister und die Unterbrechungsmaskierungs-, Merker- oder Vektor-Register. Die P-Einheit 108 ist an die universellen Datenschreibbusse (EB, FB) 130, 132, die universellen Datenlesebusse (CB, DB) 134, 136 und einen Koeffizientenprogrammbus (BB) 138 gekoppelt. Außerdem ist die P-Einheit 108 über verschiedene Busse, die als CSR, ACB und RGD bezeichnet sind, an die Untereinheiten innerhalb der A-Einheit 110 und der D-Einheit 112 gekoppelt.
  • Wie in 3 veranschaulicht ist, enthält in der vorliegenden Ausführungsform die A-Einheit 110 eine Registerdatei 30, eine Datenadressenerzeugungs-Untereinheit (DAGEN) 32 und eine Arithmetik- und Logikeinheit (ALU) 34. Die Registerdatei 30 der A-Einheit enthält verschiedenen Register, unter denen sich die 16-Bit-Zeigerregister (AR0, ..., AR7) und die Datenregister (DR0, ..., DR3) befinden, die außerdem sowohl für den Datenfluss als auch die Adressenerzeugung verwendet werden können. Außerdem enthält die Registerdatei 16-Bit-Umlaufspeicherregister und 7-Bit-Datenseitenregister. Sowohl die universellen Busse (EB, FB, CB, DB) 130, 132, 134, 136 als auch ein Koeffizientendatenbus 140 und ein Koeffizientenadressenbus 142 sind an die Registerdatei 30 der A-Einheit gekoppelt. Die Registerdatei 30 der A-Einheit ist durch die einseitig gerichteten Busse 144 bzw. 146, die in entgegengesetzten Richtungen arbeiten, an die DAGEN-Einheit 32 der A-Einheit gekoppelt. Die DAGEN-Einheit 32 enthält 16-Bit-X/Y-Register und Koeffizienten- und Stapelzeiger-Register, z. B. zum Steuern und Überwachen der Adressenerzeugung innerhalb des Prozessors 100.
  • Die A-Einheit 110 umfasst außerdem die ALU 34, die sowohl eine Schieberfunktion als auch die Funktionen enthält, die typischerweise einer ALU zugeordnet sind, wie z. B. Addition, Subtraktion und die logischen UND-, ODER- und XOR-Operatoren. Die ALU 34 ist außerdem an die universellen Busse (EB, DB) 130, 136 und an einen Befehlskonstanten-Datenbus (KDB) 140 gekoppelt. Die ALU der A-Einheit ist durch einen PDA-Bus an die P-Einheit 108 gekoppelt, um die Registerinhalte von der Registerdatei der P-Einheit 108 zu empfangen. Die ALU 34 ist außerdem durch die Busse RGA und RGB, um die Inhalte der Adressen- und Datenregister zu empfangen, und durch einen Bus RGD, um die Adressen- und Datenregister in der Registerdatei 30 weiterzuleiten, an die Registerdatei 30 der A-Einheit gekoppelt.
  • Gemäß der veranschaulichten Ausführungsform der Erfindung enthält die D-Einheit 112 eine Registerdatei 36 der D-Einheit, eine ALU 38 der D-Einheit, eine Verschiebeeinrichtung 40 der D-Einheit und zwei Multiplikations- und Akkumulationseinheiten (MAC1, MAC2) 42 und 44. Die Registerdatei 36 der D-Einheit, die ALU 38 der D-Einheit und die Verschiebeeinrichtung 40 der D-Einheit sind an die Busse (EB, FB, CB, DB und KDB) 130, 132, 134, 136 und 140 gekoppelt, während die MAC-Einheiten 42 und 44 an die Busse (CB, DB, KDB) 134, 136, 140 und den Datenlesebus (BB) 144 gekoppelt sind. Die Registerdatei 36 der D-Einheit enthält 40-Bit-Operatoren (AC0, ..., AC3) und ein 16-Bit-Übergangsregister. Die D-Einheit 112 kann außer den 40-Bit-Akkumulatoren außerdem den 16-Bit-Zeiger und die Datenregister in der A-Einheit 110 als die Quell- oder Zielregister verwenden. Die Registerdatei 36 der D-Einheit empfängt Daten über die Akkumulator-Schreibbusse (ACW0, ACW1) 146, 148 von der ALU 38 der D-Einheit und den MACs 1 u. 2 42, 44 und über den Akkumulator-Schreibbus (ACW1) 148 von der Verschiebeeinrichtung 40 der D-Einheit. Die Daten werden aus den Akkumulatoren der Registerdatei der D-Einheit über die Akkumulator-Lesebusse (ACR0, ACR1) 150, 152 in die ALU 38 der D-Einheit, die Verschiebeeinrichtung 40 der D-Einheit und die MACs 1 u. 2 42, 44 gelesen. Die ALU 38 der D-Einheit und die Verschiebeeinrichtung 40 der D-Einheit sind außerdem über verschiedene Busse, die als EFC, DRB, DR2 und ACB bezeichnet sind, an die Untereinheiten der A-Einheit 108 gekoppelt.
  • In 4 ist eine Befehlspuffereinheit 106 gemäß der vorliegenden Ausführungsform veranschaulicht, die eine 32-Wort-Befehlspuffer-Warteschlange (IBQ) 502 umfasst. Die IBQ 502 umfasst 32 × 16-Bit-Register 504, die logisch in 8-Bit-Bytes 506 unterteilt sind. Die Befehle kommen über den 32-Bit-Programmbus (PB) 122 an der IBQ 502 an. Die Befehle werden in einem 32-Bit-Zyklus in die Stelle geholt, auf die durch den lokalen Schreibprogrammzähler (LWPC) 532 gezeigt wird. Der LWPC 532 ist in einem Register enthalten, das sich in der P-Einheit 108 befindet. Die P-Einheit 108 enthält außerdem das Register des lokalen Leseprogrammzählers (LRPC) 536 und die Register des Schreibprogrammzählers (WPC) 530 und des Leseprogrammzählers (RPC) 534. Der LRPC 536 zeigt auf die Stelle in der IBQ 502 des nächsten Befehls oder der nächsten Befehle, der/die in den/die Befehlsdecodierer 512 und 514 zu laden sind. Das heißt, der LRPC 534 zeigt auf die Stelle in der IBQ 502 des Befehls, der gegenwärtig zu den Decodierern 512, 514 abgefertigt wird. Der WPC zeigt auf die Adresse im Programmspeicher des Beginns der nächsten 4 Bytes des Befehlscodes für die Pipeline. Für jeden Holvorgang in die IBQ werden die nächsten 4 Bytes vom Programmspeicher ungeachtet der Befehlsgrenzen geholt. Der RPC 534 zeigt auf die Adresse im Programmspeicher des Befehls, der gegenwärtig zu dem/den Decodierer/n 512/514 abgefertigt wird.
  • In dieser Ausführungsform werden die Befehle in einem 48-Bit-Wort gebildet und werden über die Multiplexer 520 und 521 über einen 48-Bit-Bus 516 in die Befehlsdecodierer 512, 514 geladen. Es wird für einen Durchschnittsfachmann auf dem Gebiet offensichtlich sein, dass die Befehle in Wörtern gebildet werden können, die nicht 48 Bits umfassen, und dass die vorliegende Erfindung nicht auf die oben beschriebene spezifische Ausführungsform eingeschränkt ist.
  • Für die gegenwärtig bevorzugte 48-Bit-Wortgröße kann der Bus 516 ein Maximum von 2 Befehlen, einen pro Decodierer, während irgendeines Befehlszyklus laden. Die Kombination der Befehle kann in irgendeiner Kombination der Formate, 8, 16, 24, 32, 40 und 48 Bits erfolgen, die über den 48-Bit-Bus passen. Der Decodierer 1, 512, wird gegenüber dem Decodierer 2, 514 bevorzugt geladen, falls nur ein Befehl während eines Zyklus geladen werden kann. Die entsprechenden Befehle werden dann zu den entsprechenden Funktionseinheiten weitergelei tet, um sie auszuführen und um auf die Daten zuzugreifen, für die der Befehl oder die Operation auszuführen ist. Bevor die Befehle zu den Befehlsdecodierern weitergeleitet werden, werden sie auf die Bytegrenzen ausgerichtet. Die Ausrichtung wird basierend auf dem für den vorhergehenden Befehl während seiner Decodierung abgeleiteten Format ausgeführt. Die der Ausrichtung der Befehle auf die Bytegrenzen zugeordnete Multiplexierung wird in den Multiplexierern 520 und 521 ausgeführt.
  • Zwei Befehle können parallel angeordnet werden, falls einer der zwei Befehle mit einem Parallelfreigabebit versehen ist. Die Hardware-Unterstützung für einen derartigen Typ der Parallelität wird als der Parallelfreigabemechanismus bezeichnet. Gleichermaßen können zwei Befehle parallel angeordnet werden, falls beide Befehle einzelne Datenspeicherzugriffe (Smem oder dbl(lmem)) in der indirekten Betriebsart ausführen. Die Hardware-Unterstützung für einen derartigen Typ der Parallelität wird als der weiche duale Mechanismus bezeichnet.
  • Der Prozessorkern 102 führt die Befehle durch eine 7-stufige Pipeline aus, wobei deren jeweiligen Stufen nun unter Bezugnahme auf die Tabelle 1 und auf 5 beschrieben werden. Die Prozessorbefehle werden ungeachtet dessen, wo die Ausführung stattfindet (A-Einheit oder D-Einheit), durch eine 7-stufige Pipeline ausgeführt. Um die Größe des Programmcodes zu verringern, fertigt ein C-Kompilierer gemäß einem Aspekt der vorliegenden Erfindung so viele Befehle wie möglich für die Ausführung in der A-Einheit ab, sodass die D-Einheit ausgeschaltet werden kann, um mit der Leistung sparsam umzugehen. Dies erfordert, dass die A-Einheit die an den Speicheroperanden ausgeführten Grundoperationen unterstützt.
  • Figure 00120001
  • Figure 00130001
    Tabelle 1: Die Beschreibung der Prozessorpipeline für einen Einzelzyklusbefehl ohne Speicherwartezustände
  • Die erste Stufe der Pipeline ist eine VORAUSLESE-Stufe (P0) 202, wobei während dieser Stufe eine nächste Programmspeicherstelle adressiert wird, indem eine Adresse auf dem Adressenbus (PAB) 118 der Speicherschnittstelle 104 aktiviert wird.
  • In der nächsten Stufe, der HOL-Stufe (P1) 204, wird der Programmspeicher separat, wobei die I-Einheit 106 von der Speicherschnittstelleneinheit 104 über den PB-Bus 122 gefüllt wird.
  • Die VORAUSLESE- und HOL-Stufen sind vom Rest der Pipelinestufen separat, weil die Pipeline während der VORAUSLESE- und HOL-Stufen unterbro chen werden kann, um den sequentiellen Programmablauf zu unterbrechen und auf andere Befehle im Programmspeicher zu zeigen, z. B. für einen Verzweigungsbefehl.
  • Der nächste Befehl im Befehlspuffer wird dann in der dritten Stufe, DECODIEREN (P2) 206, an den/die Decodierer 512/514 abgefertigt, wo der Befehl decodiert und an die Ausführungseinheit für die Ausführung dieses Befehls, z. B. an die P-Einheit 108, die A-Einheit 110 oder die D-Einheit 112, abgefertigt wird. Die Decodier-Stufe 206 enthält die Decodierung wenigstens eines Teils des Befehls einschließlich eines ersten Teils, der die Klasse des Befehls angibt, eines zweiten Teils, der das Format des Befehls angibt, und eines dritten Teils, der eine Adressierungsbetriebsart für den Befehl angibt.
  • Die nächste Stufe ist eine ADRESSIER-Stufe (P3) 208, in der die Adresse der in dem Befehl zu verwendenden Daten berechnet wird oder eine neue Programmadresse berechnet wird, sollte der Befehl eine Programmverzweigung oder einen Sprung erfordern. Die jeweiligen Berechnungen finden in der A-Einheit 110 bzw. der P-Einheit 108 statt.
  • In einer ZUGRIFFS-Stufe (P4) 210 wird die Adresse eines Leseoperanden erzeugt, wobei dann der Speicheroperand, dessen Adresse in einem DAGEN-Y-Operator mit einer indirekten Ymem-Adressierungsbetriebsart erzeugt worden ist, aus dem indirekt adressierten Y-Speicher (Ymem) GELESEN wird.
  • Die nächste Stufe der Pipeline ist die LESE-Stufe (P5) 212, in der ein Speicheroperand, dessen Adresse in einem DAGEN-X-Operator mit einer indirekten Xmem-Adressierungsbetriebsart oder in einem DAGEN-C-Operator mit der Koeffizientenadressenbetriebsart erzeugt worden ist, GELESEN wird. Die Adresse der Speicherstelle, an der das Ergebnis des Befehls zu schreiben ist, wird erzeugt.
  • Schließlich gibt es eine Ausführungs-Stufe AUSFÜHREN (P6) 214, in der der Befehl entweder in der A-Einheit 110 oder in der D-Einheit 112 ausgeführt wird. Das Ergebnis wird dann in einem Datenregister oder Akkumulator gespeichert oder für die Lese-/Modifiziere-/Schreib-Befehle in den Speicher geschrieben. Au ßerdem werden während der AUSFÜHRUNGS-Stufe die Verschiebungsoperationen an den Daten in den Akkumulatoren ausgeführt.
  • Die Pipeline des Prozessors 100 ist geschützt. Dies verbessert die Leistung des C-Kompilierers signifikant, weil keine NOP-Befehle eingefügt werden müssen, um Latenzzeitanforderungen zu erfüllen. Es macht außerdem die Codeübersetzung von einem Prozessor einer früheren Generation zu einem Prozessor einer späteren Generation viel leichter.
  • Eine im Prozessor 100 verwendete Grundregel des Pipelineschutzes lautet wie folgt: Falls ein Schreibzugriff eingeleitet worden ist, bevor der laufende Lesezugriff noch nicht abgeschlossen worden ist, oder falls beide Zugriffe dasselbe Betriebsmittel gemeinsam benutzen, dann werden zusätzliche Zyklen eingefügt, um den Schreibabschluss zu erlauben und den nächsten Befehl mit den aktualisierten Operanden auszuführen; aber für die Emulation muss sich eine Einzelschritt-Codeausführung genau wie die freilaufende Codeausführung verhalten.
  • Das Grundprinzip der Operation für einen Pipelineprozessor wird nun unter Bezugnahme auf 5 beschrieben. Wie aus 5 ersichtlich ist, finden für einen ersten Befehl 302 die aufeinanderfolgenden Pipelinestufen während der Zeitperioden T1–T7 statt. Jede Zeitperiode ist ein Taktzyklus für den Maschinentakt des Prozessors. Ein zweiter Befehl 304 kann in der Periode T2 in die Pipeline eintreten, weil der vorhergehende Befehl nun in die nächste Pipelinestufe bewegt worden ist. Für den Befehl 3, 306, tritt die VORAUSLESE-Stufe 202 in der Zeitperiode T3 auf. Wie aus 5 für eine siebenstufige Pipeline ersichtlich ist, kann eine Gesamtmenge von 7 Befehlen gleichzeitig verarbeitet werden. Für alle 7 Befehle 302314 zeigt 5 sie alle in der Zeitperiode T7 unter Verarbeitung. Eine derartige Struktur fügt eine Form der Parallelität zur Verarbeitung der Befehle hinzu.
  • Wie in 6 gezeigt ist, enthält die vorliegende Ausführungsform der Erfindung eine Speicherschnittstelleneinheit 104, die über einen 24-Bit-Adressenbus 118 und einen bidirektionalen 32-Bit-Datenbus 120 an den externen Programm speicher 150 gekoppelt ist. Außerdem ist die Speicherschnittstelleneinheit 104 über einen 24-Bit-Adressenbus 114 und einen bidirektionalen 16-Bit-Datenbus 116 an die Datenspeichereinheiten 151 gekoppelt. Die Speicherschnittstelleneinheit 104 ist außerdem über einen 32-Bit-Programmlesebus (PB) 122 an die I-Einheit 106 des Maschinenprozessorkerns 102 gekoppelt. Die P-Einheit 108, die A-Einheit 110 und die D-Einheit 112 sind über die Datenlese- und Datenschreibbusse und die entsprechenden Adressenbus an die Speicherschnittstelleneinheit 104 gekoppelt. Die P-Einheit 108 ist ferner an einen Programmadressenbus 128 gekoppelt.
  • Insbesondere ist die P-Einheit 108 über einen 24-Bit-Programmadressenbus 128, die zwei 16-Bit-Datenschreibbusse (EB, FB) 130, 132 und die zwei 16-Bit-Datenlesebusse (CB, DB) 134, 136 an die Speicherschnittstelleneinheit 104 gekoppelt. Die A-Einheit 110 ist über zwei 24-Bit-Datenschreibadressenbusse (EAB, FAB) 160, 162, die zwei 16-Bit-Datenschreibbusse (EB, FB) 130, 132, die drei Datenleseadressenbusse (BAB, CAB, DAB) 164, 166, 168 und die zwei 16-Bit-Datenlesebusse (CB, DB) 134, 136 an die Speicherschnittstelleneinheit 104 gekoppelt. Die D-Einheit 112 ist über die zwei Datenschreibbusse (EB, FB) 130, 132 und die drei Datenlesebusse (BB, CB, DB) 144, 134, 136 an die Speicherschnittstelleneinheit 104 gekoppelt.
  • 6 stellt bei 124 die Weiterleitung der Befehle von der I-Einheit 106 zur P-Einheit 108 dar, um z. B. Verzweigungsbefehle weiterzuleiten. Außerdem stellt 6 bei 126 und 128 die Weiterleitung der Daten von der I-Einheit 106 zur A-Einheit 110 bzw. zur D-Einheit 112 dar.
  • Der Prozessor 100 ist um einen vereinheitlichten Programm/Daten-Raum organisiert, wie in 7 veranschaulicht ist. Ein Programmzeiger umfasst intern 24 Bits, wobei er eine Byte-Adressierungs-Fähigkeit besitzt, wobei aber nur eine 22-Bit-Adresse zum Speicher exportiert wird, weil ein Programm-Holvorgang immer an einer 32-Bit-Grenze ausgeführt wird. Während der Emulation für die Software-Entwicklung werden jedoch z. B. die vollen 24-Bit-Adressen für die Hardware-Unterbrechungspunkt-Implementierung bereitgestellt. Die Datenzeiger umfassen 16 Bits, erweitert um eine 7-Bit-Hauptdatenseite, wobei sie eine Wortadressierungsfähigkeit besitzen. Die Software kann bis zu 3 Hauptdatenseiten wie folgt definieren:
    MDP Direktzugriff indirekter Zugriff CDP
    MDP05 – indirekter Zugriff AR[0-5]
    MDP67 – indirekter Zugriff AR[6-7]
  • Es wird ein Stapel aufrechterhalten, wobei er immer auf der Hauptdatenseite 0 steht. Die speicherabgebildeten Register der CPU sind von allen Seiten sichtbar.
  • Verschiedene Aspekte des Prozessors 100 sind in der Tabelle 2 zusammengefasst.
  • Figure 00170001
  • Figure 00180001
  • Figure 00190001
    Tabelle 2 – Zusammenfassung des verbesserten Prozessors 100
  • Um das Software- oder Hardware-Austesten auszuführen, ist es bekannt, einen Emulations-Host-Prozessor mit einem Mikroprozessor, der geprüft wird, zu verbinden, sodass der Host-Prozessor in Reaktion auf die verschiedenen Software- oder Hardware-Ereignisse die Inhalte der verschiedenen internen Register anzeigen kann, wie im US-Patent 5.329.471, erteilt an Gary Swoboda, auf das vorausgehend Bezug genommen worden ist, beschrieben ist. Die Software-Ereignisse können erzeugt werden, indem ein Befehl in einem Programm durch einen Software-Unterbrechungspunkt-Befehl ersetzt wird. Der Host-Prozessor wird aufgerufen, wenn der Software-Unterbrechungspunkt-Befehl durch den Mikroprozessor, der geprüft wird, ausgeführt wird. Ähnlich kann die Austest-Software im Mikroprozessor, der geprüft wird, aufgerufen werden, indem der Software-Unterbrechungspunkt-Befehl ausgeführt wird.
  • Ein Software-Unterbrechungspunkt wird implementiert, indem der ursprünglich geladene Befehl durch einen ersetzt wird, der den Prozessor veranlasst, die Ausführung anzuhalten. Die Emulations-Software verwendet die folgenden Schritte, wenn ein Software-Unterbrechungspunkt festgelegt wird:
    • 1. Das Diagnoseprogramm spezifiziert eine Byteadresse eines Befehls, der durch einen Software-Unterbrechungspunkt zu ersetzen ist.
    • 2. Die Emulations-Software liest beginnend bei dieser Byteadresse einen Abschnitt, typischerweise 64 Bits, des Programms.
    • 3. Die Emulations-Software bestimmt die Größe des Originalbefehls, wobei sie Parallelität, weichen Dualismus usw. in Betracht zieht.
    • 4. Die Emulations-Software wählt einen Software-Unterbrechungspunkt-Befehl derselben Größe wie der Originalbefehl aus und schreibt ihn in den Programmspeicher.
    • 5. Die Emulations-Software verifiziert dann, dass der Software-Unterbrechungspunkt im Speicher vorhanden ist, indem sie ihn liest und das Ergebnis mit dem vergleicht, was geschrieben worden ist. Falls die spezifizierte Adresse ein Festwertspeicher (ROM) ist, dann ist die Verwendung eines Software-Unterbrechungspunkts nicht möglich, wobei stattdessen ein Hardware-Unterbrechungspunkt verwendet wird.
  • Im Befehlssatz des Prozessors 100 sind mehrere Befehle für die Verwendung durch die Emulation vorgesehen. ESTOP 0 wird für einen Software-Unterbrechungspunkt verwendet. Wenn ein Emulator angeschlossen ist, hält der ESTOP 0-Befehl die Ausführung des Prozessors an, wobei der PC auf den ESTOP 0-Befehl zeigt. Dieser Befehl wird verwendet, um einen Software-Unterbrechungspunkt des Diagnoseprogramms zu implementieren. Falls kein Emulator angeschlossen ist (die Programmlauf-Zustandsmaschine (RSM) befindet sich im EXE_CONT-Zustand), ist dieser Befehl effektiv ein NOP, wobei der PC nach dem ESTOP 0-Befehl inkrementiert wird. Dieser Befehl ist in der DECODIER-Pipelinestufe wirksam. Es gibt zwei Formate für den ESTOP 0-Befehl, ein 32-Bit- und ein 8-Bit-Format. Für einen zu ersetzenden gegebenen Originalbefehl wird als der Ersatz entweder ein 8- oder ein 32-Bit-ESTOP-0-Befehl verwendet. Um den Software-Unterbrechungspunkt auf die Größe des Originalbefehls aufzufüllen, wird ein 8-Bit- oder ein 16-Bit-NOP-Befehl angehängt. Die Ersetzung des Software-Unterbrechungspunkt-Befehls behandelt parallele Befehle als einen einzelnen zu ersetzenden Befehl. Folglich gibt es für die Kombination der SWBP-ESTOP()- und NOP-Befehle ein kombiniertes Befehlslängenformat, um jedem Befehlslängenformat des Befehlssatzes der vorliegenden Ausführungsform zu entsprechen.
  • In der Assemblersprache sind keine ESTOP 0-Befehle definiert, sie werden nur durch die Emulations-Software verwendet. Die Befehlscodierungen sind: 'estop_0()' (0x92) und 'estop_32()' (0xFD000000).
  • Ein ESTOP 1-Befehl ist zu einem ESTOP 0 ähnlich, mit Ausnahme, dass der PC nach dem ESTOP 1-Befehl fortgeschaltet wird. Dieser Befehl wird verwendet, um einen Unterbrechungspunkt in einer Anwendung einzubetten. Der eingebettete Unterbrechungspunkt kann verwendet werden, während mit einem Emulator eine Verbindung besteht oder nicht. Im ersteren Fall wirkt der eingebettete Unterbrechungspunkt wie ein Software-Unterbrechungspunkt. Im letzteren Fall kann der eingebettete Unterbrechungspunkt eine Emulationsfalle für ein Echtzeit-Betriebssystem (RTOS) (oder ein Überwachungsprogramm) erzeugen, um die Emulationsanforderung zu bearbeiten. Wenn kein Emulationsereignis konfiguriert ist, dann ist dieser Befehl effektiv ein NOP-Befehl. Dieser Befehl ist in der DECODIER-Pipelinestufe wirksam. Dieser Befehl kann in irgendeiner Position eines parallelen Paars erscheinen. Die Assembler-Mnemonik und Codierung des ESTOP 1 ist 'estop_1()' (0x2AC1).
  • Die Operation und Verwendung des ESTOP-Befehls werden nun unter Bezugnahme auf die 815 ausführlicher beschrieben.
  • 8 ist eine schematische Darstellung der früher beschriebenen Befehlspipeline während der Ausführung eines Software-Unterbrechungspunkt-Befehls. Ein Aspekt der vorliegenden Erfindung bezieht sich auf die Notwendigkeit, während der Emulation in Reaktion auf einen Software-Unterbrechungspunkt-Befehl die Befehlsausführung an der Grenze eines Befehls der Assemblersprache anzuhalten. Innerhalb der Befehlspipeline der vorliegenden Ausführungsform des Prozessorkerns kann ein Befehl, sobald er in die Adressier-Stufe (P4) eingetreten ist, nicht mehr für Emulationszwecke abgebrochen werden. Der Befehl muss abgeschlossen werden, sodass keine falschen Speicherzugriffe ausgeführt werden.
  • In 8 sind zum Zeitpunkt 800 die Zustände von vier Befehlen A, B, C und ESTOP aus einer Folge von Befehlen in den vier Stufen der Pipeline P3, P2, P1 bzw. P0 gezeigt. Für die Deutlichkeit sind die anderen Befehle aus der Folge von Befehlen in den Stufen P4–P6 nicht gezeigt. ESTOP ist ein Software-Unterbrechungspunkt-Befehl. Zum Zeitpunkt 802 ist jeder Befehl zur jeweiligen nächsten Pipelinestufe fortgeschritten, während der neue Befehl D in die Vorauslese-Stufe eingetreten ist. Zum Zeitpunkt 804 ist jeder Befehl zur jeweiligen nächsten Pipelinestufe fortgeschritten, wobei der neue Befehl E in die Vorauslese-Stufe eingetreten ist. Zum Zeitpunkt 804 wird der ESTOP-Befehl in der Decodier-Stufe P2 decodiert. Zum Zeitpunkt 806 ist jeder Befehl zur jeweiligen nächsten Pipelinestufe fortgeschritten, wobei der neue Befehl F in die Vorauslese-Stufe eingetreten ist.
  • Nach der Decodierung des ESTOP-Befehls wird eine Null in die Adressier-Stufe gedrückt, wie bei 820 gezeigt ist. NULL ist ähnlich zu einem nicht operationalen Befehl NOP, mit Ausnahme, dass NULL den PC nicht inkrementiert (d. h. der Zustand der CPU verbleibt unverändert) und auch das Modell des Programmierers des CPU-Zustands nicht verändert (z. B. sind die Zustandsbits unverändert). Die CPU wird als "angehalten" betrachtet, wenn ein NULL-Befehl in alle Pipelinestufen von der Adressierung P3 bis Ausführung P6 gedrückt worden ist.
  • Die Pipeline der vorliegenden Ausführungsform arbeitet mit den folgenden Eigenschaften:
    • – Es tritt keine Änderung der Register oder des Speichers vor der Adressier-Stufe der Pipeline auf. Die Befehle, die in die Vorauslese-, Hol- oder Decodier-Stufe geholt worden sind, können verworfen und später neu geholt werden, ohne den Zustand des Modells des Programmierers zu verändern.
    • – Die Veränderungen der Register oder des Speichers, die innerhalb der Adressier-Stufe und einer späteren Stufe (Zugreifen, Lesen, Ausführen) auftreten, stützen sich nicht auf Befehle vor der Adressier-Stufe (d. h., die Inhalte der Stufen vor der Adressierung könnten, zurückzuführen auf eine Unterbrechung oder eine Verzweigung, verworfen werden).
    • – Der Akt des Verwerfens der Inhalte der Pipelinestufen vor der Adressierung, während der Abschluss der Adressierung und der späteren Pipelinestufe erlaubt wird, wird als Räumen der Pipeline bezeichnet.
  • Das PC-Register (wie es durch ein Emulationsprogramm dargestellt wird) hält im Allgemeinen die Adresse des Befehls in der Adressier-Stufe der Pipeline. Dies ist der Befehl, der als Nächstes "auszuführen" ist, vorausgesetzt, dass kein Befehlsstau auftritt.
  • Der Software-Unterbrechungspunkt-Befehl verursacht ein Austestereignis am Anfang der Adressier-Stufe des Befehls. Falls der Unterbrechungspunkt-Befehl ein ESTOP 0 war (wie er durch das Diagnoseprogramm festgelegt ist), zeigt der PC auf die Adresse des ESTOP-Befehls, der ausgeführt wird, aber für einen ESTOP 1 (als in den Code eingebettet) zeigt der PC auf die Adresse nach dem ESTOP-Befehl. In beiden Fällen ändern sich die Zustandsbits nicht von ihrem früheren Wert.
  • Wenn kein Emulator-Host mit dem Prozessor 100 verbunden ist oder wenn die Austest-Software die Emulation gesperrt hat, werden die ESTOPs als NOPs behandelt, wobei der Programmzähler nach dem ESTOP-Befehl inkrementiert wird.
  • 9 ist ein Ablaufplan, der den Ablauf der Ausführung des Programms während eines Unterprogramm-Aufrufs veranschaulicht. Innerhalb des Unterprogramms wird unter Verwendung der relativen Adressierung des Stapelzeigers auf die Variable zugegriffen, wie in der folgenden Codesequenz veranschaulicht ist:
    push(DAx) ;var1, Datenadressenregister x
    push(DAy) ;var2, Datenadressenregister y
    ...
    call func_a ;schiebt PC auf den Stapel
    ...
    ...
    func_a ACy = ACx + *SP(offset_var1) ;Akkumulator y, Akkumulator x
    ACy = *SP(offset_var) * ACy
    ...
    return @PC
  • In der obigen Codesequenz gibt der Term "*SP(offset_var1)" an, dass der Datenwert, der sich an einer Speicherstelle befindet, die sich um einen Betrag (offset_var1) auf den Stapelzeiger SP bezieht, geholt wird. Ein Kompilierer berechnet die relative Adresse jeder Variable während des Kompilierungsprozesses. Nach dem Schieben der Variable auf den Stapel wird ein CALL-Befehl ausgeführt, der den Wert des Programmzeigers PC in Reaktion auf die Ausführung des "call func_a"-Befehls schiebt. Die Rücksprungadresse wird anhand der Befehlslänge der Befehle, die dem CALL-Befehl folgen, durch den Prozessor 100 berechnet. Die vorliegende Befehlspipeline enthält nach einem Befehl, der den Programmablauf ändert, wie z. B. CALL, JUMP, Verzweigung usw., Verzögerungsschlitze. Hierin werden diese Typen der Befehle als "Diskontinuitätsbefehle" bezeichnet. Ein Verzögerungsschlitz erlaubt die Ausführung von einem oder mehreren Befehlen, die einem Diskontinuitätsbefehl folgen, während die Befehlspipeline geräumt wird.
  • In 9 ist ein Beispielprogramm veranschaulicht, das eine Folge von Befehlen in einem ersten Abschnitt 900, einen oder mehrere Befehle im Verzögerungsschlitz 901 und eine Folge von Befehlen in einem zweiten Abschnitt 902 enthält. Die Befehle A, B und C repräsentieren die Folge in 900. Das Unterprogramm 905 befindet sich in einem anderen Abschnitt des Befehlsspeichers. Ein Diskontinuitätsbefehl 910 führt zu einer Übertragung des Programmablaufs zum Unterprogramm 905, wie bei 906 gezeigt ist. Die Befehle D und E werden während des Verzögerungsschlitzes 901 ausgeführt. Nach dem Abschluss des Unter programms 907 kehrt der Programmablauf zur Folge 902, beginnend mit dem Befehl F, zurück, wie bei 907 gezeigt ist.
  • 10A10C sind Zeitlinien, die die Berechnung einer Rücksprungadresse während des Unterprogramm-Aufrufs nach 9 im Zusammenhang mit einem Software-Unterbrechungspunkt-Befehl veranschaulichen. Gemäß den Aspekten der vorliegenden Erfindung enthält der Befehlssatz des Prozessors 100 mehrere verschiedene Befehlslängenformate. Weil der Prozessor 100 Befehle mit variabler Länge besitzt, wird die Rücksprungadresse für einen Diskontinuitätsbefehl durch die Decodierung jedes der Befehle im Verzögerungsschlitz berechnet, um ihre kombinierte Länge zu bestimmen. 10A veranschaulicht einen Fall, in dem die Befehle D und E beide Ein-Byte-Befehle sind, die eine Länge L1 bzw. L2 von einem Byte besitzen. In diesem Fall wird die Rücksprungadresse als n + 2 berechnet, wobei "n" der Wert des Programmzählers nach dem Diskontinuitätsbefehl C ist. 10B anschaulicht einen Fall, in dem der Befehl D eine Länge L1 von sechs Bytes besitzt, sodass die Rücksprungadresse als n + 7 berechnet wird. Gleichermaßen veranschaulicht 10C einen Fall, in dem der Befehl E eine Länge L2 von drei Bytes besitzt, sodass die Rücksprungadresse als n + 4 berechnet wird. Es wird angegeben, dass in diesen Figuren ein CALL-Befehl als der Diskontinuitätsbefehl C veranschaulicht ist, diese Erörterung gilt aber für jeden Diskontinuitätsbefehl im Befehlssatz des Prozessors 100.
  • Es ist erwünscht, jeden Befehl in einer Programmfolge durch einen Software-Unterbrechungspunkt-Befehl ersetzen zu können, um das Software- oder Hardware-Austesten auszuführen. Damit die Rücksprungadresse im Prozessor 100 der vorliegenden Ausführungsform richtig berechnet wird, muss es einen Software-Unterbrechungspunkt-Befehl für jede Länge des Befehls im Befehlssatz des Prozessors 100 geben. Wie früher beschrieben worden ist, enthält der Befehlssatz des Prozessors Befehlslängenformate von 8 Bits, 16 Bits, 24 Bits und 32 Bits. Außerdem erlaubt die Befehlspuffereinheit 106, dass zwei Befehle in einem einzelnen Zyklus parallel decodiert und ausgeführt werden, sodass die Befehlsausführungspipeline außerdem die Befehlslängenformate von 40 Bits und 48 Bits handhabt. Mit anderen Worten, es gibt effektiv sechs verschiedene Befehlslängenformate im Befehlssatz des Prozessors 100. Es ist ein Aspekt der vorliegenden Erfindung, sechs verschiedene Arten von Software-Unterbrechungspunkt-Befehlen, eine für jedes Befehlslängenformat, vorzusehen.
  • Es ist ein weiterer Aspekt der vorliegenden Erfindung, eine kleinere Anzahl von Software-Unterbrechungspunkt-Befehlen mit einer Anzahl von nicht operationalen Befehlen zu kombinieren, um die erforderliche Anzahl von Software-Unterbrechungspunkt-Befehlen zu verringern. Dies verringert vorteilhaft die Anzahl der Befehle, die die Befehlsdecodierer 512 und 514 erkennen müssen.
  • 11 ist eine graphische Darstellung, die die Unterbrechungspunkt-Befehle mit verschiedenen Längen veranschaulicht, die durch die Kombination mit nicht operationalen Befehlen gemäß einem Aspekt der vorliegenden Erfindung gebildet werden. Es sind zwei Arten von Software-Unterbrechungspunkt-Befehlen vorgesehen, estop 1100, der eine Länge 1110 von 8 Bits besitzt; und estop_32, der eine Länge 1113 von 32 Bits besitzt, wie früher beschrieben worden ist. Im Befehlssatz des Prozessors 100 sind aus anderen Gründen zwei Arten von nicht operationalen Befehlen mit Parallelfreigabebits enthalten: NOP mit einer Länge von 8 Bits und NOP_16 mit einer Länge von 16 Bits. Wie unter Bezugnahme auf 4 beschrieben worden ist, können die Befehle im Prozessor 100 kombiniert werden, indem ein Parallelfreigabebit in einem Befehl aus einem Paar von Befehlen gesetzt wird. Folglich wird durch das Kombinieren eines ausgewählten Befehls der zwei estop-Befehle mit einem ausgewählten Befehl der NOP-Befehle und durch das Setzen des Parallelfreigabebits im NOP-Befehl ein Software-Unterbrechungspunkt-Befehl mit einer Länge 1110 von 8 Bits, einer Länge 1111 von 16 Bits, einer Länge 1112 von 24 Bits, einer Länge 1113 von 32 Bits, einer Länge 1114 von 40 Bits oder einer Länge 1115 von 48 Bits geschaffen.
  • Die Emulations-Software berechnet das Befehlsformat des zu ersetzenden Befehls, wobei sie die Parallelität und das weiche duale Schema berücksichtigt, bevor sie die Ersetzung des Software-Unterbrechungspunkt-Befehls ausführt, wie früher beschrieben worden ist.
  • 12 ist ein ausführlicherer Blockschaltplan der verschiedenen Register, die in der Befehlspuffereinheit für die Berechnung der Rücksprungadresse verwendet werden. Das Zielregister 1200 hält die Adresse der Zieladresse des Diskontinuitätsbefehls. Der Schreibprogrammzähler 530, der lokale Schreibprogrammzähler 532, der Leseprogrammzähler 534 und der lokale Leseprogrammzähler 536 sind unter Bezugnahme auf 4 beschrieben worden. Der temporäre Leseprogrammzähler 1210 und der temporäre Schreibprogrammzähler 1220 halten die Werte, während sie in den Stapel 1230 geschrieben werden.
  • 13 ist Taktdiagramm, das die Operation der Befehlspipeline während eines Unterprogramm-Aufrufs veranschaulicht; wie früher in Bezug auf die 9 und 10A10C beschrieben worden ist. Zum Zeitpunkt 1300 wird bei 1310 ein Diskontinuitätsbefehl decodiert. Zum Zeitpunkt 1306 werden die Inhalte des LCRPC-Registers 536 zum T1RPC-Register 1210 übertragen, wie bei 1312 gezeigt ist. Dann werden die Inhalte in den Stapel 1230 geschrieben, wie bei 1314 gezeigt ist. Folglich wird die Rücksprungadresse auf dem Stapel gesichert.
  • In 13 bezieht sich eine Adresse, die als "@SR(p – 1)" bezeichnet ist, auf eine vorhergehende Rücksprungadresse, im Gegensatz zur aktuellen Rücksprungadresse "@SR(p)". Bei einem CALL-Befehl wird z. B. SR(p) gesichert, wobei die Rücksprungadresse des CALL SR(p) wird. SR(p – 1) wird im Register T1RPC gespeichert, während SR(p) im Register LCRPC gespeichert wird. Diese Registerwerte werden auf den Stapel geworfen, in dieser Weise werden mehrere verschachtelte CALLS oder Unterbrechungen usw. unterstützt.
  • 14 ist ein Taktdiagramm, das die Operation der Befehlspipeline während der Ausführung eines Software-Unterbrechungspunkt-Befehls SWBP veranschaulicht, der im ersten Verzögerungsschlitz nach einem CALL-Befehl angeordnet ist, der bei 1410 gezeigt ist. Vorteilhaft besitzt der Software-Unterbrechungspunkt-Befehl die gleiche Länge wie der Befehl, den er ersetzt, sodass die gleiche Rücksprungadresse berechnet und im Stapel 1230 gespeichert wird, wie bei 1420 gezeigt ist.
  • 15 ist ein Taktdiagramm, das die Operation der Befehlspipeline während der Ausführung eines Software-Unterbrechungspunkt-Befehls SWBP veranschaulicht, der im zweiten Verzögerungsschlitz nach einem CALL-Befehl angeordnet ist, der bei 1510 gezeigt ist. Wie in 14 besitzt der Software-Unterbrechungspunkt-Befehl die gleiche Länge wie der Befehl, den er ersetzt, sodass die gleiche Rücksprungadresse berechnet und im Stapel 1230 gespeichert wird, wie bei 1520 gezeigt ist.
  • 16 ist eine schematische Darstellung einer integrierten Schaltung, die den Prozessor 100 enthält. Wie gezeigt ist, enthält die integrierte Schaltung mehrere Kontakte für den Oberflächeneinbau. Die integrierte Schaltung könnte jedoch andere Konfigurationen einschließen, z. B. mehrere Anschlussstifte auf einer unteren Oberfläche der Schaltung für den Einbau in einen steckkraftfreien Sockel oder in der Tat irgendeine andere geeignete Konfiguration.
  • 17 veranschaulicht eine beispielhafte Implementierung eines Beispiels einer derartigen integrierten Schaltung in einer Mobiltelekommunikationsvorrichtung, wie z. B. einem Mobiltelephon, mit der integrierten Tastatur 12 und der integrierten Anzeige 14. Wie in 17 gezeigt ist, ist das digitale System 10 mit dem Prozessor 100 mit der Tastatur 12, wo es geeignet ist über einen (nicht gezeigten) Tastaturadapter, mit der Anzeige 14, wo es geeignet ist über einen (nicht gezeigten) Anzeigeadapter, und mit der Hochfrequenz-Schaltungsanordnung (HF-Schaltungsanordnung) 16 verbunden. Die HF-Schaltungsanordnung 16 ist mit einer Antenne 18 verbunden.
  • Die Fertigung der Datenverarbeitungsvorrichtung 100 umfasst mehrere Schritte des Implantierens verschiedener Mengen von Störstellen in ein Halbleitersubstrat und des Diffundierens der Störstellen in ausgewählte Tiefen innerhalb des Substrats, um Transistorvorrichtungen auszubilden. Es werden Masken ausgebildet, um die Anordnung der Störstellen zu steuern. Es werden mehrere Schichten leitenden Materials und isolierenden Materials abgeschieden und geätzt, um die verschiedenen Vorrichtungen zu verbinden. Diese Schritte werden in einer Reinraumumgebung ausgeführt.
  • Ein signifikanter Teil der Kosten, um die Datenverarbeitungsvorrichtung zu erzeugen, umfasst das Prüfen. Die einzelnen Vorrichtungen werden in einen Betriebszustand vorgespannt und mit einer Sonde auf die elementare betriebsfähige Funktionalität untersucht, während sie in einer Wafer-Form vorliegen. Der Wafer wird dann in einzelne Chips getrennt, die als bloße Chips oder eingekapselt verkauft werden können. Nach der Einkapselung werden die fertiggestellten Teile in einen Betriebszustand vorgespannt und auf betriebsfähige Funktionalität geprüft.
  • Eine alternative Ausführungsform der neuartigen Aspekte der vorliegenden Erfindung kann andere Schaltungsanordnungen enthalten, die mit den hierin offenbaren Schaltungsanordnungen kombiniert sind, um die Gesamtsumme der Gatter der kombinierten Funktionen zu verringern. Weil die Fachleute auf dem Gebiet die Techniken für die Minimierung der Gatter kennen, sind die Einzelheiten einer derartigen Ausführungsform hierin nicht beschrieben.
  • Eine alternative Ausführungsform eines Software-Unterbrechungspunkt-Befehls kann mehr als zwei Befehlslängenformate besitzen. Gleichermaßen können verschiedene Befehlscodierungen verwendet werden.
  • Eine alternative Ausführungsform des Prozessors 100 kann mehr oder weniger Stufen der Befehlspipeline besitzen, wobei der Software-Unterbrechungspunkt-Befehl in einer anderen Pipelinestufe wirksam werden kann. Außerdem kann in einer alternativen Ausführungsform die Anzahl der Befehlslängenformate größer oder kleiner als die sechs Formatlängen des Prozessors 100 sein.
  • Folglich ist ein Prozessor beschrieben worden, der ein programmierbarer digitaler Signalprozessor (DSP) ist, der sowohl eine hohe Codedichte als auch eine leichte Programmierung bietet. Die Architektur und der Befehlssatz sind für eine niedrige Leistungsaufnahme und eine Ausführung mit hohem Wirkungsgrad sowohl der DSP-Algorithmen, wie z. B. für drahtlose Telephone, als auch reiner Steueraufgaben, optimiert. Der Prozessor enthält eine Befehlspuffereinheit und eine Datenrecheneinheit, um die durch die Befehlspuffereinheit decodierten Befehle auszuführen. Für Austestzwecke ist ein Software-Unterbrechungspunkt-Be fehl vorgesehen. Um die Operation der Befehlspipeline richtig zu emulieren, wenn ein Software-Unterbrechungspunkt-Befehl während eines Verzögerungsschlitzes ausgeführt wird, muss die Breite des Software-Unterbrechungspunkts die gleiche wie die des ersetzten Befehls sein. Eine begrenzte Anzahl von Längenformaten des Unterbrechungspunkt-Befehls wird mit nicht operationalen Befehlen kombiniert, um eine große Anzahl von Kombinationsbefehlen zu bilden, die jedem Befehlslängenformat entsprechen. Vorteilhaft muss nur eine kleine Anzahl von Software-Unterbrechungspunkt-Befehlen definiert und decodiert werden, während trotzdem eine große Anzahl von Befehlslängenformaten bereitgestellt wird. In der vorliegenden Ausführungsform sind z. B. nur zwei Arten von Software-Unterbrechungspunkt-Befehlen erforderlich, um Befehle zu ersetzen, die sechs verschiedene Befehlslängenformate besitzen.
  • Vorteilhaft ermöglichen die Aspekte der vorliegenden Erfindung, dass ein Software-Unterbrechungspunkt in einen Verzögerungsschlitz eines CALL-Befehls eingefügt wird.
  • Vorteilhaft ist durch das Unterstützen eines SWBP in irgendeinem Befehl, wie z. B. in einem Verzögerungsschlitz, ein Prozessor gemäß der vorliegenden Erfindung in jedem Befehl unterbrechbar.
  • Die Begriffe "angelegt", "verbunden" und "Verbindung" bedeuten, wie sie hierin verwendet werden, elektrisch verbunden, einschließlich des Falls, in dem sich zusätzliche Elemente im elektrischen Verbindungsweg befinden können.
  • Während die Erfindung unter Bezugnahme auf veranschaulichende Ausführungsformen beschrieben worden ist, ist nicht beabsichtigt, dass diese Beschreibung in einem einschränkenden Sinn ausgelegt wird. Für die Fachleute auf dem Gebiet werden unter Bezugnahme auf diese Beschreibung verschiedene andere Ausführungsformen der Erfindung offensichtlich sein. Es ist deshalb beabsichtigt, dass die beigefügten Ansprüche alle derartigen Modifikationen der Ausführungsformen einschließen, die in den wahren Umfang der Erfindung fallen.

Claims (10)

  1. Digitales System, das einen Mikroprozessor (100) umfasst, wobei der Mikroprozessor umfasst: eine Befehlspuffereinheit (106), die so betreibbar ist, dass sie einen von einem Befehlsspeicher (150) geholten Befehl decodiert, wobei der Befehl eine erste Länge besitzt, die aus einer ersten Mehrzahl von Befehlsformatlängen ausgewählt ist; eine Datenrecheneinheit (112), die die Befehle ausführt, die durch die Befehlspuffereinheit decodiert werden; einen Programmzähler, der so betreibbar ist, dass er eine Befehlsadresse bereitstellt, die für den Befehlspuffer bereitgestellt wird; dadurch gekennzeichnet, dass die Befehlspuffereinheit so betreibbar ist, dass sie einen ersten Software-Unterbrechungspunkt-Befehl decodiert, der so gewählt ist, dass er eine Länge besitzt, die gleich einem Format der ersten Mehrzahl von Befehlslängenformaten ist.
  2. Digitales System nach Anspruch 1, bei dem der Befehlspuffer so betreibbar ist, dass er einen zweiten Software-Unterbrechungspunkt-Befehl, der mit einem ersten nicht operationalen Befehl kombiniert ist, in einem einzigen Zyklus decodiert, so dass der kombinierte zweite Software-Unterbrechungspunkt-Befehl und der erste nicht operationale Befehl durch die Datenrecheneinheit als ein einziger erster Software-Unterbrechungspunkt-Befehl behandelt werden.
  3. Digitales System nach Anspruch 2, bei dem der zweite Software-Unterbrechungspunkt-Befehl ein zweites Befehlslängenformat besitzt, das aus einer zweiten Mehrzahl von Befehlslängenformaten ausgewählt ist, derart, dass die zweite Mehrzahl von Befehlslängenformaten kleiner als die erste Mehrzahl von Befehlslängenformaten ist.
  4. Digitales System nach Anspruch 1, Anspruch 2 oder Anspruch 3, bei dem die Befehlspuffereinheit so betreibbar ist, dass sie jeden von mehreren Software-Unterbrechungspunkt-Befehlen decodiert, wovon jeder eine andere Länge besitzt, derart, dass für jede Befehlsformatlänge ein Software-Unterbrechungspunkt-Befehl mit gleicher Länge vorhanden ist.
  5. Digitales System nach einem vorhergehenden Anspruch, das ein Zellentelephon ist und ferner umfasst: eine integrierte Tastatur (12), die über einen Tastaturadapter mit dem Prozessor verbunden ist; eine Anzeige (14), die über einen Anzeigeadapter mit dem Prozessor verbunden ist; eine Hochfrequenz-Schaltungsanordnung (HF-Schaltungsanordnung) (16), die mit dem Prozessor verbunden ist; und eine Antenne (18), die mit der HF-Schaltungsanordnung verbunden ist.
  6. Verfahren zum Betreiben eines digitalen Systems, das die folgenden Schritte umfasst: Ausführen einer Folge von Befehlen in einem Prozessor (100), wobei die Befehle in Reaktion auf einen Programmzähler von einem dem Prozessor zugeordneten Befehlsspeicher (150) geholt werden, wobei die Folge von Befehlen aus einer Befehlsmenge ausgewählt wird, die mehrere Befehlslängenformate besitzt; Ersetzen eines ersten Befehls mit einem ersten Befehlslängenformat in der Folge von Befehlen durch einen ersten Software-Unterbrechungspunkt-Befehl, der das erste Befehlslängenformat hat; wobei der erste Software-Unterbrechungspunkt-Befehl aus mehreren Software-Unterbrechungspunkt-Befehlen ausgewählt wird, wovon jeder ein anderes Längenformat besitzt, derart, dass für jede Befehlsformatlänge ein Software-Unterbrechungspunkt-Befehl mit äquivalenter Länge vorhanden ist; Unterbrechen der Ausführungsfolge durch Ausführen des ersten Software-Unterbrechungspunkt-Befehls nach der Ausführung eines ersten Teils der Folge von Befehlen; und dann Wiederaufnehmen der Ausführung der Folge von Befehlen durch Ersetzen des ersten Software-Unterbrechungspunkt-Befehls durch den ersten Befehl in der Folge von Befehlen.
  7. Verfahren nach Anspruch 6, bei dem der erste Software-Unterbrechungspunkt-Befehl durch die folgenden Schritte gebildet wird: Auswählen eines zweiten Software-Unterbrechungspunkt-Befehls, der ein zweites Befehlslängenformat besitzt; Auswählen eines ersten nicht operationalen Befehls, der eine dritte Länge besitzt, aus einer Menge aus zwei oder mehr nicht operationalen Befehlen, wovon jeder eine andere Länge besitzt; und Kombinieren des zweiten Software-Unterbrechungspunkt-Befehls mit dem ersten nicht operationalen Befehl, derart, dass die kombinierte Länge aus der zweiten Befehlslänge und aus der dritten Befehlslänge gleich der ersten Befehlslänge ist.
  8. Verfahren nach Anspruch 7, bei dem der Schritt des Kombinierens die Angabe, dass der zweite Software-Unterbrechungspunkt-Befehl und der erste nicht operationale Befehl in einer Befehls-Pipeline parallel auszuführen sind, umfasst.
  9. Verfahren nach einem der Ansprüche 6–8, bei dem der erste Software-Unterbrechungspunkt-Befehl in einem Verzögerungsschlitz ausgeführt wird, der sich aus der Ausführung eines zweiten Befehls in einem ersten Abschnitt der Folge von Befehlen ergibt, wobei der zweite Befehl ein Befehl des diskontinuierlichen Typs ist, der für eine zweite Folge von Befehlen eine Verzweigung bewirkt; und wobei die Ausführung des zweiten Befehls den Schritt des Speicherns einer Rücksprungadresse umfasst, die einen Wert hat, der gleich jenem ist, den sie hätte, wenn der erste Befehl in der ersten Folge von Befehlen vorhanden wäre.
  10. Verfahren nach einem der Ansprüche 5–9, bei dem der erste Befehl eine Kombination aus wenigstens zwei Befehlen ist, die aus der Befehlsmenge ausgewählt sind und in einer Befehls-Pipeline parallel auszuführen sind.
DE69926458T 1998-10-06 1999-03-08 Vorrichtung und Verfahren für einen Software-Haltepunkt während eines Verzögerungsschlitzes Expired - Lifetime DE69926458T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP98402455A EP0992916A1 (de) 1998-10-06 1998-10-06 Digitaler Signalprozessor
EP98402455 1998-10-06

Publications (2)

Publication Number Publication Date
DE69926458D1 DE69926458D1 (de) 2005-09-08
DE69926458T2 true DE69926458T2 (de) 2006-06-01

Family

ID=8235512

Family Applications (5)

Application Number Title Priority Date Filing Date
DE69932481T Expired - Lifetime DE69932481T2 (de) 1998-10-06 1999-03-08 Kellerzeigerverwaltung
DE69942482T Expired - Lifetime DE69942482D1 (de) 1998-10-06 1999-03-08 Cachespeicherkohärenz während der Emulation
DE69927456T Active DE69927456T8 (de) 1998-10-06 1999-03-08 Verwaltung eines FIFO zur Ablaufverfolgung
DE69926458T Expired - Lifetime DE69926458T2 (de) 1998-10-06 1999-03-08 Vorrichtung und Verfahren für einen Software-Haltepunkt während eines Verzögerungsschlitzes
DE69942080T Expired - Lifetime DE69942080D1 (de) 1998-10-06 1999-03-08 Speicherzugriff mit Bytequalifizierer

Family Applications Before (3)

Application Number Title Priority Date Filing Date
DE69932481T Expired - Lifetime DE69932481T2 (de) 1998-10-06 1999-03-08 Kellerzeigerverwaltung
DE69942482T Expired - Lifetime DE69942482D1 (de) 1998-10-06 1999-03-08 Cachespeicherkohärenz während der Emulation
DE69927456T Active DE69927456T8 (de) 1998-10-06 1999-03-08 Verwaltung eines FIFO zur Ablaufverfolgung

Family Applications After (1)

Application Number Title Priority Date Filing Date
DE69942080T Expired - Lifetime DE69942080D1 (de) 1998-10-06 1999-03-08 Speicherzugriff mit Bytequalifizierer

Country Status (3)

Country Link
US (1) US6658578B1 (de)
EP (1) EP0992916A1 (de)
DE (5) DE69932481T2 (de)

Families Citing this family (130)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6343352B1 (en) 1997-10-10 2002-01-29 Rambus Inc. Method and apparatus for two step memory write operations
US6401167B1 (en) * 1997-10-10 2002-06-04 Rambus Incorporated High performance cost optimized memory
DE10081643D2 (de) 1999-06-10 2002-05-29 Pact Inf Tech Gmbh Sequenz-Partitionierung auf Zellstrukturen
AUPQ542900A0 (en) * 2000-02-04 2000-02-24 Bisinella, Richard Microprocessor
US7036106B1 (en) * 2000-02-17 2006-04-25 Tensilica, Inc. Automated processor generation system for designing a configurable processor and method for the same
WO2001089098A2 (en) * 2000-05-05 2001-11-22 Lee Ruby B A method and system for performing permutations with bit permutation instructions
US6665795B1 (en) 2000-10-06 2003-12-16 Intel Corporation Resetting a programmable processor
CN1255721C (zh) * 2000-12-07 2006-05-10 皇家菲利浦电子有限公司 数字信号处理设备
EP1271324B1 (de) * 2001-06-29 2009-05-27 Texas Instruments Incorporated Verfahren zur Verbesserung der Sichtbarkeit von Berechnung der effektiven Adressen in Pipelinearchitektur
US7178138B2 (en) * 2001-01-24 2007-02-13 Texas Instruments Incorporated Method and tool for verification of algorithms ported from one instruction set architecture to another
US6990657B2 (en) * 2001-01-24 2006-01-24 Texas Instruments Incorporated Shared software breakpoints in a shared memory system
US6925634B2 (en) * 2001-01-24 2005-08-02 Texas Instruments Incorporated Method for maintaining cache coherency in software in a shared memory system
US7757094B2 (en) * 2001-02-27 2010-07-13 Qualcomm Incorporated Power management for subscriber identity module
US9436631B2 (en) 2001-03-05 2016-09-06 Pact Xpp Technologies Ag Chip including memory element storing higher level memory data on a page by page basis
US9552047B2 (en) 2001-03-05 2017-01-24 Pact Xpp Technologies Ag Multiprocessor having runtime adjustable clock and clock dependent power supply
US9411532B2 (en) * 2001-09-07 2016-08-09 Pact Xpp Technologies Ag Methods and systems for transferring data between a processing device and external devices
US20020184566A1 (en) 2001-06-01 2002-12-05 Michael Catherwood Register pointer trap
US7383421B2 (en) * 2002-12-05 2008-06-03 Brightscale, Inc. Cellular engine for a data processing system
US20030069987A1 (en) * 2001-10-05 2003-04-10 Finnur Sigurdsson Communication method
US7133942B2 (en) * 2001-12-07 2006-11-07 International Business Machines Corporation Sequence-preserving multiprocessing system with multimode TDM buffer
US7301961B1 (en) 2001-12-27 2007-11-27 Cypress Semiconductor Corportion Method and apparatus for configuring signal lines according to idle codes
US6879523B1 (en) * 2001-12-27 2005-04-12 Cypress Semiconductor Corporation Random access memory (RAM) method of operation and device for search engine systems
US7260217B1 (en) * 2002-03-01 2007-08-21 Cavium Networks, Inc. Speculative execution for data ciphering operations
US7577944B2 (en) * 2002-03-18 2009-08-18 Hewlett-Packard Development Company, L.P. Unbundling, translation and rebundling of instruction bundles in an instruction stream
US9170812B2 (en) 2002-03-21 2015-10-27 Pact Xpp Technologies Ag Data processing system having integrated pipelined array data processor
US20030188143A1 (en) * 2002-03-28 2003-10-02 Intel Corporation 2N- way MAX/MIN instructions using N-stage 2- way MAX/MIN blocks
US6976049B2 (en) * 2002-03-28 2005-12-13 Intel Corporation Method and apparatus for implementing single/dual packed multi-way addition instructions having accumulation options
US7278136B2 (en) * 2002-07-09 2007-10-02 University Of Massachusetts Reducing processor energy consumption using compile-time information
US7493607B2 (en) * 2002-07-09 2009-02-17 Bluerisc Inc. Statically speculative compilation and execution
US7243243B2 (en) * 2002-08-29 2007-07-10 Intel Corporatio Apparatus and method for measuring and controlling power consumption of a computer system
US7047397B2 (en) * 2002-09-13 2006-05-16 Intel Corporation Method and apparatus to execute an instruction with a semi-fast operation in a staggered ALU
US7110940B2 (en) * 2002-10-30 2006-09-19 Microsoft Corporation Recursive multistage audio processing
US7801120B2 (en) * 2003-01-13 2010-09-21 Emulex Design & Manufacturing Corporation Method and system for efficient queue management
US20040154010A1 (en) * 2003-01-31 2004-08-05 Pedro Marcuello Control-quasi-independent-points guided speculative multithreading
JP4042604B2 (ja) * 2003-03-31 2008-02-06 日本電気株式会社 プログラム並列化装置,プログラム並列化方法およびプログラム並列化プログラム
US20050010726A1 (en) * 2003-07-10 2005-01-13 Rai Barinder Singh Low overhead read buffer
US7360023B2 (en) 2003-09-30 2008-04-15 Starcore, Llc Method and system for reducing power consumption in a cache memory
US7308681B2 (en) * 2003-10-28 2007-12-11 International Business Machines Corporation Control flow based compression of execution traces
US20050114850A1 (en) 2003-10-29 2005-05-26 Saurabh Chheda Energy-focused re-compilation of executables and hardware mechanisms based on compiler-architecture interaction and compiler-inserted control
US7996671B2 (en) 2003-11-17 2011-08-09 Bluerisc Inc. Security of program executables and microprocessors based on compiler-architecture interaction
WO2005060127A1 (en) * 2003-12-19 2005-06-30 Nokia Corporation Selection of radio resources in a wireless communication device
EP1712098B1 (de) * 2004-02-02 2009-04-15 Nokia Corporation Verfahren und einrichtung zur sicherstellung des betriebszustands eines mobilen elektronischen endgeräts
US8607209B2 (en) 2004-02-04 2013-12-10 Bluerisc Inc. Energy-focused compiler-assisted branch prediction
US7617012B2 (en) * 2004-03-04 2009-11-10 Yamaha Corporation Audio signal processing system
US7409670B1 (en) 2004-04-01 2008-08-05 Altera Corporation Scheduling logic on a programmable device implemented using a high-level language
US7370311B1 (en) * 2004-04-01 2008-05-06 Altera Corporation Generating components on a programmable device using a high-level language
ITMI20041038A1 (it) * 2004-05-25 2004-08-25 St Microelectronics Srl Dispositivo di memoria soncrono a ridotto consumo di potenza
US20050283669A1 (en) * 2004-06-03 2005-12-22 Adkisson Richard W Edge detect circuit for performance counter
US7676530B2 (en) * 2004-06-03 2010-03-09 Hewlett-Packard Development Company, L.P. Duration minimum and maximum circuit for performance counter
US7624319B2 (en) * 2004-06-03 2009-11-24 Hewlett-Packard Development Company, L.P. Performance monitoring system
EP1612977A3 (de) * 2004-07-01 2013-08-21 Yamaha Corporation Steuereinrichtung zur Steuerung eines Audiosignalverarbeitungsgerät
US7743376B2 (en) * 2004-09-13 2010-06-22 Broadcom Corporation Method and apparatus for managing tasks in a multiprocessor system
US7543186B2 (en) * 2004-09-13 2009-06-02 Sigmatel, Inc. System and method for implementing software breakpoints
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
US9280473B2 (en) * 2004-12-02 2016-03-08 Intel Corporation Method and apparatus for accessing physical memory from a CPU or processing element in a high performance manner
KR20070118589A (ko) * 2005-02-11 2007-12-17 유니버셜 데이터 프로텍션 코퍼레이션 마이크로프로세서 데이터 보안을 위한 방법 및 시스템
WO2006106272A2 (fr) * 2005-04-07 2006-10-12 France Telecom Procede de synchronisation entre une operation de traitement de reconnaissance vocale et une action de declenchement du dit traitement
EP1720100B1 (de) * 2005-05-02 2007-07-18 Accemic GmbH & Co. KG Verfahren und Vorrichtung zur Emulation einer programmierbaren Einheit
US7523434B1 (en) * 2005-09-23 2009-04-21 Xilinx, Inc. Interfacing with a dynamically configurable arithmetic unit
US7346863B1 (en) 2005-09-28 2008-03-18 Altera Corporation Hardware acceleration of high-level language code sequences on programmable devices
US7451293B2 (en) * 2005-10-21 2008-11-11 Brightscale Inc. Array of Boolean logic controlled processing elements with concurrent I/O processing and instruction sequencing
US7600090B2 (en) * 2005-11-28 2009-10-06 Atmel Corporation Microcontroller based flash memory digital controller system
US8176567B2 (en) * 2005-12-22 2012-05-08 Pitney Bowes Inc. Apparatus and method to limit access to selected sub-program in a software system
JP4895264B2 (ja) * 2005-12-27 2012-03-14 株式会社メガチップス 記憶装置および情報処理装置
WO2007082043A2 (en) * 2006-01-10 2007-07-19 Brightscale, Inc. Method and apparatus for scheduling the processing of multimedia data in parallel processing systems
US8082287B2 (en) * 2006-01-20 2011-12-20 Qualcomm Incorporated Pre-saturating fixed-point multiplier
US7836435B2 (en) * 2006-03-31 2010-11-16 Intel Corporation Checking for memory access collisions in a multi-processor architecture
US20070261031A1 (en) * 2006-05-08 2007-11-08 Nandyal Ganesh M Apparatus and method for encoding the execution of hardware loops in digital signal processors to optimize offchip export of diagnostic data
WO2008027567A2 (en) * 2006-09-01 2008-03-06 Brightscale, Inc. Integral parallel machine
US20080059467A1 (en) * 2006-09-05 2008-03-06 Lazar Bivolarski Near full motion search algorithm
US7949925B2 (en) * 2006-09-29 2011-05-24 Mediatek Inc. Fixed-point implementation of a joint detector
US7953958B2 (en) * 2006-09-29 2011-05-31 Mediatek Inc. Architecture for joint detection hardware accelerator
CN101553995B (zh) * 2006-09-29 2012-07-25 联发科技股份有限公司 联合检测器的定点实现
JP2008090390A (ja) * 2006-09-29 2008-04-17 Matsushita Electric Ind Co Ltd マイコンデバッグシステムおよびマイクロコンピュータ
US20080141013A1 (en) * 2006-10-25 2008-06-12 On Demand Microelectronics Digital processor with control means for the execution of nested loops
US20080126766A1 (en) 2006-11-03 2008-05-29 Saurabh Chheda Securing microprocessors against information leakage and physical tampering
US8010814B2 (en) * 2006-12-04 2011-08-30 Electronics And Telecommunications Research Institute Apparatus for controlling power management of digital signal processor and power management system and method using the same
US7752028B2 (en) * 2007-07-26 2010-07-06 Microsoft Corporation Signed/unsigned integer guest compare instructions using unsigned host compare instructions for precise architecture emulation
US9035957B1 (en) * 2007-08-15 2015-05-19 Nvidia Corporation Pipeline debug statistics system and method
US8108013B2 (en) 2007-12-13 2012-01-31 Motorola Mobility, Inc. Systems and methods for managing power consumption in a flow-based user experience
US7949917B2 (en) * 2007-12-13 2011-05-24 Texas Instruments Incorporated Maintaining data coherency in multi-clock systems
JP5209390B2 (ja) * 2008-07-02 2013-06-12 ルネサスエレクトロニクス株式会社 情報処理装置及び命令フェッチ制御方法
US8468326B1 (en) * 2008-08-01 2013-06-18 Marvell International Ltd. Method and apparatus for accelerating execution of logical “and” instructions in data processing applications
JP5332583B2 (ja) * 2008-12-16 2013-11-06 日本電気株式会社 監視制御システム、監視制御方法および監視制御用プログラム
US9489326B1 (en) * 2009-03-09 2016-11-08 Cypress Semiconductor Corporation Multi-port integrated circuit devices and methods
US9928105B2 (en) 2010-06-28 2018-03-27 Microsoft Technology Licensing, Llc Stack overflow prevention in parallel execution runtime
US9329996B2 (en) * 2011-04-27 2016-05-03 Veris Industries, Llc Branch circuit monitor with paging register
US9721319B2 (en) * 2011-10-14 2017-08-01 Mastercard International Incorporated Tap and wireless payment methods and devices
US9323530B2 (en) 2012-03-28 2016-04-26 International Business Machines Corporation Caching optimized internal instructions in loop buffer
US9436477B2 (en) 2012-06-15 2016-09-06 International Business Machines Corporation Transaction abort instruction
US10437602B2 (en) 2012-06-15 2019-10-08 International Business Machines Corporation Program interruption filtering in transactional execution
US9348642B2 (en) 2012-06-15 2016-05-24 International Business Machines Corporation Transaction begin/end instructions
US9384004B2 (en) 2012-06-15 2016-07-05 International Business Machines Corporation Randomized testing within transactional execution
US8880959B2 (en) 2012-06-15 2014-11-04 International Business Machines Corporation Transaction diagnostic block
US9772854B2 (en) 2012-06-15 2017-09-26 International Business Machines Corporation Selectively controlling instruction execution in transactional processing
US9367323B2 (en) 2012-06-15 2016-06-14 International Business Machines Corporation Processor assist facility
US9317460B2 (en) 2012-06-15 2016-04-19 International Business Machines Corporation Program event recording within a transactional environment
US9336046B2 (en) 2012-06-15 2016-05-10 International Business Machines Corporation Transaction abort processing
US9448796B2 (en) 2012-06-15 2016-09-20 International Business Machines Corporation Restricted instructions in transactional execution
US20130339680A1 (en) 2012-06-15 2013-12-19 International Business Machines Corporation Nontransactional store instruction
US9740549B2 (en) 2012-06-15 2017-08-22 International Business Machines Corporation Facilitating transaction completion subsequent to repeated aborts of the transaction
US9361115B2 (en) 2012-06-15 2016-06-07 International Business Machines Corporation Saving/restoring selected registers in transactional processing
US8966324B2 (en) 2012-06-15 2015-02-24 International Business Machines Corporation Transactional execution branch indications
US9442737B2 (en) 2012-06-15 2016-09-13 International Business Machines Corporation Restricting processing within a processor to facilitate transaction completion
US8688661B2 (en) 2012-06-15 2014-04-01 International Business Machines Corporation Transactional processing
US8682877B2 (en) 2012-06-15 2014-03-25 International Business Machines Corporation Constrained transaction execution
US9323529B2 (en) 2012-07-18 2016-04-26 International Business Machines Corporation Reducing register read ports for register pairs
US9298459B2 (en) * 2012-07-18 2016-03-29 International Business Machines Corporation Managing register pairing
US9323532B2 (en) 2012-07-18 2016-04-26 International Business Machines Corporation Predicting register pairs
US9256480B2 (en) * 2012-07-25 2016-02-09 Mobileye Vision Technologies Ltd. Computer architecture with a hardware accumulator reset
JP2014035431A (ja) * 2012-08-08 2014-02-24 Renesas Mobile Corp ボコーダ処理方法、半導体装置、及び電子装置
JP6171461B2 (ja) * 2013-03-26 2017-08-02 富士通株式会社 データ処理装置及びデータ処理方法
CN103294446B (zh) * 2013-05-14 2017-02-15 中国科学院自动化研究所 一种定点乘累加器
RU2530285C1 (ru) * 2013-08-09 2014-10-10 Федеральное Государственное Бюджетное Образовательное Учреждение Высшего Профессионального Образования "Саратовский Государственный Университет Имени Н.Г. Чернышевского" Активный аппаратный стек процессора
US10243727B2 (en) * 2013-10-31 2019-03-26 Ati Technologies Ulc Method and system for constant time cryptography using a co-processor
EP2899652B1 (de) * 2014-01-22 2024-03-13 dSPACE GmbH Verfahren zur Einsatzoptimierung programmierbarer Logikbausteine in Steuerungsgeräten für Fahrzeuge
US9250900B1 (en) 2014-10-01 2016-02-02 Cadence Design Systems, Inc. Method, system, and computer program product for implementing a microprocessor with a customizable register file bypass network
US9632726B1 (en) * 2015-10-09 2017-04-25 Arch Systems Inc. Modular device and method of operation
US9824419B2 (en) * 2015-11-20 2017-11-21 International Business Machines Corporation Automatically enabling a read-only cache in a language in which two arrays in two different variables may alias each other
US10108530B2 (en) * 2016-02-24 2018-10-23 Stmicroelectronics (Rousset) Sas Method and tool for generating a program code configured to perform control flow checking on another program code containing instructions for indirect branching
DE102016211386A1 (de) * 2016-06-14 2017-12-14 Robert Bosch Gmbh Verfahren zum Betreiben einer Recheneinheit
US10846196B1 (en) 2017-06-09 2020-11-24 Azul Systems, Inc. Code optimization for connected managed runtime environments
US10523428B2 (en) 2017-11-22 2019-12-31 Advanced Micro Devices, Inc. Method and apparatus for providing asymmetric cryptographic keys
US10713021B2 (en) * 2018-03-05 2020-07-14 Apple Inc. Geometric 64-bit capability pointer
JP7163697B2 (ja) * 2018-09-28 2022-11-01 富士通株式会社 生成プログラム,情報処理装置及び生成方法
US11042468B2 (en) 2018-11-06 2021-06-22 Texas Instruments Incorporated Tracking debug events from an autonomous module through a data pipeline
CN111722916B (zh) * 2020-06-29 2023-11-14 长沙新弘软件有限公司 一种通过映射表处理msi-x中断的方法
US11740993B2 (en) * 2021-08-31 2023-08-29 Apple Inc. Debug trace of cache memory requests
US11775305B2 (en) * 2021-12-23 2023-10-03 Arm Limited Speculative usage of parallel decode units
CN117539705B (zh) * 2024-01-10 2024-06-11 深圳鲲云信息科技有限公司 片上系统的验证方法、装置、系统及电子设备

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
ATE146611T1 (de) * 1990-05-04 1997-01-15 Ibm Maschinenarchitektur für skalaren verbundbefehlssatz
US5452401A (en) * 1992-03-31 1995-09-19 Seiko Epson Corporation Selective power-down for high performance CPU/system
US5392437A (en) * 1992-11-06 1995-02-21 Intel Corporation Method and apparatus for independently stopping and restarting functional units
US5515530A (en) * 1993-12-22 1996-05-07 Intel Corporation Method and apparatus for asynchronous, bi-directional communication between first and second logic elements having a fixed priority arbitrator
JPH08202469A (ja) * 1995-01-30 1996-08-09 Fujitsu Ltd ユニバーサル非同期送受信回路を備えたマイクロ・コントローラユニット
US5842028A (en) 1995-10-16 1998-11-24 Texas Instruments Incorporated Method for waking up an integrated circuit from low power mode
US5784628A (en) * 1996-03-12 1998-07-21 Microsoft Corporation Method and system for controlling power consumption in a computer system
US5951679A (en) * 1996-10-31 1999-09-14 Texas Instruments Incorporated Microprocessor circuits, systems, and methods for issuing successive iterations of a short backward branch loop in a single cycle
US5996078A (en) * 1997-01-17 1999-11-30 Dell Usa, L.P. Method and apparatus for preventing inadvertent power management time-outs
US6055619A (en) * 1997-02-07 2000-04-25 Cirrus Logic, Inc. Circuits, system, and methods for processing multiple data streams

Also Published As

Publication number Publication date
DE69927456D1 (de) 2005-11-03
DE69926458D1 (de) 2005-09-08
EP0992916A1 (de) 2000-04-12
DE69942080D1 (de) 2010-04-15
DE69932481T2 (de) 2007-02-15
DE69932481D1 (de) 2006-09-07
US6658578B1 (en) 2003-12-02
DE69927456T2 (de) 2006-06-22
DE69927456T8 (de) 2006-12-14
DE69942482D1 (de) 2010-07-22

Similar Documents

Publication Publication Date Title
DE69926458T2 (de) Vorrichtung und Verfahren für einen Software-Haltepunkt während eines Verzögerungsschlitzes
DE3587591T2 (de) Mikroprozessor für Forth-ähnliche Sprache.
DE3485929T2 (de) Bedingungsregisterarchitektur fuer eine maschine mit primitivem befehlssatz.
DE69907955T2 (de) Globale und locale registersegmentierung in einem vliw prozessor
DE69627807T2 (de) Datenprozessor zum gleichzeitigen Dataladen und Durchführung einer multiplizier-addier Operation
DE3685913T2 (de) Vektorenverarbeitung.
DE102018005216A1 (de) Prozessoren, Verfahren und Systeme für einen konfigurierbaren, räumlichen Beschleuniger mit Transaktions- und Wiederholungsmerkmalen
DE102018005181A1 (de) Prozessoren, Verfahren und Systeme für einen konfigurierbaren, räumlichen Beschleuniger mit Leistungs-, Richtigkeits- und Energiereduktionsmerkmalen
DE69929936T2 (de) Verfahren und Vorrichtung zum Abrufen von nicht-angrenzenden Befehlen in einem Datenverarbeitungssystem
DE102010051476B4 (de) Addierbefehle, um drei Quelloperanden zu addieren
DE60217157T2 (de) Verfahren und vorrichtung zum binden von shadow-registern an vektorisierte interrupts
DE102018006889A1 (de) Prozessoren und Verfahren für bevorzugte Auslegung in einem räumlichen Array
DE19735348A1 (de) Einzelbefehl-Mehrdaten-Verarbeitung unter Verwendung von mehreren Bänken von Vektorregistern
DE3586603T2 (de) Datenprozessor fuer interpretierende und kompilierte sprache.
DE19735350A1 (de) Einzelbefehl-Mehrdaten-Verarbeitung bei einem Multimedia-Signalprozessor
DE69032174T2 (de) Datenprozessor mit der Fähigkeit, zwei Befehle gleichzeitig auszuführen
DE19506435C2 (de) Verfahren und Einrichtung zum Vermeiden von Rückschreibkonflikten zwischen einen gemeinsamen Rückschreibpfad verwendenden Ausführungseinheiten
DE19735871A1 (de) Verfahren zum effizienten Sicherstellen und Wiederherstellen von Kontext in einer Multitasking-Rechensystemumgebung
DE2935906C2 (de) Mikroprozessor
DE4447238A1 (de) Einrichung und Verfahren zum Vorhersagen von Verzweigungsinstruktionen
DE69826404T2 (de) Datenverarbeitungssystem mit mehreren Prozessoren, die eine Registerbank gemeinsam benutzen
DE19735870A1 (de) System und Verfahren zum Verarbeiten von Unterbrechungs- und Ausnahmeereignissen in einer asymmetrischen Mehrprozessorarchitektur
DE3741850A1 (de) Ausfuehrungseinheit fuer einen i/o-prozessor
DE19506990A1 (de) Einrichtung zur Datenumleitung in einem Prozessor mit mehreren Ausführungseinheiten
DE69732793T2 (de) Acht-bit-mikrokontroller mit risc-architektur

Legal Events

Date Code Title Description
8364 No opposition during term of opposition