Prosessorin tie ulkomaailmaan Pienissä järjestelmissä vain yksi väylä Prosessoriväylä Osoite, data ja ohjaussignaalit Prosessori ainoa herra (master) Suuremmissa erillisiä väyliä Muistiväylä Oheislaiteväylät Erilaiset kaistanleveysvaatimukset
Tarpeen laajemmissa järjestelmissä Muistiväylä keskusmuistia varten Leveä, synkroninen väylä Oheislaite väylät Leveä, lohkosiirtoon soveltuva Massamuistiväylä (PCI, PCI express) Kapea, hajasiirtoon soveltuva Muut oheislaitteet (USB, firewire )
Laitteeseen viitataan osoitteen avulla Laitteita kaikki, mihin voidaan viitata Perinteisesti laitteen sijainti vain tiedetään Peruslaitteiden pakko sijaita tunnetuissa paikoissa Ainakin boot-osoite täytyy löytyä etsimättä
Osoitteiden hallinta Kiinteät osoitteet Rajoitettu laitevalikoima Hankala käyttää Jumpperoidut osoitteet Käyttäjä valitsee Kerrottava järjestelmälle käsin Ainutkertaiset konfiguraatiot
Osoitteiden hallinta Jumpperoidut osoitteet ja probe-rutiinit Systeemi tarkistaa laitteen olemassaolon ennen käyttöönottoa Laitteille ilmaantuivat tunnisterekisterit Mahdollistaa geneeriset järjestelmät Code bloating (kaikki mahdollisesti tarvittavat laitteet mukana aina)
Ohjelmallisesti hallittavat osoitteet Vapauttaa käsityöstä Vaatii konfigurointi protokollan väylälle Laitteelle ohjelmoidaan sen osoite ja laite kertoo itse resurssitarpeensa (PCI konfigurointi)
Tiedonsiirto Ohjelmallinen siirto Prosessori siirtää tiedon laitteelta muistiin Odotus silmukassa Keskeytyksellä (ns pseudo-dma) Autonominen siirto (DMA, Direct Memory Access) IO-prosessori siirtää tiedon Erityinen DMA-kanava siirtää tiedon Oheislaite itse siirtää tiedon
DMA-siirto Tiedon automaattine siirto muistiin Ohjain voi olla Erillinen dma-piiri Oheislaitteessa oleva dma-ohjain Väyläohjaimessa oleva dma-ohjain Paikka määrää, millaisen muistavaruuden dmaohjain näkee Siis mistä ja minne se osaa siirtää
väylät Erillinen ohjain Näkee muistin fyysisissä osoitteissa Oheislaitteet kunkin erikseen Ei välttämättä sidottu tiettyyn laitteeseen Ei osaa synkronoitua laitteeseen Osaa muistista muistiin siirrot Siirto käynnistyy ohjelmallisesti
Oheislaitteeseen rakennettu ohjain Näkee muistin fyysisissä osoitteissa Käyttää väyläosoitteita Synkronoitu laitteeseen Osaa vain laitteelta muistiin, muistista laitteeseen siirrot Käynnistää siirrot automaattisesti
Väyläohjaimessa oleva ohjain Näkee fyysiset osoitteet Väylälle väyläosoitteet Muistiin muistisoitteet Osaa siirtää väylältä, väylälle Usein sidottu tiettyyn laitteeseen
DMA-siirto Dma ohjain cpu:n ulkopuolella Ei tiedä MMU:sta mitään Toimii fyysisillä osoitteilla Ohjelmallinen osoitteen muunnos Ei välttämättä tiedä cachesta, toimii cachen ohi DMA:ta tehdään yleensä vain systeemin muistiavaruudessa Suora DMA käyttäjän muistiin harvinaista Vaatii lukittuja muistisivuja (virtuaalimuistissa) Tai Dmalle oma MMU ja taito käsitellä faultit.
DMA-siirto Siis oikeastaan vain kj:n asia Tehtävä dedikoituun muistiin Tiedonsiirto käyttäjälle ohjelmallisesti Saattaa vaatia erillisiä mapping rekistereitä Väyläavaruus vs. muistiavaruus Rajoituksia kohdealueissa Vain alin 16 Mb, vain paikalliseen muistiin tms.
PCI Väylä Intel julkaisi v 1.0 1992 Versio 2.2 julkaistu 1999 Multipleksattu väylä 32-bittinen osoite 32 tai 64-bittinen data Prosessori riippumaton
PCI väylä Ominaisuudet Yhdellä väylällä n. 10 laitetta (sähköinen kuorma) Yhdessä laitteessa max kahdeksan toimintoa (loogiset laitteet) Mahdollisuus ketjuttaa 256 väylää (puumainen hierarkia) Kolme osoiteavaruutta Muistiavaruus IO-avaruus configuraatioavaruus
PCI väylä Toteutus PC:llä Ns Northbridge siltaa muistiväylän PCI-väylään Ns Southbridge siltaa PCI-väylän eteenpäin ja yhteensopivuuden vaatimiin ISA-laitteisiin
PCI väylä Konfigurointi Jokaisella toiminnolla on oma 64-sanan (longword) alueensa konfiguraatioavaruudessa Sinne viitataan konfiguraatio-osoite ja datarekisterien avulla (0CF8H ja 0CFCH PC:n ioavaruudessa) Osoiterekisteri specifioi enable+väylä(8)+laite(5)+toiminto(3)+sana(6)
PCI väylä Konfiguraatiorekisterit määrittelevät Laitteen tunnisteen (kj osaa ladata oikean ajurin) Tila ja ohjausrekisterit (konfiguration) Laitteen kyvyt väylälle Resurssirekisterit Kantaosoite, alue, io- vai muistiavaruus Osoitteen valinta Kirjoita 0xFFFFFFFF, lue Saat maskin jossa 1 ilmaisee toteutut bitin ja lopun nollat tarvittavan alueen koon Aseta haluamasi osoite laitteelle
USB väylä Koostuu HUBeista ja laitteista Kj kysyy HUBilta Montako liityntää sulla on Enabloi liitynnät yksi kerrallaan Pollaa kunkin liitynnän ja initialisoi laitteen Mahdollinen rekursio HUB HUBissa hoidettava Laite vastaa kuvaajilla, jotka kertovat mitä portin takaa löytyy
Kuvaajat Device descriptor Yleinen laite kuvaus Configuration descriptor Laitteen eri toiminta muodot Interface descriptor rajapinnat Endpoint descriptor (data)rekisteri kuvaus
kuvaajat String descriptors Merkkimuotoista tietoa näytettäväksi class-specific descriptors Laitetyyppikohtaista lisätietoa
kuvaajat Kuvaajat muodostavat puurakenteen Laite -> konfiguraatiot -> rajapinnat ->rekisterit