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 ★★★★★
()
Вы не можете добавлять комментарии в эту тему: топик перемещен в архив.