On November 11, 1999, the ASCI Red computer at Sandia National Labs was rated the fastest supercomputer in the world [Top500 1999]. This machine was designed to perform complex nuclear simulations which can replace actual testing of nuclear weapons. According to the machine's builders, this supercomputer can perform almost two and a half trillion floating point operations per second! Since nearly all scientific simulations involve data with real numbers, floating point operations are a good measure of a machine's performance. While these numbers are quite impressive, it will not be long before another machine surpasses the computer at Sandia National Labs. For a look at the current list of the fastest 500 supercomputers in the world, go to Top 500 Supercomputer Sites.

You may be wondering how your desktop personal computer rates against a powerhouse like ASCI Red. According to Brian Marshall [2000], "Most people have something like a Pentium computer running Windows or a Macintosh. A computer like this can execute approximately 100 million instructions per second. Your particular machine might be twice that fast or half that fast, but that's the ballpark." Interestingly, the most powerful processor in the world is the human mind. Marshall continues: "Your brain is made up of about one trillion cells with 100 trillion connections between those cells. We might take a rough estimate and say it is handling 10 quadrillion instructions per second, but it really is hard to say." With these estimates, we can conclude that our minds are about 5,000 times more powerful than the fastest supercomputer, and the fastest supercomputer is about 20,000 times more powerful than our PCs. (For more information on humans and computers, see Humans Versus Computers in the Artificial Intelligence module.)

So, what is the source of all this electronic computing power? Amazingly, both supercomputers and PCs are built on the same basic logic which in the Computer Engineering world is called gates. Gates are tiny electronic devices that manipulate binary data in fixed ways. Three important gates are the AND gate, the OR gate, and the NOT gate. For each of these gates, we can describe their behavior (i.e., the way they manipulate binary data) using a truth table and a simple diagram. The truth tables for each of these gates are listed below.

AND gate
Input Output
0 0 0
0 1 0
1 0 0
1 1 1

OR gate
Input Output
0 0 0
0 1 1
1 0 1
1 1 1

NOT gate
Input Output
0 1
1 0

Notice that the AND gate and the OR gate have two inputs while the NOT gate has a single input. Earlier we described various ways that bits can be represented: 0 or 1, off or on, false or true, high voltage or low voltage. Since gates are electronic devices, the appropriate way to represent binary data is with low or high voltage level. However, it is easier for us to think of these levels as 0 for low voltage and 1 for high voltage when describing the behavior of gates. Thus, the gates receive their binary input as a voltage, and they output a either a high or low voltage depending on their input. For the AND gate, both inputs must receive a high voltage in order for the output to be a high voltage. Any other combination results in a low voltage. We can think of the behavior of the AND gate this way: "If input 1 AND input 2 have a high voltage, output a high voltage. Otherwise, output a low voltage." For the OR gate, both inputs must receive a low voltage in order for the output to be a low voltage. Any other combination results in a high voltage. We can think of the behavior of the OR gate this way: "If input 1 OR input 2 have a high voltage, output a high voltage. Otherwise, output a low voltage." For the NOT gate, only one input is required. The behavior of the NOT gate is to reverse the voltage of its input.

The applet below [Arase 1999] will allow you to experiment with the behavior of these three gates. On the left of the applet, a toolkit with various gates, switches, and a power source are displayed. These components can be added to the white design area by clicking and dragging them with the mouse. To connect components, click and drag between the small rectangles on the edges of the components. To remove a connection, click the end of the connection with the gold colored rectangle.

The design that is currently displayed shows the behavior of an AND gate. Click on either of the toggle switches to change the inputs of the AND gate. When the input is a high voltage, the LED on the left side of the gate will glow. When both inputs are a high voltage, the LED on the right side will glow. Experiment with the design and verify that the behavior is the same as the truth table above.

Now try modifying the design so that you can test the behavior of an OR gate. Click on the AND gate to select it and then press the "Cut" button (the scissors icon) at the top of the applet. Drag an OR gate to the open spot, connect it to the switches and LED, and try testing the behavior. Once you are finished, replace the OR gate with the NOT gate. Note that the NOT gate only requires a single input.

The applet toolkit includes several other gates which are not discussed in this lesson. Three of these gates (XOR, NAND, and NOR) are quite important. Try experimenting with these gates, and then describe the behavior of each gate using a truth table.