A simplified view, indeed:
The bus contains a number of lines (over one hundred in many modern processors).
These are used for reading from memory or devices and writing to memory or devices. The number of address lines determines how many words of memory can possibly be addressed. The number of data lines determines how much data can be moved at one time.
The power line is a convenient way to get a 1 whenever you need one; the ground line gives you your 0.
When 1 (IO), the address line specifies the "address" of a port on a device connected to the bus; when 0 (MEM) the address line specifies a memory address.
When 1 (R), we want to read what's on the data bus; when 0 (W) we want to write the contents of the data bus to memory or to a device.
This alternates between 0 and 1, a given number of times per second.
Parts of the processor that can store data and do arithmetic and logic. Most processors work by reading data from memory or a device into registers, doing computations, and writing back out to memory or devices. We need registers since it is generally too expensive to put arithmetic and logic circuitry within every memory cell.
Some registers aren't for computation but rather to provide information (status) or put the processor in a particular mode of operation (control).
The instruction pointer register contains the address (in memory) of the next "instruction" to be executed.
As long as the processor is on, and not in a "halted" state, it will repeatedly:
The fetched value is an instruction. For example, a processor could be designed so that if the octet 8C were fetched, it would cause two of its registers to be multiplied together. And maybe a 35 would cause a register to be decremented, and a C9 would cause the contents of a register to be written to memory.
Note how the autoincrementing of the instruction pointer
means that a "program" is a sequence of instructions in consecutive
memory locations. Almost every processor though, has
a jump
instruction which is implemented by
writing a completely different value into the instruction pointer.
A processor is said to implement an Instruction Set Architecture (ISA) which specifies a set of instructions and its associated machine language.
Common ISAs today:
See Intel's free documentation on the IA-32 and Intel 64 architectures.
A microarchitecture is a kind of implementation of an architecture. For example the Intel 64 architecture can be implemented with the NetBurst, Core, Nehalem, or Sandy Bridge microarchitectures, among others.
Wikipedia has a more complete list, but here are few of the common ones:
Architecture | Microarchitecture | Processors |
---|---|---|
IA-32 | P6 | Pentium Pro, Pentium II, Pentium ||| |
IA-32 | Pentium M | Pentium M |
IA-32 | Enhanced Pentium M | Core Solo, Core Duo, Xeon LV |
IA-32 | NetBurst | Pentium 4, Pentium 4F |
Intel 64 | NetBurst | Pentium 4F, Pentium D, Pentium Extreme Edition, Xeon 5000, Xeon 7100 |
Intel 64 | Intel Core | Pentium Dual Core, Core 2 Duo, Core 2 Quad, Core 2 Extreme |
Intel 64 | Nehalem, Sandy Bridge, Ivy Bridge | Core i3, Core i5, Core i7 |