摘要
最近要把AI 整体自底向上的梳理一遍,同时把自己的知识面好好扩充一下,因此需要整体的看看,主要有哪些东西,并且这些东西,应该从哪些地方去补充知识;
坦白说,这部分跟我自己以往的工作经历差别有点大,从通用服务器芯片的全栈,要转移到AI专用芯片的全栈,这个里面涵盖的知识面可能相对通用服务器要求的更高,所以这里可能近一年需要花比较多的功夫;
雄关漫道真如铁,而今迈步从头越
最近要把AI 整体自底向上的梳理一遍,同时把自己的知识面好好扩充一下,因此需要整体的看看,主要有哪些东西,并且这些东西,应该从哪些地方去补充知识;
坦白说,这部分跟我自己以往的工作经历差别有点大,从通用服务器芯片的全栈,要转移到AI专用芯片的全栈,这个里面涵盖的知识面可能相对通用服务器要求的更高,所以这里可能近一年需要花比较多的功夫;
雄关漫道真如铁,而今迈步从头越
在驱动的开发过程中,一般来说会涉及两部分的内存:
在一般芯片架构设计以及软件设计上,对两者经常会有些特别不一样的处理,比如对于描述符的内存,是否需要IO去识别,并且主动推送到CPU cache中? 又或者,对于数据内存,是否需要IO标记不冲刷系统SLC?等等,这里根据业务场景,行为模式的不同,会有一些区分;
同时,对于两块内存的申请,内核也会有特别的内存接口申请方式,一般来说,在内核驱动中,针对描述符内存,一般使用dma_alloc_coherent/dma_alloc_noncoherent接口,并且实际上,目前linux内核驱动,默认使用coherent接口,没有对描述符内存允许软件可配使用noncoherent接口;在处理数据内存的时候,一般使用dma_map_single/dma_pool的方式申请,并且可以选择由硬件维护一致性或者软件维护一致性;