基于NiosII的SOPC多处理器系统设计方法
发布时间:2007/4/23 0:00:00 访问次数:434
李兰英 李霄燕
两个或多个微处理器一起工作来完成某个任务的系统称为“多处理器系统”。传统基于单片机的多处理器系统结构复杂,可靠性差;而基于32位的嵌入式软核处理器NiosII的SOPC(可编程片上系统)多处理器系统解决方案,从根本上改变了多处理器系统的设计理念和方法。使用Altera公司的NiosII软核处理器和SOPC Builder工具,可以快速地设计和建立共享资源的多处理器系统。多处理器系统一般用于工作站和使用分载(load-sharing)的复杂算法(称为“对称多处理器SMP”)的高端PC计算。对于大部分嵌入式系统,当SMP的开销太大时,使用多个处理器执行不同的任务,实现不同的功能正引起越来越多的关注。Altera公司的FPGA为开发非对称的嵌入式多处理器系统提供了一个理想的平台。为了提供理想的系统性能,使用SOPC Builder工具可以很容易地对硬件进行修改和调整,从而很快完成不同配置系统的设计、编译和评估[1]。
本文将对基于NiosII的SOPC多处理器系统的实现原理、设计流程和方法进行详细的讨论。
1 NiosIl多处理器系统硬件设计
QuartusII 5.0及以上版本支持多处理器系统的创建和调试。多个NiosII处理器能够有效地共享系统资源。由于SOPC Builder允许用户轻松添加多个处理器到系统中,因此建立多处理器系统的难点已不再是硬件的排列和连接,而在于多个处理器的软件设计,使它们正常操作,相互之间不产生冲突。NiosII多处理器系统分为2类:一类是共享资源的多处理器系统;另一类处理器相互独立,之间不进行信息交换。
2 Niosll多处理器系统的资源共享
资源共享是多处理器系统的强大功能,但必须仔细考虑所要共享的资源,以及不同处理器如何使用共享资源。
2.1 共享存储器
在多处理器系统中最普遍的共享资源是存储器。共享存储器用于存放任何数据,从指示处理器间通信状态的简单标志,到被多个处理器同时进行计算的复杂数据结构。
如果存储器中包含不只一个处理器的程序代码,那么每个处理器需要有不同的存储地址。对于程序空间,处理器不能共享存储器的同一区域。如果共享数据存储器,则存储器的数据需要从端口与共享存储器的处理器的数据主端口连接。多处理器之间共享数据存储器比共享指令存储器困难,原因是数据存储器可读/写。如果某一处理器正在对共享存储器的特定区域进行写操作,而同时另一个处理器正在对同一区域进行读或写操作,则很可能出现数据错误,至少使应用程序出错,甚至使系统崩溃。
共享存储器的处理器需要一个机制来通知其他处理器何时正在使用共享资源,以便不受其他处理器的干扰。
2.2 硬件互斥核
NiosII处理器允许使用其硬件互斥核部件对共享资源进行保护处理。这个硬件互斥核不是一个NioslI处理器内部的部件,而是一个称为Mutex的SOPC Builder组件。
互斥核也可看作一种共享资源,提供一个原子的“测试和置位”操作,处理器测试Mutex是否可行。如果可行,就在某个操作中获取它。当处理器结束与Mutex相关的共享资源使用时,释放该Mutex;此时,另一个处理器可能获取了Mutex,使用共享资源。互斥核在物理上并不能防止资源同时被多个处理器访问。运行在处理器上的软件必须被设计为在访问相关共享资源之前总是获取Mutex的。
在大部分情况下,多个处理器之间应该使用互斥核来保护共享资源。然而,也有一些不需要互斥核的,例如对于单方向或循环的消息缓冲队列,此时只有一个处理器往存储器的某个特殊位置写数据。
一般地,NiosII不支持多个处理器之间非存储器外设的共享,NiosII硬件抽象层(HAL)库也不支持。NiosIIHAL提供访问Mutex核的API函数如表1所列。
2.3 多处理器地址空间的重叠
在单处理器系统中,不允许多于一个的从外设具有相同的地址空间,原因是这将引起矛盾。然而,在多处理器系统中,只要外设被不同的处理器控制,那么不同的从外设就可以具有相同的基地址。
李兰英 李霄燕 两个或多个微处理器一起工作来完成某个任务的系统称为“多处理器系统”。传统基于单片机的多处理器系统结构复杂,可靠性差;而基于32位的嵌入式软核处理器NiosII的SOPC(可编程片上系统)多处理器系统解决方案,从根本上改变了多处理器系统的设计理念和方法。使用Altera公司的NiosII软核处理器和SOPC Builder工具,可以快速地设计和建立共享资源的多处理器系统。多处理器系统一般用于工作站和使用分载(load-sharing)的复杂算法(称为“对称多处理器SMP”)的高端PC计算。对于大部分嵌入式系统,当SMP的开销太大时,使用多个处理器执行不同的任务,实现不同的功能正引起越来越多的关注。Altera公司的FPGA为开发非对称的嵌入式多处理器系统提供了一个理想的平台。为了提供理想的系统性能,使用SOPC Builder工具可以很容易地对硬件进行修改和调整,从而很快完成不同配置系统的设计、编译和评估[1]。 本文将对基于NiosII的SOPC多处理器系统的实现原理、设计流程和方法进行详细的讨论。 1 NiosIl多处理器系统硬件设计 QuartusII 5.0及以上版本支持多处理器系统的创建和调试。多个NiosII处理器能够有效地共享系统资源。由于SOPC Builder允许用户轻松添加多个处理器到系统中,因此建立多处理器系统的难点已不再是硬件的排列和连接,而在于多个处理器的软件设计,使它们正常操作,相互之间不产生冲突。NiosII多处理器系统分为2类:一类是共享资源的多处理器系统;另一类处理器相互独立,之间不进行信息交换。 2 Niosll多处理器系统的资源共享 资源共享是多处理器系统的强大功能,但必须仔细考虑所要共享的资源,以及不同处理器如何使用共享资源。 2.1 共享存储器 在多处理器系统中最普遍的共享资源是存储器。共享存储器用于存放任何数据,从指示处理器间通信状态的简单标志,到被多个处理器同时进行计算的复杂数据结构。 如果存储器中包含不只一个处理器的程序代码,那么每个处理器需要有不同的存储地址。对于程序空间,处理器不能共享存储器的同一区域。如果共享数据存储器,则存储器的数据需要从端口与共享存储器的处理器的数据主端口连接。多处理器之间共享数据存储器比共享指令存储器困难,原因是数据存储器可读/写。如果某一处理器正在对共享存储器的特定区域进行写操作,而同时另一个处理器正在对同一区域进行读或写操作,则很可能出现数据错误,至少使应用程序出错,甚至使系统崩溃。 共享存储器的处理器需要一个机制来通知其他处理器何时正在使用共享资源,以便不受其他处理器的干扰。 2.2 硬件互斥核 NiosII处理器允许使用其硬件互斥核部件对共享资源进行保护处理。这个硬件互斥核不是一个NioslI处理器内部的部件,而是一个称为Mutex的SOPC Builder组件。 互斥核也可看作一种共享资源,提供一个原子的“测试和置位”操作,处理器测试Mutex是否可行。如果可行,就在某个操作中获取它。当处理器结束与Mutex相关的共享资源使用时,释放该Mutex;此时,另一个处理器可能获取了Mutex,使用共享资源。互斥核在物理上并不能防止资源同时被多个处理器访问。运行在处理器上的软件必须被设计为在访问相关共享资源之前总是获取Mutex的。 在大部分情况下,多个处理器之间应该使用互斥核来保护共享资源。然而,也有一些不需要互斥核的,例如对于单方向或循环的消息缓冲队列,此时只有一个处理器往存储器的某个特殊位置写数据。 一般地,NiosII不支持多个处理器之间非存储器外设的共享,NiosII硬件抽象层(HAL)库也不支持。NiosIIHAL提供访问Mutex核的API函数如表1所列。 2.3 多处理器地址空间的重叠 在单处理器系统中,不允许多于一个的从外设具有相同的地址空间,原因是这将引起矛盾。然而,在多处理器系统中,只要外设被不同的处理器控制,那么不同的从外设就可以具有相同的基地址。
上一篇:微机交换系统的研制开发
深圳服务热线:13751165337 13692101218
粤ICP备09112631号-6(miitbeian.gov.cn)

深圳市碧威特网络技术有限公司
付款方式