有一天女票拿出来这么一个东西问iN“这是啥?”
这东西叫做网卡,但是似乎现在已经有很多人并没有见过了。
现在大多数人使用计算机的时候往往都会直接将网线接入到计算机主板网口中。
所以很多人对于网卡的概念几乎是不存在的。这些人只知道——哦连上网了。
但对于网卡的具体运作方式还是不清楚的。
在本世纪初期,也就是大约20年前,随着南北桥的技术出现,一些计算机系统的设计方案中低速的连接例如USB、串口、ISA接口都被分到了南桥芯(ICH,IO路径控制器)片来处理,同时南桥芯片本身有一定的处理和标记能力因此,在南桥上标记设备的MAC地址就成了可能。
能标记MAC地址其实就已经完成了网络的数据链路层的工作了。
于是为了更加集成化主板的功能,很多厂商就开始在主板上安排上了一个一枚网络芯片:
其实,这枚芯片是物理层设备(PHY),比数据链路层要低一个等级。主要负责网络信号的收发,并不进行网络信号的处理。
它的引脚会直接引入到我们的RJ45接口上面,甚至网卡接口上的LED灯也是这个芯片提供的闪烁信号。
那么网络数据谁来处理呢?——自然是CPU了。这也是解释了为什么iN在之前那篇怎么测试网络速度的文章中提到的,CPU速度不够会导致网络性能降低。
而高性能的独立网卡,本身上面并不是题图那种只有一个芯片的网卡。
而是上面布满了各种不同的芯片,这些芯片不仅仅负责了物理层链路的信号建立,还替代CPU在做MAC地址的标定和处理、网络数据的缓存、数据帧的封装等一系列的工作。一句话——专业IT设备上没有一个电阻是没有用的。
独立网卡的速度和任务负载也就和CPU并没有太大的关系了。
同时,我们来看一下现代系统的结构:以Intel为例子,传统意义上的北桥芯片现在已经集成在了CPU之内,同时CPU对外引出几十条PCIe的通道。传统意义上南桥也变为了“平台路径控制器”(PCH)
这里有什么问题呢?这种体系结构下,快速通道都直连在CPU上:
类似于你的显卡、内存等需要大量带宽的设备,都是直接接在了CPU上面
而为了让主板上能接入更多的设备,则分给PCH一个固定量的PCIE通道,例如8条PCIE通道,让接入PCH的设备共用这些通道传输数据。
这样一来,你接在PCH上的网络芯片本身就分配不到多少带宽了,例如一个8X的PCIE 3.0的通道,只有8GB的带宽,看似即便是10Gbps的网卡你也可以很轻松的跑满,只不过,这个公用带宽还要分给硬盘、USB等设备来使用,这时候你的系统就会出现带宽瓶颈。
而且你的网络设备接收完了网络数据要送去哪里?还是CPU,这时候事情就更有意思了,这些来自网络的带宽需求不仅仅挤占你的“外车道”,还会一并挤占你的“内车道”。
对于普通的用户的个人计算机来说,通常网络的传输流量比较小,但是如果一台电脑被用作NAS等生产力工具,在一个工作组内为多人提供视频剪辑、文件存储等服务。这时候接在PCH上的内置网卡效率就捉襟见肘了。
应该做的,就是要部署一个真正的独立网卡了,让它绕过PCH直接向CPU传输数据。
这就是一个“看地图”的过程
在很多主板的说明书上都会给你注明每条PCIe插槽的上有设备或者是共享设备,在生产力工具里面,你唯一要做的就是均衡直通CPU的PCIe插槽的使用取舍,让流量大需求带宽大的设备尽量的使用CPU直通通道,而让一些流量需求小的设备来使用PCH的通道。这样你才可以在一台计算机上真正的跑到10G、40G甚至100G。