490 likes | 610 Views
LE BUS PCI 3 ième partie: Les échanges de données Sommaire - Repère. Troisième partie: Les échanges de données Espace adressable Les commandes Les transactions Décodage d ’adresses Transactions en Écriture - Burst Transactions en Écriture - Single Cycle Transactions en Lecture - Burst
E N D
LE BUS PCI3ième partie: Les échanges de donnéesSommaire - Repère • Troisième partie:Les échanges de données • Espace adressable • Les commandes • Les transactions • Décodage d ’adresses • Transactions en Écriture - Burst • Transactions en Écriture - Single Cycle • Transactions en Lecture - Burst • Transactions en Lecture - Single Cycle • Fin de transaction • Synthèse Cours_bus_PCI_2_02
LE BUS PCI3ième partie: Les échanges de donnéesLes espaces adressables • Le bus PCI supporte 3 espaces adressables: • I/O • Essentiellement utilisé pour assurer la compatibilité • Ressource limitée, attention aux conflits • Mémoire • Meilleures performances que celles de l ’espace I/O • Peu de conflits • Configuration • Pour "plug and play" • Requis pour tous les agents PCI
LE BUS PCI3ième partie: Les échanges de donnéesLes espaces adressables • L ’espace I/O • Granularité: Octet • Espace de 4 Gigaoctets
LE BUS PCI3ième partie: Les échanges de donnéesLes espaces adressables • L ’espace Mémoire • Granularité: Mots de 32 bits
LE BUS PCI3ième partie: Les échanges de donnéesLes espaces adressables • L ’espace de configuration • Granularité: Octet • Chaque agent a un espace de configuration réservé de 256 octets • Décrit les possibilités PCI d ’un composant • Permet la configuration par logiciel des interfaces PCI (plug & play) • Adressage par: • Numéro de bus • Numéro d ’agent • Numéro de fonction • Numéro de registre
LE BUS PCI3ième partie: Les échanges de donnéesLes commandes • Les différentes opérations sur le bus: • Les accès burst ou transferts par paquet de données • C ’est le mécanisme de base des échanges sur le bus • Avantages: • Évite de charger le processeur par des accès fractionnés et multiples • Les processeurs de génération actuelle disposent généralement de ce mode d ’accès • Meilleure exploitation de la bande passante des (S)DRAM • Inconvénients: • Le bus est bloqué pendant tout le transfert • Attention aux interruptions • Phase d ’adressage suivie de une ou plusieurs phases de données • Nécessite, pour les agents émettant et recevant le paquet de disposer d ’une mémoire de taille suffisante
LE BUS PCI3ième partie: Les échanges de donnéesLes commandes • Les commandes de base: • Configuration Read, Configuration Write • I/O Read, I/O Write • Memory Read, Memory Write • Les commandes optimisées • Memory Read Line, Memory Read Multiple • Memory Write and Invalidate • Autres: • Interrupt Acknowledge • Special Cycle • Dual Address Cycle • Reserved
LE BUS PCI3ième partie: Les échanges de donnéesLes commandes • Liste des commandes PCI
LE BUS PCI3ième partie: Les échanges de donnéesLes transactions • Transaction en Écriture • Burst • Single Cycle • Transaction en Lecture • Burst • Single Cycle • État du bus:
LE BUS PCI3ième partie: Les échanges de donnéesLes transactions • Règles de base • Le signal Ready du composant drivant les données doit être valide quand les données sont transférées sur le bus • L ’agent PCI recevant les données doit laisser son signal Ready invalide tant qu ’il n ’est pas prêt à recevoir des données • Quand un signal Ready d ’un agent est validé, il doit le rester jusqu ’à la fin de la phase de données en cours • Un agent ne peut pas changer l ’état de ses signaux de contrôle après avoir signalé qu ’il était prêt à achever la phase de données en cours • Un initiateur, après avoir validé IRDY#, ne peut changer l ’état de IRDY# ou de FRAME# sans prendre en compte TRDY# • Une cible, après avoir validé TRDY# ou STOP#, ne peut changer TRDY#, STOP# ou DEVSEL# avant la fin de la phase de données en cours
LE BUS PCI3ième partie: Les échanges de donnéesDécodage d ’adresses (1/4)
LE BUS PCI3ième partie: Les échanges de donnéesDécodage d ’adresses (2/4)
LE BUS PCI3ième partie: Les échanges de donnéesDécodage d ’adresses (3/4)
LE BUS PCI3ième partie: Les échanges de donnéesDécodage d ’adresses (4/4) Une méthode de décodage d ’adresses pour lequel un agent accepte toutes les transactions non spécifiquement décodées par un autre agent.
LE BUS PCI3ième partie: Les échanges de donnéesTransactions en Écriture - Burst (1/7)
LE BUS PCI3ième partie: Les échanges de donnéesTransactions en Écriture - Burst (2/7)
LE BUS PCI3ième partie: Les échanges de donnéesTransactions en Écriture - Burst (3/7)
LE BUS PCI3ième partie: Les échanges de donnéesTransactions en Écriture - Burst (4/7)
LE BUS PCI3ième partie: Les échanges de donnéesTransactions en Écriture - Burst (5/7)
LE BUS PCI3ième partie: Les échanges de donnéesTransactions en Écriture - Burst (6/7)
LE BUS PCI3ième partie: Les échanges de donnéesTransactions en Écriture - Burst (7/7)
LE BUS PCI3ième partie: Les échanges de donnéesTransactions en Écriture - Single Cycle (1/3)
LE BUS PCI3ième partie: Les échanges de donnéesTransactions en Écriture - Single Cycle (2/3)
LE BUS PCI3ième partie: Les échanges de donnéesTransactions en Écriture - Single Cycle (3/3)
LE BUS PCI3ième partie: Les échanges de donnéesTransactions en Lecture - Burst (1/7)
LE BUS PCI3ième partie: Les échanges de donnéesTransactions en Lecture - Burst (2/7)
LE BUS PCI3ième partie: Les échanges de donnéesTransactions en Lecture - Burst (3/7)
LE BUS PCI3ième partie: Les échanges de donnéesTransactions en Lecture - Burst (4/7)
LE BUS PCI3ième partie: Les échanges de donnéesTransactions en Lecture - Burst (5/7)
LE BUS PCI3ième partie: Les échanges de donnéesTransactions en Lecture - Burst (6/7)
LE BUS PCI3ième partie: Les échanges de donnéesTransactions en Lecture - Burst (7/7)
LE BUS PCI3ième partie: Les échanges de donnéesTransactions en Lecture - Single Cycle (1/3)
LE BUS PCI3ième partie: Les échanges de donnéesTransactions en Lecture - Single Cycle (2/3)
LE BUS PCI3ième partie: Les échanges de donnéesTransactions en Lecture - Single Cycle (3/3)
LE BUS PCI3ième partie: Les échanges de donnéesFin de transaction • Initialisée par le Maître • Fin normale • Le Maître a transféré toutes les données correctement • Timeout • Le Maître a encore des données à transférer, mais le laps de temps accordé est terminé: Son « Latency Timer » est à « 0 » et un autre Maître demande le bus. • Master Abort • Aucune cible (target) n ’a décodé le bus: DEVSEL# reste inactif (6 cycles d ’horloge après le passage à l ’état actif de FRAME#) • Correspond à une situation anormale • Dans tous les cas, le Maître désactive FRAME#
LE BUS PCI3ième partie: Les échanges de donnéesFin de transaction • Initialisée par la Cible • Target Retry: La Cible n’est pas prête à accepter des données au moment voulu par le Maître
4 LE BUS PCI3ième partie: Les échanges de donnéesFin de transaction • Initialisée par la Cible • Disconnect with data: La Cible est prête à accepter des données, mais pas toutes
LE BUS PCI3ième partie: Les échanges de donnéesFin de transaction • Initialisée par la Cible • Disconnect without data: La Cible est prête à transférer des données, mais pas toutes
LE BUS PCI3ième partie: Les échanges de donnéesFin de transaction • Initialisée par la Cible • Target Abort: La Cible n’est jamais capable de finir la transaction en cours Correspond à une situation anormale
LE BUS PCI3ième partie: Les échanges de donnéesSynthèse: Phase d ’adressage
LE BUS PCI3ième partie: Les échanges de donnéesSynthèse: Écriture PCI • On considère que le maître a déjà obtenu la main sur le bus et que la phase d ’arbitrage est terminée. • Le maître doit maintenant attendre que le bus soit inoccupé (« idle state ») en échantillonnant les signaux FRAME# et IRDY#. Quand ces 2 derniers sont inactifs (front de CLK), le bus est inoccupé et la transaction peut commencer. • Au début de la transaction, l ’initiateur active FRAME#, indiquant ainsi que la transaction a commencé et qu ’une adresse de départ ainsi qu ’une commande sont disponibles pendant la 1ière période de CLK. Le signal FRAME# doit rester valide jusqu ’à ce que l ’initiateur soit prêt à compléter la dernière phase de données. • Un cycle « mort » (turn around cycle) est nécessaire durant la 1ière période de CLK pour permettre d ’éviter des contentions sur les signaux IRDY#, TRDY#, DEVSEL#. • Au début de la 2ième période de CLK, l ’initiateur peut placer des données sur le bus AD sans insertion d ’un cycle « mort ». Il indique aussi, par C/BE#,quels sont les octets à transférer et leur destination. Il valide IRDY# pour indiquer que des données valides sont présentes sur le bus. Il peut retarder cette dernière validation pour des raisons internes à son fonctionnement (buffers vides par exemple). Ce retard ne doit pas durer plus de 8 cycles. Pendant cette même période d ’horloge, la cible valide TRDY# et DEVSEL# après avoir décodé l ’adresse et les commandes C/BE#. • Quand la cible et l ’initiateur échantillonnent, au 3ième front de CLK, l ’état valide de TRDY# et de IRDY#, la 1ière donnée est prise en compte par la cible et la 1ière phase de données est considérée comme terminée. Écriture PCI avec temps d ’attente
LE BUS PCI3ième partie: Les échanges de donnéesSynthèse: Écriture PCI • A ce moment, l ’initiateur présente la 2ième donnée sur le bus AD et indique par C/BE# quels sont les octets à transférer et leur destination pour la prochaine phase de données. Dans les transactions de données multiples, c ’est à la cible que revient la gestion de l ’incrémentation d ’adresses à partir de l ’adresse de départ fournie par l ’initiateur. La cible peut implémenter des mécanisme de conversion little endian / big endian. Il est conseillé de rendre cette conversion programmable par l ’utilisation de l ’espace de configuration. • Quand la cible et l ’initiateur échantillonne, au 4ième front de CLK, l ’état valide de TRDY# et de IRDY#, la 2ième donnée est prise en compte par la cible et la 2ière phase de données est considérée comme terminée. • Dans l ’exemple de la figure, l ’initiateur va devoir faire attendre la cible avant de présenter la prochaine donnée. Ce temps d ’attente est généré en dévalidant IRDY# pendant la 4ième période de CLK. Pendant cette période, l ’initiateur doit éviter de laisser flotter le bus AD, mais il doit cependant indiquer par C/BE# quels sont les octets à transférés et leur destination pour la prochaine phase de données. La cible, nécessitant elle aussi plus de temps avant d ’être prête à accepter la 3ième donnée, dévalide TRDY#. • Au début de la 5ième période de CLK, l ’initiateur place des données sur le bus AD et indique, en validant IRDY#, que les données valides sont présentes sur le bus. En dévalidant FRAME#, il indique que la phase en cours est la dernière phase de données. Cependant, TRDY# est toujours non valide (cible non prête) de la 5ième à la 7ième période de CLK. • Quand la cible et l ’initiateur échantillonne, au 8ième front de CLK, l ’état valide de TRDY# et de IRDY#, la 3ième donnée est prise en compte par la cible et la 3ième phase de données est considérée comme terminée. • La cible dévalide TRDY# et DEVSEL# et l ’initiateur dévalide IRDY#, ce qui provoque un retour du bus en « idle state ». Écriture PCI avec temps d ’attente (suite)
LE BUS PCI3ième partie: Les échanges de donnéesSynthèse: Écriture PCI Écriture PCI avec temps d ’attente
LE BUS PCI3ième partie: Les échanges de donnéesSynthèse: Écriture PCI Écriture PCI optimisée
LE BUS PCI3ième partie: Les échanges de donnéesSynthèse: Lecture PCI • On considère que le maître a déjà obtenu la main sur le bus et que la phase d ’arbitrage est terminée. • Le maître doit maintenant attendre que le bus soit inoccupé (« idle state ») en échantillonnant les signaux FRAME# et IRDY#. Quand ces 2 derniers sont inactifs (front de CLK), le bus est inoccupé et la transaction peut commencer. • Au début de la transaction, l ’initiateur active FRAME#, indiquant ainsi que la transaction a commencé et qu ’une adresse de départ ainsi qu ’une commande sont disponibles pendant la 1ière période de CLK. Le signal FRAME# doit rester valide jusqu ’à ce que l ’initiateur soit prêt à compléter la dernière phase de données. • Un cycle « mort » (turn around cycle) est nécessaire durant la 1ière période de CLK pour permettre d ’éviter des contentions sur les signaux IRDY#, TRDY#, DEVSEL#. • Au début de la 2ième période de CLK, l ’initiateur cesse de driver le bus AD, pour que la cible puisse placer des données sur le bus. Pour permettre l ’insertion d ’un cycle « mort » sur ce bus, la cible doit laisser TRDY# invalide pendant cette période. L ’initiateur indique aussi par C/BE# quels sont les octets à transférer et leur destination. Il valide IRDY# pour indiquer qu ’il est prêt à recevoir des données. Il peut retarder cette dernière validation pour des raisons internes à son fonctionnement (buffers pleins par exemple). Ce retard ne doit pas durer plus de 8 cycles. • Pendant la 3ième période de CLK, la cible: • valide DEVSEL# pour indiquer qu ’il a reconnu son adresse et qu ’il va participer à la transaction • commence à driver les données sur le bus AD et valide TRDY# pour indiquer à l ’initiateur la présence de données valides. Lecture PCI avec temps d ’attente
LE BUS PCI3ième partie: Les échanges de donnéesSynthèse: Lecture PCI • Quand le cible et l ’initiateur échantillonnent, au 4ième front de CLK, l ’état valide de IRDY# et de TRDY#, la 1ière donnée est lue par l ’initiateur et la 1ière phase de données est considérée comme terminée. • L ’initiateur indique par C/BE# quels sont les octets à transférer et leur destination pour la prochaine phase de données. • Dans les transactions de données multiples, c ’est à la cible que revient la gestion de l ’incrémentation d ’adresses à partir de l ’adresse de départ fournie par l ’initiateur. La cible peut implémenter des mécanismes de conversion little endian / big endian. Il est conseillé de rendre cette conversion programmable par l ’utilisation de l ’espace de configuration. • Dans l ’exemple de la figure, la cible va devoir faire attendre l ’initiateur avant de charger la prochaine donnée. Ce temps d ’attente est généré en dévalidant TRDY# pendant la 5ième période de CLK. Pendant cette période, la cible doit éviter de laisser flotter le bus AD. Pendant ce temps d ’attente, la cible présente la 2ième donnée sur le bus AD. Elle est prise en compte lorsque la cible valide TRDY# sur le 6ième front de CLK. La 2ième phase de données est considérée comme terminée. • Au début de la 3ième phase de données, l ’initiateur indique par C/BE# quels sont les octets à transférer et leur destination pour la prochaine phase de données. Dans l ’exemple, il dévalide IRDY# pour introduire un temps d ’attente durant la 6ième période de CLK. Pendant ce temps, la cible doit continuer à présenter, sur le bus AD, la donnée demandée. • Pendant la 7ième période de CLK, l ’initiateur valide IRDY# pour accepter, sur le prochain front de CLK, la donnée et dévalide FRAME# pour avertir la cible que cette phase de données est la dernière. La 3ième phase de données est alors considérée comme terminée. • La cible dévalide TRDY# et DEVSEL# et l ’initiateur dévalide IRDY#, ce qui provoque le retour à l ’état « iddle » du bus. Lecture PCI avec temps d ’attente (suite)
LE BUS PCI3ième partie: Les échanges de donnéesSynthèse: Lecture PCI Lecture PCI avec temps d ’attente
LE BUS PCI3ième partie: Les échanges de donnéesSynthèse: Lecture PCI Lecture PCI optimisée