ELECINF 102 : Processeurs et Architectures Numériques

Documents pareils
DU BINAIRE AU MICROPROCESSEUR - D ANGELIS CIRCUITS CONFIGURABLES NOTION DE PROGRAMMATION

Conception de circuits numériques et architecture des ordinateurs

Architecture des ordinateurs

Assembleur. Faculté I&C, André Maurer, Claude Petitpierre

MICROINFORMATIQUE NOTE D APPLICATION 1 (REV. 2011) ARITHMETIQUE EN ASSEMBLEUR ET EN C

Licence Sciences et Technologies Examen janvier 2010

Jeu d instructions NIOS II

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

Rappels d architecture

ASR1 TD7 : Un microprocesseur RISC 16 bits

Microprocesseur + Logiciel

CM2 L architecture MIPS32

Assembleur i8086. Philippe Preux IUT Informatique du Littoral. Année universitaire 95 96

La mémoire. Un ordinateur. L'octet. Le bit

GPA770 Microélectronique appliquée Exercices série A

IFT1215 Introduction aux systèmes informatiques

Exécution des instructions machine

TD Architecture des ordinateurs. Jean-Luc Dekeyser

CONFIGURATION DE L AUTOMATE SIEMENS

Introduction à l architecture des ordinateurs. Adrien Lebre Décembre 2007

Architecture : Circuits numériques et éléments d architecture

PIC : COURS ASSEMBLEUR

Description du logiciel Modbus RTU

Traduction binaire dynamique de l extension SIMD Néon de l ARMv7 dans Qemu

USTL - Licence ST-A 1ère année Codage de l information TP 1 :

Partie 1. Professeur : Haouati Abdelali. CPGE Lycée Omar Ibn Lkhattab - Meknès haouaticpge@gmail.com

IV- Comment fonctionne un ordinateur?

1 Architecture du cœur ARM Cortex M3. Le cœur ARM Cortex M3 sera présenté en classe à partir des éléments suivants :

Programmation assembleur : aperçu

Cours 3 : L'ordinateur

QUESTION 1 {2 points}

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Architecture des ordinateurs : Programmation des processeurs avec l'environnement «y86» (INF155)

Architecture des ordinateurs Introduction à l informatique

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

Cours d Informatique

SIN-FPGA DESCRIPTION PAR SCHEMA

Structure d un programme

Informatique Industrielle Année Architecture des ordinateurs Note de cours T.Dumartin

Ordinateurs, Structure et Applications

Compilation (INF 564)

Atelier C TIA Portal CTIA06 : programmation des automates S7-300 Blocs d organisation

Le Projet BINSEC. Automatiser l analyse de sécurité au niveau binaire. Airbus group, CEA, IRISA, LORIA, Uni. Joseph Fourier. p.

Conversion d un entier. Méthode par soustraction

Cours Informatique 1. Monsieur SADOUNI Salheddine

Représentation des Nombres

Les fonctions logiques

La programmation des PIC en C. Les fonctions, les interruptions.


Travaux Pratiques de Commande par ordinateur 1 TRAVAUX PRATIQUES

Déprotection semi-automatique de binaire

LOGICIEL DC4D MONITOR

Le Registre sous Windows 8 architecture, administration, script, réparation...

RÉALISATION ET MISE AU POINT D UN SYSTÈME DE TÉLÉSURVEILLANCE VIDÉO

Le langage VHDL. Eduardo Sanchez EPFL

SSTIC Désobfuscation automatique de binaires. Alexandre Gazet. Yoann Guillot. Et autres idyles bucoliques...

Durée estimée :1 journée Date de la réalisation : Description Fournisseur Référence Nombre PU HT LM35CZ, LM35AZ LM35DZ

Chapitre 4 : Les mémoires

1 Introduction C+ + Algorithm e. languag. Algorigramm. machine binaire. 1-1 Chaîne de développement. Séance n 4

