DE4329336A1 - Einrichtung und Verfahren zur Identifizierung eines Computer-Mikroprozessors - Google Patents

Einrichtung und Verfahren zur Identifizierung eines Computer-Mikroprozessors

Info

Publication number
DE4329336A1
DE4329336A1 DE4329336A DE4329336A DE4329336A1 DE 4329336 A1 DE4329336 A1 DE 4329336A1 DE 4329336 A DE4329336 A DE 4329336A DE 4329336 A DE4329336 A DE 4329336A DE 4329336 A1 DE4329336 A1 DE 4329336A1
Authority
DE
Germany
Prior art keywords
microprocessor
register
flag
command
family
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.)
Granted
Application number
DE4329336A
Other languages
English (en)
Other versions
DE4329336C2 (de
Inventor
Robert S Dreyer
Donald B Alpert
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.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=25471217&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=DE4329336(A1) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE4329336A1 publication Critical patent/DE4329336A1/de
Application granted granted Critical
Publication of DE4329336C2 publication Critical patent/DE4329336C2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/73Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information by creating or determining hardware identification, e.g. serial numbers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/006Identification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/328Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for runtime instruction patching
    • 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/72Indexing scheme relating to groups G06F7/72 - G06F7/729
    • G06F2207/7219Countermeasures against side channel or fault attacks

Description

Die Erfindung betrifft eine Einrichtung und ein Verfahren zur Identifizierung eines Computer-Mikroprozessors während des Betriebsstarts und während der Operation. Sobald er identifi­ ziert ist, können zu dem identifizierten Mikroprozessor zugehö­ rige Merkmale aktiviert werden.
Während der Rechneroperation ist die Identifizierung des Prozessors in einem bestimmten Computersystem nützlich. Bei der Initialisierung und bei Anfangsladeoperationen, ist es wichtig, den Mikroprozessor zu identifizieren, so daß bestimmte Merkmale von der Initialisierungssoftware installiert werden können.
Außerdem kann es nützlich sein, während der Installation oder während des Durchlaufs von Software den Mikroprozessor zu identifizieren. Die Merkmale des Mikroprozessors, die der Soft­ ware verfügbar sind, hängen stark von der Gattung und dem Mo­ dell des Mikroprozessors ab. Sobald sie identifiziert sind, können diese Merkmale besser genutzt werden.
Es kann nützlich sein, zusätzlich zur Familie und dem Mo­ dell des Mikroprozessors die Version oder den Arbeitsablauf (stepping) des Mikroprozessors zu kennen. Eine "Stepping-ID" eines Mikroprozessors identifiziert seine Version. Z.B. kann der Mikroprozessor in mehreren verschiedenen Versionen herge­ stellt worden sein, wobei jede Version mit einer anderen Step­ ping-ID identifiziert ist. Während der Zeit, in der ein Mikro­ prozessor hergestellt wird, werden oft verschiedene Versionen eines Mikroprozessors eingeführt, um Software- oder Konstrukti­ onsfehler (bugs) oder andere Probleme, die in älteren Versionen aufgetreten sind, zu korrigieren. Oft werden diese Softwarefeh­ ler erst entdeckt, nachdem ein Mikroprozessor in Produktion ge­ gangen ist, wenn es zu spät für eine Korrektur ist. Software­ fehler können die Antwort des Mikroprozessors auf bestimmte Be­ fehle oder bestimmte Befehlsfolgen beeinflussen. Es ist nütz­ lich, die Stepping-ID eines Mikroprozessors zu kennen, damit Befehle und Merkmale, die von dem Softwarefehler betroffen sind, nicht aktiviert werden. Außerdem sind die Softwarefehler bekannt, sobald ein Mikroprozessor durch die Stepping-ID iden­ tifiziert wurde, und Kompensationssoftware kann installiert werden. Softwarefixierungen, die einen vorhandenen Softwarefeh­ ler kompensieren, werden oft "Umgehungen" genannt. Wenn es z. B. bekannt ist, daß ein von einem "POPA" gefolgter "PUSHA" eine Ausnahme erzeugt, besteht eine Lösung darin, einen "NOP" (keine Operation) zwischen die beiden Befehle einzufügen.
Um den Mikroprozessor während der Initialisierung eines Computers zu identifizieren, haben ältere Mikroprozessoren einen Konstanten-ROM mit einem ID-Code, der beim Betriebsstart in ein Register des Computer-Mikroprozessors gelesen wird. Nach dem Lesen des ID-Codes wird der Inhalt des Registers von der Initialisierungssoftware überschrieben. Der Inhalt des Konstan­ ten-ROM ist für alle anderen Zwecke nicht verfügbar, z. T. wegen Kompatibilitätserfordernissen. Ein Problem bei dieser Herange­ hensweise besteht darin, daß der ID-Code nur während der Ini­ tialisierung und nicht zu jeder anderen Zeit verfügbar ist.
Bekannte Identifikationsverfahren eines Mikroprozessors ba­ sieren auf einer Fall-zu-Fall, "ad hoc"-Lösung. Wenn beispiels­ weise ein erstes Modell ein bestimmtes Bit immer auf Null setzt und das zweite Modell das bestimmte Bit auf Eins setzt, dann kann dieses Bit zur Feststellung, ob der Mikroprozessor zum er­ sten oder zum zweiten Modell gehört, geprüft werden. Um die Stepping-ID zu bestimmen, war oft eine kompliziertere Herange­ hensweise erforderlich. Z.B. könnte eine Programmschrittfolge ausgeführt werden, die das Vorhandensein des Softwarefehlers erkennt und dabei den Mikroprozessor als einen mit einem be­ stimmten Arbeitsablauf (Stepping) identifiziert. Eine Vielzahl an oft inkonsistenten Verfahren zur Softwarefehlerbestimmung wurde von den verschiedenen Softwarefirmen entwickelt. Diese Verfahren, die für ältere Mikroprozessorgenerationen entwickelt wurden, können falsche Ergebnisse liefern, wenn sie für jüngere Generationen verwendet werden.
Die Einführung neuer Familien und Modelle hat über die Jahre dazu geführt, daß die einen installierten Mikroprozessor identifizierende Software komplizierter und zeitaufwendiger wurde. Die INTEL x86-Mikroprozessorfamilie umfaßt die 8086-, die 80286-, die Intel386TM ("i386TM")-, und die Intel486TM (i486 TM) Mikroprozessorprozessoren. Innerhalb dieser Familien kann es zwei oder mehrere Modelle, wie beispielsweise den "SXTM" oder den "DXTM" geben. Jedes Modell kann drei, vier oder mehr Versionen haben, von denen jede eine andere Stepping-ID hat.
Um die Familie, das Modell und die Stepping-ID in den alten INTEL x86-Mikroprozessoren zu identifizieren, wird eine Be­ fehlsfolge nacheinander ausgeführt. Beispielsweise kann der Code zunächst feststellen, ob der Mikroprozessor ein 8086-Mi­ kroprozessor, ein 80286-Mikroprozessor oder ein höherer Mikro­ prozessor ist. Nach dem Ausschließungsprinzip würde er zunächst feststellen, daß es kein 8086-Mikroprozessor war und deshalb der Mikroprozessor zum Modell 80286 oder zu einem höheren gehö­ ren muß. Die Operationsfolge dauert an und verbraucht oft eine hohe Schrittanzahl und viel Zeit, bevor das genaue Modell und das Stepping des Mikroprozessors bekannt sind. Dieser kompli­ zierte Prozeß beansprucht viel Zeit eines Programmierers und erfordert eine sorgfältige Implementierung. Außerdem sind die Operationsfolgen im Hinblick auf die Identifizierung des Pro­ zessors nicht ganz zuverlässig. Besonders bei zukünftigen Mi­ kroprozessorgenerationen werden die Verfahren vielleicht nicht wie erwartet funktionieren. Beispielsweise werden Folgen, die sich in älteren Generationen auf zeitliche Abläufe von Befehlen verlassen, die bei zukünftig entwickelten Generationen erwarte­ ten Ergebnisse nicht liefern.
Bei den jüngsten Mikroprozessoren war das "ad hoc"-Verfah­ ren zur Unterscheidung zwischen Mikroprozessoren mangels wahr­ nehmbarer, zuverlässiger Unterschiede nicht erfolgreich. Bezo­ gen auf die INTEL-Mikroprozessoren wird es schwierig oder sogar unmöglich sein, die "ad hoc"-Verfahren zur Feststellung der Un­ terschiede zwischen einem i486TM-Mikroprozessor und zukünfti­ gen, z.Z. im Entwicklungsstadium befindlichen, Mikroprozessor­ familien zu verwenden.
Ein weiteres Problem bei der Identifizierung eines Mikro­ prozessors und bei der Entwicklung eines Mechanismus′ zur Iden­ tifizierung eines Mikroprozessors stellt das Kompatibilitätser­ fordernis dar. Computersoftwareverkäufer bevorzugen oft, nur eine Version ihrer Software zu verkaufen. Diese eine Version muß auf allen Mikroprozessorarten in einer bestimmten Mikropro­ zessorfamilie oder Gruppe von Familien laufen. Insbesondere ist es von großem Vorteil, wenn die für eine der obigen INTEL-Mi­ kroprozessorfamilien entwickelte Software auf allen Mikropro­ zessoren in der Gruppe, einschließlich noch nicht entwickelter Mikroprozessoren, laufen kann. In anderen Worten, später ent­ wickelte Software muß auf früher entwickelten Mikroprozessoren laufen und früher entwickelte Software muß auf später ent­ wickelten Mikroprozessoren laufen. Wenn die Software versucht, einen für diesen Mikroprozessor nicht definierten Befehl zu verarbeiten, wird im allgemeinen eine "unzulässige Opcode"-Aus­ nahme auftreten. Wenn diese Art der Ausnahme auftritt, weiß der Mikroprozessor im allgemeinen nicht, was zu tun ist, außer die gesamte weitere Verarbeitung anzuhalten.
Es wäre vorteilhaft, zur Identifizierung eines Mikroprozes­ sors und seiner Stepping-ID einen zuverlässigen Befehl oder eine Befehlsfolge zu haben, der oder die nicht auf "ad hoc"- Verfahren basiert. Solch ein Befehl oder eine Befehlsfolge kann zur eindeutigen Bestimmung der auf dem Mikroprozessor verfügba­ ren Merkmale verwendet werden. Außerdem wäre es vorteilhaft, wenn diese Befehlsfolge bei versuchsweiser Anwendung auf älte­ ren Mikroprozessorengenerationen ohne Implementierung dieses Befehls, folgenschwere Fehler (z. B. einen unzulässigen Opcode) vermeiden würde, die sonst ein Programm zu einem vorzeitigen Abbruch bringen würden.
Aufgabe der Erfindung ist es, eine Identifikationseinrich­ tung und ein Identifizierungsverfahren anzugeben, die die Iden­ tifizierung eines Mikroprozessors während des Betriebs ermögli­ chen. Die Identifikationseinrichtung kann auf Abruf Informatio­ nen, wie beispielsweise die Familie, das Modell und die Step­ ping-ID des Mikroprozessors zur Verfügung stellen. Die Merkmale direkt anzeigende Informationen können auch inbegriffen sein. Systemprogrammierer, Anwendungsprogrammierer, Benutzer u. a. können aus der Bereitstellung der Identifikationsinformationen profitieren. Durch die spezielle Identifizierung des Mikropro­ zessors liefert das Verfahren einen einfachen, zuverlässigen Weg zur Bestimmung der verfügbaren strukturellen Merkmale. Des­ halb können dem speziellen Mikroprozessor zugeordnete Merkmale aktiviert und Programme oder Codefolgen zur Umgehung der Soft­ warefehler installiert werden. Das Verfahren ist während des Betriebs des Mikroprozessors jederzeit verfügbar, beispiels­ weise während der Initialisierung der Systemsoftware, einer Programminstallation oder während ein Programm abläuft. Für Mi­ kroprozessoren, in denen es implementiert ist, wird, im Gegen­ satz zu bisher bekannten Verfahren, ein standardisiertes Ver­ fahren zur Identifikation des Mikroprozessors zur Verfügung ge­ stellt.
Das Identifikationssystem ist besonders nützlich, wenn es in Mikroprozessorfamilien implementiert ist, deren Entwicklung mit der Einführung neuer Modelle und Familien ständig fortschrei­ tet. Das Identifikationsverfahren kann softwaremäßig program­ miert werden und ist mit älteren Familien genauso kompatibel wie mit jüngeren Familien, die die Identifikationsschaltung im­ plementieren. In anderen Worten, die Identifikationssoftware kann angewendet werden, ohne bei älteren Prozessoren, die das Identifikationssystem und -verfahren nicht implementieren, eine Ausnahme auszulösen. Außerdem können neuere Versionen von eini­ gen der älteren Modelle nachträglich mit der Identifikations­ schaltung ausgestattet werden, um die Identifikationsinforma­ tionen zur Verfügung zu stellen. Das Identifikationssystem ist bei Mehrmodus-Mikroprozessoren nützlich und kann aus jedem Mo­ dus der Mikroprozessoroperation heraus benutzt werden. Das Sy­ stem ist erweiterungsfähig, und bei zukünftigen Modellen kann die Menge der ID-Informationen erhöht werden.
Die Identifikationseinrichtung enthält ein Register zum Speichern und Lesen von Daten, Mikroprozessor-ID-Daten spei­ chernde Nur-Lese-Speichermittel mit Datenfeldern zur Identifi­ zierung des Mikroprozessors, einen Decodierer zum Empfang eines ID-Befehls, eine Steuerschaltung zur Ausführung des von dem De­ codierer empfangenen ID-Befehls und Mittel zum Lesen der Mikro­ prozessor-ID-Daten aus den Nur-Lese-Speichermitteln und zum Speichern derselben im ersten Register. Die Identifikationsein­ richtung kann auch ein Lese/Schreib-Speicherelement, mit einem das Vorhandensein der Steuerschaltung anzeigendem ID-Flag und einem Testmittel zum Testen des ID-Flags aufweisen.
Das Nur-Lese-Speichermittel kann ein in dem Mikroprozessor angeordnetes Prozessor-ID-Register zum Halten der Mikroprozes­ sor-ID-Daten aufweisen. Alternativ können die Mikroprozessorda­ ten in einem Konstanten-ROM gespeichert werden, der die Daten hält, die von im Mikrobefehlscode-ROM gespeicherten Mikrobe­ fehlscode-Befehlen verwendet werden. Die Mikroprozessor-ID-In­ formation wird vorzugsweise in dem Prozessor ID-Register ge­ speichert. Das ist ein spezielles Register, das in nachfolgen­ den Modellen einfacher verändert werden kann als der Konstan­ ten-ROM. Die Nur-Lese-Speichermittel enthalten reservierte Bits mit zugeordneten Plätzen, die aber nicht zur Aufnahme von Daten implementiert sind. Die reservierten Bits sind zur Vermeidung von Kompatibilitätsproblemen vorgesehen, denen man begegnen würde, wenn die Größe des Prozessor-ID-Registers in zukünftigen Mikroprozessoren ausgedehnt würde. Die Datenfelder in den Nur- Lese-Speichermitteln können ein die Mikroprozessorfamilie an­ zeigendes Familienfeld, ein das Mikroprozessormodell anzeigen­ des Modellfeld und ein die Mikroprozessor-Errata oder die Step­ ping-ID anzeigendes Revisionsfeld umfassen.
In einer spezielleren Ausführungsform weist die Mikropro­ zessoridentifikationseinrichtung einen oder mehrere Universal­ register zum Speichern und Lesen von Daten auf, ein Mikropro­ zessor-ID-Speicherelement mit den Mikroprozessor identifizie­ renden Datenfeldern, einen Decodierer zum Befehlsempfang, ein Steuermittel zur Ausführung der vom Decodierer empfangenen Be­ fehle, einschließlich eines CPUID-Befehls, ein Lese/Schreib- Speicherelement einschließlich eines den CPUID-Befehl anzeigen­ den ID-Flags, ein Testprogramm mit einer Befehlsfolge, die das ID-Flag testet und ein Programm zur Lieferung des CPUID-Be­ fehls.
Ein computerimplementiertes Verfahren zur Identifizierung eines Mikroprozessors umfaßt die Unterscheidung zwischen einem Mikroprozessor aus einer ersten Gruppe und einem Mikroprozessor aus einer zweiten Gruppe. Mikroprozessoren in der ersten Gruppe implementieren einen Mikroprozessor-ID-Befehl nicht, aber die­ jenigen in der zweiten Gruppe haben einen Mikroprozessor-ID-Be­ fehl. Das Verfahren umfaßt die Ausführung einer Flag-Test-Be­ fehlsfolge, die ein ID-Flag prüft, um festzustellen, ob der Mi­ kroprozessor zur ersten oder zur zweiten Gruppe gehört. Das vermeidet die Erzeugung einer "unzulässigen Opcode"-Ausnahme, die beim Versuch, den ID-Befehl auf einem älteren Mikroprozes­ sor auszuführen, der den CPUID-Befehl nicht implementiert. Wenn die Ausführung der Flag-Test-Befehlsfolge anzeigt, daß der CPUID-Befehl nicht implementiert wurde, ist der Mikroprozessor als Mitglied der ersten Gruppe identifiziert, und es werden Programmschritte zur Vermeidung der CPUID-Befehlsausführung durchgeführt. Wenn jedoch die Ausführung der Flag-Test-Befehls­ folge anzeigt, daß der ID-Befehl implementiert wurde, dann ist der Mikroprozessor als Mitglied der zweiten Gruppe identifi­ ziert, und das Programm erlaubt die Ausführung des CPUID-Be­ fehls, der den Inhalt des Mikroprozessor-ID-Speicherelements einem Universalregister zur Verfügung stellt. Um Platz für zu­ künftige Erweiterungen der Prozessor-ID-Daten zu lassen, werden zusätzliche Universalregister gelöscht, um eine mögliche Be­ stimmung für zusätzliche ID-Daten vorzusehen.
Ein spezielleres computerimplementiertes Verfahren zur Identifizierung eines Mikroprozessors unterscheidet vor der ID- Flag Prüfung zunächst zwischen einem Basissatz von Familien und einem fortgeschrittenen Satz von Familien. Der Basissatz hat keine Bitstelle für das ID-Flag im Flag-Register. Deshalb kön­ nen alle Versuche zum Test des ID-Flags eine "unzulässige Op­ code"-Ausnahme erzeugen. Wenn der Mikroprozessor als ein Mit­ glied des Basisfamiliensatzes identifiziert ist, dann wird die Test-Flag-Befehlsfolge genauso wie die Ausführung des CPUID-Be­ fehls vermieden. Danach können andere Tests durchgeführt wer­ den, die zur genaueren Identifizierung des Basismikroprozessors geeignet sind. Der fortgeschrittene Familiensatz hat eine Bit­ stelle für das ID-Flag. Wenn der Mikroprozessor als ein Mit­ glied dieses Satzes identifiziert ist, kann die Test-Flag-Be­ fehlsfolge ausgeführt werden, um zu unterscheiden, ob der Mi­ kroprozessor ein Mitglied der ersten oder der zweiten Gruppe ist, und der CPUID-Befehl wird entsprechend ausgeführt.
Die in der Beschreibung behandelten Merkmale und Vorteile sind nicht vollständig und insbesondere werden viele zusätzli­ che Merkmale und Vorteile dem Fachmann anhand der Zeichnungen, der Beschreibung und der Ansprüche deutlich werden.
Im folgenden wird die Erfindung anhand von in der Zeichnung dargestellten Ausführungsbeispielen erläutert. In der Zeichnung zeigt:
Fig. 1 ein Blockschaltbild der Architektur eines Mikropro­ zessors einschließlich eines Mikroprozessor-ID-Regi­ sters zur Speicherung von Identifikationsinformatio­ nen;
Fig. 2 ein Ablaufdiagramm der Verfahrensschritte zur Be­ stimmung des Mikroprozessor-ID;
Fig. 3 ein Ablaufdiagramm, das in mehreren unterschiedli­ chen Zusammenhängen die Identifikation des Mikropro­ zessors und die Aktivierung der Merkmale zeigt;
Fig. 4 ein Ablaufdiagramm von Verfahrensschritten, die in einem Mikroprozessor nach Eingang von Identifikati­ onsinformationen auftreten können.
Es wird auf Fig. 1 Bezug genommen, in der ein Blockschalt­ bild eines Mikroprozessors 10 und damit verbundene Software 12, gezeigt sind. Der Mikroprozessor 10 enthält eine Vielzahl von Registern einschließlich eines Lese/Schreib-Speicherelements 14 (Flag-Register). Das Flag-Register 14 enthält ein AC-Flag 16 und ein ID-Flag 18. Das AC-Flag 16 und das ID-Flag 18 sind vor­ zugsweise Einzelbits in dem Flag-Register 14. Während der Ini­ tialisierung wird das Flag-Register 14 typischerweise mit einem für die Software und die Hardware speziellen Wert geladen. Der Mikroprozessor 10 enthält auch ein erstes Universalregister 20 und ein zweites Universalregister 22. Die Register 20, 22 kön­ nen in Mikroprozessoren gewöhnlich verwendete Standard- Lese/Schreib-Register enthalten. Im allgemeinen sind das Flag- Register 14 und die Universalregister 20, 22 für einen Program­ mierer in Assembler-Sprache "sichtbar". Mit anderen Worten, ein Programmierer kann in diese Register von jedem anderen Register oder Speicher schreiben, oder er kann aus diesem Register in jedes andere Register oder Speicher lesen. Diese Register kön­ nen manipuliert werden, so daß ausgewählte Bits gelesen oder geschrieben werden können. Die Daten in solchen Registern kön­ nen als "maskierbar" bezeichnet werden. Der Mikroprozessor 10 kann außerdem eine Vielzahl von zusätzlichen Registern 24 ent­ halten, die für Betriebszwecke des Prozessors verwendet werden können.
Der Mikroprozessor 10 enthält auch ein Prozessor-ID-Spei­ cherelement, beispielsweise ein Prozessor-ID-Register 13, in welchem die Prozessor-ID-Information 31 codiert ist. Dieses ID-Speicherelement ist für einen Programmierer nicht sichtbar; d. h., das ID-Speicherelement kann nicht direkt manipuliert wer­ den. Beispielsweise kann das ID-Speicherelement nicht direkt in ein anderes ausgewähltes Register, außer in die Universalregi­ ster 20, 22 eingelesen werden. Während der Herstellung eines erfindungsgemäßen Mikroprozessors wird das Prozessor-ID-Regi­ ster 30 auf dem Mikroprozessor 10 als Nur-Lese-Register ausge­ bildet. In anderen Ausführungsformen kann die Prozessor-ID-In­ formation 31 in einem Konstanten-ROM 33 (d. h. Nur-Lese-Speicher für vom Mikrobefehlscode verwendete Daten) gespeichert werden. Vorzugsweise ist sie in dem separaten Register 30 vorgesehen, das aus Herstellungsgründen bei späteren Modellen einfacher verändert werden kann als der Konstanten-ROM 33, der eine dichte Struktur hat und schwierig zu verändern ist. In noch ei­ nem anderen Ausführungsbeispiel kann das Prozessor-ID-Register 30 in mehreren Registern implementiert sein, so daß sich ID-In­ formationen in verschiedenen Registern mit der gleichen Aufgabe befinden.
Die in einem ID-Register 30 implementierte Prozessor-ID-In­ formation 31 enthält ein Familienfeld 32, das die identifizier­ te Mikroprozessorfamilie anzeigt. Unterschiedliche Familien un­ terscheiden sich gewöhnlich durch grundsätzliche Architekturun­ terschiede, die zusätzliche Merkmale für Anwendungsprogrammie­ rer und Systemprogrammierer bieten. Das Prozessor-ID-Register 30 kann auch ein Modellfeld 34 enthalten, das das Mikroprozes­ sormodell innerhalb der Familie anzeigende Daten enthält. Bei­ spielsweise kennzeichnen in den INTEL-Mikroprozessoren die Buchstaben "SXTM", und "DXTM" verschiedene Modelle in der glei­ chen Mikroprozessorfamilie. Während unterschiedliche Familien unterschiedliche Merkmale aufweisen, die sowohl Anwendungspro­ grammierern als auch Systemprogrammierern auffallen, betreffen die Unterschiede zwischen den Modellen eines Mikroprozessors nur einen Systemprogrammierer.
Das Prozessor-ID-Register 30 enthält auch ein Revisionsfeld 36, das die Mikroprozessor-Stepping-ID anzeigende Daten ent­ hält. Wenn ein Mikroprozessor hergestellt wird, wird er mit ei­ ner bestimmten Stepping-ID identifiziert, die die Version des Mikroprozessors angibt. Unterschiedliche Versionen sind auf­ grund von Errata oder "Softwarefehlern" erforderlich, die oft unerwartet auftreten und die Mikroprozessoroperation nachteilig beeinflussen. Solche Errata können das ungünstige Ergebnis ei­ nes Entwicklungsprozesses sein, der oft nicht alle Möglichkei­ ten vorwegnehmen kann, oder es kann einfach ein Herstellungs­ fehler sein, der die Mikroprozessoroperationen beeinträchtigt. Diese Softwarefehler (bugs) können in späteren Modellen besei­ tigt sein; jedoch können frühere Modelle noch in Benutzung sein. Deshalb wird eine Stepping-ID implementiert, um zwischen den unterschiedlichen Versionen des Mikroprozessors zu unter­ scheiden. Im allgemeinen ist der Fehler nur für Systemprogram­ mierer erkennbar; jedoch wird in manchen Fällen eine komplexe Befehlsfolge, die von einem Anwendungsprogrammierer eingegeben wird, auch ein Problem schaffen. Sobald ein Softwarefehler identifiziert worden ist, werden Softwarefixierungen zur "Umgehung" des Entwurffehlers entwickelt. Diese Programme wer­ den oft als "Umgehung" oder "Umgehungsprogramme" bezeichnet. Solche Programme sind üblich und nützlich, aber erfordern kom­ plexe Befehlsfolgen, insbesondere für die hergestellten frühe­ sten Versionen eines Mikroprozessors.
Das Prozessor-ID-Register 30 kann in anderen Ausführungen zusätzliche Felder umfassen, wie beispielsweise ein die Serien­ nummer eines bestimmten Mikroprozessors angebendes Feld oder andere zur Identifikation nützliche Informationen, wie bei­ spielsweise ein Merkmalfeld 37, das das Vorhandensein besonde­ rer Merkmale spezifiziert. Zur Anpassung zusätzlicher Felder, die in Zukunft implementiert werden können, sind reservierte Bits 38 in dem Prozessor-ID-Register 30 enthalten. Den reser­ vierten Bits 38 ist keine Bedeutung oder kein Kennzeichen zuge­ wiesen, solange sie nicht implementiert sind. Wenn Bits als re­ serviert oder undefiniert markiert sind, ist es für die Kompa­ tibilität mit zukünftigen Prozessoren wichtig, daß die Software diese Bits als Bits mit einer zukünftigen, bis dahin unbekann­ ten Wirkung behandelt. Die Software sollte nicht von den reser­ vierten Bits abhängen.
Mikroprozessor 10 enthält außerdem eine Steuereinheit 40. Die Steuereinheit 40 enthält eine konventionelle Decodierschal­ tung 41 zum Empfang und zur Entschlüsselung von Informationen. Sie enthält außerdem eine Steuerlogik 42 zur Ausführung von vom Decodierer 41 angelegten Befehlen. Die Steuerlogik verwendet einen Mikrobefehlscode 43, um Befehle nach Bedarf auszuführen. In dem bevorzugten Ausführungsbeispiel umfaßt der Mikrobefehls­ code 43 auch den CPUID-Befehl-Mikrobefehlscode zur Ausführung eines CPUID-Befehls, wie unten ausführlicher beschrieben wird. In anderen Ausführungen kann die Schaltung zur Ausführung des CPUID-Befehls ganz in der Steuerlogik 42 angeordnet sein.
Die in der Steuereinheit 40 ausgeführte Software, allgemein durch die Programme 12 dargestellt, enthält ein Hauptprogramm 50 mit einer beliebigen Zahl von Programmen. Beispielsweise kann das Hauptprogramm 50 ein Programm zur Initialisierung des Betriebssystems, BIOS-Initialisierungssoftware oder Anwendungs­ programme enthalten. Das Hauptprogramm 50 gibt Befehle an die Steuereinheit 40 oder kann alternativ andere Programme auswäh­ len, um Befehle an die Steuereinheit 40 zu geben. Diese Pro­ gramme enthalten eine Prüf-Flag-Befehlsfolge 52 zum Prüfen des ID-Flags 18 und einen CPUID-Befehl 54, der beispielsweise ein Einfachbefehl sein kann. Die Programme 12 enthalten auch ein­ leitende Testbefehle 56 zum Testen, ob der Mikroprozessor ein Basismikroprozessor oder ein fortgeschrittener Mikroprozessor ist. Nicht gezeigte zusätzliche Programme können ebenfalls ver­ fügbar sein.
Auf das Mikroprozessor-ID-Speicherelement wird mit einem Mikroprozessor-CPUID-Befehl 54 zugegriffen. Der CPUID-Befehl 54 ist in einer entsprechenden Schaltung in der Steuereinheit 40 implementiert, die den Opcode des CPUID-Befehls 54 in dem Deco­ dierer erkennt und in der Steuerlogik 42 die geeigneten Schritte ausführt, um die Identifikationsinformation 31 in dem ID-Speicherelement an ein für einen Programmierer sichtbares Universalregister 20, 22 anzulegen. Die Identifikationsinforma­ tion 31 ist sodann dem Programmierer verfügbar und kann vom Programmierer für jeden gewünschten Zweck manipuliert werden. Beispielsweise kann er Daten von jedem Feld lesen, um die zu dem identifizierten Mikroprozessor gehörenden Merkmale zu er­ mitteln.
In einer Ausführungsform, in der die ID-Information in dem Prozessor-ID-Register 30 gespeichert ist und der Mikrobefehls­ code 43 den CPUID-Befehl-Mikrobefehlscode 44 enthält, ist eine Mikrobefehlscodefolge enthalten, um den Inhalt des Prozessor- ID-Registers 30 zu lesen und ihn in einem Universalregister, wie z. B. das erste Universalregister 20 oder das zweite Univer­ salregister 22, zu speichern. Abhängig von der Informations­ menge in dem Prozessor-ID-Register 30 kann der Inhalt in mehr als einem Universalregister gespeichert werden. Der Mikrobe­ fehlscode 44 dient zur Spezifizierung der Register für den CPUID-Befehl 54.
Um zu lesen oder der Steuereinheit 40 Richtungen zu geben, kann eine Anwendungsprogrammierer-Schnittstelle 58 mit dem Mi­ kroprozessor 10 gekoppelt werden. Die Schnittstelle 58 kann beispielsweise zum Auslesen von in einem der Register 20, 22, 24 gespeicherten Informationen an ein Bildschirmgerät verwendet werden. Ferner kann die Benutzer- oder Programmierer-Schnitt­ stelle 58 eine Tastatur zum manuellen Zugriff auf den Inhalt der Register 20, 22 und 24 umfassen.
Im folgenden wird auf Fig. 2 Bezug genommen, die ein compu­ terimplementiertes Verfahren des bevorzugten Ausführungsbei­ spiels zeigt. Um die Umgebung des Verfahrens zu beschreiben, setzt ein Block 60 das Ziel, nämlich die Identifizierung eines in einem Computer installierten Mikroprozessors. Der Mikropro­ zessor kann ein Mitglied eines Basisfamiliensatzes oder eines fortschrittlichen Familiensatzes sein. Alle Familien sind un­ tereinander kompatibel, jedoch sind in den fortschrittlichen Familien oft mehr Merkmale und mehr Befehle verfügbar als in dem Basisfamiliensatz. Der einfache Familiensatz hat in dem Flag-Register 14 keine Bitstelle für das ID-Flag 18, und des­ halb wird jeder Versuch, das ID-Flag 18 zu testen, eine "unzulässiger Opcode"-Ausnahme erzeugen. Der fortschrittliche Familiensatz hat eine Bitstelle für das ID-Flag 18. In dem fortschrittlichen Familiensatz gibt es zwei Gruppen: Eine erste Gruppe, die keinen Prozessor-ID-Befehl hat, und eine zweite Gruppe, die einen Prozessor-ID-Befehl implementiert. Der CPUID-Befehl 54 ist nur in der zweiten Gruppe der fortschrittlichen Familien verfügbar: Er ist weder in den einfachen Familien noch in der ersten Gruppe der fortschrittlichen Familien verfügbar. Wenn der Ablauf des CPUID-Befehls 54 in den Basisfamilien oder in der ersten Gruppe der fortschrittlichen Familien versucht wird, dann würde ein Versuch zur Ausführung eines CPUID-Befehls 54 ungünstigerweise eine "unzulässiger Opcode"-Ausnahme erzeu­ gen und wahrscheinlich die Steuerung an ein Ausnahmehandha­ bungsprogramm übertragen, das aller Wahrscheinlichkeit nach das Programm beenden würde. Um die mögliche Erzeugung einer "unzulässiger Opcode"-Ausnahme zu vermeiden, sind die folgenden Schritte vorgesehen.
Im Ausführungsblock 62 wird die Testbefehlsfolge 56 ausge­ führt zur Bestimmung, ob der Prozessor zum Basisfamiliensatz oder zum fortschrittlichen Familiensatz gehört. Wie im Ent­ scheidungsblock 64 gezeigt ist, geht die Operation im Block 66 weiter, wenn der Prozessor zum Basisfamiliensatz gehört. In diesem Block werden nach Bedarf andere konventionelle Tests durchgeführt, um den Basisprozessor weiter zu identifizieren. Wenn vor Beginn der Operation in Block 60 festgestellt wurde, daß der Prozessor bereits ein Mitglied des fortschrittlichen Familiensatzes ist, kann die Operation natürlich direkt zu Block 68 springen, der prüft, ob der Prozessor den CPUID-Befehl 54 implementiert hat.
Wenn der Prozessor zu einem fortschrittlichen Familiensatz gehört, wird von Block 64 die andere Richtung eingeschlagen und ein weiterer Test, wie in Block 68 gezeigt, durchgeführt. Die­ ser bestimmt, ob ein Prozessor einen Prozessor-ID-Befehl hat, indem die Test-ID-Flag-Befehlsfolge 52 ausgeführt wird. Wenn - wie im Entscheidungsblock 70 gezeigt wird - festgestellt wurde, daß das ID-Flag 18 nicht gesetzt ist, dann wird - wie in Block 72 gezeigt - festgestellt, daß der Prozessor 10 zum fort­ schrittlichen Familiensatz gehört, jedoch der CPUID-Befehl 54 nicht verfügbar ist, da er nicht implementiert wurde. Deshalb muß der folgende CPUID-Befehl 54 nicht ausgeführt werden. Wenn jedoch im Entscheidungsblock 70 festgestellt wird, daß das ID-Flag 18 gesetzt wurde, dann ist der CPUID-Befehl 54 in dem Pro­ zessor 10 implementiert. Deshalb wird der CPUID-Befehl 54 - wie in Block 74 gezeigt - zum Auslesen der Prozessor-ID-Information 31 in ein Universalregister , wie z. B. die Register 20, 22 oder 24, ausgeführt. Auf diese Weise wurden die Familien-, Modell- und Stepping-ID′s des installierten Mikroprozessors identifi­ ziert. Das Merkmalfeld 37 kann auch in ein anderes Register 20, 22, 24 ausgelesen werden, um die in dem Mikroprozessor verfüg­ baren Merkmale weiter zu identifizieren. Für zukünftige Erwei­ terungen kann der Inhalt des zweiten Universalregisters 22 ge­ löscht werden, um zusätzliche Identifikationsdaten unterzubrin­ gen, die in den reservierten Bits 38 (Fig. 1) oder an jedem an­ deren Platz der in zukünftigen Modellen implementiert werden kann, gespeichert werden.
In dem bevorzugten Ausführungsbeispiel wird der Inhalt der zwei zusätzlichen Register, die in den anderen Registern 24 (Fig. 1) enthalten sein können, gelöscht, um eine Möglichkeit für zukünftige Implementierungen vorzusehen. Im folgenden wer­ den, wie in Block 76 gezeigt, zu dem Mikroprozessor gehörige Merkmale aktiviert. Nicht funktionierende Merkmale werden entaktiviert, und zugehörige Umgehungen werden aktiviert. Die­ ses wird ausführlicher unter Bezugnahme auf Fig. 3 und 4 erläu­ tert. Die Operation geht dann weiter.
Es wird wieder auf Fig. 2 Bezug genommen. Die folgende Be­ schreibung beschreibt anhand der Intel-Familien einen bei spiel­ haften Basisfamiliensatz, und die erste und zweite Gruppe des fortschrittlichen Familiensatzes.
In einem Basisfamiliensatz, wie die Intel-Mikroprozessoren mit den Nummern 80286 und darunter, existiert das ID-Bit 18 physikalisch nicht, da das EFLAG-Register, in dem es sich be­ findet, kleiner als 16-Bit ist. Deshalb würde ein Versuch zur Ausführung der ID-Teste-Bit-Befehlsfolge 52 in diesen Basisfa­ milien wahrscheinlich einen unzulässigen Opcode erzeugen. Je­ doch wurden in den fortschrittlichen Familien, wie beispiels­ weise die i386-Mikroprozessorfamilie und die i486-Mikroprozes­ sorfamilien, die EFLAG-Register auf 32-Bit vergrößert. Ein Teil dieser Bits wurde für die Verwendung in späteren Modellen oder Familien reserviert, und deshalb können die Bits nicht gesetzt werden. Die reservierten Bits können zwar gelesen oder ge­ schrieben werden ohne eine Ausnahme zu erzeugen, aber sie wer­ den immer den gleichen Wert ausgeben. Ein Versuch, ein reser­ viertes Bit zu setzen, hat einfach keine Wirkung. Weil die re­ servierten Bits physikalisch vorliegen, wird ein Versuch zur Ausführung eines ID-Teste-Bit-Befehlsfolge in diesen fort­ schrittlichen Familien keine Ausnahme erzeugen.
In dem bevorzugten Ausführungsbeispiel der Intel-Architek­ tur ist das ID-Bit 18 in dem EFLAG-Register in einem Bit imple­ mentiert, das ursprünglich in der i386-Mikroprozessorfamilie und in der i486-Mikroprozessorfamilie reserviert war. Aus die­ sem Grund wird die ID-Test-Bit-Befehlsfolge 52 bei Ausführung in diesen Familien keine Ausnahme erzeugen. Außerdem wird die Ausführung der ID-Test-Bit-Befehlsfolge 52 anzeigen, ob der CPUID-Befehl 54 verfügbar ist oder nicht. Mikroprozessorfami­ lien, wie die i386-Familie und die i486-Familie, in denen das ID-Bit nicht implementiert ist, sind ein Beispiel für die "erste Gruppe der fortschrittlichen Familien". Die Mikroprozes­ soren, in denen das ID-Bit 18 implementiert ist, und die den CPUID-Befehl 54 implementieren, sind ein Beispiel für die "zweite Gruppe der fortschrittlichen Familien". Spätere Versio­ nen der i386- und i486-Prozessoren, die nachfolgend hergestellt wurden, können das ID-Bit 18 in Verbindung mit dem CPUID-Befehl und einem Prozessor-ID-Register beinhalten. Diese später herge­ stellten Mikroprozessoren wären Mitglieder der zweiten Gruppe.
Nun wird auf Fig. 3 Bezug genommen, die einen Ablauf zur Darstellung der unterschiedlichen Verwendungen des hierin be­ schriebenen Prozessoridentifikationsverfahrens zeigt. Links in der Fig. 3 in einem Block 80, beim Betriebsstart von Operatio­ nen, ist die Identifikation des Mikroprozessors 10 oft hilfreich. Beispielsweise können Betriebsstartoperationen einen BIOS-Code verwenden, der nach dem Einschalten der Stromversor­ gung eines Mikroprozessors 10 abläuft. Danach wird, wie in Block 82 gezeigt, der Mikroprozessor 10 identifiziert. Dann, in Block 84, werden die Merkmale des Mikroprozessors festgestellt. Später werden, wie in Block 86 gezeigt, für diesen Mikroprozes­ sor geeignete Merkmale aktiviert, Umgehungsprogramme implemen­ tiert und nicht funktionierende Merkmale nach Bedarf entakti­ viert. Ein beispielhaftes Mikroprozessormerkmal, dessen Akti­ vierung prozessorabhängig ist, und ein Umgehungsprogramm werden weiter unten in der Beschreibung zu Fig. 4 erläutert.
Zusätzlich zu der Identifizierung eines Mikroprozessors 10 nach dem Betriebsstart, kann es auch nützlich sein, den Mikro­ prozessor zu identifizieren, wenn Bauelementtreiber für externe Hardware initialisiert werden. Beispielsweise kann ein Drucker­ treiber wissen oder identifizieren wollen, welcher Mikroprozes­ sor ihn betreibt. In diesem Fall, würde die Operationsfolge 82, 84, 86 zur Identifikation des Mikroprozessors 10 ablaufen und die zugehörigen Merkmale aktivieren. Die Bauelementtreiber­ initialisierung ist in einem Block 90 dargestellt. Ferner kann es beim Betriebssystem-Betriebsstart, wie in Block 92 gezeigt, nützlich sein, den Mikroprozessor zu identifizieren und die Merkmale, wie in den Blöcken 82, 84 und 86 dargestellt, zu ak­ tivieren. In ähnlicher Weise kann, wie in Block 94 gezeigt, es bei dem Betriebsstart von Anwendungsprogrammen nützlich sein, den Mikroprozessor 10 zu identifizieren und die Merkmale, wie in den Blöcken 82, 84 und 86 gezeigt, zu aktivieren.
Die Beispiele, einschließlich der Blöcke 80, 90, 92 und 94, bei denen die Identifikation des Mikroprozessors 10 nützlich ist, sollen nur die Anwendungsmöglichkeiten des beschriebenen Identifikationsverfahrens veranschaulichen. Das Verfahren kann zu jeder beliebigen Zeit während der Operation des Mikroprozes­ sors verwendet werden. Beispielsweise kann die Identifikation des Prozessors während der Programmoperation nützlich sein, um zu ermitteln, ob ein bestimmter Befehl oder eine bestimmte Be­ fehlsfolge verwendet werden kann oder nicht, oder ob andere Be­ fehle ausgeführt werden sollen. In diesem Fall können die Schritte 82, 84 und 86 zur Identifikation des Mikroprozessors 10 und zur Aktivierung der zugehörigen Merkmale durchgeführt werden.
Es wird nun auf Fig. 4 Bezug genommen, in der ein Ablauf zur Aktivierung von Merkmalen in dem bevorzugten Ausführungs­ beispiel dargestellt ist, das einen Hochleistungsmikroprozessor enthält. In Block 100 wird vorausgesetzt, daß der CPUID-Befehl 54 ausgeführt wurde und die ID-Information 31 in einem oder mehreren Universalregistern verfügbar ist. In Block 100 wird die Ausführung eines Programms zur Aktivierung der Merkmale ge­ startet. In Schritt 102, werden das Familienfeld 32 und das Mo­ dellfeld 34 eingelesen, um eine Anzeige über die architektoni­ schen Möglichkeiten des Mikroprozessors zu liefern. Im nächsten Schritt 104 werden die zu der angezeigten Familie und dem Mo­ dell gehörigen Befehle aktiviert. In einem Schritt 106, wird das Stepping-ID-Feld (das Revisionsfeld 36) eingelesen, um In­ formationen bezüglich der auf der identifizierten Mikroprozes­ serversion aufgetretenen Errata zu geben. In einem nächsten Schritt 108 werden zur Kompensation der identifizierten Errata Merkmale aktiviert, entaktiviert oder verändert. Dieser Schritt 108 kann die Installation von geeigneten Umgehungsprogrammen umfassen. Auf diese Weise können die Möglichkeiten des Hochlei­ stungsmikroprozessors optimal genutzt werden.
In den Schritten 102 und 104 wird der Mikroprozessor iden­ tifiziert, und seine zugehörigen Befehle werden aktiviert. Bei­ spielsweise implementiert ein verbesserter Intel-Mikroprozessor einen Befehl mit der Syntax "RDMSR", zum Lesen aus einem mo­ dellspezifischen Register. Im Betrieb nimmt der RDMSR-Befehl den Wert eines modellspezifischen Registers, das in einem er­ sten Universalregister spezifiziert ist (das "ecx"-Register) und legt die Bits hoher Ordnung in einem zweiten Universalregi­ ster (das "edx"-Register) und die Bits niedriger Ordnung in ei­ nem dritten Universalregister (das "eax"-Register) ab. Ein "WRMSR"-Befehl führt unter Verwendung des gleichen Registers ein Schreiben vom modellspezifischen Register aus. Beispiele modellspezifischer Register sind Testregister wie beispiels­ weise Cache-Testregister. In einem früheren Intel-Mikroprozes­ sor, dem i486-Mikroprozessor, wurden diese Testregister über einen separaten, zugeordneten "TR"-Befehl zugegriffen. Wenn ein Programmierer auf diese Testregister zugreifen muß, muß er des­ halb zunächst den Mikroprozessor identifizieren, und dann weiß er, ob der RDMSR-Befehl ihm die benötigte Information geben wird. Ist der Mikroprozessor als verbesserter Mikroprozessor identifiziert, dann werden die RDMSR- und die WRMSR-Befehle ge­ wählt. Wenn der Mikroprozessor jedoch als ein i486-Mikroprozes­ sor identifiziert wird, dann werden die entsprechenden TR-Be­ fehle gewählt.
In den Schritten 106 und 108 wird die Stepping-ID zur Ver­ fügung gestellt und ein Programm zur Fehlerumgehung im Mikro­ prozessor ausgelöst. Ein Beispiel eines Umgehungsprogramms folgt im Zusammenhang mit einem Problem, das bei dem i386DX-Mi­ kroprozessor auftrat. In einem bestimmten Mikroprozessor kann es viele solcher Fehler geben.
Unter bestimmten Bedingungen, wenn der POPA- oder POPAD-Be­ fehl verwendet wird, arbeitet der i386DX-Mikroprozessor nicht richtig. Der i386DX-Mikroprozessor korrumpiert nachteiliger­ weise das EAX-Register, wenn entweder dem POPA- oder dem POPAD- Befehl unmittelbar ein Befehl folgt, der ein Basisadressenregi­ ster UND ein zusätzliches Register außer dem EAX oder AX als Indexregister zur Bildung seiner effektiven Adresse benutzt.
Der folgende Abtastcode ist ein Beispiel für das Problem:
MOV EDX,4
POPAD
MOV EBX, dword ptr [EDX + EBX*4].
Der i386DX-Mikroprozessor blockiert den Ablauf, wenn auf einen POPA(16-Bit-Version)-Befehl unmittelbar ein Befehl folgt, der das EAX(32-Bit-Register) als ein Basis- oder Index-Register zur Bildung seiner effektiven Adresse verwendet. Der folgende Abtastcode ist ein Beispiel für das Problem:
MOV EAX,4
POPA
MOV EBX, dword ptr [EAX].
Das EAX-Register wird abhängig von den obigen Bedingungen einen undefinierten Wert enthalten, oder der Prozessor wird die Ausführung abbrechen. Ein geeigneter Betrieb des Prozessors kann nach der Ausführung dieser Folge bis zu einer Hardware- Rücksetzung nicht garantiert werden. Diese Befehlsfolge kann in den 86 realen, geschützten und virtuellen Betriebsweisen des i386DX-Mikroprozessor auftreten.
Deshalb ist es wichtig, die obige Befehlsfolge nie auszu­ führen. Eine nachweislich in allen Fällen erfolgreiche Umge­ hungs-Codefolge besteht darin, einen NOP-Befehl nach jedem POPA(D)-Befehl einzufügen. Beispiele sind unten gezeigt:
BEISPIEL 1
MOV EDX, 4
POPAD
NOP
MOV EBX, dword ptr [EDX + EBX*
4].
BEISPIEL 2
MOV EAX, 4
POPA
NOP
MOV EBX, dword ptr [EAX].
Es wird ein Identifikationsverfahren und eine Einrichtung zur Verfügung gestellt, die keine "unzulässiger Opcode"-Aus­ nahme erzeugen. Das Verfahren ist sowohl mit Basismikroprozes­ soren als auch mit fortschrittlichen Mikroprozessoren kompati­ bel. Wenn festgestellt wurde, daß ein Mikroprozessor fort­ schrittlich ist, bestimmt das Verfahren, ob es sich um Mitglie­ der der ersten Gruppe, die den ID-Befehl nicht implementieren oder um Mitglieder der zweiten Gruppe handelt, die den ID-Be­ fehl implementieren. Die Einrichtung kann in allen fortschritt­ lichen Mikroprozessoren implementiert werden, um einem Program­ mierer oder jedem, den die Information interessiert, eine leichte Identifikation zu ermöglichen. Selbst wenn der Mikro­ prozessor ursprünglich als ein Mitglied der ersten Gruppe der fortschrittlichen Familie hergestellt wurde und deshalb den Mi­ kroprozessor-ID-Befehl nicht implementiert hat, können spätere Produktionen dieses Mikroprozessors die Identifikationseinrich­ tung integrieren. Wenn der Mikroprozessor identifiziert wurde, kann ein Programm die Mikroprozessormerkmale besser nutzen. Insbesondere können zusätzliche Merkmale entsprechend den größeren Möglichkeiten des Mikroprozessors aktiviert werden. Auf diese Weise können die Möglichkeiten des Mikroprozessors optimal und schnell genutzt werden.
Anhang 1 zeigt ein beispielhaftes Programm zur Unterschei­ dung zwischen einem i386-Mikroprozessor, einem i486-Mikropro­ zessor und einem verbesserten Mikroprozessor, von denen alle gemäß den vorangegangenen Definitionen "fortschrittlich" sind. Die i386- und i486-Mikroprozessoren fallen in die erste Gruppe, weil sie ein 32-Bit-EFLAG-Register haben, aber keinen CPUID-Be­ fehl 54 implementieren, und der verbesserte Mikroprozessor fällt in die zweite Gruppe, weil er den CPUID-Befehl 54 imple­ mentiert. Wenn der Prozessor als verbesserter Mikroprozessor identifiziert wird, dann wird die Identifikationsinformation zur Identifikation der Variablen, einschließlich der Stepping- ID des Modells und der Familie übertragen.
Anhang 2 zeigt ein beispielhaftes Programm zur Unterschei­ dung zwischen einem Basisprozessor und einem fortschrittlichen Prozessor. Programmäßig ausgedrückt, umfaßt ein Basisprozessor die 80286- und die 8086-Mikroprozessorfamilien und ein fort­ schrittlicher Prozessor die i386-Mikroprozessorfamilie. Wenn das Programm feststellt, daß der Prozessor ein 80286 oder ein 8086-Mikroprozessor ist, dann ist der Prozessor ein Basispro­ zessor. Wenn das Programm aber feststellt, daß der Prozessor ein i386-Mikroprozessor ist, dann ist der Prozessor "fortschrittlich" und kann tatsächlich ein i486-Mikroprozessor oder Mitglied einer zukünftigen Familie sein. Anhang 2 ist ein Beispiel eines "ad hoc"-Programms, das zur Bestimmung der Pro­ zessorart verwendet wurde.
Anhang 1
CPU-Befehl verwendendes Programmbeispiel
Anhang 2
Programmbeispiel zur Unterscheidung zwischen Basisprozessor und fortschrittlichem Prozessor
Unterschiede zwischen fortschrittlichem Prozeß (i386 und darüber) und 80 286 und 8086

Claims (26)

1. Mikroprozessor (10) in integrierter Schaltungstechnik mit einer Identifikationseinrichtung zur Identifizierung des Mikroprozessors in Abhängigkeit von einem angelegten ID-Befehl, gekennzeichnet durch
ein erstes Register (20) zum Speichern und Lesen von Daten;
ein Mikroprozessor-ID-Daten (31) speicherndes Nur-Lese- Speichermittel (30) mit Datenfeldern (32, 34, 36), die den Mi­ kroprozessor identifizieren;
einen Decodierer (41) zum Empfang eines ID-Befehls; und
eine den vom Decodierer empfangenen ID-Befehl ausführende Steuerschaltung (42), die Mittel zum Lesen der Mikroprozessor- ID-Daten aus dem Nur-Lese-Speichermittel und zum Speichern der­ selben in dem ersten Register enthält.
2. Mikroprozessor nach Anspruch 1, dadurch gekennzeichnet, daß die Nur-Lese-Speichermittel ein in dem Mikroprozessor aus­ gebildetes ID-Register (30) enthalten.
3. Mikroprozessor nach Anspruch 1 oder 2, dadurch gekenn­ zeichnet, daß ein Steuer-ROM und ein Mikrobefehlscode-Speicher vorgesehen sind, wobei die Mikroprozessor-ID-Daten in dem Steuer-ROM gespeichert sind.
4. Mikroprozessor nach einem der Ansprüche 1 bis 3, dadurch gekennzeichnet, daß er außerdem aufweist:
ein Lese/Schreib-Speicherelement (14) mit einem das Vorhan­ densein der Steuerschaltung zur Ausführung eines ID-Befehls an­ zeigenden ID-Flag (18); und
ein Testmittel zum Prüfen des ID-Flags.
5. Mikroprozessor nach Anspruch 4, dadurch gekennzeichnet, daß das Lese/Schreib-Speicherelement (14) ein Steuerregister aufweist, und daß das ID-Flag (18) eines der Bits des Steuerre­ gisters enthält.
6. Mikroprozessor nach einem der Ansprüche 1 bis 5, dadurch gekennzeichnet, daß die Datenfelder in dem Nur-Lese-Speicher­ mittel (30) enthalten:
ein Familienfeld (32) zur Speicherung von die Familie des Mikroprozessors anzeigenden Daten;
ein Modellfeld (34) zur Speicherung von das Modell des Mi­ kroprozessors anzeigenden Daten; und
ein Revisionsfeld (36) zur Speicherung von die Stepping-ID des Mikroprozessors anzeigenden Daten.
7. Mikroprozessor nach einem der Ansprüche 1 bis 6, dadurch ge­ kennzeichnet, daß das Nur-Lese-Speichermittel nicht-implemen­ tierte, reservierte Bits (36) enthält, die eine bestimmte Posi­ tion in dem Nur-Lese-Speichermittel haben.
8. Mikroprozessor nach einem der Ansprüche 1 bis 7, dadurch gekennzeichnet, daß außerdem ein zweites Universalregister (22) vorgesehen ist, und daß das CPUID-Ausführungsmittel (44) Mittel zum Löschen des zweiten Universalregisters enthält.
9. Computermikroprozessor mit einer Identifikationseinrich­ tung zur Identifizierung des Computer-Mikroprozessors (10) in Abhängigkeit von einem CPUID-Befehl, gekennzeichnet durch
ein Universalregister (20) zum Speichern und Lesen von Da­ ten;
ein Mikroprozessor-ID-Speicherelement (30) zum Speichern von Mikroprozessor-ID-Daten (31) mit Datenfeldern (32, 34, 36), die den Mikroprozessor identifizieren;
einen Decodierer (41) zum Empfang von Befehlen;
ein vom Decodierer (41) empfangene Befehle ausführendes Steuermittel (42) mit CPUID-Ausführungsmitteln (44) zur Ausfüh­ rung eines CPUID-Befehls, der die Mikroprozessor-ID-Daten aus dem ID-Speicherelement ausliest und an ein Universalregister liefert;
ein Lese/Schreib-Speicherelement (14), das ein das Vorhan­ densein der CPUID-Ausführungsmittel anzeigendes ID-Flag auf­ weist;
Testprogrammittel (52) zum Anlegen einer Befehlsfolge an den Decodierer (41) und an die Steuermittel, wobei das Testpro­ gramm das ID-Flag auf das Vorhandensein eines Mikroprozessor- ID-Speicherelements testet; und
Programmittel (54) zum Anlegen eines CPUID-Befehls an den Decodierer und die Steuermittel.
10. Mikroprozessor nach Anspruch 9, dadurch gekennzeichnet, daß das Mikroprozessor-ID-Speicherelement (30) ein in dem Mi­ kroprozessor ausgebildetes Prozessor-ID-Register enthält.
11. Mikroprozessor nach Anspruch 9 oder 10, dadurch gekenn­ zeichnet, daß das Mikroprozessor-ID-Speicherelement reservierte Bits (38) enthält, so daß die reservierten Bits in dem Mikro­ prozessor-ID-Speicherelement eine Position haben, ihnen aber keine Bedeutung zugewiesen ist.
12. Mikroprozessor nach einem der Ansprüche 9 bis 11, da­ durch gekennzeichnet, daß er einer Steuer-ROM und einen Mikro­ befehlscode-Speicher aufweist und die Mikroprozessor-ID-Daten in dem Steuer-ROM gespeichert sind.
13. Mikroprozessor nach einem der Ansprüche 9 bis 12, da­ durch gekennzeichnet, daß die Datenfelder enthalten:
ein Familienfeld (32) zur Speicherung von die Familie des Computermikroprozessors anzeigenden Daten;
ein Modellfeld (34) zur Speicherung von das Modell des Com­ putermikroprozessors anzeigenden Daten; und
ein Revisionsfeld (36) zur Speicherung von die Version des Computermikroprozessors anzeigenden Daten.
14. Mikroprozessor nach einem der Ansprüche 9 bis 13, da­ durch gekennzeichnet, daß er außerdem ein zweites Universalre­ gister (22) enthält und daß die CPUID-Ausführungsmittel ein Mittel zum Löschen des zweiten Universalregisters aufweisen.
15. Computerimplementiertes Verfahren zur Identifizierung eines Mikroprozessors als Mitglied eines Mikroprozessorfamili­ ensatzes aus einer ersten und einer zweiten Gruppe, wobei die erste Gruppe einen Mikroprozessor-ID-Befehl nicht implementiert und die zweite Gruppe den Mikroprozessor-ID-Befehl implemen­ tiert, dadurch gekennzeichnet, daß
(a) eine Flag-Test-Befehlsfolge ausgeführt wird, die zur Bestimmung, ob ein Mikroprozessor der ersten oder der zweiten Gruppe angehört, ein ID-Flag testet;
(b) ein Mikroprozessor-ID-Befehl nicht ausgeführt wird, wenn die Ausführung der Flag-Test-Befehlsfolge im Schritt (a) anzeigt, daß der Mikroprozessor zur ersten Gruppe gehört; und
(c) ein Mikroprozessor-ID-Befehl nach der Flag-Test-Be­ fehlsfolge ausgeführt wird, um den Inhalt eines Mikroprozessor- ID-Daten enthaltenden Mikroprozessor-ID-Speicherelements in ein Universalregister zu laden, wenn die Ausführung der Flag-Test- Befehlsfolge im Schritt (a) anzeigt, daß der Mikroprozessor zu der zweiten Gruppe gehört.
16. Verfahren nach Anspruch 15, dadurch gekennzeichnet, daß außerdem die Mikroprozessor-ID-Daten verwendet werden, um ein zu dem identifizierten Mikroprozessor gehöriges Merkmal zu ak­ tivieren.
17. Verfahren nach Anspruch 15 oder 16, dadurch gekenn­ zeichnet, daß die Mikroprozessor-ID-Daten die Errata des Mikro­ prozessors anzeigende Stepping-ID-Identifikationsinformationen enthalten und daß die Stepping-ID-Informationen zur Implemen­ tierung eines Umgehungsprogramms für die Errata verwendet wer­ den.
18. Verfahren nach einem der Ansprüche 15 bis 17, dadurch gekennzeichnet, daß im Schritt (c) ein zweites Universalregi­ ster gelöscht wird.
19. Verfahren nach einem der Ansprüche 15 bis 18, dadurch gekennzeichnet, daß im Schritt (b) ein Befehl ausgeführt wird, der Datenfelder einschließlich eines Familienfeldes, eines Mo­ dellfeldes und eines Revisionsfeldes des Mikroprozessor-ID- Speicherelements in das Universalregister liest.
20. Verfahren nach Anspruch 19, dadurch gekennzeichnet, daß
(d) das Familienfeld und das Modellfeld in dem Universalre­ gister geprüft werden; und
(e) zu der Familie und dem Modell des identifizierten Mi­ kroprozessors gehörige Merkmale des Mikroprozessors aktiviert werden.
21. Verfahren nach Anspruch 20, dadurch gekennzeichnet, daß das Revisionsfeld geprüft wird und ein für die identifizierte Mikroprozessorversion geeignetes Umgehungsprogramm aktiviert wird.
22. Computerimplementiertes Verfahren zur Identifizierung eines Mikroprozessors als Mitglied eines Satzes kompatibler Mi­ kroprozessorfamilien, die einen fortschrittlichen Satz von Fa­ milien mit einer ID-Flag-Stelle in einem Flag-Register und einen Basissatz von Familien ohne ID-Flag-Stelle im Flag-Regi­ ster enthalten, wobei der fortschrittliche Familiensatz eine erste Gruppe, die einen Mikroprozessor-ID-Befehl nicht imple­ mentiert und eine zweite Gruppe aufweist, die den Mikroprozes­ sor-ID-Befehl implementiert, dadurch gekennzeichnet, daß
(a) bestimmt wird, ob der Mikroprozessor ein Mitglied des Basissatzes von Familien oder ein Mitglied des fortschrittli­ chen Satzes von Familien ist;
(b) wenn der Mikroprozessor ein Mitglied des fortschrittli­ chen Satzes von Familien ist, dann
(b)(i) eine Flag-Test-Befehlsfolge ausgeführt wird, die einen ID-Bit testet, um zu bestimmen, ob der Mikroprozessor zu der ersten Gruppe oder zu der zweiten Gruppe des fort­ schrittlichen Satzes von Familien gehört,
(b)(ii) wenn die Ausführung der Flag-Test-Befehls­ folge in Schritt (b)(i) anzeigt, daß der Mikroprozessor zur er­ sten Gruppe gehört, dann die Ausführung eines Mikroprozessor- ID-Befehls nach dem Test-Bit-Befehl verhindert wird, und
(b)(iii) wenn die Ausführung der Flag-Test-Befehls­ folge in Schritt (b)(ii) anzeigt, daß der Mikroprozessor zur zweiten Gruppe gehört, dann ein Mikroprozessor-ID-Befehl nach dem Test-Bit-Befehl ausgeführt wird, um den Inhalt des Mikro­ prozessor-ID-Speicherelements einem Programmierer zur Verfügung zu stellen; und
(c) wenn der Mikroprozessor ein Mitglied des Basissatzes von Familien ist, dann die Ausführung eines Befehls, der sonst den ID-Bit testen würde, vermieden wird, und die Ausführung des Mikroprozessor-ID-Befehls vermieden wird.
23. Verfahren nach Anspruch 22, dadurch gekennzeichnet, daß außerdem (d) ein zu dem durch das Mikroprozessor-ID-Speicher­ element identifizierten Mikroprozessor gehöriges Merkmal des Mikroprozessors und ein zu dem identifizierten Mikroprozessor gehöriges Umgehungsprogramm aktiviert werden.
24. Verfahren nach Anspruch 22, dadurch gekennzeichnet, daß im Schritt (b) ein Befehl ausgeführt wird, der Datenfelder, ein­ schließlich eines Familienfeldes, eines Modellfeldes und eines Revisionsfeldes, des Mikroprozessor-ID-Speicherelements in das Register liest.
25. Verfahren nach Anspruch 24, dadurch gekennzeichnet, daß das Familienfeld und das Modellfeld, aber nicht das Revisions­ feld gelesen werden und ein zu der Familie und dem Modell des identifizierten Mikroprozessors gehöriges Merkmal des Mikropro­ zessors aktiviert wird.
26. Verfahren nach Anspruch 25, dadurch gekennzeichnet, daß das Revisionsfeld, aber weder das Familienfeld noch das Modell­ feld gelesen werden, und ein zu dem identifizierten Mikroprozes­ sor gehöriges Umgehungsprogramm aktiviert wird.
DE4329336A 1992-08-31 1993-08-31 Einrichtung und Verfahren zur Identifizierung eines Computer-Mikroprozessors Expired - Lifetime DE4329336C2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US07/938,288 US5790834A (en) 1992-08-31 1992-08-31 Apparatus and method using an ID instruction to identify a computer microprocessor

Publications (2)

Publication Number Publication Date
DE4329336A1 true DE4329336A1 (de) 1994-03-03
DE4329336C2 DE4329336C2 (de) 2002-11-28

Family

ID=25471217

Family Applications (1)

Application Number Title Priority Date Filing Date
DE4329336A Expired - Lifetime DE4329336C2 (de) 1992-08-31 1993-08-31 Einrichtung und Verfahren zur Identifizierung eines Computer-Mikroprozessors

Country Status (5)

Country Link
US (5) US5790834A (de)
JP (2) JP3905928B2 (de)
KR (1) KR100255549B1 (de)
DE (1) DE4329336C2 (de)
GB (1) GB2270176B (de)

Families Citing this family (141)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5790834A (en) * 1992-08-31 1998-08-04 Intel Corporation Apparatus and method using an ID instruction to identify a computer microprocessor
US5734872A (en) * 1994-09-19 1998-03-31 Kelly; Michael CPU interconnect system for a computer
US5933620A (en) * 1996-03-28 1999-08-03 Advanced Micro Devices, Inc. Method and apparatus for serializing microprocessor identification numbers
US5768499A (en) * 1996-04-03 1998-06-16 Advanced Micro Devices, Inc. Method and apparatus for dynamically displaying and causing the execution of software diagnostic/test programs for the silicon validation of microprocessors
US5860024A (en) * 1996-04-15 1999-01-12 Advanced Micro Devices, Inc. Microprocessor with automatic name generation including performance indication
US5946497A (en) * 1996-05-17 1999-08-31 Advanced Micro Devices, Inc. System and method for providing microprocessor serialization using programmable fuses
US5903742A (en) * 1996-10-30 1999-05-11 Texas Instruments Incorporated Method and circuit for redefining bits in a control register
US5807175A (en) * 1997-01-15 1998-09-15 Microsoft Corporation Dynamic detection of player actuated digital input devices coupled to a computer port
US6065113A (en) * 1997-03-07 2000-05-16 Texas Instruments Incorporated Circuits, systems, and methods for uniquely identifying a microprocessor at the instruction set level employing one-time programmable register
US5999860A (en) * 1997-07-16 1999-12-07 Ati Technologies, Inc. Method and apparatus for optimizing digital processing
US6112312A (en) * 1998-03-10 2000-08-29 Advanced Micro Devices, Inc. Method for generating functional tests for a microprocessor having several operating modes and features
KR100368333B1 (ko) * 1998-03-27 2003-04-11 엘지전자 주식회사 회로제품의이력정보관리방법
US6654714B1 (en) * 1998-05-22 2003-11-25 Micron Technology, Inc. Method and system for selecting compatible processors to add to a multiprocessor computer
US6405311B1 (en) * 1998-07-28 2002-06-11 Compaq Computer Corporation Method for storing board revision
US6170056B1 (en) 1998-09-09 2001-01-02 At&T Corp. Method and apparatus for identifying a computer through BIOS scanning
US6360319B1 (en) * 1999-01-04 2002-03-19 Emc Corporation Method and apparatus for storing and retrieving system revision information
US6253076B1 (en) 1999-02-25 2001-06-26 Ericsson Inc. Manufacturing method for wireless communications devices employing potentially different versions of integrated circuits
WO2000065598A1 (fr) 1999-04-27 2000-11-02 Seiko Epson Corporation Circuit integre
US6813778B1 (en) 1999-08-16 2004-11-02 General Instruments Corporation Method and system for downloading and managing the enablement of a list of code objects
KR100584150B1 (ko) * 1999-11-30 2006-05-26 엘지전자 주식회사 통신 시스템에서 무선장치의 오류진단 방법
US7493497B1 (en) 2000-02-03 2009-02-17 Integrated Information Solutions Digital identity device
US7249247B2 (en) * 2000-04-11 2007-07-24 Microsoft Corporation Common feature mode for microprocessors in a multiple microprocessor system
US6792529B1 (en) * 2000-04-11 2004-09-14 Microsoft Corporation Common feature mode for microprocessors in a multiple microprocessor system
DE10028912A1 (de) * 2000-06-10 2001-12-20 Bosch Gmbh Robert Herstellungsverfahren für ein elektronisches Gerät
US6691235B1 (en) 2000-07-27 2004-02-10 International Business Machines Corporation Automatic voltage regulation for processors having different voltage requirements and unified or split voltage planes
GB2366012B (en) * 2000-08-14 2002-08-14 Sun Microsystems Inc A computer system
US8149048B1 (en) 2000-10-26 2012-04-03 Cypress Semiconductor Corporation Apparatus and method for programmable power management in a programmable analog circuit block
US8176296B2 (en) 2000-10-26 2012-05-08 Cypress Semiconductor Corporation Programmable microcontroller architecture
US8103496B1 (en) 2000-10-26 2012-01-24 Cypress Semicondutor Corporation Breakpoint control in an in-circuit emulation system
US7765095B1 (en) 2000-10-26 2010-07-27 Cypress Semiconductor Corporation Conditional branching in an in-circuit emulation system
US8160864B1 (en) 2000-10-26 2012-04-17 Cypress Semiconductor Corporation In-circuit emulator and pod synchronized boot
US6724220B1 (en) 2000-10-26 2004-04-20 Cyress Semiconductor Corporation Programmable microcontroller architecture (mixed analog/digital)
GB2406416A (en) * 2000-10-31 2005-03-30 Advanced Risc Mach Ltd Describing an integrated circuit configuration
US7316934B2 (en) * 2000-12-18 2008-01-08 Zavitan Semiconductors, Inc. Personalized hardware
US6728864B2 (en) * 2001-01-31 2004-04-27 International Business Machines Corporation Identifying architecture and bit specification of processor implementation using bits in identification register
US6738842B1 (en) * 2001-03-29 2004-05-18 Emc Corporation System having plural processors and a uni-cast/broadcast communication arrangement
US7406674B1 (en) 2001-10-24 2008-07-29 Cypress Semiconductor Corporation Method and apparatus for generating microcontroller configuration information
US7376811B2 (en) * 2001-11-06 2008-05-20 Netxen, Inc. Method and apparatus for performing computations and operations on data using data steering
US8078970B1 (en) 2001-11-09 2011-12-13 Cypress Semiconductor Corporation Graphical user interface with user-selectable list-box
US7526422B1 (en) 2001-11-13 2009-04-28 Cypress Semiconductor Corporation System and a method for checking lock-step consistency between an in circuit emulation and a microcontroller
US8042093B1 (en) 2001-11-15 2011-10-18 Cypress Semiconductor Corporation System providing automatic source code generation for personalization and parameterization of user modules
US7770113B1 (en) 2001-11-19 2010-08-03 Cypress Semiconductor Corporation System and method for dynamically generating a configuration datasheet
US8069405B1 (en) 2001-11-19 2011-11-29 Cypress Semiconductor Corporation User interface for efficiently browsing an electronic document using data-driven tabs
US7774190B1 (en) 2001-11-19 2010-08-10 Cypress Semiconductor Corporation Sleep and stall in an in-circuit emulation system
US7844437B1 (en) 2001-11-19 2010-11-30 Cypress Semiconductor Corporation System and method for performing next placements and pruning of disallowed placements for programming an integrated circuit
US6971004B1 (en) 2001-11-19 2005-11-29 Cypress Semiconductor Corp. System and method of dynamically reconfiguring a programmable integrated circuit
US20030126423A1 (en) * 2001-12-28 2003-07-03 Crossroads Systems, Inc. Electronic branding technology
US7036005B2 (en) * 2001-12-31 2006-04-25 Intel Corporation Method and apparatus for modifying the contents of revision identification register
US8103497B1 (en) 2002-03-28 2012-01-24 Cypress Semiconductor Corporation External interface for event architecture
US7099818B1 (en) * 2002-03-29 2006-08-29 Cypress Semiconductor Corporation System and method for automatically matching components in a debugging system
US7308608B1 (en) 2002-05-01 2007-12-11 Cypress Semiconductor Corporation Reconfigurable testing system and method
US7171546B2 (en) * 2002-05-23 2007-01-30 Adams Phillip M CPU life-extension apparatus and method
US7779407B2 (en) * 2002-05-29 2010-08-17 Adams Phillip M Computer-hardware, life-extension apparatus and method
US7003656B2 (en) * 2002-06-13 2006-02-21 Hewlett-Packard Development Company, L.P. Automatic selection of firmware for a computer that allows a plurality of process types
US7161579B2 (en) 2002-07-18 2007-01-09 Sony Computer Entertainment Inc. Hand-held computer interactive device
US7623115B2 (en) 2002-07-27 2009-11-24 Sony Computer Entertainment Inc. Method and apparatus for light input device
US7646372B2 (en) * 2003-09-15 2010-01-12 Sony Computer Entertainment Inc. Methods and systems for enabling direction detection when interfacing with a computer program
US8797260B2 (en) 2002-07-27 2014-08-05 Sony Computer Entertainment Inc. Inertially trackable hand-held controller
US8313380B2 (en) 2002-07-27 2012-11-20 Sony Computer Entertainment America Llc Scheme for translating movements of a hand-held controller into inputs for a system
US8570378B2 (en) 2002-07-27 2013-10-29 Sony Computer Entertainment Inc. Method and apparatus for tracking three-dimensional movements of an object using a depth sensing camera
US9474968B2 (en) 2002-07-27 2016-10-25 Sony Interactive Entertainment America Llc Method and system for applying gearing effects to visual tracking
US8686939B2 (en) 2002-07-27 2014-04-01 Sony Computer Entertainment Inc. System, method, and apparatus for three-dimensional input control
US8019121B2 (en) * 2002-07-27 2011-09-13 Sony Computer Entertainment Inc. Method and system for processing intensity from input devices for interfacing with a computer program
US7760248B2 (en) 2002-07-27 2010-07-20 Sony Computer Entertainment Inc. Selective sound source listening in conjunction with computer interactive processing
US9393487B2 (en) 2002-07-27 2016-07-19 Sony Interactive Entertainment Inc. Method for mapping movements of a hand-held controller to game commands
GB2391339A (en) * 2002-07-30 2004-02-04 Nec Technologies Digital IC revision identification using a register
US9682319B2 (en) 2002-07-31 2017-06-20 Sony Interactive Entertainment Inc. Combiner method for altering game gearing
US9003376B2 (en) * 2002-08-09 2015-04-07 Texas Instruments Incorporated Software breakpoints with tailoring for multiple processor shared memory or multiple thread systems
US7761845B1 (en) 2002-09-09 2010-07-20 Cypress Semiconductor Corporation Method for parameterizing a user module
US7231552B2 (en) * 2002-10-24 2007-06-12 Intel Corporation Method and apparatus for independent control of devices under test connected in parallel
JP3736525B2 (ja) * 2002-12-25 2006-01-18 ソニー株式会社 半導体集積回路装置および回路基板
US7015795B2 (en) * 2002-12-30 2006-03-21 Potomac Photonics, Inc. Self-identifying integrated circuits and method for fabrication thereof
US7363237B1 (en) * 2002-12-31 2008-04-22 Adams Phillip M Enforcement process for correction of hardware and software defects
US9177387B2 (en) 2003-02-11 2015-11-03 Sony Computer Entertainment Inc. Method and apparatus for real time motion capture
US6996785B1 (en) 2003-04-25 2006-02-07 Universal Network Machines, Inc . On-chip packet-based interconnections using repeaters/routers
US8072470B2 (en) 2003-05-29 2011-12-06 Sony Computer Entertainment Inc. System and method for providing a real-time three-dimensional interactive environment
US9573056B2 (en) 2005-10-26 2017-02-21 Sony Interactive Entertainment Inc. Expandable control device via hardware attachment
US10279254B2 (en) 2005-10-26 2019-05-07 Sony Interactive Entertainment Inc. Controller having visually trackable object for interfacing with a gaming system
US8323106B2 (en) 2008-05-30 2012-12-04 Sony Computer Entertainment America Llc Determination of controller three-dimensional location using image analysis and ultrasonic communication
US8287373B2 (en) * 2008-12-05 2012-10-16 Sony Computer Entertainment Inc. Control device for communicating visual information
US7287153B1 (en) * 2004-01-14 2007-10-23 Advanced Micro Devices, Inc. Processing of processor performance state information
US7663689B2 (en) * 2004-01-16 2010-02-16 Sony Computer Entertainment Inc. Method and apparatus for optimizing capture device settings through depth information
US7546394B1 (en) 2004-03-19 2009-06-09 Xilinx, Inc. Management of configuration data by generating a chain description data set that specifies an order of configuration chain for multi-device systems
US7685327B1 (en) * 2004-03-19 2010-03-23 Xilinx, Inc. Identification of multi-device systems
US7295049B1 (en) 2004-03-25 2007-11-13 Cypress Semiconductor Corporation Method and circuit for rapid alignment of signals
US8286125B2 (en) 2004-08-13 2012-10-09 Cypress Semiconductor Corporation Model for a hardware device-independent method of defining embedded firmware for programmable systems
US8069436B2 (en) 2004-08-13 2011-11-29 Cypress Semiconductor Corporation Providing hardware independence to automate code generation of processing device firmware
US8547401B2 (en) 2004-08-19 2013-10-01 Sony Computer Entertainment Inc. Portable augmented reality device and method
US20060047939A1 (en) * 2004-09-01 2006-03-02 International Business Machines Corporation Method and apparatus for initializing multiple processors residing in an integrated circuit
JP2006099411A (ja) * 2004-09-29 2006-04-13 Oki Electric Ind Co Ltd ソフトウェアの使用制限方法
US7308571B2 (en) * 2004-10-06 2007-12-11 Intel Corporation Overriding processor configuration settings
US20080313384A1 (en) * 2004-10-25 2008-12-18 Ralf Angerbauer Method and Device for Separating the Processing of Program Code in a Computer System Having at Least Two Execution Units
EP1810146B1 (de) * 2004-10-25 2009-03-18 Robert Bosch Gmbh Verfahren und vorrichtung zur trennung der abarbeitung von programmcode bei einem rechnersystem mit wenigstens zwei ausführungseinheiten
US20060179330A1 (en) * 2005-01-27 2006-08-10 Ziarnik Gregory P Apparatus and method for ensuring power compatibility between a system board and a processing device
US7332976B1 (en) 2005-02-04 2008-02-19 Cypress Semiconductor Corporation Poly-phase frequency synthesis oscillator
US7370190B2 (en) * 2005-03-03 2008-05-06 Digimarc Corporation Data processing systems and methods with enhanced bios functionality
US7400183B1 (en) 2005-05-05 2008-07-15 Cypress Semiconductor Corporation Voltage controlled oscillator delay cell and method
US8089461B2 (en) 2005-06-23 2012-01-03 Cypress Semiconductor Corporation Touch wake for electronic devices
EP1955542A1 (de) * 2005-11-29 2008-08-13 Thomson Licensing Verfahren und vorrichtung zum sichern von digitalem inhalt
US8085067B1 (en) 2005-12-21 2011-12-27 Cypress Semiconductor Corporation Differential-to-single ended signal converter circuit and method
DE102006008017A1 (de) * 2006-02-21 2007-08-30 Infineon Technologies Ag Verfahren zum Herstellen und Verfahren zum Betreiben eines integrierten Halbleiterspeichers
US8067948B2 (en) 2006-03-27 2011-11-29 Cypress Semiconductor Corporation Input/output multiplexer bus
US8781151B2 (en) 2006-09-28 2014-07-15 Sony Computer Entertainment Inc. Object detection using video input combined with tilt angle information
US8310656B2 (en) 2006-09-28 2012-11-13 Sony Computer Entertainment America Llc Mapping movements of a hand-held controller to the two-dimensional image plane of a display screen
USRE48417E1 (en) 2006-09-28 2021-02-02 Sony Interactive Entertainment Inc. Object direction using video input combined with tilt angle information
US9564902B2 (en) 2007-04-17 2017-02-07 Cypress Semiconductor Corporation Dynamically configurable and re-configurable data path
US7737724B2 (en) 2007-04-17 2010-06-15 Cypress Semiconductor Corporation Universal digital block interconnection and channel routing
US8130025B2 (en) 2007-04-17 2012-03-06 Cypress Semiconductor Corporation Numerical band gap
US8026739B2 (en) 2007-04-17 2011-09-27 Cypress Semiconductor Corporation System level interconnect with programmable switching
US8516025B2 (en) 2007-04-17 2013-08-20 Cypress Semiconductor Corporation Clock driven dynamic datapath chaining
US8040266B2 (en) 2007-04-17 2011-10-18 Cypress Semiconductor Corporation Programmable sigma-delta analog-to-digital converter
US8092083B2 (en) 2007-04-17 2012-01-10 Cypress Semiconductor Corporation Temperature sensor with digital bandgap
US8266575B1 (en) 2007-04-25 2012-09-11 Cypress Semiconductor Corporation Systems and methods for dynamically reconfiguring a programmable system on a chip
US9720805B1 (en) 2007-04-25 2017-08-01 Cypress Semiconductor Corporation System and method for controlling a target device
US8065653B1 (en) 2007-04-25 2011-11-22 Cypress Semiconductor Corporation Configuration of programmable IC design elements
US9652210B2 (en) * 2007-08-28 2017-05-16 Red Hat, Inc. Provisioning a device with multiple bit-size versions of a software component
US8832679B2 (en) * 2007-08-28 2014-09-09 Red Hat, Inc. Registration process for determining compatibility with 32-bit or 64-bit software
US8049569B1 (en) 2007-09-05 2011-11-01 Cypress Semiconductor Corporation Circuit and method for improving the accuracy of a crystal-less oscillator having dual-frequency modes
US8250354B2 (en) * 2007-11-29 2012-08-21 GlobalFoundries, Inc. Method and apparatus for making a processor sideband interface adhere to secure mode restrictions
CN101458639B (zh) * 2007-12-11 2010-12-01 英业达股份有限公司 中央处理器类型识别电路及中央处理器类型识别方法
US8289324B1 (en) 2007-12-17 2012-10-16 Nvidia Corporation System, method, and computer program product for spatial hierarchy traversal
US8502819B1 (en) 2007-12-17 2013-08-06 Nvidia Corporation System and method for performing ray tracing node traversal in image rendering
US8542907B2 (en) 2007-12-17 2013-09-24 Sony Computer Entertainment America Llc Dynamic three-dimensional object mapping for user-defined control device
CN103258184B (zh) 2008-02-27 2017-04-12 索尼计算机娱乐美国有限责任公司 用于捕获场景的深度数据并且应用计算机动作的方法
US8368753B2 (en) * 2008-03-17 2013-02-05 Sony Computer Entertainment America Llc Controller with an integrated depth camera
US7904460B2 (en) * 2008-04-23 2011-03-08 Microsoft Corporation Determining computer information from processor properties
US7831816B2 (en) * 2008-05-30 2010-11-09 Globalfoundries Inc. Non-destructive sideband reading of processor state information
US8166207B2 (en) 2008-09-29 2012-04-24 Intel Corporation Querying a device for information
US8006082B2 (en) * 2008-09-29 2011-08-23 Intel Corporation Dynamically reconfiguring platform settings
US8527657B2 (en) 2009-03-20 2013-09-03 Sony Computer Entertainment America Llc Methods and systems for dynamically adjusting update rates in multi-player network gaming
US8342963B2 (en) 2009-04-10 2013-01-01 Sony Computer Entertainment America Inc. Methods and systems for enabling control of artificial intelligence game characters
US9448964B2 (en) 2009-05-04 2016-09-20 Cypress Semiconductor Corporation Autonomous control in a programmable system
US8393964B2 (en) * 2009-05-08 2013-03-12 Sony Computer Entertainment America Llc Base station for position location
US8142288B2 (en) * 2009-05-08 2012-03-27 Sony Computer Entertainment America Llc Base station movement detection and compensation
US8150902B2 (en) 2009-06-19 2012-04-03 Singular Computing Llc Processing with compact arithmetic processing element
US8555036B1 (en) 2010-05-17 2013-10-08 Nvidia Corporation System and method for performing predicated selection of an output register
US8564589B1 (en) 2010-05-17 2013-10-22 Nvidia Corporation System and method for accelerated ray-box intersection testing
US20150370564A1 (en) * 2014-06-24 2015-12-24 Eli Kupermann Apparatus and method for adding a programmable short delay
CN116340022A (zh) * 2016-01-22 2023-06-27 索尼互动娱乐股份有限公司 用于向后兼容性的欺骗cpuid
US10699362B2 (en) * 2016-06-23 2020-06-30 Intel Corporation Divergent control flow for fused EUs
US10877751B2 (en) 2018-09-29 2020-12-29 Intel Corporation Spoofing a processor identification instruction

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE1774040B2 (de) * 1967-03-27 1975-04-17 Burroughs Corp., Detroit, Mich. (V.St.A.) Übertragungssystem für digitale Daten zwischen einer Datenverarbeitungsanlage und mindestens einer Ein/Ausgabe-Einheit
US4167779A (en) * 1978-03-10 1979-09-11 Digital Equipment Corporation Diagnostic apparatus in a data processing system
GB2230362A (en) * 1989-04-14 1990-10-17 Smiths Industries Plc Identifying processors
DE3624373C2 (de) * 1985-07-18 1991-03-21 Diesel Kiki Co., Ltd., Tokio/Tokyo, Jp

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5835287B2 (ja) * 1978-12-28 1983-08-02 富士通株式会社 計算装置
US4779188A (en) * 1983-12-14 1988-10-18 International Business Machines Corporation Selective guest system purge control
JPS60171540A (ja) * 1984-02-15 1985-09-05 Nec Corp 集積回路
JPS60225959A (ja) * 1984-04-25 1985-11-11 Ascii Corp 複合機能cpu
JPS62247275A (ja) * 1986-03-31 1987-10-28 Ando Electric Co Ltd インサ−キツトエミユレ−タのcpu識別回路
US4974191A (en) * 1987-07-31 1990-11-27 Syntellect Software Inc. Adaptive natural language computer interface system
US5426767A (en) * 1987-08-03 1995-06-20 Compaq Computer Corporation Method for distinguishing between a 286-type central processing unit and a 386-type central processing unit
US4866769A (en) * 1987-08-05 1989-09-12 Ibm Corporation Hardware assist for protecting PC software
US4930065A (en) * 1987-08-20 1990-05-29 David Computer Corporation Automatic data channels for a computer system
US4970640A (en) * 1987-08-28 1990-11-13 International Business Machines Corporation Device initiated partial system quiescing
US5084814A (en) * 1987-10-30 1992-01-28 Motorola, Inc. Data processor with development support features
US5121486A (en) * 1987-11-20 1992-06-09 Hitachi, Ltd Network control system for dynamically switching a logical connection between an identified terminal device and an indicated processing unit
US4967346A (en) * 1988-03-14 1990-10-30 Advanced Micro Devices, Inc. Universal microprocessor interface circuit
US5113518A (en) * 1988-06-03 1992-05-12 Durst Jr Robert T Method and system for preventing unauthorized use of software
US4967345A (en) * 1988-06-23 1990-10-30 International Business Machines Corporation Method of selecting least weight routes in a communications network
JPH0240753A (ja) * 1988-07-22 1990-02-09 Internatl Business Mach Corp <Ibm> 情報処理システムを自動的に構成するためのシステム
US5163145A (en) * 1989-04-25 1992-11-10 Dell Usa L.P. Circuit for determining between a first or second type CPU at reset by examining upper M bits of initial memory reference
US5144551A (en) * 1989-05-19 1992-09-01 Compaq Computer Corporation Computer memory management method utilizing segmentation and protection techniques
EP0532643B1 (de) * 1990-06-04 1998-12-23 3Com Corporation Verfahren zur software-optimierung für irgendeine einer vielfältigkeit von ändernden architekturen
GB9018991D0 (en) * 1990-08-31 1990-10-17 Ncr Co Work station with timing independant interface units
US5287531A (en) * 1990-10-31 1994-02-15 Compaq Computer Corp. Daisy-chained serial shift register for determining configuration of removable circuit boards in a computer system
US5214652A (en) * 1991-03-26 1993-05-25 International Business Machines Corporation Alternate processor continuation of task of failed processor
US5551012A (en) * 1991-04-22 1996-08-27 Acer Incorporated Single socket upgradeable computer motherboard with automatic detection and socket reconfiguration for inserted CPU chip
US5640537A (en) * 1991-11-20 1997-06-17 Apple Computer, Inc. Apparatus for causing a computer system to respond to emulated user interaction in the absence of actual user interaction
KR950002162B1 (ko) * 1992-02-12 1995-03-14 삼성전자주식회사 Cpu 로직의 자동 절환 장치
US5790834A (en) * 1992-08-31 1998-08-04 Intel Corporation Apparatus and method using an ID instruction to identify a computer microprocessor

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE1774040B2 (de) * 1967-03-27 1975-04-17 Burroughs Corp., Detroit, Mich. (V.St.A.) Übertragungssystem für digitale Daten zwischen einer Datenverarbeitungsanlage und mindestens einer Ein/Ausgabe-Einheit
US4167779A (en) * 1978-03-10 1979-09-11 Digital Equipment Corporation Diagnostic apparatus in a data processing system
DE3624373C2 (de) * 1985-07-18 1991-03-21 Diesel Kiki Co., Ltd., Tokio/Tokyo, Jp
GB2230362A (en) * 1989-04-14 1990-10-17 Smiths Industries Plc Identifying processors

Also Published As

Publication number Publication date
US5794066A (en) 1998-08-11
JPH0749855A (ja) 1995-02-21
US5958037A (en) 1999-09-28
JP2006053943A (ja) 2006-02-23
US5671435A (en) 1997-09-23
GB2270176B (en) 1996-01-03
GB9317872D0 (en) 1993-10-13
US5790834A (en) 1998-08-04
GB2270176A (en) 1994-03-02
JP3905928B2 (ja) 2007-04-18
DE4329336C2 (de) 2002-11-28
KR940004462A (ko) 1994-03-15
US5675825A (en) 1997-10-07
KR100255549B1 (ko) 2000-05-01
JP4723965B2 (ja) 2011-07-13

Similar Documents

Publication Publication Date Title
DE4329336C2 (de) Einrichtung und Verfahren zur Identifizierung eines Computer-Mikroprozessors
DE112009000344B4 (de) Zugriffsrechte auf eine Speicher-Map
DE4313594C2 (de) Mikroprozessor
DE60010420T2 (de) Automatisches Regressionstesten von Arbeitsplatz-Software
DE69929936T2 (de) Verfahren und Vorrichtung zum Abrufen von nicht-angrenzenden Befehlen in einem Datenverarbeitungssystem
DE19882696B4 (de) Speichertransaktionen auf einem Bus geringer Leitungsanzahl
DE60008088T2 (de) Mehrprozessorsystem Prüfungsschaltung
DE69727773T2 (de) Verbesserte Verzweigungsvorhersage in einem Pipelinemikroprozessor
DE60100848T2 (de) Virtuelles rom für geräte-aufzählung
DE112010004963T5 (de) Synchronisieren von SIMD Vektoren
DE112004002267T5 (de) Ruhezustandsmechansimus für virtuelles Multithreading
DE10312264A1 (de) Verfahren und Vorrichtung zum Hervorrufen von Unterschieden bei mit Verriegelungsschritten versehenen Prozessoren
DE69732793T2 (de) Acht-bit-mikrokontroller mit risc-architektur
EP0104635A2 (de) Verfahren und Anordnung zum Prüfen eines digitalen Rechners
DE19729618A1 (de) Mikroprozessor und Mehrprozessorsystem
DE112005003216T5 (de) System und Verfahren für Steuerregister, auf die über private Rechenoperationen zugegriffen wird
EP0500973A1 (de) Initialisierungsroutine im EEPROM
DE4434529A1 (de) Verfahren zum Verarbeiten eines Befehls mit Einsatzbedingung und Vorrichtung dazu
DE4238099C2 (de) Mikroprozessor mit mehreren Betriebsmoden
DE19652290C2 (de) Mikrocomputer
DE2702722C2 (de) Einrichtung zur Verarbeitung nicht direkt ausführbarer Instruktionen
US6735774B1 (en) Method and apparatus for system call management
DE3700800C2 (de) Einrichtung zur Erzeugung eines Unterbrechungspunktes in einem Mikroprozessor
DE3323824A1 (de) Speicherprogrammierbare steuerung
DE60010847T2 (de) Verfahren zur Fehlerbeseitigung in einem Thread-Programm

Legal Events

Date Code Title Description
8110 Request for examination paragraph 44
8125 Change of the main classification

Ipc: G06F 1/00

D2 Grant after examination
8364 No opposition during term of opposition
R071 Expiry of right
R071 Expiry of right