Cours 5 CHEmin de données

Embed Size (px)

Citation preview

Cours #5 Conception de chemins des donnes

Conception et implmentation de systmes numriques

Plan

Processeurs: introduction Modules combinatoires: multiplexeurs, dcodeurs et encodeurs lments mmoire pour chemins des donnes: registres chargement parallle et dcalage, bloc de registres, RAM Units fonctionnelles: units arithmtiques, units logiques, comparateurs, compteurs

Conception et implmentation de systmes numriques

Un exemple pour commencer

Conception et implmentation de systmes numriques

Source: Wikipdia

Un exemple pour commencerMoteurs des plateaux

Clavier

Processeur

M M M M

tat Grer largent Grer linventaire senseur de pices

actuateurs pour rendre la monnaie

affichages

Conception et implmentation de systmes numriques

Deux types de processeurs

Un processeur est un type spcial de systme numrique dont le but est de traiter des donnes par une succession dtapes simples, pouvant rsulter en un traitement global complexe. Un processeur doit acqurir des donnes, les traiter, et produire un rsultat sous forme numrique ou vido. On distingue deux types principaux de processeurs: Les processeurs usage gnralpeuvent tre programms. Le programme excut par un processeur est gard en mmoire sous la forme dune liste dinstructions.On rfre souvent ce type de processeur par le nom de microprocesseur. Un microcontrleur est un cas particulier dun processeur usage gnral. Un processeur spcialis est un processeur usage gnral auquel on a ajout des instructions spciales. Les processeurs usage spcifique sont des processeurs non programmables qui sont conus dans le but de rpondre un besoin unique. Ils sont plus simples et plus efficaces que les processeurs usage gnral. Ils ne peuvent pas en gnral tre facilement reprogramms.Conception et implmentation de systmes numriques

Parties dun processeur

Un processeur est compos de deux parties: Le chemin des donnes (datapath) traite les donnes. Il inclut:

des registres; des units fonctionnelles (comme une unit arithmtique et logique) un mcanisme de commutation pour transfrer et manipuler les donnes.

Lunit de contrle (control unit) est responsable du squencement des oprations excuter par le chemin de donnes selon des entres externes et le rsultat des oprations.Entre des donnes Sortie des donnes

Chemin des donnes

Contrle

tat

Entres de contrle

Unit de contrle

Sorties de contrle

Conception et implmentation de systmes numriques

Architecture dun chemin des donnes

Un chemin des donnes a deux parties principales: un bloc de registres qui conserve les donnes traiter et des rsultats prcdents, de faon pouvoir combiner toutes ces valeurs dans de nouveaux calculs. des units fonctionnelles pour effectuer des oprations sur les donnes conserves dans les registres. Des modules combinatoires permettent de choisir, router et contrler le flot dinformation entre les registres et les units fonctionnelles.

Entres Horlogecharger

Registresregistres charger registres lire

Units fonctionnelles et modules combinatoiresopration tat

Sorties

Conception et implmentation de systmes numriques

Architecture dun chemin des donnes Exemple: processeur BlackFin

Conception et implmentation de systmes numriques

Analog Devices, BlackFin Embedded Processor ADSP-BF534/ADSP-BF536/ADSP-BF537, 2009.

Conception de chemins des donnesavec lapproche RTL

Lapproche RTL (Register Transfer Level) est la plus populaire pour la conception de chemins des donnes. Elle saccorde bien aux langages de description matrielle comme VHDL et Verilog. Dans lapproche RTL, le concepteur spcifie les registres du processeur, les transferts de donnes entre ces registres, les oprations effectuer et les signaux de contrle pour grer ces activits. Lapproche RTL peut tre dcompose en quatre tapes: 1. Analyse du problme afin de comprendre le flot des donnes travers le processeur. 2. Conception du chemin des donnes, identification des signaux de contrle et dtat. 3. Conception de lunit de contrle du processeur laide dune machine tats gnrant des signaux de contrle. 4. Vrification que le processeur rsultant rencontre les spcifications.

Conception et implmentation de systmes numriques

Approche RTL et micro-oprations

Une micro-opration est une opration lmentaire effectue sur les donnes gardes dans des registres, en mmoire ou des donnes externes. La spcification dune micro-opration inclut: les oprandes (registres ou donnes externes); la nature de la micro-opration effectuer; lendroit o le rsultat de la micro-opration doit tre sauvegard; et, une condition remplir pour que la micro-opration soit effectue. On distingue quatre types principaux de micro-oprations: les transferts entre registres; les micro-oprations arithmtiques (addition, soustraction, multiplication, division, reste) les micro-oprations logiques (NON, ET, OU, OUX, etc.); et, le dcalage.

Conception et implmentation de systmes numriques

Approche RTL et micro-oprations

La notation RTL est une forme de pseudocode. On peut utiliser des noms de registres (R0, R1, etc.) ou des identificateurs plus reprsentatifs. Le symbole indique une assignation de valeur. Le principe de la concurrence des oprations est intrinsque lapproche RTL.Micro-opration Signification Copier le contenu de R1 dans R0. Placer la somme de R1 et de R3 dans R2. Placer le rsultat de lopration ET logique entre R2 et R3 dans R2. Si le signal de contrle K1 est actif, placer le rsultat du dcalage logique vers la gauche de 3 positions du registre R1 dans le registre R2; sinon, ne rien faire. Simultanment, placer la diffrence entre R1 et R3 dans R2 et copier le contenu de R0 dans R4.

R0 R1 R2 R1 + R3 R2 R2 ET R3 K1: R2 sll R1, 3 R2 R1 R3, R4 R0sll: shift logical left

Conception et implmentation de systmes numriques

Exemples dimplmentation de micro-oprations

R0 R1

K1: R0 R1

Entres Horlogecharger

Registresregistres charger registres lire

Units fonctionnelles et modules combinatoiresopration tat

Sorties

Conception et implmentation de systmes numriques

lments mmoire pour chemins des donnes Registre chargement parallle

Un registre est llment mmoire de base pour des donnes. Un registre est utilis pour entreposer une information, encode sur un groupe de bits, comme par exemple un octet de mmoire dans un ordinateur ou le contenu de laccumulateur dune calculatrice. Un registre est compos dun groupe de bascules contrles par une horloge commune et dont les entres et sorties partagent un identificateur commun. Chaque bascule du registre est diffrencie des autres par un indice unique. Un registre chargement parallle comporte un signal de chargement qui permet de moduler le signal dhorloge. Quand ce signal est actif, le contenu du registre est modifi sur une transition de lhorloge. Dans le cas contraire, le contenu du registre reste inchang.0

D3:D0 chargeConception et implmentation de systmes numriques

/ 4

1

D

Q

/ 4

Q3:Q0

clk

CLK

Q'

Exemples dimplmentation de micro-oprationsR2 R2 + R3 K2: R2 R2 + R3 K2: R2 R2 + R3Pas recommand: mieux vaut utiliser le signal de chargement dune bascule.

Entres Horlogecharger

Registresregistres charger registres lire

Units fonctionnelles et modules combinatoiresopration tat

Sorties

Conception et implmentation de systmes numriques

Exemple dimplmentation de micro-oprationsK2K1: R2 R0 + R1, K2K1: R2 R0 + R3

Entres Horlogecharger

Registresregistres charger registres lire

Units fonctionnelles et modules combinatoiresopration tat

Sorties

Conception et implmentation de systmes numriques

Exemples dimplmentation de micro-oprationsK4: R0 sll R2, 1 K4K6: R5 sll R7,R9 ;K4K6: R5 slr R7,R9

Conception et implmentation de systmes numriques

Synchronisation des oprations du chemin des donnes

Le bloc des registres est contrl par un signal dhorloge. chaque coup dhorloge, le bloc des registres peut emmagasiner: une nouvelle donne provenant du port des entres; un rsultat qui vient dtre calcul par lunit fonctionnelle; ou bien, effectuer un transfert entre deux registres (via lunit fonctionnelle en gnral). Entre deux coups dhorloge, lunit fonctionnelle: lit des donnes provenant du bloc des registres; effectue les calculs spcifis par le code dopration qui lui est appliqu; et, applique les rsultat ses ports de sortie;Une micro-opration ne prend effet que lors dune transition active du signal dhorloge. Le bloc des registres ne saisit un rsultat calcul par lunit fonctionnelle que lors de la prochaine transition dhorloge. La priode dhorloge doit tre suffisamment longue pour que lunit fonctionnelle ait le temps deffectuer son traitement.Conception et implmentation de systmes numriques

Synchronisation des oprations du chemin des donnes

Conception et implmentation de systmes numriques

Plan

Processeurs: introduction Modules combinatoires: multiplexeurs, dcodeurs et encodeurs lments mmoire pour chemins des donnes: registres chargement parallle et dcalage, bloc de registres, RAM Units fonctionnelles: units arithmtiques, units logiques, comparateurs, compteurs

Conception et implmentation de systmes numriques

Modules combinatoires utiles Multiplexeur

Un multiplexeur permet de choisir un seul signal partir dun ensemble de signaux, selon la valeur dun signal de contrle. Un multiplexeur a: un groupe de signaux dentre D; un groupe de signaux de contrle S (pour slection); et, un signal de sortie F. Le signal de sortie est gal au signal dentre choisi par les signaux de contrle.D0 0 F D1 1 D1 D0 S F

S S1 S0

D0

D0 D1 D2 D3

0 1 2 3 D2

F

D1

F

S1

Conception et implmentation de systmes numriques

S0

D3

Modules combinatoires utiles Multiplexeur 2:1 en VHDL

