
Mikromimari (İngilizce: microarchitecture; bazen bilgisayar organizasyonu olarak da anılır), belirli bir buyruk kümesi mimarisinin (BKM) bir işlemci üzerinde nasıl gerçeklendiğini tanımlayan tasarım düzeyidir. Buyruk kümesi mimarisi yazılımın gördüğü soyut arayüzü (buyruklar, yazmaçlar, adresleme yöntemleri) tanımlarken, mikromimari bu arayüzün ardındaki somut donanım düzenlemesini belirler. Aynı buyruk kümesi mimarisi; başarım, maliyet, güç tüketimi ve yonga alanı gibi hedeflere göre birbirinden çok farklı mikromimarilerle gerçeklenebilir.
Bir mikromimari; veri yolu, aritmetik mantık birimi, yazmaç öbeği, önbellek, boru hattı ve denetim mantığı gibi bileşenlerin nasıl düzenlendiğini ve birbirine nasıl bağlandığını kapsar. Çağdaş yüksek başarımlı işlemciler; boru hattı, çoklu buyruk başlatımı, sıra dışı yürütme ve dallanma öngörüsü gibi tekniklerle her çevrimde birden çok buyruğu tamamlamaya çalışır. Örneğin x86 buyruk kümesi mimarisi, Intel ve AMD tarafından onlarca farklı mikromimariyle (Intel'in P6, Core ve Skylake; AMD'nin Zen aileleri gibi) gerçeklenmiştir.
Buyruk kümesi mimarisiyle ilişkisi

