Arlleex 190 29 июля, 2022 Опубликовано 29 июля, 2022 · Жалоба @dimka76, понял, спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 245 29 июля, 2022 Опубликовано 29 июля, 2022 · Жалоба В 29.07.2022 в 13:16, dimka76 сказал: В модуле Reset and Clock (RCM) (для STM32 это RCC) добавили бит включения тактирования FPU - RCM->AHB2CLKEN, бит с номером 1. Как такое может быть? Что-то Вы путаете... FPU в Cortex-M - это часть процессора, а не отдельный узел. Это просто набор команд для работы с определённым форматом чисел. Как можно отключить тактирование одной/N команд CPU??? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 63 29 июля, 2022 Опубликовано 29 июля, 2022 · Жалоба On 7/29/2022 at 2:56 PM, jcxz said: Как такое может быть? Что-то Вы путаете... FPU в Cortex-M - это часть процессора, а не отдельный узел. Это просто набор команд для работы с определённым форматом чисел. Как можно отключить тактирование одной/N команд CPU??? И отдельно описания этого бита в тексте User Manual не приводится (или я плохо ищу). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 245 29 июля, 2022 Опубликовано 29 июля, 2022 · Жалоба В 29.07.2022 в 15:06, dimka76 сказал: И отдельно описания этого бита в тексте User Manual не приводится (или я плохо ищу). А если его отключить - перестают выполняться команды FPU? А процессор что при этом делает, встретив такую команду? Останавливается и стоит? ЗЫ: Просто тупо - баг в мануле. Очепятка. Или безграмотный китец при передирании оригинального мануала, что-то недопонял. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 63 29 июля, 2022 Опубликовано 29 июля, 2022 · Жалоба On 7/29/2022 at 3:13 PM, jcxz said: А если его отключить - перестают выполняться команды FPU? А процессор что при этом делает, встретив такую команду? Останавливается и стоит? ЗЫ: Просто тупо - баг в мануле. Очепятка. Или безграмотный китец при передирании оригинального мануала, что-то недопонял. Как я заметил, он вообще на работу не влияет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 245 29 июля, 2022 Опубликовано 29 июля, 2022 · Жалоба Китаец встретил неизвестную ему аббревиатуру. Подходящего для неё иероглифа он не знал. А самый близкий был - иероглиф FPU. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 190 29 июля, 2022 Опубликовано 29 июля, 2022 · Жалоба 1 час назад, jcxz сказал: FPU в Cortex-M - это часть процессора, а не отдельный узел. FPU в Cortex-M - это в первую очередь сопроцессор, и как минимум факт наличия или отсутствия его в Cortex-M4(-F) указывает на то, что это, все-таки, отдельный узел, хоть и реализован очень тесно связанным с CPU. Цитата Как можно отключить тактирование одной/N команд CPU??? А что мешает? Вас же не смущает, что перед началом работы с FPU нужно включить CP10/CP11 в регистрах CPU? Что мешало китайцам протащить HCLK к FPU через ключ, управляемый битом в регистре управления, который рулит, в том числе, и клоками периферийных узлов? Останов тактирования FPU, возможно, был бы полезен для сокращения энергопотребления, если МК на базе M4F хочется использовать без плавучки. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 63 29 июля, 2022 Опубликовано 29 июля, 2022 · Жалоба On 7/29/2022 at 4:42 PM, Arlleex said: Вас же не смущает, что перед началом работы с FPU нужно включить CP10/CP11 в регистрах CPU? Это не включение/выключение, это настройка доступа Quote B3.2.20 Coprocessor Access Control Register, CPACR The CPACR characteristics are: Purpose Specifies the access privileges for coprocessors. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 190 29 июля, 2022 Опубликовано 29 июля, 2022 · Жалоба 1 минуту назад, dimka76 сказал: Это не включение/выключение, это настройка доступа... Не суть, я имею ввиду то, что процессорные части не все сразу "готовы" к работе. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 245 29 июля, 2022 Опубликовано 29 июля, 2022 · Жалоба В 29.07.2022 в 16:42, Arlleex сказал: FPU в Cortex-M - это в первую очередь сопроцессор, и как минимум факт наличия или отсутствия его в Cortex-M4(-F) указывает на то, что это, все-таки, отдельный узел, хоть и реализован очень тесно связанным с CPU. В x86 FPU изначально был реализован именно как сопроцессор. Даже физически отдельный. Но даже когда x86 CPU и FPU слились в одном чипе, там всё равно оставались специальные команды в целочисленном ядре, для синхронизации работы с FPU (ожидание завершения операций FPU). Вот это - именно настоящий сопроцессор. Отдельно работающий. А в Cortex-M - это всего лишь один из узлов CPU. И параллельная работа CPU и FPU в Cortex-M тоже невозможна. В 29.07.2022 в 16:42, Arlleex сказал: А что мешает? Вас же не смущает, что перед началом работы с FPU нужно включить CP10/CP11 в регистрах CPU? Не смущает. Если так смотреть, то можно любой блок CPU назвать "отдельным узлом". Например - блок работы с невыровненными данными. И сказать, что биты управления CPU, включающие/отключающие fault-ы по невыровненному доступу - "битами отключения тактирования блока невыровненного доступа". В 29.07.2022 в 16:42, Arlleex сказал: Что мешало китайцам протащить HCLK к FPU через ключ, управляемый битом в регистре управления, который рулит, в том числе, и клоками периферийных узлов? Например то, что блок предвыборки команд, декодер команд - общие. И просто так "протащить" вряд-ли возможно. Пришлось бы ещё кучу ключей ставить для разделения работы всех этих блоков. В 29.07.2022 в 16:42, Arlleex сказал: Останов тактирования FPU, возможно, был бы полезен для сокращения энергопотребления, если МК на базе M4F хочется использовать без плавучки. Тогда нужны механизмы включения и отключения тактирования FPU (внутри процессора). А значит - нужно внесение изменений в ядро. А значит - это будет уже не Cortex-M. И скорей всего такие художества запрещены по условиям лицензии ARM. И хорошо! Ибо при такой доработке, скорей всего багов бы наделали больше, чем получили пользы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
tonyk_av 45 29 июля, 2022 Опубликовано 29 июля, 2022 (изменено) · Жалоба On 7/29/2022 at 7:45 PM, jcxz said: И скорей всего такие художества запрещены по условиям лицензии ARM. Не запрещены. Просто ARM за разрешение на внесение таких изменений берёт дополнительные деньги, продавая лицензию. У ARM несколько видов и уровней лицезирования. Например, Эппл купила самую дорогую, дающую право на использование только системы команд и возможности самостоятельной реализации алгоритмов исполнения. Поэтому Эппл по системе команд- это ARM, что делает его совместимым со всем инструментарием от ARM, но вот под капотом там совсем не ARM, хотя местами может на законных основаниях быть и ARM. Изменено 29 июля, 2022 пользователем tonyk_av Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 190 29 июля, 2022 Опубликовано 29 июля, 2022 · Жалоба 1 час назад, jcxz сказал: Тогда нужны механизмы включения и отключения тактирования FPU (внутри процессора). А значит - нужно внесение изменений в ядро... Само существование FPU в ядре опционально, я уж не говорю про какие-то ключи разрешения тактов. ARM лицензирует модель, а не конкретную реализацию, в которую нельзя лезть. Покупаешь лицензию, вдупляешь в исходный код и дорабатываешь под себя, по необходимости. Тем более у ARM-а в описании на архитектуру всяких implementation-defined настроек целый вагон с небольшим. Цитата А в Cortex-M - это всего лишь один из узлов CPU... Называть можно как угодно, тем не менее все указывает на то, что это именно обособленная горсть транзисторов на кристалле. Со своими входами/выходами, линиями прерываний и клоками. Поэтому категоричного запрета останавливать тактирование FPU не прослеживается. Цитата И параллельная работа CPU и FPU в Cortex-M тоже невозможна. А это как посмотреть. Согласно описанию на архитектуру ARMv7-M, Цитата A4.10 Coprocessor instructions Coprocessors execute the same instruction stream as the processor, ignoring non-coprocessor instructions and coprocessor instructions for other coprocessors. Coprocessor instructions that cannot be executed by any coprocessor hardware cause a UsageFault exception and indicate the reason as follows: • If the Coprocessor Access Register denies access to a coprocessor, the processor sets the UFSR.NOCP flag to 1 to indicate that the coprocessor does not exist. • If the coprocessor access is permitted but the instruction is unknown, the processor sets the UFSR.UNDEFINSTR flag to 1 to indicate that the instruction is UNDEFINED. Т.е. сопроцессор в данном случае декодирует только "свои" инструкции, но в силу того, что в Cortex-M4 лишь 1 исполнительный блок (в отличие, от, например, Cortex-M7), исполняемый поток обычных инструкций CPU и инструкций FPU становится единым, он не может распараллелиться. А в Cortex-M7 - может. А механизм сопроцессора там такой же, просто другая версия (которая поддерживает двойную точность). По этой причине в Cortex-M4 не нужны Цитата специальные команды в целочисленном ядре, для синхронизации работы с FPU (ожидание завершения операций FPU). потому что CPU будет ждать завершения исполнения команд FPU в конвейере, наравне с другими "своими" командами CPU. Поэтому логически декодеры вполне могут быть отдельными у FPU и CPU. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
tonyk_av 45 29 июля, 2022 Опубликовано 29 июля, 2022 · Жалоба On 7/29/2022 at 8:40 PM, Arlleex said: вдупляешь в исходный код и дорабатываешь под себя, по необходимости Нет. Чем больше хочешь внести изменений в код, тем дороже лицензия. Минимальная стоимость у лицензия, которая запрещает модификацию кода ARM, а разрешает только добавления к нему. On 7/29/2022 at 8:40 PM, Arlleex said: Тем более у ARM-а в описании на архитектуру всяких implementation-defined настроек целый вагон с небольшим. Вот-вот. Разрешены только те особенности, которые разрешает ARM. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 190 29 июля, 2022 Опубликовано 29 июля, 2022 · Жалоба 1 час назад, tonyk_av сказал: Вот-вот. Разрешены только те особенности, которые разрешает ARM. При этом ни у кого из нас нет корки Cortex-M4F (хоть даже закрытой, как, например, IP Cortex-M3 в Xilinx Vivado), чтобы посмотреть, чего там за клоки из этой корки торчат наружу. А то может оказаться, что там не один CORTEX_M4_HCLK заходит, а целая группа (а я как минимум уже 2 сигнала отдельной синхронизации знаю, о чем ARM даже сам пишет), среди которых и FPU_HCLK окажется, а мы тут обсуждаем и гадаем Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 190 29 июля, 2022 Опубликовано 29 июля, 2022 · Жалоба Итак, рассуждения рассуждениями, но суровая практика - это другое. Я выяснил, что за FPU у них там имеется в виду. Глянул я даташит на APM32F103 и на секунду прифигел, что у Cortex-M3 завалялся FPU Оказалось, всего лишь периферия, которая (как выше рассказывал jcxz) умеет молотить float-ы на заранее оговоренном количестве операций: сложение/вычитание, умножение, тангенсы и т.д. А в F4 перекочевало копипастом, видимо. Это объясняет ваапще все. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться