Önbelleği izleme - Trace cache
Gelen bilgisayar mimarisi , bir iz önbellek veya yürütme iz önbellek bir uzmanlaşmış talimat önbellek dinamik akışı saklayan talimatlar olarak bilinen iz . Zaten getirilmiş ve kodu çözülmüş talimatların izlerini saklayarak komut getirme bant genişliğini artırmaya ve güç tüketimini azaltmaya ( Intel Pentium 4 durumunda ) yardımcı olur . Bir izleme işlemcisi iz önbellek etrafında tasarlanmış bir mimari ve izleme düzeyi ayrıntı talimatları işler. İzlerin biçimsel matematiksel teorisi, iz monoidleri ile tanımlanır .
Arka fon
İzleme önbelleğinin en eski akademik yayını "İzleme Önbelleği: Yüksek Bant Genişlikli Talimat Alımına Düşük Gecikmeli Yaklaşım" idi. Bu geniş kabul gören makale Eric Rotenberg, Steve Bennett ve Jim Smith tarafından 1996 Uluslararası Mikromimarlık Sempozyumu (MICRO) konferansında sunuldu . Daha önceki bir yayın, Intel'den Alex Peleg ve Uri Weiser'in yazdığı ABD patenti 5381533'tür, "sanal adres hattından bağımsız izleme segmentleri etrafında düzenlenmiş dinamik akış talimatı önbelleği", 1992'de dosyalanmış ve daha sonra terk edilmiş bir başvurunun devamı niteliğindedir.
Gereklilik
Daha geniş süper skalar işlemciler , daha yüksek performans için tek bir döngüde birden fazla talimatın alınmasını gerektirir. Talimatlar getirilen bitişik bellek yerleri (her zaman değil olması temel bloklar nedeniyle) şube ve atlama talimatları. Bu nedenle işlemciler, bu tür talimatları bitişik olmayan temel bloklardan almak ve hizalamak için ek mantık ve donanım desteğine ihtiyaç duyar. Birden fazla dalın alınmadığı tahmin edilirse , işlemciler tek bir döngüde birden çok bitişik temel bloktan talimatlar alabilir. Bununla birlikte, dallardan herhangi birinin alındığı tahmin ediliyorsa , işlemcinin aynı döngüde alınan yoldan talimatları alması gerekir. Bu, bir işlemcinin getirme yeteneğini sınırlar.
Bu dört temel blokları düşünün ( A , B , C , D ) yanı şekildeki bir basit için tekabül if-else döngü. Bu bloklar bellekte olduğu gibi bitişik olarak saklanacaktır ABCD . Şube Eğer D tahmin edilen edilmektedir -alınmadığı, getirme ünitesi temel taşlarını getirebilir A , B , C bitişik yerleştirilir. Ancak, D tahmin edilen alınan birim almak zorundadır getirme A , B , D olmayan bitişik yerleştirilmiş olan. Dolayısıyla bitişik olmayan bu blokları tek bir döngüde getirmek çok zor olacaktır. Dolayısıyla, bu izleme önbelleği gibi durumlarda işlemciye yardımcı olur.
İzleme önbelleği, bir kez alındığında talimatları dinamik sıralarında depolar. Bu talimatlarla tekrar karşılaşıldığında, izleme önbelleği, bir işlemcinin talimat getirme biriminin, yürütme akışındaki dallar hakkında endişelenmek zorunda kalmadan ondan birkaç temel bloğu almasına izin verir. Talimatlar, ya kodu çözüldükten sonra ya da kullanımdan kaldırıldıklarında izleme önbelleğinde saklanacaktır. Ancak, kod çözme aşamasından hemen sonra saklanırlarsa komut dizisi spekülatiftir.
İz yapısı
Dinamik talimat dizisi olarak da adlandırılan bir izleme, izleme önbelleğindeki bir giriştir. Maksimum sayıda komut ve maksimum temel blok ile karakterize edilebilir . İzler herhangi bir dinamik talimatta başlayabilir. Birden fazla iz, aynı başlangıç komutuna, yani aynı başlangıç program sayacına (PC) ve dal sonuçlarına göre farklı temel bloklardan komutlara sahip olabilir. Yukarıdaki şekil için ABC ve ABD geçerli izlerdir. Her ikisi de aynı PC'de (A adresi) başlar ve D'nin tahminine göre farklı temel bloklara sahiptir.
İzler genellikle aşağıdakilerden biri gerçekleştiğinde sona erer:
- İz, izin verilen maksimum sayıda talimatla dolduruldu
- Trace, izin verilen maksimum temel bloklara sahiptir
- İade talimatları
- Dolaylı şubeler
- Sistem çağrıları
İzleme kontrol bilgileri
Tek bir iz aşağıdaki bilgilere sahip olacaktır:
- Başlatma PC - İzlemedeki ilk talimatın bilgisayarı
- Dal bayrağı - ( maksimum temel bloklar -1 ) dal tahminleri
- Dal maskesi - izdeki dal sayısı ve izin bir dalda bitip bitmediği
- İz düşüşü - Son talimat dal alınmadıysa veya dallanmadıysa sonraki PC
- İzleme hedefi - alınan son şubenin adresi
Önbellek tasarımı izleme
İzleme önbelleği tasarlarken göz önünde bulundurulması gereken faktörler aşağıdadır.
- İz seçim politikaları - bir izdeki maksimum talimat sayısı ve maksimum temel blok
- İlişkisellik - bir önbelleğin sahip olabileceği yolların sayısı
- Önbellek indeksleme yöntemi - PC bitleri ile birleştirme veya XOR
- Yol ilişkilendirilebilirliği - aynı başlangıç bilgisayarına sahip ancak farklı temel bloklara sahip izler farklı setlere eşlenebilir
- Önbellek doldurma seçeneklerini izle -
- Kod çözme aşamasından sonra (spekülatif)
- Emekli olduktan sonra
İzleme önbelleği, talimat getirmenin kritik yolunda değil
Mantık vur / kaçır
İzleme satırları, izlemedeki ilk talimatın bilgisayarına ve bir dizi dal tahminine bağlı olarak izleme önbelleğinde depolanır. Bu, aynı adreste başlayan, her biri farklı dal sonuçlarını temsil eden farklı izleme yollarının depolanmasına izin verir. Bu etiketleme yöntemi, izleme önbelleğine yol ilişkilendirilebilirliği sağlamaya yardımcı olur. Diğer yöntem, izleme önbelleğinde etiket olarak yalnızca PC'nin başlatılmasını içerebilir. Bir ardışık düzenin komut getirme aşamasında , mevcut bilgisayar, bir dizi dal tahmini ile birlikte izleme önbelleğinde bir isabet için kontrol edilir . Bir isabet varsa, bu talimatlar için normal bir önbelleğe veya belleğe gitmesi gerekmeyen birime bir izleme hattı verilir. İzleme önbelleği, izleme hattı bitene kadar veya ardışık düzen içinde bir yanlış tahmin olana kadar getirme birimini beslemeye devam eder . Bir eksiklik olursa yeni bir iz inşa edilmeye başlanır.
Pentium 4'ün yürütme izleme önbelleği , x86 komutlarının kodunun çözülmesinden kaynaklanan mikro işlemleri depolar ve ayrıca bir mikro işlem önbelleğinin işlevselliğini sağlar. Buna sahip olarak, bir sonraki sefer bir talimata ihtiyaç duyulduğunda, tekrar mikro işlemlere dönüştürülmesi gerekmez.
Dezavantajları
İzleme önbelleğinin dezavantajları şunlardır:
- İzleme önbelleği ile talimat önbelleği arasında ve izleme önbelleğinin kendisi içinde yedekli talimat depolaması.
- Güç verimsizliği ve donanım karmaşıklığı
Yürütme izleme önbelleği
Intel , NetBurst CPU'larının L1 önbelleğine yürütme izleme önbelleğini dahil etti. Kodu çözülmüş mikro işlemleri depolar , böylece yeni bir talimatı yürütürken, talimatı tekrar getirmek ve kodunu çözmek yerine, CPU doğrudan izleme önbelleğinden kodu çözülmüş mikro işlemlere erişir ve böylece önemli ölçüde zaman tasarrufu sağlar. Dahası, mikro operasyonlar tahmin edilen yürütme yolunda önbelleğe alınır; bu, CPU tarafından önbellekten komutlar alındığında, bunlar zaten doğru yürütme sırasında mevcut oldukları anlamına gelir. Intel daha sonra Sandy Bridge ile mikro işlem önbelleği (UOP önbelleği) adı verilen benzer ancak daha basit bir konsept tanıttı .