Bilgisayarlarla özellikle ilgilenmiyorsanız, bilgisayardaki tek bellek biçiminin sabit disk ve RAM olduğunu varsaydığınız için affedilirsiniz. Bilgisayarlara ilgi duyanlarınız muhtemelen durumun böyle olmadığını ve CPU ayrıca RAM'den verileri önbelleğe almak için kullanılan bir dizi önbelleğe sahiptir, böylece CPU ona erişebilir. Daha hızlı. Bunların tümü reklamı yapılan özelliklerdir, çünkü hız ve/veya kapasite iyi bir satış noktasıdır ve genellikle performans seviyelerini etkiler.
Aslında bir başka bellek katmanı daha var. L1 önbelleğinin gerçek işlem çekirdeğine mümkün olduğunca yakın olduğunu düşündüğünüz kadar, bellek hiyerarşisinde daha yüksek bir katman daha vardır. Bunlar CPU kayıtlarıdır. Bunların gerçekten tanıtılmamasının veya bahsedilmemesinin nedeni, gerçekten hiç değişmemiş olmalarıdır. Teknik olarak, bunlar olabilir, ancak kayıtların sayısı ve boyutu aslında mimari için temeldir. Bu, tüm x86-64 CPU'ların aynı sayıda kayda sahip olduğu anlamına gelir. Pazarlanmıyorlar çünkü rekabet eden bir nokta değiller.
Bir kayıt ne işe yarar?
Kayıt, işlemci için hızlı bir şekilde kullanılabilen bir depolama konumudur. Bir kayda erişim sıfır gecikme ile anında gerçekleşirken, L1 önbelleği bile modern CPU'larda kabaca 4-5 döngü gecikmesine sahiptir. Erişimin bu yakınlığı, kayıtlar için kullanım durumunda ipuçları verir. Kayıtlar, CPU tarafından aktif olarak çalıştırılan talimatları depolamak için kullanılır. Ayrıca işlenecek veri noktalarını da depolarlar. Bazı kayıtlar genel amaçlı iken bazılarının çok özel bir amacı vardır. Özel amaçlı bir kayıt örneği, işlemcinin program sırasındaki konumunu izlediği program sayacı olabilir.
Birçok kayıt, kullanıcı tarafından erişilebilir olarak kabul edilir. Bu, bir bilgisayar kullanıcısının onlara hangi değeri koyacağını seçebileceği anlamına gelmez. Bu, çalışan yazılımın bu kayıtlara yüklenecek verileri belirleyebileceği anlamına gelir. Daha az sayıda kayıt dahilidir, bu da yazılımın bunları hiç ele alamayacağı anlamına gelir. Yürütülmekte olan talimatı saklayan talimat kaydı, bir iç kayıt örneğidir.
Yeniden adlandırma kaydı
Bir CPU mimarisi yalnızca tek bir kayıt yapılandırmasına izin verebilirken, aslında bunun biraz nüansları var. Tüm modern CPU'lar kayıt yeniden adlandırmayı kullanır. Bu, daha fazla fiziksel kaydediciye sahip olabileceğiniz ve bunları, aksi takdirde üzerine yazılacak olan sıra dışı bir talimatla ilgili verileri önceden yüklemek veya verileri depolamak için kullanabileceğiniz bir tekniktir. CPU, ekstra kayıtlardaki verilere ihtiyaç duyduğu noktaya geldiğinde, onu adreslenebilir olacak şekilde yeniden adlandırır, aynı zamanda daha önce adreslenebilir bir kaydı adreslenemez hale getirir.
Kayıt yeniden adlandırma işlemi, sıra dışı yürütme için çok yardımcı olabilir. Örneğin, bir bellek konumu okunup ardından yazılmak üzere programlanmışsa ve talimatlar bu sırayla yürütülmüşse, bu sorun değil. Bununla birlikte, komutlar önce yazma işlemini gerçekleştirmek üzere yeniden sıralanırsa, okuma komutu yanlış değeri alır. Bunu önlemek için, okunacak orijinal değer, ilgili talimat işlenirken yeniden adlandırılan kullanılmayan bir kayıt defterinde saklanır.
Çözüm
Kayıtlar, bellek hiyerarşisindeki en yüksek katmandır. Bunlar, CPU tarafından doğrudan adreslenebilen ve gecikme süresi olmayan tek parçadır. Kayıtlar, CPU tarafından aktif olarak yürütülen verileri depolamak için kullanılır. Ayrıca, yürütülecek bir sonraki talimatın kaydını tutan program sayacı gibi diğer veri noktalarını depolamak için de kullanılırlar. 16 genel amaçlı kayıt ve AVX-512'nin desteklenip desteklenmemesine bağlı olarak 16 veya 32 kayan nokta kaydına sahip x86-64 mimarisinde çok sınırlı sayıda kayıt mevcuttur.