namai - Duomenys
Laikinosios atminties įtaka kompiuterio veikimui. Kas yra kietojo disko talpyklos atmintis ir kam ji reikalinga Už ką atsakingas talpyklos dydis?

Tai ne apie grynuosius pinigus, o apie talpykla-procesoriaus atmintis ir kt. Iš apimties talpykla-atminties prekeiviai padarė dar vieną komercinį fetišą, ypač su centrinių procesorių ir standžiųjų diskų talpykla (vaizdo plokštės taip pat turi, bet iki to dar nepasiekė). Taigi, yra XXX procesorius su 1 MB L2 talpykla ir lygiai toks pat XYZ procesorius su 2 MB talpykla. Spėkite, kuris geresnis? Ak – nedaryk to iš karto!

Talpykla-atmintis yra buferis, kuriame saugoma tai, ką galima ir (arba) reikia atidėti vėliau. Procesorius dirba ir atsiranda situacijų, kai reikia kur nors saugoti tarpinius duomenis. Na, žinoma, talpykloje! - juk tai eilėmis greičiau nei RAM, nes... jis yra pačiame procesoriaus drožle ir dažniausiai veikia tuo pačiu dažniu. Tada po kurio laiko jis sugrąžins šiuos duomenis ir apdoros juos dar kartą. Grubiai tariant, tai tarsi ant konvejerio stovintis bulvių rūšiuotojas, kuris kiekvieną kartą susidūręs su ne bulvėmis (morkomis), meta į dėžę. O kai prisipildo, atsikelia ir išima joį kitą kambarį. Šiuo metu konvejeris stovi vietoje ir stebima prastovos laikas. Dėžutės tūris yra talpyklašioje analogijoje. IR Kiek jo Ar jums reikia 1 MB ar 12? Aišku, jei jo tūris mažas teks per daug laiko skirti nuėmimui ir tai bus paprasta, bet nuo tam tikro tūrio jo tolesnis didinimas nieko neduos. Na, o rūšiuotojas turės dėžę 1000 kg morkų – bet tiek neturės per visą pamainą ir dėl to NETAPS DU KARTUS GREIČIAU! Yra dar vienas subtilumas – didelis talpykla pirma, gali padidėti prieigos prie jo vėlavimai ir tuo pačiu padidėja klaidų tikimybė, pavyzdžiui, įsijungimo metu - antra. (apie KAIP šiuo atveju nustatyti procesoriaus stabilumą/nestabilumą ir sužinoti, kad klaida įvyksta būtent jo talpyklą, testą L1 ir L2 – galite perskaityti čia.) Trečia – talpykla suvalgo nemažą lusto plotą ir procesoriaus grandinės tranzistorių biudžetą. Tas pats pasakytina apie talpykla kietojo disko atmintis. Ir jei procesoriaus architektūra yra stipri, daugelyje programų ji turės 1024 KB ar daugiau talpyklos. Jei turite greitą HDD, tinka 16 MB ar net 32 ​​MB. Tačiau jokia 64 MB talpyklos to nepadarys jo greičiau, jei tai yra apdaila, vadinama žalia versija (Green WD), kurios greitis yra 5900, o ne reikalaujama 7200, net jei pastarasis turi 8 MB. Tada Intel ir AMD procesoriai tai naudoja skirtingai talpykla(paprastai kalbant, AMD yra efektyvesnis ir jų procesoriai dažnai yra patenkinti mažesnėmis vertėmis). Be to, Intel talpykla bendras, bet AMD jis yra individualus kiekvienam branduoliui. Greičiausias talpykla L1 AMD procesoriams yra 64 KB duomenims ir instrukcijoms, tai yra dvigubai daugiau nei Intel. Talpykla Trečiojo lygio L3 paprastai yra geriausiuose procesoriuose, pavyzdžiui AMD Phenom II 1055T X6 Lizdas AM3 2.8GHz arba konkurentas Intel Core i7-980X. Visų pirma, žaidimai mėgsta didelius talpyklos kiekius. IR talpykla Daugeliui profesionalių programų tai nepatinka (žr. Kompiuteris, skirtas atvaizdavimui, vaizdo įrašų redagavimui ir profesionalioms programoms). Tiksliau, tie, kurie yra reikliausi, apskritai jam neabejingi. Bet ko tikrai neturėtumėte daryti, tai rinktis procesorių pagal talpyklos dydį. Senasis Pentium 4 naujausiose apraiškose taip pat turėjo 2 MB talpyklos, kurių veikimo dažnis gerokai viršija 3 GHz – palyginkite jo našumas su pigiu dviejų branduolių Celeron E1***, veikiančiu maždaug 2 GHz dažniais. Jis nepaliks akmens nuo seno žmogaus. Aktualesnis pavyzdys yra aukšto dažnio dviejų branduolių E8600, kainuojantis beveik 200 USD (matyt, dėl 6 MB talpyklos) ir Athlon II X4-620 2,6 GHz, turintis tik 2 MB. Tai netrukdo Atlonui sunaikinti savo konkurentą.

Kaip matote iš grafikų, nėra talpykla nepakeis papildomų branduolių. „Athlon“ su 2 MB talpykla (raudona) lengvai pranoksta „Cor2Duo“ su 6 MB talpykla, net esant mažesniam dažniui ir beveik perpus pigiau. Daugelis žmonių tai taip pat pamiršta talpykla yra vaizdo plokštėse, nes paprastai jos turi ir procesorius. Naujausias pavyzdys – vaizdo plokštė GTX460, kur pavyksta ne tik sumažinti magistralės ir atminties talpą (apie ką pirkėjas spės) – bet ir CACHEšešėliai, atitinkamai nuo 512Kb iki 384Kb (apie tai pirkėjas NEATSPĖS). Ir tai taip pat padidins neigiamą indėlį į produktyvumą. Taip pat bus įdomu sužinoti našumo priklausomybę nuo talpyklos dydžio. Panagrinėkime, kaip greitai jis auga didėjant talpyklos dydžiui, naudodamiesi to paties procesoriaus pavyzdžiu. Kaip žinote, E6***, E4*** ir E2*** serijų procesoriai skiriasi tik talpyklos dydžiu (atitinkamai 4, 2 ir 1 MB). Veikdami tuo pačiu 2400 MHz dažniu, jie rodo tokius rezultatus.

Kaip matote, rezultatai labai nesiskiria. Pasakysiu daugiau – jei būtų buvęs 6 MB talpos procesorius, rezultatas būtų dar šiek tiek padidėjęs, nes procesoriai pasiekia prisotinimą. Tačiau modeliuose su 512Kb sumažėjimas būtų pastebimas. Kitaip tariant, 2MB užtenka net žaidimams. Apibendrinant galime padaryti tokią išvadą: talpykla gerai, kai viso kito JAU daug. Naivu ir kvaila ta pačia kaina keisti kietojo disko greitį ar procesoriaus branduolių skaičių talpyklos dydžiui, nes net ir talpiausia rūšiavimo dėžė neatstos kito rūšiuotojo.. Bet yra ir gerų pavyzdžių.. Pavyzdžiui, „Pentium Dual-Core“ ankstyvoje 65 nm proceso versijoje turėjo 1 MB talpyklos dviem branduoliams (E2160 serija ir panašiai), o vėlesnė 45 nm E5200 serijos versija vis dar turi 2 MB, o visi kiti dalykai yra vienodi ( o svarbiausia – KAINA). Žinoma, reikėtų rinktis pastarąjį.

Talpykla yra greitos prieigos tarpinis buferis, kuriame yra informacija, kurios greičiausiai bus prašoma. Prieiga prie duomenų talpykloje yra greitesnė nei originalių duomenų gavimas iš operatyvinės atminties (RAM) ir greičiau nei išorinė atmintis (standartinis diskas arba kietojo kūno diskas), todėl sumažėja vidutinis prieigos laikas ir padidėja bendras kompiuterio sistemos našumas.

Kai kurie centrinio procesoriaus (CPU) modeliai turi savo talpyklą, kad sumažintų prieigą prie laisvosios kreipties atminties (RAM), kuri yra lėtesnė nei registrai. Laikinoji atmintis gali suteikti didelę našumo naudą, kai RAM laikrodžio greitis yra žymiai mažesnis nei procesoriaus laikrodžio greitis. Laikinosios atminties laikrodžio greitis paprastai nėra daug mažesnis už procesoriaus greitį.

Talpyklos lygiai

CPU talpykla yra padalinta į kelis lygius. Šiuolaikiniame bendrosios paskirties procesoriuje lygių skaičius gali siekti 3. N+1 lygio talpykla paprastai yra didesnė, o prieigos greitis ir duomenų perdavimas lėtesnis nei N lygio talpykla.

Greičiausia atmintis yra pirmojo lygio talpykla – L1-cache. Tiesą sakant, tai yra neatskiriama procesoriaus dalis, nes ji yra tame pačiame luste ir yra funkcinių blokų dalis. Šiuolaikiniuose procesoriuose L1 talpykla paprastai skirstoma į dvi talpyklas – instrukcijų talpyklą ir duomenų talpyklą (Harvardo architektūra). Dauguma procesorių be L1 talpyklos negali veikti. L1 talpykla veikia procesoriaus dažniu ir paprastai ją galima pasiekti kiekvieną laikrodžio ciklą. Dažnai vienu metu galima atlikti kelias skaitymo / rašymo operacijas. Prieigos delsa paprastai yra 2–4 ​​pagrindiniai laikrodžio ciklai. Paprastai tūris yra mažas - ne daugiau kaip 384 KB.

Antrasis greičiausias yra L2-cache – antrojo lygio talpykla, paprastai esanti luste, kaip ir L1. Senesniuose procesoriuose pagrindinėje plokštėje yra lustų rinkinys. L2 talpyklos tūris nuo 128 KB iki 1–12 MB. Šiuolaikiniuose kelių branduolių procesoriuose antrojo lygio talpykla, esanti tame pačiame luste, yra atskira atmintis – kai bendras talpyklos dydis yra nM MB, kiekvienas branduolys turi nM/nC MB, kur nC yra procesoriaus branduolių skaičius. Paprastai L2 talpyklos, esančios pagrindiniame luste, delsa yra nuo 8 iki 20 pagrindinių laikrodžio ciklų.

Trečiojo lygio talpykla yra mažiausiai greita, tačiau gali būti labai įspūdingo dydžio – daugiau nei 24 MB. L3 talpykla yra lėtesnė nei ankstesnės talpyklos, bet vis tiek žymiai greitesnė nei RAM. Daugiaprocesorinėse sistemose jis yra plačiai naudojamas ir yra skirtas duomenims iš skirtingų L2 sinchronizuoti.

Kartais yra ir 4 lygio talpykla, dažniausiai ji yra atskirame luste. 4 lygio talpyklos naudojimas yra pateisinamas tik didelio našumo serveriams ir dideliems kompiuteriams.

Sinchronizavimo tarp skirtingų talpyklų (tiek vieno, tiek kelių procesorių) problema išsprendžiama talpyklos darna. Yra trys galimybės keistis informacija tarp skirtingų lygių talpyklų arba, kaip sakoma, talpyklos architektūros: įtraukianti, išskirtinė ir neišskirtinė.

Kiek svarbi L3 talpykla AMD procesoriams?

Iš tiesų prasminga kelių branduolių procesorius aprūpinti skirta atmintimi, kuria dalinsis visi galimi branduoliai. Šiame vaidmenyje sparti trečiojo lygio (L3) talpykla gali žymiai pagreitinti prieigą prie duomenų, kurių prašoma dažniausiai. Tada branduoliams, jei įmanoma, nereikės prieiti prie lėtos pagrindinės atminties (RAM).

Bent jau teoriškai. Neseniai AMD paskelbė Athlon II X4 procesorių, kuris yra „Phenom II X4“ modelis be L3 talpyklos, leidžiantis užsiminti, kad jis nėra toks reikalingas. Nusprendėme tiesiogiai palyginti du procesorius (su L3 talpykla ir be jos), kad patikrintume, kaip talpykla veikia našumą.

Spustelėkite paveikslėlį, kad padidintumėte.

Kaip veikia talpykla?

Prieš pasinerdami į testus, svarbu suprasti kai kuriuos pagrindus. Talpyklos veikimo principas yra gana paprastas. Talpykla saugo duomenis kuo arčiau procesoriaus apdorojimo branduolių, kad sumažintų procesoriaus užklausas į tolimesnę ir lėtesnę atmintį. Šiuolaikinėse stalinių kompiuterių platformose talpyklos hierarchija apima net tris lygius, einančius prieš prieigą prie RAM. Be to, antrojo ir ypač trečiojo lygio talpyklos tarnauja ne tik duomenims saugoti. Jų tikslas yra neleisti procesoriaus magistralei perkrauti, kai branduoliams reikia keistis informacija.

Pataikymai ir nesėkmės

Talpyklos architektūros efektyvumas matuojamas pataikymo dažniu. Duomenų užklausos, kurias gali patenkinti talpykla, laikomos įvykiais. Jei šioje talpykloje nėra reikiamų duomenų, užklausa perduodama toliau atminties konvejeriu ir skaičiuojamas praleidimas. Žinoma, praleidus informaciją, reikia daugiau laiko. Dėl to skaičiavimo vamzdyne atsiranda „burbulų“ (tuščiosios eigos) ir vėlavimų. Hits, priešingai, leidžia išlaikyti maksimalų našumą.

Talpyklos įvedimas, išskirtinumas, nuoseklumas

Pakeitimo politika nurodo, kaip talpykloje atlaisvinama vietos naujiems įrašams. Kadangi duomenys, įrašyti į talpyklą, ilgainiui turi atsirasti pagrindinėje atmintyje, sistemos gali tai padaryti tuo pačiu metu, kai rašo į talpyklą (perrašymas), arba gali pažymėti duomenų sritis kaip „nešvarias“ (perrašyti) ir rašyti į atmintis.. kai jis iškeldinamas iš talpyklos.

Duomenys keliuose talpyklos lygiuose gali būti saugomi išskirtinai, tai yra be pertekliaus. Tada nerasite tų pačių duomenų eilučių dviejose skirtingose ​​talpyklos hierarchijose. Arba talpyklos gali veikti visapusiškai, ty garantuojama, kad apatiniuose talpyklos lygiuose bus duomenys, esantys viršutiniuose talpyklos lygiuose (arčiau procesoriaus branduolio). „AMD Phenom“ naudoja išskirtinę L3 talpyklą, o „Intel“ laikosi įtraukiančios talpyklos strategijos. Suderinamumo protokolai užtikrina duomenų vientisumą ir šviežumą skirtinguose branduoliuose, talpyklos lygiuose ir net procesoriuose.

Talpyklos dydis

Didesnėje talpykloje gali būti daugiau duomenų, tačiau ji linkusi padidinti delsą. Be to, didelė talpykla sunaudoja daug procesoriaus tranzistorių, todėl svarbu rasti pusiausvyrą tarp tranzistoriaus biudžeto, matricos dydžio, energijos suvartojimo ir našumo / delsos.

Asociatyvumas

Įrašai RAM gali būti tiesiogiai susieti su talpykla, tai yra, yra tik viena talpyklos vieta duomenų kopijai iš RAM, arba jie gali būti n-krypčiai asociatyvūs, tai yra, talpykloje yra n galimų vietų, kur tai duomenys gali būti saugomi. Didesnis asociatyvumo laipsnis (iki visiškai asociatyvių talpyklų) suteikia didesnį talpyklos lankstumą, nes talpykloje esamų duomenų nereikia perrašyti. Kitaip tariant, aukštas n laipsnio asociatyvumas garantuoja didesnį pataikymo rodiklį, bet taip pat padidina delsą, nes reikia daugiau laiko patikrinti visas tas asociacijas, ar nėra atitikimo. Paprastai didžiausias susiejimo laipsnis yra pagrįstas paskutiniam talpyklos lygiui, nes ten pasiekiama didžiausia talpa, o ieškant duomenų už šios talpyklos ribų procesorius pasieks lėtą RAM.

