Yanıtların çoğu yazılım ve / veya donanım modelinin yanından yaklaşsa da, en temiz yol fiziksel RAM yongalarının nasıl çalıştığını düşünmektir. (Önbellek, işlemci ve bellek arasında bulunur ve sadece aynı adres veriyolunu kullanır ve işlemi işlemci için tamamen şeffaftır.) RAM yongalarının, gelen bellek hücresinin adresini alan tek bir adres kod çözücüsü vardır. adres yolu (ve benzer şekilde bir veri yolu, içeri veya dışarı). Mevcut bellekler "tek işlemci yaklaşımı" ile oluşturulmuştur, yani bir işlemci bir veri yolu üzerinden bir bellek yongasına bağlanmıştır. Diğer bir deyişle, bu "von Neumann darboğaz" dır, çünkü her bir talimatın belleğe en az bir kez başvurması gerekir. Bu nedenle, bir kabloda (veya kablolarda, diğer bir deyişle veri yolunda) aynı anda yalnızca bir sinyal olabilir, böylece RAM yongası bir seferde bir hücre adresi alabilir. İki çekirdeğin adres veriyoluna aynı adresi verdiğinden emin olana kadar, iki farklı veri yolu sürücüsünün (çekirdek gibi) eşzamanlı veri yolu erişimi fiziksel olarak mümkün değildir. (Ve eğer aynıysa, gereksizdir).
Gerisi donanım ivmesi. Tutarlılık veriyolu, önbellek, SIMD erişimi, vb. Bahsedilen hızlandırıcılar, adres veri yolunu özel olarak kullanma mücadelesini kapsayabilir ve programlama modellerinin sorunuzla ilgisi yoktur. Ayrıca, eşzamanlı erişimin "özel adres alanı" soyutlamasına da aykırı olacağını unutmayın.
Yani, sorularınız için: ne aynı ne de farklı adreslerle aynı anda doğrudan RAM erişimi mümkün değildir. Önbellek kullanımı bu gerçeği kapsayabilir ve bazı durumlarda görünüşte aynı anda erişime izin verebilir. Bu, önbellek düzeyine ve yapının yanı sıra verilerinizin uzamsal ve zamansal konumuna bağlıdır. Ve evet, haklısınız: gelişmiş RAM erişimi olmadan çoklu (çekirdek) işleme, RAM yoğun uygulamalar için fazla yardımcı olmaz.
Daha iyi anlamak için: Doğrudan Bellek Erişiminin nasıl çalıştığını hatırlayın. Hem CPU hem de DMA cihazı veri yoluna adres koyabilir, bu nedenle veriyolunun eşzamanlı kullanımından birbirini dışlaması gerekir.