Presentation is loading. Please wait.

Presentation is loading. Please wait.

234262 Tutorials #4-#5 Controller + DataPath design 234262 – © Yohai Devir 2007 Technion - IIT.

Similar presentations


Presentation on theme: "234262 Tutorials #4-#5 Controller + DataPath design 234262 – © Yohai Devir 2007 Technion - IIT."— Presentation transcript:

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


Download ppt "234262 Tutorials #4-#5 Controller + DataPath design 234262 – © Yohai Devir 2007 Technion - IIT."

Similar presentations


Ads by Google