Для каждого из тактов этих беспорядочно тикающих медленных часов схема чипа брала выход от вторых, быстро тикающих часов, которые регулярно и поочередно выдавали два бинарных значения — 0 и 1. В результате беспорядочной выборки значений с этого выхода и получалась случайная последовательность из нулей и единиц генератора.
Один из главных минусов этой схемы заключался в том, что аналоговая конструкция, необходимая для усиления теплового шума, потребляла немало энергии. Хуже того, из-за своих конструктивных особенностей данная схема работала постоянно – вне зависимости от того, нужны ли были для текущей работы компьютера случайные числа или же нет.
Другой существенный минус аналоговых компонентов внутри чипа – это серьёзные проблемы в тех ситуациях, когда приходит время менять производственные технологии, применяемые для изготовления процессоров.
Производственные линии для выпуска интегральных микросхем каждые несколько лет приходится обновлять из-за перехода к более мелким масштабам упаковки транзисторов. Для цифровых схем КМОП-технологии этот переход осуществляется довольно просто, а вот для каждого нового поколения аналоговых схем всё оказывается гораздо сложнее.
Аналоговые схемы требуют дополнительной конструкторской доработки, чтобы обеспечивать нужное соотношение «сигнал-шум». По мере того как происходит движение к наиболее передовым технологиям миниатюризации схем, напряжение питания в этих схемах стабильно понижается.
Это снижение напряжения попутно понижает мощность сигнала – без перемен в шуме устройства. Иначе говоря, понижается и уровень отношения сигнала к шуму, а значит, каждая модернизация неизбежно влечёт за собой тщательную переоценку параметров и комплекс тестирований для RNG. Ясно, что это чрезвычайно неудобно и обременительно.
Принимая во внимание все эти проблемы, в 2008 году конструкторы Intel всерьёз озаботились задачей по созданию такого генератора случайных чисел, который использовал бы в своей работе исключительно цифровые элементы схемы. Поначалу задачей полного избавления генератора случайных битов от аналоговых схем занимались исследователи Circuit Research Lab в Хиллсбро, а затем к ним подключились индийские коллеги из исследовательского центра Bangalore Design Lab.
Остроумное решение, которое в итоге было найдено, с полным правом можно называть парадоксальным. С формальной точки зрения, данная конструкция нарушает важнейшее правило в конструировании цифровых схем, согласно которому схема должна находиться в хорошо определённом состоянии, давая на выходе только логические 0 и 1.
Элемент цифровой схемы может, конечно, пребывать краткие периоды времени в промежуточном состоянии переключения между двумя этими базовыми возможностями. Однако он никогда не должен оставаться балансирующим и неопределённым в том, каким путём следует двигаться дальше. Такого рода неопределённостей всегда стараются избегать, поскольку они вносят задержки в работу схемы и даже способны порождать сбои в работе системы.
Однако в конструкции нового генератора случайных чисел такое тяготение к балансированию стало не дефектом, а особенностью схемы. Можно сказать, что данная схема делает своей главной фишкой так называемый феномен «метастабильности» – обычно крайне нежелательный эффект при конструировании логических схем, использующих более одной тактовой частоты. Цифровой же генератор, созданный командой Intel, устроен таким образом, что здесь результатом метастабильности является в буквальном смысле каждый бит на выходе схемы.
Обычно выход с цифрового устройства принято брать в тот момент, когда он устоялся на определённом значении, будь это ноль или единица. А метастабильность – это то, что происходит, когда показание напряжения берётся во время перехода, так что бит пойман где-то в промежутке между нулём и единицей. В конечном счёте такой бит непременно перейдёт в одно из этих двух базовых состояний, однако нет способа предсказать, в каком именно он окажется.
Исследователи Intel умышленно стали снимать сигнал во время именно таких переходов, а кроме того, они усиливают эту случайность ещё больше, с помощью петли обратной связи настраивая метастабильность таким образом, чтобы бит падал в состояние 1 или 0 с примерно равной вероятностью. Превращая, по сути дела, данный процесс в электронный эквивалент подбрасывания монеты.