NeXT Computers Forum Index NeXT Computers
www.NeXTComputers.org
 
Log in to check your private messagesLog in to check your private messages

Log inLog in  RegisterRegister


Profile  Search  Memberlist  FAQ  Usergroups
What Needs to be done for a NeXT Emulator
Goto page Previous  1, 2, 3 ... 66, 67, 68 ... 79, 80, 81  Next
 
Post new topic   Reply to topic    NeXT Computers Forum Index -> Emulation / Virtualization
View previous topic :: View next topic  
Author Message
schubige



Joined: 24 Jul 2015
Posts: 49
Location: Switzerland

PostPosted: Thu Jan 14, 2016 7:31 am    Post subject: Reply with quote

Yes, I was referring to these manuals.
Back to top
View user's profile Send private message
cbrunschen



Joined: 09 May 2011
Posts: 39

PostPosted: Sun Jan 17, 2016 3:33 am    Post subject: Reply with quote

Would this article, i860 microprocessor internal architecture by Neal Margulis, be of use? I don't have a copy, but I'd be happy to pitch in to buy a copy for anyone working on this.

(The article's author, Neal Margulis, might well know useful things, but his LinkedIn profile states "I started my career at Intel. Other than the people I worked with, I don't want to do anything related to semiconductors ever again so I don't list those jobs." so I am guessing he'd rather not be approached / involved.)
Back to top
View user's profile Send private message
schubige



Joined: 24 Jul 2015
Posts: 49
Location: Switzerland

PostPosted: Sun Jan 17, 2016 4:03 am    Post subject: Reply with quote

Thanks for the reference. In the meantime I found the bug myself and it looks like the i860 emulation works pretty much as expected now. No more pixel garbage, see: http://1drv.ms/1RYaKKu. I did a few optimisations and the i860 runs now also in a separate thread. The performance on my MacBook Pro is between 20 and 50 million i860 instructions per second which is pretty close to what the real hardware achieved.
Back to top
View user's profile Send private message
cbrunschen



Joined: 09 May 2011
Posts: 39

PostPosted: Sun Jan 17, 2016 5:32 am    Post subject: Reply with quote

schubige wrote:
Thanks for the reference. In the meantime I found the bug myself and it looks like the i860 emulation works pretty much as expected now. No more pixel garbage, see: http://1drv.ms/1RYaKKu. I did a few optimisations and the i860 runs now also in a separate thread. The performance on my MacBook Pro is between 20 and 50 million i860 instructions per second which is pretty close to what the real hardware achieved.


That sounds and looks absolutely awesome. I am so looking forward to seeing this in action and effectively finally having the NeXTDimension cube I never could afford Smile

I wonder, will Previous allow more than one NeXTDimension card to be emulated at the same time allowing simulation of the 4-headed (one mono + 4 color monitors) monster? On a multi-core host, with some luck one might end up running the main 68040 and each i860 on one host core each, which could give a great emulated experience. Hmmm ... ! Smile
Back to top
View user's profile Send private message
ardi



Joined: 11 Jun 2014
Posts: 85

PostPosted: Sun Jan 17, 2016 12:41 pm    Post subject: Reply with quote

schubige wrote:
Thanks for the reference. In the meantime I found the bug myself and it looks like the i860 emulation works pretty much as expected now. No more pixel garbage, see: http://1drv.ms/1RYaKKu. I did a few optimisations and the i860 runs now also in a separate thread. The performance on my MacBook Pro is between 20 and 50 million i860 instructions per second which is pretty close to what the real hardware achieved.

Great!! It's great news that you run the i860 in a separate thread! It's certainly the best way for emulating the ND. If the 68K timings are better adjusted to its realtime performance, it might even help the emulator in being more efficient. But last time I looked at the code, I didn't manage to understand how it manages CPU timings.
Back to top
View user's profile Send private message
cbrunschen



Joined: 09 May 2011
Posts: 39

PostPosted: Sun Jan 17, 2016 1:17 pm    Post subject: Reply with quote

schubige wrote:
... the i860 runs now also in a separate thread ...

A thought would it be possible (I wonder) to run the NeXTDimension simulation as its own process? After all, the boards talking through NeXTBus could in a way be seen as separate computers on a network. Indeed it might be interesting to be able to distribute emulation of a cube and an ND card or two across different computers, potentially, each with its own display ... !
Back to top
View user's profile Send private message
schubige



Joined: 24 Jul 2015
Posts: 49
Location: Switzerland

PostPosted: Mon Jan 18, 2016 5:22 am    Post subject: Reply with quote

cbrunschen wrote:
A thought would it be possible (I wonder) to run the NeXTDimension simulation as its own process? After all, the boards talking through NeXTBus could in a way be seen as separate computers on a network. Indeed it might be interesting to be able to distribute emulation of a cube and an ND card or two across different computers, potentially, each with its own display ... !


While technically possible, performance would be very poor because each NeXT bus transfer would have to go through the network. Transfers are usually small (often just 4 bytes) and the overhead would be not worth it. Furthermore, because the NeXTbus does not support hot-plugging of boards, Previous would need to manage startup and shutdown of these (distributed) NeXTdimension board processes. Very complicated... The current thread-based solution has the advantages of a (fast) shared memory space as well as easy startup & shutdown control. Here is a screenshot of a dual-screen setup with Previous: http://1drv.ms/1JUwINq
Back to top
View user's profile Send private message
cbrunschen



Joined: 09 May 2011
Posts: 39

PostPosted: Mon Jan 18, 2016 7:22 am    Post subject: Reply with quote

schubige wrote:
cbrunschen wrote:
would it be possible ... to run the NeXTDimension simulation as its own process?


While technically possible, performance would be very poor because each NeXT bus transfer would have to go through the network. Transfers are usually small (often just 4 bytes) and the overhead would be not worth it.


I wonder whether over a modern, switched gigabit ethernet, the performance might still be acceptable for at least some uses; after all, the NeXTbus specification says "The NeXTbus has a basic cycle rate of 12.5 MHz, and a mechanism that allows data burst transfers to occur at a rate of 25 MHz. This results in a NeXTbus peak data transfer rate of 100 Mbytes/second"; so gigabit ethernet is in approximately the same ballpark, speed-wise.

schubige wrote:
Furthermore, because the NeXTbus does not support hot-plugging of boards, Previous would need to manage startup and shutdown of these (distributed) NeXTdimension board processes.


At least in theory it could be done by keeping the processes separate: Start the NeXTDimension processes, each listening on a port for a connection from the main process; then start the main process, telling it where the different NeXTDimension cards are listening. This would move the complexity of starting the processes outside the emulators themselves, and allow possibly even a mix of same-host and remote cards; and could possibly be extended to allow other NeXTbus cards to be emulated (not that there's a huge need for that really).

schubige wrote:
The current thread-based solution has the advantages of a (fast) shared memory space as well as easy startup & shutdown control.


Absolutely it's easier and faster within a single host and with shared memory!

That said, I do like the idea of the flexibility that this might bring: most graphics cards support on or two monitors, so in order to be able to simulate a 4-headed cube with 4 physical monitors connected, it might be less expensive to have a couple of computers with two monitors each, rather than one computer with multiple graphics cards.

(Consider a simulated multi-headed cube built from a couple of Raspberry Pis, each driving one or two monitors ...)

schubige wrote:
Here is a screenshot of a dual-screen setup with Previous: http://1drv.ms/1JUwINq

That looks awesome. Kudos, lots of them!
Back to top
View user's profile Send private message
ardi



Joined: 11 Jun 2014
Posts: 85

PostPosted: Mon Jan 18, 2016 7:24 am    Post subject: Reply with quote

schubige wrote:
[...]The performance on my MacBook Pro is between 20 and 50 million i860 instructions per second which is pretty close to what the real hardware achieved.

Let me suggest to implement a limitation so that the emulator won't surpass the real i860 performance. I'm going to get a powerful new box in the next weeks, and I'd prefer to get a realistic impression of the real ND performance when you release it Cool
Back to top
View user's profile Send private message
cbrunschen



Joined: 09 May 2011
Posts: 39

PostPosted: Mon Jan 18, 2016 2:23 pm    Post subject: Reply with quote

ardi wrote:
schubige wrote:
[...]The performance on my MacBook Pro is between 20 and 50 million i860 instructions per second which is pretty close to what the real hardware achieved.

Let me suggest to implement a limitation so that the emulator won't surpass the real i860 performance. I'm going to get a powerful new box in the next weeks, and I'd prefer to get a realistic impression of the real ND performance when you release it Cool


I quite like having the ability to set a system to either attempt to emulate a particular speed (usually the original speed inasmuch possible) or simply "run as fast as possible", to allow running compatible software while getting the benefit from at least some advancements in performance.
Back to top
View user's profile Send private message
schubige



Joined: 24 Jul 2015
Posts: 49
Location: Switzerland

PostPosted: Sat Jan 23, 2016 4:28 am    Post subject: Video Playback Reply with quote

I'm currently working on making Previous more real-time aware (branch_realtime). Until now, timing in Previous was mostly based on (virtual) CPU cycles. Depending on your host hardware, this was either faster or slower than reality. I'm linking now various time sources in the NeXT hardware (such as vertical blank, microsecond timer, sound, etc.) to the host system. Thus time elapsed inside Previous is not only counted in CPU cycles but also in microseconds elapsed in reality.

One of the tests I do is video playback with NEXTTIME. Video playback is a great test because it heavily loads the system (I/O, decoding, sound, pumping video frame to the NeXTdimension, etc) and all that has to be synchronized and happens in real-time.

I'm having troubles with this video http://1drv.ms/1PtSB2b. Audio stops at roughly 1:30 and shortly after, frames start to drop as well.

Could anyone of you who has a real NeXTdimension play that video with NEXTTIME, record it e.g. with a phone-camera directly from the screen and upload/send it to me for comparison, please?

Thanks a lot, Simon
Back to top
View user's profile Send private message
ardi



Joined: 11 Jun 2014
Posts: 85

PostPosted: Mon Jan 25, 2016 7:43 am    Post subject: Re: Video Playback Reply with quote

schubige wrote:
I'm currently working on making Previous more real-time aware (branch_realtime). Until now, timing in Previous was mostly based on (virtual) CPU cycles. Depending on your host hardware, this was either faster or slower than reality. I'm linking now various time sources in the NeXT hardware (such as vertical blank, microsecond timer, sound, etc.) to the host system. Thus time elapsed inside Previous is not only counted in CPU cycles but also in microseconds elapsed in reality.

Very Happy Very Happy Very Happy Thanks a lot Exclamation Exclamation Exclamation
One of my wishes has always been to have a reasonable realtime performance in Previous. So, thanks a lot for this effort, I really appreciate it Very Happy
Back to top
View user's profile Send private message
andreas_g



Joined: 30 Jan 2009
Posts: 442
Location: Austria

PostPosted: Sun Feb 14, 2016 9:04 am    Post subject: Reply with quote

Hello all,

I am happy to annouce the release of Previous v1.4! Simon did lots of work on emulating the NeXTdimension and he considerably improved timings and efficiency of Previous. Furthermore there is now a mode to accelerate the emulation beyond the performance of real systems. Other improvements and bugfixes are listed in the readme.

Emulating the NeXTdimension board was something i thought would not be feasible. But thanks to the i860 emulator from Jason Eckhardt and the work of Simon, who improved and completed parts of it, it finally came true. I hope you enjoy it!

You can load the binary for Mac OS X v10.6 or later here.
The binary for Windows can be found here.
Back to top
View user's profile Send private message Send e-mail
ardi



Joined: 11 Jun 2014
Posts: 85

PostPosted: Sun Feb 14, 2016 11:34 am    Post subject: Reply with quote

andreas_g wrote:
Hello all,

I am happy to annouce the release of Previous v1.4! Simon did lots of work on emulating the NeXTdimension and he considerably improved timings and efficiency of Previous. Furthermore there is now a mode to accelerate the emulation beyond the performance of real systems. Other improvements and bugfixes are listed in the readme.

Emulating the NeXTdimension board was something i thought would not be feasible. But thanks to the i860 emulator from Jason Eckhardt and the work of Simon, who improved and completed parts of it, it finally came true. I hope you enjoy it!

You can load the binary for Mac OS X v10.6 or later here.
The binary for Windows can be found here.


Great!!!! Cool I was really waiting for this release!!!! Very Happy

Thanks a lot for this hard work! BTW, I remember there were some SDL2-related graphics glitches in the first releases... is there any minimum recommended SDL2 version for building the source?
Back to top
View user's profile Send private message
schubige



Joined: 24 Jul 2015
Posts: 49
Location: Switzerland

PostPosted: Sun Feb 14, 2016 2:33 pm    Post subject: Reply with quote

Yes, minimum SDL version is 2.0.4 for Previous 1.4. And the current branch is "branch_realtime".
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    NeXT Computers Forum Index -> Emulation / Virtualization All times are GMT - 7 Hours
Goto page Previous  1, 2, 3 ... 66, 67, 68 ... 79, 80, 81  Next
Page 67 of 81

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum



Powered by phpBB © 2017 phpBB Group