asm123 napisał(a)
ok to moze co to jest port?
czym sie rozni port od urzadzenia zmapowanego?
jak sa numerowane porty?
W praktyce procesor może operować na dwóch przestrzeniach adresowych. Pierwsza to przestrzeń portów IO, a druga to tak zwana przestrzeń pamięci RAM. Samo wykonywanie instrukcji mov i in/out polega na wystawieniu sygnałów na szynę adresową i ustawieniu dodatkowego sygnału informującego do której przestrzeni się odwołujesz.
W komputerach PC większość portów IO jest przypisana na stałe do określonych urządzeń. W internecie można znaleźć pliki map opisujące jaki port do czego jest podłączony. Jak wiadomo sama przestrzeń IO to 65536 portów bajtowych lub odpowiednio połowa portów dwóbajtowych. To niewiele ale nie jest ona rozszerzana ponieważ stosuje się mapowanie rejestrów urządzeń nie do tej przestrzeni IO w której praktycznie każdy port jest na stałe przypisany do pewnej grupy urządzeń, a do przestrzeni pamięci RAM.
Teraz pytanie jak to się realizuje.
Jest utworzony kanał komunikacji z urządzeniami co się nazywa magistralą PCI. Samą magistrale obsługuje się po przez porty IO. Do niej mogą być podłączone dowolne urządzenia np. dyski twarde, karty sieciowe, karty graficzne itp. Ale to nie jest fizyczne podłączenie np. karty VGA do portu PCI w komputerze. Jak masz karte VGA podłączoną przez AGP to karta jest podłączona do magistrali PCI po przez jakiś tam odpowiedni mostek AGP->PCI. Nie będę się wgłębiał w to bo też się nie znam tak bardzo.
Praktycznie wygląda to tak, że w przestrzeni IO masz pewien zestaw portów za pomocą których obsługujesz magistralę PCI. Możesz np. wyszukiwać na niej urządzenia i wpisywać do pewnych rejestrów tych urządzeń określone wartości. I można również po przez wpisanie adresów do określonych rejestrów spowodować zmapowanie pewnej pamięci tego urządzenia. W przypadku kart VGA to może być na przykład pamięc ekranu, drugiego bufora lub pamięci tekstur czy czego tam sobie chcesz.