GEOGRAPHIE Activités économiques CM2 N 20 : Un centre tertiaire au Liban puis en France

Tout savoir sur le matériel informatique

Contexte. Pour cela, elles doivent être très compliquées, c est-à-dire elles doivent être très différentes des fonctions simples,

ALCATEL IP1020. Guide de Configuration pour l offre Centrex OpenIP

Organisation des Ordinateurs

Fonctions de deux variables. Mai 2011

Hiérarchie matériel dans le monde informatique. Architecture d ordinateur : introduction. Hiérarchie matériel dans le monde informatique

Architecture matérielle des systèmes informatiques

Manuel d'installation de GESLAB Client Lourd

Architecture des Ordinateurs. Partie II:

IFT2880 Organisation des ordinateurs et systèmes

Atelier C TIA Portal CTIA04 : Programmation des automates S7-300 Opérations numériques

CSI351 Systèmes d exploitation Instructions pour rouler Linux avec Virtual PC dans la salle de labo 2052

Réalisation d un réseau de capteurs de température sans fil basé sur le protocole ZigBee

ET LO GICIEL D UN S YS T EME IN FORMATIQUE

Présentation et installation PCE-LOG V4 1-5

INSTALLER LA DERNIERE VERSION DE SECURITOO PC

Conception de circuits numériques et architecture des ordinateurs

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

TwinCAT 3 C++ Création de modules C++ sous TwinCAT 3 VERSION : 1.0 / PH

BitLocker. Aurélien Bordes SSTIC juin 2011

Elle supporte entièrement la gestion de réseau sans fil sous Windows 98SE/ME/2000/XP.

Création d'un identifiant Apple sans carte bancaire

SAGEM Wi-Fi 11g USB ADAPTER Guide de mise en route rapide

Manipulations du laboratoire

Fiche technique CPU 314SC/DPM (314-6CG13)

Traitement de données

INSTRUCTIONS D'INSTALLATION

MIGRER VERS LA DERNIERE VERSION DE L'ANTIVIRUS FIREWALL

Réparer un disque dur passé en RAW

V- Manipulations de nombres en binaire

Fiche technique CPU 315SN/PN (315-4PN33)

Concept de machine virtuelle

Les opérations binaires

Le langage de programmation Labview IUT1 Grenoble Département GEII1 Année 2007/2008

Documentation SecurBdF

Installation poste de travail. Version /02/2011

Stratégies de défense et d attaque : le cas des consoles de jeux

Mise en route et support Envision 10 SQL server (Avril 2015) A l'intention de l'administrateur SQL Server et de l administrateur Envision

Transcription:

ELECINF 102 : Processeurs et Architectures Numériques Le Nano processeur Tarik Graba tarik.graba@telecom-paristech.fr

Un Programme Un processeur exécute un programme : une suite d instructions sur un ensemble de données. 0. 112 + 3 1. résultat précédent - 4 2. si le résultat est nul, passer à l'étape 6, sinon continuer 3. 3 * 4 4. résultat précédent + 9 5. ouvrir la fenêtre 6. résultat de l'étape 2-15 7. passer à l'étape 12 8. 2/40 ELECINF102 Tarik Graba

Un Programme Données Les opérandes 3,4,112, opérandes implicites Résultat précédent, résultat de l'étape 2, 3/40 ELECINF102 Tarik Graba

Un Programme Instructions Données Les opérandes 3,4,112, opérandes implicites Résultat précédent, résultat de l'étape 2, Opérations arithmétiques et logiques +,,,/, And, Or, Not, Xor, Les tests Si le résultat précédent est nul Les sauts Conditionné par un test : Si alors passer à l'étape 6 Non conditionné : Passer à l'étape instructions spéciales ouvrir la fenêtre, faire clignoter la LED, 3/40 ELECINF102 Tarik Graba

