Czy arytmetyka sygnału analogowego jest szybsza niż cyfrowa?


37

Czy teoretycznie byłoby możliwe przyspieszenie współczesnych procesorów, gdyby zastosować arytmetykę sygnałów analogowych (kosztem dokładności i precyzji) zamiast cyfrowych FPU (CPU -> DAC -> analogowe FPU -> ADC -> CPU)?

Czy możliwy jest analogowy podział sygnału (ponieważ mnożenie FPU i tak często zajmuje jeden cykl CPU)?


To nie odpowiada na pytanie, ale tutaj jest ciekawy artykuł na temat wykorzystania analogowych komputerów elektromechanicznych w okrętach wojennych arstechnica.com/information-technology/2014/03/…
Doombot

Od czasu do czasu pojawiały się propozycje zastosowania wielostanowej logiki cyfrowej - np. „Flip-flops” z czterema stanami zamiast dwoma. Dokonano tego w niektórych procesorach pamięci produkcyjnej, ponieważ zmniejsza ono wąskie gardło w okablowaniu. (Nie wiem jednak, czy obecnie produkowane układy wykorzystują logikę wielostanową.)
Hot Licks,

Odpowiedzi:


45

Zasadniczo wszystkie obwody są analogowe. Problem z wykonywaniem obliczeń przy napięciach lub prądach analogowych polega na kombinacji szumu i zniekształceń. Obwody analogowe podlegają zakłóceniom i bardzo trudno jest uczynić obwody analogowe liniowymi na ogromnych rzędach wielkości. Każdy stopień obwodu analogowego doda sygnał i zakłócenia. Można to kontrolować, ale nie można go wyeliminować.

Obwody cyfrowe (a mianowicie CMOS) w zasadzie pomijają cały ten problem, wykorzystując tylko dwa poziomy do reprezentowania informacji, a każdy etap regeneruje sygnał. Kogo to obchodzi, jeśli wyjście jest wyłączone o 10%, musi ono być tylko powyżej lub poniżej progu. Kogo to obchodzi, jeśli wynik jest zniekształcony o 10%, ponownie musi on być tylko powyżej lub poniżej progu. Przy każdym porównaniu progu sygnał jest w zasadzie regenerowany, a problemy z szumem / nieliniowością / itp. pozbawiony. Odbywa się to poprzez wzmacnianie i obcinanie sygnału wejściowego - falownik CMOS jest po prostu bardzo prostym wzmacniaczem zbudowanym z dwóch tranzystorów, obsługiwanych jako komparator w otwartej pętli. Jeśli poziom zostanie przekroczony powyżej progu, pojawi się nieco błąd. Procesory są generalnie zaprojektowane tak, aby miały bitowe stopy błędów rzędu 10 ^ -20, IIRC. Z tego powodu, obwody cyfrowe są niewiarygodnie solidne - są w stanie działać w bardzo szerokim zakresie warunków, ponieważ liniowość i szum są w zasadzie bezproblemowe. Cyfrowa obsługa 64-bitowych liczb jest prawie banalna. 64 bity reprezentują 385 dB zakresu dynamicznego. To 19 rzędów wielkości. W piekle nie ma mowy, żebyś zbliżył się do tego z obwodami analogowymi. Jeśli twoja rozdzielczość to 1 pikowolt (10 ^ -12) (i będzie to w zasadzie natychmiast tłumione przez szum termiczny), musisz wesprzeć maksymalną wartość 10 ^ 7. To jest 10 megawoltów. Nie ma absolutnie żadnego sposobu działania w analogowym zakresie dynamicznym - to po prostu niemożliwe. Innym ważnym kompromisem w obwodach analogowych jest szerokość pasma / prędkość / czas reakcji i szum / zakres dynamiczny. Wąskie obwody przepustowości uśrednią szum i będą działać dobrze w szerokim zakresie dynamicznym. Kompromis polega na tym, że są one powolne. Obwody o szerokim paśmie są szybkie, ale szum jest większym problemem, więc zakres dynamiczny jest ograniczony. Dzięki technologii cyfrowej możesz rzucić bity na problem, aby zwiększyć zakres dynamiczny lub uzyskać wzrost prędkości, wykonując czynności równolegle lub jedno i drugie.

Jednak w przypadku niektórych operacji analog ma zalety - szybsze, prostsze, niższe zużycie energii itp. Cyfrowe muszą być kwantyzowane poziomowo i czasowo. Analog jest ciągły w obu. Jednym z przykładów wygranych analogów jest odbiornik radiowy na karcie Wi-Fi. Sygnał wejściowy ma częstotliwość 2,4 GHz. W pełni cyfrowy odbiornik wymagałby ADC pracującego z prędkością co najmniej 5 gigasampling na sekundę. Zużyłoby to ogromną ilość mocy. I to nawet nie uwzględnia przetwarzania po ADC. W tej chwili przetworniki ADC tej prędkości są używane tylko w bardzo wydajnych systemach łączności z pasmem podstawowym (np. Koherentną modulacją optyczną o wysokiej szybkości transmisji symboli) oraz w sprzęcie testowym. Jednak garść tranzystorów i pasywnych może być użyta do konwersji 2 w dół.

Najważniejsze jest to, że istnieją zalety i wady obliczeń analogowych i cyfrowych. Jeśli możesz tolerować szum, zniekształcenie, niski zakres dynamiki i / lub niską precyzję, użyj analogu. Jeśli nie tolerujesz szumów lub zniekształceń i / lub potrzebujesz wysokiego zakresu dynamiki i wysokiej precyzji, użyj cyfrowego. Zawsze możesz rzucić więcej bitów na problem, aby uzyskać większą precyzję. Jednak nie ma analogicznego odpowiednika tego.


Zasługuje to na znacznie więcej głosów!
John U

Wiedziałem! Po prostu nie mogłem tego wyrazić dobrymi słowami. Ładne dodatkowe informacje na temat odbiorników bezprzewodowych.
Smithers,

2
Próbka i obwód wstrzymany? Taśma magnetyczna? Zapis fonograficzny? Film fotograficzny? Analogowe urządzenia pamięci na pewno istnieją, ale mają nieco inne cechy niż cyfrowe.
alex.forencich,

1
Dowolny zakres, tak. Ale jakikolwiek zakres z dowolną rozdzielczością? Nie tak bardzo.
alex.forencich

1
Wzmocnienie @ehsan nie zwiększa twojego zakresu dynamicznego, twoja minimalna wartość (poziom szumu) zostaje wzmocniona wraz z maksimum.
mbrig

20

W zeszłym miesiącu uczestniczyłem w wykładzie IEEE zatytułowanym „ Powrót do przyszłości: analogowe przetwarzanie sygnałów ”. Rozmowę zorganizowało IEEE Solid State Circuit Society.

Zaproponowano, że analogowy MAC (zwielokrotnij i akumuluj) może zużywać mniej energii niż cyfrowy. Jedną kwestią jest jednak to, że analogowy MAC podlega szumowi analogowemu. Jeśli więc zaprezentujesz go z tymi samymi danymi wejściowymi dwa razy, wyniki nie będą dokładnie takie same.


1
(+1 za szum analogowy.)
George Herold

Podobnie, artykuł na temat korzystania z komputerów mechanicznych na okrętach wojennych arstechnica.com/information-technology/2014/03/…
Doombot

18

To, o czym mówisz, nazywa się komputerem analogowym i było dość rozpowszechnione we wczesnych latach komputerów. Pod koniec lat 60. zniknęli. Problem polega na tym, że nie tylko precyzja jest znacznie gorsza niż w przypadku technologii cyfrowej, ale także dokładność. A szybkość obliczeń cyfrowych jest znacznie szybsza niż nawet skromne obwody analogowe.

Analogowe dzielniki są rzeczywiście możliwe, a Analog Devices tworzy około 10 różnych modeli. W rzeczywistości są to mnożniki, które są wstawiane do ścieżki sprzężenia zwrotnego wzmacniacza operacyjnego, tworząc dzielnik, ale AD służyło do tworzenia dedykowanego dzielnika zoptymalizowanego pod kątem dużego (60 dB, jak sądzę) zakresu dynamicznego dzielnika.

Zasadniczo obliczenia analogowe są powolne i niedokładne w porównaniu z cyfrowymi. Co więcej, realizacja dowolnego obliczenia analogowego wymaga rekonfiguracji sprzętu. Pod koniec gry wyprodukowano hybrydowe komputery analogowe, które mogły to zrobić pod kontrolą oprogramowania, ale były nieporęczne i nigdy nie zostały przyłapane, z wyjątkiem specjalnych zastosowań.


6
Podoba mi się twoja odpowiedź (+1) i pytanie. Ale nie zgodzę się co do szybkości. Analog jest dość szybki. Problemem jest precyzja, a może przede wszystkim hałas. Analog zawsze ma trochę szumu. Cyfrowe są wolne od szumów, pod względem komputerowym.
George Herold,

Dzięki za miłe słowa. Ale. Analog może być „dużo” szybki, ale ogólnie cyfrowy jest szybszy. Hałas można łatwo zasymulować.
WhatRoughBeast

4
Analog jest szybki, jeśli jest tylko arytmetyką, exp, sqrt itp. Ale jak tylko dodasz kondensator lub cewkę potrzebną do różnicowania i integracji, to jest powolny. Analogowe komputery historii były często używane do rozwiązywania równań różniczkowych - były „powolne”. Ale niektórzy właśnie zrobili algebrę. Widzę więc, dlaczego różni ludzie mogą mieć różne poglądy na temat prędkości obliczeń analogowych.
DarenW,

1
Czy możesz wyjaśnić, dlaczego analog jest wolny? W komputerze cyfrowym niektóre instrukcje są „powolne”, ponieważ wymagają kilku powtórzeń do wykonania. Ale z analogiem uważam, że potrzeba tylko jednego przejścia, aby uzyskać wynik.
mrpyo

1
@mrpyo - Oczywiście, możesz wykonywać obie funkcje. Jeśli weźmiesz mnożnik i połączysz oba wejścia razem, staje się on „kwadratowy”. Jeśli użyjesz obwodu The Photon użyty w jego odpowiedzi z dwoma wejściami powiązanymi z wyjściem wzmacniacza operacyjnego, generuje pierwiastki kwadratowe. Zależność napięcie / prąd w diodzie jest wykładnicza, więc można jej użyć do wygenerowania wykładników. A umieszczając diodę na ścieżce sprzężenia zwrotnego otrzymujesz logarytmy. Jednak we wszystkich przypadkach zakres dynamiki może być ograniczony przesunięciami wzmacniacza, dryftami itp. A w przypadku obwodów diodowych istnieją również inne źródła błędów.
WhatRoughBeast

11

Czy możliwy jest analogowy podział sygnału (ponieważ mnożenie FPU i tak często zajmuje jeden cykl CPU)?

Jeśli masz multiplikator analogowy, dzielnik analogowy jest „łatwy” do wykonania:

schematyczny

symulacja tego obwodu - Schemat utworzony za pomocą CircuitLab

Zakładając, że X1 i X2 są dodatnie, to rozwiązuje Y = X1 / X2.

Istnieją multiplikatory analogowe, więc ten obwód jest w zasadzie możliwy. Niestety większość multiplikatorów analogowych ma dość ograniczony zakres dozwolonych wartości wejściowych.

Innym podejściem byłoby użycie najpierw wzmacniaczy logarytmicznych, aby uzyskać logarytm X1 i X2, odjąć, a następnie potęgować.

Czy teoretycznie byłoby możliwe przyspieszenie współczesnych procesorów, gdyby zamiast arytmetyki sygnałów analogowych (kosztem precyzji) zastosować cyfrowe układy FPU (CPU -> ADC -> analogowe FPU -> DAC -> CPU)?

Zasadniczo chodzi o technologię - tyle zainwestowano w badania i rozwój, aby przyspieszyć operacje cyfrowe, że technologia analogowa miałaby przed sobą długą drogę do nadrobienia. Ale nie można powiedzieć, że jest to absolutnie niemożliwe.

Z drugiej strony nie spodziewałbym się, że mój pierwotny obwód dzielnika powyżej będzie działał powyżej może 10 MHz bez konieczności wykonywania bardzo starannej pracy i być może głębokich badań nurkowania, aby przyspieszyć.

Mówisz też, że powinniśmy zaniedbać precyzję, ale obwód taki jak narysowałem jest prawdopodobnie dokładny tylko do około 1% bez strojenia i prawdopodobnie tylko do 0,1% bez wymyślania nowej technologii. Zakres dynamiki danych wejściowych, na których można z łatwością obliczyć, jest podobnie ograniczony. Jest więc nie tylko prawdopodobnie 100 do 1000 razy wolniejszy niż dostępne układy cyfrowe, ale jego zakres dynamiczny jest prawdopodobnie około 10 300 razy gorszy (w porównaniu do 64-bitowej liczby zmiennoprzecinkowej IEEE).


5
Hej, mam stary multiplikator AD, który robi 10 MHz. Założę się, że mogę teraz dostać coś szybciej. Wystarczy rzucić klucz małpi w ten temat, jeśli obliczenia kwantowe kiedykolwiek się rozłożą, będzie to analogiczne.
George Herold,

@GeorgeHerold, to mój najlepszy argument, dlaczego obliczenia kwantowe są olejem węża.
The Photon

Bardzo zgrabna sztuczka. Tyle że myślę, że oblicza A (x1) / (1 + A (x2)), co powinno być dokładne dla dużego wzmocnienia A.
Yale Zhang

@georgeherold Mikser to tak naprawdę szybki multiplikator analogowy z nieco dziwnymi wymaganiami wejściowymi, i myślę, że ludzie mikrofalówek dostają te do 60 GHz lub więcej w tych dniach
mbrig

@mbrig, trudność polega na wzmacniaczu operacyjnym i utrzymaniu zamkniętej pętli sprzężenia zwrotnego.
Photon

7
  1. Nie, ponieważ konwersja DAC i ADC zajmuje znacznie więcej czasu niż dzielenie lub mnożenie cyfrowe.

  2. Analogowe mnożenie i dzielenie nie jest takie proste, zużywa więcej energii i nie byłoby opłacalne (w porównaniu do cyfrowego układu scalonego).

  3. Szybkie układy zwielokrotniania i dzielenia analogowego (zakres GHz) mają dokładność około 1%. Oznacza to, że wszystko, co możesz podzielić na szybki dzielnik analogowy, to ... liczby 8-bitowe lub coś w tym rodzaju. Cyfrowe układy scalone bardzo szybko radzą sobie z takimi liczbami.

  4. 3.410-343.41034

Tutaj możesz obejrzeć dzielniki i mnożniki analogowe oferowane przez urządzenia analogowe ( link )

wprowadź opis zdjęcia tutaj

Te rzeczy nie są zbyt przydatne w komputerach. Są znacznie lepsze w przetwarzaniu sygnału analogowego.


4. Niezupełnie. Liczby zmiennoprzecinkowe są reprezentowane w notacji naukowej, w zasadzie dwie liczby - zarówno współczynnik, jak i wykładnik, obejmują bardziej ograniczony zakres.
mrpyo,

@mrpyo Czy jesteś pewien? Myślę, że 16-bitowy zakres zmiennoprzecinkowy jest znacznie wyższy niż liczby, które napisałem przed edycją (coś takiego jak 0000000000000.1 i 10000000000000).
Kamil

en.wikipedia.org/wiki/IEEE_floating_point Dla C floatto 23 bity dla współczynnika, 8 bitów dla wykładnika wykładniczego i 1 bit dla znaku. Te trzy zakresy musiałyby być reprezentowane analogowo.
mrpyo,

Czy nie możesz zmniejszyć wymaganej częstotliwości, mając wiele jednostek w szeregu i używając tylko jednej jednocześnie?
mrpyo,

4
Prawdziwym analogowym odpowiednikiem zmiennoprzecinkowym byłaby domena logarytmiczna, dlatego absurdalnie wysoki zakres dynamiczny (wyższy niż mantysa FP) nie jest konieczny. W przeciwnym razie dobre punkty.
Brian Drummond,

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.