CN1531684A - 数据处理器及运行数据处理器的方法 - Google Patents

数据处理器及运行数据处理器的方法 Download PDF

Info

Publication number
CN1531684A
CN1531684A CNA028130553A CN02813055A CN1531684A CN 1531684 A CN1531684 A CN 1531684A CN A028130553 A CNA028130553 A CN A028130553A CN 02813055 A CN02813055 A CN 02813055A CN 1531684 A CN1531684 A CN 1531684A
Authority
CN
China
Prior art keywords
processor
indication
counter
token
order
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
CNA028130553A
Other languages
English (en)
Inventor
Op
O·P·冈瓦尔
�����������ֶ�
P·范德沃尔夫
��Ŧ��
A·K·纽夫兰德
G·埃辛克
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.)
Koninklijke Philips NV
Original Assignee
Koninklijke Philips Electronics NV
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 Koninklijke Philips Electronics NV filed Critical Koninklijke Philips Electronics NV
Publication of CN1531684A publication Critical patent/CN1531684A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • G06F5/10Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor having a sequence of storage locations each being individually accessible for both enqueue and dequeue operations, e.g. using random access memory
    • G06F5/12Means for monitoring the fill level; Means for resolving contention, i.e. conflicts between simultaneous enqueue and dequeue operations
    • 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
    • G06F2205/00Indexing scheme relating to group G06F5/00; Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F2205/10Indexing scheme relating to groups G06F5/10 - G06F5/14
    • G06F2205/102Avoiding metastability, i.e. preventing hazards, e.g. by using Gray code counters

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)
  • Hardware Redundancy (AREA)
  • Computer And Data Communications (AREA)
  • Advance Control (AREA)
  • Synchronisation In Digital Transmission Systems (AREA)
  • Communication Control (AREA)

Abstract

一种根据本发明的数据处理器,至少包括第一(1.2)和第二处理器(1.3),处理器通过根据同步协议经缓冲区交换令牌,能够相互传递数据。协议含有同步信息,同步信息至少包括两个处理器可读的第一和第二同步计数器(writec、readc)。至少第一处理器(1.2)能够修改第一计数器(writec),至少第二处理器(1.3)能够修改第二计数器(readc),协议至少包括第一命令(claim),当处理器出发该命令时导致验证所请求的令牌数是否可用于该处理器,和第二命令(release),该命令导致更新一个同步计数器,指示释放令牌供另一个处理器使用。其中至少一个处理器(1.3)包括一个存储装置,用于本地存储可用于该处理器的令牌数的指示(Nc′;writec′,readc),其中发出第一命令(claim)导致根据该指示验证可用于该处理器的令牌数。否定的验证结果导致根据至少一个同步计数器更新该指示。处理器发出的第二命令(release)导致根据释放给另一个处理器的令牌数更新指示。

Description

数据处理器及运行数据处理器的方法
本发明涉及一种数据处理器。
本发明还涉及一种运行数据处理器的方法。
对于很多基于MPEG-x、DVB、DAB和UMTS等标准的产品,信号处理功能决定了性能要求。这要求要有效的实现这些产品的信号处理部分。但是,因为标准的发展和市场要求的改变,实施需要有灵活性以及可伸缩性。因为处理数据流,所以建立宏流水线是为这些应用建模的正常方式;在该建立过程中,功能(任务)是阶段,在阶段之间有缓冲区,形成了流水线。因为所有的阶段能够并行运行,所以这是一种使用任务级并行操作(TLP)的方式。
多处理器系统包括多个处理器,非常适合实现这种宏流水线。多处理器系统可以包括几种处理器,例如RISC处理器或VLIW处理器等可编程处理器,或专用硬件。一个处理器可以执行一个特定任务,或以分时方式执行一个以上的任务。
在宏流水线的后续阶段中,为了在执行任务的处理器之间交换数据,生产处理器通常将其数据写入共享存储器中的缓冲区,消费处理器从缓冲区读取该数据。同步协议防止消费处理器试图读取缓冲区中还没有被生成处理器写入的令牌。同样,同步协议防止生产处理器改写还没有被消费处理器读取的令牌。
在已知的同步协议中,在第一计数器中保存可用于生产处理器(生产者)的令牌数量,在第二计数器中保存可用于消费处理器(消费者)的令牌数量。每当生产者释放一个令牌,例如使其可用于消费者,就使第二计数器增加,第一计数器减少。通过读取第一计数器确定是否有令牌可用。已知同步协议的缺点是因为各个计数器都必须被两个处理器访问,所以需要一种仲裁机制来管理处理器对计数器的访问。这将会延误处理器的运行,并以此影响了数据处理器的效率。
本发明的一个目的是提供一种提高了效率的数据处理器。本发明的另一个目的是提供一种提高了运行效率的数据处理器的方法。
为了达到这种目的,权利要求1定义了根据本发明的数据处理器。
在根据本发明的数据处理器中,至少一个处理器包括一个存储装置,本地存储可用于该处理器的令牌数指示。处理器除了根据两个处理器共享的同步信息确定令牌数之外,还根据这个本地存储的指示验证其可用的令牌数。按这种方法,只要本地存储的指示指明令牌是可用的,就能够显著加快处理器的运行。如果不是这种情况,则根据至少一个同步计数器更新该指示。为了防止处理器再次试图使用相同的缓冲区空间,当处理器释放一个或多个令牌给其正与之通信的另一个处理器时,更新本地存储的指示。请注意,本地存储指示是实际可用令牌数的悲观指示。一旦处理器或附属于该处理器的单独的通信外壳命令解释程序(shell)已经更新其本地存储的指示,该指示值就等于实际令牌数。但是当处理器释放令牌时,处理器减少本地存储指示以与之一致。因此本地存储指示值最多等于实际值,这样不会出现在写入令牌之前读取令牌,或在读取之前改写它们。
可以用软件实现请求一系列令牌的第一命令,例如通过一个以令牌数和一个通道作为参数的函数请求(claim)。作为响应,函数请求(claim)可能返回第一个变成可用的令牌。可以为写入令牌的请求(即输出通道),以及读取令牌的请求(即输入通道)定义单独的函数。因为处理器可以以分时方式执行几个任务,所以处理器可以有一个以上的输入通道,每个任务有其自己的输入通道。因为相同的原因,处理器可以有一个以上的输出通道。
通过以通道标识和释放的令牌数作为参数的函数调用释放(release),可以实现释放令牌的第二命令。可以定义单独的用于释放写入的令牌和读取的令牌的函数调用。
除了用软件实现这些命令之外,也可以用专用硬件实现。
请注意,US 6,173,307 B1公开了一种包括由多个生产者和多个消费者共享的循环队列的多处理器系统。可以许可任一个生产者或消费者在不干扰队列正确性的情况下,在任意时间抢先占用(preempt)任一个生产者或消费者。
还请注意,US 4,916,658描述了一种包括一个动态控制的缓冲区的仪器。缓冲区适合存储包括几个存储位置的数据字,其中还包括提供指明下一个要存储到其中的存储位置的第一指示器和指明下一个要从其中获取的存储位置的第二指示器的电路,以及提供可用于存储位置数和可用于获取位置数的电路。
权利要求2请求了一个实际实施方案。当验证可用的令牌数时,处理器检测到本地存储的指示指明没有令牌可用。因此处理器更新该指示,使其包含正确的值。
在权利要求3的实施方案中,处理器一直等待,直到本地存储值的确指明没有令牌可用,例如通过值为0,但在如处理器检测到通信网络活动少等适当时刻或在数据处理器的初始化时,处理器预取实际值。
几种同步协议是可用的,权利要求4中请求保护其中的第一种,权利要求5中请求保护其中的第二种。
在权利要求6的实施方案中,生产者产生的数据是由一个以上的消费者读取的。
根据应用,至少一个处理器是执行计算机程序的通用处理器或可编程的特定应用设备。可以代之或组合使用专用处理器。
因为与处理器结合的外壳命令解释程序(Shell)利于多任务处理,所以可以减少处理器必须亲自处理的中断数。这减少了不必要的激活空闲处理器的次数,或处理器必须中断其正在处理的另一个任务。以这种方式提高了处理器的效率。
对于实现根据中断信号类型和中断信号如何编码来选择中断信号这样的外壳命令解释程序来说可以有几种选择。在一个实施方案中,中断信号表示处理器的一个数据通道。实现这一点的实际做法是将寄存器的位分配给处理器的各个输入通道。例如,32位寄存器能够支持32个输入通道,其中,例如将位0分配给通道0,将位1分配给通道1,等等。当另一个处理器发送一个指示处理器通道k的中断信号时,设置信号寄存器的对应位k。接收处理器的外壳命令解释程序可以通过屏蔽寄存器选择特定中断信号,屏蔽寄存器中的每个位为一个特定通道表明该处理器是否想忽略该中断。例如,如果屏蔽了对应于通道2的位,则该信号不会在处理器中产生中断,不会发生唤醒。在该例中,处理器可能忙于处理,此时屏蔽了所有位,或者处理器/任务可能正在等待一个关于通道1的满/空令牌,在这种情况下处理器/任务不关心通道2上发生的事情。
信号和屏蔽寄存器的位数为任意值,取决于应该支持的通道数。替代做法可以是每个通道能够由一个数字支持,并使用列表或查找表确定是否应该为该通道中断处理器。但这是更为复杂的解决方案。
除了通过中断信号的通道号标识中断信号之外,还可以通过任务号来代之标识。在该实施方案中,所有带有用于特定任务的信号的通道在设置外壳命令解释程序的信号寄存器中设置相同的位。以这种方式,可以唯一寻址等于信号寄存器中位号的任务号,而每个任务可以有一个以上的通道。等待稍稍不如唯一通道标识明确,但是不必要唤醒的数量仍然少,而且能够以有限的硬件支持更多的通道。
当然,只要定义了相关关系,任务号不必与位号相同,(只是以这种方式实现简单)。此外,也可以是任务(组)共享相同的信号中断号。
除了标识由接收方执行的任务之外,也可以告知发送方任务标识号。在这种情况下,接收处理器可以从特定任务选择中断信号,而不是为特定任务选择中断信号。它可以取决于外部任务号和基于处理器自身爱好或看起来最有用/有效的事物的任务号。
参照附图更为详细地描述了这些和其它方面。其中
图1示意性显示了一种根据本发明的数据处理器,
图2示意性显示了一种同步计数器指明缓冲区分区的方法,
图3说明了一种根据本发明的同步方法的第一方面,
图4说明了一种根据本发明的同步方法的第二方面,
图5说明了另一种根据本发明的同步方法,
图6详细说明一种用于处理器的信号控制器,
图7说明了一种用于处理器的同步外壳命令解释程序,以及
图8说明了一种通道控制器。
图1显示了一种数据处理器,至少包括第一处理装置1.2和第二处理装置1.3。第一处理装置,VLIW处理器1.2能够通过使位于存储器1.5中的缓冲区装置中的令牌变得可用来提供数据。由第二处理装置1.3,数字信号处理器,读取令牌进行进一步处理。数据处理器还包括RISC处理器1.1、ASIP 1.4和专用硬件单元1.6。VLIW处理器1.2、DSP 1.3、ASIP 1.4、存储器1.5和ASIC 1.6通过第一总线1.7相互耦合。RISC处理器1.1与第二总线1.8耦合,至于第二总线1.8,通过桥接器1.9与第一总线1.7耦合。另一个存储器1.10和外围设备1.11连接到第二总线1.8。处理器可以有辅助单元。例如RISC处理器1.1包括指令缓存1.1.1和数据缓存1.1.2。同样,VLIW处理器包括指令缓存1.2.1和数据缓存1.2.2。DSP 1.3包括指令缓存1.3.1、本地存储器1.3.2和地址解码器1.3.3。ASIP 1.4包括本地存储器1.4.1和地址解码器1.4.2。ASIC 1.6包括本地存储器1.6.1和地址解码器1.6.2。为处理装置1.2、1.3各分配一个相应的同步指示器。两个同步指示器都可以由第一处理装置1.2和第二处理装置1.3访问。第一同步指示器至少可由第一处理装置1.2修改,由第二处理装置1.3读取。第二同步指示器至少可由第二处理装置1.3修改,由第一处理装置1.2读取。
每个同步指示器由一个计数器表示。代表第一同步指示器的计数器(p计数器)指示第一处理装置1.2要写入的令牌数。代表第二同步指示器的计数器(c计数器)指示第二处理装置1.3要读取的令牌数。只要比较计数器值就能够计算对于各个处理器可用的令牌数,技术人员可以有几种选择来通过计数器表示令牌数。例如,计数器值可以等于令牌数mod n,其中n是一个整数值。另外,计数器的每一阶跃可以表示一个固定的令牌数,或者通过计数器值的多个阶跃来表示一个令牌。
在实际实施方案中,计数器是一个指向地址的指针,由此使缓冲区装置可用于另一个处理器。图2中示意性说明了这一点。该图示意性显示了存储器1.5中的缓冲区空间2.1,被第一处理装置1.2用来为第二处理装置1.3提供数据。缓冲区空间2.1配置成一个循环缓冲区。缓冲区空间2.1包括第一区2.2和第二区2.4,其中包含第一处理装置1.2写入的数据,该数据现在可用于第二处理装置1.3。缓冲区空间2.1还包括第三区2.3,可用于第一处理装置1.2写入新数据。p计数器writec表示第一区2.2的末端,c计数器readc表示第二区2.3的末端。
第一区2.2中的区段2.6和第二区2.4由保留计数器readrsvc和同步计数器readc共同保留。
第三区2.3中的区段2.5由保留计数器writersvc和同步计数器writec共同保留。
两个计数器相减对缓冲区大小buffsz取模,得到可用于第二处理装置1.3的有效令牌数Nc和可用于由第一处理装置1.2填充的空令牌数Np。
(1)Nc=(wirtec-readc)mod buffsz,以及
(2)Np=(readc-wirtec)mod buffsz。
p计数器和c计数器存储在至少两个处理装置可访问的位置。每次对这些计数器的访问都导致一个延迟,如要求一些访问该位置的仲裁机制。为了进一步提高效率,处理装置装备了寄存器装置,用于本地存储可用令牌数的指示。在一个实施方案中,第一处理装置1.2有一个存储计数器值readc′的寄存器,第二处理装置1.3有一个寄存器,存储计数器值writec′。当这些装置决定p计数器的进展(progress)时,值writec已经可用于第一处理装置1.2。出于类似的原因,值readc可用于第二处理装置。第二处理装置1.3除了计算实际可用的有效令牌数Nc之外,现在还根据下式计算该值的悲观估计值Nc′:
(3)Nc′=(writec′-readc)mod buffsz
虽然值writec′和readc对于可被读取的令牌数Nc都是指示性的,即是悲观估计值,但用于本地存储这些变量的设备形成了寄存器装置,用于本地存储可用于被读取的令牌数的指示。替代做法是可以本地存储值Nc′而不是writec′。类似地,第一处理装置1.2现在还根据下式计算实际可用的空令牌数的悲观估计值Np′:
(4)Np′=(readc′-writec)mod buffsz
用于本地存储这些变量的设备形成了寄存器装置,用于本地存储可用于被写入的令牌数的指示。
替代做法是可以本地存储值Np′而不是readc′。
在第一处理装置1.2检测到Np′的值为0的时候,需要用c计数器的瞬时值readc更新第一处理装置的本地寄存器中的值readc′。在第二处理装置1.3检测到Nc′的值为0的时候,需要用p计数器的瞬时值writec更新第二处理装置的本地寄存器中的值writec′。
除本地存储的信息之外,可以用共享数据结构组织与在第一处理装置1.2和第二处理装置1.3之间的通信通道有关的数据。下面是这样一种以c语言定义的数据结构CHP_channelT的例子:
    typedef struct{

             int id;

             int buffsz;

             int flags;

             struct CHP_taskS* ptask;

             struct CHP_taskS* ctask;

             union{

                  CHP_bufferT* buffer_pointers;

                  struct{

                       int token_size;

                       CHP_bufferT buffer;

                   }buffer_data;

             }channel;

  unsigned writec;

  unsigned readc;

  CHP_channel_hwT* pchan;

  CHP_channel_hwT* cchan;

  }CHP_channelT;
除了计数器值writec和readc之外,该数据结构还包括下列数据。
id是标识通道的值,从而能够使一个处理方案包含多个通道,例如从第一处理装置传输数据到第二处理装置的第一通道,从第二处理装置传输数据到第一处理装置的第二通道,和从第二处理装置传输数据到第三处理装置的第三通道。
值buffsz表示缓冲区的大小,即能够存储在缓冲区中的令牌数。
值flags表示通道属性,例如,同步是基于轮询的还是基于中断的,通道缓冲区是直接还是间接分配的。作为替代,可以决定将预定属性赋给通道,例如,将实现限制为基于中断的同步,带有直接分配的缓冲区。在这种情况下可以省略值flags。
ptask和ctask是指向结构的指针,描述第一处理装置的任务、生产者、和第二处理装置的任务、消费者。
任务结构可以包含例如
—任务标识符(是谁的任务结构)
—函数指针(如果是关于嵌入式处理器的任务,则在引导之后,root_task能够跳到该函数并启动应用程序。否则无效。)
—设备类型:表示任务应该运行在什么类型的设备上。
这对于引导过程是有用的:作为Unix过程运行的任务必须以与运行在DSP或嵌入式处理器或专用硬件上的任务不同的方式初始化。通过获得主设备类型,易于选择正确的引导过程。
—设备号:这使得能够区分如第一和第二Unix协处理器。通过为它们分配一个唯一号能够实现区分。
—通道号
—到通道数据结构的指针列表。
以这种方式,当启动一个如UNIX任务时,任务可以首先读取其任务结构,然后读取所有与连接到该任务的所有通道有关的信息。这使得引导过程容易得多,并避开正是在这时添加的一些任务,必须修改控制过程,使所有任务载入正确的数据结构。
共用(union)channel表示缓冲区的位置。或者通过到结构CHP_bufferT的指针buffer_pointers间接定位缓冲区,或者在结构CHP_bufferT中包含缓冲区。
整数token_size表示由生产者和消费者交换的令牌的大小,例如字节数。
如上所述,如果处理装置包含如用于消费任务的计数器值writec′等本地数据,则这种情况是有利的。数据结构CHP_bufferT优选包含对包含本地任务信息的数据结构的引用(reference)pchan、cchan。
这种数据结构可以具有下列以c语言定义的形式:
  typedef struct{

             unsigned sgnl_reg_addr;

             unsigned sgnl_Value;

             unsigned rsmpr_addr;
				
				<dp n="d8"/>
             int buffsz;

             CHP_bufferT buf_ptr;

             unsigned lsmpr_reg;

             int in_out;

             int token_size;

  }CHP_channel_hwT;
该结构包含一个无符号整数sgnl_reg_addr,表示处理装置正在与之通信的其它设备的信号寄存器地址。中断处理器可以在设备的信号寄存器中留下为其发生中断的任务或通道的指示。
该结构还包括表示其自身信号值的无符号整数sgnl_value。
无符号值rsmpr_addr表示其它设备中的远程同步计数器地址。
如上所述,缓冲区大小buffsz由生产者用于计算可用的空令牌数,由消费者计算可用的可写入的令牌数。
值buf_ptr表示缓冲区的基地址。
无符号整数lsmpr_reg存储本地通道同步计数器的值。
通道输入/输出类型由整数in_out确定。
整数token_size表示通过通道交换的令牌的大小。
图3说明了一种根据本发明的方法的第一方面,用于同步数据处理器中的第一和第二处理装置。
在步骤3.1中,第一处理装置1.2产生一个或多个令牌。
在步骤3.2中,第一处理装置读取指示使可用于第二处理装置的令牌数的第一计数器writec。
在步骤3.3中,第一处理装置1.2读取指示由第二处理装置消费的令牌数的第二计数器readc。
在步骤3.4中,第一处理装置按照计算等式2比较这些计数器。
在步骤3.5中,第一处理装置1.2根据该比较值作出决定,如果值Np大于或等于产生的令牌数就执行步骤3.6和3.7,否则执行步骤3.8。
在步骤3.6中,第一处理装置1.2将令牌写入缓冲区装置2.1,随后在步骤3.7中修改第一计数器writec,然后继续到步骤3.1。
在步骤3.8中,第一处理装置等待如一个预定时间间隔或直到被中断,然后重复步骤3.2到3.5。
第二处理装置1.3执行类似的过程,如图4中说明的。
在步骤4.2中,第二处理装置1.3读取指示由第一处理装置1.2变得对其可用的令牌数的第一计数器writec。
在步骤4.3中,第二处理装置1.3读取指示其已经消费的令牌数的第二计数器readc。
在步骤4.4中,第二处理装置1.3按照等式1的计算比较这些计数器。
在步骤4.5中,第二处理装置1.3根据该比较值作出决定,如果值Nc大于或等于产生的令牌数就执行步骤4.6和4.7,否则执行步骤4.8。
在步骤4.6中,第二处理装置1.3从缓冲区装置读取令牌,随后在步骤4.7中修改第二计数器。在继续步骤4.1之前,第二处理装置1.3可以执行数据处理步骤4.9。
在优选实施方案中,处理装置本地存储其正在与之通信的另一个处理装置的值的副本。
图5说明了如何根据本发明的优选方法使用这个本地副本。
步骤5.1和5.2与图3中的步骤3.1和3.2类似。
但是在步骤5.3中,第一处理装置1.2除读取远程存储的c计数器的值readc之外,还读取本地存储值readc′。该读取操作所花费的时间通常明显少于读取远程值readc。
除第一处理装置1.2使用这个本地存储值按等式4计算Np′之外,步骤5.4与图3的步骤3.4类似。
在步骤5.5中,第一处理装置1.2根据该比较值作出决定,如果值Np大于或等于产生的令牌数就执行步骤5.6和5.7,否则执行步骤5.8、5.10和5.11。
步骤5.6和5.7类似于图3的步骤3.6和3.7。
在步骤5.8中,第一处理装置可以等待,例如一个预定时间间隔或直到被中断。随后在步骤5.10中读取远程值readc并在步骤5.11中将该值本地存储为变量readc′。根据这个方法,只需要在由本地存储值readc′计算的空令牌数小于缓冲区中要被写入的令牌数时读取远程值readc。可以本地存储值Np′来代替值readc′。在这种情况下,应该在每次写操作之后,例如与步骤5.7同时更新Np′。
类似地,通过使用本地存储值prodc或Nc′能够提高第二处理装置执行消费过程的效率。
根据本发明的数据处理系统除了使用上面描述的同步计数器wirtec和readc之外,还可以使用指示可用于第一处理器的令牌数的第一同步计数器tokenl和指示可用于第二处理器的令牌数的第二同步计数器token2。每当生产者释放一个令牌,也就是使其对消费者可用,就增加第二计数器并减小第一计数器。通过读取第一计数器验证其是否有可用的令牌。根据本发明,处理器之一,例如第一处理器有一个本地指示。如果第一处理器根据该本地指示检测到没有令牌可用,则只会复制第一同步计数器token1的值。同样如果需要的话,第二处理器会使用token2的值更新其本地指示。
为了进一步减少通信过载,可以为处理装置6.1配置一个如图6中示意性说明的信号控制器6.2。信号控制器包括信号寄存器6.3和屏蔽寄存器6.4。信号控制器中寄存器的内容在逻辑电路6.5中相互比较,决定处理器6.1是否应该接收一个中断。发送给该处理器一条它更新了同步计数器的消息的另一个处理器更新信号寄存器6.5,以指示它为哪个任务更新了该计数器。例如,当信号寄存器中的每一位都表示一个特定任务时,消息造成的结果是设置用于该特定任务的位。另一方面,处理器6.1在屏蔽寄存器6.4中表明应该为哪个任务被中断。然后每当接收到一条关于处理器6.1选择的一个任务的消息时,逻辑电路6.5就产生一个中断信号。在显示的实施方案中,逻辑电路6.5包括一组AND门6.5.1-6.5.n,每个AND门的第一输入耦合到信号寄存器6.3的相应位,第二输入耦合到屏蔽寄存器6.4的相应位。逻辑电路6.5还包括一个OR门6.5.0。每个AND门的输出耦合到OR门的输入。OR门6.5.0的输出提供中断信号。
图7显示了一个实施方案,其中处理器7.1有一个单独的同步外壳命令解释程序7.2,支持通过如总线7.3等通信网络与其它处理装置通信。同步外壳命令解释程序7.2包括总线适配器7.4、存储任务标识的信号寄存器7.5,同步外壳命令解释程序7.2为该任务标识接收了一条消息。同步外壳命令解释程序7.2还包括通道控制器7.6、7.7。这些控制器用于将信号中处理器7.6的命令转换到总线7.3。通常特定应用设备7.1并行执行的任务较可编程处理器6.1的情况要少。因此应用如图6中说明的中断选择技术的重要性小。
图8更为详细地显示了一种通道控制器8.1。通道控制器8.1包括普通总线主从单元8.2、寄存器文件8.3和控制单元8.4。
总线适配器7.4和普通总线主从单元8.2共同将通道控制器8.1耦合到总线。总线适配器7.4提供了例如从PI总线或AHB总线等特殊互连网络到普通接口的匹配。普通总线主从单元8.2配置用于将同步信号与普通接口匹配。以这种方式能够以数量相对较少的不同元件支持不同的通道控制器类型和不同的总线。
寄存器文件8.3存储同步信息。
假如处理器7.1的设备同步接口发出信号Claim来请求缓冲区中的一系列可写或可读令牌,则控制单元8.4通过比较远程计数器remotec的本地存储值和它的保留计数器localrsvc来验证这个数是否可用。符号remotec对于输入通道表示writec,对于输出通道表示readc。符号localrsvc对于输入通道表示readrsvc,对于输出通道表示writersvc。
如果验证是肯定的,则返回令牌地址Token Address。否则,将返回为处理器7.1保留的缓冲区空间的上限地址。信号Token Valid表示是否确认对令牌的请求,处理器的同步接口是否可以再次产生信号Claim。以这种方式,可以在每个周期将令牌地址提供给处理器。如果第一验证的结果是否定的,则通道控制器8.1读取地址remotecaddr指示的远程计数器,并通过将在该地址存储的值来替换本地存储值remotec。现在控制单元8.4再次验证请求的令牌数是否可用。
如果请求失败,则通道控制器8.1或者以轮询模式定期轮询远程计数器,或者以中断模式等待其与之通信的处理器的中断。同时通道控制器8.1可以进行另一个任务。寄存器中的变量inputchannel向通道控制器表示该通道是输入通道还是输出通道以及为该通道选择了这些模式中的哪一种。
在成功请求之后,更新变量localrsvc与请求的令牌数一致。
寄存器文件除了变量remotec之外,还包括表示由上一次验证计算的可用令牌数的变量。
假如处理器7.1发信号Release_req,则根据该请求更新本地计数器localc。这个本地计数器localc对于输入通道是readc,对于输出通道是writec。任选地,保持信号Release_req为高,从而允许处理器7.1在任何时候释放令牌。但是,这个信号可以用于防止在控制器很难访问总线的时候控制器溢出。
替代做法是,可以在软件中通过使用一个请求(claim)和一个释放(release)函数来实现同步过程。通过执行请求函数,处理器请求用于特定通道的一系列令牌,并等待到函数返回令牌地址。通过执行释放函数,处理器释放用于特定通道的一系列令牌。存在单独的函数用于请求用于写的令牌或请求用于读的令牌。类似地,可以使用单独的函数用于释放。
要注意的是,本发明要保护的范围不限于这里描述的实施方案。本发明要保护的范围也不受权利要求中标号的限制。词“包括”不排除权利要求中提到的那些部分之外的部分。元件前面的词“一个”不排除多个该种元件。构成本发明一部分的装置既可以以专用硬件的形式实现,也可以以已编程的通用处理器的形式实现。本发明存在于各个新特性或特性组合之中。

Claims (9)

1.一种数据处理器,至少包括第一和第二处理器,处理器通过根据同步协议经缓冲区交换令牌能够相互传递数据,协议含有同步信息,同步信息至少包括两个处理器可读的第一和第二同步计数器,至少第一处理器能够修改第一计数器,至少第二处理器能够修改第二计数器,协议至少包括第一命令,当处理器发出该命令时导致验证请求的令牌数是否可用于该处理器,和第二命令,该命令导致更新一个同步计数器,指示释放该令牌供另一个处理器使用,
其中至少一个处理器包括一个存储装置,用于本地存储可用于该处理器的令牌数的指示,其中发出第一命令导致根据该指示验证可用于该处理器的令牌数,
其中否定的验证结果导致根据至少一个同步计数器更新该指示,
其中处理器发出的第二命令导致根据释放给另一个处理器的令牌数更新指示。
2.根据权利要求1的数据处理器,其中指示在开始时表示没有缓冲区空间可用。
3.根据权利要求1的数据处理器,对处理器进行安排,从而可以根据至少一个同步计数器更新指示,与第一命令无关。
4.根据权利要求1的数据处理器,其中第一同步计数器指示由第一处理器释放的令牌数,第二同步计数器指示由第二处理器释放的缓冲区空间大小。
5.根据权利要求1的数据处理器,其中第一同步计数器指示可用于第一处理器的令牌数,第二同步计数器指示可用于第二处理器的令牌数。
6.根据权利要求1的数据处理器,包括一个或多个另外的第二处理器,其中各个第二处理器读取由第一处理器产生的数据。
7.根据权利要求1的数据处理器,其中至少一个处理器是通用处理器或执行计算机程序的可编程特定应用设备。
8.数据处理器,其中至少一个处理器是专用处理器。
9.用于运行数据处理器的方法,数据处理器至少包括第一和第二处理器,其中处理器通过根据同步协议经缓冲区交换令牌能够相互传递数据,协议含有同步信息,同步信息至少包括两个处理器可读的第一和第二同步计数器,至少第一处理器能够修改第一计数器,至少第二处理器能够修改第二计数器,协议至少包括第一命令,当处理器发出该命令时第一命令导致验证请求的令牌数是否可用于该处理器和/或所请求令牌数的所有权,和第二命令,该第二命令导致更新一个同步计数器,指示释放该令牌供另一个处理器使用,
其中至少一个处理器包括一个存储装置,用于本地存储可用于该处理器的令牌数的指示,其中发出第一命令导致根据该指示验证可用于该处理器的令牌数,
其中否定的验证结果导致根据至少一个同步计数器更新该指示,
其中处理器发出的第二命令导致根据释放给另一个处理器的令牌数更新指示。
CNA028130553A 2001-06-29 2002-06-20 数据处理器及运行数据处理器的方法 Pending CN1531684A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP01202517.7 2001-06-29
EP01202517 2001-06-29

Publications (1)

Publication Number Publication Date
CN1531684A true CN1531684A (zh) 2004-09-22

Family

ID=8180570

Family Applications (3)

Application Number Title Priority Date Filing Date
CNA028130553A Pending CN1531684A (zh) 2001-06-29 2002-06-20 数据处理器及运行数据处理器的方法
CNB028130588A Expired - Fee Related CN100533370C (zh) 2001-06-29 2002-06-20 多处理器系统及运行多处理器系统的方法
CNA028130510A Pending CN1522405A (zh) 2001-06-29 2002-06-20 数据处理设备和同步数据处理设备中的第一与第二处理装置的方法

Family Applications After (2)

Application Number Title Priority Date Filing Date
CNB028130588A Expired - Fee Related CN100533370C (zh) 2001-06-29 2002-06-20 多处理器系统及运行多处理器系统的方法
CNA028130510A Pending CN1522405A (zh) 2001-06-29 2002-06-20 数据处理设备和同步数据处理设备中的第一与第二处理装置的方法

Country Status (7)

Country Link
US (2) US20040153524A1 (zh)
EP (3) EP1405175B1 (zh)
JP (3) JP2004531002A (zh)
CN (3) CN1531684A (zh)
AT (1) ATE341027T1 (zh)
DE (1) DE60215007T2 (zh)
WO (3) WO2003003232A2 (zh)

Families Citing this family (50)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7293155B2 (en) 2003-05-30 2007-11-06 Intel Corporation Management of access to data from memory
TW587374B (en) * 2003-06-03 2004-05-11 Acer Labs Inc Method and related apparatus for generating high frequency signals by a plurality of low frequency signals with multiple phases
US7714870B2 (en) 2003-06-23 2010-05-11 Intel Corporation Apparatus and method for selectable hardware accelerators in a data driven architecture
US7546423B2 (en) * 2003-09-02 2009-06-09 Sirf Technology, Inc. Signal processing system control method and apparatus
JP4148223B2 (ja) * 2005-01-28 2008-09-10 セイコーエプソン株式会社 プロセッサおよび情報処理方法
US20060253662A1 (en) * 2005-05-03 2006-11-09 Bass Brian M Retry cancellation mechanism to enhance system performance
US8817029B2 (en) * 2005-10-26 2014-08-26 Via Technologies, Inc. GPU pipeline synchronization and control system and method
US20080052527A1 (en) * 2006-08-28 2008-02-28 National Biometric Security Project method and system for authenticating and validating identities based on multi-modal biometric templates and special codes in a substantially anonymous process
US8014387B2 (en) 2007-08-27 2011-09-06 International Business Machines Corporation Providing a fully non-blocking switch in a supernode of a multi-tiered full-graph interconnect architecture
US7958183B2 (en) 2007-08-27 2011-06-07 International Business Machines Corporation Performing collective operations using software setup and partial software execution at leaf nodes in a multi-tiered full-graph interconnect architecture
US7793158B2 (en) 2007-08-27 2010-09-07 International Business Machines Corporation Providing reliability of communication between supernodes of a multi-tiered full-graph interconnect architecture
US7822889B2 (en) 2007-08-27 2010-10-26 International Business Machines Corporation Direct/indirect transmission of information using a multi-tiered full-graph interconnect architecture
US7809970B2 (en) 2007-08-27 2010-10-05 International Business Machines Corporation System and method for providing a high-speed message passing interface for barrier operations in a multi-tiered full-graph interconnect architecture
US7769892B2 (en) 2007-08-27 2010-08-03 International Business Machines Corporation System and method for handling indirect routing of information between supernodes of a multi-tiered full-graph interconnect architecture
US7904590B2 (en) 2007-08-27 2011-03-08 International Business Machines Corporation Routing information through a data processing system implementing a multi-tiered full-graph interconnect architecture
US8185896B2 (en) * 2007-08-27 2012-05-22 International Business Machines Corporation Method for data processing using a multi-tiered full-graph interconnect architecture
US7769891B2 (en) 2007-08-27 2010-08-03 International Business Machines Corporation System and method for providing multiple redundant direct routes between supernodes of a multi-tiered full-graph interconnect architecture
US7958182B2 (en) 2007-08-27 2011-06-07 International Business Machines Corporation Providing full hardware support of collective operations in a multi-tiered full-graph interconnect architecture
US8108545B2 (en) 2007-08-27 2012-01-31 International Business Machines Corporation Packet coalescing in virtual channels of a data processing system in a multi-tiered full-graph interconnect architecture
US7840703B2 (en) 2007-08-27 2010-11-23 International Business Machines Corporation System and method for dynamically supporting indirect routing within a multi-tiered full-graph interconnect architecture
US8140731B2 (en) 2007-08-27 2012-03-20 International Business Machines Corporation System for data processing using a multi-tiered full-graph interconnect architecture
US7827428B2 (en) 2007-08-31 2010-11-02 International Business Machines Corporation System for providing a cluster-wide system clock in a multi-tiered full-graph interconnect architecture
US7921316B2 (en) 2007-09-11 2011-04-05 International Business Machines Corporation Cluster-wide system clock in a multi-tiered full-graph interconnect architecture
US7779148B2 (en) 2008-02-01 2010-08-17 International Business Machines Corporation Dynamic routing based on information of not responded active source requests quantity received in broadcast heartbeat signal and stored in local data structure for other processor chips
US20090198956A1 (en) * 2008-02-01 2009-08-06 Arimilli Lakshminarayana B System and Method for Data Processing Using a Low-Cost Two-Tier Full-Graph Interconnect Architecture
US8077602B2 (en) 2008-02-01 2011-12-13 International Business Machines Corporation Performing dynamic request routing based on broadcast queue depths
DE102008018951A1 (de) 2008-04-15 2009-10-22 Carl Zeiss Microimaging Gmbh Mikroskop mit Haltefokuseinheit
US8082426B2 (en) * 2008-11-06 2011-12-20 Via Technologies, Inc. Support of a plurality of graphic processing units
US8843682B2 (en) * 2010-05-18 2014-09-23 Lsi Corporation Hybrid address mutex mechanism for memory accesses in a network processor
US8417778B2 (en) 2009-12-17 2013-04-09 International Business Machines Corporation Collective acceleration unit tree flow control and retransmit
US9037907B2 (en) 2011-06-10 2015-05-19 International Business Machines Corporation Operator message commands for testing a coupling facility
US8799522B2 (en) 2011-06-10 2014-08-05 International Business Machines Corporation Executing a start operator message command
US8689240B2 (en) 2011-06-10 2014-04-01 International Business Machines Corporation Transmitting operator message commands to a coupling facility
US8560737B2 (en) 2011-06-10 2013-10-15 International Business Machines Corporation Managing operator message buffers in a coupling facility
US8918797B2 (en) 2011-06-10 2014-12-23 International Business Machines Corporation Processing operator message commands
US8745291B2 (en) 2011-10-04 2014-06-03 Qualcomm Incorporated Inter-processor communication apparatus and method
CN103186501A (zh) * 2011-12-29 2013-07-03 中兴通讯股份有限公司 一种多处理器共享存储方法及系统
US9304880B2 (en) * 2013-03-15 2016-04-05 Freescale Semiconductor, Inc. System and method for multicore processing
US9928117B2 (en) * 2015-12-11 2018-03-27 Vivante Corporation Hardware access counters and event generation for coordinating multithreaded processing
US10437748B1 (en) * 2015-12-29 2019-10-08 Amazon Technologies, Inc. Core-to-core communication
US10042677B2 (en) * 2016-05-25 2018-08-07 Bank Of America Corporation Maintenance conflict tool
US10963183B2 (en) * 2017-03-20 2021-03-30 Intel Corporation Technologies for fine-grained completion tracking of memory buffer accesses
CN107342853B (zh) * 2017-05-25 2019-12-06 兴唐通信科技有限公司 一种低交互开销的计数器同步方法
CN109214616B (zh) 2017-06-29 2023-04-07 上海寒武纪信息科技有限公司 一种信息处理装置、系统和方法
CN113468096A (zh) * 2017-06-26 2021-10-01 上海寒武纪信息科技有限公司 数据共享系统及其数据共享方法
WO2019001418A1 (zh) 2017-06-26 2019-01-03 上海寒武纪信息科技有限公司 数据共享系统及其数据共享方法
CN109426553A (zh) 2017-08-21 2019-03-05 上海寒武纪信息科技有限公司 任务切分装置及方法、任务处理装置及方法、多核处理器
CN110413551B (zh) 2018-04-28 2021-12-10 上海寒武纪信息科技有限公司 信息处理装置、方法及设备
JP7407653B2 (ja) 2020-04-27 2024-01-04 株式会社平和 遊技機
US11842056B2 (en) * 2021-10-25 2023-12-12 EMC IP Holding Company, LLC System and method for allocating storage system resources during write throttling

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4916658A (en) * 1987-12-18 1990-04-10 International Business Machines Corporation Dynamic buffer control
US5584037A (en) * 1994-03-01 1996-12-10 Intel Corporation Entry allocation in a circular buffer
DE69525531T2 (de) * 1995-09-04 2002-07-04 Hewlett Packard Co Dataverarbeitungssystem mit ringförmiger Warteschlange in einem Seitenspeicher
US5729765A (en) * 1995-12-07 1998-03-17 Samsung Electronics Co., Ltd. Method and apparatus for determining the status of a shared resource
US5951657A (en) * 1996-06-19 1999-09-14 Wisconsin Alumni Research Foundation Cacheable interface control registers for high speed data transfer
US5915128A (en) * 1997-01-29 1999-06-22 Unisys Corporation Serial speed-matching buffer utilizing plurality of registers where each register selectively receives data from transferring units or sequentially transfers data to another register
US6173307B1 (en) * 1998-08-20 2001-01-09 Intel Corporation Multiple-reader multiple-writer queue for a computer system
US6212543B1 (en) * 1998-12-10 2001-04-03 Intel Corporation Asymmetric write-only message queuing architecture
US6389489B1 (en) * 1999-03-17 2002-05-14 Motorola, Inc. Data processing system having a fifo buffer with variable threshold value based on input and output data rates and data block size
US6606666B1 (en) * 1999-11-09 2003-08-12 International Business Machines Corporation Method and system for controlling information flow between a producer and a buffer in a high frequency digital system
EP1182543B1 (en) * 2000-08-17 2005-08-24 Texas Instruments Incorporated Maintaining remote queue using two counters in transfer controller with hub and ports
US6424189B1 (en) * 2000-10-13 2002-07-23 Silicon Integrated Systems Corporation Apparatus and system for multi-stage event synchronization
KR100484134B1 (ko) * 2002-02-16 2005-04-18 삼성전자주식회사 선입선출기를 이용한 비동기 데이터 인터페이스 장치

