I will start basic, since I don't want to loose people early. Forgive me if this is condescending.
Inside your Personal Computer (inside many other things, like in most modern cars, planes, guidance systems, and even some toaster ovens and washing machines) is a Microprocessor. It is often known now as an instruction processor (this term is used to distinguish this model of computing from newer models that are emerging). I will just refer to it as the processor most of the time.
To simplify things further, I will strip the processor of most of it's modern features. I will first describe a processor that is single issue, without interrupts, without pipelining, and consisting of a single core (don't worry if you don't know what these terms mean yet).
These processors run "programs." Programs are a sequences of instructions issued to processors so that they perform tasks. We can leave it at this basic level for now (on many systems they run an Operating System, which in turn sends other programs to the processor).
Here is what a program may do:
LOAD A, 0
ADD A, 3
This is a program in an abstracted version of assembly language. In this case the program loads register A with 0, then add 3 to it. So now register A has 3 in it.
There are few things I should mention before proceeding:
1) This is not the version of the program that the processor sees (it gets machine code)
2) Most systems with processors will have memory that can be written and read from, and either an Input/Output (I/O) system
or memory mapped I/O. I/O (memory mapped or otherwise) is how the processor communicates with other hardware, like graphics cards, or control circuits in a guidance system.
Use of Memory (could be memory mapped I/O) may look like this to in an assembly language (again very abstracted)
READ B, 0x10(A) # read what is at the memory address specified in register A plus an offset of 0x10 (which is hexadecimal for 16) into register B
ADD B, 3
WRITE 0x10(A), B # write the same memory location with a value three more than what was read
Still, I don't want to digress too far into the land of programming, so lets get back to what the processor gets.
Each of these "instructions" (like the LOAD, ADD, READ, WRITE, etc. above will have its own "Operation Code" (Op.Code for short). This is the binary representation of the instruction to be issued to the processor (varies from processor to processor). In "LOAD A, 0", "A" and "0" are called operands. The opcode, plus the operands constitute the full binary representation of what the processor must execute.
There are lots of complications here (micro-ops, expanding opcodes, addressing modes, privilege levels, segmentation, and many other things). But this descriptions preserves the general idea.
Please let me know if you follow this much. Because, I plan to describe how it is that the processors perform these instructions next.
__________________
sloan+ Rxua|I|; primary Inquisitive; R(82%)L(52%)U(62%)A(54%)I(86%)
CTO of IPTN (see Maverick's Sig.) and member of Maverick's Biker Club.
Accept the past. Live for the present. Look forward to the future.
My Blog
I linked some of your blogs; if you feel that is inappropriate, please let me know.
|