La mémoire Une table La position dans la table c est l adresse On ne peut lire ou modifier qu une seule case à la fois Chaque case contient un mot WRITE RAM ADDR[7 :0] D[7 :0] Q[7 :0] 4/40 ELECINF102 Tarik Graba

La mémoire mémoire asynchrone ADDR 67 110 D 22 Q ram[67] 22 WRITE un bus d adresse la valeur sélectionnée apparait sur la sortie (Q) La donnée à écrire est présentée dur l entrée (D) Un signal (WRITE) pour indiquer qu on modifie la valeur 5/40 ELECINF102 Tarik Graba

Le Système Le système est composé : d un processeur d une RAM (256 mots de 8 bits 8 bits d adresse) d un périphérique (le buzzer) CLK RESET Processeur WRITE ADDR[7 :0] RAM D[7 :0] Q[7 :0] Buzzer 6/40 ELECINF102 Tarik Graba

1 e étape : Automate linéaire basique Deux instructions : Code Instruction 00000100 addition 00000110 soustraction Structure linéaire de la mémoire adresse type du mot stocké exemple 0 instruction + 1 donnée (premier opérande) 3 2 donnée (deuxième opérande) 4 3 donnée (résultat) X 4 instruction - 5 donnée (premier opérande) 12 6 donnée (deuxième opérande) 8 7 donnée (résultat) X 7/40 ELECINF102 Tarik Graba

1 e étape : Automate linéaire basique Deux instructions : Code Instruction 00000100 addition 00000110 soustraction Structure linéaire de la mémoire adresse type du mot stocké exemple 0 instruction + 1 donnée (premier opérande) 3 2 donnée (deuxième opérande) 4 3 donnée (résultat) 7 4 instruction - 5 donnée (premier opérande) 12 6 donnée (deuxième opérande) 8 7 donnée (résultat) 4 7/40 ELECINF102 Tarik Graba

Organisation du programme en mémoire Attention La mémoire contient le programme et les données Les données et les instructions sont imbriquées et non différenciées La valeur de l instruction La valeur de la donnée adresse donnée 0 00000100 1 00000011 2 00000100 3 00000111 4 00000110 5 00001100 6 00001000 7 00000100 8/40 ELECINF102 Tarik Graba

1 e étape : Automate linéaire basique Proposez une architecture, i.e. comment construire ce processeur? 9/40 ELECINF102 Tarik Graba

1 e étape : Automate linéaire basique l architecture Un compteur programme 10/40 ELECINF102 Tarik Graba

1 e étape : Automate linéaire basique l architecture Un compteur programme Un additionneur-soustracteur 10/40 ELECINF102 Tarik Graba

1 e étape : Automate linéaire basique l architecture Un compteur programme Un additionneur-soustracteur Un registre pour l instruction 10/40 ELECINF102 Tarik Graba

1 e étape : Automate linéaire basique l architecture Un compteur programme Un additionneur-soustracteur Un registre pour l instruction Un registre pour chaque opérande 10/40 ELECINF102 Tarik Graba

1 e étape : Automate linéaire basique l architecture Un compteur programme Un additionneur-soustracteur Un registre pour l instruction Un registre pour chaque opérande Un contrôleur Q[7 :0] Load_I Load_op1 Load_op2 +1 I Op1 Op2 CTRL +/ Load_I Load_op1 Load_op2 ADDR D[7 :0] WRITE 10/40 ELECINF102 Tarik Graba

1 e étape : Automate linéaire basique Comment se séquencent les opérations? adresse type du mot stocké exemple 0 instruction + 1 donnée (premier opérande) 3 2 donnée (deuxième opérande) 4 3 donnée (résultat) X 4 instruction - 5 donnée (premier opérande) 12 6 donnée (deuxième opérande) 8 7 donnée (résultat) X 11/40 ELECINF102 Tarik Graba