Also Published As

Publication number Publication date
WO2003005196A2 (en) 2003-01-16
WO2003005219A2 (en) 2003-01-16
JP2004534323A (ja) 2004-11-11
EP1405175A2 (en) 2004-04-07
WO2003005219A3 (en) 2003-06-05
WO2003003232A3 (en) 2004-03-18
CN100533370C (zh) 2009-08-26
JP2004531002A (ja) 2004-10-07
US20040153524A1 (en) 2004-08-05
JP2004522233A (ja) 2004-07-22
EP1405184A2 (en) 2004-04-07
WO2003003232A2 (en) 2003-01-09
US20040193693A1 (en) 2004-09-30
DE60215007D1 (de) 2006-11-09
DE60215007T2 (de) 2007-05-03
EP1405175B1 (en) 2006-09-27
EP1421506A2 (en) 2004-05-26
CN1522402A (zh) 2004-08-18
ATE341027T1 (de) 2006-10-15
CN1522405A (zh) 2004-08-18
WO2003005196A3 (en) 2004-01-15

Similar Documents

Publication Publication Date Title
CN1531684A (zh) 数据处理器及运行数据处理器的方法
CN100454280C (zh) 处理器系统,dma控制电路,dma控制方法,dma控制器用控制方法,图形处理方法和图形处理电路
CN1256681C (zh) 从外围设备向主计算机系统传输中断的方法和装置
HU219533B (hu) Multimédia számítógéprendszer, valamint eljárás multimédia számítógéprendszer működésének vezérlésére
JP5895840B2 (ja) マルチプロセッサシステム、実行制御方法、実行制御プログラム
JP2001142842A (ja) Dmaハンドシェークプロトコル
CN1991768A (zh) 与不同种类的资源通信的基于指令系统结构的内定序器
US20070180161A1 (en) DMA transfer apparatus
CN1623131A (zh) 具有安全装置直接连接以增加安全性的嵌入式处理器
JP2009277096A (ja) Dma制御システム、印刷装置、および転送指示プログラム
JP2021022379A (ja) ハードウェアアクセラレータの自律ジョブキューイングシステム
CN110046114B (zh) 基于pcie协议的dma控制器及dma数据传输方法
JP2004192619A (ja) マルチプロセッサ・システムでのマイクロプロセッサ通信の方法、処理ユニット、およびデータ処理システム
CN116089049B (zh) 基于异步并行i/o请求的进程同步调度方法、装置以及设备
US7552269B2 (en) Synchronizing a plurality of processors
JP2010152837A (ja) バッファ装置
JP2006079394A (ja) データ処理装置
CN114637594A (zh) 多核处理设备、任务分配方法、装置及存储介质
JP2011059787A (ja) ディジタルシグナルプロセッサシステムおよびディジタルシグナルプロセッサの立ち上げ方法
JP2021086506A (ja) システム、及びプログラマブルシーケンサ
CN116383134B (zh) 多核片上网络评测的踪迹生成方法、系统、设备及介质
WO2009004628A2 (en) Multi-core cpu
JP2013114483A (ja) ディジタルシグナルプロセッサシステムおよびディジタルシグナルプロセッサシステムにおける割込み処理方法
JP2007179286A (ja) 記憶装置および情報処理装置
JPH06131294A (ja) データ転送装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication