Берем простой, хотя и нетривиальный си-шный код, и сравниваем количество получившихся машинных команд. Компилятор GCC 4.1.2, оптимизация -O1. Исходный код такой:
unsigned long rot13_hash (unsigned char *str, unsigned int len)
{
unsigned long hash = 0;
while (len-- > 0) {
hash += *str++;
hash -= (hash << 13) | (hash >> 19);
}
return hash;
}
Результаты:
Архитектура | Команд в цикле | Всего команд |
---|
ARM | 6 | 13 |
Thumb | 8 | 17 |
MIPS32 | 9 | 17 |
Intel 386 | 9 | 25 |
MIPS16 | 10 | 17 |
Blackfin | 11 | 22 |
Для MIPS и Blackfin компилятор не догадался заменить два арифметических сдвига на один циклический. Предположим, мы исправили компилятор. Тогда получится так:
Архитектура | Команд в цикле | Всего команд |
---|
ARM | 6 | 13 |
MIPS32 | 7 | 15 |
MIPS16 | 8 | 15 |
Thumb | 8 | 17 |
Blackfin | 8 | 19 |
Intel 386 | 9 | 25 |
Хорошо видно, насколько архитектура Intel 386, она же Pentium, проигрывает RISC-процессорам.
no subject
no subject
Понаклепали процессоров, мама не горюй.
no subject
no subject
no subject
Не верю. Насколько я понимаю, предсказанный переход на адрес, который уже во внутреннем представлении - бесплатный, да и суперскалярность никто не отменял. Ну и -Os тоже никто не отменял:
no subject
Легенда про четыре команды на такт возникла из того, что в Pentium 4 АЛУ работает по обоим фронтам синхросигнала. И таких АЛУ аж два. Реально померять что-то не представляется возможным, слишком всё замешано в кучу с трансляцией, VLIW, кэшами и т.п. Можно рассуждать только статистически. Из каких-то бенчмарков я слышал цифру про ~1 такт на команду, но отстаивать не берусь.
no subject
Кстати, i386 ты тоже поставил циклический сдвиг, или нет?
Теперь - про размер команд. CISC почти в два раза компактней, чем RISC. VLIW, соответственно, в два раза хуже RISC, а TTA - вдвое хуже VLIW. ;)
Правда, не на этом, твоем специально подобранном коде. ;)
no subject
На i386 компилятор сам, я не вмешивался. :)
Компактность кода это отдельный вопрос. Вот, к примеру, размер кода embedded-реализации TCP/IP для трех архитектур. Компилятор GCC 4.1.2, оптимизация "-Os". В байтах:
- Thumb - 14377
- i386 - 20862
- ARM - 21017
Нечетные значения - по причине размещения текстовых строк в том же сегменте, кто и код. Интел не сильно лучше чем ARM, а 16-битный Thumb заметно компактнее.no subject
no subject
Now what?
no subject
no subject
no subject
/* Яндекс на запрос "decl" выдает:
"Translit? Возможно, имелось в виду: «децл» " */
Интел
БОРЦЫ ПРОТИВ АРХИТЕКТУРНЫХ ИЗЛИШЕСТВ!
За красоту
Re За красоту
За рынок!
no subject
А рынок, по Анахарсису Скифскому, "это место, нарочно назначенное, чтобы обманывать и обкрадывать друг друга."
Разные MIPS
Он есть только в SmartMIPS Crypto и MIPS32 Release 2.
Поэтому, нужен был -march...
И в старых встроенных ядрах, его, по-моему, нет.
Есть ли он в Lexra, это для меня вопрос...
Re: Разные MIPS
Но суть не в циклическом сдвиге, а в общей эффективности. Очевидно, что тут MIPS вполне на уровне.
Интересно, что Blackfin оказался вполне неплох по сравнению с другими 16-битными форматами, Thumb и MIPS16.
no subject
Кстати, Ваш хэш в идеале должен бы питаться не байтами, а словами...
Для Вашего теста padding некритичен, можно 0-ями.
no subject
no subject
Гипотеза по поводу слов тоже нуждается в подтверждении. Между словами и байтами есть существенная (математическая) разница. Интуиция подсказывает, что характеристики такого хэша могут оказаться совсем не интересными.
no subject
Сеть Фейстеля построена, как положено, на чистом XOR.
Суммирование было перед S-boxes, а сдвиг после, но и его лучше к бинарному оператору сети не относить, поскольку он портит ассоциативность.
no subject
no subject
no subject
Документация есть, но она всё ещё не публичная,
хотя вроде были планы это изменить.
no subject
А это действительно работает? У Бабаяна слова всегда настолько расходились с делом, что пока сам не увижу, не поверю. :)
no subject
Оно работает. Даже прошли гос. испытания (http://www.mcst.ru/news.shtml#071029).
С Бабаяном лично знаком не был, так что позволю себе не комментировать последнее высказывание...
no subject
По тексту: "Комиссия... в составе 43 человек... заключила, что микропроцессор «Эльбрус» и ВК «Эльбрус-3М1»... являются оригинальной отечественной разработкой". Похоже на полный провал. Сорок три человека собрались в кучу только для того, чтобы объявить Эльбрус оригинальной разработкой? Приняла ли комиссия изделие? Рекомендовала ли к применению? Непонятно.
Может быть и не на asm, но почему бы не выпустить микропроцессор в народ? Наверняка на коммерческом рынке он нашёл бы свою нишу.
no subject
Понятно что сейчас мало кому нужно голое процессорное ядро, а E3M требует чипсета (северного моста), которого нет в кремнии, только в дорогом FPGA. Это основная проблема у E3M для вывода его на рынок. В этом году должны сделать E3S (кеш L2 не 256K, а уже 2М, два встроенных контроллера памяти и 3 межпроцессорных линка), - у него на много больше шансов быть реально востребованным.
no subject
no subject
http://smallcode.weblogs.us/2008/01/22/hash-functions-an-empirical-comparison/
http://smallcode.weblogs.us/2008/02/04/hash-functions-additional-tests/
http://smallcode.weblogs.us/2008/02/12/hash-functions-part-3/
no subject