| AOS, 2 Gigs Limit, What If.... | page 1 2
|
|---|
|
|---|
Thierry Atheist Canada
| | Posts 1828 26 Jan 2012 10:56
| Since AOS, and we're talking AOS has a 2 gigabytes limit of access to RAM, what about if an Amiga had a full 4 gigabytes of RAM and a custom assembler program accessed the RAM above the first 2 gigabytes??? Isn't that possible? It would bypass the limits that AOS itself is restricted to.
| |
Jakob Eriksson Sweden
| | (Moderator) Posts 1097 26 Jan 2012 11:03
| Yes, that should be perfectly possible. The 68020 support 4 gigs of virtual memory, so it should be possible. I guess if we go that far, one could even implement the equivalent of PAE to get access to even more RAM, like how Pentium Pro and newer Intel CPUs can access up to 64 gigs of RAM even though the instruction set is 32 bit only.
| |
Nixus Minimax Germany
| | Posts 272 26 Jan 2012 12:35
| Thierry Atheist wrote:
| Since AOS, and we're talking AOS has a 2 gigabytes limit of access to RAM, what about if an Amiga had a full 4 gigabytes of RAM and a custom assembler program accessed the RAM above the first 2 gigabytes??? Isn't that possible? It would bypass the limits that AOS itself is restricted to.
|
That wouldn't be a problem, the upper 2 GB would be available to programs, they just wouldn't be managed by the OS. E.g. you couldn't allocate memory in those memory regions through the OS but you could address it. So if your program uses some portion of RAM in the upper 2 GB and so does another, you would be bound for problems.
| |
Marcel Verdaasdonk Netherlands
| | Posts 3976 26 Jan 2012 12:37
| There is no real need to increase the address beyond the current 2GB limitation. To be honest XP has a similar limit, and that OS was Designed 15 years later.(XP cannot let a program use more then 2GB unless PAE is enabled, IIRC) Jacob does it really matter? Our current design even has such a simple mistake as having the chipset in the middle of nowhere!(00DFFxxx what made sense 25 years ago doesn't need to make sense now. ;))
| |
Marcel Verdaasdonk Netherlands
| | Posts 3976 26 Jan 2012 12:39
| Nixus Minimax wrote:
|
Thierry Atheist wrote:
| Since AOS, and we're talking AOS has a 2 gigabytes limit of access to RAM, what about if an Amiga had a full 4 gigabytes of RAM and a custom assembler program accessed the RAM above the first 2 gigabytes??? Isn't that possible? It would bypass the limits that AOS itself is restricted to. |
That wouldn't be a problem, the upper 2 GB would be available to programs, they just wouldn't be managed by the OS. E.g. you couldn't allocate memory in those memory regions through the OS but you could address it. So if your program uses some portion of RAM in the upper 2 GB and so does another, you would be bound for problems.
|
UGH, HACK! But hey what works that works.Keep in mind, use only as fastRAM. ;)
| |
Nixus Minimax Germany
| | Posts 272 26 Jan 2012 13:24
| Marcel Verdaasdonk wrote:
| | UGH, HACK! |
Indeed. I would prefer running a second AOS instance in the upper 2 GB and using an MMU to change the virtual address space of that instance to the lower physical 2 GB. This would also work for more than 4 GB physical RAM. But that wasn't the question.
| |
Marcel Verdaasdonk Netherlands
| | Posts 3976 26 Jan 2012 13:51
| True, but since we only would have 512MB+/- should this have priority?
| |
Jakob Eriksson Sweden
| | (Moderator) Posts 1097 26 Jan 2012 13:58
| This not any kind of priority. Just some friendly play of "what if". :)
| |
Louis Dias USA
| | Posts 217 26 Jan 2012 20:24
| Perhaps when we have apps that require this much RAM then the conversation can be revisited. Right now it's pointless. Sure it would be nice to run a web browser without a HDD-based cache...but let's get a competent browser first, eh?
| |
Flash Lab Netherlands
| | Posts 166 26 Jan 2012 20:32
| Nah, Amiga software that needs in excess of 2Gb RAM still needs to be invented...
| |
Steve Thomas United Kingdom
| | Posts 177 26 Jan 2012 21:18
| You could have 2GB for AOS and 2GB for ramdisk. Or 2 copies of AOS with their own 2GB memory spaces.
| |
Rune Stensland Norway
| | (MX-Board Owner) Posts 871 27 Jan 2012 08:17
| The Natami CPU card has 4meg of SRAM. I think the plan is to use this ram to create a level 2 cache to improve the performance of the cpu. I would like to patch the exec.library (allocmem) to be able to allocate SRam directly. This will give us 3 types of ram/speed: Fast Chip CacheRam This gives the programmer full control of the hardware. What do you think?
| |
Marcel Verdaasdonk Netherlands
| | Posts 3976 27 Jan 2012 09:01
| Rune IMHO that is dangerous. A programmer should make his or her program with minimal assumptions. Opening up Caches to programmers gives them a choice to assume availability, this is the last thing we should look for.Cleanest solution is just to patch exec for the extra RAM and at the same time we should look beyond this. And i do not mean a MMU. ;)
| |
Nixus Minimax Germany
| | Posts 272 27 Jan 2012 09:47
| Rune Stensland wrote:
| | What do you think? |
I think such hardware features should be transparent because it couldn't be taken for granted that future hardware would have this feature. The distinction between chipmem and fastmem is necessary because only one of the two can be accessed by the custom chips. Apart from that, mem should just be mem to any program. Just my humble opinion, of course.
| |
Thierry Atheist Canada
| | Posts 1828 27 Jan 2012 10:37
| Rune Stensland wrote:
| The Natami CPU card has 4meg of SRAM. I think the plan is to use this ram to create a level 2 cache to improve the performance of the cpu. I would like to patch the exec.library (allocmem) to be able to allocate SRam directly.This will give us 3 types of ram/speed: Fast Chip CacheRam This gives the programmer full control of the hardware. What do you think?
|
I'm all for increasing speed, but this version of NatAmi is unique and will have what, only 20 units made in total, ever?Would it ever be possible that there was an assembler routine made that all could agree with to the way RAM above 2 Gigs to 4 could be used? Tall order I suppose. I ask because clearly the way DATA has exploded that Amiga does need a way for it to be accessed in short order. We have the BEST HW/SW combo bar none, but it needs a boost.
| |
Nixus Minimax Germany
| | Posts 272 27 Jan 2012 12:14
| Thierry Atheist wrote:
| Would it ever be possible that there was an assembler routine made that all could agree with to the way RAM above 2 Gigs to 4 could be used? Tall order I suppose. I ask because clearly the way DATA has exploded that Amiga does need a way for it to be accessed in short order. |
Probably the best solution for the time being would be to have a new ramdisk device that can be used to open/create large files. Perhaps these files could be made to be directly accessible using pointers. This would have the downside of limiting the total RAM size to 4 GB because of the 32 bit limitation. If the ramdisk was accessed just like an ordinary filesystem, it could have any size. Another idea would be to use the additional RAM as part of a virtual memory subsystem. This would require an MMU, though. The MMU would also be the only clean way to break the 4 GB barrier. The MMU could be implemented to manage more than 4 GB of RAM while limiting the address space of each program to a maximum of 4 GB (or 2 GB).
| |
Jakob Eriksson Sweden
| | (Moderator) Posts 1097 27 Jan 2012 12:56
| That is basically PAE.
| |
Marcel Verdaasdonk Netherlands
| | Posts 3976 27 Jan 2012 12:57
| Nixus passing pointers is not a option if you have a MMU. to quote RJ Mical, "Several reasons. Obviously, cost was a factor. MMUs available at the time the Amiga was designed also consumed system time [this is what he said- I'm just the scribe]; although newer MMUs solve this problem they were too late for the Amiga. Second, the original goal of the Amiga was to be a killer game machine with easy low-level access, and an MMU didn't seem necessary for a game machine. Third [get this!] with an MMU, message-passing becomes MUCH MUCH hairier and slower, since in the Amiga messages are passed by just passing a pointer to someone else's memory. With protection, either public memory would need to be done and system calls issued to allocate it, etc., or the entire message would have to be passed. Yecch. So the lack of MMU actually speeds up the basic operation of the Amiga several fold.". source: EXTERNAL LINK
| |
Nixus Minimax Germany
| | Posts 272 27 Jan 2012 13:14
| Marcel Verdaasdonk wrote:
| | Nixus passing pointers is not a option if you have a MMU. |
Yes, that is true. The AOS message system is mostly incompatible with individual address spaces for individual tasks. The AOS message system could be implemented to work in a memory managed environment without the tasks noticing. What would never work, though, is to make sure that the data passed from task to task is still valid in a different address space (i.e. when passing pointers, as you say). I wrote an AOS compliant demo engine where the code was split into demo code (client) and a server that made sure that the frame was displayed (custom chunky2planar or via RTG according to what was available). Because of the size limitation of AOS messages I passed pointers rather than the image buffer itself. This would break if the two tasks resided in different address spaces. Regarding RJ Mical's comment, all of that was the (completely valid) point of view of 1985. Today the message passing would hardly be a noticeable speed penalty.
| |
Przemyslaw Szeremiota Poland
| | Posts 25 27 Jan 2012 17:37
| Well, this "advantage" of super-fast message passing was obviously short-sighted, as we see it today: neither Morphos, nor AmigaOS (nor AROS!) still hdidn't get what other operating system got years ago, and what really matters for programmers: virtual address spaces... I think that we could implement some (somewhat restricted, sure) memory protection in alternative implementation of AOS (AROS?), namely we could map memory regions as shared between these processes that communicates with AOS messaging system. What you think?
| |
|