Z mojego zrozumienia, większość współczesnych procesorów konsumenckich opiera się na logice synchronicznej. Niektóre aplikacje o dużej prędkości (przetwarzanie sygnałów itp.) Używają logiki ansync dla większej prędkości.
Jednak na dzisiejszym rynku szybkość w produktach konsumenckich jest jednym z głównych punktów sprzedaży (patrz AMD vs. Intel). Czy rozwój bardziej skomplikowanej litografii jest szybszy niż przyjęcie w pełni asynchronicznej logiki? A może logika ansynchroniczna jest zbyt skomplikowana / niepraktyczna dla aplikacji VLSI?
digital-logic
vlsi
synchronous
Corsair64
źródło
źródło
Odpowiedzi:
Spędziłem kilka lat w startupie komercjalizującym technologię projektowania asynchronicznego, więc znam powody:
asynchronizacja nie jest z natury szybsza. Opóźnienie ścieżki najgorszego przypadku pozostaje takie samo. Po prostu czasami możesz skorzystać z szybszego wykonywania ścieżki.
async ma również narzut związany z wykrywaniem zakończenia.
Narzędzia do projektowania. To jest naprawdę duże: tak naprawdę nie ma pełnego asynchronicznego „przepływu” narzędzi dostępnych w tej samej jakości co projektowanie synchroniczne.
Trening. Będziesz musiał skutecznie przekwalifikować wszystkich projektantów na nowy paradygmat i narzędzia.
Ryzyko i konserwatyzm. Tak duża część branży „produkuje coś podobnego do ostatniego, ale nieco innego”. Ma to bardzo dużą szansę na działanie. Firmy znacznie niechętnie budują coś zupełnie innego, ponieważ ma znacznie większą szansę na całkowity odpis kosztujący dziesiątki milionów dolarów.
źródło
Projektowanie asynchronicznych układów scalonych jest bardzo kuszące. Inne odpowiedzi już zawierają wiele powodów, by przemyśleć to dwukrotnie. Oto jeszcze jeden:
Rozwój układu scalonego nie jest zakończony projektem. Weryfikacja i test są równie ważne. Nie tylko narzędzia do projektowania są bardzo zaawansowane dla obwodów synchronicznych, ale to samo dotyczy narzędzi do symulacji i sprzętu testowego.
Weryfikacja
Nie wystarczy, aby obwody działały w warunkach laboratoryjnych. Muszą być solidne w odniesieniu do zakresu napięcia roboczego (V), zakresu temperatury roboczej (T) i zmian wynikających z procesu produkcyjnego (P). W przypadku logiki synchronicznej można to zagwarantować za pomocą statycznej analizy czasowej. Obwód jest podzielony na wszystkie ścieżki czasowe, od flip-flop do flip-flop. Czasy konfiguracji i wstrzymania są sprawdzane dla każdej ścieżki czasu oraz dla różnych kombinacji P, T i V. Te kombinacje PTV są tak zwanymi narożnikami symulacji.
Podobną weryfikację można przeprowadzić dla obwodów asynchronicznych, ale jest to o wiele trudniejsze i znacznie mniej obsługiwane przez narzędzia projektowe. Ogranicza również projektanta do konstrukcji asynchronicznych, które można zweryfikować. Nie ma wiarygodnej weryfikacji dla dowolnych obwodów asynchronicznych.
Test
Podobne trudności występują przy testowaniu sprzętu. Testowanie logiki synchronicznej jest w pełni obsługiwane przez testowanie standardów i sprzętu. Testowanie obwodów asynchronicznych jest nie tylko bardziej skomplikowane, ale z powodu braku abstrakcji czasowej nie wystarczy nawet udowodnić, że obwód będzie działał na wszystkich rogach PTV. Obwód może ulec awarii z powodu warunków wyścigowych przy niektórych kombinacjach PTV, które nie są objęte zakrętami.
streszczenie
Projektanci układów scalonych nie zrezygnowali z paradygmatu asynchronicznego, ale logika asynchroniczna ma poważne wady podczas weryfikacji i walidacji. W kontekście przemysłowym asynchroniczne projektowanie układów scalonych musi być ograniczone do konstrukcji, które można udowodnić do pracy w całym obszarze parametrów zmienności procesu, a także w zakresach roboczych temperatury i napięcia.
Tak zwana „lokalnie synchroniczna globalnie asynchroniczna” konstrukcja jest jednym ze sposobów uzyskania większych korzyści i mniej wad obu paradygmatów czasowych.
źródło
Asynchroniczne liczniki binarne są prostsze, ponieważ używają tylko 1 komórki pamięci lub przerzutnika T na podział przez dwa. Dlatego stare płyty CD oraz 74HC4020 i 4040 oferują tanio wiele stopni binarnych. Opóźnienie podpory na każdym etapie oznacza, że nie można go używać bez warunków wyścigu lub usterki z bramkowaniem dekodowania adresów binarnych, chyba że opóźnienie podpory jest mniejsze niż 1/2 wejściowego cyklu zegarowego przy użyciu zbocznika końcowego do zatrzaśnięcia wyniku. Opóźnienie wyjściowe jest następnie mnożone przez N stopni.
Synchroniczne liczniki binarne używają dodatkowej komórki pamięci do D FF, aby opóźnić, ale minimalizują wartość opóźnienia do 1 dla dowolnej długości liczników, dzięki czemu zajmuje więcej miejsca.
Dlatego wszystkie procesory wykorzystują uzupełniające się zegary, aby zoptymalizować oczekiwane opóźnienie odczytu / zapisu adresu i pamięci, aby zmaksymalizować thruput, ale nie przekraczać czasu opóźnienia prop, konfiguracji i wstrzymania.
Pamięć wykorzystuje teraz wiele faz, takich jak DDR, 3DR, 4DR, 5DR, szczególnie w przypadku pamięci graficznej, ale zegary procesora pracują znacznie szybciej niż szybkość RAM pojedynczego cyklu, dzięki czemu opóźnienia adresów odczytu i zapisu mogą być odmierzane przez jedno lub wiele lub połowę superklock (np. 100 MHz xN) oznaczony ułamkiem T lub liczbami całkowitymi dla każdego parametru. Te opóźnienia prop rosną wraz z temp. Dla CMOS i zmniejszaj przy wyższym napięciu Vram, które, jeśli odpowiednio schłodzone, może zmniejszyć opóźnienie lub inny wzrost Pd i wzrost temperatury i pogorszyć (wolniej). Tak więc chłodzenie, V, f, T mają krytyczne znaczenie dla optymalnego opóźnienia, niezależnie od tego, czy jest używane do operacji asynchronicznych, czy synchronicznych.
źródło
Wczesne projekty logiczne były asynchroniczne. Często były one również mieszane z obwodami analogowymi. Jednak w miarę upływu czasu projekty stały się bardziej skomplikowane, co wymagało większej liczby inżynierów do pracy nad jednym projektem. Diagramy czasowe asynchronizacji. logika może być kłopotliwa, gdy istnieje wiele stanów. Teraz dodaj zespół inżynierów próbujących połączyć różne bloki logiki razem, ale czasy między nimi nie są dobrze dopasowane. Projekty stają się kruche na zmiany w nieprzewidziany sposób.
Wprowadź projekt logiki synchronicznej. Teraz wszystkie przepływy stanu są dostosowane do sygnału zegarowego, który pozwala na bardzo dokładne zdefiniowanie interfejsów i bardziej odporny na zmiany projektowe. Tak, może użyć więcej bram, ale jest (zwykle) stabilny z założenia; w przeciwieństwie do stabilnego, o ile nikt go nie dotyka!
źródło