论文部分内容阅读
近年来,多核技术引领了计算机的发展潮流,成为了当下最为热门的计算技术。多核处理器的技术思想是:将两个或者多个独立的处理器核心封装到一个芯片内部,由多个处理器核心并行地完成计算(Chip Multi-Processing,缩写为CMP)。这样做的原因是:在获得较高处理器性能的同时,可以将处理器主频保持在较低的水平。Analog Devices公司的ADSP-BlackFin561 DSP是一款性能出色的嵌入式处理器产品,该DSP中含有2个处理器核心。而uCLinux是一个很受欢迎的面向单核处理器的嵌入式操作系统。本文所作的研究是如何对uCLinux进行修改和扩展,使其能够运行在BF561双核平台上。使BF561的双核优势得以发挥,从而提高整个系统的性能。在此过程中,本文主要做了这几个方面的研究:双核的启动和初始化,同步与互斥,内存管理。为了使uCLinux能够在BF561的两个核心上启动和初始化,本文所做的设计是:在A核正常启动并初始化完毕后,创建一个内核级线程,通过该线程来进行B核的启动和初始化。该线程的具体操作是先将B核要运行的初始化代码拷贝到指定的存储位置,然后安装中断服务函数,最后启动B核。本文通过借鉴SMP系统中同步互斥的实现原理,将细粒度自旋锁作为BF561平台的短期互斥策略,也作为中断处理程序互斥的手段,将信号量机制作为其长期互斥策略。此外,为了在B核上也启用高速缓存,本文对uCLinux进行修改,增加了两个CPLB数据结构;实现了CPLB的加载和切换。CPLB数据结构主要用来解决CPLB的表示和存储问题,而CPLB的加载和切换主要指MMR中的CPLB表的写操作和相关切换策略的实现。并且对cache一致性问题做了说明。最后,本文对扩展后的uCLinux系统在BF561上的性能进行了相关测试。采用计算圆周率的BBP算法作为测试算法。并且为了适应多核环境,将BBP算法进行了并行化修改。最终的测试数据表明扩展后的uCLinux系统确实可以在一定程度上提高ADSP-BF561平台的计算性能。