当前位置: 首页 > 知识库问答 >
问题:

32位和64位寄存器是否会导致CPU微架构的差异?

孟乐逸
2023-03-14

我试图比较Peter Cordes在回答“将CPU寄存器中的所有位设置为1”的问题时提到的方法。

因此,我编写了一个基准测试,将所有13个寄存器设置为除e/rspe/rbpe/rcx之外的所有位1。

代码如下所示<代码>乘以32 nop用于避免DSB和LSD影响。

mov ecx, 100000000
Align 32
.test3:
    times 32 nop
    mov rax,-1
    mov rbx,-1
    ;mov ecx,-1
    mov rdx,-1
    mov rdi,-1
    mov rsi,-1
    mov r8,-1
    mov r9,-1
    mov r10,-1
    mov r11,-1
    mov r12,-1
    mov r13,-1
    mov r14,-1
    mov r15,-1

    dec ecx
    jge .test3
    jmp .out

我测试了他提到的以下方法,以及这里的完整代码

mov e/rax, -1                   

xor eax, eax        
dec e/rax               

xor ecx, ecx        
lea e/rax, [rcx-1]  

or e/rax, -1            

为了使这个问题更简洁,我将使用group1a(g1a)替换下表中的mov-eax,-1

下表显示,从组1到组3,当使用64位寄存器时,每个循环多1个周期。

交付的IDQ\u UOPS\u NOT\u也增加,这可能解释了周期数的增加。但这能解释每个循环多1个周期的确切原因吗?

此外,g2a和g2b的端口分布不同,不像g1a和g1b(g1a和g1b端口分布相同),或者g3a和g3b。

如果我注释乘以32 nop,这种现象就会消失。它与MITE有关吗?

环境:intel i7-10700、ubuntu 20.04和NASM 2.14.02。

用英语解释这个问题对我来说有点难。如果描述不清楚,请发表评论。

共有1个答案

钮晟
2023-03-14

所有示例中的瓶颈都是前置的。

我用我的模拟器uiCA分析了你的例子(https://uica.uops.info/, https://github.com/andreas-abel/uiCA). 它预测了以下吞吐量,这些吞吐量与您的测量值非常匹配:

 类似资料:
  • 基本上指令有8->16、8->32、8->64、16->32和16->64。 32->64的转换在哪里?我必须使用签名版本吗? 如果是的话,您如何使用完整的64位来表示无符号整数?

  • 问题内容: 我已经使用Java一段时间了,而我典型的设置新开发机的习惯要求从Oracle站点下载并安装最新的JDK。 今天这引发了一个不寻常的问题, 回想起来,我已经安装了之前的两个版本,并且很高兴将普通的工具链插入(Eclipse)。在我的日常编程中,我不会回想起曾经因为使用64位JRE(或为此目的而针对64位JRE)而不得不以其他方式进行更改或思考的事情。 根据我对64位和32位的理解- 确实

  • 问题内容: 我的电脑正在使用Windows 7 64位。但是将要部署我的jsp Web应用程序的服务器是32位。 我需要在PC上安装32位JDK / JRE才能进行开发吗?我正在使用Eclipse。 非常感谢你。 问题答案: 您绝对不需要安装32位JRE即可进行开发。您构建的Java代码不会跟踪您的64位。(我假设您没有使用JNI,这会使事情变得有些复杂。) 不过,您 可能 需要安装32位JRE进

  • 问题内容: 我想知道x86和x64中的64位长吗? 问题答案: 是。Java 在任何JVM上都是64位,无一例外。所有Java原语类型都是完全可移植的,并且在所有实现中都具有固定的大小。

  • 问题内容: 我正在创建一个非常简单的应用程序,该应用程序可以读取和显示文本文件并进行搜索。 我问自己是否有兴趣向用户提出32位和64位版本。 区别仅在于使用64位版本访问更多的内存堆大小,还是还有其他兴趣? 32位编译程序是否可以在64位JVM上运行(我认为是) 问题答案: 任何 程序的32位和64位版本之间的唯一区别是机器字的大小,可寻址内存的数量以及所使用的操作系统ABI。对于Java,语言规

  • 问题内容: 在Java中,是否保证int始终为32位,而长为64位,而不管体系结构是32位还是64位? 问题答案: Java是平台无关的。所以是32位,并且是64位的。