Seriously off topic but we can keep it going as long as Peter allows. Our system does way more than that, processing each packet to associate it to a flow
Yes, quite same story with associating to a flow (… for the legally required retention) and the L1 cache fun. I reckon you also used perf extensively – as you say, down to a single assembler instruction.
Distributing workload among cores is exactly what causes our performance difference between randomized synthetic traffic and a real life DDoS. Anyway, I think our mutual point was that commodity server hardware was already able to process a stream of line rate 10 Gbps Ethernet packets long time ago. And it can do 100 Gbps today if the hardware and software is chosen/written carefully.
Returning to avionics, I do share your belief it is (and it was!) crazy to use CPU and an FPGA to format/process transponder packets!
But continuing this we’ll easily go into bragging mode. Let’s do it over a drink at a fly in. I will also then tell you the 4500-X Noctua fan mod story. Why on earth did you guys put in such noisy fans!! :)
All these examples of what a CPU can do in software are still making use of heavy low level hardware support. There is absolutely no way a 80×86 CPU running at a few GHz could be shifting that stuff one byte or one bit at a time, over ETH or fibre. You are generating packets in RAM and linking them up, and then the controller picks up the linked list and sends it out. You may not be aware of it but that is how it works at low level. On ETH, the controller implements this. For an example in the embedded world, go here and go to page 1155 of the PDF.
In this GTX330 case, you have to assemble packets which are arriving or departing at 1mbps, and since it is impossible (on this 80386 CPU, probably running at say 50MHz) to bit-bang the data (a 1MHz ISR would be very marginal if even feasible) you have to knock up some sort of shift register which can be loaded/unloaded at your leisure. This “infrequent long high data rate packets” issue is not uncommon in electronics. One can build a long shift register very cheaply with a handful of 4031 chips. They have no parallel access so a bit of a PITA but it would work for TXP packets. I’ve just done exactly that – 40 bit packets.
The packet rate (packets per second) is irrelevant, and indeed not an issue at all. A Z80 at 4MHz could do that 
There’s a fly-in planned for LDLO 7-11 Sep
Then we can talk about this over a fish.
There is absolutely no way a 80×86 CPU running at a few GHz could be shifting that stuff one byte at a time.
Sure. But any NIC or NIC chip (or on-chip NIC) is doing DMA. So I guess you do need something if the protocol is so ad hoc that there’s no off the shelf support for it. A small, cheap FPGA could be a good solution in that case. Though the FPGA in picture looks neither small nor cheap.
Peter wrote:
You may not be aware of it but that is how it works at low level.
I think both me and John are very well aware how it works at a low level :)). So it’s a typical engineer’s opinion contest that can be only solved by either actually implementing it – or (cheaper) suitable amount of examples mutually deemed relevant (aka bragging :).
(…) you have to knock up some sort of shift register which can be loaded/unloaded at your leisure. (…)A small, cheap FPGA could be a good solution in that case
Exactly – if you spend millions on engineers’ paychecks rather than thousands, then you just need thousands of gates and not millions :)) But guess the other option is easier.
There’s a fly-in planned for LDLO 7-11 Sep Then we can talk about this over a fish.
Commitments then, which is quite unfortunate – because it’s relatively close to EPKM. Anyway, I am very determined to make it to Spain!
The xcs40xlpq208 is long obsolete and I can’t find any pricing, but I used to use the 4k series, and at a wild guess, 1k+, it might have been $50-100.
The whole GTX330 has a parts cost around $400.
Just realised that in the FPGA vs. CPU game, FPGA may offer an extra advantage: besides the principal functionality of the device, it can also be used for the bit banging of the interfaces like ARINC 429, which would otherwise require expensive dedicated chips.
Yes that is indeed almost certainly true. Receiving 429 is easy (you can bodge it with one GPIO pin) but transmitting needs shaped waveforms which is a fair bit of circuitry especially as the GTX330 has multiple 429 outputs, high speed (100kbps) capable. I use the HI-3593 but that costs about $100; in an FPGA you can get it for free. You can also do the timing for the waveshaping (slew rate control).
The thing is FPGAs today are much smaller and cheaper, and therefore often make a good choice for hard realtime stuff (dealing with the physical layer). A small Lattice ICE40 which costs buttons these days has more logic resource than that old Xilinx chip (back catalogues show it has 1862 LCs, a cheap Lattice up5k has more than double that at a fraction of the cost, as well as some built in hardware multipliers, built in SPI/I2C peripherals, a couple of PLLs etc). Non-trivial CPUs having pipelines and caches make it quite hard to do bit banging these days unless the CPU is also bit banging the master clock.
Peter wrote:
Astonishing! But I suppose in 1965 it would be valves.
I have a Yaesu FT-901 transciever (output power 100W on HF) from about 1980 which has three valves in the final RF amplifier.
The manual for it is very amusing, when it comes to working on the radio:
Advice on troubleshooting the driver/final stages
Three tubes are used in the FT-901DB: a 12BY7A and two 6146B’s, run in parallel in the final.
Because not all service personnel are as famililar with tubes as they are with semiconductors, we would begin by cautioning you that tubes are voltage devices. To produce power in useful amounts, they require voltages well in excess of that needed for solid state devices. Take care, lest you quickly develop “serviceman’s elbow,” a malady well known to old timers. It occurs when your arm jerks back from the +800 volts right into some immovable object. Accompanied by a few colorful phrases, it is not an experience one knowingly encourages, though it is seldom fatal.
“Seldom fatal”, very comforting! I measured the anodes on mine and they were just shy of 1kV.

BK KMT112 Fluxgate