内存访问方法和装置与流程

文档序号:11133861阅读:239来源:国知局
内存访问方法和装置与制造工艺

本发明涉及计算机技术领域,尤其涉及一种内存访问方法和装置。



背景技术:

相关技术中,共享内存式通信方式多数并不支持多个处理器,仅在处理器内部支持资源共享,即,处理器内部的多个内核共用一个内存控制器,所有的处理器通过共用的内存控制器访问内存。这种方式可以实现高效率的资源共享,然而适用范围有限。另一方面,相关技术中的非共享内存式多处理器间通信方式在占用高速通信接口的同时还需要进行额外的内存读写操作来复制数据,不仅浪费了硬件接口资源,也浪费了处理器的运算资源,资源共享效率低,而且受限于通信接口的传输速率。



技术实现要素:

本发明旨在至少在一定程度上解决相关技术中的技术问题之一。

为此,本发明的一个目的在于提出一种内存访问方法,能够实现多个处理器间共享内存,有效提升多个处理器间数据的传输效率,简化共享内存的操作流程。

本发明的另一个目的在于提出一种内存访问装置。

为达到上述目的,本发明第一方面实施例提出的内存访问方法,包括:获取处理器发送的操作信号;根据所述操作信号获取所述处理器需要访问的目标地址,并确定所述目标地址所在的内存地址范围,其中,所述内存地址范围包括独立内存地址范围、锁地址和共享内存地址范围;根据与所述目标地址所在 的内存地址范围对应的访问规则将所述操作信号发送至所述处理器需要访问的内存,以使处理器对所述需要访问的内存中的数据进行读写操作。

本发明第一方面实施例提出的内存访问方法,通过确定处理器需要访问的目标地址所在的内存地址范围,根据与目标地址所在的内存地址范围对应的访问规则将操作信号发送至处理器需要访问的内存,以使处理器对需要访问的内存中的数据进行读写操作,能够实现多个处理器间共享内存,有效提升多个处理器间数据的传输效率,简化共享内存的操作流程。

为达到上述目的,本发明第二方面实施例提出的内存访问装置,包括:获取模块,用于获取处理器发送的操作信号;确定模块,用于根据所述操作信号获取所述处理器需要访问的目标地址,并确定所述目标地址所在的内存地址范围,其中,所述内存地址范围包括独立内存地址范围、锁地址和共享内存地址范围;访问模块,用于根据与所述目标地址所在的内存地址范围对应的访问规则将所述操作信号发送至所述处理器需要访问的内存,以使处理器对所述需要访问的内存中的数据进行读写操作。

本发明第二方面实施例提出的内存访问装置,通过确定处理器需要访问的目标地址所在的内存地址范围,根据与目标地址所在的内存地址范围对应的访问规则将操作信号发送至处理器需要访问的内存,以使处理器对需要访问的内存中的数据进行读写操作,能够实现多个处理器间共享内存,有效提升多个处理器间数据的传输效率,简化共享内存的操作流程。

本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。

附图说明

本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:

图1是本发明一实施例提出的内存访问方法的流程示意图;

图2是本发明实施例中内存访问系统的结构示意图;

图3是本发明另一实施例提出的内存访问方法的流程示意图;

图4是本发明实施例中内存访问方法的流程示意图;

图5是本发明另一实施例提出的内存访问方法的流程示意图;

图6是本发明实施例中另一内存访问方法的流程示意图;

图7是本发明另一实施例提出的内存访问装置的结构示意图。

具体实施方式

下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。相反,本发明的实施例包括落入所附加权利要求书的精神和内涵范围内的所有变化、修改和等同物。

图1是本发明一实施例提出的内存访问方法的流程示意图。参见图1,该方法包括:

S101:获取处理器发送的操作信号。

本实施例中的内存访问方法被配置在内存访问系统中。

参见图2,图2是本发明实施例中内存访问系统的结构示意图,其中,该系统200包括包含处理器201、独立内存202、共享内存203,以及PLD204,每个处理器对应一个独立内存,所有处理器共用一个共享内存。处理器201、独立内存202以及共享内存203连接至一个PLD204,处理器201需要通过PLD204访问独立内存202和共享内存203。

本实施例的执行主体为可编程逻辑器件(Programmable Logic Device,PLD)。

例如,可以由PLD获取处理器发送的操作信号,并将操作信号发送至独立内存或者共享内存。

其中,处理器可以用于解释计算机指令以及处理计算机软件中的数据。在本发明的实施例中,处理器的数量为两个或者多个。

在本发明的实施例中,操作信号为处理器对需要访问的内存中的数据进行读写操作的信号,操作信号可以包括目标地址、操作类型,以及操作数据的所占的内存大小等,其中,目标地址为处理器需要访问的内存地址,目标地址可以用十六进制的数字表示,目标地址例如为5000000016,操作信号例如处理器向目标地址5000000016写入32KiB数据。

S102:根据操作信号获取处理器需要访问的目标地址,并确定目标地址所在的内存地址范围,其中,内存地址范围包括独立内存地址范围、锁地址和共享内存地址范围。

内存用于暂时存放处理器中的运算数据,以及存放处理器与硬盘等外部存储器交换的数据。

内存地址指系统内存中的特定位置,通常以十六进制的数字表示,处理器通过访问内存地址来访问内存中的数据。

在本发明的实施例中,内存包括独立内存和共享内存,独立内存与共享内存需要具有相同的协议和数据位宽,与内存相对应的内存地址范围包括独立内存地址范围、锁地址和共享内存地址范围。每个处理器对应一个独立内存,所有处理器共用一个共享内存,处理器、独立内存以及共享内存连接至一个PLD,独立内存与共享内存容量之和小于处理器的寻址范围。

在本发明的实施例中,内存地址范围可以由计算机内置程序预先设定,设定规则可以例如:

a)、独立内存地址范围为:处理器内存起始地址~独立内存起始地址加上独立内存的容量;

b)、共享内存地址范围为:处理器内存起始地址加上独立内存的容量~处理器内存起始地址加上独立内存容量再加上共享内存的容量;

c)、锁地址为共享内存的起始地址,锁地址可以被PLD占用。

以图2为例,参见图2,其中,处理器201的数量为n,n∈Z,n≥2,第i个处理器用Pi表示,i∈Z,0≤i≤n-1,独立内存202数量与处理器201数量相同,第i个独立内存用Ri表示,处理器201内存起始地址为Astart,处理器201支持的最大内存容量为Smax,每个处理器Pi对应一个独立内存Ri,所有处理器201共用共享内存Rs,独立内存容量为S,独立内存地址范围为A,A=Z∩[Astart,Astart+S),共享内存203容量为Ss,共享内存地址范围为As,As=Z∩(Astart+S,Astart+S+Ss),其中,S+Ss≤Smax,I为持有锁的处理器的序号,I∈Z,0≤I≤n,当I=n,表示锁未被分配,即锁由PLD自身持有,锁地址为AL,AL=Astart+S,Ai为处理器Pi访问的目标地址。

S103:根据与目标地址所在的内存地址范围对应的访问规则将操作信号发送至处理器需要访问的内存,以使处理器对需要访问的内存中的数据进行读写操作。

一些实施例中,参见图3,与目标地址所在的内存地址范围对应的访问规则包括:

S301:如果目标地址在独立内存地址范围内,则将操作信号发送至与处理器对应的独立内存。

本实施例中,以图4为例,若PLD接收到来自处理器Pi的操作信号,独立内存地址范围为A,如果操作信号中的目标地址Ai∈A,则PLD对操作信号不做任何处理,将操作信号发送至与处理器Pi对应的独立内存Ri

本步骤中,在处理器需要访问的内存地址在独立内存地址范围内时,将操作信号发送至与该处理器对应的独立内存,避免了不同处理器访问对应独立内存的操作流程之间的资源占用,有效节省处理器的运算资源。

S302:如果目标地址与锁地址相同,则获取处理器的操作类型,执行与操作类型对应的操作步骤,其中,操作类型包括读操作和写操作。

在本发明的实施例中,处理器可以通过从锁地址读取数据向PLD申请获取 锁,PLD将持有锁的处理器的序号作为数据返回给处理器,如果没有处理器持有锁,则PLD将锁分配给提出申请的处理器,否则申请无效,未获取锁的处理器无权访问共享内存,获取锁的处理器通过向锁地址写入数据释放锁。

可选地,一些实施例中,参见图5,获取操作信号的操作类型,并执行与操作类型对应的操作步骤,其中,操作类型包括读操作和写操作,包括:

S501:如果操作类型为读操作,则执行与读操作对应的第一操作步骤,其中,第一操作步骤用于将锁分配给处理器。

在本发明的实施例中,第一操作步骤为:

判断锁是否被分配;

如果锁未被分配,则将锁分配给处理器;

如果锁已被分配,则将已分配锁的处理器的序号发送至处理器。

以图4为例,如果目标地址与锁地址相同,即Ai=AL,且操作类型为读操作(read),PLD继续检查持有锁的处理器序号I的值,如果I=n,即锁未被分配,则PLD将锁分配给处理器,即将I的值设置为i并作为数据返回给处理器Pi,如果I≠n,即锁已被分配,则PLD将I的值作为数据返回给处理器Pi,不修改I的值。

本步骤中,通过将锁分配给处理器,以使获取锁的处理器能够访问共享内存,未获取锁的处理器无权访问共享内存,实现多个处理器间共享内存。

S502:如果操作类型为写操作,则执行与写操作对应的第二操作步骤,其中,第二操作步骤用于将锁设置为未被分配状态。

在本发明的实施例中,第二操作步骤为:

判断处理器是否为预设处理器;

如果处理器为预设处理器,则将锁设置为未被分配状态。

以图4为例,如果目标地址与锁地址相同,即Ai=AL,且操作类型为写操作(write),PLD继续检查持有锁的处理器序号I的值,如果I=i(即I等于处理器Pi的序号i),则PLD将I的值设置为n,即将锁设置为未被分配状态,如果 I≠i,则PLD忽略此操作信号。

本步骤中,获取锁的处理器通过向锁地址写入数据释放锁,能够有效节省硬件接口资源,以及有效节省处理器的运算资源,提升处理器访问内存的性能。

S303:如果目标地址在共享内存地址范围内,则判断处理器是否为持有锁的处理器,如果处理器为持有锁的处理器,则根据预设规则对目标地址进行处理,并根据处理后的目标地址将操作信号发送至共享内存。

以图4为例,如果Ai∈As,PLD继续检查I的值,如果I=i,PLD将目标地址减去S后(Ai-Astart-S)发送至Rs,如果I≠i,PLD忽略此次操作。

本步骤中,在目标地址在共享内存地址范围内,且处理器为持有锁的处理器时,将操作信号发送至共享内存,能够实现高效率的资源共享。

进一步,可选地,以图6为例,运行于处理器Pi上的程序在访问目标地址Ai前需要检查Ai,如果Ai∈A,可以直接访问,如果Ai∈As,程序需要先读取地址AL获取锁,如果返回数据等于i,程序可以继续访问地址Ai,访问结束后程序向地址AL写入数据释放锁,如果返回数据不等于i,程序对Ai地址的操作无效。

本发明实施例的内存访问方法可以具体示例如下:

以内存访问系统包含2个处理器P0、P1,2个独立内存R0、R1,1个共享内存Rs,一个PLD示例。其中:处理器P0、P1均使用32位地址,按字节寻址,地址空间范围为4GiB,处理器P0、P1的内存起始地址Astart为4000000016,处理器P0、P1支持的最大内存容量Smax为2GiB,内存R0、R1,Rs容量S均为1GiB,独立内存地址空间A=Z∩[4000000016,8000000016),共享内存地址空间As=Z∩(8000000016,C000000016),锁地址AL=8000000016,初始状态下锁由PLD持有,即I=2。

例1:执行处理器P0向地址5000000016写入32KiB数据,同时,处理器P1从地址5000000116读取32KiB数据。

P0:写入地址5000000016∈A;

PLD:接收来自P0的信号,5000000016∈A,信号输出至R0

P1:读取地址5000000116∈A;

PLD:接收来自P1的信号,5000000116∈A,信号输出至R1

操作结果:P0将32KiB数据写入R0的1000000016地址;P1从R1的1000000116地址读取32KiB的数据;P0与P1操作的数据相互独立。

例2:执行处理器P0向地址9000000016写入32KiB数据,在P0写入完成前P1从地址9000000116读取32KiB数据。

P0:读取地址8000000016

PLD:接收来自P0的信号,8000000016=AL,I=2;将锁分配给P0,设置I为0,返回0给P0

P1:读取地址8000000016

PLD:接收来自P1的信号,8000000016=AL,I=0;忽略此次操作,返回0给P1

P0:返回数据与自身序号一致,写入地址9000000016

P1:返回数据与自身序号不一致,操作取消;

PLD:接收来自P0的信号,9000000016∈As,信号输出至Rs

P0:写入地址8000000016

PLD:接收来自P0的信号,8000000016=AL,I=0;设置I=2;

操作结果:P0将32KiB数据写入Rs的1000000016地址;P1的操作被取消。

例3:P0向地址9000000016写入32KiB数据,在P0写入完成后P1从地址9000000016读取32KiB数据。

P0:读取地址8000000016

PLD:接收来自P0的信号,8000000016=AL,I=2;将锁分配给P0,设置I=0,返回0给P0

P0:返回数据与自身序号一致,写入地址9000000016

PLD:接收来自P0的信号,9000000016∈As,信号输出至Rs

P0:写入地址8000000016

PLD:接收来自P0的信号,8000000016=AL,I=0;设置I=2;

P1:读取地址8000000016

PLD:接收来自P1的信号,8000000016=AL,I=2;将锁分配给P1,设置I=1,返回1给P1

P1:返回数据与自身序号一致,读取地址9000000016

PLD:接收来自P1的信号,9000000016∈As,信号输出至Rs

P1:写入地址8000000016

PLD:接收来自P1的信号,8000000016=AL,I=1;设置I=2;

操作结果:P0将32KiB数据写入Rs的1000000016地址;P1从R1的1000000016地址读取32KiB的数据;P0与P1通过Rs交换了32KiB的数据。

本实施例中,通过确定处理器需要访问的目标地址所在的内存地址范围,根据与目标地址所在的内存地址范围对应的访问规则将操作信号发送至处理器需要访问的内存,以使处理器对需要访问的内存中的数据进行读写操作,能够实现多个处理器间共享内存,有效提升多个处理器间数据的传输效率,简化共享内存的操作流程。

图7是本发明一实施例提出的内存访问装置的结构示意图。

参见图7,该内存访问装置70包括:

获取模块701,用于获取处理器发送的操作信号。

确定模块702,用于根据操作信号获取处理器需要访问的目标地址,并确定目标地址所在的内存地址范围,其中,内存地址范围包括独立内存地址范围、锁地址和共享内存地址范围。

访问模块703,用于根据与目标地址所在的内存地址范围对应的访问规则 将操作信号发送至处理器需要访问的内存,以使处理器对需要访问的内存中的数据进行读写操作。

一些实施例中,访问模块703具体用于:如果目标地址在独立内存地址范围内,则将操作信号发送至与处理器对应的独立内存;如果目标地址与锁地址相同,则获取处理器的操作类型,执行与操作类型对应的操作步骤,其中,操作类型包括读操作和写操作;如果目标地址在共享内存地址范围内,则判断处理器是否为持有锁的处理器,如果处理器为持有锁的处理器,则根据预设规则对目标地址进行处理,并根据处理后的目标地址将操作信号发送至共享内存。

一些实施例中,访问模块703还具体用于:如果操作类型为读操作,则执行与读操作对应的第一操作步骤,其中,第一操作步骤用于将锁分配给处理器;如果操作类型为写操作,则执行与写操作对应的第二操作步骤,其中,第二操作步骤用于将锁设置为未被分配状态。

可选地,第一操作步骤为:

判断锁是否被分配;

如果锁未被分配,则将锁分配给处理器;

如果锁已被分配,则将已分配锁的处理器的序号发送至处理器。

可选地,第二操作步骤为:

判断处理器是否为持有锁的处理器;

如果处理器为持有锁的处理器,则将锁设置为未被分配状态。

可选地,处理器的数量为两个或者多个。

需要说明的是,前述对内存访问方法实施例的解释说明也适用于该实施例的内存访问装置70,其实现原理类似,此处不再赘述。

本实施例中,通过确定处理器需要访问的目标地址所在的内存地址范围,根据与目标地址所在的内存地址范围对应的访问规则将操作信号发送至处理器需要访问的内存,以使处理器对需要访问的内存中的数据进行读写操作,能够实现多个处理器间共享内存,有效提升多个处理器间数据的传输效率,简化共 享内存的操作流程。

需要说明的是,在本发明的描述中,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上。

流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。

应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。

本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。

此外,在本发明各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。

上述提到的存储介质可以是只读存储器,磁盘或光盘等。

在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。

尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1