CN117453286A - 一种申威simd指令对i/o空间的访问方法、装置、设备及介质 - Google Patents
一种申威simd指令对i/o空间的访问方法、装置、设备及介质 Download PDFInfo
- Publication number
- CN117453286A CN117453286A CN202311378490.4A CN202311378490A CN117453286A CN 117453286 A CN117453286 A CN 117453286A CN 202311378490 A CN202311378490 A CN 202311378490A CN 117453286 A CN117453286 A CN 117453286A
- Authority
- CN
- China
- Prior art keywords
- instruction
- space
- simd
- data
- tlb
- 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
- 238000000034 method Methods 0.000 title claims abstract description 47
- 238000012546 transfer Methods 0.000 claims abstract description 27
- 238000013507 mapping Methods 0.000 claims description 14
- 230000001960 triggered effect Effects 0.000 claims description 13
- 238000004590 computer program Methods 0.000 claims description 11
- 230000005856 abnormality Effects 0.000 claims description 4
- 238000012360 testing method Methods 0.000 description 19
- 238000010586 diagram Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 9
- 238000012545 processing Methods 0.000 description 8
- 238000013461 design Methods 0.000 description 4
- 238000011056 performance test Methods 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 229910052754 neon Inorganic materials 0.000 description 1
- GKAOGPIIYCISHV-UHFFFAOYSA-N neon atom Chemical compound [Ne] GKAOGPIIYCISHV-UHFFFAOYSA-N 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000001737 promoting effect Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种申威SIMD指令对I/O空间的访问方法、装置、设备及介质,方法包括:将SIMD指令的关键状态寄存器数据保存至暂存区中;若所述SIMD指令为读指令,则将SIMD指令相应的源I/O空间数据转移到中转内存空间;主动触发读指令TLB脱靶后从暂存区中找回关键状态寄存器数据;使用SIMD读指令将转移到中转内存空间的源I/O空间数据读入至目标向量寄存器中;若所述SIMD指令为写指令,则主动触发写指令TLB脱靶后从暂存区中找回关键状态寄存器数据;使用SIMD写指令将其对应的源向量寄存器数据转移到中转内存空间中;将转移到中转内存空间的源向量寄存器数据写入至目标I/O空间中。本发明能够实现将SIMD指令成功部署于申威系列处理器,以提升SIMD指令对内存空间的访存效率。
Description
技术领域
本发明涉及计算机技术领域,具体涉及一种申威SIMD指令对I/O空间的访问方法、装置、设备及介质。
背景技术
随着时代的进步,高性能处理器已广泛并深入部署于军事、企业、民用等众多领域,已成为工业信息化时代下的技术焦点。申威系列处理器基于自主研发的SW64架构设计,拥有完全自主的知识产权,推进其处理器、操作***及软件生态的开发对我国芯片自主进程具有重大意义。
SIMD(Single Instruction Multiple Data,单指令多数据流)指令是现代计算机指令集的重要组成部分。相比于单指令单数据流,SIMD指令支持数据级并行操作,实现单条指令操作多组数据,大幅提升如C语言、Java语言等程序的执行速度,在数据密集型应用场景下可大幅减少指令数的同时提升程序运行效率。SIMD指令最初被应用于超级计算机中,后在服务器、个人计算机中也得到广泛应用,例如X86架构中MMX(Multi Media eXtension,多媒体扩展指令集)、SSE(Streaming SIMD Extension,数据流单指令序列扩展指令集)、AVX(Advanced Vector Extensions,高级向量扩展指令集)等指令集均基于SIMD设计,大幅提高了多媒体应用的执行速度;ARM架构的Neon基于Cortex-A系列处理器的SIMD设计,广泛应用于移动计算设备的多媒体场景。
申威架构中,将物理存储空间划分为内存空间和I/O(Input/Ouput,输入/输出)空间并独立编址。其中,内存空间用于保存运行中的程序指令和数据;I/O空间用于控制外设寄存器和读写外设数据。在数据密集的应用场景下,一条SIMD指令可实现多条普通指令的功能,从而获得运行效率的提升;但是,由于目前申威系列处理器中的SIMD指令仅支持对内存空间的读写,不支持对I/O空间的读写;而为了避免使用SIMD指令对I/O空间读写导致***运行出错,申威系列处理器当前无法将SIMD指令实际部署并向用户开放,进而无法获得SIMD指令对内存空间读写带来的性能提升,限制了申威系列处理器的运算速率。
发明内容
本发明的目的在于克服现有技术中的不足,提供一种申威SIMD指令对I/O空间的访问方法、装置、设备及介质,解决现有技术中申威系列处理器的SIMD指令仅支持对内存空间的访问但不支持对I/O空间的访问,导致SIMD指令无法实际部署的技术问题。
为达到上述目的,本发明是采用下述技术方案实现的:
第一方面,本发明提供了一种申威SIMD指令对I/O空间的访问方法,所述方法包括:
响应于访问I/O空间异常的SIMD指令被触发,将其所属的关键状态寄存器数据保存至暂存区中;
若所述SIMD指令为读指令,则将SIMD指令相应的源I/O空间数据转移到中转内存空间;
主动触发读指令TLB脱靶后从暂存区中找回关键状态寄存器数据;
使用SIMD读指令将转移到中转内存空间的源I/O空间数据读入至目标向量寄存器中;
若所述SIMD指令为写指令,则主动触发写指令TLB脱靶后从暂存区中找回关键状态寄存器数据;
使用SIMD写指令将其对应的源向量寄存器数据转移到中转内存空间中;
将转移到中转内存空间的源向量寄存器数据写入至目标I/O空间中。
结合第一方面,可选的,所述将SIMD指令相应的源I/O空间数据转移到中转内存空间的步骤包括:
通过读指令将所述SIMD指令相应的源I/O空间数据读入影子寄存器中;
通过特权写指令将所述影子寄存器中的数据写入中转内存空间对应的物理地址中;
其中,所述中转内存空间为从内存中划分的一片固定空间。
结合第一方面,可选的,所述主动触发读指令TLB脱靶,包括以下步骤:
主动对中转内存空间对应的虚拟地址进行一次读指令访问;
若所述中转内存空间的虚拟地址所在页不存在于TLB中,则触发一次TLB脱靶异常,将中转内存空间的虚拟地址所在页与物理页的映射关系保存至TLB中,使得后续对该虚拟地址进行访问时能够直接在TLB中找到其映射关系。
结合第一方面,可选的,所述主动触发写指令TLB脱靶,包括以下步骤:
主动对中转内存空间对应的虚拟地址进行一次写指令访问;
若所述中转内存空间的虚拟地址所在页不存在于TLB中,则触发一次TLB脱靶异常,将中转内存空间的虚拟地址所在页与物理页的映射关系保存至TLB中,使得后续对该虚拟地址进行访问时能够直接在TLB中找到其映射关系。
结合第一方面,可选的,所述将转移到中转内存空间的源向量寄存器数据写入至目标I/O空间中,包括以下步骤:
通过特权读指令将中转内存空间的源向量寄存器数据读入影子寄存器中;
通过写指令将所述影子寄存器中的数据写入目标I/O空间对应的虚拟地址中。
结合第一方面,可选的,所述关键状态寄存器数据包括PC寄存器和异常数据地址寄存器的数据。
结合第一方面,可选的,将关键状态寄存器数据保存至暂存区中的步骤包括:
从内存中划分一片固定的空间作为暂存区;
使用特权写指令将关键状态寄存器数据保存至所述暂存区中,以防止触发TLB脱靶。
第二方面,本发明提供了一种申威SIMD指令对I/O空间的访问装置,所述装置包括:
关键状态寄存器数据暂存模块,用于响应于访问I/O空间异常的SIMD指令被触发,将其所属的关键状态寄存器数据保存至暂存区中;
源I/O空间数据转移模块,用于若所述SIMD指令为读指令,则将SIMD指令相应的源I/O空间数据转移到中转内存空间;
触发读指令TLB脱靶模块,用于主动触发读指令TLB脱靶后从暂存区中找回关键状态寄存器数据;
I/O空间数据读入模块,用于SIMD读指令执行模块,用于使用SIMD读指令将转移到中转内存空间的源I/O空间数据读入至目标向量寄存器中;
触发写指令TLB脱靶模块,用于若所述SIMD指令为写指令,则主动触发写指令TLB脱靶后从暂存区中找回关键状态寄存器数据;
源向量寄存器数据转移模块,用于使用SIMD写指令将其对应的源向量寄存器数据转移到中转内存空间中;
源向量寄存器数据写入模块,用于将转移到中转内存空间的源向量寄存器数据写入至目标I/O空间中。
第三方面,本发明提供了一种电子设备,包括处理器及存储介质;
所述存储介质用于存储指令;
所述处理器用于根据所述指令进行操作以执行如第一方面任一所述的申威SIMD指令对I/O空间的访问方法的步骤。
第四方面,本发明提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时,实现如第一方面任一所述的申威SIMD指令对I/O空间的访问方法的步骤。
与现有技术相比,本发明所达到的有益效果:
本发明通过引入中转内存空间,准确、完整地实现了申威SIMD指令对I/O空间的读写的功能;通过主动触发TLB脱靶并从暂存区中找回关键状态寄存器数据,确保不干扰原指令流的同时不触发报错,进一步完善了申威架构下SIMD指令集的功能,使SIMD指令得以实际部署,获取更高的计算效率和更大的性能提升。
通过测试结果表明,使用本发明提出的SIMD指令访问I/O空间的方法,申威得以实际部署SIMD指令,在极小地降低对I/O空间读写的速度的情况下,大幅提升了对内存空间的访问速度,为推进申威系列处理器的发展进程具有重大意义。
附图说明
图1是本发明实施SIMD指令访问I/O空间的总体流程示意图;
图2是本发明实施SIMD读指令访问I/O空间的流程示意图;
图3是本发明实施SIMD写指令访问I/O空间的流程示意图;
图4是本发明实施例提供的GLMark2测试工具对实施本发明方法时的申威性能测试结果;
图5是本发明实施例提供的mbw测试工具对实施本发明方法时的申威性能测试结果;
图6是本发明实施例提供的申威SIMD指令对I/O空间的访问装置的结构原理框图。
具体实施方式
下面通过附图以及具体实施例对本发明技术方案做详细的说明,应当理解本申请实施例以及实施例中的具体特征是对本申请技术方案的详细的说明,而不是对本申请技术方案的限定,在不冲突的情况下,本申请实施例以及实施例中的技术特征可以相互组合。
本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符"/",一般表示前后关联对象是一种“或”的关系。
实施例一:
本发明实施例介绍一种申威SIMD指令对I/O空间的访问方法,具体包括如下步骤:
步骤1:响应于访问I/O空间异常的SIMD指令被触发,将其所属的关键状态寄存器数据保存至暂存区中;
步骤2.1:若所述SIMD指令为读指令,则将SIMD指令相应的源I/O空间数据转移到中转内存空间;主动触发读指令TLB脱靶后从暂存区中找回关键状态寄存器数据;使用SIMD读指令将转移到中转内存空间的源I/O空间数据读入至目标向量寄存器中;
步骤2.2:若所述SIMD指令为写指令,则主动触发写指令TLB脱靶后从暂存区中找回关键状态寄存器数据;使用SIMD写指令将其对应的源向量寄存器数据转移到中转内存空间中;将转移到中转内存空间的源向量寄存器数据写入至目标I/O空间中。
需要说明的是,在现代计算机操作***中,为空间的高效管理和数据安全性,将物理上的内存储器空间的地址进一步抽象为虚拟地址。物理地址与虚拟地址之间满足特定的代换关系,一般情况下,用户程序只可访问虚拟地址,操作***可直接访问虚拟地址和物理地址。
为了加快物理地址与虚拟地址间的代换速度,处理器配备了TLB(TranslationLookaside Buffer,转译后备缓冲器)。TLB属于高速缓冲存储器,容量有限但存取速度高于内存,用于存放将虚拟地址映射至物理地址的映射关系。申威架构中,当对某一条虚拟地址进行访问时,操作***将优先从TLB中查找该虚拟地址对应的物理地址页表条目,如果未找到则触发一次TLB脱靶异常,用于将该虚拟地址与物理地址的页表关系写入TLB。后续对该虚拟地址进行访问时,可直接在TLB中查找到该虚拟地址与物理地址的页表关系,加快读写速度。
当指令流使用SIMD指令对I/O空间进行访问时,硬件将触发一次异常,随后保存触发异常的指令PC(Program Counter,程序计数)等现场数据,异常处理完毕后恢复异常现场,指令流继续执行;异常处理过程中,处理器切换至硬件模式,执行汇编代码段,允许直接对物理地址和寄存器进行操作。
参照图1至图3,下面结合上述计算机操作***的理论知识对申威架构处理器部署本发明方法进行详细介绍。
作为本发明的一种可实现的方式,本实施例中的步骤1具体包括:
S11:进入SIMD异常入口;
当指令流使用SIMD指令访问I/O空间时,***自动触发SIMD异常;保留出错的指令现场,将处理器切换至硬件模式并进入SIMD异常入口进行处理;处理器在硬件模式下拥有最高的执行权限,可直接对物理内存和寄存器进行读写操作。
S12:保存关键状态寄存器数据至暂存区;
由于后续的SIMD异常处理流程中涉及对虚拟地址的访问,可能触发TLB脱靶异常;受限于硬件设计,在SIMD异常处理时触发TLB脱靶异常后将优先执行TLB脱靶异常处理,完成后回到SIMD异常继续执行。
在执行TLB脱靶异常时,SIMD异常处理流程中用到的关键状态寄存器如PC寄存器、异常数据地址寄存器的数据信息会被改写,因此需要提前将关键状态寄存器的数据保存至内存。本实施例中,从内存中划分一片固定的空间作为暂存区,并使用特权写指令将关键状态寄存器数据保存至所述暂存区中,以防止触发TLB脱靶。
S13:检查操作码;
SIMD指令可分为SIMD读指令和SIMD写指令。由于SIMD对I/O空间的访问处理中,SIMD读指令和SIMD写指令的处理流程不同,故需要对SIMD读指令和SIMD写指令进行区分。
检查相关寄存器,获取触发数据流异常的指令操作码,若为SIMD读指令则执行步骤2.1;若为SIMD写指令则执行步骤2.2。
参照图2所示,本发明实施例提供的步骤2.1在申威架构中,SIMD读指令实现的效果是将I/O空间的数据读取到向量寄存器中;由于硬件不支持SIMD指令读取I/O空间,因此本实施例将源I/O空间的数据转移到内存空间后再使用SIMD指令读取内存空间中的该数据;具体包括以下步骤:
S2.1.1:将源I/O空间的数据读入影子寄存器;
使用4条读指令,每条指令操作8字节数据,依次将SIMD指令相应的源I/O空间对应的虚拟地址中的数据读入4个装载8字节数据的影子寄存器中。
S2.1.2:将影子寄存器的数据写入中转内存空间;
从内存中划分的一片固定空间作为中转内存空间,用于将源I/O空间中的数据临时保存至内存空间。
进一步说明的是,为避免此步骤中因为访问虚拟地址而触发TLB脱靶异常,使用4条特权写指令,每条指令操作8字节数据,依次将4个装载8字节数据的影子寄存器中的数据直接写入中转内存空间对应的物理地址中。
S2.1.3:主动触发TLB脱靶并从暂存区取回关键寄存器数据。
由于在执行2.1.4步骤时,SIMD读指令只能访问虚拟地址,若该虚拟地址所在的页不存在于TLB中,会触发TLB脱靶,导致关键状态寄存器内的数据被改写。因此当前步骤主动对中转内存空间对应的虚拟地址进行一次读指令访问,若中转内存空间的虚拟地址所在页不存在于TLB中,则触发TLB脱靶异常后,中转内存空间的虚拟地址所在页与物理页的映射关系被保存至TLB中,使得后续对该虚拟地址进行访问时能够直接在TLB中找到其映射关系,从而避免了在执行2.1.4步骤时触发TLB脱靶异常的发生。
由于本次主动触发的TLB脱靶异常会导致关键状态寄存器内的数据被改写,依次需要从暂存区取回关键寄存器数据,以实现在保证不干扰原指令流的同时不触发报错。
S2.1.4:将中转内存空间的数据读入目标向量寄存器;
使用1条SIMD读指令,将中转内存空间对应的虚拟地址中32字节数据读入目标向量寄存器;
完成步骤S2.1.4后跳转至步骤S3。
参照图3所示,本发明实施例提供的步骤2.2在申威架构中,SIMD写指令实现的效果是将向量寄存器的数据写入到I/O空间中;由于硬件不支持SIMD指令写I/O空间,因此本实施例使用SIMD指令将源向量寄存器的数据转移到内存空间后再将该数据写入目标I/O空间中;具体包括以下步骤:
S2.2.1:主动触发TLB脱靶并暂存区取回关键寄存器数据;
由于S2.2.2步骤中,SIMD写指令只能访问虚拟地址,若该虚拟地址所在的页不存在于TLB中,会触发TLB脱靶,导致关键寄存器内的数据被改写。
因此本实施例主动访问中转内存空间对应的虚拟地址,触发TLB脱靶,将中转内存空间的虚拟地址所在页与物理页的映射关系保存至TLB中,使得后续对该虚拟地址进行访问时能够直接在TLB中找到其映射关系。
S2.2.2:将源向量寄存器的数据写入中转内存空间;
使用1条SIMD写指令,将源向量寄存器中的32字节数据写入中转内存空间对应的虚拟地址。
S2.2.3:将中转内存空间的数据读入影子寄存器;
为避免此步骤中因为访问虚拟地址而触发TLB脱靶异常,使用4条特权读指令,每条指令操作8字节数据,将中转内存空间对应的物理地址中的32字节数据依次读入4个影子寄存器中。
S2.2.4:将影子寄存器的数据写入目标I/O空间;
使用4条写指令,每条指令操作8字节数据,依次将4个影子寄存器中的数据写入目标I/O空间对应的虚拟地址。
完成步骤S2.2.4后跳转至步骤S3。
S3:清空暂存区,跳转退出
SIMD指令访问I/O空间的处理流程执行完毕,清空暂存区数据,根据PC跳转并退出硬件模式,继续执行原指令流。
进一步说明的是,本实施例中使用的指令及其功能如表1所示;
表1
指令名称 | 操作的地址 | 操作的寄存器 | 操作的字节数 | 功能 |
SIMD读指令 | 虚拟地址 | 向量寄存器 | 32 | 读取 |
SIMD写指令 | 虚拟地址 | 向量寄存器 | 32 | 写入 |
读指令 | 虚拟地址 | 寄存器 | 8 | 读取 |
写指令 | 虚拟地址 | 寄存器 | 8 | 写入 |
特权读指令 | 物理地址 | 寄存器 | 8 | 读取 |
特权写指令 | 物理地址 | 寄存器 | 8 | 写入 |
其中,寄存器存储8字节数据,向量寄存器可存储32字节数据。SIMD读指令从访问的虚拟地址中将32字节数据读入向量寄存器;SIMD写指令从向量寄存器中将32字节数据写入访问的虚拟地址。读指令从访问的虚拟地址中将8字节数据读入寄存器;写指令从寄存器中将8字节数据写入访问的虚拟地址。特权读指令从访问的物理地址中将8字节数据读入寄存器;特权写指令从寄存器中将8字节数据写入访问的物理地址。
SIMD读指令、SIMD写指令、读指令、写指令只可访问虚拟地址,特权读指令和特权写指令可直接访问物理地址以避免触发TLB脱靶异常。SIMD读指令和SIMD写指令属于SIMD指令,可同时访问四条8字节数据,读指令、写指令、特权读指令和特权写指令一次只可访问一条8字节数据。
下面通过测试来验证本发明方法的有效性。
GLMark2测试工具是通用的图形性能测试工具,测试过程涉及大量SIMD指令对I/O空间的读写操作。本实施例使用GLMark2测试工具进行测试,实验对象的硬件环境相同,对比使用本发明的方法前后的测试得分;使用本发明所提出的申威SIMD指令对I/O空间的访问方法;测试结果如图4所示,SIMD指令在访问I/O空间时略有性能降低,但GLMark2得分仅下降了0.88%,对I/O访存性能影响较小,可忽略不计。
mbw测试工具是Linux***的内存带宽测试工具,其测试项MEMCPY、DUMB、MCBLOCK分别测试了***对内存空间的内存拷贝、字符串拷贝、内存块拷贝性能。本实施例使用mbw测试工具进行测试,实验对象的硬件环境相同,对比使用本发明的方法前后的测试得分;测试结果参照图5所示,使用本发明所提出的SIMD指令访问I/O空间的方法,SIMD指令访问内存空间得以成功部署,在内存拷贝和内存块拷贝测试项中,分别获得了549.4%和635.5%的性能提升。
可见,本实施例提供的方法使得申威得以实际部署SIMD指令,在极小地降低对I/O空间读写的速度的情况下,大幅提升了对内存空间的访问速度。
综上所述,本发明实施例提供的申威SIMD指令对I/O空间的访问方法,适用于申威系列处理器的操作***,使用软件代码实现SIMD指令访问I/O空间在硬件层面的逻辑模拟,最终使SIMD指令访问I/O空间不会报错,实现SIMD指令的成功部署,从而获取SIMD指令对内存空间的访存效率提升,大幅提高了处理器的性能。
实施例二:
如图6所示,本发明实施例提供了一种申威SIMD指令对I/O空间的访问装置,可以用于实施实施例一所述的方法,所述装置包括:
关键状态寄存器数据暂存模块,用于响应于访问I/O空间异常的SIMD指令被触发,将其所属的关键状态寄存器数据保存至暂存区中;
源I/O空间数据转移模块,用于若所述SIMD指令为读指令,则将SIMD指令相应的源I/O空间数据转移到中转内存空间;
触发读指令TLB脱靶模块,用于主动触发读指令TLB脱靶后从暂存区中找回关键状态寄存器数据;
I/O空间数据读入模块,用于SIMD读指令执行模块,用于使用SIMD读指令将转移到中转内存空间的源I/O空间数据读入至目标向量寄存器中;
触发写指令TLB脱靶模块,用于若所述SIMD指令为写指令,则主动触发写指令TLB脱靶后从暂存区中找回关键状态寄存器数据;
源向量寄存器数据转移模块,用于使用SIMD写指令将其对应的源向量寄存器数据转移到中转内存空间中;
源向量寄存器数据写入模块,用于将转移到中转内存空间的源向量寄存器数据写入至目标I/O空间中。
本发明实施例提供的申威SIMD指令对I/O空间的访问装置与实施例一提供的申威SIMD指令对I/O空间的访问方法基于相同的技术构思,能够产生如实施例一所述的有益效果,在本实施例中未详尽描述的内容可以参见实施例一。
实施例三:
本发明实施例提供了一种电子设备,包括处理器及存储介质;
所述存储介质用于存储指令;
处理器用于根据指令进行操作以执行根据实施例一中任一项方法的步骤。
实施例四:
本发明实施例提供了一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时,实现如实现实施例一中任一项方法的步骤。
本领域内的技术人员应明白,本申请的实施例可提供为方法、***、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。
Claims (10)
1.一种申威SIMD指令对I/O空间的访问方法,其特征在于,包括:
响应于访问I/O空间异常的SIMD指令被触发,将其所属的关键状态寄存器数据保存至暂存区中;
若所述SIMD指令为读指令,则将SIMD指令相应的源I/O空间数据转移到中转内存空间;
主动触发读指令TLB脱靶后从暂存区中找回关键状态寄存器数据;
使用SIMD读指令将转移到中转内存空间的源I/O空间数据读入至目标向量寄存器中;
若所述SIMD指令为写指令,则主动触发写指令TLB脱靶后从暂存区中找回关键状态寄存器数据;
使用SIMD写指令将其对应的源向量寄存器数据转移到中转内存空间中;
将转移到中转内存空间的源向量寄存器数据写入至目标I/O空间中。
2.根据权利要求1所述的申威SIMD指令对I/O空间的访问方法,其特征在于,所述将SIMD指令相应的源I/O空间数据转移到中转内存空间的步骤包括:
通过读指令将所述SIMD指令相应的源I/O空间数据读入影子寄存器中;
通过特权写指令将所述影子寄存器中的数据写入中转内存空间对应的物理地址中;
其中,所述中转内存空间为从内存中划分的一片固定空间。
3.根据权利要求1或2所述的申威SIMD指令对I/O空间的访问方法,其特征在于,所述主动触发读指令TLB脱靶,包括以下步骤:
主动对中转内存空间对应的虚拟地址进行一次读指令访问;
若所述中转内存空间的虚拟地址所在页不存在于TLB中,则触发一次TLB脱靶异常,将中转内存空间的虚拟地址所在页与物理页的映射关系保存至TLB中,使得后续对该虚拟地址进行访问时能够直接在TLB中找到其映射关系。
4.根据权利要求1所述的申威SIMD指令对I/O空间的访问方法,其特征在于,所述主动触发写指令TLB脱靶,包括以下步骤:
主动对中转内存空间对应的虚拟地址进行一次写指令访问;
若所述中转内存空间的虚拟地址所在页不存在于TLB中,则触发一次TLB脱靶异常,将中转内存空间的虚拟地址所在页与物理页的映射关系保存至TLB中,使得后续对该虚拟地址进行访问时能够直接在TLB中找到其映射关系。
5.根据权利要求1或4所述的申威SIMD指令对I/O空间的访问方法,其特征在于,所述将转移到中转内存空间的源向量寄存器数据写入至目标I/O空间中,包括以下步骤:
通过特权读指令将中转内存空间的源向量寄存器数据读入影子寄存器中;
通过写指令将所述影子寄存器中的数据写入目标I/O空间对应的虚拟地址中。
6.根据权利要求1所述的申威SIMD指令对I/O空间的访问方法,其特征在于,所述关键状态寄存器数据包括PC寄存器和异常数据地址寄存器的数据。
7.根据权利要求1所述的申威SIMD指令对I/O空间的访问方法,其特征在于,将关键状态寄存器数据保存至暂存区中的步骤包括:
从内存中划分一片固定的空间作为暂存区;
使用特权写指令将关键状态寄存器数据保存至所述暂存区中,以防止触发TLB脱靶。
8.一种申威SIMD指令对I/O空间的访问装置,其特征在于,所述装置包括:
关键状态寄存器数据暂存模块,用于响应于访问I/O空间异常的SIMD指令被触发,将其所属的关键状态寄存器数据保存至暂存区中;
源I/O空间数据转移模块,用于若所述SIMD指令为读指令,则将SIMD指令相应的源I/O空间数据转移到中转内存空间;
触发读指令TLB脱靶模块,用于主动触发读指令TLB脱靶后从暂存区中找回关键状态寄存器数据;
I/O空间数据读入模块,用于SIMD读指令执行模块,用于使用SIMD读指令将转移到中转内存空间的源I/O空间数据读入至目标向量寄存器中;
触发写指令TLB脱靶模块,用于若所述SIMD指令为写指令,则主动触发写指令TLB脱靶后从暂存区中找回关键状态寄存器数据;
源向量寄存器数据转移模块,用于使用SIMD写指令将其对应的源向量寄存器数据转移到中转内存空间中;
源向量寄存器数据写入模块,用于将转移到中转内存空间的源向量寄存器数据写入至目标I/O空间中。
9.一种电子设备,其特征在于,包括处理器及存储介质;
所述存储介质用于存储指令;
所述处理器用于根据所述指令进行操作以执行根据权利要求1至7任一项所述的申威SIMD指令对I/O空间的访问方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时,实现如权利要求1至7任一项所述的申威SIMD指令对I/O空间的访问方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311378490.4A CN117453286A (zh) | 2023-10-23 | 2023-10-23 | 一种申威simd指令对i/o空间的访问方法、装置、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311378490.4A CN117453286A (zh) | 2023-10-23 | 2023-10-23 | 一种申威simd指令对i/o空间的访问方法、装置、设备及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117453286A true CN117453286A (zh) | 2024-01-26 |
Family
ID=89595929
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311378490.4A Pending CN117453286A (zh) | 2023-10-23 | 2023-10-23 | 一种申威simd指令对i/o空间的访问方法、装置、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117453286A (zh) |
-
2023
- 2023-10-23 CN CN202311378490.4A patent/CN117453286A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10042814B2 (en) | System and method for using a mask register to track progress of gathering and scattering elements between data registers and memory | |
US11126536B2 (en) | Facilitating recording a trace file of code execution using index bits in a processor cache | |
JP2776132B2 (ja) | オペランド内の情報のスタティックおよびダイナミック・マスキングを兼ね備えるデータ処理システム | |
JP2020534589A (ja) | キャッシュコヒーレンスプロトコルデータを用いたキャッシュベーストレース記録 | |
CN102662869B (zh) | 虚拟机中的内存访问方法和装置及查找器 | |
US7506096B1 (en) | Memory segment emulation model for virtual machine | |
JP2021515312A (ja) | 上位層キャッシュ内のエントリに基づいて下位層キャッシュへの流入をログすることによるトレース記録 | |
US7523446B2 (en) | User-space return probes | |
US20220269615A1 (en) | Cache-based trace logging using tags in system memory | |
CN102662726B (zh) | 虚拟机的模拟方法和计算机设备 | |
US8543791B2 (en) | Apparatus and method of reducing page fault rate in virtual memory system | |
CN115657946A (zh) | Raid顺序写场景下的片外ddr带宽卸载方法、终端及存储介质 | |
US20040225765A1 (en) | Systems and methods for increasing transaction entries in a hardware queue | |
US7184944B1 (en) | Apparatus and method for the simulation of a large main memory address space given limited resources | |
CN117453286A (zh) | 一种申威simd指令对i/o空间的访问方法、装置、设备及介质 | |
JP3170472B2 (ja) | レジスタ・リマップ構造を有する情報処理システム及び方法 | |
US20220269614A1 (en) | Treating main memory as a collection of tagged cache lines for trace logging | |
US20230342282A1 (en) | Memory page markings as logging cues for processor-based execution tracing | |
US20070136724A1 (en) | Transferring registers in transitions between computer environments | |
JP2010026969A (ja) | データ処理装置 | |
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 | |
JPH02126340A (ja) | データ処理システム | |
JP2000029690A (ja) | デ―タ処理の方法および装置 | |
CN113849346A (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 |