Vvedenie v mikroprocessor 80386 --------------------------------------------------------------- Korrektura: Oleg Martynenko ¡ http://alec-soft.narod.ru/ --------------------------------------------------------------- SODERZHANIE OSNOVNYE HARAKTERISTIKI 3 1.1 32-bitnaya arhitektura 3 1.2 Vysokoproizvoditel'naya tehnologiya 4 1.3 Obespechenie raboty s virtual'noj pamyat'yu 5 1.4 Mehanizmy zashchity 6 1.5 Rasshirennye vozmozhnosti otladki 6 1.6 Sovmestimost' s mikroprocessorami 8086/80286 6 1.7 Zaklyuchenie 7 PRIKLADNAYA ARHITEKTURA 7 2.1 Registry 7 2.1.1 Obshchie registry 7 2.1.2 Flagi i schetchik komand 8 2.1.3 Registry matematicheskogo soprocessora 8 2.2 Pamyat' i logicheskaya adresaciya 9 2.2.1 Segmenty 9 2.2.2 Logicheskie adresa 10 2.2.3 Registry segmentov i deskriptorov 10 2.2.4 Sposoby adresacii 11 2.3 Tipy dannyh i komandy 12 2.3.1 Glavnye tipy dannyh 12 2.3.2 Tipy dannyh matematicheskogo soprocessora 14 2.3.3 Drugie komandy 15 2.3.3.1 Komandy operacij so stekom 15 2.3.3.2 Komandy peredachi upravleniya 15 2.3.3.3 Dopolnitel'nye komandy 16 SISTEMNAYA ARHITEKTURA 16 3.1 Sistemnye registry 16 3.2 Obespechenie mnogozadachnyh operacionnyh sistem 17 3.2.1 Segment sostoyaniya zadachi 18 3.2.2 Smena zadachi 18 3.3 Adresaciya 19 3.3.1 Princip translyacii adresa 19 3.3.2 Segmenty 20 3.3.3 Stranicy 22 3.3.4 Virtual'naya pamyat' 23 3.4 Zashchita 25 3.4.1 Privilegii 25 3.4.2 Privilegirovannye komandy 26 3.4.3 Zashchita segmentov 26 3.4.4 Zashchita stranic 27 3.5 Sistemnye vyzovy 27 3.6 Preryvaniya i osobye situacii 29 3.6.1 Tablica deskriptorov 29 3.6.2 Osobye sluchai i registry otladki 30 3.7 Vvod/vyvod 31 ARHITEKTURNAYA SOVMESTIMOSTX 32 4.1 Sovmestimost' s 80286 32 4.2 Rezhimy real'nogo i virtual'nogo 8086 32 APPARATURNAYA REALIZACIYA 34 5.1 Vnutrennyaya struktura 34 5.2 Vneshnij interfejs 35 5.2.1 Sinhrosignal 36 5.2.2 SHiny dannyh i adresa 36 5.2.3 Opredelenie ciklov shiny 36 5.2.4 Upravlenie ciklom shiny 37 5.2.5 Dinamicheskoe upravlenie razryadnost' shiny 37 5.2.6 Status processora i upravlenie 38 5.2.7 Upravlenie soprocessorom 38 SVEDENIYA O FUNKCIONIROVANII 39 6.1 Vvedenie 39 6.2 Opisanie signalov 40 6.2.1 Vvedenie 40 6.2.2 Sinhrosignal (CLK2) 40 6.2.3 SHina dannyh (D0-D31) 40 6.2.4 SHina adresa (BE0#-BE3#, A2-A31) 40 6.2.5 Signaly opredeleniya tipa cikla shiny 42 6.2.6 Signaly upravleniya shinoj 43 6.2.6.1 Vvedenie 43 6.2.6.2 Strob adresa (ADS#) 43 6.2.6.3 Signal podtverzhdeniya (READY#) 43 6.2.6.4 Zapros sleduyushchego adresa (NA#) 43 6.2.6.5 Ukazatel' 16-razryadnoj shiny (BS16#) 43 6.2.7 Signaly arbitrazha shiny 44 6.2.7.1 Vvedenie 44 6.2.7.2 Zaprosy na zahvat shiny (HOLD) 44 6.2.7.3 Podtverzhdenie zahvata shiny (HLDA) 44 6.2.8 Signaly interfejsa s soprocessorom 44 6.2.8.1 Vvedenie 44 6.2.8.2 Zapros soprocessora (PEREQ) 45 6.2.8.3 Soprocessor zanyat (BUSY#) 45 6.2.8.4 Oshibka soprocessora (ERROR#) 45 6.2.9 Signaly preryvaniya 46 6.2.9.1 Vvedenie 46 6.2.9.2 Maskiruemyj zapros preryvaniya (INTR) 46 6.2.9.3 Nemaskiruemyj zapros preryvaniya (NMI) 46 6.2.9.4 Signal sbrosa (ustanovki v ishodnoe sostoyanie){RESET} 46 6.2.10 Spisok signalov 47 6.3 Mehanizm obmena po shine 49 6.3.1 Vvedenie 49 6.3.2 Prostranstva pamyati i vvoda/vyvoda 50 6.3.3 Organizaciya pamyati i vvoda/vyvoda 50 6.3.4 Izmenyaemyj razmer shiny dannyh 51 6.3.5 Svyaz' s 32 i 16 razryadnym ustrojstvami pamyati 52 6.3.6 Vyravnivanie operandov 54 6.4 Opisanie funkcionirovaniya shiny 54 6.4.1 Vvedenie 54 6.4.2 Konvejernaya adresaciya 55 6.4.3 Cikly chteniya i zapisi 56 6.4.3.1 Vvedenie 56 6.4.3.2 Nekonvejernaya adresaciya 57 6.4.3.3 Rezhim nekonvejernoj adresacii pri izmenenii razmera shiny dannyh 59 6.4.3.4 Konvejernaya adresaciya 60 6.4.3.5 Inicializaciya i podderzhanie rezhima konvejernoj adresacii 62 6.4.3.6 Konvejernaya adresaciya pri izmenenii razmera shiny dannyh 63 6.4.4 Cikly podtverzhdeniya preryvaniya(INTA) 64 6.4.5 Cikl indikacii ostanova 65 6.4.6 Cikl indikacii vyklyucheniya 65 6.5 Dopolnitel'nye svedeniya o funkcionirovanii 65 6.6.1 Vhod i vyhod v/iz sostoyaniya podtverzhdeniya zahvata shiny 65 6.6.2 Sbros v sostoyanii podtverzhdeniya zahvata shiny 66 6.6.3 Funkcionirovanie shiny v techenie i posle dejstviya signala RESET 66 6.7 Identifikatory tipa i modifikacii 67 OSNOVNYE HARAKTERISTIKI Mikroprocessor 80386 yavlyaetsya vysokoproizvoditel'nym 32-bitnym processorom, prednaznachennym dlya postroeniya naibolee sovershennyh vychislitel'nyh sistem segodnyashnego i zavtrashnego dnya. Stancii SAPR, graficheskie sistemy s vysokoj razreshayushchej sposobnost'yu, izdatel'skoe delo, avtomatizaciya kontrolya proizvodstva - vot te oblasti, gde segodnya mozhet byt' primenen 80386. Primeneniya zavtrashnego dnya skoree budut ogranicheny voobrazheniem razrabotchikov sistem, chem vychislitel'noj moshchnost'yu i vozmozhnostyami 80386. Mikroprocessor 80386 daet razrabotchiku sistem bol'shoe chislo novyh i effektivnyh vozmozhnostej, vklyuchaya proizvoditel'nost' ot 3 do 4 million operacij v sekundu, polnuyu 32-bitnuyu arhitekturu, 4 gigabitnoe (2 bajt) fizicheskoe adresnoe prostranstvo i vnutrennee obespechenie raboty so stranichnoj virtual'noj pamyat'yu. Nesmotrya na vvedenie v nego poslednih dostizhenij mikroprocessornoj tehniki, 80386 sohranyaet sovmestimost' po ob®ekt nomu kodu s programmnym obespecheniem, v bol'shom kolichestve napisannym dlya ego predshestvennikov, 8086 i 80286. Osobyj interes predstavlyaet takoe svojstvo 80386, kak virtual'naya mashina, kotoroe pozvolyaet 80386 pereklyuchat'sya v vypolnenii programm, upravlyaemyh razlichnymi operacionnymi sistemami, naprimer, UNIX i MS-DOS. |to svojstvo pozvolyaet proizvoditelyam original'nyh sistem neposredstvenno vvodit' prikladnoe programmnoe obespechenie dlya 16-bitnyh mashin v sisteme na baze 32-bitnyh mikroprocessorov. Ob®edinyaya v sebe proizvoditel'nost' supermini |VM i nizkuyu stoimost' i funkcional'nuyu gibkost' mikroprocessora, 80386 mozhet otkryt' novye rynki dlya ,(*`./`.f%aa.`-ke sistem. Primeneniya, nedopustimye prezhde iz-za nevysokogo bystrodejstviya mikroprocessorov ili ne ekonomnosti ispol'zovaniya supermini |VM, stali teper' prakticheski osushchestvimy blagodarya 80386. Takie novejshie primeneniya, kak mashinnoe zrenie, raspoznavanie rechi, intellektual'nye raboty i ekspertnye sistemy, byvshie do nedavnego vremeni v osnovnom na stadii eksperimenta, teper' mogut byt' predlozheny na rynke. Dlya togo, chtoby udovletvorit' trebovaniyam budushchih primenenij, malo imet' 32-bitnye registry, komandy i shiny. |ti osnovnye svojstva yavlyayutsya lish' otpravnoj tochkoj dlya 80386. V nizhesleduyushchih razdelah v obshchih chertah budet rassmotrena 32-bitnaya arhitektura 80386, obladayushchaya takimi novymi dopolnitel'nymi svojstvami, kak: - vysokoproizvoditel'naya tehnologiya, - obespechenie raboty s virtual'noj pamyat'yu, - mehanizmy zashchity, - rasshirennoe otladochnoe obespechenie, - sovmestimost' po ob®ektnomu kodu s 8086/80286 1.1 32-bitnaya arhitektura 32-bitnaya arhitektura 80386 obespechivaet programmnye resursy, neobhodimye dlya podderzhki "bol'shih " sistem, harakterizuemyh operaciyami s bol'shimi chislami, bol'shimi strukturami dannyh, bol'shimi programmami (ili bol'shim chislom programm) i t.p. Fizicheskoe adresnoe prostranstvo 80386 sostoit iz 2 bajt ili 4 Gbajt; ego logicheskoe adresnoe prostranstvo sostoit iz 2 bajt ili 64 terabajt (Tbajt). Vosem' 32-bitnyh obshchih registrov 80386 mogut byt' vzaimozamenyaemo ispol'zovany kak operandy komand i kak peremennye razlichnyh sposobov adresacii. Tipy dannyh vklyuchayut v sebya 8, 16 ili 32 bitnye celye i poryadkovye, upakovannye i neupakovannye desyatichnye, ukazateli, stroki bit, bajtov, slov i dvojnyh slov. Mikroprocessor 80386 imeet polnuyu sistemu komand dlya operacij nad etimi tipami dannyh, a takzhe dlya upravleniya vypolneniem programm. Sposoby adresacii 80386 obespechivayut effektivnyj dostup k elementam standartnyh struktur dannyh: massivov, zapisej, massivov zapisej i zapisej, soderzhashchih massivy. 1.2 Vysokoproizvoditel'naya tehnologiya 32-bitnaya arhitektura ne garantiruet vysokoj proizvoditel'nosti. Realizaciya potenciala arhitektury trebuet novejshej mikroelektronnoj tehnologii, tochnogo razdeleniya funkcij i vnimaniya k vneshnim operaciyam kristalla, v osobennosti k vzaimodejstviyu processora s pamyat'yu. Vklyuchenie etih svojstv obespechivaet 80386 samuyu vysokuyu proizvoditel'nost' po sravneniyu s lyubym drugim sushchestvuyushchim mikroprocessorom. Mikroprocessor 80386 realizovan s pomoshch'yu tehnologii firmy INTEL CH MOSIII - tehnologicheskogo processa, ob®edinyayushchego v sebe vozmozhnosti vysokogo bystrodejstviya tehnologii HMOS s malym potrebleniem tehnologii KMOP. Ispol'zovanie geometrii 1,5 mkm i sloev metallizacii daet 80386 bolee 275000 tranzistorov na kristalle. Sejchas vypuskayutsya oba varianta 80386, rabotayushchih na chastote I2 i I6 MGc bez sostoyanij ozhidaniya, prichem variant 80386 na 16 MGc obespechivaet skorost' raboty 3-4 milliona operacij v sekundu. Mikroprocessor 80386 razdelen vnutri na 6 avtonomno i parallel'no rabotayushchih blokov s sootvetstvuyushchej sinhronizaciej. Vse vnutrennie shiny, soedinyayushchie eti bloki, imeyut razryadnost' 32 bit. Konvejernaya organizaciya funkcional'nyh blokov v 80386 dopuskaet vremennoe nalozhenie vypolneniya razlichnyh stadij komandy i pozvolyaet odnovremenno vypolnyat' neskol'ko operacij. Krome konvejernoj obrabotki vseh komand, v 80386 vypolnenie ryada vazhnyh ./%` f() osushchestvlyaetsya special'nymi apparatnymi uzlami. Blok umnozheniya/deleniya 80386 mozhet vypolnyat' 32-bitnoe umnozhenie za 9- 41 takt sinhronizacii, v zavisimosti ot chisla znachashchih cifr; on mozhet razdelit' 32-bitnye operandy za 38 taktov (v sluchae chisel bez znakov) ili za 43 takta (v sluchae chisel so znakami). Registr gruppovogo sdviga 80386 mozhet za odin takt sdvigat' ot 1 do 64 bit. Vo mnogih 32-bitnyh primeneniyah, v takih kak, naprimer, pereprogrammiruemye |VM kollektivnogo pol'zovaniya, trebuetsya preobrazovanie logicheskih adresov v fizicheskie i zashchita pamyati s pomoshch'yu bloka upravleniya pamyat'yu, BUP. V drugih primeneniyah, naprimer, v sistemah upravleniya v real'nom vremeni, eto ne trebuetsya. Dlya bol'shinstva mikroprocessornyh sistem s 32-bitnoj arhitekturoj takoe razdelenie funkcij realizuetsya putem ispol'zovaniya dopolnitel'nogo korpusa bloka upravleniya pamyat'yu. V otlichie ot nih bup 80386 vhodit v sostav processora kak odin iz dvuh funkcional'nyh blokov konvejernoj struktury. Operacionnaya sistema, upravlyayushchaya rabotoj bup, pozvolyaet, naprimer, sisteme real'nogo vremeni obhodit' stranichnoe preobrazovanie. Vvedenie upravleniya pamyat'yu vnutr' kristalla daet povyshennuyu proizvoditel'nost' v sistemah, ispol'zuyushchih bup i ne privodit k ee snizheniyu v teh sistemah, kotorye BUP ne ispol'zuyut. Takie harakteristiki stali vozmozhny blagodarya snizheniyu zaderzhek rasprostraneniya, ispol'zovaniyu vnutrennego poluperiodnogo taktirovaniya i parallel'noj raboty. Eshche odno svojstvo, neobhodimoe v odnih primeneniyah i ne trebuyushcheesya v drugih, eto obrabotka bol'shih chisel, v osobennosti v arifmeticheskih operaciyah s plavayushchej zapyatoj s odinarnoj i dvojnoj tochnost'yu. Operandy s plavayushchej zapyatoj imeyut bol'shuyu dlinu, a neobhodimyj nabor komand dlya operacij nad nimi yavlyaetsya dovol'no slozhnym; dlya realizacii standartnogo nabora operacij s plavayushchej zapyatoj v sootvetstvii so standartom IEEE754 trebuetsya neskol'ko tysyach tranzistorov. V etih celyah v 80386 imeetsya apparatnoe obespechenie sovmestnoj raboty s otdel'nym matematicheskim soprocessorom. K 80386 mozhet byt' podklyuchen matematicheskij soprocessor libo 80287, libo bolee proizvoditel'nyj 80387. Dlya prikladnogo programmnogo obespecheniya soprocessory prozrachny; oni lish' rasshiryayut arhitekturu 80386 s pomoshch'yu registrov, tipov dannyh i operacij, trebuemyh standartom IEEE754. Kombinaciya 80386 i 80387 mozhet ispolnyat' 1,8 million operacij. 32-bitnyj processor, rabotayushchij s chastotoj 16 MGc, imeet bol'shee bystrodejstvie, chem bol'shinstvo bystrodejstvuyushchih pamyatej, v sledstvii chego ego proizvoditel'nost' mozhet byt' ogranichena vremenami dostupa k pamyati. 80386 byl sproektirovan tak, chtoby s maksimal'noj effektivnost'yu ispol'zovat' kak naibolee bystrodejstvuyushchie statisticheskie OZU, tak i nedorogie dinamicheskie OZU. Dlya obrashcheniya k bystroj pamyati, naprimer tipa kesh, 80386 vyrabatyvaet dvuhtaktnyj magistral'nyj cikl dlya adresa/dannyh. (Pamyati tipa kesh 80386 mogut imet' lyuboj ob®em ot minimal'nogo poleznogo 4 Kbajt do maksimal'nogo, ohvatyvayushchego vse fizicheskoe adresnoe prostranstvo). Obrashchenie k bolee medlennoj pamyati (ili k ustrojstvam vvoda/vyvoda) mozhet proizvodit'sya s ispol'zovaniem konvejernogo formirovaniya adresa dlya uvelicheniya vremeni ustanovki dannyh posle adresa do 3 taktov pri sohranenii dvuhtaktnyh ciklov v processore. Vsledstvie vnutrennego konvejernogo formirovaniya adresa pri ispolnenii komandy, 80386, kak pravilo, vychislyaet adres i opredelyaet sleduyushchij magistral'nyj cikl vo vremya tekushchego magistral'nogo cikla. Uzel konvejernogo formirovaniya adresa peredaet etu operezhayushchuyu informaciyu v podsistemu pamyati, pozvolyaya, tem samym, odnomu banku pamyati deshifrirovat' sleduyushchij , #(ab` +l-k) cikl, v to vremya kak drugoj bank reagiruet na tekushchij magistral'nyj cikl. 1.3 Obespechenie raboty s virtual'noj pamyat'yu Virtual'naya pamyat' pozvolyaet stavit' maksimal'nyj ob®em programmy ili gruppy programm v zavisimost' ot imeyushchegosya adresnogo prostranstva na diske, a ne ot ob®ema fizicheskoj pamyati (OZU), kotoraya v nastoyashchee vremya priblizitel'no v 400 raz dorozhe. Iz vytekayushchej otsyuda gibkosti vyigryvayut izgotoviteli oborudovaniya (kotorye mogut postavlyat' izdeliya, otlichayushchiesya lish' v konfiguraciyah pamyati i v urovne proizvoditel'nosti), programmisty (kotorye mogut predostavlyat' upravlenie hraneniem programm operacionnym sistemam i izbegat' napisaniya programm s perekryvayushchimisya strukturami) i konechnye pol'zovateli (kotorye mogut vvodit' novye i bol'shie po ob®emu prikladnye programmy, ne opasayas' nehvatki pamyati). Virtual'naya pamyat' realizuetsya operacionnoj sistemoj s sootvetstvuyushchej apparaturnoj podderzhkoj. Mikroprocessor 80386 obespechivaet rabotu s sistemami virtual'noj pamyati s segmentnoj ili stranichnoj organizaciej. Segmentnaya virtual'naya pamyat' bol'she podhodit dlya nebol'shih 16-bitnyh sistem, v kotoryh ob®em segmenta ne prevyshaet 64 Kbajt. 80386 obespechivaet rabotu s segmentami ob®emom do 4 Gbajt; poetomu v bol'shinstve bol'shih sistem na baze 80386 sistemy virtual'noj pamyati budut ispol'zovat' vozmozhnost' stranichnogo zaprosa. Dlya kazhdoj stranicy 80386 vyrabatyvaet bity prisutstviya, zanyatosti ili registracii obrashcheniya, kotorye neobhodimy dlya effektivnoj realizacii virtual'noj pamyati so stranichnymi zaprosami. V sluchae obrashcheniya k nesushchestvuyushchej stranice 80386 avtomaticheski delaet perehod k operacionnoj sisteme, esli operacionnaya sistema schitala s diska otsutstvuyushchuyu stranicu, 80386 vypolnyaet komandu povtorno. Vysokaya proizvoditel'nost' v rabote s virtual'noj pamyat'yu obespechivaetsya v 80386 ispol'zovaniem vnutrennej kesh-pamyati dlya hraneniya stranichnoj informacii. |ta kesh-pamyat' (nazyvaemaya buferom prosmotra translyacii, TLB) soderzhit informaciyu o raspredelenii adresov 32 stranic, ispol'zovavshihsya poslednimi. Stranicy virtual'noj pamyati 80386 imeyut ob®em 4 Kbajt, hranya odnovremenno raspredelenie 128 Kbajt pamyati, bufer TLB pozvolyaet 80386 preobrazovat' adresa vnutri kristalla, ne obrashchayas' k hranyashchejsya v pamyati tablice stranic. V tipichnyh sistemah 98-99% poiska adresov budet osushchestvlyat'sya cherez bufer TLB. 1.4 Mehanizmy zashchity Vypolnyaya 3-4 milliona operacij v sekundu, 80386 imeet dostatochno vychislitel'noj moshchnosti dlya obespecheniya samyh slozhnyh sistem, sostoyashchih iz soten ili tysyach programmnyh modulej. V takih sistemah vopros zaklyuchaetsya ne v tom, budut li oshibki, a v tom kak ih najti i po vozmozhnosti bystro ustranit' i naskol'ko ih dejstvie mozhet byt' ogranicheno. Takie sistemy mogut byt' bystro otlazheny i sdelany bolee nadezhnymi pri serijnom osvoenii, esli processor budet proveryat' kazhduyu komandu po kriteriyu zashchity. Pri etom stepen' i tip ispol'zuemoj zashchity zavisit ot konkretnogo primeneniya. Obychno prostye sistemy real'nogo vremeni rabotayut dostatochno horosho bez ispol'zovaniya zashchity. Razlichnye trebovaniya k zashchite mogut byt' naibolee polno udovletvoreny s pomoshch'yu nabora vyborochno ispol'zuemyh funkcij zashchity, vvedennyh v 80386: - razdelenie adresnyh prostranstv zadach; - vvedenie 0-4 urovnej privilegij; - ispol'zovanie privilegirovannyh komand (naprimer, HALT); - razdelenie segmentov po tipam (naprimer, kodovyj segment ili a%#,%-b dannyh); - vvedenie prav dostupa k segmentam i stranicam (naprimer, pravo tol'ko chteniya ili tol'ko ispolneniya); - proverka granic segmenta. Dlya sohraneniya maksimal'noj proizvoditel'nosti vse proverki zashchity v 80386 vypolnyayutsya odnovremenno s vypolneniem komandy. 1.5 Rasshirennye vozmozhnosti otladki CHetyre vnutrennih otladochnyh registra 80386 pomogayut znachitel'no sokratit' vremya otladki programmy. |ti registry rabotayut nezavisimo ot sistemy zashchity i poetomu mogut byt' ispol'zovany v lyubyh sistemah, vklyuchaya te, kotorye budut rabotat' bez zashchity. Ne menee vazhno i to, chto oni dayut vozmozhnost' ustanavlivat' kontrol'nye tochki dannyh, pomimo kontrol'nyh tochek komand. 80386 otslezhivaet vse chetyre tekushchih adresnyh kontrol'nyh tochki odnovremenno, ne snizhaya skorosti vypolneniya programmy. Kontrol'nye tochki komand vyzyvayut perehod (obychno v programmu- otladchik) pri vypolnenii komandy, v bol'shinstve processorov eto osushchestvlyaetsya s pomoshch'yu special'noj komandy, kotoruyu otladchik zapisyvaet posle komandy, predstavlyayushchej interes. Zadavaya adresa kontrol'nyh tochek v registrah, 80386 ustranyaet programmnye iskazheniya, neizbezhnye pri vnesenii komand perehoda v zashchishchennuyu ili obshchuyu chast' programmy. Kontrol'nye tochki dannyh, nalichie kotoryh yavlyaetsya, dlya mikroprocessora svojstvom unikal'nym, dlya celej otladki osobenno polezny. Po kontrol'noj tochke dannyh mozhno ustanovit' moment chteniya adresa ili zhe moment ego zapisi ili chteniya. Ispol'zuya kontrol'nye tochki dannyh, programmist mozhet, naprimer, bystro ustanovit' komandu, otvetstvennuyu za oshibochnuyu zapis' v strukture dannyh. Krome registrov kontrol'nyh tochek, 80386 imeet i bolee tradicionnye otladochnye funkcii v vide kontrol'nyh tochek komand i poshagovogo ispolneniya programmy. 1.6 Sovmestimost' s mikroprocessorami 8086/80286 Dva pokoleniya processorov semejstva 86 predshestvuyut processoru 80386 - 80286 i 8086, s kazhdym iz nih 80386 sovmestim na urovne dvoichnyh kodov. Blagodarya takoj sovmestimosti ekonomyatsya programmnye zatraty, obespechivaetsya bystryj vyhod na rynok i dostup k obshirnoj biblioteke programmnogo obespecheniya, napisannogo dlya mashin na baze mikroprocessorov semejstva 86. Mikroprocessor 80386, konechno, mozhet vypolnyat' programmy dlya 8086, on takzhe mozhet odnovremenno vypolnyat' programmy dlya 80286 i 80386. Odnako naibolee vazhnym svojstvom sovmestimosti 80386 predstavlyaetsya svojstvo, nazyvaemoe VIRTUAL 86 ( virtual'nyj 86), ustanavlivayushchee zashchishchennuyu strukturu dlya 8086 vnutri sistemy zadach 80386. Dopolnyaya svojstvo virtual'nogo 8086 stranichnoj organizaciej pamyati, 80386 mozhet zakrepit' za kazhdoj zadachej virtual'nogo 8086 1 megabajtnoe adresnoe prostranstvo v lyuboj oblasti fizicheskogo adresnogo prostranstva 80386. Bolee togo, esli operacionnaya sistema 80386 obespechivaet rabotu s virtual'noj pamyat'yu, to zadachi virtual'nogo 8086 mogut perenosit'sya s diska i obratno kak lyubye drugie zadachi. Takim obrazom, svojstvo virtual'nogo 8086 pozvolyaet 80386 odnovremenno vypolnyat' programmy, napisannye dlya treh pokolenij semejstva 86. 1.7 Zaklyuchenie Mikroprocessor 80386 obespechivaet tu bazovuyu proizvoditel'nost', kotoraya neobhodima dlya postroeniya vysokoproizvoditel'nyh mikroprocessornyh sistem. arhitektura 80386 $.ab b.g-. gibka: ne orientiruyas' na odno predstavlenie o vychislitel'noj mashine, ona daet razrabotchikam sistem vozmozhnost' vybirat' te varianty, kotorye nailuchshim obrazom podhodyat dlya konkretnogo primeneniya. Polnyj nabor svojstv dlya upravleniya pamyat'yu, vklyuchayushchij segmentaciyu, stranichnoe razdelenie i obespechenie raboty s virtual'noj pamyat'yu, realizuetsya vnutri kristalla. Do chetyreh urovnej zashchity mozhet byt' ispol'zovano dlya vozvedeniya granic mezhdu programmnymi komponentami, odnako zashchita mozhet i ne ispol'zovat'sya. Zadachi virtual'nogo 8086 mogut obogatit' 32-bitnye sistemy neobychajno bol'shim naborom standartnyh programm, uzhe razrabotannyh dlya mashin na baze 8086. Proizvoditel'nost' i gibkost' mikroprocessora 80386 mogut byt' dopoleny drugimi ustrojstvami firmy INTEL i dovedeny do maksimuma. K etim ustrojstvam otnosyatsya kontrollery lokal'nyh setej, usovershenstvannye kontrollery pryamogo dostupa k pamyati, kontrollery diskov i graficheskie soprocessory. PRIKLADNAYA ARHITEKTURA Mikroprocessor 80386 daet razrabotchiku prikladnyh programm na yazyke assemblera ili razrabotchiku kompilyatora shirokij nabor 32- bitnyh resursov. V dannoj glave eti resursy rassmatrivayutsya v treh razdelah: 1)registry; 2)pamyat' i logicheskaya adresaciya; 3)tipy dannyh i komandy. 2.1 Registry Vo vseh vychislitel'nyh mashinah, vklyuchaya 80386, imeyutsya registry, kotorye programmisty mogut ispol'zovat' dlya srochnogo promezhutochnogo hraneniya. K dannym, hranyashchimsya v etih registrah, mozhno obratit'sya bez magistral'nyh ciklov, chto sokrashchaet vremya ispol'zovaniya komandy i predostavlyaet bol'she magistral'nogo vremeni drugim processorom, naprimer, kontrolleram pryamogo dostupa k pamyati. V 80386 imeetsya vosem' programmno dostupnyh obshchih registrov, eshche vosem' registrov dobavlyaetsya pri podklyuchenii matematicheskogo soprocessora 80287 ili 80387. Dva drugih registra 80386, prednaznachennyh ne dlya hraneniya dannyh, a dlya hraneniya statusa i upravleniya processorom, takzhe vazhny dlya programmistov. |to registr flagov i schetchik komand. 2.1.1 Obshchie registry Kak vidno iz ris.2-1, Obshchie registry 80386 imeyut razryadnost' 32 bit, vnutrennie shiny dannyh, vneshnie shiny dannyh i adresa processora takzhe imeyut razryadnost' 32 bit. V sootvetstvii s lyubym obshche prinyatym opredeleniem 80386 yavlyayutsya 32-bitnoj mashinoj. Odnako v sootvetstvii s praktikoj drugih processorov, predshestvennikami kotoryh byli 16-bitnye mashiny, prinyato, chto v 80386 slovo oznachaet 16 bit, a 32-bita obrazuyut dvojnoe slovo. Kak vidno iz ris.2-1 vse obshchie registry mogut ispol'zovat'sya kak 16 ili 32-bitnye registry, a chetyre iz nih mogut byt' ispol'zovany i kak 8-bitnye registry. Pochti vo vseh operaciyah lyuboj obshchij registr mozhet byt' opredelen kak operand. Lyubye dva registra, naprimer, mogut byt' peremnozheny. Analogichnym obrazom, lyuboj registr pri vychislenii adresa mozhet byt' ispol'zovan v kachestve bazovogo ili indeksnogo. Poskol'ku v lyuboj prakticheskoj programme trebuetsya stek, obshchij registr ESP podrazumevaetsya kak ukazatel' vershiny steka. 2.1.2 Flagi i schetchik komand Na ris.2-2 pokazan format registra flagov 80386. Flagi delyatsya na tri klassa: statusnye, upravlyayushchie i sistemnye. Processor ustanavlivaet statusnye flagi posle mnogih komand, chtoby otrazit' rezul'tat operacii. Naprimer, esli dva operanda pri sravnenii okazyvayutsya ravnymi, to processor ustanavlivaet flag nulevogo rezul'tata. Drugie komandy, preimushchestven no komandy uslovnogo perehoda, proveryayut flag statusa i dayut razlichnye rezul'taty v zavisimosti ot sostoyaniya flaga. Programmist mozhet ustanavlivat' flagi upravleniya dlya izmeneniya semantiki nekotoryh komand. Naprimer, komanda prosmotra stroki mozhet imet' napravlenie v storonu bol'shih ili men'shih adresov v zavisimosti ot sostoyaniya flaga napravleniya. Sistemnye flagi prednaznacheny dlya ispol'zovaniya operacionnoj sistemoj i v prikladnyh programmah mogut ignorirovat'sya. (Sistemnye flagi rassmatrivayutsya v glave 3). Na praktike dlya isklyucheniya vozmozhnogo izmeneniya sistemnyh flagov prikladnymi programmami mozhet byt' ispol'zovana sistema zashchity 80386. 1 - statusnye flagi 2 - perenos 3 - chetnost' 4 - vspomogatel'nyj perenos 5 - nol' 6 - znak 7 - perepolnenie Schetchik komand 80386, oboznachaemyj EIP, imeet razryadnost' 32 bit. Schetchik komand upravlyaet vyborkoj komand (vklyuchaya predvaritel'nuyu vyborku) i posle vypolneniya komandy processor avtomaticheski uvelichivaet ego na I. Soderzhimoe schetchika komand menyaetsya po preryvaniyam, v osobyh i pri vypolnenii komand menyaetsya po preryvaniyam, v osobyh sluchayah i pri vypolnenii komand peredachi upravleniya, naprimer, perehodah i vyzovah. 2.1.3 Registry matematicheskogo soprocessora Registry matematicheskogo soprocessora, pokazannye na ris.2-3, povyshayut proizvoditel'nost' sistem s bol'shim ob®emom vychislenij. Pri podklyuchenii k 80386 matematicheskogo soprocessora 80287 ili 80387 eti registry dobavlyayutsya k 80386. Hotya matematicheskij soprocessor raspoznaet formaty celyh, upakovannyh desyatichnyh i chisel s plavayushchej zapyatoj razlichnoj dliny, vnutri nego vse velichiny hranyatsya v formate s plavayushchej zapyatoj v registrovom steke 8h80 bit. V matematicheskih operaciyah mogut byt' kak neyavnye ssylki na verhnie elementy steka, tak i yavnye na drugie registry. Statusnyj registr soderzhit ukazatel' vershiny steka, flagi, identificiruyushchie osobye sluchai (naprimer, perepolnenie) i kody sostoyanij, otrazhayushchie rezul'tat poslednej komandy. Registr upravleniya soderzhit bity variantov i masok, kotorye programmist mozhet ustanavlivat' dlya vybora algoritma okrugleniya, interpretacii beskonechnosti, a takzhe zadaniya togo, kak budut obrabatyvat'sya osobye sluchai - soprocessorom ili programmno. 1-REGISTER STACK 79 78 64 65 0 +----------------------------------------+ | | SIGNIFICAND | EXSPONENT | +--+---------------+---------------------| | | 2 | 3 | +--+---------------+---------------------| | | | | +--+---------------+---------------------| | | | | +--+---------------+---------------------| | | | | +--+---------------+---------------------| | | | | +----------------------------------------+ 15 0 +---------------------+ 4 -| CONTHOL REGISTER | +---------------------| 5 -| STATUS REGISTER | +---------------------+ Ris.2-3 Registry matematicheskogo soprocessora; 1 - registrovyj stek; 2 - poryadok; 3 - mantissa; 4 - registr upravleniya; 5 - registr statusa. 2.2 Pamyat' i logicheskaya adresaciya Dlya adresacii operandov v 4g bajtnom fizicheskom adresnom prostranstve prikladnye programmy 80386 ispol'zuyut logicheskuyu adresaciyu. Processor avtomaticheski transliruet eti logicheskie adresa v fizicheskie, kotorye zatem vydayutsya na sistemnuyu magistral'. Kak budet rassmotreno bolee podrobno v glave 3, operacionnaya sistema 80386 mozhet perestraivat' predstavlenie prikladnoj programmy o ee logicheskom adresnom prostranstve. Naprimer, operacionnaya sistema 80386 mozhet opredelit' logicheskoe adresnoe prostranstvo tak, kak eto delaetsya vo mnogih arhitekturah , a imenno, kak prostoj massiv iz 2 bajt. S drugoj storony, ona mozhet organizovat' logicheskoe adresnoe prostranstvo kak nabor segmentov peremennoj dliny. Operacionnaya sistema mozhet opredelit' kak bol'shoe chislo segmentov, tak i vsego neskol'ko, v zavisimosti ot ee predstavleniya o logicheskoj pamyati; 80386 ne diktuet konkretnoe ispol'zovanie segmentov i pozvolyaet ispol'zovat' ih tak, kak togo trebuet dannoe primenenie. CHitaya dal'nejshie razdely, sleduet pomnit' o tom, chto stepen' aktivnogo ispol'zovaniya segmentov prikladnoj programmoj zavisit ot togo, kak oni organizovany operacionnoj sistemoj. 2.2.1 Segmenty Kak bylo otmecheno vyshe, operacionnaya sistema mozhet opredelit' adresnoe prostranstvo kak odin ili neskol'ko segmentov. Segmenty yavlyayutsya logicheskimi blokami, horosho prisposoblennymi pod programmnye struktury, kotorye po suti svoej imeyut peremennuyu dlinu. Naprimer, 1516-bajtnaya procedura polnost'yu soderzhit segmente 1516 bajt, tak zhe, kak i 8 megabajtnyj massiv (naprimer, displejnyj bufer 1028X1028X8) polnost'yu vhodit v segment takogo zhe razmera. Imeya dlya segmentov sootvetstvuyushchie arhitekturnye resheniya, 80386 povyshaet proizvoditel'nost' sistem, v kotoryh mehanizm strukturirovaniya osnovan na segmentah. (Stranicy, kotorye rassmatrivayutsya v glave 3, imeyut fiksirovannye razmery; oni ne prisposobleny pod programmnye struktury, no, s drugoj storony, bolee podhodyat dlya takih funkcij operacionnoj sistemy, kak, naprimer, peresylki mezhdu OZU i diskom). Segment v sisteme 80386 mozhet imet' lyuboj razmer ot 1 bajta do 4gbajt. Dlya kazhdogo segmenta operacionnaya sistema podderzhivaet ' $ --k) arhitekturoj deskriptor, soderzhashchij opisanie segmenta. Opisanie segmenta vklyuchaet v sebya 32-bitnyj bazovyj adres i dlinu segmenta, a takzhe informaciyu o zashchite, predotvrashchayushchej nepravil'noe ispol'zovanie segmenta. Vvidu togo, chto deskriptory podderzhivayutsya operacionnymi sistemami, ih rassmotrenie otkladyvaetsya do glavy 3. Prikladnye programmy pol'zuyutsya deskriptorami lish' kosvenno, obrashchayas' k segmentam s pomoshch'yu logicheskih adresov. 2.2.2 Logicheskie adresa Vvidu togo, chto programma mozhet v principe obrashchat'sya k neskol'kim segmentam, logicheskij adres 80386 dolzhen identificirovat' segment. Poetomu logicheskij adres 80386 sostoit iz dvuh chastej, 16-bitnogo selektora segmenta i 32-bitnogo smeshcheniya v vybrannom segmente (sm. Ris.2-4). Posle selektora v logicheskom adrese ukazyvaet na deskriptor segmenta. V principe processor opredelyaet adres segmenta s pomoshch'yu selektora, kak ukazatelya dlya tablicy deskriptorov, podderzhivaemoj operacionnoj sistemoj. Dobavlenie smeshcheniya logicheskogo adresa k bazovomu adresu, poluchennomu po deskriptoru segmenta, daet adres operanda. 1 - LOGICHESKIJ ADRES 2 - SEGMENT +---------------+ 47 3 31 32 4 0 | | | +-------------------------+ | | | | SELEKTOR | SMESHCHENIE | | | | +-------------------------+ | | | | | | 5 | | 7 | | +-----------| | | +--------------?| OPERAND | | DO 2 | | +-----------| | | TABLICA DESKRIPTOROV | | | | BAJT | +-----------------+ | | | | | | | | | | | | | | +-----?| | | | | 8 | | | | | | +-----------------+ | +-----------+ | +--?| DESKRIPTOR ------ ---- +-----------------+ | | | | +-----------------+ Ris.2-4. 2.2.3 Registry segmentov i deskriptorov Dlya povysheniya effektivnosti logicheskoj adresacii v 80386 vvedeno 6 registrov segmentov i deskriptorov (sm. Ris.2-5) 1. 1 - SEGMENT 2 - DESKRIPTOR 15 0 63 0 +---------------+ +------------------------------+ | 3-selektor | |4-bazovyj adres, razmer i t.d.| 5 KODOVYJ SEGMENT | | | | +---------------| +------------------------------| | | | | 6 STEK +---------------| +------------------------------| | | | | 7 DANNYE +---------------| +------------------------------| | | | | 7 +---------------| +------------------------------| | | | | 7 +---------------| +------------------------------| | | | | 7 +---------------+ +------------------------------+ Fakticheski eti registry ispol'zuyutsya kak programmno upravlyaemyj kesh, pozvolyayushchij isklyuchit' iz bol'shinstva komand selektory i proizvodit' translyaciyu bol'shinstva logicheskih adresov vnutri kristalla bez obrashchenij k tablice deskriptorov. Adresnye ssylki v bol'shinstve programm proizvodyatsya v nebol'shih adresnyh diapazonah (takaya "lokal'nost' ssylok" delayut virtual'nuyu pamyat' praktichnoj). Naprimer, esli procedura hranitsya v segmente, to veroyatnee vsego bol'shoe chislo komand budet schitano iz segmenta prezhde, chem upravlenie perejdet k drugoj procedure v drugom segmente. Lokal'nost' ssylok v 80386 obespechivaetsya programmno, putem zapominaniya vo vnutrennih registrah poslednih ispol'zovavshihsya selektorov i deskriptorov. Vnutrennee hranenie deskriptorov pozvolyaet translirovat' bol'shinstvo logicheskih adresov bez obrashchenij k pamyati, zanimayushchih mnogo vremeni. V lyuboj moment vremeni mozhno adresovat' do shesti segmentov: kodovyj segment, segment steka i chetyre segmenta dannyh. V segmentnyh registrah CS, SS, DS, ES, FS i GS hranyatsya selektory etih segmentov. Ih deskriptory hranyatsya v sootvetstvuyushchih registrah deskriptorov. V sluchae neobhodimosti programma mozhet sdelat' adresuemym novyj segment s pomoshch'yu zagruzki selektora novogo segmenta v segmentnyj registr. Processor avtomaticheski podderzhivaet registry deskriptorov, zagruzhaya trebuemyj deskriptor kazhdyj raz, kogda programma menyaet segmentnyj registr. (Fakticheski, registry deskriptorov mogut zagruzhat'sya tol'ko processorom; programme oni ne dostupny). Schetchik komand soderzhit smeshchenie tekushchej komandy v tekushchem kodovom segmente (opredelyaemom registrom CS), a registr ESP soderzhit smeshchenie vershiny steka v tekushchem segmente steka (opredelyaemom registrom SS).Vysokaya effektivnost' deshifracii komand dostigaetsya dlya bol'shinstva iz nih blagodarya otsutstviyu yavnyh ssylok na segmentnye registry. Naprimer, v komandah perehoda i zanesenie v stek ssylki, sootvetstvenno, na registry CS i SS, delayutsya neyavno. V sluchae neobhodimosti programmist mozhet ukazat' processoru na ispol'zovanie konkretnogo segmenta v dannoj komande, chto osushchestvlyaetsya putem dobavleniya pered komandoj odnobajtnogo prefiksa peremeny segmenta. Prefiks ukazyvaet processoru na registr segmenta, kotoryj dolzhen ispol'zovat'sya v translyacii adresa v sleduyushchej za prefiksom komande. Segment, bazovyj adres kotorogo raven 0, a predel'nyj razmer - 4 Gbajt, opredelyaet 4 gigabajtnoe logicheskoe adresnoe prostranstvo. Poskol'ku processor vybiraet segmentnyj registr avtomaticheski, to komanda mozhet ssylat'sya na operand v lyuboj yachejke etogo 4gbajtnogo prostranstva s pomoshch'yu 32-bitnogo smeshcheniya. Esli, kak pokazano na ris.2-6, Vse registry deskriptorov budut zagruzheny bazovym adresom 0 k predel'nym razmeram 4gbajt, to v etom sluchae segmenty ischezayut. Lyuboj bajt v logicheskom adresnom prostranstve, nezavisimo ot togo, komandnyj eto bajt ili bajt dannyh, ili zhe element steka, adresuetsya s pomoshch'yu prostogo 32- bajtnogo smeshcheniya. Takim obrazom, segmentnye registry dayut 80386 shest' odnovremenno adresuemyh logicheskih adresnyh prostranstv razmerom do 4 Gbajt kazhdoe. V tom sluchae, esli eti segmenty sovpadayut, to programma budet raspolagat' odnim 4gbajtnym +.#(g%a*(, adresnym prostranstve, identichnym takomu prostranstvu, kotoroe obespechivaetsya menee gibkimi 32-bitnymi arhitekturami. 2.2.4 Sposoby adresacii Mikroprocessor 80386 obespechivaet registrovuyu i neposredstvennuyu adresaciyu operandov, soderzhashchihsya, sootvetstven no, v registrah ili komandah. Eshche bolee vazhnym yavlyaetsya sposobnost' 80386 obespechivat' razlichnye sposoby adresacii neobhodimye dlya effektivnogo obrashcheniya k takim elementam struktur dannyh v pamyati kak massivy, zapisi (struktury), massivy zapisej i zapisi, soderzhashchie massivy. Pri etom programma opredelyaet pole smeshcheniya v logicheskom adrese po odnomu iz sposobov adresacii pamyati v 80386. Processor 80386 vychislyaet pole smeshcheniya logicheskogo adresa po sleduyushchej formule: smeshchenie = baza + (indeks X masshtab) + otklonenie Dlya vychisleniya smeshcheniya mogut byt' ispol'zovany lyubye ili vse peremennye bazy, indeksa i otkloneniya. Peremennye bazy i indeksa yavlyayutsya velichinami, hranyashchimisya v obshchih registrah, a velichina otkloneniya soderzhitsya v komande. Dlya hraneniya bazy ili indeksa mozhet byt' ispol'zovan lyuboj obshchij registr. Velichina v indeksnom registre mozhet byt'