Аналоговая сигнальная арифметика быстрее, чем цифровая?

Было бы теоретически возможно ускорить современные процессоры, если бы вместо цифровых FPU (CPU -> DAC -> аналоговый FPU -> ADC -> CPU) использовалась арифметика аналоговых сигналов (за счет точности и точности)?

Возможно ли разделение аналогового сигнала (поскольку умножение FPU в любом случае часто занимает один цикл ЦП)?

Это не ответ на ваш вопрос, но вот интересная статья об использовании аналоговых электромеханических компьютеров на военных кораблях arstechnica.com/information-technology/2014/03/…
Время от времени поступали предложения использовать цифровую логику с несколькими состояниями — например, «триггеры» с четырьмя состояниями вместо двух. Это действительно было сделано в некоторых микросхемах памяти, поскольку это уменьшает узкое место в проводке. (Однако я не знаю, используют ли какие-либо производимые в настоящее время чипы логику с несколькими состояниями.)

Ответы (6)

По сути, все схемы аналоговые. Проблема с выполнением расчетов с аналоговыми напряжениями или токами заключается в сочетании шума и искажения. Аналоговые схемы подвержены шуму, и очень сложно сделать аналоговые схемы линейными на огромных порядках. Каждый каскад аналоговой схемы будет добавлять к сигналу шум и/или искажение. Это можно контролировать, но нельзя устранить.

Цифровые схемы (а именно CMOS) в основном обходят всю эту проблему, используя только два уровня для представления информации, при этом каждый этап регенерирует сигнал. Кого волнует, если выход выключен на 10%, он должен быть только выше или ниже порога. Кого волнует, если вывод искажен на 10%, опять же, он должен быть только выше или ниже порога. При каждом сравнении порогов сигнал в основном регенерируется, и возникают проблемы с шумом/нелинейностью и т. д. раздели. Это делается путем усиления и ограничения входного сигнала. КМОП-инвертор — это очень простой усилитель, состоящий из двух транзисторов, работающих в режиме разомкнутого контура в качестве компаратора. Если уровень превышает пороговое значение, вы получаете битовую ошибку. Процессоры обычно рассчитаны на частоту ошибок по битам порядка 10 ^ -20, IIRC. Из-за этого, цифровые схемы невероятно надежны - они могут работать в очень широком диапазоне условий, потому что линейность и шум в основном не являются проблемой. Почти тривиально работать с 64-битными числами в цифровом виде. 64 бита представляют 385 дБ динамического диапазона. Это 19 порядков. Ни за что, черт возьми, вы не сможете приблизиться к этому с аналоговыми схемами. Если ваше разрешение составляет 1 пиковольт (10 ^ -12) (и оно будет мгновенно заглушено тепловым шумом), вам необходимо поддерживать максимальное значение 10 ^ 7. Что составляет 10 мегавольт. В аналоге работать с таким динамическим диапазоном абсолютно невозможно — это просто невозможно. Еще одним важным компромиссом в аналоговой схеме является полоса пропускания/скорость/время отклика и шум/динамический диапазон. Цепи с узкой полосой пропускания усредняют шум и хорошо работают в широком динамическом диапазоне. Компромисс в том, что они медленные. Схемы с широкой полосой пропускания работают быстро, но шум представляет собой более серьезную проблему, поэтому динамический диапазон ограничен. С цифрой вы можете решить проблему, чтобы увеличить динамический диапазон или получить увеличение скорости, делая что-то параллельно, или и то, и другое.

Однако для некоторых операций аналоговые имеют преимущества — быстрее, проще, меньше потребляют энергии и т. д. Цифровые приходится квантовать по уровню и по времени. Аналог непрерывен в обоих. Один из примеров, когда аналоговый сигнал выигрывает, — это радиоприемник на вашей Wi-Fi-карте. Входной сигнал поступает на частоте 2,4 ГГц. Полностью цифровому приемнику потребуется АЦП с частотой не менее 5 гигавыборок в секунду. Это потребовало бы огромного количества энергии. И это не считая обработки после АЦП. Прямо сейчас АЦП с такой скоростью действительно используются только в очень высокопроизводительных системах связи основной полосы частот (например, когерентная оптическая модуляция с высокой скоростью передачи символов) и в тестовом оборудовании. Тем не менее, несколько транзисторов и пассивов можно использовать для преобразования с понижением частоты 2.

Суть в том, что у аналоговых и цифровых вычислений есть свои преимущества и недостатки. Если вы можете мириться с шумом, искажениями, низким динамическим диапазоном и/или низкой точностью, используйте аналоговый сигнал. Если вы не переносите шум или искажения и/или вам нужен широкий динамический диапазон и высокая точность, используйте цифровой формат. Вы всегда можете добавить больше битов в проблему, чтобы получить большую точность. Однако аналогового эквивалента этому нет.

Это заслуживает гораздо большего количества голосов!
Я знал это! Я просто не мог выразить это в хороших словах. Хорошая дополнительная информация о беспроводных приемниках.
Разве память не является проблемой и для аналоговых компьютеров? Я не слышал об аналоговых запоминающих устройствах.
Цепь выборки и удержания? Магнитная лента? Фонографическая запись? Фотопленка? Аналоговые запоминающие устройства, безусловно, существуют, но они имеют несколько иные характеристики, чем цифровые.
10 мегавольт?! Я думаю, он забыл, что у нас есть нечто, называемое операционным усилителем, и его задача — усиливать. Аналоговый может поддерживать любой диапазон, просто масштабируясь.
Любой диапазон, да. Но любой диапазон с любым произвольным разрешением? Не так много.
Усиление @ehsan не увеличивает ваш динамический диапазон, ваше минимальное значение (шумовой порог) усиливается вместе с максимальным.
@Ehsan, вместо этого вы можете уменьшить его до 10 вольт, но тогда вам потребуется точность 0,000001 пиковольта.

В прошлом месяце я присутствовал на выступлении IEEE под названием « Назад в будущее: обработка аналоговых сигналов ». Доклад был организован IEEE Solid State Circuit Society.

Было высказано предположение, что аналоговый МАП (умножающий и накапливающий) может потреблять меньше энергии, чем цифровой. Одна проблема, однако, заключается в том, что аналоговый MAC подвержен аналоговому шуму. Таким образом, если вы представите его дважды с одними и теми же входными данными, результаты не будут точно такими же.

(+1 за аналоговый шум.)
Аналогично, статья об использовании механических компьютеров на боевых кораблях arstechnica.com/information-technology/2014/03/…

То, о чем вы говорите, называется аналоговым компьютером и было довольно широко распространено на заре компьютеров. Примерно к концу 60-х они практически исчезли. Проблема в том, что не только точность намного хуже, чем у цифровых, но и точность тоже. А скорость цифровых вычислений намного выше, чем даже у скромных аналоговых схем.

Аналоговые делители действительно возможны, и Analog Devices производит около 10 различных моделей. На самом деле это умножители, которые вставляются в цепь обратной связи операционного усилителя, образуя делитель, но AD используется для создания специального делителя, оптимизированного для большого (я думаю, 60 дБ) динамического диапазона делителя.

По сути, аналоговые вычисления медленны и неточны по сравнению с цифровыми. Не только это, но и реализация любого конкретного аналогового вычисления требует реконфигурации оборудования. В конце игры были созданы гибридные аналоговые компьютеры, которые могли делать это под управлением программного обеспечения, но они были громоздкими и так и не прижились, за исключением специального использования.

Мне нравится ваш ответ (+1) и вопрос. Но насчет скорости не соглашусь. Аналог достаточно быстрый. Проблема в точности и, пожалуй, самое главное в шуме. Аналог всегда имеет шум. Цифровой звук свободен от шума с точки зрения компьютера.
Спасибо за добрые слова. Но. Аналоговый может быть «много» быстрым, но в целом цифровой быстрее. И шум легко имитировать.
В 70-х я взял часть аналогового компьютера в Boeing Surplus. Одним из компонентов был невероятно тяжелый куб со стороной около 2 футов. У него было, кажется, два или три мотора и множество стальных валов с зажимными муфтами для выбора xy и z. Остальное представляли собой наборы банков Бекмана с десятью оборотами. Это был блок «начальных условий», в котором для всех констант или переменных задавались значения для конкретного прогона, поскольку компьютеры в основном использовались для решения дифференциальных уравнений и создания семейства кривых. Эта часть управлялась цифровым устройством.
Аналог быстрый, если это просто арифметика, exp, sqrt и т.д. Но как только вы добавляете конденсатор или катушку индуктивности, необходимые для дифференцирования и интегрирования, то он медленный. Исторические аналоговые компьютеры часто использовались для решения дифференциальных уравнений — они были «медленными». Но некоторые просто занимались алгеброй. Так что я понимаю, почему разные люди могут иметь разные взгляды на скорость аналоговых вычислений.
Миксер — это просто быстрый множитель.
@DarrenW Можно ли вычислить квадратный корень и экспоненту с помощью аналоговой схемы?
Не могли бы вы объяснить, почему аналог работает медленно? В цифровом компьютере некоторые инструкции «медленные», потому что для их выполнения требуется несколько итераций. Но с аналогом, я считаю, достаточно одного прохода, чтобы получить результат.
Посмотрите на это так. Аналоговая схема имеет фазовую задержку через схему. Таким образом, частота аналоговых сигналов, которые могут быть обработаны схемой, ограничена этим временем задержки. В некоторых схемах это ограничение может препятствовать использованию схемы на частоте более нескольких килогерц. В цифровом компьютере со скоростью современных процессоров можно было бы выполнять математические операции на скорости сотен мегагерц.
@GeorgeHerold Возможно, не только шум, но и изменение процесса может также сделать аналоговые вычисления менее надежными (по чипам, а не по времени). (Аналоговые вычисления были предложены для предсказателя ветвей персептрона, например, Рене Сент-Аман и др., «Маломощное, высокопроизводительное аналоговое предсказание нейронных ветвей», 2008 г.)
@mrpyo - Безусловно, вы можете выполнять обе функции. Если вы возьмете множитель и соедините оба входа вместе, он станет «квадратом». Если вы используете схему, которую Фотон использовал в своем ответе, с обоими входами, привязанными к выходу операционного усилителя, она генерирует квадратные корни. Соотношение напряжение/ток в диоде является экспоненциальным, поэтому вы можете использовать его для создания показателей степени. А поставив диод в цепь обратной связи, вы получите логарифмы. Однако во всех случаях динамический диапазон может быть ограничен смещениями усилителя, дрейфами и т. д. А для диодных схем есть и другие источники ошибок.
Следует отметить, что аналоговые компьютеры по своей природе были способны выполнять интегралы и дифференциалы, причем довольно просто и эффективно, в то время как цифровые компьютеры испытывали с этим трудности (особенно до появления высококачественных реализаций с плавающей запятой). А аналоговые компьютеры часто были медленными, так что операторы могли наблюдать за ними в «реальном времени» — это не было неотъемлемым требованием.

Возможно ли разделение аналогового сигнала (поскольку умножение FPU в любом случае часто занимает один цикл ЦП)?

Если у вас есть аналоговый умножитель, сделать аналоговый делитель «легко»:

схематический

смоделируйте эту схему - схема, созданная с помощью CircuitLab

Предполагая, что X1 и X2 положительны, это решает Y = X1 / X2.

Аналоговые умножители существуют, так что эта схема в принципе возможна. К сожалению, большинство аналоговых умножителей имеют довольно ограниченный диапазон допустимых входных значений.

Другой подход заключается в том, чтобы сначала использовать логарифмические усилители, чтобы получить логарифм X1 и X2, вычесть, а затем возвести в степень.

Было бы теоретически возможно ускорить современные процессоры, если бы вместо цифровых FPU использовалась арифметика аналоговых сигналов (за счет точности) (CPU -> ADC -> аналоговый FPU -> DAC -> CPU)?

По сути, это вопрос технологий — так много было вложено в исследования и разработки для ускорения цифровых операций, что аналоговым технологиям предстоит пройти долгий путь, чтобы наверстать упущенное. Но нельзя сказать, что это абсолютно невозможно.

С другой стороны, я бы не ожидал, что моя грубая схема делителя, показанная выше, будет работать выше, может быть, 10 МГц без очень тщательной работы и, возможно, глубокого исследования, чтобы заставить ее работать быстрее.

Кроме того, вы говорите, что мы должны пренебречь точностью, но схема, которую я нарисовал, вероятно, имеет точность только до 1% или около того без настройки и, вероятно, только до 0,1% без изобретения новой технологии. И динамический диапазон входных данных, которые могут быть полезны для расчета, также ограничен. Таким образом, он не только, вероятно, в 100-1000 раз медленнее, чем доступные цифровые схемы, но и его динамический диапазон, вероятно, примерно в 10 300 раз хуже (по сравнению с 64-битным IEEE с плавающей запятой).

