PLC速度和内核算法哪个更重要?
在一次技术澄清会上,多家自动化厂商同台献艺。施耐德和GE纷纷攻击AB PLC主频慢,这个时候我只是笑了一下,这些技术工程师在什么也不懂的情况下就拿着那些苍白的数据说事,客户被忽悠的认为CPU最快说明PLC执行速度就最快,就能干更多更复杂的事情,我只能给他们解释一款PLC设计中最重要的不是CPU的速度而是固件操作系统的算法优良和稳定性,在这各方面AB是最好的。
下面我讲举例说明一下。 我们来比较两种排序算法:「插入排序」 和 「归并排序」 。他们的算法复杂度分别是 O(n2)=c1n2 和 O(nlogn)=c2n lg n。一般情况下,归并排序算法有一个更大的常数因子,所以我们假设 c1 < c 2。 为了回答你的问题,我们在一台高速昆腾PLC A 上跑「插入排序」算法,和一台古老AB PLC5 B跑「归并排序」算法做对比。 我们假设: 输入的问题数据量为 1,000万个数字:n=107; A 一秒钟可以执行 1010 次运算指令 ( ~ 1GHz ); B 一秒钟只能执行 107 次运算指令 ( ~ 10MHz ); 常数系数 C1 = 2 (有点夸张),C2 = 50 (比现实中稍微小了一点) 于是在以上假设下,我们得到如下结果: A : 2⋅(107)2 次运算1010 次运算/秒=2⋅104 秒 B : 50⋅107lg107 次运算107 次运算/秒≈1163 秒 所以你看,那部慢了100倍的PLC,干活速度是快的那台的17倍。而且在现实中,归并算法有更高的效率,特别是随计算量增加的而更加明显。我希望这个答案能回答题目中的问题。
然而,这还不光是算法复杂程度的问题。在今天,单单想通过提高CPU主频来获得很明显的性能提升是不可能的。我们需要改良算法在多核CPU架构下的表现。而且这是个不太好对付的问题,因为随着内核数量的增加,其他方面的开销正在成为性能的障碍(比如内存访问调度控制)。所以,堆硬件很难获得线性的性能增长。
总结一下,对于工业控制来说,固件算法的优良是至关重要;CPU的运算能力在脱缰野马一般增长的需求面前,只是单纯吹捧CPU的速度丝毫没有任何意义。