Git Product home page Git Product logo

Comments (1)

Spaqin avatar Spaqin commented on June 20, 2024

For an additional explanation why #2291 has used main DRTIO protocol to indicate that 'async' messages are awaiting in the satellite below.

Originally, the aux protocol ran with these assumptions:

  • all transactions are initiated by master,
  • transactions always go from master to one satellite,
  • downstream satellite is always ready to receive,
  • all transactions goes from master to downstream satellites, never upstream,
  • only one transaction is open at a time.

And that's it, quite simple.

However, since DDMA and subkernel support were added, it got a bit more complicated. DDMA would finish work and would need to indicate its status, and subkernels can initiate various transactions on their own to various destinations. And of course we value our time - initially DDMA status would be sent along with DestinationReply, which is sent periodically every 200ms; with subkernel activity or larger data that needs to be broken down, that could be way too long.

With the current simple system in place, messages cannot be sent upstream blindly: the master or repeater may be busy handling something, not pick up the message on time, and if another one comes before that one is copied away, the new message is lost. Even downstream has to take into account processing time, if a response is not expected, before sending another message.

That's why as a quick fix a flag that messages are pending was implemented with the main channel was implemented.

With asynchronous messages and concurrent transactions, the state of the satellite will also have to be taken into consideration; and doing it within the aux protocol without hardware flow control, will have to overcome the following challenges:

  • clearing the pathway for the next message as quickly as possible, if possible separating receiving message and handling it,
  • making sure no packet gets lost in both upstream and downstream directions,
  • minimizing the number of potential message retransmissions,
  • keeping the latency as consistent and low as possible.

from artiq.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.