本文转自:http://www.eetop.cn/blog/html/28/1561828-445859.html

在迈过了效能验证的坎以后,我们来到了性能(performance)验证部分。顾名思义,在这部分验证当中我们需要测试芯片的性能,而测试性能又离不开大量的运算或者数据传输。我们之前提到过,硅前RTL验证的瓶颈之一在于仿真速度,而且一旦到了芯片级仿真,这一因素就更进一步放大了。

由于在产品定义过程中,对于系统的运算和数据传输都有要求,如果可以在产品实现阶段尽早地得出一些基本数据,从而为硅后测算出一些性能数据,那么这不但可以帮助提前指明硬件实际性能是否满足,在有时间的情况下对于可以调整的硬件设计还可以做出完善性能的修改,同时,这种将性能测试提前的方式也可以使得硅前验证与硅后测试使用的性能测试用例保持一致,进而得出有帮助的性能数据。

性能验证是用来衡量一个系统在特定工作负载下它的响应能力和稳定性,同时通过性能报告也可以用来分析和优化系统的质量标准,例如可靠性和资源使用能力。性能验证是一门实用的计算机科学工程方法,且在软件工程测试中分类较多,譬如有负载测试(load testing)、压力测试(stress testing)、浸泡测试(soak testing)、尖峰冲击测试(spike testing)、配置测试(configuration testing) 、隔断测试(isolation testing)等。

目前在硅前验证阶段,性能验证还是一个新颖的概念,一方面由于业界对这一测试还没有形成一致的定义和验收标准,另外也是由于性能验证更多地是在衡量测试指标,而与验证(判断设计是否与功能描述一致)本身的聚焦不太重合。但是,对一些性能要求(同样对于功耗要求)较严格的硬件设计,我们确实希望在更早期就得出一些数据,而且最好能够赶得上给设计做出反馈并且完善设计,做更早期的回馈,以此来降低开发成本。所以,这就要求我们能够自己先定义出硅前性能验证的目标、环境和方法。

设定目标

目前我们主要将性能验证主要侧重在负载测试和压力测试上面,来完成下面的目标:

  • 证明系统(或者子系统)的性能是否符合产品要求。
  • 衡量哪一部分的子系统会成为整个系统或者某些特性要求的瓶颈。

在我们开始性能测试之前,应该首先问一问自己“为什么我们要进行性能验证?”,因为只有朝着明确的性能目标方向,才能得出下面的一些测试数据:

  • 数据并发量(concurrency)/吞吐量(throughput):测试数据并发量是系统整体性能的考量,因为在某一个时间段,多个子系统会并行工作,而且共享一些网络和内存资源;测试吞吐量是就整个一条完整的数据通路,来测算出它的它的最大吞吐量或者传输速率,例如测试USB的传输速率。
  • 响应时间:这集中体现在,处理器访问寄存器和存储器的读写回路延迟,也可以适用于其它协处理器或者DMA(Direct Memory Access)。

实际上我们很难在性能验证计划中具体描述出测试方式和场景,而性能验证计划又应该列在硬件设计之前。在实际项目中,我们不能很好地知道软件使用硬件的场景,已经应用软件如何调度不同硬件模块,所以我们只能首先将目光着眼于单个子系统的性能测试,或者通过测试单一的数据链路找到最薄弱的节点。因为上面这种方式可以将复杂的问题降维到可以理解可以描述测试场景的难度。

测试环境

理想地来看,如果测试环境贴近于用户实际使用的情况,我们得出的数据会更加真实有意义,然而作为硅前硬件实现阶段,我们与用户的距离又何其远。退而求其次,我们希望可以通过和固件开发团队合作,找到一些典型的子系统应用场景,在硬件仿真上实现来观察子系统的性能。

同时为了将测试的成本降低,我们尽可能选择原有的功能验证的环境,通过动态的环境配置或者仿真开关来实现监视系统性能的组件。这些监视性能的组件可以分为:

  1. 在线监视(online monitoring):一般将一些监视器(monitor)绑定到目标模块或者总线上面,来动态监测目标的运算处理量或者数据传输速度。
  2. 线下分析(offline analysis):将监视到的数据首先通过仿真记录下来,通过线下的脚本分析,绘制出性能的波动曲线。

验证方法

从性能验证流程来看,目前我们参照微软的性能测试方法学流程,它包括以下步骤:

  1. 构建验证环境:一般利用现有的功能验证环境,通过更新使其可以完成性能检测和分析的任务。
  2. 决定性能验收标准:在测试之前首先限定反馈时间、吞吐量、资源利用率等验收标准。一般而言,对于硅前测试,我们可以测出反馈时间和吞吐量,而资源利用率是一个系统概念,较难测试。
  3. 制定计划和测试用例:需要同系统人员、固件人员一同列出重要的测试场景,同时建立可以衡量性能的表格。
  4. 配置测试环境:如果环境足够灵活,我们甚至可以在递归测试(regression test)中开关性能检测功能,来平均衡量子系统的性能。
  5. 开发用例和测试:开发测试用例,提交和检测带验模块,收集性能检测数据。
  6. 分析结果、反馈和再测试:分析测试数据,提交性能报告,如果硬件性能与计划的性能之间有缺口需要硬件做出修改。而后在此测试,直到硬件性能符合预期,满足验收标准方可结束。

正如前面提到的,实际项目中的性能测试除了不规范和较难实现意外,也缺少明确的验收标准。这就使得不同验证人员编写的测试用例距离真实情况应用的差别不等,而且检查性能的标准也各不相同。目前,我们通过下面一些形式来帮助实现性能验证:

  • 在芯片网络结构的端点处(network terminal)绑定总线协议的监测器,以此来在网络核心出检测芯片整体的通信情况,计算网络的实时吞吐量,以及单个挂接的子系统的数据传输速率。
  • 将一些RTL仿真较为耗时的测试用例迁移到硬件加速平台,利用emulator来完成性能测试。
  • 为测试用例提供一些宏定义用来做高密度数据传输,以此来保证有足够的数据量用来测试数据传输的饱和峰值。

验证的方法篇之七:性能验证相关推荐

  1. laravel 验证email方法及注意 - 以及验证正则表达式的使用

    最近使用laravel 框架做了一个后台管理的一个项目. 项目中碰到最多的就是对表单提交的数据验证,laravel框架自带验证的中间件(个人挺喜欢用laravel的). 一.验证email方法及注意 ...

  2. 验证的方法篇之五:硬件加速

    本文转自:http://www.eetop.cn/blog/html/28/1561828-445857.html 我们之前介绍过的动态仿真和静态检查方法各自具有优势,然而它们都不具备的一个优势在于速 ...

  3. java后台正则表达式验证多种方法--(港澳证件验证)

    可以先在浏览器控制台测一下你所写正则表达式是否正确: /*** 是否是港澳证件号* * @param str* @return*/public static boolean isIdCard3(Str ...

  4. 4由通道检测_博唐平四通道糖化血红蛋白检测仪通过上海临检中心性能验证(二)...

    对于检验科医生来说,室内精密度(通常以变异系数CV值来表示)是评价一个检测系统(包括设备及配套耗材)是否可靠的重要参数.由于糖化血红蛋白(HbA1c)被临床上广泛应用于糖尿病筛查.诊断.治疗.监控,是 ...

  5. 验证的计划篇之二: 计划的内容

    本文转自:http://www.eetop.cn/blog/html/28/1561828-513657.html 在制定验证计划的具体过程中,我们会将技术部分和项目部分都考虑进来.从技术角度而言,我 ...

  6. ASP.NET MVC 5 - 验证编辑方法(Edit method)和编辑视图(Edit view)

    在本节中,您将验证电影控制器生成的编辑方法(Edit action methods)和视图.但是首先将修改点代码,使得发布日期属性(ReleaseDate)看上去更好.打开Models \ Movie ...

  7. 关于WEB ServiceWCFWebApi实现身份验证之WebApi篇

    之前先后总结并发表了关于WEB Service.WCF身份验证相关文章,如下: 关于WEB Service&WCF&WebApi实现身份验证之WEB Service篇. 关于WEB S ...

  8. Java nginx 双向ssl_使用Nginx实现HTTPS双向验证的方法

    https单向验证应用广泛想必大家都很熟悉,我已经在一篇博文中分享过,这次来看看Nginx如何实现双向验证. 单向验证与双向验证的区别: 单向验证: 指客户端验证服务器端证书,服务器并不需要验证客户端 ...

  9. paper 35 :交叉验证(CrossValidation)方法思想

    交叉验证(CrossValidation)方法思想简介 以下简称交叉验证(Cross Validation)为CV.CV是用来验证分类器的性能一种统计分析方法,基本思想是把在某种意义下将原始数据(da ...

最新文章

  1. 关于sql中case when的用法
  2. AspNetPager分页控件
  3. Java常用的设计模式总结
  4. ioremap 与 mmap【转】
  5. 【机器学习】贝叶斯学派与频率学派有何不同?
  6. Delphi 字符串转十六进制
  7. 使用摄像头录像后,需要删除系统缓存数据!
  8. android 覆盖安装问题
  9. heic怎么查看,如何打开heic
  10. 不错的向上滚动广告代码
  11. 【Tensorflow】Windows下基于Anaconda的Tensorflow环境配置
  12. 扫雷android源代码,Android实现扫雷小游戏
  13. 高数18讲_1000题错题总结_第一讲
  14. MyBatis入门(五)---延时加载、缓存
  15. HBase的安装和配置
  16. 华为ensp命令大全_从零开始学习华为路由交换 | 配置接口IP
  17. matlab求复数的模
  18. 智慧屏鸿蒙,荣耀智慧屏体验评测:鸿蒙OS首款产品,真正的智慧中心
  19. 内网渗透测试:内网横向移动基础总结
  20. 黑马全新推出《2022年最实用的PS全套教程》

热门文章

  1. 【双节快乐】十万人都在疯转的国旗中秋专属头像
  2. HTMLCSS超文本标记语言编程
  3. Java101班1组作业完成情况
  4. 华为云灾备解决方案,助力企业高效构建安全合规云灾备系统
  5. 【杂篇 · 技巧】Typora 快捷键整理
  6. C语言通讯录系统程序设计
  7. x10ti怎么禁用核显_4800h和10875h强者对决,英特尔这回给力了
  8. SSL证书-NginX安装指南
  9. 华中科技大计算机考研相关信息
  10. 9种防止电脑辐射的方法