реклама на сайте
подробности

 
 
3 страниц V   1 2 3 >  
Reply to this topicStart new topic
> Гарвардская и фон неймовская, разница на практике?
Zelepuk
сообщение Oct 28 2011, 19:33
Сообщение #1


Знающий
****

Группа: Участник
Сообщений: 634
Регистрация: 27-10-10
Пользователь №: 60 464



Какая разнится между гарвардской и фон неймовской архитектурой для С-программиста?
Если можно конкретный жизненный пример.
Заранее благодарен.
Go to the top of the page
 
+Quote Post
Ruslan1
сообщение Oct 28 2011, 19:42
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 360
Регистрация: 6-03-06
Из: Кишинев
Пользователь №: 15 025



Цитата(Zelepuk @ Oct 28 2011, 22:33) *
Какая разнится между гарвардской и фон неймовской архитектурой для С-программиста?
Если можно конкретный жизненный пример.
Заранее благодарен.

Никакой.
Исходники одинаково хорошо копилируются си-компиляторами в любую архитектуру, от PIC12 до ARM или BF. Лишь бы ресурса хватало. А любую закорюку, требующую индивидуального подхода (прагмы например) нужно очень серьезно обдумывать независимо от архитектуры.
Go to the top of the page
 
+Quote Post
Tiro
сообщение Oct 28 2011, 19:46
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 781
Регистрация: 3-10-04
Из: Санкт-Петербург
Пользователь №: 768



Цитата(Ruslan1 @ Oct 28 2011, 22:42) *
Никакой.
Исходники одинаково хорошо копилируются си-компиляторами в любую архитектуру, от PIC12 до ARM или BF. Лишь бы ресурса хватало. А любую закорюку, требующую индивидуального подхода (прагмы например) нужно очень серьезно обдумывать независимо от архитектуры.


Разницы нет, если он вирусы не пишет ))
Go to the top of the page
 
+Quote Post
V_G
сообщение Oct 28 2011, 23:24
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 818
Регистрация: 15-10-09
Из: Владивосток
Пользователь №: 52 955



Да, для Си-программиста разницы никакой.
Разница в скорости работы полученного кода.
Элементарная операция сложения операндов из внешней памяти в Неймановской архитектуре требует 3 последовательных обращений к памяти (загрузка команды, загрузка 1-го операнда, загрузка 2-го операнда/выполнение сложения).
При Гарвардской архитектуре эта же операция потребует уже 2 обращения: загрузка команды из памяти программ и одновременно загрузка 1-го операнда из памяти данных, затем загрузка второго операнда и выполнение инструкции.
Налицо выигрыш 33% в скорости.
Плюс гарвардская архитектура позволяет делать разные разрядности памяти программ и данных, благодаря чему все или подавляющее большинство кодов инструкций имеют длину всего в одно слово, что также ускоряет их загрузку.
Go to the top of the page
 
+Quote Post
Zelepuk
сообщение Oct 29 2011, 05:16
Сообщение #5


Знающий
****

Группа: Участник
Сообщений: 634
Регистрация: 27-10-10
Пользователь №: 60 464



Спасибо!
Получается стоит учитывать особенности архитектуры при расчёте алгоритмов и выборе процессора...

Цитата(V_G @ Oct 29 2011, 02:24) *
Да, для Си-программиста разницы никакой.
Разница в скорости работы полученного кода.
Элементарная операция сложения операндов из внешней памяти в Неймановской архитектуре требует 3 последовательных обращений к памяти (загрузка команды, загрузка 1-го операнда, загрузка 2-го операнда/выполнение сложения).
При Гарвардской архитектуре эта же операция потребует уже 2 обращения: загрузка команды из памяти программ и одновременно загрузка 1-го операнда из памяти данных, затем загрузка второго операнда и выполнение инструкции.
Налицо выигрыш 33% в скорости.
Плюс гарвардская архитектура позволяет делать разные разрядности памяти программ и данных, благодаря чему все или подавляющее большинство кодов инструкций имеют длину всего в одно слово, что также ускоряет их загрузку.


В чём плюсы фон неймовской архитектуры тогда? Нежто МСП430 зря работают по Фон неймовской архитектуре?
Go to the top of the page
 
+Quote Post
stells
сообщение Oct 29 2011, 05:34
Сообщение #6


внештатный сотрудник
******

Группа: Участник
Сообщений: 2 458
Регистрация: 10-05-08
Из: МО, Медвежьи озера
Пользователь №: 37 401



Цитата(V_G @ Oct 29 2011, 03:24) *
Элементарная операция сложения операндов из внешней памяти...
Налицо выигрыш 33% в скорости.

так это для внешней памяти, а поскольку обработка данных осуществляется большей частью над содержимым РОН, то выигрыш на порядок меньше
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Oct 29 2011, 05:47
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(Zelepuk @ Oct 28 2011, 22:33) *
фон неймовской

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


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
V_G
сообщение Oct 29 2011, 06:43
Сообщение #8


Профессионал
*****

Группа: Свой
Сообщений: 1 818
Регистрация: 15-10-09
Из: Владивосток
Пользователь №: 52 955



Цитата(stells @ Oct 29 2011, 15:34) *
так это для внешней памяти, а поскольку обработка данных осуществляется большей частью над содержимым РОН, то выигрыш на порядок меньше

Зависит от реализации Гарвардской архитектуры. В DSP от Analog Devices возможна одновременная (в одном тактовом цикле) прогрузка данных (в РОН, условно говоря) из двух областей памяти и вычислительная операция. В обычных контроллерах (avr,pic) преимущества Гарвардской проявляются в коротких командах - очень мало двухсловных команд (в picaх вообще не помню, есть ли).

2Zelepuk
По Неймановской - общая память как для программ, так и для данных может быть как ее преимуществом, так и недостатком, в зависимости от ситуации. Но по скорости работы у нее преимуществ нет однозначно.
Go to the top of the page
 
+Quote Post
Sergey_Aleksandr...
сообщение Oct 29 2011, 10:36
Сообщение #9


Частый гость
**

Группа: Свой
Сообщений: 168
Регистрация: 8-10-08
Из: РФ Смоленск
Пользователь №: 40 764



В МК с архитектурой Фон Неймана возможно поместить выполняемый код в ОЗУ и динамически изменят его. Ну например загружать в ОЗУ программы из карты памяти. В МК с гарвардской архитектурой подобные вещи сделать затруднительно.
Go to the top of the page
 
+Quote Post
kan35
сообщение Oct 29 2011, 12:44
Сообщение #10


Знающий
****

Группа: Участник
Сообщений: 537
Регистрация: 22-02-06
Пользователь №: 14 594



Неймановская безусловно ЛУЧШЕ из за линейного адресного пространства.
Простейщий пример для пишущих на Си:
гарвардская у AVR требует иметь 3 разных printf - для строк из памяти данных и для строк из памяти программ, и для eeprom,удобно?)). Наличие многих адресных пространств памятей постоянно требует дублирования функций. Это существенно затрудняет портирование интересных и нужных наработок как IP/TCP стеков, графических оболочек (GUI) и проч.

Однако, наилучшая архитектура для микроконтроллеров - так наз. смешанная, когда ОЗУ и FLASH висят на разных шинах, но находятся в 1 адресном пространстве. Лучший пример - ARMы серии Cortex-M.
Go to the top of the page
 
+Quote Post
dxp
сообщение Oct 29 2011, 12:59
Сообщение #11


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



Цитата(Sergey_Aleksandrovi4 @ Oct 29 2011, 17:36) *
В МК с архитектурой Фон Неймана возможно поместить выполняемый код в ОЗУ и динамически изменят его. Ну например загружать в ОЗУ программы из карты памяти. В МК с гарвардской архитектурой подобные вещи сделать затруднительно.

Ничуть не затруднительно, если в качестве программ выступает ОЗУ. Пример - процессор фирмы ADI Blackfin. В случае, если не ОЗУ, то потруднее, но это обусловлено не типом архитектуры, а типом памяти.

Из уникальных фишек, доступных для фон Неймана, можно отметить возможность писать position-independed code, когда код и данные линкуются в сопряжённые блоки и доступ к данным организуется по относительным (от кода) смещениям, что позволяет эти блоки размещать в любом месте адресного пространства без потери целостности функциональности.

Цитата(kan35 @ Oct 29 2011, 19:44) *
Неймановская безусловно ЛУЧШЕ из за линейного адресного пространства.

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

Гарвардская архитектура тут просто даёт возможность подкачивать данные и код одновременно - каждое по своим шинам, но память при этом может быть одна и та же (ессно, одна должна быть побита на блоки, доступ к которым осуществляется со стороны шин данных и адресов неодновременно).

Цитата(kan35 @ Oct 29 2011, 19:44) *
Простейщий пример для пишущих на Си:
гарвардская у AVR требует иметь 3 разных printf - для строк из памяти данных и для строк из памяти программ, и для eeprom,удобно?)). Наличие многих адресных пространств памятей постоянно требует дублирования функций.

Это просто у AVR так организовано, что память данных ОЗУ, память данных EEPROM и память программ физически разделены, поэтому тут нужны всякие расширения вроде __flash и __eeprom. А можно ведь было сделать и по-другому. Правда, у AVR адресная шина неширокая, поэтому на нём сильно не разгонишься по пути унифицированного адресного пространства для всех видов памяти.

Цитата(kan35 @ Oct 29 2011, 19:44) *
Однако, наилучшая архитектура для микроконтроллеров - так наз. смешанная, когда ОЗУ и FLASH висят на разных шинах, но находятся в 1 адресном пространстве. Лучший пример - ARMы серии Cortex-M.

Именно. И ещё пример - Blackfin. У всех этих процов шина адресов широкая - 32 бита, есть, где всё разместить. sm.gif


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
Ruslan1
сообщение Oct 29 2011, 17:21
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 2 360
Регистрация: 6-03-06
Из: Кишинев
Пользователь №: 15 025



Цитата(kan35 @ Oct 29 2011, 15:44) *
Неймановская безусловно ЛУЧШЕ из за линейного адресного пространства.
Простейщий пример для пишущих на Си:
гарвардская у AVR требует иметь 3 разных printf - для строк из памяти данных и для строк из памяти программ, и для eeprom,удобно?)).

Мне кажется, это несовершенство конкретного компилятора а не архитектуры. printf не применял, но sprintf на майкрочипе на любом из трех компиляторов работал прозрачно. Странно что компилятор (при корректном описании типов величин, конечно) не может разобраться сам.
Go to the top of the page
 
+Quote Post
777777
сообщение Oct 31 2011, 10:08
Сообщение #13


Профессионал
*****

Группа: Участник
Сообщений: 1 091
Регистрация: 25-07-07
Из: Саратов
Пользователь №: 29 357



Цитата(V_G @ Oct 29 2011, 03:24) *
Да, для Си-программиста разницы никакой.

Агащязпрям. Попробуйте в AVR создать массив констант в памяти программ и обратиться к нему - сразу поймете разницу.
Go to the top of the page
 
+Quote Post
Палыч
сообщение Oct 31 2011, 10:42
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(777777 @ Oct 31 2011, 13:08) *
Попробуйте в AVR создать массив констант в памяти программ и обратиться к нему - сразу поймете разницу.

С точки зрения языка Си: в какой памяти размещен массив - разницы не будет, обращение к элементам массива будет одинаково (что-то типа M[i]). Другое дело - указатели, но эту проблему должны решать компиляторописатели - решили же эту проблему в Keil...
Go to the top of the page
 
+Quote Post
Ruslan1
сообщение Oct 31 2011, 13:02
Сообщение #15


Гуру
******

Группа: Свой
Сообщений: 2 360
Регистрация: 6-03-06
Из: Кишинев
Пользователь №: 15 025



Цитата(777777 @ Oct 31 2011, 12:08) *
Агащязпрям. Попробуйте в AVR создать массив констант в памяти программ и обратиться к нему - сразу поймете разницу.

ну а с макрочипом (PIC18 например) это делается просто, именно память программ используется:
Код
static const double K1mlt[128] =
{
        1.0,            //in0
        1.0,            //in1
......

rezdouble = ((double)adccode._int * K1mlt[n]) + K1add[n];

Так что проблемы не в архитектуре, а в компиляторе.
Go to the top of the page
 
+Quote Post

3 страниц V   1 2 3 >
Reply to this topicStart new topic
3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 07:45
Рейтинг@Mail.ru


Страница сгенерированна за 0.01526 секунд с 7
ELECTRONIX ©2004-2016