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

 
 
> Быстрое вычисление CRC-8, Потенциальные возможности не табличных методов
=GM=
сообщение Sep 1 2006, 12:32
Сообщение #1


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Недавно поднимался вопрос об оптимизации сишного кода, в частности был представлен такой код (немного отрихтовал для приличия)
Цитата(µµC @ Aug 25 2006, 14:26) *
Приятный алгоритм, возьму на вооружение. IAR - 515 циклов.
Код
U8 crc8_3(U8 *buff, U8 num)
{
U8 i, crc=0;
do
{
  crc^=*buff++;
   i=8;
   do
   {  
     if(crc&0x01)
     {
       crc>>=1;
       crc^=0x8C;
     }
     else crc>>=1;
   }
  } while(--i);  
} while(--num);
return crc;
}

Для семи байтов ИАР-код выполняется за 525 циклов, т.е. вгрубе 75 циклов на байт.
У меня весь ASM-код (не табличный) для 7 байт выполняется за 80 циклов. Может я чего не понимаю, или полиномы неправильные?


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
aaarrr
сообщение Sep 4 2006, 08:00
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(_Bill @ Sep 4 2006, 11:41) *
Без всякого разжигания религиозной розни хочу заметить, что обращение к таблицам выполняется посредством инструкций call - retlw, в результате чего время выполнения функции существенно увеличивается.

В свою очередь замечу, что в AVR обращение к таблицам производится только с использованием регистровой пары Z, что влечет значительные накладные расходы в том случае, если таблица пересекает границу 256 байт.

Цитата(_Bill @ Sep 4 2006, 11:41) *
Другой неприятностью является необходимость использования стека, размер которого в PIC16 очень небольшой.

Очень небольшой, но вполне достаточный для построения любой разумной программы.
Go to the top of the page
 
+Quote Post
_Bill
сообщение Sep 4 2006, 10:22
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 416
Регистрация: 18-04-06
Из: Челябинск
Пользователь №: 16 219



Цитата(aaarrr @ Sep 4 2006, 11:00) *
Цитата(_Bill @ Sep 4 2006, 11:41) *

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

В свою очередь замечу, что в AVR обращение к таблицам производится только с использованием регистровой пары Z, что влечет значительные накладные расходы в том случае, если таблица пересекает границу 256 байт.

Цитата(_Bill @ Sep 4 2006, 11:41) *
Другой неприятностью является необходимость использования стека, размер которого в PIC16 очень небольшой.

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

