当cpu的运行速度达到极限后,这个世界极其需要分布式硬件,和分布式操作系统。
什么教分布式硬件呢?就是说,cpu(在分布式系统,cpu这个东西应该会改名字,叫计算核心,可能更好些,但是为了大家有一个理解的共同背景,暂时还叫cpu)可以无限扩展的。cpu怎么能无限扩展呢?当然可以,当今互联网中的主机数量不是在无限扩展吗?
借用互联网的思想,我们完全可以把互联网放到主机里面!让主机内的硬件链接成一个网络,那自然可以让cpu无限扩展了(前提是,只要你有个可以无限大的机箱)。
把互联网放进机箱中,让cpu无限扩展,有3个核心的东西。一,硬件链接协议。二是真正的分布式操作系统。三把任务并行化。
硬件链接协议,PCIe就非常不错,开了个好头。完全可以在PCIe的基础上进行扩展,支持多cpu,多设备互联。
当多cpu互联后,内存也要分布式的,把现在的8G的内存条可以分解为8个1G的小内存,放在cpu的近的地方。这样cpu与内存的速度相对不那么重要了,因为没有核心的cpu,所有的cpu都可以就近访问内存。
分布式操作系统和任务并行化,非常接近。实现这两条的关键,要重新改造我们编程世界观。不在以过程式和函数式的方式构造世界,在并行的世界里,要把所有的任务分类,哪些是并行的, 哪些是串行的。
这实际上是一种哲学观点。大型任务在绝大多数下都是可以分解成小任务的。每个小任务,可以分配一个计算核心。这样就可以实现并行化了。
这样的话,主机内就可以容纳各种异构CPU,只要遵守相同的硬件协议,它们就能配合工作。
软件工程的思想要有一个大的改变,由面向函数、面向对象、面向过程改成面向任务编程。一个软件被分解了一系列的小任务,小任务之间的通信。一定进行编码(协议化)。只要遵守相同的协议,软件也是可以无限扩展的。
原文地址:https://www.cnblogs.com/rootcn/p/10534522.html