DE69724771T2 - Zentralprozessoreinheit mit x86 und dsp kern und einem dsp funktions-dekoder zum abbilden von x 86-befehlen auf dsp-befehle - Google Patents

Zentralprozessoreinheit mit x86 und dsp kern und einem dsp funktions-dekoder zum abbilden von x 86-befehlen auf dsp-befehle Download PDF

Info

Publication number
DE69724771T2
DE69724771T2 DE69724771T DE69724771T DE69724771T2 DE 69724771 T2 DE69724771 T2 DE 69724771T2 DE 69724771 T DE69724771 T DE 69724771T DE 69724771 T DE69724771 T DE 69724771T DE 69724771 T2 DE69724771 T2 DE 69724771T2
Authority
DE
Germany
Prior art keywords
instructions
digital signal
signal processing
sequence
instruction
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
DE69724771T
Other languages
English (en)
Other versions
DE69724771D1 (de
Inventor
Saf Asghar
Mark Ireton
John Bartkowiak
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.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices 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 Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of DE69724771D1 publication Critical patent/DE69724771D1/de
Application granted granted Critical
Publication of DE69724771T2 publication Critical patent/DE69724771T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • 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/3818Decoding for concurrent execution
    • G06F9/3822Parallel decoding, e.g. parallel decode units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7839Architectures of general purpose stored program computers comprising a single central processing unit with memory
    • G06F15/7842Architectures of general purpose stored program computers comprising a single central processing unit with memory on one IC chip (single chip microcontrollers)
    • G06F15/7857Architectures of general purpose stored program computers comprising a single central processing unit with memory on one IC chip (single chip microcontrollers) using interleaved memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • 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/3017Runtime instruction translation, e.g. macros
    • G06F9/30174Runtime instruction translation, e.g. macros for non-native instruction set, e.g. Javabyte, legacy code
    • 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/30181Instruction operation extension or modification
    • G06F9/30196Instruction operation extension or modification using decoder, e.g. decoder per instruction set, adaptable or programmable decoders
    • 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/3818Decoding for concurrent execution
    • G06F9/382Pipelined decoding, e.g. using predecoding
    • 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
    • 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/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Advance Control (AREA)

Description

  • Gebiet der Erfindung
  • Die vorliegende Erfindung betrifft eine Computersystem-CPU oder einen Computersystem-Mikroprozessor mit einem Allzweck-Kern und einem DSP-Kern, wobei die CPU einen DSP-Funktions-Dekodierer aufweist, der zum Ausführen von DSP-Typ-Funktionen vorgesehene Allzweck-Opcode-Sequenzen dekodiert und diese Opcodes in entsprechende DSP-Makros zur Ausführung durch den DSP-Kern konvertiert.
  • Beschreibung des relevanten Standes der Technik
  • Personal-Computer-Systeme und Allzweck-Mikroprozessoren wurden ursprünglich für geschäftliche Verwendungszwecke entwickelt, wie z. B. Textvearbeitung und Spreadsheets u. a. Derzeit werden Computersystem jedoch auch zur Handhabung einer Anzahl von in Echtzeit ablaufenden DSP-bezogenen Anwendungen eingesetzt, einschließlich Multimedia-Anwendungen mit Video- und Audio-Komponenten, Videoaufnahme und -playback, Telefon-Anwendungen, Spracherkennung und -synthese, und Kommunikationsanwendungen u. a. Diese Echtzeit oder DSP-artigen Anwendungen verlangen typischerweise eine erhöhte CPU-Floating-Point-Leistung.
  • Ein Problem, das aufgetreten ist, besteht darin, dass Allzweck-Mikroprozessoren, die ursprünglich für geschäftliche Anwendungen entwickelt wurden, nicht sehr gut geeignet sind für Echtzeit-Erfordernisse und die Erfordernisse mathematischer Berechnungen bei modernen DSP-bezogenen Anwendungen, wie z. B. Multimedia-Anwendungen und Kommunikations-Anwendungen. Beispielsweise ist die x86-Familie von Intel Corporation zu Berechungen auf Ganzzahl-Basis und Speicher-Management-Funktionen hin orientiert und führt Funktionen vom DSP-Typ nicht gut durch.
  • Da sich Personal-Computersysteme zu stärker echtzeitbezogenen und multimedia-fähigen Systemen entwickelt haben, wird von der Allzweck-CPU entsprechend verlangt, mathematisch intensivere Funktionen vom DSP-Typ durchzuführen. Deshalb weisen zahlreiche Computersysteme nun einen oder mehrere Signalprozessoren auf, die auf diese komplexen mathematischen Funktionen zugeschnitten sind.
  • Eine aktueller Trend bei Computersystem-Architekturen besteht in einer Entwicklung zur "Ursprungssignal-Verarbeitung" (native signal processing NSP). Die Ursprungssignal-Verarbeitung oder NSP wurde anfangs von der Intel Corporation als eine Strategie entwickelt, die DSPs von bestimmten Funktionen zu entlasten und diese Funktionen in der Haupt- oder Allzweck-CPU durchzuführen. Die Strategie basiert darauf, dass, während die Leistung und die Taktgeschwindigkeiten von Allzweck-CPUs zunehmen, die Allzweck-CPU in der Lage ist, zahlreiche der Funktionen durchzuführen, die zuvor von speziell vorgesehenen DSPs durchgeführt wurden. Somit besteht ein Trend in der Mikroprozessorindustrie in dem Bemühen, CPU-Designs mit höheren Geschwindigkeiten und mit Erweiterung um DSP-Typ-Fähigkeiten zu schaffen, wie z. B. mit leistungsfähigeren Floating-Point-Einheiten. Ein weiterer Trend in der Industrie ist derjenige, dass DSP-Hersteller DSPs schaffen, die nicht nur mit höheren Geschwindigkeiten laufen, sondern auch CPU-Typ-Fähigkeiten wie z. B. Speicher-Management-Funktionen anstreben können.
  • Ein Digitalsignalprozessor ist im wesentlichen ein Allzweck-Mikroprozessor, der spezielle Hardware zum Ausführen mathematischer Funktionen mit Geschwindigkeiten und Graden an Effizienz enthält, die bei Mikroprozessoren normalerweise nicht vorhanden sind. Bei derzeitigen Computersystemen werden DSPs als Ko-Prozessoren verwendet und arbeiten im System in Verbindung mit Allzweck-CPUs. Beispielsweise können derzeitige Computersysteme eine Allzweck-CPU als Haupt-CPU und eine oder mehrere Multimedia- oder Kommunikations-Erweiterungskarten enthalten, die spezielle vorgese hene DSPs aufweisen. Die CPU gibt mathematische Funktionen an den Digitalsignalprozessor ab, so dass die System-Effizienz verbessert wird.
  • Digitalsignalprozessoren enthalten Ausführungseinheiten mit einer oder mehreren arithmetischen Logik-Einheiten (ALUs), die mit Hardware-Multiplikatoren verbunden sind, welche komplexe mathematische Algorithmen in Pipeline-Weise implementieren. Das Instruktions-Set weist primär Instruktionen vom DSP-Typ auf und enthält ferner eine kleine Anzahl von Instruktionen, die eine Nicht-DSP-Funktionalität aufweisen.
  • Das DSP ist typischerweise optimiert für mathematische Algorithmen wie z. B. Korrelation, Konvolution, Filter mit finiter Impulsreaktion (FIR), Filter mit infiniter Impulsreaktion (IIR), Fast-Fourier-Transformationen (FFTs), Matrix-Berechnungen und innere Produkte, unter anderen Operationen. Implementierungen dieser mathematischen Algorithmen weisen generell lange Sequenzen systematischer arithmetischer/multiplikativer Operationen auf. Diese Operationen werden bei verschiedenen Gelegenheiten durch Befehle vom Entscheidungs-Typ unterbrochen. Generell sind die DSP-Sequenzen eine Wiederholung eines sehr kleinen Sets von Operationen, die während 70% bis 90% der Zeit ausgeführt werden. Die übrigen 10% bis 30% der Instruktionen sind primär Boole'sche/Entscheidungs-Operationen (oder generell Datenverarbeitung).
  • Eine Allzweck-CPU weist generell eine Ausführungseinheit, eine Speicher-Management-Einheit und eine Floating-Point-Einheit sowie weitere Logik auf. Die Aufgabe einer Allzweck-CPU besteht darin, Code- und Ausführungs-Operationen an Daten in dem Computer-Speicher vorzunehmen und somit die Bereechungs-Plattform zu handhaben. Generell ist die Allzweck-CPU-Architektur primär zur Durchführung von Boole'schen/Management-/Datenmanipulationsentscheidungs-Operationen ausgelegt. Die von einer Allzweck-CPU ausgeführten Instruktionen oder Opcodes enthalten basale mathematische Funktionen. Jedoch sind diese mathematischen Funktionen nicht sehr gut geeignet für komplexe mathematische Funktionen vom DSP- Typ. Somit ist eine Allzweck-CPU erforderlich, um eine große Anzahl von Opcodes oder Instruktionen zur Durchführung basaler DSP-Funktionen auszuführen.
  • Somit besteht der Wunsch nach einer Computersystem- und CPU-Architektur, die eine Allzweck-CPU enthält und die ferner mathematische Funktionen vom DSP-Typ mit erhöhter Leistung durchführt. Ferner wird eine CPU-Architektur gewünscht, die abwärtskompatibel mit existierenden Software-Anwendungen ist, welche annehmen, dass die Allzweck-CPU sämtliche der mathematischen Berechungen durchführt. Gewünscht ist ferner eine neue CPU-Architektur, die eine verbesserte mathematische Leistung für existierende Software-Anwendungen bietet.
  • Bei einem populären Mikroprozessor, der in Personal-Computer-Systemen verwendet wird, handelt es sich um die X86-Mikroprozessor-Familie. Zu der x86-Mikroprozessor-Familie gehören die Mikroprozessoren der Typen 8088, 8086, 80186, 80286, 80386, 1486, Pentium und P6 von Intel Corporation. Zu der X86-Mikroprozessor-Familie gehören ferner X86-kompatible Prozessoren wie die Prozessoren 4486 und K5 von Advanced Micro Devices, der M1-Prozessor von Cyrix Corporation, und die Prozessoren NextGen 5 × 86 und 6 × 86 von NextGen Corporation. Die X86-Mikroprozessor-Familie wurde ursprünglich für geschäftliche Anwendungen konzipiert und entwickelt. Generell enthält das Instruktions-Set der X86-Mikroprozessor-Familie keine hinreichende mathematische oder DSP-Funktionalität für moderne Multimedia- und Kommunikations-Anwendungen. Deshalb wird ferner eine neue X86-CPU-Architektur gewünscht, bei der DSP-Funktionen in effizienterer Weise als bei derzeitigen X86-Prozessoren implementiert sind, die jedoch auch keine neuen Opcodes für den X86-Prozessor benötigt.
  • EP-A-0,071,028 beschreibt ein Datenverarbeitungssystem mit einer Ausführungseinheit, die durch Mikroprogrammierung gesteuert wird. Ein Sequenz-Detektor prüft Opcode-Felder von Instruktionen, die ausgeführt werden sollen, um das Vorhandensein bestimmter vordefinierter Instruktions-Sequen zen festzustellen. Bei Detektion einer bestimmten Sequenz modifiziert ein Substitutions-Instruktions-Generator die erste Instruktion der Sequenz, indem er den ursprünglichen Opcode durch einen einzigartigen Opcode ersetzt, der das Vorhandensein einer Pseudo-Instruktion angibt, die nicht in den zugewiesenen Opcodes des Instruktions-Set gefunden wird. Ein geeigneter Microcode im Steuerspeicher des Prozessors bewirkt die Ausführung der Pseudo-Instruktionen.
  • Überblick über die Erfindung
  • Die vorliegende Erfindung ist in den Ansprüchen 1 und 17 aufgeführt.
  • Die vorliegende Erfindung weist eine CPU oder einen Mikroprozessor mit einer Allzweck-CPU-Komponente wie z. B. einem X86-Kern und mit einem DSP-Kern auf. Die CPU enthält einen intelligenten DSP-Funktions-Dekodierer oder Vorprozessor, der Sequenzen von Instruktionen oder Opcodes (X86-Opcodes) prüft und feststellt, ob gerade eine DSP-Funktion ausgeführt wird. Falls der DSP-Funktions-Dekodierer feststellt, dass gerade eine DSP-Funktion ausgeführt wird, nimmt der DSP-Funktions-Dekodierer eine Konvertierung oder Abbildung der Instruktions-Sequenz auf eine DSP-Makro-Instruktion oder eine Funktions-Identifizierung vor, die dem DSP-Kern zugeführt wird. Der DSP-Kern führt eine oder mehrere DSP-Instruktionen durch, um die gewünschte DSP-Funktion, auf die von dem DSP-Makro oder die Funktions-Identifizierung verwiesen wird, zu implementieren. Der DSP-Kern führt die DSP-Funktion parallel mit anderen Operationen aus, die von dem Allzweck-CPU-Kern ausgeführt werden. Der DSP-Kern führt die DSP-Funktion ferner mittels einer geringeren Anzahl von Instruktionen und auch in der einer reduzierten Anzahl von Taktzyklen aus, so dass die Systemleistung erhöht wird.
  • Gemäß der bevorzugten Ausführungsform enthält die CPU der vorliegenden Erfindung einen Instruktions-Speicher oder einen Instruktions-Cache, der Mikroprozessor-Instruktionen oder -Opcodes aus dem Systemspeicher empfängt und diese Opcodes zur Verwendung durch die CPU speichert. Die CPU enthält ferner einen DSP-Funktions-Dekodierer oder -Vorprozessor, auch bezeichnet als Instruktions-Sequenz-Vorprozessor, der Instruktions-Sequenzen in dem Instruktions-Cache analysiert und auf intelligente Weise feststellt, wann eine Funktion vom DSP-Typ implementiert ist oder durch die Instruktions-Sequenz repräsentiert ist. Der Funktions-Vorprozessor führt eine Vorausabtastung auf Instruktions-Sequenzen in dem Instruktions-Cache durch, die DSP-Funktionen implementieren.
  • Gemäß einer Ausführungsform enthält der Funktions-Vorprozessor einen Mustererkennungsdetektor, der mehrere Bit-Muster speichert, die Instruktions-Sequenzen angeben, mit denen DSP-Funktionen implementiert werden. Der Mustererkennungsdetektor vergleicht jedes Muster mit einer Instruktions-Sequenz und stellt fest, ob eines der Muster im wesentlichen der Instruktions-Sequenz entspricht. Gemäß einer Ausführungsform tritt eine wesentliche Entsprechung auf, wenn ein Muster zu mehr als 90% der Instruktions-Sequenz entspricht. Gemäß einer weiteren Ausführungsform enthält der Funktions-Vorprozessor eine Look-up-Tabelle, in der mehrere Bit-Muster-Einträge gespeichert sind, die Instruktions-Sequenzen angeben, mit denen DSP-Funktionen implementiert werden. Der Funktions-Vorprozessor vergleicht jeden Muster-Eintrag mit einer Instruktions-Sequenz und stellt fest, ob einer der Einträge exakt der Instruktions-Sequenz entspricht. Bei anderen Ausführungsformen sind eine zweistufige Bestimmung der Look-up-Tabelle und ein Mustererkennungsdetektor vorgesehen.
  • Gemäß der bevorzugten Ausführungsform detektiert der Funktions-Vorprozessor X86-Instruktions-Sequenzen, die zur Durchführung von DST-Typ-Funktionen vorgesehen sind, wie z. B. Konvolution, Korrelation, Fast-Fourier-Transformationen (FFTs), Filter mit finiter Impulsreaktion (FIR), Filter mit infiniter Impulsreaktion (IIR), innere Produkte und Matrix-Berechnungs-Operationen.
  • Falls die Instruktionen in dem Instruktions-Cache oder Instruktions-Speicher keine Funktion vom DSP-Typ implementieren, werden die Instruktionen dem Allzweck- oder X86-Kern oder einer oder mehreren X86-Ausführungseinheiten zugeführt, wie es derzeit bei herkömmlichen Computersystemen erfolgt. Somit führt der X86-Kern diejenigen Allzweck-X86-Instruktionen aus, die keine DSP-Funktionen repräsentieren.
  • Wenn der Funktions-Vorprozessor eine Sequenz von X86-Instruktionen detektiert, die eine DSP-Funktion implementieren, d. h. zum Durchführen einer DSP-Typ-Funktion vorgesehen sind, dekodiert der Funktions-Vorprozessor die Sequenz von X86-Instruktionen und erzeugt einen einzelne Makro- oder Funktions-Identifizierung, welche die von der Sequenz von X86-Instruktionen angezeigte Funktion repräsentiert. Der Funktions-Vorprozessor prüft ferner die Information in der X86-Instruktions-Sequenz und erzeugt null oder mehr Parameter, welche die Daten-Werte angeben, die gerade für die DSP-Typ-Operation verwendet werden. Der Funktions-Vorprozessor gibt dann die Funktions-Identifizierung und die verschiedenen erforderlichen Parameter an den DSP-Kern oder an eine oder mehrere DSP-Ausführungseinheiten aus.
  • Der DSP-Kern empfängt die Makro- oder Funktions-Identifizierung und die jeweiligen Parameter und verwendet das Makro zur Indexeingabe in eine DSP-Mikrocode-Sequenz, welche die angezeigte DSP-Funktion implementiert. Der DSP-Kern verwendet ferner die jeweiligen Parameter beim Ausführen der DSP-Funktion. Da der DSP-Kern für diese mathematischen Operationen des DSP-Typs optimiert ist, kann der DSP-Kern generell die gewünschte Funktion in einer reduzierten Anzahl von Instruktionen und Taktzyklen ausführen.
  • Der DSP-Kern nimmt die Ausführung parallel mit dem Allzweck-CPU-Kern vor. Somit werden die X86-(Nicht-DSP-)Opcodes potentiell von dem Allzweck-CPU-Kern oder dem X86-Kern parallel mit den DSP-Funktionen durchgeführt, unter der Annahme, dass eine Daten-Unabhängigkeit besteht.
  • Der Allzweck-Kern und der DSP-Kern sind miteinander verbunden und tauschen Daten- und Zeitsteuerungs-Signale für Synchronisationszwecke aus. Gemäß einer Ausführungsform ist zwischen dem Allzweck-Kern und dem DSP-Kern ein Cache oder Puffer für die Übertragung von Information zwischen den beiden Einheiten enthalten.
  • Somit führt der Allzweck-CPU-Abschnitt X86-Instruktionen wie bei den herkömmlichen Systemen aus. Was jedoch diejenigen Instruktions-Sequenzen betrifft, die zum Durchführen von DSP-Typ-Funktionen vorgesehen sind, detektiert der Funktions-Vorprozessor diese Sequenzen auf intelligente Weise und gibt ein entsprechendes Makro und Parameter an den DSP-Kern aus. Somit entlastet der DSP-Kern den Allzweck-Kern von diesen mathematischen Funktionen, so dass die Systemleistung verbessert wird. Der DSP-Kern arbeitet ferner parallel mit dem Allzweck-Kern, was weitere Leistungsvorteile bewirkt.
  • Somit handelt ist gemäß der vorliegenden Erfindung eine Allzweck-CPU mit einem DSP-Kern vorgesehen, der DSP-Operationen durchführt. Die CPU weist einen intelligenten DSP-Funktions-Dekodierer oder -Vorprozessor auf, der Instruktions-Sequenzen prüft und Sequenzen, die DSP-Funktionen ausführen, konvertiert und in eine DSP-Makro-Instruktion zur Ausführung durch den DSP-Kern abbildet. Der DSP-Kern verwendet die DSP-Makro-Instruktion, um die gewünschte DSP-Funktion zu implementieren. Der DSP-Kern leistet das Implementieren oder Ausführen der DSP-Funktion mit einer kleineren Anzahl von Instruktionen und auch in einer reduzierten Anzahl von Taktzyklen, wodurch die Systemleistung verbessert wird. Somit implementiert die CPU der vorliegenden Erfindung DSP-Funktionen effizienter als eine X86-Logik, während sie keine zusätzlichen X86-Opcodes benötigt. Die CPU der vorliegenden Erfindung führt ferner einen Code aus, der an einer Nur-X86-CPU arbeitet, so dass eine Abwärtskompatibilität mit existierender Software gegeben ist. Ferner arbeitet der für die CPU der vorliegenden Erfindung geschriebene Code auch korrekt an einer Nur-X86-CPU.
  • Kurzbeschreibung der Zeichnungen
  • Ein besseres Verständnis der vorliegenden Erfindung ergibt sich aus der folgenden detaillierten Beschreibung der bevorzugten Ausführungsform in Verbindung mit den folgenden Zeichnungen:
  • 1 zeigt ein Blockschaltbild eines Computersystems, das eine gemäß der vorliegenden Erfindung ausgebildete CPU mit einem Allzweck-CPU-Kern und einem DSP-Kern aufweist;
  • 2 zeigt ein Blockschaltbild der gemäß der vorliegenden Erfindung ausgebildeten CPU von 1, die einen Allzweck-CPU-Kern und einen DSP-Kern aufweist und einen DSP-Funktions-Vorprozessor aufweist;
  • 3 zeigt ein Flussdiagramm zur Veranschaulichung der Arbeitsweise der vorliegenden Erfindung;
  • 4 zeigt ein detaillierteres Blockschaltbild der CPU gemäß 1;
  • 5 zeigt ein Blockschaltbild der Instruktions-Dekodiereinheit gemäß 4;
  • 6 zeigt ein Blockschaltbild des Funktions-Vorprozessors gemäß einer Ausführungsform der Erfindung;
  • 7 zeigt ein Blockschaltbild des Funktions-Vorprozessors mit einem Mustererkennungsdetektor gemäß einer Ausführungsform der Erfindung;
  • 8 zeigt die Arbeitsweise des Mustererkennungsdetektors gemäß 7;
  • 9 zeigt ein Blockschaltbild des Funktions-Vorprozessors mit einer Look-up-Tabelle gemäß einer Ausführungsform der Erfindung;
  • 10 zeigt die Arbeitsweise der Look-up-Tabelle gemäß 9; und
  • 11 zeigt ein Blockschaltbild des Funktions-Vorprozessors mit einem Mustererkennungsdetektor und einer Look-up-Tabelle gemäß einer Ausführungsform der Erfindung.
  • Detaillierte Beschreibung der bevorzugten Ausführungsform
  • Computersystem-Blockschaltbild
  • Die nun zu erläuternde 1 zeigt ein Blockschaltbild eines Computersystems, in dem eine Zentralverarbeitungseinheit (CPU) oder ein Mikroprozessor 102 gemäß der vorliegenden Erfindung enthalten ist. Das Computersystem gemäß 1 ist nur ein Beispiel, und die CPU 102 gemäß der vorliegenden Erfindung kann in einem beliebigen unter verschiedenen Typen von Computersystemen enthalten sein.
  • Wie gezeigt enthält die CPU 102 einen Allzweck-CPU-Kern 212 und einen DSP-Kern 214. Der Allzweck-CPU-Kern 212 führt Allzweck-(Nicht-DSP-) Opcodes aus, und der DSP-Kern 214 führt Funktionen vom DSP-Typ aus, wie noch beschrieben wird. Gemäß der bevorzugten Ausführungsform ist der Allzweck-CPU-Kern 212 ein X86-Kern, d. h. er ist kompatibel mit der X86-Mikroprozessor-Familie. Bei dem Allzweck-CPU-Kern 212 kann es sich jedoch um eine beliebige CPU unter verschiedenen Typen von CPUs handeln, einschließlich der PowerPC-Familie, der DEC Alpha- und der SunSparc-Familie von Prozessoren u. a. In der folgenden Offenbarung wird der Allzweck-CPU-Kern 212 aus Gründen der leichteren Erläuterung als X86-Kern bezeichnet. Der Allzweck-CPU-Kern 212 kann eine oder mehrere Allzweck- Ausführungseinheiten aufweisen, und der DSP-Kern 214 kann eine oder mehrere Digitalsignalverarbeitungs-Ausführungseinheiten aufweisen.
  • Wie gezeigt ist die CPU 102 durch einen CPU-Lokal-Bus 104 mit einer Host-/PCI-/Cache-Brücke oder einem Chipset 106 verbunden. Das Chipset 106 ist vorzugsweise ähnlich dem von Intel Corporation vertriebenen Triton-Cipset ausgebildet. Bei Bedarf kann ein (nicht gezeigter) Zweitebenen- oder L2-Cache-Speicher mit einem Cache-Controller in dem Chipset verbunden sein. Ferner kann bei einigen Prozessoren der externe Cache ein L1- oder Erstebenen-Cache sein. Die Brücke oder das Chipset 106 ist über einen Speicher-Bus 108 mit dem Hauptspeicher 110 verbunden. Der Hauptspeicher 110 ist vorzugsweise ein DRAM-(dynamischer Direktzugriffs-) oder EDO-(erweiterter Datenausgangs-)Speicher, oder er ist ein Speicher eines anderen Typs, falls gewünscht.
  • Das Chipset 106 weist verschiedene Peripherieeinrichtungen auf, einschließlich eines Interrupt-Systems, eines Echtzeit-Taktgebers (RTC) und Zeitgebern, eines Direktspeicherzugriffs-(DMA-)Systems, eines ROM/Flash-Speichers, Kommunikationsports, Diagnostikports, Befehls-/Status-Registern und einem nichtflüchtigen statischen Direktzugriffsspeicher (NVSRAM) (sämtlich nicht gezeigt).
  • Die Host-/PCI-/Cache-Brücke oder das Chipset 106 steht in Interface-Verbindung mit einem Peripherie-Komponenten-Interconnect-(PCI-)Bus 120. Gemäß der bevorzugten Ausführungsform wird ein PCI-Lokal-Bus verwendet. Es ist jedoch zu beachten, dass auch andere Lokal-Busse verwendet werden können, wie z. B. ein VESA-(Video Electronics Standards Association)VL-Bus. Mit dem CPU-Bus 120 können verschiedene Typen von Vorrichtungen verbunden sein. Bei der Ausführungsform gemäß 1 sind ein Video-/Graphik-Controller oder -Adapter 170 und ein Netzwerk-Interface-Controller 140 mit dem PCI-Bus 120 verbunden. Der Video-Adapter ist mit einem Video-Monitor 172 verbunden, und der Netzwerk-Interface-Controller 140 ist mit einem Lokalbereichs-Netzwerk (LAN) verbunden. Ein SCSI- (small computer systems interface)Adapter 122 kann wie gezeigt ebenfalls mit dem PCI-Bus 120 verbunden sein. Der SCSI-Adapter 122 kann je nach Wunsch mit verschiedenen SCSI-Vorrichtungen 124 verbunden sein, wie z. B. einem CD-ROM-Laufwerk und einem Bandlaufwerk. Es können verschiedene weitere Einrichtungen mit dem PCI-Bus 120 verbunden sein, wi auf dem Gebiet weithin bekannt ist.
  • Die Erweiterungs-Bus-Brücken-Logik 150 kann auch mit dem PCI-Bus 120 verbunden sein. Die Erweiterungs-Bus-Brücken-Logik 150 steht in Interface-Verbindung mit einem Erweiterungs-Bus 152. Der Erweiterungs-Bus 152 kann ein Bus unter verschiedenen Typen sein, einschließlich dem Industrie-Standard-Architektur-(ISA-)Bus, der auch als AT-Bus bezeichnet wird, dem erweiterten Industrie-Standard-Architektur-(EISA-)Bus oder dem MicroChannel-Architektur-(MCA-)Bus. Mit dem Erweiterungs-Bus können verschiedene Einrichtungen verbunden sein, wie z. B. der Erweiterungs-Bus-Speicher 154 und ein Modem 156.
  • CPU-Blockschaltbild
  • Die nun zu erläuternde 2 zeigt ein auf hoher Ebene angesetztes Blockschaltbild zur Darstellung bestimmter Komponenten in der CPU 102 gemäß 1. Wie gezeigt enthält die CPU 102 einen Instruktions-Cache oder Instruktions-Speicher 202, der Instruktionen oder Opcodes aus dem System-Speicher empfängt. Der Funktions-Vorprozessor 204 ist mit dem Instruktions-Speicher 202 verbunden und prüft Instruktions-Sequenzen oder Opcode-Sequenzen in dem Instruktions-Speicher 202. Der Funktions-Vorprozessor 204 ist ferner mit dem X86-Kern 212 und dem DSP-Kern 214 verbunden. Wie gezeigt übermittelt der Funktions-Vorprozessor 204 Instruktionen oder Opcodes an den X86-Kern 212 und übermittelt ferner Information an den DSP-Kern 214.
  • Der X86-Kern 212 und der DSP-Kern 214 sind miteinander verbunden und tauchen Daten- und Zeitsteuerungs-Signale untereinander aus. Gemäß einer Ausführungsform enthält die CPU 102 einen oder mehrere (nicht gezeigte) Puffer, die ein Interface zwischen dem X86-Kern 212 und dem DSP-Kern 214 bilden, um die Übertragung von Daten zwischen dem X86-Kern 212 und dem DSP-Kern 214 zu erleichtern.
  • Flussdiagramm gemäß 3
  • Die nun zu erläuternde 3 zeigt ein Flussdiagramm zur Erläuterung der Arbeitsweise der vorliegenden Erfindung. Anzumerken ist, dass zwei oder mehr der Schritte gemäß 3 gleichzeitig ausgeführt werden können und die Arbeitsweise der Erfindung zur besseren Veranschaulichung in Form eines Flussdiagramms gezeigt ist. Wie gezeigt empfängt in dem Schritt 302 der Instruktions-Speicher 202 mehrere X86-Instruktionen und speichert diese. Die mehreren X86-Instruktionen können eine oder mehrere Instruktions-Sequenzen enthalten, in denen eine DSP-Funktion implementiert ist. Im Schritt 304 analysiert der Funktions-Vorprozessor 204 die Opcodes, d. h. eine Instruktions-Sequenz, in dem Instruktions-Speicher 202, und im Schritt 306 stellt er auf intelligente Weise fest, ob die Sequenz von Instruktionen zum Durchführen einer DSP-Typ-Funktion konzipiert oder vorgesehen ist, d. h. er stellt fest, ob in der Instruktions-Sequenz eine DSP-Typ-Funktion implementiert ist. In der vorliegenden Offenbarung weist eine DSP-Typ-Funktion eine oder mehrere der folgenden mathematischen Funktionen auf: Korrelation, Konvolution, Fast-Fourier-Transformation, Filter mit finiter Impulsreaktion, Filter mit infiniter Impulsreaktion, inneres Produkt und Matrix-Maniopulation u. a. Die Arbeitsweise des Funktions-Vorprozessors 204 wird in der anhand von 4 gegebenen Beschreibung näher erläutert.
  • Falls die in dem Instruktions-Cache 202 gespeicherten Instruktionen oder Opcodes nicht einer DSP-Typ-Funktion entsprechen, werden die Instruktionen im Schritt 308 dem X86-Kern zugeführt. Somit werden diese Instrukti onen oder Opcodes direkt aus dem Instruktions-Cache 202 an den X86-Kern zwecks Ausführung übermittelt, wie es in den mit dem herkömmlichen X86 kompatiblen CPUs erfolgt. Nachdem die Opcodes an den X86-Kern 212 übermittelt worden sind, führt der X86-Kern 212 im Schritt 310 die Instruktionen aus.
  • Falls der Funktions-Vorprozessor 204 im Schritt 306 eine Sequenz von Instruktionen detektiert, die einer DSP-Typ-Funktion entsprechen oder diese implementieren, dann analysiert im Schritt 204 der Funktions-Vorprozessor 204 die Sequenz von Instruktionen und bestimmt die jeweilige DSP-Typ-Funktion, die implementiert wird. Im Schritt 312 bildet der Funktions-Vorprozessor 204 die Sequenz von Instruktionen auf eine jeweiligen DSP-Makro-Identifizierung ab, die auch als Funktions-Identifizierung bezeichnet wird. Der Funktions-Vorprozessor 204 analysiert im Schritt 312 auch die Information in der Sequenz von Opcodes und erzeugt null oder mehr Parameter zur Verwendung durch den DSP-Kern oder Beschleuniger 214 beim Ausführen der Funktions-Identifizierung. Wie gezeigt übermittelt im Schritt 314 der Funktions-Vorprozessor 204 die Funktions-Identifizierung und die Parameter an den DSP-Kern 214.
  • Der DSP-Kern 214 empfängt die Funktions-Identifizierung und die zugehörigen Parameter aus dem Funktions-Vorprozessor 204 und führt im Schritt 316 die betreffende DSP-Funktion aus. Gemäß der bevorzugten Ausführungsform verwendet der DSP-Kern die Funktions-Identifizierung zum Indexieren in ein DSP-Mikrocode-RAM oder -ROM, um eine Sequenz von DSP-Instruktionen oder -Opcodes auszuführen. Die DSP-Instruktionen veranlassen den DSP zum Ausführen der gewünschten DSP-Typ-Funktion. Der DSP-Kern 214 verwendet auch die jeweiligen Parameter beim Ausführen der DSP-Funktion.
  • Wie bereits erwähnt sind der X86-Kern 212 und der DSP-Kern 214 miteinander verbunden und tauschen Daten- und Zeitsteuerungs-Signale miteinander aus. Gemäß der bevorzugten Ausführungsform arbeiten der X86-Kern 212 und der DSP-Kern 214 im wesentlichen parallel. Somit kann, während der X86-Kern 212 eine Sequenz von Opcodes ausführt, der DSP-Beschleuniger 214 eine oder mehrere DSP-Funktionen ausführen, die einer anderen Sequenz von Opcodes entsprechen. Somit arbeitet der DSP-Kern 214 nicht als Slave oder Ko-Prozessor, sondern arbeitet vielmehr als eine unabhängige Ausführungseinheit oder Pipeline. Der DSP-Kern 214 und der X86-Kern 212 übertragen Daten- und Zeitsteuerungs-Signale zueinander, um den Status von Operationen anzugeben und um sämtliche erzeugten Daten-Ausgangssignale auszugeben, sowie um die Daten-Kohärenz/-Unabhängigkeit zu gewährleisten.
  • Beispiel einer Arbeitsweise
  • Im folgenden wird ein Beispiel beschrieben, wie ein Strang oder eine Sequenz von X86-Opcodes in eine Funktions-Identifizierung konvertiert wird und dann von dem DSP-Kern oder Beschleuniger 214 gemäß der vorliegenden Erfindung ausgeführt wird. Es wird eine Beschreibung einer X86-Opcode-Sequenz gegeben, die eine einfache Innen-Produkt-Berechnung durchführt, wobei das innere Produkt über einen Vektor gemittelt wird, der 20 Werte aufweist:
  • X86-Code (einfaches inneres Produkt)
    Figure 00160001
  • Wie gezeigt weisen die X86-Opcode-Instruktionen für ein einfaches inneres Produkt mehrerer Bewegungs-Instruktionen auf, gefolgt von einer F-Lade-Funktion, in der diese Sequenz mehrere Male wiederholt wird. Falls diese X86-Opcode-Sequenz von dem X86-Kern 212 ausgeführt würde, würde die Ausführungszeit für diese Innen-Produkt-Berechnung 709 Zyklen (9 + 20 × 35) umfassen. Dabei werden eine X86-Zeitsteuerung, gleichzeitige Ausführung von Floating-Point-Operationen und Cache-Treffer für sämtliche von der Innen-Produkt-Berechnung verlangten Instruktionen und Daten angenommen. Der Funktions-Vorprozessor 204 analysiert die Sequenz von Opcodes und detektiert, dass die Opcodes eine Innen-Produkt-Berechung durchführen. Der Funktions-Vorprozessor 204 konvertiert dann diese gesamte Sequenz von X86-Opcodes zu einer einzigen Makro- oder Funktions-Identifizierung und einem oder mehr Parametern. Ein Beispiel einer Makro- oder Funktions-Identifizierung, die auf der Basis der oben gezeigten X86-Opcode-Sequenz erzeugt wird, ist das folgende:
  • Beispiel-Makro (wie es im Assembler auftritt)
    Figure 00170001
  • Der Funktions-Identzifizierer und der eine oder die mehreren Parameter werden an den DSP-Kern 214 ausgegeben. Der DSP-Kern 214 verwendet das aus dem Funktions-Vorprozessor 204 zugeführte Makro, um einen oder mehrere DSP-Opcodes oder Instruktionen zu laden, welche die DSP-Funktion ausführen. Gemäß der bevorzugten Ausführungsform verwendet der DSP-Kern 214 das Makro zum Indexieren in ein ROM, das die zum Ausführen der DSP-Funktion verwendeten Instruktionen enthält. Gemäß diesem Beispiel sind der DSP-Code oder die Instruktionen, die von dem DSP-Kern 214 auf den Empfang des oben beschriebenen Makros hin ausgeführt werden, wie nachstehend gezeigt ausgelegt:
  • DSP-Code (einfaches inneres Produkt)
    Figure 00170002
  • Gemäß diesem Beispiel führt der DSP-Kern 214 dieses Produkt gemittelt über einen Vektor aus, der 20 Werte aufweist und insgesamt 26 Zyklen (6 + 20 × 1) verbraucht. Dabei werden eine typische DSP-Zeitsteuerung ein schließlich einer Ein-Zyklen-Operation von Instruktionen, eine Null-Overhead-Schleifenbildung und Cache-Treffer für sämtliche Instruktionen und Daten angenommen. Somit bietet der DSP-Kern 214 einen Leistungsanstieg, der mehr als 28mal so hoch ist wie in dem Fall, in dem der X86-Kern 212 diese DSP-Funktion ausführt.
  • 4 – CPU-Blockschaltbild
  • Die nun zu beschreibende 4 zeigt ein detaillierteres Blockschaltbild der inneren Komponenten der CPU 102 gemäß der vorliegenden Erfindung. Elemente in der CPU 102, die für das Verständnis der vorliegenden Erfindung nicht erforderlich sind, werden um der Einfachheit willen nicht beschrieben. Wie gezeigt enthält gemäß der bevorzugten Ausführungsform die CPU 102 eine Bus-Interface-Einheit 440, einen Instruktions-Cache 202, einen Daten-Cache 444, eine Instruktions-Dekodiereinheit 402, mehrere Ausführungseinheiten 448, eine Lade-Speicher-Einheit 450, einen Neuordnungspuffer 452, eine Registerdatei 454 und eine DSP-Einheit 214.
  • Wie gezeigt weist die CPU 102 eine Bus-Interface-Einheit 440 auf, die eine Schaltung zum Durchführen der Kommunikation auf dem CPU-Bus 104 enthält. Die Bus-Interface-Einheit 440 bildet ein Interface mit dem Daten-Cache 444 und dem Instruktions-Cache 202. Der Instruktions-Cache 202 ruft die Instruktionen aus dem Systemspeicher 110 im voraus ab und speichert die Instruktionen zur Verwendung durch die CPU 102. Die Instruktions-Dekodiereinheit 402 ist mit dem Instruktions-Cache 202 verbunden und empfängt Instruktionen aus dem Instruktions-Cache 202. Die Instruktions-Dekodiereinheit 402 enthält wie gezeigt den Funktions-Vorprozessor 204. Der Funktions-Vorprozessor 204 in der Instruktions-Dekodiereinheit 402 ist mit dem Instruktions-Cache 202 verbunden. Die Instruktions-Dekodiereinheit 402 enthält ferner eine Instruktions-Ausrichteinheit sowie weitere Logik.
  • Die Instruktions-Dekodiereinheit 402 verbindet mehrere Ausführungseinheiten 448, den Neuordnungspuffer 452 und die Lade-/Speicher-Einheit 450. Die mehreren Ausführungseinheiten 448 werden hier kollektiv als Ausführungseinheiten 448 bezeichnet. Der Neuordnungspuffer 452, die Ausführungseinheiten 448 und die Lade-/Speicher-Einheit 450 sind jeweils mit einen Weitergabebus 458 zum Weitergeben der Ausführungsergebnisse verbunden. Die Lade-/Speicher-Einheit 450 ist mit einem Daten-Cache 444 verbunden. Die DSP-Einheit 214 ist durch den DSP-Ausgabe-Bus 456 direkt mit der Instruktions-Dekodiereinheit 402 verbunden. Anzumerken ist, dass eine oder mehrere DSP-Einheiten 214 mit der Instruktions-Dekodiereinheit 402 verbunden sein können.
  • Die Bus-Interface-Einheit 440 ist zum Durchführen der Kommunikation zwischen dem Mikroprozessor 102 und den mit dem System-Bus 104 verbundenen Einrichtungen konfiguriert. Beispielsweise werden Instruktions-Abrufe, die den Instruktions-Cache 202 verfehlen, durch die Bus-Interface-Einheit 440 aus dem Hauptspeicher 110 heraus übertragen. In ähnlicher Weise werden von der Lade-/Speicher-Einheit 450 durchgeführte Daten-Requests, die den Daten-Cache 444 verfehlen, durch die Bus-Interface-Einheit 440 aus dem Hauptspeicher 110 heraus übertragen. Ferner kann der Daten-Cache 444 eine Cache-Leitung von Daten, die von dem Mikroprozessor 102 modifiziert worden ist, verwerfen. Die Bus-Interface-Einheit 440 übermittelt die modifizierte Leitung an den Hauptspeicher 110.
  • Der Instruktions-Cache ist vorzugsweise ein Hochgeschwindigkeits-Cache-Speicher zum Speichern von Instruktionen. Anzumerken ist, dass der Instruktions-Cache in einer Set-assoziativ- oder Direktabbildungs-Konfiguration ausgelegt sein kann. Der Instruktions-Cache kann zusätzlich einen Abzweig-Vorhersage-Mechanismus enthalten, um Abzweige entweder als genommen oder als nicht genommen vorherzusagen. Eine "genommene" Abzweig-Instruktion bewirkt, dass der Instruktions-Abruf und die Ausführung an der Ziel-Adresse der Abzweig-Instruktion fortgesetzt werden. Eine "nicht genommene" Abzweig-Instruktion bewirkt, dass der Instruktions-Abruf und die Ausführung an der auf die Abzweig-Instruktion folgenden Instruktion fortgesetzt werden. Instruktionen werden aus dem Instruktions-Cache 202 abgerufen und der Instruktions-Dekodiereinheit 402 zum Dekodieren und Ausgeben an eine Ausführungseinheit übermittelt. Der Instruktions-Cache 202 kann auch einen Makro-Vorhersagemechanismus zur Vorhersage von Makro-Instruktionen und zum Ausführen der geeigneten Schritte aufweisen.
  • Die Instruktions-Dekodiereinheit 402 dekodiert aus dem Instruktions-Cache 202 empfangene Instruktionen und übermittelt die Instruktionen an die Ausführungseinheiten 448, die Lade-/Speicher-Einheit 450 oder die DSP-Einheit 214. Die Instruktions-Dekodiereinheit 402 ist typischerweise zum Ausgeben einer Instruktion an mehr als eine Ausführungseinheit 448 konfiguriert.
  • Die Instruktions-Dekodiereinheit 402 weist den Funktions-Vorprozessor 204 auf. Gemäß der vorliegenden Erfindung ist der Funktions-Vorprozessor 204 in der Instruktions-Dekodiereinheit 402 konfiguriert zum Detektieren von X86-Instruktions-Sequenzen in dem Instruktions-Cache 202, die DSP-Funktionen entsprechen oder diese ausführen. Falls eine derartige Instruktions-Sequenz detektiert wird, erzeugt der Funktions-Vorprozessor 204 ein entsprechendes Makro und Parameter und gibt das entsprechende DSP-Makro und die Parameter auf den DSP-Ausgabe-Bus 456 an die DSP-Einheit 214 aus. Die DSP-Einheit 214 empfängt das DSP-Funktions-Makro und die Parameter-Funktion aus der Instruktions-Dekodiereinheit 402 und führt die angegebene DSP-Funktion aus. Zusätzlich ist die DSP-Einheit 214 vorzugsweise zum Zugreifen auf den Daten-Cache 444 programmiert, um Daten-Operanden zu erhalten. Daten-Operanden können zwecks schnelleren Zugriffs in einem Speicher innerhalb der DSP-Einheit 214 gespeichert werden, oder auf sie kann bei Bedarf direkt aus dem Daten-Cache 444 zugegriffen werden. Der Funktions-Vorprozessor 204 gibt dem Instruktions-Cache 222 ein Feedback, um zu gewährleisten, dass ausreichende Lookahead-Instruktionen für eine Makro-Suche verfügbar sind.
  • Falls die X86-Instruktionen in dem Instruktions-Cache 202 nicht zum Ausführen einer DSP-Funktion vorgesehen sind, dekodiert die Instruktions-Dekodiereinheit 402 die aus dem Instruktions-Cache 202 abgerufenen Instruktionen und gibt die Instruktionen an die Ausführungseinheiten 448 und/oder die Lade-/Speicher-Einheit 450 aus. Die Instruktions-Dekodiereinheit 402 detektiert ferner die von der Instruktion verwendeten Register-Operanden und fordert diese Operanden von dem Neuordnungs-Puffer 452 und der Register-Datei 454 an. Die Ausführungseinheiten 448 führen die Instruktionen aus, wie auf dem Gebiet bekannt ist.
  • Ferner gibt, falls die DSP 214 nicht in der CPU 102 enthalten ist oder durch. Software deaktiviert ist, die Instruktions-Dekodiereinheit 402 sämtliche X86-Instruktionen an die Ausführungseinheiten 448 aus. Die Ausführungseinheiten 448 führen die Instruktionen wie beim Stand der Technik aus. Auf diese Weise werden, falls die DSP-Einheit 214 deaktiviert ist, die X86-Codes einschließlich der Instruktionen, die DSP-Funktionen ausführen, von dem X86-Kern ausgeführt, wie es derzeit bei den herkömmlichen X86-Mikroprozessoren erfolgt. Somit wird, falls die DSP-Einheit 214 deaktiviert ist, das Programm exakt ausgeführt, obwohl die Betriebsweise weniger effizient ist als die Ausführung einer entsprechenden Routine in dem DSP 214. Vorteilhafterweise wird durch das Aktivieren oder Deaktivieren oder das Vorhandensein oder Nichtvorhandensein des DSP-Kerns 214 in der CPU 102 die korrekte Ausführung des Programms nicht beeinträchtigt.
  • Gemäß einer Ausführungsform handelt es sich bei den Ausführungseinheiten 448 um symmetrische Ausführungseinheiten, die jeweils zum Ausführen des vom Mikroprozessor 102 verwendeten Instruktions-Sets konfiguriert sind. Gemäß einer weiteren Ausführungsform sind die Ausführungseinheiten 448 asymmetrische Ausführungseinheiten, die zum Ausführen ungleicher Instruktions-Subsets konfiguriert sind. Beispielsweise können die Ausführungseinheiten 448 eine Abzweig-Ausführungseinheit zum Ausführen von Abzweig-Instruktionen, eine oder mehrere arithmetische/Logik-Einheiten zum Ausführen arithmetischer und logischer Instruktionen und eine oder mehrere Floating-Point-Einheiten zum Ausführen von Floating-Point-Instruktionen aufweisen. Die Instruktions-Dekodiereinheit 402 gibt eine Instruktion an eine Ausführungseinheit 448 oder eine Lade-/Speicher-Einheit 450 aus, die zum Ausführen dieser Instruktion konfiguriert ist.
  • Die Lade-/Speicher-Einheit 450 zwischen den Ausführungseinheiten 448 und dem Daten-Cache 444. Die Lade- und Speichervorrichtungs-Operationen werden durch die Lade-/Speicher-Einheit 450 zu dem Daten-Cache 444 hin ausgeführt. Zusätzlich werden Speicher-Abhängigkeiten zwischen den Lade- und Speichervorrichtungs-Operationen von der Lade-/Speicher-Einheit 450 detektiert und gehandhabt.
  • Die Ausführungseinheiten 448 und die Lade-/Speicher-Einheit(en) 450 können eine oder mehrere Reservierungsstationen zum Speichern von Instruktionen aufweisen, deren Operanden noch nicht geliefert worden sind. Eine Instruktion wird aus den in den Reservierungsstationen gespeicherten Instruktionen zur Ausführung gewählt, falls: (1) die Operanden der Instruktion vorgelegt worden sind, und (2) die Instruktionen, die vor der gerade gewählten Instruktion liegen, noch keine Operanden empfangen haben. Anzumerken ist, dass eine zentralisierte Reservierungsstation anstelle separater Reservierungsstationen vorgesehen sein kann. Die zentralisierte Reservierungsstation ist zwischen die Instruktions-Dekodiereinheit 402, die Ausführungseinheiten 448 und die Lade-/Speicher-Einheit 450 geschaltet. Eine derartige Ausführungsform kann Ausgabe-Funktionen in der zentralisierten Reservierungsstation ausführen.
  • Die CPU 102 stützt vorzugsweise eine außer Reihenfolge erfolgende Ausführung und verwendet den Neuordnungs-Puffer 452 zum Speichern von Ausführungsergebnissen spekulativ ausgeführter Instruktionen und zum in Programm-Reihenfolge durchzuführenden Speichern dieser Ergebnisse in der Register-Datei 454, zum Durchführen einer Abhängigkeits-Prüfung und einer Register-Neubenennung, und zur Erbringung einer Rückgewinnung für fehlvorhergesagte Abzweigungen und Ausnahmen. Wenn eine Instruktion von der Instruktions-Dekodiereinheit 402 dekodiert wird, werden Requests für die Register-Operanden an den Neuordnungs-Puffer 452 und die Register-Datei 454 ausgegeben. Auf die Register-Datei-Requests hin wird an die Ausführungseinheit 448 und/oder die Lade-/Speicher-Einheit 450, welche die Instruktion empfängt, einer von drei Werten übermittelt: (1) der in dem Neuordnungs-Puffer 452 gespeicherte Wert, falls der Wert spekulativ erzeugt worden ist; (2) ein Tag, das eine das Ergebnis speichernde Stelle in dem Neuordnungs-Puffer 452 identifiziert, falls der Wert nicht spekulativ erzeugt worden ist; oder (3) der in der Register-Datei 454 gespeicherte Wert, falls keine Instruktionen in dem Neuordnungs-Puffer 452 das Register 452 modifizieren. Zusätzlich ist eine Speicherstelle in dem Neuordnungs-Puffer 452 zum Speichern der Ergebnisse der von der Instruktions-Dekodiereinheit 402 dekodierten Instruktion zugewiesen. Die Speicherstelle wird durch ein Tag identifiziert, das der die Einheit empfangenden Einheit zugeführt wird. Anzumerken ist, dass, falls mehr als eine einzige Neuordnungs-Puffer-Speicherstelle zum Speichern von Ergebnissen zugewiesen wird, die einem bestimmten Register entsprechen, der Wert oder das Tag, der bzw. das dem letzten Ergebnis in der Programm-Reihenfolge entspricht, auf ein Register-Operanden-Request für dieses bestimmte Register hin übermittelt wird.
  • Wenn die Ausführungseinheiten 448 oder die Lade-/Speicher-Einheit 450 eine Instruktion ausführen, wird das Tag, das mittels des Neuordnungs-Puffers 452 der Instruktion zugewiesen worden ist, zusammen mit dem Ergebnis der Instruktion auf dem Ergebnis-Bus 458 übermittelt. Der Neuordnungs-Puffer 452 speichert das Ergebnis an der angegebenen Speicherstelle. Ferner vergleiche die Ausführungseinheiten 448 und die Lade-/Speicher-Einheit 450 die auf dem Ergebnis-Bus 458 übermittelten Tags mit den Tags darin gespeicherter Operanden. Falls eine Entsprechung auftritt, erfasst die Einheit das Ergebnis von dem Ergebnis-Bus 458 und speichert es mit der entsprechenden Instruktion. Auf diese Weise kann eine Instruktion die Operanden erhalten, die sie bearbeiten soll. Das Erfassen von Ergebnis sen von dem Ergebnis-Bus 458 zwecks Verwenden durch Instruktionen wird als "Ergebnis-Weitergabe" bezeichnet.
  • Instruktions-Ergebnisse werden durch den Neuordnungs-Puffer 452 in der Progamm-Reihenfolge in der Register-Datei 454 gespeichert. Das Speichern der Ergebnisse einer Instruktion und das Löschen der Instruktion aus dem Neuordnungs-Puffer 452 werden als "Zurückziehen" der Instruktion bezeichnet. Indem die Instruktionen in der Programm-Reihenfolge zurückgezogen werden, kann eine Rückgewinnung aus einer inkorrekten spekulativen Ausführung durchgeführt werden. Falls beispielsweise eine Instruktion auf eine Abzweig-Instruktion folgt, deren Genommen-/Nicht-genommen-Vorhersage inkorrekt ist, dann kann die Instruktion möglicherweise inkorrekt ausgeführt werden. Wenn eine fehlvorhergesagte Abzweig-Instruktion oder eine Instruktion, die eine Ausnahme verursacht, detektiert wird, verwirft der Neuordnungs-Puffer 452 die Instruktionen, die auf die fehlvorhergesagten Abzweig-Instruktionen folgen. Die in dieser Weise verworfenen Instruktionen werden ferner aus den Ausführungseinheiten 448, der Lade-/Speicher-Einheit 450 und der Instruktions-Dekodiereinheit 402 geflusht.
  • Die Register-Datei 454 enthält Speicherstellen für jedes Register, das durch die vom Mikroprozessor 102 verwendete Mikroprozessor-Architektur definiert ist. Beispielsweise weist bei der bevorzugten Ausführungsform, bei der die CPU 102 eine X86-Mikroprozessor-Architektur aufweist, die Register-Datei 454 Stellen zum Speichern der EAX-, EBX-, ECX-, EDX-, ESI-, EDI-, ESP- und EBP-Registerwerte auf.
  • Der Daten-Cache 444 ist ein Hochgeschwindigkeits-Cache-Speicher, der zum Speichern von Daten konfiguriert ist, die von dem Mikroprozessor 102 bearbeitet werden. Anzumerken ist, dass der Daten-Cache 444 in einer Setassoziativ- oder Direktabbildungs-Konfiguration ausgestaltet sein kann.
  • 5 – Instruktions-Dekodiereinheit
  • Die nun zu erläuternde 5 zeigt eine Ausführungsform der Instruktions-Dekodiereinheit 402. Die Instruktions-Dekodiereinheit 402 enthält eine Instruktions-Ausrichteinheit 460, mehrere Dekodierschaltungen 462 und einen DSP-Funktions-Vorprozessor 204. Die Instruktions-Ausrichteinheit 460 ist zum Empfangen aus dem Instruktions-Cache 202 abgerufener Instruktionen geschaltet und richtet die Instruktionen zu den Dekodierschaltungen 462 hin aus.
  • Die Instruktions-Ausrichteinheit 260 leitet die Instruktionen zu den Dekodierschaltungen 462. Gemäß einer Ausführungsform enthält die Instruktions-Ausrichteinheit 260 eine Byte-Warteschlange, in der aus dem Instruktions-Cache abgerufenen Instruktions-Bytes aufgereiht sind. Die Instruktions-Ausrichteinheit 460 lokalisiert gültige Instruktionen aus der Warteschlange her und gibt die Instruktionen an jeweilige Dekodierschaltungen 462 aus. Gemäß einer weiteren Ausführungsform enthält der Instruktions-Cache 202 eine Vordekodier-Schaltung, welche die Instruktions-Bytes vordekodiert, wenn sie in dem Instruktions-Cache 202 gespeichert werden. Start- und End-Byte-Information, die den Beginn und das End von Instruktionen angibt, wird in dem Instruktions-Cache 202 erzeugt und gespeichert. Die Vordekodier-Daten werden zusammen mit den Instruktionen an die Instruktions-Ausrichteinheit 460 übertragen, und die Instruktions-Ausrichteinheit 460 überträgt die Instruktionen entsprechend der Vordekodier-Information zu den Dekodierschaltungen 462.
  • Der Funktions-Vorprozessor 204 ist ferner mit dem Instruktions-Cache 202 verbunden und arbeitet zum Detektieren von Instruktions-Sequenzen in dem Instruktions-Cache, die DSP-Instruktionen durchführen. Die Dekodierschaltungen 462 und der Funktions-Vorprozessor 204 empfangen X86-Instruktionen aus der Instruktions-Ausrichteinheit 460. Der Funktions-Vorprozessor 204 gibt an jede der Dekodierschaltungen 462 über einen DSP-Bus ein Instruktions-Deaktivierungssignal aus.
  • Jede Dekodierschaltung 462 dekodiert die aus der Instruktions-Ausrichteinheit 460 empfange Instruktion, um die von der Instruktion manipulierten Register-Operanden sowie die Einheit zu bestimmen, welche die Instruktion empfangen soll. Ein Hinweis auf die Einheit, welche die Instruktion empfangen soll, sowie die Instruktion selbst werden auf mehreren Ausgabe-Bussen 468 an die Instruktions-Ausrichteinheiten 460 und die Lade-/Speicher-Einheit 450 übermittelt. Weitere Busse, die nicht gezeigt sind, werden zum Anfordern von Register-Operanden aus dem Neuordnungs-Puffer 452 und der Register-Datei 454 verwendet.
  • Der Funktions-Vorprozessor analysiert Ströme oder Sequenzen von X86-Instruktionen aus dem Instruktions-Cache 202 und stellt fest, ob eine DSP-Funktion ausgeführt wird. Falls dies der Fall ist, bildet der Funktions-Vorprozessor 204 den X86-Instruktions-Strom auf ein DSP-Makro und null oder mehr Parameter ab und gibt diese Information an eine der einen oder mehreren DSP-Einheiten 214 weiter. Gemäß einer Ausführungsform gibt der Funktions-Vorprozessor 204, wenn eine betreffende Instruktions-Sequenz die Dekodierschaltungen 462 erreicht, ein Deaktivierungssignal an jeden der Dekodierer 462 aus, um den Betrieb der Dekodieren 462 für die detektierte Instruktions-Sequenz zu deaktivieren. Wenn eine Dekodierschaltung 462 das Deaktivierungssignal aus dem Funktions-Vorprozessor 204 detektiert, unterbricht die Dekodierschaltung 462 die Dekodier-Operationen, bis das Deaktivierungssignal aufgehoben wird. Nachdem die der DSP-Funktion entsprechende Instruktions-Sequenz den Instruktions-Cache 202 verlassen hat, entfernt der Funktions-Vorprozessor 204 das an jeden der Dekodierer 462 ausgegebene Deaktivierungssignal. Anders ausgedrückt wird, nachdem der Funktions-Vorprozessor 204 das Ende der X86-Instruktions-Sequenz detektiert hat, durch den Funktions-Vorprozessor 204 das an jeden der Dekodierer 462 ergehende Deaktivierungssignal beseitigt, und die Dekodierer nehmen den Betrieb wieder auf.
  • Jede der Dekodierschaltungen 462 ist konfiguriert zum Übermitteln einer Instruktion auf einem der Ausgabe-Busse 468 zusammen mit einem Hinweis auf die Einheit oder die Einheiten, welche die Instruktion empfangen sollen. Gemäß einer Ausführungsform ist in dem Hinweis für jede der Ausführungseinheiten 448 und die Lade-/Speicher-Einheit 450 ein Bit vorgesehen. Falls ein bestimmtes Bit gesetzt ist, dann soll eine entsprechende Einheit die Instruktion ausführen. Falls eine bestimmte Instruktion von mehr als einer Einheit ausgeführt werden soll, kann mehr als ein Bit in dem Hinweis gesetzt werden.
  • Funktions-Vorprozessor
  • Die nun zu erläuternde 6 zeigt ein Blockschaltbild des Funktions-Vorprozessors 204 gemäß einer Ausführungsform der Erfindung. Wie gezeigt weist bei dieser Ausführungsform der Funktions-Vorprozessor 204 eine Scan-ahead-Schaltung 502 zum Prüfen oder Abtasten von Sequenzen von Instruktionen in dem Instruktions-Speicher oder dem Instruktions-Cache 202 auf. Gemäß einer Ausführungsform prüft die Scan-ahead-Schaltung 502 die in dem Instruktions-Speicher 202 gespeicherten Instruktions-Sequenzen vor der Betätigung des Instruktions-Dekodierers 402 zum Dekodieren der Instruktionen, welche die jeweilige gerade abgetastete Instruktions-Sequenz aufweisen. Somit prüft die Scan-ahead-Schaltung im voraus die Instruktions-Sequenzen in dem Instruktions-Cache 202, bevor die jeweiligen Instruktionen an den Instruktions-Dekodierer 402 ausgegeben werden.
  • Der Funktions-Vorprozessor 204 weist ferner eine Instruktions-Sequenz-Bestimmungsschaltung 504 auf, um festzustellen, ob eine Sequenz von Instruktionen in dem Instruktions-Speicher 202 eine Digitalsignal-Verarbeitungsfunktion implementiert. Diese Feststellung kann auf verschiedene Arten erfolgen, wie weiter unten beschrieben.
  • Der Funktions-Vorprozessor 204 weist ferner eine Konvertierungs-/Abbildungs-Schaltung 506 zum Konvertieren einer Sequenz von Instruktionen in dem Instruktions-Speicher 502 auf, die eine Digitalsignal-Verarbeitungsfunktion in eine Digitalsignal-Verarbeitungsfunktions-Identifizierung oder Makro-Identifizierung und null oder mehr Parameter implementiert. Somit konvertiert, falls die Instruktions-Sequenz-Bestimmungsschaltung 504 feststellt, dass eine Sequenz von Instruktionen in dem Instruktions-Speicher 202 eine FFT-Funktion implementiert, die Konvertierungs-/Abbildungs-Schaltung 506 diese Sequenz von Instruktionen in eine FFT-Identifizierung und null oder mehr Parameter.
  • 7 – Mustererkennungsschaltung
  • Gemäß der nun zu erläuternden 7 weist gemäß einer Ausführungsform der Funktions-Vorprozessor 204 eine Mustererkennungsschaltung oder einen Mustererkennungsdetektor 512 auf, der feststellt, ob eine Sequenz von Instruktionen in dem Instruktions-Speicher 202 eine Digitalsignalverarbeitungsfunktion implementiert. Die Mustererkennungsschaltung 512 speichert mehrere Muster von Instruktions-Sequenzen, die Digitalsignalverarbeitungsfunktionen implementieren. Die Mustererkennungsschaltung 512 speichert Bit-Muster, die Opcode-Sequenzen von Maschinensprachen-Instruktionen entsprechen, welche DSP-Funktionen ausführen, wie z. B. FFTs, innere Produkte, Matrix-Handhabung, Korrelation, Konvolution etc.
  • Der Mustererkennungsdetektor 512 prüft eine in dem Instruktions-Speicher 202 gespeicherte Sequenz von Instruktionen und vergleicht die Sequenz von Instruktionen mit den mehreren gespeicherten Mustern. Die Arbeitsweise des Mustererkennungsdetektors 512 ist in 8 gezeigt. Gemäß einer Ausführungsform vergleicht der Mustererkennungsdetektor 512 jedes der Muster an vorbestimmten Stellen in der Instruktions-Sequenz mit einer Instruktions-Sequenz. Der Mustererkennungsdetektor 512 kann bei Bedarf eine Look-up-Tabelle als Einheit zum Durchführen der Mustervergleiche auf weisen. Der Mustererkennungsdetektor 512 kann auch eine Makro-Vorhersage an den Instruktions-Sequenzen vornehmen, um die Leistung zu verbessern.
  • Der Mustererkennungsdetektor 512 stellt fest, ob die Sequenz von Instruktionen in dem Instruktions-Speicher 202 im wesentlichen einem der gespeicherten Muster entspricht. Eine wesentliche Entsprechung zeigt an, dass die Sequenz von Instruktionen eine Digitalsignalverarbeitungsfunktion implementiert. Gemäß der bevorzugten Ausführungsform tritt eine wesentliche Entsprechung ein, wenn die Instruktions-Sequenz einem gespeicherten Muster zu mehr als 90% entspricht. Bei Bedarf können auch andere Entsprechungs-Schwellwert, wie z. B. 95% oder 100%, verwendet werden. Falls eine Entsprechung auftritt, stellt der Mustererkennungsdetektor 512 den Typ des DSP-Funktionsmusters auf, der zu der Sequenz von Instruktionen passte, und gibt den Typ des DSP-Funktionsmusters an die Konvertierungs-/Abbildungsschaltung 506 aus.
  • 9 – Look-up-Tabelle
  • Gemäß der nun zu erläuternden 9 weist entsprechend einer weiteren Ausführungsform der Funktions-Vorprozessor 204 eine Look-up-Tabelle 514 auf, die feststellt, ob eine Sequenz von Instruktionen in dem Instruktions-Speicher 202 eine Digitalsignalverarbeitungsfunktion implementiert. Bei dieser Ausführungsform kann die Look-up-Tabelle zusätzlich zu dem Mustererkennungsdetektor 512 oder statt des Detektors vorgesehen sein.
  • Bei einer Ausführungsform, bei welcher der Funktions-Vorprozessor 204 nur die Look-up-Tabelle 514 enthält, speichert die Look-up-Tabelle 514 mehrere Muster, wobei jedes der Muster mindestens ein Sub-Set einer Instruktions-Sequenz ist, die eine Digitalsignalverarbeitungsfunktion implementiert. Somit ist diese Ausführungsform ähnlich der oben beschriebenen Ausführungsform gemäß 6 ausgelegt, außer dass der Funktions-Vorprozessor 204 eine Look-up-Tabelle 514 statt des Mustererkennungsdetektors 512 enthält, um die Instruktions-Sequenzen zu detektieren, die DSP-Funktionen implementieren. Zusätzlich speichert bei dieser Ausführungsform die Look-up-Tabelle 514 kleinere Muster, die kleineren Instruktions-Sequenzen, entsprechen, d. h. Sub-Sets von Instruktions-Sequenzen, die eine DSP-Funktionalität implementieren. Bei dieser Ausführungsform erfordert die Look-up-Tabelle eine exakte Entsprechung zu einer betreffenden Sequenz von Instruktionen. Falls eine exakte Entsprechung nicht auftritt, dann wird die Sequenz von Instruktionen an eine oder mehrere Allzweck-Ausführungseinheiten, d. h. den Allzweck-CPU-Kern 212, zur Ausführung weitergeleitet.
  • 10 zeigt die Arbeitsweise der Look-up-Tabelle 514 bei dieser Ausführungsform. Wie gezeigt wird eine Sequenz von Instruktionen in dem Instruktions-Cache 202 zeitweilig in dem Instruktions-Latch-Speicher 542 gespeichert. Der Inhalt des Instruktions-Latch-Speichers 542 wird dann durch das Element 546 mit jedem der Einträge in der Look-up-Tabelle 514 verglichen. Falls der Inhalt des Instruktions-Latch-Speichers 542 einem der Einträge in der Look-up-Tabelle 514 exakt entspricht, dann wird die DSP-Funktion oder -Instruktion 548, die diesem Eintrag entspricht, an die DSP-Ausführungseinheit 214 ausgegeben.
  • Bei den obigen Ausführungsformen gemäß 7 und 9 sind der Mustererkennungsdetektor 512 und/oder die Look-up-Tabelle 514 derart konfiguriert, dass sie nur dann feststellen, dass eine Instruktions-Sequenz eine DSP-Funktion implementiert, wenn die Feststellung mit relativer Sicherheit getroffen werden kann. Dies ist der Fall, weil eine "fehlgegangene" Instruktions-Sequenz, d. h. eine Instruktions-Sequenz, die eine DSP-Funktion implementiert, jedoch nicht als eine DSP-Funktion implementierend detektiert wurde, den Betrieb der CPU 102 nicht beeinträchtigt, da der Allzweck-Kern oder die Ausführungseinheiten die Instruktions-Sequenz ausführen können. Eine Instruktions-Sequenz jedoch, die nicht eine DSP-Funktion implementiert, welche als eine Sequenz fehl-identifiziert worden ist, die eine DSP-Funktion implementiert, ist problematischer und könnte möglicherweise zu einem fehlerhaften Betrieb führen. Somit ist zu erwarten, dass der Mustererkennungsdetektor 512 oder die Look-up-Tabelle 514 möglicherweise nicht jede Instruktions-Sequenz, die eine DSP-Funktion implementiert, korrekt detektieren. In diesem Fall wird die Instruktions-Sequenz wie im Stand der Technik an eine oder mehrere Allzweck-Einheiten ausgegeben.
  • 11 – Mustererkennunasschaltung mit Look-up-Tabelle
  • Gemäß der nun zu erläuternden 11 weist entsprechend einer weiteren Ausführungsform der Funktions-Vorprozessor 204 sowohl die Look-up-Tabelle als auch den Mustererkennungsdetektor 512 auf. Bei dieser Ausführungsform verwendet der Instruktions-Dekodierer 402 sowohl die Look-up-Tabelle als auch den Mustererkennungsdetektor 512, um festzustellen, ob eine Sequenz von Instruktionen in dem Instruktions-Speicher 202 eine Digitalsignalverarbeitungsfunktion implementiert. Bei dieser Ausführungsform wird vorzugsweise eine Zwei-Stufen-Analyse einer Sequenz von X86-Instruktionen verwendet, wobei die Look-up-Tabelle 514 zuerst feststellt, ob die Sequenz wahrscheinlicherweise eine DSP-Funktion implementiert, und dann stellt der Mustererkennungsdetektor 512 den Typ der DSP-Funktion fest, die gerade implementiert wird. Alternativ stellt der Mustererkennungsdetektor 512 erst fest, ob die Sequenz wahrscheinlicherweise eine DSP-Funktion implementiert, und dann stellt die Look-up-Tabelle 514 den Typ der DSP-Funktion fest, die gerade implementiert wird.
  • Bei einer Ausführungsform speichert die Look-up-Tabelle 514 kleine Muster, die atomischen DSP-Instruktionen entsprechen. Beispielsweise speichert die Look-up-Tabelle ein Muster aus X86-Instruktionen, die eine Multiplizierungs-Akkumulations-Addierfunktion durchführen, die bei DSP-Architekturen üblich ist. Die Look-up-Tabelle 514 speichert auch andere Muster, die atomische DSP-Funktionen implementieren. Der Mustererkennungsdetektor 512 speichert Muster, die gesamten DSP-Funktionen entsprechen, wie z. B. ein FFT, eine Korrelation und eine Konvolution u. a.
  • Zuerst vergleicht die Look-up-Tabelle jeden Eintrag mit den eintreffenden Instruktions-Sequenzen und speichert die Anzahl von "Treffern" oder Entsprechungen für eine Sequenz. Falls die Anzahl von Entsprechungen größer als ein bestimmter definierter Schwellwert ist, dann enthält die Sequenz eine Anzahl von DSP-Typ-"Instruktionen", und es wird somit angenommen, dass sie eine DSP-Funktion implementiert. In diesem Fall wird der Mustererkennungsdetektor 512 dahingehend aktiviert, dass er die gesamte Sequenz mit jedem der gespeicherten Muster vergleicht, um den Typ der DSP-Funktion, der gerade von der X86-Instruktions-Sequenz implementiert wird, zu bestimmen. Wie bereits erwähnt, stellt der Mustererkennungsdetektor 512 fest, ob die Instruktions-Sequenz einem der gespeicherten Muster im wesentlichen entspricht.
  • Schlussbemerkung
  • Somit handelt es sich bei der vorliegenden Erfindung um eine neuartige CPU- oder Mikroprozessor-Architektur, welche die Ausführung von DSP- und/oder mathematischen Operationen optimiert, während die Abwärtskompatibilität mit existierender Software aufrechterhalten wird.

Claims (37)

  1. Zentralverarbeitungseinheit (102) zum Durchführen von Digitalsignal-Verarbeitungsvorgängen, mit: einem Instruktionsspeicher (202) zum Speichern mehrerer Instruktionen, wobei der Instruktionsspeicher eine oder mehrere Sequenzen von Instruktionen speichert, die zum Durchführen einer Digitalsignal-Verarbeitungsfunktion vorgesehen sind; einem mit dem Instruktionsspeicher verbundenen Funktions-Vorprozessor (204) mit: einer Einrichtung (502) zum Prüfen der einen oder mehreren Sequenzen von Instruktionen, die in dem Instruktionsspeicher gespeichert sind; einer Einrichtung (504) zum Feststellen, ob eine in dem Instruktionsspeicher befindliche Sequenz der Instruktionen zum Durchführen einer Digitalsignal-Verarbeitungsfunktion vorgesehen ist; einer Einrichtung (506) zum Konvertieren einer in dem Instruktionsspeicher befindlichen Sequenz der Instruktionen, die zum Durchführen einer Digitalsignal-Verarbeitungsfunktion vorgesehen ist, in eine Digitalsignal-Verarbeitungsfunktions-Identifizierung; mindestens einen mit dem Funktions-Vorprozessor verbundenen Mehrzweck-Verarbeitungskern (212) zum Ausführen in dem Instruktionsspeicher befindlicher Instruktionen; und mindestens einen mit dem Funktions-Vorprozessor verbundenen Digitalsignal-Verarbeitungskern (214) zum Ausführen von Digitalsignal-Verarbeitungsfunktionen, wobei der mindestens eine Digitalsignal-Verarbeitungskern die Digitalsignal-Verarbeitungsfunktions-Identifizierung empfängt und auf die Digitalsignal-Verarbeitungsfunktions-Identifizierung aus dem Funktions-Vorprozessor hin eine Digitalsignal-Verarbeitungsfunktion durchführt.
  2. Zentralverarbeitungseinheit nach Anspruch 1, bei der der Instruktionsspeicher eine erste Sequenz von Instruktionen speichert, die keine Digitalsignal-Verarbeitungsfunktion durchführt, und bei der der Instruktionsspeicher eine zweite Sequenz von Instruktionen speichert, die eine Digitalsignal-Verarbeitungsfunktion durchführt; wobei der mindestens eine Mehrzweck-Verarbeitungskern die erste Sequenz von Instruktionen ausführt; und wobei die von dem Digitalsignal-Verarbeitungskern durchgeführte Digitalsignal-Verarbeitungsfunktion im wesentlichen äquivalent zu der Ausführung der zweiten Sequenz von Instruktionen ist.
  3. Zentralverarbeitungseinheit nach Anspruch 1, bei der der mindestens eine Digitalsignal-Verarbeitungskern Daten- und Zeitgebungs-Signale an den mindestens einen Mehrzweck-Verarbeitungskern ausgibt.
  4. Zentralverarbeitungseinheit nach Anspruch 1, bei der der Funktions-Vorprozessor als Reaktion darauf, dass die Bestimmungseinrichtung feststellt, dass die Sequenz von Instruktionen in dem Instruktionsspeicher zum Durchführen einer Digitalsignal-Verarbeitungsfunktion vorgesehen ist, eine Digitalsignal-Verarbeitungsfunktions-Identifizierung und einen oder mehrere Parameter erzeugt.
  5. Zentralverarbeitungseinheit nach Anspruch 1, bei der der mindestens eine Mehrzweck-Verarbeitungskern mit der X86-Mikroprozessoren-Familie kompatibel ist.
  6. Zentralverarbeitungseinheit nach Anspruch 1, bei der die mehreren Instruktionen X86-Opcodes sind.
  7. Zentralverarbeitungseinheit nach Anspruch 1, bei der der mindestens eine Digitalsignal-Verarbeitungskern zum Durchführen einer oder mehrerer mathematischer Operationen aus der Gruppe in der Lage ist, zu der Konvolution, Korrelation, schnelle Fourier-Transformation und inneres Produkt zählen.
  8. Zentralverarbeitungseinheit nach Anspruch 1, bei der der mindestens eine Mehrzweck-Verarbeitungskern und der mindestens eine Digitalsignal-Verarbeitungskern im wesentlichen parallel arbeiten.
  9. Zentralverarbeitungseinheit nach einem oder mehreren der Ansprüche 1–8, bei der der Funktions-Vorprozessor (204) innerhalb eines Instruktions-Dekodierers (402) enthalten ist, der mit dem Instruktionsspeicher (202) verbunden ist; und bei der der mindestens eine Mehrzweck-Verarbeitungskern eine oder mehrere Mehrzweck-Ausführungseinheiten (448) aufweist, die mit dem Instruktions-Dekodierer (402) verbunden sind, um im Instruktionsspeicher befindliche Instruktionen auszuführen; und der Digitalsignal-Verarbeitungskern aufweist: eine oder mehrere Instruktions-Dekodierer verbundene Digitalsignalverarbeitungs-Ausführungseinheiten (214) zum Durchführen der Digitalsignal-Verarbeitungsfunktionen auf die empfangene Digitalsignal-Verarbeitungsfunktions-Identifizierung hin; wobei der Instruktions-Dekodierer Instruktionen, die keine Digitalsignal-Verarbeitungsfunktion implementieren, zu den einen oder mehreren Mehrzweck-Ausführungseinheiten überträgt; und wobei der Instruktions-Dekodierer Digitalsignal-Verarbeitungsfunktions-Identifizierungen zu den einen oder mehreren Digitalsignal-Ausführungseinheiten überträgt.
  10. Zentralverarbeitungseinheit nach einem der vorhergehenden Ansprüche, bei der der Funktions-Vorprozessor (204) aufweist: einen Mustererkennungsdetektor (512), der mehrere Muster speichert, die Instruktions-Sequenzen angeben, welche Digitalsignal-Verarbeitungsfunktionen implementieren, wobei der Mustererkennungsdetektor die in dem Instruktionsspeicher gespeicherte Sequenz von Instruktionen prüft und die Sequenz von Instruktionen mit den mehreren gespeicherten Mustern vergleicht, wobei der Mustererkennungsdetektor feststellt, ob die in dem Instruktionsspeicher befindliche Sequenz von Instruktionen den mehreren gespeicherten Mustern entspricht, und wobei eine wesentliche Entsprechung anzeigt, dass die Sequenz von Instruktionen eine Digitalsignal-Verarbeitungsfunktion implementiert.
  11. Zentralverarbeitungseinheit nach Anspruch 10, bei der eine wesentliche Entsprechung eintritt, wenn die Sequenz von Instruktionen in dem Instruktionsspeicher einem der mehreren gespeicherten Muster um mehr als 95% entspricht.
  12. Zentralverarbeitungseinheit nach Anspruch 10 oder Anspruch 11, bei der die mehreren Muster in dem Mustererkennungsdetektor softwareprogrammierbar sind.
  13. Zentralverarbeitungseinheit nach einem der Ansprüche 1–9, bei der der Funktions-Vorprozessor (204) aufweist: eine Look-up-Tabelle (514), die mehrere Einträge speichert, welche Instruktions-Sequenzen aufweisen, die Digitalsignal-Verarbeitungsfunktionen implementieren, wobei die Look-up-Tabelle ferner für jede der einen oder mehreren Einträge eine entsprechende DSP-Instruktion speichert, wobei der Funktions-Vorprozessor eine in dem Instruktionsspeicher gespeicherte Instruktions-Sequenz mit jedem der Einträge in der Look-up-Tabelle vergleicht, wobei der Funktions-Vorprozessor feststellt, ob die in dem Instruktionsspeicher befindliche Sequenz von Instruktionen einem der mehreren Einträge entspricht, und wobei eine Entsprechung anzeigt, dass die Sequenz von Instruktionen eine Digitalsignal-Verarbeitungsfunktion implementiert.
  14. Zentralverarbeitungseinheit nach Anspruch 13, bei der eine Entsprechung eintritt, wenn die Sequenz von Instruktionen in dem Instruktionsspeicher einem der mehreren Einträge in der Look-up-Tabelle exakt entspricht.
  15. Zentralverarbeitungseinheit nach Anspruch 13 oder Anspruch 14, bei der die in der Look-up-Tabelle enthaltenen mehreren Einträge softwareprogrammierbar sind.
  16. Zentralverarbeitungseinheit nach Anspruch 9, bei der der Funktions-Vorprozessor (204) aufweist: eine Scan-ahead-Einrichtung (502) zum Prüfen der in dem Instruktions-Speicher gespeicherten einen oder mehreren Sequenzen von Instruktionen, und wobei die Scan-ahead-Einrichtung die in dem Instruktions-Speicher gespeicherten einen oder mehreren Sequenzen von Instruktionen prüft, bevor der Instruktions-Dekodierer die Operation zum Dekodieren der die einen oder mehreren Sequenzen von Instruktionen aufweisenden Instruktionen ausführt.
  17. Verfahren zum Ausführen von Instruktionen in einer Zentralverarbeitungseinheit (CPU), wobei die CPU mindestens einen Mehrzweck-CPU-Kern und mindestens einen Digitalsignal-Verarbeitungs-(DSP-)Kern aufweist, mit den folgenden Schritten: Speichern einer oder mehrerer Sequenzen von Instruktionen in einem Instruktions-Speicher zur Durchführung durch die Zentralverarbeitungseinheit; Prüfen einer im Instruktionsspeicher befindlichen Sequenz von Instruktionen; Feststellen, ob die im Instruktionsspeicher befindliche Sequenz von Instruktionen zum Durchführen einer Digitalsignal-Verarbeitungsfunktion vorgesehen ist; Konvertieren der im Instruktionsspeicher befindlichen Sequenz der Instruktionen, die zum Durchführen einer Digitalsignal-Verarbeitungsfunktion vorgesehen ist, in eine Digitalsignal-Verarbeitungsfunktions-Identifizierung; wobei der Digitalsignal-Verarbeitungskern die Verarbeitungsfunktions-Identifizierung empfängt, wobei der Digitalsignal-Verarbeitungskern auf die empfangene Digitalsignal-Verarbeitungsfunktions-Identifizierung hin eine Digitalsignal-Verarbeitungsfunktion durchführt.
  18. Verfahren nach Anspruch 17, bei dem die Speicherung das Speichern einer ersten Sequenz von Instruktionen in dem Instruktionsspeicher, die eine erste Digitalsignal-Verarbeitungsfunktion ausführt, und das Speichern einer zweiten Sequenz von Instruktionen in dem Instrukti onsspeicher umfasst, die keine Digitalsignal-Verarbeitungsfunktion ausführt; bei dem bei der Konvertierung das Konvertieren der in dem Instruktionsspeicher befindlichen ersten Sequenz der Instruktionen, die zum Durchführen der ersten Digitalsignal-Verarbeitungsfunktion vorgesehen ist, in eine erste Digitalsignal-Verarbeitungsfunktions-Identifizierung umfasst; bei der die Durchführung den Schritt umfasst, dass der Digitalsignal-Verarbeitungskern die ersten Digitalsignal-Verarbeitungsfunktion auf die erste Digitalsignal-Verarbeitungsfunktions-Identifizierung ausführt, wobei die Ausführung der ersten Digitalsignal-Verarbeitungsfunktion im wesentlichen äquivalent ist zu der Ausführung der ersten Sequenz von Instruktionen; und wobei die Mehrzweck-Zentralverarbeitungseinheit die zweite Sequenz von Instruktionen ausführt.
  19. Verfahren nach Anspruch 18, bei dem ferner: der Digitalsignal-Verarbeitungskern und der Mehrzweck-Zentralverarbeitungseinheitskern im wesentlichen parallel arbeiten.
  20. Verfahren nach Anspruch 18, bei dem ferner: der Digitalsignal-Verarbeitungskern Daten- und Zeitgebungs-Signale an den Mehrzweck-Zentralverarbeitungseinheitskern ausgeben.
  21. Verfahren nach Anspruch 17, bei dem ferner: der Funktions-Vorprozessor auf die Feststellung hin, dass die im Instruktionsspeicher befindliche Sequenz von Instruktionen zum Durch führen einer Digitalsignal-Verarbeitungsfunktion vorgesehen ist, eine Digitalsignal-Verarbeitungsfunktions-Identifizierung und einen oder mehrere Parameter erzeugt.
  22. Verfahren nach Anspruch 17, bei dem der Mehrzweck-Zentralverarbeitungseinheits-Kern mit der X86-Mikroprozessoren-Familie kompatibel ist.
  23. Verfahren nach Anspruch 22, bei dem die einen oder mehreren Sequenzen von Instruktionen X86-Opcodes aufweisen.
  24. Verfahren nach Anspruch 17, bei dem der Digitalsignal-Verarbeitungskern eine oder mehrere mathematische Operationen aus der Gruppe durchführt, zu der Konvolution, schnelle Fourier-Transformation und inneres Produkt zählen.
  25. Verfahren nach einem der Ansprüche 17–24, bei dem der Mehrzweck-CPU-Kern eine oder mehrere Mehrzweck-Ausführungseinheiten aufweist, und der DSP-Kern eine oder mehrere Digitalsignalverarbeitungs-Ausführungseinheiten aufweist, ferner mit den folgenden Schritten: Übertragen von Instruktionen, die keine Digitalsignal-Verarbeitungsfunktion implementieren, zu den einen oder mehreren Mehrzweck-Ausführungseinheiten; wobei die eine oder die mehreren Mehrzweck-Ausführungseinheiten die Instruktionen, die keine Digitalsignal-Verarbeitungsfunktion implementieren, empfangen und ausführen; und die eine oder die mehreren Digitalsignalverarbeitungs-Ausführungseinheiten die Digitalsignal-Verarbeitungsfunktions-Identifizierung empfangen, und die Digitalsignal-Verarbeitungsfunktion durchführen.
  26. Verfahren nach einem der Ansprüche 17–25, bei dem die CPU ferner einen Mustererkennungsdetektor aufweist, der mehrere Muster speichert, die Instruktions-Sequenzen angeben, welche Digitalsignal-Verarbeitungsfunktionen implementieren, wobei: der Mustererkennungsdetektor eine in dem Instruktionsspeicher gespeicherte Sequenz von Instruktionen prüft mit den mehreren gespeicherten Mustern vergleicht; wobei der Mustererkennungsdetektor feststellt, ob die in dem Instruktionsspeicher befindliche Sequenz von Instruktionen einem der mehreren gespeicherten Mustern im wesentlichen entspricht, und wobei eine wesentliche Entsprechung anzeigt, dass die Sequenz von Instruktionen eine Digitalsignal-Verarbeitungsfunktion implementiert.
  27. Verfahren nach Anspruch 26, bei dem bei der Feststellung, ob die in dem Instruktionsspeicher befindliche Sequenz von Instruktionen einem der mehreren gespeicherten Muster im wesentlichen entspricht, festgestellt wird, ob die Sequenz von Instruktionen in dem Instruktionsspeicher einem der mehreren gespeicherten Muster um mehr als 95% entspricht.
  28. Verfahren nach Anspruch 26 oder Anspruch 27, ferner mit folgendem Schritt: programmatisches Speichern der mehreren Muster in dem Mustererkennungsdetektor vor dem Vergleichen.
  29. Verfahren nach Anspruch 25, bei dem der Funktions-Vorprozessor eine Look-up-Tabelle aufweist, die mehrere Einträge speichert, welche Instruktions-Sequenzen aufweisen, die Digitalsignal-Verarbeitungsfunk tionen implementieren, wobei das Verfahren folgende Schritte umfasst: durch den Funktions-Vorprozessor, Vergleichen einer in dem Instruktionsspeicher gespeicherten Sequenz von Instruktionen mit den mehreren gespeicherten Einträgen in der Look-up-Tabelle, durch den Funktions-Vorprozessor, Feststellen, ob die in dem Instruktionsspeicher befindliche Sequenz von Instruktionen einem der mehreren Einträge in der Look-up-Tabelle entspricht, wobei eine Entsprechung anzeigt, dass die Sequenz von Instruktionen eine Digitalsignal-Verarbeitungsfunktion implementiert.
  30. Verfahren nach Anspruch 29, bei dem bei der Feststellung, ob die in dem Instruktionsspeicher befindliche Sequenz von Instruktionen einem der mehreren Einträge in der Look-up-Tabelle entspricht, festgestellt wird, ob die in dem Instruktionsspeicher befindliche Sequenz von Instruktionen exakt einem der mehreren Einträge in der Look-up-Tabelle entspricht.
  31. Verfahren nach Anspruch 30, ferner mit dem folgenden Schritt: programmatisches Speichern der mehreren Einträge in der Look-up-Tabelle vor dem Vergleichen.
  32. Verfahren nach Anspruch 25, ferner mit den folgenden Schritten: Übertragen der Digitalsignal-Verarbeitungsfunktions-Identifizierung an eine oder mehrere Digitalsignalverarbeitungs-Ausführungseinheiten, wobei das Übertragen nach dem Konvertieren und vor dem genannten Durchführen erfolgt, wobei das Übertragen erfolgt, falls bei der Feststellung festgestellt wird, dass die in dem Speicher befindliche Sequenz von Instruktionen eine Digitalsignal-Verarbeitungsfunktion implementiert; und Dekodieren der die Sequenz von Instruktionen aufweisenden Instruktionen, falls die in dem Instruktionsspeicher befindliche Sequenz von Instruktionen keine Digitalsignal-Verarbeitungsfunktion implementiert, und wobei das Dekodieren nach dem Prüfen der Sequenz von Instruktionen erfolgt, wobei das Dekodieren nur durchgeführt wird, falls bei der Feststellung festgestellt wird, dass die Sequenz von Instruktionen keine Digitalsignal-Verarbeitungsfunktion implementiert.
  33. Verfahren nach Anspruch 32, ferner mit dem folgenden Schritt: Deaktivieren der Operation des Dekodierens der die Sequenz von Instruktionen aufweisenden Instruktionen, falls bei der Feststellung festgestellt wird, dass die in dem Instruktionsspeicher befindliche Sequenz von Instruktionen eine Digitalsignal-Verarbeitungsfunktion implementiert.
  34. Verfahren nach Anspruch 33, bei dem die Speicherung das Speichern einer ersten Sequenz von Instruktionen umfasst, die eine erste Digitalsignal-Verarbeitungsfunktion implementiert; wobei bei der Prüfung die im Instruktionsspeicher gespeicherte erste Sequenz von Instruktionen vor dem Dekodieren geprüft wird; wobei bei dem Festellen festgestellt wird, dass die im Instruktionsspeicher befindliche erste Sequenz von Instruktionen eine Digitalsignal-Verarbeitungsfunktion implementiert; wobei bei der Konvertierung die im Instruktionsspeicher befindliche erste Sequenz von Instruktionen, welche die erste Digitalsignal-Ver arbeitungsfunktion implementiert, in eine erste Digitalsignal-Verarbeitungsfunktions-Identifizierung konvertiert wird; und wobei bei der Deaktivierung die Operation des Dekodierens für die die erste Sequenz von Instruktionen aufweisenden Instruktionen auf die Feststellung hin deaktiviert wird, dass die im Instruktionsspeicher befindliche erste Sequenz von Instruktionen eine Digitalsignal-Verarbeitungsfunktion implementiert.
  35. Verfahren nach Anspruch 34, bei dem das Durchführen das Durchführen das Durchführen der ersten Digitalsignal-Verarbeitungsfunktion umfasst; bei dem das Durchführen der ersten Digitalsignal-Verarbeitungsfunktion im wesentlichen äquivalent ist zu der Ausführung der ersten Sequenz von Instruktionen.
  36. Verfahren nach Anspruch 33, bei dem die Speicherung ferner das Speichern einer zweiten Sequenz von Instruktionen umfasst, die keine Digitalsignal-Verarbeitungsfunktion implementiert; wobei bei der Prüfung die im Instruktionsspeicher gespeicherte zweite Sequenz von Instruktionen vor der Operation des Dekodierens geprüft wird; wobei bei dem Festellen festgestellt wird, dass die im Instruktionsspeicher befindliche zweite Sequenz von Instruktionen keine Digitalsignal-Verarbeitungsfunktion implementiert; wobei bei der Deaktivierung keine Operation des Dekodierens für die zweite Sequenz von Instruktionen deaktiviert wird; und wobei bei der Dekodierung die die zweite Sequenz von Instruktionen aufweisenden Instruktionen auf die Feststellung hin dekodiert werden, dass die im Instruktionsspeicher befindliche Sequenz von Instruktionen keine Digitalsignal-Verarbeitungsfunktion implementiert.
  37. Verfahren nach Anspruch 36, ferner mit folgendem Schritt: Ausführen der zweiten Sequenz von Instruktionen nach dem Dekodieren der die zweite Sequenz von Instruktionen aufweisenden Instruktionen.
DE69724771T 1996-03-18 1997-01-23 Zentralprozessoreinheit mit x86 und dsp kern und einem dsp funktions-dekoder zum abbilden von x 86-befehlen auf dsp-befehle Expired - Lifetime DE69724771T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US618243 1984-06-07
US08/618,243 US5794068A (en) 1996-03-18 1996-03-18 CPU with DSP having function preprocessor that converts instruction sequences intended to perform DSP function into DSP function identifier
PCT/US1997/001067 WO1997035252A1 (en) 1996-03-18 1997-01-23 Central processing unit having an x86 and dsp core and including a dsp function decoder which maps x86 instructions to dsp instructions

Publications (2)

Publication Number Publication Date
DE69724771D1 DE69724771D1 (de) 2003-10-16
DE69724771T2 true DE69724771T2 (de) 2004-07-15

Family

ID=24476907

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69724771T Expired - Lifetime DE69724771T2 (de) 1996-03-18 1997-01-23 Zentralprozessoreinheit mit x86 und dsp kern und einem dsp funktions-dekoder zum abbilden von x 86-befehlen auf dsp-befehle

Country Status (6)

Country Link
US (1) US5794068A (de)
EP (1) EP0888584B1 (de)
JP (1) JP3662258B2 (de)
KR (1) KR100464101B1 (de)
DE (1) DE69724771T2 (de)
WO (1) WO1997035252A1 (de)

Families Citing this family (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6032247A (en) * 1996-03-18 2000-02-29 Advanced Micro Devices, Incs. Central processing unit including APX and DSP cores which receives and processes APX and DSP instructions
US6085314A (en) * 1996-03-18 2000-07-04 Advnced Micro Devices, Inc. Central processing unit including APX and DSP cores and including selectable APX and DSP execution modes
US6332215B1 (en) 1998-12-08 2001-12-18 Nazomi Communications, Inc. Java virtual machine hardware for RISC and CISC processors
US7225436B1 (en) 1998-12-08 2007-05-29 Nazomi Communications Inc. Java hardware accelerator using microcode engine
US20050149694A1 (en) * 1998-12-08 2005-07-07 Mukesh Patel Java hardware accelerator using microcode engine
US8074055B1 (en) 1999-01-28 2011-12-06 Ati Technologies Ulc Altering data storage conventions of a processor when execution flows from first architecture code to second architecture code
US6826748B1 (en) 1999-01-28 2004-11-30 Ati International Srl Profiling program execution into registers of a computer
US7275246B1 (en) 1999-01-28 2007-09-25 Ati International Srl Executing programs for a first computer architecture on a computer of a second architecture
US7013456B1 (en) 1999-01-28 2006-03-14 Ati International Srl Profiling execution of computer programs
US8121828B2 (en) 1999-01-28 2012-02-21 Ati Technologies Ulc Detecting conditions for transfer of execution from one computer instruction stream to another and executing transfer on satisfaction of the conditions
US7111290B1 (en) * 1999-01-28 2006-09-19 Ati International Srl Profiling program execution to identify frequently-executed portions and to assist binary translation
US6954923B1 (en) 1999-01-28 2005-10-11 Ati International Srl Recording classification of instructions executed by a computer
US8127121B2 (en) 1999-01-28 2012-02-28 Ati Technologies Ulc Apparatus for executing programs for a first computer architechture on a computer of a second architechture
US6978462B1 (en) 1999-01-28 2005-12-20 Ati International Srl Profiling execution of a sequence of events occuring during a profiled execution interval that matches time-independent selection criteria of events to be profiled
US7065633B1 (en) 1999-01-28 2006-06-20 Ati International Srl System for delivering exception raised in first architecture to operating system coded in second architecture in dual architecture CPU
US7941647B2 (en) 1999-01-28 2011-05-10 Ati Technologies Ulc Computer for executing two instruction sets and adds a macroinstruction end marker for performing iterations after loop termination
US6779107B1 (en) 1999-05-28 2004-08-17 Ati International Srl Computer execution by opportunistic adaptation
US7254806B1 (en) 1999-08-30 2007-08-07 Ati International Srl Detecting reordered side-effects
US6934832B1 (en) 2000-01-18 2005-08-23 Ati International Srl Exception mechanism for a computer
US6912469B1 (en) * 2000-05-05 2005-06-28 Kenneth J. Cool Electronic hybridization assay and sequence analysis
AU2001266572A1 (en) * 2000-05-11 2001-11-20 Hanna, Michael Cryptographic data processing systems, computer programs, and methods of operating same
US7020766B1 (en) * 2000-05-30 2006-03-28 Intel Corporation Processing essential and non-essential code separately
US7162426B1 (en) * 2000-10-02 2007-01-09 Xybernaut Corporation Computer motherboard architecture with integrated DSP for continuous and command and control speech processing
KR20020028814A (ko) * 2000-10-10 2002-04-17 나조미 커뮤니케이션즈, 인코포레이티드 마이크로코드 엔진을 이용한 자바 하드웨어 가속기
US6832305B2 (en) * 2001-03-14 2004-12-14 Samsung Electronics Co., Ltd. Method and apparatus for executing coprocessor instructions
US7162716B2 (en) * 2001-06-08 2007-01-09 Nvidia Corporation Software emulator for optimizing application-programmable vertex processing
US8769508B2 (en) 2001-08-24 2014-07-01 Nazomi Communications Inc. Virtual machine hardware for RISC and CISC processors
US8189591B2 (en) 2001-10-30 2012-05-29 Exar Corporation Methods, systems and computer program products for packet ordering for parallel packet transform processing
US7017030B2 (en) * 2002-02-20 2006-03-21 Arm Limited Prediction of instructions in a data processing apparatus
US7114042B2 (en) * 2003-05-22 2006-09-26 International Business Machines Corporation Method to provide atomic update primitives in an asymmetric heterogeneous multiprocessor environment
JP2006126482A (ja) * 2004-10-28 2006-05-18 Seiko Epson Corp 音声データ処理装置
US7689402B2 (en) 2006-11-17 2010-03-30 Telefonaktiebolaget Lm Ericsson (Publ) Method and apparatus for retrieving application-specific code using memory access capabilities of a host processor
US8095917B2 (en) * 2007-06-04 2012-01-10 Microsoft Corporation Debugger for virtual intermediate language operations
US8065506B2 (en) * 2007-08-17 2011-11-22 Texas Instruments Incorporated Application specific instruction set processor for digital radio processor receiving chain signal processing
US20140258685A1 (en) * 2011-12-30 2014-09-11 Srihari Makineni Using Reduced Instruction Set Cores
US11113058B1 (en) * 2018-11-20 2021-09-07 Facebook, Inc. Reconfigurable processing unit
US20230099989A1 (en) * 2021-09-24 2023-03-30 Intel Corporation Scalable toggle point control circuitry for a clustered decode pipeline

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4439828A (en) * 1981-07-27 1984-03-27 International Business Machines Corp. Instruction substitution mechanism in an instruction handling unit of a data processing system
JPS5932045A (ja) * 1982-08-16 1984-02-21 Hitachi Ltd 情報処理装置
JPH0267602A (ja) * 1988-09-02 1990-03-07 Hitachi Ltd 数値演算装置
EP0442041A3 (en) * 1990-01-18 1991-09-04 National Semiconductor Corporation Integrated digital signal processor/general purpose cpu with shared internal memory
US5241636A (en) * 1990-02-14 1993-08-31 Intel Corporation Method for parallel instruction execution in a computer
US6230255B1 (en) * 1990-07-06 2001-05-08 Advanced Micro Devices, Inc. Communications processor for voice band telecommunications
US5519873A (en) * 1990-08-31 1996-05-21 International Business Machines Corporation Apparatus for switching digital command execution between a general purpose microprocessor and dedicted execution logic
US5588118A (en) * 1991-08-21 1996-12-24 Zilog, Inc. Single chip dual processor
US5574872A (en) * 1991-12-10 1996-11-12 Intel Corporation Method and apparatus for controlling the saving of pipelines in pipelined processors during trap handling
JPH05181673A (ja) * 1991-12-27 1993-07-23 Fujitsu Ltd マイクロプロセッサ
DE69326705T2 (de) * 1992-02-14 2000-04-27 Motorola, Inc. Verfahren und Anordnung zur Feststellung der Befehlsablauffolge in einem Datenverarbeitungssystem
US5619665A (en) * 1995-04-13 1997-04-08 Intrnational Business Machines Corporation Method and apparatus for the transparent emulation of an existing instruction-set architecture by an arbitrary underlying instruction-set architecture
US5649138A (en) * 1996-01-04 1997-07-15 Advanced Micro Devices Time dependent rerouting of instructions in plurality of reservation stations of a superscalar microprocessor

Also Published As

Publication number Publication date
DE69724771D1 (de) 2003-10-16
WO1997035252A1 (en) 1997-09-25
EP0888584A1 (de) 1999-01-07
JP3662258B2 (ja) 2005-06-22
KR100464101B1 (ko) 2005-06-17
JP2001502448A (ja) 2001-02-20
EP0888584B1 (de) 2003-09-10
KR20000064518A (ko) 2000-11-06
US5794068A (en) 1998-08-11

Similar Documents

Publication Publication Date Title
DE69724771T2 (de) Zentralprozessoreinheit mit x86 und dsp kern und einem dsp funktions-dekoder zum abbilden von x 86-befehlen auf dsp-befehle
DE69636416T2 (de) Mikroprozessor ausgelegt zum erkennen eines unterprogramm-aufrufs einer dsp-routine und zum ansteuern eines dsp, diese routine auszuführen
DE69904189T2 (de) Konfigurierter prozessor zur abbildung von logischen registernummern auf physikalische registernummern unter verwendung von virtuellen registernummern
DE69311330T2 (de) Befehlsablauffolgeplanung von einem risc-superskalarprozessor
DE69932066T2 (de) Mechanismus zur "store-to-load forwarding"
DE69329778T2 (de) System und verfahren zur handhabung von laden und/oder speichern in einem superskalar mikroprozessor
DE68928677T2 (de) Verfahren und digitaler Computer zur Vorverarbeitung mehrerer Befehle
DE69325086T2 (de) Verfahren und System für spekulative Befehlsausführung
DE69607760T2 (de) Ungeordnete lade-/speicher-ausführungssteuerung
DE69233493T2 (de) RISC-Prozessor mit erweiterbarer Architektur
DE69704166T2 (de) Mikroprozessor zur befehlsübersetzung von einem ersten befehlssatz zu einem zweiten befehlssatz, speicherung und ausführung der übersetzten befehle
DE69534148T2 (de) Rechnersystem zur Ausführung von Verzweigungsbefehlen
DE69123629T2 (de) Maschinenarchitektur für skalaren Verbundbefehlssatz
DE69129565T2 (de) Hochleistungsfähiger Emulator mit Pipelining
DE69619885T2 (de) Datenverarbeitungsanordnung mit Koprozessor
DE69122294T2 (de) Verbindungstechnik für Prozessoren, die auf Befehlsebene parallel arbeiten
DE69227429T2 (de) Anordnung und Verfahren zur Auflösung von Abhängigkeiten unter mehreren Befehlen in einer Speicheranordnung
DE4301417C2 (de) Computersystem mit Einrichtung zur parallelen Befehlsausführung
DE69420540T2 (de) Verfahren und Vorrichtung zum Implementieren eines vierstufigen Verzweigungsauflosungssystem in einem Rechnerprozessor
DE60010907T2 (de) Sram-steuerungvorrichtung für parallele prozessorarchitektur mit adressen- und befehlswarteschlange und arbiter
DE69636861T2 (de) Mikroprozessor mit Lade-/Speicheroperation zu/von mehreren Registern
DE69701141T2 (de) Multithreaded mikroprozessor ausgestaltet zur ausführung von unterbrechungsverarbeitungsroutinen als threads
DE3685913T2 (de) Vektorenverarbeitung.
DE69736105T2 (de) Hierarchische durchsuchlogik für ungeordnete lade/speicherausführungssteuerung
DE69521461T2 (de) Vorrichtung und Verfahren zur Abtastung einer Befehlswarteschlange

Legal Events

Date Code Title Description
8364 No opposition during term of opposition