1 e étape : Automate linéaire basique Chronogramme CLK CYCLE IF OP1F OP2F WR IF ADDR 0 1 2 3 4 Q 0x4 3 4 7 0x6 WRITE Load_I Load_OP1 Load_OP2 I D 7 0x4 Op1 3 Op2 4 12/40 ELECINF102 Tarik Graba

1 e étape : Automate linéaire basique Chronogramme CLK CYCLE IF OP1F OP2F WR IF ADDR 0 1 2 3 4 Q 0x4 3 4 7 0x6 WRITE Load_I Load_OP1 Load_OP2 I D 7 ADD Op1 3 Op2 4 12/40 ELECINF102 Tarik Graba

1 e étape : Automate linéaire basique le contrôleur OP1F load_op1 IF load_i OP2F load_op2 WR WRITE 13/40 ELECINF102 Tarik Graba

1 e étape : Automate linéaire basique le contrôleur OP1F load_op1 IF load_i OP2F load_op2 WR WRITE Les 2 bits de poids faible de l adresse permettent de différencier les états. 13/40 ELECINF102 Tarik Graba

1 e étape : Automate linéaire basique Récapitulons l architecture le contrôleur +1 ADDR OP1F load_op1 Q[7 :0] Load_I Load_op1 Load_op2 I Op1 Op2 +/ D[7 :0] IF load_i OP2F load_op2 CTRL Load_I Load_op1 Load_op2 WRITE WR WRITE 14/40 ELECINF102 Tarik Graba

2 e étape : Automate avec accumulateur Comment chaîner des calculs (3+4-6+ )? 15/40 ELECINF102 Tarik Graba

2 e étape : Automate avec accumulateur Comment chaîner des calculs (3+4-6+ )? Mémoriser les résultats intermédiaires : 15/40 ELECINF102 Tarik Graba

2 e étape : Automate avec accumulateur Comment chaîner des calculs (3+4-6+ )? Mémoriser les résultats intermédiaires : Ajouter un registre pour garder le dernier résultat 15/40 ELECINF102 Tarik Graba

2 e étape : Automate avec accumulateur Comment chaîner des calculs (3+4-6+ )? Mémoriser les résultats intermédiaires : Ajouter un registre pour garder le dernier résultat Toutes les instructions agissent sur un élément venant de la mémoire et le registre qui contient le résultat précédent 15/40 ELECINF102 Tarik Graba

2 e étape : Automate avec accumulateur Comment chaîner des calculs (3+4-6+ )? Mémoriser les résultats intermédiaires : Ajouter un registre pour garder le dernier résultat Toutes les instructions agissent sur un élément venant de la mémoire et le registre qui contient le résultat précédent Ajouter des instructions de chargement et enregistrement en RAM de ce registre 15/40 ELECINF102 Tarik Graba

2 e étape : Automate avec accumulateur Comment chaîner des calculs (3+4-6+ )? Mémoriser les résultats intermédiaires : Ajouter un registre pour garder le dernier résultat Toutes les instructions agissent sur un élément venant de la mémoire et le registre qui contient le résultat précédent Ajouter des instructions de chargement et enregistrement en RAM de ce registre Ce registre est appelé accumulateur 15/40 ELECINF102 Tarik Graba

2 e étape : Automate avec accumulateur Ajouter de nouvelles instructions code (binaire 8 bits) instruction 00000001 XOR 00000010 AND 00000011 OR 00000100 addition 00000110 soustraction 00001010 load 00001011 store 16/40 ELECINF102 Tarik Graba

2 e étape : Automate avec accumulateur Nouvelle structure du programme adresse type du mot stocké exemple 0 instruction load 1 donnée 3 2 instruction + 3 donnée 4 4 instruction - 5 donnée 1 6 instruction store 7 donnée X 17/40 ELECINF102 Tarik Graba

2 e étape : Automate avec accumulateur Nouvelle structure du programme adresse type du mot stocké exemple 0 instruction load 1 donnée 3 2 instruction + 3 donnée 4 4 instruction - 5 donnée 1 6 instruction store 7 donnée 6 17/40 ELECINF102 Tarik Graba

2 e étape : Automate avec accumulateur Modifiez l architecture précédente Quels éléments faut il ajouter ou supprimer? 18/40 ELECINF102 Tarik Graba

2 e étape : Automate avec accumulateur l architecture Un compteur programme 19/40 ELECINF102 Tarik Graba

2 e étape : Automate avec accumulateur l architecture Un compteur programme Une ALU (add, sub, or, and, xor) 19/40 ELECINF102 Tarik Graba

2 e étape : Automate avec accumulateur l architecture Un compteur programme Une ALU (add, sub, or, and, xor) Un registre pour l instruction 19/40 ELECINF102 Tarik Graba

2 e étape : Automate avec accumulateur l architecture Un compteur programme Une ALU (add, sub, or, and, xor) Un registre pour l instruction Un registre pour l accumulateur La possibilité de choisir l entrée de ce registre 19/40 ELECINF102 Tarik Graba

2 e étape : Automate avec accumulateur l architecture Un compteur programme +1 ADDR Une ALU (add, sub, or, and, xor) Q[7 :0] I Load_I I Sel_Acc Load_Acc I Un registre pour l instruction Un registre pour l accumulateur La possibilité de choisir l entrée de ce registre Un contrôleur ALU CTRL 1 0 Acc Load_I Load_Acc Sel_Acc D[7 :0] WRITE 19/40 ELECINF102 Tarik Graba

2 e étape : Automate avec accumulateur Comment se séquencent les opérations? adresse type du mot stocké exemple 0 instruction load 1 donnée 3 2 instruction + 3 donnée 4 4 instruction - 5 donnée 1 6 instruction store 7 donnée X 20/40 ELECINF102 Tarik Graba

2 e étape : Automate avec accumulateur Chronogramme CLK CYCLE IF DF IF DF IF DF IF DF ADDR 0 1 2 3 4 5 6 7 Load_I I 0xA 0x4 0x6 0xB Load_Acc Sel_Acc Acc/D 3 7 6 WRITE Q 0xA 3 0x4 4 0x6 1 0xB 6 21/40 ELECINF102 Tarik Graba

2 e étape : Automate avec accumulateur Chronogramme CLK CYCLE IF DF IF DF IF DF IF DF ADDR 0 1 2 3 4 5 6 7 Load_I I load add sub store Load_Acc Sel_Acc Acc/D 3 7 6 WRITE Q load 3 add 4 sub 1 store 6 21/40 ELECINF102 Tarik Graba

2 e étape : Automate avec accumulateur le contrôleur IF Load_I DF 22/40 ELECINF102 Tarik Graba

2 e étape : Automate avec accumulateur le contrôleur IF Load_I DF Le bit de poids faible de l adresse permet de différencier les états. Sel_Acc = ( I = load ) Load_Acc = ( I store ) && ( Etat = DF ) WRITE = ( I = store ) && ( Etat = DF ) 22/40 ELECINF102 Tarik Graba

2 e étape : Automate avec accumulateur Récapitulons l architecture le contrôleur +1 ADDR Q[7 :0] I Load_I ALU I I Sel_Acc Load_Acc 1 Acc 0 D[7 :0] IF Load_I DF CTRL Load_I Load_Acc Sel_Acc WRITE Sel_Acc = ( I = load ) Load_Acc = ( I store ) && ( Etat = DF ) WRITE = ( I = store ) && ( Etat = DF ) 23/40 ELECINF102 Tarik Graba

3 e étape : Automate avec accumulateur et indirection Si on veut : Utiliser le même code sur des données différentes Utiliser les mêmes données avec des codes différents Utiliser le code sur des données générées par le code (on ne les connaît pas au chargement du programme en RAM) 24/40 ELECINF102 Tarik Graba

3 e étape : Automate avec accumulateur et indirection Si on veut : Utiliser le même code sur des données différentes Utiliser les mêmes données avec des codes différents Utiliser le code sur des données générées par le code (on ne les connaît pas au chargement du programme en RAM) On doit : Modifier les instructions de façon à avoir le code de l instruction suivi de l adresse de l opérande (plutôt que sa valeur). 24/40 ELECINF102 Tarik Graba

3 e étape : Automate avec accumulateur et indirection adresse type du mot stocké exemple zone 0 instruction load 1 adresse de l opérande 100 2 instruction + 3 adresse de l opérande 101 4 instruction store 5 adresse de l opérande 103 6 instruction load zone de code 7 adresse de l opérande 100 8 instruction - 9 adresse de l opérande 102 10 instruction store 11 adresse de l opérande 104 100 donnée 3 101 donnée 4 102 donnée 1 zone de données 103 donnée X 104 donnée X 25/40 ELECINF102 Tarik Graba

3 e étape : Automate avec accumulateur et indirection adresse type du mot stocké exemple zone 0 instruction load 1 adresse de l opérande 100 2 instruction + 3 adresse de l opérande 101 4 instruction store 5 adresse de l opérande 103 6 instruction load zone de code 7 adresse de l opérande 100 8 instruction - 9 adresse de l opérande 102 10 instruction store 11 adresse de l opérande 104 100 donnée 3 101 donnée 4 102 donnée 1 zone de données 103 donnée 7 104 donnée X 25/40 ELECINF102 Tarik Graba

3 e étape : Automate avec accumulateur et indirection adresse type du mot stocké exemple zone 0 instruction load 1 adresse de l opérande 100 2 instruction + 3 adresse de l opérande 101 4 instruction store 5 adresse de l opérande 103 6 instruction load zone de code 7 adresse de l opérande 100 8 instruction - 9 adresse de l opérande 102 10 instruction store 11 adresse de l opérande 104 100 donnée 3 101 donnée 4 102 donnée 1 zone de données 103 donnée 7 104 donnée 2 25/40 ELECINF102 Tarik Graba

3 e étape : Automate avec accumulateur et indirection Modifiez l architecture précédente Quels éléments faut il ajouter ou supprimer? 26/40 ELECINF102 Tarik Graba

l architecture 3 e étape : Automate avec accumulateur et indirection Un compteur programme 27/40 ELECINF102 Tarik Graba

l architecture 3 e étape : Automate avec accumulateur et indirection Un compteur programme Une ALU 27/40 ELECINF102 Tarik Graba

l architecture 3 e étape : Automate avec accumulateur et indirection Un compteur programme Une ALU Un registre pour l instruction 27/40 ELECINF102 Tarik Graba

l architecture 3 e étape : Automate avec accumulateur et indirection Un compteur programme Une ALU Un registre pour l instruction Un registre pour l adresse des données La possibilité de choisir quelle adresse présenter 27/40 ELECINF102 Tarik Graba

l architecture 3 e étape : Automate avec accumulateur et indirection Sel_Addr Un compteur programme Une ALU Inc_PC PC Addr 0 1 ADDR Un registre pour l instruction Un registre pour l adresse des données La possibilité de choisir quelle adresse présenter Un registre pour l accumulateur Q[7 :0] I Load_I ALU CTRL I Sel_Acc Load_Acc 1 0 Acc Inc_PC Sel_Addr Load_I Load_Acc Sel_Acc I D[7 :0] WRITE Un contrôleur 27/40 ELECINF102 Tarik Graba

3 e étape : Automate avec accumulateur et indirection 0 load 1 100 2 + 3 101 4 store 5 103 6 load 7 100 8-9 102 10 store 11 104 100 3 101 4 102 1 103 X 104 X 28/40 ELECINF102 Tarik Graba

3 e étape : Automate avec accumulateur et indirection CLK CYCLE IF AF EX IF AF EX IF AF EX ADDR 0 1 100 2 3 101 4 5 103 Inc_PC Sel_Addr Load_I Load_Acc Sel_Acc I load add store Acc 3 7 WRITE Q load 100 3 add 101 4 store 103 7 29/40 ELECINF102 Tarik Graba

3 e étape : Automate avec accumulateur et indirection CLK CYCLE IF AF EX IF AF EX IF AF EX ADDR 0 1 100 2 3 101 4 5 103 Inc_PC Sel_Addr Load_I Load_Acc Sel_Acc I load add store Acc 3 7 WRITE Q load 100 3 add 101 4 store 103 7 29/40 ELECINF102 Tarik Graba

3 e étape : Automate avec accumulateur et indirection AF Inc_PC IF load_i EX Sel_Add Inc_PC 30/40 ELECINF102 Tarik Graba

3 e étape : Automate avec accumulateur et indirection AF Inc_PC IF load_i EX Sel_Add Inc_PC L adresse ne peut pas être utilisée, il faut un compteur modulo 3 en plus. Inc_PC = Etat EX Sel_Acc = (I = load) Load_Acc = (I store) && (Etat = Ex) WRITE = (I = store) && (Etat = Ex) Sel_Add = Etat = Ex 30/40 ELECINF102 Tarik Graba

3 e étape : Automate avec accumulateur et indirection l architecture le contrôleur Inc_PC PC Sel_Addr 0 ADDR AF Inc_PC Addr 1 Q[7 :0] I Load_I I I Sel_Acc Load_Acc IF load_i EX Sel_Add ALU 1 0 Acc D[7 :0] Inc_PC Inc_PC CTRL Sel_Addr Load_I Load_Acc Sel_Acc WRITE Inc_PC = Etat EX Sel_Acc = (I = load) Load_Acc = (I store) && (Etat = Ex) WRITE = (I = store) && (Etat = Ex) Sel_Add = Etat = Ex 31/40 ELECINF102 Tarik Graba

4 e étape : Processeur complet Si on veut : Exécuter les parties de code de façon conditionnelle Organiser le code en fonctions réutilisables 32/40 ELECINF102 Tarik Graba

4 e étape : Processeur complet Si on veut : Exécuter les parties de code de façon conditionnelle Organiser le code en fonctions réutilisables On doit Ajouter des instructions de saut Ajouter des indicateurs pour les tests 32/40 ELECINF102 Tarik Graba

4 e étape : Processeur complet code (binaire 8 bits) instruction effet 00000000 NOP Rien 00000001 XOR Acc = Acc XOR (AD) 00000010 AND Acc = Acc AND (AD) 00000011 OR Acc = Acc OR (AD) 00000100 ADD Acc = Acc + (AD) 00000101 ADC Acc = Acc + (AD) + C 00000110 SUB Acc = Acc - (AD) 00000111 SBC Acc = Acc - (AD) - C 00001000 ROL Acc = {Acc[6 :0], Acc[7]} 00001001 ROR Acc = {Acc[0], Acc[7 :1] } 00001010 LDA Acc = (AD) 00001011 STA (AD) = Acc 00001101 JMP PC = AD 00001110 JNC PC = AD si C=0 00001111 JNZ PC = AD si Z=0 33/40 ELECINF102 Tarik Graba

4 e étape : Processeur complet Modifiez l architecture précédente Quels éléments faut il ajouter ou supprimer? 34/40 ELECINF102 Tarik Graba

l architecture 4 e étape : Processeur complet Un compteur programme qu on peut modifier 35/40 ELECINF102 Tarik Graba

l architecture 4 e étape : Processeur complet Un compteur programme qu on peut modifier Une ALU avec des indicateurs (flags) 35/40 ELECINF102 Tarik Graba

l architecture 4 e étape : Processeur complet Un compteur programme qu on peut modifier Une ALU avec des indicateurs (flags) Un registre pour l instruction 35/40 ELECINF102 Tarik Graba

