Embedded Systems and Computer Architecture
()
About this ebook
- A core text for academic modules on microprocessors, embedded systems and computer architecture
- A practical design-orientated approach
Related to Embedded Systems and Computer Architecture
Hardware For You
CompTIA A+ Complete Review Guide: Core 1 Exam 220-1101 and Core 2 Exam 220-1102 Rating: 5 out of 5 stars5/5Programming Arduino: Getting Started with Sketches Rating: 4 out of 5 stars4/5Computer Science: A Concise Introduction Rating: 4 out of 5 stars4/5Chip War: The Fight for the World's Most Critical Technology Rating: 4 out of 5 stars4/5CompTIA A+ Complete Review Guide: Exam Core 1 220-1001 and Exam Core 2 220-1002 Rating: 5 out of 5 stars5/5Upgrading and Fixing Computers Do-it-Yourself For Dummies Rating: 4 out of 5 stars4/5Dancing with Qubits: How quantum computing works and how it can change the world Rating: 5 out of 5 stars5/5Arduino: A Quick-Start Beginner's Guide Rating: 4 out of 5 stars4/5Creative Selection: Inside Apple's Design Process During the Golden Age of Steve Jobs Rating: 5 out of 5 stars5/5Build Your Own PC Do-It-Yourself For Dummies Rating: 4 out of 5 stars4/5Raspberry Pi Cookbook for Python Programmers Rating: 0 out of 5 stars0 ratingsFitbit For Dummies Rating: 0 out of 5 stars0 ratingsLinux All-in-One For Dummies Rating: 3 out of 5 stars3/5Macs For Dummies Rating: 5 out of 5 stars5/5Raspberry Pi Electronics Projects for the Evil Genius Rating: 3 out of 5 stars3/5Amazon Web Services (AWS) Interview Questions and Answers Rating: 5 out of 5 stars5/5Apple Watch Series 4: Your Ultimate Guide to Using the Apple Watch Like A Pro Rating: 5 out of 5 stars5/5The Richest Man in Babylon: with The Magic Story Rating: 0 out of 5 stars0 ratingsExploring Apple iPad: iPadOS 15 Edition: The Illustrated, Practical Guide to Using your iPad Rating: 0 out of 5 stars0 ratingsSamsung Galaxy S23 Ultra User Guide for Beginners and Seniors Rating: 3 out of 5 stars3/5Tor Darknet Bundle: Master the Art of Invisibility Rating: 0 out of 5 stars0 ratingsTI-84 Plus CE Graphing Calculator For Dummies Rating: 0 out of 5 stars0 ratingsExploring Apple Mac - Ventura Edition: The Illustrated, Practical Guide to Using MacOS Rating: 0 out of 5 stars0 ratingsMacs All-in-One For Dummies Rating: 0 out of 5 stars0 ratingsBeginning x64 Assembly Programming: From Novice to AVX Professional Rating: 0 out of 5 stars0 ratingsiPhone X Hacks, Tips and Tricks: Discover 101 Awesome Tips and Tricks for iPhone XS, XS Max and iPhone X Rating: 3 out of 5 stars3/5iPhone 14 Pro Max User Guide for Beginners and Seniors Rating: 0 out of 5 stars0 ratings
Reviews for Embedded Systems and Computer Architecture
0 ratings0 reviews
Book preview
Embedded Systems and Computer Architecture - Graham R Wilson
W.
Part 1
The Building Blocks
1
Binary numbers
1.1 Numbers within a computing machine
Our study of computing machines begins by looking at the basic components from which a machine might be constructed. We begin by asking how numbers may be represented in a machine.
The simplest numbers that we want to represent in the machine are the unsigned integers. These are whole numbers without a sign, for example, 0, 1, 2, 3, … The mechanical calculators of yesteryear and the car mileage meter of today both store unsigned integers on what are effectively cogs having ten numbered teeth¹. Thus a simple two-digit calculator capable of addition and subtraction will comprise two cogs, one indicating units, the other indicating tens, Figure 1.1.
Figure 1.1 Two cogs representing the two-digit number, 63
A simple device moves the tens cog one position every time the units cog completes a rotation and passes from 9 back to 0. Thus, if the tens cog currently indicates 4 and the units cog indicates 9, when the units cog is moved forward one position, so adding 1, the cogs correctly display the result 50. The ‘carry’ from the units cog to the tens cog is thus automatic².
Decimal³ numbers are represented by using the ten digits 0, 1, 2,. 9 in such a way that each digit is interpreted according to its position in the number. That is, a three-digit number represented on the cogs as
100.d2 + 10.d1 + 1.d0
or 10².d2 + 10¹.d1 + 10⁰.d0
e.g. 406 is said to represent the number four hundreds, no tens, and six units.
The digits are weighted according to their position in the number; in general, digit dJ has a weight of 10J.
Now consider four imaginary cogs having just two teeth, labelled 0 and 1. Again, a simple device moves the cog to the left one position every time a cog completes a rotation and passes from 1 back to 0. When advanced one step at a time the cogs will display the sequence shown in Figure 1.2.
Figure 1.2 Successive positions of four cogs, each having two teeth
The cogs now have weights of 8, 4, 2 and 1 and when they indicate
8.b3 + 4.b2 + 2.b1 + 1.b0
or 2³.b3 + 2².b2 + 2¹.b1 + 2⁰.b0
e.g. the number 1101 is interpreted as one 8, one 4, no 2s, and 1 unit or 1.8 + 1.4 + 0.2 + 1.1 = 13, in decimal notation.
This method of representing numbers is called pure binary notation⁴. We use this notation to represent unsigned integers. The digits 0 and 1 are called binary digits, or bits. The four-cog mechanism represents numbers using 4 bits and so can represent only the 16 numbers, 0000 to 1111. If we use 5 bits to represent a number, the extra bit allows us to represent twice as many numbers, 0000 to 11111. In general, if we use N bits to represent a number, we have 2N different numbers. An N-bit number
1.2 Adding binary integers
The familiar rules for adding two decimal digits are shown, in part, in Figure 1.3(a). Note that the addition of two one-digit numbers results in a two-digit number; we call the right-most digit the sum digit and the left-most digit the carry digit. Decimal addition proceeds as shown in the example Figure 1.3(b). Starting with the right-most pair of digits, the sum digit is written down and the carry digit is carried into the column to the left. The sum of this column of digits therefore requires that we add three digits. Note that, if the number mechanism holds only two-digit numbers, the sum in this example has overflowed; that is, the sum is too big to be held in the mechanism.
Figure 1.3 (a) Part of the rules for adding two decimal digits; (b) decimal addition
The rules for the addition of two binary digits are much simpler, Figure 1.4.
Figure 1.4 (a) Complete rules for adding two binary digits; (b) binary addition
1.3 Representing signed integers
Signed integers are numbers such as −3, −2, −1, 0, +1, +2. Let there be a number <0111>. Counting down gives the sequence shown in Figure 1.5. Note that when the bits reach <0000>, the next lower number is <1111>, which we regard as the number ‘one less than zero’, or −1. (Imagine a car mileage meter that is turned back from 00000 to 99999.) These numbers may be evaluated by giving the bits the weight −8, +4, +2, +1. This method of representing signed integers is called two’s complement representation. In general, the left-most bit of a two’s complement number has a negative weight. For example, the signed integer
Figure 1.5 Four bits counting down
– 8.p3 + 4.p2 + 2.p1 + 1.p0
or – 2³.p3 + 2².p2 + 2¹.p1 + 2⁰.p0
e.g. 1101 represents −8.1 + 4.1 + 2.0 + 1.1 = (−3)
and 0010 represents −8.0 + 4.0 + 2.1 + 1.0 = (+2)
1.4 Addition and subtraction of signed integers
The two’s complement representation of signed integers has the valuable property that two such numbers can be added using the same arithmetical rules as for unsigned integers. This has the great advantage that any mechanism we devise for the addition of unsigned integers will also work correctly for signed integers. Consider the following addition:
The fifth bit, at the extreme left, is called the carry-out. If this bit is ignored, what remains is the correct representation on the machine for the sum, +1. Similarly, the following addition gives a sum of <1111>, which is the correct representation for −1 on the machine.
The ability to add negative numbers implies that subtraction can be performed by the process ‘change the sign and add’ since:
(+A) - (+B) ≡ (+A) + (-B)
and (+A) - (-B) ≡ (+A) + (+B)
Thus, in order to perform subtraction on a machine that is capable of addition, the machine must also be capable of changing the sign of a number, that is, it must have the facility of multiplying the number by −1. This is quite simple when the numbers are represented in two’s complement: we simply invert all the bits and add 1. For example:
1.5 Two’s complement theory*
The English language is not very good at making clear the distinction between numbers and arithmetical operations. Thus, English uses ‘plus’ and ‘minus’ to indicate both the sign of a number and the arithmetical operations ‘add’ and ‘subtract’. These double meanings, or ambiguities, are also evident in the use of ‘+’ and ‘–’ to indicate the sign of a number as well as ‘add’ and ‘subtract’. In everyday use, the meaning of an ambiguous term such as ‘plus’ is understood by the reader who makes use of the context, that is, the other words or symbols in the sentence. Since our purpose is to design a machine for processing numbers, we must be absolutely clear about what it is we want the machine to do. Where there is any ambiguity, we shall use ‘+’ and ‘–’ to indicate the sign of a number, and use ‘add’ and ‘subtract’ to indicate an arithmetical operation.
Let a number be represented in pure binary by N bits; there are 2N possible numbers in the range 0 to 2N – 1.
Let A and B be unsigned integers in the range 0 to 2N – ¹ – 1.
Represent (+A) by the pure binary number A, and represent (−A) by the pure binary number 2N – A. For example, for N = 8, (+ 3) is represented by 0000 0011 and (−3) is represented by 256 – 3 = 253 = binary 1111 1101.
Consider the four possible additions of A and B.
(+A) add (+B) = A add B, which is the correct representation of the required result.
(+ A) add (−B) = A add (2N subtract B) = 2N subtract (B subtract A), which is the correct representation of – (B subtract A) or + (A subtract B), the required result.
(−A) add (+ B) = (2N subtract A) add B = 2N subtract (A subtract B), which is the correct representation of – (A subtract B) or + (B subtract A), the required result.
(−A) add (−B) = (2N subtract A) add (2N subtract B) = 2N add 2N subtract (A plus B). The first 2N causes a carry-out of the left-hand end of the number. Ignoring this carry leaves 2N subtract (A plus B), which is the correct representation of – (A add B), the required result.
Therefore, when signed integers are represented using two’s complement, we apply the normal rules of binary addition and ignore any carry-out. This gives the correct result.
Earlier, we simply stated that to multiply a number by −1, we invert all the bits and add 1. To see why this works, consider an N-bit number, A. Invert all the bits to get the number B. Now A + B = 111..1 = 2N – 1 always, so that B = 2N – 1 – A. Adding 1 to this gives 2N – A, which is the required two’s complement representation of – A.
1.6 Use of hexadecimal representation
While electronic computers represent both data and instructions as patterns of bits, it is inconvenient for humans to write down and read long patterns of 0s and 1s. Purely as a matter of convenience, the binary patterns are usually written in hexadecimal. This simply requires that the person reading the hexadecimal numbers remembers the first 16 pure binary numbers and their equivalent in hexadecimal, Figure 1.6.
Figure 1.6 First 16 counting numbers in binary and hexadecimal
This is much easier for a person to read once the above table has been memorized. This hexadecimal number is often written 0×3C95, 0X3C95, 3C95H, or 3C95h to distinguish it from a decimal number. Hexadecimal or ‘hex’ is widely used to represent patterns of 0s and 1s within computing machines; it is purely for human convenience – the computing machine, of course, works with 0s and 1s.
1.7 Problems
1. Write down the hexadecimal representation of the following bit patterns:
(i) 0001 1111
(ii) 1100 1101
(iii) 1001 0111 1111 1111.
2. Write down the bit patterns represented by the following hexadecimal numbers:
(i) 0×1F
(ii) 0xCD
(iii) 0×97FF.
3. An N-bit unsigned integer is written bN–1bN–2..b2b1b0. Write an expression for its decimal value.
4. Convert the following unsigned integers to decimal:
(i) 1011
(ii) 0010
(iii) 0000 1111
(iv) 1111 1111.
5. How would the following numbers, written in decimal notation, be represented in 8 bits as unsigned integers?
(i) 1
(ii) 2
(iii) 127
(iv) 128
(v) 254
(vi) 255.
6. Obtain the sums of the following unsigned integers:
(i) 1011 + 0010
(ii) 0000 1111 + 0000 0001
(iii) 1111 1111 + 0000 0001.
Check your answers by converting the numbers to decimal.
7. An N-bit signed integer, in two’s complement representation, is written: bN–1bN–2..b2b1b0. Write an expression for its decimal value.
8. Convert the following signed integers, written using two’s complement representation, to decimal:
(i) 1011
(ii) 0101
(iii) 0000 1111
(iv) 1111 1111.
9. How would the following numbers, written using decimal notation, be represented in 8 bits using two’s-complement representation?
(i) +1
(ii) +127
(iii) –1
(iv) –128
(v) +2
(vi) –2.
10. A number is represented by 16 bits. Answer each of the following questions by writing the binary representation of the number and its decimal equivalent.
(i) What is the largest value of the number assuming the 16 bits represent an unsigned integer?
(ii) What is the smallest value of the number assuming the 16 bits represent an unsigned integer?
(iii) What is the largest value of the number assuming the 16 bits represent a two’s complement number?
(iv) What is the smallest value of the number assuming the 16 bits represent a two’s complement