AndesCore除提供AHP,APB ,HSMP接口外,亦可透过EILM接口与内存整合,使AndesCore可以不透过AMBA BUS直接透过EILM接口撷取指令。然而嵌入式Flash的执行速度目前,并不能赶及AndesCore的工作频率,AndesCore的执行效能将受限于嵌入式Flash的执行速度。此时可透过在AndesCore与Flash间的EILM接口之间加入一个预取模块,减少AndesCore因为Flash throughput跟不上AndesCore效能,使执行效能下降的影响。文章中所提供的参考预取模块,以data width 32 bits的Flash为操作对象,预取buffer size为两道Instructions(32bits*2)提供一预取机制的设计参考。
本文之目的在提供与介绍一个预取模块的参考设计作为用户设计预取模块的参考。期望能对使用者有所帮助,也希望读者不吝指教提供您宝贵的意见。
1.Prefetch design界面介绍
AndesCore透过EILM接口可与外部external local memory整合,为了透过Prefetch模块根据前一道指令撷取时的地址,以AndesCore将循序撷取指令为预测逻辑来预取下道指令,并储存该指令内容于Prefetch模块,供AndesCore循序撷取指令时使用,我们将原本AndesCore与EILM的整合方式(如图一所示),改为在AndesCore与EILM之间加入Prefetch模块的整合方式(如图一所示)。
AndesCore透过EILM接口跟Prefetch模块提交request,Prefetch模块透过eilm_wait告知AndesCore该request执行是否需要wait,并在对应的时序提供AndesCore欲撷取的指令内容。
Prefetch模块另有接口与memory (Flash or ROM)整合,透过该接口进行对memory的读取。由于坊间Flash or ROM有各种protocol,Andes提供的Prefetch reference design主要专注于提供prefetch机制的参考设计,memory接口以一pseudo Flash接口为设计对象,用户后续可根据所使用的memory的protocol进行调整设计。
详细全文请见pdf文挡:当高速AndesCore遇上低速嵌入式Flash如何提升芯片效能