Эй, у меня есть старый множитель AD, который делает 10 МГц. Бьюсь об заклад, я могу получить что-то быстрее сейчас. Просто чтобы бросить гаечный ключ в эту тему, если квантовые вычисления когда-либо сработают, они будут аналоговыми.
@GeorgeHerold, это мой лучший аргумент, почему квантовые вычисления - это змеиное масло.
Очень аккуратный трюк. За исключением того, что я думаю, что вычисляет A(x1)/(1 + A(x2)), что должно быть точным для большого усиления A.
@georgeherold Микшер на самом деле просто быстрый аналоговый умножитель с немного странными входными требованиями, и я думаю, что микроволновые люди получают их до 60 ГГц и более в наши дни.
@mbrig, трудность заключается в операционном усилителе и закрытии контура обратной связи.
  1. Нет, потому что преобразование ЦАП и АЦП занимает гораздо больше времени, чем цифровое деление или умножение.

  2. Аналоговое умножение и деление не так просто, требует больше энергии, и это было бы нерентабельно (по сравнению с цифровыми ИС).

  3. Быстродействующие (диапазон ГГц) аналоговые микросхемы умножения и деления имеют точность около 1%. Это означает, что все, что вы можете разделить на быстром аналоговом делителе, это... 8-битные числа или что-то в этом роде. Цифровые ИС очень быстро справляются с такими числами.

  4. Другая проблема заключается в том, что числа с плавающей запятой охватывают очень большой диапазон — от очень маленьких чисел. Диапазон 16-битных чисел с плавающей запятой 3.4 * 10 34 к 3.4 * 10 34 . Это потребовало бы динамического диапазона 1360 дБ (!!!), если бы я ничего не напутал.

Здесь вы можете посмотреть на аналоговые делители и умножители, предлагаемые Analog Devices ( ссылка )

введите описание изображения здесь

Эти вещи не очень полезны в общих вычислениях. Они намного лучше в аналоговой обработке сигналов.

4. Не совсем так. Числа с плавающей запятой представлены в научной нотации, в основном двумя числами - коэффициентом и показателем степени, оба охватывают более ограниченный диапазон.
@mrpyo Ты уверен? Я думаю, что 16-битный диапазон с плавающей запятой намного выше, чем числа, которые я написал перед редактированием (что-то вроде 0000000000000.1 и 10000000000000).
en.wikipedia.org/wiki/IEEE_floating_point Для C floatэто 23 бита для коэффициента, 8 бит для экспоненты и 1 бит для знака. Вам нужно будет представить эти 3 диапазона в аналоговом виде.
Не могли бы вы уменьшить требуемую частоту, подключив несколько устройств последовательно и используя только одно устройство одновременно?
@mrpyo Я не понимаю, что вы имеете в виду под этим: «Вам нужно будет представить эти 3 диапазона в аналоговом виде».
@mrpyo Вы думаете о параллельной/многопоточной обработке? Это было бы возможно с некоторым мультиплексированием, но все же - 8-битные АЦП по-прежнему примерно в 256 раз медленнее, чем цифровые ИС (когда вы используете транзисторы с аналогичной технологией).
Вот как вы умножаете числа в экспоненциальном представлении: n*10^a + m*10^b = a*m^(a+b)Таким образом, вы можете иметь отдельные аналоговые сигналы для n, a, m, b, которые охватывают гораздо более ограниченный диапазон, и при этом выполнять умножение очень широкого диапазона чисел с плавающей запятой...
Ааа теперь понял. Это интересно, но все же - цифровой способ требует гораздо больше времени, энергии и затрат.
@mrpyo: Аналоговые операции обычно не работают так или не предназначены для такой работы, поэтому числа с плавающей запятой имеют более высокий динамический диапазон. Конечно, как вы заявили, вы МОЖЕТЕ реализовать аналоговые числа с плавающей запятой, но это снова замедлит вычисления.
Истинным аналоговым эквивалентом с плавающей запятой будет логарифмическая область, поэтому абсурдно высокий динамический диапазон (выше, чем мантисса FP) не нужен. В противном случае, хорошие моменты.

На самом деле исследователи сейчас пересматривают методы аналоговых вычислений в контексте СБИС, потому что аналоговые вычисления могут обеспечить гораздо более высокую энергоэффективность, чем цифровые, в конкретных приложениях. См. этот документ:

http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=7313881&tag=1