Moving Data with a Processor of any kind
06/19/2001
How can we start moving data around?
How many ways can we do this?
(Look at some possibilities with generic addressing modes)
How can we start moving data around?
- With the assumption, that initially a processor (CPU) must first read data from memory, and then write that same data to another location, we might also assume that during that process, the data retrieved from memory has to be somehow "held" until ready to be stored or written to memory. You may have heard reference to an "Accumulator". A CPU normally has a special storage register for this purpose. When you hear reference to "Registers", they can usually be thought of as nothing more than binary data-latches, like an 8-bit or 16-bit data-latch. Unfortunately, many folks do not realize the simplicity of this one concept, and they more often as not think that a "Register" must be some kind of exotic circuit.
- Any memory must have 3 basic considerations: i.e. "Where", "Action", and "Contents", in that "Where" is simply one of the number of possible locations, "Action" is whether we extract or store "Contents" as the data within that memory locations.
- This is often illustrated by walking into an area that contains a large number of mailboxes, where each mailbox has a location number (called an address), and by opening a specific selected mailbox (i.e. an "address" ) the contents may be "extracted" or "filled" (this would be the "data").
- Consider that a CPU must have actually several "Registers" that can be electronically switched in or out of certain common circuits. Consider also, that if we had a "16-bit Register" that could be used to reference a simple binary value,as control over memory address lines, we could electronically select that particular 16-bit Register as a "Memory Address Select Register". This would allow us to select over 65,536 different locations of memory.
- After selecting a specific memory address, data as "Contents" could be "Read" from that specific location in memory, and copied into the CPU's "Accumulator" Data-Latch.
- Suppose that we had 2 different "16-bit Registers" that could be used to reference a simple binary value,as control over the same memory address lines, but in reference to another binary location.
- That other specific memory address can be then selected by the second "16-bit Register", and the data currently held in the CPU's "Accumulator" Data-Latch can be copied (written) into the memory at that selected address.
- Obviously, there must be some method of pre-arranging those particular 16-bit Address Registers and selecting the electronic controls necessary for selection, and how to use the "Accumulator". There is, and it's what is involved in a process called "Programming". This is also a subject where it seems that "the deeper you go, the deeper you need to go". It can be quite rewarding, but also can involve some very complex issues.
The Plot Thickens (We need to look at several scenarios)
- Scenario #1: We have one worker, where the worker is instructed in such a way that for each container (of a row of 10) that must be moved from location #1 to location #2 will require 10 detailed sets of instructions. The worker is told which container to pick up with the hand-truck, and then where to place this container in location #2. Obviously, this is a very inefficient way to move containers about, because it requires detailed instruction for each of the containers on a one-by-one basis. This would be especially true if there were several hundred of these containers to be moved!
- Scenario #2: Here we have the same bunch of containers to be "Hand-Trucked" from one location to another, but in this case wer'e going to incorporate a count system. The case in point, the worker is told to not only move a specific container from location #1 to a specific spot in location #2, but is also told that there are a certain number of containers to be moved, and that each container retrieved is from the next sequential location, and that the spots in location #2 are to be sequential as well. The advantage here should be obvious, in that there is a sequential process in pickup and a sequential process in placement, until the count is completed.
- Scenario #3: Consider a driver that needs to go pick up some merchandise from a particular location, but instead of telling the driver exactly where to drive to, the driver is provided with a guide to act as a navigator. This situation may seem the same, but it is different because of the navigator's guide to the location. In CPU's, this is called "Register Control", because a Address Register can be retained for the same address selection again. Scenario #2 is actually this usage, where the Address Register in use, is "Incremented" to the next consecutive location.
- Scenario #4: In this situation, we will liken it to a case where our driver does not exactly know where to pick up the merchandise, but has been told that if the driver will stop at a particular warehouse, there will be directions to the correct address. What we have here is an "Indirect" method of going to the correct address.