Перейти к публикации
infoman

самая трудоемкая задача sha256

Рекомендованные сообщения

Кто разбирается подскажите какая из элементарных операций самая затратная машиночасы/энергопотребление:

 

 Основной цикл:    для 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 я прав?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

так это от архитектуры зависит, машины они разные бывают... открывай доки и читай по требуемому железу

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@subw,уже читаю

меня интересует именно аппаратные затраты

счас на КМОП  пересчитаю

я так понимаю зависит от колва транзисторов в элементе

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

я не понимаю что такое "аппаратные затраты".

 

вот почитай что пишут - http://en.wikipedia.org/wiki/Performance_per_watt

только вот не понятен смысл твоих изысканий, если ты только не разработчик для плисин...

Изменено пользователем subw

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Даже для очень старых процессоров логические операции выполняются за минимальное количество тактов, сложение дольше выполнялось, для современных процессоров может уже не актуально. В целом, все операции простые. КМОП немного другая тема.

Изменено пользователем mv7

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@subw,

именно при аппаратном майнинге (виртуальный не интересует)

все сводится к элементарщине  перечисленом  в сабже

@mv7,

вот именно это я и пытаюсь выяснить что из перечисленного занимает больше всего машиночасов

вот сейчас имеем операций:

  • and — 5
  • xor — 7
  • rotr  — 6
  • + — 7

это в основном цикл

Изменено пользователем infoman

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

виртуальный майнинг это что еще такое? ))

я только про облачный слышал

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

виртуальный майнинг это что еще такое? ))

я только про облачный слышал

виртуальный - программный(фпга)

аппаратный - на основе логических элементов  жестко зашитыми непрограммируемыми схемами вычисления блоков(asic)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

и ещё вот говрится что используется

но в алгоритме http://ru.wikipedia.org/wiki/SHA-2 не нашел "or"

 

я правильно рассуждаю что "+" это лигическое побитное or ?:

0xFB6FEEE7 := 0x6A09E667 + 0xBB67AE85

или побитно

 

11111011011011111110111011100111 := 1101010000010011110011001100111 or 10111011011001111010111010000101

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

OR там в чистом виде нет, в некоторых реализациях есть для циклического сдвига из двух логических. Под + понимается именно сложение, т.е. две единички в одном разряде добавляют единичку в следующем. В процессорах все логические операции NOT, AND, XOR, OR выполняются быстрее всего. При аппаратной реализации, не знаю, не моя область.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@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 (но меня  эта скорость не интересует так как она величина постоянная для всех аппаратных логических элементов)

Изменено пользователем infoman

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

.

Изменено пользователем temrus63

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

 

2) меня не интересует скорость в процессорах или не процессорах меня интересует какой из логических аппаратных элементов сьедает больше всего времени машинного или аппаратного

тебе надо понять элементарную вещь, я ее уже озвучил: скорость зависит от КОНКРЕТНОЙ архитектуры, а ты какие то абстракции обсуждаешь, почитай книжки, не забивай форум мусором

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@temrus63,@subw,

это я то забиваю?

ваши последние 2 сообщения это мусор(если я не прав да убьет мой аккаунт администратор!)

мои конкретные

хорошо берем конкретную архитектуру где у нас имеются все вышеперечисленные элементы логики

@subw,вот по вашему пожеланию вашу любимую и самую вам понятную архитектуру, и теперь когда все это добро ваше, ответте на простой вопрос что сложнее всего вычислить? сложение , и , или , исключающее или , логический сдвиг, циклический сдвиг ?

 

ну и во вторых остается вопрос по сложению, это or или всетаки сложение с добавлением единички(побитно)

Изменено пользователем infoman

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@mv7,вот знающий человек!!!!

1) тогда обьясните если сложение с добавлением единички то на выходе мы не получим слова по 32 бита

тоесть выходного хеша не получится.... я прав?

Нет, FFFF+0001=0000, остается все те же 32 бита. Зачем Вам все это? Не стоит пытаться найти здесь золотую жилу без доступа к производству микросхем.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@mv7,причем тут жила,

я просто пытаюсь понять,

попробовал на калькуляторе посчитать

если я ставлю 4 байта (разрядность) то да остаются теже 32 бита

если 8 байт то добавляется единичка

вы правы + и or разные вещи

тогда что же это "+" с точки зрения элементарной логики(читаю в нете пытаюсь понять 2 мне за забытые уроки информатики)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Все правильно, все действия в 32-битном представлении, соответственно при сложении все лишнее отсекается. Тогда ответ на вопрос простой, нет там сложных частей, все команды простейшие, процессор легко прогоняет десятки миллионов раз в секунду этот код. Scrypt, например, в 1000 и более раз медленнее в зависимости от настроек сложности алгоритма. Здесь главное относительная скорость, чтобы заработать денег, надо быть быстрее всех.

Изменено пользователем mv7

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@mv7,помоему это оно http://digteh.ru/digital/sum.php проще говоря сумматоры построенные на xor + перенос

 

если мы отсекаем "все лишнее детям"

 

остаются чисто xor 232

 

итого получается что самое затратное в sha256   это именно xor  ибо элементарно в одном сумматоре для двух слов этих логических элементов будет 32 штуки

и таких операций с сумматорами в алгоритме туева хуча :huh: шифровальщики блин :ph34r:

роем дальше....

 

тогда получается что тут:

Основной цикл:    для 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 битными словами?

Изменено пользователем infoman

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Реализовали бы алгоритм и посмотрели, чего гадать то?

Я реализовывал и смотрел. На x86 самая затратная - rotr, оптимизированный алгоритм на языке высокого уровня там проводит 90% времени.

Если писать все на асме, даже при использовании новых инструкций интеля в хасвеле (пяток rotr и shr с различными сдвигами) все равно голяк на проце получается.

Очень приблизительно, опираясь на цифры данные Интелем (http://www.intel.com/content/dam/www/public/us/en/documents/white-papers/sha-256-implementations-paper.pdf) до 500Мхэш на ядро (?). В итоге зибил, проще купить ЮСБ свисток, чем вспоминать асм.

Изменено пользователем Krey

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.

×