论文部分内容阅读
摘要:本文设计了一个基于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
关键词: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