简报时代背景:距笔者打字时将近二十年前的2001年秋季微处理器论坛 (Microprocessor Forum),AMD技术长Fred Weber正式对世界揭露了其64位元x86指令集的全貌,也变相宣告了AMD盛世的来临。时至今日,64位元
简报时代背景:距笔者打字时将近二十年前的2001年秋季微处理器论坛 (Microprocessor Forum),AMD技术长Fred Weber正式对世界揭露了其64位元x86指令集的全貌,也变相宣告了AMD盛世的来临。
时至今日,64位元x86指令集—姑且不论叫做Intel64、AMD64还是x64—已经历经将近二十年的光阴 (当笔者打字的时候),时下绝大多数作业系统与应用程式也几乎64位元化,像nVidia更在2018年4月就宣布停止提供32位元驱动程式。本期简报王就带着各位科科回到AMD公开x86-64指令集的现场。
x86指令集一直有着缺乏资料暂存器的宿疾,无论是整数逻辑运算、浮点运算、与SSE/SSE2都只有八个,而会破坏一个运算元 (如暂存器或某个记忆体位址) 资料的双运算元格式 (例如A = A + B,原本的A资料会被盖掉) 更让这个问题雪上加霜。反观以目标高效能应用的RISC指令集,如Power、SPARC、Alpha、PA-RISC、MIPS、以及ARMv8,清一色都是标準32个暂存器以及三运算元格式 (C = A + B),像Intel IA-64更是多达128个暂存器 (但这也是难以大幅提昇Itanium处理器时脉的潜在障碍)。
AMD透过删除INC/DEC指令,硬是挤出空间实作REX prefix,提供64位元模式新增暂存器的指令编码空间,让x86指令编码中所有可标定暂存器的3位元栏位,都扩展到了4位元,只要指令多出了REX Prefix这1个Byte,64位元x86处理器即可享受到倍增的资料暂存器。
所以当这张简报登场时,不难想见众人兴奋的心情,即使还是明显比不上那票RISC指令集。
不过,作业系统与应用程式不一定会用到新暂存器,代表REX并非「必备品」,当启动新暂存器时,REX会无预警增加指令长度,提高最佳化指令解码器设计的困难度。AMD发表x86-64时很多人拍手叫好,但实际上因过度重视对32位元的相容性与最低的硬体修改成本 (K8是由K7延伸出来的产物),AMD的扩充手段并不乾净俐落,日后也同时造成所有 (实质上也就剩下那两家) x86处理器厂商的困扰。
唯一可以肯定的是,微软在这件事狠狠的捅了Intel一刀。在2002年微软深陷反托拉斯风暴,时任AMD执行长的Jerry Sanders在法庭作证与微软Bill Gates的电话对谈内容 (还曾公布在微软网站),坦承当AMD得知微软不打算同时支援两套不同的64位元x86指令集,暗示「如果微软选了Intel,AMD就出局」,希望以推出Windows CE对应处理器 (Geode系列) 等条件,说服微软不要选择Intel的64位元备胎 “Yamhill”,冀望藉此让AMD的市场佔有率从20%跃升至50%,与Intel平起平坐。
Intel自家的64位元x86指令集 “Yamhill” 的原始样貌已不可考,装死中的笔者也没闲功夫去探勘堆积如山高的专利史籍,但光凭AVX带给世人的印象,有如克劳赛维兹「战争论」唯一定稿的第一章,光靠想像即可深信Yamhill绝对比AMD x86-64紧緻有条理,且具备更佳的实作性与扩充性。Intel在迈进二十一世纪时,一同搞砸Itanium和NetBurst,再被微软在x86-64补这一枪,让他们花了近十年才从AMD手上夺回战略主动权。微软手上握有作业系统大权的讲话份量,由此可见略见一斑。
首款支援x86-64指令集的K8 “Hammer”处理器整体架构,最大亮点还是整合DDR记忆体控制器与HyperTransport汇流排。
请各位科科多多仔细盯着不同区域的颜色,因为这和后面解释管理运作流程息息相关,这也是複习计算机概论和了解指令管线运作细节的好机会。
管线分成四个区域:撷取指令、执行指令、存取L2快取、存取主记忆体。
从L1指令快取撷取指令并解码成微指令。
执行单元在执行微指令时,也同时会动用位址计算单元 (AGU) 和存取L1资料快取。拜x86指令集有着非常複杂的定址模式,如何实做出高效能的位址计算器,一直是研发x86处理器的大麻烦。
存取L2快取时,透过标籤 (Tag) 获得所需资料区块的内部位址。后面就都是强迫大家回想起快取记忆体原理的内容了。
记忆体控制器内建在处理器内部,不仅缩短处理器核心存取记忆体控制器的延迟,更可以让记忆体控制器与核心同时脉,进一步提高效能。
这在讲动态分支预测,AMD利用「L1指令快取的资料被挤回L2时,L2的ECC形容浪费 (L1指令快取只有Parity侦错,没有ECC纠错)」的特色,将分支选择器「偷放」在这个栏位,以增强分支预测的记忆体位址涵盖範围,兼顾效能与成本,堪称非常厉害的巧思。这里也列出四种不同情况的指令撷取管线流程,从循序撷取、预测撷取、计算分支目标位址的撷取、到让指令白跑的预测错误撷取,非常值得一看。
强大转译后备缓冲区与分页描述器快取,足以应付分支密集且狂吃记忆体频宽的伺服器端应用软体。
让实作多处理器环境与扩充记忆体容量更加容易的HyperTransport汇流排。
当北桥记忆体控制器都「包」在处理器晶粒之中,自然也不必担忧双核心甚至多核心连接记忆体控制器的频宽,这也让AMD打从一开始,就让K8直奔原生双核心的设计,更在2004年8月31日就公开双核心样品,隔年4月后準时登场,这是AMD x86处理器发展史上最重大的战略胜利。
北桥记忆体控制器的运作流程,包含发出命令与传输资料。请注意,每个区块的颜色依旧对应着前面的管线运作流程。
「快取资料一致性协定」对多处理器环境效能有着举足轻重的影响,而AMD K8的MOESI协定则有着极为出色的表现。
桌机、笔电和工作站的单处理器系统组态概观。
双处理器。
四处理器。
八处理器。
接着就是我们所熟知的故事:AMD迎来x86伺服器市场曾一度拥有高达30%市占率的盛世。
硬科技:做为AMD全盛时期象徵的Opteron处理器:全盛期(2003-2007)
硬科技:做为AMD全盛时期象徵的Opteron处理器:逆转期(2007-2010)
硬科技:做为AMD全盛时期象徵的Opteron处理器:崩溃期(2010-2017)
据传AMD的Zen 4将会全面性支援AVX-512指令集,也会有更激进的微架构强化,意味着将与Intel全面决战,也许Zen 4的简报也会像二十年前这份一样的在历史上享有盛名吧,科科。
原创文章,作者:普拉斯,如若转载,请注明出处:https://www.53moban.com/2148.html