1998 年 10 月,曾有一间很小的 x86 处理器厂商,很低调的推出低功耗的低价位产品,但在 1999 年底,就闪电退出市场,转战嵌入式应用。某个晚上,笔者被某位在竹科工作的友人敲讯息:“你知道这颗 CPU 是靠台湾资金做出来的吗,听说老板还是台湾人”。
什么,真的还假的?
和台湾颇有渊源的 Rise
Rise Technology(华钜资讯)成立于 1993 年,由曾在 NEC 负责 RISC 处理器产品行销的林廷隆(David T.Lin)成立,位于美国加州圣塔克拉拉(Sata Clara,因为英特尔总部也在那边,时常昵称为“Satan Clara”)。
Rise 募集到的 3,000 万美元创业资金,主要来自投资银行(BT Alex Brown,Needham&Company)、风险创投(Draper Fisher Associates),以及包含个人电脑制造商(宏碁电脑)、芯片厂商(威盛电子)与晶圆代工业者(联华电子)等 15 个台湾投资者。
1993~1998 年,历经 5 年,Rise 美国总部累积了将近 100 名工程与行销团队,成员大都来自 Amdahl、HP、IBM、LSI Logic、MIPS、NEC、Sun 及其他业界知名电脑厂商,并在台湾新竹设立业务办公室。
这算是联电功败垂成的 x86 处理器产品线之后,以及威盛电子(VIA)购并 Centaur 与 Cyrix 之前,最具台湾色彩的 x86 处理器厂商。
有趣的是,根据 1998 年底的微处理器报导(Microprocessor Report),关于 Rise mP6 交由哪间晶圆代工厂商生产,那时 IBM、意法半导体(STM)和德州仪器(TI)都是榜上有名的候选人,最后还是统统交给台积电搞定了。
暗藏目标笔电市场的野心
与晚两年登场的 Transmeta Crusoe 相似,低功耗的 Rise iDragon mP6 打从一开始就寄望攻入英特尔垄断的笔电市场。这从两个地方可清楚看出端倪:原生 BGA 封装(称为 Turbo Thermal BGA,或简写 T2BGA),以及支援系统管理模式(SMM,System Management Mode),尤其后者对笔电厂商来说,特别举足轻重。
那么 BGA 封装的 Rise mP6 要相容 Socket 7 脚座?方法就是把处理器打在一片提供 PGA 296 针脚的载板(Interposer)上,这也让 Rise mP6 的外观相当与众不同。
英特尔在 80386SL 和 80486SL 处理器制定 SMM 的初衷,在于让笔电 OEM 厂商可自行定义必备的电源管理与周边装置管理,例如为了省电,动态关闭用不到的周边设备,需要时再重新启动等。英特尔在 Pentium 时代将 SMM 从“笔电专属的特殊武器”提拔成“所有产品的制式装备”,暗示英特尔认定笔电即将普及化的未来。
但反过来讲,既然 Rise 丝毫不考虑进军服务器市场,所以多处理器环境必备的先进可程式化中断控制器(APIC,Advanced Programable Interrupt Controller)就跟着付之阙如了。
顺道一提,相对于 x86 指令集在节区定址定义的 Ring 0 到 Ring 3 四层权限(数字越小权力越大),SMM 的权限经常戏称为 Ring -2,因 SMM 独立于真实模式和保护模式,干了哪些好事,连操作系统都不知情。那 Ring-1 跑到哪里去了呢?答案是 x86 硬件虚拟化技术,用来拦截“在使用者模式,仍会更动系统底层的危险指令”的那一层。
追求极致的架构性效率
论“追求每个时脉周期可完成的最大指令数”的“架构性效率”,相较于稍早的 Cyrix 和 AMD,Rise 直接提供和英特尔 P6(Pentium Pro、Pentium II、Pentium III)同等级的 3 个指令解码器,可谓有过之而无不及。Rise mP6 的内部执行单元规模亦不含糊,总计配置了 3 个整数逻辑运算器(ALU)、7 个 MMX 单元、与一个管线化的 x87 浮点运算器。
但大概为了控制成本,第一阶资料快取内存的总容量才区区 16kB,显得未免太吝啬了,只等于早期 Pentium 的水准,远不如同期对手。
Rise mP6 并不像 AMD K5 / K6 和 Cyrix M1 / M2,并未采取非循序指令执行,不禁让人联想起坚持“暂存器更名是魔鬼的工作”而拒而远之的 Centaur。
此外,Rise mP6 也不像 AMD K5 / K6 会将“将复杂的 x86 指令,转译为固定长度的 RISC 型态微指令”。8 阶指令管线中,也只有一个阶段用于 x86 指令解码,形同明显的瓶颈,讲白了就是对“激增时脉”这档事不感兴趣,这点极神似 Transmeta 的风格。
Rise mP6 设定的对手并非英特尔,而是同时期的其他 x86 小厂。从这个角度来看,Rise mP6 的晶粒面积有点大得夸张,也难以像英特尔,可让产品以高单价销售,获取丰厚利润。这也是除 AMD 外,英特尔的竞争者一间一间被迫退出市场的远因。
不过,Rise mP6 却有不少令人惊喜、今天看来还是让人觉得非常厉害的巧思。
以“自动撷取分支目标”(Automomous Prefetch)为例,无关现正执行的指令流,Rise mP6 可根据分支预测得到的指令流程,预先撷取最多横跨 4 条指令流的指令序列,只要预测正确,可大幅缩短撷取分支目标指令的延迟。这技术几乎是英特尔 NetBurst(Pentium 4)的“执行追踪微指令快取”(Trace Cache)和 AMD 推土机的“解藕式分支预测”(Decoupled Branch Prediction)概念雏型。
英特尔 NetBurst 透过“分支预测判断的实际指令流”,存放解码后的微指令(uOP)。如处理器重复执行相同的程式区段,无需重新从内存撷取指令并解码之。图中的案例,也恰巧是 4 个分支目标(T1-T4)。
AMD 推土机的分支预测机制与指令撷取单元“脱钩”,可锁定分支预测目标的相对位址,假使不存在指令快取内,就“主动出击”预先撷取,可掩盖发生快取误失时的延迟。并在 Zen 2 世代,替更耗时的机械学习分支预测器 TAGE“争取训练的时间”,大幅强化 AMD 处理器的分支预测精准度。
可能基于消费性市场的行销诉求,Rise 极度重视 MMX 指令集和浮点运算的执行效能,7 个 MMX 单元,最多可每个时脉周期执行 3 个 MMX 指令。管线化的 x87 浮点运算单元,可一并执行交换 x87 浮点暂存器堆叠的 FXCH 指令,这刚好是 Cyrix AMD 难以抗衡英特尔的大弱点。
Rise mP6 最有趣的特色,莫过于可将其中一个 ALU 的资料,同时传送到另一个 3 输入的 ALU。
功能非常简单易懂,假如要同时执行这两个指令,第二个指令需要第一个指令的 AX 结果,会导致管线停滞。
AX ← AX+BX DX ← DX+AX
但借由将原先的 BX 暂存器“转送”到 3 输入的 ALU,即可同时执行。
AX ← AX+BX DX ← DX+AX+BX
简而言之,Rise 经由简单的手段,解决单纯的资料相依性麻烦,或多或少弥补缺乏非循序指令执行的不足。
至于难搞到极点、连英特尔自己都承认“研发 x86 处理器的最高门槛”的“确保 x86 指令集相容性没有问题”,Rise 则外包给独立实验室 XXCAL。
还没开始就结束的第二代 mP6
1998 年 8 月 24 日发表内建 128kB 第二阶快取的 Celeron 300A(应该不少人还记得 300 超 450 的传奇故事),象征英特尔正式启动 P6 体系(Pentium Pro、Pentium II)彻底取代 P5 家族(Pentium)的转移战略。
所有对抗英特尔的 x86 处理器厂商,势必设法提高产品竞争力,毕竟在 AMD K7 出现前,没有任何一款长期依附在 Socket 7 脚座的 x86 处理器微架构,可正面迎击由内到外、每个环节都面面俱到的 P6。也因此,从 Socket 7 的 AMD K6-III 到 Socket 370 的 VIA Cyrix III,无不“加装”256kB 第二阶快取内存,Rise 当然也不能免俗。
按照 Rise 的原订产品时程表,预定 1999 年中发表的 mP6 II,将新增 256kB 第二阶快取内存,资料和指令存取延迟,仅分别 4 与 3 个时脉周期,只有 Celeron A(128kB)的一半。
唯一的隐患是:0.25um(250 奈米)制程时,预期中的 Rise mP6 II 晶粒面积,将高达 170mm²,与同样 256kB 的 Pentium II 不分轩轾,转进 0.18um(180 奈米)制程势在必行。Rise 乐观的预估,核心电压可压低到 2V 的 mP6 II,功耗可低于 10 瓦,整合式第二阶快取将减少对外内存存取频率,也间接让系统更省电。
但别说 mP6 II 了,1999 年 5 月 6 日公开的 0.18um 制程 mP6 PR333 / PR366,仅停留工程于样品阶段,Rise 就决定转变经营路线,改为专注于视讯机上盒与资讯家电,也在当年被硅统(SiS)购买所有处理器技术及相关知识产权。SiS 寄望在低价电脑市场,找出一条击败英特尔的途径。
Rise mP6 在 1999 年 12 月前退市,在 x86 桌上型处理器市场,昙花一现,如流星稍纵即逝。接着就如我们熟知的,1999 年 6 月 23 日降临,性能空前出色的 AMD K7,与接连爆发的 1GHz 时脉争夺战,注定了 x86 处理器市场,终究只会剩下两间大厂互殴的结局,最起码在服务器、工作站、桌机、笔电等领域,确实如此。
逃跑并不可耻且很有用
Rise mP6 并未就此消失,Rise 在 2001 年 COMPUTEX,展示 iDragon mP6-500MIPS IA 处理器,供电仅采用一般市售三号电池,即可播放 VCD 电影达数小时之久。在 2001 年 10 月 4 日问世的 SiS 550 系统单芯片系列,即整合了 mP6 核心,与源自 Cyrix MediaGX 的国家半导体(National Semiconductor)Geode 正面竞争。
随后 DM&P(瞻营全电子)将 SiS 551 重新命名为 M6127D,并以 mP6 为开端,发展了一系列 Vortex86 系统单芯片,也授权泰国的 Xcore 重塑成 Xcore86 品牌。
总之,这些厂商之间“互通有无”的细节,与错综复杂的关系,其实我们管不着,况且这部分可以考证的资料真的很有限,就别为难笔者了。但可以肯定的是:逃跑并不可耻且很有用。很难想像,假若 Rise 像 Transmeta 那样“硬撑”5 年,一直烧钱(如果还有得烧),会沦为何等悲惨的下场。
讲了这么多,Rise mP6 的性能表现,究竟是好是坏?坦白讲,有很重要吗?还不如瞧瞧谣传中藏在 mP6 里的“彩蛋”。谁说彩蛋只限于软件?
当初出身于新西兰的 Rise 主任工程师 Chris Norrie,据他所称,只要将代表新西兰(New Zealand)的国码简写 NZ,以 ASCII 码写入 EAX 暂存器,并执行 CPUID 指令,从 EAX 到 EDX 暂存器的内容就会出现他的姓名。最让他感到骄傲的时刻是:他写个几行组合语言做这件事,将暂存器的内容复制到内存,再呼叫 BIOS 将字串印出到屏幕。
可以瞒过整个工程研发团队和产品验证部门,将这个“硬件彩蛋”深藏不露的埋在处理器微码内,看起来好像满了不起的,哪位大恩大德能否测试看看这彩蛋是否属实?顺便看看 CPUID 的制造商代码,是否如微处理器报导所言,叫做“RiseRiseRise”?
(首图来源:Konstantin Lanzet (with permission) / CC BY-SA)