CN104025037B - 在不将数据复制到单独的储存的情况下交换指针来处理被数据源存储在缓冲器中的数据 - Google Patents

在不将数据复制到单独的储存的情况下交换指针来处理被数据源存储在缓冲器中的数据 Download PDF

Info

Publication number
CN104025037B
CN104025037B CN201280066034.XA CN201280066034A CN104025037B CN 104025037 B CN104025037 B CN 104025037B CN 201280066034 A CN201280066034 A CN 201280066034A CN 104025037 B CN104025037 B CN 104025037B
Authority
CN
China
Prior art keywords
data
pointer
buffer
loaded
continuously
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.)
Expired - Fee Related
Application number
CN201280066034.XA
Other languages
English (en)
Other versions
CN104025037A (zh
Inventor
Y.H.赵
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of CN104025037A publication Critical patent/CN104025037A/zh
Application granted granted Critical
Publication of CN104025037B publication Critical patent/CN104025037B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • 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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Controls And Circuits For Display Device (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

提供了在不将数据复制到单独的储存的情况下交换指针来处理被数据源存储在多个缓冲器中的数据的装置和方法。可以通过连续地交换第一指针以指向多个缓冲器来连续地将数据加载到第一指针所指向的多个缓冲器中。可以通过连续地交换第二指针以指向多个缓冲器来连续地将第二指针指向多个缓冲器从而连续地处理被加载在多个缓冲器中的数据。

Description

在不将数据复制到单独的储存的情况下交换指针来处理被数 据源存储在缓冲器中的数据
背景技术
为了处理来自数据源的数据(诸如摄像机或视频处理线程的输出),数据源可以顺序地将数据块(例如,帧)存储到第一缓冲器和第二缓冲器中,使得数据请求方(例如,单独的视频处理线程)可以复制数据以供处理。例如,数据源可以将第一数据块存储到第一缓冲器中。当第一缓冲器被充满时,可以向数据请求方提供“数据就绪(data ready)信号”以指示第一缓冲器准备好被复制和处理。响应于数据就绪信号,数据请求方可以将数据从第一缓冲器复制到其自身的缓冲器以供处理。在数据请求方从第一缓冲器读取数据的同时,数据源可以将第二数据块存储到第二缓冲器。当第二缓冲器被充满时,可以向数据请求方提供“数据就绪信号”以指示第二缓冲器准备好被复制和处理。响应于数据就绪信号,数据请求方可以将数据从第二缓冲器复制到其自身的缓冲器以供处理。在数据请求方从第二缓冲器读取数据的同时,数据源可以将第三数据块存储到第一缓冲器中,其中以上过程可以重复,直到来自数据源的所有数据被供应给第一和第二缓冲器为止。
如果数据源将数据存储在第一和第二缓冲器中的速率快于数据请求方可以从缓冲器复制数据的速率,则一些数据可能由于在数据请求方可以复制数据之前数据源重写存储在第一和第二缓冲器中的数据而被丢失。多个数据请求方可以被用于从缓冲器复制数据以帮助防止数据丢失。
然而,除其它原因之外,从第一和第二缓冲器复制数据到不同的缓冲器以供一个或多个数据请求方处理尤其可能降低系统的总体性能。
附图说明
通过阅读以下说明书和随附的权利要求,并且通过参考以下附图,本发明的实施例的各种优势将变得对本领域技术人员显而易见,在附图中:
图1是图示了用于在不将数据复制到单独的存储器的情况下存储和处理来自数据源的数据的示例性系统的框图;
图2图示了在不将数据复制到单独的储存(storage)的情况下通过交换指针来处理被数据源存储在图1的缓冲器中的数据的示例性过程;
图3A和3B分别图示了基于参照图2描述的过程的图1的数据源的加载活动和图1的数据请求方的处理活动;
图4是图示了用于在不将数据复制到单独的存储器的情况下存储和处理来自数据源的数据的示例性计算机系统的框图;
图5是图示了本公开的示例性系统的框图;以及
图6是图示了其中可以体现图5的系统组件的示例性小形状因子设备的框图。
具体实施方式
本公开的各种实现提供了用于在不将数据复制到单独的储存的情况下通过交换指针来处理被数据源存储在多个缓冲器中的数据的装置和方法。
图1图示了用于在不将数据复制到单独的存储器的情况下存储和处理来自数据源的数据的示例性系统100。系统100可以包括数据源105、第一缓冲器110、第二缓冲器115、第三缓冲器120以及数据请求方125。图示的数据源105将数据加载到加载指针所指向的缓冲器,其中数据请求方125可以处理在处理指针所指向的缓冲器中的数据。如将在下文中参照图2说明的,通过交换指针,数据请求方125可以在不将数据复制到单独的存储器以供处理的情况下处理被数据源105加载到缓冲器中的数据。
如图2中所示,在阶段205处,加载指针指向第一缓冲器110,交换指针(swappointer)指向第二缓冲器115,并且处理指针指向第三缓冲器。在阶段205处,由于加载指针指向第一缓冲器110,数据源105可以将数据加载到第一缓冲器110。例如,当数据源105填满第一缓冲器110时,数据源105然后还可以获得信号量锁(semaphore lock)来控制在阶段205处对交换指针的访问而将数据存储到另一个缓冲器中。
在阶段210处,可以将加载指针与交换指针交换,使得加载指针指向第二缓冲器115并且交换指针指向第一缓冲器110。在阶段210处,还可以(例如通过数据源105)向数据请求方125提供数据就绪信号,并且数据源105还可以释放在阶段205处获得的信号量锁。
在阶段215处,数据请求方125可以获得信号量锁以控制对交换指针的访问。然后可以将处理指针与交换指针交换,使得处理指针指向第一缓冲器110并且交换指针指向第三缓冲器120。由于处理指针现在指向第一缓冲器110,数据请求方125可以在不将数据复制到单独的存储器的情况下处理存储在第一缓冲器110中的数据。而且,由于加载指针指向第二缓冲器115,数据源105可以将数据加载到第二缓冲器115。而且,例如当数据源105填满第二缓冲器115时,数据源105然后可以获得信号量锁以控制对交换指针的访问而将数据存储到另一个缓冲器中。
在阶段220处,可以将加载指针与交换指针交换,使得加载指针指向第三缓冲器120,并且交换指针指向第二缓冲器115。数据源105然后可以释放信号量锁。在阶段220处,还可以(例如通过数据源105)向数据请求方125提供数据就绪信号。
在阶段225处,例如,当数据请求方125完成处理存储在第一缓冲器110中的数据时,数据请求方125可以获得信号量锁以控制对交换指针的访问而处理下一数据。然后可以将处理指针与交换指针交换,使得处理指针指向第二缓冲器115并且交换指针指向第一缓冲器110。由于处理指针现在指向第二缓冲器115,数据请求方125可以在不将数据复制到单独的存储器的情况下处理存储在第二缓冲器115中的数据。而且,由于加载指针指向第三缓冲器120,数据源105可以将数据加载到第三缓冲器120。例如,当数据源105填满第三缓冲器120时,数据源105然后可以获得信号量锁以控制对交换指针的访问而将数据存储到另一个缓冲器中。
在阶段230处,可以将加载指针与交换指针交换,使得加载指针指向第一缓冲器110并且交换指针指向第三缓冲器120。数据源105然后可以释放信号量锁。在阶段230处,还可以(例如,通过数据源105)向数据请求方125提供数据就绪信号。
在阶段235处,例如,当数据请求方125完成处理存储在第二缓冲器115中的数据时,数据请求方125可以获得信号量锁以控制对交换指针的访问。然后可以将处理指针与交换指针交换,使得处理指针指向第三缓冲器120并且交换指针指向第二缓冲器115。由于处理指针现在指向第三缓冲器120,数据请求方125可以在不将数据复制到单独的存储器的情况下处理存储在第三缓冲器120中的数据。而且,由于加载指针指向第一缓冲器110,数据源105可以将数据加载到第一缓冲器110。数据源105然后可以获取信号量锁以控制对交换指针的访问。
阶段210到235可以重复,直到来自数据源105的所有数据被供应到缓冲器为止。
图3A和3B分别图示了基于参照图2描述的过程的数据源105的加载活动和数据请求方125的处理活动。在阶段205处,数据源105将数据加载到第一缓冲器110中。在阶段215处,数据源105将数据加载到第二缓冲器115中,并且数据请求方125处理存储在第一缓冲器110中的数据。在阶段225处,数据源105将数据加载到第三缓冲器120中,并且数据请求方125处理存储在第二缓冲器115中的数据。在阶段235处,数据源105将数据加载到第一缓冲器110中,并且数据请求方125处理存储在第三缓冲器120中的数据。阶段215到235可以重复,直到来自数据源105的所有数据被供应到缓冲器为止。
如图2、3A和3B中所示,通过对指针进行交换,数据请求方125可以在不将数据复制到单独的存储器以供处理的情况下处理被数据源105加载到缓冲器中的数据。
在一些实现中,系统100可以包括附加的缓冲器以用于数据源105加载数据。在一些实现中,系统100可以包括并行处理缓冲器中的数据的多个数据请求方。在这种情况下,每个附加的数据请求方分配其自身的数据缓冲器并且如参照图2教导的那样交换对应的指针。
图4图示了在不将数据复制到单独的存储器的情况下存储和处理来自数据源435的数据的示例性计算机系统400。
系统400可以包括经由CPU总线420耦合到总线控制器410的处理器405。在一些实现中,系统400可以包括多个处理器。总线控制器410可以包括存储器控制器415。在一些实现中,存储器控制器415可以在总线控制器410外部。存储器控制器415可以经由存储器总线430将处理器405对接到系统存储器425。在一些实现中,系统存储器425可以被描述为系统400的“主存储器”。
在一些实现中,系统存储器425可以存储信息和要被处理器405运行的指令。在一些实现中,系统存储器425可以存储当被处理器405运行时使系统400执行参照图2描述的过程或其部分的指令。系统存储器425可以存储要被处理器访问以实现例如用以执行图形操作的代码的数据。系统存储器425可以包括被存储器控制器415访问的动态随机访问存储器(DRAM)模块。在一些实现中,系统存储器425还可以被用于存储作为要被处理器405处理的接收自数据源435的一个或多个图像帧的部分的像素。例如,在一些实现中,系统存储器425可以包括图1的第一缓冲器110、第二缓冲器115和第三缓冲器120。数据源435可以包括处理器和用来存储当被处理器运行时使数据源执行图2的过程的部分的指令的储存。
计算机系统400还可以包括耦合到存储器总线430的大容量储存设备440。大容量储存设备440可以包括,例如,硬盘、软盘、压缩盘只读存储器(CD-ROM)、数字视频盘只读存储器(DVD-ROM)、磁带、高密度软盘、高容量可拆卸介质、低容量可拆卸介质、固态存储器设备及其组合。
在一些实现中,图形处理器可以处理存储在缓冲器110、115和120中的帧数据。
预期在本公开的范围内的计算设备包括个人计算机(PC)、膝上型计算机、超膝上型(ultra-laptop)计算机、平板、触摸板、便携式计算机、手持式计算机、掌上计算机、个人数字助理(PDA)、蜂窝电话、组合蜂窝电话/PDA、电视、智能设备(例如智能电话、智能平板或智能电视)、移动互联网设备(MID)、消息传递设备、数据通信设备等等。
图5图示了本公开的系统500的示例性实施例,其包括平台502、显示器520、一个或多个内容服务设备530、一个或多个内容递送设备540和导航控制器550。在实施例中,系统500可以是媒体系统,尽管系统500不受限于该上下文。例如,系统500的组件可以并入到个人计算机(PC)、膝上型计算机、超膝上型计算机、平板、触摸板、便携式计算机、手持式计算机、掌上计算机、个人数字助理(PDA)、蜂窝电话、组合蜂窝电话/PDA、电视、智能设备(例如智能电话、智能平板或智能电视)、移动互联网设备(MID)、消息传递设备、数据通信设备等等。
在实施例中,系统500包括耦合到显示器520的平台502。平台502可以从诸如一个或多个内容服务设备530或一个或多个内容递送设备540或其它类似内容源之类的内容设备接收内容。包括一个或多个导航特征的导航控制器550可以被用于与例如平台502和/或显示器520交互。在以下更加详细地描述这些组件中的每一个。
在实施例中,平台502可以包括芯片组505、处理器510、存储器512、储存514、图形子系统515、应用516、网络组件517(例如有线的或无线的)和/或无线电设备518的任何组合。芯片组505可以提供处理器510、存储器512、储存514、图形子系统515、应用516和/或无线电设备518之中的互通信。例如,芯片组505可以包括能够提供与储存514的互通信的储存适配器(未描绘)。
处理器510可以被实现为复杂指令集计算机(CISC)或精简指令集计算机(RISC)处理器、x86指令集兼容处理器、多核或任何其它的微处理器或中央处理单元(CPU)。在实施例中,处理器510可以包括一个或多个单核或多核处理器、一个或多个单核或多核移动处理器等等。
存储器512可以被实现为易失性存储器设备,诸如,但不限于,随机访问存储器(RAM)、动态随机访问存储器(DRAM)或静态RAM(SRAM)。在一些实施例中,存储器512可以被实现为诸如闪速存储器设备之类的非易失性存储器。
储存514可以被实现为非易失性储存设备,诸如,但不限于,磁盘驱动器、光盘驱动器、磁带驱动器、内部储存设备、附接储存设备、闪速存储器、备有电池的SDRAM(同步DRAM)和/或网络可访问储存设备。在实施例中,储存514可以包括当例如包括多个硬盘驱动器时提高针对有价值的数字介质的储存性能增强保护的技术。
图形子系统515可以执行诸如静止图像之类的图像或视频的处理以供显示。图形子系统515可以是例如图形处理单元(GPU)或视觉处理单元(VPU)。模拟或数字接口可以被用于通信地耦合图形子系统515和显示器520。例如,接口可以是高清晰度多媒体接口、显示端口、无线HDMI和/或无线HD依从技术中的任何一个。在实施例中,图形子系统515可以集成到处理器510或芯片组505中。在实施例中,图形子系统515可以是通信地耦合到芯片组505的独立的卡。
本文描述的图形和/或视频处理技术可以以各种硬件架构实现。例如,图形和/或视频功能可以集成在芯片组内。可替换地,可以使用离散的图形和/或视频处理器。作为又一实施例,图形和/或视频功能可以通过包括多核处理器的通用处理器来实现。在另外的实施例中,所述功能可以以消费电子设备来实现。
无线电设备518可以包括能够通过使用各种适合的无线通信技术来发射和接收信号的一个或多个无线电设备。这样的技术可以涉及跨一个或多个无线网络的通信。示例性无线网络包括(但不限于)无线局域网(WLAN)、无线个域网(WPAN)、无线城域网(WMAN)、蜂窝网络和卫星网络。在跨这样的网络的通信中,无线电设备518可以依照以任何版本的一个或多个适用标准进行操作。
网络组件517可以包括能够通过使用各种适合的有线和/或无线通信技术来发射和接收信号的一个或多个网络组件。这样的技术可以涉及跨一个或多个有线和/或无线网络的通信。在跨这样的网络的通信中,网络组件517可以依照以任何版本的一个或多个适用标准进行操作。在实施例中,显示器520可以包括任何电视类型的监视器或显示器。显示器520可以包括例如计算机显示屏、触摸屏显示器、视频监视器、类电视设备和/或电视。显示器520可以是数字和/或模拟的。在实施例中,显示器520可以是全息显示器。显示器520还可以是接收视觉投影的透明表面。这样的投影可以传达各种形式的信息、图像和/或对象。例如,这样的投影可以是用于移动增强现实(MAR)应用的视觉重叠。在一个或多个软件应用516的控制之下,平台502可以在显示器520上显示用户界面522。
在实施例中,一个或多个内容服务设备530可以由任何国家、国际和/或独立服务来主管并且因此经由例如因特网而对平台502可访问。一个或多个内容服务设备530可以耦合到平台502和/或显示器520。平台502和/或一个或多个内容服务设备530可以耦合到网络560以向网络560和从网络560传送(例如发送和/或接收)媒体信息。一个或多个内容递送设备540也可以耦合到平台502和/或显示器520。
在实施例中,一个或多个内容服务设备530可以包括有线电视盒、个人计算机、网络、电话、摄像机、支持因特网的设备或能够递送数字信息和/或内容的电器以及能够在内容提供商与平台502和/显示器520之间经由网络560或直接地单向或双向传送内容的任何其它的类似设备。应当领会到内容可以经由网络560单向和/或双向地传送到系统500中的任何一个组件和内容提供商或从其进行传送。内容的示例可以包括任何媒体信息,包括例如,视频、音乐、医疗和游戏信息等等。
一个或多个内容服务设备530接收包括媒体信息、数字信息和/或其它内容的诸如有线电视节目之类的内容。内容提供商的示例可以包括任何有线或卫星电视或无线电或因特网内容提供商。所提供的示例并不意指限制本发明的实施例。
在实施例中,平台502可以从具有一个或多个导航特征的导航控制器550接收控制信号。控制器550的导航特征可以被用于例如与用户界面522交互。在实施例中,导航控制器550可以是定点设备、控制板、键盘或触摸屏设备,其可以是允许用户将空间(例如连续的和多维的)数据输入到计算机中的计算机硬件组件(特别地,人类接口设备)。诸如图形用户界面(GUI)之类的许多系统和电视以及监视器允许用户通过使用身体姿势控制并向计算机或电视提供数据。
控制器550的导航特征的移动可以通过在显示器上显示的指针、光标、聚焦环或其它视觉指示器的移动而被回送(echo)在显示器(例如显示器520)上。例如,在软件应用516的控制之下,位于导航控制器550上的导航特征可以被映射到显示在例如用户界面522上的虚拟导航特征。在实施例中,控制器550可能不是单独的组件,而是被集成到平台502和/或显示器520中。然而,实施例不限于或者在上下文中示出或者在本文中描述的元件。
在实施例中,驱动器(未示出)可以包括使得用户能够例如在初始启动之后(在被启用时)利用按钮触摸来即时开启和关闭像是电视的平台502。在平台被“关闭”时,程序逻辑可以允许平台502将内容串流到媒体适配器或一个或多个其它内容服务设备530或一个或多个内容递送设备540。此外,芯片组505可以包括用于例如5.1环绕立体声和/或高清晰度7.1环绕立体声的硬件和/或软件支持。驱动器可以包括用于集成图形平台的图形驱动器。在实施例中,图形驱动器可以包括高速外围组件互连(PCI)图形卡。
在各种实施例中,可以集成系统500中示出的任何一个或多个组件。例如,可以集成平台502和一个或多个内容服务设备530,或者可以集成平台502和一个或多个内容递送设备540,或者例如可以集成平台502、一个或多个内容服务设备530和一个或多个内容递送设备540。在各种实施例中,平台502和显示器520可以是集成单元。例如,可以集成显示器520和一个或多个内容服务设备530,或者可以集成显示器520和一个或多个内容递送设备540。这些示例并不意指限制本发明。
在各种实施例中,系统500可以被实现为无线系统、有线系统或这二者的组合。当被实现为无线系统时,系统500可以包括适于通过无线共享介质进行通信的组件和接口,诸如一个或多个天线、发射器、接收器、收发器、放大器、滤波器、控制逻辑等等。无线共享介质的示例可以包括无线频谱的部分,诸如RF频谱等等。当被实现为有线系统时,系统500可以包括适于通过有线通信介质进行通信的组件和接口,诸如输入/输出(I/O)适配器、将I/O适配器与对应的有线通信介质连接的物理连接器、网络接口卡(NIC)、网络控制器(例如以太网控制器和端口——集成的或外部的)、盘控制器、视频控制器、音频控制器等等。有线通信介质的示例可以包括导线、线缆、金属引线、印刷电路板(PCB)、背板、交换结构、半导体材料、双纽线、同轴线缆、光纤等等。
平台502可以建立一个或多个逻辑或物理信道来传送信息。信息可以包括媒体信息和控制信息。媒体信息可以是指表示意在针对用户的内容的任何数据。内容的示例可以包括,例如,来自语音对话的数据、视频会议、流视频、电子邮件(“email”)消息、语音邮件消息、文字数字符号、图形、图像、视频、文本等等。来自语音对话的数据可以是,例如,话音信息、静默周期、背景噪声、舒适噪声、音调等等。控制信息可以是指表示意在用于自动化系统的命令、指令或控制字的任何数据。例如,控制信息可以被用于路由媒体信息通过系统,或者指示节点以预确定的方式处理媒体信息。然而,实施例不受限于在上下文中示出或者在图5中描述的元件。
如以上所描述的,系统500可以以变化的物理样式或形状因子来体现。图6图示了其中可以体现系统500的组件的小形状因子设备600的实施例。在实施例中,例如,设备600可以被实现为具有无线能力的移动计算设备。例如,移动计算设备可以是指具有处理系统和诸如一个或多个电池之类的移动电源或供应的任何设备。
如以上所描述的,移动计算设备的示例可以包括个人计算机(PC)、膝上型计算机、超膝上型计算机、平板、触摸板、便携式计算机、手持式计算机、掌上计算机、个人数字助理(PDA)、蜂窝电话、组合蜂窝电话/PDA、电视、智能设备(例如智能电话、智能平板或智能电视)、移动互联网设备(MID)、消息传递设备、数据通信设备等等。
移动计算设备的示例还可以包括被布置成由人穿戴的计算机,诸如手腕计算机、手指计算机、戒指计算机、眼镜计算机、腰带扣计算机、臂章计算机、鞋子计算机、衣物计算机以及其它可穿戴计算机。在实施例中,例如,移动计算设备可以被实现为能够执行计算机应用以及语音通信和/或数据通信的智能电话。尽管一些实施例可以通过作为示例被实现为智能电话的移动计算设备进行描述,但是可以领会到,也可以使用其它无线移动计算设备来实现其它实施例。实施例在该上下文中不受限。
如图6中所示,设备600可以包括外壳602、显示器604、输入/输出(I/O)设备606以及天线608。设备600还可以包括导航特征612。显示器604可以包括用于显示适于移动计算设备的信息的诸如用户界面610之类的任何适合的显示单元。
I/O设备606可以包括用于将信息输入到移动计算设备中的任何适合的I/O设备。I/O设备606的示例可以包括文字数字键盘、数字小键盘、触摸板、输入键、按钮、开关、摇臂开关、麦克风、扬声器、语音识别设备和软件等等。还可以通过麦克风将信息输入到设备600中。这样的信息可以被语音识别设备数字化。实施例在该上下文中不受限。
可以使用硬件元件、软件元件或这二者的组合来实现各种实施例。硬件元件的示例可以包括处理器、微处理器、电路、电路元件(例如晶体管、电阻器、电容器、电感器等等)、集成电路、专用集成电路(ASIC)、可编程逻辑设备(PLD)、数字信号处理器(DSP)、现场可编程门阵列(FPGA)、逻辑门、寄存器、半导体设备、芯片、微芯片、芯片组等等。软件的示例可以包括软件组件、程序、应用、计算机程序、应用程序、系统程序、机器程序、操作系统软件、驱动器、中间件、固件、软件模块、例程、子例程、函数、方法、过程、软件接口、应用程序接口(API)、指令集、计算代码、计算机代码、代码段、计算机代码段、字、值、符号或其任何组合。确定是否使用硬件元件和/或软件元件来实现实施例可以依照任何数量的因素而变化,诸如期望的计算速率、功率水平、耐热性、处理循环预算、输入数据速率、输出数据速率、存储器资源、数据总线速度和其它设计或性能约束。
至少一个实施例的一个或多个方面可以通过存储在机器可读介质上的代表指令实现,其表示处理器内的各种逻辑,当被机器读取时使机器构造逻辑以执行本文所描述的技术。称作“IP核”的这样的表示可以存储在有形、机器可读介质上并且供应给各种客户或制造机构以加载到实际上制作逻辑或处理器的构造机器中。
实施例可以因此包括一种方法,其包括通过连续地交换第一指针以指向多个缓冲器来连续地将数据加载到第一指针指向的多个缓冲器,以及通过连续地交换第二指针以指向多个缓冲器来连续地将第二指针指向多个缓冲器从而连续地处理加载在多个缓冲器中的数据。
实施例还可以包括一种系统,其包括多个缓冲器、将数据加载到加载指针所指向的每个缓冲器中的数据源、处理在处理指针所指向的每个缓冲器中的数据的处理器;以及包括指令集的计算机可读介质,所述指令集如果被处理器运行,使计算机交换加载指针以指向多个缓冲器来加载数据,并且交换处理指针以指向多个缓冲器来处理数据。
实施例还可以包括一种计算机可读介质,其包括指令集,所述指令集如果被处理器运行,使计算机通过连续地交换第一指针以指向多个缓冲器来连续地将数据加载到第一指针指向的多个缓冲器,并且通过连续地交换第二指针以指向多个缓冲器来连续地将第二指针指向多个缓冲器从而连续地处理加载在多个缓冲器中的数据。
实施例可以因此包括一种方法,其包括最初将加载指针指向第一缓冲器,最初将交换指针指向第二缓冲器,最初将处理指针指向第三缓冲器,将数据加载在由加载指针所指向的缓冲器中,交换加载指针与交换指针,并且然后交换处理指针与交换指针,以及将数据加载在由加载指针所指向的缓冲器中并且处理由处理指针所指向的缓冲器中的数据。
实施例适用于与所有类型的半导体集成电路(“IC”)芯片一起使用。这些IC芯片的示例包括但不限于处理器、控制器、芯片组组件、可编程逻辑阵列(PLA)、存储器芯片、网络芯片等。此外,在一些附图中,用线来表示信号导线。一些可能是不同的以指示更多组成信号路径,具有数字标记以指示许多组成信号路径,和/或具有在一个或多个端处的箭头以指示主要信息流动方向。然而,这不应当以限制性的方式来解释。而是,这样添加的细节可以与一个或多个示例性实施例结合使用以促进电路的较容易的理解。任何表示的信号线,无论是否具有附加信息,都可以实际上包括可以在多个方向上行进的一个或多个信号并且可以以任何适合类型的信号方案来实现,例如,以差分对实现的数字或模拟线、光纤线和/或单端线。
可能已经给出示例性尺寸/模型/数值/范围,不过本发明的实施例不限于此。随着制造技术(例如光刻)日趋成熟,预计可以制造更小尺寸的设备。此外,为了图示和论述的简化,并且以便不掩盖本发明的实施例的某些方面,可以或者可以不在附图内示出到IC芯片和其它组件的众所周知的电力/接地连接。另外,可以以框图的形式示出布置,以便避免使本发明的实施例晦涩难懂,并且还鉴于关于这样的框图布置的实现的详情高度依赖于实施例在其内实现的平台这一事实,即这样的详情应当良好地在本领域技术人员的眼界范围内。在陈述特定细节(例如电路)以便描述本发明的示例性实施例的情况下,对本领域技术人员应当显而易见的是本发明的实施例可以在没有这些特定细节或具有这些特定细节的变型的情况下实践。描述因此被视为是说明性而非限制性的。
一些实施例可以例如通过使用机器或有形计算机可读介质或制品来实现,所述机器或有形计算机可读介质或制品可以存储指令或指令集,其如果由机器运行,可以使机器执行依照实施例的方法和/或操作。这样的机器可以包括,例如,任何适合的处理平台、计算平台、计算设备、处理设备、计算系统、处理系统、计算机、处理器等等,并且可以使用硬件和/或软件的任何适合的组合实现。机器可读介质或制品可以包括,例如,任何适合类型的存储器单元、存储器设备、存储器制品、存储器介质、储存设备、储存制品、储存介质和/或储存单元(例如存储器)、可拆卸或不可拆卸介质、可擦除或不可擦除介质、可写或可重写介质、数字或模拟介质、硬盘、软盘、压缩盘只读存储器(CD-ROM)、可记录压缩盘(CD-R)、可重写压缩盘(CD-RW)、光盘、磁介质、磁光介质、可拆卸存储器卡或盘、各种类型的数字多功能盘(DVD)、磁带、盒式磁带等等。指令可以包括使用任何适合的高级、低级、面向对象、形象化、编译和/或翻译编程语言实现的任何适合类型的代码,诸如源代码、编译代码、翻译代码、可执行代码、静态代码、动态代码、加密代码等。
除非另行特别声明,否则可以领会,诸如“处理”、“计算”、“运算”、“确定”等等之类的术语是指计算机或计算系统或类似的电子计算设备的动作和/或过程,所述计算机或计算系统或类似的电子计算设备操控被表示为计算系统的寄存器和/或存储器内的(例如电子的)物理量的数据和/或将其变换成被类似地表示为计算系统的存储器、寄存器或其它这样的信息储存、传输或显示设备内的物理量的其它数据。实施例在该上下文中不受限。
术语“耦合”可以在本文中被用于指在所讨论的组件之间的任何类型的关系,直接的或间接的,并且可以适用于电气、机械、流体、光学、电磁、机电或其它连接。此外,术语“第一”、“第二”等可以在本文中被仅仅用于便于讨论,并且不承载特定的时间或时序的意义,除非另行指示。
本领域技术人员将从以上描述中领会到,本发明的实施例的宽泛技术可以以各种形式实现。因此,虽然已经结合其特定示例描述了本发明的实施例,但是本发明的实施例的真实范围不应当受限于此,因为当研究附图、说明书和随附的权利要求时,其它修改对本领域技术人员而言将变得显而易见。

Claims (33)

1.一种用于处理数据的系统,包括:
多个缓冲器;
数据源,用以将数据加载到加载指针所指向的每个缓冲器中;
处理器,用以处理在处理指针所指向的每个缓冲器中的数据;以及
包括指令集的计算机可读介质,所述指令如果被处理器运行,使计算机:
交换加载指针以指向多个缓冲器来加载数据,并且
交换处理指针以指向多个缓冲器来处理数据,其中数据在不被复制到单独的存储器的情况下被处理。
2.权利要求1的系统,其中所述数据源是摄像机。
3.权利要求1的系统,其中所述数据源是流视频源。
4.权利要求1的系统,其中所述数据源是视频处理线程的输出。
5.权利要求1的系统,其中所述处理器是图形处理器。
6.权利要求1的系统,处理器用以处理对应于多个处理线程的多个指针所指向的每个缓冲器中的数据。
7.一种用于处理数据的方法,包括:
通过连续地交换第一指针以指向多个缓冲器来连续地将数据加载到第一指针所指向的多个缓冲器中;以及
通过连续地交换第二指针以指向多个缓冲器来连续地将第二指针指向多个缓冲器从而连续地处理被加载在多个缓冲器中的数据,其中数据在不被复制到单独的存储器的情况下被处理。
8.权利要求7的方法,还包括当交换第一指针和第二指针时获得信号量锁以控制对交换指针的访问。
9.权利要求7的方法,还包括提供数据就绪信号以指示多个缓冲器之一已经被加载。
10.权利要求7的方法,其中被连续地加载到多个缓冲器中的数据是帧数据。
11.权利要求7的方法,其中被连续地加载到多个缓冲器中的数据是图像数据。
12.权利要求7的方法,其中连续地处理被加载到多个缓冲器中的数据包括执行被加载在多个缓冲器中的数据的视频处理算法。
13.权利要求7的方法,其中通过连续地交换多个指针以指向多个缓冲器来连续地分别将对应于多个处理线程的多个指针指向多个缓冲器,从而多个处理线程连续地处理被加载在多个缓冲器中的数据。
14.一种用于处理数据的装置,包括:
用于通过连续地交换第一指针以指向多个缓冲器来连续地将数据加载到第一指针所指向的多个缓冲器中的构件;以及
用于通过连续地交换第二指针以指向多个缓冲器来连续地将第二指针指向多个缓冲器从而连续地处理被加载在多个缓冲器中的数据的构件,其中数据在不被复制到单独的存储器的情况下被处理。
15.权利要求14的装置,还包括用于当交换第一指针和第二指针时获得信号量锁以控制对交换指针的访问的构件。
16.权利要求14的装置,还包括用于提供数据就绪信号以指示多个缓冲器之一已经被加载的构件。
17.权利要求14的装置,其中连续地被加载到多个缓冲器中的数据是帧数据。
18.权利要求14的装置,其中连续地被加载到多个缓冲器中的数据是图像数据。
19.权利要求14的装置,其中用于连续地处理被加载到多个缓冲器中的数据的构件包括用于执行被加载在多个缓冲器中的数据的视频处理算法的构件。
20.权利要求14的装置,其中通过连续地交换多个指针以指向多个缓冲器来连续地分别将对应于多个处理线程的多个指针指向多个缓冲器,从而多个处理线程连续地处理被加载在多个缓冲器中的数据。
21.一种用于处理数据的方法,包括:
最初将加载指针指向第一缓冲器;
最初将交换指针指向第二缓冲器;
最初将处理指针指向第三缓冲器;
将数据加载在加载指针所指向的缓冲器中;
将加载指针与交换指针交换并且然后将处理指针与交换指针交换;以及
将数据加载在加载指针所指向的缓冲器中并且处理被处理指针所指向的缓冲器中的数据,其中数据在不被复制到单独的存储器的情况下被处理。
22.权利要求21的方法,还包括当交换加载指针和处理指针时获得信号量锁以控制对交换指针的访问。
23.权利要求21的方法,还包括提供数据就绪信号以指示缓冲器已经被加载。
24.权利要求21的方法,其中被加载到缓冲器中的数据是帧数据。
25.权利要求21的方法,其中被加载到缓冲器中的数据是图像数据。
26.权利要求21的方法,其中处理被加载在缓冲器中的数据包括执行被加载在缓冲器中的数据的视频处理算法。
27.一种用于处理数据的装置,包括:
用于最初将加载指针指向第一缓冲器的构件;
用于最初将交换指针指向第二缓冲器的构件;
用于最初将处理指针指向第三缓冲器的构件;
用于将数据加载在加载指针所指向的缓冲器中的构件;
用于将加载指针与交换指针交换并且然后将处理指针与交换指针交换的构件;以及
用于将数据加载在加载指针所指向的缓冲器中并且处理被处理指针所指向的缓冲器中的数据的构件,其中数据在不被复制到单独的存储器的情况下被处理。
28.权利要求27的装置,还包括用于当交换加载指针和处理指针时获得信号量锁以控制对交换指针的访问的构件。
29.权利要求27的装置,还包括用于提供数据就绪信号以指示缓冲器已经被加载的构件。
30.权利要求27的装置,其中被加载到缓冲器中的数据是帧数据。
31.权利要求27的装置,其中被加载到缓冲器中的数据是图像数据。
32.权利要求27的装置,其中用于处理被加载在缓冲器中的数据的构件包括用于执行被加载在缓冲器中的数据的视频处理算法的构件。
33.一种机器可读介质,其包括多个指令,所述多个指令响应于在计算设备上执行而使计算设备执行根据权利要求7至13和21至26中任一项所述的方法。
CN201280066034.XA 2012-01-06 2012-12-27 在不将数据复制到单独的储存的情况下交换指针来处理被数据源存储在缓冲器中的数据 Expired - Fee Related CN104025037B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
MYPI2012000072 2012-01-06
MYPI2012000072 2012-01-06
PCT/US2012/071750 WO2013103573A1 (en) 2012-01-06 2012-12-27 Swapping pointers to process data stored in buffers by a data source without copying the data to separate storage

Publications (2)

Publication Number Publication Date
CN104025037A CN104025037A (zh) 2014-09-03
CN104025037B true CN104025037B (zh) 2018-07-03

Family

ID=48745378

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201280066034.XA Expired - Fee Related CN104025037B (zh) 2012-01-06 2012-12-27 在不将数据复制到单独的储存的情况下交换指针来处理被数据源存储在缓冲器中的数据

Country Status (5)

Country Link
US (1) US20150006839A1 (zh)
EP (1) EP2801023A4 (zh)
JP (1) JP5968463B2 (zh)
CN (1) CN104025037B (zh)
WO (1) WO2013103573A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170154403A1 (en) * 2015-11-30 2017-06-01 Intel Corporation Triple buffered constant buffers for efficient processing of graphics data at computing devices
FR3131033A1 (fr) * 2021-12-20 2023-06-23 Vitesco Technologies Procédé et calculateur de gestion d’échanges de données entre une pluralité de tâches

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6809735B1 (en) * 2002-01-08 2004-10-26 Apple Computer, Inc. Virtualization of graphics resources
CN1791856A (zh) * 2003-05-21 2006-06-21 模拟装置公司 用于指令对准的方法和设备
CN101310241A (zh) * 2005-09-22 2008-11-19 摩托罗拉公司 用于在多处理器系统中共享存储器的方法和装置

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5179665A (en) * 1987-06-24 1993-01-12 Westinghouse Electric Corp. Microprocessor information exchange with updating of messages by asynchronous processors using assigned and/or available buffers in dual port memory
US5696939A (en) * 1995-09-29 1997-12-09 Hewlett-Packard Co. Apparatus and method using a semaphore buffer for semaphore instructions
US6243770B1 (en) * 1998-07-21 2001-06-05 Micron Technology, Inc. Method for determining status of multiple interlocking FIFO buffer structures based on the position of at least one pointer of each of the multiple FIFO buffers
JP3656438B2 (ja) * 1998-11-02 2005-06-08 松下電器産業株式会社 高速画像入力変換装置
JP2001282650A (ja) * 2000-03-29 2001-10-12 Mitsubishi Electric Corp データバッファリング装置およびこのデータバッファリング装置を用いた分散制御システム
US6725457B1 (en) * 2000-05-17 2004-04-20 Nvidia Corporation Semaphore enhancement to improve system performance
US20030056194A1 (en) * 2001-07-16 2003-03-20 Lino Iglesias Enhanced software components
JP2004272373A (ja) * 2003-03-05 2004-09-30 Mitsubishi Electric Corp バッファリング装置
JP4749002B2 (ja) * 2005-02-25 2011-08-17 ルネサスエレクトロニクス株式会社 データ転送装置、画像処理装置及びデータ転送制御方法
US7958280B2 (en) * 2006-10-27 2011-06-07 Stec, Inc. Parallel data transfer in solid-state storage
US7720802B2 (en) * 2007-01-03 2010-05-18 International Business Machines Corporation Reclaiming resident buffers when a reclaim threshold has been exceeded by swapping the oldest in use buffer and a new buffer, and referencing the new buffer via an updated set of read and write pointers
US8522242B2 (en) * 2007-12-31 2013-08-27 Intel Corporation Conditional batch buffer execution
US8321869B1 (en) * 2008-08-01 2012-11-27 Marvell International Ltd. Synchronization using agent-based semaphores
US8291136B2 (en) * 2009-12-02 2012-10-16 International Business Machines Corporation Ring buffer
US8327047B2 (en) * 2010-03-18 2012-12-04 Marvell World Trade Ltd. Buffer manager and methods for managing memory
US20130069981A1 (en) * 2011-09-15 2013-03-21 Research In Motion Limited System and Methods for Managing Composition of Surfaces

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6809735B1 (en) * 2002-01-08 2004-10-26 Apple Computer, Inc. Virtualization of graphics resources
CN1791856A (zh) * 2003-05-21 2006-06-21 模拟装置公司 用于指令对准的方法和设备
CN101310241A (zh) * 2005-09-22 2008-11-19 摩托罗拉公司 用于在多处理器系统中共享存储器的方法和装置

Also Published As

Publication number Publication date
CN104025037A (zh) 2014-09-03
EP2801023A1 (en) 2014-11-12
JP5968463B2 (ja) 2016-08-10
JP2015505409A (ja) 2015-02-19
WO2013103573A1 (en) 2013-07-11
US20150006839A1 (en) 2015-01-01
EP2801023A4 (en) 2017-06-21

Similar Documents

Publication Publication Date Title
CN104781845B (zh) 处理视频内容
CN104471540B (zh) 通过统一存储器架构的存储器共享
CN104782136B (zh) 在云中处理视频数据
CN103959235B (zh) 在操作系统初始化过程中显示多媒体数据的技术
CN104952033B (zh) 分布式图形处理器分级中的系统一致性
CN104951358B (zh) 基于优先级的上下文抢占
CN103797805B (zh) 使用变更区域的媒体编码
CN107733532A (zh) 信息交互方法、装置及设备
CN104025031B (zh) 减少应用中对共享存储器单元执行的顺序操作的数量
CN104115210B (zh) 显示控制器的电力管理
CN103999032A (zh) 显示元素中所包括的感兴趣的区域的兴趣度分数
CN104067318B (zh) 使用三维光栅化的时间连续碰撞检测
JP7431977B2 (ja) 対話モデルの訓練方法、装置、コンピュータ機器及びプログラム
CN104782130B (zh) 从丢失的空间可扩展层恢复运动向量
CN105321142B (zh) 经由计算流水线进行的采样、错误管理和/或上下文切换
CN107085507A (zh) 数据收发方法及装置
CN104050040A (zh) 媒体重放工作负荷调度器
CN103533286A (zh) 用于带静态区域排除的时间帧内插的方法和系统
WO2020151685A1 (zh) 编码方法、装置、设备及存储介质
CN107079192A (zh) 使用压缩视频流的动态屏幕上显示
CN104049967A (zh) 暴露媒体处理特征
CN104125480B (zh) 改进的代码转换管理技术
CN103997687A (zh) 用于向视频增加交互特征的技术
CN104035540A (zh) 在图形渲染期间降低功耗
CN104054049B (zh) 用于复制源数据从而实现对源数据的并行处理的方法和系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20180703

Termination date: 20211227

CF01 Termination of patent right due to non-payment of annual fee