CN111008164A - 一种基于存储映射类总线的节点间多缓存式通信方法 - Google Patents

一种基于存储映射类总线的节点间多缓存式通信方法 Download PDF

Info

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
Application number
CN201911228161.5A
Other languages
English (en)
Inventor
刘存泽
刘荣林
李翼翰
尚怡祥
周聪
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.)
Tianjin 712 Communication and Broadcasting Co Ltd
Original Assignee
Tianjin 712 Communication and Broadcasting Co Ltd
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 Tianjin 712 Communication and Broadcasting Co Ltd filed Critical Tianjin 712 Communication and Broadcasting Co Ltd
Priority to CN201911228161.5A priority Critical patent/CN111008164A/zh
Publication of CN111008164A publication Critical patent/CN111008164A/zh
Pending 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
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing 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
    • 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/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus 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)、随着发送和接收操作的交替进行,最终发送方空闲,即没有新的数据发送,而接收方已经取出所有数据包,此时发送指针和接收指针指向同一个空的子缓冲区。
CN201911228161.5A 2019-12-04 2019-12-04 一种基于存储映射类总线的节点间多缓存式通信方法 Pending CN111008164A (zh)

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)

* Cited by examiner, † Cited by third party
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 江苏中科芯核电子科技有限公司 一种基于环形缓冲区的无线通信数据处理方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
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
US4926415A (en) Local area network system for efficiently transferring messages of different sizes
EP0042447B1 (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
RU2120138C1 (ru) Способ передачи данных от источника к одному или нескольким приемникам и система изображения данных
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) 信号受信装置
EP0603443A1 (en) Token star bridge
JPH088572B2 (ja) 通信システムにおけるノード装置
CN103141050A (zh) 快速通道互联系统中数据包重传方法、节点
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
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) 一种基于存储映射类总线的节点间多缓存式通信方法
CN117015764A (zh) 集成计算设备之间的消息通信
JP2002164924A (ja) パケット処理装置
JPS6278931A (ja) パケツト交換型マルチキヤスト伝送用送受信装置
EP2895955A1 (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