一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种性能评估方法、装置、系统、存储介质及设备与流程

2022-07-02 11:26:39 来源:中国专利 TAG:
1.本说明书实施例涉及系统测试
技术领域
:,尤其涉及一种性能评估方法、装置、系统、存储介质及设备。
背景技术
::2.在cpu(centralprocessingunit,中央处理器)芯片中,系统内存管理单元(systemmemorymanagementunit,smmu)是一个重要的硬件模块。其作用是将计算机的外接设备的虚拟地址翻译为物理地址,以使得外接设备能够正常的访问物理内存。因此,在cpu芯片设计中,smmu硬件模块的性能将直接影响到外接设备的性能,进而影响到整个cpu芯片的性能。3.然而,在当前的cpu芯片的设计验证过程中,对于smmu的性能缺乏有效且精准的评估手段。目前,本领域的技术人员普遍使用的smmu的性能评估手段是,使用操作系统用户态工具,例如fio,测试smmu的后端外设磁盘的读写性能,从而确定整个smmu的性能。然而,在通过fio等工具进行测试时,会经过操作系统复杂的文件系统栈,而文件系统栈各个层均会对测试结果产生影响,从而引入许多不确定因素,以致测试结果不准确。技术实现要素:4.为克服相关技术中存在的问题,本说明书实施例提供一种性能评估方法、装置、系统、存储介质及设备,用以解决相关技术中的缺陷。5.根据本说明书实施例的第一方面,提供一种性能评估方法,所述方法包括:6.驱动可编程测试引擎设备向系统内存管理单元发出内存访问请求,其中,所述可编程测试引擎设备是与装载所述系统内存管理单元的计算机设备连接的外部设备;7.采集所述系统内存管理单元翻译所述内存访问请求指向的内存地址时产生的性能数据;8.根据所述性能数据对所述系统内存管理单元的性能进行评估。9.根据本说明书实施例的第二方面,提供一种性能评估装置,所述装置包括:10.驱动模块,用于驱动可编程测试引擎设备向所述系统内存管理单元发出内存访问请求,其中,所述可编程测试引擎设备是与装载所述系统内存管理单元的计算机设备连接的外部设备;11.监控模块,用于采集所述系统内存管理单元翻译所述内存访问请求指向的内存地址时产生的性能数据;12.评估模块,用于根据所述性能数据对所述系统内存管理单元的性能进行评估。13.根据本说明书实施例的第三方面,提供一种性能评估系统,所述系统包括:14.物理连接的计算机设备和可编程测试引擎设备;所述计算机设备装载有系统内存管理单元;15.所述计算机设备用于:16.驱动可编程测试引擎设备向所述系统内存管理单元发出内存访问请求;17.采集所述系统内存管理单元翻译所述内存访问请求指向的内存地址时产生的性能数据;18.根据所述性能数据对所述系统内存管理单元的性能进行评估。19.根据本说明书实施例的第四方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现上述任意实施例所述的方法。20.根据本说明书实施例的第五方面,提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述任意实施例所述的方法。21.在上述技术方案中,由于本说明书实施例通过驱动fte设备发起对内存的读写操作,由于可编程测试引擎设备访问内存不需要经过复杂的操作系统的文件系统栈,因此,本说明书实施例将采集到的能够直接而不是间接反映出smmu翻译性能的性能数据进行评估,从而减少了许多不确定因素的影响。因此,与使用fio等操作系统用户态工具的方法相比,本说明书实施例提出的系统内存管理单元的性能评估方法更加准确。22.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本说明书实施例。附图说明23.图1是本说明书实施例根据一实施例示出的一种利用fio测试smmu性能的测试流程示意图。24.图2是本说明书实施例根据一实施例示出的一种系统内存管理单元的性能评估方法的流程图。25.图3是本说明书实施例根据一实施例示出的一种系统内存管理单元的评估装置的框图。26.图4是本说明书实施例根据一实施例示出的一种系统内存管理单元的性能评估装置的架构示意图。27.图5是本说明书实施例根据一实施例示出的另一种系统内存管理单元的性能评估装置的架构示意图。28.图6是本说明书实施例根据一实施例示出的另一种系统内存管理单元的评估装置的框图。29.图7是本说明书实施例根据一实施例示出的另一种系统内存管理单元的性能评估装置的架构示意图。30.图8是本说明书实施例根据一实施例示出的另一种系统内存管理单元的评估装置的框图。31.图9是本说明书实施例根据一实施例示出的另一种系统内存管理单元的性能评估装置的架构示意图。32.图10是本说明书实施例根据一实施例示出的一种系统内存管理单元的性能评估系统的架构示意图。33.图11是本说明书实施例根据一实施例示出的一种计算设备硬件的结构示意图。具体实施方式34.这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书实施例的一些方面相一致的装置和方法的例子。35.在本说明书实施例使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书实施例。在本说明书实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。36.应当理解,尽管在本说明书实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。37.fio是一种操作系统用户态工具,其功能是可以对磁盘进行多种方式的读写操作,从而测试出磁盘和文件系统的读写性能。而在cpu芯片设计中,磁盘是smmu的后端外设,当smmu使能的时候,磁盘会通过smmu来发起读写请求。因此,使用fio可以一定程度上反映smmu性能。然而,这种利用fio测试smmu性能的方式存在明显的缺点。38.如图1所示,图1是本说明书实施例根据一实施例示出的一种利用fio测试smmu性能的测试流程示意图。其中,以ext4(fourthextendedfilesystem,第四代扩展文件系统)的文件系统为例,描述了通过fio对nvme磁盘进行读磁盘请求或者写磁盘请求的整个过程。其中,nvme磁盘是指接口规范和传输协议为nvmexpress(non-volatilememoryexpress,非易失性内存主机控制器接口规范)的磁盘,是smmu的一种后端外设,会通过smmu来发起读写请求。首先,fio从操作系统用户态调用用户态的读写系统调用,再依次经过vfs(virtualfilesystems,虚拟文件系统)层、文件系统层以及block层,最终向nvme磁盘中写入数据。其中,如果当前管理磁盘的文件系统是ext4的话,则vfs层的读写系统调用接口调用ext4文件系统层的接口。在进入block层后,则开始向磁盘驱动提交写入的数据和方式等操作,nvme磁盘驱动此时则调用dma(directmemoryaccess,直接存储器访问)分配内存,建立io页表,此时,nvme磁盘硬件会使用返回的io虚拟地址请求smmu进行地址翻译,并且等到smmu返回物理地址后,再交给nvme磁盘进行读写数据,以结束整个测试流程。值得注意的是,在这个过程中,由于smmu后端外设并不会只有nvme磁盘一个,例如图1中,在nvme磁盘进行请求地址翻译的过程中,网卡(networkinterfacecard,nic)也会进行地址翻译请求,因此,smmu的算力资源同时也会被网卡共享。39.上述利用fio测试smmu性能的方式存在着如下缺点:40.第一,该方式的调用栈太深,影响因素太多,会严重影响对smmu性能的评估精度。如图1所示,由于fio的读写操作需要依次经过vfs层、文件系统层和block层,而这些中间层会受到操作系统其他软件模块的影响,比如,操作系统调度,内存分配,文件系统io等,从而进一步影响到fio测试的性能精度。因此,使用fio进行用户态读写,再通过查看文件系统的io性能的测试方式,会受到多个层次的影响,测试粒度大,最终会导致对smmu的性能的评估不够准确。41.第二,该方式在smmu层面没有细粒度的隔离策略,无法准确反映smmu性能。如图1所示,由于smmu可能会同时存在多个后端外设,例如网卡、磁盘等,因此,如果fio在对nvme磁盘进行读写的时候,网卡同时也向smmu发起翻译请求,那么fio发起的对磁盘的读写操作将会受到smmu响应网卡的翻译请求的影响,则使用fio测试得到的磁盘的读写速度就无法准确反映smmu响应磁盘的地址翻译请求的速度,以至于无法准确评估smmu的性能。42.第三,该方式只会显示文件读写的速度,并不会显示smmu的性能。由于使用fio工具的评估方式只会显示文件系统io的速率,并不会看到任何关于smmu的性能情况,因此,这种方式基本不能满足从硬件角度直接评估smmu的性能的要求。43.由于目前本领域普遍使用的smmu的性能评估方法存在着如上所述的问题,因此,在当前的cpu芯片设计验证的过程中,缺乏一种有效且精确的smmu的性能评估手段。44.对此,本说明书实施例提出了一种系统内存管理单元的性能评估方法,可以有效且精确地对smmu进行性能评估。45.如图2所示,图2是本说明书实施例根据一实施例示出的一种系统内存管理单元的性能评估方法的流程图,包括以下步骤:46.步骤s201,驱动可编程测试引擎设备向系统内存管理单元发出内存访问请求;47.步骤s202,采集系统内存管理单元翻译内存访问请求指向的内存地址时产生的性能数据;48.步骤s203,根据性能数据对系统内存管理单元的性能进行评估。49.在步骤s201中,可编程测试引擎设备(fabrictestengine,fte)是一种smmu的后端外设,与smmu所属的计算机设备连接,可以发起内存读写操作。当fte发起内存读写操作后,其发起的内存读写请求所指向的内存地址实际上是虚拟地址,因此,smmu会响应该内存读写请求,以将该虚拟地址的内存地址翻译成物理地址的内存地址,使得该起内存读写操作可以实现从内存中读取正确的数据,或者将数据写入内存中正确的位置中。50.由于fte发起的内存读写请求是直接通过smmu翻译地址后指向内存的,而不需要经过例如vfs层、文件系统层和block层等的多个层次的调用,因此,使用fte测试smmu的性能不容易受到操作系统其他模块的影响,其测试结果具有更高的准确性。51.进一步地,在一些实施例中,还可以通过特定的设备隔离方法,使得smmu仅采集fte的读写流量,从而减少其他后端外设,例如网卡、磁盘等同时发起的地址翻译请求对smmu的性能评估的影响,进一步提高对smmu的性能评估的准确性。52.在cpu芯片中,smmu的工作模式还可以设置为直通模式(passthrough模式。当smmu的工作模式设置为直通模式时,smmu将会对外部设备发送过来的地址不做任何操作,即不执行将虚拟地址翻译为物理地址的操作,而是直接将接收到的地址作为物理地址进行使用。此时,smmu将不会查找任何页表。53.在一些实施例中,上述特定的设备隔离方法可以是,在检测到存在除了fte以外其他的外部设备,例如nvme磁盘和网卡,与smmu所属的计算机设备连接时,将smmu对除了fte以外的所有其他外部设备的内存访问请求的响应模式配置为直通模式。在使用了上述特定的设备隔离方法后,对于smmu来说,例如nvme磁盘、网卡等外部设备将处于直通状态,即对于这些外部设备的内存访问请求的内存地址,smmu不会执行地址翻译操作,而是直接作为物理地址进行下一步的处理;而此时fte依然处于常规的工作状态,即其内存访问操作可以向smmu发起地址翻译请求,而smmu也会将fte的内存访问请求所指向的内存地址由虚拟地址翻译为物理地址。因此,通过上述设备隔离方法,可以使得所有与计算机设备连接的外部设备中,只有fte这一个外部设备可以向smmu请求地址翻译,从而smmu使能后也只会接收来自fte的地址翻译请求,因此,在该状态下,smmu内部的翻译信息只会记录来自fte这个外部设备的读写请求,从而排除了其他外部设备的影响,进一步的提高了对smmu的性能评估的准确性。54.然而,由于框架的限制,目前linux操作系统在将smmu设置为直通模式时,并不会区分不同的外部设备,使不同的外部设备可以处于不同的工作模式中,而是将smmu后端的所有外部设备均设置为直通模式。对此,为了能够实现进一步精确的评估,可以在操作系统的内核态中增加允许smmu设置为设备级别的直通模式的逻辑模块,以使不同的外部设备可以处于不同的工作模式中,即fte处于常规的工作模式,而其他外部设备则处于直通模式,实现设备隔离。55.在步骤s202中,smmu在翻译fte的内存访问请求指向的内存地址时,会产生并记录相应的执行数据,而这些数据在一定程度上可以反映smmu的性能,因此,这些数据可以作为smmu的性能数据,用于smmu的性能评估。56.具体地,smmu的性能数据可以包括smmu响应fte的读写请求数据。具体地,smmu响应fte的读写请求数据可以包括smmu在响应fte的内存访问请求的过程中所执行的地址翻译的请求次数(req),以及smmu响应fte的内存访问请求的总时长(time)。通过smmu完成翻译请求的次数req以及smmu完成翻译请求所消耗的时间time,即可计算出smmu此时的每秒完成的翻译请求次数qps,作为一个较为详细的性能指标,对smmu的性能进行评估。57.其中,qps的计算公式为:58.qps=req/time;59.具体地,smmu的qps越高,smmu单位时间内处理的地址翻译请求的次数就越多,smmu的性能也就越好;而smmu的qps越低,smmu单位时间内处理的地址翻译请求的次数就越少,smmu的性能也就越差。60.在smmu中,存在有tbu(translationbufferunit,翻译缓存单元)和tcu(translationcontrolunit,翻译控制单元)两个部件。其中,tbu用于缓存页表和tlb(translationlookasidebuffer,翻译后备缓冲区),而tcu则用于控制和管理地址翻译。smmu在执行一次地址翻译操作的过程中,需要依次查找ste表、cd表以及多个页表,才能将虚拟地址翻译为对应的物理地址。而smmu在完成一次地址翻译操作后,smmu会首先将该次地址翻译中所查找的ste表、cd表和页表,作为历史翻译数据,缓存在tbu中,以使得当外部设备再次发起地址翻译请求时,smmu可以先在tbu缓存的历史翻译数据中查找ste表、cd表和页表对应的表项。当smmu能在历史翻译数据中找到对应的表项,则可以不用再去内存中查找对应的表项,以此来加快查找速度。而当smmu在历史翻译数据中找不到对应的表项时,smmu再控制tcu从内存中依次查找ste表、cd表和页表等对应的表项。61.特别地,tbu中的tlb可以用于缓存虚拟地址和物理地址之间地映射关系,因此当外部设备的内存访问请求所指向的内存地址有记录在tlb中时,可以快速的获取到该内存地址翻译后的物理地址,进一步加快查找速度,因此,tlb也被称为快表。62.smmu在执行一次完整的地址翻译操作时,如果tbu中存在缓存的历史翻译数据时,会直接在tbu查找是否存在与当前的地址翻译请求对应的历史翻译数据,如果找到了对应的历史翻译数据,就直接使用该历史翻译数据执行本次的地址翻译操作,而如果找不到对应的历史翻译数据,则再通过tcu控制执行地址翻译操作,即在内存中查找对应的ste表、cd表和页表等对应的表项,从而将该地址翻译请求指向的地址由虚拟地址翻译为物理地址。63.显然,在地址翻译操作过程中,tbu和tcu计算所产生的数据也可以一定程度上反映smmu的性能。64.在一些实施例中,smmu的性能数据还可以包括tbu的性能数据和tcu的性能数据。65.具体地,tbu的性能数据可以包括以下数据中的一个或多个:66.执行时间cycles;67.快表未命中次数tlb_miss;68.数据收发次数transaction。69.具体地,tcu的性能数据可以包括以下数据中的一个或多个:70.缓存未命中的次数config_cache_miss;71.读写请求访问次数config_struct_access;72.执行时间cycles;73.快表未命中的次数tlb_miss;74.翻译时查找页表的次数trans_table_walk_access;75.数据收发次数transaction。76.在步骤s203中,根据smmu在相应fte的内存访问请求时采集的性能数据,可以对smmu的性能进行评估。77.例如,在一些实施例中,可以通过步骤s202所记录的smmu完成翻译请求的次数req,和smmu完成翻译操作所消耗的时间time,计算出smmu的每秒完成的翻译请求次数qps,则可以根据qps对smmu进行性能评估。具体地,smmu的qps越高,smmu单位时间内处理的地址翻译请求的次数就越多,smmu的性能也就越好;而smmu的qps越低,smmu单位时间内处理的地址翻译请求的次数就越少,smmu的性能也就越差。其中,qps的计算方式可参见上文,这里不再赘述。78.例如,在一些实施例中,还可以根据步骤s202所记录的tbu的性能数据和tcu的性能数据,将tbu和tcu的各个详细数据展示出来,通过tbu和tcu的实时数据,来反映smmu的性能。79.进一步地,在一些实施例中,还可以在步骤s202采集和记录tbu和tcu在历史性能数据,再在步骤s203中对比和分析tbu和tcu的历史性能数据,例如,计算出tbu和tcu的历史性能数据中的最高值、最低值或平均值,从长期反馈的tbu和tcu的性能数据中,反映出smmu的性能。80.进一步地,由于smmu中存在缓存的历史翻译数据,因此,smmu在响应fte的内存访问请求时,根据缓存中是否存在与fte的内存访问请求所指向的内存地址对应的历史翻译数据的情况的不同,smmu对fte的内存访问请求的响应速度也明显不同。81.具体地,当smmu的缓存中存在与fte的内存访问请求所指向的内存地址对应的历史翻译数据时,smmu可以直接根据该历史翻译数据完成地址翻译操作,因此,此时的smmu完成地址翻译操作所需要的时间最短,其反映出来的性能是最好的。82.而当smmu的缓存中不存在与fte的内存访问请求所指向的内存地址对应的历史翻译数据时,smmu需要再去内存中查找与该内存地址对应的ste表、cd表和页表等表项,并把ste表、cd表和页表等表项加载到缓存中,因此,此时的smmu完成地址翻译操作所需要的时间最长,其反映出来的性能也是最差的。83.在smmu真实的业务场景中,smmu执行地址翻译操作既有可能遇上最好的情况,也可能遇上最差的情况。84.在一些实施例中,为了能够更全面的展示smmu的性能,可以分别模拟出smmu性能最好的情况,以及smmu性能最差的情况,从而更准确地反映smmu的性能。85.在一些实施例中,可以在每次fte发起内存访问请求时,清空smmu的缓存,即将smmu中缓存的ste表、cd表和页表等表项以及tlb全部删除,从而使得无论fte的内存访问请求指向的内存地址是多少,都需要在内存中依次查找ste表、cd表、页表等对应的表项,并将查找到的ste表、cd表、页表等对应的表项加载到缓存中,才能完成fte的地址翻译请求,以模拟smmu性能最差的情况,从而测试出smmu在最差的情况下的性能情况。86.具体地,可以在采集smmu翻译fte的内存访问请求指向的内存地址时产生的性能数据之前,通知smmu查询是否存在缓存的历史翻译数据,如果存在历史翻译数据,则通知smmu先清空所有历史数据后再执行地址翻译操作;如果不存在,则通知smmu直接执行地址翻译操作。87.在一些实施例中,还可以在fte发起内存访问请求后,默认不执行缓存刷新,从而让smmu可以通过缓存中的历史翻译数据直接进行地址翻译操作,即执行快速翻译路径,以模拟smmu性能最好的情况,从而测试出smmu在最好的情况下的性能情况。88.具体地,可以在采集smmu翻译fte发起的内存访问请求后,通知smmu查询是否存在与fte的内存访问请求所指向的内存地址关联的历史翻译数据,如果存在与该内存地址关联的历史翻译数据,则通知smmu获取与该内存地址关联的历史翻译数据,并根据该历史翻译数据完成地址翻译操作;如果不存在,再通知smmu执行地址翻译操作。89.在一些实施例中,还可以分别模拟出smmu性能最好的情况,以及smmu性能最差的情况,并分别采集smmu最好情况下的性能数据和smmu最差情况下的性能数据,从而在两种不同的情况下评估smmu的性能。90.例如,在一些实施例中,可以模拟出smmu性能最好的情况,并采集该情况下smmu完成地址翻译请求的次数以及smmu完成地址翻译请求所消耗的时间,从而计算出smmu在性能最好的情况下的qps值,即max_qps;另外,再模拟出smmu性能最差的情况,再采集该情况下smmu完成地址翻译请求的次数以及smmu完成地址翻译请求所消耗的时间,从而计算出smmu在性能最差的情况下的qps值,即min_qps。基于分别在两种情况下获得的qps,可以得出一个详细的qps区间,即min_qps~max_qps,该qps区间也可以在一定程度上反映smmu的性能。91.值得注意的是,在计算smmu的qps区间时,既可以先计算max_qps,再计算min_qps,也可以先计算min_qps,再计算max_qps,本说明书实施例对max_qps和min_qps的计算顺序没有限制。92.类似的,在一些实施例中,还可以分别获取在smmu性能最好的情况下,tbu和tcu的性能数据,以及在smmu性能最差的情况下tbu和tcu的性能数据,从而反映出更详细的smmu的性能数据。93.与前文所述的系统内存管理单元的性能评估方法实施例相对应,本说明书实施例还提供一种系统内存管理单元的性能评估装置。94.如图3所示,图3是本说明书实施例根据一实施例示出的一种系统内存管理单元的性能评估装置的框图,包括以下模块:95.驱动模块310,用于驱动可编程测试引擎设备向系统内存管理单元发出内存访问请求;96.监控模块320,用于采集系统内存管理单元翻译内存访问请求指向的内存地址时产生的性能数据;97.评估模块330,用于根据性能数据对系统内存管理单元的性能进行评估。98.上述装置中各个模块的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。99.具体地,如图4所示,图4是本说明书实施例根据一实施例示出的一种系统内存管理单元的性能评估装置的架构示意图。其中,以spt(smmuperformancetest)指代本说明书实施例的系统内存管理单元的性能评估装置的实施例。应当理解的是,图4中示出的驱动模块310和监控模块320,以及未示出的评估模块330,既可以是图3所示装置实施例中的对应模块,也可以是其他装置实施例中的对应模块,图3所示实施例与图4所示实施例之间可以是同一个实施例,也可以是不同的实施例。100.具体地,如图4所示,spt包含了用户空间部分,和内核空间部分。101.其中,spt的用户空间部分主要负责通过调用驱动模块310的接口驱动底层的fte外设直接发起内存读写的请求,以及当读写请求完毕的时候,根据监控模块320的反馈,计算并打印或展示出此时smmu的qps,并且,spt会同时打印或展示出能够反映出smmu性能的各个性能数据,例如,smmu完成翻译请求的次数、smmu完成翻译请求所消耗的时间、tbu的性能数据以及tcu的性能数据等。102.而spt的内核空间部分则主要负责执行各个模块的功能。103.具体地,驱动模块310可以设置在spt的内核空间中,用于控制外部设备fte发起内存访问请求,而当fte发起内存访问请求后,计算机设备会将fte的内存访问请求所指向的内存地址发送给smmu,交由smmu将该内存地址由虚拟地址翻译为物理地址。104.具体地,监控模块320也可以设置在spt的内核空间中,用于监控并采集smmu的实时性能数据,监控模块320在采集的smmu的性能数据可以将性能数据发送至评估模块330进行进一步分析、计算和评估,最终将smmu的评估结果和各个性能数据在用户空间部分的画面中展示,或者打印出来。105.具体地,监控模块320采集的smmu的性能数据可以包括smmu响应fte的读写请求数据。具体地,smmu响应fte的读写请求数据可以包括smmu在响应fte的内存访问请求的过程中所执行的地址翻译的请求次数(req),以及smmu响应fte的内存访问请求的总时长(time)。106.在一些实施例中,如图5所示,图5是本说明书实施例根据一实施例示出的另一种系统内存管理单元的性能评估装置的架构示意图,其中,smmu中包括了tbu和tcu,当fte发起地址翻译请求操作时,smmu会先在tbu中查找是否存在匹配的缓存的历史翻译数据,如果存在,则直接根据该历史翻译数据执行地址翻译操作;如果不存在,再通过tcu执行地址翻译操作。特别地,监控模块320采集的smmu的性能数据还可以包括tbu和tcu的性能数据,以使对smmu的性能评估更加的全面和准确。107.特别地,评估模块330未在图4中示出。在一些实施例中,评估模块330可以设置在spt的内核空间中,用于计算和分析smmu的性能数据;在一些实施例中,评估模块330也可以设置在spt的用户空间中,用于展示smmu的评估结果和各个性能数据;在一些实施例中,评估模块330还可以同时设置在内核空间和用户空间中。应当理解的是,评估模块330的具体设置方法应当根据实际对smmu的评估方式决定,本说明书实施例对此不做限制。108.在一些实施例中,spt还可以通过特定的设备隔离方法,使得smmu仅采集fte的读写流量,从而减少其他后端外设,例如网卡、磁盘等同时发起的地址翻译请求对smmu的性能评估的影响,进一步提高对smmu的性能评估的准确性。109.如图6所示,图6是本说明书实施例根据一实施例示出的另一种系统内存管理单元的性能评估装置的框图,包括以下模块:110.驱动模块310,用于驱动可编程测试引擎设备向系统内存管理单元发出内存访问请求;111.监控模块320,用于采集系统内存管理单元翻译内存访问请求指向的内存地址时产生的性能数据;112.评估模块330,用于根据性能数据对系统内存管理单元的性能进行评估;113.隔离模块340,用于在检测到所述计算机设备连接有其他外部设备的情况下,将所述系统内存管理单元对所述其他外部设备的内存访问请求的响应模式配置为直通模式。114.上述装置中各个模块的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。115.如图7所示,图7是本说明书实施例根据一实施例示出的另一种系统内存管理单元的性能评估装置的架构示意图。其中,smmu对除了fte以外的所有其他外部设备,例如nvme磁盘和网卡,的内存访问请求的响应模式均配置为直通模式。因此,所有与计算机设备连接的外部设备中,只有fte这一个外部设备可以向smmu请求地址翻译,从而smmu使能后也只会接收来自fte的地址翻译请求,因此,在该状态下,smmu内部的翻译信息只会记录来自fte这个外部设备的读写请求,从而排除了其他外部设备的影响,进一步的提高了对smmu的性能评估的准确性。116.特别地,在图7所示的实施例中,spt的内核空间中可以设置有隔离模块340(图7中未示出),用于控制smmu,使smmu对除了fte以外的所有其他外部设备的响应模式均配置为直通模式,实现隔离其他外部设备的内存访问请求的功能。而在一些实施例中,spt也可以不设有隔离模块340,而是通过装置以外的其他方法使smmu对除了fte以外的所有其他外部设备的响应模式均配置为直通模式,实现隔离其他外部设备的内存访问请求的功能。117.在一些实施例中,spt还可以通过在smmu响应fte的地址翻译请求前,控制smmu清空缓存或者是不清空缓存,从而分别模拟smmu性能最差的情况和smmu性能最好的情况,以采集smmu在性能最差的情况下的性能数据和smmu在性能最好的情况下的性能数据。118.如图8所示,图8是本说明书实施例根据一实施例示出的另一种系统内存管理单元的性能评估装置的框图,包括以下模块:119.驱动模块310,用于驱动可编程测试引擎设备向系统内存管理单元发出内存访问请求;120.监控模块320,用于采集系统内存管理单元翻译内存访问请求指向的内存地址时产生的性能数据;121.评估模块330,用于根据性能数据对系统内存管理单元的性能进行评估;122.控制模块350,用于控制系统内存管理系统在每次地址翻译操作前清空缓存,或者是不清空缓存。123.上述装置中各个模块的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。124.在一些实施例中,控制模块350可以在每次fte发起内存访问请求时,控制smmu清空缓存,即将smmu中缓存的ste表、cd表和页表等表项以及tlb全部删除,从而使得无论fte的内存访问请求指向的内存地址是多少,都需要在内存中依次查找ste表、cd表、页表等对应的表项,并将查找到的ste表、cd表、页表等对应的表项加载到缓存中,才能完成fte的地址翻译请求,以模拟smmu性能最差的情况,从而测试出smmu在最差的情况下的性能情况。125.具体地,控制模块350可以在采集smmu翻译fte的内存访问请求指向的内存地址时产生的性能数据之前,通知smmu查询是否存在缓存的历史翻译数据,如果存在历史翻译数据,则通知smmu先清空所有历史数据后再执行地址翻译操作;如果不存在,则通知smmu直接执行地址翻译操作。126.在一些实施例中,控制模块350还可以在fte发起内存访问请求后,默认不执行缓存刷新操作,从而让smmu可以通过缓存中的历史翻译数据直接进行地址翻译操作,即执行快速翻译路径,以模拟smmu性能最好的情况,从而测试出smmu在最好的情况下的性能情况。127.具体地,控制模块350可以在采集smmu翻译fte发起的内存访问请求后,通知smmu查询是否存在与fte的内存访问请求所指向的内存地址关联的历史翻译数据,如果存在与该内存地址关联的历史翻译数据,则通知smmu获取与该内存地址关联的历史翻译数据,并根据该历史翻译数据完成地址翻译操作;如果不存在,再通知smmu执行地址翻译操作。128.如图9所示,图9是本说明书实施例根据一实施例示出的另一种系统内存管理单元的性能评估装置的架构示意图。其中,spt的内核空间中设置有控制模块350,可以分别设置为不刷新缓存和刷新缓存两种模式,分别用于模拟出smmu性能最好的情况,以及smmu性能最差的情况,并分别采集smmu最好情况下的性能数据和smmu最差情况下的性能数据,从而在两种不同的情况下评估smmu的性能。129.对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本说明书实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。130.本说明书实施例还提供一种系统内存管理单元的性能评估系统,如图10所示,图10是本说明书实施例根据一实施例示出的一种系统内存管理单元的性能评估系统的架构示意图。其中,该系统内存管理单元的性能评估系统包括:131.物理连接的计算机设备1001和可编程测试引擎设备(fte)1002,计算机设备1001上则装载由系统内存管理单元(smmu)1003。132.其中,fte1002用于在计算机设备1001的驱动下向smmu1003发出内存访问请求。133.其中,计算机设备1001可以执行以下步骤:134.驱动可编程测试引擎设备向系统内存管理单元发出内存访问请求;135.采集系统内存管理单元翻译内存访问请求指向的内存地址时产生的性能数据;136.根据性能数据对系统内存管理单元的性能进行评估。137.在本说明书实施例中,计算机设备1001还可以用于执行本说明书实施例的系统内存管理单元的性能评估方法的上述任一方法实施例的各个步骤。138.例如,在一些实施例中,计算机设备1001还可以用于在检测到存在除了fte1002以外其他的外部设备,例如nvme磁盘和网卡,与smmu1003所属的计算机设备连接时,将smmu1003对除了fte1002以外的所有其他外部设备的内存访问请求的响应模式配置为直通模式。139.例如,在一些实施例中,smmu1003的性能数据可以包括smmu1003响应fte1002的读写请求数据。在一些实施例中,smmu1003响应fte1002的读写请求数据可以包括smmu1003在响应fte1002的内存访问请求的过程中所执行的地址翻译的请求次数(req),以及smmu1003响应fte的内存访问请求的总时长(time)。140.例如,在一些实施例中,计算机设备1001还可以用于在每次fte1002发起内存访问请求时,清空smmu1003的缓存,即将smmu1003中缓存的ste表、cd表和页表等表项以及tlb全部删除,从而使得无论fte1002的内存访问请求指向的内存地址是多少,都需要在内存中依次查找ste表、cd表、页表等对应的表项,并将查找到的ste表、cd表、页表等对应的表项加载到缓存中,才能完成fte1002的地址翻译请求,以模拟smmu1003性能最差的情况,从而测试出smmu1003在最差的情况下的性能情况。141.例如,在一些实施例中,计算机设备1001可以在采集smmu1003翻译fte1002的内存访问请求指向的内存地址时产生的性能数据之前,通知smmu1003查询是否存在缓存的历史翻译数据,如果存在历史翻译数据,则通知smmu1003先清空所有历史数据后再执行地址翻译操作;如果不存在,则通知smmu1003直接执行地址翻译操作。142.例如,在一些实施例中,计算机设备1001还可以用于在fte1002发起内存访问请求后,默认不执行缓存刷新,从而让smmu1003可以通过缓存中的历史翻译数据直接进行地址翻译操作,即执行快速翻译路径,以模拟smmu1003性能最好的情况,从而测试出smmu1003在最好的情况下的性能情况。143.例如,在一些实施例中,计算机设备1001可以在采集smmu1003翻译fte1002发起的内存访问请求后,通知smmu1003查询是否存在与fte1002的内存访问请求所指向的内存地址关联的历史翻译数据,如果存在与该内存地址关联的历史翻译数据,则通知smmu1003获取与该内存地址关联的历史翻译数据,并根据该历史翻译数据完成地址翻译操作;如果不存在,再通知smmu1003执行地址翻译操作。144.在本说明书实施例中,计算机设备1001的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。145.本说明书实施例还提供一种计算机设备,其至少包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,处理器执行所述程序时实现前述任一实施例所述的方法。146.图11示出了本说明书实施例所提供的一种更为具体的计算设备硬件结构示意图,该设备可以包括:处理器1101、存储器1102、输入/输出接口1103、通信接口1104和总线1105。其中处理器1101、存储器1102、输入/输出接口1103和通信接口1104通过总线1105实现彼此之间在设备内部的通信连接。147.处理器1101可以采用通用的cpu(centralprocessingunit,中央处理器)、微处理器、应用专用集成电路(applicationspecificintegratedcircuit,asic)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本说明书实施例所提供的技术方案。处理器1101还可以包括显卡,所述显卡可以是nvidiatitanx显卡或者1080ti显卡等。148.存储器1102可以采用rom(readonlymemory,只读存储器)、ram(randomaccessmemory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器1102可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器1102中,并由处理器1101来调用执行。149.输入/输出接口1103用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。150.通信接口1104用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如usb、网线等)实现通信,也可以通过无线方式(例如移动网络、wifi、蓝牙等)实现通信。151.总线1105包括一通路,在设备的各个组件(例如处理器1101、存储器1102、输入/输出接口1103和通信接口1104)之间传输信息。152.需要说明的是,尽管上述设备仅示出了处理器1101、存储器1102、输入/输出接口1103、通信接口1104以及总线1105,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。153.本说明书实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现前述任一实施例所述的方法。154.计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。155.通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本说明书实施例可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本说明书实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本说明书实施例各个实施例或者实施例的某些部分所述的方法。156.上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。157.本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,在实施本说明书实施例方案时可以把各模块的功能在同一个或多个软件和/或硬件中实现。也可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。158.以上所述仅是本说明书实施例的具体实施方式,应当指出,对于本
技术领域
:的普通技术人员来说,在不脱离本说明书实施例原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本说明书实施例的保护范围。当前第1页12当前第1页12
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献