当前位置:首页 > 逆向工程 > 正文内容

Intel开发文档导读

Nietzsche2021-04-24 22:00:08逆向工程36

Intel开发文档导读

本文尝试追踪Intel开发文档的历史变迁,从最初的8086/88参考手册按时代顺序逐步演进到最新的Intel® 64 and IA-32 Architectures Software Developer Manual多卷本,由此一窥Intel处理器的历史和演变 – 从简单到复杂,从单一功能到复合功能,手册也逐步的变长,变复杂,由单卷本到多卷本的变化历史。


透过对文档的类型分析和增量阅读,可以辅助达到以下功效:


降低学习曲线难度,快速定位所需文档

探本溯源,了解新技术的前世起源

跟踪技术的变迁,了解新技术的后续进展。

Intel文档的阅读难点

CPU的高集成度是逐步演进出来的,手册也随着相应的变的复杂。问题在于随着手册的复杂化,手册的篇幅逐步增加到了难以阅读的程度,为了控制手册厚度,有些历史相关的信息或者看起来过时其实对理解技术非常有用的信息在新版本手册中不得不被简化或者干脆删除,遗留在了老的手册中乏人问津,在新手册中出现的信息却逐渐变得难以理解和使用。


我自己体会到的一个比较典型的例子就是最新的优化手册中对指令流水线的讲解非常粗糙,对各个微架构指令流水线几乎一带而过,随后讲述优化方法时引用流水线中的术语难以理解,极大的增加了学习难度,学习曲线也变的十分陡峭,除非读者对流水线已经有很深的了解。如果回溯一下优化手册的历史,探本溯源,就会很容易的发现,最初版本的优化手册中对IA32架构中流水线讲解的非常详细,也很容易理解各种优化方法对流水线的影响。


接下来我们会讲一下Intel手册的大致分类,帮助读者对浩渺的文档库有个提纲挈领的了解,然后再按照时代的发展顺序深入的讲解每个手册,直至最新版本。


Intel的各类“手册”

按出版类型来划分,Intel的各类“手册”包括Manual, Handbook, Guide, Data Sheet, Data Book等。 我个人的分类理解是各类手册主要定位于面向不同的用户群体设置的。


Manual和Handbook在中文里都翻译作“手册”,但是这两种手册有细微的差别,从用途上来看,Manual倾向于使用性,告诉读者如何做,如何用;Handbook倾向于手头的参考书,需要的时候查询使用(TODO: 对么?)。 Guide是指导特定人群如何使用芯片功能。Data Sheet和Data Book都是用于定义设备的参数规范,但是Data Sheet往往单独发布,Data Book会把多种相关的设备组合成册出版。


 


但是我觉的按照手册的功能和用途来划分,更容易理清条理,掌握Intel的手册的发展,分类,与来龙去脉。早期的CPU结构简单,功能单一,所以对应的手册篇幅也不大,不管是早期的组合成册出版,还是后来的单独发行,或者按需发行。Intel的手册可以总可以大致分成若干系列 --- 程序员参考系列(Programmer’s Reference Manual, PRM),硬件参考手册系列(Hardware Reference Manual, HRM),操作系统/系统软件编写指南(OS/System Writer’s Guide),指令参考手册系列(Instruction Set Reference),周边设备参考系列(peripheral / related component) 以及Datasheet系列,优化手册(Optimization Manual, OM)系列。


 


Manual都可以分为Programmer’s Reference Manual (以下简称为PRM)和Hardware Reference Manual(以下简称为HRM)两大类。顾名思义,PRM主要是面向于程序员,讲解Intel芯片为其提供的执行环境,服务,和编程模型等。 PRM主要分成两大部分讲解,通常第一部分Application Programming,面向与应用程序员,第二部分System Programming,面向系统程序开发者(包括BIOS开发者,OS开发者,Compiler/Debugger开发者等);HRM则是面向计算机设计人员,供其理解Intel芯片的功能,接口以及使用方法。


实际上早期的芯片PRM/HRM都不复杂,例如我手头一本89年出版的《8086/8086用户手册》,在单本手册中就可以同时包含了PRM和HRM,不过随着新特性的引入,手册也逐渐的分化,从286开始出现了单行本的PRM和HRM。由于保护模式的引入,为多任务操作系统了硬件级别的支持,还单独出版了一本《iAPX 286 Operating Systems Writer’s Guide》,到386时代,除了PRM和HRM,还单独出版了《80386 System Software Writer’s Guide》


注1:既然PRM里面已经包含了System Programming部分,为什么还要单独出版一本OS Writer’s Guide或者System Software Writer’s Guide呢?两者是否有重叠部分或者各自倾向的人群? 


TODO:


 


注2:Q: Intel OS Writer’s Guide(OSWG)和其他的讲解操作系统的书有什么区别?


A: Intel在 OSWG的前言中提到,本书主要讲解Intel CPU为操作系统的各种底层硬件服务,例如任务切换,设备I/O,中断异常处理等,并不涉及高级的操作系统功能,例如任务的调度,文件的I/O等。换句话说,就是讲述硬件和OS是如何一起有机地协同工作完成一项功能。这也是CPU和OS的初学者最容易迷惑混淆的地方。


程序员参考手册

程序员参考手册通常包括大致包含1)CPU新特性的介绍,2)CPU上软件运行环境的介绍,例如寄存器,数据类型,寻址模式,I/O,任务管理,保护模式等,3)指令集及其兼容性考虑。随着CPU和手册都变得复杂,慢慢分化出了应用程序员参考手册和系统程序员参考手册,甚至某些型号的CPU还会有操作系统编写者参考手册。指令集最后也独立出来单独成为一卷,甚至是篇幅最大的卷本。现在Intel官方最新软件开发手册(Intel® 64 and IA-32 Architectures Software Developer Manuals)前3卷起源于Pentium II的Intel Architecture Software Developer’s Manual 3卷本,但是文档框架都可以追溯到198x时代的8086/8088程序员参考手册。


最新的Intel软件开发者手册


https://software.intel.com/en-us/articles/intel-sdm


Intel® 64 and IA-32 architectures software developer's manual volume 1: Basic architecture


Intel® 64 and IA-32 architectures software developer's manual combined volumes 2A, 2B, 2C, and 2D: Instruction set reference, A-Z


Intel® 64 and IA-32 architectures software developer's manual combined volumes 3A, 3B, 3C, and 3D: System programming guide


指令集参考手册系列

从8086开始,Intel CPU的指令集就在逐步的扩充,变的越来越庞大,指令集手册从最开始位于程序员手册中的一章,逐渐到一个附录,最后到单独成一卷本出版,变成篇幅最大的系列。单个人已经几乎不可能独立掌握所有的指令细节了。好在最新的软件开发手册第1卷中有一个可以快速地分类浏览简化的指令集列表。指令集参考系列可供汇编程序员,系统软件开发人员和程序优化人员参考使用。


硬件参考手册系列

最初Intel走的是开放兼容的路线,任何厂商都可以采用Intel CPU然后根据自己的需求设计自己的计算机(听起来很cool)。硬件参考手册就是给硬件设计人员使用的,主要内容包括CPU架构,总线接口,内存接口,I/O接口,中断控制,协处理器接口等硬件接口设计相关的内容。软件开发人员也可以用来更深入的理解程序的运行。最初的8086/8088的程序员参考手册与硬件参考手册合并在一册书中,从80286起,直至80486,程序员手册和硬件手册分为两册出版。Pentium的硬件参考手册分层了两卷(vol1: Pentium Processor Data book和vol2: 82496 Cache Controller and 82491 Cache SRAM Data Book)。在Pentium Pro中等价于Pentium Pro Family Developer’s Manual vol1: Specifications. 自Pentium II起,没有独立的硬件参考手册发布,可能只给OEM厂商使用了。软件开发程序员也无需关心硬件了。Pentium II也未发布程序员参考手册,而是发布了Intel Architecture Software Developer’s Manual 3卷本,与目前(2018年)最新的三卷本基本同名,除了目前的三卷本名称前半部分是Intel® 64 and IA-32 Architectures。


优化手册系列

Intel的优化手册出现的较晚,但是使用频率很高,而且难度较大,涉及到CPU微架构层面,Cache结构层间,编译器,程序设计各方面的知识体系。


最初的优化手册是一篇应用文档,编号AP-526,文档名称Optimization’s For Intel’s 32-Bit Processors(Order#: 242816-001 1995年),指导386,486,Pentium 以及Pentium Pro上的优化。随后1998/1999年 发布的参考手册,文档名为Intel® Architecture Optimization (Order#: 245127-001),讲解对Pentium II和Pentium III的优化技术。1999-2001年发布了针对Pentium 4的优化手册Intel Pentium® 4 Processor Optimization(Order#: 248966)。根据Order#来看,这本Pentium 4的优化手册也是目前最新版本优化手册的第一版。18年过去了,优化手册的Order#没有更改过。


Pentium 4处理器采用的Intel NetBurst微架构的优化手册从248966第一版引入,Pentium M微架构的优化手册从248996-008版本引入,Intel® Core™ Solo and Intel® Core™ Dual Processor的微架构优化手册从248966-013版本引入,但是关于这些微架构的信息在248966-027版本的优化手册中被移除掉。所以最新最详细的关于Pentium 4微架构,Pentium M微架构和Core Solo/Dual处理器采用的微架构信息只能从248966-026版本中找到。


The History of Optimization Manual


Document


Order#/Publish


Description


Optimization's For Intel's 32-Bit Processors


Order#: 242816-001 1995 Oct


Optimization Guide for i386, i486, Pentium(R), and Pentium Pro processors


Intel(R) Architecture Optimization Reference Manual


Order#: 245127-001 1999


Optimization Guide for Pentium(R) II and Pentium III processors


Intel(R) Pentium(R) 4 Processor Optimization Reference Manual


Order#: 248966 2001


Optimization Guide for Pentium(R) 4 processor


Intel® 64 and IA-32 architectures optimization reference manual


Order#: 248966-040 2018 May


Intel® 64 and IA-32 architectures optimization reference manual provides information on Intel® Core™ processors, NetBurst microarchitecture, and other recent Intel® microarchitectures. It describes code optimization techniques to enable you to tune your application for highly optimized results when run on Intel® Atom™, Intel® Core™ i7, Intel® Core™, Intel® Core™2 Duo, Intel® Core™ Duo, Intel® Xeon®, Intel® Pentium® 4, and Intel® Pentium® M processors.


 


DataSheet/DataBook/周边设备系列

早期这些文档是CPU及其周边硬件设备的电气规范 ,接口规范,对于理解计算机系统架构有帮助。

————————————————

版权声明:本文为CSDN博主「一凡stkeke」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/qq_43401808/article/details/85224252


版权声明:作为笔记收集,仅供学习使用.

分享给朋友:

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。