Overview Features Coding ApolloOS Performance Forum Downloads Products Order Contact

Welcome to the Apollo Forum

This forum is for people interested in the APOLLO CPU.
Please read the forum usage manual.
Please visit our Apollo-Discord Server for support.



All TopicsNewsPerformanceGamesDemosApolloVampireAROSWorkbenchATARIReleases
Information about the Apollo CPU and FPU.

3D Instructions?

Ika _

Posts 3
29 Nov 2019 08:31


When I went to this section of the web site I saw:
CLICK HERE 
Okay so... what are the "3D Instructions"? Please elaborate. Are these instructions for the purpose of 3D graphics programming and other floating point math tasks? What will this look like? Similar to the SIMD instructions in x86? Is it something else entirely? I cannot find any other references to this feature.

Thanks for the help


Nixus Minimax

Posts 416
29 Nov 2019 10:46


ika _ wrote:
Okay so... what are the "3D Instructions"? Please elaborate. Are these instructions for the purpose of 3D graphics programming and other floating point math tasks? What will this look like? Similar to the SIMD instructions in x86?

No Floating-point for coordinate computations but texture-mapping related. See this video to get an impression:

EXTERNAL LINK 



Ika _

Posts 3
30 Nov 2019 00:57


Interesting ... so I should consider it's features to be closer to a Pentium II rather than a Pentium 3/4, which means fixed-point 3D rendering. I am looking through the documentation here, and it looks more powerful than Pentium II's MMX, so not as limiting at all...

sorry for so many comparisons to the PC, I know that this hardware is not a PC, but it's own thing, I am just comparing it to what I am familiar with. I have been looking through the AMMX documentation, it looks interesting


Gunnar von Boehn
(Apollo Team Member)
Posts 6197
30 Nov 2019 08:17


Lets look at the Instructions and CPU features and lets compare them to other 68K.
 
  Floating point:

                        68881  68040  68060  68080
  FADD.S (A0),Fp0          75      3      3      1
  FMUL.S (A0),Fp0          95      5      3      1
  FDIV.S (A0),Fp0        127      38      37      1
  FSQRT.S (A0),Fp0        129    103      68      1
 
  Usable FPU Register      8      8      8      32
 

 

 
  So what do we see?
  You can see that the 68080 offer many more register,
  which is very good as it makes coding a lot easier.
 
  And that the 68080 can execute many more FPU instructions
  at the same time.
  With good coding the 68080 FPU can reach MUCH higher throughout.
  And is many times faster than 68040 and 68060.
 


Samuel Devulder

Posts 248
30 Nov 2019 11:17


Notice the 68080 timings assumes that the executed code is correctly scheduled (typically: hand-optimized), otherwise (dummy C compiler) it'll require, of course, few more cycles.


Ika _

Posts 3
01 Dec 2019 03:30


Gunnar von Boehn wrote:

Lets look at the Instructions and CPU features and lets compare them to other 68K.
   
    Floating point:

                          68881  68040  68060  68080
    FADD.S (A0),Fp0          75      3      3      1
    FMUL.S (A0),Fp0          95      5      3      1
    FDIV.S (A0),Fp0        127      38      37      1
    FSQRT.S (A0),Fp0        129    103      68      1
   
    Usable FPU Register      8      8      8      32
   

   

   
    So what do we see?
    You can see that the 68080 offer many more register,
    which is very good as it makes coding a lot easier.
 
    And that the 68080 can execute many more FPU instructions
    at the same time.
    With good coding the 68080 FPU can reach MUCH higher throughout.
    And is many times faster than 68040 and 68060.
   

In this case it looks a lot more powerful than I previously thought. I had no idea about the 32 registers. And is this in full double precision? Is there a speed advantage to single precision compared to double precision here? It looks a lot more promising now


Gunnar von Boehn
(Apollo Team Member)
Posts 6197
01 Dec 2019 10:27


ika _ wrote:

In this case it looks a lot more powerful than I previously thought. I had no idea about the 32 registers.

Yes the 32 registers allow more coding freedom.
And also the high peak FPU throughput allow to reach much better performance.
But you need to mind that to reach the highest performance - FPU code needs to be written with more paralism.

ika _ wrote:

And is this in full double precision?

Yes V4 is double precision.

ika _ wrote:

Is there a speed advantage to single precision compared to double precision here? It looks a lot more promising now

Double and Single have same speed.
The FPU can do 1 Double precision Operation each clock.
In theory the Vampire could even run parallel and do 2 Double Operations each cycle.
But we did not enable this so far.
We would need someone write code using it.


posts 7