搜索
高级检索
高级搜索
书       名 :
著       者 :
出  版  社 :
I  S  B  N:
文献来源:
出版时间 :
微处理器体系结构专利技术研究方法(第3辑x86指令实现专利技术)
0.00     定价 ¥ 88.00
图书来源: 浙江图书馆(由浙江新华配书)
此书还可采购25本,持证读者免费借回家
  • 配送范围:
    浙江省内
  • ISBN:
    9787030756879
  • 作      者:
    编者:徐步陆|责编:赵艳春//高慧元
  • 出 版 社 :
    科学出版社
  • 出版日期:
    2023-06-01
收藏
内容介绍
《微处理器体系结构专利技术研究方法》是《微处理器体系结构专利技术研究方法》系列的第三辑,它通过挖掘在专利记载的相关技术方法,呈现x86处理器微架构的逻辑实现技术。第1章主要探讨算术、浮点和向量类指令实现。第2章和第3章主要探讨加载和存储访存指令、跳转和分支指令的技术实现。第4章和第5章主要探讨流水线、低功耗等关键技术实现。第6章探讨编译优化技术。
  微处理器是集成电路*具代表性的产品。因此,一个集成电路强国,一定在微处理器领域有自己的创新与创造。人工智能领域相关的GPU、DPU等新兴处理器架构,本质上都是CPU的协处理器或加速扩展单元。
展开
精彩书评
本书以专利技术研究方法重点研究了X86指令实现专利技术。
展开
精彩书摘

第1章 算术、浮点和向量类指令实现
  算术运算是流水线中执行单元面向的重要应用,是程序运行的基本操作,加快基本操作的执行速度,能更显著地提升处理器计算性能。而浮点类指令的执行通常需要较多的处理器周期,保障浮点类指令的正常执行并进一步优化处理的好处不言而喻。高计算密集应用的普及,对CPU数据并行处理能力提出新要求而孕育而生的向量操作对现有的访存策略、执行方法等提出了挑战。本章主要研究解决以上问题的算术运算、浮点类和向量类这几类特定指令的相关专利技术实现。
  1.1 算术运算
  高性能多路运算(加法、累加和选择)、乘除法运算以及复杂运算(如指数运算、三角函数)在性能方面的提升对处理器主频、吞吐量的提升具有显著的效果。因此,x86产品技术标杆公司如英特尔等,在响应相关特定算数运算指令时,从执行部件的逻辑实现上布局了相应专利。本节对多路运算、乘除法运算以及复杂运算相关技术分别进行介绍。
  1.1.1 多路运算
  通常,现有技术的一条指令能够处理两个操作数输入的运算,当需要对多个数据进行运算时通常需要多条指令。本小节中的专利均涉及一类新的单一指令包含两个以上操作数,可以被译码为多路指令。该单一指令可以完成多条现有指令的工作,必要时在执行阶段增加1~2个时钟周期,使得多个操作并发完成而不需要增加较多执行时间,从而能够提升处理器性能。指令执行的运算包括加法(包括累加)、比较、选择等。
  1. 多路加法/累加
  【相关专利】
  US7293056(Variable width,at least six-way addition/accumulation instructions,2002年12月18日申请,已失效,中国同族专利CN 1320450C)
  【相关内容】
  该专利技术涉及在处理器中提供可变宽度、至少六路(即六个输入)加法指令的译码和执行逻辑。首先将一条单一指令译码为具有多个操作数可变宽度、至少六路的加法指令,执行逻辑进一步使用多个加法器对多个操作数做加法得到并输出总和,并可选地存储进位结果。例如,在每个流水线中利用多个3∶1加法器(三个值相加并输出一个值)可以实现在一个或多个周期内执行的多路加法指令。3∶1加法器比2∶1加法器(两个值相加并输出一个值)略微慢一点,并且只涉及单个进位传送,因此该类指令以流水线方式工作并在两个周期后产生结果,不会影响处理器的周期长度。
  专利技术能处理六路加法或累加指令的可变宽度多路加法运算逻辑电路示例见图1.1。图中电路包括多个指令操作数存储单元,如305模块;多个3∶1加法器,如335模块;以及目的寄存器380。输入包括六个源操作数,第一级运算可以采用4个六路加法器得到4个中间结果;第二级运算使用两个3∶1加法器将4个中间结果相加,还可以选择将之前存储在目的寄存器的结果和中间结果进行累加,最终结果存储在目的寄存器。
  图1.1 可变宽度多路加法运算逻辑电路
  2. 多路加法-比较-选择
  【相关专利】
  US7454601(N-wide add-compare-select instruction,2002年3月28日申请,已失效)
  【相关内容】
  US7454601专利技术提供一种N宽度加法-比较-选择指令的设计方法与逻辑实现。基于3∶1加法器与多个2∶1最大值比较器通过对源操作数与分支度量(branch metrics)值,在控制寄存器(包括分支度量寄存器(branch metrics register)、操作数选择寄存器(operand selection register)、极性设置寄存器(polarity setting register)以及比较结果寄存器(compare result register))配置下,执行相加、移位和比较操作,实现两个时钟周期内,对多组操作数相加值的比较,最终输出布尔值比较结果,运算过程如图1.2所示。硬件逻辑包括N宽度加法-比较-选择指令的译码,选择分支度量与操作数,合并多个计算结果,以及最大值比较结果输出。该专利技术应用于调制解调器、音视频等,能够大幅提升运算加速比。
  图1.2 N宽度加法-比较-选择指令执行流程图
  3. 多路选择
  【相关专利】
  US7028171(Multi-way select instructions using accumulated condition codes,2002年3月28日申请,已失效)
  【相关内容】
  US7028171专利技术实现多路选择指令的译码,从并行控制寄存器(parallel control register)存储的多个指令操作数中选择至少一对源操作数,从这一对源操作数中选择一个源操作数作为结果并输出。运算过程如图1.3所示。
  图1.3 并行控制译码多路选择指令执行流程图
  该专利技术支持的多路选择指令可以在两个时钟周期内执行完毕,其中多路包括4、8、16、32、双4、四4及更多路。专利功能的实现基于2∶1选择器,通过接连多段的选择器层级以及控制实现多路选择。每个选择器的控制端由预设条件码设定,条件码由多段比较或最大/最小值指令生成。多路选择逻辑在全流水方式下执行(每时钟周期执行一条指令),如此可以实现在log2N周期内(甚至更少的时钟周期数内)完成N选一操作。
  该专利技术的实现方法与第2部分US7454601专利技术相似,但控制寄存器功能相对简单,仅沿用了US7454601中的比较结果寄存器(包含比较操作),不包含其他的控制寄存器。
  1.1.2 乘除法运算
  1. 扩展精度的整数除法
  【相关专利】
  US7523152(Methods for supporting extended precision integer divide macroinstructions in a processor,2002年12月26日申请,已失效,中国同族专利CN 1270230C和CN 100543670C)
  【相关内容】
  该专利技术提出在处理器内部采用现有的浮点除法硬件电路计算扩展精度的整数除法的方法,以满足不增加整数除法硬件的情况下计算更高精度的整数除法的需求。例如,可以在用于计算64位有效位的浮点数的浮点除法硬件中支持有符号和无符号的128位除以64位的整数除法操作。该专利涉及新指令—扩展精度整数除法指令。
  假设128位整数被除数X除以64位整数除数Y,得到64位商Q和64位余数R。如果将128位被除数X分为两份等长的整数XL和XH,即高64位和低64位,即X = XH?264 + XL,则有XL = QL?Y + RL,XH?264 = QH?Y + RH,其中,Q = QH + QL,R = RH + RL。除法将分成高位和低位两次单独的64位处理。
  接收扩展精度整数除指令后的计算过程如下:将被除数X的低位部分XL以及除数Y由整数格式转换为浮点格式;在浮点单元执行被除数低位部分除以除数的浮点除法,得到浮点格式的低位部分的商以及余数;之后将浮点格式的低位部分的商以及余数转换为整数格式的QL以及RL。高64位的计算过程与上述低64位过程类似,额外需要增加的操作是浮点格式的商需要执行溢出检查及溢出异常的后续处理;如果高位结果和低位结果没有错误,将两个64位运算的结果相加,计算最终的商和余数。操作流程示例如图1.4和图1.5所示。其中图1.4(a)展示了被除数的低位部分无符号除法操作,图1.4(b)展示了被除数的高位部分无符号除法操作。图1.5展示了从被除数低位和高位分别进行除法操作到得到最终的商和余数的流程。该专利技术还可以处理有符号数的除法操作,除了前述计算过程还需要额外的除前和除后处理过程。除前处理是把除数和被除数从有符号格式转换为无符号格式;除后处理是确定商和余数的符号。
  图1.4 无符号扩展精度整数除法
  2. 十进制浮点乘法
  十进制浮点乘法运算,例如,对于两个表示为 和 的浮点数D1和D2,通常需要系数C1和C2相乘,指数E1和E2相加,然后进行舍入操作。现有二进制指令编码和执行电路无法直接对十进制表示的浮点数进行操作,导致十进制浮点乘法运算复杂度高,运算时间长。
  【相关专利】
  US7912890(Method and apparatus for decimal number multiplication using hardware for binary number operations,2006年5月11日申请,已失效)


