欢迎光临散文网 会员登陆 & 注册

微处理器体系结构专利技术研究方法 第一辑:X86指令集总述

2023-08-03 23:02 作者:刘姥姥看人间  | 我要投稿

链接:https://pan.baidu.com/s/1tyCdsD848qtDDKElb_u1QA?pwd=ul77 

提取码:ul77

微处理器是集成电路之巅。目前事务处理型微处理器仍主要采用x86体系结构。但其可公开获取的研究资料很少,真实产品设计细节更是秘而不宣。《微处理器体系结构专利技术研究方法.第一辑,x86指令集总述》以研究专利中的公开技术作为x86体系结构研究的新方法。
  按照“指令集结构—微结构—物理实现”层级,沿着数据类型从标量—矢量—矩阵进程脉络,《微处理器体系结构专利技术研究方法.第一辑,x86指令集总述》按照x86通用指令集、浮点指令集、安全保护类指令集、虚拟化指令集、微指令、指令集扩展等模块分类,从上万条Intel专利中挖掘出x86指令专利,按照技术背景、遇到的问题、解决思路、实现方法与技术采纳,对其进行梳理分析、提炼成章。

精彩书评

微处理器是集成电路之巅。目前事务处理型微处理器仍主要采用x86 体系结构。

目录

目录
前言
第1章 概述 1
1.1 研究背景 1
1.2 研究方法 3
1.3 研究对象:英特尔x86指令集概述 6
第2章 通用指令集技术专利分析 11
2.1 数据传输指令 11
2.1.1 字节交换指令 11
2.1.2 比较交换指令 12
2.1.3 处理器间数据传输 17
2.1.4 通过寄存器重命名优化数据传输指令 19
2.2 二进制计算指令 20
2.3 位和字节指令 22
2.3.1 位测试和置位指令 22
2.3.2 循环冗余校验 23
2.4 控制传输指令 33
2.4.1 函数调用和返回 33
2.4.2 比较-分支指令 35
2.4.3 中断返回指令 35
2.5 字符串指令 38
2.5.1 执行重复串操作(REP前缀指令) 38
2.5.2 迭代指令计数 41
2.6 杂项指令 42
2.6.1 CPUID指令 42
2.6.2 NOP指令 46
2.7 用户模式扩展状态保存和恢复 49
2.8 通用指令集增强BMI 51
2.8.1 位范围隔离指令 52
2.8.2 增强的整数乘法指令 55
2.8.3 增强的循环移动指令 56
2.8.4 三操作数加法指令 58
2.8.5 通用逻辑运算指令 61
2.8.6 前缀控制的不修改标志位和条件执行 62
2.9 线程类指令技术专利分析 65
第3章 x87浮点指令集技术专利分析 68
3.1 浮点数和整数之间的搬移及转换 68
3.2 浮点数的舍入操作 75
3.3 浮点安全指令识别模块 83
3.4 同步相关指令执行逻辑 84
第4章 安全保护类指令集技术专利分析 87
4.1 高级加密规范新指令集AESNI和PCLMULQDQ技术专利分析 87
4.1.1 标准AES算法实现逻辑和AES轮指令 88
4.1.2 非标准AES算法指令及其实现 90
4.1.3 轮密钥生成指令及其实现 93
4.1.4 AES指令的低硬件开销实现 97
4.1.5 AES指令的组合应用 98
4.1.6 加密模式中的AES指令 99
4.1.7 用PCLMULQDQ指令加速GCM认证模式计算 104
4.2 安全模式扩展指令集技术专利分析 105
4.2.1 隔离模式指令 106
4.2.2 安全环境初始化指令 106
4.3 安全散列算法指令集 109
4.3.1 SHA-1算法、轮操作指令和部分消息调度 110
4.3.2 SHA-256算法和消息调度指令 117
4.3.3 SHA-3(候选)算法实现和相关指令 122
第5章 虚拟化技术专利分析 143
5.1 加速器接口虚拟化 143
5.2 VM调用函数 144
第6章 微指令技术专利分析 148
6.1 CISC指令到RISC指令的转变 148
6.2 事件处理指令 150
6.3 逻辑多数指令 152
第7章 指令集扩展、转换和兼容技术专利分析 154
7.1 指令压缩编码 154
7.1.1 操作码域压缩 154
7.1.2 立即数域压缩 155
7.1.3 相对地址压缩与解压 160
7.1.4 指令格式压缩 164
7.2 标志位控制 165
7.3 加速二进制转换的方法 166
7.4 标签寄存器编码转换 167
7.5 地址空间扩展方法 168
7.6 扩展寄存器集合的指令集支持 169
7.7 寄存器空间扩展方法 171
7.8 64位乱序处理器运行32位程序的高性价比执行方法 173
参考文献 174

查看全部↓

精彩书摘

第1章 概述
  1.1 研究背景
  目前,微处理器比以往更加密不可分地出现在我们身边:在打电话、看电视时,驾驶汽车、乘坐地铁和飞机时,电子支付、生物识别时,体检X射线成像、锻炼计数时,远程网课、网购时,查收天气预报、观看火箭发射时 数得清和数不清的微处理器芯片和它们提供的计算,随时随地影响和改变着人们的学习与生活。简要回顾一下现代计算机和微处理器的发展历史,有助于对本书思想的理解。1946年世界上第一台电子数字式计算机—电子数值积分计算机(the electronic numberical integrator and computer,ENIAC)在美国宾夕法尼亚大学投入运行。之后,约翰 冯 诺依曼进一步提出二进制运算、存、算与输入输出等相对分离方面的体系结构改进,“取指—译码—执行—回写”顺序执行等主要思想带来的影响一直持续到今天。硬件方面,20世纪50年代,基于半导体的晶体管替代了机械真空管。1959年罗伯特 诺伊斯(Robert Noyce)获得第一个单片集成电路专利US19590830507。1968年全称是Integrated Electronics的Intel(英特尔)公司成立,开始生产集成电路。1971年英特尔瞄准计算器市场,推出拥有2300个晶体管、740kHz主频的4004可编程微处理器,使工程师可以购买微处理器后,通过软件开发实现不同的系统功能。1972年英特尔推出的8位微处理器8008和1974年英特尔推出的后继产品8080,成为世界上应用广泛的微处理器。之后英特尔于1978年推出的16位8086微处理器更是开天辟地,其采用x86指令体系,成为现代中央处理器(central processing unit,CPU)的设计基础并沿用至今。现在,新款的x86芯片的晶体管数量相当于上千万块4004的晶体管之和,但芯片面积相差无几。
  计算机体系结构要研究的是在设定的软件要求和指定工艺条件下,设计系统性能更好的计算机。计算机组成中,微处理器的重要性毋庸置疑,因此计算机体系结构中最主要的就是研究微处理器体系结构。这里的微处理器,就是指中央处理器。在绝大多数场合,计算机体系结构与微处理器体系结构可以视为等同的概念范畴。由于软、硬件发展在时空上不是那么配合,因此历史上计算机体系结构在20世纪五六十年代关心的是加、减、乘、除等数学计算实现,七八十年代则是在重点研究指令集,90年代以后片上系统开始出现并成为新的研究目标。设计CPU归根结底就是构建多个专用元件,并连接起来实现复杂的计算。而强大的计算抽象能力使一个系统架构软件工程师就能够操控百万量级或更多的晶体管。类似“夫无形者,物之太祖”,计算机体系结构离不开计算抽象层概念。它通过层层抽象,构建起“硅原子层—晶体管层—逻辑门(电路)—功能块单元—执行单元—微架构—指令集架构”的庞大工程。工程师可以由下而上搭建微处理器计算架构,而倒过来由上而下则几乎不可能可视化。
  指令集架构(instruction set architecture,ISA)是计算机的语言,即计算机的抽象模型,有时也称为计算机架构或架构,它用一组指令定义了哪些类型的操作可以用硬件执行,它描述了内存模型、数据类型、寄存器和机器代码行为,搭建了软件与硬件之间的桥梁。在软件方面,编译器使用ISA将用C语言、Java等高级语言编写的程序代码翻译成机器指令代码。而通过指令集扩展,可以增加更多的指令、数据类型以满足新的更高效的运算操作,并利用微架构的新处理单元。指令通常由一个操作码和若干操作数、数据位等组成,新的指令扩展可为特定排列的处理单元简化操作、提升CPU性能。现代CPU支持数百甚至上千条指令,多数仍是加、减、乘等数学运算,与、或、非等逻辑运算,加载、存储、移动等内存操作以及分支等流程控制。
  早期,每一代计算机都有一代对应的指令集,相当于专用机,上面的应用程序难以迁移。为了保证已开发的软件一直可用,“向后兼容”策略显然实现了软件价值的最大化,因此作为计算机软硬件接口的指令集更需要保持稳定规范、扩展有度。现在只有极少数的指令集为工业界被长期广泛支持,这使从头开始设计一个新的指令集几乎成为不可能的任务(mission impossible)。x86架构是CPU执行的计算机语言指令集,为英特尔通用计算机系列的标准编号缩写,也标识了一套通用的计算机指令集合。虽然由于计算对象不同和资源限制,x86和其他所有微处理器一样有某些不足,但其丰富的软件环境、强大的计算性能、稳定的市场占有率和优秀的品牌价值,仍然使x86成为当前世界范围内无论桌面个人计算机(personal computer,PC)还是云计算服务器等场景下,最不可或缺的微处理器,年均出货量维持在数亿台。历史上,英特尔、超微(AMD)、威盛(VIA)、IBM等十余家公司都曾有支持x86架构的处理器产品或知识产权授权。
  历史上,架构工程师和学者在微处理器架构方面,特别是指令体系、流水线、存储层次等方面不断寻求设计突破,其间由于理论方法、实现路径、硬件局限等,考虑过种种奇思妙想和各种可行性,当然,多数在实际CPU产品中得到了实现。这些知识财富见诸文献记录的,除了论文、手册外,最精华也最有代表性的就是专利申请文本。因为专利申请要求“新颖性”“创造性”“实用性”,而且专利“公开换保护”合法地创造了阶段性垄断,专利续案、专利组合等专利技巧又能完整地保护一套技术方案、路线。微处理器(集成电路)产业具有高投入、高风险、高回报、知识密集的特性,因此微处理器企业顾及商业利益,会更好、更有章法地利用《中华人民共和国专利法》,完整、有效地进行专利布局和申请。微处理器企业通过技术专利,获取了对自己产品的知识产权保护和对竞争对手的卡位遏制。而我们第三方则可以通过分析、研究历史上微处理器技术专利的来龙去脉,窥探当时的技术思路、解决方案,并对照实际产品性能、设计目标以及工艺支撑等相关数据,判断对应方法的科学完备性、技术实现难度,从而通过公开渠道获取国际主流微处理器技术成功和失败的秘密,达到“他山之石,可以攻玉”的效果。
  1.2 研究方法
  CPU设计的实质就是将一个计算机体系结构,抽象映射成逻辑电路,并用一定的微电子工艺加以物理实现,即完成“指令集结构(微处理器体系结构、计算机系统结构)—微结构—物理实现”的过程。本书则是开创性地利用专利文本、指令集和产品数据手册,通过全面研究与分析历史上人们在微处理器体系结构中的各种有意识和无意识的技术可行性探索,对上述过程进行深层剖析,形成“技术—专利—产品”数据立方,它实际上已经成为一本《指令集技术实现数据手册》,描述了x86架构微处理器设计与实现大全,启迪和引导后来者更上一层楼。英特尔是x86架构的原创者、集大成者,也是领导者,因此选取英特尔x86专利进行研究是最为合适的。
  本书分析的专利是2014年5月31日前申请的,专利权人是英特尔(包含原始、中间和现在)的美国专利(含申请和授权)和中国发明专利(含公开和授权公告)。本书中覆盖检索范围内人工筛选出的指令集架构相关技术的美国专利分析,重点分析指令格式的相关专利,另有一部分专利涉及逻辑实现,如某类特定指令实现。专利检索工具采用Questel公司的Orbit系统的专利家族库,专利有效性(含失效时间)也来自该系统,仅供参考。
  本书参照《英特尔64和IA-32架构软件开发人员手册》(订单号:325462-061US,以下简称《手册》),根据英特尔x86指令集的数据类型和应用,大致将x86各个指令集分成以下六类,并按照此分类分别进行系统的技术专利分析。
  1.通用类指令集
  通用类指令集包括通用指令集、英特尔32位体系结构扩展模式(Intel architecture-32 extension mode,IA-32e模式)指令集、通用增强指令集—位操控指令集(bit manipulation instruction,BMI)和系统指令。
  英特尔通用类指令采用指令集层面专利保护的数量并不是很多,特别是一些比较早期的通用指令。另外,数学运算和逻辑运算指令主要通过逻辑实现或电路层面的专利进行保护。本节相关专利涉及数据传输指令(data transfer instruction)、二进制计算指令(binary arithmetic instruction)、位和字节指令(bit and byte instruction)、控制传输指令(control transfer instruction)、字符串指令(string instruction)、杂项指令(miscellaneous instruction)(如CPUID(CPU identification,CPU标识)指令)、用户模式扩展状态保存和恢复、循环冗余校验(cyclic redundancy check,CRC)和通用指令集增强BMI等。相关技术专利分析见第2章 。
  2.x87浮点类指令集
  x87浮点类指令集包括x87浮点指令集、x87浮点运算和单指令多数据状态管理指令集。浮点类指令包括数据交互、数据舍入、控制等指令。在英特尔处理器中,浮点数运算单元(也称数字协处理器)一开始应用不广泛并且成本高,是在独立的协处理器芯片中存在的,称为x87协处理器。逐渐地,随着CPU应用领域的扩展和芯片集成度的提高,英特尔从486处理器开始,将浮点数运算单元和CPU整合到了同一个芯片上(浮点加速器),之后设计CPU时,既需要考虑兼容以前的程序,又需要考虑加快执行速度。
  相关专利主要保护浮点数和整数之间的搬移及转换、浮点数的舍入操作、浮点安全指令识别模块和同步相关指令执行逻辑等几个方面。相关技术专利分析见第3章 。
  3.多媒体类指令集
  多媒体类指令集包括六代单指令多数据(single instruction multiple data,SIMD)指令集—多媒体扩展(multi media extensions,MMX)、流式传输SIMD扩展(streaming SIMD extensions,SSE)、流式传输SIMD扩展2(streaming SIMD extensions 2,SSE2)、流式传输SIMD扩展3(streaming SIMD extensions 3,SSE3)、补充流式传输SIMD扩展3(supplemental streaming SIMD extensions 3,SSSE3)、流式传输SIMD扩展4(streaming SIMD extensions 4,SSE4),还有高级矢量扩展(advanced vector extensions,AVX)、高级矢量扩展2(advanced vector extensions 2,AVX2)和高级矢量扩展512(advanced vector extensions 512,AVX-512)、融合乘加(fused-multiply-add,FMA)扩展以及16位浮点转换(half-precision floating-point conversion,F16C)指令集。

查看全部↓


微处理器体系结构专利技术研究方法 第一辑:X86指令集总述的评论 (共 条)

分享到微博请遵守国家法律