多CPU系统设计讲稿.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
多CPU系统设计 * 多CPU系统设计 QuartusII 5. 0 及以上版本支持多处理器系统的创建和调试。多个NiosII 处理器能够有效地共享系统资源。由于SOPC Builder 允许用户轻松添加多个处理器到系统中,因此建立多处理器系统的难点已不再是硬件的排列和连接,而在于多个处理器的软件设计,使它们正常操作,相互之间不产生冲突。NiosII 多处理器系统分为2 类: 一类是共享资源的多处理器系统;另一类处理器相互独立,之间不进行信息交换。  NiosII 多处理器系统的资源共享  共享存储器 如果存储器中包含不只一个处理器的程序代码,那么 每个处理器需要有不同的存储地址。对于程序空间,处理 器不能共享存储器的同一区域。如果共享数据存储器,则 存储器的数据需要从端口与共享存储器的处理器的数据 主端口连接。多处理器之间共享数据存储器比共享指令 存储器困难,原因是数据存储器可读/ 写。如果某一处理 器正在对共享存储器的特定区域进行写操作,而同时另一 个处理器正在对同一区域进行读或写操作,则很可能出现 数据错误,至少使应用程序出错,甚至使系统崩溃。 共享存储器的处理器需要一个机制来通知其他处理器 何时正在使用共享资源,以便不受其他处理器的干扰。  硬件互斥核Mutex NiosII 处理器允许使用其硬件互斥核部件对共享资源进行保护处理。这个硬件互斥核不是一个NiosII 处理器内部的部件,而是一个称为Mutex 的SOPC Builder 组件。 互斥核也可看作一种共享资源,提供一个原子的“测试和置位”操作,处理器测试Mutex 是否可行。如果可行,就在某个操作中获取它。当处理器结束与Mutex 相关的共享资源使用时,释放该Mutex ;此时,另一个处理器可能获取了Mutex ,使用共享资源。互斥核在物理上并不能防止资源同时被多个处理器访问。运行在处理器上的软件必须被设计为在访问相关共享资源之前总是获取Mutex 的。 在大部分情况下,多个处理器之间应该使用互斥核来 保护共享资源。然而,也有一些不需要互斥核的,例如对于单方向或循环的消息缓冲队列,此时只有一个处理器往存储器的某个特殊位置写数据。  NiosII 多处理器系统的资源共享 多CPU系统的软件设计 测试复位后Mutex 是否已经被释放 altera_avalon_mutex_first_lock () 决定这个CPU 是否拥有Mutex altera_avalon_mutex_is_mine () 对Mutex 解锁 altera_avalon_mutex_unlock () 对Mutex 加锁, 直到它成功声明Mutex 才返回 altera_avalon_mutex_lock () 试图对Mutex 加锁。若失败 则立即返回 altera_avalon_mutex_t rylock () 对Mutex 声明一个句柄,允许所 有其他函数访问Mutex 核 altera_avalon_mutex_open () 描 述 函数名 访问Mutex 核的API 函数  程序存储器设置 在多处理器系统中,多个处理器可能使用同一个程序 存储器,每个处理器的程序必须存放在不同的位置。 Ni2osII 和SOPC Builder 提供一个简单的存储器分区模式,允许多个处理器在同一存储器的不同区域运行各自的软件。分区模式使用处理器的异常地址,可以在SOPC Builder中进行设置。NiosII IDE 负责根据异常地址计算出不同代码段链接的位置。如果2 个不同的处理器被链接到同一存储器,那么每个处理器的异常地址用来决定处理器软件存放的基地址,其末地址由下一个异常地址或者存储器的末地址决定。对于每个处理器,软件有5 个主要的代码段需要被链接到存储器中的固定地址,分别是: 多CPU系统的软件设计 . text    实际的可执行代码; . rodata  代码段执行时所使用 的常量数据; . rwdata  读/ 写变量和指针; . heap   动态分配的存储器; . stack   函数调用参数和其他 临时数据。 在多处理器系统中,对于每个处理器,都希望使用连续的存储区域存储其所有的代码段。在这种情况下,异常地址用来定义2 个处理器之间代码存放的分界。值得注意的是,异常地址的低6 位总是设置为0x20 ,因为偏移量0x0 是NiosII 的复位地址,所以异

文档评论(0)

hong333666 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档