PCI -Befehle sind Anweisungen, die von einem Host (typischerweise eine CPU) an ein PCI -Gerät gesendet wurden, um seinen Betrieb zu steuern. Sie sind keine einfache, leicht memorisierte Liste wie ein paar Dutzend Befehle; Stattdessen gibt es eine komplexe Struktur und eine breite Palette von Funktionen abhängig vom spezifischen Gerät. Die Befehle werden im Allgemeinen im PCI -Konfigurationsraum kategorisiert und betrieben.
Hier ist eine Aufschlüsselung der wichtigsten Aspekte und Arten von PCI -Befehlen:
1. Befehle für Konfigurationszugriff: Dies sind grundlegende Befehle, die zum Lesen und Schreiben in den Konfigurationsraum des Geräts verwendet werden. Dieser Speicherplatz enthält Informationen zu den Funktionen des Geräts, Ressourcen (wie Speicheradressen und E/A -Ports) und Status. Die Kernbefehle hier sind:
* Konfiguration Lesen Sie: Liest ein bestimmtes Register im Konfigurationsraum.
* Konfiguration Schreiben Sie: Schreibt Daten in ein bestimmtes Register im Konfigurationsraum.
Diese Befehle werden über spezifische E/A -Portzugriffe behandelt, die von den PCI -Busspezifikationen diktiert werden. Die Adresse, in die Sie schreiben, enthält sowohl die Bus-, Geräte- als auch die Funktionsnummern, um das Zielgerät und den Registerversatz in seinem Konfigurationsraum anzugeben.
2. E/O- und Speicherzugriff: Obwohl es im Sinne spezifischer Opcodes nicht streng "Befehle" ist, ist der Zugriff auf den E/A-Speicherplatz und den Speicherplatz des Geräts von entscheidender Bedeutung. Der Host verwendet die aus dem Konfigurationsraum gewonnenen Informationen, um die entsprechenden Adressen für diese Zugriffe zu bestimmen. Diese werden von der CPU über Speicherlese-/Schreibvorgänge oder E/A -Anweisungen initiiert. Die zugrunde liegende Hardware lenkt diese Vorgänge jedoch auf das spezifische PCI -Gerät.
3. Gerätespezifische Befehle: Viele PCI -Geräte implementieren ihre eigenen Befehle über den grundlegenden Konfigurationszugriff hinaus. Diese Befehle sind je nach Funktion des Geräts sehr unterschiedlich und im Datenblatt des Geräts definiert. Beispiele könnten umfassen:
* Starten/Stoppoperationen: Befehle zum Starten einer Datenübertragung, zum Initiieren eines Prozesses oder zum Stillstand.
* Kontrollregister Manipulation: Ändern verschiedener Kontrollbits in bestimmten Registern, um das Geräteverhalten zu ändern (z. B. Stromverwaltung, Interrupt -Aktivierung/Deaktivieren).
* Datenübertragungsbefehle (DMA verwandt): Befehle im Zusammenhang mit DMA -Operationen (Direct Memory Access). Diese ermöglichen es Geräten, ohne kontinuierliche CPU -Intervention direkt auf den Systemspeicher zuzugreifen. Diese sind hochgerätsspezifisch und beinhalten häufig DMA-Deskriptoren.
Zusammenfassend: Es gibt keine einfache Liste von "PCI -Befehlen", wie Sie es in einem CPU -Befehlssatz finden. Die Interaktion ist nuancierter:
* Der Host verwendet Konfigurationszugriffsbefehle (liest/schriftlich), um das PCI -Gerät zu verstehen und zu konfigurieren.
* Dann verwendet es Speicherzugriffs- und E/A -Anweisungen, die von der Konfiguration geleitet werden, um mit der Funktion des Geräts zu interagieren.
* Schließlich haben viele Geräte ihre eigenen Befehle, die spezifisch für ihre Funktionalität sind und in ihrer individuellen Dokumentation beschrieben werden.
Um die spezifischen Befehle für ein bestimmtes PCI -Gerät zu verstehen, müssen Sie sein Datenblatt konsultieren. Die PCI -Spezifikation selbst definiert hauptsächlich die Konfigurationsraumzugriffsmechanismen und die Gesamtbusarchitektur.