Performance 对缓冲区和未修改的寄存器重新排序

Performance 对缓冲区和未修改的寄存器重新排序,performance,assembly,x86,intel,cpu-architecture,Performance,Assembly,X86,Intel,Cpu Architecture,重新排序缓冲区每个时钟周期最多只能处理三次读取 来自最近未修改的寄存器 那是从哪里来的。但是,我的疑问是: 当寄存器被修改时,为什么重要?为什么这很重要?首先,这只适用于Sandybridge之前的Intel P6系列微体系结构。尼哈勒姆警察局 这一P6系列瓶颈通常称为寄存器读取暂停,或者有时称为ROB读取暂停,因为值在发布/重命名期间被读取到ROB中;将UOP分配到执行端口时,执行单元的输入始终从ROB或旁路网络读取 AMD、Intel P4和Intel Sandybridge系列采用物理寄存

重新排序缓冲区每个时钟周期最多只能处理三次读取 来自最近未修改的寄存器

那是从哪里来的。但是,我的疑问是:
当寄存器被修改时,为什么重要?为什么这很重要?

首先,这只适用于Sandybridge之前的Intel P6系列微体系结构。尼哈勒姆警察局

这一P6系列瓶颈通常称为寄存器读取暂停,或者有时称为ROB读取暂停,因为值在发布/重命名期间被读取到ROB中;将UOP分配到执行端口时,执行单元的输入始终从ROB或旁路网络读取

AMD、Intel P4和Intel Sandybridge系列采用物理寄存器文件设计。SnB系列在寄存器读取端口上没有瓶颈。还是这样?当我们在HSW和更高限制SKL上读取很多寄存器时,某些影响似乎会限制吞吐量。但这可能是瓶颈调度,而不是发布/重命名;我没有做爆炸实验,只是稳态。没有理由认为该机制与P6系列相同

最近修改的体系结构寄存器是由尚未失效的指令编写的寄存器。ROB1中已有数据,而无需在发布/重命名期间从永久寄存器文件中读取。随着指令添加到ROB中,在发出/重命名期间,每个周期可以读取的此类冷寄存器数量有一个限制。尼哈勒姆增加了一些

阿格纳·福格(Agner Fog)的微生物学PDF,您已经阅读过,它解释了细节;请参阅PPro部分,以及Core2/Nehalem部分中的更新


脚注1:对于尚未完成执行的输入,或正在从旁路网络中的一个执行单元转发到下一个执行单元。

首先,这仅适用于Sandybridge之前的Intel P6系列微体系结构。尼哈勒姆警察局

这一P6系列瓶颈通常称为寄存器读取暂停,或者有时称为ROB读取暂停,因为值在发布/重命名期间被读取到ROB中;将UOP分配到执行端口时,执行单元的输入始终从ROB或旁路网络读取

AMD、Intel P4和Intel Sandybridge系列采用物理寄存器文件设计。SnB系列在寄存器读取端口上没有瓶颈。还是这样?当我们在HSW和更高限制SKL上读取很多寄存器时,某些影响似乎会限制吞吐量。但这可能是瓶颈调度,而不是发布/重命名;我没有做爆炸实验,只是稳态。没有理由认为该机制与P6系列相同

最近修改的体系结构寄存器是由尚未失效的指令编写的寄存器。ROB1中已有数据,而无需在发布/重命名期间从永久寄存器文件中读取。随着指令添加到ROB中,在发出/重命名期间,每个周期可以读取的此类冷寄存器数量有一个限制。尼哈勒姆增加了一些

阿格纳·福格(Agner Fog)的微生物学PDF,您已经阅读过,它解释了细节;请参阅PPro部分,以及Core2/Nehalem部分中的更新


脚注1:或正在从旁路网络中的一个执行单元转发到下一个执行单元,对于尚未完成执行的输入。

您语句的上下文不清楚,但我猜他指的是早期奔腾将永久寄存器读取的数量增加到三个,希望三个寄存器读取端口足以防止寄存器读取暂停。您语句的上下文不清楚,但我猜他指的是早期奔腾将永久寄存器读取的数量增加到三个,希望三个寄存器读取端口足以防止寄存器读取暂停@Gilgamesz:嗯,阅读Agner Fog的微体系结构指南,你已经是了,不是吗?还是来自《优化装配指南》的建议?从Sandybridge部分开始,因为这是目前主要的相关uarch。一旦您了解管道如何处理指令,《优化asm指南》中的建议将更有意义@Gilgamesz:嗯,阅读Agner Fog的微体系结构指南,你已经是了,不是吗?还是来自《优化装配指南》的建议?从Sandybridge部分开始,因为这是目前主要的相关uarch。一旦您了解管道如何处理指令,《优化asm指南》中的建议将更有意义。