CN113626269A - 对于多处理器系统的实时分析和控制 - Google Patents

对于多处理器系统的实时分析和控制 Download PDF

Info

Publication number
CN113626269A
CN113626269A CN202110934466.9A CN202110934466A CN113626269A CN 113626269 A CN113626269 A CN 113626269A CN 202110934466 A CN202110934466 A CN 202110934466A CN 113626269 A CN113626269 A CN 113626269A
Authority
CN
China
Prior art keywords
data
mpa
test
application software
software
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202110934466.9A
Other languages
English (en)
Inventor
G·N·埃利斯
J·M·比尔兹利
M·B·多尔
I·阿瓜约
B·A·戴利奥
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Coherent Logix Inc
Original Assignee
Coherent Logix Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Coherent Logix Inc filed Critical Coherent Logix Inc
Publication of CN113626269A publication Critical patent/CN113626269A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/2205Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested
    • G06F11/2236Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested to test CPU or processors
    • G06F11/2242Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested to test CPU or processors in multi-processor systems, e.g. one processor becoming the test master
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3664Environments for testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/34Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
    • G06F30/343Logical level
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/34Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Tests Of Electronic Circuits (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)
  • Debugging And Monitoring (AREA)
  • Architecture (AREA)
  • Software Systems (AREA)

Abstract

本发明涉及对于多处理器系统的实时分析和控制。用于测试DUT的系统和方法,所述DUT包括以操作速度执行应用软件的多处理器阵列(MPA)。所述应用软件可以被配置为部署在MPA的第一硬件资源上,并且可被分析。可以创建测试代码,所述测试代码用于对MPA上的硬件资源进行配置以复制在所述应用软件中生成的数据以用于测试目的。所述应用软件可部署在第一硬件资源上。可以提供输入数据以激励DUT。所述测试代码可以执行为使用MPA的在执行所述应用软件时未被使用的硬件资源来将第一数据的至少一个子集提供给MPA的边缘处的管脚以便分析DUT。第一数据可以响应于发送声明而生成,所述发送声明由所述应用软件基于所述输入数据执行。

Description

