一种数据处理方法及装置与流程

文档序号:17319720发布日期:2019-04-05 21:28阅读:135来源:国知局
一种数据处理方法及装置与流程
本申请涉及处理器硬件结构领域,特别涉及一种数据处理方法及装置。
背景技术
:目前,为了提高计算机的运行效率,多个应用程序通常在计算机内部实现资源共享,当检测到需要访问多个应用程序的数据时,处理器为每个应用程序生成一个访存请求,并对多个应用程序各自对应的访存请求进行数据处理。然而,多个应用程序在共享资源时会相互干扰,使得一些关键应用程序得不到优先处理,从而影响了服务质量。为此,相关技术中提供了一种处理器,该处理器包括访存队列和片内缓存。当需要访问片内缓存中一个应用程序对应的数据时,访存队列生成携带有标签的访存请求,该标签用于唯一标识该应用程序,并将携带有标签的访存请求发送给片内缓存。对应的,片内缓存根据标签和预先保存的资源分配策略确定分配给访存请求的资源量,根据分配的资源量处理访存请求。从而使得在处理访存请求时可以按照分配给访存请求的资源量进行处理,在一定程度上避免了多个应用给程序的访存请求互相抢占资源量。但是,在上述方法中采用标签对访存请求进行标记,片内缓存只能根据标签确定该访存请求是来自于与标签对应的应用程序的,却无法对该应用程序中的各个数据特征进行识别,也就无法为硬件层中的共享资源的管理提供更多的支撑,使得在多个应用程序共享资源的场景下关键应用程序的性能得不到保障。技术实现要素:为了解决相关技术的数据处理方法无法为硬件层中的共享资源的管理提供更多的支撑的问题,本申请实施例提供了一种数据处理方法及装置。所述技术方案如下:第一方面,本申请实施例提供了一种数据处理方法。由于现有技术中数据处理方法是基于粗粒度的标签,片内缓存只能根据标签确定该访存请求是来自于与标签对应的应用程序的,却无法对该应用程序中各个细粒度的对象进行识别,因此对数据处理方法进行了改进。该数据处理方法应用于包括访存队列、一级缓存和至少一个下级缓存的处理设备中,下级缓存是位于一级缓存下级的缓存,该方法包括:一级缓存接收访存队列发送的访存请求,访存请求携带有访存地址和标签,访存地址是用于存储第一应用程序的待访存数据的空间地址,标签用于唯一标识第一应用程序;一级缓存在预先设置的对象属性表中获取与标签对应的第一对象属性信息,对象属性表中存储有至少一个应用程序对应的对象属性信息,第一对象属性信息包括第一应用程序中n个对象各自对应的属性信息,属性信息用于指示处理对象的处理策略;当访存地址在一级缓存中命中时,一级缓存根据对象的属性信息处理访存请求。在该实现方式中,通过一级缓存在预先设置的对象属性表中获取第一应用程序中n个对象各自对应的属性信息,属性信息用于指示处理对象的处理策略;当访存地址在一级缓存中命中时,根据对象的属性信息处理访存请求;使得将相关技术中粗粒度的标签改进为细粒度的对象,软件层通过细粒度的对象向硬件层进行语义传递,从而使得硬件层能够获取第一应用程序中多个对象的属性信息,并根据对象的属性信息处理访存请求,不仅为硬件层中的共享资源的管理提供更多的支撑,而且使得在多个应用程序共享资源的场景下关键应用程序的性能得到保障。作为本实现方式的一种可能的实现方式,该方法,还包括:当访存地址在一级缓存中未命中时,一级缓存将携带有访存请求和第一对象属性信息的缺失信息传递至下级缓存,下级缓存用于根据缺失信息对访存请求进行处理或者不处理。在该实现方式中,通过当访存地址在一级缓存中未命中时,将携带有访存请求和第一对象属性信息的缺失信息传递至下级缓存,下级缓存用于根据缺失信息对访存请求进行处理或者不处理;使得一级缓存将从对象属性表中获取的第一对象属性信息作为访存请求的细粒度标签,并进一步向下级缓存传递,使得下级缓存能够根据缺失信息对应的细粒度标签对访存请求进行处理。作为本实现方式的一种可能的实现方式,该对象包括第一应用程序中的数据结构所在的地址空间范围,n个对象各自对应的地址空间范围均是不同的。作为本实现方式的一种可能的实现方式,该属性信息包括对象的容量占用信息,容量占用信息用于指示为对象需要分配的最大资源量;当访存地址在一级缓存中命中时,一级缓存根据对象的属性信息处理访存请求,包括:当访存地址在一级缓存中命中时,一级缓存根据对象的容量占用信息,为对象在一级缓存中分配资源量。作为本实现方式的一种可能的实现方式,该属性信息包括用于指示处理子策略的策略标识,处理子策略包括防替换处理、替换处理和排队处理中的至少一种;当访存地址在一级缓存中命中时,一级缓存根据对象的属性信息处理访存请求,包括:当访存地址在一级缓存中命中时,对于每个对象,一级缓存采用策略标识对应的处理子策略对对象进行处理。作为本实现方式的一种可能的实现方式,该下级缓存包括中间缓存,中间缓存是连接有下一级缓存的缓存,方法还包括:中间缓存接收上一级缓存发送的携带有访存请求和第一对象属性信息的第一缺失信息,第一缺失信息用于指示访存请求中的访存地址在上一级缓存未命中;当访存地址在中间缓存中命中时,中间缓存根据第一对象属性信息处理访存请求;或者,当访存地址在中间缓存中未命中时,中间缓存将携带有访存请求和第一对象属性信息的第二缺失信息传递至下一级缓存,第二缺失信息用于指示访存请求中的访存地址在中间缓存未命中,下一级缓存用于根据第二缺失信息对访存请求进行处理或者不处理。作为本实现方式的一种可能的实现方式,该下级缓存包括边缘缓存,边缘缓存是未连接有下一级缓存的缓存,方法还包括:边缘缓存接收上一级缓存发送的携带有访存请求和第一对象属性信息的第三缺失信息,第三缺失信息用于指示访存请求中的访存地址在上一级缓存未命中;当访存地址在边缘缓存中命中时,边缘缓存根据第一对象属性信息处理访存请求;或者,当访存地址在边缘缓存中未命中时,边缘缓存携带有访存请求和第一对象属性信息的第四缺失信息传递至内存控制器,第四缺失信息用于指示访存请求中的访存地址在边缘缓存未命中,内存控制器用于控制内存根据第四缺失信息对访存请求进行处理。第二方面,提供了一种数据处理装置,应用于包括访存队列、一级缓存和至少一个下级缓存的处理设备中,下级缓存是位于一级缓存下级的缓存,该装置包括:接收模块、获取模块和第一处理模块。接收模块,用于接收访存队列发送的访存请求,访存请求携带有访存地址和标签,访存地址是用于存储第一应用程序的待访存数据的空间地址,标签用于唯一标识第一应用程序;获取模块,用于在预先设置的对象属性表中获取与标签对应的第一对象属性信息,对象属性表中存储有至少一个应用程序对应的对象属性信息,第一对象属性信息包括第一应用程序中n个对象各自对应的属性信息,属性信息用于指示处理对象的处理策略;第一处理模块,用于当访存地址在一级缓存中命中时,根据对象的属性信息处理访存请求。作为本实现方式的一种可能的实现方式,第一处理模块,还用于当访存地址在一级缓存中未命中时,一级缓存将携带有访存请求和第一对象属性信息的缺失信息传递至下级缓存,下级缓存用于根据缺失信息对访存请求进行处理或者不处理。作为本实现方式的一种可能的实现方式,该对象包括第一应用程序中的数据结构所在的地址空间范围,n个对象各自对应的地址空间范围均是不同的。作为本实现方式的一种可能的实现方式,该属性信息包括对象的容量占用信息,容量占用信息用于指示为对象需要分配的最大资源量;第一处理模块,还用于当访存地址在一级缓存中命中时,根据对象的容量占用信息,为对象在一级缓存中分配资源量。作为本实现方式的一种可能的实现方式,该属性信息包括用于指示处理子策略的策略标识,处理子策略包括防替换处理、替换处理和排队处理中的至少一种;第一处理模块,还用于当访存地址在一级缓存中命中时,对于每个对象,采用策略标识对应的处理子策略对对象进行处理。作为本实现方式的一种可能的实现方式,该下级缓存包括中间缓存,中间缓存是连接有下一级缓存的缓存,该装置还包括:第二接收模块、第二处理模块。第二接收模块,用于接收上一级缓存发送的携带有访存请求和第一对象属性信息的第一缺失信息,第一缺失信息用于指示访存请求中的访存地址在上一级缓存未命中;第二处理模块,用于当访存地址在中间缓存中命中时,根据第一对象属性信息处理访存请求;或者,当访存地址在中间缓存中未命中时,中间缓存将携带有访存请求和第一对象属性信息的第二缺失信息传递至下一级缓存,第二缺失信息用于指示访存请求中的访存地址在中间缓存未命中,下一级缓存用于根据第二缺失信息对访存请求进行处理或者不处理。作为本实现方式的一种可能的实现方式,该下级缓存包括边缘缓存,边缘缓存是未连接有下一级缓存的缓存,装置还包括:第三接收模块、第三处理模块。第三接收模块,用于边缘缓存接收上一级缓存发送的携带有访存请求和第一对象属性信息的第三缺失信息,第三缺失信息用于指示访存请求中的访存地址在上一级缓存未命中;第三处理模块,用于当访存地址在边缘缓存中命中时,边缘缓存根据第一对象属性信息处理访存请求;或者,当访存地址在边缘缓存中未命中时,边缘缓存携带有访存请求和第一对象属性信息的第四缺失信息传递至内存控制器,第四缺失信息用于指示访存请求中的访存地址在边缘缓存未命中,内存控制器用于控制内存根据第四缺失信息对访存请求进行处理。第三方面,提供了一种处理设备,包括访存队列、一级缓存和至少一个下级缓存,下级缓存是位于一级缓存下级的缓存,该处理设备用于实现上述第一方面或第一方面中的任意一种可能的实现方式所提供的数据处理方法。第四方面,提供了一种计算机可读存储介质,该计算机可读存储介质中存储有至少一条指令,至少一条指令由处理器加载并执行以实现上述第一方面或第一方面中的任意一种可能的实现方式所提供的数据处理方法。附图说明为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是本申请实施例提供的处理设备100的结构示意图;图2是本申请一个实施例提供的数据处理方法的流程图;图3是本申请另一个实施例提供的数据处理方法的流程图;图4是本申请一个实施例提供的数据处理装置的结构示意图;图5是本申请另一个实施例提供的数据处理装置的结构示意图;图6是本申请一个实施例提供的服务器600的结构示意图。具体实施方式为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。首先,对本实施例所涉及到的若干个名词进行介绍:数据结构:用于指示数据在计算机中的存储形式。数据结构包括但不限于变量、数组、队列(英文:queue)、堆(英文:heap)、栈(英文:stack)、链表(英文:linkedlist)、树(英文:tree)、图(英文:graph)和散列表(英文:hash)中的至少一种。对象:包括数据结构所在的地址空间范围。比如,对象为数组所在的虚拟地址空间范围。属性信息:用于指示处理对象的处理策略。属性信息包括对象的容量占用信息和/或用于指示处理子策略的策略标识。其中,容量占用信息用于指示为对象需要分配的最大资源量。比如,容量占用信息为资源量或者资源量的比例值。处理子策略包括但不限于防替换处理、替换处理和排队处理中的至少一种。防替换处理:用于指示将访存请求对应的待访存数据存储在第一预设区域,第一预设区域是预先设置的用于存储防止被替换的数据的区域。替换处理:用于采用替换算法将访存请求对应的待缓存数据进行替换。替换算法包括但不限于最近最少使用(英文:leastrecentlyused,lru)算法、最不经常使用(英文:leastrequentlyused,lfu)算法、最近最常使用(英文:mostrecentlyused,mru)算法、dip(英文:dynamicinsertionpolicy)算法、srrip(英文:staticrereferenceintervalprediction)算法、drrip(英文:dynamicrereferenceintervalprediction)算法中的至少一种。排队处理:用于根据该访存请求被分配的资源量,将该访存请求放入与资源量对应的队列中。缓存包括至少两个队列,其中,每个队列对应一定范围的资源量,并且每个队列的优先级不同。比如,缓存中包括三个队列,分别为高优先级队列、中优先级队列和低优先级队列。其中,高优先级队列对应的资源量为70%-80%。若访存请求分配到的资源量是76%,那么就将该访存请求放入高优先级队列中。请参考图1,其示出了本申请实施例提供的处理设备100的结构示意图。处理设备100是一台服务器,或者是若干台服务器,或者是一个虚拟化平台,或者是一个云计算服务中心。比如,处理设备100为仓库级数据中心服务器。处理设备100用于实现本申请实施例中所提供的数据处理方法。该处理设备100包括:处理器200和内存300。该处理器200包括访存请求单元和多级缓存(英文:cache)。访存请求单元包括访存队列(英文:load/storequeue)210,用于当需要读写数据时,将访存请求发送至多级缓存。多级缓存设置在处理器内部,每级的缓存也称为片内缓存,由静态随机访问存储器(英文:staticrandomaccessmemory,sram)组成。多级缓存包括一级缓存(英文:level1cache,l1cache)220和至少一个下级缓存。下级缓存是位于一级缓存220下级的缓存。可选的,下级缓存的类型分为中间缓存或边缘缓存,中间缓存是连接有下一级缓存的缓存,边缘缓存是未连接有下一级缓存的缓存。示意性的,当下级缓存的数量为一个时,下级缓存包括二级缓存(英文:level2cache,l2cache),此时二级缓存的类型为边缘缓存;当下级缓存的数量为两个时,下级缓存包括二级缓存和三级缓存(英文:level3cache,l3cache),此时二级缓存的类型为中间缓存,三级缓存的类型为边缘缓存;当下级缓存的数量为i个时,下级缓存包括二级缓存、三级缓存等等直到i+1级缓存,i为大于2的正整数,此时二级缓存至i级缓存的类型均为中间缓存,i+1级缓存的类型为边缘缓存。本实施例对下级缓存的数量不加以限定。下面仅以处理器200包括一级缓存220、二级缓存230和三级缓存240为例进行说明。该处理器200包括至少一个处理器核(英文:core)。当处理器采用3级缓存时,每个处理器核对应一个一级缓存220,一级缓存220为该处理器核的私有缓存,私有缓存用于指示除了该处理器核以外的其他处理器核不能访问,二级缓存230和三级缓存240通常为共享缓存,每个处理器核均能访问二级缓存和三级缓存。需要说明的是,本实施例仅以各级缓存均设置在处理器200内部为例进行说明,各级缓存也可以均设置在处理器200外部;或者,一级缓存220设置在处理器200内部,二级缓存230和三级缓存240设置在处理器200外部;或者,一级缓存220和二级缓存230设置在处理器200内部,三级缓存240设置在处理器200外部,本实施例对此不加以限定。处理器200中还包括内存控制器(英文:memorycontroller)250,内存控制器250是处理设备100内部控制内存300并用于管理与规划处理器110与内存300之间的数据传输速度的总线电路控制器。处理器200通过内存控制器120访问内存300,比如将数据写入内存300或从内存300中读取数据,从而实现处理器200与内存300进行交换数据。内存控制器250设置在处理器200中;或者,内存控制器250是一个单独的芯片,并通过系统总线与处理器200连接。本申请实施例不对内存控制器120的具体位置进行限定。为了方便描述,仅以内存控制器120设置在处理器200中为例进行描述。内存300是处理设备100的主存。内存300通常用来存放操作系统中各种正在运行的软件、输入和输出数据以及与外存交换的信息等。为了提高cpu110的访问速度,内存300需要具备访问速度快的优点。在传统的计算机系统架构中,通常采用动态随机存取存储器(dynamicrandomaccessmemory,dram)作为内存300。随着非易失性存储器(non-volatilememory,nvm)技术的发展,nvm也逐渐被作为内存使用。通常,访存队列210在访问数据时,先向一级缓存220发送访存请求,该访存请求携带有访存地址,若访存地址在一级缓存220没有命中,继续访问二级缓存230,若二级缓存230也没有命中,再访问三级缓存240,若三级缓存240还没有命中,再通过内存控制器250访问内存300。处理器200中还包括输入/输出(英文:input/output,i/o)控制器(图中未示出),i/o控制器与外设连接。一级缓存220包括对象属性表维护单元221、一级数据转换检测缓冲区(英文:translationlookasidebuffer,tlb)单元222和一级数据缓存(英文:level1data-cache,l1d-cache)单元223。对象属性表维护单元221用于实时维护对象属性表,一级数据tlb单元222用于将虚拟空间地址翻译成实际的物理空间地址,一级数据缓存用于检测访存地址在一级缓存中是否命中。对象属性表是操作系统或中间层软件(比如:hypervisor虚拟机管理器)调用预设指令向一级缓存中写入的。对象属性表的介绍可参考下面实施例中的描述,在此先不介绍。可选的,处理设备100还包括存储器(图中未示出),该存储器中存储有至少一条指令,至少一条指令由处理器加载并执行以实现下述各个方法实施例提供的数据处理方法。请参考图2,其示出了本申请一个实施例提供的数据处理方法的流程图。本实施例以该数据处理方法用于图1所示的处理设备100为例进行说明,该方法可以包括如下步骤。步骤201,一级缓存接收访存队列发送的访存请求,访存请求携带有访存地址和标签,访存地址是用于存储第一应用程序的待访存数据的空间地址,标签用于唯一标识第一应用程序。当访存队列需要访问第一应用程序的待访存数据时,访存队列生成携带有访存地址和标签的访存请求,向一级缓存发送该访存请求;对应的,一级缓存接收访存队列发送的访存请求,从访存请求中获取访存地址和标签。第一应用程序是至少一个应用程序中的一个应用程序。可选的,第一应用程序是处于前台运行的应用程序。访存地址包括三个字段,分别为tag段,index段和offset段。其中,tag段为访存地址的标识,用来决定访存地址是否在一级缓存中命中;index段为一组缓存块的索引位,用来索引每一路(英文:way)中的一个缓存块;offset段为缓存块的块内偏移,由缓存块的大小决定。访存队列向一级缓存发送访存请求包括:在将访存地址中的tag段发送至一级缓存中的一级数据tlb单元的同时,将访存地址中的index段和offset段发送至一级缓存中的一级数据缓存。第一应用程序的标签用于在至少一个应用程序中唯一标识该第一应用程序。比如,第一应用程序为“xx空间”,该第一应用程序“xx空间”的标签为“01”。步骤202,一级缓存在预先设置的对象属性表中获取与标签对应的第一对象属性信息,对象属性表中存储有至少一个应用程序对应的对象属性信息,第一对象属性信息包括第一应用程序中n个对象各自对应的属性信息,属性信息用于指示处理对象的处理策略。在一种可能的实现方式中,在访问一级数据缓存和一级数据tlb单元之后,查询对象属性表。在另一种可能的实现方式中,为了不会带来额外延迟开销,在访问一级数据缓存和一级数据tlb单元的同时,查询对象属性表。下面仅以第二种可能的实现方式为例进行说明。下面,对对象属性表的内容进行示意性地介绍。对象属性表中存储有至少一个应用程序对应的对象属性信息,一个应用程序的对象属性信息包括该应用程序中n个对象各自对应的属性信息,对象与属性信息存在一一对应的关系。其中,第一对象属性信息为对象属性表中与第一应用程序对应的属性信息。可选的,第一应用程序中包括n个对象,n个对象各自对应的地址空间范围是不同的。在一种可能的实现方式中,对象的属性信息包括该对象的容量占用信息,比如,容量占用信息为该对象占用资源量的比例值。示意性的,对象属性表中第一应用程序对应的对象属性信息如表一所示,在表一中,第一应用程序包括3个对象,分别为对象1“地址空间范围1”、对象2“地址空间范围2”和对象3“地址空间范围3”,对象1“地址空间范围1”对应的属性信息为“10%”,对象2“地址空间范围2”对应的属性信息为“15%”,对象3“地址空间范围3”对应的属性信息为“50%”。表一对象属性信息地址空间范围110%地址空间范围215%地址空间范围350%在另一种可能的实现方式中,对象的属性信息包括策略标识,策略标识用于指示处理子策略。可选的,一级缓存中存储有设置策略标识与处理子策略的对应关系,在一个示意性的例子中,该对应关系如表二所示。其中,策略标识“sl1”对应的处理子策略为“防替换处理”,策略标识“sl2”对应的处理子策略为“替换处理”,策略标识“sl3”对应的处理子策略为“排队处理”。表二策略标识处理子策略sl1防替换处理sl2替换处理sl3排队处理示意性的,对象属性表中第一应用程序对应的对象属性信息如表三所示,在表三中,第一应用程序包括3个对象,分别为对象1“地址空间范围1”、对象2“地址空间范围2”和对象3“地址空间范围3”,对象1“地址空间范围1”对应的属性信息为“sl1”,对象2“地址空间范围2”对应的属性信息为“sl1”,对象3“地址空间范围3”对应的属性信息为“sl3”。表三对象属性信息地址空间范围1sl1地址空间范围2sl1地址空间范围3sl3需要说明的一点是,n个对象中任意两个对象各自对应的数据结构是不同的;或者,n个对象中存在至少两个对象各自对应的数据结构是相同的;或者,n个对象各自对应的数据结构均是相同的。下面,基于上述表一所提供的3个对象对上述三种可能的实现方式依次进行示意性的介绍。比如,对象1对应的数据结构是数组a,对象2对应的数据结构是链表b,对象3对应的数据结构是树c,此时3个对象各自对应的数据结构均是不同的。又比如,对象1对应的数据结构是数组a,对象2对应的数据结构是数组b,对象3对应的数据结构是树c,此时3个对象中对象1和对象2各自对应的数据结构是相同的。又比如,对象1对应的数据结构是数组a,对象2对应的数据结构是数组b,对象3对应的数据结构是数组c,此时3个对象各自对应的数据结构均是相同的。需要说明的另一点是,一个应用程序中包括m个对象,通常m的值是很大的,如果精确到每一个对象,则对象属性表需要非常大的容量,因此在实际应用中,预先对应用程序中m个对象进行筛选,选择出n个关键的对象,对象属性表中存储该应用程序对应的n个对象的属性信息,使得对象属性表的表项数量具有可实现性。可选的,对象属性表中存储有多个应用程序各自对应的标签,每个应用程序的标签对应多行条目,每行条目包括一个对象的属性信息。在一个示意性的例子中,对象属性表包括两个应用程序(应用程序a和应用程序b)各自对应的对象属性信息,每个对象的属性信息为该对象占用资源量的比例值,该对象属性表如表四所示,应用程序a的标签为“01”,该标签“01”对应的对象属性信息包括3行条目,第1行条目包括对象1“地址空间范围1”和对应的属性信息“10%”,第2行条目包括对象2“地址空间范围2”和对应的属性信息“15%”,第3行条目包括对象3“地址空间范围3”和对应的属性信息“50%”;应用程序b的标签为“02”,该标签“02”对应的对象属性信息包括2行条目,第4行条目包括对象4“地址空间范围4”和对应的属性信息“60%”,第5行条目包括对象5“地址空间范围5”和对应的属性信息“50%”。表四步骤203,一级缓存判断访存地址在一级缓存中是否命中。一级缓存判断访存地址在一级缓存中是否命中,若访存地址在一级缓存中命中,则执行步骤204;若访存地址在一级缓存中未命中,则执行步骤205。一级缓存判断访存地址在一级缓存中是否命中的步骤包括但不限于以下两种可能的实现方式:在一种可能的实现方式中,一级缓存获取访存请求中的访存地址的标识;当一级缓存在m个预存标识中查找到该访存地址的标识时,确定访存地址在一级缓存中命中;或者,当一级缓存在m个预存标识中未查找到该访存地址的标识时,确定访存地址在一级缓存中未命中。在另一种可能的实现方式中,当一级缓存获取访存请求中的访存地址时,先在一级数据tlb单元中查找对应的页表,若一级数据tlb单元中存在所需的页表,则称为tlb命中(英文:tlbhit);然后,一级缓存查看该页表所对应的物理内存地址中的待访存数据在一级缓存中是否存在,若存在则确定访存地址在一级缓存中命中;若不存在则确定访存地址在一级缓存中未命中。步骤204,当访存地址在一级缓存中命中时,一级缓存根据对象的属性信息处理访存请求。一级缓存根据对象的属性信息处理访存请求包括但不限于以下两种可能的实现方式:在一种可能的实现方式中,属性信息包括对象的容量占用信息,当访存地址在一级缓存中命中时,一级缓存根据对象的容量占用信息,为对象在一级缓存中分配资源量。比如,基于上述表一所提供的第一应用程序对应的对象属性信息,若访存地址在一级缓存中命中时,一级缓存根据3个对象的属性信息,为对象1在一级缓存中分配10%资源量,为对象2在一级缓存中分配15%资源量,为对象3在一级缓存中分配50%资源量。在另一种可能的实现方式中,属性信息包括用于指示处理子策略的策略标识,当访存地址在一级缓存中命中时,对于每个对象,一级缓存采用策略标识对应的处理子策略对对象进行处理。比如,基于上述表二和表三,若访存地址在一级缓存中命中时,一级缓存根据3个对象的属性信息,采用策略标识“sl1”对应的防替换处理对对象1进行处理,采用策略标识“sl1”对应的防替换处理对对象2进行处理,采用策略标识“sl3”对应的排队处理对对象3进行处理。步骤205,当访存地址在一级缓存中未命中时,一级缓存将携带有访存请求和第一对象属性信息的缺失信息传递至下级缓存,下级缓存用于根据缺失信息对访存请求进行处理或者不处理。当访存地址在一级缓存中未命中时,一级缓存生成缺失信息,该缺失请求携带有访存请求和第一对象属性信息,将缺失请求传递至下级缓存。综上所述,本实施例通过一级缓存接收访存队列发送的访存请求,访存请求携带有访存地址和标签,在预先设置的对象属性表中获取与标签对应的第一对象属性信息,第一对象属性信息包括第一应用程序中n个对象各自对应的属性信息,属性信息用于指示处理对象的处理策略;当访存地址在一级缓存中命中时,根据对象的属性信息处理访存请求;使得将相关技术中粗粒度的标签改进为细粒度的对象,软件层通过细粒度的对象向硬件层进行语义传递,从而使得硬件层能够获取第一应用程序中多个对象的属性信息,并根据对象的属性信息处理访存请求,不仅为硬件层中的共享资源的管理提供更多的支撑,而且使得在多个应用程序共享资源的场景下关键应用程序的性能得到保障。本实施例还通过当访存地址在一级缓存中未命中时,将携带有访存请求和第一对象属性信息的缺失信息传递至下级缓存,下级缓存用于根据缺失信息对访存请求进行处理或者不处理;使得一级缓存将从对象属性表中获取的第一对象属性信息作为访存请求的细粒度标签,并进一步向下级缓存传递,使得下级缓存能够根据缺失信息对应的细粒度标签对访存请求进行处理。下面的实施例中,仅以处理器包括一级缓存和两个下级缓存,两个下级缓存分别为二级缓存和三级缓存为例进行说明。此时二级缓存的上一级缓存为一级缓存,二级缓存的下一级缓存为三级缓存,二级缓存的类型为中间缓存,三级缓存的类型为边缘缓存。请参考图3,其示出了本申请另一个实施例提供的数据处理方法的流程图。本实施例以该数据处理方法用于图1所示的处理设备100为例进行说明,该方法可以包括如下步骤。步骤301,一级缓存接收访存队列发送的访存请求,访存请求携带有访存地址和标签,访存地址是用于存储第一应用程序的待访存数据的空间地址,标签用于唯一标识第一应用程序。可选的,在步骤301之前,操作系统或者中间层软件预先通过对应用程序进行静态分析得到该应用程序对应的对象属性信息,并将至少一个应用程序对应的对象属性信息写入一级缓存的对象属性表中。可选的,将第一应用程序对应的对象属性信息写入一级缓存的对象属性表中包括:操作系统向第一应用程序发送控制指令,控制指令用于控制应用程序进行上下文切换,上下文切换包括将当前应用程序从第二应用程序切换为第一应用程序;操作系统在当前应用程序切换为第一应用程序时,将第一应用程序对应的对象属性信息写入一级缓存的对象属性表中。可选的,一级缓存在应用程序进行上下文切换时,将对象属性表中第一应用程序对应的第一对象属性信息与第二应用程序对应的第二对象属性信息的位置进行互换,第二对象属性信息包括第二应用程序中m个数据结构各自对应的属性信息。当访存队列需要访问第一应用程序的待访存数据时,生成访存请求并向一级缓存发送该访存请求,该访存请求携带有访存地址和标签;可选的,该访存请求中还携带有访存标识,当访存标识为第一数值时,用于指示该访存请求为读请求;当访存标识为第二数值时,用于指示该访存请求为写请求;比如,第一数值为“1”,第二数值为“0”。下面仅以访存标识为第一数值,该访存请求为读请求为例进行说明。当访存请求为写请求时可类比参考下述读请求的过程,在此不再赘述。步骤302,一级缓存在预先设置的对象属性表中获取与标签对应的第一对象属性信息,对象属性表中存储有至少一个应用程序对应的对象属性信息,第一对象属性信息包括第一应用程序中n个数据结构各自对应的属性信息,属性信息用于指示处理数据结构的处理策略。可选的,对象属性表中还存储有至少一个应用程序对应的访问统计信息。在一种可能的实现方式中,访问统计信息包括第一命中率,第一命中率为该应用程序的访存请求的命中率(英文:hitrate)。示意性的,对象属性表中第一应用程序的对象属性信息和访问统计信息如表五所示。在表五中,该第一应用程序的访问统计信息为“90%”,即该第一应用程序的访存请求在缓存中的第一命中率为90%;该第一应用程序的对象属性信息与表一中的对象属性信息相同,可参考表一对应的描述,在此不再赘述。表五在另一种可能的实现方式中,访问统计信息包括第二命中率,第二命中率为该应用程序中每个对象的命中率。示意性的,对象属性表中第一应用程序的对象属性信息和访问统计信息如表六所示。在表六中,该第一应用程序中的对象1“地址空间范围1”对应的访问统计信息为“80%”,即该对象1在缓存中的第二命中率为80%;对象2“地址空间范围2”对应的访问统计信息为“90%”,即该对象2在缓存中的第二命中率为90%;对象3“地址空间范围3”对应的访问统计信息为“85%”,即该对象3在缓存中的第二命中率为85%;该第一应用程序的对象属性信息与表一中的对象属性信息相同,可参考表一对应的描述,在此不再赘述。表六对象属性信息访问统计信息地址空间范围110%80%地址空间范围215%90%地址空间范围350%85%步骤303,一级缓存判断访存地址在一级缓存中是否命中。一级缓存判断访存地址在一级缓存中是否命中,若访存地址在一级缓存中命中,则执行步骤304;若访存地址在一级缓存中未命中,则执行步骤305。步骤304,当访存地址在一级缓存中命中时,一级缓存根据对象的属性信息处理访存请求。步骤305,当访存地址在一级缓存中未命中时,一级缓存将携带有访存请求和第一对象属性信息的第一缺失信息传递至二级缓存。当访存地址在一级缓存中未命中时,一级缓存生成并向二级缓存发送第一缺失信息,该第一缺失请求携带有访存请求和第一对象属性信息,第一缺失信息用于指示访存请求中的访存地址在上一级缓存未命中。步骤306,二级缓存接收一级缓存发送的携带有访存请求和第一对象属性信息的第一缺失信息。步骤307,二级缓存判断访存地址在二级缓存中是否命中。二级缓存判断访存地址在二级缓存中是否命中,若访存地址在二级缓存中命中,则执行步骤308;若访存地址在二级缓存中未命中,则执行步骤309。步骤308,当访存地址在二级缓存中命中时,二级缓存根据第一对象属性信息处理访存请求。步骤309,当访存地址在二级缓存中未命中时,二级缓存将携带有访存请求和第一对象属性信息的第二缺失信息传递至三级缓存。当访存地址在二级缓存中未命中时,二级缓存生成并向三级缓存发送第二缺失信息,该第二缺失请求携带有访存请求和第一对象属性信息,第二缺失信息用于指示访存请求中的访存地址在二级缓存未命中。需要说明的是,步骤307至步骤309中二级缓存的数据处理过程可类比参考一级缓存中数据处理过程的相关细节,在此不再赘述。步骤310,三级缓存接收二级缓存发送的携带有访存请求和第一对象属性信息的第二缺失信息。步骤311,三级缓存判断访存地址在三级缓存中是否命中。三级缓存判断访存地址在三级缓存中是否命中,若访存地址在三级缓存中命中,则执行步骤312;若访存地址在三级缓存中未命中,则执行步骤313。步骤312,当访存地址在三级缓存中命中时,三级缓存根据第一对象属性信息处理访存请求。步骤313,当访存地址在三级缓存中未命中时,三级缓存携带有访存请求和第一对象属性信息的第四缺失信息传递至内存控制器。当访存地址在三级缓存中未命中时,三级缓存生成第四缺失信息并向内存控制器发送第四缺失信息,该第四缺失信息携带有访存请求和第一对象属性信息,第四缺失信息用于指示访存请求中的访存地址在三级缓存未命中。需要说明的是,步骤311至步骤313中三级缓存的数据处理过程可类比参考一级缓存中数据处理过程的相关细节,在此不再赘述。步骤314,内存控制器接收携带有访存请求和第一对象属性信息的第四缺失信息,控制内存根据该第四缺失信息对访存请求进行处理。内存控制器接收三级缓存发送的第四缺失信息,控制内存根据该第四缺失信息对访存请求进行处理。需要说明的是,由于在本实施例中的中间缓存的数量为1个,因此
发明内容中的“中间缓存将携带有访存请求和第一对象属性信息的第二缺失信息传递至下一级缓存”中的“第二缺失信息”和“边缘缓存接收上一级缓存发送的携带有访存请求和第一对象属性信息的第三缺失信息”中的“第三缺失信息”在本实施例中为同一个缺失信息,均用于指示访存请求中的访存地址在二级缓存未命中,为了方便描述,在本实施例中统一表述为“第二缺失信息”。以下为本申请实施例的装置实施例,对于装置实施例中未详细阐述的部分,可以参考上述方法实施例中公开的技术细节。请参考图4,其示出了本申请一个实施例提供的数据处理装置的结构示意图。该装置可以通过软件、硬件以及两者的组合实现成为处理设备的全部或一部分。该装置应用于包括访存队列、一级缓存和至少一个下级缓存的处理设备中,下级缓存是位于一级缓存下级的缓存,该装置包括:接收模块410、获取模块420和第一处理模块430。接收模块410,用于执行上述步骤201和/或301。获取模块420,用于执行上述步骤202和/或302。第一处理模块430,用于执行上述步骤204和/或304。在基于图4所示实施例提供的一个可选实施例中,如图5所示,该装置,还包括:第一处理模块430,还用于执行上述步骤205以及其它明示或隐含的至少一个处理步骤。可选的,该对象包括第一应用程序中的数据结构所在的地址空间范围,n个对象各自对应的地址空间范围均是不同的。可选的,该属性信息包括对象的容量占用信息,容量占用信息用于指示为对象需要分配的最大资源量;第一处理模块430,还用于当访存地址在一级缓存中命中时,根据对象的容量占用信息,为对象在一级缓存中分配资源量。可选的,该属性信息包括用于指示处理子策略的策略标识,处理子策略包括防替换处理、替换处理和排队处理中的至少一种;第一处理模块430,还用于当访存地址在一级缓存中命中时,对于每个对象,采用策略标识对应的处理子策略对对象进行处理。可选的,该下级缓存包括中间缓存,中间缓存是连接有下一级缓存的缓存,该装置还包括:第二处理模块440。第二处理模块440,用于接收上一级缓存发送的携带有访存请求和第一对象属性信息的第一缺失信息,第一缺失信息用于指示访存请求中的访存地址在上一级缓存未命中;第二处理模块440,还用于当访存地址在中间缓存中命中时,根据第一对象属性信息处理访存请求;或者,当访存地址在中间缓存中未命中时,中间缓存将携带有访存请求和第一对象属性信息的第二缺失信息传递至下一级缓存,第二缺失信息用于指示访存请求中的访存地址在中间缓存未命中,下一级缓存用于根据第二缺失信息对访存请求进行处理或者不处理。可选的,该下级缓存包括边缘缓存,边缘缓存是未连接有下一级缓存的缓存,装置还包括:第三处理模块450。第三处理模块450,用于边缘缓存接收上一级缓存发送的携带有访存请求和第一对象属性信息的第三缺失信息,第三缺失信息用于指示访存请求中的访存地址在上一级缓存未命中;第三处理模块450,还用于当访存地址在边缘缓存中命中时,边缘缓存根据第一对象属性信息处理访存请求;或者,当访存地址在边缘缓存中未命中时,边缘缓存携带有访存请求和第一对象属性信息的第四缺失信息传递至内存控制器,第四缺失信息用于指示访存请求中的访存地址在边缘缓存未命中,内存控制器用于控制内存根据第四缺失信息对访存请求进行处理。相关细节可结合参考图1至图3所示的方法实施例。其中,接收模块410还用于实现上述方法实施例中其他任意隐含或公开的与接收步骤相关的功能;获取模块420还用于实现上述方法实施例中其他任意隐含或公开的与获取步骤相关的功能;第一处理模块430还用于实现上述方法实施例中其他任意隐含或公开的与处理步骤相关的功能。在本申请所提供的实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,可以仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。请参考图6,其示出了本申请一个实施例提供的服务器600的结构示意图。该服务器包括图1中的处理设备100。具体来讲:所述服务器600包括中央处理单元(cpu)601、包括随机存取存储器(ram)602和只读存储器(rom)603的系统存储器604,以及连接系统存储器604和中央处理单元601的系统总线605。所述服务器600还包括帮助计算机内的各个器件之间传输信息的基本输入/输出系统(i/o系统)606,和用于存储操作系统613、应用程序614和其他程序模块615的大容量存储设备607。所述基本输入/输出系统606包括有用于显示信息的显示器608和用于用户输入信息的诸如鼠标、键盘之类的输入设备609。其中所述显示器608和输入设备609都通过连接到系统总线605的输入输出控制器610连接到中央处理单元601。所述基本输入/输出系统606还可以包括输入输出控制器610以用于接收和处理来自键盘、鼠标、或电子触控笔等多个其他设备的输入。类似地,输入输出控制器610还提供输出到显示屏、打印机或其他类型的输出设备。所述大容量存储设备607通过连接到系统总线605的大容量存储控制器(未示出)连接到中央处理单元601。所述大容量存储设备607及其相关联的计算机可读介质为服务器600提供非易失性存储。也就是说,所述大容量存储设备607可以包括诸如硬盘或者cd-roi驱动器之类的计算机可读介质(未示出)。不失一般性,所述计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括ram、rom、eprom、eeprom、闪存或其他固态存储其技术,cd-rom、dvd或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备。当然,本领域技术人员可知所述计算机存储介质不局限于上述几种。上述的系统存储器604和大容量存储设备607可以统称为存储器。根据本申请的各种实施例,所述服务器600还可以通过诸如因特网等网络连接到网络上的远程计算机运行。也即服务器600可以通过连接在所述系统总线605上的网络接口单元611连接到网络612,或者说,也可以使用网络接口单元611来连接到其他类型的网络或远程计算机系统(未示出)。可选的,该存储器中存储有至少一条指令,至少一条指令由处理器加载并执行以实现上述各个方法实施例提供的数据处理方法。上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。本领域普通技术人员可以理解实现上述实施例的数据处理方法中全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的计算机可读存储介质可以是只读存储器,磁盘或光盘等。或者说,存计算机可读存储介质中存储有至少一条指令,至少一条指令由处理器加载并执行以实现上述各个方法实施例提供的数据处理方法。以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本
技术领域
的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1