硬件优化与软件优化,两者看起来是两个概念。事实上,对于一款实体产品也好、在线工具也好,在优化的时候,通常需要从系统层次考虑两者关系。 硬件指作为机器服务的系统产出。软件指语义层面的产出。两者区别很大,有时候可能构成冲突,需要正确的形式化。并且这种形式化是与纯功能需求或功能语义的形式化无关的形式化。它是纯系统层次的形式化,是一种质量需求。 比如硬件有16个核,只要正确地调度了内存,使得所有的核得到充分的运转,比如说100%的运转,可以定义机器达到了最佳状态。如果说所有的代码执行都是不可再少或者说必须的话。也就是说,在语义的层面上来说,这些的确都是不可再优化的工作或者说被进一步抽象因而可进一步减少工作负荷的工作。 线程也好,流水线也好,系统的最终目的有两个,一是利用机器,二是向上提供服务。有时候单独利用机器就是其目的,大多数时候以向上提供服务为主。但是向上提供的服务可称为软件产出,这是另外一个系统,所以看上去产出优化并不是那么难做,因为你盯 着天上的星星并没有用,不管你怎么做的,你能做到的都仍然是机器产出,所以最大化机器产出也许是好办法。 但是只盯 着机器产出也会有问题,那就是需求可能是具有结构的。从机器角度来说的最佳产出或最大产出并不意味着软件的最大产出。软件的产出可能,比如,一是各需求间有水平方向上权重,二是有互相的依赖关系即内部的结构。也就是说彼此间还有约束,这样就要求对它们作出正确的形式化,然后由统一的运筹系统作出执行计划并且执行层严格遵循这个计划。 对于大多数系统,软件层的依赖可以先放下一边,这样我们便可以集中精力于硬件产出。毕竟如前面说过的,如果所有的CPU周期都是具有意义的话,那么显然我们的任务就是尽量使得机器满负荷运转,这也是最初的多进程设计的出发点(我并没有说这样是最好的结果,只是说,,这是个不差的的方向)。
|