Перейти к содержанию
    

Cortex-M3. Где разместить память на System bus или Icode/Dcode

Из ядра Cortex-M3 выходят три шины System bus, Icode,Dcode.

При этом System bus является объединением Icode,Dcode внутри ядра.

 

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

При этом в реализованных процессорах этот блок в основном размещают после объединения Icode,Dcode.

 

Кто знаком какая реализация блока памяти удобней и правильней?

На System bus или на Icode,Dcode?

 

При этом на Icode,Dcode будет находиться ROM и небольшая память инструкций.

Основная память преимущественно будет использоваться для данных.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

При этом System bus является объединением Icode,Dcode внутри ядра.

Где это сказано? Ересь, ИМХО.

 

Декларируется, что лучше размешать основной большой блок памяти на шине System bus.

Кем декларируется? Где?

 

Кто знаком какая реализация блока памяти удобней и правильней?

На System bus или на Icode,Dcode?

Советую почитать Cortex-M3 Technical Reference Manual, разделы 14.3, 14.4, 14.5 (ICode bus interface, DCode bus interface, System interface). Я думаю, большинство вопросов сразу отпадёт. Кстати, там же написано, что выполнение кода через System interface будет в разы медленнее, чем через ICode bus.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Где это сказано? Ересь, ИМХО.

Это следует из логики, что из ядра процессора кортекса выходит только две шины: инструкций и данных.

А эта шина System и то и другое.

 

System interface

Instruction fetches, and data and debug accesses, to address ranges 0x20000000 to 0xDFFFFFFF and

0xE0100000 to 0xFFFFFFFF are performed over this 32-bit AHB-Lite bus.

Кем декларируется? Где?

 

The Definitive Guideto the ARM ® Cortex-M3

6.6 Typical Connections

The main SRAM block should be connected through the system bus interface, using the SRAM

memory address region. This allows data access to be carried out at the same time as instruction access.

 

А также тут

Cortex-M3 DevicesGeneric User Guide

 

2.2.3 Behavior of memory accesses

Executable region for data. You can also put code here.This region includes bit band and bit band alias areas,

 

 

Советую почитать Cortex-M3 Technical Reference Manual, разделы 14.3, 14.4, 14.5 (ICode bus interface, DCode bus interface, System interface). Я думаю, большинство вопросов сразу отпадёт. Кстати, там же написано, что выполнение кода через System interface будет в разы медленнее, чем через ICode bus.

Там написано, что из-за "registered" (AHB-AHB bridge?) задержка при чтении инструкция на System bus на 1Т больше.

 

14.5.6 Pipelined instruction fetches

To provide a clean timing interface on the System bus, instruction and vector fetch

requests to this bus are registered. This results in an additional cycle of latency because

instructions fetched from the System bus take two cycles.

 

Те это только в 2 раза медленее.

И то это написно в предыдущей версии Revision: r1p1

 

В текущей последней версии Revision r2p1 я таких строк не нашел, может и нету там уже этой задержки в 1Т.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Из ядра Cortex-M3 выходят три шины System bus, Icode,Dcode.

При этом System bus является объединением Icode,Dcode внутри ядра.

 

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

При этом в реализованных процессорах этот блок в основном размещают после объединения Icode,Dcode.

 

Кто знаком какая реализация блока памяти удобней и правильней?

На System bus или на Icode,Dcode?

 

При этом на Icode,Dcode будет находиться ROM и небольшая память инструкций.

Основная память преимущественно будет использоваться для данных.

 

 

Такое ощущение что вся Россия закупилась у АРМа ядрами :)

 

Обращения ядра по адресам от 0x0000_0000 до 0x1FFF_FFFF будут транслироваться на шины I и D. Обращения по адресам 0x2000_0000 и до 0xE000_0000 (???) транслируются на S шину. Выше 0xE000_0000 (???) транслируются во внутреней периферийной шине. По I шине идет выборка инструкций, по D шине операндов. По S могут извлекаться и инструкции и данные.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...