I / O kanálu - Channel I/O

Ve výpočetní technice je kanál I / O vysoce výkonná architektura vstupu / výstupu (I / O), která je implementována v různých formách na řadě počítačových architektur, zejména na sálových počítačích . V minulosti byly kanály obvykle implementovány pomocí vlastních zařízení, různě pojmenovaných kanálů , I / O procesorů , I / O řadičů , I / O synchronizátorů nebo DMA řadičů .

Přehled

Mnoho I / O úkolů může být složitých a vyžaduje logiku, která se použije na data pro převod formátů a dalších podobných povinností. V těchto situacích je nejjednodušším řešením požádat CPU o zpracování logiky, ale protože I / O zařízení jsou relativně pomalá, mohl by CPU ztrácet čas (z pohledu počítače) čekáním na data ze zařízení. Tato situace se nazývá „I / O vázaná“.

Architektura kanálu se tomuto problému vyhne pomocí logicky nezávislého a nízkonákladového zařízení. Kanálové procesory jsou jednoduché, ale samostatné, s minimální logikou a dostatečnou pamětí zápisníku (pracovní úložiště) pro zpracování I / O úkolů. Obvykle nejsou dostatečně výkonní nebo flexibilní, aby je bylo možné samostatně použít jako počítač, a lze je považovat za formu koprocesoru . V některých systémech kanály používají paměť nebo registry adresovatelné centrálním procesorem jako paměť zápisníku, zatímco v jiných systémech je přítomna v hardwaru kanálu. Typicky existují standardní rozhraní mezi kanály a externími periferními zařízeními a může současně fungovat více kanálů.

CPU obvykle určí blok úložiště nebo odešle na kanál relativně malý program kanálu za účelem zpracování I / O úkolů, které může kanál a řadič v mnoha případech dokončit bez dalšího zásahu CPU (výjimka: tyto kanály programy, které využívají „programově řízená přerušení“, PCI, pro usnadnění načítání programu, stránkování poptávky a další základní systémové úkoly).

Když je I / O přenos dokončen nebo je detekována chyba, komunikuje řadič s CPU přes kanál pomocí přerušení . Protože má kanál přímý přístup do hlavní paměti, je také často označován jako řadič přímého přístupu do paměti (DMA).

V nejnovějších implementacích je zahájen kanálový program a kanálový procesor provádí veškeré požadované zpracování až do konečné podmínky nebo do programově řízeného přerušení (PCI). Tím se eliminuje velká část interakce CPU a kanálu a výrazně se zvýší celkový výkon systému. Kanál může hlásit několik různých typů koncových podmínek, které mohou být jednoznačně normální, mohou jednoznačně označovat chybu nebo jejichž význam může záviset na kontextu a výsledcích následné operace snímání. V některých systémech může I / O řadič požadovat automatické opakování některých operací bez zásahu CPU. V dřívějších implementacích jakákoli chyba, bez ohledu na to, jak malá, vyžadovala zásah CPU a režie byla následně mnohem vyšší. Programově řízené přerušení (PCI) je stále používáno některými staršími operacemi, ale trendem je odklon od takových PCI, pokud to není nevyhnutelné.

Dějiny

První použití I / O kanálu bylo u mainframu vakuové trubice IBM 709 , jehož synchronizátorem dat Model 766 byl prvním řadičem kanálu, v roce 1957. Jeho tranzistorový nástupce, IBM 7090 , měl dva až osm 6bitových kanálů (7607 ) a kanálový multiplexor (7606), který dokáže ovládat až osm kanálů. 7090 a 7094 mohou mít také 7 osmibitových kanálů s 7909.

Zatímco IBM používala na některých svých počítačích příkazy datových kanálů a umožňovala řetězení příkazů např. Na 7090, většina ostatních prodejců používala kanály, které se zabývaly jednotlivými záznamy. Některé systémy, např. Řady GE-600 , však měly propracovanější I / O architektury.

Později pro větší počítače IBM System / 360 a dokonce i pro dřívější modely System / 370 byly kanály pro výběr a kanály pro multiplexor stále objemné a drahé samostatné procesory, jako je kanál IBM 2860 Selector (jeden až tři kanály pro výběr v jednom box), multiplexorový kanál IBM 2870 Byte (jeden kanál multiplexeru a volitelně jeden subkanál selektoru v jedné krabici) a multiplexorový kanál IBM 2880 Block (jeden nebo dva blokové multiplexorové kanály v jedné krabici).

Hardwarová implementace kanálů kompatibilních se System / 370 od Amdahl Corporation byla zcela odlišná. Jedna interní jednotka, nazývaná „C-Unit“, podporovala až šestnáct kanálů pomocí stejného hardwaru pro všechny podporované kanály. Byly možné dvě interní „C-jednotky“, které podporovaly celkem až 32 kanálů. Každá „C-jednotka“ nezávisle prováděla proces obecně nazývaný „procesor posunu kanálu“ (typ procesoru hlavně ), který implementoval specializovaný stroj konečných stavů (FSM). Každý cyklus CPU, každých 32 nanosekund v 470V / 6 a / 5 a každých 26 nanosekund v 470V / 7 a / 8, „jednotka C“ čte úplný stav dalšího kanálu v prioritní sekvenci a jeho I / O kanálu ve značkách . Byly provedeny nezbytné akce definované posledním stavem tohoto kanálu a jeho značkami : data byla načtena nebo zapsána do hlavního úložiště, program operačního systému byl přerušen, pokud bylo takové přerušení specifikováno příznakem Program Control Interrupt kanálu a „ C-Unit „konečně uložila další stav tohoto kanálu a nastavila jeho out-tagy I / O Channel a poté pokračovala na další kanál s nižší prioritou. V některých případech byla možná preempce. V rámci „C-Unit“ bylo poskytnuto dostatečné úložiště FIFO pro všechny kanály, které byly emulovány tímto FSM. Kanály lze snadno překonfigurovat podle volby emulace IBM 2860 (selektor), emulace IBM 2870 (byte multiplexor) nebo emulace IBM 2880 (blok multiplexor) bez jakýchkoli významných omezení pomocí příkazů konzoly údržby. Podporováno bylo také „dvoubajtové rozhraní“, stejně jako „Data-In / Data-Out“ a další vysoce výkonné možnosti kanálu IBM. Byly také nabízeny vestavěné adaptéry typu kanál na kanál , zvané CCA v Amdahl-speak, ale nazývané CTC v IBM-speak. Skutečný měnič her, a to přinutilo IBM přepracovat své sálové počítače tak, aby poskytovaly podobné možnosti a flexibilitu kanálu. Počáteční reakcí IBM bylo zahrnout odříznutý Model 158, pracující pouze v „Channel Mode“, jako kanálové jednotky Model 303x. V Amdahlově „C-jednotce“ může být jakýkoli kanál jakéhokoli typu, 2860, 2870 nebo 2880, aniž by byly rezervovány kanály 0 a 4 pro 2870, jako u některých modelů IBM.

U menších počítačů IBM, System / 360 Modely 50 a níže a System / 370 Modely 158 a níže, byly kanály implementovány do mikrokódu CPU a samotný CPU pracoval v jednom ze dvou režimů, buď „CPU Mode“ nebo „Channel Mode ", kdy kanálový režim„ blokuje “režim CPU (kanály IBM 2860, 2870 a 2880 a Amdahl„ neblokují “).

Mnohem později byly kanály implementovány jako palubní procesor umístěný ve stejné krabici jako CPU, obecně označovaný jako „kanálový procesor“, a který byl obvykle procesorem RISC , ale kterým mohl být mikroprocesor System / 390 s speciální mikrokód jako v sálových počítačích IBM CMOS .

Některé z prvních komerčních jiných než IBM kanálových systémů byly na UNIVAC 490 , CDC 1604 , Burroughs B5000 , UNIVAC 1107 a GE 635 . Od té doby jsou řadiče kanálů standardní součástí většiny návrhů sálových počítačů a hlavní výhody sálových počítačů mají oproti menším, rychlejším osobním počítačům a síťovým výpočtům.

Superpočítač CDC 6600 z roku 1965 využíval pro tuto roli 10 logicky nezávislých počítačů zvaných periferní procesory (PP) a 12 jednoduchých I / O kanálů. PP byly moderní verzí prvních osobních počítačů CDC , CDC 160 a 160A. Operační systém byl původně umístěn a spuštěn v PP0.

Řadiče kanálů byly také vyrobeny jako malé jako jednočipové konstrukce s více kanály, které se používají například v počítačích NeXT .

Najednou mnoho levných počítačů postrádalo řadiče kanálů. Řadiče kanálů se vracejí v podobě periferních zařízení pro ovládání sběrnice , jako jsou zařízení s přímým přístupem k paměti PCI (DMA). Odůvodnění těchto zařízení je stejné jako u původních řadičů kanálu, konkrétně přenos vykládání, přerušení a přepínání kontextu z hlavního CPU.

Popis

Referenční implementací kanálu I / O je implementace rodiny sálových počítačů IBM System / 360 a jejích následovníků, ale podobné implementace byly přijaty IBM na jiných linkách, např. 1410 a 7010 , 7030 , a jinými prodejci sálových počítačů, jako je jako Control Data , Bull ( General Electric / Honeywell ) a Unisys .

Počítačové systémy, které používají vstupně-výstupní kanály, mají speciální hardwarové komponenty, které zpracovávají všechny operace vstupu / výstupu v celém rozsahu nezávisle na CPU (systémech) systému. CPU systému, který používá I / O kanálu, má obvykle ve svém repertoáru pouze jednu strojovou instrukci pro vstup a výstup; tato instrukce se používá k předávání vstupních / výstupních příkazů do specializovaného I / O hardwaru ve formě kanálových programů . I / O poté pokračuje bez zásahu CPU, dokud nenastane událost vyžadující upozornění operačního systému, a v tomto okamžiku I / O hardware signalizuje přerušení CPU.

Kanál je nezávislá hardwarová součást, která koordinuje všechny I / O k sadě řadičů nebo zařízení. Není to jen prostředek komunikace, navzdory jménu; je to programovatelné zařízení, které zpracovává všechny podrobnosti I / O poté, co dostane seznam I / O operací, které mají být provedeny (program kanálu).

Každý kanál může podporovat jeden nebo více řadičů a / nebo zařízení, ale každý program kanálu může být směrován pouze na jedno z těchto připojených zařízení. Program kanálu obsahuje seznam příkazů pro samotný kanál a pro ovladač a zařízení, na které je směrován. Jakmile operační systém připraví kompletní seznam příkazů kanálu, provede jedinou instrukci I / O stroje a zahájí program kanálu; kanál poté převezme kontrolu nad I / O operacemi, dokud nejsou dokončeny.

V rámci tohoto kanálového programu je možné vyvinout velmi složité kanálové programy, včetně testování dat a podmíněného větvení. Tato flexibilita osvobozuje CPU od režie spouštění, monitorování a správy jednotlivých I / O operací. Specializovaný hardware kanálu je zase vyhrazen pro I / O a může jej provádět efektivněji než CPU (a zcela paralelně s CPU). Channel I / O není na rozdíl od přímého přístupu do paměti (DMA) mikropočítačů, pouze složitější a pokročilejší.

Ve velkých sálových počítačových systémech jsou CPU pouze jednou z několika výkonných hardwarových komponent, které pracují paralelně. Speciální řadiče vstupu / výstupu (jejichž přesné názvy se u jednotlivých výrobců liší) zpracovávají výhradně I / O a ty jsou zase připojeny k hardwarovým kanálům, které jsou také vyhrazeny pro vstup a výstup. Může existovat několik CPU a několik I / O procesorů. Celková architektura optimalizuje výkon vstupu / výstupu, aniž by došlo ke snížení čistého výkonu procesoru. Jelikož většina reálných aplikací sálových systémů jsou vysoce podnikové aplikace náročné na I / O, tato architektura pomáhá zajistit velmi vysokou úroveň propustnosti, která odlišuje sálové počítače od jiných typů počítačů.

