English Amiga Board


Go Back   English Amiga Board > Coders > Coders. System

 
 
Thread Tools
Old 01 February 2023, 12:29   #1
SpeedGeek
Moderator
 
SpeedGeek's Avatar
 
Join Date: Dec 2010
Location: Wisconsin USA
Age: 60
Posts: 846
Lightbulb FixBoard030 1.0 released

FixBoard030 1.0 ©SpeedGeek 2023

INTRODUCTION:
FixBoard030 is a MMU tool which supports the AmigaOS CPU FastROM
command. It will mark the specified Zorro2 spaces as Cache Inhibit. This tool should enable BridgeBoard users to obtain much better Amiga system performance than most previously used MMU tools provided. Most Zorro2 I/O Boards are not affected by the 68030 CIIN feature (bug) and won't need this tool but BridgeBoards are a notable exception. Also, some BridgeBoards are using the Zorro2 Fast RAM space as I/O space.

FEATURES:
- Marks $E80000 space as cache inhibit
- Marks $A00000 space as cache inhibit
- Marks unused Zorro2 Fast RAM space as cache inhibit

REQUIREMENTS:
- 68030 CPU and MMU
- AmigaOS CPU command v44.4 (or older version)

DISCLAIMER:
Use at your own risk. No warranty expressed or implied, etc.

NOTES:
68EC030 user's are not guaranteed to have a functional MMU. But sometimes they do get a MMU which seems to be at least partially functional. So another case of your mileage will vary. Always remember, the "CPU NODATACACHE" option is a good alternative to the under-performing MMU solutions. Sorry, this tool will not fix any of the rare Zorro3 I/O Boards which may be affected by the CIIN feature (bug).

OS3.1.4+ USERS:
Unfortunately, the CPU command was downgraded with these versions so you will need to use an older version (see requirements). Also, if the 68030.library was installed then you will need to disable it to use CPU [FASTROM].

HISTORY:
v1.0 - First release
Attached Files
File Type: lha FIXBOARD030_10.LHA (1.7 KB, 54 views)

Last edited by SpeedGeek; 01 February 2023 at 13:05.
SpeedGeek is offline  
Old 10 March 2023, 01:33   #2
thebajaguy
Registered User
 
Join Date: Mar 2017
Location: Rhode Island / United States
Posts: 204
Happy to see this tool as a modern option to the elder SetCPU back in the day.

The only thing I'd like in this is a TTX-register only option. It would use the TTX registers to map the lower 16MB (motherboard) as Data NoCache. The ideal target for this option would be the Classic systems (68K native) w/68EC030 accelerators which have the non-MMU CPU, and systems with no 32-bit memory in Zorro II AutoConfig 8M land.

