0
他们是否在物理上共享相同的时钟?其次,是随机访问共享内存,还是一个内核优先于另一个。例如,考虑一个2核心处理器,核心1和核心2试图在同一时钟访问相同的内存。核心1将被允许先访问该共享内存,然后是核心2还是随机的?时钟振荡器是否在多核处理器的核心之间共享?
他们是否在物理上共享相同的时钟?其次,是随机访问共享内存,还是一个内核优先于另一个。例如,考虑一个2核心处理器,核心1和核心2试图在同一时钟访问相同的内存。核心1将被允许先访问该共享内存,然后是核心2还是随机的?时钟振荡器是否在多核处理器的核心之间共享?
这取决于。首先,多核处理器远不止于内存访问。他们在本地缓存上运行。当两个缓存都需要与主内存重新同步时,是否有优先级,肯定是设计特定的。首先,进行突发传输会使得饥饿的可能性降低,因为当两个突发在同一个时钟周期开始时,您只会实际使用优先级。除固定优先级和“随机”之外的另一个选项将是循环法(无论如何,“随机”很难实现)。
即使在内核和本地核心缓存可能使用独立时钟的情况下(例如TurboBoost或EIST),只有一个内存访问时钟。
时钟交叉只是缓存电路的许多复杂性之一。
是的,我了解当地的缓存。但是可以说,访问的位置不在本地缓存中,那么谁先访问共享L2缓存?甚至是使用本地缓存,谁可以先修改共享位置?因为无论何时修改它们,缓存一致性都会使另一个内核缓存中的相同位置失效。 – MetallicPriest
@MetallicPriest:缓存一致性协议确定。只有一个缓存可以处于“拥有”状态,允许转换为“修改”状态。 (在MOESI上也有一个“独占”状态,但你的问题不包括这一点)如果两个请求都同时从“共享”转换为“拥有”,那么请参阅上文,它可能是用循环法完成的。 –
让我们假设它们都处于共享状态,现在在同一个时钟周期内他们都想要修改,那么谁先做到这一点?如果像你说的那样,有一个循环机制,这是否意味着一个特定的核心会始终在另一个核心之前确定地执行它? – MetallicPriest