DE4010733C2 - Microprocessor with means for detecting misaligned data calls - Google Patents

Microprocessor with means for detecting misaligned data calls

Info

Publication number
DE4010733C2
DE4010733C2 DE19904010733 DE4010733A DE4010733C2 DE 4010733 C2 DE4010733 C2 DE 4010733C2 DE 19904010733 DE19904010733 DE 19904010733 DE 4010733 A DE4010733 A DE 4010733A DE 4010733 C2 DE4010733 C2 DE 4010733C2
Authority
DE
Germany
Prior art keywords
level
microprocessor
mode bit
bit
data
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
DE19904010733
Other languages
German (de)
Other versions
DE4010733A1 (en
Inventor
John J Crawford
Ashish B Dixit
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
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE4010733A1 publication Critical patent/DE4010733A1/en
Application granted granted Critical
Publication of DE4010733C2 publication Critical patent/DE4010733C2/en
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0763Error or fault detection not based on redundancy by bit configuration check, e.g. of formats or tags
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/073Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3648Software debugging using additional hardware

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)
  • Debugging And Monitoring (AREA)

Description

Die Erfindung betrifft einen Mikroprozessor nach dem Oberbegriff des Anspruchs 1.The invention relates to a microprocessor according to the preamble of claim 1.

Ein Mikroprozessor der genannten Art ist beispielsweise der Mikroprozessor 80486 der Firma Intel, der eine Weiterentwicklung bzw. Verbesserung des Intel-Mikroprozessors 80386 darstellt.A microprocessor of the type mentioned is, for example, the Microprocessor 80486 of the company Intel, which is an advancement or improvement of the Intel microprocessor 80386 represents.

Der 80486-Mikroprozessor ist ein 32-Bit-Hochleistungsprozessor aus der Prozessorfamilie x86. Er ist Objektcode-kompatibel mit dem 80386-Prozessor. Als Folge davon kann er Codes verarbeiten, die für die vorhergehenden Mitglieder dieser Familie entwickelt worden sind. Generell handelt es sich um eine Neuimplementierung der 80386-Architektur mit dem Ziel einer Verbesserung um wenigstsens die 2,5fache Leistung, gemessen durch die mittlere Anzahl von Takten pro Befehl. Die Erfindung stellt ein solches Baumerkmal des 80486-Mikroprozessors dar, das zur Leistungsverbesserung beiträgt.The 80486 microprocessor is a 32-bit high-performance processor from the processor family x86. It is object code compatible with the 80386 processor. As a result, he can process codes, for the previous members of this family have been developed. Generally it is a new implementation the 80386 architecture for the purpose of improvement at least 2.5 times the power measured by the average number of clocks per command. The invention ceases Such a feature of the 80486 microprocessor is to improve performance contributes.

Beim Zugreifen auf den mit dem Mikroprozessor gekoppelten Speicher wird ein bestimmter, eine Dateneinheit speichernder Speicherplatz adressiert. Vereinbarungsgemäß gilt eine Adresse einer Dateneinheit als ausgerichtet, wenn sie ein Vielfaches der Länge der Dateneinheit ist. Eine Ein-Byte-Dateneinheit ist stets ausgerichtet (aligned). Eine Zwei-Byte-Dateneinheit ist ausgerichtet, wenn ihre Adresse ein Vielfaches von zwei ist. Eine Vier-Byte-Dateneinheit ist ausgerichtet, wenn ihre Adresse ein Vielfaches von vier ist usw. Daten sind daher generell ausgerichtet, wenn die Adresse ein Vielfaches ihrer Größe ist. Zugriffe auf Adressen, die nicht mit dem Beginn der Dateneinheiten übereinstimmen, werden als fehlausgerichtet bezeichnet. When accessing the one coupled to the microprocessor Memory becomes a specific one storing a data unit Memory address addressed. By convention, an address applies a data unit as aligned if it is a multiple the length of the data unit. A one-byte data unit is always aligned. A two-byte data unit is aligned if their address is a multiple of two. A four-byte data unit is aligned if its address is a multiple of four, etc. So data is general aligned if the address is a multiple of their size. Accesses to addresses that do not coincide with the beginning of the data units match, are called misaligned.  

Die Bedeutung von ausgerichteten (aligned) Speicherzugriffen wird noch deutlicher, wenn man die interne Speicherarchitektur eines Mikroprozessors berücksichtigt. In den meisten Computern ist der Speicher derart organisiert, daß die Datengröße gleich der Speicherbreite ist. Wenn man einen Speicher mit 32 Bits organisiert, bedeutet dies, daß man innerhalb eines Speichertaktzyklus' auf eine 32-Bit-Einheit zugreifen kann, deren Adresse ein Vielfaches von vier ist. (Ein 32-Bit-Wort wird häufig als Doppel- oder D-Wort bezeichnet, wobei ein D-Wort aus vier getrennten Bytes, z. B. 0, 1, 2 und 3 besteht). Sowohl die 80386- als auch 80486-CPU's ermöglichen den Zugriff auf Daten an beliebigen Adressen. Wenn der Zugriff nicht ausgerichtet ist, so erleidet der Mikroprozessor eine Leistungsminderung, die sich dadurch äußert, daß zusätzliche Speicherzyklen für den Zugriff oder den Aufruf der Daten benötigt werden.The meaning of aligned memory accesses becomes even clearer when looking at the internal memory architecture a microprocessor. In most Computers, the memory is organized so that the data size is equal to the memory width. If you have a memory Organized with 32 bits, this means that you are within one Memory clock cycle 'can access a 32-bit unit whose Address is a multiple of four. (A 32-bit word will often referred to as a double or D word, with a D word off four separate bytes, e.g. B. 0, 1, 2 and 3). Both the 80386 and 80486 CPUs provide access to data at any addresses. If the access is not aligned is, the microprocessor suffers a performance degradation, which manifests itself in that additional memory cycles for the Access or the call of the data are needed.

Es sei der Fall eines Speicherzugriffs auf ein 32-Bit-D- Wort, beginnend an der Adresse 3, betrachtet. Bei früheren Konzeptionen rief der Prozessor 2 D-Worte auf; zunächst das D-Wort mit Beginn an der Adresse 0 zum Extrahieren von Byte 3, danach das D-Wort mit Beginn an der Adresse 4 zum Extrahieren der restlichen Bytes 4, 5 und 6. Nach dem Zugriff auf die benötigten Bytes setzt der Prozessor sie irgendwie zusammen, um die Dateneinheit oder den Speicheraufruf zu rekonstruieren. Daher erleiden bekannte Lösungswege wenigstens zwei Strafen: (1) Die Notwendigkeit wenigstens zweier zusätzlicher Speicherzyklen; und (2) eine Rekonstruktion oder "Zusammensetzung" der Daten­ einheit an einem neuen Speicherplatz.It is the case of a memory access to a 32-bit D Word, starting at the address 3, considered. In earlier conceptions the processor called 2 D-words; first the D word starting at address 0 to extract byte 3, then the D word starting at the address 4 to extract the remaining bytes 4, 5 and 6. After accessing the required Bytes, the processor somehow puts them together around the To reconstruct the data unit or memory call. Therefore known solutions suffer at least two penalties: (1) The The need for at least two additional memory cycles; and (2) a reconstruction or "composition" of the data unit at a new storage location.

Um diesen Mangel zu vermeiden, wurden einige alternative Lösungswege beschritten. So können im 80386-Prozessor Ausrichtprüfungen, beispielsweise durch Einsetzen eines In-line-Codes einleitend zu jedem Speicherzugriff durchgeführt werden. Dieser Code erzeugt eine Adresse in einem Register und blendet dann die unteren Bits des Registers aus. Die Maskieroperation wird dadurch implementiert, daß man dieselben Registerkomponenten nimmt und eine Ausrichtverschiebung addiert. Grundsätzlich muß bei Verwendung dieses Lösungswegs eine Folge von drei separaten Befehlen einleitend zu jedem Speicherzugriff ausgeführt werden. Da die Hälfte der Befehle eines typischen Programms in irgendeiner Weise auf den Speicher zugreift, stellt dies einen inakzeptablen Mehraufwand dar. Es verschlechtert sich die Leistung um 20 bis 30%.To avoid this shortcoming, some have become alternative Proposed solutions. So can in the 80386 processor Alignment tests, for example by inserting an in-line code Initially, each memory access is performed. This Code generates an address in a register and then hides the lower bits of the register. The masking operation becomes implemented by having the same register components  takes and adds an alignment shift. Basically must using this approach a series of three separate Instructions are executed preliminarily to each memory access. Since half of the commands of a typical program in any Accessing the memory, this represents an unacceptable Extra effort. It deteriorates the performance by 20 to 30%.

Einige Maschinen bedingen die Ausrichtung aller Speicherzugriffe bzw. -adressierungen. Dies gilt insbesondere für die neuen RISC-Prozessoren. Diese Maschinen gehen stets in einen Fehlerzustand beim Zugriff auf fehlausgerichtete Daten. Diese Fehlerzustände sind selektierbar, so daß Fehlerzustände invariabel erzeugt werden. Dies stellt ein Problem dar, da viele der nicht künstlichen Intelligenz angehörende Umgebungen (insbesondere COBOL) aus der Befähigung Nutzen ziehen, auf fehlausgerichtete Daten zuzugreifen. Eine andere Maschinenkategorie ermöglicht fehlausgerichtete Zugriffe (misaligned references), jedoch mit der zuvor erwähnten Leistungsminderung. Diese Maschinen umfassen den Intel 80386, Digital's VAX und die IBM 370.Some machines require the alignment of all memory accesses or addresses. This is especially true for the new RISC processors. These machines always go in one Error condition when accessing misaligned data. These Error states are selectable so that error states become invariable be generated. This is a problem, as many non-artificial intelligence environments (in particular COBOL) benefit from the ability to focus on misdirected Access data. Another machine category allows misaligned references, but with the aforementioned reduction in performance. These machines include the Intel 80386, Digital's VAX and the IBM 370th

Aufgabe der Erfindung ist es, einen Mikroprozessor der o. g. Art zur Verfügung zu stellen, dessen Leistungsfähigkeit bei Speicherzugriffen erhöht und der bei fehlausgerichteten Zugriffen ein auf den Fehlzugriff hinweisendes Fehlersignal erzeugen kann.The object of the invention is a microprocessor o. G. To provide type, its efficiency at Memory access increases and that of misaligned accesses generate an error signal indicative of the miss can.

Diese Aufgabe wird erfindungsgemäß durch einen Mikroprozessor mit den Merkmalen des Anspruchs 1 gelöst.This object is achieved by a microprocessor solved with the features of claim 1.

Der erfindungsgemäße Mikroprozessor enthält Mittel zum Feststellen von Zugriffen auf fehlausgerichtete Daten. Die Bestimmungsmittel sind derart selektierbar, daß bei Aktivierung der Bestimmungsmittel und Zugriff auf ein fehlausgerichtetes Datenobjekt ein Fehlersignal erzeugt wird, das die Ausführung des laufenden Programms unterbricht. Die Bestimmungs- bzw. Detektormittel sind Bestandteil der Segmentierungseinheit des beschriebenen Mikroprozessors. Bei einem bevorzugten Ausführungsbeispiel verfügt der Mikroprozessor auch über einen Schutzmechanismus, der Zugriff auf gewisse Datenobjekte auf verschiedenen Privilegierungsniveaus gewährt.The microprocessor according to the invention contains means for Determine access to misaligned data. The determining means are selectable such that when activated the determining means and access to a misaligned Data object, an error signal is generated, which is the execution of the current program. The determination or detection means are part of the segmentation unit of the described  Microprocessor. In a preferred embodiment the microprocessor also has a protection mechanism, the access to certain data objects on different Granted privilege levels.

Die Erfindung stellt ein Mittel zur Ausrichtprüfung zur Verfügung, das vom Benutzer selektierbar ist und keiner zusätzlichen Befehle bedarf. Die Erfindung unterstützt zwei Maskierniveaus für den Ausrichtprüfvorgang: Eines auf dem Anwendungsniveau und das andere auf dem Betriebssystemniveau. Mit der Fähigkeit zur Maskierung des Trap oder des Fehlerzustandes selbst gibt die Erfindung dem Anwender zwei Möglichkeiten zur Steuerung der Ausrichtprüfung.The invention provides a means for alignment testing Available, which is selectable by the user and no additional Commands needed. The invention supports two levels of masking for the alignment check: one on the application level and the other at the operating system level. With the ability for masking the trap or the error state itself The invention gives the user two options for control the alignment test.

Die Bestimmungsmittel umfassen zwei Modusbits, die im Mikroprozessor gespeichert sind. Das erste Modusbit stellt eine Maskierung des Fehlersignals auf den Ausführungsniveaus mit dem niedrigsten Privileg (d. h. dem Anwenderniveau) zur Verfügung, während das zweite Modusbit eine Maskierung des Fehlersignals auf dem am höchsten privilegierten Niveau (d. h. dem Betriebsniveau) schafft. Daher ist der Zugriff auf die Modus- oder Maskierbits auf zwei unterschiedlichen Niveaus vorgesehen. Beide Modusbits müssen auf "1" gesetzt werden, um die Detektormittel zu aktivieren. Die Verwendung der Modusbits zur optionellen Aktivierung der Ausrichtprüfung ergibt die optimale Programmierflexibilität.The determining means comprise two mode bits which are in the microprocessor are stored. The first mode bit sets a Masking of the error signal at the execution levels with the lowest privilege (ie the user level), while the second mode bit masking the error signal at the highest privileged level (ie the operating level) creates. Therefore, access is to the mode or mask bits provided at two different levels. Both Mode bits must be set to "1" to the detector means to activate. The use of the mode bits for optional activation the alignment check gives the optimal programming flexibility.

Mit Hilfe der Erfindung werden auch Ausrichtfehlersignale in einigen Programmen künstlicher Intelligenz (AI) zur Verfügung gestellt, welche Adreßbits niedrigerer Ordnung zum Identifizieren von Zeigertypen und danach geringe Verschiebungen zum "Auskorrigieren" dieser Kennzeichenbits und zur Herstellung einer ausgerichteten Adresse benutzen. Die Erfindung stellt eine Prüfung der Zeigerart ohne wesentliche Leistungsverringerung zur Verfügung. Experimentelle Messungen zeigen, daß die Erfindung einen 30%igen Leistungsstoß auf durchschnittliche AI-Programme realisiert, die auf dem 80386-Mikroprozessor laufen. With the help of the invention also alignment error signals in some artificial intelligence (AI) programs which have lower order address bits to identify of pointer types and then minor shifts to "Auskorrigieren" of these flag bits and for producing a use aligned address. The invention provides a Checking the pointer type without significant performance reduction to disposal. Experimental measurements show that the invention a 30% power boost on average AI programs realized running on the 80386 microprocessor.  

Weitere Studien haben einen 20%igen Zuwachs gegenüber anderen Maschinen gezeigt.Further studies have a 20% increase over other machines shown.

Vorteilhafte Weiterbildungen der Erfindung sind in den Unteransprüchen gekennzeichnet.Advantageous developments of the invention are in the dependent claims characterized.

Im folgenden wird die Erfindung anhand eines in der Zeichnung schematisch dargestellten Ausführungsbeispiels näher erläutert. In der Zeichnung zeigtIn the following the invention with reference to a in the drawing explained embodiment illustrated schematically. In the drawing shows

Fig. 1 die durch den beschriebenen Mikroprozessor ge­ bildeten vier Privilegierungsniveaus, wobei das sicherste Niveau als Niveau 0 und das am wenig­ sten sichere Niveau als Niveau 3 gezeigt ist; Figure 1 illustrates the four levels of privilege formed by the described microprocessor, with the safest level shown as level 0 and the least secure level as level 3;

Fig. 2 die im beschriebenen Mikroprozessor angeordneten EFLAGS-Register, die jeweils ein in den oberen 16 Bits definiertes Extrabit (das AC-Bit) als Fehlerträger bei Zugriff auf fehlausgerichtete Daten im Privilegierungsniveau 3 haben; Fig. 2 shows the EFLAGS registers arranged in the described microprocessor, each having an extra bit (the AC bit) defined in the upper 16 bits as the error carrier for accessing misaligned data in the privilege level 3;

Fig. 3 das Maschinenzustandssteuerregister (CR0), das ein Ausrichtmaskierbit (AM) aufweist, welches kontrolliert, ob das AC-Bit in EFLAGS einen Ausrichtfehler zulassen kann oder nicht; Fig. 3 shows the machine state control register (CR0) having an alignment mask bit (AM) which controls whether or not the AC bit in EFLAGS can allow an alignment error;

Fig. 4 ein allgemeines Blockschaltbild des bevorzugten Ausführungsbeispiels des Mikroprozessors; Fig. 4 is a general block diagram of the preferred embodiment of the microprocessor;

Fig. 5 ein Schaltbild der logischen Implementierung der Ausrichtprüfung bei dem beschriebenen Ausfüh­ rungsbeispiel der Erfindung. Fig. 5 is a circuit diagram of the logical implementation of the alignment test in the described Ausfüh tion of the invention.

Der beschriebene Mikroprozessor weist eine Einrichtung auf, die bestimmt, ob ein Fehlerzustand erzeugt werden soll, wenn ein fehlausge­ richteter Speicherzugriff festgestellt wird. In der folgenden Beschreibung werden zahlreiche besondere Einzelheiten, bei­ spielsweise spezielle Bitlängen, Registerinhalte, Logikschalt­ bilder usw. angegeben, um das Verständnis für die vorliegende Erfindung zu vertiefen. Es ist jedoch einem Fachmann klar, daß diese speziellen Einzelheiten für das Wesen der Erfindung nicht entscheidend sind. In anderen Fällen sind bekannte Strukturen und Schaltungen nicht im einzelnen angegeben, um die Beschreibung der vorliegenden Erfindung nicht unnötig zu belasten.The described microprocessor has a device, which determines whether an error condition is to be generated when an error occurs directed memory access is detected. In the following The description will be accompanied by numerous special details For example special bit lengths, register contents, logic switching images, etc., given to the understanding of the present To deepen the invention. However, it is clear to a person skilled in the art that these specific details for the essence of the invention are not crucial. In other cases are known Structures and circuits are not specified in detail the description of the present invention is not unnecessary strain.

Es erscheint zweckmäßig, vor der genauen Beschreibung des Ausführungsbeispiels zunächst einige Architektur-Merkmale des 80 486-Mikroprozessors zu erläutern.It seems appropriate, before the detailed description of Embodiment first, some architectural features of the To explain 80 486 microprocessor.

Prinzipielle Mikroprozessor-ArchitekturBasic microprocessor architecture

Da die Bedeutung von Computern in der Gesellschaft laufend wächst, werden zunehmend mehr Mikroprozessoren mit einem ge­ schützten virtuellen Adreßmodus (geschützter Modus) implemen­ tiert. Der im 80 486-Mikroprozessor eingebaute geschützte Modus gestattet den gleichzeitigen Ablauf mehrerer Anwendungen, isoliert sie jedoch voneinander, so daß Störungen in einer Anwendung eine andere Anwendung nicht beeinflussen. Das zentrale Merkmal eines Schutzmechanismus' ist der Selektor. Statt eines direkten Zugriffs auf irgendeinen Teil des Systems arbeitet ein Programm mit einem Selektor zusammen, der Zugriff auf ein Systemobjekt gewährt. Jedem Objekt zugeordnet sind Informationen, beispielsweise die Objektlage, die Größe, Be­ schränkungen bezüglich der Verwendung usw. Im 80 486-Mikropro­ zessor hat nur das Betriebssystem Zugriff auf die vom Selektor bezeichneten Daten, welche Deskriptor genannt werden.As the importance of computers in society is ongoing is growing, more and more microprocessors with a ge Protected virtual address mode (protected mode) implemen advantage. The protected built-in 80 486 microprocessor Mode allows simultaneous execution of multiple applications, However, they isolated from each other, so that interference in one application does not affect another application. The central feature of a protection mechanism is the selector. Instead of direct access to any part of the system  a program works together with a selector to access granted to a system object. Are assigned to each object Information, such as the object position, the size, Be restrictions on use, etc. In the 80 486 micropro Only the operating system has access to the selector designated data, which are called descriptor.

Deskriptoren beschreiben ein Systemobjekt im einzelnen. Spei­ chersegmente sind eine Art von Systemobjekten. Andere Systemobjekte umfassen Tabellen als Träger des Schutzmechanis­ mus', spezielle Segmente, welche den Prozessorzustand spei­ chern usw. Durch Prüfung des Selektors stellt die Hardware fest, welcher Deskriptor dem Selektor und dem Objekt, auf das der Deskriptor hinweist, zugeordnet ist. Ein Merkmal welches der Deskriptor bezeichnet, ist das Privilegniveau des Objekts. Wenn ein Programm mit dem Selektor Zugriff auf ein Objekt verlangt, wird der Zugriff entweder versagt (wenn die Anforde­ rung eine Regel des Schutzmechanismus' verletzt, läuft die Steuerung von dem Programm zu einer bezeichneten Routine in dem Betriebssystem), wird Zugriff gestattet, jedoch nicht gewährt (z. B. wenn das Objekt sich derzeit nicht im Speicher befindet, muß eine Betriebssystemroutine das Objekt in den Speicher überführen und die Steuerung an das Programm zurück­ geben) oder der Zugriff wird auf dem verlangten Privilegniveau gewährt.Descriptors describe a system object in detail. Spei chersegmente are a type of system objects. Other System objects include tables as carriers of the protection mechanism mus', special segments that store the processor state etc. By checking the selector puts the hardware which descriptor is the selector and the object to which the descriptor indicates is assigned. A feature which the descriptor is the privilege level of the object. When a program uses the selector to access an object required, access is either denied (if the request If a rule of the protection mechanism is violated, the Control from the program to a designated routine in the operating system), access is allowed but not granted (for example, if the object is currently not in memory an operating system routine must place the object in the Transfer memory and return control to the program enter) or the access will be at the requested privilege level granted.

Der 80 486-Prozessor unterstützt vier Niveaus zunehmender Privile­ gierung, die mit 3, 2, 1 und 0 entsprechend der Darstellung in Fig. 1 numeriert sind. Privilegniveau 0 ist das am höchsten privilegierte Niveau. Das Privilegniveau des Selektors im Codesegment (CS)-Register identifiziert die Vorrangigkeit der gerade ablaufenden Routine und wird das aktuelle Privilegni­ veau (CPL) genannt. Aus Zuverlässigkeitsgründen läuft nur der vertraulichste Code im Betriebssystem auf dem am höchsten privilegierten Niveau (CPL=0). Anwendungen, die versagen kön­ nen, werden auf dem niedrigsten Niveau betrieben (CPL=3). Verschiedene Privilegniveaus sind als Folge von konzentrischen Ringen in Fig. 1 gezeigt. (Das Wort "Privileg" bezeichnet Rechte oder Vorteile, die normalerweise nicht gewährt werden. Im 80 486-Mikroprozessor können Prozesse, die auf den inner­ sten Ringen betrieben werden, auf Datenobjekte in den äußeren Ringen zugreifen, während Außenringprozesse nicht auf die Innenringobjekte mit höheren Privilegniveaus zugreifen kön­ nen).The 80486 processor supports four levels of increasing privilege, numbered 3, 2, 1, and 0 as shown in FIG . Privilege level 0 is the highest privileged level. The privilege level of the selector in the code segment (CS) register identifies the precedence of the currently executing routine and is called the current privilege level (CPL). For reasons of reliability, only the most confidential code in the operating system runs at the highest privileged level (CPL = 0). Applications that can fail are operated at the lowest level (CPL = 3). Various levels of privilege are shown as a result of concentric rings in FIG . (The word "privilege" denotes rights or benefits that are not normally granted.) In the 80486 microprocessor, processes that operate on the inner rings can access data objects in the outer rings, while outer ring processes do not access the inner ring objects with higher ones Access privilege levels).

Wie weiter unten noch genauer erläutert wird, ermöglicht die Erfindung die Maskierung des Ausricht-Prüfmerkmals sowohl auf dem Anwendungsniveau (z. B. CPL-3) als auch auf dem Betriebssy­ stemniveau (z. B. CPL-0). Diese Selektierbarkeit der Maskierung auf zwei unterschiedlichen Privilegierungsniveaus macht die vorliegende Erfindung kompatibel auch mit solchen Maschinen, die auf einen fehlausgerichteten Zugriff entweder immer anspre­ chen oder niemals ansprechen. So kann beispielsweise auf dem Betriebssystemniveau das Ausricht-Prüfmerkmal beim Reset ent­ aktiviert werden, wodurch es kompatibel gemacht wird mit dem 80 386-Mikroprozessor.As will be explained in more detail below, allows the Invention the masking of the alignment test feature both the application level (eg CPL-3) as well as on the operating system stem level (eg CPL-0). This selectability of masking on two different privilege levels makes the present invention also compatible with such machines, which always encourages misaligned access or never respond. For example, on the Operating system level the alignment check feature at reset ent be enabled, making it compatible with the 80 386 microprocessor.

