jojo 0 4 мая, 2018 Опубликовано 4 мая, 2018 · Жалоба Коллеги, есть вопрос. Я хочу придумать решение, выравнивающее производительность FPGA и ASIC в задачах хэширования. Первая идея, что пришла мне в голову - добавить большой мультиплексор на входе и выходе конвейера. block'=MUX(block, select); hash'=Keccak(block'); hash=MUX(block', select); Таким образом конвейер Keccak в ASIC-е обрастает мультиплексорами, на которые тратится площадь кристалла. В FPGA мультиплексоры и так есть в коммутационных ресурсах, но нужно собрать тьму прошивок под каждое значение входа select и грузить их по Selectmap. Можно поставить аналогичные мультиплексоры внутрь конвейера между раундами. Но я бы не хотел это делать, т.к. хэш будет уже не Keccak. Какие примерно параметры мультиплексора мне нужны, чтобы эта идея начала работать? Исходный код конвейера прилагается, если кому не лень собрать и прокомментировать, буду рад. keccak.zip Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
yes 8 4 мая, 2018 Опубликовано 4 мая, 2018 · Жалоба сомневаюсь в эффективности - входные мультиплексоры в ПЛИС достаточно маленькие и их структура скрыта от пользователя (в старых тулзах ксайлинса была доступна визуализация switch matrix-ов, но вот отреверсить их не получалась, даже какие-то предположения у меня не получилось сделать - там не мультиплексоры N->1, а какие-то хитрые наборы ключей, которые перемыкали между собой линии трассировки неким псевдослучайным, с точки зрения стороннего наблюдателя, образом. наверно, чтобы экономить конфигурационную память) ну и в АЗИКе мультиплексор достаточно маленькая логика (кажется, что для большинства библиотек, ячеек нужно log4 от числа входов, что фигня) кажется, помогло бы размазывание входных переменных по большой площади - но это и для ПЛИС вредит, но меньше Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jojo 0 4 мая, 2018 Опубликовано 4 мая, 2018 · Жалоба Да, надо ещё подумать. Трудящиеся страдают от наплыва АСИКов. У них появился интерес к ПЛИС, но нынешние алгоритмы все АСИК-незащищённые. Труба им всем, если ничего не сделать. А 1600 шт. мультиплексоров 1600 в 1 много места займут? Я понимаю, что вопрос странный, но много или мало по сравнению с чем-нибудь известным - SHA1, например? Моя идея сделать что-то вроде старого crypt, в котором соль влияла не на данные, а на связи внутри ядра. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
one_eight_seven 6 5 мая, 2018 Опубликовано 5 мая, 2018 · Жалоба Трудящиеся страдают от наплыва АСИКов. У них появился интерес к ПЛИС, но нынешние алгоритмы все АСИК-незащищённые. Труба им всем, если ничего не сделать. Кому труба и почему? И вообще, что плохого в том, что появляется специализированное железо именно для вычисления хэш-функций? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jojo 0 6 мая, 2018 Опубликовано 6 мая, 2018 · Жалоба Кому труба и почему? И вообще, что плохого в том, что появляется специализированное железо именно для вычисления хэш-функций? Труба, главным образом, наступает для GPU. Ну, и что говорить, FPGA. Специализировнное железо выпускается в неконтролируемых количествах, и только производитель получает с него навар. Проблема только в тираже, с технической стороны всё, конечно, идеально. Производитель хитёр. Он долгое время скрытно использует своё железо перед тем, как его продать буратинам. Каждая партия железа уменьшает финансовый результат для конечных пользователей. И только производитель в выигрыше. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
one_eight_seven 6 6 мая, 2018 Опубликовано 6 мая, 2018 (изменено) · Жалоба Вы сейчас не про хэш-функции ведь и не про GPU, и не про FPGA говорите. А про какое-нибудь спецприменение, типа криптовалют. А ни хэш-функции, ни GPU, ни FPGA создавались не для криптовалют, так что ничему не труба, и никто не пропадёт. Изменено 6 мая, 2018 пользователем one_eight_seven Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
yes 8 6 мая, 2018 Опубликовано 6 мая, 2018 · Жалоба А 1600 шт. мультиплексоров 1600 в 1 много места займут? ну в АЗИКе тоже никто не будет набирать из 2-1 мультиплексоров. синтезирует логическую функцию с ~1600 входами, у ячейки в стандартной библиотеки 4 входа (но если надо, то многовходовые ячейки-мультиплексоры можно специально разработать, чуть дороже дизайн выдет) - если не ошибаюсь, то что-то типа (1600/4)*log(1600,4) приблизительно 2К ячеек, что ничто я имею поверхностное представление об алгоритмах криптовалют, но кажется очевидное решение - брать хэш от большого объема данных, как делают в "процессоро-ориентированных" коин-алгоритмах. за счет того, что ПЛИС имеют DDR контроллеры и сразу идут в больших корпусах, где много ножек и т.п. - то за счет этого можно резко поднять вложения в разработку АЗИКа (то еcть добавить DDR PHY, разрабатывать сразу под большой корпус и т.д. - главное, невозможность сделать такой АЗИК на дешевых 130нм/90нм технологиях) upd: еще ПЛИС имеют внутреннюю память и DSP блоки - то есть добавив какие-то "очень широкие слова" и операции * - можно выиграть. но это ес-сно, в предположении, что ПЛИС мы имеем на 3-4 поколения новее, чем АЗИК - например, 28нм против 130нм я не знаю размеров вложений в коин-азики, но может переход от 100К к 10М по стоимости разработки, охладит пыл Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Shivers 0 8 мая, 2018 Опубликовано 8 мая, 2018 · Жалоба Если честно, я вообще не понял о чем топик стартер написал - для меня первый пост как на китайском. Но если нужен очень быстрый многовходовой мультиплексор, то раньше часто использовали буферы с третьим состоянием (tribuf) и подтяжкой (bushold). Можно было делать мультиплексоры и 16 в 1 и 32 в 1 - работало очень быстро. Я не уверен, что это хорошее решение на финфетах или даже суб-100нм (из-за паразитов), но если очень надо то имеет смысл проверить. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jojo 0 8 мая, 2018 Опубликовано 8 мая, 2018 · Жалоба Если честно, я вообще не понял о чем топик стартер написал - для меня первый пост как на китайском. Но если нужен очень быстрый многовходовой мультиплексор, то раньше часто использовали буферы с третьим состоянием (tribuf) и подтяжкой (bushold). Можно было делать мультиплексоры и 16 в 1 и 32 в 1 - работало очень быстро. Я не уверен, что это хорошее решение на финфетах или даже суб-100нм (из-за паразитов), но если очень надо то имеет смысл проверить. Смысл в том, что я вынуждаю разработчиков микросхемы ставить мультиплексор туда, где у меня его не будет. У меня 1000 немного отличающихся прошивок FPGA, а в ASIC мультиплексоры на 1000 входов перед каждым триггером. Пример. В большом Kintex-7, допустим, получится 10 конвейеров * 500 МГц = 5 гигахэшей/сек. Специализированный вычислительный блок (т.н. АСИК) даст сопоставимую производительность по порядку величины. Но их, блоков, продают 100500 шт, они дешевые, и net hashrate улетает в небеса. Цель модифицировать алгоритм хэша так, чтобы он от этого стал хуже реализовываться в ASIC. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
yes 8 8 мая, 2018 Опубликовано 8 мая, 2018 · Жалоба в цифровых библиотеках для современных технологий нет элементов с высокоимпедансным состоянием, да и синтез их не умеет использовать. то есть это получится уже какой-то "миксед" дизайн с соотв. тулзами. про мультиплексоры - сорри за повтор, но не нагрузите этим АЗИК - подумайте про готовое IP : PCIE - то есть обмен с ПК, MIG - то есть внешняя память - эти два для больших объемов данных, внутренняя память - какие-то сверхширокие слова - этим и GPU можно уделать, наверно, DSP блоки - используйте умножение, по-моему вполне возможно для "перемешивания битов" - не вырождается множество, и т.д то есть нужно сделать такую функцию, которая не параллелится легко, ну то есть 1 ПЛИСину не получится заменить 10 АЗИКами это может дать некотурую фору - так то АЗИК всегда выиграет, но из-за большого (большЕго) в случае использования HARD IP порога стоимости, можно порезвиться пока кто-то рискнет вложиться в АЗИК Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Shivers 0 10 мая, 2018 Опубликовано 10 мая, 2018 · Жалоба Библиотеки бывают разные, даже для одной технологии. Если вы покупаете библиотеку за деньги, то имеете право затребовать нужный элемент. Может, С-элемент вам и не сделают, но три-буф с бас-холдом обязаны, т.к. это совершенно обычные элементы. Сделать три-буф очень просто - надо просто разломить надвое защелку. Один инвертор для управления и один ключ на 4-х транзисторах, итого 6 транзисторов. Всего лишь. Синтезаторы действительно очень не любят, когда на шине больше одного драйвера. Но мультиплексоры, о которых я говорю, можно писать сразу на гейт-левеле, минуя синтез. Потом делается топология этого мультиплексора в P&R туле, выписывается либ и леф .. собственно и всё, его можно использовать в дизайне. STA отлично такие мультиплексоры видит. Не нужен ни аналоговый бэк-энд, ни характеризация, только обычные цифровые бэкэнд тулы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Doka 4 10 мая, 2018 Опубликовано 10 мая, 2018 · Жалоба Можно поставить аналогичные мультиплексоры внутрь конвейера между раундами. Но я бы не хотел это делать, т.к. хэш будет уже не Keccak. почему это проблема? потенциальное снижение криптостойкости?... не факт.. алгоритм же не упрощается, а фактически дополнительные динамические перестановки добавляются там не мультиплексоры N->1, а какие-то хитрые наборы ключей, которые перемыкали между собой линии трассировки неким псевдослучайным у xilinx на эту тему много патентов - оттуда можно часть информации взять, там действительно дикие switching matrix Специализировнное железо выпускается в неконтролируемых количествах, и только производитель получает с него навар. Проблема только в тираже, с технической стороны всё, конечно, идеально. Производитель хитёр. Он долгое время скрытно использует своё железо перед тем, как его продать буратинам. Каждая партия железа уменьшает финансовый результат для конечных пользователей. И только производитель в выигрыше. ага.. а еще он может своё железо по предзаказу продавать... отличная модель.. время == деньги :laughing: я имею поверхностное представление об алгоритмах криптовалют, но кажется очевидное решение - брать хэш от большого объема данных, как делают в "процессоро-ориентированных" коин-алгоритмах. за счет того, что ПЛИС имеют DDR контроллеры и сразу идут в больших корпусах, где много ножек и т.п. - то за счет этого можно резко поднять вложения в разработку АЗИКа (то еcть добавить DDR PHY, разрабатывать сразу под большой корпус и т.д. - главное, невозможность сделать такой АЗИК на дешевых 130нм/90нм технологиях) Увы, и DDR давно не останавливает, хотя имеет ограниченную применяемость для алгоритмов: делают SiP: само ядро с DDR PHY + кристалл DDR, получается компактно, удобно, молодёжно (и с точки зрения схемотехники майнеров не меняется ничего upd: еще ПЛИС имеют внутреннюю память и DSP блоки - то есть добавив какие-то "очень широкие слова" и операции * - можно выиграть. но это ес-сно, в предположении, что ПЛИС мы имеем на 3-4 поколения новее, чем АЗИК - например, 28нм против 130нм это теплее.. у меня самого первой мыслью было задействование FPGA-специфичных блоков, навроде UltraRAM (Xilinx), на которую очень хорошо ложится scrypt например, но в целом солидарен: ситуация неутешительная - при паритете технологий не переиграть, единственная вещь, на которой можно сыграть: скорость разработки ASIC vs RTL для FPGA Это надо принять, и этим пользоваться, дарю бизнес-модель: разрабатываем RTL для альткоина под FPGA, выбрасываем на рынок прошивку для распространённых плат с вкомпиленым devfee, одновременно с этим договариваемся с одним из асик-игроков о продаже RTL (тайм-ту-маркет, все дела) - итого в запасе будет 4...7мес, в зависимости от бизнес-процессов игрока. :laughing: :laughing: :laughing: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jojo 0 10 мая, 2018 Опубликовано 10 мая, 2018 · Жалоба почему это проблема? потенциальное снижение криптостойкости?... не факт.. алгоритм же не упрощается, а фактически дополнительные динамические перестановки добавляются В общем да, не факт, что снижение. Это нужно проверить. Как я понял, нужно задействовать всю пропускную способность PCI Express и DDR4, только тогда изготовители ASIC немного отстанут. С другой стороны, тогда можно просто сделать полезное решение HPC, а обыватель вполне может купить FPGA для него при условии нормальной окупаемости (а обыватель майнит на всём что шевелится). Проблема в том, что я ещё не идентифицировал такое решение, а те кто знает, делиться информацией не спешат. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Doka 4 10 мая, 2018 Опубликовано 10 мая, 2018 · Жалоба Смысл в том, что я вынуждаю разработчиков микросхемы ставить мультиплексор туда, где у меня его не будет. У меня 1000 немного отличающихся прошивок FPGA, а в ASIC мультиплексоры на 1000 входов перед каждым триггером. вот еще идейка в порядке мозгового штурма: ставить ПЛИСы на плате в кортеж: FPGA1 -> FPGA2 -> FPGA3 -> FPGA4 (направление датастрима, но нужно кастомное железо или вариант объединять платы с ПЛИС через встроенные MGT/GTX) и заливать туда разные прошивки, которые будут являться частью одного алгоритма, т.о. начиная от определенной ёмкости ПЛИС, понадобится 4 асика, выполняющих эти 4 разные функции... но это только концепция - чувствую чего-то я в ней явно не доглядел... В общем да, не факт, что снижение. Это нужно проверить. Как я понял, нужно задействовать всю пропускную способность PCI Express и DDR4, только тогда изготовители ASIC немного отстанут. ну, DDR легко и просто обходися упаковкой в SiP, хоть сколько кристаллов DDR клади рядом (притом на фото не кристаллы, а закорпусированные, можно сделать еще компактнее): А с PCI-E надо решить что и ради чего там будет гоняться, т.е. подразумевается что должен задействоваться хост-процессор для части функций, которые нереализуемы/дорогореализуемы на FPGA/ASIC ??? С другой стороны, тогда можно просто сделать полезное решение HPC, а обыватель вполне может купить FPGA для него при условии нормальной окупаемости (а обыватель майнит на всём что шевелится). Проблема в том, что я ещё не идентифицировал такое решение, а те кто знает, делиться информацией не спешат. так для ML/NN сейчас куча решений выпускается для вставки в слот, не?.. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jojo 0 10 мая, 2018 Опубликовано 10 мая, 2018 · Жалоба вот еще идейка в порядке мозгового штурма: ставить ПЛИСы на плате в кортеж: FPGA1 -> FPGA2 -> FPGA3 -> FPGA4 (направление датастрима, но нужно кастомное железо или вариант объединять платы с ПЛИС через встроенные MGT/GTX) и заливать туда разные прошивки, которые будут являться частью одного алгоритма, т.о. начиная от определенной ёмкости ПЛИС, понадобится 4 асика, выполняющих эти 4 разные функции... но это только концепция - чувствую чего-то я в ней явно не доглядел... ну, DDR легко и просто обходися упаковкой в SiP, хоть сколько кристаллов DDR клади рядом (притом на фото не кристаллы, а закорпусированные, можно сделать еще компактнее): А с PCI-E надо решить что и ради чего там будет гоняться, т.е. подразумевается что должен задействоваться хост-процессор для части функций, которые нереализуемы/дорогореализуемы на FPGA/ASIC ??? так для ML/NN сейчас куча решений выпускается для вставки в слот, не?.. На большинстве отладочных плат стоит 1 FPGA. Хост лучше задействовать, чтобы снизить масштабируемость. ML/NN я еще не щупал. Что-нибудь для примера есть стоящее? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться