C 多核处理器的内核之间是否共享时钟振荡器?

C 多核处理器的内核之间是否共享时钟振荡器?,c,multithreading,x86,multiprocessing,multicore,C,Multithreading,X86,Multiprocessing,Multicore,他们在物理上共享同一个时钟吗?其次,是随机访问共享内存,还是一个内核优先于另一个内核。例如,考虑到2核处理器,核心1和核心2正试图在同一时钟中访问同一内存。是允许核心1先访问共享内存,然后再访问核心2,还是它是随机的?这取决于具体情况。首先,多核处理器远远超出了内存访问。它们在本地缓存上运行。当两个缓存都需要与主内存重新同步时,是否存在优先级肯定是设计特定的。首先,进行突发传输会降低饥饿的可能性,因为只有当两个突发在同一时钟周期上开始时,才实际使用优先级。除了固定优先级和“随机”之外,另一种选择

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

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

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


时钟交叉只是高速缓存电路的众多复杂性之一。

是的,我知道本地高速缓存。但是,假设访问的位置不在本地缓存中,那么谁先访问共享二级缓存呢?甚至对于本地缓存,谁先修改共享位置?因为只要其中一个进行修改,缓存一致性就会使另一个核心缓存上的同一位置无效。@MetallicPrist:缓存一致性协议确定了这一点。只有一个缓存可以处于“已拥有”状态,从而允许转换为“已修改”。(在MOESI上也有一个“独占”状态,但你的问题排除了这一点)如果两个请求同时从“共享”转换为“拥有”,那么如上所述,这可能是通过循环完成的。让我们假设它们都处于共享状态,现在在同一个时钟周期中,它们都想要修改,那么谁先做呢?如果像您所说的,有一个循环方案,这是否意味着一个特定的核心将始终在另一个核心之前决定性地执行该方案?如果您有这种级别的缓存冲突,那么无论实施何种优先级方案,性能都将是可怕的。更有趣的情况是,两个内核在不同的缓存线上都发生了未命中。在这种情况下,您可以快速连续地访问四个内存(在逐出之前刷新修改,然后加载新缓存线,两次都是两个内核),显然这种情况并不常见。但是假设两个内核都试图锁定互斥锁,那么它们显然会尝试访问同一个位置。