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

Einrichtung und Verfahren zur Identifizierung eines Computer-Mikroprozessors

Info

Publication number
DE4329336C2
DE4329336C2 DE4329336A DE4329336A DE4329336C2 DE 4329336 C2 DE4329336 C2 DE 4329336C2 DE 4329336 A DE4329336 A DE 4329336A DE 4329336 A DE4329336 A DE 4329336A DE 4329336 C2 DE4329336 C2 DE 4329336C2
Authority
DE
Germany
Prior art keywords
microprocessor
flag
register
family
command
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
DE4329336A
Other languages
English (en)
Other versions
DE4329336A1 (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(C2) "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 Identifikationseinrichtung in einem Mikroprozessor nach dem Oberbegriff des Anspruchs 1 sowie ein Verfahren zum Identifizieren eines Mikroprozessors nach dem Oberbegriff des Anspruchs 6.
Während des Rechnerbetriebs 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 Features von der Initialisierungssoftware installiert werden können.
Außerdem kann es nützlich sein, während der Installation oder während des Abarbeitens von Software den Mikroprozessor zu identifizieren. Die Merkmale des Mikroprozessors, die der Software verfügbar sind, hängen stark von der Familie und dem Modell des Mikroprozessors ab. Sobald der Mikroprozessor identifiziert ist, können diese Merkmale besser genutzt werden.
Es kann nützlich sein, zusätzlich zur Familie und dem Mo­ dell des Mikroprozessors die Version (Stepping) des Mikropro­ zessors zu kennen. Eine "Stepping-ID" eines Mikroprozessors identifiziert seine Version. Z. B. kann der Mikroprozessor in mehreren verschiedenen Versionen hergestellt worden sein, wo­ bei jede Version mit einer anderen Stepping-ID identifiziert ist. Während der Zeit, in der ein Mikroprozessor hergestellt wird, werden oft verschiedene Versionen eines Mikroprozessors eingeführt, um Konstruktionsfehler (bugs) oder andere Probleme, die in älteren Versionen aufgetreten sind, zu korrigieren. Oft werden diese Fehler erst entdeckt, nachdem ein Mikroprozessor in Produktion gegangen ist, wenn es zu spät für eine Korrektur ist. Fehler können die Antwort des Mikroprozessors auf bestimmte Befehle oder bestimmte Befehlsfolgen beeinflussen. Es ist nützlich, die Stepping-ID eines Mikroprozessors zu kennen, damit Befehle und Merkmale, die von dem Fehler betroffen sind, nicht aktiviert werden. Außerdem sind die Fehler bekannt, sobald ein Mikroprozessor durch die Stepping-ID identifiziert wurde, und Kompensationssoftware kann installiert werden. Soft­ warefixierungen, die einen vorhandenen Fehler kompensieren, werden oft "Umgehungen" genannt. Wenn es z. B. bekannt ist, daß ein von einem "POP A" gefolgter "PUSH A" 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 Konstanten-ROM ist für alle anderen Zwecke nicht verfügbar, z. T. wegen Kompatibilitätserfordernissen. Ein Problem bei dieser Herangehensweise besteht darin, daß der ID-Code nur während der Initialisierung und nicht zu jeder anderen Zeit verfügbar ist.
In der GB 2 230 362 A ist eine Identifizierung von Prozessoren beschrieben, bei der der Prozessor einen Speicher mit Mikroprozessor-Identifikationsdaten enthält. Durch das Auslesen des Speichers können die Eigenschaften des Prozessors ermittelt werden. Das Auslesen geschieht jedoch nicht durch den Prozessor selbst, sondern von außerhalb des Prozessors.
Die DE-AS 17 74 040 beschreibt ein Verfahren zum Bestimmen der an eine Datenverarbeitungsanlage angeschlossenen, verschiedenen Ein-/Ausgabe-Einheiten. Hierfür ist ein Art-Feststellungsbefehl vorgesehen, der dekodiert wird, um eine Typ-Identifikation abzufragen, die Informationen unterschiedlicher Art über die Ein-/Ausgabe- Einheiten enthalten kann. Die Selbstidentifizierung eines Mikroprozessors wird nicht beschrieben.
US-PS 4,167,779 beschreibt die Implementierung von besonderen Befehlen in einem Prozessor, die für Test- und Diagnosezwecke den Zugriff auf Register oder Speicher erlauben, welche sonst durch allgemeine Programmbefehle nicht zugänglich sind. Der interne Zustand von Registern des Prozessors kann mittels eines solchen Spezialbefehls in ein auslesbares Register übertragen werden. Bei den auslesbaren Registern handelt es sich jedoch um dynamische Register und nicht um Nur-Lese-Speicher, die Identifikationsdaten des Mikroprozessors selbst enthalten.
Bekannte Identifikationsverfahren eines Mikroprozessors basieren auf einer Fall-zu-Fall-, "ad hoc"-Lösung. Wenn bei­ spielsweise 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 ersten oder zum zweiten Modell gehört, geprüft werden.
Die DE 36 24 373 C2 beschreibt ein solches Verfahren zum Identifizieren eines Mikroprozessors, in dem das Vorhandensein eines bestimmten Registers durch Schreiben in und Lesen aus diesem Register festgestellt wird.
Um die Stepping-ID zu bestimmen, war oft eine kompliziertere Herangehensweise erforderlich. Z. B. könnte eine Programmschrittfolge ausgeführt werden, die das Vorhandensein eines Fehlers erkennt und dabei den Mikroprozessor als einen einer bestimmten Version (Stepping) identifiziert. Eine Vielzahl an oft inkonsistenten Verfahren zur Fehlerbestimmung 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(i486TM)-Mikroprozessorfamilien. 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, werden eine Reihe von Befehlen nacheinander ausgeführt. Beispielsweise kann der Code zunächst feststellen, ob der Mikroprozessor ein 8086-Mikroprozessor, ein 80286- Mikroprozessor oder ein höherer Mikroprozessor 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 Sequenzen, die sich in älteren Generationen auf zeitliche Abläufe von Befehlen verlassen, bei zukünftig entwickelten Generationen nicht die erwarteten Ergebnisse liefern.
Bei den jüngsten Mikroprozessoren war das "ad hoc"- Verfahren zur Unterscheidung zwischen Mikroprozessoren mangels wahrnehmbarer, zuverlässiger Unterschiede nicht erfolgreich. Bezogen auf die INTEL-Mikroprozessoren wird es schwierig oder sogar unmöglich sein, die "ad hoc"-Verfahren zur Feststellung der Unterschiede zwischen einem i486TM- Mikroprozessor und zukünftigen, z. Z. im Entwicklungsstadium befindlichen Mikroprozessorfamilien zu verwenden.
Ein weiteres Problem bei der Identifizierung eines Mikro­ prozessors und bei der Entwicklung eines Mechanismus' zur Identifizierung eines Mikroprozessors stellt das Kompatibilitätserfordernis dar. Computersoftwareverkäufer bevorzugen oft, nur eine Version ihrer Software zu verkaufen. Diese eine Version muß auf allen Mikroprozessorarten in einer bestimmten Mikroprozessorfamilie oder Gruppe von Familien laufen. Insbesondere ist es von großem Vorteil, wenn die für eine der obigen INTEL-Mikroprozessorfamilien entwickelte Software auf allen Mikroprozessoren 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 entwickelten Mikroprozessoren laufen. Wenn die Software versucht, einen für diesen Mikroprozessor nicht definierten Befehl zu verarbeiten, wird im allgemeinen eine "unzulässige Opcode"-Ausnahme 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 Mikroprozessors 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ügbaren Merkmale verwendet werden. Außerdem wäre es vorteilhaft, wenn diese Befehlsfolge bei versuchsweiser Anwendung auf älteren Mikroprozessorgenerationen ohne Implementierung dieses Be­ fehls, 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 Identifikationseinrichtung und ein Identifizierungsverfahren anzugeben, die bzw. das die Identifizierung eines Mikroprozessors während des Betriebs in einer gegenüber älteren Mikroprozessoren einer Mikroprozessorfamilie kompatiblen Weise ermöglicht.
Diese Aufgabe wird erfindungsgemäß durch eine Identifikationseinrichtung mit den Merkmalen des Anspruchs 1 bzw. ein Verfahren mit den Merkmalen des Anspruchs 6 gelöst.
Die Identifikationseinrichtung kann auf Abruf Informatio­ nen, wie beispielsweise die Familien-, das Modell- und die Stepping-ID des Mikroprozessors zur Verfügung stellen. Die Merkmale direkt anzeigenden Informationen können auch inbegriffen sein. Systemprogrammierer, Anwendungsprogrammierer, Benutzer u. a. können aus der Bereitstellung der Identifikationsinformationen profitieren. Durch die spezielle Identifizierung des Mikroprozessors liefert das Verfahren einen einfachen, zuverlässigen Weg zur Bestimmung der verfügbaren, strukturellen Merkmale. Deshalb können dem speziellen Mikroprozessor zugeordnete Merkmale aktiviert und Programme oder Codefolgen zur Umgehung von Fehlern 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 Mikroprozessoren, in denen es implementiert ist, wird, im Gegensatz zu bisher bekannten Verfahren, ein standardisiertes Verfahren zur Identifikation des Mikroprozessors zur Verfügung gestellt.
Das Identifikationssystem ist besonders nützlich, wenn es in Mikroprozessorfamilien implementiert ist, deren Entwicklung mit der Einführung neuer Modelle und Familien ständig fortschreitet. Das Identifikationsverfahren kann softwaremäßig programmiert werden und ist mit älteren Familien genauso kompatibel wie mit jüngeren Familien, die die Identifikationsschaltung implementieren. Mit 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 einigen der älteren Modelle nachträglich mit der Identifikationsschaltung ausgestattet werden, um die Identifikationsinformationen zur Verfügung zu stellen. Das Identifikationssystem ist bei Mehrmodus-Mikroprozessoren nützlich und kann aus jedem Modus der Mikroprozessoroperation heraus benutzt werden. Das System 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 Identifizierung des Mikroprozessors, einen Decodierer zum Empfang eines ID-Befehls, eine Steuerschaltung zur Ausführung des von dem Decodierer empfangenen ID-Befehls und Mittel zum Lesen der Mikroprozessor-ID-Daten aus den Nur-Lese- Speichermitteln und zum Speichern derselben im Register. Die Identifikationseinrichtung kann auch ein Lese/Schreib- Speicherelement (Flag-Register) mit einem das Vorhandensein der Steuerschaltung anzeigenden 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 Mikroprozessor-ID-Daten umfassen. Alternativ können die Mikroprozessordaten in einem Konstanten-ROM gespeichert sein, der die Daten hält, die von im Mikrobefehlscode-ROM gespeicherten Mikrobefehlscode-Befehlen verwendet werden. Die Mikroprozessor-ID-Informationen werden vorzugsweise in dem Prozessor-ID-Register gespeichert. Das ist ein spezielles Register, das in nachfolgenden Modellen einfacher verändert werden kann, als der Konstanten-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 könnte, wenn die Größe des Prozessor-ID-Registers in zu­ künftigen Mikroprozessoren ausgedehnt würde. Die Datenfelder in den Nur-Lese-Speichermitteln können ein die Mikroprozessorfamilie anzeigendes Familienfeld, ein das Mikroprozessormodell anzeigendes Modellfeld und ein die Mikroprozessor-Fehler oder die Stepping-ID anzeigendes Revisionsfeld umfassen.
In einer spezielleren Ausführungsform weist die Mikropro­ zessoridentifikationseinrichtung einen oder mehrere Universalregister zum Speichern und Lesen von Daten auf, ein Mikroprozessor-ID-Speicherelement mit den Mikroprozessor identifizierenden Datenfeldern, einen Decodierer zum Befehlsempfang, ein Steuermittel zur Ausführung der vom Decodierer empfangenen Befehle, einschließlich eines CPUID- Befehls, ein Lese/Schreib-Speicherelement einschließlich eines den CPUID-Befehl anzeigenden ID-Flags, ein Testprogramm mit einer Befehlsfolge, die das ID-Flag testet und ein Programm zur Lieferung des CPUID-Befehls.
Das 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 diejenigen in der zweiten Gruppe haben einen Mikroprozessor- ID-Befehl. Das Verfahren umfaßt die Ausführung einer Flag- Test-Befehlsfolge, die ein ID-Flag prüft, um festzustellen, ob der Mikroprozessor 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 Mikroprozessor 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-Befehlsfolge anzeigt, daß der ID-Befehl implementiert wurde, dann ist der Mikroprozessor als Mitglied der zweiten Gruppe identifiziert, und das Programm erlaubt die Ausführung des CPUID-Befehls, 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 weitere Universalregister gelöscht, um Speicherraum für zusätzliche ID-Daten zu schaffen.
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önnen alle Versuche zum Test des ID-Flags eine "unzulässige Opcode"-Ausnahme erzeugen. Wenn der Mikroprozessor als ein Mitglied des Basisfamiliensatzes identifiziert ist, dann wird die Test-Flag-Befehlsfolge genauso wie die Ausführung des CPUID-Befehls vermieden. Danach können andere Tests durchgeführt werden, die zur genaueren Identifizierung des Mikroprozessors geeignet sind. Der fortgeschrittene Familiensatz hat eine Bitstelle für das ID-Flag. Wenn der Mikroprozessor als ein Mitglied dieses Satzes identifiziert ist, kann die Test-Flag-Befehlsfolge ausgeführt werden, um zu unterscheiden, ob der Mikroprozessor ein Mitglied der ersten oder der zweiten Gruppe ist, und der CPUID-Befehl wird entsprechend ausgeführt.
Vorteilhafte Weiterbildungen der Erfindung sind in den Unteransprüchen gekennzeichnet.
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 Mikroprozessors einschließlich eines Mikroprozessor-ID-Registers zur Speicherung von Identifikationsinformationen;
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 30, 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 anzeigenden Daten enthä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 Kompatibilitä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 Decodierer 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 beispiel­ 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 Mikroprozesserversion 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-Mikroprozessor 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-Mikroprozessors 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. Programmmäß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

Claims (10)

1. Identifikationseinrichtung in einem Mikroprozessor (10) zur Identifizierung des Mikroprozessors
mit einem Nur-Lese-Speicher (30) zum Speichern von Mi­ kroprozessor-Identifikations(ID)-Daten (31), der Mikro­ prozessoreigenschaften identifizierende Datenfelder (32, 34, 36) enthält;
mit einer Steuereinrichtung (40, 42), die mit dem Nur- Lese-Speicher (30), wenigstens einem Register (20, 22) und einem Decodierer (41) zum Decodieren eines Identifizier(ID)- Befehls (54) gekoppelt ist und eine ID-Befehls- Ausführungseinrichtung (44) aufweist, die beim Decodieren eines ID-Befehls die Mikroprozessor-ID-Daten (31) aus dem Nur-Lese-Speicher (30) liest und in das wenigstens eine Re­ gister (20, 22) speichert,
mit einem Flag-Register (14) mit einem das Vorhandensein der Steuereinrichtung (40) zum Ausführen eines ID-Befehls anzeigenden ID-Flag (18) und
mit einer Testeinrichtung zum Prüfen des ID-Flags.
2. Identifikationseinrichtung nach Anspruch 1, dadurch gekennzeichnet, daß der Nur-Lese-Speicher ein Prozessor-ID- Register (30) umfaßt.
3. Identifikationseinrichtung nach Anspruch 1, dadurch gekennzeichnet, daß die Mikroprozessor-ID-Daten (31) in einem Konstanten-ROM gespeichert sind.
4. Identifikationseinrichtung nach einem der Ansprüche 1 bis 3, dadurch gekennzeichnet, daß die Datenfelder (32, 34, 36) umfassen:
ein Familienfeld (32) zum Speichern von die Familie des Mikroprozessors anzeigenden Daten;
ein Modellfeld (34) zum Speichern von das Modell des Mi­ kroprozessors anzeigenden Daten und
ein Revisionsfeld (36) zum Speichern von die Version (Stepping) des Mikroprozessors anzeigenden Daten.
5. Identifikationseinrichtung nach einem der Ansprüche 1 bis 4, dadurch gekennzeichnet, daß ein Testprogramm (50) zum Anlegen einer Befehlsfolge an den Decodierer (41) und an die Steuereinrichtung (40, 42) vorgesehen ist,
wobei die Befehlsfolge Befehle zum Lesen des Flag-Registers (14) und zum Testen des ID-Flags (18) enthält, um festzustellen, ob in dem Mikroprozessor (10) die ID-Befehls- Ausführungseinrichtung (44) implementiert ist,
wobei das Testprogramm den ID-Befehl (54) an den Decodierer (41) und die Steuereinrichtung (42) anlegt, falls das Testprogramm feststellt, daß in dem Mikroprozessor (10) die ID-Befehls- Ausführungsreinrichtung (44) implementiert ist.
6. Verfahren zum Identifizieren eines Mikroprozessors (10), wobei:
  • a) ein ID-Flag (18) in einem Flag-Register (14) abge­ fragt wird, wobei bei einem gesetzten ID-Flag der Mikropro­ zessor einer ersten Gruppe angehört, deren Mitglieder einen ID-Befehl abarbeiten können, und bei einem nicht gesetzten ID-Flag der Mikroprozessor einer zweiten Gruppe angehört, deren Mitglieder keinen ID-Befehl abarbeiten können,
  • b) wenn im Schritt a) ein gesetztes ID-Flag festge­ stellt wurde, ein ID-Befehl ausgeführt wird, wobei den Mi­ kroprozessortyp anzeigende Mikroprozessor-ID-Daten aus einem ID-Speicher innerhalb des Mikroprozessors gelesen und in ein Mehrzweckregister geschrieben werden, und
  • c) wenn im Schritt a) ein nicht gesetztes ID-Flag fest­ gestellt wurde, die Ausführung eines ID-Befehls vermieden wird.
7. Verfahren nach Anspruch 6, dadurch gekennzeichnet,
daß vor dem Abfragen eines ID-Flags festgestellt wird, ob der Mikroprozessor einer Basisfamilie oder einer fortge­ schritteneren Mikroprozessorfamilie angehört,
wobei die Mit­ glieder der Basisfamilie ein Basis-Flag-Register (14, 16) ohne ID-Flag aufweisen,
wobei die Mitglieder der fort­ geschritteneren Familie ein erweitertes Flag-Register mit einem ID-Flag aufweisen und
wobei die Schritte a) und b) vermieden werden, wenn der Mikroprozessor der Basisfamilie angehört.
8. Verfahren nach Anspruch 6 oder 7, dadurch gekenn­ zeichnet, daß die Mikroprozessor-ID-Daten (31) außerdem ver­ wendet werden, um ein zu dem identifizierten Mikroprozessor gehöriges Merkmal zu aktivieren.
9. Verfahren nach einem der Ansprüche 6 bis 8, dadurch gekennzeichnet,
daß die Mikroprozessor-ID-Daten (31) Versi­ onsinformationen enthalten, die Fehler des Mikroprozessors verzeichnen und
daß die Versionsinformationen (36) zur Im­ plementierung von Umgehungsprogrammen für die Fehler verwen­ det werden.
10. Verfahren nach einem der Ansprüche 6 bis 9, dadurch gekennzeichnet,
daß die Mikroprozessor-ID-Daten ein die Mi­ kroprozessorfamilie kennzeichnendes Familienfeld (32) und ein den Mikroprozessortyp kennzeichnendes Modellfeld (34) umfassen,
daß das Familienfeld und das Modellfeld im Mehrzweckre­ gister (20) geprüft werden und
daß zu der Familie und dem Modell gehörige Merkmale des Mikroprozessors aktiviert werden.
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 DE4329336A1 (de) 1994-03-03
DE4329336C2 true 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)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102006008017A1 (de) * 2006-02-21 2007-08-30 Infineon Technologies Ag Verfahren zum Herstellen und Verfahren zum Betreiben eines integrierten Halbleiterspeichers

