新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 片上嵌入式多处理器的一致性机制设计

片上嵌入式多处理器的一致性机制设计

作者:时间:2011-07-12来源:网络收藏

  如果在向前移动的过程中出现停顿,分布式系统将出现活锁现象。在上,这将在没有向前发展的“载入/存储”的程序计数器中得到反映。当多个缓存试图获得缓存线的所有权失败时,这种情况常常发生。如果在该系统中适当地建立一个全局串行顺序,则每个代理程序就可以按照这个顺序来处理请求。必须按照公平方式来建立全局串行顺序,并且公平地将各种资源(端口、总线、缓冲器)分配给多线程/多

  另一个与防止活锁有关的问题是流量控制。系统的流量控制将限制资源的分配。以ad-hoc方式实现的流量控制可能导致活锁,而常见的一种情况就是在响应请求的同时,过度地使用重试或否定应答(NACK)。

  其它考虑

  除了死锁和活锁之外,工程师还应该考虑以下的问题:

  缓存层次和DMA:当事务穿过缓存层次时将产生死锁问题。通常,我们可以采纳在更广泛的协议中使用的相同,以便在单独的(虚拟或真实)通道/FIFO中保留请求和回复。

  另一个问题是确定增强的缓存级别(L1缓存、L2缓存或L3缓存),以及I/O应在哪个位置上从域进入和提取缓存线。通常情况下,包含(inclusion)问题的相关解决机在很大程度上依赖于具体的应用或系统。通过在系统的事务集合包含线索(hint),可一致性系统中使用线索来进行预取和数据放置。一个显而易见的例子就是路由。在路由系统中,需要把外来IP包的头文件与一个表进行匹配,以该IP包的目标缓冲器/接口。通过利用线索对事务进行分类(如读出/写入、命中/不命中策略),可以将这些头文件放在靠近较低缓存级别的位置。

  同步和屏障(barrier)操作:许多ISA提供各种必须映射到一致性系统的原子语义(atomic primitive)。较弱的内存系统要求一种被称为屏障的安全网落,它可以在发送敏感代码序列期间,强迫发生某种行为(通常在或线程发出的“存储”和“载入”操作之间)。这种屏障一般通过插入ISA支持的专用屏障指令来实现。一致性系统可能需要通过动态地停滞某些事务来对这些操作作出响应,以支持这些行为。

linux操作系统文章专题:linux操作系统详解(linux不再难懂)

上一页 1 2 下一页

评论


相关推荐

技术专区

关闭