views:

139

answers:

4

How can a extend memory space at 8086 up to 1 GB ???

+2  A: 

You could upgrade to a more modern processor. For example, any processor that's not from the seventies!

If that's out of the question, this probably becomes more of a hardware problem than a software problem...

Matti Virkkunen
Well it a hardware problem. I have to explain how can i phisicly extend the memory up to 1 GB. I think i need a bank that can address 1MB and a multiplexer 10>1024 so i will get 1 GB. It sounds good when i say, but i dont know if its possible
Vlatko
We should abandon x86, you say? I can't agree more strongly!
Anonymouse
Yes, it is possible.
Matti Virkkunen
@Anonymouse: Fine, fine, I removed the word "architecture" :) Although I really wouldn't mind getting rid of x86 while we're at it. By the way, a workmate of mine keeps pronouncing "anonymous" as "anonymouse", you know him by any change?
Matti Virkkunen
@Anonymouse 8086 != x86, 8086 had 16bit memory space, x86 has 32bit, x64 (AMD64) has 64bit. 2^16=64K, 2^32=4GB, 2^64=16M of PBs!The only way to use more memory is to use longer address words (which you can't) or use a hardware extension with more bits and access it with two or more words.
Danny Varod
Matti Virkkunen: unlikely! I think I stole the name from someone on slashdot. Danny Varod: Not only was that a joke, but the problems with x86 extend far, far beyond memory space constraints of older generations.
Anonymouse
+2  A: 

You'd have to implement some kind of bank switching in hardware.

Zydeco
+1 Yes, that would be what I was referring to by "hardware".
Matti Virkkunen
A: 

8086 had 16bit memory space, x86 has 32bit, x64 (AMD64) has 64bit. 2^16=64K, 2^32=4GB, 2^64=16M of PBs!

The only way to use more memory is to use longer address words (which you can't) or use a hardware extension with more bits and access it with two or more words.

Danny Varod
What's the vote down for? Never owned a 8086/8088?
Danny Varod
+4  A: 

Obviously, you're not going to get a linear address space. 1GB of space requires 30 address lines, and there are only 20 physical address lines on the 8086. You implement bank switching, where the 8086 provides 20 lower address lines. The 10 additional lines are provided via a latch that you map to a 16-bit I/O port. Writing a value to that port stores the 10-bit bank number in the latch. The latch is then used to feed the upper 10 address lines to memory.

When I did this as hardware project at university 20 years ago, the largest memory we could get hold of then was 2MB - I've no idea how you would interface a modern 1GB memory module!

mdma
Can i make a bank of 1 MB memory and also make 2 latches for the additional 10 lines which will enter in a multiplexer (we call it that way) so we could get 1024 outputs and each output to select 1 bank ? I think thats the way of getting 1 GB, but that my theory so can you help m? Is my theory ok??
Vlatko
I don't understand why you need 2 latches (Unless you mean 2 8-bit ones to cover the 10-bits needed.) 1024 outputs - I don't think you need that, unless you really have 1024 separate 1MB memory modules. If you have just 1 module, then keep the 1MB bank selection encoded in 10 bits, it's a lot simpler that way.
mdma
As it's for an exam, I shaln't say any more, as you need to do some thinking as well! :) All the pieces of the picture are here, you just need to think it through! Good luck!
mdma
Yes i ment 2 8-bit latches to cover 10 bits. 1024 outputs to select 1024 banks (1 MB each ) so i can address up to 1 GB. This is a question that i get on my exam last week , and i think i will get the same one tomorrow. Its a theoretical guestion, we can draw or write
Vlatko
Sounds good. but not 1024 outputs - 10 outputs, with 1024 combinations.
mdma
Yes 10 outputs and we can use multiplexer to get 1024 combinations. But that "sounds good" means my answer is correct or maybe?
Vlatko
Do you really want 1024 separate 1MB memory modules? Think how this would work with a single 1GB module...
mdma
How can i make single 1 GB module? I tought 1024x1MB is the only way
Vlatko