找回密码
 欢迎注册
楼主: 无心人

[讨论] B计划之大整数的内存复制

[复制链接]
 楼主| 发表于 2008-4-30 18:28:31 | 显示全部楼层
还不常用么? 复杂乘法经常用来分割整数吧?? 超越边界的movdqu movdqa性能下降很厉害 不过,我考虑太大的内存复制很少出现 所以可以考虑是否有提供两个函数的必要?
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2008-4-30 20:01:53 | 显示全部楼层
原帖由 liangbch 于 2008-4-30 17:21 发表 我用的关于 Intel CPU spec 的手册是2007.5发布的,但依然没有关于Core 2 L2 cache 的spec,哪位有更新的spec,告诉我一声。
  1. UINT32 max_extended_cpuid_value;
  2. __asm
  3. {
  4. mov eax, 0x80000000;
  5. CPUID;
  6. mov dword ptr[max_extended_cpuid_value], eax;
  7. }
复制代码
对于后期出品的 CPU,max_extended_cpuid_value 都会比较大,即支持更全面的 CPUID 命令:
  1. UINT32 u32CacheL2size, u32CacheL3size; //KB
  2. if ( 0x80000006 <= max_extended_cpuid_value )
  3. {
  4. __asm
  5. {
  6. mov eax, 0x80000006;
  7. CPUID;
  8. shr edx, 18;
  9. shr ecx, 16;
  10. shl edx, 9;
  11. mov dword ptr[ u32CacheL2size ], ecx;
  12. mov dword ptr[ u32CacheL3size ], edx;
  13. }
  14. }
复制代码
以上是从我的算法库中抠出的源代码。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2008-4-30 20:58:39 | 显示全部楼层
你的代码在P4上是否能直接得到 L2 Cache尺寸?
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2008-4-30 21:15:30 | 显示全部楼层
都可以, 至少至今尚未有任何识别出错的反馈。 在 32# 我已给出了新近 CPU 的 L2、L3 cache size 的读取通用方法。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2008-4-30 21:34:28 | 显示全部楼层
哦 那就简单了 不过,我说了有可能边界比L2大些, 所以不能简单的用L2做尺寸界限
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2008-10-1 22:35:31 | 显示全部楼层
刚考虑了 对超大的数据 是否分多次复制比较好呢 比如设L2Size是以字节为单位的L2 cache的大小 则每次复制L2Size / 8个双字 是否能比一次复制更好呢 有时间做下测试
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2008-10-5 11:45:20 | 显示全部楼层

回复 36# 无心人 的帖子

应该没有差别。经典的方法和你的这种方法都无法解决L2 cache命中率降低的问题。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2008-10-5 15:45:27 | 显示全部楼层
那就要准确获得分界点了 以我的经验 似乎有点困难
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

小黑屋|手机版|数学研发网 ( 苏ICP备07505100号 )

GMT+8, 2024-9-28 21:32 , Processed in 0.023373 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表