CN112074820A - 用于多内核系统的存储器池分配 - Google Patents

用于多内核系统的存储器池分配 Download PDF

Info

Publication number
CN112074820A
CN112074820A CN201980029698.0A CN201980029698A CN112074820A CN 112074820 A CN112074820 A CN 112074820A CN 201980029698 A CN201980029698 A CN 201980029698A CN 112074820 A CN112074820 A CN 112074820A
Authority
CN
China
Prior art keywords
memory
core
data
memory block
port
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.)
Granted
Application number
CN201980029698.0A
Other languages
English (en)
Other versions
CN112074820B (zh
Inventor
M·西蒙斯
A·P·西斯特拉
P·古普塔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microchip Technology Inc
Original Assignee
Microchip Technology Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Microchip Technology Inc filed Critical Microchip Technology Inc
Priority to CN202410055096.5A priority Critical patent/CN117873912A/zh
Publication of CN112074820A publication Critical patent/CN112074820A/zh
Application granted granted Critical
Publication of CN112074820B publication Critical patent/CN112074820B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation 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/5016Allocation 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/441Register allocation; Assignment of physical memory space to logical memory space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5011Pool

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Microcomputers (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Mram Or Spin Memory Techniques (AREA)
  • Memory System (AREA)

Abstract

一种装置包括处理内核、存储块、处理内核中的每个处理内核与存储块之间的连接、芯片选择电路以及芯片选择电路与存储块中的每个存储块之间的芯片选择电路总线。每个存储块包括数据端口和存储器检查端口。芯片选择电路被配置为使得能够通过存储块的相应数据端口从最高优先级内核写入数据。芯片选择电路被进一步配置为使得能够通过存储块的相应存储器检查端口从其他内核写入数据。

Description

用于多内核系统的存储器池分配
技术领域
本公开涉及电子设备中的存储器管理,并且更具体地涉及用于多内核系统的存储器池分配。
背景技术
电子设备可包括多个处理器或具有多个执行内核的处理器。只读存储器(ROM)和随机存取存储器(RAM)在电子设备中物理地实现并且通信地耦接到电子设备。
在电子设备上运行的应用程序和进程可共享对同一物理存储器的访问。共享存储器可以指可由多处理器计算机系统中的若干不同中央处理单元(CPU)或内核访问的RAM块。应用程序可在这些多个内核上运行。为了实现共享存储器,系统可以使用均匀存储器访问。在这种情况下,所有内核均匀地共享物理存储器。相反,系统可使用非均匀存储器访问。在这种情况下,存储器访问时间取决于相对于处理器的存储器位置。在其他情况下,系统可使用高速缓存存储器架构。这可能是最常见的具体实施,其中可使用用于每个内核的本地存储器或高速缓存,并且在需要时,可使用从主存储器获取的附加内容。共享存储器系统可相对容易编程,因为所有处理器共享数据的单个视图。
发明内容
本公开的实施方案可包括装置。该装置可包括处理内核和存储器池,该处理内核包括第一内核和第二内核,该存储器池包括存储块。每个存储块可包括数据端口和存储器检查端口、第一内核与多个存储块中的每一个存储块之间的第一连接、第二内核与多个存储块中的每一个存储块之间的第二连接、以及被配置为共享在第一内核和第二内核之间对存储器池的访问的芯片选择电路。结合上述实施方案中的任一个实施方案,芯片选择电路可通过以下方式共享对存储器池的访问:使得能够通过存储块的相应数据端口将数据从第一内核访问到存储块,并且使得能够通过存储块的相应存储器检查端口将数据从第二内核访问到存储块。结合上述实施方案中的任一个实施方案,芯片选择电路可被进一步配置为通过使得能够通过存储块的相应存储器检查端口将数据从第三内核访问到存储块来共享在多个处理内核中的第一内核、第二内核和第三内核之间对存储器池的访问。结合上述实施方案中的任一个实施方案,芯片选择电路可被进一步配置为使能通过存储块的相应存储器检查端口从存储器测试电路到存储块的访问信号。结合上述实施方案中的任一个实施方案,芯片选择电路可被进一步配置为基于确定第一内核是比第二内核更高优先级的内核来使得能够通过相应数据端口从第一内核访问数据,并且使得能够通过相应存储器检查端口从第二内核访问数据。结合上述实施方案中的任一个实施方案,芯片选择电路可被进一步配置为同时使得能够通过给定存储器的相应数据端口将数据从第一内核访问到给定存储块,使得能够通过给定存储器的相应存储器检查端口将数据从第二内核访问到给定存储块。结合上述实施方案中的任一个实施方案,存储块具有不同的尺寸。结合上述实施方案中的任一个实施方案,可在由第一内核和第二内核执行的软件的编译期间确定存储块到相应内核的分配。结合上述实施方案中的任一个实施方案,芯片选择电路可被进一步配置为从编译过程确定到内核的存储块的分配,并且基于确定给定存储块未被分配给内核,关闭给定存储块。
本公开的实施方案可包括微处理器、微控制器、系统或包括上述实施方案的装置的电子设备。
本公开的实施方案可包括非暂态机器可读介质,该非暂态机器可读介质包括指令。该指令在由处理器加载并执行时可将处理器配置为将源指令编译成要由第一内核和第二内核执行的目标代码以在目标机器上操作,识别第一内核和第二内核的程序存储器需求,识别目标机器上可用的多个存储块中的每一个存储块的尺寸和数量,并且基于程序存储器需求以及存储块的尺寸和数量,将存储块中的各个存储块分配给第一内核或第二内核。指令可形成将由上述实施方案的装置执行的应用程序。
本公开的实施方案可以包括由上述实施方案的装置、微处理器、微控制器、系统或电子设备中的任一者执行的方法。
本公开的实施方案可包括当在处理器上执行时由上述实施方案的指令执行的方法。
附图说明
图1是根据本公开的实施方案的用于将存储器池的部分分配给多个处理器或处理内核的系统的图示。
图2示出了使用其他解决方案的示例性系统。
图3是根据本公开的实施方案的用于将存储器池的部分分配给多个处理器或处理内核的系统的更详细视图。
图4是根据本公开的实施方案的用于将存储器池的部分分配给多个处理器或处理内核的系统的又一个更详细视图。
图5是示出根据本公开的实施方案的用于将存储器池的部分分配给多个处理器或处理内核的系统中的芯片选择路径的更详细视图。
图6示出了根据本公开的实施方案的示例性分配指定机制。
图7是根据本公开的实施方案的芯片选择逻辑部件和RAM面板的图示。
具体实施方式
图1是根据本公开的实施方案的用于将存储器池102的部分分配给多个处理器或处理内核104、106、108的系统100的图示。
系统100可包括给定处理器中的多于一个处理器或多于一个处理内核。可以使用任何适当数量的内核或处理器或者它们的组合。在图1中,示出了三个内核104、106、108作为示例。内核104、106、108可源自单个处理器或多个处理器,诸如传统的中央处理单元(CPU)或数字信号处理器(DSP)。其他处理器可包括微控制器、专用集成设备、现场可编程门阵列(FPGA)或其他合适的处理集成电路上的那些。内核104、106、108可共享对存储器池102的访问。
存储器池102可被划分成多个存储块110、112、114。存储器池102可包括ROM或RAM。在一个实施方案中,存储器池102可以是程序存储器。程序存储器可包括用于在电子设备中加载并执行可执行或其他编译或可执行对象的存储器。程序存储器可与数据存储器分开。数据存储器可在单独的存储器管理方案中处理。虽然程序存储器可用于保持用于正被执行的程序的指令,但是数据存储器可用于临时存储并保持来自正被执行的此类程序的中间结果和变量。程序存储器可包括引导部分和应用程序部分。
存储器池102可由物理块来实现。例如,存储块110、112、114中的每一个存储块可以是单独的物理存储块。物理存储块可被称为存储器面板。每个存储块110、112、114可包括用于与系统100的其余部分进行交互的设备、接口、控制器、电路或其他机构。在各种实施方案中,存储块110、112、114可各自具有相同或不同的尺寸。存储块110、112、114中的每一个存储块可被分配给内核104、106、108中的单个内核。尽管在图1中示出了给定数量的存储块110、112、114,但系统100可包括各种尺寸的任何合适数量的存储块。在许多情况下,可存在多于内核的存储块。
在一个实施方案中,系统100可包括芯片选择电路116,该芯片选择电路被配置为将命令信号路由到存储块110、112、114。在另一个实施方案中,芯片选择电路116和系统100的其他部件可被配置为使用存储块110、112、114的现有的测试输入或包裹器来将命令和数据路由至此类存储块并且从此类存储块路由命令和数据。芯片选择电路116可由例如数字逻辑部件实现。芯片选择电路116可以代替使用总线架构,该总线架构在尺寸和管芯成本方面可以大几个数量级。例如,芯片选择电路116的此类逻辑部件可能仅需要几百个逻辑门来实现,而不是需要成千上万个门来实现总线架构。
存储块110、112、114中的哪一个存储块与内核104、106、108中的一些内核匹配的定义或规范可以存储在合适的位置中。例如,此类定义或规范可存储在非易失性存储器中。定义或规范可在例如电子熔断器或其他存储装置中实现。可在编译要在系统100上执行的应用程序或其他软件时对定义或规范进行定义。存储定义或规范的非易失性存储器能够由芯片选择电路116访问。芯片选择电路116可包括用于基于存储在非易失性存储器中的编译时信息(诸如定义或规范)将内核地址转换为存储块选择信号的逻辑部件。
对于在内核104、106、108上执行的软件,芯片选择电路116可将对地址的请求转换为或路由至存储块110、112、114中的物理存储块。如上所述,芯片选择电路116可基于非易失性存储器中的定义或规范来进行此类转换或路由。内核指令总线地址到存储块110、112、114的物理存储器的映射可在例如设备重置时执行。
图2示出了示例性系统200,其中其他解决方案用于共享存储器。在系统200中,难以预先知道每个内核将需要多少程序存储器。内核204、206、208可共享对存储器分配218、220、222的访问。访问可路由通过总线架构216。内核204、206、208可能需要高速缓存210、212、214。系统100可能不包括此类高速缓存。给定内核可能需要高速缓存和总线架构216被路由到存储器池的各种分配218、220、222。分配218、220、222可具有相同的尺寸。总线架构216可根据需要将每个内核路由到每个分配。然而,该方法引入了性能损失、总线架构216的复杂性,并且需要诸如高速缓存的性能增强技术。总线架构216在尺寸和复杂性上可比芯片选择电路116大几个数量级。此外,总线架构216可动态地改变在内核204、206、208与分配218、220、222之间的路径的路由。
返回图1,用于系统的程序、可执行程序或应用程序的开发者可编译用于在系统100上执行的程序。对于程序存储器,可在编译时静态地确定内核104、106、108中的每一个内核所需的程序存储器的量。程序员可以指定内核104、106、108中的哪一个内核处理特定任务。因此,可在编译时确定给定内核所需的程序存储器的量。数据存储器可取决于外部变量,因此不是固定的,因此在运行时是未知的。因此,系统100可通过将内核映射到存储块来管理程序存储器,同时可单独处理数据存储器。
存储器池102可以是程序存储器的公共池。存储器池102可由各个物理存储块110、112、114构成。在编译时,可将不同数量的存储块110、112、114分配给内核105、106、108中的各种内核。存储块110、112、114中的各个存储块可一起分配在连续或非连续块中。存储块110、112、114中的未使用的存储块可以这样指定。存储块110、112、114中的未使用的存储块可断电、进入睡眠模式或以其他方式关闭。
存储块110、112、114中的每一个存储块的尺寸可以彼此不同。然而,在系统100的特定实例中,存储块110、112、114中的每一个存储块的特定尺寸和数量可以是固定的。系统100的不同实例可包括存储块110、112、114的不同组合(在每个存储块的特定尺寸和数量方面)。然而,为了编译系统100的软件,可能需要知道存储块110、112、114的特定存储器配置。编译过程可考虑存储块110、112、114的组合的不同选项,以在内核104、106、108和存储块110、112、114之间进行更细粒度的存储器分配。
图3是根据本公开的实施方案的用于将存储器池102的部分分配给多个处理器或处理内核104、106、108的系统100的更详细视图。图3可示出创建并编译要加载到目标机器中的程序或应用程序的示例性操作。
编译可在框318中示出。在一个实施方案中,编译可在与系统100的其余部分相同的机器上执行。在另一个实施方案中,编译可在与系统100的其余部分不同的机器上执行。编译可在开发机器上执行。编译可在任何合适的时间执行,包括在内核104、106、108上执行程序之前的很长时间。编译可产生编译代码328。编译代码328可通过任何合适的机制(诸如通过网络或在媒介中)提供给系统100。编译代码328可被存储在长期存储器中,直到其被加载到存储块110、112、114中的程序存储器中以供执行。
框318可包括被配置为确定内核104、106、108中的哪一个内核将使用存储器池102中的哪一个存储块的分配程序320。分配程序320可被包括在用于将代码编译成目标代码的其他应用程序或程序中或者可与用于将代码编译成目标代码的其他应用程序或程序分开。分配程序320可以由计算机可读介质上的指令来实现,该指令在由处理器加载并执行时使分配程序320执行其功能,如本公开中所述。分配程序320还可通过库、脚本、可执行程序、应用程序或其他软件的任何合适组合来实现。分配程序320可被配置为确定内核104、106、108中的每一个内核的程序存储器需求。程序存储器需求可基于将由内核104、106、108中的相应内核执行的代码322、324、326。代码322、324、326可包括用于相应内核104、106、108的编译代码图像。分配程序320可被配置为将来自存储器池102的元件与内核104、106、108匹配。可在编译时确定分配。该分配可基于要在程序员所设计的不同内核104、106、108上执行的特定任务。可以为每个内核104、106、108确定程序存储器需求。在编译图像322、324、326中表达的对内核104、106、108的需求可被分配程序320用于找到最佳存储器分配。如果不同图像不能被放置到物理存储器中,则可能会引起错误。
一旦将整个应用程序加载到目标机器上,就可将代码图像322、324、326加载到存储器池102的不同部分中。分配信息—即,存储器池102的哪个物理存储块映射到哪个内核104、106、108—可存储在系统100的非易失性存储装置330中。
在一个实施方案中,计算分配可通过将存储器池映射到每个内核的存储器映射中的相同地址中的存储器来执行。在这种情况下,分配给给定内核104、106、108的存储器可以是连续的。这可能是相对容易实现的解决方案,因为它可能不需要地址转换。然而,该解决方案可能是有问题的,因为每个内核可能具有相同的引导地址。例如,内核104可能在基地址0x0_0000处需要64k的程序存储器,内核106可能在基地址0x1_0000处需要30k的程序存储器,内核108可能在0x2_0000处需要128k的程序存储器。总需求可以是222k的程序存储器。在这些尺寸和地址的情况下,所有内核都不会有重叠的地址范围。在具有八个32k块的池的情况下,可以为内核104分配前两个块,可以为内核106分配第三个块,可以将第四个块分配为“off”,并且可以将剩余的四个块分配给内核108。在这种情况下,这八个32K块可被视为所有三个内核共享的单个存储器映射中的256K存储器的单个池,因为它们在各自的存储器映射中没有重叠。因此,选择存储块纯粹是分配位的函数(如下图6所示),而不是每个内核生成的地址的函数。可以实现该方案,其中可以仅使用分配位和来自每个内核的地址来决定为每个存储块生成芯片选择,而不转换地址。该解决方案提供了最快的逻辑路径,并且因此提供了最大可能的存储器访问频率。
在另一个实施方案中,计算分配可通过完全灵活的分配来执行。在完全灵活的分配中,分配给给定内核104、106、108的存储器可能不连续。这可能需要地址解码或转换以用于存储器芯片选择断言。这可增加访问存储器池102的给定部分所需的芯片选择电路116中的定时路径。例如,内核104可能在基地址0x0_0000处需要64k的程序存储器,内核106可能在基地址0x1_0000处需要30k的程序存储器,内核108可能在0x2_0000处需要128k的程序存储器。总需求可以是222k的程序存储器。在包括两个64k块和四个32k块的存储器池的情况下,可以为内核104分配第一个64k块,并且可能不需要地址解码或转换。可以为内核106分配32k块中的第一个32k块。可以为内核108分配64k块中的第二个64k块以及第二个32k块和第三个32k块。第四个32k块可以是未使用的。使用此方案,设计人员可能具有完全的灵活性。然而,该具体实施可能略微更复杂,因为芯片选择生成现在必须连同分配位一起从由每个内核生成的地址中减去每个内核的基地址(如图6所示)以便确定芯片选择断言。这使得逻辑路径比连续的存储器映射场景略长,但提供了适应存储器映射的所有排列的灵活性。在另一个实施方案中,计算分配可通过这些方法的组合来执行。存储器可直接映射到最时间先决的内核的存储器映射中。因此,对于该内核处的存储器,寻址可开始于0x00。其他内核可能必须映射到相同的存储器映射中。在此类实施方案中,地址和数据总线可能仅被嗅探,而不是被修改。因此,在地址和数据总线上可能不会经历时序损失。
在编译时,可将块的任何合适的组合分配给给定内核。例如,存储块可以包括2k-8k存储块、2k-16k存储块和2k-64k存储块。如果Core1需要22k的程序存储器,则可以(在编译时)为Core1分配8k存储块中的一个8k存储块和16k存储块中的一个16k存储块。在这种情况下,可能会浪费2k的存储器。也可以另选地为Core1分配两个16k块或单个64k块。这些将产生甚至更多的浪费空间。然而,该分配可考虑其他内核的需求。在这种情况下,Core2和Core3各自可能只需要8k的程序存储器。因此,将两个16k块分配给Core1可能是最佳选择,因为未使用的块会被关闭。
可针对存储器池102的特定具体实施来编译代码。因此,具有不同数量的存储块或不同尺寸的存储块的存储池102的实例将需要不同的编译图像。分配程序320可在编译时针对特定存储器配置。
图4是根据本公开的实施方案的用于将存储器池102的部分分配给多个处理器或处理内核104、106、108的系统100的又一更详细视图。图4可示出一旦程序已被编译、被加载到目标机器中并且正在执行时系统的操作。此外,图4可示出在芯片选择电路116,内核104、106、108与存储块440之间的地址和数据路径。下面的图5可示出芯片选择路径。
如图4所示,地址和数据总线可从内核104、106、108中的每一个内核路由到存储器池102的每个存储块440。为了进行示意性的说明,图4中示出的存储块440的示例多于图1中所示。每个存储块440可被路由到每个内核104、106、108。因此,给定存储块440的尝试访问可由所有内核104、106、108进行。可通过芯片选择电路116来控制对给定存储块440的实际访问的选通或允许。
存储块的尺寸可以根据存储器池102的制造来固定。然而,存储器池102的不同实例可包括存储块440的数量和尺寸的变化。例如,任何单个存储块440可以实现8k至64k之间的存储器。在片上系统(SoC)具体实施或其他解决方案中,存储器可针对存储块440的尺寸进行定制。在这种情况下,存储块440中的不同存储块的尺寸可以彼此不同。相比之下,如果使用市售现成存储器,则存储块440的尺寸可能是均匀的。
每个存储块440可包括主访问端口。每个存储块440还可包括存储器测试端口。在一个实施方案中,每个存储块440可由应用程序分配或专用于内核104、106、108中的单个内核。该分配可在编译时进行,如上所述。然而,就系统100中的物理结构而言,每个内核104、106、108可能需要路由到每个存储块440,如图4所示,以适应由可能被加载的各种软件进行的可能配置和分配。在一个实施方案中,可使用相应存储块440的主访问端口将内核104、106、108中的最快或最高优先级内核直接连接到存储块440中的每一个存储块。在另一个实施方案中,可使用存储器测试端口来将内核104、106、108中的其他内核连接到每个存储块440。
图5是示出根据本公开的实施方案的用于将存储器池102的部分分配给多个处理器或处理内核104、106、108的系统100中的芯片选择路径的更详细视图。
芯片选择电路100可连接到每个相应的存储块440。这些连接可彼此分开。芯片选择电路100可被配置为针对特定访问来确定是否向相应存储块440发出芯片选择信号。可通过查看内核104、106、108中的哪一个内核将被执行或加载来为给定存储块440生成芯片选择信号。与内核104、106、108中的此类内核相关联的存储块440中的一个存储块可被芯片选择电路100发出芯片选择信号。存储块440中的其他存储块可在该特定时刻不接收此类信号。
芯片选择电路100可访问用于在内核104、106、108与存储块440之间的映射的非易失性存储器,以确定将向哪些存储块发送芯片选择信号。在一个实施方案中,可嗅探内核104、106、108中的每一个内核的总线以确定哪些存储块将在给定时刻及时接收芯片选择信号。
图6示出了根据本公开的实施方案的示例性分配指定机制。图6的内容可以示出非易失性存储器330中的内容的组织和表示。例如,图6可以示出32位字。内容可通过例如闪存熔断器、OTP、电子熔断器或其他合适的机制来实现。非易失性存储器可包括可编程存储装置以将给定存储块440分配给给定内核104、106、108。
在图6的示例性32位字中,可以指定十六个存储块。如果系统100包括多于十六个存储块440,则将需要与图6所示不同的具体实施,诸如可保持多于32位的具体实施。
每个存储块440可被分配给给定内核104、106、108。在图6的示例中,可以使用三个内核。因此,可使用两位来指定给定存储块的(440)分配的内核104、106、108。如果系统100包括多于四个内核,则可能需要具有更大容量的表示。可以在编译时确定32位字。每个存储块440可以是RAM面板并且可以是存储器的物理块。内核104、106、108可包括例如DSP内核、应用程序CPU内核和另一个CPU内核。DSP内核的实例可以是这些示例性内核中的最高优先级处理器内核。
图6中示出了十六个可寻址存储块。然而,存储块440可具有不同的尺寸。每个存储块被示为具有可被路由到其他电路的示例性命令或指令值(RAMALLOCXX,其中XX表示存储块标签1…16)。如上所述,该值可用两位来表示。位表示“11”可意味着相应存储块440被分配给DSP内核。位表示“10”可意味着相应存储块440被分配给应用程序内核。位表示“01”可意味着相应存储块440被分配给BLUETOOH(BT)内核。位表示“00”可意味着相应存储块440未被分配给任何DSP内核,并且可被关闭。
来自RAMALLOCXX中的各个RAMALLOCXX的值可以被路由到芯片选择电路116。芯片选择电路116可基于RAMALLOCXX的值向存储块440发出控制信号。
图7是根据本公开的实施方案的芯片选择逻辑部件704和RAM面板702的图示。RAM面板702可以实现上述附图中描述的存储块中的任何存储块。芯片选择逻辑部件704可在芯片选择电路116中或在系统100的另一合适部分中实现。图7的元件可针对系统100中的每个物理存储块进行复制。
RAM面板702可包括主端口或功能端口728。主端口728可包括用于芯片选择/使能(CEN)、地址(A)—A[n:0位]和数据—Q[m:0位]的引脚或输入/输出。CEN的“N”可指示信号为低电平有效的,但在各种实施方案中,可替代地使用高电平有效具体实施。CEN可以是RAM面板702的输入,其向RAM面板702指示其正被寻址并且应当执行读取或写入。地址字段可以是RAM面板702的地址输入的位。当RAM面板702被寻址时,这可以是读取或写入地址。数据字段可以是要读取或写入的数据位。对于读取操作,可以将A[n:0]驱动到特定地址,可以断言CEN(如果CEN为低电平有效,则设置为低电平),并且可以对Q[m:0]进行采样以获得读取数据。尽管示出为单个端口,但主端口728可被实现为具有任何合适数量的引脚或端口。例如,CEN、A和Q中的每一者可利用单独的引脚来实现。可以通过主端口728处理要写入RAM面板702或从RAM面板702读取的数据。在其他解决方案中,诸如图2所示,总线矩阵可将内核中的适当的内核路由到该主端口728,诸如内核106、108、110。
RAM面板702可包括测试端口726。测试端口726可包括用于测试CEN(TCEN)、测试地址—TA[n:0位]和测试数据—TQ[m:0位]的引脚或输入/输出。尽管示出为单个端口,但测试端口726可以利用任何合适数量的引脚或端口来实现。例如,TCEN、TA和TQ中的每一者都可以利用单独的引脚来实现。可通过测试端口726执行自测试,诸如存储器的内置自测试(BIST)或侧面加载或侧面读取(SQI)。BIST可包括用于RAM面板702测试其自身的指令。存储器的侧面加载或侧面读取可包括利用例如调试器写入存储器或从存储器读取。在其他解决方案中,诸如图2所示,系统的内部测试电路可将BIST 714或侧面加载或侧面读取716信号路由到该测试端口726。
如果RAM面板702未被制造成具有主端口728或测试端口726及其上的相关联接口,则设计者可以在内核存储块周围包括包裹器以复制这些特征。包裹器可以利用数字和模拟电路的适当组合来实现。
可以由测试使能(TEN)引脚724设置将由RAM面板702使用的测试端口726或主端口728中的端口的模式。测试端口726和主端口728的组合可构成RAM面板702的包裹器。在功能上,当未断言TEN 724时,主端口728(包括CEN/A[n:0]/Q[m:0])可以处于活动状态(即,RAM面板702实际检查或使用的输入端口/引脚)。此外,当TEN 724是相反的值并被断言时,测试端口726(TCEN/TA[n:0]/TQ[m:0])可以处于活动状态。
在一个实施方案中,系统100可重复使用测试端口726以传递用于一个或多个内核的信号。在另一个实施方案中,系统100可使用于单个内核的信号传递通过主端口728。在另一个实施方案中,可使用于最快或最高优先级内核的信号传递通过主端口728。在另一个实施方案中,可通过测试端口726共享用于其他内核的信号。其他内核可能更慢或者优先级更低。优先级的指定可在编译期间进行。其他内核可以传递通过测试端口726的测试逻辑部件或以其他方式与测试逻辑部件共享路径。优先级内核可直接连接到主端口728。
例如,内核106可表示更快且更高优先级的DSP CPU。内核106可直接连接到主端口728。此外,内核106可以直接连接到系统100中的RAM面板的所有实例的主端口。由内核106发送的信号可足以寻址并读取以及写入数据。其他内核,例如内核108(代表应用程序CPU)和内核110(代表BT CPU)可以共享对测试端口726的访问。此外,内核108和内核110还可与RAM面板702的测试逻辑部件共享对测试端口726的访问。此类测试逻辑部件可包括BIST714或侧面加载/侧面读取716信号。内核108和内核110可(尽管通过选择逻辑部件)连接到系统100中的RAM面板的所有实例的测试端口。
RAM面板702可被配置为基于测试模式使能输入724来使用测试端口726或主端口728。例如,当输入724为高时,可以通过测试端口726进行数据的读取和写入,或者当输入724为低时,可以通过主端口728进行数据的读取和写入。这些选择的逻辑电平可适当地颠倒。当测试端口726或主端口728中的一者被选择时,另一输入可被忽略。
可使用任何合适的机制、电路或逻辑部件来确定是使用测试端口726还是使用主端口728。如果系统100的其他测试部分(未示出)使能了SQI芯片选择710或BIST模式选择712,则可以选择测试端口726。此外,如果将表示为系统100中可用RAM面板编号XX的RAM面板702分配给内核108或内核110,则可以选择测试端口726。否则,RAM面板702可被分配给内核107。在这种情况下,可选择主端口728。逻辑部件704可以包括确定将RAM面板702作为RAM面板XX分配给内核108还是内核110,如在诸如非易失性存储器或图6的机制中所指定的。例如,对于图6的32位字中的给定位对RAMALLOCXX,“11”表示RAM面板XX已分配给DSP(内核106);“10”表示RAM面板XX已分配给应用程序CPU(内核108);“01”表示RAM面板XX已分配给BT CPU(内核110);并且“00”表示RAM面板XX没有分配给任何CPU。使用该示例性具体实施,逻辑部件704可因此包括对来自RAMALLOCXX的输入的XOR 718操作。具体地讲,比较两个位RAMALLOCXX[0]706和RAMALLOCXX[1]710。这些可从图6的熔断器路由。如果这些位中的一个位而非两个位均被设置,则可确定RAM面板XX 702被分配到内核108或内核110中的一个内核,并且因此将使用测试端口726。此外,测试端口726将在系统100已下令进行存储器测试的任何情况下使用,诸如当使能SQI芯片选择710或BIST模式选择712时。因此,XOR 718、SQI芯片选择710和BIST模式选择712的输出可以在OR 720操作中进行比较,并且传递到测试使能端口724。
任何合适的机制、电路或逻辑部件均可用于内核108、内核110、和测试逻辑部件,以共享对测试端口726的访问。例如,内核108、内核110、BIST 714和侧面加载/侧面读取716可以通过多路复用器718、720、722的适当组合一起进行多路复用,以共享对测试端口726的访问。用于多路复用器718、720、722的选择信号可由逻辑部件704或芯片选择电路116控制。用于多路复用器718的选择信号可包括SQI芯片选择710或BIST模式选择712。可以将BIST714或侧面加载/侧面读取716中的适当一者从多路复用器718路由到多路复用器720。如果两者都不使用,则从多路复用器718到多路复用器720的输入可能无关紧要。用于多路复用器718的选择信号可以包括SQI芯片选择710与BIST模式选择712逻辑或。如果这两个都不启用,则多路复用器720可能会将信号从内核108传递到多路复用器722。否则,多路复用器720可以将输入从多路复用器718传递到多路复用器722。复用器720的选择信号可以替代地基于被设置为{1,0}的RAMALLOCXX或其等效物。用于多路复用器722的选择信号可以包括例如设置为{0,1}的RAMALLOCXX或其等效物。如果是,则多路复用器722可能会将内核110信号传递到测试端口726。否则,多路复用器722可能将从多路复用器720接收的输入传递到测试端口726。因此,测试端口726可以在较低优先级内核108、110之间以及此类较低优先级内核108、110与存储器测试逻辑部件之间被多路复用或共享。多路复用可引起小的时序延迟。然而,总体上可以改善对存储器的内核访问。
因此,与如图2所示的典型总线结构方法相比,本公开的实施方案可导致芯片资源的更快且更面积有效的使用。一旦生成代码,就将知道是否将使用给定的存储器元件。如果未使用的存储元件未以其他方式分配给内核,则未使用的存储元件可以断电。本公开的实施方案可用于数据存储器。然而,此类分配将需要由应用程序的创建者开发的软件控制。本公开的实施方案可导致一些存储器浪费。逻辑存储器分区可在粒度方面由物理存储器尺寸来定义和约束。
已根据一个或多个实施方案描述了本公开,并且应当理解,除了明确陈述的那些之外,许多等同物、替代物、变型和修改是可能的并且在本公开的范围内。虽然本公开易受各种修改形式和替代形式的影响,但是其具体示例性实施方案已经在附图中示出并且在本文中详细描述。然而,应当理解,本文对具体示例性实施方案的描述并非旨在将本公开限于本文所公开的特定形式。

Claims (21)

1.一种装置,包括:
多个处理内核,所述多个处理内核包括第一内核和第二内核;
存储器池,所述存储器池包括多个存储块,其中每个存储块包括数据端口和存储器检查端口;
所述第一内核与所述多个存储块中的每个存储块之间的第一连接;
所述第二内核与所述多个存储块中的每个存储块之间的第二连接;和,
芯片选择电路,所述芯片选择电路被配置为在所述第一内核和所述第二内核之间共享对所述存储器池的访问。
2.根据权利要求1所述的装置,其中所述芯片选择电路被配置为通过以下方式共享对所述存储器池的访问:
使得能够通过所述存储块的相应数据端口将数据从所述第一内核访问到所述存储块;以及
使得能够通过所述存储块的相应存储器检查端口将数据从所述第二内核访问到所述存储块。
3.根据权利要求2所述的装置,其中所述芯片选择电路被进一步配置为通过使得能够通过所述存储块的所述相应存储器检查端口将数据从所述第三内核访问到所述存储块来共享在所述多个处理内核中的所述第一内核、所述第二内核和所述第三内核之间对所述存储器池的访问。
4.根据权利要求2-3中任一项所述的装置,其中所述芯片选择电路被进一步配置为使能通过所述存储块的所述相应存储器检查端口从存储器测试电路到所述存储块的访问信号。
5.根据权利要求2-4中任一项所述的装置,其中所述芯片选择电路被进一步配置为基于确定所述第一内核是比所述第二内核更高优先级的内核来使得能够通过相应数据端口从所述第一内核访问数据,并且使得能够通过相应存储器检查端口从所述第二内核访问数据。
6.根据权利要求2-5中任一项所述的装置,其中所述芯片选择电路被进一步配置为同时:
使得能够通过给定存储器的相应数据端口将数据从所述第一内核访问到给定存储块;以及
使得能够通过所述给定存储器的相应存储器检查端口将数据从所述第二内核访问到所述给定存储块。
7.根据权利要求1-6中任一项所述的装置,其中所述存储块具有不同的尺寸。
8.根据权利要求1-7中任一项所述的装置,其中在将由所述第一内核和所述第二内核执行的软件的编译期间确定存储块到相应内核的分配。
9.根据权利要求1-8中任一项所述的装置,其中所述芯片选择电路被进一步配置为:
从编译过程确定存储块到内核的分配;并且
基于确定给定存储块未被分配给内核,关闭所述给定存储块。
10.一种方法,包括:
访问包括第一内核和第二内核的多个处理内核;
访问包括多个存储块的存储器池,其中每个存储块包括数据端口和存储器检查端口;
在所述第一内核与所述多个存储块中的每个存储块之间建立第一连接;
在所述第二内核与所述多个存储块中的每个存储块之间建立第二连接;以及,
共享在所述第一内核和所述第二内核之间对所述存储器池的访问。
11.根据权利要求10所述的方法,还包括通过以下方式共享对所述存储器池的访问:
使得能够通过所述存储块的相应数据端口将数据从所述第一内核访问到所述存储块;以及
使得能够通过所述存储块的相应存储器检查端口将数据从所述第二内核访问到所述存储块。
12.根据权利要求11所述的方法,还包括通过使得能够通过所述存储块的所述相应存储器检查端口将数据从所述第三内核访问到所述存储块来共享在所述多个处理内核中的所述第一内核、所述第二内核和所述第三内核之间对所述存储器池的访问。
13.根据权利要求11-12中任一项所述的方法,还包括使能通过所述存储块的所述相应存储器检查端口从存储器测试电路到所述存储块的访问信号。
14.根据权利要求11-13中任一项所述的方法,还包括基于确定所述第一内核是比所述第二内核更高优先级的内核来使得能够通过相应数据端口从所述第一内核访问数据,并且使得能够通过相应存储器检查端口从所述第二内核访问数据。
15.根据权利要求11-14中任一项所述的方法,还包括,同时:
使得能够通过所述给定存储器的相应数据端口将数据从所述第一内核访问到所述给定存储块;以及
使得能够通过所述给定存储器的相应存储器检查端口将数据从所述第二内核访问到所述给定存储块。
16.根据权利要求10-15中任一项所述的方法,其中所述存储块具有不同的尺寸。
17.根据权利要求10-16中任一项所述的方法,还包括在将由所述第一内核和所述第二内核执行的软件的编译期间确定存储块到相应内核的分配。
18.根据权利要求10-17中任一项所述的方法,还包括:
从编译过程确定存储块到内核的分配;以及
基于确定给定存储块未被分配给内核,关闭所述给定存储块。
19.一种方法,包括:
将源指令编译成将由第一内核和第二内核执行的目标代码以在目标机器上操作;
识别所述第一内核和所述第二内核的程序存储器需求;
识别所述目标机器上可用的多个存储块中的每一个存储块的尺寸和数量;
基于所述程序存储器需求以及所述存储块的尺寸和数量,将所述存储块中的各个存储块分配给所述第一内核或所述第二内核。
20.根据权利要求19所述的方法,还包括根据权利要求10-18所述的方法中的任一种方法的步骤。
21.一种包括指令的非暂态机器可读介质,所述指令在由处理器加载并执行时,将所述处理器配置为执行根据权利要求10-20所述的所述方法中的任一种方法。
CN201980029698.0A 2018-05-08 2019-05-01 用于多内核系统的存储器池分配 Active CN112074820B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202410055096.5A CN117873912A (zh) 2018-05-08 2019-05-01 用于多内核系统的存储器池分配

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/974,480 US10635494B2 (en) 2018-05-08 2018-05-08 Memory pool allocation for a multi-core system
US15/974,480 2018-05-08
PCT/US2019/030111 WO2019217166A1 (en) 2018-05-08 2019-05-01 Memory pool allocation for a multi-core system

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN202410055096.5A Division CN117873912A (zh) 2018-05-08 2019-05-01 用于多内核系统的存储器池分配

Publications (2)

Publication Number Publication Date
CN112074820A true CN112074820A (zh) 2020-12-11
CN112074820B CN112074820B (zh) 2024-01-05

Family

ID=66484211

Family Applications (2)

Application Number Title Priority Date Filing Date
CN202410055096.5A Pending CN117873912A (zh) 2018-05-08 2019-05-01 用于多内核系统的存储器池分配
CN201980029698.0A Active CN112074820B (zh) 2018-05-08 2019-05-01 用于多内核系统的存储器池分配

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN202410055096.5A Pending CN117873912A (zh) 2018-05-08 2019-05-01 用于多内核系统的存储器池分配

Country Status (5)

Country Link
US (2) US10635494B2 (zh)
CN (2) CN117873912A (zh)
DE (1) DE112019002336T5 (zh)
TW (1) TWI803596B (zh)
WO (1) WO2019217166A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022188887A1 (zh) * 2021-03-12 2022-09-15 华为技术有限公司 实现内存共享控制的方法、设备、计算机设备和系统
WO2023168817A1 (zh) * 2022-03-11 2023-09-14 长鑫存储技术有限公司 存储芯片的测试方法、装置、存储介质与电子设备

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11249805B2 (en) 2020-05-26 2022-02-15 Pensando Systems, Inc. Methods and systems for hardware-based memory resource allocation
US11275669B2 (en) 2020-07-09 2022-03-15 Pensando Systems, Inc. Methods and systems for hardware-based statistics management using a general purpose memory

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020056030A1 (en) * 2000-11-08 2002-05-09 Kelly Kenneth C. Shared program memory for use in multicore DSP devices
US20070070795A1 (en) * 2005-09-28 2007-03-29 Hynix Semiconductor Inc. Multi-port memory device with serial input/output interface
US20080016279A1 (en) * 2006-07-13 2008-01-17 Clark Leo J Data Processing System, Processor and Method of Data Processing in which Local Memory Access Requests are Serviced by State Machines with Differing Functionality
JP2012208975A (ja) * 2011-03-29 2012-10-25 Renesas Electronics Corp 半導体装置
US20120290755A1 (en) * 2010-09-28 2012-11-15 Abhijeet Ashok Chachad Lookahead Priority Collection to Support Priority Elevation
CN104714893A (zh) * 2013-12-16 2015-06-17 国际商业机器公司 用于缩放垃圾收集的方法和系统
CN106575284A (zh) * 2014-09-25 2017-04-19 英特尔公司 用于内核模块的多核存储器数据记录器
CN107918566A (zh) * 2016-10-10 2018-04-17 爱思开海力士有限公司 存储器系统及其操作方法

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6058460A (en) 1996-06-28 2000-05-02 Sun Microsystems, Inc. Memory allocation in a multithreaded environment
US6226720B1 (en) * 1998-12-11 2001-05-01 International Business Machines Corporation Method for optimally configuring memory in a mixed interleave system
US6480941B1 (en) * 1999-02-23 2002-11-12 International Business Machines Corporation Secure partitioning of shared memory based multiprocessor system
US7380085B2 (en) * 2001-11-14 2008-05-27 Intel Corporation Memory adapted to provide dedicated and or shared memory to multiple processors and method therefor
US6954821B2 (en) * 2003-07-31 2005-10-11 Freescale Semiconductor, Inc. Crossbar switch that supports a multi-port slave device and method of operation
US7257799B2 (en) * 2003-11-14 2007-08-14 Lsi Corporation Flexible design for memory use in integrated circuits
KR101414774B1 (ko) * 2007-08-29 2014-08-07 삼성전자주식회사 멀티포트 반도체 메모리 장치
US8490111B2 (en) 2011-04-16 2013-07-16 Throughputer, Inc. Efficient network and memory architecture for multi-core data processing system
US9571412B2 (en) * 2014-11-21 2017-02-14 Cavium, Inc. Systems and methods for hardware accelerated timer implementation for openflow protocol
US9798886B2 (en) * 2015-07-08 2017-10-24 International Business Machines Corporation Bio-medical sensing platform
WO2017011223A1 (en) 2015-07-10 2017-01-19 Rambus, Inc. Thread associated memory allocation and memory architecture aware allocation

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020056030A1 (en) * 2000-11-08 2002-05-09 Kelly Kenneth C. Shared program memory for use in multicore DSP devices
US20070070795A1 (en) * 2005-09-28 2007-03-29 Hynix Semiconductor Inc. Multi-port memory device with serial input/output interface
US20080016279A1 (en) * 2006-07-13 2008-01-17 Clark Leo J Data Processing System, Processor and Method of Data Processing in which Local Memory Access Requests are Serviced by State Machines with Differing Functionality
US20120290755A1 (en) * 2010-09-28 2012-11-15 Abhijeet Ashok Chachad Lookahead Priority Collection to Support Priority Elevation
JP2012208975A (ja) * 2011-03-29 2012-10-25 Renesas Electronics Corp 半導体装置
CN104714893A (zh) * 2013-12-16 2015-06-17 国际商业机器公司 用于缩放垃圾收集的方法和系统
CN106575284A (zh) * 2014-09-25 2017-04-19 英特尔公司 用于内核模块的多核存储器数据记录器
CN107918566A (zh) * 2016-10-10 2018-04-17 爱思开海力士有限公司 存储器系统及其操作方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022188887A1 (zh) * 2021-03-12 2022-09-15 华为技术有限公司 实现内存共享控制的方法、设备、计算机设备和系统
WO2023168817A1 (zh) * 2022-03-11 2023-09-14 长鑫存储技术有限公司 存储芯片的测试方法、装置、存储介质与电子设备

Also Published As

Publication number Publication date
US11461139B2 (en) 2022-10-04
TWI803596B (zh) 2023-06-01
US20190347133A1 (en) 2019-11-14
DE112019002336T5 (de) 2021-03-04
CN112074820B (zh) 2024-01-05
US10635494B2 (en) 2020-04-28
TW201947397A (zh) 2019-12-16
WO2019217166A1 (en) 2019-11-14
US20200233714A1 (en) 2020-07-23
CN117873912A (zh) 2024-04-12

Similar Documents

Publication Publication Date Title
CN112074820B (zh) 用于多内核系统的存储器池分配
US8190839B2 (en) Using domains for physical address management in a multiprocessor system
US8041920B2 (en) Partitioning memory mapped device configuration space
US6920521B2 (en) Method and system of managing virtualized physical memory in a data processing system
US11048588B2 (en) Monitoring the operation of a processor
US20040073765A1 (en) Method and system of managing virtualized physical memory in a memory controller and processor system
US6904490B2 (en) Method and system of managing virtualized physical memory in a multi-processor system
US9367478B2 (en) Controlling direct memory access page mappings
CN112955880B (zh) 用于处理片上系统中的地址解码的装置和方法
US7882327B2 (en) Communicating between partitions in a statically partitioned multiprocessing system
JP2001043180A (ja) マイクロプロセッサおよびそのための記憶装置
JP2018136922A (ja) メモリープールを有するコンピューティングシステムのためのメモリー分割
KR102142509B1 (ko) 고체 상태 디바이스를 위한 다중 어드레스 레지스터를 위한 장치 및 방법
CN115176236A (zh) 用于存储管理的系统和方法
KR102658600B1 (ko) 디바이스를 디버깅할 때 메타데이터에 액세스하기 위한 장치 및 방법
US20220318015A1 (en) Enforcing data placement requirements via address bit swapping
US20190095365A1 (en) Techniques for reducing accelerator-memory access costs in platforms with multiple memory channels
US9990282B2 (en) Address space expander for a processor
US20240037028A1 (en) Software sharing across multiple cores
CN117742962A (zh) 一种虚拟机资源的管理方法、装置、设备及存储介质
JP2016057797A (ja) 診断プログラム実行装置、診断プログラム実行システム、診断プログラム実行方法、及び、診断プログラム実行プログラム
JP5331709B2 (ja) 試験装置
KR20200116471A (ko) 데이터 처리장치의 어드레스 변환
CN117472560A (zh) 跨多个内核的软件共享
JP2008097135A (ja) メモリ制御装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant