Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
10.3.2012, 21:10
Сообщение
#81
|
|
![]() сундук ![]() ![]() ![]() Группа: Пользователи Сообщений: 4043 Регистрация: 21.11.2009 Из: Ростов-на Дону Пользователь №: 15 |
|
|
|
|
10.3.2012, 21:16
Сообщение
#82
|
|
![]() Adept ![]() ![]() ![]() Группа: Пользователи Сообщений: 522 Регистрация: 20.4.2011 Из: Novosibirsk Пользователь №: 346 |
Я не хотел нарушать Вашу достаточно оригинальную картину видения мира, но Cortex M3 - Фон-Неймановская машина. Чего бы там не утверждали маркетологи из ARM. Для того, чтобы в этом убедиться - заглянем сюда. Как видно из рисунка, вся память экспонируется юзеру как единое адресное пространство. Что уже формально противоречит Гарвардской концепции. Это не так. Архитектура определяется не организацией памяти, а способами доступа к ней. У фон-Неймана доступ к командам и данным осуществляется через одну и ту же шину, а у Гарварда - через две разные, что даёт возможность одновременно качать инструкции и операнды. Как при этом организовано адресное пространство - дело третье. Оно может быть разделено и недоступно с "чужой" шины, а может быть и доступно (если шины прицеплены к мультиплексорам всех блоков памяти). В последнем случае такое адресное пространство называется унифицированным - Unified Memory Space. Именно по такой схеме организован Blackfin - унифицированное 32-разрядное адресное пространство, в котором живёт всё, включая внутренню память, внешнюю (SDRAM, асинхронная память), Memory Mapped Registers, память программ. При этом Blackfin - Гарвардский дальше некуда. Более того, он имеет модифицированную Гарвардскую архитектуру, которая обеспечивает подкачку двух операндов за такт. Практически все сегменты памяти, кроме специализированных и сегмента Code, доступны через одну, общую для команд и данных, системную шину. Опять же не Гарвард явно. И лишь для сегмента Code мы имеем две шины ICode и DCode для команд и для данных соответственно. И если при реализации этот сегмент будет состоять из сплошной RAM - результат будет Фон-Неймановским. У СМ3, насколько помню, три шины - шина памяти программ, шина памяти данных и т.н. системная шина. Сама организация доступа у него типично Гарвардская - одновременный доступ к командам и данным (за исключением случаев, когда данные лежат в памяти программ - в этом случае, понятно, не получится одновременно, поэтому и не рекомендуют в этой области размещать данные). У Микрочипа (PIC24, dsPIC) все команды выполняются строго за один такт (два колебания системного генератора). Включая сюда MAC с префетчем данных и пред- и пост- модификацией адресов этих данных. При любом раскладе. Вне зависимости от реализации. Так что о тормозах здесь речи быть не может в принципе. ЦОС ядро dsPIC - почти калька с древнего ADSP-21xx, который уже тогда был модифицированным гарвардом (умел таскать второй операнд из памяти программ, правда это было возможно только на аппаратных циклах, когда инструкции извлекать не надо - например, МАС в цикле, но это и была цель). Конечно, в dsPIC пофиксили недостатки "прародителя", но в целом если смотреть на развитие процессоров ЦОС, это отсталый подход. В ADSP-21xx тоже абсолютно все инструкции выполнялись за один такт. 40 МГц это было тогда. Но реально внутри проца работал ФАПЧ для генерации клока, и внутренний клок был там 160 МГц, т.е. реально каждый машинный цикл выполнялся за 4 клока, даже если какая-то инструкция этого не требовала. Кроме того, пока не завершится машинный цикл, следующая инструкция просто не стартует. Это довольно расточительно с точки зрения соотношения "производительность/тактовая". Поэтому дальнейшее развитие пошло по пути применения конвейеров. ADSP-219xx уже были конвейерными - при примерно такой же внутренней тактовой (160 МГц) по МИПСам они были в разы быстрее. ADSP-BF5xx (Blackfin) развили эту концепцию и стали действительно быстрыми и при этом весьма экономичными процессорами (чем и снискали популярность). Понятно, что ни о каких выполнениях инструкций за такт у конвейерных процов и речи быть не может. Как и простая оценка производительности в машинных циклах тоже. Скорость характеризует тактовая конвейера, его особенности и архитектура процессора. |
|
|
|
10.3.2012, 21:52
Сообщение
#83
|
|
![]() Активный участник ![]() ![]() ![]() Группа: Пользователи Сообщений: 2220 Регистрация: 26.5.2010 Из: Московская обл. Пользователь №: 165 |
Это не так. Архитектура определяется не организацией памяти, а способами доступа к ней. У фон-Неймана доступ к командам и данным осуществляется через одну и ту же шину, а у Гарварда - через две разные, что даёт возможность одновременно качать инструкции и операнды. Как при этом организовано адресное пространство - дело третье. Оно может быть разделено и недоступно с "чужой" шины, а может быть и доступно (если шины прицеплены к мультиплексорам всех блоков памяти). Я бы уточнил - архитектура ЦПУ, во избежанье разночтений.В принципе, готов наступить себе на горло и признать правомочность термина "архитектура МК", если это кому очень уж хочется. Но два этих понятия, как минимум, необходимо разделять, о чём я, собственно, упоминал и ранее. А речь как раз идёт о ЦПУ. ...ЦОС ядро dsPIC - почти калька с древнего ADSP-21xx, который уже тогда был модифицированным гарвардом (умел таскать второй операнд из памяти программ, правда это было возможно только на аппаратных циклах, когда инструкции извлекать не надо - например, МАС в цикле, но это и была цель). Извини, но это не совсем так.ADSP-21xx умел по магистрали программ таскать данные даже тогда, когда требовалась выборка инструкции (само собой, требующая подобного доступа), и не только в loop-ах, а в любом месте. Собственно, выборка инструкции производилась в каждом машинном цикле. За один цикл (4 внутренних такта) производились обе пересылки по Program Memory шине. Фишка там в том, что циклы PM и DM шин были смещены по фазе, поэтому процессор успевал обработать данные и параллельно захватить следующую команду. А вот в конвейерных SHARC-ах потребовался кэш инструкций, для уменьшения количества конфликтов при одновременной пересылке двух операндов в циклах. Лично у меня вопросов больше нет. Не обижайтесь, это не было целью.Можете считать, что я слился, ибо утомляет... Мне самому интересно кой-что вспомнить, и узнать новое. Сообщение отредактировал Stanislav_GS - 10.3.2012, 22:52 |
|
|
|
10.3.2012, 22:21
Сообщение
#84
|
|
![]() сундук ![]() ![]() ![]() Группа: Пользователи Сообщений: 4043 Регистрация: 21.11.2009 Из: Ростов-на Дону Пользователь №: 15 |
Это не так. ... Позвольте не согласиться. У Фон-Неймана про шины и их количество - ничего нет. Зато про общую память программ и данных - есть. Вполне допускаю, что потом автоматически стали подразумевать одну общую шину. Вот статья по истории вопроса. У СМ3, насколько помню, три шины - шина памяти программ, шина памяти данных и т.н. системная шина. Сама организация доступа у него типично Гарвардская - одновременный доступ к командам и данным (за исключением случаев, когда данные лежат в памяти программ - в этом случае, понятно, не получится одновременно, поэтому и не рекомендуют в этой области размещать данные). Ну и к какому типу отнести СМ3? И надо ли это делать? Не проще ли просто осознать, что у него имеется раздельный доступ к данным и программе, лежащим в сегменте памяти Code (см.). А в остальных сегментах ничего этого нет. Неужели этого не достаточно? И зачем здесь ничего не говорящие термины? И для чего это знание необходимо программисту? С учетом того, что у него на руках имеются все внешние параметры, позволяющие оценить скорость выполнения его кода на этом ядре. ЦОС ядро dsPIC - почти калька с древнего ADSP-21xx, который уже тогда был модифицированным гарвардом (умел таскать второй операнд из памяти программ, правда это было возможно только на аппаратных циклах, когда инструкции извлекать не надо - например, МАС в цикле, но это и была цель). Конечно, в dsPIC пофиксили недостатки "прародителя", но в целом если смотреть на развитие процессоров ЦОС, это отсталый подход. Ну что Вы хотите от бедных индусов? Они сделали все, что могли в сложившейся ситуации. Без средств, без специалистов и всего остального. Получили некий оптимум по соотношению цена/качество. И то, не сразу. Тем более, цель так не ставилась - сделать выдающийся ЦОС. Они хотели сделать гибрид - они его сделали. Потом из него вычленили отдельно MCU и назвали его PIC24. В ADSP-21xx тоже абсолютно все инструкции выполнялись за один такт. 40 МГц это было тогда. Но реально внутри проца работал ФАПЧ для генерации клока, и внутренний клок был там 160 МГц, т.е. реально каждый машинный цикл выполнялся за 4 клока, даже если какая-то инструкция этого не требовала. Кроме того, пока не завершится машинный цикл, следующая инструкция просто не стартует. Это довольно расточительно с точки зрения соотношения "производительность/тактовая". У dsPIC и PIC24 с ФАПЧ все абсолютно аналогично. Только имеется небольшая разница - один машинный цикл (два клока) добавляется, если надо. Поэтому дальнейшее развитие пошло по пути применения конвейеров. ADSP-219xx уже были конвейерными - при примерно такой же внутренней тактовой (160 МГц) по МИПСам они были в разы быстрее. ADSP-BF5xx (Blackfin) развили эту концепцию и стали действительно быстрыми и при этом весьма экономичными процессорами (чем и снискали популярность). Конвейерная обработка данных - это вещь достаточно очевидная при развитии таких систем. Но и дорогая при этом. К тому же стоимость софта разработчика здесь достаточно велика. Понятно, что ни о каких выполнениях инструкций за такт у конвейерных процов и речи быть не может. Как и простая оценка производительности в машинных циклах тоже. Скорость характеризует тактовая конвейера, его особенности и архитектура процессора. Это понятно. Но там уже свои недостатки. |
|
|
|
10.3.2012, 23:10
Сообщение
#85
|
|
![]() Активный участник ![]() ![]() ![]() Группа: Пользователи Сообщений: 2220 Регистрация: 26.5.2010 Из: Московская обл. Пользователь №: 165 |
Ну и к какому типу отнести СМ3? И надо ли это делать? Напишите заодно и в ARM. Ибо он в этих вопросах также "плаваeт":Цитата At the heart of the Cortex-M3 processor is an advanced 3-stage pipeline core, based on the Harvard architecture Цитата The central Cortex-M3 core is based on the Harvard architecture characterized by separate buses http://www.arm.com/files/pdf/IntroToCortex-M3.pdffor instructions and data (Figure 3). The processor differs from the von Neumann architecture based ARM7 family of processors which use the same signal buses and memory for both instructions and data. By being able to read both an instruction and data from memory at the same time, the Cortex-M3 processor can perform many operations in parallel, speeding application execution. Поскольку логика бессильна, привлекаю "тяжёлую артиллерию". До окончательного "просветления мозгов". |
|
|
|
11.3.2012, 15:04
Сообщение
#86
|
|
![]() Adept ![]() ![]() ![]() Группа: Пользователи Сообщений: 522 Регистрация: 20.4.2011 Из: Novosibirsk Пользователь №: 346 |
Извини, но это не совсем так. ADSP-21xx умел по магистрали программ таскать данные даже тогда, когда требовалась выборка инструкции (само собой, требующая подобного доступа), и не только в loop-ах, а в любом месте. Собственно, выборка инструкции производилась в каждом машинном цикле. За один цикл (4 внутренних такта) производились обе пересылки по Program Memory шине. Фишка там в том, что циклы PM и DM шин были смещены по фазе, поэтому процессор успевал обработать данные и параллельно захватить следующую команду. Да, по ходу, ты прав, так и было, я уже забыл за давностью. Позвольте не согласиться. У Фон-Неймана про шины и их количество - ничего нет. Зато про общую память программ и данных - есть. Вполне допускаю, что потом автоматически стали подразумевать одну общую шину. Вот статья по истории вопроса. В выборе в качестве критерия количество раздельных памятей нет особого смысла. Какая разница, сколько блоков памяти там прицеплено к шинным мультиплексорам? Главное, как с этой памятью работать. Если возможен только последовательный вариант - это одна архитектура, если возможен параллельный вариант - другая. У того же Blackfin'а все блоки памяти имеют размер по 4к, т.е. одновременно можно обращаться только к одному такому блоку - физическое ограничение. Но ничего не помешало объединить все эти блоки в одно адресной пространство, к которому прицеплены все шины, поэтому имеется возможность одновременно лазить в эту одну память. Напрасно спорите, ПМСМ. |
|
|
|
11.3.2012, 17:17
Сообщение
#87
|
|
![]() сундук ![]() ![]() ![]() Группа: Пользователи Сообщений: 4043 Регистрация: 21.11.2009 Из: Ростов-на Дону Пользователь №: 15 |
Напрасно спорите, ПМСМ. Может быть и напрасно... Просто мне лично не понятно, с каких пор концепция Фон-Неймана стала относиться к шинам? И еще. Что дает это знание разработчику? При условии, что есть методики оценки производительности. Внешне ничего не поменялось. Чтобы довести дело до логического конца, надо еще рассмотреть структуру АЛУ и управляющего автомата. А так же микропрограммы. Иначе этих знаний может не хватить в самый ответственный момент. |
|
|
|
11.3.2012, 19:25
Сообщение
#88
|
|
![]() посіпака Хунти Группа: Мод Сообщений: 20029 Регистрация: 21.11.2009 Из: Vinnitsa Пользователь №: 11 |
(Сделав крюк в обход холивара). Похоже, силабсовское IDE, как я и предполагал, базируется на GCC с эклипсом, ибо при попытке инсталляции сразу JRE затребовало. А джава (вообще-то - "хава" или "кава", по-испански, если присмотреться к иконке-чашечке) как раз и не хочет становиться, ошибка 1330, похоже, какая-то хрень в недавно переустановленной XP. Ибо в битый инсталлятор на офсайте не верится. Взял бутылку, разбираюсь.
(upd) С 7-м JRE установилось, ушло меньше полбутылки. По ходу, Precision32 это Codered, то же, что для NXPhilips-ов, только в профиль. Плюс примочки к Кейлу - хедеры, либы, примеры и т.п. Навскидку - разочаровывает. (upd2) Может, высоконаучную дискуссию об архитектурах как-то во флейм откусить? Учитывая накал страстей, там ей самое место, тёплое и удобное. Сделал бы, дык модераторские полномочия аннигилированы. |
|
|
|
11.3.2012, 19:28
Сообщение
#89
|
|
![]() Активный участник ![]() ![]() ![]() Группа: Пользователи Сообщений: 2220 Регистрация: 26.5.2010 Из: Московская обл. Пользователь №: 165 |
Возвращаясь к нашему барану, который на цитату "разница между M0 и M3 очень слабая" вдруг решил обсудить ещё более слабую разницу, чем подразумевалась в контексте. В каком таком контексте, пидoрок? ...Из всех аспектов, которые можно было сравнить и оценить существенность их вклада в процентах для схемотехников, программистов и юзеров, на удивление Стас выбрал САМОЕ САМОЕ неважное отличие (гарвард/нейман). Видишь ли в чём дело, Гаунючок...Это отличие - САМОЕ-САМОЕ важное. Все остальные отличия непосредственным образом из него вытекают. ...Стасик, ещё позже я доставлю тебе удовольствие полного поражения. Терпение, мой друг. Доставляй удовольствие своим заднепроходчикам. Мне вашего счастья и даром не нать. -------------------------------------------------------- Что дает это знание разработчику? Для меня - довольно много.При условии, что есть методики оценки производительности. Я с ходу могу, например, оценить применимость той или иной машинки для широкого класса задач, включающих управление, обработку сигнала, математические вычисления и т.д. И примерно предсказать её особенности, с которыми придётся встретиться. |
|
|
|
11.3.2012, 19:43
Сообщение
#90
|
|
![]() Активный участник ![]() ![]() ![]() Группа: Пользователи Сообщений: 2220 Регистрация: 26.5.2010 Из: Московская обл. Пользователь №: 165 |
В выборе в качестве критерия количество раздельных памятей нет особого смысла. Какая разница, сколько блоков памяти там прицеплено к шинным мультиплексорам? Главное, как с этой памятью работать. Если возможен только последовательный вариант - это одна архитектура, если возможен параллельный вариант - другая. У того же Blackfin'а все блоки памяти имеют размер по 4к, т.е. одновременно можно обращаться только к одному такому блоку - физическое ограничение... Ещё небольшое уточнение.Видимо, имелось в виду, что к каждому блоку одномоментно может быть только одно обращение, так? (В принципе, там есть нюансы в виде FIFO-буферов, но не суть). Само ядро может тащить данные из двух различных блоков одновременно; при попытке сделать это из одного блока возникнет конфликт и stall-ы. DMA каналы также могут подключаться к разным блокам, и это позволяет осуществлять ввод-вывод с очень высокой скоростью и без интерференции между каналами. Собственно, это я по поводу преимущества многошинных структур. Которыми ещё надо уметь пользоваться, а для этого - хорошо знать их устройство. На том же Блэкфине бездумно написанный код при внешней "правильности" может исполняться в разы дольше, чем написанный оптимально для его структуры. |
|
|
|
11.3.2012, 20:55
Сообщение
#91
|
|
![]() посіпака Хунти Группа: Мод Сообщений: 20029 Регистрация: 21.11.2009 Из: Vinnitsa Пользователь №: 11 |
Да выбор вообще отдельная песня, особенно когда последнее слово не за разработчиком... блин, пардон, вырвалось.
Бывает, что и выбирать-то приходится из плохого и совсем хренового, типа как президентов - ибо в цене или площади сверху ограничили... вот тебе 90 центов и 30 кв.мм., крутись как хочешь. |
|
|
|
11.3.2012, 22:42
Сообщение
#92
|
|
![]() ДИКТАТОР Группа: Мод Сообщений: 23814 Регистрация: 20.11.2009 Из: Житомир Пользователь №: 3 |
Да выбор вообще отдельная песня, особенно когда последнее слово не за разработчиком... блин, пардон, вырвалось. Бывает, что и выбирать-то приходится из плохого и совсем хренового, типа как президентов - ибо в цене или площади сверху ограничили... вот тебе 90 центов и 30 кв.мм., крутись как хочешь. Видывал обратную ситуацию - разработчик очень гордился умением в каких-то там полкилобайта или один впихнуть почти все, ну все не получалось но как-то там работало. Все это стоило уже дороже чем новые камни, заморозило весь прогресс на фирме, убив фактически данное направление — нельзя было ничего более модифицировать ... Ну и несмотря на просьбы руководства, продолжал гордиться. Кажется, сейчас вот только немного взгляд потух у него, робким стал... Но это когда уже объемы упали вниз до 10% от изначальных... |
|
|
|
11.3.2012, 22:52
Сообщение
#93
|
|
![]() сундук ![]() ![]() ![]() Группа: Пользователи Сообщений: 4043 Регистрация: 21.11.2009 Из: Ростов-на Дону Пользователь №: 15 |
Видывал обратную ситуацию - разработчик очень гордился умением в каких-то там полкилобайта или один впихнуть почти все, ну все не получалось но как-то там работало. Все это стоило уже дороже чем новые камни, заморозило весь прогресс на фирме, убив фактически данное направление — нельзя было ничего более модифицировать ... Ну и несмотря на просьбы руководства, продолжал гордиться. Кажется, сейчас вот только немного взгляд потух у него, робким стал... Но это когда уже объемы упали вниз до 10% от изначальных... Это связано с нежеланием осваивать чего-то нового. Приблизительно, как у меня. Но у меня еще есть резерв - тот же PIC32, к примеру. Потому как бесплатной среды разработки от ARM-а не дождешься. |
|
|
|
12.3.2012, 5:04
Сообщение
#94
|
|
![]() Adept ![]() ![]() ![]() Группа: Пользователи Сообщений: 522 Регистрация: 20.4.2011 Из: Novosibirsk Пользователь №: 346 |
Что дает это знание разработчику? Очень просто. Когда я знаю, что процессор сделан по фон Нейману, то это означает, что у него однотактовые инструкции могут быть только регистровыми, а любое обращение в память неизбежно потянет дополнительные такты. С Гарвардом же ясно, что и обращения в память могут тоже быть однотактовыми. Отсюда и понятно, что даёт тот или иной процессор в плане производительности на интенсивных операциях с памятью. Скажем, если для мелкого МК мне это без разницы, поэтому спокойно ставлю MSP430, простой и внятный, то в проекте, где у меня видеобуфера идут в обработку, быстрая работа с памятью выходит на лидирующие места, поэтому тут однозначно нужен Гарвард - например, Blackfin. И очень важно для меня то, что я понимаю, почему так, а не иначе. Вот что даёт это знание разработчику. |
|
|
|
| Гость_MrYuran_* |
12.3.2012, 5:29
Сообщение
#95
|
|
Гости |
|
|
|
|
| Гость_MrYuran_* |
12.3.2012, 9:55
Сообщение
#96
|
|
Гости |
М3 тоже становятся дешёвыми, не спорю. Но послушайте Харбингера, который даже бакс с проца экономит. Имеет право. Возможно штампует приличными партиями. Вообще, если у кого-то есть информация, что М3 дешевле или имеет почти такую же стоимость (+20%) как М0 у одинакового производителя с примерно одинаковой периферией и кол-вом выводов, то любопытно было бы узнать эту информацию. M0 кроме как у филипков вроде бы ни у кого нету. Миландр вроде как собирался. Есть ещё Zero Gecko от Energy Micro. А М3 - вот: Цитата STM32F100C8T6B Замена Pin-to-Pin равноценная для STM32F100C8T6 (ST) . LQFP48 Микроконтроллер: ARM Cortex-M3 32-bit, Flash: 64K, RAM: 7.875K, UART: 3, АЦП: 16 x 12bit (1MSPS), ЦАП: 2 x 12bit, ШИМ: 18 x 16bit. Подробнее о характеристиках и доступности товара в описании: описание 1,485 $ 1,485 $ 1,485 $ да Это в компэле. А есть вот: Цитата ST STM32F100C6T6B 61,8 руб. 40,18 руб. 36,94 руб. да Порядок цен сопоставим. А вот потребление - уже нет. Особенно у STM. Жрут как лошади. |
|
|
|
12.3.2012, 16:50
Сообщение
#97
|
|
![]() сундук ![]() ![]() ![]() Группа: Пользователи Сообщений: 4043 Регистрация: 21.11.2009 Из: Ростов-на Дону Пользователь №: 15 |
Очень просто. Когда я знаю, что процессор сделан по фон Нейману, то это означает, что у него однотактовые инструкции могут быть только регистровыми, а любое обращение в память неизбежно потянет дополнительные такты. С Гарвардом же ясно, что и обращения в память могут тоже быть однотактовыми. Отсюда и понятно, что даёт тот или иной процессор в плане производительности на интенсивных операциях с памятью. Скажем, если для мелкого МК мне это без разницы, поэтому спокойно ставлю MSP430, простой и внятный, то в проекте, где у меня видеобуфера идут в обработку, быстрая работа с памятью выходит на лидирующие места, поэтому тут однозначно нужен Гарвард - например, Blackfin. И очень важно для меня то, что я понимаю, почему так, а не иначе. Вот что даёт это знание разработчику. В этом случае достаточно знать, что имеешь дело с параллельным доступом к данным и командам. Или нет. В зависимости от МК. А уж как это называется - дело сто пятое. А с одношинными МК никогда дела и не имел. Микрочип, кстати, это дело в базовых прокламанках описывает без всякой надуманной терминологии. |
|
|
|
13.3.2012, 9:15
Сообщение
#98
|
|
![]() посіпака Хунти Группа: Мод Сообщений: 20029 Регистрация: 21.11.2009 Из: Vinnitsa Пользователь №: 11 |
|
|
|
|
| Гость_MrYuran_* |
13.3.2012, 10:13
Сообщение
#99
|
|
Гости |
|
|
|
|
13.3.2012, 14:10
Сообщение
#100
|
|
![]() Adept ![]() ![]() ![]() Группа: Пользователи Сообщений: 522 Регистрация: 20.4.2011 Из: Novosibirsk Пользователь №: 346 |
|
|
|
|
![]() ![]() |
| Текстовая версия | Сейчас: 21.3.2026, 7:03 |