Komplexitaet-WS-2010.. - Parallele Systeme
Komplexitaet-WS-2010.. - Parallele Systeme
Komplexitaet-WS-2010.. - Parallele Systeme
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
128 Vorlesungsskript von E. Best / Stand: 17. Januar 2011<br />
1) (ui,vi) = (0,0) bedeutet xi +yi = 0. Unabhängig von anderen Inputs ist zi = 0. Überträge, die zur<br />
Stelle i kommen, werden abgefangen. Diese Stellen heißen E ( ” eliminieren“).<br />
2) (ui,vi) = (0,1) bedeutet xi +yi = 1. In dieser Situation ist zi = zi−1. Ein Übertrag aus der vorigen<br />
Stelle wird weitergeleitet. Derartige Stellen heißen P ( ” propagieren“).<br />
3) (ui,vi) = (1,0) bedeutet xi+yi = 0 und ein neuer Übertrag wird erzeugt: zi = 1. Diese Stellen heißen<br />
G ( ” generieren“).<br />
4) (ui,vi) = (1,1) kommt nicht vor.<br />
An Stelle i entsteht ein Übertrag genau dann, wenn ein Übertrag an einer Position j ≤ i erzeugt wird<br />
(uj = 1) und dann bis zur Position i weitergeleitet wird (vj+1 = ... = vi = 1):<br />
zi = <br />
0≤j≤i<br />
(uj ∧vj+1 ∧...∧vi)<br />
Alle die zi können dann parallel aus u, v berechnet werden.<br />
Die Formeln uj ∧vj+1 ∧... ∧vi lassen sich mit balancierten Bäumen aus ∧-Bausteinen in Größe O(n)<br />
und Tiefe O(log(n)) berechnen. Es gibt O(n) logische Summanden, für jeden genügen O(n) Bausteine<br />
(insgesamt also O(n 2 ) für ein einziges zi), die Tiefe bleibt O(2·log(n)) = O(log(n)). Da es O(n) zi’s gibt,<br />
folgt:<br />
Carry-Look-Ahead-Addierer haben Größe O(n 3 ) und Tiefe O(log(n)).<br />
5.2.5 Produkt zweier Boolescher Vektoren<br />
Gegeben: x = x1,...,xn und y = y1,...,yn<br />
Gesucht:<br />
dot: {0,1} 2n → {0,1} gemäß dot(x,y) =<br />
n<br />
(xi ∧yi).<br />
i=1<br />
Dies kann durch einen Schaltkreis (siehe Abbildung 5.6) geleistet werden, der eine ” einfachere Version“<br />
desjenigen für die zi im vorigen Beispiel ist.<br />
5.2.6 Produkt zweier quadratischer Boolescher Matrizen<br />
A = [aij] B = [bij] 1 ≤ i,j ≤ n<br />
Ai = (ai1,...,ain), Bj = (b1j,...,bnj) 1 ≤ i,j ≤ n<br />
A·B = C mit cij = dot(Ai,Bj) 1 ≤ i,j ≤ n.<br />
Alle cij können parallel zueinander berechnet werden. Benutze<br />
DOT<br />
!