Home   News   Concept   AMIGA-Compatible   Hardware   Forum   Questions+Answers   Pictures   Contact & Team

Welcome to the Natami / Amiga Forum

This forum is for AMIGA fans interested in the new NATAMI platform.
Please read the forum usage manual.



All TopicsNewsQAFeaturesTalkTEAMLogin to post    Create account
Welcome to the Natami lounge.
Meet new AMIGA friends here and enjoy having a friendly chit chat.

OK Teamers, Could Someone Show Us the Progress?page  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 
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 1828
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 3974
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 272
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 726
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 272
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 272
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 272
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... :)


posts 370page  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19