FR2645664A1 - Microprocesseur a verification selectionnable de l'alignement des references memoire - Google Patents

Microprocesseur a verification selectionnable de l'alignement des references memoire Download PDF

Info

Publication number
FR2645664A1
FR2645664A1 FR9004228A FR9004228A FR2645664A1 FR 2645664 A1 FR2645664 A1 FR 2645664A1 FR 9004228 A FR9004228 A FR 9004228A FR 9004228 A FR9004228 A FR 9004228A FR 2645664 A1 FR2645664 A1 FR 2645664A1
Authority
FR
France
Prior art keywords
microprocessor
detection means
data
level
bit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
FR9004228A
Other languages
English (en)
Other versions
FR2645664B1 (fr
Inventor
John H 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 FR2645664A1 publication Critical patent/FR2645664A1/fr
Application granted granted Critical
Publication of FR2645664B1 publication Critical patent/FR2645664B1/fr
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)

Abstract

Ce microprocesseur comprend une mémoire, une unité de commande 19 et des moyens de référencement, pour faire référence à des données mémorisées dans la mémoire à des adresses quelconques. Selon l'invention, il comprend en outre un système de protection, pour permettre un accès sélectif à des données en fonction du niveau de privilège du programme, et une unité de segmentation 14, pour traduire des adresses segmentées en adresses linéaires, cette unité de segmentation comprenant des moyens de détection pour détecter des références de données désalignées, ces moyens de détection étant optionnellement activés de manière que, lorsque ces moyens de détection sont activés et que les moyens de référencement font référence à une donnée désalignée, les moyens de détection génèrent un défaut qui interrompe ledit programme. Les moyens de détection comprennent un premier bit de mode commandant le défaut au niveau le moins privilégié et un second bit de mode commandant le défaut au niveau le plus privilégié du système de protection.

Description

La présente invention concerne le domaine des micropro-
cesseurs à semiconducteurs.
Elle a pour objet une procédure permettant, au sein d'un microprocesseur, de commander des vérifications d'alignement par des "bits de mode". Grâce à concept, on permettra au programmeur de choisir s'il y aura ou non production d'un défaut au cas o une référence mémoire correspond à une
adresse désalignée. Le mode de réalisation actuellement pré-
féré est incorporé à l'architecture du microprocesseur Intel 80486, également appelé "processeur 486 ". Le processeur 486@ est une version améliorée du microprocesseur Intel 80386, également connu sous le nom de "processeur 3860" (Intel, 80386, 386, 80486 et 486 sont des marques déposées
de Intel Corporation).
Le microprocesseur 80486 est un membre à hautes perfor-
mances à 32 bits de la famille de processeurs x86 Il est compatible par son code objet avec le processeur 80386. Il en résulte qu'il peut faire tourner un code développé pour des membres antérieurs de la famille. De façon générale, il consiste en une nouvelle mise en oeuvre de l'architecture
80386 dans le but de permettre une amélioration des per-
formances d'un facteur d'au moins 2,5, lorsqu'on mesure ces performances par le nombre moyen de cycles d'horloge par instruction. La présente invention représente l'une de ces caractéristiques du microprocesseur 80486 qui contribuent à
cette amélioration des performances.
Comme on l'a mentionné plus haut, la présente invention
ajoute à un microprocesseur la possibilité de pouvoir choi-
sir si l'on produit ou non un défaut au cas o une référence
mémoire dans un programme correspond à une adresse désali-
gnée. Habituellement, une adresse d'une donnée est considé-
rée comme étant alignée si elle est un multiple de sa lon-
gueur. Une donnée sur un octet est toujours alignée. Une donnée sur deux octects est alignée si son adresse est un multiple de deux. Une donnée sur quatre octets est alignée
si son adresse est un multiple de quatre, et ainsi de suite.
Les données sont donc généralement alignées lorsque l'a- -
dresse est un multiple de leur taille.
L'importance des références mémoire alignées devient plus évidente lorsque l'on considère l'architecture interne de la
mémoire d'un microprocesseur. Dans la plupart des ordina-
teurs, la mémoire est organisée de telle manière que la taille des données soit égale à la largeur mémoire. Si l'on a une mémoire organisée sur 32 bits, ceci signifie que l'on peut, en un seul cycle mémoire, accéder à un élément de 32 bits qui a une adresse qui est un multiple de quatre (un mot de 32 bits est souvent appelé "double mot", un double mot étant constitué de quatre octets séparés, par exemple 0, 1, 2 et 3). L'unité centrale de traitement, aussi bien celle du 80386 que celle du 80486, permet de faire référence à des données situées en une adresse quelconque. Si la référence n'est pas alignée, le microprocesseur est alors pénalisé dans ses performances, ce qui se manifeste par des cycles memoire supplémentaires nécessaires pour accéder ou faire
référence aux données.
Considérons une référence mémoire à un double mot de 32 bits commençant à l'adresse 3. Avec les manières de procéder antérieures, le processeur aurait fait référence à deux doubles mots: tout d'abord au double mot commençant à l'adresse 0, afin d'extraire l'octet 3, puis au double mot commençant à l'adresse 4, afin d'extraire les octets restants 4, 5 et 6. Après avoir accédé aux octets requis, le
processeur les aurait rassemblés afin de reconstruire l'élé-
ment de donnée ou référence mémoire. C'est pourquoi les ma-
nières de procéder antérieures sont pénalisantes au moins à
deux égards: (1 ) on a besoin d'au moins deux cycles mémoi-
res supplémentaires et (2 ) il faut reconstituer ou "recol-
ler les morceaux" de l'élément de donnée dans un nouvel em-
placement mémoire.
Pour pallier cet inconvénient, on a proposé plusieurs autres manières de procéder. Par exemple, dans le 80386, on peut exécuter des vérifications d'alignement par insertion,
dans la ligne, d'un code traitant chaque référence mémoire.
Ce code produit une adresse dans un registre puis masque les bits inférieurs du registre. L'opération de masquage est mise en oeuvre en prenant les mêmes éléments du registre et en ajoutant un déplacement d'alignement. Essentiellement, on doit exécuter une série de trois instructions distinctes
pour traiter de cette manière chaque référence mémoire.
Comme, dans un programme, on a typiquement la moitié des instructions qui font référence à la mémoire d'une façon ou d'une autre, ceci représente une charge inacceptable, qui
peut aller jusqu'à 20 à 30 % de dégradation des perfor-
mances. Plusieurs machines, tout particulièrement les nouveaux
processeurs RISC (Reduced Instruction Set Computer: calcu-
lateur à jeu d'instructions réduit), ont besoin que toutes
les références mémoire soient alignées. Ces machines génè-
rent toujours des erreurs en cas de référence à des données
désalignées. Cependant, il n'est pas possible de sélection-
ner les défauts, de sorte que les défauts sont produits de façon invariable. Ceci pose un problème, car de nombreux environnements (tout particulièrement le COBOL) ne faisant pas appel à l'intelligence artificielle bénéficient de la
possibilité de faire référence à des données désalignées.
Une autre catégorie de machines autorise les références dé-
salignées, quoiqu'avec la pénalisation des performances indiquées plus haut. Ces machines comprennent le 80386 d'Intel, le VAX de Digital et l'IBM 370. C'est pourquoi,
dans ce domaine, on aurait besoin d'un nouveau procédé per-
mettant de produire de façon optionnelle des défauts d'a-
dressage désaligné qui ne souffre pas des pénalisations de
performances indiquées plus haut.
Comme on le verra, la présente invention propose un moyen permettant d'effectuer une vérification d'alignement qui soit sélectionnable par l'utilisateur et qui ne nécessite aucune instruction supplémentaire. En outre, l'invention
autorise deux niveaux de masquage pour la procédure de véri-
fication d'alignement: l'un au niveau de l'application et l'autre au niveau du système d'exploitation. Grâce à sa capacité à masquer le piégeage ou le défaut lui-même, l'invention offre à l'utilisateur deux possibilités de
contrôle de la vérification d'alignement.
Le but de la présente invention est, ainsi, de proposer un moyen permettant de détecter un désalignement de données par inadvertance. Dans le cadre du débogage des programmes, l'a- lignement des données peut accroitre notablement les performances. Un autre but de la présente invention est de proposer des moyens pour générer des défauts d'alignement dans certains programmes d'intelligence artificielle qui utilisent des bits d'adresse d'ordre inférieur pour identifier des types de pointeurs puis exécutent de faibles déplacements pour
faire sortir ces bits d'étiquette afin de réaliser l'ajuste-
ment et obtenir une adresse alignée. La présente invention
assure une vérification du type de pointeur sans pénalisa-
tion notable des performances. Des mesures expérimentales ont indiquées que la présente invention permet d'obtenir une amélioration de 30 % des performances avec des programmes
moyens d'intelligence artificielle tournant sur le micropro-
cesseur 80386. D'autres études ont montré une amélioration
de 20 % sur d'autres machines.
On va décrire à cet effet un microprocesseur comprenant
un moyen pour détecter des références de données désali-
gnées. Le moyen détecteur est sélectionnable de sorte que, lorsque ce moyen détecteur est activé et que l'on fait référence à un objet de données désaligné, on produise un défaut qui interrompt l'exécution du programme en cours. Le moyen détecteur fait partie de l'unité de segmentation du microprocesseur que l'on décrira ici. Dans le mode de réalisation préféré, le microprocesseur comporte également un dispositif de protection permettant d'autoriser l'accès à
certains objets de données à divers niveaux de privilège.
Le moyen détecteur comporte deux bits de mode mémorisés au sein du microprocesseur. Le premier bit de mode assure le masquage du défaut au niveau d'exécution le moins privilégié (c'est-à-dire le niveau des applications), tandis que le second mode de bit assure le masquage du défaut au niveau le
plus privlégié (c'est-à-dire le niveau du système d'exploi-
tation). Ainsi, l'accès aux bits de mode, ou de masque, est obtenu à deux niveaux différents. Les deux bits de mode doivent être positionnés à '1' pour que le moyen détecteur soit activé. L'utilisation de deux bits de mode distincts pour permettre une activation optionnelle de la vérification
d'alignement assure la souplesse optimale de programmation.
On va maintenant décrire, en référence aux dessins annexés, un mode de réalisation de la présente invention, qui ne devra être considéré que comme purement illustratif,
sans caractère limitatif.
La figure 1 illustre les quatre niveaux de privilège permis par le microprocesseur de l'invention. Le niveau le plus sûr est indiqué par le niveau 0 et le niveau le moins
sûr est indiqué par le niveau 3.
La figure 2 illustre le registre EFLAGS situé dans le microprocesseur de l'invention. Le registre EFLAGS possède un bit supplémentaire (le bit AC), défini dans les 16 bits supérieurs, afin de pouvoir gérer les défauts en cas d'accès
à des données désalignées au niveau de privilège 3.
La figure 3 illustre le registre CR0 de commande du statut machine, qui contient un bit de masquage d'alignement AM qui commande le point de savoir si le bit AC dans le
registre EFLAGS autorise ou non un défaut d'alignement.
La figure 4 est un diagramme général par blocs du micro-
processeur de la présente invention.
La figure 5 est un diagramme montrant la manière dont la vérification d'alignement est mise en oeuvre, du point de
vue logique, dans le mode de réalisation actuellement pré-
féré de la présente invention.
On va décrire un microprocesseur comprenant un moyen pour choisir si l'on doit ou non générer un défaut chaque fois que l'on détecte une référence mémoire désalignée. Dans la
description qui va suivre, on donnera de nombreux détails
particuliers tels que des longueurs binaires, des contenus de registre, des diagrammes logiques, etc. afin de permettre une compréhension complète de la présente invention. L'homme du métier verra cependant que ces détails particuliers n'ont pas besoin d'être repris pour mettre en oeuvre la présente invention. Inversement, on n'a pas représenté en détail des structures et des circuits bien connus afin de ne pas
alourdir inutilement la description de la présente inven-
tion. Avant de décrire le mode de réalisation détaillé, il peut
être tout d'abord utile, pour la compréhension de la pré-
sente invention, de considérer diverses caractéristiques de
l'architecture du microprocesseur 80486.
Architecture de base du microprocesseur Avec l'importance croissante des ordinateurs dans notre
société, les microprocesseurs mettent de plus en plus sou-
vent en oeuvre un mode d'adressage virtuel protégé (mode protégée). Le mode protégé inclus dans le microprocesseur
80486 permet de faire tourner concurremment plusieurs appli-
cations, mais en les isolant les unes des autres, de sorte qu'un incident sur une application n'affecte aucune des
autres applications. La caractéristique centrale d'un dispo-
sitif de protection est le "sélecteur". Au lieu d'accéder directement à une partie quelconque du système, un programme traite avec un sélecteur aui accorde l'accès à un objet
système. On associe à chaque objet des informations le con-
cernant, par exemple sa position, sa taille, ses restric-
tions d'utilisation, etc. Dans le microprocesseur 80486,
seul le système d'exploitation a accès aux données référen-
cées par le sélecteur, qui sont appelées "descripteurs".
Les descripteurs décrivent en détail un objet système.
Les segments mémoire sont un type d'objet système. Parmi les autres objets système, on trouve les tables qui permettent
de gérer le dispositif de protection, les segments parti-
culiers qui mémorisent l'état du processeur, etc. En exa-
minant le sélecteur, le matériel détermine celui des des-
cripteurs qui est associé au sélecteur et à l'objet sur lequel pointe le descripteur. L'une des rubriques qu'indique
le descripteur est le niveau de privilège de l'objet.
Lorsqu'un programme demande l'accès à un objet, soit on refuse l'accès (si la requête viole une règle du dispositif de protection, le contrôle passe du programme à une routine
désignée du système d'exploitation), soit on autorise l'ac-
cès mais on ne l'accorde pas (par exemple, si l'objet n'est
pas actuellement en mémoire, une routine du système d'ex-
ploitation doit effectuer une opération de permutation pour
mettre l'objet en mémoire et rendre le contrôle au program-
me), soit on accorde l'accès au niveau de privilège demandé.
Le processeur 80486 peut gérer quatre niveaux de privilège croissants, numérotés 3, 2, 1 et 0, comme illustré figure 1. Le niveau de privilège 0 est le niveau le plus privilégié. Le niveau de privilège du sélecteur dans le
registre de segment de code CS identifie le niveau de pré-
séance de la routine en cours d'exécution, et il est appelé
"niveau de privilège courant" CPL. Pour des raisons de fia-
bilité, seul le code le plus digne de confiance du système d'exploitation tourne au niveau de privilège le plus élevé
(CPL = '0'). Les applications qui peuvent échouer sont exé-
cutées au niveau de privilège le plus faible (CPL = '3').
Les divers niveaux de privilège ont été illustrés sur la figure 1 sous forme d'une série de cercles concentriques (le terme "privilège" connote des droits ou des avantages qui ne sont pas normalement accordés; dans le microprocesseur 80486, les procédures tournant dans les cercles situés les plus à l'intérieur peuvent accéder à des objets de données situés dans les cercles situés les plus à l'extérieur, mais des procédures des cercles extérieurs ne peuvent pas accéder à des objets des cercles intérieurs disposant d'un privilège
plus grand).
Comme cela sera décrit plus en détail, la présente inven-
tion permet de masquer la caractéristique de vérification d'alignement à la fois au niveau de l'application (par exemple CPL = '3') et au niveau du système d'exploitation
(par exemple CPL = '0'). Cette possibilité de choix du mas-
quage à deux niveaux de privilège différents permet à la présente invention d'être compatible avec les machines qui opèrent toujours, ou n'opèrent jamais, de piégeage en cas de référence désalignée. Par exemple, au niveau du système
d'exploitation, la caractéristique de vérification d'aligne-
ment peut être désactivée à la réinitialisation, ce qui la rend compatible avec le microprocesseur 80386. Dans certains langages de programmation tels que le C ou le Pascal,
lorsque l'on déclare le type de donnée lors de la compi-
lation, on attribue au sélecteur un tag ou étiquette corres-
pondant de façon permanente à ce type de donnée. En d'autres termes, le type de donnée ne change pas lorsque le programme
s'exécute. En revanche, dans certains langages d'intelligen-
ce artificielle tel que le LISP ou le Prolog, on ajoute une
souplesse supplémentaire par les attributions de type at-
trLbution au temps de l'exécution. Dans ces langages, le
type de donnée peut varier lors de l'exécution du programme.
Ceci permet à l'utilisateur de définir une fonction qui opérera sur des types multiples (par exemple 'x, avec x pouvant être soit un entier, soit un nombre réel court, soit un nombre réel long, soit un nombre complexe, etc.). Ainsi, en fonction du type de donnée en un point particulier du
programme, on peut exécuter une multiplicité de fonctions.
Dans les programmes LISP ou Prolog, le champ de pointeur indique à la fois l'adresse et le type de la donnée. La rubrique qui identifie le- type de donnée est appelé tag ou étiquette. Le programmeur utilise les deux bits inférieurs d'un pointeur sur 32 bits comme bits d'étiquette de poids fort. Dans les cas o le type de donnée doit être un certain type ou lorsque l'opération est invalide, ou dans ceux des cas o le programmeur s'attend à ce que le type de donnée
soit d'un certain type avec une fréquence largement prépon-
dérante, l'utilisateur peut générer un code qui suppose que l'étiquette possède une valeur donnée. Ce code annule les bits inférieurs de l'étiquette. Par exemple, si l'étiquette
a une valeur de 2, le code ajoutera une valeur -2 pour sup-
primer les bits d'étiquette. Ce décalage ou suppression est également appelé "déplacement". Si le déplacement est correct, la rubrique mémcire sera alignée et la donnée
pourra être référencée sans subir de défaut ou de piégeage.
Lorsque l'on exécute des programmes d'intelligence artificielle en utilisant la présente invention, les références mémoire seront alignées aussi longtemps que le déplacement coïncidera avec l'étiquette. En revanche, si le
déplacement ne coïncide pas avec l'étiquette, le vérifica-
teur d'alignement de la présente invention générera, de façon optionnelle, un piégeage ou un défaut. Lorsque ceci a lieu, le point actuel d'exécution (CS:EIP) et le contenu du 1o registre des drapeaux EFLAGS sont sauvegardés sur la pile et contrôlent le transfert à une routine logicielle appelée "gestionnaire des interruptions". Un numéro particulier d'interruption est associé à chaque situation de défaut. Le
pointeur d'instruction sauvegardé sur la pile après l'appa-
rition d'un défaut pointe sur l'instruction qui a provoqué le défaut. Ainsi, le système d'exploitation peut corriger la
situation et reprendre l'exécution de l'instruction.
Diagramme général par blocs du microprocesseur On a illustré sur la figure 4, sous forme d'un diagramme
général par blocs, le microprocesseur de l'invention incor-
porant la caractéristique de vérification d'alignement que
l'on a exposée. Le microprocesseur comprend une unité d'in-
terfaçage de bus 10 qui est relié à un bus de données externes 30 sur 32 bits et qui, de plus, est reliée à un bus
d'adresses 31 et à plusieurs autres lignes de commande.
L'unité d'interfaçage de bus 10 ne considère que les adres-
ses physiques (matérielles), de sorte que les adresses
d'opérande doivent passer tout d'abord par l'unité de seg-
mentation 14 et par l'unité de pagination 13. L'unité d'an-
témémoire 12 et une unité de pré-recherche sont également reliées à l'unité d'interfaçage de bus 10. L'unité de
pré-recherche demande de façon continuelle à l'unité d'in-
terfaçage de bus d'aller chercher le contenu mémoire de
l'adresse de l'instruction suivante. Dès que l'unité de pré-
recherche reçoit la donnée, elle la place dans la file d'attente et, si la file d'attente n'est pas pleine, demande
une autre rubrique de 32 bits de mémoire.
L'unité d'antémémoire 12 comprend une antémémoire de données et une unité de commande qui contrôle les accès de
l'antémémoire. L'unité de pré-recherche 11 et l'unité d'an-
témémoire 12 sont toutes deux reliées à l'unité de segmen- tation 14 via un bus sur 32 bits. L'unité de segmentation 14
traduit les adresses segmentées en adresses linéaires.
L'unité de segmentation 14 est reliée à l'unité de pagination 13 et à l'unité d'antémémoire 12 par l'intermédiaire d'un bus d'adresse linéaire sur 32 bits 20, également appelé "bus LA" (LA = Linear Address: adresse
linéaire). L'unité de pagination 13 prend les adresses liné-
aires produites par l'unité de segmentation 14 et les convertit en adresses physiques. Si la pagination est
dézactivée, les adresses linéaires de l'unité de segmenta-
tion deviennent les adresses physiques. Si la pagination est activée, les adresses linéaires du microprocesseur 80486
sont divisées en blocs de 4096 octets appelés "pages".
Chaque page peut être mappée sur une adresse entièrement différente. Pour les besoins de la compréhension de la présente invention, on supposera que l'unité de segmentation 14 est la même que celle utilisée dans le microprocesseur
Intel 80386 disponible dans le commerce. Les unités de seg-
mentation et de pagination du microprocesseur Intel 80386
sont décrites dans une demande de brevet apparentée, corres-
pondant à la demande déposée aux USA le 13 juin 1985 sous le
numéro 744389, et intitulée Memory Management for Micro-
processor, qui appartient à la Demanderesse. Au sein du microprocesseur, les instructions sont appliquées à l'unité de décodage d'instruction 15. L'unité de décodage fonctionne
d'une manière semblable à celle de l'unité de pré-recherche.
Elle prend les divers octets dans la file d'attente de pré-
recherche et détermine le nombre d'octets-nécessaire pour achever l'instruction suivante. L'unité de décodage opère avec une unité de commande 19 dans laquelle sont mémorisées
des instructions de microcode, l'unité de commande 19 déli-
vrant des séquences de signaux de commande pour le micro-
processeur. L'unité de décodage -'instruction 15 a été re-
il présentée reliée à l'unité de commande 19, alors que l'unité
de commande 19 a été illustrée reliée à l'unité de segmen-
tation 14, à l'unité de données 18 et à l'unité à virgule
flottante 17. L'unité de données 18 est une unité arith-
métique et logique (UAL) qui exécute des fonctions UAL d'une
manière semblable à celle du microprocesseur Intel 80386.
Le microprocesseur comprend également une unité à virgule flottante 17 servant à exécuter des calculs en virgule flottante. La configuration précise de l'unité à virgule
flottante 17, ainsi que des autres unités du micropro-
cesseur, n'est pas essentielle pour la compréhension de la présente invention. Les flux de signaux entre les diverses unités du microprocesseur ne seroht décrits que dans la mesure o ils sont nécessaires pour comprendre la présente
invention.
Description du mode de réalisation préféré
Le vérificateur d'alignement sélectionnable de la présente invention est visible de l'extérieur par le programmeur sous forme de deux nouveaux bits d'état (ou de mode). L'un des bits se trouve dans le registre EFLAGS et sera appelé "bit AC" (AC = Alignmrent Check: vérification d'alignement) . Le registre EFLAGS conserve l'information de statut relative à l'instruction courante (le registre EIP contient l'adresse de l'instruction en cours d'exécution) ainsi qu'un certain nombre de champs relatifs à différentes instructions. L'autre bit, appelé "bit AM" (AM = Alignment Masking = masquage d'alignement), est situé dans le registre
de commande CR0.
On a illustré sur la figure 2 les détails du registre EFLAGS (on notera que les bits de drapeau 1, 3, 5, 15 et 19 à 31 sont "indéfinis"). Le bit AC est situé à la position du
- bit 18. Le bit AC active la génération de défaut si la réfé-
rence mémoire concerne une adresse désalignée. Par exemple, ceci peut être provoqué par un accès de mot à une adresse impaire, un accès de double mot à une adresse qui n'est pas zéro modulo 4, ou une référence de huit octets à une adresse qui n'est pas zéro modulo 8. Les défauts d'alignement sont générés seulement au niveau 3, c'est-à-dire que l'on ignore
le positionnement du bit AC (il est implicitement à zéro)-
aux niveaux 0, 1 et 2. Les références aux tables de descripteurs (pour les chargements du sélecteur) sont impli- citement des références au niveau 0, même si l'instruction
"amenant" la table de descripteurs est exécutée au niveau 3.
Dans le mode de réalisation préféré, on rend compte des
défauts d'alignement par l'intermédiaire du bit d'interrup-
tion 17, avec un code d'erreur de '0' (le bit 17 et le bit
de mode virtuel (VM) qui indique que le flux de l'ins-
truction en cours d'exécution est du code x 86 lorsqu'il est
établi à 1).
Le tableau suivant donne la liste des alignements requis pour les divers types de données du microprocesseur:
TABLEAU 1
Alignement requis en fonction du type de donnée Type de donnée Alignement Mot 2 Double mot 4 Nombre réel court 4 Nombre réel long 8 Nombre réel temporaire 8 Sélecteur 2 Pointeur segmenté de 48 bits 4 Pointeur plat de 32 bits 4 Pointeur segmenté de 32 bits 2 "Pseudo-descripteur" de 48 bits 4 Zone de sauvegarde FSTENV/FLDENV 4/2 (sur taille opérande) Zone de sauvegarde FSAVE/FRSTOR 4/2 (sur taille opérande) Chaine de bits 4 Du fait que la vérification d'alignement doit être activée séparément pour chaque tâche, on a inclus cette caractéristique dans le registre EFLAGS car chaque tâche
possède sa propre "copie" de EFLAGS.
On a illustré sur la figure 3 le registre de commande CR0 contenant le bit AM de commande de masquage d'alignement. Le registre de commande CR0 est l'un de plusieurs registres de commande qui assurent la régulation de la pagination et du
fonctionnement du co-processeur numérique du microproces-
seur. Comme illustré sur la figure 3, le bit de commande de
masquage d'alignement est à la position binaire 18 de CR0.
Le bit AM commande la possibilité pour le bit AC se trouvant dans EFLAGS d'autoriser ou non un défaut d'alignement. AM = 0' désactive la commande (par exemple dans le cas d'une compatibilité avec le microprocesseur 80386), tandis que AM = '1' l'active. On ne peut accéder au bit AM qu'au niveau de privilège 0, de sorte que, en principe, seul le système d'exploitation pourra y accéder. Le système d'exploitation ne va positionner ce bit à '1', afin d'activer les défauts d'alignement, que si le système d'exploitation contient le
gestionnaire d'interruptions approprié.
L'utilisation des deux bits pour activer les vérifi-
cations d'alignement assure une très grande souplesse de fonctionnement. Le bit AM permet une commande globale par le système d'exploitation, car il est situé dans le registre CR0 qui est global pour toutes les tâches et il ne peut être référencé que par le système d'exploitation. Typiquement, il
sera positionné lors de l'initialisation du système d'ex-
ploitation, à condition que le système d'exploitation con-
tienne le gestionnaire d'interruptions approprié (en consi-
dérant par exemple le bit 17 de CR0).
Le bit AC permet une commande au niveau de l'application.
Il se trouve dans le registre EFLAGS, qui est échangé lors descommutations de tâches et qui est accessible par une application qui s'exécute au niveau 3. Comme EFLAGS est échangé lors des commutations de tâches, tout se passe comme si chaque tâche possédait une copie privée de EFLAGS, et
donc sa propre copie du vérificateur d'alignement. Typique-
ment, les programmes d'intelligence artificielle n'ont besoin de disposer d'une vérification d'alignement qu'au niveau 3, c'est à dire au niveau des applications. En ayant accès aux deux bits de masque, le programmeur possède deux possibilités de sélectionner l'exécution ou non d'une vérification d'alignement: l'une au niveau des applications (le registre EFLAGS peut être effacé ou chargé par le programme) et l'autre au niveau du système d'exploitation (effacement ou chargement du bit AN). On comprendra que les deux bits opèrent le masquage à tous les niveaux. Cependant, AC est implicitement masqué à tous les niveaux sauf au niveau 3, tandis que le bit AM ne peut être positionné ou remis à zéro
(c'est-à-dire manipulé) qu'au niveau 0.
La mise en oeuvre du vérificateur d'alignrement de l'in-
vention est fondée sur la reconnaissance d'un accès à des données désalignées. Ceci est effectué à partir des trois bits inférieurs du bus d'adresse linéaire sur 32 bits 20 (voir figure 4) et de la longueur du cycle de bus telle qu'ordonnée par l'unité de décodage d'instruction 15 ou par l'unité de commande 19. Les défauts de référence de données désalignées sont générés au sein de l'unité de segmentation 14, qui génère également les adresses linéaires. Le défaut
est pris en charge par l'unité de commande 19.
Le tableau ci-dessous définit un accès de données désali-
* gnées pour des cycles de bus de longueurs différentes en
fonction des valeurs des trois bits inférieurs du bus LA 20.
Les longueurs des cycles de bus sont déterminées en décodant le champ de "type de requête de bus" venant de l'unité de
décodage d'instruction 15 ou de l'unité de commande 19.
3C
TABLEAU 2
Longueur du Bus LA cycle de bus (bits Observations (en octets) 2,1,0)
1 xxx Aucun accès désaligné n'est possible.
2 xxl L'accès à l'adresse impaire est désaligné.
4 xxl L'accès à une adresse traversant une
xlx frontière de 4 octets est désaligné.
8 xxl L'accès à une adresse traversant une
xlx frontière de 8 octets est désaligné.
lxx
4ND xxl C'est un cycle de bus 4 octets non effectué.
xlx Donc un autre cycle 4 octets va arriver et
lxx sera donc traité comme un cycle 8 bits.
Une fois que l'on a déterminé qu'il y a eu accès désa-
ligné, il est relativement simple de déterminer les autres conditions nécessaires pour générer un défaut. Sur la figure , on a représenté un diagramme des circuits logiques de vérification d'alignement. Les portes logiques 40 à 42 et les verrous 41 et 45 sont utilisés pour décoder les signaux reçus de l'unité de segmentation 14 afin de s'assurer que l'unité 14 est en train de piloter le bus 20 et que le cycle de bus ne sera pas avorté. Les trois bits de rang inférieur du bus LA 20 apparaissent sur les lignes 51 à 53. Ces signaux sont combinés avec des signaux du champ de type de requête de bus provenant soit de l'unité 15 soit de l'unité
19 et appliqués sur les entrées des portes 46 et 69. Globa-
lement, la combinaison des portes 46, 48, 49 et 67-72 pro-
duit un ensemble de signaux qui indique la longueur en
octets de la référence désalignée conformément au tableau 2.
Par exemple, la porte 46 produit sur la ligne 80 un signal qui signifie que l'on a une référence désalignée sur deux octets, la porte 67 produit sur la ligne 81 un signal signifiant que l'on a une référence désalignée sur quatre octets, la porte 71 produit sur la ligne 82 un signal signifiant que l'on a une référence désalignée sur huit
octets et la porte 49 produit sur la ligne 83 un signal si-
gnifiant que l'on a une référence désalignée 4ND. On effectue un OU logique entre les signaux 80 à 83 au moyen de la porte 47, le résultat en étant conservé dans le verrou 50 (les symboles Pl et P2 associés aux verrous de la figure 5
désignent la phase au cours de laquelle chacun reçoit l'im-
pulsion d'horloge). Par exemple, les verrous 41 et 59 reçoivent l'impulsion d'horloge à la phase n 2 de l'horloge
système, tandis que les verrous 45, 50 et 62 reçoivent l'im-
pulsion d'horloge à la phase n l de l'impulsion d'horloge suivante. Les bits AM et AC apparaissant sur les lignes 54 et 55 sont appliqués en entrée à la porte ET 57. Pour générer un
défaut de désalignement, l'un et l'autre doivent être à '1'.
La sortie de la porte 57 est soumise à un ET logique, par la porte 63, avec les sorties des verrous 45 et 50 ainsi qu'avec le niveau de privilège du programme, délivré sur la ligne 56. Dans le mode de réalisation actuellement préféré, le niveau de privilège, tel que déterminé par les bits CPL de l'unité de commande 19, doit être au niveau 3. Les portes 58 à 62 délivrent également une entrée à la porte ET 63 permettant de s'assurer que le type de cycle -de bus est un
type dans lequel les violations AC sont permises (les vio-
lations AC ne sont pas permises sur certains cycles; par exemple, elles ne sont pas permises sur les cycles de branchement car, par définition., il s'agit de cycles à octet
unique).
La sortie de la porte 63 est reliée à l'une des entrées de la porte ET 65. L'autre entrée de la porte ET 65 est la ligne 66 qui donne un signal indiquant, avant que l'on ne
génère le signal de défaut, que le pipeline du micropro-
cesseur est libre. Globalement, outre le ET logique sur les bits AC et AM, la logique de la figure 5 est conçue de manière à s'assurer que l'on n'effectue aucun accès à aucun des segments du système et que l'on exécute un cycle de bus légitime. La porte ET 65 produit un signal appelé SINTR (Segmentation unit INTeRrupt: interruption de l'unité de segmentation) sur la ligne 67, qui est reliée à l'unité de commande 19, chaque fois que les conditions ci-dessus sont toutes remplies).
À réception de SINTR, l'unité de commande arrête immédia-
tement toute exécution et fait le nécessaire pour gérer ce défaut de vérification d'alignement. Elle insère deux cycles d'horloge d'opération néant" (NOP) puis force le microcode au point d'entrée correspondant au défaut de vérification d'alignement. A partir de là, le microcode prend en charge toutes les opérations nécessaires pour mémoriser l'adresse
de retour et informer le programme utilisateur du défaut.

Claims (11)

REVENDICATIONS
1. Un microprocesseur, comprenant: - une mémoire, pour conserver des données, - une unité de commande, pour exécuter un programme, et - des moyens de référencement, pour faire référence à des
données mémorisées dans cette mémoire à des adresses quel-
conques, caractérisé en ce qu'il comprend en outre: - des moyens de détection, pour détecter des références
de données désalignées, ces moyens de détection étant sélec-
tionnables de manière que, lorsque ces moyens de détection
sont activés et que les moyens de référencement font réfé-
rence à une donnée désalignée, les moyens de détection génè-
rent un défaut qui interrompe ledit programme.
2. Le microprocesseur de la revendication 1, comprenant en outre un système de protection permettant dé donner accès à des données à un niveau de privilège demandé qui identifie la préséance dudit programme, ce niveau de privilège demandé étant l'un des niveaux d'une pluralité de niveaux allant du
niveau le moins privilégié au niveau le plus privilégié.
3. Le microprocesseur de la revendication 2, dans lequel les moyens de détection comprennent un premier bit de mode
et un second bit dé mode, le premier bit de mode (AC) pou-
vant être accédé à tout niveau de privilège et le second bit
de mode (AM) ne pouvant être accédé qu'au niveau de privi-
lège le plus élevé.
4. Le microprocesseur de la revendication 3, dans lequel le moyen de détection n'est activé que si l'un et l'autre
des bits de mode (AC, AM) sont positionnes.
5. Le microprocesseur de la revendication 4, dans lequel les moyens de détection ne sont activés qu'au niveau le
moins privilégié.
6. Un microprocesseur, comprenant: - une mémoire, pour conserver des données, - une unité de commande, pour exécuter un programme, et - des moyens de référencement, pour faire référence à des données mémorisées dans cette mémoire à des adresses quel- conques, caractérisé en ce qu'il comprend en outre - un système de protection, pour permettre un accès sélectif à des objets de données en fonction du niveau de privilège dudit programme, et - une unité de segmentation (14), pour traduire des adresses segmentées en adresses linéaires, cette unité de segmentation comprenant des moyens de détection pour détecter des références de données désalignees, ces moyens de détection étant optionnellement activés de manière que, lorsque ces moyens de détection sont activés et que les
moyens de référencement font référence à une donnée désali-
gnée, les moyens de détection génèrent un défaut qui inter-
rompe ledit programme.
7. Le microprocesseur de la revendication 6, dans lequel les moyens de détection comprennent un premier bit de mode
et un second bit de mode, le premier bit de mode (AC) com-
mandant le défaut au niveau le moins privilégié et le second
bit de mode (AM) commandant le défaut au niveau le plus pri-
vilégié du système de protection.
8. Le microprocesseur de la revendication 7, dans lequel ledit défaut n'est généré que si l'un et l'autre des bits de mode (AC, AM) sont positionnés, activant ainsi les moyens détecteurs.
9. Le microprocesseur de la revendication 8, dans lequel ledit défaut n'est généré que lorsque l'on n'effectue aucun
accès aux segments système dans l'unité de segmentation.
10. Le microprocesseur de la revendication 9, comprenant en outre une unité de pagination (13) reliée à l'unité de segmentation par un bus (20), cette unité de pagination convertissant les adresses linéaires en adresses physiques et certains bits dudit bus identifiant un accès à une donnée désalignée aux moyens de détection, pour des cycles de bus de longueurs différentes.
11. Un microprocesseur permettant d'accéder à des objets de données à des adresses quelconques, caractérisé en ce qu'il comprend: - un système de protection pour accorder l'accès à des objets de données à un certain niveau de privilège, - des moyens de détection, pour détecter des références
de données désalignées, ces moyens de détection étant sélec-
tionnables de manière que, lorsque ces moyens de détection
sont activés et que l'on fait référence à un objet de don-
nées désaligné, ces moyens de détection génèrent un défaut, et - des moyens de commande, pour activer et désactiver les moyens de détection, ces moyens de commande comprenant-un premier bit de mode (AC) servant à masquer ledit défaut à un niveau le moins privilégié et un second bit de mode (AM)
servant à masquer ledit défaut à un niveau le plus privi-
légié.
FR9004228A 1989-04-05 1990-04-03 Microprocesseur a verification selectionnable de l'alignement des references memoire Expired - Lifetime FR2645664B1 (fr)

Applications Claiming Priority (1)

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

Publications (2)

Publication Number Publication Date
FR2645664A1 true FR2645664A1 (fr) 1990-10-12
FR2645664B1 FR2645664B1 (fr) 1993-12-17

Family

ID=23305466

Family Applications (1)

Application Number Title Priority Date Filing Date
FR9004228A Expired - Lifetime FR2645664B1 (fr) 1989-04-05 1990-04-03 Microprocesseur a verification selectionnable de l'alignement des references memoire

Country Status (6)

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

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

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
ELECTRONIC DESIGN. vol. 33, no. 25, Octobre 1985, HASBROUCK HEIGHTS, NEW JERSEY pages 161 - 174 RAKESH AGARWAL ET AL. '32-bit ¶P is a fine match for today's languages and operating systems' *
PROCEEDINGS OF THE IEEE INTERNATIONAL CONFERENCE ON COMPUTER DESIGN: VLSI IN COMPUTERS 10 Octobre 1985, RYE TOWN HILTON, PORT CHESTER, NY pages 347 - 352 RICHARD R. HEYE 'A VLSI chip set for a high-performance VAX' *
WESCON PROCEEDINGS vol. 29, 22 Novembre 1985, SAN FRANSISCO, CA pages 1 - 9 ROBERT G. ANDREWS ET AL. 'The Zilog Z80000 CPU' *

Also Published As

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

Similar Documents

Publication Publication Date Title
TWI796031B (zh) 用於以在環移轉期間保護堆疊的處理器擴展的設備
EP3105681B1 (fr) Opération d'identification de région pour identifier une région d'une unité d'attribut de mémoire correspondant à une adresse mémoire cible
Eilam Reversing: secrets of reverse engineering
Ozdoganoglu et al. SmashGuard: A hardware solution to prevent security attacks on the function return address
US6618769B1 (en) Module-by-module verification
US7073059B2 (en) Secure machine platform that interfaces to operating systems and customized control programs
CN109074447A (zh) 用于元数据处理的技术
US6601114B1 (en) Fully lazy linking with module-by-module verification
Perla et al. A guide to kernel exploitation: attacking the core
KR19990081958A (ko) 어레이 경계 검사 방법 및 장치와, 이를 포함하는 컴퓨터시스템
Gilmont et al. Enhancing security in the memory management unit
EP1617335A1 (fr) Procédé de programmation d'un contrôleur de DMA dans un système sur puce et système sur puce associé
EP1522923A2 (fr) Architecture de processeur à plusieurs contextes d'exécution simultanés
Watson et al. Capability hardware enhanced RISC instructions: CHERI instruction-set architecture
CA2309788A1 (fr) Antememorisation des modules non securises en vue de la verification module par module
WO2020041473A1 (fr) Système informatique doté de défenses de cibles mobiles contre des attaques de vulnérabilité
US6763397B1 (en) Fully lazy linking
Singh Identifying malicious code through reverse engineering
FR2645664A1 (fr) Microprocesseur a verification selectionnable de l'alignement des references memoire
WO2023034586A1 (fr) Systèmes et procédés de chargement à la demande de métadonnées
JP2021157766A (ja) シャドウスタックを効率的に管理および処理するための装置および方法
US6766521B1 (en) Dataflow algorithm for symbolic computation of lowest upper bound type
Nelißen “Buffer overflows for dummies
Smith Hacking Code
US20220207133A1 (en) Cryptographic enforcement of borrow checking across groups of pointers