腾讯云
开发者社区
文档
建议反馈
控制台
首页
学习
活动
专区
工具
TVP
最新优惠活动
文章/答案/技术大牛
搜索
搜索
关闭
发布
登录/注册
精选内容/技术社群/优惠产品,
尽在小程序
立即前往
文章
问答
(9999+)
视频
沙龙
1
回答
为什么
CPU
访问
对齐
内存
memory
、
cpu
、
memory-alignment
在过去的几天里,我一直在阅读关于
CPU
如何
访问
内存
的文章,以及如果被
访问
的对象分散在
CPU
访问
的不同块中,它可能会比预期的要慢。(或者中断,如果它不能进行未
对齐
访问
)。据我所知,
CPU
非常清楚0x1的存在。那么,所有的模糊都是因为
内存
控制器无法
访问
从0x1开始的
内存
块吗?或者是因为处理器字中的几个LSB在某些体系结构上是保留的?或者它们被保留的事实是
对齐
访
浏览 31
提问于2020-10-18
得票数 0
1
回答
双字节
内存
访问
粒度
memory
、
memory-access
、
granularity
我正在尝试学习关于
内存
对齐
的知识,但没有取得很大的成功。我使用的是IBM的文章。 但是,请注意从地址1读取时会发生什么。由于地址在处理器的
内存
访问
边界上不均匀下降,处理器还有额外的工作要做。这种地址称为未
对齐
地址。由于地址1未
对齐
,具有两字节粒度的处理器必须执行额外的
内存
访问
,从而减慢操作速度。
为什么
另一个
内存
浏览 1
提问于2013-05-18
得票数 2
回答已采纳
1
回答
为什么
CPU
不能直接
访问
不是总线宽度倍数的地址?
c
、
x86
、
cpu
、
cpu-architecture
、
memory-alignment
为了理解在Linux x86环境下C语言中结构填充是如何工作的,我读到
对齐
访问
比错误
对齐
访问
更快。虽然我理解其中的原因,但它们似乎都有一个基本的前提假设,即
CPU
不能直接
访问
非总线宽度倍数的地址,因此,例如,如果32位总线
CPU
被指示从地址"2“开始读取4个字节的
内存
,它首先从地址"0”读取4个字节,屏蔽前两个字节,从地址"4“读取另4个字节,屏蔽最后两个字节,最后结合两个结果,而不是一次读取4字节,以防4字节
对齐
浏览 9
提问于2022-11-28
得票数 0
回答已采纳
2
回答
为什么
128位变量应该与16字节边界
对齐
c++
、
c
、
memory-management
、
assembly
、
x86
我的理解是
CPU
不能
访问
任意地址。
CPU
可以
访问
的地址是其数据总线宽度的整数倍。为了提高性能,变量应该从这些地址开始(
对齐
),以避免额外的
内存
访问
。
对齐
到4字节边界的32位变量将自动
对齐
到8字节(64位)边界,这对应于x86 64位数据总线。但是
为什么
编译器要将128位变量与16字节边界
对齐
呢?不是8Byte边界?让我说得更具体一些。编译器使用变量的长度来
对齐
它。例如,如果
浏览 1
提问于2013-05-23
得票数 5
回答已采纳
2
回答
为什么
有大于4的
对齐
边界?
c++
、
compiler-construction
我不明白的是,
为什么
我们必须在大于4字节的边界上
对齐
内存
中的数据,因为所有其他边界都是4的倍数。假设一个
CPU
可以在一个周期中读取4个字节,那么如果数据大小为8字节,而在4字节/8字节/ 16字节上
对齐
,则性能基本没有差别。
浏览 3
提问于2014-09-04
得票数 3
回答已采纳
2
回答
在PowerPC中生成未
对齐
内存
访问
异常
c
、
gcc
、
embedded-linux
、
memory-alignment
、
powerpc
但是,ARM在未
对齐
内存
访问
时生成h/w异常。因此,我希望找到所有可能发生未
对齐
内存
访问
异常的实例。我考虑了以下几种选择。 使用-Wcast-
对齐
在gcc,这将抛出警告的未
对齐
访问
。使PowerPC生成未
对齐
异常。对于ARM,有一个选项/proc/
cpu
/
对齐
,用户可以通过它来决定如何处理异常。但是,PowerPC没有这样的选择。我的问题
浏览 2
提问于2014-09-11
得票数 6
回答已采纳
3
回答
分配对页
内存
块有什么好处?
c
、
memory-management
、
alignment
、
cpu
我意识到大多数
CPU
更擅长在
对齐
的
内存
地址上读取数据,即存储地址,即
CPU
字的倍数。然而,在许多地方,我读到了有关分配页面
对齐
内存
的文章。
为什么
有人想要一个与页面
对齐
的
内存
地址?
浏览 4
提问于2015-08-21
得票数 6
回答已采纳
2
回答
对于未
对齐
的
访问
,ARM
CPU
需要特殊的指针装饰吗?
c++
、
c
、
arm
支持非
对齐
内存
访问
的ARM
CPU
是否需要为C/ C++中的未
对齐
访问
进行特殊的指针修饰?或者可以将每个指针用于未
对齐
的
访问
?或者这是编译器依赖的?
浏览 3
提问于2022-03-18
得票数 0
2
回答
C/C++中特定地址边界上的
内存
对齐
是否仍能提高x86性能?
c++
、
c
、
performance
、
x86
、
latency
许多低延迟开发指南讨论如何在特定地址边界上调整
内存
分配: 有没有人有任何例子,他们已经发现了显着的性能改善了
对齐
内存
?
浏览 0
提问于2019-01-05
得票数 7
回答已采纳
2
回答
在目标
CPU
上检测
对齐
内存
需求
c
、
cpu-architecture
、
memory-alignment
、
predefined-macro
这些体系结构之间的(许多)区别之一是对
对齐
内存
访问
的需求。问题是,编译器是如此谨慎,以至于在这个过程中很多性能都会丢失。由于性能很重要,我们最好重写代码的某些部分,以便在严格
对齐
的cpus上具体工
浏览 0
提问于2012-02-17
得票数 3
回答已采纳
1
回答
Raspberry PI版本1没有检测到未
对齐
的
访问
。
raspberry-pi
、
arm
、
memory-alignment
为了修复执行未
对齐
内存
访问
的Redis的某些代码路径(由于Redis 3.2中引入的更改),我试图迫使PI记录未
对齐
内存
访问
的消息,或者在发生这种情况时向进程发送信号。通过这种方式,我可以确保Redis在未
对齐
的
访问
是违规的地方运行良好,并且在平台上运行得更快,这样的
访问
可以执行,但速度更慢。ARM v6 ( PI v1中使用的)显然能够处理未
对齐
的
内存
访问
,因此如果我使用以下命令
浏览 2
提问于2017-02-17
得票数 3
1
回答
如何在程序集中增加和
访问
内存
粒度?
assembly
、
memory
、
x86-64
、
cpu-architecture
、
memory-alignment
我试图了解
CPU
内存
对齐
和
CPU
内存
访问
粒度是如何工作的,但我有点困惑,因为我找不到
CPU
的
访问
粒度是什么,以及两者是如何相互作用来影响性能的。# (2) unalignedmovq start3, %rax # (4) aligned 这是否意味着(1)将导致
CPU
只从
内存
中读取1字节,或者
CPU
将读取64位
内存
浏览 1
提问于2021-01-18
得票数 0
回答已采纳
1
回答
为什么
go经常将字符串的数据存储在不
对齐
的地址上?
go
、
memory-management
、
memory-layout
我读过很多关于
内存
中值
对齐
的重要性的文章,因为
访问
未
对齐
地址可能会减慢操作速度,或者完全不工作,这取决于
CPU
体系结构(一个引用)。但是我注意到,在Go中实例化一个简单的字符串时,它通常会将字符串值存储在一个不
对齐
的地址上。有人能解释一下
为什么
Go要把这个值存储在一个不
对齐
的地址上吗?用
对齐
的不是更好吗?这仅仅是为了不浪费空间,同时依赖于现代
CPU
能够处理它的事实。还是因为虚拟
内存
层抽象物理
浏览 0
提问于2020-03-06
得票数 2
回答已采纳
2
回答
编译器如何知道物理地址的
对齐
方式?
c++
、
compiler-construction
、
alignment
、
memory-alignment
我知道一些
CPU
架构不支持未
对齐
的地址
访问
(例如,ARM4之前的ARM架构没有
访问
内存
中半字对象的指令)。针对该体系结构的一些编译器(例如,某个版本的GCC)在发现未
对齐
的地址时会使用一系列
内存
访问
,因此未
对齐
的
访问
对开发人员几乎是透明的。(请参阅) 但我想知道编译器如何知道地址是否
对齐
?即使虚拟地址是
对齐
的,产生的物理地址也可能是未
对齐
的,不是吗?物理地址的<e
浏览 1
提问于2012-12-19
得票数 11
回答已采纳
3
回答
SIMD本质:
对齐
操作与非
对齐
操作不同?
c++
、
x86
、
simd
、
intrinsics
我注意到,对于某些函数,有
对齐
版本和未
对齐
版本,例如_mm_store_si128和_mm_storeu_si128。我的问题是,这些函数的执行方式是否不同,如果不是,
为什么
是两个不同的版本?
浏览 8
提问于2015-08-18
得票数 2
回答已采纳
4
回答
填充物有什么好处?
c
、
structure
、
padding
struct MixedData char Data1; short Data3; int Data5;};
浏览 8
提问于2014-02-06
得票数 2
回答已采纳
1
回答
内部编译器错误: LLVM GCC 4.2编译器的总线错误
gcc
、
ios4
、
xcode4
、
compiler-errors
、
llvm-gcc
当我试图在默认编译器设置为LLVM GCC 4.2的设备上测试我的应用程序时,它给了我“内部编译器错误: Bus error",但它在GCC 4.2和LLVM编译器2.0上运行良好。
浏览 2
提问于2011-06-06
得票数 3
2
回答
计算在
内存
中查找变量x的最坏情况时间
memory
、
memory-management
、
operating-system
、
tlb
内存
访问
时间=2.5*10^-7 secTLB时间= 10^-8 给定虚拟地址、值x和3级页表,在最坏的情况下从
内存
读取x值需要多长时间?
浏览 2
提问于2016-10-23
得票数 1
回答已采纳
4
回答
“
内存
是8字节
对齐
的”是什么意思?
c
、
memory-management
、
memory-alignment
在一个项目中,我发现
内存
数据是"8字节
对齐
“的。有人能解释一下这是什么意思吗?
浏览 0
提问于2010-05-17
得票数 39
回答已采纳
3
回答
为什么
32位和64位程序的结构大小不同?
c++
、
c
____________________________________ 就我个人而言,我认为无论程序是32-bit还是64-bit,结构的大小都应该是16字节(因为char是1字节,double的
对齐
是
为什么
12程序中的大小是32-bit字节?
浏览 2
提问于2015-01-08
得票数 3
回答已采纳
点击加载更多
扫码
添加站长 进交流群
领取专属
10元无门槛券
手把手带您无忧上云
相关
资讯
计算机的CPU为什么不直接调取硬盘文件,而是要先载入到内存中
重磅硬核 | 一文聊透对象在JVM中的内存布局,以及内存对齐和压缩指针的原理及应用
AtmoicXXX与AtmoicXXXArray源码分析
你不好奇 CPU 是如何执行任务的吗?
你不好奇 CPU 是如何执行任务的?
热门
标签
更多标签
云服务器
即时通信 IM
ICP备案
云直播
实时音视频
活动推荐
运营活动
广告
关闭
领券