<div dir="auto">appreciate both your clarification.   I have been on the switch/router vendor side.  I have always referred to our chips as custom ASICs vs NPU.</div><div class="gmail_extra"><br><div class="gmail_quote">On Apr 9, 2017 8:00 PM, "Michael Borokhovich" <<a href="mailto:michaelbor@gmail.com">michaelbor@gmail.com</a>> wrote:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">I agree with Andy. NPUs are for programmable data plane. </div><div class="gmail_extra"><br><div class="gmail_quote">On Sat, Apr 8, 2017 at 5:44 PM, Andy Fingerhut <span dir="ltr"><<a href="mailto:andy.fingerhut@gmail.com" target="_blank">andy.fingerhut@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Except for one thing, everything you said sounds good to me.<div><br></div><div>The one exception is that I haven't heard the term NPU used to include the part of the system that runs the control plane code.  In my experience those are called Supervisor CPUs, control plane CPU, or route processor CPU, but no matter which of those names you call them, they tend to be off-the-shelf PowerPC, MIPS, Intel, or Arm CPUs, the same kind you would find in servers or embedded devices.</div><div><br></div><div>NPU I have usually heard to mean some kind of highly programmable device that is tailored for packet forwarding, similar to the categories of ASICs you mention for packet forwarding.  Often they are even more flexible in what they can do, but at a significant cost in lower packet rate per chip than other networking ASICs.  They often allow even more flexibility than even the programmable ASICs, e.g. can run code that processes every byte of the payload, whereas even the programmable networking ASICs tend to focus on flexibility in packet headers.</div><span class="m_4317863622156659038HOEnZb"><font color="#888888"><div><br></div><div>Andy</div><div><br></div></font></span></div><div class="m_4317863622156659038HOEnZb"><div class="m_4317863622156659038h5"><div class="gmail_extra"><br><div class="gmail_quote">On Sat, Apr 8, 2017 at 1:38 PM, Rommel Bajamundi <span dir="ltr"><<a href="mailto:rommel@bajamundi.com" target="_blank">rommel@bajamundi.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="auto"><div><span></span></div><div><div>Ok... I would like to understand this better.  It is my understanding:</div><div>NPU = router processor, executes control plane (CP), a type of integrated circuit(IC)</div><div>ASIC= chipset with some prebuilt pipeline to do stuff to offload NPU, I.e. Bit Torrent algorithm built into IC, to offload compute and or GPU resources do the math on the ASIC. Or  Instead of asking NPU where to forward packets, define a FIB that can be part of the packet parsing pipeline to do a lookup and forward.</div><div>Fixed pipeline ASIC = pre-built parsing and decision tree to accelerate DP forwarding</div><div>Flexible pipeline ASIC= some ability to modify the flow through decision tree, but not necessarily the ability to change headers parsed with some offloaded functionality that balances speed and features, </div><div>Programmable ASIC= highest flexibility, flexible parser</div><div>P4 = higher layer programming language built to define data plane parser, still needs some NPU for programmatic decisions</div><div><br></div><div>It is my understanding that, Tofino, gave you the flexibility to do stuff on DP I.e send some log even based on ingress packet, or parse 10 bytes after offset 0x08 and lookup, parse a header like GTP and store it as part of your EcMP hash.</div><div>Benefits: </div><div>-Portable code, assuming P4 capable ASIC was same P4 version</div><div>- Flexible parser.... mobile guys can parse GTP now, or craft VxLAN over IPv6 can be done without waiting for support.</div><div><br></div><div>I would liken this to modern day switching using Broadcom or mellanox with intel as NPU.  Intel does all the determining of FIB and calculating RIB and putting those into tables that the ASIC deals with.</div><div><br></div><div>I am not a programmer or Hw engineer.   But this is how I understand it.   It was my assumption that the value of Tofino is its ability to have a long lifecycle due to the programmability, address unsupported protocols by current vendors, & address new protocols created.  One would only need chassis upgrades if pps runs out.</div><span class="m_4317863622156659038m_-8120512234756799183HOEnZb"><font color="#888888"><div><br><div>Rommel<br><div><br></div></div></div></font></span><div><div class="m_4317863622156659038m_-8120512234756799183h5"><div><br>On Apr 8, 2017, at 1:48 PM, Michael Borokhovich <<a href="mailto:michaelbor@gmail.com" target="_blank">michaelbor@gmail.com</a>> wrote:<br><br></div><blockquote type="cite"><div><div dir="ltr">Hi Andy,<div><br></div><div>Thank you for the insight. If this is the performance difference, then of course the advantage of P4 ASIC (e.g., Tofino) is obvious. I see that EZchip NP5 supports 300 millions packets per second. But I didn't find a similar spec for Tofino. Also, this comparison should be done for comparable programs since each additional piece of functionality (parsing/modifying an additional header field or doing an additional table search) affects this pps metrics.</div><div><br></div><div>But again, if Tofino indeed achieves ~10 times more pps than e.g., EZchip NP5 for the same program, than I clearly see the benefit and the novelty. </div><div><br></div><div>Michael.</div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Apr 7, 2017 at 5:52 PM, Andy Fingerhut <span dir="ltr"><<a href="mailto:andy.fingerhut@gmail.com" target="_blank">andy.fingerhut@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">In case it isn't obvious, max packet rate that you can achieve in an ASIC turns into a significant difference in cost when buying the equipment and paying the power bill for a network.<div><br></div><div>Suppose you have a choice of a programmable ASIC that goes at 2 billion packets per second, and an NPU that goes up to 200 million packets per second, and they both cost roughly the same amount and consume the same power.</div><div><br></div><div>You have some part of a data center connecting a bunch of hosts together where you decide that kind of programmability is important.  You do some calculations to determine those hosts need 200 billion packets per second of forwarding capacity between them.</div><div><br></div><div>Do you want buy and provide power for 200/2 = 100 fast programmable ASICs, or 200/.2 = 1,000 programmable NPUs?</div><span class="m_4317863622156659038m_-8120512234756799183m_-6060933566875772825HOEnZb"><font color="#888888"><div><br></div><div>Andy</div></font></span></div><div class="m_4317863622156659038m_-8120512234756799183m_-6060933566875772825HOEnZb"><div class="m_4317863622156659038m_-8120512234756799183m_-6060933566875772825h5"><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Apr 7, 2017 at 2:37 PM, Andy Fingerhut <span dir="ltr"><<a href="mailto:andy.fingerhut@gmail.com" target="_blank">andy.fingerhut@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">I don't have experience with all NPUs, but many I have seen top out on the order of hundreds of millions of packets per second with current technology.<div><br><div>With the same current technology, it is possible to design fixed function ASICs, and programmable ASICs like Barefoot's Tofino, that achieve billions of packets per second.</div></div><div><br></div><div>The main difference that I am aware of is that many NPUs are based on parallel arrays of 32-bit or 64-bit processor cores, and each core requires many cycles for things like constructing table search keys and performing side effects on the 'packet vector' (state maintained while forwarding the packet about that packet only).  If you want to go at billions of packets per second, the only way I know to get there is to have fixed or configurable hardware that can do those things in 1 or 2 clock cycles per packet.</div><div><br></div><div>You can write a compiler that compiles a P4 program to run on an NPU as described above, and it will achieve portability of the P4 program, but it won't make that NPU able to go at billions of packets per second.  It is limited in performance by its hardware architecture.</div><div><br></div><div>There are proprietary methods for programming some ASICs that can go at billions of packets per second, but all that I know of are lower level than P4 and non-portable.</div><span class="m_4317863622156659038m_-8120512234756799183m_-6060933566875772825m_4924418705695239975HOEnZb"><font color="#888888"><div><br></div><div>Andy</div></font></span></div><div class="m_4317863622156659038m_-8120512234756799183m_-6060933566875772825m_4924418705695239975HOEnZb"><div class="m_4317863622156659038m_-8120512234756799183m_-6060933566875772825m_4924418705695239975h5"><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Apr 6, 2017 at 6:37 PM, Michael Borokhovich <span dir="ltr"><<a href="mailto:michaelbor@gmail.com" target="_blank">michaelbor@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Hi Remy,<div><br></div><div>I'm not confusing hardware with the language... What I mean is that P4 + ASIC that supports it claims to give us programmable data-plane and this is claimed to be the innovation. But that is exactly the purpose of NPUs - to give us programmable data-plane and NPUs are around for a very long time. So maybe I'm missing the point of innovation that P4 + ASIC that supports it gives. As Nate said, and I agree, one big advantage is portability and the other - ability to do verification.</div><div>So, P4 brings kind of an open standard for programmable ASICs which is analogous to a programming language (e.g., C) for regular CPUs. While each NPU currently have its own language and a programming style.</div><div><br></div><div>What do you think?</div><div><br></div><div>Thanks,</div><div>Michael.</div><div><br></div></div><div class="m_4317863622156659038m_-8120512234756799183m_-6060933566875772825m_4924418705695239975m_-752551130643928275HOEnZb"><div class="m_4317863622156659038m_-8120512234756799183m_-6060933566875772825m_4924418705695239975m_-752551130643928275h5"><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Apr 6, 2017 at 2:07 PM, Remy Chang <span dir="ltr"><<a href="mailto:remy@barefootnetworks.com" target="_blank">remy@barefootnetworks.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="auto">Hi Michael,<div dir="auto">It seems you're conflating hardware with language.  NPU, programmable ASIC, general purpose CPU, and even GPU can all potentially execute p4 code.  </div><div dir="auto"><br></div><div dir="auto">Regards,</div><div dir="auto">Remy<div><div class="m_4317863622156659038m_-8120512234756799183m_-6060933566875772825m_4924418705695239975m_-752551130643928275m_-2038225041918391137h5"><br><div dir="auto"><br><div class="gmail_extra"><br><div class="gmail_quote">On Apr 6, 2017 10:57, "Michael Borokhovich" <<a href="mailto:michaelbor@gmail.com" target="_blank">michaelbor@gmail.com</a>> wrote:<br type="attribution"><blockquote class="m_4317863622156659038m_-8120512234756799183m_-6060933566875772825m_4924418705695239975m_-752551130643928275m_-2038225041918391137m_-2730039474717970275quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Thanks for the reply Nate!<div><br></div><div>So, to summarize, the benefits of P4 approach are: portability and performance. Other than that you probably can achieve the same (if not better) flexibility/programmability with an NPU. Is this correct?</div><div><br></div></div><div class="m_4317863622156659038m_-8120512234756799183m_-6060933566875772825m_4924418705695239975m_-752551130643928275m_-2038225041918391137m_-2730039474717970275elided-text"><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Apr 6, 2017 at 1:01 AM, Nate Foster <span dir="ltr"><<a href="mailto:jnfoster@cs.cornell.edu" target="_blank">jnfoster@cs.cornell.edu</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Your question seems to be more about the relative merits of various architectures than the P4 language. But yes an ASIC is generally more efficient than an NPU, at least at scale.<div><br></div><div>Beyond efficiency there are other benefits to expressing a data plane algorithm in an open framework like P4. For example, a P4 programs should be relatively easy to port to a different target. The same is unlikely to be true for C programs written against closed SDKs.</div><div><br><div>-N</div></div></div><div class="gmail_extra"><br><div class="gmail_quote"><div><div class="m_4317863622156659038m_-8120512234756799183m_-6060933566875772825m_4924418705695239975m_-752551130643928275m_-2038225041918391137m_-2730039474717970275m_5082834799468245624h5">On Wed, Apr 5, 2017 at 6:59 PM, Michael Borokhovich <span dir="ltr"><<a href="mailto:michaelbor@gmail.com" target="_blank">michaelbor@gmail.com</a>></span> wrote:<br></div></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div class="m_4317863622156659038m_-8120512234756799183m_-6060933566875772825m_4924418705695239975m_-752551130643928275m_-2038225041918391137m_-2730039474717970275m_5082834799468245624h5"><div dir="ltr">Hi,<div><br></div><div>P4 allows for configurable data-plane, e.g., we can easily support new custom protocols. However, the same functionality may be achieved by using a network processor, e.g., EZchip (the one I had experience with).</div><div><br></div><div>As I understand, the advantages of programmable ASIC/FPGA that supports P4 is better performance and a lower price than a network processor?</div><div><br></div><div>What do you think?</div><div><br></div><div>Thanks!</div><span class="m_4317863622156659038m_-8120512234756799183m_-6060933566875772825m_4924418705695239975m_-752551130643928275m_-2038225041918391137m_-2730039474717970275m_5082834799468245624m_-5197424933033833744HOEnZb"><font color="#888888"><div>Michael.</div><div><br></div></font></span></div>
<br></div></div>______________________________<wbr>_________________<br>
P4-dev mailing list<br>
<a href="mailto:P4-dev@lists.p4.org" target="_blank">P4-dev@lists.p4.org</a><br>
<a href="http://lists.p4.org/mailman/listinfo/p4-dev_lists.p4.org" rel="noreferrer" target="_blank">http://lists.p4.org/mailman/li<wbr>stinfo/p4-dev_lists.p4.org</a><br></blockquote></div><br></div>
</blockquote></div><br></div>
</div><br>______________________________<wbr>_________________<br>
P4-dev mailing list<br>
<a href="mailto:P4-dev@lists.p4.org" target="_blank">P4-dev@lists.p4.org</a><br>
<a href="http://lists.p4.org/mailman/listinfo/p4-dev_lists.p4.org" rel="noreferrer" target="_blank">http://lists.p4.org/mailman/li<wbr>stinfo/p4-dev_lists.p4.org</a><br></blockquote></div><br></div></div></div></div></div></div>
</blockquote></div><br></div>
</div></div><br>______________________________<wbr>_________________<br>
P4-dev mailing list<br>
<a href="mailto:P4-dev@lists.p4.org" target="_blank">P4-dev@lists.p4.org</a><br>
<a href="http://lists.p4.org/mailman/listinfo/p4-dev_lists.p4.org" rel="noreferrer" target="_blank">http://lists.p4.org/mailman/li<wbr>stinfo/p4-dev_lists.p4.org</a><br></blockquote></div><br></div>
</div></div></blockquote></div><br></div>
</div></div></blockquote></div><br></div>
</div></blockquote><blockquote type="cite"><div><span>______________________________<wbr>_________________</span><br><span>P4-dev mailing list</span><br><span><a href="mailto:P4-dev@lists.p4.org" target="_blank">P4-dev@lists.p4.org</a></span><br><span><a href="http://lists.p4.org/mailman/listinfo/p4-dev_lists.p4.org" target="_blank">http://lists.p4.org/mailman/li<wbr>stinfo/p4-dev_lists.p4.org</a></span></div></blockquote></div></div></div></div></blockquote></div><br></div>
</div></div></blockquote></div><br></div>
</blockquote></div></div>