otmasshtabirovana (umnozhena) koefficientom 1,2,4 ili 8, chto daet vozmozhnost' delat' ssylki na elementy massiva ili zapisi sootvetstvuyushchej dliny. Velichina otkloneniya mozhet imet' razryadnost' 8 ili 32 bit i interpretiruetsya processorom kak velichina so znakom v dopolnitel'nom kode. Razumnye kombinacii bazy, indeksa i otkloneniya dayut sleduyushchie sposoby adresacii pamyati 80386: - pryamaya: ispol'zuetsya tol'ko otklonenie; - registrovaya kosvennaya: ispol'zuetsya tol'ko baza; - bazovaya: ispol'zuetsya baza + otklonenie; - indeksnaya: ispol'zuetsya indeks (v masshtabe); - indeksnaya s otkloneniem: ispol'zuetsya indeks (v masshtabe) + otklonenie; - bazovaya indeksnaya: ispol'zuetsya baza + indeks (v masshtabe); - bazovaya indeksnaya s otkloneniem: ispol'zuetsya baza + indeks (v masshtabe) + otklonenie; 2.3 Tipy dannyh i komandy V dannom razdele budut rassmotreny komandy, chashche vsego ispol'zuemye programmistami. Poskol'ku bol'shinstvo komand operiruet s konkretnymi tipami dannyh (naprimer, s celymi), eti tipy i komandy rassmatrivayutsya sovmestno. Privilegirovannye komandy, vklyuchaya te, kotorye osushchestvlyayut vvod/vyvod i obrabotku preryvanij budut rassmotreny v glave 3. 2.3.1 Glavnye tipy dannyh V tabl. 2-1 Perechisleny tipy dannyh i komandy, obespechivaemye processorom 80386. V etoj tablice privedeny tol'ko naibolee upotrebimye komandy. Varianty komand, takie kak (v sluchae ciklicheskogo sdviga) ciklicheskij sdvig vpravo i ciklicheskij sdvig cherez perenos, takzhe opushcheny. Tablica 2-1 GLAVNYE TIPY DANNYH I KOMANDY +------------------------------------------------------------------------------+ | TIP | RAZRYADNOSTX | KOMANDY 3 +--------------+----------------+----------------------------------------------| | CELOE, | 8, 16, 32 BIT | PERESYLKA, OBMEN, PREOBRAZOVANIE, PROVERKA, | | PORYADKOVOE | | SRAVNENIE, PEREVOD, SDVIG, DVOJNOJ, SDVIG, | | | | CIKLICHESKIJ SDVIG, OTRICANIE, LOGICHESKOE "I",| | | | "ILI", ISKLYUCHAYUSHCHEE "ILI". | | | | | | | | SLOZHENIE, VYCHITANIE, UMNOZHENIE, DELENIE, | | | | UVELICHENIE NA 1, UMENXSHENIE NA 1, PEREVOD | | | | (PERESYLKA S RASSHIRENIEM ZNAKA/NOLYA) | +------------------------------------------------------------------------------+ +------------------------------------------------------------------------------+ |NEUPAKOVANNOE | 1 CIFRA | KORREKCIYA DLYA SLOZHENIYA, VYCHITANIYA, | | DESYATICHNOE | | UMNOZHENIYA, DELENIYA | +--------------+----------------+----------------------------------------------| | UPAKOVANNOE | 2 CIFRY | KORREKCIYA DLYA SLOZHENIYA, VYCHITANIYA | | DESYATICHNOE | | | +--------------+----------------+----------------------------------------------| | STROKA | 0-4 GBAJT SLOV | PERESYLKA, ZAGRUZKA, ZAPOMINANIE, | | BAJTOV, SLOV,| DVOJNYH SLOV | SRAVNENIE, PROSMOTR, POVTOR | | DVOJNYH SLOV | | | +--------------+----------------+----------------------------------------------| | STROKA BIT | 1-4GBIT | PROVERKA, PROVERKA I USTANOVKA, | | | | PROVERKA I GASHENIE, PROVERKA I DOPOLNENIE, | | | | PROSMOTR, VSTAVLENIE, IZ¬YATIE | +--------------+----------------+----------------------------------------------| | LOKALXNYJ | 32 BIT | (SM. PORYADKOVOE) | | UKAZATELX | | | +--------------+----------------+----------------------------------------------| | GLOBALXNYJ | 48 BIT | ZAGRUZKA | | UKAZATELX | | 3 +------------------------------------------------------------------------------+ Primechanie: Lokal'nyj ukazatel' - 32 bitnoe smeshchenie v segmente, opredelennom odnoj iz registrirovannyh par segmenta/deskriptora. Global'nyj ukazatel' - eto polnyj logicheskij adres, sostoyashchij iz selektora i smeshcheniya. Na ris.2-7 pokazany primery togo, kak glavnye tipy dannyh hranyatsya v pamyati. Mnogobajtnye elementy mogut razmeshchat'sya s lyubogo adresa bajta v zavisimosti ot struktury magistrali, dlya obrashcheniya k operandam, razmeshchennym po adresu, ne kratnym dline operanda v bajtah, mogut potrebovat'sya dopolnitel'nye magistral'nye cikly. Poetomu dlya vysokoj proizvoditel'nosti, ne zavisyashchej ot struktury magistrali, bol'shinstvo programm orientiruyut slovnye operandy iz dvojnyh slov na granicah dvojnyh slov i t.p. | 5 | 4 | 3 | 2 | 1 | 0 | OTNOSITELXNYE ADRESA-1 +------------------------------------------------------------ ---------------- VOZRASTANIE PORYADKA - 2 7 0 +-------+ | |3 | | BAJT PORYADKOVOGO +-------+ +-----------+ 4 | VELICHINA -------- 31 0 +------------------------+ | | |5 | | | DVOJNOE SLOVO CELOGO +------------------------+ -------- VELICHINA - 4 - L------- ZNAK 6 7 0 +-------+ | |7 | | NEUPAKOVANNOE L-------- DESYATICHNOE 7 3 0 +-------+ | | |8 | | | UPAKOVANNOE L---+---- DESYATICHNOE +------- ------------------------+ | | | | | | | 9 | | | | | | | STROKA BAJTOV +------- ------------------------+ 10 MLADSHIJ BAJT ------- 31 0 +-----------------------+ | | 11 | | LOKALXNYJ UKAZATELX +-----------------------+ 47 31 0 +--------------------------------+ | | | 12 | 13 | 14 | GLOBALXNYJ UKAZATELX +--------------------------------+ +--------------------------------+ SELEKTOR SMESHCHENIE 2.3.2 Tipy dannyh matematicheskogo soprocessora Matematicheskij soprocessor 80287 ili 80387 dobavlyayut k tipam dannyh i komandam processora 80386 svoi, privedennye v tabl.2-2. V bol'shinstve prikladnyh zadach vhodnye velichiny i poluchaemye rezul'taty hranyatsya v vide tipov celyh, dejstvitel'nyh ili upakovannyh desyatichnyh, a dlya promezhutochnyh velichin imeetsya tip dannyh promezhutochnoe dejstvitel'noe, rasshirennyj diapazon i tochnost' kotorogo v slozhnyh vychisleniyah svodyat k minimumu oshibki okrugleniya, perepolneniya i ischeznoveniya poryadka. V sootvetstvii s takoj model'yu matematicheskij soprocessor proizvodit bol'shuyu chast' vychislenij nad promezhutochnymi velichinami, hranyashchimisya v ego registrah. Pri zagruzke lyubogo tipa dannyh v registrovyj stek, etot tip avtomaticheski menyaetsya na promezhutochnyj dejstvitel'nyj. Promezhutochnaya dejstvitel'naya velichina v registre, v svoyu ochered', mozhet byt' perevedena v lyuboj drugoj tip s pomoshch'yu komandy zapominaniya. Na ris.2-8 Pokazano, kak tipy dannyh matematicheskogo soprocessora hranyatsya v pamyati. Tablica 2-2 GLAVNYE TIPY DANNYH I KOMANDY MATEMATICHESKOGO SOPROCESSORA +------------------------------------------------------------------------+ | TIP | RAZRYADNOSTX | KOMANDY | +------------------------------------------------------------------------+ +------------------------------------------------------------------------+ | CELOE | 16,32,64 BIT | ZAGRUZKA, ZAPOMINANIE, SRAVNENIE, | | | | SLOZHENIE, VYCHITANIE, UMNOZHENIE, DELENIE | +--------------+--------------+------------------------------------------| | UPAKOVANNOE | 18 CIFR | ZAGRUZKA, ZAPOMINANIE | | DESYATICHNOE | | | +------------------------------------------------------------------------+ +------------------------------------------------------------------------+ |DEJSTVITELXNOE| 32,64 BIT | ZAGRUZKA, ZAPOMINANIE, SRAVNENIE | | | | SLOZHENIE, VYCHITANIE, UMNOZHENIE, DELENIE | +--------------+--------------+------------------------------------------| |PROMEZHUTOCHNOE | 80 BIT | SLOZHENIE, VYCHITANIE, UMNOZHENIE, DELENIE, | |DEJSTVITELXNOE| | IZVLECHENIE, KVADRATNOGO KORNYA, | | | | MASSHTABIROVANIE OSTATKA, VYCHISLENIE | | | | CHASTI CELOGO, SMENA ZNAKA, VYCHISLENIE | | | | ABSOLYUTNOJ VELICHINY, VYDELENIE PORYADKA | | | | I MANTISSY, SRAVNENIE, OSMOTR, PROVERKA, | | | | OBMEN, ARKTANGENS, 2-1,Y*LOG(X+1), | | | | Y*LOG(X), ZAGRUZKA KONSTANTY (0.0, P, I | | | | T.D.) (80387 DOBAVLYAET SINUS, KOSINUS, | | | | SINUS I KOSINUS, NEUPORYADOCHENNOE | | | | SRAVNENIE). | +------------------------------------------------------------------------+ +-------------------------------------------------------------------+ | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | OTNOSITELXNYE ADRESA - 1 | +-------------------------------------------------------------------+ --------------- VOZRASTANIE PORYADKA - 2 79 71 3 0 --------+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ UPAKOVOCHNOE | | | | | | | | | | | | | | | | | | | DESYATICHNOE +-----------------------------------------+ 5 | L-------- 4 VELICHINA ---------------- L------- ZNAK - 3 31 23 0 +----------------------+ 7 | | | | NEPOLNOE | | | | DEJSTVITELXNOE +----------------------+ |L---T---L- VELICHINA -- | L-------- SMESHCHENNYJ PORYADOK 6 L------------- ZNAK 60 51 0 +--------------------------------------------+ 8 | | | | POLNOE | | | | DEJSTVITELXNOE +--------------------------------------------+ | +-------------+ +------- VELICHINA --------- | L------ SMESHCHENNYJ PORYADOK L--------------- ZNAK 79 62 0 --T-----------T--T---------------------------+ PROMEZHUTOCHNOE | | | | | DEJSTVIE +--------------------------------------------+ 9 | L-----T------ L------ 4 VELICHINA --------- | L------------------ SMESHCHENNYJ PORYADOK L------- ZNAK - 3 Ris.2-8.Primery hraneniya tipov dannyh matematicheskogo soprocessora 2.3.3 Drugie komandy Ne vse komandy processora 80386 svyazany s tipami dannyh. Takie komandy rassmatrivayutsya v nizhesleduyushchih paragrafah. 2.3.3.1Komandy operacij so stekom Stek processora 80386 yavlyaetsya stekom dvojnyh slov, osnovanie i vershina kotorogo opredelyayutsya registrami, sootvetstvenno, SS i ESP. Komanda PUSH zanosit dvojnoe slovo v stek, a komanda POP izvlekaet s vershiny steka dvojnoe slovo i hranit ego v registre pamyati ili v pamyati. Po komande PUSH ALL v stek zanosyatsya vse obshchie registry, a po komande POP ALL proizvoditsya obratnaya operaciya. Komanda INTER (vhoda v proceduru) i LEAVE (vyhoda iz procedury) prednaznacheny dlya yazykov vysokogo urovnya s blochnoj strukturoj. Po komande ENTER sozdaetsya kadr i obraz steka, kotorye kompilyatory ispol'zuyut dlya svyazki vyzovov procedur. Po komande LEAVE kadr steka i obraz udalyayutsya iz steka dlya podgotovki vozvrata k procedure, sdelavshej vyzov. 2.3.3.2Komandy peredachi upravleniya Komanda JUMP (perehod) peredaet upravlenie drugoj komande putem zameny soderzhimogo schetchika komand. Novaya komanda mozhet byt' v tom zhe kodovom segmente (so smeshchenie do 2 bajt) ili sovsem v drugom. Operandom vnutrisegmentnogo perehoda yavlyaetsya lokal'nyj ukazatel', t.e. smeshchenie novoj komandy v tekushchem kodovom segmente; perehod takim obrazom, mozhet byt' sdelan k lyuboj yachejke v maksimal'no vozmozhnom segmente. Operandom mezhsegmentnogo perehoda yavlyaetsya global'nyj ukazatel', chto pozvolyaet peredavat' upravlenie v lyubuyu tochku segmenta. (Pole selektora v global'nom ukazatele zameshchaet velichinu v registre CS, a pole smeshchenie - velichinu v EIP). V sisteme komand takzhe imeetsya polnyj nabor komand uslovnyh perehodov, vetvlenie kotoryh osnovano na velichine flaga statusa; eti komandy mogut peredavat' upravlenie yachejkam, kotorye takzhe smeshcheny na maksimum 2 bajta. Vyzov procedur i funkcij (podprogramm) proizvoditsya po komandam CALL (vyzov), a vozvrat k vyzyvavshej podprogramme osushchestvlyaetsya s pomoshch'yu komandy RETURN (vozvrat). Tak zhe, kak komandy perehoda, vyzovy vnutri segmenta imeyut svoimi operandami lokal'nyj ukazatel', zadayushchij novuyu velichinu v schetchike komand, a vyzovy mezhdu segmentami ispol'zuyut v kachestve operandov global'nyj ukazatel', kotoryj krome CS izmenyaet i velichinu EIP. Po komandam vyzova adres sleduyushchej komandy zanositsya v stek, posle chego proizvoditsya zagruzka schetchika komand (i registra CS, esli perehod delaetsya v drugoj segment). Po komande vozvrata sohranennye velichiny izvlekayutsya iz steka v EIP i, esli trebuetsya, v CS. Vyzovy mogut imet' beskonechnuyu vlozhennost' i rekursivnost', ogranichennye lish' razmerom steka. Dlya upravleniya ciklami, pomimo uslovnyh perehodov, 80386 obespechivaet vypolnenie komand LOOP (bezuslovno i uslovnogo cikla). Komandy cikla v kachestve schetchika ciklov ispol'zuyut registr ECX; v kazhdom cikle ECX umen'shaetsya na 1 i vypolnenie *., -$k zakanchivaetsya, kogda velichina v ECX stanovitsya ravnoj nulyu. Komandy uslovnyh ciklov zakanchivayutsya v tom sluchae, esli flag soderzhit zadannuyu velichinu. V to vremya kak komandy cikla prednaznacheny dlya proverok "v konce cikla", komanda "perehod", esli ECX=0 realizuet proverku v nachale cikla i pozvolyaet vypolnyat' cikl 0 raz. 2.3.3.3Dopolnitel'nye komandy Komanda BOUND (proverka granic) 80386 mozhet byt' ispol'zovana dlya proverki togo, chto indeks massiva nahoditsya v ego granicah. Processor 80386 imeet takzhe komandy ustanovki i gasheniya flagov, zagruzki i zapominaniya bajta statusa registra flagov. Matematicheskij soprocessor 80287 ili 80387 dobavlyaet komandy, neobhodimye operacionnoj sisteme dlya ego inicializacii, obrabotki osobyh sluchaev, a takzhe dlya zapominaniya i vosstanovleniya statusa soprocessora. Nakonec, estestvenno, processore 80386 imeet komandu "net operacii". SISTEMNAYA ARHITEKTURA Naznachenie sistemnoj arhitektury zaklyuchaetsya v obespechenii operacionnyh sistem, odnako operacionnye sistemy ves'ma razlichny po svoim trebovaniyam. Dlya resheniya etoj problemy, processor 80386 obespechivaet nabor resursov, kotorye razrabotchiki operacionnyh sistem mogut ispol'zovat' po svoemu usmotreniyu. V rezul'tate sistemnaya arhitektura 80386 mozhet byt' skonfigurirovana tak, chtoby udovletvorit' vsem trebovaniyam razrabatyvaemoj operacionnoj sistemy. 3.1Sistemnye registry Krome registrov, rassmotrennyh v predydushchej glave, operacionnaya sistema inogda ispol'zuet registry 80386, pokazannye na ris.3-1. (Dalee v etoj glave eti registry eshche budut rassmatrivat'sya; zdes' oni pokazany dlya spravki). V osnovnom etimi registrami pol'zuetsya sam 80386; operacionnaya sistema lish' inicializiruet sistemnye registry i ignoriruet ih pri normal'noj rabote. Odnako, operacionnaya sistema mozhet vospol'zovat'sya sistemnym registrom pri obrabotke osobogo sluchaya. Naprimer, pri stranichnoj oshibke processor zagruzhaet oshibochnyj adres v registr CR2; obrabotchik stranichnyh oshibok operacionnoj sistemy ispol'zuet etot adres dlya poiska sootvetstvuyushchego elementa stranichnoj tablicy. Sistemnye registry obychno nedopustimy prikladnym programmam, poskol'ku operirovat' s nimi mogut tol'ko privilegirovannye komandy. (Osobye sluchai, stranichnye oshibki i privilegirovannye komandy rassmatrivayutsya dalee v etoj glave). 47 15 0 +-----------------------------+ | BAZOVYJ ADRES | PR. RAZMER | GLOBALXNAYA TABLICA +----------------+------------+ DESKRIPTOROV | | | TABLICA DESKRIPTOROV +-----------+----------------+------------+ PRERYVANIJ | SELEKTOR | | | LOKALXNAYA TABLICA L-----------+----------------+------------- DESKRIPTOROV +-----------------------------------------+ SISTEMNYE ADRESNYE REGISTRY 31 0 +-------------------------+ | | VSPOMOGATELXNYJ +-------------------------| | | REZERVNYJ +-------------------------| | | LINEJNYJ ADRES STR. OSHIBKI +-------------------------| | | BAZOVYJ ADRES SPRAVOCHNIKA | | STRANIC +-------------------------+ SISTEMNYE UPRAVLYAYUSHCHIE REGISTRY 3.2Obespechenie mnogozadachnyh operacionnyh sistem Mnogie svojstva sistemnoj arhitektury 80386 neposredstvenno obespechivayut mnogozadachnye operacionnye sistemy, hotya, konechno, 80386 mozhet byt' ispol'zovan i v odnozadachnyh sistemah s povyshennymi trebovaniyami. Mnogozadachnaya rabota predstavlyaet soboj sposob upravleniya rabotoj vychislitel'noj sistemoj v teh sluchayah, kogda rabota sistemy sostoit iz neskol'kih vidov deyatel'nosti; tremya vidami deyatel'nosti mogut byt' naprimer, redaktirovanie odnogo fajla, kompilyaciya drugogo i peredacha tret'ego fajla v druguyu mashinu. V mnogozadachnoj sisteme kazhdyj vid deyatel'nosti, kotoryj mozhet osushchestvlyat'sya odnovremenno s drugimi, nazyvaetsya zadachej. (V dannom materiale termin "zadacha " ekvivalenten terminu "process"). Kazhdaya zadacha vypolnyaet programmu, sostoyashchuyu iz komand i ishodnyh dannyh. Odna i ta zhe programma mozhet vypolnyatsya neskol'kimi zadachami; naprimer, v mnogozadachnoj sisteme s razdeleniem vremeni neskol'ko zadach (po chislu pol'zovatelej) mogut ispol'zovat'sya odnim i tem zhe kompilyatorom ili redaktorom. Programmy i zadachi sootnosyatsya drug s drugom podobno partiture muzykal'nogo proizvedeniya i ego ispolneniyu: programma - eto tekst, opisyvayushchij algoritm, a zadacha - eto odnokratnoe ispolnenie etogo algoritma. Programmy, vypolnyaemye zadachami. Sostavleny tak, kak esli by oni vypolnyalis' na otdel'nyh processorah s obshchej pamyat'yu, t.e. Ispol'zuya pauzy, neobhodimye dlya svyazi ili sinhronizacii s drugimi zadachami, teoreticheski kazhdaya zadacha vypolnyaetsya nepreryvno parallel'no s drugimi zadachami. Na samom dele , odnako, zadachi vypolnyayutsya poocheredno odnim processorom. Mnogozadachnaya operacionnaya sistema modeliruet neskol'ko processorov, predostavlyaya kazhdoj zadache "virtual'nyj processor". V kazhdyj moment vremeni operacionnaya sistema peredaet real'nyj processor odnomu iz virtual'nyh processorov, vypolnyayushchemu svoyu zadachu. Dlya podderzhivaniya vpechatleniya, chto kazhdaya zadacha imeet svoj processor, operacionnaya sistema chasto pereklyuchaet real'nyj processor na razlichnye virtual'nye processory. V sistemnoj arhitekture 80386 dlya operacii smeny zadachi predusmotreny segmenty sostoyaniya zadachi i komandy, vypolnyayushchie etu operaciyu. 3.2.1 Segment sostoyaniya zadachi Segment sostoyaniya zadachi (TSS) yavlyaetsya odnoj iz neskol'kih struktur dannyh, opredelyaemyh sistemnoj arhitekturoj 80386. Fakticheski, eti struktury dannyh yavlyayutsya "tipami dannyh" dlya operacionnyh sistem. Segment TSS(sm.Ris.3-2) Sootvetstvuet tomu, chto v nekotoryh operacionnyh sistemah nazyvaetsya blokom upravleniya zadachej; v etom segmente hranitsya sostoyanie virtual'nogo processora zadachi. Kazhdaya zadacha 80386 predstavlena svoim TSS, kotoryj delitsya na dve chasti. Mladshaya chast' TSS opredelena sistemnoj arhitekturoj 80386 i soderzhit znacheniya registrov processora. Starshaya chast' TSS mozhet byt' opredelena operacionnoj a(ab%,.) dlya hraneniya dannyh, svyazannyh s zadachej, naprimer, prioriteta vypolneniya, deskriptorov fajlov i t.d. Dlya sozdaniya svoej zadachi operacionnaya sistema formiruet TSS i inicializiruet ego velichinami, neobhodimymi zadache dlya nachala ee vypolneniya. V rezul'tate 80386 podderzhivaet mladshuyu chast' TSS, a za ego starshuyu chast' neset otvetstvennost' operacionnaya sistema. +--------------------------------------+ | (OPREDELENNAYA OPERACIONNAYA SISTEMA) | . . +--------------------------------------| | ADRES LOKALXNOJ TABLICY DESKRIPTOROV | +--------------------------------------| | SPRAVOCHNYJ ADRES STRANICHNOJ TABLICY | +--------------------------------------| | OBSHCHIE REGISTRY | . . +--------------------------------------| | REGISTR FLAGOV | +--------------------------------------| +--------------------------------------| | SEGMENTNYE REGISTRY | . . +--------------------------------------| | PRIVILEGIROVANNYE | . . +--------------------------------------+ 3.2.2 Smena zadachi Operacionnaya sistema razreshaet vypolnenie ??????? v sootvetstvii s planom. |tot plan ustanavlivaet vremya vypolneniya zadach. Poskol'ku metody planirovaniya ???????? razlichnye, 80386 predostavlyaet eto operacionnoj sisteme. ???? Kogda operacionnaya sistema reshaet nachat' vypolnenie ????? zadachi, ona napravlyaet processor na vypolnenie eshche odnogo ?????, inogda nazyvaemogo smenoj konteksta. Processor 80386 hranit selektor i deskriptor ????? tekushchej zadachi v svoem registre zadachi ?????? operacionnaya sistema vydaet komandu perehoda ???????? yavlyaetsya selektor segmenta TSS novoj zadachi ?????? etu komandu, zanosya vnachale svoi registry v tekushchij TSS, a zatem zagruzhaya TR selektorom (i svyazannym s nim deskriptorom), ukazannym v komande. Poluchiv adres novogo TSS, processor zagruzhaet svoi registry velichinami iz novogo TSS. Posle chego vypolnenie programmy prodolzhaetsya s komandy, na kotoruyu ukazyvaet schetchik komand novoj zadachi. Dlya vozobnovleniya staroj zadachi operacionnaya sistema dolzhna vydat' komandu perehoda i TSS staroj zadachi, posle etogo vypolnenie staroj zadachi prodolzhaetsya s komandoj, sleduyushchej posle komandy perehoda TSS, prekrativshej ee vypolnenie. Takaya smena zadachi zanimaet 17 mks (pri rabochej chastote 16 Mgc i otsutstvii sostoyanij ozhidaniya). 3.3Adresaciya Fizicheskoe adresnoe prostranstvo bol'shinstva vychislitel'nyh mashin organizovano prosto kak massiv bajtov. S poyavleniya blokov upravleniya pamyat'yu (BUP), arhitektura mashin stala razlichat' fizicheskoe adresnoe prostranstvo, realizuemoe, apparaturoj pamyati i logicheskoe adresnoe prostranstvo, vidimoe programmistom. Blok upravleniya pamyat'yu transliruet logicheskie adresa programm v fizicheskie adresa, vydavaemye na sistemnuyu magistral'. V bol'shinstve arhitektur logicheskoe adresnoe prostranstvo zadachi predstavlyaetsya kak nabor sleduyushchih variantov: Logicheskoe adresnoe prostranstvo sostoit iz massiva bajtov, ne imeyushchego opredelennoj BAJTY struktury (takoe adresnoe prostranstvo inogda nazyvaetsya "ploskim" ili "linejnym"). Translyaciya adresa v etom sluchae ne trebuetsya, poskol'ku logicheskij adres tochno ekvivalenten fizicheskomu. Logicheskoe adresnoe prostranstvo sostoit iz neskol'kih ili bol'shogo chisla segmentov, SEGMENT kazhdyj iz kotoryh soderzhit peremennoe chislo bajtov. Logicheskij adres razdelen na dve chasti, nomera segmenta i smeshcheniya vnutri segmenta. Bup proizvodit translyaciyu logicheskogo adresa v fizicheskij. Logicheskoe adresnoe prostranstvo sostoit iz bol'shogo chisla stranic, kazhdaya iz kotoryh STRANICY vklyuchaet v sebya fiksirovannoe chislo bajtov. Logicheskij adres sostoit iz nomera stranicy i smeshcheniya vnutri stranicy. Bup proizvodit translyaciyu logicheskogo adresa v fizicheskij. STRANICHNYE Logicheskoe adresnoe prostranstvo sostoit iz segmentov Segmenty v svoyu ochered', sostoyat iz stranic. SEGMENTY Logicheskij adres sostoit iz nomera segmenta i smeshcheniya vnutri segmenta. Bup proizvodit translyaciyu logicheskogo adresa v nomer stranicy i smeshchenie v nej, kotorye zatem transliruyutsya v fizicheskij adres. Kazhdyj iz etih variantov horosho podhodit dlya odnih sistem i malo prigoden dlya drugih. Naprimer, linejnoe prostranstvo vpolne podhodit dlya sistem s prostymi vetvleniyami, v to vremya kak dlya sistem, kotorye vypolnyayut individual'noe upravlenie i zashchitu otdel'nyh programmnyh struktur, bol'she podhodit variant s segmentaciej pamyati. V 80386 realizovan variant, predstavlyayushchij pamyat' kak nabor segmentov, kotorye po zhelaniyu mogut byt' razdeleny na stranicy. Na praktike arhitektura 80386 obespechivaet operacionnye sistemy lyubym iz chetyreh variantov predstavleniya pamyati. 3.3.1 Princip translyacii adresa Princip translyacii logicheskogo adresa v fizicheskij v processore 80386 illyustriruetsya na ris.3-3. Posledovatel'nost' operacij, pokazannaya na ris.3-3, yavlyaetsya central'noj kak dlya adresacii, tak i dlya zashchity. Zdes' ona rassmatrivaetsya v shematichnoj forme s cel'yu dat' yasnoe obshchee predstavlenie o nej prezhde, chem perejti k rassmotreniyu takih svojstv, kak virtual'naya pamyat' i zashchita. V posleduyushchih razdelah budut podrobno rassmotreny razlichnye etapy translyacii adresa i budet pokazano, kak oni mogut byt' prisposobleny pod trebovaniya konkretnoj sistemy. Kak pokazano v predydushchej glave, sposoby adresacii pamyati 80386 dayut 32-bitnoe smeshchenie iskomogo operanda. Sovmestno s selektorom segmenta eto smeshchenie obrazuet sostavnoj logicheskij adres: selektor etogo adresa identificiruet iskomyj segment, a smeshchenie ukazyvaet na operand v segmente. V bol'shinstve komand selektor zadaetsya neyavno kak soderzhimoe segmentnogo registra. +--------------+ | TABLICY | | DESKRIPTOROV | +--------------+ LOGICHESKIJ ADRES ---------+-+ LINEJNYJ ADRES +-----------------+ | | +--------+ +--+ |SELEKTOR|SMESHCHENIE+->|TRANSLYACIYA+--->| +--+ +----T-+ L--------+--------- | SEGMENTA | L--------- L--- | | 47 31 0 L----------- 31 0 ZAPRET | | STRANIC | | +-------------------------------------------+ | | +--------------+ | +-----------+ | 31 0 | | TABLICY | |--------------------+ | | STRANIC | +--+ FIZICHESKIJ ADRES| | +-----------+ |-+------------------+ | |+--------------------------+ 31 | 0 | 31 0 | +----------------+ +---------------------++------------------+| | LINEJNYJ ADRES +-->| TRANSLYACIYA STRANICY +-->|FIZICHESKIJ ADRES+-- +----------------+ +---------------------++------------------+ Selektor predstavlyaet soboj indeks v tablice deskriptorov segmentov, t.e. eto pole soderzhit nomer segmenta. Kazhdyj element tablicy deskriptorov segmentov soderzhit bazovyj adres segmenta. Processor dobavlyaet k nemu smeshchenie i poluchaet 32-bitnyj linejnyj adres. Esli stranicy ne razresheny, processor schitaet, chto linejnyj adres yavlyaetsya fizicheskim, i vydaet ego na adresnye vyvody. Esli stranicy razresheny, to 80386 transliruet linejnyj adres v fizicheskij. |to delaetsya s pomoshch'yu stranichnyh tablic. Stranichnaya tablica po svoej organizacii analogichna tablice deskriptorov, za isklyucheniem togo, chto kazhdyj element stranichnoj tablicy soderzhit fizicheskij bazovyj adres stranicy 4kbajt. Poskol'ku sposoby adresacii 80386 ohvatyvayut kak tradicionnye elementy strukturnogo deleniya adresnogo prostranstva (segmenty, i dopolnitel'no, stranicy) i poskol'ku segmenty mogut byt' ochen' bol'shimi (do 4 Gbajt), to eti sposoby adresacii okazyvayutsya ochen' gibkimi. Takim obrazom, operacionnaya sistema mozhet dat' zadache odno linejnoe adresnoe prostranstvo, linejnoe adresnoe prostranstvo iz stranic, adresnoe prostranstvo iz segmentov ili segmentirovannoe adresnoe prostranstvo so stranichnym deleniem. Po vsej svoej gibkosti mnogostupenchataya translyaciya adresa v 80386 vypolnyaetsya dostatochno bystro. Tipichnoe vremya vychisleniya smeshcheniya i translyacii logicheskogo adresa v fizicheskij sostavlyaet 1,5 takta. Bolee togo, vremya translyacii adresa nezametno dlya programmy, poskol'ku vnutrennij BUP 80386 transliruet adres parallel'no s drugimi operaciyami processora (krome sluchaev, kogda komandy perehoda ili vyzova vremenno preryvayut sovmeshchennoe vypolnenie operacij). 3.3.2 Segmenty Segment yavlyaetsya edinicej logicheskogo prostranstva, predstavlyaemogo processorom zadache, t.e. logicheskoe adresnoe prostranstvo zadachi sostoit iz odnogo ili neskol'kih segmentov. Operacionnye sistemy sushchestvenno otlichayutsya drug ot druga po sposobu opredeleniya logicheskogo adresnogo prostranstva zadachi. Naprimer, sistema real'nogo vremeni s vetvleniyami mozhet opredelit' logicheskoe adresnoe prostranstvo kak edinoe celoe, sovmestno ispol'zuemoe vsemi zadachami i samoj operacionnoj sistemoj, drugimi slovami odin segment kollektivno ispol'zuetsya vsej sistemoj. V drugom krajnem sluchae sistema mozhet raspredelit' kazhduyu strukturu dannyh i proceduru po svoim segmentam, v sledstvii chego logicheskoe adresnoe prostranstvo zadachi predstanet v vide desyatkov ili soten adresnyh prostranstv, kazhdoe iz kotoryh budet sootvetstvovat' svoej strukture dannyh ili procedure. Mezhdu etimi krajnimi sluchayami okazyvaetsya universal'naya sistema s razdeleniem vremeni, v kotoroj zadachi vypolnyayutsya v otdel'nyh logicheskih adresnyh prostranstvah, i v kotoryh programmy zadach otdeleny ot ih dannyh, a prikladnye programmy i dannye otdeleny ot programmy i dannyh operacionnoj sistemy. Svojstvo segmentacii v processore 80386 dostatochno gibkoe, i mozhet obespechit' kazhdyj iz etih primerov, kak i lyubye drugie. Kak uzhe bylo pokazano v glave 2, komanda 80386 ssylaetsya na operand v pamyati s pomoshch'yu sostavnogo logicheskogo adresa, a.ab.oi%#. iz selektora segmenta i smeshcheniya vnutri segmenta. V principe 80386 transliruet logicheskij adres v linejnyj s pomoshch'yu selektora, ukazyvayushchego na deskriptor segmenta v tablice deskriptorov. Deskriptor soderzhit bazovyj adres segmenta v linejnom adresnom prostranstve, dobavlenie smeshcheniya k bazovomu adresu daet linejnyj adres operanda. Na praktike translyaciya logicheskogo adresa v linejnyj optimizirovana s pomoshch'yu neyavnogo ukazaniya na selektory i hraneniya deskriptorov v registrah. Poetomu obrashchenie k tablice deskriptorov proizvoditsya tol'ko dlya teh komand, kotorye zagruzhayut novye selektory v segmentnye registry (naprimer, vyzov procedury iz drugogo segmenta privodit k zamene selektora v registre CS). Hotya na praktike eto byvaet redko, tem ne menee udobnee predstavlyat' translyaciyu processorom logicheskogo adresa kak obrashchenie k deskriptoram v tablicah deskriptorov segmentov, poskol'ku otsyuda sleduet, chto imenno deskriptory v tablicah deskriptorov segmentov zadachi opredelyayut logicheskoe adresnoe prostranstvo zadachi. Bez deskriptora zadacha ne v sostoyanii sgenerirovat' linejnye adresa. Tablica deskriptorov segmentov predstavlyaet soboj massiv deskriptorov, na ris.3-4 dan logicheskij format deskriptora. Pole bazovogo adresa uzhe rassmatrivalos' vyshe. Pole predel'nogo razmera opredelyaet dlinu segmenta, 80386 ispol'zuet pole predel'nogo razmera dlya proverki pravil'nosti velichiny smeshcheniya v logicheskom adrese, a imenno, chto ono popadaet vnutr' segmenta. Atributy segmenta, v osnovnom, otnosyatsya k zashchite i budut rassmotreny dalee v etoj glave. ATRIBUTY PRIZNAK POSLEDNEGO OBRASHCHENIYA ---------------------+ PRAVA -----------------------------------------+ | TIP ----------------------------------------+ | | PRIVILEGIYA ------------------------------+ | | | PRIZNAK PRISUTSTVIYA ------------------+ | | | | | | | | | +--------------+ | | | | | | +------------------------------| | PREDELXNYJ RAZMER | +------------------------------| | BAZOVYJ ADRES | +------------------------------+ Kazhdaya zadacha mozhet imet' sistemnoe i individual'noe logicheskoe adresnoe prostranstvo. |ti prostranstva opisyvayutsya, sootvetstvenno global'noj tablicej deskriptorov (GDT) i lokal'noj tablicej deskriptorov (LTD). (V selektore imeetsya bit, svyazyvayushchij ego s toj ili inoj tablicej). |ti tablicy deskriptorov mogut soderzhat' maksimum 8192 deskriptora i sovmestno oni opredelyayut logicheskoe adresnoe prostranstvo zadachi. |to oznachaet, chto dlya togo, chtoby novyj segment mog adresovat'sya zadachej, operacionnaya sistema dolzhna vnesti novyj deskriptor etogo segmenta libo v GDT, libo v LDT zadachi. V sistemah s zashchitoj GDT i LDT mogut byt' sdelany privilegirovannymi strukturami tak, chto izmeneniya v nih smozhet proizvodit' tol'ko operacionnaya sistema. Operacionnaya sistema iz ee nazvaniya, global'naya tablica deskriptorov dostupna vsem zadacham, obychno operacionnye sistemy zanosyat deskriptory sistemnyh segmentov v GDT. Kodovyj segment (ili segmenty) operacionnoj sistemy yavlyaetsya horoshim primerom segmenta, kotoryj dolzhen byt' dostupnym vsem zadacham, i deskriptor kotorogo obychno nahoditsya v GDT. V protivopolozhnost' etomu kazhdaya ' $ g mozhet imet' svoyu lokal'nuyu tablicu deskriptorov. Processor podderzhivaet adres LDT tekushchej zadachi v svoem registre lokal'noj tablicy deskriptorov (LDTR), odnako on perezagruzhaet etot registr (tak zhe, kak on perezagruzhaet svoi obshchie i segmentnyj registry) novym znacheniem TSS pri smene zadach. Zadachi mogut delit' odni segmenty v sleduyushchih sluchayah (sm. ris.3-5): 1. Segment, deskriptor kotorogo nahoditsya v GDT, yavlyaetsya obshchim dlya vseh zadach. 2. Zadachi, imeyushchie obshchuyu LDT, imeyut i obshchie segmenty, opisyvaemye etoj LDT, takoj podhod dopustim v sluchae tesno vzaimodejstvuyushchih zadach. 3. Deskriptory v razlichnyh LDT mogut ukazyvat' na odin i tot zhe segment, takie deskriptory nazyvayutsya psevdoimenami. Ispol'zovanie psevdoimeni pozvolyaet zadacham imet' obshchim tol'ko odin segment, a ne vse segmenty, opredelennye tablicej deskriptorov. 3.3.3 Stranicy Nezavisimo ot togo, soderzhit li logicheskoe adresnoe prostranstvo zadachi odin ili mnogo segmentov, operacionnaya sistema mozhet razdelit' linejnoe adresnoe prostranstvo na stranicy. S tochki zreniya operacionnoj sistemy stranicy yavlyayutsya udobnymi elementami dlya raspredeleniya i pereraspredeleniya pamyati, poskol'ku oni vse imeyut odinakovyj razmer. Stranicy takzhe yavlyayutsya sredstvom zashchity chastej bol'shih segmentov i, chto osobenno vazhno, obespechivayut udobnyj sposob organizacii virtual'noj pamyati. Ukazannye primeneniya stranichnoj organizacii pamyati obsuzhdayutsya nizhe. Stranica v 80386 imeet dlinu 4k bajt. |tot razmer nahoditsya v soglasii s promyshlennoj tendenciej k uvelicheniyu dliny stranic i vedet k uvelicheniyu proizvoditel'nosti po dvum napravleniyam. Vo-pervyh, on obespechivaet horoshee otnoshenie pokazanij stranic v kesh pri dannom ob®eme kesh-pamyati, kotoraya mozhet byt' v nastoyashchee vremya real'no razmeshchena na kristalle, ishodya iz dostignutogo urovnya tehnologii. (Kesh-pamyat' 80386, raspolozhennaya na kristalle, opisyvaetsya kratko). Vo-vtoryh, 4k bajtov yavlyayutsya effektivnym razmerom bloka dlya diskovyh peredach. Bol'shinstvo operacionnyh sistem, rabotayushchih na mashinah s men'shej dlinoj stranicy, dolzhny gruppirovat' stranicy v "klastery", chtoby sokratit' kolichestvo diskovyh peredach. Operacionnaya sistema 80386 vklyuchaet stranichnyj mehanizm, ustanavlivaya bit PG v upravlyayushchem registre 0 pri pomoshchi privilegirovannoj komandy. Kogda stranichnyj mehanizm vklyuchen, processor transliruet linejnyj adres v fizicheskij adres, ispol'zuya stranichnye tablicy. Stranichnye tablicy yavlyayutsya chast'yu tablic deskriptorov segmentov. Tak zhe kak tablicy deskriptorov segmentov zadachi opredelyayut ee logicheskoe adresnoe prostranstvo, stranichnye tablicy zadachi opredelyayut ee linejnoe adresnoe prostranstvo. Analogichno supermini-|VM i bol'shim |VM stranichnye tablicy 80386 organizovany po principu dvuhurovnevoj ierarhii, kak pokazano na ris.3-6. Kazhdaya zadacha mozhet imet' spravochnik sistemnyh tablic. Sistemnyj registr CR3 processora 80386 (baza spravochnika sistemnyh tablic) ukazyvaet na spravochnik stranichnyh tablic rabotayushchej zadachi. Processor obnovlyaet registr CR3 pri kazhdom pereklyuchenii zadachi, poluchaya novyj adres zadachi iz TSS novoj zadachi. Spravochnik stranichnyh tablic imeet dlinu, ravnuyu odnoj stranice i soderzhit elementy ab` -(g-.) tablicy opisyvayut 1024 stranicy. Takim obrazom, kazhdaya stranichnaya tablica opisyvaet 4m bajta, a oglavlenie mozhet opisat' do 4g bajt - maksimal'noe adresnoe prostranstvo. Na ris.3-6 v funkcional'nyh oboznacheniyah pokazano kak 80386 transliruet linejnyj adres v fizicheskij adres, esli stranichnaya adresaciya vklyuchena. Processor ispol'zuet starshie 10 bit linejnogo adresa kak indeks v oglavlenii. Vybrannyj element oglavleniya soderzhit adres stranichnoj tablicy. Processor dobavlyaet srednie 10 bit linejnogo adresa k adresu stranichnoj tablicy, chtoby najti element stranichnoj tablicy, kotoryj opisyvaet neobhodimuyu stranicu. Dobavlyaya mladshie 12 bit linejnogo adresa k adresu nachala stranicy, processor poluchaet 32-bitnyj fizicheskij adres. Dlya togo, chtoby sokratit' nakladnye rashody, voznikshie ot poiska v stranichnyh tablicah, 80386 pomeshchaet spravochnuyu informaciyu o 32-h poslednih stranicah, ispol'zovavshihsya im, v special'nuyu bystruyu pamyat' (kesh), nahodyashchuyusya vnutri samogo mikroprocessora. |ta pamyat' nazyvaetsya perekodirovannym buferom prosmotra isklyuchenij (TLB). Tol'ko v tom sluchae, esli processor ne nahodit spravochnoj informacii dlya stranicy v TLB, on obrashchaetsya k spravochnikam i stranichnym tablicam, nahodyashchimsya v pamyati. Kak pravilo, 98-99% adresnyh ssylok popadayut v TLB, ne trebuya obrashchenij k osnovnoj p