gpt4 book ai didi

data-modeling - CPU缓存友好的实体组件系统框架

转载 作者:行者123 更新时间:2023-12-04 11:00:48 25 4
gpt4 key购买 nike

我找不到 CPU 缓存友好的单个框架实现 which means that data on which systems traverse in each game loop cycle is stored in a contiguous memory

让我们看看,系统遍历满足其条件的特定实体,即实体应包含 A、B、C 组件以供 X 系统处理。这意味着我需要一个包含所有实体和组件的连续内存(不是引用,因为引用不是缓存友好的,并且您将有很多缓存未命中),以便尽可能快地从 RAM 中获取它们在 X 系统的处理过程中。但是在 X 系统处理之后,Y 系统开始对一组满足其条件 e 的实体进行操作。 g. 包含 A 和 B 的所有实体。这意味着我们处理与 X 系统相同的一组实体以及一些其他具有 A 和 B 的实体。这意味着我们有两个具有重复数据的连续内存。首先,由于已知原因,数据重复非常糟糕。而且这反过来又意味着我们需要同步,这又不是 CPU 缓存友好的,因为您需要从一个向量中找到一些实体并使用另一个向量中包含的新数据进行更新。

这只是我的想法之一。对于实体组件系统框架数据模型,还有其他更现实的想法,但在每个模型中,我都发现存在相同的问题:在每个游戏循环周期中,由于数据不连续,您无法防止大量缓存未命中。

任何人都可以建议一个关于这个主题的实现,文章,例子,这可以帮助我理解应该使用什么数据模型来获得缓存友好的设计,因为这是游戏性能中最关键的事情之一。

最佳答案

我会接受垃圾狗的回答(因为我写了链接的文章;)),但这是另一个不同的,接受它:

如果你想要缓存友好的设计,你需要列出:

  • 您的微处理器
  • 您的处理器架构
  • 您的总线架构
  • ...
  • 您的每个子帧工作集大小
  • 所有游戏对象的总工作集/RAM
  • 您的特定游戏中的互连数量
  • ... 等

  • 根据这些要求的严格/宽松程度,您将对您的设计做出不同的简单(或困难)决定。游戏开发者经常重写内存管理。他们这样做不是因为他们愚蠢,而是因为每个项目(重新)优化很容易/值得(这是 AAA 标题?还是 AA 标题?图形更重要吗?还是网络延迟?。 .. 等)和每个硬件(在 PC 上,目标硬件每个月都在变化)

    我建议你选择一组硬件,创建一个简单的基于 ES 的游戏,然后开始尝试设计一个缓存友好的内存使用 - 并公开记录它,使其全部开源,看看你是否能让其他人感兴趣在运行您的基准。

    关于data-modeling - CPU缓存友好的实体组件系统框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23473783/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com