展开
目录
目录
前言
第1章 算术、浮点和向量类指令实现 1
1.1 算术运算 1
1.1.1 多路运算 1
1.1.2 乘除法运算 5
1.1.3 复杂运算 9
1.2 浮点类指令执行 13
1.2.1 浮点指令的安全执行 13
1.2.2 四倍精度浮点加载与存储 15
1.2.3 避免浮点控制指令或设置的方法执行浮点指令 18
1.2.4 并行流水线浮点单元执行浮点向量处理 24
1.3 向量操作实现和优化 25
1.3.1 利用主从数据通路交错执行向量指令 25
1.3.2 聚集/分散 27
第2章 访存相关 30
2.1 加载和存储指令的实现 30
2.1.1 高级加载 30
2.1.2 屏障指令 32
2.1.3 先进加载 36
2.1.4 满足加载操作 43
2.1.5 监听存储指令地址 45
2.1.6 安静存储指令 46
2.1.7 存储指令转发 47
2.1.8 重命名技术 49
2.1.9 存储器消歧 51
2.1.10 乱序处理器中加载/存储指令的处理 52
2.1.11 全局可见存储缓冲器 56
2.1.12 加载/存储数据的预取技术 57
2.1.13 加载/存储指令的并行化 59
2.1.14 大端小端与地址对齐的处理 60
2.1.15 二阶段提交 63
2.2 访存性能优化及其他 65
2.2.1 存储地址扩展 65
2.2.2 加载指令地址生成优化硬件逻辑 67
2.2.3 基于寄存器别名表和内容可寻址存储器的XCHG指令优化 68
2.2.4 浮点线性地址更新优化 69
2.2.5 读写操作与奇偶存储体优化调度 70
2.2.6 内存重配置 70
2.2.7 基于序列检测或与指令相关信息的优化访存性能 71
2.2.8 栈操作指令执行 73
2.3 高速缓存 74
2.3.1 高速缓存预取技术 74
2.3.2 高速缓存污染解决技术 77
2.3.3 基于LRU算法的替换策略 77
2.3.4 高速缓存行读写性能优化 79
第3章 跳转和分支 81
3.1 条件跳转指令译码 81
3.2 子程序返回 82
3.3 动态分支预测 87
3.3.1 面向流水线系统的预测 88
3.3.2 多指令流的推测执行 90
3.3.3 面向多指令集的预测 91
3.3.4 多线程推测分支指令 92
3.3.5 循环预测器 93
3.3.6 重放指令转化 94
3.3.7 预测信息的存储 95
3.3.8 启用多个跳转执行单元 96
第4章 流水线 98
4.1 多周期指令的流水线实现 98
4.2 超标量流水线 99
4.3 流水线转发技术 101
4.4 多线程 102
4.4.1 流水线暂停 102
4.4.2 共享存储 103
4.4.3 活锁 104
第5章 低功耗 106
5.1 时钟门控 106
5.2 基于温度调整频率和电压 107
5.3 功耗模式切换 107
5.3.1 通过暂停指令进入休眠 107
5.3.2 长延迟指令降低瞬时启动电流 108
5.3.3 基于存储器地址操作的唤醒 109
第6章 编译优化 111
6.1 分支和循环优化 111
6.2 融合乘加操作 115
6.3 多核优化 116
6.3.1 代码重排 116
6.3.2 循环展开 116
6.3.3 动态部分二进制翻译的指令集虚拟化 118
参考文献 120
展开
加入书架成功!
收藏图书成功!
我知道了(3)
发表书评
读者登录

请选择您读者所在的图书馆

选择图书馆
浙江图书馆
点击获取验证码
登录
没有读者证?在线办证