对于多处理器系统的实时分析和控制
本申请是申请号为201810480764.3、申请日为2013年11月8日、发明名称为“对于多处理器系统的实时分析和控制”的发明专利申请的分案申请。
本申请的原始母案是申请号为201380065983.0、申请日为2013年11月8日、发明名称为“对于多处理器系统的实时分析和控制”的发明专利申请。
技术领域
本发明的领域一般涉及对于诸如计算机、数字信号处理器(DSP)和这种嵌入式实例之类的数字电子系统的软件开发、自动测试以及分析,更具体地说,涉及对于多处理器系统的实时分析和控制。
背景技术
新数字电子产品的开发需要大量的测试、测量和表征来验证其中的硬件和软件。对于复杂的数字电子产品,验证成本可能是总开发项目成本的最大一部分。存在用于降低测试和验证成本的几种方式或技术。
一种方式是可测性设计(DFT),其中产品设计包括对简化测试的技术的规定。其包括提高产品及其组成设备的内部状态的可控性和可观察性的测试点的规定。测试点的潜在问题是,它们的位置在系统中变为确定的,并且在最终产品中可能无法改变。另一个问题可能是,来自测试点的原始数据速率超过系统消费或处理数据的容量,所以产品可能必须以慢于正常速度的速度运行以执行测试。
降低测试和验证成本的另一方式是自动测试,因为如果不需要人类操作者来进行测试,则每单位时间可以执行更多的测试,导致捕获故障的可能性更高。然而,在应用软件的开发和自动测试期间,(交互式地)支持在短周期内程序员的增加的设计和测试是有益的。
另一方法是以对产品的正常操作具有可忽略的劣化的方式把测试仪器构建到产品中。内置的测试仪器(Built-in Test Instrumentation,BITI)的范围可以从高速注入和收集复杂信号以探查信号处理的高级探测器到诸如统计和图形显示之类的分析能力。该方法的问题是缺少足够的处理资源来全速地消费原始数据。
另一方式是内置自测试(buit-in self-test,BIST)。BIST可以利用大量的自动内部测试,每个自动内部测试产生被添加到当前和(running sum)的二进制模式结果。在所有测试结束时,当前和是签名,该签名可以被输出并且与在设计和仿真期间生成的已知好签名进行比较。BIST还可以产生更详细的报告,例如哪些(如果有的话)测试失败的报告。
BIST和BITI这两者都可以在产品的使用期期间用来增强其可维护性。可以在同一设备上使用这些技术的组合。
以上技术中的每种技术都需要对细节有相当多的关注,并且计算机用于跟踪这些细节。此外,每个产品的细节是不同的,因此,可能需要相当多的工作来对计算机进行编程以获得每次产品验证所必需的测试、测量和表征数据。
使用这些技术的益处通常大于实现它们的成本;然而,在行业中,改进是可能的并且不断发展。
可以以各种方式降低成本,例如,通过使测试设置和编程过程利用可重用的、经参数化的模块,所述模块可以容易地被组合以成为用于每个产品的自定义测试系统。
可以以各种方式增多益处,例如,通过使测试操作以更高的速度运行,使得每单位时间可以执行更多的测试,从而增大应用的状态空间的覆盖范围以验证适当的操作(或者在产品到达客户之前发现漏洞)。
越来越多地,诸如计算机、数字信号处理器(DSP)和嵌入在封装设备中的那些系统之类的数字电子系统利用一个或更多个多处理器阵列(multiprocessor arrays,MPA),其中所述封装设备诸如是:无线电电话、政府服务无线电、消费者无线设备(诸如蜂窝电话、智能电话和平板计算机)、蜂窝基站设备、视频处理和广播设备、对象识别设备、超光谱图像数据处理等。MPA可以被宽松地定义为多个处理元件(PE)、支持存储器(SM)和高带宽互连网络(IN)。如本文中所使用的,术语“处理元件”是指处理器或CPU(中央处理单元)、微处理器或处理器内核。MPA中的词语“阵列”在其最宽泛的意义上用于意指由网络互连的多个计算单元(每个包含处理资源和存储器资源),所述网络具有在包括圆形维度(回路或环路)的一个、两个、三个或更多个维度上可用的连接。注意,较高维度的MPA可以映射到具有较少维度的制造介质上。例如,具有四维(4D)超立方体的形状的IN中的MPA可以映射到硅集成电路(IC)芯片的3D叠层上,或者映射到单个2D芯片或者甚至计算单元的1D线上。此外,低维度的MPA可以映射到较高维度的介质。例如,计算单元的1D线可以以蜿蜒的形状被布局到IC芯片的2D平面上,或者被盘卷成芯片的3D叠层。MPA可以包含多种类型的计算单元以及处理器和存储器的散置布置。MPA在广义上还包括MPA的层次结构和嵌套布置,尤其是由互连的IC芯片构成的MPA,其中所述IC芯片包含还可以具有更深层次结构的一个或更多个MPA。
MPA对于软件开发方法和工具呈现出新的问题和机会。因为MPA可以扩展到数千个PE,所以需要管理大量的软件来操作该阵列,并且需要以高效的方式测试、调试和重构这种软件。一般地,这需要模块化、层次结构、可适应模块复用和自动构建方法。虽然这些思想已经出现在传统的软件开发系统中,但是它们尚未以支持一般化模块的方式集成到开发工具中,所述一般化模块可以根据性能要求或者不同的形状或拓扑要求而静态地和/或动态地适应不同数量的PE和其他资源,这些要求又取决于资源可用性或应用要求。
软件开发项目是用于生成使某产品或服务根据开发团队采用的要求进行操作的软件的人和机器工作的组合。一般地,更多的设计和测试自动化是有益的,因为它允许对所生成的软件进行更多的测试,从而消除更多的漏洞。
在图1中绘出了用于嵌入式系统的传统现有技术的软件开发环境。除人类软件工程师和程序员之外,开发环境还具有三个主要部分——这些是可包括工作站的测试平台和最终产品,就如所示出的,但是在某些现有技术的开发系统中,工作站可以被认为与测试平台分离。
最终产品的最小表示是技术要求列表。对于测试平台的最小要求是生成用于被测设备(device under test,DUT)的测试模式输入的装置、以及捕捉DUT的输出并且与已知的好模式进行比较的方式。DUT与最终产品匹配得越接近,所开发的软件在最终产品中将按照所预期的那样操作的置信度越高。
工作站的最小要求是具有对大容量存储器的细节、设计数据的数据库、以及读写项目数据库的一组(或一套)设计工具进行管理的操作系统(OS)的台式或膝上型计算机。可以存在多于一个的项目和多于一个的项目数据库,并且工具和库可以在它们之间共享,以降低开发成本。
一般来说,用于计算机和数字信号处理器(DSP)的存储器按这样的层次结构组织:顶部是快速存储器,层次向下每级是更慢却更高容量的存储器。在MPA中,在层次结构顶部的支持存储器位于每个PE附近。每个支持存储器可以专门只保持指令或只保持数据。特定PE的支持存储器可以对该PE是私有的或者与其他PE共享。
存储器层次结构再往下可以具有更大的共享存储器,该共享存储器典型地由半导体同步动态随机存取存储器(SDRAM)组成,所述半导体SDRAM具有比与每个PE相邻的支持存储器的位容量大许多倍的位容量。存储器层次结构再往下是闪存、磁盘和光盘。
如上所述,多处理器阵列(MPA)包括处理元件(PE)、支持存储器(SM)以及支持PE和/或存储器间的高带宽数据通信的主互连网络(PIN或仅仅IN)的阵列。在图2和图3示出了例示性的MPA,下面会进行描述。一般地,PE具有用于缓冲输入数据和输出数据的寄存器、指令处理单元(IPU)以及用于对数据执行算术和逻辑功能的装置,外加用于与系统的其他部分通信的若干交换器和端口。IPU从存储器取得指令,对它们进行解码,并设置适当的控制信号以移动数据进出PE以及对数据执行算术和逻辑功能。仅因为每个包含大MPA的IC芯片的PE数量大,所以适合于大MPA的PE一般比通用处理器(GPP)能效更高。
如本文所使用的,术语MPA覆盖了相对同构的处理器阵列以及在所谓的“平台IC”芯片上集成的通用和专用处理器的异构集合这两者。平台IC芯片可以包含典型地与共享存储器或许还有芯片上的网络互连的几个至许多个处理器。在MPA和“平台IC”芯片之间可以存在或可以不存在差异。但是,“平台IC”芯片可以被推销为针对特定垂直市场中的特定技术需求。
示例性MPA架构是在美国专利No.7415594中公开的HyperXTM架构。在HyperXTM架构的一个实施例中,尺寸范围宽的多处理器阵列可以由基于单元格的硬件构造(网)组成,其中,每个格被称为超切片(HyperSlice)。该硬件构造可以通过在网格上布置单元格并且使相邻的格互连来形成。每个超切片可以包括一个或更多个数据存储器和路由器(datamemory and router,DMR)以及一个或更多个处理元件(PE)。在美国专利No.7415594中,DMR被称为可动态配置通信(DCC)元件,PE被称为可动态配置处理(DCP)元件。DMR可以为其相邻的PE提供支持存储器,以及为互连网络(IN)提供路由器和链路。
可以通过将超切片邻接在一起来创建硬件构造,所述将超切片邻接在一起涉及使超切片对齐以形成正确的电连接。这些连接包括到DMR的链路和到电源网格的连接。复制超切片、使它们对齐以及通过邻接进行连接的技术是集成电路(IC)芯片,尤其是用互补金属氧化物半导体(CMOS)电路技术制造的IC的超大规模集成(VLSI)的公知技术。这种硬件结构具有对于处理元件独立地且透明地操作的PIN,并且可以通过支持任意通信网络拓扑的超切片之间的能实时地编程和改编的通信通路(可以被称为路由或通道)的整体来提供按需带宽。经协调的超切片组可以在软件控制下“飞速地”形成和改造。动态地改变用于评估功能的硬件的量的这种能力允许最佳地应用硬件资源来缓解处理瓶颈。在所述硬件构造的边缘,链路可以连接到专用于存储器层次结构更往下的存储器类型或者专用于集成电路(IC)芯片的边缘处的I/O的电路。
互连的DMR可以提供跨芯片的以及芯片之间的最近邻、区域和全局通信。这些通信模式中的每种通信模式可以物理地使用DMR资源来根据数据的所在地和软件算法要求而不同地发送数据/消息。“快速端口(Quick Port)”设施可以被提供以支持一个或更多个字的数据从处理器到任何网络目的地的低等待时间传输。对于块传输,DMR内的直接存储器存取(Direct Memory Access,DMA)引擎可用于管理跨越存储器和路由结构的数据移动。对于PE之间的最近邻通信,使用共享存储器和寄存器可能是最高效的数据移动方法。对于区域和全局的数据移动,使用路由构造(PIN)可能是最高效的方法。通信通路(或路由)可以是动态的,或者静态的。动态路由可以针对数据传输而建立,并且当传输完成时被拆除以释放PIN资源,以便用于其他路由和数据传输。静态路由可以在整个程序执行期间保持原样,并且主要用于高优先级的和关键的通信。通信通路的物理位置和跨越它们的数据传输的定时可以在软件程序控制下。可以存在多个通信通路以支持任何发送器和接收器之间的同时数据传输。
DMR的架构可以允许在多处理器构造中使用不同的可互换PE以针对具体应用来优化系统。HyperXTM多处理器系统可以包括同构或异构的PE阵列。PE可以是传统的处理器,或者可替代地,PE可以不符合处理器的传统定义。PE可以简单地是用作用于某些逻辑功能的硬连线的处理器的逻辑门的集合,其中为了更高的性能、更小的面积和/或更低的功率而牺牲可编程性。
图2例示了依照现有技术的示例性HyperXTM系统的处理元件(PE)和数据存储器路由器(DMR)的网络的视图。PE被示为矩形块,DMR被示为圆圈。DMR之间的路由通道被示为点线。实线三角形表示网外通信,实线表示DMR之间的活动数据通信。计算任务由其数字标识符示出,并且被放置在正执行它的PE上。用于通信的数据变量由其名称示出,并且被放置在包含它的DMR上。在本示例性示例中,左上方的PE被分配了具有任务ID 62的任务,并且可以经由与该PE相邻的各个DMR与其他PE或存储器进行通信,所述DMR由通信路径变量t、w和u指定。如还示出的,在本实施例中,活动通信通道经由被标记为“x”的相邻DMR把被指定为71(例如,另一任务ID)的PE连接到网外的通信路径或端口。
图3例示了依照现有技术的在芯片上实现的示例性多处理器系统。如所示的,类似于图2的示例性系统,该芯片包括用于与芯片外的设备进行通信的多个I/O路由器、以及内部多处理结构。HyperXTM处理器架构可以包括固有的多维度,但是可以以所示的平面实现来物理地实现。处理器架构可以具有高能效特性,并且还可以是在根本上可扩展的(扩展为大阵列)且可靠的——代表既低功率又可信赖的概念。使得处理器架构能够实现前所未有的性能的方面包括最新型的处理器、存储器网络和灵活的IO。处理元件(PE)可以是成熟的DSP/GPP,并且基于由可变宽度指令字指令集架构维持的存储器至存储器(无高速缓存)架构,所述可变宽度指令字指令集架构可以动态地扩充执行管线以在最大化硬件资源的使用的同时保持吞吐量。
在图4中更详细地示出了根据现有技术的DMR硬件结构的示例,其中,中央数据存储器(DM)被表示路由器的八角环包围。注意,所示的八角形形状仅仅是象征性的,实际形状可能是不同的,例如,可以是矩形。可以看出,DMR周围是表示到其他DMR和PE的数据路径的若干双向箭头。这些双向数据路径可以用在每个端的实际的双向收发器来实现,或者被实现为方向相反的一对单向路径。
图4中的路由器和数据存储器之间的单向箭头表示存储器和路由器之间的单向数据路径。这些箭头附近的小正方形表示DMA引擎,即,支持从DM读出的DMA读取器(DMAR)和/或支持将数据写到DM的DMA写入器(DMAW)。DMAR引擎产生用于存储器的地址信号,典型地跨缓冲区递增,读取要从链路发送到另一个DMR的数据。类似地,DMAW引擎产生用于存储器的地址信号,典型地跨缓冲区递增,写入它从链路接收到的数据。每个DMA引擎比PE小得多,并且使用更少的功率,所以它们对于用于存储器的块的读写是有吸引力的。DMA引擎可以通过对DM存储器空间中的相关联的配置寄存器的PE写入来进行配置。对特定地址的写入触发DMA开始递增。当DMA完成一块地址的从头到尾的递增时,它停止——除非被配置为无限地继续循环。
软件是操作计算机或其他存储有程序的设备所需的指令(也被称为程序代码)的整体。软件可以根据其用途进行分类。针对具体用途(诸如文字处理、网上冲浪、视频或蜂窝电话信号处理等)为终端用户操作计算机的软件可以被称为应用软件。应用软件包括由人类程序员编写的源程序和脚本、各种中间编译形式,并且被称为运行时软件(run timesoftware)的最终形式可以由目标设备(PE、微处理器或CPU)执行。运行时软件也可以由仿真器执行,所述仿真器是出于调试(错误消除)的目的而被设计为相比实际的目标设备提供目标设备的内部状态的更多可见性的设备。
开发软件(一组或一套软件开发工具)是用于产生应用软件的软件。基本开发工具包括如图5中所指示的编译器、汇编器和链接器,其中图5例示了根据现有技术的用于基于MPA的系统的示例性软件设计和开发流程。用户借以用高级编程语言(例如,C或C++)写源代码的编辑器也可以被认为是基本开发工具。人类工程师或程序员典型地设计程序,并用高级编程语言将其翻译成由图5的被标记为“完整设计”的文档表示的源代码,所述文档可以经由程序编辑器来创建。在被标记为“语言编译/汇编”的方框中,编译器用于将源代码翻译成模块化的地址可重定位的目标代码;然后汇编器用于创建模块化的机器代码;最后,链接器用于创建整个程序的可执行二进制映像。如所示出的,还可以在这些阶段的任何阶段中和在这些阶段中的任何阶段之间执行优化。这个被标记为“对设计进行处理以创建芯片编程文件”的编译、汇编和链接(生成二进制映像)的包括优化的过程可以用存储在“make文件(make files)”中的对操作系统的指令来自动进行。为了测试程序,二进制映像一般被加载到目标设备的存储器中(在图5中通过向“处理器IC芯片”提供和实现“芯片编程信息”,即“对芯片进行编程”来表示),并被执行(即,“运行程序”)。其他常见的软件工具包括调试器(用于加载、启动、暂停、转储(dump)和反汇编来自目标PE的二进制映像)、以及周期精确的仿真器。周期精确的仿真器提供处理器内部状态的完全可见性,但是它们运行得比目标硬件慢得多,例如,慢上许多个数量级。
对于多处理器系统,与单处理器系统相比,存在重要的额外步骤,该步骤是将特定的处理任务或模块分配到特定的物理资源——这些物理资源是PE、支持存储器、以及PE与系统I/O端口之间和各自间的通信资源。通信资源可以包括路由器、路由器之间的链路、包括交替的路由器和链路的串的路径、支持存储器、以及置于支持存储器和路由器(或链路)之间的DMA引擎。注意,资源分配可以包括将数据变量分配到存储器资源上,因为共享的和局部的存储器的分配可能对PE和通信资源的分配有影响,反之亦然。在图5中,该额外步骤由被标记为资源分配(也可以被称为物理设计)的方框表示。所述流程的资源分配部分可以利用布置和路由工具,该布置和路由工具可以用来将任务分配给阵列中的特定PE,以及选择IN中的具体端口和通信通路(路径)。注意,整个系统的物理设计不需要马上全部进行;特别地,可以在以后、在应用软件开发之后、以及在包括系统正在执行时的任何时间添加软件定义的测试仪器。然而,如果这样做,添加测试仪器的能力将取决于芯片上的未被应用软件使用的可用资源以及对感兴趣信号的访问。可以由应用软件的密集布局阻挡访问,或者通过使用芯片的安全特征来有意地阻挡访问。
设计的各部分可以被允许在运行时软件的正常执行期间以受控的方式动态地改变。传统的微处理器在程序执行期间支持存储器分配和解除分配。对于IN资源,建立和拆除通信通路的机器代码指令可以用相对少的字的数据来编码,因此针对许多路径的指令可以容易地存储在PE的支持存储器中。因此,PE上的运行时程序可以根据需要建立和拆除路径以动态地进行通信,附带的益处是,在它不使用通信资源的间隔期间,这些资源可供其他PE使用。I/O端口可以根据动态地连接到它的通信通路来动态地分配。对PE的任务分配在运行时间期间也可以通过覆盖机制来改变,所述覆盖机制允许用新任务来覆写PE指令存储器。
当MPA资源分配在运行时间期间改变时,存在性能提高的可能,但是也存在协调改变以防止性能劣化或死锁情况的需要。因此,系统的优化可以包括时间维度以及空间中的资源维度。另外,系统的优化可能受例如运行时等待时间、延迟、功耗、数据处理依赖性等之类的系统约束的影响。因此,这种系统的优化可以是多维优化。
图6例示了根据现有技术的更详细的示例性软件设计数据流程。如可看到的,第三方系统开发工具一般用于用标准的高级编程语言(例如,C、C++等)创建程序,该程序被编译、汇编和链接,以产生映像(二进制、可执行)。如还示出的,鉴于目标硬件,可以进一步利用编译的结果来优化软件。更具体地说,可以基于系统约束和目标硬件产品(例如,如所指示的HyperXTM硬件产品)来执行任务提取、多维优化(以上提及的)和资源分派/分配。如所示出的,这个处理本质上可以是迭代的。一套软件开发工具已经针对HyperXTM架构设备被开发出来,并且被包括在HyperXTM集成软件开发环境(Integrated Software DevelopmentEnvironment,ISDE)产品中。
当涉及很少的处理器时,物理设计(应用软件任务到物理位置的分派和通信通路的具体路由)相对简单,并且可以手动进行。即使如此,每个处理器的工作负荷也可能随时间而显著地变化,使得某种形式的动态分配可能是可取的以最大化吞吐量。然而,对于具有大量PE的MPA,物理设计处理如果手动进行的话,可能是冗长乏味的,并且容易出错。为了解决这些问题,已经创造了用于多处理器系统的软件开发工具,以定义任务(程序代码块)和通信要求(每个通路的源和目的地)并且自动地向任务分配资源(布置和路由)。如果设计较大或者包含许多重复的任务,则它如果被表达为单元的层次结构的话可能更易管理。分层描述可能必须在布置和路由工具可以用于完成物理设计之前被扁平化为在运行时所需的所有任务和所有通信路径的列表。支持层次结构的递增硬化的替代的设计流程也可以支持递增的布置和路由。
分层的、可配置的单元的构思以前一直用于硬件描述语言(HDL)的领域中。分层可配置性被构建到常用的诸如Verilog和VHDL之类的HDL中。然而,这些方法面向创建用逻辑门实现的、不常用于多处理器阵列的设计。主要差别是每个域中所使用的计算模型。在HDL模型中,所有的计算资源一般默认为同时执行,但是可以被指定为顺序执行。相反,多处理器模型假设了有限数量的并行计算流,其中每个并行计算流遵循顺序执行模型。
这些HDL不具有多处理器阵列的独有特性的表现,例如独有的或共享的存储器空间、独有的或共享的同步资源、或者处理器具体机器指令集。相反,用于多处理器的软件语言包括这些特征的表现。
在软件语言的领域中,功能可配置性已经被使用了一段时间。然而,现有技术的软件编程语言不支持(固定单元和可重配置单元这两者的)编程可复用性以及用分层分解来管理设计复杂度。例如,C++中被称为“模板”的句法结构允许函数专用于特定用途;然而,参数化的范围限于其自变量的数据类型,并且不允许计算的并行实现的变化。
图7例示了根据现有技术的用于测试数字设备的通用的传统的测试平台和测试装备。如所示出的,被测设备(DUT)位于开发板(development board)的中心处,所述开发板供应能源、以及从左边的模式产生器(pattern generator,PG)到DUT和从DUT到右边的逻辑分析器(logic analyzer,LA)的高速的密集的信号连接。PG包含数字存储器,该数字存储器可以从计算机加载,并且以单独的突发或者作为无限重复的模式发送到DUT。LA包含用于存储从DUT接收的数据字的存储器。LA可以被编程为直到它被呈现数据的特定模式(触发信号)才存储数据,从而在特定事件之后存储感兴趣的数据,而不是收集其中许多是它不感兴趣的大量数据。PC用来控制PG和LA并且将结果收集到大容量存储器上。
随着由于更密集IC制造技术而更复杂得多的IC设备的到来,如图8中所示,存在将更多的存储器IC芯片和更快速的计算机连接放到包括大容量存储器和微处理器的开发板上的趋势。这些非DUT的IC芯片可以用于通过标准的USB和以太网连接在开发板和PC之间移动大量数据。
注意,图8的DUT被示为具有被分配用于接受测试输入数据的一些芯片上的资源(“用于测试输入的资源”)和被分配用于输出数据的探测器收集和处理的一些资源(“用于测试输出的资源”)。DUT资源的大多数被分配用于应用功能(“用于应用的资源”)。单独的计算机用于总体测试控制、测试编程、测试数据分析、测试结果显示和大容量存储。因为计算机和微处理器变得更快,所以在许多情况下,传统的模式产生器和逻辑分析器在许多情形下可以被去除。
使用程序员可配置的IC芯片的一部分作为探测器或者作为测试或表征同一芯片的另一部分的仪器的思想已经在文献中被描述。例如,可配置的IC芯片中的一类是现场可编程门阵列(FPGA)。FPGA典型地通过使用以HDL取得程序员输入来定义功能、并且然后将其向下编译为配置“比特流”的开发软件来进行配置,所述配置“比特流”被输入到特定的FPGA芯片以对其进行配置。为了测试配置,数字测试信号可以由构建到配置比特流中的由程序员定义的探测器注入和收集。
在Ferguson,S.的“Vector signal analysis of digital baseband and IFsignal within an FPGA”(IEEE Autotestcon 2005论文摘要,第402-407页,奥兰多市,佛罗里达州,2005年9月26-29日)中,出于将数据流传输到逻辑分析器中的目的,芯片上的复用器用于从FPGA芯片的应用配置中的几个不同的地方收集数据。
这篇论文提出了动态FPGA探测器与基于FFT的矢量信号分析软件包的组合,所述动态FPGA探测器使得FPGA内的信号组能够通过少量物理封装焊盘(physical packagepad)路由到逻辑分析器以进行测量。该组合提供对FPGA内部的数字信号的时域、频谱和调制品质的同时测量。它还提供用于信号分析的各种内部网的快速选择,而不用耗时地重新设计FPGA。
在Lowdermilk,R.W.;Harris,F.J.的“Vector Signal Analyzer Implemented asa Synthetic Instrument”(Instrumentation and Measurement,IEEE Transaction on,第58卷,第2期,第281-290页,2009年2月)中,“合成仪器”或SI被设计为让FPGA:
“…执行作为目标的基于数字信号处理(DSP)的仪器的多个任务。这篇论文的主题是矢量信号分析,通过该矢量信号分析,从输入的时间信号提取时间相关的幅度和相位。…
“…矢量信号分析器可以呈现调制过程的许多品质度量。这些包括诸如诸如调制器失真、相位噪声、时钟抖动、I-Q失衡、符号间干扰等之类的不期望的属性的估计。就此而言,SI被要求变为智能的软件定义无线电(software-defined radio,SDR),执行DSP无线电接收器的所有任务,并且报告所观察的调制信号参数和理想的调制信号的参数之间的小变化。各种品质度量(例如,误差的大小)具有量化和探测通信系统的性能边界的值。
这些是用硬件描述语言HDL最常设计的FPGA实现,其中HDL是面向逻辑门的,并且一般不包含针对诸如程序任务、处理器和IN通路设置和消息传递之类的MPA特征的规格的句法结构。
对于由许多处理元件(PE)、支持存储器(SM)和高带宽主互连网络(PIN)构成的多处理器(MPA)计算机系统,出于测试、调试和性能表征的目的,存在将高带宽信号传进和传出MP系统的需要。
MPA系统的一些或全部可以位于一个或更多个VLSI IC芯片上,这增加了出于测试/调试的目的注入外部信号或收集内部信号的探测的难度。这降低了内部状态的可控性和可见性。计算机仿真可以显示出所有的内部状态和信号。然而,对于在非常低的误差率的条件下操作的系统,虚拟信息和噪声的数百万个测试包需要被传递通过系统以获得统计有效的表征;因此计算机仿真花费太长时间。所需的是其中硬件和软件以接近于最终系统目标速度的速度(实时地)进行操作的操作系统的测试和表征。
所需的最小测试平台能力是,产生要注入到应用硬件/软件中的关键点中的信号和噪声,从硬件和软件中的关键点收集信号和噪声,将信号与已知的好信号进行比较,取决于表征的类型而简单地或者以复杂的方式对信号进行处理,并且支持软探测器使感兴趣的内部信号流出以及注入流信号。
因此,期望用于对多处理器系统进行实时分析和控制的改进技术和工具。
发明内容
提出了用于测试被测设备(DUT)的系统和方法的各种实施例,其中,DUT包括多处理器阵列(MPA),所述MPA包括多个处理元件、多个存储器以及通信地耦接所述多个处理元件和所述多个存储器的高带宽互连网络(IN)。以全操作速度实时地执行应用软件的MPA是被测设备(DUT),或者被包括在被测设备(DUT)中。
在一个实施例中,期望被测试的应用软件可以被修改为包括测试代码,由此产生修改的应用软件。修改的应用软件中的测试代码可以包括至少一个辅助发送声明。应用软件可以被配置为在多处理器阵列(MPA)的第一硬件资源上执行和/或使用MPA上的第一硬件资源,其中,所述测试代码可以被配置为在第一硬件资源中的至少一个上执行,并且被配置为使用MPA的一个或更多个第二硬件资源,其中,所述一个或更多个第二硬件资源不同于第一硬件资源,并且不被应用软件使用,并且其中,执行应用软件的MPA包括被测设备(DUT)。
在MPA上执行的修改的应用程序可以接收输入数据以激励DUT,在DUT中基于输入数据生成第一数据,执行第一发送声明以将第一数据提供给修改的应用软件使用,并且使用第二硬件资源中的至少一个来执行所述至少一个辅助发送声明以将第一数据的至少一个子集提供给MPA的边缘处的管脚。
第一数据的由所述至少一个辅助发送声明提供的所述至少一个子集可以被接收,其中,第一数据的所述至少一个子集可用于分析DUT。
在一些实施例中,在将第一数据的至少一个子集提供给MPA的边缘处的管脚时,所述至少一个辅助发送声明可以对MPA的第一直接存储器存取(DMA)引擎进行编程以将第一数据的所述至少一个子集提供给MPA的边缘处的管脚,并且其中,第一DMA引擎是第二硬件资源之一(未用于执行应用软件)。应用软件可以被配置为将第一数据存储在MPA的第一存储器中,其中,第一存储器是由应用软件使用的第一硬件资源之一,其中,多个DMA引擎与第一存储器相关联,并包括作为第二硬件资源之一的第一DMA引擎。在一个实施例中,第二DMA引擎可以与第一存储器相关联,其中,第二DMA引擎是第一硬件资源中的由应用软件用来将第一数据存储在第一存储器中的一个第一硬件资源。在一些实施例中,在将第一数据的所述至少一个子集提供给MPA的边缘处的管脚时,所述至少一个辅助发送声明可以过滤第一数据,由此生成第一数据的所述至少一个子集。
在一些实施例中,第一发送声明可以被配置为在第一硬件资源的第一处理器元件上执行,并且所述至少一个辅助发送声明可以被配置为在第一硬件资源的第一处理器元件上执行。DUT可以包括以全操作速度实时地在MPA上执行的修改的应用软件。在一些实施例中,DUT可以从耦接到DUT的外部信号源接收实时数据以激励DUT。
在一个实施例中,修改应用软件可以包括:分析应用软件以在应用软件中定位第一发送声明,并且与第一发送声明邻近地将所述至少一个辅助发送声明自动插入在应用软件中。另外,在其他实施例中,修改应用软件可以包括:分析所述应用程序以在应用软件中定位多个发送声明,并且与所述多个发送声明中的各自的发送声明邻近地将相应的一个或更多个辅助发送声明自动插入在应用软件中。可替代地,或者附加地,一个或更多个辅助发送声明可以与应用软件中的多个发送声明中的各发送声明邻近地被(用户)手动地插入在应用软件中。
第一数据可以经由通过MPA的IN的第一数据路径提供给修改的应用软件使用,并且第一数据的所述至少一个子集可以经由通过MPA的IN的第二数据路径提供给MPA的边缘处的管脚,其中,第二数据路径不同于第一数据路径。
在一些实施例中,以上技术可以由软件定义的测试平台实现或执行,其中,软件定义的测试平台可以被配置为以对DUT性能的影响可忽略的方式分析DUT。
在另一个实施例中,期望被测试的应用软件可以被修改为包括测试代码,由此生成修改的应用软件,其中,修改的应用软件中的测试代码包括至少一个辅助发送声明,其中,测试代码可以被配置为使用MPA的一个或更多个不同的第二资源,其中,所述一个或更多个不同的第二资源不被应用软件使用,并且其中,执行应用软件的MPA包括被测设备(DUT)。
在MPA上执行的修改的应用软件可以接收输入数据以激励DUT,基于该输入数据在DUT中产生第一数据,执行第一发送声明以将第一数据提供给修改的应用软件使用,并且使用MPA的所述一个或更多个第二资源中的至少一个来执行辅助发送声明以将第一数据提供给MPA的边缘处的管脚。
因辅助发送声明而产生的第一数据可以被接收,其中,第一数据可用于分析DUT。
在另一实施例中,一种用于测试包括执行应用软件的处理器阵列(MPA)的被测设备(DUT)的方法可以包括:分析期望被测试的应用软件,其中,应用软件被配置为部署在多处理器阵列(MPA)的第一硬件资源上,其中,MPA包括多个处理元件、多个存储器以及通信地耦接所述多个处理元件和所述多个存储器的高带宽互连网络(IN)。所述方法还可以包括:创建测试程序代码,所述测试程序代码可执行为对MPA上的硬件资源进行配置,以出于分析目的而复制在应用软件中生成的数据;以及将应用软件部署在MPA的第一硬件资源上,其中,执行应用软件的MPA包括被测设备(DUT)。输入数据可以被提供以激励DUT,其中,DUT包括以全操作速度实时地执行应用软件的MPA。测试程序代码可以被执行为使用在执行应用软件时未被使用的硬件资源中的至少一个来将第一数据的至少一个子集提供给MPA的边缘处的管脚,其中,第一数据是响应于第二声明而生成的,所述第二声明由应用软件响应于输入数据来执行。因执行测试程序代码而产生的第一数据的所述至少一个子集可以被接收,其中,第一数据的所述至少一个子集可用于分析DUT。
附图说明
当结合以下附图考虑优选实施例的以下详细描述时,可以获得对本发明的更好理解,其中:
图1例示了根据现有技术的示例性开发系统;
图2、3和4例示了根据现有技术的示例性多处理器阵列(MPA)系统;
图5和6是例示了根据现有技术的针对MPA的软件开发流程的流程图;
图7和8例示了根据现有技术的测试平台和测试装备;
图9例示了根据一个实施例的用于测试包括执行应用软件的MPA的DUT的系统;
图10例示了根据一个实施例的软件定义的测试平台;
图11是根据一个实施例的针对多处理器系统的开发软件的方法的流程图;
图12是根据一个实施例的用于使用应用软件中的辅助发送声明来测试DUT的方法的流程图;
图13是根据一个实施例的用于使用应用软件外部的测试代码来测试DUT的方法;
图14例示了根据一个实施例的使用DMA引擎来划分数据流以供探测器使用;
图15例示了根据一个实施例的使用DMA引擎划分数据流以供具有用于采样的FIFO控制的探测器使用的使用;
图16例示了根据一个实施例的具有用于软件仪器的资源的多处理器阵列;
图17例示了根据一个实施例的MPA的数据存储器和路由器(DMR)元件;
图18和19是软件定义无线电的各个实施例的高级框图;
图20例示了用于指定和/或指示所施加的AWGN(加性高斯白噪声)的示例性AWGN用户界面视图;
图21例示了根据一个实施例的示例性星座视图;以及
图22例示了根据一个实施例的通过其可以配置和/或显示各种参数或属性的视频源视图(GUI)。
虽然本发明可以有各种修改形式和替代形式,但是在附图中以示例的方式示出了并且在本文中详细描述了其具体实施例。然而,应当理解,附图及其详细描述并非意在使本发明限于所公开的特定形式,而是相反,意图是要覆盖落在由所附权利要求限定的本发明的精神和范围内的所有修改、等同和替代。
具体实施方式
通过引用并入
以下专利的全部内容通过引用并入于此,就好像在本文中充分地且完整地进行了阐述一样:
2012年11月9日提交的、标题为“Real Time Analysis and Control for aMultiprocessor System”的美国临时申请No.61/724493;
2003年6月24日提交的、标题为“Processing System with Interspersed StallPropagating Processors and Communication Elements”的美国专利No.7415594,其发明人为Michael B.Doerr、William H.Hallidy、David A.Gibson和Craig M.Chase;
2011年10月14日提交的、标题为“Disabling Communication in aMultiprocessor System”的美国专利申请No.13/274138,其发明人为Michael B.Doerr、Carl S.Dobbs、Michael B.Solka、Michael R.Trocino和David A.Gibson。
术语
以下是本申请中所使用的术语表:
存储器介质——各种类型的存储器设备或存储设备中的任何一种。术语“存储器介质”意在包括:安装介质,例如CD-ROM、软盘104或带设备;计算机系统存储器或随机存取存储器,诸如DRAM、DDR RAM、SRAM、EDO RAM、Rambus RAM等;或者非易失性存储器,诸如例如硬盘驱动器的磁性介质、光学存储器或ROM、EPROM、FLASH等。存储器介质还可以包括其他类型的存储器或其组合。另外,存储器介质可以位于其中程序被执行的第一计算机中,和/或可以位于通过诸如Internet之类的网络连接到第一计算机的不同的第二计算机中。在后一种情况中,第二计算机可以向第一计算机提供程序指令以便执行。术语“存储器介质”可以包括可能驻留在不同位置——例如通过网络连接的不同计算机——中的两个或更多个存储器介质。
载体介质——如上所述的存储器介质、以及诸如传递诸如电信号或光学信号之类的信号的总线、网络、和/或其他物理传输介质之类的物理传输介质。
可编程的硬件元件——包括含有经由可编程的或硬连线的互连来连接的多个可编程功能块的各种硬件设备。示例包括FPGA(现场可编程门阵列)、PLD(可编程逻辑器件)、FPOA(现场可编程对象阵列)和CPLD(复杂可编程逻辑器件)。可编程功能块的范围可以为从细粒型(组合的逻辑或查找表)到粗粒型(算术逻辑单元或处理器内核)。可编程硬件元件也被称为“可重新配置的逻辑”。
专用集成电路(ASIC)——该术语意在具有其普通意义的整个范围。术语ASIC意在包括针对特定应用定制的集成电路,而不是通用的可编程设备,但是ASIC可以包含可编程处理器内核作为构建块。蜂窝电话单元、MP3播放器芯片和许多其他的单功能IC是ASIC的示例。ASIC通常用诸如Verilog或VHDL之类的硬件描述语言描述。
程序——术语“程序”意在具有其普通意义的整个范围。术语“程序”包括1)可以存储在存储器中并且可被处理器执行的软件程序,或者2)可用于配置可编程硬件元件或ASIC的硬件配置程序。
软件程序——术语“软件程序”意在具有其普通意义的整个范围,并且包括可存储在存储器介质中并由处理器执行的任何类型的程序指令、代码、脚本和/或数据或其组合。示例性的软件程序包括:用基于文本的编程语言编写的程序,所述基于文本的编程语言例如是命令式或过程式语言,诸如C、C++、PASCAL、FORTRAN、COBOL、JAVA、汇编语言等;图形程序(用图形编程语言编写的程序);汇编语言程序;已经被编译为机器语言的程序;脚本;以及其他类型的可执行软件。软件程序可以包括以某种方式进行交互操作的两个或更多个软件程序。
硬件配置程序——可以用来对可编程硬件元件或ASIC进行编程或配置的程序,例如,网表或比特文件。
计算机系统——各种类型的计算或处理系统中的任何一个,包括个人计算机系统(PC)、大型计算机系统、工作站、网络电器、互联网电器、个人数字助理(PDA)、网格计算系统、或者其他的设备或设备组合。一般地,术语“计算机系统”可以被宽泛地定义为涵盖具有执行来自存储器介质的指令的至少一个处理器的任何设备(或设备组合)。
自动地——是指在没有直接指定或执行动作或操作的用户输入的情况下由计算机系统(如由计算机系统执行的软件)或设备(例如,电路、可编程硬件元件、ASIC等)执行的动作或操作。因此术语“自动地”与正在由用户手动地执行或指定的操作形成对照,在后一种情况中用户提供输入以直接执行操作。自动过程可以由用户提供的输入来启动,但是“自动地”执行的后续动作不由用户指定,即不是其中用户指定要执行的每个动作的“手动地”执行。例如,通过选择每个字段并提供指定信息(例如,通过键入信息、选择复选框、单项选择等)的输入来填写电子表格的用户正在手动地填写表格,即使计算机系统必须响应于用户动作来更新该表格。可以由计算机系统自动地填写表格,其中计算机系统(例如,在计算机系统上执行的软件)分析表格的字段并且在没有任何指定字段的答案的用户输入的情况下填写表格。如以上所指示的,用户可以调用表格的自动填写,但是不参与表格的实际填写(例如,用户不手动地指定字段的答案,而是它们被自动完成)。本说明书提供了响应于用户已经采取的动作而被自动地执行的操作的各种示例。
开发处理——是指基于方法论的开发的生命周期。在粗级别上,它描述如何通过设计、实现、验证、部署和维护来驱动用户要求和约束。
概述
以下描述用于实时分析和控制(real time analysis and control,RTAC)的系统的各种实施例,其中,测试仪器被构建在数据处理设备(尤其是多处理设备)及其相关的软件开发系统的内部。在数据处理设备正在以全速执行产品应用的同时,RTAC可以可被配置为:访问(读或写)未受到保护的设备的任何内部状态,在未受到保护的设备正在执行产品应用的同时在该设备中的任何地方接入数字信号流,以各种标准方式(抽取、插值、滤波、添加噪声、触发模式或阈值、上至傅立叶变换等)处理数字信号流,生成测试信号并且比较处理后的信号,以高速自主地操作,以及通过使用软件组件(可以被称为“视图(view)”)而被相对容易地建立。
本文中所公开的RTAC方法包括具有可重用且可自定义配置的模块的开发软件,并且可以自主地运行,所以可以降低软件开发成本,并且提高使用兼容数据处理设备的产品中的应用软件的质量。
应注意,本文中所公开的技术对于某些阵列大小的MPA可能是特别有益的。例如,在一个示例性实施例中,MPA可以包括三个或更多个PE。在其他的示例性实施例中,MPA的大小(阵列中的PE、支持存储器和相关联的通信资源的数量)可以大于或等于某个指定的数量,该数量在各种不同的实施例中可以具有期望的任何值,例如,4、8、16、24、32、64等。更一般地,取决于特定的应用或用途,MPA中的PE的数量可以具有指定的下界,该下界可以根据期望被指定为任何复数值。
实时控制
在一些实施例中,实时控制(Real-Time Control,RTC)的基本概念是,链接器生成由运行时软件使用的变量和参数以及它们在SM中的绝对位置的表。该链接器表可以与例如串行总线之类的次互连网络一起用于在应用软件正在运行时将单个的值“窥视”和“刺探”到特定地址,并且可以不以其他方式干扰它。当MPA在其硬件中具有诸如串行总线之类的独立于主互连网络(PIN)的次互连网络(SIN)时,无干扰是可能。SIN典型地具有比高带宽PIN低得多的带宽,所以SIN不被应用软件使用。
标题为“Disabling Communication in a Multiprocessor System”的美国专利申请No.13/274138中公开了示例性的SIN,该申请在上面通过引用并入。
在一个实施例中,交互式软件开发环境可以提供链接器表借以得到维护的各种工具,并且RTC工具(其可以是RTAC工具的一部分)可以被调用来进行“写(值、地址)”到一组SIN命令的自动翻译、然后将这些命令从PC传送到开发系统板、并从那里传送到DUT,其中,这些SIN命令的执行将指定值写到指定地址处的变量/参数。
类似地,为了读出变量或参数的值,链接器表可以用于找到它的位置和地址信息;RTC工具可以被调用或者以其他方式被用来将“读(地址)”翻译为SIN命令,该SIN命令然后可以被传送到DUT。一经执行,内部值就可以被读出,被送回到PC,并且被显示。脚本可以用于改变大量的变量/参数,但是广义脚本可以被开发来处理阵列。
实时分析
在一些实施例中,可以提供实时分析(real-time analysis,RTA)工具(其可以是RTAC工具的一部分),该RTA工具包括在工作站(即,主计算机,例如PC/膝上型计算机、或所期望的任何其他类型的计算机)上运行的总体控制程序,该总体控制程序对软件定义的测试平台(SDTB)进行管理(在一些实施例中,该总体控制程序可以被认为是SDTB的一部分),SDTB训练被测设备(DUT)及其在MPA上以适合于最终应用的时钟速度运行的应用软件。
图9——用于测试DUT的示例性系统
图9例示了根据一个实施例的用于测试包括执行应用软件的MPA的DUT的系统。如所示出的,在该示例性实施例中,系统包括主计算机、开发板、例如逻辑分析器或示波器之类的仪器以及例如摄像机之类的外部信号源,所述开发板包括开发系统和具有测试装备的测试平台,所述测试装置被配置为对DUT进行测试,在该特定情况下,是对处理器IC(集成电路)进行测试。在一些实施例中,主计算机、开发板和仪器可以构成可实现本技术的实施例的软件定义的测试平台。
软件定义的测试平台(SDTB)可以被配置为提供(至少一些)例如测试矢量和/或信号流之类的输入数据以激励DUT,并且从它收集数据,但是在一些实施例中,输入数据可以包括来自外部信号源的实时信号(例如,数据),所述外部信号源可能经由开发板耦接到DUT,诸如图9中所示。SDTB可以被设计为与DUT一样快并且对DUT性能的影响可忽略。SDTB可以为DUT提供激励和响应测试矢量,并且收集关于其操作的数据。SDTB可以被配置为对探测的信号进行二次采样以降低PC的数据处理要求,并且在一些实施例中,可以被扩展为包括合成仪器和仿真的RF模拟通道损伤。
图10是根据一个实施例的用于测试包括执行应用软件的MPA的DUT的示例性系统的高级图示。可以看出,该系统不同于图7的现有技术的系统,至少因为主计算机实现本文中所公开的新颖技术的至少一部分。更具体地说,主计算机被配置有可执行为实行本文中所公开的新颖方法的实施例的程序指令,例如,将应用软件和/或外部测试代码配置为,复制(以及可能地过滤或者以其他方式处理)由应用软件在执行期间生成的数据的至少一个子集,并且例如通过对MPA的在正常使用期间(即,在测试/调试环境或背景外部)未被应用软件使用的硬件资源进行编程,来将该数据(的至少一个子集)传递到MPA的边界以便用于调试或分析,如下面详细描述的。所述复制的和/或过滤的或者以其他方式处理的数据在本文中可以被称为“辅助数据”或“辅助流数据”。注意,在各种实施例中,过滤可以包括对数据进行采样,所以辅助数据的量可以少于原始数据。在另一个示例性实施例中,过滤可以包括例如通过对数据进行平均化处理以产生对应于原始数据的较低分辨率的数据来减少数据。可以根据需要使用任何其他种类的过滤(处理)。
示例性创新特征
以上RTA系统概念的一个有价值的特性是在对应用性能的影响可忽略或者对应用性能没有影响的情况下探测DUT中的高带宽数据流的能力。这可以是可能的,因为针对软件开发工具开发的软件探测器给DUT增加非常少的代码和执行周期——通常少于1%。因为应用软件典型地不会消耗所有可用的MPA资源,也不会消耗被分配用来处理数据块的所有时间,周期、功耗和/或存储器使用的1%增加几乎是不可见的。
软件探测器可以做至少两件事:复制(以及可能地,过滤或者以其他方式处理)数据块的至少一部分从流的读取,并且将该数据写到MPA上的未被使用的缓冲区。在一些实施例中,PE可以做这件事,但是硬件DMA引擎的效率高得多(耗费较少功率),所以在其他实施例中,在任何可能的情况下都可以使用DMA引擎。
在访问高带宽数据流的情况下,主要问题是如何处理通过接入而产生的所有数据。在一些实施例中,这种数据可以尽快地被过滤和二次采样。因此,在一个实施例中,MPA上的可以访问辅助流数据缓冲区或探测器流的未被使用的PE可以被编程为:对数据进行过滤和下采样,将所得的数据发送到并行端口,并且向上发送到主计算机。在一些情况下,二次采样可以完全由正在接入数据流的DMA引擎实现。
同一个或另一个未被使用的PE可以提供支持RTA系统在芯片上所需的其他测试控制功能。这些测试控制功能可以包括生成合成的信号与噪声以用作测试激励或者用于通道损伤。
在一些实施例中,主机可以包括支持例如正交幅度调制(QAM)之类的不同调制的星座图的软件,并且由于输入激励受到控制,所以该软件可以累积误码率、误包率等。在一些实施例中,该软件可以被配置为将指定的理想信号与实际信号进行比较以便进行矢量信号分析。
在一些实施例中,主机可以在实验进行时改变或者以其他方式修改实验以使其效率更高。例如,对信噪比(SNR)的从高到低的扫掠可以从针对高SNR的低包计数开始,并且变为针对较低SNR的较高包计数,以一直保持某置信度要求。
注意,由于系统完全用软件运行,所以可以施加激励,并且可以与DUT在MPA芯片上的操作一样快地累积结果。如果MPA的计时快于产品设计值,则结果可以比设计目标的“实时”更快地累积。
示例性实施例和实现
下面描述本文中所公开的技术的各种示例性实施例和实现。然而,应注意,所描述的特定实施例和技术不使本发明限于任何特定的形式、功能或外观。例如,一些实施例是使用特定术语、语法或要素描述的;然而,所描述的术语、语法和特定要素仅意味着是示例性的,而非意在使所构想的实施例限于任何特定的一组名称、语法、形式、结构或外观。
图11——软件开发方法的流程图
图11是根据一个实施例的用于开发用于多处理器系统的软件的示例性方法的流程图。更具体地说,图9例示了流程中可以插入探测器的示例性位置。如以上所指出的,本文中所公开的技术可以经由本身可包括多个工具或模块的工具来实现。在一些实施例中,该工具可以被从ISDE调用或者在ISDE内调用,而在其他实施例中,该工具可以作为独立的工具进行操作。在一些实施例中,该工具可以实现为可调用函数和/或经定义的结构的工具箱,或者实现为软件套件。
如图11中所示,类似于图5的流程图,所述方法可以包括对于软件应用的完整设计(例如,用高级编程语言)的接收以及“语言编译/汇编”,其中,编译器用于将源代码翻译为模块化的地址可重定位的对象代码,汇编器用于创建模块化的机器代码;最后,链接器用于创建整个程序的可执行二进制映像。还可以在这些阶段的任何阶段中以及在这些阶段的任何阶段之间执行优化。如上面所指出的,这个被标记为“对设计进行处理以创建芯片编程文件”的编译、汇编和链接(产生二进制映像)的包括优化的过程可以用存储在“make文件”中的对操作系统的指令来自动进行。为了测试程序,二进制映像一般被加载到目标设备的存储器中(在图11中通过提供和实现“芯片编程信息”来表示),以便在目标设备上执行或运行应用程序。如所指示的,所述程序在目标硬件上运行,并且所述方法包括与工作站(主机)进行通信。如还示出的,所述方法可以包括:与测试用具进行通信、处理结果数据、以及在工作站(主机)上或在工作站处显示结果,但是在一些实施例中,附加地或者代替地,可以例如将结果存储在本地或者通过网络存储到存储设备,以便后来查看。
如图11进一步示出的,在本方法中,可以在各种点中的任何点处插入一个或更多个探测器。例如,在各种实施例中,可以在资源分配之前、在链接之后、和/或尤其在执行期间,插入一个或更多个探测器。应注意,在各种实施例中,如下面所讨论的,探测器可以自动地插入,或者可以例如由例如开发人员或测试人员之类的用户手动地插入。
在一些实施例中,所述工具可以包括被配置为控制软件定义的测试平台的控制程序。软件定义的测试平台可以被配置为实时地测试被测设备(DUT)和在该DUT上执行的应用软件,其中,该DUT包括含有多个处理元件、支持存储器和高带宽互连网络(IN)的多处理器阵列(MPA),所述IN通信地耦接所述多个处理元件和支持存储器。软件定义的测试平台还可以被配置为提供例如测试矢量和/或信号流之类的输入数据以激励DUT,并且接收由DUT的仿真产生的数据。附加地或者可替代地,DUT可以被配置为从耦接到DUT的外部信号或数据源,例如从摄像机,接收输入数据,即,实时信号。
此外,软件定义的测试平台可以被配置为在DUT正以全操作速度实时地执行应用软件的同时分析(例如,测试)DUT和应用软件。在一些实施例中,软件定义的测试平台可以被配置为在对DUT和应用软件性能零影响的情况下分析DUT和应用软件,而在其他实施例中,如下面更详细地讨论的,对DUT和应用软件的影响可以不为零,但是可忽略,即,足够小以至于不能被用户检测到,太小以至于对应用的操作的影响不可测量,或者在某指定的容限内。在一个实施例中,MPA可以被配置为使用MPA的第一部分来执行软件应用(或应用软件),并且所述工具可以被配置为自动地将一个或更多个软件探测器配置到MPA的第二部分上。为了在DUT正以全操作速度执行应用软件的同时分析DUT和应用软件,所述一个或更多个软件探测器可以被配置为在执行期间从软件应用读取数据或者将数据写到软件应用,以便进行分析或控制。下面提供进一步的细节。
实时调制
在一些实施例中,可以通过将“调试探测器”插入到正在执行应用运行时软件的硬件DUT中以监视内部信号来实现实时调试。理想地,调试探测器应是完全非侵入性的,即,不应以任何方式对用户的应用软件的操作产生影响或效果。在一些情形下,这可以是真实的;然而,在大多数情形下,效果将是可忽略的,并且在一些情形下,可能没有足够的资源,或者可能存在对于探测器插入的安全屏障。注意,取决于所考虑的特定的应用领域或用途,术语“可忽略的效果”和“实时地”可以表示不同的容限水平。例如,在一些实施例中,这些术语可以意味着测试是在对DUT和/或应用性能的影响小于1%的情况下执行的。类似地,在各种其他的示例性实施例中,例如,按照指定的要求,可接受的容限可以小于0.1%、小于0.5%、1%,小于2%、小于3%、小于4%、小于5%,等等。更一般地,在各种不同的实施例中,可接受的容限(因此,“可忽略”和“以全操作速度实时地”的意义)可以视情况被指定为任何期望的值。
在一个示例性实施例中,探测器可以实现为在例如未被应用软件使用的PE和通信资源之类的MPA硬件构造上运行的任务。探测器可以将期望的数据从芯片流传输到开发板和连接的用作软件开发工具的主机的PC,或者诸如逻辑分析器之类的设备。在主机上,数据可以被放到文件中,图形化地显示,和/或流传输到附连的诸如扬声器或视频监视器之类的设备。主机还可以以高速将测试信号输入数据提供给DUT,如果不是直接地提供,则通过将输入数据文件传送到与DUT相邻或靠近的SDRAM来提供。对于一些测试,输入数据可以在DUT上生成,而在其他情况下,可以使用外部信号生成器。
用于数字信号的探测器可以以许多不同的方式实现。在一些实施例中,探测器可以包括采样部分、数据处理部分和芯片输出部分。在一些实施例中,MPA可以将数据形成或格式化为数据包,以将数据发送到主机,而在其他实施例中,MPA可以将数据发送到用于该目的的另一个芯片。
辅助发送
实现探测器的采样部分的一种示例性方式是:在PE任务中找到针对感兴趣信号的第一“发送”声明,然后在第一发送之后插入第二(辅助),发送声明针对同一信号,但是使相关联的通信通路从不同方向退出DMR并且被引导沿着空闲通路到芯片I/O端口。包含两个发送声明的任务可以被重新编译,并且与应用软件的其余部分链接,以创建具有用于测试和分析的信号接入的二进制映像。然后,每次发送任务发送感兴趣信号的数据块,它还将同一数据块发送到探测器。这可能没有完全满足探测器为非侵入性的要求,因为发送任务必须执行第二发送,这增加了执行该任务的周期。然而,如果第二发送使用未被应用软件使用的硬件资源,则这种成本可以得到改善。例如,如果第二(辅助)发送声明使用DMA引擎,则PE可以尽被延迟几个PE时钟周期来写DMA控制寄存器,然后PE可以继续应用任务。通常,与分配给任务的时间相比,这些额外的周期是可忽略的。作为另一个示例,在一些实施例中,第二或辅助发送声明可以利用芯片上的网络来将探测器数据提供给MPA的边缘。
图12是根据一个示例性实施例的用于使用辅助发送声明来测试被测设备(DUT)的方法的高级流程图。DUT包括多处理器阵列(MPA),以上描述了MPA的各种实施例。图12中所示的方法可以与上面的图中所示的计算机系统或设备以及其他设备中的任何一个结合使用。在所示的示例性实施例中,如在图12中由标记“软件定义的测试平台100”和“修改的应用软件200”所指示的,该方法一部分由软件定义的测试平台执行,一部分由在MPA上执行的(修改的)应用软件执行。
在各种实施例中,所示的方法要素中的一些可以按不同于所示次序的次序、同时地执行,或者可以省略。也可以根据需要执行附加的方法要素。如所示出的,该方法可以如下操作。
首先,在1202中,可以将期望被测试的应用软件存储在例如存储器介质中。该应用软件可以能够部署为在MPA上的第一硬件资源上执行。如以上所讨论的,MPA可以包括多个处理元件、多个存储器以及通信地耦合所述多个处理元件和所述多个存储器的互连网络(IN)。
在1204中,可以将期望被测试的应用软件修改为包括测试代码,由此创建修改的应用软件。修改的应用软件中的测试代码可以包括至少一个辅助发送声明。
在一些实施例中,测试代码可以由软件定义的测试平台自动地包括在应用软件中,即,在没有调用或执行所述包括的直接用户输入的情况下。例如,可以对应用软件进行分析以在应用软件中定位第一发送声明,并且可以与第一发送声明邻近地将辅助发送声明自动插入在应用软件中。此外,在一些实施例中,可以对应用软件进行分析以在应用软件中定位多个发送声明,并且可以与所述多个发送声明中的各自的发送声明邻近地将相应的一个或更多个辅助发送声明自动插入在应用软件中。因此,测试代码可以包括多个辅助发送声明。注意,在一些实施例中,用户可以选择或指示应用软件中的哪些发送声明是感兴趣的,并且辅助发送可以相应地被自动插入。换句话说,用户可以指定哪些发送声明(或感兴趣的信号/数据)将被探测,并且所述方法或工具可以与每个选择的或指示的发送声明邻近地自动插入各自的一个或更多个辅助发送。
在其他实施例中,测试代码可以由用户手动地包括在应用中,例如,用户可以例如经由编辑器或者通过除了软件定义的测试平台之外的处理将测试代码插入到应用软件中。在其他实施例中,可以利用自动技术和手动技术的各种组合。例如,工具可以自动地发现或定位发送声明,用户可以指示或选择感兴趣的发送声明,并且相应地手动插入辅助发送声明。在其他实施例中,用户可以手动地确定发送声明的位置,并且确定哪些是感兴趣的,并且辅助发送可以被手动地或自动地插入。
在1206中,可以将修改的应用软件部署在MPA的硬件资源上。该部署可以包括:将应用软件部署为使用MPA的第一硬件资源,并且将测试代码部署为在第一硬件资源中的至少一个上执行并且被配置为使用MPA的一个或更多个第二硬件资源,其中,第二硬件资源不同于第一硬件资源,并且不被应用软件使用。以全操作速度实时地执行修改的应用软件的MPA可以包含,即,包括被测设备(DUT)、是DUT、或被包括在DUT中。
在一些实施例中,可以例如通过软件定义的测试平台自动地将修改的应用软件部署在MPA的第一硬件资源上。在其他实施例中,可以通过某其他媒介(例如,由用户手动地)或者通过除了软件定义的测试平台之外的处理将修改的应用软件部署在MPA的第一硬件资源上。
在1208中,输入数据可以由修改的应用软件接收以激励DUT。在一些实施例中,输入数据中的至少一些可以由软件定义的测试平台,例如由主机,来提供,以激励DUT。例如,软件定义的测试平台可以为DUT/应用软件提供包括一组输入数据的测试矢量,并且可以包括所期望的任何类型和数量的数据或信号。
附加地,或者可替代地,在一些实施例中,DUT可以例如经由开发板从耦接到DUT的外部信号(数据)源接收输入数据。在一个实施例中,外部信号源可以提供实时的和/或现实世界的数据来激励DUT。换句话说,DUT可以从耦接到DUT的外部信号源接收实时数据来激励DUT。其中,外部信号源的示例包括但不限于:摄像机、网络设备(诸如路由器、调制解调器、集线器等)、传感器和其他系统等。注意,在各种实施例中,可以根据需要使用任何类型的外部信号源。
MPA可以以全操作速度实时地执行修改的应用软件。换句话说,尽管DUT/MPA和应用软件正被测试,但是修改的应用软件可以如正常操作期间一样快地(或者在效率上一样快地)执行。如以上所说明的,“以全操作速度实时地”执行修改的应用软件意指,在执行修改的应用软件时的系统性能在正常操作期间(例如,当未被测试或调试时)的系统性能的某指定容限内,例如,根据期望或需要,在0.1%、0.5%、1%、2%、4%、5%等内。更一般地,如以上还指出的,可接受的容限可以视情况被指定为任何期望的值,由此针对任何特定应用程序定义“以全操作速度实时地”。因此,本文中所公开的技术可以在对系统性能(包括执行应用软件的DUT的性能)的影响可忽略的情况下用来分析DUT。
在1210中,可以由修改的应用软件基于输入数据在DUT中产生第一数据。换句话说,响应于输入数据,在MPA上执行的修改的应用软件可以生成第一数据(在一些实施例中,第一数据也可以被认为是信号)。在一些实施例中,所生成的第一数据可以最初存储在计算第一数据的MPA的处理元件中的或相邻的本地存储器中,例如,存储在相邻DMR的寄存器或存储器中。
在利用第一DMA引擎提供第一数据的至少一个子集的一些实施例中,所述生成可以包括将第一数据存储在MPA的第一存储器中,其中,第一存储器是被应用软件使用的第一硬件资源之一,并且其中,包括作为一个或更多个第二硬件资源之一的第一DMA引擎的多个DMA引擎与第一存储器相关联。此外,在一个实施例中,第二DMA引擎也可以与第一存储器相关联,其中,第二DMA引擎是被应用软件使用的第一硬件资源之一。
在1212中,由修改的应用软件执行第一发送声明,其中,第一发送声明将第一数据提供给修改的应用软件使用。换句话说,修改的应用软件可以执行第一发送声明以将第一数据提供给修改的软件应用的某其他部分或功能。第一发送声明可以在MPA的第一硬件资源之一上执行。
在1214中,修改的应用软件可以在第一硬件资源之一上执行辅助发送声明以使用第二硬件资源中的至少一个将第一数据的至少一个子集提供给MPA的边缘处的管脚。例如,在一个实施例中,执行辅助发送声明(以将第一数据的至少一个子集提供给MPA的边缘处的管脚)可以对MPA的第一直接存储器存取(DMA)引擎进行编程,以将第一数据的所述至少一个子集提供给MPA的边缘处的管脚,其中,第一DMA引擎是MPA的未被应用软件使用的所述一个或更多个第二硬件资源之一。第一数据(从第一硬件资源)到第一DMA引擎上的数据传输的这种卸载因此可以防止数据传输的执行降低执行(修改的)应用软件的操作性能(如以上所说明的,超出指定的容限)。因此,辅助发送声明可以操作为经由例如第二硬件资源之一,例如,第一DMA引擎,悄悄地“接入”应用软件,由此生成第一数据的副本以用于分析目的。
在一个实施例中,第一数据可以经由通过MPA的IN的第一数据路径提供给修改的应用软件使用,并且第一数据可以经由通过MPA的IN的第二数据路径提供给MPA的边缘处的管脚,其中,第二数据路径不同于第一数据路径。
在1216中,由辅助发送声明提供的第一数据可以例如经由MPA的边缘处的管脚例如被软件定义的测试平台(例如,主机)接收。所接收的第一数据可以可用于分析DUT的操作,例如,以便测试和调试应用软件。
如以上所指出的,在一些实施例中,上面的各种方法要素可以由软件定义的测试平台执行。例如,在一个示例性实施例中,以上所述修改和接收可以由软件定义的测试平台执行,其中,软件定义的测试平台在对DUT性能的影响可忽略的情况下测试DUT。
以略微不同的方式描述以上方法的重要方面,在一些实施例中,存储器介质可以存储被配置为部署在多处理器阵列(MPA)的第一资源上和/或使用MPA的第一资源的应用软件,其中,MPA包括多个处理元件、多个存储器和通信地耦接所述多个处理元件和所述多个存储器的高带宽互连网络(IN)。存储器介质还可以包括这样的程序指令:所述程序指令可被处理器执行以将期望被测试的应用软件修改为包括测试代码,由此生成修改的应用软件,其中,修改的应用软件中的测试代码包括至少一个辅助发送声明。如以上所指出的,测试代码可以被配置为使用MPA的一个或更多个不同的第二资源,其中,所述一个或更多个不同的第二资源未被应用软件使用,并且其中,执行应用软件的MPA包括被测设备(DUT)。
在MPA上执行的修改的应用软件可以被配置为:接收输入数据以激励DUT,基于输入数据在DUT中生成第一数据,执行第一发送声明以将第一数据提供给修改的应用软件使用,并且执行辅助发送声明来对MPA的直接存储器存取(DMA)引擎进行编程以将第一数据提供给MPA的边缘处的管脚,其中,DMA引擎是MPA的所述一个或更多个第二资源之一。该程序指令可以进一步可执行为接收由DMA引擎得到的第一数据,其中,第一数据可用于测试DUT。
从应用软件的角度来考虑以上技术,存储器介质可以存储可在多处理器阵列(MPA)中执行的程序指令,其中,该程序指令包括应用软件和插入到该应用软件中的测试代码。所述程序指令可以可执行为:接收输入数据,基于输入数据生成第一数据,执行应用软件中的第一发送声明以将第一数据提供给应用软件使用,并且执行来自插入到应用软件中的测试代码的至少一个辅助发送声明来对MPA的第一直接存储器存取(DMA)引擎进行编程以将第一数据提供给MPA的边缘处的管脚。如以上还指出的,第一DMA引擎可以是MPA的未被应用软件使用的硬件资源。第一数据可以可用于分析DUT。
以上方法的实施例利用插入到应用软件中的辅助发送声明来对MPA上的未被使用的或空闲的DMA进行编程以从正在执行的应用软件提取感兴趣的数据(或信号),以便在不会显著地影响系统的性能的情况下提供给MPA的边缘。用于复制和提取这种数据或信号的其他技术也被构想,并且在下面进行描述。
外部测试代码
图13是根据一个示例性实施例的用于测试DUT的方法的高级流程图,例如与图12的使用辅助发送声明相反,该方法使用应用软件外部的测试代码(其也可以被称为测试程序代码)来从MPA复制和提取感兴趣的数据或信号。与图12的方法一样,DUT包括多处理器阵列(MPA),以上描述了MPA的各种实施例。图13中所示的方法可以与以上图中所示的计算机系统或设备以及其他设备中的任何一个结合使用。在各种实施例中,所示的方法要素中的一些可以按不同于所示次序的次序同时地执行,或者可以省略。也可以根据需要来执行附加的方法要素。如所示出的,该方法可以如下操作。
首先,在1302中,可以对期望被测试的应用软件进行分析。所述应用软件可以被配置为部署在多处理器阵列(MPA)的第一硬件资源上。与图12的方法一样,MPA包括多个处理元件、多个存储器和通信地耦接所述多个处理元件和所述多个存储器的高带宽互连网络(IN)。例如,在一个实施例中,软件定义的测试平台可以自动地分析应用软件以确定感兴趣的数据或信号是在何处和/或何时产生的。
在1304中,可以创建测试程序代码,所述测试程序代码可执行为对MPA上的硬件资源进行配置以复制在应用软件中生成的数据的至少一个子集,以用于分析(例如,测试)目的。在一些实施例中,测试程序代码的创建可以是自动的,例如,可以在没有指定该代码的直接用户输入的情况下由软件定义的测试平台进行。在其他实施例中,用户可以例如经由软件定义的测试平台或程序开发环境的编辑器来创建测试程序代码的至少一部分。
在1306中,可以将所述应用软件部署在MPA的第一硬件资源上,其中,执行所述应用软件的MPA包括被测设备(DUT)。
在1308中,可以提供输入数据来激励DUT。如以上所讨论的,DUT可以包括以全操作速度实时地执行所述应用软件的MPA。与上面的方法类似,在一些实施例中,DUT可以从耦接到DUT的外部信号源接收实时数据来激励DUT,例如,作为输入数据。
在1310中,可以执行所述测试程序代码,来使用在执行应用软件时未被使用的硬件资源将第一数据的至少一个子集提供给MPA的边缘处的管脚。第一数据可以(或者已经)响应于发送声明来生成,所述发送声明由所述应用软件响应于测试矢量来执行。在一些实施例中,执行测试程序代码(以将第一数据的至少一个子集提供给MPA的边缘处的管脚)可以对MPA的第一直接存储器存取(DMA)引擎进行编程,以将第一数据的所述至少一个子集提供给MPA的边缘处的管脚,并且第一DMA引擎可以是MPA的在执行所述应用软件时未被使用的硬件资源。换句话说,在执行期间,所述应用软件可以执行响应于输入数据生成第一数据的发送声明,此后,可以执行测试程序代码,所述测试程序代码对DUT的DMA引擎进行编程以将第一数据的至少一个子集的副本传送到MPA的边缘处的管脚。
如以上所指出的,在各种实施例中,所述方法可以包括过滤或者以其他方式处理第一数据。例如,测试程序代码或者由测试程序代码编程或控制的(第二硬件资源中的)硬件资源可以对第一数据或其子集进行过滤。所述过滤可以包括对数据进行采样,所以辅助数据的量可以少于原始(第一)数据。在另一个示例性实施例中,所述过滤可以包括例如通过平均化数据产生与原始数据对应的低分辨率数据来减少数据。可以根据需要使用任何其他种类的过滤(处理),根据需要,包括平滑、移除异常值等。
在1312中,由执行测试程序代码得到的第一数据的所述至少一个子集例如可以由软件定义的测试平台接收。第一数据的所述至少一个子集可以可用于分析DUT。以上详细地描述了MPA和DUT的各种实施例。
在一些实施例中,测试程序代码可以在MPA的在执行所述应用软件时未被使用的处理元件上执行,例如,在与其中存储有第一数据的存储器相邻的处理元件上执行。在其他实施例中,测试程序代码可以在与MPA分开且不同的计算机系统(即,外部计算机系统)上执行。如以上所指示的,在一些实施例中,测试程序代码可以进一步操作为根据需要来过滤或者以其他方式处理数据,例如,采样、缩减等。
在一个实施例中,测试程序代码可以通过MPA内的串行总线(或其他的次互连网络(SIN))提供命令以便提供第一数据的所述至少一个子集。例如,在如上所述的利用第一DMA引擎的实施例中,第一DMA引擎可以由外部测试程序代码(或测试代码)经由MPA的串行总线(或其他的次互连网络(SIN))编程。
由发送声明生成的第一数据可以经由通过MPA的IN的第一数据路径提供给应用软件使用,并且第一数据的所述至少一个子集可以例如由DMA引擎经由通过MPA的IN的第二数据路径提供给MPA的边缘处的管脚,其中,第二数据路径不同于第一数据路径。
在一些实施例中,1302的分析和1312的接收可以由软件定义的测试平台执行,其中,软件定义的测试平台在对DUT性能的影响可忽略的情况下测试DUT。
因此,在各种实施例中,软件定义的测试平台和应用软件可以在应用软件被DUT以全操作速度实时地执行的同时互相协调地操作来分析DUT(其包括应用软件)。
如果辅助(或第二)发送命令或外部测试代码确实利用DMA引擎执行数据传送,则可以建立可以被构造为通过IN将数据块从SM中的缓冲区移动到芯片I/O端口的路径。数据传送的头几个字可以是用于设置该路径的头信息。图14例示了数据借以被流传输到被标记为“DMA引擎1”的第一DMA引擎的示例性系统,第一DMA引擎将该数据传送到存储器,之后DMA引擎2将(原始)数据流传输到其指定的目标,并且DMA引擎3流传输该数据的副本,即,在此被称为“探测器数据”的辅助数据,例如以用于分析。
另外,在一些实施例中,数据可以通过在自由的DMR处缓冲来在到芯片I/O端口的途中被处理,其中,术语“自由”意指“没有必要执行应用软件”。与自由的DMR相邻的自由的PE可以被编程为处理该数据(诸如抽取或压缩)。可以建立另一条通信路径来将数据传导到芯片I/O端口,并由此传导到主机。
寄存器的轮询
另一种侵入性更小但是更复杂的用于复制/提取感兴趣的数据或信号的方法利用相邻的PE来对与特定DMA传送相关联的一组寄存器进行轮询。一旦相邻的PE检测到传送开始,它就可以读取相同数据,并且将它流传输出芯片。这可以以非侵入性的方式进行,因为可以对DMA寄存器设置优先级,使得相邻的PE具有最低的优先级,因此永远不会干扰应用软件的操作。所以,在数据正被发送的同时,探测器可以尾随DMA引擎,并且可以偶尔由应用中的正在访问同一DMR的引擎或其他相邻的PE来停顿。这可以协力使相邻的PE在DMA引擎结束并且通知应用程序的发送PE之后完成某数量个周期的数据读取。在该小时间窗口期间,发送PE可以开始修改数据。然而,更常见的是在DMA传送的突发之间具有相对较长的间隔,所以读取无效数据的可能性小。
DMA-FIFO的使用
侵入性更小的探测器可以使用由一些MPA提供的板上DMA-FIFO功能(例如,hx3100B HyperX[MPA]处理器芯片的DMA-FIFO功能)来实现。在该方法中,三个DMA引擎可以与先进先出(FIFO)控制块耦接在一起,以将数据流划分为初级或原始数据流以及探测的或辅助的数据流,如图15所示。
可以看出,在该示例性实施例中,数据经由DMA引擎1被流传输到存储器,DMA引擎2将数据从存储器流传输到其被指定的目标,DMA引擎3流传输探测数据,即辅助数据,例如以用于分析。然而,注意,与图14的方法相反,在该实施例中,FIFO控制元件或组件插入在所有三个DMA引擎之间,由此可以协调DMA引擎的操作,以防止数据损失或数据复制。可以自始至终保护数据流程控制,以使得可以不需要公知的“双缓冲(double buffering)”技术。
注意,如果探测器与应用程序同时被分配给MPA资源(物理设计),则它可能扰乱应用程序的物理布局,从而使它具有不同的行为。该不同行为可能以两种不同的方式发生。
如果探测器是第一种类型(即,它正在监视所插入的调试发送),则添加的路由资源可能使应用设计具有一组不同的路由,该组不同的路由可能改变设计性能,在最糟糕的情况下,可能引起不同的行为。第二,如果探测器正在通过访问DMA引擎来直接监视DMA传送,则它可能被要求与适当的DMR物理相邻。这可能使应用编程的布局被扰乱。在最好的情况下,探测器正在使用的处理器最初不被应用设计占用。然而,即使是在这种情况下,如果探测器访问其他DMR存储器中的任何一个并且引起本地存储器的不同模式冲突,则它也可能改变应用设计。这可以通过改变这些DMR上的优先级使得探测器总是具有最低优先级来进行处理。然而,即使这样做,探测器仍然需要将其数据送出芯片,所以它将需要使用路由资源,并再次可能扰乱应用设计。
然而,注意,如下面所讨论的,如果探测器是在最初的设计开发之后插入的,则关于设计的扰乱的这些问题则全都可以避免。
避免这种路由影响的一种方式是,在添加探测器之前锁定(“冻结”)应用路由,并仅允许探测器路由通过未被使用的路由段。取决于应用设计之后在MPA中剩下的资源,这可能是可能的,或者可能是不可能的。
MPA的示例性DMR
图17例示了根据一个实施例的MPA的DMR的示例性实施例。如以上所讨论的,MPA中的DMR为MPA的相邻的处理元件提供本地存储器和路由资源,并且可以实现用于从正在执行的应用软件读数据、向该应用软件写数据以及在该应用软件内读写数据的DMA引擎。例如,图17的示例性DMR包括四对DMA引擎,每对包括DMA读引擎和DMA写引擎,DMA读引擎用于从DMR的中心所示的数据存储器读取数据,DMA写引擎用于向数据存储器写数据,如DMR中被标记为“DMAW引擎”(DMA写引擎)和“DMAR引擎”(DMA读引擎)的两个最右侧的正方形所指示的,每个DMA引擎在图中由各自的正方形表示,其中,DMA写引擎操作为向数据存储器写数据(图中的WData),DMA读引擎操作为从数据存储器读数据(图中的RData)。
如上所述,这些DMA引擎中的一些可以例如作为上述“第一资源”的一部分由正在执行的应用软件用来读写数据以供应用软件使用,而其他DMA引擎可以例如作为上述“第二资源”的一部分由测试程序代码用来进行测试或调试。
如图17所指示的,在该示例性实施例中,根据本技术的实施例对DMR最左边的DMA读引擎进行编程。更具体地说,该DMA读引擎由与原始的(未被修改的)应用软件分开且不同的测试代码(例如,辅助发送声明或外部测试代码)编程。因此,DMA读引擎操作为复制以及可能地过滤数据并且将(可能经过滤的)复制数据发送到MPA的边缘处的管脚(如上所述),并且因为该资源是MPA的“第二资源”之一,其操作不是以系统性能为代价的(在某个指定的容限内)。
应用设计后链路调试探测
使软件通信探测器与被测应用程序去耦(decouple)可能是有益的。这样做的一个动机是,应用的源代码可能是不可获得的,因此不能与所包括的通信探测器重新链接(重新构建)。然而,重要得多的是,保持被测应用的完全的完整性,使得在该应用中不会引入和它们(即,探测器)一样小的修改。这还省去了(阻止了)必须将应用程序与所包括的探测器重新构建(重新链接)。
HyperXTM设备可以允许PE和DMR的完全独立的控制。这种灵活性可以允许用户在不干扰可能已经在HyperX设备上运行的应用的情况下用执行代码编程和运行附加的PE,只要所加载的附加的PE不覆写已经在运行的应用的PE和相关联的DMR存储器空间即可。这本质上允许同时(并行地)执行多个二进制映像,只要它们的资源利用互相排斥(即,PE、DMR存储器和路由结构造)即可。不同二进制(应用)的加载和执行可以在不同时间发生。它们可以经由SIN加载,其中SIN完全独立于应用所使用的PIN路由构造。
能够在不同时间加载和执行不同二进制映像、然后同时运行它们的灵活性有助于使被测应用与探测器的二进制映像去耦以从被测应用提取数据。为了创建接入通信路径的探测器,可以分配紧挨着发送方PE的测试PE以使得它可以访问源DMR。例如,在图16中所示的示例性实施例中,应用软件使用由MPA的中心的手画回路包含的资源,该回路在其内部具有从第一PE上的任务71到第二PE上的任务72的通路。用X标记的DMR可以从非应用PE上的任务81访问。该测试PE可以建立从DMR X到输出端口或者到用于处理的另一个PE的通路。
可以对该测试PE进行编程,以连续地对(从被测应用的)原始数据发送传送的DMA(状态)寄存器进行轮询。每当测试/轮询PE检测到DMA状态从非活动变为活动时,测试PE就可以复制原始DMA寄存器值(即,TOTAL、WAIT、STRIDE),并且用等效的DMA寄存器值对(同一DMR的)另一个DMA端口进行编程。这可以创建将用作探测器的辅助DMA发送传送。被测应用不必被停止,不必被修改,并且将不会以任何方式受到探测器DMA传送的建立的影响。
触发
诸如逻辑分析器(LA)之类的测试仪器通过对大量二进制数字信号进行采样并且将它们存储到高速存储器中来捕捉数字图像。此后,存储器内容可以在屏幕上显示为一组二进制信号或一些等效的数值。逻辑分析器(LA)的时基在触发事件开始对存储器地址的扫掠。触发事件可以是来自被测设备或向DUT馈送信号的数字模式生成器的主信号的子集中的特定模式的二进制信号或其他二进制信号。
调试探测器插入
调试探测器用于监视用户设计内部的信号(参见以上详细说明)。由MathWorks公司提供的SimulinkTM提供用于调试目的的许多个块。特别地,存在用于对内部信号进行采样的块。在一些实施例中,这些内置Simulink块可以用于将调试探测器插入到要在HyperX硬件上实现的设计中。例如可以使用C代码来对这种块进行翻译,以实现数据的捕捉和将它送出芯片。翻译器还可以设置用于将信号路由到主机并且以适当的方式显示数据的必需的基础设施。
调试探测器复用
通常,调试所需的探测器的数量可能大于MPA上可用的数据端口的数量。在这些情况下,可以对数据探测器进行二次采样(如果有必要降低带宽要求的话),然后将来自多个探测器的数据包进行组合以形成一个数据流,该数据流然后可以使用芯片上的单个I/O端口。
注意,当信号被复用时,可以将数据的身份传送给主机。这可以以许多种方式中的任何一种方式来实现。例如,可以按严格重复的次序发送探测器数据包,以使得第一个包对应于第一探测器,第二个包对应于第二探测器,第三个包对应于第一探测器,第四个包对应于第二探测器,等等。
在另一种方法中,可以用标识数字来标记探测器数据包,使得主机可以读取包ID,并且知道数据来自哪个探测器。
通信通路设置(COMM)
以下描述用于设置和拆除通信通路的示例性编程表述。然而,应注意,所描述的特定实现仅仅是示例性的,而非意在将所构想的实现局限于任何特定的形式、功能、名称或外观。一般地,在DMA用于实际通过通路从存储器抽取数据时,PE可以执行这些设置和拆除功能。此外,在一些实施例中,PE可以借助于绕过存储器的“快速端口”来将数据直接抽送到通路中。
通信路径的设置一般涉及将软件任务加载到发送方PE指令存储器中并且开始执行该任务。通路可以仅由发送方PE任务建立,但是在目的地DMR,需要接收机制;否则,硬件停顿数据的向前运动。合适的接收机制要么是DMR附近的PE上的另一个任务,要么是路径的到达端口处的准备好的DMA引擎。
可以用例如C之类的高级编程语言来对任务进行编程,然而,在一些实施例中,可以提供例如MPX_构造之类的各种构造来减轻编程工作。例如,MPX_Send和MPX_Recv可以提供发送和接收功能。数据传送选项参数可以控制传送和实现的类型的变化。这种MPX函数可以支持三种一般的通信方式:
通用型——系统选择最佳通信(memcpy、使用DMA传送的消息传递、或快速端口传送);
DMA传送——消息传递;和
快速端口——PE写到DMR快速端口寄存器的单个字的消息传递(不使用DMR中的数据存储器,也不需要建立DMA)。
在这些一般的通信方式内,实现变化给予设计者许多选择,下面是示例性实施例。
阻塞型(Blocking)——发送PE的执行停止,直到数据被完整地发送出缓冲区为止;
非阻塞型(Non-Blocking)——发送PE的执行立即继续进行;
InitRoute——建立DMA路由;
EndRoute——拆除DMA路由(注意,非阻塞型函数从不会拆除路由);
Express(发送)——不设置或拆除路由,允许按照已经设置的明确路由进行多个表达调用;
加速的函数——使用较少的代码,因为不变值寄存器可以被一次预设;
单点对点通信;和
一对多(扇出)和多对一(扇入)通信。
如果函数直到动作完成才返回,则该函数阻塞。所以,对于发送函数,完成意指数据被完整地发送出缓冲区;数据已经离开DMR。完成不一定意味着数据已经被接收任务接收。当接收函数阻塞时,数据可能被要求写到DMR位置处的存储器。仅当动作完成时,调用中所指定的资源才可以被重新使用,并且接收PE可以继续执行。
如果函数在操作完成之前返回,则该函数是非阻塞型的。因为数据传送操作不一定完成,所以尚未发送的数据可能被发送方任务错误地修改。发送方任务可以通过显式地等待完成信号或者显式地轮询数据传送操作的状态来避免数据误差。
通信通路可以用特定的commID值来声明,所述特定的commID值是个常数,例如:
#define COMMID 99
然后,可以使用构造MPX_Send来实施数据传送。
MPX_Send
MPX_Send可以将指定数量的元素(存储器字值)传送给另一个任务。通信手段可以由传送选项参数(例如,MPX_CommOptions_t)给出。以下是示出了函数和自变量类型的示例性函数原型:
int16_tMPX_Send(void *buf,
uint16_t numElts,
MPX_Datatype_t datatype,
MPX_Comm_t commID,
MPX_CommOptions_t transferOpt)
以下是指定该结构的各种功能的示例性参数的表格:
表1:参数
Figure BDA0003212350470000441
接收函数
参见MPX“发送和接收功能”的描述中的通用型、DMA和快速端口传送的以上说明。注意,接收函数永远不能建立或拆除路由。
表2
Figure BDA0003212350470000442
Figure BDA0003212350470000451
约束
约束是在物理设计阶段期间可以用于指导资源分配的规范。约束用于例如指导IN中的一个或更多个通信通路的形成以及其他通信参数。约束可以用于防止通路重叠、迫使通路使用特定资源、和建立禁止区,以及其他目的。探测器约束是如下定义的特定类型的约束。
//在设计视图中创建数据探测约束。
constraint create-type probe[-raw]
-name constraintname
-comm comm_id
-port{PARALLELPORT|PCIE}
[-sample‘{’offset stride count‘}’]
{viewname|viewpath}
数据探测器示例和视图
数据探测器可以促进将数据从应用提取到ISDE中的实时分析(RTA)视图。
探测器可以对通信数据进行采样,并且将样本传送到芯片外以供分析。可以在不改变设计的情况下对来自设计的数据进行采样以插入采样点。数据可以在芯片上进行过滤以最小化通信开销。
采样可以不影响设计的功能,并且对定时的影响可以是最小的。
在一些实施例中,实时分析(RTA)工具可以实现为HyperX ISDE中的用于分析采样的数据的一组视图。
创建探测器
可以在构建处理的资源映射阶段期间创建探测器。对源代码(例如,“C”代码)没有改变。
探测器comm可以是被建立来传送探测器的采样的数据的非阻塞comm。发送到RTA的每个包所需的头部可以自动地添加到所有探测器comm。
探测器comm可以通过创建“probe”类型的约束来创建。该约束可以包括控制探测频率的采样标准。
隐式的non_overlapping_comm约束可以由用于参考的系统和探测器comm提供。非重叠的约束告诉资源分配工具不要试图将分派给一个通路的链路和路由器中的任何一个共享给另一个通路。
示例1
constraint create-type probe-name probe99\
-comm 99-port PARALLELPORT/work/top/topv
该示例创建了被命名为probe99的探测器comm,其中,comm 99是其数据被探测的参考comm。
示例2
constraint create-type probe-name probe99\
-comm 99-port PARALLELPORT\
–sample{2 3 4}/work/top/topv
除了-sample选项控制通过指定偏移(2)、步幅(3)和计数(4)而收集的采样数据的量之外,这是与以上相同的示例。例如,假设在comm 99上传送的值为:
1,9,25,49,81,121,169,225,289,...
第一探测器数据将是25,121,289,529。第一元素是25,因为偏移零将是起始元素,偏移2处的元素为25。因为步幅为3,所以下一个元素是121。最后,因为计数为4,所以再收集两个元素来完成该组采样数据。
探测器comm可以要求IOport被放置为使得数据可以传送到芯片外。
示例3
放置ioport-location{11 9}/work/top/topv/probe99
创建用于芯片至芯片comm的探测器
在多芯片设计中,探测器可以在分组之前或之后建立。对设计进行分组是将设计的部分分派给组、然后将所得的组分派为驻留在特定芯片上的处理。当探测器在分组之后建立时,可以使用“发送方侧”组名。
示例4
group create-name grp0-task/work/root/root/0
group bind-chip/clxlib/XHx/v/U1 grp0
constraint create-type probe\
-name probe273-port PARALLELPORT\
-comm/work/root/root/273/work/root/root/grp0
该示例创建被命名为probe273的探测器。它对来自参考comm273的数据进行探测,其中,该comm是组“grp0”的一部分。
实时分析——视图
实时分析(RTA)可以用于在HyperXTM硬件上运行的同时实时地控制和监视产品应用的行为和性能。
在一些实施例中,RTA工具可以用作运行硬件调试器的ISDE中的测试用具的一部分。采样代码可以例如在安装示例目录中提供,以示出测试组件如何与应用和ISDE视图交流。
以下示例性实现集中于无线电应用的分析。
三种类型的视图
在一个示例性实施例中,用于HyperXTM硬件的实时分析(RTA)工具包括,例如从HyperXTM实时分析的角度来讲,作为三对视图进行操作的六个视图。
表3
控制视图 显示视图
误差率控制 误差率数据
AWGN 星座
视频源 视频显示
从HyperXTM实时分析的角度来讲,可以使用RTA视图。
软件定义无线电示例
从如图18中所示的软件定义无线电的示例开始,在该示例中,包作为到发送器的输入被接收,所述发送器耦合到接收器并输出包,其中,发射器和接收器各自利用一个或更多个PE。发射器接受固定大小的包,对它们进行编码以供传输,并且将它们发送到接收器,在接收器中,它们被解码。在现实世界的应用中,来自发射器的数据将被发送到RF(射频)发射器电路,并且馈送接收器的数据将来自RF接收器电路。
为了测试系统,如图19所示,可以将测试用具组件添加到系统,每个测试用具组件在HyperXTM硬件上运行。在该示例性实施例中,已经添加了被标记为“包生成器”的测试数据生成器,该测试数据生成器生成具有已知内容的测试包,并且将这些输入包发送到发射器。如还示出的,用于信道损伤的AWGN(加性高斯白噪声)组件被插入在发射器和接收器之间。该组件通过将噪声添加到信号来模仿通过电波的传输,并且将所得的有噪声的信号发送到接收器。最后,被标记为“包比较器”的包比较器耦接到接收器。接收器对有噪声的信号进行解码,并且将解码的信号发送到包比较器以对误包率和误码率进行计数。
AWGN和星座
在一些实施例中,AWGN视图可以控制HyperXTM加性高斯白噪声(AWGN)生成器组件。AWGN组件可以被供应示例代码,并且被用于将可调整量的噪声添加到发射器输出。
在一个实施例中,星座视图可以显示出对正交幅度调制(QAM)信号进行解码的有效性。IQ数据可以被示为星座图(也被称为散布图),或者被示为2D或3D热图,以及其他形式的显示。
图20例示了根据一个实施例的用于指定和/或指示所施加的AWGN的示例性AWGN用户界面视图。AGWN用户界面视图可以将AWGN控制消息(包)发送到AWGN生成器组件。包可以包含请求的SNR和假定的平均信号功率。AWGN组件可以将发射器输出当作具有给定的平均功率。它可以使用请求的SNR,并且计算将添加到发射器输出的噪声的幅度。
AWGN用户界面视图可以周期性地将包发送到HyperXTM硬件以调整AWGN噪声设置。在一个实施例中,AWGN可以以两种模式操作:固定和扫掠。
在固定模式下,可以发送一个AWGN控制包,该AWGN控制包包含来自固定字段的SNR值和平均功率字段的值。
在扫掠模式下,可以周期性地发送AWGN控制数据包。所示的Secs/Incr微调控件可以调整更新之间的秒数。SNR可以从起始值扫掠到终止值,并且每次可以以增量值递增。第一数据包可以使用扫掠字段中的SNR值。一旦数据包与终止值一起发送,则扫掠可以再次从起始值开始。
注意,在所示的实施例中,底部的小曲线图提供扫掠中的进度的指示。
表4
Figure BDA0003212350470000491
Figure BDA0003212350470000501
还要注意,AWGN组件可以不仅对新数据块的到达做出响应,而且还可以对控制包的到达做出响应。这可以通过以循环的方式对到达端口进行轮询来实现。然而,轮询使PE连续地运行,消耗了电能。存在暂停PE以节省电能的各种现有技术的方式,因为当被暂停时,PE功耗比运行时小得多,通常小几个数量级。PE暂停(也被称为等待状态或仅仅是“等待”)可以与PE内部或外部的特定事件协调。PE暂停可以在PE执行等待的二进制指令时由软件发起。从等待指令的退出可以取决于一个或更多个唤醒信号。DMR可以将一个或更多个唤醒信号发送到其相邻的PE中的一个或更多个,并且PE可以从其所有相邻的DMR接收唤醒信号。唤醒信号可以通过作为DMR-PE接口的一部分但独立于PIN或SIN的物理电路从DMR传送到PE。DMR具有被称为屏蔽寄存器的寄存器,这些寄存器可以被配置为在数据触发事件到来时选择哪些链路端口将被启用来发起唤醒信号。附加的寄存器可以被配置为确定针对特定PE的唤醒信号是在任何一个被启用的端口被触发时就生成,还是直到所有被启用的端口都被触发才生成。这些硬件功能的操作的示例在关于hx3100A集成电路产品的HyperXTM用户手册中有详细描述。
下面示出了用于AWGN组件的示例性源代码,接着是其操作的描述。这为等待和唤醒信令提供了RTA上下文。注意,该AWGN代码仅仅是示例,并且可以具有许多变化来调整性能、指令存储器大小、缓冲区大小、信号采样值类型等。
Figure BDA0003212350470000502
Figure BDA0003212350470000511
Figure BDA0003212350470000521
在该示例性实施例中,函数awgnView()通过启用来自与commID“controlIN”和“dataIn”相关联的DMR端口的唤醒信号源来开始。然后,它开始将控制包接收到被命名为“control”的存储器中的缓冲区中,其中,MPX_Recv函数的自变量指定缓冲区地址、包大小、包元素的数据类型(这里,MPX_INT指定为整数)、commID和非阻塞模式。非阻塞模式意指程序控制在缓冲区满之前不等待,而是立即进入下一个声明。下一个声明开始将数据块接收到被命名为“data”的缓冲区中,该缓冲区仅包含来自commID dataIn的类型为整数的2个元素,并且其模式是非阻塞的。
下一个声明是在程序块上无限地运行的while循环,所述程序块包含两个部分,每个部分由测试进行门控。进行第一部分(MPX_Rtest(controlIN)==DMA_DONE)的测试来查看针对controllIn的唤醒信号是否已经被接收。如果存在来自commID为controllIn的唤醒信号,则MPX_Rtest(controlIN)返回DMA_DONE值。一旦唤醒已经被接收,则程序处理对平均噪声的计算进行处理;然后开始读取另一个控制包;否则程序控制向下移动到第二部分的测试(MPX_Rtest(dataIn)==DMA_DONE)。当针对dataIn的唤醒被接收到时,该测试变为真,如果如此,则程序控制进入调用函数addNoise(data,2)以将噪声添加到数据缓冲区中的值。这之后是通过commID dataOut离开DMR的有噪声的数据的MPX_Send,commID dataOut是到在DUT上执行的接收器应用的路径。该发送是阻塞型的,以确保它在进入最后一个声明之前完成,所述最后一个声明是非阻塞型的接收,以开始从commID dataIn接收另一个数据块。程序控制然后向上循环回到while声明,然后是Wait声明,在Wait声明中,PE在新的控制包或新的数据块到达之前一直等待。
星座
图21例示了根据一个实施例的示例性星座图。星座图可以用图形显示对正交幅度调制(QAM)信号进行解码的有效性。IQ数据可以被示为星座图(也被称为散布图),或者被示为2D或3D热图。如所示出的,图形类型间的选择可以经由该图底部的一组选项卡来执行。
视频示例
以下描述视频源将图像帧发送到芯片的简单示例。图22例示了视频源视图(GUI),通过该GUI,可以配置和/或显示各种参数或属性,例如,文件的数量(“文件”)、消息的数量(“消息”)、数据速率(“字节速率”)和帧速率(“帧速率”)。如图22还示出的,还提供用于指定图像覆盖(具体地,在本示例中作为“覆盖物”的图像覆盖文本)的字段。
在该示例性实施例中,每个帧被格式化为JPEG图像。对JPEG数据执行以下:
1.从文件读取JPEG数据;
2.将JPEG数据解码为图像;
3.将图像覆盖文本写到所述文件;
4.将所述图像重新编码为JPEG;以及
5.将所述图像发送到芯片。
在该实施例中,使用固定大小的1024个字的消息来发送所述图像。因此,最终的JPEG图像可以被划分为多个消息。
在其他实施例,特别是对于更复杂的、更密集的MPA的实施例,可以按照以上技术对相对复杂的仪器进行编程和插入。这种基于软件的仪器一般被称为“合成仪器(synthetic instrument,SI)”,并且可以实现如频谱分析器或矢量信号分析器等这种仪器。
示例性益处
以下是本文中所公开的技术的可能的益处的列表,但是应注意,所列出的益处仅仅是示例性的,而非意图使所公开的技术的实际益处局限于任何特定的一组益处。
探测器的自动设置,以及一旦用户选择了测试点就建立的芯片外的通信通路;
存储器位置和信号的自动探测;
运行时的智能变化以适应改变的信噪比;
增大的信号测量带宽;
增大的测量速率;
在测量数据离开芯片之前对测量数据的更好压缩;
更高的测试完成率;
应用软件的更透彻的测试和表征;
所需测试装备的数量和类型的可能的减少;和
观察不会扰乱最初的设计操作、功能或性能。
尽管已经相当详细地描述了以上实施例,但是对于本领域技术人员而言,一旦以上公开被充分领会,许多变化和修改将变得很清楚。权利要求书意在被解释为包含所有这种变化和修改。

Claims (10)

1.一种装置,包括:
包生成器电路,被配置为生成多个测试包;
发送器电路,被配置为使用所述多个测试包来生成输出信号;
噪声生成电路,被配置为向所述输出信号添加噪声以生成修改的信号;
接收器电路,被配置为使用所述修改的信号来生成多个接收包;以及
包比较器电路,被配置为基于所述多个接收包来确定误差率。
2.如权利要求1所述的装置,其中,所述噪声生成电路包括多处理器系统。
3.如权利要求2所述的装置,其中,所述噪声生成电路进一步被配置为:
接收至少一个由用户定义的包;以及
使用所述至少一个由用户定义的包来调整与所述噪声相关联的参数。
4.如权利要求1所述的装置,其中,为了确定误差率,所述包比较器电路进一步被配置为比较所述多个接收包与所述多个测试包。
5.一种方法,包括:
通过包生成器电路生成多个测试包;
通过发送器电路使用所述多个测试包来生成输出信号;
通过噪声生成电路向所述输出信号添加噪声以生成修改的信号;
通过接收器电路使用所述修改的信号来生成多个接收包;以及
通过包比较器电路基于所述多个接收包来确定误差率。
6.如权利要求5所述的方法,其中,所述噪声生成电路包括多处理器系统。
7.如权利要求6所述的方法,其中,向所述输出信号添加噪声进一步包括:
通过所述噪声生成电路接收至少一个由用户定义的包;以及
通过所述噪声生成电路使用所述至少一个由用户定义的包来调整与所述噪声相关联的参数。
8.如权利要求7所述的方法,其中,调整参数包括通过所述噪声生成电路修改所述噪声的幅度。
9.如权利要求5所述的方法,其中,确定误差率包括通过所述包比较器电路比较所述多个接收包与所述多个测试包。
10.一种方法,包括:
接收用于多处理器系统的应用;
将至少一个探测器插入到所述应用中;
在所述多处理器系统的第一部分上执行所述应用;
将所述至少一个探测器生成的数据发送到测试用具,所述测试用户包括在所述多处理器系统的第二部分上执行的多个组件;以及
通过所述测试用具处理所接收的数据以生成结果信息。
CN202110934466.9A 2012-11-09 2013-11-08 对于多处理器系统的实时分析和控制 Pending CN113626269A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201261724493P 2012-11-09 2012-11-09
US61/724,493 2012-11-09
CN201380065983.0A CN104871140B (zh) 2012-11-09 2013-11-08 对于多处理器系统的实时分析和控制

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201380065983.0A Division CN104871140B (zh) 2012-11-09 2013-11-08 对于多处理器系统的实时分析和控制

Publications (1)

Publication Number Publication Date
CN113626269A true CN113626269A (zh) 2021-11-09

Family

ID=49640202

Family Applications (3)

Application Number Title Priority Date Filing Date
CN201810480764.3A Active CN108717387B (zh) 2012-11-09 2013-11-08 对于多处理器系统的实时分析和控制
CN202110934466.9A Pending CN113626269A (zh) 2012-11-09 2013-11-08 对于多处理器系统的实时分析和控制
CN201380065983.0A Active CN104871140B (zh) 2012-11-09 2013-11-08 对于多处理器系统的实时分析和控制

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN201810480764.3A Active CN108717387B (zh) 2012-11-09 2013-11-08 对于多处理器系统的实时分析和控制

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN201380065983.0A Active CN104871140B (zh) 2012-11-09 2013-11-08 对于多处理器系统的实时分析和控制

Country Status (5)

Country Link
US (4) US9477585B2 (zh)
EP (3) EP2917837B1 (zh)
JP (4) JP6290913B2 (zh)
CN (3) CN108717387B (zh)
WO (1) WO2014074783A2 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN118093206A (zh) * 2024-04-26 2024-05-28 北京中关村科金技术有限公司 面向企业应用服务的信息处理方法及系统

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101796794B1 (ko) * 2010-12-24 2017-11-13 한양대학교 산학협력단 소프트웨어 정의 라디오 단말 장치 및 라디오 어플리케이션의 배포 및 설치 방법
US20130174113A1 (en) * 2011-12-30 2013-07-04 Arteris SAS Floorplan estimation
WO2014074251A1 (en) 2012-11-06 2014-05-15 Coherent Logix, Incorporated Multiprocessor programming toolkit for design reuse
US9459978B2 (en) * 2013-01-24 2016-10-04 Xcerra Corporation Automated test platform utilizing segmented data sequencers to provide time controlled test sequences to device under test
US9430349B2 (en) * 2013-01-24 2016-08-30 Xcerra Corporation Scalable test platform in a PCI express environment with direct memory access
US9430348B2 (en) * 2013-01-24 2016-08-30 Xcerra Corporation Scalable test platform in a PCI express environment with direct memory access
US9336108B2 (en) 2013-01-24 2016-05-10 Xcerra Corporation Scalable test platform
US9311444B1 (en) * 2014-07-10 2016-04-12 Sandia Corporation Integrated circuit test-port architecture and method and apparatus of test-port generation
CN106130961B (zh) * 2016-06-14 2019-05-14 哈尔滨工业大学 用于软件无线电系统的安全检测方法和软件无线电设备
US10132862B1 (en) * 2016-07-21 2018-11-20 Cadence Design Systems, Inc. Code coverage mapping
WO2018162048A1 (en) * 2017-03-07 2018-09-13 Advantest Corporation Test apparatus and method for characterizing a device under test
US20180316626A1 (en) * 2017-04-28 2018-11-01 Futurewei Technologies, Inc. Guided Optimistic Resource Scheduling
US10326540B2 (en) * 2017-06-12 2019-06-18 Litepoint Corporation Method for controlling wireless device under test using non-link testing resources
CN107391149A (zh) * 2017-07-28 2017-11-24 郑州云海信息技术有限公司 一种硬件平台的代码生成方法及装置
CN111480150B (zh) * 2017-11-02 2024-07-16 芯力能简易股份公司 用于控制引擎调试、测试、校准和调节的软件环境
CN108038058A (zh) * 2017-12-21 2018-05-15 北京星河星云信息技术有限公司 应用软件性能的监控方法、系统、存储器和服务器
KR102131982B1 (ko) 2018-05-31 2020-07-08 현대오트론 주식회사 차량용 소프트웨어 진단 시스템 및 그것의 동작 방법
US11727021B2 (en) * 2018-12-14 2023-08-15 Tibco Software Inc. Process control tool for processing big and wide data
CN109799373A (zh) * 2019-02-18 2019-05-24 杭州长川科技股份有限公司 具备多通道同步功能的任意波形发生器
US12021727B2 (en) * 2019-12-10 2024-06-25 Jpmorgan Chase Bank, N.A. Systems and methods for dynamic network traffic manipulation
CN113079524B (zh) * 2020-01-06 2022-04-22 大唐移动通信设备有限公司 一种基于信令软采的信令跟踪方法、基站及可读存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1516649A (zh) * 2001-06-13 2004-07-28 Ħ��������˾ 无源通信设备和无源访问控制系统
US20040229650A1 (en) * 2003-02-27 2004-11-18 Kabushiki Kaisha Toshiba Signal processing apparatus and methods
US20050025221A1 (en) * 2000-10-13 2005-02-03 Lindsey William C. System for, method of, transmitting data from a transmitter to a receiver and recovering the data at the receiver
CN101826913A (zh) * 2010-01-28 2010-09-08 陈清尧 电视红外音频信号发射和接收器

Family Cites Families (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6134705A (en) 1996-10-28 2000-10-17 Altera Corporation Generation of sub-netlists for use in incremental compilation
US6571206B1 (en) * 1998-01-15 2003-05-27 Phoenix Technologies Ltd. Apparatus and method for emulating an I/O instruction for the correct processor and for servicing software SMI's in a multi-processor environment
JP2000284945A (ja) 1999-03-29 2000-10-13 Sharp Corp デジタル機器及びその開発方法
JP2000298599A (ja) 1999-04-13 2000-10-24 Nec Commun Syst Ltd 交換ソフトウェアの自動試験システム
GB2352129B (en) 1999-07-16 2003-08-27 Nokia Mobile Phones Ltd Test apparatus
US6681351B1 (en) * 1999-10-12 2004-01-20 Teradyne, Inc. Easy to program automatic test equipment
US6880074B2 (en) * 2000-12-22 2005-04-12 International Business Machines Corporation In-line code suppression
US20040078674A1 (en) * 2001-04-04 2004-04-22 Bops, Inc. Methods and apparatus for generating functional test programs by traversing a finite state model of an instruction set architecture
EP1410191A2 (en) * 2001-07-26 2004-04-21 Kyocera Wireless Corporation System and method for the management of wireless communications device system software downloads in the field
US7543303B2 (en) * 2002-03-29 2009-06-02 International Business Machines Corporation Use of multiple queues in coupling facility to provide zoning capability in a parallel sysplex environment
US6983398B2 (en) * 2002-04-24 2006-01-03 Hewlett-Packard Development Company, L.P. Testing processors
US7415594B2 (en) 2002-06-26 2008-08-19 Coherent Logix, Incorporated Processing system with interspersed stall propagating processors and communication elements
US7146607B2 (en) 2002-09-17 2006-12-05 International Business Machines Corporation Method and system for transparent dynamic optimization in a multiprocessing environment
US6701412B1 (en) * 2003-01-27 2004-03-02 Sun Microsystems, Inc. Method and apparatus for performing software sampling on a microprocessor cache
US7406686B2 (en) * 2003-06-09 2008-07-29 Sun Microsystems, Inc. Systems and methods for software performance tuning
US7805638B2 (en) * 2003-06-18 2010-09-28 Nethra Imaging, Inc. Multi-frequency debug network for a multiprocessor array
US7475303B1 (en) * 2003-12-29 2009-01-06 Mips Technologies, Inc. HyperJTAG system including debug probe, on-chip instrumentation, and protocol
US7506311B2 (en) * 2004-02-19 2009-03-17 Oracle International Corporation Test tool for application programming interfaces
US7415635B1 (en) * 2004-12-15 2008-08-19 Microsoft Corporation Integrated software test framework for performance testing of a software application
US7814466B2 (en) * 2006-05-05 2010-10-12 International Business Machines Corporation Method and apparatus for graphically marking instructions for instrumentation with hardware assistance
TWI360126B (en) * 2006-09-28 2012-03-11 Sandisk Corp Nonvolatile memory with adaptive operations and me
GB2443277B (en) * 2006-10-24 2011-05-18 Advanced Risc Mach Ltd Performing diagnostics operations upon an asymmetric multiprocessor apparatus
US8370806B2 (en) * 2006-11-15 2013-02-05 Qualcomm Incorporated Non-intrusive, thread-selective, debugging method and system for a multi-thread digital signal processor
JP2008160235A (ja) 2006-12-21 2008-07-10 Leader Electronics Corp チューナのビットエラーレート測定の方法及び装置
JP4633073B2 (ja) 2007-02-26 2011-02-16 日本電気株式会社 データ処理システム
US8433953B1 (en) * 2007-08-13 2013-04-30 The Mathworks, Inc. Automatic configuration of a test environment
WO2009039462A1 (en) * 2007-09-19 2009-03-26 Tabula, Inc. Method and system for reporting on a primary circuit structure of an integrated circuit (ic) using a secondary circuit structure of the ic
US8028150B2 (en) * 2007-11-16 2011-09-27 Shlomo Selim Rakib Runtime instruction decoding modification in a multi-processing array
US20090254886A1 (en) * 2008-04-03 2009-10-08 Elliot Gibson D Virtual debug port in single-chip computer system
US7904870B2 (en) * 2008-04-30 2011-03-08 International Business Machines Corporation Method and apparatus for integrated circuit design model performance evaluation using basic block vector clustering and fly-by vector clustering
KR101522444B1 (ko) * 2008-10-24 2015-05-21 인터내셔널 비지네스 머신즈 코포레이션 소스 코드 처리 방법, 시스템, 및 프로그램
US8930912B2 (en) * 2008-12-16 2015-01-06 Cadence Design Systems, Inc. Method and system for performing software verification
US8407167B1 (en) * 2009-06-19 2013-03-26 Google Inc. Method for optimizing memory controller configuration in multi-core processors using fitness metrics and channel loads
US20110113290A1 (en) * 2009-11-09 2011-05-12 International Business Machines Corporation Method and system for testing configuration of environments
US8489787B2 (en) * 2010-10-12 2013-07-16 International Business Machines Corporation Sharing sampled instruction address registers for efficient instruction sampling in massively multithreaded processors
US20120124558A1 (en) * 2010-11-17 2012-05-17 Microsoft Corporation Scenario testing composability across multiple components
US8818787B2 (en) * 2011-01-31 2014-08-26 Yahoo! Inc. Method and system for predicting performance of software applications on prospective hardware architecture
JP2012181666A (ja) 2011-03-01 2012-09-20 Nec Corp 情報処理装置、情報処理方法及び情報処理プログラム
US20130104105A1 (en) * 2011-04-18 2013-04-25 Julian M. Brown Test data supply chain manager for an integrated testing platform
US8898408B2 (en) * 2011-12-12 2014-11-25 Dell Products L.P. Memory controller-independent memory mirroring
US9362003B2 (en) * 2012-03-09 2016-06-07 Sandisk Technologies Inc. System and method to decode data subject to a disturb condition
CN102662841B (zh) * 2012-04-01 2014-11-05 北京航空航天大学 一种软硬件结合的可靠性综合试验剖面构造方法
JP2017049742A (ja) * 2015-09-01 2017-03-09 キヤノン株式会社 画像処理方法、画像処理装置、ロボット装置、プログラム、及び記録媒体

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050025221A1 (en) * 2000-10-13 2005-02-03 Lindsey William C. System for, method of, transmitting data from a transmitter to a receiver and recovering the data at the receiver
CN1516649A (zh) * 2001-06-13 2004-07-28 Ħ��������˾ 无源通信设备和无源访问控制系统
US20040229650A1 (en) * 2003-02-27 2004-11-18 Kabushiki Kaisha Toshiba Signal processing apparatus and methods
CN101826913A (zh) * 2010-01-28 2010-09-08 陈清尧 电视红外音频信号发射和接收器

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN118093206A (zh) * 2024-04-26 2024-05-28 北京中关村科金技术有限公司 面向企业应用服务的信息处理方法及系统

Also Published As

Publication number Publication date
WO2014074783A2 (en) 2014-05-15
US20140137082A1 (en) 2014-05-15
EP2917837A2 (en) 2015-09-16
EP2917837B1 (en) 2019-01-02
US20190050324A1 (en) 2019-02-14
EP3499371B1 (en) 2023-06-07
EP4235444A3 (en) 2024-01-03
JP2018106733A (ja) 2018-07-05
US11720479B2 (en) 2023-08-08
CN108717387A (zh) 2018-10-30
JP2015535621A (ja) 2015-12-14
JP6290913B2 (ja) 2018-03-07
US20230359548A1 (en) 2023-11-09
EP4235444A2 (en) 2023-08-30
JP2020074192A (ja) 2020-05-14
JP7053691B2 (ja) 2022-04-12
US20170010958A1 (en) 2017-01-12
CN108717387B (zh) 2021-09-07
US9477585B2 (en) 2016-10-25
JP7335387B2 (ja) 2023-08-29
JP6652581B2 (ja) 2020-02-26
EP3499371A3 (en) 2019-09-18
EP3499371A2 (en) 2019-06-19
CN104871140B (zh) 2018-06-19
US10114739B2 (en) 2018-10-30
CN104871140A (zh) 2015-08-26
WO2014074783A3 (en) 2014-07-03
JP2022084921A (ja) 2022-06-07

Similar Documents

Publication Publication Date Title
CN108717387B (zh) 对于多处理器系统的实时分析和控制
Panesar et al. Deterministic parallel processing
US10628548B2 (en) Flow control in networking system-on-chip verification
US20150040096A1 (en) Emulation-based functional qualification
US8949752B2 (en) System and method of emulating multiple custom prototype boards
Koch-Hofer et al. ASC, a SystemC extension for Modeling Asynchronous Systems, and its application to an Asynchronous NoC
CN113496108A (zh) 一种应用于仿真的cpu模型
Sachße et al. Architecture of an adaptive test system built on FPGAs
US10635769B1 (en) Hardware and software event tracing for a system-on-chip
Panesar et al. Multi-Core System-on-Chip in Real World Products
Fogarty et al. On‐chip support for software verification and debug in multi‐core embedded systems
Wieferink et al. Retargetable processor system integration into multi-processor system-on-chip platforms
Moreno Analysis and optimization of a debug post-silicon hardware architecture
Vaumorin et al. SPIRIT IP-XACT Controlled ESL Design Tool Applied to a Network-on-Chip Platform
Ciobotaru Characterizing, managing and monitoring the networks for the ATLAS data acquisition system
Plumlee Application development process for GNAT, a SOC networked system
Mavroidis Novel techniques for hardware/software partitioning and emulation
Nejad High-Level Debugger Software for Communication-Centric Transaction-Based Debug Infrastructure of Systems on Chip (Æthereal Platform)
Lee et al. SoC Design Environment with Automated Bus Architecture Generation for Rapid Prototyping with ISS
WO2005041074A1 (en) System and method for functional verification of an electronic integrated circuit design

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20211109

WD01 Invention patent application deemed withdrawn after publication