• Aucun résultat trouvé

Cours 16, Les Entrées/Sorties

N/A
N/A
Protected

Academic year: 2022

Partager "Cours 16, Les Entrées/Sorties"

Copied!
32
0
0

Texte intégral

(1)

Etienne Tremblay

Ordinateurs, Structure et Applications

GIF-1001

Université Laval, Hiver 2012

Cours 16, Les Entrées/Sorties

(2)

GIF-1001

Les Entrées/Sorties

• Entrées/Sorties (E/S, Input/Output ou I/O en anglais) désigne l’ensemble des transferts de données qui permettent au microprocesseur et à la

mémoire de communiquer avec le restant du monde. Une entrée est une donnée allant du monde extérieur vers le microprocesseur. Une sortie est une donnée allant du microprocesseur vers le monde extérieur.

• Un périphérique est un appareil qui interagit avec microprocesseur et la mémoire. Certains périphériques sont branchés à l’intérieur de l’ordinateur (disques durs, carte réseau,…) alors que d’autres sont branchés sur des interfaces externes de l’ordinateur (clavier, écrans, souris, etc.).

• Les Entrées/Sorties proviennent des périphériques.

• Le traitement des E/S est complexe pour plusieurs raisons:

– Les périphériques ont des modes de fonctionnement variés.

– Les périphériques ont souvent leur propres formats de données.

– Les périphériques ne vont pas à la même vitesse que le CPU. Beaucoup sont très lents par rapport à ce dernier alors que certains sont plus rapide…

• Pour chaque périphérique, il existe une unité spéciale appelée module d’E/S (I/O module) qui sert d’interface entre le périphérique et le microprocesseur.

(3)

Modules d’Entrées/Sorties (1/2)

• Les modules d’E/S sont des interfaces entre le microprocesseur et un

périphérique spécifique. Ces modules sont habituellement appelés « contrôleur ».

Par exemple, le module d’E/S servant d’interface entre le microprocesseur et un disque dur sera appelé contrôleur de disque.

• Les modules d’E/S ont plusieurs fonctions. En voici les principales:

– Lire ou écrire des données du périphérique.

– Lire ou écrire des données du Microprocesseur/Mémoire. Cela implique du décodage d’adresses, de données et de lignes de contrôle. Certains modules d’E/S doivent générer des interruptions ou accéder directement à la mémoire.

– Contrôler le périphérique et lui faire exécuter des séquences de tâches.

– Tester le périphérique et détecter des erreurs.

– Mettre certaines données du périphérique ou du microprocesseur en mémoire tampon afin d’ajuster les vitesses de communication.

• Il existe plusieurs techniques pour communiquer à partir du CPU/Mémoire vers un périphériques à travers un module de I/O. Les trois principales techniques sont les E/S programmées, les E/S avec interruptions et le DMA.

(4)

GIF-1001

Modules d’Entrées/Sorties (2/2)

• Le diagramme ci-dessous montre les principales composantes d’un module d’E/S. Ainsi qu’illustré, le module comprends de la mémoire tampon pour des

données (sous forme de registres dans l’illustration), une logique de contrôle pour décoder l’adresse et les lignes de contrôle (ou pour faire du DMA), et une ou

plusieurs interfaces avec un ou plusieurs périphériques. Ce diagramme est simple. Certains module d’E/S sont très rudimentaires alors que d’autres sont très complexes (exemples de caractéristiques qui rendent le module complexe:

DMA, support pour interruptions, programmes exécutés à l’intérieur du module, etc.).

Registres de données

Registres de statut/

commande

Logique de contrôle Bus de

Données

Bus d’Adresses

Bus de contrôle

Interface avec le périphérique

Interface avec le périphérique

Contrôle Données État

Module d’E/S

(5)

Éntrées/Sorties Programmées

La technique d’E/S programmées consiste à concevoir un programme, exécuté par le microprocesseur, qui communiquera avec le module d’E/S afin d’obtenir des données du périphérique.

Le microprocesseur peut tester, lire, écrire ou contrôler le périphérique à travers le module d’E/S.

Les E/S programmées sont très simples. Le programmeur a un contrôle direct sur le périphérique. Pour accéder à un périphérique, le microprocesseur exécute un

programme qui aura les grandes lignes suivantes:

– Vérifier si le périphérique est prêt – Envoyer une requête au périphérique

– Attendre que la requête soit finie en interrogeant les registres de statut du périphérique (polling)

– Envoyer une autre requête et attendre encore. Recommencer ces deux opérations tant que le programme n’est pas terminé…

Les E/S programmées ont un désavantage majeur évident: c’est très lent. Le

microprocesseur attend après un périphérique pour passer à la prochaine instruction!

Les E/S programmées ont d’autres désavantages. Par exemple, il peut y avoir des tâches complexes au niveau matériel qui exigent un contrôle très rapide et très poussé du périphériques. Dans de tel cas, il peut devenir impossible de faire un programme qui pourra contrôler le périphérique.

(6)

GIF-1001

Éntrées/Sorties avec Interruptions

• Une façon d’éliminer les délais d’attente du microprocesseur est d’utiliser des interruptions. La méthode d’E/S avec interruption consiste à accéder au module d’E/S lors d’interruptions provenant de ce dernier afin de signaler un évènement particulier (la fin d’une tâche par exemple!).

• Nous avons déjà vu les interruptions. Néanmoins, voici un rappel de ce qui se produit lorsqu’une interruption survient:

– Le périphérique émet un signal d’interruption géré par le contrôleur d’interruptions. Ce dernier achemine le signal au microprocesseur.

– Le microprocesseur termine l’instruction en cours.

– Le microprocesseur vérifie s’il doit traiter l’interruption en fonction de sa priorité et de ses registres internes. Finalement, il envoie un accusé réception au contrôleur d’interruptions.

– Le microprocesseur sauvegarde l’emplacement du programme en cours

(l’adresse de retour) et toute l’information nécessaire pour reprendre l’exécution du programme en cours (drapeaux par exemple).

– Le microprocesseur détermine l’adresse de la routine à exécuter afin de traiter l’interruption.

– Le microprocesseur appelle la routine de traitement de l’interruption (ISR).

– La routine de traitement de l’interruption est exécutée. En temps normal, l’ISR sauvegarde les registres utilisés dans l’ISR sur la pile et l’ISR se termine avec une instruction de retour vers le programme exécuter avant l’interruption.

(7)

Interruptions multiples, types et priorités

• Lorsque plusieurs périphériques peuvent faire des interruptions, il faut identifier qui fait l’interruption et déterminer quelle interruption est la plus prioritaire.

• Il existe quatre méthodes de détection de la source d’interruption:

– Plusieurs lignes d’interruption. Le microprocesseur détermine qui a fait

l’interruption en fonction de la ligne activée. Cette approche requiert trop de ligne pour les interruptions!

– Interrogation logicielle (software polling). Lors d’interruption, un programme est exécuté afin de demander à chaque périphérique s’il a généré l’interruption. Cette approche prend beaucoup de temps.

– Chaînage en série (interruption matérielle vectorisée). Lors d’interruption, le périphérique ayant fait l’interruption mettra un numéro (ou vecteur) sur le bus de donnée après l’accusé réception du microprocesseur. Cette technique est celle du 8086 vue précédemment et de la plupart des microprocesseurs.

– Arbitrage de bus. Comme le chaînage en série, sauf que le périphérique prend le contrôle du bus de données avant de générer l’interruption.

• Il y a plusieurs types d’interruption tel que vu avec le 8086:

– Situation anormale (exceptions). Exemple: division par 0.

– Interruption logicielle. Exemple: appeler une routine I/O du BIOS.

– Interruption matérielle. Exemple:une touche de clavier. Cette catégorie se divise en plusieurs sous catégories. Une interruption matérielle peut annoncer une situation anormale, la fin d’une tâche, un évènement externe, …

• Les interruptions ont habituellement des priorités tel que vu pour le 8086.

(8)

GIF-1001

Direct Memory Access (DMA) (1/4)

• Le Direct Memory Access (DMA) est un transfert de données direct entre un périphérique et la mémoire ou vice versa, effectué sans intervention du

microprocesseur.

• Le contrôleur de DMA est un circuit intégré qui gère le transfert par DMA.

• Le transfert par DMA se fait par bloc de données, les données étant à des adresses contigües de la mémoire et provenant habituellement du même périphérique.

Micro- processeur

BUS DE DONNÉES BUS D'ADRESSE

BUS DE CONTRÔLE

Mémoire Entrée/

sortie

8237 HRQ

HLDA

DRQ0 DRQ1 DRQ2 DRQ3 Contrôleur de DMA

MEMR, MEMW, IOR, IOW, AEN ...

(9)

Direct Memory Access (DMA) (2/4)

• Les transferts par DMA sont configurés par des instructions de la mémoire exécutées par le microprocesseur. Habituellement, le microprocesseur configure le transfert de DMA en exécutant ces instructions. Au minimum, les instructions configureront:

– La plage de mémoire visée par le transfert de données (l’adresse de départ et le nombre de données à transférer).

– Le périphérique visé par le DMA

– La vitesse de transfert, la taille des données transférées et le mode de transfert (la façon dont sera déclenchée le transfert, seul le mode de transfert “unique” –un seul bloc de données- sera vu dans le cadre du cours).

• Une fois le transfert configuré, le transfert par DMA débute automatiquement lors d’un signal de périphérique ou lors que le microprocesseur exécute une instruction initiant le transfert, en fonction du mode de transfert.

• Lors de l’initialisation d’un transfert par DMA, le contrôleur de DMA négocie l’accès au bus de données avec le microprocesseur. Dans l’exemple de la page précédente (qui est un vieil exemple), un périphérique demande un transfert par DMA en activant DRQ2. Ensuite, le contrôleur de DMA (8237) active la ligne HRQ pour demander un accès au bus de données au

microcontrôleur. Enfin, le microcontrôleur active HLDA pour permettre le transfert.

(10)

GIF-1001

Direct Memory Access (DMA) (3/4)

• Lors d’un transfert par DMA, le contrôleur de DMA gère les bus de contrôle d’adresse et de données pour effectuer le transfert.

– Le microcontrôleur et le contrôleur de DMA ne peuvent contrôler les bus en même temps.

– Le transfert s’effectue habituellement avec un compteur sur le bus d’adresse.

Lors du transfert de chaque données, le compteur d’adresse est incrémenté à partir de l’adresse de base du bloc de mémoire visé.

• Le contrôleur de DMA possède souvent un tampon de mémoire pour

emmagasiner les données échangées entre la mémoire et un périphérique.

Le transfert se fait en deux temps: lecture de données puis écriture de données.

• Le transfert par DMA est beaucoup plus rapide que le transfert avec des instructions MOV ou IN/OUT et il soulage le microprocesseur de cette tâche:

– Entre le transfert de chaque données, le microprocesseur n’a pas à lire et exécuter des instructions.

– Le transfert se fait par bloc, directement de la mémoire au périphérique ou vice versa: les données ne sont pas entreposées temporairement dans des registres du microprocesseur.

– Pendant le transfert, le microprocesseur peut effectuer d’autres tâches.

(11)

Direct Memory Access (DMA) (4/4)

• Dans les systèmes modernes, le microprocesseur n’est pas pausé (HALT) pendant le transfert par DMA. Plusieurs stratégies peuvent permettre

l’exécution d’instructions même si le contrôleur de DMA contrôle un bus d’accès à la mémoire de données:

– Dans l’architecture Harvard, le contrôleur de DMA monopolise le bus de données seulement. Le bus d’instruction relié à la mémoire d’instruction reste sous le

contrôle du microprocesseur qui peut lire et exécuter des instructions pendant le transfert, sauf si ces instructions accèdent à la mémoire de données.

– Deux bus d’accès à la mémoire peuvent permettre au contrôleur de DMA et au microprocesseur d’accéder simultanément à la mémoire.

– L’accès au bus de données par le contrôleur de DMA est subordonné à celui du microprocesseur: le contrôleur de DMA effectue le transfert entre chaque

moment d’utilisation du bus par le microcontrôleur.

– Les caches contiennent des données utilisées par le microprocesseur alors que le transfert par DMA modifie la mémoire seulement.

• Le DMA est utilisé abondamment dans vos ordinateurs: transfert de données entre la mémoire et le disque dur, transfert de données vers la carte graphique ou la carte de son, etc.

(12)

GIF-1001

E/S et Système d’Exploitation (1/3)

• Le système d’exploitation gère presque tous les accès aux périphériques dans les ordinateurs. C’est le système d’exploitation qui implémente presque toutes les fonctions d’accès à ceux-ci, quelle que soit la méthode d’accès aux E/Ss.

• Cette gestion du matériel par le système d’exploitation a plusieurs avantages:

– Le programmeur n’a pas à se préoccuper de la nature des périphériques de l’ordinateur lorsqu’il fait des programmes qui ne sont pas spécifiques à un périphérique.

– Le système d’exploitation peut gérer l’exécution des processus en fonction de leurs accès aux périphériques:

• Si le périphérique est lent, le processus deviendra bloqué jusqu’à ce que le périphérique termine la tâche qui lui a été demandée.

• Si plusieurs processus utilisent le même périphérique, la système d’exploitation gère les conflits de ressource entre les processus.

• Les accès aux périphériques sont habituellement vus comme des accès à un fichier pour les applications du programmeur. Avec le DOS, les accès aux périphériques se faisaient à travers des interruptions logicielles, mais, sous Windows, ils faut appeler des fonctions spécifiques.

• Les routines traitant les interruptions (ISR) demeurent des routines du

système d’exploitation. C’est le système d’exploitation qui initialise la table des vecteurs d’interruptions et établit les ISRs en fonction de ses pilotes de

périphériques.

(13)

E/S et Système d’Exploitation (2/3)

• Pour communiquer avec un périphérique, une application doit ouvrir un lien de communication avec le périphérique (Open file), puis faire des écritures et des lectures (Read/Write file). Un handle est un numéro qui est attribué à un fichier lors de son ouverture. Ce numéro sert à identifier le fichier/périphérique pour toutes les opérations sur le fichier subséquentes.

• Les requêtes d’I/Os sont envoyées à l’I/O manager (gestionnaire d’E/S). Une routine d’I/O crée un IRP (I/O Request Paquet) qui est envoyé au pilote de périphérique approprié. Un IRP dernier est un objet décrivant une requête d’I/O.

• Le pilote de périphérique, un ensemble de fonctions réalisant des tâches précises, traite le IRP. Il envoie des commandes au périphérique.

• Le périphérique reçoit les commandes du pilote de périphérique. Il les exécute, puis signale qu’elles sont terminées par une(des) interruption(s).

• La routine d’interruption (ISR) redonne le contrôle au pilote de périphérique qui termine le transfert de donnée du/vers le périphérique.

• Le pilote de périphérique signale à la routine d’I/O que l’opération est

complétée. La routine d’I/O, à son tour, signale au processus qu l’opération est complétée.

(14)

GIF-1001

E/S et Système d’Exploitation (3/3)

Processus utilisateur

