Front End Overview

下图展示了Nehalem微架构流水线前端的主要构成组件。取指单元IFU每个周期可以从一级指令缓存中读取16字节的对齐指令流,然后将其送到指令长度译码器ILD中。指令队列IQ保存有长度译码器处理过的x86指令,每个周期可以将4条指令发送给指令译码器。

指令译码器有三个简单译码单元,每个单元每周期可以译码一条简单x86指令(即x86指令译码后只生成1条微指令)。另外有一个复杂译码器,可以每周期译码1至4微指令的x86指令(即译码后生成1条至4条微指令)。对于译码后超过4条微指令的x86指令,则必须由MSROM完成译码。无论是由指令译码器还是由MSROM译码,每个周期最多可以有4条微指令发送进入到译码后微指令队列IDQ中。

循环流侦测器(LSD)现在位于译码后微指令队列中,这样在执行短小的循环指令序列时可以节省功耗和提升前端效率。注:Intel Core微架构的LSD位于分支预测单元BPU中,处理的是x86指令;而Nehalem微架构中的LSD处理的则是微指令。当然x86的循环指令与微指令的循环指令也应该有固定对应关系。

指令译码器支持微熔合机制,可以提升前端吞吐量,增加调度器与重排序缓冲区ROB的实际容量。微熔合的规则与Intel Core微架构的规则类似。

指令队列IQ支持宏熔合机制,在可能的情况下,可以将相邻的x86指令合并在一起,生成一条微指令。在前代Intel Core微架构中,宏熔合支持的CMP/Jcc指令序列被限制为针对CF和ZF标志位的条件转移,而且64模式下不支持宏熔合机制。

Intel Nehalem微架构中,宏熔合可以支持64位模式,而且支持更多的指令序列熔合:

  • CMP指令在做比较操作时,可以被熔合(与Core微架构相同)

寄存器-寄存器。例如CMP EAX, ECX; JZ label

寄存器-立即数。例如CMP EAX, 0x80; JZ label

寄存器-存储器。例如 CMP EAX, [ECX]; JZ label

存储器-寄存器。例如CMP [EAX], ECX; JZ label

  • TEST指令可以与所有的条件转移指令熔合(与Core微架构相同)
  • CMP可以与下列的条件转移指令熔合。这些条件转移指令检查CF和ZF标志位。可以做宏熔合的条件转移指令如下:(与Core微架构相同)

JA或JNBE(无符号大于)

JAE或JNB或JNC(无符号大于等于)

JE或JZ(等于)

JNA或JBE(无符号小于等于)

JNAE或JC或JB(无符号小于)

JNE或JNZ(不等于)

