一种多处理器的数据交换方法和装置制造方法
【专利摘要】本发明提供了一种多处理器的数据交换方法和装置,主机的物理内存映射到通信总线上,主机与至少一个从机共享所述的主机的物理内存,所述主机和每个从机的处理器通过通信总线访问共享的物理内存,本发明实现了主机物理内存的共享,从机可自由读写该共享的物理内存,从而使得读写速率与通信总线的时钟频率相同,可以达到极小的存储延时,存取速度快。
【专利说明】一种多处理器的数据交换方法和装置
【技术领域】
[0001]本发明涉及计算机【技术领域】,尤其是一种多处理器的数据交换方法和装置。
【背景技术】
[0002]在现有的基于PCI (Peripheral Component Interconnect,外设部件互连标准)总线或 CPCI (Compact Peripheral Component Interconnect,紧凑型外设部件互连标准)总线的数据交换系统中,只能实现主处理器与从处理器之间的数据交换,而从处理器与从处理器之间的数据交换需要通过主处理器转发才能实现。并且现有技术中,系统对广播数据或者组播数据的读写不能够提供很好的支持。
【发明内容】
[0003]本发明的目的是提供一种多处理器的数据交换方法和装置,一方面,将主机的物理内存映射到通信总线上实现物理内存的共享,所述主机和所有从机均可通过通信总线访问该物理内存,另一方面,将所述主机和所有从机的寄存器映射到通信总线上,形成一寄存器地址空间,所述主机和所有从机均可通过通信总线访问寄存器地址空间并改写本地或对方的寄存器的内容,实现了从机与从机之间的自由访问。
[0004]为了解决上述技术问题,本发明采用如下技术方案:
[0005]一种多处理器的数据交换方法,其特征在于:主机的物理内存映射到通信总线上,主机与至少一个从机共享所述的主机的物理内存,所述主机和每个从机的处理器通过通信总线访问共享的物理内存。
[0006]优选的,所述主机和各个从机的寄存器分别映射到通信总线上,每个寄存器被分配不同的地址,从而形成一寄存器地址空间,所述主机和每个从机的处理器通过通信总线访问所述寄存器地址空间,读写寄存器内容。
[0007]优选的,当主机和/或每个从机通过中断机制进行物理内存的数据读取时,所述的寄存器为中断寄存器,主机通过通信总线访问所述寄存器地址空间,改写至少一个从机的中断寄存器内容,或者,每个从机通过通信总线访问所述寄存器地址空间,改写主机或其余至少一个从机的中断寄存器内容,从而触发对方的中断,引起中断触发的主机和/或每个从机通过中断服务程序通知应用程序调用读取接口访问物理内存中的数据区。
[0008]优选的,当主机和/或每个从机通过轮询方式进行物理内存的数据读取时,主机和/或每个从机通过调用读写接口访问物理内存中的数据区进行数据读取。
[0009]优选的,主机和/或每个从机对主机的共享物理内存中的数据区分别定义访问属性,包括读或写;若主机和/或每个从机与数据区有写入关系,则在所述主机和/或每个从机中将此数据区的写属性定义为有,否则定义为无;若主机和/或每个从机与数据区有读取关系,则在所述主机和/或每个从机中将此数据的读属性定义为有,否则定义为无;主机和/或每个从机对共享的物理内存的的数据读写方法包括以下一种或几种:主机写入数据,主机和/或至少一个从机读取数据,或者,一个从机写入数据,主机和/或至少一个从机读取数据,或者,主机和至少一个从机写入数据,主机和/或至少一个从机读取数据,或者,多个从机写入数据,主机和/或至少一个从机读取数据;主机和从机通过以上方法读写主机的共享物理内存的数据处理单播数据、组播数据以及广播数据。
[0010]优选的,通过面包店算法实现主机和/或每个从机中的进程或线程对物理内存中的临界数据区的互斥访问,所述互斥访问的步骤包括:
[0011]A.主机和/或每个从机中的进程或线程获取本地互斥量,则获取到本地互斥量的所述进程或线程调用读写接口,否则所述进程或线程等待被其余进程或线程释放的本地互斥量,所述本地互斥量由主机和/或每个从机中的操作系统提供,用于保证主机和每个从机在一个时刻最多只有一个进程或线程正在调用共享物理内存的读写接口;
[0012]B.所述进程或线程调用读写接口后,首先通过通信总线访问面包店数据区,对所述面包店数据区的每个变量的访问都是原子的;
[0013]C.所述进程或线程根据面包店算法对面包店数据区进行数次访问后,判断所述进程或线程是否获得所述共享物理内存的临界数据区的访问权,若获得访问权,则读写临界数据区;
[0014]D.读写完成后,根据面包店算法修改对应的面包店数据区中的变量,然后释放保护读写接口的本地互斥量。
[0015]一种多处理器的数据交换装置,包括主机板卡、若干个从机板卡、总线板卡,主机板卡和从机板卡通过总线板卡相互通信,其特征在于:主机板卡的集成有第一处理器以及和所述的第一处理器通信的寄存器和用于数据共享的物理内存,每个从机板卡集成有相互通信的处理器和寄存器,从机板卡的处理器和所述的物理内存通信。
[0016]优选的,所述主机板卡的第一处理器和各个从机板卡的处理器通过总线板卡与主机板卡、从机板卡的寄存器通信。
[0017]优选的,所述总线板卡集成在一背板上,所述的背板上设置主机板卡插接件和若干个从机板卡插接件,所述的主机板卡和从机板卡插接在相应的插接件上。
[0018]优选的,所述的背板上还设置有电源模块板卡插接件,电源模块板卡通过所述的电源模块板卡插接件与所述背板插接,所述电源模块板卡给整个装置提供电源。
[0019]采用上述技术方案后,本发明具有如下突出优点:
[0020]1.本发明采用地址映射技术将主机的物理内存映射到通信总线上,实现了主机物理内存的共享,从机可自由读写该共享的物理内存,从而使得读写速率与通信总线的时钟频率相同,可以达到极小的存储延时,存取速度快。
[0021]2.本发明通过将主机和多个从机的寄存器映射到通信总线上,主机和每个从机均可改写其余的寄存器,实现了主机与从机之间、从机与从机之间的自由访问,克服了现有技术中从机与从机之间的数据交换只能通过主机转发实现的问题。
[0022]3.本发明中可以通过中断触发或者轮询两种方式访问物理内存,其中,将主机和每个从机的寄存器映射到通信总线上,对相关寄存器进行改写可以实现中断触发从而访问物理内存,提高实时性。
[0023]4.本发明通过对物理内存中的数据区的读写属性进行相关设置,可以更方便的实现广播数据或者组播数据的存取。
[0024]5.本发明采用总线主控的方式进行数据交换,并且对物理内存中的临界数据区的访问实现了同步互斥机制,实现各个进程间通信时对数据存取的同步,保证了内存共享的安全。
【专利附图】
【附图说明】
[0025]下面结合附图对本发明的【具体实施方式】作进一步说明:
[0026]图1为本发明实施例的一种多处理器的数据交换装置的结构示意图
[0027]图2为本发明实施例的处理器及处理器间数据交换的结构示意图;
[0028]图3本发明实施例的一种多处理器的数据交换方法的流程图;
[0029]图4为本发明实施例的一种共享的物理内存的结构示意图;
[0030]图5为本发明实施例的一种物理内存的互斥访问方法的流程图。
【具体实施方式】
[0031]如图1所示,一种多处理器的数据交换装置,包括:主机板卡3、若干个从机板卡4、总线板卡(图上未示出),主机板卡3和从机板卡4通过总线板卡相互通信;所述总线板卡集成在一背板8上,所述的背板8上设置主机板卡插接件和若干个从机板卡插接件(图中均标号为7),所述的主机板卡3和从机板卡4插接在相应的插接件7上;所述的背板8上还设置有电源模块板卡插接件2,电源模块板卡I通过所述的电源模块板卡插接件2与所述背板8插接,所述电源模块板卡I给整个装置提供电源。
[0032]作为优选,本实施例中采用3个从机4(即图1中对应的从机板卡,以下简称从机),包括从机一、从机二和从机三,即有3个从机4和一个主机3(即图1中对应的主机板卡,以下简称主机)插接在背板8上的插接件7上;本实施例中,总线板卡上的通信总线为PCI总线,插接件7为PCI总线接口,但并不作为本发明的限制,可以理解,相应也可以为CPCI总线与CPCI总线接口;主机3中集成有第一处理器、与所述的第一处理器通信的寄存器、以及用于数据共享的物理内存,每个从机4集成有相互通信的处理器和寄存器,从机4的处理器和所述的物理内存通信;所述主机3的第一处理器和各个从机4的处理器通过PCI总线与主机3、从机4的寄存器通信。
[0033]图2示出了主机3和从机4的具体结构,以及主机3和/或每个从机4之间的数据交换的方式。在本实施例中,主机3和每个从机4均有一颗支持PCI总线的处理器,负责实现各自特定的功能,并且主机3和/或每个从机4之间可以进行数据交换,数据的交换不局限于一个主机3和一个从机4之间,也可以发生在两个从机4之间,也可以单机和多机之间进行数据交换,所述单机和多机均可以为主机3或者从机4中的一个或多个。
[0034]具体的,结合图1和2进一步说明,数据交换的方式包括:a.主机3与至少一个从机4之间的数据交换;b.从机4中的任意一个与主机3和/或至少一个从机4之间的数据交换。当然本发明也可以实现从机4或者主机3与自己的数据交换。
[0035]参看图2,在本实施例中,主机3还提供用于数据交换的物理内存MEMORY ;所述主机3的物理内存MEMORY通过地址映射的方式映射到PCI总线上,主机3与各个从机4共享物理内存MEMORY,采用地址映射技术,对物理内存MEMORY读写速率即为PCI时钟频率,可以达到极小的存储延时。主机3和各个从机4还各自具有寄存器REG,所述主机3和各个从机4的寄存器REG分别映射到PCI总线,每个寄存器REG分配有不同的地址,从而形成一寄存器地址空间REGADD (图上未示出),所述主机3和N个从机4的处理器都能访问所述寄存器地址空间REGADD。主机3还提供33MHz或66MHz的PCI时钟信号,在PCI总线中的数据交换包括如下信号:主机提供的时钟信号CLK,地址或者数据信号ADD/DATA,控制信号CONTROL ;在实现中断触发时,还包括中断信号INT。本发明实施例通过以地址映射的方式将主机3的物理内存MEMROY映射到PCI总线上实现内存的共享,并将主机3和每个从机4的寄存器REG映射到PCI总线上形成一寄存器地址空间REGADD,从而使主机3和每个从机4均可以访问该寄存器地址空间REGADD,实现了主机3和/或每个从机4间的自由的数据交换,这些数据的信号形式已在上文描述,对于在处理器中根据具体指令从而实现信号的形成与处理属于本领域内常规技术手段,在此不再赘述。
[0036]图3示出了本发明实施例的一种多处理器的数据交换方法的流程图。采用上述的一种多处理器的数据交换装置,并采用中断触发的机制实现数据交换,中断。结合图1至4进行说明,具体而言,包括如下步骤:A.主机的物理内存共享,主机及3个从机的寄存器映射到PCI总线上供主机及3个从机访问;具体的,主机3的物理内存MEMROY映射到PCI总线上实现物理内存的共享,主机3及3个从机4的寄存器REG映射到PCI总线上,形成一寄存器地址空间REGADD,主机3及3个从机4都可以访问该寄存器地址空间REGADD ;B.从机一在物理内存MEMROY中写入数据,写完数据后进入步骤C ;C.从机一通过PCI总线改写从机二的寄存器内容,触发从机二的中断;D.从机二调用中断服务程序,通知应用程序调用读取接口,从而读取物理内存MEMROY中相应的数据区;具体的,从机二调用中断服务程序,并在中断服务程序中通知应用程序调用读取接口,从而读取物理内存MEMROY中相应的数据区。本实施例仅示出了以中断触发的方式实现从机一和从机二之间的数据交换的方法,上文所述的数据交换方式都可以通过本发明实施方式来实现,选择从机一和从机二之间的数据交换作为示例仅仅是为了更清楚的表明本发明的实施方式;当然本发明不仅仅可以通过中断触发方式实现数据交换,还可以通过轮询读取的方式实现,轮询读取方式即主机3和/或每个从机4在需要使用数据时通过调用读写接口访问物理内存MEMORY中的数据区,数据内容根据不同的应用场合有不同的定义,有的数据具有状态属性,有的数据具有事件属性,具有状态属性的数据在需要使用的时候再读取比较方便,事件属性的数据在写入者完成写入后就立刻通知读取者去读取,轮询方式适合具有状态属性的数据,中断触发方式适合具有事件属性的数据,根据具体情况主机3和/或每个从机4可以进行选择,并且,主机3和/或每个从机4对不同的数据可采用不同的读取方式。
[0037]在本发明实施例中,主机3和/或每个从机4对共享的物理内存MEMORY中的数据区分别定义访问属性,包括读或写;若主机3和每个从机4与数据区有写入关系,则在所述主机3和/或每个从机4中将此数据区的写属性定义为有,否则定义为无;若主机3和/或每个从机4与数据区有读取关系,则在所述主机3和/或每个从机4中将此数据的读属性定义为有,否则定义为无;通过定义访问属性,该方法通过单机写入数据、多机读取数据的方式,或者多机写入数据、多机读取数据的方式处理组播数据或者广播数据。
[0038]图4示出了本发明实施例的一种共享的物理内存MEMROY的结构,包括两个部分:临界数据区10、索引区9。临界数据区10是在工作过程中可被多个处理器读写访问的数据区,包括数据区一、数据区二、数据区三,以此类推;索引区9是用于数据的索引,包括多个索引表项,其内容只有在格式化时被主机3写访问,在系统工作过程中主机3和每个从机4对索引区的访问都是读访问,索引表项中包含数据区的起始地址,还可以包括其他数据项,例如数据区偏移地址、数据区长度,在本实施例中,索引区数据项中必须包含数据区的起始地址。以上物理内存MEMROY的划分是为了方便解释本发明,还可以根据具体情况通过其他方式对其进行划分,本实施例中,通过索引区9来实现对临界数据区10的索引仅作为一种访问临界数据区10的便捷方式,也可以不通过索引区9,主机3和每个从机4直接通过指令对临界数据区10进行寻址访问。在本发明实施例中,由于物理内存MEMROY的共享,需要保证不同处理器中的多个线程对物理内存MEMROY中的临界数据区10的访问是互斥的,临界数据区10为在系统工作过程中会被多个处理器读写访问的数据区。
[0039]图5示出了本发明实施例的一种物理内存的互斥访问方法的流程图。通过面包店算法实现主机3和每个从机4中的进程/线程对物理内存MEMORY中的临界数据区10的互斥访问,所述互斥访问的步骤具体包括:
[0040]S1:进程或线程获取本地互斥量,则调用读写接口并进入步骤B,否则等待被其余进程或线程释放的本地互斥量;具体的,主机3和/或每个从机4中的进程或线程获取本地互斥量,则获取到本地互斥量的所述进程或线程调用读写接口,否则所述进程或线程等待被其余进程或线程释放的本地互斥量,所述本地互斥量由主机和/或每个从机中的操作系统提供,用于保证主机3和每个从机4在一个时刻最多只有一个进程或线程正在调用共享物理内存MEMORY的读写接口 ;
[0041]S2:所述进程或线程调用读写接口后,首先通过通信总线访问面包店数据区,对所述面包店数据区的每个变量的访问都是原子的;
[0042]S3:根据面包店算法对面包店数据区进行数次访问后,判断所述是否获得临界数据区的访问权,若获得则读写临界数据区;具体的,所述进程或线程根据面包店算法对面包店数据区进行数次访问后,判断所述进程或线程是否获得所述共享物理内存MEMROY的临界数据区10的访问权,若获得访问权,则读写临界数据区10 ;
[0043]S4:读写完成后,根据面包店算法修改对应的面包店数据区中的变量,然后释放保护读写接口的本地互斥量。
[0044]本发明实施例使用的面包店算法为本领域技术人员公知的技术,在此不再展开,也可以通过其他的算法来实现本发明的互斥访问;面包店算法中对每个变量的访问都是原子的,这些访问局限在读写接口中,若主机3和/或每个从机4要访问临界数据区10首选需要获取到读写接口,否则只能等待别的主机3和/或每个从机4释放读写接口再进一步判断是否可以获得读写接口,所述的读写接口是读写临界数据区10的软件接口,即函数接口 ;本发明实施例通过使用本地互斥量来保护读写接口,防止多线程同时调用读写接口,所述本地互斥量由主机和/或每个从机中的操作系统提供,用于保证主机3和每个从机4在一个时刻最多只有一个线程正在调用共享物理内存MEMORY的读写接口。
[0045]除上述优选实施例外,本发明还有其他的实施方式,本领域技术人员可以根据本发明作出各种改变和变形,只要不脱离本发明的精神,均应属于本发明所附权利要求所定义的范围。
【权利要求】
1.一种多处理器的数据交换方法,其特征在于:主机的物理内存映射到通信总线上,主机与至少一个从机共享所述的主机的物理内存,所述主机和每个从机的处理器通过通信总线访问共享的物理内存。
2.根据权利要求1所述的多处理器的数据交换方法,其特征在于:所述主机和各个从机的寄存器分别映射到通信总线上,每个寄存器被分配不同的地址,从而形成一寄存器地址空间,所述主机和每个从机的处理器通过通信总线访问所述寄存器地址空间,读写寄存器内容。
3.根据权利要求1所述的多处理器的数据交换方法,其特征在于:当主机和/或每个从机通过中断机制进行物理内存的数据读取时,所述的寄存器为中断寄存器,主机通过通信总线访问所述寄存器地址空间,改写至少一个从机的中断寄存器内容,或者,每个从机通过通信总线访问所述寄存器地址空间,改写主机或其余至少一个从机的中断寄存器内容,从而触发对方的中断,引起中断触发的主机和/或每个从机通过中断服务程序通知应用程序调用读取接口访问物理内存中的数据区。
4.根据权利要求1所述的多处理器的数据交换方法,其特征在于:当主机和/或每个从机通过轮询方式进行物理内存的数据读取时,主机和/或每个从机通过调用读写接口访问物理内存中的数据区进行数据读取。
5.根据权利要求1所述的多处理器的数据交换方法,其特征在于:主机和/或每个从机对主机的共享物理内存中的数据区分别定义访问属性,包括读或写;若主机和/或每个从机与数据区有写入关系,则在所述主机和/或每个从机中将此数据区的写属性定义为有,否则定义为无;若主机和/或每个从机与数据区有读取关系,则在所述主机和/或每个从机中将此数据的读属性定义为有,否则定义为无;主机和/或每个从机对共享的物理内存的的数据读写方法包括以下一种或几种:主机写入数据,主机和/或至少一个从机读取数据,或者,一个从机写入数据,主机和/或至少一个从机读取数据,或者,主机和至少一个从机写入数据,主机和/或至少一个从机读取数据,或者,多个从机写入数据,主机和/或至少一个从机读取数据;主机和从机通过以上方法读写主机的共享物理内存的数据处理单播数据、组播数据以及广播数据。
6.根据权利要求1所述的多处理器的数据交换方法,其特征在于:通过面包店算法实现主机和/或每个从机中的进程或线程对物理内存中的临界数据区的互斥访问,所述互斥访问的步骤包括: A.主机和/或每个从机中的进程或线程获取本地互斥量,则获取到本地互斥量的所述进程或线程调用读写接口,否则所述进程或线程等待被其余进程或线程释放的本地互斥量,所述本地互斥量由主机和/或每个从机中的操作系统提供,用于保证主机和每个从机在一个时刻最多只有一个进程或线程正在调用共享物理内存的读写接口; B.所述进程或线程调用读写接口后,首先通过通信总线访问面包店数据区,对所述面包店数据区的每个变量的访问都是原子的; C.所述进程或线程根据面包店算法对面包店数据区进行数次访问后,判断所述进程或线程是否获得所述共享物理内存的临界数据区的访问权,若获得访问权,则读写临界数据区; D.读写完成后,根据面包店算法修改对应的面包店数据区中的变量,然后释放保护读写接口的本地互斥量。
7.一种多处理器的数据交换装置,包括主机板卡、若干个从机板卡、总线板卡,主机板卡和从机板卡通过总线板卡相互通信,其特征在于:主机板卡集成有第一处理器、与所述的第一处理器通信的寄存器、以及用于数据共享的物理内存,每个从机板卡集成有相互通信的处理器和寄存器,从机板卡的处理器和所述的物理内存通信。
8.根据权利要求7所述的多处理器的数据交换装置,其特征在于:所述主机板卡的第一处理器和各个从机板卡的处理器通过总线板卡与主机板卡、从机板卡的寄存器通信。
9.根据权利要求8所述的多处理器的数据交换装置,其特征在于:所述总线板卡集成在一背板上,所述的背板上设置主机板卡插接件和若干个从机板卡插接件,所述的主机板卡和从机板卡插接在相应的插接件上。
10.根据权利要求9所述的多处理器的数据交换装置,其特征在于:所述的背板上还设置有电源模块板卡插接件,电源模块板卡通过所述的电源模块板卡插接件与所述背板插接,所述电源模块板卡给整个 装置提供电源。
【文档编号】G06F15/17GK103810139SQ201410034898
【公开日】2014年5月21日 申请日期:2014年1月24日 优先权日:2014年1月24日
【发明者】周勇, 舒宇, 周公爽 申请人:浙江众合机电股份有限公司