Its in my xmas list :)
Or unless anyone wants to donate £30 to the 'Hong A+ Charity' :D:D:D
Printable View
Its in my xmas list :)
Or unless anyone wants to donate £30 to the 'Hong A+ Charity' :D:D:D
Well I've been out of pocket for a couple days and expected to come back and find this thread pages long. I see you've gotten some input here Hong, now I'll throw in my 2 cents.
First, on the issue of what distiguishes a 32-bit from a 64-bit processor... Spark's mentioned it was based on the internal registers of the processor. That's true. But it is specifically this size in relation to the integer registers that are the key. Other registers (eg. floating point, MMX, SSE, etc) can and are much larger than 32 bits even in processors categorized as 32-bit.
Now, memory access and addressing... Data/instructions flow between memory (or the memory controllers) and the processor over a bus (a series of electrical connections), specifically the memory bus. With the 32-bit processors this memory bus is external to the processor itself (that changes with something like the AMD 64, but we won't go in to that cause it's not relevant here). What constitutes the memory bus is divided in to three buses (sets of lines) really: the data bus, the address bus and the control bus. We'll ignore the control bus here since it doesn't really tie in to any of your questions. It is over the data bus that the actual bits of data (data meaning data or instructions) flow. And it is over the address bus that the addresses of the memory that are to be read or written (via the data bus) are communicated between the cpu and memory controller(s). Now how many bits (the size) of these buses is tied to the processor (processor type/family) that the motherboard/chipset is designed for. But, the size of the indiviual buses (data, address, control) need not and aren't the same size (handle the same number of bits). Why? A number of reasons, more than are really necesary to go in to here I think. But in large part because if you think back to the fact that a bus is a series of physical electrical connections then you can see why it would be beneficial from certain standpoints to minimize the number of connections whereever possible (both in terms of pins on a processor and traces on a motherboard). Anyway...
OK... Now since the Pentium and on up through today 32-bit processors have had data buses that are 64 bits wide (ie. data is transferred in 64 bit size chunks). Why? Well that gets in to some aspects of procesor architecture and efficiency and are really beyond this thread (and beyond what my head can handle right now), but if someone else wants to take up that, then.... For now I just say accept this as part of the design of 32-bit processors. It's (and as Sparks mentioned) this 64 bit data bus width/size that often confuses people (including you) when it comes to a processor being a 32-bit processor. The fact that memory data bus transfers in 64-bit chunks has nothing to do with the/a processor being called (being) a 32-bit processor.
When you have a 64-bit data bus size it means that any transfers between memory (memory controllers) and the cpu must be exactly 64 bits. No more, no less. You might hear the term that a full "bank" must be transferred at a time, but the term "bank" is a bit nebulous and has different meaning in different situations when it comes to memory. Anyway... While the data bus may have a width of 64 bits (64 data lines) that doesn't mean a ram stick has to or does have 64 data lines (can transfer 64 bits of data in one shot). And with 72 pin simms this is the case. These simms have 32 data lines and, therefore, can only transfer 32-bits of data at a time. So, in order to fullfill the requirement of transferring 64 bits at a time data must be read/written from/to 2 of these simms at one time (again, not to get in to "banks" but that's why you here that 2 72-pin simms equal a bank, and why these simms must be replaced/added in (matched) pairs, with processors relying on a 64 bit data bus). Now with dimms (168 or 184 pin) there are 64 data lines (meaning 64 bits at a time can be transferred from a given dimm module/stick). As a result, a single dimm can fullfill any transfer requirements of a 64 bit data bus (and is why dimms can be added/replaced individually).
So to summarize on your question about filling banks with 64 bit buses... The 64 bit bus referred to is the memory "data bus". Transactions (the amount of data moved) over this bus must equal its size (64 bits), and this number of bits (at least in one sense) is considered to consitute a bank of memory. So, to meet this requirement requires that one memory bank be accessible and moveable at a time. Anything less won't work (to use your words) With 72-pin simms this means 2 sticks, which represent a bank of data lines. With a dimms this means 1 stick, which represents a bank of data lines).
In regard to you asking about 2 vs 4 simms... Again, it's about the "banks" The 4 (72 pin) simms represent 2 banks. They won't be ignored, just addressable as a different bank (again that nebulous term). As such they just represent a different addressable range of memory.
Ok, so much for the data bus and such, now for the address bus... The number of (lines) bits comprising an address bus, its width, dictates how much memory can be used/addressed. For a 32 bit wide address bus it means that up to 2^32 memory addresses can be accessed. Typically with what we know as 32-bit processors the address bus just happens to be 32 bits wide, meaning that 2^32, or 4gb, of memory can be addressed. Now there are a couple exceptions to this in the "32 bit family". Processors like the Pentium Pro and Pentium II actually provide for a 36 bit memory address bus, meaning they "could" address up to 64gb of memory. But for practical purposes (and simplicity) the address bus of 32 bit processors can basically be thought of as 32 bit and capable of addressing 4gb of main memory.
Now a note here (and it relates to theoretical vs implemented aspects of things)... Sparks said that the current line of 64 bit processors can address up to 2^64 bits (addresses) of memory. Thats actually not true. The current line of AMD and Intel 64 bit processors do not have a full 64 bit implemented address bus. With the AMDs (AMD 64) the address bus is actuall 40 bits, and with the Intels (Itanium) its 44 bits. Not that this is a big deal because few situations are going to call for needing to access more memory than even the current 32 bit procesor memory buses can. But maybe it highlights/emphasizes a semi-important (and related to this thread) point. Namely that whether a processor is 32 or 64 bit really has little (practically) to do with how much memory it or motherboard chipsets that support it can address.
On the issue of pins on a simm/dimm (stick) and the amount of memory on a stick... Do the number of pins relate absoultely to the amount of memory on the stick? Obviousl not, since you have the same number of pins on a given simm or dimm yet simms/dimms come in different memory capacities. Do the number of pins on a simm/dimm dictate how much addressable memory could be on a stick? Ultimately, yes. The reasons is that while there are "X" (30, 72, 168, 184, whatever) pins that connect to a memory slot, not all these are used to carry the bits that comprise the address of the memory cell that is to be addressed (read/written). Pins must be devoted to other purposes: carrying the data and control. Truth is that on any given (memory) module (be it a simm or a dimm) there are relatively few address pins (lines). In fact a fewer number of pins are devoted to carrying a memory address are used than actually would be (are) needed to address the amount of memory on the stick. Because simms/dimms need to have a defined number of pins (corresponding to the pins in their slots, corresponding to the traces between a slot and the memory controller, ...) "pin real estate" is at a premium. That's why when it comes to address pins (lines) simms/dimms are designed to address memory on a stick (the cells) in terms of rows and colums (and even "bank", again that nebulous term that here means something different than what it meant before) . And instead of the actual (full) address of a memory cell being dealt with, addresses are dealt with in terms of a row and a colum address (and perhaps bank). And these row/column addresses are selected (transmitted to pins on the memory module) in two steps: row first, then column (generically the process is called address multiplexing, and is handled by the memory controller). Anyway... By being able to split addressing in to rows and colums (of cells) allows the number of pins used/needed to be reduced. Now back to the point (there was one wasn't there?)... Given the fact that there are a predefined number of pins on a simm/dimm, coupled with with specific needs for other functions that pins must be devoted to, means there are a limited number of pins available for addressing (even by row, column, bank means).
So as a result (and without getting specific in terms of the amount), yes, there is a relationship (limit) in terms of the amount of memory there can be on a memory module and the number of pins it has.
Well as usual, once I get started.... I hope I addressed your questions Hong. And I apologise if I jumped around and hope I didn't confuse things even more. Then again, if I did then turn about is fair play. You had my head spinning when I first read your post, it's only fair if I made yours spin in answering.
PS. I still say shoot the teacher.
aha........!!!!
Well there you have it, another masterful explanation from the Doc :)
I should have explained myself better when referring to the AMD64, that 2^64 bits is what it could theoretically address, rather than what it actually does at the moment - I guess it'll be some time before we start moaning about the 1024GB limit imposed by 2^40 addresses, let alone the 17,179,869,184 GB limit :D
LOL. I think even the gamers will have a hard time taxing that limit Sparks. And quite frankly, if they did then they deserve to run out of memory. Heck, at 4gb.:DQuote:
I guess it'll be some time before we start moaning about the 1024GB limit imposed by 2^40 addresses, let alone the 17,179,869,184 GB limit
Bloody hell Dr!!
That was an excellent explanation, my god. It is clearer in my head now, and I thank you for that!!
I wont lie and say its all crystal clear...I need more in-depth knowledge on these regions of a PC to fully comprehend it all I think, but you did a damn site better job then any teacher I've known!
My head spinning? Yes, to say the least. :D
So, since the current address bus width @ 40/44 bits is huge in comparision to what we would ever need, would this be developed further? Or do you think it will just be left st that, even with Processor technological advances?
So, to summarise, there are 3 buses to consider:
1) The data bus, which carries the info
2) the address bus, which carries the info needed to know which address range is being read/written to
3) the controller bus which I presume is used for 'controlling' the flow of data
The data bus on current mobo's (with 32bit cpu) is 64 bit, which means it transmits data in 64bit chunks. It has to transmit at that amount, no less. So the RAM Banks on a mobo has to fulfill this, primarily by using 2 x 32bit modules or 1 x 64bit module (at least).
Any more modules (excess bits of you like) are then seen as a seperate address range which the CPU can read/write to.
Am I right? Have I grasped it??
Thanks
Hong...phew
LOL. You actually made sense of what I said? WOW, you're better than me Hong.:D Hopefully it did make some sense. If you think your head's swimming, well then join the club. This isn't the kind of stuff one deals or thinks about every day (no sane person would:eek:).
Who's to say. But remember, it wasn't all that long ago people were saying "why would we ever need" things like 32-bit or 64-bit processors, hard drives that required more than 28-bits to address them, etc, etc.Quote:
So, since the current address bus width @ 40/44 bits is huge in comparision to what we would ever need, would this be developed further? Or do you think it will just be left st that, even with Processor technological advances?
And for your summary on the bus functions... You've essentially got it with the exception of perhaps a couple points.
Not exactly. Obviously, memory modules (chips, sticks, what ever you want to look at) are much bigger than 64 bits in size. It's not really the number of bits/bytes on a chip, the stick/module, even in the whole bank of memory you want to focus on. What's important is the number of data lines a given stick of memory (be it a simm, dimm, etc) has, and therefore the number of bits that can be transferred to/from that stick (to the memory controller and then on) at one time (not the number of bits on it in total). Now our rules/conventions state that, in the context of our data bus width being 64 bits, that we must be able to transfer 64 bits at a time. This requires 64 data lines. Where the "banks" come in here (in this context) is that from the standpoint of the motherboard chipset, or more specifically the memory controller(s), these banks are a logical/physical grouping/organization of the memory sticks in such a way that can provide (sets of) 64 data lines (so that the required 64 bits of data is capable of being transmitted in one shot). The number of sticks it takes to comprise a bank depends on the number of data lines provided on an individual memory module (relative to the size (in bits) of the data bus). With 72-pin simms this means 2 sticks are required to form a bank, with dimms only one stick is needed. The stick/sticks grouped in to a bank may (and certainly will) have much more than 64 bits of memory cells on it/them (megabytes, gigabytes). That's irrelevant. What is relevant is the fact that no matter what memory address range of cells that might exist on the stick/sticks, and no matter which of these addresses needs to be accessed, the access can take place in a 64-bit chunk. Now, you have to have at least one back of memory in a system (obviously, to provide the needed data lines to fill the data bus). But you can have more than one bank (and often do). This isn't "excess", just part of the overall memory address space (range of addresses). The memory just happens to be spread over different banks, and addressable by the controller(s) as such. By the way... This "bank" stuff (as well as the row/column addressing I mentioned earlier) is only relevant to the motherboard chipset and memory controllers. The processor doesn't see memory, deal with in it, in these terms. To the processor there is simply a linear range of addresses (8 bits each) going from 0 to "what ever" address.Quote:
So the RAM Banks on a mobo has to fulfill this, primarily by using 2 x 32bit modules or 1 x 64bit module (at least).
Make sense? Any clearer? Worse than before?
Erm, hmm...well... not worse at all, but not any clearer (YET!)Quote:
Make sense? Any clearer? Worse than before?
I need to read this over a few more times after lunch...
Thanks Doc
BTW, something I do understand is that the amount of Memory in a module is not relevant to its capacity to transfer in bits...
Hmm..Actually, it makes sense now. Just read it over again and indeed it makes sense.
Oh my!! :eek:
The one thing I learnt here is that the CPU doesnt deal with the memory directly, it deals with the memory controller yes? Coz in class, the tutor is always banging on about how the CPU talks with the Memory, which isnt true at all.
My shotgun is in the mail, with a full supply of ammo. :D
Hong
Well as we have said before, if the teacher says the "blah, blah, blah", then that's the way it is.;)Quote:
The one thing I learnt here is that the CPU doesnt deal with the memory directly, it deals with the memory controller yes? Coz in class, the tutor is always banging on about how the CPU talks with the Memory, which isnt true at all.
But yes, you are right. The cpu does not deal directly with the memory. It does so via the motherboard's core logic chipset (ooow, one of those fancy computer terms:D), and in turn the chipset talks through the memory controllers to the ram sticks.
Sorry for confusing things. Of course all of this is just the "broad strokes" of things. As I (think I) said before, a lot of details, nuances, etc are omitted. Hmmm. Maybe when it's all said in done your teacher actually had it right. Maybe it is just best to say "Here's the way it works, end of story. Just accept it.":D
Thanks to everyone that participated, its been a steep learning curve but we got there in the end.
Hong
:D:D:D
Till the next time...
Not wishing to try and muddy the waters any further, but it might be worth mentioning that the AMD64 does deal directly with memory, as they have moved the memory controller circuits onto the CPU die itself. Whether this will be the way of the future, and all processors will follow suit, remains to be seen.
http://www.amd.com/us-en/Processors/...5E9495,00.html
Not too confusing Sparks, managed to get that one ;)Quote:
Not wishing to try and muddy the waters any further, but it might be worth mentioning that the AMD64 does deal directly with memory, as they have moved the memory controller circuits onto the CPU die itself. Whether this will be the way of the future, and all processors will follow suit, remains to be seen.
Muddying even further....
Yes, I touched on the change in the AMD 64 in my first post and said I'd let it lie at that time.
Yes, the memory controller(s) have been moved "on-die" with the 64's, but there's a couple things this does and doesn't mean. First, having the controllers (and the paths to them) on-die does not actual mean these things are part of the actual "processor", simply that they are part of the "processor package" (which includes the cpu and...). Second, whether on-die or off, the memory controller(s) are still in the path, electrically and logistically speaking, between the actual cpu and memory. So the cpu still does not truely communicate directly with memory.
...and when I see the word memory, Northbridge comes up. It includes a memory controller and also bridges the gap between the cpu and memory. That is also where the AGP slot directly connects to. Because the video card wants to get a hold of the RAM's data ASAP.
Very well explained people!!
I managed to grasp that without much difficulty, and DrMDJ I can see what you are saying.
Thanks for all the help, its appreciated!
Hong