注:这条似乎与第一条有重叠?TODO。

  • CMP可以与下列的条件转移指令熔合。(Nehalem微架构上的增强

JL或JNGE(有符号小于)

JGE或JNL(有符号大于等于)

JLE或JNG(有符号小于等于)

JG或JNLE(有符号大于)

Nehalem微架构在分支预测处理上也做了多方面增强。分支预测缓冲区BTB增加了容量,提升了分支预测的准确率。寄存器重命名机制得到了返回栈缓冲区的支持,降低了代码中返回指令RET的预测错误率。而且,进一步的硬件增强提升了对分支预测错误恢复的处理能力:尽管资源已经被分配去执行错误的分支指令,但是通过快速地资源回收,前端不必一直等待译码代码架构分支中的指令(即正确的分支中最终会执行退役的指令)。相反,只要前端一开始译码架构路径上的指令,新的微指令流可以启动投入执行(参看以下英文原文)。

英文原文如下:

Intel® Nehalem/Westmere架构/微架构/流水线 (3) - 流水线前端相关推荐

  1. Intel® Nehalem/Westmere架构/微架构/流水线 (1) - 特性概述

    Intel® Nehalem/Westmere Microarchitecture Intel Nehalem微架构的全称是Intel Microarchitecture code name Neha ...

  2. Intel(R) 处理器产品架构/微架构对照表

    Intel(R) 处理器与微架构对照表 2020/12/23:更新至IceLake/TigerLake微架构 2019/07/09:更新至 2nd Generation Intel® Xeon® Sc ...

  3. Pentium M处理器架构/微架构/流水线(1) - 流水线概述

    Intel® Pentium® M Processor 与Intel NetBurst微架构类似,Intel Pentium M处理器微架构 的流水线也包括3个主要部分: 有序发射前端 乱序超标量执行 ...

  4. Intel® Nehalem/Westmere架构/微架构/流水线 (5) - 高速缓存 存储器子系统

    Cache and Memory Subsystem Intel Nehalem微架构的每个处理器核包括一个一级指令高速缓存,一个一级数据高速缓存,以及一个二级混和式(指令与数据)高速缓存.单个物理处 ...

  5. Intel® Nehalem/Westmere架构/微架构/流水线 (4) - 执行引擎

    Execution Engine 译码后微指令队列IDQ(参看上图最右侧)将微指令流发送给流水线的分配/重命名(allocation/renaming)部件.乱序引擎共支持最多可达128条进行中微指令 ...

  6. Intel® Nehalem/Westmere架构/微架构/流水线 (2) - 流水线概述

    Microarchitecture Pipeline Intel Nehalem微架构延续了65nm制程的Intel Core微架构上的4宽度流水线.下图是在Intel Core i7处理器上采用的N ...

  7. Intel® Nehalem/Westmere架构/微架构/流水线 (9) - 系统软件增强/能耗增强

    Enhancements for System Software Intel Nehalem微架构对硬件的增强,大部分同时让应用程序和系统软件收益,除此以外,还有一些增强主要服务于系统软件. 锁原语( ...

  8. Intel® Nehalem/Westmere架构/微架构/流水线 (8) - 重复字符串指令增强

    REP String Enhancement REP指令前缀与MOVS/STOS指令连用以及寄存器ECX的值做计数器,这种组合常常用于实现类似于memcpy()/memset()这样的库函数,被称为& ...

  9. Intel® Nehalem/Westmere架构/微架构/流水线 (7) - 存储转发增强

    Store Forwarding Enhancement 当一个读存操作紧跟在一个写存操作后,如果这两个操作访问同一个存储器地址,在符合转发条件的情况下,处理器可以直接将写存操作的数据发送给读存操作: ...

最新文章

  1. 使用ajax实现多个查询条件功能以及下拉分页
  2. 在目录下所有文件中查找字符串
  3. HTML5怎么让图片和文字重叠,利用HTML5实现全屏图片文字过渡切换特效
  4. 软件工程第二次作业—结对编程
  5. leetcode算法题--和为s的连续正数序列
  6. 傅立叶变换和小波变换入门学习
  7. 漫谈分布式事务的那些解决方案
  8. 使用命令行加载 jMeter 自定义配置文件里的自定义 property
  9. python3多线程queue_Python多线程(3)——Queue模块
  10. elasticsearch亿级数据量全量索引导入优化方案
  11. c#中connect函数_Flink算子使用方法及实例演示:union和connect
  12. 伪样式:hover ,:active,:focus
  13. mysql空间数据类型解释_MySQL空间数据类型
  14. 使用定位技术,边界判断要谨慎
  15. windows下解压tar.gz文件
  16. 学习Spring框架这一篇就够了
  17. windows 定时清理指定目录文件bat
  18. 【第一个Vue上手小项目Day4】史上最简单的Element-table表格+Pagination 分页(前后端结合)
  19. Loj一本通刷题记录
  20. sox处理mp3_SoX — 音频处理工具里的瑞士军刀

热门文章

  1. 从零开始学Pytorch(零)之安装Pytorch
  2. dao.php,DAO.php · Dodd/Training Lab - Gitee.com
  3. Spark:Yarn-cluster和Yarn-client区别与联系
  4. 友盟统计集成_友盟+智能超链U-Link,助力开发者拥有更极致的分享体验_互联网_科技快报...
  5. ajax中data传参报错
  6. 华为鸿蒙5g售价,华为首款5G手机售价公布,余承东透露鸿蒙将用于连接家庭设备...
  7. office2019安装Mathtype7.4运行时错误‘53’,文件未找到:MathPage.WLL
  8. 计算机技术单科线,考研分数线怎么看,计算机专业的,国家线是什么 单科?...
  9. was 连接池满了怎么重启_HttpClient 连接池设置引发的一次雪崩!
  10. cnn神经网络_神经网络之CNN和RNN