News:

MASM32 SDK Description, downloads and other helpful links
MASM32.com New Forum Link
masmforum WebSite

Extended MEmory

Started by harsha, May 25, 2005, 01:40:23 AM

Previous topic - Next topic

harsha

Whts the cutting difference between Expanded memory and Extended memory.The maximum allocating memoery address bus for
a 286 and 386 processor is 2^10 address i.e about 1 mb only.Whts the bus width for processors
that are in use now a days ?And I have got 2 128mb memory cards Installed in my computer
whats that memory called? ::)

BigDaddy

Extended memory is directly addressable by the processor - but not in 8086 mode.  8086 mode doesn't have enough address lines.  The A20 gate can give other CPU modes more address lines.  To use extended memory in DOS, the system enters protected mode. 

Expanded memory is not on the motherboard, but is on a card, and you need a device driver to move data to or from that card. 

BogdanOntanu

The main difference are:

The extended memory is accessed via a switch to protected mode. Because of this it is more simpler to implement since it requires only a 386+ CPU for this. However it is a little slower than expanded memory.

The expanded memory might be on a card (for 8086) or on the motherboard itself (for 80286) and it is accessed by a window area of 16K up to 64K

This window is located somewhere below the 1M boundry. This requires some hardware on 8086 and 80286 and it is simulated by PMode switch on 386+.

On 8086 and 80286 it is basically the only fast method to have more memory for DOS or realmode applications. It is a little more complicated to manage than Extended memory. It is usually simulated on 386+ and not faster on such systems.
Ambition is a lame excuse for the ones not brave enough to be lazy.
http://www.oby.ro

MichaelW

Hi harsha,

To add to the previous posts:

Expanded memory is old, essentially obsolete technology that was used to increase the amount of memory available to application programs running (originally) under MS-DOS/PC-DOS. When expanded memory first appeared it depended on an add-in card that typically had a relatively small amount of onboard DRAM. The card in combination with a driver allowed compatible application programs to selectively map the onboard DRAM into the processor's address space, in an area called the "page frame", typically located in an otherwise unused area of "upper" memory, somewhere between absolute addresses A0000h and FFFFFh. The applicable specification is the Lotus/Intel/Microsoft Expanded Memory Specification (EMS), and if I remember correctly the final version was 4.0. The 386 Memory Managers (EMM386 for example) that appeared some time after the 386 processor used extended memory to emulate expanded memory.

The term Extended memory was typically used to specify any part of the system's main memory that was mapped in above the 1MB real-mode address limit of the x86 processors. Under DOS, drivers (HIMEM.SYS for example) were used to provide indirect access to extended memory. The applicable specification is (or at least was in the beginning) the Microsoft/Intel/Lotus/AST eXtended Memory Specification (XMS). To get an idea of how the indirect access worked, see the XMS specification or the function listings in Ralf Brown's Interrupt List:

http://www.ctyme.com/rbrown.htm

Extended memory first appeared with the 80286.

The 8086, 8088, 80186, and 80188 had 20-bit address busses. The 80286 and 80386SX had 24-bit address busses. AFAIK all x86 processors from the 80386DX onwards have at least a 32-bit address bus (>32 for PAE and the recent 64-bit processors).

I think the two 128MB memory cards you refer to are probably memory "modules". The memory on them is your system's "main" memory, and it's probably some variation of SDRAM.
eschew obfuscation

harsha

THNX :U every one you cleared many of my doubts and now  I had some new ones,
They are
what is Memory module,and two types of these SDRAM and DDRAM??
Can these modules add up to expanded memory?? :eek

BogdanOntanu

So you should understant that Expanded memory and extended memory are just some ways to have more memory in DOS or on a PC that has a very old CPU like and 8086 or 80286 or early 80386. That is because DOS was designed to hanle a maximum of 1M or memory and 8086 CPU can only access 1M via normal addressing. 80286 was able to access more memory but the return from protected mode was very slow ... so it was somehow useless for DOS that was running into "real mode" and needed this switch back to function.

80386 CPU and other OSes have fixed this issues.

Unless you have an expanded memory board for an 8086... memory modules SDRAM/DDRAM/etc just add up to mormal CPU memory.
In DOS this memory can be "seen as" expanded or extended depending on the setup or EMM386.EXE but for moder OSes like Windows 95/98/NT/2000/XP and Linux / Unix this memory is just simply accessed without such "expanded" or "extended" considerations.

Moder OS's have other memory issues: flat memory mode, paging, virtual memory, etc :D , expander or extended is irelevant for them.. it has a use only for DOS.

SDRAM is a menmonic for : Single Data Rate Dynamic Random Access memory Module

DDRAM is a mnemonic for Double Data Rate Dynamyc Random Access memory Module

Basically DDRAM is able to transfer twice (double) more data compared with SDRAM at the same frequency by using both edges of the system clock. This is all peak theoreticall features... in prectice things go slightly worst.

Besides almost all memory modules (besides cache) are DYNAMIC.. and this means that they need refresh periodically and this slows them down, they also need RAS and CAS selection signals and this again makes them 2x slower... uless you use a RAS+ multiple CAS burst modes... Anyway this is a little to complicated for a non electronical engineer to understand...

What do you really need to know... and why? what is the purpose...

Dont get me wrong, but i have seen newbies much to offten understanding things completly wrong because of a hidden ideea inside their minds :D I just want to be sure that you are on the right path ;)









Ambition is a lame excuse for the ones not brave enough to be lazy.
http://www.oby.ro

MichaelW

SDRAM originally was an acronym for Synchronous Dynamic Random Access Memory. I was hoping to find a non-technical description by one of the memory manufacturers, but this was the best I could do:

http://www.pcguide.com/ref/ram/tech_SDRAM.htm

The article is ~5 years old.



eschew obfuscation

harsha

Iam learning C as a part of my B.tech course.I have got some hardware interaction chapters in my syllabus and i have to study a part of memory topics and new trends Book at me are not satisfying me so i got it here.Whenever i post a messg here i learning many new things.More I Learn More I gain confidence in myself.Thnx for everyone here :U