谢谢。。各位大神。这种如何在内存中匹配内存配对的要求如何匹配内存条


Time:2023-05-15 09:33:17

关于谢谢。。各位大神。这种如何在内存中匹配的问题,我们总结了以下几点,给你解答:

谢谢。。各位大神。这种如何在内存中匹配



性能是好软件最重要的方面之一。 出于这个原因,许多优化技术被用来获得良好的性能。 数据对齐当然是其中之一。

什么是数据对齐?

数据对齐是以 CPU 可以更有效地访问数据的方式将数据放置在内存中。 例如,如果数据被安排为位于可被数据大小整除的地址的 4 字节字,则 32 位 CPU 可以更有效地访问数据。

结构被分配为一个连续的内存块,每个元素都有自己的大小、偏移量和对齐方式。 让我们创建一个 Article 结构,看看编译器如何确定其元素的位置。 假定 64 位 CPU。

struct Article{ char *title; char *author; char *body; bool is_published; bool is_member_only; int no_comments; int no_claps;};

结构与最大成员的自然对齐要求对齐。 这种对齐是通过将分配的内存划分为大小相等的段来实现的。 每个段的大小对应于最大对齐。

Article 结构是 8 字节对齐的,对应于最大对齐的 char 指针类型的对齐方式。 为了正确对齐,结构中的每个成员都必须放置一个与其自然对齐相匹配的偏移量。 这可能需要在结构成员之间插入填充字节。

请注意,在 no_comments 之前有 2 个填充字节。 这是因为 no_comments 是 4 字节对齐的,紧跟在 is_published 和 is_member_only 之后占用 2 个字节的空间,所以增加了 2 个字节以适应 no_comments 的自然对齐。 另请注意,在成员no_claps 之后的末尾添加了4 个填充字节,以组成一个完整的8 字节段。

省略填充以减小尺寸

对齐要求会增加结构的大小。 如果您有大量 RAM,这很好,但在像微控制器这样的受限环境中,您可能会耗尽内存。 解决此问题的一种方法是通过使用 packed 属性提示编译器在可能的情况下执行压缩。

struct Article{ char *title; char *author; char *body; bool is_published; bool is_member_only; int no_comments; int no_claps;}__attribute__((packed));

packed 属性告诉编译器放置结构成员而不在其间填充字节。 这减少了结构的大小,但它不能保证数据对齐并且可能会降低性能。

打包结构需要 CPU 做更多的工作来获取剩余的字节。 这清楚地反映在为常规结构和压缩结构生成的汇编代码的长度上。

/* gcc X84-64 调用函数的汇编代码 常规结构和打包结构上的“Article_Copy”。 使用 godbolt.org 生成的汇编代码*/// Regular structmain: push rbp mov rbp, rsp sub rsp, 48 mov QWORD PTR [rbp-48], mov QWORD PTR [rbp-40], 0 mov QWORD PTR [rbp-32], 0 mov QWORD PTR [rbp-24], 0 mov QWORD PTR [rbp-16], 0 push QWORD PTR [rbp-16] push QWORD PTR [rbp-24] push QWORD PTR [rbp-32] push QWORD PTR [rbp-40] push QWORD PTR [rbp-48] call Article_Copy add rsp, 40 mov eax, 0 leave ret// Packed structmain: push rbp mov rbp, rsp push rbx sub rsp, 56 mov QWORD PTR [rbp-64], 0 mov QWORD PTR [rbp-56], 0 mov QWORD PTR [rbp-48], 0 mov QWORD PTR [rbp-40], 0 mov WORD PTR [rbp-32], 0 sub rsp, 40 mov rax, rsp mov rcx, QWORD PTR [rbp-64] mov rbx, QWORD PTR [rbp-56] mov QWORD PTR [rax], rcx mov QWORD PTR [rax+8], rbx mov rcx, QWORD PTR [rbp-48] mov rbx, QWORD PTR [rbp-40] mov QWORD PTR [rax+16], rcx mov QWORD PTR [rax+24], rbx movzx edx, WORD PTR [rbp-32] mov WORD PTR [rax+32], dx call Article_Copy add rsp, 40 mov eax, 0 mov rbx, QWORD PTR [rbp-8] leave ret覆盖默认对齐方式

如前所述,结构与最大成员的自然对齐要求对齐。 但是如果你想对你的结构应用特定的对齐方式怎么办? 为此,请将 aligned 属性与 packed 属性一起使用。

struct Article{ char *title; char *author; char *body; bool is_published; bool is_member_only; int no_comments; int no_claps;}__attribute__((packed,aligned(4));

Article 结构现在是 4 字节对齐的,而不是 char 指针类型的 8 字节对齐。 请注意,编译器可能仍会插入填充字节以保持数据对齐。

最后说明

结构的对齐由编译器自动完成,因为 CPU 访问对齐的数据要快得多。 结构对齐是通过将结构内存空间划分为大小相等的段来实现的。 每个段的大小是最大比对的大小。 这可能需要在成员之间插入填充字节以保持正确的数据对齐。 您还可以使用 aligned 属性指定自定义对齐方式。 在受限环境中,较小的结构大小比速度更受青睐,packed 属性可用于省略填充并减少结构大小,但不能保证数据对齐。

目前为止就这样了。

如果您喜欢这篇文章,请关注我以获取更多此类文章。 另外,如果您有任何建议或反馈,请在下方发表评论。

感谢阅读,我们下一篇再见。

内存配对的要求

►玖合内存条怎么选

"

众所周知,电脑主板有多种型号,而每种型号适配的内存条也不同,主板和CPU的运算能力也是有上限的,那么如何知道主板适配的内存条频率呢

"

第一步:搞清楚电脑主板型号,一般有两种方式❶ 通过电脑系统查看

1.打开电脑后在桌面上找到【控制面板】并双击打开,如下图所示。

2.在控制面板里直接点击打开【硬件和声音】,如下图所示。

3.在硬件和声音界面里的【设备管理器】并点击打开,如图所示。

4.在打开的Windows设备管理器对话框里找到【系统设备】并点击前面的箭头,如下图所示。

5.将系统设备展开后就可以查看电脑主板型号了,如下图所示。

❷ 鲁大师检测查看

1.在电脑桌面打开鲁大师程序,进入鲁大师程序主页面。

2.在鲁大师程序主页面点击硬件检测。

3.在硬件检测页面,选择主板信息。即可查看主板品牌以及型号

查看主板型号后 可对比下列详细表格,进行内存条和主板适配的对照

DDR3

DDR4

DDR4

►玖合内存条怎么买

"

俗话说:买的贵不如买得对

"那么“玖合内存”条怎么选择呢我们从三个方面来看

❑正常家用(看电影 听音乐 聊天)❏游戏娱乐(网络游戏:英雄联盟 绝地求生等)❏办公专业(PS PR 多应用双开)

正常家用

推荐:京东自营:玖合内存 DDR3/DDR4 4G/8G 1866/2133

十年前的电脑主板大多是DDR3(第三代主板) 主板所能主持的内存条运算频率基本都在2133以内 原机大多自带 DDR3 2G/4G 1333的内存条 所以当软件升级后,就会带来内存条的运算不足

游戏娱乐

推荐:京东自营:玖合内存 DDR3/DDR4 8G/16G 2666/3000

这款DDR4 8G 2666 是现阶段电脑运行内存的基本标准 且5年以内的电脑主板大多的支持双通道 建议购买两条 支持XMP 一键超频 能够轻松运行绝地求生等大型网络游戏

办公专业

推荐:京东自营:玖合内存 DDR4 16G/32G 3000/3200

专业办公 需要的是一款稳定且兼容性高的内存 不一定得都超频 “玖合 DDR4 16G 3200” 兼容 高稳定性 确保电脑的高效运行

硬件安装

"

即插即用 支持XMP一键超频 针对Intel AMD 等主流平台就行优化兼容

"

装机注意事项

1

DDR3和DDR4是有外形区分的,卡槽的卡点对位,按下锁紧视为安装成功

2

断电安装,安装完成后通电“部分”主板会出现自检,需要重启三次方可开机(例如微星/技嘉主板) BIOS的复位,SATA的启动选择错误会导致无法开机

3

不开机蓝屏 主要原因:内存条型号不匹配 系统文件损坏 病毒等 具体详情可在线咨询官方客服

尽量让自己有充足的信心去考试,因为比较重要的考试不可忽视,尽量不留空题,把题目做完才是最重要的。

如何匹配内存条



内存配对的要求



本文拓展问题:

内存如何搭配内存什么技术可以匹配数据传输内存对齐的规则详解内存怎么配置谢谢。。各位大神。这种如何在内存中匹配