Nëse nuk jeni veçanërisht të interesuar për kompjuterët, do t'ju falet të supozoni se format e vetme të memories në një kompjuter ishin hard disku dhe RAM-i. Ata prej jush që janë të interesuar për kompjuterët, ka të ngjarë të dinë se nuk është kështu dhe se CPU-ja gjithashtu ka një grup memorie të fshehta që përdoren për të ruajtur të dhënat nga RAM-i, në mënyrë që CPU-ja të mund t'i qaset më shpejt. Të gjitha këto janë veçori të reklamuara, kryesisht sepse shpejtësia dhe/ose kapaciteti është një pikë e mirë e shitjes dhe në përgjithësi ndikon në nivelet e performancës.
Megjithatë, ekziston një shtresë tjetër e kujtesës. Sa më shumë që mund të mendoni se cache L1 është sa më afër bërthamës aktuale të përpunimit të jetë e mundur, ekziston një shtresë tjetër më e lartë në hierarkinë e memories. Këta janë regjistrat e CPU-së. Arsyeja pse këto nuk reklamohen apo përmenden vërtet është se ato nuk janë ndryshuar fare. Teknikisht, ato mund të jenë, megjithatë, numri dhe madhësia e regjistrave është në të vërtetë thelbësore për arkitekturën. Kjo do të thotë që të gjithë CPU-të x86-64 kanë të njëjtin numër regjistrash. Ata nuk tregtohen sepse nuk janë një pikë konkurruese.
Çfarë bën një regjistër?
Një regjistër është një vend ruajtjeje i disponueshëm shpejt për procesorin. Qasja në një regjistër është e menjëhershme me zero vonesë, ndërsa edhe cache L1 ka një vonesë afërsisht 4-5 ciklesh në CPU-të moderne. Kjo qasje e menjëhershme lë të kuptohet për rastin e përdorimit të regjistrave. Regjistrat përdoren për të ruajtur instruksionet që operohen në mënyrë aktive nga CPU. Ata gjithashtu ruajnë pikat e të dhënave që do të përpunohen. Disa regjistra janë me qëllim të përgjithshëm, ndërsa të tjerët kanë një qëllim shumë specifik. Një shembull i një regjistri me qëllim të veçantë do të ishte numëruesi i programit i cili është vendi ku procesori gjurmon pozicionin e tij në sekuencën e tij të programit.
Shumë regjistra konsiderohen të aksesueshëm nga përdoruesi. Megjithatë, kjo nuk do të thotë se përdoruesi i një kompjuteri mund të zgjedhë se çfarë vlere do t'i vendosë. Kjo do të thotë që softueri që funksionon mund të specifikojë të dhënat që do të ngarkohen në këto regjistra. Një numër më i vogël regjistrash janë të brendshëm, që do të thotë se softueri nuk mund t'i adresojë ato fare. Regjistri i instruksioneve, i cili ruan instruksionin që po ekzekutohet aktualisht, është një shembull i një regjistri të brendshëm.
Regjistro riemërimin
Ndërsa një arkitekturë CPU mund të lejojë vetëm një konfigurim të vetëm të regjistrave, në të vërtetë ka një nuancë për këtë. Të gjithë CPU-të moderne përdorin riemërtimin e regjistrit. Kjo është një teknikë ku mund të keni më shumë regjistra fizikë dhe t'i përdorni për të ngarkuar paraprakisht të dhëna ose për të ruajtur të dhëna që lidhen me një udhëzim jashtë rendit që përndryshe do të ishte mbishkruar. Kur CPU arrin në pikën që i duhen të dhënat në regjistrat shtesë, ai thjesht i riemërton në mënyrë që të jetë i adresueshëm, në të njëjtën kohë duke e bërë të paadresueshëm një regjistër të adresueshëm më parë.
Procesi i riemërtimit të regjistrit mund të jetë shumë i dobishëm për ekzekutimin jashtë rendit. Për shembull, nëse një vend memorie është programuar që të lexohet nga atëherë shkruhet në, dhe udhëzimet janë ekzekutuar në atë mënyrë, kjo është në rregull. Megjithatë, nëse udhëzimet rirenditen për të kryer fillimisht shkrimin, udhëzimi i leximit do të marrë vlerën e gabuar. Për të parandaluar këtë, vlera origjinale që do të lexohet ruhet në një regjistër të papërdorur i cili më pas riemërohet kur udhëzimi përkatës është duke u përpunuar.
konkluzioni
Regjistrat janë niveli më i lartë në hierarkinë e memories. Ato janë e vetmja pjesë e adresueshme drejtpërdrejt nga CPU dhe nuk kanë vonesë. Regjistrat përdoren për të ruajtur të dhënat që ekzekutohen në mënyrë aktive nga CPU. Ato përdoren gjithashtu për të ruajtur pika të tjera të dhënash, si p.sh. numëruesi i programit, i cili mban gjurmët se cili instruksion është instruksioni i radhës që do të ekzekutohet. Një numër shumë i kufizuar regjistrash janë të disponueshëm me arkitekturën x86-64 që ka 16 regjistra për qëllime të përgjithshme dhe 16 ose 32 regjistra me pikë lundruese në varësi të faktit nëse AVX-512 mbështetet.