数据空间导向调度与指令级并行提取
1. 引言
随着嵌入式系统的复杂性不断增加,如何高效利用硬件资源成为关键问题。本文探讨了在多核片上系统设计中,如何通过编译器指导的指令级并行(ILP)提取和数据空间导向调度来优化性能。具体而言,本文将介绍如何通过控制流驱动的源代码级循环嵌套分割方法,优化嵌入式软件的调度与时序分析。此外,还会讨论通过选择合适的数据瓦片形状/大小、确定瓦片遍历顺序以及重构进程代码等方法,实现有效的数据空间导向调度。
2. 空间导向调度
2.1 数据空间导向调度的基本概念
数据空间导向调度(Data Space-Oriented Scheduling, DSOS)是一种旨在最大化数据缓存局部性的进程调度策略。通过根据进程间的数据共享模式重构进程代码,DSOS可以显著提高数据缓存的利用率。具体步骤如下:
-
选择数据瓦片形状/大小 :数据瓦片的大小决定了在一个时间量子中将执行的工作量。选择小的瓦片大小会引发频繁的进程切换,而使用大的瓦片大小可能会导致许多缓存未命中。因此,目标是选择不会溢出缓存的最大瓦片大小。
-
确定瓦片遍历顺序 :数据瓦片应该按照数据依赖关系可接受的顺序进行访问。通过经典的列表调度策略,可以找到一种遍历数据瓦片的方式,生成合法的代码。
-
重构进程代码 :根据选定的数据瓦片和遍历顺序,重构进程代码以提高数据缓存局部性。通过逻辑上将数组划分为瓦片,并逐一访问这些瓦片,可以确保进程在同一时间量子中操作相