cpu-architecture相关内容

为什么处理排序数组比处理未排序数组更快?

这是一段 C++ 代码,显示了一些非常奇特的行为.出于某种奇怪的原因,对数据进行排序(在定时区域之前)奇迹般地使循环快了近六倍. #include #include #include int main(){//生成数据const unsigned arraySize = 32768;整数数据[数组大小];for (unsigned c = 0; c = 128)总和 += 数据 [ ..
发布时间:2021-11-19 22:24:12 Java开发

Aarch64 什么是延迟转发?

“延迟转发"“Arm Neoverse E1 核心软件优化指南"(以及他们针对其他一些 CPU 型号的优化指南): 指导组说明执行延迟执行吞吐量注意事项 乘法累加(32 位) MADD, MSUB 3 (2) 1 2 乘法累加(64 位) MADD, MSUB 5 (4) 1/3 2 (2) 乘法累加流水线支持从类似的 μOP 中延迟转发累加操作数,允许典型的乘法累加 μOP 序列 ..
发布时间:2021-11-17 22:45:32 其他开发

我们是否需要为“armv7"编译 iOS 应用程序?和“arm64"如果我的部署目标是 8.0?

我的应用支持iOS8.0及以上版本.我知道从 iOS7 开始它的 arm64 位架构.在这种情况下,我们是否需要为“armv7"和“arm64"切片编译二进制文件? 如果我单独为 arm64 编译,我可以减少我的应用程序大小.这是正确的方法吗? 请帮忙. 解决方案 这里您可以找到对所有 iPhone 和 Mac CPU 架构的非常容易理解的解释. 当我决定从支持的架构中删 ..
发布时间:2021-11-17 22:45:12 移动开发

aarch64 中的零寄存器“zr"基本上是接地的吗?

最近开始搞乱 AArch64 程序集,我注意到它有一个严格分配给 zero 的寄存器,而(大多数)其他架构你只会 xor var, var. 我正在阅读有关 zr 的网站将其解释为 零的参考点,这听起来很像我在直流电子中定义接地的方式.而且因为 ARM 被业余爱好者使用,所以在代码中将电路中的接地连接到零对我来说有点意义. 我敢肯定它比这复杂得多,但这是一个安全的类比吗?与其他获得“0 ..
发布时间:2021-11-17 22:43:19 其他开发

