一条多处理器流水线的动态工作量平衡的制作方法

文档序号:6406626阅读:207来源:国知局
专利名称:一条多处理器流水线的动态工作量平衡的制作方法
技术领域
本发明一般涉及并行计算,更具体地涉及并联在一条多处理器流水线上的处理工作量的动态平衡。
在现有技术中已经利用了各式各样的处理器、存储器、总线及其它资源的配置来提供并行与流水线处理。这些配置包括用于使用共享存储器的多处理器的系统或者分担并行工作量的处理器的系统。
下面所描述的是用于并行与流水线处理的各种配置及技术。
4,930,102号美国专利是针对一种利用并行处理器的计算机体系结构的,它包括位于各种物理部件之间的一个接口系统以及用于保持等待中的工作的一个排队结构。更具体地,该计算机体系结构包括一个纵横电路(Cross-barCircuit)及一个折叠式存储队列结构(accordian-storequeuestructure)。
4,920,487号美国专利是针对具有多个处理单元及共享存储器的一种并行处理计算机系统的,它通过利用具有在其各连接点上执行相同的计算的一个网络来平衡集合计算工作量。
4,875,161是针对一种矢量文件组织来支持多道程序执行流水线的。各流水线通过将文件存储分段并以寻址这些段的不同单元能够同时存取一个矢量文件的不同的块。
4,850,027号美国专利是针对一种具有有限处理单元连接的图象处理系统的,它不需要海量存储器与总线容量便能提供多种图象处理网络选择。
4,839,798号美国专利是针对一种具有多个联机连接的计算机系统的计算机网络系统的。各计算机系统能够请求将一个作业传送给另一个计算机系统。
4,814,978号美国专利是针对一种利用大量VLSI(超大规模集成)电路芯片的计算机设计。这一设计为一种静态数据流体系结构,其中多个处理单元使用I/O电路进行外部通信,而使用通过一个选路网络传送的包进行内部通信,该网络实现一条从任一处理单元到达任何其它处理单元的传输路径。
4,766,566号美国专利是针对使用双并行执行单元的一种RISC(精简指令集计算机)型VLSI处理器的。可以在这两个单元中增加一个加法器、一个乘法器或者一个ALU(算术逻辑单元)来平衡双单元之间的工作量。
4,736,291号美国专利是针对一种包含用于处理存储在一个大容量存储器中的地震数据的多个独立处理单元的通用阵列处理器的。一台数字主计算机通过一个主接口单元提供该系统的总体控制。
4,633,387号美国专利是针对诸如多控制单元外围数据存储器系统的一种多单元数据处理系统的,其中,根据一个较为不忙的单元的一个工作请求,一个较忙的单元可以将工作移交给该较为不忙的单元。
4,543,626号美国专利是针对一种响应一条命令协调在一个多处理器系统中的多个处理器的操作的控制装置的。所接收的每一条命令与一条包含路由矢量的予定的路由相关联。为该路由生成一个控制块。每一个路由矢量标识一个要执行的操作以及拟行该操作的站。各站具有一个包含控制块的工作队列,该站对这些控制块顺序地检索与处理。
4,504,909号美国专利是针对用于实时处理从一台CT扫描器所采集的数据的一种陈列处理器。在该系统中,给定的陈列的子部分的处理是与下一阵列的采集的数据集合的输入交替进行的。
4,495,562号美国专利是针对一种用于并行处理系统的控制方法的,其中对一台处理器的使用时间间隔进行周期性测定以确定其工作量。
4,493,020号美国专利是针对一种微程序编码的数据处理系统的,其中每一条高级指令是通过一个或多个任务执行的,而每一任务则以一种微程序编码方式执行一条或多条任务微指令来进行。三个分立的处理器以互相间隔120度相位进行操作但共享共同的物理硬件,诸如存储器。根据可分配的寄存器的状态,在需要时分配给处理器资源。
4,493,019号美国专利是地对一种具有三附高点体系结构的微程序编码的数据处理系统的,该体系结构是为使用三个分立的以互相相隔120度的相位操作的处理器执行微指令而实现的。
4,384,324号美国专利是针对一种具有三阶高点体系结构的微程序编码的数据处理系统的,该体系结构是为使用三个分立的以互相相隔120度的相位操作的处理器执行微指令而实现的。
4,229,790号美国专利是针对用于并发处理任务与指令的一种系统的。该处理器是使用控制与功能单元流水作业介避免优先权约束负担的一种多指令多数据屏面数字计算机。
3,905,023号美国专利是针对一种具有通过交换独立地操作计算,I/O(输入/输出)及存储器模块的微程序编码的多道处理信息处理系统的。
本发明包括一个用于处理高级指令的装置,该装置包括多个处理单元、用于生成执行所述高级指令的多条指令的装置、以及用于动态地将所述生成的指令组成至少一个组,各组包括至少一条要被所述处理单元之一处理的指令。
此外,本发明包括由多个处理单元处理高级指令的一种方法,该方法包括,生成执行所述高级指令的多条指令、以及动态地将所述生成的指令组成至少一个组,各组至少包括一条要被所述处理单元之一处理的指令。
对本发明的性质与优点的进一步了解可参照本说明书的其余部分及附图。


