Tek bir CPU ile gerçekten zararlı veri yarışları geliştirmek çok daha zor. Yani, tek bir CPU'yu bölerseniz kelimeler arasında yırtılmayı bırakabilirsiniz, ancak istediğinizi yapan tek bir iplik dizilişinin olmadığı egzotik senaryolar oluşturabilir misiniz?
Tamam, belki de sinsi hatalar yapmak, çoklu kod geliştirmelerinin geçerli bir kullanımı olarak sayılmaz. Görünen o ki, mutli çekirdeğin, tek çekirdeğin zaman veremediği şekilde yapabileceği fazla bir şey yok. Sebep basittir. Bu kötü veri yarışlarından kaçınmaya çalışırsanız, kodunuzda senkronizasyon noktalarına sahip olmanız gerekir. Kodunuzu, çıkışları hesaplayıp üretmeden önce, girişlerin tamamlanmış ve senkronize edilmesi gereken bir hesaplama kafesi olarak modelliyorsanız, bir sonraki işlem bloğunu hesaplayarak, tek bir işlemcinin kafes boyunca çalışabileceğini görmek kolaydır. .
Aslında, eğer algoritmanızın bir Turing makinesi tarafından çözülebileceğini gösterebilirseniz (ki hemen hemen umursadığımız her algoritma), algoritmanın sadece bir tek çekirdekli CPU ile değil, aslında bir makine için çok uzun bir bant parçası olan durum makinesi!
SATRANÇ yarış dedektörü aslında yarış durumları bulmak için bu yararlanır. Tekli olarak tutulan her şeyi çalıştırır ve bir testin bir yarış olayı nedeniyle bir başarısızlıkla sonuçlanan vakaları bulmaya çalışırken, dişler arasındaki olası tüm harmanlamaları araştırır. CHESS , çok iş parçacıklı herhangi bir uygulamayı tek bir çekirdekte çalıştırabileceğiniz gerçeğine bağlıdır .
Çok çekirdekli ihtiyacınız olan durumlar , donanımın sınırlarını genişletmeye başladığınızda belirir. Açık olan şey, zaman kısıtlamalarınız olduğunda. Gerçek zamanlı zaman kısıtlamaları olan bazı problemler tek çekirdekli yapmak imkansızdır çünkü tek çekirdeğin saatini yeterince hızlı süremezler. İşlemcilerin 4GHz'e çıkmasının ve daha sonra biraz durması, daha düşük hızlarda daha fazla çekirdek tercih etmesinin bir nedeni var.
Bu zamanlama kısıtlamasının daha egzotik bir versiyonu zor gerçek zaman sistemlerindedir. Bazı zor gerçek zamanlı sistemlerde, kesintilerin servisi o kadar talepkar ki, gerçekte çekirdekler arasındaki kesintileri bölmenize ya da zamanlama sınırlamalarına maruz kalmanıza izin veren çok çekirdekli bir CPU seçmeniz gerekiyor.
Veri otobüslerinde başka bir sınır daha ortaya çıkmaktadır. Blue Gene / P'yi örnek olarak alın. Belirli bir Blue Gene / P süper bilgisayarı olan JUGENE, 144 terabayt belleğe sahiptir. Onlar sadece tüm bu hafızaya erişebilecek tek CPU bilgisayarları yapmazlar.