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

[讨论] 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-5-3 13:04 , Processed in 0.066328 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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