Welcome, Guest. Please login or register.

Author Topic: How does the PowerUP-accelerators actually work?  (Read 3119 times)

Description:

0 Members and 1 Guest are viewing this topic.

Offline Karlos

  • Sockologist
  • Global Moderator
  • Hero Member
  • *****
  • Join Date: Nov 2002
  • Posts: 16882
  • Country: gb
  • Thanked: 6 times
    • Show all replies
Re: How does the PowerUP-accelerators actually work?
« on: November 12, 2003, 01:26:35 AM »
@downix

I disagree strongly. I have used PPC on amiga since the BlizzPPC was first available here in the UK.

The only version of warpos that I have ever seen run slower than powerup on my machine was an early powerpc.library implementation that actually ran on powerup itself. I think this was powerpc.library v7.

The earlier versions of the powerup kernel were extremely poor and the warpup kernel (after v7 when it became removed from the ppc.library dependencies) proved considerably faster. It multitasked more smoothly and context switching times were roughly half that for powerup.

Later revisions of the powerup kernel improved performance dramatically, but were in my experience merely 'catching up' with warpup.

I guess in the final analysis it all comes down to the machine configuration and it's academic since both MOS and OS4 will never have to worry about a real 680x0 processor again ;-)
int p; // A
 

Offline Karlos

  • Sockologist
  • Global Moderator
  • Hero Member
  • *****
  • Join Date: Nov 2002
  • Posts: 16882
  • Country: gb
  • Thanked: 6 times
    • Show all replies
Re: How does the PowerUP-accelerators actually work?
« Reply #1 on: November 16, 2003, 09:03:44 PM »
Quote

bloodline wrote:
The PPC is not allowed to access any AmigaOS structures but instead must ask the 68K to do OS things for it.


Not entirely true. The PPC read access amiga OS data structures fine as long as the basic alignment is limited to 2 byte boundaries. Thats why you have #pragma amiga-align in vbcc ;-)

Writing to OS data structures is fine too, provided they are allocated cache aligned, hence the AlocVec32() functions.

However, just as with 680x0 code, you *should* use the OS functions for dealing with OS structures where possible.

For writing 'good' code under warpos, the best thing is to gather all of your 680x0 OS routines that are called as part of an operation (updating the display, fetching input events from your window etc., waiting for the display sync) into a single 68K function that you can then manually context switch to from the PPC.

I used this approach in some experimental code in vbcc to test the idea and got a double/triple bufffered display with IDCMP input (the event data was copied to a shared area so the handler callbacks can be ppc native) down to one full PPC->68K->PPC context switch per frame.

Still, I am looking forward to forgetting all of these type tricks when OS4 is released :lol:
int p; // A
 

Offline Karlos

  • Sockologist
  • Global Moderator
  • Hero Member
  • *****
  • Join Date: Nov 2002
  • Posts: 16882
  • Country: gb
  • Thanked: 6 times
    • Show all replies
Re: How does the PowerUP-accelerators actually work?
« Reply #2 on: November 17, 2003, 02:39:10 AM »
@lempkee

I have to admit, you have me foxed with the 'switching between 3 cpus' thing also. The motherboard 68020 in the a1200 is totally offline by the time the BlizzPPC's 68040/60 is up and running.
int p; // A