《使用多核处理器适用于智能产品设计方案.docx》由会员分享,可在线阅读,更多相关《使用多核处理器适用于智能产品设计方案.docx(7页珍藏版)》请在第一文库网上搜索。
1、使用多核处理器适用于智能产品设计方案如今的智能产品越来越多地需要将传统的实时嵌入式设计需求与要求更高的应用级软件结合在一起。除了更大的计算负载外,这些产品还需要支持通过先进的媒体服务(如触摸屏、高分辨率3D图形和图像传感器)与用户交互。随着需求的扩大,开发人员在减小功耗、成本和系统尺寸方面所面临的压力也更大,因此不得不寻找更有效的方法来替代传统的多子系统设计。本文将讨论这些设计需求的演变,以及到目前为止,处蹴是如何满足这些需求的。然后将介绍并展示如何使用NXPSemiconductors的新型处理器。这些处理器为开发人员提供了一种更简单的满足这一不断增长的需求的解决方案,让设计能够同时处理实时
2、计算和应用计算要求。升级处理器并保持代码投资开发人员通常使用与特定应用处理要求匹配的多核微处嵋来升级其设计的计算能力。使用这种方法,开发人员既可实现性能提升,又可保持与现有代码库的兼容性,以及相应器件系列的使用体验。例如,使用NXPi.MX6应用处理器系列,设计人员不仅可以保持代码兼容性,而且能够使用配备单个ArmCortex-A9应用处理器内核的i.MX6So1o,配备两个内核的i.MX6Dua1或集成四个内核的i.MX6Quad,来提升性能。这种升级应用处理能力的需求,也在曾被视为传统嵌入式系统的设计中快速发展。对于这些设计,产品制造商希望为家用电器、工业控制器、医疗仪器等设备增加智能性。
3、为此,半导体供应商提供了异构多核处理(HMP)器件,这些器件可同时集成应用处理器内核和嵌入式处理器内核。例如,NXPi.MX8M系列结合了多至四个ArmCorte-A53应用处理器内核,以及一个ArmCorte-M4嵌入式处理器内核。只需使用这一单个器件,开发人员就可以打造出智能宣量产品。这些产品可充分利用应用处理器来增强、过滤或以其他方式处理音频数据。然后,音频系统依靠嵌入式处理器内核来执行播放所需的实时功能(图1)。在嵌入式处理器执行实时操作期间,应用处理器可以置于低功耗模式,从而降低整体功耗。当实时操作完成时,嵌入式处理器只需向应用处理器发送唤醒信号。图1:异构多核处理器尤其适用于智能产
4、品设计,既可提供高性能计算与实时功能,同时又不影响紧张的功率预算。(图片来源:NXPSemiconductors)除了异构内核外,NXPi.MX8M系列还集成了各种多媒体资源,包括4K视频处理单元(VPU)和高性能3D图形处理单元(更少。因此,该系列可以为越来越多的视频及3D图形智能产品提供有效解决方案。尽管如此,开发人员在构建高性能系统时,仍然面临着电池及线路供电系统对低功耗需求日益增长的挑战。为应对这一挑战,NXPi.MX8MMini处理器系列采用先进的半导体工艺技术制造,可解决高性能混合负载处理与功耗降低之间的需求矛盾。高性能、低功耗计算NXPi.MX8MMini处理器属于首款采用14纳
5、米(nm)FinFET工艺技术制造的NXPHMP系列,专为新兴的工业和物联网(IoT)系统而设计,这些系统对高性能、高安全性和低功耗都提出了要求。与NXPi.MX8M系列一样,NXPi.MX8MMini也集成了一个ArmCorte-M4嵌入式处理内核,以及最多四个ArmCorte-A53应用处理内核,还有一个全面的安全子系统以及多个连接和I/O选项(图2)。图2:NXPi.MX8MMini处理器结合了最多四个ArmCorte-A53应用处理器内核和一个ArmCorte-M4嵌入式内核,还有新兴智能产品所需的全套安全、多媒体、系统功能以及I/Oo(图片来源:NXPSemiconductors)为
6、了支持嵌入式设计,与之前的NXPi.MX8M相比,i.MX8MMini减少了某些I/O通道的数量及其多媒体子系统的高分辨率能力。例如,i.MX8MMini器件包括商业版(MIMX8MM6DVT1ZAA)和工业版(MIMX8MM6CVTKZAAA),提供一个单一着色器GPU和一个108OP60赫兹(Hz)VPU,而NXPi.MX8M则提供四着色器GPU和4KVPUoi.MX8MMini系列的其他成员包括商业版(MIMX8MM5DVT1ZAA)和工业版(MIMX8MM5CVTKZAA)器件,则完全去除了VPUe与早期的NXPi.MX8M一样,i.MX8MMini能够让开发人员利用处理器对多种存储器
7、类型的支持(包括双倍数据速率3低电压(D2R31)DDR4和低功耗DDR4(1PDDR4),实现性能与成本之间的进一步平衡。降低功耗为了进一步优化性能和功耗,开发人员可利用NXPi.MX8MMini功能,以自动或编程方式切换到低功耗工作模式。在一定条件下,应用内核可以自动切换到空闲模式,并且关闭GP1kVPU和应用内核,同时对大多数内部逻辑进行时钟选通,但保留对12数据缓存的供电。在此模式下,ArmCorte-M4内核仍可继续运行,以执行更多传统嵌入式处理任务,如传感器数据采集等。挂起模式是最省电的模式,通过同时禁用用于管理存储器接口的双倍数据速率控制器(DDRC),延长空闲状态下功耗降低的时
8、间。最后,安全非易失性存储(SNVS)模式只保留对SNVS逻辑和实时时钟的供电。i.MX8M中采用的14nmFinFET工艺技术具有功耗降低特性,在挂起和SNVS模式下表现尤为明显。在采用FinFET的i.MX8MMini中,挂起模式的功耗大约为7.81毫瓦(mW)。而在早期的i.MX8M中,功能类似的模式(称为深度休眠模式)消耗197mWo类似的功耗降低也发生在SNVS模式,在该模式下,i.MX8MMini的功耗约为0.11m肌而早期的i.MX8M功耗约为17mWo像i.MX8MMini这样的复杂器件具有大量的功能块和微调工作模式,使工程师面临诸多严格的实现要求。与其他同类器件一一样,i.M
9、X8MMini也依赖多个功率域来优化电源管理和效率。要启动和关闭这些器件,必须严格遵照指定的上电和断电顺序。对i.MX8MMini上电时,首先为SNVS存储体中的GPIO前级驱动器加电,通常为1.8伏。在2毫秒(ms)(最多2.4ms)内,必须为SNVS内核逻辑加电,通常为0.8伏。随后,再通过12个步骤,按顺序将特定信号或电力供给i.MX8MMini的各个引脚,每一步按0.015ms到20ms间隔定时进行。为器件断电的顺序正好相反,但是连续步骤之间的延迟均为10msO无论是哪一种情况,若不遵守这些准则,都可能使器件无法启动,导致上电期间电流过大,或者在最坏的情况下,会造成器件发生不可逆转的损
10、坏。处理器的PC板物理设计也有自身的严格要求。对于处理器486焊球14X14毫米(mm)封装的布局,NXP建议使用至少8层的PC板层叠结构,并分配足够的层专门用于电遮轨,以满足电流电阻(IR)下降规范的要求。与此同时,布局工程师必须确保高速线路上的串扰最小,包括受支持、以15千兆赫(GHZ)和3,000百万次/秒(MTs)速度运行的存储器器件线路。快速开发为帮助工程师快速开始应用开发或加快定制硬件设计的开发,NXP推出了NXPi.MX8MMiniEVK(评估套件)和相关的参考设计(图3)。该评估套件以基板和系统级模块(SOM)板形式交付,提供了一个完整的系统,包括外部1PDDR4存储器和闪存,
11、以及USB和其他接口。图3:NXPi.MX8MMiniEVK板组提供了一个完整的系统平台,用于立即评估i.MX8MMini处理器,以及快速开发异构多核处理器应用。(图片来源:NXPSemiconductors)除千兆位以太网外,该套件还包含近二Ei和蓝牙连接选项。提供的扩展板包括Minisastocsi相机模块和mxs-dsi-o1edi有机发光二极管(o1ed)触摸屏,用于帮助进行视频和显示应用设计。借助用于嵌入式1inux和嵌入式Android操作环境的可用预建镜像,开发人员可以立即使用该套件评估i.MX8MMini处理器,并运行样例应用程序。对于构建自己的软件应用的开发人员,NXP免费提
12、供MCUXpresso软件开发工具包(2K),该工具包提供了一整套软件组件,用于构建典型的高性能嵌入式应用(图4)。图4:MCUXpresso软件开发工具包(SDK)架构由整套软件层组成,包括驱动程序、板级支持包,以及开发大多数嵌入式应用所需的可选组件。(图片来源:NXPSemiconductors)使用NXP的在线MCUXpressoSDKDashboard,开发人员可以针对GCCArmEmbedded工具链或用于Arm的IAREmbeddedWorkbench进行SDK配置,还可以添加可选的中间件组件,包括ArmCorteX控制器软件接口标准(CMSIS)DSP库和AmazonFreeRT
13、QSo配置后的SDK分发包将包含Arm标准库、外设驱动程序、用于FreeRTOS的外设驱动程序包装器,以及一套齐全的软件样例。在SDK分发包的软件样例中,有一对应用程序演示了一种关键的信息交换设计模式,该模式是实现异构计算的基础。在任何多核计算环境中,单独的处理器都需要有效的机制来传递请求和共享数据。对于i.MX8MMiniEVK应用,NXP使用的是RPMsg-1ite远程处理器消息传递(RPMSg)协议的精简版。RPMsg协议是开放式非对称多处理(OpenAMP)框架项目的组成部分,旨在为异构多核系统中多核之间的通信提供标准接口。NXP的RPMsg-1ite解决了小型嵌入式系统中的资源限制,
14、缩小了封装尺寸,并取消了与这些系统不一致的功能。在SDK分发包中,样例应用程序rpmsg_1itepingpongrtos演示了一次简单的交换,即使用RPMsg-1ite实现不同处理器之间的简单ping-pong交互(清单1)o在为另一个“远程”处理器创建RPMsg队列(my-queue)和端点(my_ept)后,“主机”应用处理器向远程内核发送信号。在收旬来自远程内核的瘪手响应后,主机处理器将开始执行一个循环,该循环使用阻塞策略等待远程内核的“ping”消息,然后再发送自己的“pong”响应。voidapp_task(void*param)。.my_rpmsg=rpmsg_1iteremot
15、einit(void*)RPMSG_1ITE_SHMEM_BASE,RPMSG_1ITE_1INK_ID,R1_NO_F1AGS);whi1e(!rpmsg_1ite_is_1ink_up(my_rpmsg)PRINTF(1inkisup!rn);my_queue=rpmsg_queue_create(my_rpmsg);my_ept=rpmsg_1ite_create_ept(my_rpmsg,1OCA1EPTADDR,rpmsg_queue_rx_cb,my_queue);ns_hand1e=rpmsgns_bind(myrpmsg,appnameservice_isrcb,NU11);r
16、pmsg_ns_announce(my_rpmsg,my_ept,RPMSG_1ITE_NS_ANNOUNCE_STRING,R1_NS_CREATE);PRINTF(Nameserviceannouncesent,rnw);*WaitHe11ohandshakemessagefromRemoteCore.*/rpmsg_queue_recv(my_rpmsg,my_queue,(unsigned1ong*)&remote_addr,heI1oMsg,sizeof(he1IoMsg),NU11,R1_B1OCK);whi1e(msg.DATA二100)PRINTF(Waitingforping.0.rnw);rpmsgqueue_recv(myrpmsg,myqueue,(unsigned1ong*)&remote_adc1r,(