Я всегда чувствую себя разъединенным между абстрактными машинами (такими как машины Тьюринга) и компьютерными архитектурами (включая архитектуры виртуальных машин, архитектуру фон Неймана). Итак, я хотел бы знать, как они связаны? Как одно влияет на другое? Ссылки также приветствуются. Спасибо.
architecture
Тим
источник
источник
Ответы:
Машины Тьюринга и подобные «машины» являются моделями вычислений , они предназначены для исследования таких проблем, как:
Для этого сама машина должна быть максимально простой. Удобство программиста или неприятные проблемы реализации не имеют значения, поскольку это математические объекты, и только очень немногие программы когда-либо написаны непосредственно для них.
И наоборот, архитектура виртуальных машин и фактическая архитектура машин на основе кремния сосредоточены на выполнении данной программы . Машина сделана более сложной, чем это строго необходимо для решения вышеуказанных задач, и, в свою очередь, требуется меньше (и более очевидных) инструкций, чтобы делать интересные вещи. Не слишком сложно, поскольку они все еще должны быть понятными (и эффективно осуществимыми), но более сложными.
Таким образом, два подхода в корне противоречат друг другу. Помимо того, что оба находятся в области компьютерных наук, они не имеют много общего друг с другом.
источник
Основное отношение заключается в том, что вы можете смоделировать теоретическую конструкцию в физической.
Тот факт, что физический способен на все, что является теоретическим, дает возможность для теоретического тестирования и анализа теоретической машины быть признанным осуществимым в реальном мире.
Проблема остановки является прекрасным примером того, что на машине Тьюринга было показано, что она неразрешима, и, доказав на машине Тьюринга, можно, таким образом, установить ее неразрешимость на реальной машине, которая подчиняется законам машины Тьюринга.
Разница между суммированием и подсчетом и записью на бумаге заключается в том, что доказано, что реальность подсчета соответствует тем же правилам, что и суммирование на листе бумаги. Поэтому, когда вы симулируете физический подсчет вещей, ваши результаты распознаются как применимые к реальному миру - таким образом, вы знаете, сколько будут стоить две моноблоки, мысленно симулируя счет без необходимости подсчитывать физические деньги, чтобы получить результат.
В настоящее время люди разрабатывают анализ и тестируют теоретическую модель, известную как «Квантовая машина Тьюринга», чтобы посмотреть, какие возможности будут доступны с квантовыми вычислительными машинами. Имеет смысл, что люди будут работать с этими моделями, когда физическая версия их модели является чрезмерно дорогой, редкой, а текущие реализации все еще очень отсутствуют. Теоретические модели используются, чтобы показать, что мы можем сделать, когда наши физические реализации улучшатся.
источник
Они связаны примерно так же, как космический челнок связан с воздушным шаром, который вы накачиваете своим дыханием, а затем отпускаете и наблюдаете, как он улетает.
Фундаментальный принцип выталкивания чего-либо в одном направлении для продвижения чего-либо в противоположном направлении существует.
На этом сходство заканчивается.
источник
Я вижу теоретические машины как преодоление разрыва между вычислениями в реальном мире и математикой. Машина Тьюринга достаточно мощна, чтобы имитировать любую реальную архитектуру или язык программирования, достаточно проста, чтобы ее можно было легко симулировать, и, самое главное, достаточно проста, чтобы быть предметом достаточно простых математических рассуждений и доказательств.
источник
Важно знать, что определение вычислений - это не «то, что делают компьютеры». Вычисления предшествуют компьютерам. Компьютерам дали свое имя, потому что они были созданы, чтобы помочь вычислительной задаче, а не потому , что они ее определяют.
Так что машина Тьюринга не о том, как работают компьютеры. Речь идет о том, является ли проблема вычислимой - то есть разрешимой формальным логическим / математическим процессом. В нем ничего не говорится о том, как этот процесс может быть реализован. Если он вычислим, он может быть решен людьми с помощью карандашей и бумаги, если у него достаточно времени, или с помощью компьютеров, или (это важно) с любой системой, которая может быть показана как завершенная по Тьюрингу .
Таким образом, машина Тьюринга делает две очень важные вещи:
Первый момент позволяет нам думать о проблемах, не отвлекаясь на реализацию в реальном мире. Это хорошо, потому что реальное оборудование часто отвлекает людей несущественными деталями (например, «что произойдет, если у нас закончится память или место для хранения?», Поскольку у машин Тьюринга бесконечный ресурс). Для машины Тьюринга может быть разработано доказуемое теоретическое решение, и тогда все, что нужно, - это перевести его во что-то, что будет работать на заданной архитектуре.
Второй момент позволяет нам проверять возможности любой реализации без необходимости запускать множество различных тестов. Если он может моделировать машину Тьюринга, он может делать все, что может делать машина Тьюринга. Так как машины Тьюринга могут вычислить все, что можно вычислить, то же самое можно сделать.
Это означает, что связь между машиной Тьюринга и любой действительно практичной компьютерной архитектурой (даже виртуальной) - это только одно: они могут вычислять.
Архитектура фон Неймана была попыткой создать шаблон дизайна для эффективных электронных цифровых компьютеров общего назначения . Работа Тьюринга предоставила доказательство его обоснованности
источник
Если вы думаете об этом, архитектуры являются абстрактными машинами. Они описывают, как «должен» вести себя кусок тщательно сделанного кремния. Разница между архитектурами и машинами Тьюринга больше зависит от масштаба, чем от фундаментального изменения подхода.
Преимущество машин Тьюринга состоит в том, что существует множество полезных доказательств, которые очень легко сделать с помощью машины Тьюринга. Просто доказать, что любая машина, достаточно мощная, чтобы имитировать машину Тьюринга, может решить любую проблему, которую может сделать машина Тьюринга (да). Однако становится интереснее, когда вы определяете вычислимую функцию . Оказывается, существует множество совместимых определений вычислимой функции. Если вы можете определить все свое поведение как вычислимые функции, вы можете имитироваться на машине Тьюринга.
Допустим, у вас есть архитектура, которая напрямую поддерживает программы в стиле LISP, а другая, например, x86, является более процедурной. Ваш друг утверждает, что «LISP более выразителен, поэтому вы можете писать программы на этом компьютере, которые вы никогда не сможете написать на своем x86». Это жестоко противостоять (тем более что вы, вероятно, недостаточно знаете LISP). Однако вы можете использовать несколько абстрактных машин, таких как машина Тьюринга:
Есть, конечно, много других примеров. Было доказано, что игра Жизни Конвея завершена по Тьюрингу, то есть теоретически она может делать все, что может делать ваш компьютер. Самый простой способ сделать это - создать машину Тьюринга в Life . Я поднимаю это, потому что это был бы случай, когда вы называли абстрактную машину трактовкой буквальной архитектуры! Вы можете себе представить, насколько сложно было бы претендовать на вычислимость в Life без помощи абстрактных моделей (я уверен, что, черт возьми, я не моделирую x64 с полным подсмотром кеша, просто чтобы доказать, что Life вычислима!)
В конце концов, большая разница между архитектурами и абстрактными машинами заключается в том, что архитектуры обычно связаны с производительностью. Архитектура хочет знать, как быстро вы можете что-то сделать. Абстрактные машины, как правило, довольствуются только знанием, если можно. Рассмотрим универсальный конструктор, разработанный для конечных автоматов фон Неймана. Этого было достаточно, чтобы доказать, что UC может работать, не говоря уже о том, что у авторов никогда не было достаточно вычислительной мощности, чтобы на самом деле увидеть это.
Ценовая архитектура, которую платят за демонстрацию того, насколько быстро они могут работать, заключается в том, что зачастую очень сложно доказать, что они могут вычислить все . Для этого архитектуры развернулись и начали использовать абстрактные машины.
источник