1 / 33

Homework Due

Homework Due. Book work chapter 4 How is the palindrome program coming along?. Logic Microoperations. Counter-part to the arithmetic microoperations we looked at last week

dakota
Download Presentation

Homework Due

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Homework Due • Book work chapter 4 • How is the palindrome program coming along? CSC321

  2. Logic Microoperations • Counter-part to the arithmetic microoperations we looked at last week • Similar to Boolean functions (expressions) except that the operands are registers (bit strings) rather than individual Boolean variables • This is exactly what you implemented in code CSC321

  3. 01101011 01101011 R1 R1 R2 01001110 01001110 01001110 R1 R1 R2 10010001 01001010 01101111 R1 R2 Register Transfer Language • We need some new symbols to avoid (or cause) confusion Bitwise AND Bitwise OR Bitwise NOT CSC321

  4. Context will always be a bitwise AND microop. will always be a bitwise OR microop. will always be a single bit AND will be a single bit OR in a Boolean function (never a bitwise OR microop.) will be an arithmetic ADD in an arithmetic function CSC321

  5. What operation is this? What operation is this? What operation is this? Context P + Q: R1 R1 R2, R3 R4 R5 CSC321

  6. Logical Microoperations • Given two binary variables there are 16 different logical microoperations that can be performed • How can this be given that there are only 4 combinations of input values? CSC321

  7. Logical Microoperations CSC321

  8. Logical Microoperations • Some of them are not intuitive (or useful) • They can all be created using AND, OR, NOT, and XOR functions • You should be able to create the table of functions (page 110, Table 4-6) • How would you go about doing this? CSC321

  9. Hardware Implementation • We know how to implement Boolean functions using combination logic • How do we implement them to perform bitwise microoperations? CSC321

  10. S0 S1 4x1 MUX Ai 0 Bi Fi 1 2 3 Hardware Implementation • …with a lot of logic gates! • If you need n-bit microoperations (n-bit registers) you have n of these circuits CSC321

  11. Hardware Implementation • But doesn’t that MUX only implement 4 expressions? • What about the other 12? • We can use a bigger MUX or realize that many of the other 12 are useless and the ones that are useful can be derived from the 4 that we implemented, keeping hardware costs down CSC321

  12. But Why? • What can be done with logic microoperations? • Most useful when we consider the bits of a given register as separate signals CSC321

  13. Logic Microoperations • In Java if we need 8 boolean variables we generally do something like this… • This may be very inefficient dependent on how the Java compiler generates the byte code • boolean b7 = false; • boolean b6 = false; • … • boolean b0 = false; • OR • boolean b[] = new boolean[8]; • for (int i = 0; i < 8; ++i) { • b[i] = false; • } CSC321

  14. Logic Microoperations • A more memory efficient way to represent the same information would be… • This is referred to as “bit packing” • But how do we get to the individual bits within the byte? • byte b = 0; CSC321

  15. Logic Microoperations • Through bitwise logic operations • Selective-set • Selective-complement • Selective-clear • Mask • Insert • Clear CSC321

  16. 01101010 ? 11110000 11111010 Selective-Set • We want to set certain bits to 1 while leaving the others unchanged • Any ideas? • Bitwise OR CSC321

  17. 01101010 ? 11110000 10011010 Selective-Complement • We want to complement (invert) certain bits while leaving the others unchanged • Any ideas? • Bitwise XOR CSC321

  18. 01101010 ? 11110000 00001010 Selective-Clear • We want to clear (0) certain bits while leaving the others unchanged • Any ideas? • Bitwise A AND B’ CSC321

  19. 01101010 ? 11110000 01100000 Mask • Similar to Selective-clear but the “selection” is done with 0’s rather than 1’s • Any ideas? • Bitwise AND CSC321

  20. 01101010 ? 1101xxxx 11011010 Insert • Insert (replace) a group of bits into the existing bit string while leaving other bits unchanged • Any ideas? • Mask followed by bitwise OR CSC321

  21. 01101010 ? 01101010 00000000 Clear • Compare the two values and if they are equal, produce a string of 0’s • Any ideas? • Bitwise XOR with self CSC321

  22. Usage • These types of operations are especially useful when designing hardware • But, they are also heavily used in software • Device drivers (s/w that talks to h/w) • Embedded systems (small programmable h/w devices) • High speed applications such as games or other video applications CSC321

  23. Shift Microoperations • Serial modification/transfer of bits similar to the shift registers we looked at previously • Three basic types of shift • Logical shift • Circular shift (often called rotation) • Arithmetic shift CSC321

  24. Logical Shift • Acts like a shift register with a 0 shifted in to the vacated bit position • Shifts can be to the left or the right • Bits that are shifted “off the end” are lost R1 ← shl R1 11010100 11101010 R1 ← shr R1 01110101 CSC321

  25. Circular Shift • Acts like a shift register with the end bit shifted in to the vacated bit position • Shifts can be to the left or the right • No information is lost R1 ← cil R1 11010101 R1 ← rotl R1 11101010 R1 ← cir R1 01110101 R1 ← rotr R1 CSC321

  26. Arithmetic Shift • Shifts are performed with special attention paid to the MSB (the sign bit – 2’s complement notation) • Left arithmetic shifts correspond to integer divide by powers of 2 • Division must leave the sign bit unchanged • Division cannot causes an overflow • Right arithmetic shifts correspond to integer multiply by powers of 2 • Multiplication must leave the sign bit unchanged • Multiplication must be overflow aware CSC321

  27. Arithmetic Shift Right • Leaves the sign bit unchanged and shifts the number (including the sign bit) to the right • Did it work as expected? 10101010 R1 ← ashr R1 11010101 CSC321

  28. Arithmetic Shift Left • Inserts 0 into LSB (why?) • If MSB changes after the shift an overflow has occurred (why?) • Can predict overflow by comparing MSB (bit n-1) to next bit (bit n-2) • Did it work as expected? • Did it work as expected? 11101010 R1 ← ashl R1 11010100 01101010 R1 ← ashl R1 11010100 CSC321

  29. Arithmetic Shift Left • What is the “overflow rule”? • How can you implement it? • Check before performing the shift • Bn-1 XOR Bn-2 • If 0 there is no overflow, if 1 there is an overflow with a sign reversal CSC321

  30. Implementation • The arithmetic, logic, and shift microoperations are generally implemented in a single “unit” – the ALU (Arithmetic-Logic Unit) • The ALU is generally made up of combinational circuits (as opposed to sequential circuits) • Why should this be the case? CSC321

  31. ALU Block DiagramStage i S3 S2 • Combinational circuits that we looked at previously are inserted into the boxes Cin S1 Arithmetic Circuit Stage i S0 4x1 MUX select Cout 0 Fi 1 Logic Circuit Stage i 2 3 Bi Ai shr Ai-1 Ai+1 shl CSC321

  32. Table of Microoperations CSC321

  33. Homework • 4-12, 4-17, 4-18, 4-19, 4-20, 4-21, 4-22 • Read chapter 5 CSC321

More Related