In einigen Programmiersprachen, beispielsweise C oder Pascal, wird der Selektor mit dem Datentyp endgültig gekennzeichnet, wenn der Datentyp zum Kompilierzeitpunkt deklariert wird. Mit anderen Worten, der Datentyp ändert sich nicht, wenn das Programm ausgeführt wird. In einigen AI-Sprachen, beispiels­ weise LISP oder Prolog, wird Flexibilität in Lauf/Zeit-Typ-Zu­ weisungen einbezogen. In diesen Sprachen kann sich der Daten­ typ während der Ausführung des Programms ändern. Dies ermög­ licht es dem Benutzer, eine Funktion zu definieren, die mit mehreren Typen arbeitet (z. B. , wobei x entweder eine ganze Zahl, eine kurze Realgröße, eine lange Realgröße, eine komplexe Größe usw. ist). Daher können je nach Datentyp an einem besonderen Punkt im Programm mehrere Funktionen durchge­ führt werden.In some programming languages, such as C or Pascal, the selector is finally marked with the data type, if the data type is declared at compile time. In other words, the data type does not change if that Program is executed. In some AI languages, for example As a LISP or Prolog, flexibility in run / time-type is added included. In these languages may be the data type during the execution of the program. This made possible It allows the user to define a function with works several types (eg, where x is either a whole number, a short real size, a long real size, one  complex size, etc.). Therefore, depending on the data type a special item in the program has several functions be led.

In LISP oder Prolog-Programmen zeigt das Zeigerfeld sowohl die Adresse als auch den Typ der Daten an. Das Merkmal, welches den Datentyp identifiziert, wird "Identifizierungskennzeichen" oder "Tag" genannt. Der Programmierer verwendet die unteren beiden Bits eines 32-Bit-Zeigers als die am höchsten bewerte­ ten Identifizierungskennzeichenbits. In den Fällen, in denen der Datentyp von einer bestimmten Art sein muß oder die Operation ungültig ist, oder in den Fällen, in denen der Pro­ grammierer einen bestimmten Datentyp mit überwiegender Häufigkeit erwartet, kann der Benutzer einen Code erzeugen, der unter­ stellt, daß das Identifizierungskennzeichen ein vorgegebener Wert ist. Dieser Code beseitigt die niedrigeren Identifizie­ rungskennzeichenbits. Wenn beispielsweise das Identifizie­ rungskennzeichen einen Wert von 2 hat, so würde der Code einen Wert von -2 zum Auslöschen der Identifizierungskennzeichenbits addieren. Dieses Offset oder Auslöschen ist als "Verschiebung" bekannt. Wenn die Verschiebung richtig ist, so ist diese Spei­ chereinheit ausgerichtet, und die Daten können ohne Fehlerzustand oder trap aufgerufen werden.In LISP or Prolog programs, the pointer field displays both the Address as well as the type of data. The feature which identifies the data type, becomes "tag" or "day". The programmer uses the lower ones both bits of a 32-bit pointer are rated as the highest ten identification tag bits. In cases where the data type must be of a certain type or the Operation is invalid, or in cases where the Pro programmer a particular type of data with overwhelming frequency expected, the user can generate a code under represents that the identifier is a given Is worth. This code eliminates the lower identifier rungskennzeichenbits. For example, if the ident If the code has a value of 2, the code would have a Value of -2 to clear the tag flags add. This offset or erase is called "displacement" known. If the shift is correct, then this is Spei aligned, and the data can without error condition or trap are called.

Beim Ausführen von AI-Programmen unter Verwendung der vorlie­ genden Erfindung sind Speicherzugriffe so lange ausgerichtet, wie die Verschiebung mit dem Identifizierungskennzeichen über­ einstimmen. Wenn die Verschiebung jedoch mit dem Tag nicht übereinstimmt, erzeugt der Ausrichtprüfer nach der vorliegen­ den Erfindung optionell ein trap oder Fehlersignal. Ist dies der Fall, werden der derzeitige Ausführungsplatz (CS : EIP) und der Inhalt der Flagregister (EFLAGS) auf dem Stapelspeicher gesichert und die Steuerungen gehen zu einer Softwareroutine, über die als Interrupthandler bekannt ist. Eine spezielle Unter­ brechungsnummer wird jeder Fehlerbedingung zugeordnet. Der Befehlszeiger, der nach Auftreten eines Fehlers auf dem Stapelspeicher gesichert wird, weist auf den Befehl hin, der die Fehlerbedingung ver­ ursachte. Das Betriebssystem kann daher die Bedingung korri­ gieren und die Ausführung des Befehls wieder aufnehmen.When running AI programs using the present memory accesses are aligned so long, like the move with the tag over the mood. However, if the shift does not coincide with the day matches, generates the alignment tester after the present the invention optionally a trap or error signal. Is this the Case, the current execution venue (CS: EIP) and the Contents of the flag registers (EFLAGS) are saved on the stack and the controls go to a software routine, over which as Interrupthandler is known. A special sub  refraction number is assigned to each error condition. The Instruction pointer after the occurrence of an error on the stack is backed up, indicates the command that verifies the error condition ursachte. The operating system can therefore correct the condition and restart the execution of the command.

Gesamtblockschaltbild des MikroprozessorsOverall block diagram of the microprocessor

Im folgenden wird auf Fig. 4 Bezug genommen, in welchem der neue Mikroprozessor mit der bevorzugten Ausführungsform zur Implementierung des Ausricht-Prüfmerkmals als Blockschaltbild gezeigt ist. Der Mikroprozessor weist eine Bus-Interface-Ein­ heit 10 auf, die mit einem externen 32-Bit-Datenbus 30 und zusätzlich mit einem Adreßbus 31 und einigen anderen Steuer­ leitungen gekoppelt ist. Die Bus-Interface-Einheit 10 verar­ beitet nur physikalische (hardware) Adressen, so daß Operan­ denadressen zunächst eine Segmentierungseinheit 14 und eine Seitenbildungseinheit 13 durchlaufen müssen. Ebenfalls mit der Bus-Interface-Einheit 10 gekoppelt sind eine Cache-Einheit 12 und ein Vor-Heranholer 11. Die Vor-Heranholereinheit 11 fordert die Bus-Interface-Einheit ständig auf, den Speicherinhalt der nächsten Befehlsadresse heranzuholen. Sobald die Vor-Heranholeinheit die Daten erhält, führt sie diese in die Warteschlange ein und fordert ein anderes 32-Bit-Stück des Speichers an, wenn die Warteschlange nicht voll ist.Referring now to Figure 4, the new microprocessor having the preferred embodiment for implementing the alignment check feature is shown as a block diagram. The microprocessor has a bus interface unit 10 which is coupled to an external 32-bit data bus 30 and additionally to an address bus 31 and some other control lines. The bus interface unit 10 processed only physical (hardware) addresses, so that operand denadressen first a segmentation unit 14 and a page forming unit 13 must go through. Also coupled to the bus interface unit 10 are a cache unit 12 and a pre-fetch 11 . The pre-fetch unit 11 constantly requests the bus interface unit to fetch the memory contents of the next instruction address. Once the prefetcher gets the data, it queues it and requests another 32-bit piece of memory if the queue is not full.

Die Cache-Einheit 12 enthält einen Datencache und ein Steuer­ gerät, welches den Zugriff auf den Cache-Speicher steuert. Sowohl der Vor-Heranholer als auch die Cache-Einheit 12 sind über einen 32-Bit-Bus mit der Segmentierungseinheit 14 gekoppelt. Die Segmentierungseinheit 14 übersetzt segmentierte Adressen in Linearadressen. The cache unit 12 includes a data cache and a controller that controls access to the cache memory. Both the pre-fetcher and the cache unit 12 are coupled to the segmentation unit 14 via a 32-bit bus. The segmentation unit 14 translates segmented addresses into linear addresses.

Die Segmentierungseinheit 14 ist mit der Seitenbildungseinheit 13 und der Cache-Einheit 12 über einen 32-Bit-Linearadreß-Bus 20 gekoppelt, der auch der "LA-Bus" (Linear-Adresse) genannt wird. Die Seitenbildungseinheit 13 nimmt die von der Segmen­ tierungseinheit 14 erzeugten linearen Adressen und wandelt sie in physikalische Adressen um. Wenn die Seitenbildung entakti­ viert ist, werden die Linearadressen der Segmentierungseinheit zu den physikalischen Adressen. Wenn die Seitenbildung akti­ viert ist, werden Linearadressen des 80 486-Mikroprozessors in 4096-Byte-Blöcke, genannt Seiten, unterteilt. Jede Seite kann auf einer vollständig anderen Adresse abgebildet werden. Zum Zwecke der Erleichterung des Verständnisses für die vorliegen­ de Erfindung sei angenommen, daß die Segmentierungseinheit die gleiche ist wie diejenige im Intel 80 386-Mikroprozessor.The segmentation unit 14 is connected to the side of forming unit 13 and the cache 12 coupled via a 32-bit Linearadreß bus 20, which is also called the "LA-Bus" (L inear- ADDRESS). The page forming unit 13 takes the linear addresses generated by the segmentation unit 14 and converts them into physical addresses. When page formation is deactivated, the segmentation unit's linear addresses become the physical addresses. When page creation is enabled, linear addresses of the 80486 microprocessor are divided into 4096-byte blocks, called pages. Each page can be mapped to a completely different address. For the purpose of facilitating the understanding of the present invention, let it be assumed that the segmentation unit is the same as that in the Intel 80386 microprocessor.

Innerhalb des Mikroprozessors werden Befehle an eine Befehls­ decodiereinheit 15 angelegt. Die Decodiereinheit arbeitet auf ähnliche Weise wie die Vor-Heranholeinheit. Sie nimmt einzelne Bytes aus der Warteschlange und bestimmt die Anzahl der zur Beendigung des nächsten Befehls benötigten Bytes. Die Decodiereinheit arbeitet mit einer Steuereinheit 19, in der Mikrocodebefehle gespeichert sind; die Steuereinheit 19 liefert Folgen von Steuersignalen für den Mikroprozessor. Die Befehls­ decodiereinheit 15 ist mit der Steuereinheit 19 und letztere mit der Segmentierungseinheit 14, der Dateneinheit 18 und der Gleitkommaeinheit 17 gekoppelt gezeigt. Die Dateneinheit 18 ist eine arithmetische Logikeinheit (ALU), welche ALU-Funktio­ nen in ähnlicher Weise wie diejenigen des Intel 80 386-Prozes­ sors ausführt.Within the microprocessor, instructions are applied to an instruction decode unit 15 . The decoding unit works in a similar way as the pre-fetching unit. It dequeches individual bytes and determines the number of bytes needed to complete the next instruction. The decoding unit operates with a control unit 19 in which microcode instructions are stored; the control unit 19 supplies sequences of control signals to the microprocessor. The instruction decoding unit 15 is shown coupled to the control unit 19 and the latter to the segmentation unit 14 , the data unit 18 and the floating-point unit 17 . The data unit 18 is an arithmetic logic unit (ALU) which performs ALU functions in a manner similar to those of the Intel 80 386 processor.

Der Mikroprozessor weist auch eine Gleitkommaeinheit 17 zur Durchführung von Gleitkommaberechnungen auf. Die genaue Konfi­ guration der Gleitkommaeinheit 17 sowie anderer Einheiten des Mikroprozessors ist für das Verständnis der vorliegenden Er­ findung unkritisch. Ein Signalfluß zwischen den verschiedenen Einheiten des Mikroprozessor wird nur insofern erläutert, als er zum Verständnis der vorliegenden Erfindung notwendig er­ scheint.The microprocessor also includes a floating point unit 17 for performing floating point calculations. The exact confi guration of floating point unit 17 and other units of the microprocessor is not critical to the understanding of the present invention. A signal flow between the various units of the microprocessor is only explained insofar as it seems necessary for the understanding of the present invention.

Das bevorzugte AusführungsbeispielThe preferred embodiment

Die selektierbare Ausrichtprüfanordnung nach der Erfindung ist für den Programmierer in Form von zwei neuen Zustands- (oder Modus)-Bits von außen sichtbar. Ein Bit ist im EFLAGS-Register angeordnet und wird das AC (Ausricht-Prüf)-Bit genannt. Das EFLAGS-Register erhält Zustandsinformation über den aktuellen Befehlsstrom (das EIP-Register enthält die Adresse des gerade ablaufenden Befehls) sowie eine Anzahl von Feldern, die für verschiedene Befehle relevant sind. Das andere Bit, genannt AM (Ausrichtmaskierung)-Bit, ist im Steuerregister CR0 angeord­ net.The selectable alignment test assembly of the invention is for the programmer in the form of two new state (or Mode) bits visible from the outside. One bit is in the EFLAGS register and is called the AC (Alignment Check) bit. The EFLAGS register receives status information about the current one Command stream (the EIP register contains the address of the straight expiring command) as well as a number of fields reserved for different commands are relevant. The other bit, called AM (Alignment masking) bit, is located in the control register CR0 net.

In Fig. 2 sind die Einzelheiten des EFLAGS-Register gezeigt. (Zu beachten ist, daß flag-Bits 1, 3, 5, 15 und 19 bis 31 "undefiniert" sind). Das AC-Bit ist in der Bit-Position 18 angeordnet. Das AC-Bit aktiviert die Erzeugung von Fehlersignalen, wenn der Speicherzugriff auf eine fehlausgerichtete Adresse erfolgt. Dies kann beispielsweise durch einen Wortzugriff auf eine ungerade Adresse, einen D-Wort-Zugriff auf eine Adresse, die nicht 0 MOD 4 ist, oder einen 8-Byte-Aufruf auf eine Adresse, die nicht 0 MOD 8 ist, bewirkt werden. Ausrichtfehlersignale werden nur auf dem Niveau 3 erzeugt, d. h. die AC-Bit-Einstel­ lung wird auf Niveaus 0, 1 und 2 ignoriert (implicite 0). Referenzen bzw. Zugriffe auf Deskriptortabellen (für Selektor­ ladungen) sind implicite Niveau 0 Referenzen, selbst wenn die "verursachenden" Befehle auf dem Niveau 3 ausgeführt werden. Ausrichtfehlersignale werden bei dem beschriebenen Ausführungsbei­ spiel über das Interrupt-Bit 17 mit einem Fehlercode von 0 berichtet. (Bit 17 ist das virtuelle Modus (VM)-Bit, welches - wenn es aufgesetzt ist, angibt, daß der gerade laufende Befehlsstrom x 86-Code ist).In Fig. 2 the details of the EFLAGS register are shown. (Note that flag bits 1, 3, 5, 15 and 19 to 31 are "undefined"). The AC bit is located in bit position 18. The AC bit enables generation of error signals when memory access is made to a misaligned address. This may be effected, for example, by a word access to an odd address, a D-word access to an address other than 0 MOD 4, or an 8-byte call to an address other than 0 MOD 8. Alignment error signals are only generated at level 3 , ie the AC bit setting is ignored at levels 0, 1 and 2 (implicit 0). References to descriptor tables (for selector loads) are implicit level 0 references, even if the "causing" instructions are executed at level 3. Alignment error signals are reported in the described Ausführungsbei play on the interrupt bit 17 with an error code of 0. (Bit 17 is the virtual mode (VM) bit which, when asserted, indicates that the current instruction stream is x86 code).

Die folgende Tabelle listet die Ausrichtung auf, die für Mi­ kroporzessor-Datentypen erforderlich ist:The following table lists the alignment used for Mi required by microprocessor data types:

Ausrichterfordernis nach DatentypRegistration requirement by data type Datentypdata type Ausrichtungalignment Wortword 22 D-WortD word 44 kurze Realgrößeshort real size 44 lange Realgrößelong real size 88th temporäre Realgrößetemporary real size 88th Selektorselector 22 48-Bit-segmentierter-Zeiger48-bit segmented pointer 44 32-Bit-Flag-Zeiger32-bit flag pointer 44 32-Bit-segmentierter-Zeiger32-bit segmented pointer 22 48-Bit-"Pseudo-Deskriptor"48-bit "pseudo-descriptor" 44 FSTENV/FLDENV SicherungszoneFSTENV / FLDENV safety zone 4/2 (auf Operandengröße)4/2 (on operand size) FSAVE/FRSTOR SicherungszoneFSAVE / FRSTOR safety zone 4/2 (auf Operandengröße)4/2 (on operand size) Bit-StringBit string 44

Da das Ausricht-Prüfmerkmal für jeden Task separat aktiviert werden muß, wurde es in das EFLAG-Register einbezogen, da jede Task ihre eigene "Kopie" von EFLAGS hat. Because the Alignment Check feature is enabled separately for each task it has been included in the EFLAG register, since each Task has its own "copy" of EFLAGS.  

