CN103218329B - 用于数字信号处理的方法、系统和装置 - Google Patents
用于数字信号处理的方法、系统和装置 Download PDFInfo
- Publication number
- CN103218329B CN103218329B CN201210418444.8A CN201210418444A CN103218329B CN 103218329 B CN103218329 B CN 103218329B CN 201210418444 A CN201210418444 A CN 201210418444A CN 103218329 B CN103218329 B CN 103218329B
- Authority
- CN
- China
- Prior art keywords
- data
- thread
- memory devices
- queue
- event
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 66
- 238000012545 processing Methods 0.000 title claims abstract description 25
- 230000010365 information processing Effects 0.000 claims description 39
- 230000005540 biological transmission Effects 0.000 claims description 26
- 230000004044 response Effects 0.000 claims description 16
- 238000001514 detection method Methods 0.000 claims 3
- 230000000977 initiatory effect Effects 0.000 claims 1
- 230000002093 peripheral effect Effects 0.000 abstract description 102
- 238000012546 transfer Methods 0.000 abstract description 5
- 238000003860 storage Methods 0.000 description 33
- 230000008569 process Effects 0.000 description 28
- 230000011664 signaling Effects 0.000 description 12
- 241001269238 Data Species 0.000 description 11
- 238000013500 data storage Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 238000004590 computer program Methods 0.000 description 4
- 230000004913 activation Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 238000000151 deposition Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000010304 firing Methods 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000004899 motility Effects 0.000 description 1
- 238000011112 process operation Methods 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 230000007480 spreading Effects 0.000 description 1
- 238000003892 spreading Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
- G06F3/0607—Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1081—Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/382—Information transfer, e.g. on bus using universal interface adapter
- G06F13/385—Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/3009—Thread control instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/25—Using a specific main memory architecture
- G06F2212/251—Local memory within processor subsystem
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Human Computer Interaction (AREA)
- Advance Control (AREA)
- Bus Control (AREA)
- Memory System (AREA)
Abstract
描述了一种用于在数字信号处理系统传输数据的技术。在一个示例中,所述数字信号处理系统包括若干的硬件外围设备,每一个都连接到存储器访问控制器并且每一个都被配置为从存储器设备读取数据,执行一个或多个对所述数据的操作,并且写入数据到所述存储器设备。为避免将硬件外围设备硬接线在一起并提供可配置的数字信号处理系统,多线程处理器控制所述硬件外围设备和所述存储器之间的数据传输,并且所述线程被配置为检测事件的发生并对此做出响应,控制所述存储器访问控制器来使所选的硬件外围设备通过其存储器访问通道从所述存储器设备读取数据或向所述存储器设备写入数据。
Description
技术领域
本发明通常涉及数据处理,更具体地,涉及用于数字信号处理的方法、系统和装置。
背景技术
数字信号处理被广泛地应用于各种应用。这些应用很多是实时的,数据处理存在时间限制是因为时间限制对终端用户是有意义的和有用的。这种应用的示例是数字广播流,例如数字电视和数字广播。数字信号处理系统需要能足够快地处理和解码实时流以能够在接收到实时流时(不包括缓存)尽快输出数据。
除了使用多个通用数字信号处理器,数字信号处理系统经常使用一个或多个专用硬件外围设备。硬件外围设备是处理模块,被设计用来以快速和有效的方式执行特定的信号处理任务(例如,特定类型的错误纠正)。数字信号处理系统能以定义的顺序地直接连接(例如,硬接线)外围设备在一起以符合特定类型实时数据的需要。
但是,不同类型的实时数据的要求差别是很大的。例如,世界各地使用的各种不同的数字电视和广播标准往往有不同结构的实时数据,例如,使用不同的类型或不同的用于编码、交织、均衡等的参数。因此,如果使用专用的互联的硬件外围设备,则需要为每一种实时数据的类型构造不同的数字信号处理系统。
以下描述的实施例不仅限于解决已知的数字信号处理系统中任何或所有缺点的实现。
发明内容
提供本部分以简化的方式介绍一部分概念,所述概念将在下面进一步地详细描述。本部分并不意图确定所述权利要求主题的关键特征或基本特征,也并不意图作为辅助来确定所述权利要求主题的范围。
本文描述了一种用于在数字信号处理系统中传输数据的技术。在一个示例中,所述数字信号处理系统包括若干硬件外围设备,每一个所述硬件外围设备连接到存储器访问控制器并且每一个所述硬件外围设备都被配置为从存储器设备读取数据,执行对数据的一个或多个操作,并且写入数据到所述存储器设备。为避免将所述硬件外围设备硬接线在一起,并且为了提供可配置的数字信号处理系统,多线程处理器控制在所述硬件外围设备和所述存储器之间的所述数据传输。每一个处理线程被分配了存储器访问通道并且这些线程被配置为检测事件的发生,响应于所述事件的发生,控制所述存储器访问控制器使所选的硬件外围设备通过所述线程的存储器访问通道从所述存储器设备读取数据或写入数据到所述存储器设备。
根据一个方面,提出了一种数字信号处理系统,包括:存储器设备、存储器访问控制器、多个专用硬件模块和处理器,其中所述存储器访问控制器提供多个用于访问所述存储器设备的通道,所述多个专用硬件模块每一个都连接到所述存储器访问控制器并且每一个都被配置为通过所述通道中的一个从所述存储器设备读取数据,执行一个或多个对所述数据的操作,并通过所述通道中的一个写入数据到所述存储器设备;处理器耦合到所述存储器访问控制器并且被配置为执行多个线程,每一个线程被安排为控制所述通道中的一个,其中至少一个所述线程被配置为检测事件的发生,并响应于检测事件的发生,利用与线程相关联的通道控制从所述存储器设备到所选的专用硬件模块的数据的供应。
根据另一方面,提出了一种在数字信号处理系统中传输数据的方法,包括:执行处理器上的多个线程,其中每一个线程独立地执行序列的操作,包括:等待,直到预定义的事件被检测到;响应所述预定义事件,通过与该线程相关联的存储器访问通道,控制存储器访问控制器使得专用硬件模块能够从存储器设备读取数据和写入数据到存储器设备。
本文描述的方法可以由在有形存储介质中的机器可读形式的软件来执行,所述软件例如是计算机程序的形式,所述计算机程序包括计算机程序代码模块,其当所述程序在计算机上执行并且所述计算机程序可以体现在计算机可读介质中,适用于执行本文描述的任何方法的所有步骤。有形(或非有形)存储介质的示例包括磁盘、闪存盘、存储卡等并且不包括传播信号。所述软件可以适用于在并行处理器或串行处理器中执行使得所述方法的步骤可以以任何适当的顺序执行,或同时地执行。
这承认固件和软件是有价值的、可单独交易的商品。其意图是包含软件,所述软件控制“非智能”或标准的硬件或在其上运行,以执行所需的功能。其还意图包括“描述”或定义硬件的所述配置的软件,例如HDL(硬件描述语言)软件,所述软件用于设计硅芯片,或用于配置通用可编程芯片来执行所需的功能。
上述的特征可以进行适当的组合,这对于本领域的技术人员来说显而易见的,并且上述的特征可以与示例中的任何方面进行组合。
附图说明
将参考下列附图以示例方式描述实施例,其中:
图1示出了可配置的数字信号处理系统;
图2示出了所述可配置数字信号处理系统对示例性实时信号执行的序列操作;
图3示出了用于所述可配置数字信号处理系统的控制信令结构;
图4示出了示例性事件标志引擎结构;
图5示出了由在控制信令结构中对事件进行动作的线程执行的方法的流程图;
图6示出了示例性的基于线程的配置和用于硬件外围设备的数据传输;和
图7示出了用于控制图6中所述硬件外围设备的示例性队列集合、标志和指令。
贯穿于图中使用的共同的标号指示类似的特征。
具体实施方式
仅用示例方法描述下面的实施例。这些示例表示了本申请目前已知的、用于将所述实施例付诸于实践的最佳方法,虽然这些方法可能不是实现最佳方法的唯一方法。描述阐述了示例的功能以及用于构造和操作示例的步骤序列。但是,可以由不同的示例完成相同的或等同的功能和序列。
下面描述的是可配置的数字信号处理系统,所述数字信号处理系统使用了通用数字信号处理器和专用硬件外围设备二者,这就避免了将这些元件硬接线为特定的结构,因而避免了限制系统的可配置性。这可以用如下方式实现:利用快速的数据传输系统,以快速和有效的方式使硬件外围设备能被配置并被用来处理数据。所述数据传输系统利用了多线程处理器的组合有效的信令系统,其中所述多线程处理器的组合用来控制存储器传输到硬件外围设备或控制从硬件外围设备传输到存储器,所述信令系统使系统元件通信事件的发生。这使数字信号处理系统能被有效地配置以适应不同的标准,同时保持处理实时数据所需的计算性能。
首先参考图1,图1示出了示例性可配置数字信号处理系统的结构。系统包括用于存储数据的存储器设备102。在图1的示例中,存储器设备102能被用来存储正在被处理的数据和用于操作数字信号处理系统的配置数据二者。在其他的示例中,这两类数据能在不同的存储器设备之间被分开。存储器设备102可以是任何适当形式的随机访问存储器(RAM)。
连接到存储器设备102的有一个或多个数字信号处理器(DSP)104。DSP 104是可编程的处理器,比如用来执行对数据的信号处理计算,例如快速傅里叶变换和均衡。当不考虑通用存储器时,DSP 104与下面描述的硬件外围设备相比是可配置的。DSP 104执行程序代码/指令来从存储器设备102读取数据,对数据执行信号处理操作并且将数据写回到存储器设备102。
连接到存储器设备102的还有存储器访问控制器106,所述存储器访问控制器106用来为多个硬件外围设备108提供对存储器设备102的访问。在一些示例中,存储器访问设备106可以是直接存储器访问(DMA)控制器的形式。存储器访问控制器106提供了多个存储器访问通道(例如,DMA通道),所述通道能被硬件外围设备108使用,使其能够从存储器102中读取数据或写入数据到存储器102。注意除了在硬件外围设备和存储器设备之间传输数据,在一些示例中存储器访问控制器也能被配置为从一个硬件外围设备直接向另一硬件外围设备传输数据。
如上面所指出的,硬件外围设备108是专门的、专用的硬件模块,被配置为执行特定的信号处理任务。例如,一个硬件外围设备可能是专门的维特比解码块,而另一硬件外围设备可能是专门的去交织块。硬件外围设备也可被称为固定功能加速器。每一个硬件外围设备都独立于彼此而执行。通过向硬件外围设备提供专用于特定任务的操作参数,可以配置硬件外围设备,但是它们不能被设置为改变其任务(例如,维特比模块不能被重新配置为去交织块)。因此,相对于DSP 104,硬件外围设备更适合处理特定的任务。但是,硬件外围设备被安排成以非常快速和有效的方式执行其专门的任务。
连接到存储器设备102的还有通用控制处理器110,所述通用控制处理器110能被用来初始化、配置和控制数字信号处理系统的操作,将在下面详细描述。
上面描述的数字信号处理系统在信号处理操作中提供了灵活性。例如,该系统能被安排以操作使得不同的DSP 104和硬件外围设备108以任意期望的配置或顺序处理数据。每一个硬件外围设备或DSP能够操作一个或多个数据块(此处也称为数据缓存),所述数据块由系统其它部分提供并存储在存储器设备中,并且产生和存储一个或多个系统其它元件使用的数据缓存。这使数字信号处理系统能被用于各种不同类型的信号,例如,不同的广播/电信标准的信号。
图2示出了图1中的系统如何被配置为处理特定类型的信号。在图2的示例中,纯粹是为便于说明,系统用于处理输入的数字电视信号。数字化的基带信号被数字信号处理系统接收,并且系统被配置为使用第一DSP执行快速傅里叶变换(FFT)来首先处理该数据,第一DSP用DSP(0)202表示。随后第二DSP对DSP(0)202输出的数据执行均衡和逆映射,第二DSP用DSP(2)204表示。接着硬件外围设备HW(1)206对数据执行去交织,然后将其传输到另一硬件外围设备HW(3)208,所述硬件外围设备HW(3)208执行维特比解码。下一硬件外围设备HW(0)210从维特比解码取得数据并执行里德-索罗门解码。解码的数据可以被额外的DSP、硬件外围设备或被其他所需的但图2中未示出的处理器进一步处理。
图2中的示例示出了图1中系统的不同模块如何被组合在一起来形成整个信号处理系统,所述信号处理系统适用于特定类型的信号。因为图2中的模块没有被硬连线到一起,而是使用图1中的存储器设备102来交换数据,所以同样的信号处理系统能被配置为以不同的方式操作不同类型的信号。
对于图1中的系统操作图2示出的类型序列,一旦硬件外围设备或数字信号处理已经完成处理,则对新生成的数据进行操作的下个硬件外围设备被配置和激活来执行它们的处理操作。这些硬件外围设备的任何配置和激活的延迟会降低系统的吞吐量,这对于实时信号的情况是不利的。因此这些延迟应该被最小化,这可以利用控制信令结构来实现,所述控制信令结构参考图3并在下面描述。
图3示出了用于可配置数字信号处理系统的控制信令结构,所述系统能使该系统的不同元件以快速和有效的方式传递消息和信令。这种结构还能使元件快速地对事件做出反应,使得硬件外围设备在需要没有显著的延迟时能被配置且被激活。
由多线程处理器302控制硬件外围设备108的配置和激活,所述多线程处理器302在一些示例中被称为DMA控制处理器(DCP)。多线程处理器被安排用于执行多个线程。尽管线程可以共享处理器资源并且是处理器302上运行的更多进程的所有部分,每一个线程也能够独立地执行指令或操作的序列。
多线程处理器302耦合到图1中的存储器访问控制器106,并且能够控制存储器访问控制器106的执行。在一些示例中,多线程处理器302是与存储器访问控制器106通信的单独的硬件元件,在可选示例中多线程处理器302是与存储器访问控制器106集成的。
在下面多线程处理器302中的线程用DCP(0)、DCP(1)、……、DCP(k)表示。每一个线程被安排来直接控制存储器访问控制器106提供的存储器访问通道(DMA通道)中的一个。换句话说,每一个线程都能通过与该线程相关联的存储器访问通道,控制从一个或多个硬件外围设备108和存储器设备102传输数据或者控制向其传输数据。
多线程处理器302被连接到事件标志引擎304,所述事件标志引擎304在下面将更详细地描述。事件标志引擎304被安排来当数字信号处理系统内发生特定的事件时通知多线程处理器302。线程能从事件标志引擎304读取信息并相应地对其做出反应。例如,线程可以执行“等待”指令,其使得线程操作的执行暂停直到事件(由数据标志引擎通知)发生。当事件发生时,这使得线程激活和执行等待指令之后的线程的指令/操作。
这可以用来快速地向硬件外围设备传输数据或从硬件外围设备传输数据。特定的线程能被安排来等待事件(例如前面的系统元件完成处理),并响应事件的发生,使用与该线程相关联的存储器访问通道,控制存储器访问控制器传输配置数据并且数据将被硬件外围设备处理。另一线程则被安排为等待该数据被硬件外围设备处理,随后使用与线程相关联的存储器访问通道,控制存储器访问控制器来将处理的数据传输回存储器设备。这个示例将参考图5至图7进行更详细的描述。
争用管理技术能通过给每一线程分配优先级来实现。例如,如上面提出的,每一个线程被分配了从0到k的序列标识符。在多于一个线程在同一时间执行冲突使得它们不能全部地执行其操作情况下,则给线程分配比如最低级的标识符。显然,在可选的示例中,可以应用不同的优先级系统,比如最高级的标识符。系统能被配置使得最重要的或系统关键的硬件外围设备被最高优先级的线程处理来确保它们在争用情况下得到服务。
通过独立执行线程管理每一个存储器访问通道,响应时间要显著地快于普通单线程处理器管理去往/来自硬件外围设备的数据的所有传输的响应时间。此外,线程能被安排以使等待指令放置在其控制软件中的点,这样减少了下个系统元件被激活之前的延迟。例如,尽可能多的操作可被放置在等待指令之前,使这些操作能在等待事件之前被线程执行,因而减少了事件发生后需要执行的操作的数量。换句话说,线程尽可能地执行预计算。
除了多线程处理器302,DSP 104和通用控制处理器110也接收来自事件标志引擎304的输入,使这些元件也能对事件做出响应。这在下面更详细的概述。
为了使数字信号处理系统的元件对事件做出响应,有效的信令系统被用来使系统的不同元件之间能够通信。信令系统基于一组队列306,其携带了系统部件之间的信号。在示例中,队列306能包括多个FIFO队列。每一个队列能够保持多个与信息相关的数据项,被从一个系统元件传递到另一个系统元件。例如,队列中的信息可以指示数据已准备好被特定的硬件外围设备或DSP处理。数据项可以是如下形式:比如指令地址或其他标识符、分支标签、存储器地址或任意其他类型的系统元件希望将其传递到另一元件的信息。
数据项能通过多线程处理器302、DSP 104或通用控制处理器110写入队列。另外,在任何队列头部的数据项能被多线程处理器302、DSP 104或通用控制处理器110读取,并且任何队列头部的数据项能被任何的这些系统元件移除。多线程处理器302、DSP 104和通用控制处理器110使用数据总线读取、写入和/或修改队列306。由总线仲裁器308管理对总线的访问,所述总线仲裁器308处理总线的争用。
每一个队列具有相关联的通知逻辑(图3未示出)。通知逻辑被安排为断言一标志(或任何其他适当的二进制指示符)以指示其相关联的队列何时包含至少一个项目。换句话说,标志指示其相关联的队列是空的还是非空的。
来自队列的通知逻辑的标志被提供给事件标志引擎304。事件标志引擎304也能接收其它标志(例如指示硬件外围设备或端口的状态)形式的输入。一般来说,事件标志引擎304作为矩阵或网格,其将对其中的信息进行响应的队列与处理元件相联系。在一些示例中,可以由通用控制处理器110设置在队列、线程和DSP之间的事件标志引擎304的连接性。
在图4中可以看到可配置逻辑的类型的示例,其中所述可配置逻辑能被应用于事件标志引擎304。在一些示例中,任意DCP线程都能够检查提供给事件标志引擎的任意标志的状态,如402所示。这使任意线程都被配置为等待任意标志被断言(指示在特定队列中存在数据项)。此外或可选地,布尔逻辑的层级可被应用于标志以使得各种标志能够被组合,使得仅在定义情况的集合时,事件被通知到系统元件。
例如,图4示出了逻辑门404的组合,所述组合被用来向DSP(0)提供事件通知。在其他示例中,类似的门的组合可被用来向任何其他处理元件提供事件通知,例如在多线程处理器302、通用控制处理器110或其他DSP 104上的DCP线程。在图4的示例中,通过将“与门”层连接在“或门”层之后构造形成门404,其中在门之间有可配置的连接。
在这个示例中,第一与门406从表示的与队列相关联的标志Q1和表示的与队列相关联的标志Q3接收输入。因此,如果这些标志被断言,即,指示这两个队列都具有项目,则与门406输出为“真”。类似地,第二与门408从Q7和F3接收输入,其中Q7表示与队列相关联的标志,F3表示不与队列相关联的另一标志,例如指示硬件外围设备的状态。再次说明,如果这两个标志被断言,则与门408输出为“真”。
来自两个与门406、408的输出被提供给或门410。或门410还直接从Q12表示的另一队列标志接收第三输入,而没有通过与门传递。因此,当或门410的三个输入中一个或多个被断言时,或门410的输出被断言。来自或门的输出被提供给DSP(0)(在本示例中),用于指示一事件以及触发一动作。
在一些示例中,从或门接收输出的系统元件想知道或门的哪个输入或哪些输入使输出被断言。这是因为元件可以依赖于什么使得或门的输出被断言而执行不同的操作。为实现这一点,可以包括额外的逻辑(图4未示出)来将其指示给处理元件。例如,这个逻辑可以采用多路转换器的形式。
此外,因为可以同时断言一个以上的或门的输入,优先级系统可被应用于或门输入来决定系统元件对哪一个事件进行响应。例如,在图4中,或门410有三个输入,在三个输入中,顶部输入412(如图所示)被分配了最高优先级,底部输入414为最低优先级,和中部输入416有中间的优先级。因此,当或门输入被断言时,处理元件能使用额外的逻辑电路来确定哪一个或门输入被断言并对最高优先级的输入进行响应。因为标志、与门、和或门输入之间的连接是可配置的,所以它们可被配置使得最重要的标志被连接到最高优先级的或门输入。
上面描述的事件标志引擎结构实现了以灵活的方式向不同的处理元件通知系统中发生的事件(例如在队列中等待的信息)。逻辑门的使用是非常快速的,从而确保了通知具有低延迟,并且或门输入的优先级使处理元件能对最紧急的事件进行响应。如上面提出的,根据系统的需求,可以为任意系统元件配置根据上文描述的门的不同组合和标志。
现在参考图5至7,示出了示例性过程,其示出了其中线程和信令结构如何一起工作以配置和使用硬件外围设备以对数据缓存执行一些处理。首先,图5示出了在多线程处理器302上执行的线程执行的操作的高等级流程图。在步骤502,线程等待预定义的事件发生。如上面提出的,这是由事件标志引擎304定义的,所述事件标志引擎304在定义的条件下断言多线程处理器302的输出。这可以采用等待与队列有关的特定标志被断言的形式,或者采用等待逻辑门定义的标志的组合的形式。
在步骤504确定是否事件已经被检测到。如果没有,则线程继续等待。如果事件被检测到,则在步骤506,线程从与引发事件的通知的标志(多个标志)相关联的队列(或多个队列)的头部读取数据项。在步骤508,读取的数据项随后被从队列(或多个队列)中移除。在步骤510中,从队列中读取的数据项随后被线程使用来执行与事件相关联的指令。例如,数据项确定线程执行什么类型的操作。这些操作可包括,例如设置硬件外围设备(步骤512)、从存储器设备传输数据到硬件外围设备以进行处理(步骤514)和从硬件外围设备传输处理过的数据到存储器设备(步骤516)。如上面提出的,线程使用其相关联的存储器访问通道来在存储器设备和硬件外围设备之间传输数据。
现参考图6,图6示出了由线程在执行例如图5所述的操作时传输的数据类型的示例。在这个纯粹说明性的示例中,硬件外围设备HW(1)206一直被配置并被用来处理来自存储器设备102的数据缓存,并且已处理的数据被写回到存储器设备102。DCP(1)602表示的示例性线程被用来控制去往HW(1)206的数据的传输,DCP(2)604表示的示例性线程被用来控制从HW(1)206外发的数据的传输。在这个示例中,线程DCP(1)602被当作“主”线程,其负责启动和控制操作,而DCP(2)604被当作“从”线程,其被DCP(1)602控制。这可以通过如下方式实现:DCP(1)602通过一个或多个队列306将信号发送给DCP(2)604,使得DCP(2)执行所需的指令,如下面的图7中更详细的描述。硬件外围设备HW(1)206包括配置寄存器606和数据存储608,其中所述配置寄存器606装有配置硬件外围设备的数据,所述数据存储608用于保持正在被处理的数据。注意在一些示例中,硬件外围设备数据存储608可以是内部的缓存,但是也可以是管道缓冲区的形式,所述管道缓冲区保持正在被处理的输入和传出的数据。使用管道缓冲区避免了硬件外围设备需要保持所有的待处理数据,并且也意味着可以并行执行输入和输出DMA操作。
三块数据被存储在存储器设备102并用在这个操作中。第一块数据是DMA配置数据610。DMA配置数据610包括由线程载入存储器访问控制器106的数据,以便配置和启动去往或者来自硬件外围设备的数据传输。这是下面详细描述的概述。第二块数据是硬件外围设备寄存器配置数据612。这个数据块包括用于配置硬件外围设备来执行特定任务的数据,并且通过存储器访问控制器106对特定的DMA配置数据610的响应,这个数据块被载入硬件外围设备配置寄存器606。第三块数据是数据缓存614,所述数据缓存614包括将要被或者已经被硬件外围设备处理的数据。通过存储器访问控制器106对特定的DMA配置数据610的响应,该数据块被载入到硬件外围设备数据存储608或从硬件外围设备数据存储608中读取。
对使用图6中结构的示例性操作的操作如下。线程DCP(1)602对事件进行响应并使得HW1regDMA 616表示的DMA配置数据610的块从存储器设备102被加载到存储器访问控制器106。HW1regDMA 616配置数据包括四个数据项:(i)在存储器设备102中的存储器地址,保持硬件外围设备寄存器配置数据,在本示例中用HW1regConfigA 618表示;(ii)在硬件外围设备中的寄存器地址,指示何处的硬件外围设备寄存器配置数据应被加载,在本示例中用HW1regStart表示;(iii)模式指示符,指示传输的方向,即存储器设备向硬件外围设备的方向或相反方向,在本示例中用mem2perip表示;和(iv)长度值,指示正在被传输的数据的长度,在本示例中用HW1numRegs表示。
加载HW1regDMA 616到存储器访问控制器106使得,利用与线程DCP(1)602相关联的存储器访问通道,存储器访问控制器106开始从指定的存储器地址HW1regConfigA 618(其为硬件外围设备寄存器配置数据612的一部分)传输数据到硬件外围设备的寄存器606。HW1regConfigA 618包括多个数据项,所述数据项配置硬件外围设备的寄存器来执行所需任务。
一旦硬件外围设备HW(1)被以这种方式配置,则线程DCP(1)使得DMA配置数据610的第二块,其用HW1inDMA 620表示,被从存储器设备102加载到存储器访问控制器106。HW1inDMA 620配置数据又包括了四个数据项:(i)在存储器设备102中的存储器地址,用于保持数据缓存,在本示例中用HW1ipA 622表示;(ii)在硬件外围设备中的寄存器地址,指示何处的数据缓存应该被加载,在本示例中用HW1inReg表示;(iii)模式指示符,指示传输的方向,即存储器设备向硬件外围设备的方向或相反方向,在本示例中用mem2perip表示;和(iv)长度值,指示正在被传输的数据的长度,在本示例中用HW1jobLength表示。
加载HW1inDMA 620到存储器访问控制器106使得存储器访问控制器利用与线程DCP(1)602相关联的存储器访问通道,开始从指定的存储器地址HW1ipA 622(其为数据缓存614的一部分)传输数据到硬件外围设备数据存储608。注意线程DCP(1)602被用于传输配置数据和数据缓存二者到硬件外围设备。HW1ipA 622包括按照其配置由硬件外围设备操作的数据。
上面的操作涵盖了使用DCP(1)602输入数据到硬件外围设备206。在下面描述DCP(2)604控制从硬件外围设备外发的数据的传输。在一些示例中,用于传输从硬件外围设备外发的数据的存储器访问通道的启动和建立可在数据被输入硬件外围设备之前执行。DCP(1)602(主线程)使得DCP(2)604(从线程)能够控制DMA配置数据610的第三块(其用HW1outDMA 624表示)从存储器设备102被加载到存储器访问控制器106。HW1outDMA 624配置数据还包括四个数据项:(i)在存储器设备102中缓存数据的存储器地址,在本示例中用HW1opA 626表示;(ii)在硬件外围设备中的存储器地址,指示何处的数据缓存被加载,在本示例中用HW1outReg表示;(iii)模式指示符,指示传输的方向,即存储器设备向硬件外围设备的方向或相反方向,在本示例中用perip2mem表示;和(iv)长度值,指示正在被传输的数据的长度,在本示例中用HW1jobLength表示。
加载HW1outDMA 624到存储器访问控制器106使得存储器访问控制器利用与线程DCP(2)604相关联的存储器访问通道,开始从指定的硬件外围设备存储器地址HW1outReg622(其为数据存储608的一部分)传输数据到存储器设备102的数据缓存614。注意是使用线程DCP(2)604(不是DCP(1))来从硬件外围设备向外传输。HW1opA 626包括按照其配置由硬件外围设备处理的数据。
因此,图6示出了与线程相关联的存储器访问通道如何管理去往或来自硬件外围设备的数据的移动。因为通过对配置数据的预定义块进行直接存储器传输实现硬件外围设备的配置,所以可以非常快速地执行这种配置,从而最小化配置的延迟。注意虽然以上图6的描述概述了所执行操作的特定序列,但在一些示例中这种序列可以是不同的,例如可以对序列的一些方面进行流水线处理以便于更快速的操作。
现参考图7,图7示出了一组示例性队列状态和能被线程执行的指令以实现如图6示出的相同过程。在本示例中,列702示出了Q2表示的(仅用于说明目的)队列的内容。本示例中的过程在项目“HW1inHandler”被放置到Q2时开始。这可以由例如完成任务并产生数据以由HW(1)进一步处理的另一系统元件而引发。HW1inHandler放置在Q2使得与Q2相关联的标志被断言,如列704所示。标志被提供给事件标志引擎304,所述事件标志引擎304被配置为向线程DCP(1)通知事件发生。事件标志引擎304设置ORvec表示的寄存器的值来指示哪个队列引发导致事件的标志(例如,如上面描述的从或门的输入)。ORvec的状态在列706中示出,并且列706中示出了引发事件的队列的标识是2。
列708示出了由线程DCP(1)执行的示例性伪代码。DCP(1)被配置为当事件由事件标志引擎304通知时,执行标签为“Despatcher”的例程。Despatcher代码读取ORvec的值(例如2)并且存储为变量Qnum。然后Despatcher代码用标识Qnum(即Q2)读取队列的头部的数据项并存储为变量StartAddrM(这个变量有值HW1inHandler)。通过清除分别如列702和列704所示的项目和标志二者,在Q2头部的项目被移除。Despatcher代码则指示线程跳转到从队列头部读取的标签(即HW1inHandler)的代码部分。
HW1inHandler代码对配置文件进行控制,并将数据读入硬件外围设备中。但是,开始是通过准备另一线程来管理从硬件外围设备输出的数据使其在适当的时候准备好执行。换句话说,主线程DCP(1)触发从线程DCP(2)来准备向其他方向传输数据。这通过向示例性队列Q4写入数据项“HW1outHandler”完成,其状态在列710中示出。这使得用于列712中Q4的标志被断言。从线程DCP(2)一直执行列714中标签为“SlaveWait”的代码,该代码使得DCP(2)等待直到项目被放置到Q4中。DCP(2)检测用于Q4的标志、唤醒,并读取Q4头部的项目到变量StartAddrS。Q4中的项目被移除,从而清除队列和标志。在下面描述,DCP(2)随后跳转到从队列中读出的代码标签“HW1outHandler”。
与此同时,返回到列708中的DCP(1),DCP(1)用命令StartDMAjob(HW1regDMA)启动硬件外围设备HW(1)的配置。这使得配置块HW1regDMA 616被加载到存储器访问控制器106并且配置被传输到硬件外围设备,如上面参考图6的描述。线程DCP(1)等待这个操作结束,并用命令StartDMAjob(HW1inDMA)启动数据缓存从存储器设备102向硬件外围设备HW(1)传输。这使得配置块HW1inDMA 620被加载到存储器访问控制器106并且数据缓存被传输到硬件外围设备,如上面参考图6的描述。数据缓存随后被硬件外围设备处理。再次地,线程等待这个操作结束,并等待Q5通知从线程DCP(2)已经结束。
再次返回到列714中的线程DCP(2),HW1outHandler代码被线程DCP(2)执行,通过StartDMAjob(HW1outDMA)命令,DCP(2)启动处理后的数据(当准备好时)从硬件外围设备HW(1)传输到存储器设备。这使得配置块HW1outDMA 624被加载到存储器访问控制器106并且数据缓存被传输给存储器设备102,如上面参考图6的描述。线程DCP(2)等待这个操作结束,并通过将值“Finished”写入Q5通知DCP(1)。这由列716中Q5状态示出并且其相关联的标志在列718一直被断言。线程DCP(2)则通过分支返回到标签“SlaveWait”恢复到等待。
如上面提出的,主线程DCP(1)一直等待Q5标志被断言,并且对此响应清除了Q5和Q5的标志。线程DCP(1)通过将下一个起始地址(用nextStartAddr表示)的值写入到下一个正在被使用的队列(用nextQ表示)来通知下一个系统元件硬件外围设备操作已经完成。DCP(1)随后返回到Despatcher代码,并且当接下来Q2被写入时,重复此过程。
上面描述的操作示出了执行线程如何进行响应并使用队列中的信息来管理去往硬件外围设备和从硬件外围设备的数据的传送和配置。代码是紧凑的并可以迅速地执行,但又足够灵活来使数字信号处理系统被配置以用于不同类型的数据、硬件外围设备和处理需求。信令系统授予处理器资源共享的优先级,并且处理器处理事件的日常开销是非常低的,同时仍然可以使系统元件对最重要的事件作出反应。
本文中使用的词语“处理器”和“计算机”是指任何具有处理能力使得其可以执行指令的设备。本领域的专业人员将认识到这样的处理能力被结合到很多不同的设备中,因而词语“计算机”包括机顶盒、多媒体播放器、数字收音机、个人电脑、服务器、移动电话、个人数字助手和很多其他设备。
本领域的专业人员将认识到用来存储程序指令或数据的存储设备可以被跨网络地分布。例如,远程计算机可以存储描述为软件的示例性过程。本地的或终端的计算机可以访问远程计算机并下载部分或全部的软件来执行程序。可选地,本地计算机可以下载所需要的软件片段,或执行一些软件指令在本地终端中和执行一些在远程计算机中(或计算机网络中)。本领域的专业人员还将认识到通过利用本领域的专业人员所知的常规技术,全部或部分的软件指令可以由类似于专用电路、可编程逻辑阵列来执行。
在不失去所寻求的效果的情况下,本文给出的任何范围或设备值可以被扩展或者改变,这对本领域技术人员而言将是显而易见的。
需要明确的是上面描述好处和优点可能是与一个实施例或可能是与数个实施例相关的。实施例并不限于解决任何或所有上述的问题的那些实施例,或那些具有任何或所有的上述的好处和优点的实施例。
任何引用“一个”项是指一个或多个这些项。本文中使用的词语“包括”意味着包括块或元件确定的方法,但这些块或元件不包括排除列表并且方法或设备可以包含额外的块或元件。
本文描述的方法的步骤可以以任何适当的顺序执行,或在适当情况下同时地执行。可选地,在不脱离本文描述的主题的精神和范围的情况下,在任意方法中可以删除某些块。在不失去所寻求的效果的情况下,上面描述的任何示例的方面可以与描述的任何其他示例的方面相结合来形成其它示例。
需要明确的是上面对优选实施例的描述仅是通过示例的方式给出,并且本领域的技术人员可以做出各种修改。虽然上面描述的各种实施例有一定程度的特定性,或参考了一个或多个个别的实施例,但是本领域的技术人员可以在不脱离示例精神和范围的情况对公开的实施例做出众多变更。
Claims (22)
1.一种数字信号处理系统,包括:
存储器设备;
存储器访问控制器,提供用于访问所述存储器设备的多个通道;
多个专用硬件模块,每一个专用硬件模块都连接到所述存储器访问控制器并且每一个专用硬件模块都被配置为通过所述多个通道中的一个从所述存储器设备读取数据,执行对数据的一个或多个操作,以及通过所述多个通道中的一个向所述存储器设备写入数据;
处理器,耦合到所述存储器访问控制器并被配置为执行多个线程,每一个线程被安排为控制所述多个通道中的一个,其中所述多个线程中的至少一个被配置为检测事件的发生,并响应于检测到事件的发生,利用与该线程相关联的通道控制从所述存储器设备到所选的专用硬件模块的数据的供应;
多个队列和用于每一个队列的通知逻辑,其中所述多个队列被安排为保持所述处理器响应于操作的争用而写入的一个或多个项目,所述用于每一个队列的通知逻辑被安排为断言一标志以指示与所述通知逻辑相关联的队列何时包含至少一个项目;以及
可配置的事件标志引擎,被安排为利用逻辑门的序列组合来自多个队列的标志状态,其中所述逻辑门的序列定义了检测所述事件发生的条件,并且当所述事件发生时向所述至少一个线程提供输出。
2.根据权利要求1所述的数字信号处理系统,其中所述至少一个线程执行使得该线程停止执行其它指令的等待指令,直到所述事件被检测到。
3.根据权利要求1所述的数字信号处理系统,其中所述事件标识了由所述多个专用硬件模块中的一个或数字信号处理器执行的操作的完成。
4.根据权利要求1所述的数字信号处理系统,其中所述至少一个线程被安排为根据至少一个标志的断言检测所述事件的发生。
5.根据权利要求1所述的数字信号处理系统,其中所述逻辑门包括具有多个输入的至少一个或门,其中所述多个输入适用于接收与多个事件有关的标志。
6.根据权利要求5所述的数字信号处理系统,其中或门的每一个输入都被分配了优先级,并且所述至少一个线程被配置为确定哪个或门的输入被断言,并且执行与引发最高优先级断言的输入上的标志的事件有关的操作。
7.根据权利要求4至6中的任何一项所述的数字信号处理系统,其中所述至少一个线程被进一步配置为从与断言的标志相关联的队列读取项目,并且利用该项目来选择并配置所选的专用硬件模块。
8.根据权利要求1所述的数字信号处理系统,其中所述至少一个线程被进一步配置为至少响应于下列操作中的一个,将项目写入到多个队列中的一个:从所述存储器设备读取数据;执行对数据的操作;以及,将数据写入所述存储器设备。
9.根据权利要求1所述的数字信号处理系统,其中来自所述多个线程中的至少一个其它线程被配置为检测其它事件的发生,并且响应于检测到其它事件的发生,利用与该线程相关联的通道控制从所选的专用硬件模块到所述存储器设备的数据的供应。
10.根据权利要求1所述的数字信号处理系统,其中所述处理器被配置为向每一个线程顺序分配序列标识符,并且在多于一个线程争用对所述存储器设备的访问时,基于线程的标识符为线程给予优先级。
11.一种在数字信号处理系统中传输数据的方法,包括:
执行处理器上的多个线程,其中每一个线程独立地执行操作的序列,包括:
等待直到预定义事件被检测到为止;以及
响应所述预定义事件,控制存储器访问控制器以使得专用硬件模块能够通过与所述线程相关联的存储器访问通道从存储器设备读取数据或向存储器设备写入数据,
其中所述数字信号处理系统包括多个队列和用于每一个队列的通知逻辑,其中所述多个队列被安排为保持所述处理器响应于操作的争用而写入的一个或多个项目,所述用于每一个队列的通知逻辑被安排为断言一标志以指示与所述通知逻辑相关联的队列何时包含至少一个项目,并且其中所述方法还包括:
利用逻辑门的序列组合来自多个队列的标志状态,其中所述逻辑门的序列定义了检测所述事件发生的条件;以及
当所述事件发生时向所述至少一个线程提供输出。
12.根据权利要求11所述的方法,其中所述预定义事件指示其它专用硬件模块或数字信号处理器已完成了对所述存储器设备中的数据的操作。
13.根据权利要求11所述的方法,其中所述操作的序列还包括:响应于所述预定义事件,从与引起提供所述预定义事件的通知的输出的标志相关联的队列的头部读取数据项目。
14.根据权利要求13所述的方法,其中所述操作的序列还包括:在读取所述数据项目之后,从所述队列移除所述数据项目。
15.根据权利要求13所述的方法,其中控制所述存储器访问控制器的步骤包括:利用所述数据项目将配置数据从所述存储器设备传输到所述存储器访问控制器。
16.根据权利要求15所述的方法,其中所述配置数据包括被安排为使得所述存储器访问控制器执行至少下列操作中的一个的参数:
将配置数据从所述存储器设备传输到所述专用硬件模块;
将数据块从所述存储器设备传输到所述专用硬件模块以进行处理;以及
将处理过的数据块从所述专用硬件模块传输到所述存储器设备。
17.一种在数字信号处理系统中传输数据的装置,包括:
用于执行处理器上的多个线程的单元,其中每一个线程独立地执行操作的序列,包括:
等待直到预定义事件被检测到为止;以及
响应所述预定义事件,控制存储器访问控制器以使得专用硬件模块能够通过与所述线程相关联的存储器访问通道从存储器设备读取数据或向存储器设备写入数据,
其中所述数字信号处理系统包括多个队列和用于每一个队列的通知逻辑,其中所述多个队列被安排为保持所述处理器响应于操作的争用而写入的一个或多个项目,所述用于每一个队列的通知逻辑被安排为断言一标志以指示与所述通知逻辑相关联的队列何时包含至少一个项目,并且其中所述装置还包括:
用于利用逻辑门的序列组合来自多个队列的标志状态的单元,其中所述逻辑门的序列定义了检测所述事件发生的条件;以及
用于当所述事件发生时向所述至少一个线程提供输出的单元。
18.根据权利要求17所述的装置,其中所述预定义事件指示其它专用硬件模块或数字信号处理器已完成了对所述存储器设备中的数据的操作。
19.根据权利要求17所述的装置,其中所述操作的序列还包括:响应于所述预定义事件,从与引起提供所述预定义事件的通知的输出的标志相关联的队列的头部读取数据项目。
20.根据权利要求19所述的装置,其中所述操作的序列还包括:在读取所述数据项目之后,从所述队列移除所述数据项目。
21.根据权利要求19所述的装置,其中控制所述存储器访问控制器的步骤包括:利用所述数据项目将配置数据从所述存储器设备传输到所述存储器访问控制器。
22.根据权利要求21所述的装置,其中所述配置数据包括被安排为使得所述存储器访问控制器执行至少下列操作中的一个的参数:
将配置数据从所述存储器设备传输到所述专用硬件模块;
将数据块从所述存储器设备传输到所述专用硬件模块以进行处理;以及
将处理过的数据块从所述专用硬件模块传输到所述存储器设备。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710078663.9A CN107066408B (zh) | 2011-10-26 | 2012-10-26 | 用于数字信号处理的方法、系统和装置 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1118534.5A GB2495959A (en) | 2011-10-26 | 2011-10-26 | Multi-threaded memory access processor |
GB1118534.5 | 2011-10-26 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710078663.9A Division CN107066408B (zh) | 2011-10-26 | 2012-10-26 | 用于数字信号处理的方法、系统和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103218329A CN103218329A (zh) | 2013-07-24 |
CN103218329B true CN103218329B (zh) | 2017-04-12 |
Family
ID=45373480
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710078663.9A Active CN107066408B (zh) | 2011-10-26 | 2012-10-26 | 用于数字信号处理的方法、系统和装置 |
CN201210418444.8A Active CN103218329B (zh) | 2011-10-26 | 2012-10-26 | 用于数字信号处理的方法、系统和装置 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710078663.9A Active CN107066408B (zh) | 2011-10-26 | 2012-10-26 | 用于数字信号处理的方法、系统和装置 |
Country Status (6)
Country | Link |
---|---|
US (4) | US8990522B2 (zh) |
EP (1) | EP2587384B1 (zh) |
JP (1) | JP6076686B2 (zh) |
CN (2) | CN107066408B (zh) |
GB (1) | GB2495959A (zh) |
TW (1) | TWI571744B (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8789013B1 (en) * | 2006-08-28 | 2014-07-22 | Rockwell Automation Technologies, Inc. | Ordered execution of events in a data-driven architecture |
GB201314732D0 (en) * | 2013-08-16 | 2013-10-02 | Sparkle Coupon Services Ltd | A data transmission method and system |
GB201405323D0 (en) * | 2014-03-25 | 2014-05-07 | Imagination Tech Ltd | Prioritsing events to which a processor is to respond |
EP4290892A3 (en) | 2014-04-09 | 2024-01-24 | Shifman, Orit | Methods, platforms and systems for paying persons for use of their personal intelligence profile data |
US20160094619A1 (en) * | 2014-09-26 | 2016-03-31 | Jawad B. Khan | Technologies for accelerating compute intensive operations using solid state drives |
CN105744442B (zh) * | 2016-04-27 | 2019-04-26 | 中科创达软件科技(深圳)有限公司 | 一种音频信号输出方法及装置 |
US10296393B2 (en) * | 2016-09-19 | 2019-05-21 | Texas Instruments Incorporated | Method for scheduling a processing device |
EP3602311A4 (en) * | 2017-06-20 | 2020-11-25 | Hewlett-Packard Development Company, L.P. | SIGNAL COMBINATOR |
US10572259B2 (en) * | 2018-01-22 | 2020-02-25 | Arm Limited | Hints in a data processing apparatus |
CN109445854B (zh) * | 2018-10-31 | 2019-11-05 | 中科驭数(北京)科技有限公司 | 数据传输方法及装置 |
CN111240813A (zh) * | 2018-11-29 | 2020-06-05 | 杭州嘉楠耘智信息科技有限公司 | 一种dma调度方法、装置和计算机可读存储介质 |
CN111064799A (zh) * | 2019-12-25 | 2020-04-24 | 北京首信科技股份有限公司 | 应用于物联网的数据推送方法、装置、设备及存储介质 |
US20210081538A1 (en) * | 2020-09-30 | 2021-03-18 | Intel Corporation | Early platform hardening technology for slimmer and faster boot |
CN114328323A (zh) * | 2021-12-01 | 2022-04-12 | 北京三快在线科技有限公司 | 一种数据中转单元及基于数据中转单元的数据传输方法 |
CN114285704B (zh) * | 2022-03-03 | 2022-06-21 | 广州慧睿思通科技股份有限公司 | 上行信道估计方法、芯片、系统及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5499350A (en) * | 1979-12-29 | 1996-03-12 | Fujitsu Limited | Vector data processing system with instruction synchronization |
CN1889063A (zh) * | 2006-08-04 | 2007-01-03 | 北京中星微电子有限公司 | 数字信号处理器子系统及其数据处理方法 |
Family Cites Families (62)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2283596B (en) * | 1993-11-01 | 1998-07-01 | Ericsson Ge Mobile Communicat | Multiprocessor data memory sharing |
US6003129A (en) * | 1996-08-19 | 1999-12-14 | Samsung Electronics Company, Ltd. | System and method for handling interrupt and exception events in an asymmetric multiprocessor architecture |
US7272703B2 (en) * | 1997-08-01 | 2007-09-18 | Micron Technology, Inc. | Program controlled embedded-DRAM-DSP architecture and methods |
US6427196B1 (en) * | 1999-08-31 | 2002-07-30 | Intel Corporation | SRAM controller for parallel processor architecture including address and command queue and arbiter |
JP3258300B2 (ja) * | 1999-09-03 | 2002-02-18 | 松下電器産業株式会社 | Dma転送装置および画像復号装置 |
US6694385B1 (en) * | 1999-09-10 | 2004-02-17 | Texas Instruments Incorporated | Configuration bus reconfigurable/reprogrammable interface for expanded direct memory access processor |
US6560667B1 (en) * | 1999-12-28 | 2003-05-06 | Intel Corporation | Handling contiguous memory references in a multi-queue system |
US6625654B1 (en) * | 1999-12-28 | 2003-09-23 | Intel Corporation | Thread signaling in multi-threaded network processor |
US6732203B2 (en) * | 2000-01-31 | 2004-05-04 | Intel Corporation | Selectively multiplexing memory coupling global bus data bits to narrower functional unit coupling local bus |
US6925641B1 (en) * | 2000-02-04 | 2005-08-02 | Xronix Communications, Inc. | Real time DSP load management system |
US7538772B1 (en) * | 2000-08-23 | 2009-05-26 | Nintendo Co., Ltd. | Graphics processing system with enhanced memory controller |
US7159134B2 (en) * | 2001-08-29 | 2007-01-02 | Analog Devices, Inc. | Method and apparatus for clock and power control in wireless systems |
AU2003245257A1 (en) * | 2002-05-04 | 2003-11-17 | Atheros Communications, Inc. | Flexible scheduling architecture for queues in a packet switched network |
US7376950B2 (en) * | 2002-05-08 | 2008-05-20 | Intel Corporation | Signal aggregation |
US7653912B2 (en) * | 2003-05-30 | 2010-01-26 | Steven Frank | Virtual processor methods and apparatus with unified event notification and consumer-producer memory operations |
JP2005202767A (ja) * | 2004-01-16 | 2005-07-28 | Toshiba Corp | プロセッサシステム、dma制御回路、dma制御方法、dmaコントローラの制御方法、画像処理方法および画像処理回路 |
US7882504B2 (en) * | 2004-01-29 | 2011-02-01 | Klingman Edwin E | Intelligent memory device with wakeup feature |
US7769950B2 (en) * | 2004-03-24 | 2010-08-03 | Qualcomm Incorporated | Cached memory system and cache controller for embedded digital signal processor |
US7685354B1 (en) * | 2004-06-30 | 2010-03-23 | Sun Microsystems, Inc. | Multiple-core processor with flexible mapping of processor cores to cache banks |
EP1794979B1 (en) * | 2004-09-10 | 2017-04-12 | Cavium, Inc. | Selective replication of data structure |
DE602004012563T2 (de) * | 2004-10-11 | 2009-05-07 | Texas Instruments Inc., Dallas | Mehrfädiges DMA |
GB2422926B (en) * | 2005-02-04 | 2008-10-01 | Advanced Risc Mach Ltd | Data processing apparatus and method for controlling access to memory |
CN100349150C (zh) | 2005-06-06 | 2007-11-14 | 北京中星微电子有限公司 | 通过直接存储器访问控制器传输数据的系统及方法 |
US20070091104A1 (en) * | 2005-07-08 | 2007-04-26 | Singh Gajendra P | Computer system and method |
US7913255B2 (en) * | 2005-10-20 | 2011-03-22 | Qualcomm Incorporated | Background thread processing in a multithread digital signal processor |
JP4530971B2 (ja) | 2005-11-07 | 2010-08-25 | 株式会社ソニー・コンピュータエンタテインメント | 起動処理装置、dma転送システム、dma転送方法 |
EP2016496B1 (en) * | 2006-04-21 | 2014-03-12 | Oracle America, Inc. | Hiding system latencies in a throughput networking system |
US7917710B2 (en) * | 2006-06-05 | 2011-03-29 | Oracle America, Inc. | Memory protection in a computer system employing memory virtualization |
EP2038761A1 (en) * | 2006-07-03 | 2009-03-25 | Nxp B.V. | Method and system for configuration of a hardware peripheral |
US7489259B2 (en) * | 2006-08-01 | 2009-02-10 | Creative Technology Ltd. | Sample rate converter and method to perform sample rate conversion |
US7769964B2 (en) * | 2006-08-21 | 2010-08-03 | Intel Corporation | Technique to perform memory reference filtering |
GB2443277B (en) * | 2006-10-24 | 2011-05-18 | Advanced Risc Mach Ltd | Performing diagnostics operations upon an asymmetric multiprocessor apparatus |
US7698540B2 (en) | 2006-10-31 | 2010-04-13 | Hewlett-Packard Development Company, L.P. | Dynamic hardware multithreading and partitioned hardware multithreading |
US8099574B2 (en) * | 2006-12-27 | 2012-01-17 | Intel Corporation | Providing protected access to critical memory regions |
US7873757B2 (en) * | 2007-02-16 | 2011-01-18 | Arm Limited | Controlling complex non-linear data transfers |
US8543534B2 (en) * | 2007-09-11 | 2013-09-24 | Oracle International Corporation | Concurrency in event processing networks for event server |
US8407425B2 (en) * | 2007-12-28 | 2013-03-26 | Intel Corporation | Obscuring memory access patterns in conjunction with deadlock detection or avoidance |
US9081694B2 (en) * | 2008-01-14 | 2015-07-14 | Bivio Networks, Inc. | Systems and methods for asymmetric multiprocessing |
US20100030927A1 (en) * | 2008-07-29 | 2010-02-04 | Telefonaktiebolaget Lm Ericsson (Publ) | General purpose hardware acceleration via deirect memory access |
US8555016B2 (en) * | 2008-12-17 | 2013-10-08 | Intel Corporation | Unified optimistic and pessimistic concurrency control for a software transactional memory (STM) system |
JP5498505B2 (ja) * | 2008-12-19 | 2014-05-21 | エスティー‐エリクソン、ソシエテ、アノニム | データバースト間の競合の解決 |
US20100281222A1 (en) * | 2009-04-29 | 2010-11-04 | Faraday Technology Corp. | Cache system and controlling method thereof |
JP4962921B2 (ja) * | 2009-08-26 | 2012-06-27 | 日本電気株式会社 | コンピュータのメモリ再配置制御方法およびプログラム並びにコンピュータシステム |
US8583896B2 (en) * | 2009-11-13 | 2013-11-12 | Nec Laboratories America, Inc. | Massively parallel processing core with plural chains of processing elements and respective smart memory storing select data received from each chain |
US8886994B2 (en) * | 2009-12-07 | 2014-11-11 | Space Micro, Inc. | Radiation hard and fault tolerant multicore processor and method for ionizing radiation environment |
US8054684B2 (en) * | 2009-12-18 | 2011-11-08 | Sandisk Technologies Inc. | Non-volatile memory and method with atomic program sequence and write abort detection |
US9081501B2 (en) * | 2010-01-08 | 2015-07-14 | International Business Machines Corporation | Multi-petascale highly efficient parallel supercomputer |
CN102763136B (zh) * | 2010-02-11 | 2015-04-01 | 诺基亚公司 | 用于提供多线程视频解码的方法和设备 |
US8819687B2 (en) * | 2010-05-07 | 2014-08-26 | Advanced Micro Devices, Inc. | Scheduling for multiple memory controllers |
JP5548037B2 (ja) * | 2010-06-11 | 2014-07-16 | パナソニック株式会社 | 命令発行制御装置及び方法 |
US8972995B2 (en) * | 2010-08-06 | 2015-03-03 | Sonics, Inc. | Apparatus and methods to concurrently perform per-thread as well as per-tag memory access scheduling within a thread and across two or more threads |
US8588228B1 (en) * | 2010-08-16 | 2013-11-19 | Pmc-Sierra Us, Inc. | Nonvolatile memory controller with host controller interface for retrieving and dispatching nonvolatile memory commands in a distributed manner |
US8239620B2 (en) * | 2010-09-27 | 2012-08-07 | Mips Technologies, Inc. | Microprocessor with dual-level address translation |
US8516205B2 (en) * | 2010-10-29 | 2013-08-20 | Nokia Corporation | Method and apparatus for providing efficient context classification |
US9405700B2 (en) * | 2010-11-04 | 2016-08-02 | Sonics, Inc. | Methods and apparatus for virtualization in an integrated circuit |
US9064116B2 (en) * | 2010-11-08 | 2015-06-23 | Intel Corporation | Techniques for security management provisioning at a data storage device |
US9471532B2 (en) * | 2011-02-11 | 2016-10-18 | Microsoft Technology Licensing, Llc | Remote core operations in a multi-core computer |
US10031888B2 (en) * | 2011-02-17 | 2018-07-24 | Hyperion Core, Inc. | Parallel memory systems |
US20120221785A1 (en) * | 2011-02-28 | 2012-08-30 | Jaewoong Chung | Polymorphic Stacked DRAM Memory Architecture |
US8694754B2 (en) * | 2011-09-09 | 2014-04-08 | Ocz Technology Group, Inc. | Non-volatile memory-based mass storage devices and methods for writing data thereto |
US9047090B2 (en) * | 2012-08-07 | 2015-06-02 | Qualcomm Incorporated | Methods, systems and devices for hybrid memory management |
US9626184B2 (en) * | 2013-06-28 | 2017-04-18 | Intel Corporation | Processors, methods, systems, and instructions to transcode variable length code points of unicode characters |
-
2011
- 2011-10-26 GB GB1118534.5A patent/GB2495959A/en not_active Withdrawn
-
2012
- 2012-10-05 US US13/646,649 patent/US8990522B2/en active Active
- 2012-10-12 TW TW101137694A patent/TWI571744B/zh active
- 2012-10-22 JP JP2012232839A patent/JP6076686B2/ja active Active
- 2012-10-22 EP EP12189414.1A patent/EP2587384B1/en active Active
- 2012-10-26 CN CN201710078663.9A patent/CN107066408B/zh active Active
- 2012-10-26 CN CN201210418444.8A patent/CN103218329B/zh active Active
-
2015
- 2015-02-19 US US14/625,719 patent/US9575900B2/en active Active
-
2017
- 2017-02-15 US US15/433,888 patent/US10268377B2/en active Active
-
2019
- 2019-03-25 US US16/363,587 patent/US11372546B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5499350A (en) * | 1979-12-29 | 1996-03-12 | Fujitsu Limited | Vector data processing system with instruction synchronization |
CN1889063A (zh) * | 2006-08-04 | 2007-01-03 | 北京中星微电子有限公司 | 数字信号处理器子系统及其数据处理方法 |
Also Published As
Publication number | Publication date |
---|---|
GB201118534D0 (en) | 2011-12-07 |
CN103218329A (zh) | 2013-07-24 |
US20150161058A1 (en) | 2015-06-11 |
TW201333711A (zh) | 2013-08-16 |
US9575900B2 (en) | 2017-02-21 |
EP2587384A1 (en) | 2013-05-01 |
US20130111159A1 (en) | 2013-05-02 |
US11372546B2 (en) | 2022-06-28 |
TWI571744B (zh) | 2017-02-21 |
US10268377B2 (en) | 2019-04-23 |
GB2495959A (en) | 2013-05-01 |
US20190220199A1 (en) | 2019-07-18 |
JP2013093026A (ja) | 2013-05-16 |
JP6076686B2 (ja) | 2017-02-08 |
US20170160947A1 (en) | 2017-06-08 |
CN107066408B (zh) | 2020-10-30 |
EP2587384B1 (en) | 2017-07-12 |
US8990522B2 (en) | 2015-03-24 |
CN107066408A (zh) | 2017-08-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103218329B (zh) | 用于数字信号处理的方法、系统和装置 | |
US7822885B2 (en) | Channel-less multithreaded DMA controller | |
US7546393B2 (en) | System for asynchronous DMA command completion notification wherein the DMA command comprising a tag belongs to a plurality of tag groups | |
US9703603B1 (en) | System and method for executing accelerator call | |
US6108766A (en) | Structure of processor having a plurality of main processors and sub processors, and a method for sharing the sub processors | |
US20130219130A1 (en) | Method, apparatus, and computer program product for inter-core communication in multi-core processors | |
TW200901028A (en) | Message queuing system for parallel integrated circuit architecture and related method of operation | |
JPH03126158A (ja) | スケジユーリング方法及び装置 | |
EP1573515A2 (en) | Pipeline accelerator and related system and method | |
US8832712B2 (en) | System and method for synchronizing threads using shared memory having different buffer portions for local and remote cores in a multi-processor system | |
WO2004042562A2 (en) | Pipeline accelerator and related system and method | |
CN112540796B (zh) | 一种指令处理装置、处理器及其处理方法 | |
US20210311782A1 (en) | Thread scheduling for multithreaded data processing environments | |
JP4585647B2 (ja) | パイプラインメモリシステムにおける複数のターゲットへの複数の未解決要求のサポート | |
US20020116664A1 (en) | Method and apparatus for machine check abort handling in a multiprocessing system | |
US20230359557A1 (en) | Request Ordering in a Cache | |
CN109426562B (zh) | 优先级加权轮转调度器 | |
CN108628639B (zh) | 处理器和指令调度方法 | |
US11755331B2 (en) | Writeback hazard elimination using a plurality of temporary result-storage elements | |
US20130151817A1 (en) | Method, apparatus, and computer program product for parallel functional units in multicore processors | |
KR20230170995A (ko) | 스케일러블 인터럽트들 | |
CN108958905B (zh) | 嵌入式多核中央处理器的轻量级操作系统 | |
CN113703841A (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 | ||
TR01 | Transfer of patent right |
Effective date of registration: 20210401 Address after: Trondheim Patentee after: NORDIC SEMICONDUCTOR ASA Address before: Hertfordshire Patentee before: Imagination Technologies Ltd. |
|
TR01 | Transfer of patent right |