infoman 16 4 сен 2013, 08:59 Кто разбирается подскажите какая из элементарных операций самая затратная машиночасы/энергопотребление: ǁ — Конкатенация, + — Сложение, and — Побитовое «И», or — Побитовое «ИЛИ», xor — Исключающее «ИЛИ», shr (Shift Right) — Логический сдвиг вправо, rotr (Rotate Right) — Циклический сдвиг вправо. Основной цикл: для i от 0 до 63 Σ0 := (a rotr 2) xor (a rotr 13) xor (a rotr 22) Ma := (a and b) xor (a and c) xor (b and c) t2 := Σ0 + Ma Σ1 := (e rotr 6) xor (e rotr 11) xor (e rotr 25) Ch := (e and f) xor ((not e) and g) t1 := h + Σ1 + Ch + k[i] + w[i] h := g g := f f := e e := d + t1 d := c c := b b := a a := t1 + t2 чисто визуально тянусь к xor я прав? 0 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
subw 354 Опубликовано: 4 сен 2013, 09:27 так это от архитектуры зависит, машины они разные бывают... открывай доки и читай по требуемому железу 0 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
infoman 16 Опубликовано: 4 сен 2013, 09:31 @subw,уже читаю меня интересует именно аппаратные затраты счас на КМОП пересчитаю я так понимаю зависит от колва транзисторов в элементе 0 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
subw 354 Опубликовано: 4 сен 2013, 09:48 (изменено) я не понимаю что такое "аппаратные затраты". вот почитай что пишут - http://en.wikipedia.org/wiki/Performance_per_watt только вот не понятен смысл твоих изысканий, если ты только не разработчик для плисин... Изменено 4 сен 2013, 09:53 пользователем subw 0 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mv7 7 Опубликовано: 4 сен 2013, 09:58 (изменено) Даже для очень старых процессоров логические операции выполняются за минимальное количество тактов, сложение дольше выполнялось, для современных процессоров может уже не актуально. В целом, все операции простые. КМОП немного другая тема. Изменено 4 сен 2013, 10:02 пользователем mv7 0 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
infoman 16 Опубликовано: 4 сен 2013, 10:15 (изменено) @subw, именно при аппаратном майнинге (виртуальный не интересует) все сводится к элементарщине перечисленом в сабже @mv7, вот именно это я и пытаюсь выяснить что из перечисленного занимает больше всего машиночасов вот сейчас имеем операций: and — 5 xor — 7 rotr — 6 + — 7 это в основном цикл Изменено 4 сен 2013, 10:27 пользователем infoman 0 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
subw 354 Опубликовано: 4 сен 2013, 10:48 виртуальный майнинг это что еще такое? )) я только про облачный слышал 0 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
infoman 16 Опубликовано: 4 сен 2013, 10:52 виртуальный майнинг это что еще такое? )) я только про облачный слышал виртуальный - программный(фпга) аппаратный - на основе логических элементов жестко зашитыми непрограммируемыми схемами вычисления блоков(asic) 0 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
infoman 16 Опубликовано: 4 сен 2013, 11:14 и ещё вот говрится что используется + — Сложение, or — Побитовое «ИЛИ», но в алгоритме http://ru.wikipedia.org/wiki/SHA-2 не нашел "or" я правильно рассуждаю что "+" это лигическое побитное or ?: 0xFB6FEEE7 := 0x6A09E667 + 0xBB67AE85 или побитно 11111011011011111110111011100111 := 1101010000010011110011001100111 or 10111011011001111010111010000101 0 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mv7 7 Опубликовано: 4 сен 2013, 12:49 OR там в чистом виде нет, в некоторых реализациях есть для циклического сдвига из двух логических. Под + понимается именно сложение, т.е. две единички в одном разряде добавляют единичку в следующем. В процессорах все логические операции NOT, AND, XOR, OR выполняются быстрее всего. При аппаратной реализации, не знаю, не моя область. 0 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
infoman 16 Опубликовано: 4 сен 2013, 13:08 (изменено) @mv7,вот знающий человек!!!! 1) тогда обьясните если сложение с добавлением единички то на выходе мы не получим слова по 32 бита тоесть выходного хеша не получится.... я прав? Добавить полученные значения к ранее вычисленному результату: h0 := h0 + a h1 := h1 + b h2 := h2 + c h3 := h3 + d h4 := h4 + e h5 := h5 + f h6 := h6 + g h7 := h7 + hПолучить итоговое значения хеша:digest = hash = h0 ǁ h1 ǁ h2 ǁ h3 ǁ h4 ǁ h5 ǁ h6 ǁ h7 в digest = hash = h0 это слово 32 бита а если как вы предлагаете с добавлением единички то будет другое слово 2) меня не интересует скорость в процессорах или не процессорах меня интересует какой из логических аппаратных элементов сьедает больше всего времени машинного или аппаратного я думаю зависит это от того сколько p-n переходов в аппаратном логическом элементе ну и их скорости перехода из состояния 0 в 1 (но меня эта скорость не интересует так как она величина постоянная для всех аппаратных логических элементов) Изменено 4 сен 2013, 13:16 пользователем infoman 0 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
temrus63 69 Опубликовано: 4 сен 2013, 13:28 (изменено) . Изменено 17 янв 2017, 12:56 пользователем temrus63 -2 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
subw 354 Опубликовано: 4 сен 2013, 13:50 2) меня не интересует скорость в процессорах или не процессорах меня интересует какой из логических аппаратных элементов сьедает больше всего времени машинного или аппаратного тебе надо понять элементарную вещь, я ее уже озвучил: скорость зависит от КОНКРЕТНОЙ архитектуры, а ты какие то абстракции обсуждаешь, почитай книжки, не забивай форум мусором 0 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
infoman 16 Опубликовано: 4 сен 2013, 14:01 (изменено) @temrus63,@subw, это я то забиваю? ваши последние 2 сообщения это мусор(если я не прав да убьет мой аккаунт администратор!) мои конкретные хорошо берем конкретную архитектуру где у нас имеются все вышеперечисленные элементы логики @subw,вот по вашему пожеланию вашу любимую и самую вам понятную архитектуру, и теперь когда все это добро ваше, ответте на простой вопрос что сложнее всего вычислить? сложение , и , или , исключающее или , логический сдвиг, циклический сдвиг ? ну и во вторых остается вопрос по сложению, это or или всетаки сложение с добавлением единички(побитно) Изменено 4 сен 2013, 14:02 пользователем infoman 0 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mv7 7 Опубликовано: 4 сен 2013, 14:24 @mv7,вот знающий человек!!!! 1) тогда обьясните если сложение с добавлением единички то на выходе мы не получим слова по 32 бита тоесть выходного хеша не получится.... я прав? Нет, FFFF+0001=0000, остается все те же 32 бита. Зачем Вам все это? Не стоит пытаться найти здесь золотую жилу без доступа к производству микросхем. 0 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
infoman 16 Опубликовано: 4 сен 2013, 14:58 @mv7,причем тут жила, я просто пытаюсь понять, попробовал на калькуляторе посчитать если я ставлю 4 байта (разрядность) то да остаются теже 32 бита если 8 байт то добавляется единичка вы правы + и or разные вещи тогда что же это "+" с точки зрения элементарной логики(читаю в нете пытаюсь понять 2 мне за забытые уроки информатики) 0 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mv7 7 Опубликовано: 4 сен 2013, 15:47 (изменено) Все правильно, все действия в 32-битном представлении, соответственно при сложении все лишнее отсекается. Тогда ответ на вопрос простой, нет там сложных частей, все команды простейшие, процессор легко прогоняет десятки миллионов раз в секунду этот код. Scrypt, например, в 1000 и более раз медленнее в зависимости от настроек сложности алгоритма. Здесь главное относительная скорость, чтобы заработать денег, надо быть быстрее всех. Изменено 4 сен 2013, 15:51 пользователем mv7 0 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
infoman 16 Опубликовано: 4 сен 2013, 16:21 (изменено) @mv7,помоему это оно http://digteh.ru/digital/sum.php проще говоря сумматоры построенные на xor + перенос если мы отсекаем "все лишнее детям" остаются чисто xor 232 итого получается что самое затратное в sha256 это именно xor ибо элементарно в одном сумматоре для двух слов этих логических элементов будет 32 штуки и таких операций с сумматорами в алгоритме туева хуча шифровальщики блин роем дальше.... тогда получается что тут: Основной цикл: для i от 0 до 63 Σ0 := (a rotr 2) xor (a rotr 13) xor (a rotr 22) Ma := (a and b) xor (a and c) xor (b and c) t2 := Σ0 + Ma Σ1 := (e rotr 6) xor (e rotr 11) xor (e rotr 25) Ch := (e and f) xor ((not e) and g) t1 := h + Σ1 + Ch + k[i] + w[i] элемент xor тоже 232 ? ведь в цикле мы тоже оперируем 32 битными словами? Изменено 5 сен 2013, 05:07 пользователем infoman 0 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Planetarius 265 Опубликовано: 10 дек 2013, 23:09 А было интересно.... Нашел решение:? 0 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Krey 25 Опубликовано: 11 дек 2013, 08:58 (изменено) Реализовали бы алгоритм и посмотрели, чего гадать то? Я реализовывал и смотрел. На x86 самая затратная - rotr, оптимизированный алгоритм на языке высокого уровня там проводит 90% времени. Если писать все на асме, даже при использовании новых инструкций интеля в хасвеле (пяток rotr и shr с различными сдвигами) все равно голяк на проце получается. Очень приблизительно, опираясь на цифры данные Интелем (http://www.intel.com/content/dam/www/public/us/en/documents/white-papers/sha-256-implementations-paper.pdf) до 500Мхэш на ядро (?). В итоге зибил, проще купить ЮСБ свисток, чем вспоминать асм. Изменено 11 дек 2013, 09:13 пользователем Krey 0 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах