精华内容
下载资源
问答
  • 文 | Strike关于AMD锐龙处理器玩游戏要关掉同步多线程(SMT)这传言其实已经流传已久,说真这话放到以前可能还真有这可能,但是随着Windows 10升到1903版本优化了CPU调度之后再来传新锐龙处理器玩游戏还要关SMT...

    原标题:流言终结者系列:第三代锐龙关同步多线程能增加游戏帧数?

    文 | Strike

    关于AMD锐龙处理器玩游戏要关掉同步多线程(SMT)这传言其实已经流传已久,说真的这话放到以前可能还真的有这可能,但是随着Windows 10升到1903版本优化了CPU的调度之后再来传新锐龙处理器玩游戏还要关SMT这个就不太靠谱了,因为新的1903版本会优先用完锐龙处理器一个CCX的资源,并且还会优先使用CPU的物理核心,所以理论上你关不关SMT应该都是没啥差别的,当然光这样说大家是不会信的,今天我们就来测试一下Ryzen 7 3700X开和关闭SMT时对游戏到底有多大影响。

    先来认识下什么是SMT多线程

    在了解超线程是什么鬼之前我们要先知道线程是什么,Thread线程是操作系统能够进行运算调动的最小单位,它被包含在进程之中,是进程中的实际运作单位,一个进程中可以并发多个线程,每条线程并行执行不同的任务。

    MultiThreading多线程这个概念有些暧昧,多线程可以指在一个CPU核心上同时执行多个线程,也可以是多个任务,尽管在同一个核心内执行,但是它们之间完全分离。多线程在概念上类似抢占式多任务处理,但是在现在的超标量处理器中以线程级来实现。

    多线程有两个主要实现方法,一个是Temporal MultiThreading时间多线程,另一个则是Simulate MultiThreading同步多线程,时间多线程还可以进一步分为Fine-Grained MultiThreading细粒度多线程与Coarse-Grained MultiThreading粗粒度多线程。

    CMT粗粒度多线程是最简单的多线程技术,当单一执行线程遇到长时间的延迟,如Cache Missed时,就进行线程切换,直到原线程等待的操作完成,才切换回去。

    FMT细粒度多线程比CMT粗粒度多线程复杂一些,它随时可以在每个时钟周期内切换多个线程,以追求最大的输出能力,当然,随时可以切换也是有代价的,它拉长了每个执行线程的平均执行时间。

    CMT和FMT都没有在消费级处理器上面使用,Intel与AMD处理器上使用的都是SMT同步多线程,不过NVIDIA与AMD的GPU都有使用FMT技术。

    SMT同步多线程具有多个执行单元,CMT和FMT都是在单个执行单元下的技术,不同的线程在指令级别上并不是真正的“并行”,而SMT则具有多个执行单元,同一时间内可以同时执行多个指令,可以充分发掘超标量处理器的潜力,因此SMT具有最大的灵活性和资源利用率,不过处理器也更复杂。

    不过现在的消费级处理器都是超标量处理器,所以要支持SMT其实在架构上不用太多改变:所需的主要添加是在一个周期中从多个线程获取指令的能力,以及一个更大的寄存器文件来保存来自多个线程的数据。并发线程的数量可以由芯片设计者决定。常见模式是每个CPU核心有两个并发线程,但一些处理器的每个核心支持最多八个并发线程。

    超线程/SMT同步多线程技术是一个很好的提升核心利用率的东西,将闲置处理资源充分调动起来,增强核心并行运算性能,在操作系统中一颗物理CPU能当做多颗CPU来使用,它可以有效提升CPU利用率、改善计算机的性能、提高系统可靠性。

    但对于游戏玩家来说问题在于,系统和游戏到底能不能充分利用CPU所有的核心资源,并且有效地使用闲置单元提高运算效率,侧面提升游戏体验(主要是帧数的提高),一旦游戏对多线程优化不足,就发生抢占CPU核心资源,造成调度拥堵,间接地降低性能。这个也是很多玩家口中所说“超线程不利于游戏”的说法。

    测试平台与说明

    这次测试主要是想看看Ryzen 7 3700X在开启和关闭SMT前后的游戏性能变化,同时顺便会给大家看看关闭SMT后会对CPU带来多大的性能损失。

    AMD锐龙处理器想关闭SMT多线程的话建议还是用RyzenMaster软件比较简单,因为这个选项在BIOS内藏得很深

    一颗正经的Ryzen 7 3700X应该是有16个框框的

    被我关掉SMT后只剩下8核8线程的Ryzen 7 3700X

    游戏性能测试

    无论是DX11的FireStrike还是DX12的TimeSpy测出来CPU的物理运算性能都有明显下降,然而这并不等同于实际游戏性能。

    说真的,除了《绝地求生》这个神奇的游戏,其他游戏对于SMT的开和关真的没啥区别,三位数的平均帧数一、两帧差别几乎可以忽略不计,现在的游戏其实用不着那么多线程,8线程和16线程基本不会有啥区别,绝大部游戏在关闭SMT多线程后也没见有啥提升,当然也有《绝地求生》这个反例,它优化特差这已经是出名的了,作为玩家的我都对它无语了。

    当然有人可能会说我们拿8核的Ryzen 7 3700X来测当然没啥区别拉,然而Zen 2架构的锐龙处理器至少也有个6核心,其实结果也不会有太大差别,之后有空可以拿Ryzen 5 3600试下。

    接下来我们看看Ryzen 7 3700X在关闭SMT后处理器性能会下降多少。

    基准性能测试

    创作能力测试

    有趣的是开了SMT之后Ryzen 7 3700X的单线程性能并没有下降,反而还高了一点点 ,不过这1%都不到的差距基本上可以看作是误差,多线程性能在开启SMT后提升了32%,AMD Zen 2架构的SMT效率还是不错的,Intel那边Core i9-9900K和Core i7-9700K之间的多线程性能差距也差不多这个数,不过两者间还有轻微的频率和L3的差别。

    PCMark 10办公机性能测试

    办公方面除了设计类的,绝大多数应用场景都用不着这么多线程,Ryzen 7 3700X开启SMT后确实有一定的提升,然而提升得并不是很多,说真的Ryzen 7 3700X这种八核处理器最多也是必要时兼职一下办公,很少人会拿这个级别的处理器全职办公的。SMT对游戏影响不大,计算密集型应用更受益

    现在Zen 2架构的第三代锐龙处理器至少是六核起步的,当核心数量达到六核之后SMT多线程对游戏的影响就不会很大了,现在的游戏其实六核或者以上的处理器就可以满足它的并行处理能力需求了,至于你有没有SMT或者超线程其实没啥关系,单线程性能与内存缓存的延迟的影响其实更大一些。

    而SMT真正有用的是视频和图片处理还有渲染这类计算密集型应用,这类应用需要大量并行运算,多少个线程都能给你吃光,然而这些应用基本上就是内容创作者接触得比价多,对于一般人来说,解压缩可能是体验处理器并行处理能力最为常见的应用场景。返回搜狐,查看更多

    责任编辑:

    展开全文
  • 这个回答非常形象,系统思维模式。------------------------------------------------------作者:既让链接:https://www.zhihu.com/question/52957429/answer/272333887来源:知乎多核肯定是...多核、多线程、多g...

    这个回答非常形象,系统思维的模式。

    ------------------------------------------------------

    作者:既让
    链接:https://www.zhihu.com/question/52957429/answer/272333887
    来源:知乎
    多核肯定是难的。

    主要是任务可分解性和结果可预期性。数据类的工作是很容易做到这点的。游戏并不是这种类型。

    多核、多线程、多gpu也好。多并不能解决一切。甚至根本没用。多线操作良好与否主要还是软件的问题。或者说是逻辑设计的问题。机器可不知道你下面要干什么。


    我觉得用交通来比拟是合理的。一个城市堵不堵,看什么?一是路面质量;二是道路宽度;三是路线分布;四是道路数量。你会发现堵的路总是那么几条。你额外增加其他道路并不能加速运转。这时候反而是道路宽度和质量更能直接体现作用了。相比而言就是频率和缓存。不合理的架构使得本来可以走另外可能存在路线的车也走了已经拥挤的路,这样也不会很快。

    此外,为什么不是分得越多越好呢?用最简单的例子来说明。假设只有a,b两个点,那么他们来往就是2个线路。如果是a,b,c,那么是6条。如果是a,b,c,d,那么是12条。想想这个增长会有什么结果。任务分布给更多的点,就需要更多的交互。

    交互越多,额外的事务就越多。就像网络一样,经过节点越多,延迟越高。

    对于不可分解的任务。其他的都要等待。就算有能力也没用。

    而且任务可能存在互锁的情况。你等别人,别人等你(或者其他人),然后最后别人又等你。这种东西是逻辑性的。不可预期。

    还有就是万一不是核数问题呢?cpu和gpu任务不同。如果一部分任务本来是另一部分要做的,你怎么抬也没用。


    我认为模糊性的,数量有大的复杂性肯定是很高的。首先模糊的,你难以确定问题到底是什么样。就像球队组建一样。不就是几个人吗?但是交易之后结果基本上没多少会和预期一样的。人就是这样,这种隐藏的交互效果的逻辑并不能看出来。量大,这种更加难以估计了。


    不过我觉得,这也不是问题。主要是这方面经验太少了。游戏硬件、软件引擎、游戏本身都在变化。根本就没足够时间来寻找固定的模式。针对特定的硬件,设计高效引擎,应该能大幅提高性能。另外玩家都是从单核,简陋图形处理部件过来。设计思路当然也是跟着过去来的。如果多核、多gpu的玩家多,那么问题可能会集中处理,因而会有所改进。

    好像图形技术并不是很久远的科技。可能和这个不成熟也有关系。cpu是科学计算相联系的。这些的基础研究早在几十年前就完成了。图形,尤其是虚拟现实都还是新东西。


    还有就是最关键的一点。多核设计本身是反人类的。因为人的脑子是单核的。我们玩游戏都是操作一个逻辑主体在运行----我们都是单线程生物。设计者不也是这么想的吗?这种情况下,多核就是把原来是一件事硬生生分成几件事。有人以计算为例,说明如何多线程。不过你仔细想想,如果人没有刻意那么想,会那样操作吗?肯定是直接加减乘除的。


    展开全文
  • 关于AMD锐龙处理器玩游戏要关掉同步多线程(SMT)这传言其实已经流传已久,说真这话放到以前可能还真有这可能,但是随着Windows 10升到1903版本优化了CPU调度之后再来传新锐龙处理器玩游戏还要关SMT这个就不太...

    关于AMD锐龙处理器玩游戏要关掉同步多线程(SMT)这传言其实已经流传已久,说真的这话放到以前可能还真的有这可能,但是随着Windows 10升到1903版本优化了CPU的调度之后再来传新锐龙处理器玩游戏还要关SMT这个就不太靠谱了,因为新的1903版本会优先用完锐龙处理器一个CCX的资源,并且还会优先使用CPU的物理核心,所以理论上你关不关SMT应该都是没啥差别的,当然光这样说大家是不会信的,今天我们就来测试一下Ryzen 7 3700X开和关闭SMT时对游戏到底有多大影响。

    0dc865e140ade815bee315254dfb1b5b.png

    先来认识下什么是SMT多线程

    fc6058eab363836e8f98ea484ab44bce.png

    在了解超线程是什么鬼之前我们要先知道线程是什么,Thread线程是操作系统能够进行运算调动的最小单位,它被包含在进程之中,是进程中的实际运作单位,一个进程中可以并发多个线程,每条线程并行执行不同的任务。

    MultiThreading多线程这个概念有些暧昧,多线程可以指在一个CPU核心上同时执行多个线程,也可以是多个任务,尽管在同一个核心内执行,但是它们之间完全分离。多线程在概念上类似抢占式多任务处理,但是在现在的超标量处理器中以线程级来实现。

    多线程有两个主要实现方法,一个是Temporal MultiThreading时间多线程,另一个则是Simulate MultiThreading同步多线程,时间多线程还可以进一步分为Fine-Grained MultiThreading细粒度多线程与Coarse-Grained MultiThreading粗粒度多线程。

    979bdf846744d2721204be5202e92905.png

    CMT粗粒度多线程是最简单的多线程技术,当单一执行线程遇到长时间的延迟,如Cache Missed时,就进行线程切换,直到原线程等待的操作完成,才切换回去。

    FMT细粒度多线程比CMT粗粒度多线程复杂一些,它随时可以在每个时钟周期内切换多个线程,以追求最大的输出能力,当然,随时可以切换也是有代价的,它拉长了每个执行线程的平均执行时间。

    CMT和FMT都没有在消费级处理器上面使用,Intel与AMD处理器上使用的都是SMT同步多线程,不过NVIDIA与AMD的GPU都有使用FMT技术。

    SMT同步多线程具有多个执行单元,CMT和FMT都是在单个执行单元下的技术,不同的线程在指令级别上并不是真正的“并行”,而SMT则具有多个执行单元,同一时间内可以同时执行多个指令,可以充分发掘超标量处理器的潜力,因此SMT具有最大的灵活性和资源利用率,不过处理器也更复杂。

    不过现在的消费级处理器都是超标量处理器,所以要支持SMT其实在架构上不用太多改变:所需的主要添加是在一个周期中从多个线程获取指令的能力,以及一个更大的寄存器文件来保存来自多个线程的数据。并发线程的数量可以由芯片设计者决定。常见模式是每个CPU核心有两个并发线程,但一些处理器的每个核心支持最多八个并发线程。

    超线程/SMT同步多线程技术是一个很好的提升核心利用率的东西,将闲置处理资源充分调动起来,增强核心并行运算性能,在操作系统中一颗物理CPU能当做多颗CPU来使用,它可以有效提升CPU利用率、改善计算机的性能、提高系统可靠性。

    但对于游戏玩家来说问题在于,系统和游戏到底能不能充分利用CPU所有的核心资源,并且有效地使用闲置单元提高运算效率,侧面提升游戏体验(主要是帧数的提高),一旦游戏对多线程优化不足,就发生抢占CPU核心资源,造成调度拥堵,间接地降低性能。这个也是很多玩家口中所说“超线程不利于游戏”的说法。

    测试平台与说明

    27a8ade4a8237320633521dc6f0c11ed.png

    这次测试主要是想看看Ryzen 7 3700X在开启和关闭SMT前后的游戏性能变化,同时顺便会给大家看看关闭SMT后会对CPU带来多大的性能损失。

    17df2e95a895e2c276982fc28e4d0eda.png

    AMD锐龙处理器想关闭SMT多线程的话建议还是用RyzenMaster软件比较简单,因为这个选项在B

    8858def0923ad48189b91ab4a6f1b561.png

    一颗正经的Ryzen 7 3700X应该是有16个框框的

    f8c6bc3b51ad69e0c7b9fd619e6e90db.png

    被我关掉SMT后只剩下8核8线程的Ryzen 7 3700X

    游戏性能测试

    a84131a0673abb6d589ac77e05f5b318.png

    无论是DX11的FireStrike还是DX12的TimeSpy测出来CPU的物理运算性能都有明显下降,然而这并不等同于实际游戏性能。

    f39426c17f20c0b03b4d7ab437601e1d.png

    说真的,除了《绝地求生》这个神奇的游戏,其他游戏对于SMT的开和关真的没啥区别,三位数的平均帧数一、两帧差别几乎可以忽略不计,现在的游戏其实用不着那么多线程,8线程和16线程基本不会有啥区别,绝大部游戏在关闭SMT多线程后也没见有啥提升,当然也有《绝地求生》这个反例,它优化特差这已经是出名的了,作为玩家的我都对它无语了。

    当然有人可能会说我们拿8核的Ryzen 7 3700X来测当然没啥区别拉,然而Zen 2架构的锐龙处理器至少也有个6核心,其实结果也不会有太大差别,之后有空可以拿Ryzen 5 3600试下。

    接下来我们看看Ryzen 7 3700X在关闭SMT后处理器性能会下降多少。

    基准性能测试

    e9faeeb2e2e4ac74742c909584a06eae.png
    6beab56fcfee85525c59378a998cd053.png
    777da4293514dc6304685e84e5bee801.png
    07d5921a519c39ccb1f5514797e80b29.png
    35e8b70f65345682e811e990138feb5d.png
    5195f427db749efa4536e6e679118646.png

    创作能力测试

    06365864844764ceefa2cae2da5c32e6.png
    659038e2f53ce2cad2e8b9bf1fb9778b.png
    f68c3d8e63878cff91dfc60b7aafb965.png
    2a1cf9bf8818f63eb0013f65baba218b.png
    84ce332002c4dda6b9d37b671af2bf3a.png

    有趣的是开了SMT之后Ryzen 7 3700X的单线程性能并没有下降,反而还高了一点点 ,不过这1%都不到的差距基本上可以看作是误差,多线程性能在开启SMT后提升了32%,AMD Zen 2架构的SMT效率还是不错的,Intel那边Core i9-9900K和Core i7-9700K之间的多线程性能差距也差不多这个数,不过两者间还有轻微的频率和L3的差别。

    PCMark 10办公机性能测试

    fe7f815682a105e24bb1beba6d7f03a6.png
    dc64d89f3f252ee9ea2a26f8dff17785.png

    办公方面除了设计类的,绝大多数应用场景都用不着这么多线程,Ryzen 7 3700X开启SMT后确实有一定的提升,然而提升得并不是很多,说真的Ryzen 7 3700X这种八核处理器最多也是必要时兼职一下办公,很少人会拿这个级别的处理器全职办公的。

    SMT对游戏影响不大,计算密集型应用更受益

    现在Zen 2架构的第三代锐龙处理器至少是六核起步的,当核心数量达到六核之后SMT多线程对游戏的影响就不会很大了,现在的游戏其实六核或者以上的处理器就可以满足它的并行处理能力需求了,至于你有没有SMT或者超线程其实没啥关系,单线程性能与内存缓存的延迟的影响其实更大一些。

    而SMT真正有用的是视频和图片处理还有渲染这类计算密集型应用,这类应用需要大量并行运算,多少个线程都能给你吃光,然而这些应用基本上就是内容创作者接触得比价多,对于一般人来说,解压缩可能是体验处理器并行处理能力最为常见的应用场景。

    展开全文
  • 增加辅助体验和灵活性,这是本套多线程模板结束课程,进行游戏实战测试,优化脚本,封装了大漠移动点击功能, 移动点击源码: .版本 2 .子程序 移动点击 .参数 x .参数 y .参数 索引 超级延时 (200, ) 线程...

    多线程多窗口多账号自动登录自动切号任务,是多线程模板中难度较大的,我们实现的方法很多,它的核心就是自动判断自动切号,在未来的我们还可以把单线程自动切号和多线程自动切号融合成一套,让辅助自动根据游戏窗口多少自动判断,增加辅助的体验和灵活性,这是本套多线程模板的结束课程,进行游戏实战测试,优化脚本,封装了大漠移动点击功能,

    移动点击源码:

    .版本 2
     
    .子程序 移动点击
    .参数 x
    .参数 y
    .参数 索引
     
    超级延时 (200, )
    线程 [索引].dm.MoveTo (x, y)
    超级延时 (200, )
    线程 [索引].dm.LeftClick ()
    超级延时 (200, )
    .版本 2
     
    .子程序 是否出现角色, 逻辑型
    .参数 索引, 整数型
    .局部变量 x, 整数型
    .局部变量 y, 整数型
     
    线程 [索引].dm.FindPic (0, 0, 2000, 2000, “角色.bmp”, “000000”, 0.9, 0, x, y)
    .判断开始 (x > 0 且 y > 0)
        返回 (真)
    .默认
        返回 (假)
    .判断结束

    所有源码:大漠多线程多窗口多账号自动登录自动切换任务

    展开全文
  • 游戏引擎多线程

    千次阅读 2015-07-13 00:14:56
    前言   最 近一直在做项目优化,可是由于项目引擎历史原因,不能去砍掉某些功能而...当然每个人都希望自己的游戏跑的越快越好,现在大 部分机器都已经至少是双核的,如果能发挥多核优势,游戏的速度会大幅提升。
  • 1、这家公司有一个数据库代理程序,用于数据库服务器代理,游戏服务器执行sql指令,DBAgent接受此指令,执行一些组织后,调用JDBC执行数据库操作,然后将...2、发生问题:内存一直升高,处理客户端请求的线程...
  • “现在程序是单线程,那就用多线程模型来优化吧,嘿嘿,我太机智了!”小白打心底感谢前段时间里学习到线程知识。“Python 里好像是 threading 模块负责多线程的,就决定是你了,thr...
  • 毕竟Windows 10系统已经发布多年、DirectX12游戏普及,更为重要是CPU已经更新迭代了次,入门级i3/Ryzen 3都是四核四线程了,所以我们希望通过一些测试了解一下近几年游戏对于处理器核心线程调用情况。...
  • 文章仅记录部分内容作为笔记,对视频感兴趣可见下面链接原视频: ... 课程目录: 【第一章】内存 ...【第二章】多线程 - 主渲染线程结构 - 任务系统 正文: 一、内存 游戏的性能优化从...
  • 本专栏主要讲解,在不使用 Unity 或 C# 下载组件情况下, 如何实现一个高效、支持断点续传和多线程下载,同时资源开销小(内存占用小,CPU 占用低)下载组件。附赠源码,即学即用,适合对 HTTP 下载机制感...
  • UE4制作多人大地型游戏的优化

    千次阅读 2019-07-19 12:32:55
    8月11日,由腾讯游戏学院举办第二届腾讯游戏开发者大会(TGDC)在深圳举行。大会技术论坛中,Epic ...演讲中,王祢分享了在当前重度手游市场下,如何从游戏线程、渲染线程、GPU、内存等各方面进行优化,从而提...
  • 但是在实际项目应用过程中,这个 demo 实现方式显得异常简陋,而且对应个业务同时发起 Socket 通信请求处理能力也是有限,总不能每个请求都创建一个线程去监听返回结果,所以有必要进一步优化一番,例如加入...
  • “现在程序是单线程,那就用多线程模型来优化吧,嘿嘿,我太机智了!”小白打心底感谢前段时间里学习到线程知识。“Python 里好像是 threading 模块负责多线程的,就决定是你了,threading !” ...
  • wasd操作,英文输入法,单线程,比较笨重东西,内存量尽管要求不大,不过浪费了很资源,没有进行进一步的优化,有问题私信联系
  • 游戏引擎多线程(一)

    2013-01-31 22:31:10
     最近一直在做项目优化,可是由于项目引擎历史原因,不能去砍掉某些功能而去优化项目,项目开发到这种程度,只能在这个基础上去提升整个引擎效率,常规CPU和GPU上的优化(美术资源上缩减,CPU上耗费地方和GPU...
  • IOS多线程及队列使用 分类:ios多线程2013-12-11 17:561898人阅读评论(0)收藏举报 多线程 最近搞一款塔防游戏,提到塔防,自然就想到了A星寻路。的确,它是一种高效寻路算法。但当很多怪物同时在调用A...

空空如也

空空如也

1 2 3 4 5 ... 14
收藏数 261
精华内容 104
关键字:

多线程优化的游戏