本节书摘来自华章计算机《计算机系统:系统架构与操作系统的高度集成》一书中的第3章,第3.1节,作者:(美)拉姆阿堪德兰(Ramachandran, U.)(美)莱希(Leahy, W. D.)著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
3.1 体系结构与实现
首先我们要理解为什么要区分体系结构和实现。
1)由于性价比的原因,同一体系结构可能有也应该有多种不同的实现以满足市场需求。例如,在服务器市场(例如,Web服务器)应该有高性能的处理器,与此同时,嵌入式系统(如打印机)中则需要处理器的低端版本。这就是为什么会有遵循同一种体系结构的处理器家族,其中有些甚至直接就叫做某个系列(如Intel Xeon系列、IBM 360系列、DEC PDP-11系列等)。
2)另一个去除体系结构与实现之间耦合的重要原因是,系统软件和硬件可以并行部署。例如,通过去耦合,使得我们可以验证针对某种新体系结构的系统软件(如编译器、调试器、操作系统),即使这种体系结构还没有可用的实现。这极大地减少了推出一套计算机系统所需的时间。
3)高性能服务器的客户在软件上做出了巨大的投入。例如,Oracle数据库是一套庞大而复杂的数据库系统。与处理器更新换代相比,这类软件系统的进化非常缓慢。Intel的合作创始人Gordon Moore在1965年预测,单位面积上的晶体管数量每两年翻一番。实际上,技术进步的速度要更快一些,处理器的速度每18个月翻一番。这意味着每18个月就会有一款更快的处理器冲击市场。如果你注意过每年新出的处理器的速度,就会明显感觉到这一点。软件的改变则比硬件技术慢得多。因此,遗留软件能在新版本的处理器上运行是很重要的。我们应该维持契约(即指令集)稳定,以便大部分的软件(如编译器及相关工具,还有调优后的应用程序)在处理器的换代过程中基本保持不变。体系结构与实现的非耦合特性使保持传统软件的二进制兼容性得以满足。