CN100414930C - 内核间报文描述消息的传递方法 - Google Patents

内核间报文描述消息的传递方法 Download PDF

Info

Publication number
CN100414930C
CN100414930C CNB2005100625850A CN200510062585A CN100414930C CN 100414930 C CN100414930 C CN 100414930C CN B2005100625850 A CNB2005100625850 A CN B2005100625850A CN 200510062585 A CN200510062585 A CN 200510062585A CN 100414930 C CN100414930 C CN 100414930C
Authority
CN
China
Prior art keywords
message
description information
entry
field
message description
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
CNB2005100625850A
Other languages
English (en)
Other versions
CN1842056A (zh
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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CNB2005100625850A priority Critical patent/CN100414930C/zh
Publication of CN1842056A publication Critical patent/CN1842056A/zh
Application granted granted Critical
Publication of CN100414930C publication Critical patent/CN100414930C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明公开一种内核间报文描述消息的传递方法,所述的内核间以环形队列进行通信,通过所述的环形队列的读指针和写指针控制进行待传送的各个报文的报文描述消息的接收和发送,该方法包括:在所述的环形队列的每项入口entry的报文描述消息读写控制域中仅设置一个标识一个报文结束的报文结束字段;获取所述的环形队列写指针指向的entry的缓存地址,获取报文描述信息内容后,写入entry中,报文描述消息写入完毕,将报文描述消息的entry中报文结束字段置为真;获取所述的环形队列读指针指向的entry的缓存地址,从所述的读指针指向的entry中读取报文描述消息,检测到entry中报文结束字段为真,则接收该entry中的报文描述消息。本发明由于仅设置报文结束字段,可避免ring吊死问题。

Description

内核间报文描述消息的传递方法
技术领域
本发明涉及多内核处理器中内核间的通信方法,更具体的说,本发明涉及一种多内核处理器中内核间报文描述消息的传递方法。
背景技术
随着信息技术的发展,处理器处理的数据流量越来越大。传统单个处理内核的处理器已无法满足处理性能的要求。因此出现了多个处理内核的处理器,在这种多内核的处理器中,习惯上把一个特定的功能模块在一个处理内核中实现,这一类处理器的内核使用公共的动态随机存取存储器(DRAM,Dynamic Random-Access Memory)、静态随机存取存储器(SRAM,SynchronousRandom-Access Memory)等资源存储处理的数据报文,这样不同的处理内核之间数据报文的传递,并不需要进行数据报文的完整传递,参考图1所示,只需要把数据报文的属性(如数据的存放索引等)等报文描述消息传送给下一个内核的相应模块即可。
良好的消息传送机制是发挥多内核处理器性能的重要因素,由于各个内核模块间的消息传递量很大,因此需要使用高效的消息传递方法,保证内核模块之间消息的高速和可靠传递。
参考图2所示,现有技术中采用ring的方法实现在内核间传送报文描述消息,以内核CPU和内核ME之间的通信为例进行说明,CPU和ME之间的通信是通过两个环形队列(ring)来实现的,两个环形队列的结构一致,由128个entry组成,每个ring由两个指针(读和写),其中ME和CPU各维护一个。
其中ring entry的结构如表一所示:
表一
ENTRY结构中各个长字详细定义如表二所示:
表二
Figure C20051006258500052
Figure C20051006258500061
根据上述的entry结构,具体的报文描述消息传递流程分为接收端和发送端分别描述如下:
接收端:
1)若read_ptr!=write_ptr,开始接收read_ptr指向的entry的报文描述消息。
2)若entry中的D字段为真,处理entry中的buffer pointer指向的报文描述消息,若D标志为假,等待发送端把entry中D字段设置为真。
3)当前entry接收处理完成,把entry中R字段置为真,D字段置为假,read_ptr加一。
4)返回1)继续接收。
发送端:
1)如果read_ptr!=write_ptr+1,向write_ptr指向的entry发送报文描述消息。
2)释放entry中上次接收完的buffer pointer,如果buffer pointer被接收端修改,可能导致buffer pointer丢失。
3)如果entry中的R字段为真,向entry中的相应消息字段填写报文描述消息,如果所述的R字段为假,等待接收端把R字段设置为真。
4)当前entry发送处理完成,把D字段置为真,R字段设置为假,write_ptr加一。
5)返回1)继续接收。
上述现有技术存在如下的缺点:
首先,根据上述的entry结构,报文描述消息读写控制域中包括R、D、S、E字段,在对所述的R、D、S字段的处理时会造成ring异常吊死。例如接收端内核如果发现read_ptr不等于write_ptr,认为消息需要接收,但是entry中的D字段(因为误操作)没有设置成真,则接收端内核会在当前entry一直等待,使ring吊死;反之如果发送端出现R字段设置错误,处理也会停止。
其次,上述现有技术中若对entry结构的R、D字段处理异常或buffer不释放,可能导致buffer丢失,使报文的处理出现问题。
再次,由于报文缓存地址buffer addr和R、D、S、E设置在一个长字中,具体处理时,内核读写该长字可能导致该长字错误(例如CPU通过PCI读写该长字),使报文缓存地址丢失。例如在对R、D、S、E等字段的操作中可能造成buffer pointer的错误(由于在一个长字中,误操作难以避免),正确的bufferpointer指向的缓存buffer将会丢失。
发明内容
本发明解决的技术问题是提供一种内核间报文描述消息的传递方法,以避免传递消息的环形队列异常吊死。
为解决上述问题,本发明提供的内核间报文描述消息的传递方法,包括:
A、在所述的环形队列的每项入口entry的报文描述消息读写控制域中仅设置标识一个报文结束的报文结束字段;
B、发送报文描述信息时,获取所述的环形队列写指针指向的entry的缓存地址,获取报文描述信息内容,将所述的报文描述信息内容写入写指针指向的entry中,一个报文的报文描述消息写入完毕,将缓存该报文最后一个报文描述消息的entry中报文结束字段置为真;
C、接收报文描述消息时,获取所述的环形队列读指针指向的entry的缓存地址,从所述的读指针指向的entry中读取报文描述消息,检测到entry中报文结束字段为真,则接收该entry中的报文描述消息后,读取一个报文的报文描述消息完毕。
其中,步骤B之前,还包括:
B1、对环形队列进行初始化,分配该环形队列各个入口entry的缓存地址。
其中,所述的报文描述消息包括:报文缓存地址、地址偏移、报文类型、报文长度和报文连接特性。
其中,所述的环形队列的每项入口entry中以一个长字标识所述的报文缓存地址。
其中,所述的环形队列的入口entry包括如下字段:
长字0,标识报文结束的报文结束字段、保留字段和地址偏移字段;
长字1,报文连接特性字段;
长字2,报文类型字段和报文长度字段
长字3,报文缓存地址字段。
与现有技术相比,本发明具有以下有益效果:
首先,本发明的环形队列ring的entry结构中报文描述消息读写控制域中仅设置标识一个报文结束的报文结束字段,各个内核都根据所述的报文结束字段进行报文描述消息的接收和发送,因此可避免现有技术中对R、D和S字段处理造成的ring异常吊死问题;
其次,本发明中ring的entry结构中没有设置R、D字段,可避免现有技术中若R、D字段处理异常或buffer不释放,导致buffer丢失,进一步使报文处理出现的问题情况;
再次,本发明中ring的enrty结构中以一个单独的长字标识报文缓存地址,报文结束字段E设置在另一个长字中,由内核读写该E字段所在的长字时,即使读写该长字错误,也不会出现报文缓存地址buffer addr丢失的问题。
附图说明
图1是现有技术多内核处理器中内核间传递报文描述消息的示意图;
图2是现有技术中内核间以环形队列进行通信的示意图;
图3是本发明内核间报文描述消息的传递方法中内核间以环形队列进行通信的示意图;
图4是本发明内核间报文描述消息的传递方法中根据读写指针进行消息读写的示意图;
图5是本发明内核间报文描述消息的传递方法中向ring中写入报文描述消息的流程图;
图6是本发明内核间报文描述消息的传递方法中从ring中读取报文描述消息的流程图。
具体实施方式
参考图3,本发明中内核之间的报文描述消息传递通过ring进行,每个内核拥有一个ring供且仅供本内核取报文描述消息进行处理,但是每个ring的报文描述消息可以由多个内核提供,具体的,本发明中应用的ring是一种环形队列,一般由N个entry组成,访问N后归0。Ring的访问位置和许可由两个指针write_ptr、read_ptr维护,write_ptr为当前写的指针,read_ptr为当前读的指针。
参考图4,本发明中Ring满的状态为write_ptr=read_ptr-1。Ring空的状态为write_ptr=read_ptr。发送方只要ring不是满的状态就可以往write_ptr指向的ring enrty中写消息。接收方只要ring不是空的状态就应该从read_ptr指向的ringenrty中读数据。
本发明中所述的环形队列的每项入口entry的报文描述消息读写控制域中仅设置标识一个报文结束的报文结束字段;具体发送消息时,通过所述的报文结束字段将传递的各个报文的报文描述消息写入环形队列中;接收消息时,同样以所述的报文结束字段从所述的环形队列中读取传递的各个报文的报文描述信息。由于读写报文描述消息的内核都仅根据报文结束字段进行消息读写,各个内核的操作流程一致,不会出现ring异常问题。
通常在内核之间传送的是报文,传递一个报文需要的报文描述消息通常包括:
报文存放的buffer的地址、偏移,以便用于找到报文的内容;
如果报文存放在多个buffer,报文的结束标志,用于定界一个完整报文。
报文类型、长度以及连接特性(对于ATM报文,连接特性包括:PVC信息等)。
本发明中同样需要通过在ring的entry结构中设置相应的消息字段存储上述的报文描述消息。
下面以内核间传递ATM报文的具体例子进行说明。
本实施例中ring的entry可以设置如表三所示:
表三
Figure C20051006258500111
其中各个长字的定义如表四所示:
表四
Figure C20051006258500112
Figure C20051006258500121
上述ring的entry结构中报文描述消息的控制域中仅设置报文结束字段E,另外,报文缓存地址Free_Buffer_Address单独设置在一个长字中(本实施例设置在长字3)。
下面具体说明根据上述ring的entry结构进行报文描述消息的传递流程。
本发明中需要对ring进行初始化操作,给ring的各个entry分配一个缓存buffer,并计算该缓存buffer的缓存地址buffer_addr,然后封装entry的缓存地址buffer_addr,设置该entry的其他字段为0。
参考图5,该图是本发明内核间报文描述消息的传递方法中向ring中写入报文描述消息的流程图,具体的,向ring中写入报文描述消息主要包括如下步骤:
在步骤10,发送报文描述消息时,获取所述的环形队列写指针指向的entry的缓存地址;
然后在步骤11,获取报文缓存地址、地址偏移、报文类型和报文连接特性等的报文描述消息;
进一步在步骤12,将报文缓存地址、地址偏移、报文类型和报文连接特性等的报文描述消息写入写指针指向的entry的相应消息字段中;
最后在步骤13,一个报文的报文描述消息写入完毕,将缓存该报文最后一个报文描述消息的entry中报文结束字段置为真。
参考图6,该图是本发明内核间报文描述消息的传递方法中从ring中读取报文描述消息的流程图。从ring接收报文描述消息主要包括以下步骤:
在步骤20,接收报文描述消息时,获取所述的环形队列读指针指向的entry的缓存地址;
在步骤21,从所述的读指针指向的entry的缓存地址的entry相应消息字段中读取报文描述信息;
在步骤22,检测到entry中报文结束字段为真,则接收该entry中的报文描述信息后,读取一个报文的报文描述消息完毕。
以上所述仅为本发明的优选实施方式,并不构成对本发明保护范围的限定。任何在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的权利要求保护范围之内。

Claims (5)

1. 一种内核间报文描述消息的传递方法,所述的内核间以环形队列进行通信,通过所述的环形队列的读指针和写指针控制进行传递的各个报文的报文描述消息的接收和发送,其特征在于,包括:
A、在所述的环形队列的每项入口entry的报文描述消息读写控制域中仅设置一个标识一个报文结束的报文结束字段;
B、发送报文描述信息时,获取所述的环形队列写指针指向的entry的缓存地址,获取报文描述信息内容,将所述的报文描述信息内容写入写指针指向的entry中,一个报文的报文描述消息写入完毕,将缓存该报文最后一个报文描述消息的entry中报文结束字段置为真;
C、接收报文描述消息时,获取所述的环形队列读指针指向的entry的缓存地址,
从所述的读指针指向的entry中读取报文描述消息,检测到entry中报文结束字段为真,则接收该entry中的报文描述消息后,读取一个报文的报文描述消息完毕。
2. 根据权利要求1所述的内核间报文描述消息的传递方法,其特征在于,步骤B之前,还包括:
B1、对环形队列进行初始化,分配该环形队列各个入口entry的缓存地址。
3. 根据权利要求1-2任一项所述的内核间报文描述消息的传递方法,其特征在于,所述的报文描述消息包括:报文缓存地址、地址偏移、报文类型、报文长度和报文连接特性。
4. 根据权利要求3所述的内核间报文描述消息的传递方法,其特征在于,所述的环形队列的每项入口entry中以一个长字标识所述的报文缓存地址。
5. 根据权利要求4所述的内核间报文描述消息的传递方法,其特征在于,所述的环形队列的入口entry包括如下字段:
长字0,标识报文结束的报文结束字段、保留字段和地址偏移字段;
长字1,报文连接特性字段;
长字2,报文类型字段和报文长度字段;
长字3,报文缓存地址字段。
CNB2005100625850A 2005-03-31 2005-03-31 内核间报文描述消息的传递方法 Expired - Fee Related CN100414930C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB2005100625850A CN100414930C (zh) 2005-03-31 2005-03-31 内核间报文描述消息的传递方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB2005100625850A CN100414930C (zh) 2005-03-31 2005-03-31 内核间报文描述消息的传递方法

Publications (2)

Publication Number Publication Date
CN1842056A CN1842056A (zh) 2006-10-04
CN100414930C true CN100414930C (zh) 2008-08-27

Family

ID=37030904

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2005100625850A Expired - Fee Related CN100414930C (zh) 2005-03-31 2005-03-31 内核间报文描述消息的传递方法

Country Status (1)

Country Link
CN (1) CN100414930C (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110018914B (zh) * 2019-03-26 2021-08-13 中国人民银行清算总中心 基于共享内存的消息采集方法及装置
CN111158911A (zh) * 2019-12-27 2020-05-15 迈普通信技术股份有限公司 一种处理器配置方法、装置、处理器及网络设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020112105A1 (en) * 2001-02-12 2002-08-15 Mordechai Daniel Method and apparatus for efficient messaging between memories across a PCI bus
US6636949B2 (en) * 2000-06-10 2003-10-21 Hewlett-Packard Development Company, L.P. System for handling coherence protocol races in a scalable shared memory system based on chip multiprocessing
CN1529256A (zh) * 2003-10-17 2004-09-15 中兴通讯股份有限公司 基于双环形队列、非中断式pci通信方法
CN1545216A (zh) * 2003-11-20 2004-11-10 中兴通讯股份有限公司 网络处理器中核心处理器与微引擎之间的通信方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6636949B2 (en) * 2000-06-10 2003-10-21 Hewlett-Packard Development Company, L.P. System for handling coherence protocol races in a scalable shared memory system based on chip multiprocessing
US20020112105A1 (en) * 2001-02-12 2002-08-15 Mordechai Daniel Method and apparatus for efficient messaging between memories across a PCI bus
CN1529256A (zh) * 2003-10-17 2004-09-15 中兴通讯股份有限公司 基于双环形队列、非中断式pci通信方法
CN1545216A (zh) * 2003-11-20 2004-11-10 中兴通讯股份有限公司 网络处理器中核心处理器与微引擎之间的通信方法

Also Published As

Publication number Publication date
CN1842056A (zh) 2006-10-04

Similar Documents

Publication Publication Date Title
US8230180B2 (en) Shared memory burst communications
CN101304373B (zh) 一种实现局域网内高效传输大块数据的方法及系统
US20060069869A1 (en) Enqueueing entries in a packet queue referencing packets
CN102006241B (zh) 一种多个应用共享一个缓冲区的报文接收方法
CN101178694A (zh) Intel e1000零拷贝的方法
CN113660351B (zh) 数据通信方法、装置、通信终端及计算机可读存储介质
CN112698959A (zh) 一种多核通信方法和装置
CN111538694B (zh) 一种用于网络接口支持多链接和重传的数据缓存方法
CN110457251B (zh) 一种多处理器间的数据通信方法及装置
EP1625506B1 (en) Usb host controller with memory for transfer descriptors
CN100414930C (zh) 内核间报文描述消息的传递方法
JP2008512942A5 (zh)
TWI344083B (en) Method, apparatus and system for posted write buffer for memory with unidirectional full duplex interface
US7610415B2 (en) System and method for processing data streams
US9288163B2 (en) Low-latency packet receive method for networking devices
TWI223747B (en) Increasing memory access efficiency for packet applications
US20110283068A1 (en) Memory access apparatus and method
US6766358B1 (en) Exchanging messages between computer systems communicatively coupled in a computer system network
WO2022247195A1 (zh) 数据存储器、数据存储、读取方法、芯片及计算机设备
JP2002366427A (ja) プロセッサ間通信システム及びそれに用いるプロセッサ間通信方法
KR100231707B1 (ko) 통신 장비의 디엠에이 처리 방법 및 그 장치
WO2001059567A2 (en) Method for reducing processor interrupt load
JP2018142084A (ja) 情報処理装置
CN107689996B (zh) 数据传输方法、装置及终端设备
US7284075B2 (en) Inbound packet placement in host memory

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
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20080827