|
|---|
André Jernung Sweden
| | (MX-Board Owner) Posts 988 18 Mar 2012 12:28
| Thierry Atheist wrote:
| NatAmi will fix ALL OF THAT except for the lack of 5 serial ports and 2 parallel ports. :-((( (4 joystick ports would be AWESOME too. M.U.L.E. anyone???)
|
If you really need it, there are 3 PCI slots (using a PCI riser) that you could fill with I/O cards with serial/parallel ports if you wish to. If you want 4 joysticks, you can connect the rest to the parallel port for the games that support it, just like on classic Amigas: EXTERNAL LINK Tell me, because it sounds fascinating: What are you controlling that needs 5 RS232 ports and 2 parallel ports at the same time?
| |
Thierry Atheist Canada
| | Posts 1830 18 Mar 2012 13:14
| André Jernung wrote:
| Tell me, because it sounds fascinating: What are you controlling that needs 5 RS232 ports and 2 parallel ports at the same time?
|
I think that having easily networked Amigas was never delved into by coders.It's much easier to network through serial than the overhead that a bunch of ethernet ports would create, and a NatAmi could never transfer data fast enough through say 5 ethernet ports (that's too much data to send or receive) anyway to bother with it. Actually, how could a serial port generate audio input/output into a telephone line? I'm not too keen on using USB mice, keyboards or audio cards either. http://amigaworld.net/modules/newbb/viewtopic.php?topic_id=35393&forum=33#657938 Prefer single items in there when I use them too. Seems hubs can be dodgy at times.
| |
Marcel Verdaasdonk Netherlands
| | Posts 3991 18 Mar 2012 18:11
| Thierry Atheist wrote:
| Does anyone, I mean ANYONE here know someone that boots up windows xp, vista, or 7 and code a game in their spare time? Even when I wasn't coding in AMOS I was writing ADOS script files.
|
I know half a dozen people who code, and I know of one who makes games in his spare time. And that are those who aren't on this site!
| |
Niclas Aronsson Sweden
| | Posts 57 18 Mar 2012 19:55
| Rune Stensland wrote:
| The softcore is soon Superscalar.:) Gunnar and Jens are working overtime:))
|
Whoa!!! Awesome news!
| |
Samuel D Crow USA
| | (Natami Team) Posts 1295 18 Mar 2012 19:59
| @Thierry Atheist Many people that write software for Windows use C#.net and some middleware or a library of routines from somewhere. It's quite a bit easier than C++ but not quite as fast. In my spare time I'm working on a Windows and Mac port of an Amiga title using AppGameKit from the makers of DarkBasic. The only thing I don't like about it is that you have to have a Windows box to develop for most of the platforms supported. On my Mac I can only make Mac and iOS versions of the software. Oh well, at least the Windows and Mac versions of AppGameKit come bundled together.
| |
Louis Dias USA
| | Posts 217 18 Mar 2012 21:36
| Rune Stensland wrote:
| The softcore is soon Superscalar.:) Gunnar and Jens are working overtime:))
|
This is epic news! So they are skipping the N050 and going straight to the N070 core then?
| |
Rune Stensland Norway
| | (MX-Board Owner) Posts 871 19 Mar 2012 00:35
| Today I wrote a sourcecode tool that makes statistics in a directory full of .asm sourcecodes. Here are the results for the Asm-pro sourcecode (v1.17) codelines is not correct because it doesn't load the .i files (includes) Mc680x0 Asm source analyzer made by Rune Stensland 2012 Loading and parsing file:d:\amiga\workbench3.5\code\asm-pro\asmpro-src\asmpro.s Loading and parsing file:d:\amiga\workbench3.5\code\asm-pro\asmpro-src\disasm.data2.s Loading and parsing file:d:\amiga\workbench3.5\code\asm-pro\asmpro-src\include\replay\player6.1.s Statistics: Total sourcecode files: 3 Total Instructions Count: 40399 Total codelines Count: 62362 Total register Count: 63750 move.l 4316 bcc.b 4120 bcc 3336 move 2972 cmp 2742 moveq 2138 move.b 1932 bsr 1772 br 1753 lea 1244 cmp.b 1157 jsr 1113 rts 1032 and 868 bra.b 711 movem.l 703 jmp 512 subq 459 cmp.l 458 tst.b 458 addq 438 tst 425 add 366 dcb 338 add.l 330 dbcc 290 or 261 bsr.b 244 bset 221 moveq.l 215 sub.l 204 swap 189 tst.l 174 addq.l 172 clr.b 165 lsr 165 bra 158 and.b 156 clr 149 lsl 139 subq.l 138 clr.l 114 sub 112 mulu 111 add.b 102 else 92 lsl.l 70 sub.b 64 or.b 63 ror 61 lea.l 53 and.l 53 cmpm 51 pea 50 divu 42 lsr.l 38 subq.b 34 rol 34 ext 28 rol.l 28 addq.b 28 ds 27 asl.l 26 ext.l 23 fmove.d 23 movem 22 lsr.b 20 fmove.x 18 fmove.l 17 st 15 lsl.b 15 exg 12 or.l 11 rte 10 neg.l 10 version 8 not.l 7 fmovem.x 7 neg 6 sf 6 nop 6 not 6 muls 6 fcmp.x 6 st.b 6 fmove.s 5 fmul.x 5 fneg.x 5 fmovem 5 bsr.s 4 pea.l 4 asr.l 4 fmove.p 4 ror.l 4 suba.l 4 movec 4 exg.l 3 asr 3 fadd.x 3 asl 3 fdiv.x 3 fbeq 3 sne 3 addx.l 3 fbge 2 eor 2 sf.b 2 roxr.l 2 not.b 2 ror.b 2 cmpa.l 2 rem 2 erem 2 eor.b 2 neg.b 2 p61_getnote 2 fmove 1 fmove.b 1 sgt 1 fbgl 1 roxl.b 1 cmpm.b 1 fbun 1 fboge 1 fbogt 1 fbolt 1 subx.l 1 ftentox.x 1 idnt 1 smi 1 eor.l 1 illegal 1 seq 1 asr.b 1 ori.b 1 sle 1 fsub.x 1 sge 1 ftst.x 1 roxr 1 roxl 1 slt 1 bra.s 1 ttl 1 endb 1 Registers: label 25248 dx 18956 xx(ax,dx) 6788 (ax) (+-) 5037 ax 4609 xxxx(ax) 1831 #const 700 xxxx(pc) 194 fpx 110 a0/a1 41 d2/d3 27 d7/a0 10 d1/d3/a1/a6 10 d0/d1/a0 9 a2/a6 8 d0/a0 8 d0/a6 8 d3/d4/a2 8 d1/a0/a5/a6 7 d1/d2 7 d0/d1 7 d1/a0 7 d0/a1 6 a0/a5/a6 6 d0/a3 5 fp0/fp1 4 fpcr/fpsr/fpiar 4 d5/a0/a1/a5/a6 4 a0/a3/a5/a6 4 d0/d1/a0/a1 4 d0/a2 4 a1/a2 4 a2/a3 4 d0/a0/a1/a6 4 d0/d2 3 d7/a1/a6 3 a0/a1/a5/a6 3 d0/d1/d2/a0 2 d0/d3 2 d7/a1/a2 2 d0/d1/d7/a0/a1 2 d7/a1 2 d5/a2/a5 2 a1/a3 2 d1/a6 2 d2/d7/a1 2 d1/a0/a1/a6 2 d0/d1/a5 2 d0/d7/a0/a1 2 d0/d2/a0/a1 2 d1/d7/a1 2 d0/d2/d3 2 d7/a5/a6 2 a2/a5 2 d1/d7 2 a0/a1/a3 2 a0/a3 2 fp0/fp1/fp2/fp3/fp4/fp5/fp6/fp7 2 fp1/fp2/fp3/fp4/fp5/fp6/fp7 2 d0/a0/a1 2 a2/a3/a5 2 d3/d6/d7/a1/a3 2 d1/d2/a0/a1 2 d7/a0/a1 2 a0/a1/d0 2 xx([ax,dx]) 1 d1/a2 1
|
| |
Wawa Tk Germany
| | Posts 581 19 Mar 2012 03:00
| Rune Stensland wrote:
| The softcore is soon Superscalar.:) Gunnar and Jens are working overtime:))
|
alrigt. but i wanna see something one day..
| |
Roald Seelemeijer Netherlands
| | Posts 5 19 Mar 2012 07:19
| Epic cool news!Rune Stensland wrote:
| The softcore is soon Superscalar.:) Gunnar and Jens are working overtime:))
|
| |
Nixus Minimax Germany
| | Posts 275 19 Mar 2012 11:11
| Rune Stensland wrote:
| Registers:
|
How do I have to read this section? I would have expected that these are register combinations within single instructions but I frankly cannot make sense of all of them. Perhaps I have been coding too much for RISC processors with less complex address modes... :) Could you make your tool check register dependencies between subsequent instructions? It would be pretty cool to have a rough estimate of how much faster a superscalar implementation (yay!) of the soft-cpu can be when running realistic code.
| |
Rune Stensland Norway
| | (MX-Board Owner) Posts 871 19 Mar 2012 11:59
| Nixus Minimax wrote:
| Rune Stensland wrote:
| Registers:
| How do I have to read this section? I would have expected that these are register combinations within single instructions but I frankly cannot make sense of all of them. |
An instruction that look like this: move.l 22(a0,d0.w),(a1,d1.l) Will add 2 to registercount xx(ax,dx) The output of my program is not complete. The d0/d1/d2/d3 and a0-a5 etc comes from movem's in the code. Probobly bether to group them into one movem. Yesterdays version have many bugs. The label count is counting branch labels and lea adresses together with label access. I will remove the branch labels. And add the lea labels to constants count. I will improve the tool over time. Adding superscalar analysis is a good idea. I want to modify UAE to create instruction dumps to textfiles. Then we can simulate reallife code, and do some man vs the machine messurement. 2 things I want to check: Register forwarding: move.l a0,d0 add.l d2,d0 Register Pipelining: move.l a0,d0 add.l d2,d1 This Analysis is important for the new SoftCore.
| |
Matt Hey USA
| | Posts 737 19 Mar 2012 12:56
| Louis Dias wrote:
|
Rune Stensland wrote:
| The softcore is soon Superscalar.:) Gunnar and Jens are working overtime:)) |
This is epic news! So they are skipping the N050 and going straight to the N070 core then?
|
This is a good question that went unanswered. A superscaler soft core announcement creates many questions. 1) Is the N050 core being skipped in favor of the N070 core? 2) How many parallel processing units (i.e. 2xinteger, branch, fp)? 3) How many average instructions per cycle and MHz in simulation or expected? 4) What instructions are in the core (missing 68k, CF, custom)? 5) How much of the fpga will the new soft core take up? 6) What is needed to be able to insert the core into the current Natami's fpga? Superscaler is great news but you are leaving us hanging Rune ;).
| |
Nixus Minimax Germany
| | Posts 275 19 Mar 2012 13:00
| Rune Stensland wrote:
| | The d0/d1/d2/d3 and a0-a5 etc comes from movem's in the code. Probobly bether to group them into one movem. |
You are doing great work! I have no recollection of how the 68k does the address mode encoding but it would probably be most useful to have statistics for each mode rather than for the registers used. From the top of my head these would be some modes to count: dx ax (ax) (ax)+ -(ax) -(sp) (sp)+ #xxx(ax) (ax, dx) #xxx #xxx(ax, dx) I think I hardly used anything else back in the days... :) | I want to modify UAE to create instruction dumps to textfiles. Then we can simulate reallife code, and do some man vs the machine messurement. |
That would be awesome! Imagine having a bunch of UAE users collect statistical data... 2 things I want to check: Register forwarding: move.l a0,d0 add.l d2,d0 Register Pipelining: move.l a0,d0 add.l d2,d1
|
Perhaps a case like this should be observed, too: add.l d0,d1 add.l d1,d2 add.l d3,d4 add.l d4,d5 which in a simple case of superscalarity would be processed in three cycles (1st instruction, then concurrently the 2nd and 3rd instructions, eventually 4th instruction) but could be made to execute in two cycles if the 2nd and 3rd instructions are reversed (1st and 3rd instructions concurrently, then 2nd and 4th instructions concurrently). I couldn't come up with a better example for illustration that makes more sense. I just wanted to point out that sometimes it is not best to just pair neighbouring instructions but to change the order of instructions and then pair neighbouring instructions for parallel processing. Each pair of instructions that can be processed in parallel offers for an opportunity to change the order of instructions which may lead to overall better pairing. Of course, this makes things a lot more complex. Tha FPGA is slow when looking at the clock rate but it can do lots of things in parallel. Thus, the best prospects for a reasonable computing speed are to aim for as much parallelity as possible. We might end up with the parallelity of present-day CPUs clocked at 1st generation pentium clock rates... :)
| |
Rune Stensland Norway
| | (MX-Board Owner) Posts 871 19 Mar 2012 13:16
| Matt Hey wrote:
| This is a good question that went unanswered. A superscaler soft core announcement creates many questions. 1) Is the N050 core being skipped in favor of the N070 core?
|
Yes but the new CPU might get another name. Gunnar has done over 130 checkins since January... 2) How many parallel processing units (i.e. 2xinteger, branch, fp)?
|
We where discussing up to 4 integer units. But 2 is more realistic. 3) How many average instructions per cycle and MHz in simulation or expected?
|
The core is too unfinnished yet to publish any numbers, but the peaknumbers are excellent. 4) What instructions are in the core (missing 68k, CF, custom)?
|
The main core will support everything. The rest of the cores will be reduced. This is the same motorola did with the Mc68060. remember P1/P2? Some instructions will pipeline, others will not. 5) How much of the fpga will the new soft core take up?
|
The core is compact and fast. It has been created by elite VHDL coders. :D The Integer cores is done by Jens and Gunnar and the FPU by cristoph. 6) What is needed to be able to insert the core into the current Natami's fpga?
|
Gunnar is testing on the cycloneIV already. Not only in the simulator.
Superscaler is great news but you are leaving us hanging Rune ;).
|
Maybe we get some more news soon..
| |
Louis Dias USA
| | Posts 217 19 Mar 2012 13:38
| Rune Stensland wrote:
| the new CPU might get another name
|
68KILLA-core?:D
| |
Rune Stensland Norway
| | (MX-Board Owner) Posts 871 19 Mar 2012 14:18
| Perhaps a case like this should be observed, too:
|
If you search for Gunnars old posts on the forum you can see some of the ideas we discussed some years ago. Some of these features has been included, and some have been left out. 020++ adressing modes that are rarely used Should we support them? Like this one: jsr ([xxx.l,d0]) Can be solved in old code with this: move.l xxx.l,a0 add.w d0,a0 jsr (a0) These instructions can be trapped and emulated in software. What do you think?
| |
Nixus Minimax Germany
| | Posts 275 19 Mar 2012 15:12
| Rune Stensland wrote:
| | If you search for Gunnars old posts on the forum you can see some of the ideas we discussed some years ago. Some of these features has been included, and some have been left out. |
OK, it's good to know that things like these have been considered. I am sure that the experts will make good decisions. | 020++ adressing modes that are rarely used Should we support them? These instructions can be trapped and emulated in software. What do you think? |
I never used any of them and wondered why anyone would want to. Just trying to figure out whether you hit the right place in RAM with these address modes made my grey matter curdle. I wouldn't be surprised if the popular Amiga compilers never used them even once. The longest possible 68k instruction was a move with both source and destination using the most complex 020-addressing modes. IIRC the opcode could be 22 bytes long! Personally I think that the 68k has a good history of emulating rarely used instructions using exceptions. IIRC this is the case with quite a few FPU-instructions in the 040 and the 060. Considering that this is an FPGA implementation, the modes could still be implemented later on if someone finds that they do affect execution speed. I have no idea what will happen with all the (valuable!) HDL-code once the hardware is released. If it will be published in some way, I could imagine that somebody in varsity research will have some interest in completing the implementation.
| |
Comp Arch
| | Posts 33 19 Mar 2012 16:04
| Rune Stensland wrote:
| If you search for Gunnars old posts on the forum you can see some of the ideas we discussed some years ago. Some of these features has been included, and some have been left out. 020++ adressing modes that are rarely used Should we support them? Like this one: jsr ([xxx.l,d0]) Can be solved in old code with this: move.l xxx.l,a0 add.w d0,a0 jsr (a0) These instructions can be trapped and emulated in software. What do you think?
|
I'd say be careful about dropping instructions or leaving them to trap emulation. In your example you use an instruction that is usually often found in switch-statements (JMP instead of JSR) and emulators (where speed matters). (Maybe I misread this syntax, but would this instruction not have to be translated to lea xxx .l, a0 movea.l (a0, d0 .w), a0 jsr (a0) Following my (old!) syntax rules the '[]' brackets mean indirect addressing, but I have noticed that e.g. the UAE monitor nowadays use a different syntax, so I'm probably wrong here. Anyway...) Just because ancient compilers did not use these instructions it does not mean they are useless. For example one of the very few things where the x86 is superior to the 68000 is the instruction CALL [esi + 32 bit offset] which does not exist on a 68000, only as one of the extended addressing modes on the 68020. This is a pity because that's why you always have to jump twice when invoking object methods or library functions: JSR -offset(Ax) followed by JMP abs.l. When some while ago Gunnar asked for new instructions to add to the 68050 core these were the only ones that came to my mind: JMP/JSR [d16(Ax)] and maybe also JMP/JSR [d8(pc, d0.s * x)] When writing programs in assembly language I use objects with individual jump lists almost all the time, so that I personally would even prefer to replace the (non-existing) JSR -(Ax) with the equivalent short form (thus avoiding the 68020 extension word), in case that opcode bit pattern is still free (haven't checked that). So in short: don't rely on old compilers or old assembly programs. Most programs had to be written for the 68000 so they could run on an old A500 as well. In those days only few programmers dared using the new addressing modes, and only if the program would not run on an old A500 anyway (like Kevin Kralian's Apple2000 emulator).
| |
Jakob Eriksson Sweden
| | (Moderator) Posts 1097 19 Mar 2012 16:27
| But aren't Dx relative jumping hard to do fast in superscalar CPUs? 020+ addressing is also apparently expensive to do in "68050". Keep in mind that this new CPU and memory will be fast enough that even if it used some kind of trap, it would probably be just as fast as a Blizzard 060 overall. Even if the jump slowed down significantly, the rest of the emulator code and memory access would probably make up for it.
| |
Nixus Minimax Germany
| | Posts 275 19 Mar 2012 16:27
| All instructions using address modes of this type ([...]) need to read a pointer from memory and then use it to read the actual data. The second read will always depend on the result of the first. The only advantages of such a complex instruction I am aware of are that it supposedly encodes to less bytes than two normal read instructions and that it is better readable. The disadvantage is that you lock everything for the time between two read time slots. In case each read operation triggers a burst read, this can be a significant amount of time. You could use that time for doing other things and put some instructions between the two reads. Of course, this wouldn't matter if there simply isn't anything to compute. Plus you are still free to split the instruction when there is support for both instruction. This discussion is what I thought about when saying that this is only an FPGA implementation and things could always be added later on... :)
| |
|