Bir bilgisayarın tasarımı genellikle iki düzeyde ele alınır: yazılımdan görünen ve uyumluluğu belirleyen buyruk kümesi mimarisi ile, bu mimariyi belirli bir yonga üzerinde hayata geçiren mikromimari. Buyruk kümesi mimarisi, bir programcının ya da derleyicinin gördüğü buyruk takımını, yazmaçları ve bellek modelini betimleyen bir sözleşme gibidir. Mikromimari ise bu sözleşmenin donanımda nasıl yerine getirileceğini belirler ve programcıdan büyük ölçüde gizlidir.
Aynı buyruk kümesini paylaşan iki işlemci yazılım açısından uyumludur; ancak iç mikromimarileri (boru hattı derinliği, önbellek boyutu, yürütme birimi sayısı, dallanma öngörücüsünün tasarımı vb.) tümüyle farklı olabilir. Bu ayrım, bilgisayar endüstrisinin temel taşlarından biridir: bir üretici, var olan yazılımları hiç değiştirmeden işlemcisinin başarımını kuşaktan kuşağa artırabilir. Bilgisayar mimarisi terimi çoğu zaman bu iki düzeyi birlikte kapsar.
Tasarım hedefleri ve ölçütleri
Bir mikromimari tasarlanırken başarım, maliyet, güç tüketimi, yonga alanı ve güvenilirlik gibi birbiriyle yarışan hedefler arasında ödünleşim yapılır. Bir işlemcinin bir programı çalıştırma süresi genellikle şu üç çarpanın bileşimiyle değerlendirilir: çalıştırılan buyruk sayısı, buyruk başına çevrim sayısı (BBÇ) ve saat çevrim süresi. Buyruk sayısı büyük ölçüde buyruk kümesi mimarisi ve derleyici tarafından belirlenirken, mikromimari kalan iki çarpanı doğrudan etkiler: çevrim başına daha çok buyruk tamamlayan (IPC'si yüksek) ya da daha yüksek saat hızında çalışabilen tasarımlar daha hızlıdır.
Ne var ki bu iki amaç çoğu zaman çelişir. Boru hattını derinleştirmek saat hızını yükseltebilir ama dallanma cezalarını ve karmaşıklığı artırır; yürütme birimi sayısını çoğaltmak çevrim başına buyruğu artırabilir ama güç tüketimini ve yonga alanını büyütür. 2000'li yıllardan itibaren güç yoğunluğunun ulaştığı güç duvarı ve ısıl sınırlar, mikromimari tasarımının başlıca kısıtları hâline gelmiştir; bu nedenle çağdaş tasarımlar artık ham hızdan çok enerji verimliliğini gözetir.
Temel öğeler

Bir mikromimarinin başlıca donanım öğeleri şunlardır:
- Veri yolu: Buyrukların üzerinde işlendiği aritmetik mantık birimi (AMB), kayan noktalı birim, yükle/sakla birimleri, yazmaç öbeği ve bunları birbirine bağlayan iç yollar. Veri yolu, işlemcinin hesaplama yapan bölümüdür.
- Denetim birimi: Her buyruk için veri yolu öğelerinin nasıl yönlendirileceğini belirleyen mantık. Karmaşık buyruk kümeli tasarımlarda çoğunlukla mikrokodla, çağdaş yalın tasarımlarda ise doğrudan donanım (sabit telli) mantığıyla gerçeklenir.
- Yazmaç öbeği: İşlemcinin en hızlı veri saklama katmanı; buyrukların doğrudan üzerinde işlem yaptığı yazmaçları barındırır. Sıra dışı yürüten işlemcilerde mimari yazmaçların sayısı, daha büyük bir fiziksel yazmaç öbeğiyle artırılır.
- Bellek alt sistemi: İşlemci ile ana bellek arasındaki hız farkını (bellek duvarı) azaltan katmanlı önbellek yapısı, bellek yönetim birimi ve bellek denetimcisi.
Başlıca mikromimari teknikleri
Çağdaş yüksek başarımlı işlemciler, çevrim başına tamamlanan buyruk sayısını artırmak ve bellek gecikmesini gizlemek için birbirini tamamlayan birçok teknik kullanır.
Boru hattı

Boru hattı, buyruk işlemeyi getir, çöz, yürüt, belleğe eriş ve geri yaz gibi aşamalara böler ve ardışık buyrukların bu aşamalarda üst üste binmesini sağlar; ideal durumda her çevrimde bir buyruk tamamlanır. Bu, tek tek buyrukların gecikmesini azaltmaz ama işlemci verimini (birim zamanda tamamlanan buyruk sayısını) önemli ölçüde artırır. Veri, denetim ve yapısal bağımlılıklar (boru hattı sorunları) duraklamalara yol açabilir; bunlar ileri yönlendirme, dallanma öngörüsü ve buyruk yeniden sıralaması gibi yöntemlerle azaltılır.
Çoklu buyruk başlatımlı yürütme

Çoklu buyruk başlatımlı (superscalar) işlemciler, aritmetik mantık birimi ve kayan noktalı birim gibi yürütme birimlerini çoğaltarak her çevrimde birden çok buyruğu aynı anda başlatır ve böylece çevrim başına buyruk sayısını birin üzerine çıkarır. Bir dağıtıcı, getirilen buyruklardan hangilerinin koşut çalıştırılabileceğine karar verir. Yaklaşık 1998'den sonra geliştirilen genel amaçlı işlemcilerin neredeyse tümü çoklu buyruk başlatımlıdır.
Sıra dışı yürütme
Sıra dışı yürütme, verisi hazır olan buyrukların, kendinden önceki ama henüz verisini bekleyen buyruklardan bağımsız olarak yürütülmesine izin verir; sonuçlar daha sonra program sırasına göre düzenlenerek geri yazılır. İlk kez IBM System/360 Model 91'de Tomasulo algoritmasıyla uygulanan bu teknik, rezervasyon istasyonları ve yeniden sıralama belleği gibi yapılarla bellek gecikmesinden doğan boşlukları doldurur.
Yazmaç yeniden adlandırma
Yazmaç yeniden adlandırma, aynı mimari yazmacı yeniden kullanan buyruklar arasındaki yapay (yalancı) bağımlılıkları ortadan kaldırmak için bu yazmaçları, sayıca daha çok olan fiziksel yazmaçlara eşler; böylece sıra dışı yürütmenin önündeki gereksiz engeller kalkar.
Dallanma öngörüsü

Dallanma öngörüsü, bir koşullu dalın sonucu daha hesaplanmadan hangi yolun izleneceğini tahmin ederek boru hattının dolu kalmasını sağlar. Çağdaş öngörücüler, geçmiş dallanma örüntülerine dayanan istatistiksel düzeneklerle yüzde 95'in üzerinde doğruluğa ulaşabilir; yanlış tahmin durumunda yanlış yola giren buyruklar boşaltılır.
Öngörüye dayalı yürütme
Öngörüye dayalı (spekülatif) yürütme, dallanma öngörüsüyle tahmin edilen yol üzerindeki buyrukların, dalın sonucu kesinleşmeden yürütülmesidir. Tahmin yanlışsa bu buyrukların sonuçları geri alınır. Teknik başarımı önemli ölçüde artırsa da, Spectre ve Meltdown gibi yan kanal saldırılarının da kaynağı olmuştur.
Önbellek ve bellek hiyerarşisi

Katmanlı önbellek yapısı, sık kullanılan veri ve buyrukları işlemciye yakın hızlı belleklerde tutarak ana belleke erişim gecikmesini gizler. Tipik bir işlemcide çekirdeğe en yakın L1 önbelleği küçük ama çok hızlı, L2 ve L3 önbellekleri ise giderek büyür ve yavaşlar. Çok çekirdekli sistemlerde paylaşılan veriler için önbellek tutarlılığı protokolleri kullanılır.
Paralellik biçimleri
Mikromimariler başarımı, farklı düzeylerde koşutluk (paralellik) sömürerek artırır:
- Buyruk düzeyinde paralellik (ILP): Tek bir buyruk akışı içinde bağımsız buyrukların aynı anda yürütülmesi. Boru hattı, çoklu buyruk başlatımı ve sıra dışı yürütme bu paralelliği kullanır.
- İş parçacığı düzeyinde paralellik (TLP): Birden çok buyruk akışının (iş parçacığının) eşzamanlı çalıştırılması. Eşzamanlı çoklu iş parçacığı (SMT) tek bir çekirdeğin kaynaklarını birden çok iş parçacığına paylaştırırken, çok çekirdekli tasarımlar birden çok çekirdeği aynı yonga üzerinde birleştirir.
- Veri düzeyinde paralellik (DLP): Aynı işlemin çok sayıda veri öğesine aynı anda uygulanması. tek buyruk çoklu veri (SIMD) birimleri ve grafik işlemcileri bu yaklaşımı kullanır.
Güç, ısı ve sınırlar

1970'lerden 2000'lere dek mikromimari başarımı, hem saat hızının yükselmesi hem de transistör bütçesinin artmasıyla hızla büyüdü. Dennard ölçeklemesinin 2000'lerin ortasında sona ermesiyle saat hızlarını sürekli yükseltmek olanaksızlaştı; güç yoğunluğu güç duvarına dayandı. Sonuç olarak tasarımcılar tek bir çekirdeği hızlandırmak yerine çok çekirdekliliğe ve enerji verimliliğine yöneldi. Bir yongadaki tüm transistörlerin ısıl sınırlar yüzünden aynı anda çalıştırılamaması (karanlık silikon) ve bellek bant genişliğinin sınırlı kalması, çağdaş mikromimarinin başlıca darboğazlarıdır.
Tarihsel gelişim

Çoklu yürütme birimiyle koşut işleme fikri, 1964'te Seymour Cray'in CDC 6600'üne ve 1967'de Tomasulo algoritmasını tanıtan IBM System/360 Model 91'e dayanır. İlk işlemcilerde mikromimari büyük ölçüde mikrokodla, yani her makine buyruğunu daha küçük iç adımlara çeviren bir denetim katmanıyla gerçeklenirdi. RISC yaklaşımının 1980'lerde yaygınlaşmasıyla birlikte boru hattına ve doğrudan donanım denetimine dayanan daha yalın mikromimariler öne çıktı.
1990'lardan başlayarak çoklu buyruk başlatımı, sıra dışı yürütme ve dallanma öngörüsü yüksek başarımlı işlemcilerde standart hâle geldi; Intel'in 1993'teki Pentium'u ilk çoklu buyruk başlatımlı x86 işlemcisiydi. Günümüzde Intel ve AMD gibi üreticilerin x86 işlemcileri, dış arayüzde karmaşık buyruk kümesini korurken içeride bu buyrukları RISC benzeri mikro-işlemlere (micro-op) ayrıştıran mikromimariler kullanır. Dennard ölçeklemesinin sona ermesinden sonra ise çok çekirdeklilik, özelleşmiş hızlandırıcılar ve enerji odaklı tasarım öne çıkmıştır.
Örnekler
Aynı buyruk kümesi mimarisinin farklı mikromimarilerle gerçeklenmesine örnekler:
- x86: Intel (P5, P6, Core, Skylake) ve AMD (K7, K8, Zen) aileleri.
- ARM: ARM'ın Cortex-A serisi ile bağımsız üreticilerin tasarladığı yüksek başarımlı çekirdekler aynı buyruk kümesini paylaşır.
- RISC-V: Açık buyruk kümesi; küçük gömülü çekirdeklerden sıra dışı yürüten yüksek başarımlı tasarımlara dek çok sayıda bağımsız mikromimariyle gerçeklenir.
Ayrıca bakınız
Kaynakça
- ^ a b c d e f g h i j Hennessy, John L.; Patterson, David A. (2019). Computer Architecture: A Quantitative Approach (6 bas.). Morgan Kaufmann. ISBN 978-0128119051.
- ^ a b c d e f Shen, John Paul; Lipasti, Mikko H. (2013). Modern Processor Design: Fundamentals of Superscalar Processors. Waveland Press. ISBN 978-1478607830.
- ^ a b c d Patterson, David A.; Hennessy, John L. (2020). Computer Organization and Design RISC-V Edition (2 bas.). Morgan Kaufmann. ISBN 978-0128203316.
- ^ a b c Smith, James E.; Sohi, Gurindar S. (1995). "The Microarchitecture of Superscalar Processors". Proceedings of the IEEE. 83 (12). ss. 1609–1624. doi:10.1109/5.476078.