Štai keletas pavyzdžių: Core i5 ir i7 naudoja 32 KB L1 talpyklos su 8 krypčių asociatyvumu duomenims ir 32 KB L1 talpyklos su 4 krypčių asociatyvumu instrukcijoms. Suprantama, kad „Intel“ nori, kad instrukcijos būtų pasiekiamos greičiau, o L1 duomenų talpykla turėtų maksimalų pataikymo rodiklį. „Intel“ procesorių L2 talpykla turi 8 krypčių asociatyvumą, o „Intel L3“ talpykla yra dar išmanesnė, nes joje įdiegtas 16 krypčių asociatyvumas, siekiant maksimaliai padidinti paspaudimus.

Tačiau AMD laikosi kitokios strategijos su Phenom II X4 procesoriais, kurie naudoja dvipusę asociatyviąją L1 talpyklą, kad sumažintų delsą. Siekiant kompensuoti galimus praleidimus, talpyklos talpa buvo padvigubinta: 64 KB duomenims ir 64 KB instrukcijoms. L2 talpykla turi 8 krypčių asociatyvumą, kaip ir Intel dizainas, tačiau AMD L3 talpykla veikia su 48 krypčių asociatyvumu. Tačiau sprendimas pasirinkti vieną talpyklos architektūrą, o ne kitą, negali būti įvertintas neatsižvelgus į visą procesoriaus architektūrą. Visiškai natūralu, kad testų rezultatai turi praktinę reikšmę, o mūsų tikslas buvo būtent praktinis visos šios sudėtingos daugiapakopės talpyklos struktūros išbandymas.

Kiekvienas šiuolaikinis procesorius turi specialią talpyklą, kurioje saugomos procesoriaus instrukcijos ir duomenys, paruošti naudoti beveik akimirksniu. Šis lygis paprastai vadinamas 1 arba L1 lygio talpykla ir pirmą kartą buvo pristatytas 486DX procesoriuose. Neseniai AMD procesoriai tapo standartiniais su 64 KB L1 talpyklos viename branduolyje (duomenims ir instrukcijoms), o „Intel“ procesoriai naudoja 32 KB L1 talpyklą vienam branduoliui (taip pat duomenims ir instrukcijoms).

L1 talpykla pirmą kartą pasirodė 486DX procesoriuose, po to ji tapo neatsiejama visų šiuolaikinių procesorių savybe.

Antrojo lygio talpykla (L2) atsirado visuose procesoriuose po „Pentium III“ išleidimo, nors pirmieji jos diegimai ant pakuotės buvo „Pentium Pro“ procesoriuje (bet ne mikroschemoje). Šiuolaikiniuose procesoriuose yra iki 6 MB lustinės L2 talpyklos. Pavyzdžiui, šis tūris yra padalintas į du „Intel Core 2 Duo“ procesoriaus branduolius. Įprastos L2 konfigūracijos suteikia 512 KB arba 1 MB talpyklos vienam branduoliui. Procesoriai su mažesne L2 talpykla paprastai yra žemesnio kainų lygio. Žemiau pateikiama ankstyvųjų L2 talpyklos diegimų diagrama.

„Pentium Pro“ procesoriaus pakuotėje turėjo L2 talpyklą. Vėlesnėse „Pentium III“ ir „Athlon“ kartose L2 talpykla buvo įdiegta per atskirus SRAM lustus, o tai tuo metu buvo labai įprasta (1998, 1999).

Paskesnis pranešimas apie proceso technologiją iki 180 nm leido gamintojams pagaliau integruoti L2 talpyklą į procesoriaus antgalį.


Pirmieji dviejų branduolių procesoriai tiesiog naudojo esamus dizainus, kurių pakuotėje buvo du štampai. AMD pristatė dviejų branduolių procesorių ant monolitinio lusto, pridėjo atminties valdiklį ir jungiklį, o Intel tiesiog surinko du vieno branduolio lustus į vieną paketą savo pirmajam dviejų branduolių procesoriui.


Pirmą kartą L2 talpykla buvo pradėta dalintis tarp dviejų „Core 2 Duo“ procesorių skaičiavimo branduolių. AMD žengė toliau ir sukūrė savo pirmąjį keturių branduolių „Phenom“ nuo nulio, o „Intel“ vėl panaudojo porą štampų, šį kartą du dviejų branduolių „Core 2“ antgalius, kad sumažintų išlaidas.

Trečiojo lygio talpykla egzistuoja nuo Alpha 21165 procesoriaus (96 KB, procesoriai pristatyti 1995 m.) arba IBM Power 4 (256 KB, 2001 m.) pirmųjų dienų. Tačiau x86 pagrįstose architektūrose L3 talpykla pirmą kartą pasirodė su Intel Itanium 2, Pentium 4 Extreme (Gallatin, abu procesoriai 2003 m.) ir Xeon MP (2006 m.) modeliuose.

Ankstyvieji diegimai tiesiog suteikė kitą talpyklos hierarchijos lygį, nors šiuolaikinės architektūros naudoja L3 talpyklą kaip didelį bendrą buferį duomenų perdavimui tarp branduolių kelių branduolių procesoriuose. Tai pabrėžia aukštas asociatyvumo n laipsnis. Geriau ieškoti duomenų šiek tiek ilgiau talpykloje, nei atsidurti situacija, kai keli branduoliai naudoja labai lėtą prieigą prie pagrindinės RAM. AMD pirmą kartą pristatė L3 talpyklą darbalaukio procesoriuje su jau minėta Phenom linija. 65 nm Phenom X4 turėjo 2 MB bendrinamos L3 talpyklos, o šiuolaikiniame 45 nm Phenom II X4 jau turi 6 MB bendros L3 talpyklos. „Intel Core i7“ ir „i5“ procesoriai naudoja 8 MB L3 talpyklos.

Šiuolaikiniai keturių branduolių procesoriai turi L1 ir L2 talpyklas kiekvienam branduoliui, taip pat didelę L3 talpyklą, kurią dalijasi visi branduoliai. Bendrinama L3 talpykla taip pat leidžia keistis duomenimis, kuriuos branduoliai gali dirbti lygiagrečiai.


Sveiki vaikinai Pakalbėkime apie procesorių, tiksliau, apie jo talpyklą. Procesoriaus talpykla gali būti skirtinga, pavyzdžiui, dabar turiu Pentium G3220 (1150 lizdas), tai modernus procesorius ir turi 3 MB talpyklos. Tačiau tuo pat metu senojo modelio Pentium D965 (775 lizdas) yra 4 MB talpyklos. Bet tuo pačiu metu G3220 yra kelis kartus greitesnis nei D965, turiu omenyje tai, kad talpykla yra gera, bet svarbiausia, kad talpykla būtų moderni. Turėkite tai omenyje, senesnių procesorių talpyklos atmintis yra daug lėtesnė nei naujų.

Pakalbėkime apie kai kuriuos įrenginius, kurie turi įtakos našumui. Pažiūrėkime, paimkime kietąjį diską, ar jis turi talpyklą? Taip, yra, bet jis mažas, nors turi nedidelę įtaką veikimui. Tada kas atsitiks? Tada ateina RAM, viskas, su kuo dirba programa ar procesorius, visa tai dedama į RAM. Jei RAM nėra duomenų, jie nuskaitomi iš standžiojo disko, ir tai vyksta labai lėtai. Bet RAM jau labai greita, jos gali būti gana daug. Tačiau RAM yra greita, palyginti su kietuoju disku, procesoriui ji vis dar nėra labai greita, todėl pastarasis taip pat turi savo talpyklą, kuri ir taip yra labai greita!

Ką veikia procesoriaus talpykla? Būtent šioje talpykloje procesorius saugo tai, ką dažnai naudoja, tai yra, visokias komandas ir instrukcijas. Atitinkamai, kuo daugiau jų yra, tuo geriau, tačiau tai nėra visiškai tiesa. Kiek turite talpyklos? Jei nežinote, aš jums parodysiu, kaip tai sužinoti, viskas paprasta. Na, pažiūrėkite, kokia įdomi situacija, vėl grįžkime prie senų procesų. Atrodo, kad jei yra daug talpyklos, tai gerai. Bet yra Q9650 procesorius (775 lizdas), kuris turi 12 MB talpyklos, tačiau jis nė iš tolo neprilygsta šiuolaikiniams Core i5 ar net Core i3 modeliams. „i5“ turi daug mažiau talpyklos, tai yra vos 6 MB, o „i3“ turi dar mažiau – tik 3 MB.

