|
|
  |
STR-E912: 19MIPS на 96 МГц?, Тормоз.... или |
|
|
|
Oct 26 2007, 06:20
|
Участник

Группа: Свой
Сообщений: 45
Регистрация: 19-04-07
Пользователь №: 27 172

|
Наверное не 19, а 38 MIPS, тк цикл вроде из 2 операций. JTAG на скорость выполнения не влияет, он лишь дает небольшую задержку на чтение данных в отладчик при запуске/останове. Все дело в медленном чтении из Flash, для АРМов это обычно. Попробуйте выполнять то же самое из RAM
|
|
|
|
|
Oct 26 2007, 07:57
|

Частый гость
 
Группа: Участник
Сообщений: 128
Регистрация: 6-06-06
Из: Москва
Пользователь №: 17 793

|
Цитата(Calculator @ Oct 26 2007, 10:20)  Все дело в медленном чтении из Flash, для АРМов это обычно. Попробуйте выполнять то же самое из RAM обычно, но не для всех. в LPC2000 такая штука показала бы в районе 50-54MIPS на 60 МГц.
--------------------
wbw shahr
|
|
|
|
|
Oct 27 2007, 21:22
|
Местный
  
Группа: Участник
Сообщений: 273
Регистрация: 3-11-05
Пользователь №: 10 442

|
Цитата(Dron_Gus @ Oct 27 2007, 13:08)  Я же Вам предложил посчитать необходимое количество тактов на выполнение Вашего цикла. Найдите документ ARM instruction set и посмотрите сколько тактов требует инструкция mov, если операнд - pc, а требует она три такта. Итого Ваш цикл требует 5 тактов. 19 * 5 = 95. На линейном коде (без переходов) это и будет 95 MIPS. Спасибо. Действительно, при коде: b _LOOP_MY asm("add r7, r7, #1"); asm("add r7, r7, #1"); asm("add r7, r7, #1"); asm("add r7, r7, #1"); asm("add r7, r7, #1"); asm("add r7, r7, #1"); asm("add r7, r7, #1"); asm("add r7, r7, #1"); asm("add r7, r7, #1"); ... asm("add r7, r7, #1"); asm("add r7, r7, #1"); asm("add r7, r7, #1"); asm("add r7, r7, #1"); asm("add r7, r7, #1"); asm("add r7, r7, #1"); asm("add r7, r7, #1"); asm("add r7, r7, #1"); asm("add r7, r7, #1"); b _LOOP_MY в r7 = ~48 000 000... но вот где же преславутые однотактные комманды....???
|
|
|
|
|
Oct 27 2007, 22:52
|
Местный
  
Группа: Участник
Сообщений: 273
Регистрация: 3-11-05
Пользователь №: 10 442

|
Цитата(SimpleSoft @ Oct 28 2007, 00:22)  Спасибо. Действительно, при коде:
b _LOOP_MY asm("add r7, r7, #1"); asm("add r7, r7, #1"); asm("add r7, r7, #1"); asm("add r7, r7, #1"); asm("add r7, r7, #1"); asm("add r7, r7, #1"); asm("add r7, r7, #1"); asm("add r7, r7, #1"); asm("add r7, r7, #1"); ... asm("add r7, r7, #1"); asm("add r7, r7, #1"); asm("add r7, r7, #1"); asm("add r7, r7, #1"); asm("add r7, r7, #1"); asm("add r7, r7, #1"); asm("add r7, r7, #1"); asm("add r7, r7, #1"); asm("add r7, r7, #1"); b _LOOP_MY
в r7 = ~48 000 000...
но вот где же преславутые однотактные комманды....??? отвечу сам) а вот они! --------------------------------------- прочитал тут *http://electronix.ru/forum/lofiversion/index.php/t32933.html что Flash Memory Interface Clock 96 MHz и FLASH read with 2 wait states FLASH Bus clock speed >66 MHz у меня при FMI_Config(FMI_READ_WAIT_STATE_2, FMI_WRITE_WAIT_STATE_1, FMI_PWD_ENABLE,\ FMI_LVD_ENABLE, FMI_FREQ_HIGH); система вешается намертво.  Удалось получить 96MIPS при работе из SRAM при таких параметрах: MCLK = fPLL = 96MHz RCLKDIV = 1 AHBDIV = 1 APBDIV = 1 BRCLK=MCLK SCU->PCR0.WSR_DTCM = 0 SCU->SCR0.WSR_AHB = 0 Пошел дальше, провёл эксперимент: MCLK = fPLL = 120MHz результат -> 120 MIPS. Дальше не пробовал, смысла не вижу. Спасибо кто помогал.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|