{"id":100,"date":"2018-07-18T09:51:26","date_gmt":"2018-07-18T09:51:26","guid":{"rendered":"http:\/\/csp2.epgpbooks.inflibnet.ac.in\/?post_type=chapter&#038;p=100"},"modified":"2018-08-03T07:14:56","modified_gmt":"2018-08-03T07:14:56","slug":"floating-point-arithmetic-unit","status":"publish","type":"chapter","link":"https:\/\/ebooks.inflibnet.ac.in\/csp2\/chapter\/floating-point-arithmetic-unit\/","title":{"rendered":"Floating Point Arithmetic Unit"},"content":{"raw":"<div>\r\n\r\n&nbsp;\r\n<p style=\"text-align: justify\">The objectives of this module are to discuss the need for floating point numbers, the standard representation used for floating point numbers and discuss how the various floating point arithmetic operations of addition, subtraction, multiplication and division are carried out.<\/p>\r\n&nbsp;\r\n\r\n<strong>Floating-point numbers and operations<\/strong>\r\n\r\n&nbsp;\r\n\r\n<strong>Representation<\/strong>\r\n\r\n&nbsp;\r\n<p style=\"text-align: justify\">When you have to represent very small or very large numbers, a fixed point representation will not do. The accuracy will be lost. Therefore, you will have to look at floating-point representations, where the binary point is assumed to be floating. When you consider a decimal number 12.34 * 107, this can also be treated as 0.1234 * 109, where 0.1234 is the fixed-point mantissa. The other part represents the exponent value, and indicates that the actual position of the binary point is 9 positions to the right (left) of the indicated binary point in the fraction. Since the binary point can be moved to any position and the exponent value adjusted appropriately, it is called a floating-point representation. By convention, you generally go in for a normalized representation, wherein the floating-point is placed to the right of the first nonzero (significant) digit. The base need not be specified explicitly and the sign, the significant digits and the signed exponent constitute the representation.<\/p>\r\n&nbsp;\r\n<p style=\"text-align: justify\">The IEEE (Institute of Electrical and Electronics Engineers) has produced a standard for floating point arithmetic. This standard specifies how single precision (32 bit) and double precision (64 bit) floating point numbers are to be represented, as well as how arithmetic should be carried out on them. The IEEE single precision floating point standard representation requires a 32 bit word, which may be represented as numbered from 0 to 31, left to right. The first bit is the sign bit, S, the next eight bits are the exponent bits, 'E', and the final 23 bits are the fraction 'F'. Instead of the signed exponent E, the value stored is an unsigned integer E\u2019 = E + 127, called the excess-127 format. Therefore, E\u2019 is in the range 0 \u00a3 E\u2019 \u00a3 255.<\/p>\r\n&nbsp;\r\n\r\nS E\u2019E\u2019E\u2019E\u2019E\u2019E\u2019E\u2019E\u2019 FFFFFFFFFFFFFFFFFFFFFFF\r\n\r\n&nbsp;\r\n\r\n0 1\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 8\u00a0 9\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 31\r\n\r\n&nbsp;\r\n\r\nThe value V represented by the word may be determined as follows:\r\n\r\n<\/div>\r\n&nbsp;\r\n<div>\r\n<ul>\r\n \t<li>If E\u2019 = 255 and F is nonzero, then V = NaN (\"Not a number\")<\/li>\r\n \t<li>If E\u2019 = 255 and F is zero and S is 1, then V = -Infinity<\/li>\r\n \t<li>If E\u2019 = 255 and F is zero and S is 0, then V = Infinity<\/li>\r\n \t<li>If 0 &lt; E&lt; 255 then V =(-1)**S * 2 ** (E-127) * (1.F) where \"1.F\" is intended to represent the binary number created by prefixing F with an implicit leading 1 and a binary point.<\/li>\r\n \t<li>If E\u2019 = 0 and F is nonzero, then V = (-1)**S * 2 ** (-126) * (0.F). These are \"unnormalized\" values.<\/li>\r\n \t<li>If E\u2019= 0 and F is zero and S is 1, then V = -0<\/li>\r\n \t<li>If E\u2019 = 0 and F is zero and S is 0, then V = 0<\/li>\r\n<\/ul>\r\nFor example,\r\n\r\n&nbsp;\r\n\r\n0 00000000 00000000000000000000000 = 0\r\n\r\n&nbsp;\r\n\r\n1 00000000 00000000000000000000000 = -0\r\n\r\n&nbsp;\r\n\r\n0 11111111 00000000000000000000000 = Infinity\r\n\r\n&nbsp;\r\n\r\n1 11111111 00000000000000000000000 = -Infinity\r\n\r\n&nbsp;\r\n\r\n0 11111111 00000100000000000000000 = NaN\r\n\r\n&nbsp;\r\n\r\n1 11111111 00100010001001010101010 = NaN\r\n\r\n&nbsp;\r\n\r\n0 10000000 00000000000000000000000 = +1 * 2**(128-127) * 1.0 = 2\r\n\r\n&nbsp;\r\n\r\n0 10000001 10100000000000000000000 = +1 * 2**(129-127) * 1.101 = 6.5\r\n\r\n&nbsp;\r\n\r\n1 10000001 10100000000000000000000 = -1 * 2**(129-127) * 1.101 = -6.5\r\n\r\n&nbsp;\r\n\r\n0\u00a0 00000001 00000000000000000000000 = +1 * 2**(1-127) * 1.0 = 2**(-126)\r\n\r\n&nbsp;\r\n\r\n0\u00a0 00000000 10000000000000000000000 = +1 * 2**(-126) * 0.1 = 2**(-127)\r\n\r\n&nbsp;\r\n\r\n0\u00a0 00000000 00000000000000000000001 = +1 * 2**(-126) *\r\n\r\n&nbsp;\r\n\r\n0.00000000000000000000001 = 2**(-149) (Smallest positive value)\r\n\r\n&nbsp;\r\n\r\n(unnormalized values)\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\nDouble Precision Numbers:\r\n\r\n&nbsp;\r\n<p style=\"text-align: justify\">The IEEE double precision floating point standard representation requires a 64-bit word, which may be represented as numbered from 0 to 63, left to right. The first bit is the sign bit, S, the next eleven bits are the excess-1023 exponent bits, E\u2019, and the final 52 bits are the fraction 'F':<\/p>\r\n&nbsp;\r\n\r\nS\u00a0 E\u2019E\u2019E\u2019E\u2019E\u2019E\u2019E\u2019E\u2019E\u2019E\u2019E\u2019\r\n\r\n&nbsp;\r\n\r\nFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\r\n\r\n&nbsp;\r\n\r\n0 1\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 11 12\r\n\r\n&nbsp;\r\n\r\n63\r\n\r\n&nbsp;\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">The value V represented by the word may be determined as follows:<\/span>\r\n\r\n<\/div>\r\n<div>\r\n<ul>\r\n \t<li>If E\u2019 = 2047 and F is nonzero, then V = NaN (\"Not a number\")<\/li>\r\n \t<li>If E\u2019= 2047 and F is zero and S is 1, then V = -Infinity<\/li>\r\n \t<li>If E\u2019= 2047 and F is zero and S is 0, then V = Infinity<\/li>\r\n \t<li>If 0 &lt; E\u2019&lt; 2047 then V = (-1)**S * 2 ** (E-1023) * (1.F) where \"1.F\" is intended to represent the binary number created by prefixing F with an implicit leading 1 and a binary point.<\/li>\r\n \t<li>If E\u2019= 0 and F is nonzero, then V = (-1)**S * 2 ** (-1022) * (0.F) These are \"unnormalized\" values.<\/li>\r\n \t<li>If E\u2019= 0 and F is zero and S is 1, then V = - 0<\/li>\r\n \t<li>If E\u2019= 0 and F is zero and S is 0, then V = 0<\/li>\r\n<\/ul>\r\n&nbsp;\r\n\r\n<strong>Arithmetic unit<\/strong>\r\n\r\n&nbsp;\r\n<p style=\"text-align: justify\">Arithmetic operations on floating point numbers consist of addition, subtraction, multiplication and division. The operations are done with algorithms similar to those used on sign magnitude integers (because of the similarity of representation) -- example, only add numbers of the same sign. If the numbers are of opposite sign, must do subtraction.<\/p>\r\n&nbsp;\r\n\r\n<strong>ADDITION<\/strong>\r\n\r\n&nbsp;\r\n\r\nExample on decimal value given in scientific notation:\r\n\r\n&nbsp;\r\n\r\n3.25 x 10 ** 3\r\n\r\n+ 2.63 x 10 ** -1\r\n\r\n-----------------\r\n\r\n<\/div>\r\n<div>\r\n\r\n\u00a0 \u00a0 first step:\u00a0align decimal points\r\n\r\nsecond step:\u00a0add\r\n\r\n<\/div>\r\n<div>\r\n\r\n&nbsp;\r\n\r\n3.25\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 x 10 ** 3\r\n\r\n+\u00a0 0.000263 x 10 ** 3\r\n\r\n--------------------\r\n\r\n3.250263 x 10 ** 3\r\n\r\n(presumes use of infinite precision, without regard for accuracy)\r\n\r\n&nbsp;\r\n\r\nthird step:\u00a0 normalize the result (already normalized!)\r\n\r\n&nbsp;\r\n\r\nExample on floating pt. value given in binary:\r\n\r\n&nbsp;\r\n\r\n.25 =\u00a0\u00a0\u00a0 0 01111101 00000000000000000000000\r\n\r\n<\/div>\r\n<span style=\"text-align: initial;font-size: 1em\">\u00a0100 =\u00a0\u00a0\u00a0 0 10000101 10010000000000000000000<\/span>\r\n<div>\r\n\r\nTo add these fl. pt. representations,\r\n\r\n&nbsp;\r\n\r\nstep 1:\u00a0 align radix points\r\n\r\n&nbsp;\r\n\r\nshifting the mantissa left by 1 bit decreases the exponent by 1\r\n\r\n&nbsp;\r\n\r\nshifting the mantissa right by 1 bit increases the exponent by 1\r\n\r\n&nbsp;\r\n\r\nwe want to shift the mantissa right, because the bits that fall off the end should come from the least significant end of the mantissa\r\n\r\n&nbsp;\r\n\r\n-&gt; choose to shift the .25, since we want to increase it's exponent.\r\n\r\n-&gt; shift by\u00a0 10000101\r\n\r\n-01111101\r\n\r\n---------\r\n\r\n00001000\u00a0\u00a0\u00a0 (8) places.\r\n\r\n&nbsp;\r\n\r\n0 01111101 00000000000000000000000 (original value)\r\n\r\n0 01111110 10000000000000000000000 (shifted 1 place)\r\n\r\n(note that hidden bit is shifted into msb of mantissa)\r\n\r\n0 01111111 01000000000000000000000 (shifted 2 places)\r\n\r\n0 10000000 00100000000000000000000 (shifted 3 places)\r\n\r\n0 10000001 00010000000000000000000 (shifted 4 places)\r\n\r\n0 10000010 00001000000000000000000 (shifted 5 places)\r\n\r\n&nbsp;\r\n\r\n0 10000011 00000100000000000000000 (shifted 6 places)\r\n\r\n0 10000100 00000010000000000000000 (shifted 7 places)\r\n\r\n0 10000101 00000001000000000000000 (shifted 8 places)\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\nstep 2: add (don't forget the hidden bit for the 100)\r\n\r\n&nbsp;\r\n\r\n0 10000101 1.10010000000000000000000\u00a0 (100)\r\n\r\n+\u00a0\u00a0\u00a0 0 10000101 0.00000001000000000000000\u00a0 (.25)\r\n\r\n---------------------------------------\r\n\r\n0 10000101 1.10010001000000000000000\r\n\r\n&nbsp;\r\n\r\nstep 3:\u00a0 normalize the result (get the \"hidden bit\" to be a 1)\r\n\r\nIt already is for this example.\r\n<table>\r\n<tbody>\r\n<tr>\r\n<td>result is<\/td>\r\n<td>0 10000101 10010001000000000000000<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<\/div>\r\n&nbsp;\r\n\r\n<strong style=\"text-align: initial;font-size: 1em\">SUBTRACTION<\/strong>\r\n<div>\r\n\r\n&nbsp;\r\n\r\nSame as addition as far as alignment of radix points\r\n<p style=\"text-align: justify\">Then the algorithm for subtraction of sign mag. numbers takes over.<\/p>\r\n&nbsp;\r\n\r\nbefore subtracting,\r\n\r\ncompare magnitudes (don't forget the hidden bit!)\r\n\r\nchange sign bit if order of operands is changed.\r\n\r\n&nbsp;\r\n\r\ndon't forget to normalize number afterward.\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n<strong>MULTIPLICATION<\/strong>\r\n\r\n&nbsp;\r\n\r\nExample on decimal values given in scientific notation:\r\n\r\n&nbsp;\r\n\r\n3.0 x 10 ** 1\r\n\r\n+\u00a0 0.5 x 10 ** 2\r\n\r\n-----------------\r\n\r\n&nbsp;\r\n\r\nAlgorithm:\u00a0 multiply mantissas\r\n\r\nadd exponents\r\n\r\n&nbsp;\r\n\r\n3.0 x 10 ** 1\r\n\r\n+\u00a0 0.5 x 10 ** 2\r\n\r\n-----------------\r\n\r\n1.50 x 10 ** 3\r\n\r\n&nbsp;\r\n\r\nExample in binary:\u00a0\u00a0\u00a0\u00a0 Consider a mantissa that is only 4 bits.\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n0 10000100 0100\r\n\r\nx 1 00111100 1100\r\n\r\n&nbsp;\r\n\r\n<img class=\"size-full wp-image-103 alignleft\" src=\"http:\/\/csp2.epgpbooks.inflibnet.ac.in\/wp-content\/uploads\/sites\/46\/2018\/07\/2-54.png\" alt=\"\" width=\"292\" height=\"178\" \/>\r\n\r\n<\/div>\r\n&nbsp;\r\n<div>\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n<strong>Add exponents:<\/strong>\r\n\r\n&nbsp;\r\n\r\nalways add true exponents (otherwise the bias gets added in twice)\r\n\r\n<\/div>\r\n<img class=\" wp-image-104 aligncenter\" src=\"http:\/\/csp2.epgpbooks.inflibnet.ac.in\/wp-content\/uploads\/sites\/46\/2018\/07\/2-55.png\" alt=\"\" width=\"413\" height=\"492\" \/>\r\n\r\n<strong style=\"text-align: initial;font-size: 1em\">DIVISION<\/strong>\r\n<div>\r\n\r\nIt is similar to multiplication.\r\n\r\ndo unsigned division on the mantissas (don't forget the hidden bit)\r\n\r\nsubtract TRUE exponents\r\n\r\n&nbsp;\r\n\r\nThe organization of a floating point adder unit and the algorithm is given below.\r\n\r\n<\/div>\r\n<div>\r\n\r\n<img class=\"size-full wp-image-105 aligncenter\" src=\"http:\/\/csp2.epgpbooks.inflibnet.ac.in\/wp-content\/uploads\/sites\/46\/2018\/07\/2-56.png\" alt=\"\" width=\"346\" height=\"544\" \/>\r\n\r\n&nbsp;\r\n\r\nThe floating point multiplication algorithm is given below. A similar algorithm based on the steps discussed before can be used for division.\r\n\r\n<\/div>\r\n<div>\r\n\r\n<img class=\"size-full wp-image-106 aligncenter\" src=\"http:\/\/csp2.epgpbooks.inflibnet.ac.in\/wp-content\/uploads\/sites\/46\/2018\/07\/2-57.png\" alt=\"\" width=\"633\" height=\"511\" \/>\r\n\r\n<img class=\"size-full wp-image-107 aligncenter\" src=\"http:\/\/csp2.epgpbooks.inflibnet.ac.in\/wp-content\/uploads\/sites\/46\/2018\/07\/2-58.png\" alt=\"\" width=\"428\" height=\"519\" \/>\r\n\r\n&nbsp;\r\n\r\n<strong>Rounding<\/strong>\r\n\r\n&nbsp;\r\n<p style=\"text-align: justify\">The floating point arithmetic operations discussed above may produce a result with more digits than can be represented in 1.M. In such cases, the result must be <em>rounded<\/em> to fit into the available number of M positions. The extra bits that are used in intermediate calculations to improve the precision of the result are called <em>guard bits. <\/em>It is only a tradeoff of hardware cost (keeping extra bits) and speed versus accumulated rounding error, because finally these extra bits have to be rounded off to conform to the IEEE standard.<\/p>\r\n&nbsp;\r\n\r\n<strong>Rounding Methods:<\/strong>\r\n\r\n<\/div>\r\n<ul>\r\n \t<li>Truncate<\/li>\r\n<\/ul>\r\n&nbsp;\r\n\r\n\u2013\u00a0\u00a0 Remove all digits beyond those supported\r\n\r\n\u2013\u00a0\u00a0 1.00100 -&gt; 1.00\r\n<ul>\r\n \t<li>Round up to the next value<\/li>\r\n<\/ul>\r\n&nbsp;\r\n\r\n\u2013\u00a0\u00a0 1.00100 -&gt; 1.01\r\n<ul>\r\n \t<li>Round down to the previous value<\/li>\r\n<\/ul>\r\n&nbsp;\r\n\r\n\u2013\u00a0\u00a0 1.00100 -&gt; 1.00\r\n\r\n\u2013\u00a0\u00a0 Differs from Truncate for negative numbers\r\n<ul>\r\n \t<li>Round-to-nearest-even<\/li>\r\n<\/ul>\r\n&nbsp;\r\n\r\n\u2013\u00a0\u00a0 Rounds to the even value (the one with an LSB of 0)\r\n\r\n\u2013\u00a0\u00a0 1.00100 -&gt; 1.00\r\n\r\n\u2013\u00a0\u00a0 1.01100 -&gt; 1.10\r\n\r\n\u2013\u00a0\u00a0 Produces zero average bias\r\n\r\n\u2013\u00a0\u00a0 Default mode\r\n\r\nA product may have twice as many digits as the multiplier and multiplicand\r\n\r\n\u2013\u00a0\u00a0 1.11 x 1.01 = 10.0011\r\n\r\n&nbsp;\r\n<p style=\"text-align: justify\">For round-to-nearest-even, we need to know the value to the right of the LSB (<em>round bit<\/em>) and whether any other digits to the right of the round digit are 1\u2019s (the <em>sticky bit <\/em>is the OR of these digits). The IEEE standard requires the use of 3 extra bits of less significance than the 24 bits (of mantissa) implied in the single precision representation \u2013 guard bit, round bit and sticky bit. When a mantissa is to be shifted in order to align radix points, the bits that fall off the least significant end of the mantissa go into these extra bits (guard, round, and sticky bits). These bits can also be set by the normalization step in multiplication, and by extra bits of quotient (remainder) in division. The guard and round bits are just 2 extra bits of precision that are used in calculations. The sticky bit is an indication of what is\/could be in lesser significant bits that are not kept. If a value of 1 ever is shifted into the sticky bit position, that sticky bit remains a 1 (\"sticks\" at 1), despite further shifts.<\/p>\r\n&nbsp;\r\n<p style=\"text-align: justify\">To summarize, in his module we have discussed the need for floating point numbers, the IEEE standard for representing floating point numbers, Floating point addition \/ subtraction, multiplication, division and the various rounding methods.<\/p>\r\n&nbsp;\r\n\r\n<strong>Web Links \/ Supporting Materials<\/strong>\r\n\r\n&nbsp;\r\n<ul>\r\n \t<li>Computer Organization, Carl Hamacher, Zvonko Vranesic and Safwat Zaky, 5th.Edition, McGraw- Hill Higher Education, 2011.<\/li>\r\n \t<li style=\"text-align: justify\">Computer Organization and Design \u2013 The Hardware \/ Software Interface, David A. Patterson and John L. Hennessy, 4th.Edition, Morgan Kaufmann, Elsevier, 2009.<\/li>\r\n<\/ul>\r\n&nbsp;\r\n\r\n&nbsp;","rendered":"<div>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\">The objectives of this module are to discuss the need for floating point numbers, the standard representation used for floating point numbers and discuss how the various floating point arithmetic operations of addition, subtraction, multiplication and division are carried out.<\/p>\n<p>&nbsp;<\/p>\n<p><strong>Floating-point numbers and operations<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p><strong>Representation<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\">When you have to represent very small or very large numbers, a fixed point representation will not do. The accuracy will be lost. Therefore, you will have to look at floating-point representations, where the binary point is assumed to be floating. When you consider a decimal number 12.34 * 107, this can also be treated as 0.1234 * 109, where 0.1234 is the fixed-point mantissa. The other part represents the exponent value, and indicates that the actual position of the binary point is 9 positions to the right (left) of the indicated binary point in the fraction. Since the binary point can be moved to any position and the exponent value adjusted appropriately, it is called a floating-point representation. By convention, you generally go in for a normalized representation, wherein the floating-point is placed to the right of the first nonzero (significant) digit. The base need not be specified explicitly and the sign, the significant digits and the signed exponent constitute the representation.<\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\">The IEEE (Institute of Electrical and Electronics Engineers) has produced a standard for floating point arithmetic. This standard specifies how single precision (32 bit) and double precision (64 bit) floating point numbers are to be represented, as well as how arithmetic should be carried out on them. The IEEE single precision floating point standard representation requires a 32 bit word, which may be represented as numbered from 0 to 31, left to right. The first bit is the sign bit, S, the next eight bits are the exponent bits, &#8216;E&#8217;, and the final 23 bits are the fraction &#8216;F&#8217;. Instead of the signed exponent E, the value stored is an unsigned integer E\u2019 = E + 127, called the excess-127 format. Therefore, E\u2019 is in the range 0 \u00a3 E\u2019 \u00a3 255.<\/p>\n<p>&nbsp;<\/p>\n<p>S E\u2019E\u2019E\u2019E\u2019E\u2019E\u2019E\u2019E\u2019 FFFFFFFFFFFFFFFFFFFFFFF<\/p>\n<p>&nbsp;<\/p>\n<p>0 1\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 8\u00a0 9\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 31<\/p>\n<p>&nbsp;<\/p>\n<p>The value V represented by the word may be determined as follows:<\/p>\n<\/div>\n<p>&nbsp;<\/p>\n<div>\n<ul>\n<li>If E\u2019 = 255 and F is nonzero, then V = NaN (&#8220;Not a number&#8221;)<\/li>\n<li>If E\u2019 = 255 and F is zero and S is 1, then V = -Infinity<\/li>\n<li>If E\u2019 = 255 and F is zero and S is 0, then V = Infinity<\/li>\n<li>If 0 &lt; E&lt; 255 then V =(-1)**S * 2 ** (E-127) * (1.F) where &#8220;1.F&#8221; is intended to represent the binary number created by prefixing F with an implicit leading 1 and a binary point.<\/li>\n<li>If E\u2019 = 0 and F is nonzero, then V = (-1)**S * 2 ** (-126) * (0.F). These are &#8220;unnormalized&#8221; values.<\/li>\n<li>If E\u2019= 0 and F is zero and S is 1, then V = -0<\/li>\n<li>If E\u2019 = 0 and F is zero and S is 0, then V = 0<\/li>\n<\/ul>\n<p>For example,<\/p>\n<p>&nbsp;<\/p>\n<p>0 00000000 00000000000000000000000 = 0<\/p>\n<p>&nbsp;<\/p>\n<p>1 00000000 00000000000000000000000 = -0<\/p>\n<p>&nbsp;<\/p>\n<p>0 11111111 00000000000000000000000 = Infinity<\/p>\n<p>&nbsp;<\/p>\n<p>1 11111111 00000000000000000000000 = -Infinity<\/p>\n<p>&nbsp;<\/p>\n<p>0 11111111 00000100000000000000000 = NaN<\/p>\n<p>&nbsp;<\/p>\n<p>1 11111111 00100010001001010101010 = NaN<\/p>\n<p>&nbsp;<\/p>\n<p>0 10000000 00000000000000000000000 = +1 * 2**(128-127) * 1.0 = 2<\/p>\n<p>&nbsp;<\/p>\n<p>0 10000001 10100000000000000000000 = +1 * 2**(129-127) * 1.101 = 6.5<\/p>\n<p>&nbsp;<\/p>\n<p>1 10000001 10100000000000000000000 = -1 * 2**(129-127) * 1.101 = -6.5<\/p>\n<p>&nbsp;<\/p>\n<p>0\u00a0 00000001 00000000000000000000000 = +1 * 2**(1-127) * 1.0 = 2**(-126)<\/p>\n<p>&nbsp;<\/p>\n<p>0\u00a0 00000000 10000000000000000000000 = +1 * 2**(-126) * 0.1 = 2**(-127)<\/p>\n<p>&nbsp;<\/p>\n<p>0\u00a0 00000000 00000000000000000000001 = +1 * 2**(-126) *<\/p>\n<p>&nbsp;<\/p>\n<p>0.00000000000000000000001 = 2**(-149) (Smallest positive value)<\/p>\n<p>&nbsp;<\/p>\n<p>(unnormalized values)<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>Double Precision Numbers:<\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\">The IEEE double precision floating point standard representation requires a 64-bit word, which may be represented as numbered from 0 to 63, left to right. The first bit is the sign bit, S, the next eleven bits are the excess-1023 exponent bits, E\u2019, and the final 52 bits are the fraction &#8216;F&#8217;:<\/p>\n<p>&nbsp;<\/p>\n<p>S\u00a0 E\u2019E\u2019E\u2019E\u2019E\u2019E\u2019E\u2019E\u2019E\u2019E\u2019E\u2019<\/p>\n<p>&nbsp;<\/p>\n<p>FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF<\/p>\n<p>&nbsp;<\/p>\n<p>0 1\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 11 12<\/p>\n<p>&nbsp;<\/p>\n<p>63<\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">The value V represented by the word may be determined as follows:<\/span><\/p>\n<\/div>\n<div>\n<ul>\n<li>If E\u2019 = 2047 and F is nonzero, then V = NaN (&#8220;Not a number&#8221;)<\/li>\n<li>If E\u2019= 2047 and F is zero and S is 1, then V = -Infinity<\/li>\n<li>If E\u2019= 2047 and F is zero and S is 0, then V = Infinity<\/li>\n<li>If 0 &lt; E\u2019&lt; 2047 then V = (-1)**S * 2 ** (E-1023) * (1.F) where &#8220;1.F&#8221; is intended to represent the binary number created by prefixing F with an implicit leading 1 and a binary point.<\/li>\n<li>If E\u2019= 0 and F is nonzero, then V = (-1)**S * 2 ** (-1022) * (0.F) These are &#8220;unnormalized&#8221; values.<\/li>\n<li>If E\u2019= 0 and F is zero and S is 1, then V = &#8211; 0<\/li>\n<li>If E\u2019= 0 and F is zero and S is 0, then V = 0<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p><strong>Arithmetic unit<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\">Arithmetic operations on floating point numbers consist of addition, subtraction, multiplication and division. The operations are done with algorithms similar to those used on sign magnitude integers (because of the similarity of representation) &#8212; example, only add numbers of the same sign. If the numbers are of opposite sign, must do subtraction.<\/p>\n<p>&nbsp;<\/p>\n<p><strong>ADDITION<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p>Example on decimal value given in scientific notation:<\/p>\n<p>&nbsp;<\/p>\n<p>3.25 x 10 ** 3<\/p>\n<p>+ 2.63 x 10 ** -1<\/p>\n<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<\/p>\n<\/div>\n<div>\n<p>\u00a0 \u00a0 first step:\u00a0align decimal points<\/p>\n<p>second step:\u00a0add<\/p>\n<\/div>\n<div>\n<p>&nbsp;<\/p>\n<p>3.25\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 x 10 ** 3<\/p>\n<p>+\u00a0 0.000263 x 10 ** 3<\/p>\n<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<\/p>\n<p>3.250263 x 10 ** 3<\/p>\n<p>(presumes use of infinite precision, without regard for accuracy)<\/p>\n<p>&nbsp;<\/p>\n<p>third step:\u00a0 normalize the result (already normalized!)<\/p>\n<p>&nbsp;<\/p>\n<p>Example on floating pt. value given in binary:<\/p>\n<p>&nbsp;<\/p>\n<p>.25 =\u00a0\u00a0\u00a0 0 01111101 00000000000000000000000<\/p>\n<\/div>\n<p><span style=\"text-align: initial;font-size: 1em\">\u00a0100 =\u00a0\u00a0\u00a0 0 10000101 10010000000000000000000<\/span><\/p>\n<div>\n<p>To add these fl. pt. representations,<\/p>\n<p>&nbsp;<\/p>\n<p>step 1:\u00a0 align radix points<\/p>\n<p>&nbsp;<\/p>\n<p>shifting the mantissa left by 1 bit decreases the exponent by 1<\/p>\n<p>&nbsp;<\/p>\n<p>shifting the mantissa right by 1 bit increases the exponent by 1<\/p>\n<p>&nbsp;<\/p>\n<p>we want to shift the mantissa right, because the bits that fall off the end should come from the least significant end of the mantissa<\/p>\n<p>&nbsp;<\/p>\n<p>-&gt; choose to shift the .25, since we want to increase it&#8217;s exponent.<\/p>\n<p>-&gt; shift by\u00a0 10000101<\/p>\n<p>-01111101<\/p>\n<p>&#8212;&#8212;&#8212;<\/p>\n<p>00001000\u00a0\u00a0\u00a0 (8) places.<\/p>\n<p>&nbsp;<\/p>\n<p>0 01111101 00000000000000000000000 (original value)<\/p>\n<p>0 01111110 10000000000000000000000 (shifted 1 place)<\/p>\n<p>(note that hidden bit is shifted into msb of mantissa)<\/p>\n<p>0 01111111 01000000000000000000000 (shifted 2 places)<\/p>\n<p>0 10000000 00100000000000000000000 (shifted 3 places)<\/p>\n<p>0 10000001 00010000000000000000000 (shifted 4 places)<\/p>\n<p>0 10000010 00001000000000000000000 (shifted 5 places)<\/p>\n<p>&nbsp;<\/p>\n<p>0 10000011 00000100000000000000000 (shifted 6 places)<\/p>\n<p>0 10000100 00000010000000000000000 (shifted 7 places)<\/p>\n<p>0 10000101 00000001000000000000000 (shifted 8 places)<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>step 2: add (don&#8217;t forget the hidden bit for the 100)<\/p>\n<p>&nbsp;<\/p>\n<p>0 10000101 1.10010000000000000000000\u00a0 (100)<\/p>\n<p>+\u00a0\u00a0\u00a0 0 10000101 0.00000001000000000000000\u00a0 (.25)<\/p>\n<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<\/p>\n<p>0 10000101 1.10010001000000000000000<\/p>\n<p>&nbsp;<\/p>\n<p>step 3:\u00a0 normalize the result (get the &#8220;hidden bit&#8221; to be a 1)<\/p>\n<p>It already is for this example.<\/p>\n<table>\n<tbody>\n<tr>\n<td>result is<\/td>\n<td>0 10000101 10010001000000000000000<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>&nbsp;<\/p>\n<p><strong style=\"text-align: initial;font-size: 1em\">SUBTRACTION<\/strong><\/p>\n<div>\n<p>&nbsp;<\/p>\n<p>Same as addition as far as alignment of radix points<\/p>\n<p style=\"text-align: justify\">Then the algorithm for subtraction of sign mag. numbers takes over.<\/p>\n<p>&nbsp;<\/p>\n<p>before subtracting,<\/p>\n<p>compare magnitudes (don&#8217;t forget the hidden bit!)<\/p>\n<p>change sign bit if order of operands is changed.<\/p>\n<p>&nbsp;<\/p>\n<p>don&#8217;t forget to normalize number afterward.<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p><strong>MULTIPLICATION<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p>Example on decimal values given in scientific notation:<\/p>\n<p>&nbsp;<\/p>\n<p>3.0 x 10 ** 1<\/p>\n<p>+\u00a0 0.5 x 10 ** 2<\/p>\n<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<\/p>\n<p>&nbsp;<\/p>\n<p>Algorithm:\u00a0 multiply mantissas<\/p>\n<p>add exponents<\/p>\n<p>&nbsp;<\/p>\n<p>3.0 x 10 ** 1<\/p>\n<p>+\u00a0 0.5 x 10 ** 2<\/p>\n<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<\/p>\n<p>1.50 x 10 ** 3<\/p>\n<p>&nbsp;<\/p>\n<p>Example in binary:\u00a0\u00a0\u00a0\u00a0 Consider a mantissa that is only 4 bits.<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>0 10000100 0100<\/p>\n<p>x 1 00111100 1100<\/p>\n<p>&nbsp;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-103 alignleft\" src=\"http:\/\/csp2.epgpbooks.inflibnet.ac.in\/wp-content\/uploads\/sites\/46\/2018\/07\/2-54.png\" alt=\"\" width=\"292\" height=\"178\" srcset=\"https:\/\/ebooks.inflibnet.ac.in\/csp2\/wp-content\/uploads\/sites\/46\/2018\/07\/2-54.png 292w, https:\/\/ebooks.inflibnet.ac.in\/csp2\/wp-content\/uploads\/sites\/46\/2018\/07\/2-54-65x40.png 65w, https:\/\/ebooks.inflibnet.ac.in\/csp2\/wp-content\/uploads\/sites\/46\/2018\/07\/2-54-225x137.png 225w\" sizes=\"auto, (max-width: 292px) 100vw, 292px\" \/><\/p>\n<\/div>\n<p>&nbsp;<\/p>\n<div>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p><strong>Add exponents:<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p>always add true exponents (otherwise the bias gets added in twice)<\/p>\n<\/div>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-104 aligncenter\" src=\"http:\/\/csp2.epgpbooks.inflibnet.ac.in\/wp-content\/uploads\/sites\/46\/2018\/07\/2-55.png\" alt=\"\" width=\"413\" height=\"492\" srcset=\"https:\/\/ebooks.inflibnet.ac.in\/csp2\/wp-content\/uploads\/sites\/46\/2018\/07\/2-55.png 393w, https:\/\/ebooks.inflibnet.ac.in\/csp2\/wp-content\/uploads\/sites\/46\/2018\/07\/2-55-252x300.png 252w, https:\/\/ebooks.inflibnet.ac.in\/csp2\/wp-content\/uploads\/sites\/46\/2018\/07\/2-55-65x77.png 65w, https:\/\/ebooks.inflibnet.ac.in\/csp2\/wp-content\/uploads\/sites\/46\/2018\/07\/2-55-225x268.png 225w, https:\/\/ebooks.inflibnet.ac.in\/csp2\/wp-content\/uploads\/sites\/46\/2018\/07\/2-55-350x417.png 350w\" sizes=\"auto, (max-width: 413px) 100vw, 413px\" \/><\/p>\n<p><strong style=\"text-align: initial;font-size: 1em\">DIVISION<\/strong><\/p>\n<div>\n<p>It is similar to multiplication.<\/p>\n<p>do unsigned division on the mantissas (don&#8217;t forget the hidden bit)<\/p>\n<p>subtract TRUE exponents<\/p>\n<p>&nbsp;<\/p>\n<p>The organization of a floating point adder unit and the algorithm is given below.<\/p>\n<\/div>\n<div>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-105 aligncenter\" src=\"http:\/\/csp2.epgpbooks.inflibnet.ac.in\/wp-content\/uploads\/sites\/46\/2018\/07\/2-56.png\" alt=\"\" width=\"346\" height=\"544\" srcset=\"https:\/\/ebooks.inflibnet.ac.in\/csp2\/wp-content\/uploads\/sites\/46\/2018\/07\/2-56.png 346w, https:\/\/ebooks.inflibnet.ac.in\/csp2\/wp-content\/uploads\/sites\/46\/2018\/07\/2-56-191x300.png 191w, https:\/\/ebooks.inflibnet.ac.in\/csp2\/wp-content\/uploads\/sites\/46\/2018\/07\/2-56-65x102.png 65w, https:\/\/ebooks.inflibnet.ac.in\/csp2\/wp-content\/uploads\/sites\/46\/2018\/07\/2-56-225x354.png 225w\" sizes=\"auto, (max-width: 346px) 100vw, 346px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>The floating point multiplication algorithm is given below. A similar algorithm based on the steps discussed before can be used for division.<\/p>\n<\/div>\n<div>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-106 aligncenter\" src=\"http:\/\/csp2.epgpbooks.inflibnet.ac.in\/wp-content\/uploads\/sites\/46\/2018\/07\/2-57.png\" alt=\"\" width=\"633\" height=\"511\" srcset=\"https:\/\/ebooks.inflibnet.ac.in\/csp2\/wp-content\/uploads\/sites\/46\/2018\/07\/2-57.png 633w, https:\/\/ebooks.inflibnet.ac.in\/csp2\/wp-content\/uploads\/sites\/46\/2018\/07\/2-57-300x242.png 300w, https:\/\/ebooks.inflibnet.ac.in\/csp2\/wp-content\/uploads\/sites\/46\/2018\/07\/2-57-65x52.png 65w, https:\/\/ebooks.inflibnet.ac.in\/csp2\/wp-content\/uploads\/sites\/46\/2018\/07\/2-57-225x182.png 225w, https:\/\/ebooks.inflibnet.ac.in\/csp2\/wp-content\/uploads\/sites\/46\/2018\/07\/2-57-350x283.png 350w\" sizes=\"auto, (max-width: 633px) 100vw, 633px\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-107 aligncenter\" src=\"http:\/\/csp2.epgpbooks.inflibnet.ac.in\/wp-content\/uploads\/sites\/46\/2018\/07\/2-58.png\" alt=\"\" width=\"428\" height=\"519\" srcset=\"https:\/\/ebooks.inflibnet.ac.in\/csp2\/wp-content\/uploads\/sites\/46\/2018\/07\/2-58.png 428w, https:\/\/ebooks.inflibnet.ac.in\/csp2\/wp-content\/uploads\/sites\/46\/2018\/07\/2-58-247x300.png 247w, https:\/\/ebooks.inflibnet.ac.in\/csp2\/wp-content\/uploads\/sites\/46\/2018\/07\/2-58-65x79.png 65w, https:\/\/ebooks.inflibnet.ac.in\/csp2\/wp-content\/uploads\/sites\/46\/2018\/07\/2-58-225x273.png 225w, https:\/\/ebooks.inflibnet.ac.in\/csp2\/wp-content\/uploads\/sites\/46\/2018\/07\/2-58-350x424.png 350w\" sizes=\"auto, (max-width: 428px) 100vw, 428px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p><strong>Rounding<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\">The floating point arithmetic operations discussed above may produce a result with more digits than can be represented in 1.M. In such cases, the result must be <em>rounded<\/em> to fit into the available number of M positions. The extra bits that are used in intermediate calculations to improve the precision of the result are called <em>guard bits. <\/em>It is only a tradeoff of hardware cost (keeping extra bits) and speed versus accumulated rounding error, because finally these extra bits have to be rounded off to conform to the IEEE standard.<\/p>\n<p>&nbsp;<\/p>\n<p><strong>Rounding Methods:<\/strong><\/p>\n<\/div>\n<ul>\n<li>Truncate<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p>\u2013\u00a0\u00a0 Remove all digits beyond those supported<\/p>\n<p>\u2013\u00a0\u00a0 1.00100 -&gt; 1.00<\/p>\n<ul>\n<li>Round up to the next value<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p>\u2013\u00a0\u00a0 1.00100 -&gt; 1.01<\/p>\n<ul>\n<li>Round down to the previous value<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p>\u2013\u00a0\u00a0 1.00100 -&gt; 1.00<\/p>\n<p>\u2013\u00a0\u00a0 Differs from Truncate for negative numbers<\/p>\n<ul>\n<li>Round-to-nearest-even<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p>\u2013\u00a0\u00a0 Rounds to the even value (the one with an LSB of 0)<\/p>\n<p>\u2013\u00a0\u00a0 1.00100 -&gt; 1.00<\/p>\n<p>\u2013\u00a0\u00a0 1.01100 -&gt; 1.10<\/p>\n<p>\u2013\u00a0\u00a0 Produces zero average bias<\/p>\n<p>\u2013\u00a0\u00a0 Default mode<\/p>\n<p>A product may have twice as many digits as the multiplier and multiplicand<\/p>\n<p>\u2013\u00a0\u00a0 1.11 x 1.01 = 10.0011<\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\">For round-to-nearest-even, we need to know the value to the right of the LSB (<em>round bit<\/em>) and whether any other digits to the right of the round digit are 1\u2019s (the <em>sticky bit <\/em>is the OR of these digits). The IEEE standard requires the use of 3 extra bits of less significance than the 24 bits (of mantissa) implied in the single precision representation \u2013 guard bit, round bit and sticky bit. When a mantissa is to be shifted in order to align radix points, the bits that fall off the least significant end of the mantissa go into these extra bits (guard, round, and sticky bits). These bits can also be set by the normalization step in multiplication, and by extra bits of quotient (remainder) in division. The guard and round bits are just 2 extra bits of precision that are used in calculations. The sticky bit is an indication of what is\/could be in lesser significant bits that are not kept. If a value of 1 ever is shifted into the sticky bit position, that sticky bit remains a 1 (&#8220;sticks&#8221; at 1), despite further shifts.<\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\">To summarize, in his module we have discussed the need for floating point numbers, the IEEE standard for representing floating point numbers, Floating point addition \/ subtraction, multiplication, division and the various rounding methods.<\/p>\n<p>&nbsp;<\/p>\n<p><strong>Web Links \/ Supporting Materials<\/strong><\/p>\n<p>&nbsp;<\/p>\n<ul>\n<li>Computer Organization, Carl Hamacher, Zvonko Vranesic and Safwat Zaky, 5th.Edition, McGraw- Hill Higher Education, 2011.<\/li>\n<li style=\"text-align: justify\">Computer Organization and Design \u2013 The Hardware \/ Software Interface, David A. Patterson and John L. Hennessy, 4th.Edition, Morgan Kaufmann, Elsevier, 2009.<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"author":2,"menu_order":7,"template":"","meta":{"_acf_changed":false,"pb_show_title":"on","pb_short_title":"","pb_subtitle":"","pb_authors":["dr-a-p-shanthi"],"pb_section_license":""},"chapter-type":[],"contributor":[58],"license":[],"class_list":["post-100","chapter","type-chapter","status-publish","hentry","contributor-dr-a-p-shanthi"],"part":3,"_links":{"self":[{"href":"https:\/\/ebooks.inflibnet.ac.in\/csp2\/wp-json\/pressbooks\/v2\/chapters\/100","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ebooks.inflibnet.ac.in\/csp2\/wp-json\/pressbooks\/v2\/chapters"}],"about":[{"href":"https:\/\/ebooks.inflibnet.ac.in\/csp2\/wp-json\/wp\/v2\/types\/chapter"}],"author":[{"embeddable":true,"href":"https:\/\/ebooks.inflibnet.ac.in\/csp2\/wp-json\/wp\/v2\/users\/2"}],"version-history":[{"count":4,"href":"https:\/\/ebooks.inflibnet.ac.in\/csp2\/wp-json\/pressbooks\/v2\/chapters\/100\/revisions"}],"predecessor-version":[{"id":441,"href":"https:\/\/ebooks.inflibnet.ac.in\/csp2\/wp-json\/pressbooks\/v2\/chapters\/100\/revisions\/441"}],"part":[{"href":"https:\/\/ebooks.inflibnet.ac.in\/csp2\/wp-json\/pressbooks\/v2\/parts\/3"}],"metadata":[{"href":"https:\/\/ebooks.inflibnet.ac.in\/csp2\/wp-json\/pressbooks\/v2\/chapters\/100\/metadata\/"}],"wp:attachment":[{"href":"https:\/\/ebooks.inflibnet.ac.in\/csp2\/wp-json\/wp\/v2\/media?parent=100"}],"wp:term":[{"taxonomy":"chapter-type","embeddable":true,"href":"https:\/\/ebooks.inflibnet.ac.in\/csp2\/wp-json\/pressbooks\/v2\/chapter-type?post=100"},{"taxonomy":"contributor","embeddable":true,"href":"https:\/\/ebooks.inflibnet.ac.in\/csp2\/wp-json\/wp\/v2\/contributor?post=100"},{"taxonomy":"license","embeddable":true,"href":"https:\/\/ebooks.inflibnet.ac.in\/csp2\/wp-json\/wp\/v2\/license?post=100"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}