CPU mimarileri prosedürel çalışma sürelerine karşı önyargılı mı?


13

Rust gibi eşzamanlı çalışma zamanlarında daha iyi performans göstermeleri için CPU'larda yapılabilecek herhangi bir değişiklik var mı? Örneğin, şube tahmin uygulamalarında veya önbellek boyutlarında eşzamanlı çalışma zamanlarına yardımcı olacak değişiklikler var mı?

Mevcut CPU tasarımlarının C gibi prosedürel çalışma zamanları için daha iyi optimize edilebileceği izlenimine sahibim. Bunun yerine eşzamanlı çalışma zamanlarını optimize edecek olsaydık, CPU'lar nasıl farklı olurdu?

Bu nedenle, şube tahmini, prosedür kodlarını analiz eden araştırma makalelerinde çizilen genellemelere dayanılarak uygulanmıştır. Eşzamanlılık soyutlamanın varolan şube tahmin algoritmalarını olumsuz etkileyen çalışma zamanına önemli bir çalışma kümesi ekleyip eklemeyeceğini merak ediyorum. Örneğin, bir for döngüsünde tahmin etmek bir şeydir, ancak dalın hedefi her zaman hafızanın yeni bir kısmı (grafik, metin vb.) Olduğunda, her zaman önbellek kaçır ve asla dal olmaz bunun için tarih - çünkü henüz ikisi de dokunmadı.

Bu muhtemelen aptalca bir sorudur çünkü içerik, her zaman RAM'de olsa da, kullanılacağından daha küçük bir büyüklüğe dallanır (önbelleğe yüklendikten sonra) ... ama yine de, orada daha paralelleştirilmiş bir ortamda bir soyutlama sınırı olarak ortaya çıkacak, yordamsal bir çalışma zamanında önbellek ve dal yordayıcılarında depolanan bağlamlar için gözlemlenebilir bir zamansal sınır olmalıdır. Merak ediyorum ... Bu sınırlar gözlendi mi? Herhangi bir araştırma makalesi bunu analiz etti mi?

CPU mimarileri eşzamanlı kod üzerinden prosedürel koda yönelimli midir? ya da modern CPU'lar, eşzamanlı bir dilin yaşamadığı yeterince genel amaçlı mıdır?


2
Itanium (IA-64) mimarisi etrafındaki literatüre baktınız mı? Büyük paralellikçilik hayalleri ile tasarlandı, ancak daha sonra insanlar CPU'nun özelliklerinden yararlanacak derleyiciler üretemedi ve yazılım sonuçta çok iyi performans göstermedi.
Gilles 'SO- kötü olmayı bırak'

@Gilles evet. Farklı bir soru olmasına rağmen, bu aslında ilginç bir gözlem - belki de Itanium'a pişmiş paralellik modern eşzamanlı diller için daha uygun olurdu?
2015'te

@Gilles: Benzer şekilde, yeni Mill mimarisi paralellik ve düşük maliyetli anahtarlar düşünülerek inşa edilmiş gibi görünüyor. Örneğin, tüm "işlemler" için tek bir sanal adres alanı kullanarak, TLB'yi son önbellek düzeyi ile aygıt denetleyicileri arasında geri iter (bkz. Millcomputing.com/docs/memory . Slayt 49 ).
Matthieu

1
@pedAntic Rust bir çalışma zamanına ihtiyaç duyması kolay bir yanlış anlamadır: chat.stackoverflow.com/transcript/message/24171983#24171983 . Sorunuz Rust için iyi bir şey olmayan bu yanlış anlayışı destekliyor gibi görünüyor.
ArtemGr

1
@pedAntic Gördüğünüz gibi, Rust'in eşzamanlı bir çalışma zamanı vardı (yeşil iplik geçirme için), ancak artık yok. Şu anda Rust, eşzamanlılık performans profili açısından büyük ölçüde C ile aynı ligde. C'den tek fark Rust'daki statik analizin eşzamanlılığı çoğunlukla güvenli hale getirmesidir.
ArtemGr

Yanıtlar:


1

Modern bilgisayar mimarilerinin, kalıp alanında ve kullanılan güçte bir maliyet bütçesine karşı derleyiciler tarafından üretilen kod kalitesini artırmak amacıyla tasarlanması daha olasıdır. Çalışma zamanı kitaplıkları, verimli bir şekilde yürütülmesi gereken belirli bir derlenmiş kod örneğidir.

Çok uzun bir süredir, çoğu mimarinin hedef dili "C" dilidir. Bu, dilin donanımı üzerinde yaptığı mütevazı talepleri ve neredeyse evrensel bir sistem programlama dili haline geldiğini yansıtır (Üzgünüm Rust ve Go, C'yi yenmek için uzun bir yolunuz var).

Bunun bir sonucu olarak, yeni dillerin genellikle C eşdeğeri anlambilimleri açısından tanımlanmış oldukları görülüyor;

Modern derleyicilerle iyi eşleşen bir işlemcinin getirisi, bu derleyicilerden gelen kodun iyi çalıştığı ve işlemcinin en azından rekabetçi olma şansına sahip olmasıdır. Buradaki başarısızlık maliyeti, işlemciye başlamadan önce mahkumdur. Negatifdeki sadece iki örnek, her ikisi de Intel'in iAPX-432 ve Itanium'dur. Her ikisi de derleyicilerle (sırasıyla Ada ve C) çok zayıf bir ilişkiye sahipti ve ürünlerin silikon ve yazılım arasında bir suçlama oyununa dönüşmemesi.


0

Şüphesiz, evet.

Özellikle, C99 tarafından ima edilen iletişim modeli paylaşılan hafızadır. Daha gelişmiş eşzamanlı diller, ileti geçiş kanalları (Rust'daki gibi) gibi daha zengin iletişim modellerine sahiptir.

Modern CPU mimarileri, paylaşılan bellek için açık donanım desteğine sahiptir. Özellikle, MESI gibi önbellek tutarlılık protokolleri gerçek kapılar ve tellerde uygulanır. İleti geçirme fikri CPU'lara yabancı olmasa da, işlemler arasında ileti geçişi için gerçek bir destek yoktur. Modern PCI-e veriyolları mesaj geçişi kullanarak paylaşılan belleği taklit ederken, CPU süreçleri paylaşılan bellek kullanarak mesaj geçişini taklit etmelidir!

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.