1. A program run on Computer A executes 1,000 instructions, 20% of which are "String" instructions. The same program executed on Computer B executes 1,200 instructions, 15% of which are "String" instructions. The following table gives the Clocks per Instruction (CPI) for string and non-string instructions on each computer, along with their clock speeds:

Computer AComputer B
CPI - String3 4
CPI - Non-string2 2
Clock Speed100 MHz 125 MHz
  1. What will be the total number of clock pulses to run the program on each computer? Show all work.
  2. How many nanoseconds is each clock pulse for each computer?
  3. Which computer runs the program faster, and by how much? Show work.

2. For each of the instructions described, a) write the corresponding MIPS assembly language, b) translate the instruction to binary, and c) write the binary value in hexadecimal. First, here is a table to help you:

Op Code
Function Code
add
0
32
beq
4
j
2
  1. Add registers 7 and 12; put the sum in register 25.
  2. Branch backward 15 instructions if registers 21 and 14 are equal. (Help: If I say that an instruction branches backward one instruction, I mean that it branches to itself.)
  3. Jump to address 0x6018402C from an instruction at address 0x61234568.

Bonus) Jump to address 0x6018402C from address 0x51234568.

3. Without minimizing the following truth table:

  1. Draw a logic network (gates) to implement it.
  2. Write an equivalent boolean equation.
  3. Now minimize it, using either algebra or a Karnaugh Map.
  4. Draw the corresponding minimized logic network.
abc Y
000 0
001 0
010 0
011 1
100 0
101 1
110 1
111 1

4. A particular type of Programmable Logic Array (PLA) has the capacity to implement up to three equations using five variables (and their complements), provided there are no more than six minterms.

  1. Answer the following questions about this type of PLA.
  2. Draw a diagram of one of these PLAs (the type of diagram that doesn't show any gates is fine), and program it to implement these three equations: