硬件体系结构中所有的一切都会被归结为缓存,这个思想是一本《精通正则表达式》的序言里面引用的,真正的作者是Sun的科学家Bill Joy,他的这个思想是很有道理的,计算机出现以前,几乎所有的机器都是自己完成所有的任务,即使有若干台合作的机器,它们离的也不远,并且耦合度及其高,因此本质上它们还是一台机器,可是计算机的出现改变了这一切,计算机系统几乎都是独立的系统,耦合性低了,从此一台机器分成了若干台,然而这只是机器本身的变革,对于人的使用来讲,人们所需要的并不是机器如何如何,更在意的是机器生产的产品,比如数据,人们当然还是希望造一台巨大的机器一次性完成这一切,只不过是因为这台巨大的机器成本太高了而只能采取计算机网络系统这样的分布式策略来分而治之。分布式的策略导致的直接结果就是疏远了产品加工的各个环节,产品不再一下子成为成品,而是要经过很多半成品的状态,如何尽量的减少半成品状态的个数,或者说如何尽量加快从一个半成品状态到另一个半成品状态所需的时间就成了整合分布式机器的重要问题,其实并不是计算机分布式系统遇到了这样的问题,早在汽车刚开始批量制造的时候就有这样的问题。之前,汽车都是定制的,可以说就是一台机器完成的,批量生产机器就是一种分布式的机器,于是产生了流水线作业系统,不再一个完成之后另一个再生产,而是将过程进程分割,这就是流水线作业,提高了机器各个部件的工作效率,这其实就是将过程再次进行分布式处理,以上的问题更加严重了,如此细微的流水线步骤都要考虑从一个半成品到另一个半成品状态转换的效率。
这些问题怎么解决呢?解决方案就是使用缓存系统,本质上就是尽力将所有的机器合并成一个机器,虽然不可能,但是尽力而为的将半成品进行合拢,使得它们离的不再那么远,下一个工作步骤或者称加工中的一个环节的机器可以最快的获得上一个环节的半成品,这就是缓存的本质。计算机缓存也是如此,比如一个处于拥有以太网卡机器上的进程需要发送一个网络数据包,首先要得到对端机器的mac地址,然而该机器并不是直接发送arp请求,而是首先在本地查找arp缓存,目的就是尽量忽略远端合作者的存在,尽量在自己这里完成一切任务。优先级就是远端是必不可少的,负责本端数据的输入,本端使用时,首先查看本端缓存,若不存在则向远端要,一旦要到则缓存。分布式硬件架构中远端永远都是最终输入源,缓存是一种尽力而为的整合措施,并不是绝对的整合,它只是为了满足作为人的希望整合的心理需求而确实带来了很大的收益,如果实现了绝对的整合,那么远端也就不需要了,分布式也就失去了意义。
既然缓存是硬件的根本,那么软件呢?软件的根本在于结构化和关系模型(特指计算机软件),目前的计算机硬件系统只提供内存和处理器,引申意义上还有硬盘,那么内存是一个平坦的寻址空间,如何在这个平坦的数据寻址空间构造出形形色色的软件,这就需要用一些结构将这个物理上平坦的空间分割成逻辑上有意义的结构,然后交由处理器去识别这些结构,当然处理器是不认识这些结构的,处理器之所以知道如何去处理这些结构是因为这些结构之间是有关系的,这就是关系模型的意义,比如当代大多数处理器中内置的字节,字,int,double等结构,通过这些内置的结构体,程序员构造出了自己的更复杂的结构,程序是什么,程序就是这些结构的相互作用。正如《精通正则表达式》的序言中所说,不管上层的软件多么神奇,归根到底还是处理字节序列,处理器在处理字节序列的同时识别数据结构并且产生软件应有的逻辑。