Im folgenden wird auf Fig. 3 Bezug genommen, in der das Steu­ erregister CR 0 mit dem Ausrichtmasken-Steuerbit (AM) gezeigt ist. Das Steuerregister CR 0 ist eines von mehreren Steuerregi­ stern, welche die Seitenbildungs- und numerische Coprozessor- Operation des Mikroprozessors regeln. Wie in Fig. 3 gezeigt, befindet sich das Ausrichtmaskier-Steuerbit an der Bit-Posi­ tion 18 von CR 0. Das AM-Bit bestimmt, ob das AC-Bit in EFLAGS einen Ausrichtfehlerzustand zulassen kann oder nicht. AM=0 entakti­ viert die Prüfung (z. B. 80 386-Mikroprozessor-Kompatibilität), während AM=1 sie aktiviert. Auf das AM-Bit kann nur im Privilegni­ veau 0 zugegriffen werden. Dies ist vermutlich nur durch das Betriebssystem möglich. Das Betriebssystem setzt dieses Bit auf 1, um Ausrichtfehlerzustände nur dann zu aktivieren, wenn das Betriebssystem den richtigen Interrupt-Handler beinhaltet.Referring now to Fig. 3, the control register CR 0 is shown with the alignment mask control bit (AM). The control register CR 0 is one of several control registers that govern the page generation and numeric coprocessor operation of the microprocessor. As shown in Figure 3, the alignment mask control bit is at the bit position 18 of CR 0. The AM bit determines whether or not the AC bit in EFLAGS can allow an alignment error condition. AM = 0 invalidates the test (eg 80 386 microprocessor compatibility) while AM = 1 enables it. The AM bit can only be accessed at privilege level 0. This is probably only possible through the operating system. The operating system sets this bit to 1 to enable alignment error conditions only if the operating system includes the correct interrupt handler.

Die Verwendung von zwei Bits zur Aktivierung von Ausrichtprü­ fungen begründet ein erhebliches Maß an Flexibilität. Das AM-Bit liefert eine globale Betriebssystemsteuerung, da es sich im Register CR 0 befindet, das global für alle tasks bzw. Aufgaben zuständig ist, und kann nur vom Betriebssystem aufgerufen werden. Es wird typischerweise gesetzt, wenn das Betriebssy­ stem initialisiert wird, vorausgesetzt, daß das Betriebssystem den richtigen Interrupt-Handler (z. B. Bit 17 von CR 0) beinhaltet.The use of two bits to activate alignment tests provides a significant degree of flexibility. The AM bit provides a global OS control because it resides in register CR 0, which is globally responsible for all tasks, and can only be called by the operating system. It is typically set when the operating system is initialized, provided that the operating system includes the correct interrupt handler (eg, bit 17 of CR 0).

Das AC-Bit bewirkt die Anwendungsniveausteuerung. Es befindet sich im EFLAGS-Re­ gister, das bei einer Prozeßumschaltung ausgelagert (swapped) wird und durch eine Anwendung auf dem Niveau 3 zugreifbar ist. Da EFLAGS bei einer Prozeßumschaltung (task switch) ausgelagert werden, ist die Arbeitswei­ se so, als ob jede task eine eigene Kopie von EFLAGS und damit ihre eigene Kopie des Ausrichtprüfers hätte. Typischerweise benötigen AI-Programme Ausrichttests nur auf dem Niveau 3, dem Anwenderniveau. Aufgrund des Zugriffs auf die beiden Masken­ bits hat der Programmierer zwei Möglichkeiten, um festzulegen, ob ein Ausrichttest vorgenommen wird oder nicht; eine Möglich­ keit auf dem Anwenderniveau (EFLAGS-Register kann gelöscht oder vom Programm gesetzt werden) und eine auf dem Betriebssy­ stemniveau (AM-Bit gelöscht oder gesetzt). Beachtet werden sollte, daß beide Bits auf allen Niveaus maskieren. Jedoch ist AC implicite auf allen Niveaus mit Ausnahme des Niveaus 3 maskiert, während das AM-Bit nur auf dem Niveau 0 gesetzt und rückgesetzt (d. h. gesteuert) werden kann.The AC bit causes application level control. It is located in EFLAGS-Re gister, which is swapped out at a process switch and by an application at level 3 is accessible. Since EFLAGS at a Process switching (task switch) are outsourced, is the Arbeitswei It's as if each task has its own copy of EFLAGS and thus had her own copy of the registration examiner. typically, AI programs require alignment tests only at level 3, the  User level. Due to the access to the two masks bits, the programmer has two options to set whether an alignment test is made or not; a possible at the user level (EFLAGS register can be deleted or set by the program) and one on the operating system stem level (AM bit cleared or set). Get noticed should mask both bits at all levels. However, that is AC implicite at all levels except Level 3 masked while the AM bit is only set to level 0 and can be reset (i.e., controlled).

Die Implementierung der erfindungsgemäßen Ausrichtkontrolle zen­ triert sich um die Feststellung von fehlausgerichteten Da­ tenzugriffen. Dies geschieht unter Verwendung der drei niedri­ geren Bits des 32-Bit-Linearadreß-Bus 20 (vgl. Fig. 4) und der Länge des Buszyklus' in der von der Befehlsdecodiereinheit 15 oder der Steuereinheit 19 vorgegebenen Ordnung. Fehlerzustände, die durch fehlausgerichtete Datenaufrufe bedingt sind, werden in der Segmentierungseinheit 14 erzeugt, welche auch die Linear­ adressen erzeugt. Der Fehler wird von der Steuereinheit 19 bedient.The implementation of the alignment control according to the invention is centered around the detection of misaligned data accesses. This is done using the three lower bits of the 32-bit linear address bus 20 (see Fig. 4) and the length of the bus cycle in the order specified by the instruction decode unit 15 or the control unit 19 . Error states that are caused by misaligned data calls are generated in the segmentation unit 14 , which also generates the linear addresses. The error is served by the control unit 19 .

Die nachfolgende Tabelle 2 definiert einen Zugriff auf fehlausgerichtete Daten für Buszyklen unterschiedlicher Län­ gen, ausgedrückt in Werten der unteren drei Bits des LA-Bus 20. Buszykluslängen werden durch Decodieren des "Busanforde­ rungstyp-"feldes von der Befehlsdecodiereinheit 15 oder der Steuereinheit 19 bestimmt. Table 2 below defines access to misaligned data for different length bus cycles expressed in lower three bits of LA bus 20 . Bus cycle lengths are determined by decoding the "Bus Request Type" field from the instruction decode unit 15 or the controller 19 .

Tabelle 2 Table 2

Sobald festgestellt wird, daß ein fehlausgerichteter Zugriff aufgetreten ist, ist es relativ einfach, die anderen zur Er­ zeugung eines Fehlerzustands notwendigen Bedingungen zu bestimmen. Unter Bezugnahme auf Fig. 5 wird ein Schaltbild der Ausricht­ prüflogikschaltung beschrieben. Logikgatter 40-44 und Latch- Schaltungen 41 und 45 dienen zum Decodieren von aus Segmen­ tierungseinheit 14 empfangenen Signalen, um sicherzustellen, daß die Einheit 14 den Bus 20 ansteuert und daß der Buszyklus nicht abgebrochen wird. Die drei niedrigsten Bits des LA-Bus­ ses 20 erscheinen auf Leitungen 51-53. Diese Signale werden mit Bus-Anforderungstyp-Feldsignalen entweder aus der Einheit 15 oder der Einheit 19 an den Eingängen der Gatter 46 und 49 kombiniert. Insgesamt wirken die Gatter 46, 48, 49 und 67-72 zusammen und erzeugen einen Satz von Signalen, welche die Bytelänge des fehlausgerichteten Datenzugriffs entsprechend Tabelle 2 angeben. So erzeugt beispielsweise das Gatter 46 ein Signal auf der Leitung 80, welches einen fehlausgerichteten 2-Bit-Zugriff bezeichnet; Gatter 67 erzeugt ein Signal auf der Leitung 81, welches einen fehlausgerich­ teten 4-Byte-Zugriff bezeichnet; Gatter 71 erzeugt ein Signal auf der Leitung 82, welches einen fehlausgerich­ teten 8-Byte-Zugriff bezeichnet; und Gatter 49 erzeugt ein Signal auf der Leitung 83, welches einen fehlausgerichteten 4ND-Zugriff bezeichnet. Jedes der Signale 80-83 wird vom Gatter 47 ODER- verknüpft, und das Ergebnis wird im Latch 50 gespeichert. (Die Symbole P1 und P2 sind den Latch-Schaltungen der Fig. 5 zugeordnet und bezeichnen die Phase, in denen jede getaktet wird. So werden beispielsweise die Latch-Schaltungen 41 und 59 in der Phase 2 des Systemtakts und die Latch-Schaltungen 45, 50 und 62 in der Phase 1 des nächsten Taktimpulses getaktet.)Once it is determined that a misaligned access has occurred, it is relatively easy to determine the other conditions necessary to generate an error condition. Referring to Fig. 5, a circuit diagram of the alignment check circuit will be described. Logic gates 40-44 and latches 41 and 45 serve to decode signals received from segmentation unit 14 to ensure that unit 14 drives bus 20 and that the bus cycle is not aborted. The three lowest bits of LA bus 20 appear on lines 51-53 . These signals are combined with bus request type field signals from either unit 15 or unit 19 at the inputs of gates 46 and 49 . Overall, gates 46 , 48 , 49 and 67-72 cooperate to generate a set of signals indicating the byte length of the misaligned data access as shown in Table 2. For example, gate 46 generates a signal on line 80 indicating a misaligned 2-bit access; Gate 67 generates a signal on line 81 which indicates a 4-byte mismatched access; Gate 71 generates a signal on line 82 indicating a mis-aligned 8-byte access; and gate 49 generates a signal on line 83 which indicates a misaligned 4ND access. Each of the signals 80-83 is ORed by the gate 47 and the result is stored in the latch 50 . (The symbols P1 and P2 are associated with the latches of Fig. 5 and indicate the phase in which each is clocked.) For example, the latches 41 and 59 are in phase 2 of the system clock and the latches 45 , 50 and 62 are clocked in phase 1 of the next clock pulse.)

Die AM- und AC-Bits erscheinen auf Leitungen 54 und 55 und werden an ein UND-Gatter 57 angelegt. Zur Erzeugung eines Fehlausrichtfehlersignals müssen beide "1" sein. Das Ausgangssignal des Gatters 57 wird am Gatter 63 mit den Ausgangssignalen der Latch-Schaltungen 45 und 50 zusammen mit dem Privilegierungs­ niveau des Programms auf der Leitung 56 UND-verknüpft. Das Privilegierungsniveau muß bei dem beschriebenen Ausführungs­ beispiel auf dem Niveau 3 sein, bestimmt durch CPL-Bits in der Steuereinheit 19. Die Gatter 58-62 erzeugen auch ein Eingangs­ signal zum UND-Gatter 63, um sicherzustellen, daß der Buszy­ klustyp ein solcher ist, bei dem AC-Brüche bzw. Verletzungen zulässig sind. (AC-Brüche sind bei gewissen Zyklen unzulässig. So sind sie beispielsweise unzulässig an Verzweigungszyklen, da diese definitionsgemäß Einzelbytezyklen sind.)The AM and AC bits appear on lines 54 and 55 and are applied to an AND gate 57 . To generate a misregistration error signal, both must be "1". The output of gate 57 is ANDed at gate 63 to the outputs of latches 45 and 50 along with the privilege level of the program on line 56 . The Privilegierungsniveau must be in the described embodiment, for example, at level 3, determined by CPL bits in the control unit 19th The gates 58-62 also generate an input signal to the AND gate 63 to ensure that the type of bus cycle is one in which AC breaks or violations are allowed. (AC breaks are not allowed on certain cycles, for example, they are not allowed on branch cycles because they are by definition single byte cycles.)

Der Ausgang des Gatters 63 ist mit einem Eingang des UND-Gat­ ters 65 gekoppelt. Der andere Eingang des Gatters 65 ist die Leitung 66, auf der ein Signal ansteht, das anzeigt, daß die Mikroprozessorpipeline frei ist, bevor das Fehlersignal er­ zeugt wird. Alles in allem ist die Logik gemäß Fig. 5 zusätz­ lich zu der UND-Verknüpfung der AC- und AM-Bits so ausgelegt, daß sie sicherstellen kann, daß kein Zugriff auf irgendeines der Systemsegmente vorgenommen werden kann und daß ein legiti­ mierter Buszyklus durchgeführt wird. UND-Gatter 65 erzeugt einen mit SINTR (Segmentierungseinheit-Interrupt) genanntes Signal auf der Leitung 67, welches an die Steuereinheit 19 immer dann angelegt wird, wenn alle der oben genannten Bedin­ gungen erfüllt sind.The output of the gate 63 is coupled to an input of the AND gate 65 . The other input of the gate 65 is the line 66 , on which a signal is pending indicating that the microprocessor pipeline is free before the error signal is generated. All in all, the logic of Figure 5, in addition to the ANDing of the AC and AM bits, is designed to ensure that no access can be made to any of the system segments and that a legitimate bus cycle is performed , AND gate 65 generates a signal called SINTR (Segmentation Unit Interrupt) on line 67 , which is applied to the control unit 19 whenever all of the above conditions are met.

Bei Erhalt von SINTR hält die Steuereinheit sofort alle Aus­ führungsoperationen an und sorgt für die geeigneten Schritte, um diesen Ausrichtprüffehler zu bedienen. Sie setzt zwei "kei­ ne-Operation" (NOP)-Takte ein und drückt den Mikrocode auf den Einsprungpunkt für die Ausrichtprüffehler. Danach übernimmt der Mikrocode und veranlaßt die notwendigen Schritte, um die Rücklaufadresse zu speichern und das Benutzerprogramm von dem Fehler zu unterrichten.Upon receipt of SINTR, the control unit stops immediately management operations and takes the appropriate steps to to serve this alignment check error. She puts two "kei ne-operation "(NOP) cycles and pushes the microcode to the Entry point for the alignment check errors. After that takes over the microcode and takes the necessary steps to do that To save return address and the user program of that To teach mistakes.

Claims (10)

1. Mikroprozessor zur Ausführung von Programmen auf unterschiedlichen Privilegierungsniveaus und zur Verwendung mit einem mehrbyteweise organisierten Datenspeicher
mit einer Steuereinheit (19), Mitteln (10, 12-14, 20, 30, 31) zum Zugreifen auf im Speicher an beliebigen Stellen gespeicherten Daten in Bytebreite oder einem Vielfachen der Bytebreite und einer ersten Schaltung (46-49, 67-72) zum Erkennen von Fehlausrichtungen von Datenzugriffen, d. h. Zugriffen unter Byteadressen, die nicht einem Vielfachen der aktuellen Zugriffsbreite entsprechen (vgl. Tabelle 2, zum Beispiel Wortzugriffe unter ungerader Adresse),
gekennzeichnet durch:
eine zweite Schaltung (54, 55, 57, 63, 65), die bei Erkennen einer Fehlausrichtung durch die erste Schaltung in Abhängigkeit von
einem ersten Modulbit (AC), auf das auf einem ersten Privilegierungsniveau (Niveau 3) zugegriffen werden kann,
und einem zweiten Modusbit (AM), auf das auf einem zweiten Privilegierungsniveau (Niveau 0) zugegriffen werden kann,
ein Ausrichtungsfehlersignal (SINTR) zur Unterbrechung der Programmausführung erzeugt.
A microprocessor for executing programs at different privilege levels and for use with a multi-byte organized data store
with a control unit ( 19 ), means ( 10, 12-14, 20, 30, 31 ) for accessing data stored in memory at arbitrary locations in byte width or a multiple of the byte width and a first circuit ( 46-49, 67-72 ) for detecting misalignments of data accesses, ie accesses under byte addresses that do not correspond to a multiple of the current access width (see Table 2, for example, odd-numbered word accesses),
characterized by :
a second circuit ( 54, 55, 57, 63, 65 ) responsive to detection of misalignment by the first circuit
a first module bit (AC) accessible at a first privilege level (level 3),
and a second mode bit (AM) accessible at a second privilege level (level 0),
generates an alignment error signal (SINTR) to interrupt program execution.
2. Mikroprozessor nach Anspruch 1, dadurch gekennzeichnet, daß das erste Privilegierungsniveau ein am niedrigsten privilegiertes Niveau (Niveau 3) und das zweite Privilegierungsniveau ein am höchsten privilegiertes Niveau (Niveau 0) ist. 2. Microprocessor according to claim 1, characterized that the first privilege level is one of the lowest privilege Level (Level 3) and the second privilege level a highest privileged level (level 0).   3. Mikroprozessor nach Anspruch 2, dadurch gekennzeichnet, daß das zweite Modusbit (AM) das erste Modusbit (AC) derart maskiert, daß das Ausrichtungsfehlersignal (SINTR) nur erzeugt wird, wenn sowohl das erste Modusbit (AC) als auch das zweite Modusbit (AM) auf einen vorgegebenen Zustand gesetzt sind.3. Microprocessor according to claim 2, characterized the second mode bit (AM) is the first mode bit (AC) in such a way masked that the alignment error signal (SINTR) only generates when both the first mode bit (AC) and the second one Mode bit (AM) are set to a predetermined state. 4. Mikroprozessor nach Anspruch 3, dadurch gekennzeichnet, daß Anwendungsprogramme dem am niedrigsten privilegierten Niveau zugeordnet sind und ein Betriebssystem dem am höchsten privilegierten Niveau zugeordnet ist.4. Microprocessor according to claim 3, characterized that application programs are the least privileged Level are assigned and an operating system the highest is assigned to privileged level. 5. Mikroprozessor nach einem der Ansprüche 1 bis 4, dadurch gekennzeichnet, daß eine Segmentierungseinheit (14) zur Übersetzung von segmentierten Adressen in lineare Adressen und zur Speicherung von Systemsegmenten vorgesehen ist.5. Microprocessor according to one of claims 1 to 4, characterized in that a segmentation unit ( 14 ) is provided for the translation of segmented addresses into linear addresses and for the storage of system segments. 6. Mikroprozessor nach Anspruch 5, dadurch gekennzeichnet, daß das Ausrichtungsfehlersignal (SINTR) nur dann erzeugbar ist, wenn auf keines der Systemsegmente innerhalb der Segmentierungseinheit (14) zugegriffen wird.6. Microprocessor according to claim 5, characterized in that the alignment error signal (SINTR) can only be generated if none of the system segments within the segmentation unit ( 14 ) is accessed. 7. Mikroprozessor nach Anspruch 6, dadurch gekennzeichnet, daß eine Seitenbildungseinheit (13) mit der Segmentierungseinheit (14) über einen Bus (20) gekoppelt ist und daß die Seitenbildungseinheit (13) die linearen Adressen in physikalische Adressen umwandelt, wobei Bits des Busses (20) der ersten Schaltung (46-49, 68-72) eine Fehlausrichtung eines Datenzugriffs für Buszyklen verschiedener Länge anzeigen.7. A microprocessor according to claim 6, characterized in that a page forming unit ( 13 ) is coupled to the segmentation unit ( 14 ) via a bus ( 20 ) and that the page forming unit ( 13 ) converts the linear addresses into physical addresses, wherein bits of the bus ( 20 ) of the first circuit ( 46-49, 68-72 ) indicate misalignment of data access for bus cycles of various lengths. 8. Mikroprozessor nach einem der Ansprüche 3 bis 7, dadurch gekennzeichnet, daß er außerdem aufweist:
ein Flagregister zum Speichern des ersten Modusbits ( AC), in das mit einem auf dem niedrigsten privilegierten Niveau (Niveau 3) ausgeführten Befehl geschrieben werden kann; und
ein Steuerregister (CR 0) zum Speichern des zweiten Modusbits (AM), in das mit einem auf dem am höchsten privilegierten Niveau (Niveau 0) ausgeführten Befehl geschrieben werden kann, aber in das mit einem auf dem niedrigsten privilegierten Niveau (Niveau 3) ausgeführten Befehl nicht geschrieben werden kann;
und daß die zweite Schaltung dem Flagregister und dem Steuerregister (CR 0) derart nachgeschaltet ist, daß sie das erste Modusbit (AC) und das zweite Modusbit (AM) aus diesen Registern aufnehmen kann, daß sie ein Freigabesignal nur dann erzeugt, wenn sowohl das erste Modusbit (AC) als auch das zweite Modusbit (AM) in einem vorgegebenen Zustand sind, und daß sie das Ausrichtungsfehlersignal (SINTR) erzeugt, wenn eine Fehlausrichtung eines Datenzugriffs festgestellt wird und das Freigabesignal vorliegt.
8. Microprocessor according to one of claims 3 to 7, characterized in that it further comprises:
a flag register for storing the first mode bit (AC) to which a command executed at the lowest privileged level (level 3) can be written; and
a control register (CR 0) for storing the second mode bit (AM) which can be written with a command executed at the highest privilege level (level 0) but at the one with the lowest privilege level (level 3) Command can not be written;
and that the second circuit is connected downstream of the flag register and the control register (CR 0) so as to be able to receive the first mode bit (AC) and the second mode bit (AM) from these registers to generate an enable signal only if both of the first mode bit (AC) and the second mode bit (AM) are in a predetermined state, and generates the alignment error signal (SINTR) when a misalignment of a data access is detected and the enable signal is present.
9. Mikroprozessor nach einem der Ansprüche 3 bis 8, dadurch gekennzeichnet, daß das erste Modusbit (AC) und das zweite Modusbit (AM) in dem vorgegebenen Zustand sind, wenn ihre Werte Eins sind.9. Microprocessor according to one of claims 3 to 8, characterized characterized in that the first mode bit (AC) and the second Mode bits (AM) are in the predetermined state when their values One are. 10. Mikroprozessor nach einem der Ansprüche 1 bis 9, dadurch gekennzeichnet, daß mit dem Mikroprozessor ein externer Bus (30) gekoppelt ist, über den Daten abrufbar sind.10. Microprocessor according to one of claims 1 to 9, characterized in that with the microprocessor, an external bus ( 30 ) is coupled, are retrievable via the data.
DE19904010733 1989-04-05 1990-04-03 Microprocessor with means for detecting misaligned data calls Expired - Lifetime DE4010733C2 (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US33407489A 1989-04-05 1989-04-05

Publications (2)

Publication Number Publication Date
DE4010733A1 DE4010733A1 (en) 1990-10-11
DE4010733C2 true DE4010733C2 (en) 1995-08-31

Family

ID=23305466

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19904010733 Expired - Lifetime DE4010733C2 (en) 1989-04-05 1990-04-03 Microprocessor with means for detecting misaligned data calls

Country Status (6)

Country Link
JP (1) JP3055031B2 (en)
DE (1) DE4010733C2 (en)
FR (1) FR2645664B1 (en)
GB (1) GB2230118B (en)
HK (1) HK107393A (en)
SG (1) SG55493G (en)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB9716240D0 (en) * 1997-07-31 1997-10-08 Tricorder Technology Plc Scanning apparatus and methods
US6772372B2 (en) * 2001-03-06 2004-08-03 Hewlett-Packard Development Company, L.P. System and method for monitoring unaligned memory accesses
GB2482710A (en) 2010-08-12 2012-02-15 Advanced Risc Mach Ltd Enabling stack access alignment checking independently of other memory access alignment checking

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4654781A (en) * 1981-10-02 1987-03-31 Raytheon Company Byte addressable memory for variable length instructions and data

Also Published As

Publication number Publication date
GB2230118A (en) 1990-10-10
GB9003354D0 (en) 1990-04-11
FR2645664A1 (en) 1990-10-12
HK107393A (en) 1993-10-22
FR2645664B1 (en) 1993-12-17
SG55493G (en) 1993-08-06
DE4010733A1 (en) 1990-10-11
JP3055031B2 (en) 2000-06-19
GB2230118B (en) 1992-12-23
JPH02287741A (en) 1990-11-27

Similar Documents

Publication Publication Date Title
DE69329778T2 (en) SYSTEM AND METHOD FOR HANDLING LOADS AND / OR STORES IN A SUPER-SCALAR MICROPROCESSOR
DE69227604T2 (en) Backwards compatible computer architecture with extended word widths and address space
DE69031183T2 (en) Method and arrangement for controlling the conversion of virtual addresses into physical addresses in a computer system
DE69115344T2 (en) Preprocessor for connecting instructions to a cache memory
DE3884101T2 (en) Picking up operands in disarray.
DE4040963C2 (en) Data processing system
DE69129565T2 (en) High performance emulator with pipelining
DE68928812T2 (en) Device for resolving a variable number of possible memory access conflicts in a pipeline computer system and method therefor
DE69131956T2 (en) Processing processor for connecting instructions for a cache memory
DE3789345T2 (en) Enhanced floating point operations to support emulation of source instruction executions.
DE69427734T2 (en) Linearly addressed microprocessor cache
DE60006270T2 (en) PARALLEL PROCESSOR ARCHITECTURE
DE69331448T2 (en) Data processor with a cache memory
DE2846495C2 (en) Central unit
DE68928519T2 (en) Method and device for predicting the correct implementation of translations from virtual to physical addresses
DE1931966C3 (en) Data processing system with associative memories
DE2517276A1 (en) DATA PROCESSING SYSTEM
DE102018005105A1 (en) COMMANDS FOR REMOTE ATOMIC OPERATIONS
DE2714805A1 (en) DATA PROCESSING SYSTEM
DE3801361A1 (en) METHOD AND DEVICE FOR DETECTING AND FOR THE SPECIAL TREATMENT OF MEMORY-MAPPED INPUT / OUTPUT REFERENCES IN A PIPELINEMICROPROCESSOR
DE68927783T2 (en) MICROPROCESSOR WITH EXTERNAL CONTROL MEMORY
DE112013001466T5 (en) Compare groups of character data that have terminators
DE112013001442T5 (en) Copy character data that has a terminator from one memory location to another
DE102018132521A1 (en) DEVICE AND METHOD FOR LOADING AND REDUCING LOOPS IN A SINGLE INSTRUCTION, MULTIPLE DATA (SIMD) PIPELINE
DE2612054A1 (en) PROCEDURE FOR ADDRESS DEVELOPMENT AND PROCESSOR FOR IMPLEMENTING THE PROCEDURE

Legal Events

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

Ipc: G06F 9/34

D2 Grant after examination
8364 No opposition during term of opposition