I'm trying to learn assembly and am confused by the relation of address width and the bitness of a cpu(32, 16). For a 8 bit cpu there is always 16 address lines and with a 16 bit cpu there is always 20 address lines. Can someone point me to a website or something to explain the relation of the two? A Google search for me lead nowhere.
For a 8 bit cpu there is always 16 address lines and with a 16 bit cpu there is always 20 address lines.
This is not true.
The 65c816 used on the SNES, for example, had 16 bit work registers, but only 8 data lines (so one could argue that it was an 8 or a 16-bit CPU, depending on what you're counting) -- and it had 24 address lines (not 16 or 20).
You're trying to find correlation where there isn't really one. These are all just different specs of a CPU -- and a CPU could be configured any which way.
Thanks Disch. Thats what I came to relize. It seems that what I was describing(16 address lines for 8 bit and 20 for 16 bit) was just the standard for Intel. Ok let me ask another probably dumb question,
Just a few years ago 32 bit processors were the thing but were said to only be able to access just under 4 gigs because 2^32 = 3.99GB. The intel processors at the time had 32 address lines(hence why 4 GB was max addressable memory). People also claim that 64 bit CPUS were made mainly to access more memory. Why did intel not just increase the address lines on the 32 bit CPUS or was there that much more need to access more memory per clock cycle?(If i have understood correctly a 32 bit processor can grab 32 bits per cycle and 64 bit processor can grab 64 bits per cycle)
People also claim that 64 bit CPUS were made mainly to access more memory. Why did intel not just increase the address lines on the 32 bit CPUS or was there that much more need to access more memory per clock cycle?
I'm not sure I really understand this question.
You're basically asking "Why did Intel make a product better than I would have expected them to?"
They made a better product so that it would sell. The beefier they could make their latest series of chips, the more marketability they'd have.
The 4 GB limit of a 32-bit address bus was one problem companies like Intel had to address, but it certainly wasn't the only problem.
<wiseass> They also eventually added multiple cores with hyperthreading to their chips as well -- even though that did nothing to increase the amount of addressable memory. ;P </wiseass>
was there that much more need to access more memory per clock cycle?
Again, I'm not sure I understand the question.
Why are you questioning why a technology company made their technology better? Isn't it obvious?
You're right Disch lol. I just would have figured on their end it would have been much easier and cheaper to simply add more addressing lines in order to access more memory.
I was looking at the problem from a money standpoint(seemed like a lot more money and time to create a new architecture(or steal amd's) than to just add lines)
Don't confuse address and data widths. The 'bitness' of a CPU usually refers to the width of it's working registers, which means the maximum width of data that can be handled in a single register.
The address space of a CPU is a different thing. Given enough address lines and large enough index registers even an 8bit CPU could (theoretically) access 1TB of memory, even though it would be painful to calculate the memory addresses.
The x86 CPUs had 16bit registers: AX, BX, CX, DX; the 386 architecture had 32bit registers EAX, EBX, .... same for the 486. After that it got a bit fuzzy because of special purpose registers for MMX and SSE which had 64 and 128 bit, partly shared with the floating point registers.
I can't tell you anything about other architectures, though. Except Z80, it has 8bit data width and 16bit address space.