WriteFile(Handle, char* BufferOut,

BufferOut, ...) ReadFile(Handle,

char* BufferIn,

#dataToRead, ...)

Fait le lien entre le handle et le périphérique

Contrôle les paramètres de la fonction

Suspend le processus usager Construit l'IRP.

Signale la requête au"driver"

approprié.

Se met en attente

Remet le processus ready Vérifie les erreurs

Si nécessaire, transfert des données de l'espace noyau vers l'espace du processusé Détruit l'IRP

Exit

Noyau

Vérifie s'il y a une requête dans sa file d'attente.

Extrait et traite l'IRP reçu.

Initie la communication avec le périphérique

Se met en attente

Effectue du traitement sur les données provenant du

périphérique

Envoyer les données à destination

Vérifie les erreurs

Signale la fin du traitement

Traite l'interruption Détermine qui a fait une requête au périphérique Transfert des données au driver pour du post- traitement

Signale au driver la réponse du

périphérique 1

2

3 Vers le périph (HAL et contrôleurs de bus)

Interrupt 4

5

6

Routine d'I/O du I/O manager

Pilote de périphérique

(15)

Architectures CPU/Mémoire/E-S

• Un ordinateur a cinq composantes de base: le processeur, la mémoire, les modules entrées/sorties, les périphériques et les bus. Il y a une multitude de façon d’agencer tous ces éléments entre eux. Chacune de ces façons est une architecture qui a ses avantages et ses inconvénients.

• Deux architectures sont essentiellement utilisées de nos jours: l’architecture de bus (avec hiérarchie de bus, bus I/O) et l’architecture de canaux

(Channel I/O). L’architecture de bus se retrouve habituellement dans vos PCs. L’architecture de canaux est principalement utilisée par IBM pour les serveurs. Les acétates qui suivent présentent ces deux architectures.

(16)

GIF-1001

Architecture de Bus

• Rappel: Un bus est un ensemble de lignes électriques.

• Dans une architecture de bus, les modules d’E/S sont connectés sur des bus, reliés à d’autres bus par des contrôleurs de bus (souvent appelés

interfaces ou ponts). Le processeur et la mémoire sont eux-mêmes sur des contrôleurs de bus.

• Les contrôleurs de BUS et les lignes de BUS doivent supporter le DMA et les interruptions d’un bus à l’autre. Il doit être toujours possible de faire des entrées/sorties programmées, par interruption ou avec DMA.

• Il existe une hiérarchie de bus. Plusieurs bus de plus en plus lents vont du processeur aux E/S principalement parce que: les E/S ont des taux de

transfert de données différents, les bus rapides doivent êtres courts afin de limiter les délais de propagation et les pertes d’énergie, il ne faut pas

surcharger un bus d’appareils.

(17)

Description des Bus (1/3)

Chaque bus a ses propres caractéristiques. Les bus peuvent être fort différents.

Néanmoins, tous les bus ont une largeur (un nombre de lignes!) comprenant un nombre de lignes de données et d’adresses, une vitesse de communication, un type de connecteur et un protocole qui décrit la façon dont sont échangées les données sur le bus.

Voici quelques termes que l’on retrouve couramment dans la description de bus:

– Ligne dédiée. Ligne de bus réservée à une fonction unique.

– Ligne multiplexée. Ligne de bus qui peut avoir plusieurs rôles. Par exemple, nous avons vu le multiplexage temporel pour les lignes d’adresses et de données du 8086.

Méthode d’arbitrage. La méthode d’arbitrage détermine qui contrôle le bus. Dans les systèmes simples que nous avons vu, il n’y avait que le CPU qui pouvait contrôler le bus et l’arbitrage était tout simple: le CPU contrôle toujours le bus! Toutefois, lors de DMA ou lorsqu’il y a plusieurs CPU, il faut une convention pour savoir qui contrôle le bus: c’est la méthode d’arbitrage. Il y en deux types: centralisée (un arbitre décide qui contrôle le bus) et distribuée (les contrôleurs de bus s’échangent le contrôle à tour de rôle).

– Bus synchrone ou asynchrone. Dans un bus synchrone, une ligne du bus sert d’horloge. Dans un bus asynchrone, la vitesse de communication est préétablie et l’occurrence d’un évènement dépend des évènements survenus auparavant.

Point à point ou multipoint. Un bus point à point est un bus sur lequel deux appareils seulement sont connectés. Il y aura plusieurs appareils sur un bus multipoint.

Bloc ou Données en rafales (burst). Les données peuvent être échangées par blocs de taille fixes ou en blocs de tailles variables, en rafale.

– Protocole Série ou parallèle (ne pas confondre avec port série et port parallèle). Un bus série est un bus ou les bits sont transmis sur une seule ligne, un après l’autre. Sur un bus parallèle, plusieurs bits sont transmis simultanément.

(18)

GIF-1001

Description des Bus (2/3)

• Pour tous les bus existants, une vitesse de communication maximale est toujours annoncée. Ce chiffre est toujours supérieur à la vitesse maximale réelle à laquelle peut se transférer les données d’un usager:

Des pertes de temps surviennent afin d’arbitrer les bus.

Des bits peuvent être ajoutés aux données brutes afin de détecter et/ou corriger des erreurs.

Des bits peuvent être ajoutés aux données afin d’assurer la synchronisation des messages

Des bits peuvent être ajoutés afin d’éviter de longues séquences de 1 ou 0 et/ou de limiter la puissance des harmoniques secondaires du signal transmis.

Il y a toujours un temps de latence au début d’une communication entre deux appareils.

Il est possible et même très probable que la communication ne puisse pas se faire à vitesse maximum pendant un intervalle de temps très long.

Les données des usagers sont presque toujours encapsulées dans plusieurs couches de protocole de communication. Les bytes de protocole ajoutés ont plusieurs fonctions comme identifier la source et la destination du message ou donner un numéro de référence au message.

La vitesse effective/réelle est la vitesse à laquelle les données d’un usager sont échangées sur un bus. Cette vitesse est souvent sensiblement inférieure à la vitesse maximale.

Certaines vitesses sont en bits/secondes (bps). D’autres sont en octets ou bytes par secondes. La vitesse en bps est 8 fois plus grande que celle en bytes et elle est meilleure vendeuse

(19)

Description des Bus (3/3)

La majorité des bus à l’intérieur des ordinateurs modernes adoptent des protocoles de type série.

À très haute fréquence, les délais de transmission d’un signal électrique dans un fil court peuvent devenir considérable par rapport à la période d’un bit.

Lorsque plusieurs traces (fils électriques sur des PCBs) sont en parallèle, elles ne peuvent pas avoir la même longueur pour des raisons purement mécanique.

Des signaux électriques qui partent en même temps d’un transmetteur

n’atteignent pas en même temps le receveur si les fils qui propagent les signaux n’ont pas la même longueur. À haute fréquence, il est possible que des bits d’un fil arrivent décalés par rapport au bits des autres fils. De ce fait,un bus parallèle est peu envisageable pour des fréquences supérieure à 1 GHz.

Les BUS récents sont des bus avec plusieurs liens point à point

Si l’appareil A est relié à l’appareil B et que l’appareil B est reliée à l’appareil C, les messages de l’appareil A à l’appareil C seront reçus et retransmis par

l’appareil B.

La bande passante d’un bus multipoint doit être répartie entre tous les appareils connectés sur le bus. Avec plusieurs liens point à point, la communication entre plusieurs paires d’appareils peut se faire simultanément.

Les bits transmis sont encodés en mode différentiel

La différence de tension entre deux signaux propagés sur deux lignes différentes détermine la valeur d’un bit transmis. Des symboles différents sont transmis si la différence est positive ou négative.

Le bruit commun sur les deux lignes propageant le signal est éliminé lorsque la différence est effectuée. Très robuste.

Lorsque la différence est nulle, le bit est invalide ou une autre information peut

(20)

GIF-1001

Architecture possible des Bus

d’un PC acheté en 2003

Les Bus de votre Ordinateur (1/4)

CPU

Memoire DRAM Chipset

North Bridge

Interface PCI/ISA

Interface de port série

Disque Dur Cache

L2

Cache L1

Back Side Bus (BSB)

Front Side Bus (FSB)

Bus Mémoire/

Système Carte

Video

Bus AGP

Contrôleur de disque SCSI ou ATA (IDE)

Chipset South Bridge

Bus PCI

Bus SATA Interface

AGP

Interface SATA

Interface réseau Interface

USB

Bus ISA Autre carte

PCI

Interface de port parallèle Interface

PCI

(21)

Architecture possible des Bus

d’un PC acheté en 2007

Les Bus de votre Ordinateur (2/4)

CPU

Memoire DRAM Chipset

North Bridge

Interface de port série

Disque Dur

Cache L3

Cache

L1 Back Side Bus (BSB)

Front Side Bus (FSB)

Bus Mémoire/

Système

Carte Video

Bus PCI Express

Chipset South Bridge

Bus PCI

Interface PCI Express

Interface SATA

Interface réseau Interface USB 2.0

Carte de son

Interface de port parallèle

Architecture de base des bus d’un PC

Interface PCI Interface USB 2.0

Interface PCI Express

Interface PCI Express Interface PCI

Express

Cache L2

Autre carte PCI

(22)

GIF-1001

Architecture possible des Bus

d’un PC acheté en 2011

Les Bus de votre Ordinateur (3/4)

Memoire DRAM

Interface de port série

Disque Dur

Cache L3 Cache

L1

Bus Mémoire/

Système

Carte Video

Chipset South Bridge

Bus PCI

Interface SATA

Interface réseau Interface USB 2.0

Carte de

son Interface de

port parallèle Interface

PCI Interface USB 2.0

Interface PCI Express

Interface PCI Express Interface PCI

Express

Cache L2

Autre carte PCI

Coeur 1

Microprocesseur

Coeur 2

Coeur 3 Coeur 4

Memory Manage-

ment Unit Coeur

Graphique

(23)

Les Bus de votre Ordinateur (3/4)

Dans un ordinateur PC actuel, vous devriez rencontrer plusieurs bus tels que présentés dans les acétates précédentes.

Habituellement, le CPU communique avec ses caches sur un bus dédié, le back side bus (BSB). Il communique également avec la mémoire, la carte video et les E/S à partir du front side bus (FSB). Le chipset, du moins la partie nord, est responsable de router les échanges entre la mémoire et le CPU, la mémoire et la carte vidéo et le CPU et la carte vidéo. De larges quantités de données sont rapidement échangées dans cette partie de l’ordinateur, habituellement concentrée sur la carte mère. Le chipset est également responsable de la communication entre le CPU (ou la mémoire dans le cas de DMA) et les autres E/S par sa partie sud (pont ou bridge). Ces

échanges sont plus lents et moins volumineux que dans la partie nord.

Le North Bridge et même un processeur graphique sont parfois intégrés dans les microprocesseurs modernes au même titre que la cache L3.

Le bus PCI ou le bus PCI express est le principal bus sur lequel se connecte tous les modules d’E/S. Il s’y connecte habituellement le disque dur, les cartes réseaux, le port USB et d’autres bus plus lents, s’il y en a. Dans les figures précédentes, on retrouve le clavier et la souris sur un bus ISA, plus lent que le bus PCI auquel il est connecté.

Les figures montrant l’architecture typique d’un PC ne sont que des exemples qui ne s’appliquent pas à tous les ordinateurs! Ces figures ne s’appliquent généralement pas aux serveurs, ni aux ordinateurs ayant plusieurs deux coeurs, ni aux ordinateurs

n’ayant pas de bus ISA, ni aux ordinateurs n’ayant pas une cache externe, ni aux ordinateurs…

(24)

GIF-1001

BUS PCI

Le Bus PCI (Peripherical Component Interface) a été créé au début des années 1990 par Intel. Il a été rapidement mis dans le domaine publique (Open Source) afin d’en permettre la diffusion à large échelle. Depuis, il s’agit d’un standard qui est/sera remplacé par le PCI Express.

Le bus PCI a 32 lignes d’adresses et 32 ou 64 lignes de données. Pour avoir 64 bits de données, du multiplexage temporel est fait avec les 32 lignes d’adresses. Incluant ces lignes de données/adresses, le bus PCI a 120 lignes.

Le bus PCI a une horloge de 66MHz (version 2.2), indépendante de l’horloge du CPU.

Les données y sont transférées de façons synchrones à un débit pouvant aller jusqu’à 66MHz*64bits en parallèle, soit 4.224Gbit/s. Notez que la version originale du PCI avait une horloge de 33MHz et qu’il existe des versions à 133Mhz (PCI-X).

Il y a un arbitre central sur le BUS PCI déterminant qui contrôle bus. Il est possible de connecter plusieurs processeur à un seul bus PCI. Il est également possible de faire du DMA.

Le bus PCI supporte les interruptions. Il a quatre lignes pour y connecter des

contrôleurs d’interruptions et supporter le transfert d’Interrupt Acknowledge du CPU vers un périphérique.

Les données sont transmises par bloc sur le bus PCI. Elles sont emmagasinées dans un cache qui permet d’adapter la vitesse des modules d’E/S à celle du CPU.

Il existe des chips simples et peu coûteux permettant d’attacher d’autres bus comme le bus ISA au bus PCI. Le bus a été conçu en tenant compte des autres bus

existants.

Pour plus d’information sur le bus PCI ou sur le PCI-X, lire:

http://www.pcstats.com/articleview.cfm?articleID=1087 Les connecteurs des cartes dextension (un peu vieux, mais!)

(25)

BUS ATA (IDE), SCSI et SATA

• Les bus ATA (IDE), SCSI et SATA ont été créés afin de communiquer avec des disques durs.

• Le bus IDE (Integrated Disk Electronics) est le plus vieux, le moins

performant et… le moins cher. Il s’agit du câble à ruban plat de 40 pins que l’on retrouve encore dans certaines machines.

• Le bus ATA (Advanced Technology Attachment) est du même type que le bus IDE, mais en plus performant. Il utilise le même câble, mais à de plus hautes vitesses. Il existe plusieurs versions de ATA, ATA-1 étant la même chose qu’IDE.

• Le bus SCSI (Small/Smart Computer Standard Interface) a été créé afin de suppléer aux limitations du bus IDE (nombre de disques limité, peu de

support pour le RAID, etc.).

• Le bus SATA (Serial Advanced Technology Attachment) utilise un protocole série, contrairement au ATA ou au SCSI. Il est sorti en 2003-2004.

• Vous pourrez trouver davantage d’information sur chacun de ces bus sur internet. Voici deux liens à titre d’exemples:

– http://sophia.dtp.fmph.uniba.sk/pchardware/idescsi.html

– http://www.interfacebus.com/Design_Connector_Serial_ATA.html

(26)

GIF-1001

BUS ISA, AT, EISA, et VLBUS

• Le BUS ISA (Industry Standard Architecture) a été développé par IBM dans les années 1980 à 1981. Ce bus 8 bits (nombre de lignes de données!)

devait fournir un bus plus puissant que les quelques bits disponibles sur le port parallèle des PCs. Toutefois, il a été remplacé rapidement, en 1984, par une version 16bits, le bus AT. Le bus EISA (Extended ISA), également une version plus récente du bus ISA, est sur 32 bits.

• Le VLBUS (Video Electronics Standard Association Local BUS) a été créé dans les années 1990 pour supporter des cartes graphiques plus

performantes.

• Bien que décrits dans « Les connecteurs des cartes dextension.doc », vous ne retrouverez pratiquement plus ces bus dans les ordinateurs modernes.

Ils sont désuets, car ils ont tous été supplantés par le bus PCI. Seules quelques vieilles interfaces pratiques demeurent sur ces bus (port série et port parallèle sur le bus ISA!).

(27)

BUS AGP

• Le bus AGP (Accelerated Graphics Port) a été créé par Intel en 1996 afin d’améliorer les vitesses de communication avec les cartes graphiques. Les transferts de données nécessaires aux besoins graphiques modernes ne peuvent pas être supportés par le bus PCI qui est trop lent et trop encombré (presque tous les périphériques sont connectés au bus PCI!!!).

• Il n’y a qu’un seul périphérique connecté sur le bus AGP: la carte graphique!

• Pour plus de détail sur ce bus, voir des sites internet comme http://www.hardwaresecrets.com/article/155.

(28)

GIF-1001

BUS PCI EXPRESS

• Le bus PCI EXPRESS a été créé par Intel en 2004 afin de remplacer le bus AGP et le bus PCI trop encombré (même sans la carte graphique, le bus PCI n’est pas capable de fournir une carte Ethernet Gigabyte, des

périphériques USB2.0, du FireWire et plusieurs autres périphériques).

– De nos jours (2011), le PCI Express a remplacé l’AGP sur presque toutes les cartes mères, mais le PCI demeure pour les périphériques ayant peu de besoins en terme de bande passante (peu de données à échanger par unité de temps).

• Le bus PCI Express est un bus série transmettant en mode différentiel à 5Gbps. Il est possible de doubler, quadrupler la paire de fils utilisés pour passer à 10Gps ou 20Gbps. Il est aussi possible de multiplier le nombre de fils par 8 ou 16…

• Les bytes de données de l’usager sont codés sur 10 bits. 2 bits sont ajoutés essentiellement afin de détecter les erreurs. On parle d’encodage 8b/10b.

Le PCI Express a aussi de nombreuses couches de communication qui ajoute une entête aux données de l’usager.

• Le bus PCI Express est Point à point. Plusieurs connections point à point étant potentiellement disponibles à partir du Chipset (ou du microprocesseur directement).

• Pour plus de détail sur ce bus, voir des sites internet comme:

http://www.dell.com/content/topics/global.aspx/vectors/en/2004_pciexpress

?c=us&l=en&s=gen

www.intel.com/technology/pciexpress/devnet/docs/WhatisPCIExpress.pdf

(29)

Architecture de Canaux (1/2)

• Dans l’architecture de canaux, le CPU n’exécute aucune instruction d’E/S. Une composante appelée canal se charge des E/S pour lui.

Le canal d’E/S reçoit des requêtes du CPU et exécute des

programmes contenus dans la mémoire afin de communiquer avec le périphérique. Une fois les données du périphérique mise en

mémoire tampon, elles sont transférée dans la mémoire par DMA.

On parle de canal, parce que le CPU ouvre une « voie » d’un périphérique à la mémoire. Cette « voie » est contrôlée par du

matériel externe au CPU qui prend les données des périphériques et les place en mémoire. Ce matériel, capable d’exécuter des

instructions, libère le CPU des tâches longues et fastidieuses reliées aux E/S.

• Il existe deux types principaux de canaux d’E/S: les canaux sélecteurs et les canaux multiplexeurs.

– Un canal sélecteur contrôle plusieurs modules d’E/S haute vitesse. À tout instant, il est dédié au transfert des données d’un unique

périphérique vers la mémoire.

– Un canal multiplexeur contrôle plusieurs modules d’E/S « simultanément

». Il répartit la bande passante entre chaque appareil habituellement basse vitesse pour aller chercher de leur données à tour de rôle.

(30)

GIF-1001

Architectures de Canaux (2/2)

Illustration d’un canal sélecteur

(31)

Interfaces externes et périphériques

• En plus de tous les bus présentés dans ce cours, il existe plusieurs bus qui sortent de l’ordinateurs. Ces bus sont appelées interfaces externes. En voici une liste non exhaustive qui sera le sujet du prochain cours: ports parallèle et série, port PS/2 (clavier et souris), USB, FireWire, Ethernet, InfiniBand…

(32)

GIF-1001

Références et exercices

• Références

– Irv Englander: Chapitre 9

– William Stallings: Chapitre 3 et Chapitre 7, sauf 7.7 – IRQ+DMA.doc

– Les connecteurs des cartes dextension.doc

Références

Documents relatifs

 Le CPU est capable d’exécuter des millions d’instructions dans le temps requis pour un simple accès disque.  Le temps de transfert de plusieurs blocs est plus important dans

Cette société établit des factures numérotées (en incrémentant partant de 1 et en réinitialisant à 1 le 1er janvier de chaque année) et datées, comprenant le

7 Un process impose les contraintes temps réel suivantes : temps de latence <1000µs et temps séparant 2 événements consécutifs >2ms.. On choisira le mode d'

 Il envoie un signal sur la ligne d'occupation pour préciser que le bus est

Pour illustrer ce dernier point, nous rapportons dans le tableau 4 les performances obtenues par le lexique Okapi ajusté en étendant de nouveau les requêtes avec les 10 premiers

Le test de pr´esence ou de non pr´esence d’un param`etre optionnel se fait `a l’int´erieur de la subroutine en utilisant la fonction bool´eenne present() (exemple: present(p))

Si nous ne postulons pas l’existence d’un Destin ou d’une Providence, nous devons partir de ce triple constat existentialiste : notre existence est contingente, puisque nous aurions

– mode ne doit contenir que des droits d’accès – on ne peut détruire qu’un répertoire vide.