可以为多核学习CPU应用不一样的频率管理么

豆丁微信公众号
君,已阅读到文档的结尾了呢~~
多核处理器的产生原因及现状
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
多核处理器的产生原因及现状
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='http://www.docin.com/DocinViewer--144.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口查看: 4246|回复: 24
战团不支持多核CPU的解决办法搬运
在线时间 小时
本帖最后由 Fobbiwazz 于
11:10 编辑
经常看到I7八核六核CPU跑战团只有50%性能的悲剧,原因是不支持多核,单CPU1.5ghz上下的频率还不如10年前的古董机。寻找解决办法回答一般都是“楼主火星”或“游戏不支持,没解决办法”,但其实这个问题早有许多前辈作了探究。
这里搬运一下看到的可行解决办法。
第一个是罗马2全战吧里热心人发的多核启用器,强制调用多核,对战团经测试可用(虽然不是亲测。。。),不过不支持XP(不过多核一般都不会用XP的吧,大概……)
http://tieba.baidu.com/p/&&这是原帖(当然也可能是转的,总之姑且看看)
http://www.clanlong.com/thread--1.html&&这是有更详细介绍的转帖(还有罗马2全战的其他优化修改和心得,对罗马2全战有兴趣的可以看看)
http://pan.baidu.com/s/1qW4OOgc&&强制调用多核软件的地址(感谢好心人的盘)
第二个办法,WIN7的任务管理器,更快更简单,但效果似乎不如方法一(有些电脑似乎还无效……)
http://www.mountblade.com.cn/html/29/t-235429.html& &骑砍论坛里前辈找到的方法
第三个方法,其实这没有解决问题,但是从减少CPU处理量与提升处理效率入手,也算另辟蹊径
http://tieba.baidu.com/p/ 百度骑砍吧里的
总体来说,方法一效果应该是最佳的,但是样本太少,不知道会不会有未知的问题,总之推荐这种
方法二简单,还不用像法一那样装软件,但效果不如法一,还有人反映无效
方法三算是个补充,但他推荐的软件要注册,也不方便,权当参考
希望对各位有帮助
另:LZ只是个搬运工哈,要感谢找提供方法的前辈,出问题了也请找他们
鲜花鸡蛋&&在 18:04&&送朵鲜花&&并说:不错不错&&在 20:51&&送朵鲜花&&并说:亲,给你好评了哦&&在 20:47&&送朵鲜花&&并说:这很赞啊
在线时间 小时
中文站不会和谐网址的。。。
在线时间 小时
ls说的是 为何非要河蟹网址呢
在线时间 小时
在线时间 小时
楼主干嘛不亲测下……
在线时间 小时
这是在贴吧混久的节奏,这里不是百度,不会吞。。。
在线时间 小时
骑士の侍从 发表于
可是据说XP不能完全发挥多核的性能的啊……我记错了吗……
在线时间 小时
stalentcq 发表于
楼主干嘛不亲测下……
嗯,一个仍在使用老爷机的LZ静静地飘过……
在线时间 小时
本帖最后由 Fobbiwazz 于
19:02 编辑
<font color="#8310009 发表于
中文站不会和谐网址的。。。
原来如此:L,那我改一下哈
在线时间 小时
关于测试的情况可以看另一个帖子
辉煌纪元 优化
在线时间 小时
好东西,收藏一下
在线时间 小时
这东西赞,收下了
在线时间 小时
留个名&&回去下了看看
在线时间 小时
在线时间 小时
普通I7如4770只是四核,你就算花大几千买了土豪专用的4960X也只是6核,哪来的8核?
要是你把超线程这种关掉提升游戏性能的东西当成CPU核心,还是回家洗洗睡吧。
在线时间 小时
回家试试再说
在线时间 小时
天武大帝 发表于
普通I7如4770只是四核,你就算花大几千买了土豪专用的4960X也只是6核,哪来的8核?
要是你把超线程这 ...
8线程不都宣传为8核的吗……
好吧,是我不严谨,我改
在线时间 小时
unpark CPU并不是强制让什么系统/软件使用多核,不用搞错了,这个只是把WIN7那坑爹的CPU管理关掉。
在线时间 小时
旧程序不支持多通道技术,开了多通道也还是按照单通道的方式进行,其结果是需要大量的内存。所以最靠谱的是再买两条内存吧。
在线时间 小时
第一个方法里的软件不错,貌似有效,观察中!谢了Q
在线时间 小时
在线时间 小时
玩了一天,果然不卡了,攻城都在30帧以上,300人战场!谢谢楼主!
在线时间 小时
dafei 发表于
玩了一天,果然不卡了,攻城都在30帧以上,300人战场!谢谢楼主!
请问你用的那哪种方法呢
在线时间 小时
lobstere 发表于
请问你用的那哪种方法呢
鲜花鸡蛋&&在 22:50&&送朵鲜花&&并说:太给力了!&&在 22:50&&送朵鲜花&&并说:太给力了!
在线时间 小时
Powered by根据书中提供的代码清单1-5,可以完成对于多核处理器的cpu占用率的控制。
但是在使用GetCPUTickCount计时时,下面的算式会出现一点小问题:
这里按照变量millisec 定义的名字,认为后面算式计算的结果是毫米ms,但是
((double)t_end – (double)t_begin)/(double)info.CurrentMhz
实际计算出的结果单位是秒,因为
__rdtsc()得到的cpu周期数,CurrentMhz为cpu频率,单位为MHZ=周期/秒=周期*1000/毫秒
所以如果在代码中定义让cpu工作10ms,休息10ms时,这里实际计算出的时间(单位s)和想要的时间(单位ms)会相差1000,
结果是在任务管理器中看到cpu的占占用率曲线基本没变化!
代码清单1-5
_PROCESSOR_POWER_INFORMATION
CallNTPowerInformation(11, // query processor power information
NULL, // no input buffer
0, // input buffer size is zero
&info, // output buffer
Sizeof(info)); // outbuf size
__int64 t_begin = GetCPUTickCount();
// do something
__int64 t_end = GetCPUTickCount();
double millisec = ((double)t_end – (double)t_begin)/(double)info.CurrentM
多核cpu中控制,cpu使用率曲线:
int main()
&#160;&#160;&#160; HANDLE curhandle = GetCurrentThread();//获取当前线程句柄
&#160;&#160;&#160; DWORD_PTR dwThreadAffinityMask = 2;
&#160;&#160;&#160; if(!SetThreadAffinityMask(curhandle, dwThreadAffinityMask))
&#160;&#160;&#160; {
&#160;&#160;&#160;&#160;&#160;&#160;&#160; return 0;
&#160;&#160;&#160; }
&#160;&#160;&#160; int busytime = 10;//10ms
&#160;&#160;&#160; int idletime =
&#160;&#160;&#160; //DWORD starttime = 0;
&#160;&#160;&#160; //获取当前cpu的周期数
&#160;&#160;&#160; PROCESSOR_POWER_INFORMATION lpOutputB
&#160;&#160;&#160; CallNtPowerInformation(
&#160;&#160;&#160;&#160;&#160;&#160;&#160; ProcessorInformation,//获得处理器信息
&#160;&#160;&#160;&#160;&#160;&#160;&#160; NULL,
&#160;&#160;&#160;&#160;&#160;&#160;&#160; 0,
&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lpOutputBuffer,
&#160;&#160;&#160;&#160;&#160;&#160;&#160; sizeof(lpOutputBuffer)
&#160;&#160;&#160; );
&#160;&#160;&#160; printf(&%d&,lpOutputBuffer.CurrentMhz);
&#160;&#160;&#160; unsigned __int64
&#160;&#160;&#160; unsigned __int64
&#160;&#160;&#160; while(1)
&#160;&#160;&#160; {
&#160;&#160;&#160;&#160;&#160;&#160;&#160; starttime = __rdtsc();
&#160;&#160;&#160;&#160;&#160;&#160;&#160; //注意:这个地方要再除以一个1000,因为想要求的是ms单位,__rdtsc()得到的cpu周期数,
&#160;&#160;&#160;&#160;&#160;&#160;&#160; //CurrentMhz为cpu频率,单位为MHZ=周期/秒=周期*1000/毫秒
&#160;&#160;&#160;&#160;&#160;&#160;&#160; while((((double)__rdtsc() - (double)starttime)/1000/(double)lpOutputBuffer.CurrentMhz) &= busytime);
&#160;&#160;&#160;&#160;&#160;&#160;&#160; Sleep(idletime);
&#160;&#160;&#160; }
&#160;&#160;&#160; return 0;
阅读(...) 评论()查看: 3799|回复: 4
CPU达人请进,Intel目前的多核处理器的设计是同步多核还是异步多核?
异步多核异步多核,或者叫aSMP(asynchronous SMP),是由高通提出的,并应用在自家的Snapdragon S3/S4处理器中。之前也有过不少争论,比如说异步多核核心之间不能通讯,称之为“胶水双核”;或者说异步多核同时只能有一个核心接受指令,效率很低。当然呢,这些实际上都是不对的。什么是异步多核?其重点在于频率异步,可以将它称为异步频率架构(Asynchronous Clock Architecture)。在这样设计的多核处理器中,每个核心都可以工作在不同的电压和频率下。这样,可以将计算繁重的任务交给一个工作在高频的核心,而压力较小的任务则可以让一个工作在低频的,较慢的核心去负担。而在同步多核中,所有的核心都只能工作在相同的电压和频率下。一般CPU的L1是工作在当前的CPU频率上的。AMD和IntelCPU的L2是工作在什么频率上的?
最早是按摩店搞得异步吧,现在x86没有同步cpu鸟,都是异步的。
本帖最后由 junychen 于
13:43 编辑
AMD 最早的双核 AMD X2 就是异步多核,但是我的Core2 四核心45nm 还是同步多核。Intel 到了 i系列才是异步多核心。
所以AMD 所有多核心都是异步的,Intel的在I 系列 之后都是 异步的。
如果你只是说频率异步的话,Intel的Core2双核就已经实现了,独享的L1是CPU同步,贡献L2印象中是独立的固定频率;
到现在的Haswell,Intel已经做到整个CPU各个模块独立频率,也就是说,四个Core内核、L3缓存、iGPU、SA以及环形总线都有各自的时钟频率并且可以根据需要随时关闭不活动的模块。
Intel 在 core2 的 L2 频率是固定的 但是 会切成512KB的块 ,当块里面没有数据就会关闭 节省电能。
6M L2 就有12个512KB的块。我是12MB 的 就有24个512KB的快,但是CPU频率还是固定的 要么一起2.6GHz 要么一起2.0GH &
本帖最后由 kinno 于
14:19 编辑
我怎么记得现在的intel cpu,L2,L3都是和核心同步的呢
Powered by Discuz! X3.4

我要回帖

更多关于 多核cpu 的文章

 

随机推荐