LabVIEW更高的吞吐量与更少的延迟A

简介: LabVIEW更高的吞吐量与更少的延迟A

LabVIEW更高的吞吐量与更少的延迟1


在设计系统时,“速度”有两个含义。“需要多快采集样品?”通常转化为吞吐量。“样本后需要多快获得结果?”通常转化为延迟。


在大多数测量或控制应用中,目标是将真实世界的数据从信号中获取到某种逻辑或算法中。在软件变得容易访问之前,此类应用程序完全在硬件中实现-通常是模拟电路。虽然一些应用继续为其算法使用定制的专用硬件实现,但如今大多数控制或测量算法都是在软件中实现的。软件允许大幅简化和减少实施、设计迭代和测试。它还允许更多的抽象,以将工作细节的级别简化到可管理的范围。


其中一个测量和控制系统的设计侧重于将来自物理世界的信号获取到软件中的算法中。


将单个测量值纳入算法需要什么?


首先看看如何将单个单点测量从物理世界转换为软件算法。


图1:测量和控制系统围绕将信号测量结果导入算法的目标而构建。


与所有流程一样,这不是即时的。主要的延误可分为三类。


•首先是信号调理和模数转换。这与将物理信号转换为数字电子信号有关。这里可能有过滤器或其他进程。由于物理限制,即使是最快的数模转换器(DAC)也具有最大速度。


•第二,硬件通信。这包括将信号从DAC传输到软件执行系统(如PC)所需的所有过程。其中最大的部分是总线延迟。


•第三个延迟是特定于软件的,包括将信号输入正确的内存并将其传送到算法所需的任何软件或内存传输。这可能涉及DMA读取操作、处理中断和其他操作,例如将数据复制到算法中。


图2:延迟的三种一般类别


为了量化这些,在一些慢速、高精度设备上,每个样本的采样速率可能慢至约1秒。另一方面,有些设备可以在GS/s范围内采样。硬件通信的范围从微秒到几十毫秒不等,具体取决于总线和系统架构。软件处理和内存传输由软件的速度驱动,并且可以根据处理器的性能以及软件的设计而有很大差异。


最后,在获得结果之前,需要完成算法所需的时间。这种计算可以是一个简单的任务,如PID控制或缓冲并将其写入磁盘,也可以涉及更高级的计算,如基于微分方程的仿真模型的计算。


因此,从信号到算法的路径可以像这样分解:


图3:三种一般延迟类别及其各自的时间。


什么是吞吐量和延迟?


延迟是完成操作所需的时间。它以时间单位测量,通常以毫秒、微秒和纳秒为单位。在许多应用(如控制应用)中,重要的是往返延迟。这是从输入到输出的时间。在这种情况下,信号不仅必须沿链向上传输到算法,而且必须再次沿链向下传输到可以输出物理信号的数模转换器。


吞吐量是系统可以处理输入的速率。它是每个给定时间的测量量。它不是衡量它们有多近,而只是衡量它们的数量。吞吐量通常以每秒样本数(S/s)表示,但值得注意的是,许多计算机组件的额定值为B/s、MB/s、GB/s等。这些组件会影响系统的总吞吐量。一个常见的同义词是术语带宽。


在了解了一次测量如何从信号到算法之后,如何更快地完成?有两种方法可以做到这一点,有两种不同的结果。一个是提高吞吐量,另一个是减少延迟。


提高吞吐量


操作的计时方式会严重影响吞吐量。有两种方法可以对测量的采集进行计时。首先是软件定时:它需要来自计算机的输入来控制采集,并且时序在软件中进行管理。由于计算机软件提供了命令,因此要连续多次发生,将需要软件循环和相同的步骤。此外,大部分延迟主要是由过程的软件控制部分主导的。


图4:软件定时采集


然后是硬件时序,它与先进先出缓冲区(FIFO)结合使用。芯片上的硬件时钟以精确的间隔采集样本,并将其推入缓冲液和链中。这可用于提高采样速度。它还允许每个操作传递一组数据点而不是单个数据点,从而节省开销并提高操作效率。此概念(取决于其应用位置)可以称为数组操作、缓冲操作、向量操作或批处理操作。这样,一次可以处理更多的样品,并且可以减少样品之间的时间。


硬件时序和缓冲器是有利的,因为通过这些过程中的每一个的开销是针对每批样品而不是每个样品产生的。这样,即使硬件通信可能每十个样本发生一次,如果每次发送十个样本,则采样率可能是硬件通信速率的十倍。


图5:硬件定时采集,使用FIFO和硬件定时提高吞吐量


这里所做的并不是加快系统作为一个整体迭代的速度。相反,它在给定的时间内推送了更多的数据。就采样率而言,它有效地让软件延迟时间除以缓冲区中的项目数。正是这一重大进步将当今每秒抖动100到150个样本的软件定时最大速率提高到最快设备的GS/s速率。这是6或7个数量级的改进。


缓冲区和硬件计时以吞吐量的改进为中心,而不是帮助减少延迟。事实上,额外的缓冲区可能会损害延迟。


需要说明的是,上述的例程和文档,都是可以下载的,双击即可打开,其中压缩文件是可以采用粘贴复制的方式,拷贝到硬盘上。这不是图片,各位小伙伴看到后尝试一下,这个问题就不用加微信咨询了。有关LabVIEW编程、LabVIEW开发等相关项目,可联系们。附件中的资料这里无法上传,可去公司网站搜索下载。

相关文章
|
5天前
|
传感器 算法 测试技术
LabVIEW更高的吞吐量与更少的延迟2
LabVIEW更高的吞吐量与更少的延迟2
16 2
|
5天前
|
缓存 负载均衡 算法
【软件设计师备考 专题 】性能指标(响应时间、吞吐量、周转时间)和性能设计
【软件设计师备考 专题 】性能指标(响应时间、吞吐量、周转时间)和性能设计
53 0
|
5天前
|
存储 前端开发
【源码共读】大并发量如何控制并发数
【源码共读】大并发量如何控制并发数
48 0
|
7月前
|
缓存 算法 Cloud Native
面试技巧:如何在有限时间内优化代码性能
面试技巧:如何在有限时间内优化代码性能
34 0
|
9月前
|
并行计算
R语言多线程使用方法,充分利用计算资源实现高效计算,缩短等待时间
R语言多线程使用方法,充分利用计算资源实现高效计算,缩短等待时间
|
9月前
|
编解码 负载均衡 测试技术
使用i9-9880H测试h264/265编解码开销
使用i9-9880H测试h264/265编解码开销
73 0
|
11月前
|
数据采集 缓存 算法
m基于多属性决策判决算法的异构网络垂直切换matlab性能仿真,对比网络吞吐量,网络负载,平均切换次数,阻塞率,回报值
m基于多属性决策判决算法的异构网络垂直切换matlab性能仿真,对比网络吞吐量,网络负载,平均切换次数,阻塞率,回报值
180 0
|
SQL NoSQL 安全
只改了五行代码接口吞吐量提升了10多倍
首先,提升日志打印级别到DEBUG。emm... 提升不大,好像增加了10左右。 然后,拆线程 @Async 注解使用线程池,控制代码线程池数量(之前存在3个线程池,统一配置的核心线程数为100)结合业务,服务总核心线程数控制在50以内,同步增加阻塞最大大小。结果还可以,提升了50,接近200了。
140 0
|
SQL 存储 关系型数据库
延迟优化|学习笔记
快速学习延迟优化
83 0
延迟优化|学习笔记
|
机器学习/深度学习 人工智能 算法
速度高达百万帧/秒,颜水成团队开源RL环境并行模拟器,大幅节省CPU资源
在强化学习(RL)智能体模拟训练中,环境高速并行执行引擎至关重要。最近,新加坡 Sea AI Lab 颜水成团队提出一个全新的环境模拟并行部件 EnvPool,该部件在不同的硬件评测上都达到了优异的性能。
182 0
速度高达百万帧/秒,颜水成团队开源RL环境并行模拟器,大幅节省CPU资源