l architecture 4 e étape : Processeur complet Un compteur programme qu on peut modifier Une ALU avec des indicateurs (flags) Un registre pour l instruction Un registre pour l adresse des données La possibilité de choisir quelle adresse présenter 35/40 ELECINF102 Tarik Graba

l architecture 4 e étape : Processeur complet Un compteur programme qu on peut modifier Une ALU avec des indicateurs (flags) Un registre pour l instruction Q[7 :0] Inc_PC EX Load_PC PC 0 Addr 1 Load_I I I I Load_Acc Sel_Acc ADDR Un registre pour l adresse des données ALU 1 0 Acc Z C D[7 :0] La possibilité de choisir quelle adresse présenter Un registre pour l accumulateur et les flags CTRL Inc_PC Load_PC EX Load_AZC Load_I WRITE Un contrôleur 35/40 ELECINF102 Tarik Graba

4 e étape : Processeur complet Chronogramme CLK CYCLE IF AF EX ADDR PC PC+1 ADD Q Inst. ADD (AD) load_i load_add load_pc Sel_Add load_azc WRITE Inc_PC Si I == JMP, C, Z Si opération Si STA 36/40 ELECINF102 Tarik Graba

4 e étape : Processeur complet le contrôleur AF Inc_PC IF load_i EX Sel_Add Inc_PC Sel_AZC = (I = LDA ) Load_AZC = (I (STA, JMP, NOP) && (Etat = Ex) WRITE = (I = STA) && (Etat = Ex) Load_PC = (I=JMP (I=JNZ && Z=0) (I=JNC && C=0)) && (Etat = AF) 37/40 ELECINF102 Tarik Graba

4 e étape : Processeur complet Récapitulons le contrôleur l architecture AF Inc_PC Load_PC Load_PC or Inc_PC 1 0 PC IF load_i EX Sel_Add +1 Inc_PC Sel_AZC = (I = LDA ) Load_AZC = (I (STA, JMP, NOP) && (Etat = Ex) WRITE = (I = STA) && (Etat = Ex) Load_PC = (I=JMP (I=JNZ && Z=0) (I=JNC && C=0)) && (Etat = AF) 38/40 ELECINF102 Tarik Graba

4 e étape : Processeur complet Récapitulons l architecture le contrôleur Inc_PC EX Load_PC PC 0 ADDR Q[7 :0] Addr 1 Load_I I I I Load_Acc Sel_Acc AF Inc_PC ALU 1 0 Acc Z D[7 :0] IF load_i EX Sel_Add C Inc_PC Inc_PC Load_PC CTRL EX Load_AZC Load_I WRITE Sel_AZC = (I = LDA ) Load_AZC = (I (STA, JMP, NOP) && (Etat = Ex) WRITE = (I = STA) && (Etat = Ex) Load_PC = (I=JMP (I=JNZ && Z=0) (I=JNC && C=0)) && (Etat = AF) 38/40 ELECINF102 Tarik Graba

4 e étape+ : Processeur complet Ajout d un port en sortie Des signaux en sortie qu on peut piloter à partir du processeur Pour le buzzer nous avons besoin d un seul bit en sortie Une instruction supplémentaire code (binaire 8 bits) instruction effet 00001100 OUT BZ = (AD)[0] 39/40 ELECINF102 Tarik Graba

4 e étape+ : Processeur complet Ajout d un port en sortie Load_Bz Bz Inc_PC EX Load_PC PC 0 ADDR Addr 1 Q[7 :0] Load_I I I I Load_Acc Sel_Acc ALU 1 0 Acc D[7 :0] Z C CTRL Load_Bz Inc_PC Load_PC EX Load_AZC Load_I WRITE Load_Bz = (I = OUT && (Etat = Ex)) 40/40 ELECINF102 Tarik Graba