«А вот и петля – „п“ превратилась в „п“»! (П-о-о-д-д-п… кстати, «о» в четвёртой позиции слова «погода» цикла не даёт).
– Ну и что это нам даёт?
– Даёт… – воображаемый Тьюринг принимается задумчиво обкусывать траурную кайму ногтя большого пальца («хотя нет, ему ещё до этого открытия три года»). – Если представить эти три перехода, как три «Энигмы» с одинаковыми установками (лишь вторая машинка, со сдвинутым относительно первой, на одну позицию, а третья – на пять позиций), в которых в один и тот же момент должно произойти превращение: на первой «Энигме» – «п» в «о», на второй – «о» в «д», на третьей – «д» в «п».
– Да, это уже кое-что… а какой длины может быть такая петля?
– Обычно три-четыре перехода, длиннее десяти почти не встречается.
– Это означает, что неплохо бы иметь десять ядер. Многовато, конечно, но реально. Однако это никак не решает проблемы с быстродействием: все эти ядра будут работать одинаково медленно, на сложение одна секунда, на умножения – пять.
– Никаких сложений и умножений, все ядра будут выполнять только одну команду: получают символ на входе, выдают на выход тоже символ, но зашифрованный по правилам «Энигмы». Устройство управления получает от работающих ядер результат и сравнивает с искомым. При совпадении печатающее устройство выдаёт текущее положение роторов.
– И всё-таки, что там со скоростью?
– Если принять скорость проверки как одно положение роторов за секунду, то на это уйдёт пять часов. Ещё надо учесть, что имеется шесть разных счетаний пяти типов роторов в трёх посадочных местах «Энигмы». Это даёт разброс времени дешифровки от одной секунды до тридцати часов – как повезёт…
– Тридцать часов…
– Если поставить тридцать таких кластеров, то время сократится до одного часа.
– Давайте сравним железо одной такой десятиядерной установки и стандартной РВМ.
«Сам посчитаю. И вообще, откуда взялись эти голоса»?
Тыльной стороной ладони стираю крупные капли пота, стекающие по лбу и вискам.
«Похоже на жар… как не вовремя, настали такие горячие денёчки. Плохо. А почему, собственно, плохо? Я что старик? Мне что уже сорок лет? Ведь не старый ещё. Организм борется с хворью, надо просто ему помочь».
В два прыжка оказываюсь у двери лаборатории, минуя вешалку с шинелью, распахиваю её… свежий ветерок приятно холодит разгорячённое тело. Быстрым шагом иду по утоптанной, плохо освещённой двумя фонарями, дорожке, ведущей к столовой: туда и обратно – двести метров.
«Надо будет заасфальтировать тропинки и найти место для гимнастических снарядов.
Стоп, вернёмся к нашим баранам, так во что выливается один такой десятиядерный процессор»?
Прежде всего, длина слова моего «сипию» всего лишь пять бит (а не двадцать два, как в РВМ-1), так как работать он будет с двадцатью шестью буквами латинского алфавита (двойка в степени пять даст тридцать два возможных символа). Кроме того, нет необходимости хранить в оперативной памяти прошивку всех пяти роторов, она неизменна, поэтому поместим её в небольшое постоянное запоминающее устройство (5 роторов х 26 букв на каждом роторе х 5 бит = 650 бит + 26 х 5 бит для рефлектора, итого меньше килобайта – сущие пустяки из кусочков проводов).
«А что у нас будет сидеть в ОЗУ»?
Три пятибитных указателя (по числу активных роторов), показывающие их смещение относительно исходного положения (провернулся ротор на одну позицию – плюс единица к указателю, если позиция последняя, то указатель обнуляется), пятнадцатибитный счётчик циклов (по нему определяем ключевые установки роторов), и регистр для хранения промежуточного символа (в нём же останется и конечный символ). Получается тридцать пять реле, добавляем ещё пятнадцать на управление, синхронизацию и организацию шины данных, получим – пятьдесят реле на ядро, пятьсот реле – на «бомбу», пять тысяч – на кластер из десяти «бомб». На устройство управления «бомбой» пойдёт немного, до сотни реле, а в кластере «бомбы» электрически не связаны.
«По божески получилось, такой кластер максимум за три часа сможет взломать любой шифр „Энигмы“, а по количеству реле в нём соизмерим с РВМ (в РВМ-1 четыре тысячи реле)! Как тебе такое, Илон Маск»?