Conception et exploitation des processeurs

publicité
Conception et exploitation des processeurs
Notes
Chargé de cours : Frédéric Pétrot
Équipe pédagogique :
Stéphane Mancini, Luc Michel, Olivier Muller,
Christophe Rippert, Sebastien Viardot
Année universitaire 2012-2013
Conception et exploitation des processeurs
Structure du cours
Notes
C1
C2
C3
C4
Introduction aux langages d’assemblage
pour les ISA x86_64 et MIPS
Présentation du projet CEP
VHDL
Conventions pour les appels de fonctions
en assembleur x86_64 et MIPS
2 / 20
Conception et exploitation des processeurs
Introduction
Notes
Plan
1
Introduction
2
De ... à ...
3
Processeur
3 / 20
Conception et exploitation des processeurs
Introduction
Notes
Introduction
Objectif :
Conception d’un ordinateur minimaliste
Comprenant
un processeur
de la mémoire
des périphériques simples : LED, boutons
des périphériques moins simples : 7-segments, timer
des périphériques complexes : carte VGA, (joystick ?)
4 / 20
Conception et exploitation des processeurs
Introduction
Notes
Introduction
Challenge, ...
5 / 20
Conception et exploitation des processeurs
Introduction
Notes
Introduction
Comment ?
Conception du processeur
ISA : MIPS R3000
stratégie de conception : PC/PO
langage de conception : VHDL
sur les cartes Spartan 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
conception d’un « bus » permettant la connexion des
composants
6 / 20
Conception et exploitation des processeurs
De ... à ...
Notes
Plan
1
Introduction
2
De ... à ...
3
Processeur
7 / 20
Conception et exploitation des processeurs
De ... à ...
Notes
Structure initiale
LEDs
8
IP_DEBUG.vhd
1
32
debugoutvalid
debugout
32
addr
dataout
datain
32
32
RESET
we
ce
1
addr
di
do
we
1
RAM_PROG.vhd
MMIPS_CPU.vhd
CLK50
clk_gen.vhd
CLK
8 / 20
Conception et exploitation des processeurs
De ... à ...
Notes
Quelques précisions
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
Bit ce inutile pour l’instant
a. sans lecture/écriture simultanée
entity RAM_PROG is
port (
clk : in std_logic;
-- 11 bits d’adresse
addr : in std_logic_vector(10 downto 0);
-- 32 bits de données
do
: out std_logic_vector(31 downto 0);
di
: in std_logic_vector(31 downto 0);
we
: in std_logic
);
end RAM_PROG;
9 / 20
Conception et exploitation des processeurs
De ... à ...
Notes
Quelques précisions
Mémoire RAM synchrone
architecture Behavioral of RAM_PROG is
subtype mot is std_logic_vector(31 downto 0);
type zone_memoire is array (natural range 0 to 2048) of mot;
constant m0: zone_memoire :=(
0
=> x"3c1cdead", -- lui
$28,0xdead
1
=> x"379cbeef", -- ori
$28, $28, 0xbeef
others => x"ffffffff" --Reset
);
signal m: zone_memoire := m0;
begin
process(clk)
begin
if (clk’event AND clk=’1’) then
if we=’1’ then
m(conv_integer(addr)) <= di;
end if;
do <= m(conv_integer(addr));
end if;
end process;
end Behavioral;
10 / 20
Conception et exploitation des processeurs
De ... à ...
Notes
Structure finale
LEDs
IP_DEBUG.vhd
debugoutvalid
debugout
Interrupteurs
IP_SWITCH.vhd
IP_7SEG.vhd
dout
we_7seg
din_switch
CLK
dataout
Afficheurs 7 segments
dout
addr
dout
din_ram_prog
Reset
we_ram_prog
addr
di
do
we
MMIPS_CPU.vhd
RAM_PROG.vhd
ce we
addr
datain
addr
MMIPS_bus.vhd
we_ram_prog
we_ram_video
we_7seg
addr
dout
din_ram_video
we_ram_video
we_7seg
addra
dia
doa
wea
GeneRGB.vhd
R
G
B
HS
RAM_VIDEO.vhd
VS
GeneSync.vhd
din_ram_prog
CLK50
din_switch
clk_gen.vhd
VGA.vhd
din_ram_video
CLK
MMIPS_et_environnement.vhd
11 / 20
Conception et exploitation des processeurs
De ... à ...
Notes
Quelques précisions
Bus pour accès différents composants : principes
Écriture combinatoire :
processeur positionne addr/dataout/we=1/ce=1
bus décode adresses pour calcul we_ram_prog,
we_ram_video, we_7seg (mutuellement exclusifs)
dataout échantillonné par composant avec we_... = 1 sur
clk ↑
Lecture séquentielle :
processeur positionne addr/datain/ce=1
sur clk ↑, composants produisent din_ram_prog,
din_switch, din_ram_video, bus échantillonne addr
bus utilise addr échantillonné pour décoder quel signal
din_... produire sur datain
12 / 20
Conception et exploitation des processeurs
Processeur
Notes
Plan
1
Introduction
2
De ... à ...
3
Processeur
13 / 20
Conception et exploitation des processeurs
Processeur
Notes
Processeur
Caractéristiques globales de l’architecture :
bus de données et d’adresse sur 32 bits
taille de l’instruction : 32 bits
ISA 3-adresses
32 registres opérandes des instructions, noté $0 à $31
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
registre ir : instruction en cours d’exécution
registres hi et lo : résultat multiplication ou division entière
14 / 20
Conception et exploitation des processeurs
Processeur
Notes
Rappel des formats
Où récupérer l’information dans l’instruction
registre
5 bits dans l’instruction
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)
5 bits pour identifier le registre + 16 bits pour la constante
relatif à pc (2 cas)
15 / 20
Conception et exploitation des processeurs
Processeur
Notes
Processeur
WE
PC
RST
RST
CLK
CLK
Debug :
$28 toujours
visible (par
morceau)
sur les LEDs
WE
OE
OE
CE
CE
MMIPS_CPU_PC.vhd
Comptes rendu
IR,S,Z,C,IT
Signaux de
commande
ADDR
ADDR
DEBUGOUT
DEBUGOUT
PO
DEBUGOUTVALID
DEBUGOUTVALID
DATAOUT
DATAOUT
DATAIN
DATAIN
IRQ
IRQ
MMIPS_CPU_PO.vhd
CLK
MMIPS_CPU.vhd
16 / 20
Conception et exploitation des processeurs
Processeur
Notes
Processeur
Partie opérative
dSR weSR IT
weEPC
weRF selRF
wePC
weAD
weDT
weIR selY selX OP S Z C
selADDR
DATAIN
SR
RES
IRQ
DATAOUT
X
0x00000000
0x00000001
0x00000010
0x00001000
A
E
P
C
P
C
A
D
$ i
D
T
I
R
A
L
U
B
0x00000000
0x00000004
Y
ADDR
17 / 20
Conception et exploitation des processeurs
Processeur
Notes
Processeur
Partie contrôle
Init
Etats
Init
Waitfetch
Fetch
Decode
LUI
WaitFetch
Fetch
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
Decode
f(IR)
LUI
18 / 20
Conception et exploitation des processeurs
Processeur
Notes
Fournitures et objectifs
Partie Contrôle
interface complètement spécifiée (sauf extensions)
registre d’état
squelette fonction transition et génération
Partie Opérative
interface complètement spécifiée (sauf extensions)
comportement complet pour les opérations de base
À faire
lire le cahier des charges complètement une première fois
faire les différentes étapes imposées
choisir quelques extensions en fonction de vos objectifs
19 / 20
Conception et exploitation des processeurs
Processeur
Notes
Bon courage !
http://www.ponggame.org/
20 / 20
Notes
Téléchargement