Programos naudoja loginį adresavimą operandams adresuoti fizinėje adresų erdvėje. Procesorius automatiškai paverčia loginius adresus į fizinius, kurie vėliau išduodami į sistemos magistralę.

Kompiuterio architektūra išskiria fizinę adresų erdvę (PHA) ir loginę adresų erdvę (LAP). Fizinio adreso erdvė yra paprastas vienmatis baitų masyvas, kurį atminties aparatinė įranga pasiekia adresu, esančiu mikroprocesoriaus sistemos adresų magistralėje. loginė adresų erdvė organizuoja programuotojas pagal konkrečius poreikius. Loginių adresų vertimą į fizinius atlieka MMU atminties valdymo blokas.

Šiuolaikinių mikroprocesorių architektūroje LAP vaizduojamas kaip elementariųjų struktūrų rinkinys: baitai, segmentai ir puslapiai. Naudojami mikroprocesoriai šias parinktis organizacijose loginė adresų erdvė:

  • plokščias (linijinis) LAP: susideda iš baitų masyvo, kuris neturi apibrėžtos struktūros; adreso vertimas nereikalingas, nes loginis adresas yra toks pat kaip fizinis;
  • segmentuotas LAP: susideda iš segmentų - ištisinių atminties sričių, kuriose paprastai yra kintamas baitų skaičius; loginį adresą sudaro 2 dalys: segmento ID ir poslinkis segmente; adresų vertimą atlieka MMU segmentavimo padalinys;
  • puslapis PA: susideda iš puslapių – gretimų atminties sričių, kurių kiekvienoje yra fiksuotas skaičius baitų. Loginį adresą sudaro puslapio numeris (identifikatorius) ir poslinkis puslapyje; loginio adreso vertimą į fizinį adresą atlieka MMU ieškos įrenginys;
  • segmento puslapio LAP: apima segmentai, kurie savo ruožtu susideda iš puslapių; loginį adresą sudaro segmento identifikatorius ir poslinkis segmente. Segmentų atvaizdavimo priemonė MMU paverčia loginį adresą į puslapio numerį ir puslapio poslinkį, kuriuos puslapių atvaizdavimo priemonė MMU išverčia į fizinį adresą.

Mikroprocesorius gali veikti dviem režimais: tikruoju ir apsaugotu.

Kai dirbama realus režimas procesoriaus galimybės yra ribotos: adresuojamos atminties talpa yra 1 MB, nėra atminties ieškos, segmentai turi fiksuotą 216 baitų ilgį.

Šis režimas paprastai naudojamas pradiniame kompiuterio paleidimo etape, norint įeiti apsaugotas režimas.

AT realus režimas procesoriaus segmentų registruose yra 16 viršutinių pradžios fizinio adreso bitų segmentas. Perkelta 4 bitais į kairę parinkiklis suteikia 20 bitų bazinį segmento adresą. Fizinis adresas gaunamas pridedant šį adresą prie 16 bitų poslinkio reikšmės segmente, suformuotą pagal nurodytą operando adresavimo režimą arba išgautą iš EIP registro komandai (3.1 pav.). Gautu adresu informacija paimama iš atminties.



Ryžiai. 3.1. Fizinio adreso gavimo schema

Mikroprocesoriaus atminties adresavimo galimybės geriausiai realizuojamos dirbant apsaugotas režimas. Adresinės atminties kiekis padidinamas iki 4 GB, atsiranda puslapio adresavimo režimo galimybė. Segmentai gali būti kintamo ilgio nuo 1 baito iki 4 GB.

Bendra fizinio adreso formavimo mikroprocesoriaus, veikiančio in, schema apsaugotas režimas, parodyta pav. 3.2.

Kaip jau minėta, fizinio adreso formavimo pagrindas yra loginis adresas. Jį sudaro dvi dalys: parinkiklis ir kompensacijos segmente.

Rinkiklis yra mikroprocesoriaus segmentų registre ir leidžia rasti segmento aprašymą (deskriptorius) specialioje deskriptorių lentelėje. Deskriptoriai segmentai saugomi specialiose sistemos objektų globaliose (GDT) ir vietinėse (LDT) deskriptorių lentelėse. Deskriptorius vaidina labai svarbų vaidmenį mikroprocesoriaus funkcionavime, pradedant fizinio adreso formavimu su skirtinga adresų erdvės organizacija ir baigiant kelių programų veikimo režimo organizavimu. Todėl panagrinėkime jo struktūrą išsamiau.

Segmentai veikia mikroprocesorius apsaugotas režimas, pasižymi daugybe parametrų. Todėl bendrosios paskirties 32 bitų mikroprocesoriuose segmentų informacija saugoma

Ryžiai. 3.2. Fizinio adreso formavimas segmentinio puslapio atminties organizacijoje

vadinama speciali 8 baitų duomenų struktūra deskriptorius, o segmentų registrams priskiriama pagrindinė funkcija – deskriptoriaus vietos nustatymas.

Struktūra segmento deskriptorius parodyta pav. 3.3.

Ryžiai. 3.3. Segmento deskriptoriaus struktūra

Mes atsižvelgsime į struktūrą, o ne į deskriptoriaus formatą, nes pereinant nuo i286 mikroprocesoriaus prie 32 bitų MP, atskirų deskriptoriaus laukų išdėstymas prarado harmoniją ir iš dalies pradėjo atrodyti kaip sutvarkyti „lopai“. mechaniškai padidinti šių laukų bitų gylį.

32 bitų bazinio adreso laukas leidžia nurodyti pradinį segmento adresą bet kurioje 232 baitų (4 GB) adreso erdvėje.

Apriboti lauką(riba) nurodo segmento ilgį (tiksliau, segmento ilgį atėmus 1: jei šis laukas parašytas 0, tai reiškia, kad segmento ilgis yra 1) adresuojamais vienetais, t. maksimalus dydis segmentą sudaro 2 20 elementų.

Elemento vertė nustatoma pagal vieną iš deskriptoriaus bito G atributų (Granuliarumas – detalumas arba trupmeniškumas):

Taigi segmento dydis gali būti 1 baito tikslumas nuo 1 baito iki 1 Mbaito (kai G = 0). Jei puslapio dydis yra 2 12 = 4 KB, galite nustatyti segmento dydį į 4 GB (su G = l):

Kadangi IA-32 architektūroje segmentas gali prasidėti savavališkame adresų erdvės taške ir turėti savavališką ilgį, atmintyje esantys segmentai gali iš dalies arba visiškai persidengti.

Matmenų bitas(Numatytasis dydis) pagal numatytuosius nustatymus nustato instrukcijoje naudojamų adresų ir operandų ilgį:

savo nuožiūra. Žinoma, ši dalis nėra skirta eilinis vartotojas, ir už sistemos programuotojas, kuris jį naudoja, pavyzdžiui, šiukšlių surinkimo segmentams arba segmentams, kurių bazinių adresų keisti negalima. Šis bitas pasiekiamas tik toms programoms, kurios veikia aukščiausiu privilegijų lygiu. Mikroprocesorius jo nekeičia ir nenaudoja savo darbe.

Prieigos baitas apibrėžia pagrindines segmento tvarkymo taisykles.

Buvimo bitas P (dabartis) nurodo galimybę pasiekti segmentą. Operacinė sistema (OS) pažymi segmentą, perkeltą iš RAM į išorinę atmintį, kaip laikinai trūkstamą, nustatydama jo deskriptorių į P = 0. Kai P = 1, segmentas yra fizinėje atmintyje. Kai pasirenkamas deskriptorius, kurio P = 0 (segmento nėra RAM), bazinio adreso ir ribos laukai nepaisomi. Tai natūralu: pavyzdžiui, kaip galime kalbėti apie segmento bazinį adresą, jei paties segmento nėra laisvosios kreipties atmintis? Esant tokiai situacijai, procesorius atmeta visus vėlesnius bandymus naudoti deskriptorius komandose ir apibrėžtos deskriptorius Adreso erdvė tarsi „dingsta“.

Yra specialus segmento nebuvimo atvejis. Tuo pačiu metu operacinė sistema nukopijuoja prašomą segmentą iš disko į atmintį (galbūt ištrina kitą segmentą), įkelia jį į deskriptorius bazinį segmento adresą, nustato P = 1 ir iš naujo paleidžia komandą, kuri pasiekė segmentą, kurio nebuvo RAM.

Dviejų skaitmenų DPL (Descriptor Privilege Level) laukas nurodo vieną iš keturių galimų (nuo 0 iki 3) valdyti privilegijų lygius, kuris nustato, ar segmentą gali pasiekti tam tikros programos (0 lygis atitinka aukščiausią privilegijų lygį).

Reversinis bitas A (Prieiga) yra nustatyta kaip "1" bet kurioje prieigoje prie segmento. Naudoja operacinė sistema, kad būtų galima stebėti segmentus, kurie nebuvo pasiekti ilgiausiai.

Tegul, pavyzdžiui, kartą per sekundę operacinė sistema iš naujo nustato bitą A visų segmentų aprašuose. Jei po kurio laiko reikia į RAM įkelti naują segmentą, kuriam neužtenka vietos, operacinė sistema nustato „kandidatus“ išvalyti dalį RAM tarp tų segmentų aprašai kuris bitas A iki šio taško nebuvo nustatytas į „1“, tai yra, kurie neseniai nebuvo pasiekti.

Įveskite lauką prieigos baite apibrėžia segmento paskirtį ir naudojimą. Jei bitas S (sistema – prieigos baito 4 bitas) yra 1, tada tai deskriptorius apibūdina tikrą atminties segmentą. Jei S = 0, tai šis deskriptorius apibūdina specialų sistemos objektą, kuris negali būti atminties segmentas, pvz., skambučių šliuzas, naudojamas užduočių jungiklyje, arba vietinės LDT deskriptorių lentelės rankena. Bitų priskyrimas<3...0>prieigos baitas nustatomas pagal segmento tipą (3.4 pav.).

Ryžiai. 3.4. Prieigos baito tipo lauko formatas

Kodo segmente: C (atitinkantis) pavaldumo bitas apibrėžia papildomas tvarkymo taisykles, kurios užtikrina programos segmentų apsaugą. Jei C = 1 šis segmentas yra antraeilis kodo segmentas. Tokiu atveju iš jo tyčia atimama privilegijų apsauga. Toks įrankis patogus organizuoti, pavyzdžiui, paprogrames, kurios turėtų būti prieinamos visoms sistemoje vykdomoms užduotims. Kai C = 0, tai yra įprastas kodo segmentas; Skaitymo bitas R (Readable) nustato, ar segmentą galima pasiekti tik vykdyti, ar vykdyti ir nuskaityti, pavyzdžiui, konstantas kaip duomenis, naudojant segmento pakeitimo priešdėlį. Kai R = 0, leidžiama pasirinkti tik iš komandų segmento jų vykdymui. Kai R = 1, taip pat leidžiama skaityti duomenis iš segmento.

Rašyti į kodo segmentą draudžiama. Bet koks bandymas rašyti sukelia programinės įrangos pertraukimą.

Duomenų segmente:

  • ED (Expand Down) – plėtimosi krypties bitas. Kai ED = 1, šis segmentas yra krūvos segmentas, o poslinkis segmente turi būti didesnis nei segmento dydis. Kai ED = 0, tai yra tikrasis duomenų segmentas (pokrypis turi būti mažesnis arba lygus segmento dydžiui);
  • rašymo įgalinimo bitas W (rašomas). Kai W = 1, segmento modifikavimas leidžiamas. Kai W = 0, rašyti į segmentą draudžiama; kai bandote įrašyti į segmentą, įvyksta programinės įrangos pertraukimas.

Operando užklausos atveju segmento poslinkis yra suformuotas mikroprocesoriaus pagal komandoje nurodytą operandų adresavimo režimą. Poslinkis kodo segmente išgaunamas iš registras – instrukcijų rodyklė EIP.

Segmento pradžios adreso, gauto iš deskriptoriaus, ir sugeneruoto poslinkio segmente suma linijinis adresas(LA).

Jei mikroprocesoriuje naudojamas tik segmentinis adresų erdvės atvaizdavimas, tai gautas linijinis adresas taip pat yra fizinis.

Jei, be segmento, naudojamas atminties organizavimo paieškos mechanizmas, tada linijinis adresas vaizduojami kaip du laukai: didžiausiuose skaitmenyse yra skaičius virtualus puslapis, ir mažiausią poslinkį puslapyje. Virtualaus puslapio numerio konvertavimas į fizinį puslapio numerį atliekamas naudojant specialias sistemos lenteles: puslapio lentelės katalogas(KTS) ir puslapių lentelės(TS). Puslapių lentelės katalogo vietą atmintyje nustato sistemos registras CR3. Fizinis adresas apskaičiuojamas kaip fizinio puslapio adreso, gauto iš puslapio lentelės, ir puslapio poslinkio, gauto iš linijinio adreso, suma.

Dabar išsamiau apsvarstykime visus loginio adreso konvertavimo į fizinį etapus.

80386 mikroprocesorius yra visa 32 bitų ankstesnių 16 bitų 8086/80286 mikroprocesorių versija ir reiškia didelę pažangą procesoriaus architektūroje nuo 16 bitų iki 32 bitų architektūros. Kartu su bitų gylio padidėjimu taip pat yra daug patobulinimų ir papildomos funkcijos. 80386 mikroprocesorius suteikia: užduočių perjungimą, patobulintą atminties valdymą, virtualios atminties valdymą su puslapiu arba be jo, programinės įrangos apsaugą ir talpiosios atminties galimybes. Visi programinė įranga, parašytas senesniems 8086/8088 ir 80286 mikroprocesoriams, yra suderinamas iš apačios į viršų ir 80386 mikroprocesoriui. Procesoriaus adresuojamos atminties kiekis padidėjo nuo 1 MB (8086/8088 mikroprocesoriui) arba 16 MB (80286). mikroprocesorius) iki 4 GB, prieinama 80386 procesoriui apsaugotu režimu. 80386 mikroprocesorius gali pereiti iš apsaugoto režimo į realų režimą be sunkus atstatymas mikroprocesorius, kuris užima daug laiko ir buvo būtinas naudojant 80286 procesorių.

80486 mikroprocesorius yra patobulinta 80386 mikroprocesoriaus versija ir vykdo daugelį jo instrukcijų per vieną laikrodžio ciklą. 80486 mikroprocesorius taip pat turi vidinę 8 KB L1 talpyklą ir integruotą didelio našumo matematinį koprocesorių, kuris yra programinė įranga suderinama su 80387. Atminkite, kad 80486DX4 procesorius turi 16 KB talpyklą. 80486 mikroprocesorius, veikiantis tuo pačiu taktiniu dažniu kaip ir 80386 mikroprocesorius, yra 50% našesnis.

Mikroprocesorius 80386

Labiausiai paplitusios buvo dvi 80386 mikroprocesoriaus versijos: 80386DX procesorius ir supaprastintas 80386SX procesorius su išorine 16 bitų duomenų magistrale, nors viduje buvo naudojama 32 bitų magistralė.

80386DX procesorius buvo patalpintas į 132 kontaktų PGA (pin grid array) paketą. Daugiau nauja versija mikroprocesorius 80386 - 80386EX turi: AT magistralės valdymo bloką, dinaminės RAM regeneracijos valdymo bloką, programuojamą kristalų pasirinkimo bloką, pertraukimo valdiklį, DMA valdiklį, laikmačio bloką, nuoseklųjį duomenų perdavimo bloką, 26 adresų magistralės kontaktus, 16 duomenų autobuso kaiščiai.

80386DX mikroprocesorius, turintis 32 bitų duomenų magistralę ir 32 bitų adresų magistralę, gali apdoroti 4 GB fizinės atminties. 80386SX mikroprocesorius, kaip ir 80286 mikroprocesorius, adresuoja 16 MB atminties ir turi tik 24 bitų adresų magistralę ir 16 bitų duomenų magistralę. Mikroprocesorius 80386SX buvo sukurtas po 80386DX mikroprocesoriaus, kad būtų galima naudoti nereikalaujant pilna versija 32 bitų magistralė. 80386SX mikroprocesorius buvo naudojamas daugelyje asmeninius kompiuterius kurie vartojo tą patį sistemos plokštė toks pat kaip ir 80286 mikroprocesorius. Tuo metu, kai daugumai programų, įskaitant Windows, reikėjo mažiau nei 16 MB atminties, 80386SX procesorius buvo populiari ir pigesnė 80386 mikroprocesoriaus versija. Vėliau, nepaisant to, kad 80486 procesorius tapo vis labiau pigiau kuriant naujas skaičiavimo sistemas, bet kokiu atveju 80386 procesorius ilgam laikui išliko paklausa daugeliui programų. Pavyzdžiui, mikroprocesorius 80386EX, nors ir nebuvo naudojamas asmeniniuose kompiuteriuose, buvo labai populiarus įterptosiose sistemose.

80386 mikroprocesoriui, kaip ir ankstesnėms Intel mikroprocesorių šeimos versijoms, veikti reikia tik vieno +5,0 V maitinimo šaltinio. Vidutinis 80386 procesoriaus srovės suvartojimas yra: 20 MHz ir 450 mA procesoriui, veikiančiam 16 MHz dažniu. Be to, buvo procesoriaus versija su 33 MHz taktiniu dažniu, kurios srovės suvartojimas buvo 600 mA. 80386EX mikroprocesoriaus srovės suvartojimas yra 320 mA, kai jis veikia 33 MHz dažniu.

Procesorius tam tikrais darbo režimais paima srovę iki 1,0 A. Tai reiškia, kad maitinimo šaltinis ir maitinimo laidai turi atlaikyti šiuos srovės šuolius. Procesorius turi daugybę V CC ir V SS kaiščių, kurie skirti teisingas veikimas visi mikroprocesoriai turi būti prijungti prie šaltinio nuolatinė srovė+5,0 V (V CC) ir įžemintas (V SS). Kai kurie procesoriaus kaiščiai pažymėti kaip N/C (jokio ryšio) ir neturėtų būti niekur prijungti. Be paminėtų, buvo dar kelios 80386SX ir 80386EX mikroprocesorių versijos, kurių maitinimo įtampa buvo sumažinta +3,3 V. Šie procesoriai buvo naudojami nešiojamuose nešiojamuosiuose kompiuteriuose (nešiojamuosiuose kompiuteriuose) arba nešiojamieji kompiuteriai(nešiojamas kompiuteris).

Atminties sistema

Fizinės atminties sistema, kurią gali pasiekti 80386DX mikroprocesorius, yra 4 GB talpos. Be to, procesorius turi palaikymą Virtuali atmintis iki 64 TB susieta su fizine atmintimi naudojant MCU ir deskriptorius. Reikėtų pažymėti, kad virtualus adresavimas leidžia naudoti programą daugiau nei 4 GB esant keitimo metodui (sukeitimui) ir esant didelei standžiojo disko talpai. Ant pav. 6.4 paveiksle parodytas 80386DX mikroprocesoriaus fizinės atminties sistemos organizavimas.

Atmintis yra padalinta į keturis 8 bitų atminties bankus, kurių kiekvieno talpa yra iki 1 GB. Ši 32 bitų atminties struktūra leidžia pasiekti baitą, žodį arba dvigubą žodį. Mikroprocesorius 80386DX gali perduoti 32 bitų duomenis per vieną atminties ciklą, o 8088 mikroprocesoriui prireikė keturių ciklų, o 80286 ir 80386SX mikroprocesoriams – dviejų ciklų. Didelis duomenų plotis yra labai svarbus, ypač vieno tikslumo slankiojo kablelio skaičiams, kurie užima 32 bitus. Pakankamai pažangi programinė įranga duomenims saugoti naudoja slankiojo kablelio skaičius, todėl 32 bitų atminties vietos pagreitina programos vykdymą, jei ji rašoma turint omenyje atmintį.

Kiekvieno atminties baito adresas vaizduojamas šešioliktainiu žymėjimu, kaip ir ankstesnės versijos procesoriai. Skirtumas tas, kad 80386DX mikroprocesorius naudoja 32 bitų adresų magistralę su 00000000H-FFFFFFFFH diapazono atmintimi.

Du sistemos, sukurtos ant 8086, 80286 ir 80386SX mikroprocesorių, atminties bankai pasiekiami per BLE (A0 8086 ir 80286) ir OUT signalus. 80386DX mikroprocesorius pasiekia atminties bankus naudodamas keturis BE3-BE0 signalus. Toks atminties organizavimas leidžia pasiekti vieną baitą, kai mikroprocesorius suaktyvina vieną įjungimo signalą.

Kai įjungiami du įjungimo signalai, procesorius nukreipiamas į žodį. Daugeliu atvejų kreipiantis į žodį nurodomas 0 ir 1 bankas arba 2 ir 3 bankas. Atminties vieta 00000000H yra 0 banke, vieta 00000001H yra 1 banke, vieta 00000002H yra 2 banke, o vieta 00000003 yra 3 banke. 80386DX mikroprocesorius neturi adresų kaiščių A0 ir A1, nes jie iššifruojami viduje kaip baitų įjungimo signalai. Panašiai 16 bitų 80386SX mikroprocesorius neturi adreso kaiščio A0, nes jis dekoduojamas į BLE ir OUT signalus. 80386EX mikroprocesorius adresuoja duomenų žodį, esantį dviejuose 16 bitų atminties sistemos bankuose, kai BS8 signalas yra pasyvus (logikos aukštas), arba baitą 8 bitų sistemoje, kai šis signalas yra aktyvuotas.

Kontroliniai registrai

80386 mikroprocesorius turi kitus valdymo registrus, be EFLAGS vėliavėlės registro ir EIP instrukcijų rodyklės. Valdymo registras CR0 (valdymo registras) yra identiškas mašinos būsenos registrui MSW(mašinos būsenos žodis) 80286 mikroprocesoriaus, išskyrus tai, kad tai 32 bitų registras, o ne 16 bitų registras. Papildomi valdymo registrai yra CR1, CR2 ir CR3.

Ant pav. 6.5. rodoma mikroprocesoriaus 80386 valdymo registrų struktūra.

CR1 valdymo registras nenaudojamas 80386 mikroprocesoriuje, bet yra rezervuotas būsimiems gaminiams. Valdymo registras CR2 užfiksuoja tiesinį adresą, kuriuo buvo gautas paskutinis atminties puslapio triktis. Galiausiai valdymo registras CR3 nustato pagrindinį puslapio lentelės adresą. Apatiniuose 12 bitų nuo 0 iki 11 32 bitų registro yra nuliai ir jie sujungiami su likusiais registro bitais, siekiant nustatyti 4K puslapio lentelės pradžią.

CR0 registre yra keletas specialių valdymo bitų, kurie 80386 mikroprocesoriuje apibrėžiami taip:

PG (paging enable) bitas skirtas pasirinkti puslapio lentelės konvertavimą iš linijinių adresų į fizinius adresus, kai PG = 1. Atminties puslapių paieška leidžia linijiniam adresui priskirti bet kurią fizinę atminties vietą.

ET

ET (plėtimo tipo) bitas yra matematinių koprocesoriaus komandų palaikymo indikatorius. Jei ET yra 0, tada pasirenkamas 80287 koprocesorius, o jei ET = 1, tada pasirenkamas koprocesorius 80387. Šis bitas buvo pridėtas, kad atspindėtų faktą, kad sistemoje yra 80387 koprocesorius.

TS (task switch) bitas rodo, kad mikroprocesorius atliko užduočių perjungimą (pakeitus TR užduočių registro turinį saugiuoju režimu, nustatomas TS bitas). Jei nustatytas TS bitas, skaitmeninio koprocesoriaus instrukcija sukelia 7 tipo pertraukimą (koprocesoriaus nėra).

VALGYTI

EM (emuliuoti koprocesoriaus) bitas yra nustatytas taip, kad suaktyvintų 7 tipo pertraukimą, kai bandoma vykdyti kiekvieną ESC komandą, t. y. komandą, susijusią su koprocesoriumi. Tai dažnai naudojama koprocesoriaus programinei įrangai emuliuoti. Emuliacija sumažina sistemos sąnaudas, tačiau emuliuotos bendro procesoriaus instrukcijos dažnai užtrunka ilgiau, galbūt 100 kartų.

MP (monitoriaus koprocesoriaus) bitas nustatytas taip, kad suaktyvintų 7 tipo pertraukimą kiekvienoje laukimo komandoje, kol nustatytas TS bitas.

RE

PE (apsaugos įjungimo) bitas nustatytas taip, kad 80386 mikroprocesorius būtų apsaugotas. Jis taip pat gali būti nustatytas iš naujo, kad būtų pradėta gana ilga instrukcijų seka perjungti į tikrąjį režimą. 80286 mikroprocesoriuje šį bitą galima nustatyti tik. 80286 mikroprocesorius negali grįžti į realųjį režimą neatlikęs kietojo nustatymo iš naujo, o tai neleidžia jo naudoti daugumoje apsaugoto režimo sistemų.

Deskriptoriai ir selektoriai

Prieš aptardami ieškos bloką, pažvelkime į mikroprocesoriaus 80386 deskriptorius ir selektorius. Deskriptorius abiejuose mikroprocesoriuose tai yra aštuonių baitų seka, kurioje yra informacijos apie atminties segmentą ir jo vietą. Rinkiklis(segmentų registro turinys) naudojamas deskriptorių lentelėje nurodytam deskriptoriui identifikuoti. Pagrindinis skirtumas tarp 80286 ir 80386 mikroprocesorių yra tas, kad pastarasis turi du papildomus selektorius (FS ir GS), o du reikšmingiausi deskriptoriaus baitai yra apibrėžti 80386 mikroprocesoriui. Kitas skirtumas yra tas, kad 80386 mikroprocesoriaus aprašai naudoja 32 bitų segmento bazinio adreso ir 20 bitų segmento ribinį lauką, o ne 24 bitų bazinio adreso ir 16 bitų segmento ribinį lauką, esantį 80286 mikroprocesoriuje.

80286 mikroprocesorius kreipiasi į 16 MB atminties sritį su savo 24 bitų baziniu adresu ir turi 64 KB segmento ilgį su 16 bitų ribiniu lauku. 80386 mikroprocesorius naudoja 32 bitų bazinį adresą 4 GB atminties sričiai adresuoti, o segmento dydis nustatomas pagal 20 bitų ribinį lauką, kurį naudoja du Skirtingi keliai. Deskriptoriaus detalumo bitas G (granuliarumas) arba, kitaip, trupmeninis bitas, nustato segmento dydžio matavimo vienetą: jei G = 0, dydis nurodomas baitais, o jei G = 1, tai 4K puslapiais. Taigi, segmento dydis su 20 bitų ribiniu lauku gali būti atitinkamai 1 MB arba 4 GB.

G detalumo bitas atsirado deskriptoriuje, pradedant mikroprocesoriumi 80386. Jei G bitas = 0, tada ribos lauke saugoma reikšmė tiesiogiai traktuojama kaip segmento dydžio riba, leidžianti pasiekti bet kurį 1 MB 00000H-FFFFG segmentą. segmentas. Jei G bitas = 1, tada ribos lauke saugomas skaičius interpretuojamas kaip 00000XXXH-FFFFFXXXH, kur XXX yra bet kokia reikšmė tarp 000H ir FFFH. Tai suteikia prieigą prie segmento dydžio nuo 0 baitų iki 4 GB 4 KB dalimis. Ribinė vertė 00001H rodo, kad sektoriaus dydžio riba yra 4 KB, kai G bitas yra 1, arba 1 baitas, kai G bitas yra 0. Pavyzdys būtų segmentas, prasidedantis fiziniu adresu 10000000H. Jei ribinė vertė yra 00001H ir G bitas = 0, šis segmentas prasideda nuo 10000000H ir baigiasi ties 10000001H. Jei G bitas = 1 su ta pačia ribine verte (00001H), segmentas prasideda 100000000H vietoje ir baigiasi 10001FFFH.

Ant pav. 6.6 paveiksle parodyta, kaip 80386 mikroprocesorius adresuoja atminties segmentą apsaugotu režimu, naudodamas selektorių ir deskriptorių. Rodomas adresavimas yra toks pat, kaip 80286 mikroprocesorius adresuoja segmentą. Skirtumas yra 80386 mikroprocesoriaus prieinamo segmento dydis. Viršutiniai 13 parinkiklio bitų (bitai 15-3) naudojami deskriptoriui pasirinkti iš deskriptorių lentelės. Lentelės indikatoriaus bitas TI (lentelės indikatorius) (2 parinkiklio bitas) nurodo deskriptorių lentelės tipą: vietinis, jei TI bitas = 1, arba globalus, jei TI bitas = 0. Apatiniai du RPL bitai (reikalaujamas privilegijų lygis) ( parinkiklio bitai 1-0) nustato prašomą privilegijų lygį norint pasiekti sektorių.

Kadangi parinkiklis naudoja 13 bitų kodą, kad pasiektų deskriptorių, kiekvienoje lentelėje (vietinėje arba visuotinėje) yra ne daugiau kaip 8192 deskriptoriai. Kadangi galimas 80386 mikroprocesoriaus segmento dydis siekia 4 GB, naudojant dvi deskriptorių lenteles vienu metu galima pasiekti 16 384 segmentus. Visa tai leidžia 80386 mikroprocesoriui palaikyti virtualią atmintį iki 64 TB (1 TB = 1024 MB). Žinoma, iš tikrųjų gali egzistuoti tik iki 4 GB talpos atminties sistema. Jei programai tam tikru momentu reikia daugiau nei 4 GB atminties, tuomet reikiamus duomenis į atminties sistemą galima perpumpuoti iš disko įrenginio ar kito didelio saugojimo įrenginio.

80386 mikroprocesorius naudoja deskriptorių lenteles globaliems ( GDT) ir vietinis (LDT) aprašai. Trečiąją deskriptorių lentelę naudoja pertraukų deskriptoriai ( GAU) arba vožtuvai(vartai). Pirmieji šeši 80386 mikroprocesoriaus deskriptoriaus baitai yra tokie patys kaip ir 80286 mikroprocesoriaus, o tai užtikrina programinės įrangos suderinamumą su juo iš apačios į viršų. Didieji du 80286 mikroprocesoriaus deskriptoriaus baitai buvo rezervuoti ir juose buvo 00H reikšmė. Mikroprocesorių 80286 ir 80386 aprašai parodyti fig. 6.7.

80386 mikroprocesoriaus deskriptoriuje yra 32 bitų bazinis adresas, 20 bitų segmento ribos laukas ir smulkumo bitas G, kuris nustato segmento limito daugiklį (1 arba 4K karto) arba, kitu atveju, kokiais vienetais nustatoma riba: baitų (G = 0) arba po 4K puslapius (G = 1). 80386 mikroprocesoriaus deskriptoriaus laukų paskirtis yra tokia:

Pagrindas (B31-B0)

Lauke Bazė nurodomas bazinis (pradžios) 32 bitų segmento adresas fizinėje 80386 mikroprocesoriaus 4 GB adresų erdvėje.

Riba (L19-L0)

Lauke Limit nurodomas segmento limitas baitais, jei detalumo bitas G = 0 arba 4K puslapiuose, jei G = 1. Tai leidžia bet kokį segmento dydį nuo 1 baito iki 1 MB, jei G bitas = 0 arba nuo 4 KB iki 1 GB, jei G bitas = 1. Prisiminkite, kad riba nurodo paskutinį baitą segmentas.

Prieigos teisės

Lauke Prieigos teisės apibrėžiamas privilegijų lygis ir kita su segmentu susijusi informacija. Šis baitas skiriasi skirtingi tipai deskriptorių ir yra nurodyta kiekvienam iš jų.

Detalumo bitas G (granuliarumas) parenka segmento ribos lauko daugiklį 1 arba 4K. Jei G bitas = 0, tada daugiklis yra 1, jei G bitas = 0, tada daugiklis yra 4K.

D (numatytasis dydis) bitas nustato numatytąjį naudojamų operandų ir registrų dydį. Jei D = 0, tada 16 bitų, kaip ir 80286 mikroprocesoriuje; jei D = 1, tai 32 bitai, kaip mikroprocesoriuje 80386. Šis bitas nustato, ar reikia priešdėlių 32 bitų duomenų ir indeksų registrams. Jei D = 0, norint pasiekti 32 bitų registrus ir naudoti 32 bitų rodykles, reikalingas priešdėlis. Jei D = 1, tada norint pasiekti 16 bitų registrus ir 16 bitų rodykles, būtinas priešdėlis. Atributai use16 ir use32, naudojami su segmento direktyva asamblėjos kalba, valdo D bito nustatymą. realus režimas operacijoje visada daroma prielaida, kad registrai yra 16 bitų, todėl bet kokia 32 bitų registro arba rodyklės nurodyta instrukcija turi būti su priešdėliu.

AVL (galimas) bitas yra prieinamas Operacinė sistema ir gali būti naudojamas pagal poreikį. Procesorius jo netaiko ir neanalizuoja ir yra skirtas naudoti taikomųjų programų programoms.

Yra dviejų tipų deskriptoriai: kodo ir duomenų segmento aprašas ir sistemos segmento aprašas. Pirmasis deskriptorius apibrėžia duomenų, dėklo ir kodo segmentus. Sistemos segmento aprašas skirtas informacijai apie sistemos lenteles, užduotis ir vartus saugoti.

Superkompiuteriai visada buvo laikomi ypatinga skaičiavimo technologijų klase. Kadangi tokios mašinos yra skirtos neįprastoms problemoms spręsti, tai neįprasti ir biudžetai, o tai savo ruožtu leido pajusti begalines galimybes: atrodė, kad problema visada tik piniguose ir, jei įpili dar dešimtis ar du milijonus, produktyvumą galima didinti be galo. Vis dėlto tai, kas nutiko pastaraisiais mėnesiais ir metais ir išsakyta naujame 500 galingiausių planetos bičių sąraše – TOP500.org, kuris jums žinomas – suteikia pagrindo tvirtinti, kad „begalybė“ baigėsi. Superkompiuteriai yra pirmieji šiuolaikiniai kompiuterių sistemos pakliuvo į fizinę puslaidininkinės elektronikos galimybių ribą – ir jiems, visų pirma, dabar reikia rasti išeitį iš aklavietės. nauja technologija kompiuterija.

Formalus tokio plataus masto pareiškimo užuomina buvo keistas modelis, kurį pastebėjo pirmiau pateikto sąrašo sudarytojai. Top 500 atnaujinami du kartus per metus ir aukščiausios pozicijos jo Naujausia versija, paskelbtas praėjusią savaitę, pokyčių beveik nebuvo (į dešimtuką pateko tik vienas naujas narys, o bendras visų penkių šimtų mašinų našumas šiek tiek padidėjo – nuo ​​0,223 iki 0,250 eksaflopų). Tačiau įvyko kokybinis bendras pokytis: sąrašo „svorio centras“ pasislinko į jo viršų arba, paprasčiau tariant, pagrindinė skaičiavimo galia dabar sutelkta santykinai mažoje (istoriškai – rekordinėje) lūžimo) greičiausių mašinų skaičius. Tai atrodo taip: pusę sukauptos Top 450 galios suteikia tik 17 pirmųjų sąrašo kompiuterių. Ši tendencija nepasirodė vakar, tačiau per pastaruosius šešerius metus ji taip susiformavo, kad reikia pagalvoti.

Nėra vieno galutinio paaiškinimo. Vienas iš patraukliausių yra finansinis: pastaraisiais metais superkompiuteriai tapo daug brangesni (apie keturis kartus, palyginti, pavyzdžiui, su nulio vidurio įkandimų skaičiumi), todėl šiuo metu jais gali naudotis tik palyginti nedaug vyriausybių. agentūros ir didelės įmonės. Be to, naujų, ne per daug galingų mašinų dizaineriai ir pirkėjai nesiekia būti įtraukti į reitingą, kad nesugadintų savo įvaizdžio. Ir taip išeina, kad kuo toliau, tuo ryškesnė tendencija pasireiškia: stiprieji stiprėja, silpnieji netiesiškai greitai atsilieka.

Svarbi išvada: superkompiuteriai nenustojo būti reikalingi, tik tapo mažiau prieinami. Bet kaip su neblėstančiu Moore'o įstatymu? Ar tai neturėtų kompensuoti kainų padidėjimo sugriežtinant pakuotę ir dėl to didesnį našumą? Čia ir iškyla pagrindinis įtarimas. Panašu, kad pasiekėme finišą, kur Moore'o dėsnis, nors ir vis dar veikia, daugumai žaidėjų jau yra per brangus.

Mokslininkai rezultatą formuluoja taip: nesant proveržio technologijų, kurios vienu šuoliu užtikrintų anksčiau nepasiekiamą skaičiavimo greitį, superkompiuterių pramonė yra priversta judėti plačiu keliu – kvailai didinant procesorių skaičių savo mašinose. Ir dar blogiau: kadangi šis būdas nepatenkina vartotojų apetito (o biterių skaičius tradiciškai yra ne tik duomenų apdorojimo įrankis, bet ir būdas sukurti korporatyvinę bei nacionalinę autoritetą), dizaineriai rėmėsi grafine greitintuvai, kurie, tarkime, tinkami ne bet kokiems uždaviniams spręsti. Superkompiuterių, kurie aktyviai naudoja GPU, skaičius per pastaruosius penkerius metus išaugo eilės tvarka!

Ir čia labai patogu prisiminti artėjantį garsiojo Linpack testo pakeitimą, kuris nuo pat Top 500 paskelbimo pradžios (prieš dvidešimt metų) buvo pagrindinis superkompiuterių sistemų veikimo matas. Siūloma jį pakeisti naujai sukurtu HPCG (High Performance Conjugate Gradient) testu. Priežastis: Linpack – parašyta „Fortran“ dar 1979 m. – rodo, kad tikrasis matuojamų sistemų veikimas yra nepatenkinamas ir neatitikimas didėja.

Apskritai, net jų bendras bendraautoris Jackas Dongarra negali aiškiai paaiškinti skirtumo tarp Linpack ir HPCG. Tačiau labai supaprastinus skirtumą galima sumažinti iki šių dalykų: „Linpack“ daugiausia vertina superkompiuterio gebėjimą atlikti grynus skaičiavimus (tai GPU greitintuvai atlieka gerai), o HPCG taip pat atsižvelgia į vidinės komunikacijos našumą, o tai svarbu sprendžiant praktines mokslines ir technines problemas (ty, pavyzdžiui, dažną netaisyklingą prieigą prie atminties).

Jei HPCG nepakeis, jis papildys „Linpack“ po kelerių metų „įsijungimo“ (tiems, kam įdomu, šaltinio kodai yra prieinami pagal BSD licenciją „Sandia Labs“ svetainėje). O tai gali lemti reikšmingą viso Top 500 sąrašo pertvarkymą, į jį sugrįžti mažuosius dalyvius, kurie pradės gauti aukštesnius, teisingesnius įvertinimus ir net koreguoti superkompiuterių architektūrą, kai jie nebebus optimizuoti Linpack. Nors, žinoma, pastarojo ypač tikėtis nereikėtų – juk vis dar nėra proveržio skaičiavimo technologijos!

Ir be proveržių Numberbiterių pasaulyje viešpatavo nuobodulys. Kaip sukurti galingesnę mašiną? Įdėkite daugiau procesorių - ir todėl suraskite Daugiau pinigų. Tačiau realybė yra tokia, kad praktinių užduočių lygiagretinimas virš tam tikro (ir jau pasiekto) lygio neatneša greičio padidėjimo ir net labiausiai galingi superkompiuteriai jau yra tokie brangūs, kad jų statybą ir eksploatavimą gali sau leisti vienetai, kaip aptarta aukščiau. Dėl to superkompiuterio srautas išdžiūsta. Tai yra technologinės eros pabaiga, puslaidininkių, kaip mes juos žinojome pastaruosius penkiasdešimt metų, pabaiga. Ir kol nebus technologijos, galinčios pakelti kompiuterio našumą į naują lygį, mes sustingsime, pasitenkinsime kelių procentų metiniu prieaugiu.

Kas gali duoti tokį proveržį? Vakarų spauda spokso į nanovamzdelius, iš kurių Stanfordo vaikinai sugebėjo sukonstruoti vienmačius poliarinius tranzistorius (CNFET), išmokti gaminti garantuoto funkcionalumo mikroschemas (pagrindinė problema: vis dar sunku išvengti didelis skaičius netinkamai išdėstyti nanovamzdeliai) ir netgi sukurti su MIPS suderinamą kompiuterį, ką tik praėjusią savaitę pademonstravo ACM / IEEE SC13 superkompiuterių konferencija („Computerra“ rašė apie šį projektą: žr. „“). Ateityje ši technologija gali užtikrinti 13 kartų didesnį našumą, tenkantį energijos suvartojimo vienetui, palyginti su puslaidininkiniais lustais. Įdomu, ar čia kas nors užsiima nanovamzdeliais?

Daug entuziastų Kompiuterinė technologija jie su patirtimi prisimena tuos laikus, kai procesorių dažniai buvo matuojami megahercais, o gamintojai (tai yra „Intel“ ir „AMD“) šiuo rodikliu bandė vienas kitą aplenkti. Tada procesorių energijos suvartojimo ir šilumos išsklaidymo lygis išaugo tiek, kad tęsti šias lenktynes ​​tapo nebeįmanoma. Pastaraisiais metais jie pradėjo didinti procesoriaus branduolių skaičių, tačiau dėl to buvo pasiekta riba, kai šis augimas tapo nuostolingas. Dabar didžiausios galios vienam vatui gavimas tapo pagrindiniu našumo veiksniu.

Visi šie pokyčiai neįvyko, nes kūrėjai susidūrė su fizinėmis esamų procesorių tolesnio tobulinimo ribomis. Veikiau našumą ribojo tai, kad pažanga kai kuriose srityse – visų pirma energijos vartojimo efektyvumo – buvo lėtesnė nei kitose srityse, pvz., plečiamos funkcijos ir instrukcijų rinkiniai. Tačiau ar gali būti, kad dabar fizinė procesorių riba ir jų skaičiavimo galia jau arti? Igoris Markovas iš Mičigano universiteto nagrinėjo šią problemą straipsnyje žurnale Nature.

Atsižvelgiant į kliūtis

Markovas pažymi, kad, remdamiesi grynai fiziniais apribojimais, kai kurie mokslininkai apskaičiavo, kad Moore'o dėsnis galios dar šimtą metų. Kita vertus, Tarptautinė puslaidininkių technologijų gairių (ITRS) grupė suteikia jai porą dešimtmečių gyvavimo. Tačiau ITRS prognozėmis galima suabejoti: ši grupė Core2 lustų laikais numatė procesorius, kurių dažnis buvo 10 GHz. Šio neatitikimo priežastis yra ta, kad daugelis rimtų fizinių apribojimų niekada nebuvo naudojami.

Pavyzdžiui, kraštutinė funkcinio vieneto dydžio riba yra vienas atomas, o tai yra didžiausia fizinė riba. Tačiau dar gerokai anksčiau nei galima pasiekti šią ribą, fizika apriboja galimybę tiksliai valdyti elektronų srautą. Kitaip tariant, grandinės gali būti tokios plonos kaip vienas atomas, tačiau jų elgesys taps nepatikimas daug greičiau. Didžioji dalis „Intel“ nuolatinio darbo pereinant prie plonesnių gamybos procesų (mažesnių tranzistorių) yra sugalvoti, kaip sukurti struktūrą. atskiri komponentai kad jie galėtų toliau veikti taip, kaip tikėtasi.

Markovo argumento esmę galima suprasti maždaug taip: nors yra griežtos fizinės ribos, jos dažnai yra nereikšmingos šiuolaikinių puslaidininkių pažangos problemoms spręsti. Vietoj to susiduriame su švelnesniais apribojimais, kuriuos dažnai galima apeiti. „Kai ateina momentas tam tikram progresą stabdančiam apribojimui, jo prigimties supratimas yra raktas į jį įveikti“, – rašo jis. „Kai kurių apribojimų galima tiesiog nepaisyti, o kiti lieka hipotetiniais ir pagrįsti tik empiriniais duomenimis; juos sunku įdiegti aukštas laipsnis tikrumas“.

Todėl tai, kas atrodo kaip vystymosi kliūtys, dažnai įveikiama derinant kūrybišką mąstymą ir patobulintas technologijas. Markovo pavyzdys yra difrakcijos riba. Iš pradžių buvo manoma, kad argono ir fluoro lazeriai negraužtų plonesnių nei 65 nanometrų struktūrų. Tačiau su subbangos ilgio difrakcija šiuo metu dirbame su 14 nm struktūromis, naudodami tą patį lazerį.

Kur yra šiuolaikinės ribos?

Markovas atkreipia dėmesį į dvi problemas, kurias laiko didžiausiomis ribomis: energija ir komunikacijos. Energijos suvartojimo problema kyla dėl to, kad šiuolaikinių grandinių sunaudojamos energijos kiekis nemažėja proporcingai mažėjant jų fiziniam dydžiui. Pagrindinis to rezultatas: pastangos blokuoti lusto dalis, kai jos nenaudojamos. Tačiau esant dabartiniam vystymosi tempui šis požiūris bet kuriuo metu didžioji lusto dalis yra neaktyvi, todėl terminas „tamsusis silicis“.

Energijos suvartojimas yra proporcingas lusto darbinei įtampai, o tranzistoriai tiesiog negali veikti žemiau 200 mV. Dabar jų įtampa 5 kartus didesnė, tad yra kur mažinti. Tačiau pažanga mažinant darbinę įtampą sulėtėjo, todėl galime vėl pasiekti technologines ribas prieš fizines.

Energijos naudojimo problema yra susijusi su komunikacijos problema: didžioji dalis fizinio lusto tūrio ir didžioji jo suvartojamos energijos dalis išleidžiama sąveikai tarp skirtingų jo blokų arba likusio kompiuterio. Čia mes tikrai pasiekiame fizines ribas. Net jei luste esantys signalai sklistų šviesos greičiu, lustas, kurio dažnis didesnis nei 5 GHz, negalėtų perduoti informacijos iš vienos lusto pusės į kitą. Geriausia, ką galime padaryti naudodami šiuolaikines technologijas, tai pabandyti sukurti lustus, kuriuose blokai, kurie dažnai bendrauja vienas su kitu, yra fiziškai arti vienas kito. Trečiojo matmens (ty trimačių grandinių) įtraukimas į lygtį galėtų padėti, bet tik nežymiai.

Kas toliau?

Markovas nėra itin optimistiškai nusiteikęs dėl būsimų pokyčių. Artimiausiu metu jis tikisi, kad anglies nanovamzdelių naudojimas laidams ir optinėms jungtims ryšiams ir toliau padės mums išvengti fizinių apribojimų. Tačiau jis pažymi, kad abi šios technologijos turi savų apribojimų. Anglies nanovamzdeliai gali būti maži, iki nanometro skersmens, tačiau jie taip pat turi dydžio ribą. O fotonų, jei jie būtų naudojami ryšiui, reikėtų aparatūra ir energija.

Daugelis savo viltis sieja su kvantiniais kompiuteriais, tačiau Markovas nėra vienas iš jų gerbėjų. “ kvantiniai kompiuteriai, tiek skaitmeninės, tiek analoginės, yra perspektyvios tik nišinėse programose ir nepasiūlo didelio našumo bendrajame skaičiavime, nes negali greitai atlikti rūšiavimo ir kitų specifinių užduočių“, – sako jis. Problema taip pat ta, kad ši įranga geriausiai veikia esant temperatūrai, artimai absoliučiam nuliui, o kambario temperatūroje našumas yra itin žemas.

Tačiau visi skaičiavimai tam tikru mastu remiasi kvantiniais efektais, ir Markovas mano, kad iš kvantinių sistemų galima pasimokyti ko nors naudingo. „Atskiri kvantiniai įrenginiai artėja prie perjungimo energijos ribų, o ne kvantiniai įrenginiai atsilieka tam tikru mastu. Akivaizdu, kad net ir nedidelis kvantinių sistemų efektyvumo laipsnis gali žymiai padidinti energijos suvartojimą visame luste.

Kita Markovo fizinė riba: informacijos ištrynimas turi termodinamines išlaidas, kurių negalima išvengti – skaičiavimai visada sunaudoja energiją. Viena iš idėjų, kaip išvengti šios ribos, yra „reversable skaičiavimas“, kai komponentai grąžinami pradinė būsena po skaičiavimo. Šis metodas bent jau teoriškai gali leisti susigrąžinti dalį sunaudotos energijos.

Ši idėja nėra visiškai teorinė. Markovas cituoja darbą naudojant superlaidžias grandines (kurias jis vadina „gana egzotiškomis“), kad būtų užtikrintas grįžtamasis elgesys ir energijos išsklaidymas žemiau termodinaminės ribos. Žinoma, čia naudojami tik 4 mikrokelvinai, todėl daugiau energijos sunaudojama grandinių funkcionalumui tikrinti, o ne jų realiam veikimui.

Už fizikos ribų

Nors fizika ir medžiagų mokslas nustato daug apribojimų aparatinei įrangai, matematika riboja, ką galime su jais daryti. Ir nepaisant tikslaus mokslo reputacijos, matematiniai apribojimai yra daug neaiškesni nei fiziniai. Pavyzdžiui, nepaisant daugelio metų pastangų, vis dar nėra atsakymo į sudėtingumo klasių P ir NP lygybę. Ir nors galime įrodyti, kad kai kurie algoritmai yra efektyviausi bendriesiems atvejams, taip pat nesunku rasti problemų, kuriose alternatyvūs skaičiavimo metodai veikia geriau.

Didžiausia problema, kurią Markovas mato čia, yra kova siekiant išgauti daugiau paralelizmo iš kodo. Netgi pigūs išmanieji telefonai dabar dirba kelių branduolių procesoriai, tačiau kol kas jų naudojimas nėra optimalus.

Apskritai atrodo, kad pagrindinis apribojimas yra žmogaus protas. Nors Markovas nemato fantastiškų naujų technologijų atsiradimo, jis yra optimistiškai nusiteikęs, kad esamos kliūtys bus pašalintos arba apeinamas pažanga kitose srityse.

Iš redaktoriaus. Nuolatiniai mūsų skaitytojai žino, kad retkarčiais mūsų laikraštyje pasirodo žymiausių, klasikinių straipsnių ir kompiuterių mokslo srities kūrinių perspausdinimai. „Fizinės skaičiavimo ribos“ norėjome spausdinti ilgą laiką... apie penkiolika metų. Tačiau šis nuostabus straipsnis kažkaip nerado vietos pagal kitų medžiagų sudėtį, laikraštyje atrodytų pernelyg keistai, spausdinamas „tiesiog taip“. Ir tada tokia laimė! Straipsnis buvo paminėtas (visiškai nusipelnęs) paskutinėje mūsų išplėstinio mokymo kurso paskaitoje, kaip vienas iš nedaugelio informacijos šaltinių šia tema rusų kalba. Žinoma, negalėjome praleisti progos. Tikimės, kad jums patiks tyrinėti šią nuostabią populiarią medžiagą. Juk net 24 (!) metai, praėję nuo jo išleidimo, nepadarė jo „paseno“, nors, žinoma, technologijos į priekį žengė parsekais! Tačiau pagrindiniai įstatymai yra per griežti net technologijoms!

Kokie fiziniai veiksniai riboja skaičiavimo procesą? Ar yra ribinė minimali energija, reikalinga, pavyzdžiui, norint atlikti vieną loginį žingsnį? Matyt, tokio minimumo nėra, tačiau yra ir kitų klausimų, kurie vis dar lieka atviri.

Skaičiavimas, neatsižvelgiant į tai, ar jis atliktas Elektroniniai prietaisai, įprastomis sąskaitomis ar biologine sistema, tokia kaip smegenys, yra fizinis procesas. Jai taikomos tos pačios sąvokos kaip ir kitiems fiziniams procesams. Kiek energijos reikia tam tikram skaičiavimui atlikti? Kiek tai užtruks? Kokio dydžio turėtų būti skaičiavimo įrenginys? Kitaip tariant, kokios yra fizinės skaičiavimo proceso ribos?

Žinoma, užduoti šiuos klausimus yra daug lengviau nei į juos atsakyti. Mus dominantys apribojimai kažkodėl labai toli nuo tikrųjų apribojimų, su kuriais susiduriame. moderni technologija. Todėl negalime teigti, kad mūsų tyrimai padeda inžinieriui ar technologui jo darbe. Šie tyrimai yra labiau teorinio pobūdžio. Mūsų tikslas – nustatyti bendruosius įstatymus, reglamentuojančius visų rūšių informacijos apdorojimą, neatsižvelgiant į šio apdorojimo priemones ir būdus. Bet kokios mūsų nustatytos ribos turi būti pagrįstos tik pagrindiniais fiziniais principais, o ne šiuo metu naudojamomis technologijomis.

Šis esminių apribojimų ieškojimas jau turėjo precedentų. Ketvirtajame dešimtmetyje K. Šenonas, tuo metu dirbęs „Bell Telephone Laboratories“ darbuotojas, nustatė, kad esama triukšmo galioja informacijos, kuri gali būti perduodama ryšio kanalu, kiekiui. Šie apribojimai taikomi neatsižvelgiant į tai, kaip pranešimas užkoduotas. Šenono darbas pažymėjo šiuolaikinės informacijos teorijos gimimą. Dar anksčiau, praėjusio amžiaus viduryje ir pabaigoje, fizikai, bandydami nustatyti esminius garo variklio efektyvumo apribojimus, sukūrė mokslą, vadinamą „termodinamika“. Apie 1960 metus Landaueris (vienas iš šio straipsnio autorių) kartu su J. Swansonu, dirbdamas IBM, bandė pritaikyti tokią analizę skaičiavimo procese. Nuo aštuntojo dešimtmečio vidurio prie šių tyrimų pradėjo prisijungti vis daugiau mokslininkų grupių iš kitų organizacijų.

Analizuodami fizinius skaičiavimo suvaržymus, terminą „informacija“ vartojame ta prasme, kokia ji apibrėžta informacijos teorijoje. Pagal šį apibrėžimą informacija dingsta, kai dvi anksčiau skirtingos situacijos tampa neatskiriamos. AT fizinės sistemos, pasižymintis trinties jėgų nebuvimu, informacija negali būti sunaikinta, nes sunaikinus informaciją, tam tikras energijos kiekis turi pereiti į šilumą. Kaip pavyzdį apsvarstykite dvi lengvai atskiriamas fizines situacijas. Viename iš jų 1 m aukštyje nuo grindų atremtas guminis rutulys, kitame – 2 m aukštyje.Paleidus kamuolį jis kris ir atšoks nuo grindų. Nesant trinties ir su sąlyga, kad rutulys yra visiškai elastingas, stebėtojas visada galės pasakyti, kokia buvo pradinė rutulio būsena (šiuo atveju, kokiame aukštyje jis buvo pradiniu laiko momentu), nes kamuolys, nukritęs iš 2 m aukščio, atšoks aukščiau nei nukritęs iš 1 m aukščio.

Tačiau, esant trinties jėgoms, kiekvieną kartą, kai kamuolys atšoks nuo grindų, dalis energijos bus išsklaidyta, o galiausiai kamuolys nustos atšokti ir liks ant grindų. Tada bus neįmanoma nustatyti, kokia buvo pradinė kamuoliuko būsena: iš 2 m aukščio nukritęs rutulys bus visiškai identiškas rutuliui, nukritusiam iš 1 m aukščio. Informacija bus prarasta dėl energijos išsklaidymo.

Įprasti skaičiavimo įrenginiai, abakas ir mikroprocesorius veikimo metu išsklaido energiją. Energijos išsklaidymas mikroprocesoriaus loginiais vartais atsiranda dėl informacijos išnykimo. Yra ir kitų priežasčių: mikroprocesorinės elektroninės grandinės sunaudoja energiją net tada, kai tiesiog kaupia informaciją jos neapdorodamos. Sąskaitos yra išsklaidytos dėl trinties jėgų, kurių negalima pašalinti: nesant statinės trinties, „kaulai“ pakeistų padėtį dėl atsitiktinio molekulių šiluminio judėjimo. Statinė trintis reiškia tam tikrą minimalią jėgą, kuri nepriklauso nuo „kaulų“ greičio, todėl abakas reikalauja minimalios energijos, kad ir kaip lėtai jie dirbtų.

Pateiksime dar vieną informacijos išnykimo pavyzdį. Išraiškoje „2 + 2“ yra daugiau informacijos nei išraiškoje „= 4“. Jei žinosime tik tai, kad skaičius 4 buvo gautas sudėjus du skaičius, tada negalėsime nustatyti, kurie skaičiai buvo sudėti: 1 + 3, 2 + 2, 0 + 4 ar kokia nors kita skaičių pora. Kadangi išvesties informacija netiesiogiai jau yra įvestyje, galime manyti, kad jokie skaičiavimai negeneruoja informacijos.

Įprasti loginiai vartai išsklaido energiją, nes išmeta nereikalingą informaciją. Pavyzdžiui, jei AND vartų išvestis yra 0, tada negalime nustatyti, kas buvo įėjimuose.

Tiesą sakant, skaičiavimai atlikti šiuolaikinėje kompiuteriai, atliekami naudojant daugybę operacijų, kurios sunaikina informaciją. Vadinamasis vožtuvas Ir “ yra įrenginys, turintis dvi įvesties linijas, kurių kiekviena gali būti nustatyta į signalą, lygų 1 arba 0, ir vieną išvesties liniją - jos signalo vertė nustatoma pagal įėjimų reikšmes. Jei abu įėjimai yra 1, tada išėjimas taip pat bus 1. Jei vienas arba abu įėjimai yra 0, tada išėjimas bus 0. Kai vartų išėjimas yra 0, mes prarandame informaciją, nes nežinome, kuri iš trys galimos būsenos buvo įvesties eilutės (0 ir 1; 1 ir 0 arba 0 ir 0). Tiesą sakant, bet kokie loginiai vartai, turintys daugiau įėjimų nei išėjimų, neišvengiamai praranda informaciją, nes negalime nustatyti įėjimų būsenos pagal išėjimų būseną. Todėl, kai naudojame tokį „logiškai negrįžtamą“ vožtuvą, mes išsklaidome energiją aplinką. Vieno duomenų bito ištrynimas kompiuterio atmintyje yra dar viena kompiuterijoje dažnai naudojama operacija, kuri taip pat yra dissipatyvaus pobūdžio. Ištrindami vieną duomenų bitą, prarandame visą informaciją apie ankstesnę šio bito būseną.

Tačiau teisinga užduoti klausimą, ar kompiuterijoje neišvengiama negrįžtamų loginių vartų ir trynimo operacijų? Jei taip, tada bet koks mūsų atliktas skaičiavimas turi išsklaidyti tam tikrą minimalų energijos kiekį.

Kaip Benne (vienas iš šio straipsnio autorių) parodė 1973 m., skaičiuojant galima apsieiti be negrįžtamų loginių elementų ir neištrinant informacijos. Nuo tada šios nuostatos galiojimas buvo įrodytas keliais modeliais. Lengviausias būdas apibūdinti modelius yra pagrįstas vadinamaisiais „grįžtamaisiais loginiais vartais“, tokiais kaip Fredkino vartai, pavadinti Edvardo Fredkino vardu MIT. Vožtuvas turi tris įvesties ir tris išvesties linijas. Signalas vienoje įvesties linijoje, vadinamoje "valdymo kanalu", nesikeičia, kai jis praeina pro vartus. Jei signalas valdymo kanale yra nustatytas į 0, tada kitų dviejų linijų įvesties signalai taip pat praeina nepakitę. Bet jei valdymo linija yra 1, tada kitos dvi išvesties linijos persijungia: vienos linijos įvesties signalas tampa kitos išvestimi ir atvirkščiai. Fredkino vartai nepraranda informacijos, nes įėjimų būseną visada galima nustatyti pagal išėjimų būseną.

Fredkinas parodė, kad bet koks loginis įrenginys, reikalingas kompiuterio veikimui, gali būti sukurtas atitinkamo Fredkin gate derinio pavidalu. Norint atlikti skaičiavimą, tam tikros kai kurių vartų įvesties eilutės turi būti iš anksto nustatytos tam tikroms reikšmėms (žr. apatinį paveikslą kairėje).

Grįžtamieji Fredkino loginiai vartai gali neišsklaidyti energijos – būseną jo įėjimuose galima nustatyti pagal išėjimų būseną. Vožtuvas turi „valdymo“ liniją, kurios būsenos vožtuvas nekeičia. Jei valdymo linija yra 0, tada signalo reikšmės kitose dviejose eilutėse taip pat nesikeičia, tačiau jei valdymo linija yra 1, tada A linijos įvestis tampa eilutės S išvestimi ir atvirkščiai. Tinkamai prijungus reversinius vožtuvus, galima atlikti bet kokią įprasto negrįžtamojo įrenginio funkciją. Norint įgyvendinti operaciją IR (dešinėje), viena įvestis nustatoma į 0, o du išvesties bitai, vadinami „šiukšlėmis“, laikinai nepaisomi. Kai skaičiavimas baigtas, šie bitai naudojami vartams valdyti priešinga kryptimi, kad kompiuteris būtų grąžintas į pradinę būseną.

Fredkin vartai turi daugiau išvesties linijų nei tos, kurias jie modeliuoja. Todėl atliekant skaičiavimus, atrodytų, kad susidaro „šiukšlės“, t.y. informacijos bitai, kurių nereikia rezultatui gauti. Prieš pradėdami kitą skaičiavimą, turite kažkaip išvalyti kompiuterį nuo šių bitų. Bet jei juos ištrinsime, įvyks pats energijos išsisklaidymas, kurio norėjome išvengti.

Tiesą sakant, šie bitai atlieka labai svarbų vaidmenį. Gavę skaičiavimo rezultatą ir nukopijavę jį iš mašinos iš įprastų išvesties linijų, procesas turėtų būti vykdomas priešinga kryptimi. Kitaip tariant, mes naudojame „šiukšlių bitus“ ir išvesties bitus, kuriuos kompiuteris gauna skaičiavimo metu kaip „įvestį“ iš mašinos „galinės pusės“. Tai įmanoma, nes visi kompiuterio loginiai vartai yra grįžtami. Skaičiuojant atvirkštine kryptimi informacija neprarandama, todėl nereikia išsklaidyti energijos. Galiausiai kompiuteris grįš į būseną, kuri buvo prieš pradedant skaičiavimą. Todėl galima užbaigti „skaičiavimo ciklą“ – varyti kompiuterį į priekį ir tada grįžti į pradinę būseną, be jokios energijos išsklaidymo.

Iki šiol buvo kalbama apie abstrakčias logines operacijas, neliečiant šias operacijas atliekančių fizinių įrenginių. Tačiau nesunku įsivaizduoti fizinį įrenginį, kuris veiktų pagal Fredkino principą. Tokiame įrenginyje informacijos perdavimo kanalai pateikiami vamzdžių pavidalu. Savo ruožtu, šiek tiek informacijos atspindi rutulio buvimas arba nebuvimas tam tikroje vamzdžio dalyje. Kamuoliuko buvimas interpretuojamas kaip 1, o nebuvimas – kaip 0.

Valdymo liniją vaizduoja siaura vamzdžio dalis, padalinta per vidurį išilgine kryptimi. Kai rutulys patenka į padalintą vamzdžio dalį, jis išstumia vamzdžio šonines sieneles, taip įjungdamas perjungimo įtaisą. Šis perjungimo įtaisas nukreipia įvesties granules, kurios gali būti dviejuose kituose vamzdeliuose. Kai valdymo vamzdyje yra rutulys, bet koks rutulys, ateinantis per įvesties liniją, automatiškai perkeliamas į kitą vamzdelį. Siekiant užtikrinti, kad perjungimo įtaisas būtų išjungtas, kai valdymo vamzdyje nėra rutulio, pastarojo padalintos pusės yra prispaudžiamos viena prie kitos spyruoklėmis. Kai rutulys patenka į valdymo vamzdelį ir suspaudžia spyruokles, tam jis turi išleisti šiek tiek energijos. Tačiau ši energija neprarandama: ji grąžinama, kai valdymo rutulys palieka padalintą vamzdį ir atleidžiamos spyruoklės.

Visi rutuliai yra tarsi sujungti vienas su kitu ir vienu mechanizmu stumiami į priekį, kad judėtų sinchroniškai; kitu atveju negalėtume užtikrinti, kad įvairūs įvesties ir valdymo rutuliai patektų į loginius vartus tuo pačiu metu. Tam tikra prasme skaičiavimo procesas yra panašus į judėjimą su vienu laisvės laipsniu, pavyzdžiui, dviejų ratų, standžiai sėdinčių ant tos pačios ašies, judėjimą. Kai skaičiavimas baigtas, mes stumiame visus rutulius priešinga kryptimi, pašalindami visas operacijas, atliktas kelyje į priekį ir grąžindami kompiuterį į pradinę būseną.

Jei prietaisas yra visiškai panardintas į idealų klampų skystį, trinties jėgos, veikiančios rutulius, bus proporcingos jų greičiui, o statinės trinties nebus. Todėl, jei mus tenkina lėtas rutuliukų judėjimas, trinties jėga bus labai maža. Bet kurioje mechaninėje sistemoje darbas trinties jėgai įveikti yra lygus trinties jėgos ir kūno nuvažiuoto atstumo sandaugai. (Todėl kuo greičiau plaukikas nuplaukia tam tikrą atstumą, tuo daugiau energijos jis išeikvoja, nepaisant to, kad atstumas išlieka toks pat, nepaisant plaukiko greičio.) Jei kamuoliukai per Fredkino vožtuvus prasiskverbia mažu greičiu, tada judesio metu atliktas darbas (jėgos atstumo sandauga) bus labai mažas, nes trinties jėga yra tiesiogiai proporcinga rutulio greičiui. Tiesą sakant, mes galime išleisti savavališkai mažai energijos vien dėl atitinkamo skaičiavimo proceso sulėtėjimo. Taigi darome išvadą, kad nėra minimalaus reikalingo energijos kiekio, kurį reikia sunaudoti norint atlikti bet kurį skaičiavimą.

Idealizuotas fizinis Fredkin vožtuvo modelis: vamzdeliai atlieka laidininkų vaidmenį, o rutulio buvimas ar nebuvimas interpretuojamas kaip 1 arba 0. Siaura vamzdelio atkarpa yra valdymo kanalas. Kai kamuolys atsitrenkia į jį, vamzdžio sienelės nukrypsta į šonus, suaktyvindamos perjungimo mechanizmą. Pastarasis savo ruožtu perkelia bet kurį atplaukiantį kamuolį iš linijos A į liniją B ir atvirkščiai. Dvi spyruoklės neleidžia valdymo kanalui išjungti, kai jame nėra rutulio. Tokiam vožtuvui atlikti operacijas nereikia statinės trinties. Jį galima panardinti į klampų skystį, tada trinties jėgos priklausys tik nuo kamuoliukų greičio. Šiuo atveju išsklaidyta energija gali būti savavališkai maža: norint sumažinti išsklaidytos energijos kiekį, reikia tik sumažinti rutuliukų, einančių per vožtuvą, greitį.

Nagrinėjamame skaičiavimo įrenginio modelyje dėl trinties prarandama energija bus labai maža, jei šis įrenginys veiks pakankamai lėtai. Ar įmanoma sukurti dar labiau idealizuotos mašinos modelį, kuris galėtų skaičiuoti be jokios trinties? O gal trintis yra būtinas skaičiavimo proceso požymis? Fredkinas kartu su T. Toffoli ir kitais MIT specialistais parodė, kad trintis nebūtina.

Jie tai parodė skaičiavimo įrenginio modelyje, kuriame skaičiavimai atliekami šaudant idealius biliardo kamuoliukus vienas į kitą, nesant trinties jėgų. Biliardo modelyje idealiai atspindintys „veidrodžiai“ - paviršiai, keičiantys kamuoliuko judėjimo kryptį, yra išdėstyti taip, kad kamuoliukų judėjimas ant stalo imituotų informacijos bitų praėjimą per loginius vartus (žr. pav.). Kaip ir anksčiau, rutulio buvimas tam tikroje „kompiuterio“ dalyje interpretuojamas kaip 1, o nebuvimas – kaip 0. Jei du rutuliai vienu metu pasiekia loginius vartus, tada jie susiduria ir jų trajektorijos pasikeičia; nauji takai reiškia vartų išėjimą. Fredkinas, Toffoli ir kiti sukūrė veidrodžių išdėstymus, atitinkančius įvairių tipų loginius vartus ir įrodė, kad galima sukurti bet kokio tipo biliardo modelį. loginis elementas reikalingi skaičiavimams.

Biliardo kompiuterio modelis: biliardo kamuoliukų judėjimas stalo paviršiumi imituoja informacijos bitų praėjimą per loginius vartus. Biliardo logikos vartuose (kairėje) kamuoliukų trajektorijos keičiasi jiems susidūrus vienas su kitu arba su „veidrodžiais“. Be savo funkcijų vožtuvuose, veidrodžiai gali keisti rutulio trajektorijos kampą (a), perkelti jį į šoną (b), uždelsti rutulį nekeičiant jo galutinės krypties ar greičio (c) arba sukelti trajektorijų susikirtimą. (d). Veidrodžius galima išdėstyti taip, kad gautas „kompiuteris“ atliktų bet kurio loginio įrenginio funkcijas. Pavyzdžiui, galite sukurti biliardo kompiuterį, kad atpažintumėte pirminius skaičius. Toks kompiuteris (dešinėje) priima savavališką penkių skaitmenų skaičių dvejetainis skaičius(šiuo atveju 01101 arba 13) ir fiksuota įvesties seka 01. Kaip ir Fredkin gate, biliardo kompiuteris grąžina daugiau išvesties bitų nei vartotojui reikia. Šiuo atveju jis grąžina patį pradinį skaičių (atitinkantį „papildomą“ išvestį) ir „atsakymą“: seką 10, jei įvestis yra pirminė, ir 01, jei ji yra sudėtinė.

Norėdami pradėti skaičiavimo procesą, mes šauname į biliardo kamuoliuką į kompiuterio įvestį, jei reikia įvesti vienetą. Kamuoliukai į mašiną turi patekti tuo pačiu metu. Kadangi rutuliai yra idealiai elastingi, jie nepraranda energijos, kai susiduria vienas su kitu. Jie išlips iš automobilio turėdami tiek pat kinetinės energijos, su kuria įlipo.

Veikimo metu biliardo kompiuteris generuoja „šiukšlių bitus“, kaip ir kompiuteris, pastatytas ant Fredkin Gates. Kai kompiuteris baigia vykdyti užduotį, biliardo kamuoliukus atspindime priešinga kryptimi, apversdami skaičiavimo procesą. Kamuoliukai išlips iš automobilio būtent ten, kur mes juos išsiuntėme į mašiną, ir tuo pat metu jie judės tuo pačiu greičiu. Taigi mechanizmas, kuris paleido kamuoliukus į automobilį, dabar gali susigrąžinti jų kinetinę energiją. Ir tokiu atveju, atlikdami skaičiavimą, galime grąžinti kompiuterį į pradinę būseną neišsklaidyti energijos.

Biliardo kompiuteris turi vieną reikšmingą trūkumą: jis itin jautrus menkusiems netikslumams. Jei kamuolys bus siunčiamas šiek tiek nukrypstant nuo teisingos krypties, arba veidrodis pasuktas šiek tiek kitokiu kampu, nei buvo apskaičiuotas, kamuoliukai išskris norimomis trajektorijomis. Vienas ar keli rutuliukai nukryps nuo apskaičiuoto kelio, o po kurio laiko šių klaidų bendras poveikis sutrikdys visą skaičiavimo procesą. Net jei būtų galima pagaminti visiškai elastingus, be trinties rutulius, atsitiktinio rutulius sudarančių molekulių šiluminio judėjimo gali pakakti, kad po kelių dešimčių susidūrimų būtų padaryta klaidų.

Žinoma, būtų galima sumontuoti korekcinę įrangą, kuri neteisingai judantį kamuolį grąžintų į norimą trajektoriją, tačiau tokiu atveju tektų naikinti informaciją apie ankstesnes kamuoliuko būsenas. Pavyzdžiui, reikėtų sunaikinti informaciją apie veidrodžio nukrypimo nuo teisingos padėties dydį. Tačiau atsikratyti informacijos net ir norint ištaisyti klaidą įmanoma tik sistemoje, kurioje egzistuoja trinties jėgos ir galimi energijos nuostoliai. Todėl korekcinė įranga turi išsklaidyti tam tikrą energijos kiekį.

Daugelio sunkumų, su kuriais susiduriama naudojant biliardo kompiuterio modelį, būtų galima išvengti arba bent jau sumažinti, jei vietoj biliardo kamuoliukų būtų naudojamos submikroskopinės dalelės, tokios kaip elektronai. Kaip pažymėjo W. Zurekas iš Los Alamos nacionalinės laboratorijos, dėl kvantinės mechanikos dėsnių, kurie riboja elementariųjų dalelių būseną, galima pašalinti nedidelių dalelių judėjimo nukrypimų galimybę.

Nors iki šiol mūsų samprotavimai daugiausia buvo pagrįsti klasikine dinamika, keli mokslininkai pasiūlė kitus grįžtamųjų kompiuterių modelius, pagrįstus kvantinės mechanikos principais. Tokios mašinos, kurias pirmasis pasiūlė P. Benioffas iš Nacionalinės laboratorijos Argonoje (Prancūzija), o patobulino kiti, ypač R. Feynmanas iš Kalifornijos technologijos instituto, iki šiol buvo aprašytos tik pačiais bendriausiais terminais. Iš esmės šių kompiuterinių modelių dalelės turi būti išdėstytos taip, kad jų sąveiką reguliuojančios kvantinės mechanikos taisyklės būtų lygiai tokios pačios kaip taisyklės, numatančios signalų reikšmes grįžtamųjų loginių vartų išėjimuose. Tarkime, kad dalelės sukinys gali turėti tik du galimas vertes: kryptis aukštyn (atitinka dvejetainį 1) ir žemyn (atitinka dvejetainį 0). Sąveika tarp dalelių sukimosi verčių turi vykti taip, kad tam tikros dalelės sukimosi vertė keistųsi priklausomai nuo šalia esančių dalelių sukimosi. Šiuo atveju dalelės sukimasis atitiks vieną iš loginių vartų išėjimų.

Aukščiau daugiausia kalbėjome apie informacijos apdorojimą. Bet kompiuteris turi ne tik apdoroti duomenis, bet ir juos saugoti. Informacijos saugojimo ir apdorojimo sąveiką bene geriausiai apibūdina įrenginys, vadinamas „Turingo mašina“ (pagal Alano M. Turingo, kuris pirmą kartą pasiūlė tokią mašiną 1936 m.). Tiuringo mašina gali atlikti bet kokius šiuolaikinio kompiuterio atliekamus skaičiavimus. S. Benne (vienas iš šio straipsnio autorių) įrodė galimybę sukurti Tiuringo mašiną, t.y. kuri nepraranda informacijos ir todėl darbo metu gali išeikvoti bet kokį iš anksto nustatytą nedidelį energijos kiekį.

