Об инструкции STM32 ARM Cortex M LDRB - PullRequest
2 голосов
/ 02 июля 2019

Я пытаюсь понять, что происходит физически на шине данных, когда STM32H7 (Cortex M7) выполняет инструкцию LDRB (для упрощения, если кэши отключены). Есть ли 32-битный доступ к памяти и 3 из 4 байтов удаляются? Зависит ли это от типа памяти? Если код выполняет четыре LDRB по последовательным адресам, как он сравнивается (с точки зрения количества циклов) с выполнением одного 32-битного LDR?

1 Ответ

2 голосов
/ 02 июля 2019

Cortex-M7 имеет 64-битный интерфейс AMBA4 AXI.

Это только часть ответа, поскольку эта шина данных где-то подключится к памяти STM32H7, но мы можем предположить, что память имеет интерфейс, который по крайней мере такой же широкий, как и шина. Контроллер памяти, скорее всего, будет считывать из памяти всю ширину (но, возможно, не с частотой ядра).

Считанные данные будут возвращены на шину, занимая канал считывания в течение любого количества циклов, которые требуется для рукопожатия. Для чтения байтов возвращаемые данные должны быть байтами.

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

В первом приближении вы можете загрузить 8 32-битных регистров за то же количество циклов, что и при выполнении 4-х байтовых чтений, поскольку существует 64-битный AXI. На самом деле, это может быть быстрее, потому что вы можете использовать одну инструкцию LDM вместо 4 LDRB, и выборки команд будут использовать одну и ту же шину.

Следует отметить, что хранилища потенциально более сложные , поскольку сложнее построить логику игнорирования данных частичной записи и довольно легко объединить записи.

(Это «общий» ответ, а не отражение микроархитектуры M7, вам нужно провести собственный сравнительный анализ, чтобы понять подробные значения вашего вопроса).

...