Your support is needed and is appreciated as Amigaworld.net is primarily dependent upon the support of its users.
|
|
|
|
Poster | Thread | corto
| ![](https://amigaworld.net/images/icons/posticon.gif) |
Re: DIY PPC gaming computer Posted on 11-Mar-2024 22:30:02
| | [ #21 ] |
| |
![](https://amigaworld.net/images/avatar/users/2788.gif) |
Regular Member ![](https://amigaworld.net/images/ranks/2blocks.gif) |
Joined: 24-Apr-2004 Posts: 342
From: Grenoble (France) | | |
|
| I love to see this kind of report with technical details. And I am also really impressed by the work done! This is a real performance. Congratulations to the author!
That said, the board is cheap but ... I didn't find it anywhere. And even if it was available, there are numerous steps and hacks that make it too difficult to do for anyone.
So, this is an incredible proof of concept but not really a cheap DYI motherboard. |
| Status: Offline |
| | cdimauro
| ![](https://amigaworld.net/images/icons/posticon.gif) |
Re: DIY PPC gaming computer Posted on 12-Mar-2024 6:00:58
| | [ #22 ] |
| |
![](https://amigaworld.net/images/avatar/users/12021.jpg) |
Elite Member ![](https://amigaworld.net/images/ranks/5blocks.gif) |
Joined: 29-Oct-2012 Posts: 3901
From: Germany | | |
|
| @Hans
Quote:
Hans wrote: @OneTimer1
That's pretty cool. I personally couldn't be bothered to try such a thing, but enjoy watching people push older tech. far beyond what it was designed for.
One thing I picked out of the article, is that CLang/LLVM still has SPE support. Good news for the A1222. I've been using an older version of GCC for compiling SPE code.
Hans
|
Well, compiling LLVM isn't that easy, eh! ![](https://amigaworld.net/images/smilies/icon_biggrin.gif) |
| Status: Offline |
| | cdimauro
| ![](https://amigaworld.net/images/icons/posticon.gif) |
Re: DIY PPC gaming computer Posted on 12-Mar-2024 6:02:35
| | [ #23 ] |
| |
![](https://amigaworld.net/images/avatar/users/12021.jpg) |
Elite Member ![](https://amigaworld.net/images/ranks/5blocks.gif) |
Joined: 29-Oct-2012 Posts: 3901
From: Germany | | |
|
| @NutsAboutAmiga
Quote:
NutsAboutAmiga wrote: @pavlor
It requires quite beefy PC to emulate PowerPC, because of endianness, A good PC’s do compensate for endianness issue by having faster memory controllers. |
PCs already have the MOVBE instructions since several years, which make the endian conversion much faster (compared to the only BSWAP instruction).
Of course, it should be... used by the JIT compilers. |
| Status: Offline |
| | Rob
![](https://amigaworld.net/images/supportertags/bronze.gif) | ![](https://amigaworld.net/images/icons/posticon.gif) |
Re: DIY PPC gaming computer Posted on 13-Mar-2024 20:14:29
| | [ #24 ] |
| |
![](https://amigaworld.net/images/avatar/users/617.jpg) |
Elite Member ![](https://amigaworld.net/images/ranks/5blocks.gif) |
Joined: 20-Mar-2003 Posts: 6370
From: S.Wales | | |
|
| @NutsAboutAmiga
Quote:
i love it, can be perfect for AmigaOS4.x, just put it in a different box. |
It only has 128Mb so it would be pretty limited. |
| Status: Offline |
| | Hypex
![](https://amigaworld.net/images/supportertags/bronze.gif) | ![](https://amigaworld.net/images/icons/posticon.gif) |
Re: DIY PPC gaming computer Posted on 15-Mar-2024 3:31:48
| | [ #25 ] |
| |
![](https://amigaworld.net/images/avatar/users/6241.jpeg) |
Elite Member ![](https://amigaworld.net/images/ranks/5blocks.gif) |
Joined: 6-May-2007 Posts: 11293
From: Greensborough, Australia | | |
|
| @NutsAboutAmiga
Quote:
It requires quite beefy PC to emulate PowerPC, because of endianness, A good PC’s do compensate for endianness issue by having faster memory controllers. |
Shouldn't be an issue. 20 years ago Amithlon dealt with this. Using bswap before and after memory access.
Now days x86/64 has had specific big endian supports for decades. If there is still any issue then it's the coders or compilers that need to be brought up to date. x86 has better reverse storage instructions than PPC, it can reverse both in register and at memory. PPC can only do it at memory, where it's relevant, but compiler built ins (GCC) make a wreckage on PPC because they are designed to swap variables.
It's a bit lame for people online to say network structures should be changed to little endian because their x86 is. Who cares? Mixed endian in data are fact of life. Its not just the most popular endian that matters. x86 had had the best compilers for any CPU I'm aware of. So if x86, which has better big endian support than your granny, still has trouble with big endian datatypes there is something wrong with the coding world! ![](https://amigaworld.net/images/smilies/icon_razz.gif) |
| Status: Offline |
| | Hammer
![](https://amigaworld.net/images/supportertags/bronze.gif) | ![](https://amigaworld.net/images/icons/posticon.gif) |
Re: DIY PPC gaming computer Posted on 15-Mar-2024 3:56:10
| | [ #26 ] |
| |
![](https://amigaworld.net/images/avatar/blank.gif) |
Elite Member ![](https://amigaworld.net/images/ranks/5blocks.gif) |
Joined: 9-Mar-2003 Posts: 5786
From: Australia | | |
|
| @Rob
Quote:
Rob wrote: @NutsAboutAmiga
Quote:
i love it, can be perfect for AmigaOS4.x, just put it in a different box. |
It only has 128Mb so it would be pretty limited. |
My WinUAE's CyberStorm PPC/AmigaOS 4.1 FE has more than 1 GB RAM i.e.
Avail Installed: 1,208,991,712 Free: 1,125,761,568_________________ Amiga 1200 (rev 1D1, KS 3.2, PiStorm32/RPi CM4/Emu68) Amiga 500 (rev 6A, ECS, KS 3.2, PiStorm/RPi 4B/Emu68) Ryzen 9 7900X, DDR5-6000 64 GB RAM, GeForce RTX 4080 16 GB |
| Status: Offline |
| | Karlos
| ![](https://amigaworld.net/images/icons/posticon.gif) |
Re: DIY PPC gaming computer Posted on 16-Mar-2024 5:07:30
| | [ #27 ] |
| |
![](https://amigaworld.net/images/avatar/users/1542.jpg) |
Elite Member ![](https://amigaworld.net/images/ranks/5blocks.gif) |
Joined: 24-Aug-2003 Posts: 4531
From: As-sassin-aaate! As-sassin-aaate! Ooh! We forgot the ammunition! | | |
|
| | Status: Offline |
| | NutsAboutAmiga
| ![](https://amigaworld.net/images/icons/posticon.gif) |
Re: DIY PPC gaming computer Posted on 17-Mar-2024 11:13:15
| | [ #28 ] |
| |
![](https://amigaworld.net/images/avatar/users/2981.jpg) |
Elite Member ![](https://amigaworld.net/images/ranks/5blocks.gif) |
Joined: 9-Jun-2004 Posts: 12866
From: Norway | | |
|
| @Hypex
Just to be clear I don't have a cyclopedic knowledge, I don't code professionally, I only write assembler when I feel a need to optimize something I can’t find on other options for, and I mostly been coding in 68000 assembly and PowerPC assembly
Emulation used to be slow, and that was the case, for many years. there probably a lot that has changed beside faster RAM. And smarter cache handling.
I did not bring up network packages, so why that came into the conversation, I wonder did you use ChatGPT? It adds a bunch of nonsense. It seems to lack the ability iterate on the information it finds, to determine its relevance.
You might be right that it has been in there for decades, But it takes time for code bases to catch up to the instruction set, the jit compilers the C compilers will use old ways of doing things unless they are changed to support the new instructions, An a general methods are used for and you're not even though there are better ways to implement. For example, the old C macros for endianness swapping.
On list of worst to best I state that C macros are worst.
Then SWAP instruction, as you need two instructions load + swap, swap + store.
then comes the MOVBE (x86), or reverse load / store instructions (PowerPC.)
Swap instruction is relevant, because it can replace horrible C macros, it’s a short way to success, and you might say PowerPC does not have it, well for 16bit it actually has, using the shift instructions.
Last edited by NutsAboutAmiga on 17-Mar-2024 at 11:31 AM.
_________________ http://lifeofliveforit.blogspot.no/ Facebook::LiveForIt Software for AmigaOS |
| Status: Offline |
| | NutsAboutAmiga
| ![](https://amigaworld.net/images/icons/posticon.gif) |
Re: DIY PPC gaming computer Posted on 17-Mar-2024 11:25:50
| | [ #29 ] |
| |
![](https://amigaworld.net/images/avatar/users/2981.jpg) |
Elite Member ![](https://amigaworld.net/images/ranks/5blocks.gif) |
Joined: 9-Jun-2004 Posts: 12866
From: Norway | | |
|
| @Hypex
Amithlon speed came a lot from removing chipset emulation, doing less useless stuff. And providing direct access to hardware, so that programs did not write to frame buffers, but instead access graphic cards directly. The UAE implementation will actually add up number of cycles it uses per instruction, to be used in the emulation of sound and other places, there lots of counters, are being maintained. While AGA screen is not being displayed the Copper can actually used for other things like audio, as it has direct access to the chipset. The copper provided exact timing at low cost.
As people have noticed on X5000 in particular messing around with GFX in EUAE has resulted in speed up does to reduce amount data being send to the graphic card, emulation is memory bound, its CPU bound, and depends on your hardware.
Amithlon is not a good example of maintain backwards compatibility, and if are looking for something like that perhaps QEMU running AmigaOS4.1 is better idea. More programs wherever written for AmigaOS4.1 then it was ever written for Amithlon.
2en bottleneck after endianness is emulating the MMU, but that’s the case for any CPU that require emulation of soft MMU. Last edited by NutsAboutAmiga on 17-Mar-2024 at 11:30 AM. Last edited by NutsAboutAmiga on 17-Mar-2024 at 11:26 AM.
_________________ http://lifeofliveforit.blogspot.no/ Facebook::LiveForIt Software for AmigaOS |
| Status: Offline |
| | cdimauro
| ![](https://amigaworld.net/images/icons/posticon.gif) |
Re: DIY PPC gaming computer Posted on 17-Mar-2024 13:38:41
| | [ #30 ] |
| |
![](https://amigaworld.net/images/avatar/users/12021.jpg) |
Elite Member ![](https://amigaworld.net/images/ranks/5blocks.gif) |
Joined: 29-Oct-2012 Posts: 3901
From: Germany | | |
|
| @NutsAboutAmiga
Quote:
NutsAboutAmiga wrote: @Hypex
Just to be clear I don't have a cyclopedic knowledge, I don't code professionally, I only write assembler when I feel a need to optimize something I can’t find on other options for, and I mostly been coding in 68000 assembly and PowerPC assembly
Emulation used to be slow, and that was the case, for many years. there probably a lot that has changed beside faster RAM. And smarter cache handling. |
It used to be slow because they were first implementations.
Things evolved, processors added new features, and I can assure you that it's definitely possible to have much better emulators nowadays compared to the past. Especially if you have some original ideas that could be applied (also, in general, to virtual machines like the ones used in Java, Python, etc.).
Besides that, usually emulation is slow because you emulate an entire system (e.g.: hardware included) which doesn't allow to fully exploit the achievable performances. Projects like Emu68 show at which level you can arrive when you do NOT have to (fully) emulate the hardware. This is the way to go for OS-friendly applications. Quote:
You might be right that it has been in there for decades, But it takes time for code bases to catch up to the instruction set, the jit compilers the C compilers will use old ways of doing things unless they are changed to support the new instructions, |
The problem here is that for old/retro platforms you often are stuck using old compilers that cannot optimize the code in better ways (with some exception: some old 68k compilers generate better code than modern ones). Quote:
An a general methods are used for and you're not even though there are better ways to implement. For example, the old C macros for endianness swapping.
On list of worst to best I state that C macros are worst.
Then SWAP instruction, as you need two instructions load + swap, swap + store.
then comes the MOVBE (x86), or reverse load / store instructions (PowerPC.)
Swap instruction is relevant, because it can replace horrible C macros, it’s a short way to success, and you might say PowerPC does not have it, well for 16bit it actually has, using the shift instructions. |
In those case you should NOT directly use any instruction for a specific processor, because the compiler should be able to catch those code patterns and automatically generate the proper instruction(s) for a specific processor. @NutsAboutAmiga
Quote:
NutsAboutAmiga wrote: @Hypex
Amithlon speed came a lot from removing chipset emulation, doing less useless stuff. |
Exactly. That's how it should go for OS-friendly applications, in order to get the best performance. Quote:
And providing direct access to hardware, so that programs did not write to frame buffers, but instead access graphic cards directly. |
Not relevant anymore, with the powerful hardware which we can use since several years. There's little gain of following Amithlon approach with a lot of effort (maintaining this infrastructure). Quote:
The UAE implementation will actually add up number of cycles it uses per instruction, to be used in the emulation of sound and other places, there lots of counters, are being maintained. |
That's why UAE is NOT the way to go.
Albeit many things could be perfectly emulated by using an hardware thread which can run completely in parallel with the main thread which is executing the 68k (or any other non-host processor) code. Quote:
While AGA screen is not being displayed the Copper can actually used for other things like audio, as it has direct access to the chipset. The copper provided exact timing at low cost. |
That's what I've done on my games (USA Racing, specifically): I've used the Copper for playing the music (in my special format: it took half the space of a regular .MOD and it's much faster to decode / executed) and sfx.
All in all, it took around one raster line for it: a negligible cost. Quote:
As people have noticed on X5000 in particular messing around with GFX in EUAE has resulted in speed up does to reduce amount data being send to the graphic card, emulation is memory bound, its CPU bound, and depends on your hardware. |
Maybe because that isn't offloaded to another core / hardware thread, like it's happening in WinUAE. Quote:
Amithlon is not a good example of maintain backwards compatibility, |
Why? You don't need full hardware compatibility, unless you need to play games or some special application. Quote:
and if are looking for something like that perhaps QEMU running AmigaOS4.1 is better idea. More programs wherever written for AmigaOS4.1 then it was ever written for Amithlon. |
QEMU is slow... Quote:
2en bottleneck after endianness is emulating the MMU, but that’s the case for any CPU that require emulation of soft MMU. |
There can tricks for it to speed the emulation. |
| Status: Offline |
| | NutsAboutAmiga
| ![](https://amigaworld.net/images/icons/posticon.gif) |
Re: DIY PPC gaming computer Posted on 17-Mar-2024 14:22:48
| | [ #31 ] |
| |
![](https://amigaworld.net/images/avatar/users/2981.jpg) |
Elite Member ![](https://amigaworld.net/images/ranks/5blocks.gif) |
Joined: 9-Jun-2004 Posts: 12866
From: Norway | | |
|
| @cdimauro
Quote:
in those case you should NOT directly use any instruction for a specific processor, because the compiler should be able to catch those code patterns and automatically generate the proper instruction(s) for a specific processor. |
beside the late addition __builtin_bswap32(), __builtin_bswap16(), there really is no support for in-language syntax in the C++ / C language.
I guess idea suggest by C++ developers was everything can be classes. That way you have your setters and getters do the swapping. That of course dumps all the work on the developers, and result is probably going to be suboptimal. So, there is not a Int64le or Int64be type in the language itself, int64 is just a native format of the CPU.
Technical some CPU’s don’t have native format anymore, like Power CPU can run LE or BE versions of Linux, so up to the compiler what it produces.
Last edited by NutsAboutAmiga on 17-Mar-2024 at 02:23 PM.
_________________ http://lifeofliveforit.blogspot.no/ Facebook::LiveForIt Software for AmigaOS |
| Status: Offline |
| | cdimauro
| ![](https://amigaworld.net/images/icons/posticon.gif) |
Re: DIY PPC gaming computer Posted on 18-Mar-2024 5:00:25
| | [ #32 ] |
| |
![](https://amigaworld.net/images/avatar/users/12021.jpg) |
Elite Member ![](https://amigaworld.net/images/ranks/5blocks.gif) |
Joined: 29-Oct-2012 Posts: 3901
From: Germany | | |
|
| @NutsAboutAmiga
Quote:
NutsAboutAmiga wrote: @cdimauro
Quote:
in those case you should NOT directly use any instruction for a specific processor, because the compiler should be able to catch those code patterns and automatically generate the proper instruction(s) for a specific processor. |
beside the late addition __builtin_bswap32(), __builtin_bswap16(), there really is no support for in-language syntax in the C++ / C language.
I guess idea suggest by C++ developers was everything can be classes. That way you have your setters and getters do the swapping. That of course dumps all the work on the developers, and result is probably going to be suboptimal. So, there is not a Int64le or Int64be type in the language itself, int64 is just a native format of the CPU.
Technical some CPU’s don’t have native format anymore, like Power CPU can run LE or BE versions of Linux, so up to the compiler what it produces.
|
You haven't got me. I was referring to a complete different thing. Here you can find more clarifications with real-world examples using modern compilers to detect some code patterns and emitting proper instructions:
https://stackoverflow.com/questions/36497605/how-to-make-gcc-generate-bswap-instruction-for-big-endian-store-without-builtins
As you can see, you do NOT need use architectural/compiler specific builtins to have the compiler generating the expected instructions: you write the code in a certain way (mimicking what a BE conversion is doing) and the compiler will recognize it and generate the instruction (BSWAP for old architectures. MOVBE for newer architectures; which for Intel means starting from Haswell, which is anyway quite old).
Of course, if you're writing a JIT compiler all of this doesn't make sense at all, because you need to manually generate binaries on the fly for the proper architecture. |
| Status: Offline |
| | NutsAboutAmiga
| ![](https://amigaworld.net/images/icons/posticon.gif) |
Re: DIY PPC gaming computer Posted on 18-Mar-2024 16:18:03
| | [ #33 ] |
| |
![](https://amigaworld.net/images/avatar/users/2981.jpg) |
Elite Member ![](https://amigaworld.net/images/ranks/5blocks.gif) |
Joined: 9-Jun-2004 Posts: 12866
From: Norway | | |
|
| | Status: Offline |
| | cdimauro
| ![](https://amigaworld.net/images/icons/posticon.gif) |
Re: DIY PPC gaming computer Posted on 19-Mar-2024 5:36:29
| | [ #34 ] |
| |
![](https://amigaworld.net/images/avatar/users/12021.jpg) |
Elite Member ![](https://amigaworld.net/images/ranks/5blocks.gif) |
Joined: 29-Oct-2012 Posts: 3901
From: Germany | | |
|
| @NutsAboutAmiga
Quote:
Which can give an idea why emulation can improve a lot by finally start using it on JIT compilers. ![](https://amigaworld.net/images/smilies/icon_smile.gif) Quote:
MOVBE is x64 instruction not a x68 instruction. |
It's a x86 and x64 instruction: it can run both in 32 or 64 bit mode.
Or where you referring to 68k with x68? In this case, yes: the instruction is missing from the ISA. |
| Status: Offline |
| | Hammer
![](https://amigaworld.net/images/supportertags/bronze.gif) | ![](https://amigaworld.net/images/icons/posticon.gif) |
Re: DIY PPC gaming computer Posted on 19-Mar-2024 5:52:43
| | [ #35 ] |
| |
![](https://amigaworld.net/images/avatar/blank.gif) |
Elite Member ![](https://amigaworld.net/images/ranks/5blocks.gif) |
Joined: 9-Mar-2003 Posts: 5786
From: Australia | | |
|
| @Karlos
Quote:
Karlos wrote: @Hammer
How is the emulated PPC's floating point performance on this configuration? |
Are you asking for a Quake PPC benchmark? What's the fastest Quake PPC port?
Perhaps, nBench? http://amigadev.free.fr/powerpc/nbench.html
BYTEmark* Native Mode Benchmark ver. 2 (10/95) Index-split by Andrew D. Balsa (11/97) Linux/Unix* port by Uwe F. Mayer (12/96,11/97)
TEST : Iterations/sec. : Old Index : New Index : : Pentium 90* : AMD K6/233* --------------------:------------------:-------------:------------ NUMERIC SORT : 797.57 : 20.45 : 6.72 STRING SORT : 33.432 : 14.94 : 2.31 BITFIELD : 5.0672e+08 : 86.92 : 18.16 FP EMULATION : 99.225 : 47.61 : 10.99 FOURIER : 2340.2 : 2.66 : 1.49 ASSIGNMENT : 23.453 : 89.24 : 23.15 IDEA : 4600.5 : 70.36 : 20.89 HUFFMAN : 1856 : 51.47 : 16.44 NEURAL NET : 2.7211 : 4.37 : 1.84 LU DECOMPOSITION : 91.89 : 4.76 : 3.44 ==========================ORIGINAL BYTEMARK RESULTS========================== INTEGER INDEX : 45.579 FLOATING-POINT INDEX: 3.812 Baseline (MSDOS*) : Pentium* 90, 256 KB L2-cache, Watcom* compiler 10.0 ==============================LINUX DATA BELOW=============================== CPU : L2 Cache : OS : uname: Unknown command C compiler : gcc version 4.0.2 (AmigaOS build 20051012) libc : MEMORY INDEX : 9.905 INTEGER INDEX : 12.617 FLOATING-POINT INDEX: 2.114 Baseline (LINUX) : AMD K6/233*, 512 KB L2-cache, gcc 2.7.2.3, libc-5.4.38 * Trademarks are property of their respective holder.
---- PS: AmigaOS 4.1 FE's screensaver was active after HUFFMAN.
https://youtu.be/4IpYDj6qnWc Wipeout 2097 on AmigaOS 4.1 FE, emulated PowerPC 604e/GREX PCI/Voodoo 3, WinUAE 5 with Ryzen 5 7600X.
Last edited by Hammer on 19-Mar-2024 at 06:57 AM. Last edited by Hammer on 19-Mar-2024 at 06:42 AM. Last edited by Hammer on 19-Mar-2024 at 06:40 AM. Last edited by Hammer on 19-Mar-2024 at 05:59 AM.
_________________ Amiga 1200 (rev 1D1, KS 3.2, PiStorm32/RPi CM4/Emu68) Amiga 500 (rev 6A, ECS, KS 3.2, PiStorm/RPi 4B/Emu68) Ryzen 9 7900X, DDR5-6000 64 GB RAM, GeForce RTX 4080 16 GB |
| Status: Offline |
| | Hammer
![](https://amigaworld.net/images/supportertags/bronze.gif) | ![](https://amigaworld.net/images/icons/posticon.gif) |
Re: DIY PPC gaming computer Posted on 19-Mar-2024 6:52:54
| | [ #36 ] |
| |
![](https://amigaworld.net/images/avatar/blank.gif) |
Elite Member ![](https://amigaworld.net/images/ranks/5blocks.gif) |
Joined: 9-Mar-2003 Posts: 5786
From: Australia | | |
|
| @cdimauro
Quote:
Projects like Emu68 show at which level you can arrive when you do NOT have to (fully) emulate the hardware. This is the way to go for OS-friendly applications. |
PiStorm-Emu68 has turtle options for improved WHDLoad game compatibility and it's pretty good on A500's PiStorm-RPi3A-Emu68 combo.
I'm using the latest CaffeineOS's R272x's Emu68 update.
A hybrid solution such as an emulated CPU and real hardware platform is good for some low-end/low-cost ARM Cortex 53-class CPUs.
_________________ Amiga 1200 (rev 1D1, KS 3.2, PiStorm32/RPi CM4/Emu68) Amiga 500 (rev 6A, ECS, KS 3.2, PiStorm/RPi 4B/Emu68) Ryzen 9 7900X, DDR5-6000 64 GB RAM, GeForce RTX 4080 16 GB |
| Status: Offline |
| | Karlos
| ![](https://amigaworld.net/images/icons/posticon.gif) |
Re: DIY PPC gaming computer Posted on 19-Mar-2024 9:56:10
| | [ #37 ] |
| |
![](https://amigaworld.net/images/avatar/users/1542.jpg) |
Elite Member ![](https://amigaworld.net/images/ranks/5blocks.gif) |
Joined: 24-Aug-2003 Posts: 4531
From: As-sassin-aaate! As-sassin-aaate! Ooh! We forgot the ammunition! | | |
|
| @Hammer
Not asking for a quake test, I just want a reasonable estimate of MFLOPS that can be tested against a real CSPPC. My experience of UAE for PPC emulation is that the floating point performance is much lower than actual silicon. Or at least, lower than my actual silicon. However, that's tested on older x64 hardware and UAE itself may have improved since. The issue seemed to be related to software based FPU emulation in the QEMU library. _________________ Doing stupid things for fun... |
| Status: Offline |
| |
|
|
|
[ home ][ about us ][ privacy ]
[ forums ][ classifieds ]
[ links ][ news archive ]
[ link to us ][ user account ]
|