library IEEE; use IEEE.STD_LOGIC_1164.all; entity mux21 is port(D0, D1, S : in STD_LOGIC; F : out STD_LOGIC); end mux21; architecture flotDeDonnees of mux21 is begin with S select F '0',3=>'1',2=>'0'); -- assignation nomme -- Exemple 3 signal Data_Bus : Std_Logic_Vector (15 downto 0); . . . Data_Bus '0', 7 downto 0 => '1'); -- assignation positionelle avec gammes dindices -- Exemple 4 type Status_Record is record Code : Integer; Name : String (1 to 4); end record; variable Status_Var : Status_Record := (Code => 57, Name => "MOVE"); -- Exemple 5 signal Data_Bus : Std_Logic_Vector (15 downto 0); . . . Data_Bus '0', others => '1'); -- utilisation du choix others (en dernier) -- Exemple 6 signal Data_Bus : Std_Logic_Vector (15 downto 0); . . . Data_Bus 'Z'); -- utilisation du choix others par lui-mme

Conception et implmentation de systmes numriques

Modules combinatoires utiles Dcodeur gnral en VHDLlibrary ieee; use ieee.std_logic_1164.all; use ieee.numeric_std.all; entity decodeur is generic ( n : positive := 3; -- nombre de signaux d'entre valeurActive : std_logic := '1' ); port( A : in std_logic_vector(n - 1 downto 0); F: out std_logic_vector(2 ** n - 1 downto 0) On exploite le fait que les noncs sont excuts de ); faon squentielle lintrieur dun processus. Pour end decodeur; architecture comportementale of decodeur is begin process(A) begin F not(valeurActive)); F(to_integer(unsigned(A))) F F F F F F F F F 'X'); end case; end process; end arch;

Conception et implmentation de systmes numriques

Units fonctionnelles Unit arithmtique: quels types utiliser?

real: a dpend pour des valeurs constantes: ok pour des registres et valeurs intermdiaires: non! trop prcis et pas synthtisable integer, natural, positive: acceptables Bien supports par les synthtiseurs pour les oprations arithmtiques. Bonne abstraction par rapport un vecteur de bits. Important de spcifier la gamme de valeurs possibles de faon contraindre les ressources matrielles utilises pour les reprsenter. signed, unsigned: acceptables Dfinis dans le package normalis numeric_std, comme des tableaux de std_logic. Bien supports par les outils de synthse. Le package numeric_std redfinit les oprateurs de VHDL pour ces deux types. std_logic_vector: non, trop bas niveau Conception et implmentation de systmes numriques

Units fonctionnelles Unit logique

Les units logiques effectuent une opration logique sur des oprandes sous le contrle dun signal externe. Elles sont au cur de tout microprocesseur. Par exemple, on peut vouloir effectuer une des oprations ET, OU, OUX, ou NON-ET entre deux vecteurs de faon dynamique.

Pour les types, on peut utiliser std_logic_vector, signed ou unsigned. Le package std_logic_1164 redfinit les oprateurs logiques and, nand, or, nor, xor, xnor et not pour les objets de type std_logic et std_logic_vector. Le package numeric_std fait de mme pour les types unsigned et signed.

Conception et implmentation de systmes numriques

Units fonctionnelles Unit logiquelibrary ieee; use ieee.std_logic_1164.all; use ieee.numeric_std.all; entity unitelogique is generic ( W : positive := 8 -- largeur des oprandes ); port( A, B : in std_logic_vector(W - 1 downto 0); -- les oprandes choix : in std_logic_vector(2 downto 0); -- le slecteur d'opration F : out std_logic_vector(W - 1 downto 0) -- le rsultat ); end unitelogique; architecture arch of unitelogique is begin process(A, B, choix) begin case to_integer(unsigned(choix)) is when 0 => F F F F F F F F F 'X'); end case; end process; end arch;

Conception et implmentation de systmes numriques

Units fonctionnelles Comparateurs

Un comparateur permet de comparer les grandeurs relatives de deux valeurs et didentifier leur galit ventuelle. Ce type de circuit est essentiel dans un microprocesseur pour pouvoir effectuer des branchements conditionnels. Les oprateurs de VHDL pour la comparaison sont =, /=, =. Dans chaque cas le rsultat de la comparaison est de type boolean. Comme pour les oprations arithmtiques, le type des oprandes est critique et peut dterminer la valeur de la comparaison.

Conception et implmentation de systmes numriques

Units fonctionnelles Comparateur: code VHDLlibrary ieee; use ieee.std_logic_1164.all; use ieee.numeric_std.all; entity comparateur is generic ( W : positive := 8 -- largeur des oprandes ); port( A, B : in signed(W - 1 downto 0); eq, neq, gt, lt, ge, le : out std_logic ); end comparateur; architecture arch of comparateur is begin eq