关于软路由CPU慢的事情,得从原理上说

2023-05-22 19:27:26 31点赞 116收藏 41评论

不愿意看的就直接退,懒得矫情。

今天得首先带大家一起了解下CPU,其实手焊一个CPU并不是一件难事。主要是因为CPU内部就是一大堆的“门电路”。

关于软路由CPU慢的事情,得从原理上说

例如,上面的这个电路就是一个或门等效电路,无论E1或者E2谁是导通的状态灯都可以亮起来,也就是说无论E1或者E2是高电平,灯都可以获得高电平。

当然了,在计算机上或者说是在数字电路中一般的并不以灯光亮灭作为1或者0的表示,依旧表示的还是高低电平。这时候就应用了一个数字电路的基本元件——“mos管”。用mos管来替换电路中的开关和灯泡。

关于软路由CPU慢的事情,得从原理上说

mos管的三个极分别是:G(栅极),D(漏极)s(源极),当栅极上的电压大于一个mos管的阈值的时候,漏极就会导通,获得和S级一样的电压。这个电压在数字电路中就叫做“电平”,由高低不同的状态来区分,就代表高低电平。

关于软路由CPU慢的事情,得从原理上说

以此等效,利用不同类型的mos管就可以做成一个或门电路,当A、B输入至少有一个是高电平的情况下,Q获得高电平。也就实现了 一位的 A or B = Q 的关系。

与此类类同的,还可以做出非门、与门、与非门、或非门等不同的门电路结构。

关于软路由CPU慢的事情,得从原理上说

这些符号并不是一个元件而是一组基础的数字电路,当有这些基础的门电路后我们就可以利用二进制来计算二进制算法了。例如加法:

关于软路由CPU慢的事情,得从原理上说

这是一个四位二进制加法器,按照次序在A0、A1、A2、A3节点上输入代表A的二进制高低电平,在B0、B1、B2、B3上输入代表B的二进制高低电平,就可以在C0~C4节点上获得二进制A+B的数值。

不过大家能不能看出电路的问题?这个电路不能同时处理进位问题,例如A0和B0都是1的话C0应该是0,而有一个1进位到下一位。在这种电路中如果要计算4位加法就需要3个时钟周期。

当然了,进位的这个问题,还有其他的电路设计,例如超前进位加法器

关于软路由CPU慢的事情,得从原理上说

在计算的时候以电路的复杂性降低了对时钟脉冲周期的需求。只不过算的位数越多,电路就会越复杂。

这是加法器,属于CPU运算器的一个部分,当控制器给出计算指令并从内存提取出要计算的数据后,CPU运算器内的相应电路被激活,从输出端输出高低电平给到控制器,控制器再把高低电平的二进制值放入内存。

这就是CPU的基本原理了。

关于软路由CPU慢的事情,得从原理上说

在CPU内添加不同的电路,用来做不同的事情。而电路的激活编号也就是CPU的指令了。

其实,如果学过数字电路这件事iN都是多余讲。

乘法呢?

咱们都学过九九乘法口诀

关于软路由CPU慢的事情,得从原理上说

基本上4、5岁的小孩也会背诵乘法口诀表。

而不是 3*7 = 3+3+3+3+3+3+3= 21用3加7次来得到21这个结果。

在计算机上也是一样,00=0 01=0 10=0 11=10

这就有了乘法电路:

关于软路由CPU慢的事情,得从原理上说

先用口诀表来的出乘法运算的部分积,再来累计加出乘积。

这个东西叫乘法器,计算一个四位乘法需要9个时钟周期。

咱们的CPU,本身由这些通用的电路组成,根据指令完成相应的计算工作。也就是无所不能的完成咱们的计算任务。

但是,有一类设备,根本不需要在工作的时候压缩H265编码、也不需要去解压Zip文件包、还不用去处理Word文档、甚至也不需要去播放MP3音乐文件。仅仅是将一串二进制代码转换成另一串二进制代码。那么通用的计算电路就完全不需要了。只需要按照查表法进行二进制数据的转换就可以高效的完成工作。这就是专用的数字电路,例如硬件路由器上的NPU。

关于软路由CPU慢的事情,得从原理上说

大部分状况下专用路由器是由专门的NPU(Network Processing Unit)芯片来处理的,这些芯片的价格要比CPU廉价得多,运行的主频也比CPU要低得多,只完成极其简单的二进制数据转换工作。

关于软路由CPU慢的事情,得从原理上说

但大多数的时候是通过查表法来运作的。这就有点像咱们背诵乘法口诀表一样了,给出输入在第一时间就计算出输出结果。中间没有进位,也没有数字累加的过程。全部都是直接在电路级别上解决问题。这时候的速度就要比CPU快上几百倍了。

所以说,用一个软路由的CPU和一个专门用来做网络路由的芯片来比速度,其实是相当欺负CPU的。如果你能理解这个问题,就不会对软路由CPU处理网络数据的能力抱有任何幻想了。

当然了,NPU本身就仅仅处理网络数据,其他的数据完全无法处理。这就导致,很多专门的硬件路由器根本无法设置。

为了解决这个问题,在路由器里面设置一个CPU?如果这样想就太嫩了。

关于软路由CPU慢的事情,得从原理上说

早期的路由器的设置和调试是在控制台(console)界面中进行的。这是一个串行通讯界面,并没有CPU,仅仅是依靠固件对应的串口指令再次“查表”,将EEPROM存储器内的数值按照一定的参数传输到串口中。并安装串口的指令将特定的数据写入EEPROM中。你看似智能的东西,其实完全没有任何运算参与其中。

甚至这个习惯一直延续到10年前,在很多用浏览器登录到家用路由器后台调试的时候,你会发现路由器的调试页面是.asp的页面。

关于软路由CPU慢的事情,得从原理上说

asp本来是运行在微软IIS服务器上的Active Server Pages,属于微软的专有技术。但为什么出现在了路由器系统上了呢?意不意外?难道路由器里面还跑了一个带有IIS的Windows Server?

关于软路由CPU慢的事情,得从原理上说

其实,这还是在查表。只不过这次路由器将url的地址部分编码为MD5作为表数据的索引了。只不过当年很长一段时间,在自己的开发机上搭建一个ASP平台可以很方便的做页面的调试和捕获,这样路由器的很多固件就包含了已经编译(解释)好的ASP页面。

到了现在,很多家用路由器采用了软路由方案,在路由器内利用比如高通的CPU来处理网络信号。这才让路由器可以跑真正的系统。但是这种方案如果CPU芯片没有对网络传输数据做出特殊的优化,那么依旧是很慢很慢的软路由的范畴。

关于软路由CPU慢的事情,得从原理上说

而对比商业方案。现在高端的路由器也有一些有限的Web页面访问功能,挂接插件的功能。一方面是在NPU之外另外设置了一个CPU,另一方面则是还是在查表的过程中。只不过这种查表就有点区别了。一些高端路由器会利用FPGA芯片模拟出一台基本够用的CPU电路,完成简单的任务。但无论是哪种方案,CPU都不会直接参与到网络数据的传输编码工作中。

作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

展开 收起
41评论

  • 精彩
  • 最新
  • 这个说的不对,这篇文章所提的CPU似乎有点局限在x86架构的处理器了,ARM架构的处理器也是处理器,路由器想要工作,运行网络界面,调用存储单元,都需要有处理器参与,现在的SoC里也都是集成了CPU运算单元,不只是说只有处理网络部分的单元,软路由性能不足的地方在于它是通过软件、程序来处理网络数据,要过CPU,好处是可以做一些自定义处理,有些程序需要CPU的指令集(比如AES)这种情况下,软路由优势更大。软路由和硬路由的重点不是有没有CPU,而是在于软件处理还是硬件处理。

    校验提示文案

    提交
    是通用处理器和专用芯片的区别

    校验提示文案

    提交
    这作者大概只见过低端设备吧,建议好好了解一下电信级数通设备的架构,他说的这一套只是数通设备接入网很窄的一部分产品的架构。

    校验提示文案

    提交
    收起所有回复
  • 大佬,那我这么问,一个10年前的老电脑淘汰下来做软路由,cpu是二代i3,和现在市面上主流的一二百的家用硬路由比如小米华为之类,别问为什么,问就是买不起华硕 [苦恼] ,这两者做主路由的性能差距大么?谁优谁劣呢?

    校验提示文案

    提交
    首先从功耗上来说,家用电脑,尤其是很旧的电脑做软路由就已经不合适了。老式的家用机有太多用不到的部件在做软路由的时候还在开启耗电。其次效果并不比现在1-200甚至几十块钱的路由器强。

    校验提示文案

    提交
    功耗其实不在我考虑范围内,主要想知道效果差距大不大

    校验提示文案

    提交
    还有6条回复
    收起所有回复
  • 其实普通家用,除了小包转发外,高连接数对软路由也有很大的影响,比如挂BT,下那些热门种子,

    至于单纯的测速,其实不怎么考验路由器性能。至于富强的,其实参考下鸡场的普遍速度吧,没几个能跑满千兆的,即使能跑满,那绝对也是流量包很小的,实际使用没啥意义。

    校验提示文案

    提交

    iN在

    作者

    Ellis

    bt是典型的小包啊

    校验提示文案

    提交

    Ellis

    iN在

    作者
    BT是大包。BT是高连接数占路由器资源,PT党随便都是时刻保持上万个连接。

    校验提示文案

    提交
    还有1条回复
    收起所有回复
  • 自己没文化,没看懂,还气的够呛,还没坚持看完,费了

    校验提示文案

    提交
  • 普通上网软路由可以,但是需要小包转发多的环境就不适合了,路由器的转发效率是软路由的一倍甚至更多。

    校验提示文案

    提交
    大佬请问哪些场景是小包转发比较多呢?

    校验提示文案

    提交
    打网络游戏时候,对延迟比较敏感的情况。

    校验提示文案

    提交
    还有4条回复
    收起所有回复
  • 整挺好,先赞再接着看吧 [赞一个] [赞一个] [赞一个]

    校验提示文案

    提交
  • 赞一个,然后继续懵圈

    校验提示文案

    提交
  • 没听懂,但是感觉确实好腻害 [期待]

    校验提示文案

    提交
  • 没文化,看不懂啊,这个涉及数字电路和计算机原理了

    校验提示文案

    提交
  • 半点看不懂 [大囧]

    校验提示文案

    提交
  • 抛开终端和小包数量谈性能都是耍流氓罢了...所谓的很慢很慢软路由和线速转发飞起的硬路由,在一般中小型企业和家用领域几乎都属于无法感知纸面性能鸿沟的范畴,反倒是软路由比硬路由有更好的性能更多的功能以及更低廉的价格...毕竟就那点带宽整个NE5000E怕是还没个5105+350T4来的好使。

    校验提示文案

    提交
  • hjjkk

    校验提示文案

    提交
  • 原来如此 [跑步鸭_爱你呀] [跑步鸭_爱你呀] [跑步鸭_爱你呀]

    校验提示文案

    提交
  • 不错

    校验提示文案

    提交
  • 想请教下,感觉软路由富强没PC客户端快,有点奇怪

    校验提示文案

    提交
    如果富强用aes加密,软路由CPU又正好不支持aes-ni而pc的CPU支持aes-ni,那PC客户端快很正常,另外就看软路由上用什么富强客户端了,不同富强客户端之间还是有点性能差距的。

    校验提示文案

    提交
    我用的6500T和4765T按理都支持aes指令集,固件是esir spp [大囧]

    校验提示文案

    提交
    还有3条回复
    收起所有回复
  • 其实还是功耗比较关注

    校验提示文案

    提交
  • 收藏学习一下

    校验提示文案

    提交
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
116
扫一下,分享更方便,购买更轻松