Accueil > Réalisations > Publications > Articles > Les articles retrouvés > Quelle mémoire !

Quelle mémoire !

jeudi 28 juin 2007, par Paul Courbis

« Quelle mémoire ! », Haute Performance, n° 8, Mai 1994, pp. 12-13.

Aussi disponible en version PDF...

font-family:Helvetica'>Les calculatrices de la série HP48 sont capables de
gérer une grande quantité de mémoire… Mémoire vive, mémoire morte, Ram des
entrées/sorties, cartes enfichables… Tout cela s’enchevêtre en tous sens !
Nous allons découvrir comment la HP48 gère toutes ces mémoires. Dans ce premier
article, nous allons étudier la mémoire de la HP48 depuis le “hardware” (c’est
à dire la carte électronique de la HP48) jusqu’au niveau logiciel le plus bas
(le langage-machine)…

font-family:Helvetica;color:blue'> 

<span
style='font-family:"New York";color:aqua'><img width=632 height=279
src="/Data/img/HP08_fichiers/image002.gif" v:shapes="_x0000_i1025"> color:aqua'>

<span
style='font-size:10.0pt;font-family:Helvetica;color:black'>- Schéma fonctionnel
de la mémoire de la HP48 -

<span
style='font-size:10.0pt;font-family:Helvetica;color:black'> 

"Times New Roman";color:black;mso-ansi-language:FR;mso-fareast-language:FR;
mso-bidi-language:AR-SA'>
mso-break-type:section-break'>

font-variant:normal;color:black;text-transform:uppercase;mso-char-type:symbol;
mso-symbol-font-family:Symbol;font-weight:normal'> symbol;mso-symbol-font-family:Symbol'>®
<span
style='font-size:36.0pt;font-family:Symbol;font-variant:normal;color:black;
text-transform:uppercase;font-weight:normal'>
<span
style='font-variant:normal;color:black;text-transform:uppercase'>Le bus

color:black'>* Le bus : une série de
fils…

L’épine dorsale de l’électronique
de la HP48 est le bus. Il s’agit simplement de 4 fils (ou, plus exactement, de
4 “pistes” situés sur la carte électronique). Son seul point commun avec les
transports en commun est sa capacité à véhiculer des informations. Comme le bus
comporte 4 fils, les informations sont transmises quartet par quartet (4 bits
sont transférés en parallèle).

Son rôle est de relier le microprocesseur
(le Saturn) aux différents périphériques qu’il commande et, en particulier, aux
différentes mémoires contenues dans la calculatrice…

color:black'>* Informations circulant sur le
bus

Divers messages peuvent transiter
sur le bus : ce sont des demandes d’informations (qu’y a-t-il d’écrit à
une adresse donnée), des réponses, des ordres (de configuration, d’écriture)
ainsi que des commandes dont la signification dépend du périphérique récepteur
(ce sont les fameuses “bus commands” du SATURN : BUSCB, BUSCC et BUSCD).

color:black'>* La technique de
“daisy-chaining”

Les différents périphériques sont
chaînés entre eux par un fil supplémentaire, la “daisy-chain”. Ce fil indique
au périphérique qu’il doit prendre en compte un message sur le bus.

Concrètement, lorsque le Saturn
désire communiquer avec un périphérique, il émet un message sur le bus, puis il
active la “daisy-chain”. Le premier périphérique (le gestionnaire de Ram I/O)
interprète alors le message. Si ce message lui est destiné il le traite. Sinon
il active la “daisy-chain” du module suivant, lui signifiant ainsi que le
message est peut-être pour lui… Et ainsi de suite jusqu’au dernier périphérique
(le gestionnaire de Rom).

On peut en déduire une notion de
priorité entre les différents périphériques : plus un périphérique est
proche du Saturn, plus il est prioritaire (c’est pourquoi la Ram I/O a priorité
sur le premier gestionnaire de mémoire et ainsi de suite jusqu’à la Rom qui est
la moins prioritaire des mémoires).

font-variant:normal;color:black;text-transform:uppercase;mso-char-type:symbol;
mso-symbol-font-family:Symbol;font-weight:normal'> symbol;mso-symbol-font-family:Symbol'>®
<span
style='font-size:36.0pt;font-family:Symbol;font-variant:normal;color:black;
text-transform:uppercase'>
color:black;text-transform:uppercase'>Les gestionnaires

Pour chacune des mémoires (Ram
I/O, Ram interne…), on trouve un gestionnaire. Ce gestionnaire est toujours
présent, même si la mémoire correspondante est absente de la machine (par
exemple, le gestionnaire de carte 1 ne fait pas partie de la carte elle-même,
qui ne contient que la mémoire).

color:black'>* Le rôle des différents
gestionnaires

Chaque gestionnaire remplit deux
rôles :

 Il
connaît l’adresse de début et la taille de sa mémoire, ce qui lui permet de
déterminer si une demande de lecture ou d’écriture le concerne ou non. Ces deux
valeurs peuvent être fixes ou réglables (voir plus loin). Les gestionnaires
peuvent se trouver dans plusieurs états (configuré, non configuré, en cours de
configuration) ;

 Il
réalise l’interface entre le bus (4 bits) et les mémoires proprement dites (8
bits).

color:black'>* Le gestionnaire de Ram /O

Seule son adresse de début peut
être fixée, elle est arrondie modulo #100h. Il ne peut être que dans deux
états : configuré (état normal) ou non-configuré.

Ce module est lui-même relié à
divers périphériques (horloge, écran, prise RS232c…), ainsi qu’au bus lui-même
(par à travers les drivers écran et le calculateur de CRC qui calcule une somme
de contrôle sur les données transitant sur le bus, en provenance des 4
gestionnaires de mémoire et de la Rom).

color:black'>* Les gestionnaires de mémoire

Ces quatre gestionnaires sont
configurables en taille et en adresse. La taille minimale est arrondie modulo
#1000h quartets (minimum : #1000h), l’adresse de départ doit être un
multiple de la taille. Trois états sont possibles : configuré (état normal),
non configuré (ni taille, ni adresse de départ), en cours de configuration
(taille configurée, adresse de départ non configurée).

Lorsque la taille configurée est
inférieure à la taille réelle de la mémoire, seul son début est accessible. Si
la taille configurée est supérieure, plusieurs copies de la mémoire sont vues
par le Saturn (en adresse de début, adresse de début + taille réelle…).

Les quatre gestionnaires de
mémoire correspondent aux mémoires suivantes :

 La
mémoire interne : c’est le gestionnaire n° 1 qui la gère ;

 Le
gestionnaire de bancs (HP48 G/GX) : gestionnaire 2. Cette zone spéciale de
mémoire permet de sélectionner le banc actif d’une carte multi-bancs en port 2,
en lisant à une adresse correspondant au banc désiré ;

 Les
cartes enfichables : elles sont gérées par les gestionnaires 2 et 3 dans
le cas des HP48 S/SX, par les gestionnaires 3 et 4 dans le cas des HP48
G/GX ;

 Le
module “fantôme” (HP48 S/SX uniquement) : c’est un gestionnaire non
utilisé sur ces machines, qui est configuré à l’adresse #D0000h, pour une
taille de #1000h quartets (taille minimale).

color:black'>* Le gestionnaire de Rom

Ce gestionnaire n’est
configurable ni en taille (toujours 512 Ko), ni en adresse (toujours #0h).

Dans le cas des HP48 S/SX, la
taille réelle de la Rom est de 256 Ko. C’est pourquoi on trouve 2 copies de la
mémoire morte (la première commence en #0h, la seconde en #80000h).

Dans le cas des HP48 G/GX, la Rom
occupe bien 512 Ko, mais, pour des raisons de compatibilité avec les HP48 S/SX,
peut être forcée à se comporter comme une Rom de 256 Ko (donc dupliquée en
#80000h). Cette “pseudo-configuration” de la Rom s’effectue à l’aide du bit 3
du quartet #129h (Ram I/O).

color:black'>* Quelques conséquences

La conséquence directe de cette
organisation, est l’existence de “mémoire cachée” : si deux gestionnaires
partagent un même espace d’adressage, la mémoire visible pour cet espace commun
sera celle du gestionnaire le plus prioritaire.

Ainsi la Ram I/O, normalement
configurée à l’adresse #100h, cache-t-elle 64 quartets de la Rom, la Ram
interne en cache aussi une partie (en configuration normale : la zone
#70000h-#7FFFFh pour les HP48 S/SX, #80000h-#8FFFFh pour les HP48 G et
#80000h-#BFFFFh pour les HP48 GX).

font-variant:normal;color:black;text-transform:uppercase;mso-char-type:symbol;
mso-symbol-font-family:Symbol;font-weight:normal'> symbol;mso-symbol-font-family:Symbol'>®
<span
style='font-size:36.0pt;font-family:Symbol;font-variant:normal;color:black;
text-transform:uppercase'>
color:black;text-transform:uppercase'>Agir sur la
mémoire

Nous avons vu que différents
types de messages transitaient sur le bus. En utilisant ces messages au travers
des instructions du Saturn, nous pouvons agir sur les mémoires, ou, plus
exactement, sur les gestionnaires :

color:black'>* Le plus simple : lire et écrire

Ce sont les deux opérations les
plus simples : on demande la lecture ou l’écriture d’informations à une
adresse donnée (contenue dans le registre D0 ou D1). Ce sont les instructions
de la forme Reg=DATn c et DATn=Reg c (où Reg est un des 4 registres A, B, C et
D, n vaut 0 ou 1 et c est le champ sur lequel porte l’opération).

Ces instructions sont converties
en commandes du bus par le Saturn et exécutées par le gestionnaire concerné.

color:black'>* Configurer les gestionnaires

Diverses instructions s’adressent
directement aux gestionnaires. On peut :

 déconfigurer
tous les gestionnaires : l’instruction RESET ordonne à l’ensemble des
gestionnaires (le pouvant) de se placer en état de déconfiguration ;

 déconfigurer
un gestionnaire donné en plaçant dans C champ A une adresse dans son espace
d’adressage et en appellant l’instruction UNCNFG (en général, on utilise
l’adresse de début).

 Remarque :
si l’adresse correspond à l’espace d’adressage de deux gestionnaires, c’est le
gestionnaire le plus prioritaire qui exécutera la commande ;

 inversement,
on peut donner un ordre de configuration à un gestionnaire. Cet ordre s’adresse
au premier module non complètement configuré (non configuré ou en cours de
configuration) grâce à l’instruction CONFIG.

 Il
convient de placer dans le champ A de C les données nécessaires à la
configuration :

- la
taille, en complément à 2, pour une configuration en taille<span
style="mso-spacerun: yes"> 
(pour le premier ordre de configuration d’un
des 4 gestionnaires de mémoire) ;

- l’adresse
de départ pour la (première et seule) configuration de la Ram I/O, ainsi que
pour la seconde configuration des 4 gestionnaires de mémoire.

 identifier
le premier module non-configuré ou en cours de configuration grâce à C=ID qui
renvoie dans C champ A un identifiant de ce module, de son état et de son
ancienne configuration (dans l’état normal de la machine, tous les
gestionnaires sont configurés, on obtient #0000h).

color:black'>* Quelques précautions à prendre
 :

La première des précautions est
d’interdire les interruptions (par GOSBVL #01115h). Attention, il ne faut pas
oublier de les ré-autoriser après reconfiguration de la mémoire (par GOSBVL
#010E5h).

La seconde précaution est
simple : ne jamais scier la branche sur laquelle on est assis. Autrement
dit : ne jamais déconfigurer le gestionnaire correspondant à la zone mémoire ou
se trouve votre programme…

En particulier, l’instruction
RESET ne vous sera pas d’une grande utilité.

font-variant:normal;color:black;text-transform:uppercase;mso-char-type:symbol;
mso-symbol-font-family:Symbol;font-weight:normal'> symbol;mso-symbol-font-family:Symbol'>®
<span
style='font-size:36.0pt;font-family:Symbol;font-variant:normal;color:black;
text-transform:uppercase;font-weight:normal'>
<span
style='font-variant:normal;color:black;text-transform:uppercase'>Conclusion

Dans cet article, nous avons vu
le niveau le plus bas de la gestion mémoire de la HP48. Dans le prochain nous
l’étudierons à un niveau plus élevé, plus proche de l’utilisateur :
comment la HP48 utilise-t-elle toute cette mémoire ?

En attendant, pour ceux qui
veulent des exemples concrets de programmes utilisants les instructions de bas
niveau étudiées ici, les programmes HRPEEK, qui permet la lecture de la cachée
(HP48 S/SX et G/GX), BPEEK et BPOKE, qui permettent de lire ou d’écrire sur les
différents bancs d’une carte multi-bancs en port 2 (HP48 GX) des livres Voyage
au centre de la HP48 (S/SX ou G/GX) répondront à vos attentes…

P.C.

Un message, un commentaire ?

modération a priori

Ce forum est modéré a priori : votre contribution n’apparaîtra qu’après avoir été validée par un administrateur du site.

Qui êtes-vous ?
Votre message

Pour créer des paragraphes, laissez simplement des lignes vides.

Les spams donneront systématiquement lieu à dépôt de plainte. Les messages peu aimables ou comportant trop de fautes d'orthographe seront purement et simplement supprimés sans publication. Aucune obligation de publication ne pourra être opposée au webmaster, sauf éventuel droit de réponse dûment justifié.
ipv6 ready ipv6 test
Suivre ce site :
Recommander cette page :
Bookmark and Share
Traduire :