DE69932481T2 - Kellerzeigerverwaltung - Google Patents

Kellerzeigerverwaltung Download PDF

Info

Publication number
DE69932481T2
DE69932481T2 DE69932481T DE69932481T DE69932481T2 DE 69932481 T2 DE69932481 T2 DE 69932481T2 DE 69932481 T DE69932481 T DE 69932481T DE 69932481 T DE69932481 T DE 69932481T DE 69932481 T2 DE69932481 T2 DE 69932481T2
Authority
DE
Germany
Prior art keywords
stack
stack pointer
data
instruction
program counter
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
DE69932481T
Other languages
English (en)
Other versions
DE69932481D1 (de
Inventor
Gilbert Laurenti (Nmi)
Walter A. Pittsburgh Jackson
Jack Rosenzweig (nmi), Pittsburgh
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
Application granted granted Critical
Publication of DE69932481D1 publication Critical patent/DE69932481D1/de
Publication of DE69932481T2 publication Critical patent/DE69932481T2/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)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Debugging And Monitoring (AREA)
  • Microcomputers (AREA)
  • Advance Control (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 das Management eines Stapels zum Übergeben von Variablen während der Ausführung von Befehlen in diesen Prozessoren.
  • HINTERGRUND DER ERFINDUNG
  • Mikroprozessoren sind Universalprozessoren, die hohe Befehlsdurchsätze erfordern, um die darauf laufende Software auszuführen, und können je nach den besonderen betroffenen Software-Anwendungen einen weiten Bereich von Verarbeitungsanforderungen aufweisen. Es ist bekannt, einen Stapel bereitzustellen, der dazu verwendet werden kann, Variablen von einer Software-Routine zu einer anderen zu übergeben. Außerdem werden Stapel dazu verwendet, die Inhalte des Programmzählers zu halten, wenn eine erste Software-Routine eine zweite Software-Routine aufruft, so dass der Programmablauf nach Abschluss der aufgerufenen zweiten Routine zu der ersten Software-Routine zurückkehren kann. Ein Aufruf in der zweiten Software-Routine kann eine dritte Routine aufrufen usw.
  • Es sind viele verschiedene Arten von Prozessoren bekannt, von denen Mikroprozessoren nur ein Beispiel sind. Zum Beispiel werden insbesondere für spezifische Anwendungen wie etwa Mobilverarbeitungsanwendungen umfassend digitale Signalprozessoren (DSPs) verwendet. DSPs sind typisch so konfiguriert, dass sie die Leistungsfähigkeit der betroffenen Anwendungen optimieren, wobei sie spezielle Ausführungseinheiten und Befehlssätze nutzen, um dies zu erreichen. Insbesondere, aber nicht ausschließlich, in Anwendungen wie etwa Mobiltelekommunikationsanwendungen ist es erwünscht, eine ständig wachsende DSP-Leistungsfähigkeit bereitzustellen, während der Leistungsverbrauch so niedrig wie möglich gehalten wird.
  • Eine Art der Bereitstellung einer verbesserten Leistungsfähigkeit ist die Bereitstellung eines größeren Befehlsspeichers und das Erhöhen der Länge des Pro grammzählers, so dass der größere Befehlsspeicher direkt adressiert werden kann. Allerdings kann dies zu einer Programminkompatibilität zwischen verschiedenen Generationen von Mikroprozessoren führen.
  • Das Patent der Vereinigten Staaten Nummer 5.430.864 beschreibt ein System, das ermöglicht, dass ein Computersystem Daten von Programmen, die so beschaffen sind, dass sie in Übereinstimmung mit einer ersten Wortgröße arbeiten, sowie von Programmen, die so beschaffen sind, dass sie in Übereinstimmung mit einer zweiten Wortgröße arbeiten, von Registerdateien im Speicher speichert und aus dem Speicher zurück in die Registerdateien wieder herstellt. Dies wird ohne Zunahme an Hardware und ohne, dass eine Änderung der vorhandenen Software erforderlich ist, erreicht. Insbesondere wird auf der Prozedurebene eine Angabe genutzt, die bestimmt, ob eine besondere Prozedur Wörter mit einer ersten oder mit einer zweiten Wortgröße verwendet. Vorzugsweise wird diese Angabe in einer ersten vorgegebenen Bitposition in dem Stapelzeiger der Prozedur angeordnet. Wenn ein Sichern stattfindet, werden bestimmte Inhalte aus der Registerdatei zusammen mit dem Stapelzeiger im Speicher gesichert. Unter bestimmten Umständen wird die Wortgrößenangabe zu einer zweiten vorgegebenen Bitposition in dem Stapelzeiger verschoben, die in einer vorbestimmten Stapelzeigeradresse in dem sicheren Gebiet gespeichert wird. Wenn die Inhalte aus dem Speicher zurück in die Registerdatei wieder hergestellt werden, wird die Angabe in der Stapelzeigeradresse überprüft, wobei sie dazu dient, die Wortgröße der Prozedur zu bestimmen, die wieder hergestellt wird.
  • Das Patent der Vereinigten Staaten Nummer 5.023.777 beschreibt eine Informationsverarbeitungsvorrichtung mit einer Adressenerweiterungsfunktion, die eine Menge von Adressenaddierern zum Ausführen einer Adressenaddition in Bezug auf einen ersten Teil einer Adresse für einen Befehl und/oder für Daten, wobei der Teil dem nicht erweiterten Bitabschnitt der Adresse entspricht, und eine Menge von Domänenregistern zum Speichern als zweiten Teil der Adresse für einen Befehl oder für einen Operanden, wobei der Teil dem erweiterten Bitabschnitt der Adresse entspricht, enthält. Falls die Adressenerweiterung nicht vorge nommen wird, wird unter Verwendung einer virtuellen Adresse, die durch eine Additionsoperation durch den Adressenaddierer und in Übereinstimmung mit einem herkömmlichen nicht adressenerweiterten Programm erhalten wird, eine Adressenübersetzung in eine echte Adresse ausgeführt. Falls die Adressenerweiterung vorgenommen wird, wird die Adressenübersetzung in eine echte Adresse unter Verwendung einer virtuellen Adresse ausgeführt, die durch Verketten des Additionsergebnisses mit dem Inhalt des Domänenregisters durch den Adressenaddierer erhalten wird.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Besondere und bevorzugte Aspekte der Erfindung sind in den beigefügten unabhängigen und abhängigen Ansprüchen dargelegt.
  • Die vorliegende Erfindung ist auf die Verbesserung der Leistungsfähigkeit von Prozessoren wie etwa z. B., aber nicht ausschließlich, digitalen Signalprozessoren gerichtet.
  • In Übereinstimmung mit 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 niedrigen Leistungsverbrauch und für die hocheffiziente Ausführung von DSP-Algorithmen wie etwa für drahtlose Telephone sowie von reinen Steueraufgaben optimiert. Der Prozessor enthält eine Befehlspuffereinheit und eine Datenberechnungseinheit zum Ausführen der durch die Befehlspuffereinheit decodierten Befehle. Ein Programmzähler, der einen unteren Programmzählerabschnitt und einen oberen Programmzählerabschnitt aufweist, stellt eine Befehlsadresse bereit, die für den Befehlsspeicher bereitgestellt wird. Ein erster Stapelzeiger ist so betreibbar, dass er in Reaktion auf einen Befehl, z. B. einen CALL-Befehl, der durch den Mikroprozessor ausgeführt wird, einen ersten Stapelbereich in einem Datenspeicher adressiert, um einen unteren Programmzählerwert zu sichern. Ein zweiter Stapelzeiger ist so betreibbar, dass er in Reaktion auf die Ausführung des CALL-Befehls einen zweiten Stapelbereich in dem Datenspeicher adressiert, um einen oberen Programmzählerwert zu sichern. Dies erhält vorteilhaft die Software-Code-Kompatibilität von einem Mikroprozessor einer früheren Generation, der Variable über einen Stapel übergibt.
  • In Übereinstimmung mit einem weiteren Aspekt der vorliegenden Erfindung ist die Datenberechnungseinheit so betreibbar, dass sie in Reaktion auf die Ausführung eines weiteren Befehls wie etwa z. B. eines PUSH-Befehls einen ersten variablen Wert in dem ersten Stapelbereich in der Nähe des unteren Programmzählerwerts unter Verwendung einer Adresse relativ zu dem ersten Stapelzeiger in Relation zu dem ersten Stapelzeiger speichert. Vorteilhaft wird die Adresse relativ zu dem Stapelzeiger durch den oberen Programmzählerwert, der in dem zweiten Stapelbereich gespeichert ist, nicht beeinflusst.
  • In Übereinstimmung mit einem weiteren Aspekt der vorliegenden Erfindung wird ein Verfahren zum Betreiben eines digitalen Systems geschaffen. In einem verbesserten Prozessorkern werden mehrere Befehle ausgeführt, wobei die Befehle in Reaktion auf einen Programmzähler von einem dem Prozessorkern zugeordneten Befehlsspeicher geholt werden. Es wird ein erster Stapelbereich zum Halten einer Mehrzahl von Datenwerten in einem dem Prozessorkern zugeordneten Datenspeicher durch Halten eines ersten Stapelzeigers gebildet. In dem Datenspeicher wird getrennt von dem ersten Stapelbereich ein zweiter Stapelbereich gebildet, um eine zweite Mehrzahl von Datenwerten durch Halten eines zweiten Stapelzeigers zu speichern. In Reaktion auf einen Befehl wie etwa einen CALL, der in dem Prozessorkern ausgeführt wird, wird ein unterer Programmzählerwert in dem ersten Stapelbereich gespeichert. In Reaktion auf die Ausführung des CALL-Befehls wird ein erster oberer Programmzählerwert in dem zweiten Stapelbereich gespeichert. Daraufhin wird in dem ersten Stapelbereich in der Nähe des ersten unteren Programmzählerwerts unter Verwendung einer Adresse relativ zu dem Stapelzeiger in Relation zu dem ersten Stapelzeiger in Reaktion auf die Ausführung eines Befehls wie etwa z. B. eines PUSH-Befehls ein erster Argumentwert gespeichert. Vorteilhaft wird die Adresse relativ zu dem Stapelzeiger durch den oberen Programmzählerwert, der in dem zweiten Stapelbereich gespei chert ist, nicht beeinflusst, so dass Software-Code von einem Mikroprozessor einer früheren Generation leicht auf den verbesserten Mikroprozessor portiert werden kann.
  • Ein weiterer Aspekt der vorliegenden Erfindung ist, dass ein Kontextdatenwert in der Nähe des oberen Programmzählerwerts unter Verwendung einer Adresse relativ zu dem Stapelzeiger in Relation zu dem zweiten Stapelzeiger in Reaktion auf die Ausführung des PUSH-Befehls gespeichert werden kann. Vorteilhaft wird die Adressierung relativ zu dem Stapelzeiger in dem ersten Stapelgebiet durch den Kontextdatenwert, der in den zweiten Stapelbereich gespeichert ist, nicht beeinflusst. Somit kann die Software-Code-Kompatibilität erhalten werden, während zusätzliche Kontextinformationen für zusätzliche Funktionalität gesichert werden.
  • KURZBESCHREIBUNG DER ZEICHNUNG
  • Es werden nun besondere Ausführungsformen in Übereinstimmung mit der Erfindung lediglich beispielhaft und mit Bezug auf die beigefügte Zeichnung beschrieben, in der zur Bezeichnung gleicher Teile gleiche Bezugszeichen verwendet sind und in der sich die Figuren, soweit nichts anderes angegeben ist, auf den Prozessor aus 1 beziehen und in der:
  • 1 ein schematischer Blockschaltplan eines Prozessors in Übereinstimmung mit einer Ausführungsform der Erfindung ist;
  • 2 ein schematisches Diagramm eines Kerns des Prozessors aus 1 ist;
  • 3 ein ausführlicherer schematischer Blockschaltplan verschiedener Ausführungseinheiten des Kerns des Prozessors ist;
  • 4 ein schematisches Diagramm einer Befehlspuffer-Warteschlange und eines Befehlsdecodierers des Prozessors ist;
  • 5 eine schematische Darstellung des Kerns des Prozessors zur Erläuterung des Betriebs der Pipeline des Prozessors ist;
  • 6 ein Blockschaltplan des Prozessors ist, der einen mit einer Speichermanagementeinheit verbundenen Speicher veranschaulicht;
  • 7 die vereinheitliche Struktur von Programm- und Datenspeicherräumen des Prozessors zeigt;
  • 8A eine schematische Darstellung eines Stapelbereichs ist, der in einem Mikroprozessor einer früheren Generation verwendet wird;
  • 8B eine schematische Darstellung eines Beispiels eines Stapelbereichs zum Speichern eines erweiterten Programmzählers ist;
  • 9 eine schematische Darstellung von Dualstapelgebieten zum Speichern eines erweiterten Programmzählers gemäß Aspekten der vorliegenden Erfindung ist;
  • 10 eine schematische Darstellung eines Anwenderstapelbereichs und eines Systemstapelbereichs für den Mikroprozessor aus 1 gemäß Aspekten der vorliegenden Erfindung ist;
  • 11 ein Blockschaltplan ist, der die Adressenerzeugung in dem Mikroprozessor veranschaulicht;
  • 12 ein ausführlicherer Blockschaltplan von Abschnitten der Adressenerzeugungsschaltungsanordnung aus 11 ist;
  • 13 ein Blockschaltplan ist, der eine Schaltungsanordnung zum Bereitstellen des Stapelzeigers und des Systemstapelzeigers gleichzeitig für zwei Datenbusse für Duallese- oder Dualschreibtransaktionen veranschaulicht;
  • 14 ein Zeitablaufplan ist, der Einzellese- und Einzelschreibtransaktionen und Duallese- oder Dualschreibtransaktionen in dem Mikroprozessor veranschaulicht;
  • 15 eine Tabelle ist, die Kontextdaten veranschaulicht, die in dem Systemstapel gespeichert sind;
  • 16 eine schematische Darstellung einer integrierten Schaltung ist, die den Prozessor enthält; und
  • 17 eine schematische Darstellung einer Telekommunikationsvorrichtung ist, die den Prozessor aus 1 enthält.
  • BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSFORMEN
  • Obgleich die Erfindung besondere Anwendung auf digitale Signalprozessoren (DSPs) findet, die z. B. in einer anwendungsspezifischen integrierten Schaltung (ASIC) realisiert sind, findet sie ebenfalls Anwendung auf andere Formen von Prozessoren.
  • Es wird nun die Grundarchitektur eines Beispiels eines Prozessors gemäß der Erfindung beschrieben. Der Prozessor 100 ist ein programmierbarer Festkomma-DSP-Kern mit variabler Befehlslänge (8 Bits bis 48 Bits), der sowohl hohe Codedichte als auch leichte Programmierung bietet. Die Architektur und der Befehlssatz sind für niedrigen Leistungsverbrauch und hocheffiziente Ausführung von DSP-Algorithmen sowie von reinen Steueraufgaben wie etwa z. B. für drahtlose Telephone optimiert. Der Prozessor 100 enthält Emulationseinrichtungen und Code-Austesteinrichtungen.
  • 1 ist eine schematische Übersicht eines digitalen Systems 10 in Übereinstimmung mit einer Ausführungsform der vorliegenden Erfindung. Das digitale System enthält einen Prozessor 100 und eine Prozessorrückwandleiterplatte 20. In einem besonderen Beispiel der Erfindung ist das digitale System ein digitales Signalprozessorsystem 10, das in einer anwendungsspezifischen integrierten Schaltung (ASIC) realisiert ist. Im Interesse der Klarheit zeigt 1 nur jene Abschnitte des Mikroprozessors 100, die für ein Verständnis einer Ausführungsform der vorliegenden Erfindung relevant sind. Einzelheiten der allgemeinen Konstruktion für DSPs sind gut bekannt und leicht anderswo zu finden. Zum Beispiel beschreibt das US-Patent 5.072.418, erteilt an Frederick Boutaud u. a., ausführlich einen DSP. Das US-Patent 5.329.471, erteilt an Gary Swoboda u. a., beschreibt ausführlich, wie ein DSP zu testen und zu emulieren ist. Einzelheiten der für eine Ausführungsform der vorliegenden Erfindung relevanten Abschnitte des Mikroprozessors 100 werden im Folgenden ausreichend ausführlich erläutert, um zu ermöglichen, dass der Durchschnittsfachmann auf dem Gebiet der Mikroprozessoren die Erfindung herstellen und verwenden kann.
  • Wie in 1 gezeigt ist, bildet der Prozessor 100 eine Zentraleinheit (CPU) mit einem Prozessorkern 102 und einer Speicherschnittstelleneinheit 104 als Schnittstelle des Prozessorkerns 102 mit den gegenüber dem Prozessorkern 102 externen Speichereinheiten.
  • Die Prozessorrückwandleiterplatte 20 umfasst einen Rückwandleiterplattenbus 22, mit dem die Speichermanagementeinheit 104 des Prozessors verbunden ist. Außerdem sind mit dem Rückwandleiterplattenbus 22 ein Befehls-Cache-Speicher 24, Peripheriegeräte 26 und eine externe Schnittstelle 28 verbunden.
  • Es ist klar, dass die Erfindung in anderen Beispielen unter Verwendung anderer Konfigurationen und/oder anderer Technologien realisiert werden könnte. Zum Beispiel könnte der Prozessor 100 eine erste integrierte Schaltung bilden, von der die Prozessorrückwandleiterplatte 20 getrennt ist. Der Prozessor 100 könnte z. B. ein DSP sein, der getrennt von einer Rückwandleiterplatte 20 ist, die einen Rückwandleiterplattenbus 22, Peripheriegeräte und externe Schnittstellen trägt, und auf ihr angebracht ist. Der Prozessor 100 könnte z. B. eher als ein DSP ein Mikroprozessor sein und könnte in anderen Technologien als der ASIC-Technologie realisiert sein. Der Prozessor oder ein Prozessor, der den Prozessor enthält, könnte in einer oder in mehreren integrierten Schaltungen realisiert sein.
  • 2 veranschaulicht die Grundstruktur einer Ausführungsform des Prozessorkerns 102. Wie veranschaulicht ist, enthält diese Ausführungsform des Prozessorkerns 102 vier Elemente, d. h. eine Befehlspuffereinheit (I-Einheit) 106 und drei Ausführungseinheiten. Die Ausführungseinheiten sind eine Programmablaufeinheit (P-Einheit) 108, eine Adressendatenflusseinheit (A-Einheit) 110 und eine Datenberechnungseinheit (D-Einheit) 112 zur Ausführung von von der Befehls puffereinheit (I-Einheit) 106 decodierten Befehlen und zum Steuern und Überwachen des Programmablaufs.
  • 3 veranschaulicht die P-Einheit 108, die A-Einheit 110 und die D-Einheit 112 des Prozessorkerns 102 genauer und zeigt die Busstruktur, die die verschiedenen Elemente des Prozessorkerns 102 verbindet. Die P-Einheit 108 enthält z. B. eine Schleifensteuerschaltungsanordnung, eine GoTo-/Verzweigungs-Steuerschaltungsanordnung und verschiedene Register zum Steuern und Überwachen des Programmablaufs wie etwa ein Wiederholungszählerregister sowie Unterbrechungsmasken-, Merker- oder Vektorregister. Die P-Einheit 108 ist mit Universaldatenschreibbussen (EB, FB) 130, 132, mit Universaldatenlesebussen (CB, DB) 134, 136 und mit einem Koeffizientenprogrammbus (BB) 138 gekoppelt. Die P-Einheit 108 ist außerdem über verschiedene mit CSR, ACB und RGD bezeichnete Busse mit Untereinheiten in der A-Einheit 110 und in der D-Einheit 112 gekoppelt.
  • Wie in 3 veranschaulicht ist, enthält die A-Einheit 110 in der vorliegenden Ausführungsform eine Registerdatei 30, eine Datenadressenerzeugungs-Untereinheit (DAGEN) 32 und eine Arithmetik-Logik-Einheit (ALU) 34. Die A-Einheits-Registerdatei 30 enthält verschiedene Register, darunter 16-Bit-Zeigerregister (AR0, ..., AR7) und 16-Bit-Datenregister (DR0, ..., DR3), die ebenfalls für den Datenfluss sowie für die Adressenerzeugung verwendet werden können. Außerdem enthält die Registerdatei 16-Bit-Ringpufferregister und 7-Bit-Datenseitenregister. Mit der A-Einheits-Registerdatei 30 sind die Universalbusse (EB, FB, CB, DB) 130, 132, 134, 136 sowie ein Koeffizientendatenbus 140 und ein Koeffizientenadressenbus 142 gekoppelt. Die A-Einheits-Registerdatei 30 ist durch einseitig gerichtete Busse 144 bzw. 146, die in entgegengesetzten Richtungen arbeiten, mit der A-Einheits-DAGEN-Einheit 32 gekoppelt. Die DAGEN-Einheit 32 enthält 16-Bit-X/Y-Register und Koeffizienten- und Stapelzeigerregister, um z. B. die Adressenerzeugung in dem Prozessor 100 zu steuern und zu überwachen.
  • Außerdem umfasst die A-Einheit 110 die ALU 34, die eine Schieberfunktion sowie die einer ALU typisch zugeordneten Funktionen wie etwa Addition, Sub traktion und die Logikoperatoren UND, ODER und XOR enthält. Die ALU 34 ist ebenfalls mit den Universalbussen (EB, DB) 130, 136 und mit einem Befehlskonstanten-Datenbus (KDB) 140 gekoppelt. Die A-Einheits-ALU ist durch einen PDA-Bus mit der P-Einheit 108 gekoppelt, um Registerinhalt von der P-Einheits-108-Registerdatei zu empfangen. Außerdem ist die ALU 34 durch Busse RGA und RGB, um Adressen- und Datenregisterinhalte zu empfangen, und durch einen Bus RGD, um Adressen- und Datenregister in die Registerdatei 30 weiterzuleiten, mit der A-Einheits-Registerdatei 30 gekoppelt.
  • In Übereinstimmung mit der veranschaulichten Ausführungsform der Erfindung enthält die D-Einheit 112 eine D-Einheits-Registerdatei 36, eine D-Einheits-ALU 38, eine D-Einheits-Schiebeeinrichtung 40 und zwei Multiplikations- und Akkumulationseinheiten (MAC1, MAC2) 42 und 44. Die D-Einheits-Registerdatei 36, die D-Einheits-ALU 38 und die D-Einheits-Schiebeeinrichtung 40 sind mit Bussen (EB, FB, CB, DB und KDB) 130, 132, 134, 136 und 140 gekoppelt und die MAC-Einheiten 42 und 44 sind mit den Bussen (CB, DB, KDB) 134, 136, 140 und mit einem Datenlesebus (BB) 144 gekoppelt. Die D-Einheits-Registerdatei 36 enthält 40-Bit-Akkumulatoren (AC0, ..., AC3) und ein 16-Bit-Übergangsregister. Außer den 40-Bit-Akkumulatoren kann die D-Einheit 112 ebenfalls die 16-Bit-Zeiger- und 16-Bit-Datenregister in der A-Einheit 110 als Quell- oder Zielregister nutzen. Die D-Einheits-Registerdatei 36 empfängt über die Akkumulatorschreibbusse (ACW0, ACW1) 146, 148 Daten von der D-Einheits-ALU 38 und von den MACs 1 und 2 42, 44 und über den Akkumulatorschreibbus (ACW1) 148 Daten von der D-Einheits-Schiebeeinrichtung 40. Die Daten werden von den D-Einheits-Registerdateiakkumulatoren über Akkumulatorlesebusse (ACR0, ACR1) 150, 152 in die D-Einheits-ALU 38, in die D-Einheits-Schiebeeinrichtung 40 und in die MACs 1 und 2 42, 44 gelesen. Außerdem sind die D-Einheits-ALU 38 und die D-Einheits-Schiebeeinrichtung 40 über verschiedene mit EFC, DRB, DR2 und ACB bezeichnete Busse mit Untereinheiten der A-Einheit 108 gekoppelt.
  • In 4 ist nun eine Befehlspuffereinheit 106 in Übereinstimmung mit der vorliegenden Ausführungsform veranschaulicht, die eine 32-Wort-Befehlspuffer- Warteschlange (32-Wort-IBQ) 502 umfasst. Die IBQ 502 umfasst 32 × 16-Bit-Register 504, die logisch in 8-Bit-Bytes 506 aufgeteilt sind. Die Befehle kommen über den 32-Bit-Programmbus (32-Bit-PB) 122 bei der IBQ 502 an. Die Befehle werden in einem 32-Bit-Zyklus an den Platz geholt, auf den der lokale Schreibprogrammzähler (LWPC) 532 zeigt. Der LWPC 532 ist in einem Register enthalten, das sich in der P-Einheit 108 befindet. Außerdem enthält die P-Einheit 108 das Register des lokalen Leseprogrammzählers (LRPC) 536 sowie die Register des Schreibprogrammzählers (WPC) 530 und des Leseprogrammzählers (RPC) 534. Der LRPC 536 zeigt auf den Platz in der IBQ 502 des nächsten Befehls oder der nächsten Befehle, der/die in den/die Befehlsdecodierer 512 und 514 zu laden ist/sind. Das heißt, der LRPC 534 zeigt auf den Ort in der IBQ 502 des Befehls, der momentan an die Decodierer 512, 514 abgesendet wird. Der WPC zeigt im Programmspeicher auf die Adresse des Starts der nächsten 4 Bytes des Befehlscodes für die Pipeline. Für jeden Holvorgang in die IBQ werden unabhängig von Befehlsgrenzen die nächsten 4 Bytes aus dem Programmspeicher geholt. Der RPC 534 zeigt im Programmspeicher auf die Adresse des Befehls/der Befehle, der/die momentan an den/die Decodierer 512/514 abgesendet wird/werden.
  • In dieser Ausführungsform werden die Befehle zu einem 48-Bit-Wort gebildet und über einen 48-Bit-Bus 516 über Multiplexer 520 und 521 in die Befehlsdecodierer 512, 514 geladen. Für den Durchschnittsfachmann auf dem Gebiet ist klar, dass die Befehle zu Worten gebildet werden können, die eine andere Anzahl als 48 Bits umfassen, und dass die vorliegende Erfindung nicht auf die spezifische oben beschriebene Ausführungsform beschränkt ist.
  • Für die derzeit bevorzugte 48-Bit-Wortgröße kann der Bus 516 während irgendeines Befehlszyklus maximal 2 Befehle, einen pro Decodierer, laden. Die Kombination der Befehle kann in irgendeiner Kombination der Formate 8, 16, 24, 32, 40 und 48 Bits sein, die über den 48-Bit-Bus passen. Falls während eines Zyklus nur ein Befehl geladen werden kann, wird der Decodierer 1, 512, vor dem Decodierer 2, 514, geladen. Daraufhin werden die jeweiligen Befehle zu den jeweiligen Funktionseinheiten weitergeleitet, um sie auszuführen und um auf die Daten zuzugreifen, für die der Befehl oder die Operation ausgeführt werden soll. Bevor die Befehle an die Befehlsdecodierer übergeben werden, werden sie an den Byte-Grenzen ausgerichtet. Die Ausrichtung erfolgt anhand des für den voran gehenden Befehl während dessen Decodierung abgeleiteten Formats. Die der Ausrichtung der Befehle auf die Bytegrenzen zugeordnete Multiplexierung wird in den Multiplexern 520 und 521 ausgeführt.
  • Der Prozessorkern 102 führt die Befehle durch eine 7-Stufen-Pipeline aus, deren jeweilige Stufen nun anhand von Tabelle 1 und 5 beschrieben werden. Die Prozessorbefehle werden unabhängig davon, wo die Ausführung stattfindet (A-Einheit oder D-Einheit), durch eine 7-Stufen-Pipeline ausgeführt. Um die Programmcodegröße zu verringern, sendet ein C-Compiler gemäß einem Aspekt der vorliegenden Erfindung so viele Befehle wie möglich für die Ausführung in der A-Einheit ab, so dass die D-Einheit abgeschaltet werden kann, um Leistung zu sparen. Dies erfordert, dass die A-Einheit die an Speicheroperanden ausgeführten Grundoperationen unterstützt.
  • Figure 00130001
    Tabelle 1: Die Prozessorpipelinebeschreibung für einen Einzyklus-Befehl ohne Speicherwartezustände.
  • Die erste Stufe der Pipeline ist eine PRE-FETCH-Stufe (P0-Stufe) 202, während derer durch Aktivieren einer Adresse auf dem Adressenbus (PAB) 118 einer Speicherschnittstelle 104 ein nächster Programmspeicherplatz adressiert wird.
  • In der nächsten Stufe, der FETCH-Stufe (P1-Stufe) 204, wird der Programmspeicher gelesen und die I-Einheit 106 über den PB-Bus 122 von der Speicherschnittstelleneinheit 104 gefüllt.
  • Die PRE-FETCH- und die FETCH-Stufe sind dadurch, dass die Pipeline, z. B. für einen Verzweigungsbefehl, während der PRE-FETCH- und der FETCH-Stufe unterbrochen werden kann, um den nachfolgenden Programmablauf zu unterbrechen und auf andere Befehle in dem Programmspeicher zu zeigen, vom Rest der Pipelinestufen getrennt.
  • Daraufhin wird der nächste Befehl in dem Befehlspuffer an den/die Decodierer 512/514 in der dritten Stufe, DECODE (P2) 206, abgesendet, wobei der Befehl decodiert und an die Ausführungseinheit abgesendet wird, um diesen Befehl für die P-Einheit 108, für die A-Einheit 110 oder für die D-Einheit 112 auszuführen. Die Decodierungsstufe 206 enthält die Decodierung wenigstens eines Teils des Befehls, der einen ersten Teil, der die Klasse des Befehls angibt, einen zweiten Teil, der das Format des Befehls angibt, und einen dritten Teil, der eine Adressierungsbetriebsart für den Befehl angibt, enthält.
  • Die nächste Stufe ist eine ADDRESS-Stufe (P3-Stufe) 208, in der die Adresse der in dem Befehl zu verwendenden Daten berechnet wird oder in der eine neue Programmadresse berechnet wird, falls der Befehl eine Programmverzweigung oder einen Programmsprung erfordert. Die jeweiligen Berechnungen finden in der A-Einheit 110 bzw. in der P-Einheit 108 statt.
  • In einer ACCESS-Stufe (P4-Stufe) 210 wird die Adresse eines Leseoperanden erzeugt und daraufhin 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 (READ).
  • Die nächste Stufe der Pipeline ist die READ-Stufe (P5-Stufe) 212, in der ein Speicheroperand gelesen wird (READ), dessen Adresse in einem DAGEN-X-Operator mit einer indirekten Xmem-Adressierungsbetriebsart oder in einem DAGEN-C-Operator mit Koeffizientenadressen-Betriebsart erzeugt worden ist. Es wird die Adresse des Speicherplatzes erzeugt, in den das Ergebnis des Befehls geschrieben werden soll.
  • Schließlich gibt es eine Ausführungs-EXEC-Stufe (P6-Stufe) 214, in der der Befehl entweder in der A-Einheit 110 oder in der D-Einheit 112 ausgeführt wird. Das Ergebnis wird daraufhin in einem Datenregister oder in einem Akkumulator gespeichert oder für Lese-/Änderungs-/Schreibbefehle in den Speicher geschrieben. In den Akkumulatoren werden während der EXEC-Stufe außerdem Schiebeoperationen an den Daten ausgeführt.
  • Die Pipeline des Prozessors 100 ist geschützt. Dies verbessert erheblich die Leistungsfähigkeit des C-Compilers, da keine NOP-Befehle eingefügt zu werden brauchen, um Latenzzeitanforderungen zu erfüllen. Außerdem erleichtert es wesentlich die Codeübersetzung von einem Prozessor einer früheren Generation zu einem Prozessor einer späteren Generation.
  • Eine im Prozessor 100 verwendete Pipelineschutz-Grundregel ist wie folgt: Falls ein Schreibzugriff vor dem andauernden Lesezugriff begonnen, aber noch nicht abgeschlossen worden ist und falls beide Zugriffe dasselbe Betriebsmittel gemeinsam nutzen, werden Zusatzzyklen eingefügt, um den Schreibabschluss zu ermöglichen und mit den aktualisierten Operanden den nächsten Befehl auszuführen; allerdings muss sich für die Emulation eine Einschritt-Codeausführung genau wie eine frei laufende Codeausführung verhalten.
  • Anhand von 5 wird nun das Grundprinzip des Betriebs für einen Pipeline-Prozessor beschrieben. Wie aus 5 zu sehen ist, finden für einen ersten Befehl 302 die aufeinander folgenden Pipeline-Stufen über die Zeitdauern T1-T7 statt.
  • Jede Zeitdauer ist ein Taktzyklus für den Prozessor-Maschinentakt. In der Zeitdauer 72 kann ein zweiter Befehl 304 in die Pipeline eintreten, da sich der voran gehende Befehl nun in die nächste Pipeline-Stufe bewegt hat. Für den Befehl 3, 306, findet die PRE-FETCH-Stufe 202 im Zeitraum T3 statt. Wie aus 5 zu sehen ist, können für eine Sieben-Stufen-Pipeline insgesamt 7 Befehle gleichzeitig verarbeitet werden. 5 zeigt sie für alle 7 Befehle 302314 im Zeitraum T7 in der Verarbeitung. Eine solche Struktur fügt eine Form von Parallelismus zu der 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 über einen doppelt gerichteten 32-Bit-Datenbus 120 mit einem externen Programmablagespeicher 150 gekoppelt ist. Außerdem ist die Speicherschnittstelleneinheit 104 über einen 24-Bit-Adressenbus 114 und über einen doppelt gerichteten 16-Bit-Datenbus 116 mit Datenspeichereinheiten 151 gekoppelt. Außerdem ist die Speicherschnittstelleneinheit 104 über einen 32-Bit-Programmlesebus (32-Bit-PB) 122 mit der I-Einheit 106 des Maschinenprozessorkerns 102 gekoppelt. Die P-Einheit 108, die A-Einheit 110 und die D-Einheit 112 sind über Datenlesebusse und Datenschreibbusse und über entsprechende Adressenbusse mit der Speicherschnittstelleneinheit 104 gekoppelt. Ferner ist die P-Einheit 108 mit einem Programmadressenbus 128 gekoppelt.
  • Genauer ist die P-Einheit 108 über einen 24-Bit-Programmadressenbus 128, über die zwei 16-Bit-Datenschreibbusse (EB, FB) 130, 132 und über die zwei 16-Bit-Datenlesebusse (CB, DB) 134, 136 mit der Speicherschnittstelleneinheit 104 gekoppelt. Die A-Einheit 110 ist über zwei 24-Bit-Datenschreib-Adressenbusse (EAB, FAB) 160, 162, über die zwei 16-Bit-Datenschreibbusse (EB, FB) 130, 132, über die drei Datenlese-Adressenbusse (BAB, CAB, DAB) 164, 166, 168 und über die zwei 16-Bit-Datenlesebusse (CB, DB) 134, 136 mit der Speicherschnittstelleneinheit 104 gekoppelt. Die D-Einheit 112 ist über die zwei Datenschreibbusse (EB, FB) 130, 132 und über die drei Datenlesebusse (BB, CB, DB) 144, 134, 136 mit der Speicherschnittstelleneinheit 104 gekoppelt.
  • 6 stellt die Übergabe von Befehlen von der I-Einheit 106 an die P-Einheit 108 bei 124, z. B. zum Weiterleiten von Verzweigungsbefehlen, dar. Außerdem stellt 6 die Übergabe von Daten von der I-Einheit 106 an die A-Einheit 110 und an die D-Einheit 112 bei 126 bzw. bei 128 dar.
  • Wie in 7 veranschaulicht ist, ist der Prozessor 100 um einen vereinheitlichten Programm-/Datenraum organisiert. Ein Programmzeiger hat intern 24 Bits und eine Byte-Adressierungsfähigkeit, wobei aber nur eine 22-Bit-Adresse an den Speicher exportiert wird, da das Programmholen immer an einer 32-Bit-Grenze ausgeführt wird. Allerdings wird z. B. während der Emulation für die Software-Entwicklung die volle 24-Bit-Adresse für eine Hardware-Unterbrechungspunkt-Realisierung bereitgestellt. Die Datenzeiger sind 16 Bit, erweitert durch eine 7-Bit-Hauptdatenseite, und besitzen Wortadressierungsfähigkeit. Die Software kann wie folgt bis zu 3 Hauptdatenseiten definieren:
    MDP direkter Zugriff indirekter Zugriff CDP
    MDP05 – indirekter Zugriff AR[0-5]
    MDP67 – indirekter Zugriff AR[6-7]
  • Es wird ein Stapel gehalten, der immer auf der Hauptdatenseite 0 liegt. Die auf den CPU-Speicher abgebildeten Register sind von allen Seiten sichtbar.
  • In Tabelle 2 sind verschiedene Aspekte des Prozessors 100 zusammengefasst.
  • Figure 00180001
  • Figure 00190001
    Tabelle 2- Zusammenfassung des verbesserten Prozessors 100
  • Ein Aspekt der vorliegenden Erfindung ist die Erhaltung der Software-Code-Kompatibilität zwischen einer früheren Version eines Mikroprozessors und einer späteren, verbesserten Version des Mikroprozessors. Bei einer klassischen Stapelarchitektur, die mit einem 16-Bit-Prozessor einer früheren Familie verwendet wird, würde der Prozessorstapelzeiger während des Codeübersetzungsprozesses wegen eines 24-Bit-Programmzählers, der in der verbesserten Version des Mikroprozessors anstelle eines 16-Bit-Programmzählers verwendet wird, divergieren. Das Synchronhalten der Stapelzeiger ist eine Hauptübersetzungsanforderung, um die richtige Parameterübergabe über den Stapel zu unterstützen.
  • Um die obige Anforderung zu erfüllen, wird der Prozessorstapel gemäß Aspekten der vorliegenden Erfindung mit zwei unabhängigen Zeigern gemanagt:
    Anwenderstapelzeiger SP und Systemstapelzeiger SSP, wie sie in den 9 und 10 veranschaulicht sind. Den Systemstapelzeiger sollte der Anwender mit Ausnahme für die Abbildung nie behandeln.
  • 8A ist eine schematische Darstellung eines Stapelbereichs 810 in einem Speicherraum 800, der in einem Mikroprozessor einer früheren Generation verwendet wird. Der veranschaulichte Stapel beginnt bei der Wortadresse 100, könnte aber bei einer anderen Adresse beginnen. Ein Stapelzeiger 802 enthält einen Adressenwert, der auf den letzten gespeicherten Datenplatz in dem Stapelbereich "zeigt". Typisch werden eine oder mehrere Variable auf einen Stapel geschoben, woraufhin ein Unterprogramm aufgerufen wird. Ein Aufrufbefehl schiebt den Wert des Programmzählers auf den Stapel, so dass nach der Rückkehr von dem Unterprogramm die Befehlsausführung an diesem Punkt wieder aufgenommen werden kann. Es wird angemerkt, dass der Programmzählerwert 16 Bits oder weniger ist und in ein 16-Bit-Wort in dem Stapel passt.
  • Auf die Variablen innerhalb des Unterprogramms wird unter Verwendung der Relativadressierung des Stapelzeigers wie in der folgenden Codesequenz veranschaulicht zugegriffen:
    Figure 00200001
  • In der obigen Codesequenz gibt der Term "*SP(offset_var1)" an, dass der Datenwert geholt wird, der sich an einem Speicherplatz befindet, der um einen Betrag (offset_var1) relativ zu dem Stapelzeiger SP ist. Ein Compiler berechnet während des Kompilierungsprozesses die Relativadresse jeder Variablen. Wieder anhand von 8A zeigt der Stapelzeiger auf die Adresse FE, nachdem der Wert des Programmzählers PC1 in Reaktion auf das Ausführen des Befehls "call func_a" geschoben worden ist. In diesem Fall ist die Adresse relativ zu dem Stapelzeiger der geschobenen Variablen VAR1 2. Somit fügt der Compiler anstelle von "offset var1" "2" ein. Alternativ schreibt ein Programmierer von Hand ein Assemblersprachenprogramm, in dem er die richtigen Literal-Offset-Werte für "offset var1" und "offset var2" einfügt.
  • Weiter anhand von 8A ist zu sehen, dass vor jedem Aufruf, der einen Programmzählerwert PC2, PC3, PC4 schiebt, verschiedene Anzahlen von Variablen auf den Stapel geschoben werden können. Allerdings wird der Stapelzeiger SP in jedem Fall vorausdekrementiert, so dass er auf die letzte auf den Stapel geschobene Position wie etwa bei FA, F8 und F7 zeigt.
  • 8B ist eine schematische Darstellung eines Beispiels eines Stapelbereichs zum Speichern eines erweiterten Programmzählers. In diesem Fall ist der Programmzähler auf 24 Bits erhöht worden. Nun sind zwei 16-Bit-Stapel-Wortplätze wie bei den Adressen FE und FD erforderlich, um einen Wert des Programmzäh lers auf den Stapel zu schieben. Somit tritt, falls das obige Codesegment, das für den früheren Prozessor mit einem wie in 8A veranschaulichten Stapel kompiliert oder von Hand geschrieben wurde, auf einem verbesserten Prozessor mit einem wie in 8B veranschaulichten Stapel ausgeführt wird, ein Fehler auf, wenn von dem Unterprogramm die Relativadressierung des Stapelzeigers verwendet wird, da die durch den Compiler bereitgestellten ursprünglichen Versatzwerte jetzt falsch sind. Somit muss das Programm neu kompiliert werden, was ein Nachteil ist. Ähnlich ist es für den Fall des von Hand geschriebenen Assemblercodes. Das Assemblerprogramm muss mühsam von Hand übersetzt werden, da die von dem Programmierer bereitgestellten Literal-Offsets durch einen Assembler nicht korrigiert werden können. Selbst wenn ein Assembler die Offset-Werte bereitstellt, muss das Programm dennoch neu assembliert werden, was ein Nachteil ist.
  • 9 ist eine schematische Darstellung der Dualstapelbereiche 910, 911, zum Speichern eines erweiterten Programmzählers gemäß Aspekten der vorliegenden Erfindung. Beide Bereiche befinden sich in einem zusammenhängenden Speicherraum, der die Speicherräume 900a und 900b enthält. Alternativ könnten die Speicherräume 900a und 900b in einem nicht zusammenhängenden Speicher oder in getrennten Speicherräumen sein. Der Anwenderstapelbereich 910 wird zum Speichern von Variablen und von einem ersten Abschnitt des Programmzählers verwendet, so dass alle Adressen-Offsets relativ zu dem Stapelzeiger von einem Prozessor einer früheren Generation gültig bleiben. Der Systemstapelbereich 911 wird zum Speichern des verbleibenden Abschnitts des Programmzählers verwendet.
  • In 9 enthält der erste Abschnitt des Programmzählers die Bits 0-15, während der verbleibende Abschnitt für einen 24-Bit-Programmzähler die Bits 16-23 enthält. Allerdings könnte der Programmzähler anders aufgeteilt werden, solange nur ein Wortplatz in dem Anwenderstapel zum Speichern des ersten Abschnitts des Programmzählers verwendet wird.
  • Weiter anhand von 9 kann außerdem ein Kontextwert in dem Systemstapelbereich gespeichert werden, wie es z. B. durch context1 gezeigt ist, das bei der Adresse 200 gespeichert ist. Der Kontextwert stellt Statusinformationen über verschiedene Funktionsschaltungsanordnungen in dem Mikroprozessor zu der Zeit bereit, zu der der Programmzähler auf den Stapel geschoben wurde. Kontextwerte werden gespeichert, wenn Befehle, die den Programmablauf ändern, wie etwa z. B. ein CALL ausgeführt werden. Kontextwerte werden gleichfalls gespeichert, wenn eine Unterbrechung auftritt und in Reaktion auf die Unterbrechung Programmzählerwerte auf den Stapel geschoben werden. Das Format des Kontextwerts wird später genauer beschrieben. Alternativ könnten Kontextwerte nur in Reaktion auf Unterbrechungen oder nur in Reaktion auf Befehle, die den Programmablauf ändern, gespeichert werden.
  • Der Stapel wird durch die folgenden Ereignisse manipuliert:
    • (1) Unterbrechungen und die Befehle intr(), trap() und call(), die Daten sowohl in den System- als auch in den Datenstapel schieben. SP und SSP werden beide vor dem Speichern von Elementen in dem Stapel vorausdekrementiert.
    • (2) push()-Befehle, die Daten nur in den Datenstapel schieben. SP wird vor dem Speichern von Elementen in dem Stapel vorausdekrementiert.
    • (3) return()-Befehle, die Daten sowohl von dem System- als auch von dem Datenstapel abheben. SP und SSP werden beide nachinkrementiert, nachdem die Stapelelemente geladen worden sind.
    • (4) pop()-Befehle, die Daten nur von dem Datenstapel abheben. SP wird nachinkrementiert, nachdem die Stapelelemente geladen worden sind.
  • Außerdem wird der Datenstapelzeiger (SP) verwendet, um auf die Einzeldatenspeicheroperanden in der Direktbetriebsart zuzugreifen.
  • 10 ist eine schematische Darstellung des Anwenderstapelbereichs 910 und des Systemstapelbereichs 911 für den Mikroprozessor aus 1 gemäß weiteren Aspekten der vorliegenden Erfindung. Beide Stapelzeiger enthalten die Adresse des letzten in den Datenstapel geschobenen Elements. Der Prozessor 100 stellt einen 32-Bit-Weg in den Stapel bereit, was eine schnelle Kontextsicherung zulässt.
  • Der Prozessor 100 nutzt die 2 × 16-Bit-Speicher-Lese-/Schreibbusse und den Duallese-/Dualschreibzugriff, um Kontextsicherungen zu beschleunigen. Zum Beispiel werden ein 32-Bit-Akkumulator oder zwei unabhängige Register als eine Sequenz von zwei 16-Bit-Speicherschreibvorgängen gesichert. Die Kontextsicherungsroutine kann Einzel- und Doppel-push()/pop()-Befehle mischen. Das Byteformat wird durch die push/pop-Befehlsfamilie nicht unterstützt. In einer durch den Programmablauf (Aufrufe, Unterbrechungen) angesteuerten Kontextsicherung wird der Programmzähler in zwei Felder PC[23:16], PC[15:0] aufgeteilt und als ein Dualschreibzugriff gesichert. Das Feld PC[15:0] wird über die EB/EAB-Busse auf dem Datenstapel an dem Platz gesichert, auf den SP zeigt. Das Feld PC[23:16] wird über die FB/FAB-Busse auf dem Stapel an dem Platz gesichert, auf den SSP zeigt. Tabelle 3 fasst die Aufruf- und Rücksprung-Befehle zusammen.
  • Figure 00230001
    Tabelle 3: Aufruf- und Rücksprung-Befehle
  • Weiter anhand von 10 wird, wie zuvor beschrieben wurde, ein erster Abschnitt des Programmzählers 1000 in dem Anwenderstapel gespeichert, während der verbleibende Abschnitt des Programmzählers 1001 in dem Systemstapel gespeichert wird. Wie zuvor beschrieben wurde, kann auf den Speicher 900 über den E-Bus 1010 und über den F-Bus 1011 gleichzeitig zugegriffen werden. Somit können beide Abschnitte des Programmzählers 1000, 1001 gleichzeitig in die Dualstapel geschrieben oder aus ihnen gelesen werden, so dass es im Vergleich zu einem früheren Mikroprozessor mit nur einem 16-Bit-Programmzähler keinen Leistungsverlust gibt.
  • Um die beste Leistungsfähigkeit während der Kontextsicherung zu erhalten, muss der Stapel auf Dualzugriffsspeicherinstanzen abgebildet werden. In dieser Ausführungsform werden die Stapelgebiete in der Hauptdatenseite 0 (64Kword) gehalten. Allerdings könnten andere Ausführungsformen die Stapelbereiche in anderen Speichergebieten anordnen. Anwendungen, die einen großen Stapel erfordern, können ihn mit zwei Einzelzugriffs-Speicherinstanzen mit einer speziellen Abbildung (ungerade/gerade Bank) realisieren, um sich von dem Konflikt zwischen E- und F-Anforderungen zu befreien.
  • Die Stapelbefehle sind in Tabelle 4 zusammengefasst.
  • Figure 00250001
    Tabelle 4: Stapelbezugnahmebefehle
  • Je nach dem Originalcode der Vorrichtung einer früheren Generation kann der Übersetzer "Fernaufrufe" (24-Bit-Adresse) behandeln müssen. Der Befehlssatz des Prozessors 100 unterstützt eine einzige Klasse von Aufruf/Rücksprung-Be fehlen auf der Grundlage des Duallese/Dualschreib-Schemas. Der übersetzte Code führt außer dem Aufruf einen SP = SP + K8-Befehl aus, um schließlich dieselbe SP-Nachänderung zu erhalten.
  • Es gibt eine begrenzte Anzahl von Fällen, in denen der Übersetzungsprozess zusätzliche CPU-Betriebsmittel beinhaltet. Falls in einem solchen Makro eine Unterbrechung genommen wird und falls die Unterbrechungsroutine ähnliche Makros enthält, erfordert die übersetzte Kontextsicherungssequenz zusätzliche push()-Befehle. Das heißt, die Stapelzeiger eines Prozessors einer früheren Familie und des vorliegenden Prozessors sind während des ISR-Ausführungsfensters nicht mehr synchron. Sofern die gesamte Kontextsicherung zu Beginn des ISR ausgeführt wird, wird irgend Parameter, der in der Unterbrechungsaufgabe über den Stapel übergeben wird, erhalten. Beim Rücksprung von der Unterbrechung sind die Stapelzeiger des Prozessors einer früheren Familie und des vorliegenden Prozessors wieder synchron.
  • 11 ist ein Blockschaltplan, der die Adressenerzeugung in dem Mikroprozessor aus 1 veranschaulicht. Die Registerdatei 30 hält verschiedene Register für den Mikroprozessor 100 einschließlich des Anwenderstapelzeigers 902 und des Systemstapelzeigers 904. Die Zeiger-Nachänderungs-Schaltungsanordnung 1102 ist über einen Bus 1110 mit der Registerdatei verbunden und so betreibbar, dass sie ein ausgewähltes Register um einen ausgewählten Betrag inkrementiert oder dekrementiert. Über den Bus 1111 wird ein geänderter Registerwert für die Operandenadressenberechnungs-Schaltungsanordnung 1104 bereitgestellt. Die Operandenadressenberechnungs-Schaltungsanordnung 1104 ist so betreibbar, dass sie in Reaktion auf die Adressierungsbetriebsart eines Befehls, der ausgeführt wird, wie etwa durch Addieren einer Adresse relativ zu dem Stapelzeiger zu dem Stapelzeiger wie früher beschrieben den Wert eines ausgewählten Registers ändert. Daraufhin wird in der Adressenregisterschaltungsanordnung 1106 ein richtig geänderter Adressenwert gespeichert und an den Adressenbus 1108 angelegt, um auf den Speicher zuzugreifen. Der Adressenbus 1108 ist repräsentativ für irgendeinen der Adressenbusse 160, 162, 164, 166 oder 168 aus 6. Die A-Einheit unterstützt 16-Bit-Operationen und 8-Bit-Lade-/Speichervorgänge. Dank leistungsfähiger Modifizierer wird die meiste Adressenberechnung durch den DAGEN ausgeführt. Alle Zeigerregister und zugeordneten Offset-Register sind als 16-Bit-Register realisiert. Daraufhin wird die 16-Bit-Adresse mit der Hauptdatenseite verkettet, um eine 24-Bit-Speicheradresse aufzubauen.
  • 12 ist ein ausführlicherer Blockschaltplan der Abschnitte der Adressenschaltungsanordnung aus 11. Die Adressenerzeugung erfolgt durch Berechnen logischer und arithmetischer Operationen (Maskieren, Additionen und Subtraktionen mit oder ohne Reverse-Carry-Fortpflanzung). Die Auswahl der Operanden erfolgt in der Registerdatei. Die Adressenerzeugung wird in zwei Stufen ausgeführt: Die Registeränderung wird in der Änderungsschaltungsanordnung 1102 ausgeführt und die Offset-Berechnung wird in der Berechnungsschaltungsanordnung 1104 ausgeführt. Die direkte und die absolute Adressierung verwenden keine Registeränderung (wobei das Registeränderungsergebnis in diesen Fällen ignoriert wird).
  • Die Registeränderung wird durch die in Tabelle 5 beschriebenen Signale gesteuert, während die Offset-Änderung durch die in Tabelle 6 beschriebenen Signale gesteuert wird.
  • Figure 00270001
    Tabelle 5: Registeränderungs-Steuersignale
  • Figure 00280001
    Tabelle 6: Offset-Änderungen sind Steuersignale
  • Der X-, der Y- und der Koeffizientenweg sind sehr ähnlich. Allerdings ist der Koeffizientenweg viel einfacher, da er nur die indirekte Adressierung mit einer beschränkten Menge von Modifizierern (keine Vorausänderung) unterstützt.
  • Weiter anhand von 12 enthält die Operandenadressenberechnungs-Schaltungsanordnung 1104 eine Addierer/Subtrahierer-Einheit 1200 für das Vorausinkrementieren/Vorausdekrementieren eines Registerwerts. Der Mux 1202 kann über den Bus 1111 einen geänderten Registerwert für den ersten Eingang des Addierers 1200 bereitstellen. Außerdem kann der Mux 1202 einen Offset-Wert für einen Befehl für den ersten Eingang des Addierers 1200 bereitstellen. Der Maskierer 1204 ist mit einem zweiten Eingang des Addierers 1200 verbunden und kann eines der Register aus der Registerdatei auswählen. Eine berechnete Adresse wird in der Erfassungsschaltungsanordnung 1206 untersucht, um zu bestimmen, ob sie auf ein MMR zeigt, und daraufhin über den Bus 1112 an ein Adressenregister gesendet.
  • Weiter anhand von 12 empfängt die Änderungsschaltungsanordnung 1102 über den Bus 1110 einen Registerwert von der Registerdatei 30. Der Registerwert kann durch den Addierer/Subtrahierer 1210 inkrementiert oder dekrementiert werden oder durch die Maskierungsschaltungsanordnung 1212 maskiert werden und daraufhin durch den Addierer/Subtrahierer 1214 inkrementiert/dekrementiert werden. Die Multiplexer 1216 und 1218 leiten den geänderten Wert zum Bus 1111, um die Registerdatei 30 zu aktualisieren und um ihn an die Adressenberechnungs-Schaltungsanordnung 1104 zu senden.
  • 13 ist ein Blockschaltplan, der nur die Wege durch die Änderungsschaltungsanordnung 1102 und durch die Berechnungsschaltungsanordnung 1104 veranschaulicht, um gemäß einem Aspekt der vorliegenden Erfindung den Stapelzeiger und den Systemstapelzeiger für Duallese- oder Dualschreibtransaktionen gleichzeitig für zwei Datenbusse bereitzustellen. Außer der wie oben diskutierten Vorausinkrementierung/Vorausdekrementierung kann die Nachänderungsschaltungsanordnung 1102 den Stapelzeiger SP inkrementieren oder dekrementieren. Der Mux 1300 wählt entweder den Anwenderstapelzeiger SP oder den Systemstapelzeiger SSP aus und lädt ein Adressenregister über den Bus 1310 entweder auf den C-Bus oder auf den E-Bus. Gleichfalls wählt der Mux 1301 entweder den Anwenderstapelzeiger SP oder den Systemstapelzeiger SSP aus und lädt ein Adressenregister über den Bus 1311 entweder auf den D-Bus oder auf den F-Bus.
  • 14 ist ein Zeitablaufplan, der Einzel- und Duallesetransaktionen und Einzel- und Dualschreibtransaktionen in der Pipeline des Mikroprozessors 100 veranschaulicht. Diese Figur veranschaulicht verschiedene Speicher-Lese-/Schreibtransaktionen, die entweder den C-Bus und den D-Bus für Lesevorgänge oder den E-Bus und den F-Bus für Schreibvorgänge verwenden. Wie zuvor diskutiert wurde, hat die Pipeline sieben Stufen, wobei hier aber nur die Stufen P1-P6 veranschaulicht sind. Jede Zeitlinie 14001414 stellt einen einzelnen Taktzyklus in der Pipeline dar und gibt an, wann verschiedene Speichertransaktionen stattfinden. Die Zeitlinie 1400 veranschaulicht einen Einzellesezyklus, der in der Lesestufe P5 unter Verwendung des D-Busses stattfindet. Es wird angemerkt, dass während der Lesestufe P5 Speicherlesevorgänge während der durch den Zeitschlitz 1420 angegebenen ersten Hälfte des Zyklus ausgeführt werden. Die Zeitlinie 1401 veranschaulicht eine Einzelschreibtransaktion, die in der Ausführungsstufe P6 im Schlitz 1422 stattfindet.
  • Die Zeitlinie 1404 veranschaulicht das Lesen sowohl des Anwenderstapels als auch des Systemstapels in demselben Zyklus unter Verwendung des Stapelzeigers SP und des Systemstapelzeigers SSP wie oben diskutiert. Im Zeitschlitz 1423 wird einer der Stapel unter Verwendung des C-Busses während der letzten Hälfte der Zugriffsstufe P4 vom Datenspeicher 151 gelesen. Der andere Stapel wird unter Verwendung des D-Busses während der ersten Hälfte der Lesephase P5 im Zeitschlitz 1424 vom Datenspeicher 151 gelesen. Vorteilhaft kann unter Verwendung der Adressenschaltungsanordnung, wie sie anhand von 13 beschrieben ist, jeder Stapel in jeder Pipeline-Stufe gelesen werden. Allerdings kann die Adressenschaltungsanordnung in einer anderen Ausführungsform auf eine einfachere Weise realisiert sein, die diese Flexibilität nicht bieten kann.
  • Die Zeitlinie 1407 veranschaulicht das Schreiben/Lesen sowohl des Anwenderstapels auch des Systemstapels in demselben Zyklus unter Verwendung des Stapelzeigers SP und des Systemstapelzeigers SSP wie oben diskutiert. Einer der Stapel wird unter Verwendung des E-Busses während der letzten Hälfte der Ausführungsstufe P6 im Zeitschlitz 1425 in den Datenspeicher 151 geschrieben. Der andere Stapel wird unter Verwendung des F-Busses während der ersten Hälfte der folgenden Ausführungsstufe P6 im Zeitschlitz 1426 in den Datenspeicher 151 geschrieben. Vorteilhaft kann unter Verwendung der Adressenschaltungsanordnung, wie sie anhand von 13 beschrieben ist, jeder Stapel in jeder Pipeline-Stufe geschrieben werden. Allerdings kann die Adressenschaltungsanordnung in einer anderen Ausführungsform auf einfachere Weise realisiert sein, die diese Flexibilität nicht bieten kann.
  • Die Zeitlinie 1402 veranschaulicht ein Einzelschreiben mit einer Verschiebung. Die Zeitlinie 1403 veranschaulicht eine Duallesetransaktion. Die Zeitlinie 1405 veranschaulicht eine Doppellesetransaktion. Die Zeitlinie 1406 veranschaulicht eine Dualschreibtransaktion. Die Zeitlinie 1408 veranschaulicht eine Doppelschreibtransaktion. Die Zeitlinie 1409 veranschaulicht eine Lese-/Änderungs /Schreibtransaktion. Die Zeitlinie 1410 veranschaulicht ein Duallesen und ein Koeffizientenlesen. Die Zeitlinie 1411 veranschaulicht eine Doppellese-/Doppelschreibtransaktion. Die Zeitlinie 1412 veranschaulicht eine Duallese-/Dualschreibtransaktion. Die Zeitlinie 1413 veranschaulicht ein Duallesen/Dualschreiben mit einer Verschiebung. Die Zeitlinie 1414 veranschaulicht ein Doppelschreiben mit einer Dualverschiebung. Verschiedene Ausführungsformen der vorliegenden Erfindung könnten Stapelzugriffe unter Verwendung verschiedener Arten von Speichertransaktionen ausführen, wie sie z. B. durch die Zeitlinien 14001414 veranschaulicht sind.
  • 15 ist eine Tabelle, die Kontextdaten veranschaulicht, die in dem Systemstapel gespeichert sind. Vorteilhaft können in dem Systemstapel zusätzliche Informationen gespeichert werden, während die Software-Kompatibilität mit Prozessoren einer früheren Generation erhalten bleibt, da der Anwenderstapel durch die in dem Systemstapel gespeicherten Informationen nicht beeinflusst wird. Die in Tabelle 7 gegebenen Definitionen erläutern die Felder in dieser Figur.
  • Figure 00320001
    Tabelle 7 – Auf dem Systemstapel gesicherte Kontextinformationen
  • 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 die Oberflächenmontage. Allerdings könnte die integrierte Schaltung andere Konfigurationen, z. B. mehrere Anschlussstifte an einer unteren Oberfläche der Schaltung zur Montage in einem ZIF-Sockel oder tatsächlich irgendeine andere geeignete Konfiguration, enthalten.
  • 17 veranschaulicht eine beispielhafte Realisierung eines Beispiels einer solchen integrierten Schaltung in einer Mobiltelekommunikationsvorrichtung wie etwa in einem Mobiltelephon mit integrierter Tastatur 12 und Anzeige 14. Wie in 17 gezeigt ist, ist das digitale System 10 mit dem Prozessor 100, falls angebracht über einen (nicht gezeigten) Tastaturadapter, mit der Tastatur 12, falls angebracht über einen (nicht gezeigten) Anzeigeadapter, mit der Anzeige 14 und mit einer Hochfrequenzschaltungsanordnung (HF-Schaltungsanordnung) 16 verbunden. Die HF-Schaltungsanordnung 16 ist mit einer Antenne 18 verbunden.
  • Die Herstellung 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 in dem Substrat, um Transistorvorrichtungen auszubilden. Zum Steuern der Anordnung der Störstellen werden Masken ausgebildet. Es werden mehrere Schichten aus leitendem Material und isolierendem Material abgelagert und geätzt, um die verschiedenen Vorrichtungen miteinander zu verbinden. Diese Schritte werden in einer Reinraumumgebung ausgeführt.
  • Ein erheblicher Anteil der Herstellungskosten der Datenverarbeitungsvorrichtung umfasst Tests. Die einzelnen Vorrichtungen werden in Wafer-Form in einen Betriebszustand vorgespannt und auf die Grundbetriebsfunktionalität sondengetestet. Daraufhin wird der Wafer in einzelne Chips getrennt, die als blanker Chip verkauft oder gepackt werden können. Nach der Packung werden die Fertigteile in einen Betriebszustand vorgespannt und auf die Betriebsfunktionalität getestet.
  • Eine alternative Ausführungsform der neuen Aspekte der vorliegenden Erfindung kann weitere Schaltungsanordnungen enthalten, die mit den hier offenbarten Schaltungsanordnungen kombiniert werden, um die Gesamtgatterzahl der kombinierten Funktionen zu verringern. Da der Fachmann auf dem Gebiet die Techniken zur Gatterminimierung kennt, werden die Einzelheiten einer solchen Ausführungsform hier nicht beschrieben.
  • Somit 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 niedrigen Leistungsverbrauch und für die hocheffiziente Ausführung von DSP-Algorithmen wie etwa für drahtlose Telephone sowie von reinen Steueraufgaben optimiert. Der Prozessor enthält eine Befehlspuffereinheit und eine Datenberechnungseinheit zur Ausführung der durch die Befehlspuffereinheit decodierten Befehle. Ein Programmzähler, der einen unteren Programmzählerabschnitt und einen oberen Programmzählerabschnitt aufweist, stellt eine Befehlsadresse bereit, die für den Befehlsspeicher bereitgestellt wird. Ein erster Stapelzeiger ist so betreibbar, dass er in Reaktion auf einen Befehl, z. B. auf einen CALL-Befehl, der durch den Mikroprozessor ausgeführt wird, einen ersten Stapelbereich in einem Datenspeicher adressiert, um einen unteren Programmzählerwert zu sichern. Ein zweiter Stapelzeiger ist so betreibbar, dass er in Reaktion auf die Ausführung des CALL-Befehls einen zweiten Stapelbereich in dem Datenspeicher adressiert, um einen oberen Programmzählerwert zu sichern. Dies erhält vorteilhaft die Software-Code-Kompatibilität von einem Mikroprozessor einer früheren Generation, der Variable über einen Stapel übergibt.
  • Die Begriffe "angelegt", "verbunden" und "Verbindung", wie sie hier verwendet werden, bedeuten elektrisch verbunden einschließlich dort, wo zusätzliche Elemente in dem elektrischen Verbindungsweg sein können.
  • Obgleich die Erfindung anhand veranschaulichender Ausführungsformen beschrieben worden ist, soll diese Beschreibung nicht in einem beschränkenden Sinn verstanden werden. Für den Fachmann auf dem Gebiet gehen anhand dieser Beschreibung verschiedene weitere Ausführungsformen der Erfindung hervor. Somit wird betrachtet, dass die beigefügten Ansprüche irgendwelche solche Änderungen der Ausführungsformen, wie sie im Umfang der Erfindung liegen, umfassen.

Claims (8)

  1. Digitales System, das einen Mikroprozessor (100) aufweist, der umfasst: eine Befehlspuffereinheit (106), die so betreibbar ist, dass sie von einem Befehlsspeicher geholte Befehle decodiert; eine Datenberechnungseinheit (112), die die durch die Befehlspuffereinheit decodierten Befehle ausführt; einen Programmzähler, der einen ersten Programmzählerabschnitt (1000) und einen verbleibenden Programmzählerabschnitt (1001) besitzt und so betreibbar ist, dass er eine Befehlsadresse bereitstellt, die für den Befehlsspeicher bereitgestellt wird; einen ersten Stapelzeiger (902), der so betreibbar ist, dass er einen ersten Stapelbereich in einem Datenspeicher (910) adressiert, um in Reaktion auf einen von dem Mikroprozessor ausgeführten ersten Befehl einen den ersten Programmzählerabschnitt (1000) repräsentierenden ersten Wert zu sichern; und einen zweiten Stapelzeiger (904), der so betreibbar ist, dass er einen zweiten Stapelbereich (911) in dem Datenspeicher (900) adressiert, um in Reaktion auf die Ausführung des ersten Befehls einen den verbleibenden Programmzählerabschnitt (1001) repräsentierenden zweiten Wert zu sichern.
  2. Digitales System nach Anspruch 1, bei dem die Datenberechnungseinheit so betreibbar ist, dass sie in Reaktion auf die Ausführung eines zweiten Befehls einen ersten variablen Wert in dem ersten Stapelbereich in der Nähe des ersten Programmzählerwertes unter Verwendung einer Adresse relativ zu dem ersten Stapelzeiger in Relation zu dem ersten Stapelzeiger speichert, so dass die Adresse relativ zu dem ersten Stapelzeiger durch den zweiten Programmzählerwert, der in dem zweiten Stapelbereich gespeichert ist, nicht beeinflusst wird.
  3. Digitales System nach einem vorhergehenden Anspruch, das ferner einen mit dem Befehlspuffer verbundenen Befehlsspeicher zum Halten mehrerer Befehle und einen mit der Datenberechnungseinheit verbundenen Datenspeicher zum Halten des ersten Stapelbereichs und des zweiten Stapelbereichs umfasst
  4. Digitales System nach einem vorhergehenden Anspruch, das ein Zellentelephon ist und ferner umfasst: eine integrierte Tastatur (12), die mit dem Prozessor über einen Tastaturadapter verbunden ist; eine Anzeige (14), die mit dem Prozessor über einen Anzeigeadapter 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.
  5. Verfahren zum Betreiben eines digitalen Systems, das die folgenden Schritte umfasst: Ausführen mehrerer Befehle in einem Prozessorkern, wobei die Befehle in Reaktion auf einen Programmzähler von einem dem Prozessorkern zugeordneten Befehlsspeicher geholt werden; Bilden eines ersten Stapelbereichs (910) zum Halten einer Mehrzahl von Datenwerten in einem dem Prozessorkern zugeordneten Datenspeicher (900) durch Halten eines ersten Stapelzeigers (902); Bilden eines zweiten Stapelbereichs (911) getrennt von dem ersten Stapelbereich (910) in dem Datenspeicher (900), um eine zweite Mehrzahl von Datenwerten durch Halten eines zweiten Stapelzeigers (904) zu speichern; Speichern eines ersten Wertes, der einen ersten Abschnitt eines Programmzählers (1000) in dem ersten Stapelbereich (910) repräsentiert, in Reaktion auf die Ausführung eines ersten Befehls in dem Prozessorkern; und Speichern eines zweiten Wertes, der einen verbleibenden Abschnitt des Programmzählers (1001) repräsentiert, in dem zweiten Stapelbereich (911) in Reaktion auf die Ausführung des ersten Befehls.
  6. Verfahren nach Anspruch 5, das ferner den Schritt umfasst, bei dem in Reaktion auf die Ausführung eines zweiten Befehls ein erster Argumentwert in dem ersten Stapelbereich in der Nähe des ersten Programmzählerwertes unter Verwendung einer Adresse relativ zu dem ersten Stapelzeiger in Relation zu dem ersten Stapelzeiger gespeichert wird, so dass die Adresse relativ zu dem ersten Stapelzeiger durch den zweiten Programmzählerwert, der in dem zweiten Stapelbereich gespeichert ist, nicht beeinflusst wird.
  7. Verfahren nach Anspruch 5 oder Anspruch 6, das ferner den Schritt umfasst, bei dem in Reaktion auf den zweiten Befehl ein Kontextdatenwert in der Nähe des zweiten Programmzählerwertes unter Verwendung einer Adresse relativ zu dem zweiten Stapelzeiger in Relation zu dem zweiten Stapelzeiger gespeichert wird, so dass eine auf den ersten Stapelzeiger bezogene Adresse relativ zu dem Stapelzeiger durch den Kontextdatenwert, der in dem zweiten Stapelbereich gespeichert ist, nicht beeinflusst wird.
  8. Verfahren nach Anspruch 5 oder Anspruch 6, das ferner den Schritt umfasst, bei dem in Reaktion auf die Ausführung einer Unterbrechung der Kontextdatenwert in der Nähe des zweiten Programmzählerwertes unter Verwendung einer Adresse relativ zu dem zweiten Stapelzeiger in Relation zu dem zweiten Stapelzeiger gespeichert wird, so dass eine auf den ersten Stapelzeiger bezogene Adresse relativ zu dem Stapelzeiger durch den Kontextdatenwert, der in dem zweiten Stapelbereich gespeichert ist, nicht beeinflusst wird.
DE69932481T 1998-10-06 1999-03-08 Kellerzeigerverwaltung Expired - Lifetime DE69932481T2 (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
DE69932481D1 DE69932481D1 (de) 2006-09-07
DE69932481T2 true DE69932481T2 (de) 2007-02-15

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
DE69942080T Expired - Lifetime DE69942080D1 (de) 1998-10-06 1999-03-08 Speicherzugriff mit Bytequalifizierer
DE69942482T Expired - Lifetime DE69942482D1 (de) 1998-10-06 1999-03-08 Cachespeicherkohärenz während der Emulation
DE69926458T Expired - Lifetime DE69926458T2 (de) 1998-10-06 1999-03-08 Vorrichtung und Verfahren für einen Software-Haltepunkt während eines Verzögerungsschlitzes
DE69927456T Active DE69927456T8 (de) 1998-10-06 1999-03-08 Verwaltung eines FIFO zur Ablaufverfolgung

Family Applications After (4)

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

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
US6401167B1 (en) * 1997-10-10 2002-06-04 Rambus Incorporated High performance cost optimized memory
WO1999019805A1 (en) 1997-10-10 1999-04-22 Rambus Incorporated Method and apparatus for two step memory write operations
EP1228440B1 (de) 1999-06-10 2017-04-05 PACT XPP Technologies AG 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
US7174014B2 (en) * 2000-05-05 2007-02-06 Teleputers, Llc Method and system for performing permutations with bit permutation instructions
US6665795B1 (en) * 2000-10-06 2003-12-16 Intel Corporation Resetting a programmable processor
WO2002046917A1 (en) * 2000-12-07 2002-06-13 Koninklijke Philips Electronics N.V. Digital signal processing apparatus
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
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
US7757094B2 (en) * 2001-02-27 2010-07-13 Qualcomm Incorporated Power management for subscriber identity module
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
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
US20020184566A1 (en) 2001-06-01 2002-12-05 Michael Catherwood Register pointer trap
ATE432499T1 (de) * 2001-06-29 2009-06-15 Texas Instruments Inc Verfahren zur verbesserung der sichtbarkeit von berechnung der effektiven adressen in pipelinearchitektur
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
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
US20030188143A1 (en) * 2002-03-28 2003-10-02 Intel Corporation 2N- way MAX/MIN instructions using N-stage 2- way MAX/MIN blocks
US7278136B2 (en) * 2002-07-09 2007-10-02 University Of Massachusetts Reducing processor energy consumption using compile-time information
US6970985B2 (en) 2002-07-09 2005-11-29 Bluerisc Inc. Statically speculative memory accessing
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
US7599665B2 (en) * 2003-12-19 2009-10-06 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
WO2006084375A1 (en) * 2005-02-11 2006-08-17 Universal Data Protection Corporation Method and system for microprocessor data security
ES2675734T3 (es) * 2005-04-07 2018-07-12 Orange Procedimiento de sincronización entre una operación de procesamiento de reconocimiento vocal y una acción de activación de dicho procesamiento
ATE367607T1 (de) * 2005-05-02 2007-08-15 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 株式会社メガチップス 記憶装置および情報処理装置
KR20080094005A (ko) * 2006-01-10 2008-10-22 브라이트스케일, 인크. 병렬 프로세싱 시스템에서 멀티미디어 데이터의 서브블록들을 프로세싱하기 위한 방법 및 장치
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
US20080059764A1 (en) * 2006-09-01 2008-03-06 Gheorghe Stefan Integral parallel machine
US20080059467A1 (en) * 2006-09-05 2008-03-06 Lazar Bivolarski Near full motion search algorithm
JP2008090390A (ja) * 2006-09-29 2008-04-17 Matsushita Electric Ind Co Ltd マイコンデバッグシステムおよびマイクロコンピュータ
US7953958B2 (en) * 2006-09-29 2011-05-31 Mediatek Inc. Architecture for joint detection hardware accelerator
US7949925B2 (en) * 2006-09-29 2011-05-24 Mediatek Inc. Fixed-point implementation of a joint detector
CN101663829B (zh) * 2006-09-29 2013-02-27 联发科技股份有限公司 联合检测硬件加速器的架构
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
US20130339680A1 (en) 2012-06-15 2013-12-19 International Business Machines Corporation Nontransactional store instruction
US9448796B2 (en) 2012-06-15 2016-09-20 International Business Machines Corporation Restricted instructions in transactional execution
US8682877B2 (en) 2012-06-15 2014-03-25 International Business Machines Corporation Constrained transaction execution
US9361115B2 (en) 2012-06-15 2016-06-07 International Business Machines Corporation Saving/restoring selected registers in transactional processing
US9384004B2 (en) 2012-06-15 2016-07-05 International Business Machines Corporation Randomized testing within transactional execution
US9348642B2 (en) 2012-06-15 2016-05-24 International Business Machines Corporation Transaction begin/end instructions
US9336046B2 (en) 2012-06-15 2016-05-10 International Business Machines Corporation Transaction abort processing
US8880959B2 (en) 2012-06-15 2014-11-04 International Business Machines Corporation Transaction diagnostic block
US9317460B2 (en) 2012-06-15 2016-04-19 International Business Machines Corporation Program event recording within a transactional environment
US10437602B2 (en) 2012-06-15 2019-10-08 International Business Machines Corporation Program interruption filtering in transactional execution
US9442737B2 (en) 2012-06-15 2016-09-13 International Business Machines Corporation Restricting processing within a processor to facilitate transaction completion
US9367323B2 (en) 2012-06-15 2016-06-14 International Business Machines Corporation Processor assist facility
US8966324B2 (en) 2012-06-15 2015-02-24 International Business Machines Corporation Transactional execution branch indications
US9436477B2 (en) 2012-06-15 2016-09-06 International Business Machines Corporation Transaction abort instruction
US8688661B2 (en) 2012-06-15 2014-04-01 International Business Machines Corporation Transactional processing
US9740549B2 (en) 2012-06-15 2017-08-22 International Business Machines Corporation Facilitating transaction completion subsequent to repeated aborts of the transaction
US9772854B2 (en) 2012-06-15 2017-09-26 International Business Machines Corporation Selectively controlling instruction execution in transactional processing
US9298459B2 (en) * 2012-07-18 2016-03-29 International Business Machines Corporation Managing register pairing
US9323529B2 (en) 2012-07-18 2016-04-26 International Business Machines Corporation Reducing register read ports for register pairs
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
CN108139870B (zh) * 2015-10-09 2021-08-06 奥奇系统公司 模块化设备和操作方法
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
US10552130B1 (en) 2017-06-09 2020-02-04 Azul Systems, Inc. Code optimization conversations 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
CN117539705A (zh) * 2024-01-10 2024-02-09 深圳鲲云信息科技有限公司 片上系统的验证方法、装置、系统及电子设备

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
JPH10177482A (ja) * 1996-10-31 1998-06-30 Texas Instr Inc <Ti> マイクロプロセッサおよび動作方法
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
DE69926458T2 (de) 2006-06-01
DE69926458D1 (de) 2005-09-08
DE69942080D1 (de) 2010-04-15
US6658578B1 (en) 2003-12-02
DE69927456T2 (de) 2006-06-22
DE69942482D1 (de) 2010-07-22
DE69927456D1 (de) 2005-11-03
DE69927456T8 (de) 2006-12-14
DE69932481D1 (de) 2006-09-07
EP0992916A1 (de) 2000-04-12

Similar Documents

Publication Publication Date Title
DE69932481T2 (de) Kellerzeigerverwaltung
DE69233412T2 (de) Vorrichtung und Rechnerprogrammprodukt zur Ausführung von Verzweigungsbefehlen
DE19735350B4 (de) Vektorprozessor zum Ausführen paralleler Operationen und Verfahren hierfür
DE19735348B4 (de) Vektorprozessor zur Einzelbefehl-Mehrdaten-Verarbeitung unter Verwendung von mehreren Bänken von Vektorregistern und zugehöriges Verfahren zum Betreiben desselben
DE69627807T2 (de) Datenprozessor zum gleichzeitigen Dataladen und Durchführung einer multiplizier-addier Operation
DE69907955T2 (de) Globale und locale registersegmentierung in einem vliw prozessor
DE69909829T2 (de) Vielfadenprozessor für faden-softwareanwendungen
DE69631778T2 (de) Flexible implementierung eines systemverwaltungsmodus in einem prozessor
DE102010051476B4 (de) Addierbefehle, um drei Quelloperanden zu addieren
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
EP0992906B1 (de) Vorrichtung und Verfahren für einen Software-Haltepunkt während eines Verzögerungsschlitzes
DE112005000706B4 (de) Verfahren und System zum Bereitstellen von Multi-Threading auf Nutzerebene
DE69433339T2 (de) Lade-/Speicherfunktionseinheiten und Datencachespeicher für Mikroprozessoren
DE69633166T2 (de) Integrierter schaltkreis mit mehreren funktionen und gemeinsamer verwendung mehrerer interner signalbusse zur verteilung der steuerung des buszugriffes und der arbitration
DE19581873C2 (de) Prozessor zum Ausführen von Schiebeoperationen an gepackten Daten
DE19735871A1 (de) Verfahren zum effizienten Sicherstellen und Wiederherstellen von Kontext in einer Multitasking-Rechensystemumgebung
DE102015002582A1 (de) Architekturübergreifendes Kompatibilitätsmodul, um zuzulassen, dass ein Codemodul einer Architektur ein Bibliotheksmodul einer anderen Architektur verwendet
DE19735870A1 (de) System und Verfahren zum Verarbeiten von Unterbrechungs- und Ausnahmeereignissen in einer asymmetrischen Mehrprozessorarchitektur
DE69633474T2 (de) Adressierungsverfahren zur nicht-sequentiellen Ausführung von Ladebefehlen hinsichtlich Speicherungsbefehlen
DE10297581T5 (de) Lade/Übertrage- und Duplizier-Anweisungen für einen Prozessor
DE3741850A1 (de) Ausfuehrungseinheit fuer einen i/o-prozessor
DE2755273A1 (de) Mikroprozessor
DE19735869A1 (de) System und Verfahren zum Verarbeiten von Softwareunterbrechungen durch Parameterübergabe
DE2517276A1 (de) Datenverarbeitungssystem

Legal Events

Date Code Title Description
8364 No opposition during term of opposition