
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.

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.
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.

Bir mikromimarinin başlıca donanım öğeleri şunlardır:
Ç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ı, 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ı (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, 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, 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ü, 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ı (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.

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.
Mikromimariler başarımı, farklı düzeylerde koşutluk (paralellik) sömürerek artırır:

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.

Ç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.
Aynı buyruk kümesi mimarisinin farklı mikromimarilerle gerçeklenmesine örnekler: