CN113986775A - 一种risc-v cpu验证中页表项生成方法、系统及装置 - Google Patents
一种risc-v cpu验证中页表项生成方法、系统及装置 Download PDFInfo
- Publication number
- CN113986775A CN113986775A CN202111294855.6A CN202111294855A CN113986775A CN 113986775 A CN113986775 A CN 113986775A CN 202111294855 A CN202111294855 A CN 202111294855A CN 113986775 A CN113986775 A CN 113986775A
- Authority
- CN
- China
- Prior art keywords
- page table
- address
- bit
- table entry
- page
- 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.)
- Granted
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/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0646—Configuration or reconfiguration
-
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
- G06F12/0882—Page mode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- 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
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明提供了一种RISC‑V CPU验证中页表项生成方法、系统及装置,该系统具有基于RISC‑V架构的多核CPU、内存模块,还包括:参数设置模块,用于设置页表项属性参数a0,虚拟地址参数a1、物理地址参数a2;以及基于页表建立模块更新所述a0、a1、a2中的属性值;锁模块,用于在内存中设置锁,并执行锁的获取与释放;判断模块,用于判断a1中地址高字段的有效性,以及针对建立页表类型、待建立页表的地址的有效性、待建页表大小进行判断;页表建立模块,基于判断模块的判断结果,以及参数设置模块的各参数中属性值,建立对应的映射表或页节点。本方案在完成各种页表项建立时,可指定页表项属性和VA/PA映射,大大简化了页表项建立过程,方便验证测试。
Description
技术领域
本发明涉及多核计算机数据验证领域,特别是涉及一种针对RISC-V处理器的页表项生成方法及系统。
背景技术
页表是一种特殊的数据结构,放在系统空间的页表区,存放逻辑页与物理页帧的对应关系。在目前高性能处理器的设计中,存储问题,以及与存出问题紧密关联的检索问题,一直是决定处理器性能的重要方面。在现有技术中,数据从主存储器读取到处理器的流水线中,往往需要上百个周期的时间,而在并行处理需求不断增长的时候,现有技术基本采用虚拟地址方式进行访问,这就使得物理地址和虚拟地址的映射存储和页表的检索成为的必然的需要。
在常规处理器架构中,一次简单的虚拟地址到物理地址的翻译,至少需要4次的存储访问,需要的时钟周期将随着虚拟地址的位数呈现指数级的增长。
目前虽然常规采用了TLB方式来降低存储操作的损耗,但是,当TLB不命中时,常规页表的结构在数据的翻译上,仍然将消耗很长的时间,尤其在现有的数据集越来越庞大的背景下,常规的页表生成方式已经不能很好满足日常的数据读取和地址翻译的需要。
发明内容
针对现有技术的不足,本发明提出一种RISC-V CPU验证中页表项生成方法及系统,能够灵活、快速生成页表项,且访问灵活。具体而言,本发明提供了以下的技术方案:
首先,本发明提供了一种RISC-V CPU验证中页表项生成方法,该方法包括:
S1、设置页表项属性参数a0,虚拟地址参数a1、物理地址参数a2;
S2、跳转至建立页表项的指令,并保存返回地址;
S3、准备建立页表项的CPU获得锁;
S4、判断虚拟地址参数a1的地址高字段是否有效,若有效,则执行S5,否则报错;
S5、基于所述a0中的MODE位,判断准备建立的页表类型;
S6、基于内存的物理地址基址,加上所述a1中的对应偏移量,得到准备建立的页表项所在地址;
S7、读取准备建立的页表项所在地址的数据,并判断页表项所在地址的数据有效性;若无效,则基于页表项所在地址的数据中属性值判断准备建立的页表项的大小;若有效,则建立对应大小的页节点,完成页表项建立;
S8、当S7中判断出准备建立的页表项的大小时,建立对应页表项的大小对应的地址,并判断该地址是否有效,若有效,建立对应大小的页表项;否则获取下一个表的基地址,生成新页表项所在地址的数据,并建立能映射对应页表项的大小的表,再判断建立的是页还是表,并执行S9;
S9、当所述S8中建立的是页时,更新新页表项所在地址的数据中的部分属性值,并返回S7;当所述S8中建立的是表时,获取对应大小的物理地址,作为页表项所在地址,并返回S7。
优选的,所述a0至少包括:表示页表类型的MODE位,表示是否可执行的X位,表示是否可写入的W位,表示是否可读取的R位,表示是否有效的V位,表示Dirty位的D位,表示Accessed的A位,A位表示自上次清除A位以来已读取、写入或获取该虚拟页;表示是否全局量的G位,表示是否用户位的U位,表示分别生成512G、1G、2M、4K的页表控制位,satp中的PPN字段。
优选的,所述S3中,所述锁通过以下方式获得:
准备建页表的CPU申请,通过AMO指令修改内存里的固定地址来获得,更为进一步的,CPU要先读取这一地址,如果返回值为例如0,则执行AMO操作,如果不是0,则表示系统中的其他CPU在修改该共享页表,则等待一段时间,再次读取这一地址,直到读取该地址为0,执行AMO操作;所述固定地址为预设的共享内存地址,用于存储标识是否有CPU正在修改页表项的值;
当准备建页表的CPU完成页表项生成后,释放所述锁。
优选的,所述S7中,页表项所在地址的数据包括:表示是否可执行的X位,表示是否可写入的W位,表示是否可读取的R位,表示是否有效的V位,satp中的PPN字段。
优选的,所述S9中,更新新页表项所在地址的数据中的部分属性值,进一步包括:将新页表项所在地址的数据中的X位、R位、W位与原页表项所在地址的数据中的X位、R位、W位按位进行或运算,并将结果写入新页表项所在地址的数据中的X位、R位、W位,以实现更新。
优选的,所述S8中,获取下一个表的基地址进一步包括:
获取下一个表的基地址,并生成PPN位、D位、A位、G位、U位作为数据,并将基地址加4K,保存至该表的基地址中。
其次,本发明还提供了一种RISC-V CPU验证中页表项生成系统,该系统具有基于RISC-V架构的多核CPU、内存模块,所述系统还包括:
参数设置模块,用于设置页表项属性参数a0,虚拟地址参数a1、物理地址参数a2;以及基于页表建立模块更新所述a0、a1、a2中的属性值;所述a1中,存储有页表项的虚拟地址偏移量;
锁模块,用于在内存中设置锁,并执行锁的获取与释放;
判断模块,用于判断a1中地址高字段的有效性,以及针对建立页表类型、待建立页表的地址的有效性、待建页表大小进行判断;
页表建立模块,基于判断模块的判断结果,以及参数设置模块的各参数中属性值,建立对应的映射表或页节点。
优选的,所述锁模块在所述内存中预设一固定地址作为共享内存地址,并存储标识是否有CPU正在修改页表项的值,以形成锁;
仅准备建立共享页表的CPU有权限访问所述共享内存地址,并执行该共享内存地址的值的读、写。
优选的,在内存中设置固定位置,存储各表的基地址,并在生成页表项属性参数a0的各个属性值后,将该基地址加4K,保存回所述固定位置。
再次,本发明还提供了一种RISC-V CPU验证中页表项生成装置,该装置至少包括基于RISC-V架构的多核CPU,及可与多核CPU进行数据交互的存储器,所述存储器中存储有计算机指令,以在所述多核CPU调用该计算机指令时,执行如上所述的RISC-V CPU验证中页表项生成方法。
现有技术中,每次建一个页表项时,都需要手动计算其地址等,再一个一个的建立。本方案通过系统化的设计,实现在完成各种页表项的建立时,可以通过参数来指定页表项的属性和VA到PA映射,可以被多次调用来完成各种结构的页表,大大简化了页表项的建立过程,抽象出页表项建立的基本要素,方便验证程序里PTW(Page Table Walk)测试的各种场景。
附图说明
图1为本发明实施例的方法流程图;
图2为本发明实施例的页表属性参数a0的结构示意图;
图3为本发明实施例的虚拟地址参数a1的结构示意图;
图4为本发明实施例的物理地址参数a2的结构示意图。
具体实施方式
下面将结合本发明实施例中的图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有付出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
结合图1及图2,在一个具体的实施例中,本发明提供的页表项生成方法可以通过如下优选的实施方式来实现:
步骤1,设置页表项属性参数a0,虚拟地址参数a1和物理地址参数a2。
在一个优选的实施方式中,结合图2所示,页表属性参数的设置,该结构中,存储位0至63均作为示例性的,不作为对本发明a0具体位置设置方式的限定来理解,具体地,如果各参数设置于存储位为0至63时,可以采用如图2的结构,其中,在参数a0中:a0[63:60]为MODE位,当MODE位为0时,表示空,为8时,表示Sv39,为9时,表示Sv48;a0[55]为D位,表示Dirty位,Dirty位一般为0时,表示这个页映射的虚拟地址段不可写,CPU接下来报异常或者修改D位的值,如果为1时,表示该虚拟地址段可写;a0[54]为A位,表示Accessed,为接收标志位,表示Accessed的A位,表示自上次清除A位以来已读取、写入或获取该虚拟页;a0[53]为G位,表示Global(即全局)标志位;a0[52]为U位,表示User(即用户)标志位;a0[51]为X位,表示eXecutable(即可执行)标志位;a0[50]为W位,表示Writable(即可写入)标志位;a0[49]为R位,表示Readable(即可读)标志位;a0[48]为V位,表示Valid(即有效)标志位;a0[47]为生成512G页表控制位,仅用于Sv48;a0[46]为生成1G页表控制位;a0[45]为生成2M页表控制位;a0[44]为生成4K页表控制位;a0[43:0]为satp(监管者地址转换和保护:Supervisor Address Translation and Protection)里的PPN(即物理页号)字段。参数a1表示PA,即Physical Address,物理地址。参数a2表示VA,即Virtual Address,虚拟地址。
在该优选的实施方式中,设置参数a0、a1、a2主要是为便于上下层程序信息的交互,其设置的目的在于明确告知具体生成的是什么样的页表。
此处,本领域技术人员应当知晓,虽然此处仅给出了一种优选的a0、a1、a2的实施方式,但是,对于为实现上述的便于不同层级程序的信息交互以明确生成页表的样式的目的,可以对a0、a1、a2的具体结构进行适当调整,或者针对其中的字段设置进行调整,以便于程序执行中对页表生成各个环节的监控和信息反馈,因此,上述的具体实施方式不应作为本申请唯一技术方案来限定,其他的在本申请方法基础上做的常规的改进,均应当视为可替代的实施方案,此处不再一一列举。
步骤2,通过JAL指令或者JALR指令跳转到建页表项代码段,保存返回地址;
在该步骤中,作为一个更为优选的实施方式,可以设置返回地址,从而实现在任何代码段里执行建立页表,且保证页表建立后能返回调用建页表的位置继续执行,这样就大大降低了页表项返回和搜索的时间。
步骤3,获得锁,来保证共享页表的多核系统中,任何时刻只有一个处理器在管理页表;本步骤中,通过设置锁,并且在多个处理器进行抢锁,从而保证多个核共享一个页表时,多个处理器能够更加公平地建立所需的页表项。
该步骤中,获得的锁是由多核系统里准备建共享页表的CPU申请的,在该CPU申请锁时,通过AMO指令来修改共享内存里的固定地址来获得锁。获得锁后,该CPU就开始执行页表项生成的程序,建立新的表或者项,当修改完成后,释放锁。
通过锁的获得与释放方式,可以保证只有一个处理器在管理页表。每个准备建共享页表项的CPU在修改页表项前,先读“共享内存里的固定地址”,如果其值表明有其它CPU正在修改共享页表项,就等待一段时间,然后再读“共享内存里的固定地址”,直到其值表明没有CPU在修改页表项,然后执行AMO指令修改这个“固定地址”,然后CPU再读这个固定地址,如果其值表明是当前CPU刚才写的值,表明获得锁了;然后执行修改页表项,修改完成后,再向“固定地址”写保留的值。在一个更为优选的实施方式中,多核系统里,可以让所有CPU都遵循以下的假设:每个CPU里向“固定地址”写不同的值,所有CPU都认为某个特定的值为保留值,代表没有CPU获得锁。从而可以建立锁的机制,协调CPU的建表等工作。
步骤4,根据页表类型a0.MODE,判断a1中虚拟地址高字段是否有效,如果无效,则报错;
步骤5,根据页表类型a0.MODE,跳转到不同起始步骤,在本实施例中,以Sv48、Sv39、Sv32为例:如果是Sv48,则跳转到步骤6-Sv48;如果是Sv39,则跳转到步骤6-Sv39;如果是Sv32,则跳转到步骤6-Sv32;
步骤6-Sv48,将根页表项存储的物理地址基址a0.PPN,加上虚拟地址参数a1中VPN[3]对应的偏移(a1.VPN[3]*8),得到页表项所在的物理地址,跳转到步骤7;在更为优选的实施方式中,在RISC-V系统里,Sv48页表项的大小是8Byte;
步骤6-Sv39,将根页表项存储的物理地址基址a0.PPN,加上虚拟地址参数a1中VPN[2]对应的偏移(a1.VPN[2]*8),得到页表项所在的物理地址,跳转到步骤14;在更为优选的实施方式中,在RISC-V系统里,Sv39页表项的大小是8Byte;
步骤6-Sv32,将根页表项存储的物理地址基址a0.PPN,加上虚拟地址参数a1中VPN[1]对应的偏移(a1.VPN[2]*4),得到页表项所在的物理地址,跳转到步骤21;在更为优选的实施方式中,在RISC-V系统里,Sv32页表项的大小是4Byte。
步骤7,读取页表项所在地址的数据(记作PTE0),根据PTE0.V域,判断当前PTE0有效性;此处,页表项所在地址的数据应当是4Byte或者8Byte的,其中包含了PPN、D、A、G、U、X、W、R、V的各个标志位的数据,从而可以进行后续的各类数据判断;
步骤8,如果步骤7中页表项无效,即V标志位表示无效,例如该V标志位可以为0以表示无效(即PTE0.V=0),则根据a0.512G判断所建页表是否为512G,如果不是,则跳转到步骤10,否则执行步骤9;
步骤9,根据物理地址参数a2获得的PPN,从a0里获得PTE里属性的参数,生成PTE的值,建立512G大小的页节点,并返回步骤31;
步骤10,从内存中固定位置(此处举例记作PA_new)里取出下一个表的基地址,生成PPN和页表项参数里属性(属性包括例如D,A,G,和U)作为数据,建立能映射512G地址空间的表,将基地址加4K,保存到PA_new里,跳转到步骤13;
更进一步的,上述的固定位置为页表建立程序私有的数据段,在测试程序里物理地址是分区分段的:有的地址段是保存指令的,只能从这里取值和读;有的地址段是用于读写指令访问的,可以任意修改;有的地址段是用于堆栈的,保存程序段切换时的context(现场);有的地址段是保存全局数据的,这个PA_new就位于这个区域,只可以被特定程序写,该PA_new区域一般设置为测试程序里对物理地址划分的固定区域,该区域存储的是一个地址,这个地址指向下一个4K表在内存里的位置,类似FIFO里的write pointer;
步骤11,如果步骤7中页表项有效,即V标志位表示有效,例如该V标志位可以为1以表示有效(即PTE0.V=1),则判断页表项是页还是表,如果是表,则跳转到步骤13,否则执行步骤12;
步骤12,把页表项属性参数a0里对应的属性(X,R,W)“按位或”上步骤7中读到的页表项属性(X,R,W),写回到内存里,并返回;
步骤13,根据PTE0.PPN和虚拟地址参数a1里的VPN[2]获取1G页的PTE的物理地址;
步骤14,读取1G页表项所在地址的数据,例如可以记作PTE1,根据PTE1.V域,判断PTE1的有效性;此处,页表项所在地址的数据为4Byte或8Byte,其中包含了PPN、D、A、G、U、X、W、R、V等数据项;
步骤15,如果步骤14中页表项无效,例如PTE1.V=0,则根据a0.1G判断所建页表是否为1G,如果不是,则跳转到步骤17,否则执行步骤16;
步骤16,根据物理地址参数a2获得的PPN,从a0里获得PTE里属性的参数,生成PTE的值,建立1G大小的页节点,并返回步骤31;
步骤17,从PA_new里取出下一个表的基地址,生成PPN和页表项参数里属性(属性包括例如D,A,G,和U)作为数据,建立能映射1G地址大小的表,将基地址加4K,保存到PA_new里,跳转到步骤20;
步骤18,如果步骤14中页表项有效(PTE1.V=1),则判断页表项是页还是表,如果是表,则跳转到步骤20,否则执行步骤19;
步骤19,把页表属性参数里a0对应的属性(X,R,W)“按位或”上步骤14中读到的页表项属性(X,R,W),写回到内存里,并返回。
步骤20,根据PTE1.PPN和虚拟地址参数a1里的VPN[1]获取2M页的PTE的物理地址;
步骤21,读取2M页表所在地址的数据(记作PTE2),根据PTE2.V域判断当前PTE2的有效性。此处,页表项所在地址的数据为4Byte或8Byte,其中包含了PPN、D、A、G、U、X、W、R、V等数据项;
步骤22,如果步骤21中页表项无效(PTE2.V=0),则根据a0.2M判断所建页表是否为2M,如果不是,则跳转到步骤24,否则执行步骤23;
步骤23,根据物理地址参数a2获得PPN,从a0里获得PTE里属性的参数,生成PTE的值,建立2M大小的页节点,并返回;
步骤24,从PA_new里取出下一个表的基地址,生成PPN,和页表项参数里属性(D,A,G,和U)作为数据,建立能映射2M地址大小的表,将基地址加4K,保存到PA_new里,跳转到步骤27;
步骤25,如果步骤21中页表项有效(PTE2.V=1),则判断页表项是页还是表,如果是表,则跳转到步骤27,否则执行步骤26;
步骤26,把页表属性参数里对应的属性(X,R,W)“按位或”上步骤21中读到的页表项属性(X,R,W),写回到内存里,并返回。
步骤27,根据PTE2.PPN和虚拟地址参数a1里的VPN[0]获取4K页的PTE的物理地址;
步骤28,读取2M页表所在的数据(记作PTE3),根据PTE3.V域判断当前PTE3的有效性;
步骤29,如果步骤28中页表项无效(PTE3.V=0),则根据a0.4K判断所建页表是否为4K,如果不是,则报错,否则执行步骤30;
步骤30,根据物理地址参数a2获得PPN,从a1里获得PTE里属性的参数,生成PTE的值,建立4K大小的页节点,并返回步骤31。
步骤31,释放锁,通过JR指令返回到“步骤2”里保存的返回地址所在的位置。
在一个更为优选的实施方式中,在具体执行时,步骤5、6中的三种页表项中,往往会存在相同或者相似的建表过程,因此,可以将相似的建表过程进行合并,统一调用共有部分,这样就可以更好地降低代码量,提高程序运行效率。
在上述方法中,步骤10、17、24维护内存中的一个地址,也即在上面步骤中提及的PA_new的位置,这一位置是内存里的一个地址,这个位置的数据被程序保存作为新建下一个页表的物理地址,页表是一个树状结构的,在只有第一个表时,这个地址里被初始化程序写了可以用于建第二个表的基地址;在建完第二个表后,程序把第三个表的基地址写到这个位置;以此类推,通过这样的设置,可以通过仅维护一个地址,保证多次调用建页表程序后,各个页表不会发生冲突。
对于上述维护的内存中的这一地址(PA_new位置),在更为优选的实审方式中,可以设置这一地址只能被页表项生成程序使用,其他程序不能写这一地址,从而更进一步保证地址维护的便利和唯一性,避免多次建页表的冲突。
在上述方法的步骤12、19、26中,本发明可以更新页表项的权限,这样就可以保证多次对同一个虚拟地址建的页表不会影响之前访问时的权限。此处,更新页表项的权限,就是指更新页表项中的部分属性值,即页表项里的X、W、R值。整个虚拟地址空间里,在初始化完成后,只有部分区域可以被执行,在验证过程中,可以通过使用本方案中记载的方法来主动或者被动建立页表项来扩大某些地址的执行、写、读权限;可以添加某些区域的可执行、可写、可读的权限,即通过更新这些对应的页表项里的X、W、R属性值,从而实现对特定区域的权限,这样,就可以保证对同一虚拟地址建的页表不会影响之前访问时的权限。
此外,在步骤4、29中,实质上是建立了参数检查机制,这一机制将及时终止测试程序,从而为后续的调试提供了便利。
在另一个具体的实施例中,本发明的方案还可以通过一种RISC-V CPU验证中页表项生成系统的方式来实现,该系统具有基于RISC-V架构的多核CPU、内存模块,该系统可以通过如下方式进行设计:
参数设置模块,用于设置页表项属性参数a0,虚拟地址参数a1、物理地址参数a2;以及基于页表建立模块更新所述a0、a1、a2中的属性值;所述a1中,存储有页表项的虚拟地址偏移量;
锁模块,用于在内存中设置锁,并执行锁的获取与释放;
判断模块,用于判断a1中地址高字段的有效性,以及针对建立页表类型、待建立页表的地址的有效性、待建页表大小进行判断;
页表建立模块,基于判断模块的判断结果,以及参数设置模块的各参数中属性值,建立对应的映射表或页节点。
如前一实施例中所述,所述a0至少包括:表示页表类型的MODE位,表示是否可执行的X位,表示是否可写入的W位,表示是否可读取的R位,表示是否有效的V位,表示Dirty位的D位,表示是否接收的A位,表示是否全局量的G位,表示是否用户位的U位,表示分别生成512G、1G、2M、4K的页表控制位,satp中的PPN字段。
优选的,所述锁模块在所述内存中预设一固定地址作为共享内存地址,并存储标识是否有CPU正在修改页表项的值,以形成锁;
仅准备建立共享页表的CPU有权限访问所述共享内存地址,并执行该共享内存地址的值的读、写。
优选的,在内存中设置固定位置,存储各表的基地址,并在生成页表项属性参数a0的各个属性值后,将该基地址加4K,保存回所述固定位置。
此外,在另一个实施例中,本发明的方案还可以通过一种电子装置的方式来实现,该装置至少包括基于RISC-V架构的多核CPU,及可与多核CPU进行数据交互的存储器,所述存储器中存储有计算机指令,以在所述多核CPU调用该计算机指令时,执行如上所述的RISC-V CPU验证中页表项生成方法,或者,该电子装置中,可以搭载如上所述的RISC-V CPU验证中页表项生成系统。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围。
Claims (10)
1.一种RISC-V CPU验证中页表项生成方法,其特征在于,所述方法包括:
S1、设置页表项属性参数a0,虚拟地址参数a1、物理地址参数a2;
S2、跳转至建立页表项的指令,并保存返回地址;
S3、准备建立页表项的CPU获得锁;
S4、判断虚拟地址参数a1的地址高字段是否有效,若有效,则执行S5,否则报错;
S5、基于所述a0中的MODE位,判断准备建立的页表类型;
S6、基于内存的物理地址基址,加上所述a1中的对应偏移量,得到准备建立的页表项所在地址;
S7、读取准备建立的页表项所在地址的数据,并判断页表项所在地址的数据有效性;若无效,则基于页表项所在地址的数据中属性值判断准备建立的页表项的大小;若有效,则建立对应大小的页节点,完成页表项建立;
S8、当S7中判断出准备建立的页表项的大小时,建立对应页表项的大小对应的地址,并判断该地址是否有效,若有效,建立对应大小的页表项;否则获取下一个表的基地址,生成新页表项所在地址的数据,并建立能映射对应页表项的大小的表,再判断建立的是页还是表,并执行S9;
S9、当所述S8中建立的是页时,更新新页表项所在地址的数据中的部分属性值,并返回S7;当所述S8中建立的是表时,获取对应大小的物理地址,作为页表项所在地址,并返回S7。
2.根据权利要求2所述的方法,其特征在于,所述a0至少包括:表示页表类型的MODE位,表示是否可执行的X位,表示是否可写入的W位,表示是否可读取的R位,表示是否有效的V位,表示Dirty位的D位,表示Accessed位的A位,表示是否全局量的G位,表示是否用户位的U位,表示分别生成512G、1G、2M、4K的页表控制位,satp中的PPN字段。
3.根据权利要求1所述的方法,其特征在于,所述S3中,所述锁通过以下方式获得:
准备建页表的CPU申请,通过AMO指令修改内存里的固定地址来获得;所述固定地址为预设的共享内存地址,用于存储标识是否有CPU正在修改页表项的值;
当准备建页表的CPU完成页表项生成后,释放所述锁。
4.根据权利要求1所述的方法,其特征在于,所述S7中,页表项所在地址的数据包括:表示是否可执行的X位,表示是否可写入的W位,表示是否可读取的R位,表示是否有效的V位,satp中的PPN字段。
5.根据权利要求2所述的方法,其特征在于,所述S9中,更新新页表项所在地址的数据中的部分属性值,进一步包括:将新页表项所在地址的数据中的X位、R位、W位与原页表项所在地址的数据中的X位、R位、W位按位进行或运算,并将结果写入新页表项所在地址的数据中的X位、R位、W位,以实现更新。
6.根据权利要求2所述的方法,其特征在于,所述S8中,获取下一个表的基地址进一步包括:
获取下一个表的基地址,并生成PPN位、D位、A位、G位、U位作为数据,并将基地址加4K,保存至该表的基地址中。
7.一种RISC-V CPU验证中页表项生成系统,其特征在于,用于执行如权利要求1至6任一所述的方法;所述系统具有基于RISC-V架构的多核CPU、内存模块,所述系统还包括:
参数设置模块,用于设置页表项属性参数a0,虚拟地址参数a1、物理地址参数a2;以及基于页表建立模块更新所述a0、a1、a2中的属性值;所述a1中,存储有页表项的虚拟地址偏移量;
锁模块,用于在内存中设置锁,并执行锁的获取与释放;
判断模块,用于判断a1中地址高字段的有效性,以及针对建立页表类型、待建立页表的地址的有效性、待建页表大小进行判断;
页表建立模块,基于判断模块的判断结果,以及参数设置模块的各参数中属性值,建立对应的映射表或页节点。
8.根据权利要求7所述的系统,其特征在于,所述锁模块在所述内存中预设一固定地址作为共享内存地址,并存储标识是否有CPU正在修改页表项的值,以形成锁;
仅准备建立共享页表的CPU有权限访问所述共享内存地址,并执行该共享内存地址的值的读、写。
9.根据权利要求7所述的系统,其特征在于,在内存中设置固定位置,存储各表的基地址,并在生成页表项属性参数a0的各个属性值后,将该基地址加4K,保存回所述固定位置。
10.一种RISC-V CPU验证中页表项生成装置,其特征在于,所述装置至少包括基于RISC-V架构的多核CPU,及可与多核CPU进行数据交互的存储器,所述存储器中存储有计算机指令,以在所述多核CPU调用该计算机指令时,执行如权利要求1至6所述的RISC-V CPU验证中页表项生成方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111294855.6A CN113986775B (zh) | 2021-11-03 | 2021-11-03 | 一种risc-v cpu验证中页表项生成方法、系统及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111294855.6A CN113986775B (zh) | 2021-11-03 | 2021-11-03 | 一种risc-v cpu验证中页表项生成方法、系统及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113986775A true CN113986775A (zh) | 2022-01-28 |
CN113986775B CN113986775B (zh) | 2023-08-18 |
Family
ID=79746164
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111294855.6A Active CN113986775B (zh) | 2021-11-03 | 2021-11-03 | 一种risc-v cpu验证中页表项生成方法、系统及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113986775B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114860627A (zh) * | 2022-07-06 | 2022-08-05 | 沐曦集成电路(上海)有限公司 | 基于地址信息动态生成页表的方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8543792B1 (en) * | 2006-09-19 | 2013-09-24 | Nvidia Corporation | Memory access techniques including coalesing page table entries |
CN108509246A (zh) * | 2018-04-08 | 2018-09-07 | 重庆满惠网络科技有限公司 | 一种网页表单自定义验证方法和系统 |
CN110046106A (zh) * | 2019-03-29 | 2019-07-23 | 海光信息技术有限公司 | 一种地址转换方法、地址转换模块及系统 |
CN111367831A (zh) * | 2020-03-26 | 2020-07-03 | 超验信息科技(长沙)有限公司 | 翻译页表的深度预取方法、部件、微处理器及计算机设备 |
CN112363824A (zh) * | 2020-10-12 | 2021-02-12 | 北京大学 | 一种申威架构下的内存虚拟化方法与系统 |
CN113326094A (zh) * | 2020-04-08 | 2021-08-31 | 阿里巴巴集团控股有限公司 | 宿主机的内存映射方法、装置、电子设备及计算机可读介质 |
-
2021
- 2021-11-03 CN CN202111294855.6A patent/CN113986775B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8543792B1 (en) * | 2006-09-19 | 2013-09-24 | Nvidia Corporation | Memory access techniques including coalesing page table entries |
CN108509246A (zh) * | 2018-04-08 | 2018-09-07 | 重庆满惠网络科技有限公司 | 一种网页表单自定义验证方法和系统 |
CN110046106A (zh) * | 2019-03-29 | 2019-07-23 | 海光信息技术有限公司 | 一种地址转换方法、地址转换模块及系统 |
CN111367831A (zh) * | 2020-03-26 | 2020-07-03 | 超验信息科技(长沙)有限公司 | 翻译页表的深度预取方法、部件、微处理器及计算机设备 |
CN113326094A (zh) * | 2020-04-08 | 2021-08-31 | 阿里巴巴集团控股有限公司 | 宿主机的内存映射方法、装置、电子设备及计算机可读介质 |
CN112363824A (zh) * | 2020-10-12 | 2021-02-12 | 北京大学 | 一种申威架构下的内存虚拟化方法与系统 |
Non-Patent Citations (2)
Title |
---|
NIKOLAOS CHARALAMPOS PAPADOPOULOS ETC.: "A Configurable TLB Hierarchy for the RISC-V Architecture", 2020 30TH INTERNATIONAL CONFERENCE ON FIELD-PROGRAMMABLE LOGIC AND APPLICATIONS (FPL) * |
张诗情: "基于部分页迁移的CPU-GPU高效通信机制研究", 中国优秀硕士论文电子期刊网信息科技辑, no. 1 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114860627A (zh) * | 2022-07-06 | 2022-08-05 | 沐曦集成电路(上海)有限公司 | 基于地址信息动态生成页表的方法 |
CN114860627B (zh) * | 2022-07-06 | 2022-09-30 | 沐曦集成电路(上海)有限公司 | 基于地址信息动态生成页表的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN113986775B (zh) | 2023-08-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10860323B2 (en) | Method and apparatus for processing instructions using processing-in-memory | |
US9218302B2 (en) | Page table management | |
US20150089116A1 (en) | Merged TLB Structure For Multiple Sequential Address Translations | |
CN113835685B (zh) | 一种基于拟态数据库的网络操作系统设计方法 | |
CN114580344B (zh) | 测试激励生成方法、验证方法、验证系统及相关设备 | |
US9208088B2 (en) | Shared virtual memory management apparatus for providing cache-coherence | |
JP7359837B2 (ja) | メモリ・システム内に記憶されているメモリ保護テーブルを使用するメモリ保護ユニット | |
JP2021515312A (ja) | 上位層キャッシュ内のエントリに基づいて下位層キャッシュへの流入をログすることによるトレース記録 | |
US20220269615A1 (en) | Cache-based trace logging using tags in system memory | |
US8327084B2 (en) | Method and apparatus to trigger synchronization and validation actions upon memory access | |
US7500073B1 (en) | Relocation of virtual-to-physical mappings | |
US7562204B1 (en) | Identifying and relocating relocatable kernel memory allocations in kernel non-relocatable memory | |
JP7397057B2 (ja) | メモリ・システム内に記憶されている制御テーブルのための二分探索手順 | |
CN113986775A (zh) | 一种risc-v cpu验证中页表项生成方法、系统及装置 | |
EP4278265B1 (en) | Memory address compression within an execution trace | |
CN107832238B (zh) | 一种基于龙芯处理器平台的高速缓存作内存的方法 | |
US20230342282A1 (en) | Memory page markings as logging cues for processor-based execution tracing | |
US20220269614A1 (en) | Treating main memory as a collection of tagged cache lines for trace logging | |
Maas et al. | Grail quest: A new proposal for hardware-assisted garbage collection | |
KR20210058613A (ko) | 단일 파일의 병렬 읽기/쓰기를 위한 락킹 방법 및 이를 구현하는 컴퓨팅 장치 | |
EP4278262B1 (en) | Physical memory address omission or obfuscation within an execution trace | |
US11687453B2 (en) | Cache-based trace logging using tags in an upper-level cache | |
US11561896B2 (en) | Cache-based trace logging using tags in an upper-level cache | |
US11989137B2 (en) | Logging cache line lifetime hints when recording bit-accurate trace | |
US20130262790A1 (en) | Method, computer program and device for managing memory access in a multiprocessor architecture of numa type |
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 |