Mechanical Sympathy
这个短语描述了一种车手对汽车天生的感觉,也是Martin Thompson大牛的博客标题。从并发编程网Disruptor的介绍中注意到这个短语,再去品位Martin对它的简短阐述’Hardware and software working together in harmony’的确很有道理。在对任何语言的深入学习研究中,总逃不过对底层硬件的了解与学习,很多语言的特性、行为在硬件的角度去观察就很容易解释了;同时在追求语言的更高性能的过程中,也要更多去了解硬件的知识,让软件更加匹配硬件的特性、更好利用硬件的优化才能获得更高的优化效果。
概述硬件工程师的杰作
今天互联网的繁荣是站在硬件工程师的伟大杰作之上的,使硬件更加高效的一个途径是提高硬件的运行速度,另外一个途径就是让可以任务并行起来,随之而来的就是缓存、并发、同步等一些列设计和优化。现代计算机的异
步特性加之这些优化使得软件系统在多线程的情况下常常出现背离程序直觉
的情况。作为一个高级语言开发者了解硬件就是为去感受Mechanical Sympathy
,去了解硬件工程师的用心良苦从而让软件与硬件更加匹配。
讲故事要从开头说,在很早很早以前有一位叫图灵的先生画了一个盒子,这个盒子就一直把人们圈到了现在,这就是图灵机模型。
这个盒子有一条纸带和一个规则表格还有一个内部状态存储,当然还有一个用来读、写纸带的读写头。整个过程模拟了人类在算草纸进行运算的过程:在纸上写或擦除一个符号;将注意力从一个位置转移到另外一个位置。
言归正传虽然现代计算器体系还在这个圈圈之中,但是整体的结构已经变得极度复杂了。
下图是一个CPU的逻辑组成(物理上并不是都在CPU里),它作为整个计算机系统的大脑,负责着处理所有类型数据的运算工作(其实还有各式各样的协处理器帮忙),这也是软件工程师关注的计算机系统