Porturi de intrare-ieșire explicate de expertul Semalt

În computere, orice dispozitiv (de exemplu, un controler instalat pe o placă de expansiune sau o placă de bază), cu excepția memoriei RAM, este tratat ca un periferic de către CPU. Schimbul de date între procesorul central și dispozitivele periferice se realizează prin porturi de intrare-ieșire. Portul IO este un dispozitiv sau registru tampon al unui controler, procesor digital de semnal, etc., care sunt conectate direct la magistrala IO a computerului. Prin porturile de intrare-ieșire, puteți conecta o varietate de dispozitive interne și externe la computer pentru a-și extinde capabilitățile.
Porturile IO vă permit să stabiliți o conexiune între dispozitive și software în computer. Sunt similare cu canalele radio cu două sensuri, deoarece schimbul de informații în ambele direcții are loc pe același canal.
Adresa portului

Pentru a controla schimbul de date între dispozitivele computerului, fiecărui port IO i se atribuie un număr unic de adresă - port. Pe PC, codul pe 16 biți este utilizat pentru a aborda porturile IO. Prin urmare, există 216 = 65 536 porturi, numerotate de la OOOOh la FFFFh. Gama IO standard pentru calculatoarele compatibile IBM este 0-3FFh. Acestea includ porturi pentru controlere tastatură, hard disk-uri și dischete, adaptoare video EGA / VGA, plăci de sunet, interfețe seriale și paralele, porturi de joc și orice alte echipamente periferice. Un dispozitiv periferic este capabil să utilizeze mai multe porturi IO. Rețineți că puteți utiliza adrese de până la FFFFh. De exemplu, porturile procesorului de sinteză WT al plăcii de sunet au raza IO 620h-E23h.
Porturile sunt adresate de procesorul central atunci când execută un program. Pentru a evita indicarea adresei specifice a fiecărui port IO periferic în timpul programării, precum și pentru a schimba adresa prompt în funcție de configurația computerului particular, se utilizează adresa de bază IO. Adresa de bază este atribuită fiecărui dispozitiv periferic și corespunde celei mai scăzute adrese din grupul port. Adresarea porturilor rămase ale unui dispozitiv periferic se realizează prin specificarea compensării în raport cu adresa de bază.
Adresa IO de bază a dispozitivului periferic poate fi orice adresă din gama IO. BIOS își rezervă o parte din gama IO pentru dispozitivele hardware standard care nu pot fi utilizate de alte periferice. De exemplu, pentru interfața LPT1 intervalul IO 378h - 37Eh este rezervat în care adresa de bază IO poate fi selectată. Apoi, posibilitatea conflictelor va fi eliminată la adresarea porturilor la nivel hardware-software. Deoarece trei registre sunt utilizate pentru controlul și monitorizarea LPT1, în acest interval IO, există 5 valori posibile ale adresei de bază - 378h-s-37Ch.

IO programat
Pentru schimbul de date cu porturi se utilizează intrarea / ieșirea programată (PIO). Transmite cuvinte cu o adâncime de bit de 8, 16 sau 32 de biți folosind comenzi string. Cuvântul poate fi transmis pentru unul sau mai multe cicluri de autobuz, cu indicarea adresei corespunzătoare din fiecare ciclu de acces la memorie. Ciclurile de schimb de autobuze sunt inițiate în timpul executării unei comenzi IO. Numărul de cicluri depinde de alinierea adresei de-a lungul graniței cuvântului și de adâncimea de biți de date a autobuzului folosit. Viteza de schimb de date PIO depășește viteza de schimb a canalului de acces direct la memorie directă (DMA).