基于Nios II软核的多核处理器系统的设计与实现

来源 :电子产品世界 | 被引量 : 0次 | 上传用户:naruto_Dragonballlll
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:本文设计了一个基于FPGA解决方案的多核处理器系统,整体上提高了系统性能,解决了单核处理能力提升受到的制约。通过对多核系统体系结构和核间通信技术的研究,最终实现了一个利用互斥核实现资源共享的双Nios II软核处理器系统,并在Altera公司的FPGA开发板DE2上进行测试,测试结果表明所设计的双核系统能稳定运行。本文网络版地址:http://www.eepw.com.cn/article/245929.htm
  关键词:FPGA;Nios II;双核;互斥核
  DOI: 10.3969/j.issn.1005-5517.2014.4.007
  引言
  多核处理器技术的研究源于工程师们认识到,在提高单核芯片速度的同时,会产生过多热量却无法带来相应的性能改善,传统的以提高主频提升性能的方法,会使处理器散发出巨大的热量,其性价比也令人难以接受,速度稍快的处理器价格更高。因此多核芯片应运而生,2001年IBM公司推出第一个商用的双核RISC(精简指令集计算机)处理器Power4。
  目前关于多核技术的研究主要包括核结构研究(同构还是异构)、程序执行模型、Cache设计(多级Cache设计与一致性问题)、核间通信技术、总线设计、操作系统设计(任务调度、中断处理、同步互斥)、低功耗设计、存储器墙、可靠性及安全性设计。本文利用互斥核和共享存储器等技术实现多核系统共享资源的访问,使用Quartus II的Sopc Builder构建一个双NiosII软核处理器系统,最终在Altera的FPGA开发板DE2上验证了该系统的正确性。
   1 系统总体设计方案
  与单核处理器系统的设计所不同,在设计双核系统时有若干问题需要重新考虑:如何实现多处理器核之间的数据共享;在实现数据共享之后,双核系统必须提供有效的机制,以防止共享数据被破坏;为了提升整个系统的效率,必须仔细考虑系统任务的分配和调度如何进行,以免出现进程冲突或进程闲置,从而影响系统的整体性能。
  图1显示了双Nios II 嵌入式处理器核系统的体系结构。本系统中有两个Nios II处理器核,CPU1作为主要CPU用来负责控制和调度整个系统, CPU2作为从处理器用来负责具体任务的执行。其次,每个处理器都有独立的定时器作为看门狗使用,以防止处理器进入异常或死循环。此外,连接到CPU1的JTAG-UART接口,用于系统的各项测试。片上RAM作为共享存储器连接到两个处理器,提供处理数据的共享。而与CPU2相连的UART负责将处理结果传递到PC主机上显示。
   2 系统软硬件设计
  2.1 硬件设计
  在双核系统中,为了实现并行处理应用程序的任务,系统必须为双核提供有效的数据处理和信息进程的共享机制。为此,本设计为系统配置了两种存储器的共享:一种处理器用来实现处理器之间状态的沟通,另一种用来实现处理数据的共享。此外由于两个处理器都会对共享数据存储器进行读写操作,这样就会产生一个问题:在不破坏存储器中数据的同时,如何确保系统正确地进行读写操作。因此硬件互斥核Mutex被嵌入双核处理器系统中。Mutex可以确保双核系统中只能有一个处理器来访问共享数据存储器。
  Mutex核实质上是一种共享资源,提供“测试和设置”操作。当处理器测试到Mutex核可用时,就会在一个具体操作中暂时占有Mutex核,之后当处理器完成对存储器的读写操作时就会释放Mutex核,具体过程如图2所示。对共享存储器的互斥访问是通过Mutex核的API函数来实现的:
  Altera_avalon_mutex_open()
  功能:声明一个Mutex句柄,允许所有其他函数访问Mutex核。
  Altera_avalon_mutex_trylock()
  功能:试图锁定Mutex核,若失败则立刻返回。
  Altera_avalon_mutex_lock()
  功能:锁定Mutex核,直到成功声明Mutex核才返回。
  Altera_avalon_mutex_unlock()
  功能:解锁Mutex核
  Altera_avalon_mutex_is_mine()
  功能:判断CPU是否拥有Mutex核
  Altera_avalon_mutex_frst_lock()
  功能:测试复位后Mutex核是否被释放。
  重要的是,在系统中互斥核Mutex本身无法从物理上防止共享资源被处理器同时访问,而提供此功能是我们所编写的软件程序。在获得相关共享资源前,软件总是询问并获得Mutex核。
  2.2 软件设计
  本设计中,两个处理器的软件程序都拥有自己独有的一段存储空间,这些存储空间都位于同一个物理存储设备SDRAM上,如图3所示,第一个处理器使用SDRAM中0x0到0x1FFFF之间的地址空间,第二个处理器使用0x20000到0x2FFFF之间的地址空间,并且以异常地址作为边界。
  异常地址是程序加载的地址,决定着哪个处理器的软件程序可以占据空间基地址运行。Nios II IDE负责链接处理器的软件设计并映射到存储器中,并为每个处理器提供其独有的段空间来运行软件设计。对于每个处理器来说,有五个主要的代码段需要映射到存储器的固定地址中:.text,存放实际执行的代码;.rodata,存放实际执行代码中所使用的常量;.rwdata,存放读写变量和指针;Heap,自动分配的空间;Stack,存放函数调用的参数和其他临时的数据。
  同时在双处理器系统中,每个处理器都必须从自己的启动存储空间来启动。启动存储器和程序存储器一样也能被分区,只需在存储器上设置每个处理器的复位地址就可以。    3 系统软硬件实现
  SopcBuilder是Altera公司提供的一款图形化系统设计实现工具,内嵌于Quartus II软件中。利用SopcBuilder实现的双核系统如图4所示,包括了两个Nios II软核处理器以及其他内外设,连接关系表现了系统组件如何通过Avalon总线构成一个可以工作的系统。系统配置对每个系统组件分配了基地址,以实现Avalon总线对组件的访问。
  对于利用SopcBuilder生成的双核系统,通过JTAG接口下载配置到Altera的FPGA开发板上,然后在Nios II IDE中调用HAL API函数开发C 语言应用程序就可以在FPGA开发板上运行,以此来验证所设计的多核系统是否能够正确运行。本文利用Altera公司提供的例程hello_world_multi,再将其修改后,各个处理器通过交替获得Mutex的所有权,执行相同的程序,并将处理数据存储在片上共享存储器上,最终通过CPU_1的JTAG_ Uart打印到Nios II IDE终端。图5为验证程序的运行结果在Nios II IDE输出窗口的打印,可以看出,两个核都能通过Mutex获得外设的控制权,表明系统配置成功且能正确运行。
  结语
  本文根据SOPC技术利用Quartus的SopcBuilder构建硬件平台,利用Nios II IDE运行软件程序,实验结果表明:软硬件设计正确,系统能正常运行。同时,本设计为双核以上的多核系统的设计提供了理论基础。
  参考文献:
  [1]Wolf W H.FPGA-based system design[M].China Machine Press,2005
  [2]张志刚.FPGA 与 SOPC 设计教程---DE2 实践[M].西安电子科技大学出版社,2007
  [3]潘松,黄继业, 曾毓.SOPC 技术实用教程[M].清华大学出版社,2005
  [4]NiosII Processor Reference Handbook.Alter Corporation,2007
  [5]杨定定,施慧彬.基于AXI总线的MicroBlaze双核SoPC系统设计.电子产品世界,2012(1):76
其他文献
针对反渗透锅炉补给水处理装置实际运行的监控需求,本文提出了一种基于PRFINET和PROFIBUS集成网络的控制系统,用于多变频器控制。从拓扑结构、硬件组态和变频器参数设置等方面
胶质瘤是起源于神经胶质细胞的原发颅内肿瘤,是最常见的神经系统肿瘤,其复发率和病死率均较高,因此预后较差。国内外学者正在寻找有效的分子生物学指标和靶点,用来评价患者预
虽然手术是治疗进展期胃癌的重要手段,但患者的预后并不理想,其主要原因是根治性手术后,多数患者在术后2年内局部复发和(或)远处转移;而腹腔内游离癌细胞和残留微小癌灶的存在
不久前.威世科技(Vishay)携手贸泽电子(MouserElectronics)赞助的车队勇夺国际汽联电动方程式(FIAFormulaE)锦标赛首个赛季车手总冠军,FENEXTEVTeamChinaRacing(简称TCR)车队车手Nelson
针对新兴煤矿运输巷沿空留巷关键技术问题,对高水充填材料的性能及高水充填条件下沿空留巷围岩活动规律进行研究,并结合实际地质与生产条件进行工业试验,取得良好的经济技术效果
本文在分析我国商业银行中小企业贷款担保存在的问题的基础上,提出了改进我国中小企业贷款担保方式的若干建议,包括对存货和应收账款抵押方式的创新.这些担保方式的研究对解
生产实习是冶金工程专业教学的重要组成部分,通过生产实习能够巩固所学的专业知识,提高学生的应用能力和创新能力.生产实习的模式对生产实习教学效果起着至关重要的作用.基于