CN114691532A - 内存访问方法、内存地址分配方法及装置 - Google Patents
内存访问方法、内存地址分配方法及装置 Download PDFInfo
- Publication number
- CN114691532A CN114691532A CN202011615532.8A CN202011615532A CN114691532A CN 114691532 A CN114691532 A CN 114691532A CN 202011615532 A CN202011615532 A CN 202011615532A CN 114691532 A CN114691532 A CN 114691532A
- Authority
- CN
- China
- Prior art keywords
- memory
- length
- address
- bits
- target
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0646—Configuration or reconfiguration
- G06F12/0684—Configuration or reconfiguration with feedback, e.g. presence or absence of unit detected by addressing, overflow detection
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Storage Device Security (AREA)
Abstract
本申请公开了一种内存访问方法、内存地址分配方法及装置,属于信息技术领域。该方法包括:计算机设备获取内存访问请求,该内存访问请求包括目标内存地址信息,该目标内存地址信息包括地址位和长度位,其中,地址位用于携带访问的内存的目标地址,长度位用于携带从设定地址开始所允许访问的内存的长度;计算机设备基于内存访问请求进行内存的访问。本申请通过在目标内存地址信息中设置地址位和长度位,使得计算机设备可以根据内存的目标地址以及该内存的长度来进行内存的访问,丰富了内存地址信息的功能,实现了对内存地址信息的充分高效利用。
Description
技术领域
本申请涉及信息技术领域,特别涉及一种内存访问方法、内存地址分配方法及装置。
背景技术
计算机设备一般包括中央处理器(Central Processing Unit,CPU)、内存和软件。CPU可以通过总线访问内存。
CPU在访问内存时,通过总线向内存发送内存访问请求(例如读请求或写请求),该内存访问请求包括内存地址信息。示例地,在支持64位指令集架构(Architecture64,Arch64)的计算机设备中,内存地址信息的总长度为64位,由于实际内存空间的需要以及硬件条件的限制,通常使用64位中的低48位来携带访问的内存地址,即低48位为有效地址位。
然而,现有的内存访问方法中,内存地址信息的高位(例如高16位)通常为空闲地址位,导致内存地址信息的功能单一,无法实现内存地址信息的充分高效利用。
发明内容
本申请提供了一种内存访问方法、内存地址分配方法及装置,可以解决相关技术中地址信息的功能单一以及无法充分高效利用内存地址信息的问题。
第一方面,提供了一种内存访问方法,用于计算机设备,该方法包括:
获取内存访问请求,该内存访问请求包括目标内存地址信息,该目标内存地址信息包括地址位和长度位,地址位用于携带访问的内存的目标地址,长度位用于携带从设定地址开始所允许访问的内存的长度;基于内存访问请求进行内存的访问。
本申请中,通过在目标内存地址信息中设置长度位和地址位,使得计算机设备可以根据内存的目标地址以及该内存的长度来进行内存的访问,从而丰富了内存地址信息的功能,实现了对内存地址信息的充分高效利用。
在第一方面的第一种可能实现方式中,地址位的长度为48位,长度位的长度小于或等于16位;或者,地址位的长度为第一长度,长度位的长度为第二长度,第一长度小于48位,第一长度和第二长度之和小于或等于64位;或者,地址位的长度为48位,长度位的长度大于16位。
本申请中,可以根据实际需求灵活设置地址位的长度和长度位的长度,在丰富了内存地址信息中地址位以及长度位的配置方式的同时,提高了对内存地址信息的利用率。
结合第一方面和第一方面的第一种可能实现方式,在第一方面的第二种可能实现方式中,基于内存访问请求进行内存的访问,包括:在确定目标内存长度小于或等于长度位携带的长度后,向内存发送内存访问请求,该目标内存长度为从设定地址到目标地址的长度与访问长度之和。该访问长度为实际访问的内存的长度(也称期望访问的内存的长度)。该内存访问请求可以携带该访问长度,或者计算机设备可以基于预设规则获取该访问长度。
结合第一方面的第二种可能实现方式,在第一方面的第三种可能实现方式中,在确定目标内存长度大于长度位携带的长度后,禁止向内存发送内存访问请求。
结合第一方面的第三种可能实现方式,在第一方面的第四种可能实现方式中,在确定目标内存长度大于长度位携带的长度后,发出异常信息。
结合第一方面和第一方面的第一种至第四种中的任一可能实现方式,在第一方面的第五种可能实现方式中,获取内存访问请求,包括:基于接收的地址设置指令生成内存访问请求,该地址设置指令包括目标内存地址信息;或者,基于生成的目标内存地址信息,生成内存访问请求;或者,接收内存访问请求。
第二方面,提供了一种内存地址分配方法,用于计算机设备,该方法包括:生成内存地址信息,该内存地址信息包括:地址位和长度位,地址位用于携带内存的目标地址,长度位用于携带从设定地址开始所允许访问的内存的长度;分配内存地址信息。该目标内存地址信息中的地址位和长度位的设置方式可以参考第一方面的第一种可能实现方式中地址位和长度位的设置方式。
第三方面,提供了一种内存访问装置,用于计算机设备,该内存访问装置具有实现上述第一方面中内存访问方法行为的功能。该内存访问装置包括至少一个模块,该至少一个模块用于实现上述第一方面所提供的内存访问方法。
第四方面,提供了一种内存地址分配装置,用于计算机设备,该内存地址分配装置具有实现上述第二方面中内存地址分配方法行为的功能。该内存地址分配装置包括至少一个模块,该至少一个模块用于实现上述第二方面所提供的内存地址分配方法。
第五方面,提供了一种计算机设备,包括:处理器和存储器;
所述存储器,用于存储计算机程序,所述计算机程序包括程序指令;
所述处理器,用于调用所述计算机程序,实现如第一方面所述的内存访问方法,或者实现如第二方面所述的内存地址分配方法。该计算机设备可以是CPU内部的一个硬件设备,如内存控制器或内存管理单元等等,也可以是一个CPU中运行的软件,如软件插桩。
可选地,该计算机设备可以为安全检查设备,用于通过校验目标内存长度是否在长度位所指示的允许访问的内存长度范围之内,来对内存访问请求的安全性进行校验。
第六方面,提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序包含至少一段代码,该至少一段代码可由计算机设备执行,以控制所述计算机设备执行如第一方面所述的内存访问方法或第二方面所述的内存地址分配方法。
第七方面,提供了一种芯片,芯片包括可编程逻辑电路和/或程序指令,当芯片运行时,实现上述第一方面及其可能实现方式中或第二方面中任一所述的方法。
本申请提供的技术方案带来的有益效果至少包括:
通过在目标内存地址信息中设置地址位和长度位,使得计算机设备可以根据内存的目标地址以及该内存的长度来进行内存的访问,在丰富了内存地址信息的功能的同时,也丰富了计算机设备对内存进行内存的访问的方法,进而可以实现对内存地址信息的充分高效利用;并且地址位的长度和长度位的长度可以根据实际需求灵活设置,进而丰富了内存地址信息中地址位以及长度位的配置方式;另外,计算机设备可以根据内存访问请求中的目标内存长度以及内存访问请求中长度位携带的长度来进行异常校验,并在异常校验通过后,基于内存访问请求进行内存的访问,在异常校验未通过后,禁止采用内存访问请求进行内存的访问,从而可以防止内存访问违例现象的发生,进而提高了对内存进行访问的安全性。
附图说明
图1是本申请实施例提供的一种计算机设备的结构示意图;
图2是相关技术中提供的一种内存地址信息的结构示意图;
图3是相关技术中提供的另一种内存地址信息的结构示意图;
图4是本申请实施例提供的一种内存访问方法的流程示意图;
图5是本申请实施例提供的一种目标内存地址信息的结构示意图;
图6是本申请实施例提供的另一种目标内存地址信息的结构示意图;
图7是本申请实施例提供的又一种目标内存地址信息的结构示意图;
图8是本申请实施例提供的再一种目标内存地址信息的结构示意图;
图9是本申请实施例提供的还一种目标内存地址信息的结构示意图;
图10是本申请实施例提供的一种内存地址分配方法的流程示意图;
图11是本申请实施例提供的一种内存访问装置的结构示意图;
图12是本申请实施例提供的一种内存地址分配装置的结构示意图;
图13是本申请实施例提供的一种计算机设备的框图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
图1是本申请实施例提供的一种计算机设备的结构示意图。该计算机设备可以是:服务器、智能手机、平板电脑、笔记本电脑或台式电脑等。如图1所示,该计算机设备包括中央处理器101和内存102。中央处理器101与内存102通过总线(bus)连接。
中央处理器101是计算机设备的计算核心和控制核心。中央处理器101用于执行计算机的指令以及处理数据。具体地,中央处理器101可以读取内存102中的数据,进而对读取的数据进行运算或其他处理,或者,中央处理器101可以向内存102中写入数据。
内存102是中央处理器101能直接寻址的地址空间,用于存储程序或者存储中央处理器101的临时处理数据等。内存102可以是随机存储内存(Random Access Memory,RAM)、高速缓存(Cache)、线性寻址闪存(Flash)或者输入/输出(Input/Output,I/O)模块等。
总线用于传输数据信息、内存地址信息以及控制信息。总线包括数据总线(DataBus,DB)、地址总线(Address Bus,AB)以及控制总线(Control Bus,CB)。数据总线是中央处理器101与内存102之间进行数据信息传输的通道。数据总线宽度与一次数据传输中所能传输的数据量有关。地址总线用于传输内存地址信息,中央处理器101可以根据地址总线中所传输的内存地址信息来访问内存102中的指定存储单元。地址总线宽度与中央处理器101在内存102中所能寻到的地址空间的大小有关。例如,地址总线的数量为32,则中央处理器101在内存102中所能寻到的地址空间为4吉字节(gigabyte,GB)。又或者例如,地址总线的数量为64,则中央处理器101在内存102中所能寻到的地址空间为16384拍字节(petabytes,PB)。控制总线用于传输控制信息。控制总线宽度与中央处理器101对内存102的控制能力有关。
为了便于读者理解,下面以图1为例对内存访问中的数据读写过程进行示意性说明。当中央处理器101需要读取内存102中的数据时,中央处理器101生成读请求,该读请求包括:数据的内存地址信息和进行读操作的控制信号。中央处理器101将内存地址信息通过地址总线发送给内存102,并将进行读操作的控制信号通过控制总线发送给内存102;基于来自中央处理器101的内存地址信息以及进行读操作的控制信号,内存102查找需要读取的数据;在找到需要读取的数据后,内存102将读取的数据通过数据总线发送回中央处理器101。当中央处理器101需要向内存102写入数据时,中央处理器101生成写请求,该写请求包括:需要写入的数据、数据的内存地址信息和进行写操作的控制信号。中央处理器101将需要写入的数据通过数据总线发送给内存102,将需要写入的数据的内存地址信息通过地址总线发送给内存102,并将进行写操作的控制信号通过控制总线发送给内存102;基于来自中央处理器101的进行写操作的控制信号、需要写入的数据以及该数据的内存地址信息,内存102将需要写入的数据写入与内存地址信息相对应的位置中。
目前,在支持Arch64的计算机设备中,地址总线上传输的内存地址信息中携带有内存的内存地址,因此计算机设备中的内存可以根据内存地址信息进行数据的读取或者写入。由于计算机设备实际内存空间的需要以及硬件条件的限制,通常不会使用内存地址信息中的全部地址位来携带内存地址,而是使用64位中的部分地址位(即有效地址位)携带内存地址,然后将剩余的地址位(即空闲地址位)进行固定填充,例如全部填充为“0”或全部填充为“1”。也即是,在支持Arch64的计算机设备中,仅能使用部分地址位来完成地址空间的寻址,而剩余的地址位则无法被利用。
示例地,在支持Arch64的计算机设备中,内存地址信息的总长度为64位。如图2所示,内存地址信息包括48位的有效地址位以及16位的空闲地址位。又或者,如图3所示,内存地址信息包括39位的有效地址位以及25位的空闲地址位。其中,有效地址位用于携带所访问的内存地址,空闲地址位被全部填充为“0”或被全部填充为“1”。
然而,相关技术中,使用内存地址信息进行内存的访问时,通常将内存地址信息中的高位地址位(例如高16位或者高25位)设置为空闲地址位,将低位地址位(例如低48位或者低39位)设置为有效地址位,导致内存地址信息的功能单一,使得内存地址信息的高位地址位无法得到有效利用,产生了资源的浪费。
图4是本申请实施例提供的一种内存访问方法的流程示意图。该方法应用于如图1所示的计算机设备中。如图4所示,该方法包括:
步骤401、计算机设备获取内存访问请求,该内存访问请求包括目标内存地址信息。如图5所示,该目标内存地址信息包括地址位和长度位,其中,地址位用于携带访问的内存的目标地址,长度位用于携带从该设定地址开始所允许访问的内存的长度。
其中,目标地址用于指示需要访问的内存的开始位置。其格式可以与传统的内存地址信息中的内存地址的格式相同。设定地址是允许访问的内存的长度的开始地址,该设定地址可以是预先指定的地址,例如***默认分配的地址。前述目标地址可以与设定地址相同,也可以与设定地址不同。所允许访问的内存的长度指的是允许访问的内存的大小,也即是一个长度阈值,该长度通常采用单字节表示。例如,所允许访问的内存的长度为16指的是允许访问16字节的内存。该所允许访问的内存的长度也可以采用多字节表示,如16字节,此时16指允许访问16*16=256字节的内存,默认以字节方式描述。需要说明的是,本申请实施例中,长度位中携带的长度的不同还可以代表不同的含义。例如,当长度位携带的长度为1时,目标内存地址信息与目标地址所指示的地址相同,因此,目标内存地址信息用来表示一个具体的地址;当长度位携带的长度大于1时,目标内存地址信息用来表示由目标地址开始的一段连续的存储空间;当长度位携带的长度为0时,由于实际实现时并不存在长度为0的地址,则表示目标内存地址信息中的目标地址是一个非法地址。
前述地址位的长度和长度位的长度可以有多种组合方式,本申请实施例以以下几种组合方式为例进行说明:
在第一种组合方式中,地址位的长度为48位,长度位的长度小于或等于16位。如此,长度位占用了传统的内存地址信息中的空闲地址位,实现了对空闲地址位的有效利用。如图6所示,图6是本申请实施例提供的一种目标内存地址信息的示意性结构,该目标内存地址信息中,地址位的长度为48位,长度位的长度为13位。
在第二种组合方式中,地址位的长度为第一长度,长度位的长度为第二长度,第一长度小于48位,第一长度和第二长度之和小于或等于64位。如此,地址位的长度可以小于传统的内存地址信息中的有效地址位的长度,而长度位占用了传统的内存地址信息中的空闲地址位以及有效地址位。地址位的长度和长度位的长度可以根据实际情况进行预先配置,从而实现了地址位与长度位的灵活配置,进而实现了对内存地址信息的有效利用。如图7所示,图7是本申请实施例提供的一种目标内存地址信息的示意性结构,该目标内存地址信息中,地址位的长度为34位,长度位的长度为24位。
在第三种组合方式中,地址位的长度为48位,长度位的长度大于16位。在第三种组合方式中,对于支持Arch64的计算机设备,由于地址位和长度位的总长度大于64位,需要配置扩展位,该扩展位为在64位基础上额外设置的数据位。如此,长度位占用了传统的内存地址信息中的空闲地址位,并且还占用了扩展位,实现了对空闲地址位的有效利用。并且,由于扩展位的设置,长度位的长度可以更长,从而能够支持大容量内存的访问,可以实现一个内存访问请求即完成大容量内存的访问。如图8所示,图8是本申请实施例提供的一种目标内存地址信息的示意性结构,该目标内存地址信息中,地址位的长度为48位,长度位的长度为80位,其中,长度位中的64位至127位为扩展位。
在第四种组合方式中,地址位的长度为第一长度,长度位的长度为第二长度,第一长度小于48位,第一长度和第二长度之和大于64位。如此,地址位的长度可以小于传统的内存地址信息中的有效地址位的长度,而长度位占用了传统的内存地址信息中的空闲地址位以及有效地址位,并且还占用了扩展位,地址位的长度和长度位的长度可以根据实际情况进行预先配置,从而实现了地址位与长度位的灵活配置,进而实现了对内存地址信息的有效利用。并且,由于扩展位的设置,长度位的长度可以更长,从而能够支持大容量内存的访问,可以实现一个内存访问请求即完成大容量内存的访问。如图9所示,图9是本申请实施例提供的一种目标内存地址信息的示意性结构,该目标内存地址信息中,地址位的长度为40位,长度位的长度为40位,其中,长度位中的64位至79位为扩展位。
其中,第三种组合方式中和第四种组合方式中涉及到的扩展位可以采用地址对象化扩展(address object-based extension,AOE)来实现。AOE不会改变计算机设备的地址总线宽度,而是采用计算机设备中的寄存器的位扩展来实现目标内存地址信息中长度位的扩展。另外,对于支持Arch64的计算机设备,当无法采用AOE且需要的占用的内存长度已经超出长度位所能表示的范围时,只能将长度位全部填充为“1”,此时表示该长度位无效,在访问内存时可以参考传统的内存访问方法。例如,在支持Arch64的计算机设备中,超过64千字节(kilobyte,K)的内存地址在16位的长度位中(在该Arch64的计算机设备中默认采用单字节方式表示内存地址的长度,如果采用多字节方式表示内存地址的长度,该内存地址的长度可以更长)已经无法表示,长度位会全部被填充为“1”,此时该长度位无效。在一种可实现方式中,在需要的内存长度大于长度位所能携带的最大长度时,计算机设备发出提示信息,该提示信息用于提示对计算机设备采用AOE,以扩展长度位。
本申请实施例中,可以根据实际需求灵活设置地址位的长度和长度位的长度,在丰富了内存地址信息中地址位以及长度位的配置方式的同时,提高了对内存地址信息的利用率。为了便于说明,本申请后续实施例均以地址位的长度为48位为例进行说明。
前述内存访问请求中的目标内存地址信息获取方式有多种,本申请实施例以以下几种获取方式为例进行说明:
第一种获取方式,基于接收的地址设置指令生成内存访问请求,该地址设置指令包括目标内存地址信息。
在一种可选方式中,地址设置指令通过编程的方式获取。该种方式通常应用于目标地址已知的情况,例如程序员需要访问一已知的目标地址,可以采用该方式设置目标内存地址信息。程序员可以采用汇编语言或者C语言等编程语言来编写程序以得到包含目标内存地址信息的地址设置指令。在另一种可选方式中,地址设置指令还可以由自其他设备或应用程序(或者客户端)自动生成。例如,该地址设置指令可以由应用程序的编译器生成。在地址设置指令生成后,相应的,计算机设备接收该地址设置指令。
例如,地址设置指令可以表示为:
Long addr=0x8************(代码1)。
其中,long表示长整型类型,addr表示构造的目标内存地址信息,0x8表示目标内存地址信息中长度位所携带的长度,*表示16进制下的数字(0-F),*的数量为12,表示16进制下的目标内存地址信息中地址位的长度是48位。
根据代码1可知,所访问的内存的目标地址为0x************,所允许访问的内存的长度为0x8个字节。
又例如,该地址设置指令可以表示为:
Long double addr=0x4444444************(代码2)。
其中,double long表示128位的超长整型类型,0x4444444表示目标内存地址信息中长度位所携带的长度。
根据代码2可知,所访问的内存的目标地址为0x************,所允许访问的内存的长度为0x4444444个字节。此时,目标内存地址信息中的长度位占用了扩展位,扩展位可以采用AOE来实现,具体可以参考前述第三种组合方式或第四种组合方式中的扩展位。
第二种获取方式,基于生成的目标内存地址信息,生成内存访问请求。计算机设备基于生成的目标内存地址信息,生成内存访问请求的过程可以包括以下步骤:
A1、计算机设备生成目标内存地址信息。
该生成目标内存地址信息的方式包括直接生成目标内存地址信息和基于已知的目标内存地址信息生成新的目标内存地址信息两种方式,本申请实施例对该两种方式分别进行说明:
在第一种方式中,假设需要生成的目标内存地址信息中,地址位中的目标地址为p,生成目标内存地址信息的方式可以包括以下几种:
方式1、计算机设备通过软件编译的方式生成目标内存地址信息。例如,软件编译时用于生成目标内存地址信息的代码可以表示为:
char p[20](代码3)。
其中,char表示字符数据类型,20表示软件在编译时对目标内存地址信息中的长度位自动填充的长度。
根据代码3可知,该代码3表示生成一个全局内存空间,目标内存地址信息中目标地址的地址空间范围为0x************-0x############,其中,0x############=0x************+20。
方式2、计算机设备在软件插桩代码运行时生成目标内存地址信息。例如,软件插桩代码运行时,用于生成目标内存地址信息的代码可以表示为:
char p[20](代码4)。
其中,20表示软件在插桩代码运行时自动填充的长度。
根据代码4可知,该代码4表示生成一个局部临时内存空间,目标内存地址信息中目标地址的地址空间范围为0x************-0x############,其中,0x############=0x************+20。
需要说明的是,前述方式1和方式2代码类似,但所处位置不同,这决定了前述方式1可以由计算机设备中运行的编译器在编译时执行长度位填充,方式2可以由编译器插桩的代码在运行时执行长度位填充。
方式3、计算机设备通过***内核生成目标内存地址信息。例如,计算机设备的***内核在接收到申请地址空间的地址申请请求后,响应于该申请请求,生成目标内存地址信息。该***内核用于生成目标内存地址信息的代码可以表示为:
char*p=(char*)malloc(20)(代码5)。
其中,char*表示字符指针,malloc函数为动态内存分配函数,20表示动态内存分配函数向***内核申请空间的长度。
根据代码5可知,目标内存地址信息中目标地址的地址空间范围为0x************-0x############,其中,0x############=0x************+20。
或者,该***内核用于生成目标内存地址信息的代码还可以表示为:
char*p=new char[20](代码6)。
其中,new char[]表示申请一个堆空间。
根据代码6可知,目标内存地址信息中目标地址的地址空间范围为0x************-0x############,其中,0x############=0x************+20。
前述方式一中,均以0x************为预先分配的起始地址为例进行说明,示例的,该起始地址可以为长度位所携带的长度对应的设定地址。该起始地址通常为一默认地址。实际实现时,还可以通过其他方式来指定该起始地址,本申请实施例对此不做限定。
本申请实施例中,可以在软件编译时生成目标内存地址信息,或者可以在软件插桩代码运行时生成目标内存地址信息,又或者可以由计算机设备的***内核生成目标内存地址信息,由于生成的目标内存地址信息中的长度位的长度可以根据实际需要进行设置,并且目标内存地址信息中的长度位可以占用传统的内存地址信息中的空闲地址位或者可以占用扩展位以及传统的内存地址信息中的空闲地址位,使得在丰富了长度位的配置方式的同时,可以实现对内存地址信息的有效利用。
在第二种方式中,假设已知目标内存地址信息中,地址位中的目标地址为p(为了和目标地址p1区分,后文称为已知地址p),该已知地址p为:0x************,类型为char*,长度位中携带的长度为20;新的目标内存地址信息中,地址位中的目标地址为p1。则基于已知目标内存地址信息生成新的目标内存地址信息的方式可以包括以下几种:
方式1、通过定义已知地址生成新的目标内存地址信息。
例如,定义已知地址生成新的目标内存地址信息的代码可以表示为:
char*p1=&p[0](代码7)。
根据代码7可知,将已知地址&p[0]的地址赋值给目标地址p1,此时目标地址p1的长度为char型变量的长度1,目标地址p1=0x1************。
又例如,定义已知地址生成新的目标内存地址信息的代码还可以表示为:
char*p1=p+1(代码8)。
根据代码8可知,目标地址p1相对于已知地址p增加了1,使得新的目标内存地址信息中的长度位的长度减小1,此时目标地址p1=0x13############。其中,0x############=0x************+1。
又例如,定义已知地址生成新的目标内存地址信息的代码还可以表示为:
long*p1=(long*)p(代码9)。
其中,long*表示长整数类型的指针。
根据代码9可知,目标地址p1是指向long型变量的地址,假设sizeof(long)为8,则目标地址p1的长度位所填充的长度应为8的整数倍,且不能超出已知地址p的长度位所携带的长度。因此目标地址p1的长度此处填充为16,此时目标地址p1=0x10************。
又例如,假设定义已知地址生成新的类型的目标地址的代码为:
int*p1=&p[0](代码10)。
其中,int*表示整数类型的指针。
根据代码10可知,&p[0]的长度为1,假设sizeof(int)为4,由于&p[0]的长度1小于sizeof(int),因此代码10错误。
方式2、计算机设备的中央处理器在运行时,生成新的目标内存地址信息。例如,计算机设备的中央处理器在运行时,用于生成新的目标内存地址信息的代码可以表示为:
ADD AX0,AX1,#1(代码11)。
代码11为一运算代码,AX0,AX1表示两个地址寄存器,代码具体表示为:AX0=AX1+1。假设已知地址AX1=0x14************,根据代码11可知,目标地址AX0相对于已知地址AX1增加了1,使得新的目标内存地址信息中的长度位的长度减小1,此时目标地址AX0=0x13############。其中,0x############=0x************+1。
本申请实施例中,可以通过定义已知地址以生成目标内存地址信息,或者可以通过计算机设备的中央处理器在运行时以生成目标内存地址信息。因此,生成内存地址信息的方式多样,使得生成内存地址信息的灵活性较高。
A2、计算机设备基于生成的目标内存地址信息,生成内存访问请求。其中,该内存访问请求可以为读请求也可以为写请求,该内存访问请求的类型根据具体的内存访问场景生成。在一种可选方式中,该内存访问请求还包括:访问长度,该访问长度为实际访问的内存的长度(也称期望访问的内存的长度)。例如,该内存访问请求为写请求,该访问长度为4字节。则该内存访问请求表示需要从目标地址指示的位置开始写入长度为4字节的数据。在另一种可选方式中,计算机设备可以基于预设规则获取访问长度。例如,对于某一种类型的内存访问请求,默认每次访问的访问长度为1字节。
第三种获取方式,接收内存访问请求。
可选地,计算机设备可以接收来自其他设备或应用程序(或者客户端)的内存访问请求。其他设备或应用程序生成内存访问请求的方式可以参考前述第一种获取方式或第二种获取方式。
本申请实施例中,内存访问请求中的目标内存地址信息包括地址位和长度位,地址位用于携带访问的内存的目标地址,长度位用于携带从该目标地址开始所允许访问的内存的长度,通过在内存地址信息中设置长度位和地址位,使得计算机设备可以根据内存的目标地址以及该内存的长度来进行内存的访问,从而丰富了内存地址信息的功能,实现了对内存地址信息的充分高效利用。
步骤402、计算机设备基于内存访问请求进行内存的访问。
在一种实现方式中,计算机设备可以直接采用内存访问请求进行内存的访问,该访问过程可以参考前述图1所述的访问过程。例如,该内存访问请求为写请求,该访问长度为4字节。则计算机设备基于该内存访问请求从目标地址指示的位置开始写入长度为4字节的数据;又例如,该内存访问请求为读请求,该访问长度为5字节。则计算机设备基于该内存访问请求从目标地址指示的位置开始读取长度为5字节的数据。
在另一种实现方式中,计算机设备可以对内存访问请求进行异常校验,在异常校验通过后,再基于内存访问请求进行内存的访问。在异常校验未通过后,禁止采用内存访问请求进行内存的访问。通过对内存访问请求进行异常校验,使得计算机设备可以在异常校验通过后再对内存进行访问,从而可以防止内存访问违例现象的发生,进而提高了对内存进行访问的安全性。
如前所述,该内存访问请求中还包括访问长度,或者计算机可以基于预设规则获取访问长度,则计算机设备可以基于访问长度确定目标内存长度,该目标内存长度为从设定地址到目标地址的长度与该访问长度之和。计算机设备可以基于目标内存长度进行异常校验。示例地,该异常校验过程包括:
B1、在目标内存长度小于或等于长度位携带的长度后,确定异常校验通过。
也即是,在确定目标内存长度小于或等于长度位携带的长度后,向内存发送内存访问请求。
实际实现时,内存访问请求中携带有多种类型的代码,计算机设备可以通过对内存访问请求中的目标内存地址信息所对应的代码进行校验来进行异常校验。目标内存地址信息所对应的代码可以有多种,本申请实施例以以下几种为例进行说明:
在第一种方式中,假设char类型的地址为p,目标内存地址信息中长度位携带的长度为20,访问内存所对应的代码为:
char c1=p[10](代码12)。
根据代码12可知,p[10]表示访问地址p所指向的地址中的第10个字节,即目标地址为地址p所指向的地址中的第10个字节,假设&p[0]为设定地址,即地址p所指向的地址中的第0个字节的地址,则从设定地址到目标地址的长度为10。假设该种类型的代码指示所访问的内存的长度为1个字节,即访问长度为1字节,则目标内存长度为10+1=11。由于目标内存长度11小于长度位携带的长度20,因此可以确定异常校验通过,计算机设备可以基于该内存访问请求进行内存的访问。
在第二种方式中,假设char类型的地址为p1,目标内存地址信息中长度位携带的长度为10,访问内存所对应的代码为:
char c1=*(p1+5)(代码13)。
根据代码13可知,*(p1+5)表示访问地址p1所指向的地址中的第5个字节,即目标地址为地址p1所指向的地址中的第5个字节,假设p1为设定地址,表示地址p1所指向的地址中的第0个字节的地址,则从设定地址到目标地址的长度为5。假设该种类型的代码指示所访问的内存的长度为1个字节,即访问长度为1字节,则目标内存长度为5+1=6。由于目标内存长度6小于长度位携带的长度10,因此可以确定异常校验通过,计算机设备可以基于该内存访问请求进行内存的访问。
在第三种方式中,假设目标内存地址信息中的长度位携带的长度为24,访问内存所对应的代码为:
LDR AX0,[AX1,#0x10](代码14)。
根据代码14可知,AXx表示地址寄存器,在Arch64中,如果不启用AOE,则为64位。[AX1,#0x10]表示从AX1所指向的地址的第16个字节开始访问,即目标地址为地址AX1所指向的地址中的第16个字节,假设设定地址为AX1所指向的地址中的第0个字节的地址,则从设定地址到目标地址的长度为16。访问长度为AX的长度(即8个字节),则目标内存长度为16+8=24,即24。由于目标内存长度24等于长度位携带的长度24,因此可以确定异常校验通过,计算机设备可以基于该内存访问请求进行内存的访问。
B2、在目标内存长度大于目标地址对应的长度位携带的长度后,确定异常校验未通过。
也即是,在确定目标内存长度大于目标地址对应的长度位携带的长度后,禁止向内存发送内存访问请求。
与B1同理地,计算机设备可以通过对内存访问请求中的目标内存地址信息所对应的代码进行校验来进行异常校验。本申请实施例以以下几种为例进行说明:
在第一种方式中,假设char类型的地址为p,目标内存地址信息中长度位携带的长度为20,访问内存所对应的代码为:
char c1=p[20](代码15)。
根据代码15可知,p[20]表示访问地址p所指向的地址中的第20个字节,即目标地址为地址p所指向的地址中的第20个字节,假设&p[0]为设定地址,即地址p所指向的地址中的第0个字节的地址,则从设定地址到目标地址的长度为20。假设该种类型的代码指示所访问的内存的长度为1个字节,即访问长度为1字节,则目标内存长度为20+1=21。由于目标内存长度21大于长度位携带的长度20,因此可以确定异常校验未通过,计算机设备禁止采用内存访问请求进行内存的访问。
在第二种方式中,假设char类型的地址为p1,目标内存地址信息中长度位携带的长度为10,访问内存所对应的代码为:
char c1=*(p1+11)(代码16)。
根据代码16可知,*(p1+11)表示访问地址p1所指向的地址中的第11个字节,即目标地址为地址p1所指向的地址中的第11个字节,假设p1为设定地址,即地址p1所指向的地址中的第0个字节的地址,则从设定地址到目标地址的长度为11。假设该种类型的代码指示所访问的长度为1个字节,即访问长度为1字节,则目标内存长度为11+1=12。由于目标内存长度12大于长度位携带的长度10,因此可以确定异常校验未通过,计算机设备禁止采用内存访问请求进行内存的访问。
在第三种方式中,假设目标内存地址信息中的长度位携带的长度为24,访问内存所对应的代码为:
LDR AX0,[AX1,#0x15](代码17)。
根据代码17可知,[AX1,#0x15]表示从AX1所指向的地址的第21个字节开始访问,即目标地址为地址AX1所指向的地址中的第21个字节,假设设定地址为AX1所指向的地址中的第0个字节的地址,则从设定地址到目标地址的长度为21,访问长度为AX的长度(即8个字节),则目标内存长度为21+8=29。由于目标内存长度29大于长度位携带的长度24,因此可以确定异常校验未通过,计算机设备禁止采用内存访问请求进行内存的访问。
在一种方式中,在确定目标内存长度大于长度位携带的长度后,计算机设备发出异常信息。示例的,该异常信息可以为报错信息或者报警信息。例如,在确定目标内存长度大于长度位携带的长度后,计算机设备发出报错信息。例如,报错信息可以表示为“ERROR!”。又例如,在确定目标内存长度大于长度位携带的长度后,计算机设备发出告警信息。例如,告警信息可以表示为“ALARM!”。
本申请实施例中,计算机设备可以基于内存的目标地址以及该内存的目标内存长度来进行内存的访问,与相关技术中相比,丰富了计算机设备对内存进行内存的访问的方法;另外,计算机设备可以根据内存访问请求中的目标内存长度以及内存访问请求中长度位携带的长度来进行异常校验,并在异常校验通过后,基于内存访问请求进行内存的访问,在异常校验未通过后,禁止采用内存访问请求进行内存的访问,从而提高了对内存进行访问的安全性。
前述内存访问方法可以由计算机设备的硬件执行,如CPU执行,也可以由计算机设备中的软件执行,还可以由计算机中的硬件结合软件执行。例如,前述步骤401和步骤402可以由CPU执行;也可以由预设的应用程序(如编译器)或插件执行;还可以一部分由CPU执行,另一部分由应用程序或插件执行。
本申请实施例提供的内存访问方法的步骤先后顺序可以进行适当调整,步骤也可以根据情况进行相应增减。任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化的方法,都应涵盖在本申请的保护范围之内。
综上所述,在本申请实施例提供的内存访问方法中,内存访问请求中的目标内存地址信息包括地址位和长度位,地址位用于携带访问的内存的目标地址,长度位用于携带从设定地址开始所允许目标内存的长度,通过在目标内存地址信息中设置地址位和长度位,使得计算机设备可以根据内存的目标地址以及该内存的长度来进行内存的访问,在丰富了内存地址信息的功能的同时,也丰富了计算机设备对内存进行内存的访问的方法,进而可以实现对内存地址信息的充分高效利用;并且地址位的长度和长度位的长度可以根据实际需求灵活设置,进而丰富了内存地址信息中地址位以及长度位的配置方式;另外,计算机设备可以根据内存访问请求中的目标内存长度以及内存访问请求中长度位携带的长度来进行异常校验,并在异常校验通过后,基于内存访问请求进行内存的访问,在异常校验未通过后,禁止采用内存访问请求进行内存的访问,从而可以防止内存访问违例现象的发生,进而提高了对内存进行访问的安全性。
传统的内存访问方法中,也提出了一种异常校验的方法,该异常校验方法包括:在内存中划分独立的空间作为影子内存空间,该影子内存空间与内存中其他存储空间具有映射关系,例如,该其他存储空间中的16个字节对应影子内存空间中的1个字节。当其他存储空间的某一空间A存储有数据,则该某一空间A在影子内存空间的对应空间B中会生成并存储一个标签值,该标签值用来指示该某一空间A。在计算机设备接收到内存访问请求后,该内存访问请求中的内存地址信息包括标签值位和地址位,计算机设备获取该地址位所携带的内存地址在影子内存空间的空间B中所对应的标签值,再比较该标签值与内存访问请求中的标签值位所携带的标签值是否一致,若一致则校验通过,若不一致,则校验未通过。但是,该异常校验方法需要额外设置影子内存空间,占用了内存的空间;并且,由于影子内存空间和其他存储空间的字节数并不是一一对应,因此影子内存空间的空间B中存储的标签值也无法有效反映空间A的实际存储情况,导致异常检测精度较低;另外,由于影子内存空间和其他存储空间的字节数并不是一一对应,导致访问不同存储空间的不同内存访问请求所携带的标签值可能相同,使得异常检测的可靠性较低。
而本申请实施例中,通过将内存访问请求中长度位携带的长度与目标内存长度进行比较来实现异常校验,无需额外设置影子内存空间,因此有效节约了内存的空间。并且,该长度位携带的长度与内存不存在映射关系,也即是,该长度位携带的长度的字节与内存中的字节是一一对应的,因此,异常检测精度较高,使得异常检测的可靠性较高。
图10是本申请实施例提供的一种内存地址分配方法的流程示意图。如图10所示,该方法包括:
步骤1001、计算机设备生成内存地址信息,该内存地址信息包括地址位和长度位,地址位用于携带内存的目标地址,长度位用于携带从设定地址开始所允许访问的内存的长度。
当计算机设备内或计算机设备外的内存地址的模块、程序或设备等需要对计算机设备的内存进行访问,可以向计算机设备发送地址申请,该地址申请用于请求分配内存地址信息。计算机设备在接收到地址申请后,可以为对应的模块、程序或设备等分配内存地址信息。
该内存地址信息的结构可以参考前述步骤401中内存地址信息的结构。该内存地址信息的获取方式可以参考前述步骤401中的A1。本申请实施例对此不做赘述。
步骤1002、计算机设备分配内存地址信息。
计算机设备向发送地址申请的模块、程序或设备发送该地址信息,以实现内存地址信息的分配。
本申请实施例中,内存地址信息包括地址位和长度位,地址位用于携带内存的目标地址,长度位用于携带从设定地址开始所允许访问的内存的长度,通过在内存地址信息中设置地址位和长度位,使得内存地址信息中的长度位可以占用传统的内存地址信息中的空闲地址位或者可以占用扩展位以及传统的内存地址信息中的空闲地址位,进而丰富了内存地址信息的功能,实现了对内存地址信息的充分高效利用。
需要说明的是,前述实施例中的内存访问方法和内存地址分配方法均以支持Arch64的计算机设备为例进行说明,实际实现时,该内存访问方法和内存地址分配方法还可以应用于支持小于64位***或大于64位***的计算机设备中,本申请实施例对此不做限定。
图11是本申请实施例提供的一种内存访问装置的结构示意图,该内存访问装置可以用于图1中的计算机设备,该内存访问装置110包括:
获取模块1101,用于获取内存访问请求,该内存访问请求包括目标内存地址信息,该目标内存地址信息包括地址位和长度位。其中,地址位用于携带访问的内存的目标地址,长度位用于携带从设定地址开始所允许访问的内存的长度。
访问模块1102,用于基于内存访问请求进行内存的访问。
可选地,地址位的长度为48位,长度位的长度小于或等于16位;或者,地址位的长度为第一长度,长度位的长度为第二长度,第一长度小于48位,第一长度和第二长度之和小于或等于64位;或者,地址位的长度为48位,长度位的长度大于16位。
可选地,访问模块1102,还用于在确定目标内存长度小于或等于长度位携带的长度后,向内存发送内存访问请求,该目标内存长度为从设定地址到目标地址的长度与访问长度之和。
可选地,访问模块1102,还用于在确定目标内存长度大于长度位携带的长度后,禁止向内存发送内存访问请求。
可选地,访问模块1102,还用于在确定目标内存长度大于长度位携带的长度后,发出异常信息。
可选地,获取模块1101,还用于基于接收的地址设置指令生成内存访问请求,地址设置指令包括目标内存地址信息。或者,获取模块1101,还用于基于生成的目标内存地址信息,生成内存访问请求。或者,获取模块1101,还用于接收内存访问请求。
综上所述,在本申请实施例提供的内存访问装置中,通过在目标内存地址信息中设置地址位和长度位,使得访问模块可以根据内存的目标地址以及该内存的长度来进行内存的访问,在丰富了内存地址信息的功能的同时,也丰富了计算机设备对内存进行内存的访问的方法,进而可以实现对内存地址信息的充分高效利用;并且,地址位的长度和长度位的长度可以根据实际需求灵活设置,进而丰富了内存地址信息中地址位以及长度位的配置方式;另外,计算机设备可以根据内存访问请求中的目标内存长度以及内存访问请求中长度位携带的长度来进行异常校验,并在异常校验通过后,基于内存访问请求进行内存的访问,在异常校验未通过后,禁止采用内存访问请求进行内存的访问,从而可以防止内存访问违例现象的发生,进而提高了对内存进行访问的安全性。
图12是本申请实施例提供的一种内存地址分配装置的结构示意图,该内存地址分配装置可以用于图1中的计算机设备,该内存地址分配装置120包括:
生成模块1201,用于生成内存地址信息,该内存地址信息包括地址位和长度位。其中,地址位用于携带内存的目标地址,长度位用于携带从设定地址开始所允许访问的内存的长度。
分配模块1202,用于分配内存地址信息。
综上所述,在本申请实施例提供的地址分配装置中,通过在内存地址信息中设置地址位和长度位,使得内存地址信息中的长度位可以占用传统的内存地址信息中的空闲地址位或者可以占用扩展位以及传统的内存地址信息中的空闲地址位,进而丰富了内存地址信息的功能,实现了对内存地址信息的充分高效利用。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
图13是本申请实施例提供的一种计算机设备的框图。如图13所示,计算机设备130包括:处理器1301和存储器1302。
存储器1302,用于存储计算机程序,计算机程序包括程序指令;
处理器1301,用于调用计算机程序,实现如图4所示的内存访问方法或如图10所示的内存地址分配方法。
可选地,该计算机设备130还包括通信总线1303和通信接口1304。
其中,处理器1301包括一个或者一个以上处理核心,处理器1301通过运行计算机程序,执行各种功能应用以及数据处理。
存储器1302可用于存储计算机程序。可选地,存储器可存储操作***和至少一个功能所需的应用程序单元。操作***可以是实时操作***(Real Time eXecutive,RTX)、LINUX、UNIX、WINDOWS或OSX之类的操作***。
通信接口1304可以为多个,通信接口1304用于与其它设备进行通信。
存储器1302与通信接口1304分别通过通信总线1303与处理器1301连接。
本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序包含至少一段代码,该至少一段代码可由计算机设备执行,以控制所述计算机设备执行如图4所示的内存访问方法或如图10所示的内存地址分配方法。
在本申请实施例中,术语“第一”、“第二”和“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。
本申请中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。“A参考B”,指的是A与B相同,或者A在B的基础上进行简单变形。
以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的构思和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (16)
1.一种内存访问方法,其特征在于,用于计算机设备,所述方法包括:
获取内存访问请求,所述内存访问请求包括:目标内存地址信息,所述目标内存地址信息包括:地址位和长度位,所述地址位用于携带访问的内存的目标地址,所述长度位用于携带从设定地址开始所允许访问的内存的长度;
基于所述内存访问请求进行内存的访问。
2.根据权利要求1所述的方法,其特征在于,所述地址位的长度为48位,所述长度位的长度小于或等于16位;
或者,所述地址位的长度为第一长度,所述长度位的长度为第二长度,所述第一长度小于48位,所述第一长度和所述第二长度之和小于或等于64位;
或者,所述地址位的长度为48位,所述长度位的长度大于16位。
3.根据权利要求1或2所述的方法,其特征在于,所述基于所述内存访问请求进行内存的访问,包括:
在确定目标内存长度小于或等于所述长度位携带的长度后,向所述内存发送所述内存访问请求,所述目标内存长度为从所述设定地址到所述目标地址的长度与访问长度之和。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
在确定所述目标内存长度大于所述长度位携带的长度后,禁止向所述内存发送所述内存访问请求。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
在确定所述目标内存长度大于所述长度位携带的长度后,发出异常信息。
6.根据权利要求1至5任一所述的方法,其特征在于,所述获取内存访问请求,包括:
基于接收的地址设置指令生成所述内存访问请求,所述地址设置指令包括所述目标内存地址信息;
或者,基于生成的所述目标内存地址信息,生成所述内存访问请求;
或者,接收所述内存访问请求。
7.一种内存地址分配方法,其特征在于,用于计算机设备,所述方法包括:
生成内存地址信息,所述内存地址信息包括:地址位和长度位,所述地址位用于携带内存的目标地址,所述长度位用于携带从设定地址开始所允许访问的内存的长度;
分配所述内存地址信息。
8.一种内存访问装置,其特征在于,用于计算机设备,所述装置包括:
获取模块,用于获取内存访问请求,所述内存访问请求包括:目标内存地址信息,所述目标内存地址信息包括:地址位和长度位,所述地址位用于携带访问的内存的目标地址,所述长度位用于携带从设定地址开始所允许访问的内存的长度;
访问模块,用于基于所述内存访问请求进行内存的访问。
9.根据权利要求8所述的装置,其特征在于,所述地址位的长度为48位,所述长度位的长度小于或等于16位;
或者,所述地址位的长度为第一长度,所述长度位的长度为第二长度,所述第一长度小于48位,所述第一长度和所述第二长度之和小于或等于64位;
或者,所述地址位的长度为48位,所述长度位的长度大于16位。
10.根据权利要求8或9所述的装置,其特征在于,所述访问模块,还用于在确定目标内存长度小于或等于所述长度位携带的长度后,向所述内存发送所述内存访问请求,所述目标内存长度为从所述设定地址到所述目标地址的长度与访问长度之和。
11.根据权利要求10所述的装置,其特征在于,所述访问模块,还用于在确定所述目标内存长度大于所述长度位携带的长度后,禁止向所述内存发送所述内存访问请求。
12.根据权利要求11所述的装置,其特征在于,所述访问模块,还用于在确定所述目标内存长度大于所述长度位携带的长度后,发出异常信息。
13.根据权利要求8至12任一所述的装置,其特征在于,
所述获取模块,还用于基于接收的地址设置指令生成所述内存访问请求,所述地址设置指令包括所述目标内存地址信息;
或者,所述获取模块,还用于基于生成的所述目标内存地址信息,生成所述内存访问请求;
或者,所述获取模块,还用于接收所述内存访问请求。
14.一种内存地址分配装置,其特征在于,用于计算机设备,所述装置包括:
生成模块,用于生成内存地址信息,所述内存地址信息包括:地址位和长度位,所述地址位用于携带内存的目标地址,所述长度位用于携带从设定地址开始所允许访问的内存的长度;
分配模块,用于分配所述内存地址信息。
15.一种计算机设备,其特征在于,包括:处理器和存储器;
所述存储器,用于存储计算机程序,所述计算机程序包括程序指令;
所述处理器,用于调用所述计算机程序,实现如权利要求1至6任一所述的内存访问方法,或者实现如权利要求7所述的内存地址分配方法。
16.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序包含至少一段代码,所述至少一段代码可由计算机设备执行,以控制所述计算机设备执行如权利要求1至6任一所述的内存访问方法或如权利要求7所述的内存地址分配方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011615532.8A CN114691532A (zh) | 2020-12-30 | 2020-12-30 | 内存访问方法、内存地址分配方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011615532.8A CN114691532A (zh) | 2020-12-30 | 2020-12-30 | 内存访问方法、内存地址分配方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114691532A true CN114691532A (zh) | 2022-07-01 |
Family
ID=82132175
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011615532.8A Pending CN114691532A (zh) | 2020-12-30 | 2020-12-30 | 内存访问方法、内存地址分配方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114691532A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116303142A (zh) * | 2023-03-21 | 2023-06-23 | 摩尔线程智能科技(北京)有限责任公司 | 内存访问控制方法、安全控制器、内存访问控制装置 |
CN116501511A (zh) * | 2023-06-29 | 2023-07-28 | 恒生电子股份有限公司 | 内存尺寸处理方法、装置、电子设备及存储介质 |
-
2020
- 2020-12-30 CN CN202011615532.8A patent/CN114691532A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116303142A (zh) * | 2023-03-21 | 2023-06-23 | 摩尔线程智能科技(北京)有限责任公司 | 内存访问控制方法、安全控制器、内存访问控制装置 |
CN116303142B (zh) * | 2023-03-21 | 2024-03-19 | 摩尔线程智能科技(北京)有限责任公司 | 内存访问控制方法、安全控制器、内存访问控制装置 |
CN116501511A (zh) * | 2023-06-29 | 2023-07-28 | 恒生电子股份有限公司 | 内存尺寸处理方法、装置、电子设备及存储介质 |
CN116501511B (zh) * | 2023-06-29 | 2023-09-15 | 恒生电子股份有限公司 | 内存尺寸处理方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11163444B2 (en) | Configure storage class memory command | |
US11237728B2 (en) | Method for accessing extended memory, device, and system | |
US8453015B2 (en) | Memory allocation for crash dump | |
US6321314B1 (en) | Method and apparatus for restricting memory access | |
US9037785B2 (en) | Store storage class memory information command | |
EP2601586B1 (en) | Using extended asynchronous data mover indirect data address words | |
US7523260B2 (en) | Propagating data using mirrored lock caches | |
EP2718807B1 (en) | Chaining move specification blocks | |
EP2601580B1 (en) | Deconfigure storage class memory command | |
US10671548B2 (en) | Memory initialization detection system | |
CN114691532A (zh) | 内存访问方法、内存地址分配方法及装置 | |
CN113672237B (zh) | 防内存越界的程序编译方法及装置 | |
CN113485716B (zh) | 防内存越界的程序编译方法及装置 | |
US8910004B2 (en) | Information processing apparatus, and method of controlling information processing apparatus | |
US6324635B1 (en) | Method and apparatus for address paging emulation | |
US7552305B2 (en) | Dynamic and real-time management of memory | |
EP3660712B1 (en) | Peripheral based memory safety scheme for multi-core platforms | |
CN117539802B (zh) | 一种缓存操作方法、***以及相关装置 | |
US11086806B2 (en) | Memory access system to access abstracted memory | |
US20230205691A1 (en) | Flush packet sending method and apparatus | |
US20220138131A1 (en) | Input/output device operational modes for a system with memory pools | |
CN117971716A (zh) | 缓存管理方法、设备、装置和存储介质 |
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 |