Způsoby mapování pamětí a registrů periferií do adresních prostorů
Vstupně výstupní operace
Detekce a konfigurace zařízení v konfiguračním prostoru sběrnice PCI Express
Přímý přístup do paměti
Přerušení v PC.
Adresní prostory v PC
Fyzický adresní prostor
Skutečně mapované paměťové moduly
Čast fyzické paměti na disku
Virtuální paměťový prostor
Adresují aplikace
Každá aplikace má svůj
Práce s virtuálním prostorem podléhá překladu adres
Stará se OS, pomocí překladových tabulek
Mapuje se do fyzické paměti
Přístup do neobsazené části hlídá OS
Segmentace
Části paměťového prostoru
Segment je určený počáteční adresou a délkou
Zápis v tabulce deskriptorů
Procesor má registry, které drží deskriptory různých segmentů, jako SP, code segment, data segment,...
Bez stránkování jsou to adresy ve fyzickém prostoru
OS to obchází nastavením velikosti segmentu na celý adresní prostor
Stránkování
Fyzický adresní prostor je rozdělený na stejné bloky jako virtuální
Stránky se celé přenáší z virtuálního prostoru do fyzického
využívá tabulky stránek
Mapuje stránky
Umístění ve fyzické paměti
Řídí OS
HW překladová jednotka (MMU)
Jedné MOV předchází několik čtení v tabulkách stránek, pro urychlení se používá TLB, který si pamatuje poslední překlady adres
I/O paměťový prostor
Mapují se sem registry periferií
Přístup má pouze kernel
OS může mapovat části tohoto prostoru do virtuálu aplikacím
64KiB
Vstupně výstupní operace
Čtení a zápis v I/O prostoru
Používá instrukce in/out
Vyžaduje zarovnání
Adresy
Pevné - historicky čítače, DMA, registry v chipsetu
Pevné - geograficky adresovatelné (porty na adrese) přístup do konfiguračních bloků PCI
Konfigurovatelné - adresy vybere systém, mapování dělá periferie
Mapování registrů do I/O prostoru
Zařízení mají konfigurační registr
PCI probíhá přes 0xCF8 a 0xCFC porty
Mapovat lze:
Výběrem banky (výběr do která banka s registry se zpřístupní)
Adresní přístup - do registru napíšeme adresu a v jiném registru budou data
I/O zařízení je hodně, přiřazení konkrétních adres se řeší za běhu
Detekce a konfigurace zařízení v konfiguračním prostoru sběrnice PCI Express
Speciální cykly
Přenos speciálních informací mezi zařízeními na jedné sběrnici
Broadcast
datové přenosy reprezentují jednotlivé zprávy
Konfigurační cykly
Umožňují konfiguraci karet
Adresace PCI karet je vázána na fyzické sloty
PCI karta může mít víc než jednu sadu konfiguračních registrů
Multifunkční karty
Adresová část konfiguračního cyklu
adresa pro konfigurační prostor se zapisuje do registru na adrese CF8 ve V/V prostoru, těsně před vygenerováním konfiguračního cyklu zápisem/čtením z adresy CFCh
typ 0
adresace zařízení v rámci jedné sběrnice
32 bitů
31-11 nepoužito
10-8 funkce
7-2 registr
1-0 typ 0
typ 1
Adresace za PCI Bridge
32 bitů
31-24 nepoužito
23-16 sběrnice
15-11 zařízení
10-8 funkce
7-2 registr
1-0 typ 01
PCI Express
Sériová verze PCI, nahrazuje ji
Není to úplně sběrnice, spíš dvoubodový spoj
1x = 500 MB/s – 16x = 8 GB/s
Transakce
Paměťové
Buď klasicky přes procesor, nebo i přímý přístup (bus mastering)
ReadRequest (WriteRequest)/Completion, 32/64 bit
V/V
ReadRequest (WriteRequest)/Completion, 32 bit
Konfigurační
ReadRequest (WriteRequest)/Completion, 32 bit
Výměna zpráv
Přímý přístup do paměti (DMA)
Zajišťuje přímý přenos dat od periferie do paměti s minimální zátěží CPU
Obsluhuje ho DMA řadič
CPU řekne od koho, kolik a kam a předá řízení sběrnice a RAM DMA
Přerušení v PC. (IRQ)
Zajišťují vyvolání obsluhy přerušení, je to mechanismus na upozornění CPU že něco nastalo
Vnější zdroj - periferie
Vnitřní zdroj - chyba ALU, výpadek stránky
Softwarové INT
až 256 zdrojů přerušení
Vstupní body do kernelu
Rozlišení a priority řeší IRQ řadič
CPU pří přerušení přerušuje právě prováděný kód, ukládá kontext a vykoná kód dle vektoru příslušícímu danému přerušení, po obsluze se vrátí k původní práci
Vektory jsou uloženy v IDT tabulce
Volba dle čísla přerušení
Některá přerušení jsou maskovatelná
Lze je zakázat
STI,CLI
využití v kritických sekcích
Ne všechny, hlavně ty indikující HW chybu jsou nemaskovatelné
PIC (8259)
Původní řadič přerušení
Konfigurovatelný přes I/O registry
Nutné clear flag
APIC
Zaveden pro podporu více procesorových systémů
Každý procesor má vlastní Local APIC
Vnitřní čítač generující hodiny
Propojen s ICC sběrnicí
IO APIC
Jeden nebo víc pro procesory
Programovatelný
komunikuje přes ICC
Sdružuje zdroje přerušení
Rozděluje přerušení mezi procesory
Posílá požadavky na přerušení
Dynamicky lze měnit, které jádro je prioritizováno pro obsluhu