Sirkuit seperti unit logika aritmatika akan mengambil beberapa angka sebagai input dan menghasilkan angka sebagai ouptut. Ini dapat menjamin bahwa dalam beberapa periode waktu, semua bit output akan mencapai kondisi akhir yang benar, tetapi jumlah waktu aktual untuk bit output menjadi valid dapat sangat bervariasi berdasarkan berbagai faktor.
Dimungkinkan untuk membuat ALU dengan input "valid" dan output "valid", dan menentukan bahwa jika input "valid" rendah untuk jumlah waktu yang cukup sebelum perhitungan dilakukan, dan input data berisi nilai yang diinginkan sebelum input "valid" menjadi tinggi, output "valid" tidak akan tinggi sampai bit output sebenarnya benar. Desain seperti itu mungkin akan membutuhkan sekitar dua kali lebih banyak sirkuit daripada ALU konvensional [pada dasarnya itu harus melacak apakah setiap bit "diketahui" menjadi nol atau "dikenal" menjadi satu; outputnya "valid" akan menjadi benar setelah status setiap bit output diketahui].
Lebih buruk lagi, membiarkan bagian-bagian dari CPU yang akan mampu berjalan lebih cepat untuk melakukannya hanya akan membantu jika mereka tidak menunggu sepanjang waktu untuk bagian yang lebih lambat untuk mengejar ketinggalan. Untuk mewujudkannya, harus ada logika untuk memutuskan bagian mana dari mesin "di depan" pada saat tertentu, dan memilih tindakan berdasarkan itu. Sayangnya, keputusan semacam itu adalah salah satu yang paling sulit untuk dibuat secara elektronik. Memutuskan untuk memutuskan mana dari dua peristiwa yang terjadi terlebih dahulu umumnya mudah jika seseorang dapat menjamin bahwa tidak akan ada "panggilan dekat". Misalkan sequencer memori menangani permintaan dari unit pemrosesan # 1 dan unit # 1 memiliki permintaan lain yang tertunda setelah itu. Jika unit # 2 mengirimkan permintaan sebelum permintaan pertama dari # 1 selesai, unit memori harus mengatasinya; jika tidak, harus menangani permintaan berikutnya dari unit # 1. Itu akan tampak seperti desain yang masuk akal, tetapi ternyata menjadi sangat bermasalah. Masalahnya adalah bahwa jika ada saat tertentu sehingga permintaan diterima sebelum saat itu akan segera diproses, dan permintaan yang diterima setelah itu harus menunggu, jumlah waktu yang diperlukan untuk menentukan apakah permintaan yang melampaui batas waktu akan kira-kira berbanding terbalik dengan selisih antara waktu permintaan diterima dan batas waktu. Waktu yang diperlukan untuk unit memori untuk menentukan bahwa permintaan dari # 2 mengalahkan tenggat waktu satu femptosecond mungkin secara substansial melebihi jumlah waktu yang diperlukan untuk melayani permintaan kedua dari unit # 1, tetapi unit tidak dapat melayani baik permintaan sampai memutuskan mana yang akan diperbaiki terlebih dahulu.
Setelah semuanya menjalankan jam biasa tidak hanya menghilangkan kebutuhan untuk sirkuit untuk menentukan kapan output dari suatu perhitungan valid, itu juga memungkinkan waktu "panggilan dekat" untuk dihilangkan. Jika semua yang ada di sistem menggunakan clock 100Mhz, tidak ada sinyal yang berubah sebagai respons terhadap clock hingga 1ns setelah edge clock, dan semua yang akan terjadi sebagai respons terhadap edge clock terjadi dalam 7ns, maka semua yang akan terjadi sebelum jam clock edge tertentu akan "menang" oleh setidaknya 3ns, dan segala sesuatu yang tidak akan terjadi sampai setelah clock edge akan "kalah" oleh setidaknya 1ns. Menentukan apakah peluang sinyal sebelum atau setelah jam, ketika dijamin tidak akan "ditutup", jauh lebih mudah daripada menentukan yang mana dari dua sinyal yang diatur waktunya secara acak.