Welcome, Guest. Please login or register.

Author Topic: APOLLO 68080 is now HYPER-THREADING enabled  (Read 13235 times)

Description:

0 Members and 1 Guest are viewing this topic.

Offline psxphill

Re: APOLLO 68080 is now HYPER-THREADING enabled
« on: June 27, 2017, 11:07:32 AM »
Quote from: Djole;827577
Gunnar did explain on the Apollo forum how to make use of HP on AmigaOS for some real speedup.


I read his post and he suggested using one register set for user mode and one for interrupt mode, purely to avoid the movem.l overhead when processing interrupts & not actually run code using the two register sets simultaneously.

It should be possible to make movem.l into cached ram pretty instantaneous though. Which would benefit calling ever single function.
 

Offline psxphill

Re: APOLLO 68080 is now HYPER-THREADING enabled
« Reply #1 on: June 27, 2017, 04:31:47 PM »
Quote from: grond;827659
movem.l is a more difficult instruction to speed up than you believe. It is a multi-cycle instruction like DIV and thus runs only on one of the two pipelines. Furthermore it needs to read up to 15 registers when the register file is limited to only two read-ports per pipeline.


I don't doubt that there are limitations of apollo and working round it with hyperthreading is probably easier for him.
 

Offline psxphill

Re: APOLLO 68080 is now HYPER-THREADING enabled
« Reply #2 on: June 27, 2017, 08:47:24 PM »
Quote from: Thomas Richter;827672
Now, what does your interrupt do that it requires less than 30 cycles in actual payload code?


The interrupt might just signal or enqueue, which should be quite low number of cycles. But maybe the movem.l is dumb and stalls the pipeline until it's written all the registers.