CN1099078C - 在多处理器系统中的处理器之间传送消息的方法与装置 - Google Patents

在多处理器系统中的处理器之间传送消息的方法与装置 Download PDF

Info

Publication number
CN1099078C
CN1099078C CN96196279A CN96196279A CN1099078C CN 1099078 C CN1099078 C CN 1099078C CN 96196279 A CN96196279 A CN 96196279A CN 96196279 A CN96196279 A CN 96196279A CN 1099078 C CN1099078 C CN 1099078C
Authority
CN
China
Prior art keywords
inbound
message
idle
formation
memory storage
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
CN96196279A
Other languages
English (en)
Other versions
CN1193410A (zh
Inventor
B·达维斯
W·T·福拉尔
E·加尔布斯
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 CN1193410A publication Critical patent/CN1193410A/zh
Application granted granted Critical
Publication of CN1099078C publication Critical patent/CN1099078C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/12Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
    • G06F13/124Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine
    • G06F13/126Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine and has means for transferring I/O instructions and statuses between control unit and main processor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4027Coupling between buses using bus bridges
    • G06F13/405Coupling between buses using bus bridges where the bridge performs a synchronising function
    • G06F13/4059Coupling between buses using bus bridges where the bridge performs a synchronising function where the synchronisation uses buffers, e.g. for speed matching between buses

Abstract

一种消息单元(210)提供主处理器与处理I/O平台中的I/O操作的本地处理器之间的硬件队列接口。电路(214)管理入站空闲队列、入站邮件队列、外出空闲队列及外出邮件队列的头与尾指针。还提供了电路用于使主处理器或总线代理能通过读或写入站端口寄存器或外出端口寄存器而在单个总线事务中存取这些队列。队列元素包含消息缓冲器的句柄。本发明自动执行定位队列中下一元素、改变该元素及为下一次队列存取修改队列描述符(即头或尾指针)以指示下一元素的特定任务。当主处理器、总线代理或本地处理器之一写队列时,利用多个寄存器来有选择地中断主处理器或本地处理器。

Description

在多处理器系统中的处理器之间 传送消息的方法与装置
本发明涉及多处理器系统领域。更具体地,本发明涉及在多处理器系统中的处理器之间传送消息的方法与装置。
消息只是用来传送操作参数与数据的数据结构。消息是由在一个或多个平台上执行的一个或多个进程(即应用)生成的。平台包含一个处理器或处理器簇、关联的存储器、局部存储器总线及存储器输入/输出总线。平台内的这些元件构成一个操作环境。
再者,平台执行操作系统的一单个实例。换言之,计算机系统为分布式处理系统,在其中单一的操作系统支持多个处理器。在一个特定平台上的进程之一生成消息之后,便将它送至另一处理器平台供处理。
一则消息可用指向驻留在存储器中的控制块的指针指示,控制块中包含指令及指向附加信息数据块的其它指针。例如,控制块可指定特定的外围设备(即,硬盘驱动器),并请求从该设备的指定扇区读取数据。
在“紧耦合”(即处理器共用单个高速缓冲存储器)的处理器的对称多处理器系统(SMP)及在用公用总线结构将处理器“松”耦合在一起的不对称多处理器系统中的处理器之间利用消息传递。
当将消息从第一平台中的一个处理器传递给第二平台中的第二处理器时,消息必须排队以便消息指向的处理器在其资源空闲时可处理该消息。
对消息进行排队的先有技术方法主要采用软件技术实现。这些方法需要对共享的队列结构进行多次原子访问。例如,在单一处理器上运行的多个进程可共用位于由这些处理器共用的存储器中的一个消息队列。进程之一为了得到原子访问,操作系统授予请求存取队列的进程一个给予该进程对队列独享权(即原子访问)的信号。信号只是给予进程对共享数据结构(即操作系统上下文的一部分)的独享存取的操作系统变量。这时进程便可在队列上增加或删除消息。当一个特定的进程控制该信号时,它便封锁要求存取该队列的其它进程。其它进程在可以获得对该共享结构的存取之前必须等待第一进程释放该信号。
在多处理器系统中,一个以上的处理器可能同时试图得到对该信号的存取。从而,为了同步(即原子访问)需要总线封锁。当一个处理器将总线封锁时,另一处理器便不能存取存储器中的同一共享结构(即存储器块)直到第一处理器解锁总线为止。由于信号是在系统存储器中的,即使其它处理器没有在争用信号时也将它们封锁。因此,在能被挂起的软件模块中(即多任务操作系统)永远不能使用总线封锁。作为替代,当在这些应用中得到与释放信号时,便需要对操作系统核心的调用。
由于在等待信号或等待总线存取时各进程花费在空闲上的时间量,上述操作非常低效。再者,上述对操作系统核心的调用导致昂贵的上下文切换。
上下文只是专用于一个应用的存储区(即应用代码与数据)。应用上下文包括标志、变量及当前进程状态。由于信号是在与应用上下文不同的上下文(即操作系统上下文)中的一个操作系统变量,系统资源对切换上下文是必须的。例如,在改变数据指针的上下文切换中,将指针压到栈上并且还修改进程控制参数。
不具有总线封锁能力的先有技术计算机系统采用高度复杂的算法来提供处理器之间的同步。在这些系统中,进一步降低了性能。
从而,存在着对不用信号而允许高效地直接存取队列的方法与装置的需求。
本发明涉及用于在多处理器系统中的处理器之间传送消息的方法与装置。本方法与装置允许不对称多处理器系统中的处理器之间的消息通信。不对称多处理器系统只是其中的处理器并发执行不同操作系统的系统。例如,应用平台上的应用处理器正在运行诸如Windows NTTM等标准应用操作系统软件。然而,I/O平台上的处理器则正在运行适用于I/O操作的特定操作系统(诸如,实时操作系统:RTOS)。具体地,本发明提供一个快速与直接的机制,用于从在一个或多个处理器平台上执行的一个或多个进程将消息排队到包含一个本地处理器的平台上。
本发明提供将消息缓冲器分配给其它平台的入站空闲队列(inbound free queue)、及投送来自I/O平台外部的处理器与总线代理的消息的入站(inbound)工作队列。此外,本发明提供投送从本地处理器(即I/O平台的处理器)到另一处理器平台(即主处理器)的消息而使其它平台上的处理器能检索这些消息的外出工作队列(outbound work queue)。本发明还提供主处理器能将消息缓冲器释放到其中的外出空闲队列(outbound free queue)。这一队列在主处理器处理过消息之后将消息缓冲器释放给本地处理器。
本发明用在主平台与I/O平台之间提供非常快速与高效的硬件队列接口的消息单元来管理这些队列。本发明在单个PCI总线事务周期中能提供空闲消息缓冲器或“空”指示器(即读消息单元中的寄存器)。再者,本发明能在单个PCI总线事务中投送或检索消息或“满”指示器(即写入到消息单元中的寄存器)。
用硬件接口管理队列,本发明提供了超过先有技术软件队列管理技术的若干优点。首先当进程试图在满或空队列上执行队列操作时,本发明避免了死锁或锁定。在检测到试图从空表或队列中取时,本发明的消息单元很快返回一个空指示。类似地,当检测到试图投送到满队列时,本发明很快返回特定队列是满的指示。能用最少的硬件资源高效地实现本发明。
再者,由于本发明在单个总线事务处理周期中执行队列存取,便消除了同步(即取得与释放信号)的必要性,并明显地改进了系统性能。队列存取只是在队列上加上一个元素或从队列上去掉一个元素。队列存取可包含定位下一元素、改变该元素及修改一个队列描述符以为下一次队列存取指示下一元素等特定任务。本发明是自动执行这些任务的。正在进行这些任务期间,必须封锁队列使得另一进程不能获得同一消息缓冲器或改写另一消息。本发明在一次总线事务中提供队列存取得益于单个PCI总线事务内在地是原子的这一事实(即执行该事务的总线代理的独占存取)。再者,本发明通过就绪与重试信号自动处理同步。
再者,由于本发明排除了对信号的需求,冻结系统资源的上下文切换不再必要。由于对消息传送单元中的寄存器单一的读或写是存取一个特定队列所需要的,并且读或写可在一个总线事务处理中完成,因此信号不再需要。
在附图的图中以示例方式而不是限制方式展示本发明,附图中相同的参照指示相同元素,附图中:
图1展示实现本发明的不对称多处理器计算机系统的方框图;
图2展示包含本发明的I/O平台;
图3展示本发明的一个实施例;
图4展示本发明的循环队列;
图5进一步展示本发明的循环队列操作;
图6A展示本发明的入站空闲状态机;
图6B展示用于入站空闲状态机的状态图;
图7A展示本发明的入站投递状态机;
图7B展示入站邮件状态机的状态图;
图8A展示本发明的外出检索状态机;
图8B展示外出检索状态机的状态图;以及
图9A展示本发明的外出释放状态机;与
图9B展示外出释放状态机的状态图。
图1展示实现本发明的多处理器计算机系统的方框图。多处理器系统100包括主处理器102。主处理器102可包含多个处理器(即紧耦合处理器簇)。主处理器102通过主总线103耦合在主存储器104上。存储器总线103还将主处理器102与存储器104耦合到主芯片组105上。主芯片组105包含存储器控制器、高速缓冲存储器控制器及提供存储器总线103与输入/输出(I/O)总线106(诸如PCI总线)之间的接口的桥。
主芯片组105是本技术中已知的。例如,当主处理器102为Intel制造的PentiumTM处理器时,适当的主芯片组105为也是Intel制造的TridentTM芯片组。类似地,如果采用的是P6TM处理器,则适当的主芯片组105为也是Intel制造的OrionTM芯片组。在这一多处理器系统100中,主处理器102、存储器总线103、主存储器104及主芯片组105将称作主平台。
多处理器系统100还包括耦合在第一PCI总线106上的I/O平台108。再者,  I/O平台108提供第一PCI总线106的地址空间与包含在I/O平台108中的处理器的地址空间之间的接口。I/O平台108还可包含将第一PCI总线106耦合到第二PCI总线(未示出)上的桥。
I/O平台108还为主处理器提供I/O支持,以及耦合在第一PCI总线106与第二PCI总线上的设备(未示出)。关于I/O平台108的一个实例,请参见转让给Intel公司的有关申请。图2更详细地展示包含本发明的I/O平台200(前面在图1中称作元件108)。I/O平台200包含经由本地总线204通过存储器控制器205耦合在本地存储器206上的本地处理器202。本地处理器202可以是Intel 80960JF处理器。
地址翻译单元(ATU)218耦合在本地总线204及第一PCI总线208(前面在图1中称作元件106)上。地址翻译单元(ATU)218将PCI总线208的地址空间中的地址翻译成处理器202地址空间中的地址,反之亦然。从而,具有PCI地址空间中的地址的PCI总线208上的事务必须翻译成本地总线204地址空间,以便存储器控制器205可存取本地存储器206中的正确单元或MU210中的适当寄存器212。
ATU218包含外出模块用于将本地总线事务翻译成PCI总线事务、入站模块用于将PCI总线事务翻译成本地总线事务及控制状态机用于管理这一地址翻译。对于本发明而言,可将ATU218看成地址解码器,它检测特定的PCI总线事务存取MU210中的寄存器212之一。ATU218检测到一个事务为对MU210中的寄存器之一的存取之后,便通过数据路径221发送一个信号来启动MU210中的控制状态机,这将在后面描述。控制状态机214通过数据路径221发送多个信号到ATU218,通知ATU218 MU210未准备好接收该事务,或者指示ATU218向提出请求的进程发出重试信号。
本地总线仲裁器240将本地总线204的控制授权给本地总线主中任何一个(即MU210、ATU218的入站模块及本地处理器202)。仲裁电路240是本技术中周知的。
为通过数据路径224与225对本地存储器206的存取设置了存储器控制器205。虽然已示出本地总线204为单一数据路径,但本地总线204可由地址部分与数据部分构成。
总线代理201可以是主处理器或另一I/O平台。再者,总线代理201可包括图1中的主存储器104、主处理器102、主芯片组105及主总线103。换言之,总线代理201本身可以是一个子系统或任何智能总线代理。
消息单元210耦合在本地总线204及ATU218上。MU210实现本发明的教导并包含多个寄存器212及多个状态机214。下面参照图3进一步描述这些寄存器212及状态机214。
图3展示实现在MU210中的本发明。MU210包含通过控制路径350耦合在ATU218上的多个状态机214。MU210还包含多个预取与临时寄存器332。这些寄存器332通过数据路径336耦合在ATU218上。预取与临时寄存器332还通过数据路径352受控制状态机214的控制。寄存器332还通过数据路径334耦合在本地总线204上以存取本地存储器206。
在本实施例中,MU210包含利用四个循环队列的消息传递方案。在本实施例中有四个预取与临时寄存器332。装置了两个寄存器以允许主处理器将数据写入循环队列。设置了两个寄存器以允许主处理器从循环队列之一读取数据。
MU210还包括通过数据路径342耦合在控制状态机214上的多个队列指针寄存器340。这些寄存器中存储队列207的头与尾指针。下面相对于图4与5更详细地描述这些队列。循环队列
MU210向总线代理201提供对四个循环队列207的存取。其中两个为入站队列及两个为外出队列。“入站”与“外出”是指活跃消息的流动方向。“入站”消息为对于本地处理器202由总线代理201向进程投送的新消息或者可供总线代理201使用的空的或空闲的消息缓冲器。“外出”消息为对于主处理器201由本地处理器202投送的消息或者是本地处理器202可使用的空闲缓冲器。
在一个实施例中,有四个循环队列用来在主处理器/总线代理201与本地处理器202之间传递消息。有两个入站队列用来处理入站消息,及两个外出队列用来处理外出消息。将入站队列之一指定为空闲队列,并且它包含入站空闲消息句柄。消息句柄为消息缓冲器的逻辑或物理地址。将另一入站队列指定为邮件或工作队列,并且它包含入站投送的消息句柄。类似地将外出队列之一指定为空闲队列,并将另一外出队列指定为邮件队列。
两个外出队列允许本地处理器202将外出消息投送在邮件队列中及接收从外部主处理器201返回的释放的消息到外出空闲队列中。两个入站队列允许总线代理201从入站空闲队列得到空闲消息缓冲器,并随后投送该缓冲器给入站空闲队列供本地处理器202处理。
循环队列207的数据存储器是由本地存储器206提供的。在本特定实现中,队列中的各项为一作为消息句柄的32位数据值。再者,对队列的读或写可正好存取一个队列项。
各循环队列具有一个头指针与一个尾指针。对队列的写发生在队列的头上而读则发生在尾上。头与尾指针由运行在本地处理器202上的软件或消息单元210递增。稍后描述关于本地处理器202及MU210如何增量头与尾指针的细节。
头与尾指针为各相应循环队列中的偏移量并在0到循环队列大小减一的范围内(即用0开始标记指针)。这些指针是在每次队列存取之后递增的。头与尾指针在它们到达队列大小(即队列尾部)时卷动回到0。
消息单元210在某些条件下生成对本地处理器202的中断或生成PCI总线中断(即对外部处理器的中断)。通常,在写入邮件队列时,生成的中断通知目标处理器已投送了消息。
在一个实施例中,各循环队列的大小可在16千字节(4096个句柄)到256千字节(65536个句柄)的范围之内。再者,在这一实施例中,全部四个队列大小相同并且是邻接的。从而循环队列所需的本地存储器的总量在64千字节到一兆字节之间。这一队列常驻在本地存储器206中,而队列的头与尾指针则位于MU210的寄存器中。队列大小是由消息单元配置寄存器(MUCR)中的队列大小字段确定的。表1中示出了MUCR的一种可能格式。在实施例中全部四个队列还有一个基地址。各队列的起始地址是基于队列基地址与队列大小字段的。基地址存储在也位于MU210中的队列基地址寄存器(QBAR)中。表2中示出QBAR的一种可能格式。要在图6-9中示出的实施例包含每一个队列一个独立的基地址。
                               表1
                               MU配置寄存器-MUCR
  位   默认值   读/写     描述
  31:05   0000000H   只读     保留
  04:00   000002   读/写   队列大小-这一字段确定各循环队列的大小。全部四个队列大小相同。
                                  表2
                       队列基地址寄存器-QBAR
    位   默认值   读/写     描述
    31:20   000H   读/写 队列基地址-循环队列的本地存储器地址。
    19:00     00000H     只读     保留
图4示出本发明的四个循环队列。其中有两个外出队列410与420及两个入站队列430与440,都位于本地存储器206中。
本地处理器202通过写入外出邮件队列420的头而投送外出消息422。主处理器201通过从外出邮件队列420的尾读取而从外出邮件队列420中检索所投送的消息。
主处理器201通过写入外出空闲队列410的头而释放外出消息缓冲器412。本地处理器202从外出空闲队列410的尾读取空闲消息缓冲器414。
主处理器或总线代理201通过写入入站邮件队列430的头而投送入站消息432到入站邮件队列430中。本地处理器202从入站邮件队列430的尾读这些投送的消息。当主处理器写入入站邮件队列430时便在436生成一个中断到本地处理器202。
当本地处理器202将消息投送到外出邮件队列420时,便生成中断426到主处理器201。这里可采用PCI总线规范版本2.0所规定的中断。
本地处理器202通过写入这一队列440的头而将空闲消息缓冲器442返回给入站空闲队列440。主处理器/总线代理201以通过数据路径444从入站空闲队列440的尾读取而获得空闲消息缓冲器。
图5示出外出空闲队列510、外出邮件队列520、入站邮件队列530及入站空闲队列540。外出空闲队列
外出空闲队列(OFQ)510中保存总线代理201放置在那里(即释放的)的空消息的句柄供本地处理器202使用。主处理器201通过写入外出队列端口516中的寄存器而将消息缓冲器释放给OFQ510。本地处理器202从队尾读取OFQ510,并由主处理器201将其写入队列头。消息单元210维护头指针(OFHP)512。而在本地处理器202上运行的软件则维护外出空闲队列尾指针(OFTP)514。
对于存取外出队列端口516的PCI写事务,MU210将消息句柄(即,空闲消息缓冲器的地址)写入本地存储器206中由头指针(OFHP)512指向的单元,头指针512存储在外出空闲头指针寄存器(OFHPR)926中。本地存储器地址为队列基地址寄存器+3×队列大小+外出空闲头指针寄存器(OFHPR)926。表3中示出OFHPR的一种可能格式。
当将写入外出队列端口516的数据写入本地存储器206时,MU210便增量OFHP512。
从MU210接收到PCI写事务时起直到将数据写入本地存储器206并增量了OFHP512为止,通过插入等待状态延迟试图存取入站队列端口516的任何PCI事务。如果在插入等待状态时出现PCI等待时间扰乱,便向外部PCI代理发出重试信号。
本地处理器202通过读取外出空闲队列尾指针(OFTP)514指向的本地存储器单元,从OFQ510中检索消息缓冲器句柄。本地存储器地址为队列基地址寄存器+3×队列大小+外出空闲尾指针寄存器(OFTPR)438。表4中示出OFTPR的一种可能格式。然后,本地处理器202增量外出空闲尾指针寄存器938(图9A中所示)中的OFTP514。
                              表3
                        外出空闲头指针寄存器-OFHPR
    位   默认值   存取                 描述
    31:19     0000H   只读 保留
    18:02     0000H   读/写 外出空闲头指针-外出邮件队列的头指针的本地存储器偏移量。
    01:00     002   只读 保留
                                表4
                       外出空闲尾指针寄存器-OFTPR
  位   默认值   存取 描述
  31:19     0000H   只读 保留
  18:02     0000H   读/写 外出空闲尾指针-外出空闲队列的尾指针的本地存储器偏移量。
  01:00     002   只读 保留
外出邮件队列
外出邮件队列(OPQ)520中存储本地处理器放置在那里的所投送的消息,供主处理器201检索与处理。主处理器201通过读取外出队列端口516中的寄存器从OPQ520中检索消息。本地处理器202通过写入队列头来增加到OPQ520中。本地处理器202维护头指针(OPHP)522。消息单元210维护尾指针(OPTP)524。
对于存取外出队列端口516的PCI读事务,MU210预取由OPTP524指向的本地存储器单元中的数据。本地存储器地址为队列基地址寄存器+2×队列大小+外出邮件尾指针寄存器(OPTPR)826(如图8A中所示)。如果OPQ520不空(即头522与尾指针524不等),便向请求处理器201提供一个消息句柄。如果OPQ520为空(即头522与尾指针524相等),便向请求处理器201提供-1(FFFF.FFFFH)的值。如果OPQ520队列不空且MU210进行在尾上预取数据,MU210便增量OPTPR826中的尾指针(OPTR)524。
如上所述,如果头522与尾524指针相等(即OPQ520为空),预取机制便在预取寄存器806(下面将参照图8A进一步描述)中加载值-1(FFFF.FFFFH)。当将消息加入OPQ520而它成为不空时,为了更新ORR806,如果ORR806包含FFFF.FFFFH,MU210中的预取机制便自动起动预取,并由本地处理器202写入外出邮件头指针寄存器(OPHPR)422。表5中示出OPHPR的一种可能格式。当本地处理器202加入消息到OPQ520中时,本地处理器202更新OPHPR422。
从一个外部总线代理201的观点,预取必须呈现为原子的。在起动了预取时,试图存取外出队列端口516中的外出检索寄存器806(下面参照图8A描述)的任何PCI事务都被插入等待状态所延迟,直到完成预取为止。如果在插入等待状态中出现总线等待时间扰乱,便以重试信号通知该外部总线代理201。
在OPHP522不等于OPTP524时,便对主处理器201生成PCI中断。当OPHP522与OPTP524相等时,不生成中断。外出门铃寄存器中的外出邮件队列中断位表示OPHPR838与OPTPR828中的值的比较情况。当头522与尾524指针相等时,将中断清除。这出现在主处理器201读取足够的队列项而清空OPQ520时。中断可被外出门铃屏蔽寄存器所屏蔽,该寄存器受软件控制。
本地处理器202可通过将数据写入由头指针(OPHP)522所指的本地存储器单元而将消息放入OPQ520中。本地存储器地址为队列基地址寄存器+外出邮件头指针寄存器838。表6中示出OPTPR的一种可能格式。然后,本地处理器202增量外出邮件头指针寄存器838中的OPHP522。
                                       表5
                           外出邮件头指针寄存器-OPHPR
    位   默认值   存取                 描述
    31:19   0000H   只读 保留
    18:02   0000H   读/写 外出邮件头指针-外出邮件队列的头指针的本地存储器偏移量。
    01:00   002   只读 保留
                                      表6
                      外出邮件尾指针寄存器-OPTPR
    位   默认值   存取               描述
    31:19   0000H   只读 保留
    18:02   0000H   读/写 外出邮件尾指针-外出邮件队列的尾指针的本地存储器偏移量。
    01:00   002   只读 保留
入站邮件队列
入站邮件队列(IPQ)530保存总线代理201放置在那里的所投送的消息的句柄,供本地处理器202处理。主处理器201或总线代理通过写入入站队列端口536中的寄存器而投送消息给IPQ530。本地处理器202从队列尾开始读IPQ530,而由外部总线代理201将之写入队列头。尾指针(IPTP)534由在本地处理器202上运行的软件维护。头指针(IPHP)532则由MU210维护。
对于存取入站队列端口(IQP)536的PCI写事务,MU210将数据写入由存储在入站邮件头指针寄存器(IPHPR)724(图7A中所示)中的IPHP532所指向的本地存储器单元。本地存储器地址为队列基地址寄存器+队列大小+入站邮件头指针寄存器(IPHPR)724。表7中示出IPHPR的一种可能格式。表8中示出IPTPR的一种可能格式。
当将要写入入站队列端口536的数据写入本地存储器206时,MU210便增量IPHPR724。当将数据写入本地存储器206并增量了IPHPR724时,MU210便对本地处理器202生成一个中断。通过设置入站门铃寄存器的入站邮件队列中断位而记录这一中断。该中断可被入站门铃屏蔽寄存器所屏蔽,该寄存器受软件控制。
                                表7
                        入站邮件头指针寄存器-IPHPR
    位   默认值   存取                 描述
    31:19   0000H   只读 保留
    18:02   0000H   读/写 入站邮件头指针-入站邮件队列的头指针的本地存储器偏移量。
    01:00   002   只读 保留
                                    表8
                      入站邮件尾指针寄存器-IPTPR
    位   默认值   存取                描述
    31:19   0000H   只读 保留
    18:02   0000H   读/写 入站邮件尾指针-入站邮件队列的尾指针的本地存储器偏移量。
    01:00   002   只读 保留
入站空闲队列
入站空闲队列540保存由本地处理器202放置在那里的空消息缓冲器的句柄,供总线代理201使用。主处理器201通过读入站队列端口536中的寄存器而被分配一个来自IFQ540的消息缓冲器。入站空闲队列540是由外部总线代理201从队尾读取,并由本地处理器202写入队列头的。头指针542由在本地处理器202上运行的软件维护。尾指针(IFTP)544则由MU210维护。
对于存取入站队列端口(IQP)536的PCI读事务,MU210在IFTP544指向的本地存储器单元中预取数据。本地存储器地址为队列基地址寄存器+存储尾指针的入站空闲尾指针寄存器(IFTPR)626。表10中示出IFTPR的一种可能格式。如果IFQ540不空(即头与尾指针不等),则为主处理器或总线代理的下一次存取提供IFTP544指向的数据。如果IFQ540为空(即头与尾指针相等),则向请求主处理器或总线代理提供-1的值(FFFF.FFFFH)。如果IFQS40不空,且MU210预取IFTP544指向的数据,MU210便增量入站空闲尾指针寄存器(IFTPR)626(如图6A中所示)中的指针的值。
为了缩短PCI读存取的等待时间,MU210实现预取机制来预测对IFQ540的存取。MU210从IFQ540尾部预取数据并将其加载到一个内部预取寄存器中。当PCI读存取出现时,便可从预取寄存器中直接读取数据。
如果头与尾指针相等(即IFQ540为空),预取机制便在预取寄存器中加载-1的值(FFFF.FFFFH)。为了在将消息加到IFQ540并且它成为不空时更新预取寄存器,如果预取寄存器包含FFFF.FFFFH,预取机制便自动起动预取,并写入入站空闲头指针寄存器(IFHPR)638。表9中示出IFHPR的一种可能格式。运行在本地处理器202上的软件在它加入消息到IFQ540中时更新IFHP542。
从外部总线代理201的观点,预取必须呈现为原子的。当起动预取时,试图存取入站队列端口536中的入站空闲寄存器的任何PCI事务都被插入等待状态延迟了,直到完成预取为止。如果在插入等待状态时出现PCI等待时间扰乱,MU210便向外部总线代理201发送重试信号。
本地处理器202可通过将数据写入头指针(IFHP)542指向的本地存储器单元而将消息放置在IFQ540中。本地存储器地址为队列基地址寄存器+入站空闲头指针寄存器(IFHPR)638。然后,运行在本地处理器202上的软件增量IFHPR638。入站空闲表
                           表9
                      入站空闲头指针寄存器-IFHPR
    位   默认值   存取                   描述
    31:19   0000H   只读 保留
    18:02   0000H   读/写 入站空闲头指针-入站空闲队列的头指针的本地存储器偏移量。
    01:00   002   只读 保留
                                   表10
                       入站空闲尾指针寄存器-IFTPR
    位   默认值   存取                 描述
    31:19   0000H   只读 保留
    18:02   0000H   读/写 入站空闲尾指针-入站空闲队列的尾指针的本地存储器偏移量。
    01:00   002   只读 保留
图6A示出实现在MU210中的本发明如何将空闲消息缓冲器分配给PCI总线上的总线代理。数据从位于本地存储器206中的入站空闲队列(IFQ)540通过本地数据总线移动到入站空闲寄存器(IFR)606。在这一上下文中数据特指消息缓冲器地址(即信息句柄)而言。随后,数据从入站空闲寄存器606通过数据路径608行进到ATU218,并随后通过数据路径610到PCI总线208上的总线代理。
MU210包含入站空闲状态机612用于分配发布与接收若干控制信号的空闲消息缓冲器。下面将参照图6B进一步描述入站空闲状态机612的状态图。
为了向IFQ 602请求消息缓冲器,总线代理通过PCI总线208与数据路径610发送一个读事务到ATU218。ATU218检测到指定入站空闲寄存器606的读事务。一旦ATU218检测到总线代理要读入站空闲寄存器606,ATU便检验IFR_Ready(IFR就绪)信号614的状态。如果确定了IFR_Ready信号614,ATU便完成通过路径608将IFR606中的数据提供给ATU218的PCI事务并生成Read_Inbound_Free(读入站空闲)信号616到状态机612。
如果撤销IFR_Ready信号614(即状态机612未就绪),ATU218插入等待状态,并且在确定IFR_Ready信号614之前不发送Read_IFR(读IFR)616。如果在IFR606中仍有陈旧的数据(即状态机612尚未完成将数据预取到IFR606中),便撤销IFR_Ready信号614。
一旦状态机612接收到Read_IFR信号616,状态机612便发送Memory_Read_Request(存储器读请求)信号618到本地总线仲裁器240并撤销IFR_Ready信号614。在Grant(授权)信号632出现时,MU210简单地将适当的IFQ602的尾地址确立到本地地址总线630上。然后通过本地数据总线604将数据从本地存储器206传送到IFR606(即读取IFQ602尾部的值)。MU210包含计算IFQ602的适当尾地址的加法器624。加法器624生成入站空闲尾指针寄存器(IFTPR)626与入站空闲基地址寄存器(IFBR)628的内容之和。
在IFQ540的尾指针所指的数据在本地数据总线604上之后,状态机612便发送一个Latch(锁存)信号634将本地数据总线604上的数据锁存到IFR606中并发送一个Increment(增量)信号644到IFTPR626中。这样,便完成了下一可获得的消息缓冲器的预取。
MU210还包含比较入站空闲头指针寄存器(IFHPR)638中的值与入站空闲尾指针寄存器(IFTPR)626中的值的比较器636。如果这两个值相等,比较器636生成一个空信号640(即队列中没有空闲消息缓冲器)。将这一Empty(空)信号640送至状态机612而导致状态机612确立preset(预设)信号642。预设信号642导致将IFR606的内容设定在为空指示保留的预定值上(即不是有效的缓冲器地址)。
当总线代理读IFR606时,它立即存取IFR606中所存储的预取数据,或者指示IFQ602为空的预设值。
图6B示出入站空闲状态机612的状态图。状态机612具有三级:空650、预取652及起动(primed)656。状态机612是在空状态650中直到在654撤销Empty(空)信号为止。not_Empty(非空信号)将状态机650从空状态612转换到预取状态652,而状态机612发布Memory_Read Request(存储器读请求)信号618并撤销IFR_Ready信号614
在Grant信号632下状态机612从预取状态652转换到起动状态656。在接收到Grant信号632时,状态机612输出Latch_IFR(锁存IFR)信号634、Increment_IFTPR(增量IFTPR)信号644并确立IFR Ready(IFR就绪)信号614。在接收到Read_IFR(读IFR)信号616时,状态机612从起动状态656转换到预取状态652,并且不确立Empty信号654。这一转换还生成Memory_Read_Request(存储器读请求)信号618及撤销IFR_Ready信号614。
状态机612在接收到Read_IFR信号616时从起动状态656转换到空状态650,并确立Empty信号640。这一转换生成Preset(预设)信号642。
图7A示出本发明如何将总线代理生成的消息投送到位于本地存储器206中的入站邮件队列(IPQ)530中。
当总线代理要写入站邮件寄存器(IPR)706时,数据从PCI总线208通过数据路径702行进到ATU218,然后通过数据路径704到IPR706。将数据锁存进IPR706之后,便通过本地数据总线604将其传送到本地存储器206中的IPQ530中。
ATU218检测IPR_Ready信号716的状态。如果确立了IPR_Ready信号716,ATU218便通过供应数据给IPR706及生成一个Write_IPR(写IPR)信号718到状态机712而完成PCI事务。
如果未确立IPR_Ready信号716,ATU218插入等待状态,并在确立IPR_Ready信号716时完成PCI事务。除非违反PCI等待时间规则,请求进程保持对总线的控制并完成PCI事务。
ATU218还检验IPR_Retry(IPR重试)信号714的状态。如果确立了IPR_Retry信号714,便未完成PCI事务,而向请求进程发出重试信号,因此它将释放总线并在稍后的时间上再作尝试。
图7B中所示的状态图进一步示出了MU210的入站邮件状态机712。状态机712具有三种状态:空闲状态750、邮件状态752及满状态754。状态机752在ATU218确立Write_Inbound_Post(写入站邮件)信号718时将从空闲状态750转换到邮件状态752中。当状态机712接收到Write_Inbound_Post信号时,状态机712便生成Memory_Write_Request(存储器写请求)信号720并撤销IPR_Ready信号716。状态机712在接收到来自本地总线仲裁器240的Grant信号728时从邮件状态752转换回空闲状态750。在接收Grant信号728及写入IPR数据604到存储器中时,状态机712生成Increment(增量)信号740到入站邮件头指针寄存器(IPHPR)724,并且还确立IPR-Ready信号716。
状态机712在接收到来自比较器734的Full(满)信号738时从空闲状态750转换到满状态754。Full信号738是由比较器734在入站邮件尾指针寄存器(IPTPR)730与入站邮件头指针寄存器(IPHPR)724的内容表示入站邮件队列(IPQ)530为满时生成的。在接收到满信号738时,状态机712向ATU218确立IPR_Retry信号714。
状态机712在撤销Full信号时即not_Full(不满)时从满状态754转换到空闲状态750。在接收到not_Full(不满)信号时,状态机712便撤销IPR_Retry信号714。
比较器734还生成not_Empty(不空)信号736到向I/O处理器生成本地中断的中断生成逻辑(未示出)。在接收到not_Empty信号736时生成本地中断的逻辑是本技术中已知的。这一逻辑还可包含中断寄存器及由软件控制的有选择地屏蔽掉中断的屏蔽寄存器。
Increment(增量)信号740被送至IPHPR 724并增量入站邮件头指针。加法器722利用IPHPR724的值725与IPBR726的值727计算新的入站头指针723。将这一地址723送至存储器控制器205以便通过本地总线(即本地地址总线630)存取本地存储器。
如上所述,MU210在本地地址总线630上确立地址723并启动将锁存在IPR706中的数据(即消息缓冲器的地址)传送到IPQ530的头上。
图8A示出外出检索状态机812及本发明如何允许主处理器或总线代理检索来自外出邮件队列520(OPQ)的所投送的消息的。当主处理器或总线代理检索所投送的信息句柄时,数据(即消息缓冲器的地址)通过本地数据总线604从位于本地存储器206中的OPQ520行进到外出检索寄存器(ORR)806。然后通过数据路径808将数据从ORR806传递给ATU218的外出部分。然后将数据通过经由PCI总线208的数据路径810传递给相应的主处理器或总线代理。状态机812撤销ORR_Ready(ORR就绪)814以指示ORR806中的陈旧数据。当撤销ORR_Ready信号814时,ATU218将插入等待状态直到确立表示ORR806包含有效数据的ORR_Ready信号814为止。
图8B中所示的状态图进一步示出MU210的外出检索状态机812。外出检索状态机具有三种状态:空850、预取852及起动856。在撤销Empty(空)信号840时,外出检索状态机从空状态850转换到预取状态852。作为响应,外出检索状态812确立Memory_Read_Request(存储器读请求)818到本地总线仲裁单元240并撤销ORR_Ready信号同时等待Grant信号832。在等待Grant信号832时,加法器824计算下一消息的地址(即尾指针),并将这一地址放置在本地地址总线630上。
在Grant信号832出现时状态机812从预取852转换到起动状态856。存储器控制器205利用地址825从OPQ520中读取适当的消息句柄。将这一消息句柄(即指针)放置在本地数据总线604上并传送给ORR806。然后状态机812生成一个Latch_ORR(锁存ORR)834将来自OPQ520的数据锁存到ORR806中并且还生成Increment_OFTPR信号844以增量存储在OPTPR826中的OPQ520的尾指针。完成了这一预取并将新数据锁存到ORR806中之后,状态机812确立一个ORR_Ready信号814以通知ATU218它已准备好去完成来自PCI总线208的另一事务。
在生成Read_ORR信号816时,状态机812从起动状态856转换到预取状态852,并撤销Empty信号840。作为响应,状态机812确立Memory_Read_Request(存储器读请求)信号818到本地总线仲裁器240并对ATU218撤销ORR_Ready信号814,使得以后的事务不读取ORR806的内容直到完成了预取。
状态机812在检测到当确立了空信号840时确立的Read_ORR信号时便从起动状态856转换到空状态850。作为响应,状态机812确立Preset(预设)信号842。Preset信号842导致将ORR806的内容设定到为空指示保留的值,从而向OPQ520请求读的事务将被通知OPQ520是空的。
在比较器836比较OPHPR838与OPTPR826的内容且值相等时,便确立Empty(空)信号840。非空OPQ520(即not_Empty)表示存在等待主处理器201处理的消息。本发明包含通过PCI总线规范发布2.0中规定的中断线路生成中断到主处理器201的逻辑(未示出)。
图9A与9B示出外出释放状态机912。主处理器201处理消息之后,便通过数据路径904经过PCI总线208将空闲消息缓冲器指针返回给ATU218并将其锁存在外出释放寄存器(ORLSR)906中。然后通过本地数据总线604将空闲消息缓冲器句柄从外出释放寄存器(ORLSR)送到外出空闲队列(OFQ)510。为了释放一个空闲消息缓冲器,主处理器201简单地在一个总线事务周期中将该空闲信息缓冲器的地址写入ORLSR906中即可。
ATU218检验ORLSR_Ready(ORLSR就绪)信号916及ORLSR_Retry(ORLSR重试)信号914的状态。如果撤销了ORLSR_Retry信号914,则未完成PCI事务(即写入ORLSR906)。向请求进程发出Retry信号,而请求进程释放总线的控制并在稍后时间重新尝试。如果撤销了ORLSR_Ready信号916,ATU218插入等待状态直到确立ORLSR_Ready信号916。在确立了ORLSR_Ready信号916时,ATU218生成Write_ORLSR(写ORLSR)信号918到状态机912并将数据锁存到ORLSR906中。
图9B示出外出释放状态机912的状态图。状态机912具有三种状态:满状态954、空闲状态950及邮件状态952。状态机912在比较器936确立满信号940时从空闲状态950转换到满状态954。响应这一满信号940,状态机912确立ORLSR_Retry(ORLSR重试)信号914到ATU218。在生成ORLSR_Retry信号914时,便向起动对ORLSR906的写事务的进程发出在稍后时间上重新尝试的信号。
状态机912在撤销满信号940时从满状态954转换到空闲状态950。如果外出空闲队列OFQ510不满,则状态机912撤销ORLSR_Retry信号914(即OFQ510中有用于额外的空闲消息句柄的空间)。
状态机912在收到来自ATU218的Write_ORLSR信号918时从空闲状态950转换到邮件状态952。Write_ORLSR信号918还起到将空闲消息句柄锁存到ORLSR906中的作用。响应Write_ORLSR信号918的确立,状态机912确立Memory_write_Request信号918到本地总线仲裁器240并等待来自仲裁器的Grant信号932。加法器925计算待写入下一空闲消息句柄的OFQ510中的下一位置。状态机912还撤销ORLSR_Ready信号916以防止随后的事务改写当前锁存在ORLSR906中的数据。
状态机912在收到来自本地总线仲裁器240的Grant信号932时从邮件状态952转换到空闲状态950。作为响应,外出释放状态机912通过Increment_OFHPR信号944增量OFHPR926中的头指针。状态机912还确立ORLSR_Ready(ORLSR就绪)信号916,向ATU218指示它已经存储了ORLSR906的内容并且已计算出要存储下一空闲消息句柄的OFQ地址,并已就绪对ORLSR906的下一次写入。
概言之,主处理器通过将空闲消息缓冲器的句柄写入ORLSR906中而发放空闲消息缓冲器给OFQ510。如果OFQ510是满的,便通知请求进程稍后重试。如果OFQ510不满,便将空闲消息缓冲器的句柄锁存到ORLSR906中。然后状态机912等待来自本地总线仲裁器240的Grant信号932以得到对本地总线的存取。一旦授于了对本地总线的控制,状态机912便将锁存在ORLSR906中的数据传送到在预计算的头指针/地址所指向的单元上的OFQ510。
这样,已描述了不用信号或总线封锁便能使远程进程分配消息缓冲器然后将该消息缓冲器投送给工作队列的方法与装置。
此外还描述了从工作队列中检索消息并在主处理器处理过该消息之后将其释放到空闲队列的方法与装置。
本发明还提供可伸缩性、灵活性及与其它平台的兼容性。例如,如前所述的包含进入消息队列的所有平台都能容易地发送处理器间消息。对于与并不实现入站消息队列的其它平台的兼容性,外出消息队列提供该平台以等效功能而无须修改平台的硬件。此外,本发明允许的抽象观念在于其它平台可同时使用一个平台的入站队列而无须表达在计算机系统中存在其它处理器的认识。
从而,本发明提供了以高度有效方式在处理器之间直接传递消息而无须对不对称多处理器系统中的处理器作硬件修改的方法与装置。
在上文中的说明书中,已参照其特定示范性实施例描述了本发明。然而显而易见可对其作出各种修正与改变而不背离所附权利要求书中所陈述的本发明的较广的精神与范围。从而,本说明书及附图应认为是示例性的而不是限制性的。

Claims (11)

1.一种通过本地总线耦合在本地处理器与存储器上,并通过第二总线进一步耦合在主处理器上的消息单元,所述消息单元包括:
a)入站空闲存储装置,用于存储由所述主处理器放入的空消息缓冲区的句柄,供所述消息单元之外的总线代理使用;
b)入站空闲电路装置,耦合在入站空闲存储装置上,用于在入站空闲存储装置中的数据上进行操作;
c)入站邮件存储装置,用于存储由所述消息单元之外的总线代理放入的所投递的消息的句柄,供所述主处理器处理;以及
d)入站邮件电路装置,耦合在入站邮件存储装置上,用于在外出空闲存储装置中的数据上进行操作。
2.权利要求1中所述的消息单元,还包括:
a)外出检索存储装置,存储存储由所述本地处理器放入的所投递的消息的句柄,供所述主处理器处理;
b)外出检索电路装置,耦合在该外出检索存储装置上,用于在外出邮件存储装置中的数据上进行操作;
c)外出释放存储装置,用于存储由所述消息单元之外的总线代理放入的空消息的句柄,供所述主处理器使用;以及
d)外出释放电路装置,耦合在该外出释放存储装置上,用于在外出空闲存储装置中的数据上进行操作。
3.权利要求1中所述的消息单元,其中该入站空闲电路装置在数据上的操作还包括在该入站空闲存储装置不空时从存储在该存储器中的该入站空闲存储装置中预取消息,在该入站空闲存储装置为空时用预定的值加载该入站空闲存储装置,以及在完成了预取操作时允许该主处理器读取该入站空闲存储装置;以及
其中该入站空闲电路装置在数据上的操作还包括检测该入站邮件存储装置是否为满,如果该入站邮件存储装置为满则返回一个重试信号给该主处理器,以及如果该入站邮件存储装置不满且已将存储在该入站邮件存储装置中的当前值存储进该入站邮件存储装置中时允许该主处理器写该入站邮件存储装置。
4.权利要求2中所述的消息单元,
其中该外出检索电路装置在数据上的操作还包括在该外出邮件存储装置不空时从该外出邮件存储装置中预取数据,如果该外出邮件存储装置为空时用预定值加载该外出检索存储装置,以及如果完成了预取时允许该主处理器读取该外出检索存储装置;以及
其中该外出释放电路装置在数据上的操作还包括检测该外出空闲存储装置是否为满,如果该外出空闲存储装置为满则返回一个重试信号给该主处理器,以及如果该外出空闲存储装置不满且已将该外出释放存储装置中的当前值存储进该外出空闲存储装置中时允许该主处理器写该外出释放存储装置。
5.权利要求2中所述的消息单元,其中该第二总线为PCI总线。
6.权利要求2中所述的消息单元,其中该存储装置为寄存器。
7.一种使主处理器能在一次总线事务中从存储在外出检索寄存器中的外出邮件队列中检索消息句柄的方法,所述队列是用一个尾指针与一个头指针定义的,所述方法包括下述步骤:
a)如果该消息句柄存储在该外出检索寄存器中,将该消息句柄返回给该处理器;
a1)检测该队列是否为空;
a2)如果该队列为空,将一个预置值存储在该外出检索寄存器中以指示该队列为空;
a3)如果该队列不空,则从该队列预取下一消息句柄,并将该消息句柄加载进该外出检索寄存器中;
b)否则,将存储在该外出检索寄存器中的该预置值返回给该主处理器以指示该队列为空。
8.权利要求7中所述的方法,其中预取下一消息句柄的步骤包括:
增量该队列的尾指针;
从该队列中读取数据;以及
将该数据锁存进一个预取寄存器中。
9.一种使主处理器在一次总线事务中将一个空闲消息句柄释放到一个队列的方法,所述队列用一个尾指针与一个头指针定义,所述方法包括下述步骤:
a)检测该队列是否为满;
b)如果该队列不满,则
b1)将该空闲消息写入一个外出释放寄存器中;
b2)通知本地总线仲裁器获得对本地总线的访问,并且预计算该头指针;
b3)在访问该本地总线时,将该寄存器中的该空闲消息释放到该队列中由该预计算的头指针指向的位置;
c)如果该队列为满,发信号通知该主处理器在稍后时间上重试。
10.一种使主处理器能在一次总线事务中从存储在入站空闲寄存器中的入站空闲队列中分配一个消息句柄的方法,所述队列是用一个尾指针与一个头指针定义的,所述方法包括下述步骤:
a)如果该消息句柄储存在该入站空闲寄存器中,将该消息句柄返回给该主处理器;
a1)检测该队列是否为空;
a2)如果该队列为空,将一个预置值存储在该入站空闲寄存器中以指示该队列为空;
a3)如果该队列不空,则从该队列预取下一消息句柄,并将该下一消息句柄加载进该入站空闲寄存器中;
b)否则,将存储在该入站空闲寄存器中的该预置值返回给该主处理器以指示该队列为空。
11.权利要求10中所述的方法,其中预取下一消息句柄的步骤包括:
增量该队列的尾指针;
从存储器中读数据;以及
将该数据锁存进预取寄存器中。
CN96196279A 1995-06-15 1996-06-17 在多处理器系统中的处理器之间传送消息的方法与装置 Expired - Fee Related CN1099078C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/490,651 US5925099A (en) 1995-06-15 1995-06-15 Method and apparatus for transporting messages between processors in a multiple processor system
US08/490,651 1995-06-15

