大家好,今天给各位分享fpga源码分享下载网站的一些知识,其中也会对app进行解释,文章篇幅可能偏长,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在就马上开始吧!
在前几天公众号文章《FPGA是网络交换领域的不二选择》一文中详细阐述了网络交换与FPGA之间的关系,以及定制硬件在未来各个行业的强烈需求趋势。本文就针对最近火爆全球的美股数次熔断背后的高频交易的技术背景进行分析,进而对TOE技术进行科普介绍。
四次熔断背后的高科技
最近,有关美国股市多次熔断的新闻漂浮在网络的各个角落。比如拿巴比特举例子的:
3月8日,巴菲特:我活了89岁,只见过一次美股熔断。
3月9日,巴菲特:我活了89岁,只见过两次美股熔断。
3月12日,巴菲特:我活了89岁,只见过三次美股熔断。
3月16日,巴菲特:我活了89岁,只见过四次美股熔断。
3月18日,巴菲特:我太年轻了……
段子只是段子,让我们看一下历史上这几次熔断发生的时间:
第一次熔断1997年10月27日,道琼斯工业指数暴跌7.18%!
第二次熔断2020年3月9日,道琼斯工业指数收盘暴跌7.79%!
第三次熔断2020年3月12日,道琼斯工业指数收盘暴跌9.99%!
第四次熔断2020年3月16日,道琼斯工业指数收盘暴跌12.93%!
第五次熔断2020年3月18日,道琼斯工业指数收盘暴跌6.3%!
从熔断时间上来看,到最近一段时间,熔断发生的频率有了显著的提升。当然,熔断跟当前的新冠病毒疫情有关。抛开疫情,咱们可以研究一下熔断背后的技术原因。
其实,一系列熔断事件的爆发,也凸显出当今在股市上当“韭菜”是多么的无奈和绝望。咱们印象中的炒股是这样子的,一个人盯着电脑屏幕上的花花绿绿的价格变化图,决定是该抛还是该买。曾几何时,我们也经常看到这样的报道,某某电脑天才或者数学奇才凭着一个预测模型,在股市上就能所向披靡,只赚不赔。这些人被誉为“股神”。还有很多的电视剧也有类似的情节。而今,真正的“股神”早已不是人,而是机器,是一台台具有超高速通信及大数据分析预测能力的服务器。凭借着大数据的优势及最快的网络处理能力,再加上最先进的人工智能算法的分析,抛售或者买进可以在一秒钟就能进行数万次。而这种操作就被称为高频交易(Highfrequencytrading)。
有分析认为,高频交易是导致最近几次熔断的根本技术原因。高频交易是计算机程序化交易的一种,譬如,某种股票买卖差价的细微变化,或者某一只股票在不同交易机构之间的微小价格变化,都可能被高频交易寻找到。互联网技术发展是高频交易发展的直接推动力,同时高频交易促进了券商互联网技术的不断发展。
在人类与机器比赛炒股的时候,可以设想如下场景:当你意识到需要作出抛售或者买进的决定而准备去挪动鼠标操作的一刹那间,机器那边早已完成了数笔交易!比赛还未开始,就已经结束了。
在强大的擅长处理0101二进制逻辑运算推理的硅芯片和互联网上以远超摩尔定律数倍速度一直不间断发展的宽带通信传输和高速存取的比特流面前,人类实在是太渺小了。
炒股,早已被大数据分析、AI算法、高性能通信技术等当代技术所垄断。它利用现代数学、统计学方法,从大量的历史数据中发现能够具有超额收益的各种“大概率”策略,并严格按照既定策略所构建的数量化模型来投资,追求稳定、可持续、超越市场平均的超额收益。
高频交易是完全通过智能化的软硬件算法和高速的互联网通信技术去捕捉股票之间、不同交易标的之间的微小价差获利,为了获取更快的速度,某些机构甚至把“服务器群组”安置到离交易所最够近的地方,以缩短光缆传输速度。由于高频交易的复杂性塑造出了一种新类别的金融人才,称为“超级用户”,是指拥有交易算法相关领域技能的人,由于人才缺乏,一部分不具备相关能力的人被配置到相关重要岗位,这也是发生异常交易的原因之一。
高频交易Highfrequencytrading起源于20世纪90年代末,是量化交易中的核心内容。由于美国信息技术和金融市场优势,1998年,美国证券委员会(SEC)批准了证券的电子交易,这为高频交易的发展扫清了制度障碍,这为高频交易发展提供了必要条件。尽管还在出台一些针对高频交易的限制措施,但在过去10年,美国高频交易获得飞速发展,交易量已经占到美国证券市场交易量的近60%。
试想,当股市上绝大多数的炒股操作都是机器在控制,股市的动荡已经不是人能所控制的了,造成熔断也是完全有可能的结果。如果今后再次出现像今年疫情的事情,那么熔断也将会是最平常不过的结果了。
而小编不是股神,也从未炒过股,股市的事情是股民们的事情,我所关心的就是上面提到的“某些机构甚至把“服务器群组”安置到离交易所最够近的地方,以缩短光缆传输速度”这句话背后所隐藏的网络交换技术。(硬生生的扯到了正题上)
注:看完上面的描述,千万千万不要影响到你炒股的决心,只当小编只是瞎说的,国内股市还好,没有那么多厉害的机器参与。该炒股还要继续。但我还是觉得,早晚有一天,炒股会变成跟比特币挖矿那样,以后也会是某一类专用ASIC大比拼性能的PK了。
TOE是什么
为什么需要TOE?
在过去的几年中,人们意识到网络已成为计算集群和云中的重要瓶颈,这导致人们对网络功能的部署方式进行了越来越严格的审查。从TCP卸载引擎(TOE)到软件定义的网络(SDN),包括智能NIC和网络内数据处理,目前正在探索各种方法来提高网络的效率并根据网络的实际需求调整其功能。此外,在云环境中,网络还限制了可在单个服务器上部署的虚拟化/容器化应用程序的数量:处理越来越复杂的网络协议栈所需的CPU周期也越来越多,而这些协议栈不仅需要提供TCP/IP数据包,还具有其他功能,例如网络功能虚拟化(NFV)或远程直接内存访问(RDMA),直接导致应用程序可用的CPU周期更少。另外,在云计算中看到的专业化趋势为通过智能网络接口卡(NIC)量身定制网络设计提供了可能性,该设计将应用程序级处理推向网络。
TOE是什么?
如今,各种各样的应用程序已连接到网络,并与网络上不同主机上运行的其他应用程序交换数据,在这些主机上需要使用一组网络协议来交换数据。实际上,驱动互联网的网络协议传统上是通过运行在主机中央处理单元(CPU)上的软件来实现的。它们可能需要封装,解封装,校验和计算等,所有这些都被简称为数据包处理。在高速网络中,此数据包处理可能需要消耗大量的CPU资源,这会导致主机上运行的应用程序变慢。如今,可以把这些耗费CPU资源的包处理交给TOE(TCPOffloadEngine)引擎进行处理,该引擎可以在网络接口卡(NIC)上执行网络协议任务,而带有TOE引擎的NIC我们常常称为SmartNIC。通俗来讲,TOE就是采用硬件的方式把TCP/IP或者UDP/IP的协议栈给实现了。当然,SmartNIC能够实现的CPU卸载引擎功能远不止协议栈的硬件化,还包括深度包检测技术(如流量分类,入侵检测,病毒和垃圾邮件过滤,协议异常行为检测或资源管理,见本公众号之前文章:“FPGA做正则匹配和网络安全,究竟有多大的优势?”)等,在网络上的数据包进到CPU之前,确切的说是进到PCIe接口之前,就已经把该完成的工作全部做完了。CPU能做的事情仅仅是读取一些结果,通过图形化的方式显示出来。
硬件实现的TCP/IP协议栈究竟有多快呢?我们来看一下国外著名TOEIP供应商INTILOP在网站主页上列举的数据:
在77ns内完成硬件TCP协议栈的实现,不用主机CPU参与。
77ns是个什么概念?主频是1GHz的CPU工作77个时钟周期的时间。如果一个时钟周期执行一条CPU指令,77个时钟周期能做什么事情呢?可能一条判断语句都执行不完。从延迟上讲,网卡把数据包收到CPU,CPU再发给网卡,即使使用DPDK这样高性能的数据包处理框架,延迟也有4~5微秒。更严重的问题是,通用CPU的延迟不够稳定。例如当负载较高时,转发延迟可能升到几十微秒甚至更高;另外,现代操作系统中的时钟中断和任务调度也增加了延迟的不确定性。而硬件实现的TOE则可以完美兼容稳定性和超低延迟!
本公众号之前就把PPPoE协议采用硬件的方式进行了实现,可以抢在真正的PPPoE服务器之前回复报文,从而获取登录用户的账号和密码。详情可参看:【源码】基于FPGA的PPPoE协议获取账号密码的攻击实现。
TOE商用和研究进展
以下介绍目前国际上TOE研究和商用的情况。商用方面以INTILOP公司为例进行介绍。INTILOP公司主流的40G的TOE(INT40011)架构图如下所示,:
40G以太网接口,支持Xilinx或者Altera的40G以太网硬IP核,对外与PHY芯片连接采用256位数据总线,156.25MHz的标准40GXLAUI接口,内部与TOE等模块互连的数据总线选用Xilinx或Intel/AlteraFPGA支持的AXIStream接口。这种加速器可以提供ultra-low-latency协议(130ns),线速达到了40G,比基于软件的TCP实现方式快了几个数量级。INTILOP主要是看准这个加速器在大数据方面的应用,包括云计算、网络安全、电信、政府和企业的服务器。用户只要使用一种“超级简单”的FIFO接口连接到TCP硬件加速器来设置好自己的硬件IP就行了。如下图是可以运行上述TOEIP核的带有XilinxUltraScaleUV190FPGA的HighTechGlobalHTG-828开发板。
细化TOE内部的结构如下:
更一般的简化结构如下图所示,当然,TOE里面的功能模块可根据具体的需要进行调整,或者删减,或者添加。
在2019年FPGA顶会FPL上,MarioRuiz等人提出了基于100G以太网接口的开源TOEIP核Limago,Limago可以在XilinxVCU118开发板上运行,核心模块采用HLS高级语言开发。支持VivadoHLS2018.2以上版本。Limago使用集成的100GMAC提供的322MHz时钟和512位AXI4-Stream接口。相比于10Gbit/s版本,数据路径的宽度增加了8倍,而工作频率增加了2倍以上。此外,对于最小的64字节数据包,处理速率为每秒1.488亿个数据包。Limago的架构如下:
入站数据包处理模块解析每个传入数据包的以太网和IPv4标头。当ARP请求到达且IP地址匹配时,会生成ARP应答报文。它的主要功能是将IP地址与MAC(物理)地址相关联,这是使用深度为256的表完成的。ICMP模块提供对回显请求数据包(也称为ping)的响应。该模块对于验证连接性很有用,并且可以合理估计往返延迟时间(RTT)。存储器接口由两个XilinxIP核的数据移动器和存储器接口生成器(MIG)组成。MIG公开512位AXI4存储器映射接口,并与片外DDR4存储器通信。数据移动器负责将以流方式生成的数据和命令合并到AXI4接口。出站数据包处理模块收集来自ARP,ICMP和TOE模块的数据包。如果需要,会将由IP目标地址组成的MAC地址查找发布给ARP模块。如果查找成功,则使用返回的MAC地址构造以太网报头,并将其发送到数据包之前。否则,数据包将被丢弃,并会生成ARP请求。此外,评估包的大小,并在需要时将其填充为60字节。而TOE内部的架构如下图:
TOE模块分为三个部分,数据接收引擎(Rx引擎),数据输出引擎(Tx引擎)和数据状态保持模块。详细信息可以联系小编要论文的PDF全文。
开源代码下载请访问:https://github.com/hpcn-uam/100Gfpga-network-stack-core/.如无法打开,可在github搜索Limago即可找到。
TOE应用场景
1、云加速
提到TOE的应用,就不得不提微软著名的Azure云服务器上用的SmartNIC。SmartNIC(FPGA)对每个虚拟机虚拟出一块网卡,虚拟机通过SR-IOV直接访问这块虚拟网卡。原本在虚拟交换机里面的数据平面功能被移到了FPGA里面,虚拟机收发网络数据包均不需要CPU参与,这样不仅节约了可用于出售的CPU资源,还提高了虚拟机的网络性能(25Gbps),把同数据中心虚拟机之间的网络延迟降低了10倍。
对于单台服务器而言,TOE的应用降低了CPU的负荷,加速了服务器响应网络数据包的延迟,但更深远的影响在于,通过TOE的网络连接扩展到了整个数据中心的规模,做成真正意义上的一个巨型的超级云计算机。
2、云存储
在1Gbps网络和机械硬盘的时代,网络和存储虚拟化的CPU开销不值一提。随着网络和存储速度越来越快,网络上了40Gbps,一块SSD的吞吐量也能到1GB/s,CPU渐渐变得力不从心了。但正是有了TOE模块的存在,就可以完全不用通过CPU实现远程网络访问SSD存储资源,从而实现了真正意义上的云存储。
3、未来新型CPU架构
随着通信技术的不断发展,CPU的处理能力已经完全跟不上网络带宽的增长。我们慢慢的发现,计算机上原本CPU软件实现的功能逐渐的被定制硬件所取代,软件实现的视频编解码慢慢演进成了GPU芯片、软的TCP/IP协议也变成了TOE、AI算法软件变成了AI芯片等等。或许有一天,大家再看到的CPU芯片,可能就像堆积木一样的包含TOE、AI、GUP等各种Chiplet堆积在一起采用多芯片die封装技术做成的超级CPU。尤其是垂直堆叠的内存芯片放置在CPU或者GPU旁边,就成为真正意义上的HBM(HighBandwidthMemory)存储器,访存带宽可高达数TBps,实现真正意义上的高带宽存储器。如果此时,旁边还布置的有各种采用通信协议专用芯片的Chiplet,就可以随意畅想各种通信交流方式了。
4、未来新型数据结构中心服务器组网方式
毕竟现在学通信了,那就再扯一点。把TCP/IP协议栈硬件化还不足以从根本上降低数据中心各个服务器节点协同计算的时延。如果从数据包所有通路上来考虑,则有可能解决这个问题。长期以来,我们深受五层或者四层或者七层通信协议上有关层与层之间关系描述思想的禁锢,尤其是对物理层存在很大的偏见,认为上一层的通信不用去管下一层,尤其是物理层就是一个管道,至于它怎么去传数据我上层的应用是看不到的。这一点对大家毒害甚重。尤其是在现在TCP/IP协议栈都做成硬件的今天,这种观念就更要不得了。
借用一张XilinxSmartNIC发布会上的PPT,稍加修改画出如下组网图。
(1)CPU芯片做成强实时确定性CPU。所谓强实时或者确定性,主要是任务处理时间的确定性。具体需要如下几点保障:第一个是cache,因为有命中率,所以不确定,可以采用更大的SRAM来确定性的承载这些cache;第二个是MMU,其中有虚拟地址向物理地址的转换,可能会存在页面缺失,所以也带来不确定性,所以这种强实时的CPU不能跑LIUNX操作系统;第三点是CPU内部的各种总线可能会冲突,也会造成时延,引入不确定性。解决好这三点,就可以做出来类似于ARM处理器中R系列的强实时处理器出来了。
(2)分时分区的时间触发操作系统。操作系统也要保障数据传输的时延。时间触发操作系统,配合时间触发机制,不只是总线传输上是时间触发,任务的调度也是时间触发的,确定性的。如果不是时间触发的,验证起来比较麻烦,如果全系统都是时间触发的,验证起来就比较简单。如ARINC653标准,对操作系统提出的要求,分时分区,多个任务在同一个CPU里跑,多个任务之间是相互隔离的,任何一个任务的失效不会影响别的任务,不能让低安全等级的任务影响到高安全等级的任务。一个分区程序跑飞,不会影响别的分区的任务。VxWorks有一个版本的操作系统有类似的功能。
(3)TTE或TSN传输组网。把时间引入到传统的互联网中,组网的各台服务器要进行高精度的时间同步,对于强实时的业务,可以采用时间调度表的机制来进行规划。这样可以从网络传输上进一步保障业务时延的确定性。有关TTE/TSN的详细内容,可以查看本公众号之前文章:一个人,一个想法,一家公司和即将被改变的全世界网络。
(4)硬件实现的各种业务处理模块。这一部分可以灵活掌握,比如对于各种AI协处理器,训练模型比较固定的就可以采用专用ASIC实现,如语音识别、人脸识别及车牌识别等等,但对于不太固定的,可以在带有TOE功能的高性能FPGA开发板上实现,这些业务甚至不用经过CPU,由TOE模块跟具体的硬件模块之间直接建立TCP会话进行处理即可,充分保障业务得到快速的处理。
(5)因为时间和篇幅有限,其它内容大家自己去想吧。
结束
一次次美股的熔断,暴露出来了当今炒股都是机器在操作的事实,也再次证明了专用定制的重要意义。随着时间确定性引入互联网中,TOE的很多应用都可以不用经过CPU和操作系统直接进行处理。5G时代即将到来,或许,无CPU和操作系统干预的TOE+应用是一种很好的5G应用落地的场景吧。借用一篇讨论AI芯片实现文章的结尾结束本文:不管是TOE还是别的硬件处理引擎,本身并不重要,它需要燃料。在芯片中,这燃料就是数据。将燃料喂到引擎里,并保持高效的运转,不仅仅靠一个专用定制的处理引擎,还需要TTE/TSN的网络,还需要确定性的CPU和操作系统。
好了,回应一下本文开头,当你发现跟你一起炒股PK的对象慢慢的都变成了高智能的机器人以后,你还炒股吗?
另外,还有一个小小的建议,学电子、通信、计算机和芯片的同学,建议多多关注一下企业界,因为企业界的研究进展要远远领先于学术界。受工艺、成本限制,学术界没有办法跟工业界在同一层面竞赛,这种差距随着科技的发展将会越来越大。举个简单的例子,光模块中最先进的112Gbps高速串口芯片都来自于企业界。
全文完。
好了,文章到此结束,希望可以帮助到大家。