Aug 4, 2005

Form is liberating


昨天又重读<人月神话>, 这次是英文版. 概念都已经很熟悉, 但原汁原味的感觉仍带来很多感悟. "Form is liberating", 如何理解? 为什么古诗词都要有固定格式? 作曲要讲韵律? 建筑要有风格? 而这些又能让大师们尽情创作传世精品? 中文版的翻译为"没有规矩, 不成方圆". 翻译不错, 但那是常用来教训孩子的话, 听起来刺耳, 不如就直译 "格式带来解放". 另 'Sharp tools' 译为'干将莫邪', 不知是指人指物, 不如直译为 '精工利器'.

话归正题. 和建筑业一样, 设计师的灵魂体现在整体的外观, 也渗透在每一个结构. 他必须了解每一种材料对整体效果和结构的影响, 尽管不需亲自施工, 但他动手的作品应能成为其他工匠的参照. 设计师定义好了风格, 其他工匠和设计师才可以解放思想, 创造又不破坏作品的完整.

和建筑业不同, 计算机系统不需要工人. 每个人都参与创造, 所以每人都要保证自己的作品符合系统的风格. Inferno 和 UNIX, Plan9 一脉相承, 大师 Dennis , Ken, Rob 等的风格就是我们要遵循的规范, 他们的源代码就是我们的典范, 我们的创造力不可破坏 Plan9 三原则, 即:

1. 所有资源都是文件.
2. 文件使用统一协议.
3. 分立资源统一在私有命名空间.

Aug 3, 2005

Small is beautiful


如果把软件比作衣服, 那我们还生活在19世纪. 为了向后兼容, 或传统或规范, 我们必须穿上三件套, 戴上高筒帽, 拄上文明棍儿. 更糟, 软件衣服在保持向后兼容的同时, 还会照顾人们的特殊需要, 有人爱远游, 有人爱打猎, 于是三件套有了内置背包和外挂枪套. 因为要大量生产来降低设计成本, 于是没有了正好合适的衣服, 于是每个人被迫花高价穿着这些去上班. 更糟, 常有人忘记了钱包是随手放进了哪个背包或枪套再也找不到, 而厂商已经声明 AS IS 概不负责, 还有人写傻瓜书 1234 教人们如何定位口袋, 破解扣子, 安放钱包, 再如何查寻是放在哪个口袋...

还好人们解放了自己的衣服, 在家老头衫, 上班牛仔裤, 海边比基尼. 大厂小厂, 大店小店, 衣服千变万化, 供人们随意搭配. 人们喜欢的是合适的衣服, 能自由搭配, 价格也不能贵.

小而专, 是 UNIX 传统的设计理念, 但当更多的人开始编写 UNIX 程序时, 从其它系统得来的思维习惯开始污染她, 于是有了网络系统和X 窗口系统和更多庞大复杂试图自成系统的系统, 每个系统不但内部结构复杂, 对外的接口也各自为政. 系统间不再能轻易的互联, 系统不再能轻易的裁减, 不再有刚好合适的系统, 而只是一大堆不同系统奇怪的堆积.

Plan9 重新回归了小而专的理念. 文件和管道是程序互联的基础. Plan9 进一步把所有可用的资源文件化, 又用频道使多个进程轻易互联. 这些使Plan9 程序开发和维护变得简单.

Inferno 进一步将程序代码变为可随时共享的资源. 专一的格式免去为不同体系结构重新编译的麻烦, 也保证了新的体系结构能立即使用现有代码.

Inferno 模块化的结构使每一模块只专注做好一件事, 用户又能自由组合模块, 裁减系统使之刚好合适. 统一的外部文件接口, 使用户能轻易的组织系统. 甚至只使用Shell 也可搭建完整的网络化图形界面程序!

Inferno 是一套很小很纯的系统, 不要污染她, 用心体会她的设计理念: 小即是美!

Aug 1, 2005

The revolution of evolution


从进化的角度看, Blackfin 已不再是一颗普通的DSP 或MCU. 它已经将这两个品种的优点揉合在一起. 定名为 MSA, 即综合信号体系, 具有非常强大的数字运算能力, 又有灵活的内存和中断服务. 统一精简的指令集使 Blackfin 无论从性价比还是使用方便上, 都超过分立的DSP和MCU.

为 了达到最大的定点运算性能, Blackfin 使用了十级流水线, 单周期的乘法指令, 双乘加器, 硬件循环和宽达160位的片内数据通路, 可以同时读取四条16位指令, 四个16位操作数, 将其两两相乘并累加, 再将一个32位的结果写回, 比如下面 ADI VDSP++ 的汇编指令:
a1+=r0.l * r2.h, a0+=r0.h * r2.l || r2.l = W[i2++] || [i1--] = r3

或对应的 Inferno 的汇编指令:
a2 + =r0 * r2;
r2.l.w = (i2)+;
(i1)- = r3;


这种体系结构为大量的DSP运算提供了必要的支持, 这不是在现有的MCU 如ARM上增加几条优化指令就能做到的.

同时, Blackfin 具备12通道的DMA, 两层15级中断, MMU提供的内存保护和缓存, 这些为编写复杂的控制软件和操作系统提供了可能. 已有大量的实时操作系统直接运行在 Blackfin 上, 包括Linux 2.6, 将 Inferno 移植到 Blackfin 上也没有任何技术问题.

其集成在片上的SDRAM控制器, 高速串口, 并口, 时钟, 甚至以太网控制器, 也为连接外设搭建完整系统提供了极大方便.

更让人钦佩的是, Blackfin 出色性能的背后, 是低廉的成本和很低的功耗. 这和现时片面追求高性能成为鲜明对比. 我们需要的是能满足基本性能的最便宜最省电的芯片, Blackfin 是最佳选择.