Overcoming the 2GB RAM limitation

AmigaOS users can make feature requests in this forum.
Deniil
Posts: 109
Joined: Mon Jul 11, 2011 6:59 pm

Re: Overcoming the 2GB RAM limitation

Post by Deniil »

Unfortunately, other code is not always testing against NULL, a substantial portion of code does nutty pointer
math and that stuff usually breaks with signed variables when addresses are above 2 gig.
So, it's always a smart idea to use unsigned when dealing with addresses.
But does these pieces of code typically use signed ints as well? The whole thing just kind of sounds silly.. ;)

The ExtMem interface sounds interesting though, but require specific support in apps.
Belxjander
Posts: 314
Joined: Mon May 14, 2012 10:26 pm
Location: 日本千葉県松戸市 / Matsudo City, Chiba, Japan
Contact:

Re: Overcoming the 2GB RAM limitation

Post by Belxjander »

Deniil wrote:
Unfortunately, other code is not always testing against NULL, a substantial portion of code does nutty pointer
math and that stuff usually breaks with signed variables when addresses are above 2 gig.
So, it's always a smart idea to use unsigned when dealing with addresses.
But does these pieces of code typically use signed ints as well? The whole thing just kind of sounds silly.. ;)

The ExtMem interface sounds interesting though, but require specific support in apps.
The only way to handle above 2GB of memory is not to "flip the switch" as previously suggested by non-developers(apparently?) is the ExtMem Interface,
based on what I know and what is in the RKRM (3rd Edition Legacy from the 68K Exec Memory Handling...).

2MB of Chip Memory, 8 MB of "Z2 Fast Memory"(AutoConfig expansion), IOport(Z2 + Motherboard) and Kickstart Memory (1MB split 512KB for Cartridge and 512KB for physical ROM) making the first 16MB of memory with Zorro3 expansions mapping after that (there is also a fixed address allocation of 128MB set aside for Accelerator boards from the CPU slot in the AutoConfig rules based on the Dave Haynie thule.no documentation If I am reading that correctly).

the CPU itself (68K series 000,010,020,030,040 and 060) can access a flat limit of 4GB *however*, Exec is using the 32nd bit of the 32bit address space during a "multi-block allocation request" as an error marker. this is a soft-limit cutting the hardware limit in half.

AmigaOS 4 started with inheriting this Allocation arrangement and has been changing (no idea what exact changes beyond the public announcement of the ExtMem Interface).

Additional to the Exec limitation above... *EVERY PROGRAM WRITTEN FOR THE 68K WORKS TO THE ABOVE LIMITS* and have no code or option to use the ExtMem Interface at all (pre-allocate and cut the 2GB into a smaller amount for a fixed "ExtMem Window" ??? run things from that?)

Only specific programs written for the AmigaOS 4.1+ kernel using the ExtMem Interface will have any use of Memory above the 2GB or 4GB watermarks.

We don't get a "simple switch" people...there never was any such "simple switch" to flip in the first place.

We either use a "Virtual Memory Library" that works by paging "ExtMem" blocks and virtually addresssing up to 2GB per process/task and make a complete mess of the memory map (any memory used by 2 or more "process"s/"task"s must be within the first 2GB of memory and NOT subject to Virtual Memory relocations...) or we don't have more than 2GB... and the ExtMem Interface appears to be the "Virtual Memory Library" to rely on.

Without ***Applications*** making use of the ExtMem Interface, going beyond 2GB is simply not happening that I can see.
the latest RAMdisk Handler *does* this... anything else ?
I know I have been waiting for the ExtMem Intertface to become public so I can make use of it myself.

What is a constructive way to make this happen? Who do you need to make changes, what changes are needed to be made?
User avatar
colinw
AmigaOS Core Developer
AmigaOS Core Developer
Posts: 207
Joined: Mon Aug 15, 2011 9:20 am
Location: Brisbane, QLD. Australia.

Re: Overcoming the 2GB RAM limitation

Post by colinw »

Belxjander wrote: ... Without ***Applications*** making use of the ExtMem Interface, going beyond 2GB is simply not happening that I can see.
the latest RAMdisk Handler *does* this... anything else ?
I know I have been waiting for the ExtMem Intertface to become public so I can make use of it myself.

What is a constructive way to make this happen? Who do you need to make changes, what changes are needed to be made?
This may be of some interest... http://forum.hyperion-entertainment.biz ... =26&t=3153
Post Reply