реклама на сайте
подробности

 
 
> По скорости ядра STR912, восемь операторов на ассемблере за 1.6мкс?!!
HardJoker
сообщение Jun 13 2007, 15:47
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 995
Регистрация: 3-06-05
Пользователь №: 5 713



Есть main(), фактически из одного бесконечного цикла для проверки производительности ядра STR912FW44. Среда - IAR4.40:

u8 TMP0 = 0;

while(1)
{
if (Tick == 0)
{
GPIO_WriteBit(GPIO0, GPIO_Pin_0, Bit_RESET);
Tick = 1;
}
else
{
GPIO_WriteBit(GPIO0, GPIO_Pin_0, Bit_SET);
Tick = 0;
}
}

Время выполнения 1,6мкс. Ядро тактируется 96MHz через PLL. Память flash конфигурируется с двумя тактами ожиданмия и тактируется 48MHz

//FMI Waite States
FMI_Config(FMI_READ_WAIT_STATE_2, FMI_WRITE_WAIT_STATE_0, FMI_PWD_ENABLE,\
FMI_LVD_ENABLE, FMI_FREQ_HIGH);


В симуляторе при выключенной оптимизации по скорости все действия занимают 8-мь ассемблерных команд. С учетом медленного доступа к внутренней flash (не более 24MHz) на выполнение должно уйти не более 320ns. Измеренное значение почти в пять раз больше. Где может теряеться вычислительный ресурс?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
MALLOY2
сообщение Jun 18 2007, 08:15
Сообщение #2


Знающий
****

Группа: Validating
Сообщений: 838
Регистрация: 31-01-05
Пользователь №: 2 317



Цитата
Конвейер в STR91x - это не атрибут ядра, а прокладка между ядром и FLASH, при работе из RAM он никакого влияния не имеет. И конвейер, кстати, можно отключить, хотя не советую.

Конвейер это неотъемлемая часть ядра, точнее это и есть ядро. в ARM966E-S он 5ти ступенчатый и состоит из следующих фаз - Fetch,Decode,Execute,Memory Writeback. Он неможет не изменятся не выключатся. Вы наверное путаете конвейер с так называемым "Pre-Fetch Que and Branch Cache" это ускоритель памяти и это разные вещи.

Код
Также STR91x можно разогнать до 130 МГц. Во время тестирования на этой частоте сбоев обнаружить не удалось, даже АЦП работал с прежней точностью.

Этого я вам не советую делать, будут большие проблемы с серией smile.gif, исключения составляют те устройства которые сделаны для дома для семьи smile.gif.


По поводу выполнения из ОЗУ, ARM9 и ARM7 построены по разной архитектуре и имеет разный конвейер ARM7 имеет 3х ступенчатый, ARM9 5ти, но это не самое главное. Самое главное то что ARM9 Имеет разные шины для данных и кода, это позволяет при записи данных выбирать следующую команду не останавливая при этом конвейер (есть конечно некоторые исключения ), по этому стоит задуматься откуда выполнять код. Да из флеша код выполняется медленней но при этом при записи/чтении конвейер не ждет выполнения операции что бы выбрать следующую, и следовательно конвейер работает без остановки. Если бы память в STR , была 2х портовая тогда это бы не влияло на производительность. По это выводы такие если функция имеет мало обращений к памяти данных она будет быстрее из ОЗУ работать, если она имеет много обращений скажем это КИХ фильтр, то тут уже не будет преимущества, и может даже еще медленней будет.


Цитата
Да, возможно, например в AVR32 можно играть длинной (глубиной) конвейера.


Не могли бы вы конкретнее сказать где об этом написано, что то я не нашел только что листая мануал.


P.S. конвейер "сборочная линия" - цепочка параллельно работающих исполнительных устройств центрального процессора, на которой обработка команд разбивается на ряд небольших шагов, стадий или ступеней, выполняемых за один такт. Конвейер организован таким образом, что выходные данные одного устройства поступают на вход другого. Число стадий называется длинной конвейера. Использование конвейера позволяет начать исполнение следующей машинной команды в одном блоке до завершения предыдущей, т.е. с перекрытием по времени. Какова длина конвейера, столько команд одновременно он и может обрабатывать. В современных процессорах конвейеры имеют длину до 20 стадий ( Pentium 4). Однако параллельная обработка команд возможна не всегда, так как в программе часто встречаются команды условных переходов и ситуации, когда для исполнения команды требуется результат предшествующей команды. В таких случаях, чтобы предотвратить перезагрузку конвейера ( pipeline break ) применяются более сложные процессы: упреждающая обработка (предсказание переходов) или изменение порядка исполнения команд
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Jun 18 2007, 19:41
Сообщение #3


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