Turingo mašina gali atlikti bet kokius skaičiavimus, kuriuos gali atlikti kompiuteris. Be galo ilga juosta yra padalinta į atskirus segmentus, kurių kiekviename yra 0 arba 1. Skaitymo ir rašymo galvutė, kuri gali būti bet kurioje iš kelių vidines būsenas(čia yra tik dvi būsenos: A ir B), juda juosta. Kiekvienas ciklas prasideda tuo, kad galva nuskaito vieną bitą iš juostos segmento. Tada pagal fiksuotą perėjimo taisyklių rinkinį jis įrašo šiek tiek duomenų į juostos segmentą, pakeičia jo vidinę būseną ir perkelia vieną poziciją į kairę arba į dešinę. Kadangi ši Tiuringo mašina turi tik dvi vidines būsenas, jos galimybės apsiriboja trivialiais skaičiavimais. Sudėtingesnės mašinos, turinčios daug būsenų, gali imituoti bet kurio kompiuterio elgesį, įskaitant ir daug sudėtingesnius už juos pačius. Tai įmanoma, nes jie saugo pilną didesnės mašinos loginės būsenos vaizdą begalinėje juostoje ir kiekvieną skaičiavimo ciklą suskaido į daugybę paprastus žingsnius. Čia parodyta mašina yra logiškai grįžtama: visada galime nustatyti ankstesnes mašinos būsenas. Turingo mašinos su skirtingomis perėjimo taisyklėmis gali būti logiškai negrįžtamos.

Tiuringo mašina susideda iš kelių komponentų. Vienas iš jų yra juosta, padalinta į atskiras dalis arba segmentus, kurių kiekvienoje yra 0 arba 1, ty įvesties duomenys. „Skaitymo ir rašymo galvutė“ juda juosta. Galvutė gali atlikti kelias funkcijas – nuskaityti vieną bitą duomenų iš juostos, įrašyti vieną bitą į juostą ir perkelti vieną segmentą į kairę arba dešinę. Kad kitame cikle būtų išsaugota informacija apie tai, kas buvo padaryta ankstesniame, galvos mechanizmas turi keletą vadinamųjų „būsenų“. Kiekviena būsena atspindi savo, šiek tiek skirtingą vidinių galvos dalių konfigūraciją.

Kiekvieno ciklo metu galvutė šiek tiek nuskaito juostos segmentą, prieš kurį ji yra Šis momentas esančios. Tada jis įrašo naują bito reikšmę į juostą, pakeičia jos vidinę būseną ir perkelia vieną segmentą į kairę arba dešinę. Jo įrašomo bito reikšmė, būsena, į kurią jis pereina, ir kryptis, kuria jis juda, nustatomos pagal fiksuotą perėjimo taisyklių rinkinį. Kiekviena taisyklė apibūdina tam tikrus veiksmus. Kokios taisyklės aparatas šiuo metu laikosi, priklauso nuo galvutės būsenos ir ką tik iš juostos nuskaityto bito vertės. Pavyzdžiui, taisyklė gali būti tokia: „Jei galvutė yra A būsenoje ir yra priešais segmentą, kuriame parašyta 0, tada ji turėtų pakeisti šio bito reikšmę į 1, pereiti į būseną B ir vieną segmentą perkelti į teisingai“. Pagal kokią nors kitą taisyklę, aparatas neturi keisti savo būsenos ar įrašyti naujo bito į juostą arba turi sustoti. Ne visos Tiuringo mašinos yra apverčiamosios, tačiau galima sukurti apverčiamąją Tiuringo mašiną, kuri gali atlikti bet kokius skaičiavimus.

Modeliai, pagrįsti reversine Tiuringo mašina, turi pranašumą prieš tokias mašinas kaip biliardo kompiuteris, kuris neturi trinties. Biliardo kompiuteryje atsitiktinis terminis molekulių judėjimas sukelia neišvengiamų klaidų. Reversinės Tiuringo mašinos iš tikrųjų naudoja atsitiktinį šiluminį judesį: jos sukurtos taip, kad būtent šiluminis judėjimas, padedamas silpnos varomosios jėgos, perkelia mašiną iš vienos būsenos į kitą. Skaičiavimo proceso raida primena jono (įkrautos dalelės) judėjimą tirpale silpname elektriniame lauke. Jei trumpą laiką stebėsite jono elgesį, tai atrodys atsitiktinai: judėjimo viena kryptimi tikimybė yra beveik tokia pati kaip kita. Tačiau varomoji jėga dėl elektrinio lauko veikimo suteikia judėjimui pageidaujamą kryptį. Tikimybė, kad jonas judės šia kryptimi, yra šiek tiek didesnė. Iš pirmo žvilgsnio gali pasirodyti neįtikėtina, kad tikslinga skaičiavimo procesui būdinga operacijų seka gali būti realizuota aparatu, kurio judėjimo kryptis bet kuriuo laiko momentu gali būti laikoma beveik atsitiktine. Tačiau tokio pobūdžio veiksmai yra labai dažni gamtoje. Visų pirma tai galima pastebėti mikroskopiniame cheminių reakcijų pasaulyje. Bandymas ir klaida Brauno judėjimas, arba atsitiktinis šiluminis judėjimas, yra pakankamai efektyvus, kad reaguojančios molekulės susiliestų, tinkamai išsidėsčiusios viena kitos atžvilgiu, kaip to reikalauja ši reakcija, ir suformuotų naujas molekules, kurios yra reakcijos produktai. Iš esmės visos cheminės reakcijos yra grįžtamos: tas pats Brauno judėjimas, dėl kurio reakcija vyksta į priekį, kartais sukelia reakcijos produktų atvirkštinį perėjimą. Pusiausvyros būsenoje atvirkštinė reakcijos kryptis yra tokia pat tikėtina, kaip ir tiesioginė. Kad reakcija vyktų į priekį, turite nuolat pridėti molekulių, kurios patenka į reakciją, ir pašalinti molekules, kurios yra reakcijos produktai. Kitaip tariant, turime panaudoti nedidelę varomąją jėgą. Kai ši jėga labai maža, reakcija vyks ir pirmyn, ir atgal, tačiau vidutiniškai ji eis į priekį. Norėdami suteikti varomąją jėgą, turime eikvoti energiją, tačiau, kaip ir Fredkin vožtuvo vamzdžių ir rutuliukų modelyje, energijos kiekis gali būti savavališkai mažas. Jei mus tenkina labai lėtas operacijų vykdymas, tai nėra minimalaus reikalingo energijos kiekio, kurį reikia išleisti šioms operacijoms. Paaiškinimas yra tas, kad bendras išsklaidytos energijos kiekis priklauso nuo žingsnių skaičiaus į priekį, padalijus iš žingsnių skaičiaus priešinga kryptimi. (Tiesą sakant, jis yra proporcingas šio santykio logaritmui; kai pats santykis didėja arba mažėja, jo logaritmas keičiasi ta pačia kryptimi.) Kuo lėčiau vyksta reakcija į priekį, tuo santykis bus mažesnis. (Čia vėlgi aktuali analogija su greitais ir lėtais plaukikais: jei reakcija vyks lėčiau, bendras sunaudotos energijos kiekis bus mažesnis, nepaisant to, kad tarpinių skilimų ir jungčių skaičius išlieka toks pat.)

RNR polimerazė yra fermentas, kuris veikia kaip grįžtamasis juostos kopijavimo aparatas. Tai RNR, kuri yra DNR kopija, sintezės katalizatorius. Judėdamas DNR grandine, fermentas iš aplinkinio tirpalo atrenka nukleozido trifosfato molekulę (kiekvienas nukleozido trifosfatas susideda iš tam tikros RNR bazės, cukraus molekulės ir trijų fosfatų grupių), kurios bazė yra komplementari DNR bazei, kuri šiuo metu yra būti nukopijuotas. Jis pritvirtina naują bazę prie statomos RNR grandinės galo ir atpalaiduoja pirofosfato joną. Reakcija yra grįžtama: kartais fermentas prijungia pirofosfatą prie paskutinės RNR jungties (susidaręs nukleozido trifosfatas grįžta į tirpalą) ir pasislenka viena padėtimi išilgai DNR grandinės. Kai reakcija artima cheminei pusiausvyrai, fermentas žengia beveik tiek pat žingsnių atgal, kiek į priekį, o bendra energija, reikalinga vienam DNR segmentui kopijuoti, yra labai maža. Kuo mažesnis energijos išsklaidymas, tuo lėčiau vyksta reakcija. Todėl DNR segmentui kopijuoti nereikia minimalios energijos.

Pažiūrėkime, kaip veikia Brauno Tiuringo mašina, naudojant Brauno mašinos pavyzdį, skirtą juostai kopijuoti. Tokia mašina gamtoje jau egzistuoja. Tai RNR polimerazė – fermentas, dalyvaujantis RNR, kuri yra genus sudarančios DNR kopija, sintezėje. Viengrandė DNR labai panaši į Tiuringo mašinos juostą. Kiekviename jo elemente, t.y. kiekvienoje grandinės padėtyje yra vienas iš keturių nukleotidų arba bazių: adeninas, guaninas, citozinas arba timinas (sutrumpintai A, G, C, T). RNR struktūra labai panaši į DNR. Tai taip pat į ilgą grandinę panaši molekulė, susidedanti iš keturių tipų bazių – adenino, guanino, citozino ir uracilo (atitinkamai A, G, C ir U). RNR bazės gali prisijungti prie savo komplementarių DNR bazių.

RNR polimerazė katalizuoja jos papildomos kopijos – RNR – susidarymą DNR. Paprastai DNR dviguba grandinė, susukta į spiralę, yra apsupta tirpalo, kuriame yra daug ribonukleozido trifosfato molekulių, kurių kiekviena susideda iš ribonukleotido (RNR bazės), cukraus ir trijų fosfatų grupių, sujungtų serija. RNR polimerazė iš tirpalo atrenka vieną iš RNR bazių, kuri yra komplementari bazei, kuri šiuo metu turi būti nukopijuota iš DNR grandinės, ir pritvirtina ją prie augančios RNR grandinės galo, išskirdama du fosfatus į aplinkinį tirpalą pirofosfato jonas. Tada fermentas pasislenka viena padėtimi išilgai DNR grandinės, ruošdamasis pridėti kitą bazę prie RNR grandinės. Dėl to susidaro RNR grandinė, kuri papildo šabloną – DNR grandinę. Be RNR polimerazės šios reakcijos būtų labai lėtos ir nebūtų garantijos, kad gauta RNR tiksliai papildys DNR.

Aprašytos reakcijos yra grįžtamos: kartais fermentas prijungia laisvą pirofosfato joną prie paskutinės augančios RNR grandinės bazės ir į aplinką patenka ribonukleozido trifosfato molekulė, o pats fermentas grįžta viena padėtimi atgal išilgai DNR grandinės. Pusiausvyros būsenoje žingsniai pirmyn ir atgal vyksta vienodai dažnai, tačiau gyvoje ląstelėje kiti medžiagų apykaitos procesai perkelia pusiausvyrą į tiesioginę reakciją dėl pirofosfato pašalinimo ir ribonukleozidų trifosfatų pertekliaus susidarymo. Laboratorinėmis sąlygomis galima kontroliuoti RNR polimerazės reakcijos greitį, keičiant pradinių reagentų koncentraciją (tai įrodė J. Levinas ir M. Chamberlain iš Kalifornijos universiteto Berklyje). Kai koncentracija artėja prie pusiausvyros, fermentas veikia lėčiau ir mažiau energijos išsklaido kopijuojant tam tikrą DNR dalį, nes žingsnių pirmyn ir atgal santykis tampa mažesnis.

RNR polimerazė tiesiog kopijuoja informaciją jos neapdorodama, nesunku įsivaizduoti, kaip galėtų veikti hipotetinė Tiuringo cheminė mašina. Juostelė yra viena ilga skeleto molekulė, prie kurios reguliariais intervalais yra pritvirtintos dviejų tipų bazės, interpretuojamos kaip 0 ir 1 bitai. Kita maža molekulė yra prijungta prie vienos iš nulių ir vienetų grandinės padėčių. Padėtis, prie kurios pritvirtinta ši molekulė, yra ne kas kita, kaip juostos segmentas, ant kurio yra Tiuringo mašinos galvutė. Yra keletas skirtingų „galvos molekulių“ tipų. Kiekvienas tipas reiškia vieną iš galimų vidinių mašinos būsenų.

Mašinos perėjimo taisykles vaizduoja fermentai. Kiekvienas fermentas yra konkrečios reakcijos katalizatorius. Norėdami geriau suprasti, kaip veikia šie fermentai, apsvarstykite pavyzdį.

Tarkime, kad galvos molekulė yra tokio tipo BET (tai reiškia, kad mašina yra būsenoje BET ) ir pritvirtintas prie nulinio pagrindo. Taip pat tarkime, kad galioja ši perėjimo taisyklė: „Kai galva yra būsenoje BET ir nuskaito 0, pakeiskite 0 į 1, eikite į būseną AT ir judėkite į dešinę. Šiai taisyklei atstovaujanti fermento molekulė turi vietą, tinkamą tokio tipo galvos molekulei pritvirtinti BET prijungtas prie pagrindo 1. Jame taip pat yra vieta, tinkama tvirtinti pagrindą 0, ir vieta, tinkanti galvos tipui AT (žr. paveikslėlį).

Norint atlikti reikiamą perėjimą, fermento molekulė pirmiausia priartėja prie padėties juostoje iš karto dešinėje nuo pagrindo, prie kurio šiuo metu pritvirtinta tipo galvutė. BET . Tada ji atskiria nuo juostos ir galvutės molekulę, ir pagrindą 0, prie kurio pritvirtinta galvutė, ir į jų vietą įdeda pagrindą 1. Tada pritvirtina galvutę kaip AT prie pagrindo dešinėje nuo vieno pagrindo, ką tik pritvirtinto prie juostos. Tai užbaigia perėjimą. Pradiniame juostos segmente 0 buvo pakeistas 1, galvutės molekulė dabar yra tokio tipo AT ir pritvirtintas prie pagrindo, esantis vienoje pozicijoje į dešinę nuo originalo.

Hipotetinė Tiuringo fermentų mašina gali atlikti skaičiavimus su savavališkai mažu energijos kiekiu. Molekulės, žyminčios 0 ir 1 bitus, yra prijungtos prie pagrindinės molekulės. Molekulė, vaizduojanti Tiuringo mašinos galvutę, yra pritvirtinta prie vienos iš grandinės padėčių (7). skirtingi tipai galvos molekulės atspindi skirtingas mašinos būsenas. Perėjimo taisykles vaizduoja fermentai. Kiekviename cikle fermentas susijungia su galvute ir su galvute susijusia bitų molekule (2), atskiria juos nuo grandinės ir į jų vietą įdeda norimą bitų molekulę (3). Tai darydamas jis sukasi, pritvirtindamas atitinkamą galvutės molekulę prie kito bito, esančio dešinėje arba kairėje nuo ką tik pakeisto. Ciklas dabar baigtas (4): bito reikšmė pasikeitė, galvutė pakeitė būseną ir pajudėjo. Tokios reakcijos kaip RNR sintezė gali išsklaidyti nedidelį energijos kiekį.

Turingo Brauno mašina – tai laikrodžio mechanizmas, susidedantis iš standžių lygių detalių, kurios neglaudžiai priglunda viena prie kitos ir norimoje padėtyje palaikomos ne trinties, o griovelių ir dantų sistema. Nepaisant laisvo dalių sujungimo, jie gali atlikti tik tokio didelio masto judėjimą, kuris atitinka skaičiavimo žingsnį pirmyn arba atgal, kitaip tariant, gali eiti tik vienu „skaičiavimo keliu“. Mechanizmą šiek tiek stumia labai silpna išorinė jėga, todėl tikimybė pajudėti į priekį yra beveik tokia pati, kaip ir atgal. Tačiau vidutiniškai mašina judės į priekį ir skaičiavimas galiausiai bus baigtas. Atitinkamai sumažinus varomąją jėgą, mašiną galima priversti išnaudoti nedidelį energijos kiekį.

Juostos segmentai yra pavaizduoti diskais su grioveliais, o bitai – E formos blokeliais, kurie pritvirtinami prie disko viršutinėje (7) arba apatinėje (0) padėtyje. Galva susideda iš standžių dalių, sujungtų sudėtingu mechanizmu (dauguma jų čia nepateikta). Ant jo pakabinamas skaitymo elementas, manipuliatorius ir atsuktuvo formos strypas. Aparatas valdomas voleliu su grioveliais ant jo paviršiaus, panašiu į volelį, skirtą įrašams groti fonografu (viršuje kairėje, giliai dešinėje). Skirtingi grioveliai atitinka skirtingas galvos būsenas.

Ciklo pradžioje galvutė yra virš vieno iš diskų, o „adata“ yra valdymo ritinėlio griovelio „skaitymo“ segmente, atitinkančiame dabartinę mašinos galvutės būseną. Ciklo (7) „skaitymo“ fazės metu skaitytuvas nustato, ar bitą vaizduojantis blokas pasukamas aukštyn ar žemyn, atlikdamas „kliūčių skaitymo“ procedūrą (dešinėje centre). Skaitymo elementas eina išilgai bloko išilgai viršutinio arba apatinio kelio. Viename iš šių takų jis turi sutikti kliūtį atbrailos pavidalu bloko gale, todėl lieka įmanomas tik vienas kelias. Valdymo ritinėlio taške, atitinkančiame šį „sprendimą“, grioveliai išsišakoja ir adata įvedama į griovelį, atitinkantį antgalio (2) reikšmę. Tada valdymo volelis sukasi tol, kol adata pasiekia „rašymo“ segmentą (3). Čia kiekviename griovelyje yra atskiras „instrukcijų“ rinkinys, kuris perduodamas mašinai naudojant sudėtingą adatos ir likusio mechanizmo ryšį.

Jei instrukcijoje reikia pakeisti bito reikšmę, manipuliatorius įjungiamas ir užsikabina ant bloko auselės, tada atsuktuvas sukasi diską, kol blokas atsilaisvins, manipuliatorius suka bloką aukštyn arba žemyn, o atsuktuvas vėl sukasi. diską taip, kad blokas būtų savo vietoje. Pravažiavus valdymo volelio „rašymo“ segmentą, adata patenka į „pamainos“ segmentą (4). Kiekviename šio segmento griovelyje yra nurodymas perkelti galvą viena padėtimi į kairę arba į dešinę. Tada adata patenka į „būsenos keitimo“ segmentą (5), kur grioveliai susilieja taip, kad adata patenka į griovelį, atspindintį kitą galvos būseną. Dabar kilpa baigta (6). Diskai, esantys šalia šiuo metu skaitomo disko, laikomi vietoje. Diskai toliau užrakinami specialiu „užraktu“. Kiekvieno disko užraktas yra susietas su specialiu gretimo disko bitu, vadinamu Q bitu. Šios jungties išdėstymas yra toks, kad šiuo metu skaitomas diskas yra atleidžiamas ir gali būti judinamas, o toliau nuo jo esantys diskai tiek į kairę, tiek į dešinę išlaikomi nejudančioje būsenoje.

Kad Brauno Tiuringo mašina veiktų, juosta turi būti panardinta į tirpalą, kuriame yra daug fermentų molekulių, taip pat pakankamai „nulių“, „vienetų“ ir „galvų“, pvz. BET ir AT . Tam, kad reakcija vyktų pirmyn, reikalinga kokia nors kita reakcija, kuri išvalytų nuo juostos atskirtų galvučių ir bazių fermentų molekules. Medžiagų, išvalančių fermentų molekules, koncentracijos yra varomoji jėga, verčianti Turingo mašiną veikti pirmyn. Vėlgi, galime išeikvoti savavališkai nedidelį energijos kiekį, jei mašina atlieka operacijas pakankamai lėtai.

Fermentų pagrindu sukurta Tiuringo mašina nebus be klaidų. Retkarčiais gali atsirasti reakcijų, kurios vyksta be fermentų katalizės. Pavyzdžiui, 0 bazė gali spontaniškai atsiskirti nuo skeleto molekulės, o 1 bazė gali užimti jos vietą. Tiesą sakant, tokių klaidų pasitaiko RNR sintezės metu.

Iš esmės šių klaidų būtų galima atsikratyti statant Brauno Tiuringo mašiną standaus, absoliučiai sklandaus laikrodžio mechanizmo pagrindu. Tokia Turingo mašina yra mažiau idealizuota nei biliardo kompiuteris, bet labiau idealizuota nei fermentų mašina. Viena vertus, jo dalys nereikalauja absoliučiai tikslaus apdirbimo, kaip reikia biliardo kamuoliukams, laikrodžio mechanizmo detalės gali turėti tam tikrų leistinų nuokrypių ir mašina gali dirbti net esant dideliam šiluminiam triukšmui. Tačiau mašina turi būti visiškai standi ir be statinės trinties, ir joks makroskopinis korpusas neturi šių savybių.

Kadangi mašinos dalys nėra tvirtai prigludusios viena prie kitos, jas laiko ne trintis, o griovelių sistema - grioveliai ir dantukai (žr. pav.). Nors kiekviena mašinos dalis turi šiek tiek laisvo žaidimo, kaip ir medinės dėlionės detalės, apskritai mechanizmas gali eiti tik vienu „skaičiavimo keliu“. Kitaip tariant, dalys yra sujungtos viena su kita taip, kad bet kuriuo metu mašina gali atlikti tik dviejų tipų didelio masto judesius: judėjimą, atitinkantį skaičiavimo žingsnį į priekį, ir judėjimą priešinga kryptis.

Kompiuteris atlieka perėjimus tarp šių dviejų judėjimo tipų tik dėl atsitiktinio jo dalių šiluminio judėjimo dėl silpnos išorinės jėgos įtakos. Tikimybė judėti priešinga kryptimi, eliminuojant paskutinės operacijos rezultatus, yra beveik tokia pati, kaip ir judėjimo į priekį tikimybę. Nedidelė jėga, taikoma iš išorės, stumia skaičiavimus į priekį. Ir vėl ši jėga gali būti savavališkai maža; ir todėl nereikia minimalios energijos, reikalingos, kad Tiuringo mašina veiktų pagal laikrodžio mechanizmą.

Taigi dėl klasikinės termodinamikos skaičiavimams nėra būtinos minimalios energijos. Ar tuomet termodinaminė analizė neprieštarauja kvantinei mechanikai? Galų gale, pagal kvantinės mechaninės neapibrėžties principą, turėtų būti atvirkštinis ryšys tarp neapibrėžtumo laipsnio, kiek trunka procesas, ir neapibrėžtumo laipsnio dėl energijos kiekio, sunaudojamo šiame procese. Todėl kai kurie tyrėjai mano, kad bet kokiame perjungimo procese, kuris vyksta per labai trumpą laiką, reikia sunaudoti minimalų energijos kiekį.

Tiesą sakant, neapibrėžtumo principas nereikalauja jokio riboto energijos minimumo greitam perjungimui. Neapibrėžtumo principas būtų taikomas tik tuo atveju, jei bandytume išmatuoti tikslų momentą, kada įvyko įvykis. Net ir pagal kvantinės mechanikos dėsnius, itin greiti įvykiai gali vykti neprarandant energijos. Mūsų įsitikinimą, kad kvantinė mechanika leidžia atlikti skaičiavimus su savavališkai mažomis energijos sąnaudomis, patvirtina Benioff ir kt. sukurti grįžtamųjų kvantinių mechaninių kompiuterių modeliai. Šie modeliai neišsklaido energijos ir paklūsta kvantinės mechanikos dėsniams.

Taigi neapibrėžtumo principas neatrodo esminių skaičiavimo proceso apribojimų. Klasikinė termodinamika jų taip pat neprimeta. Ar tai reiškia, kad kompiuterija apskritai neturi fizinių ribų? Ne, tai toli gražu nėra tiesa. Tikrieji apribojimai yra susiję su klausimais, į kuriuos atsakyti daug sunkiau nei tuos, kuriuos iškėlėme ir svarstėme šiame straipsnyje. Pavyzdžiui, atlikite pradinius dalykus loginės operacijos koks minimalus pabaigos laikas? Kokie yra minimalūs įrenginio, galinčio atlikti tokias operacijas, matmenys? Kadangi dydžio ir laiko skalės yra susijusios su baigtiniu šviesos greičiu, atrodo, kad atsakymai į šiuos klausimus yra kažkaip tarpusavyje susiję. Tačiau šių atsakymų bet kuriuo atveju negalėsime rasti, kol nebus išspręstas klausimas, ar universalioje trukmės ir laiko skalėje yra elementaraus diskretiškumo.

Kitas problemos kraštutinumas yra klausimas, kokio dydžio galime padaryti kompiuterio atmintį. Kiek dalelių visatoje galime surinkti ir sujungti šiems tikslams? Faktas yra tas, kad didžiausias galimas kompiuterio atminties dydis riboja skaičiavimų tikslumą. Pavyzdžiui, apskaičiuotos p reikšmės skaitmenų po kablelio skaičius bus ribojamas. Kitas, galbūt susijęs su pastaruoju, klausimas susijęs su neišvengiamais degradacijos procesais, vykstančiais tikruose kompiuteriuose jiems senstant. Ar galima sumažinti klaidų sunaikinimo ir kaupimosi greitį iki savavališkai mažų verčių, ar šis rodiklis apriboja maksimalią skaičiavimo trukmę? Kitaip tariant, ar yra kokių nors skaičiavimo užduočių, kurių negalima atlikti, kol materialioji kompiuterio dalis tampa netinkama naudoti?

Tiesą sakant, tokie klausimai yra susiję su fizinių matematinių operacijų vykdymo apribojimais. Fiziniai dėsniai, kuriais galiausiai turi būti pagrįsti atsakymai, patys išreiškiami tokiomis matematinėmis operacijomis. Taigi mes užduodame sau klausimą, kokia forma gali būti taikomi fiziniai dėsniai, atsižvelgiant į apribojimus, kuriuos nustato visatos savybės, kurios, savo ruožtu, yra aprašytos šiais dėsniais.