Welcome, Guest. Please login or register.

Author Topic: ADOOM on A600 running 22-35 FPS  (Read 78801 times)

Description:

0 Members and 41 Guests are viewing this topic.

Offline OlafS3

Re: ADOOM on A600 running 22-35 FPS
« Reply #194 on: February 12, 2015, 09:39:59 PM »
Quote from: matthey;783783
The 68020 ISA is from the late '80s and what we are stuck with if the new ISA is not adopted. The 68k probably doesn't need to compete with x86_64 or ARM (they have more baggage also) but it could use some modernization. I was looking for interest in the embedded "market" where the small memory footprint is an advantage but that was before Gunnar dropped much of the ColdFire compatibility.



I have submitted changes/fixes to the 68k backend of vbcc which I expect is one of the simplest compiler backends. While I was generally successful in getting my changes to work, I was not at all sure of rare side effects that my code could have caused. It would take months of studying the code and working with it before I would feel comfortable in making changed which were not reviewed by Volker. Frank Wille is a more experienced and better programmer than me and he does not make any major changes to vbcc without submitting them to Volker. Compilers are not rocket science but they have intricate sensitive code that requires knowledge and experience to change even with sources.


i think we do not need new super-ISAs but a new platform that support the existing software base. I think (if I remember right) there are about 12 compilers in Aros Vision and not for all are source codes available. Even if it is possible to adapt one or two there would still be most unchanged. Another problem is for many programs source codes are not available so recompiling is unpossible. Developers are not attracted by asm code or ISA features but how easy can they solve their problems. That should be first priority in future,
« Last Edit: February 12, 2015, 09:42:05 PM by OlafS3 »
 

Offline wawrzon

Re: ADOOM on A600 running 22-35 FPS
« Reply #195 on: February 12, 2015, 10:02:04 PM »
i think we can trust it to take its course for now. that the discussion about the isa took place in small circle has it advantages and disadvantages. but the advantage for now is that it led to results, while even there apparently were differences. on larger forum there might have been a lot of talk that might have led to nothing. now the project is approaching the wider audience, which will be a new situation. lts see what happens.
 

Offline Karlos

  • Sockologist
  • Global Moderator
  • Hero Member
  • *****
  • Join Date: Nov 2002
  • Posts: 16879
  • Country: gb
  • Thanked: 5 times
    • Show only replies by Karlos
Re: ADOOM on A600 running 22-35 FPS
« Reply #196 on: February 12, 2015, 10:56:16 PM »
If you look at the evolution of the 680x0 while it was in development, the 68020/882 represents the peak of (non-privileged) 68K instruction complexity. The 040 and 060 focused on streamlining it so that only the most used operations were implemented in silicon.

Now, if you compile code for 020+, a good compiler avoids emitting anything needing traps on 040/060 (of course it can and does happen).

In my humble opinion then, if the FPGA implementation covers the 68040/60 operations (not necessarily every 020/882 operation) then it'll be great just as is. Any extra additions are niceties as it will take time to implement assembler/compiler/debugger tools for them. It's really up to the guys making the hardware. And fair play to them.
int p; // A
 

Offline wawrzon

Re: ADOOM on A600 running 22-35 FPS
« Reply #197 on: February 12, 2015, 11:07:07 PM »
@karlos
+1

matt has probably another view on the matter as he researched an eventual further evolution of 68k particularly, but there is concept vs implementation, theory vs immediate practice, which may be hard to get agreed upon.
 

Offline matthey

  • Hero Member
  • *****
  • Join Date: Aug 2007
  • Posts: 1294
    • Show only replies by matthey
Re: ADOOM on A600 running 22-35 FPS
« Reply #198 on: February 13, 2015, 01:04:30 AM »
Quote from: Karlos;783788
If you look at the evolution of the 680x0 while it was in development, the 68020/882 represents the peak of (non-privileged) 68K instruction complexity. The 040 and 060 focused on streamlining it so that only the most used operations were implemented in silicon.


