Download presentation
Presentation is loading. Please wait.
1
234262 Tutorials #4-#5 Controller + DataPath design 234262 – © Yohai Devir 2007 Technion - IIT
2
Controller & DP DP = מסלול נתונים זיכרון כלים (לוגיקה צירופית) נתב Controller = בקר "מוח המערכת" פלט קלט אותות בקרה אותות סטטוס 234262 – © Dima Elenbogen 2009 6:54 פלט
3
Register רגיסטר = מערך של FF DQ רגיסטר לא מותנה DQ רגיסטר מותנה load 234262 – © Dima Elenbogen 2009 6:54
4
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
5
Computing N! (2) #1 – pseudo-Code i = N; result = 1; while (i > 1) { result = result * i; i = i - 1; } done = 1; output(result); i = N; result = 1; LOOP:if (i ≤ 1) goto END; result = result * i; i = i - 1; goto LOOP; END:done = 1; output(result); 234262 © Yohai Devir 2007 Technion - IIT© Dima Elenbogen 2009
6
Computing N! (3) #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© Dima Elenbogen 2009
7
Computing N! (4) #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© Dima Elenbogen 2009 GR
8
Computing N! (8) 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© Dima Elenbogen 2009 ld_resld_i sel_isel_res GR out
9
ld_resld_i sel_isel_res GR out Computing N! (9) 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); (0) i = N result = 1 234262 © Yohai Devir 2007 Technion - IIT© Dima Elenbogen 2009
10
Computing N! (10) 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); (0) i = N result = 1 (1) (i – 1) > 0 ? 234262 © Yohai Devir 2007 Technion - IIT© Dima Elenbogen 2009 Yes No
11
Computing N! (11) Datapath Flow Chart – which operations can be done in parallel ? i = N; result = 1; while (i > 1) { result = result * i; i = i - 1; } done = 1; output(result); (0) i = N result = 1 (1) (i – 1) > 0 ? (2) result = result * i (3) i = i - 1 234262 © Yohai Devir 2007 Technion - IIT© Dima Elenbogen 2009 Yes No
12
Computing N! (12) Datapath Flow Chart – which operations can be done in parallel ? i = N; result = 1; while (i > 1) { result = result * i; i = i - 1; } done = 1; output(result); (0) i = N result = 1 (1) (i – 1) > 0 ? ניתן למזג 234262 © Yohai Devir 2007 Technion - IIT© Dima Elenbogen 2009 (2) result = result * i (3) i = i - 1 Yes No
13
Computing N! (13) Datapath Flow Chart – which operations can be done in parallel ? i = N; result = 1; while (i > 1) { result = result * i; i = i - 1; } done = 1; output(result); (0) i = N result = 1 (1) (i – 1) > 0? (2) result=result*i i = i - 1 234262 © Yohai Devir 2007 Technion - IIT© Dima Elenbogen 2009 Yes No
14
Computing N! (14) Datapath Flow Chart – which operations can be done in parallel ? i = N; result = 1; while (i > 1) { result = result * i; i = i - 1; } done = 1; output(result); (0) i = N result = 1 (1) (i – 1) > 0? (2) result=result*i i = i - 1 234262 © Yohai Devir 2007 Technion - IIT© Dima Elenbogen 2009 האם ניתן להפוך את סדר השורות? Yes No
15
Off the Record (1) אילו ע''פי האלגוריתם סדר השורות בגוף הלולאה היה במקור הפוך, האם עדיין היינו יכולים לבצע את גוף הלולאה במחזור יחיד? 234262 © Dima Elenbogen 2010 Technion - IIT... while (i > 1) { i = i - 1; result = result * i; }... ld_resld_i sel_isel_res GR out
16
... while (i > 1) { i = i - 1; result = result * i; }... אילו ע''פי האלגוריתם סדר השורות בגוף הלולאה היה במקור הפוך, האם עדיין היינו יכולים לבצע את גוף הלולאה במחזור יחיד? לא אם אסור לשנות את מסלול הנתונים. 234262 © Dima Elenbogen 2010 Technion - IIT Off the Record (2) ld_resld_i sel_isel_res GR out
17
... while (i > 1) { i = i - 1; result = result * i; }... אילו ע''פי האלגוריתם סדר השורות בגוף הלולאה היה במקור הפוך, האם עדיין היינו יכולים לבצע את גוף הלולאה במחזור יחיד? כן אם מותר לשנות את מסלול הנתונים ולהזין את הערך החדש של i ישירות מהמחסר 234262 © Dima Elenbogen 2010 Technion - IIT Off the Record (3) ld_resld_i sel_isel_res GR out
18
Computing N! (15) בקר – תרשים זרימה (0) i = N result = 1 (1) (i – 1) > 0? (2) result=result*i i = i - 1 (3) Yes No (0) (1) (2) (3) 234262 © Yohai Devir 2007 Technion - IIT© Dima Elenbogen 2009
19
? Computing N! (16) בקר – דיאגרמת מצבים (0) i = N result = 1 (1) (i – 1) > 0 ? (2) result=result*i i = i - 1 (3) Yes No ld_i, ld_res sel_res = 0 sel_i = 0 ? ? ? 0 1 2 3 234262 © Yohai Devir 2007 Technion - IIT© Dima Elenbogen 2009
20
Computing N! (17) (0) i = N result = 1 (1) (i – 1) > 0 ? (2) result=result*i i = i - 1 (3) 234262 © Yohai Devir 2007 Technion - IIT© Dima Elenbogen 2009 ld_i, ld_res sel_res = 0 sel_i = 0 ? ? gr 0 1 2 3 בקר – דיאגרמת מצבים Yes No
21
Computing N! (18) (0) i = N result = 1 (1) (i – 1) > 0 ? (2) result=result*i i = i - 1 (3) 234262 © Yohai Devir 2007 Technion - IIT© Dima Elenbogen 2009 ld_i, ld_res sel_res = 0 sel_i = 0 ld_i ld_res sel_res = 1 sel_i = 1 ? 0 1 2 3 gr בקר – דיאגרמת מצבים Yes No
22
Computing N! (19) בקר – דיאגרמת מצבים (0) i = N result = 1 (1) (i – 1) > 0 ? (2) result=result*i i = i - 1 (3) 234262 © Yohai Devir 2007 Technion - IIT© Dima Elenbogen 2009 ld_i, ld_res sel_res = 0 sel_i = 0 ld_i ld_res sel_res = 1 sel_i = 1 done 0 1 2 3 gr Yes No
23
Computing N! (20) מהו סוג הבקר? Mealy Moore 234262 © Yohai Devir 2007 Technion - IIT© Dima Elenbogen 2009 ld_i, ld_res sel_res = 0 sel_i = 0 ld_i ld_res sel_res = 1 sel_i = 1 done 0 1 2 3 gr
24
Computing N! (20) מהו סוג הבקר? Mealy Moore ld_i, ld_res sel_res = 0 sel_i = 0 ld_i ld_res sel_res = 1 sel_i = 1 done 0 1 2 3 234262 © Yohai Devir 2007 Technion - IIT© Dima Elenbogen 2009 gr
25
Computing N! (21) בקר – מימוש ld_i, ld_res sel_res = 0 sel_i = 0 ld_i ld_res sel_res = 1 sel_i = 1 done 0 1 2 3 234262 © Yohai Devir 2007 Technion - IIT© Dima Elenbogen 2009 gr
26
Computing N! (22) בקר – מימוש CS Sel_iLoad_iSel_resLoad_resDone 0001010 0100000 1011110 1100001 234262 © Yohai Devir 2007 Technion - IIT© Dima Elenbogen 2009 ld_i, ld_res sel_res = 0 sel_i = 0 ld_i ld_res sel_res = 1 sel_i = 1 done 0 1 2 3 gr
27
234262 © Yohai Devir 2007 Technion - IIT© Dima Elenbogen 2009 Computing N! (23) CONTROL + DP External Clock
28
Computing N! (24) 234262 © Yohai Devir 2007 Technion - IIT© Dima Elenbogen 2009
29
DP signalsControl signals Comment Niresi-1i*resGRCSNSsel i sel res load i load res done 13??00 2 3 4 5 6 7 8 CS Sel_iLoad_iSel_resLoad_resDone 0001010 0100000 1011110 1100001
30
DP signalsControl signals Comment Niresi-1i*resGRCSNSsel i sel res load i load res done 13??0000110 2 3 4 5 6 7 8 CS Sel_iLoad_iSel_resLoad_resDone 0001010 0100000 1011110 1100001
31
DP signalsControl signals Comment Niresi-1i*resGRCSNSsel i sel res load i load res done 13?????0000110 i N; res 1 2 3 4 5 6 7 8 CS Sel_iLoad_iSel_resLoad_resDone 0001010 0100000 1011110 1100001
32
DP signalsControl signals Comment Niresi-1i*resGRCSNSsel i sel res load i load res done 13?????000100110 i N; res 1 2 3 4 5 6 7 8 CS Sel_iLoad_iSel_resLoad_resDone 0001010 0100000 1011110 1100001
33
DP signalsControl signals Comment Niresi-1i*resGRCSNSsel i sel res load i load res done 13?????000100110 i N; res 1 201 3 4 5 6 7 8 CS Sel_iLoad_iSel_resLoad_resDone 0001010 0100000 1011110 1100001
34
DP signalsControl signals Comment Niresi-1i*resGRCSNSsel i sel res load i load res done 13?????000100110 i N; res 1 23 1 01 3 4 5 6 7 8 CS Sel_iLoad_iSel_resLoad_resDone 0001010 0100000 1011110 1100001
35
DP signalsControl signals Comment Niresi-1i*resGRCSNSsel i sel res load i load res done 13?????000100110 i N; res 1 23 1 0100000i=1? 3 4 5 6 7 8 CS Sel_iLoad_iSel_resLoad_resDone 0001010 0100000 1011110 1100001
36
DP signalsControl signals Comment Niresi-1i*resGRCSNSsel i sel res load i load res done 13?????000100110 i N; res 1 2Ø3 1 230100000i=1? 3 4 5 6 7 8 CS Sel_iLoad_iSel_resLoad_resDone 0001010 0100000 1011110 1100001
37
DP signalsControl signals Comment Niresi-1i*resGRCSNSsel i sel res load i load res done 13?????000100110 i N; res 1 2Ø3 1 2310100000i=1? 3 4 5 6 7 8 CS Sel_iLoad_iSel_resLoad_resDone 0001010 0100000 1011110 1100001
38
DP signalsControl signals Comment Niresi-1i*resGRCSNSsel i sel res load i load res done 13?????000100110 i N; res 1 2Ø3 1 221011000000i=1? 3 4 5 6 7 8 CS Sel_iLoad_iSel_resLoad_resDone 0001010 0100000 1011110 1100001
39
DP signalsControl signals Comment Niresi-1i*resGRCSNSsel i sel res load i load res done 13?????000100110 i N; res 1 2Ø3 1 231011000000i=1? 33110 4 5 6 7 8 CS Sel_iLoad_iSel_resLoad_resDone 0001010 0100000 1011110 1100001
40
DP signalsControl signals Comment Niresi-1i*resGRCSNSsel i sel res load i load res done 13?????000100110 i N; res 1 2Ø3 1 231011000000i=1? 3Ø31231100111110 res i*res i i-1 4 5 6 7 8 CS Sel_iLoad_iSel_resLoad_resDone 0001010 0100000 1011110 1100001
41
DP signalsControl signals Comment Niresi-1i*resGRCSNSsel i sel res load i load res done 13?????000100110 i N; res 1 2Ø3 1 231011000000i=1? 3Ø31231100111110 res i*res i i-1 4Ø23161011000000i=1? 5Ø23161100111110 res i*res i i-1 6Ø16060011100000i=1? 7Ø1606011 00001done 8Ø1606011 00001done CS Sel_iLoad_iSel_resLoad_resDone 0001010 0100000 1011110 1100001
42
234262 – © Yohai Devir 2007 Technion - IIT Another example
43
234262 – © Yohai Devir 2007 Technion - IIT 2 nd example - hardware i = N; K = 2; while (i / K >= K) { If (i % K == 0) { i = i + 1; K = 2; } else { K = K + 1; } done = 1; output (i);
44
234262 – © Yohai Devir 2007 Technion - IIT 2 nd example - hardware i = N; K = 2; while (i / K >= K) { If (i % K == 0) { i = i + 1; K = 2; } else { K = K + 1; } done = 1; output (i);
45
234262 – © Yohai Devir 2007 Technion - IIT 2 nd example - hardware i = N; K = 2; while (i / K >= K) { If (i % K == 0) { i = i + 1; K = 2; } else { K = K + 1; } done = 1; output (i);
46
234262 – © Yohai Devir 2007 Technion - IIT i = N; K = 2; while (i / K >= K) { If (i % K == 0) { i = i + 1; K = 2; } else { K = K + 1; } done = 1; output (i);
47
234262 – © Yohai Devir 2007 Technion - IIT i = N; K = 2; while (i / K >= K) { If (i % K == 0) { i = i + 1; K = 2; } else { K = K + 1; } done = 1; output (i);
48
234262 – © Yohai Devir 2007 Technion - IIT i = N; K = 2; while (i / K >= K) { If (i % K == 0) { i = i + 1; K = 2; } else { K = K + 1; } done = 1; output (i);
49
234262 – © Yohai Devir 2007 Technion - IIT i = N; K = 2; while (i / K >= K) { If (i % K == 0) { i = i + 1; K = 2; } else { K = K + 1; } done = 1; output (i);
50
234262 – © Yohai Devir 2007 Technion - IIT i = N; K = 2; while (i / K >= K) { If (i % K == 0) { i = i + 1; K = 2; } else { K = K + 1; } done = 1; output (i);
51
234262 – © Yohai Devir 2007 Technion - IIT
52
234262 – © Yohai Devir 2007 Technion - IIT
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.