LINUX.ORG.RU
решено ФорумTalks

Программирование без процессора

 теория вычисления


0

1

Прошу прощения за очередной нубский вопрос, но он мне не дает покоя, засел в моей голове, а простого ответа в гугле не нашел.

Насколько мне известно, первые компьютеры были по-сути релейными схемами. Была ли там какая-либо логическая часть схемы, которую можно условно назвать процессором или его аналогом. Если нет, то почему в совр. компах наличие процессора является необходимостью? Возможно ли программирование без участия какого-либо процессора в принципе? Если да, то как это должно выглядеть? Существуют ли такие компы? Какова основная роль процессора, если простыми словами? Почему он необходим на современных машинах?

Перемещено DoctorSinus из development



Последнее исправление: anonimous (всего исправлений: 1)
Ответ на: комментарий от sin_a

Сложный вопрос. В построении систем, наверное нет. Разве что примитивы, первичный слой, может быть.

anonimous
() автор топика
Ответ на: комментарий от sin_a

Книга имеет довольно серьёзные узкие места, но в целом очень неплоха.

sin_a ★★★★★
()
Ответ на: комментарий от anonimous

Нет, это не про рефал, это научно популярная книга по кибернетике. И там, в частности, как раз идёт речь о фиксированных переходах при развитии.

sin_a ★★★★★
()
Ответ на: комментарий от sin_a

Да, поспешил с ответом, извините. Спасибо, познакомлюсь.

anonimous
() автор топика
Ответ на: комментарий от rezedent12

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

Интересно как раз, где тот порог между одним и другим. Его можно как-то четко обозначить?

anonimous
() автор топика
Ответ на: комментарий от anonimous

Я точно не знаю. Предположу что когда этот механизм начнёт последовательно исполнять команды хранящиеся в памяти. То есть когда его поведение можно будет изменить внеся другую программу в ячейки памяти.

rezedent12 ☆☆☆
()
Ответ на: комментарий от anonimous

Период начиная с Античности, несколько тысяч лет до н.э. Именно, в этот период появляется письменность и начинается накопление знаний.

Для справки

Древнейшие представители вида Homo sapiens появились в результате эволюции 400—250 тыс. лет назад.

Теперь сравните достижения нескольких сотен тысяч лет без письменности,без передачи опыта между поколениями, и достижения последних ~10 тыс. лет, когда люди начали использовать приобретённый ранее, другими людьми опыт.

Jurik_Phys ★★★★★
()
Ответ на: комментарий от anonimous

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

Далек на таком багаже не уедешь.

Jurik_Phys ★★★★★
()
Последнее исправление: Jurik_Phys (всего исправлений: 2)
Ответ на: комментарий от rezedent12

Я с Вами согласен, однако замечу, что данная схема может исполнить данные взятые из памяти. Чтобы соответствовать данной Вами характеристике, ей не хватает только средства извлечения данных.

anonimous
() автор топика
Ответ на: комментарий от anonimous

очень важные гуи

банковские терминалы

Открой для себя удивительный мир High Performance Computing. И пойми, что кроме этих ваших гуев, есть еще огромная куча ВЫЧИСЛИТЕЛЬНЫХ (это если ты не обратил внимание в первый раз) применений. И именно под них и заточены большинство абстракций.

eagleivg ★★★★★
()
Ответ на: комментарий от eagleivg

А то спрашивать, какое отношение суммирование имеет к вычислениям - это абзац.

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

anonimous
() автор топика
Ответ на: комментарий от anonimous

Дело в том, что обработка информации неизбежно цифровая. А это так же неизбежно значит арифметические вычисления.

sin_a ★★★★★
()
Ответ на: комментарий от sin_a

Вот этого я не могу понять - почему она неизбежно цифровая. Переименуем 1 0 в A и B. Что от этого изменится? Это логика. При чем тут цифры в количественном смысле?

anonimous
() автор топика
Ответ на: комментарий от anonimous

Это основы кибернетики. Цифровые сигналы несут меньше информации чем аналоговые, но при этом (или за счёт этого) значительно более избыточны.

http://refal.net/turchin/phenomenon/chapter01.htm#01.05

1.5. Надежность дискретных систем

Почему же, когда необходимо выполнять сложные функции, дискретные системы оказываются предпочтительнее, чем непрерывные? Потому что они отличаются более высокой надежностью. В кибернетическом устройстве, основанном на принципе дискретных состояний, каждая элементарная подсистема может находиться лишь в небольшом числе возможных состояний, поэтому она, как правило, игнорирует малые отклонения от нормы различных физических параметров системы, восстанавливая «в первозданной чистоте» одно из своих допустимых состояний. В то же время в непрерывной системе малые возмущения непрерывно накапливаются и, если система слишком сложна, она перестает правильно работать. Конечно, и в дискретной системе всегда существует возможность сбоя, ибо небольшие изменения физических параметров все-таки приводят к конечной вероятности перехода подсистемы в «неправильное» состояние. И все-таки преимущество, бесспорно, на стороне дискретных систем.

