DE69927456T2 - Verwaltung eines FIFO zur Abalufverfolgung - Google Patents

Verwaltung eines FIFO zur Abalufverfolgung Download PDF

Info

Publication number
DE69927456T2
DE69927456T2 DE69927456T DE69927456T DE69927456T2 DE 69927456 T2 DE69927456 T2 DE 69927456T2 DE 69927456 T DE69927456 T DE 69927456T DE 69927456 T DE69927456 T DE 69927456T DE 69927456 T2 DE69927456 T2 DE 69927456T2
Authority
DE
Germany
Prior art keywords
instruction
command
address
tracking
sequence
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
DE69927456T
Other languages
English (en)
Other versions
DE69927456D1 (de
DE69927456T8 (de
Inventor
Mark L. Buser
Gilbert Laurenti (Nmi)
N.M Ganesh
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Texas Instruments Inc
Original Assignee
Texas Instruments Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Texas Instruments Inc filed Critical Texas Instruments Inc
Publication of DE69927456D1 publication Critical patent/DE69927456D1/de
Application granted granted Critical
Publication of DE69927456T2 publication Critical patent/DE69927456T2/de
Publication of DE69927456T8 publication Critical patent/DE69927456T8/de
Active legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/76Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data
    • G06F7/764Masking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/01Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/607Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers number-of-ones counters, i.e. devices for counting the number of input lines set to ONE among a plurality of input lines, also called bit counters or parallel counters
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/74Selecting or encoding within a word the position of one or more bits having a specified value, e.g. most or least significant one or zero detection, priority encoders
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/76Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data
    • G06F7/762Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data having at least two separately controlled rearrangement levels, e.g. multistage interconnection networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30018Bit or string instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30083Power or thermal control instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/3013Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30149Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/321Program or instruction counter, e.g. incrementing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/325Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/355Indexed addressing
    • G06F9/3552Indexed addressing using wraparound, e.g. modulo or circular addressing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3856Reordering of instructions, e.g. using queues or age tags
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • G06F9/3879Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
    • G06F9/3891Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute organised in groups of units sharing resources, e.g. clusters
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K13/00Conveying record carriers from one station to another, e.g. from stack to punching mechanism
    • G06K13/02Conveying record carriers from one station to another, e.g. from stack to punching mechanism the record carrier having longitudinal dimension comparable with transverse dimension, e.g. punched card
    • G06K13/08Feeding or discharging cards
    • G06K13/0806Feeding or discharging cards using an arrangement for ejection of an inserted card
    • G06K13/0825Feeding or discharging cards using an arrangement for ejection of an inserted card the ejection arrangement being of the push-push kind

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Debugging And Monitoring (AREA)
  • 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 digitale Mikroprozessoren und insbesondere auf die Überwachung des Betriebs von digitalen Mikroprozessoren.
  • HINTERGRUND DER ERFINDUNG
  • Mikroprozessoren sind Mehrzweckprozessoren, die hohe Befehlsdurchsätze erfordern, um die darauf ablaufende Software auszuführen, wobei sie, abhängig von den beteiligten speziellen Software-Anwendungen, einen weiten Bereich von Verarbeitungsanforderungen besitzen können. Ein Unterbrechungs-Reaktionsmechanismus in einem Mikroprozessor enthält typischerweise eine Unterbrechungsvektortabelle, um den Ort der Unterbrechungs-Dienstprogramme zu identifizieren.
  • Es sind viele verschiedene Typen von Prozessoren bekannt, von denen die Mikroprozessoren nur ein Beispiel sind. Digitale Signalprozessoren (DSPs) werden z. B. weit und breit verwendet, insbesondere für spezifische Anwendungen, wie z. B. mobile Verarbeitungsanwendungen. Die DSPs sind typischerweise konfiguriert, um die Leistung der betroffenen Anwendungen zu optimieren, wobei sie spezialisiertere Ausführungseinheiten und Befehlssätze verwenden, um dies zu erreichen. Insbesondere, aber nicht ausschließlich, ist es bei Anwendungen, wie z. B. Mobiltelekommunikationsanwendungen, erwünscht, eine ständig zunehmende DSP-Leistung bereitzustellen, während die Leistungsaufnahme so niedrig wie möglich gehalten wird.
  • In der Entwicklung der digitalen Systeme, die derartige Prozessoren enthalten, ist die Verfolgung bekannt, sodass der Systembetrieb überwacht werden kann. Eine Anordnung, um dies zu erreichen, ist im US-Patent 5.724.505 beschrieben, in dem Befehle und Adressen für Diskontinuitäten in einem FIFO-Puffer gespeichert sind. Die Befehls- und Adressendaten werden codiert, um FIFO-Raum zu sparen.
  • Die vorliegende Erfindung schafft Verfahren und Vorrichtungen, wie sie in den Ansprüchen dargelegt sind.
  • KURZBESCHREIBUNG DER ZEICHNUNG
  • Besondere Ausführungsformen gemäß der Erfindung werden nun lediglich beispielhaft und unter Bezugnahme auf die beigefügte Zeichnung beschrieben, in der gleiche Bezugszeichen verwendet werden, um gleiche Teile zu bezeichnen, und in der sich die Figuren auf den Prozessor nach 1 beziehen, wenn es nicht anders angegeben ist, und in der:
  • 1 ein schematischer Blockschaltplan eines digitalen Systems ist, das einen Mikroprozessor gemäß einer Ausführungsform der Erfindung enthält;
  • 2 eine schematische Darstellung des Prozessorkerns nach 1 ist;
  • 3 ein ausführlicherer schematischer Blockschaltplan der verschiedenen Ausführungseinheiten des Prozessorkerns ist;
  • 4 eine schematische Darstellung einer Befehlspufferwarteschlange und eines Befehlsdecodierers des Prozessors ist;
  • 5 eine schematische Darstellung des Prozessorkerns ist, um die Funktionsweise der Pipeline des Prozessors zu erklären;
  • 6 ein Blockschaltplan des Prozessors ist, der eine mit dem Speicher verbundene Speichermanagementeinheit veranschaulicht;
  • 7 die vereinheitlichte Struktur der Programm- und Daten-Speicherräume des Prozessors zeigt;
  • 8 ein Blockschaltplan ist, der ein digitales System mit dem Prozessor nach 1 in Kombination mit einem Verfolgungs-FIFO gemäß den Aspekten der vorliegenden Erfindung veranschaulicht;
  • 9 ein Blockschaltplan des Verfolgungs-FIFO nach 8 ist;
  • 10 ein Blockschaltplan der externen Speicherschnittstelle nach 8 ist;
  • 11 ein Taktdiagramm ist, das die Taktung für die Verfolgungssignale veranschaulicht, die von der externen Speicherschnittstelle nach 9 ausgegeben werden;
  • 12 ein Taktdiagramm ist, das die Speicherzyklentaktung veranschaulicht, wobei die Zwischenspeicherung in einem Cache und die Verfolgung gesperrt sind;
  • 13 ein Taktdiagramm ist, das die Speicherzyklentaktung veranschaulicht, wobei die Zwischenspeicherung in einem Cache gesperrt ist und die Verfolgung freigegeben ist;
  • 14 ein Blockschaltplan ist, der das Verschmelzen der Steuersignale mit den Einstellungen des Verfolgungssteuerregisters veranschaulicht;
  • 15 ein Blockschaltplan ist, der veranschaulicht, wie einzelne Register im Verfolgungs-FIFO adressiert werden, während Verfolgungsinformationen geschrieben werden;
  • 16 ein Blockschaltplan ist, der veranschaulicht, wie die Verfolgungsregister für den R-Bus-Lesezugriff adressiert werden;
  • 17 eine konzeptionelle Ansicht einer Diskontinuität ist, die durch den FIFO nach 9 verfolgt worden ist;
  • 18 die Bitzuordnung eines Eintrags eines "Diskontinuitätsereignisses" veranschaulicht, der im Verfolgungs-FIFO gespeichert ist;
  • 19 die Bitzuordnung des Eintrags eines "letzten PC-Ereignisses" veranschaulicht, der im Verfolgungs-FIFO gespeichert ist;
  • 20 eine konzeptionelle Ansicht der Bearbeitung eines Blockwiederholungsbefehls im Verfolgungs-FIFO nach 9 ist;
  • 21 eine konzeptionelle Ansicht der Bearbeitung eines verschachtelten Blockwiederholungsbefehls im Verfolgungs-FIFO nach 9 ist;
  • 22 eine konzeptionelle Ansicht der Bearbeitung eines Einzelwiederholungsbefehls im Verfolgungs-FIFO nach 9 ist;
  • 23 ein Blockschaltplan ist, der eine alternative Ausführungsform eines digitalen Systems mit dem Prozessor nach 1 gemäß den Aspekten der vorliegenden Erfindung veranschaulicht;
  • 24 eine schematische Darstellung einer integrierten Schaltung ist, die den Prozessor enthält; und
  • 25 eine schematische Darstellung einer Telekommunikationsvorrichtung ist, die den Prozessor nach 1 enthält.
  • BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSFORMEN
  • Obwohl die Erfindung besondere Anwendung in digitalen Signalprozessoren (DSPs) findet, die z. B. in einer anwendungsspezifischen integrierten Schaltung (ASIC) implementiert sind, findet sie außerdem Anwendung in anderen Formen von Prozessoren.
  • Die Grundarchitektur eines Beispiels eines Prozessors gemäß der Erfindung wird nun beschrieben. Der Prozessor 100 ist ein programmierbarer Festkomma-DSP-Kern mit variabler Befehlslänge (8 Bits bis 48 Bits), der sowohl eine hohe Codedichte als auch eine leichte Programmierung bietet. Die Architektur und der Befehlssatz sind für eine niedrigere Leistungsaufnahme und die Ausführung mit hohem Wirkungsgrad sowohl von DSP-Algorithmen als auch von reinen Steueraufgaben, wie z. B. für schnurlose Telephone, optimiert. Der Prozessor 100 enthält Emulations- und Codeaustest-Einrichtungen.
  • 1 ist ein schematischer Überblick über ein digitales System 10 gemäß einer Ausführungsform der vorliegenden Erfindung. Das digitale System enthält einen Prozessor 100 und eine Prozessor-Hauptplatine 20. In einem speziellen Bei spiel der Erfindung ist das digitale System ein System 10 eines digitalen Signalprozessors, das in einer anwendungsspezifischen integrierten Schaltung (ASIC) implementiert ist. Im Interesse der Klarheit zeigt 1 nur diejenigen Abschnitte des Mikroprozessors 100, die für ein Verständnis einer Ausfihrungsform der vorliegenden Erfindung relevant sind. Die Einzelheiten der allgemeinen Konstruktion für DSPs sind wohlbekannt, wobei sie leicht anderswo gefunden werden können. US-Patent 5.072.418, erteilt an Frederick Boutaud u. a., beschreibt z. B. einen DSP ausführlich. US-Patent 5.329.471, erteilt an Gary Swoboda u. a., beschreibt ausführlich, wie ein DSP zu prüfen und zu emulieren ist. Einzelheiten der Abschnitte des Mikroprozessors 100, die für eine Ausfihrungsform der vorliegenden Erfindung relevant sind, werden im Folgenden ausreichend ausführlich erklärt, um einem Durchschnittsfachmann auf dem Gebiet der Mikroprozessoren zu ermöglichen, die Erfindung auszuführen und zu verwenden.
  • Wie in 1 gezeigt ist, bildet der Prozessor 100 eine Zentraleinheit (CPU) mit einem Prozessorkern 102 und einer Speicherschnittstelleneinheit 104, um den Prozessorkern 102 mit den Speichereinheiten außerhalb des Prozessorkerns 102 zu verbinden.
  • Die Prozessor-Hauptplatine 20 umfasst einen Hauptplatinen-Bus 22, mit dem die Speichermanagementeinheit 104 des Prozessors verbunden ist. Mit dem Hauptplatinen-Bus 22 sind außerdem ein Befehlsspeicher 24, die Peripherievorrichtungen 26 und eine externe Schnittstelle 28 verbunden.
  • Es ist klar, dass in anderen Beispielen die Erfindung unter Verwendung anderer Konfigurationen und/oder anderer Technologien implementiert sein könnte. Der Prozessor 100 könnte z. B. eine erste integrierte Schaltung bilden, wobei die Prozessor-Hauptplatine 20 davon separat ist. Der Prozessor 100 könnte z. B. ein DSP sein, der von einer Hauptplatine 20 separat ist und auf einer Hauptplatine 20 angebracht ist, die einen Hauptplatinen-Bus 22, die Peripherieschnittstellen und die externen Schnittstellen unterstützt. Der Prozessor 100 könnte z. B. anstatt ein DSP ein Mikroprozessor sein, wobei er in anderen Technologien als der ASIC-Technologie implementiert sein könnte. Der Prozessor oder ein Prozessor, der den Prozessor enthält, könnte in einer oder mehreren integrierten Schaltungen implementiert sein.
  • 2 veranschaulicht die Grundstruktur einer Ausführungsform des Prozessorkerns 102. Wie veranschaulicht ist, enthält diese Ausführungsform des Prozessorkerns 102 vier Elemente, nämlich eine Befehlspuffereinheit (I-Einheit) 106 und drei Ausführungseinheiten. Die Ausführungseinheiten sind eine Programmablaufeinheit (P-Einheit) 108, eine Adressendaten-Ablaufeinheit (A-Einheit) 110 und eine Datenrecheneinheit (D-Einheit) 112, um die von der Befehlspuffereinheit (I-Einheit) 106 decodierten Befehle auszuführen und um den Programmablauf zu steuern und zu überwachen.
  • 3 veranschaulicht die P-Einheit 108, die A-Einheit 110 und die D-Einheit 112 des Prozessorkerns 102 ausführlicher, wobei sie die Busstruktur zeigt, die die verschiedenen Elemente des Prozessorkerns 102 verbindet. Die P-Einheit 108 enthält z. B. die Schleifen-Steuerschaltungsanordnung, die GoTo/Verzweigungs-Steuerschaltungsanordnung und verschiedene Register, um den Programmablauf zu steuern und zu überwachen, wie z. B. die Wiederholungszählerregister und die Unterbrechungsmaskierungs-, Merker- oder Vektor-Register. Die P-Einheit 108 ist an die universellen Datenschreibbusse (EB, FB) 130, 132, die universellen Datenlesebusse (CB, DB) 134, 136 und einen Koeffizientenprogrammbus (BB) 138 gekoppelt. Außerdem ist die P-Einheit 108 über verschiedene Busse, die als CSR, ACB und RGD bezeichnet sind, an die Untereinheiten innerhalb der A-Einheit 110 und der D-Einheit 112 gekoppelt.
  • Wie in 3 veranschaulicht ist, enthält in der vorliegenden Ausführungsform die A-Einheit 110 eine Registerdatei 30, eine Datenadressenerzeugungs-Untereinheit (DAGEN) 32 und eine Arithmetik- und Logikeinheit (ALU) 34. Die Registerdatei 30 der A-Einheit enthält verschiedene Register, unter denen sich die 16-Bit-Zeigerregister (AR0, ..., AR7) und die Datenregister (DR0, ..., DR3) befinden, die außerdem sowohl für den Datenfluss als auch die Adressenerzeugung verwendet werden können. Außerdem enthält die Registerdatei 16-Bit-Umlaufspeicherregister und 7-Bit-Datenseitenregister. Sowohl die universellen Busse (EB, FB, CB, DB) 130, 132, 134, 136 als auch ein Koeffizientendatenbus 140 und ein Koeffizientenadressenbus 142 sind an die Registerdatei 30 der A-Einheit gekoppelt. Die Registerdatei 30 der A-Einheit ist durch die einseitig gerichteten Busse 144 bzw. 146, die in entgegengesetzten Richtungen arbeiten, an die DAGEN-Einheit 32 der A-Einheit gekoppelt. Die DAGEN-Einheit 32 enthält 16-Bit-X/Y-Register und Koeffizienten- und Stapelzeiger-Register, z. B. zum Steuern und Überwachen der Adressenerzeugung innerhalb des Prozessors 100.
  • Die A-Einheit 110 umfasst außerdem die ALU 34, die sowohl eine Schieberfunktion als auch die Funktionen enthält, die typischerweise einer ALU zugeordnet sind, wie z. B. Addition, Subtraktion und die logischen UND-, ODER- und XOR-Operatoren. Die ALU 34 ist außerdem an die universellen Busse (EB, DB) 130, 136 und an einen Befehlskonstanten-Datenbus (KDB) 140 gekoppelt. Die ALU der A-Einheit ist durch einen PDA-Bus an die P-Einheit 108 gekoppelt, um die Registerinhalte von der Registerdatei der P-Einheit 108 zu empfangen. Die ALU 34 ist außerdem durch die Busse RGA und RGB, um die Inhalte der Adressen- und Datenregister zu empfangen, und durch einen Bus RGD, um die Adressen- und Datenregister in der Registerdatei 30 weiterzuleiten, an die Registerdatei 30 der A-Einheit gekoppelt.
  • Gemäß der veranschaulichten Ausführungsform der Erfindung enthält die D-Einheit 112 eine Registerdatei 36 der D-Einheit, eine ALU 38 der D-Einheit, eine Verschiebeeinrichtung 40 der D-Einheit und zwei Multiplikations- und Akkumulationseinheiten (MAC1, MAC2) 42 und 44. Die Registerdatei 36 der D-Einheit, die ALU 38 der D-Einheit und die Verschiebeeinrichtung 40 der D-Einheit sind an die Busse (EB, FB, CB, DB und KDB) 130, 132, 134, 136 und 140 gekoppelt, während die MAC-Einheiten 42 und 44 an die Busse (CB, DB, KDB) 134, 136, 140 und den Datenlesebus (BB) 144 gekoppelt sind. Die Registerdatei 36 der D-Einheit enthält 40-Bit-Akkumulatoren (AC0, ..., AC3) und ein 16-Bit-Übergangsregister. Die D-Einheit 112 kann außer den 40-Bit-Akkumulatoren außerdem den 16-Bit-Zeiger und die Datenregister in der A-Einheit 110 als die Quell- oder Zielregister verwenden. Die Registerdatei 36 der D-Einheit empfängt Daten über die Akkumulator-Schreibbusse (ACW0, ACW1) 146, 148 von der ALU 38 der D-Einheit und den MACs 1 u. 2 42, 44 und über den Akkumulator-Schreibbus (ACW1) 148 von der Verschiebeeinrichtung 40 der D-Einheit. Die Daten werden aus den Akkumulatoren der Registerdatei der D-Einheit über die Akkumulator-Lesebusse (ACR0, ACR1) 150, 152 in die ALU 38 der D-Einheit, die Verschiebeeinrichtung 40 der D-Einheit und die MACs 1 u. 2 42, 44 gelesen. Die ALU 38 der D-Einheit und die Verschiebeeinrichtung 40 der D-Einheit sind außerdem über verschiedene Busse, die als EFC, DRB, DR2 und ACB bezeichnet sind, an die Untereinheiten der A-Einheit 108 gekoppelt.
  • In 4 ist eine Befehlspuffereinheit 106 gemäß der vorliegenden Ausführungsform veranschaulicht, die eine 32-Wort-Befehlspuffer-Warteschlange (IBQ) 502 umfasst. Die IBQ 502 umfasst 32 × 16-Bit-Register 504, die logisch in 8-Bit-Bytes 506 unterteilt sind. Die Befehle kommen über den 32-Bit-Programmbus (PB) 122 an der IBQ 502 an. Die Befehle werden in einem 32-Bit-Zyklus in die Stelle geholt, auf die durch den lokalen Schreibprogrammzähler (LWPC) 532 gezeigt wird. Der LWPC 532 ist in einem Register enthalten, das sich in der P-Einheit 108 befindet. Die P-Einheit 108 enthält außerdem das Register des lokalen Leseprogrammzählers (LRPC) 536 und die Register des Schreibprogrammzählers (WPC) 530 und des Leseprogrammzählers (RPC) 534. Der LRPC 536 zeigt auf die Stelle in der IBQ 502 des nächsten Befehls oder der nächsten Befehle, der/die in den/die Befehlsdecodierer 512 und 514 zu laden sind. Das heißt, der LRPC 534 zeigt auf die Stelle in der IBQ 502 des Befehls, der gegenwärtig zu den Decodierern 512, 514 abgefertigt wird. Der WPC zeigt auf die Adresse im Programmspeicher des Beginns der nächsten 4 Bytes des Befehlscodes für die Pipeline. Für jeden Holvorgang in die IBQ werden die nächsten 4 Bytes vom Programmspeicher ungeachtet der Befehlsgrenzen geholt. Der RPC 534 zeigt auf die Adresse im Programmspeicher des Befehls, der gegenwärtig zu dem/den Decodierer/n 512/514 abgefertigt wird.
  • In dieser Ausführungsform werden die Befehle in einem 48-Bit-Wort gebildet und werden über die Multiplexer 520 und 521 über einen 48-Bit-Bus 516 in die Befehlsdecodierer 512, 514 geladen. Es wird für einen Durchschnittsfachmann auf dem Gebiet offensichtlich sein, dass die Befehle in Wörtern gebildet werden können, die nicht 48 Bits umfassen, und dass die vorliegende Erfindung nicht auf die oben beschriebene spezifische Ausführungsform eingeschränkt ist.
  • Für die gegenwärtig bevorzugte 48-Bit-Wortgröße kann der Bus 516 ein Maximum von 2 Befehlen, einen pro Decodierer, während irgendeines Befehlszyklus für die parallele Ausführung laden. Die Kombination der Befehle kann in irgendeiner Kombination der Formate, 8, 16, 24, 32, 40 und 48 Bits erfolgen, die über den 48-Bit-Bus passen. Der Decodierer 1, 512, wird gegenüber dem Decodierer 2, 514 bevorzugt geladen, falls nur ein Befehl während eines Zyklus geladen werden kann. Die entsprechenden Befehle werden dann zu den entsprechenden Funktionseinheiten weitergeleitet, um sie auszuführen und um auf die Daten zuzugreifen, für die der Befehl oder die Operation auszuführen ist. Bevor die Befehle zu den Befehlsdecodierern weitergeleitet werden, werden sie auf die Bytegrenzen ausgerichtet. Die Ausrichtung wird basierend auf dem für den vorhergehenden Befehl während seiner Decodierung abgeleiteten Format ausgeführt. Die der Ausrichtung der Befehle auf die Bytegrenzen zugeordnete Multiplexierung wird in den Multiplexierern 520 und 521 ausgeführt.
  • Zwei Befehle können parallel angeordnet werden, falls einer der zwei Befehle mit einem Parallelfreigabebit versehen ist. Die Hardware-Unterstützung für einen derartigen Typ der Parallelität wird als der Parallelfreigabemechanismus bezeichnet. Gleichermaßen können zwei Befehle parallel angeordnet werden, falls beide Befehle einzelne Datenspeicherzugriffe (Smem oder dbl(lmem)) in der indirekten Betriebsart ausführen. Die Hardware-Unterstützung für einen derartigen Typ der Parallelität wird als der weiche duale Mechanismus bezeichnet.
  • Der Prozessorkern 102 führt die Befehle durch eine 7-stufige Pipeline aus, wobei deren jeweiligen Stufen nun unter Bezugnahme auf die Tabelle 1 und auf 5 beschrieben werden. Die Prozessorbefehle werden ungeachtet dessen, wo die Ausführung stattfindet (A-Einheit oder D-Einheit), durch eine siebenstufige Pipeline ausgeführt. Um die Größe des Programmcodes zu verringern, fertigt ein C-Kompilierer gemäß einem Aspekt der vorliegenden Erfindung so viele Befehle wie möglich für die Ausführung in der A-Einheit ab, sodass die D-Einheit ausgeschaltet werden kann, um mit der Leistung sparsam umzugehen. Dies erfordert, dass die A-Einheit die an den Speicheroperanden ausgeführten Grundoperationen unterstützt.
  • Figure 00110001
  • Figure 00120001
    Tabelle 1: Die Funktionsweise der Prozessorpipeline für einen Einzelzyklusbefehl ohne Speicherwartezustände
  • Die erste Stufe der Pipeline ist eine VORAUSLESE-Stufe (P0) 202, wobei während dieser Stufe eine nächste Programmspeicherstelle adressiert wird, indem eine Adresse auf dem Adressenbus (PAB) 118 der Speicherschnittstelle 104 aktiviert wird.
  • In der nächsten Stufe, der HOL-Stufe (P1) 204, wird der Programmspeicher gelesen, wobei die I-Einheit 106 von der Speicherschnittstelleneinheit 104 über den PB-Bus 122 gefüllt wird.
  • Die VORAUSLESE- und HOL-Stufen sind vom Rest der Pipelinestufen separat, weil die Pipeline während der VORAUSLESE- und HOL-Stufen unterbro chen werden kann, um den sequentiellen Programmablauf zu unterbrechen und auf andere Befehle im Programmspeicher zu zeigen, z. B. für einen Verzweigungsbefehl.
  • Der nächste Befehl im Befehlspuffer wird dann in der dritten Stufe, DECODIEREN (P2) 206, an den/die Decodierer 512/514 abgefertigt, wo der Befehl decodiert und an die Ausführungseinheit für die Ausführung dieses Befehls, z. B. an die P-Einheit 108, die A-Einheit 110 oder die D-Einheit 112, abgefertigt wird. Die Decodier-Stufe 206 enthält die Decodierung wenigstens eines Teils des Befehls einschließlich eines ersten Teils, der die Klasse des Befehls angibt, eines zweiten Teils, der das Format des Befehls angibt, und eines dritten Teils, der eine Adressierungsbetriebsart für den Befehl angibt.
  • Die nächste Stufe ist eine ADRESSIER-Stufe (P3) 208, in der die Adresse der in dem Befehl zu verwendenden Daten berechnet wird oder eine neue Programmadresse berechnet wird, sollte der Befehl eine Programmverzweigung oder einen Sprung erfordern. Die jeweiligen Berechnungen finden in der A-Einheit 110 bzw. der P-Einheit 108 statt.
  • In einer ZUGRIFFS-Stufe (P4) 210 wird die Adresse eines Leseoperanden erzeugt, wobei dann der Speicheroperand, dessen Adresse in einem DAGEN-Y-Operator mit einer indirekten Ymem-Adressierungsbetriebsart erzeugt worden ist, aus dem indirekt adressierten Y-Speicher (Ymem) GELESEN wird.
  • Die nächste Stufe der Pipeline ist die LESE-Stufe (P5) 212, in der ein Speicheroperand, dessen Adresse in einem DAGEN-X-Operator mit einer indirekten Xmem-Adressierungsbetriebsart oder in einem DAGEN-C-Operator mit der Koeffizientenadressenbetriebsart erzeugt worden ist, GELESEN wird. Die Adresse der Speicherstelle, an der das Ergebnis des Befehls zu schreiben ist, wird erzeugt.
  • Schließlich gibt es eine Ausführungs-Stufe AUSFÜHREN (P6) 214, in der der Befehl entweder in der A-Einheit 110 oder in der D-Einheit 112 ausgeführt wird. Das Ergebnis wird dann in einem Datenregister oder Akkumulator gespeichert oder für die Lese-/Modifiziere-/Schreib-Befehle in den Speicher geschrieben. Au ßerdem werden während der AUSFÜHRUNGS-Stufe die Verschiebungsoperationen an den Daten in den Akkumulatoren ausgeführt.
  • Die Pipeline des Prozessors 100 ist geschützt. Dies verbessert die Leistung des C-Kompilierers signifikant, weil keine NOP-Befehle eingefügt werden müssen, um Latenzzeitanforderungen zu erfüllen. Es macht außerdem die Codeübersetzung von einem Prozessor einer früheren Generation zu einem Prozessor einer späteren Generation viel leichter.
  • Eine im Prozessor 100 verwendete Grundregel des Pipelineschutzes lautet wie folgt: Falls ein Schreibzugriff eingeleitet worden ist, bevor der laufende Lesezugriff noch nicht abgeschlossen worden ist, und falls beide Zugriffe dasselbe Betriebsmittel gemeinsam benutzen, dann werden zusätzliche Zyklen eingefügt, um den Schreibabschluss zu erlauben und den nächsten Befehl mit den aktualisierten Operanden auszuführen; aber für die Emulation muss sich eine Einzelschritt-Codeausführung genau wie die freilaufende Codeausführung verhalten.
  • Das Grundprinzip der Funktionsweise für einen Pipelineprozessor wird nun unter Bezugnahme auf 5 beschrieben. Wie aus 5 ersichtlich ist, finden für einen ersten Befehl 302 die aufeinanderfolgenden Pipelinestufen während der Zeitperioden T1-T7 statt. Jede Zeitperiode ist ein Taktzyklus für den Maschinentakt des Prozessors. Ein zweiter Befehl 304 kann in der Periode T2 in die Pipeline eintreten, weil der vorhergehende Befehl nun in die nächste Pipelinestufe bewegt worden ist. Für den Befehl 3, 306, tritt die VORAUSLESE-Stufe 202 in der Zeitperiode T3 auf. Wie aus 5 für eine siebenstufige Pipeline ersichtlich ist, kann eine Gesamtmenge von 7 Befehlen gleichzeitig verarbeitet werden. Für alle 7 Befehle 302314 zeigt 5 sie alle in der Zeitperiode T7 unter Verarbeitung. Eine derartige Struktur fügt eine Form der Parallelität zur Verarbeitung der Befehle hinzu.
  • Wie in 6 gezeigt ist, enthält die vorliegende Ausfihrungsform der Erfindung eine Speicherschnittstelleneinheit 104, die über einen 24-Bit-Adressenbus 118 und einen bidirektionalen 32-Bit-Datenbus 120 an den externen Programm speicher 150 gekoppelt ist. Außerdem ist die Speicherschnittstelleneinheit 104 über einen 24-Bit-Adressenbus 114 und einen bidirektionalen 16-Bit-Datenbus 116 an die Datenspeichereinheiten 151 gekoppelt. Die Speicherschnittstelleneinheit 104 ist außerdem über einen 32-Bit-Programmlesebus (PB) 122 an die I-Einheit 106 des Maschinenprozessorkerns 102 gekoppelt. Die P-Einheit 108, die A-Einheit 110 und die D-Einheit 112 sind über die Datenlese- und Datenschreibbusse und die entsprechenden Adressenbus an die Speicherschnittstelleneinheit 104 gekoppelt. Die P-Einheit 108 ist ferner an einen Programmadressenbus 128 gekoppelt.
  • Insbesondere ist die P-Einheit 108 über einen 24-Bit-Programmadressenbus 128, die zwei 16-Bit-Datenschreibbusse (EB, FB) 130, 132 und die zwei 16-Bit-Datenlesebusse (CB, DB) 134, 136 an die Speicherschnittstelleneinheit 104 gekoppelt. Die A-Einheit 110 ist über zwei 24-Bit-Datenschreibadressenbusse (EAB, FAB) 160, 162, die zwei 16-Bit-Datenschreibbusse (EB, FB) 130, 132, die drei Datenleseadressenbusse (BAB, CAB, DAB) 164, 166, 168 und die zwei 16-Bit-Datenlesebusse (CB, DB) 134, 136 an die Speicherschnittstelleneinheit 104 gekoppelt. Die D-Einheit 112 ist über die zwei Datenschreibbusse (EB, FB) 130, 132 und die drei Datenlesebusse (BB, CD, DB) 144, 134, 136 an die Speicherschnittstelleneinheit 104 gekoppelt.
  • 6 stellt bei 124 die Weiterleitung der Befehle von der I-Einheit 106 zur P-Einheit 108 dar, um z. B. Verzweigungsbefehle weiterzuleiten. Außerdem stellt 6 bei 126 und 128 die Weiterleitung der Daten von der I-Einheit 106 zur A-Einheit 110 bzw. zur D-Einheit 112 dar.
  • Der Prozessor 100 ist um einen vereinheitlichten Programm/Daten-Raum organisiert, wie in 7 veranschaulicht ist. Ein Programmzeiger umfasst intern 24 Bits, wobei er eine Byte-Adressierungs-Fähigkeit besitzt, wobei aber nur eine 22-Bit-Adresse zum Speicher exportiert wird, weil ein Programm-Holvorgang immer an einer 32-Bit-Grenze ausgeführt wird. Während der Emulation für die Software-Entwicklung werden jedoch z. B. die vollen 24-Bit-Adressen für die Hardware-Unterbrechungspunkt-Implementierung bereitgestellt. Die Datenzeiger umfassen 16 Bits, erweitert um eine 7-Bit-Hauptdatenseite, wobei sie eine Wortadressierungsfähigkeit besitzen. Die Software kann bis zu 3 Hauptdatenseiten wie folgt definieren:
    MDP Direktzugriff indirekter Zugriff CDP
    MDP05 – indirekter Zugriff AR[0-5]
    MDP67 – indirekter Zugriff AR[6-7]
  • Es wird ein Stapel aufrechterhalten, wobei er immer auf der Hauptdatenseite 0 steht. Die speicherabgebildeten Register der CPU sind von allen Seiten sichtbar.
  • Verschiedene Aspekte des Prozessors 100 sind in der Tabelle 2 zusammengefasst.
  • Figure 00170001
  • Figure 00180001
    Tabelle 2 – Zusammenfassung des verbesserten Prozessors 100
  • 8 ist ein Blockschaltplan, der ein digitales System mit dem Prozessorkern 102 in Kombination mit einem Verfolgungs-FIFO 800 gemäß den Aspekten der vorliegenden Erfindung veranschaulicht. Der Verfolgungs-FIFO 800 ist ein Mechanismus, um ein Fenster mit hoher Bandbreite zu schaffen, um die Sichtbarkeit der Sequentialisierung der Befehlsausführung bereitzustellen. Der Prozessorkern 102 ist mit der Speicherschnittstelle 810 verbunden. Die Befehle und die Daten können vom Cache 814, dem internen Speicher 812 oder dem externen Speicher 830 über die externe Speicherschnittstelle 802 erhalten werden. Der Programmholadressenbus 820 stellt die Programmzähleradressen für den Cache 814 oder die Speicher 812, 830 in Reaktion auf den RPC 534 bereit (siehe 5). Der Cache fordert über den Bus 815 einen Programmholvorgang vom externen Speicher 830 an, wenn ein Cache-Fehltreffer auftritt. In diesem Fall werden die Befehlsdaten über den Bus 808 dem Prozessorkern 102 bereitgestellt, während der Cache über den Bus 809 aktualisiert wird. Der Programmdecodierungsadressenbus 822 stellt die Adresse des Befehls, der in Reaktion auf den LRPC 536 decodiert wird, der Verfolgungsschnittstelle 804 bereit. Die Verfolgungsschnittstelle 804 sendet dann die Programmdecodierungsadresse über den Decodierungs-PC-Bus 806 an den Verfolgungs-FIFO 800. Die Hardware-Unterbrechungspunkt/Fensterpunkt-Schaltungsanordnung 824 überwacht die Adressenbusse 820 und 822 und sendet ein Fenstersignal 825 an die Verfolgungsschnittstelle 804, wenn eine im Voraus ausgewählte Adresse oder ein im Voraus ausgewählter Adressenbereich erfasst wird. Verschiedene Steuersignale, die sich auf das Befehlsformat, die Diskontinuitäten, die Wiederholungsbefehle und die Unterbrechungen beziehen, werden innerhalb des Prozessorkerns 102 gebildet und über den Bus 821 an die Verfolgungsschnittstelle 804 gesendet. Diese Signale werden später ausführlicher beschrieben.
  • In 8 ist die Brücke 860 mit dem Datenbus 861 verbunden, wobei sie einen gepufferten Datenbus, den RBus 862, schafft. Die Peripherievorrichtungen 863 und 844 repräsentieren verschiedene Peripherievorrichtungen, die mit dem Rbus 862 verbunden sein können. Der Rbus 862 ist außerdem mit dem Verfolgungs-FIFO 800 verbunden, um die Inhalte des Verfolgungs-FIFO 800 zu lesen, um die Verfolgungshistoriendaten zu erhalten oder um in den FIFO zu schreiben, um den FIFO zu steuern und zu konfigurieren.
  • Ein Testsystem für den externen Host 870 ist mit dem Testanschluss 850 verbunden, um die Emulation und das Testen zu steuern. Das externe Testsystem 870 repräsentiert verschiedene bekannte Testsysteme, um integrierte Schaltungen auszutesten und zu emulieren. Ein derartiges System ist im US-Patent 5.535.331 beschrieben.
  • Die Tabelle 3 listet ein speicherabgebildetes Register innerhalb des Prozessorkerns 102 auf, das für ein Verständnis dieser Ausführungsform der vorliegenden Erfindung relevant ist. Dieses Register wird in den folgenden Abschnitten ausführlicher beschrieben. Der Prozessorkern 102 besitzt außerdem eine Anzahl speichergebildeter Register, die für verschiedene Steuer-, Zustands- und Betriebsaufgaben verwendet werden.
  • Figure 00200001
    Tabelle 3: Das speicherabgebildete CPU-Register
  • Die Tabelle 4 fasst die Bitzuordnungen des Zustands-/Steuerregisters ST3 zusammen.
  • Figure 00210001
  • Figure 00220001
    Tabelle 4 – Das Zustands-/Steuerregister ST3
  • 9 ist ein Blockschaltplan des Verfolgungs-FIFO nach 8. Der Verfolgungs-FIFO 800 besteht aus zwei Registerbänken, eine enthält eine Folge von Diskontinuitäten, während die andere Informationen enthält, um eine Folge der PC-Adressen zu identifizieren, auf die zuletzt zugegriffen worden ist. Diese Ausführungsform des Verfolgungs-FIFO 800 speichert 32 8-Bit-Abtastwerte der letzten PC-Informationen im letzten PC-Abschnitt 910 und 16 64-Bit-Abtastwerte der letzten Diskontinuitäten im Diskontinuitäts-PC-Abschnitt 911. Alternative Ausführungsformen können einen Speicher für eine größere oder kleinere Anzahl von Abtastwerten bereitstellen.
  • Jeder Abtastwert für den letzten Programmzähler-Wert (der von nun an als TRC_LPC bezeichnet wird) besitzt ein Bitfeld, das die durch die Zustandssignale 821 bereitgestellten Informationen enthält, das angibt, ob es zu einem bedingten Befehl gehört und ob die bedingte Ausführung zu einem "wahr" aufgelöst worden ist. Durch Vorgabe wird angenommen, dass jeder Befehl zu einem wahr ausge wertet wird, wobei dieses Bit nur auf "0" gesetzt wird, wenn ein bedingter Befehl fehlschlägt. Es gibt außerdem ein Bitfeld, das angibt, ob der letzten PC-Abtastwert zu einem Wiederholungseinzelbefehl gehört; in diesem Fall wird der Decodierungs-PC nur einmal gespeichert. Dies kann jedoch durch das Steuerregister gesteuert werden. Das Bitfeld übermittelt außerdem Informationen über die Größe des Befehls (das Befehlsformat).
  • Der Diskontinuitäts-PC-Abschnitt besteht aus dem Decodierungs-PC-Wert, wenn eine PC-Diskontinuität auftritt. Jede Diskontinuität ist ein Paar von Werten: einer zeigt den PC-Wert gerade bevor die Diskontinuität vorkommt, während der andere den PC-Diskontinuitätswert zeigt. Das "pcdiscont"-Signal (mit positiver Logik) von der Verfolgungsschnittstelle 804 gibt an, ob die entsprechende Adresse eine Diskontinuitätsadresse ist.
  • Die Schnittstelle kann in zwei Abschnitte klassifiziert werden: die Rbus-spezifischen Signale und die verfolgungsspezifischen Signale. Die Tabelle 5 beschreibt die Rbus-spezifischen Signale, die über den Rbus 862 mit dem Verfolgungs-FIFO 800 verbunden sind. Die Tabelle 6 beschreibt die verfolgungsspezifischen Signale, die über den PC-Decodierungs-Bus 806 und den Steuersignalbus 807 mit dem Verfolgungs-FIFO 800 verbunden sind und die durch die Steuerschaltungsanordnung 900 empfangen werden.
  • Figure 00240001
    Tabelle 5 – Die Rbus-spezifischen Signale
  • Figure 00250001
    Tabelle 6 – Die verfolgungsspezifischen Eingangssignale
  • Die verfolgungsspezifischen Eingangssignale PCINT, PCINTR besitzen eine doppelte Funktionalität. Während der sequentiellen Codeausführung übertragen sie das Befehlsformat. Während einer Code-Diskontinuität übertragen sie die oben erklärten Informationen. In diese Weise sind weniger Signale erforderlich.
  • Die CPU 102 exportiert die Programmzähleradresse (die Decodierungspipelinestufe) über den Bus 822 und eine Menge von Zustandssignalen von der Befehlsdecodierungs- und Bedingungsauswerte-Logik über den Bus 821, um die Verfolgung der Ausführung des Anwenderprogramms zu unterstützen, wie in der Tabelle 6 beschrieben ist. Dies kann in zwei Arten erreicht werden: indem diese Signale durch die externe Speicherschnittstelle 802 an den Rand der Vorrichtung gebracht werden, falls dies vom Standpunkt der Anschlussstift-Anzahl und der Leistung annehmbar ist; oder indem der Verfolgungs-FIFO 800 innerhalb derselben integrierten Schaltung implementiert wird. Der letztere Ansatz erlaubt das Rennen der letzten Programmadressenwerte und der letzten Programmadressendiskontinuitäten, wobei für das effiziente Austesten ein Etikett an ihnen angebracht ist. Vorteilhaft erfordert dieses Schema keine zusätzlichen Vorrichtungs-Anschlussstifte und unterstützt die Verfolgung mit voller Geschwindigkeit.
  • Die Tabelle 7 beschreibt verschiedene Register und Busse innerhalb des Verfolgungs-FIFO 800.
  • Figure 00270001
  • Figure 00280001
  • Figure 00290001
    Tabelle 7 – Die in dieser Beschreibung verwendeten Begriffe
  • Das LPC_OFFSET_REG 923 wird verwendet, weil keine PC-Bits im SEC_LPC gespeichert sind. Dieses Register enthält den vollen 24-Bit-PC-Wert, wenn der FIFO aus irgendeinem Grund anhält. Deshalb wird es im Normalfall immer auf den aktuellen Decodierungs-PC-Wert zeigen, der zum sequentiellen Code gehört. Wenn es jedoch ein Stoppereignis gibt, das auf die Fensterbildung der Verfolgung von der Unterbrechungspunktlogik 824 oder von den Fensterbildungsoptionen zurückzuführen ist, das durch das Verfolgungssteuerregister gesteuert werden kann, enthält das LPC_OFFSET_REG den vollen PC-Wert beim Stopp. Dies bedeutet, dass der Anwender (oder die Diagnoseprogramm-Software) vollständige Informationen besitzt, um alle Adressenwerte für die Folge der Befehlsadressen der zuletzt verwendeten Befehle zusammen mit den Befehlsformatinformationen zu rekonstruieren.
  • Jeder TRC_LPC-Wert wird vorübergehend im TEMP_LPC_REG 924 gespeichert, sodass für jede Diskontinuität ein Paar von PC-Werten gespeichert werden kann: einer, der den Wert gerade vor der Diskontinuität zeigt, und der andere, der die Adresse der Diskontinuität zeigt.
  • Es gibt mehrere Register, die verwendet werden, um den Verfolgungs-FIFO 800 zu steuern. Es folgt eine ausführliche Beschreibung von jedem Register.
  • Das Verfolgungssteuerregister (TRC_CNTL) 926 ist ein Sechzehn-Bit-Register, das verwendet wird, um die verschiedenen Betriebsarten des Verfolgungs-FIFO aufzubauen und zu steuern. Die Tabelle 8 beschreibt die TRC_CNTL-Bits und gibt ihre vorgegebenen Werte beim Rücksetzen an.
  • Figure 00310001
  • Figure 00320001
  • Figure 00330001
    Tabelle 8 – Die Bitbeschreibungen des Verfolgungssteuerregisters
  • Das Verfolgungszeigerregister (TRC_PTR) ist ein Sechzehn-Bit-Register, das zwei funktional verschiedene Register bildet: den Schreibzeiger zur Verfolgung des letzten PC (TRC_LWPTR) 920 und den Schreibzeiger zur Verfolgung des Diskontinuitäts-PC (TRC_DWPTR) 921. Dieses Register ist schreibgeschützt. Die Tabelle 9 beschreibt die Bits des Verfolgungszeigers.
  • Figure 00350001
    Tabelle 9 – Das Verfolgungszeigerregister
  • Die Verfolgungsregister TRC00 bis TRC79 sind 16-Bit-Register, die verwendet werden, um die Verfolgungsinformationen zu speichern. Die Verfolgungsinformationen sind in zwei Teile geteilt. Ein Teil enthält die letzten PC-Informationen, während der andere den PC-Diskontinuitätswert hält. In der aktuellen Ausführungsform sind die letzten PC-Informationen in den Registern TRC64 bis TRC79 im letzten PC-Abschnitt 910 gespeichert. Jeder letzte PC-Abtastwert umfasst acht Bits, sodass in jedem Verfolgungsregister zwei Abtastwerte gespeichert sind. Die Diskontinuitäts-PC-Informationen sind in den Registern TRC00 bis TRC63 gespeichert. Jeder Diskontinuitätsabtastwert umfasst vierundsechzig Bits, sodass vier Verfolgungsregister verwendet werden, um jeden Diskontinuitätsabtastwert zu speichern. In der vorliegenden Ausführungsform ist der Verfolgungs-FIFO konstruiert, um 16 Abtastwerte der vorhergehenden PC-Diskontinuitäten und 32 Abtastwerte des letzten PC-Wertes aufzunehmen. Eine weitere Ausführungsform kann eine größere oder kleinere Anzahl von Abtastwerten speichern.
  • Jedem Diskontinuität-Decodierungs-PC-Wert ist ein Bitfeld zugeordnet, das als das Verfolgungsereignis (TRC_DEVT) bezeichnet wird. Dieses Feld spezifiziert den Grund für die Diskontinuität (das Ereignis, das die Diskontinuität verursacht). Die TRC_DEVT-Bits werden gewählt, um zu irgendeinem Zeitpunkt die Rekonstruktion der letzten Befehlsausführungs-Sequentialisierung zu ermöglichen.
  • Ähnlich ist jedem Eintrag im letzten PC-Abschnitt ein Bitfeld geordnet, das als TRC_LEVT bezeichnet wird, das die Informationen über die bedingte Ausführung und das Befehlsformat spezifiziert. Ein TRC_LEVT-Eintrag ist außerdem in jedem Diskontinuitätsabtastwert enthalten.
  • Der FIFO ist in einer derartigen Weise organisiert, dass die neuesten Abtastwerte die ältesten Abtastwerte überschreiben. Es folgt eine Beschreibung der Verfolgungsregister und der Ereigniskennzeichner.
  • Jeder Diskontinuitätseintrag ist ein Paar von 32-Bit-Werten.
    • 1. Die erste 32-Bit-Adresse, die die Diskontinuität verursacht + die TRC_LEVT-Bits
    • 2. Die zweite 32-Bit-Diskontinuitäts-Zieladresse + die TRC_DEVT-Bits
  • Die Tabelle 10 zeigt den 64-Bit-Wert für jeden Diskontinuitätseintrag. Wie oben erklärt worden ist, belegt jeder Abtastwert vier Verfolgungsregister, sodass ein einzelner Abtastwert z. B. in den Registern TRC00-TRC03 steht. Die Verfolgungsregister werden als Sechzehn-Bit-Werte gelesen.
  • Figure 00380001
  • Figure 00390001
    Tabelle 10 – Die Beschreibung der Bits des Verfolgungsregisters (des Diskontinuitäts-PC-Abschnitts) TRC00-TRC64
  • Die Verfolgungsregister TRC65-TRC79, der letzte PC-Abschnitt 910, enthalten die letzten PC-Informationen. Die Tabelle 11 beschreibt die Inhalte der Verfolgungsregister, die die letzten PC-Abtastwerte speichern.
  • Figure 00400001
    Tabelle 11 – Die Beschreibung der Bits des Verfolgungsregisters (des letzten PC-Abschnitts) TRC64-TRC79
  • 18 veranschaulicht die Bitzuordnung eines Eintrags eines "Diskontinuitätsereignisses", der im Verfolgungs-FIFO gespeichert ist. 19 veranschaulicht die Bitzuordnung des Eintrags eines "letzten PC-Ereignisses", der im Verfolgungs-FIFO gespeichert ist.
  • Tabelle 12 beschreibt das Verfolgungs-LPC-Versatzregister 823. Dieses Register enthält den aktuellen Decodierungs-PC-Wert und seine TRC_LEVT-Bits.
  • Figure 00410001
    Tabelle 12 – Der aktuelle Decodierungs-PC-Wert und seine TRC_LEVT-Bits
  • Tabelle 13 beschreibt das Verfolgungs-FIFO-ID-Register 925. Dieses Register spezifiziert die "Eigentümeridentifikation" des Verfolgungs-FIFO 800. Der Eigentümer kann die Diagnoseprogramm-Software, die Anwendung oder kein aktueller Eigentümer sein. Die cTOOLS id für das Merkmal der Emulationsverfolgung wird außerdem von hier gelesen.
  • Figure 00420001
    Tabelle 13 – Die Bitdefinitionen des Verfolgungs-FIFO-ID-Registers
  • Die cTOOLs-Austest-System-ID für den Verfolgungspuffer ist 0x004, was in die Bits 11-0 des ID-Registers 925 gesetzt ist. Die Eigentümerschaft wird während eines Rücksetzens auf "NONE_OWNS" gesetzt. Die Eigentümerschaft kann beansprucht werden, indem auf das Steuerregister durch das Schreiben in das Steuerregister 926 zugegriffen wird. Falls es bereits einen Eigentümer gibt, ändert ein Schreiben in das Steuerregister die Eigentümerschaft nicht. Die Betriebsmittel können in Besitz gelangen, wenn sich die Steuerregisterbits (1 bis hinab zu 0) auf "freigegeben" bewegen.
  • Die Tabelle 14 zeigt die Adressenabbildung der Register innerhalb des Verfolgungs-FIFO.
  • Figure 00430001
    Tabelle 14 – Die Adressenabbildung
  • Alle Rbus-Leseoperationen sind 16-Bit-Lesevorgänge. Im Fall des Lesens der Verfolgungsregister TRC64 bis TRC79 – letzter PC-Abschnitt 910, enthält jede Leseoperation 2 letzte PC-Werte. Die unteren acht Bits enthalten den ersten Wert, während die oberen acht Bits den nächsten Wert enthalten. Dies vergrößert den Durchsatz der Lesevorgänge.
  • Die Steuerschaltungsanordnung 930, das ID-Register 925 und das Steuerregister 926 werden später ausführlicher beschrieben.
  • Der Hardware-Rücksetzzustand für alle Ausgangssignale ist in Tabelle 15 beschrieben.
  • Figure 00440001
    Tabelle 15 – Der Hardware-Rücksetzzustand für alle Ausgangssignale
  • 10 ist ein Blockschaltplan, der die externe Speicherschnittstelle 802 ausführlicher veranschaulicht. Die externe Speicherschnittstelle umfasst separate Programm- und Daten-Bus-Controller 1010, 1011 und eine Verfolgungs-/Emulationsschnittstelle 804. Die Daten- und Programm-Bus-Controller sind separat, aber der Konfigurationsblock wird gemeinsam benutzt. Deshalb laufen die Holvorgänge auf dem externen Datenbus 1022 und Programmbus 1020 gleichzeitig ab. Die Verfolgungs-/Emulationsschnittstelle 804 umfasst sowohl die generische Verfolgung als auch die Adressensichtbarkeit (AVIS). Der MMT-Bus 806, 807 wird verwendet, um die Verfolgungsinformationen von dem internen Megazellen-Verfolgungs-/Emulationsblock auszugeben. Die AVIS-Ausgabe wird auf den MMP-Programmadressenbus multiplexiert. Die Megazelle 1000 ist eine komplexe ASIC-Vorrichtung, die durch das Kombinieren mehrerer vorgegebener ASIC-Zellen, einschließlich des Prozessorkerns 102, gebildet wird. Die externe Speicherschnittstelle 802 wird außerdem als Megazellen-Speicherschnittstelle (MMI) 802 bezeichnet.
  • Die 32-Bit-Verfolgungs-/Emulationsschnittstelle 804 gibt bei jeder Programmdiskontinuität die aktuelle 24-Bit-Ausführungsadresse über den Bus 806 und die zwölf Steuersignale für die generische Verfolgung über den Bus 807 aus (siehe Tabelle 6). Diese Informationen erlauben einem externen Nach-Prozessor, wie z. B. dem Testsystem 870, den Programmablauf zu rekonstruieren. Durch das Konsultieren des Programmlistings kann das Testsystem 870 den tatsächlichen Befehlsablauf zusammen mit den Kommentaren anzeigen, die sich auf die einzelnen Befehle beziehen, die im Programmlisting vorgesehen sind. Da nur die Diskontinuitäten ausgegeben werden, ist die mittlere Datenrate ein Bruchteil der DSP_CLK-Rate.
  • 11 ist ein Taktdiagramm, das die Taktung für die Verfolgungssignale veranschaulicht, die von der externen Speicherschnittstelle ausgegeben werden. Die MMI 802 gibt die Signale für die generische Verfolgung direkt vom generischen Verfolgungsblock 804 innerhalb der Megazelle aus. Die Ausgaben der generischen Verfolgung umfassen die 24-Bit-Ausführungsadresse und zwölf Steuersignale.
  • Die Ausführungsadresse wird nur bei jeder Programmdiskontinuität ausgegeben, bei der die Steuersignale die Art der Diskontinuität definieren, z. B. einen Sprung, eine Unterbrechung oder einen Unterprogrammaufruf. Der Adressenbus ist 24 Bits breit, da die Ausführungsadresse falsch ausgerichtet sein kann, selbst wenn die Programmholadressen immer auf 32 Bit ausgerichtet sind.
  • Die Daten der generischen Verfolgung erfordern eine Nachverarbeitung, um den Programmablauf zu rekonstruieren, falls die Daten protokolliert worden sind, z. B. unter Verwendung des externen Testsystems 800. Ein (von Texas Instruments, Inc. verfügbares) Emulationssystem XDS510 kann konfiguriert werden, um dies zusammen mit der Emulationssteuerschaltungsanordnung 851 über eine 7-Anschlussstift-JTAG-Schnittstelle 850 auszuführen.
  • Die MMI 802 puffert lediglich die generischen Verfolgungssignale 1110, 1112 und steuert sie extern von der Abfallflanke des Taktsignals 1100 an, die mit den externen MMP- und MMD-Bussen konsistent ist, sodass jedes künftige Verschmelzen problemlos sein würde. Der Block für die generische Verfolgung steuert die generischen Verfolgungsausgaben 1120, 1122 von der Anstiegsflanke des Taktsignals 1100 so an, dass der interne Bus nur die Hälfte einer DSP CLK-Periode für die Ausbreitung besitzt. Dieser Bus sollte jedoch nicht den Grundflächenplan der Megazelle 1000 dominieren, weil dieser Bus von Punkt zu Punkt verläuft, d. h. leicht belastet ist, und keine Adressendecodierung usw. erfordert. Alternativ könnte der externe Verfolgungsbus 1120, 1122 von der Anstiegsflanke des DSP_CLK angesteuert werden, um den Grundflächenplan unkritisch zu machen.
  • Die Ausgabe der generischen Verfolgung wird nicht quittiert, wobei der Ratenanpassungs-FIFO 800 außerhalb der Megazelle 1000 angeordnet ist. Die Statistiken verändern sich, wenn aber eine Diskontinuität einmal alle 4 Befehle auftritt, dann beträgt die mittlere Rate der Ausgangsdaten der generischen Verfolgung 25 % der Befehlsausführungsrate. Eine alternative Ausführungsform kann den FIFO 800 innerhalb der Megazelle 1000 anordnen.
  • Die Steuerausgaben 1122 der generischen Verfolgung können miteinander logisch ODER-verknüpft und mit dem SHIFT_IN-Eingang eines externen synchronen FIFO verbunden sein, der durch den DSP_CLK getaktet wird. Für den externen FIFO können zwei alternative Topologien betrachtet werden:
    • a Ein kleiner bis mittelgroßer FIFO. Dieser FIFO muss mit der vollen Geschwindigkeit des DSP_CLK arbeiten.
    • b Ein kleiner Ratenanpassungs-FIFO und ein großer Massenspeicher-FIFO. Der kleine FIFO würde zwischen die MMI und den großen FIFO geschaltet sein. Der kleine FIFO muss mit der vollen Geschwindigkeit des DSP_CLK arbeiten und dimensioniert sein, um die Spitzenraten der Daten zu puffern, wenn sich die Diskontinuitäten nah zusammen befinden. Der große FIFO kann dann für die Fläche optimiert sein, wobei er dann nur mit der mittlere Rate arbeiten muss, mit der auf die Diskontinuitäten gestoßen wird. Um Chip-Fläche zu bewahren, könnte sein großer FIFO unter Verwendung eines externen SRAM auf dem Chip konstruiert sein, der zu ei nem Anwendungs-SRAM zurückfallen würde, wenn die generische Verfolgung gesperrt worden ist.
  • Wenn der avis_tr-Eingang 1030 in Reaktion auf das AVIS-Bit im Steuerregister ST3 aktiviert wird, tritt die MMI in die AVIS-Betriebsart ein, in der jede CPU-Holadresse, die an den internen Pbus 820 ausgegeben wird, außerdem an den externen Programmadressenbus 1020 ausgegeben wird. Während des normalen Betriebs werden die Adressen für die internen Vorrichtungen nicht an den externen Bus ausgegeben, um Leistung zu sparen. Normalerweise ist in der AVIS-Betriebsart der Cache-Controller gesperrt, um zu garantieren, dass die Schlitze des externen Programmbusses immer verfügbar sind.
  • Jede neue AVIS-Adresse wird auf dem externen Programmbus über einen externen mmi_validavis_nf-Anschlussstift signalisiert, die als ein Taktfreigabesignal an einem FIFO verwendet werden kann, der durch den DSP_CLK getaktet wird.
  • Deshalb werden, wenn der Cache-Controller und die AVIS gesperrt sind, nur die Adressen der externen Vorrichtungen extern angesteuert, wie beim Übergang 1210 in 12 gezeigt ist. 12 ist ein Taktdiagramm, das die Speicherzyklentaktung veranschaulicht, wobei die Zwischenspeicherung in einem Cache und die Verfolgung gesperrt sind. Das AVIS-Signal 1200 ist gesperrt, das Anforderungssignal 1202 für den externen Bus ist nur für eine externe Adresse aktiviert und die externen Adressensignale 1204 gehen nur beim Übergang 1210 für eine externe Adresse über.
  • Wenn jedoch der Cache-Controller über das CAEN-Bit im ST3 gesperrt und die AVIS freigegeben ist, werden die Adressen sowohl für die internen als auch die externen Vorrichtungen extern angesteuert, wie im folgenden in 13 gezeigt ist. 13 ist ein Taktdiagramm, das die Speicherzyklentaktung veranschaulicht, wobei die Zwischenspeicherung in einem Cache gesperrt ist und die Verfolgung freigegeben ist. Das AVIS-Signal 1300 ist freigegeben, das Busanforderungssignal 1302 ist während einer externen Adresse beim Übergang 1312 aktiviert, während die internen und externen Adressen bei den Übergängen 13101313 auf den externen Programmadressensignalen 1304 angesteuert werden.
  • Der Cache-Controller ist während der AVIS-Betriebsart normalerweise gesperrt, sodass der externe Bus immer verfügbar ist, um die AVIS-Adressen auszugeben. Falls ähnlich der Cache-Controller freigegeben ist und die Adressen des Pbus 820 für den SARAM oder DARAM sind oder den Cache treffen, ist der externe Bus immer verfügbar, um die AVIS-Adressen auszugeben.
  • Falls der Cache-Controller freigegeben ist, wenn die AVIS außerdem freigegeben ist, dann konkurrieren sowohl der Cache-Controller als auch der interne Pbus um den externen Pbus 1020. Wenn der Pbus zu einer externen, im Cache zwischenspeicherbaren Adresse holt, was zu einem Cache-Fehltreffer führt, dann beginnt der Cache-Controller ein Datenblock-Füllen in die MMI. Die MMI gibt dann diese Adressen extern aus, wobei, wenn die externe Vorrichtung eine lange Latenzzeit besitzt, dann die Daten für einige Zeit nicht zurückgeschickt werden. Wenn während dieser Zeit der Prozessorkern 102 den Pbus-Holvorgang durch das Aktivieren von pdismiss_nr aufgibt und das Holen vom internen SARAM beginnt, dann ist es für die MMI unmöglich, die internen AVIS-Adressen auszugeben, wenn nicht die externe Vorrichtung Abbrüche unterstützt.
  • Wenn die externen Vorrichtungen keine Abbrüche unterstützen, dann werden deshalb die avis-Schlitze verfehlt, da der Cache-Datenblock unteilbar ist. Dies bedeutet, dass die resultierende Emulationsverfolgung nicht vollständig ist. Die Systemleistung ist jedoch höher, da die Cache-Füllungen gleichzeitig mit den Holvorgängen von den internen Vorrichtungen ablaufen können.
  • Die AVIS-Adressenausgabe wird nicht quittiert, wobei jeder Ratenanpassungs-FIFO außerhalb der MMI angeordnet ist. Da jede Holadresse ausgegeben wird, könnte eine neue AVIS-Adresse bei jedem DSP_CLK-Zyklus ausgegeben werden. Die AVIS wird über das Steuerregister ST3 freigegeben. Wenn die AVIS freigegeben ist, vergrößert sich die Leistungsaufnahme, weil die externen Adres senleitungen während jedes internen Programmzugriffs durch den Prozessorkern 102 angesteuert werden.
  • Der Verfolgungs-FIFO wird nun ausführlicher beschrieben. 14 ist ein Blockschaltplan, der das Verschmelzen der Steuersignale mit den Einstellungen des Verfolgungssteuerregisters veranschaulicht. Die verschiedenen Signale vom Steuerregister 926 (siehe Tabelle 8) werden mit den verschiedenen durch die Verfolgungsschnittstelle 804 bereitgestellten Steuersignalen (siehe Tabelle 6) kombiniert, wie gezeigt ist, um ein Freigabeverfolgungssignal 1410, ein Freigabesignal 1411 für den letzten PC und ein Freigabediskontinuitätssignal 1412 zu bilden.
  • 15 ist ein Blockschaltplan, der veranschaulicht, wie einzelne Register im Verfolgungs-FIFO adressiert werden, während Verfolgungsinformationen geschrieben werden. Wenn das Freigabesignal 1410 aktiviert ist, dann werden entweder die LPC-Register 910 oder die DPC-Register 911 durch das LPC-Freigabesignal 1411 bzw. das DPC-Freigabesignal 1412 ausgewählt. Wenn das LPC-Freigabesignal 1411 aktiviert wird, dann wird eine im TRC_LWPTR 920 gespeicherte Fünf-Bit-Register-Zahl durch einen aktiven Codierer 950 in eines von zweiunddreißig Auswahlsignalen 951 codiert. Falls gleichermaßen das DPC-Freigabesignal 1412 aktiviert wird, wird eine im TRC_DWPTR 921 gespeicherte Sechs-Bit-Register-Zahl durch einen aktiven Codierer 952 in eines von sechzehn Auswahlsignalen 953 codiert. Das ausgewählte Register speichert dann entweder den auf dem Bus 912 dargestellten TRC_LEVT-Abtastwert oder den auf dem Bus 913 dargestellten 64-Bit-TRC_DPC-Abtastwert.
  • 16 ist ein Blockschaltplan, der veranschaulicht, wie die Verfolgungsregister für den R-Bus-Lesezugriff adressiert werden. Die Adressendecodierungsschaltungsanordnung 940 decodiert eine auf dem Rbus 862 dargestellte Datenleseadresse für ein ausgewähltes FIFO-Verfolgungsregister. Die Durchschaltsteuerungs-Schaltungsanordnung 1610 wählt das entsprechende Register aus und stellt die Inhalte des ausgewählten Registers den Rbus-Dateneingangssignalen des Rbus 862 bereit.
  • Nun werden die verschiedenen Algorithmen, die während der Verfolgung verwendet werden, ausführlich beschrieben. In der Tabelle 7 sind verschiedene Begriffe zu finden, die verwendet werden, um die Algorithmen zu beschreiben. 17 ist eine konzeptionelle Ansicht einer Diskontinuität, die durch den FIFO verfolgt worden ist. Die Steuerung des Prozessorkerns 102 ist, z. B. zurückzuführen auf die Erfassung einer Unterbrechungspunktadresse, durch die Austest-Software übernommen worden; deshalb hat der FIFO 800 die Verfolgung angehalten. Die auf eine Unterbrechung 1700 und einen folgenden Rücksprung 1701 zurückzuführenden Diskontinuitäten sind veranschaulicht. Der aktuelle Decodierungs-PC-Wert, der die Adresse X ist, wird vom LPC OFFSET REGISTER erhalten. Der Abschnitt des Codes zwischen diesem Wert und dem letzten Eintrag 1710 im SEC_DPC ist linear, die Adressen R bis X in diesem Beispiel. Die Informationen über das Befehlsformat sind in den TRC_LEVT-Abtastwerten 1711 verfügbar, siehe 19 und Tabelle 11, die verwendet werden können, um alle Adressen in diesem Bereich zu konstruieren.
  • In der 17 sind der SEC_LPC und der SEC_DPC mit gleicher Tiefe gezeigt, aber die tatsächliche Implementierung ist nicht so. Es wird ferner angegeben, dass nur die TRC_LEVT-Bits, siehe Tabelle 11, im SEC_LPC gespeichert sind, der jeder gezeigten Adresse entspricht.
  • Die folgenden Tabellen veranschaulichen verschiedene Algorithmen unter Verwendung von Pseudo-Code, um den in jedem Fall beteiligten Prozess zu beschreiben. Das Symbol "&" gibt "beide Operanden" an. Die Tabelle 16 beschreibt den Algorithmus, um einen Abtastwert entweder im LPC-Abschnitt oder im DPC-Abschnitt zu speichern.
  • Figure 00510001
    Tabelle 16 – Der Pseudo-Code für das Speichern eines Abtastwertes
  • Die Tabelle 17 beschreibt den Algorithmus zur Berechnung der Befehlsgröße.
  • Figure 00520001
    Tabelle 17 – Der Algorithmus zur Berechnung der Befehlsgröße
  • Das jedem Decodierungs-PC-Wert zugeordnete Befehlsformat ist das Befehlsformat für den vorhergehenden Befehl. Dies erlaubt, dass ein früherer PC-Wert aus dem letzten Wert rekonstruiert wird.
  • Der Verfolgungs-FIFO wird zurückgesetzt, indem eine "1" in das Bitfeld TRC_RST des Verfolgungssteuerregisters (TRC_CNTL) geschrieben wird oder indem eine "1" im "Rücksetz"-Eingangssignal angelegt wird. Die Tabelle 18 beschreibt das Rücksetzverhalten des Verfolgungs-FIFO.
  • Figure 00530001
    Tabelle 18 – Das Rücksetzverhalten
  • Der Prozessorkerns 102 besitzt einen "repeat()"-Befehl, der verursacht, dass der nächste einzelne Befehl in einer ausgewählten Anzahl wiederholt wird. Der Prozessorkern 102 besitzt außerdem einen "blockrepeat()"-Befehl, der veranlasst, dass ein spezifizierter Block von Befehlen in einer ausgewählten Anzahl wiederholt wird. Die durch die Wiederholungsbefehle verursachten Diskontinuitäten werden mit spezieller Sorgfalt behandelt. Der Verfolgungs-FIFO bearbeitet die durch einen Einzelwiederholungsbefehl, einen Blockwiederholungsbefehl und Wiederholungsbefehle (entweder Wiederholungseinzel- oder Blockwiederholungsbefehle) innerhalb von Wiederholungsbefehlen verursachten Diskontinuitäten. Gemäß einem Aspekt der vorliegenden Erfindung werden die durch Wiederholungsbefehle verursachten Diskontinuitäten nur einmal für die Dauer des Wiederholungsbefehls gespeichert.
  • Ein Vorteil dieses Ansatzes besteht darin, das schnelle Füllen des Verfolgungs-FIFO mit denselben Diskontinuitäten zu verhindern, die während des Austestens keine zusätzliche Informationen bereitstellen. Das Diagnoseprogramm besitzt jedoch eine Option, um alle Informationen innerhalb der Wiederholungsblöcke darzulegen, indem es das TRC_RP7-Bit im Verfolgungssteuerregister 926 setzt. In diesem Fall werden die Wiederholungsbefehle nicht unterschieden.
  • Die Tabelle 19 (siehe Tabelle 6) beschreibt die verschiedenen Signale, die ins Spiel kommen, um die Verfolgung des Wiederholungsbefehls zu bearbeiten.
  • Figure 00540001
    Tabelle 19 – Die bei der Verfolgung eines Wiederholungsbefehls verwendeten Signale
  • 20 ist eine konzeptionelle Ansicht der Bearbeitung eines Blockwiederholungsbefehls im Verfolgungs-FIFO. Ein blockrepeat()-Befehl bei der Adresse M + K (2100) verursacht, dass der Block der Befehle 2110 zwischen den Adressen M + K und M + P (2102) in einer ausgewählten Anzahl wiederholt wird. Der SEC_DPC besitzt jedoch vorteilhaft nur einen einzelnen Abtastwert 2130, ungeachtet der Anzahl der Wiederholungen des Blocks 2110. Das Verfolgungswiederholungsfeld 2120 (siehe 18 und Tabelle 10: Die Bitbeschreibung der Verfolgungsregister (des Diskontinuitäts-PC-Abschnitts) TRC00-TRC64) gibt an, dass eine Blockwiederholungsdiskontinuität aufgetreten ist. Die Tabelle 20 beschreibt den Prozess, um die Blockwiederholung 1 zu erfassen, die angibt, dass ein Blockwiederholungsbefehl ausgeführt wird.
  • Figure 00560001
    Tabelle 20 – Der Prozess, um die Blockwiederholung 1 zu erfassen
  • 21 ist eine konzeptionelle Ansicht der Bearbeitung eines verschachtelten Blockwiederholungsbefehls im Verfolgungs-FIFO. Innerhalb des wiederholten Blocks 2200 gibt es einen weiteren Wiederholungsblock 2210. Vorteilhaft wird nur ein einzelner Abtastwert 2220 im SEC_DPC 911 gespeichert, um den. verschachtelten Block 2210 anzugeben, wie durch das Wiederholungsfeld 2221 angegeben ist. Ein einzelner Abtastwert 2222 wird gespeichert, um den wiederholten Block 2200 anzugeben, wie durch das Wiederholungsfeld 2223 angegeben ist. Die Tabelle 21 beschreibt den Prozess, um die Block repeat2 zu erfassen, die angibt, dass verschachtelte Blockwiederholungsbefehle ausgeführt werden.
  • Figure 00570001
    Tabelle 21 – Der Prozess, um die Block repeat2 zu erfassen
  • 22 ist eine konzeptionelle Ansicht der Bearbeitung eines Einzelwiederholungsbefehls im Verfolgungs-FIFO. Ein Wiederholungsbefehl 2300 bei der Adresse M + K verursacht, dass der Befehl 2302 bei der Adresse M + K + 1 in einer ausgewählten Anzahl wiederholt wird. In diesem Fall sind im SEC_DPC 911 keine Diskontinuitätsabtastwerte gespeichert. Im TRC_LEVT 2320, der dem wiederholten Befehl entspricht, ist jedoch das RPTS-Bit 2321 gesetzt, um anzugeben, dass ein Wiederholungseinzelbefehl ausgeführt wird. In diesem Fall ist der Befehl 2302 kein bedingter Befehl, deshalb ist das EXECOND-Bit 2322 nicht gesetzt. Die Tabelle 22 beschreibt den Prozess, um eine Einzelwiederholung zu erfassen.
  • Figure 00590001
  • Figure 00600001
    Tabelle 22 – Der Prozess, um eine Einzelwiederholung zu erfassen
  • Wenn es eine Diskontinuität gibt, die auf einen bedingten Befehl innerhalb eines Wiederholungsblocks zurückzuführen ist, dann kann die Folge der Ausführung in der Iteration, in der die Bedingung zu einem wahr ausgewertet wird, von 5 anderen Iterationen verschieden sein, in denen die Bedingungen zu einem falsch ausgewertet werden. Die Tabelle 23 veranschaulicht ein typisches Beispiel.
  • Figure 00600002
    Tabelle 23 – Ein Beispiel-Code mit einem bedingten Befehl in einem Wiederholungsblock
  • Wie in der Tabelle 23 gezeigt ist, besitzt die Iteration, in der "cond" zu einem "WAHR" ausgewertet wird, eine andere Ausführungsfolge als die Iterationen, in denen "cond" zu einem "FALSCH" ausgewertet wird. Ein derartiger Fall wird bearbeitet, indem angegeben wird, dass es eine Diskontinuität gibt, die auf einen bedingten Befehl innerhalb eines Wiederholungsblocks zurückzuführen ist, folglich selbst wenn TRC_RPT = 0 gilt (dies impliziert, dass die Wiederholungsblockiteration nur einmal gespeichert wird), wobei dann die Verfolgung am Ende der Iteration nicht angehalten wird, sondern in der nächsten Iteration fortgesetzt wird. Dieser Prozess wird iterativ angewendet, bis eine Iteration erreicht wird, in der die "cond" falsch ist und der Wiederholungsblock wie ein geradliniger Code ausgeführt wird. Dieser Ansatz verfolgt die richtige Befehlsausführungs-Sequentialisierung.
  • In dem Fall, in dem ein Aufrufbefehl innerhalb eines Wiederholungsblocks die Ausführung eines weiteren Wiederholungsblocks verursacht, wird dies dann als eine Verschachtelung der Ebene 2 betrachtet. Die Tabelle 24 veranschaulicht einen typischen Fall. In diesem Fall wird, selbst wenn TRC_RPT = 0 gilt, nur RPTB2 komprimiert. RPTB1 wird für alle Iterationen voll verfolgt.
  • Figure 00620001
    Tabelle 24 – Ein Aufrufbefehl innerhalb eines wiederholten Blocks
  • Ein weiterer Spezialfall ist für die Verfolgung beim Vorhandensein von Unterbrechungen vorgesehen. Wenn im Verfolgungssteuerregister 926 TRC_BACK = 1 und TRC_INT = 0 gilt, wird nur der Hintergrundcode verfolgt. Während die Codeausführung innerhalb des Unterbrechungs-Dienstprogramms (ISR) nicht verfolgt wird, werden die Diskontinuitäten, die auf den Eintritt in das und das Verlassen des ISR zurückzuführen sind, im Diskontinuitäts-PC-Abschnitt des Verfolgungs-FIFO gespeichert.
  • Es wird ein 3-Bit-Zähler verwendet, um den Kontext des ISR zu bewahren. Dieser Zähler wird um "1" inkrementiert, wann immer eine Unterbrechung genommen wird (PCINT = 1), und dekrementiert, wenn die Unterbrechung zurückspringt (PCINTR = 1). Der Wert des Zählers beträgt beim Rücksetzen 0. Dieser Zähler wird so verwendet, dass alle Unterbrechungsverfolgung blockiert ist, wenn nur TRC_BACK gesetzt ist.
  • Der Verfolgungs-FIFO schafft einen Mechanismus, durch den ein spezifischer Abschnitt des Codes verfolgt werden kann. Eine Startadresse und eine Endadresse des Codes werden spezifiziert, indem die Fensterunterbrechungspunkt-Schaltungsanordnung 824 geladen wird. Das Signal EXT_QUAL 825 wird für die Dauer zwischen diesen 2 Gegenstücken aktiv. Ein Bitfeld im Steuerregister 926, das als TRC_EXTQUAL bezeichnet wird, wird verwendet, um den Verfolgungs-FIFO zu steuern, der in diese Betriebsart eintritt. Dieses Merkmal erlaubt, dass ein kleines Codefragment allein verfolgt wird, ohne den ganzen Code zu verfolgen. In dieser Betriebsart ist der Verfolgungs-FIFO nur für die Dauer des EXT_QUAL-Signals von der Unterbrechungspunktlogik aktiv. Die Bits TRC_INT und TRC_BACK im TRC_CNTL-Register sind selbst in dieser Betriebsart immer noch gültig. Vorteilhaft erlaubt dies die Verfolgung von Unterbrechungen, die in einem kleinen Abschnitt des Codes auftreten. Um zur normalen Verfolgungsbetriebsart zurückzugehen, wird eine "0" in das TRC_EXTQUAL-Feld geschrieben.
  • Der Prozess zum Rekonstruieren einer Befehlsadressenfolge wird nun ausführlicher beschrieben. In 17 hält das LPC OFFSET REGISTER 823 den Decodierungs-PC-Wert für den letzten Befehl zusammen mit den TRC_LEVT-Bits. Das TRC_LEVT-Feld und die TRC_DEVT-Felder sind in 18 bzw. 19 veranschaulicht. Die F2-, F1- und F0-Bits im TRC_LEVT geben das Längenformat des vorhergehenden Befehls an.
  • Die Folge der Schritte zum Rekonstruieren der Folge der Befehlsadressen durch Interpolieren zwischen jeder Diskontinuität in der Folge der Diskontinuitätsadressen ist im Folgenden gezeigt:
    • 1. Lesen des LPC OFFSET-Registers 823, das die Adresse X enthält.
    • 2. Lesen des letzten Abtastwerts 1720 im SEC_DPC 911, der ein Paar von 32-Bit-Werten, P + Q und R, enthält.
    • 3. Der zweite Wert, R, in dem Paar ist das Ziel der Diskontinuität, wobei er als solcher im TRC_DEVT-Feld 1721 markiert ist.
    • 4. Der Adressenbereich von dieser Diskontinuitätsadresse R zur Adresse X im LPC OFFSET REGISTER ist sequentieller Code. Alle Adressen in diesem Bereich können rekonstruiert werden, indem der Befehlsformatwert in jedem Abtastwert der Folge 1711 iterativ vom Wert im LPC_OFFSET-Register subtrahiert wird.
    • 5. Wenn der Wert der Adresse R erreicht wird, wird dann gefolgert, dass das Ende dieses Segments erreicht worden ist. In dieser Weise werden alle Adressen im Bereich R bis X konstruiert.
    • 6. Der erste 32-Bit-Wert P + Q im SEC_DPC-Abtastwert 1720 zeigt die volle 24-Bit-Adresse, die die Diskontinuität verursacht hat. Die nicht gezeigten TRC_LEVT-Bits zusammen mit ihm besitzen die Formatinformationen. Dieser Wert wird für den nächsten Bereich anstelle des Wertes im LPC_OFFSET-Register verwendet.
    • 7. Durch das Wiederholen der Schritte 2 bis 5 werden alle Adressen im Bereich P bis P + Q rekonstruiert.
    • 8. Wiederholen der Schritte 2–6, bis der Anfang des SEC_DPC erreicht ist.
  • Um die Verfolgungsregister zu lesen, wird das folgende Verfahren zum Lesen des FIFO verwendet:
    • 1. Setzen des TRC_LCK-Bits im Verfolgungssteuerregister auf "1", andernfalls wird die Lesetransaktion zeitlich gesperrt.
    • 2. Lesen des LPC OFFSET REGISTER.
    • 3. Lesen des Verfolgungszeigerregisters 920921, um den letzten Round-Robin-Eintrittspunkt im SEC_LPC und im SEC_DPC zu bestimmen. Aus den Zeigerwerten werden die richtigen Rbus-Adressen bestimmt.
    • 4. Vollständiges Lesen des FIFO. Lesen der geeigneten Menge von Verfolgungsregistern im SEC_DPC, auf den durch den TRC_DWPTR 921 gezeigt wird. Jeder Eintrag im SEC_DPC ist ein 32-Bit-Wert, wobei zwei Rbus-Leseoperationen erforderlich sind, um den ganzen Wert zu erhalten. Wie früher beschrieben worden ist, enthält jeder vollständige Diskontinuitätsabtastwert zwei Einträge. Lesen der geeigneten Menge von Verfolgungsregistern im SEC_LPC, auf die durch den TRC_LWPTR 920 gezeigt wird. Jeder Eintrag im SEC_LPC ist 8 Bits breit. Deshalb ergibt jede Rbus-Leseoperation 2 Einträge vom SEC_LPC. Der letzte Wert ist in der unteren Hälfte des Rbus-Datenbusses verfügbar.
    • 5. Setzen des TRC_LCK auf "0", um die Verfolgung wiederaufzunehmen.
  • 23 ist ein Blockschaltplan, der eine alternative Ausführungsform eines digitalen Systems mit dem DSP 100 gemäß den Aspekten der vorliegenden Erfindung veranschaulicht. Das digitale System 800 enthält den Prozessor 100, wie früher beschrieben worden ist, und einen zweiten Prozessor, der als Host-Prozessor 810 bezeichnet wird. Der DSP-Kern 100 führt die mit der digitalen Signalverarbeitung in Beziehung stehenden Aufgaben aus, während der Host-Prozessor 810 die anderen Anwendungsaufgaben ausführt. Der DSP 100 ist über den Bus 830 mit einer internen Programmspeicherschaltung 801 und mit einer Zweiport-Kommunikationsspeicherschaltung 802 verbunden. Der Verfolgungs-FIFO 823 überwacht den Bus 830, um die Befehlsholadressen abzutasten. Die Brücke 803 ist außerdem mit dem Bus 830 verbunden, wobei sie über den Bus 831 Zugriff auf die Peripherievorrichtungen 820 und 821 schafft. Über den Bus 831 wird außerdem Zugriff auf die dedizierte Hardware 822 geschaffen, die verschiedene Vorrichtungen und Schaltungen, wie z. B. Zeitgeber, Leistungssteuerungen, eine Austest- und Emulations-Schaltungsanordnung und dergleichen, enthält. Der Verfolgungs-FIFO 823 ist außerdem mit dem Bus 831 verbunden, um Zugriff auf den Verfolgungs-FIFO zu schaffen, um auf die darin gespeicherten Verfolgungsdaten zuzugreifen. Die Unterbrechungsanforderungssignale 840 stellen dem DSP 100 die Unterbrechungsanforderungen von den Vorrichtungen 820822 bereit.
  • Der Host-Prozessor 810 ist über den Bus 833 mit einer Host-Prozessor-Schnittstellenschaltung (HPI) 811 verbunden. Die HPI 811 schafft die Pufferung und die Zeitsteuerung, um dem Host-Prozessor 810 zu erlauben, über den Bus 832 auf die Kommunikationsspeicherschaltung 802 zuzugreifen. In dieser Weise kann der Host-Prozessor 810 Datenwerte im Kommunikationsspeicher 802 speichern und auf Datenwerte im Kommunikationsspeicher 802 zugreifen, die außerdem durch den DSP 100 gespeichert werden können und auf die außerdem durch den DSP 100 zugegriffen werden kann. Der Bus 832 ist vom Bus 830 separat, wobei der Kommunikationsspeicher 802 so beschaffen ist, dass der Host-Prozessor 810 auf die Datenwerte in der Zweiport-Speicherschaltung 802 in einer Weise zugreifen kann, die den Betrieb der Speicherschaltung 801 nicht beeinflusst. Die Unterbrechungsanforderungssignale 841 stellen dem DSP 100 die Unterbrechungsanforderungen vom Host-Prozessor 810 bereit.
  • Die Host-Port-Schnittstelle 811 besitzt zwei Register, ein Unterbrechungsregister 812, um Unterbrechungsanforderungen zu aktivieren, und ein Zustandregister 813 für die HPI-Betriebsarten. Beide Register sind über den Bus 833 durch den Host 810 zugänglich. Das Unterbrechungsregister 812 ist betreibbar, um die Host-Unterbrechungsanforderungen für den Prozessor 100 in Reaktion auf eine Schreibtransaktion vom Host 810 zu aktivieren. In der vorliegenden Ausführungsform werden acht Bits ausgewählt, um acht Host-Unterbrechungsanforderungssignale bereitzustellen. Ein Unterbrechungsanforderungsimpuls wird jedes Mal, wenn der Host eine "1" in das Bit schreibt, das jeder Host-Unterbrechungsanforderung im Unterbrechungsregister 812 zugeordnet ist, in einem oder mehreren der acht Host-Anforderungssignale 841 gebildet. Eine weitere Ausführungsform kann eine kleinere oder größere Anzahl von Unterbrechungsanforderungssignalen besitzen, die einem Host-Prozessor zugeordnet sind.
  • 24 ist eine schematische Darstellung einer integrierten Schaltung, die den Prozessor 100 enthält. Wie gezeigt ist, enthält die integrierte Schaltung mehrere Kontakte für den Oberflächeneinbau. Die integrierte Schaltung könnte jedoch andere Konfigurationen einschließen, z. B. mehrere Anschlussstifte auf einer unteren Oberfläche der Schaltung für den Einbau in einen steckkraftfreien Sockel oder in der Tat irgendeine andere geeignete Konfiguration.
  • 25 veranschaulicht eine beispielhafte Implementierung eines Beispiels einer derartigen integrierten Schaltung in einer Mobiltelekommunikationsvorrichtung, wie z. B. einem Mobiltelephon, mit der integrierten Tastatur 12 und der integrierten Anzeige 14. Wie in 25 gezeigt ist, ist das digitale System 10 mit dem Prozessor 100 mit der Tastatur 12, wo es geeignet ist über einen (nicht gezeigten) Tastaturadapter, mit der Anzeige 14, wo es geeignet ist über einen (nicht gezeigten) Anzeigeadapter, und mit der Hochfrequenz-Schaltungsanordnung (HF-Schaltungsanordnung) 16 verbunden. Die HF-Schaltungsanordnung 16 ist mit einer Antenne 18 verbunden.
  • Die Fertigung der Datenverarbeitungsvorrichtung 100 umfasst mehrere Schritte des Implantierens verschiedener Mengen von Störstellen in ein Halbleitersubstrat und des Diffundierens der Störstellen in ausgewählte Tiefen innerhalb des Substrats, um Transistorvorrichtungen auszubilden. Es werden Masken ausgebildet, um die Anordnung der Störstellen zu steuern. Es werden mehrere Schichten leitenden Materials und isolierenden Materials abgeschieden und geätzt, um die verschiedenen Vorrichtungen zu verbinden. Diese Schritte werden in einer Reinraumumgebung ausgeführt.
  • Ein signifikanter Teil der Kosten, um die Datenverarbeitungsvorrichtung zu erzeugen, umfasst das Prüfen. Die einzelnen Vorrichtungen werden in einen Betriebszustand vorgespannt und mit einer Sonde auf die elementare betriebsfähige Funktionalität untersucht, während sie in einer Wafer-Form vorliegen. Der Wafer wird dann in einzelne Chips getrennt, die als bloße Chips oder eingekapselt verkauft werden können. Nach der Einkapselung werden die fertiggestellten Teile in einen Betriebszustand vorgespannt und auf betriebsfähige Funktionalität geprüft.
  • Eine alternative Ausführungsform der neuartigen Aspekte der vorliegenden Erfindung kann andere Schaltungsanordnungen enthalten, die mit den hierin offenbaren Schaltungsanordnungen kombiniert sind, um die Gesamtsumme der Gatter der kombinierten Funktionen zu verringern. Weil die Fachleute auf dem Gebiet die Techniken für die Minimierung der Gatter kennen, sind die Einzelheiten einer derartigen Ausführungsform hierin nicht beschrieben.
  • Folglich ist ein Prozessor beschrieben worden, der ein programmierbarer digitaler Signalprozessor (DSP) ist, der sowohl eine hohe Codedichte als auch eine leichte Programmierung bietet. Die Architektur und der Befehlssatz sind für eine niedrige Leistungsaufnahme und eine Ausführung mit hohem Wirkungsgrad sowohl der DSP-Algorithmen, wie z. B. für drahtlose Telephone, als auch reiner Steueraufgaben optimiert. Der Prozessor enthält eine Befehlspuffereinheit und eine Datenrecheneinheit, um die durch die Befehlspuffereinheit decodierten Befehle auszuführen. Die Befehle können in einer parallelen Weise entweder in Reaktion auf implizite Parallelität oder in Reaktion auf vom Anwender definierte Parallelität ausgeführt werden. Außerdem besitzt der Mikroprozessor Mittel, um die Befehlsadresse des ersten Befehls zu verfolgen, die betreibbar sind, um die Adresse des ersten Befehls nur zu speichern, wenn der erste Befehl einer Diskontinuität in der Folge der Befehle benachbart ist.
  • Der Verfolgungs-FIFO speichert nur volle Programmadressen, die einer Diskontinuität des Befehlsadressenstroms benachbart sind. Für sequentielle Adressen wird ein Dateneintrag gespeichert, der das Längenformat jedes Befehls angibt, sodass die Befehlsadressenfolge rekonstruiert werden kann. Für Wiederholungs befehle wird nur die erste Diskontinuität gespeichert. Vorteilhaft kann dadurch ein kleinerer FIFO ausreichend Informationen speichern, um eine viel längere Folge von Befehlsadressen zu rekonstruieren.
  • Eine weitere Ausführungsform kann außerdem die Datenadressen verfolgen.
  • Die vorliegende Ausführungsform begrenzt die Größen der Verfolgungseinträge auf 1 Byte pro Befehl. Dies erlaubt die Bereitstellung irgendeines Befehlszustands (Befehlsgröße, Befehlsbedingung (wahr oder falsch) usw.). Um die Größe weiter zu minimieren, könnte eine weitere Ausführungsform z. B. 2 Bits verwenden, um jeden Befehl anzugeben. In einer derartigen Ausführungsform würde nur die Anzahl der durch den Prozessor ausgeführten Befehle bekannt sein, z. B. 44 Befehle in einer Zeile, die bei dem Wert beginnt, der in LPCOFFSET enthalten ist. Die Codierung könnte z. B. sein:
    01B → DISCONTINUITY: betrachte den Diskontinuitätseintrag, um vom/zum PC zu bestimmen
    10B → LINEAR FLOW: –1 Befehl vom vorhergehenden 00/11B → INVALID
  • Beginnend beim LPCOFFSET kann der Befehlsfluss rekonstruiert werden, indem jedes 2-Bit-Feld untersucht wird und indem bestimmt wird, ob der Befehl vor LPCOFFSET linear war oder eine Diskontinuität war. Ein externes Testsystem, wie z. B. das Testsystem 870, kann das Programmlisting konsultieren, um die Länge jedes Befehls zu bestimmen. Die nicht benutzten Bedingungen könnten außerdem verwendet werden, um zusätzliche Informationen zu befördern.
  • In einer weiteren Ausführungsform sind alle Einträge für lineare Befehle durch einen einzelnen Eintrag ersetzt, der die Anzahl der linear ausgeführten Befehle ist. Im obigen Beispiel würde z. B. ein Wert von "43" nach dem Codierungseintrag "des linearen Ablaufs" eingetragen sein. Die Austest-Software im Testsystem könnte den Programmablauf rekonstruieren, indem sie das Programmlisting konsultiert.
  • Andere Ausführungsformen können andere Typen der Komprimierung der PC-Verfolgung gemäß den Aspekten der vorliegenden Erfindung besitzen, um eine komprimierte Darstellung einer Folge von Befehlen zu speichern, die in einer linearen Weise ausgeführt wird.
  • Die Begriffe "angelegt", "verbunden" und "Verbindung" bedeuten, wie sie hierin verwendet werden, elektrisch verbunden, einschließlich des Falls, in dem sich zusätzliche Elemente im elektrischen Verbindungsweg befinden können.
  • Während die Erfindung unter Bezugnahme auf veranschaulichende Ausführungsformen beschrieben worden ist, ist nicht beabsichtigt, dass diese Beschreibung in einem einschränkenden Sinn ausgelegt wird. Für die Fachleute auf dem Gebiet werden unter Bezugnahme auf diese Beschreibung verschiedene andere Ausführungsformen der Erfindung offensichtlich sein. Es ist deshalb beabsichtigt, dass die beigefügten Ansprüche alle derartigen Modifikationen der Ausführungsformen einschließen, die in den wahren Umfang der Erfindung fallen.

Claims (10)

  1. Digitales System (10), das einen Mikroprozessor (100) enthält, wobei der Mikroprozessor so betreibbar ist, dass er eine Folge von Befehlen ausführt, die von einem Befehlsbus (122) erhalten werden, wobei der Mikroprozessor umfasst: eine Befehlspuffereinheit (106), die so betreibbar ist, dass sie einen Befehl der Befehlsfolge decodiert; und Mittel (802) zum Verfolgen der Befehlsadresse des Befehls; wobei die Verfolgungsmittel so betreibbar sind, dass sie die Adresse des Befehls speichern; dadurch gekennzeichnet, dass es ferner umfasst: Mittel (108), die eine Befehlsadresse bereitstellen, die den ersten Befehl in der Folge von Befehlen, die von der Befehlspuffereinheit decodiert werden sollen, identifiziert; und dass die Verfolgungsmittel so betreibbar sind, dass sie die Adresse des Befehls nur speichern, wenn der Befehl einer Diskontinuität in der Folge von Befehlsadressen vorhergeht oder folgt, wobei die Verfolgungsmittel ferner so betreibbar sind, dass sie eine komprimierte Darstellung eines Abschnitts der Folge von Befehlsadressen, die in einer linearen Weise ausgeführt wird, speichern.
  2. Digitales System nach Anspruch 1, bei dem die komprimierte Darstellung ein Längenformatdaten-Element umfasst, die eine Länge jedes Befehls angibt.
  3. Digitales System nach Anspruch 1 oder Anspruch 2, bei dem die Verfolgungsmittel ferner so betreibbar sind, dass sie Daten des Diskontinuitätsereignis-Typs speichern.
  4. Digitales System nach einem vorhergehenden Anspruch, bei dem die Verfolgungsmittel so betreibbar sind, dass sie eine Befehlsadresse des ersten Befehls nur einmal speichern, falls der erste Befehl ein Wiederholungsbefehl ist.
  5. 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.
  6. Verfahren zum Betreiben eines digitalen Systems, das einen Mikroprozessor enthält, der so betreibbar ist, dass er eine Folge von Befehlsadressen, die durch eine Befehlspuffereinheit decodiert werden sollen, verfolgt, wobei das Verfahren die folgenden Schritte umfasst: Decodieren eines Befehls der Befehlsfolge in der Befehlspuffereinheit; und Verfolgen der Befehlsadresse des Befehls durch Speichern der Adresse; gekennzeichnet durch die folgenden weiteren Schritte: Bereitstellen einer Befehlsadresse, die einen ersten Befehl in einer Befehlsfolge identifiziert; Verfolgen der Befehlsadresse des Befehls nur dann, wenn der Befehl einer Diskontinuität in der Folge von Befehlsadressen vorhergeht oder folgt; und Speichern einer komprimierten Darstellung eines Abschnitts der Folge von Befehlsadressen, die in einer linearen Weise ausgeführt wird.
  7. Verfahren zum Betreiben eines digitalen Systems nach Anspruch 6, das ferner die Schritte des Wiederholens der Schritte des Bereitstellens, Decodierens und Verfolgens umfasst, um eine Folge von Diskontinuitätsadressen zu bilden.
  8. Verfahren zum Betreiben eines digitalen Systems nach Anspruch 6 oder Anspruch 7, das ferner die Schritte des Rekonstruierens der Folge von Befehlsadressen durch Interpolieren zwischen jeder Diskontinuität in der Folge von Diskontinuitätsadressen umfasst.
  9. Verfahren nach Anspruch 6, Anspruch 7 oder Anspruch 8, bei dem der Verfolgungsschritt ferner umfasst: Speichern eines Längenformatdaten-Elements, das die Länge des Befehls angibt, um eine Folge von Befehlslängen zu bilden.
  10. Verfahren nach einem der Ansprüche 6–9, bei dem der Verfolgungsschritt ferner den Schritt umfasst, bei dem die Befehlsadresse des Befehls nur einmal gespeichert wird, falls der erste Befehl ein Wiederholungsbefehl ist.
DE69927456T 1998-10-06 1999-03-08 Verwaltung eines FIFO zur Ablaufverfolgung Active DE69927456T8 (de)

Applications Claiming Priority (2)

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

Publications (3)

Publication Number Publication Date
DE69927456D1 DE69927456D1 (de) 2005-11-03
DE69927456T2 true DE69927456T2 (de) 2006-06-22
DE69927456T8 DE69927456T8 (de) 2006-12-14

Family

ID=8235512

Family Applications (5)

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

Family Applications Before (2)

Application Number Title Priority Date Filing Date
DE69942482T Expired - Lifetime DE69942482D1 (de) 1998-10-06 1999-03-08 Cachespeicherkohärenz während der Emulation
DE69942080T Expired - Lifetime DE69942080D1 (de) 1998-10-06 1999-03-08 Speicherzugriff mit Bytequalifizierer

Family Applications After (2)

Application Number Title Priority Date Filing Date
DE69926458T Expired - Lifetime DE69926458T2 (de) 1998-10-06 1999-03-08 Vorrichtung und Verfahren für einen Software-Haltepunkt während eines Verzögerungsschlitzes
DE69932481T Expired - Lifetime DE69932481T2 (de) 1998-10-06 1999-03-08 Kellerzeigerverwaltung

Country Status (3)

Country Link
US (1) US6658578B1 (de)
EP (1) EP0992916A1 (de)
DE (5) DE69942482D1 (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
AU5805300A (en) 1999-06-10 2001-01-02 Pact Informationstechnologie Gmbh Sequence partitioning in cell structures
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
AU2001286383A1 (en) * 2000-05-05 2001-11-26 Ruby B. Lee A method and system for performing permutations with bit permutation instructions
US6665795B1 (en) * 2000-10-06 2003-12-16 Intel Corporation Resetting a programmable processor
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
DE60138805D1 (de) * 2001-06-29 2009-07-09 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
US20030188143A1 (en) * 2002-03-28 2003-10-02 Intel Corporation 2N- way MAX/MIN instructions using N-stage 2- way MAX/MIN blocks
US6976049B2 (en) * 2002-03-28 2005-12-13 Intel Corporation Method and apparatus for implementing single/dual packed multi-way addition instructions having accumulation options
US7278136B2 (en) * 2002-07-09 2007-10-02 University Of Massachusetts Reducing processor energy consumption using compile-time information
US7493607B2 (en) * 2002-07-09 2009-02-17 Bluerisc Inc. Statically speculative compilation and execution
US7243243B2 (en) * 2002-08-29 2007-07-10 Intel Corporatio Apparatus and method for measuring and controlling power consumption of a computer system
US7047397B2 (en) * 2002-09-13 2006-05-16 Intel Corporation Method and apparatus to execute an instruction with a semi-fast operation in a staggered ALU
US7110940B2 (en) * 2002-10-30 2006-09-19 Microsoft Corporation Recursive multistage audio processing
US7801120B2 (en) * 2003-01-13 2010-09-21 Emulex Design & Manufacturing Corporation Method and system for efficient queue management
US20040154010A1 (en) * 2003-01-31 2004-08-05 Pedro Marcuello Control-quasi-independent-points guided speculative multithreading
JP4042604B2 (ja) * 2003-03-31 2008-02-06 日本電気株式会社 プログラム並列化装置,プログラム並列化方法およびプログラム並列化プログラム
US20050010726A1 (en) * 2003-07-10 2005-01-13 Rai Barinder Singh Low overhead read buffer
US7360023B2 (en) 2003-09-30 2008-04-15 Starcore, Llc Method and system for reducing power consumption in a cache memory
US7308681B2 (en) * 2003-10-28 2007-12-11 International Business Machines Corporation Control flow based compression of execution traces
US20050114850A1 (en) 2003-10-29 2005-05-26 Saurabh Chheda Energy-focused re-compilation of executables and hardware mechanisms based on compiler-architecture interaction and compiler-inserted control
US7996671B2 (en) 2003-11-17 2011-08-09 Bluerisc Inc. Security of program executables and microprocessors based on compiler-architecture interaction
CN100584124C (zh) * 2003-12-19 2010-01-20 诺基亚公司 用于在无线通信设备中选择无线电资源的方法和设备
DE602004020681D1 (de) * 2004-02-02 2009-05-28 Nokia Corp Etriebszustands 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
EP1849117A1 (de) * 2005-02-11 2007-10-31 Universal Data Protection Corporation Verfahren und system für mikroprozessor-datensicherheit
WO2006106272A2 (fr) * 2005-04-07 2006-10-12 France Telecom Procede de synchronisation entre une operation de traitement de reconnaissance vocale et une action de declenchement du dit traitement
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 株式会社メガチップス 記憶装置および情報処理装置
US20070188505A1 (en) * 2006-01-10 2007-08-16 Lazar Bivolarski Method and apparatus for scheduling the processing of multimedia data in parallel processing systems
US8082287B2 (en) * 2006-01-20 2011-12-20 Qualcomm Incorporated Pre-saturating fixed-point multiplier
US7836435B2 (en) * 2006-03-31 2010-11-16 Intel Corporation Checking for memory access collisions in a multi-processor architecture
US20070261031A1 (en) * 2006-05-08 2007-11-08 Nandyal Ganesh M Apparatus and method for encoding the execution of hardware loops in digital signal processors to optimize offchip export of diagnostic data
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
US7949925B2 (en) * 2006-09-29 2011-05-24 Mediatek Inc. Fixed-point implementation of a joint detector
CN101553994A (zh) * 2006-09-29 2009-10-07 联发科技股份有限公司 联合检测方法及设备
US7953958B2 (en) * 2006-09-29 2011-05-31 Mediatek Inc. Architecture for joint detection hardware accelerator
JP2008090390A (ja) * 2006-09-29 2008-04-17 Matsushita Electric Ind Co Ltd マイコンデバッグシステムおよびマイクロコンピュータ
US20080141013A1 (en) * 2006-10-25 2008-06-12 On Demand Microelectronics Digital processor with control means for the execution of nested loops
US20080126766A1 (en) 2006-11-03 2008-05-29 Saurabh Chheda Securing microprocessors against information leakage and physical tampering
US8010814B2 (en) * 2006-12-04 2011-08-30 Electronics And Telecommunications Research Institute Apparatus for controlling power management of digital signal processor and power management system and method using the same
US7752028B2 (en) * 2007-07-26 2010-07-06 Microsoft Corporation Signed/unsigned integer guest compare instructions using unsigned host compare instructions for precise architecture emulation
US9035957B1 (en) * 2007-08-15 2015-05-19 Nvidia Corporation Pipeline debug statistics system and method
US7949917B2 (en) * 2007-12-13 2011-05-24 Texas Instruments Incorporated Maintaining data coherency in multi-clock systems
US8108013B2 (en) * 2007-12-13 2012-01-31 Motorola Mobility, Inc. Systems and methods for managing power consumption in a flow-based user experience
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
US10437602B2 (en) 2012-06-15 2019-10-08 International Business Machines Corporation Program interruption filtering in transactional execution
US8966324B2 (en) 2012-06-15 2015-02-24 International Business Machines Corporation Transactional execution branch indications
US9448796B2 (en) 2012-06-15 2016-09-20 International Business Machines Corporation Restricted instructions in transactional execution
US9772854B2 (en) 2012-06-15 2017-09-26 International Business Machines Corporation Selectively controlling instruction execution in transactional processing
US9740549B2 (en) 2012-06-15 2017-08-22 International Business Machines Corporation Facilitating transaction completion subsequent to repeated aborts of the transaction
US8688661B2 (en) 2012-06-15 2014-04-01 International Business Machines Corporation Transactional processing
US9436477B2 (en) 2012-06-15 2016-09-06 International Business Machines Corporation Transaction abort instruction
US9442737B2 (en) 2012-06-15 2016-09-13 International Business Machines Corporation Restricting processing within a processor to facilitate transaction completion
US9336046B2 (en) 2012-06-15 2016-05-10 International Business Machines Corporation Transaction abort processing
US9384004B2 (en) 2012-06-15 2016-07-05 International Business Machines Corporation Randomized testing within transactional execution
US8880959B2 (en) 2012-06-15 2014-11-04 International Business Machines Corporation Transaction diagnostic block
US9317460B2 (en) 2012-06-15 2016-04-19 International Business Machines Corporation Program event recording within a transactional environment
US8682877B2 (en) 2012-06-15 2014-03-25 International Business Machines Corporation Constrained transaction execution
US9367323B2 (en) 2012-06-15 2016-06-14 International Business Machines Corporation Processor assist facility
US20130339680A1 (en) 2012-06-15 2013-12-19 International Business Machines Corporation Nontransactional store instruction
US9348642B2 (en) 2012-06-15 2016-05-24 International Business Machines Corporation Transaction begin/end instructions
US9361115B2 (en) 2012-06-15 2016-06-07 International Business Machines Corporation Saving/restoring selected registers 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
US10846196B1 (en) 2017-06-09 2020-11-24 Azul Systems, Inc. Code optimization for connected managed runtime environments
US10523428B2 (en) 2017-11-22 2019-12-31 Advanced Micro Devices, Inc. Method and apparatus for providing asymmetric cryptographic keys
US10713021B2 (en) * 2018-03-05 2020-07-14 Apple Inc. Geometric 64-bit capability pointer
JP7163697B2 (ja) * 2018-09-28 2022-11-01 富士通株式会社 生成プログラム,情報処理装置及び生成方法
US11042468B2 (en) * 2018-11-06 2021-06-22 Texas Instruments Incorporated Tracking debug events from an autonomous module through a data pipeline
CN111722916B (zh) * 2020-06-29 2023-11-14 长沙新弘软件有限公司 一种通过映射表处理msi-x中断的方法
US11740993B2 (en) * 2021-08-31 2023-08-29 Apple Inc. Debug trace of cache memory requests
US11775305B2 (en) * 2021-12-23 2023-10-03 Arm Limited Speculative usage of parallel decode units
CN117539705B (zh) * 2024-01-10 2024-06-11 深圳鲲云信息科技有限公司 片上系统的验证方法、装置、系统及电子设备

Family Cites Families (10)

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

Also Published As

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

Similar Documents

Publication Publication Date Title
DE69927456T2 (de) Verwaltung eines FIFO zur Abalufverfolgung
US12019559B2 (en) Method and apparatus for dual issue multiply instructions
EP0992907B1 (de) Verwaltung eines FIFO zur Abalufverfolgung
DE69633166T2 (de) Integrierter schaltkreis mit mehreren funktionen und gemeinsamer verwendung mehrerer interner signalbusse zur verteilung der steuerung des buszugriffes und der arbitration
DE102018005216A1 (de) Prozessoren, Verfahren und Systeme für einen konfigurierbaren, räumlichen Beschleuniger mit Transaktions- und Wiederholungsmerkmalen
US11681526B2 (en) Method and apparatus for vector based finite impulse response (FIR) filtering
DE68927783T2 (de) Mikroprozessor mit äusserem steuerungsspeicher
US11042468B2 (en) Tracking debug events from an autonomous module through a data pipeline
DE60016543T2 (de) Verfahren und Vorrichtung zur Ausführung von Kode-Haltepunkt-Befehlen in einem Prozessor
US6502152B1 (en) Dual interrupt vector mapping
EP0992905A2 (de) Cachespeicher-Fehlgriffbenchmarkierung
CN113853591A (zh) 将预定义填补值插入到向量流中
US12019561B2 (en) Pseudo-first in, first out (FIFO) tag line replacement
US11500784B2 (en) Pseudo-first in, first out (FIFO) tag line replacement
EP0992902A2 (de) Doppelte Unterbrechungsvektorabbildung
JP2000267934A (ja) キャッシュ・ミスのベンチマーク・テスト

Legal Events

Date Code Title Description
8364 No opposition during term of opposition