4 ms·
USB 3.1 pushes data at 10Gbps. Do you have any idea how much black magic it takes to do that? Try writing an FPGA SDRAM controller that reliably operates acros
by tasty_freeze 8y ago
USB 3.1 pushes data at 10Gbps. Do you have any idea how much black magic it takes to do that?
Try writing an FPGA SDRAM controller that reliably operates across frequency, voltage, and temperature at 150 MHz. It is doable but a challenge with the common xilinx boards that are sold to hobbyists for $80. If you can do that, then think about designing a circuit which operates 20 times faster, and negotiates a protocol which is 100 times more complex than what an SDRAM controller has to do.
- adrianN 8y agoBut in contrast there are boatloads of free open source software that does highly nontrivial things and has thousands and thousands of PhD-man-hours poured into it.
- st26 8y agoIndeed. But what if every statement in those boatloads of open source software were race conditions, and varied with each machine, frequency, temperature, voltage, workload, etc?
- ur-whale 8y agoYou're saying the problem is harder. I'm more than willing to believe that. Wouldn't you then want ten times the number of people eyeballing the code? And boatloads of free contributers submitting change requests to fix potential problems? And a marketplace of users that can freely choose deciciding which "IP (I still find the term so deeply offensive, I can't help but it I have to put it in quote)?
- st26 8y agoThe key is the solution is so application specific. Write code once, it runs anywhere forever more. But IP blocks are not really like that. Especially advanced IP (USB1.1 vs USB3.1) need to be heavily customized for each application. So John user can't just download a block from Sourceforge and use it.
- ur-whale 8y ago"sourceforge". nuff said.
- Karrot_Kream 8y agoA lot of very complicated, distributed systems require a lot of customization and tuning to run. Kafka, a system used for distributed "logging" (sorry for the gloss) is known to have a huge operational burden, and takes a lot of customization. If you've ever deployed ElasticSearch, a document search tool, you know you have to write non-trivial blocks of code that operate on the domain of the target documents, to even have ElasticSearch produce basic results. The point is that, while these blocks can be complicated and need lots of customization, the ability to grab the source and modify it yourself is a huge enabler. If I could grab a stock IP from a repo and then spend 40 man-hours customizing it, it would be a huge benefit over spending 1000 man-hours making the IP from scratch. I hate to appeal to expertise, but I've written HDL, synthesized it, and done mask layouts before. I understand that it requires a lot of customizing, but the first step to all of this is sharing. Sharing infrastructural components is a huge reason of why the commodity software business is as robust as it is.
- st26 8y agoI don't disagree that it would be great & all. But there's things working against it, that software doesn't really have to deal with (or at least has solved) is my point. And let's be honest, a state of the art block ported to the latest process isn't going to be 40 man-hours to customize, you're probably looking at more like a couple man-years unless it's very well designed... Which is why reusable core shops are a viable business. And how vibrant of an open source community would you have, if it took a small team a year just to customize & implement the open source design to their application? You would have very few users. Now, you could argue that because a lot of the real work is in the customization that they could open source the core. But where does the customization end, and the core, the root functionality begin? I think a more realistic pitch would be an open source testbench or behavioral model that verifies your core is fully spec compliant.
- ur-whale 8y agoI have no doubt that solving modern state-of-the-art protocol is an extremely complex endeavor. All the more reason for sharing your solutions with the rest of the world, or at the very least parts of it. The problem with the EDA industry is their firmly held belief that these kind of trade secrets is what they're competing with. Think of Google, who had this exact same struggle internally. For BigTable and MapReduce, they chose to sit on the "IP" to put it in H/W parlance. This gave the world Hadoop and its evil twin file-system whose name I forget. Yay (Hadoop is a a catastrophe). For Tensor Flow, they chose the OpenSource route. TF is arguably the best framework for ML. There's a lesson somewhere in there.
- esmi 8y agoGoogle has that luxury because they make their money on ads. If their primary source of revenue was selling a database product (like say oracle) then there may have been a different decision made there.
- B1FF_PSUVM 8y agoNot to mention the "commoditized complement" approach, e.g. https://www.joelonsoftware.com/2002/06/12/strategy-letter-v/ https://www.joelonsoftware.com/2002/06/12/strategy-letter-v/ That's probably what's lacking here, anyone with anything to gain by opening up all the bemoaned goodies. Is that Darpa's role?
- esmi 8y agoNice article. If I understand it correctly I would argue it’s the FAB’s role. :)
- Karrot_Kream 8y agoWe routinely grab a highly complex operating-system kernel for free, build it repeatably from source, and deploy it on machines. It's called Linux. Kernels are extremely complex software blobs with crazy race conditions, and tons of device-specific hacks. Somehow the world goes on with Linux going open source. Nobody is claiming that a single person will bang out a USB 3.1 block, but building up these "IP"s over time through the community would be a huge first step.
- imtringued 8y ago>USB 3.1 pushes data at 10Gbps. Do you have any idea how much black magic it takes to do that? I doubt most projects need the full 10gibts. What if they only need 750mbits? That's unfortunately not possible without USB 3.1. The alternative to USB 3.1 (Gen 1 or 2 doesn't matter) is USB 2.0 which only can do 480mbits.