Tutorials #4-#5 Coltroller + dataPath design 234262 Tutorials #4-#5 Coltroller + dataPath design 234262 – © Yohai Devir 2007 Technion - IIT
Computing N! #1 – pseudo-Code i = N; result = 1; while (i != 1) { result = result * i; i = i - 1; } done = 1; output(result); 234262 – © Yohai Devir 2007 Technion - IIT
Computing N! (2) #2 – finding variables i = N; result = 1; while (i != 1) { result = result * i; i = i - 1; } done = 1; output(result); 234262 – © Yohai Devir 2007 Technion - IIT
Computing N! (3) #3 – operations i = N; result = 1; while (i != 1) { result = result * i; i = i - 1; } done = 1; output(result); 234262 – © Yohai Devir 2007 Technion - IIT
Computing N! (4) The universal switch Universal switch i = N; result = 1; while (i != 1) { result = result * i; i = i - 1; } done = 1; output(result); Universal switch Can connect every output to every input Can produce any fixed number Control signals can resolve any condition in the algorithm Will be implemented later. 234262 – © Yohai Devir 2007 Technion - IIT
Computing N! (5) The Datapath i = N; result = 1; while (i != 1) { result = result * i; i = i - 1; } done = 1; output(result); 234262 – © Yohai Devir 2007 Technion - IIT
Computing N! (5) The Datapath i = N; result = 1; while (i != 1) { result = result * i; i = i - 1; } done = 1; output(result); N 234262 – © Yohai Devir 2007 Technion - IIT
Computing N! (5) The Datapath i = N; result = 1; while (i != 1) { result = result * i; i = i - 1; } done = 1; output(result); 1 234262 – © Yohai Devir 2007 Technion - IIT
Computing N! (6) Datapath Flow Chart – what operations can be done in parallel ? A = B + C D = A + C i = N; result = 1; while (i != 1) { result = result * i; i = i - 1; } done = 1; output(result); 234262 – © Yohai Devir 2007 Technion - IIT
Computing N! (6) Datapath Flow Chart – what operations can be done in parallel ? i = N; result = 1; while (i != 1) { result = result * i; i = i - 1; } done = 1; output(result); 234262 – © Yohai Devir 2007 Technion - IIT
Computing N! (6) Datapath Flow Chart – what operations can be done in parallel ? i = N; result = 1; while (i != 1) { result = result * i; i = i - 1; } done = 1; output(result); 234262 – © Yohai Devir 2007 Technion - IIT
Computing N! (6) Datapath Flow Chart – what operations can be done in parallel ? i = N; result = 1; while (i != 1) { result = result * i; i = i - 1; } done = 1; output(result); 234262 – © Yohai Devir 2007 Technion - IIT
Computing N! (7) Datapath – implementing the switch 234262 – © Yohai Devir 2007 Technion - IIT
Computing N! (8) CONTROL – flow chart 234262 – © Yohai Devir 2007 Technion - IIT
Computing N! (8) CONTROL – flow chart 234262 – © Yohai Devir 2007 Technion - IIT
Computing N! (8) CONTROL – flow chart 234262 – © Yohai Devir 2007 Technion - IIT
Computing N! (8) CONTROL – flow chart 234262 – © Yohai Devir 2007 Technion - IIT
Computing N! (8) CONTROL – flow chart 234262 – © Yohai Devir 2007 Technion - IIT
Computing N! (9) CONTROL – implementation 234262 – © Yohai Devir 2007 Technion - IIT
Computing N! (9) CONTROL – implementation CS 00 1 01 10 11 Sel_i Load_i Sel_res Load_res Done 00 1 01 10 11 234262 – © Yohai Devir 2007 Technion - IIT
Computing N! (10) CONTROL + DP 234262 – © Yohai Devir 2007 Technion - IIT
Computing N! (10) 234262 – © Yohai Devir 2007 Technion - IIT
DP signals Control signals Comment 1 3 ? 00 2 4 5 6 7 8 N i res i-1 CS Sel_i Load_i Sel_res Load_res Done 00 1 01 10 11 DP signals Control signals Comment N i res i-1 i*res zero CS NS seli selres loadi loadres done 1 3 ? 00 2 4 5 6 7 8 234262 – © Yohai Devir 2007 Technion - IIT
DP signals Control signals Comment 1 3 ? 00 2 4 5 6 7 8 N i res i-1 CS Sel_i Load_i Sel_res Load_res Done 00 1 01 10 11 DP signals Control signals Comment N i res i-1 i*res zero CS NS seli selres loadi loadres done 1 3 ? 00 2 4 5 6 7 8 234262 – © Yohai Devir 2007 Technion - IIT
DP signals Control signals Comment 1 3 ? 00 2 4 5 6 7 8 N i res i-1 CS Sel_i Load_i Sel_res Load_res Done 00 1 01 10 11 DP signals Control signals Comment N i res i-1 i*res zero CS NS seli selres loadi loadres done 1 3 ? 00 iN; res 1 2 4 5 6 7 8 234262 – © Yohai Devir 2007 Technion - IIT
DP signals Control signals Comment 1 3 ? 00 01 2 4 5 6 7 8 N i res i-1 CS Sel_i Load_i Sel_res Load_res Done 00 1 01 10 11 DP signals Control signals Comment N i res i-1 i*res zero CS NS seli selres loadi loadres done 1 3 ? 00 01 iN; res 1 2 4 5 6 7 8 234262 – © Yohai Devir 2007 Technion - IIT
DP signals Control signals Comment 1 3 ? 00 01 2 4 5 6 7 8 N i res i-1 CS Sel_i Load_i Sel_res Load_res Done 00 1 01 10 11 DP signals Control signals Comment N i res i-1 i*res zero CS NS seli selres loadi loadres done 1 3 ? 00 01 iN; res 1 2 4 5 6 7 8 234262 – © Yohai Devir 2007 Technion - IIT
DP signals Control signals Comment 1 3 ? 00 01 2 4 5 6 7 8 N i res i-1 CS Sel_i Load_i Sel_res Load_res Done 00 1 01 10 11 DP signals Control signals Comment N i res i-1 i*res zero CS NS seli selres loadi loadres done 1 3 ? 00 01 iN; res 1 2 4 5 6 7 8 234262 – © Yohai Devir 2007 Technion - IIT
DP signals Control signals Comment 1 3 ? 00 01 2 i=1? 4 5 6 7 8 N i CS Sel_i Load_i Sel_res Load_res Done 00 1 01 10 11 DP signals Control signals Comment N i res i-1 i*res zero CS NS seli selres loadi loadres done 1 3 ? 00 01 iN; res 1 2 i=1? 4 5 6 7 8 234262 – © Yohai Devir 2007 Technion - IIT
DP signals Control signals Comment 1 3 ? 00 01 2 Ø i=1? 4 5 6 7 8 N i CS Sel_i Load_i Sel_res Load_res Done 00 1 01 10 11 DP signals Control signals Comment N i res i-1 i*res zero CS NS seli selres loadi loadres done 1 3 ? 00 01 iN; res 1 2 Ø i=1? 4 5 6 7 8 234262 – © Yohai Devir 2007 Technion - IIT
DP signals Control signals Comment 1 3 ? 00 01 2 Ø i=1? 4 5 6 7 8 N i CS Sel_i Load_i Sel_res Load_res Done 00 1 01 10 11 DP signals Control signals Comment N i res i-1 i*res zero CS NS seli selres loadi loadres done 1 3 ? 00 01 iN; res 1 2 Ø i=1? 4 5 6 7 8 234262 – © Yohai Devir 2007 Technion - IIT
DP signals Control signals Comment 1 3 ? 00 01 2 Ø 10 i=1? 4 5 6 7 8 N CS Sel_i Load_i Sel_res Load_res Done 00 1 01 10 11 DP signals Control signals Comment N i res i-1 i*res zero CS NS seli selres loadi loadres done 1 3 ? 00 01 iN; res 1 2 Ø 10 i=1? 4 5 6 7 8 234262 – © Yohai Devir 2007 Technion - IIT
DP signals Control signals Comment 1 3 ? 00 01 2 Ø 10 i=1? 4 5 6 7 8 N CS Sel_i Load_i Sel_res Load_res Done 00 1 01 10 11 DP signals Control signals Comment N i res i-1 i*res zero CS NS seli selres loadi loadres done 1 3 ? 00 01 iN; res 1 2 Ø 10 i=1? 4 5 6 7 8 234262 – © Yohai Devir 2007 Technion - IIT
DP signals Control signals Comment 1 3 ? 00 01 2 Ø 10 i=1? 4 5 6 7 8 N CS Sel_i Load_i Sel_res Load_res Done 00 1 01 10 11 DP signals Control signals Comment N i res i-1 i*res zero CS NS seli selres loadi loadres done 1 3 ? 00 01 iN; res 1 2 Ø 10 i=1? resi*res ii-1 4 5 6 7 8 234262 – © Yohai Devir 2007 Technion - IIT
DP signals Control signals Comment 1 3 ? 00 01 2 Ø 10 i=1? 4 6 5 11 7 CS Sel_i Load_i Sel_res Load_res Done 00 1 01 10 11 DP signals Control signals Comment N i res i-1 i*res zero CS NS seli selres loadi loadres done 1 3 ? 00 01 iN; res 1 2 Ø 10 i=1? resi*res ii-1 4 6 5 11 7 8 234262 – © Yohai Devir 2007 Technion - IIT
Another example 234262 – © Yohai Devir 2007 Technion - IIT
2nd example - hardware i = N; K = 2; while (i / K >= K) { If (i % K == 0) { i = i + 1; } else { K = K + 1; } done = 1; output (i); 234262 – © Yohai Devir 2007 Technion - IIT
2nd example - hardware i = N; K = 2; while (i / K >= K) { If (i % K == 0) { i = i + 1; } else { K = K + 1; } done = 1; output (i); 234262 – © Yohai Devir 2007 Technion - IIT
2nd example - hardware i = N; K = 2; while (i / K >= K) { If (i % K == 0) { i = i + 1; } else { K = K + 1; } done = 1; output (i); 234262 – © Yohai Devir 2007 Technion - IIT
i = N; K = 2; while (i / K >= K) { If (i % K == 0) { i = i + 1; } else { K = K + 1; } done = 1; output (i); 234262 – © Yohai Devir 2007 Technion - IIT
i = N; K = 2; while (i / K >= K) { If (i % K == 0) { i = i + 1; } else { K = K + 1; } done = 1; output (i); 234262 – © Yohai Devir 2007 Technion - IIT
i = N; K = 2; while (i / K >= K) { If (i % K == 0) { i = i + 1; } else { K = K + 1; } done = 1; output (i); 234262 – © Yohai Devir 2007 Technion - IIT
i = N; K = 2; while (i / K >= K) { If (i % K == 0) { i = i + 1; } else { K = K + 1; } done = 1; output (i); 234262 – © Yohai Devir 2007 Technion - IIT
i = N; K = 2; while (i / K >= K) { If (i % K == 0) { i = i + 1; } else { K = K + 1; } done = 1; output (i); 234262 – © Yohai Devir 2007 Technion - IIT
234262 – © Yohai Devir 2007 Technion - IIT
234262 – © Yohai Devir 2007 Technion - IIT