http://refal.net/turchin/phenomenon/images/image01_01.gif

sin_a ★★★★★
()
Последнее исправление: sin_a (всего исправлений: 1)

Я вот не могу понять, вообще, что означают бинарные данные в реализациях компов. Как они связаны с железом. Вот записали мы, допустим 1 в регистр. По идее, это должно означать, что мы «включили выключатель», замкнули какую-то цепь, иначе быть не может. Представляет ли прогер, куда идет эта цепь, что с чем мы соединили?

anonimous
() автор топика

ну по сути процессор это минимизированный донельзя набор реле. утрированно конечно.

saibogo ★★★★
()
Ответ на: комментарий от anonimous

Переименуем 1 0 в A и B. Что от этого изменится?

ничего, A и B - тоже цифры, только иначе обозначенные

Harald ★★★★★
()
Ответ на: комментарий от saibogo

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

anonimous
() автор топика
Ответ на: комментарий от Harald

ничего, A и B - тоже цифры, только иначе обозначенные

А не наоборот случайно?

anonimous
() автор топика

Допустим что концепция с ЦПУ неверна или правильнее говоря уже не отвечает требованиям современности. Очевидно что в этом случае ее надр менять, но тогда нужно подобрать такую схему, которая будет нехуже по возможности изменения программы действий, устойчивости и скорости. Насколько я знаю сами по себе аналоговые схемы часто быстрее цифровых, однако фон Нейман высказал очень хорошую идею, что принцип хранения данных и команд не должны отличаться, они все должны быть представлены в памяти вычислителя одинаково. Аппаратом представления данных еще по-моему до него, а может и он выбрал двоичную логику, так как схемы в этом случае становились надежнее. Все вместе дает существенное преимущество: раз на базе одних и тех же аппаратных компонентов мы можем представлять и данные, и команды их обработки, то уже не нужно под новую программу каждый раз перепиливать аппаратную схему и реализацию машины. В этом смысле довольно наглядна современная циф. обработка сигналов: имея необходимые устройства для АЦП сигнала мы ничего не меняя в самом устройстве ЦОС можем задавать совершенно разные алгоритмы обработки сигналов. Однако если память хранит и данные, и команды вместе, то надо как-то уметь их различать между собой и обрабатывать. Получается что какие-то области памяти мы отдадим под команды, а какие-то под данные. Значит нужен блок. который умеет находить команды в памяти, декодировать их для исполнителя, искать, где операнды команды и т.д. АЛУ же получает от декодировщика команд данные+ команды их обработки уже прготовленные для работы с АЛУ, АЛУ производит с ними манипуляции и отдает обратно. По-моему очень удобная схема, которая избавляет от необходимости городить кучу дополнительных аппаратных компонентов и т.д., унифицирующая само производство ЭВМ. Понятно что АЛУ и компоненты вокруг нее удобно объединить в одну единую сущность и назвать ЦПУ. Если вам удасться найти принципы более эффективные для вычислительных машин чем те, что сейчас базируются на фон Неймане, то и процессор будет иным. Но они как минимум должны сохранить тот же уровень гибкости задания программы исполнителю, надежности, скорости исполнения. Но так-то в принципе процессор же может быть подстроен под задачу, и быть со своим набором команд, аппаратнми элементами и т.д. Более того есть же специализированные процессоры сигнальной обработки и т.д., процессор просто компонент машины, а не священная корова. в машине Тьюринга вобще как такового процессора в современном «бытовом» понимании нет, и ничего в CS ее до сих пор используют.

pylin ★★★★★
()
Ответ на: комментарий от anonimous

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

Высокое напряжение (3-5В) - 1, низкое (0-2В) - 0, общепринятое соглашение такое

Вот записали мы, допустим 1 в регистр.

Это значит, что соответствующий D-триггер (а регистр - это обычно набор D-триггеров) переходит в состояние, в котором у него на выходе логическая единица (высокое напряжение)

Harald ★★★★★
()
Ответ на: комментарий от anonimous

специализация определенных групп элементов позволяет повысить скорость замены отдельного модуля а также дает возможность мыслить более абстрактно при решении задач

saibogo ★★★★
()
Последнее исправление: saibogo (всего исправлений: 1)
Ответ на: комментарий от Harald

в котором у него на выходе логическая единица (высокое напряжение)

Ну, и дальше что? Куда этот сигнал дальше пошел? Его ведь надо с чем то соединить, чтобы этот сигнал инициировал что-то?

anonimous
() автор топика
Ответ на: комментарий от anonimous

А дальше он например пойдет в ОЗУ, или переферии, в чем проблема. Адрес куда посылать ответный сигнал известен

pylin ★★★★★
()
Ответ на: комментарий от anonimous

Что делает процессор такого, чего не могут сделать просто транзисторы соединеные в определенную цепь. Почему бы программирование пе свести просто к соединению цепей. Зачем эти искуственные сложности? А на этой основе уже лепить высокоуровневенщину. Тогда было бы прямое отображение кода в железо.

Процессор - это такой набор транзисторов, который может выполнить любую вычислимую задачу за какое-то время. Это универсальное устройство, в отличие от какого-то другого набора транзисторов, который может выполнять только одну задачу. Чтобы сменить задачу для процессора, нужно поменять программу, чтобы сменить задачу для непроцессора, нужно его перепаять. Угадай, что проще и быстрее?

Почему бы программирование пе свести просто к соединению цепей.

работы над этим ведутся, но вот вопрос - кто будет создавать схему соединения цепей? Это может делать либо человек вручную, либо процессор, подключённый к ПЛИС и выполняющий заданную программу

Harald ★★★★★
()
Ответ на: комментарий от anonimous

Куда этот сигнал дальше пошел?

Это определяется контекстом, то есть смыслом данного сигнала.

Но в сигнале, самом по себе, смысла ровно ноль. Смысл для него существует только внешний, на другом конце которого расположен человек, сделавший и эксплуатирующий данную ЭВМ.

sin_a ★★★★★
()
Ответ на: комментарий от anonimous

а дальше он пошёл на шину данных :)

Его ведь надо с чем то соединить, чтобы этот сигнал инициировал что-то?

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

Harald ★★★★★
()
Ответ на: комментарий от pylin

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

anonimous
() автор топика
Ответ на: комментарий от anonimous

Эм... Так отправляют и полуает все равно через шины и устройства, которые ими управляют, а на уровне программы есть цифровые адреса, которые представляют память и т.д. Память же моделируется для програмиста как набор ячеек, прнумерованный от 0 до N, а как эту нумерацию пеобразовать в обращение к реаьным ячейкам памяти решает аппаратура. Да и как вы собрались без «циферок», ячейки то все равно надо как-то различать между собой, они ж однотипные, там никаких спецметок «это Я!» нет, а с циферками удобно: часто какую-то ячейку принимаешь как базу, а дальше смещение относительно нее и считай.

pylin ★★★★★
()
Последнее исправление: pylin (всего исправлений: 1)
Ответ на: комментарий от pylin

Хреново. Значит программистам отказано в праве быть программистами. Они все равно вынуждены плясать под дядю.

anonimous
() автор топика
Ответ на: комментарий от anonimous

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

pylin ★★★★★
()
Последнее исправление: pylin (всего исправлений: 1)
Ответ на: комментарий от pylin

Ну, тут все зависит от степени свободы, которую вы хотите, кого-то устраивает когда их ограничивают, а я люблю держать все под контролем. А про аналоговые устройства я вообще не говорил. Они тут не пи чем. Я приводил аналог с реле. А реле - это дискретная логика, более дискретная чем транзисторы, ибо полная гальваническая развязка.

anonimous
() автор топика
Ответ на: комментарий от sin_a

Но в сигнале, самом по себе, смысла ровно ноль. Смысл для него существует только внешний

Нет, выходной сигнал одного блока служит входным сигналом другого. Так построена логика электросхем.

anonimous
() автор топика
Ответ на: комментарий от pylin

А как она построена в компьтерах? Я не в курсе, честно говоря. Нужно дополнительное механическое устройство для записи, наверное, например магнитная лента, IO, какой-то. Но о реле шла речь только ради простоты описания. Вообще я говорил об архитектуре.

anonimous
() автор топика
Ответ на: комментарий от pylin

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

anonimous
() автор топика
Последнее исправление: anonimous (всего исправлений: 1)

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

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

Т.е. всё зависит от того, как далеко твоё устройство шагнуло от простого к сложному.

blexey ★★★★★
()
Ответ на: комментарий от anonimous

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

pylin ★★★★★
()
Ответ на: комментарий от pylin

свергателю фон Неймана было бы нелохо среднюю школу закончить, а-то куча вопросов «а почему? а как?» напоминают старый добрый советский мультик про слоника http://www.youtube.com/watch?v=kXwdl-LRnS0 :)

metawishmaster ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.