论文部分内容阅读
网络处理器的设计需要同时满足高数据包转发性能和高编程灵活性这两方面的需求。人们通常认为网络应用中不具备足够的局部性,加上网络处理需要具有确定性的时间性能,这使得大多数网络处理器中,传统的cache机制被开放式的存储层次和多线程机制所取代。但是,上述机制给编程带来很大困难、且会引起资源的浪费,妨碍了网络处理器的大规模应用。本文研究了如下基础性的问题:(1)在网络处理器的环境下,cache机制的行为是怎样的,它是否能以较低的代价换来网络处理器性能的提升,如吞吐量的提高和丢包率的降低?(2)如果cache机制确实是有效的,如何在已有的网络处理器产品的存储系统中使用cache方法,什么样的设计可以增进cache机制在网络处理器中的性能?本文的主要贡献是:(1)建立了评价cache机制在网络处理器中有效性的实验平台。实验结果显示,数据包处理中存在着可观的数据局部性,因而一个足够大的cache可以有效地减少存储器访问的次数、提高处理单元处于活动状态的时间比例。(2)建立了评价数据包到达模式对网络处理器性能影响的模型。实验显示,在真实的网络流量中,属于同一个流的数据包的突发性到达是普遍存在的现象。而cache机制和多线程机制均可以有效地缓解数据包突发到达对网络处理器的丢包率和吞吐量的影响;但是它们的效果在很大程度上依赖于线程分配方式。(3)提出了一种高性能并且简单易实现的路由查找缓存算法。该算法利用了网络处理器中普遍采用的开放式存储层次,在片上高速存储空间中缓存最近出现的目的IP地址的路由查找结果。实验表明,每个处理单元中只要维护少量的缓存表项,就可使网络处理器的查找能力获得有效的提升。(4)提出了一种网络处理器存储子系统中寄存器堆和cache机制的设计方法。寄存器堆的设计可以解决I/O系统的瓶颈问题。而称为Split Control Cache的部件则利用了流相关数据和应用相关数据不同的局部性特征,为这两类数据设置了独立的subcache。实验表明,与传统cache相比,该部件不仅可以显著地提高网络处理器的吞吐量,还可以保证足够的编程灵活性。