
İşlemci yazmacı ya da kısaca yazmaç, merkezi işlem birimi (CPU) içinde bulunan küçük, yüksek hızlı depolama birimidir. Yazmaçlar, bellek hiyerarşisinin en üst katmanında yer alır; ana bellekten ve önbellekten çok daha hızlı erişilir. CPU, bir işlem yapabilmek için önce verileri ve adresleri yazmaçlara yükler; işlem sonucunu da yine yazmaçlara yazar.
Bir işlemcinin kaç yazmacı olduğu ve her birinin kaç bit tuttuğu, buyruk kümesi mimarisi (BKM) tarafından belirlenir. RISC-V ve ARM gibi yük-depola (load-store) mimarilerinde aritmetik işlemler yalnızca yazmaçlar arasında yapılır; bellek ile veri alışverişi yalnızca özel yükleme/depolama buyrukları aracılığıyla gerçekleşir.
Yazmaç türleri
İşlemci yazmaçları iki ana gruba ayrılır: kullanıcıya görünen yazmaçlar ve denetim/durum yazmaçları.
Genel amaçlı yazmaçlar
Genel amaçlı yazmaçlar (general-purpose registers, GPR), programcı ya da derleyici tarafından serbestçe kullanılabilen yazmaçlardır. Aritmetik, mantık ve veri taşıma işlemlerinde geçici değerleri, ara sonuçları ve bellek adreslerini tutarlar.
x86 mimarisinde başlangıçta sekiz 16 bitlik genel amaçlı yazmaç bulunurken (AX, BX, CX, DX, SI, DI, SP, BP), x86-64 mimarisine geçilince bu sayı on altıya çıkarılmış ve genişlik 64 bite yükseltilmiştir (RAX–R15). RISC-V mimarisinde ise 32 adet 32/64 bitlik tamsayı yazmacı (x0–x31) yer alır; x0 yazmacı her zaman sıfır değerini taşır ve üzerine yazılamaz.
ARM mimarisi de 32 genel amaçlı yazmaç sağlar; bunlardan r15 program sayacı, r14 bağlantı yazmacı ve r13 yığın göstericisi olarak özel işlev üstlenmiştir.
Program sayacı
Program sayacı (PC, program counter), o an yürütülmekte olan ya da bir sonraki yürütülecek buyruğun bellekteki adresini tutar. Her buyruk getirildiğinde PC otomatik olarak artırılır; dal (branch) ya da atlama (jump) buyrukları ise PC'yi doğrudan değiştirir. PC, kontrol akışının temel taşıdır.
Yığın göstericisi
Yığın göstericisi (SP, stack pointer), bellekteki yığının (stack) tepesini işaret eder. Alt yordam (subroutine) çağrıları, dönüş adresleri ve yerel değişkenler yığın aracılığıyla yönetilir; PUSH işlemi SP'yi azaltır (tipik olarak), POP ise artırır.
Durum / bayrak yazmacı
Durum yazmacı ya da bayrak yazmacı (status register, flag register, program status word), son aritmetik ya da mantık işleminin sonucunu niteleyen bitleri barındırır. Yaygın bayraklar şunlardır:
- Sıfır bayrağı (Z): Sonucun sıfır olması durumunda kurulur.
- Elde bayrağı (C): İşaretsiz taşma (carry/borrow) oluştuğunda kurulur.
- Negatif / işaret bayrağı (N, S): Sonucun negatif olması durumunda kurulur.
- Taşma bayrağı (V, O): İşaretli taşma (overflow) oluştuğunda kurulur.
Koşullu dal buyrukları bu bayrakları okuyarak program akışını belirler.
Buyruk yazmacı
Buyruk yazmacı (IR, instruction register), bellekten yeni getirilen buyruğu tutar. Getirme (fetch) aşamasında buyruk IR'a yüklenir; ardından çözme (decode) birimi IR içeriğini çözümleyerek hangi işlemin yapılacağını belirler. IR programcıya doğrudan erişilebilir değildir; CPU'nun iç işleyişine aittir.
Bellek adres ve veri yazmaçları
Bellek adres yazmacı (MAR, memory address register), belleğe erişilecek adresi tutar; bellek veri yazmacı (MDR ya da MBR, memory buffer register) ise bellekten okunan ya da belleğe yazılacak veriyi geçici olarak barındırır. Bu iki yazmaç, CPU ile ana bellek arasındaki veri yolunu (bus) arayüzlemek için kullanılır.
Kayan nokta yazmaçları
Kayan nokta yazmaçları, kayan nokta sayılarını (IEEE 754) tutan özel yazmaçlardır. x87 FPU mimarisinde sekiz adet 80 bitlik yığın tabanlı kayan nokta yazmacı bulunmaktadır. SSE/AVX uzantılarında ise XMM (128 bit), YMM (256 bit) ve ZMM (512 bit) gibi geniş yazmaçlar kullanılır; bunlar hem kayan nokta hem de SIMD işlemleri için tasarlanmıştır.
Vektör / SIMD yazmaçları
SIMD (Tek Buyruk Çok Veri, Single Instruction Multiple Data) yazmaçları, tek bir buyrukla birden fazla veri öğesi üzerinde aynı işlemi yapmayı sağlar. Intel'in AVX-512 uzantısında 32 adet 512 bitlik ZMM yazmacı, ARM'ın Neon uzantısında ise 32 adet 128 bitlik Q yazmacı yer alır. Bu yazmaçlar özellikle multimedya, sinyal işleme ve makine öğrenimi uygulamalarında yüksek başarım sağlar.
Denetim ve durum yazmaçları
Denetim ve durum yazmaçları (CSR, control and status registers) işletim sistemi ve donanım tarafından kullanılan özel yazmaçlardır. İşlemci modunu (kullanıcı/çekirdek), kesme maskelerini, bellek koruma bilgilerini ve başarım sayaçlarını içerirler. RISC-V mimarisinde CSR'lar özel buyruklar (CSRRS, CSRRW vb.) aracılığıyla erişilir.
Yazmaç öbeği
Yazmaç öbeği (register file), bir işlemcideki yazmaçların tamamının birlikte oluşturduğu donanım yapısıdır. Tek bir saat çevriminde birden fazla yazmacın okunup yazılabilmesi amacıyla çok portlu (multi-ported) SRAM hücreleriyle gerçekleştirilir. Örneğin RISC-V'in basit bir gerçeklemesinde yazmaç öbeği tipik olarak iki okuma portu ve bir yazma portuna sahiptir; bu sayede bir toplama buyruğu iki kaynak yazmacını aynı anda okuyabilir.
Mimari ve fiziksel yazmaçlar
BKM tarafından tanımlanan yazmaçlara mimari yazmaçlar (architectural registers) denir; bunlar programcıya görünendir. Yüksek başarımlı işlemciler ise gerçekte daha fazla fiziksel yazmaç (physical register) barındırır. Sıra dışı yürütme yapan işlemcilerde, veri bağımlılıklarını çözmek ve paralel yürütmeyi artırmak için yazmaçların yeniden adlandırılması (register renaming) tekniği kullanılır: her mimari yazmaç, dinamik olarak farklı bir fiziksel yazmaca eşlenir. Bu sayede farklı buyruklar aynı mimari yazmacı "kullanıyormuş gibi görünse de" gerçekte farklı fiziksel yazmaçlara yazarlar; yanlış bağımlılıklar (false dependency, WAW/WAR hazardları) ortadan kalkar.
Yazmaçlar ve bellek ilişkisi
Yazmaçlar belleğe kıyasla son derece hızlıdır: modern bir işlemcide yazmaç erişimi genellikle tek bir saat çevrimi alırken, önbellek erişimi 2–50 çevrim, ana bellek erişimi ise yüzlerce çevrim sürebilir. Bu hız farkı, derleyicinin yazmaç tahsisi (register allocation) optimizasyonunu kritik kılar: iyi bir derleyici, sık kullanılan değişkenleri yazmaçlarda tutmaya; belleğe erişimi olabildiğince azaltmaya çalışır.
RISC mimarilerinde (RISC-V, ARM, MIPS) yük-depola modeli benimsenir: aritmetik ve mantık buyrukları yalnızca yazmaç işlenenleri üzerinde çalışır, belleğe yalnızca LOAD/STORE buyrukları erişir. Bu tasarım, boru hattı (pipeline) tasarımını sadeleştirir ve derleyici optimizasyonunu kolaylaştırır. CISC mimarilerinde (x86) ise buyruklar bellekteki işlenenlere doğrudan başvurabilir; ancak modern x86 işlemciler de dahili olarak RISC benzeri mikro işlemlere (micro-op) dönüştürme yapar.
Yazmaç sayısı arttıkça bağlam değiştirme (context switch) maliyeti de artar; işletim sistemi her iş parçacığı (thread) geçişinde tüm yazmaçları kaydetmek ve geri yüklemek zorunda kalır. Bu denge, BKM tasarımında önemli bir kısıttır.
Tarihçe
İlk elektronik bilgisayarlarda yazmaçlar, vana (vakum tüpü) ya da ferit çekirdekli (magnetic core) devreler olarak gerçekleştiriliyordu. 1950'lerde transistörün yaygınlaşmasıyla birlikte yazmaç sayısı artmaya başladı. 1964'te tanıtılan IBM System/360, 16 adet genel amaçlı 32 bitlik yazmaçla o dönem için geniş bir yazmaç kümesi sunuyordu ve mimari kayıt sayısını standartlaştırması açısından önemli bir kırılma noktası oldu.
1980'lerdeki RISC devrimiyle birlikte yazmaç sayısı belirgin biçimde artırıldı (genellikle 32 yazmaç); amaç, daha fazla değişkeni bellekten uzak tutmak ve boru hattı verimliliğini yükseltmekti. Süperskalar (çoklu buyruk başlatımlı) işlemcilerin yaygınlaşmasıyla 1990'larda yazmaçların yeniden adlandırılması tekniği standart bir mikromimari özelliği haline geldi.
Ayrıca bakınız
Kaynakça
- ^ a b c d e Patterson, David A.; Hennessy, John L. (2021). Computer Organization and Design: RISC-V Edition (2 bas.). Morgan Kaufmann. ISBN 978-0-12-820331-6.
- ^ Furber, Steve (2000). ARM System-on-Chip Architecture (2 bas.). Addison-Wesley. ISBN 978-0-201-67519-1.
- ^ a b c Tanenbaum, Andrew S.; Austin, Todd (2012). Structured Computer Organization (6 bas.). Pearson. ISBN 978-0-13-291652-3.
- ^ Intel Corporation. "Intel® 64 and IA-32 Architectures Software Developer's Manual". 2 Haziran 2023 tarihinde kaynağından arşivlendi. Erişim tarihi: 4 Haziran 2026.
- ^ a b c Hennessy, John L.; Patterson, David A. (2019). Computer Architecture: A Quantitative Approach (6 bas.). Morgan Kaufmann. ISBN 978-0-12-811905-1.
- ^ Amdahl, G. M.; Blaauw, G. A.; Brooks, F. P. (1964). "Architecture of the IBM System/360". IBM Journal of Research and Development. 8 (2). ss. 87-101. doi:10.1147/rd.82.0087.
