Parallelism, communication overhead tradeoffs

If you have a simple question and just want an answer.
User avatar
lukehatpadl
Active Member
Posts: 38
Joined: Sat Jul 08, 2023 5:15 am

Parallelism, communication overhead tradeoffs

Post by lukehatpadl »

I'm working on mixer that will use an XE232 to ingest 4x TDM16 streams, mixing into 2 independent stereo outputs. (The first two tiles are reserved for the control plane and Ethernet.)

The current architecture is:
  • tile[2] 2xTDM16 I/O (1-bit ports), 2xI2S output (4-bit port) (<-> shared memory)
  • tile[2] 4x submixer tasks (shared memory -> channel)
  • tile[2] summing/output mixer task feeding I/O task (channel -> shared memory)
  • tile[3] 2xTDM16 I/O (-> shared memory)
  • tile[3] 4x submixer tasks (shared memory -> channel)
I have prototyped this on the xCORE-200 explorerKIT with fewer channels and it appears to be working. Also, I can build (but not yet test) for XE232.

Other permutations would have better parallelism and less communication overhead (for example, having a DAC per tile and optionally mult'ing the TDM streams to both tiles, avoiding any cross-tile signal plane communication), but with slightly less flexibility and greater CPU overhead.

I'm wondering if anyone here has built something similar has any general advice on these tradeoffs.
User avatar
Ross
Verified
XCore Legend
Posts: 1158
Joined: Thu Dec 10, 2009 9:20 pm
Location: Bristol, UK

Post by Ross »

Sounds like a mixing beast that should be able to have a huge amount of routing flexibility, excellent task for an xcore! Ive not built anything so large - topping out at 18 x 8 (but with flexibility to route many more channels in/out)
Technical Director @ XMOS. Opinions expressed are my own