本篇文章将带你了解 :
2018 年7 月26日,IBM 发表专文〈IBM i 30 Years: From Silver Lake to IBM i – A POWERful Story of Evolution〉,庆贺代 「Silver Lake」(银湖)的AS/400(Application System/400)30 岁生日。这不仅是虚拟化应用在商业市场首次重大成功,前身System/38 不仅是AS/400 的基础,更是「Co-Designed」(软硬件协同)虚拟机的真正源头。
说到「软硬件设计做双向最佳化,将软件视为硬件一部分」让虚拟机效能更好、更容易实现跨指令集的虚拟化技术,并非起源于全美达(Transmeta)的Code Morphing(2000 年)、俄国人Elbrus 2K的动态转译(2005 年)与IBM 的DAISY 研究案(1997 年),而是更古老的1980 年代。一如往昔,一提到蓝色巨人IBM 的往事,即可预期又是一场华丽壮大的计算机工业发展史与先进计算机技术的前奏。
▲「Co-Designed」(软硬件协同设计)虚拟机精神在「将软件视为硬件一部分」,两者互相最佳化以实现更好的效率与跨指令集兼容性。
IBM 家大业大,也很理所当然生出一堆满足不同市场需要的商用电脑产品线,不限大型主机、工作站和个人电脑,也曾推出琳琅满目的中端商用系统,如System/36、System/38(当时独特的48 位元定址与虚拟指令集)、IBM 8100(分散式资讯处理系统)、Series/1(与DEC PDP-11 对打的16 位元迷你电脑) 和IBM 4300(System/370 大型主机的低成本替代品)。
1980 年代初期,DEC的VAX在市场极受欢迎,IBM高层担忧这些互不兼容的产品线导致力量分散,难以与其对抗。因此IBM 在1982 年启动极具野心的「Fort Knox」计划,企图将上述所有CISC(复杂指令集电脑)架构产品线,统合至以IBM 801为地基、代 Iliad 的RISC(精简指令集电脑)处理器,且因维持回溯兼容性,还得将以上五个架构的操作系统统移植到新处理器。
事实证明这些看似「高瞻远瞩」的远大目标,都远超出IBM 的能力所及范围,不仅遭遇多次延误,随着计划演进和变更,先放弃对应IBM 8100和Series/1 的计划。更麻烦的是,IBM 发现不针对单一操作系统大幅更动Iliad 处理器,就难移植现有操作系统与应用程序,结果变成需「外挂」支持特定操作系统的辅助处理器,到头来反客为主,Iliad 处理器沦为配角,彻底违背Fort Knox 初衷,导致IBM 在1985 年取消计划。
▲ IBM 改弦易辙,将中端计算机分成System/36 与System/38 以闪避美国司法部控诉,等风头过了再整合成AS/400,充分印证简单道理:逃避不但不可耻且很有用。
接着就是IBM「金星(System/36)和火星(System/38)相撞」的传奇故事:Silver Lake 计划。不过在这之前,笔者得替各位复习时代背景:1970 年代,美国司法部控诉IBM 用「非法行为」淘汰竞争对手,那时IBM 正打算整合System/370、4300、System/32、System/34 和System/38。
想当然,假如树大招风的IBM 真这样干,无论成功与否还是当个「简 王」,87% 机率又会上演一出「本来想买CDC6600 的潜在客户会把预算留起来,等待完美无缺的System/360 Model 92 再掏钱,变相制造不公平竞争」的万年烂戏,届时IBM再想洗白都是不可能的任务。
所以当美国司法部提讼时,IBM 为了避风头,决定将中端计算机系统分成两个系列:适用大企业并「象征未来技术方向」的System/38(1978 年10 月24 日)和继承System/32 既有小公司用户「重视客户解决方案」的System/36(1983 年5 月16 日)。整并System/370 与4300 大型主机?想都不敢想,即使今天也做不到。
直到1980 年代后期,司法部撤销诉讼后,IBM 才敢「光明正大」再将System/38 和System/36,合并为本期文章的主角AS/400,林林总总,一切尽在不言中。
那代 「Pacific」(太平洋)、耗费八年开发、身为IBM 规模排名前三或前四大专案(第一名永远是伟大的System/360)的System/38,究竟有哪些独树一帜的创新技术?主要有四点:
▲「完全物件导向化」的AS/400 采用物件化存储器定址,应用程序透过「名称」存取不同物件,让客户可专注部署商业应用程序。
将技术细节束之高阁,IBM 为何要将虚拟指令集MI 以下所有代码称为微码?并视为硬件的一部分?
▲ 微码(Microcode)组成微程序(Microprogram)以产生控制讯 ,便于实作功能强大的指令,是CISC 的基础。但IBM System/38 和AS/400 体系,却有截然不同的定义。
说穿了,源头在1969年针对IBM 的反垄断案,导致IBM 被迫分开销售硬件和软件。透过将模拟与转译软件定义成「硬件」,IBM 就能把虚拟指令集MI 当作System/38的本机指令集,自由自在随着硬件演进修改真正底层指令集IMPI(Internal Microprogrammed Interface)和那些「微码」,管它是「处理器控制储存单元内、对应传统微码定义的水平微码」(HMC,Horizontal Microcode)还是「存放在系统主存储器、用来实作操作系统元件和整合式资料库的垂直微码」(VMC,Vertical Microcode),铺陈AS/400 从IMPI 迈向PowerPC的康庄大道。
顺便一提,参与System/38的主要工程师,除了日后将领导PowerPC 延伸架构「Amazon」的Frank Soltis,还包含Centaur 创办人Glenn Henry。没错,就是秉持「简单、迅速、便宜、暂存器更名是魔鬼的工作、谋略重于晶体管」信念,领导威盛电子(VIA)x86 处理器的前IBM 院士。
当Fort Knox 计划还在勉力前行,IBM 明尼苏达州Roschester研发团队,因认为Fort Knox 的失败将是无可避免的结果,启动非正式半秘密专案(这种不受正常管理约束的开创性专案一般都称为「臭鼬工厂计划」,源自洛克希德马丁二战时期的臭鼬工厂),试图让System/36 软件可执行于System/38 硬件,使两者融合成兼顾先进虚拟化底层架构与丰富商业应用程序的产物,让IBM 在最短时间内,拥有具竞争力的中端系统,并逐步转向64 位元和RISC 处理器。
1985 年12 月,也就是Fort Knox 取消后没多久,计划就正式命名为Silver Lake(银湖,当地小型水库)。1986 年1 月,严寒的Roschester,「金星人」和「火星人」就这样相遇了,System/38 研发团队很快就重视解决方案至关重要的事实(System/36 强项),System/36 研发团队则欣赏虚拟化技术的强大功能(System/38 长处)。
▲ IMPI 或PowerPC-AS 才是AS/400 的底层指令集,上层则是TIMI / MI 虚拟指令集。
Fort Knox 虽腰斩,但也并非一无可取,Silver Lake 本质上是System/38 的硬件演进,大量沿用当初为了Fort Knox 开发的部分技术。无独有偶,IBM 在1986 年上市、兼容System/370大型主机的9370,原先定位成「中端系统首选」的「VAX Killer」,却因缺乏市场所需应用软件,并未取得预期商业目标,唯一争取到的只有「不想花大钱养System/370」的客户,而9370 也重用Fort Knox 计划开发的辅助处理器为主处理器。
1988 年6 月21日,IBM 宣布Silver Lake 正名为AS/400 系统,执行OS/400 操作系统,相较前身System/36 和System/38,成本更低、功能更强大,并同时公布超过2,500 个应用软件,创当时软件业纪录。
从1998 年8 月开始销售,1990 年底IBM 就售出11 万台AS/400,到1994 年,IBM 总计出货高达25 万台AS/400,1997 年累积至50 万台。之前System/38也只不过头五年卖出2 万台,堪称前所未见的丰硕战果。
1993 年,IBM 面临可能拆成几间公司的危机时,比尔盖兹评论,微软对IBM 唯一感兴趣的就是AS/400 部门,可见其商业价值。
1990 年,Roschester 研发团队着手将AS/400 继承自System/38 的48 位元IMPI 指令集,扩展为96 位元C-RISC(Commercial RISC),维持兼容IMPI 的前提之下,针对计算密集型商业应用,新增类似RISC 与VLIW(超长指令集)风格的新指令。
但问题来了,既然IBM都大费周章让操作系统和底层处理器指令集彻底脱钩,干么不直接沿用IBM 801 遗产的结晶:Power 处理器呢?
System/38 主要设计者之一Frank Soltis 应IBM 高层要求(Glenn Henry 则在1988 年离开任职21 年的IBM,转战Dell 任首任研发部门副总裁),提议扩展64 位元PowerPC,以满足AS/400 需求的Amazon 计划(后来称为PowerPC-AS)。
IBM 最初企图以Belatrix 计划开发可同时用在AS/400 和RS/6000 的PowerPC处理器,但因野心过大放弃,转而衍生出连续数款RS64 处理器,造成IBM RISC 指令集版本分裂:Power(RS/6000)、PowerPC(IBM RT/PC、Power1、Power2、Motorola M88x00 集大成)、PowerPC-AS(AS/400)。
▲「商务」PowerPC-AS(AS/400)、「工作站」Power(RS/6000)和「个人电脑」PowerPC,到了Power4 支持的Power指令集架构2.0 才统一。
原本System/38的MI 虚拟指令集改名为TIMI(Technology Independent Machine Interface),之下「当成硬件的软件」模拟转译层,转移至PowerPC 后,统一定名为SLIC(System Licensed Internal Code),前者意谓「允许应用程序可享受软硬件的进步而无需重新编译」,后者代表「IBM 不再使用微码这种自欺欺人的名词当作烟雾弹」。
毫无疑问的,移植到PowerPC 势必重写TIMI 以下大多数功能,IBM 为此聘请数百名C++ 程序设计师,重写超过200 万行C++ 代码。
▲ IBM i 操作系统架构最重要者莫过于虚拟指令集TIMI 与模拟转译器SLIC,而古老的System/36与System/38 应用程序依旧可继续用。
自AS/400 问世,IBM 不断重新设计并命名平台,以下是历经的重大里程碑:
▲ 对IBM 和客户,Power4 最重大意义并非原生双核心,而是「总算」出现可以通吃IBM 所有RISC 指令集的产品了。
▲自IBM 801 一脉相承的Power 指令集,1990 年代初期因AS/400e 和PowerPC 分裂,耗费超过十年才再度统一。
从1965 年ACS(和假想敌CDC6600 同为RISC雏型)、1974 年IBM 801(明确定义RISC 样貌)、1985 年「Amercia」(超标量流水线)、1986 年RT PC(尝试将RISC 投入工作站市场)、1990 年RS/6000(Power)、1993 年PowerPC、1995 年AS/400e(PowerPC-AS),直至今日,一路走来,建构了蓝色巨人IBM 超过半个世纪的伟大RISC 发展史。
这里还不提那些默默消失在历史洪流的「RISC 诸神」(MIPS、SPARC、Alpha、PA-RISC)。
每当笔者看到因ARM和RISC-V 崛起,才在那少见多怪大惊小怪的「新兴RISC 支持者」,讲得好像RISC 仿佛横空出世、多伟大的发明,摇头叹息之际,也只能继续无声干笑了。
▲ RISC 并非21 世纪才横空出世的伟大发明,早在1960 年代就以CDC6600 和IBM ACS 为出发点,走了超过半个世纪的漫长路程。
之后我们将一窥超标量流水线(Superscalar)缘起,但这次就不是IBM 唱独角戏了,「x86 双雄」和Motorola 等CISC处理器厂商的戏分,将远超过各位的想像。
推荐:回顾历史梦幻处理器系列
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!