Yes, this is another reason that the 68020+6888x is a poor ISA base target. When we talk of this target we are talking about a simplified version of it but what compilers generate may not be. Motorola went overboard with increasing the complexity of the 68020 and 6888x ISA but then they chopped too much. The removal of the FINT/FINTRZ in the 68040 was a *huge* mistake and the removal of 64 bit integer MUL/DIV from the 68060 was also a poor decision. Modern 32 bit ISAs have these instructions and more. Motorola was attracted to the simplicity of RISC and tried to turn the 68k into an old school simplified RISC processor. Most of the old school RISC processors are gone now (except MIPS and some would say SPARC) while we are left with PPC and ARMv8 which have larger and in some ways more complex instruction sets than the 68k (more operands for example).

I didn't want to bring back all the complexity and mistakes that Motorola removed. The evaluation ISA looked something like this:

http://www.heywheel.com/matthey/Amiga/68kF_PRM.pdf

It probably needs some slimming and tuning but there are some very good ideas also. Gunnar decided that more registers was the holy grail of performance and decided to sacrifice nearly everything else. It is possible to increase the number of FPU registers in an orthogonal way as demonstrated in the evaluation ISA above but not so for new integer registers. Compilers have problems with the An/Dn split but now we have 8 non-orthogonal En and an A8 register encoded in any way that could be found. The new Phoenix ISA does get new planar gfx instructions also. I would give a link to the new Phoenix ISA but I haven't seen any documentation yet. That doesn't stop it from being the "standard" as I have seen nothing indicating it is a trial or evaluation ISA.

Quote from: Karlos;783788

Now, if you compile code for 020+, a good compiler avoids emitting anything needing traps on 040/060 (of course it can and does happen).


You are correct that most compilers will generate trapped 6888x FPU instructions when compiling for the 68040 and 68060 (but most avoid trapped integer instructions). Vbcc should not generate any 6888x FPU instructions when compiling for the 68060 and linking with -lm060. If it does or you have any other problems with the direct FPU libs then let me know and I'll fix it (details here):

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

Quote from: Karlos;783788

In my humble opinion then, if the FPGA implementation covers the 68040/60 operations (not necessarily every 020/882 operation) then it'll be great just as is. Any extra additions are niceties as it will take time to implement assembler/compiler/debugger tools for them. It's really up to the guys making the hardware. And fair play to them.


Sure, it is up to the hardware guys. It is "fair play" for them to make their own standards, sell out, move on, fail and quit also. Business is business and hope is fleeting.
 

Offline ElPolloDiabl

  • Hero Member
  • *****
  • Join Date: May 2009
  • Posts: 1702
    • Show only replies by ElPolloDiabl
Re: ADOOM on A600 running 22-35 FPS
« Reply #199 on: February 13, 2015, 02:49:11 AM »
That might be fine for a CPU, but FPGAs are designed differently and may not get an advantage from CPU improvements.
Go Go Gadget Signature!
 

Offline biggunTopic starter

  • Sr. Member
  • ****
  • Join Date: Apr 2006
  • Posts: 397
    • Show only replies by biggun
    • http://www.greyhound-data.com/gunnar/
Re: ADOOM on A600 running 22-35 FPS
« Reply #200 on: February 13, 2015, 07:36:21 AM »
To really interested I'm happy to explain the advantages
and reasons behind certains ISA differences.
Also in the context of what is possible or of advantage in an FPGA versus ASIC design.
And also in the context of what considerations or differences todays cache or memory interfaces have.

I think there here might not be the ideal place for explaining this.

If someone is _really_ interested in learning about this, brainstomring or discussing this topic,
then I invite you to go to the forum on http://www.apollo-core.com. I'm happy to give explanantion, data, and real live measurements for you there.
« Last Edit: February 13, 2015, 07:38:48 AM by biggun »
 

Offline NovaCoder

Re: ADOOM on A600 running 22-35 FPS
« Reply #201 on: February 13, 2015, 08:56:22 AM »
Let's not get too caught up in the specifics, it's very impressive stuff :)

The future in Classic hardware is FPGA!
« Last Edit: February 13, 2015, 09:35:03 AM by NovaCoder »
Life begins at 100 MIPS!


Nice Ports on AmiNet!
 

Offline OlafS3

Re: ADOOM on A600 running 22-35 FPS
« Reply #202 on: February 13, 2015, 09:37:56 AM »
Quote from: matthey;783755
Yes, this is true. Phil "meynaf" also did not like the direction of the new ISA but challenged for it to be created as a test. It is possible to learn from doing things the hard way. The few people that write code for the new ISA would be disappointed if the ISA changed significantly. The new ISA is unlikely to be (even partially) adopted in the TG68 or other 68k fpga cores or eventually UAE (I believe Toni's position would change if multiple fpga hardware was using the same ISA) . It is less likely that a non-standard complex 68k ISA for a single fpga CPU would gain wide spread support in compilers. A core which is more compatible with both 68k and ColdFire is more likely to be interesting to embedded developers. Enough money could probably gain a custom ISA and then we could have a thousand variations of an ISA like ARM but this is what I hoped to avoid. People thought I was too early trying to push for the creation of a standarized ISA and trying to get input from others. I tried to create a standards committee/group by bringing in people to our discussions including inviting ThoR, Frank Wille and Dave Alsup (of Innovasic). I would have loved to bring in people like Tony Wilen, Jason McMullan, Volker Barthelman, Kalms and maybe even a Karlos who have understanding of an ISA from different view points. I guess people are too busy or believe the Amiga is too dead to care anymore. At least Gunnar is doing something.



ISA decisions make a big difference in how easily and quickly the ISA changes can be adopted. ColdFire enhancements are the easiest to adopt because they already exist and only need to be switched on in a compiler backend and in peephole optimizing assemblers. I bet Frank Wille could have ColdFire support in vasm working in a few days and already making a noticable difference in shrinking program sizes. ColdFire support in the backend could take a few weeks to add and test as it is a more delicate process to add. Taking advantage of the current ISA with more registers in the backend would likely take many months and bugs could turn up for years. Few developers are knowledgable and familiar enough with a compiler to add this kind of support. Are they going to dedicate this kind of time for a non-standard in an fpga CPU sold in the hundreds or low thousands at the most when they could be improving a compiler target with tens of thousands of hard processors? I don't think so. Phoenix is not going to immediately set the world on fire. IMO, it's better to have an easy standard to adopt with a few benefits and incremental improvements than a core specific non-standard with theoretical high performance that will never be utilized completely in compilers. Splits seem to be the Amiga way though. I'm tired of arguing and trying to create something better. Gunnar did make the right decision to add better 68020 compatibility (all addressing modes without trapping) and we do have this as a base which is the most important thing. We are moving forward past the 68060 in performance with this too. I should be thankful as we need new 68k hardware to revitalize the Amiga. I would have liked to create something like a cross between an Amiga Raspberry Pi, a Natami and a CD32+ but there is not enough cooperation, at least not yet.

You have not yet answered what you see as "market". And perhaps you could be wrong too, there can be more than one true. If I understood you right you preferred different choices because of it would be better for ASIC implementations whereas Gunnars design is better for FPGA (I hope I recalled it correctly) and you wanted to sell the core outside to other companies. To say it clear if today somebody needs power he uses X64 and if somebody wants something for mobile/embedded he will take ARM. There is not much room for other ISAs so to make a design that is not perfect running on FPGA (=fastest possible) just because it might perhaps be used outside is simply waste of resources. We need BEST solution for the Amiga platform. There are years of development in the project and I trust Gunnar that they made wise decisions when they worked at it.

BTW as I said most developers do not care about ISA details or certain instructions, that is a much too technical discussions not related to reality. How many 68k hardcore coders are still there? I know Novacoder and then I must think. Propably one hand is enough to count them. Even hobby developers are using compilers, that is even more true for commercial developers. Most people do not hack on the hardware anymore or program in asm. I had contacted former amiga developers because I thought I might create some interest again. Unfortunately that was not the case. So we have to build upon what we have, existing software and existing compilers. Anything else is unrealistic.
 

Offline matthey

  • Hero Member
  • *****
  • Join Date: Aug 2007
  • Posts: 1294
    • Show only replies by matthey
Re: ADOOM on A600 running 22-35 FPS
« Reply #203 on: February 13, 2015, 05:52:43 PM »
Quote from: ElPolloDiabl;783802
That might be fine for a CPU, but FPGAs are designed differently and may not get an advantage from CPU improvements.

Hard processors are designed in FPGAs first (some of the Amiga custom chips were designed in FPGA too). There are some differences but functionally they are very similar. Some ISA improvements only make sense in a hard CPU or ASIC because of limitations of muxes and clock speeds in an FPGA. Most simple changes which reduce the number of instructions, reduce the code size, add new instructions with new functionality, add new addressing modes, add registers, etc. will be of benefit to the CPU. Adding complexity (usually too many muxes) in some critical areas of the fpga CPU would slow down the core clock speed.

Quote from: OlafS3;783813
You have not yet answered what you see as "market". And perhaps you could be wrong too, there can be more than one true. If I understood you right you preferred different choices because of it would be better for ASIC implementations whereas Gunnars design is better for FPGA (I hope I recalled it correctly) and you wanted to sell the core outside to other companies. To say it clear if today somebody needs power he uses X64 and if somebody wants something for mobile/embedded he will take ARM. There is not much room for other ISAs so to make a design that is not perfect running on FPGA (=fastest possible) just because it might perhaps be used outside is simply waste of resources. We need BEST solution for the Amiga platform. There are years of development in the project and I trust Gunnar that they made wise decisions when they worked at it.

I see a potential market for the Amiga but it needs to be built up and probably requires investment to get it back on its feet (Trevor@A-EON understands but misses that the 68k has more potential for the masses than PPC). Piggy backing on and cooperating with embedded projects and businesses could reduce the investment needed (economies of scale are especially killer for low production hardware). Yes, I did contact some embedded businesses. Yes, it is tough to compete against mature ARM processors and ARM is the best solution for super low power consumption embedded targets. An enhanced 68k has clear advantages over ARM with Thumb 2 for more powerful embedded (and computing) uses which includes:

1) easier to use
2) lower memory requirements (better code density)
3) more powerful addressing modes
4) stronger in memory without OoO
5) stronger single core performance without OoO

Adding OoO to ARM substantially increases power consumption perhaps to the level that an in-order superscalar CPU would use. Phoenix (and even the 68060 which is also in-order superscalar) outperforms practically all non-OoO ARM processors in integer performance clock for clock. This should scale to higher clock speeds (most code is executed from the cache where the 68k can fit a little more code). Gunnar can't see an ASIC in the future so he tries to adapt Phoenix (ISA and internal fpga optimizations) for maximum speed at all cost. He adds registers which does increase theoretical performance but requires complex changes to compilers that are unlikely to be implemented. Problems with his ISA changes:

1) haphazard, non-orthogal register additions make the 68k less easy to use and less consistent
2) unlikely to be implemented in a compiler backend
3) loses the advantages of simpler enhancements that could be implemented quickly in compilers
4) sacrifice of ColdFire compatibility limits oppurtunities for embedded use
5) less likely to be made into an ASIC
6) unlikely to be adopted as an Amiga or 68k standard in other cores and emulators
7) radical changes are less likely to be accepted by the conservative 68k loving community

Quote from: OlafS3;783813
BTW as I said most developers do not care about ISA details or certain instructions, that is a much too technical discussions not related to reality. How many 68k hardcore coders are still there? I know Novacoder and then I must think. Propably one hand is enough to count them. Even hobby developers are using compilers, that is even more true for commercial developers. Most people do not hack on the hardware anymore or program in asm. I had contacted former amiga developers because I thought I might create some interest again. Unfortunately that was not the case. So we have to build upon what we have, existing software and existing compilers. Anything else is unrealistic.

High level programmers don't deal with the abstracted ISA but it is important to how optimized and how much code is produced by the compiler. The key is to making the compiler programmer's life easier not more difficult but bone headed hardware guys are more worried about theoretical performance instead and keep repeating the same mistakes. The ISA shouldn't even be set in stone until after the compiler programmers (and assembler programmers) have attempted using what is new. You are a programmer so maybe you need to try some low level programming to appreciate the ISA. The source for vbcc is here:

http://www.ibaug.de/vbcc/vbcc.tar.gz

The 68k backend is in machines/m68k. Documentation for writing a backend is in the vbcc manual:

