Përpunuesit nga brenda. Procesorët nga brenda Dizajni i pllakës amë të kompjuterit

Aktualisht, pjesa kryesore e tregut të mikroprocesorëve universalë është e zënë nga mikroprocesorët 32-bit dhe 64-bit. Ky kapitull përshkruan mikroprocesorët 32-bit të Intel që përbëjnë familjen IA-32 (Intel Architecture-32). Kjo arkitekturë formon bazën e arkitekturës 64-bit x86‑64 të Intel dhe arkitekturës AMD-64 të AMD.

2.1 Përbërja dhe funksionet e regjistrave

Regjistrat quhet memorie me shpejtësi të lartë e vendosur brenda CPU-së dhe e projektuar për ruajtjen online të të dhënave dhe akses të shpejtë në to nga komponentët e brendshëm të procesorit. Për shembull, kur optimizoni ciklin e programit për shpejtësi, variablat e aksesuara brenda qarkut ndodhen në regjistrat e procesorit, jo në memorie. Tërësia e të gjithë regjistrave të tillë nganjëherë referohet si memorie scratchpad (CoRAM).

2.1.1 Regjistrat bazë

Figura 2.1 tregon strukturën e regjistrave kryesorë dhe emrat e tyre. Janë 8 regjistra Qëllimi i përgjithshëm(RON), 6 regjistra segmentesh, regjistër flamuri, regjistër tregues instruksionesh, si dhe regjistrat e sistemit, regjistrat e korrigjimit dhe testimit.

Regjistrat për qëllime të përgjithshme (RON). Këta regjistra përdoren kryesisht për kryerjen e veprimeve aritmetike dhe transferimin e të dhënave. Çdo RON mund të aksesohet si një regjistër 32-bit ose si një regjistër 16-bit. Disa regjistra mund të aksesohen si 8-bit. Për shembull, regjistri EAX është 32 bit, por 16 bitët e tij të poshtëm quhen regjistër AX. 8 bitët e sipërm të regjistrit AX quhen AH, dhe 8 bitët e poshtëm quhen AL. Pjesët 16-bitëshe të regjistrave të indeksit dhe regjistrave të treguesve zakonisht përdoren vetëm kur shkruhet programe për mënyrën reale të adresimit, d.m.th. për MS-DOS ose emulimin e tij në Windows.

Kuptimi i shkurtesave të emrave të regjistrit:

Prefiksi E në fillim të emrave të regjistrave zgjerohet.

Postfiksi X në fund të emrave të regjistrave nënkupton regjistrin aktual.

AX - Akumulator (drive).

BX - Regjistri bazë (regjistri bazë).

CX - Counter (counter).

DX - Të dhëna (të dhëna).

AL - Akumulator i ulët (gjysma e poshtme e regjistrit AX).

AH - Akumulator i lartë (gjysma më e lartë e regjistrit AX).

BL - Baza e ulët (gjysma e poshtme e regjistrit BX).

BH - Baza e lartë (gjysma më e lartë e regjistrit BX).

CL - Numri i ulët (gjysma e poshtme e regjistrit CX).

CH - Numër i lartë (gjysma më e lartë e regjistrit CX).

DL - Të dhëna të ulëta (gjysma e poshtme e regjistrit DX).

DH - Të dhëna të larta (gjysma më e lartë e regjistrit DX).

SI - Indeksi i burimit (indeksi i burimit). Përmban adresën aktuale të burimit.

DI - Indeksi i destinacionit (indeksi i marrësit). Përmban adresën aktuale të marrësit.

BP - Treguesi bazë (pointer bazë). Për akses të rastësishëm në të dhënat brenda stivit

SP - Stack pointer (stack pointer). Përmban treguesin e sipërm të stivës.

CS - Segment kodi (segment kodi).

DS - Segmenti i të dhënave (segmenti i të dhënave).

ES - Segmenti i të dhënave shtesë (segmenti i të dhënave shtesë).

FS - Segmenti i të dhënave të zgjeruara (segmenti i të dhënave shtesë).

GS - Segmenti i zgjeruar i të dhënave (segmenti i të dhënave shtesë).

SS - Segmenti i pirgut (segmenti i pirgut).

IP - Treguesi i udhëzimeve (treguesi i udhëzimeve ose numëruesi i udhëzimeve).

F - Flamujt (regjistri i flamujve).

GDTR - Regjistri i tabelës së përshkruesit global (regjistri i tabelës së përshkruesve globalë).

IDTR - Regjistri i tabelës së përshkruesit të ndërprerjeve (regjistri i tabelës së përshkruesit të ndërprerjeve).

TR - Regjistri i detyrave (regjistri i detyrave).

LDTR - Regjistri i tabelës së përshkruesit lokal (regjistri i tabelës së përshkruesit lokal).

DR - Regjistri i korrigjimit (regjistri i korrigjimit).

TR - Regjistri i testimit (regjistri i testimit).

CR - Regjistri i kontrollit (regjistri i kontrollit).

Veçoritë e përdorimit të regjistrave. Gjatë ekzekutimit të instruksioneve nga procesori, disa regjistra për qëllime të përgjithshme kanë një qëllim të veçantë.

    Përmbajtja e regjistrit EAX përdoret automatikisht gjatë ekzekutimit të udhëzimeve të shumëzimit dhe pjesëtimit. Meqenëse ky regjistër zakonisht shoqërohet me ekzekutimin e udhëzimeve aritmetike, ai shpesh quhet si regjistri i zgjeruar i akumulatorit (zgjeruar akumulator).

    Regjistri ECX përdoret automatikisht nga procesori si numërues cikli.

    Regjistri ESP akseson të dhënat e ruajtura në pirg. Rafteështë një zonë memorie e sistemit, e cila aksesohet sipas parimit FILO (First input – last output) “first shkruar, last read”. Ky regjistër zakonisht nuk përdoret kurrë për të kryer instruksione normale aritmetike dhe transferimi të të dhënave. Është shpesh quhet regjistri i zgjeruar i treguesve të stivës (zgjeruar rafte tregues). Regjistri ESP tregon adresën e pjesës së sipërme të stivit (adresa ku ndryshorja tjetër do të shtyhet nga komanda PUSH).

    Regjistrat ESI dhe EDI zakonisht përdoren për instruksione të transferimit të të dhënave me shpejtësi të lartë nga një vend memorie në tjetrin. Prandaj ato nganjëherë quhen regjistrat e indeksit të burimit të zgjeruar dhe marrësi të dhëna (zgjeruar burimi indeks dhe zgjeruar destinacion indeks). Regjistri ESI është adresa e burimit dhe përmban adresën e fillimit të bllokut të informacionit për operacionin "move block" (adresa e plotë DS:ESI), dhe regjistri EDI është adresa e destinacionit (adresa e plotë ES:EDI).

    Regjistri EBP përdoret zakonisht nga përpiluesit e gjuhëve të nivelit të lartë për t'iu referuar parametrave të funksionit dhe për t'iu referuar variablave lokale të alokuara në stek. Nuk duhet të përdoret për të kryer veprime të zakonshme aritmetike ose për të lëvizur të dhëna, përveç rasteve kur përdoren teknika të veçanta programimi nga programues me përvojë. Shpesh quhet rast i zgjatur treguesi i kornizës së pirgut (zgjeruar kornizë tregues). Regjistri EUR përmban adresën nga e cila informacioni shtyhet ose shfaqet në pirg (ose "thellësia" e pirgut). Parametrat e funksionit kanë një zhvendosje pozitive në raport me EBP, variablat lokale kanë një zhvendosje negative dhe adresa e plotë e kësaj vendndodhjeje memorie ruhet në çiftin e regjistrave SS:EBP.

    Regjistri EIP ruan kompensimin e adresës së instruksionit. Adresa e plotë për instruksionin e ardhshëm të ekzekutueshëm ruhet në çiftin e regjistrave CS:EIP.

    Regjistrat ESP, EBP, ESI, EDI ruajnë kompensimin e adresës së të dhënave.

regjistrat e segmenteve. Këta regjistra përdoren si regjistra bazë kur aksesohen zonat e paracaktuara të RAM-it, të cilat thirren segmente. Ekzistojnë tre lloje të segmenteve dhe, në përputhje me rrethanat, regjistrat e segmenteve:

    kodi (CS), ato ruajnë vetëm komandat e procesorit, d.m.th. kodi i makinës së programit;

    të dhënat (DS, ES, FS dhe GS), ato ruajnë zonat e memories të ndara për variablat dhe të dhënat e programit;

    stack (SS), ata ruajnë një zonë të sistemit të memories të quajtur rafte, në të cilat shpërndahen variablat lokale (të përkohshme) të programit dhe parametrat që i kalohen funksioneve kur thirren.

Regjistrat e segmenteve ngarkohen nga përzgjedhësit e segmenteve, të cilët zhvendosen ose në Tabelën e Përshkruesve Global (GDT) ose në Tabelën e Përshkruesve Lokal (LDT).

