Я думаю, что гораздо интереснее, что классы сложности схем, используемые теорией сложности CS, делают разные предсказания и используют другие метрики, чем в сообществе VLSI. Из СБИС-сложности булевых функций :
Хорошо известно, что все булевы функции от переменных могут быть вычислены с помощью логической схемы с O ( 2 n / n ) вентилями (теорема Лупанова) и что существуют булевы функции от n переменных, которые требуют логических схем такого размера (Шеннона теорема). Мы представляем соответствующие результаты для булевых функций, вычисленных схемами VLSI, используя модель чипсета VLSI Томпсона. Мы доказываем, что все булевы функции n переменных могут быть вычислены схемой СБИС области O ( 2 n ) и периода 1, и мы доказываем, что существуют булевы функцииnO(2n/n)nO(2n)nПеременные , для которых каждый (выпуклые) СБИС чип должен иметь область.Ω(2n)
Интересно, что сложность схемы СБИС имеет тенденцию рассматривать глубину как «не относящуюся к делу», поскольку имеет значение только одна «глубина»: критический путь. Для большинства практических целей произвольно сложную схему можно рассматривать как с задержкой nO(1)n .
На самом деле, я даже не уверен , что понятие / Н л о г т я м е непосредственно переводится в сложности схемы СБИС. Даже результат Шеннона 2 n / n не может быть легко переведен: результаты Шеннона действительны только для логического базиса, состоящего из арности ≤ 2 {AND, OR, NOT}. Это не единственная основа, и количество необходимых «ворот» резко падает, поскольку вы допускаете все больше и больше типов ворот. Ниже приведены т еDLogTimeNLogTime2n/n≤2area2 из коммерческой библиотеки ячеек стандарта VLSI, нормированной на размер 2 входного NAND-шлюза:
2 3 4 <- Arity
и 1,14 1,28 1,41
nand 1.00 1.14 1.28
или 1,14 1,41 1,41
ни 1,00 1,14 1,41
xor 1,62 2,44
xnor 1,62 2,44
buf 1.14
инв 0.80
Aoi22 1,28
Aoi222 1,62
АОИ33 1,62
oai22 1,41
oai222 1,72
oai33 1.62
addf 2.64
В частности, обратите внимание на aoi
/ oai
gates, которые And Or Invert
/ Or And Invert
состоят из первой функции размера арности, питающей вторую функцию, где число первых гейтовых функций равно числу появлений арности . Например, представляет «Два 2 входных И вентиля, питающих вентиль NOR».aoi22
Я хочу сказать: отдельно взятая oai222
функция может быть построена с использованием трех 2 входных ИЛИ вентилей и 3 входных вентилей NAND, общей площадью ~ 4,56, не считая области, используемой для межсоединения. Тем не менее, этот примитив может быть реализован в области всего 1,72, что означает, что дискретное проявление той же самой логической функции потребляет в 2,65 раза больше площади.
Также обратите внимание, что область для входных {AND, NAND, OR, NOR, XOR, XNOR} вентилей, где n ≥ 2 , намного меньше, чем область, которая потребуется для построения той же функции с использованием дискретных 2 входных вентилей. Также обратите внимание, что хотя область, указанная для {XOR, XNOR} для этого процесса, является «большой» по сравнению с другими воротами, существуют другие способы построить те же n входных вентилей, используя меньшую площадь.nn≥2n
Свойства распространения для более сложных примитивов также значительно лучше, чем то, что было бы достигнуто с использованием дискретных вентилей.
PNP
P≠NPNPf:{0,1}n→{0,1}f2n/nNP,
f:{0,1}n→{0,1}NP{0,1}n2n/nnnNPNP2n/n
О сложности реализаций СБИС и графических представлениях булевых функций с применением умножения на целочисленные значения показано, что прогнозирование сложности схемы с использованием модели OBDD переоценивает фактическую сложность схемы:
AT2=Ω(n2)Ω(cn)c<1AT2=O(n1+c)
n2n−1i−12n−i−11≤i≤nAT2=Ω(i2)Ω(1.09i)