19 December 2018, 10:12 | #1001 | |
Registered User
Join Date: Dec 2013
Location: Lake Havasu City, AZ
Posts: 741
|
Quote:
I happen to know the x86 and 68K extremely well, having written a full 68040 emulator for the x86, and a x86 emulator for the 68K - both of which were in written in assembly for their native CPUs. I also wrote iFUSION for the PPC. You can certainly kill a x86 program by having an INT function change a segment register. This is how some of the first virus programs worked. Calling a segment register a "MMU" is like calling an Atari ST an Amiga. Litwr - It seems that you are a proponent of ARM and DOS, and are a bit blind to the facts that people (like Meynaf) are stating here. This is the wrong crowd to be arguing with on this particular subject - there are those here that have extensive backgrounds in CPU design and implementation. My expertise is in microcode level emulation of CPUs, with a history of working on CPU core projects for Motorola - besides all of the various software based emulations I have done for different computer systems. Maybe you are getting ARM and PPC confused, because that is one CPU where you can do bit manipulations (like invoke a shift) as an extended instruction operand. My 2 cents... Last edited by JimDrew; 19 December 2018 at 23:31. Reason: Lots of typos... smart device... sheesh! |
|
23 January 2021, 18:46 | #1002 |
Registered User
Join Date: Mar 2016
Location: Ozherele
Posts: 229
|
68k details (round #2)
Two years ago we had a fantastic thread which contains a magic number of posts - 1001.
Sorry I was very busy almost all this time and could not afford to continue this discussion. However I have gathered information for its continuation. I have made a lot of corrections in my blog entry about the 68k - I am sure that even people with good knowledge about the 68k can find several new pieces of information there. I don't reply to some statements which seem wrong for me because I am not sure that the people who made them are here now. However if they appeared at EAB I would write responses. I would be very glad if meynaf could attend this new round again. His stubborn passionate position has impressed me very much. I can only dare to point two topics now: 1) the role of MMU; 2) the code density and performance. It is well known that the main function of MMU is the memory relocation. The memory protection is not necessary if we have correct software, it is rather a luxury which become cheap. The MMU relocation ability allows to make the fork()-call easily. The 8086 has albeit very poor such relocation functionality, but the 68000 doesn't have any of it. BTW MMUs in the Commodore 128 or Apple III have only functionality for the relocation. The MMU can also provide virtual memory support but it is the third its functionality which was out of our discussion. I have just finished my project which I use as a source of experience about the Amiga and 68k, and as a source of data for performance and code density comparisons. It is on aminet, youtube and gifs for it, and some statistics. The results show that for extensive work with tables and bits the 68000 is only slightly faster than the 8086 and for this type of processing the 68020 is much slower than the 80286. The code density of the 68000 is slightly worse than for the 8086. My conclusion is the x86 has slightly better code density in real mode and slightly worse in protected mode than the 68k. I am just the truth seeker. I hope my materials help us to understand the 68k better. Thank you. |
23 January 2021, 18:59 | #1003 | |||
Registered User
Join Date: Jul 2015
Location: The Netherlands
Posts: 3,423
|
Quote:
Quote:
Quote:
And I want to make sure everyone in this thread understands that before it even starts: last time you were very, very clearly only interested in proving that the 8086 was better than the 68000 (as well as the 80286 being better than the 68020, etc). Anything that proved the opposite you either ignored or claimed to be false/irrelevant without a shred of evidence supporting you. Last edited by roondar; 23 January 2021 at 22:13. Reason: Spelling |
|||
23 January 2021, 19:59 | #1004 | ||
Registered User
Join Date: Dec 2014
Location: germany
Posts: 439
|
Quote:
BTW, it's rather trivial on the 68000 to write relocatable code if you limit yourself to 32k per segment (similar to the 8086) and make all memory accesses relative to pc or an address register. AFAIK on the classic MacOS programs were completely relocatable using a similar technique (a5 being the segment base register). Oh, and then code is perfectly relocatable to any address, not just multiples of 64k. Quote:
Honestly, I have my doubts. Last edited by chb; 23 January 2021 at 20:05. |
||
23 January 2021, 20:53 | #1005 | |||
son of 68k
Join Date: Nov 2007
Location: Lyon / France
Age: 51
Posts: 5,335
|
Why would I ? You will not change your mind if i tell you that you're wrong, will you ?
I don't think i was the stubborn one there. Neither passionnate, actually. So unless you're fancy a multi-cpu code contest, nothing of interest will happen. Quote:
Quote:
For very small programs, yes, 68000 is slightly worse (sometimes). But the bigger the program becomes, the worse the x86's code density is, and it can easily reach 1.5 times the code size of similar 68k program. To me it looks more like bashing. Quote:
I am also afraid that the goal of your material isn't really to understand... The situation is quite simple. If you say that the x86 has better implementation than 68k, then it might well be true. But if you're saying it has better instruction set, then sorry but this is just plain wrong. |
|||
23 January 2021, 21:06 | #1006 | ||
Registered User
Join Date: Jan 2019
Location: Germany
Posts: 3,247
|
Quote:
Quote:
On ix-type operating sytems, yes. On the amiga, we don't have fork(), and on windows, we don't have fork(). Multi-threading works quite differently. |
||
24 January 2021, 00:57 | #1007 |
Registered User
Join Date: Mar 2012
Location: Norfolk, UK
Posts: 1,154
|
It would be interesting to port the xlife program to an abstract hardware platform which offers just a UART to receive the pattern, a framebuffer to display it and a timer to time it - removing all other system-specific details from the equation.
It's then easy to compile the codebase as a virtual ROM image for various CPUs and compare the resulting sizes, without them being skewed by differing platform-specific system code. (I did something similar in the past - though this, too, is flawed: I only tested with one codebase, and I'm testing the compiler's code generation as much as the actual ISA. Doing science right is hard! http://retroramblings.net/?p=1414 ) To make a meaningful speed comparison it's necessary to time the computation in isolation, to avoid the results once again being skewed by the platform-specific display code - but even then you have to understand that you're testing the CPU and memory bus of a particular computer, and not the CPU itself. |
25 January 2021, 15:25 | #1008 | ||||||||||||||||||
Registered User
Join Date: Mar 2016
Location: Ozherele
Posts: 229
|
Quote:
Quote:
Quote:
Quote:
Quote:
I hope to dispel them. Quote:
Quote:
Quote:
Quote:
It is sad to hear this from you. We have had some contests... Quote:
Quote:
Now it is time for my reply to your 2-year old statements. Quote:
Quote:
Quote:
Let's execute the STMDB R1!,{R2,R3,R4} instruction. Let's assume that R1 has value 60. So at first R1 becomes equal to 56. Then R2 will be placed at location 56, then R1 will become equal to 52, then R3 will be placed at location 52, then R1 will become equal to 48, and finally R4 will be placed at location 48. This instruction is done. Let's check LDMIB R1!,{R2,R3,R4}. At first R1 becomes equal to 52. Then R4 will take the value from location 52 (here we lies the value of R3), then R1 will become equal to 56, then R3 will take the value from location 56 (here we lies the value of R2), then R1 will become equal to 60 and finally R2 will get value from location 60. So we have an obvious registers shift: R3 gets value of R2 and R4 gets value of R3. If you want the perfect cyclic shift just add one more instruction: STR R4,[R1] STMDB R1!,{R2,R3,R4} LDMIB R1!,{R2,R3,R4} Though we can make such a trick with the 68k too. It is MOVE.L D2,-(SP) MOVEM.L D2/D3/D4,-(SP) ADDA.L #4,SP MOVE.L (SP)+,D2/D3/D4 So my example doesn't show something very interesting and therefore I was rather wrong too. However it is clear that the ARM has more flexible instructions than MOVEM. I couldn't persuaded you that the 68040 was slightly slower than the 80486. Let's analyze data. Check http://www.lowendmac.com/benchmarks/ - it gives us the 68040:68030 performance ratio is close to 2.1:1. It is well known that the 80486:80386 performance ratio is close to 2-2.5:1. The 80386 is slightly faster than the 68030 because of the faster memory access cycle, instant EA calculation, faster division and multiplication. So we have the only conclusion... BTW the PowerPC 601 was at least 1.4 times faster than the 68040 at the same freq (2.9 for math co-pro) according to lowendmac benchmarks. You also doubted that the ARM was slightly faster than the 80486. Let's check this - http://www.cpushack.com/CPU/cpu4.html#Sec4Part9 I can also add that the ARM could run DOOM like the 80486 could. Quote:
Quote:
Quote:
Quote:
Thanks for the link! It is interesting that the result for the 68k is exactly between the x86 and x86-64. There is a screen blank mode for this case. It is pure 100% CPU calculations, no anything platform specific - the ER values calculated only based on results got from this mode. |
||||||||||||||||||
25 January 2021, 15:55 | #1009 | ||||
Registered User
Join Date: Jul 2015
Location: The Netherlands
Posts: 3,423
|
Quote:
A less cynical poster than me might just say that you were rather expertly trolling some of us (myself included). Quote:
Quote:
https://www.datasheetarchive.com/pdf...M&term=MC68451 Sadly, Google doesn't appear to be able to pinpoint the exact year in which the 68451 was released. That would've been useful information in this regards, but sadly I can't find it. Quote:
|
||||
25 January 2021, 16:46 | #1010 | |
Registered User
Join Date: Jun 2016
Location: europe
Posts: 1,043
|
Quote:
If you want to solve that problem with a shovel: Code:
MOVE.L D2,-(SP) MOVEM.L D3/D4,-(SP) MOVEM.L (SP)+,D2/D3/D4 Code:
exg d2,d3 exg d3,d4 |
|
25 January 2021, 17:06 | #1011 | ||||||||||||||||||
son of 68k
Join Date: Nov 2007
Location: Lyon / France
Age: 51
Posts: 5,335
|
Quote:
IIRC last time you said you didn't have enough time to write the code. Quote:
Quote:
Quote:
That's very possible. But we need something big enough for this. Quote:
Quote:
Quote:
What could i say. You wrote so many things in the past that are just wrong. And it seems your blog didn't change much since. Quote:
Quote:
And also remember that 80286 is a buggy cpu - once you enter the protected mode it's impossible to leave it. I don't even remember where it was written... Quote:
Quote:
Anyway, the 68k has been used in just about every possible application that exists. Home computers, game consoles, embedded, big machines, even aircraft and missiles. Quote:
Quote:
Quote:
In your example, you get the following instead in memory : 48 R2 52 R3 56 R4 (or something like that, they're written in this order because otherwise pushing/popping would be inconsistent) Quote:
First, the above could have been : Code:
MOVE.L D2,-(SP) MOVEM.L D2/D3/D4,-(SP) MOVEM.L (SP)+,D1/D2/D3/D4 EDIT: a/b was faster But if all you want is to have D4=old D3, D3=old D2, D2=old D4 then it's pretty easy with only 2 EXG instructions. Now try this on ARM : movem.w (a0,d1.w*4),d1-d4. I can't even imagine how many instructions that would take. Quote:
Actually, 68030 is much faster than 80386 even if some timings suggest otherwise. Quote:
68040 has IPC of 1. PPC needs 4-5 instructions when 68040 needs 1. It can not be faster clock-by-clock. Simply impossible. Quote:
But perhaps the 486 is worse than i thought, it's very possible Even a 68030 can run DOOM. |
||||||||||||||||||
25 January 2021, 20:15 | #1012 | |
Registered User
Join Date: Jan 2019
Location: Germany
Posts: 3,247
|
Quote:
The VideoEasel program (on Aminet) is my "interpretation" of this book. |
|
25 January 2021, 20:30 | #1013 | |||
Registered User
Join Date: Jan 2019
Location: Germany
Posts: 3,247
|
Quote:
However, the instruction set of the 6502 is rather prmitive, and it is rather ill-suited for higher programming languages. Its stack is too small, and its rather clumpsy if recursion is required - there are no usable primitives for stack handling and argument passing. Quote:
Quote:
Even a 6502 can run DOOM, but in which speed? (-; |
|||
25 January 2021, 20:40 | #1014 | ||
Registered User
Join Date: Jan 2019
Location: Germany
Posts: 3,247
|
Quote:
This was fixed with the 68010, which was the first device the 68451 would work with (and the last one, too). Admittedly, there were a couple of very "creative" ideas to work around the 68000 inabilities, including a system with two 68Ks on board, one running a cycle ahead of the other such that it could stop the second (main) 68K before it receives an access error, and the first would then re-load the MMU. Very kludgy, of course (and expensive). Quote:
Better as in "engineering design" - well, I would disagree. |
||
25 January 2021, 21:08 | #1015 | ||
Registered User
Join Date: Jul 2015
Location: The Netherlands
Posts: 3,423
|
Quote:
Quote:
Last edited by roondar; 25 January 2021 at 22:48. |
||
25 January 2021, 21:08 | #1016 | |
Registered User
Join Date: Jun 2016
Location: europe
Posts: 1,043
|
Quote:
And made the most catastrophic mistake in digital history thus far, creating monsters out of m$ (being too obsesed with their big iron to give them that sweet deal; worked pretty good for them buying pc-dos for 50k bucks, renaming a few things and selling to IBM) and intel in the process. Last edited by a/b; 25 January 2021 at 21:23. Reason: 8086 -> 8088 or whatever |
|
25 January 2021, 21:15 | #1017 | |
Registered User
Join Date: Jun 2016
Location: europe
Posts: 1,043
|
Quote:
Sure, x86 has good density if you stick with 8/16-bit, 64k segments and dos, but once you step out its density goes to the crapper. |
|
25 January 2021, 21:26 | #1018 |
Registered User
Join Date: Jul 2015
Location: The Netherlands
Posts: 3,423
|
Yup, he was. And several other crusades about how Intel x86's always were faster than the equivalent MC68K chip and how the Amiga should've used a 4MHz 6502 instead of a 68000...
|
26 January 2021, 08:27 | #1019 | ||
son of 68k
Join Date: Nov 2007
Location: Lyon / France
Age: 51
Posts: 5,335
|
Quote:
Z80 is also typically clocked faster than 6502. Quote:
Speed on 68030 seems ok. I haven't run DOOM itself, but Breathless and other similar games were good enough. On a 6502 you would have trouble with the memory size limits long before you'll need to worry about the speed. |
||
26 January 2021, 08:32 | #1020 |
son of 68k
Join Date: Nov 2007
Location: Lyon / France
Age: 51
Posts: 5,335
|
I've read that the real reason why IBM picked 8088 rather than 68000 is because the 68000 wasn't ready at the time. If a cpu isn't on the market yet, you can't use it.
|
Currently Active Users Viewing This Thread: 1 (0 members and 1 guests) | |
Thread Tools | |
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
Any software to see technical OS details? | necronom | support.Other | 3 | 02 April 2016 12:05 |
2-star rarity details? | stet | HOL suggestions and feedback | 0 | 14 December 2015 05:24 |
EAB's FTP details... | Basquemactee1 | project.Amiga File Server | 2 | 30 October 2013 22:54 |
req details for sdl | turrican3 | request.Other | 0 | 20 April 2008 22:06 |
Forum Details | BippyM | request.Other | 0 | 15 May 2006 00:56 |
|
|