PCI -kommandon är instruktioner som skickas av en värd (vanligtvis en CPU) till en PCI -enhet för att styra dess drift. De är inte en enkel, lätt-minneserad lista som några dussin kommandon; Istället finns det en komplex struktur och ett brett utbud av funktionalitet beroende på den specifika enheten. Kommandona kategoriseras i allmänhet och fungerar inom PCI -konfigurationsutrymmet.
Här är en uppdelning av de viktigaste aspekterna och typer av PCI -kommandon:
1. Konfigureringsåtkomstkommandon: Dessa är grundläggande kommandon som används för att läsa och skriva till enhetens konfigurationsutrymme. Detta utrymme innehåller information om enhetens funktioner, resurser (som minnesadresser och I/O -portar) och status. Kärnkommandona här är:
* Konfiguration Läs: Läser ett specifikt register inom konfigurationsutrymmet.
* Konfiguration Skriv: Skriver data till ett specifikt register inom konfigurationsutrymmet.
Dessa kommandon hanteras via specifika I/O -porttillgångar som dikteras av PCI -bussspecifikationerna. Adressen du skriver till innehåller både buss, enhet och funktionsnummer för att ange målenheten och registerförskjutningen inom dess konfigurationsutrymme.
2. I/O- och minnesåtkomst: Även om de inte strikt "kommandon" i betydelsen av specifika opkoder är åtkomst till enhetens I/O-utrymme och minneskartade utrymme avgörande. Värden använder informationen från konfigurationsutrymmet för att bestämma lämpliga adresser för dessa åtkomst. Dessa initieras av CPU genom minnesläsnings-/skrivoperationer eller I/O -instruktioner, men den underliggande hårdvaran leder dessa operationer till den specifika PCI -enheten.
3. Enhetsspecifika kommandon: Många PCI -enheter implementerar sina egna kommandon utöver den grundläggande konfigurationstillgången. Dessa kommandon är mycket varierade beroende på enhetens funktion och definieras i enhetens datablad. Exempel kan inkludera:
* Starta/stoppoperationer: Kommandon för att starta en dataöverföring, initiera en process eller stoppa operationen.
* Kontrollregister manipulation: Ändra olika kontrollbitar i specifika register för att ändra enhetsbeteende (t.ex. krafthantering, avbrott aktivera/inaktivera).
* Dataöverföringskommandon (DMA -relaterad): Kommandon relaterade till Direct Memory Access (DMA) -operationer. Dessa gör det möjligt för enheter att direkt komma åt systemminnet utan kontinuerlig CPU -intervention. Dessa är mycket enhetsspecifika, ofta involverar inställningar av DMA-deskriptorer.
Sammanfattningsvis: Det finns inte en enkel lista över "PCI -kommandon" som du kan hitta i en CPU -instruktionsuppsättning. Interaktionen är mer nyanserad:
* Värden använder kommandon för konfigurationstillgång (läser/skriver) för att förstå och konfigurera PCI -enheten.
* Sedan använder den minnesåtkomst och I/O -instruktioner som styrs av konfigurationen för att interagera med enhetens funktion.
* Slutligen har många enheter sin egen uppsättning kommandon som är specifika för deras funktionalitet och beskrivs i deras individuella dokumentation.
För att förstå de specifika kommandona för en viss PCI -enhet måste du konsultera dess datablad. Själva PCI -specifikationen definierar främst konfigurationsutrymmets åtkomstmekanismer och den övergripande busarkitekturen.