Bitët e regjistrit të segmentit përmbajnë informacionin e mëposhtëm:

0 - 1. RPL - Niveli i Privilegjimit të Kërkuar. Niveli i kërkuar i privilegjit.

2. TI - Treguesi i tabelës. Biti i tabelës së treguesit. I tregon procesorit se ku të kërkojë përzgjedhësin e specifikuar. Nëse biti është vendosur, atëherë procesori lexon përzgjedhësin nga tabela e përshkruesit lokal. Nëse biti është i qartë, atëherë procesori lexon përzgjedhësin nga tabela e përshkruesit global.

3 - 15. Këto bit ruajnë indeksin e tabelës së përshkruesit global ose lokal.

Regjistri CS është shumë i vogël për të mbajtur një segment kodi, kështu që duhet të vendoset në një segment të ekzekutueshëm. Regjistri SS është shumë i vogël për të mbajtur një segment të pirgut, kështu që duhet të vendoset në një segment të dhënash të shkruajtshme.

Niveli i privilegjit i vendosur në regjistrin e segmentit CS është niveli i privilegjit të programit që funksionon dhe quhet Niveli aktual i privilegjit (CPL). Regjistrat e segmenteve DS, ES, FS, GS janë për të dhëna dhe duhet të vendosen në një segment të dhënash me leje shkrimi. Nivelet e privilegjeve të kërkuara nga secili prej këtyre përzgjedhësve duhet të jenë më të mëdha se niveli aktual i privilegjit CPL.

Regjistrat e përshkruesve hije shoqërohen me secilin nga gjashtë regjistrat e segmenteve. Adresa bazë 32-bitëshe e segmentit, kufiri 20-bit dhe atributet (lejet) nga tabelat e përshkruesit rishkruhen në regjistrat hije në modalitetin e mbrojtur.

Regjistri i treguesve të udhëzimeve. Regjistri EIP ruan kompensimin në lidhje me fillimin e programit (offset) të instruksionit të ardhshëm që do të ekzekutohet. Ka disa udhëzime në procesor që ndikojnë në përmbajtjen e këtij regjistri. Ndryshimi i adresës së ruajtur në regjistrin EIP shkakton një transferim të kontrollit në një seksion të ri të programit.

Regjistri i flamurit EF (EFLAGZ) . Bitet e këtij regjistri quhen flamuj dhe janë përgjegjës ose për specifikat e ekzekutimit të disa instruksioneve të CPU-së, ose pasqyrojnë rezultatin e ekzekutimit të komandave nga ALU. Flamujt e regjistrit janë renditur në tabelën 2.1. Bitet 22 deri në 31 përfshirëse janë të rezervuara.

Tabela 2.1 Regjistri i flamurit

Për të analizuar bitet e këtij regjistri jepen udhëzime të veçanta për procesorin. Ata thonë flamurin instaluar, kur biti i flamurit është 1, dhe ai flamur ra, kur vlera e bitit të tij është 0. Përveç kësaj, regjistri i zgjeruar EF përmban pesë flamuj të rinj në krahasim me regjistrin F.

Flamujt e kontrollit. Gjendja e biteve në regjistrin EFLAGS, që korrespondon me flamujt e kontrollit, mund të ndryshohet nga programuesi duke përdorur komanda të veçanta të procesorit. Këto flamuj (DF, IF, TF) kontrollojnë ekzekutimin e disa udhëzimeve të CPU:

8. TF - Flamuri kurth. Flamuri i gjurmës (modaliteti i hapit). Kur vendoset (TF=1), pas ekzekutimit të çdo instruksioni thirret një ndërprerje e brendshme INT 1, e cila ndalon procesin llogaritës, duke bërë të mundur kontrollin e përmbajtjes së regjistrave.

9.IF - Flamuri i aktivizimit të ndërprerjes. Flamuri i aktivizimit të ndërprerjes. Me IF=1, ndërprerjet e maskuara të harduerit janë aktivizuar. Nëse IF=0, është i çaktivizuar.

10. DF - Flamuri i drejtimit. Flamuri për kontrollin e drejtimit të përpunimit të vargjeve në komandat e vargut. Kur DF=1, regjistrat e indeksit SI, DI, të cilët marrin pjesë në komandat e vargut, zvogëlohen automatikisht nga numri i bajteve të operandit, duke përpunuar kështu vargjet nga fundi në fillim. Me DF=0 rriten duke përpunuar nga fillimi deri në fund të vargut.

Flamujt e statusit. Këto flamuj pasqyrojnë indikacione të ndryshme të rezultatit të ekzekutimit të udhëzimeve aritmetike dhe logjike të CPU:

0.CF - Mbaj flamur. Flamuri i bartjes vendoset nëse, gjatë kryerjes së një operacioni aritmetik të panënshkruar, fitohet një numër, gjerësia e bitit të të cilit tejkalon gjerësinë e bitit të fushës së rezultatit të caktuar për të. Në udhëzimet e ndërrimit, flamuri CF fikson vlerën e bitit më të rëndësishëm.

2. PF - Flamuri i barazisë. Flamuri i barazisë/barazisë vendoset kur ka një numër çift të njësh në rezultat.

4. AF - Auxiliary Carry. Flamuri për transferim/huazim shtesë nga tetrada e poshtme në atë më të vjetër (nga shifra e tretë në të katërt). Përdoret në komandat për përpunimin e të dhënave 8-bit, më shpesh numrat BCD.

6. ZF - Flamuri zero. Flamuri zero vendoset nëse një veprim aritmetik ose logjik rezulton në një numër të barabartë me zero (d.m.th., të gjitha bitet e rezultatit janë 0).

7. SF - Shenjë flamur. Flamuri i shenjës kopjon vlerën e pjesës më të rëndësishme të rezultatit. SF=0 për pozitive, SF=1 për negative.

11. OF - Flamuri i tejmbushur. flamuri i tejmbushur , ose ) vendoset nëse, gjatë kryerjes së një veprimi aritmetik me një shenjë, fitohet një numër, thellësia e bitit të të cilit tejkalon gjerësinë e bitit të fushës së rezultatit të caktuar për të.

Flamujt, shtuar në regjistrin EF:

12-13. IOPL do të thotë Niveli i Privilegjisë I/O. Flamuri i nivelit të privilegjit I/O. Përdoret në modalitetin e mbrojtur të mikroprocesorit për të kontrolluar hyrjen në komandat I / O, në varësi të privilegjit të detyrës.

14. NT - Flamuri i detyrës së mbivendosur. Flamuri i folezimit të detyrës. Përdoret në modalitetin e mbrojtur të mikroprocesorit për të regjistruar faktin që një detyrë është e vendosur brenda një tjetre.

16. RF - Flamuri i rinisë. Flamuri i rifillimit. Në modalitetin e korrigjimit, një vlerë e vetme e RF lejon që komanda të rifillohet pas ndërprerjeve. Përdoret në lidhje me regjistrat e pikave të ndërprerjes së korrigjimit.

17. VM - Flamuri Virtual Mode. Flamuri i modalitetit virtual. Shenja e funksionimit të mikroprocesorit në modalitetin virtual 8086. 1 – procesori funksionon në modalitetin virtual 8086; 0 - Procesori po funksionon në modalitetin real ose të mbrojtur.

18. AC - Kontrolli i shtrirjes. Flamuri i mënyrës së funksionimit të procesorit, në të cilin ndodh kontrolli i shtrirjes. Përdoret vetëm në nivelin e privilegjit 3. Nëse AC=1 dhe AM=1 (AM është një bit në regjistrin e kontrollit CR0), atëherë nëse aksesohet një operand që nuk është i lidhur me kufirin e duhur (2 ose 4 ose 8) bajt, përjashtimi 17 do të ngrihet Shtrirja e operandit brenda kufijve 2,4,8 do të thotë se adresa e operandit është një shumëfish i 2,4,8, respektivisht.

19. VIF - Virtual Interrupt Flag. Flamuri i aktivizimit të ndërprerjes në modalitetin e procesorit virtual.

20. VIP - Ndërprerje virtuale në pritje. Flamuri i vonesës së ndërprerjes në modalitetin e procesorit virtual.

21. ID - Identifikimi i CPU. Flamuri i identifikimit të procesorit. Flamuri mund të ndryshohet nëse procesori mbështet komandën CPUID.

Në regjistrat e kontrollit CR0-CR3 janë shenja të gjendjes së procesorit të ruajtura të përbashkëta për të gjitha detyrat. Regjistri CR0 ka bitet e mëposhtme:

0. PE - Mbrojtja Aktivizo. Flamuri i modalitetit të mbrojtur. Nëse PE=1, atëherë mënyra e procesorit është e mbrojtur.

1. MP - E pranishme matematikore. Flamuri për praninë e një bashkëprocesori matematikor. Nëse MP=1, atëherë bashkëprocesori matematikor është i pranishëm.

2. EM - Emuloni zgjerimin numerik. Flamuri i emulimit të udhëzimeve me pikë lundruese. Kur vendoset flamuri, komandat për të punuar me numra realë mund të emulohen në softuer.

3.TS - Detyra e ndërruar. Flamuri i ndërruesit të detyrave. Flamuri vendoset pasi të ndërrohet detyra.

4. ET - Lloji i zgjerimit. Flamuri i tipit shtesë. Cakto nëse është i pranishëm bashkëprocesori aritmetik 387 ose më i lartë.

5. NE - Numeric Error Aktivizo. Flamuri i zgjidhjes së gabimit të bashkëprocesorit. Nëse flamuri është vendosur, atëherë në rast të një gabimi në bashkëprocesor, gjenerohet përjashtimi 16.

16.WP - Write Protect. Shkruani flamurin e mbrojtjes. Nëse flamuri është vendosur, atëherë kernelit të sistemit operativ i caktohen faqet e memories në modalitetin vetëm për lexim (vetëm për lexim).

18:00 - Maska e shtrirjes. Flamuri i maskimit të shtrirjes. Kur caktohet flamuri, atëherë do të gjenerohet përjashtimi 17 në rast të aksesit në operandët e pa rreshtuar. Nëse flamuri pastrohet, atëherë një përjashtim i tillë maskohet.

29. NW - Jo Write Through. Flamuri i çaktivizimit përmes shkrimit.

30. CD - Cache Disable. Çaktivizo flamurin e memorizimit.

31.PG - Aktivizimi i faqes. Flamuri i modalitetit të faqes së kujtesës. Kur caktohet flamuri, sistemi operativ funksionon në modalitetin e faqes.

Pjesët e mbetura të regjistrit CR0 janë të rezervuara.

Regjistri CR1 është i rezervuar. Regjistri CR2 ruan adresën lineare 32-bit në të cilën është marrë një gabim faqeje. 20 MSB-të e CR3 ruajnë adresën bazë fizike të tabelës së drejtorisë së faqeve dhe bitet e kontrollit të cache-it. Regjistri CR4 përmban bitet e aktivizimit për zgjerimet arkitekturore të MP. Në përgjithësi, këta regjistra përdoren në programimin e sistemit dhe vendosin mënyrën e funksionimit të procesorit (normal, të mbrojtur, etj.), pagimin e memories etj.

Regjistrat e adresave të sistemit. Regjistrat e tabelës së përshkruesit global GDTR dhe treguesit të sistemit të tabelës së ndërprerjeve IDTR ruajnë adresat bazë 32-bit dhe kufijtë e tabelës 16-bit, respektivisht. Regjistrat e segmentit të detyrave të sistemit TR dhe tabela e përshkruesit lokal LDTR janë përzgjedhës 16-bitësh. Ato korrespondojnë me regjistrat e përshkruesit hije, të cilët përmbajnë adresën bazë 32-bit të segmentit, kufirin 20-bit dhe bajtin e lejes.

Në regjistrat e korrigjimit DR0-DR3 përmban adresa të pikës së ndërprerjes 32-bit në modalitetin e korrigjimit; DR4-DR5 janë të rezervuara dhe nuk përdoren; DR6 tregon gjendjen e pikës së kontrollit; DR7 - menaxhon vendosjen e pikave të kontrollit në program.

Regjistrat e testimit TR janë pjesë e një grupi regjistrash specifikë për modelin, përbërja dhe numri i tyre varen nga lloji i procesorit: MP 386 përdor dy regjistra TR6 dhe TR7 për të kontrolluar sistemin e pagimit të alokimit të memories nga sistemi operativ. Pentium II dhe më lart përdorin dymbëdhjetë regjistra TR1-TR12. Ky grup regjistrash përmban gjithashtu rezultatet e testimit të MP dhe memorjes cache.

Artikulli zbulon kuptimin e termit "64 bit". Artikulli shqyrton shkurtimisht historinë e zhvillimit të sistemeve 64-bit, përshkruan procesorët aktualisht më të zakonshëm 64-bit të arkitekturës Intel 64 dhe sistemit operativ Windows 64-bit.

Prezantimi

Në kuadrin e arkitekturës kompjuterike, termi "64-bit" i referohet numrave të plotë 64-bit dhe llojeve të tjera të të dhënave që kanë një madhësi prej 64 bitësh. Sistemet "64-bit" mund t'i referohen arkitekturave të mikroprocesorëve 64-bit (p.sh. EM64T, IA-64) ose sistemeve operative 64-bitësh (p.sh. Windows XP Professional x64 Edition). Mund të flasim për përpilues që gjenerojnë kod programi 64-bit.

Ky artikull do të mbulojë çështje të ndryshme që lidhen me teknologjitë 64-bit. Artikulli ka për qëllim programuesit që duan të fillojnë të zhvillojnë programe 64-bit dhe ka për qëllim zhvilluesit e Windows, pasi çështja e njohjes me sistemet 64-bit është më e rëndësishmja për ta.

Historia e sistemeve 64-bit

64-biti ka hyrë vetëm kohët e fundit në jetën e shumicës së përdoruesve dhe programuesve të aplikacioneve. Sidoqoftë, puna me të dhëna 64-bit ka një histori të gjatë.

1961: IBM lëshon superkompjuterin IBM 7030 Stretch, i cili përdor fjalë të dhënash 64-bit, udhëzime makinerie 32-bit ose 64-bit.

1974: Control Data Corporation lëshon superkompjuterin vektor CDC Star-100, i cili përdor një arkitekturë fjalësh 64-bit (sistemet e mëparshme CDC kishin një arkitekturë 60-bit).

1976: Cray Research lëshon superkompjuterin e parë Cray-1, i cili zbaton një arkitekturë fjalësh 64-bit dhe do të shërbejë si bazë për të gjithë superkompjuterët e mëpasshëm me vektor Cray.

1985: Cray lëshon UNICOS, implementimi i parë 64-bit i sistemit operativ Unix.

1991: MIPS Technologies lëshon procesorin e parë 64-bit, R4000, i cili zbaton përsëritjen e tretë të arkitekturës MIPS të kompanisë së tyre. Ky procesor është përdorur në stacionet e punës grafike SGI që nga modeli IRIS Crimson. Kendall Square Research lëshon superkompjuterin e tij të parë KSR1 të ndërtuar në arkitekturën e tyre të pronarit 64-bit RISC që funksionon OSF/1.

1992: Digital Equipment Corporation (DEC) prezanton arkitekturën Alpha 64-bit, ideja e projektit PRISM.

1993: DEC lëshon sistemin operativ 64-bit të ngjashëm me Unix DEC OSF/1 AXP (më vonë u quajt Tru64 UNIX) për sistemet e tij Alpha.

1994: Intel shpall planet e saj për të zhvilluar arkitekturën 64-bit IA-64 (me Hewlett-Packard) si pasardhës të procesorëve të tyre 32-bit IA-32. Data e publikimit është caktuar për 1998-1999. SGI lëshon IRIX 6.0 me mbështetje 64-bit për chipset R8000.

1995: Sun lëshon familjen e procesorëve 64-bit SPARC UltraSPARC. HAL Computer Systems, një degë e Fujitsu, po lëshon stacione pune të bazuara në gjeneratën e parë të procesorit 64-bit SPARC64 të zhvilluar në mënyrë të pavarur nga HAL. IBM lëshon mikroprocesorët A10 dhe A30, si dhe procesorët 64-bit PowerPC AS. IBM po lëshon gjithashtu një përditësim 64-bit për AS/400 që mund të transformojë sistemin operativ, bazat e të dhënave dhe aplikacionet.

1996: Nintendo prezanton konsolën e lojës Nintendo 64, bazuar në një variant më të lirë të MIPS R4000. HP lëshon një implementim 64-bit 2.0 të arkitekturës së tij të pronarit PA-RISC PA-8000.

1997: IBM lëshon linjën RS64 të procesorëve 64-bit PowerPC/PowerPC AS.

1998: Sun lëshon Solaris 7 me mbështetje të plotë 64-bit UltraSPARC.

1999: Intel lëshon grupin e udhëzimeve për arkitekturën IA-64. AMD shpall publikisht grupin e saj të shtesave 64-bit për IA-32, i cili u emërua x86-64 (më vonë u riemërua AMD64).

2000: IBM lëshon kompjuterin e saj të parë të përputhshëm me ESA/390 64-bit zSeries z900, si dhe sistemin e ri operativ z/OS.

2001: Intel më në fund lëshon një linjë të procesorëve 64-bit, tani të quajtur Itanium, për serverë me performancë të lartë. Projekti është jashtë pritshmërive për shkak të vonesave të shumta në nxjerrjen e IA-64 në treg. NetBSD bëhet sistemi i parë operativ që funksionon në procesorin Intel Itanium pas lëshimit të tij. Përveç kësaj, Microsoft po lëshon gjithashtu Windows XP 64-bit Edition për arkitekturën IA-64 të familjes Itanium, megjithëse ruan aftësinë për të ekzekutuar aplikacione 32-bit duke përdorur shtresën WoW64.

2003: AMD prezanton linjat e procesorëve Opteron dhe Athlon 64 bazuar në arkitekturën AMD64, e cila është arkitektura e parë e procesorit 64-bit e bazuar në arkitekturën x86. Apple fillon të përdorë procesorin 64-bit "G5" PowerPC 970 të IBM. Intel pretendon se familja e çipave të procesorëve Itanium do të mbeten procesorët e vetëm 64-bit të zhvilluar nga kompania e tyre.

2004: Në përgjigje të suksesit komercial të AMD, Intel pranon se ata po zhvillonin një klon të shtesave AMD64, të cilat e quajtën IA-32e (më vonë u riemërua EM64T, dhe më pas përsëri Intel 64). Intel gjithashtu lëshon versionet e përditësuara Familjet e procesorëve Xeon dhe Pentium 4 me mbështetje për komanda të reja.

2004: VIA Technologies prezanton procesorin e saj Isaiah 64-bit.

2005: 31 janar Sun lëshon Solaris 10 me mbështetje për procesorët AMD64/Intel 64. 30 Prill Microsoft lëshon Windows XP Professional x64 Edition për procesorët AMD64/Intel 64.

2006: Sony, IBM dhe Toshiba lëshojnë procesorin Cell 64-bit për PlayStation 3, serverët, stacionet e punës dhe pajisje të tjera. Microsoft po lëshon Windows Vista me një version të përfshirë 64-bit për procesorët AMD64/Intel 64 që mbështet përputhshmërinë 32-bit. Të gjitha aplikacionet dhe komponentët e Windows janë 64-bit, por shumë prej tyre kanë versione 32-bitësh të përfshirë si shtojca për pajtueshmëri.

2009: Ashtu si Windows Vista, Windows 7 i Microsoft përfshin një version të plotë 64-bit për procesorët AMD64/Intel 64, dhe shumica e kompjuterëve të rinj vijnë me versionin 64-bit si parazgjedhje. Sistemi operativ i kompanisë është lëshuar Apple Mac OS X 10.6, "Snow Leopard" i cili ka një kernel 64-bit dhe është projektuar për procesorët AMD64 / Intel 64, megjithatë, ky sistem është instaluar si parazgjedhje vetëm në disa nga modelet më të fundit të kompjuterëve Apple. Shumica e aplikacioneve të dërguara me Mac OS X 10.6 tani janë gjithashtu 64-bit.

Për më shumë detaje mbi historinë e zhvillimit 64-bit, shihni artikullin e John Masha "Rruga e gjatë drejt 64-bit" dhe artikullin enciklopedik të Wikipedia "64-bit".

Programimi i aplikacioneve dhe sistemet 64-bit

Në kohën e këtij shkrimi në 2010, më të famshmet dhe më të përhapurat janë dy arkitekturat e mikroprocesorëve 64-bit: IA64 dhe Intel 64.
  1. IA-64 Arkitektura e mikroprocesorit 64-bit e zhvilluar bashkërisht nga Intel dhe Hewlett Packard. Zbatuar në mikroprocesorët Itanium dhe Itanium 2. Për një njohje më të detajuar me arkitekturën IA-64, mund t'i referoheni artikujve të mëposhtëm të Wikipedia: "IA-64", "Itanium", "Itanium 2". Mbështet arkitektura Itanium nje numer i madh i Prodhuesit e serverëve: Bull, Fujitsu, Fujitsu Siemens Computers, Hitachi, HP, NEC, SGI dhe Unisys. Këta shitës i janë bashkuar Intel dhe një mori zhvilluesish softuerësh për të formuar Aleancën e Zgjidhjeve Itanium për të avancuar arkitekturën dhe për të përshpejtuar ritmin e transferimit të softuerit.
  2. Intel 64(64 euro / x86-64 / x64 / EM64T) - kjo arkitekturë është një zgjerim i arkitekturës x86 me pajtueshmëri të plotë prapa. Ka shumë variante të emrit të kësaj arkitekture, gjë që çon në konfuzion, megjithëse, në fakt, të gjithë këta emra nënkuptojnë të njëjtën gjë: x86-64, AA-64, Hammer Architecture, AMD64, Yamhill Technology, EM64T, IA-32e , Intel 64, x64. Për të mësuar më shumë se si u krijuan kaq shumë emra, shihni artikullin e Wikipedia: "X86-64". Procesorët me arkitekturë Intel 64 përdoren gjerësisht në kompjuterët personalë. Dhe me shumë mundësi kompjuteri juaj është i pajisur me një procesor me këtë arkitekturë.
Është e rëndësishme të kuptohet se IA-64 dhe Intel 64 (AMD64) janë arkitektura mikroprocesoresh krejtësisht të ndryshme, të papajtueshme. Më tej në artikull, ne do të shqyrtojmë vetëm arkitekturën Intel 64 (x64 / AMD64), pasi është më e popullarizuar në mesin e zhvilluesve të aplikacioneve. software për sistemin operativ Windows. Për shkurtësi, modeli i programimit Intel 64 i disponueshëm për një programues në një sistem Windows 64-bit quhet Win64.

Arkitektura Intel 64 (AMD64)

Arkitektura Intel 64 në shqyrtim është një zgjatje e thjeshtë por e fuqishme e përputhshme e prapambetur e arkitekturës së trashëguar industriale x86. Ai shton një hapësirë ​​adresash 64-bit dhe zgjeron burimet e regjistrit për të mbështetur performancën më të mirë të programeve 64-bit të rikompiluar. Arkitektura ofron mbështetje për kodin e vjetër të aplikacionit 16-bit dhe 32-bit dhe sistemet operative pa modifikim ose ripërpilim.

Një tipar dallues i Intel 64 është mbështetja për gjashtëmbëdhjetë regjistra me qëllime të përgjithshme 64-bit (x86-32 kishte tetë regjistra 32-bit). aritmetikë 64-bit dhe operacionet logjike mbi numrat e plotë. Adresat virtuale 64-bit mbështeten. Për adresimin e regjistrave të rinj për komandat, janë futur "prefikset e zgjerimit të regjistrit", për të cilat është zgjedhur diapazoni i kodeve 40h-4Fh, të përdorura për komandat INC.<регистр>dhe DEC<регистр>në mënyrat 32 dhe 16-bit. Komandat INC dhe DEC në modalitetin 64-bit duhet të kodohen në formën më të përgjithshme me dy bajtë.

Regjistrat:

16 regjistra me numra të plotë 64-bit për qëllime të përgjithshme (RAX, RBX, RCX, RDX, RBP, RSI, RDI, RSP, R8 - R15),
8 regjistra 80-bitësh me pikë lundruese (ST0 - ST7),
8 regjistra 64-bitësh të shtesave multimediale (MM0 - MM7, ndani hapësirën me regjistrat ST0 - ST7),
16 regjistra SSE 128-bitësh (XMM0 - XMM15),
Treguesi RIP 64-bit dhe regjistri i flamurit RFLAGS 64-bit.

Nevoja për një arkitekturë 64-bit përcaktohet nga aplikacionet që kanë nevojë për një hapësirë ​​​​të madhe adresash. Para së gjithash, këta janë serverë me performancë të lartë, sisteme të menaxhimit të bazës së të dhënave, sisteme CAD dhe, natyrisht, lojëra. Aplikacione të tilla do të përfitojnë shumë nga një hapësirë ​​adresash 64-bit dhe më shumë regjistra. Numri i ulët i regjistrave të disponueshëm në arkitekturën e vjetër x86 kufizon performancën në detyrat kompjuterike. Numri i shtuar i regjistrave siguron performancë të mjaftueshme për shumë aplikacione.

Ne theksojmë avantazhet kryesore të arkitekturës x86-64:

  • Hapësira e adresave 64-bit;
  • grup i zgjeruar i regjistrave;
  • një grup komandash të njohura për zhvilluesit;
  • aftësia për të ekzekutuar aplikacione të vjetra 32-bit në një sistem operativ 64-bit;
  • aftësia për të përdorur sisteme operative 32-bit.

Sistemet operative 64-bit

Pothuajse të gjitha sistemet operative moderne tani kanë versione për arkitekturën Intel 64. Për shembull, Microsoft ofron Windows XP x64. Zhvilluesit kryesorë Sistemet UNIX ofroni gjithashtu versione 64-bit, si Linux Debian 3.5 x86-64. Sidoqoftë, kjo nuk do të thotë që i gjithë kodi i një sistemi të tillë është plotësisht 64-bit. Një pjesë e kodit të OS dhe shumë aplikacione mund të mbeten 32-bit, pasi Intel 64 ofron pajtueshmëri të prapambetur me aplikacionet 32-bit. Për shembull, 64-bit Versioni i Windows përdor një modalitet të veçantë WoW64 (Windows-on-Windows 64), i cili përkthen thirrjet nga aplikacionet 32-bit në burimet e një sistemi operativ 64-bit.

WoW64

Windows-on-Windows 64-bit (WoW64) është një nënsistem i sistemit operativ Windows që ju lejon të ekzekutoni aplikacione 32-bit në të gjitha versionet 64-bit të Windows.

Nënsistemi WoW64 nuk mbështet programet e mëposhtme:

  • programe të përpiluara për sistemet operative 16-bit;
  • Programet e modalitetit kernel të përpiluara për sistemet operative 32-bit.
Ka dallime WoW64 në varësi të arkitekturës së procesorit. Për shembull, versioni 64-bit i Windows i krijuar për procesorin Intel Itanium 2 përdor WoW64 për të imituar udhëzimet x86. Ky emulim kërkon shumë burime në krahasim me WoW64 për arkitekturën Intel 64, pasi kalon nga modaliteti 64-bit në modalitetin e pajtueshmërisë kur ekzekuton programe 32-bit.

WoW64 në arkitekturën Intel 64 (AMD64/x64) nuk kërkon emulim të udhëzimeve. Këtu, nënsistemi WoW64 emulon vetëm një mjedis 32-bit, për shkak të një shtrese shtesë midis aplikacionit 32-bit dhe API-së 64-bit të Windows. Diku kjo shtresë është e hollë, diku jo aq shumë. Për program dytësor Humbjet e performancës për shkak të pranisë së një shtrese të tillë do të jenë rreth 2%. Për disa programe, kjo vlerë mund të jetë më e lartë. Dy përqind nuk janë shumë, por mbani në mend se aplikacionet 32-bit funksionojnë pak më ngadalë në një sistem operativ Windows 64-bit sesa në një mjedis 32-bit.

Përpilimi i kodit 64-bit jo vetëm që eliminon nevojën për WoW64, por gjithashtu siguron një rritje shtesë të performancës. Kjo është për shkak të ndryshimeve arkitekturore në mikroprocesor, siç është rritja e numrit të regjistrave për qëllime të përgjithshme. Për një program mesatar, mund të prisni midis 5-15% fitim të performancës nga një ripërpilim i thjeshtë.

Për shkak të pranisë së shtresës WoW64, programet 32-bit punojnë më pak në mënyrë efikase në një mjedis 64-bit sesa në një mjedis 32-bit. Megjithatë, aplikacionet e thjeshta 32-bit mund të përfitojnë nga ekzekutimi i tyre në një mjedis 64-bit. Ju ndoshta e dini se një program i kompiluar me çelësin /LARGEADDRESSAWARE:YES mund të ndajë deri në 3 gigabajt memorie nëse një sistem operativ Windows 32-bit fillon me çelësin /3gb. Pra, i njëjti program 32-bit që funksionon në një sistem 64-bit mund të ndajë pothuajse 4 GB memorie (në praktikë, rreth 3.5 GB).

Nënsistemi WoW64 izolon programet 32-bit nga programet 64-bit duke ridrejtuar aksesin e skedarëve dhe regjistrit. Kjo parandalon që programet 32-bit të aksesojnë aksidentalisht të dhënat e aplikacionit 64-bit. Për shembull, një aplikacion 32-bitësh që ekzekuton një skedar DLL nga drejtoria %systemroot%\System32 mund të ketë akses aksidentalisht në një skedar DLL 64-bit që është i papajtueshëm me një program 32-bit. Për të shmangur këtë, nënsistemi WoW64 ridrejton aksesin nga dosja %systemroot%\System32 në dosjen %systemroot%\SysWOW64. Ky ridrejtim ndihmon në parandalimin e gabimeve të përputhshmërisë sepse kërkon një skedar DLL që është krijuar posaçërisht për të punuar me aplikacione 32-bit.

Mësoni më shumë rreth mekanizmave të ridrejtimit sistemi i skedarëve dhe regjistri mund të gjendet në seksionin MSDN "Drejtimi i aplikacioneve 32-bit".

Modeli i programimit Win64

Ashtu si në Win32, madhësia e faqes në Win64 është 4Kb. 64K-të e para të hapësirës së adresave nuk janë asnjëherë hartuar, kështu që adresa më e vogël e vlefshme është 0x10000. Ndryshe nga Win32, DLL-të e sistemit ngarkohen mbi 4 GB.

E veçanta e përpiluesve për Intel 64 është se ata mund të përdorin në mënyrë më efektive regjistrat për t'i kaluar parametrat në funksione, në vend që të përdorin stek. Kjo i lejoi zhvilluesit e arkitekturës Win64 të heqin qafe një gjë të tillë si një konventë thirrjesh (konventa e thirrjes). Në Win32, ju mund të përdorni konventa të ndryshme: __stdcall, __cdecl, __fastcall, e kështu me radhë. Ekziston vetëm një konventë thirrjesh në Win64. Konsideroni një shembull se si kalohen katër argumente të tipit të plotë në regjistra:

  • RCX: argumenti i parë
  • RDX: argumenti i dytë
  • R8: argumenti i tretë
  • R9: argumenti i katërt
Argumentet pas katër numrave të parë të plotë kalohen në pirg. Për argumentet float, përdoren regjistrat XMM0-XMM3, si dhe stack.

Dallimi në konventat e thirrjes do të thotë që kodi 64-bit dhe 32-bit nuk mund të përdoren në të njëjtin program. Me fjalë të tjera, nëse aplikacioni është përpiluar për modalitetin 64-bit, atëherë të gjitha bibliotekat e përdorura (DLL) duhet të jenë gjithashtu 64-bit.

Kalimi i parametrave nëpër regjistra është një nga risitë që i bën programet 64-bit më performante se ato 32-bit. Një fitim shtesë i performancës mund të merret duke përdorur llojet e të dhënave 64-bit.

Hapësira e adresës

Ndërsa një procesor 64-bit mund të adresojë teorikisht 16 ekzabajt memorie (2^64), Win64 aktualisht mbështet 16 terabajt (2^44). Ka disa arsye për këtë. Procesorët aktualë mund të kenë vetëm 1 terabajt (2^40) memorie fizike. Arkitektura (por jo hardueri) mund ta zgjerojë këtë hapësirë ​​deri në 4 petabajt (2^52). Sidoqoftë, në këtë rast, nevojitet një sasi e madhe memorie për tabelat e faqeve të hartuara me memorie.

Përveç këtyre kufizimeve, sasia e memories që disponohet në një version të veçantë të sistemit operativ Windows 64-bit varet gjithashtu nga konsideratat komerciale të Microsoft. Më poshtë jepet informacion mbi sasinë e memories së mbështetur nga versione të ndryshme të versioneve 64-bit të Windows:

Windows XP Professional - 128 Gbyte;
Windows Server 2003, Standard - 32 Gbyte;
Windows Server 2003, Enterprise - 1 Tbyte;
Windows Server 2003, Datacenter - 1 Tbyte;
Windows Server 2008, Datacenter - 2 Tbyte;
Windows Server 2008, Enterprise - 2 Tbyte;
Windows Server 2008, Standard - 32 Gbyte;
Windows Server 2008, Web Server - 32 Gbyte;
Vista Home Basic - 8 Gbyte;
Vista Home Premium - 16 GB;
Vista Business - 128 GB;
Vista Enterprise - 128 GB;
Vista Ultimate - 128 GB;
Windows 7 Home Basic - 8 Gbyte;
Windows 7 Home Premium - 16 GB;
Windows 7 Professional - 192 GB;
Windows 7 Enterprise - 192 GB;
Windows 7 Ultimate - 192 GB;

Zhvillimi i aplikacioneve 64-bit

Çështjet e zhvillimit të aplikacioneve 64-bit diskutohen më plotësisht në kurs "

Në vitin 1985 firma Intel lëshoi ​​një mikroprocesor 32-bit, i cili u bë paraardhësi i familjes IA-32. Zhvillimi i kësaj familjeje ka kaluar në një sërë fazash, ndër të cilat mund të dallohen këto: zbatimi i një blloku për përpunimin e numrave me pikë lundruese direkt në çipin MP (mikroprocesor I486), Prezantimi MMX-teknologjia e përpunimit të të dhënave me pikë fikse sipas parimit SIMD - udhëzim i vetëm me shumë të dhëna(një rrjedhë instruksioni - shumë rrjedha të dhënash) në mikroprocesor Pentium MMX dhe zhvillimi i kësaj teknologjie në numrat me pikë lundruese ( SSE - transmetimi SIMD Extension), e cila u shfaq për herë të parë në MP Pentium III. Megjithatë, tiparet kryesore të kësaj arkitekture mbeten të pandryshuara deri në kohën e sotme.

Arkitektura e një mikroprocesori 32-bit ndryshon ndjeshëm nga ajo e një mikroprocesori 16-bit. Disa nga këto dallime janë thjesht sasiore, ndërsa të tjerat janë themelore.

Dallimi kryesor i jashtëm është rritja e gjerësisë së autobusit të të dhënave dhe autobusit të adresave në 32 bit. Kjo, nga ana tjetër, shoqërohet me ndryshime në thellësinë e bitit të elementeve të brendshëm të mikroprocesorit dhe në mekanizmin për kryerjen e disa proceseve, për shembull, formimin e një adrese fizike.

Regjistrat e njësisë së përpunimit me pikë fikse u bënë 32-bit. Secila prej tyre mund të aksesohet si një fjalë e dyfishtë (32 bit). 16 bitët e poshtëm të këtyre regjistrave mund të aksesohen në të njëjtën mënyrë si në një mikroprocesor 16-bitësh.

Ndryshime sasiore dhe cilësore ndodhën në bllokun e regjistrave të segmenteve. Përveç katër regjistrave të përdorur në modalitetin real, CS, DS, SS dhe ES, janë shtuar edhe dy të tjerë: FS dhe GS. Megjithëse thellësia e biteve të regjistrave të këtij blloku mbeti e njëjtë (secili 16 bit), ato përdoren ndryshe në formimin e adresës fizike të RAM-it. Kur mikroprocesori funksionon në të ashtuquajturin modaliteti i mbrojtur, ata synojnë të kërkojnë përshkruesin e segmentit (përshkruesin) në tabelat përkatëse të sistemit, dhe adresa bazë dhe atributet e segmentit janë ruajtur tashmë në përshkrues. Gjenerimi i adresave në këtë rast kryhet nga blloku i segmentimit të menaxherit të memories.

Nëse përveç segmenteve, memoria ndahet edhe në faqe, atëherë llogaritja përfundimtare e adresave fizike kryhet nga blloku i kontrollit të faqeve.

Duke filluar me mikroprocesorin I486, çipi i mikroprocesorit përfshin një njësi të përpunimit të numrave me pikë lundruese, e cila përfshin tetë regjistra 80-bitësh për paraqitjen e shenjave, mantisave dhe eksponentëve të numrave të tillë.

Çipi i mikroprocesorit ka gjithashtu një memorie të brendshme cache, e cila është një memorie buferike e organizuar posaçërisht me shpejtësi të lartë, e krijuar për të ruajtur informacionin më të përdorur (komandat dhe të dhënat). Në modele të ndryshme të mikroprocesorëve, sasia e memories cache varion nga 8 KB deri në 512 KB.

Mikroprocesori në nivelin e harduerit mbështet modalitetin e shumëprogramimit të kompjuterit, domethënë aftësinë për të pasur në memorie disa programe të gatshme për ekzekutim në të njëjtën kohë, të cilat lëshohen nga sistemi operativ në përputhje me algoritmet e funksionimit të tij ose në varësi. mbi situatat e veçanta që zhvillohen në funksionimin e pajisjeve të jashtme.

Të lidhura pazgjidhshmërisht me këtë aftësi janë mbrojtjet e memories, të cilat ofrojnë kontroll mbi ndërveprimet e paautorizuara ndërmjet programeve individuale. Këto përfshijnë mbrojtjen e menaxhimit të kujtesës dhe mbrojtjen e privilegjeve.

Karakteristikat kryesore të formatit të komandës së zgjeruar janë aftësia për të përdorur cilindo nga regjistrat me qëllim të përgjithshëm në cilindo nga mënyrat e adresimit, si dhe shtimi i një mënyre tjetër adresimi - indeksi bazë relativ me shkallëzim. Në këtë rast, adresa efektive formohet si më poshtë:

EA = (bazë) + (indeks) shkallë + disp,

ku (baza) është vlera e regjistrit bazë; (indeks) - vlera e regjistrit të indeksit; shkallë - vlera e faktorit të shkallës (shkalla = 1,2,3,4); disp është vlera e kompensimit e koduar në vetë komandën.

Vini re se në një arkitekturë 32-bit, adresa efektive zakonisht referohet si offset, duke e dalluar atë nga kompensimi i koduar në vetë instruksionin (zhvendosja).

Arkitektura bit e PC.

Kodi Win64 kombinon veçoritë kryesore të kodit 32-bit, dhe gjithashtu përfshin ndryshime në përmirësimin e biteve. Programuesi ka:

· Treguesit 64-bit;

· Llojet e të dhënave 64-bit;

· Llojet e të dhënave 32-bit;

Ndërfaqja e Win64 API.

