Killer NIC, Physics and External CPUs

I’m sure that you have heard of Killer, the ridiculously expensive and capable new network interface card that supposedly not only can reduce your gaming ping times, but also increases the FPS of your games. At first I was highly sceptical just like everyone else, but reading up on the issue showed that Bigfoot Networks, developers of the NIC, aren’t just trying to fool stupid gamers out of their hard-earned dough. Read the FAQ on the webpage, for example; they are fully aware of the fact that the biggest culprit when it comes to latency is the Internet itself – they’re simply trying to lower the local host OS’s delays. Oh, and the IGN review shows that it indeed provides some positive effects.

When I first saw the card I scoffed and harumffed and did all kinds of weird noises, but thinking about it, it does make sense in a strange way. The normal procedure for network traffic is (quite simplified) that an application sends data over a socket, which transports the data to the OS’s network stack, which in turns connects to a device driver that in turn exchanges signals with the port, and finally sends some data. The NIC card then receives this data, and handles to low-and-dirty layer 1 and layer 2 Ethernet details. Or something along those lines. Layer 2 (MAC address level) might be handled in the device driver instead.

The Killer card – which I incidentally feel like calling the Killer kard in a Mortal Kombat-like bout of silliness – instead has a massive 400 MHz CPU, runs Linux, and actually replaces the device drivers of your OS to something especially designed to work faster with Killer. I assume that the card also has a simple priority queue which prioritizes connectionless (UDP) traffic, which is what is used by games most of the time.

“But what about lowering the FPS,” you ask. Well, at least I did. This also makes sense, given that the main game loop waits for the sockets. If the device driver can respond faster, the control might be passed back to the game quicker – I guess. Somehow this feels like a stupid explanation, though. And wouldn’t that be taken care of by a separate thread for the network handling, these days when multi-core CPUs are all the rage? Anyway, IGN’s results seem to indicate that the FPS does increase a smidgen.

All in all, I think that this might be a decent toy for rich kids who must increase their performance by all means. But it’s mostly useless for all other kinds of network traffic, in my opinion.

However, something that struck me was the fact that the Killer card can run applications of its own. An example of this is a bittorrent client that downloads files to an external hard disk connected to the Killer card’s USB port. Yes, it has a USB port as well. This example sounds like a completely useless idea to me. But something that’s all the rage now is all the talk of physics in games; couldn’t the Killer card’s CPU be put to use for physics calculations? Sure, it’s just 400 MHz, but I’m sure that general non-critical calculations could be performed autonomously from the rest of the game.

And couldn’t this extra CPU be used for other activities as well? In fact, there seems to be external CPUs in many plug-in cards these days: graphics cards, physics cards, network cards, maybe sound cards. If there could be a standardized way for using external CPUs, I’m sure that most demanding applications could receive quite a boost – without the hassle of proprietary solutions. A generalized API for utilizing external CPUs. Too bad that it’ll never happen.

Leave a Reply

Copyright © 2009 KarjaSoft