Publications (2)

Publication Number Publication Date
CN1193410A CN1193410A (zh) 1998-09-16
CN1099078C true CN1099078C (zh) 2003-01-15

Family

ID=23948942

Family Applications (1)

Application Number Title Priority Date Filing Date
CN96196279A Expired - Fee Related CN1099078C (zh) 1995-06-15 1996-06-17 在多处理器系统中的处理器之间传送消息的方法与装置

Country Status (9)

Country Link
US (2) US5925099A (zh)
EP (1) EP0840935B1 (zh)
JP (1) JP3884073B2 (zh)
KR (1) KR19990022951A (zh)
CN (1) CN1099078C (zh)
AU (1) AU6180196A (zh)
DE (1) DE69636781D1 (zh)
HK (1) HK1010940A1 (zh)
WO (1) WO1997000533A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100538690C (zh) * 2006-04-10 2009-09-09 中国科学院研究生院 一种多cpu系统及cpu之间消息传递的方法

Families Citing this family (84)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5925099A (en) * 1995-06-15 1999-07-20 Intel Corporation Method and apparatus for transporting messages between processors in a multiple processor system
US5987590A (en) * 1996-04-02 1999-11-16 Texas Instruments Incorporated PC circuits, systems and methods
US6179489B1 (en) 1997-04-04 2001-01-30 Texas Instruments Incorporated Devices, methods, systems and software products for coordination of computer main microprocessor and second microprocessor coupled thereto
US5966547A (en) * 1997-01-10 1999-10-12 Lsi Logic Corporation System for fast posting to shared queues in multi-processor environments utilizing interrupt state checking
US6141701A (en) * 1997-03-13 2000-10-31 Whitney; Mark M. System for, and method of, off-loading network transactions from a mainframe to an intelligent input/output device, including off-loading message queuing facilities
US6477584B1 (en) * 1997-03-21 2002-11-05 Lsi Logic Corporation Message FIFO empty early warning method
US5909559A (en) * 1997-04-04 1999-06-01 Texas Instruments Incorporated Bus bridge device including data bus of first width for a first processor, memory controller, arbiter circuit and second processor having a different second data width
US6105119A (en) * 1997-04-04 2000-08-15 Texas Instruments Incorporated Data transfer circuitry, DSP wrapper circuitry and improved processor devices, methods and systems
JPH10307751A (ja) * 1997-05-09 1998-11-17 Hitachi Ltd 並列計算機におけるポインタ制御によるデータ転送装置
JPH11127148A (ja) * 1997-10-20 1999-05-11 Fujitsu Ltd 蓄積交換型電子会議システムにおける登録情報のリカバリ処理装置及び方法並びにリカバリ処理プログラムを記録した媒体
US6145007A (en) * 1997-11-14 2000-11-07 Cirrus Logic, Inc. Interprocessor communication circuitry and methods
US6145061A (en) * 1998-01-07 2000-11-07 Tandem Computers Incorporated Method of management of a circular queue for asynchronous access
US7007126B2 (en) * 1998-02-13 2006-02-28 Intel Corporation Accessing a primary bus messaging unit from a secondary bus through a PCI bridge
US6124868A (en) * 1998-03-24 2000-09-26 Ati Technologies, Inc. Method and apparatus for multiple co-processor utilization of a ring buffer
US5990910A (en) * 1998-03-24 1999-11-23 Ati Technologies, Inc. Method and apparatus for co-processing multi-formatted data
JP4236729B2 (ja) * 1998-05-07 2009-03-11 株式会社リコー データ処理装置
US6314501B1 (en) 1998-07-23 2001-11-06 Unisys Corporation Computer system and method for operating multiple operating systems in different partitions of the computer system and for allowing the different partitions to communicate with one another through shared memory
US6173307B1 (en) * 1998-08-20 2001-01-09 Intel Corporation Multiple-reader multiple-writer queue for a computer system
US7020712B1 (en) * 1998-09-30 2006-03-28 Cisco Technology, Inc. Reducing CPU overhead in the forwarding process in an inbound/outbound controller for a router
US6182182B1 (en) * 1998-10-28 2001-01-30 Adaptec, Inc. Intelligent input/output target device communication and exception handling
US6212543B1 (en) 1998-12-10 2001-04-03 Intel Corporation Asymmetric write-only message queuing architecture
US6209054B1 (en) 1998-12-15 2001-03-27 Cisco Technology, Inc. Reliable interrupt reception over buffered bus
US6256699B1 (en) * 1998-12-15 2001-07-03 Cisco Technology, Inc. Reliable interrupt reception over buffered bus
US6381663B1 (en) * 1999-03-26 2002-04-30 Hewlett-Packard Company Mechanism for implementing bus locking with a mixed architecture
NO312926B1 (no) * 1999-07-20 2002-07-15 Ericsson Telefon Ab L M Kommunikasjon over multimaster buss
US6976260B1 (en) * 1999-09-24 2005-12-13 International Business Machines Corporation Method and apparatus for serializing a message queue in a multiprocessing environment
US6772097B1 (en) * 1999-09-30 2004-08-03 Intel Corporation Retrieving I/O processor performance monitor data
US6918044B1 (en) 1999-10-15 2005-07-12 Cisco Technology, Inc. Password protection for high reliability computer systems
US6467049B1 (en) 1999-10-15 2002-10-15 Cisco Technology, Inc. Method and apparatus for configuration in multi processing engine computer systems
US6484224B1 (en) 1999-11-29 2002-11-19 Cisco Technology Inc. Multi-interface symmetric multiprocessor
US6609171B1 (en) * 1999-12-29 2003-08-19 Intel Corporation Quad pumped bus architecture and protocol
US6611882B1 (en) * 1999-12-31 2003-08-26 Intel Corporation Inbound and outbound message passing between a host processor and I/O processor local memory
GB2368247A (en) * 2000-10-18 2002-04-24 Power X Ltd Method and apparatus for regulating process state control messages
US6988160B2 (en) * 2001-02-12 2006-01-17 P-Cube Ltd. Method and apparatus for efficient messaging between memories across a PCI bus
US6836480B2 (en) * 2001-04-20 2004-12-28 International Business Machines Corporation Data structures for efficient processing of multicast transmissions
US6799217B2 (en) * 2001-06-04 2004-09-28 Fujitsu Limited Shared memory multiprocessor expansion port for multi-node systems
US6760817B2 (en) * 2001-06-21 2004-07-06 International Business Machines Corporation Method and system for prefetching utilizing memory initiated prefetch write operations
US7089555B2 (en) 2001-06-27 2006-08-08 International Business Machines Corporation Ordered semaphore management subsystem
US7454753B2 (en) * 2001-06-27 2008-11-18 International Business Machines Corporation Semaphore management subsystem for use with multi-thread processor systems
US6801976B2 (en) 2001-08-27 2004-10-05 Intel Corporation Mechanism for preserving producer-consumer ordering across an unordered interface
US7143414B2 (en) 2001-09-26 2006-11-28 International Business Machines Corporation Method and apparatus for locking multiple semaphores
US7406690B2 (en) * 2001-09-26 2008-07-29 International Business Machines Corporation Flow lookahead in an ordered semaphore management subsystem
US7054925B2 (en) * 2001-11-21 2006-05-30 International Business Machines Corporation Efficient method for determining record based I/O on top of streaming protocols
US20030110232A1 (en) * 2001-12-11 2003-06-12 International Business Machines Corporation Distributing messages between local queues representative of a common shared queue
US7290127B2 (en) * 2001-12-26 2007-10-30 Intel Corporation System and method of remotely initializing a local processor
US6813658B2 (en) * 2002-03-27 2004-11-02 Intel Corporation Dynamic data queuing mechanism for packet networks
US20040006636A1 (en) * 2002-04-19 2004-01-08 Oesterreicher Richard T. Optimized digital media delivery engine
US7899924B2 (en) * 2002-04-19 2011-03-01 Oesterreicher Richard T Flexible streaming hardware
US20040006635A1 (en) * 2002-04-19 2004-01-08 Oesterreicher Richard T. Hybrid streaming platform
US20040107240A1 (en) * 2002-12-02 2004-06-03 Globespan Virata Incorporated Method and system for intertask messaging between multiple processors
US7013355B2 (en) * 2003-01-09 2006-03-14 Micrel, Incorporated Device and method for improved serial bus transaction using incremental address decode
DE102004012516A1 (de) * 2004-03-15 2005-10-13 Infineon Technologies Ag Computersystem zur elektronischen Datenverarbeitung
JP4729570B2 (ja) * 2004-07-23 2011-07-20 ビーチ・アンリミテッド・エルエルシー トリックモードおよび速度移行
US20070276973A1 (en) * 2004-09-30 2007-11-29 Intel Corporation Managing queues
US8117620B2 (en) * 2005-03-21 2012-02-14 Intel Corporation Techniques for implementing a communication channel with local and global resources
EP1715405A1 (en) * 2005-04-19 2006-10-25 STMicroelectronics S.r.l. Processing method, system and computer program product for dynamic allocation of processing tasks in a multiprocessor cluster platforms with power adjustment
TWI340982B (en) * 2006-03-30 2011-04-21 Silicon Image Inc Multi-port memory device having variable port speeds
US9274859B2 (en) * 2006-05-25 2016-03-01 Nvidia Corporation Multi processor and multi thread safe message queue with hardware assistance
WO2008055272A2 (en) * 2006-11-04 2008-05-08 Virident Systems, Inc. Integrating data from symmetric and asymmetric memory
US20090248919A1 (en) * 2008-03-25 2009-10-01 Jerzy Szwagrzyk Method for external fifo acceleration
US8566930B2 (en) * 2009-02-27 2013-10-22 Science Applications International Corporation Monitoring module
US20100262979A1 (en) * 2009-04-08 2010-10-14 Google Inc. Circular command queues for communication between a host and a data storage device
US8745291B2 (en) * 2011-10-04 2014-06-03 Qualcomm Incorporated Inter-processor communication apparatus and method
US10157060B2 (en) 2011-12-29 2018-12-18 Intel Corporation Method, device and system for control signaling in a data path module of a data stream processing engine
US10331583B2 (en) 2013-09-26 2019-06-25 Intel Corporation Executing distributed memory operations using processing elements connected by distributed channels
CN104022963B (zh) * 2014-01-02 2017-06-13 烽火通信科技股份有限公司 多种通信方式并存的通信方法及装置
CN107153580B (zh) * 2016-03-04 2020-08-18 北京忆恒创源科技有限公司 获取队列精确状态的装置及其方法
TWI588657B (zh) * 2016-03-25 2017-06-21 晨星半導體股份有限公司 雙處理器系統及其控制方法
US10496577B2 (en) * 2017-02-09 2019-12-03 Hewlett Packard Enterprise Development Lp Distribution of master device tasks among bus queues
CN111625377B (zh) * 2017-04-01 2023-11-28 北京忆芯科技有限公司 代理及向队列添加条目的方法
US11086816B2 (en) 2017-09-28 2021-08-10 Intel Corporation Processors, methods, and systems for debugging a configurable spatial accelerator
US10528077B2 (en) * 2017-11-21 2020-01-07 The Boeing Company Instruction processing alignment system
US11307873B2 (en) 2018-04-03 2022-04-19 Intel Corporation Apparatus, methods, and systems for unstructured data flow in a configurable spatial accelerator with predicate propagation and merging
US10853073B2 (en) 2018-06-30 2020-12-01 Intel Corporation Apparatuses, methods, and systems for conditional operations in a configurable spatial accelerator
US10891240B2 (en) 2018-06-30 2021-01-12 Intel Corporation Apparatus, methods, and systems for low latency communication in a configurable spatial accelerator
US11200186B2 (en) 2018-06-30 2021-12-14 Intel Corporation Apparatuses, methods, and systems for operations in a configurable spatial accelerator
CN109491948B (zh) * 2018-11-19 2021-10-29 郑州云海信息技术有限公司 一种针对固态硬盘双端口的数据处理方法和装置
US11030144B2 (en) * 2018-12-14 2021-06-08 Texas Instruments Incorporated Peripheral component interconnect (PCI) backplane connectivity system on chip (SoC)
US11016684B1 (en) * 2018-12-28 2021-05-25 Virtuozzo International Gmbh System and method for managing data and metadata where respective backing block devices are accessed based on whether request indicator indicates the data or the metadata and accessing the backing block devices without file system when the request indicator is not included in request
CN109918024B (zh) * 2019-02-28 2022-07-05 深圳和而泰数据资源与云技术有限公司 存储管理方法、装置、单片机设备和可读存储介质
US10817291B2 (en) 2019-03-30 2020-10-27 Intel Corporation Apparatuses, methods, and systems for swizzle operations in a configurable spatial accelerator
US10915471B2 (en) 2019-03-30 2021-02-09 Intel Corporation Apparatuses, methods, and systems for memory interface circuit allocation in a configurable spatial accelerator
US11037050B2 (en) 2019-06-29 2021-06-15 Intel Corporation Apparatuses, methods, and systems for memory interface circuit arbitration in a configurable spatial accelerator
CN111314244B (zh) * 2020-02-13 2022-09-13 北京天拓智领科技有限公司 一种基于消息队列的数据收发方法

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4445176A (en) * 1979-12-28 1984-04-24 International Business Machines Corporation Block transfers of information in data processing networks
US4682284A (en) * 1984-12-06 1987-07-21 American Telephone & Telegraph Co., At&T Bell Lab. Queue administration method and apparatus
US4914653A (en) * 1986-12-22 1990-04-03 American Telephone And Telegraph Company Inter-processor communication protocol
US4956771A (en) * 1988-05-24 1990-09-11 Prime Computer, Inc. Method for inter-processor data transfer
EP0365731B1 (en) * 1988-10-28 1994-07-27 International Business Machines Corporation Method and apparatus for transferring messages between source and destination users through a shared memory
US5161156A (en) * 1990-02-02 1992-11-03 International Business Machines Corporation Multiprocessing packet switching connection system having provision for error correction and recovery
US5459839A (en) * 1991-09-05 1995-10-17 International Business Machines Corporation System and method for managing queue read and write pointers
US5428766A (en) * 1992-12-01 1995-06-27 Digital Equipment Corporation Error detection scheme in a multiprocessor environment
US5581705A (en) * 1993-12-13 1996-12-03 Cray Research, Inc. Messaging facility with hardware tail pointer and software implemented head pointer message queue for distributed memory massively parallel processing system
US5619687A (en) * 1994-02-22 1997-04-08 Motorola Inc. Queue system having a time-out feature and method therefor
US5530933A (en) * 1994-02-24 1996-06-25 Hewlett-Packard Company Multiprocessor system for maintaining cache coherency by checking the coherency in the order of the transactions being issued on the bus
US5546546A (en) * 1994-05-20 1996-08-13 Intel Corporation Method and apparatus for maintaining transaction ordering and arbitrating in a bus bridge
US5925099A (en) * 1995-06-15 1999-07-20 Intel Corporation Method and apparatus for transporting messages between processors in a multiple processor system

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100538690C (zh) * 2006-04-10 2009-09-09 中国科学院研究生院 一种多cpu系统及cpu之间消息传递的方法

