Компьютеры не фон-Неймановской архитектуры
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [216.73.216.215] |
|
|
Правила раздела Hardware:
Компьютеры не фон-Неймановской архитектуры
|
Сообщ.
#1
,
|
|
|
|
существуют ли такие?
Яндекс выдал нечто невнятное про параллельные вычисления. ![]() Можно ли как-то в двух словах пояснить? Мне еще потом 8-классникам объяснить нужно будет. |
|
Сообщ.
#2
,
|
|
|
|
Можно взять принципы, отбрасывать их по одному, и смотреть что из этого получается.
Проще всего отказаться от принципа хранимой программы. FPGA - пример компютеров такого рода, массово применятся в области обработки сигналов (видео, аудио аппаратура, телевизоры те же). Да и многие высокопроизводительные системы сегодня отказываются от этого принципа (программу то в них можно изменить, но только остановив всю систему и запустив заного), пример - Tesla. |
|
Сообщ.
#3
,
|
|
|
|
Цитата Оззя @ Есть еще гарвардская архитектура - разделение памяти по функциям(память программ, память данных, ...). Но используется она, видимо, только в микроконтроллерах. существуют ли такие? Добавлено Параллельность не противоречит принципам фон Неймана. |
|
Сообщ.
#4
,
|
|
|
|
Цитата trainer @ ... гарвардская архитектура... используется она, видимо, только в микроконтроллерах. В ПК не применяется: 1. сложность технической реализации? 2. нет экономического смысла в ее развитии? |
|
Сообщ.
#5
,
|
|
|
|
В чистом виде нет ни той, ни другой архитектуры. Везде из соображений эффективности или из-за технических проблем отходят от чисто теоретических принципов построения машины.
В любом игровом компьютере сегодня стоит чип GPU, прозводительность которого на некоторых задачах (вроде линейной алгебры) намного превосходит возможности любого центрального процессора. И уж конечно этот чип сделан не по фон-Неймановской архитектуре. Более того, несмотря на то, что и центральный процессор может изменять на ходу свою программу, это обарачивается для него огромними расходами. И даже если он и может можифицировать хранимый код, делать он должен это как можно реже, иначе производительность будет очень низкой. То есть архитектура-то фон-Неймановская, но на практике об этом лучше забыть. |
|
Сообщ.
#6
,
|
|
|
|
Цитата Оззя @ Как раз аппаратная простота и дешевизна реализации у нее - плюс. А минус - неуниверсальность. Скажем, чтобы получить универсальный указатель, который может указывать как на переменную, так и на константу, надо его программно эмулировать и катастрофически терять в производительности. По количеству выпускаемых процессоров гарвардская архитектура если не превосходит, то сопоставима с фон-неймановской - специально не искал данных по выпуску, но микроконтроллеров архитектур MCS-51, AVR, PIC-12/16 и т.д. выпускается очень много. В ПК не применяется: 1. сложность технической реализации? 2. нет экономического смысла в ее развитии? Добавлено Вообще можешь почитать вот тут: http://itblock.ru/category/oks Просмотрел бегло, вроде явных ляпов не заметил. |
|
Сообщ.
#7
,
|
|
|
|
Цитата Оззя @ В ПК не применяется: В персональных компьютерах используется фоннеймановская архитектура и то не в чистом виде. Фоннеймановская архитектура подразумевает единое адресное пространство с равными правами размещения для кода и данных. В Intel x86 архитектуре применяется сегментная организация памяти, сегмент данных (и стека) не может использоваться для исполнения кода (что характерно для гарвардской архитектуры). Процессы в памяти не имеют доступа к адресному пространству других процессов. Сегмент данных может быть скопирован на диск и код программ об этом не узнает, при восстановлении из памяти сегмента данных, он может оказаться в другой физической области оперативной памяти (реализация свопа). Сегмент кода (исполняемой программы) может быть очищен и вновь загружен из исполняемого файла прозрачно для самого кода. Что, собственно нарушает непрерывность и равноправность доступа к памяти фоннеймановской архитектуры. Речь была о пользовательских процессах, системные процессы имеют возможность получить доступ к любой ячейке памяти, и это еще раз подчеркивает отличие х86 архитектуры от фоннеймановской Добавлено В х86 пользовательская программа не может изменить свой собственный код, и это тоже характеристика гарвардской архитектуры |
|
Сообщ.
#8
,
|
|
|
|
Цитата MeG @ В х86 пользовательская программа не может изменить свой собственный код, и это тоже характеристика гарвардской архитектуры Может. Добавлено Цитата MeG @ В Intel x86 архитектуре применяется сегментная организация памяти, сегмент данных (и стека) не может использоваться для исполнения кода (что характерно для гарвардской архитектуры). Может. Это чисто логическое разграничение. Сегменты кода и данных вполне могут занимать одни и те же адреса в адресном пространстве. |
|
Сообщ.
#9
,
|
|
|
|
Цитата cppasm @ Может. Цитата cppasm @ для этого нужно создать процесс в нулевом кольце защиты и изменить дескрипторы сегментов целевого процесса, что явно выходит за рамки пользовательских задач и, собственно, фоннеймановской архитектуры, где все адресное пространство равноправно с позиции данной инструкции кода.Может. Часто и в гарвардской архитектуре реализуют доступ для изменения собственного кода, но не прямого доступа, а через специальные средства. |
|
Сообщ.
#10
,
|
|
|
|
Цитата MeG @ для этого нужно создать процесс в нулевом кольце защиты и изменить дескрипторы сегментов целевого процесса Не нужно это. Программа может менять свой код - этим пользуются всякие jit-компиляторы в математическом софте. (Если тебя волнует проблема реализации, например, под windows, то посмотри на функции VirtualProtect - для её использования вообще никаких дополнительных прав не нужно, а в некоторых других ОС даже это делать не нужно - можно править свой код сразу). Цитата MeG @ Легко может быть использован. Пример - эксплоиты, скажем, от переполнения буфера. сегмент данных (и стека) не может использоваться для исполнения кода (что характерно для гарвардской архитектуры). |
|
Сообщ.
#11
,
|
|
|
|
тема-то о другом
х86 архитектура смесь идей фоннеймановской и гарвардской архитектур и развивалась архитектура х86 с целью ограничить доступ, а не стем как более замысловато получить доступ к памяти Добавлено В фоннеймановской архитектуре доступ ко всей памяти есть всегда, а в архитектуре х86 этот доступ нужно сначала получить Сейчас и в гарвардской архитектуре реализуют способы изменить собственный код |
|
Сообщ.
#12
,
|
|
|
|
Соответственно, вывод такой (мой) - таки всё-таки новизна технических решений отдается в угоду экономической целесообразности?
|
|
Сообщ.
#13
,
|
|
|
|
да. революционная ни с чем не совместимая конструкция дальше экспериментальных образцов не уйдет, если в нее не вкладывать большие деньги.
|
|
Сообщ.
#14
,
|
|
|
|
1. Теговые ЭВМ - нарушают принцип однородности памяти - каждому блоку памяти ставится в соответствии тег, определяющий хранимую в блоке информацию
2. Редукционные и Потоковые ЭВМ - в отличие от традиционного управления командами и последовательного выполнения программ, используют потоки данных или команд для построения дерева выполнения программы. 3. Формально - гарвардская архитектура (в том числе и x86, SPARC) противоречит принципам фон Неймана, хотя x86 и считают фоннеймановскими машинами. Суть в том, что делить L1 кеш на данные и инструкции - нельзя. Первые не прижились, вторые крайне сложны к реализации. |
|
Сообщ.
#15
,
|
|
|
|
Цитата Мяут @ Ну да, а еще шина данных бывает отделена от шины адреса и шины управления. А еще есть кэш микроинструкций. Суть в том, что кэш с точки зрения программы не существует, поэтому как он организован - не имеет значения. На самом деле x86 можно попенять на другое - отдельное пространство ввода-вывода(порты) - хотя это вопрос, является ли это памятью. Ну и, само собой, регистровый файл - сверхбыстродействующая память.Суть в том, что делить L1 кеш на данные и инструкции - нельзя. Добавлено В целом экстремально чистых реализаций не существует, поэтому имеет смысл говорить о базе реализации. В этом смысле x86 - фон-неймановская архитектура. |
|
Сообщ.
#16
,
|
|
|
|
Цитата trainer @ Суть в том, что кэш с точки зрения программы не существует, поэтому как он организован - не имеет значения. Это для тебя, прикладного программиста не имеет значения. А вот для разработчика железяки - имеет и притом огромное Цитата trainer @ В литературе вообще четкого определения фоннеймановской архитектуры нет. Принципы постоянно дополняли и в разных источниках по-разному интерпретируют В этом смысле x86 - фон-неймановская архитектура. |
|
Сообщ.
#17
,
|
|
|
|
Извините за офф
а какие КОНТРОЛЛЕРЫ фонНеймановские бывают? я видел Parallax и слышал про Моторолу HC0... а главное как это выглядит?! флэш и ОЗУ в едином адресном пространстве (или загрузка из флеша в оперативку путём автоматической загрузки загрузчика а потом.... или ..... ) |
|
Сообщ.
#18
,
|
|
|
|
Цитата DINETS @ Видимо имеются в виду микроконтроллеры. Например семейство микроконтроллеров компании Ttxas Instruments -- MSP430, у них единое адресное пространство в котором расположены: flash память, ОЗУ, специальные функциональные регистры и регистры общего назначения (включая указатель команд, указатель стека, регистр состояния процессорного ядра), таким образом все ресурсы доступные в микроконтроллере находятся в едином адресном пространстве. а какие КОНТРОЛЛЕРЫ фонНеймановские бывают? |
|
Сообщ.
#19
,
|
|
|
|
Цитата MeG @ Цитата cppasm @ Может. Цитата cppasm @ для этого нужно создать процесс в нулевом кольце защиты и изменить дескрипторы сегментов целевого процесса, что явно выходит за рамки пользовательских задач и, собственно, фоннеймановской архитектуры, где все адресное пространство равноправно с позиции данной инструкции кода.Может. Это обсуждение свойств ОС, а не архитектуры процессора. Попробуй сделать эксперимент. ![]() Существует также весьма распространённый вариант взлома программы - взлом лоадером. При котором программа-лоадер модифицирует память другого процесса, чтобы загружаемое приложение вело себя "правильно". |
|
Сообщ.
#20
,
|
|
|
|
Цитата MeG @ Цитата DINETS @ Видимо имеются в виду микроконтроллеры. Например семейство микроконтроллеров компании Ttxas Instruments -- MSP430а какие КОНТРОЛЛЕРЫ фонНеймановские бывают? В некоторых случаях перейти от Гарварда к Нейману проще некуда. Например, MCS-51 при работе с внешней памятью достаточно аппаратно заилить (функционально) сигналы чтения из памяти программ и памяти данных. Достаточно одного логического вентиля. Получим новое качество. |
|
Сообщ.
#21
,
|
|
|
|
Цитата Оззя @ Цитата trainer @ ... гарвардская архитектура... используется она, видимо, только в микроконтроллерах. В ПК не применяется: 1. сложность технической реализации? 2. нет экономического смысла в ее развитии? Почему не применяется ? У процессоров серии x86 имеется: 1. адресное пространство в котором присутствуют и коды и данные. (/MEMR,/MEMW) 2. адресное пространство ввода-вывода (только данные). (/IOR,/IOW) 3. и небольшая облась из которой считываются только исполнимые коды.(/INTA) И сделано это (насколько я понимаю) как раз из экономических соображений. |
|
Сообщ.
#22
,
|
|
|
|
В теме высказано много умных мыслей. И я попробую.
Нэйман не в компьютере, нэйман в голове. Людям иногда кажется, что они изобрели что-то новое, а они реализовали старое. Гарвардская архитектура - это техническое решение, а архитектура Нэймана - скорее философская концепция. Поэтому сравнивать не совсем корректно. "Windows XP предотвращает выполнение данных - Прощай, фон Нэйман"(С) Извините, извините. Программы - это числа. Данные - это числа. Против этого не попрёшь. Отвечая на вопрос: телевизор шутка |
|
Сообщ.
#23
,
|
|
|
|
Гарвардская архитектура удобна, когда программа не меняется. Один раз в начале работы загрузили и до выключения или когда вообще программа в ПЗУ. Это контроллеры, сигнальные процессоры и т.п.
В ПК новую программу зачастую грузят каждые несколько секунд. Иногда непосредственно перед загрузкой её откомпилировав. В этом случае выгоднее становится классическая архитектура с общей памятью программ и данных. Вдобавок она допускает динамическую компиляцию - откомпилировал, прямо в памяти программу собрал и тут же запустил. Кстати, фон Нейман в той своей статье описал кучу разных вариантов построения системы, включая и гарвардскую и несколько параллельных. По /INTA процессор считывает из обычной памяти (которая обычно /MEMR,/MEMW) дескриптор процедуры обработки прерываний. Так что в архитектуре x86 только два адресных пространства. |