Presentation is loading. Please wait.

Presentation is loading. Please wait.

مظفر بگ محمدی دانشگاه ایلام

Similar presentations


Presentation on theme: "مظفر بگ محمدی دانشگاه ایلام"— Presentation transcript:

1 مظفر بگ محمدی دانشگاه ایلام
ریاضیات کامپیوتر 2 مظفر بگ محمدی دانشگاه ایلام

2 محاسبات ریاضی پایه ضرب اعداد طبیعی الگوریتم بوث تقسیم اعداد طبیعی
بازیابی نتیجه و عدم بازیابی نتیجه نمایش اعداد اعشاری جمع و ضرب اعشاری

3 ضرب (دبستان) 1 x مبنای ده: 8 x 9 = 72 نتیجه چند بیتی است؟
PP: = 72 نتیجه چند بیتی است؟ log(n x m) = log(n) + log(m) 32b x 32b = 64b result 1 x

4 ضرب ترکیبی (موریس مانو)
تولید مضارب جزیی استفاده از تسهیم کننده های 2 به 1 برای انتخاب یک بیت از مضرب جزیی مورد نظر یا انتخاب 0x0 32 مضرب جزیی داریم. جمع مضارب جزیی

5 ضرب کننده ی چند مرحله ای ضرب کننده ی ترکیبی ضرب چند مرحله ای
مصرف سخت افزار بالا ضرب طبیعی تقریبا پرکاربرد نیست منطقی نیست منابع را اینجا مصرف کنیم. ضرب چند مرحله ای بیتهای مضروب را چک می کنیم و بر اساس آن (اگر برابر یک بود) شیفت یافته ی مضروب فیه را با حاصلضرب جمع می کنیم.

6 ضرب کننده 1 x

7 الگوریتم ضرب 1 x

8 مثال

9 بهبود ضرب کننده آیا ما واقعاً به جمع کننده ی 64 بیتی نیاز داریم؟
خیر، ما همیشه از 32 بیت استفاده می کنیم. لذا از یک جمع کننده ی 32 بیتی استفاده می کنیم. نتیجه ی ضرب را در هر مرحله به راست شیفت می دهیم. آیا به یک رجیستر مجزا برای مضروب فیه نیاز داریم؟ خیر، بیتهای کم ارزش رجیستر 64 بیتی حاصل ضرب در ابتدا استفاده نمی شوند. لذا، مضروب فیه را آنجا ذخیره می کنیم.

10 ضرب کننده ی بهبود یافته 1 x

11 مدار ضرب کننده ی بهبود یافته
1 x

12 ضرب عدد 6 در عدد 7 Iteration Step product Initial values 0111
Multiplicand product Initial values 0111 1 Do nothing Shift left product 2 add 3 4

13 ضرب اعداد دارای علامت یادآوری بنابر این:
در ضرب اگر هر دو عدد مثبت یا منفی باشند نتیجه مثبت است. اما اگر علامت دو عدد متفاوت باشد نتیجه منفی است. لذا، بیت علامت با xor علامت دو عدد برابر است. sign(p) = sign(a) xor sign(b) بنابر این: هر دو عدد را به دو عدد مثبت n-1 بیتی تبدیل کنید. اعداد مثبت را در هم ضرب کنید. علامت را طبق فرمول فوق محاسبه و نتیجه را طبق آن تنظیم کنید.

14 کدگذاری بوث تکنیک ضرب اعداد در 9
x 9 = x (10 – 1) = – به جای انجام 6 جمع جزیی، یک شیفت و یک تفریق انجام می دهیم در الگوریتم بوث از این تکنیک در مبنای دو استفاده می شود.

15 کدگذاری بوث به دنبال تعدادی 1 پشت سرهم بگردید.
مثلا 0110 دو 1 پشت سر هم دارد. ضرب در 0110 به معنای ضرب در 8 و تفریق نتیجه از دوبرابر عدد است: 6 x m = (8 – 2) x m = 8m – 2m لذا از سمت راست شروع کنید: اولین 1را که دیدید یک تفریق متناسب با محل آن 1 انجام دهید. به آخرین 1 که رسیدید یک جمع متناسب با محل بعد از آن 1انجام دهید. کاری به 1 های میانی نداشته باشید.

16 مثال Current bit Bit to right Explanation Example Operation 1
Begins run of ‘1’ Subtract Middle of run of ‘1’ Nothing End of a run of ‘1’ Add Middle of a run of ‘0’

17 کدگذاری بوث در حالت عادی، ارزش هر محل توانی از 2 است.
در الگوریتم بوث هر عدد یک علامت دارد و در یک عددی ضرب می شود. می توان 2 بیتی هم به این مطلب نگاه کرد. 1 Binary +1 -1 1-bit Booth +2 -2 2-bit Booth

18 1 bit Booth 00 +0 01 +M; 10 -M; 11 بوث 1 بیتی
For every pair of multiplier bits 00: do nothing (Shift) 01: Add 10: Subtract 11: do nothing (Shift)

19 مثال از ضرب بوث مضروب منفی -6 x 6 = -36 1010 x 0110,
در منطق کدگذاری بوث با + 0 – 0 برابر است. لذا: x 0 x –1 x +1 Final Sum: (-36)

20 یک مثال دیگر -6 x -2 = 12 1010 x 1110, 1110 با 00-0 معادل است. لذا:
x 0 x –1 Final Sum: (12)

21 تقسیم اعداد طبیعی می خواهیم 74 را بر 8 تقسیم کنیم: 1 Quotient Divisor
Quotient Divisor Dividend - Remainder

22 تقسیم اعداد طبیعی سخت افزار از کجا می داند که عدد بخش پذیر است یا نه؟
شرط: اگر باقیمانده از مقسوم علیه بزرگتر باشد. استفاده از تفریق: (remainder – divisor) ≥ 0 اگر بخش پذیر بود چکار کنیم؟ Remaindern+1 = Remaindern – divisor اگر بخش پذیر نبود چکار کنیم؟ باید مقدار قبلی را بازیابی کنیم. Called restoring division

23 تقسیم اعداد طبیعی Divisor 1 Quotient Dividend - Remainder

24 تقسیم اعداد طبیعی 1 Quotient Divisor Dividend - Remainder

25 مثال Divisor=0010, dividend=  quotient = 0011, reminder = 0001

26 بهبودهای عمل تقسیم از تفریق اول صرفنظر کنید.
چون در هر صورت نمی توان 1 را وارد خارج قسمت کرد. لذا اول شیفت می دهیم، بعد کم می کنیم. باید این شیفت اضافی را در مرحله ی آخر خنثی کنیم. می توان از سخت افزار مشابهی استفاده کرد. خارج قسمت را در رجیستر باقیمانده ذخیره می کنیم. از ALU 32 بیتی استفاده می کنیم. به جای شیفت دادن مقسوم علیه به راست، باقیمانده را به چپ شیفت می دهیم.

27 تقسیم بهبود یافته

28 تقسیم بهبود یافته

29 مثال Iteration Step Divisor Remainder Initial values 0010 0000 0111
Initial values 0010 Shift rem left 1 1 2: Rem = Rem - Div 3b: Rem < 0, restore, sll 0 2 3 3a: Rem > 0 , sll 1 4 Rem = Rem – Div Shift Rem right by 1

30 مثالی دیگر (11 تقسیم بر 4) Iteration Step Divisor Remainder
Initial values 00100 Shift rem left 1 1 2: Rem = Rem - Div 3b: Rem < 0, restore, sll 0 2 3 4 Rem = Rem – Div 3a: Rem > 0 , sll 1 5 Shift Rem right by 1

31 یک بهبود دیگر هنوز برای تقسیم، به ازای هر بیت به دو سیکل ALU نیاز داریم: تشخیص امکان بخش پذیری (عمل تفریق) بازیابی (در صورت نیاز) می توان به ازای هر بیت یک سیکل صرفه جویی کرد. Called non-restoring division در این روش اگر آزمایش بخش پذیری ناموفق بود، لازم نیست که بازیابی انجام دهیم.

32 تقسیم بدون بازیابی فرض کنید لازم است باقیمانده را بازیابی کنید: Ri = Ri-1 – d < 0 چون Ri منفی است، ما باید آنرا بازیابی کنیم. درست است؟ خوب، شاید لازم نباشد. قدم بعدی i+1 را به صورت زیر در نظر بگیرید: Ri+1 = 2 x (Ri) – d = 2 x (Ri – d) + d لذا می توان Ri+1 را بدون بازیابی Ri محاسبه کرد. اما به جای تفریق d باید از جمع با d استفاده کنیم. از لحاظ Ri+1، نتیجه یکسان است. اما باعث می شود که دیگر نیازی به بازیابی نداشته باشیم.

33 تقسیم بدون بازیابی Iteration Step Divisor Remainder Initial values
Initial values 0010 Shift rem left 1 1 2: Rem = Rem - Div 3b: Rem < 0 (add next), sll 0 2 2: Rem = Rem + Div 3 3a: Rem > 0 (sub next), sll 1 4 Rem = Rem – Div Rem > 0 (sub next), sll 1 Shift Rem right by 1

34 تقسیم بدون بازیابی (مثال دوم 11 تقسیم بر 4)
Iteration Step Divisor Remainder Initial values 00100 Shift rem left 1 1 2: Rem = Rem - Div 3b: Rem < 0 (add next), sll 0 2 2: Rem = Rem + Div 3 4 Rem = Rem + Div Rem > 0 (sub next), sll 1 5 Rem = Rem – Div Shift Rem right by 1 Add (because rem is negative)

35 اعداد اعشاری می خواهیم که اعداد علمی را نمایش دهیم
اعداد طبیعی: -2n-1 … (2n-1 –1) چگونه؟ مقداری از دقت را فدا کنید و از آن برای نمایش توان استفاده کنید. البته نمی توان همه ی اعداد داخل محدوده را نمایش داد.

36 اعداد اعشاری برای نمایش عدد اعشاری از تعداد محدودی بیت استفاده می کنیم. استاندارد IEEE 754 . بیت علامت S، مانتیس F و توان E Value: (-1)S x F x 2E S E F Size Exponent Significand Range Single precision 32b 8b 23b 2x10+/-38 Double precision 64b 11b 52b 2x10+/-308

37 توان اعداد اعشاری برای نمایش توان آنرا بایاس می کنیم که به آن excess می گوییم. چرا؟ برای ساده سازی عمل مرتب کردن اعداد اعشاری بیت MSB نشان دهنده ی علامت است که باعث تسهیل مرتب سازی می گردد. اگر توان مکمل 2 باشد: اعداد بزرگ توان مثبت دارند. اعداد کوچک توان منفی دارند. چون در مکمل 2 توان منفی از توان مثبت بزرگتر است، لذا نمی توان اعداد اعشاری را راحت مرتب سازی کرد.

38 توان بایاس شده توان مکمل دو Excess-127 -127 1000 0001 0000 0000 -126
+127 Value: (-1)S x F x 2(E-bias) SP: bias is 127 DP: bias is 1023

39 نرمال سازی اعداد اعشاری
نمایش S، E و F به ما اجازه می دهد که برای یک مقدار بیش از چند نمایش داشته باشیم. مثال: 1.0 x 105 = 0.1 x 106 = x 104 لذا اعمال مقایسه مشکل می شوند. ترجیح می دهیم که یک نمایش یکسان داشته باشیم. بنابراین، برای نرمال سازی یک قرارداد وضع می کنیم. فقط یک رقم در سمت چپ اعشار باشد. در دودویی: آن رقم باید 1 باشد. چون که عدد 1 همیشه به طور ضمنی حضور دارد، نیازی به ذخیره ی آن نیست. لذا یک بیت دقت اضافی داریم که مفت است.

40 FP سرریز هر دو در استاندارد IEEE754 منجر به تولید استثناء خواهد شد.
مثل سرریز اعداد طبیعی عدد خیلی بزرگ باشد که قابل نمایش نباشد. یعنی توان خیلی بزرگ باشد. FP Underflow نتیجه خیلی کوچک باشد که قابل نمایش نباشد. یعنی توان خیلی منفی باشد. هر دو در استاندارد IEEE754 منجر به تولید استثناء خواهد شد.

41 حالتهای خاص IEEE754 دقت معمولی دقت مضاعف مقدار توان مانتیس nonzero
nonzero denormalized 1-254 anything 1-2046 fp number 255 2047 infinity NaN (Not a Number)

42 توان

43 توان

44 گرد کردن FP سخت افزار گرد کردن FP موثر است: گرد کردن مهم است.
خطاهای کوچک به تدریج بزرگ می شوند. سخت افزار گرد کردن FP موثر است: علاوه بر 23/52 بیت یک بیت اضافی نگهبان داریم. علاوه بر آن، یک بیت گرد کردن هم داریم. ضرب ممکن است به یک 0 در شروع منجر شود. وقتی که نرمالیز می کنیم، بیت نگهبان را وارد ضرب می کنیم. لذا، بیت گرد کردن را می توان کماکان استفاده کرد. در نهایت، آخرین بیت تنظیم شده را هنگام از دست دادن سمت راستترین یک نگه می داریم. لذا بین 0.5 و تفاوت قایل می شویم.

45 جمع اعشاری مثل دبستان: توان دو عدد را با شیفت دادن اعشار شبیه هم نمایید. مانتیس ها را جمع کنید. نتیجه را نرمال کنید. در نهایت جمع حاصل را گرد کنید. مثال: 9.997 x 102 x 102 4.631 x 10-1 x 102 Sum x 102 Normalized x 103 Rounding x 103

46 جمع اعشاری

47 ضرب اعشاری علامت: Ps = As xor Bs توان: PE = AE + BE
بدلیل اینکه توان بایاس شده باید مقدار بایاس را از نتیجه کم کرد: e = e1 + e2 E = e = e1 + e E = (E1 – 1023) + (E2 – 1023) E = E1 + E2 –1023 مانتیس: PF = AF x BF ضرب استاندارد طبیعی (23b or 52b + g/r/s bits) استفاده از جمع کننده ی والاس برای جمع مضارب جزیی

48 ضرب اعشاری محاسبه ی علامت، مانتیس و توان مثل اسلاید قبلی نرمال کردن:
شیفت به چپ و شیفت به راست. در شیفت به راست از خارج 1 وارد می شود. چرا؟ کنترل سرریز و underflow گرد کردن نرمال کردن دوباره (در صورت لزوم)

49 خلاصه ضرب طبیعی تقسیم طبیعی ترکیبی چند سیکلی الگوریتم بوث
چند سیکلی همراه با بازیابی بدون بازیابی

50 خلاصه نمایش اعداد اعشاری جمع اعشاری ضرب اعشاری نرمال سازی
سریز و underflow گرد کردن جمع اعشاری ضرب اعشاری


Download ppt "مظفر بگ محمدی دانشگاه ایلام"

Similar presentations


Ads by Google