CN103198048B - 处理器通信 - Google Patents
处理器通信 Download PDFInfo
- Publication number
- CN103198048B CN103198048B CN201210489571.7A CN201210489571A CN103198048B CN 103198048 B CN103198048 B CN 103198048B CN 201210489571 A CN201210489571 A CN 201210489571A CN 103198048 B CN103198048 B CN 103198048B
- Authority
- CN
- China
- Prior art keywords
- data
- signal
- processor
- processor module
- request
- 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
- 238000004891 communication Methods 0.000 title claims abstract description 34
- 238000013502 data validation Methods 0.000 claims abstract description 68
- 230000002093 peripheral effect Effects 0.000 claims abstract description 21
- 238000003860 storage Methods 0.000 claims abstract description 18
- 238000012790 confirmation Methods 0.000 claims description 63
- 230000001360 synchronised effect Effects 0.000 claims description 30
- 238000000034 method Methods 0.000 claims description 24
- 238000012545 processing Methods 0.000 claims description 9
- 238000013507 mapping Methods 0.000 claims description 6
- 230000008859 change Effects 0.000 claims description 4
- 238000000151 deposition Methods 0.000 claims description 3
- 238000007689 inspection Methods 0.000 claims 1
- 101100490184 Drosophila melanogaster Ack gene Proteins 0.000 description 18
- 230000005540 biological transmission Effects 0.000 description 12
- 238000013461 design Methods 0.000 description 10
- 239000004065 semiconductor Substances 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 5
- 238000001514 detection method Methods 0.000 description 4
- 230000000644 propagated effect Effects 0.000 description 3
- 230000000630 rising effect Effects 0.000 description 3
- 241001269238 Data Species 0.000 description 2
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical group [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 238000003708 edge detection Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 230000000712 assembly Effects 0.000 description 1
- 239000004020 conductor Substances 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
Classifications
-
- 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/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/1652—Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
- G06F13/1663—Access to shared memory
-
- 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/10—Program control for peripheral devices
- G06F13/102—Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/04—Generating or distributing clock signals or signals derived directly therefrom
- G06F1/10—Distribution of clock signals, e.g. skew
-
- 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/16—Handling requests for interconnection or transfer for access to memory bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/167—Interprocessor communication using a common memory, e.g. mailbox
-
- 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/0614—Improving the reliability of storage systems
-
- 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/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4204—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
- G06F13/4221—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
- G06F13/423—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus with synchronous protocol
-
- 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/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F5/06—Methods 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Multi Processors (AREA)
- Information Transfer Systems (AREA)
Abstract
本发明的实施方式涉及处理器通信。具体地,涉及一种处理器模块,包括:处理器,配置用于与至少一个另一处理器模块处理器共享数据;存储器映射外围设备,配置用于与至少一个另一处理器存储器映射外围设备通信,以控制数据的共享,其中,存储器映射外围设备包括发送方部分,该发送方部分包括:数据请求生成器,其配置用于根据来自处理器的数据请求寄存器写信号而向另一处理器模块输出数据请求指示符;确认等待信号生成器,配置用于根据来自另一处理器模块的数据确认信号而向处理器输出确认等待信号,其中,数据请求生成器数据请求指示符还取决于数据确认信号,并且确认等待信号生成器确认等待信号还取决于确认等待寄存器写信号。
Description
技术领域
本申请涉及处理器通信,并且特别地但不排他地涉及用于控制共享存储器数据流的处理器通信。主要应用是用于控制访问在单个集成电路封装上的共享存储器的多处理器数据传送,但是也可以在任何共享存储器控制器中使用。
背景技术
基于微处理器的系统越来越多地包含需要彼此通信的多个中央处理器单元(CPU)或者核。用于实现CPU核之间的这一通信的方法要使用共享存储器的区域。然而,使用共享存储器需要控制通过共享存储器区域的数据流。例如,需要控制共享存储器区域,以使得接收处理器在发送方已经将数据放置到存储器中之前不会试图读取数据,从而避免接收处理器访问旧数据的写后读(read after write,RAW)风险。另外,应当对共享存储器进行控制,以使得发送处理器在接收方读取存储器上的数据之前不会试图重写共享存储器中的数据,从而避免接收方无法访问旧数据的读后写(write after read,WAR)风险。
已经对这些风险进行了研究,并且所提出的解决方案已经在实现作为循环缓存的共享存储器中的流控制中有所涉及,其中发送方发送写指针(WP),其指示要由发送方向接收方发送数据的下一存储器位置,并且接收方发送读指针(RP),其指示从接收方向发送方读取的下一存储器位置。
在此类示例中,发送方将数据放置在缓存中,更新其本地写指针,并且向接收方发送新的指针值。
接收方接收经更新的写指针,将该写指针与其读指针进行比较,并且该比较使得接收方能够确定其是否可以从当前读指针地址读取数据(换言之,接收方在检测到读指针与写指针之间的差值大于阈值时,使得读操作发生)。
当在共享存储器上执行读操作时,接收方继而可以向发送方发送回经更新的读指针。
发送方在接收到经更新的读指针之后,具有了接收方已经从缓存读取数据的信息,并且由此可以“清除”存储器空间,这使得假如发送方写操作不会造成写指针赶上或者经过读指针,则发送方能够再次写入数据。
然而,处理器之间的这样的指针通信需要足够大的能够寻址整个缓存的指针。例如,具有256个位置的缓存需要每指针最少8比特。另外,流控制可以将指针实现为(相对于缓存基址的)相对地址或者绝对地址。由此,读指针和写指针通常可能需要32比特寻址能力(或者甚至每指针更高数目的比特)。
另外,在发送方和接收方在隔开显著的布线距离的分离的芯片(或者相同的芯片)上时,此类的通信是有问题的。在此类示例中,在发送方和接收方之间传送多条线路的开销可能会高得不可接受。
但是,已经有这样的建议,其他共享存储器位置可以用于存储读指针和写指针的值,并且由此不需要在中央处理单元之间传送写指针和读指针,附加共享存储器空间的使用将不同的通信负载放置到发送方和接收方二者上,以便轮询经更新的指针值的指针位置。
另外,在发送方和接收方在分离的时钟域的情况下,读指针和写指针的通信需要附加的硬件来保证指针安全地通信而不会由于时钟域边界错误而遭到损坏。
另外,流控制设计确定发送方与接收方之间的公共传送大小,使得发送方能够维持本地读指针和写指针,并且使得接收方能够维持本地读指针。此类示例还配置为允许发送方包含存储器映射寄存器,其驱动对接收方的请求信号。另外,在此类示例中,允许接收方包含另外的存储器映射寄存器,该寄存器向发送方驱动确认信号。在此类示例中,发送方可以将数据放置到缓存中,更新发送方写指针,继而将读指针和写指针进行比较,以使得在发送方确定缓存中的数据量大于所同意的传送大小时,发送方通过向存储器映射寄存器写入来置位请求信号。
接收方看到所声明的请求信号,并且从共享存储器缓存读取所同意的数据量。一旦接收方已经读取了数据,接收方就使用接收方存储器映射寄存器将确认信号反相。发送方继而检测确认信号的边沿,并且更新发送方读指针,以便考虑从共享存储器缓存读取的数据。继而,基于共享存储器缓存的当前填充水平,发送方可以选择清除或者声明请求信号。
流控制的这些示例允许维持流控制,因为除非请求被声明,接收方将不会试图从缓存读取数据。而且,如果在确认信号上的边沿的序列保证发送方的读指针的复制保持最新时,写指针通过读指针,则发送方将不会将数据写入到缓存中。
在这样的示例中,在发送方和接收方之间仅需要两条线,请求写线和确认线。然而,请求和确认信号需要在发送方和接收方之间非常快速的传播。当传播较慢时,接收方可能在先前确认边沿已经传播通过以将请求解声明之前轮询了该请求,从而使得单个请求被发送方服务两次。
发明内容
本申请的目的是提供一种在两个独立时钟的处理器之间通过共享存储器区域的共享存储器通信系统,该共享存储器区域将被用作循环缓存,同时使连接信号的数目最小化,并且容忍这些信号的高传播延迟。
本申请的实施方式的目的是解决以上问题。
根据本申请的第一方面,提供了一种处理器模块,包括:处理器,配置用于与至少一个另一处理器模块处理器共享数目;以及存储器映射外围设备,配置用于与至少一个另一处理器存储器映射外围设备通信,以控制数据的共享,其中,存储器映射外围设备包括发送方部分,该发送方部分包括:数据请求生成器,配置用于根据来自处理器的数据请求寄存器写信号而向另一处理器模块输出数据请求指示符;以及确认等待信号生成器,配置用于根据来自另一处理器模块的数据确认信号而向处理器输出确认等待信号,其中,数据请求生成器数据请求指示符另外取决于数据确认信号,并且确认等待信号生成器确认等待信号另外取决于确认等待寄存器写信号。
数据请求生成器可以包括第一触发器,配置用于接收作为置位输入的数据请求寄存器写信号、作为主控清除输入的确认等待信号,并且输出第一临时数据请求信号。
数据请求生成器还可以包括AND逻辑组合器,配置用于接收作为第一输入的第一临时数据请求信号、作为第二输入的反相确认等待信号,并且输出第二临时数据请求信号。
数据请求生成器还可以包括XOR逻辑组合器,配置用于接收作为第一输入的第二临时数据请求信号和取决于数据确认信号的第二输入,并且输出第三临时数据请求信号。
数据请求生成器还可以包括第二触发器,配置用于输出经同步的第三临时数据请求信号作为数据请求指示符。
确认等待信号生成器可以包括第一触发器,配置用于接收作为主控置位输入的边沿检测确认信号、作为清除输入的来自处理器的确认等待寄存器写信号,并且向处理器输出确认等待信号。
确认等待信号生成器还可以包括边沿检测器,配置用于检测来自另一处理器模块的数据确认信号的边沿改变。
确认等待信号生成器还可以包括数据确认同步器,配置用于将来自另一处理器模块的数据确认信号同步到处理器模块的时钟域中。
处理器可以配置用于经由存储器与至少一个另一处理器模块处理器共享数据。
根据本申请的第二方面,提供了一种处理器模块,包括:处理器,配置用于与至少一个另一处理器模块处理器共享数据;以及存储器映射外围设备,配置用于与至少一个另一处理器存储器映射外围设备通信,以控制数据的共享,其中,存储器映射外围设备包括接收方部分,该接收方部分包括:数据确认生成器,配置用于根据来自处理器的数据确认寄存器写信号而向另一处理器模块输出数据确认信号;以及数据请求等待信号生成器,配置用于根据来自另一处理器模块的数据请求信号和数据确认信号而向处理器输出数据请求等待信号。
数据确认生成器可以包括翻转触发器,配置用于接收作为输入的来自处理器的数据确认寄存器写信号,并且向另一处理器模块输出数据确认信号。
数据请求等待信号生成器可以包括XOR逻辑组合器,配置用于接收作为第一输入的翻转触发器输出,作为第二输入的来自另一处理器模块的数据请求信号,并且向处理器输出数据请求等待信号。
数据请求等待信号生成器还可以包括数据请求同步器,配置用于将来自另一处理器模块的数据请求信号同步到处理器模块的时钟域中。
处理器可以配置用于经由存储器与至少一个另一处理器模块处理器共享数据。
根据本申请的第三方面,提供了一种处理器模块,包括:用于与至少一个另一处理器模块共享数据的装置;以及用于与至少一个另一处理器通信以控制数据的共享的装置,其中,用于与至少一个另一处理器存储器映射处理器通信的装置包括用于控制向处理器模块发送数据的装置,包括:用于根据来自处理器的数据请求寄存器写信号向另一处理器模块输出数据请求指示符的装置;以及,用于根据来自另一处理器模块的数据确认信号而向处理器输出确认等待信号的装置,其中,用于输出数据请求指示符的装置还取决于数据确认信号,并且用于输出确认等待信号的装置还取决于数据确认等待寄存器写信号。
用于输出数据请求指示符的装置可以包括第一触发器,配置用于接收作为置位输入的数据请求寄存器写信号、作为主控清除输入的确认等待信号,并且数据第一临时数据请求信号。
用于输出数据请求指示符的装置还可以包括AND逻辑组合器,配置用于接收作为第一输入的第一临时数据请求信号、作为第二输入的反相确认等待信号,并且输入第二临时数据请求信号。
用于输出数据请求指示符的装置还可以包括XOR逻辑组合器,配置用于接收作为第一输入的第二临时数据请求信号和取决于数据确认信号的第二输入,并且输出第三临时数据请求信号。
用于输出数据请求指示符的装置还可以包括第二触发器,配置用于输出经同步的第三临时数据请求信号,作为数据请求指示符。
用于输出确认等待信号的装置可以包括第一触发器,配置用于接收作为主控置位输入的边沿检测确认信号、作为清除输入的来自处理器的数据确认等待寄存器写信号,并且向处理器输出确认等待信号。
用于输出确认等待信号的装置还可以包括边沿检测器,配置用于检测来自另一处理器模块的数据确认信号的边沿改变。
用于输出确认等待信号的装置还可以包括用于将来自另一处理器模块的数据确认信号同步到处理器模块的时钟域中的装置。
处理器可以配置用于经由存储器与至少一个另一处理器模块处理器共享数据。
根据本申请的第四方面,提供了一种处理器模块,包括:用于与至少一个另一处理器模块处理器共享数据的装置;以及,用于与至少一个另一处理器通信以控制数据的共享的装置,其中,用于与至少一个另一处理器存储器映射处理器通信的装置包括用于控制接收数据的装置,包括:用于根据来自处理器的数据确认寄存器写信号而向另一处理器模块输出数据确认信号的装置;以及,用于根据来自另一处理器模块的数据请求信号和数据确认信号而向处理器输出数据请求等待信号的装置。
用于输出数据确认信号的装置可以包括翻转触发器,配置用于接收作为输入的来自处理器的数据确认寄存器写信号,并且向另一处理器模块输出数据确认信号。
用于输出数据请求等待信号的装置可以包括XOR逻辑组合器,配置用于接收作为第一输入的翻转触发器输出、作为第二输入的来自另一处理器模块的数据请求信号,并且向处理器输出数据请求等待信号。
用于输出数据请求等待信号的装置还可以包括用于将来自处理器模块的数据请求信号同步到处理器模块的时钟域中的装置。
处理器可以配置用于经由存储器与至少一个另一处理器模块处理器共享数据。
根据本申请的第五方面,提供了一种方法,包括:在处理器模块与至少一个另一处理器模块处理器之间共享数据;以及,与至少一个另一处理器通信以控制数据的共享,其中,与至少一个另一处理器通信包括控制向处理器发送数据,控制向处理器发送数据包括:根据来自处理器的数据请求寄存器写信号而向另一处理器模块输出数据请求指示符;以及,根据来自另一处理器模块的数据确认信号而向处理器输出确认等待信号,其中,输出数据请求指示符还取决于数据确认信号,并且输出确认等待信号还取决于确认等待寄存器写信号。
输出数据请求指示符可以包括:配置第一触发器接收作为置位输入的数据请求寄存器写信号、作为主控清除输入的确认等待信号并且输出第一临时数据请求信号。
输出数据请求指示符还可以包括:配置AND逻辑组合器接收作为第一输入的输入临时数据请求信号、作为第二输入的反相确认等待信号并且输出第二临时数据请求信号。
输出数据请求指示符还可以包括:配置XOR逻辑组合器接收作为第一输入的第二临时数据请求信号和取决于数据确认信号的第二输入并且输出第三临时数据请求信号。
输出数据请求指示符还可以包括:配置第二触发器输出经同步的第三临时数据请求信号作为数据请求指示符。
输出确认等待信号可以包括:配置触发器接收作为主控置位输入的边沿检测确认信号、作为清除输入的来自处理器的数据确认等待寄存器信号并且向处理器输出确认等待信号。
输出确认等待信号还可以包括:配置边沿检测器,该边沿检测器配置用于检测来自另一处理器模块的数据确认信号的边沿改变。
输出确认等待信号还可以包括:将来自另一处理器模块的数据确认信号同步到处理器模块的时钟域中。
在处理器模块与至少一个另一处理器模块处理器之间共享数据可以包括:经由存储器共享数据。
根据第六方面,提供了一种方法,包括:在处理器模块与至少一个另一处理器模块处理器之间共享数据;以及,与至少一个另一处理器通信,以控制数据的共享,其中,与至少一个另一处理器存储器映射处理器通信包括控制接收数据,控制接收数据包括:根据来自处理器的数据确认寄存器写信号而向另一处理器模块输出数据确认信号;以及,根据来自另一处理器模块的数据请求信号和数据确认信号而向处理器输出数据请求等待信号。
输出数据确认信号可以包括:配置翻转触发器接收作为输入的来自处理器的数据确认寄存器写信号,并且向另一处理器模块输出数据确认信号。
输出数据请求等待信号可以包括:配置XOR逻辑组合器接收作为第一输入的翻转触发器输出、作为第二输入的来自另一处理器模块的数据请求信号,并且向处理器输出数据请求等待信号。
输出数据请求等待信号还可以包括:将来自另一处理器模块的数据请求信号同步到处理器模块的时钟域中。
在处理器模块与至少一个另一处理器模块处理器之间共享数据可以包括:经由存储器共享数据。
处理器可读介质可以利用这样的指令来编码,该指令当由处理器执行时,执行在此描述的方法。
装置包括至少一个处理器和至少一个存储器,该至少一个存储器包括一个或多个程序的计算机代码,至少一个存储器和计算机代码配置用于利用至少一个处理器使得装置至少执行在此描述的方法。
附图说明
为了更好地理解本申请,现在将通过示例的方式参考附图,在附图中:
图1示意性地示出了适于采用本申请的一些实施方式的共享存储器系统;
图2示意性地更详细地示出了根据本申请的一些实施方式的发送方MMP;
图3示意性地更加详细地示出了根据本申请的一些实施方式的接收方MMP;
图4示出了根据本申请的一些实施方式的针对发送方请求操作的共享存储器控制器的流程图;
图5示出了根据本申请的一些实施方式的针对接收方请求和确认操作的共享存储器控制器的流程图;以及
图6示出了根据本申请的一些实施方式的针对发送方确认操作的共享存储器控制器的流程图。
具体实施方式
下文更加详细地描述了提供共享存储器控制的适合的装置和可能的机制。
参照图1,示出了其中可以实现本申请的实施方式的示例系统、设备或者装置。该系统被示出为包括第一设备10(设备1)、发送方,该发送方在以下示例中被配置为向存储器发送数据的设备。系统还示出为包括第二设备20(设备2)、接收方,该接收方在以下示例中被配置为从共享存储器接收或者读取数据的设备。该系统还示出为包括共享存储器30,该共享存储器30包括共享环形缓存部分31,其配置为可访问第一设备和第二设备二者。
可以理解,第一设备10和第二设备20可以是任何适当的电子处理单元,诸如在相同或者不同硅结构上装配的处理核,或者与相同或者不同集成电路封装一起封装。在一些实施方式中,第一设备10、第二设备20和共享存储器30制造在相同的硅结构上、或者封装在相同的集成电路封装内。在一些实施方式中,第一设备20通过第一时钟域信号同步,并且第二设备20通过第二时钟域信号同步。在一些实施方式中,第一时钟域信号和第二时钟域信号是相同的信号,然而,描述了以下示例,其中第一时钟域信号与第二时钟域信号不同,例如具有相位差或者频率差。另外,虽然以下示例将第一设备和第二设备分别示出为发送方和接收方,但是可以理解,在一些实施方式中,每个设备可以配置用于发送和接收。另外,在一些实施方式中,系统可以包括不止两个配置用于彼此通信的设备。在此类实施方式中,每个设备通信配对可以包括发送方和接收方的配对,如在此描述的示例所示。
在一些实施方式中,发送方设备10包括中央处理单元(CPU)11,其配置用于生成数据并且使得能够向存储器30共享环形缓存31发送数据。CPU 11可以配置为任何适当的处理器。
发送方设备10还可以包括发送方存储器映射外围设备(发送方MMP)13。发送方存储器映射外围设备可以配置用于辅助控制发送方与接收方设备之间的数据流。在一些实施方式中,发送方MMP 13可以配置用于从CPU 11接收数据请求(DREQ)寄存器写信息,并且向接收方输出数据请求(DREQ),以便指示发送方请求向接收方传送数据(换言之,共享存储器中存在数据用于获取)。在一些实施方式中,发送方MMP 13可以配置用于从接收方MMP接收数据确认(DACK)信号,该信号指示请求已经由接收方设备确认,并且向发送方CPU 11输出数据确认等待寄存器信号。在一些实施方式中,发送方MMP还可以配置用于接收数据确认(DACK)寄存器写信号。
在一些实施方式中,发送方设备10还可以包括寄存器15,适于存储将要由CPU使用的值。在一些实施方式中,发送方寄存器15包括发送方写指针S:WP和发送方读指针S:RP。发送方写指针S:WP和发送方读指针S:RP定义共享环形缓存31内的写和读地址,其详述发送方设备向其写入(写指针)和从其读取(读指针RP)的共享存储器的当前地址。在一些实施方式中,指针可以是绝对指针或者相对指针。
在一些实施方式中,接收方设备20可以包括中央处理单元(CPU)21。在一些实施方式中,中央处理单元21可以是类似于发送方CPU 11的CPU,然而,在其他实施方式中,接收方CPU 21可以不同于发送方CPU 11。接收方CPU 21可以配置用于适于从共享存储器读取。
在一些实施方式中,接收方设备20包括存储器映射外围设备(接收方MMP)23。接收方MMP可以配置用于从接收方CPU 21接收数据确认(DACK)寄存器写信号,并且向发送方输出确认信号(DACK)。另外,接收方MMP 23可以配置用于从发送方设备接收数据请求(DREQ)信号,并且还配置用于向接收方CPU 21输出请求等待信号(DREQ等待)。
在一些实施方式中,接收方设备20还可以包括寄存器25,其包括接收方读指针(R:RP)。如在此描述的,接收方读指针(R:RP)可以配置用于包含共享存储器30的地址值,该地址值详述从其进行读取的下一位置的位置。
参照图2,更加详细地示出了发送方存储器映射外围设备(发送方MMP)13。在一些实施方式中,发送方MMP 13包括第一触发器(触发器A)101。第一触发器101配置有清除(CLR)数据输入、置位(SET)数据输入、数据输出(Q)和同步时钟输入(>)。在以下示例中,清除输入优先于置位输入。
第一触发器101接收作为置位输入的数据请求(DREQ)寄存器写信号。另外,第一触发器101配置用于接收数据确认(DACK)等待寄存器信号作为清除输入。第一触发器101可以配置用于向第一AND门103输出数据输出(Q)。
在一些实施方式中,发送方MMP 13可以包括AND门103。AND门103配置用于接收作为第一输入的第一触发器101的数据输出、以及作为第二输入的反相的数据确认(DACK)等待寄存器信号。AND门103的输出被传递至第一XOR门105。
在一些实施方式中,发送方MMP 13包括第一XOR门105。第一XOR门105配置用于接收作为第一输入的AND门103的输出,并且还配置用于接收作为第二输入的第五触发器113(触发器E)的输出。第一XOR门105还配置用于向第二触发器107输出经过XOR的逻辑组合。
在一些实施方式中,发送方存储器映射外围设备13还包括第二触发器107(触发器B),其配置用于接收作为数据输入的第一XOR门105输出。第二触发器107还配置用于输出输入的同步版本,该输入是传送至接收方设备20的数据请求(DREQ)信号。
在一些实施方式中,发送方MMP 13还包括第三触发器109(触发器C)。该第三触发器109配置用于接收作为数据输入的来自接收方的数据确认信号(DACK)。第三触发器109配置用于向第四触发器111输出输入信号的同步版本或者定时版本。
在一些实施方式中,发送方MMP 13包括第四触发器(触发器D)111。第四触发器111配置用于接收作为数据输入的第三触发器109的输出,并且还配置用于向第五触发器113以及第二XOR门115输出输入信号的同步版本或者定时版本。
在一些实施方式中,发送方MMP 13包括第五触发器113(触发器E),其配置用于接收作为数据输入的第四触发器111的输出,并且配置用于向第一XOR门105和第二XOR门115输出输入信号的同步版本或者定时版本。
在一些实施方式中,发送方MMP 13还包括第二XOR门115,其配置用于接收第四触发器111的输出作为第一输入,并且接收第五触发器113的输出作为第二输入。第二XOR门115配置用于向第六触发器117输出经过XOR的组合。
在一些实施方式中,发送方MMP 13还包括第六触发器117(触发器F)。第六触发器117配置用于接收作为置位输入(SET)的第二XOR门115的输出,并且配置用于接收作为清除输入(CLR)的数据确认等待寄存器写信号(DACK等待寄存器写)。第六触发器117配置有比清除输入优先的置位输入。第六触发器117的输出(Q)被输出作为数据确认(DACK)等待寄存器信号,该信号被输出至CPU、第一触发器101,并且作为AND门103的反相输入。
参照图3,详细示出了示例接收方存储器映射外围设备(接收方MMP)23。在一些实施方式中,接收方MMP 23包括第一或者翻转触发器201(触发器G)。翻转触发器201可以配置用于接收作为其翻转输入的、从接收方CPU 21接收的数据确认寄存器写信号(DACK寄存器写)。翻转触发器201的输出可以被输出作为去往发送方的确认信号(DACK)和去往XOR门207的输入。
在一些实施方式中,接收方MMU 23还可以包括第二触发器203(触发器H),其配置用于从发送方10接收请求(DREQ)信号,并且向第三触发器205输出定时版本。
在一些实施方式中,接收方MMU 23还可以包括第三触发器205(触发器I),其配置用于接收作为数据输入的第二触发器203的输出,并且配置用于向XOR门207输出定时版本。
在一些实施方式中,接收方MMU 23还包括XOR门207,其配置用于接收作为第一输入的翻转触发器201的输出,以及作为第二输入的第三触发器205的输出。XOR门207可以配置用于向接收方CPU 21输出数据请求等待(DREQ等待)信号。
在发送方和接收方MMU触发器的示例中,为了清楚起见省略了时钟和复位连接。另外,在此处描述的示例中,所有的触发器在接电时被复位为0。在此类实施方式中,如上文所述,触发器输入(置位、清除和翻转)被视为同步输入。
在这些示例中,所有的发送方触发器另外使用相同的“发送方”时钟源定时,并且所有的接收方触发器使用相同的“接收方”时钟源定时。在一些实施方式中,发送方和接收方时钟源可以是相同或者基本上相同的时钟源。然而,可以理解,在此处描述的一些实施方式中,时钟源可以不同,并且具有相位差或者频率差。
参照图4、图5和图6,详细地描述了根据本申请的实施方式的设备之间的通信的操作。
参照图4,描述了设备之间的通信以及发送方数据请求的传送的操作。
在一些实施方式中,发送方CPU 11可以配置用于将数据写入到循环缓存(或者共享环形缓存)中。例如,发送方CPU 11可以使用发送方写指针S:WP将数据写入到循环缓存中。发送方CPU 11还可以配置用于通过检查写指针S:WP不会经过读指针S:RP而确定数据传送大小,来保证数据不会从缓存溢出。
在图4中通过步骤301示出将数据写到循环缓存上的操作。
一旦发送方CPU 11已经将数据写入到循环缓存中,发送方CPU11就可以配置用于确定或者计算缓存中剩余多少数据。换言之,发送方CPU 11确定缓存容量。当数据的容量或者可用量大于传送阈值时,CPU 11可以配置用于写入数据请求寄存器以便向接收方20发送请求。传送阈值可以是任何适当的值,诸如零,换言之,发送方CPU可以配置用于在缓存不为空的任何时候发送请求。
在图4中,通过步骤303示出确定缓存容量的操作,以及在检查到容量大于传送阈值时,向数据请求寄存器写入以便发送请求的操作。
在数据请求寄存器写信号等于1时,被声明的数据请求寄存器写信号将发送方MMP第一触发器101设置为值1。
在图4中,通过步骤305示出了被声明的数据请求寄存器写信号将触发器101设置为1的操作。
该信号继而经由AND门103和XOR门传播,以使得第二触发器107的输入被反相,并且继而在下一时钟信号时传播,以便以输出的DREQ信号的形式向接收方输出请求。
在图4中,通过步骤307示出了向接收方输出信号DREQ的操作。
参照图5,更加详细地示出了根据本申请的一些实施方式的从DREQ信号的输出到DACK信号的输出的设备之间的通信的操作。
接收方MMP 23可以配置用于从发送方10接收数据请求(DREQ)信号,其中第二触发器203和第三触发器205将请求同步到接收方时钟域中。可以理解,根据用于发送方(CPU)和接收方(CPU)的时钟频率,同步请求所需要的触发器的数目可以大于或者小于两个触发器。在一些实施方式中,接收方MMP 23可以配置为不包括重新同步触发器,换言之,DREQ信号直接传递至XOR门207,其中发送方和接收方在相同的时钟域内,或者处理技术足以允许自动同步。
在图5中,通过步骤309示出了将从发送方接收的数据请求同步到接收方时钟域中的操作。
接收方MMP 23继而可以配置用于将接收方确认(DACK)输出与经重新同步的来自发送方的请求进行比较。如图3所示,该比较可以通过XOR门207执行。当两个信号(即接收方确认(DACK)输出和经重新同步的来自发送方的请求)不同时,接收方MMP 23尤其是XOR门207可以配置用于声明DREQ等待信号,以指示来自发送方的请求等待被服务。在一些实施方式中,该DREQ等待信号可以被传输至CPU 21。然而,数据请求等待信号可以用于中断接收方CPU 21,使得其在寄存器中可用于读取,或者使得其可用作分支的标记。
在图5中,通过步骤311示出了将接收方确认信号与同步的数据请求信号进行比较以生成DREQ等待信号。
接收方CPU 21可以配置用于接收请求通知(DREQ等待),并且通过使用接收方读指针(R:RP)从共享存储器区域中读取约定的数据量而作出反应。接收方CPU 21继而可以配置用于更新接收方读指针(R:RP),以便将已经读取的数据量纳入考虑,并且写入数据确认寄存器,以便向发送方发送确认。
在图5中,通过步骤313示出了接收请求等待通知、读取约定的数据量、更新读指针以及写入数据确认寄存器以发送确认的操作。
写入DACK寄存器以向发送方发送确认,这使得数据确认寄存器写信号得到声明,在一些实施方式中,该数据确认寄存器写信号被翻转触发器201接收,使得触发器的值翻转。
在图5中,通过步骤315示出了声明翻转触发器201以及寄存器写信号中的数据的操作。
触发器201的翻转使得输出值与来自发送方的经重新同步的请求相同,将数据请求等待信号解声明。
在图5中,通过步骤317示出了数据请求等待信号的解声明。
另外,翻转触发器201配置用于向发送方发送确认信号(DACK)。
在图5中,通过步骤319示出了向发送方输出触发器201输出的确认信号。
参照图6,更加详细地示出了从确认信号的输出到通信循环的完成的设备之间的通信的操作。发送方MMP 13可以配置用于从接收方接收确认信号(DACK)。在一些实施方式中,通过第三触发器109和第四触发器111将确认信号重新同步到发送方时钟域中。可以理解,在一些实施方式中,根据发送方和接收方的时钟频率,重新同步触发器的数目可以大于或者小于两个触发器。另外,如在此描述的,发送方可以不配置重新同步触发器,其中,在本申请的一些实施方式中,相同的时钟域用于发送方和接收方二者,或者处理技术允许不进行重新同步。
在图6中,通过步骤321示出了将确认信号同步到发送方时钟域中的操作。
另外,将经重新同步的确认信号传递通过第五触发器113,并且继而可以通过第二XOR门115将第五触发器113的输入和输出进行比较。第二XOR门115继而可以配置用于检测正在接收的确认信号的上升沿或者下降沿。
在图6中,通过步骤323示出了确认上升沿或者下降沿的检测或者确定。
上升沿或者下降沿检测输出继而置位第六触发器117。
在图6中通过步骤325示出了将触发器117置位的操作。
触发器117的置位导致输出值的声明,换言之,第六触发器的输出被设置为1。该输出值使得第一触发器101的输出被清除,从而消除第一触发器101处的原始数据请求寄存器写(DREQ寄存器写)信号的影响,该信号被传播至向接收方输出的DREQ信号。
在图6中,通过步骤327示出了DREQ值的清除,换言之,消除请求操作。
还从第六触发器117输出数据确认等待寄存器信号。换言之,在一些实施方式中,发送方MMP 13向发送方CPU 11声明第六触发器的值,以指示确认已经被接收到。根据一些实施方式,以类似于接收方处接收的数据请求信号的相似的方式,该确认可以用作中断、寄存器值或者标记。
在图6中,通过步骤329示出了向发送方CPU 11输出数据确认等待触发器信号的操作。
在一些实施方式中,发送方CPU 11通过更新发送方读指针S:RP而对确认等待信号作出反应。换言之,发送方CPU 11释放被接收方已经读取的数据占据的共享存储器空间。
在图6中,通过步骤331示出了更新S:RP的操作。
在一些实施方式中,发送方CPU 11还可以重新计算缓存填充水平。在缓存中的数据量大于传送阈值时,发送方CPU 11可以配置用于写入数据请求(DREQ)寄存器,以便重新声明数据请求。
在图6中,通过步骤333示出了重新计算缓存容量以及在容量大于传送阈值时写入DREQ寄存器的操作。
该操作支持生成DREQ和DACK信号的另一循环。
本申请的这些实施方式的优点在于,使得所需要的连接的数目最小化(每个方向仅一个信号)。另外,在一些实施方式中,操作可以容许请求或者确认信号的任何量的延迟。
在这些实施方式中,假设缓存足够大,则发送方可以将很多值得传送的数据放置到缓存中,而不需要接收方移除任何数据。另外,在一些实施方式中,多个请求不会相互抵消。
根据一些实施方式,还可以允许发送方CPU在任何时刻安全地重新计算和重新声明请求,而不会使得接收方接收假请求。例如,在发送方试图重新声明请求同时确认正在等待时,请求被忽略,因为等待确认覆盖了请求。
可以理解,在可以通过CPU上运行的软件执行读指针和写指针管理时,本申请的实施方式可以扩展为包括自动指针管理硬件。
另外,虽然以上说明描述了执行共享存储器的控制,但是也可以使用本申请的实施方式实现从一个CPU向另一CPU传送预定命令。
一般地,本发明的各种实施方式可以实现为硬件或者专用电路、软件、逻辑或者其任意组合。例如,一些方面可以实现为硬件,而其他方面可以实现为固件或者软件,软件可以由控制器、微处理器或者其他计算设备执行,但是本发明不限于此。虽然本发明的各种方面可以示出和描述为框图、流程图,或者使用某些其他图形表示,但是可以理解,作为非限制性的示例,在此描述的这些框、装置、系统、技术或者方法可以实现为硬件、软件、固件专用电路或者逻辑、通用硬件或者控制器或者其他计算设备,或者其某些组合。
本申请的实施方式可以通过计算机软件来实现,该计算机软件可由(诸如处理器实体中的)移动设备的数据处理器、硬件或者软件和硬件的组合执行。另外,在这个方面,应当注意,附图中所示的逻辑流的任何框可以表示程序步骤或者互连的逻辑电路、框和功能,或者程序步骤与逻辑电路、框和功能的组合。软件可以存储在物理介质、磁性介质和光学介质上,物理介质诸如存储器芯片或者在处理器内实现的存储器块,磁性介质诸如硬盘或者软盘,光学介质例如DVD及其数据变体CD。
存储器可以是适于本地技术环境的任何类型,并且可以使用任何适当的数据存储技术来实现,诸如基于半导体的存储器设备、磁性存储器设备和系统、光学存储器设备和系统、固定存储器和可移除存储器。数据处理器可以是适于本地技术环境的任何类型,并且作为非限制性的示例,可以包括以下一种或多种:通用计算机、专用计算机、微处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、门级电路和基于多核处理器架构的处理器。
本发明的实施方式可以在诸如集成电路模块的各种组件中实现。集成电路的设计总体来说是高度自动化的过程。复杂和强大的软件工具可用于将逻辑级设计转换为半导体电路设计,该半导体电路设计准备在半导体衬底上刻蚀和形成。
诸如加利福尼亚Mountain View的Synopsys,Inc.和加利福尼亚San Jose的Cadence Design提供的程序可以对导体进行自动布线,并且使用已经建好的设计规则以及预先存储的设计模块库将组件定位在半导体芯片上。一旦已经完成半导体电路的设计,就可以将所产生的标准化电子格式(例如,Opus、GDSII等)的设计传输至半导体制造厂或者“代工厂”用于制造。
以上描述已经通过示例性方式和非限制性示例提供了本发明的示例性实施方式的完整和告知性的描述。然而,当结合附图和所附权利要求阅读时,考虑到以上描述,各种修改和调试将对本领域技术人员变得易见。然而,本发明的教导的所有此类和相似的修改都将落入所附权利要求限定的本发明的范围内。
Claims (34)
1.一种处理器模块,包括:
处理器,其配置用于与至少一个另一处理器模块处理器共享数据;以及
存储器映射外围设备,其配置用于与至少一个另一处理器存储器映射外围设备通信,以控制所述数据的共享,其中,所述存储器映射外围设备包括发送方部分,该发送方部分包括:
数据请求生成器,配置用于根据来自所述处理器的数据请求寄存器写信号而向所述另一处理器模块输出数据请求指示符;以及
确认等待信号生成器,配置用于根据来自所述另一处理器模块的数据确认信号而向所述处理器输出确认等待信号,其中,所述数据请求生成器数据请求指示符还取决于所述数据确认信号,并且所述确认等待信号生成器确认等待信号还取决于所述确认等待寄存器写信号,
其中,所述数据请求生成器包括:第一触发器,直接耦合至所述处理器模块并且配置用于接收作为置位输入的所述数据请求寄存器写信号、作为主控清除输入的所述确认等待信号,并且输出第一临时数据请求信号,
其中,所述数据请求生成器包括:AND逻辑组合器,配置用于接收作为第一输入的所述第一临时数据请求信号、作为第二输入的反相确认等待信号,并且输出第二临时数据请求信号。
2.根据权利要求1所述的处理器模块,其中,所述数据请求生成器还包括:XOR逻辑组合器,配置用于接收作为第一输入的所述第二临时数据请求信号、以及取决于所述数据确认信号的第二输入,并且输出第三临时数据请求信号。
3.根据权利要求2所述的处理器模块,其中,所述数据请求生成器还包括:第二触发器,用于输出经同步的第三临时数据请求信号作为所述数据请求指示符。
4.根据权利要求1至3中任一项所述的处理器模块,其中,所述确认等待信号生成器包括:第一触发器,配置用于接收作为主控置位输入的边沿检测确认信号、作为清除输入的来自处理器的确认等待寄存器写信号,并且向所述处理器输出所述确认等待信号。
5.根据权利要求4所述的处理器模块,其中,所述确认等待信号生成器还包括:边沿检测器,配置用于检测来自所述另一处理器模块的所述数据确认信号的边沿改变。
6.根据权利要求5所述的处理器模块,其中,所述确认等待信号生成器还包括:数据确认同步器,配置用于将来自所述另一处理器模块的所述数据确认信号同步到所述处理器模块的时钟域中。
7.根据权利要求1至3中任一项所述的处理器模块,其中,所述处理器配置用于经由存储器与所述至少一个另一处理器模块处理器共享数据。
8.一种处理器模块,包括:
处理器,其配置用于与至少一个另一处理器模块处理器共享数据;以及
存储器映射外围设备,配置用于与至少一个另一处理器存储器映射外围设备通信,以控制所述数据的共享,其中,所述存储器映射外围设备包括接收方部分,该接收方部分包括:
数据确认生成器,配置用于根据来自所述处理器的数据确认寄存器写信号而向所述另一处理器模块输出数据确认信号;以及
数据请求等待信号生成器,配置用于根据来自所述另一处理器模块的数据请求信号以及所述数据确认信号而向所述处理器输出数据请求等待信号,其中,
所述数据确认生成器包括:翻转触发器,直接耦合至所述处理器模块并且配置用于接收作为输入的来自所述处理器的所述数据确认寄存器写信号,并且向所述另一处理器模块输出所述数据确认信号。
9.根据权利要求8所述的处理器模块,
其中,所述数据请求等待信号生成器包括:XOR逻辑组合器,配置用于接收作为第一输入的所述翻转触发器输出、作为第二输入的来自所述另一处理器模块的所述数据请求信号,并且向所述处理器输出所述数据请求等待信号。
10.根据权利要求9所述的处理器模块,其中,所述数据请求等待信号生成器还包括:数据请求同步器,配置用于将来自所述另一处理器模块的所述数据请求信号同步到所述处理器模块的时钟域中。
11.根据权利要求8至10中任一项所述的处理器模块,其中,所述处理器配置用于经由存储器与所述至少一个另一处理器模块处理器共享数据。
12.一种处理器模块,包括:
用于与至少一个另一处理器模块处理器共享数据的装置;以及
用于与所述至少一个另一处理器通信以控制所述数据的共享的装置,其中,用于与所述至少一个另一处理器存储器映射处理器通信的装置包括用于控制向所述处理器模块发送数据的装置,包括:
用于根据来自所述处理器的数据请求寄存器写信号而向所述另一处理器模块输出数据请求指示符的装置;以及
用于根据来自所述另一处理器模块的数据确认信号而向所述处理器输出确认等待信号的装置,其中,所述用于输出数据请求指示符的装置还取决于所述数据确认信号,并且所述用于输出确认等待信号的装置还取决于所述确认等待寄存器写信号,
其中,所述用于输出数据请求指示符的装置包括:第一触发器,直接耦合至所述处理器模块并且配置用于接收作为置位输入的所述数据请求寄存器写信号、作为主控清除输入的所述确认等待信号,并且输出第一临时数据请求信号,
其中,所述用于输出数据请求指示符的装置包括:AND逻辑组合器,配置用于接收作为第一输入的所述第一临时数据请求信号、作为第二输入的反相确认等待信号,并且输出第二临时数据请求信号。
13.根据权利要求12所述的处理器模块,其中,所述用于输出数据请求指示符的装置还包括:XOR逻辑组合器,配置用于接收作为第一输入的所述第二临时数据请求信号以及取决于所述数据确认信号的第二输入,并且输出第三临时数据请求信号。
14.根据权利要求13所述的处理器模块,其中,所述用于输出数据请求指示符的装置还包括:第二触发器,配置用于输出经同步的第三临时数据请求信号作为所述数据请求指示符。
15.根据权利要求12至14中任一项所述的处理器模块,其中,所述用于输出确认等待信号的装置包括:第一触发器,配置用于接收作为主控置位输入的边沿检测确认信号、作为清除输入的来自处理器的数据确认等待寄存器写信号,并且向所述处理器输出所述确认等待信号。
16.根据权利要求15所述的处理器模块,其中,所述用于输出确认等待信号的装置还包括:边沿检测器,配置用于检测来自所述另一处理器模块的所述数据确认信号的边沿改变。
17.根据权利要求16所述的处理器模块,其中,所述用于输出确认等待信号的装置还包括:用于将来自所述另一处理器模块的所述数据确认信号同步到所述处理器模块的时钟域中的装置。
18.根据权利要求12至14中任一项所述的处理器模块,其中,所述处理器配置用于经由存储器与所述至少一个另一处理器模块处理器共享数据。
19.一种处理器模块,包括:
用于与至少一个另一处理器模块处理器共享数据的装置;以及
用于与所述至少一个另一处理器通信以控制所述数据的共享的装置,其中,用于与所述至少一个另一处理器存储器映射处理器通信的装置包括用于控制接收数据的装置,包括:
用于根据来自所述处理器的数据确认寄存器写信号而向所述另一处理器模块输出数据确认信号的装置;以及
用于根据来自所述另一处理器模块的数据请求信号以及所述数据确认信号而向所述处理器输出数据请求等待信号的装置,
其中,所述用于输出数据确认信号的装置包括:翻转触发器,直接耦合至所述处理器模块并且配置用于接收作为输入的来自所述处理器的所述数据确认寄存器写信号,并且向所述另一处理器模块输出所述数据确认信号。
20.根据权利要求19所述的处理器模块,
其中,所述用于输出数据请求等待信号的装置:包括XOR逻辑组合器,配置用于接收作为第一输入的所述翻转触发器输出、作为第二输入的来自所述另一处理器模块的所述数据请求信号,并且向所述处理器输出所述数据请求等待信号。
21.根据权利要求20所述的处理器模块,其中,所述用于输出数据请求等待信号的装置还包括:用于将来自所述另一处理器模块的所述数据请求信号同步到所述处理器模块的时钟域中的装置。
22.根据权利要求19至21中任一项所述的处理器模块,其中,所述处理器配置用于经由存储器与所述至少一个另一处理器模块处理器共享数据。
23.一种用于通信的方法,包括:
在处理器模块与至少一个另一处理器模块处理器之间共享数据;以及
与所述至少一个另一处理器通信以控制数据的共享的装置,其中,与所述至少一个另一处理器通信包括控制向所述处理器发送数据,包括:
根据来自所述处理器的数据请求寄存器写信号而向所述另一处理器模块输出数据请求指示符;以及
根据来自所述另一处理器模块的数据确认信号而向所述处理器输出确认等待信号,其中,输出数据请求指示符还取决于所述数据确认信号,并且输出确认等待信号还取决于所述确认等待寄存器写信号,
其中,输出数据请求指示符包括:配置直接耦合至所述处理器模块的第一触发器接收作为置位输入的所述数据请求寄存器写信号、作为主控清除输入的所述确认等待信号,并且输出第一临时数据请求信号,
其中,所述输出数据请求指示符包括:配置AND逻辑组合器接收作为第一输入的所述第一临时数据请求信号、作为第二输入的反相确认等待信号,并且输出第二临时数据请求信号。
24.根据权利要求23所述的方法,其中,所述输出数据请求指示符还包括:配置XOR逻辑组合器接收作为第一输入的所述第二临时数据请求信号、以及取决于所述数据确认信号的第二输入,并且输出第三临时数据请求信号。
25.根据权利要求24所述的方法,其中,所述输出数据请求指示符还包括:配置第二触发器输出经同步的第三临时数据请求信号作为所述数据请求指示符。
26.根据权利要求23至25中任一项所述的方法,其中,输出确认等待信号包括:配置触发器接收作为主控置位输入的边沿检测确认信号、作为清除输入的来自所述处理器的数据确认等待寄存器写信号,并且向所述处理器输出所述确认等待信号。
27.根据权利要求26所述的方法,其中,输出确认等待信号还包括:配置边沿检测器检测来自所述另一处理器模块的所述数据确认信号的边沿改变。
28.根据权利要求27所述的方法,其中,输出确认等待信号还包括:将来自所述另一处理器模块的所述数据确认信号同步到所述处理器模块的时钟域中。
29.根据权利要求23至25中任一项所述的方法,其中,在处理器模块与至少一个另一处理器模块处理器之间共享数据包括经由存储器共享数据。
30.一种用于通信的方法,包括:
在处理器模块与至少一个另一处理器模块处理器之间共享数据;以及
与至少一个另一处理器通信以控制所述数据的共享,其中,与所述至少一个另一处理器存储器映射处理器通信包括控制接收数据,包括:
根据来自所述处理器的数据确认寄存器写信号而向所述另一处理器模块输出数据确认信号;以及
根据来自所述另一处理器模块的数据请求信号以及所述数据确认信号而向所述处理器输出数据请求等待信号,
其中,输出数据确认信号包括:配置直接耦合至所述处理器模块的翻转触发器接收作为输入的来自所述处理器的所述数据确认寄存器写信号,并且向所述另一处理器模块输出所述数据确认信号。
31.根据权利要求30所述的方法,
其中,所述输出数据请求等待信号包括:配置XOR逻辑组合器接收作为第一输入的所述翻转触发器输出、作为第二输入的来自所述另一处理器模块的所述数据请求信号,并且向所述处理器输出所述数据请求等待信号。
32.根据权利要求31所述的方法,其中,输出数据请求等待信号还包括:将来自所述另一处理器模块的所述数据请求信号同步到所述处理器模块的时钟域中。
33.根据权利要求30至32中任一项所述的方法,其中,在处理器模块与至少一个另一处理器模块处理器之间共享数据包括经由存储器共享数据。
34.一种用于通信的装置,包括至少一个处理器和至少一个存储器,该至少一个存储器包括一个或多个程序的计算机代码,所述至少一个存储器和所述计算机代码配置用于利用所述至少一个处理器使得所述装置至少执行如权利要求23至33所述的方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1121272.7A GB2497525A (en) | 2011-12-12 | 2011-12-12 | Controlling shared memory data flow |
GB1121272.7 | 2011-12-12 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103198048A CN103198048A (zh) | 2013-07-10 |
CN103198048B true CN103198048B (zh) | 2018-01-26 |
Family
ID=45560269
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2012206344945U Expired - Fee Related CN203012705U (zh) | 2011-12-12 | 2012-11-21 | 处理器模块 |
CN201210489571.7A Active CN103198048B (zh) | 2011-12-12 | 2012-11-21 | 处理器通信 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2012206344945U Expired - Fee Related CN203012705U (zh) | 2011-12-12 | 2012-11-21 | 处理器模块 |
Country Status (3)
Country | Link |
---|---|
US (2) | US9448951B2 (zh) |
CN (2) | CN203012705U (zh) |
GB (1) | GB2497525A (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2497525A (en) * | 2011-12-12 | 2013-06-19 | St Microelectronics Ltd | Controlling shared memory data flow |
US9866501B2 (en) * | 2013-12-31 | 2018-01-09 | Schneider Electric Systems Usa, Inc. | Virtual switch enabling communication between external objects and simulation objects |
CN107065841B (zh) * | 2017-06-07 | 2019-04-26 | 四川谊田集群科技有限公司 | 一种基于通信的输入输出数据共享的系统及方法 |
CN107643991B (zh) * | 2017-09-22 | 2023-09-19 | 北京算能科技有限公司 | 数据处理芯片和系统、数据存储转发处理方法 |
US10694370B2 (en) * | 2017-10-06 | 2020-06-23 | The Toronto-Dominion Bank | System and method for selectively enabling a data transfer method |
JP7042138B2 (ja) * | 2018-03-30 | 2022-03-25 | 日立Astemo株式会社 | 処理装置 |
JP2021179672A (ja) * | 2020-05-11 | 2021-11-18 | ソニーセミコンダクタソリューションズ株式会社 | メモリモジュール |
GB202105365D0 (en) * | 2021-04-15 | 2021-06-02 | Nordic Semiconductor Asa | Handshake circuits |
CN114490127A (zh) * | 2022-01-20 | 2022-05-13 | Oppo广东移动通信有限公司 | 核间通信方法、装置、电子设备及存储介质 |
CN118394677B (zh) * | 2024-06-27 | 2024-09-17 | 合肥智芯半导体有限公司 | 外设管理装置和芯片 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1221919A (zh) * | 1997-11-06 | 1999-07-07 | 阿尔卡塔尔公司 | 在处理器单元之间交换数据的系统 |
EP1083487A2 (en) * | 1999-09-10 | 2001-03-14 | Texas Instruments Incorporated | Configuration bus reconfigurable/reprogrammable interface for expanded direct memory access processor |
CN203012705U (zh) * | 2011-12-12 | 2013-06-19 | 意法半导体(R&D)有限公司 | 处理器模块 |
Family Cites Families (40)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4549273A (en) * | 1982-12-10 | 1985-10-22 | Ael Microtel Limited | Memory access control circuit |
EP0113379B1 (de) * | 1982-12-13 | 1987-09-30 | Fraunhofer-Gesellschaft Zur Förderung Der Angewandten Forschung E.V. | Rechnerkopplung |
JPS63155351A (ja) * | 1986-12-19 | 1988-06-28 | Yaskawa Electric Mfg Co Ltd | マルチプロセツサシステム |
JPH01239664A (ja) * | 1988-03-22 | 1989-09-25 | Nec Corp | コモンメモリ調停装置 |
US5473756A (en) | 1992-12-30 | 1995-12-05 | Intel Corporation | FIFO buffer with full/empty detection by comparing respective registers in read and write circular shift registers |
DE19580707C2 (de) | 1994-06-28 | 2003-10-30 | Intel Corp | PCI-ZU-ISA-Interrupt-Protokoll-Konverter und -Auswahlmechanismus |
JP3712471B2 (ja) | 1995-07-07 | 2005-11-02 | サン・マイクロシステムズ・インコーポレイテッド | コンピュータシステム及び第1の回路と第2の回路との間でデータを転送するインタフェース回路 |
US6101329A (en) | 1997-02-18 | 2000-08-08 | Lsi Logic Corporation | System for comparing counter blocks and flag registers to determine whether FIFO buffer can send or receive data |
US6226698B1 (en) | 1997-11-10 | 2001-05-01 | Sun Microsystems, Inc. | Method and apparatus for dynamically calculating degrees of fullness of a synchronous FIFO |
US5987628A (en) | 1997-11-26 | 1999-11-16 | Intel Corporation | Method and apparatus for automatically correcting errors detected in a memory subsystem |
US6192428B1 (en) | 1998-02-13 | 2001-02-20 | Intel Corporation | Method/apparatus for dynamically changing FIFO draining priority through asynchronous or isochronous DMA engines in response to packet type and predetermined high watermark being reached |
US6128678A (en) | 1998-08-28 | 2000-10-03 | Theseus Logic, Inc. | FIFO using asynchronous logic to interface between clocked logic circuits |
US6460107B1 (en) | 1999-04-29 | 2002-10-01 | Intel Corporation | Integrated real-time performance monitoring facility |
US6425071B1 (en) | 1999-05-03 | 2002-07-23 | 3Com Corporation | Subsystem bridge of AMBA's ASB bus to peripheral component interconnect (PCI) bus |
US6493803B1 (en) * | 1999-08-23 | 2002-12-10 | Advanced Micro Devices, Inc. | Direct memory access controller with channel width configurability support |
US6701405B1 (en) * | 1999-10-01 | 2004-03-02 | Hitachi, Ltd. | DMA handshake protocol |
US6977979B1 (en) | 2000-08-31 | 2005-12-20 | Hewlett-Packard Development Company, L.P. | Enhanced clock forwarding data recovery |
US6622225B1 (en) * | 2000-08-31 | 2003-09-16 | Hewlett-Packard Development Company, L.P. | System for minimizing memory bank conflicts in a computer system |
US20020078282A1 (en) | 2000-12-18 | 2002-06-20 | International Business Machines Corporation | Target directed completion for bus transactions |
US6952749B2 (en) | 2001-05-02 | 2005-10-04 | Portalplayer, Inc. | Multiprocessor interrupt handling system and method |
US7366882B2 (en) * | 2001-05-10 | 2008-04-29 | Zohair Sahraoui | Address calculation unit for an object oriented processor having differentiation circuitry for selectively operating micro-instructions |
US20030050990A1 (en) * | 2001-06-21 | 2003-03-13 | International Business Machines Corporation | PCI migration semantic storage I/O |
JP2003114864A (ja) * | 2001-10-04 | 2003-04-18 | Hitachi Ltd | データ転送制御回路 |
US7003615B2 (en) | 2002-04-22 | 2006-02-21 | Broadcom Corporation | Tracking a non-posted writes in a system using a storage location to store a write response indicator when the non-posted write has reached a target device |
US7051137B2 (en) | 2002-10-31 | 2006-05-23 | Intel Corporation | Event delivery |
DE10255685B3 (de) | 2002-11-28 | 2004-07-29 | Infineon Technologies Ag | Taktsynchronisationsschaltung |
US7003638B2 (en) * | 2002-12-11 | 2006-02-21 | Standard Microsystems Corporation | Memory bus interface for use in a peripheral device |
US7089380B1 (en) | 2003-05-07 | 2006-08-08 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Method and system to compute a status for a circular queue within a memory device |
US6922740B2 (en) | 2003-05-21 | 2005-07-26 | Intel Corporation | Apparatus and method of memory access control for bus masters |
JP2005352839A (ja) | 2004-06-11 | 2005-12-22 | Matsushita Electric Ind Co Ltd | データ通信装置 |
US20050289253A1 (en) | 2004-06-24 | 2005-12-29 | Edirisooriya Samantha J | Apparatus and method for a multi-function direct memory access core |
US20050289306A1 (en) | 2004-06-28 | 2005-12-29 | Sridhar Muthrasanallur | Memory read requests passing memory writes |
US7624209B1 (en) * | 2004-09-15 | 2009-11-24 | Xilinx, Inc. | Method of and circuit for enabling variable latency data transfers |
JP4415071B2 (ja) * | 2007-06-22 | 2010-02-17 | 富士通マイクロエレクトロニクス株式会社 | メモリ共有システム装置 |
US20090271536A1 (en) * | 2008-04-24 | 2009-10-29 | Atmel Corporation | Descriptor integrity checking in a dma controller |
GB0814484D0 (en) * | 2008-08-07 | 2008-09-10 | Icera Inc | Dma engine |
US8656198B2 (en) | 2010-04-26 | 2014-02-18 | Advanced Micro Devices | Method and apparatus for memory power management |
US8713277B2 (en) | 2010-06-01 | 2014-04-29 | Apple Inc. | Critical word forwarding with adaptive prediction |
US8645767B2 (en) | 2010-06-23 | 2014-02-04 | International Business Machines Corporation | Scalable I/O adapter function level error detection, isolation, and reporting |
US8719506B2 (en) * | 2011-11-21 | 2014-05-06 | Apple Inc. | Push mechanism for quality of service (QoS) support in coherency port |
-
2011
- 2011-12-12 GB GB1121272.7A patent/GB2497525A/en not_active Withdrawn
-
2012
- 2012-11-21 CN CN2012206344945U patent/CN203012705U/zh not_active Expired - Fee Related
- 2012-11-21 CN CN201210489571.7A patent/CN103198048B/zh active Active
- 2012-12-05 US US13/705,435 patent/US9448951B2/en active Active
-
2015
- 2015-11-24 US US14/951,023 patent/US9842067B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1221919A (zh) * | 1997-11-06 | 1999-07-07 | 阿尔卡塔尔公司 | 在处理器单元之间交换数据的系统 |
EP1083487A2 (en) * | 1999-09-10 | 2001-03-14 | Texas Instruments Incorporated | Configuration bus reconfigurable/reprogrammable interface for expanded direct memory access processor |
CN203012705U (zh) * | 2011-12-12 | 2013-06-19 | 意法半导体(R&D)有限公司 | 处理器模块 |
Also Published As
Publication number | Publication date |
---|---|
CN203012705U (zh) | 2013-06-19 |
CN103198048A (zh) | 2013-07-10 |
US9842067B2 (en) | 2017-12-12 |
GB201121272D0 (en) | 2012-01-25 |
US20130151792A1 (en) | 2013-06-13 |
GB2497525A (en) | 2013-06-19 |
US20160077983A1 (en) | 2016-03-17 |
US9448951B2 (en) | 2016-09-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103198048B (zh) | 处理器通信 | |
CN112543925B (zh) | 用于使用专用低延迟链路的多个硬件加速器的统一地址空间 | |
JP4589384B2 (ja) | 高速メモリモジュール | |
CN106104698B (zh) | 用于产生具有可编程延迟的动态随机存取存储器(dram)命令的存储器物理层接口逻辑 | |
US20160188501A1 (en) | Reordering Responses in a High Performance On-Chip Network | |
US20090300568A1 (en) | Bus interface design apparatus and bus interface design method | |
CN102033818B (zh) | 媒体缓冲和流水线式处理组件 | |
CN109683877A (zh) | 一种基于SystemC的GPU软硬件交互TLM系统 | |
CN111352697B (zh) | 灵活的物理功能和虚拟功能映射 | |
US20150347017A1 (en) | Command trapping in an input/output virtualization (iov) host controller (hc) (iov-hc) of a flash-memory-based storage device | |
US10198305B2 (en) | Managing a storage device using a hybrid controller | |
US20150347016A1 (en) | Input/output virtualization (iov) host controller (hc) (iov-hc) of a flash-memory-based storage device | |
CN110019496A (zh) | 数据读写方法和系统 | |
WO2022086718A1 (en) | Secondary device detection using a synchronous interface | |
US10977410B2 (en) | IC routing for silicon circuits with smaller geometries | |
US10268617B2 (en) | Frame format for a serial interface | |
US10223310B2 (en) | Multi-source flow management using elastic FIFO structures | |
US8195441B1 (en) | Hardware co-simulation involving a processor disposed on a programmable integrated circuit | |
KR101753906B1 (ko) | 약하게 오더링된 도메인의 디바이스들에 강하게 오더링된 기록 트랜잭션들을 브리징하는 것, 및 관련된 장치들, 방법들 및 컴퓨터-판독 가능 매체들 | |
JP2010211322A (ja) | ネットワークプロセッサ、受信コントローラ、及びデータ受信処理方法 | |
US9753876B1 (en) | Processing of inbound back-to-back completions in a communication system | |
KR20080016681A (ko) | 단방향성 풀 듀플렉스 인터페이스를 갖는 메모리를 위한포스트된 기록 버퍼용 방법, 장치, 시스템 및 저장 매체 | |
US8904221B2 (en) | Arbitration circuitry for asynchronous memory accesses | |
TW201708836A (zh) | 基於協定之自動化測試器刺激產生器 | |
CN116340217A (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 |