CN105144107A - 用于运行可执行代码的方法、处理模块及系统 - Google Patents
用于运行可执行代码的方法、处理模块及系统 Download PDFInfo
- Publication number
- CN105144107A CN105144107A CN201480009364.4A CN201480009364A CN105144107A CN 105144107 A CN105144107 A CN 105144107A CN 201480009364 A CN201480009364 A CN 201480009364A CN 105144107 A CN105144107 A CN 105144107A
- Authority
- CN
- China
- Prior art keywords
- perform
- processing module
- parallel
- executable code
- module
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5066—Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/45—Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
- G06F8/456—Parallelism detection
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
- Multi Processors (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供一种通过一组处理模块来对可执行代码的运行,其中,通过所述一组处理模块中的至少一个第一处理模块来运行该可执行代码,其中该可执行代码包括一组并行可执行部分,其中可执行代码的每个并行可执行部分均包括至少两个并行可执行步骤,并且其中所述运行包括:由至少一个第一处理模块来检测待运行的可执行代码的所述一组并行可执行部分中的一并行可执行部分;由至少一个第一处理模块来选择所述一组处理模块中的至少两个第二处理模块;以及由至少一个第一处理模块来命令所选定的至少两个第二处理模块来执行可执行代码的经检测的并行可执行部分的至少两个并行可执行步骤。
Description
技术领域
本发明涉及一种配置为运行可执行代码的处理模块以及用于运行可执行代码的方法。而且,本发明一般性地涉及一种系统以及包括处理模块的服务器系统。此外,本发明还涉及一种能够实施用于运行可执行代码的方法的计算机可读介质。
背景技术
现在,通过快速发展的通信及计算技术,使得能够获得大数据量。像例如Web服务器或图像处理的网络服务领域是对大数据量进行管理、处理和操作的显著例子。这种大规模数据的存在需要能够以快速、便捷和节约资源的方式来操作数据的技术和设备。操作数据的设备,具体说是硬件,必须具备用于实现空间节约方案的小尺寸,在执行数据运算操作方面可靠、快速,并且高效率和低能耗。
US2002/0078308A1涉及对称多线程处理(SMP)系统,更具体地涉及其中所附接的处理单元在结构上无需配置有地址转换机制就能对共享存储器进行受限访问的SMP系统。
US2002/0135582A1提供了经由宽带网络来进行高速处理的计算机架构及编程模型。该架构使用一致的模块结构、通用计算模块以及统一的软件单元。通用计算模块包括控制处理器、多个处理单元、多个本地存储器(处理单元处理来自这里的程序)、直接存储器访问控制器以及共享主存储器。还提供了用于协调由处理单元对往来于共享主存储器的数据进行读、写的同步化系统及方法。为了安全抵御在处理单位对程序进行处理过程中的数据损坏,提供了硬件沙盒结构。统一的软件单元既包含数据又包含应用程序,并且构造为可通过任何网络处理器来进行处理。每个软件单元在网络上可被唯一性地识别。还提供了一种用于创建针对处理流数据的专用流水线的系统及方法。
一些已知的硬件/软件方案可针对一个方向或另一方向来提供改进。然而,它们仍然未能改善上述标准的全部或至少大部分。因此,仍然需要用于管理、处理和/或操作大数据量、大数据流量和/或大数据吞吐量的改进式硬件/软件方案。
发明内容
因此,本发明的目的在于提供一种允许增加待处理的数据量、增加待处理的数据流量和/或提高待处理的数据吞吐量并且可提供降低的信号噪声、允许降低屏蔽性、减小冷却力度,降低功耗和/或减小空间的方法和一组处理模块。
本发明基于如下思想:即,可执行代码的至少一部分优选由多于一个的处理模块来运行。用于运行一部分可执行代码的处理模块的选择可取决于以下几个标准:例如对应部分的结构、待处理的数据量、处理模块的硬件和/或软件环境。在代码的执行期间,每个并行可执行部分均是可识别或检测的。针对处理模块的决定是在代码的执行过程中完成的,从而可以实现对用于共同执行那部分代码的处理单元的最优选择。通过这种方式,能够实现对大数据量的高效、可靠和快速的操作。此外,适当的使用处理单元能够使得硬件的布置和实现相对于所述硬件的其他组件、单元或模块可以尽可能地小。而且,由于适当选择用于操作各个代码部分的处理单元,可实现对大数据量的节能操作,其中所述各个代码部分优选通过多于一个的处理单元来运行。此外,当用处理模块来配置硬件时,本发明考虑使得所述硬件的彼此相互通信、交互和/或连接的模块/元件/组件彼此靠近地定位,使得尽可能需要最少数目的连接线和/或连接器。通过这种方式,可以降低能量消耗、模块/元件/组件产生的信号噪声、模块/元件/组件所需的空间、模块/元件/组件的屏蔽性,和/或用于模块/元件/组件的冷却。
特别地,本发明的优点通过所附独立权利要求来实现。本发明的其他方面、实施例及特征则在所附的从属权利及说明书中加以阐述,并且同样为实现所述优点作出贡献。
根据本发明的实施例,提供了一组处理模块,其包括至少一个第一处理模块,所述至少一个第一处理模块配置成:运行可执行代码,其中所述可执行代码包括一组并行可执行部分,其中该可执行代码的所述一组并行可执行部分中的每个并行可执行部分均包括至少两个并行可执行步骤;检测可执行代码的那组并行可执行部分中的一并行可执行部分,将其作为待运行的可执行代码的一部分;选择所述一组处理模块中的至少两个第二处理模块;以及,命令所选定的至少两个第二处理模块来执行可执行代码中经检测的并行可执行部分的至少两个并行可执行步骤。
可执行代码优选基于计算机科学领域公知的源代码。源代码例如通过解译器或编译器来读取,从而生成可执行代码。源代码、还有采用类似方式的可执行代码包括多个指令,例如通常以计算机语言来编写的计算机指令。源代码表示以相应的计算机语言编写的文本。指令,以及相应的源代码或可执行代码分别指示像是处理模块的计算实体,以在环境或系统内执行特定计算或行为,其中所述计算实体或处理模块分别实现。
源代码可能由编译器程序转换成可被计算机理解的低级机器代码。在这种情况下,随后可能在晚些时刻对机器代码进行存储,以用于运行。因此,可执行代码间接指代源代码,并且相当于代表机器代码。类似于源代码,机器代码包括如上所述的指令。机器代码的指令对应于源代码的各个指令,并且只写以另一种语言(例如机器代码)来编写的。
当可执行代码直接指代源代码时,例如,解译器实体可用于在运行中分析并直接执行源代码程序的效果。
与代码的种类(可执行代码在特定情况下会涉及代码种类)无关,所述可执行代码可被理解成其包括在可执行代码的运行过程中能由一个或多个计算模块或处理模块来读取并执行/运行的指令。本领域技术人员知晓术语“可执行代码”和“指令”的含义。可执行代码是例如应用程序、软件程序或软件系统的代码。
如所提到的那样,可执行代码由至少一个部分构成或者被划分成至少一个部分,其优选由多个部分构成或被划分成多个部分。如上所述,所述部分的一些优选为并行可执行部分。可执行代码包括至少一个并行可执行部分,即那组并行可执行部分包括至少一个相应部分。并行可执行部分定义为:其包括优选地彼此独立执行的至少两个步骤,即一个步骤的执行不会影响另一步骤的执行。所述步骤中每一者均包括如上所述的一组相应指令。尤其是,各步骤均包括至少一个指令。术语“并行可执行”或“以并行方式的运行或执行”是指至少部分地同时执行相应的步骤以及相应部分中的相应指令。它们优选为同步或基本上同步(即,可能发生时间偏移,例如随机地发生)地执行。
该组处理模块包括至少两个处理模块。处理模块可例如是独立的中央处理单元,也称为内核或处理器内核。
如上所述,在代码的执行过程中,即当代码由所述一组处理模块中的处理模块的至少一者来执行时,关于处理模块必须执行可执行代码的并行可执行部分的决定得到满足。通过这种方式,可以将涉及到处理模块的硬件及软件环境、数据量等方面的当前情况考虑在内。此外,用于处理大的数据量并优选由多于一个的处理模块来执行的各个代码部分可由至少两个处理模块来高效执行,优选地通过多个处理模块来高效执行。这样实现了对大数据量的高效、可靠和快速的操作。适当使用处理单元使得允许硬件的布置和实现尽可能地小。而且,由于适当选择共同执行各个代码部分的处理单元,实现了对大数据量的节能操作。
根据本发明的实施例,至少两个并行可执行步骤的执行优选为至少部分地同时进行,例如大致并行或并行。通过这种方式,实现了通过处理模块对数据的快速计算和处理,这反过来导致了用于处理大的数据量的高效硬件和软件系统。
根据本发明的实施例,至少一个第一处理模块配置为通过将可执行代码的经检测并行可执行部分的至少两个并行可执行步骤中的每一者分配给所选定的至少两个第二处理模块中的一者,来执行所述命令。通过这种方式,实现了在多个处理模块之间的并行可执行步骤运行的广泛分布。这带来了处理模块的性能和效率的提高。
根据本发明的实施例,至少一个第一处理模块配置为命令所选定的至少两个第二处理模块中的每一者来执行可执行代码中经检测的并行可执行部分中的至少两个并行可执行步骤中的至少一个步骤。通过这种方式,也可以将能够执行并行可执行步骤的、可用的处理模块的数量考虑进去。因此,实现了并行可执行步骤的高效分布,这反过来带来了处理模块的效率提高。
根据本发明的实施例,所选定的至少两个第二处理模块包括至少一个第一处理模块。通过这种方式,当执行关于大数据量的计算和处理时,所述一组处理模块中的每个处理模块均参与其中。因此,实现了整个处理模块组的快速、高效且有效的操作。
根据本发明的实施例,至少一个第一处理模块配置成:如果可执行代码的第一部分包含在该可执行代码的第二部分之中的话,则命令执行该可执行代码的第一并行可执行部分和第二并行可执行部分。因此,使用到了对大数据量的计算及处理进行分配的各种可能性,这反过来导致了整个处理模块组针对大的数据量的高效、有效且快速的操作。
根据本发明的实施例,可执行代码的那组并行可执行部分中的每个并行可执行部分均包括属于一种特定并行化类型的步骤。通过这种方式,实现了可执行代码的结构化运行,这带来了处理模块的性能的提高。根据本发明的又一实施例,两种并行化类型相互不同。此外,根据本发明的实施例,第一并行化类型包括程序循环,并且其中第二并行化类型包括条件性分支。
根据本发明的实施例,如果可执行代码的那组并行可执行部分中的经检测并行可执行部分包括作为至少两个并行可执行步骤的程序循环步骤的话,那么至少一个第一处理模块配置为将程序循环的一定数目的周期分配给所选定的至少两个第二处理模块中的每一者,其中将所述程序循环的每个周期分配给所选定的至少两个第二处理模块中的一者;如果可执行代码的经检测并行可执行部分将一组程序循环包括作为至少两个并行可执行步骤的的一组程序循环的话,那么至少一个第一处理模块配置为将该组程序循环中的每一个程序循环分配给所选的至少两个第二处理模块中的一者;如果可执行代码中的经检测并行可执行部分包括作为至少两个并行可执行步骤的至少两个条件性分支的话,那么至少一个第一处理模块配置为将每个条件性分支分配给所选定的至少两个第二处理模块中的一者;和/或如果可执行代码中的经检测并行可执行部分包括作为至少两个并行可执行步骤的至少两个条件性分支的话,那么至少一个第一处理模块配置为将至少两个条件性分支的每个条件分配给所选定的至少两个第二处理模块中的一者,并且将针对该至少两个条件性分支中的一个条件来编码的至少两个条件性分支的每个代码部分分配给所选定的至少两个第二处理模块中的一者。
通过这种方式,实现了通过多个处理模块来对并行可执行部分的各并行可执行步骤的进一步优化,其中使用到了用于运行并行可执行部分的每一种可能性。这改善了该组处理模块的性能、计算时间和效率。
根据本发明的实施例,该组处理模块包括在一个处理元件或至少两个处理元件中。通过这种方式,可以将处理模块放置在相对小的区域中,并且能够实现小尺寸的硬件。此外,处理模块之间的通信路径得以减少。通过这种方式,实现了处理模块的能消节约、资源节约、高效且快速的操作。
根据本发明的实施例,一个处理元件分别地包括单元处理器或单元芯片,或者至少两个处理元件分别地包括至少一个单元处理器或单元芯片。通过这种方式,支持对大数据量的快速且有效的处理。已知单元处理器或单元芯片分别具有微处理器架构,该架构将适度性能的通用型功率架构内核与流线型协同处理元件相结合。单元处理器的示例例如是IBM出品的PowerXCell8i处理器或Sony出品的CellB.E.。
根据本发明的又一实施例,至少一个第一处理模块包括功率处理器元件,并且至少两个第二处理模块包括至少一个功率处理器元件和/或至少一个协同处理元件。通过这种方式,支持对大数据量的快速且有效的处理。
根据本发明的实施例,提供了一种通过一组处理模块来运行可执行代码的方法,其中所述方法包括通过所述一组处理模块中的至少一个第一处理模块来运行所述可执行代码,其中所述可执行代码包括一组并行可执行部分,其中可执行代码的每个并行可执行部分包括至少两个并行可执行步骤,并且其中所述运行包括:由所述至少一个第一处理模块来检测待运行的可执行代码的所述一组并行可执行部分中的一并行可执行部分;由所述至少一个第一处理模块来选择所述一组处理模块中的至少两个第二处理模块;以及,由所述至少一个第一处理模块来命令所选定的至少两个第二处理模块来执行可执行代码的经检测的并行可执行部分的至少两个并行可执行步骤。
特别地,所述方法配置为执行针对本应用中的该组处理模块所阐述的各步骤。因此,相应的步骤同样代表上述方法的步骤。通过使用该方法,得以达到与针对该组处理模块所阐述的相同的积极效果。
根据本发明的实施例,提供了一种包括了如上所述的、并在后续说明部分加以阐述的一组处理模块的系统。因此,整个硬件及软件系统可受益于针对该组处理模块所阐述的积极效果。
根据本发明的实施例,该系统包括以下至少一项:包括了所述一组处理模块的一个处理元件,或者包括了该组处理模块的至少两个处理元件;至少一个存储模块,其连接到所述一个处理元件上或连接到所述至少两个处理元件中的一者上,并且其配置为向所述一个处理元件或所述至少两个处理元件中的一者提供存储容量;第一功率供应模块,配置为向所述至少一个存储模块提供功率;第二功率供应模块,其配置为向所述一组处理模块提供功率;通讯模块,其配置为:从网络接收数据,并将所接收的数据提供至该组处理模块,和/或从该组处理模块接收数据,并将所接收的数据传送到网络;固件,其包括用于该设备的软件;第三功率供应模块,其配置为向所述固件提供功率;连接模块,其配置为连接固件、网络芯片模块和所述一个处理元件,或者连接固件、网络芯片模块和所述至少两个处理元件;和/或电源接口模块,其配置为向所述第一、第二和第三功率供应模块提供功率,并向通讯模块提供功率。
根据本发明的另一实施例,一个处理元件包括单元处理器,或者至少两个处理元件包括至少一个单元处理器;至少一个存储模块包括至少一个随机访问存储器;电源接口模块是外围组件互连部(PCI)或外围组件快速互连部(PCIExpress);通讯模块是网络芯片模块、外围组件互连快速开关或上行链路模块;固件是闪存、现场可编程门阵列(FPGA)或统一可扩展固件接口(UEFI);和/或连接模块是配置为管理输入/输出(I/O)功能的互连芯片。
通过这种方式,实现了在所述一组处理模块周围的各组件的模块化布置,其中系统中包括了尽可能少的组件,从而在减少所需元件数目的情况下实现了该系统的简单生产。此外,该系统的彼此相连的、相互通信或交互的组件彼此间邻近设置。通过这种方式,减小了用于布置系统的空间,这反过来带来了实现小尺寸单位的可能性,以及带来了能耗的降低。此外,系统的性能和效率还得以提高。
根据本发明的实施例,提供了一种包括了如上所述并如下文更详细阐述的一组处理模块的服务器系统。通过这种方式,该服务器系统同样优选地配置成能提供本申请中所列出的所有积极效果。此外,实现了在同一时间引进和/或使用现有的数据中心基础设施/组件/模块/元件。
根据本发明的实施例,提供了一种包括了程序代码的计算机可读介质,其中当通过计算设备运行该程序代码时,该程序代码使计算设备执行如上所述并在下文更详细阐述的方法。
附图说明
从属权利要求中包含了其他优点及优选实施例,参照附图,根据下面优选实施例的描述将会更好地理解这些优点及优选实施例,其中:
图1a示出了根据本发明实施例来配置的一组处理模块;
图1b示出了根据本发明实施例来配置的一组处理模块;
图2示出了包括一组处理模块且根据本发明实施例来配置的处理元件;
图3示出了根据本发明实施例的其上各设置有一组处理模块的两个处理元件;
图4示出了根据本发明实施例的可执行代码的示例性结构;
图5a示出了根据本发明实施例的可执行代码的并行可执行部分;
图5b示出了根据本发明实施例的可执行代码的并行可执行部分;
图5c示出了根据本发明实施例的可执行代码的并行可执行部分;
图5d示出了根据本发明实施例的可执行代码的并行可执行部分;
图6示出了对根据本发明实施例的可执行代码的执行;
图7示出了对根据本发明实施例的可执行代码的执行;
图8a示出了用于执行根据本发明实施例的可执行代码的可执行并行部分的步骤;
图8b示出了用于执行根据本发明实施例的可执行代码的可执行并行部分的步骤;
图8c示出了用于执行根据本发明实施例的可执行代码的可执行并行部分的步骤;
图8d示出了用于执行根据本发明实施例的可执行代码的可执行并行部分的步骤;
图9a示出了根据本发明实施例来实现本发明的系统;
图9b示出了根据本发明实施例来实现本发明的系统;
图10示出了用于执行根据本发明实施例的可执行代码的方法;
图11示出了根据本发明实施例的所述方法来执行请求的处理步骤;
图12示出了根据本发明实施例的所述方法来执行文件的处理步骤;
图13示出了根据本发明实施例的一组处理模块的实现;
图14a示出了根据本发明实施例的包括了一个处理元件的系统的实现;
图14b示出了根据本发明实施例的包括了两个处理元件的系统的实现;
图15示出了根据本发明实施例的包括了一个处理元件的系统的实现;
图16示出了根据本发明实施例的包括了两个处理元件的系统的实现;和
图17示出了根据本发明实施例的一组处理模块的实现。
具体实施方式
本发明的各个实施例将在下文段落中进行描述。仅出于示例性目的,多数实施例都是相对于微处理器架构来加以概述的,并且在后续章节中使用的术语主要涉及该技术。然而,针对微处理器而使用的术语以及对实施例的描述均不意在将本发明的原理和思想限制于此种系统。
此外,在上述的本发明背景技术章节中所给出的详细说明仅仅旨在更好地理解下文所描述的多数为微处理器架构的特定示例性实施例,而不应当理解为是将本发明限制于所描述的处理及功能的特定实施方式内。
将在后续章节中加以概述的思想和原理适用于可提供更通用的微处理器架构概念的系统。
图1a示出了根据本发明实施例来配置的一组处理模块11,12_1至12_k。处理模块11,12_1至12_k优选地例如为处理器。处理模块11,12_1至12_k的组1配置为执行可执行代码。处理模块11,12_1至12_k中的至少一者配置为控制代码的执行。在图1中,这个控制处理模块以相应框11的加粗线来突出显示。其他处理模块12_1至12_k则配置为执行该代码的并行可执行部分的步骤。
控制处理模块11配置为执行可执行代码。当在代码的执行过程中,控制处理模块11到达了可执行代码中能以并行方式执行且必须要下一个执行的的部分时,即当控制处理模块11检测到或识别出可执行代码的并行可执行部分时,控制处理模块11会选择处理模块11,12_1至12_k的组1中的至少两个处理模块11,12_1至12_k,以用于执行/运行经检测或识别的并行可执行部分。
根据本发明的实施例,并行可执行部分在可执行代码中被标记为适于并行执行。这里,可以在可执行代码中相应地标记出并行可执行部分的起始点和结束点。为此,可以应用几种合适的技术。例如,可采用调用(优选为针对代码的所述部分来执行特定功能的预先指定调用)、标记了代码的所述部分的起始点和结束点的具体命令,或者其他预先设定的功能或指令来标记代码中的并行可执行部分。通过这种方式,执行代码的控制处理模块11会将相应的标记符检测作为待执行的可执行代码的下一条指令,并由此检测到接下来要执行的并行可执行部分。
在确定了并行可执行部分之后,控制处理模块11选择处理模块11,12_1至12_k的组1中的至少两个处理模块11,12_1至12_k来执行/运行所检测或识别的并行可执行部分。至少两个处理模块11,12_1至12_k可包括控制处理模块11。备选地,所述至少两个处理模块11,12_1至12_k可包括处理模块12_1至12_k,而不包括控制处理模块11。
接着,在选择了用于执行代码中经检测的并行可执行部分的处理模块11,12_1至12_k之后,控制处理模块11命令所选定的处理模块11,12_1至12_k执行针对至少两个并行可执行部分的步骤。这里,控制处理模块11向针对所检测的并行可执行部分的步骤中的每一步骤分配所选定的处理模块11,12_1至12_k中的一者。此外,针对所选定的处理模块11,12_1至12_k的每一者而言,向其分配所述步骤中的至少一个步骤。因此,若干个或每一个所选定的处理模块11,12_1至12_k都可能执行所述步骤中多于一个的步骤。在其他情况下,向所选定的处理模块11,12_1至12_k分配并行可执行步骤可能会使得所选定的处理模块11,12_1至12_k的至少一者不具有向其分配的并行可执行步骤。这例如针对选定的处理模块11,12_1至12_k多于在执行时刻所存在的并行可执行步骤的情况而言,是确实存在的。例如,可能会发生的是,并行可执行部分的并行可执行步骤数目无法精确地预先确定。如果发生这种情况,那么所选定的处理模块11,12_1至12_k中的一些将不具有用于执行的步骤。否则,可能发生的是,在分配过程中例如由于硬件和/或软件环境的改变而恰巧出现不用到一个或几个选定的处理模块11,12_1至12_k的情况,因此,没有向所述一个或几个选定的处理模块11,12_1至12_k分配并行可执行步骤。
经分配的步骤由已分配有所述步骤的处理模块11,12_1至12_k大体并行地执行或者先后执行。所选定的处理模块11,12_1至12_k在从控制处理模块11接受到相应的命令/指令之后,开始执行或执行它们的一个或多个分配步骤。那些在当前或给定时刻执行其所分得的步骤的选定处理模块11,12_1至12_k在相同时刻至少部分地执行其所分得的步骤,即彼此间至少部分并行。控制处理模块11可命令所选定的处理模块11,12_1至12_k随后地和/或至少部分并行地执行相应步骤。因此,可以使得一个团体的并行可执行步骤彼此间至少部分地并行执行,而另一团体的并行可执行步骤则稍后再彼此间至少部分地并行执行。因此,可能发生是,并行可执行步骤中的一些项由所选定的处理模块11,12_1至12_k的第一子集来执行,而并行可执行步骤的其余项的团体则由所选定的处理模块11,12_1至12_k的第二子集来执行。所选定的处理模块11,12_1至12_k的第一子集和第二子集可重叠或相等。
根据本发明的实施例中,处理模块的11,12_1至12_k的组1包括多于一个的控制处理模块11。在本示例中,相应的控制处理模块11,12_1至12_k配置为彼此间相互通信并且共享代码执行任务,具体来说是代码执行的控制任务。根据所述实施例,为控制处理模块11,12_1至12_k中的每一者分配组1中的相应其他的处理模块11,12_1至12_k。因此,每个控制处理模块11,12_1至12_k仅选择这样的处理模块11,12_1至12_k来执行对其分配的相应的并行可执行部分。根据本发明的又一实施例,分配给两个控制处理模块11,12_1至12_k的处理模块11,12_1至12_k可能重叠。因此,组1的处理模块11,12_1至12_k中的一些项优选由控制处理模块11,12_1至12_k中的至少两者来进行选择。
图1b示出了根据本发明的另一实施例来配置的一组处理模块11’至11”,12’_1至12’_k,12”_1至12”_K”。在图1b中,提供了一组控制处理模块11’至11”,其中为控制处理模块11’至11”中的每一者分配其他的处理模块12’_1至12’_k’,12”_1至12”_K”的对应子集。控制处理模块11’至11”的组中的一个控制处理模块11’表示主控制处理模块。其他的控制处理模块11”配置为经由主控制处理模块11’来选择,以用于执行相应的并行可执行步骤的组合。主控制处理模块11’针对控制处理模块11’至11”中各项并针对对其分配的处理模块12’_1至12’_k’来执行选择。如果主控制处理模块11’为了执行一组步骤还选择了另一控制处理模块11”,并命令该另一控制处理模块11”来执行所述的一组步骤,那么该选定的处理模块11”则如上文针对图1a所概述地那样配置为:选择对应的处理模块11”,12”_1至12”_K”来执行该组步骤,并命令所选定的处理模块11”,12”_1至12”_K”来执行对应的并行可执行步骤。
图2示出包括根据本发明实施例的一组处理模块211,212_1至212_m的处理元件21。该处理元件21优选为处理器或芯片,例如通常为本领域技术人员已知的单元处理器或单元芯片,因此,这里不再明确限定。该组处理模块211,212_1至212_m可如上文所概述地(参见尤其图1及其说明)和/或如下文所更详细阐述地那样来实现和布置。
图3示出了根据本发明实施例的两个处理元件31,32,其上面各布置有一组处理模块311,312_1至312_k和321,322_1至322_r。根据本实施例,处理元件31,32中的每一者均包括至少一个控制处理模块311,321以及至少一个其他处理模块312_1至312_k,322_1至322_r。处理元件31,32每一者的其他处理模块312_1至312_k,322_1到的322_r的数量可以不同或相同,即r=k或类似地,处理元件31,32每一者的控制处理模块311,321的数量可以不同或相同。处理元件31,32中的至少一者可以是例如单元处理器或单元芯片的处理器或芯片。该组处理模块311,312_1至312_k和321,322_1至322_r可如上文所概述地(参见尤其图1及其说明)和/或如下文所更详细阐述地那样来实现和布置。
图4示出了根据本发明实施例的可执行代码4的示例性结构。通常,可执行代码4包括能以并行方式执行的至少一个部分,即“并行可执行”。本实施例仅示出了对可执行代码4进行划分的示例,并且本发明并不仅限于此示例。根据本实施例,可执行代码是通过示例的方式被划分为六个部分41至45和47,其中部分42,44,45和47为并行可执行部分。根据本实施例,代码4具有可交替执行的两个分支。第一分支包括部分44和45,并且在其执行完毕后,该可执行代码结束,参见表示代码4结束的框46。第二分支包括部分47,并且在其执行完毕后,该可执行代码结束,参见表示代码4结束的框48。
图6示出了用于执行可执行代码4的示例性步骤,具体说是,当用于执行具有部分44,45的第一备选项时的示例性步骤。
针对本实施例,当执行代码4时,在图6的步骤S61中,至少一个控制处理模块11,11’至11”,211,311,321执行部分41。部分41不属于那一组并行可执行部分。然后,在完成针对部分41的S61操作之后,在图6的步骤S62中,至少一个控制处理模块11,11’至11”,211,311,321检测或识别出作为代码4一部分的、接下来待执行的并行可执行部分42,并且选择至少两个处理模块11,11’至11”,12_1至12_k,12’_1至12’_k’,12”_1至12”_K”,211,212_1至212_m,311,312_1至312_k,321,322_1至322_r来执行所检测的并行可执行部分42。而且,在选择之后,至少一个控制处理模块11,11’至11”,211,311,321命令所选定的至少两个处理模块11,11’至11”,12_1至12_k,12’_1至12’_k’,12”_1至12”_K”,211,212_1至212_m,311,312_1至312_k,321,322_1至322_r执行部分42。当执行该命令时,该至少一个控制处理模块11,11’至11”,211,311,321将部分42的各个并行可执行步骤分配给相应的选定处理模块11,11’至11”,12_1至12_k,12’_1至12’_k’,12”_1至12”_K”,211,212_1至212_m,311,312_1至312_k,321,322_1至322_r,反过来,所述相应的选定处理模块被命令大体并行或先后地执行并行可执行步骤中的一项或多项。
此外,在图6的步骤S62中,在完成部分42的各步骤的执行之后,相应的选定处理模块11,11’至11”,12_1至12_k,12’_1至12’_k’,12”_1至12”_K”,211,212_1至212_m,311,312_1至312_k,321,322_1至322_r中的每一者均向至少一个控制处理模块11,11’至11”,211,311,321提供执行结果或反馈。在接收到部分42的所有并行可执行步骤的执行结果或反馈之后,至少一个控制处理模块11,11’至11”,211,311,321认定部分42已被执行。因此,图6的步骤S62结束。
在图6的步骤S63中,至少一个控制处理模块11,11’至11”,211,311,321执行下一部分43,这是因为根据本实施例,部分43不属于那一组并行可执行部分。
在针对部分43的执行S63完成以后,至少一个控制处理模块11,11’至11”,211,311,321确定出:根据给定的情况而必须执行包括了部分44和45或部分47的其他备选项中的那一者。如果鉴于本图6实施例的情况而将部件44和45作为备选项的话,那么在步骤S64中,该至少一个控制处理模块11,11’至11”,211,311,321则将部分44检测作为并行可执行部分,并以上面针对部件42所阐述的相同方式来进行执行。
在针对部分44执行S64之后,在图6的步骤S65中,至少一个控制处理模块11,11’至11”,211,311,321将部分45检测作为并行可执行部分,并以上面针对部件42所阐述的相同方式来进行执行。当针对部分44的执行S65结束时,代码4的执行结束于步骤S66,例如没有其他的待执行代码指令可用,并且至少一个控制处理模块11,11’至11”,211,311,321如图4的框46以及图6的步骤S66所指示的那样地完成代码4的执行。
针对仅包括了并行可执行部分47的第二备选项项同样进行类似处理程序。在如同上面针对部件42所阐述地那样地执行部分47之后,该至少一个控制处理模块11,11’至11”,211,311,321如图4的框48所指示的那样地完成代码4的执行。
图5a至5d示出了对并行可执行部件42,44,45,47进行执行的示例。并行可执行部分42,44,45,47的执行取决于并行化类型,根据本发明实施例,所述并行化的类型可以是涉及程序循环的类型或涉及条件性分支的类型。
程序环路是通常为本领域所知的软件编程。循环是作出一次规定但优选连续进行多次的指令序列。在循环内所规定的、针对该循环而执行的指令序列也称为循环体。附加地,循环包括针对执行循环体的次数的规格。循环的典型代表例如是for循环或while循环。
for循环可规定如下:
FORj=1至N
XXX
声明“Forj=1至N”规定出用于执行if循环体的指令“XXX”的迭代次数,在本示例中为N次。
while循环可规定如下:
Dowhile(测试)
XXX
声明“Dowhile(测试)”规定出用于执行while循环体的指令“XXX”的迭代次数。声明“测试”表示每次执行while循环时必须为真的条件。
上述提供的循环仅作为示例,并且本发明并不限于这些而是允许使用其他的循环规定。
根据本发明实施例,并行可执行部分可仅通过一个循环来定义。这种并行可执行部分的每个并行可执行步骤均涉及特定时间(即,周期),在所述特定时间内对循环体进行执行,并且将其分配给相应的选定处理模块11,11’至11”,12_1至12_k,12’_1至12’_k’,12”_1至12”_K”,211,212_1至212_m,311,312_1至312_k,321,322_1至322_r用以执行所述并行可执行步骤。选定的处理模块11,11’至11”,12_1至12_k,12’_1至12’_k’,12”_1至12”_K”,211,212_1至212_m,311,312_1至312_k,321,322_1至322_r运行循环的至少一个周期或并行可执行步骤,并且还可以执行多于一个的并行可执行步骤或周期。
针对将一个循环用作并行可执行块的条件是:该循环的每个周期独立运行。即,循环中一个周期的运行不会影响循环中其他周期中的任何一个周期的运行。
图5a示出了针对并行可执行部分51的示例,所述并行可执行部分51包括一个循环并且其每个并行可执行步骤51_1至51_i均表示该循环的运行周期。图8a示出了用于执行S81图5a所示的并行可执行部分51的各步骤。图8a的步骤S811中,至少一个控制处理模块11,11’至11”,211,311,321将可执行代码的部分51检测作为下一要执行的部分。在图8a的步骤S812中,该至少一个控制处理模块11,11’至11”,211,311,321选择至少两个处理模块11,11’至11”,12_1至12_k,12’_1至12’_k’,12”_1至12”_K”,211,212_1至212_m,311,312_1至312_k,321,322_1至322_r用于执行可执行代码的部分51。选择可以取决于为了分别执行循环或部分51所需要的并行可执行步骤/周期51_1至51_i的数目。并行可执行步骤/周期51_1至51_i的数目分布于所选定的处理模块11,11’至11”,12_1至12_k,12’_1至12’_k’,12”_1至12”_K”,211,212_1至212_m,311,312_1至312_k,321,322_1至322_r之中。为此,在图8a的步骤S813中,在至少一个控制处理模块11,11’至11”,211,311,321将循环/部分51的每个并行可执行步骤/周期51_1至51_i分配给可执行一个或多于一个的并行可执行步骤/周期51_1至51_i的相应的选定处理模块11,11’至11”,12_1至12_k,12’_1至12’_k’,12”_1至12”_K”,211,212_1至212_m,311,312_1至312_k,321,322_1至322_r,并命令所选定的处理模块11,11’至11”,12_1至12_k,12’_1至12’_k’,12”_1至12”_K”,211,212_1至212_m,311,312_1至312_k,321,322_1至322_r来执行对其所分配的一个或多个并行可执行步骤/周期51_1至51_i。
根据本发明的实施例,并行可执行部分可以由多个循环(即,多于一个的循环)来定义。针对这样的并行可执行部分的条件独立于该并行可执行部分的循环而运行。因此,各循环的运行不影响其他循环中的任一者的运行,即没有循环使用或需要已由另一者改动过的数据。根据本实施例,将每个循环认为是包括了多个循环的并行可执行部分的并行可执行步骤。
图5b示出了针对并行可执行部分52的示例,其包括多个循环,其中每个循环代表并行可执行部分52的一并行可执行步骤52_1至52_i。图8b示出了用于执行S82图5b所示的并行可执行部分52的各步骤。在图8b的步骤S821中,所述至少一个控制处理模块11,11’至11”,211,311,321将可执行代码的部分52检测作为下一要执行的部分。在图8b的步骤S822中,至少一个控制处理模块11,11’至11”,211,311,321选择至少两个处理模块11,11’至11”,12_1至12_k,12’_1至12’_k’,12”_1至12”_K”,211,212_1至212_m,311,312_1至312_k,321,322_1至322_r来执行可执行代码的部分52。该选择可取决于包括在部分52中的并行可执行步骤/循环52_1至52_i的数目。部分52的并行可执行步骤/循环52_1至52_i52_i分布在所选定的处理模块11,11’至11”,12_1至12_k,12’_1至12’_k’,12”_1至12”_K”,211,212_1至212_m,311,312_1至312_k,321,322_1至322_r中。为此,在图8b的步骤S823中,至少一个控制处理模块11,11’至11”,211,311,321将部分52的每个并行可执行步骤/循环52_1至52_i分配给可执行一个或多于一个的并行可执行步骤/循环52的相应的选定处理模块11,11’至11”,12_1至12_k,12’_1至12’_k’,12”_1至12”_K”,211,212_1至212_m,311,312_1至312_k,321,322_1至322_r,并命令所选定的处理模块11,11’至11”,12_1至12_k,12’_1至12’_k’,12”_1至12”_K”,211,212_1至212_m,311,312_1至312_k,321,322_1至322_r来执行对其所分配的一个或多个步骤/循环52_1至52_i。
根据本发明的实施例,并行可执行部分可以是涉及条件性分支的类型。条件性分支通常为本领域所知的是软件编程。条件性分支包括可执行代码4中的一系列声明/指令,其按照条件来执行并且是规定了将要执行该条件性分支中的声明/指令的一种或多种情况的条件。声明/指令可称为条件性分支的主体。条件性分支的典型示例是if-then-else结构。if-then-else结构可定义如下:
if(条件1),then
yyyl
elseif(条件2),then
yyy2
else
yyy3
声明:“if(条件1)”、“elseif(条件2)”和“else”规定了条件,其中“else”是指均不满足“条件1”和“条件2”的情况。“yyyl”、“yyy2”、“yyy3”规定了当条件满足时待执行的相应条件的主体。
图5c示出了根据本发明实施例的可执行代码的并行可执行部分53。根据图5c所示的实施例,并行可执行部分53包括条件性分支,其中各个条件性分支通过各自的条件规则以及通过对应的条件主体来代表并行可执行部分53的并行可执行步骤53_1至53_i。
图8c示出了用于执行S83图5c所示的并行可执行部分53的各步骤。在图8c的步骤S831中,至少一个控制处理模块11,11’至11”,211,311,321将可执行代码的部分53检测作为下一要执行的部分。在图8c的步骤S832中,该至少一个控制处理模块11,11’至11”,211,311,321选择至少两个处理模块11,11’至11”,12_1至12_k,12’_1至12’_k’,12”_1至12”_K”,211,212_1至212_m,311,312_1至312_k,321,322_1至322_r来执行可执行代码的部分53。该选择可取决于包括在部分53中的并行可执行步骤/条件性分支53_1至53_i的数目。部分53的并行可执行步骤/条件性分支53_1至53_i分布在所选定的处理模块11,11’至11”,12_1至12_k,12’_1至12’_k’,12”_1至12”_K”,211,212_1至212_m,311,312_1至312_k,321,322_1至322_r中。为此,在图8c的步骤S833中,至少一个控制处理模块11,11’至11”,211,311,321将部分53的每个并行可执行步骤/条件性分支53_1至53_i分配给可执行一个或多于一个的并行可执行步骤/条件性分支53_1至53_i的相应的选定处理模块11,11’至11”,12_1至12_k,12’_1至12’_k’,12”_1至12”_K”,211,212_1至212_m,311,312_1至312_k,321,322_1至322_r,并命令选定的处理模块11,11’至11”,12_1至12_k,12’_1至12’_k’,12”_1至12”_K”,211,212_1至212_m,311,312_1至312_k,321,322_1至322_r来执行对其所分配的一个或多个并行可执行步骤/分支53_1至53_i。
图5d示出了根据本发明实施例的可执行代码的并行可执行部分54。根据图5d的实施例,并行可执行部分54包括条件性分支,其中每个条件规则以及每个条件主体代表并行可执行部分54的并行可执行步骤54_1至54_i。为了更好地理解,在图5d中将由条件54_1,54_i-1代表的并行执行步骤绘制在它们主体54_2,54_i的上方。
图8d示出了用于执行S84图5d所示的并行可执行部分54的各步骤。在图8d的步骤S841中,至少一个控制处理模块11,11’至11”,211,311,321将可执行代码的部分54检测作为下一要执行的部分。在图8d的步骤S842中,该至少一个控制处理模块11,11’至11”,211,311,321选择至少两个处理模块11,11’至11”,12_1至12_k,12’_1至12’_k’,12”_1至12”_K”,211,212_1至212_m,311,312_1至312_k,321,322_1至322_r来执行可执行代码的部分54。该选择可取决于部分54的并行可执行步骤54_1至54_i的数目。部分54的并行可执行步骤54_1至54_i分布在所选定的处理模块11,11’至11”,12_1至12_k,12’_1至12’_k’,12”_1至12”_K”,211,212_1至212_m,311,312_1至312_k,321,322_1至322_r中。为此,在图8d的步骤S843中,至少一个控制处理模块11,11’至11”,211,311,321将部分54的每个并行可执行步骤54_1至54_i分配给可执行一个或多于一个的并行可执行步骤54_1至54_i的相应的选定处理模块11,11’至11”,12_1至12_k,12’_1至12’_k’,12”_1至12”_K”,211,212_1至212_m,311,312_1至312_k,321,322_1至322_r,并命令选定的处理模块11,11’至11”,12_1至12_k,12’_1至12’_k’,12”_1至12”_K”,211,212_1至212_m,311,312_1至312_k,321,322_1至322_r来执行对其所分配的一个或多个并行可执行步骤54_1至54_i。
这里,必须注意的是,并行可执行部分可以包括至少一个其他的并行可执行部分,即至少一个并行可执行子部分。在这种情况下,当通过选定的处理模块11,11’至11”,12_1至12_k,12’_1至12’_k’,12”_1至12”_K”,211,212_1至212_m,311,312_1至312_k,321,322_1至322_r来执行该并行可执行部分以及当在此运行中检测出并行可执行子部分时,则针对该并行可执行子部分再次执行如上所述的选择步骤和命令步骤。当执行对处理模块11,11’至11”,12_1至12_k,12’_1至12’_k’,12”_1至12”_K”,211,212_1至212_m,311,312_1至312_k,321,322_1至322_r的选择时,优先地选择不同于针对所述并行可执行部分而选定的那些处理模块的另一处理模块11,11’至11”,12_1至12_k,12’_1至12’_k’,12”_1至12”_K”,211,212_1至212_m,311,312_1至312_k,321,322_1至322_r以用于该并行可执行子部分的执行。
图7示出了对根据本发明实施例的并行可执行代码的执行S7,其中在并行可执行部分的运行S74过程中,执行并行可执行子部分S741。根据图7,首先,通过至少一个控制处理模块11,11’至11”,211,311,321来运行可执行代码的一部分S71。然后,通过由至少一个控制处理模块11,11’至11”,211,311,321所选定的至少两个处理模块11,11’至11”,12_1至12_k,12’_1至12’_k’,12”_1至12”_K”,211,212_1至212_m,311,312_1至312_k,321,322_1至322_r来运行一并行可执行部分S72。接下来,由至少一个控制处理模块11,11’至11”,211,311,321来运行另一部分S73。在步骤S74中,完成对并行可执行部分的运行。这里,相应的选定处理模块11,11’至11”,12_1至12_k,12’_1至12’_k’,12”_1至12”_K”,211,212_1至212_m,311,312_1至312_k,321,322_1至322_r检测出并行可执行子部分的存在并将此事报告给至少一个控制处理模块11,11’至11”,211,311,321。在步骤S741中,通过接收报告,至少一个控制处理模块11,11’至11”,211,311,321检测出并行可执行子部分的存在。然后,在步骤S741中,至少一个控制处理模块11,11’至11”,211,311,321选择至少两个处理模块11,11’至11”,12_1至12_k,12’_1至12’_k’,12”_1至12”_K”,211,212_1至212_m,311,312_1至312_k,321,322_1至322_r来执行所述子部分,并命令至少两个处理模块来执行该并行可执行子部分的相应的并行可执行步骤。在运行步骤S741之后,继续由针对包括了所述子部分的并行可执行部分而选择的相应处理模块11,11’至11”,12_1至12_k,12’_1至12’_k’,12”_1至12”_K”,211,212_1至212_m,311,312_1至312_k,321,322_1至322_r来运行步骤S74。
图9a示出了可根据本发明实施例来实现本发明的系统。图9a所示的系统包括服务器91、客户机92和数据库93。根据本实施例,客户机92向服务器91传送服务和/或数据请求。服务器91对每个接收到的服务和/或数据请求进行处理。为此,服务器91可以通过使用数据库93来至少部分地检索相应或必需的数据。服务器91和数据库93配置为彼此之间交换数据。在处理了所接收的服务和/或数据请求中的每一项之后,服务器91响应于相应的客户机92请求而向客户机92传送相应的数据或信息。服务器92可例如是网络服务器,或例如应用服务器的另一种信息或服务供应服务器。
图9b示出了可根据本发明又一实施例来实现本发明的系统。图9a所示的系统包括客户机92和服务器94,其中服务器94包括数据处理组件94_1和数据库94_2。根据本实施例,客户机92向服务器94传送数据和/或服务请求。响应于从客户机92接收的每个请求,服务器94的数据处理组件94_1对相应的请求进行处理。为此,数据处理组件94_1通过使用数据库94_2来至少部分地检索相应或必需的数据。数据处理组件94_1和数据库94_2配置为彼此之间交换数据。在处理了所接收的服务和/或数据请求中的每一项之后,服务器94响应于相应的客户机92请求而向客户机92传送相应的数据或信息。服务器94可例如是网络服务器或另一种信息或服务供应服务器。
图10示出了用于执行根据本发明实施例的可执行代码的方法。根据本实施例,所述可执行代码是指或包括提供了所请求的数据的软件程序或系统。当考虑图9a和图9b的实施例时,可执行代码由服务器91,94来运行。因此,服务器91,94是那种必须能够处理涉及到下列至少一项的大的数据量的组件:大量的接收请求、大量的数据(例如存储在数据库93,94_2中的数据)的处理、在处理过程中和/或响应于从客户机92接收的请求而向客户机92提供大量数据的过程中产生的数据。例如,服务器91,94优选配置为不仅只服务一个客户机92而且还服务于多个客户机92,正如Web服务器所常规进行的那样。
下面,本实施例将对服务器91,94为Web服务器的情况进行操作。然而,本发明并不仅限于web服务器应用。同样可针对其他类型的服务器91,94类似地采用的相同方案。
根据本实施例,在步骤S10_l中,服务器91,94扫描从客户机92到来的请求。步骤10_l优选由服务器91,94的至少一个控制处理模块11,11’至11”,211,311,321或数据处理组件94_1来执行。
在步骤10_2中,执行对所接收的请求的处理。每个所接收的请求优选地与另一所接收的请求基本上并行地进行处理S10_2。因此,可执行代码的涉及处理所接收请求的部分表示包括了程序循环的并行可执行部分。该并行可执行部分优选地如图5a和图8a所示地那样运行。在检测到一个或多个请求之后,针对所接收请求中的每一者而言,至少一个控制处理模块11,11’至11”,211,311,321选择服务器91,94或数据处理组件94_1中的一相应处理模块11,11’至11”,12_1至12_k,12’_1至12’_k’,12”_1至12”_K”,211,212_1至212_m,311,312_1至312_k,321,322_1至322_r,并命令该相应处理模块来执行请求的处理。
图11更为详细地示出了根据本实施例来执行对请求S10_2的处理步骤。根据本实施例,从客户机92接收的请求包括表示了网络地址的统一资源定位符(URL)。在步骤S11_1中,针对处理请求而选定的相应处理模块11,11’至11”,12_1至12_k,12’_1至12’_k’,12”_1至12”_K”,211,212_1至212_m,311,312_1至312_k,321,322_1至322_r确定出该请求所涉及的数据,例如当访问该请求的URL时所述URL被可视化或表示。根据本实施例,所确定的数据对应于可能存储在数据库93,94_2中的至少一个数据文件。
在步骤S11_2中,对用于可视化所述请求的URL而确定的每个数据文件进行处理。由于将显示多个数据文件,对步骤S11_2进行编码的部分代表并行可执行部分,其涉及针对数据文件中的每一项所执行的程序循环。这种并行可执行部分的运行例如优选地如图5a和图8a所示地那样进行。因此,针对特定请求来执行步骤S10_2时所选定的相应处理模块11,11’至11”,12_1至12_k,12’_1至12’_k’,12”_1至12”_K”,211,212_1至212_m,311,312_1至312_k,321,322_1至322_r会通知至少一个控制处理模块11,11’至11”,211,311,321关于并行可执行部分的存在。通过接收该信息,至少一个控制处理模块11,11’至11”,211,311,321检测所述并行可执行部分的存在,为数据文件中的每一项选择对应的处理模块11,11’至11”,12_1至12_k,12’_1至12’_k’,12”_1至12”_K”,211,212_1至212_m,311,312_1至312_k,321,322_1至322_r,并命令相应的处理模块11,11’至11”,12_1至12_k,12’_1至12’_k’,12”_1至12”_K”,211,212_1至212_m,311,312_1至312_k,321,322_1至322_r来执行对所述数据文件的处理S11_2。
图12更为详细地示出了根据本实施例来执行对文件的处理S11_2。在步骤S12_l中,完成对访问权的验证。由于可以检查多个访问权,因此对步骤S12_l进行编码的可执行程序部分是包括了条件性分支的并行可执行部分。这种并行可执行部分的运行优选如图5c和8c或者如图5d和8d所示地那样进行。为执行步骤S11_2所选择的相应处理模块11,11’至11”,12_1至12_k,12’_1至12’_k’,12”_1至12”_K”,211,212_1至212_m,311,312_1至312_k,321,322_1至322_r会通知至少一个控制处理模块11,11’至11”,211,311,321关于该并行可执行部分的存在。通过接收该信息,至少一个控制处理模块11,11’至11”,211,311,321检测出所述并行可执行部分的存在,并且选择相应的处理模块11,11’至11”,12_1至12_k,12’_1至12’_k’,12”_1至12”_K”,211,212_1至212_m,311,312_1至312_k,321,322_1至322_r来执行对访问权的验证。并行可执行步骤中的每一项均可包括整体的条件性分支(参见图5c和图8c的情况)或者可包括条件规定或条件分支主体(参见图5d和8d的情况)。条件规定可表示检查特定的访问权,以及条件分支主体可以指定当相应的条件为真时所要执行的步骤。至少一个控制处理模块11,11’至11”,211,311,321命令所选定的处理模块11,11’至11”,12_1至12_k,12’_1至12’_k’,12”_1至12”_K”,211,212_1至212_m,311,312_1至312_k,321,322_1至322_r来执行对其所分配的一个或多个并行可执行步骤。当从每个所选定的处理模块11,11’至11”,12_1至12_k,12’_1至12’_k’,12”_1至12”_K”,211,212_1至212_m,311,312_1至312_k,321,322_1至322_r接收到结果之后,至少一个控制处理模块11,11’至11”,211,311,321将该结果提供给为执行步骤S11_2所选择的处理模块11,11’至11”,12_1至12_k,12’_1至12’_k’,12”_1至12”_K”,211,212_1至212_m,311,312_1至312_k,321,322_1至322_r。
相应的选定处理模块11,11’至11”,12_1至12_k,12’_1至12’_k’,12”_1至12”_K”,211,212_1至212_m,311,312_1至312_k,321,322_1至322_r验证是否允许对数据文件进行访问。如果否,则开始运行错误处置步骤S12_2。如果允许访问数据文件,则在步骤S12_3中检查文件的存在性。这里,针对数据文件的(例如,在数据库93,94_2中的)每一个可能位置进行检查。因此,对步骤S12_3进行编码的那部分可执行代码是包括了条件性分支的并行可执行部分。这种并行可执行部分的运行优选如图5c和8c或者如图5d和8d所示地那样进行。为执行步骤S11_2所选择的相应处理模块11,11’至11”,12_1至12_k,12’_1至12’_k’,12”_1至12”_K”,211,212_1至212_m,311,312_1至312_k,321,322_1至322_r会通知至少一个控制处理模块11,11’至11”,211,311,321关于该并行可执行部分的存在。通过接收该信息,至少一个控制处理模块11,11’至11”,211,311,321检测出所述并行可执行部分的存在,并且选择相应的处理模块11,11’至11”,12_1至12_k,12’_1至12’_k’,12”_1至12”_K”,211,212_1至212_m,311,312_1至312_k,321,322_1至322_r。并行可执行步骤中的每一项均可包括整体的条件性分支(参见图5c和图8c的情况)或者可包括条件规定或条件分支主体(参见图5d和8d的情况)。条件规定可表示检查特定的位置,以及条件分支主体可以指定当相应的条件为真时所要执行的步骤。至少一个控制处理模块11,11’至11”,211,311,321命令所选定的处理模块11,11’至11”,12_1至12_k,12’_1至12’_k’,12”_1至12”_K”,211,212_1至212_m,311,312_1至312_k,321,322_1至322_r来执行对其所分配的一个或多个并行可执行步骤。当从每个所选定的处理模块11,11’至11”,12_1至12_k,12’_1至12’_k’,12”_1至12”_K”,211,212_1至212_m,311,312_1至312_k,321,322_1至322_r接收到结果之后,该至少一个控制处理模块11,11’至11”,211,311,321将该结果提供给为执行步骤S11_2所选择的处理模块11,11’至11”,12_1至12_k,12’_1至12’_k’,12”_1至12”_K”,211,212_1至212_m,311,312_1至312_k,321,322_1至322_r。
如果在步骤S12_3中确定不出数据文件的任何位置,则在步骤S12_2中开始相应的错误处置。否则,进行用于确定数据文件的文件类型(例如多用途互联网邮件扩展(MIME)的步骤12_4。由于几种文件类型均是可能的,因此为步骤S12_2的运行而进行编码的那部分可执行代码是包含了条件性分支的、且每个文件类型具有一个分支的并行可执行部分。这种并行可执行部分的运行优选如图5c和8c或者如图5d和8d所示地那样进行。为执行步骤S11_2所选择的相应处理模块11,11’至11”,12_1至12_k,12’_1至12’_k’,12”_1至12”_K”,211,212_1至212_m,311,312_1至312_k,321,322_1至322_r会通知至少一个控制处理模块11,11’至11”,211,311,321关于该并行可执行部分的存在。通过接收该信息,至少一个控制处理模块11,11’至11”,211,311,321检测出所述并行可执行部分的存在,并且选择相应的处理模块11,11’至11”,12_1至12_k,12’_1至12’_k’,12”_1至12”_K”,211,212_1至212_m,311,312_1至312_k,321,322_1至322_r。并行可执行步骤中的每一项均可包括整体的条件性分支(参见图5c和图8c的情况)或者可包括条件规定或条件分支主体(参见图5d和8d的情况)。条件规定可表示检查特定的文件类型,以及条件分支主体可以指定当相应的条件为真时所要执行的步骤。至少一个控制处理模块11,11’至11”,211,311,321命令所选定的处理模块11,11’至11”,12_1至12_k,12’_1至12’_k’,12”_1至12”_K”,211,212_1至212_m,311,312_1至312_k,321,322_1至322_r来执行对其所分配的一个或多个并行可执行步骤。当从每个所选定的处理模块11,11’至11”,12_1至12_k,12’_1至12’_k’,12”_1至12”_K”,211,212_1至212_m,311,312_1至312_k,321,322_1至322_r接收到结果之后,该至少一个控制处理模块11,11’至11”,211,311,321将该结果提供给为执行步骤S11_2所选择的处理模块11,11’至11”,12_1至12_k,12’_1至12’_k’,12”_1至12”_K”,211,212_1至212_m,311,312_1至312_k,321,322_1至322_r。
然后,该进一步的处理取决于数据文件的类型。如果针对所述类型数据文件的可视化而不需要(例如通过使用解译器)对相应数据的做任何进一步处理的话,则该数据文件可以提供给客户机92。在这种情况下,执行步骤S12_5,其中将该文件划分为多个部分以用于文件传送。为此,对该文件进行局部读取,其中将大小相等的部分读取并处理成用于传送至客户机92的数据包,并且其中被读取并处理成数据包的最后部分小于或等于其他/先前部分。由于读取以及通过相应的数据部分来后续产生各数据包优选为并行进行,因此对步骤S12_5进行编码的那部分可执行代码是并行可执行部分。对步骤S12_5进行编码的并行可执行部分包括程序循环,其中在数据文件的特定部分,提取相应的数据用以产生相应的数据包。循环执行为直到数据文件结束为止。因此,这种并行可执行部分的运行优选如图5a和8a所示地那样进行。数据文件的每个部分的操作对应于一个并行可执行步骤。为执行步骤S11_2所选择的相应处理模块11,11’至11”,12_1至12_k,12’_1至12’_k’,12”_1至12”_K”,211,212_1至212_m,311,312_1至312_k,321,322_1至322_r会通知至少一个控制处理模块11,11’至11”,211,311,321关于该并行可执行部分的存在。通过接收该信息,至少一个控制处理模块11,11’至11”,211,311,321检测出所述并行可执行部分的存在,并且为数据文件的每一个部分选择一相应的处理模块11,11’至11”,12_1至12_k,12’_1至12’_k’,12”_1至12”_K”,211,212_1至212_m,311,312_1至312_k,321,322_1至322_r,并命令该相应的处理模块11,11’至11”,12_1至12_k,12’_1至12’_k’,12”_1至12”_K”,211,212_1至212_m,311,312_1至312_k,321,322_1至322_r来产生相应的数据包。当从每个所选定的处理模块11,11’至11”,12_1至12_k,12’_1至12’_k’,12”_1至12”_K”,211,212_1至212_m,311,312_1至312_k,321,322_1至322_r接收到数据包之后,该至少一个控制处理模块11,11’至11”,211,311,321将这些数据包提供给为执行步骤S11_2所选择的处理模块11,11’至11”,12_1至12_k,12’_1至12’_k’,12”_1至12”_K”,211,212_1至212_m,311,312_1至312_k,321,322_1至322_r。
在步骤12_6中,将所产生的数据包提供给客户机92。由于可获得多个数据包,因此对步骤S12_6进行编码的那部分可执行代码代表包括了程序循环的并行可执行部分,其中针对每个数据包来执行传送。因此,对步骤S12_6进行编码的那部分可执行代码优选由图5a和图8a所示地那样运行。为执行步骤S11_2所选择的相应处理模块11,11’至11”,12_1至12_k,12’_1至12’_k’,12”_1至12”_K”,211,212_1至212_m,311,312_1至312_k,321,322_1至322_r会通知至少一个控制处理模块11,11’至11”,211,311,321关于该并行可执行部分的存在。通过接收该信息,至少一个控制处理模块11,11’至11”,211,311,321检测出所述并行可执行部分的存在,并且为每一个数据包选择一相应的处理模块11,11’至11”,12_1至12_k,12’_1至12’_k’,12”_1至12”_K”,211,212_1至212_m,311,312_1至312_k,321,322_1至322_r,并命令该相应的处理模块11,11’至11”,12_1至12_k,12’_1至12’_k’,12”_1至12”_K”,211,212_1至212_m,311,312_1至312_k,321,322_1至322_r来将相应的数据包传送至客户机92。当传送了所有的数据包之后,该至少一个控制处理模块11,11’至11”,211,311,321指示为执行步骤S11_2所选择的处理模块11,11’至11”,12_1至12_k,12’_1至12’_k’,12”_1至12”_K”,211,212_1至212_m,311,312_1至312_k,321,322_1至322_r结束传送。
在步骤S12_6结束之后,由于所请求的数据已提供至客户机92,因此完成了步骤S11_2的执行。
在执行步骤S12_4之后,如果确定出为了相应类型的数据文件的可视化而需要(例如通过使用解译器)做进一步处理的话,那么为执行步骤S11_2所选择的相应处理模块11,11’至11”,12_1至12_k,12’_1至12’_k’,12”_1至12”_K”,211,212_1至212_m,311,312_1至312_k,321,322_1至322_r会在步骤S12_7中例如通过运行相应的解译器来执行对数据文件的进一步处理,从而可以对处理后所得到的数据文件可视化,并将其提供给客户机。
如果例如由于处理过程中的错误而造成数据文件的处理不成功,则在步骤S12_2中执行相应的错误处置过程。否则,就如已针对步骤S12_5所阐述地那样,在步骤S12_8中执行对所获得的数据文件的划分以用于产生数据包。
然后,当已经产生了用于传送所获取的数据文件的数据包时,则在步骤S12_9中以与已针对步骤S12_6所阐述地相同方式来执行对数据包的传送。
在步骤S12_9结束之后,由于所请求的数据已提供至客户机92,因此完成了步骤S11_2的执行。
附加地,在成功执行步骤S12_7之后,即成功执行对数据文件的进一步处理之后,有可能发生的是不存在待提供至客户机的数据。例如,对数据的处理不产生返回数据而仅是执行一些功能。在这种情况下,随着成功运行不提供任何返回数据的步骤S12_7来结束步骤S11_2的执行。
此外,可以许多种方式来执行步骤S12_2中的错误处置。例如,错误处置可以产生由服务器91,94向客户机91传送的错误消息。本领域技术人员知晓错误处置,并知道几种可优选地实施在步骤S12_2中的适当程序。在任何情况下,在结束步骤S12_2中的错误处置之后,将完成步骤S11_2的执行。
图13示出了根据本发明实施例的一组处理模块13_11,13_21至13_2m的实现。该组处理模块13_11,13_21至13_2m位于处理元件13_1上,根据本实施例,所述处理元件是通常为本领域技术人员已知的单元芯片或单元处理器13_1。处理模块13_11表示功率处理器元件(PPE),并且处理元件13_21至13_2m表示协同处理单元(SPE),其中PPE和SPE是本领域技术人员所公知的。
图14a示出了根据本发明实施例的包括了一个处理元件的系统14_1的实现。根据本实施例,处理元件21是单元芯片或单元处理器,并且可如图13所示地那样设置。系统14_1可包括上面设置有处理元件21的板件。
图14b示出了根据本发明实施例的包括了两个处理元件31,32的系统14_2的实现。根据本实施例,两个处理元件31,32中的至少一个是单元芯片或单元处理器,并且可如图13所示地那样设置。系统14_2可包括上面设置有处理元件31,32的至少一个板件。
图15示出了根据本发明实施例的包括了一个处理元件15_11的系统15_1的实现。处理元件15_11优选地如图2或图14a所示地那样设置。位于处理元件15_11上的那组处理模块(图15中未示出)如本申请中所阐述地那样进行配置。根据本实施例,系统15_1优选为印刷电路板(PCB)。此外,系统15_1包括至少一个存储模块15_12,15_13,其连接到处理元件15_11上并因此为处理元件15_11提供存储容量。特别地,至少一个存储模块15_12,15_13为位于处理元件15_11上的那组处理模块提供存储容量。至少一个存储模块15_12,15_13可例如是随机访问存储器(RAM)。此外,系统15_1包括功率供应模块15_14提供电力到所述至少一个存储模块15_12,15_13。此外,该系统15_1包括为处理元件15_11提供功率的功率供应模块15_15。系统15_1包括通讯模块15_19,所述通讯模块从系统15_1外部(例如,网络)接收数据,并将所接收的数据提供至处理元件15_11并由此提供至它的处理模块,和/或从处理元件15_11并由此从它的处理模块接收数据,并将所接收的数据提供至系统15_1的外部,例如网络。通讯模块15_19例如优选为网络芯片模块、外围组件互连快速开关或上行链路模块。此外,系统15_1包括固件模块15_17,其包括用于操作该系统15_1的软件。固件模块15_17可例如是闪存、现场可编程门阵列或统一可扩展固件接口。系统15_1还可包括向固件模块15_17提供功率的功率供应模块15_18。附加地,系统15_1包括将固件模块15_17、通讯模块15_19和处理元件15_11相连的连接模块15_16。该连接模块15_16可例如是配置为管理输入/输出(I/O)功能的互连芯片。此外,系统15_1包括通用接口模块15_10,其中经由该通用接口模块来为系统15_1提供功率、网络、管理和/或硬件或硬盘驱动器的连接。通用接口模块15_10可例如是外围组件互连(PCI)或外围组件快速互连(PCIExpress)。电源接口15_10将功率供应至功率供应模块15_14,15_18和15_15。附加地,电源接口15_10为通讯模块15_19供应功率。
根据本实施例,系统15_1的模块/组件设置并连接于彼此,使得尽可能少地需要连接线和/或连接器。因此,如可从图15推导出的那样,彼此相连/彼此交互的模块/组件彼此靠近地布置。通过这种方式,可以减少能量消耗、由模块/元件/组件产生的信号噪声、模块/元件/组件所需的空间、模块/元件/组件的屏蔽性和/或用于模块/元件/组件的冷却力度。
图16示出了根据本发明实施例的包括了两个处理元件15_11,16_11的系统16_1的实现。系统16_1基于图15的系统15_1布置,并且可以通过具有相同附图标号的组件来进行识别。两个处理元件15_11,16_11可以如针对图3或图14b所阐述地那样来设置。位于处理元件15_11,16_11上的那组处理模块(图15中未示出)如本发明所阐述地那样配置。除了图15的布置以外,本实施例的系统16_1包括至少一个其他的存储模块16_12,16_13,该存储模块连接到处理元件16_11上并由此为处理元件16_11提供存储容量。特别地,该至少一个其他的存储模块16_12,16_13为位于处理元件16_11上的那一组处理模块或这些处理模块中的至少一者提供存储容量。该至少一个其他的存储模块16_12,16_13可例如是随机访问存储器(RAM)。由于至少一个其他的存储模块16_12,16_13的存在,使得功率供应模块15_14附加地配置为还为至少一个其他的存储模块16_12,16_13提供功率。两个处理元件15_11,16_11彼此连接以进行数据交换。附加地,处理元件15_11,16_11彼此连接,以便经由处理元件15_11从功率供应模块15_15向处理元件16_11提供功率。
此外,根据本实施例,系统16_1的模块/组件布置并连接于彼此,使得尽可能少地需要连接线和/或连接器。因此,如可从图16推导出的那样,彼此相连/彼此交互的模块/组件彼此靠近地布置。通过这种方式,可以减少系统16_1中的能量消耗。
图17示出了根据本发明实施例的一组处理模块17_11至17_1m和17_21至17_2n的实现。根据本实施例,处理模块17_11至17_1m对应与控制处理模块。而且,提供了仅供控制处理模块访问的存储区17_4,并且提供了仅供其他的处理模块17_21至17_2n访问的存储区17_5。此外,还设有可供所有的处理模块17_11至17_1m和17_21至17_2n访问的存储区17_3。存储区17_4,17_5中的每一项的存在均为可选的。存储区17_4,17_5中的每一项可包括仅供至少一个特定处理模块17_11至17_1m和17_21至17_2n访问的部分。然而,应当确保处理模块17_11至17_1m和17_21至17_2n中的每一者均有权访问相应的存储区17_4,17_5。在通用存储区17_3中,情况是一样的,其中应当确保通用存储区17_3的每个部分均可供至少一个控制处理模块17_11至17_1m访问并且可供至少一个其他的处理模块17_21至17_2n访问。
当考虑图15和图16的实施例时,存储区17_3,17_4,17_5可以在存储模块15_12,15_13,16_12,16_13中实现,从而使得它们也可由其他组件来访问。根据本发明的另一实施例,仅供控制处理模块17_11,17_m访问的存储区17_4可以在存储模块15_12,15_13,16_12,16_13中实现,而其他的存储区17_3,17_5可以是上面设有处理模块17_11至17_1m和17_21至17_2n的相应(多个)处理元件的各部分。根据本发明的另一实施例,存储区17_3和17_5中的至少一者可以至少部分地定位在上面设有处理模块17_11至17_1m和17_21至17_2n的、对应的一个或多个处理元件上。
根据本发明的又一实施例,优选通过考虑访问通用存储区17_3的调度安排,来进行对处理模块17_11至17_1m17_21至17_2n的选择。接下来将访问通用存储区17_3的、连接到执行该选择的相应的命令处理模块17_11至17_1m上的处理模块17_11至17_1m和17_21至17_2n可通过相应的命令处理模块17_11至17_1m来,以用于执行并行可执行任务。当选择一定数目的处理模块17_11至17_1m和17_21至17_2n时,该选择优选地由相应的命令处理模块17_11至17_1m通过取出该一定数目的、接下来将访问通用存储区17_3的处理模块17_11至17_1m和17_21至17_2n来进行。因为控制处理模块17_11至17_1m与所选定的处理模块17_11至17_1m和17_21至17_2n之间的数据交换经由通用存储区17_3来实现,因此这种选择节省了由处理模块17_11至17_1m和17_21至17_2n来执行代码所需的运行时间。应当确保,在用于访问通用存储器17_3的调度安排中在最后几个位置中具有一席的处理模块17_11至17_1m和17_21至17_2n不必等待很长时间才能够开始执行对应的一个或多个并行可执行步骤。
针对上述实施例,必须注意的是,所述实施例可以彼此结合。因此,例如,可以在任何其他示例中使用如针对图17所阐述那样的处理模块的选择。一个实施例中的处理模块的配置可以与各个其他实施例的配置相组合和交换。此外,必须注意的是,如图15和图16所示的、不代表处理模块或处理元件的模块可看作是任选的,并且还可以具有在处理模块或处理元件周围的其他布置,其中希望保持相应系统的模块/元件/组件之间的连接线尽可能地短,从而实现系统能耗的降低。
Claims (20)
1.一种通过一组处理模块来运行可执行代码的方法,其中,所述方法包括通过所述一组处理模块中的至少一个第一处理模块来运行所述可执行代码,其中所述可执行代码包括一组并行可执行部分,其中所述可执行代码的每个并行可执行部分均包括至少两个并行可执行步骤,并且其中所述运行包括:
由所述至少一个第一处理模块来检测待运行的所述可执行代码的所述一组并行可执行部分中的一并行可执行部分;
由所述至少一个第一处理模块来选择所述一组处理模块中的至少两个第二处理模块;以及,
由所述至少一个第一处理模块来命令所选定的至少两个第二处理模块来执行所述可执行代码的经检测的并行可执行部分的所述至少两个并行可执行步骤。
2.根据权利要求1所述的方法,其中,所述命令包括:通过所述至少一个第一处理模块,将所述可执行代码的经检测并行可执行部分的所述至少两个并行可执行步骤中的每一者分配给所述所选定的至少两个第二处理模块中的一者。
3.根据权利要求1或2所述的方法,其中,命令所述所选定的至少两个第二处理模块来执行所述可执行代码的经检测并行可执行部分的所述至少两个并行可执行步骤中的至少一个。
4.根据前述权利要求中任一项所述的方法,其中,所述所选定的至少两个第二处理模块包括所述至少一个第一处理模块。
5.根据前述权利要求中任一项所述的方法,其中,如果所述可执行代码的第一部分包括在所述可执行代码的第二部分中的话,那么执行所述可执行代码的第一并行可执行部分和第二并行可执行部分。
6.根据前述权利要求中任一项所述的方法,其中,所述可执行代码的所述一组并行可执行部分中的每个并行可执行部分均包括属于一种特定并行化类型的步骤。
7.根据权利要求6所述的方法,其中,两种并行化类型互不相同。
8.根据权利要求6或7所述的方法,其中,第一并行化类型包括程序循环,并且其中第二并行化类型包括条件性分支。
9.根据权利要求8所述的方法,其中:
如果所述可执行代码的所述一组并行可执行部分中的经检测并行可执行部分包括作为所述至少两个并行可执行步骤的程序循环的步骤的话,那么所述至少一个第一处理模块将所述程序循环的一定数目的周期分配给所述所选定的至少两个第二处理模块中的每一者,其中将所述程序循环的每个周期分配给所述所选定的至少两个第二处理模块中的一者;
如果所述可执行代码的经检测并行可执行部分包括作为所述至少两个并行可执行步骤的一组程序循环的话,那么所述至少一个第一处理模块将该组程序循环中的每个程序循环分配给所述所选定的至少两个第二处理模块中的一者;
如果所述可执行代码中的经检测并行可执行部分包括作为所述至少两个并行可执行步骤的至少两个条件性分支的话,那么所述至少一个第一处理模块将每个条件性分支分配给所述所选定的至少两个第二处理模块中的一者;和/或
如果所述可执行代码中的经检测并行可执行部分包括作为所述至少两个并行可执行步骤的至少两个条件性分支的话,那么所述至少一个第一处理模块将所述至少两个条件性分支中的每个条件分配给所述所选定的至少两个第二处理模块中的一者,并且将针对该至少两个条件性分支中的一个条件来编码的至少两个条件性分支的每个代码部分分配给所述所选定的至少两个第二处理模块中的一者。
10.一组处理模块,包括至少一个第一处理模块,所述至少一个第一处理模块配置成:
运行可执行代码,其中所述可执行代码包括一组并行可执行部分,其中所述可执行代码的所述一组并行可执行部分中的每个并行可执行部分均包括至少两个并行可执行步骤;
将所述可执行代码的所述一组并行可执行部分中的一并行可执行部分检测作为待运行的所述可执行代码的一部分;
选择所述一组处理模块中的至少两个第二处理模块;和
命令所选定的至少两个第二处理模块来执行所述可执行代码中经检测的并行可执行部分的所述至少两个并行可执行步骤。
11.根据权利要求10所述的一组处理模块,其中,所述至少一个第一处理模块配置为:通过将所述可执行代码中经检测的并行可执行部分的所述至少两个并行可执行步骤的每一者分配给所述所选定的至少两个第二处理模块中的一者,来执行所述命令。
12.根据权利要求10或11所述的一组处理模块,其中,至少一个第一处理模块配置成:命令所述所选定的至少两个第二处理模块中的每一者来执行所述可执行代码中经检测的并行可执行部分的所述至少两个并行可执行步骤中的至少一者。
13.根据前述权利要求10至12中任一项所述的一组处理模块,其中,所述所选定的至少两个第二处理模块包括所述至少一个第一处理模块。
14.根据前述权利要求10至13中任一项所述的一组处理模块,其中,所述至少一个第一处理模块配置成:如果所述可执行代码的第一部分包括在所述可执行代码的第二部分中的话,那么执行所述可执行代码的第一并行可执行部分和第二并行可执行部分。
15.根据前述权利要求10至14中任一项所述的一组处理模块,其中,所述可执行代码的所述一组并行可执行部分中的每个并行可执行部分均包括属于一种特定并行化类型的步骤。
16.一种包括了根据前述权利要求10至15中任一项所述的一组处理模块的系统。
17.根据权利要求16所述的系统,其中,所述系统包括以下至少一项:
包括了所述一组处理模块的一个处理元件,或者包括了该组处理模块的至少两个处理元件;
至少一个存储模块,其连接到所述一个处理元件上或连接到所述至少两个处理元件中的一者上,并且其配置为向所述一个处理元件或所述至少两个处理元件中的一者提供存储容量;
第一功率供应模块,其配置为向所述至少一个存储模块提供功率;
第二功率供应模块,其配置为向所述一组处理模块提供功率;
通讯模块,其配置为:从网络接收数据,并将所接收的数据提供至所述一组处理模块,和/或从该组处理模块接收数据,并将所接收的数据传送到所述网络;
固件,其包括用于该设备的软件;
第三功率供应模块,其配置为向所述固件提供功率;和/或
连接模块,其配置为连接所述固件、网络芯片模块和所述一个处理元件,或者连接所述固件、网络芯片模块和所述至少两个处理元件;和/或
电源接口模块,其配置为向所述第一功率供应模块、第二功率供应模块和第三功率供应模块提供功率,并向通讯模块提供功率。
18.根据权利要求17所述的系统,其中:
所述一个处理元件包括单元处理器,或者所述至少两个处理元件包括至少一个单元处理器;
所述至少一个存储模块包括至少一个随机访问存储器;
所述电源接口模块是外围组件互连部或外围组件快速互连部;
所述通讯模块是网络芯片模块、外围组件互连快速开关或上行链路模块;
所述固件是闪存、现场可编程门阵列或统一可扩展固件接口;和/或
所述连接模块是配置为管理输入/输出功能的互连芯片。
19.一种服务器系统,包括根据权利要求10至15中任一项所述的处理模块。
20.一种包括了程序代码的计算机可读介质,其中当通过计算设备运行所述程序代码时所述程序代码使计算设备执行根据权利要求1至9中任一项所述的方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP13000810.5 | 2013-02-18 | ||
EP13000810.5A EP2767904B1 (en) | 2013-02-18 | 2013-02-18 | Method, processing modules and system for executing an executable code |
PCT/EP2014/053040 WO2014125109A1 (en) | 2013-02-18 | 2014-02-17 | Method, processing modules and system for executing an executable code |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105144107A true CN105144107A (zh) | 2015-12-09 |
Family
ID=47754278
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480009364.4A Pending CN105144107A (zh) | 2013-02-18 | 2014-02-17 | 用于运行可执行代码的方法、处理模块及系统 |
Country Status (14)
Country | Link |
---|---|
US (1) | US9772882B2 (zh) |
EP (1) | EP2767904B1 (zh) |
JP (1) | JP2016510146A (zh) |
KR (1) | KR20150121108A (zh) |
CN (1) | CN105144107A (zh) |
AU (1) | AU2014217773A1 (zh) |
BR (1) | BR112015019447A2 (zh) |
CA (1) | CA2900989A1 (zh) |
HK (1) | HK1200940A1 (zh) |
IL (1) | IL240476A0 (zh) |
RU (1) | RU2015132473A (zh) |
SG (1) | SG11201506210TA (zh) |
WO (1) | WO2014125109A1 (zh) |
ZA (1) | ZA201505598B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109032059A (zh) * | 2018-07-25 | 2018-12-18 | 山东大学 | 一种控制器逻辑柔性的编码、通信方法及装置 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10230398B2 (en) * | 2016-08-19 | 2019-03-12 | Samsung Electronics Co., Ltd. | Erasure code data protection and recovery computation system and method |
CN110032407B (zh) | 2019-03-08 | 2020-12-22 | 创新先进技术有限公司 | 提升cpu并行性能的方法及装置和电子设备 |
KR102501187B1 (ko) * | 2020-04-03 | 2023-02-17 | 서울대학교산학협력단 | 배리어 구현 방법 및 시스템 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070130568A1 (en) * | 2005-12-06 | 2007-06-07 | Jung Chang H | Adaptive execution method for multithreaded processor-based parallel system |
CN101246433A (zh) * | 2006-12-22 | 2008-08-20 | 松下电器产业株式会社 | 产生优化程序的装置和方法、程序执行装置及记录介质 |
TW201140446A (en) * | 2009-12-30 | 2011-11-16 | Ibm | Runtime extraction of data parallelism |
US8196127B2 (en) * | 2006-08-04 | 2012-06-05 | International Business Machines Corporation | Pervasively data parallel information handling system and methodology for generating data parallel select operations |
US20120246654A1 (en) * | 2011-03-24 | 2012-09-27 | International Business Machines Corporation | Constant Time Worker Thread Allocation Via Configuration Caching |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH02144657A (ja) * | 1988-11-26 | 1990-06-04 | Hitachi Ltd | 並列演算処理装置 |
JPH064498A (ja) * | 1992-06-22 | 1994-01-14 | Seiko Epson Corp | マルチプロセッサ処理装置 |
JP3805972B2 (ja) | 2000-11-10 | 2006-08-09 | 東芝テック株式会社 | プリンタ |
US6779049B2 (en) | 2000-12-14 | 2004-08-17 | International Business Machines Corporation | Symmetric multi-processing system with attached processing units being able to access a shared memory without being structurally configured with an address translation mechanism |
US6809734B2 (en) | 2001-03-22 | 2004-10-26 | Sony Computer Entertainment Inc. | Resource dedication system and method for a computer architecture for broadband networks |
JP4155946B2 (ja) | 2004-06-16 | 2008-09-24 | 三洋電機株式会社 | ホログラムメモリ装置および記録媒体 |
US7765450B2 (en) * | 2005-10-20 | 2010-07-27 | Jon Udell | Methods for distribution of test generation programs |
JP4830108B2 (ja) | 2006-01-17 | 2011-12-07 | 国立大学法人東京工業大学 | プログラム処理装置、プログラム処理方法、並列処理プログラム用コンパイラおよび並列処理プログラム用コンパイラを格納した記録媒体 |
GB0601566D0 (en) | 2006-01-26 | 2006-03-08 | Codeplay Software Ltd | A parallelization system and compiler for use in such a system |
US7516365B2 (en) * | 2007-07-27 | 2009-04-07 | Sun Microsystems, Inc. | System and method for split hardware transactions |
JP5544971B2 (ja) | 2010-03-26 | 2014-07-09 | 富士通株式会社 | マルチコアプロセッサ |
JP5501288B2 (ja) | 2011-05-17 | 2014-05-21 | 日本電信電話株式会社 | 投機的実行装置及び方法及びプログラム |
-
2013
- 2013-02-18 EP EP13000810.5A patent/EP2767904B1/en not_active Not-in-force
- 2013-03-14 US US13/827,380 patent/US9772882B2/en not_active Expired - Fee Related
-
2014
- 2014-02-17 RU RU2015132473A patent/RU2015132473A/ru not_active Application Discontinuation
- 2014-02-17 JP JP2015557457A patent/JP2016510146A/ja not_active Ceased
- 2014-02-17 AU AU2014217773A patent/AU2014217773A1/en not_active Abandoned
- 2014-02-17 WO PCT/EP2014/053040 patent/WO2014125109A1/en active Application Filing
- 2014-02-17 CN CN201480009364.4A patent/CN105144107A/zh active Pending
- 2014-02-17 KR KR1020157025722A patent/KR20150121108A/ko not_active Application Discontinuation
- 2014-02-17 CA CA2900989A patent/CA2900989A1/en not_active Abandoned
- 2014-02-17 SG SG11201506210TA patent/SG11201506210TA/en unknown
- 2014-02-17 BR BR112015019447A patent/BR112015019447A2/pt not_active IP Right Cessation
-
2015
- 2015-02-09 HK HK15101430.9A patent/HK1200940A1/zh unknown
- 2015-08-04 ZA ZA2015/05598A patent/ZA201505598B/en unknown
- 2015-08-10 IL IL240476A patent/IL240476A0/en unknown
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070130568A1 (en) * | 2005-12-06 | 2007-06-07 | Jung Chang H | Adaptive execution method for multithreaded processor-based parallel system |
US8196127B2 (en) * | 2006-08-04 | 2012-06-05 | International Business Machines Corporation | Pervasively data parallel information handling system and methodology for generating data parallel select operations |
CN101246433A (zh) * | 2006-12-22 | 2008-08-20 | 松下电器产业株式会社 | 产生优化程序的装置和方法、程序执行装置及记录介质 |
TW201140446A (en) * | 2009-12-30 | 2011-11-16 | Ibm | Runtime extraction of data parallelism |
US20120246654A1 (en) * | 2011-03-24 | 2012-09-27 | International Business Machines Corporation | Constant Time Worker Thread Allocation Via Configuration Caching |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109032059A (zh) * | 2018-07-25 | 2018-12-18 | 山东大学 | 一种控制器逻辑柔性的编码、通信方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
EP2767904B1 (en) | 2018-07-04 |
IL240476A0 (en) | 2015-09-24 |
HK1200940A1 (zh) | 2015-08-14 |
SG11201506210TA (en) | 2015-09-29 |
US9772882B2 (en) | 2017-09-26 |
EP2767904A1 (en) | 2014-08-20 |
RU2015132473A (ru) | 2017-03-23 |
KR20150121108A (ko) | 2015-10-28 |
WO2014125109A1 (en) | 2014-08-21 |
JP2016510146A (ja) | 2016-04-04 |
CA2900989A1 (en) | 2014-08-21 |
ZA201505598B (en) | 2017-03-26 |
AU2014217773A1 (en) | 2015-08-20 |
US20140237480A1 (en) | 2014-08-21 |
BR112015019447A2 (pt) | 2017-07-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109284197B (zh) | 基于智能合约的分布式应用平台及实现方法 | |
CN102681854B (zh) | 业务执行方法、服务器和计算机系统 | |
US10977076B2 (en) | Method and apparatus for processing a heterogeneous cluster-oriented task | |
CN105393240A (zh) | 具有辅助异步向量处理器的异步处理器的方法和装置 | |
CN109284184A (zh) | 一种基于容器化技术的分布式机器学习平台的搭建方法 | |
CN104579792A (zh) | 多适配方式实现多种类型虚拟资源集中管理架构及方法 | |
CN109614227A (zh) | 任务资源调配方法、装置、电子设备及计算机可读介质 | |
CN105144107A (zh) | 用于运行可执行代码的方法、处理模块及系统 | |
Liu et al. | Reliability modelling and optimization for microservice‐based cloud application using multi‐agent system | |
CN103927244A (zh) | 一种基于动态代理实现的插件调度过程监控的方法 | |
CN114846490A (zh) | 量化机器人流程自动化相关资源的使用 | |
CN116325705A (zh) | 边缘计算环境中的管理任务流 | |
CN116402318B (zh) | 面向配电网的多级算力资源分配方法、装置及网络架构 | |
CN104360962A (zh) | 匹配于高性能计算机结构的多级嵌套数据传输方法与系统 | |
CN111079909B (zh) | 运算方法、系统及相关产品 | |
CN116442214A (zh) | 一种机器人的业务并行处理方法、装置、设备及介质 | |
Wu et al. | Optimizing network performance of computing pipelines in distributed environments | |
CN111079916B (zh) | 运算方法、系统及相关产品 | |
CN111078291B (zh) | 运算方法、系统及相关产品 | |
CN105138406A (zh) | 一种任务处理方法、装置及系统 | |
CN111078284B (zh) | 运算方法、系统及相关产品 | |
Hsiao et al. | Cloud Computing, Internet of Things (IoT), Edge Computing, and Big Data Infrastructure | |
CN109003031A (zh) | 一种生产调试产品的方法、设备以及存储介质 | |
CN117687930B (zh) | 用于模糊测试的方法及装置、测试设备、计算机存储介质 | |
CN111079911B (zh) | 运算方法、系统及相关产品 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20170331 Address after: Swiss hergiswil Applicant after: Hybrid server technology intellectual property Limited by Share Ltd Address before: Norderstedt Applicant before: HYBRIDSERVER TEC GMBH |
|
TA01 | Transfer of patent application right | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20151209 |
|
WD01 | Invention patent application deemed withdrawn after publication |