CN112395217A - 管理存储器分配的方法、系统、制品和装置 - Google Patents

管理存储器分配的方法、系统、制品和装置 Download PDF

Info

Publication number
CN112395217A
CN112395217A CN202010529912.3A CN202010529912A CN112395217A CN 112395217 A CN112395217 A CN 112395217A CN 202010529912 A CN202010529912 A CN 202010529912A CN 112395217 A CN112395217 A CN 112395217A
Authority
CN
China
Prior art keywords
memory
platform
virtual address
available memory
flag
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
Application number
CN202010529912.3A
Other languages
English (en)
Inventor
齐吉·沃尔特
阿纳特·海尔珀
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of CN112395217A publication Critical patent/CN112395217A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0871Allocation or management of cache space
    • 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/0284Multiple user address space allocation, e.g. using different base addresses
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0873Mapping of cache memory to specific storage devices or parts thereof
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/109Address translation for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management
    • 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
    • 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/5022Mechanisms to release resources

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Memory System (AREA)

Abstract

公开了管理存储器分配的方法、系统、制品和装置。示例装置包括存储器检测器,用于就可用存储器扫描平台。示例装置还包括存储器大小检查器,用于取回与关联于平台的可用存储器设备相关联的虚拟存储器布局并且确定各个可用存储器设备的虚拟地址边界是否在其间生成虚拟地址间隙。示例装置还包括地址指派器,用于重指派各个可用存储器设备中的至少一者的虚拟地址以去除虚拟地址间隙。

Description

管理存储器分配的方法、系统、制品和装置
技术领域
本公开概括而言涉及存储器指派,更具体而言涉及管理存储器分配的方法、系统、制品和装置。
背景技术
近年来,随着计算设备被预期在相对减少量的时间中处理相对更大数目的任务,存储器使用量已增加了。便笺存储器(scratchpad memory)具有有限的容量,但经常与处理器紧密耦合,这允许了对数据的迅速且确定性的取回。与之对比,缓存存储器以更长的取回时间为代价提供了多得多的存储。虽然便笺和缓存存储器两者的位置都比诸如动态随机访问存储(dynamic random-access storage,DRAM)之类的更大的大容量存储更靠近处理器,但它们传统上是彼此分离的。
发明内容
根据本公开的实施例,提供了一种减少存储器访问操作时间的装置,该装置包括:存储器检测器,用于就可用存储器设备扫描平台;存储器大小检查器,用于:取回与所述可用存储器设备相关联的虚拟存储器布局,所述可用存储器设备与所述平台相关联;并且确定各个所述可用存储器设备的虚拟地址边界是否在其间生成虚拟地址间隙;以及地址指派器,用于重指派各个所述可用存储器设备中的第一可用存储器设备的虚拟地址以去除所述虚拟地址间隙。
根据本公开的实施例,提供了一种减少存储器访问操作时间的计算机实现的方法,该方法包括:通过利用至少一个处理器执行指令来就可用存储器设备扫描平台;通过利用所述至少一个处理器执行指令来取回与所述可用存储器设备相关联的虚拟存储器布局,所述可用存储器设备与所述平台相关联;通过利用所述至少一个处理器执行指令来确定各个所述可用存储器设备的虚拟地址边界是否在其间生成虚拟地址间隙;并且通过利用所述至少一个处理器执行指令来重指派各个所述可用存储器设备中的第一可用存储器设备的虚拟地址以去除所述虚拟地址间隙。
根据本公开的实施例,提供了一种计算机可读存储介质,包括计算机可读指令,所述指令当被执行时使得至少一个处理器至少执行以下操作:就可用存储器设备扫描平台;取回与所述可用存储器设备相关联的虚拟存储器布局,所述可用存储器设备与所述平台相关联;确定各个所述可用存储器设备的虚拟地址边界是否在其间生成虚拟地址间隙;并且重指派各个所述可用存储器设备中的第一可用存储器设备的虚拟地址以去除所述虚拟地址间隙。
根据本公开的实施例,提供了一种用于减少存储器访问操作时间的设备,该设备包括:扫描装置,用于就可用存储器设备扫描平台;检查装置,用于:取回与所述可用存储器设备相关联的虚拟存储器布局,所述可用存储器设备与所述平台相关联;并且确定各个所述可用存储器设备的虚拟地址边界是否在其间生成虚拟地址间隙;以及指派装置,用于重指派各个所述可用存储器设备中的第一可用存储器设备的虚拟地址以去除所述虚拟地址间隙。
附图说明
图1是包括片上系统的示例平台的示意性图示。
图2A和图2B是便笺和缓存存储器的示例虚拟存储器映射布局的图示。
图3是根据本公开的教导的用于分析和指派可用存储器的示例存储器分析器的示意性图示。
图4-图5是表示可被执行来实现图1和图3的示例存储器分析器以管理存储器分配的示例机器可读指令的流程图。
图6是被构造来执行图4-图5的指令以实现图1和图3的示例存储器分析器的示例处理平台的框图。
附图不是按比例的。一般而言,相同的标号将在各幅图和伴随的书面描述的各处用于指代相同或相似的部件。本文中在识别可被分开提及的多个元素或组件时使用描述语“第一”、“第二”、“第三”等等。除非另有指明或者基于其使用上下文另有理解,否则这种描述语并不打算灌输优先级、物理顺序或者列表中的布置或者时间上的排序的任何含义,而只是用作用于分开提及多个元素或组件的标签,以便容易理解公开的示例。在一些示例中,描述语“第一”在具体实施方式中可用于提及某一元素,而同一元素在权利要求中可用不同的描述语来提及,例如“第二”或“第三”。在这种情况中,应当理解这种描述语只是为了容易引用多个元素或组件而使用的。
具体实施方式
不同类型的存储器与不同的属性相关联的,例如存储器大小和数据操作(例如,取回、存储等等)时间。就本文使用的而言,便笺存储器是与其他类型的存储器相比表现出相对快速的操作时间的一类存储器。就本文使用的而言,缓存存储器是与便笺存储器相比表现出相对较慢的操作时间的一类存储器。示例便笺存储器和一个或多个其他类型的缓存存储器位于平台、芯片组上和/或是片上系统(system-on-chip,SOC)组装件的一部分。在一些示例中,其他类型的存储器位于经由一个或多个总线通信技术可访问的一个或多个单独结构上。关于大小,缓存存储器经常具有比便笺存储器相对更大的存储容量。然而,具有相对更大容量的更大的缓存存储器经常与更高的访问时延相关联(例如,写入请求、读取请求、更换请求等等),这是部分由于缓存存储器的位置更远离处理器而引起的。理想情况下,被经常使用并且因此要求迅速取回时间的数据缓冲区(例如,要求诸如写入请求、读取请求等等之类的存储器操作的数据部分)被放置在与处理器最接近的兼容存储器空间(例如,便笺存储器)中以减少处理器的计算任务期间的延迟。
图1图示了包括示例SOC 102的示例平台100。就本文使用的而言,示例平台100以非限制性方式包括处理器和存储器。示例平台100可例如是SOC、服务器、个人计算机、工作站、自学习机器(例如,神经网络)、移动设备(例如,蜂窝电话、智能电话、诸如iPadTM之类的平板设备)、个人数字助理(personal digital assistant,PDA)、互联网家电、DVD播放器、CD播放器、数字视频记录器、蓝光播放器、游戏机、个人视频记录器、机顶盒、耳机或其他可穿戴设备或者任何其他类型的计算设备。在图1的图示示例中,SOC 102包括通信地连接到便笺存储器106和示例L1缓存108的示例处理器104。示例SOC 102包括示例存储器管理单元(memory management unit,MMU)110来促进存储器管理操作,例如对随机访问存储器(random access memory,RAM)、不同类型的缓存存储器、便笺存储器的使用和/或示例处理器104的其他存储器访问需求。图1的上述结构和/或软件(取决于管理存储器分配的实现方式)由示例SOC总线112通信地连接(和/或互连)。如上所述,示例便笺存储器106与示例L1缓存108相比表现出相对较低的时延特性,并且通常比示例L1缓存108位置更靠近示例处理器104。更一般而言,SOC,例如图1的示例SOC 102,与中央处理单元相比经常是略大的,但由于更高的集成水平而具有更低功率消耗的附加益处。这使得SOC对于移动计算是优选的,例如数据的传输。
在一些示例中,SOC 102的可用存储器不限于图1的示例便笺存储器106和示例L1缓存存储器108,因为一个或多个额外的和/或替换的存储器结构可能是可用的。在一些示例中,SOC 102通信地连接到示例L2缓存存储器114、动态随机访问存储器(dynamic randomaccess memory,DRAM)116和/或(一个或多个)其他存储器结构(未示出)。在一些示例中,存储器在本文中被称为存储器设备(例如,DRAM设备、便笺存储器设备等等)。如下文更详细描述的,示例平台包括示例存储器分析器300来管理存储器分配。在一些示例中,存储器分析器300通信地连接到示例SOC 102(例如,经由一个或多个通信线路/总线),而在一些示例中存储器分析器300被集成到示例SOC 102中。
存储器性能取决于便笺和缓存存储器的不同配置以及要存储的数据(例如,数据缓冲区)的大小。传统上,缓存和便笺虚拟存储器地址是非连续的。图2A图示了示例虚拟存储器布局200,其中缓存存储器和便笺存储器占用非连续虚拟存储器指派(例如,由于其间的非占用地址)。在图2的图示示例中,虚拟存储器布局200包括已被指派给便笺存储器的示例第一组虚拟存储器地址202、尚未被指派的示例第二组虚拟存储器地址204、以及已被指派给缓存存储器(例如,L1缓存、L2缓存等等)的示例第三组虚拟存储器地址206。就本文使用的而言,虚拟地址边界指的是两组虚拟存储器地址之间(例如,示例第一组虚拟存储器地址202和示例第二组虚拟存储器地址204之间)的分隔点。此外,虚拟地址间隙指的是尚未被指派的一组虚拟存储器地址(例如,示例第二组虚拟存储器地址204)。在一些示例中,虚拟存储器指派是由示例平台100的一个或多个组件在加电期间指派的,例如由示例MMU 110指派。在一些示例中,虚拟存储器指派以偶然方式,或者以随机方式发生。
在示例平台100的操作期间,数据缓冲区(例如,向/由示例处理器104作出的操纵或分配数据的请求)可能不能装入与示例第一组虚拟存储器地址202相关联的可用便笺存储器内。这种情况可被示例平台100以不同方式来处理。在一些示例中,MMU 110将数据缓冲区完全放置在与缓存存储器相关联的第三组存储器地址206内。然而,这个方案过度利用了缓存内的有限存储器并且未能利用特定的存储器类型及其相应的特性。由示例平台100(例如,由示例MMU 110)执行的第二种方案将数据缓冲区划分成(a)可装入与便笺存储器相关联的可用第一组虚拟存储器地址202内的部分以及划分到(b)“溢出”到缓存存储器中的示例第三组虚拟存储器地址206。虽然此示例方案最优地利用了与便笺存储器相关联的特定有益特性,但其要求特殊处理(例如,软件处理),从而增大了复杂度并且可能限制便笺存储器的益处。例如,响应于检测到溢出状况,示例平台100(和/或其组件)必须计算从便笺地址的边界跳跃到缓存地址的入口边界的偏移虚拟地址。换句话说,示例平台100必须计算跳过尚未被指派给任何存储器的示例第二组虚拟存储器地址204的偏移虚拟地址。
本文公开的示例促进了便笺存储器和缓存存储器的无缝映射以避免和/或以其他方式抑制尝试执行与跳跃(例如,跳过示例第二组虚拟存储器地址204)相关联的地址计算的平台资源。然而,要理解,可用存储器设备的虚拟存储器布局在一些示例中是预配置的,没有虚拟地址间隙。这种预配置的虚拟存储器布局从而允许了平台的更高效存储器操作。图2B图示了示例虚拟存储器布局250,其中缓存存储器和便笺存储器占用连续的虚拟存储器指派。在图2B的图示示例中,虚拟存储器布局250包括尚未被指派的示例第一组虚拟存储器地址252(例如,虚拟地址间隙)、已被指派给便笺存储器(例如,便笺存储器设备)的示例第二组虚拟存储器地址254以及已被指派给缓存存储器(例如,缓存存储器设备,例如L1缓存设备、L2缓存设备等等)的示例第三组虚拟存储器地址256。虽然图2B的图示示例示出了虚拟存储器布局250的存储器类型的特定顺序,但本文公开的示例不限于此。在示例虚拟存储器布局250中可表示存储器的其他顺序、类型和/或数量,而没有限制。就本文使用的而言,便笺和缓存存储器的无缝映射确保了各个虚拟地址是连续的。这允许了对便笺和缓存存储器两者的最优存储利用,同时仍使用简单的软件取回方法,确保了保持便笺存储器的益处。这还防止了对于要由示例平台100执行的对虚拟存储器地址的一个或多个计算的需求(防止了虚拟存储器偏移计算或跳跃地址计算)。
图3是(例如,在SOC中)管理存储器的分配的示例存储器分析器300的示意性图示。如上所述,示例存储器分析器300可位于示例平台100中,例如在示例SOC 102内,或者通信地位于示例SOC 102外部。然而,其他示例配置包括但不限于示例存储器分析器300集成在示例SOC 102内、集成在芯片组内或者经由SOC外部的总线通信地连接到SOC。
在图3的图示示例中,存储器分析器300通信地连接到示例输入数据缓冲区302和易失性存储器304,该易失性存储器304包括示例便笺存储器306和示例缓存存储器308。图3的示例存储器分析器300还包括示例存储器检测器310、示例存储器大小检查器312和示例地址指派器314。图3的上述结构和/或软件(取决于管理存储器分配的实现方式)由示例存储器分析器总线316通信地连接(和/或互连)。
在操作中,示例存储器检测器310取回和/或以其他方式接收要求一个或多个存储器操作的可用数据(例如,要存储的数据、要读取的数据等等)。在一些示例中,数据(本文中有时称为数据缓冲区)要被存储到/读取自示例易失性存储器304。示例存储器检测器310确定与示例平台100相关联的可用虚拟存储器(本文中称为候选存储器)。在一些示例中,存储器检测器310就存储器存储设备扫描平台100,而在其他示例中可用存储器存储设备已经被映射和/或以其他方式指派在虚拟存储器中(例如,具有按符合图2A或图2B的图示示例的方式的虚拟存储器地址映射)。在一些示例中,平台被制造有预配置的一组存储器设备,在此情况下这种存储器设备已经被映射到虚拟存储器布局。然而,在平台经历硬件变化的情况下,例如最终用户添加到存储器(例如,更多DRAM)和/或存储器的变化和/或去除,则示例存储器检测器310响应于这种平台变化。
响应于示例存储器检测器310识别出与平台相关联的候选存储器,示例存储器大小检查器312获得存储器配置信息。在一些示例中,存储器大小检查器312取回与示例平台100相关联的现有虚拟存储器布局,例如图2A的示例虚拟存储器布局200或者图2B的示例虚拟存储器布局250。示例存储器大小检查器312确定两个或更多个存储器设备是否具有非连续的相应虚拟地址。在图2A的示例存储器布局200的情况下,示例地址指派器314将示例第一组虚拟存储器地址202重指派为与示例第三组虚拟存储器地址206连续。在一些示例中,示例地址指派器314在至少一个存储器设备的虚拟地址(例如,示例第一组虚拟存储器地址202)的第一重指派之后设置第一标志。一旦示例便笺存储器306的存储器地址与示例缓存存储器308(例如图2B)的存储器地址连续,示例存储器检测器310就实现存储器分配。
在存储器分配被示例存储器检测器310实现之后,示例存储器大小检查器312确定候选存储器和示例输入数据缓冲区302之间的兼容性。在一些示例中,“兼容性”指的是就输入数据数量而言的存储器大小特性,其中候选存储器(例如,便笺存储器)和示例输入数据缓冲区302由于大小的原因是不兼容的(例如,输入数据超过便笺存储器的存储容量)。在这种情况下,示例存储器检测器310识别与平台相关联的新的候选存储器,直到找到兼容的候选存储器为止。在一些示例中,存储器检测器310识别可容纳(例如,存储)输入数据缓冲区内容的全部或一部分的与平台相关联的至少一个新的或替换的存储器。例如,如果第一候选存储器(例如,便笺)被示例存储器检测器310识别,但便笺没有大到足以容纳输入数据缓冲区内容的全部,则存储器检测器310识别一个或多个额外的存储器来存储输入数据缓冲区内容的剩余部分。换句话说,额外存储器和便笺存储器当被组合时可容纳输入数据的数量/大小。示例地址指派器314与示例MMU 110一起工作来将示例输入数据缓冲区302指派到候选存储器。在一些示例中,存在多个示例输入数据缓冲区302,它们在每一者已被指派到候选存储器之后被示例存储器检测器310接连检测到。
在一些示例中,(a)至少一个存储器操作请求已发生,其中(b)示例存储器检测器310已识别了与平台100相关联的候选存储器,并且(c)虚拟存储器地址已被指派来促进从第一存储器到第二存储器(或更多)的连续值(例如,与第一存储器设备相关联的第一存储器地址与第二存储器地址在数值上是接连的,并且第二存储器设备与第三存储器地址在数值上是接连的,等等)。换句话说,在一些示例中,存储器分析器300已分析了示例平台100以按照符合示例图2B的方式生成了示例虚拟存储器映射,其中虚拟地址是连续的。在这种情况下,示例存储器分析器确定存储器操作是否已经发生并且确定这种重指派是否已发生。如果是,则重复示例平台100的这种分析是不必要的。在一些示例中,存储器分析器300在这种分析已经发生的情况下设置标志,并且如果是,则防止这种重分析,以图节约计算资源和/或提高存储器操作发生的速度。
在示例存储器分析器300确定示例平台100的分析已经发生并且相应的存储器重映射已发生来使得虚拟存储器地址以接连方式存在(例如,参见图2B)的情况下,则示例存储器分析器300防止、绕过和/或以其他方式抑制一个或多个默认处理器指令操作来计算跳跃偏移地址。换言之,典型处理器固件或MMU 110固件包括默认的指令集合来生成允许不同的存储器设备存储/访问数据缓冲区内容的偏移跳跃计算(例如,以适应当存储器设备之一没有大到足以存储所有输入数据时的数据溢出)。然而,因为这种虚拟地址已经被以连续方式重配置,所以这种跳跃计算不再是必要的并且可被禁止以节约响应于存储器操作请求的运行时实例期间的计算资源。
虽然在图1、图2A、2B和图3中图示了实现图1的平台100和图3的示例存储器分析器300的示例方式,但图1、图2A、2B和图3中所示的元件、过程和/或设备中的一个或多个可被组合、划分、重布置、省略、消除和/或以任何其他方式实现。另外,示例SOC 102、示例处理器104、示例便笺106、示例L1缓存108、示例MMU 110、示例平台100、示例存储器检测器310、示例存储器大小检查器312、示例地址指派器314和/或更一般而言图1和图3的示例存储器分析器300可由硬件、软件、固件和/或硬件、软件和/或固件的任何组合实现。此外,示例SOC102、示例处理器104、示例便笺106、示例L1缓存108、示例MMU 110、示例平台100、示例存储器检测器310、示例存储器大小检查器312、示例地址指派器314和/或更一般而言图1和图3的示例存储器分析器300可由硬件、软件、固件和/或硬件、软件和/或固件的任何组合实现。从而,例如,示例SOC 102、示例处理器104、示例便笺106、示例L1缓存108、示例MMU 110、示例平台100、示例存储器检测器310、示例存储器大小检查器312、示例地址指派器314和/或更一般而言图1和图3的示例存储器分析器300的任何一者可由一个或多个模拟或数字电路、逻辑电路、(一个或多个)可编程处理器、(一个或多个)可编程控制器、(一个或多个)图形处理单元(graphics processing unit,GPU)、(一个或多个)数字信号处理器(digitalsignal processor,DSP)、(一个或多个)专用集成电路(application specificintegrated circuit,ASIC)、(一个或多个)可编程逻辑器件(programmable logicdevice,PLD)和/或(一个或多个)现场可编程逻辑器件(field programmable logicdevice,FPLD)实现。此外,示例SOC 102、示例处理器104、示例便笺106、示例L1缓存108、示例MMU 110、示例平台100、示例存储器检测器310、示例存储器大小检查器312、示例地址指派器314和/或更一般而言图1和图3的示例存储器分析器300的任何一者可由一个或多个模拟或数字电路、逻辑电路、(一个或多个)可编程处理器、(一个或多个)可编程控制器、(一个或多个)图形处理单元(GPU)、(一个或多个)数字信号处理器(DSP)、(一个或多个)专用集成电路(ASIC)、(一个或多个)可编程逻辑器件(PLD)和/或(一个或多个)现场可编程逻辑器件(FPLD)实现。当读取本专利的装置或系统权利要求的任何一者来覆盖纯软件和/或固件实现方式时,示例SOC 102、示例处理器104、示例便笺106、示例L1缓存108、示例MMU 110、示例平台100、示例存储器检测器310、示例存储器大小检查器312、示例地址指派器314和/或更一般而言图1和图3的示例存储器分析器300的至少一者在此被明确定义为包括包含该软件和/或固件的非暂态计算机可读存储设备或存储盘,例如存储器、数字多功能盘(digitalversatile disk,DVD)、致密盘(compact disk,CD)、蓝光盘等等。此外,除了图1和图3中所示的那些以外或者取代图1和图3中所示的那些,图1的示例平台100和/或图3的示例存储器分析器300可包括一个或多个元件、过程和/或设备,和/或可包括图示的元件、过程和设备的任何者或全部中的多于一者。就本文使用的而言,短语“与…通信”(包括其变体)涵盖了直接通信和/或通过一个或多个中间组件的间接通信,并且不要求直接物理(例如,有线)通信和/或不断的通信,而是还包括按周期性间隔、调度的间隔、非周期性间隔和/或一次性事件的选择性通信。
表示用于实现图1的示例平台100和/或图1和图3的示例存储器分析器300的示例硬件逻辑、机器可读指令、硬件实现状态机和/或这些的任何组合的流程图在图4-图5中示出。机器可读指令可以是供计算机处理器执行的一个或多个可执行程序或者可执行程序的(一个或多个)部分,所述计算机处理器例如是下文联系图6论述的示例处理器平台600中所示的处理器612。该程序可体现在存储于诸如CD-ROM、软盘、硬盘驱动器、DVD、蓝光盘或与处理器612相关联的存储器之类的非暂态计算机可读存储介质上的软件,但整个程序和/或其一些部分可替换为由除了处理器612以外的设备执行和/或体现在固件或专用硬件中。另外,虽然是参考图4-图5中所示的流程图来描述示例程序的,但可替换使用实现示例平台100和示例存储器分析器300的许多其他方法。例如,块的执行顺序可被改变,和/或描述的块中的一些可被改变、消除或组合。额外地或者替换地,任何或所有块可由被构造为执行相应的操作而不执行软件或固件的一个或多个硬件电路(例如,分立和/或集成模拟和/或数字电路、FPGA、ASIC、比较器、运算放大器(op-amp)、逻辑电路等等)实现。
本文描述的机器可读指令可按以下格式中的一个或多个来存储:压缩格式、加密格式、分段格式、编译格式、可执行格式、封装格式,等等。如本文所述的机器可读指令可被存储为可被利用来创建、制造和/或产生机器可执行指令的数据(例如,指令的部分、代码、代码的表示等等)。例如,机器可读指令可被分段并且存储在一个或多个存储设备和/或计算设备(例如,服务器)上。机器可读指令可要求安装、修改、改编、更新、组合、补充、配置、解密、解压缩、解包、分发、重指派、编译等等中的一个或多个以便使得它们可被计算设备和/或其他机器直接可读、可解释和/或可执行。例如,机器可读指令可被存储为多个部分,这些部分被单独压缩、加密并存储在分开的计算设备上,其中这些部分当被解密、解压缩和组合时形成实现例如本文所述那种的程序的一组可执行指令。
在另一示例中,机器可读指令可被存储在如下状态中:在该状态中它们可被计算机读取,但要求添加库(例如,动态链接库(dynamic link library,DLL))、软件开发套件(software development kit,SDK)、应用编程接口(application programminginterface,API)等等以便在特定的计算设备或其他设备上执行这些指令。在另一示例中,在机器可读指令和/或相应的(一个或多个)程序可被全部或部分执行之前,机器可读指令可能需要被配置(例如,存储设置、输入数据、记录网络地址等等)。从而,公开的机器可读指令和/或相应的(一个或多个)程序打算涵盖这种机器可读指令和/或(一个或多个)程序,无论这些机器可读指令和/或(一个或多个)程序在被存储时或以其他方式在休息或在途时的特定格式或状态如何。
本文描述的机器可读指令可由任何过去、现在或将来的指令语言、脚本语言、编程语言等等来表示。例如,机器可读指令可利用以下语言的任何一者来表示:C、C++、Java、C#、Perl、Python、JavaScript、超本文标记语言(HyperText Markup Language,HTML)、结构化查询语言(Structured Query Language,SQL)、Swift,等等。
如上所述,图4-图5的示例过程可利用存储在非暂态计算机和/或机器可读介质上的可执行指令(例如,计算机和/或机器可读指令)来实现,所述介质例如是硬盘驱动器、闪存、只读存储器、致密盘、数字多功能盘、缓存、随机访问存储器和/或其中信息可被存储任何持续时间(例如,存储较长时间段、永久存储、短暂存储、用于临时缓冲和/或用于信息的缓存)的任何其他存储设备或存储盘。就本文使用的而言,术语非暂态计算机可读介质被明确定义为包括任何类型的计算机可读存储设备和/或存储盘并且排除传播信号和排除传输介质。
“包括”和“包含”(以及其所有形式和时态)在本文中用于开端式术语。从而,每当权利要求使用任何形式的“包括”或“包含”(例如,包括、包含、具有等等)作为序言或者在任何种类的权利要求记载中使用时,要理解额外的元素、术语等等可存在,而不落在相应权利要求或记载的范围之外。就本文使用的而言,当短语“至少”在例如权利要求的序言中被用作过渡术语时,它是开端的,与术语“包括”和“包含”是开端的方式一样。术语“和/或”当例如被以比如A、B和/或C这样的形式使用时指的是A、B、C的任何组合或子集,例如(1)A单独,(2)B单独,(3)C单独,(4)A与B,(5)A与C,(6)B与C,以及(7)A与B以及与C。就本文在描述结构、组件、项目、对象和/或事物的上下文中使用的而言,短语“A和B的至少一者”打算指包括以下各项的任何一者的实现方式:(1)至少一个A,(2)至少一个B,以及(3)至少一个A和至少一个B。类似地,就本文在描述结构、组件、项目、对象和/或事物的上下文中使用的而言,短语“A或B的至少一者”打算指包括以下各项的任何一者的实现方式:(1)至少一个A,(2)至少一个B,以及(3)至少一个A和至少一个B。类似地,就本文在描述过程、指令、动作、活动和/或步骤的执行或运行的上下文中使用的而言,短语“A或B的至少一者”打算指包括以下各项的任何一者的实现方式:(1)至少一个A,(2)至少一个B,以及(3)至少一个A和至少一个B。
就本文使用的而言,单数指代(例如,“一”、“第一”、“第二”等等)不排除多数。就本文使用的而言,术语“一”实体指的是一个或多个该实体。术语“一”、“一个或多个”和“至少一个”在本文中可互换使用。此外,虽然是单独列出的,但多个手段、元素或方法动作可由例如单个单元或处理器实现。此外,虽然个体特征可被包括在不同的示例或权利要求中,但它们可能可被组合,并且包括在不同的示例或权利要求中并不暗示着特征的组合是不可行的和/或不是有利的。
图4的程序400包括块402,其中示例存储器分析器300确定是否存在存储器操作请求。在一些示例中,示例存储器分析器300确定没有存储器操作请求并且等待(例如,循环)直到检测到这种请求为止。在其他示例中,示例存储器分析器300确定存在存储器操作请求(块402),其中示例存储器分析器300确定先前虚拟存储器地址重指派和/或平台重配置是否已发生(块404)。例如,存储器分析器300确定示例地址指派器314在先前场合(例如,添加外部存储器)是否执行了地址重指派(例如,将虚拟存储器地址重映射为接连的)和/或平台重配置(块404)。
在一些示例中,示例存储器分析器300没有检测到这种先前虚拟地址重指派和/或第一平台重配置(块404)。在其他示例中,示例存储器分析器300检测到在至少一个先前平台重配置之后额外的平台重配置(例如,添加外部存储器)已发生并且生成第二标志。示例存储器检测器310取回、识别和/或以其他方式接收候选存储器,例如图3的示例便笺存储器306和/或示例缓存存储器308(块406)。示例存储器检测器310还获得候选存储器的当前存储器配置信息(块408)以确定便笺和缓存存储器的虚拟地址是非连续(例如图2A)还是连续的(例如图2B)。
图5图示了与块408的获得存储器配置信息相关联的额外细节。在图5的图示示例中,示例存储器大小检查器312取回虚拟存储器布局(块502)。示例存储器大小检查器312确定示例候选存储器中的示例便笺存储器306和示例缓存存储器308是否具有非连续地址(块504)。如果是,则示例地址指派器314重指派示例便笺存储器306的虚拟存储器地址以创建与示例缓存存储器308连续的虚拟地址并且设置第一标志(块506)。在其他示例中,示例存储器大小检查器312检测第二标志(例如,新平台重配置)并且示例地址指派器314重指派各个存储器设备的至少一者的虚拟存储器地址。一旦示例便笺存储器306和缓存存储器308已被指派了连续的虚拟地址,示例存储器检测器310就实现存储器映射(块508)并且返回到图4的程序400。要理解示例便笺存储器306和示例缓存存储器308可被预配置为在一些示例中具有连续的虚拟地址(例如图2B)。在这个示例中,示例存储器大小检查器312检测到虚拟存储器设备配置不包含虚拟地址间隙(块504)并且进而实现存储器映射(块508)。
返回到图4的图示示例,示例存储器大小检查器312确定示例输入数据缓冲区302是否与所识别的示例候选存储器兼容(块410),并且如果是,则示例地址指派器314指派候选存储器来与示例输入数据缓冲区302(块412)一起使用(例如,在这次迭代中被分析的候选存储器被视为大到足以容纳输入数据缓冲区的大小)。在一些示例中,如果初始候选存储器和输入数据缓冲区302不兼容(例如,没有大到足以容纳输入数据大小),则图4的程序400返回到块406以识别另一示例候选存储器。示例存储器检测器310还确定另一示例输入数据缓冲区302是否需要被存储(块414)。在一些示例中,示例存储器检测器310识别可用于处理输入数据的额外存储器设备。例如,即使先前评估的候选存储器设备大到足以容纳输入数据的大小,也可能存在平台的一个或多个额外的候选存储器设备。这样,如果平台的额外候选存储器设备也被以连续寻址方式布置在虚拟地址空间中,则更大的输入数据请求可被处理,而不需要计算跳跃偏移地址值。这样,示例存储器检测器310识别尚未被分析的额外存储选项(块414),并且控制返回到块406。在其他示例中,示例存储器检测器310没有检测到其他输入数据缓冲区(块414)并且控制前进到块416。
在一些示例中,示例存储器分析器300检测到多个存储器操作请求。一旦示例存储器检测器310没有检测到其他输入数据缓冲区(块414)或者示例存储器分析器300确定先前虚拟存储器地址重指派和/或平台重配置已发生(块404),示例存储器分析器300就防止、绕过和/或以其他方式抑制一个或多个默认处理器指令进行操作来计算跳跃偏移地址(块416)。示例存储器分析器300实现存储器操作(例如,读取、写入、存储器交换等等)并且返回到块402(块418)。
图6是被构造来执行图4-图5的指令以实现图1的示例平台100和图1和图3的示例存储器分析器300的示例处理器平台600的框图。处理器平台600可例如是服务器、个人计算机、工作站、自学习机器(例如,神经网络)、移动设备(例如,蜂窝电话、智能电话、诸如iPadTM之类的平板设备)、个人数字助理(PDA)、互联网家电、DVD播放器、CD播放器、数字视频记录器、蓝光播放器、游戏机、个人视频记录器、机顶盒、耳机或其他可穿戴设备或者任何其他类型的计算设备。
图示示例的处理器平台600包括处理器612。图示示例的处理器612是硬件。例如,处理器612可由来自任何期望的家族或制造商的一个或多个集成电路、逻辑电路、微处理器、GPU、DSP或者控制器实现。硬件处理器可以是基于半导体(例如,基于硅)的设备。在这个示例中,处理器实现示例SOC 102、示例处理器104、示例便笺106、示例L1缓存108、示例MMU110和/或更一般而言图1的示例平台100。此外,在这个示例中,处理器612实现示例输入数据缓冲区302、由示例便笺存储器306和示例缓存存储器308构成的示例易失性存储器304、示例存储器检测器310、示例存储器大小检查器312、示例地址指派器314和/或更一般而言图3的示例存储器分析器300。
图示示例的处理器612包括本地存储器613(例如,缓存)。图示示例的处理器612经由总线618与包括易失性存储器614和非易失性存储器616的主存储器通信。易失性存储器614可由同步动态随机访问存储器(Synchronous Dynamic Random Access Memory,SDRAM)、动态随机访问存储器(Dynamic Random Access Memory,DRAM)、
Figure BDA0002535006200000151
动态随机访问存储器(
Figure BDA0002535006200000152
Dynamic Random Access Memory,
Figure BDA0002535006200000153
)和/或任何其他类型的随机访问存储器设备实现。非易失性存储器616可由闪存和/或任何其他期望类型的存储器设备实现。对主存储器614、616的访问受存储器控制器控制。
图示示例的处理器平台600还包括接口电路620。接口电路620可由任何类型的接口标准实现,例如以太网接口、通用串行总线(universalserial bus,USB)、
Figure BDA0002535006200000161
接口、近场通信(near fieldcommunication,NFC)接口和/或PCI快速接口。
在图示示例中,一个或多个输入设备622连接到接口电路620。(一个或多个)输入设备622允许用户向处理器612中输入数据和/或命令。(一个或多个)输入设备可由例如音频传感器、麦克风、相机(静态或视频)、键盘、按钮、鼠标、触摸屏、触控板、轨迹球、等电位点(isopoint)和/或语音识别系统实现。
一个或多个输出设备624也连接到图示示例的接口电路620。输出设备1024可例如由显示设备(例如,发光二有管(light emitting diode,LED)、有机发光二极管(organiclight emitting diode,OLED)、液晶显示器(liquid crystal display,LCD)、阴极射线管显示器(cathode raytube,CRT)、就地切换(in-place switching,IPS)显示器、触摸屏等等)、触觉输出设备、打印机和/或扬声器实现。图示示例的接口电路620从而通常包括图形驱动器卡、图形驱动器芯片和/或图形驱动器处理器。
图示示例的接口电路620还包括通信设备,例如发送器、接收器、收发器、调制解调器、住宅网关、无线接入点和/或网络接口,来促进经由网络626与外部机器(例如,任何种类的计算设备)的数据交换。通信可经由例如以太网连接、数字订户线(digital subscriberline,DSL)连接、电话线连接、同轴线缆系统、卫星系统、直线对传式无线系统、蜂窝电话系统等等。
图示示例的处理器平台600还包括用于存储软件和/或数据的一个或多个大容量存储设备628。这种大容量存储设备628的示例包括软盘驱动器、硬盘驱动器、致密盘驱动器、蓝光盘驱动器、独立盘冗余阵列(redundant array of independent disks,RAID)系统以及数字多功能盘(DVD)驱动器。
图4-图5的机器可执行指令632可被存储在大容量存储设备628中、易失性存储器614中、非易失性存储器616中和/或诸如CD或DVD之类的可移除非暂态计算机可读存储介质上。
从前述内容,将会明白已公开了促进存储器管理系统的子过程之间的通信以将输入数据缓冲区无缝地映射到可用便笺和缓存存储器的示例方法、装置和制品。在一些示例中,本文公开的动态通信过程关于非连续便笺和缓存存储器警告处理器以使得在传统存储器映射之前可制定纠正性动作。例如,鉴于传统存储器映射,输入数据缓冲区可被单独存储在缓存存储器中或者被分割在便笺和缓存存储器之间,导致对缓存存储器的过度利用和在存储器操作的每个实例都要求虚拟地址跳跃计算的不必要复杂软件实现。公开的方法、装置、系统和制品通过防止对缓存存储器的过度使用和处理数据缓冲区存储的复杂软件实现而提高了使用计算设备的效率。公开的方法、装置、系统和制品因此指向计算机的功能中的一个或多个改进。
本文公开了管理存储器分配的示例方法、装置、系统和制品。进一步示例及其组合包括以下的:
示例1包括一种减少存储器访问操作时间的装置,该装置包括:存储器检测器,用于就可用存储器设备扫描平台,存储器大小检查器,用于取回与可用存储器设备相关联的虚拟存储器布局,所述可用存储器设备与所述平台相关联,并且确定各个所述可用存储器设备的虚拟地址边界是否在其间生成虚拟地址间隙,以及地址指派器,用于重指派各个所述可用存储器设备中的第一可用存储器设备的虚拟地址以去除所述虚拟地址间隙。
示例2包括如示例1中定义的装置,其中所述可用存储器设备包括以下各项的至少一者:便笺存储器,第一级(L1)缓存,第二级(L2)缓存,或者动态随机访问存储器(DRAM)。
示例3包括如示例2中定义的装置,其中所述可用存储器设备的虚拟存储器布局可被预配置为没有虚拟地址间隙。
示例4包括如示例1中定义的装置,其中所述存储器大小检查器用于在输入数据的大小超过各个所述可用存储器设备中的第一可用存储器设备的容量时识别第二可用存储器设备。
示例5包括如示例1中定义的装置,其中所述地址指派器用于响应于在第一时间重指派所述虚拟地址而设置第一标志。
示例6包括如示例5中定义的装置,还包括存储器分析器用于在所述第一标志被设置时防止在第二时间响应于存储器操作请求而重分析所述平台。
示例7包括如示例5中定义的装置,其中所述存储器分析器用于在所述第一标志被设置时防止在第二时间响应于存储器操作请求的跳跃地址计算。
示例8包括如示例7中定义的装置,其中所述存储器分析器用于响应于所述平台的存储器设备重配置而重分析所述平台并且生成第二标志。
示例9包括如示例8中定义的装置,其中所述存储器大小检查器用于在所述平台的存储器设备重配置之后检测所述第二标志,所述第二标志用于使得所述地址指派器重指派各个所述可用存储器设备中的至少一者的虚拟地址以去除所述虚拟地址间隙。
示例10包括一种减少存储器访问操作时间的由计算机实现的方法,该方法包括通过利用至少一个处理器执行指令来就可用存储器设备扫描平台,通过利用所述至少一个处理器执行指令来取回与可用存储器设备相关联的虚拟存储器布局,所述可用存储器设备与所述平台相关联,通过利用所述至少一个处理器执行指令来确定各个所述可用存储器设备的虚拟地址边界是否在其间生成虚拟地址间隙,并且通过利用所述至少一个处理器执行指令来重指派各个所述可用存储器设备中的第一可用存储器设备的虚拟地址以去除所述虚拟地址间隙。
示例11包括如示例10中定义的由计算机实现的方法,还包括在输入数据的大小超过各个所述可用存储器设备中的第一可用存储器设备的容量时识别第二可用存储器设备。
示例12包括如示例10中定义的由计算机实现的方法,还包括响应于在第一时间重指派所述虚拟地址而设置第一标志。
示例13包括如示例11中定义的由计算机实现的方法,还包括在所述第一标志被设置时防止在第二时间响应于存储器操作请求而重分析所述平台。
示例14包括如示例11中定义的由计算机实现的方法,还包括在所述第一标志被设置时防止在第二时间响应于存储器操作请求的跳跃地址计算。
示例15包括如示例14中定义的由计算机实现的方法,还包括响应于所述平台的存储器设备重配置而重分析所述平台并且生成第二标志。
示例16包括如示例15中定义的由计算机实现的方法,还包括在所述平台的存储器设备重配置之后检测所述第二标志,所述第二标志用于使得所述地址指派器重指派各个所述可用存储器设备中的至少一者的虚拟地址以去除所述虚拟地址间隙。
示例17包括一种非暂态计算机可读存储介质,包括计算机可读指令,所述指令当被执行时使得至少一个处理器至少执行以下操作:就可用存储器设备扫描平台,取回与可用存储器设备相关联的虚拟存储器布局,所述可用存储器设备与所述平台相关联,确定各个所述可用存储器设备的虚拟地址边界是否在其间生成虚拟地址间隙,并且重指派各个所述可用存储器设备中的第一可用存储器设备的虚拟地址以去除所述虚拟地址间隙。
示例18包括如示例17中定义的非暂态计算机可读介质,其中所述指令当被执行时使得所述至少一个处理器在输入数据的大小超过各个所述可用存储器设备中的第一可用存储器设备的容量时识别第二可用存储器设备。
示例19包括如示例17中定义的非暂态计算机可读介质,其中所述指令当被执行时使得所述至少一个处理器响应于在第一时间重指派所述虚拟地址而设置第一标志。
示例20包括如示例19中定义的非暂态计算机可读介质,其中所述指令当被执行时使得所述至少一个处理器在所述第一标志被设置时防止在第二时间响应于存储器操作请求而重分析所述平台。
示例21包括如示例19中定义的非暂态计算机可读介质,其中所述指令当被执行时使得所述至少一个处理器在所述第一标志被设置时防止在第二时间响应于存储器操作请求的跳跃地址计算。
示例22包括如示例21中定义的非暂态计算机可读介质,其中所述指令当被执行时使得所述至少一个处理器响应于所述平台的存储器设备重配置而重分析所述平台并且生成第二标志。
示例23包括如示例22中定义的非暂态计算机可读介质,其中所述指令当被执行时使得所述至少一个处理器在所述平台的存储器设备重配置之后检测所述第二标志,所述第二标志用于使得所述地址指派器重指派各个所述可用存储器设备中的至少一者的虚拟地址以去除所述虚拟地址间隙。
虽然本文公开了某些示例方法、装置和制品,但本专利的覆盖范围不限于此。相反,本专利覆盖了公平地落在本专利的权利要求的范围内的所有方法、装置和制品。
特此通过引用将所附权利要求并入到本“具体实施方式”部分中,其中每个权利要求独立作为本公开的一个单独实施例。

Claims (25)

1.一种减少存储器访问操作时间的装置,该装置包括:
存储器检测器,用于就可用存储器设备扫描平台;
存储器大小检查器,用于:
取回与所述可用存储器设备相关联的虚拟存储器布局,所述可用存储器设备与所述平台相关联;并且
确定各个所述可用存储器设备的虚拟地址边界是否在其间生成虚拟地址间隙;以及
地址指派器,用于重指派各个所述可用存储器设备中的第一可用存储器设备的虚拟地址以去除所述虚拟地址间隙。
2.如权利要求1所述的装置,其中所述可用存储器设备包括以下各项的至少一者:便笺存储器,第一级(L1)缓存,第二级(L2)缓存,或者动态随机访问存储器(DRAM)。
3.如权利要求1或2所述的装置,其中所述可用存储器设备的虚拟存储器布局可被预配置为没有虚拟地址间隙。
4.如权利要求1-3中任一项所述的装置,其中所述存储器大小检查器用于在输入数据的大小超过各个所述可用存储器设备中的所述第一可用存储器设备的容量时识别第二可用存储器设备。
5.如权利要求1所述的装置,其中所述地址指派器用于响应于在第一时间重指派所述虚拟地址而设置第一标志。
6.如权利要求5所述的装置,还包括存储器分析器,用于在所述第一标志被设置时防止在第二时间响应于存储器操作请求而重分析所述平台。
7.如权利要求5所述的装置,其中所述存储器分析器用于在所述第一标志被设置时防止在第二时间响应于存储器操作请求的跳跃地址计算。
8.如权利要求7所述的装置,其中所述存储器分析器用于响应于所述平台的存储器设备重配置而重分析所述平台并且生成第二标志。
9.如权利要求8所述的装置,其中所述存储器大小检查器用于在所述平台的存储器设备重配置之后检测所述第二标志,所述第二标志用于使得所述地址指派器重指派各个所述可用存储器设备中的至少一者的虚拟地址以去除所述虚拟地址间隙。
10.一种减少存储器访问操作时间的计算机实现的方法,该方法包括:
通过利用至少一个处理器执行指令来就可用存储器设备扫描平台;
通过利用所述至少一个处理器执行指令来取回与所述可用存储器设备相关联的虚拟存储器布局,所述可用存储器设备与所述平台相关联;
通过利用所述至少一个处理器执行指令来确定各个所述可用存储器设备的虚拟地址边界是否在其间生成虚拟地址间隙;并且
通过利用所述至少一个处理器执行指令来重指派各个所述可用存储器设备中的第一可用存储器设备的虚拟地址以去除所述虚拟地址间隙。
11.如权利要求10所述的计算机实现的方法,还包括:在输入数据的大小超过各个所述可用存储器设备中的所述第一可用存储器设备的容量时识别第二可用存储器设备。
12.如权利要求10-11中任一项所述的计算机实现的方法,还包括:响应于在第一时间重指派所述虚拟地址而设置第一标志。
13.如权利要求10-12中任一项所述的计算机实现的方法,还包括:在所述第一标志被设置时防止在第二时间响应于存储器操作请求的跳跃地址计算。
14.如权利要求13所述的计算机实现的方法,还包括:响应于所述平台的存储器设备重配置而重分析所述平台并且生成第二标志。
15.如权利要求14所述的计算机实现的方法,还包括:在所述平台的存储器设备重配置之后检测所述第二标志,所述第二标志用于使得所述地址指派器重指派各个所述可用存储器设备中的至少一者的虚拟地址以去除所述虚拟地址间隙。
16.一种计算机可读存储介质,包括计算机可读指令,所述指令当被执行时使得至少一个处理器至少执行以下操作:
就可用存储器设备扫描平台;
取回与所述可用存储器设备相关联的虚拟存储器布局,所述可用存储器设备与所述平台相关联;
确定各个所述可用存储器设备的虚拟地址边界是否在其间生成虚拟地址间隙;并且
重指派各个所述可用存储器设备中的第一可用存储器设备的虚拟地址以去除所述虚拟地址间隙。
17.如权利要求16所述的计算机可读介质,其中所述指令当被执行时使得所述至少一个处理器在输入数据的大小超过各个所述可用存储器设备中的第一可用存储器设备的容量时识别第二可用存储器设备。
18.如权利要求16-17中任一项所述的计算机可读介质,其中所述指令当被执行时使得所述至少一个处理器响应于在第一时间重指派所述虚拟地址而设置第一标志。
19.如权利要求18所述的计算机可读介质,其中所述指令当被执行时使得所述至少一个处理器在所述第一标志被设置时防止在第二时间响应于存储器操作请求的跳跃地址计算。
20.如权利要求19所述的计算机可读介质,其中所述指令当被执行时使得所述至少一个处理器响应于所述平台的存储器设备重配置而重分析所述平台并且生成第二标志。
21.如权利要求20所述的计算机可读介质,其中所述指令当被执行时使得所述至少一个处理器在所述平台的存储器设备重配置之后检测所述第二标志,所述第二标志使得所述地址指派器重指派各个所述可用存储器设备中的至少一者的虚拟地址以去除所述虚拟地址间隙。
22.一种用于减少存储器访问操作时间的设备,该设备包括:
扫描装置,用于就可用存储器设备扫描平台;
检查装置,用于:
取回与所述可用存储器设备相关联的虚拟存储器布局,所述可用存储器设备与所述平台相关联;并且
确定各个所述可用存储器设备的虚拟地址边界是否在其间生成虚拟地址间隙;以及
指派装置,用于重指派各个所述可用存储器设备中的第一可用存储器设备的虚拟地址以去除所述虚拟地址间隙。
23.如权利要求22所述的设备,其中,所述指派装置用于响应于在第一时间重指派所述虚拟地址而设置第一标志。
24.如权利要求23所述的设备,还包括分析装置,用于在所述第一标志被设置时防止在第二时间响应于存储器操作请求的跳跃地址计算。
25.如权利要求24所述的设备,其中,所述分析装置用于响应于所述平台的存储器设备重配置而重分析所述平台并且生成第二标志。
CN202010529912.3A 2019-08-13 2020-06-11 管理存储器分配的方法、系统、制品和装置 Pending CN112395217A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/539,496 2019-08-13
US16/539,496 US11347551B2 (en) 2019-08-13 2019-08-13 Methods, systems, articles of manufacture and apparatus to manage memory allocation

Publications (1)

Publication Number Publication Date
CN112395217A true CN112395217A (zh) 2021-02-23

Family

ID=68695217

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010529912.3A Pending CN112395217A (zh) 2019-08-13 2020-06-11 管理存储器分配的方法、系统、制品和装置

Country Status (4)

Country Link
US (1) US11347551B2 (zh)
JP (1) JP2021034017A (zh)
CN (1) CN112395217A (zh)
DE (1) DE102020118000A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11347551B2 (en) 2019-08-13 2022-05-31 Intel Corporation Methods, systems, articles of manufacture and apparatus to manage memory allocation

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113742131B (zh) * 2020-05-29 2024-04-19 伊姆西Ip控股有限责任公司 用于存储管理的方法、电子设备和计算机程序产品

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4760374A (en) * 1984-11-29 1988-07-26 Advanced Micro Devices, Inc. Bounds checker
US6675278B1 (en) * 2000-04-19 2004-01-06 Motorola, Inc. Method and apparatus for managing memory
US6751718B1 (en) * 2001-03-26 2004-06-15 Networks Associates Technology, Inc. Method, system and computer program product for using an instantaneous memory deficit metric to detect and reduce excess paging operations in a computer system
US7421539B1 (en) * 2004-05-18 2008-09-02 Sun Microsystems, Inc. Method and system for concurrent garbage collection and mutator execution
US7620793B1 (en) * 2006-08-28 2009-11-17 Nvidia Corporation Mapping memory partitions to virtual memory pages
US8738840B2 (en) * 2008-03-31 2014-05-27 Spansion Llc Operating system based DRAM/FLASH management scheme
US11347551B2 (en) 2019-08-13 2022-05-31 Intel Corporation Methods, systems, articles of manufacture and apparatus to manage memory allocation

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11347551B2 (en) 2019-08-13 2022-05-31 Intel Corporation Methods, systems, articles of manufacture and apparatus to manage memory allocation

Also Published As

Publication number Publication date
US11347551B2 (en) 2022-05-31
US20190370072A1 (en) 2019-12-05
DE102020118000A1 (de) 2021-02-18
JP2021034017A (ja) 2021-03-01

Similar Documents

Publication Publication Date Title
US6950107B1 (en) System and method for reserving and managing memory spaces in a memory resource
US10558460B2 (en) General purpose register allocation in streaming processor
US20150261511A1 (en) Handling Pointers in Program Code in a System that Supports Multiple Address Spaces
US20160170645A1 (en) Computing method and apparatus with persistent memory
US20150153958A1 (en) Electronic device and method for memory allocation in electronic device
CN112395217A (zh) 管理存储器分配的方法、系统、制品和装置
US10229044B2 (en) Conditional stack frame allocation
US20230418613A1 (en) Methods and apparatus to insert profiling instructions into a graphics processing unit kernel
US8933954B2 (en) Register allocation for graphics processing
EP3274818A1 (en) Computing methods and apparatuses with graphics and system memory conflict check
US20220164190A1 (en) Method of optimizing scalar register allocation and a system thereof
US9760282B2 (en) Assigning home memory addresses to function call parameters
EP4064060A1 (en) Methods and apparatus to profile page tables for memory management
US20240187015A1 (en) Methods and apparatus to write data to registers
EP1505490A1 (en) Method and computer system for accessing thread private data
US20090019097A1 (en) System and method for memory allocation management
US20130339666A1 (en) Special case register update without execution
US10445240B2 (en) Bus-based cache architecture
US11341045B2 (en) Memory apparatus and method for processing data using the same
US20140143456A1 (en) Determining a mapping mode for a dma data transfer
KR20180050849A (ko) 전자 장치 및 메모리 액세스 방법
US20200058095A1 (en) Allocating device buffer on gpgpu for an object with metadata using access boundary alignment
KR20210075312A (ko) 쓰레드를 활용한 데이터 처리방법
CN115080463A (zh) 一种内存管理方法、装置、电子设备及存储介质

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