《机电技术》2010年第5期 计算机技术应用 uc/os的smp扩展及其在nios ii多核处理器上的实现 叶东岗 葛晓宏 黄红武 (1.厦门大学机电系,福建厦门361005;2.厦门理工学院,福建厦门361024) 摘要:介绍一种将原来运行于单核处理器的嵌入式实时操作系统ue/os扩展为支持多核处理器的实时操作系统 uc/os.smp的方法。分析构建嵌入式软核处理器nios ii的smp系统的关键技术,并在nios ii的smp系统平台移植并实现 了uc/os.sotp,为uc/os的smp扩展提供了一种可行的办法。 关键词:uc/os;smp;nios ii; 中图分类号:TP332 TP316.2 文献标识码:A 文章编号:1672--4801(2010)05--018--04 近年来,通过提高处理器的主频来提升处理 识唯一的CPU编号的寄存器ctl5,在利用SOPC 器的性能的方法受到了工艺、能耗等方面的制约, Builder构建系统时可手动分配各个CPU的唯一编 发展缓慢,而另一方面将两个或多个独立的处理 号。 器内核封装在一个芯片内能够以较低的主频获得 1.2处理器间的同步与互斥 软高的处理器性能,因此多核处理器受到越来越 处理器间的同步与互斥实际上可以归结为对 多的关注。然而要充分利用多核处理器的性能还 临界资源的互斥操作。在单处理器结构中,主要 需要相关支持多核操作系统的支持,目前主流的 考虑处理器内各个进程和中断服务程序之间对临 嵌入式操作系统如linux,VxWorks和eCos等大都 界资源的互斥操作,这可以通过禁用进程调度和 支持多核处理器。uc/os是源码开放、可固化、可 禁用中断来实现。在smp结构中,为实现处理器 移植、可裁剪、可剥夺的实时多任务OS内核, 问的同步与互斥,还必须提供一种原子的读一写 适用于任务多、对实时性要求较高的场合,但是 一修改操作提供硬件支持。读一写一修改操作能 遗憾的是uc/os并不支持多核处理器。nios ii是 够让处理器从存储器读取一个值,将修改的值保 Altera公司专为其FPGA器件设计的一款32位 存在高速缓存中,再将修改的值保存到存储器中, RISC处理器软核,处理器以软核形式实现,具有 整个过程作为一次原子总线操作。原子的读一写 高度的灵活性和可配置性,结合Altera的开发工 修改操作是互斥锁、信号量等同步互斥机制的 具Quartus II、SOPC Builder可以比较容易构建出 基础。 可多核处理器平台。因此本文以Altera公司FPGA nios ii多核处理器存储器模型是顺序存储模 为硬件平台介绍nios ii多核smp系统的构建及 型,也称为强定序模型。这保证了存储器操作是 uc/os的smp扩展及实现。 以程序次序来执行的和从处理器或者I/O设备到 l构建nios ii软核smp系统的关键问题 主存储器的单次读或写操作是原子的,但是nios ii 并末提供原子的读一写一修改操作指令。为实现 smp系统的实现需要软件和硬件协同完成。 多核之间的互斥,Altera为nios ii处理器提供了 作为硬件来说,构建smp系统解决以下问题:各 硬件的互斥内核(Mutex),互斥内核提供了一个协 个处理器唯一标识,处理器问同步互斥机制,硬 议,可确保对一个共享资源的互斥占有。 件提供机制来维护CPU之间Cache内容的一致 互斥内核是一个简单的Avalon从控制器接 性,支持处理器间中断机制及外部中断的分配机 口,包含2个32们存储器映射寄存器mutex和 制等。 reset,如表1所示,只有当VALUE的值为0或 1.1处理器的唯一标识 OWNER字段与被写入数据的OwNER字段匹配 smp系统要求处理器提供一种唯一标识各个CPU mutex才可写,处理器可通过将它的ID写入 的方法,以区分和指定哪个CPU用于系统的主引 OWNER字段写入和向VALUE写入一个非零值 导,以及把各个任务分配到指定的CPU上运行。 来获得互斥体。然后再通过验证OWNER字段来 nios ii处理器中控制寄存器组中提供一个用于标 检查是否成功获取互斥体。 l8 计算机技术应用 《机电技术》2010年第5期 表1互斥内核存储器映射 设备的中断请求,并将该中断指派给某个处理器 Of.fset Register Name R/W Bit Description 核来处理该中断。如果外部设计的中断采取静态 31 16 l15 1 l 0 分配,也可省去全局中断控制器,由外设直接向 0 113Utex RW OWNER J VALUE 各个处理器中断控制器申请中断。smp系统中的 1 reset RW Reserved l RESET 中断管理主要分为三类:外部中断、内部中断、 1_3 Cache与内存问的一致性问题 处理期间中断(IPI1。内部中断主要有内部错误中 Cache在smp结构中,情况相对于单处理器系 断、软件中断等。外部中断指外部I/0提出的中断, 统更为复杂,因为一个CPU并不知道别的CPU会 在smp系统中,每个CPU都必须有各自的时钟定时 在何时改变内存的内容,从而造成Cache ̄H内存的 器,用于提供系统的时钟节拍信号。处理器间中 断指本处理器有向其它处理器提出中断请求的能 一致性问题。nios ii核中不提供硬件缓存同步机 力,处理器问中断为smp操作系统提供了“请求 制,缓存在设计时用户只能配置其有无和大小, 执行”中断和“重新调度”中断的支持。 缓存的映射机制、存取策略、内容查看等均不对 用户公开。文献[2]提出解决方案,其设计思想: 2 uc/os在nios ii多核处理器上的smp扩 设计一个CCM(Cache Coherency Module)模块监 展实现 听从设备端的读写信号,当发生写时,锁存地址, uc/os原来的系统只支持单核系统。经扩展 并中断所有CPU,CPU根据CCM的ISR确定缓冲 后,新的操作系统期望能够实现对于多核处理器 区中的无效行。考虑到CCM的ISR程序对系统性 的支持。系统运行后,能够动态调度任务到各个 能的影响,可以将这部分ISR程序单放在nios ii提 CPU核上分别运行,保证就绪任务队列中具有最 供的紧耦合存储器(TCM)中。对性能要求不高系 高优先级的N个任务在N个CPU核上同时运行。 统也可简单地通过SOPC Builder禁用Cache来解 当任务队列表中的任务不能提供足够的就绪任务 决这一问题,如果是非自修改的程序f指令在执行 时,操作系统的任务调度器自动调度空闲任务 过程中保持不变),那么指令Cache也就不存在 IDLE TASK到闲置内核使之继续处于运行状态。 Cache与内存问的一致问题,这时只需简单禁用数 多核操作系统实现的关键问题是需要解决诸如多 据Cache。CCM在nios II中的位置结构如图1所示。 核处理器的引导,任务调度,多核处理器间的通 信等几个问题。 2.1 多核处理器的引导 在多核处理器的引导过程中,处理器内核之 间是不平等的,是有主次之分的。在nios ii多核 处理器启动时,必须有一个处理器作为主引导处 理器(BP),其它处理器作为应用处理器fAP),BP 首先需要完成自身的初始化,同时完成一些全局 化的初始化工作,比如数据段的清零,相关数据 结构结构的初始化,然后进入C入口函数,调用 图1 CCM在nios II中的位置结构 OSInit函数进行系统的初始化,创建系统初始任 1.4中断管理 务,调用OSStart,.进入系统发出启动信号量进行 传统的单处理器通常都采用一个外部中断 任务调度。BP启动时首先进行CPU自身的初始 控制器来解决外部设备 ̄lJCPU的通信。在stop系 化,C环境初始化,然后进入C函数入口,然后 统,每个处理器都必须有各自本地中断控制器, 等待BP发出启动信号量之后才统一进入任务的 另外还有一个全局的中断控制器来接收来自外部 调度。多核处理器的引导过程如图2。 l9 《机电技术》2010年第5期 计算机技术应用 高优先级的任务哪些是已经在处理器核上运行着 的。然后将剩下的没有分配到处理器的任务和在 第一步没有分配到任务的处理器核一一配对。 2.2.2任务切换机制 经过调度之后OSPrioHighRdy数组保存着分 别到各个处理器上的任务优先级别,任务切换就 是把各个处理器上的当前正在运行的任务的优先 级和分配到该处理器的任务优先级进行比较,如 果不相等则进行切换,具体的切换过程是如果不 是当前处理器则向该处理器发送处理器间中断请 求,如是是当前处理器则进行实际任务切换。其 流程图如图3所示。 图2 uc/os・smp的引导过程 2.2任务调度 在扩展后的uc/os.smp中,任意时刻按照优先 级的排序,处于就绪状态的最高优先级的N个任 务,都可以切换到闲置处理器内核中运行,另外 为了保证最少的任务切换次数,处理器当前正在 运行的任务如果属于N个最高优先级任务,那么 任务调度过程中此处理器将不会进行任务切换。 在系统的实现上,首先必须修改与任务调度相关 数据结构,把与任务调度的四个变量OSPrioCur、 OSPrioHighRdy、OSTCBCur、OSTCBHighRdy都 扩展为长度为内核个数N的数组。在uc/os中, 任务的切换发生在两个地方,一个是中断返回的 时候,在每次时钟中断返回时调用OSIntExit0, 图3 uc/os-smp任务切换流程图 另外一个可能引起任务切换的地方是由任务主动 2-3多核处理器间的通信 调用OSSched0,在这两个函数中首先取得系统 经扩展后的uc/os.smp系统主要使用到三种 最高优先级的N个就绪任务,然后检查当前运行 处理器间通信机制。分别是: 任务的优先级和当前的最高优先级是否相同,如 (1)多核处理器之问的中断(IPI)。IPI使某处理 果不同的话,就进行任务切换。任务调度的关键 器能够向其它处理器发送中断,而接收中断方能 是选择恰当的调度策略和任务切换机制。 够响应中断进入中断服务程序。 2.2.1任务调度策略 (2)多核处理器之问的同步。采用并发方式。 首先从就绪任务队列中选择N个优先级最高 在这种方式中,发送请求的任务必须等待接受请 的任务。这可沿用uc/os的位图算法,采用拷贝一 求的任务完成后才能返回。两者是同步执行。 份位图的副本,首先从位图副本中选择一个最高 (3)多核处理器之间的互斥。在nios ii处理器中, 优先级的任务,然后从位图副本中删除该优先级, 互斥操作是通过硬件互斥内核Mutex来实现的,通 然后再次选择一个最高优先级的任务,如此重复, 过调用Mutex驱动的altera avalon mutex lockO和 直到完成选择N个优先级的任务为止。在完成就 altera avalon mutex unlock(1来获得和释放互斥锁。 绪任务的选择之后,需要将这个N个任务分配到 在访问就绪任务队列等全局数据和各种任务问的 N个处理器核上去。这个调度操作需要分两步完 共享资源的时候,需要处理器间的互斥机制来保 成,首先从处理器核角度来看,需要标记N个最 证对临界区的访问。在需要同时禁(下转第29页) 20 计算机技术应用 《机电技术》2010年第5期 为z方向测点振动时域图,刀具在.0.0062~ O.0061mm,平均值为O.0034mm,从仿真结果比较 可知,三个方向上刀具的振动量均不大,该五轴 机床的加工精度较高。 八. 八, 八 } /\ \八 /\f\ \ /\. V IV/ V { / \ {/, ¨ \ l {/ I l√ \』 l // ¨ i f V v V V 图5 Z方向测点振动时域图 3结论 图3 X方向测点振动时域图 虚拟样机技术是一门新兴的技术,它有着广 八 f、/\ \, ,、 /\. 八 V V V \V/㈠ V 阔的发展前景及市场。将虚拟样机技术应用于数 控机床的开发设计中,在计算机上建造出虚拟模 型,并进行仿真分析,预测产品的性能,便于在 设计中及时发现问题,缩短开发周期,增强企业 竞争力。 参考文献: [1]杨晓京,刘剑雄.基于虚拟样机技术的数控机床现代设计方法[J].机械设计,2005,22(2):16—18. [2]郑建荣.ADAMs~虚拟样机技术入门与提高[M].北京:机械工业出版社,2001. [3]刘言松,曹巨江,张元莹.刚柔耦合机械系统动力学仿真[J].陕西科技大学学报,2006,24(3):74—76 [4]戴曙.金属切削机床[M].北京:机械工业出版社,2001. 作者简介:罗卫平(1973年一),女,硕士,讲师,研究方向:虚拟技术,动力学仿真。 (上接第20页) 用中断和调用alteraavalon mutexlock0i ̄数时, ___本文分析了构建nios ii多核处理器系统的几 必须先禁用中断再调用alteraavalonmutexlos系统在nios ii多核处理 ock0 个关键问题,并阐述uc/获得互斥锁。 器上的smp扩展实现方案,该方案已在cyclone II 的FPGA上验证通过,为uc/os的smp扩展提供 了一种可行的办法。 3 小结 参考文献: [1]Jean J.Labrosee(美).嵌入式实时操作系统uc/os ii(第2版)[M】.邵贝贝译.北京:北京航空航天大学出版社,2003. [2]Austin Hung William Bishop Andrew Kennings,Symmetric Multiprocessing on Programmable Chips Made Easy[J】.1530-1591/05 IEEE. [3]Curt Schirnrnel(美).现代体系结构2: ̄UNIX系统一内核程序员I ̄SMP和Caching技术[M】.张辉译.北京:人民邮电出版 社,2003. [4]章承科.基于多核处理器的实时操作系统的扩展【D】.成都:电子科技大学,2006. [5]Altera Corporation,Nios II Processor Reference Handbook[J/OL].http://www.altera.com/literature/lit-nio2.jsp,2010.2 作者简介:叶东岗(1982年一),男,硕士研究生,研究方向:嵌入式系统。 29