水木社区手机版
首页
|版面-编程技术(Programming)|
新版wap站已上线
返回
下页
|
尾页
|
1/2
|
转到
主题:64 位计算机,内存地址对齐四字节还是八字节比较有效率?
7楼
|
leadu
|
2023-08-07 17:32:30
|
展开
装个vc,主要体系架构的源代码都有,我这的是在
C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.36.32532\crt\src\
下面,打开memcpy.asm,内容都在里面
x64的我看了一下,注释比代码都多,非常适合新手学习入门,可以明白什么叫软件工业
实在懒得装可以看看
https://gist.github.com/Const-me/3290266d2a5f51409eb813d39b28007c
这个代码不知道是哪个版本的,不建议看
vc x64这个memcpy.asm写的不错,常见的问题都处理了,
不是专门做这块的一线工程师写出这份来,花费时间搞不好要一个月以上了
上面z16166发的intel的实现
https://github.com/cranechu/dpdk/blob/master/lib/librte_eal/common/include/arch/x86/rte_memcpy.h
代码质量比vc这份差点,但也说的过去
敲黑板,注意精神,下面有搞笑的,libgcc的
https://github.com/gcc-mirror/gcc/blob/master/libgcc/memcpy.c
初学者算法课上日常作业水平...
这就是我为什么老是吐槽开源社区,东西缺乏设计感,个个像玩具
【 在 hgoldfish 的大作中提到: 】
: 假定要执行 memcpy(*dest, *src, n) 复制一段内存。正常在 amd64 计算机下,dest, src 两个指针最好是对齐的。
: 那么,不同的计算机架构会要求不同的对齐方式吗?还是说只要对齐到 4 个字节就行?
--
FROM 114.248.175.*
10楼
|
leadu
|
2023-08-08 00:03:58
|
展开
发完我察觉到了,看了一眼glibc的,发现和libgcc的区别不大就没有更正
https://codebrowser.dev/glibc/glibc/string/memcpy.c.html
glibc的这个就是在libgcc加上了老鱼以为的对齐,我觉得搞不好是负优化,在现代cpu深流水情况下不做benchmark,这种新手的优化方式是高度可疑的
【 在 adoal 的大作中提到: 】
: 但是正常的GNU版libc runtime是glibc,libgcc是gcc的内部用库。
: (好吧,其实glibc的也就算还凑合)
:
--
FROM 114.248.175.*
13楼
|
leadu
|
2023-08-08 02:36:25
|
展开
这不是经常在体系版刷支付宝kpi的maling么,他上次吹他一个什么数据库的优化,我质疑没有benchmark,他支支吾吾的。
他是14年提交的
https://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=05f3633da4f9df870d04dd77336e793746e57ed4
你那个intel的至少是用的2016年的版本GCC 6.2 August 22, 2016
比gcc/glibc高25%应该带了他的patch了
gcc当时的版本还是不行的
glibc最新的代码质量自己看吧
https://codebrowser.dev/glibc/glibc/sysdeps/x86_64/multiarch/
我觉得比vc的还是要差的,不过也许有我不熟悉glibc环境的原因
至于实际性能,glibc的还是跑不过商业背景的folly,
https://github.com/nadavrot/memset_benchmark
而且纯看代码来说,folly的优化并不如vc做的多,不知道实际跑起来怎么样
【 在 z16166 的大作中提到: 】
: 刚又看了一下,glibc的memcpy的最新代码应该不是这个代码,代码贡献者是个国人,他有发帖子说。新代码也是各种优化
:
https://www.zhihu.com/question/35172305
: fb folly也有个用prefetch的实现
: ...................
--
FROM 114.248.175.*
16楼
|
leadu
|
2023-08-08 12:51:43
|
展开
技术版块一句技术不聊,却突然跑出来想judge,有病啊
【 在 philbloo 的大作中提到: 】
: 你这几句话把你卖了
: 1 全部都是 speculation
: 2 没有自己的思考,把眼界当作自己的能力
: ...................
--
FROM 114.248.175.*
19楼
|
leadu
|
2023-08-08 15:26:05
|
展开
少装这b毛,你要真像你说的这样根本就不会参加这个帖子。
进来一句技术不聊,光顾着装b,不就是十几岁少年想装b吸引女生注意的小把戏么。
直说吧,你是想吸引我的注意,还是老鱼、豆大,俞飞鸿还是全版的
而且我原帖透露的主观信息很少,你却硬是按照你的价值观推测一些东西,这些话是足以逆推你的想法的,就像debug一样
1.“如果你二十出头,那还可以理解。如果已经是老帮菜了,那可以肯定,已经没有机会做更好的程序员了。”
水木现在蠢货遍地,留下的都是一些用水木多年的用户了。这些用户很多现在是不在乎别人看法的,不需要。
而你还用这个装b,说明你“认为”别人在乎。这个反应了你的想法,你需要别人认同你的工作,所以你也以为别人也需要别人认同。
这句话表现了你对自己工作成果缺乏信心,内心脆弱
2.“以为把别人比下去就是你的价值所在 ”
这个不就是网上最近这两年讨论的社会问题,其中一个看法,认为国人互相倾轧问题过于严重么。
结合你芬兰的ip,这句话蛮有意思。
再加上上面你说的独立思考的,似乎你对这俩很敏感。
是不是你想融入芬兰社会,但是又有些自卑敏感,担心表现出倾轧和不会独立思考的问题,所以你认为这俩是在国内论坛批评别人的好方向?
你自己觉得倾轧不好,然后一句技术不提,句句想踩别人,也真是拧巴的
脆弱敏感又拧巴,有空还是看看心理医生吧,免得症状更加严重
【 在 philbloo 的大作中提到: 】
: 码农灌水的地方而已。聊技术的话,你跟不上。
:
--
FROM 114.248.175.*
20楼
|
leadu
|
2023-08-08 15:37:03
|
展开
现代cpu基本不需要考虑总线对齐
非对齐的需要两次总线读写,这个是几十年前的体系架构书的内容了。
随便一搜就有的测试结果,对不对齐没有可见变化
https://jacquesheunis.com/post/memory-alignment-in-2021/
【 在 hgoldfish 的大作中提到: 】
: 也就是说 memcpy() 已经考虑了不对齐的情况,所以程序员不需要特别的优化。但是操作内存的时候,为了让 load/store 更加高效,应该尽量按计算机的字对齐是吧?64 位计算机就对齐到 8 个字节是最好的?
:
--
FROM 114.248.175.*
22楼
|
leadu
|
2023-08-08 17:49:29
|
展开
这就破防啦?装b不要打啥帮助别人旗号,是帮马凌还是为了自己装b大家都看到出来。
而且你装b的话要是一点干货都不掏,大家其实也很难搞。但你要是掏干货那得是硬货。
而你这掏的都是啥b毛玩意,数论、verilog、pipeline、simd、fpga、fft这些都是本科生研究生相关专业的课后作业啊?
现在居然有人用课后作业装b?世风日下呐
芬兰小留是吧,马凌那边没有硬件职位,你舔他也白舔。
我大概是6年前搞过一段时间的智能网卡,fpga线路的。你看我帖子看的少,没有见过我喷dpu的时候,否则你不会试图装这个b。
剩下的还需要我多说什么么?
【 在 philbloo 的大作中提到: 】
: 磕磕巴巴的说什么呢 你是文科生吗?现在倒来装理客中了,踩其他人的时候你不也是装大尾巴狼吗
: 我就是看不惯你踩maling 所以也踩你一脚 因为我知道我踩你绰绰有余
: 信不信由你 还别说我写的论文和slides 连我写的代码-不管是c还是py还是c++还是verilog-你都看不懂
: ...................
--
FROM 114.248.175.*
23楼
|
leadu
|
2023-08-08 18:12:41
|
展开
其实老鱼这个问题我不太感兴趣,随便一搜就有答案的事情。
但是可以趁机锤炼一下我对开源的观点,这个我倒是感兴趣,毕竟前几年去Linux版踢了几次版没有什么收获
但是却没有想到会debug一个脆弱小留,真是充满意外呐
--
FROM 114.248.175.*
27楼
|
leadu
|
2023-08-08 19:20:48
|
展开
总线对齐这个问题是实际存在的,你问的是x64,这个是现代cpu,它处理了不代表别的cpu都处理了
而且有别的比如atomicity等问题,需要具体问题具体分析。
但就你主贴问的memcpy非总线对齐有没有性能影响,是基本没有影响的,毕竟intel的工程师上班总得干点活吧
【 在 hgoldfish 的大作中提到: 】
: 那为啥 c 语言编译器默认都是对齐的呢?不默认 __attribute__((__packed__)) 算了。
:
--
FROM 114.248.175.*
28楼
|
leadu
|
2023-08-08 19:41:18
|
展开
论坛上装b是靠可以给版友带来多少价值,而不是“我做个动作你会吗”,真幼稚。老鱼提出的问题,你能不能给解答了,并且提出改进方案什么的。
就算看看你的问题,密码学用的dot product一般都不难。你脑子被门夹过还是怎么地,一直用cs和math本科课程的问题装b
“比NIST的spec少了上千次load/store不说 还更安全” 你密码学咋过的,这种傻b问题也能犯而且还好意思说出来,赶紧重新流片吧
你这破防之后智商也下降了啊,脆弱小留->脆弱傻留
【 在 philbloo 的大作中提到: 】
: 行 露一手给你看看 dilithium sign 算法 我做的改进 比NIST的spec少了上千次load/store不说 还更安全
: IP的一小部分是我写的 sim和driver所有代码是我写的 某头牌芯片厂测试了说速度比他们想象的快得多
: 接下来要做的是 arithmetic to boolean masking (a2b) 和 b2a,考虑怎么加vector co-processor,考虑怎么做dpa-resistency test
: ...................
--
FROM 114.248.175.*
下页
|
尾页
|
1/2
|
转到
选择讨论区
首页
|
分区
|
热推
BYR-Team
©
2010.
KBS Dev-Team
©
2011
登录完整版