Jump to content

    

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

Recommended Posts

aaarrr
11 minutes ago, dxp said:

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

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

Share this post


Link to post
Share on other sites

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

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

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

Share this post


Link to post
Share on other sites

SII
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 и храню и код, и данные в одной и той же памяти -- это гарвардская архитектура или фон-неймановская?

Share this post


Link to post
Share on other sites

Leka
25 minutes ago, dxp said:

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

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

Share this post


Link to post
Share on other sites

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

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

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

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

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

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

 

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

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

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

 

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

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

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

Share this post


Link to post
Share on other sites

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

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

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

Share this post


Link to post
Share on other sites

Leka
21 minutes ago, dxp said:

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

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

Share this post


Link to post
Share on other sites

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

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

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

Share this post


Link to post
Share on other sites

Leka
1 minute ago, dxp said:

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

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

Share this post


Link to post
Share on other sites

dxp

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

 

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

Share this post


Link to post
Share on other sites

Leka

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

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

Share this post


Link to post
Share on other sites

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

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

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

Share this post


Link to post
Share on other sites

aaarrr
1 minute ago, dxp said:

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

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

Share this post


Link to post
Share on other sites

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

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

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.