Intel Core 2 işlemcisinin mikromimarisini gösteren blok şeması. Mikromimari, bir buyruk kümesi mimarisinin somut donanım gerçeklemesidir.

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

Intel 80286 mikromimarisinin blok şeması (1982). Aynı x86 buyruk kümesi, sonraki kuşaklarda tümüyle farklı mikromimarilerle gerçeklendi.

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

Tek veri yolu çevresinde düzenlenmiş basit bir veri yolu ve denetim birimi. Yazmaç öbeği, AMB ve bellek arayüzü ortak bir iç yol üzerinden haberleşir.

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ı

Dört aşamalı bir boru hattında ardışık buyrukların zaman içinde üst üste binmesi. Her renk bir buyruğu, her sütun bir saat çevrimini gösterir.

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) bir boru hattı: her çevrimde birden fazla buyruk getirilir ve çoğaltılmış yürütme birimlerine dağıtılır.

Ç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ü

İki bitlik doymalı sayaçla çalışan bir dallanma öngörücüsünün durum diyagramı. Geçmiş dallanma davranışına bakarak bir sonraki dalın alınıp alınmayacağını tahmin eder.

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

İki çekirdekli bir işlemcide L1/L2/L3 önbellek hiyerarşisi örneği. Çekirdeğe yakın önbellekler küçük ve hızlı, uzaktakiler büyük ve yavaştır.

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

Bilgisayar bellek hiyerarşisi: yukarıda küçük, hızlı ve pahalı yazmaç/önbellek; aşağıda büyük, yavaş ve ucuz bellek/disk.

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

Birden çok yürütme birimi içeren yüksek başarımlı bir işlemci kartı. Çoklu yürütme birimiyle koşut işleme fikri 1960'lardaki süper bilgisayarlara dayanır.

Ç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

  1. ^ 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. 
  2. ^ 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. 
  3. ^ 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. 
  4. ^ 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.