Obwód podobny do arytmetycznej jednostki logicznej pobierze kilka liczb jako dane wejściowe i wygeneruje liczbę w postaci wyjściowej. Może zagwarantować, że w pewnym okresie czasu wszystkie bity wyjściowe osiągną prawidłowe stany końcowe, ale faktyczny czas na bity wyjściowe może być ważny, może się znacznie różnić w zależności od różnych czynników.
Możliwe byłoby skonstruowanie ALU z „prawidłowym” wejściem i „prawidłowym” wyjściem i określenie, że pod warunkiem, że „prawidłowy” sygnał wejściowy jest niski przez wystarczający czas przed wykonaniem obliczeń, a dane wejściowe zawierają pożądane wartości, zanim „prawidłowe” wejście osiągnie stan wysoki, „prawidłowe” wyjście nie wzrośnie, dopóki bity wyjściowe nie będą w rzeczywistości poprawne. Taki projekt prawdopodobnie wymagałby około dwa razy więcej obwodów niż konwencjonalny ALU [w zasadzie musiałby śledzić, czy każdy bit był „znany” jako zero, czy „znany” jako jeden; jego „prawidłowe” wyjście byłoby prawdziwe, gdy stan każdego bitu wyjściowego był znany].
Co gorsza, zezwolenie na te części procesora, które mogłyby działać szybciej, będą pomocne tylko wtedy, gdy nie będą cały czas czekać, aż wolniejsze części zaczną nadrabiać zaległości. Aby tak się stało, musi istnieć logika, aby zdecydować, która część maszyny jest „do przodu” w danym momencie, i na tej podstawie wybrać kierunek działania. Niestety, tego rodzaju decyzja jest jedną z najtrudniejszych do podjęcia przez elektronikę w sposób niezawodny. Rzetelne podjęcie decyzji, które z dwóch zdarzeń miały miejsce jako pierwsze, jest na ogół łatwe tylko wtedy, gdy można zagwarantować, że nigdy nie będzie żadnych „bliskich połączeń”. Załóżmy, że sekwencer pamięci obsługuje żądanie z jednostki przetwarzającej nr 1, a następnie jednostka nr 1 oczekuje na kolejne żądanie. Jeśli jednostka nr 2 prześle żądanie przed zakończeniem pierwszego żądania z nr 1, jednostka pamięci powinna to obsłużyć; w przeciwnym razie powinien obsłużyć następne żądanie z jednostki nr 1. Wydawałoby się to rozsądnym projektem, ale okazuje się, że jest zaskakująco problematyczny. Problem polega na tym, że jeśli jest taki moment, że żądanie otrzymane przed tą chwilą zostanie przetworzone natychmiast, a żądanie otrzymane później będzie musiało poczekać, ilość czasu potrzebna do ustalenia, czy wniosek przekroczy termin z grubsza odwrotnie proporcjonalna do różnicy między czasem otrzymania wniosku a terminem. Czas wymagany do ustalenia przez moduł pamięci, że żądanie z nr 2 przekroczyło termin o jeden femptosekunda, może znacznie przekroczyć czas, który byłby wymagany do obsługi drugiego żądania z urządzenia nr 1, ale urządzenie nie może obsłużyć albo żądaj, aż zdecyduje, który z nich będzie obsługiwany jako pierwszy.
Dzięki temu, że wszystko przebiega przez wspólny zegar, nie tylko eliminuje potrzebę określania przez układ, kiedy dane wyjściowe obliczeń są prawidłowe, ale także pozwala wyeliminować czasowe „bliskie wywołania”. Jeśli wszystko w systemie kończy się na zegarze 100 MHz, żaden sygnał nie zmienia się w reakcji na zegar do 1 ns po zboczu zegara, a wszystko, co wydarzy się w odpowiedzi na zbocze zegara, nastąpi w ciągu 7 ns, wtedy wszystko, co nastąpi przed konkretna krawędź zegara „wygra” o co najmniej 3ns, a wszystko, co się nie stanie, dopóki krawędź zegara nie „straci” o co najmniej 1ns. Ustalenie, czy sygnał ma szansę przed zegarem, czy po nim, gdy jest gwarantowane, że nie będzie „blisko”, jest znacznie łatwiejsze niż ustalenie, który z dwóch sygnałów o dowolnym czasie nastąpi najpierw.