Suprantu, kad apskritai šiuolaikiniai procesoriai yra daug greitesni nei seni. Bet aš ne apie tai kalbu. Talpykla ir talpykla skiriasi; aukščiausios klasės Q9650 tiesiog turi lėtą talpyklą, palyginti su procesoriais šiuolaikiniame lizde. Todėl iš tų 12 MB jokios naudos. Tai viskas, ką aš turiu galvoje: nesivaikykite kiekybės, siekite kokybės. Taigi taip. Visa tai parašiau kaip pastabą jums, tikiuosi, kad jums tai bus naudinga

Štai paprastas paveikslėlis, kaip veikia talpykla:

Ir čia yra dar vienas paveikslėlis, čia taip pat nurodytas kitas įrenginys, tai yra valdiklis, kuris tiesiog pasako, ar talpykloje yra duomenų, ar ne:

Talpyklos atmintis yra labai greita. Nelabai išmanau apie procesorius, bet būtų įdomu sužinoti, jei ši talpykla būtų... 100 MB... ar net 1 GB... ar procesorius būtų greitesnis? Tai, žinoma, ir dabar yra fantastiška, bet dabar yra procesorių su didžiuliu talpyklos kiekiu... apie 30 MB ar daugiau.. Nesu tikras dėl to, bet atrodo, kad ši talpyklos atmintis yra labai brangi ir paprastai sunku įdėti jį į procesorių, turiu omenyje didelę tūrį

Na, o dabar parodysiu, kaip sužinoti, kiek talpyklos yra procesoriuje. Jei turite „Windows 10“, tai puiku, nes ji gali rodyti visas talpyklas, ten yra trys lygiai. Nors trečias lygis atrodo pats svarbiausias, jis yra ir didžiausias. Taigi, pažiūrėkite, atidarykite užduočių tvarkyklę ir eikite į skirtuką „Performance“, o čia CPU skirtuke galite pamatyti informaciją apie talpyklą, čia ji yra:

Čia matosi, kad turiu Pentium G3220, gana gerą procesorių, nors ir nebrangų. Bet iš tikrųjų jis yra greitesnis nei daugelis modelių su 775 lizdu, kuriuos galima vadinti beveik aukščiausios klasės modeliais ir kurie turi daug daugiau talpyklos... Štai tokie dalykai...

Bet aš jums pasakysiu atvirai, kad tai nėra aiškus būdas pamatyti, kiek talpyklos turi procesorius. Patariu naudoti CPU-Z įrankį, jei galvojate taip: taip, tai programa, man reikia ją įdiegti ir visa tai, bet na... Tada sustok! Šią programą naudoja šaunūs overlockeriai, kurie perlaiko savo procesorius. Diegimo metu programa nesukuria krūvos failų ir iš tikrųjų diegimas yra tik programos išpakavimas į Program Files, tada cpuz.exe galima nukopijuoti bet kur ir paleisti, jis veiks! Jie ką tik paleido ir viskas, ji surinko informaciją ir žiūrėk! Jį galite lengvai atsisiųsti iš interneto, nes jį rasite ant kiekvieno kampo. Tiesiog įsitikinkite, kad negraibysite virusų. Norėdami tai padaryti, atsisiųskite, pavyzdžiui, iš minkštojo portalo. Tiesiog parašykite CPU-Z soft portalo paieškoje. CPU-Z veikia beveik visose Windows versijose, išskyrus seniausias...

Apskritai, galite jį atsisiųsti iš šios svetainės: cpuid.com, aš tiesiog apie tai nežinojau ir buvau įpratęs atsisiųsti iš kitų svetainių!

Na, tikiuosi, kad galėsite jį atsisiųsti be problemų. Dabar paleidžiate jį ir viskas apie procesorių yra po ranka. Taigi paleidau CPU-Z ir štai ką jis parodė apie mano Pentium G3220:

Ten, kur aš apbraukiau laukelį, ten rodoma talpykla. Kas yra būdas, gerai, sakoma 8 krypčių, 12 krypčių, na, aš nežinau, kas tai yra, atsiprašau. Bet kaip matote čia, aiškiai matote ne tik talpyklą, bet ir kitą informaciją, dažnį, branduolius ir gijas. Na, taip pat įdomu tai, ką čia rodo viena ar dvi talpyklos. Na, aš čia tiesiog parašiau 3 MB, tai yra, turiu tik 3 MB talpyklos.

Tačiau, pavyzdžiui, kalbant apie aukščiausios klasės Q9650, situacija ten yra šiek tiek kitokia, nors jame yra 12 MB talpyklos, tačiau tai iš esmės yra du blokai po 6 MB, o CPU-Z tai nustato:

Beje, kaip matote, yra įsijungimas iki 4 GHz, o tai nėra blogai. Beje, toks įsijungimas gali būti aušinamas oru. Bet tai visai kita istorija...

Beje, dar vienas įdomus dalykas yra tai, kad 775 lizdo modeliai neturi trečiojo lygio L3 talpyklos... Tai yra, yra tik L1 ir L2..., bet aš nežinojau...

Taigi tai yra dalykai. Tikiuosi viską aiškiai parašiau. Dar kartą kartoju, nesivaikykite kiekio. Taigi tikrai nesigailiu, bet vis dėlto... Trumpai tariant, ėmiau ir pasistačiau sau kompiuterį ant 1150 lizdo. Na manau viskas gerai. Bet pasijutau šiek tiek įsižeidęs, kai sužinojau, kad išleistas 1151 lizdas ir kainuoja tiek pat, o gal net šiek tiek pigiau... Bet iš tikrųjų ten procesoriai greitesni... Na, gerai. Aš ką tik nusipirkau kompiuterį amžiams, bet džiaugiausi, kad mano plokštė ir šis Asus Gryphon Z87 palaiko procesorius, pagrįstus Velnio kanjono branduoliu! Tai buvo dovana, nes „Intel“ anksčiau teigė, kad šiuos procesorius palaikys tik Z97 mikroschemų rinkinys, bet aš paėmiau prakeiktą Z87!

Trumpai tariant, tokie dalykai

Tai viskas, vaikinai. Tikiuosi, kad viskas bus gerai ir ši informacija jums buvo naudinga, sėkmės

Namo! talpyklos procesorius 2016-07-30

virtmachine.ru

Laikinosios atminties įtaka kompiuterio veikimui

Visi vartotojai puikiai žino tokius kompiuterio elementus kaip procesorius, atsakingas už duomenų apdorojimą, taip pat laisvosios kreipties atmintis (RAM arba RAM), kuri yra atsakinga už jų saugojimą. Tačiau tikriausiai ne visi žino, kad yra ir procesoriaus talpyklos atmintis (Cache CPU), tai yra paties procesoriaus RAM (vadinamoji ultra-RAM).

Talpyklos funkcija

Kokia priežastis paskatino kompiuterių dizainerius naudoti specialią procesoriaus atmintį? Ar neužtenka kompiuterio RAM talpos?

Iš tiesų, ilgą laiką asmeniniai kompiuteriai veikė be talpyklos atminties. Tačiau, kaip žinote, procesorius yra greičiausias įrenginys asmeniniame kompiuteryje ir jo greitis didėja su kiekviena naujos kartos procesoriu. Šiuo metu jo greitis matuojamas milijardais operacijų per sekundę. Tuo pačiu metu standartinė RAM žymiai nepadidino savo našumo per savo evoliuciją.

Paprastai kalbant, yra dvi pagrindinės atminties lustų technologijos – statinė atmintis ir dinaminė atmintis. Nesigilindami į jų dizaino detales, pasakysime tik tiek, kad statinė atmintis, skirtingai nei dinaminė, nereikalauja regeneracijos; Be to, statinėje atmintyje vienam informacijos bitui naudojami 4–8 tranzistoriai, o dinaminėje – 1–2 tranzistorius. Atitinkamai, dinaminė atmintis yra daug pigesnė nei statinė, bet tuo pačiu ir daug lėtesnė. Šiuo metu RAM lustai gaminami dinaminės atminties pagrindu.

Apytikslė procesorių ir RAM greičio santykio raida:

Taigi, jei procesorius visą laiką imtų informaciją iš RAM, jam tektų laukti lėtos dinaminės atminties ir ji visą laiką neveiktų. Tuo pačiu atveju, jei statinė atmintis būtų naudojama kaip RAM, kompiuterio kaina padidėtų kelis kartus.

Štai kodėl buvo sukurtas pagrįstas kompromisas. Didžioji RAM dalis išliko dinamiška, o procesorius gavo savo sparčiąją talpyklą, pagrįstą statinėmis atminties lustais. Jo tūris palyginti nedidelis – pavyzdžiui, antrojo lygio talpyklos dydis siekia vos kelis megabaitus. Tačiau verta prisiminti, kad visa pirmųjų IBM PC kompiuterių RAM buvo mažesnė nei 1 MB.

Be to, talpyklos technologijos diegimo tikslingumui įtakos turi ir tai, kad skirtingos operatyviojoje atmintyje esančios programos skirtingai apkrauna procesorių ir dėl to yra daug duomenų, kuriuos reikia apdoroti prioritetiniu lyginant su kitomis.

Talpyklos istorija

Griežtai tariant, prieš perkeliant talpyklą į asmeninius kompiuterius, ji jau keletą dešimtmečių buvo sėkmingai naudojama superkompiuteriuose.

Pirmą kartą tik 16 KB talpyklos atmintis pasirodė kompiuteryje, kurio pagrindas yra i80386 procesorius. Šiandien šiuolaikiniai procesoriai naudoja įvairaus lygio talpyklą – nuo ​​pirmojo (greičiausia mažiausio dydžio talpykla – dažniausiai 128 KB) iki trečiojo (lėčiausia didžiausio dydžio talpykla – iki dešimčių MB).

Iš pradžių išorinė procesoriaus talpykla buvo atskiroje mikroschemoje. Tačiau laikui bėgant magistralė, esanti tarp talpyklos ir procesoriaus, tapo kliūtimi, sulėtinančia duomenų mainus. Šiuolaikiniuose mikroprocesoriuose tiek pirmasis, tiek antrasis talpyklos atminties lygiai yra pačiame procesoriaus šerdyje.

Ilgą laiką procesoriai turėjo tik du talpyklos lygius, tačiau Intel Itanium CPU pirmasis turėjo trečiojo lygio talpyklą, bendrą visiems procesoriaus branduoliams. Taip pat yra procesorių su keturių lygių talpykla.

Talpyklos architektūra ir principai

Šiandien žinomi du pagrindiniai talpyklos atminties organizavimo tipai, kilę iš pirmųjų teorinių raidų kibernetikos srityje – Prinstono ir Harvardo architektūrose. Prinstono architektūra reiškia vieną atminties erdvę duomenims ir komandoms saugoti, o Harvardo architektūra – atskiras. Dauguma x86 asmeninių kompiuterių procesorių naudoja atskirą talpyklos atmintį. Be to, šiuolaikiniuose procesoriuose atsirado ir trečiojo tipo talpyklos atmintis – vadinamasis asociatyvinis vertimo buferis, skirtas operacinės sistemos virtualios atminties adresų konvertavimui į fizinės atminties adresus pagreitinti.

Supaprastinta laikinosios atminties ir procesoriaus sąveikos diagrama gali būti aprašyta taip. Pirmiausia procesorius patikrina, ar procesoriui reikalinga informacija yra greičiausioje pirmojo lygio talpykloje, tada antrojo lygio talpykloje ir pan. Jei reikiamos informacijos nerandama jokiame talpyklos lygyje, jie tai vadina klaida arba talpyklos praleidimu. Jei talpykloje informacijos visai nėra, tai procesorius turi ją paimti iš RAM ar net iš išorinės atminties (iš standžiojo disko).

Tvarka, kuria procesorius ieško informacijos atmintyje:

Taip procesorius ieško informacijos

Laikinosios atminties veikimui ir jos sąveikai su procesoriaus skaičiavimo blokais, taip pat RAM valdyti, yra specialus valdiklis.

Procesoriaus branduolio, talpyklos ir RAM sąveikos organizavimo schema:


Talpyklos valdiklis yra pagrindinis ryšys tarp procesoriaus, RAM ir talpyklos atminties

Reikėtų pažymėti, kad duomenų kaupimas talpykloje yra sudėtingas procesas, kuriame naudojama daug technologijų ir matematinių algoritmų. Tarp pagrindinių sąvokų, naudojamų talpykloje, yra talpyklos rašymo metodai ir talpyklos asociatyvumo architektūra.

Talpyklos rašymo metodai

Yra du pagrindiniai informacijos įrašymo į talpyklos atmintį būdai:

  1. Atrašymo metodas – duomenys pirmiausia įrašomi į talpyklą, o tada, susidarius tam tikroms sąlygoms, į RAM.
  2. Perrašymo metodas – duomenys vienu metu įrašomi į RAM ir talpyklą.

Talpyklos asociatyvumo architektūra

Talpyklos asociatyvumo architektūra apibrėžia būdą, kuriuo duomenys iš RAM susiejami su talpykla. Pagrindinės talpyklos asociatyvumo architektūros parinktys yra šios:

  1. Tiesioginio susiejimo talpykla – tam tikra talpyklos dalis yra atsakinga už tam tikrą RAM skyrių
  2. Visiškai asociatyvi talpykla – bet kuri talpyklos dalis gali būti susieta su bet kuria RAM dalimi
  3. Mišri talpykla (asociatyvus rinkinys)

Skirtinguose talpyklos lygiuose paprastai gali būti naudojamos skirtingos talpyklos asociatyvumo architektūros. Tiesioginis susietas RAM talpyklos kaupimas yra greičiausia talpyklos parinktis, todėl ši architektūra paprastai naudojama didelėms talpykloms. Savo ruožtu visiškai asociatyvi talpykla turi mažiau talpyklos klaidų (praleidžiamų).

Išvada

Šiame straipsnyje susipažinote su talpyklos sąvoka, talpyklos architektūra ir talpyklos kaupimo metodais bei sužinojote, kaip tai veikia šiuolaikinio kompiuterio našumą. Laikinosios atminties buvimas gali žymiai optimizuoti procesoriaus darbą, sutrumpinti jo tuščiosios eigos laiką ir atitinkamai padidinti visos sistemos našumą.

biosgid.ru

Procesoriaus talpyklos efektų galerija

Beveik visi kūrėjai žino, kad procesoriaus talpykla yra nedidelė, bet greita atmintis, kurioje saugomi duomenys iš neseniai aplankytų atminties sričių – apibrėžimas trumpas ir gana tikslus. Tačiau norint suprasti veiksnius, turinčius įtakos kodo veikimui, būtina žinoti nuobodžią informaciją apie talpyklos mechanizmus.

Šiame straipsnyje apžvelgsime keletą pavyzdžių, iliustruojančių įvairias talpyklų funkcijas ir jų įtaką našumui. Pavyzdžiai bus C#, kalbos ir platformos pasirinkimas neturi didelės įtakos veiklos vertinimui ir galutinėms išvadoms. Natūralu, kad protingomis ribomis, jei pasirinksite kalbą, kurioje reikšmės skaitymas iš masyvo prilygsta prieigai prie maišos lentelės, negausite jokių interpretuojamų rezultatų. Vertėjo pastabos kursyvu.

Habracut - - -

1 pavyzdys: Prieiga prie atminties ir našumas
Kaip manote, kiek greitesnis antrasis ciklas nei pirmasis? int arr = naujas int;