http://www.ibaug.de/vbcc/doc/vbcc.pdf

This is probably the simplest and easiest C backend you will find. Once you have some experience making use of Gunnar's "extra registers", you can help with the more challenging GCC and LLVM backends. I'm sure you will have a different opinion about the ISA after a few months and probably before you make any significant changes. Now if we could just get car engineers to be the mechanics for the cars they design for a few months then we would have much better designed cars which are easier to work on too ;).
« Last Edit: February 13, 2015, 05:57:31 PM by matthey »
 

Offline danbeaver

Re: ADOOM on A600 running 22-35 FPS
« Reply #204 on: February 13, 2015, 08:06:54 PM »
Hmm, I guess "Cool Demo" no longer applies to this thread...
 

Offline Oldsmobile_Mike

Re: ADOOM on A600 running 22-35 FPS
« Reply #205 on: February 13, 2015, 08:52:27 PM »
Quote from: danbeaver;783870
Hmm, I guess "Cool Demo" no longer applies to this thread...

At least it's not just full of trolling anymore. ;)  This is some pretty interesting stuff, most of it over my head though!  :lol:
Amiga 500: 2MB Chip|16MB Fast|30MHz 68030+68882|3.9|Indivision ECS|GVP A500HD+|Mechware card reader + 8GB CF|Cocolino|SCSI DVD-RAM
Amiga 2000: 2MB Chip|136MB Fast|50MHz 68060|3.9|Indivision ECS + GVP Spectrum|Mechware card reader + 8GB CF|AD516|X-Surf 100|RapidRoad|Cocolino|SCSI CD-RW
 Amiga videos and other misc. stuff at https://www.youtube.com/CompTechMike/videos
 

Offline danbeaver

Re: ADOOM on A600 running 22-35 FPS
« Reply #206 on: February 13, 2015, 09:03:19 PM »
Since we are Way Off Topic:
What we need is a list of topics that brings all the trolls out, like "sucker bait" so we can get our Wack a Mole mallet fix in one fell swoop.
 

Offline wawrzon

Re: ADOOM on A600 running 22-35 FPS
« Reply #207 on: February 13, 2015, 09:15:13 PM »
@danbeaver
"we" are not ot, its currently you who tries to derail the thread.
 

Offline TheDaddy

  • Hero Member
  • *****
  • Join Date: Feb 2005
  • Posts: 1154
    • Show only replies by TheDaddy
    • http://www.loriano.pwp.blueyonder.co.uk
Re: ADOOM on A600 running 22-35 FPS
« Reply #208 on: February 13, 2015, 09:17:42 PM »
@biggun

Bloody brilliant! Keep going! ;)
 

Offline Hattig

  • Hero Member
  • *****
  • Join Date: Feb 2002
  • Posts: 901
    • Show only replies by Hattig
Re: ADOOM on A600 running 22-35 FPS
« Reply #209 from previous page: February 13, 2015, 11:03:39 PM »
Quote from: kolla;783552
Then CD32 is also not a 32bit console, and no m68k Amiga ever, for that matter.


Reading this thread, I remember why so many people have left Amiga.org, and also why many people give up on their personal Amiga hardware projects.

The A600 is a 32-bit computer (native register size) with 24-bit addressing (16MB), and a 16-bit ALU and data bus.

As this argument is all about addressing gigabytes of memory, then we have to take the addressing aspect. 24-bit. That's not 32-bit. End of story. You need to replace the main CPU in the A600 with one that has 32-bit addressing to get that capability.

And yes, this goes for the A1200 and CD32 as well, because they only have a 24-bit address bus on their CPUs. However the data bus is 32-bit, and the ALU is 32-bit, as well as the native 32-bit registers, so we can call the CD32 a 32-bit system, especially since it came out at a time when games consoles came with very little memory (the 2MB the CD32 was massive). Yet you could upgrade the CPU to get a full 32-bit address bus.

The A3000 or A4000 sed '030 and '040 CPUs with a 32-bit address bus from the beginning.

Anyway, the Vampire 600 is an amazing achievement (even with the old core, never mind the new core), and I think it is rude and unrealistic for people to expect it to have 2GB, and that because it doesn't it is somehow rubbish or sub-par.