Gecikme Toleransı
Mikroişlemcilerin hızı on yılda on kattan fazla arttı, ancak emtia hafızalarının (DRAM) hızı yalnızca iki katına çıktı, yani erişim süresi yarıya indi. Bu nedenle, işlemci saat döngüleri açısından bellek erişiminin gecikmesi 10 yılda altı kat artar. Çok işlemciler sorunu yoğunlaştırdı.
Veri yolu tabanlı sistemlerde, işlemci ve bellek arasında yüksek bant genişliğine sahip bir veri yolunun kurulması, bellekten veri elde etme gecikmesini artırma eğilimindedir. Bellek fiziksel olarak dağıtıldığında, ağın ve ağ arayüzünün gecikmesi, düğüm üzerindeki yerel belleğe erişme süresine eklenir.
Daha fazla düğüm, hesaplamaya göre daha fazla iletişim, genel iletişim için ağda daha fazla atlama ve muhtemelen daha fazla çekişme anlamına geldiğinden, gecikme genellikle makinenin boyutuyla birlikte büyür. Donanım tasarımının temel amacı, yüksek, ölçeklenebilir bant genişliğini korurken veri erişiminin gecikmesini azaltmaktır.
Gecikme Toleransına Genel Bakış
Gecikme toleransının nasıl işlendiği en iyi makinedeki kaynaklara ve bunların nasıl kullanıldığına bakılarak anlaşılabilir. İşlemci bakış açısından, bir düğümden diğerine iletişim mimarisi bir boru hattı olarak görülebilir. Ardışık düzen aşamaları, kaynak ve hedefteki ağ arabirimlerinin yanı sıra yol boyunca ağ bağlantıları ve anahtarları içerir. Mimarinin iletişimi nasıl yönettiğine bağlı olarak iletişim yardımında, yerel bellek / önbellek sisteminde ve ana işlemcide de aşamalar vardır.
Temel iletişim yapısındaki kullanım sorunu ya işlemci ya da iletişim mimarisinin belirli bir zamanda meşgul olması ve iletilen tek kelime kaynaktan hedefe doğru ilerlediğinden, iletişim hattında bir seferde sadece bir aşama meşguldür. Gecikme toleransındaki amaç, bu kaynakların kullanımının mümkün olduğu kadar örtüşmesidir.
Açık Mesaj Geçişinde Gecikme Toleransı
Mesaj geçişinde gerçek veri aktarımı, genellikle bir gönderme işlemi kullanılarak gönderen tarafından başlatılır. Bir alma işlemi, verinin iletilmesi için kendi başına motive etmez, bunun yerine, verileri gelen bir ara bellekten uygulama adres alanına kopyalar. Alıcı tarafından başlatılan iletişim, verinin kaynağı olan sürece bir talep mesajı gönderilerek yapılır. İşlem daha sonra verileri başka bir gönderme yoluyla geri gönderir.
Senkronize bir gönderme işlemi, mesajdaki tüm verilerin hedefe iletilmesi için geçen süreye ve alma işlemine yönelik süreye ve bir alındı bildiriminin döndürülme süresine eşit bir iletişim gecikmesine sahiptir. Eşzamanlı bir alma işleminin gecikmesi, işlem ek yüküdür; Bu, verilerin uygulamaya kopyalanmasını ve verilerin henüz ulaşmadıysa ek gecikmeyi içerir. Mümkünse genel giderler de dahil olmak üzere bu gecikmeleri her iki uçta da gizlemek istiyoruz.
Paylaşılan Adres Alanında Gecikme Toleransı
Temel iletişim, paylaşılan bir adres alanına okuma ve yazma yoluyla sağlanır. Kolaylık sağlamak için buna okuma-yazma iletişimi denir. Alıcı tarafından başlatılan iletişim, başka bir işlemcinin belleğinden veya önbelleğinden verilere erişilmesine neden olan okuma işlemleriyle yapılır. Paylaşılan verilerin önbelleğe alınması yoksa, gönderen tarafından başlatılan iletişim, uzak belleklerde tahsis edilen verilere yazma yoluyla yapılabilir.
Önbellek tutarlılığıyla, yazma işlemlerinin etkisi daha karmaşıktır: Yazmalar gönderene yol açar veya alıcı tarafından başlatılan iletişim önbellek tutarlılık protokolüne bağlıdır. Ya alıcı tarafından başlatılan ya da gönderen tarafından başlatılan, donanım destekli bir okuma yazma paylaşımlı adres alanındaki iletişim, doğal olarak ince tanelidir, bu da tolerans gecikmesini çok önemli hale getirir.
Paylaşılan Adres Alanında Veri Aktarımını Engelleme
Paylaşılan bir adres alanında, donanım veya yazılım yoluyla verilerin birleştirilmesi ve blok transferlerinin başlatılması, kullanıcı programında açıkça veya sistem tarafından şeffaf bir şekilde yapılabilir. Açık blok transferleri, kullanıcı programındaki gönderime benzer bir komutun yürütülmesi ile başlatılır. Gönderme komutu, verileri boru hatlı bir şekilde kaynak düğümden hedefe aktaran iletişim yardımı ile açıklanır. Hedefte, iletişim asistanı veri kelimelerini ağ arayüzünden çeker ve bunları belirtilen yerlerde saklar.
Gönderme-alma mesajı geçişinden iki temel fark vardır; bunların her ikisi de, gönderme işleminin, verilerin hedefte yerleştirileceği program veri yapılarını doğrudan belirleyebilmesinden kaynaklanmaktadır, çünkü bu konumlar paylaşılan adres alanında yer almaktadır. .
Paylaşılan Bir Adres Alanında Geçmiş Uzun Gecikmeli Olayları İlerleme
Bellek işlemi engellemesiz yapılırsa, işlemci bir bellek işlemini diğer talimatlara doğru ilerleyebilir. Yazmalar için, eğer yazma bir yazma arabelleğine konursa ve işlemci, bellek sistemine yazmayı ve gerektiği gibi tamamlanmasını izlemeyi sürdürürken işlemciye devam ettiğinde uygulanması genellikle oldukça basittir. Aradaki fark, bir yazmadan farklı olarak, bir okumanın genellikle çok kısa bir süre sonra, okuma tarafından döndürülen değere ihtiyaç duyan bir talimat tarafından takip edilmesidir.
Paylaşılan Adres Alanında ön iletişim
Ön iletişim, ticari mikro işlemcilerde zaten yaygın olarak kullanılan bir tekniktir ve gelecekte önemi muhtemelen artacaktır. Bir önceden getirme talimatı, veri öğesinin gerçek okumasının yerini almaz ve örtüşme yoluyla gecikmeyi gizleme amacına ulaşmak istiyorsa, ön getirme talimatının kendisi engellemez olmalıdır.
Bu durumda, paylaşılan veriler önbelleğe alınmadığından, önceden getirilen veriler ön getirme tamponu adı verilen özel bir donanım yapısına getirilir. Sözcük bir sonraki yinelemede bir kayıt olarak okunduğunda, bellekten ziyade ön getirme tamponunun başından okunur. Gizleme gecikmesi, tek döngü yinelemesini hesaplama süresinden çok daha büyük olsaydı, birkaç yinelemeyi önceden getirirdik ve bir seferde önceden getirme arabelleğinde potansiyel olarak birkaç kelime olurdu.
Paylaşılan Adres Alanında Çoklu Okuma
Farklı gecikme türlerini gizleme açısından, donanım destekli çoklu okuma belki de çok yönlü bir tekniktir. Diğer yaklaşımlara göre aşağıdaki kavramsal avantajlara sahiptir:
Özel bir yazılım analizi veya desteği gerektirmez.
Dinamik olarak çağrıldığından, önbellek çakışmaları gibi öngörülemeyen durumların yanı sıra öngörülebilir durumların üstesinden gelebilir.
Önceden getirme gibi, bir iş parçacığı içindeki erişimleri yeniden sıralamadığı için bellek tutarlılık modelini değiştirmez.
Önceki teknikler bellek erişim gecikmesini gizlemeyi hedeflerken, çoklu iş parçacığı, olay çalışma zamanında tespit edilebildiği sürece herhangi bir uzun gecikme olayının gecikmesini potansiyel olarak gizleyebilir. Buna senkronizasyon ve talimat gecikmesi de dahildir.
İşlemci hızlarına kıyasla gecikme süreleri giderek daha uzun hale geldiğinden, bu eğilim gelecekte değişebilir. Ayrıca, çok iş parçacığı için genişletilebilen yöntemler sağlayan daha karmaşık mikro işlemcilerle ve çok iş parçacıklı okumayı öğretim düzeyinde paralellik ile birleştirmek için yeni çok iş parçacıklı teknikler geliştirilmesiyle, bu eğilim kesinlikle gelecekte bazı değişikliklerden geçiyor gibi görünüyor.