V terminologii IBM ESA / 390 je kanál paralelním datovým připojením uvnitř stromového nebo hierarchicky organizovaného I / O subsystému. V klecích System / 390 I / O se kanály buď přímo připojují k zařízením, která jsou nainstalována uvnitř klece (komunikační adaptér, jako je ESCON , FICON , Open Systems Adapter ), nebo běží ven z klece, pod vyvýšenou podlahou jako kabely tloušťka palce a přímé připojení k rozhraní kanálu na větších zařízeních, jako jsou páskové subsystémy, zařízení pro přímý přístup k úložištím (DASD), terminální koncentrátory a další systémy ESA / 390.

Typy kanálů

Kanály se liší počtem a typem souběžných operací I / O, které podporují. V terminologii IBM podporuje multiplexní kanál řadu souběžných prokládaných pomalých operací, z nichž každý přenáší po jednom bajtu ze zařízení. Volič kanálů podporuje jeden vysokorychlostní provoz, přenosu bloku dat najednou. Blok Multiplexer podporuje řadu programů logicky souběžných kanálů, ale pouze jeden přenos vysokorychlostní dat v čase.

Program kanálu

Kanálový program je posloupnost kanálová příkazová slova (CCW), které jsou provedeny kanálovým subsystémem I / O na IBM System / 360 a následných architektur. Program kanálu se skládá z jednoho nebo více příkazových slov kanálu. Operační systém signalizuje subsystému I / O kanálu, aby zahájil provádění kanálového programu pomocí instrukce SSCH (start sub-channel). Centrální procesor pak může pokračovat v pokynech jiných než I / O, dokud není přerušen. Po dokončení operací kanálu kanál přeruší centrální procesor přerušením I / O. V dřívějších modelech řady sálových počítačů IBM byla kanálová jednotka identifikovatelnou komponentou, jednou pro každý kanál. V moderních sálových počítačích jsou kanály implementovány pomocí nezávislého procesoru RISC, kanálového procesoru, jednoho pro všechny kanály. IBM System / 370 Extended Architecture a jeho nástupci nahradili dřívější pokyny pro stroj SIO ( start I / O ) a SIOF ( start I / O fast release ) (System / 360 a brzy System / 370) za SSCH ( start sub-channel ) instrukce (ESA / 370 a následníci).

Channel I / O poskytuje značné úspory na vstupu / výstupu. Například na Linuxu IBM na IBM Z vyžaduje formátování celé stopy DASD pouze jeden kanálový program (a tedy pouze jednu I / O instrukci), ale více příkazových slov kanálu (jedno na blok). Program je prováděn vyhrazeným I / O procesorem, zatímco aplikační procesor (CPU) je pro další práci volný.

Příkazová slova kanálu

Příkaz kanálového slova ( CCW ) je návod na specializovaný kanálu I / O procesor, který je, ve skutečnosti, konečný automat. Používá se k zahájení I / O operace, jako je „čtení“, „zápis“ nebo „snímání“, na zařízení připojeném ke kanálu. V systémových architekturách, které implementují I / O kanálu, jsou obvykle všechna zařízení propojena kanály, a proto všechny I / O vyžadují použití CCW.

CCW jsou organizovány do kanálových programů operačním systémem a I / O podprogramem, obslužným programem nebo samostatným softwarem (jako jsou testovací a diagnostické programy). Omezená schopnost „větvení“, tedy dynamicky programovatelná schopnost, je v rámci těchto kanálových programů k dispozici, a to pomocí příznaku kanálu „modifikátor stavu“ a CCW „přenos v kanálu“.

Řetězení

IBM CCW jsou zřetězeny, aby vytvořily program kanálu. Bity v CCW indikují, že následující umístění v úložišti obsahuje CCW, který je součástí stejného kanálového programu. Kanálový program normálně provádí sekvenční CCW, dokud nedojde k výjimce, neprovede se CCW Transfer-in-Channel (TIC) nebo se provede CCW bez naznačeného zřetězení. Řetězení příkazů kanálu říká, že další CCW obsahuje nový příkaz. Zřetězení dat naznačuje, že další CCW obsahuje adresu dalších dat pro stejný příkaz, což umožňuje například části jednoho záznamu, které se mají zapisovat nebo číst do více datových oblastí v úložišti (shromažďování, zápis a čtení rozptylu).

Samočinné úpravy programů kanálu

Programy kanálu mohou během provádění na základě přečtených dat upravit svou vlastní činnost. Například vlastní modifikace se v OS / 360 ISAM používá značně .

Příklad programu kanálu

Následující příklad čte záznam na disku identifikovaný zaznamenaným klíčem . Skladba obsahující záznam a požadovanou hodnotu klíče je známá. Řídicí jednotka zařízení prohledá stopu a najde požadovaný záznam. V tomto příkladu <> označuje, že kanálový program obsahuje adresu úložiště zadaného pole.

  SEEK             <cylinder/head number>
  SEARCH KEY EQUAL <key value>
  TIC              *-8 Back to search if not equal
  READ DATA        <buffer> 

TIC (přenos v kanálu) způsobí, že se program kanálu rozvětví na příkaz SEARCH, dokud nenarazí na záznam s odpovídajícím klíčem (nebo na konec stopy). Když je nalezen záznam s odpovídajícím klíčem, řadič DASD zahrne do stavu kanálu Modifikátor stavu, což způsobí, že kanál přeskočí TIC CCW; program kanálu se tedy nerozvětví a kanál provede příkaz READ.

Výše uvedený příklad je správný pro odblokované záznamy (jeden záznam na blok). U blokovaných záznamů (více než jeden záznam na blok) musí být zaznamenaný klíč stejný jako nejvyšší klíč v tomto bloku (a záznamy musí být v pořadí klíčů) a bude použit následující program kanálu:

  SEEK                     <cylinder/head number>
  SEARCH KEY HIGH OR EQUAL <key value>
  TIC                      *-8 Back to search if not high or equal
  READ DATA                <buffer> 

Pokud je datová sada přidělena ve stopách a je dosaženo konce stopy, aniž by byl nalezen požadovaný záznam, program kanálu se ukončí a vrátí indikaci stavu „nebyl nalezen žádný záznam“. Podobně, pokud je datová sada přidělena ve válcích a je dosaženo konce válce bez nalezení požadovaného záznamu, program kanálu se ukončí a vrátí indikaci stavu „nebyl nalezen žádný záznam“. V některých případech má systémový software možnost aktualizovat číslo stopy nebo válce a přepsat provoz I / O bez přerušení aplikačního programu.

Kanálové programy ve virtuálních úložných systémech

Ve většině systémů kanály pracují pomocí skutečných (nebo fyzických) adres , zatímco programy kanálu jsou vytvářeny pomocí virtuálních adres . Operační systém je zodpovědný za překlad těchto programů kanálu před jejich spuštěním, a pro tento konkrétní účel má IOS ( Input / Output Supervisor ) speciální funkci rychlých oprav, která byla navržena do OS Supervisor právě pro ty „opravy“, které jsou relativně krátké trvání (tj. výrazně kratší než „čas nástěnných hodin“). Stránky obsahující data, která mají být použita operací I / O, jsou uzamčeny do skutečné paměti nebo jsou stránky opraveny . Před spuštěním operace I / O se zkopíruje program kanálu a všechny virtuální adresy se nahradí skutečnými adresami. Po dokončení operace jsou stránky nefixované.

Vzhledem k tomu, že oprava a uvolnění stránky je proces, který je nákladný na CPU, se ke snížení nákladů na CPU někdy používá dlouhodobé opravování stránek. Virtuální paměť je zde po celou dobu životnosti aplikace fixována stránkou, nikoli opravováním a uvolňováním kolem každé I / O operace. Příkladem programu, který umožňuje dlouhodobé opravy stránek, je DB2 .

Alternativou k dlouhodobému opravování stránek je přesunutí celé aplikace, včetně všech jejích datových vyrovnávacích pamětí, do preferované oblasti hlavního úložiště. To se provádí pomocí speciálního SYSEVENT v MVS / 370 až Z / operační systém OS, kde je aplikace, první, swapped- ven z místa, kde to může být, pravděpodobně z nepreferované oblasti, výměnu a strana externího úložiště, a je jednak swapped- v na přednostní oblasti (SYSEVENT TRANSWAP). Poté může být aplikace označena jako nezaměnitelná jiným speciálním SYSEVENT (SYSEVENT DONTSWAP). Kdykoli taková aplikace skončí, ať už normálně nebo neobvykle, operační systém implicitně vydá další speciální SYSEVENT jménem aplikace, pokud tak již neučinil (SYSEVENT OKSWAP).

Zavádění pomocí I / O kanálu

Dokonce bootstrapping systému nebo Initial Program Load (IPL) v nomenklatuře IBM se provádí pomocí kanálů, i když proces je částečně simulován CPU prostřednictvím implikované instrukce Start I / O (SIO), implicitního adresového slova kanálu ( CAW) v poloze 0 a implicitní příkazové slovo kanálu (CCW) s operačním kódem Read IPL, také v poloze 0. Předpokládá se řetězení příkazů, takže implicitní CCW v poloze 0 prochází pokračováním kanálového programu v umístěních 8 a 16, a případně jinde, pokud by jedním z těchto CCW byl přenos v kanálu (TIC).

Chcete-li načíst systém, implicitní Read IPL CCW načte první blok vybraného zařízení IPL do 24bajtové datové oblasti na místě 0, kanál pokračuje druhým a třetím dvojitým slovem, což jsou CCW, a tento program kanálu se načte první část softwaru pro načítání systému jinde v hlavním úložišti. První dvojité slovo obsahuje PSW, který po načtení na konci IPL způsobí, že CPU provede text IPL (zavaděč bootstrap) načtený CCW na místě 8. Text IPL poté vyhledá, načte a přenese kontrolu do jádro operačního systému. Nucleus provádí nebo iniciuje jakoukoli nezbytnou inicializaci a poté zahájí normální operace operačního systému.

Tento koncept IPL je nezávislý na zařízení. Je schopen IPL-ing z balíčku karet, z magnetické pásky nebo z paměťového zařízení s přímým přístupem (DASD), např. Disku, bubnu. Příkaz Read IPL (X'02 '), který je simulován CPU, je příkaz pro čtení Read EBCDIC Select Stacker 1 na čtečce karet a příkaz Read na páskovém médiu (které mají přirozeně sekvenční přístup), ale speciální příkaz Read-IPL na DASD.

Řadiče DASD přijímají příkaz X'02 ', hledají cylindr X'0000' head X'0000 ', přeskočí na indexový bod (tj. Těsně za záznamem deskriptoru stopy (R0)) a poté zacházejí s příkazem Číst IPL, jako byl to příkaz Číst data (X'06 '). Bez tohoto zvláštního chování řadiče DASD by nebylo možné IPL nezávislé na zařízení. Na DASD je text IPL obsažen na cylindru X'0000 ', stopě X'0000' a záznamu X'01 '(24 bajtů) a cylindru X'0000', stopě X'0000 'a záznamu X' 02 '(poměrně velký, určitě něco přes 3 000 bytů). Štítek svazku je vždy obsažen na válci X'0000 ', stopě X'0000' a bloku X'03 '(80 bajtů). Štítek svazku vždy ukazuje na VTOC s ukazatelem ve tvaru HHHH (tj. VTOC se musí nacházet v prvních 65 536 stopách). The VTOC je formát 4 DSCB vymezuje rozsah (velikost) na VTOC, takže svazku potřebuje pouze ukazatel na první skladby VTOC jeho rozsahu, a jako formát 4 DSCB, který popisuje VTOC, je vždy první DSCB ve VTOC ukazuje HHHH také na Format 4 DSCB.

Pokud dojde k pokusu o IPL ze zařízení, které nebylo inicializováno pomocí IPL Text, systém jednoduše přejde do stavu čekání. Inicializační program DASD (paměťové zařízení s přímým přístupem), IBCDASDI nebo inicializační aplikace DASD, ICKDSF, umístí stav čekání PSW a fiktivní řetězec CCW na 24 bytů, pokud je zařízení určeno pouze pro data, nikoli pro IPL, po které tyto programy formátují VTOC a provádějí další funkce inicializace pevného disku.

Viz také

Reference

Poznámky

externí odkazy