CN104321742B - 用于提供多核心编程平台的装置和方法 - Google Patents
用于提供多核心编程平台的装置和方法 Download PDFInfo
- Publication number
- CN104321742B CN104321742B CN201380024387.8A CN201380024387A CN104321742B CN 104321742 B CN104321742 B CN 104321742B CN 201380024387 A CN201380024387 A CN 201380024387A CN 104321742 B CN104321742 B CN 104321742B
- Authority
- CN
- China
- Prior art keywords
- memory
- computer
- definition
- memory mapping
- platform
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
-
- 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/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44536—Selecting among different versions
- G06F9/44542—Retargetable
-
- 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44557—Code layout in executable memory
-
- 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)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Devices For Executing Special Programs (AREA)
- Stored Programmes (AREA)
Abstract
一种用于生成目标计算机的存储器映射的计算机实现的方法,包括根据存储在主机计算机的存储器中的多个标识符规定与目标计算机的存储器布局关联的至少一个标识符。该方法还包括规定与所规定的至少一个标识符关联的值。该方法还包括利用所述至少一个标识符和关联的至少一个值生成存储器映射的存储器映射定义。该方法还包括在目标计算机上部署软件,该软件结合了存储器映射定义并且包括引用用关联的值替换的所述至少一个标识符的可执行指令。
Description
相关申请的交叉引用
本申请根据美国法典第35章119条第e项要求于2012年3月23日提交且标题为“Apparatus and Method for Providing a Multicore Programming Platform”的美国临时申请No.61/615,095的在先提交日的权益,该申请的全部内容通过引用被结合于此。
背景技术
存储器访问是计算机性能中的主要限制因素。虽然处理器已经变得更快,但是存储器访问时间没有以同样的速度而改善。用来改善计算机性能的增加数量的计算机元件,例如多核心处理器和硬件加速器,对于访问相同的处理器发生竞争,从而恶化了这个问题。为了缓解这种日益扩大的存储器访问差距,存储器体系架构不断发展并且变得日趋复杂,例如多级高速缓存、本地和全局存储器,以及片上网络、统一存储器体系架构(UMA)或非统一存储器体系架构(NUMA)。
存储器体系架构变得更加复杂并且不同的多核心平台一般具有不同的存储器布局。多核心应用从一个版本发展到下一个版本,是复杂而且昂贵的,并且必须以最少量的修改可移植到众多平台。从应用管理存储器布局导致不可移植的应用以及次优的存储器利用率。需要提供高度的应用可移植性和优化的新方法来利用存储器体系架构的进步。
当前用于规定存储器的方法主要是基于通过链接器命令控制的存储器分段、特定于平台的开发和配置工具并且常常引用从应用和其它软件中直接“硬编码”的存储器布局。这些方法常常是依赖于编译器工具链的,不提供应用可移植性并且特定于平台的优化是耗时而且昂贵的。
因此,目前的解决办法或者是特定于体系架构,因此不提供应用可移植性的,或者没有提供足够的方法用于处理多核心计算机存储器,或者二者兼有,从而导致复杂性和不可移植性。对于用于以可移植的方式处理复杂的多核心计算机存储器的新方法存在很大的需求。
发明内容
根据示例性实施例,用于生成目标计算机的存储器映射(memory map)的计算机实现的方法包括根据存储在主机计算机的存储器中的多个标识符规定与目标计算机的存储器布局关联的至少一个标识符。该方法还包括规定与所规定的至少一个标识符关联的值。该方法还包括利用所述至少一个标识符和关联的至少一个值生成存储器映射的存储器映射定义。该方法还包括在目标计算机上部署软件,所述软件结合了所述存储器映射定义并且包括引用用关联的值替换的所述至少一个标识符的可执行指令。
根据示例性实施例,主机计算机包括存储器和处理器。处理器被配置为根据存储在存储器中的多个标识符规定与目标计算机的存储器布局关联的至少一个标识符。处理器还被配置为规定与所规定的至少一个标识符关联的值。处理器还被配置为利用所述至少一个标识符和关联的至少一个值生成存储器映射的存储器映射定义。处理器还被配置为在目标计算机上部署软件,所述软件结合了所述存储器映射定义并且包括引用用关联的值替换的所述至少一个标识符的可执行指令。
根据示例性实施例,非暂时性计算机可读介质中存储有可执行指令,所述可执行指令在被主机计算机的处理器执行时,使处理器执行用于生成目标计算机的存储器映射的方法。该方法包括根据存储在主机计算机的存储器中的多个标识符规定与目标计算机的存储器布局关联的至少一个标识符。该方法还包括规定与所规定的至少一个标识符关联的值。该方法还包括利用所述至少一个标识符和关联的至少一个值生成存储器映射的存储器映射定义。该方法还包括在目标计算机上部署软件,所述软件结合了所述存储器映射定义并且包括引用用关联的值替换的所述至少一个标识符的可执行指令。
附图说明
本进步及其许多附属优点的更完整理解将很容易获得,因为,当结合附图考虑时,通过参考以下具体描述,这些变得更好理解。但是,附图及其示例叙述不是要以任何方式限制本说明书所包含的本进步的范围。说明书及附图所包含的本进步的范围是由权利要求的言辞定义的。
图1说明了可移植存储器映射部署处理的示例性实施例。
图2说明了多核心计算机系统的示例性实施例。
图3说明了用于创建和验证(validate)存储器映射的处理的示例性实施例。
图4a-4t说明了存储器映射编辑器工具的示例性实施例。
图5a说明了用于两个不同的多核心计算机平台的示例存储器布局。
图5b和5c说明了存储器映射定义的示例性实施例。
图5d说明了使用存储器映射定义的程序代码的示例性实施例。
图6a说明了用于创建拓扑图的处理的示例性实施例。
图6b—6e-2说明了拓扑图编辑器工具的示例性实施例。
图7说明了用于拓扑图资源池创建的处理的示例性实施例。
图8说明了利用链接器指令把存储器分成段的示例性实施例。
图9a说明了用于映射、配置和分配存储器的可移植存储器映射方法的示例性实施例。
图9b-9d说明了存储器映射定义的示例性实施例。
图10说明了来自生成的存储器映射定义的示例摘录。
图11a-11j说明了可移植存储器映射的示例性应用。
图12说明了示例性处理器图。
具体实施方式
本文所述的本进步针对可以出口(ported)到多个多核心平台的可移植存储器映射。
可移植存储器映射方法和装置,也称为存储器映射,提供了完全可移植的存储器映射定义以及大大简化的特定于多核心平台的存储器布局和存储器利用率,见图1。根据实施例,多核心计算机或平台中的多个核心可以在单个芯片上或者在多个芯片上。存储器映射定义是从用户定义的存储器映射生成的。在一些实施例中,存储器映射定义包括代表以描述符文件格式提供的存储器映射的符号(symbolically)定义的值。描述符文件格式是独立于体系架构工具和开发工具的。即,描述符文件格式是独立于编译器、汇编器和链接器的。在一些实施例中,存储器映射定义是从软件而符号引用的并且对存储器映射的改变导致存储器映射定义的重新生成,而无需应用或其它软件中的改变。作为例子,两个多核心系统可以具有相似的存储器映射,其中布局中的一些是完全相同的并且其它部分(诸如SRAM和DRAM的量)不同。具有多种类型功能的应用,其中一种功能可以在一个系统上被强调,并且另一种类型的功能在不同的系统上被强调。为了最优的存储器利用率,用于每个多核心系统的存储器映射可以鉴于这些区别而不同地定义。
可移植存储器映射提供了应用以及其它软件与多核心平台存储器布局之间的抽象,从而启用不同平台之间的应用可移植性以及平台存储器利用率的迭代优化。利用可移植存储器映射,为开发者提供了应用可移植性、减少的开发和调试(即上市时间)、以及多核心平台存储器的最优利用率。例如,电信设备提供商常常具有几个平台,既有内部开发的又有收购的。二者就存储器布局、处理器类型以及数量而言,底层的多核心硬件平台可以基本上不同。电信设备提供商对于通常模块化的应用(和系统)软件具有大量的投资。电信设备提供商需要能够在只有很少或没有改变的情况下跨众多平台以不同的组合来使用这些模块,同时仍然从每个平台中获得最大化的存储器利用率,即性能。因此,本文所公开的存储器映射和对应的存储器映射定义提供了电信设备提供商所需的应用可移植性。
可移植存储器映射
在一些实施例中,在可移植存储器映射中,存储器布局被结构化并分段成块或单个的位置,其中每个块和位置都被指定标识符和值,即符号定义。该符号定义可以利用标识符从多核心平台软件被引用。通过使用标识符,存储器映射可以出于优化的目的或者为了适应具有不同存储器布局的多核心平台而被修改,而不需要软件(即应用、中间件或系统软件)中的改变。符号定义不需要与特定于现有平台的存储器布局工具和编译器开发工具一起使用的任何修改。因此,符号定义提供了多核心平台应用可移植性。
作为例子,平台A可以具有比平台B更大量的高速存储器,这些高速存储器可以用于性能关键的计算。与用于平台B的存储器映射相比,用于平台A的存储器映射可以被设计或修改成分配更多的平台A上的高速存储器。因此,用于平台A和平台B的存储器映射将使用相同的标识符用于快速存储器。但是,每个存储器映射中该标识符的值将不同,以反映平台A和B中快速存储器的不同存储器尺寸。因此,可以开发引用用于快速存储器的标识符的单个应用。但是,当这个应用在平台A上部署时,用于快速存储器的标识符依赖于用于平台A的存储器映射,而当这个应用在平台B上部署时,用于快速存储器的标识符依赖于用于平台B的存储器映射。
在另一个例子中,平台C具有比平台D更大量的低功率存储器,这些低功率存储器可以用于降低功耗。因此,相对于用于平台D的存储器映射,用于平台C的存储器映射可以被设计或修改成分配更多的平台C上的低功率存储器。因此,当应用部署在平台C和D上并且引用用于低功率存储器的标识符时,该标识符的值依赖于用于平台C和D的相应的存储器映射。
根据一些实施例,为了提供多核心平台应用可移植性和存储器利用率,可移植存储器映射具有以下最小的需求:标识符、值和生成的存储器映射定义。在附加实施例中,可移植存储器映射包括包含特定于平台的值的多平台定义,以便自动化用于众多多核心平台的存储器映射定义的生成。作为例子,单个存储器映射定义可以包括用于第一平台和第二平台的定义。本领域普通技术人员会理解,存储器映射定义不限于两个平台并且可以包括用于任何数量的期望的平台的定义。
标识符和值代表符号定义。在一些实施例中,存储器映射定义包含用于在存储器映射中规定的一切的符号定义。存储器映射定义是独立于平台工具和编译器工具的。就此而言,描述符文件中的符号定义以相同的方式被不同的编译器解释并且因此不需要特定于平台的存储器布局工具。多核心计算机存储器布局在可移植存储器映射中定义,图3。通过用户输入,常量被定义并且存储器被分段,例如部分、范围和地址,以及存储器性质和属性的规范,例如类型、访问权限、寻址(物理的、虚拟的)延迟和带宽、功耗。在可移植存储器映射中使用的符号定义的例子在表1中示出。虽然表1说明了特定的例子,但是本领域普通技术人员将理解,本文所讨论的实施例不限于表1。
在一些实施例中,标识符是预定义的并且存储在标识符库中。例如,在存储器布局的上下文中,诸如部分、范围和地址之类的术语被本领域普通技术人员使用。因此,标识符库可以预加载这些预定义的标识符。在附加实施例中,应用开发者可以创建他们自己的标识符。
作为例子,预定义类别:常量、部分地址和范围。开发者可以在存储器映射中创建他/她自己的项目名字并且标识符是由预定义的类别和开发者提供的名字的组合构成的。开发者能够自由地选择他们自己的名字,即,对于SRAM没有预定义的标识符。当然可以提供包含SRAM、DRAM等的预定义的模板存储器映射用于平台。
以下是示例标识符:
MMAP_MC_PLATFORM_SECT_SRAM_GLOBAL_START,项MC_PLATFORM和SRAM是用户定义的。项Global是基于用户输入(即,选择了全局作用域)由系统定义的。其余的项是基于命名法生成的。
根据一些实施例,存储器映射定义是在对应的存储器映射被验证后生成的,例如无重叠。在一些实施例中,存储器映射定义以描述符文件格式被提供,由代表多核心平台存储器布局的符号定义的值构成。描述符文件的例子是C语言.h头文件、C++语言.hpp头文件。符号定义的值由名字和值(数字或文字的)构成,例如#define MAP_TI_C6678_SECT_MAR1_POOLS_DDR3_RANGE_MQP1_SIZ E 1024,其中MMAP_TI_C6678_SECT_MAR1_POOLS_DDR3_RANGE_MQP1_S IZE是名字,1024是值。
多核心软件,例如应用、中间件和系统,使用符号引用、而不是手动规定(硬编码)的值来查询,并如上所述最优地控制和使用存储器。根据一些实施例,在软件编译时,标识符被软件中的值替换。在其它实施例中,在编译之后,诸如在软件执行中使用时,标识符被软件中的值替换(即,动态替换)。以下是包括硬编码值的示例链接器命令文件摘录:
在以上的例子中,链接器命令文件或者其它配置文件将被手动编辑,以便例如把0x820000改成0x870000,以在不同的地址放置.L2RAMHeap1。这种改变可能需要对其中部署了以上链接器文件的每个平台手动做出。
如以上所说明的,手动规定的值,不管是在头文件中规定的还是直接在程序中规定的,将必须针对每个改变被修改和核实(verify),有可能在许多地方(源文件),这是耗时并且容易出错的。与本文所公开的实施例形成对照,对存储器映射值(例如存储器范围地址和尺寸)的改变导致对应的经验证的存储器映射定义的重新生成,其中符号名字不变并且符号值被更新。因此,引用符号名字的任何应用中间件或系统软件都不必改变。由可移植存储器映射提供的抽象使得应用开发者在多核心平台上迭代地优化存储器利用率以及把相同的应用出口(ported)到多个平台是很方便的。就此而言,如果一个多核心平台具有比另一个多核心平台更快的SRAM,则软件开发者可以容易地从存储器映射定义发现它并且使用更多的该SRAM来加速处理,并且潜在地降低功耗。
存储器映射的部分包含范围和地址,其中范围是存储器块,地址是单个存储器位置。根据一些实施例,尺寸和存储器对准被规定用于部分和范围并且边界基于尺寸和对准被计算和验证。部分可以按类型归类为“命名共享存储器”或“常规”,涵盖了虚拟和物理存储器寻址。常规部分可以具有“本地”、“全局”或“全局/本地”作用域,即被引用的存储器可以是核心本地的、多个核心可见的或者同时是本地和全局地址。存储器属性和性质的例子是访问权限(读/写/执行)、类型(代码、数据)、功耗管理模式、读和写带宽、突发的和持续的、依赖于位置的读和写访问延迟、基于模式的功耗,以及基于作用域的虚拟和物理寻址。
范围可以自动地放置在部分中或者固定在某个地址或从范围开始被偏移,并且范围可以被保留用于特定的目的。存储器映射被定义和配置,并且可以独立于例如C/C++开发工具(即编译器/链接器)或者与其结合地使用。根据实施例,一些存储器映射条目在输入之后被验证,并且在存储器映射被保存时其对照示意性精确模型(模式)和验证规则被验证,并且警告和错误如果适用的话就被报告。一旦映射被验证,并且可选地结合了包含特定于平台的值的多平台定义,就可以以描述符文件格式生成存储器映射定义,以及可选地生成一个或多个链接器命令文件。存储器映射定义包含符号定义的、在存储器映射中规定的多核心平台存储器布局的所有方面,并且链接器命令文件提供与目标平台存储器布局的方便的基于链接器的集成。
存储器映射提供细粒度的、独立于编译器/链接器或者与编译器/链接器组合的对存储器规范的控制,从而增强了基于链接器的存储器分段方法。所期望的粒度是由编程人员确定的。例如,链接器命令文件通常参考一般是粗粒度存储器块的存储器的部分,如下:
存储器映射允许用户快速并重复地把存储器(例如部分)切成细粒度的存储器块,例如每个都是16字节的256个缓冲区(通过定义多个范围),或者切成单独的地址、32个设备寄存器。就此而言,单个大的存储器块可以被分成如由应用开发者定义的更小的片段(例如,部分或缓冲区)。要用传统方法来做这件事情将需要手动编辑。多个范围或地址可以容易地添加(或去除)(见图4m和4p-1)。通过把大的存储器块分成小的片段,应用可以通过引用被设计成要处理的数据的更小的存储器片段来更高效地存储和检索信息,而不是引用应用需要分成更小片段的大的存储器块。
通过引用符号定义,存储器映射定义可以被多核心平台上的拓扑图(见下文)以及其它系统、中间件或应用软件使用。在一些实施例中,存储器映射中的任何改变都被验证并反映在所生成的头和可选地链接器命令文件中。存储器映射很容易适于具有不同存储器规范的一系列多核心平台。因此,使用符号引用的软件无需改变就可以应用到多个多核心平台和/或重新配置的存储器布局。验证和生成增加了软件一致性并且降低了难以找出存储器重叠错误的风险。
拓扑图
为了通信目的,拓扑图提供应用与多核心平台的底层软件和硬件之间的抽象。根据一些实施例,拓扑图用来定义包含多个节点的多核心通信拓扑中的结构、属性、性质和资源,以及拓扑图定义的生成。属性和性质包括例如处理器体系架构和类型、字节顺序、字的长度、节点和核心的个数、物理互连。作为例子,拓扑图可以包括通过通信链路彼此互连的多个节点,其中每个节点配置为执行应用的一个或多个功能(见图11a)。
根据一些实施例,在拓扑图中使用的资源可以在池(pool)中组织。池包含预定义数量的对象,这些对象基于池的类型及其性质和属性来组织和初始化。在期望的存储器位置和对准预先分配和初始化的对象提高了性能和效率。例如,存储器的自由空间可以预先分配并配置为用于拓扑图的资源池。因此,当应用需要存储器的分配时,被指定为资源池的存储器的一部分对应用来说是不可用的。存储器对资源池的预先分配和配置允许存储器以预定义的方式配置,使得应用开发者能够最优地使用存储器。
资源包括例如消息池、数据池、消息队列池和等待者池、存储库(用于消息的存储和管理)以及节点间的链接。作为例子,消息包含元数据(在头中)和有效载荷数据。元数据包含诸如源和目的地、尺寸等信息,而有效载荷携带要被应用处理的数据。
以下是说明示例类型的池的性质的表。本领域普通技术人员应当理解,池的类型和池的性质不限于下表中规定的那些。
拓扑图创建的核心功能根据标题为APPARATUS&ASSOCIATED METHODOLOGY OFGENERATING A MULTI-CORE COMMUNICATIONS TOPOLOGY的美国专利申请No.12/403,144来公开,该申请的全部内容通过引用被结合于此。资源可以是节点本地的或者在多核心通信拓扑中的两个或更多个节点之间共享。资源池可以在节点之间共享,以便为了性能优化而优化存储器使用并且最小化节点之间的数据移动。本地资源池可以用来通过最小化应用和节点间链接之间的数据移动来优化性能,并且分离数据和元数据,例如为了完整性和安全性目的。资源还可以基于具体的存储器位置(离处理元件的距离)、属性和特性来分配。
在一些实施例中,存储器访问区域(MAR)用来规定存储器访问边界。能直接访问MAR或者属于其的,即,是其成员的,实体,例如核心、节点、池,可以共享MAR中的资源。具有MAR关联的实体可以属于一个或多个MAR。MAR可以包含一个或多个成员。例如,处理器、核心、节点和资源池可以与MAR关联(即,成员),其中它们可以直接访问相同的存储器(存储器访问区域)。例如,关于图2,在共享存储器230中规定的MAR可以由包括在作为那个MAR的成员的多核心系统中的任何处理器访问。
资源的类型,例如消息、消息队列和等待者,被规定并且性质被定义并配置。规定性质,例如内容、分配类型、位置、管理类型(例如,软件、硬件加速器)、MAR关联、初始化节点、锁定机制关键字、分配尺寸、数据缓冲区尺寸、对准、高速缓存机制、子池的个数、缓冲区的个数。存储器映射定义可以通过使用标识符,即,符号定义,在资源配置中被引用,从而为拓扑图资源提供多核心平台可移植性。资源,既有通用的又有特定于平台的性质,在拓扑中定义,并且在输入后或者在拓扑图被保存时对照模式和验证规则来验证。在一些实施例中,一旦资源被成功验证,就生成包含拓扑图所有方面的拓扑图定义,每个节点一组C(.c)和头(.h)以及可选地其它配置文件。
构造器和运行时库
根据一些实施例,构造器和运行时库利用所生成的存储器映射定义和拓扑图定义。存储器映射定义包括在运行时初始化和配置存储器和拓扑基础设施所需的必要定义、数据结构、参数和函数。存在在全部多核心平台上使用的通用运行时库以及特定于体系架构的库,这些库由编程平台构造器基于拓扑图的节点和链接性质,例如处理器、OS和运输类型,自动选择。所生成的节点文件(.c、.h及其它)、存储器映射定义、拓扑图定义包括运行时库所需的多核心平台存储器布局描述、数据结构、规范和初始化信息。运行时库使用存储器映射定义和拓扑图定义用于存储器和其它资源的初始化、供应,多核心拓扑中核心和其它计算机元件的相关职责的确定。
根据一些实施例,运行时资源管理包括初始化、访问、分配、解除分配、锁定、释放和调度。通用的和特定于平台的库的分离与自动选择跨广泛的多核心平台提供应用可移植性。在运行时库和所生成的多核心拓扑的组合中,运行时库可以被看作“无个性地”提供某些功能,即,它们将以相同的方式被执行,不管它们是从哪里被调用的。通过提供特定于处理器、核心、节点和链接的定义、配置和参数,存储器映射定义和拓扑图定义提供“个性化”。因此,一旦通过利用通信原语封装函数,应用就可以是启用多核心的。于是,应用到底层多核心平台的另选映射可以通过修改存储器映射和拓扑图来完成,而无需再次修改应用。这种分离提供了高度应用可移植性和优化能力。
可移植存储器映射还可以包括包含特定于平台的值的多平台定义,以便自动化存储器映射定义对众多多核心平台的生成。
图1示出了可移植存储器映射部署处理的实施例。该处理一般而言在步骤10开始,在这个步骤,存储器映射被创建并规定。在步骤20,对照预定的模式和其它预定的验证规则验证存储器映射。根据一些实施例,模式是(工具的)预定的(部分)并且被工具用来验证某些方面(结构、值范围),并且其它验证规则,例如存储器映射中各种对象之间的边界计算、关系和交互可以设计到工具中。模式可以作为文件存储在存储器中并且被工具访问,用于存储器映射某方面的验证。
如果验证显示有错误,则处理返回到步骤10,以校正存储器映射。一旦存储器映射通过验证,处理就前进到步骤30,在这个步骤,生成存储器映射定义。在另选实施例中,处理包括步骤32,在这个步骤,结合可选的包含特定于平台的值的多平台定义。
处理前进到步骤40,以确定链接器命令文件是否要使用。如果链接器命令文件要使用,则处理前进到步骤42,以生成链接器命令文件。作为例子,当已知存储器的一部分未被硬件或软件使用的前提(priory)时,除了使用存储器映射定义的软件之外,存储器的这一部分可以无需链接器集成地被使用。
在另选实施例中,处理包括步骤44,在这个步骤,存储器映射可以可选地链接到拓扑图。如果存储器映射要结合拓扑图使用,则处理前进到步骤50,以创建、规定并验证拓扑图。根据一些实施例,拓扑图如在标题为20100235847-A1,APPARATUS&ASSOCIATEDMETHODOLOGY OF GENERATING A MULTI-CORE COMMUNICATIONS TOPOLOGY的美国专利申请No.12/403,144中所公开的那样被创建、规定并验证。
如果链接器命令文件不要被使用,则处理前进到步骤60,在这个步骤,结果产生的存储器映射定义被开发者结合到多核心计算机软件中。这种结合可以由开发者手动执行。处理前进到步骤70,在这个步骤,利用存储器映射定义、运行时库以及如果可用的话还有拓扑图定义和链接器命令文件来构造(即,编译)软件。处理前进到步骤80,以便在多核心计算机80上部署软件。在一些实施例中,图1中所说明的处理在步骤80终止。
图2说明了包括多个核心220、存储器、硬件加速器和互连的多核心计算机系统210的实施例。这多个核心可以跨越一个或多个芯片。每个芯片可以具有一个或多个核心/处理器。系统具有直接共享存储器230、分布式共享存储器240,并且每个核心具有本地存储器250,例如高速缓存、高速暂存(scratch pad)以及多种类型的互连、总线260、片上网络(NoC)270以及相邻核心之间的点到点互连280。本地存储器、共享存储器和互连可以具有不同的属性和性质,例如类型、尺寸、带宽、延迟(基于类型和位置)、相干性、功耗和可靠性。在一些实施例中,硬件加速器290是为了比在通用处理器上运行的软件中可能的更快地执行功能而在硬件中实现的功能。硬件加速器用于不同的目的,诸如数据共享,例如直接存储器访问(DMA)和队列管理器,以及算法加速,例如视频压缩/解压缩、数据包处理。
图3说明了用于创建和验证存储器映射的处理的实施例。在一些实施例中,图3中所说明的处理对应于图1中的步骤10和20。图3中所说明的处理一般在步骤310开始,在这个步骤,规定存储器映射名字、描述、核心个数、导出目录和缺省对准。部分和常量也在步骤310中添加。
处理在320确定部分或常量是否被规定。如果常量被规定,则处理前进到步骤322,在这个步骤,常量是通过名字和值规定的。处理前进到365,以确定是否有更多部分或常量要规定。如果有更多部分或常量要规定,则处理返回步骤320,否则处理就前进到372。
如果部分被规定,则处理前进到330,在这个步骤,部分是通过类型、名字信息、缺省对准、许可(RWX)、范围(全局/本地、本地、全局)、使用类型(代码、数据)开始或偏移量、尺寸、视图(多个核心)、当前核心以及例如带宽、延迟、功耗和管理的特性规定的。处理前进到步骤340,以规定部分的范围和地址。特别地,在一些实施例中,部分包含代表存储器中单个位置的地址以及代表具有某些性质的存储器块的范围。在一些实施例中,范围是由尺寸和对准规定的,这导致确定下一个范围开始的总尺寸。范围可以被保留和固定。保留的范围指示范围不应当被使用。如果部分中除最后一个范围之外的其它范围被删除,则存储器朝部分的开始压缩。但是,固定的范围将保持在相同的地址并且不重新布置。以下是说明部分的属性和性质的实施例的表。
本领域普通技术人员应当理解,部分的属性和性质不应当局限于上表中所说明的那些并且可以包括由应用开发者规定的任何期望的属性或性质。
处理前进到步骤350,以对照部分的尺寸来验证总的范围尺寸。如果总的范围尺寸无效,则处理返回340,以校正总的范围尺寸。如果总的范围尺寸有效,则处理前进到步骤360,以验证存储器映射。作为例子,当存储器映射被保存时,对照模式和验证规则来验证它。如果存储器映射未能通过验证,则处理流返回步骤340,进行校正。一旦存储器映射通过验证,处理流就前进到步骤365,以确定是否有更多的部分或常量要规定。如果没有更多的部分或常量要规定,则处理前进到步骤372,以生成存储器映射定义。在进一步的实施例中,处理包括可选的步骤370,用于结合包含特定于平台的值的多平台定义。作为例子,两个不同的平台可以具有相似的存储器布局,但是具有不同的部分起始地址和尺寸。起始地址和部分可以自动插入到存储器映射定义中,从而产生在不同的位置具有相同的范围内部结构的多个存储器映射定义。
根据一些实施例,存储器映射定义以描述符文件格式提供,包括代表存储器映射的符号定义的值。描述符文件格式独立于特定于体系架构的存储器布局工具和开发工具(编译器、汇编器和链接器)。存储器映射定义从软件符号引用,并且对存储器映射的改变导致存储器映射定义的重新生成,无需应用或其它软件中的改变。可移植存储器映射提供了应用和其它软件与多核心平台存储器布局之间的抽象,从而启用不同平台之间的应用可移植性以及多核心平台存储器利用率的迭代优化。
图4a至4t说明了创建存储器映射的编辑器工具的示例性实施例。如图4a中所说明的,应用开发者可以打开新窗口并且规定新的存储器映射应当被创建。开发者可以给予存储器映射文件名和位置,如图4b中所说明的。在一些实施例中,编辑器工具包括用于定义存储器映射中的常量和部分的存储器映射向导,如图4c中所说明的。在存储器映射向导中,存储器映射名字、描述和其它映射范围内的信息被录入,如图4d中所说明的。图4e说明了在存储器映射编辑器中规定的示例常量。添加常量,例如通常使用的缓冲区尺寸以及缓冲区的个数。常量值可以被修改,而无需改变使用符号标识符的软件。例如,如图4e中所说明的,添加用于不同缓冲区尺寸和缓冲区个数的常量值。
编辑器工具还允许开发者添加并定义部分。例如,图4f说明添加了被指定为常规部分的部分,代表物理存储器。如图4g中所说明的,录入部分的名字、描述起始地址以及尺寸。开发者还可以规定部分的作用域。作为例子,如在图4h中所说明的,部分的作用域可以规定被全局/本地(全局和核心本地)、全局(对所有核心)或者本地(对“当前核心”)。许可属性如图4i中所说明的那样规定(例如,读/写/执行)。类型属性也在图4j中规定。
图4k说明了用于规定性能特性的例子。性能信息可以被应用或其它软件用来确定存储器部分的性能是否满足应用需求。作为例子,应用可以从适于下一代的前一代产品开始就存在。之前的产品可能没有高效地利用存储器,或者可能以硬编码的方式这么做了,在这种情况下,使用存储器映射将改善状况并提供向前应用可移植性。这将涉及创建存储器映射并修改应用以便结合该定义。当下一代应用被创建时,利用来自前一代产品的应用需求,开发者可以使用存储器映射编辑器来创建存储器映射。
部分的尺寸如图4l中所说明的那样规定,并且多个部分地址可以如图4m中所说明的那样规定。例如,如图4m中所说明的,开发者为一个部分规定了八个地址,连同地址之间的间隔和起始地址。图4n说明了八个不同的地址,连同用于第八个地址的起始地址和结束地址。
在一些实施例中,编辑器工具还允许应用开发者执行存储器映射验证。例如,图4o-l说明了在映射验证期间发生的错误。例如,存储器映射验证显示所规定的地址在存储器部分的边界之外,其中边界在在0x701FFFFF。这个边界是由位于0x70000000(图4o-3)的部分起始地址和部分尺寸2兆字节(即,2097152字节或者十六进制表示是0x00200000)确定的。边界是部分起始与尺寸的相加,0x70000000+(0x00200000-1)=0x701FFFFF。这个边界是由存储器映射编辑器工具计算的。在图4o-2中,地址被适当地修改并且通过验证。
图4p-1和4p-2说明了为部分添加多个范围。在一些实施例中,范围是对照部分的边界自动布置、对准、确定尺寸和验证的,以防潜在的重叠。在图4q中,如果除最后一个范围之外的范围被删除,则部分存储器被压缩。范围可以是固定的,例如,即使上方的(在更低地址的)范围被去除,也保持在其规定的地址。范围也可以被保留,例如,不被应用使用。
图4r说明了添加代表虚拟存储器的命名共享存储器部分。图4s说明了向命名共享存储器部分添加范围。在一些实施例中,虚拟部分使用相对于如利用关键字在运行时确定的虚拟地址的偏移量地址。根据一些实施例,关键字是由用户规定的唯一的命名共享存储器标识符。作为例子,关键字是存储器映射中具有一串字符作为值的标识符。用于关键字的示例标识符是mwk0(中间件关键字0的缩写,“共享存储器关键字”,见图4s)。关键字由共享存储器的实体(即,核心、处理)通过运行时软件用来识别存储器。关键字必须是唯一的,因为关键字被实体用来识别命名共享存储器部分。就此而言,关键字映射到具体的命名共享存储器部分。例如,如果第一实体和第二实体需要访问相同的命名共享存储器部分,则第一和第二实体都需要提供与该命名共享存储器部分相关联的关键字,以访问该命名共享存储器部分。
图4t说明了添加多个范围的例子。
图5a说明了用于两个不同的多核心计算机平台的示例存储器布局。在这个例子中,不同的多核心计算机平台包含相同类型的存储器(例如,ROM、I/O、SRAM、DRAM等),但是在不同的地址位置处并且具有不同的尺寸。图5b示出了用于多核心平台1的对应的生成的存储器映射定义的摘录。图5c示出了用于多核心平台2的对应的生成的存储器映射定义的摘录。平台2具有更多可用的快速SRAM,这些SRAM可以用来加速该平台上的处理。图5d示出了示例程序代码,利用了来自存储器映射定义的符号定义,因此这种代码可以不改变地用在两个多核心平台上。就此而言,如果没有存储器映射定义,则应用开发者将需要为相同的应用编写两段分开的代码或更复杂的代码,其中存储器映射定义中的标识符被特定于用于平台1和平台2的存储器布局的硬编码的值代替。因而,存储器映射定义允许应用开发者编写应用一次,该应用在平台1和2上都可以使用。
图6a说明了用于拓扑图创建的处理的实施例,该拓扑图可选地结合存储器映射。步骤610和670-690在如标题为APPARATUS&ASSOCIATED METHODOLOGY OF GENERATING AMULTI-CORE COMMUNICATIONS TOPOLOGY的美国专利申请No.12/403,144中所公开的拓扑图创建中被公开。拓扑范围的性质,诸如配置文件(profile)、项目名字、节点个数、最大有效载荷尺寸、处理器个数、处理器性质、优先级个数、子网个数、节点性质和核心性质在步骤610中规定。在步骤620中,编程人员决定是否把存储器映射链接到拓扑图。如果存储器映射要链接到拓扑图,则处理前进到622,以便把存储器映射链接到拓扑图(图6b)。链接的存储器映射可以被引用用于拓扑中最优存储器使用的规范和配置。
处理从步骤620和622前进到步骤630,以规定处理器性质、MAR及资源池。处理器性质(例如,体系架构、核心数量、字的长度、字节排序)、MAR被定义为本地的或共享的并且被配置,存储器部分可以链接到MAR,并且资源池由类型和内容定义并且被配置。处理前进到步骤640,以规定节点核心性质和MAR关联。作为例子,节点核心性质包括节点位置(处理器、核心)、操作系统(OS)、类型(主要的(master)、常规的)。处理前进到步骤650,以规定存储库。处理前进到步骤660,以创建节点之间的链接并且规定链接性质、资源和参数。要指出,一旦存储器映射在步骤622中被链接,存储器映射就可以在步骤630-660中被访问。
处理前进到步骤670,在那里拓扑图被保存。处理前进到步骤680,在那里对照模式模型和验证规则验证拓扑图。如果拓扑图无效,则向用户报告警告和错误并且处理返回到步骤610。用户可以返回去并且基于验证反馈来修改拓扑图。当拓扑图有效时,处理前进到步骤690,以生成拓扑图定义。
图6b—6e-2说明了拓扑图编辑器工具的实施例。如图6b中所说明的,用户可以使用编辑器工具把存储器映射链接到拓扑图。如图6c-1中所说明的,在选择“MEM”按钮时,存储器映射地址在拓扑图中用于组合池的分配。图6c-1说明了在资源池中定义的条目的例子。在图6c-2中,从存储器映射中选择标识符并且提供对应的值。如图6d中所说明的,对应的存储器映射标识符(MMAP_MC_PACKET_PROC_SECT_MW_SHARED_PHYS_RANGE_CMB1_GLOBAL_START)在拓扑图定义中使用。如图6e-1和6e-2中所说明的,对照选定的存储器范围尺寸的边界来验证组合池的分配尺寸。在以上的例子中,数据缓冲区尺寸被不正确地设计成65000。
图7说明了用于拓扑图资源池创建的处理的实施例。在一些实施例中,图7中所说明的处理对应于图6a中的步骤630。该处理一般而言在步骤710开始,在这个步骤,定义池的类型并且规定内容。出于性能优化、数据完整性和安全性的目的,消息头可以进一步位于消息或数据池中。在步骤712中,可以提供可选的存储器映射。
在步骤720中,诸如软件或硬件管理、初始化节点和MAR关联、存储器映射定义之类的池管理性质可以通过使用标识符(即符号定义)在资源配置中被引用,从而为资源提供多核心平台可移植性。在步骤722中,诸如本地或全局位置、虚拟或物理寻址、地址(物理的)和/或关键字(虚拟的)、锁定关键字、分配尺寸、高速缓存和高速缓存对准之类的分配性质被配置。
处理在步骤724中确定是否正在使用存储器映射。如果没有在使用存储器映射,则处理前进到步骤740。如果正在使用存储器映射,则处理前进到步骤730,在这个步骤,存储器映射定义可以被符号定义中的标识符引用。作为例子,存储器映射定义可以通过选择包括在存储器映射定义中的常量、范围或地址来引用。图6b和6c1-2提供了存储器映射如何在池的创建中被引用的例子。特别地,这些图提供了在资源池创建处理期间使用存储器映射标识符的例子。处理前进到步骤740,以确定池的类型为等待者池、数据池、消息池、消息队列池或组合池之一。一旦池的类型被确定,处理就前进到步骤750-756之一,以规定相应确定的池类型的性质,诸如缓冲区的个数、缓冲区尺寸、子池的个数、等待者的个数。如果所确定的池类型是组合池或消息池,则处理分别前进到步骤760和762,以规定每子池的缓冲区个数。存储器映射定义可以在步骤750-762中的任何一个步骤中被符号定义中的标识符引用(764)。
图8说明了用于使用链接器指令把存储器分成段的实施例。例如,链接器指令用来规定段,例如.text(程序指令)810、.bss(未初始化的数据)820、.rodata(只读数据)830、.data(初始化的数据)840、.stack(程序堆栈)850和.seg1(用户定义的段)860。作为例子,段(.seg1)可以在链接器命令文件中被保留为根据存储器映射定义使用的部分。例如,.seg1(860)可以被定义为MAR1_Pools_DDR3(见图10,1020)。因此,链接器指令充当用于其中存储器映射可以被分成更小块的存储器的一部分的存储器布局。
图9a说明了用于映射、配置和分配存储器的可移植存储器映射方法的实施例。作为例子,存储器映射由部分910(代表段)和常量920组成。部分包含作为存储器块的范围930,以及代表数据字(字节或更大的字尺寸)的单独位置的地址940。例如,如图9a中所说明的,部分A包括范围Range_0至Range_7和地址Addr_0至Addr_3。范围可以是固定的950,即它们将不在被调整尺寸或删除的其它范围的部分中被重新定位。范围还可以是保留的960,即它们将不由系统或应用软件使用。存储器映射被验证并且生成存储器映射定义以及可选的链接器命令文件。存储器映射定义包含符号定义,从而提供软件可移植性。用于部分A的存储器映射定义在图9b-9d中说明。
图10说明了从生成的存储器映射定义的示例摘录1010以及从生成的链接器命令文件的摘录1020,其中存储器映射定义规定部分的起始地址和尺寸,其中部分规定了代表多核心平台存储器布局的符号定义,而且链接器命令文件1020保留对应的部分空间,如在存储器布局1030中所说明的。
可移植存储器映射的示例性应用
作为应用可移植存储器映射的例子,利用信号处理滤波器应用执行实验,该应用在运行Linux的基于Intel x86的PC上功能开发,无需访问目标硬件多核心平台,并且随后传送到目标平台。目标平台基于Texas Instruments TMS320C6678的8核数字信号处理器(DSP)。
应用是利用根据本文所述实施例的可移植存储器映射、拓扑图并且利用用于在核心之间通信的MCAPI多核心通信API而在Linux平台上开发的。应用具有两级滤波器(滤波器1和滤波器2),为了改善的性能,这两个滤波器被复制成并行运行。一旦应用被功能开发并且是时候移动到目标硬件平台了,存储器和拓扑图就被修改成适应应用并且该应用从PC(即,Linux平台)传送到具有微小变化的多核心DSP平台。作为例子,用于开发平台的存储器映射被保存为新的存储器映射(即,保存为新文件)并且根据目标平台的存储器映射被修改。
图11a说明了开发平台(Linux/x86)的示例拓扑图。图11b说明了用于目标平台(DSPBIOS/C6678)的示例拓扑图。图11c-11j提供了开发平台的存储器映射如何被修改成对应于目标平台的存储器布局的说明。如图11c中所说明的,用于数据传输的消息池位于PC上的常规DRAM存储器中并且被放置在目标平台上更快速的核心本地SRAM中(图11f)。图11d说明了用于PC平台的范围标识符,图11g说明了用于目标平台的范围标识符。如图11e中所说明的,利用PC上的软拷贝,数据从滤波器级一移动到滤波器级二,而在目标平台上,如图11h中所说明的,数据利用本地SRAM之间的DMA(直接存储器访问)辅助的传输从滤波器级一核心移动到滤波器级二核心。作为例子,软拷贝是在CPU例如利用memcpy()函数(标准函数)逐个字节移动数据的时候。在使用DMA的其它情况下,CPU参与设置DMA事务,但是DMA执行数据移动而无需CPU的进一步涉入。
如图11i中所说明的,保持滤波器系数和数据的数组位于PC上的常规DRAM存储器中并且被放置在目标平台上更快速的核心本地SRAM中,如图11j中所说明的。
以下说明的是用于滤波器应用的示例代码片段。如以下所说明的,访问滤波器应用中的系数和数据数组是以相同的方式在开发平台(即,Linux)和目标平台上进行的。就此而言,以下所说明的代码使用在开发和目标平台的存储器映射中都规定的标识符。但是,在开发平台上,标识符映射到DRAM,在目标平台上,标识符映射到SRAM。
/*调用filter1例程*/
以上描述的滤波器应用在PC上方便地开发并进行功能测试,不需要对目标平台的访问。通过存储器和拓扑图的简单修改以及对应用的很少的或者几乎没有改变,应用被传送到目标多核心信号处理平台。可移植存储器映射和拓扑图提供了从第一多核心平台到第二多核心平台的应用可移植性。通过存储器映射和拓扑图的使用,应用最优地应用到多核心DSP平台的存储器布局,为了高效的存储器利用率而利用核心本地的SRAM存储器用于计算和SRAM存储器之间的DMA传送。可移植存储器映射和拓扑图可以以相似的方式快速应用到众多多核心平台。
图12是处理器1200的框图。在一些实施例中,处理器1200被配置为执行以上方法中的任何一个。在进一步的实施例中,存储器映射和拓扑图编辑器工具在处理器1200上实现。虽然图2说明了多核心计算机,但图12是单核心计算机的例子。根据一些实施例,为其创建存储器映射的目标平台可以是单核心计算机、多核心计算机、虚拟化的计算机,或者其组合。虚拟化计算机的例子包括运行在一个或多个单核心或多核心计算机或者其组合上的虚拟机。
在一个实施例中,处理器1200包括处理存储在主存储器1240和/或ROM 1250中的数据和指令的CPU 1280。CPU 1280还处理存储在盘1210或CD-ROM 1220上的信息。作为例子,CPU 1280是来自位于美国的IBM的IBM System X,它采用至少一个来自位于美国的Intel的Xenon处理器或者来自位于美国的AMD的Opteron处理器。因而,对应于移动设备中的处理的指令存储在盘1210、CD-ROM1220、主存储器1240或ROM 1250中的任何一个上。
在一个实施例中,处理器1200还包括网络接口1275,诸如来自位于美国的Intel公司的Intel以太网PRO网络接口卡,用于与显示器1202接口的显示器控制器1230,诸如来自位于美国的NVIDIA公司的NVIDIA GeForce GTX图形适配器,其中显示器诸如惠普的HPL2445w LCD监视器。处理器1200还包括用于与键盘1295和指点设备1285接口的I/O接口1290,其中指点设备诸如滚球或鼠标。根据一些实施例,盘控制器1260用总线1270互连盘1210,诸如硬盘驱动器或FLASH存储器驱动器,以及CD-ROM 1220或DVD驱动器,其中总线是ISA、EISA、VESA、PCI或者用于互连服务器1200的全部组件的类似总线。为了简化,显示器1202、键盘1295和指点设备1285以及显示器控制器1230、盘控制器1260、网络接口1275和I/O接口1290的通用特征和功能的描述也略去了,因为这些特征是众所周知的。当然,其它的处理器和硬件销售商和类型在本领域中也是公知的,诸如来自位于美国的Freescale公司的Freescale ColdFire、i.MX和ARM处理器。
图12的示例处理器1200是诸如PC的计算设备的硬件平台,并且CPU 1280是IntelPentium处理器,或者本领域中公知的任何其它期望的处理器。存储在主存储器1240、ROM1250、盘1210或CD-ROM 1220中的任何一个上的计算机可读指令是作为实用应用程序、后台守护进程或操作系统的组件或者它们的组合来提供的,结合CPU 1280和诸如MicrosoftVISTA、UNIX、Solaris、LINUX、Apple MAC-OS以及对本领域技术人员来说公知的其它系统的操作系统一起执行。
主存储器1240是随机存取存储器(RAM)、FLASH存储器、EEPROM存储器等,而ROM1250是只读存储器,诸如PROM。为了简化,对主存储器1240和ROM 1250的进一步描述被略去了,因为这样的存储器是众所周知的。
在附加实施例中,存储器映射编辑器工具和拓扑图编辑器工具存储在通用服务器或云服务器上并且从处理器1200远程访问,以创建本文所述的存储器映射和拓扑图。
因而,以上讨论只是公开并描述了本进步的示例性实施例。因此,本进步的公开内容意在说明,而不是关于范围进行限制。本公开内容——包括本文示教的任何容易辨别的变体,部分地定义权利要求术语的范围。
Claims (24)
1.一种用于生成目标计算机的存储器映射的计算机实现的方法,所述存储器映射指示被分段成块的目标计算机的存储器结构,每个块与标识符关联,该计算机实现的方法包括:
根据存储在主机计算机的存储器中的多个独立于平台的标识符,规定与定义所述目标计算机的存储器结构的存储器布局的至少一个块关联的至少一个标识符;
规定与所规定的至少一个标识符关联的值;
利用所述至少一个标识符及关联的至少一个值生成所述存储器映射的存储器映射定义;及
在所述目标计算机上部署软件,所述软件结合了所述存储器映射定义并且包括引用用关联的值替换的所述至少一个标识符的可执行指令。
2.如权利要求1所述的计算机实现的方法,其中,所述存储器映射在确定所述至少一个标识符没有违反存储在存储器中的预定的值范围、对象的对象关系或边界参数后被验证,并且
所述存储器映射定义在所述存储器映射验证后以描述符文件格式生成。
3.如权利要求1所述的计算机实现的方法,其中所述存储器布局被分段成在所述存储器映射定义中定义的存储器映射部分,并且,从所述存储器映射定义生成链接器文件用于所述存储器映射部分与链接器定义的部分的集成,
所述存储器映射链接到所述目标计算机的拓扑图,所述拓扑图定义对应于所述软件的一个或多个功能的至少一个节点与目标计算机的硬件之间的通信,并且
所述存储器映射定义结合在所述拓扑图的拓扑图资源池的规范和配置中。
4.如权利要求1所述的计算机实现的方法,还包括:
在另一目标计算机上部署使用所述存储器映射定义的所述软件,其中所述另一目标计算机具有与所述目标计算机的所述存储器布局不同的存储器布局,
其中,所述软件能从第一平台移植到第二平台而无需对所述软件进行修改。
5.如权利要求1所述的计算机实现的方法,其中
所述存储器布局包括第一种类型的存储器和比第一种类型的存储器快的第二种类型的存储器,及
为了最优的存储器利用率,所述至少一个标识符只与第二种类型的存储器关联。
6.如权利要求1所述的计算机实现的方法,其中所述存储器映射被重新配置并验证,并且所述存储器映射定义利用重新配置的存储器映射被重新生成而无需改变所述软件。
7.如权利要求3所述的计算机实现的方法,其中,所述存储器映射定义和拓扑图定义结合链接器命令文件和运行时库被构造用于在所述目标计算机上执行。
8.如权利要求1所述的计算机实现的方法,其中所述存储器映射还包括包含特定于平台的值的多平台定义,以便自动化用于众多多核心平台的一个或多个存储器映射定义的生成,并且
该方法还包括基于所述多平台定义生成存储器映射定义。
9.一种主机计算机,包括:
存储器;及
处理器,被配置为
根据存储在所述主机计算机的所述存储器中的多个独立于平台的标识符,规定与定义目标计算机的存储器结构的存储器布局的至少一个块关联的至少一个标识符;
规定与所规定的至少一个标识符关联的值;
利用所述至少一个标识符及关联的至少一个值生成存储器映射的存储器映射定义,所述存储器映射指示被分段成块的目标计算机的存储器结构,每个块与标识符关联;及
在所述目标计算机上部署软件,所述软件结合了所述存储器映射定义并且包括引用用关联的值替换的所述至少一个标识符的可执行指令。
10.如权利要求9所述的主机计算机,其中,所述处理器还被配置为在确定所述至少一个标识符没有违反存储在存储器中的预定的值范围、对象的对象关系或边界参数后验证所述存储器映射,并且
所述处理器还被配置为在所述存储器映射验证后以描述符文件格式生成所述存储器映射定义。
11.如权利要求9所述的主机计算机,其中,所述存储器布局被分段成在所述存储器映射定义中定义的存储器映射部分,并且,从所述存储器映射定义生成链接器文件用于所述存储器映射部分与链接器定义的部分的集成,
所述存储器映射链接到所述目标计算机的拓扑图,所述拓扑图定义对应于所述软件的一个或多个功能的至少一个节点与目标计算机的硬件之间的通信,并且
所述存储器映射定义结合在所述拓扑图的拓扑图资源池的规范和配置中。
12.如权利要求9所述的主机计算机,还包括:
在另一目标计算机上部署使用所述存储器映射定义的所述软件,其中所述另一目标计算机具有与所述目标计算机的所述存储器布局不同的存储器布局,
其中,目标计算机软件能从第一平台移植到第二平台而无需对所述软件进行修改。
13.如权利要求9所述的主机计算机,其中,在所述目标计算机中,
所述存储器布局包括第一种类型的存储器和比第一种类型的存储器快的第二种类型的存储器,及
为了最优的存储器利用率,所述至少一个标识符只与第二种类型的存储器关联。
14.如权利要求9所述的主机计算机,其中所述存储器映射被重新配置并验证,并且所述存储器映射定义利用重新配置的存储器映射被重新生成而无需改变所述软件。
15.如权利要求11所述的主机计算机,其中,所述存储器映射定义和拓扑图定义结合链接器命令文件和运行时库而被构造,以用于在计算机上执行。
16.如权利要求9所述的主机计算机,其中所述存储器映射还包括包含特定于平台的值的多平台定义,以便自动化用于众多多核心平台的一个或多个存储器映射定义的生成,并且
所述处理器还被配置为基于所述多平台定义生成存储器映射定义。
17.一种其中存储有可执行指令的非暂时性计算机可读介质,所述指令在被主机计算机的处理器执行时使所述处理器执行用于生成目标计算机的存储器映射的方法,所述存储器映射指示被分段成块的目标计算机的存储器结构,每个块与标识符关联,所述方法包括:
根据存储在所述主机计算机的存储器中的多个独立于平台的标识符,规定与定义所述目标计算机的存储器结构的存储器布局的至少一个块关联的至少一个标识符;
规定与所规定的至少一个标识符关联的值;
利用所述至少一个标识符及关联的至少一个值生成所述存储器映射的存储器映射定义;及
在所述目标计算机上部署软件,所述软件结合了所述存储器映射定义并且包括引用用关联的值替换的所述至少一个标识符的可执行指令。
18.如权利要求17所述的非暂时性计算机可读介质,其中,所述存储器映射在确定所述至少一个标识符没有违反存储在存储器中的预定的值范围、对象的对象关系或边界参数后被验证,并且
所述存储器映射定义在所述存储器映射验证后以描述符文件格式生成。
19.如权利要求17所述的非暂时性计算机可读介质,其中所述存储器布局被分段成在所述存储器映射定义中定义的存储器映射部分,并且,从所述存储器映射定义生成链接器文件用于所述存储器映射部分与链接器定义的部分的集成,
所述存储器映射链接到所述目标计算机的拓扑图,所述拓扑图定义对应于所述软件的一个或多个功能的至少一个节点与目标计算机的硬件之间的通信,并且
所述存储器映射定义结合在所述拓扑图的拓扑图资源池的规范和配置中。
20.如权利要求17所述的非暂时性计算机可读介质,还包括;
在另一目标计算机上部署使用所述存储器映射定义的所述软件,其中所述另一目标计算机具有与所述目标计算机的所述存储器布局不同的存储器布局,
其中,所述软件能从第一平台移植到第二平台而无需对所述软件进行修改。
21.如权利要求17所述的非暂时性计算机可读介质,其中
所述存储器布局包括第一种类型的存储器和比第一种类型的存储器快的第二种类型的存储器,及
为了最优的存储器利用率,所述至少一个标识符只与第二种类型的存储器关联。
22.如权利要求17所述的非暂时性计算机可读介质,其中所述存储器映射被重新配置并验证,并且所述存储器映射定义利用重新配置的存储器映射被重新生成而无需改变所述软件。
23.如权利要求19所述的非暂时性计算机可读介质,其中,所述存储器映射定义和拓扑图定义结合链接器命令文件和运行时库而被构造,以用于在所述目标计算机上执行。
24.如权利要求17所述的非暂时性计算机可读介质,其中所述存储器映射还包括包含特定于平台的值的多平台定义,以便自动化用于众多多核心平台的一个或多个存储器映射定义的生成,并且
存储器映射定义基于所述多平台定义被生成。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201261615095P | 2012-03-23 | 2012-03-23 | |
US61/615,095 | 2012-03-23 | ||
PCT/US2013/033707 WO2013142861A1 (en) | 2012-03-23 | 2013-03-25 | Apparatus and method for providing a multicore programming platform |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104321742A CN104321742A (zh) | 2015-01-28 |
CN104321742B true CN104321742B (zh) | 2017-08-29 |
Family
ID=49213453
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380024387.8A Active CN104321742B (zh) | 2012-03-23 | 2013-03-25 | 用于提供多核心编程平台的装置和方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9116628B2 (zh) |
EP (1) | EP2828743A4 (zh) |
CN (1) | CN104321742B (zh) |
WO (1) | WO2013142861A1 (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20150091836A (ko) * | 2014-02-04 | 2015-08-12 | 한국전자통신연구원 | 공여 메모리 제공 시스템, 공여 메모리 등록 및 할당 방법 |
KR20160105657A (ko) * | 2015-02-27 | 2016-09-07 | 한국전자통신연구원 | 멀티코어 프로그래밍 장치 및 방법 |
US10489130B2 (en) * | 2015-09-24 | 2019-11-26 | Oracle International Corporation | Configurable memory layouts for software programs |
US10127136B2 (en) | 2015-09-24 | 2018-11-13 | Oracle International Corporation | Identifying and visualizing suboptimal memory layouts in software programs |
US10217254B2 (en) | 2015-09-24 | 2019-02-26 | Oracle International Corporation | Graphical editing of memory layout rules for software programs |
US10839289B2 (en) * | 2016-04-28 | 2020-11-17 | International Business Machines Corporation | Neural network processing with von-Neumann cores |
US10585818B2 (en) | 2017-04-05 | 2020-03-10 | International Business Machines Corporation | Low overhead exclusive control for shared memory objects |
US10901789B2 (en) * | 2019-04-02 | 2021-01-26 | Sap Se | Associative registry |
CN111832736B (zh) * | 2019-04-19 | 2024-04-12 | 伊姆西Ip控股有限责任公司 | 用于处理机器学习模型的方法、设备和计算机可读存储介质 |
CN116954950B (zh) * | 2023-09-04 | 2024-03-12 | 北京凯芯微科技有限公司 | 一种核间通信方法和电子设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101512482A (zh) * | 2005-02-08 | 2009-08-19 | 思科技术公司 | 多线程分组处理体系结构 |
US7584465B1 (en) * | 2004-09-20 | 2009-09-01 | The Mathworks, Inc. | Memory mapping for single and multi-processing implementations of code generated from a block diagram model |
CN101615145A (zh) * | 2009-07-24 | 2009-12-30 | 中兴通讯股份有限公司 | 一种提高存储器数据缓存可靠性的方法和装置 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5790130A (en) | 1995-06-08 | 1998-08-04 | Hewlett-Packard Company | Texel cache interrupt daemon for virtual memory management of texture maps |
AU1405000A (en) * | 1999-12-15 | 2001-06-25 | Sun Microsystems, Inc. | Preparation of a software configuration using an xml type programming language |
US7167908B2 (en) * | 2002-09-27 | 2007-01-23 | Intel Corporation | Facilitating operation of a multi-processor system via a resolved symbolic constant |
DE60306952T2 (de) | 2002-11-18 | 2007-02-08 | Arm Ltd., Cherry Hinton | Zuordnung von virtuellen zu physischen speicheradressen in einem system mit einem sicheren bereich und einem nicht sicheren bereich |
US20050144422A1 (en) | 2003-12-30 | 2005-06-30 | Mcalpine Gary L. | Virtual to physical address translation |
US8347038B2 (en) | 2008-03-31 | 2013-01-01 | Intel Corporation | Optimizing memory copy routine selection for message passing in a multicore architecture |
US9250973B2 (en) * | 2009-03-12 | 2016-02-02 | Polycore Software, Inc. | Apparatus and associated methodology of generating a multi-core communications topology |
US8307198B2 (en) | 2009-11-24 | 2012-11-06 | Advanced Micro Devices, Inc. | Distributed multi-core memory initialization |
-
2013
- 2013-03-25 CN CN201380024387.8A patent/CN104321742B/zh active Active
- 2013-03-25 US US13/850,194 patent/US9116628B2/en active Active - Reinstated
- 2013-03-25 EP EP13763991.0A patent/EP2828743A4/en not_active Withdrawn
- 2013-03-25 WO PCT/US2013/033707 patent/WO2013142861A1/en active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7584465B1 (en) * | 2004-09-20 | 2009-09-01 | The Mathworks, Inc. | Memory mapping for single and multi-processing implementations of code generated from a block diagram model |
CN101512482A (zh) * | 2005-02-08 | 2009-08-19 | 思科技术公司 | 多线程分组处理体系结构 |
CN101615145A (zh) * | 2009-07-24 | 2009-12-30 | 中兴通讯股份有限公司 | 一种提高存储器数据缓存可靠性的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
US20130254510A1 (en) | 2013-09-26 |
EP2828743A1 (en) | 2015-01-28 |
EP2828743A4 (en) | 2015-12-23 |
CN104321742A (zh) | 2015-01-28 |
WO2013142861A1 (en) | 2013-09-26 |
US9116628B2 (en) | 2015-08-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104321742B (zh) | 用于提供多核心编程平台的装置和方法 | |
Aldinucci et al. | Fastflow: High‐Level and Efficient Streaming on Multicore | |
US9459850B2 (en) | Adaptive cloud aware just-in-time (JIT) compilation | |
US8863096B1 (en) | Parallel symbolic execution on cluster of commodity hardware | |
TWI336836B (en) | System and method for extending the cross-memory descriptor to describe another partition's memory | |
US20170017797A1 (en) | Parallel processing of data for an untrusted application | |
US7676787B2 (en) | Component based design time architecture | |
Benedicic et al. | Sarus: Highly scalable docker containers for hpc systems | |
JP2010530564A (ja) | 大規模なストレージ・コントローラの集合におけるスケーラブルな性能ベースのボリューム割り振りのための、方法、システム、およびコンピュータ・プログラム | |
WO2002093430A1 (en) | Method and apparatus for implementing a data management system using a metadata specification | |
CN106687920A (zh) | 管理任务的调用 | |
JP2002525744A (ja) | テキスト・オブジェクトのコンパイル方法およびシステム | |
US20050015356A1 (en) | Database System Providing Methodology for Prepared Statement Cloning | |
JP2003500716A (ja) | エミュレーションシステム上における複数の回路設計の同時エミュレーションのための方法及び装置 | |
CN106919398A (zh) | 一种软件发布方法及装置 | |
US20150113535A1 (en) | Parallel data processing system, computer, and parallel data processing method | |
CN110109859A (zh) | 可编程平台上的加速器架构 | |
Sai et al. | Accelerating high-order stencils on GPUs | |
Linderoth et al. | Improving bounds on the football pool problem by integer programming and high-throughput computing | |
CN109814973A (zh) | 一种桌面云平台的实现方法、系统及服务器 | |
WO2004072768A2 (en) | Distributed dynamically optimizable processing communications and storage system | |
Corre et al. | Fast template-based heterogeneous mpsoc synthesis on fpga | |
Lucas | On the use of hierarchical task for heterogeneous architectures | |
Shin et al. | Automatic network generation for system-on-chip communication design | |
CN104239124B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |