Performance and Benchmark Results!
|
How Many MIPS Has the MC68000 Or the MC68060 CPU? | |
---|
|
---|
| | Gunnar von Boehn (Apollo Team Member) Posts 6258 24 Mar 2024 09:54
| I get ask very often how many MIPS has this CPU or that CPU. This is difficult question to answer before there are different definitions and understandings of the word MIPS. One understanding can be Million of Instructions per second. Lets say we talk about this definition. How many MIPS does the Motorola 68000 have? The 68000 in the AMIGA runs at 7 MHz. But the 68000 supports many different instructions with the fastest needing 4 clock cycle, and the slowest needing up to 150 clock cycle. So the answer can range from 1.75 Mips (7000000/4) to 0.05 Mips (7000000/150) This depends on which instruction you look at. With newer CPUs the CLOCKs needed for an instruction goes down. The 68020 CPU has a minimum of 2 clocks for fastest instruction. But this is for a case running from Icache, Bus-cycles take longer, so loading instructions from memory will take longer. The 68030 CPU has a minimum of 2 clocks for fastest instruction The 68040 CPU has a minimum of 1 clock for fastest instruction The 68060 CPU has a minimum of 1/2 clocks for fastest instruction ( it can do up to 2 instruction in 1 clock) With Divide taking 38 cycle. The 68080 CPU has a minimum of 1/4 clocks for fastest instruction ( it can do up to 4 instruction in 1 clock) So if you look at the 68060 CPU. Running at 50Mhz then the Mips as simple counted can vary between 100 Mips to 1.3 Mips for a slow instruction (5000000/38) And how about the 68080? The 68080 has fast 1/4 cycle and slow 18 cycle time. Running at 100Mhz then the Mips as simple counted can vary between 400 Mips to 55.5 Mips for a slow instruction (10000000/18) As you can see talking about MIPS in the sense of Million instructions per second is kind of pointless - as the range between fastest and slowest instruction is huge. Because of this often people refer to MIPS for instructions doing a certain Mix of instructions like Sysinfo. Or for instruction needed to solve a defined problem and comparing this to a defined VAX machine (VAX Mips).
| |
| | Darren Eveland
Posts 103 24 Mar 2024 15:03
| Interesting thanks for this. I guess as an end user I can compare the MIPS of different processors using the same software to get results that are comparable. Like using SysInfo for example on a range of different processors to get their relative performance. Perhaps using a range of different benchmark programs to compare them all would be best, and also "stop-watch" testing with real applications. I have used povray to render the fish picture to look at the speed of my various Amigas.
| |
| | Gunnar von Boehn (Apollo Team Member) Posts 6258 24 Mar 2024 16:03
| Darren Eveland wrote:
| Interesting thanks for this.
|
my pleasure
Darren Eveland wrote:
| I guess as an end user I can compare the MIPS of different processors using the same software to get results that are comparable. Like using SysInfo for example on a range of different processors to get their relative performance. |
Yes SYSINFO is popular tool for "measure" performance. Measure performance in very tricky. Lets look at the 68060 CPU. Here is a "fingerprint" of various instructions of the 68060. A higher the BAR as faster CPU can execute this instruction type. As you see some instructions run fast, in other areas the CPU is slow, or maybe even has a weakness. The "fingerprint" is from the test Minibench. The test are in groups. 1) Arithmetic /AND/ADD/SUB/MUL/DIV/SHIFT 2) Mixed workloads of Data loading and fastarithmetic 3) Memory Read /Write 4) Subroutine Calling 5) If/then/Else decision code 6) Loop performance for workloops All of these of groups are important aspect of a CPU.. SYSINFO for example not test these 6 groups SYSINFO test does cover only -- 1) Arithmetic /AND/ADD/SUB/MUL/DIV/SHIFT 4) Subroutine Calling -- And not much more. The parts that SYSINFO test are also important but its misses other very important aspects.
| |
| | Gunnar von Boehn (Apollo Team Member) Posts 6258 24 Mar 2024 17:58
| I think the main problem when comparing CPU is, that "humans/people" ideally like to have a single/simple number for comparison. But the reality is that a CPU can do hundreds of different instructions - and every program uses a totally different mix of these instructions. What do you think?
| |
| | A1200 Coder
Posts 74 25 Mar 2024 18:48
| To get a more accurate MIPS reading, you could calculate the weighted average of different workloads (e.g. memory, subroutine, arithmetic), and these weights and workloads should be obtained from real programs, perhaps typical loop code.
| |
| | Gunnar von Boehn (Apollo Team Member) Posts 6258 26 Mar 2024 06:45
| A1200 coder wrote:
| To get a more accurate MIPS reading, you could calculate the weighted average of different workloads (e.g. memory, subroutine, arithmetic), and these weights and workloads should be obtained from real programs, perhaps typical loop code.
|
Yes this would give a more accurate number. Of course there are thousands of different programs, different games and different demos ... and as each of them probably has a slightly different mixture of instructions - there is never the "optimal" or "correct" mixture and weight of instructions that you can use. Also for each user different aspect might be more important. One user might want to play a chess program, another user might most want to watch videos, the next user might be play a certain shooter game. Each of these will use a different instructions mix. So giving an accurate result is very tricky. Minibench is pretty close of doing this. Minibench measure all the different aspects, of arithmetic, workloads, memory operations, cached operations, subroutine, decision /if/then/else and loop code. Minibench gives out each test results A sum per test group, e.g. CPU, memory, FPU performance and a total combined score. Moral of the story: Comparing CPU is tricky. Lets look at some example: instructions per cycle 68040 68060 68080 addq.l #1,Dn 1 2 2 add.w #11,Dn 1 1 2 add.l #11,Dn 1 0.6 2
The performance of the 040 over a number of instruction is relative consistent. The performance of the 060 is good for some instructions, but is lower for some others. There are instrucitons where the 040 will outperform the 060 CPU. The performance of the 080 CPU is again very consistent. Its always as fast or faster than the 040 and 060.
| |
| | Gunnar von Boehn (Apollo Team Member) Posts 6258 26 Mar 2024 07:04
| Lets calculate this example: instructions per cycle 68030 68040 68060 68080 addq.l #1,Dn 2 1 2 2 add.w #11,Dn 4 1 1 2 add.l #11,Dn 6 1 0.6 2
A 50 MHz 68030 CPU will using the above instruction "mix" reach a Peak performance of 25 Mips A minimum performance of 8 Mips And an average performance of 15 Mips A 40 MHz 68040 CPU will using the above instruction "mix" reach a Peak performance of 40 Mips A minimum performance of 40 Mips And an average performance of 40 Mips A 50 MHz 68060 CPU will using the above instruction "mix" reach a Peak performance of 100 Mips A minimum performance of 30 Mips And an average performance of 60 Mips A 92 MHz 68080 CPU will using the above instruction "mix" reach a Peak performance of 184 Mips A minimum performance of 184 Mips And an average performance of 184 MipsMaybe you wonder why the performance of the 68080 a lot more consistent than the performance of the 68060? The 68060 is a very good CPU. Especially if you consider under what circumstances the 68060 was developed. As the time of the 060 - Motorola had already decided to "stop" producing 68K in the future. The development of the 68060 was done under time and money limitations with the knowledge that it will be no future 68K development anymore. You can understand that the 060 did need to do some compromises during the development. The inconsistent performance of the 060 was known to the 060 design team - and they wanted to fix and improve this - but their upgrade plan was not approved for budget and schedule reasons. The Apollo 68080 CPU is internally designed as much improved 68060 and fixes all of the 68060 weaknesses.
| |
| | A1200 Coder
Posts 74 26 Mar 2024 22:38
| Well if a single figure, like MIPS is not accurate enough, then you need to indeed show the results of each category of workload separately. Can you tell us how well 68080 compares to Intel CPUs, like Pentium 2-4? Let's not compare AMMX stuff here, only CPU and FPU. And even more recent Intel Core Architectures? I know that even 68060 was better at integer performance than Pentium 1, but the FPU wasn't as good, and Pentium 2 was the same CPU as Pentium Pro with larger cache.
| |
| | Gunnar von Boehn (Apollo Team Member) Posts 6258 27 Mar 2024 07:34
| A1200 coder wrote:
| Can you tell us how well 68080 compares to Intel CPUs, like Pentium 2-4? Let's not compare AMMX stuff here, only CPU and FPU. And even more recent Intel Core Architectures? I know that even 68060 was better at integer performance than Pentium 1, but the FPU wasn't as good, and Pentium 2 was the same CPU as Pentium Pro with larger cache.
|
OK, I will try to make a comparison. Both x86 and 68K instruction set are very similar. Both have CISC instructions which can work directly on memory. This is a very good feature. All program in the end are in memory, all game data is in memory, this means a program does all the time need to work with memory. Working with memory is one of the most important task every program does. A CPU which can work directly with memory makes this easier and faster... Both the 68K and the x86 can do this! Some chips like ARM or PowerPC can NOT do this. They need to use several instruction each time they operate with memory and this is a big disadvantage for them. If you compare 68K and x86 then they have a lot similarities in the instruction set ... but generally one can say that the 68K instructionset is a little nicer and better. And the 68K has more internal registers than the Pentium which is an additional advantage. Lets make a small compare table between Apollo 68080 and Pentium 4 2 max instructions per cycle 48 8 CPU register to use ++ - nicer instructions ++ - 3 Operand instruction support + + 2 Operand instruction support ++ - support for free misaligne data operations ++ - cache coherent to DMA units ++ - 64bit Data operations ++ - automatic memory streaming support The Apollo 68080 CPU has many good features which make coding nice and give it a big performance over the Pentium.
| |
| | Gunnar von Boehn (Apollo Team Member) Posts 6258 27 Mar 2024 14:21
| A1200 coder wrote:
| I know that even 68060 was better at integer performance than Pentium 1, but the FPU wasn't as good,
|
Many people say this but I'm not so sure this is true. I would say the 68000 FPU is generally more flexible and a lot better to code. The 68K has 8 FPU register it can use as destination. It can use the 8 FPU register, the 8 Data register and memory and immediate as source. This is very flexible and nice to program. The Intel FPU has less coding options, which means it often needs to do more complicated and needs more instructions for doing the same. Therefore the 68K FPU is better ... If you look at the cycles then some instructions are a little faster on intel, other instructions are a cycle or two faster on 060. In general I would say they are on the same ballpark in performance. Comparing with the Apollo 68080 FPU .. its very clear that the 080 FPU is by far the best. It can use 32 FPU register as destination. Can use 40 Register as source, plus immediates, plus memory The 68080 FPU can also reach a lot higher performance.some example of peak FLOPS 68060@50 Pentium@90 68080@90
68060 Pentium 68080 FNEG 50 90 90 FADD 17 90 90 FMUL 17 90 90 FDIV 1.5 3 90 FSQRT 0.7 1 90
The Pentium looks on paper better than in real world. In real world you often need an extra instruction to compensate its design weakness. If you factor this in then its more like:
68060 Pentium 68080 FNEG 50 45 90 FADD 17 45 90 FMUL 17 45 90 FDIV 1.5 3 90 FSQRT 0.7 1 90
| |
|
|
|