Families Citing this family (140)

* 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
DE60029290T2 (de) * 1999-04-27 2007-07-12 Seiko Epson Corp. Integrierte schaltung
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
US6792529B1 (en) * 2000-04-11 2004-09-14 Microsoft Corporation Common feature mode for microprocessors in a multiple microprocessor system
US7249247B2 (en) * 2000-04-11 2007-07-24 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
US8160864B1 (en) 2000-10-26 2012-04-17 Cypress Semiconductor Corporation In-circuit emulator and pod synchronized boot
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
US7765095B1 (en) 2000-10-26 2010-07-27 Cypress Semiconductor Corporation Conditional branching in an in-circuit emulation system
US8103496B1 (en) 2000-10-26 2012-01-24 Cypress Semicondutor Corporation Breakpoint control in an in-circuit emulation system
US6724220B1 (en) 2000-10-26 2004-04-20 Cyress Semiconductor Corporation Programmable microcontroller architecture (mixed analog/digital)
GB2368669B (en) 2000-10-31 2005-06-22 Advanced Risc Mach Ltd 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
US9474968B2 (en) 2002-07-27 2016-10-25 Sony Interactive Entertainment America Llc Method and system for applying gearing effects to visual tracking
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
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
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
US9393487B2 (en) 2002-07-27 2016-07-19 Sony Interactive Entertainment Inc. Method for mapping movements of a hand-held controller to game commands
US8686939B2 (en) 2002-07-27 2014-04-01 Sony Computer Entertainment Inc. System, method, and apparatus for three-dimensional input control
US7760248B2 (en) 2002-07-27 2010-07-20 Sony Computer Entertainment Inc. Selective sound source listening in conjunction with computer interactive processing
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
US10279254B2 (en) 2005-10-26 2019-05-07 Sony Interactive Entertainment Inc. Controller having visually trackable object for interfacing with a gaming system
US8287373B2 (en) * 2008-12-05 2012-10-16 Sony Computer Entertainment Inc. Control device for communicating visual information
US9573056B2 (en) 2005-10-26 2017-02-21 Sony Interactive Entertainment Inc. Expandable control device via hardware attachment
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
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
JP2008518300A (ja) * 2004-10-25 2008-05-29 ローベルト ボッシュ ゲゼルシャフト ミット ベシュレンクテル ハフツング 少なくとも2つの実行ユニットを備えるコンピュータシステムにおけるプログラムコードの処理分割方法および装置
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
US20090285280A1 (en) * 2005-11-29 2009-11-19 Thomas Patrick Newberry Method and Apparatus for Securing Digital Content
US8085067B1 (en) 2005-12-21 2011-12-27 Cypress Semiconductor Corporation Differential-to-single ended signal converter circuit and method
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
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
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
US8130025B2 (en) 2007-04-17 2012-03-06 Cypress Semiconductor Corporation Numerical band gap
US8065653B1 (en) 2007-04-25 2011-11-22 Cypress Semiconductor Corporation Configuration of programmable IC design elements
US9720805B1 (en) 2007-04-25 2017-08-01 Cypress Semiconductor Corporation System and method for controlling a target device
US8266575B1 (en) 2007-04-25 2012-09-11 Cypress Semiconductor Corporation Systems and methods for dynamically reconfiguring a programmable system on a chip
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
US8840470B2 (en) 2008-02-27 2014-09-23 Sony Computer Entertainment America Llc Methods for capturing depth data of a scene and applying computer actions
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
CN108885552B (zh) * 2016-01-22 2023-03-14 索尼互动娱乐股份有限公司 用于向后兼容性的欺骗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
WO1991019244A1 (en) * 1990-06-04 1991-12-12 3Com Corporation Method for optimizing software for any one of a plurality of variant architectures
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

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102006008017A1 (de) * 2006-02-21 2007-08-30 Infineon Technologies Ag Verfahren zum Herstellen und Verfahren zum Betreiben eines integrierten Halbleiterspeichers

Also Published As

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

Similar Documents

Publication Publication Date Title
DE4329336C2 (de) Einrichtung und Verfahren zur Identifizierung eines Computer-Mikroprozessors
DE19882696B4 (de) Speichertransaktionen auf einem Bus geringer Leitungsanzahl
DE69627814T2 (de) System zum bereitstellen eines bios für den hauptrechner
DE4313594C2 (de) Mikroprozessor
DE2714805C2 (de)
DE60100848T2 (de) Virtuelles rom für geräte-aufzählung
DE112010004963T5 (de) Synchronisieren von SIMD Vektoren
DE4026911A1 (de) Computersystem
DE112009000344T5 (de) Zugriffsrechte auf eine Speicher-Map
EP0104635A2 (de) Verfahren und Anordnung zum Prüfen eines digitalen Rechners
EP0500973B1 (de) EEPROM und Verfahren zum Ändern einer Initialisierungsroutine im EEPROM
DE69732793T2 (de) Acht-bit-mikrokontroller mit risc-architektur
DE112005003216T5 (de) System und Verfahren für Steuerregister, auf die über private Rechenoperationen zugegriffen wird
DE4434529A1 (de) Verfahren zum Verarbeiten eines Befehls mit Einsatzbedingung und Vorrichtung dazu
DE19652290C2 (de) Mikrocomputer
DE4238099C2 (de) Mikroprozessor mit mehreren Betriebsmoden
DE2702722C2 (de) Einrichtung zur Verarbeitung nicht direkt ausführbarer Instruktionen
DE3323824A1 (de) Speicherprogrammierbare steuerung
DE3700800C2 (de) Einrichtung zur Erzeugung eines Unterbrechungspunktes in einem Mikroprozessor
DE19940611B4 (de) Verfahren zum Erzeugen von Testergebnissen während einer Selbstprüfung, Verfahren zum Signalisieren einer erfolgreichen Beendigung der Selbstprüfung und Verarbeitungssystem mit der Fähigkeit zur Selbstprüfung
DE3138989A1 (de) Zusaetzliche funktionseinheit in einem mikroprozessor, mikroprozessorsystem und verfahren zu seinem betrieb
DE69626282T2 (de) Programmierbare vorrichtung und verfahren zum befehlsauffang
DE19580638B4 (de) Computersystem und Verfahren zum Steuern eines Peripheriegeräts in einem Computersystem
DE69725808T2 (de) Mikrorechner mit Selbstprüfungseinheit
EP0273070B1 (de) Einrichtung und Verfahren zur Erweiterung des Befehlssatzes und der Funktionen eines Rechners

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