Накладные расходы невелики и не зависят от расположения таблицы. В AVR отсутствует понятие страницы памяти. Но я говорю, в первую очередь, об увеличении скорости вычислений. А насчет стека могу сказать, что в PIC16 его необходимо расходовать очень экономно. Особенно при использовании прерываний. Поэтому при программировании на PIC16 я старался использовать подпрограммы лишь там, где это действительно было необходимо, например, при доступе к таблицам. В других случаях там, где можно было бы использовать подпрограммы, мне приходилось вставлять фрагменты одного и того же кода. Это неизбежно приводило к разрастанию программного кода. И тогда появлялись другие проблемы, связанные с ипользованием нескольких страниц программной памяти. Ну, да Вам эти проблемы известны не хуже меня.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- =GM=   Быстрое вычисление CRC-8   Sep 1 2006, 12:32
- - IgorKossak   =GM=, почитайте внимательно о методах оптимизации ...   Sep 1 2006, 12:54
|- - =GM=   Цитата(IgorKossak @ Sep 1 2006, 11:54) =G...   Sep 1 2006, 13:59
|- - singlskv   Цитата(=GM= @ Sep 1 2006, 17:59) Цитата(I...   Sep 1 2006, 15:11
- - pitt   Код для onewire от Texas Instruments avr-gcc. Пере...   Sep 1 2006, 12:56
- - aaarrr   Цитата(=GM= @ Sep 1 2006, 16:32) У меня в...   Sep 1 2006, 14:08
|- - =GM=   Цитата(aaarrr @ Sep 1 2006, 13:08) Цитата...   Sep 1 2006, 15:17
|- - singlskv   Цитата(=GM= @ Sep 1 2006, 19:17) Цитата(a...   Sep 1 2006, 15:21
|- - =GM=   Цитата(singlskv @ Sep 1 2006, 14:21) Пере...   Sep 1 2006, 16:33
|- - singlskv   Цитата(=GM= @ Sep 1 2006, 20:33) Но это т...   Sep 1 2006, 20:37
|- - =GM=   Цитата(singlskv @ Sep 1 2006, 19:37) Ну н...   Sep 3 2006, 08:55
|- - Oldring   Цитата(=GM= @ Sep 3 2006, 12:55) Код sbrc...   Sep 3 2006, 10:16
||- - pitt   Цитата(Oldring @ Sep 3 2006, 06:16) Ускор...   Sep 3 2006, 12:23
|||- - ivstech   Вот мой код расчета CRC16, не скажу, что я придум...   Sep 4 2006, 05:11
|||- - Oldring   Цитата(ivstech @ Sep 4 2006, 09:11) Вот м...   Sep 4 2006, 11:07
||- - =GM=   Цитата(Oldring @ Sep 3 2006, 09:16) Цитат...   Sep 3 2006, 20:31
||- - Oldring   Цитата(=GM= @ Sep 4 2006, 00:31) Oldring,...   Sep 3 2006, 20:44
||- - singlskv   Цитата(Oldring @ Sep 4 2006, 00:44) Цитат...   Sep 3 2006, 21:28
||- - =GM=   Цитата(Oldring @ Sep 4 2006, 00:44) Это т...   Sep 5 2006, 12:28
|- - _artem_   Цитата(=GM= @ Sep 3 2006, 11:55) Цитата(s...   Sep 3 2006, 16:07
- - pitt   Чего я не понял, так это мы о скорости говорим или...   Sep 1 2006, 17:28
|- - singlskv   Цитата(pitt @ Sep 1 2006, 21:28) Или цена...   Sep 1 2006, 20:10
- - aaarrr   Цитата(_artem_ @ Sep 3 2006, 20:07) =GM=,...   Sep 3 2006, 17:52
|- - Oldring   Цитата(aaarrr @ Sep 3 2006, 21:52) А если...   Sep 3 2006, 19:13
|- - _Bill   Цитата(aaarrr @ Sep 3 2006, 20:52) В поря...   Sep 4 2006, 07:41
- - Oldring   Для тех кто интересуется добавлю, что рассматривае...   Sep 3 2006, 22:22
- - aaarrr   Цитата(_Bill @ Sep 4 2006, 14:22) Накладн...   Sep 4 2006, 11:31
|- - Oldring   Цитата(aaarrr @ Sep 4 2006, 15:31) Цитата...   Sep 4 2006, 11:51
|- - _Bill   Цитата(aaarrr @ Sep 4 2006, 14:31) Как эт...   Sep 4 2006, 12:33
- - aaarrr   Цитата(Oldring @ Sep 4 2006, 15:51) Завис...   Sep 4 2006, 12:09
- - aaarrr   Цитата(_Bill @ Sep 4 2006, 16:33) Поэтому...   Sep 4 2006, 13:06
|- - _Bill   Цитата(aaarrr @ Sep 4 2006, 16:06) Цитата...   Sep 4 2006, 13:13
- - Smen   Дяденьки, подскажите, плиз! Если у меня прини...   Jul 1 2013, 13:37
- - zombi   Цитата(Smen @ Jul 1 2013, 16:37) какой ал...   Jul 1 2013, 19:01
- - Smen   Цитата(zombi @ Jul 1 2013, 23:01) Считайт...   Jul 2 2013, 06:02


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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 21:02
Рейтинг@Mail.ru


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