图1是一台典型的数字计算机的方框图;
图2是使用本发明的一个较佳实施例的一种可能的图形流水线的方框图;
图3是存储一张流水线图以及其它对于将例程分配给该处理流水线有用的信息的存储器的方框图;
图4与5给出上述图3中展示的流水线图中可能使用的数据结构的示例;
图6是从该流水线图构成的指针或链接表的展示,分配程序可利用它来分配任务;
图7是用于分配或组织在流水线中处理的任务的一种方法的高级流程图;
图8是可能为一组给定的例程生成的进程栈的展示;
图9是上述图7中所描述的配置步骤的更详细的流程图;
图10与11是一张配置表与一张例程表的示例;
图12是上述图7中所描述的步骤805的更详细的流程图;
图13是一个配置高速缓冲存储器项的示例;
图14是上述图7中所描述的分配步骤的更详细的流程图;
图15是上述图14中所描述的分配步骤的更详细的流程图;
图16是上述图14中所描述的新的目标瓶颈计算步骤的更详细的流程图;
图17是上述图7中所描述的装入步骤的更详细的流程图;
图18是上述图7中所描述的短装入步骤的更详细的流程图;以及图19示出供执行的一组进程栈。
图1是一个典型的数字计算机系统100的方框图。该计算机系统包括一台主计算机105。该主计算机包括连接到一个存储器120的主处理器110,从而包括主流水线125、输入设备130及输出设备140。主处理顺110可包括一个单一处理器或多个处理器。输入设备130可包括一个键盘、鼠标器、图形输入板或其它类型的输入设备。输出设备140可包含一文本监视器、绘图仪或其它类型的输出设备。主计算机的主处理器同时可通过图表适配器200连接到图形输出设备150,诸如一个图形显示器。图形适配器200在总线160上接上来自主处理器110的与图形相关的指令。这些指令包括诸如光线的数量与位置等属性,以及诸如描绘一个三角形、多条线(polyline)之类的任务。然后,图形适配器在一条图形流水线210中执行这些指令,流水线210包括图形处理器220与图形存储器230。然后,图形流水线执行这些指令并在这些指令的基础上更新帧缓冲器240。帧缓冲器240包括要在图形输出设备上显示的每一个象素的数据。一个RAMDAC(随机存取存储器数到模转换器)250将存储在帧缓冲器中的数字数据转换成RGB(红绿蓝)信号以提供给图形显示器150,从而描绘从主处理器输出的所要求的图形。
图2是使用本发明的一个较佳实施例的一条可能的图形流水线210。该图形处理器流水线包括三个处理器300、310与320,别的流水线可包括更多或较少的处理器。此外,除了图形流水线之外,主流水线或其它流水线可利用本发明的一个实施例。更进一步,各处理器可视为一个处理单元,其中每一单元可包括多个作为一条流水线、并行处理器等组合在一起的处理器。第一处理器300用作一个分配器来在流水线上分配工作量。别的流水线在流水线前面可有一分配器。存储器包括内存储器330、340与350加上外存储器360、365与370。各内存储器紧密地耦合于一个处理器以提供一个频繁地使用的信息的小而快的存储器。各外存储器包含需要较多存储区或处理器较难得用到的信息。外存储器360、365与370分别以总线380、385与390耦合到处理器300、310与320上。
图3是一个存储器的方框图,诸如存储一张流水线图400、任务分裂码430、一张例程表440以及用于将例程分配给较佳实施例中的处理流水线的一个配置高速缓冲存储器450的外存储器360。一个属性缓冲器存储流水线所用的属性,诸如窗口位置、变换、光线信息等。流水线图400包括一张处理器图410与一张存储器图420。处理器图410包括流水线中分配了要执行的例程的每一处理器的一个处理器数据结构。如果该分配器可作为流水线中的一个处理器执行例程,则该分配器也同样有一个数据结构。在下面图4与5中更详细地说明这些图。包括在内存储器中的还有任务分裂码430、例程表440及配置高速缓冲存储器450。任务分裂码包括用于为各任务或高级指令生成可以指示处理器流水线去执行的例程或指令的代码,从而将任务或高级指令分裂成一组例程或指令。例如,描绘一个三角形的任务可以分裂为顺序执行的输入、变换、剪辑、光线、变换以及输出例程。例程表440包括由进程ID(PID)执行的可能的例程或指令的一张表。各例程项包括在分配进程中所使用的该例程的相关信息。下面将对例程表更详细地说明。配置高速缓冲存储器450包括前面已配置的任务的一张表。当前属性缓冲器455包含应用软件已经提交给适配器的当前属性,诸如光线的数量与位置。下面对任务分裂码430,例程表440与配置高速缓冲存储器450更详细地进行说明。
图4与5给出可用于上面图3所示的流水线图400中的处理器与存储器的数据结构的示例。处理器数据结构460展示了上面图2中所示的流水线中所示的处理器P2的一个可能的数据结构。这一数据结构包括分别指向前一个处理器P1、下一个处理器P3、内存储器M2与外存储器M4与M5的指针461-465。该数据结构还可包括分配给该处理器的内与外存储器以字为单位的数量466与467。该数据结构还可包括诸如处理器速度之类的可利用的其它信息468。存储器结构470展示上面图2中所示的存储器M4的一个可能的数据结构。该存储器数据结构包含以字为单位的存储器数量473以及指向可使用该存储器的处理器的指针471。该存储器数据结构还可包含指向流水线中的前一存储器的指针472,该指针用于在装入步骤中跨越存储器定位数据,该数据结构可包含要用到的其它信息474。
图6为较佳实施例中从流水线图构成的并且分配器能用来分配任务的指针或链接表500-580的示例。注意,从流水线中最后的存储器550(M3)开始一张导向流水线中的第一存储器560(M4)的链接表。这对于分配处理器只须简单地从一个存储器数据结构走向另一个数据结构来寻找信息是有用的。
图7是用于分配或组成在处理流水线中进行处理的任务的一种方法的高层流程图。在称作配置的第一步骤800中,分配器为完成一个给定的任务要执行的例程建立一张配置表。配置表中包含执行各例程所需的时间长度以及各例程所需要执行的任何初始化例程。这些初始化例程设置某些该例程要用到的属性或者为该例程分配工作存储器。在第二步骤805中,对一个配置高速缓冲存储器进行检测以判定该任务在此之前已经被执行过。如果没有,则在称作分配的步骤810中,分配器利用上述流水线图在流水线内的处理器之间动态地组织或分配这些例程,从而将这些例程或指令组合成例程或指令的指令流水线中的处理器去处理。分配进程是动态的,因为例程或指令的组织的分配并不是事先定义的而是根据下述因素变化的诸如正在分配的指令的处理时间的长度,用于执行这些指令的处理器的数量,处理器的当前处理工作量等。这一步骤中建立称作进程栈的数据结构。一个进程栈是一个特定的处理器或处理器单元在完成其任务部分时要执行或处理的一组例程或指令。在本较佳实施例中,对于执行任何例程的每一个处理器有一个进程栈。在称作装入的下一个步骤820中,在进程栈中装入指向适当的存储器中要由处理器执行的数据与指令的适当指针、如果该任务在这以前已经被执行过,如在上述步骤805中所判定的,则执行另一个短装入步骤825,在其中检验进程栈以保证全部需要的例程与数据指针都已装入。在称作执行的最后步骤830中,顺序地执行分配给流水线中每一个处理器的进程栈以完成所要求的任务。在本较佳实施例中,然后可以像上面所述那样处理下一个任务,包括在完成前一个任务的进程栈的执行之前开始进程栈的执行。这是可能的,由于一条流水线中的处理器可以顺序地然而却是独立地处理其进行栈这一事实。
图8是可能为一组给定的例程生成的一个进程栈900的示例。一个进程栈是要执行的例程910-940的一张链接表。在该链接表中的每一个例程完成一定量的工作。例程是一个自含的功能,它需要一个该进程的进程ID(标识符)(PID)950、该例程的代码的局部地址960、一个由它得到该例程的输入数据的输入指针970、一个向它写输出数据的输出指针980以及诸如指向局部工作存储器的指针之类的局部信息990。这一信息是在下面要更详细地说明的装入步骤中加入到进程栈中的。各处理器从其进程栈项中读取这些指针,以其指针调用例程,然后对进程栈中的下一例程重复这一过程。由于进程栈是一张链接表,它可以容易地由一个控制程序动态地建立和操作。
图9是上面图7中所说明的配置步骤800的更详细的流程图。在第一步骤1000中,执行给定任务的任务分裂代码以提供完成这一给定任务所要执行的例程的一个配置表。任务分裂代码照顾到事先由属性指令装入系统的该系统的各种当前属性。在第二步骤1005,在配置表上加上任务类型的一个配置ID(CID)。在本较佳实施例中,CID是以任务分裂代码生成配置表中所取的路径为基础的。结果,对于任何以后的同一类型的具有相同当前属性的任务,其CID是相同的。在第三步骤1010,对于配置表中的每一个例程,搜索一张例程表以确定执行该例程所需时间的长度以及对该例程的任何限制。例程限制包括哪一个处理器可以执行该例程这样的限制(例如由于需要存取一个适配器输入缓冲器而必须由第一处理器执行该例程,或者由于需要存取帧缓冲器而必须由最后那个处理器执行该例程)。该例程需要外存储器、以及其它可能的例程限制。在分配步骤中,这一信息将是最为有用的。然而,如下面将要更详细地说明的,这些限制并不常用并且一般情况下在分配步骤中并不引起任何困难。然后在步骤1020中更新例程表以反映这一信息。
图10与11为本发明的一个较佳实施例中所用的一张配置表1040与一张例程表1065的示例。配置表给出为执行一个给定的任务所需要的例程中每一个的进程ID(PID)1045、执行每一个例程所需的时间1050以及对分配该例程的任何限制1055。配置表还包含任务类型的CID1060。配置表是在配置步骤中生成的并且在分配步骤中受到重用。例程表包括所有已知例程的PID1070、例程代码在分配器存储器中的地址1075、每一个例程的大小1080、执行每一个例程所需的时间1085、对每一个例程的任何分配限制1090以及有时候指向一个初始化例程的一个指针。这一信息中有一些是用于在配置步骤中完成该配置表的。其余的信息则在装入步骤中使用。
图12是上面图7中描述的步骤805的一张更详细的流程图,其中判定这一类型的任务在以前是否已经执行过。在第一步骤1100中,读取配置高速缓冲存储器中的一个给定任务的第一项。如果没有找到第一项(步骤1110),则处理继续前进到分配步骤(步骤1150),这是因为以前没有以相同的有关属性(例如模型中所用的光线的数据)执行过当前任务。如果在配置高速缓冲存储器中找到了该给定任务的一个项,则将该项的配置ID与给定的任务的CID进行比较。如果CID相同,则具有相同的内部属性的同一任务以前已经执行过。结果,处理继续前进到短装入步骤(步骤1140)。如果CID不相同,则检验当前项以确定在配置高速缓冲存储器中是否有另一后续项(步骤1130)。如果没有,则处理继续前进到分配步骤(步骤1150),这是因为当前任务在此之前并未以相同的内部属性执行过。如果有,则处理返回到步骤1120继续进行。
图13为本发明的较佳实施例中所用的一个配置高速缓冲存储器项1160的示例。该配置高速缓冲存储器面包括配置ID(CID)1165、一个指向下一高速缓冲存储器项的指针1170、前面执行的进程栈的付本1175、指向前面执行的进程栈的局部存储器地址的指针1180、以及各进程栈的装入标志1185用于指示哪些进程栈仍装入在局部存储器中。其它信息1190可根据要求加入。
图14为上面图7中描述的分配步骤810的更详细的流程图。在第一步骤1210中,分配器计算一个目标瓶颈。这时要分配给任何处理器的最长路径长度(执行例程的时间)。在本较佳实施例中,该目标瓶颈是这样计算的将从配置表中找出的要执行的所有例程的路径长度之和除以处理器的数目。在第二步骤1220,将配置表中所列出的例程顺序地分配给处理器。就是在这一过程中,在分配器的存储器中建立了进程栈的框架。一个给定的处理器所要执行的例程被装入一个进程栈,每一个执行例程的处理器有一个进程栈。下面将对将例程分配给处理器更详细地进行说明。在第三步骤1230,判定是否最后一个处理器分配了比目标瓶颈更长的路径长度。如果是这样,则在步骤1240中计算一个新的目标瓶颈,并且步骤1220的分配过程重新开始。下面在图16中更详细地说明新的目标瓶颈的计算。如果所有的处理器都分配了小于或等于目标瓶颈的路径长度,则在步骤1250中检验配置表中所列出的例程限制是否都又被当前的处理器例程分配所满足。如果这些限制都已满足,则过程继续到步骤1270中的装入步骤。如果限制未满足,则在步骤1260中将这些例程以及任何插入的例程重新分配给适当的处理器。例如,如果将一个例程分配给了流水线中的第二处理器,而该例程限制于流水线中的第一处理器,则将该例程连同任何其它前面的分配给第二处理器的例程重新分配给第一处理器。重新分配步骤一经完成,则过程继续到步骤1270中的装入步骤。
图15为上面图14中所描述的分配步骤1220的更详细的流程图。在第一步骤1310中,将第一例程分配给第一处理器,在这一分配中,配置表中所给出的该例程的路径长度被输入到接收该例程的处理器的一个当前分配的路径长度中。可使用该处理器数据结构来暂时保存该当前分配路径长度。在第二步骤1320,分配器判定是否在配置表中还有要分配给处理器的其它例程。由于这是第一次进入步骤1320,答案很可能是肯定的。在下一步骤1330中,将已分配给该处理器的当前路径长度加上要分配的下一例程的路径长度与目标瓶颈进行比较。如果这一量不大于目标瓶颈,则在步骤1310中将下一例程分配给该处理器,并且将该例程的路径长度加到当前处理器的当前分配路径长度上。这一过程一直重复到下一例程的路径长度再也不能在不超出目标瓶颈的条件下加到分配给该处理器的路径长度为止。在步骤1340,分配器随即通过在处理器数据结构中查找下一个处理器来判定是否还有要分配例程的另一个处理器。如果有,则分配过程在步骤1350中通过访问其处理器数据结构前进到下一处理器。然后,在步骤1310中将一个例程分配给该处理器,并且将该例程的路径长度输入到接收该例程的处理器的当前分配的路径长度中。如果步骤1340的判定为否,则在步骤1360中将其余的例程分配给最后一个处理器,并且将这些例程的路径长度加到该最后处理器的当前分配路径长度上。
图16为上面图14中所描述的一种较佳的新目标瓶颈计算步骤的更详细的流程图。在这一过程中,其目的为得到一个其值为大于当前目标瓶颈的最小的路径线性和的新瓶颈。在第一步骤1405中,以将其设置为其最大可能值初始化变量最小路径并将一个计数器i设置为1,在第二步骤1410,判定配置表中的例程i是否存在。由于这是第一例程(i=1),答案为是。在下一步骤1415中,将路径长度和设置为0并将计数器j设置为等于计数器i。因步骤1420中,判定路径长度和是否大于目标瓶颈。由于这是第一次通过,答案为否。在步骤1425中,将配置表中给出的例程路径长度加在路径长度和上,并且通过将计数器j增加1而过程前进到下一例程。在步骤1430中,判定例程j是否在配置表中。如果是,则处理返回步骤1420。如果为否或者上面步骤1420的答案为是,则步骤1435判定路径长度和是否小于最小路径长度。如果是,则步骤1440将最小路径长度设置为等于该路径长度和。然后步骤1445将计数器i增加1以开始对下一组例程的处理。然后步骤1410判定例程i是否存在于配置表中。如果否,则处理返回到图14的步骤1220。
图17是上面图7中所描述的装入步骤的更详细的流程图。最好从最后一个处理器的进程栈开始向后操作到第一处理器的进程栈。这使得装入作为带有从第一进程栈至最后进程栈的指针的链接表的进程栈较为容易。在第一步骤1510中,以从进程栈得到的进程ID(PID)唑例程表读取最后一个进程栈的第一个例程的地址。然后将该例程复制到能被该处理器访问的局部存储器中,最好是内存储器。然后将局部例程地址装入进程栈中的例程地址中。在步骤1520中,还为该例程所使用与生成的数据的输入与输出地址生成输入与输出指针。假定这是该进程栈中的第一个例程,输入指针便是输入端口地址。输出指针则指向该处理器能够访问的内存储器中的一个局部地址。在步骤1530,如果例程表指定了一个初始化例程作为这一例程可使用的初始化例程,则调用该初始化例程。这一初始化例程将供该程使用的属性,诸如窗口位置、变换、光线信息等,装入局部存储器。此外,该初始化例程在局部存储器中建立该例程所需的任何局部的或工作存储区。在进程栈中装入一个指向该工作存储区的指针。在为该列程、输入与输出缓冲器以及工作存储区分配存储器时,对配置高速缓冲存储器中所存储的前面执行过的那些进程栈的付本进行检验以确定是否有可利用的存储器空间。如果将以前分配给前面执行过的一个进程栈的存储器重新分配给当前的进程栈,则将该进程栈在配置高速缓冲存储器中的一个装入标志关掉。这指明前央执行过的进程栈的资源不再分配给该进程栈。这一标志是在下面要详细说明的短装入步骤中使用的。在步骤1540中,判定这是否进程栈上的最后例程。如果不是,则执行返回到步骤1510装入该进程栈中的下一个例程。如果是,则步骤1550判定这是否是最后的进程栈(第一个装入的但是进程栈链接表中的最后一个)。如果是,则步骤1555将一个称作返回的最终例程加到该进程栈上,当在执行步骤中执行这一返回例程时,它完成这些进程栈的执行。如果否,则步骤1560将一个称作“送到下一个”的最终例程加到当前进程栈的末尾,其目的在处理器之间移动数据。这一例程的输入是前一例程的输出地址而且输出地址是该处理器的输出缓冲器地址。然后,步骤1565将进程栈以及指向该进程栈的一个指针装入到局部存储器中并且装入配置高速缓冲存储器中。此外,在配置高速缓冲存储器中存储该进程栈的一个接通的装入标志,用来指示该进程栈及其资源已装入局部存储器中。然后步骤1575判定这是否是第一进程栈(最后装入的但是在进程栈链接表中的第一个进程栈)。如果不是,则执行返回到步骤1510去加入前一进程栈的第一个例程。如果是,则处理继续到步骤1580中所示的执行步骤。
图18是上面图7中所描述的短装入步骤的更详细的流程图。如上面所描述的装入步骤,最好从最后处理器的进程栈开始向后操作到第一处理器的进程栈。这使得作为具有从第一进程栈到最后进程栈的指针的一张链接表的那些进程栈在必要时较容易重新装入。在第一步骤1610,从配置高速缓冲存储器读取给定的任务与属性的最后进程栈。在步骤1620中,检验该进程栈的装入标志以确定该进程栈是否仍装入。如果不是,则在步骤1630将该进程栈重新装入局部存储器,如以上在装入步骤中所描述的。这包括重新装入该例程、输入指针、输出指针、重新运行初始化例程等。如果对步骤1620的判定为是,或者在重新装入进程栈之后,则判定最后的进程栈已经从配置高速缓冲存储器中读入。如果尚未,则处理返回到步骤1610。否则步骤1650进入到执行步骤。
图19示出一组供执行的进程栈1700-1900,它们可能是为图2中所述的流水线由上述配置、分配与装入步骤生成的。这些进程栈中包括描绘具有一条侧面光线及两条定向光线的一个三维模型中的一个三角形的例程。进程栈执行从第一处理器执行第一个栈1700中的第一例程1710开始。在本例中,它是位于进程栈中所给出的局部存储器地址上的网目输入例程。该例程从进程栈中取得其输入/输出及局部静态或工作存储器指针,并执行其功能。该例程从输入指针读取数据,在本例中是M1输入端口地址,并且将结果传送线输出指针,在本例中为M1-A。如果必要,该例程还使用分配给该进程栈的工作存储器。然后处理前进到要执行的下一例程1720。在该进程栈1700中要执行的最后一个例程1740是一个“送到下一个”例程。这一例程启动一次将数据传送给下一个处理器的直接存储器存取(DMA)。在“送入下一个”例程被调用以后,处理器防止由“送入下一个”输出指针所指的输出缓冲被写入,直到该“送到下一个”例程完成为止。结果,该处理器便可开始处理一个随后分配的任务的一个后随的进程栈。在当前的例子中,在“送到下一个”例程完成以后,处理继续到第二处理器,其中执行第二进程栈1800。使用M2输入端口地址于输入及M2-A于输出,执行侧而光例程1810。同样,第二处理器继续到该“送到下一个”例程,并在其中执行该例程。处理继续到第三处理器的进程栈1900。执行这些例程直到最后一个例程。在最后栈1900上的最后一个例程1930是一个返回例程。由于现在已经完成了该任务这一例程使执行终止。
本发明的一个优点是可以通过增加或减少处理器或存储器或者通过改变处理器和/或存储器之间的关系容易地修改流水线。用户只须简单地重新配置表示流水线的流水线图并擦除包含以前分配的进程栈的配置图。这允许分配器容易地通过重新分配新流水线配置的进程栈在流水线上重新平衡任务,这是利用修改后的流水线图进行的。
虽然上述已经参照特定实施例对本发明进行了全面的描述,对于本领域内的普通技术人员而言,其它代替实施例也将是显而易见的。例如,分配器可用于多条流水线,其中每一条流水线根据需要分配任务。此外,上述各处理器可包括多个处理单元。这些多个处理单元也可以组成一条多处理器流水线。此外,处理流水线也可使用共享存储器。还可以使用其它的代替分配方案。此外,对以前执行过但已不再装入的进程栈的检测方法也可使用与配置高速缓冲存储器分离的一张装入图来完成。因此,不能将上述说明视为对本发明的范围的限制,本发明是由所附的权利要求书定义的。
权利要求
1.一种用于处理高级指令的装置,其特征在于a)多个处理单元;b)用于生成执行所述高级指令的多条指令的装置;以及c)用于动态地将所述生成的指令组成至少一个组的装置,各组至少包含一条要被所述处理单元之一处理的指令。
2.权利要求1的装置,其特征在于所述处理单元包括用于顺序地处理各所述指令组中的各指令的装置。
3.权利要求2的装置,其特征在于顺序地耦合所述处理器的装置。
4.权利要求3的装置,其特征在于用于由所述处理单元顺序地处理所述组的装置。
5.权利要求4的装置,其特征在于耦合到所述组织装置,用于提供处理各所述指令的时间长度的装置。
6.权利要求5的装置,其特征在于该组织装置包括用于根据所提供的处理各指令的时间长度动态地将指令组成所述组的装置。
7.权利要求5的装置,其特征在于耦合到该组织装置,用于提供所述处理单元的一个描述的装置。
8.权利要求7的装置,其特征在于该组织装置包括用于根据所提供的处理各指令的时间长度以及所提供的所述处理单元的描述,动态地将指令组成所述组的装置。
9.权利要求8的装置,其特征在于耦合到该组织装置,用于提供各所述处理单元可获得的存储器资源的一个描述的装置。
10.一种用多个处理单元处理高级指令的方法,其特征在于下述步骤a)生成多条指令去执行所述高级指令;以及b)动态地将所述生成的指令组成至少一个组,各级至少包括一条要被所述处理单元之一处理的指令。
11.权利要求10的方法,其特征在于顺序地处理各所述组中的各指令的步骤。
12.权利要求11的方法,其特征在于由所述处理单元顺序地处理所述组的步骤。
13.权利要求12的方法,其特征在于提供处理各所述指令的一个时间长度的步骤。
14.权利要求13的方法,其特征在于组织步骤包括动态地根据所提供的处理各指令的时间长度将这些指令组成所述组。
15.权利要求13的方法,其特征在于提供所述处理单元的一个描述的步骤。
16.权利要求15的方法,其特征在于该组织步骤包括动态地根据所提供的处理各指令的时间长度以及所提供的所述处理单元的描述将这些指令组成所述组。
17.权利要求16的方法,其特征在于提供各所述处理单元可获得的存储器资源的一个描述的步骤。
全文摘要
用于处理高级指令的一种装置包括多个处理单元、用于生成执行所述高级指令的多条指令的装置、以及用于动态地将所述生成的指令组成至少一个组的装置,各组至少包括一条由所述处理单元之一处理的指令。此外,一种由多个处理单元处理高级指令的方法,包括生成执行所述高级指令的多条指令以及动态地将所述生成的指令组成至少一个组,各组至少包括一条由所述处理单元之一处理的指令。
文档编号G06F9/50GK1068434SQ9210450
公开日1993年1月27日 申请日期1992年6月10日 优先权日1991年7月10日
发明者吉米·达赖厄斯, 马克·阿兰·爱考夫, 艾仑·比特·焉森, 米歇尔·特雷尔·范奥沃 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1