![]() |
|
||||||||||||||
| . 网站首页 . 产品新知 . 业界资讯 . 技术文库 . 下载中心 . 服务导航 . 邮购需知 . 技术论坛 . | ||
|
||
|
|||||
| NiosII多处理器系统方案设计 | |||||
作者:今日电子 文章来源:今日电子 点击数: 更新时间:2008-2-21 ![]() |
|||||
SMP系统中,多个CPU共享数据据区,那么如何识别CPU,在NIOS系统中,有如下方法:改变CPU ID寄存器,加入控制寄存器,运用小容量的ROM来存贮不同的ID号,运用自定义指令[1]。在这里,使用了自定义指令,其主要原因是:需要的资源很少(一个32位寄存器),相同的指令在不同的CPU可以执行不同的功能。 在SOPC Builer 中运用NIOSII 自定义Combinatorial指令类型分别导入CPU1、CPU2中,SOPC Builer自动生成PTF文件,并在IDE中映射生成system.h文件,生成自定义宏函数ALT_CI_CPUID(A)。 SMP 系统中的处理器分为 BSP 和 AP。在系统启动时,BSP 负责初始化硬件和启动操作系统,然后唤醒 AP 一起工作。在这里CPU1为BSP,CPU2为AP。 ALT_CI_CPUID函数在CPU1执行时返回0,CPU2执行时返回1,从而完成了程序的分流执行。 4.2 ISR ISR是中断服务程序,在这里主要完成来自CCM的中断处理,其处理流程步骤如下:关中断(可选),读取CCM寄存器,判断其中断类型(是多CPU之间中断还是缓冲区中断),然后分别执行,清除中断源,开中断(可选)。 4.3 资源互斥 多处理器中的互斥技术是在单处理器互斥技术的基础之上发展起来的。与单处理器系统相比,多处理器系统中的互斥问题更加复杂。在单处理器系统中,竞争条件主要发生当前进程被中断的时候和当前进程被抢占的时候,其解决方法主要有:关中断、信号量、禁止任务切换、使用测试并置位等方法。而在多处理器系统中,即使在当前进程没有被中断也没有被抢占的情况仍然需要互斥(即不同处理器上的进程访问了相同的数据),那么通过关中断、禁止任务切换的方法将不能实现互斥,其解决方法是在测试并置位的基础上实现信号量、自旋锁。示例程序如下: struct semaphore { int count; int sleepers; wait_queue_head_t wait; }; struct semaphore sem; Void task1() { alt_mutex_dev* mutex = altera_avalon_mutex_open( “/dev/mutex” ); altera_avalon_mutex_lock( mutex, 1 ); Sem.count= Sem.count-1; altera_avalon_mutex_unlock( mutex ); Sem.count= Sem.count+1; } 程序首先定义了信号量,其中count表示临界资源的数量,altera_avalon_mutex_lock()、altera_avalon_mutex_unlock()为Mutex加锁、解锁函数。信号量可以解决单处理器下的程序同步问题,但当在多处理器下时,可能会有多个CPU同时访问信号量,且信号量为可用,那么多个CPU都会使用临界资源,使程序发生异常,所以在使用信号量前加入测试并置位指令就可以实现了多处理器的互斥。 系统Mutex IP核它的争用是采用固定选择策略,即如果CPU1与CPU2同时争用,则它们中的一个总是先占用,在某种特殊需求时可能无法满足用户需求。用户可以通过自定义指令,外挂用户自定义判定逻辑来产生互斥功能部件。 5创新点总结 本文介绍的基于NIOSII多处理器硬件架构及上层软件的设计,这里并没有涉及到操作系统的移植,其主要是根据系统的需求而定。分析整个系统可以知道,系统可以并行执行用户的几个程序,提高系统的吞吐量,可以控制相对比较多的I/O设备,且因为Avalon总线的“点对点”特性,使得并行性得以提高,同时也可以基于安全的考虑,作为CPU的冗余。 提出了基于异步的监听FIFO的解决方案,在双核条件下资源占用与方案1相同,但其性能有显著提高。在方案1中调用了两片LPM_FIFO,其单个FIFO资源使用为35个LC、672个MB。在方案1中,ISR要访问三次CCM、而在方案2中仅需要一次、且不需要等待其它CPU访问CCM。 参考文献 [1] Austin Hung William Bishop Andrew Kennings,Symmetric Multiprocessing on Programmable Chips Made Easy,1530-1591/05 IEEE [2] Altera Corp.Creating Multiprocessor Nios II Systems Tutorial ,2004.6 [3] Altera Corp. Nios 3.0 CPU. Data Sheet DS-NIOSCPU-2.1,Altera Corp., San Jose, California, March 2003. [4]吴健军,初建朋,赖宗声基于FPGA的DDR SDRAM控制器的实现,北京,《微机算计信息》,2006.No.1-2,p156 |
|||||
| 文章录入:admin 责任编辑:admin | |||||
| 【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 | |||||
| 最新热点 | 最新推荐 | 相关文章 | ||
| 基于Nios II系统1553B总线网… 基于NIOS嵌入式软核的硬盘录… Nios II的Boot过程分析… 基于Nios II的自动指纹识别系… 基于Nios软核的嵌入式Intern… Nios II嵌入式Web服务器的实… 基于Nios嵌入式软核处理器的… NIOS 软核处理器的Linux引导… 基于Nios的DDS高精度信号源实… |
| 网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!) |
| | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 网站公告 | 管理登录 | | |||
|