Vini re se llojet e të dhënave 32-bit nuk u zhdukën kur platforma u rrit në bit (siç bënë me llojet e të dhënave 16-bit kur kaluan në Win32). Kjo ndodh sepse edhe në aplikacionet 64-bitësh, në shumicën e rasteve, variablat nuk kërkojnë 8 bajt memorie, kështu që përdorimi i llojeve 64-bit në raste të tilla do të ishte jashtëzakonisht joefikas. sistemi operativ Do të më duhej të shtoja zero në bitet e larta për të rritur madhësinë e të dhënave në 8 bajt (të dhëna të tilla janë gjithashtu shumë të papërshtatshme për t'u lexuar). Kjo do të çonte në degradim të performancës.

Një fat tjetër pati treguesit 32-bit: ata u zhdukën plotësisht. Fakti është se përdorimi i treguesve 32-bit imponon një kufi në sasinë e memories së adresueshme. Për shembull, një nga avantazhet kryesore të modelit të memories së sheshtë (i cili është kryesori për programimin e aplikacioneve 32-bit për platformën NT) duke përdorur tregues 32-bitësh është aftësia për të krijuar segmente me madhësi deri në 4 GB. Treguesit e rinj 64-bit ofrojnë mundësinë për të adresuar deri në 16 TB memorie (1 TB = 1012 MB). Ky vëllim është mjaft i kërkuar nga aplikacionet moderne të biznesit.

Funksionet në API Win64 kanë pësuar ndryshime të vogla. Vetëm emrat e disa prej tyre janë ndryshuar për të pasqyruar platformën 64-bit. Në shumicën e rasteve, vetëm llojet e parametrave që janë argumente për thirrjet e funksionit kanë ndryshuar. Të gjitha përfitimet e tjera (mundësia për të ndaluar përdorimin e skedarëve paging, etj.) shoqërohen ose me një sasi të shtuar adresash ose me lloje të reja të dhënash.

Projektimi i bordeve të sistemit. Faktor formë

Dizajni i pllakës amë kompjuterike

Motherboard(Pllaka amtare angleze, MB, përdoret edhe emri i tabelës kryesore angleze - bordi kryesor; zhargon. mom, mother, motherboard) është një tabelë komplekse qarku e printuar me shumë shtresa, në të cilën janë instaluar përbërësit kryesorë. Kompjuter personal(procesori qendror, kontrolluesi i RAM-it dhe RAM-i i duhur, ROM-i i nisjes, kontrollorët për ndërfaqet bazë I/O). Si rregull, motherboard përmban lidhës (slots) për lidhjen e kontrollorëve shtesë, për të cilët zakonisht përdoren autobusët USB, PCI dhe PCI-Express.

CPU

Set logjik i sistemit (eng. Chipset) - një grup çipash që lidhin CPU-në me RAM-in dhe kontrollorët e pajisjeve periferike. Si rregull, grupet moderne të logjikës së sistemit ndërtohen në bazë të dy VLSI: "urat veriore" dhe "urat e jugut".

ura veriore(Anglisht Northbridge), MCH (Qendra e kontrolluesit të memories), kontrolluesi i sistemit - siguron lidhjen e CPU-së me nyjet duke përdorur autobusët me performancë të lartë: RAM, kontrollues grafik.

FSB-të si Hyper-Transport dhe SCI mund të përdoren për të lidhur CPU-në me kontrolluesin e sistemit.

Zakonisht RAM është i lidhur me kontrolluesin e sistemit. Në këtë rast, ai përmban kontrolluesin e kujtesës. Kështu, lloji i kontrolluesit të sistemit të përdorur zakonisht varet nga vëllimi maksimal RAM, si dhe gjerësia e brezit të autobusit të memories së një kompjuteri personal. Por tendenca aktuale është të ndërtohet kontrolluesi RAM direkt në CPU (për shembull, kontrolluesi i memories është i integruar në procesor në AMD K8 dhe Intel Core i7), gjë që thjeshton funksionet e kontrolluesit të sistemit dhe redukton gjenerimin e nxehtësisë.

PCI Express përdoret si autobus për lidhjen e një kontrolluesi grafik në pllaka moderne. U përdorën autobusë të përbashkët më parë (ISA, VLB, PCI) dhe autobusi AGP.

ura e jugut(eng. Southbridge), ICH (I / O controller hub), kontrollues periferik - përmban kontrollues të pajisjeve periferike ( hard drive, Ethernet, audio), kontrollorët e autobusëve për lidhjen e pajisjeve periferike ( autobus PCI, PCI-Express dhe USB), si dhe kontrollorët e autobusëve me të cilët janë lidhur pajisjet që nuk kërkojnë gjerësi të lartë brezi (LPC - përdoret për të lidhur një ROM boot; autobusi LPC përdoret gjithashtu për të lidhur një multikontrollues (anglisht Super I / O ) - mikroqarqe, duke ofruar mbështetje për ndërfaqet "të vjetruara" të transferimit të të dhënave me performancë të ulët: ndërfaqe serike dhe paralele, kontrollues i tastierës dhe miut).

Si rregull, urat veriore dhe jugore zbatohen si VLSI të veçanta, por ka edhe zgjidhje me një çip. Është grupi i logjikës së sistemit që përcakton gjithçka karakteristikat kryesore motherboard dhe cilat pajisje mund të lidhen me të.

Memorie me akses të rastësishëm (gjithashtu memorie me akses të rastësishëm, RAM) - në shkencën kompjuterike - memorie, pjesë e sistemit të memories kompjuterike, në të cilën procesori mund të hyjë në një veprim (kërcim, lëvizje, etj.). Është menduar për ruajtjen e përkohshme të të dhënave dhe komandave të nevojshme që procesori të kryejë operacione. RAM transferon të dhënat në procesor drejtpërdrejt, ose përmes memories cache. Çdo qelizë RAM ka adresën e saj individuale.

RAM mund të prodhohet si një njësi e veçantë ose të përfshihet në dizajnin e një kompjuteri me një çip ose mikrokontrollues.

Boot ROM - ruan softuerin që ekzekutohet menjëherë pas ndezjes së energjisë. Si rregull, boot ROM përmban BIOS, por mund të përmbajë gjithashtu softuer që funksionon brenda EFI.

Karakteristikat arkitekturore të MP 64-bit


5.1. Itanium 2 Intel

Procesori u zhvillua nga e para dhe, paralelisht, në dy versione njëherësh: nga inxhinierë nga Intel dhe Hewlett-Packard. Sidoqoftë, të dy çipat bazoheshin natyrshëm në të njëjtat ide, pasi ato megjithatë u krijuan së bashku, dhe të dy duhej të ishin bërë themeluesit e së njëjtës familje. Përbërja çimentuese ishte, natyrisht, një ideologji e vetme që zëvendësoi CISC - EPIC (Explicitly Parallel Instruction Computing), dhe një arkitekturë e re - IA-64, e cila përfshin një grup udhëzimesh, një përshkrim të regjistrave dhe gjëra të tjera të ngjashme. Sidoqoftë, arkitektura është thjesht një gjë e ndryshueshme, mjafton të kujtojmë se si procesorë të tillë CISC si 8086 dhe i80486 ndryshojnë nga njëri-tjetri, të dy të krijuar në bazë të 80x86.
Në mënyrë të ngjashme me Merced dhe McKinley, Itanium dhe Itanium 2 - të dyja janë ndërtuar mbi bazën e së njëjtës ideologji, por në varietete të ndryshme të arkitekturës. Në një kohë, e njëjta histori, në përgjithësi, ishte me Pentium dhe Pentium Pro. Megjithatë, ato kishin tipare të përbashkëta, dhe këto i kanë edhe ato, EPIC është "përgjegjës" për këtë. Para së gjithash, ne po flasim për superskalaritet të plotë në shkallë të gjerë, domethënë aftësinë për të ekzekutuar disa udhëzime njëkohësisht. Për çfarë, natyrisht, procesori përmban module ekzekutive - për operacione me numra të plotë, me numra me pikë lundruese, etj.
Ndryshe nga Pentium dhe pasardhësit e tij, të cilët e kuptojnë vetë kodin, procesorët EPIC mbështeten shumë në përpiluesin, i cili duhet të analizojë vetë kodin në mënyrë që të gjejë vendet optimale për të paralelizuar ekzekutimin e tij dhe t'i sigurojë procesorit këtë informacion. Prandaj, përdoret "në mënyrë eksplicite" - procesori nuk duhet të përpiqet të kuptojë se çfarë mund të ekzekutohet paralelisht dhe çfarë jo, etj. - përpiluesi do t'ia shpjegojë të gjitha këto paraprakisht. Plus, mekanizma të fuqishëm për parashikimin e degëve, ekzekutimin paraprak të pjesëve të kodit, ngarkimin paraprak të të dhënave dhe të ngjashme - ngarkimi i njësive të ekzekutimit duhet të shpërndahet sa më në mënyrë të barabartë.
Çështja me regjistrat është zgjidhur rrënjësisht, numri i të cilëve është rritur disa herë: për Itanium, numri i tyre është 128 për qëllime të përgjithshme (Fig. 1), 128 për ruajtjen e numrave me pikë lëvizëse, 8 regjistra kalimi dhe 64 përgjegjës. për ra -bot të mekanizmave të parashikimit. Gjithçka është e qartë këtu - një numër i tillë regjistrash, dhe madje realisht 64-bitësh, do të mjaftojnë për të ruajtur çdo numër të kërkuar për çdo numër të arsyeshëm të moduleve ekzekutive. Itanium, përfaqësuesi i parë i familjes, ka vetëm pesë regjistra të tillë - dy numra të plotë, dy për operacionet e memories dhe katër për operacionet me pikë lundruese. Kujtesa fizike adresohet me numra 44-bit, gjë që në fakt e kufizon madhësinë e saj në "vetëm" 17.6 Terabajt, blloqet me pikë lundruese punojnë me numra në përfaqësim 82-bit.

Intel hoqi dorë nga ideja për të zbatuar një bërthamë 32-bit 80x86 në formë harduerike, duke e konsideruar atë përdorimin shumë joefikas të zonës së die. Pra, për të qenë në gjendje të ekzekutonte kodin Itanium 80x86, u krijua një sistem përkthimi që konverton kodin 80x86 në IA-64 menjëherë.
Natyrisht, nëse gjërat e tjera janë të barabarta, performanca e një zgjidhjeje të tillë do të jetë më e ulët se x86 e pastër që funksionon në të njëjtën frekuencë. Megjithatë, askush nuk priste ekzekutimin me shpejtësi të lartë të programeve x86 nga Itanium - mbështetja për këtë arkitekturë është më shumë një kosto e periudhës së tranzicionit. Sidoqoftë, fakti mbetet se kjo familje nuk është e përshtatshme për zgjidhjen e problemeve 32-bit. Sidoqoftë, vështirë se dikush do të përdorë Itanium për qëllime të tilla në prani të softuerit të plotë 64-bit.
Për më tepër, vetë Itanium ishte pak a shumë një projekt pilot, siç ishte edhe Pentium Pro, kështu që procesori në përgjithësi duhet të shihet më shumë si një demonstrim i aftësive të arkitekturës. Një prekje karakteristike - chipset për Itanium, 460GX, mbështet vetëm PC100 SDRAM si memorie, gjë që tregon diçka për shpejtësinë me të cilën procesori është në gjendje të tresë të dhënat. Nga ana tjetër, megjithatë, në një farë mase ndërfaqe jo shumë e shpejtë me RAM kompensohet nga një cache shumë e madhe L3 - 2 ose 4 MB, që funksionon me frekuencë të plotë të procesorit (733 ose 800 MHz) me një xhiro deri në 12.8 GB / s.
Një detyrë tjetër e Itanium ishte të zgjidhte problemin me përpiluesit - në fund të fundit, procesorët EPIC, siç u përmend më lart, varen shumë prej tyre. Për dallim nga përpiluesit për përpunuesit 80x86, të cilët pothuajse nuk kishin asnjë efekt në performancën e tyre, këtu përpiluesit janë partnerë të plotë të procesorit - në fund të fundit, ata e furnizojnë atë me informacione që janë jashtëzakonisht të nevojshme për punë, dhe sa me cilësi të lartë do të jetë, do të varet. on - varni shpejtësinë e ekzekutimit të këtij programi nga procesori.
Itanium 2 është tashmë një produkt shumë më interesant tregtar. Krijuar nga Hewlett-Packard, i cili mori në dorë krijimin e procesorëve 64-bit të serisë PA-RISC, çipi doli të ishte shumë më i avancuar. Me një sasi pak më të vogël L3 (1,5 ose 3 MB) dhe një frekuencë pak më të lartë, 900 MHz ose 1 GHz, ai ofron një performancë e gjysmë deri në dy herë më të shpejtë në të njëjtat detyra si Itanium. Ai është, në fakt, përfaqësuesi i parë i arkitekturës IA-64.
Më tej, paralelizimi edhe më i madh është planifikuar në mënyrën më në modë për sot: procesori do të duhet të kalojë në dy bërthama fizike, të cilat pothuajse do të dyfishojnë performancën me një çmim mjaft të arsyeshëm - të paktën, rezultati do të dalë shumë më i lirë sesa nëse i njëjti numër i moduleve ekzekutive, regjistrave, etj., do të përpiqeshin të arrinin në një çip të vetëm.

5.2. Athlon 64 AMD

Para së gjithash, vërejmë se procesori Athlon 64 është pikërisht procesori desktop 64-bit që AMD fillimisht kishte planifikuar të lëshonte. Më pas, në dritën e lëshimit të procesorëve Pentium 4 me shpejtësi të lartë, shfaqjes së një autobusi 800 MHz dhe teknologjisë Hyper-Threading në to, AMD vendosi urgjentisht të synojë Opteron me një procesor të vetëm në tregun e desktopit, duke i dhënë emrin Athlon 64 FX. Sidoqoftë, Athlon 64 FX, për shkak të origjinës së serverit, doli të ishte i shtrenjtë dhe jo i përdorur gjerësisht. Është Athlon 64 ai që duhet të promovojë vërtet arkitekturën AMD64 për përdorim masiv.
Më poshtë është Tabela 1 me specifikimet për 64-bit Athlon 64 3200+, Athlon 65 FX-51 dhe Athlon XP 3200+ MPs:

Tabela 1

* Vini re se memoria në Athlon 64 dhe Athlon 64 FX është e klockuar në lidhje me orën bazë, kështu që orët aktuale të memories në këtë rast janë 129.4, 157.1 dhe 200 MHz.
Në fakt, Athlon 64 ndryshon nga homologu i tij më i vjetër Athlon 64 FX, përveç formës dhe dimensioneve të kasës, vetëm në kontrolluesin e memories. Edhe pse, në të njëjtën kohë, të dy procesorët janë bërë nga të njëjtat kristale. Kontrolluesi i kujtesës në Athlon 64 është me një kanal, dhe kjo është edhe dobësia dhe përparësia e tij në krahasim me Athlon 64 FX. Ana negative e kontrolluesit të kujtesës me një kanal në Athlon 64 është e dukshme: është një gjerësi më e ulët teorike.
Duke pasur parasysh që Athlon 64 është i aftë të punojë me memorie DDR400, gjerësia maksimale e brezit të kontrolluesit të kujtesës të integruar në CPU është 3.2 GB për sekondë. Kjo është dy herë më pak se karakteristika e ngjashme e Athlon 64 FX. Avantazhi i kontrolluesit të memories Athlon 64 është se, ndryshe nga kontrolluesi Athlon 64 FX, ai mbështet modulet e memories konvencionale të pa regjistruara. Module të tilla janë më të lira në krahasim me modulet e regjistrit, kanë kohë më agresive dhe punojnë më shpejt, edhe me të njëjtat cilësime si modulet e regjistrit. Kjo do të thotë, me një gjerësi bande më të ulët të ofruar nga kontrolluesi i memories Athlon 64, nënsistemi i kujtesës që e përdor atë ka një vonesë më të ulët, të cilën do ta tregojmë më poshtë.
AMD Athlon 64 pamjen të ngjashme me Opteron dhe Athlon 64 FX.
Dallimet gjenden vetëm në etiketim dhe më pak kunja në anën e pasme, pasi procesorët Athlon 64 janë instaluar në motherboard me Socket 754 dhe nuk janë në përputhje me bordet Socket 940 të krijuara për familjet Athlon 64 FX dhe CPU Opteron.
Përveç veçorive të listuara më sipër, procesorët e rinj Athlon 64 kanë një tjetër. Këta procesorë kanë mbështetje për teknologjinë Cool'n'Quiet, nga e cila në fakt u erdhi opsionet celulare deputet. Në fakt, Cool'n'Quiet është një lloj teknologjie e kursimit të energjisë PowerNow!, e cila është përdorur prej kohësh në deputetët celularë nga AMD. Por tani kjo teknologji më në fund ka ardhur në procesorët e desktopit të kompanisë. Mbështetja Cool'n'Quiet është një tjetër avantazh i Athlon 64 ndaj Athlon 64 FX/Opteron, të cilët nuk kanë ende asnjë teknologji të tillë. AMD i ka kushtuar vëmendje të madhe uljes së nivelit të shpërndarjes së nxehtësisë së procesorëve të saj desktop për një kohë të gjatë.
Duhet thënë se kompania ka qenë prej kohësh superiore ndaj Intel në këtë: modelet e vjetra të procesorëve AMD lëshojnë dukshëm më pak nxehtësi në ngarkesë maksimale sesa modelet më të vjetra Pentium 4. Gjithashtu, procesorët përdorin teknologji që reduktojnë shpërndarjen e nxehtësisë edhe në ngarkesë të ulët. Më shumë familje deputetësh
Veçoritë e Athlon XP kishin aftësinë për të kaluar në "modalitetin e gatishmërisë" (Halt/Stop Grant) gjatë ekzekutimit të komandës HALT, gjë që rezultoi në një ulje të temperaturës së procesorit kur ngarkohej nën 100%. Tani, megjithatë, AMD ka shkuar edhe më tej. Procesorët e rinj Athlon 64 kanë një skemë edhe më inteligjente të reduktimit të nxehtësisë.
Përveç gjendjeve të Grantit të Ndalimit/Ndalimit, Athlon 64 mund të rivendosë shpejtësinë e orës dhe tensionin për të reduktuar më tej shpërndarjen e nxehtësisë. Në funksionimin duke përdorur këtë teknologji, shpejtësia e orës së CPU-së kontrollohet nga drejtuesi i procesorit, i cili e rivendos ose e rrit atë bazuar në të dhënat mbi ngarkesën e tij. Në të vërtetë, nëse procesori përballon plotësisht punën që i është caktuar dhe ngarkesa e tij është shumë më pak se 100%, atëherë është e mundur të zvogëlohet frekuenca e orës së tij pa paragjykuar funksionimin e sistemit në tërësi: kjo nuk do të ndikojë në funksionimin të sistemit në çdo mënyrë. Për shembull, kur punoni në punë, punoni në aplikacione zyre, shikoni video, defragmentoni disqe dhe detyra të ngjashme, fuqia e procesorit nuk përdoret plotësisht. Është në raste të tilla që drejtuesi i procesorit kalon Athlon 64 në një frekuencë më të ulët të orës. Kur procesorit i kërkohet të japë rezultate të plota, për shembull, në lojëra, kur zgjidh problemet llogaritëse, në detyrat e kodimit të të dhënave, etj., frekuenca e procesorit rritet në nominale. Kjo është pikërisht mënyra se si funksionon teknologjia Cool'n'Quiet.
Në praktikë, duket kështu. Në kushte normale, me ngarkesë minimale MP, drejtuesi i procesorit rivendos frekuencën e Athlon 64 3200+ nga standardi 2 GHz në 800 MHz. Tensioni i procesorit më pas zvogëlohet në 1.3 V. Siç mund ta shihni, ulja e frekuencës së orës sigurohet duke reduktuar shumëzuesin e procesorit në 4x. Kjo, meqë ra fjala, përcakton edhe faktin që procesorët Athlon 64 3200+ furnizohen me një shumëzues të pafiksuar. Në këtë mënyrë, procesori vazhdon të punojë derisa ngarkesa e tij të kalojë 70-80%. Në veçanti, ne ishim në gjendje të ekzekutonim njëkohësisht defragmentimin e diskut, të luanim skedarë mp3 (skedarë audio) dhe të shikonim video MPEG-4 (skedarë video), ndërsa procesori vazhdoi të funksiononte në një frekuencë prej 800 MHz.
Kur ngarkesa në procesorin Athlon 64 në 800 MHz tejkalon kufirin e lejuar, drejtuesi e kalon MP në gjendjen tjetër, në të cilën frekuenca Athlon 64 3200+ është 1.8 GHz dhe tensioni i furnizimit është 1.4 V. Kjo arrihet përsëri duke reduktuar shumëzuesin, këtë herë në 9x. Dhe vetëm nëse në këtë rast ngarkesa e procesorit përsëri rezulton të jetë tepër e lartë, drejtuesi e kalon MP në modalitetin normal: frekuenca është 2 GHz, voltazhi i furnizimit është 1.5 V.
Vini re se në modalitetet me fuqi të ulët dhe me frekuencë të ulët, shpërndarja e nxehtësisë së procesorit Athlon 64 3200+ bie ndjeshëm. Për krahasim, ne paraqesim Tabelën 4 me shpërndarjen e nxehtësisë së këtij procesori në mënyrat kryesore.

Kështu, përdorimi i teknologjisë Cool'n'Quiet ju lejon të ulni ndjeshëm temperaturën e procesorit jo vetëm gjatë kohës së papunësisë, por edhe gjatë një numri detyrash që nuk kërkojnë performancë maksimale nga MP. Ajo që është e rëndësishme është që performanca e MP në detyra që kërkojnë burime të procesorit të mos ulet aspak. Si rezultat, kur përdorni sisteme ftohjeje me ventilatorë me shpejtësi të ndryshueshme, përdorimi i teknologjisë Cool'n'Quiet mund të reduktojë ndjeshëm nivelin e zhurmës.