• Login
  • Register
  • Dolphin Forums
  • Home
  • FAQ
  • Download
  • Wiki
  • Code


Dolphin, the GameCube and Wii emulator - Forums › Dolphin Emulator Discussion and Support › Development Discussion v
« Previous 1 … 48 49 50 51 52 … 117 Next »

Explanation of FIFO
View New Posts | View Today's Posts

Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Threaded Mode
Explanation of FIFO
12-23-2012, 10:14 PM
#1
shellashock Offline
Member
***
Posts: 75
Threads: 4
Joined: Dec 2012
I was reading the comments of some older threads, and I had found one that was talking about how there were some major changes to the FIFO back in the r6000 series. I was thinking that if the FIFO Player was just something simple and unimportant to Dolphin like a recorder feature, then it could be replaced with a less intensive recorder to lower emulation requirements. I did not know what FIFO was though, so I thought I would ask it here.
In short I have three main questions:

1. What is FIFO, and if it is an anagram, what does it stand for?

2. What is the importance of FIFO to the Dolphin emulator? If you removed it, would it break emulation for everything, or would it be something minor, like losing the ability to record and take screenshots?

3. Why did FIFO require such large changes? If it was important to emulation, was it so inaccurate that it would have been easier to rewrite the entire code for it, or was the FIFO changes just a major upgrade to allow it(FIFO) more functionality?
Find
Reply
12-23-2012, 11:15 PM
#2
delroth Offline
Making the world a better place through reverse engineered DSP firmwares
**********
Developers (Some Administrators and Super Moderators)
Posts: 1,354
Threads: 63
Joined: Aug 2011
FIFO stands for First In First Out. This is a term usually used to describe data structures like queues: the first elements you pushed to the queue will be the first elements to be popped, and order is conserved (the opposite of FIFO is LIFO, like a stack).

What we call the FIFO in GC emulation is the memory zone used for CPU->GPU commands exchange. The CPU stores commands there and the GPU will read them back later. When the GPU is done reading commands, it sends an interrupt to the CPU. It's a central point of GC/Wii emulation, and removing it would break everything (it wouldn't even make sense).

It is difficult to emulate because it is the main synchronization point between two fast, asynchronous command processors: the CPU on one side, the GPU on the other side. A lot of commands go through there so it also needs to be very fast. Messing up synchronization is very easy, especially because sending interrupts from the GPU thread to the CPU thread is a difficult problem to solve in emulation (the only accurate solution to this problem is to check for interrupts before executing each CPU instruction, but this is slow).
Pierre "delroth" Bourdon - @delroth_ - Blog

<@neobrain> that looks sophisticated enough to not be a totally dumb thing to do
Website Find
Reply
12-24-2012, 04:57 AM
#3
shellashock Offline
Member
***
Posts: 75
Threads: 4
Joined: Dec 2012
ah this makes sense. I am glad that you could answer this so quickly! Whenever there is a a FIFO error, this means that there has been a desyncing of some kind, correct? Or is it related to something else? I had issues with FIFO errors in the game paper Mario ttyd, in bigger areas and it essentially said that there was a desyncing of the fifo player -64 error. is this desyncing of the GPU and CPU, or is it something else? I am not very experienced in emulation, when it comes to what makes the emulation run properly, so any in depth answers are appreciated.
Find
Reply
« Next Oldest | Next Newest »


  • View a Printable Version
Forum Jump:


Users browsing this thread: 1 Guest(s)



Powered By MyBB | Theme by Fragma