Windows RT 上 Environment.GetEnvironmentVariable(“PROCESSOR_ARCHITECTURE") 和 OperatingSystem.Platform 的输出

我正在编写一个跨平台的应用程序,我真的需要一些关于系统的基本信息.不仅仅是为了切换它(我可以使用编译变量,因为我在特定于平台的项目中链接了相同的代码). 所以不要告诉我知道平台和架构信息是没有用的: Windows RT 和 c# 任何人都可以向我提供此信息,因为我没有任何简单的方法可以自己获取它(我没有模拟器/设备可以使用,我使用的是安装了 linux 的上网本,所以没有VT-d能 ..
发布时间:2021-11-17 22:37:02 C#/.NET

Windows RT 上 Environment.GetEnvironmentVariable(“PROCESSOR_ARCHITECTURE") 和 OperatingSystem.Platform 的输出

我正在编写一个跨平台的应用程序,我真的需要一些关于系统的基本信息.不仅仅是为了切换它(我可以使用编译变量,因为我在特定于平台的项目中链接了相同的代码). 所以不要告诉我知道平台和架构信息是没有用的: Windows RT 和 c# 任何人都可以向我提供此信息,因为我没有任何简单的方法可以自己获取它(我没有模拟器/设备可以使用,我使用的是安装了 linux 的上网本,所以没有VT-d能 ..
发布时间:2021-11-17 22:36:07 C#/.NET

是否应该为互斥量获取-交换循环(或队列获取-加载循环)组合内存栅栏,还是应该避免?

假设重复获取操作,尝试加载或交换一个值,直到观察到的值是所需的值. 让我们以 cppreference 原子标志示例为起点:> void f(int n){for (int cnt = 0; cnt 我希望 x86 不会有任何变化. 我在想: 在存在差异的平台 (ARM) 上,此更改有好处还是坏处? 是否会干扰使用或不使用yield指令的决定? 我不仅对 atomi ..

除了提供必要的保证外,硬件内存屏障是否可以更快地了解原子操作?

TL;DR:在生产者-消费者队列中放置一个不必要的(从 C++ 内存模型的角度来看)内存栅栏或不必要的强内存顺序是否有意义以牺牲可能更差的吞吐量来获得更好的延迟? C++ 内存模型是在硬件上执行的,方法是为更强的内存顺序设置某种内存栅栏,而不是在较弱的内存顺序上设置它们. 特别是,如果生产者做了store(memory_order_release),而消费者用load(memory_o ..
发布时间:2021-11-17 22:32:36 C/C++开发

除了提供必要的保证外,硬件内存屏障是否可以更快地了解原子操作?

TL;DR:在生产者-消费者队列中放置一个不必要的(从 C++ 内存模型的角度来看)内存栅栏或不必要的强内存顺序是否有意义以牺牲可能更差的吞吐量来获得更好的延迟? C++ 内存模型是在硬件上执行的,方法是为更强的内存顺序设置某种内存栅栏,而不是在较弱的内存顺序上设置它们. 特别是,如果生产者做了store(memory_order_release),而消费者用load(memory_o ..
发布时间:2021-11-17 22:31:54 C/C++开发

为什么ARM说“一个链接寄存器支持快速叶函数调用"?

我最近接触到了链接寄存器和叶函数的概念. 我从之前的 SO 读取中了解到,LR 告诉了代码之前在执行期间的位置.我还了解到叶函数是位于函数调用层次结构末尾的函数. ARM 维基百科页面说: 链接寄存器支持快速叶函数调用. 为什么这个说法是真的?我看了ARMARM(架构参考手册),关于链接寄存器的信息很少. 解决方案 在一些体系结构上(例如 x86、x86_64),函 ..
发布时间:2021-11-17 22:26:10 其他开发

对于ARM,为什么单条STM指令一般比多条STR指令快?

是不是跟一些预取技术有关?还是具有DDR访问时序特性? 解决方案 IIRC 从 ARMv5TE 开始,写入缓冲区和 L1 缓存的路径为 64 位宽,以容纳 LDRD/STRD 指令.这允许 STM 每个周期写入两个寄存器. 您还将节省一点 L1 指令缓存,并且在双核上只使用一个流水线,这也是一个额外的好处. ..
发布时间:2021-11-17 22:20:13 其他开发

ARM Cortex-M3 启动代码

我试图了解 Keil (realview v4) 附带的用于 STM32 微控制器的初始化代码是如何工作的.具体来说,我试图了解堆栈是如何初始化的. 在文档中 在 ARM 的网站上,它提到了 startup_xxx.s 中的一个例程,__user_initial_stack_heap,不应使用超过 88 字节的堆栈.你知道这个限制来自哪里吗? 似乎当重置处理程序调用 System_In ..
发布时间:2021-11-17 22:15:25 其他开发

将目标文件转换为另一种架构

我正在尝试将 Wifi-Dongle 与 Raspberry Pi 一起使用.加密狗的供应商提供了一个 Linux 驱动程序,我可以在 ARM 架构上成功编译该驱动程序,但是,驱动程序附带的一个目标文件针对 x86 架构进行了预编译,导致链接器失败. 我知道再次编译那个(相当大的)文件会容易得多,但我无法访问源代码. 是否可以将该目标文件从 x86 架构转换为 ARM 架构? 谢 ..
发布时间:2021-11-17 22:14:27 服务器开发

英特尔的最后分支记录功能是英特尔处理器独有的吗?

Last Branch Record 是指寄存器对 (MSR) 的集合,这些寄存器对存储与最近执行的分支相关的源地址和目标地址.它们受英特尔酷睿 2、英特尔至强和英特尔凌动处理器系列的支持.http://css.csail.mit.edu/6.858/2012/readings/ia32/ia32-3b.pdf 文档有更多信息,如果您有兴趣. 类似 LBR 的功能是否仅在英特尔微处理器中可用 ..
发布时间:2021-11-17 22:14:21 其他开发

ARM 与 x86 的主要区别是什么?

我不太想知道在每个平台上开发代码时程序员习惯的或他觉得更容易做的事情等方面的“小字"差异.我也对细节不感兴趣核心的物理差异(如果适合您的叙述,我不介意提及它们,我只是不想关注上述内容) 我只是在寻找为什么像 x86 这样的 CISC 架构优于 RISC 架构,或者不是? 我的意思是,如果您可以通过降低复杂性 (RISC) 来做所有事情,那么为什么要成为“复杂"(CISC) 有什么 ..
发布时间:2021-11-17 22:11:40 其他开发

AND 比整数模运算更快?

可以重新表达: 我 % 米 如: 我&(m-1) 哪里, i 是一个无符号整数 m 是 2 的幂 我的问题是:AND 操作会更快吗?现代 CPU 在单个指令中不支持硬件中的整数模吗?我对ARM感兴趣,但在其指令集中没有看到模运算. 解决方案 比“单指令"更复杂这些日子.现代 CPU 是复杂的野兽,需要将它们的指令分解为问题/执行/延迟.它还通常取决于除 ..
发布时间:2021-11-17 22:09:51 其他开发

乱序执行会导致推测性内存访问吗?

当一个乱序处理器遇到类似的事情 加载 R1, 0x1337负载 R2, $R1负载 R3, 0x42 假设所有访问都会导致缓存未命中,处理器是否可以在请求 $R1 甚至 0x1337 的内容之前向内存控制器请求 0x42 的内容?如果是这样,假设访问 $R1 会导致异常(例如分段错误),我们可以认为 0x42 是推测加载的,对吗? 顺便说一句,当加载存储单元向内存控制器发送请求时,它能否 ..
发布时间:2021-11-17 22:09:12 其他开发

arm“版本"之间的差异?(仅限 ARMv7)

基本上我想知道 ARMv7l 和 ARMv7hl 之间的区别? 我有一个带有 armv7l 的 arm 处理器,并且有很多用于 armv7hl 的 rpm. 我不知道我必须搜索什么才能获得相关信息. 这个“后缀"叫什么?还有其他类型吗?他们的做法有何不同? 解决方案 我认为它表示为 little-endian 和 hard-float ABI 编译的包视情况而定 - 即它 ..
发布时间:2021-11-17 22:07:49 服务器开发

当前 CPU 上的分支预测有多普遍?

由于对性能的巨大影响,我从不怀疑我今天的桌面 CPU 是否有分支预测.当然可以.但是各种 ARM 产品又如何呢?iPhone 或 android 手机有分支预测吗?较旧的任天堂 DS?基于 PowerPC 的 Wii 怎么样?PS 3? 他们是否有一个复杂的预测单元并不那么重要,但他们是否至少有一些动态预测,以及他们是否按照预期执行一些指令分支. 具有分支预测功能的 CPU 的截止时间 ..
发布时间:2021-11-17 22:06:29 其他开发