Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.89/18: Рейтинг темы: голосов - 18, средняя оценка - 4.89
3 / 3 / 1
Регистрация: 11.12.2012
Сообщений: 41
1

Архитектура Фон Неймана: Как процессор различает команды и данные?

04.09.2014, 23:30. Просмотров 3512. Ответов 17
Метки нет (Все метки)

Недавно читал статью про архитектуру вот наткнулся на такую строчку "В памяти компьютера как данные так и команды хранятся одинаково виде разрядов" тогда вопрос как процессор определяет команду от данных если они записаны одинаково ?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.09.2014, 23:30
Ответы с готовыми решениями:

алгоритм фон Неймана
блин... помогите пожалуйста... надо упорядочить массив по неубыванию с помощью алгоритма...

Простая модель ЭВМ фон Неймана
задача с классами (ввод данных, операции над ними) Программа должна содержать 2-3 метода в 2-3...

Архитектура и машина Фон-Неймана
Структура машины фон - нейма и принципы фон - нейма

Как усовершенствовать архитектуру фон-неймана?
Ребят, нужна помощь. Вообщем поступило такое задание. "Как усовершенствовать архитектуру...

17
136 / 48 / 2
Регистрация: 31.07.2014
Сообщений: 238
04.09.2014, 23:39 2
Никак, так и появляется полиморфное программирование - когда программа начинает писать данные прямо по своему коду, тем самым меняя его. Так вирусы часто "шифруются" чтобы сбить отладчики с толку. Не происходит выполнения данных только потому, что на них не передают управление, а вообще это возможно.
2
3 / 3 / 1
Регистрация: 11.12.2012
Сообщений: 41
29.08.2015, 05:10  [ТС] 3
Я не догнал, объясните пожалуйста по подробнее если вам не сложно
0
Ушел с форума
Эксперт С++
16392 / 7377 / 1184
Регистрация: 02.05.2013
Сообщений: 11,637
Записей в блоге: 1
29.08.2015, 09:34 4
Цитата Сообщение от programmeri Посмотреть сообщение
как процессор определяет команду от данных если они записаны одинаково ?
Никак.
Процессору "сказали" перейти на такой-то адрес и выполнить код, который
там лежит - он сделал. Все. Если по этому адресу лежали данные - ну что ж,
это проблемы того, кто их туда записал (на современных архитектурах
выполнять данные не даст DEP, но сути это не меняет).
2
Модератор
Эксперт NIX
6253 / 1854 / 96
Регистрация: 24.05.2011
Сообщений: 12,184
Записей в блоге: 8
29.08.2015, 09:40 5
Вот, смотри:
Пусть мы имеем поток данных с адреса 0A000h по адрес 0A0FFh.
То есть, всего 0FFh данных.
Если этот поток передавать, как данные, то они будут читаться, как файл по методу "Читал книгу - видел фигу" - процессор их выполнять не будет, пусть даже это программный код в бинарном виде.
Если процессору сообщить, что данный поток нужно выполнять, то он будет пытаться "разглядеть" в в потоке данных управляющие инструкции.
Если у нас с 0A001h по 0A080h находятся инструкции, а дальше по 0A0FFh данные для выполнения этих инструкций, то где-то в коде у нас должна быть соответствующая метка, что "Вот это - данные". Она называется "Указатель".
Т.к. в современном программировании широко используются динамические методы преобразования данных, то и указатели должны не быть статичными. Поэтому, чаще всего указатели - это переменные, которые указывают не всегда на один и тот же адрес памяти, а, в зависимости от количества данных, целей написания данной программы и многих прочих аспектов и факторов, учитываемых программистом, могут указывать на разные участки одного и того же потока данных, а то и вообще - на другие потоки и адреса.
1
Модератор
7650 / 3906 / 2759
Регистрация: 17.08.2012
Сообщений: 12,471
29.08.2015, 10:36 6
programmeri, у процессора есть регистр-указатель на то, что считать командой. Обычно этот регистр называется PC - program counter. (Не путать с PC - personal computer. Далее по тексту под PC подразумевается именно program counter, то есть, счётчик команд программы).
Но не обязательно он называется PC.
В процессорах Intel семейства X86 этот указатель состоит из двух регистров: сегментного регистра кода (CS - code segment register) и указателя на команду IP - instruction pointer. Физический адрес команды формируется из этих двух регистров. При необходимости ознакомьтесь с процессорами i86 и, в частности, с формированием физического адреса памяти для этих процессоров, самостоятельно.
Любой процессор работает под управлением программы. С чего всё начинается: после включения или сброса в PC присутствует предопределённое число, являющееся адресом самой первой команды. Обычно по этому адресу расположена микросхема постоянного запоминающего устройства (ПЗУ, ROM), в которой (среди прочего) располагается программа начальной загрузки операционной системы. Обычно набор программ, содержащийся в этой микросхеме, называется BIOS - basic input-output system. Процессор читает число по этому адресу, интерпретируя его как команду. При этом содержимое PC или увеличивается на длину команды (как правило), или из уже прочитанной команды в PC заносится новый адрес (в случае команды перехода). Получается, что этот самый PC (ну, или что там ещё (см. под спойлером, не суть важно) всегда указывает на команду, которая будет выполнена прямо сейчас. То, что располагается по адресу из регистра PC, интерпретируется процессором как команда. А данными являются вообще любые числа, так или иначе попавшие в память компьютера. В том числе и программы. Нет никаких существенных препятствий считать любую программу просто набором чисел. Равно как и наоборот. Любой набор чисел можно считать последовательностью команд, то есть, программой. Достаточно записать в PC тем или иным образом начальный адрес набора чисел (обычно это делается командой перехода), и процессор начнёт считать упомянутый набор чисел программой. Естественно, бессмысленный набор чисел, скорее всего, вызовет ту или иную ошибку, и процессор переключится на ту или иную программу обработки ошибки. Вообще, могут быть разные модели поведения процессора при той или иной ошибке.

Короче: Любые числа, находящиеся в памяти компьютера, являются данными. То число, на которое указывает программный счётчик (PC, или регистровая пара CS:IP для Intel X86) - является командой.

Принято считать, что набор чисел, который должен интерпретироваться как команды, называют программой, все остальные числа называют данными.

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

Добавлено через 39 секунд

Не по теме:

Долго же я печатал ответ...

5
2572 / 2188 / 233
Регистрация: 03.07.2012
Сообщений: 7,896
Записей в блоге: 1
29.08.2015, 12:12 7
Существовали (а может и сейчас существуют в военной и космической технике) компьютеры, у которых память для данных и память для программы физически различаются. Т.е. когда процессор обращается по адресу 1000 за очередной инструкцией, он получает число-код инструкции, а когда обращается по адресу 1000 за данными, оно получает другое число-данные. В архитектуре фон Неймана память общая и ячейка памяти не знает, как будет интерпретироваться записанное в ней число. Может, это код инструкции, может это цена товара, буква текста или кусочек картинки. Интерпретация определяется программой.

Не-неймановская архитектура часто не только разделяла адресное пространство кода и данных - это физически были различные блоки. Данные хранились в ОЗУ (оперативное запоминающее устройство) и могли меняться в процессе выполнения программы. А сама программа находилась в ДЗУ (долговременное запоминающее устройство), ячейки памяти "прошивались" с помощью коммутации или прокладыванием проводков (блок памяти выглядел как куча торчащих штырьков, оплетенных проводками). Хочешь изменить программу - меняй расположение проводков или меняй весь блок (загружай, так сказать, другую программу ). Архитектура Неймана позволила хранить программы на внешних накопителях как данные и загружать их для выполнения, что привело к возникновению ОС и дальнейшему развитию.
3
Модератор
7650 / 3906 / 2759
Регистрация: 17.08.2012
Сообщений: 12,471
29.08.2015, 12:43 8
zer0mail, большинство микроконтроллеров построены именно по Гарвардской архитектуре, а не по Фон-Неймановской. Если компьютер (в данном случае - устройство, основанное на микроконтроллере) предназначен для выполнения одной-единственной программы, Гарвардская архитектура удобнее (программа - в ПЗУ, данные - в ОЗУ и/или регистрах, пространства кода и данных разделены, как Вы указали). Так что... Не Фон-Нейманом единым живо современное программирование.
1
sourcerer
29.08.2015, 14:15
  #9

Не по теме:

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

0
2572 / 2188 / 233
Регистрация: 03.07.2012
Сообщений: 7,896
Записей в блоге: 1
29.08.2015, 16:12 10
Cyborg Drone, я написал о компьютерах, не о микроконтроллерах. Кому интересно - прочитают (и скажут "спасибо" ), кому нет - пропустят.
0
Cyborg Drone
30.08.2015, 06:35
  #11

Не по теме:

zer0mail, не понимаю, что не так. Я Вам вроде бы не возражал. И чем принципиально отличается встроенный куда-либо компютер от персонального? Или вот пример - калькулятор. Сойдёт за компьютер с не-Фон-Неймановской архитектурой? А что касаемо описанных Вами устройств памяти, видел их в работе: в 70-х годах прошлого века. и ДЗУ на диодной матрице и штырьках и проволочках (прошивается накруткой провода специальным инструментом), и ПЗУ на ферритовых колечках (натурально, программа с помощью иголки с проволокой прошивается), и ОЗУ на ферритовых колечках с ППГ... Однако, всё же возражу Вам: если что-то не упомянуть - как тот, которому интересно, будет знать, что читать? Тем более, я считаю, что нужно знать всё, а то, чего не знаешь - об этом нужно иметь представление. Как это - кому нет - пропустят? Или что, молодёжь слаба в кколенках, и жажда знаний сегодня не в моде?

0
zer0mail
30.08.2015, 11:42
  #12

Не по теме:

Цитата Сообщение от Cyborg Drone Посмотреть сообщение
Я Вам вроде бы не возражал.
Тогда и надо было написать без обращения ко мне, что де мол в микроконтроллерах не-Неймановская архитектура. Тогда Ваше сообщение воспринималось бы как дополнение, а не как возражение. Любознательная молодежь прочитает мое сообщение, Ваше и будет иметь более полное представление об архитектурах. И что это за наезды насчет слабости коленок? Считаете, что знать надо все? Тогда у Вас преувеличенное представление о своих возможностях или приуменьшенное обо "всем". :D Всех языков не выучишь, всех книг не прочитаешь, всех фильмов не пересмотришь, всех теорий не поймешь (это далеко не полный перечень). И даже представление не составишь.

0
0 / 0 / 0
Регистрация: 30.08.2015
Сообщений: 16
30.08.2015, 11:46 13
Единственно программист может самостоятельно разбить память на сегменты данные / код.
И пользоваться тем что регистры процессора несмотря на то что называются регистрами общего назначения
какую-то специализацию имеют. Так исторически сложилось) Дабы код написанный под старую систему выполнялся
под новой архитектурой. А так согласно принципам Фон Неймана действительно никак.
0
zer0mail
30.08.2015, 13:55
  #14

Не по теме:

Цитата Сообщение от Cyborg Drone Посмотреть сообщение
Или вот пример - калькулятор. Сойдёт за компьютер с не-Фон-Неймановской архитектурой?
Ну, если сможете подготовить на калькуляторе публикацию, посмотреть фильм и сделать видео монтаж - то за компьютер сойдет :)

0
3 / 3 / 1
Регистрация: 11.12.2012
Сообщений: 41
02.09.2015, 04:47  [ТС] 15
zer0mail, Получается что адреса данных и кода разделены уже, архитектурно или этим занимается операционная система ? хотя я думаю существуют системы и с архитектурной и с помощью операционной системы, Я думаю:
Что при загрузке задания с ПЗУ операционная система создает процесс, и сама же операционная система проводит адресацию работающего процесса скорее всего указывая в таблице процессов, но этот метод не подходит к системе с абсолютной адресацией, так как там строго указана адресация, получается что в системах с не строгой адресацией операционная система играет роль в различии данных и кода, а сам процессор не видит разницы между кодом и данными.

Добавлено через 5 минут
Убежденный, Ого получается он защищает и от переполнения буфера ?

Добавлено через 31 секунду
Убежденный, Во всех операционных системах реализован ?
0
2572 / 2188 / 233
Регистрация: 03.07.2012
Сообщений: 7,896
Записей в блоге: 1
02.09.2015, 08:26 16
Современная ОС на современных архитектурах может блоку памяти "на лету" назначить биты чтения, записи, выполнения. Тогда программа не сможет записать данные в область, где нет бита записи и не сможет выполнить инструкции из области, где нет бита выполнения. Но это уже "навороты" над Неймановской архитектурой.
Также важно различать логическую и физическую адресацию. Те адреса, которые программа использует при обращении к инструкциям и данным - они логические.
0
Ушел с форума
Эксперт С++
16392 / 7377 / 1184
Регистрация: 02.05.2013
Сообщений: 11,637
Записей в блоге: 1
02.09.2015, 09:28 17
Цитата Сообщение от programmeri Посмотреть сообщение
получается он защищает и от переполнения буфера ?
Правильнее сказать, что DEP не защищает от атак переполнения буфера, а усложняет их.
Есть техники обхода этой защиты, например ROP (Return-Oriented Programming).

Цитата Сообщение от programmeri Посмотреть сообщение
Во всех операционных системах реализован ?
DEP появился в XP, насколько я помню, причем есть как аппаратная реализация,
так и программная. А вообще, кроме DEP есть еще пачка технологий, защищающая
от выполнения нежелательного кода - SMEP, CodeIntegrity, NxPool, "code generation"
capability на Win10 и другие.
1
3 / 3 / 1
Регистрация: 11.12.2012
Сообщений: 41
02.09.2015, 19:45  [ТС] 18
zer0mail, Ну это тоже вроде бы зависит от архитектуры, mmu контролирует
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.09.2015, 19:45

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

Сортировка Фон Неймана
На Си.Желательно с несколькими функциями.

2 принцип фон Неймана
Помогите дать аргументированный ответ на вопросы. 2 Принцип фон Неймана гласит,что слова разного...

Алгоритм фон Неймана.
Помогите пожалуйста! вот задача: Алгоритм фон Неймана. Упорядочить массив а1, а2, ..., аn по...

Энтропия фон Неймана
как вычислить энтропию состояния с матрицей плотности exp(-H/T)/Tr(exp(-H/T), где Н-матрица 2x2?...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.