Comments (1)
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)
- ARTIQ 8 DRTIO satellites: repeaters hang on TSC send
- Will the Rust 2018 firmware fix be back-ported to ARTIQ 7.0? HOT 28
- Reset Error When Running OpenOCD with Kasli SoC HOT 1
- mirny/ADF5356 driver doesn't have 52-bits precision HOT 1
- mirny: Unstable initiliazation with MUXOUT not low/too high errors
- Impossibility of using spare Urukul alongside with SUServo HOT 1
- LLVM Linker (ld.lld) Invocation Fails on Compilation with MSYS2 HOT 31
- Python 3.12 compatibility HOT 1
- dashboard dataset editor conversion to float64 HOT 2
- artiq_master command line reference not built
- artiq_corelog: command not found HOT 1
- Grabber input_mu function ROI limits HOT 1
- Override DAC values and DDS attenuation in dashboard applet
- Allow additional fields and cards in JSON descriptions HOT 4
- handle cancelled interactive argument requests properly
- expand interactive argument example
- interactive args: unclear error message when supplying args simultaneously
- issues with moving existing item in `DictSyncModel`
- What happens in the gatware when there is a delay/jitter on the reference clock provided to the KC705? HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from artiq.