今天小编要和大家分享的是嵌入式技术相关信息,接下来我将从嵌入式AI解决方案中内存驱动的设计介绍,001 08 04_08 04 07 图片_百度百科这几个方面来介绍。

嵌入式技术相关技术文章嵌入式AI解决方案中内存驱动的设计介绍001 08 04_08 04 07 图片_百度百科

嵌入式技术相关技术文章嵌入式AI解决方案中内存驱动的设计介绍

(文章来源:粤讯)

EdgeBoard是百度打造的基于FPGA的嵌入式AI解决方案及基于此方案实现的系列硬件。作为端侧的解决方案,没有在PL侧为FPGA设计专用的内存,而是采用了PS和PL侧共用DDR内存的结构。因此,对这种异构系统的CPU和FPGA的协调就落在了内存的管理方面,这就是驱动系统中关于内存管理的子系统。

在FPGA芯片PS侧,CPU使用多级缓存来访问DDR,在Linux操作系统中,使用内存映射页面,而对DDR的物理连续性没有要求,它们被映射到虚拟连续的地址空间中。而在PL侧的FPGA一般未使用任何缓存机制,它们在计算中都是直接访问DDR。每一次读写操作都是读或写一个连续的内存空间,而且要求这片内存的起始地址要对齐在一个特定的地址偏移处。一次计算中的多次读写都要求访问的DDR是一致连续的。

针对CPU和FPGA这样的内存需求,我们设计Linux驱动内存的子系统时,就要充分考虑到:1)cache的影响;2)FPGA使用内存的物理连续性;3)传递给FPGA使用的内存块要满足偏移要求。

针对上述需求,我们采用分隔物理内存的设计方案,从整体系统中保留其中的一部分内存,让Linux只使用另一部分内存。这部分被保留的内存,分配权归内存驱动,驱动从保留部分中分配的内存块在Linux系统中和FPGA系统中都可以访问。在此期间,分配时要保证物理连续和起始偏移特性,使其能满足FPGA的需求。