Also Published As

Publication number Publication date
JP3884073B2 (ja) 2007-02-21
KR19990022951A (ko) 1999-03-25
WO1997000533A1 (en) 1997-01-03
EP0840935A1 (en) 1998-05-13
DE69636781D1 (de) 2007-02-01
US6134619A (en) 2000-10-17
CN1193410A (zh) 1998-09-16
US5925099A (en) 1999-07-20
AU6180196A (en) 1997-01-15
JPH11514113A (ja) 1999-11-30
EP0840935B1 (en) 2006-12-20
HK1010940A1 (en) 1999-07-02
EP0840935A4 (en) 1998-12-23

Similar Documents

Publication Publication Date Title
CN1099078C (zh) 在多处理器系统中的处理器之间传送消息的方法与装置
CN1101026C (zh) 一种多重处理系统的可定标的系统中断结构
CN1262942C (zh) 利用无数据事务获得全局促进工具的方法、设备和系统
CN1272714C (zh) 数据处理系统内分配和访问存储映像工具的方法、设备和系统
CN101221543B (zh) 执行dma块移动的方法、dma设备和数据处理系统
CN101221544B (zh) 用于执行dma块移动的方法及dma设备
US9892069B2 (en) Posting interrupts to virtual processors
CN1269033C (zh) 数据处理系统中逻辑分区之断电和/或再启动的方法和仪器
CN1143209C (zh) 操作系统的重启动方法和计算机系统的控制方法
US20070079039A1 (en) Method and apparatus to retarget platform interrupts in a reconfigurable system
US6665699B1 (en) Method and data processing system providing processor affinity dispatching
CN1904873A (zh) 嵌入式实时操作系统中多核处理器的核间通信方法及装置
CN1160247A (zh) 高效利用空间的对象加锁的系统和方法
CN1294707A (zh) 处理多个电平触发和边沿触发中断的方法和装置
KR102064764B1 (ko) 메시지 시그널 인터럽트의 통신
CN1716187A (zh) 预载控制器、由处理器控制将数据预载至临时存储器的预载控制方法和程序
CN1367440A (zh) 在使用卷标的管线化微处理器中执行结合写入的装置及方法
CN1898653A (zh) 用于互连网络上高效的有序储存的方法和装置
CN1254753C (zh) 通过执行转移指令访问全局促进工具的方法、设备和系统
CN1258152C (zh) 管理释放的促进位的方法
CN113452532B (zh) 一种网络通信方法、计算设备及可读存储介质
CN1009771B (zh) 段描述符信息的存贮装置
US7082482B2 (en) Data handling device
CN1194311C (zh) 总线系统延缓交易方法与应用此方法的装置
CN1090780C (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
C14 Grant of patent or utility model
GR01 Patent grant
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20030115

Termination date: 20100617