jmcnama1
07-17-2003, 06:39 AM
Ok may sound trivial but it's bothering me anyway. And that is, when I see the addressable memory range of a processor quoted, something doesn't add up when I do the math. For example, when I see that a processor with a 32-bit address bus is labelled as having a maximum addressable memory range of 4Gbyte regardless of the data bus width, I don't believe this is correct.
Let's keep the numbers simple. Consider an 8-bit processor (8-bit wide data bus) with an 16-bit address bus. The address bus will allow the proc. to access 64k of memory locations (i.e 65,536 memory locations). Since it has an 8-bit wide data bus it makes sense to interface this with 8-bit memory up to a maximum of 64K locations. Therefore the proc. can access 64k x 1byte of memory data i.e 64Kbytes.
Now consider a proc. with a 16-bit address bus as above but with a 16-bit data bus. It can still access 64k of memory locations but each memory location can hold 16-bit of data. Therefore the proc. can access 64K x 2byte of memory i.e 128kbytes. The way I see it is that knowing the address bus width alone will not tell you how many bytes of memory the proc. can address. You also need to know the width of the data bus, assuming ofcoarse that it is interfaced with memory of the same width. Therefore a 32-bit address bus proc. with 32-bit data bus can not access the same amount of memory as 32-bit address proc. with a 64-bit data bus, albeit it can access the same number of memory locations. In both cases to say the proc. can address 4Gbytes doesn't add up to me.
Let's keep the numbers simple. Consider an 8-bit processor (8-bit wide data bus) with an 16-bit address bus. The address bus will allow the proc. to access 64k of memory locations (i.e 65,536 memory locations). Since it has an 8-bit wide data bus it makes sense to interface this with 8-bit memory up to a maximum of 64K locations. Therefore the proc. can access 64k x 1byte of memory data i.e 64Kbytes.
Now consider a proc. with a 16-bit address bus as above but with a 16-bit data bus. It can still access 64k of memory locations but each memory location can hold 16-bit of data. Therefore the proc. can access 64K x 2byte of memory i.e 128kbytes. The way I see it is that knowing the address bus width alone will not tell you how many bytes of memory the proc. can address. You also need to know the width of the data bus, assuming ofcoarse that it is interfaced with memory of the same width. Therefore a 32-bit address bus proc. with 32-bit data bus can not access the same amount of memory as 32-bit address proc. with a 64-bit data bus, albeit it can access the same number of memory locations. In both cases to say the proc. can address 4Gbytes doesn't add up to me.