Jauh lebih sulit untuk mengembangkan balapan data yang sangat jahat dengan satu CPU. Maksud saya, tentu saja, Anda dapat menarik antara kata-kata jika Anda mengganggu CPU tunggal, tetapi dapatkah Anda membuat skenario eksotis di mana tidak ada satu benang tunggal yang melakukan apa yang Anda inginkan?
Oke, mungkin membuat bug berbahaya tidak dianggap sebagai penggunaan multi-kode yang valid. Ternyata, tidak banyak yang mutli-core dapat lakukan bahwa core tunggal tidak dapat memberikan waktu. Alasannya sederhana. Jika Anda mencoba menghindari ras data jahat itu, Anda harus memiliki titik sinkronisasi dalam kode Anda. Jika Anda memodelkan kode Anda sebagai kisi perhitungan di mana input yang harus lengkap dan disinkronkan sebelum Anda dapat menghitung dan menghasilkan output, mudah untuk melihat bahwa satu CPU dapat dengan mudah berjalan di sepanjang kisi, menghitung blok kerja berikutnya yang tersedia .
Bahkan, jika Anda dapat menunjukkan bahwa algoritme Anda dapat diselesaikan dengan mesin Turing (yang hampir setiap algoritma yang kami pedulikan), dapat dibuktikan bahwa algoritme dapat dilakukan dengan tidak hanya satu CPU inti, tetapi pada kenyataannya mesin negara dengan selembar sangat panjang untuk memori!
The CHESS detektor lomba sebenarnya memanfaatkan ini untuk menemukan kasus ras. Ini menjalankan semua yang dilakukan secara singlethread dan secara sistematis mengeksplorasi semua interleaves yang mungkin di antara utas, mencoba menemukan kasus di mana tes gagal karena kasus ras. CHESS tergantung pada kenyataan bahwa Anda dapat menjalankan aplikasi multithreaded pada satu inti.
Kasus-kasus di mana Anda memerlukan multicore muncul ketika Anda mulai memperluas batas-batas perangkat keras. Yang jelas adalah ketika Anda memiliki keterbatasan waktu. Beberapa masalah dengan batasan waktu nyata tidak mungkin dilakukan dengan satu inti karena mereka tidak bisa menggerakkan jam satu inti dengan cukup cepat. Ada alasan mengapa CPU naik ke 4Ghz dan kemudian duduk sedikit, lebih memilih core lebih banyak pada kecepatan yang lebih rendah.
Versi yang lebih eksotis dari batasan waktu ini adalah dalam sistem waktu nyata yang sulit. Dalam beberapa sistem waktu nyata yang sulit, layanan interupsi sangat menuntut sehingga Anda benar-benar harus memilih CPU multi-core yang memungkinkan Anda membagi interupsi di seluruh core, atau Anda mengalami keterbatasan waktu.
Batas lain muncul dengan bus data. Pertimbangkan Blue Gene / P sebagai contoh. JUGENE, superkomputer Blue Gene / P tertentu, memiliki memori 144 terabyte . Mereka tidak membuat komputer CPU tunggal yang dapat mengakses semua memori itu.