一直有人认为服务器领域龙芯16核甚至未来的128核CPU性能是能够媲美J1900这种atom,但实际上是欠缺专业理解的,龙芯20年来一直依赖桥片实现pcie,但其桥片的pcie性能只能达到20万pps,这样的性能和2001年的845pe性能相当,都只能满足百兆网卡性能需要。并且nas服务器和主流服务器有一些不同,入门级nas服务器用户通常有使用usb移动硬盘的习惯,而usb总线属于轮训总线,桥片pcie网卡工作时会导致hub模式的南桥usb饿死,致使移动硬盘在nas环境工作时经常掉线。因此后来intel的入门nas cpu方案都有集成pcie,在买网卡送cpu的nas入门服务器 j1900上可以达到4兆pps的同时usb依然稳定不掉线,这个性能相当于龙芯的20倍,在20元e5v1洋垃圾上更是可以达到40Mpps,相当于龙芯的200倍,因此龙芯应该明白自己的天花板将竞争对手设置为奔四,而不是j1900这类跨越数量级的对手。
以上是之前的理解,但自从龙芯爆出pcie体系结构缺陷后,龙芯不如奔4的认知再次被刷新,通过龙芯对其pcie bug的解释可以发现龙芯可能没有搞定xAPIC规范,以至于无法实现多核分载处理中断并多核提交DMA这一项历史硬件基本能力,xAPIC最初是在双路奔三时期引入,来缓解1998百兆网络体系结构的缺陷,在奔4时期逐渐完善,目前该规范在2012年已演化到x2APCI,目的是让多核CPU可以分载中断,提高设备驱动的并发DMA性能,在服务器平台,他是多队列真千兆网卡(2004年的82574)技术的基础硬件特性保障,以便于实现多CPU负载均衡,协议栈并行加速等特性,是目前万兆十万兆四十万兆网卡实现sr-iov dpdk等技术的基础技术保障之一,显然该技术对服务器领域的影响比桌面领域的影响重要的多,因为真千兆网卡的dma规模通常是显卡vulkan的100倍左右,十万兆网卡的dma需求甚至是显卡的4个数量级,因此不支持xAPIC的CPU理论上是无法发挥真千兆网卡性能的,甚至也无法满足百兆网卡的dma性能需求,通常认为cpu的每核中断性能上限在4万,百兆网卡要做到0丢包则需要4核CPU(这是阿里云腾讯云的百兆高性能服务器通常建议4核以上的原因),但前提是cpu要能支持xAPIC实现多核分载中断,显然龙芯爆出pcie 缓存一致性bug后的解释让人怀疑龙芯这样的cpu是不是能实现百兆网卡0丢包这一高性能服务器基本要求。
再看AMD显卡驱动补丁在龙芯平台的实现可以发现AMD显卡驱动在龙芯平台实现DMA时面临严重的缓存回写一致性问题,这导致在龙芯平台性能和蓝屏要做二选一,DMA缓存回写在现在CPU上是不必要的,只有在奔四以及之前的CPU才存在,只是当时的CPU缓存都很小,所以问题不严重,直到第三代奔四的出现这一问题变得越发严重,这也是当年奔四越进步,游戏越卡顿的真凶,可能游戏上表现不会很直观,但是声卡的问题就很严重了,当时的创新声卡在带有大L3的奔四上出现爆音不连续问题,后期驱动解决方案是加大DMA缓存,但是延迟就倍增了,所以当时出现了第三方的KX 游飘驱动,这个驱动的目的是降低延迟,但问题是经常蓝屏,这一问题显然被龙芯继承了,龙芯的问题是他的L3是奔4的10倍以上,再加上要实现4核DMA并发回写,那么在L3回写规模上就是奔4的40倍,这显然会让L3成为系统的累赘,要知道创新声卡的dma规模大概也就数百,而百兆网卡的dma规模在14万,所以在有比奔4严重40倍的L3回写障碍的龙芯上,百兆网卡是不是能真的0丢包令人怀疑。
所以龙芯这样的cpu服务器或者网络存储领域应该必然会碰到难以逾越的技术大坑。
以上是之前的理解,但自从龙芯爆出pcie体系结构缺陷后,龙芯不如奔4的认知再次被刷新,通过龙芯对其pcie bug的解释可以发现龙芯可能没有搞定xAPIC规范,以至于无法实现多核分载处理中断并多核提交DMA这一项历史硬件基本能力,xAPIC最初是在双路奔三时期引入,来缓解1998百兆网络体系结构的缺陷,在奔4时期逐渐完善,目前该规范在2012年已演化到x2APCI,目的是让多核CPU可以分载中断,提高设备驱动的并发DMA性能,在服务器平台,他是多队列真千兆网卡(2004年的82574)技术的基础硬件特性保障,以便于实现多CPU负载均衡,协议栈并行加速等特性,是目前万兆十万兆四十万兆网卡实现sr-iov dpdk等技术的基础技术保障之一,显然该技术对服务器领域的影响比桌面领域的影响重要的多,因为真千兆网卡的dma规模通常是显卡vulkan的100倍左右,十万兆网卡的dma需求甚至是显卡的4个数量级,因此不支持xAPIC的CPU理论上是无法发挥真千兆网卡性能的,甚至也无法满足百兆网卡的dma性能需求,通常认为cpu的每核中断性能上限在4万,百兆网卡要做到0丢包则需要4核CPU(这是阿里云腾讯云的百兆高性能服务器通常建议4核以上的原因),但前提是cpu要能支持xAPIC实现多核分载中断,显然龙芯爆出pcie 缓存一致性bug后的解释让人怀疑龙芯这样的cpu是不是能实现百兆网卡0丢包这一高性能服务器基本要求。
再看AMD显卡驱动补丁在龙芯平台的实现可以发现AMD显卡驱动在龙芯平台实现DMA时面临严重的缓存回写一致性问题,这导致在龙芯平台性能和蓝屏要做二选一,DMA缓存回写在现在CPU上是不必要的,只有在奔四以及之前的CPU才存在,只是当时的CPU缓存都很小,所以问题不严重,直到第三代奔四的出现这一问题变得越发严重,这也是当年奔四越进步,游戏越卡顿的真凶,可能游戏上表现不会很直观,但是声卡的问题就很严重了,当时的创新声卡在带有大L3的奔四上出现爆音不连续问题,后期驱动解决方案是加大DMA缓存,但是延迟就倍增了,所以当时出现了第三方的KX 游飘驱动,这个驱动的目的是降低延迟,但问题是经常蓝屏,这一问题显然被龙芯继承了,龙芯的问题是他的L3是奔4的10倍以上,再加上要实现4核DMA并发回写,那么在L3回写规模上就是奔4的40倍,这显然会让L3成为系统的累赘,要知道创新声卡的dma规模大概也就数百,而百兆网卡的dma规模在14万,所以在有比奔4严重40倍的L3回写障碍的龙芯上,百兆网卡是不是能真的0丢包令人怀疑。
所以龙芯这样的cpu服务器或者网络存储领域应该必然会碰到难以逾越的技术大坑。