CN111008164A - 一种基于存储映射类总线的节点间多缓存式通信方法 - Google Patents
一种基于存储映射类总线的节点间多缓存式通信方法 Download PDFInfo
- Publication number
- CN111008164A CN111008164A CN201911228161.5A CN201911228161A CN111008164A CN 111008164 A CN111008164 A CN 111008164A CN 201911228161 A CN201911228161 A CN 201911228161A CN 111008164 A CN111008164 A CN 111008164A
- Authority
- CN
- China
- Prior art keywords
- buffer
- sub
- data
- receiving
- pointer
- 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
Links
Images
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/38—Information transfer, e.g. on bus
- G06F13/382—Information transfer, e.g. on bus using universal interface adapter
- G06F13/385—Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
-
- 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/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Small-Scale Networks (AREA)
Abstract
本发明公开了一种基于存储映射类总线的节点间多缓存式通信方法。本方法设有接收指针和发送指针两个节点,即接收方和发送方,发送指针指示发送方数据应该存储在哪一个子缓冲中,而接收指针指示接收方应该从哪一个子缓冲区读取数据。本发明解决了传统单缓冲所带来的问题:当接收方遇到中断拥塞时,出现数据覆盖或丢失。而使用本方法具有如下优点:1)如果接收缓冲区足够大的话理论上可以不丢包;2)由于发送方和接收方处于异步模式,即只要在接收方有空闲接收子缓冲的情况下,就可以无间隔的高速发送数据到接收方,即使有个别慢速节点的存在,也不至于拖慢整个网络的处理速度,大大提高了系统的响应速度和吞吐率。
Description
技术领域
本发明涉及存储映射类总线设备,特别是涉及一种基于存储映射类总线的节点间多缓存式通信方法,该方法用于高速互联网络中的节点与节点之间的互相通信。
背景技术
随着通信技术的发展,出现了支持存储映射方式的总线设备,像rapidIO、PCIe等。使用这种总线组建成高速互联网络,通信的双方仅仅需要互相建立地址映射关系,即把对方的物理内存映射到自己的物理地址空间上。这样访问对方设备的内存就像访问自己的内存一样方便。
支持存储映射总线,像rapidIO、PCIe等,节点间普遍采用单缓冲式的内存共享机制进行通信,其通信原理如下:
首先发送方通过存储映射的方式将一包数据直接写入接收方的内存中(缓冲模式为单缓冲),然后发送中断通知接收方有数据到来,随后接收方从自己的内存中取出数据,如图1所示。
另外一种机制是发送方将待发送的数据写入自己的内存中(缓冲模式为单缓冲),然后通过中断通知接收方。接收方收到中断后通过存储映射的方式从发送方的内存中取回数据,如图2所示。
这两种简单的单缓冲通信机制存在很严重的问题。如果接收方系统构架较为复杂时,会存在很多中断源,这样会导致中断事件不能及时处理,而接收方是依赖于发送方的中断才会去收取数据。这种中断的延迟直接导致数据取出的延迟。更糟糕的是,由于中断的延迟,上一组数据还没有来得及取走,而下一组数据又到来了,从而使上次的数据被覆盖(因为只有一个缓冲区)导致数据丢失或多次中断取到重复的数据。这种通信技术对于某些依赖数据可靠的系统,是完全不能使用的。
现在行业内普遍采用单缓冲通信机制存在的问题是当数据收取不及时,导致数据被覆盖及丢失。而在要求数据可靠的系统中使用,这种机制不符合需求。如果一定要使用,势必要加入同步机制,这种机制就是要求发送方不断的查询接收方的接收状态,显然这种同步机制会拖慢网络中的所有节点的处理速度,在高速的传输系统,明显不适用。
发明内容
针对现有技术存在的问题,本发明提供一种基于存储映射类总线的节点间多缓存式通信方法,本方法采用多缓冲的通信机制,解决了单缓冲方式所带来的瓶颈。
本发明采取的技术方案是:一种基于存储映射类总线的节点间多缓存式通信方法,其特征在于,设有接收指针和发送指针的两个节点,即接收方和发送方,发送指针指示发送方数据应该存储在哪一个子缓冲区中,而接收指针指示接收方应该从哪一个子缓冲区开始读取数据;所述方法有如下步骤:
(1)、发送方和接收方约定每包数据的最大数据量,然后根据单包的最大数据量,将接收方的单缓冲区细划分出多个子缓冲区,形成多缓冲机制;每个子缓冲区只存放一个数据包。
(2)、发送方通过存储映射方式依次将每包数据存入接收多缓冲区的子缓冲区中,子缓冲区的选择依据发送指针的值;当发送方成功发送数据包到子缓冲区后更新发送指针的值,使发送指针指向多缓冲区中的下一个空的子缓冲区;当存储到最后一个子缓冲区时,自动跳转到多缓冲区的第一个缓冲区,形成首尾相接的环形缓冲结构。
(3)、当发送方正确发送一包数据到接收多缓冲区的子缓冲区中后,发送方发送中断信号到接收方,通知接收方有新数据存入接收子缓冲区中。
(4)、接收方收到中断后,按照接收指针的值所指向的子缓冲区开始依次读取所有已被发送方存入数据包的子缓冲区;当每读取一个子缓冲区后,更新接收指针的值,让它不断指向下一个未读取数据的子缓冲区,直至接收指针和发送指针值相等,即接收多缓冲区中的数据包已全部被读取。
(5)、随着发送和接收操作的交替进行,最终发送方空闲,即没有新的数据发送,而接收方已经取出所有数据包,此时发送指针和接收指针指向同一个空的子缓冲区。
本发明的有益效果是:本发明解决了传统单缓冲所带来的问题:当接收方遇到中断拥塞时,出现数据覆盖或丢失。而使用本方法具有如下优点:1)如果接收缓冲区足够大的话理论上可以不丢包;2)由于发送方和接收方处于异步模式,即只要在接收方有空闲接收子缓冲的情况下,就可以无间隔的高速发送数据到接收方,即使有个别慢速节点的存在,也不至于拖慢整个网络的处理速度,大大提高了系统的响应速度和吞吐率。
附图说明
图1是背景技术中第一种单缓冲区存储映射类型示意图;
图2是背景技术中第二种单缓冲区存储映射类型示意图;
图3是本发明基于存储映射类总线的节点间多缓冲区示意图;
图4是是本发明多缓冲区发送/接收具体实例示意图;
图5是本发明发送方发送流程图;
图6是本发明接收方接收流程图。
具体实施方式
以下结合附图和实施例对本发明作进一步说明。
本方法的设计原理是:发送方和接收方约定每包数据的最大数据量,然后根据单包的最大数据量,将接收方的单缓冲区细划分出多个子缓冲区,形成多缓冲机制。发送方依次将数据包写到这些子缓冲区,当写到最后一个子缓冲区时,自动跳到多缓冲区的第一个缓冲区,这样就形成首尾相接的环形型结构,如图3所示。
要想接收方和发送方能够正确的接收和发送数据,就必须有两个指针来辅助完成,即“接收指针”和“发送指针”。“发送指针”告诉发送方数据应该存储在哪一个子缓冲中,而接收指针指示接收方应该从哪一个子缓冲区开始读取数据。发送指针和接收指针在初始状态时都同时指向第一个子缓冲区。发送方发送第一包数据到发送指针值所指向的子缓冲区,即第一个子缓冲区。发送方增加发送指针数值让它指向下一个空的子缓冲区,即第二个子缓冲区。随后发送方还需向接收方发送中断来通知接收方有新数据包存入子缓冲区中。接收方如果空闲可以读取第一个子缓冲区中的数据包,并增加接收指针的值让它指向下一个待收取的子缓冲区;接收方如果繁忙不能马上收取第一个子缓冲区中的数据包,发送方可以继续向第二个、第三个及其它后面的子缓冲区中发送数据包。一旦接收方空闲,会按照接收指针的值所指向的子缓冲区开始连续读取每一个已被发送方存入数据包的子缓冲区,每读取完一个子缓冲区就增加接收指针的值,使其不断的指向下一个待收取的子缓冲区,直至接收指针和发送指针值相等,此时状态为接收方已收取所有数据包,接收多缓冲区空。随着发送和接收操作的交替进行。最终发送方空闲(即没有新的数据发送),而接收方已经收取所有数据。此时发送指针和接收指针又都指向同一个空的子缓冲区,如图4所示。
发送方首先判断收发指针的值是否相等,如果不相等就发送一包数据到发送指针的值所指向的接收子缓冲区中,并将发送指针的值加一;如果收发指针的值相等,需要判断接收方多缓冲区中是否有未取出的历史数据,若有历史数据说明接收方多缓冲区已满,发送方停止发送或延时重发,若无历史数据,发送方发一包数据到发送指针的值所指向的接收子缓冲区中,并将发送指针加一;如果发送方成功将数据发送到接收方的子缓冲区中,发送方需要发送中断通知接收方有新数据存入其接收子缓冲区中,如图5所示。
接收方收到发送方发送来的中断,启动接收过程。接收方首先获取收发指针的值,并根据接收指针的值读取接收子缓冲区中数据包,并将接收指针加一,然后判断接收指针值是否与发送指针值相等。如果发送指针和接收指针值相等,说明接收方已经取出所有接收子缓冲区中的所有历史数据,接收缓冲区空;如果发送指针和接收指针值不相等,需要继续读取接收指针的值所指向的接收子缓冲区中的数据,并将接收指针加一,不断读取接收子缓冲区,直至收发指针值相等,如图6所示。
本发明采用多缓冲结合收发指针的机制,实现了跨硬件平台之间高效的数据交换方法。本方法区别于传统的低效的共享内存式(单缓冲)方法。其应用在由存储映射类总线(像rapidIo或PCIe)组成的高速互联网络中的节点与节点之间的互相通信。
Claims (1)
1.一种基于存储映射类总线的节点间多缓存式通信方法,其特征在于,设有接收指针和发送指针的两个节点,即接收方和发送方,发送指针指示发送方数据应该存储在哪一个子缓冲中,而接收指针指示接收方应该从哪一个子缓冲区开始读取数据;
所述方法有如下步骤:
(1)、发送方和接收方约定每包数据的最大数据量,然后根据单包的最大数据量,将接收方的单缓冲区细划分出多个子缓冲区,形成多缓冲机制;每个子缓冲区只存放一个数据包;
(2)、发送方通过存储映射方式依次将每包数据存入接收多缓冲区的子缓冲区中,子缓冲区的选择依据发送指针的值;当发送方成功发送数据包到子缓冲区后更新发送指针的值,使发送指针指向多缓冲区中的下一个空的子缓冲区;当存储到最后一个子缓冲区时,自动跳转到多缓冲区的第一个缓冲区,形成首尾相接的环形缓冲结构;
(3)、当发送方正确发送一包数据到接收多缓冲区的子缓冲区中后,发送方发送中断信号到接收方,通知接收方有新数据存入接收子缓冲区中;
(4)、接收方收到中断后,按照接收指针的值所指向的子缓冲区开始依次读取所有已被发送方存入数据包的子缓冲区;当每读取一个子缓冲区后,更新接收指针的值,让它不断指向下一个未读取数据的子缓冲区,直至接收指针和发送指针值相等,即接收多缓冲区中的数据包已全部被读取;
(5)、随着发送和接收操作的交替进行,最终发送方空闲,即没有新的数据发送,而接收方已经取出所有数据包,此时发送指针和接收指针指向同一个空的子缓冲区。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911228161.5A CN111008164A (zh) | 2019-12-04 | 2019-12-04 | 一种基于存储映射类总线的节点间多缓存式通信方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911228161.5A CN111008164A (zh) | 2019-12-04 | 2019-12-04 | 一种基于存储映射类总线的节点间多缓存式通信方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111008164A true CN111008164A (zh) | 2020-04-14 |
Family
ID=70115536
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911228161.5A Pending CN111008164A (zh) | 2019-12-04 | 2019-12-04 | 一种基于存储映射类总线的节点间多缓存式通信方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111008164A (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1512373A (zh) * | 2002-12-26 | 2004-07-14 | 华为技术有限公司 | 一种多cpu通信的方法 |
CN1780254A (zh) * | 2004-11-17 | 2006-05-31 | 华为技术有限公司 | 网络处理器中使用缓冲区的方法 |
CN103957089A (zh) * | 2014-04-28 | 2014-07-30 | 上海大学 | 一种高可靠线速数据通信方法 |
CN108768884A (zh) * | 2018-04-27 | 2018-11-06 | 江苏中科芯核电子科技有限公司 | 一种基于环形缓冲区的无线通信数据处理方法 |
-
2019
- 2019-12-04 CN CN201911228161.5A patent/CN111008164A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1512373A (zh) * | 2002-12-26 | 2004-07-14 | 华为技术有限公司 | 一种多cpu通信的方法 |
CN1780254A (zh) * | 2004-11-17 | 2006-05-31 | 华为技术有限公司 | 网络处理器中使用缓冲区的方法 |
CN103957089A (zh) * | 2014-04-28 | 2014-07-30 | 上海大学 | 一种高可靠线速数据通信方法 |
CN108768884A (zh) * | 2018-04-27 | 2018-11-06 | 江苏中科芯核电子科技有限公司 | 一种基于环形缓冲区的无线通信数据处理方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5495482A (en) | Packet transmission system and method utilizing both a data bus and dedicated control lines | |
US6081844A (en) | Point-to-point interconnect communications utility | |
US4380063A (en) | Flow control mechanism for block switching nodes | |
US4292623A (en) | Port logic for a communication bus system | |
US8155136B2 (en) | Single network interface circuit with multiple-ports and method thereof | |
US6542513B1 (en) | Optimistic, eager rendezvous transmission mode and combined rendezvous modes for message processing systems | |
Penney et al. | Survey of computer communications loop networks: Part 1 | |
JPH06197130A (ja) | 高速パケット交換装置およびデータパケットの経路指定方法 | |
JPH0832644A (ja) | 信号受信装置 | |
JP2001524727A (ja) | 低レイテンシ共有メモリスイッチ構造 | |
EP0603443A1 (en) | Token star bridge | |
HUT67196A (en) | Communication apparatus and method for transferring data from a source to one (or) more receivers | |
JPH088572B2 (ja) | 通信システムにおけるノード装置 | |
US5459836A (en) | Inter-processor communication net | |
TW439373B (en) | Selection technique for preventing a source port from becoming a destination port in a multi-port bridge for a local area network | |
US6157951A (en) | Dual priority chains for data-communication ports in a multi-port bridge for a local area network | |
CN117015764A (zh) | 集成计算设备之间的消息通信 | |
JPH02303242A (ja) | バス中継装置 | |
US6035335A (en) | Optimistic, eager rendezvous transmission system and combined rendezvous system for message processing, and related data structures | |
US4550401A (en) | Delivery information packet switching system | |
CN111008164A (zh) | 一种基于存储映射类总线的节点间多缓存式通信方法 | |
US4612541A (en) | Data transmission system having high-speed transmission procedures | |
JP2002164924A (ja) | パケット処理装置 | |
JPS6278931A (ja) | パケツト交換型マルチキヤスト伝送用送受信装置 | |
WO2014043309A1 (en) | Method of random access message retrieval from first-in-first-out transport mechanism |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20200414 |
|
WD01 | Invention patent application deemed withdrawn after publication |