По моему из контекта обсуждения достаточно ясно, что речь шла о конвеере команд считанных из FLASH, а не о ядерном.
Конвеер самого ARM-а мало кому интересен, ибо как правильно заметили он не регулируем.
Но вы упустили нюанс, что за ядром стоит реализация шины памяти в исполнении ST о которой вы ничего не знаете, и соответственно ничего теоретически предположить о ее быстродействии не можете.
Не забывайте также об имеющемся арбитре шин TСM и AHB. Даже шина TCM как не покажется странным не обеспечивает доступ к памяти за такт.
Так что верить можно только натурным испытаниям.


Цитата(MALLOY2 @ Jun 18 2007, 11:45) *
Конвейер это неотъемлемая часть ядра, точнее это и есть ядро. в ARM966E-S он 5ти ступенчатый и состоит из следующих фаз - Fetch,Decode,Execute,Memory Writeback. Он неможет не изменятся не выключатся. Вы наверное путаете конвейер с так называемым "Pre-Fetch Que and Branch Cache" это ускоритель памяти и это разные вещи.
Go to the top of the page
 
+Quote Post
HardJoker
сообщение Jun 19 2007, 07:21
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 995
Регистрация: 3-06-05
Пользователь №: 5 713



Цитата(AlexandrY @ Jun 18 2007, 23:41) *
По моему из контекта обсуждения достаточно ясно, что речь шла о конвеере команд считанных из FLASH, а не о ядерном.
Конвеер самого ARM-а мало кому интересен, ибо как правильно заметили он не регулируем.
Но вы упустили нюанс, что за ядром стоит реализация шины памяти в исполнении ST о которой вы ничего не знаете, и соответственно ничего теоретически предположить о ее быстродействии не можете.
Не забывайте также об имеющемся арбитре шин TСM и AHB. Даже шина TCM как не покажется странным не обеспечивает доступ к памяти за такт.
Так что верить можно только натурным испытаниям.


Не хочется плодить новую тему, поэтому спрошу снова здесь. Я пользуюсь библиотеками от IAR-WB 4.40 для STR912. Дополнять, а тем более переписывать их нет никакой возможности. Появилась жизненная необходимость назначить несколько (внутренних - 1, внешних - 3) прерываний вложенными. Как это сделать в рамках того инструментария, который имеется в IDE? Прежде всего имеется ввиду библиотека 91x_it.c с болванками под обработчики прерывания. Примеров на STR91x по вложенным прерываниям я пока не нашел.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- HardJoker   По скорости ядра STR912   Jun 13 2007, 15:47
- - etoja   Биты ввода-вывода не могут переключаться с большой...   Jun 14 2007, 02:59
|- - HardJoker   Цитата(etoja @ Jun 14 2007, 06:59) Биты в...   Jun 14 2007, 08:05
|- - MALLOY2   Цитата(HardJoker @ Jun 14 2007, 12:05) Вс...   Jun 14 2007, 09:53
|- - bzx   2 MALLOY2 Всё правильно, но, возможно, что HardJok...   Jun 14 2007, 10:27
|- - HardJoker   Цитата(MALLOY2 @ Jun 14 2007, 13:53) Это ...   Jun 14 2007, 10:55
- - MALLOY2   Так зачем тогда такой умный код ? Почему бы не т...   Jun 14 2007, 10:36
- - MALLOY2   ЦитатаУвы, интересует именно выполнение короткой п...   Jun 14 2007, 11:02
|- - HardJoker   Цитата(MALLOY2 @ Jun 14 2007, 15:02) Это ...   Jun 14 2007, 11:39
- - MALLOY2   Конвеер это начало начал, благадаря ему повышается...   Jun 14 2007, 11:48
|- - HardJoker   Цитата(MALLOY2 @ Jun 14 2007, 15:48) Конв...   Jun 14 2007, 12:01
- - MALLOY2   Разве такое возможно ? невстречал ниодного ядра с ...   Jun 14 2007, 12:11
|- - HardJoker   Цитата(MALLOY2 @ Jun 14 2007, 16:11) Разв...   Jun 14 2007, 12:15
|- - bzx   Цитата(MALLOY2 @ Jun 14 2007, 16:11) Разв...   Jun 15 2007, 05:15
- - AlexandrY   Ну сперва убедитесь, что у вас выставлены все наст...   Jun 14 2007, 16:28
|- - HardJoker   Цитата(AlexandrY @ Jun 14 2007, 20:28) Ну...   Jun 14 2007, 18:20
|- - AlexandrY   Вот здесь найдете проекты для разных компиляторов ...   Jun 14 2007, 20:35
|- - AlexandrY   Вот обработчик с разрешением вложенных прерываний....   Jun 21 2007, 13:32
- - KonstantinT   Ну и мои 5 коп, сравнивал Гертцеля из флеша и ОЗУ ...   Jun 18 2007, 19:20
- - MALLOY2   ЦитатаКонвеер самого ARM-а мало кому интересен П...   Jun 19 2007, 08:57


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 00:11
Рейтинг@Mail.ru


Страница сгенерированна за 0.01417 секунд с 7
ELECTRONIX ©2004-2016