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

Slides:



Advertisements
Similar presentations
Multiplication and Division
Advertisements

The MIPS 32 1)Project 1 Discussion? 1)HW 2 Discussion? 2)We want to get some feel for programming in an assembly language - MIPS 32 We want to fully understand.
CSE431 Chapter 3.1Irwin, PSU, 2008 CSE 431 Computer Architecture Fall 2008 Chapter 3: Arithmetic for Computers Mary Jane Irwin ( )
CSCI-365 Computer Organization Lecture Note: Some slides and/or pictures in the following are adapted from: Computer Organization and Design, Patterson.
CSCE 212 Chapter 3: Arithmetic for Computers Instructor: Jason D. Bakos.
Computer Engineering FloatingPoint page 1 Floating Point Number system corresponding to the decimal notation 1,837 * 10 significand exponent A great number.
Binary Arithmetic Binary addition Binary subtraction
Integer division Pencil and paper binary division (dividend)(divisor) 1000.
Division CPSC 321 Computer Architecture Andreas Klappenecker.
Princess Sumaya Univ. Computer Engineering Dept. Chapter 3:
Princess Sumaya Univ. Computer Engineering Dept. Chapter 3: IT Students.
Integer Multiplication and DivisionICS 233 – KFUPM © Muhamed Mudawar slide 1 Multiplicand and HI are sign-extended  Sign is the sign of the result Signed.
1 Lecture 9: Floating Point Today’s topics:  Division  IEEE 754 representations  FP arithmetic Reminder: assignment 4 will be posted later today.
Chapter 3 Arithmetic for Computers. Multiplication More complicated than addition accomplished via shifting and addition More time and more area Let's.
CS 447 – Computer Architecture Lecture 3 Computer Arithmetic (2)
Computer ArchitectureFall 2007 © September 5, 2007 Karem Sakallah CS 447 – Computer Architecture.
Booth’s Algorithm.
Arithmetic IV CPSC 321 Andreas Klappenecker. Any Questions?
Solutions and Examples or $t0, $zero, $zero# i = 0 li $t1, 101# $t1 = 101 for:beq $t0, $t1, exit# if (i==101) exit add $t2, $t0, $a1 lw $s1, 0($t2)#
Integer Arithmetic Floating Point Representation Floating Point Arithmetic Topics.
COMPUTER ARCHITECTURE & OPERATIONS I Instructor: Hao Ji.
CPSC 321 Computer Architecture ALU Design – Integer Addition, Multiplication & Division Copyright 2002 David H. Albonesi and the University of Rochester.
ECEN 248 Integer Multiplication, Number Format Adopted from Copyright 2002 David H. Albonesi and the University of Rochester.
Computer ArchitectureFall 2008 © August 27, CS 447 – Computer Architecture Lecture 4 Computer Arithmetic (2)
Computer Architecture Lecture 3: Logical circuits, computer arithmetics Piotr Bilski.
Computer Arithmetic II Instructor: Mozafar Bag-Mohammadi Spring 2006 University of Ilam.
Multiplication of signed-operands
Lecture 9: Floating Point
Computer Arithmetic II Instructor: Mozafar Bag-Mohammadi Ilam University.
Conversion to Larger Number of Bits Ex: Immediate Field (signed 16 bit) to 32 bit Positive numbers have implied 0’s to the left. So, put 16 bit number.
Princess Sumaya Univ. Computer Engineering Dept. Chapter 3:
Lecture notes Reading: Section 3.4, 3.5, 3.6 Multiplication
Restoring Unsigned Integer Division
Chapter 3 Arithmetic for Computers. Chapter 3 — Arithmetic for Computers — 2 Arithmetic for Computers Operations on integers Addition and subtraction.
Division Quotient Divisor Dividend – – Remainder.
1 Lecture 5Multiplication and Division ECE 0142 Computer Organization.
Computer Arithmetic. Integer Representation Sign-magnitude representation ’s complement representation magnitudes
Chapter 9 Computer Arithmetic
William Stallings Computer Organization and Architecture 8th Edition
More Binary Arithmetic - Multiplication
Computer Architecture & Operations I
Integer Division.
Morgan Kaufmann Publishers Arithmetic for Computers
Lecture 9: Floating Point
Floating Point Number system corresponding to the decimal notation
CS/COE0447 Computer Organization & Assembly Language
Morgan Kaufmann Publishers
Unit -2 ARITHMETIC.
William Stallings Computer Organization and Architecture 7th Edition
Topic 3d Representation of Real Numbers
ECE/CS 552: Floating Point
CSCE 350 Computer Architecture
Number Representations
CSCI206 - Computer Organization & Programming
CSCI206 - Computer Organization & Programming
ECE/CS 552: Integer Multipliers
Floating Point Arithmetic
ECEG-3202 Computer Architecture and Organization
Computer Architecture
October 15 Chapter 4 – Multiplication/Division Go to the State Fair!
Chapter 8 Computer Arithmetic
Morgan Kaufmann Publishers Arithmetic for Computers
Chapter 3 Arithmetic for Computers
Topic 3d Representation of Real Numbers
Number Representation
Number Representations
1 Lecture 5Multiplication and Division ECE 0142 Computer Organization.
Presentation transcript:

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

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

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

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

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

ضرب کننده 1 x

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

مثال

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

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

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

ضرب عدد 6 در عدد 7 Iteration Step product Initial values 0111 Multiplicand product Initial values 0111 0000 0110 1 Do nothing Shift left product 0000 0011 2 add 0111 0011 0011 1001 3 1010 1001 0101 0100 4 0010 1010

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

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

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

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

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

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)

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

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

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

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

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

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

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

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

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

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

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

مثالی دیگر (11 تقسیم بر 4) Iteration Step Divisor Remainder Initial values 00100 00000 01011 Shift rem left 1 00000 10110 1 2: Rem = Rem - Div 11100 10110 3b: Rem < 0, restore, sll 0 00001 01100 2 11101 10110 00010 11000 3 11110 10110 00101 10000 4 Rem = Rem – Div 00001 10000 3a: Rem > 0 , sll 1 00011 00001 5 11111 00001 00110 00010 Shift Rem right by 1 00011 00010

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

تقسیم بدون بازیابی فرض کنید لازم است باقیمانده را بازیابی کنید: 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، نتیجه یکسان است. اما باعث می شود که دیگر نیازی به بازیابی نداشته باشیم.

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

تقسیم بدون بازیابی (مثال دوم 11 تقسیم بر 4) Iteration Step Divisor Remainder Initial values 00100 00000 01011 Shift rem left 1 00000 10110 1 2: Rem = Rem - Div 11100 10110 3b: Rem < 0 (add next), sll 0 11001 01100 2 2: Rem = Rem + Div 11101 01100 11010 11000 3 11110 11000 11101 10000 4 Rem = Rem + Div 00001 10000 Rem > 0 (sub next), sll 1 00011 00001 5 Rem = Rem – Div 11111 00001 11110 00010 Shift Rem right by 1 11111 00010 Add (because rem is negative) 00011 00010

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

اعداد اعشاری برای نمایش عدد اعشاری از تعداد محدودی بیت استفاده می کنیم. استاندارد 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

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

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

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

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

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

توان

توان

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

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

جمع اعشاری

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

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

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

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