CN115658569B - Amp多核处理器间中断与共享存储方法、***及设备 - Google Patents
Amp多核处理器间中断与共享存储方法、***及设备 Download PDFInfo
- Publication number
- CN115658569B CN115658569B CN202211568063.8A CN202211568063A CN115658569B CN 115658569 B CN115658569 B CN 115658569B CN 202211568063 A CN202211568063 A CN 202211568063A CN 115658569 B CN115658569 B CN 115658569B
- Authority
- CN
- China
- Prior art keywords
- interrupt
- core
- processor
- data
- shared
- 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
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Multi Processors (AREA)
Abstract
本发明提供了一种AMP多核处理器间中断与共享存储方法、***及设备,方案针对AMP类型的处理器及在AMP处理器上实际运行的***需求,通过设置红绿灯模块及单独增设共享SSRAM的方式,多核处理器各个内核间的数据交互、中断控制及共享存储。本方案能极大的提高数据读写速度,能够满足高速、大数据量传输需求,通过环形中断设计,简化中断控制器设计,整体功能实现简单,安全性和稳定性高,且***维护简单,无需软件设计人员时刻对内存单元进行监测。
Description
技术领域
本发明涉及集成电路设计及多核处理器数据处理领域,可应用于复杂的多核处理器间的数据、存储共享处理方面,特别涉及一种基于红绿灯模式的AMP多核处理器间中断与共享存储方法、***及设备。
背景技术
目前多核处理器中主要包括AMP(Asymmetric Multi-processing)和SMP(Symmetric Multi-processing)两种模式,无论哪种模式都有核间通信的需求。其中,SMP往往运行一个操作***,每个核的地位是相同的,各核间共享***资源,因此SMP类型的处理器一般可以通过获取处理器核编号来对资源进行分配。而AMP类型处理器对于软件和硬件资源分配并不是完全共享和相同的,在实际使用中往往在每个核上各运行一个***,相互之间通过受限的共享内存进行通信,但是这往往需要用户参与***的资源分配,这给有共享资源分配需求的应用场景中的使用造成了较大的麻烦。
目前的现有技术在共享存储设备方面的方式大致有以下几种,其结构简单,存在显著的缺陷:
1、现有技术中多使用通用内存芯片(DDR)作为共享存储设备:该种方式相较于使用SSRAM单独作为共享存储设备读写速度慢、安全性较差;由于共享存储部分和各个核的***都运行在DDR上,因此各个核上的***软件需要花费大量精力来维护***在内存DDR上运行的稳定性,无论哪一方出现问题都可能带来灾难性后果。
2、在通用处理器上添加数据寄存器作为共享存储设备:该种方式对数据大小有一定限制,在数据量大、高速传输的情况下无法满足要求。
3、使用某些处理器提供的一些核间通信功能:现有的该种形式在核间通信方面,最终还是归结到处理器核与内存间的通信,缺点与上文第1点相同,而且大部分实现较复杂,使用困难。
4、中断方面基本使用现有通用处理器上的中断控制器:该种中断形式在核数多的时候需占用大量的中断资源,在中断资源短缺的情况下,只适合在双核或者核数较少的***中使用。
发明内容
为了解决上述现有技术中存在的问题,本发明针对AMP类型的处理器及在AMP处理器上实际运行的***需求,通过核间中断与共享存储方式,实现多处理器各个内核间的数据交互、共享。
具体而言,本发明公开了以下技术方案:
一方面,本发明提供了一种AMP多核处理器间中断与共享存储***,所述***包括:
多个处理器核,该多个处理器核按顺序编号;每个处理器核设置对应的私有Cache;
中断控制模块,包括软件中断生成器、CPU接口管理单元、通用中断控制器,软件中断生成器、CPU接口管理单元分别连接通用中断控制器;软件中断生成器接收处理器核发送的触发中断信号,并产生中断,所述中断经通用中断控制器发送至CPU接口管理单元,所述CPU接口管理单元将所述中断有选择性的上报给一个或多个处理器核;
CPU接口管理单元通过配置为轮询模式,使得由通用中断控制器上报的所述中断轮询报告给各个处理器核,以控制多个处理器核形成环形中断;
共享SSRAM,所述共享SSRAM与各个处理器核的私有Cache连接;共享SSRAM至少包括多个存储空间Space、红绿灯模块,每个Space对应一个处理器核;所述红绿灯模块用以控制每个核对各个Space的读写操作。
优选的,所述红绿灯模块进一步包括:
红绿灯标志单元,该单元中的每个bit与一个处理器核及该处理器核对应的Space相对应,每个bit位的不同值分别对应红灯或绿灯,当bit为绿灯时,对应的处理器核能向对应的Space进行写操作,红灯时则只能进行读操作;
发送核号单元,表示作为数据发送端的处理器核编号;
接收核号单元,表示作为数据接收端的处理器核编号;
数据长度单元,表示传输的数据长度。
优选的,所述软件中断生成器包含一寄存器组,该寄存器组被全部处理器核共享,每个处理器核可通过所述寄存器组生成所述中断;
该中断路由至通用中断控制器,所述通用中断控制器为所述中断分配一中断号,该中断号被所述多个处理器核共享。
优选的,所述CPU接口管理单元将所述中断有选择性的上报给一个或多个处理器核,通过以下方式中的至少一种:
轮询模式:CPU接口管理单元将本次中断单独上报给某个处理器核,此后每增加一次中断,则CPU接口管理单元按照处理器核编号次序将中断单独上报给下一个处理器核;第n+1次中断时,则再次上报给首次上报的处理器核,以形成环形轮询方式;n为处理器核总数;
广播模式:CPU接口管理单元将本次中断上报给所有处理器核;
指定模式:CPU接口管理单元将本次中断有选择的报告给某个或某几个处理器核。
优选的,所述共享SSRAM中,所述Space数量与处理器核数量一致;
任一处理器核对任一Space都有读权限,只有本处理器核对其对应的Space有写操作权限。
优选的,所述通用中断控制器还连接共享中断、各处理器核的私有中断。
另一方面,本发明还提供了一种AMP多核处理器间中断与共享存储方法,该方法应用于如上所述的***,该方法包括:
步骤1、初始化***,对中断回调函数进行注册,并将各个处理器核对应的红绿灯标志单元中对应的红绿灯标志位设置为绿灯;
步骤2、启动发送任务,红绿灯模块判断数据发送端对应的红绿灯标志位是否为绿灯;如果不是绿灯,则进入等待环节,并在满足预设条件后再次进行任务发送;如果是绿灯,则设置数据发送端的红绿灯标志位为红灯;
步骤3、向数据发送端对应的Space首地址写入数据,并在红绿灯模块中填写发送核号、接收核号、数据长度;
步骤4、触发中断,执行中断对应的中断回调函数;数据接收端读取所述数据;
所述数据发送端指发送数据的处理器核,所述数据接收端指接收数据的处理器核。
优选的,所述数据接收端执行的步骤进一步包括:
步骤401、接收到中断后,进入中断回调函数;
步骤402、读取接收核号,并判断所述接收核号是否为数据接收端对应的编号;若否,则清除中断,退出中断回调函数;若是,则执行步骤403;
步骤403、清除中断,读取发送核号、数据长度;
步骤404、根据数据长度,从首地址处读取发送核号对应的Space空间;
步骤405、数据读取完毕后,设置数据发送端对应的红绿灯标志位为绿灯,并退出中断回调函数。
优选的,所述初始化***进一步包括:
步骤101、***初始化开始,初始化中断控制模块;
步骤102、连接软中断的中断号,并注册中断回调函数,将中断号与中断回调函数建立连接;
步骤103、使能中断控制模块;
步骤104、将CPU接口管理单元的模式配置为轮询模式,完成***初始化。
又一方面,本发明还提供了一种AMP多核处理器间中断与共享存储设备,所述设备包括AMP多核处理器、共享SSRAM及存储器,所述AMP多核处理器配合共享SSRAM及存储器,共同执行如上所述的AMP多核处理器间中断与共享存储方法。
与现有技术相比,本技术方案具有以下明显优势:
1)通过在处理器核与内存中间加入SSRAM存储器作为共享存储器件:能极大的提高数据读写速度,能够满足高速、大数据量传输需求,并且可以根据***需求来选取SSRAM容量大小。
2)整体功能实现简单,尤其对于软件设计人员有较大的灵活度,与以DDR作为共享存储器件相比,其***的安全性和稳定性也得到了很大的提升。
3)***维护简单,无需软件设计人员时刻对内存单元进行监测。
4)核间中断采用环形设计:可以在占用极少的中断资源的情况下满足多核间中断的需求,简化了中断控制器的设计、减少了软件开发人员的工作量。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1为本发明实施例的环形中断示意图;
图2为本发明实施例的共享SSRAM与处理器核及Cache连接示意图;
图3为本发明实施例的共享存储SSRAM内部区域划分示意图;
图4为本发明实施例的红绿灯模块示意图;
图5为本发明实施例的发送端逻辑流程图;
图6为本发明实施例的接收端逻辑流程图;
图7为本发明实施例的环形中断设计框架示意图;
图8为本发明实施例的数据发送端中断处理流程图;
图9为本发明实施例的数据接收端中断处理流程图。
具体实施方式
下面结合附图对本发明实施例进行详细描述。应当明确,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
本领域技术人员应当知晓,下述具体实施例或具体实施方式,是本发明为进一步解释具体的发明内容而列举的一系列优化的设置方式,而该些设置方式之间均是可以相互结合或者相互关联使用的,除非在本发明明确提出了其中某些或某一具体实施例或实施方式无法与其他的实施例或实施方式进行关联设置或共同使用。同时,下述的具体实施例或实施方式仅作为最优化的设置方式,而不作为限定本发明的保护范围的理解。
本发明的目的在于针对AMP类型的处理器及在AMP处理器上实际运行的操作需求,通过核间中断与共享存储方式,实现多处理器各个内核间的数据交互、共享。在一个具体的实施例中,本发明的方案具体实现分为硬件和软件两部分,硬件部分协助实现核间中断和共享存储两方面,软件则配合硬件最终实现核间数据共享操作。本方案不需要特定操作***,且在多核硬件的基础上,软件逻辑实现简单且用户有较大的自由度进行自定义编程。
首先,在硬件模块设计方面,我们主要先针对核间中断和共享存储两方面进行硬件逻辑的调整。
针对核间中断,参考图1所示,其中,Core_0、Core_1......Core_n-1分别表示多核处理器的核0、核1......核n-1的编码。
本实施例中,结合图7所示,我们通过软件中断生成器结合CPU接口管理单元,实现对中断上报方式的控制。中断控制模块框架主要包含软件中断生成器(SGI)单元和CPU接口管理单元两部分,这两部分与通用中断控制器(GIC)连接并进行数据交互。其中软件中断生成器(SGI)包含一组寄存器(SGIRs),该组寄存器是所有核共享的,每个核都可以通过该寄存器组来生成中断,通过配置该寄存器组即可产生核间中断,即产生触发沿变化,本实施例中优选的触发方式默认为高电平沿触发,该中断被路由到通用中断控制器后会被分配一个中断号,该中断号可以是例如Intr,该中断号被所有核共享。通用中断控制器会将该中断事件通过CPU接口管理单元有选择性的上报给处理器核。
中断控制模块中,通用中断控制器(GIC)接入三种中断,包括各个核的私有中断、共享中断(SI)、软件生成中断(即软件中断生成器所生成的中断)。CPU接口管理单元(即CPU_IM)连接通用中断控制器,并接收来自通用中断控制器的数据,CPU接口管理单元发送数据至各个处理器核。
CPU接口管理单元作用:使能或禁止向连接的处理器核上报事件;同时可以通过配置CPU接口管理单元寄存器来设置事件上报类型,包含以下几种模式:
轮询模式:CPU接口管理单元将本次中断单独上报给某个处理器核,此后每增加一次中断,则CPU接口管理单元按照处理器核编号次序将中断单独上报给下一个处理器核;第n+1次中断时,则再次上报给首次上报的处理器核,以形成环形轮询方式;n为处理器核总数。以上面的n个处理器核为例,结合图1所示:一个有n个处理器核的CPU,编号依次为Core_0,Core_1......Core_n-2,Core_n-1,第1次收到中断,如果当前CPU接口管理单元单独为Core0上报事件(首次上报可以是任意CPU核,此处仅以Core_0为例说明),本次中断事件会上报给Core_0;第2次中断上报给Core_1......第n次中断上报给Core_n-1,第n+1次中断再次上报给Core_0,这样形成环形轮询中断的方式;在轮询模式下,在中断资源非常紧张的情况下,本方案中只需要一个中断就可以达到需求。
广播模式:CPU接口管理单元会将本次中断事件上报给所有处理器核;
指定模式:CPU接口管理单元会将本次中断事件有选择的报告给某个或某几个处理器核。
针对共享存储,本实施例中,使用SSRAM作为共享存储区域,主要目的是在不影响***整体性能的前提下,尽可能的提高共享空间大小,提高数据读写效率。结合图2所示,对于核Core_0、Core_1......Core_n-2、Core_n-1,分别单独设置对应各个核的Cache,即各个核的高速缓冲存储器,多个高速缓冲存储器(Cache)共同连接共用一个SSRAM,该SSRAM空间被各个核所共享。
本实施例中,我们在对硬件逻辑进行了调整设置后,通过逻辑流程控制,来实现多核间中断和共享存储。具体包括:
1、共享SSRAM内部区域划分
如图3所示,本实施例中,把该共享SSRAM区域分成多段存储空间,我们将分段的存储空间定义为Space,数量与核数一致,每段Space的大小可以根据实际空间大小而定;这样,每个核都可以获得一段属于自己的存储空间。本实施例中,我们设置:在任何时候,任意核对任一Space都有读权限,但只有本核才有对自己所拥有的Space进行写操作的权限。
同时,在共享SSRAM指定地址分配单独一块空间,设置一红绿灯模块,用于对各个Space进行操作时的依据。每个内核在对Space进行读写操作时都须首先确定当前“红绿灯模块”的状态后才能进行。在结构上,每个核通过其Cache,连接该红绿灯模块,再进行Space数据的读写。
结合图4所示,红绿灯模块内部被分成四个区域:红绿灯标志单元、发送核号单元、接收核号单元、数据长度单元。每块区域是由若干字节组成,区域大小可视情况而定。
红绿灯模块中的四个单元的设置方式如下:
红绿灯标志单元:该单元可以设置在红绿灯模块空间的第一个区域,该单元中每个bit与核(Core)和Space相对应,即bit0与Core_0、Space_0相对应,bit1与Core_1、Space_1相对应.......bitn-1与Core_n-1、Space_n-1;而每一个bit的‘0’和‘1’的两种状态用“红灯”和“绿灯”进行表示。当为“绿灯”时,对应的Core才能向对应的Space进行写操作;而“红灯”时则代表该段存储空间正在被其他核占用,此时只能进行读操作。
发送核号单元:该单元可以设置在红绿灯模块空间的第二个区域,表示数据发送端的处理器核编号;此处需要说明的是,本实施例中全部是在同一个处理器中进行,即同一个多核处理器中,所说的多核处理器间共享存储指的是在同一个处理器中不同处理器核之间的一种数据共享方式,因此此处的数据发送端和数据接收端分别指的是同一处理器中的两个核。
接收核号单元:该单元可以设置在红绿灯模块空间的第三个区域,表示数据接收端的处理器核编号;此处的数据接收端,同上,指同一处理器中接收数据的处理器核。
数据长度单元:该单元可以设置在红绿灯模块空间的第四个区域,表示数据长度。此处进一步说明的是,上述传输的数据,指多核间共享或配合完成任务中涉及的在不同处理器核间传输的数据,该些数据的作用由AMP处理器的特性决定,每个处理器核上都会运行各自的程序,在某些情况下(比如大型运算、数据处理等任务)单个核没有办法在规定时间内完成任务,因此需要它核进行配合,这里就需要核间数据的共享了。对于这些传输的数据传输路径,由数据发送端写入所属共享存储区域的起始地址,之后触发中断给下一个处理器核,下一个核会读取“红绿灯模块”的“接收核号”并与自己对比,如果判断是本核,本核也就是数据接收端,从而根据“红绿灯模块”的“发送核号”开始从该共享存储区域的起始地址读取数据。此处的数据长度,指的是本次写入共享存储区的数据长度,可以包含有效数据或用户自定义数据等。
结合图5所示,在数据的发送端,执行本方案中的中断与共享的流程如下:
步骤1、***初始化,并初始化中断向量表,并在***中对中断回调函数进行注册,将各个核对应的红绿灯标志位为“绿灯”。一般中断可分为硬中断和软中断:
1)硬中断:由外部事件引起的,例如GPIO引脚的电平变化、SPI缓存数据达到阈值等。
2)软中断:这里说的软中断不是***中的中断处理部分的软件,而是某些处理器中所涉及的中断控制器专门设立的软中断生成模块。这种软中断一般直接连接到中断控制器上,通过设置相应的电平信号变化(例如高电平触发)即可触发核间中断。本方案中所说的环形中断属于软中断形式。
我们在初始化中断向量表时,指的是通过软件设置,为中断的生成、响应、处理等做的一系列操作,本实施例的中断初始化过程为:
结合图7为例,GIC(Generic Interrupt Controller,即通用中断控制器)上连接了3种中断,分别是SGI(Software Generated Interrupts,即对应软件生成中断)、PI(Private Interrutes,即对应私有中断)和SI(Shared Interrupts,即对应共享中断),***在初始化时会对GIC(Generic Interrupt Controller,即通用中断控制器)进行初始化,其中中断路由就是把连接到GIC上的所有中断进行分配、通道映射,最终将一个或多个中断源路由到一个中断号上。但是具体如何映射、如何分配中断号则是基于使用的中断控制器和***进行调整,例如有中断控制器是这么分配的:SGI:对应中断号0~15;PI:对应中断号27~31;SI:对应中断号32~95;也就是说如果有一个SGI中断源,可以将其映射到中断号为0~15中的其中一个上。***软件可以将该中断号与相应的中断服务程序绑定,一旦中断触发就会跳转到中断服务程序中执行相应的软件流程了,也即绑定特定的中断回调函数,此处的绑定方式可采用本领域中的现有技术实现,此处不再赘述。
在本实施例中,所述中断为软件中断生成器所生成的同一个中断,通用中断控制器通过CPU接口管理单元将该中断上报给各个处理器核,这样就可以使得各个处理器核收到的该中断的编号相同,即所有的核间中断只使用了一个SGI中断源,且每个核为其分配的中断号也是一样的,比如说为该中断号为INT0;这样一来无论哪个核发起中断,所有的核都应该能够响应该中断。更进一步地解释,无论哪个核通过配置软件中断生成器对应的寄存器来触发中断,其在通用中断控制器看来都是同一个,这样一来,通用中断控制器通过CPU管理接口将该事件上报给各个处理器核时,各个处理器核所看到的软中断编号也是同一个,这样就可以节省大量的中断资源,因此说只用一个中断就可以了,各个处理器核可以根据各自需求将自己的中断回调函数绑定在该中断上,每个核的中断回调函数可以是不一样的。而一般现有的设计是每个核都有一个自己的软件中断生成器,比如说有8个核,那就必须每个核都要有一套自己私有的软件中断生成器,每个核都能生成自己的中断,这样就共有8个中断信号路由到通用中断控制器上,此时通用中断控制器也要有为其各自分配一个中断号才行。
此处对CPU接口管理单元的作用做一下说明:所述的中断我们只用了一个,虽然各个核都可以通过设置软件中断生成器相应的寄存器来触发中断,但如果没有CPU接口管理单元,当中断触发时各个核都能够同时收到中断,这样就不是环形中断了,而是广播了。
本实施例中,优选的,通过SGI,配合CPU_IM的轮询模式便可以形成本案中所说的环形中断。
步骤2、***初始化完成后,发送任务开始,具体的发送任务,根据实际应用需求确定,由数据发送端的程序决定是否将数据共享给其它核处理,由数据发送端发送数据给共享存储区,即发送给共享SSRAM,接着由数据接收端接收该些数据。
在发送任务开始后,此时,红绿灯模块判断数据发送端对应核(即数据发送端核)的红绿灯标志位是否是绿灯。如果不是绿灯,则进入等待环节,并在等待预设时间长度后,再次进行任务的发送,再次判断对应的核的红绿灯标志位是否为绿灯。当判断是绿灯时,设置本核对应的红绿灯标志位为“红灯”,并禁止其他核对本核所属的Space进行读操作。这里设置为“红灯”的目的在于数据发送端需保证数据接收端完成数据读取任务后才可以开启下一次数据发送任务。
额外地,进入等待环节,可以通过轮询方式或者定时器等方式来实现,此处不再赘述。
步骤3、向本核对应的Space首地址处写入数据,在写数据完成后,在红绿灯模块对应单元中填写发送核号、接收核号以及数据长度信息。
步骤4、设置核间中断相关的寄存器,并触发中断。
本步骤4中,设置核间中断相关的寄存器,优选的可以设置为:
1)设置软件中断生成器SGI相关寄存器,以生成中断;
2)该中断会被路由到与其直接相连的GIC上;
3)GIC会为其分配相应的中断号;
4)该中断信号会通过CPU接口管理单元上报给某个CPU核;
5)当某个CPU核收到该中断后,会跳转到与之绑定的中断回调函数中;
6)中断回调函数会根据自己的需求来处理该中断。
结合图6及图9所示,其中图9为结合具体的中断回调函数等情况下的一具体实施方式的示意图,是图6的更实例化的示意图,以便于本方案的理解,在数据接收端,执行本方案的中断与共享的流程如下:
步骤1、***初始化,并初始化中断向量表,并在***中对中断回调函数进行注册,将各个核对应的红绿灯标志为“绿灯”。本步骤的初始化过程,与下面的数据发送端的初始化步骤1-4相同,此处简化表示。
步骤2、***初始化完成后,当接收到中断后,进入中断回调函数。本实施例中,即进入初始化时设置的中断回调函数swIntrHandler()。
步骤3、读取接收核号,并判断接收核号是否为数据接收端处理器核对应的核号;若否,则清除中断,退出中断回调函数,重新设置核间中断相关寄存器,以控制触发中断;若是,则执行步骤4;
步骤4、清除中断,读取发送核号和数据长度;
步骤5、根据数据长度,从首地址处读取发送核号对应的Space空间;
步骤6、数据读取完毕后,设置数据发送端对应的红绿灯标志为绿灯;
步骤7、退出中断回调函数,本实施例中即退出函数swIntrHandler()。至此,完成数据接收端的中断处理。
进一步优选的,结合图8所示的更具体的实例,在数据发送端,其中断处理流程如下:
步骤1、***初始化开始,初始化中断控制器;中断控制器的初始化,可以通过例如特定的GIC控制函数实现,此处,我们以GIC_CfgInitialize()作为示例说明;
步骤2、连接软中断的中断号,并注册中断回调函数,例如将中断回调函数swIntrHandler(),通过GIC_Connect(),与INT_x进行绑定,即GIC_Connect(INT_x,swIntrHandler),其中,INT_x表示SGI软中断分配的中断号,可以根据实际需求进行设置,此处作为示例使用;
步骤3、使能中断控制器;
步骤4、将CPU接口管理单元的模式配置为轮询模式,至此完成***的初始化;
步骤5、发送任务开始;
步骤6、判断对应标志位是否为绿灯,若否,则等待,并在等待预设时长后,重新返回步骤5;若是,则执行步骤7;
步骤7、设置本核对应的红绿灯标志位为红灯,并以此协助判断接收端是否完成读取;
步骤8、向本核对应的Space首地址处写入数据,并在写数据完成后,填写发送核号、接收核号及数据长度;
步骤9、设置核间中断相关寄存器,并触发中断。此后,则会进入接收端的中断处理过程。
在又一个具体的实施例中,本发明的方案还可以通过设备的方式来实现,设备包括所述设备包括AMP多核处理器、共享SSRAM及存储器,所述AMP多核处理器配合共享SSRAM及存储器,共同执行如上实施例中涉及的AMP多核处理器间中断与共享存储方法。
在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本方案的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本方案的实施方式所属技术领域的技术人员所理解。处理器执行上文所描述的各个方法和处理。例如,本方案中的方法实施方式可以被实现为软件程序,其被有形地包含于机器可读介质,例如存储器。在一些实施方式中,软件程序的部分或者全部可以经由存储器和/或通信接口而被载入和/或安装。当软件程序加载到存储器并由处理器执行时,可以执行上文描述的方法中的一个或多个步骤。备选地,在其他实施方式中,处理器可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行上述方法之一。
在此以其他方式描述的逻辑和/或步骤,可以具体实现在任何可读存储介质中,以供指令执行***、装置或设备(如基于计算机的***、包括处理器的***或其他可以从指令执行***、装置或设备取指令并执行指令的***)使用,或结合这些指令执行***、装置或设备而使用。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (7)
1.AMP多核处理器间中断与共享存储***,其特征在于,所述***包括:
多个处理器核,该多个处理器核按顺序编号;每个处理器核设置对应的私有Cache;
中断控制模块,包括软件中断生成器、CPU接口管理单元、通用中断控制器,软件中断生成器、CPU接口管理单元分别连接通用中断控制器;软件中断生成器接收处理器核发送的触发中断信号,并产生中断,所述中断经通用中断控制器发送至CPU接口管理单元,所述CPU接口管理单元将所述中断有选择性的上报给一个或多个处理器核;
CPU接口管理单元通过配置为轮询模式,使得由通用中断控制器上报的所述中断轮询报告给各个处理器核,以控制多个处理器核形成环形中断;
共享SSRAM,所述共享SSRAM与各个处理器核的私有Cache连接;共享SSRAM至少包括多个存储空间Space、红绿灯模块,每个Space对应一个处理器核;所述红绿灯模块用以控制每个处理器核对各个Space的读写操作;
所述红绿灯模块进一步包括:
红绿灯标志单元,该单元中的每个bit与一个处理器核及该处理器核对应的Space相对应,每个bit位的不同值分别对应红灯或绿灯,当bit为绿灯时,对应的处理器核能向对应的Space进行写操作,红灯时则只能进行读操作;
发送核号单元,表示作为数据发送端的处理器核编号;
接收核号单元,表示作为数据接收端的处理器核编号;
数据长度单元,表示传输的数据长度;
所述软件中断生成器包含一寄存器组,该寄存器组被全部处理器核共享,每个处理器核可通过所述寄存器组生成所述中断;
该中断路由至通用中断控制器,所述通用中断控制器为所述中断分配一中断号,该中断号被所述多个处理器核共享;
所述CPU接口管理单元将所述中断有选择性的上报给一个或多个处理器核,通过以下方式中的至少一种:
轮询模式:CPU接口管理单元将本次中断单独上报给某个处理器核,此后每增加一次中断,则CPU接口管理单元按照处理器核编号次序将中断单独上报给下一个处理器核;第n+1次中断时,则再次上报给首次上报的处理器核,以形成环形轮询方式;n为处理器核总数;
广播模式:CPU接口管理单元将本次中断上报给所有处理器核;
指定模式:CPU接口管理单元将本次中断有选择的报告给某个或某几个处理器核。
2.根据权利要求1所述的***,其特征在于,所述共享SSRAM中,所述Space数量与处理器核数量一致;
任一处理器核对任一Space都有读权限,只有本处理器核对其对应的Space有写操作权限。
3.根据权利要求1所述的***,其特征在于,所述通用中断控制器还连接共享中断、各处理器核的私有中断。
4.AMP多核处理器间中断与共享存储方法,其特征在于,该方法应用于权利要求1-3任一所述的***,该方法包括:
步骤1、初始化***,对中断回调函数进行注册,并将各个处理器核对应的红绿灯标志单元中对应的红绿灯标志位设置为绿灯;
步骤2、启动发送任务,红绿灯模块判断数据发送端对应的红绿灯标志位是否为绿灯;如果不是绿灯,则进入等待环节,并在满足预设条件后再次进行任务发送;如果是绿灯,则设置数据发送端的红绿灯标志位为红灯;
步骤3、向数据发送端对应的Space首地址写入数据,并在红绿灯模块中填写发送核号、接收核号、数据长度;
步骤4、触发中断,执行中断对应的中断回调函数;数据接收端读取所述数据;
所述数据发送端指发送数据的处理器核,所述数据接收端指接收数据的处理器核。
5.根据权利要求4所述的方法,其特征在于,所述数据接收端执行的步骤进一步包括:
步骤401、接收到中断后,进入中断回调函数;
步骤402、读取接收核号,并判断所述接收核号是否为数据接收端对应的编号;若否,则清除中断,退出中断回调函数;若是,则执行步骤403;
步骤403、清除中断,读取发送核号、数据长度;
步骤404、根据数据长度,从首地址处读取发送核号对应的Space空间;
步骤405、数据读取完毕后,设置数据发送端对应的红绿灯标志位为绿灯,并退出中断回调函数。
6.根据权利要求4所述的方法,其特征在于,所述初始化***进一步包括:
步骤101、***初始化开始,初始化中断控制模块;
步骤102、连接软中断的中断号,并注册中断回调函数,将中断号与中断回调函数建立连接;
步骤103、使能中断控制模块;
步骤104、将CPU接口管理单元的模式配置为轮询模式,完成***初始化。
7.AMP多核处理器间中断与共享存储设备,其特征在于,所述设备包括AMP多核处理器、共享SSRAM及存储器,所述AMP多核处理器配合共享SSRAM及存储器,共同执行如权利要求4-6任一所述的AMP多核处理器间中断与共享存储方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211568063.8A CN115658569B (zh) | 2022-12-08 | 2022-12-08 | Amp多核处理器间中断与共享存储方法、***及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211568063.8A CN115658569B (zh) | 2022-12-08 | 2022-12-08 | Amp多核处理器间中断与共享存储方法、***及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115658569A CN115658569A (zh) | 2023-01-31 |
CN115658569B true CN115658569B (zh) | 2023-04-14 |
Family
ID=85017441
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211568063.8A Active CN115658569B (zh) | 2022-12-08 | 2022-12-08 | Amp多核处理器间中断与共享存储方法、***及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115658569B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102622329A (zh) * | 2011-02-11 | 2012-08-01 | 微软公司 | 多核计算机中的远程核操作 |
CN105718390A (zh) * | 2014-12-18 | 2016-06-29 | 英特尔公司 | 共享存储器链路中的低功率进入 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101000596A (zh) * | 2007-01-22 | 2007-07-18 | 北京中星微电子有限公司 | 一种可实现芯片内多核间通信的芯片及通信方法 |
CN101335825A (zh) * | 2008-07-18 | 2008-12-31 | 深圳创维-Rgb电子有限公司 | 电视机程序刷新器 |
CN101354664B (zh) * | 2008-08-19 | 2011-12-28 | 中兴通讯股份有限公司 | 多核处理器中断负载均衡方法和装置 |
CN101504618B (zh) * | 2009-02-26 | 2011-04-27 | 浙江大学 | 面向多核处理器的实时线程迁移方法 |
CN104838361B (zh) * | 2013-12-03 | 2018-06-15 | 华为技术有限公司 | 一种核间进程通信的方法、装置及*** |
US10860487B2 (en) * | 2019-04-17 | 2020-12-08 | Chengdu Haiguang Integrated Circuit Design Co. Ltd. | Multi-core processing device and method of transferring data between cores thereof |
CN111651377B (zh) * | 2020-06-28 | 2022-05-20 | 中国人民解放军国防科技大学 | 一种用于片内报文处理的弹性共享缓存器 |
-
2022
- 2022-12-08 CN CN202211568063.8A patent/CN115658569B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102622329A (zh) * | 2011-02-11 | 2012-08-01 | 微软公司 | 多核计算机中的远程核操作 |
CN105718390A (zh) * | 2014-12-18 | 2016-06-29 | 英特尔公司 | 共享存储器链路中的低功率进入 |
Also Published As
Publication number | Publication date |
---|---|
CN115658569A (zh) | 2023-01-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6711643B2 (en) | Method and apparatus for interrupt redirection for arm processors | |
US8146089B2 (en) | Sharing resources of a partitioned system | |
KR100457146B1 (ko) | 비정형 메모리 액세스 데이터 프로세싱 시스템을 위한 인터럽트 아키텍쳐 | |
US8850081B2 (en) | Method, system and apparatus for handling events for partitions in a socket with sub-socket partitioning | |
US7464208B2 (en) | Method and apparatus for shared resource management in a multiprocessing system | |
JP2009515246A (ja) | 集中特化したマルチタスク及びマルチフロー処理をリアルタイム実行する手法及びシステム | |
CN107729267B (zh) | 资源的分散分配以及用于支持由多个引擎执行指令序列的互连结构 | |
US20220206944A1 (en) | Cache allocation method and device, storage medium, and electronic device | |
US20240054059A1 (en) | Test Method and Multi-Processor SOC Chip | |
US8296552B2 (en) | Dynamically migrating channels | |
US20110161644A1 (en) | Information processor | |
US6684346B2 (en) | Method and apparatus for machine check abort handling in a multiprocessing system | |
JP2008026944A (ja) | バス結合型マルチプロセッサ | |
CN115658569B (zh) | Amp多核处理器间中断与共享存储方法、***及设备 | |
CN103176941B (zh) | 核间通信方法和代理装置 | |
KR101639854B1 (ko) | 복수의 엔진에 의해 명령어 시퀀스들의 실행을 지원하기 위한 상호접속 구조 | |
US20140136745A1 (en) | Method and apparatus for allocating interrupts in a multi-core system | |
US20130339591A1 (en) | Relaying apparatus, relay history recording method, and data processing apparatus | |
JP2009175960A (ja) | 仮想マルチプロセッサシステム | |
CN116382861A (zh) | Numa架构的服务器网络进程自适应调度方法、***及介质 | |
US7979660B2 (en) | Paging memory contents between a plurality of compute nodes in a parallel computer | |
KR100921504B1 (ko) | 다중 프로세서를 구비한 시스템 온 칩 시스템 내의프로세서간 통신 장치 및 방법 | |
CN113391821A (zh) | 一种非对称多处理器嵌入式操作*** | |
KR20130104958A (ko) | 다중 운영체제들을 실행하는 장치 및 방법 | |
JP2872259B2 (ja) | マルチプロセッサシステム |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |