Conception et exploitation des processeurs

Download Report

Transcript Conception et exploitation des processeurs

Conception et exploitation des processeurs
Structure du cours
Conception et exploitation des processeurs
Chargé de cours : Frédéric Pétrot
C1
Présentation du projet CEP
et rappels de VHDL
Chaîne de compilation
et assembleur MIPS
Conventions pour les appels de fonctions
Gestion des interruptions
C2
C3
C4
Équipe pédagogique :
Alban Bourge, Stéphane Mancini, Claire Maiza, Luc Michel,
Olivier Muller (resp.), Sebastien Viardot
Année universitaire 2013-2014
2 / 38
Conception et exploitation des processeurs
Conception et exploitation des processeurs
Introduction
Introduction
Plan
Introduction
1
Introduction
2
De ... à ...
3
Processeur
4
Fournitures et objectifs
5
VHDL
des périphériques simples : LED, boutons
6
Description structurelle
des périphériques complexes : carte VGA, clavier, ...
7
Description comportementale
Objectif :
Conception d’un ordinateur minimaliste
Comprenant :
un processeur
de la mémoire
des périphériques moins simples : 7-segments, timer, ...
3 / 38
4 / 38
Conception et exploitation des processeurs
Conception et exploitation des processeurs
Introduction
Introduction
Introduction
Introduction
Comment ?
Challenge, ...
Conception du processeur
ISA : MIPS R3000
stratégie de conception : PC/PO
langage de conception : VHDL
sur les cartes Spartan 3 de Xilinx
Notez bien : on ne part pas d’une feuille blanche, ...
Conception de l’environnement
utilisation de blocs existants : mémoire par ex.
conception de périphériques : VHDL
utilisation d’un « bus » permettant la connexion des
composants
5 / 38
Conception et exploitation des processeurs
6 / 38
Conception et exploitation des processeurs
De ... à ...
De ... à ...
Plan
Structure initiale
1
Introduction
2
De ... à ...
3
Processeur
4
Fournitures et objectifs
5
VHDL
6
Description structurelle
7
Description comportementale
7 / 38
8 / 38
Conception et exploitation des processeurs
Conception et exploitation des processeurs
De ... à ...
De ... à ...
Quelques précisions importantes
Structure finale
Mémoire RAM synchrone : ce n’est pas un bloc combinatoire !
Positionne addr => datain disponible au cycle suivant
Positionne addr/dataout/we=1 => dataout échantillonné clk "
Comportement registre, toujours lisible a
a. sans lecture/écriture simultanée
Impact vital !
sur la lecture de l’instruction à exécuter (ifetch)
positionner $pc dans un état, écrire $ir dans le suivant
sur la lecture de la donnée lors d’un lw
positionner ad dans un état, écrire $rt dans le suivant
9 / 38
Conception et exploitation des processeurs
10 / 38
Conception et exploitation des processeurs
De ... à ...
Processeur
Quelques précisions
Plan
Bus pour accès différents composants : principes
1
Introduction
2
De ... à ...
bus décode adresses pour calcul bus_ce(i) et bus_we(i)
(mutuellement exclusifs)
3
Processeur
mem_dataout échantillonné par composant avec bus_ce(i) =
1 et bus_we(i) = 1 sur clk "
4
Fournitures et objectifs
5
VHDL
processeur positionne mem_addr/mem_we=0/mem_ce=1
6
Description structurelle
sur clk ", composants produisent bus_datai(i)
7
Description comportementale
Écriture combinatoire :
processeur positionne
mem_addr/mem_dataout/mem_we=1/mem_ce=1
Lecture séquentielle :
bus utilise ce(i) du cycle précédent pour choisir quel signal
produire sur mem_datain
11 / 38
12 / 38
Conception et exploitation des processeurs
Conception et exploitation des processeurs
Processeur
Processeur
Processeur
Rappel des formats
Rappel des caractéristiques globales de l’architecture :
bus de données et d’adresse sur 32 bits
Où récupérer l’information dans l’instruction
registre
5 bits dans l’instruction
taille de l’instruction : 32 bits
ISA 3-adresses
32 registres opérandes des instructions, notés $0 à $31
immédiat
5 bits dans l’instruction, pour les décalages
16 bits dans l’instruction, différentes interprétations possibles
26 bits dans l’instruction, pour les sauts inconditionnels
indirect registre (+ déplacement)
registres $1 à $30 : usage général
registre $0 : vaut toujours 0
registre $31 : contient adresse de retour de fonction (imposé
par 2 instructions)
registre pc : adresse de l’instruction suivante
5 bits pour identifier le registre + 16 bits pour la constante
relatif à pc (2 cas)
registre ir : instruction en cours d’exécution
registres hi et lo : résultat multiplication ou division entière
non demandés en CP, utilisés en EP
13 / 38
Conception et exploitation des processeurs
14 / 38
Conception et exploitation des processeurs
Processeur
Processeur
Processeur
Processeur
Partie opérative
Debug :
$28 toujours
visible (par
morceau)
sur les LEDs
15 / 38
16 / 38
Conception et exploitation des processeurs
Conception et exploitation des processeurs
Processeur
Fournitures et objectifs
Processeur
Plan
Partie contrôle
Etats
Init
Waitfetch
Fetch
Decode
LUI
Opérations
PC
0x0
Emission de PC sur le bus d’adresse
IR
mem[PC ]
PC
PC + 4, décodage de IR
RD
IR15···0 ||016
1
Introduction
2
De ... à ...
3
Processeur
4
Fournitures et objectifs
5
VHDL
6
Description structurelle
7
Description comportementale
17 / 38
Conception et exploitation des processeurs
18 / 38
Conception et exploitation des processeurs
Fournitures et objectifs
Fournitures et objectifs
Fournitures
Objectifs
Partie Contrôle
interface complètement spécifiée (sauf extensions)
Séance
1
registre d’état
2
squelette fonction transition et génération
Partie Opérative
3
interface complètement spécifiée
comportement complet donnée
sauf en ce qui concerne les interruptions (dernière séance)
4
Divers
outils de développement croisés pour MIPS : asm, cc, ld,
objdump, ...
base de tests sur site web validant les étapes
5
Jackpot
19 / 38
Instruction typique
Etats : fetch, decode,...
Inst. : ORI, LUI
Programme : Afficher valeur sur LED
ADDU
SLL
Programme : Compteur sur LED
ou
Programme : Chenillard minimaliste sur LED
J
BEQ
JAL
Programme : Chenillard à motif (rotation)
ou
Programme : Multiplication Egyptienne
LW, SW
SLT
Système : VGA
Programme : tracé de droite “bresenham”
PO : interruption 1 source
ERET
Programme : démonstration d’interruption
Jouer à MIPS invader
Famille
SUBU, NOR, AND, XOR
OR, ANDI, XORI,ADDI, ADDIU
SRL, SRA, SLLV, SRAV, SRLV
JR
BNE, BLEZ, BGTZ, BGEZ, BLTZ
JALR, BLTZAL, BGEZAL
SLTI, SLTU, SLTIU
20 / 38
Conception et exploitation des processeurs
Conception et exploitation des processeurs
Fournitures et objectifs
Fournitures et objectifs
Objectifs
Bon courage !
http://www.ponggame.org/
À faire
1 En premier lieu
lire le cahier des charges complètement une première fois
2
Ensuite
faire les étapes dans l’ordre imposé
choisir quelques extensions en fonction de vos objectifs et
vitesse de progression
Vérification et suivi
1 faire des tests minimaux pour valider par vous même
l’implantation
2
outil de validation web fourni mais limité à 3 essais par séance
21 / 38
Conception et exploitation des processeurs
22 / 38
Conception et exploitation des processeurs
VHDL
VHDL
Plan
VHDL
1
Introduction
2
De ... à ...
3
Processeur
4
Fournitures et objectifs
5
VHDL
6
Description structurelle
7
Description comportementale
VHDL : VHDL is a Hardware Description Language
Descriptions synthétisables
structurelles
comportementales
flot de données
séquentielles
Les descriptions peuvent ne pas être réalisables en matériel !
23 / 38
24 / 38
Conception et exploitation des processeurs
Conception et exploitation des processeurs
Description structurelle
Description structurelle
Plan
Description structurelle
De base : Déjà vue moult fois
1
Introduction
2
De ... à ...
3
Processeur
4
Fournitures et objectifs
5
VHDL
6
Description structurelle
7
Description comportementale
entity BOX is
port(A, B, C : in
std_logic;
D
: out
std_logic);
end BOX;
architecture STRUCTURAL of BOX is
signal S1 : std_logic;
component XOR2
port(I0, I1 : in
std_logic;
O
: out
std_logic);
end component;
component AND2
port(I0, I1 : in
std_logic;
O
: out
std_logic);
end component;
begin
BLOC1 : XOR2
port map(B, A, S1);
BLOC2 : AND2
port map(I0=>C, I1=>S1, O=>D);
end STRUCTURAL;
Ou plus aisément :
D <= C and (A xor B);
25 / 38
Conception et exploitation des processeurs
26 / 38
Conception et exploitation des processeurs
Description comportementale
Description comportementale
Plan
Description comportementale
Exprime un comportement séquentiel ou concurrent
1
Introduction
2
De ... à ...
3
Processeur
4
Fournitures et objectifs
5
VHDL
6
Description structurelle
7
Description comportementale
Séquentiel
processus, avec liste de sensibilité
process(i0, i1, sel) ...
instructions similaires à celles d’Ada :
instructions conditionnelles : if, case
boucles : loop, for, while
variables internes au processus
x := y; affecte immédiatement y dans x
Concurrent
affectations hors de tout processus :
a <= b xor c;
instructions spécifiques :
27 / 38
sélection combinatoire : with ... select ...,
when ... else ...
28 / 38
Conception et exploitation des processeurs
Conception et exploitation des processeurs
Description comportementale
Description comportementale
Description comportementale
Description comportementale
Notion fondamentale : l’assignation notée <=
Assignation dite postée
<= prend effet lorsque tous les membres de droite ont été évalués
a <= b; b <= a échangent les contenus de a et b
Temps de l’évaluation = -cycle
Attention !
Production de matériel lors de la synthèse
ifs produisent des multiplexeurs, cases produisent des
décodeurs, ...
D <= C and
peut s’écrire
X <= A xor
D <= C and
ou encore
D <= C and
X <= A xor
loop, for, while produisent autant d’éléments que
d’itérations de boucles, ...
Si cœur de boucles complexes, alors beaucoup de matériel
(A xor B);
B;
X;
X;
B;
Assignation ré-évaluée si événement sur membre de droite
=> Comportement idem portes logiques
29 / 38
Conception et exploitation des processeurs
Conception et exploitation des processeurs
Description comportementale
Description comportementale
Description comportementale
Exemple : MUX 1 parmi 4
Notion fondamentale : liste de sensibilité
process(a, b, c, d, ...) :
process ré-évalué si événement sur signal de la liste de sensibilité
Tous signaux lus dans le process
) processus combinatoire
Typique pour fonction de transistion/generation de machines d’états
process(CUR_STATE, A, B, C, D)
begin
case CUR_STATE is
when S0 => if A ... then
NXT_STATE <= S1
else
NXT_STATE <= S2
end if;
when S1 => ...
end case;
end process;
30 / 38
Quelques signaux lus dans le process
) processus mémorisant
entity DFF is ... end DFF;
architecture SEQ of dff is
begin
process(ck)
begin
if rising_edge(ck) then
q <= d
end if;
end process;
end SEQ;
31 / 38
Séquentiel
Concurrent
architecture SEQ of MUX is
begin
process(I0, I1, I2, I3, SEL)
begin
case SEL is
when 0 => O <= I0;
when 1 => O <= I1;
when 2 => O <= I2;
when others =>
O <= I3;
end case;
end process;
end SEQ;
architecture CUR of MUX is
begin
with SEL select
O <= I0 when 0,
I1 when 1,
I2 when 2,
I3 when others;
end CUR;
Note : affectation concurrente
⌘ process avec membres de
droite dans liste de sensibilité
et affectant membre de gauche
32 / 38
Conception et exploitation des processeurs
Conception et exploitation des processeurs
Description comportementale
Description comportementale
Autres éléments mémorisants
Reset synchrone
entity DFF is ... end DFF;
architecture SEQ of dff is
begin
process(ck)
begin
if rising_edge(ck) then
if reset = ’1’ then
q <= ’0’;
else
q <= d
end if;
end process;
end SEQ;
Types et attributs
Reset asynchrone, à éviter, en
particulier sur FPGA
entity DFF is ... end DFF;
architecture SEQ of dff is
begin
process(ck, reset)
begin
if reset = ’1’ then
q <= ’0’;
elsif rising_edge(ck) then
q <= d
end if;
end process;
end SEQ;
Définition de types dérivés
subtype w32 is std_logic_vector(31 downto 0);
type w32_vec is array (natural range <>) of w32;
Définition de types énumérés
type RF_sel_type is ( RFS_RD, -- 00
RFS_RT, -- 01
RFS_31 -- 10
);
Attention !
Vérifiez que les affections de q sont toutes conditionnées par le
même front d’horloge, sinon latches => pas bon !
33 / 38
Conception et exploitation des processeurs
34 / 38
Conception et exploitation des processeurs
Description comportementale
Description comportementale
Types et attributs
Types et attributs
Définition d’agrégats
Attibuts : chaque élémént connaît des choses sur lui-même
(introspection)
type MMIPS_PO_status is record
IR : w32;
s,z,c : boolean;
it : boolean;
end record;
subtype TRIBYTE is std_logic_vector(23 downto 0);
type VIDEO_MEM is array(positive range <>, positive range <>) of TRIBYTE;
variable SCREEN : VIDEO_MEM(1 to 640, 1 to 480);
variable PIXEL : TRIBYTE;
...
PIXEL <= VIDEO_MEM(I, J);
Typiquement utilisé pour simplifier l’écriture des connexions
entity MMIPS_CPU_PO is
port (
....
status : out MMIPS_PO_status;
....
entity MMIPS_CPU_PC is
port (
....
status : in MMIPS_PO_status;
....
PIXEL’length
PIXEL’left
PIXEL’right
PIXEL’range
35 / 38
:
:
:
:
24
23
0
23 downto 0
SCREEN’range(1)
SCREEN’range(2)
SCREEN’right(1)
SCREEN’left(2)
:
:
:
:
1 to 640
1 to 480
640
1
36 / 38
Conception et exploitation des processeurs
Conception et exploitation des processeurs
Description comportementale
Description comportementale
Fonctions
Résumé
Fonction : intégrées lors de la synthèse
Définition
function sign_extension (sub_opc : std_logic_vector(2 downto 0))
return std_logic is
begin -- test opc if sign extension is required
if sub_opc = "010" then
return ’1’;
else
return ’0’;
end if;
end arith_sel;
Langage spécifique
à la production de matériel
avec une sémantique du temps
simulable
synthétisable (sous ensemble que nous utiliserons)
Utilisation
cmd.ALU_sign_extend <= sign_extension(status.IR(2 downto 0));
...
cmd.ALU_sign_extend <= sign_extension(status.IR(28 downto 26));
37 / 38
38 / 38