不严格地说,分配的目标是实现调度的结果,调度结果为分配提供了以下3类实体:
  · 操作;
  · 变量;
  · 数据传输。
调度完成后,各操作都被调度到相应的控制步,由此可以统计出各控制步中操作的类型和数目。同时,根据调度结果和数据相关性,可以知道各变量的生存期(即变量从产生到最后一次被引用之间的控制步)。在变量的生存期内,变量必须被保存在寄存器或内存单元中,以便被其他操作引用。
  为什么说这种说法不严格呢,因为调度时必须考虑硬件资源约束。硬件资源的最终决定是在分配之后而不是在分配之前,因此,调度时的硬件资源约束条件只能是用户给定的或调度算产生的一种估计值。调度和分配之间的这种相互依赖关系使高层次综合算法的复杂性大大增加。

   分配过程中必须给调度结果中每一个操作赋给相应的功能单元,被调度在同一控制步中的两个操作(非互斥操作)不能共享一个功能单元。
  下面对调度结果中变量的生存期加以分析:在某一控制步中产生并只在该控制步中被引用的变量称为不跨越控制步边界的变量。所有跨越控制步边界的变量,其生存期大于一个控制步,应存放到寄存器中。不跨越控制步边界的变量的生存期仅为一个控制步,则无需存放到寄存器中,可以直接将其连接到其目标模块上。同样,同一控制步中并存的两个变量(非互斥操作产生的)也不能共享同一个寄存器。