Sommaire Précédent Suivant


Architecture

1. Architecture générale

Le microprocesseur proprement dit est structuré en quatres modules :

A ceci viens s'ajouter le bus mémoire qui gère aussi les entrées/sorties.


Schema général

2. Les difficultés rencontrées

Adressage virtuel
On a vu précédemment que toutes les instructions prenaient la mê place en mémoire : 2 mots mémoire, or le micro, qui a le droit de lire les instructions avec read ne voie voit que des mots mémoire de 16 bits. Il faudrait donc 2 cycle pour lire chaque instruction. Ce qui est génant car toutes les opérations de l'ALU s'effectuent en 1 cycle. On a donc recours un bus de donnée et d'adresses virtuel pour les opérations read et write, tandis que le module SEQ lit sur un bus de donnés de 32 bits ( 15 bits d'adresses) une instruction par cycle.

Accès à la mémoire
Le choix étant fait que la mémoire de code est aussi la mémoire de données, il se pose le problème de l'accès à la mémoire : comme SEQ lit à chaque cycle dans la mémoire, il faut nécessairement interrompre cette lecture lors d'une instruction read ( et pour rendre les choses homogènes, on le fait aussi pour write ). Dans le cas des instruction de lecture/écriture, on utilise donc deux cycles du processeur : pendant le premier cycle, on lit l'instruction et on calcule l'adresse mémoire où lire ou écrire les données, pendant le second cycle, on lit/écrit à l'adresse calculée et SEQ ne lit pas l'instruction suivante.

3. Un log de la compilation

cd /home/heriard/jazz/micro/
make montre
jazz -O alu.jzz reg.jzz mem.jzz seq.jzz micro.jzz %% The Jazz compiler version 0.3.5
%% Compilation: 2.54 s (2.70 s real)
%% Link: 0.06 s (0.06 s real)
%% Device "ALU". nets: 368, mux: 312, per: 53, op: 365, net/op: 1.00
%% Combinatorial depth: 57
%% Writing "./ALU.jzn"
%% Device "REG". nets: 671, reg: 512, mux: 1504, per: 17, &: 574, ~: 31, op: 2638, net/op: 0.25
%% Combinatorial depth: 6
%% Writing "./REG.jzn"
%% Device "MEM". nets: 3670, reg: 496, mux: 2338, per: 32, |: 10, &: 67, ~: 1, op: 2944, net/op: 1.24
%% Combinatorial depth: 13
%% Writing "./MEM.jzn"
%% Device "SEQ". nets: 181, reg: 15, mux: 15, per: 2, &: 15, ^: 15, ~: 1, op: 63, net/op: 2.87
%% Combinatorial depth: 17
%% Writing "./SEQ.jzn"
%% Device "MICRO". nets: 6079, reg: 1060, mux: 4275, per: 106, |: 31, &: 665, ^: 15, ~: 38, op: 6190, net/op: 0.98
%% Combinatorial depth: 69
%% Writing "./MICRO.jzn"
%% Execution: 8.24 s (8.24 s real)
make -C ./as ass
make[1]: Entering directory `/home/heriard/jazz/micro/as'
camlc -c mint.ml
camlc -c instr.mli
camlc -c instr.ml
camlc -c parsefuncs.ml
camlyacc parser.mly
camlc -c parser.mli
camlc -c parser.ml
camllex lexer.mll
70 states, 28 actions.
camlc -c lexer.ml
camlc -c as.ml
camlc -o ass mint.zo instr.zo parsefuncs.zo parser.zo lexer.zo as.zo
make[1]: Leaving directory `/home/heriard/jazz/micro/as'
mv -f ./as/ass ./bin/
make -C ./as blank
make[1]: Entering directory `/home/heriard/jazz/micro/as'
camlc -c blank.ml
camlc -o blank blank.zo
make[1]: Leaving directory `/home/heriard/jazz/micro/as'
mv -f ./as/blank ./bin/
./bin/ass < boot.src > boot.rom
./bin/blank 16 512 >> boot.rom
jazz -O clock_in.jzz
%% The Jazz compiler version 0.3.5
%% Compilation: 1.31 s (1.32 s real)
%% Link: 0.05 s (0.04 s real)
%% Device "INPUTS". nets: 514, per: 1, op: 1, net/op: 514.00
%% Combinatorial depth: 1
%% Writing "./INPUTS.jzn"
%% Execution: 0.08 s (0.07 s real)

Sommaire Précédent Suivant