Dlaczego stosunkowo prostsze urządzenia, takie jak mikrokontrolery, są znacznie wolniejsze niż procesory?

25

Biorąc pod uwagę tę samą liczbę etapów rurociągu i ten sam węzeł produkcyjny (powiedzmy 65 nm) i to samo napięcie, proste urządzenia powinny działać szybciej niż bardziej skomplikowane. Ponadto połączenie wielu etapów rurociągu w jeden nie powinno spowalniać o czynnik większy niż liczba etapów.

Teraz weź pięcioletni procesor, działający w 14 etapach potoku z częstotliwością 2,8 GHz. Załóżmy, że łączy się etapy; spowolniłoby to poniżej 200 MHz. Teraz zwiększ napięcie i zmniejsz liczbę bitów na słowo; to by przyspieszyło.

Dlatego nie rozumiem, dlaczego wiele obecnie produkowanych mikrokontrolerów, takich jak AVL, działa z ogromną prędkością (np. 20 MHz przy 5 V), mimo że znacznie bardziej skomplikowane procesory wyprodukowane przed laty były w stanie działać 150 razy szybciej lub 10 razy szybciej jeśli zrzucisz wszystkie etapy rurociągu w jeden, przy 1,2 V. Według najbardziej zgrubnych obliczeń z tyłu koperty mikrokontrolery - nawet jeśli zostały wyprodukowane przy użyciu przestarzałej technologii - powinny pracować co najmniej 10 razy szybciej przy jednej czwartej napięcia, którym są zasilane.

Zatem pytanie: jakie są powody niskiej częstotliwości taktowania mikrokontrolera?

Michał
źródło
8
Spora część mikrokontrolerów jest produkowana z przestarzałą technologią bordline, ponieważ fab jest opłacony.
Matt Young
18
Moc. Uwzględnij zużycie energii przez oba procesory i będą one zbliżone do tej samej wydajności / wata, w przeciwnym razie mikro wygra.
Brian Drummond
34
Pomysł, że prostsze == szybsze jest po prostu błędny. Duża złożoność współczesnego procesora cisc idzie w parze z funkcjami, które przyspieszają, np. Wielopoziomowe pamięci podręczne, potoki i przewidywanie rozgałęzień
PlasmaHH 11.04.16
1
ten stary procesor nie działa z małej baterii przez miesiące / lata. zastosował najnowocześniejszą (czytaj: drogą) technologię na swój dzień. na każdą instrukcję nie musiałem czekać na wolny / tani flash. rzadko mcu musi szybko biegać, mogą wziąć trochę nowego verilogu dla dobra programistów i wdrożyć go na dowolnej odlewni. Najbardziej podoba mi się komentarz rower vs samochód Formuły 1, myślę, że to podsumowuje.
old_timer 11.04.16
14
20 MHz wcale nie jest wolne. Jesteśmy po prostu rozpieszczani szybkościami GHz dla komputerów PC, w których większość zasobów jest wykorzystywana do renderowania fantazyjnej grafiki. Możesz polecieć na Księżyc za pomocą procesora Kiloherca ...
vsz 12.04.16

Odpowiedzi:

66

Istnieją inne czynniki, które wpływają na szybkość.

  • Pamięć: rzeczywista wydajność jest często ograniczona przez opóźnienie pamięci. Procesory Intel mają duże pamięci podręczne, aby to nadrobić. Mikrokontrolery zwykle nie. Pamięć flash jest znacznie wolniejsza niż pamięć DRAM.

  • Zużycie energii: często jest to duża sprawa w aplikacjach osadzonych. Rzeczywiste procesory Intel 200 MHz zużywały ponad 10 watów (często znacznie więcej) i wymagały dużego radiatora i wentylatora. Wymaga miejsca i pieniędzy, a nawet nie liczy zewnętrznej logiki i pamięci, która się z tym wiąże. 20 MHz AVR trwa około 0,2 watów, który zawiera wszystko, czego potrzeba. Jest to również związane z procesem - szybsze tranzystory są zazwyczaj nieszczelne.

  • Warunki pracy: Jak zauważa Dmitry w komentarzach, wiele mikrokontrolerów może pracować w szerokim zakresie napięcia i temperatury. Wspomniany wyżej ATMega działa w temperaturach od -40 ° C do 85 ° C i może być przechowywany w dowolnej temperaturze od -65 ° C do 150 ° C. (Inne MCU pracują w temperaturze do 125 ° C lub nawet 155 ° C). Napięcie VCC może wynosić od 2,7 V do 5,5 V (5 V +/- 10% dla szczytowej wydajności). Arkusz danych Core i7 jest trudny do odczytania, ponieważ ograniczają dopuszczalny VCC podczas produkcji, ale tolerancje napięcia i temperatury są z pewnością węższe - ~ 3% tolerancji napięcia i maksymalnej temperatury złącza 105 ° C. (Minimum 5 ° C, ale gdy pobierasz> 100 amperów, minimalne temperatury nie są tak naprawdę problemem).

  • Liczba bramek: Prostsze nie zawsze jest szybsze. Gdyby tak było, Intel nie potrzebowałby żadnych architektów procesorów! To nie tylko rurociąg; potrzebujesz także rzeczy takich jak wysokowydajny FPU. To podnosi cenę. Z tego powodu wiele niższych jednostek MCU ma procesory z liczbą całkowitą.

  • Budżet obszaru matrycy: Mikrokontrolery muszą wpasować wiele funkcji w jedną matrycę, która często obejmuje całą pamięć używaną w aplikacji. (SRAM i niezawodna pamięć flash NOR są dość duże). Procesory komputerowe rozmawiają z pamięcią zewnętrzną i urządzeniami peryferyjnymi.

  • Proces: Te AVR 5 V są wykonane w starożytnym, tanim procesie. Pamiętaj, że zostały zaprojektowane od podstaw, aby były tanie. Intel sprzedaje produkty konsumenckie z wysokimi marżami przy użyciu najlepszej technologii, jaką można kupić za pieniądze. Intel sprzedaje również czystą pamięć CMOS. Procesy MCU muszą wytwarzać wbudowaną pamięć flash, co jest trudniejsze.

Wiele z powyższych czynników jest powiązanych.

Możesz dziś kupić mikrokontrolery o częstotliwości 200 MHz ( oto przykład ). Oczywiście kosztują dziesięć razy więcej niż te ATMegas 20 MHz ...

Krótka wersja jest taka, że ​​prędkość jest bardziej skomplikowana niż prostota, a tanie produkty są zoptymalizowane pod kątem taniości, a nie prędkości.

Adam Haun
źródło
11
Nie zapominaj o solidności: typowy procesor ulegnie awarii, jeśli napięcie zasilania zmieni się o więcej niż 5%, podczas gdy ATMega działa z dowolnego zakresu 1,8–5,5 V przy częstotliwości 4 MHz.
Dmitrij Grigoryev,
1
@DmitryGrigoryev Dobra uwaga! Zaktualizowałem swoją odpowiedź.
Adam Haun,
25

Główną techniczną przyczyną niskich prędkości jest to, że tanie / małe MCU używają tylko pamięci flash na chipie do przechowywania programów (tj. Nie działają z pamięci RAM).

Małe mikrokontrolery na ogół nie buforują pamięci programu, dlatego zawsze muszą czytać instrukcję z pamięci flash przed jej wykonaniem, w każdym cyklu. Daje to deterministyczną wydajność i # cykli / operacji, jest po prostu tańsze / prostsze i pozwala uniknąć problemów podobnych do komputera, w których kod i dane są mieszane, tworząc nowy zestaw zagrożeń związanych z przepełnieniem bufora itp.

Opóźnienie odczytu z pamięci flash (rzędu 50-100ns) jest znacznie wolniejsze niż odczytu z SRAM lub DRAM (rzędu 10ns lub mniej), i to opóźnienie należy ponieść w każdym cyklu, ograniczając szybkość zegara część.

kompumować
źródło
4
Również moc (a zatem i ciepło) rośnie bardziej niż liniowo wraz z częstotliwością.
Kimberly W
1
Nie sądzę, że czytanie z pamięci flash jest w pobliżu 100 ns, prawda? IIRC jest o dwa rzędy wielkości większe. Jednakże, jeśli kontroler błysku zawiera niewielką pamięć DRAM, a kod nie jest zbyt rozłożysta, stopa hit cache może być bardzo wysoki (90% +), więc średnia opóźnienie może być dużo niższa.
MSalters
2
Ten arkusz danych AT91SAM7S, który otworzyłem, mówi o wewnętrznej pamięci flash „Szybki czas dostępu, dostęp jednocyklowy 30 MHz w najgorszych przypadkach”. To 33ns. I ma jeden dwór bufora pobierania wstępnego. Flash poza matrycą może rzeczywiście mieć większe opóźnienia.
pjc50 13.04.16
1
@Jamil Nie pamiętam dokładnej formuły, ale uważam, że była to kwadratowa częstotliwość.
Jan Dorniak
22

Dlaczego ludzie jeżdżą na rowerze lub małym motocyklu, skoro masz samochód Formuły 1? Czy na pewno lepiej jest jechać, powiedzmy 300 km / hi dostać się wszędzie?

Krótko mówiąc, nie trzeba być szybszym niż oni. To znaczy, pewnie jest trochę i szybsze mikrokontrolery umożliwiają pewne rzeczy, ale co zamierzasz zrobić, powiedzmy, że automat jest w ciągłym użyciu przez około 1 godzinę dziennie? Co zamierzasz zrobić w powiedzmy pilocie do telewizora?

Z drugiej strony mają inne ważne funkcje, takie jak niskie zużycie energii, są DUŻO prostsze w programowaniu i tak dalej. Zasadniczo nie są procesorami i robią różne rzeczy.

AndrejaKo
źródło
12
@Michael Skąd pomysł prosty = szybki?
Matt Young
3
@Michael Rower jest znacznie prostszy niż samochód, ale nadal jest wolniejszy. W każdym razie Matt ma rację. Coś prostego nie jest automatycznie szybkie. To znaczy, że coś szybkiego będzie skomplikowane, właśnie ze względu na względy potrzebne do wyższych częstotliwości.
AndrejaKo 11.04.16
2
Wydajne procesory CISC wydają znacznie więcej instrukcji niż proste procesory wbudowane. Wykonują dużo więcej pracy równolegle, więc są bardziej złożone i szybsze.
Kimberly W
2
@Michael 1 USD może być luksusowo drogi w przypadku niektórych aplikacji, czytałem, że mikrokontrolery w kartach micro SD kosztują około 19 centów
Xen2050 12.04.16
2
@Michael ”to cała idea architektur RISC: proste zadania można wykonywać szybciej niż skomplikowane” Nie! Nowoczesne architektury RISC są niezwykle złożone, ponieważ muszą wprowadzać więcej instrukcji (takich jak SIMD) i obsługiwać więcej funkcji, takich jak superskalar, hiperwątkowość, wykonywanie poza kolejnością ... Ich złożoność może łatwo przekroczyć architektury CISC. MIPS ma obecnie setki lub tysiące instrukcji. „CISC przeciwko RISC jest w dużej mierze historyczną debatą”
phuclv,
13

Istnieje wiele kontrolerów ARM, które działają na setkach MHz lub więcej. Kto potrzebuje PIC 500 MHz i jest gotów zapłacić za część, aby uzasadnić maski za milion dolarów za proces zbliżony do najnowocześniejszego?

Popularny ATmega328 jest podobno wykonany w technologii 350 nm, co jest nieco w tyle za najnowszymi procesorami Intel (14 nm dla Skylake ).

Nawet niedrogie 8-bitowe kontrolery powoli zwiększają prędkość i można uzyskać kontrolery PIC 32 i 64 MHz (na przykład PIC18F14K22), które nadal działają przy napięciu 5 V (ten ostatni stanowi czynnik uwzględniający całkowity koszt systemu).

Jedną z kwestii jest to, że kontrolery te mają architekturę zoptymalizowaną pod kątem małych przestrzeni pamięci i niskiej prędkości zegara. Gdy zaczniesz osiągać wysoką prędkość zegara, musisz ponownie korzystać z preskalerów itp.

Pod koniec lat 90. podjęto próbę wyprodukowania bardzo szybkich sterowników typu PIC, z pomysłem, że oprogramowanie układowe może zastąpić urządzenia peryferyjne, jeśli mikrokontroler jest wystarczająco szybki. Na przykład, możesz bit-bang UART. Nie sądzę, żeby odniosły one tak duży sukces komercyjny - Scenix-> Ubicom-> Qualcomm (koniec gry).

Spehro Pefhany
źródło
350 nm? To by to wyjaśniało. Nie wiedziałem, że ktoś wyprodukowałby coś przy użyciu 20-letniej technologii.
Michael
3
Niektórzy z nas wciąż projektują (nie tylko) CMOS z serii 4000, co przypomina 3000nm.
Spehro Pefhany
6
Starsze procesy są również potencjalnie przydatne dla osób zajmujących się środowiskiem radiacyjnym lub systemami o wysokiej niezawodności, które wymagają śledzenia.
Krunal Desai,
5
Gra się nie kończy - śmigło Parallax jest kontynuacją tej koncepcji.
Dave Tweed
3
@Michael: To nie tylko wiek technologii. Rozmiar ma również znaczenie. Większy rozmiar procesu ma niższe wskaźniki defektów, co oznacza mniej odrzutów, a tym samym wyższą wydajność - co prowadzi do niższych kosztów na chip. Jeśli chcesz zapłacić 100 USD za procesor (np. Komputery stacjonarne), uzasadniony jest wyższy koszt spowodowany niższą wydajnością. Jeśli chcesz zapłacić tylko 50 centów, nie jest to uzasadnione.
slebetman 12.04.16
3

Wyobraź sobie, że chcesz produkować samochody. Jednym z podejść byłoby sekwencyjne wykorzystywanie szeregu urządzeń w fabryce, budując jednocześnie jeden samochód. Podejście to można wykonać przy użyciu niewielkiej ilości średnio skomplikowanego sprzętu, tak wielu elementów wyposażenia można użyć do wykonania więcej niż jednego kroku. Z drugiej strony większość sprzętu w fabryce przez większość czasu nadal pozostawała bezczynna.

Innym podejściem jest skonfigurowanie linii montażowej, tak aby jak tylko sprzęt, który obsługiwał pierwszy etap produkcji, zakończył operację na pierwszym samochodzie, mógł następnie rozpocząć odpowiednią operację na następnym samochodzie. Próba ponownego wykorzystania jednego urządzenia na wielu etapach procesu produkcyjnego byłaby skomplikowana, dlatego w większości przypadków lepiej byłoby użyć większej liczby urządzeń, z których każdy jest zoptymalizowany do wykonania jednego bardzo konkretnego zadania (np. Jeśli konieczne jest wywiercenie 50 otwory o 10 różnych rozmiarach, wówczas minimalna konfiguracja wyposażenia obejmowałaby jedno wiertło z 10 bitami i mechanizm szybkiej wymiany, ale linia montażowa mogłaby mieć 50 wierteł z jednym na stałe zainstalowanym bitem i bez potrzeby szybkiej wymiany) .

W przypadku takich procesorów, jak procesory DSP lub GPU, możliwe jest stosunkowo tanie osiągnięcie bardzo wysokich prędkości, ponieważ charakter wykonywanej pracy jest bardzo spójny. Niestety wiele procesorów musi być w stanie obsłużyć dowolne błędy instrukcji o różnym stopniu złożoności. Wykonanie tego skutecznie jest możliwe, ale wymaga bardzo złożonej logiki planowania. W wielu współczesnych procesorach logika niezbędna do „wykonywania pracy” nie jest zbyt skomplikowana ani droga, ale logika konieczna do koordynowania wszystkiego innego jest.

supercat
źródło
2
Przepraszam, jeśli to przeoczyłem, ale jakie to ma znaczenie dla procesorów w porównaniu do „wolniejszych” mikrokontrolerów? Wydaje się, że koncentruje się tylko na procesorach vs (zwykle jeszcze szybszych) procesorach specjalistycznych.
underscore_d
1
@underscore_d: Pierwszy akapit dotyczy prostszych mikrokontrolerów - są jak mały sklep, w którym buduje się jeden samochód na raz. W drugim akapicie zaznaczono, że istnieją tanie kontrolery, które mogą bardzo szybko wykonywać wiele operacji, ale ich operacje są ograniczone. Trudno jest wykonać dowolną kombinację operacji, nakładając je w znacznym (ale bardzo zmiennym) stopniu. Jeśli ktoś ma podsystem, który w każdym cyklu może zaakceptować dwie liczby i wyświetli iloczyn dwóch liczb, które zostały przesłane cztery cykle temu, i ...
supercat 13.04.16
1
... inna, która przyjmie w każdym cyklu dwie liczby i wyświetli sumę tych, które zostały przesłane dwa cykle temu, próbując dowiedzieć się, kiedy należy podać wartości, kiedy będą dostępne wyniki, kiedy należy załadować i zapisać rejestrów itp. może się bardzo skomplikować, szczególnie jeśli chce się uniknąć wypełnienia wszystkich rurociągów, aby dopasować je do najdłuższego.
supercat
Dzięki; to wyjaśnia. Tak, ma sens to, że szybkie procesory ogólnego przeznaczenia ponoszą większość swoich kosztów, zarówno finansowych, jak i energetycznych, na „rusztowanie” - potokowanie, pamięć podręczna, planowanie, kontrola pamięci RAM itp. Rzeczy, które są nie tylko zbyt kosztowne, ale również często nie są wymagane dla micros. Podobnie, nigdy nie przestaje mnie zadziwiać, co można zrobić przy stosunkowo niewielkiej częstotliwości taktowania w procesorze specjalnie dostosowanym do jednej aplikacji. Fascynujące rzeczy po obu stronach!
podkreślenie_d
@underscore_d: Architektura MIPS została zaprojektowana przy założeniu, że kompilatory będą odpowiedzialne za niektóre problemy z planowaniem, umożliwiając w ten sposób uproszczenie sprzętu. Myślę, że koncepcja nigdy tak naprawdę się nie przyjęła, ponieważ nowsze procesory często wymagają więcej etapów potoku niż starsze, ale kod napisany dla procesora z krótszymi potokami nie będzie działał na procesorze z dłuższymi przy braku blokad sprzętowych.
supercat