Ciências da computação dia 27

diminuindo circuitos

Para esta aula você precisará lembrar da aula 25

Um circuito simplificado é feito para diminuir a quantidade de componentes, que, por consequência, diminui o tempo de execução, custo para ser construido (tanto em mão de obra, como em dinheiro) e também economiza espaço em um chip.

Um fator importante a se saber,é que nem sempre o circuito que tem menos componentes ele é necessariamente melhor

circuito 1

circuito 2

veja esses dois circuitos.

Muitos dirão que o circuito 1 é o melhor (lembrando que estou pensando em tempo de execução, e não em espaço ou custo)

Mas na realidade os dois possuem o mesmo desempenho

analisando o primeiro, podemos ver que temos apenas duas portas, uma que será executada depois da outra, já que a porta OR que está no final depende da execução da porta AND que está no começo, sendo assim pensando em 10ns de execução para cada temos 20ns para a execução do circuito 1 no total.

já no circuito 2, temos uma porta a mais, no entanto, repare que as duas portas OR serão executadas simultaneamente, uma vez que elas não possuem nenhuma dependência e estão ligadas diretamente a entrada de corrente elétrica, sendo assim, designamos 10ns para essas duas portas e mais 10ns para a AND que está no final.

sendo assim, os dois circuitos possuem o mesmo desempenho, ou seja você não poderá pensar em tempo de execução na hora de escolher o circuito que você vai usar (apenas nesse caso)

para diminuir um circuito, você primeiro precisará ter a equação que o descreve

exemplo:

f(a, b, c) = (a + b) * (a + c)

depois você precisará lembrar dos axiomas e suas duais (disponível aqui aula 25)

resolvendo o circuito acima

f(a, b, c) = (a + b) * (a + c)

axioma 7' --- distributiva

axioma 7 → x * (y + z) = x * y + x * z

axioma 7' → x +(y * z) = (x + y) * (x + z)

sendo assim

f(a,b,c) = a + (b * c)

circuito inicial → f(a, b, c) = (a + b) * (a + c)

circuito final → f(a,b,c) = a + (b * c)