3DSoftware.com > ECE > MPSoC > Introduction
Introduction to Computer Organization
 
This series of articles covers MPSoC technologies and general computing.
 
Terminology
 
Computer science is a new and emerging field, with terminology that is not yet established. For example, sometimes the term MIPS means “Millions of Instructions Per Second.” But sometimes it means “Microprocessor without Interlocking Pipeline Stages,” which was the name of a research project and is now the name of a company which uses that technology.
 
Likewise, the term “microcontroller” can mean an electronic chip that controls an automobile engine or a consumer device. Or it could mean the component within a CPU that controls the CPU's internal signals. [ 1 ]  The former use is being replaced with the term “embedded” chip or system.
Footnotes:
 
1.   Douglas E. Comer, Essentials of Computer Architecture (Pearson, 2005), p. 53, 100.
 
 
Transistor
 
A transistor is the most basic building block of a computer. It simply consists of the equivalent of three wires: a thin wire, and two thicker wires. The thin wire controls whether the thicker wires pass electricity to each other.
 
If a small amount of electricity is present in the thin wire, then a larger amount of electricity is allowed to pass through the larger wires (the larger wires are connected). But if no electricity is present in the thin wire, the larger wires are disconnected from each other (no electricity flows between them).
 
Thus a transistor is essentially a tiny electrically-operated switch. Instead of using wires, it actually uses semiconductor materials.
 
“Each individual transistor functions like a miniature switch that can be operated electrically.” [ 1 ]
 
Transistors are organized into “logic gates,” which are in turn organized to add and combine bits, which is organized to subtract, multiply, divide, etc. Anything that is done on computers simply comes down to the logic of transistors working together.
 
We will now examine the use of a single transistor in accessing a bit of dynamic random access memory (DRAM). Each bit is stored in a single capacitor which is accessed (switched) by a single transistor that is called a pass transistor (it lets electricity pass to or from the capacitor).
 
“The pass transistor acts like a switch: when the signal on the word line is asserted, the switch is closed, connecting the capacitor to the bit line.” [ 2 ]
1.   Douglas E. Comer, Essentials of Computer Architecture (Pearson, 2005), p. 53, 100.
 
2.   David A. Patterson and John L. Hennessy, Computer Organization and Design: The Hardware/Software Interface 3rd Ed., p. B-63 (and 2nd Ed., p. B-32).
 
Switching occurs one word at a time. But we will focus here on only one bit of information. The bit is actually a charge on a capacitor. If the capacitor is charged, that represents a 1 bit. If the capacitor is not charged, that represents a 0 bit.
 
The “word line” in the quote above is the control line in the diagram at right. The bit line holds the value we want to set the capacitor to when the control line is set.
 
The sequence of diagrams below shows an example. We begin with the memory bit set to zero, as shown in the first diagram. The control line is zero, so the memory bit is disconnected from the bit line, and therefore it does not matter whether or not the bit line is charged.
 
To convert the memory bit to 1, we charge the bit line (setting it to logical 1) as shown in the second diagram, and then charge the control line, as shown in the third diagram.
 
 
The charged bit line is connected to the capacitor, loading the capacitor with charge (setting it to logical 1).
 
The memory bit is now set to 1, as shown in the first diagram below. The next two diagrams show how to set it to 0. First the bit line is set to an uncharged state (0), then it is connected to the capacitor, draining the charge from the capacitor.
 
 
This example only covered write operations. (To read the memory cell, the bit line is half-charged and a sense amplifier detects how it changes when connected to the capacitor.)
 
 
Instruction Set Architecture (ISA)
 
Modern computers were first made with relay switches, then vacuum tubes, and now transistors.
 
Early programming consisted of plugging cables in specific patterns and throwing switches. That became tedious, and researchers including John von Neumann came up with the idea of storing program instructions in memory. That idea is still used today and is what many people think programming consists of. It is called the stored program model, or von Neumann architecture.
 
Computers are actually a blend of programming through hard wiring, and programming through the stored program method. The classic division has become known as a computer's Instruction Set Architecture (ISA). This is an idealized division between software and hardware, which proves very useful.
 
“Programming was done manually by plugging cables and setting switches”
–  Patterson and Hennessy
3rd Ed. 1.7-1, 2nd Ed. p. 32

“First we deplete the object of nearly all content … Then just as computers can be wired up in specific ways, suitable specific mappings between these structureless sets will constitute a structure that reflects the complicated content of a mathematical object.”
–  Lawvere and Rosebrugh
Sets for Mathematics, p. ix
Consider again the early computer in which all programming was done with wiring (plugging and unplugging cables). The next step up from that is a stored program computer in which individual commands (operation codes) are stored in sequential memory locations and read one at a time by the computer's Central Processing Unit (CPU).
 
The commands are thought of as operation codes (opcodes). Imagine that the CPU has a separate hard wired circuit for each possible opcode. One by one, each opcode is read in from memory, and the CPU invokes a different hard-wired circuit depending on what the opcode is.
 
That is like plugging and unplugging cables, except the CPU does it for you, using switches instead of plugs.
 
The Instruction Set is the list of all possible opcodes. The computer is known (identified) among programmers as having a particular Instruction Set. It is that computer's Instruction Set Architecture (ISA).
 
That ISA division is still used today. It is very practical. Computers are still classified by how their CPU can be programmed.
 
A key problem with programming through hard wiring is that it becomes more difficult (and inevitably impossible) to do on a larger scale. The first time that became apparent was when programmers got tired of plugging and unplugging external cables. The next time it became apparent was when CPUs became larger and more powerful.
 
The CPU itself started to become a large system, and it was becoming too difficult to do all of the hard wiring a CPU required. The solution to that problem was to develop a smaller CPU that would operate within the larger CPU to manage the internal signal traffic of the larger (main) CPU.
 
This smaller CPU, which is inside of (and manages) a main CPU, is now called a microcontroller, and its instruction set is called microcode. [ 1 ]  The microcode is only visible to the manufacturer of the main CPU which contains the microcontroller. After the main CPU is manufactured, the lowest level of programming possible is then the main CPU's instruction set (opcodes), which is now called the macro instruction set. [ 2 ]
 
The macro instruction set therefore continues to define the Instruction Set Architecture (ISA). For practical purposes, anything below that should be considered hardware (hard wiring) which is not possible to change (we should pretend the microcode does not exist).
1.   Comer, Essentials of Computer Architecture, p. 23.
 
2.   Ibid.
 
Microcode greatly facilitates the design and manufacture of CPU chips. When a defect is found in the hard wiring of a CPU chip, the microcode can be changed to avoid the defect. And the chip manufacturer can radically change the microcode in new chip versions to increase efficiency, without changing the macro instruction set. Thus, it is important for programmers to use the macro instruction set, which will not change, instead of the microcode, which the chip manufacturer must have the freedom to radically change.
 
On the software side of the ISA divide, high level languages (HLL) have been developed and are now more widely used than assembly language (which uses the machine's macro instruction set of opcodes). HLL programs are converted into opcode instructions (machine language) in a process called compilation. This is done with programs (software development tools) that are called compilers.
 
 
 
Next Page:
Hardware Innovations
 
 
Copyright © 2008 by 3D Software. All rights reserved.
3D Software, P.O. Box 221190, Sacramento CA 95822 USA
www.3DSoftware.com     Contact us
Tuesday, 06-Jan-2009 03:11:41 GMT