Перейти к содержанию
    

Маленький процессор для Xilinx

11 minutes ago, dxp said:

ISA не накладывает никаких ограничений на организацию шин

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

33 минуты назад, aaarrr сказал:

Именно раздельные поля памяти определяют принципиальные различия архитектур, а не количество шин.

Так блоки памяти раздельные для того и городят, чтобы можно было к ним лазить параллельно-одновременно, а для этого и нужны разные шины. Вся суть в ускорении доступа, а не в количестве. Тут же утверждалось, что классификация строится именно на типе адресного пространства: если одно одно - это фон Нейман, если они разные (адресация в каждом своя независимая), то это Гарвард. Ссылки выше на, надеюсь, авторитетные источники - вендоров (ADI, ARM), наглядно показывают, что дело не в адресном пространстве, а в способности иметь одновременный доступ к инструкциям и данным, а для этого, разумеется, нужно аппаратное обеспечение - в первую очередь разные шины, разные порты доступа в память. Кстати, не обязательно иметь физически разные блоки памяти - этот одновременный доступ можно организовать, например, с помощью true dual-port (TDP) memory. В процессорах так не делают, это невыгодно, двухпортовая память дорогая, а в какой-нить FPGA вполне норм,  т.к. имеются готовые BRAM, поддерживающие TDP.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

14 minutes ago, dxp said:

Так блоки памяти раздельные для того и городят, чтобы можно было к ним лазить параллельно-одновременно, а для этого и нужны разные шины. Вся суть в ускорении доступа, а не в количестве. Тут же утверждалось, что классификация строится именно на типе адресного пространства: если одно одно - это фон Нейман, если они разные (адресация в каждом своя независимая), то это Гарвард. Ссылки выше на, надеюсь, авторитетные источники - вендоров (ADI, ARM), наглядно показывают, что дело не в адресном пространстве, а в способности иметь одновременный доступ к инструкциям и данным, а для этого, разумеется, нужно аппаратное обеспечение - в первую очередь разные шины разные порты доступа в память. Кстати, не обязательно иметь разные блоки памяти - этот одновременный доступ можно организовать, например, с помощью true dual-port (TDP) memory. В процессорах так не делают, это невыгодно, двухпортовая память дорогая, а в какой-нить FPGA вполне норм,  т.к. имеются готовые BRAM, поддерживающие TDP.

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

2. В приведённой документации подчёркивалось: "bus architecture", а не просто "architecture". Поэтому абсолютно некорректно утверждать, что Cortex-M3 имеет гарвардскую архитектуру -- а именно это и утверждают многие. Вот "шинную архитектуру", как вендор утверждает, -- с этим можно согласиться. Лично мне такое определение не нравится тем, что способно ввести в заблуждение из-за созвучия с "просто архитектурой", но, пока "bus" не выбрасывается, это терпимо.

3. На Blackfin Вы почему-то подчеркнули "Harvard achitecture", в то время как там написано "modified Harvard architecture" -- а это совсем разные вещи.

4. Опять и опять вопрошаю: если я использую ядро Cortex-M3 и храню и код, и данные в одной и той же памяти -- это гарвардская архитектура или фон-неймановская?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

25 minutes ago, dxp said:

дело не в адресном пространстве, а в способности иметь одновременный доступ к инструкциям и данным, а для этого, разумеется, нужно аппаратное обеспечение - в первую очередь разные шины разные порты доступа в память. Кстати, не обязательно иметь разные блоки памяти - этот одновременный доступ можно организовать, например, с помощью true dual-port (TDP) memory. В процессорах так не делают, это невыгодно, двухпортовая память дорогая, а в какой-нить FPGA вполне норм,  т.к. имеются готовые BRAM, поддерживающие TDP.

В моем конвейерном софт-процессоре так сделано, одновременный доступ к инструкциям и данным в TDP BRAM. И отношу свою архитектуру к  фон-Неймановской, поскольку инструкции и данные перемешаны в едином линейном адресном пространстве. Назвать такую архитектуру Гарвардской никак не получится - шина инструкций используется и для данных при косвенной адресации.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

53 минуты назад, SII сказал:

Документация вендоров -- это не авторитетный источник

Т.е. ARM для вас неавторитетный источник. А кто ж тогда авторитетный кроме вас самого? :)

53 минуты назад, SII сказал:

В приведённой документации подчёркивалось: "bus architecture", а не просто "architecture"

А что такое "просто "architecture""? ISA? А где в ISA упоминается способ доступа в адресное пространство?

 

53 минуты назад, SII сказал:

На Blackfin Вы почему-то подчеркнули "Harvard achitecture", в то время как там написано "modified Harvard architecture" -- а это совсем разные вещи.

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

 

53 минуты назад, SII сказал:

Опять и опять вопрошаю: если я использую ядро Cortex-M3 и храню и код, и данные в одной и той же памяти -- это гарвардская архитектура или фон-неймановская?

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

4 минуты назад, dxp сказал:

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

@SII вам не поверит, как и мне. И ваше определение сейчас тоже натянут на глобус, ведь есть только два мнения: "моё и неправильное". И ссылок на классические труды на эту тему в области Computer Science, которые бы подтверждали авторитетное мнение @SII вы тоже не увидите.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

21 minutes ago, dxp said:

А где в ISA упоминается способ доступа в адресное пространство?

Компилятор должен все знать про адресное пространство, и ничего - про шины (кроме м/б времянки, для оптимизации кода).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 минуту назад, Leka сказал:

Компилятор должен все знать про адресное пространство, и ничего - про шины (кроме м/б времянки, для оптимизации кода).

И что же он должен знать про адресное пространство, кроме того, что оно просто существует? :))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 minute ago, dxp said:

И что же он должен знать про адресное пространство?

Где можно инструкции размещать, и где - данные.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Так компилятор размещает их в разных секциях. Каждая секция по сути образует отдельное автономное для каждой единицы компиляции (если мы говорим про C/C++) адресное пространство. И уже потом отнюдь не компилятор, но линкер собирает секции вместе и размещает полученное в сегментах памяти. Вот про линкер с каким-то приближением можно сказать, что он "знает" про адресное пространство, но и это натяжка: линкер делает то, что ему велено посредством инструкций линкерного скрипта, где как раз описаны сегменты физической памяти и мапинг секций объектных файлов в эти сегменты. И этот линкерный скрипт написан человеком, и именно человек-то и знает про все эти адресные пространства конкретного процессора, на основании чего и составляет их описания в этом скрипте.

 

Т.ч. линкер сам по себе тоже ничего толком не знает, а тупо распихивает входные секции, попутно разрешая (resolve) адреса - наводя связи, в сегменты физической памяти. А уж компилятор вообще бесконечно далёк от этого. А код и данные он всегда пихает в разные секции, независимо от того, гарварская там шина или фон неймановская.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Неважно, как конкретно делается компиляция, важно, что для компиляции нужна программная модель памяти (а не физическая организация), и это входит в понятие архитектуры.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 минуты назад, Leka сказал:

Неважно, как конкретно делается компиляция, важно, что для компиляции нужна программная модель памяти (а не физическая организация), и это входит в понятие архитектуры.

Хотите сказать, что программная модель языка Си различается для разных процессоров?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 minute ago, dxp said:

Хотите сказать, что программная модель языка Си различается для разных процессоров?

Для "настоящей" Гарвардской архитектуры нужны определенные костыли.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Только что, aaarrr сказал:

Для "настоящей" Гарвардской архитектуры нужны определенные костыли.

Возьмём "настоящую" - AVR. Какие костыли?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...