For (int i = 0; i // second for (int i = 0; i 2 pavyzdys: talpyklos eilučių įtaka Pagilinkime giliau – išbandykite kitas žingsnių reikšmes, ne tik 1 ir 16: for (int i = 0; i

Atkreipkite dėmesį, kad esant žingsnių reikšmėms nuo 1 iki 16, veikimo laikas praktiškai nesikeičia. Tačiau kai reikšmės yra didesnės nei 16, veikimo laikas sumažėja maždaug perpus kiekvieną kartą, kai žingsnį padidiname dvigubai. Tai nereiškia, kad ciklas kažkaip stebuklingai pradeda veikti greičiau, tiesiog mažėja iteracijų skaičius. Pagrindinis taškas yra tas pats veikimo laikas su žingsnių reikšmėmis nuo 1 iki 16.

Taip yra dėl to, kad šiuolaikiniai procesoriai pasiekia atmintį ne po vieną baitą, o prie mažų blokų, vadinamų talpyklos eilutėmis. Paprastai eilutės dydis yra 64 baitai. Kai skaitote bet kokią reikšmę iš atminties, į talpyklą patenka bent viena talpyklos eilutė. Vėlesnė prieiga prie bet kurios vertės iš šios eilutės yra labai greita. Kadangi 16 int reikšmių užima 64 baitus, kilpos su žingsniais nuo 1 iki 16 pasiekia tą patį talpyklos eilučių skaičių arba, tiksliau, visas masyvo talpyklos eilutes. 32 veiksme pasiekiama kas antra eilutė, 64 veiksme – kas ketvirta. Tai suprasti labai svarbu kai kurioms optimizavimo technikoms. Prieigų prie jo skaičius priklauso nuo duomenų vietos atmintyje. Pavyzdžiui, nesuderinti duomenys gali reikalauti dviejų prieigos prie pagrindinės atminties, o ne vienos. Kaip sužinojome aukščiau, veikimo greitis bus du kartus mažesnis.

3 pavyzdys: 1 ir 2 lygio talpyklos dydžiai (L1 ir L2)
Šiuolaikiniai procesoriai paprastai turi du ar tris talpyklos lygius, paprastai vadinamus L1, L2 ir L3. Norėdami sužinoti skirtingų lygių talpyklų dydžius, galite naudoti „CoreInfo“ įrankį arba „Windows API“ funkciją GetLogicalProcessorInfo. Abu metodai taip pat suteikia informacijos apie talpyklos eilutės dydį kiekvienam lygiui. Mano kompiuteryje „CoreInfo“ praneša apie 32 KB L1 duomenų talpyklos, 32 KB L1 instrukcijų talpyklos ir 4 MB L2 duomenų talpyklos. Kiekvienas branduolys turi savo asmenines L1 talpyklas, L2 talpyklos yra bendros kiekvienai branduolių porai: loginio procesoriaus ir talpyklos žemėlapis: *--- Duomenų talpykla 0, 1 lygis, 32 KB, Assoc 8, LineSize 64 *--- Instrukcijų talpykla 0, 1 lygis, 32 KB, Assoc 8, LineSize 64 -*-- 1 duomenų talpykla, 1 lygis, 32 KB, Assoc 8, LineSize 64 64 ** -- Unified Cache 0, Level 2, 4 MB, Assoc 16, LineSize 64 --*- Data Cache 2, Level 1, 32 KB, Assoc 8, LineSize 64 --*- Instrukcijų talpykla 2, Level 1, 32 KB, Assoc 8, LineSize 64 ---* Duomenų talpykla 3, 1 lygis, 32 KB, Assoc 8, LineSize 64 ---* Instrukcijų talpykla 3, 1 lygis, 32 KB, Assoc 8, LineSize 64 ---** Unified Cache 1 , Level 2, 4 MB, Assoc 16, LineSize 64 Patikrinkime šią informaciją eksperimentiškai. Norėdami tai padaryti, pereikime prie savo masyvo, padidindami kas 16 reikšmę – tai paprastas būdas pakeisti duomenis kiekvienoje talpyklos eilutėje. Pasiekę pabaigą grįžtame į pradžią. Patikrinkime skirtingus masyvo dydžius; turėtume pastebėti našumo sumažėjimą, kai masyvas nebetelpa į skirtingų lygių talpyklas. Kodas yra: int žingsniai = 64 * 1024 * 1024; // iteracijų skaičius int ilgisMod = arr.Length - 1; // masyvo dydis -- dviejų galia

for (int i = 0; i (

// x & ilgisMod = x % arr.Ilgis, nes dviejų laipsniai

Arr[(i * 16) & longMod]++; ) Testo rezultatai:

Mano įrenginyje pastebimi našumo kritimai po 32 KB ir 4 MB – tai yra L1 ir L2 talpyklos dydžiai.

4 pavyzdys: Instrukcijų lygiagretumas
Dabar pažiūrėkime į ką nors kita. Jūsų nuomone, kuri iš šių dviejų kilpų veiks greičiau? int žingsniai = 256 * 1024 * 1024; int a = naujas int;

For (int i = 0; i // second for (int i = 0; i 5 pavyzdys: talpyklos asociatyvumas Vienas iš pagrindinių klausimų, į kurį reikia atsakyti kuriant talpyklą, yra tai, ar duomenys iš tam tikros atminties srities gali būti saugomi talpyklos ląstelės arba tik kai kuriose iš jų. Trys galimi sprendimai:

  1. Tiesiogiai susieta talpykla, kiekvienos RAM talpyklos eilutės duomenys saugomi tik vienoje iš anksto nustatytoje talpyklos vietoje. Paprasčiausias būdas apskaičiuoti atvaizdavimą yra: row_index_in_memory %_cache_cells_skaičius. Dvi eilutės, susietos su tuo pačiu langeliu, negali būti talpykloje vienu metu.
  2. N įrašo dalinė asociatyvi talpykla, kiekviena eilutė gali būti saugoma N skirtingose ​​talpyklos vietose. Pavyzdžiui, 16 įrašų talpykloje eilutė gali būti saugoma vienoje iš 16 langelių, sudarančių grupę. Paprastai eilutės su lygiais mažiausiai reikšmingais indeksų bitais turi vieną grupę.
  3. Visiškai asociatyvi talpykla, bet kuri eilutė gali būti saugoma bet kurioje talpyklos vietoje. Sprendimas savo elgesiu prilygsta maišos lentelės veikimui.
Tiesiogiai susietos talpyklos yra linkusios į ginčus, pavyzdžiui, kai dvi eilutės konkuruoja dėl to paties langelio, pakaitomis iškeldamos viena kitą iš talpyklos, efektyvumas yra labai mažas. Kita vertus, visiškai asociatyvios talpyklos, nors ir neturi šio trūkumo, yra labai sudėtingos ir brangios. Iš dalies asociatyvios talpyklos yra tipiškas kompromisas tarp diegimo sudėtingumo ir efektyvumo. Pavyzdžiui, mano kompiuteryje 4 MB L2 talpykla yra 16 įrašų dalinė asociatyvi talpykla. Visa RAM suskirstyta į eilučių rinkinius pagal mažiausiai reikšmingus jų indeksų bitus, eilutės iš kiekvieno rinkinio varžosi dėl vienos 16 L2 talpyklos langelių grupės.

Kadangi L2 talpykloje yra 65 536 langeliai (4 * 220 / 64) ir kiekviena grupė susideda iš 16 langelių, iš viso turime 4 096 grupes. Taigi, 12 apatinių eilutės indekso bitų nustato, kuriai grupei priklauso ši eilutė (212 = 4 096). Todėl eilutės, kurių adresai yra 262 144 (4 096 * 64) kartotiniai, turi tą pačią 16 langelių grupę ir konkuruoja dėl vietos joje.

Kad asociatyvumo poveikis įsigaliotų, turime nuolat pasiekti daug eilučių iš tos pačios grupės, pavyzdžiui, naudojant šį kodą: public static long UpdateEveryKthByte(byte arr, int K) (

const int rep = 1024 * 1024; // iteracijų skaičius

Chronometras sw = Chronometras.StartNew();

Dėl (int i = 0; i p += K; if (p >= arr.Length) p = 0; ) sw.Stop();

return sw.ElapsedMilliseconds;

) Metodas padidina kiekvieną K-tą masyvo elementą. Kai pasiekiame pabaigą, pradedame iš naujo. Po gana didelio iteracijų skaičiaus (220) sustojame. Atlikau skirtingų masyvo dydžių ir K žingsnių reikšmių paleidimus. Rezultatai (mėlyna - ilgas veikimo laikas, baltas - trumpas):

Mėlynos sritys atitinka tuos atvejus, kai nuolat keičiantis duomenims, talpykla negali vienu metu talpinti visų reikiamų duomenų. Ryškiai mėlyna spalva rodo apie 80 ms veikimo laiką, beveik balta – 10 ms.

Panagrinėkime mėlynąsias sritis:

  1. Kodėl atsiranda vertikalios linijos? Vertikalios linijos atitinka žingsnių reikšmes, kai pasiekiama per daug eilučių (daugiau nei 16) iš vienos grupės. Dėl šių verčių mano kompiuterio 16 įrašų talpykla negali talpinti visų būtinų duomenų.

    Kai kurios blogo žingsnio reikšmės yra dviejų galių: 256 ir 512. Pavyzdžiui, apsvarstykite žingsnį 512 ir 8 MB masyvą. Atlikus šį veiksmą, masyve yra 32 skyriai (8 * 220 / 262 144), kurie konkuruoja tarpusavyje dėl langelių 512 talpyklos grupių (262 144 / 512). Yra 32 skyriai, tačiau kiekvienos grupės talpykloje yra tik 16 langelių, todėl vietos visiems neužtenka.

    Kitos žingsnių reikšmės, kurios nėra dviejų laipsniai, yra tiesiog nesėkmingos, todėl tose pačiose talpyklos grupėse atsiranda daugybė įvykių, taip pat paveiksle atsiranda vertikalių mėlynų linijų. Šiuo metu skaičių teorijos mėgėjai kviečiami susimąstyti.

  2. Kodėl vertikalios linijos nutrūksta ties 4 MB riba? Kai masyvo dydis yra 4 MB ar mažesnis, 16 įrašų talpykla elgiasi kaip visiškai asociatyvi talpykla, ty joje gali tilpti visi masyvo duomenys be konfliktų. Dėl vienos talpyklos grupės kovoja ne daugiau kaip 16 sričių (262 144 * 16 = 4 * 220 = 4 MB).
  3. Kodėl viršuje kairėje yra didelis mėlynas trikampis? Nes esant mažam žingsniui ir dideliam masyvui, talpykla negali sutalpinti visų reikiamų duomenų. Talpyklos asociatyvumo laipsnis čia vaidina antraeilį vaidmenį; apribojimas yra susijęs su L2 talpyklos dydžiu. Pavyzdžiui, kai masyvo dydis yra 16 MB, o žingsnis - 128, pasiekiame kas 128 baitą, taip modifikuodami kas antrą masyvo talpyklos eilutę. Norint išsaugoti kas antrą eilutę talpykloje, reikia 8 MB talpyklos, bet mano kompiuteryje turiu tik 4 MB.

    Net jei talpykla būtų visiškai asociatyvi, ji neleistų joje saugoti 8 MB duomenų. Atkreipkite dėmesį, kad jau aptartame pavyzdyje su žingsniu 512 ir masyvo dydžiu 8 MB, mums reikia tik 1 MB talpyklos, kad išsaugotume visus reikiamus duomenis, tačiau tai neįmanoma dėl nepakankamo talpyklos asociatyvumo.

  4. Kodėl kairioji trikampio pusė palaipsniui stiprėja? Didžiausias intensyvumas pasiekiamas esant 64 baitų žingsnio vertei, kuri yra lygi talpyklos eilutės dydžiui. Kaip matėme pirmame ir antrame pavyzdžiuose, nuosekli prieiga prie tos pačios eilutės praktiškai nieko nekainuoja. Tarkime, su 16 baitų žingsniu turime keturias atminties prieigas už vienos kainą. Kadangi mūsų teste bet kurios žingsnio vertės pakartojimų skaičius yra toks pat, pigesnis veiksmas sumažina veikimo laiką.
Aptikti efektai išlieka esant didelėms parametrų reikšmėms:

Talpyklos asociatyvumas yra įdomus dalykas, kuris gali pasireikšti tam tikromis sąlygomis. Skirtingai nuo kitų šiame straipsnyje aptartų problemų, tai nėra tokia rimta. Tai tikrai nėra kažkas, kas reikalauja nuolatinio dėmesio rašant programas.

6 pavyzdys: klaidingas talpyklos skaidymas
Kelių branduolių įrenginiuose galite susidurti su kita problema - talpyklos suderinamumu. Procesoriaus branduoliai turi iš dalies arba visiškai atskiras talpyklas. Mano kompiuteryje L1 talpyklos yra atskiros (kaip įprasta), taip pat yra dvi L2 talpyklos, kurias dalijasi kiekviena branduolių pora. Išsami informacija gali skirtis, tačiau apskritai šiuolaikiniai kelių branduolių procesoriai turi kelių lygių hierarchines talpyklas. Be to, greičiausios, bet ir mažiausios talpyklos priklauso atskiriems branduoliams.

Kai vienas branduolys pakeičia reikšmę savo talpykloje, kiti branduoliai nebegali naudoti senosios vertės. Reikšmė kitų branduolių talpyklose turi būti atnaujinta. Be to, turi būti atnaujinta visa talpyklos eilutė, nes talpyklos veikia eilutės lygio duomenimis.

Pademonstruokime šią problemą naudodami šį kodą: private static int s_counter = new int;

privati ​​galia Atnaujinimo skaitiklis (vidinė pozicija)

{

for (int j = 0; j ( s_skaitiklis = s_skaitiklis + 3; )

Jei savo keturių branduolių įrenginyje šį metodą vadinu 0, 1, 2, 3 parametrais vienu metu iš keturių gijų, tada veikimo laikas bus 4,3 sekundės. Bet jei aš iškviesiu metodą su parametrais 16, 32, 48, 64, tada veikimo laikas bus tik 0,28 sekundės. Kodėl? Pirmuoju atveju visos keturios gijomis bet kuriuo metu apdorotos reikšmės pateks į vieną talpyklos eilutę. Kiekvieną kartą, kai vienas branduolys padidina vertę, jis pažymi talpyklos langelius, kuriuose yra ši vertė kituose branduoliuose, kaip negaliojančius. Po šios operacijos visi kiti branduoliai turės vėl įrašyti eilutę talpykloje. Dėl to talpyklos mechanizmas neveikia, o tai neigiamai veikia.

7 pavyzdys: Aparatinės įrangos sudėtingumas
Net ir dabar, kai talpyklos veikimo principai jums nėra paslaptis, techninė įranga vis tiek pateiks staigmenų. Procesoriai vienas nuo kito skiriasi optimizavimo metodais, euristika ir kitomis įgyvendinimo subtilybėmis.

Kai kurių procesorių L1 talpykla gali lygiagrečiai pasiekti du langelius, jei jie priklauso skirtingoms grupėms, o jei priklauso tai pačiai grupei, tai tik nuosekliai. Kiek žinau, kai kurie netgi gali lygiagrečiai pasiekti skirtingus tos pačios ląstelės ketvirčius.

Procesoriai gali jus nustebinti sumaniai optimizuodami. Pavyzdžiui, kodas iš ankstesnio pavyzdžio apie klaidingą talpyklos dalijimąsi mano namų kompiuteryje neveikia taip, kaip numatyta – paprasčiausiais atvejais procesorius gali optimizuoti darbą ir sumažinti neigiamą poveikį. Jei šiek tiek pakeisite kodą, viskas atsidurs savo vietose. Štai dar vienas keistų aparatinės įrangos keistenybių pavyzdys: privatus statinis int A, B, C, D, E, F, G;

privati ​​statinė tuštuma Keista()

{

for (int i = 0; i ( ) ) Jei pakeisite tris skirtingas parinktis, galite gauti tokius rezultatus:

A, B, C, D laukų didinimas užtrunka ilgiau nei A, C, E, G laukų didinimas. Dar keisčiausia, kad A ir C laukų didinimas užtrunka ilgiau nei A, C ir E, G laukų didinimas. aišku, kokios to priežastys, bet galbūt jos susijusios su atminties bankais (taip, su paprastais trijų litrų taupančiais atminties bankais, o ne tai, ką manėte). Jei turite kokių nors minčių šiuo klausimu, rašykite komentaruose.

Mano įrenginyje aukščiau paminėtų dalykų nesilaikoma, tačiau kartais būna neįprastai blogų rezultatų - greičiausiai užduočių planuotojas atlieka savo „koregavimus“.

Iš šio pavyzdžio galima pasimokyti, kad labai sunku visiškai numatyti aparatinės įrangos elgesį. Taip, galite daug ką nuspėti, bet turite nuolat patvirtinti savo prognozes matavimais ir bandymais.

Išvada
Tikiuosi, kad viskas, kas aptarta aukščiau, padėjo suprasti procesoriaus talpyklų struktūrą. Dabar galite pritaikyti šias žinias praktikoje, kad optimizuotumėte savo kodą. * Šaltinio kodas buvo paryškintas naudojant šaltinio kodo žymėjimo priemonę. Žymos:

Vienas iš svarbių veiksnių, didinančių procesoriaus našumą, yra talpyklos buvimas, tiksliau, jos tūris, prieigos greitis ir pasiskirstymas tarp lygių.

Jau gana seniai beveik visi procesoriai buvo aprūpinti tokio tipo atmintimi, o tai dar kartą įrodo jos naudingumą. Šiame straipsnyje kalbėsime apie talpyklos atminties struktūrą, lygius ir praktinę paskirtį, o tai labai svarbu. procesoriaus charakteristikos.

Kas yra talpyklos atmintis ir jos struktūra

Laikinoji atmintis yra ypač greita atmintis, kurią procesorius naudoja laikinai saugoti dažniausiai pasiekiamus duomenis. Taip galime trumpai apibūdinti šio tipo atmintį.

Talpyklos atmintis yra sukurta ant šliaužtinukų, kurie savo ruožtu susideda iš tranzistorių. Tranzistorių grupė užima daug daugiau vietos nei tie patys kondensatoriai, kurie sudaro RAM. Tai sukelia daug gamybos sunkumų ir apimties apribojimų. Štai kodėl talpyklos atmintis yra labai brangi atmintis, tačiau jos apimtis yra nereikšminga. Tačiau iš šios struktūros išplaukia pagrindinis tokios atminties privalumas – greitis. Kadangi šlepetės nereikalauja regeneracijos, o vartų, ant kurių jie sumontuoti, delsos laikas yra mažas, laikas, perjungiamas šlepetės iš vienos būsenos į kitą, vyksta labai greitai. Tai leidžia talpyklai veikti tais pačiais dažniais kaip ir šiuolaikiniai procesoriai.

Be to, svarbus veiksnys yra talpyklos atminties vieta. Jis yra pačiame procesoriaus luste, o tai žymiai sumažina prieigos laiką. Anksčiau kai kurių lygių talpyklos atmintis buvo už procesoriaus lusto ribų, specialioje SRAM lustoje kažkur pagrindinėje plokštėje. Dabar beveik visi procesoriai turi talpyklą, esančią procesoriaus mikroschemoje.


Kam naudojama procesoriaus talpykla?

Kaip minėta aukščiau, pagrindinė talpyklos atminties paskirtis yra saugoti duomenis, kuriuos dažnai naudoja procesorius. Talpykla yra buferis, į kurį įkeliami duomenys, nepaisant mažo dydžio (apie 4–16 MB) modernūs procesoriai, tai žymiai padidina našumą bet kurioje programoje.

Norėdami geriau suprasti talpyklos atminties poreikį, įsivaizduokime, kad kompiuterio atmintis tvarkoma kaip biure. RAM bus spintelė su aplankais, kuriuos buhalteris periodiškai pasiekia, kad gautų didelius duomenų blokus (ty aplankus). Ir lentelė bus talpyklos atmintis.

Yra elementų, kurie dedami ant buhalterio stalo, kuriuos jis nurodo kelis kartus per valandą. Pavyzdžiui, tai gali būti telefono numeriai, kai kurie dokumentų pavyzdžiai. Tokio tipo informacija yra tiesiai ant lentelės, o tai savo ruožtu padidina prieigos prie jų greitį.

Lygiai taip pat duomenis iš tų didelių duomenų blokų (aplankų) galima įtraukti į lentelę, kad būtų galima greitai naudoti, pavyzdžiui, dokumentą. Kai šio dokumento nebereikia, jis dedamas atgal į spintelę (į RAM), taip išvalant lentelę (cache atmintį) ir atlaisvinant šią lentelę naujiems dokumentams, kurie bus naudojami kitu laikotarpiu.

Taip pat naudojant talpyklą, jei yra kokių nors duomenų, kurie greičiausiai bus vėl pasiekti, šie duomenys iš RAM įkeliami į talpyklos atmintį. Labai dažnai tai atsitinka kartu įkeliant duomenis, kurie greičiausiai bus naudojami po dabartinių duomenų. Tai yra, yra prielaidų, kas bus naudojama „po“. Tai yra sudėtingi veikimo principai.

Procesoriaus talpyklos lygiai

Šiuolaikiniai procesoriai turi talpyklą, kuri dažnai susideda iš 2 arba 3 lygių. Žinoma, yra išimčių, bet taip dažnai būna.

Apskritai gali būti šie lygiai: L1 (pirmas lygis), L2 (antras lygis), L3 (trečias lygis). Dabar šiek tiek daugiau apie kiekvieną iš jų:

Pirmojo lygio talpykla (L1)– greičiausias talpyklos atminties lygis, veikiantis tiesiogiai su procesoriaus šerdimi, dėl šios glaudžios sąveikos šis lygis turi trumpiausią prieigos laiką ir veikia procesoriaus artimu dažniu. Tai buferis tarp procesoriaus ir antrojo lygio talpyklos.

Apsvarstysime didelio našumo procesoriaus Intel Core i7-3770K apimtis. Šiame procesoriuje yra 4 x 32 KB L1 talpykla 4 x 32 KB = 128 KB. (32 KB vienam branduoliui)

Antrojo lygio talpykla (L2)– antrasis lygis yra didesnio masto nei pirmasis, tačiau dėl to turi mažesnes „greičio charakteristikas“. Atitinkamai, jis tarnauja kaip buferis tarp L1 ir L3 lygių. Jei dar kartą pažvelgsime į mūsų pavyzdį Core i7-3770 K, tada L2 talpyklos dydis yra 4x256 KB = 1 MB.

3 lygio talpykla (L3)– trečias lygis vėlgi yra lėtesnis nei ankstesni du. Tačiau jis vis tiek yra daug greitesnis nei RAM. L3 talpyklos dydis i7-3770K yra 8 MB. Jei ankstesnius du lygius dalijasi kiekvienas branduolys, tai šis lygis yra bendras visam procesoriui. Rodiklis gana tvirtas, bet ne per didelis. Kadangi, pavyzdžiui, Extreme serijos procesoriams, tokiems kaip i7-3960X, jis yra 15 MB, o kai kuriems naujiems Xeon procesoriams - daugiau nei 20.



 


Skaityti:



Geriausių belaidžių ausinių įvertinimas

Geriausių belaidžių ausinių įvertinimas

Ar galima nebrangiai įsigyti universalių ausų? 3000 rublių – ar už tokius pinigus galima nusipirkti kokybiškų ausinių? Kaip paaiškėjo, taip. Ir kalba...

Pagrindinė mobiliojo įrenginio kamera dažniausiai yra korpuso gale ir naudojama fotografuoti bei filmuoti

Pagrindinė mobiliojo įrenginio kamera dažniausiai yra korpuso gale ir naudojama fotografuoti bei filmuoti

Atnaujinta planšetės versija su patobulintomis charakteristikomis ir dideliu autonomiškumu.Acer išmanieji telefonai retai lankomi...

Kaip persijungti į kitą operatorių išsaugant savo numerį

Kaip persijungti į kitą operatorių išsaugant savo numerį

Įstatymas dėl telefono numerio išsaugojimo, kai abonentas pereina prie kito mobiliojo ryšio operatoriaus, Rusijoje įsigaliojo gruodžio 1 d. Tačiau paaiškėjo, kad...

phableto apžvalga, brangi, bet labai kompetentinga

phableto apžvalga, brangi, bet labai kompetentinga

Apžvalga apie phablet, brangus, bet labai kompetentingas 2015-03-20 Esu vienintelis batsiuvys pasaulyje be batų, išmaniųjų telefonų apžvalgininkas be savo išmaniojo telefono....

tiekimo vaizdas RSS