【问题标题】:Is the clock oscillator shared among the cores of a multicore processor?时钟振荡器是否在多核处理器的内核之间共享?
【发布时间】:2014-05-12 14:35:23
【问题描述】:

他们在物理上共享同一个时钟吗?其次,是随机访问共享内存,还是一个核心优先于另一个。例如,考虑一个 2 核处理器,并且核 1 和核 2 试图在相同的时钟内访问相同的内存。是允许核心 1 先访问该共享内存然后再访问核心 2 还是随机访问?

【问题讨论】:

    标签: c multithreading x86 multiprocessing multicore


    【解决方案1】:

    这取决于。一方面,多核处理器远远超出了内存访问的范围。它们在本地缓存上运行。当两个缓存都需要与主存重新同步时是否有优先级肯定是特定于设计的。一方面,进行突发传输可以减少饥饿的可能性,因为只有当两个突发在同一时钟周期开始时,您才会实际使用优先级。除了固定优先级和“随机”之外,另一种选择是循环(“随机”无论如何都很难实现)。

    即使在内核和内核本地缓存可能使用独立时钟的情况下(例如 TurboBoost 或 EIST),内存访问也只有一个时钟。

    时钟交叉只是缓存电路的众多复杂功能之一。

    【讨论】:

    • 是的,我知道本地缓存。但是假设访问的位置不在本地缓存中,那么谁先访问共享的 L2 缓存呢?或者即使使用本地缓存,谁先修改共享位置?因为每当其中一个发生修改时,缓存一致性将使另一个核心缓存上的相同位置失效。
    • @MetallicPriest:缓存一致性协议决定了这一点。只有一个缓存可以处于“拥有”状态,允许转换到“修改”。 (在 MOESI 上还有一个“独占”状态,但您的问题不包括在内)如果两个请求同时从“共享”转换为“拥有”,那么请参见上文,它可能是通过循环完成的。
    • 假设他们都处于共享状态,现在在同一个时钟周期他们都想修改,那么谁先做呢?如果像你说的那样,有一个循环方案,这是否意味着一个特定的核心总是会在另一个核心之前确定性地执行它?
    • 如果您有这种级别的缓存冲突,那么无论实施何种优先级方案,性能都会变得非常糟糕。更有趣的情况是两个内核在不同的高速缓存行上都出现未命中。在这种情况下,您可以快速连续访问四个内存(在逐出之前刷新修改,然后加载新的缓存行,两次都是两个内核)
    • 显然这东西并不常见。但是假设,两个核心都试图锁定一个互斥锁,那么它们显然会尝试访问同一个位置。
    猜你喜欢
    • 2016-03-29
    • 2015-06-04
    • 1970-01-01
    • 2021-06-20
    • 2014-02-26
    • 1970-01-01
    • 2011-02-06
    • 2014-12-17
    • 2017-07-02
    相关资源
    最近更新 更多