深圳芯片解密研究所系国内IC解密行业的鼻祖
24小时咨询电话:189-2383-0090

当前位置:首页>芯片解密须知 >> 单芯片同步多处理技术介绍(下)

单芯片同步多处理技术介绍(下)

  当独立分解的执行任务尚未完成时,需进行一些软件工程,使应用程序在OS和底层硬件上是可见的,并能在任务间明确地传递数据。但是不应该需要对阶段算法进行重写。粗粒度的任务分解可透过档案、网络应用程序(socket)或管线的进程通讯来实现。而针对细粒度的控制,如Posix执行绪API——pthreads,可由许多OS支持,包括Linux、Windows以及许多实时操作系统。
  复杂的、模块化的多任务嵌入式软件系统时常会展现出意外的同步。整体系统任务很可能涉及到对应不同输入的不同责任等多项任务。若没有一个时间共享的OS,各任务就必须在个别处理器上执行。在一个时间共享的单处理器上,它们在轮流时间中执行;在一个具有SMP操作系统的多核心处理器上,它们能在可利用的处理器上同步执行。
  分布式典型运算在网络客户服务器模式中很常见,它在某些时候不被认为是‘平行’的。客户端服务器程序设计基本上是一种控制流程分解的形式。程序任务并不是独自执行所有的运算,而是将工作请求发送到针对特定工作设计的特殊系统任务。客户端服务器程序设计大多都在LAN和WAN上完成,但SMP SoC也遵循相同的范例。未作修改的客户端服务器二进制数据可透过芯片上的TCP/IP或空回绕网络(loopback network)接口进行通讯,或者使用更有效率的方法,利用区域通讯协议在内存中传递缓冲数据。
  这些方法可能会被单独或组合使用,以藉助SMP的性能优势。有人甚至可能会建构一个分布式SMP服务器的平行数据数组,且各数组均建置一个控制流程管线。
  在SoC系统中,可以对处理器的静态实体分解任务进行平行处理,处理器的平行任务可于硬件中完成,这可以减少软件开销和实体尺寸,但却不能提供灵活性。
  如果可以将一个嵌入式应用静态地分解成客户端和服务器,并透过芯片互连进行通讯,那么只需要使用讯息传递程序代码建置一个共享协议,以便将系统互相连系。讯息传递协议可提供一个抽象层,使或多或少的处理器配置都能执行一般的应用程序代码,但无论任何配置,处理器的负载平衡就如同硬件分割一样是静态的。要达到更灵活的平行系统程序设计,可利用具有共享资源多核心处理器系统上的软件任务分配来实现。
  在SMP操作系统中,所有的处理器都面对相同的内存、I/O组件和全域OS状态,这使得处理器间的程序移转更简单、更有效率,也更容易平衡负载。不需要额外的编程或系统管理,在单CPU上利用时间分段执行的多任务程序,将能同时在一个SMP系统中的CPU上执行。