Penso che sia molto più interessante che le classi di complessità del circuito utilizzate dalla teoria della complessità CS facciano previsioni diverse e utilizzino metriche diverse rispetto a quelle della comunità VLSI. Da La complessità VLSI delle funzioni booleane :
È noto che tutte le funzioni booleane di variabili possono essere calcolate da un circuito logico con porte O ( 2 n / n ) (teorema di Lupanov) e che esistono funzioni booleane di n variabili che richiedono circuiti logici di queste dimensioni (Shannon's teorema). Presentiamo i risultati corrispondenti per le funzioni booleane calcolate dai circuiti VLSI, utilizzando il modello Thompson di un chip VLSI. Dimostriamo che tutte le funzioni booleane di n variabili possono essere calcolate da un circuito VLSI di O ( 2 n ) area e periodo 1, e dimostriamo che esistono funzioni booleane di nnO(2n/n)nO(2n)nvariabili per le quali ogni chip VLSI (convesso) deve avere un'area .Ω(2n)
È interessante notare che la complessità del circuito VLSI ha la tendenza a considerare la profondità "irrilevante" in quanto esiste un'unica e sola "profondità" che conta: il percorso critico. Per la maggior parte degli scopi pratici, un circuito arbitrariamente complesso può essere trattato come con una latenza di n .O(1)n
In realtà, non sono nemmeno sicuro che il concetto di / N L o g T i m e si traduca direttamente nella complessità del circuito VLSI. Anche il risultato di Shannons 2 n / n non si traduce facilmente: i risultati di Shannons sono validi solo per una base booleana composta da arity ≤ 2 {AND, OR, NOT}. Questa non è l'unica base, e il numero di "cancelli" necessari diminuisce drasticamente quando si autorizzano sempre più tipi di gate. Di seguito sono una r all'e un 2DLogTimeNLogTime2n/n≤2area2 da una libreria di celle standard VLSI commerciale normalizzata alle dimensioni di una porta NAND a 2 ingressi:
2 3 4 <- Arity
e 1,14 1,28 1,41
nand 1.00 1.14 1.28
o 1,14 1,41 1,41
né 1,00 1,14 1,41
xor 1.62 2.44
xnor 1.62 2.44
buf 1.14
inv 0.80
aoi22 1.28
aoi222 1.62
aoi33 1.62
oai22 1.41
oai222 1.72
oai33 1.62
addf 2.64
In particolare, notare le aoi
/ oai
porte che sono And Or Invert
/ Or And Invert
costituite da una prima funzione di dimensioni arity che alimentano la seconda funzione, dove il numero di prime porte di funzione è uguale al numero di volte che appare arity . Ad esempio, aoi22
rappresenta "Due 2 porte AND di ingresso che alimentano una porta NOR".
Il mio punto è: presa separatamente, una oai222
funzione può essere costruita usando tre porte OR a 2 ingressi e una porta NAND a 3 ingressi, per un'area totale di ~ 4,56, esclusa qualsiasi area utilizzata per l'interconnessione. Tuttavia questa primitiva può essere realizzata in un'area di appena 1,72, il che significa che una manifestazione discreta della stessa funzione booleana consuma 2,65 volte più area.
Si noti inoltre che l'area per un input {AND, NAND, OR, NOR, XOR, XNOR} gate, dove n ≥ 2 , è molto inferiore all'area che sarebbe necessaria per costruire la stessa funzione utilizzando 2 input gate discreti. Si noti inoltre che mentre l'area indicata per {XOR, XNOR} per questo processo è "grande" rispetto alle altre porte, ci sono altri modi per costruire le stesse n porte di input usando meno area.nn≥2n
Anche le proprietà di propagazione per le primitive più complesse sono significativamente migliori di quelle che si otterrebbero usando cancelli discreti.
PNP
P≠NPNPf:{0,1}n→{0,1}f2n/nNP.
f:{0,1}n→{0,1}NP{0,1}n2n/nnnNPNP2n/n
Sulla complessità delle implementazioni VLSI e delle rappresentazioni grafiche delle funzioni booleane con la moltiplicazione da applicazione a numero intero mostra che la previsione della complessità del circuito utilizzando un modello OBDD sopravvaluta la complessità effettiva del circuito:
AT2=Ω(n2)Ω(cn)c<1AT2=O(n1+c)
n2n−1i−12n−i−11≤i≤nAT2=Ω(i2)Ω(1.09i)