aaarrr 1 Posted October 22, 2021 · Report post Согласен с @SII - не стоит смешивать архитектуру и её реализацию. Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
one_eight_seven 0 Posted October 22, 2021 · Report post Советую просто поискать такую вещь, как modified harward architecture. Именно её сегодня имеют в виду, когда говорят о Гарвардской архитектуре, которая возникла во времена перфокарт, и тогда было тяжко обращаться по разным шинам к одной памяти. Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
dxp 0 Posted October 23, 2021 · Report post Гарвардская архитектура - это именно раздельные шины для инструкций и данных. Это позволяет обращаться к инструкциям и данным одновременно. Именно это и есть главная фишка этой архитектуры. А у фон Неймана шина одна и за инструкциями и данным там доступ осуществляется по очереди. А уж раздельные там адресные пространства или общее - дело пятое. Не следует путать Гарвардские/фон Неймановские архитектуры доступа в адресное пространство с Instruction Set Architecture (ISA). Это вообще очень опосредованно связанные вещи. И когда речь идёт о конкретных реализациях типа Cortex-M3, ARM7TDMI, это называется микроархитектуры. Т.е. ISA может быть у них всех одна и та же, а реализации очень разными. Например, Cortex-M3 и Cortex-A9 - это одна и та же ISA (ARMv7), но совершенно разные микроахритектуры - например, у M3 конвейер 3 стадии (насколько помню), а у A9 - 9 или 10. Cortex-M0 и ARM11 - это ARMv6. При этом М0 - фон Нейман, у него одна шина для инструкций и данных, а ARM11 - Гарвард, раздельные шины. Адресное пространство унифицированное - общее. ADI Blackfin тоже Гарвардская: 64-разрядная шина инструкций, 3 32-разрядных шины данных (две на чтение, одна за запись), по всем шинам доступ может осуществляться одновременно. Адресное пространство общее. 8 часов назад, one_eight_seven сказал: modified harward architecture Это частный случай Гарвардской архитектуры, когда данные можно располагать в памяти программ. Скорее вариант для бедных. Древние ADSP-21xx были как раз такими. Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
SII 0 Posted October 23, 2021 · Report post Извините, бред. Поскольку получается, что одно и то же ядро (например, Cortex-M3) может быть и фон-неймановским, и гарвардским в зависимости от того, как конкретно оно используется. Конкретно с Cortex-M3 (или там Cortex-M1) ничто не мешает не использовать ITCM и DTCM вообще, подключив всю память через AHB (как это делается, скажем, в Cortex-M0). Так что разделение на фон-неймановскую и гарвардскую -- это именно на уровне архитектуры, а не микроархитектуры, на уровне логических принципов, а не конкретной реализации. И, кстати, все современные высокопроизводительные процессоры одновременно обращаются за кодом и данными -- просто обращаются они не напрямую к памяти, а к кэшам. Что ни разу не делает их гарвардскими. Ну и, кстати говоря, здесь Вы свалили в одну кучу совершенно разные архитектуры. Cortex-M0 -- это ARMv6-M, которая никакого отношения, кроме сходства названия и совпадения части одной из систем команд, не имеет к просто ARMv6, к которой относятся ядра ARM11. То же самое для Cortex-M3 (ARMv7-M) и Cortex-A9 (ARMv7-A) -- у них абсолютно разные системные архитектуры. Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
dxp 0 Posted October 23, 2021 · Report post 1 час назад, SII сказал: Извините, бред. Поскольку получается, что одно и то же ядро (например, Cortex-M3) может быть и фон-неймановским, и гарвардским в зависимости от того, как конкретно оно используется. Извините, вы текст, на который возражаете, внимательно читали? Cortex-M3 - это микроархитектура (погуглите, что этот термин обозначает). Он не может быть "фон-неймановским, и гарвардским в зависимости от того, как конкретно оно используется", он всегда один и тот же - это конкретная реализация ISA. И таких реализаций ISA может быть сколько угодно, от single-cycle вариантов до крутых конвейерных, от примитивных до навороченных out-of-order с register renaming, в том числе построенных на одной общей шине доступа в память (фон Нейман) до раздельных шин (Гарвард). Cortex-M3 - это одна вот такая реализация, и она Гарвардская. 1 час назад, SII сказал: То же самое для Cortex-M3 (ARMv7-M) и Cortex-A9 (ARMv7-A) -- у них абсолютно разные системные архитектуры. Изучайте, что такое ISA. Иначе мы с вами на разных языках говорим. Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
SII 0 Posted October 23, 2021 · Report post 2 minutes ago, dxp said: Извините, вы текст, на который возражаете, внимательно читали? Да, внимательно. 2 minutes ago, dxp said: Cortex-M3 - это микроархитектура (погуглите, что этот термин обозначает). Я прекрасно знаю, что такое микроархитектура, и об этом я писал несколькими постами выше. 3 minutes ago, dxp said: Cortex-M3 - это одна вот такая реализация, и она Гарвардская. Вот такие утверждения бредом и являются. Во-первых, поскольку гарвардская/фон-неймановская -- это архитектура (представление с точки зрения программиста), а не микроархитектура (представление с точки зрения разработчика процессора). Во-вторых, если Вы утверждаете, что Cortex-M3 -- гарвардская архитектура, значит, Вы утверждаете, что я не могу, используя Cortex-M3, разместить и код, и данные в физически одной и той памяти? Ведь именно это отличает архитектуры, а отнюдь не число шин (коих в Cortex-M3 три штуки, а не две, между прочим). 7 minutes ago, dxp said: Изучайте, что такое ISA. Иначе мы с вами на разных языках говорим. Я прекрасно знаю, что такое ISA. А вот Вы, похоже, плохо представляете, в чём разница между, скажем, ARMv7-A и ARMv7-M, и реально не знаете, что такое эта самая ISA, иначе б не стали валить всё в одну кучу. Даже что касается собственно ISA (а она является лишь частью архитектуры), у них есть очень и очень существенные различия: ARMv7-A всегда имеет две совершенно разные системы команд (ARM и Thumb-2) и может иметь ещё и третью недосистему (ThumbEE), у ARMv7-M -- всего одна система команд (Thumb-2), причём не на 100% совпадающая с нею же из ARMv7-A; т.е. уже на уровне ISA эти архитектуры, мягко говоря, не эквивалентны. А ведь есть ещё и другая сторона архитектуры, связанная с состояниями процессора, обработкой прерываний и т.п. -- и в этой части у A- и M-профилей вообще ничего общего нет. 11 hours ago, one_eight_seven said: Советую просто поискать такую вещь, как modified harward architecture. Именно её сегодня имеют в виду, когда говорят о Гарвардской архитектуре, которая возникла во времена перфокарт, и тогда было тяжко обращаться по разным шинам к одной памяти. Вот в том-то и дело, что "имеют в виду" и всё такое: в результате происходит смешивание понятий. Эта самая "modified harward architecture", если на то пошло, -- вообще не архитектура, поскольку относится к способу реализации, а архитектура находится на более высоком уровне и с реализацией не связана. Но это ещё полбеды; вот когда выбрасывают из её названия "модифицированная"... Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
blackfin 1 Posted October 23, 2021 · Report post 2 hours ago, SII said: Поскольку получается, что одно и то же ядро (например, Cortex-M3) может быть и фон-неймановским, и гарвардским в зависимости от того, как конкретно оно используется. Вы забыли ещё один способ конкретного использования - "микропроцессор в диодном включении".. Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
aaarrr 1 Posted October 23, 2021 · Report post Из той же педии: Quote The true distinction of a Harvard machine is that instruction and data memory occupy different address spaces Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
SII 0 Posted October 23, 2021 · Report post 7 minutes ago, aaarrr said: Из той же педии: О чём, собственно, я и говорю. 13 minutes ago, blackfin said: Вы забыли ещё один способ конкретного использования - "микропроцессор в диодном включении".. Каюсь, таким способом микропроцессоры не использовал, но за идею спасибо :) Но вот код и данные в одной и той же памяти таки размещал-с -- в частности, в LPC1788, где внутри как раз Cortex-M3 и лежит. Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
dxp 0 Posted October 23, 2021 · Report post Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
dxp 0 Posted October 23, 2021 · Report post Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
aaarrr 1 Posted October 23, 2021 · Report post Так bus architecture. Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
dxp 0 Posted October 23, 2021 · Report post И? https://www.arm.com/assets/images/events/Mini_Cortex_book.pdf 7 минут назад, aaarrr сказал: Так bus architecture. Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
aaarrr 1 Posted October 23, 2021 · Report post Возьмите описание архитектуры, а не одной из возможных реализаций. Например, "Arm® v7-M Architecture Reference Manual" не предписывает придерживаться той или иной шинной структуры. Она любой может быть по нынешним временам. Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
dxp 0 Posted October 23, 2021 · Report post 14 минут назад, aaarrr сказал: Возьмите описание архитектуры, а не одной из возможных реализаций. Например, "Arm® v7-M Architecture Reference Manual" не предписывает придерживаться той или иной шинной структуры. Она любой может быть по нынешним временам. Совершенно верно. ISA не накладывает никаких ограничений на организацию шин. И при конкретной реализации ISA - микроархитектуре - может быть выполнен любой вариант доступа к инструкциям и данным. По очереди через одну шину - фон Нейман. Одновременно - Гарвард. А сами блоки памяти могут физически быть одним куском памяти или разными, как они размещены в адресном пространстве (или пространствах), это уже определяется реализацией мультиплексора адреса. У фон Неймана тут, правда, ограничение: блоки должны составлять единое адресное пространство, т.к. шина-то физически одна общая. А у Гарварда тут есть свобода: можно разделить начисто и адресовать каждую область с нуля (AVR), а можно объединить их в единое адресное пространство (Blackfin, Cortex-M3). Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...