Intel 8259

Intel 8259 je rodina programovatelných řadičů přerušení (PIC) vyvinutých společností Intel pro mikroprocesory Intel 8080 , Intel 8085 a Intel 8086 . Rodina se původně skládala z modelů 8259, 8259A a 8259B, ale mnoho dalších kompatibilních modelů bylo dosud vytvořeno jinými výrobci. 8259 funguje jako multiplexer , který kombinuje více zdrojů přerušení do jednoho zdroje přerušení za účelem přerušení jiného zařízení, pro které je snazší zvládnout úrovně priority přerušení a jejich případné vnoření.

Historie

Původní verze řadiče byla určena pouze pro procesory 8080 a 8085. Na signál potvrzení přerušení vydal na sběrnici tři bajty, první odpovídal operačnímu kódu "Call subrutina" (hodnota 0xCD v hexadecimální soustavě), poté dva bajty volací adresu tohoto podprogramu, kterou bylo potřeba zapsat do vnitřních registrů řadiče odpovídajících každému zdroji přerušení. Čip 8259A byl vydán pro rodinu procesorů x86, protože se změnil mechanismus přenosu řízení. Nyní byly na sběrnici postupně vydány dva bajty, první byl „nečinný“, mikroprocesor jeho hodnotu ignoroval, druhý bajt obsahoval číslo vektoru přerušení a adresa, na kterou se mělo přenášet provádění programu, byla převzata z tabulky vektorů přerušení. . U procesorů 8086, 80186 a 8088 zabíral nejnižší kilobajt adresního prostoru paměti. S pozdějšími, počínaje 80286, mohla být tabulka vektorů přerušení přesunuta do libovolného místa v paměti.

8259A byl zahrnut do původního IBM PC v roce 1980 a byl zachován v architektuře IBM PC/XT , která byla představena v roce 1983 . S představením IBM PC/AT přišel druhý čip 8259A. Řada 8259A byla následně vyřazena ve prospěch architektury Intel APIC , původně navržené pro víceprocesorové počítače.

Ve skutečnosti se od počátku 90. let 8259A nepoužíval jako samostatné zařízení, ale stal se součástí čipu čipové sady, později než Southbridge . Jedním z nejznámějších čipů, který plně integroval funkčnost všech programovatelných řadičů, které byly na desce IBM PC-AT, byl čip 82C206, vydaný společností Chips & Technologies v roce 1988.

V SSSR byl 8259 vyroben jako KR580VN59 a 8259A jako programovatelný čip řadiče pro prioritní přerušení KR1810VN59A [1]

Hlavní závěry použité v 8259 jsou:

K masteru 8259 lze připojit až 8 8259 slave, což poskytuje až 64 přerušení. Při kaskádování je výstup INT podřízeného zařízení připojen k jedné z linek IRQ masteru 8259.

8259 má tři registry:

Operace ukončení přerušení (EOI) jsou kategorizovány jako specifikované, nespecifikované a automatické. Operace specifická pro EOI specifikuje, která úroveň přerušení se má potvrdit v ISR (ve skutečnosti, který bit se má v ISR vymazat). Nespecifikovaný příkaz EOI resetuje zpracovávaný řádek IRQ s nejvyšší prioritou. Automatický režim EOI se v ISR ihned po potvrzení přerušení trochu vymaže.

Jsou podporovány režimy přerušení okrajů a úrovní.

Jsou podporovány režimy pevného a cyklického posunu priority.

8259A lze nakonfigurovat pro práci s 8088 nebo 8086. To znamená 8 nebo 16 bitovou datovou sběrnicí .

Funkce programování

DOS a Windows

Programování 8259A pod DOSem a Microsoft Windows způsobilo značné množství trapných problémů se zpětnou kompatibilitou, které měly kořeny sahající až k prvním počítačům v roce 1981.

První problém je víceméně zdrojem druhého. Ovladače zařízení DOS jsou povinny odeslat nespecifikovaný příkaz EOI, když dokončí servis svého zařízení. Z tohoto důvodu je použití jiných režimů ukončení přerušení obtížné (ne vždy lze zaručit, že požadovaná úroveň nebude resetována dříve). Také to znemožňuje rozlišovat mezi přerušeními přesměrovanými z 8259 master na slave.

Druhý problém nastává při použití IRQ2 a IRQ9, který se objevil při zavedení slave 8259A do PC/AT. Výstup INT podřízeného 8259 je připojen k lince IRQ2 nadřízeného. Linka IRQ2 sběrnice ISA, dříve připojená k této lince, byla nyní přesměrována na výstup IRQ1 podřízeného zařízení. Nyní tedy přerušení sběrnice IRQ2 spouští IRQ9. Kvůli kompatibilitě s ovladači DOS, které stále očekávají IRQ2, byla přidána obslužná rutina, která přesměruje IRQ9 na původní obslužnou rutinu IRQ2.

V BIOSu PC (a tedy DOSu) tradičně mapuje master 8259 požadavků na přerušení (IRQ0-IRQ7) na vektory přerušení INT08-INT0F, resp. A 8259A podřízené požadavky (v PC/AT a mimo ně) IRQ8-IRQ15 na INT70-INT77. Stalo se tak i přesto, že prvních 32 vektorů přerušení je vyhrazeno pro interní přerušení procesoru (z nějakého důvodu návrháři architektury PC tuto skutečnost ignorovali). Proto většina ostatních operačních systémů mapuje přerušení (alespoň pro master 8259) na jiný rozsah vektorů přerušení.

Jiné operační systémy

Většina ostatních operačních systémů umožňuje pro 8259A jiné provozní režimy, jako je automatické ukončení přerušení. To je zvláště důležité pro moderní systémy založené na x86 , kde může dojít ke ztrátě značného množství času v latenci I/O prostoru při operacích 8259. Umožňuje to také další optimalizace časování, jako jsou kritické sekce, které mají být zavedeny na zařízeních víceprocesorových systémů 8259.

Provozní režim okraj/úroveň

Protože sběrnice ISA nepodporuje přerušení úrovně, pro systémy PC/XT, PC/AT a MCA musí být 8259A nastaven na okraj od okraje. Na novějších EISA , PCI a novějších jsou k dispozici Edge/Level Control Registers (ELCR), které umožňují nastavit režim provozu pro každou linku IRQ jednotlivě, čímž účinně eliminuje potřebu nastavovat režim provozu 8259 pro takové systémy se sběrnicí ISA. .

Tyto registry jsou umístěny na adresách 0x4d0 a 0x4d1 v x86 I/O adresním prostoru. Jejich rozměr je 8 bitů, každý bit odpovídá jedné z linek IRQ 8259A. Když je bit nastaven, linka IRQ se spouští na úrovni, jinak na přední straně.

Spontánní přerušení

Za určitých podmínek může 8259A generovat spontánní přerušení, obvykle IRQ7 a mnohem méně často IRQ15.

V prvním případě je linka IRQ resetována před jejím potvrzením. To může být způsobeno šumem na linkách IRQ. V režimu od okraje k okraji musí šum udržet linku vysoko po dobu 100 ns (minimální doba pro zápis do IRR klopného obvodu). Když šum zmizí, pull-up rezistor sníží úroveň IRQ, čímž vytvoří falešné přerušení. Při úrovňovém provozu může hluk způsobit vysoký stav na lince INTR. Když systém vydá požadavek na potvrzení přerušení, 8259 nebude mít data k jeho aktivaci a vydá IRQ7 (výchozí hodnota). Takto se mohou objevit falešné IRQ7.

Podobný případ může nastat, když demask 8259A a reset linky IRQ nejsou pečlivě synchronizovány. V mnoha systémech je linka IRQ resetována příkazem zápisu I/O adresního prostoru a procesor nečeká, až instrukce dosáhne I/O zařízení. Pokud procesor pokračuje a odmaskuje příslušnou úroveň 8259A předtím, než dojde k resetování linky IRQ ze zařízení, 8259A znovu vydá požadavek na přerušení INTR. V době, kdy procesor rozpozná tento požadavek INTR a vydá potvrzení, může být linka IRQ resetována a 8259A vrátí spontánní IRQ7.

Druhý případ je podobný prvnímu s tím rozdílem, že naznačená situace platí pro podřízené zařízení, tedy když je hlavní linka IRQ2 aktivní v okamžiku, kdy jsou podřízené linky IRQ 8259 neaktivní sestupnou hranou potvrzení přerušení (INTA). V tomto případě se zobrazí spontánní IRQ15, ale jedná se o extrémně vzácný případ.

Při práci s IRQ7 se proto doporučuje zkontrolovat na začátku obsluhy přerušení reentry a zkontrolovat registr ISR 8259A, abyste zjistili, že se nejedná o spontánní přerušení, ale o přerušení, které skutečně přišlo z linky IRQ7.

PC/XT a PC/AT

Architektura IBM PC/XT měla pouze jeden řadič přerušení 8259A a počínaje IBM PC/AT systémy obdržely druhý, podřízený 8259A. Linky IRQ0...IRQ7 jsou linky IR0..IR7 nadřízeného 8259A a linky IRQ8...IRQ15 jsou linky IR0..IR7 podřízeného 8259A. IRQ0…IRQ15 jsou linky sběrnice ISA, ke kterým byl 8259A historicky připojen.

Zpočátku bylo IRQ7 běžnou volbou pro použití ve zvukových kartách, ale později bylo v této roli použito IRQ5, aby se zabránilo konfliktu s portem tiskárny LPT. Sériové porty byly často deaktivovány, aby se uvolnila linka IRQ pro jiné zařízení.

Viz také

Poznámky

  1. Pod. vyd. člen korespondent Akademie věd Ukrajinské SSR B. N. Malinovského. Kapitola 2.6. Mikroobvod programovatelného automatu prioritních přerušení KR1810VN59A // Příručka osobních počítačů = Příručka osobních počítačů. - K . : Technika, 1990. - S. 384. - ISBN 5-335-00168-2 . Strana 81

Literatura