DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1814|回复: 0
打印 上一主题 下一主题

[待整理] 高速数据流盘处理:编程与标定

[复制链接]
跳转到指定楼层
楼主
发表于 2015-4-26 20:06:15 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
引言

流处理是指以足够维持连续采集或信号生成的高速率将数据传输至仪器或从仪器输出。这就意味着任一项流处理应用的性能总是受限于数据的大小和传输速度。许多工程师利用了“流处理”技术,但是在很多应用中,数据无法以足够快的速率被生成或采集。在这些情况下,工程师们必须折衷处理,或者以足够低的采样率对要通过总线传输的数据进行采样,或者以所需的高速率进行采样但所持续时间较短(这个时间受限于仪器的板载存储器)。然而,无论哪一种的牺牲都不是我们希望的。

传统意义上,桌面仪器系统,如示波器、逻辑分析仪和任意波形发生器等,都已经实现了一定程度的数据流处理。虽然许多仪器具有非常高的采样率和带宽,但是与PC接口以返回数据给用户的总线却时常被忽略,实际上它会大大增加整体测试时间。例如,用独立示波器进行的大部分数据采集时间都是有限的,采集的持续时间由示波器中板载存储器的大小所决定(一台?立任意波形发生器也面临同样的问题,除非待发生的波形是直接下载到板载存储器中)。数据采集完成之后,数据通过以太网(或者更为常用的GPIB)传输至控制PC。试考虑这样一种情形,事件触发之后以1GS/s的速率对数据进行采样。如果该设备每通道具有256MB的板上存储空间,那么约250ms后存储器就被写满了,数据采集就会停下来。如果仪器接口使用GPIB总线(其带宽约为1MB/s),那么用户必须等待约4.5分钟(250s),这些数据才可以传输至计算机供分析使用。现在,将其与具有相同采样率和板上存储空间的NI数字化仪/示波器相比较。相同的数据通过高带宽的PCI/PXI总线传输仅需要不到3秒的时间——超过80倍的性能提升。PCI Express/PXI Express总线甚至支持更快速的数据传输。

流处理技术

在PCI Express技术之上构建的PXI Express,为每台仪器提供专用的带宽。PCI Express包括x1、x4、x8和x16等几种链路(读为"乘1"、"乘4"等),提供每通道250MB/s的吞吐量并具有极低的时延。对于仪器级硬件,x1与x4选项最为常见,它们分别提供了250MB/s和1GB/s(4×250MB/s)的专用吞吐量。相应地,整个系统的吞吐量随机箱内仪器数的增加而增加。下图着重阐述了各种总线的带宽与时延比较。时延描述的是数据传输中所发生的延迟,它常常在考虑系统设计时被忽略。许多人认识到,更高的带宽是希望得到的,但高时延也会对测试时间存在不利影响,所以也应当在系统设计中被考虑。

            
图1:常见仪器总线的带宽与时延的比较。

            
  
PXI平台,由于基于高带宽的PCI与PCI Express总线,因而支持仪器将数据流导入到除板上设备存储器之外的信号源或从其导出。一个PXI/PXI Express数字化仪/示波器能够以高采样率持续采集数据,因为高带宽总线支持将数据以高达1GB/s的速率实时传送至PC存储器或硬盘,这意味着数据可以在在设备存储器中被覆盖之前被读取。

数据采集或信号发生的瓶颈不再是总线,而实际上是对系统存储器(硬盘驱动器或者RAID阵列)进行读取/写入数据的操作。这就意味着工程师们可以以其所需的高采样率长时间采集数据或发生信号,而不必影响其采样率或测试时间。例如,利用一个PXIe-5122数字化仪与一个具有4TB容量的、12驱的RAID阵列,可以在两个同步采样的通道以100MS/s的最大采样率采集数据,持续时间超过2.5小时。

所有这些意味着什么?许多应用挑战因需要非常昂贵的专有系统而在先前无法解决,但由于使用商业可用的PXI Express,解决这些挑战变得可行。其中,一些应用包括信号智能中的RF/IF数据流处理、数据记录与回放、面向图像传感器与显示面板测试的数字视频发生/流处理,以及其它高数据吞吐量的应用。

数据流盘应用的最优方法

应用从单线程到多线程架构的演进被广泛认为是重大的编程挑战。LabVIEW为多核处理器提供了一个理想的编程环境,因为LabVIEW应用在本质上是多线程的。因而,LabVIEW编程人员通过几乎很少甚至无需额外的编码,便可以从多核处理器获益。多线程应用程序非常适用于并行测试和数据流盘应用,而且,在流处理应用中运用适当的编程技术,可以使PXI Express仪器发挥最大性能,这是通过代码的并行化完成的。

同样,并行机制还可以应用于创建数据流盘应用或从计算机处理器获取最大性能。在流盘应用中,两个主要占用总线和处理器的任务是:1)从数字化仪采集数据,和2)将数据写入到文件中。由于这一点是事先知道的,所以进程可以划分为多个循环。利用LabVIEW队列机构,每个循环间实现了数据共享。通常,这被称为一个生产者-消费者算法结构。

            
图2:带有队列结构的生产者/消费者循环架构。

            

在上例中,上面的循环(生产者)从一个高速数字化仪中采集数据,并将其传递至一个队列。下面的循环(消费者)从队列中读取数据并将其写入到磁盘。在后台,LabVIEW为队列在PC中分配一个存储块。该存储器模块被用作两个循环间数据传递的临时存储FIFO。对于大多数编程语言,多个进程间的存储器共享要求不菲的编程开销。然而,LabVIEW处理了所有的存储器访问,以确保读-写竞争状况不会发生。队列结构的执行可以通过下图可视化展示:

            
图3:对列结构的数据流编程模型。

            

数据自数字化仪采集后,存储在一个采用队列结构(元素0、元素1、...、元素N-1、元素N)的先入先出(FIFO)缓冲存储器内。如图所示,队列可以在多个循环间传递数据。"元素出队列"访问同一个存储器FIFO,以相同的顺序读取数据(从元素0开始)。LabVIEW自动为两个while循环创建独立的执行线程,由于一项任务的完成不必占用整个程序的执行时间,流盘应用从这样的并行执行中获益匪浅。相比之下,利用大多数文本编程语言所采用的顺序模型,性能会显著降低。

数据流盘的速率除了受整体的应用架构影响,还会受到许多其它因素的影响。比如,后台程序就会降低磁盘的读写速度,包括病毒扫描、硬盘格式化、系统恢复、磁盘碎片整理、甚至文件在硬盘驱动器上的位置。理想情况下,为数据指定一个独立的硬盘驱动器(或RAID阵列),将有助于解决这些问题。

数据流导入或导出磁盘的基准

前面介绍了传统仪器系统的数据流盘速度如何受限于通过总线可以传递的数据量大小。PXI/PXI Express的高带宽彻底改变了这一瓶颈--存储系统的读写速度成为新的限制因素。对于大多数PXI控制器,硬盘能够达到的速度约为40MB/s。然而,这些磁盘速率可以利用外部ExpressCard或PXI Express RAID-0硬盘驱动器配置得到显著提高。RAID(独立磁盘冗余阵列)技术是一种集合多个硬盘驱动器以获得更高的磁盘速度的简易方法。目前的RAID-0硬盘驱动器配置,对于ExpressCard系统可以实现高达140MB/s的速率,对于x4的PCI Express配置可以实现高达600MB/s的速率。

在计算一个仪器的数据流导入磁盘或数据流导入存储器的吞吐量时,我们可以利用下面的等式:

吞吐量=采样率x字节/采样x通道数

对于一个具有x4连接端子的NI PXIe-5122高速数字化仪,两个14-位通道以最大采样率100MS/s进行采样,就转换为400MB/s的总线传输速率。该速率在x4的PCI Express带宽范围内,因而,我们能够利用RAID-0硬盘驱动器配置处理数据流导入磁盘的应用。利用PXIe-5122高速数字化仪,数据流盘应用可以达到如下基准:


            
图4:对于PXIe-5122高速量化仪的最大数据流导入磁盘速率。

            

对于PXIe-5122的上述基准,以及下面的PXIe-6537基准,使用了一个PXI Express双核控制器以及一个x4 PXI Express RAID-0硬盘驱动器配置。测得最大硬盘驱动器写入速率为650MB/s,对应上面所示测试结果的采集数据大小约为40GB。该测试中所用的PXIe-5122设备具有256MB的板上存储空间。

对于一个具有一个x1连接端子的NI PXIe-6537高速数字I/O模块,32个通道全部以最大时钟速率50MHz进行采样,将转换为200MB/s的总线传输速率。利用PXIe-6537高速数字I/O模块,以及RAID-0硬盘驱动器配置,数据流导入磁盘和数据流导出磁盘应用能够实现如下基准:


            
图5:对于PXIe-6537高速数字I/O的最大数据流导入/导出磁盘速率。

            

需要特别说明的一个数据是32个或更多个通道的数据流导出磁盘(信号发生)的吞吐量。较低的吞吐量不是因为PXI Express带宽的限制,而实际上是因控制器芯片组所允许的最大传输包的限制。

数据流导入/导出存储器的基准

作为数据流导入磁盘应用的一个变体,我们也可以将来自高速数字化仪的数据以数据流方式导入我们的PXI控制器的板上存储器。这决定性地显示了即使在上一范例中,总线并不是吞吐量的限制因素,而RADI-0阵列的磁盘写入速率是瓶颈所在。在此实验中,数据采集的大小实际受限于可用PC存储器的空间。因而,在数据流导入存储器应用中采用PXIe-5122高速数字化仪,可以得到如下性能:

            
图6:对于PXIe-5122高速数字化仪的最大数据流导入存储器速率。
            

            

在上面的测试中,我们采用了一个具有2GB板上存储器的PXI Express双核控制器。数据采集长度为100,000,000样本/每通道,对于四个通道,这需要800MB的PC存储器空间(每个采样为2字节)。该测试中所用的PXIe-5122设备具有256MB的板上存储空间。利用NI PXIe-6537高速数字I/O模块,执行一个相似的测试:


基于上面在利用PXIe-6537仪器的数据流导出磁盘中所描述的相同原因,吞吐量受限于控制器的芯片组,而不是PXI Express的带宽。从这些数据流导入/导出存储器的基准获得的最重要的结论是:系统吞吐量的增长超过RAID阵列的写入速率。这不仅意味着跨总线的吞吐量得到了提高,而且总线也不再是瓶颈所在。数据流导入磁盘与数据流导入存储器应用在PXI Express中能够实现如此之高吞吐量的一个原因便是,使用了高带宽、低时延的数据总线——PCI Express。

本文小结

PXI与PXI Express使得工程师们将其系统限制推向更高的层次。PXI平台中所采用的高带宽PCI总线,允许高采样率与大数据块采集相共存。通过将快速PCI技术集成至平台内,甚至可以获得更高的性能,数据速率可以高达1GB/s。良好的应用设计可以帮助实现系统的数据流处理性能的最大化,而且,若干个PXI Express仪器现下可以以其最大的采样率将数据流导入或导出PC存储器或磁盘,因而,我们将可以在后期对整个数据集进行处理或分析。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2024-11-15 17:44 , 耗时 0.093841 秒, 21 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表