(A little bit of 16-bit AutoConfig Fast probably wouldn't care too much, either).

As for the Bridgecard option (with MMU), any AutoConfig board that lands in 8M space, and is not part of the memory list, is shared memory (I/O effectively), and shouldn't get cached. All 2M/4M RTG cards and possibly the Golden Gate BB fall into this category. The latter has a unique Amiga memory option that can be configured, so it's a rare and unique corner case.

Last edited by thebajaguy; 10 March 2023 at 02:38.
thebajaguy is offline  
Old 11 March 2023, 15:41   #3
SpeedGeek
Moderator
 
SpeedGeek's Avatar
 
Join Date: Dec 2010
Location: Wisconsin USA
Age: 60
Posts: 846
The TTX option disables both the instruction and data caches. This will result in a performance loss similar to the LE MMU config:

http://eab.abime.net/showthread.php?t=108534

68EC030 user's can try CPU [FASTROM] to determine if they have a partially functional MMU. CPU [FASTROM] does not manage the full 32 bits of address space or use the long format MMU table setup.

Even if their MMU is completely non-functional, they are still better off (performance wise) to use the CPU [NODATACACHE] option as explained above.

Last edited by SpeedGeek; 11 March 2023 at 18:57.
SpeedGeek is offline  
Old 12 March 2023, 22:49   #4
Thomas Richter
Registered User
 
Join Date: Jan 2019
Location: Germany
Posts: 3,307
Probably Robert's request or comment was not quite clear. The issue of the 030 is that it caches writes into Zorro-II space potentially, even though it should not. If there is no MMU for fine-grained control of the Z-II area available, you can still arrange to disable caching on writes into the 24-bit address space just by using TTx, but even *without* inflicting potentially caching reads from the same area.

TTx has an option (mask/value pair) for the function codes (set the function codes to user data, supervisor data), and an option for read/write (on the 030). Set that to "write". This way, reads from the area could be cached if the board logic decides to cache them, no matter whether instruction or data. The CIIN-logic of the board would then decide on whether caching is inhibited or not (potentially incorrect, but that is the best you can do with such a coarse granularity of 16MB). Writes would not be cached, due to TTX, and thus would work around the CIIN erratum of the 68030.

IOWs, that would use the board CIIN logic for deciding the caching mode of reads, but would override the (broken) CIIN logic for writes for the entire 24bit area due to TTX.

The only problem is that it also inhibits data write caching into board memory that appears in the Z-II area, such as of the GVP 030 Combo boards, and it does (potentially) not inhibit caching into IO areas outside of the Zorro-II area. So it is not a perfect solution, but probably the closest approximation you can get without a MMU.
Thomas Richter is offline  
Old 13 March 2023, 14:17   #5
SpeedGeek
Moderator
 
SpeedGeek's Avatar
 
Join Date: Dec 2010
Location: Wisconsin USA
Age: 60
Posts: 846
It was not clear his request for the TTX register option was for write cycles only. He was requesting the option for the data cache which can't be managed separately from the instruction cache (except with the CACR).

Your write cycle only TTX solution should work well (but I not sure it would handle read-modify-write cycles properly). I also don't like the limited granularity of the TTX register managing the full 16MB of address space.

I don't own a BridgeBoard, so I really can't test this tool and be sure it's working properly. But at least with the MMU, I can verify it's functionality with an MMU tool.

I also think the 68EC030 itself was more of marketing policy for Motorola rather than a hardware policy. It allowed them to sell full 68030's with minor MMU defects or just full 68030's without MMU warranty.

Last edited by SpeedGeek; 13 March 2023 at 14:27.
SpeedGeek is offline  
Old 13 March 2023, 18:00   #6
Thomas Richter
Registered User
 
Join Date: Jan 2019
Location: Germany
Posts: 3,307
For the records, the 68030.library does pretty much this, except that it disables caching for all data accesses (not only writes), but not for instruction accesses. This is a bit more conservative as it is not quite clear what happens with areas in the Z-II space that cannot be cached. For example, I would not know how a board logic would be able to determine whether an access into the Z-II area goes into graphics cards RAM, or into regular expansion RAM. The former cannot be cached in general as an accelerator (aka "Blitter") can overwrite the VRAM contents, the latter can be cached.

Instruction caching *should* in general be fine (unless someone comes up with the really silly idea of placing instructions in video RAM and using the blitter to move it around).

The only problem is that I am not aware of a 100% fool proof way of detecting an EC030, as you said, it may be that Mot just sold 030's with a partially defective MMU as EC030, or even regular 68030 they had still in stock, or just regular 030 that did not run through a full test cycle. It's currently a "access MMU registers, and check whether remapping works".
Thomas Richter is offline  
Old 16 March 2023, 23:58   #7
thebajaguy
Registered User
 
Join Date: Mar 2017
Location: Rhode Island / United States
Posts: 204
Thor effectively explained my comment better.

This was exactly the solution that Ralph Babel's ec030 patch (an unrleased tool, although I wish it had been, hence my request here) did in testing. I know it gets done when an EC030 is (hopefully) detected correctly by Thor's 68030.library, but it's a risk for a partially-functional MMU.

A lightweight tool resulting in data non-cache of that space when an MMU is not handy, and there is no need to install full MuLibs library package where a few K-sized tool runs and simply exits. The net result is that the lower 16M skips the CIIN bug and overall data cache issue. I see another possible use case for an 68EC030 on the A3630 when there is I/O cards in ZIII space, but the card address lines might not line up well with the TTX solution (it just came to mind).

Yes, this makes any 16/32-bit AutoConfig RAM in Z2 8M space not possible to data cache, but all of those G-Force cards, the TF's, the older Microbotics and CSA cards, and a few others with 68EC030 parts - which can map most/all of their memory >16MB anyway - they skip the possible issue this way. Z2-space Bridgecards, RTG, and (as always needed) the I/O expansion spaces and ChipRAM are needing data not to be cached, all will be satisfied.

The performance hits to Z2 AutoConfig space RAM I consider low in many cases. If something like 24-bit DMA is buffering I/O through it, caching is moot for it anyway. Pulling in 4x longwords to the data cache - for use of a few bytes here and there (in 2nd to last resort memory) - is excessive wait-state overhead for the retrieval, especially if it's from 16-bit width RAM.

As for Read/Modify/Write (TAS), it's illegal on the Amiga as per the Amiga Programmer's Guide. It can't be supported in shared RAM spaces like an RTG/Bridgecard, and ChipRAM - sometimes the only RAM (Agnus DMA owns it/operates on alternate 14MHz cycles/steals from the 68K cycles). I don't think the Z2 Buster supports it, and I won't hold my breath for SuperBuster handling it. The GVP DPRC with it's hidden on-card RAM<->DMA transfers (Like the Agnus behavior operates) would also technically break it.

Thinking about TAS and caching, it would have to test a physical RAM location anyway (assuming another busmaster can change the physical memory location and this CPU needs to act on it in an atomic cycle), so I doubt it would rely on a cached value that could be stale. Section 7-30 in https://www.nxp.com/docs/en/referenc...68030UM-P1.pdf p177-~195 covers a 32-bit port. I think it's impossible to obtain the atomic moment with a converted 16-bit or 8-bit port even if the RAM/bus might support it. In any case, it's still an illegal use instruction in the Amiga.

Last edited by thebajaguy; 17 March 2023 at 01:05.
thebajaguy is offline  
Old 17 March 2023, 12:07   #8
Thomas Richter
Registered User
 
Join Date: Jan 2019
Location: Germany
Posts: 3,307
If you are certain that you do have an 68EC030, you can also put the line "MMU off" into ENVARC:MMU-Configuration, and then the MMU will be considered absent, so there are solutions to the problem, just not pretty ones. That is always possible. Of course, it is also risky because everything is left to the user to setup the system correctly.
Thomas Richter is offline  
 


Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 
Thread Tools

Similar Threads
Thread Thread Starter Forum Replies Last Post
E-VO V3.5.0 Released Phantasm News 3 20 April 2023 17:46
Never released??? tomcat666 project.aGTW 18 18 January 2010 14:44
AmigaAMP 2.18 released Paul News 0 07 January 2007 16:56
AmiPodder 1.5 Released Paul News 0 20 August 2006 12:00
16.6 Released alexh project.WHDLoad 6 09 June 2006 10:02

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT +2. The time now is 19:04.

Top

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2024, vBulletin Solutions Inc.
Page generated in 0.08159 seconds with 14 queries