CN116257173A - 数据处理方法、装置、系统、计算设备以及存储介质 - Google Patents
数据处理方法、装置、系统、计算设备以及存储介质 Download PDFInfo
- Publication number
- CN116257173A CN116257173A CN202210238254.1A CN202210238254A CN116257173A CN 116257173 A CN116257173 A CN 116257173A CN 202210238254 A CN202210238254 A CN 202210238254A CN 116257173 A CN116257173 A CN 116257173A
- Authority
- CN
- China
- Prior art keywords
- instruction
- read
- memory
- write
- instructions
- 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
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- 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)
- Human Computer Interaction (AREA)
- Software Systems (AREA)
- Executing Machine-Instructions (AREA)
Abstract
一种数据处理方法,本方法由处理器获取应用程序的指令序列,根据指令序列识别指令序列中读写指令的执行顺序,按照识别出的执行顺序执行读写指令,以访问该计算设备中的内存,使得该处理器能够正常执行该应用程序。
Description
本申请要求于2021年12月10日提交的申请号为202111506284.8、发明名称为“数据处理的方法”的中国专利申请的优先权,其全部内容通过引用结合在本申请中。
技术领域
本申请涉及通信技术领域,特别涉及一种数据处理方法、装置、系统、计算设备以及存储介质。
背景技术
应用程序包括对内存执行读操作或写操作的读写指令,当处理器执行应用程序时,不可避免地通过执行应用程序中的读写指令,对内存进行读写操作。但是,处理器在对内存进行读写操作的过程中,可能导致处理器无法正常执行该应用程序。
发明内容
本申请提供了一种数据处理方法、装置、系统、计算设备以及存储介质,能够使得处理器正常运行应用程序。该技术方案如下:
第一方面,提供了一种数据处理方法,该方法由计算设备的处理器执行,该方法包括:获取应用程序的指令序列,根据指令序列识别指令序列中读写指令的执行顺序,按照识别出的执行顺序执行读写指令,其中,该指令序列包括多个指令,多个指令包括对计算设备的内存执行读操作或写操作的读写指令,该应用程序部署在计算设备中。
本方法由处理器获取应用程序的指令序列,根据该指令序列识别出指令序列中读写指令的执行顺序,按照识别出的执行顺序执行读写指令,以访问该计算设备中的内存,使得该处理器能够正常执行该应用程序。
在一种可能的实现方式中,根据指令序列识别指令序列中读写指令的执行顺序,包括:将读写指令在指令序列中的排列顺序识别为读写指令的执行顺序。
基于上述可能的实现方式,强制性地将读写指令在指令序列中的排列顺序识别为读写指令的执行顺序,使得读写指令在指令序列中的排列顺序与读写指令的执行顺序一致,相应地,处理器在按照读写指令的执行顺序来执行读写指令时,能够避免出现对内存的访问次序与应用程序中读写指令的排列顺序不一致的情况,从而能够避免出现内存一致性问题。
在另一种可能的实现方式中,将读写指令在指令序列中的排列顺序识别为读写指令的执行顺序,包括:按照顺序内存访问模式,将读写指令在指令序列中的排列顺序识别为读写指令的执行顺序;其中,顺序内存访问模式要求读写指令的执行顺序与读写指令在指令序列中的排列顺序一致。
基于上述可能的实现方式,由于顺序内存访问模式要求读写指令的执行顺序与读写指令在指令序列中的排列顺序一致,因此,按照顺序内存访问模式,处理器强制性地将读写指令在指令序列中的排列顺序识别为读写指令的执行顺序,相应地,处理器在按照读写指令的执行顺序来执行读写指令时,能够避免出现对内存的访问次序与应用程序中读写指令的排列顺序不一致的情况,从而能够避免出现内存一致性问题。
在另一种可能的实现方式中,读写指令包括对内存执行读操作的读指令或对内存执行写操作的写指令,读指令具有第一语义,写指令具有第二语义;其中,第一语义用于指示指令序列中的第一指令在读指令执行之后执行,第二语义用于指示指令序列中的第二指令在写指令执行完成前执行,第一指令在指令序列中的排列顺序位于读指令之后,第二指令在指令序列中的排列顺序位于写指令之前。
基于上述可能的实现方式,由于读指令具有第一语义,写指令具有第二语义,则能够自动触发处理器根据指令序列识别读写指令的执行顺序,相应地,处理器在按照读写指令的执行顺序来执行读写指令时,能够避免出现对内存的访问次序与应用程序中读写指令的排列顺序不一致的情况。
在另一种可能的实现方式中,读指令基于扩展内存读指令编译得到,扩展内存读指令具有第一语义,扩展内存读指令是在处理器的指令集中增加的用于指示读取内存数据的指令;写指令基于扩展内存写指令编译得到,扩展内存写指令具有第二语义,扩展内存写指令为在处理器的指令集中增加的用于指示写入内存数据的指令。
基于上述可能的实现方式,由于扩展内存读指令具有第一语义,由扩展内存读指令编译得到的读指令也具有第一语义,使得处理器能够按序执行指令序列中的读指令。另外,由于扩展内存写指令具有第二语义,由扩展内存写指令编译得到的写指令也具有第二语义,使得处理器能够按序执行指令序列中的写指令。
在另一种可能的实现方式中,扩展内存读指令包括第一扩展内存读指令、第二扩展内存读指令、第三扩展内存读指令以及第四扩展内存读指令中的至少一种,扩展内存写指令包括第一扩展内存写指令以及第二扩展内存写指令中的至少一种;其中,第一扩展内存读指令、第二扩展内存读指令以及第一扩展内存写指令所支持的寻址方式均不包括非缩放的立即数寻址方式,第三扩展内存读指令、第四扩展内存读指令以及第二扩展内存写指令均支持非缩放的立即数寻址方式;第一扩展内存读指令用于指示基于支持的寻址方式确定内存中的存储地址,将确定出的存储地址中第一字节数的数据读取至第一目的寄存器;第二扩展内存读指令用于指示基于支持的寻址方式确定内存中的存储地址,将确定出的存储地址中第二字节数的数据读取至第二目的寄存器,采用读取的数据的符号位填充第二目的寄存器的剩余位;第三扩展内存读指令用于指示基于非缩放的立即数寻址方式确定内存中的存储地址,将确定出的存储地址中第一字节数的数据读取至第三目的寄存器;第四扩展内存读指令用于指示基于非缩放的立即数寻址方式确定内存中的存储地址,将确定出的存储地址中第二字节数的数据读取至第四目的寄存器,采用读取的数据的符号位填充第四目的寄存器的剩余位;第一扩展内存写指令用于指示基于支持的寻址方式确定内存中的存储地址,将第一源寄存器中第三字节数的数据写入确定出的存储地址;第二扩展内存写指令用于指示基于非缩放的立即数寻址方式确定内存中的存储地址,将第二源寄存器中的第三字节数的数据写入确定出的存储地址。
基于上述可能的实现方式,提供多种扩展内存读/写指令,能够满足多个应用场景对扩展内存读/写指令的需求。
在另一种可能的实现方式中,第一字节数包括1字节、2字节、4字节或8字节,第二字节数包括1字节、2字节或4字节,第三字节数包括1字节、2字节、4字节或8字节;第一扩展内存读指令、第二扩展内存读指令以及第一扩展内存写指令所支持的寻址方式包括缩放的立即数寻址方式、标签寻址方式或寄存器寻址方式,缩放的立即数寻址方式进行地址偏移时所采用的立即数为对应指令中缩放后的操作数;非缩放的立即数寻址方式进行地址偏移时所采用的立即数为对应指令中的操作数,且操作数的取值范围为-256至256。
基于上述可能的实现方式,提供了多种第一字节数、第二字节数以及支持的寻址方式,满足不同应用场景对扩展内存读/写指令所支持的字节数以及寻址方式的需求。
在另一种可能的实现方式中,读指令基于扩展内存读指令编译得到,扩展内存读指令是处理器的指令集中的通用内存读指令增加第一语义后得到的指令;写操作的指令基于扩展内存写指令编译得到,扩展内存写指令是指令集中的通用内存写指令增加第二语义后得到的指令。
基于上述可能的实现方式,通过对指令集中通用内存读指令增加第一语义,能够得到扩展内存读指令,扩展了通用内存读指令的功能,使得通用内存读指令适用于更多的应用场景。通过对指令集中通用内存写指令增加第二语义,能够得到扩展内存写指令,扩展了通用内存写指令的功能,使得通用内存写指令适用于更多的应用场景。
在另一种可能的实现方式中,读写指令包括对内存执行读操作的读指令或对内存执行写操作的写指令,读指令基于处理器的指令集中的通用内存读指令编译得到,写指令基于处理器的指令集中的通用内存写指令编译得到。
基于上述可能的实现方式,通用内存读指令和通用内存写不具有特殊语义(如第一语义或第二语义),相应地,由这两种通用内存指令编译得到的读写指令也不具有特殊语义,处理器仍根据指令序列识别读写指令的执行顺序,相应地,处理器在按照读写指令的执行顺序来执行读写指令时,也能使得该处理器能够正常执行该应用程序。
第二方面,提供了一种数据处理系统,该数据处理系统包括第一计算设备和第二计算设备,第一计算设备包括处理器;
第二计算设备,用于对应用源程序进行编译,得到应用程序,向第一计算设备发送应用程序;
处理器,用于接收应用程序,获取应用程序的指令序列,指令序列包括多个指令,多个指令包括对第一计算设备的内存执行读操作或写操作的读写指令;
处理器,还用于根据指令序列识别读写指令的执行顺序,按照读写指令的执行顺序执行读写指令。
在一种可能的实现方式中,处理器还用于:将读写指令在指令序列中的排列顺序识别为读写指令的执行顺序。
在另一种可能的实现方式中,处理器还用于:按照顺序内存访问模式,将读写指令在指令序列中的排列顺序识别为读写指令的执行顺序,其中,顺序内存访问模式要求读写指令的执行顺序与读写指令在指令序列中的排列顺序一致。
在另一种可能的实现方式中,读写指令包括对内存执行读操作的读指令或对内存执行写操作的写指令,读指令具有第一语义,写指令具有第二语义;其中,第一语义用于指示指令序列中的第一指令在读指令执行之后执行,第二语义用于指示指令序列中的第二指令在写指令执行完成前执行,第一指令在指令序列中的排列顺序位于读指令之后,第二指令在指令序列中的排列顺序位于写指令之前。
在另一种可能的实现方式中,读指令基于扩展内存读指令编译得到,扩展内存读指令具有第一语义,扩展内存读指令是在处理器的指令集中增加的用于指示读取内存数据的指令;写指令基于扩展内存写指令编译得到,扩展内存写指令具有第二语义,扩展内存写指令为在处理器的指令集中增加的用于指示写入内存数据的指令。
在另一种可能的实现方式中,扩展内存读指令包括第一扩展内存读指令、第二扩展内存读指令、第三扩展内存读指令以及第四扩展内存读指令中的至少一种,扩展内存写指令包括第一扩展内存写指令以及第二扩展内存写指令中的至少一种;其中,第一扩展内存读指令、第二扩展内存读指令以及第一扩展内存写指令所支持的寻址方式均不包括非缩放的立即数寻址方式,第三扩展内存读指令、第四扩展内存读指令以及第二扩展内存写指令均支持非缩放的立即数寻址方式;第一扩展内存读指令用于指示基于支持的寻址方式确定内存中的存储地址,将确定出的存储地址中第一字节数的数据读取至第一目的寄存器;第二扩展内存读指令用于指示基于支持的寻址方式确定内存中的存储地址,将确定出的存储地址中第二字节数的数据读取至第二目的寄存器,采用读取的数据的符号位填充第二目的寄存器的剩余位;第三扩展内存读指令用于指示基于非缩放的立即数寻址方式确定内存中的存储地址,将确定出的存储地址中第一字节数的数据读取至第三目的寄存器;第四扩展内存读指令用于指示基于非缩放的立即数寻址方式确定内存中的存储地址,将确定出的存储地址中第二字节数的数据读取至第四目的寄存器,采用读取数据的符号位填充第四目的寄存器的剩余位;第一扩展内存写指令用于指示基于支持的寻址方式确定内存中的存储地址,将第一源寄存器中第三字节数的数据写入确定出的存储地址;第二扩展内存写指令用于指示基于非缩放的立即数寻址方式确定内存中的存储地址,将第二源寄存器中的第三字节数的数据写入确定出的存储地址。
在另一种可能的实现方式中,第一字节数包括1字节、2字节、4字节或8字节,第二字节数包括1字节、2字节或4字节,第三字节数包括1字节、2字节、4字节或8字节;第一扩展内存读指令、第二扩展内存读指令以及第一扩展内存写指令所支持的寻址方式包括缩放的立即数寻址方式、标签寻址方式或寄存器寻址方式,缩放的立即数寻址方式进行地址偏移时所采用的立即数为对应指令中缩放后的操作数;非缩放的立即数寻址方式进行地址偏移时所采用的立即数为对应指令中的操作数,且操作数的取值范围为-256至256。
在另一种可能的实现方式中,读指令基于扩展内存读指令编译得到,扩展内存读指令是处理器的指令集中的通用内存读指令增加第一语义后得到的指令;写操作的指令基于扩展内存写指令编译得到,扩展内存写指令是指令集中的通用内存写指令增加第二语义后得到的指令。
在另一种可能的实现方式中,读写指令包括对内存执行读操作的读指令或对内存执行写操作的写指令,读指令基于处理器的指令集中的通用内存读指令编译得到,写指令基于处理器的指令集中的通用内存写指令编译得到。
第三方面,提供了一种数据处理装置,用于执行上述数据处理方法。具体地,该数据处理装置包括用于执行上述第一方面或上述第一方面的任一种可选方式提供的数据处理方法的功能模块。
第四方面,提供了一种计算设备,该计算设备包括处理器,该处理器用于执行如上述第一方面或上述第一方面的任一种可选方式提供的方法。
第五方面,提供了一种计算机可读存储介质,该存储介质中存储有至少一条程序代码,该程序代码由计算设备中的处理器读取,以使处理器执行如上述第一方面或上述第一方面的任一种可选方式提供的方法。
第六方面,提供了一种计算机程序产品,该计算机程序产品包括至少一条程序代码,该至少一条程序代码存储在计算机可读存储介质中,该至少一条程序代码由计算设备中的处理器读取,以使该处理器执行上述第一方面或者第一方面的各种可选实现方式中提供的方法。
本申请在上述各方面提供的实现方式的基础上,还可以进行进一步组合以提供更多实现方式
附图说明
图1是本申请实施例提供的一种数据处理系统100的结构示意图;
图2是本申请实施例提供的一种数据处理方法的流程图;
图3是本申请实施例提供的一种处理器的数据处理过程的示意图;
图4是本申请实施例提供的一种数据处理装置400的结构示意图;
图5是本申请实施例提供的一种计算设备500的结构示意图。
具体实施方式
为了便于了解,首先对本申请实施例中涉及的部分名词进行如下解释:
应用程序:是指为了完成至少一项特定任务而被开发执行于操作系统之上的指令序列。
指令序列:包括多个指令。可选地,该多个指令按序排列形成该指令序列,每个指令在该指令序列中分别对应一个排列顺序。
指令序列中的该多个指令:包括读指令或写指令。若该多个指令包括读指令,该多个指令中的读指令有至少一个。若该多个指令包括写指令,该多个指令中的写指令有至少一个,其中,读指令用于指示对内存(main memory)执行读操作,读操作为读取内存中的数据的操作。写指令用于指示对内存执行写操作,写操作为向内存写入数据的操作。为了便于描述,也可以将读指令或写指令统称为读写指令。
第一语义:用于指示指令序列中的第一指令在读指令执行之后执行,其中,对于指令序列中的一个读指令而言,第一指令为指令序列中位于该读指令之后的指令。例如,指令序列包括100个指令,这100个指令中的第2个指令为读指令,则对于该读指令而言,该100个指令中第3个指令至第100个指令均为第一指令。由于第一语义指示指令序列中的第一指令在读指令执行之后执行,则第一语义能够阻止指令序列中排列顺序位于该读指令之后的指令,在该读指令之前被执行。在一些实施例中,该第一语义也称为获取语义(acquiresemantic)。
第二语义:用于指示指令序列中的第二指令在写指令执行完成前执行,其中,对于指令序列中的一个写指令而言,第二指令为指令序列中位于该写指令之前的指令。例如,指令序列包括100个指令,这100个指令中的第3个指令为写指令,则对于该写指令而言,该100个指令中第1个指令和第2个指令均为第二指令。由于第二语义指示指令序列中的第二指令在写指令执行完成前执行,则第二语义能够阻止指令序列中排列顺序位于该写指令之前的指令,在该写指令之后被执行。在一些实施例中,该第二语义也称为释放语义(releasesemantic)。
顺序内存访问模式:要求指令序列中读写指令的执行顺序与该读写指令在指令序列中的排列顺序一致。
内存模型:用于定义处理器执行读写指令的方式。其中,该内存模型包括弱内存模型(weakly-ordered memory model)。
弱内存模型:处理器在执行应用程序时,能够交换该应用程序中读写指令的执行顺序,而不改变该应用程序的行为。
本申请实施例提出在执行应用程序时,根据应用程序中的指令序列识别应用程序中读写指令的执行顺序,按照读写指令的执行顺序,执行该应用程序中的读写指令,使得该处理器能够正常执行该应用程序,相应地,减少应用程序出现随机崩溃、重启或产生错误运行结果等不良情况的发生,增加对支持弱内存模型的处理器的可信度,以进一步提高支持弱内存模型的处理器的商誉及市场销售。
下面将结合附图对本申请实施方式作进一步地详细描述。
图1是本申请实施例提供的一种数据处理系统100的结构示意图,数据处理系统100包括第一计算设备101和第二计算设备102。第一计算设备101和第二计算设备102通过有线或无线通信方式进行直接或间接地通信连接,使用第一计算设备101的用户称为第一用户,使用第二计算设备102的用户称为第二用户。
第二计算设备102中部署有编译软件,该编译软件用于提供编译应用源程序的功能。第二计算设备102通过编译软件,对应用源程序进行编译,得到编译后的应用程序,其中,应用源程序和编译后的应用程序均用于实现定制化的功能,应用源程序是为了实现定制化功能,采用高级语言编程编写出的源码,通过对应用源程序进行编译,得到是处理器能够识别的指令序列,该指令序列称为应用程序,该指令序列例如由二进制数据所组成的指令序列。
第一计算设备101从第二计算设备102获取编译后的应用程序,第一计算设备101对获取到的应用程序进行部署,例如第一计算设备101安装该应用程序。第一用户对第一计算设备101下达执行该应用程序的执行指令,第一计算设备响应于对该应用程序的执行指令,执行该应用程序(即运行该应用程序)。
第一计算设备101包括处理器11和内存12,第一计算设备101在执行该应用程序时,应用程序中的每条指令是由第一计算设备101中的处理器11来执行的,而应用程序执行过程中的临时数据是存放在内存12中的,因此,处理器11在执行指令的过程中,对内存12进行读写操作,以从内存读取数据和向内存写入数据。为了使得处理器11能与内存12更好地交互,为处理器11定义读写指令的执行方式(例如,内存模型),相应地,处理器11对内存12的读写操作,需要遵循定义的内存模型,否则出现内存访问出错的问题。
相应地,开发人员为了能够让某一处理器正常运行应用程序,在针对该处理器开发应用程序时,会考虑该处理器所支持的内存模型对读写指令的执行顺序的要求,相应地,针对该处理器所开发的应用程序,同样支持该处理器所支持的内存模型,且应用程序中读写指令的排列顺序满足内存模型对读写指令的执行顺序的要求。
不同架构的处理器可能支持同一内存模型,例如,高级精简指令集机器(advancedRISC machines,ARM)架构的处理器和性能优化的增强型精简指令集(performanceoptimization with enhanced RISC,POWER)架构的处理器均支持弱内存模型,基于ARM架构的处理器所开发出应用程序和基于POWER架构的处理器所开发出的应用程序也均支持弱内存模型。
在本申请实施例中,第一计算设备的处理器所支持的指令集包括通用指令集、扩展指令集1以及扩展指令集2中的至少一种,如下述表1所示。继续参见表1,通用指令集中用于访问内存的指令包括通用内存读指令和通用内存写指令,其中,通用内存读指令包括通用内存读指令1-4中的至少一种,通用内存写指令包括通用内存写指令1-2中的至少一种。扩展指令集1中用于访问内存的指令包括扩展内存读指令1和扩展内存写指令1,其中,扩展内存读指令1包括扩展内存读指令11-14中的至少一种,扩展内存写指令1包括扩展内存写指令11-12中的至少一种。扩展指令集2中用于访问内存的指令包括扩展内存读指令2和扩展内存写指令2,其中,扩展内存读指令2包括扩展内存读指令21-12中的至少一种,扩展内存写指令2包括扩展内存写指令21-22中的至少一种。
表1
下面结合表1,对第一计算设备的处理器所支持的各种指令集做如下介绍:
第一种指令集:通用指令集
其中,该通用指令集为该处理器原本所支持的指令集,以该处理器为ARM64架构的处理器为例,该通用指令集为ARM64指令集。通用指令集中的通用内存(即内存)读指令用于指示基于支持的寻址方式确定内存中待读取的存储地址,将该存储地址中特定字节数的数据读取至目的寄存器,其中,特定字节数为通用内存读指令所指示的待读取数据的位宽。
通用内存读指令支持立即数寻址方式、标签寻址方式和寄存器寻址方式中的至少一种。该立即数寻址方式有两种,分别为缩放(scaled)的立即数寻址方式和非缩放的(unscaled,U)即数寻址方式。
其中,缩放的立即数寻址方式用于指示缩放对应指令中的操作数,采用缩放后的操作数进行寻址。操作数的缩放倍数可根据场景需求进行设置,缩放倍数例如1、4或8,当缩放倍数为1时,缩放前后的操作数不变,在此,本申请实施例对操作数的缩放倍数不做限制。例如,对于支持缩放的立即数寻址方式的通用内存读指令,当处理器在执行通用内存读指令时,缩放通用内存读指令中的操作数,采用缩放后的操作数对基址寄存器所存储的地址进行地址偏移,以确定内存中待读取的存储地址。
非缩放的立即数寻址方式指示采用对应指令中取值范围为-256至256的操作数进行寻址,而不对对应指令中的操作数进行缩放。例如,对于支持非缩放的立即数寻址方式的通用内存读指令,该通用内存读指令中的操作数的取值范围为-256至256,当处理器在执行该通用内存读指令时,将该通用内存读指令中的操作数与基址寄存器所存储的地址进行求和,得到待读取的存储地址。对于立即数寻址方式,进行地址偏移时所采用的操作数统称为立即数。
如下述表2所示,该特定字节数包括第一字节数或第二字节数,基于支持的寻址方式和特定字节数的不同,通用内存读指令包括通用内存读指令1-4中的至少一种。
表2
其中,表2中的“/”代表无。
下面详细解释表2中各个指令的处理方式:
通用内存读指令1,用于指示基于支持的寻址方式确定内存中的存储地址,将该确定出的存储地址中第一字节数的数据读取至第一目的寄存器。
在一种可能的实现方式中,第一字节数包括1字节、2字节、4字节或8字节。如表2所示,根据第一字节数的不同取值,通用内存读指令1包括通用内存读指令11-13中的至少一种。对于通用内存读指令13,当第一目的寄存器的长度大于或等于4字节且小于8字节时,第一字节数为4字节。当第一目的寄存器的长度大于或等于8字节时,第一字节数为8字节。
不同通用内存读指令1的编码格式和指代方式均不同。在一种可能的实现方式中,使用字节装载(Load Register Byte,LDRB)、半字装载(Load Register Halfword,LDRH)以及字或双字装载(Load Register,LDR)分别指代通用内存读指令11-13。或者,使用UR11、UR12以及UR13分别指代通用内存读指令11-13,以区分不同的通用内存读指令1。
通用内存读指令2,用于指示基于支持的寻址方式确定内存中的存储地址,将确定出的存储地址中第二字节数的数据读取至第二目的寄存器,采用读取的数据的符号位填充第二目的寄存器的剩余位。
其中,第二目的寄存器的长度大于第二字节数,读取的数据包括符号位(sing,S)和数值位。在一种可能的实现方式中,通用内存指令2还用于支持按照第二目的寄存器从低位到高位的顺序,依次填充读取的数据,相应地,第二目的寄存器的剩余位为第二目的寄存器的剩余高位,该剩余高位由读取的数据的符号位填充。
在一种可能的实现方式中,第二字节数包括1字节、2字节或4字节。如表2所示,根据第二字节数据的不同取值,该通用内存读指令2包括通用内存读指令21-23中的至少一种。不同通用内存读指令2的编码格式和指代方式均不同。在一种可能的实现方式中,使用有符号字节装载(Load Register Signed Byte,LDRSB)、有符号半字装载(Load RegisterSigned Halfword,LDRSH)以及有符号字装载(Load Register Signed Word,LDRSW)分别指代通用内存读指令21-23。或者,使用UR21、UR22以及UR23分别指代通用内存读指令21-23,以区分不同的通用内存读指令2。
通用内存读指令3,用于指示基于非缩放的立即数寻址方式确定内存中的存储地址,将确定出的存储地址中第一字节数的数据读取至第三目的寄存器。
如表2所示,根据第一字节数的不同取值,通用内存读指令3包括通用内存读指令31-33中的至少一种。对于通用内存读指令33,当第三目标寄存器的长度大于或等于4字节且小于8字节时,第一字节数为4字节。当第三目标寄存器的长度大于或等于8字节时,第一字节数为8字节。
不同通用内存读指令3的编码格式和指代方式均不同。在一种可能的实现方式中,使用无缩放的字节装载(Load Register Byte Unscaled,LDURB)、无缩放的半字装载(LoadRegister Halfword Unscaled,LDURH)以及无缩放的字或双字装载(Load RegisterUnscaled,LDUR)分别指代通用内存读指令31-33。或者,使用UR31、UR32以及UR33分别指代通用内存读指令31-33,以区分不同的通用内存读指令3。
通用内存读指令4,用于指示基于非缩放的立即数寻址方式确定内存中的存储地址,将确定出的存储地址中第二字节数的数据读取至第四目的寄存器,采用读取的数据的符号位填充第四目的寄存器的剩余位。
其中,第四目的寄存器的长度大于第二字节数,读取的数据包括符号位和数值位。在一种可能的实现方式中,该通用内存指令4还用于支持按照第四目的寄存器从低位到高位的顺序,依次填充读取的数据,相应地,第四目的寄存器的剩余位为第四目的寄存器的剩余高位,该剩余高位由读取的数据的符号位填充。
如表2所示,根据第二字节数的不同取值,通用内存读指令4包括通用内存读指令41-43。
不同通用内存读指令4的编码格式和指代方式均不同。在一种可能的实现方式中,使用无缩放的有符号字节装载(Load Register Signed Byte Unscaled,LDURSB)、无缩放的有符号半字装载(Load Register Signed Halfword Unscaled,LDURSH)以及无缩放的有符号字装载(Load Register Signed Word Unscaled,LDURSW)分别指代通用内存读指令41-43。或者,使用UR41、UR42以及UR43分别指代通用内存读指令41-43,以区分不同的通用内存读指令4。
该通用指令集中的通用内存写指令用于指示基于支持的寻址方式确定内存中待写入的存储地址,将源寄存器中第三字节数的数据写入确定出的存储地址,其中,第三字节数为通用内存写指令所指示的待写入数据的位宽。通用内存写指令支持立即数寻址方式、标签寻址方式和寄存器寻址方式中的至少一种。
如下述表3所示,基于支持的寻址方式的不同,通用内存写指令包括通用内存写指令1-2中的至少一种。
表3
下面详细介绍表3中各个指令的处理过程:
通用内存写指令1,用于指示基于支持的寻址方式确定内存中的存储地址,将第一源寄存器中第三字节数的数据写入确定出的存储地址。
在一种可能的实现方式中,第三字节数包括1字节、2字节、4字节或8字节。如表3所示,根据第三字节数的不同取值,通用内存写指令1包括通用内存写指令11-13。对于通用内存写指令13,当第一源寄存器的长度大于或等于4字节且小于8字节时,第三字节数为4字节。当第一源寄存器的长度大于或等于8字节时,第三字节数为8字节。
不同通用内存写指令1的编码格式和指代方式均不同。在一种可能的实现方式中,使用字节存储(Store Register Byte,STRB)、半字存储(Store Register Halfword,STRH)以及字或双字存储(Store Register,STR)分别指代通用内存写指令11-13。或者,使用UW11、UW12以及UW13分别指代通用内存写指令11-13,以区分不同通用内存写指令11-13。
通用内存写指令2,用于指示基于非缩放的立即数寻址方式确定内存中的存储地址,将第二源寄存器中的第三字节数的数据写入确定出的存储地址。
如表3所示,根据第三字节数的不同取值,通用内存写指令2包括通用内存写指令21-23。对于通用内存写指令23,当第二源寄存器的长度大于或等于4字节且小于8字节时,第三字节数为4字节。当第二源寄存器的长度大于或等于8字节时,第三字节数为8字节。
不同通用内存写指令2的编码格式和指代方式均不同。在一种可能的实现方式中,使用无缩放的字节存储(Store Register Byte Unscaled,STURB)、无缩放的半字存储(Store Register Halfword Unscaled,STURH)以及无缩放的字或双字存储(StoreRegister Unscaled,STUR)分别指代通用内存写指令21-23。或者,使用UW21、UW22以及UW23分别指代通用内存写指令21-23,以区分不同通用内存写指令21-23。
在一种可能的实现方式中,通用指令集还包括至少一条其他功能指令,该至少一条其他功能指令用于实现除访问内存以外的其他功能,在此,本申请实施例对该至少一条其他功能指令不做限定。
第二种指令集:扩展指令集1
其中,扩展指令集1是为第一计算设备的处理器所扩展的指令集。扩展指令集1中的该扩展内存读指令1和扩展内存写指令1分别是在该处理器的通用指令集中增加的对内存执行读写操作的指令。例如,将通用指令集中的通用内存读指令替换为扩展内存读指令1,将该通用指令集中的通用内存写指令替换为扩展内存写指令1,得到扩展指令集1。
下面分别对扩展内存读指令1和扩展内存写指令1进行介绍,在此,先对扩展内存读指令1作如下介绍:
扩展内存读指令1,用于指示基于支持的寻址方式确定内存中待读取的存储地址,将该存储地址中特定字节数的数据读取至目的寄存器,且扩展内存读指令1还具有第一语义。
其中,扩展内存读指令1支持立即数寻址方式、标签寻址方式和寄存器寻址方式中的至少一种。例如下述表4所示,基于支持的寻址方式和特定字节数的不同,扩展内存读指令1包括扩展内存读指令11-14中的至少一种。
表4
其中,表4中的“/”代表无。
下面详细介绍表4中各个指令的处理过程:
扩展内存读指令11,用于指示基于支持的寻址方式确定内存中的存储地址,将确定出的存储地址中第一字节数的数据读取至第一目的寄存器,且扩展内存读指令11还具有第一语义。
其中,扩展内存读指令11是基于通用内存读指令1的功能所扩展出的内存读指令。扩展内存读指令11具有通用内存读指令1的功能,且还具有第一语义。扩展内存读指令11与通用内存读指令1的指令格式可以相同,也可以不同,但与通用内存读指令1的编码格式不同。
如表4所示,根据第一字节数的不同取值,扩展内存读指令11包括扩展内存读指令111-113中的至少一种。其中,扩展内存读指令111-113分别是根据通用内存读指令11-13所新增的内存读指令。与通用内存读指令11-13相比,扩展内存读指令111-113分别具有通用内存读指令11-13的功能,且扩展内存读指令111-113均具有第一语义,而通用内存读指令11-13均不具有第一语义。
不同扩展内存读指令11的编码格式和指代方式均不同。在一种可能的实现方式中,使用LDRBE1、LDRHE1、LDRE1分别指代扩展内存读指令111-113,其中,在此,“E1”是指通用扩展内存读指令的第一种扩展形式。或者,使用ER111、ER112以及ER113分别指代扩展内存读指令111-113,以区分不同的扩展内存读指令11。
扩展内存读指令12,用于指示基于支持的寻址方式确定内存中的存储地址,将确定出的存储地址中第二字节数的数据读取至第二目的寄存器,采用读取的数据的符号位填充第二目的寄存器的剩余位,且扩展内存读指令12还具有第一语义。
其中,扩展内存读指令12是基于通用内存读指令2的功能所扩展出的内存读指令。扩展内存读指令12具有通用内存读指令2的功能,且还具有第一语义。扩展内存读指令12与通用内存读指令2的指令格式可以相同,也可以不同,但与通用内存读指令2的编码格式不同。
如表4所示,根据第二字节数的不同取值,扩展内存读指令12包括扩展内存读指令121-123中的至少一种。其中,扩展内存读指令121-123分别是根据通用内存读指令21-23所新增的内存读指令。与通用内存读指令21-23相比,扩展内存读指令121-123分别具有通用内存读指令21-23的功能,且扩展内存读指令121-123均具有第一语义,而通用内存读指令21-23均不具有第一语义。
不同扩展内存读指令11的编码格式和指代方式均不同。在一种可能的实现方式中,使用LDRSBE1、LDRSHE1、LDRSWE1分别指代扩展内存读指令121-123。或者,使用ER121、ER122以及ER123分别指代扩展内存读指令121-123,以区分不同的扩展内存读指令12。
扩展内存读指令13,用于指示基于非缩放的立即数寻址方式确定内存中的存储地址,将确定出的存储地址中第一字节数的数据读取至第三目的寄存器,且扩展内存读指令13还具有第一语义。
其中,扩展内存读指令13是基于通用内存读指令3的功能所扩展出的内存读指令。扩展内存读指令13具有通用内存读指令3的功能,且还具有第一语义。扩展内存读指令13与通用内存读指令3的指令格式可以相同,也可以不同,但与通用内存读指令3的编码格式不同。
如表4所示,根据第一字节数的不同取值,扩展内存读指令13包括扩展内存读指令131-133中的至少一种。其中,扩展内存读指令131-133分别是根据通用内存读指令31-33所新增的内存读指令。与通用内存读指令31-33相比,扩展内存读指令131-133分别具有通用内存读指令31-33的功能。扩展内存读指令131-133均具有第一语义,而通用内存读指令31-33均不具有第一语义。
不同扩展内存读指令13的编码格式和指代方式均不同。在一种可能的实现方式中,使用LDURBE1、LDURHE1以及LDURE1分别指代扩展内存读指令131-133。或者,使用ER131、ER132以及ER133分别指代扩展内存读指令131-133,以区分不同的扩展内存读指令13。
扩展内存读指令14,用于指示基于非缩放的立即数寻址方式确定内存中的存储地址,将确定出的存储地址中第二字节数的数据读取至第四目的寄存器,采用读取的数据的符号位填充第四目的寄存器的剩余位,且扩展内存读指令14还具有第一语义。
其中,扩展内存读指令14是基于通用内存读指令4的功能所扩展出的内存读指令。扩展内存读指令14具有通用内存读指令4的功能,且还具有第一语义。扩展内存读指令14与通用内存读指令4的指令格式可以相同,也可以不同,但与通用内存读指令4的编码格式不同。
如上述表4所示,根据第二字节数的不同取值,扩展内存读指令14包括扩展内存读指令141-143中的至少一种。其中,扩展内存读指令141-143分别是根据通用内存读指令31-33所新增的内存读指令,与通用内存读指令31-33相比,扩展内存读指令141-143分别具有通用内存读指令31-33的功能,且扩展内存读指令141-143均具有第一语义,而扩展内存读指令31-33均不具有第一语义。
不同扩展内存读指令14的编码格式和指代方式均不同。在一种可能的实现方式中,使用LDURSBE1、LDURSHE1以及LDURSWE1分别指代扩展内存读指令141-143。或者,使用ER141、ER142以及ER143分别指代扩展内存读指令141-143,以区分不同的扩展内存读指令14。
需要说明的是,对于每种扩展内存读指令1以及对应的通用内存读指令,每种扩展内存读指令1是针对对应通用内存读指令新增加的一个内存读指令,且还具有第一语义。相应地,每种扩展内存读指令1和对应通用内存读指令所对应的编码格式不同,例如,一种扩展内存读指令1所对应的编码格式中设置有语义位,且该语义位上的数值用于标识第一语义,而对应通用内存读指令所对应的编码格式中可能设置有语义位,也可能不设置语义位,若该通用内存读指令所对应的编码格式中设置有语义位,但该语义位上的数值与扩展内存读指令1所对应的编码格式中语义位上的数值不同,且不用于标识第一语义。
在此对扩展指令集1中的扩展内存写指令1,进行如下介绍:
扩展内存写指令1,用于指示基于支持的寻址方式确定内存中待写入的存储地址,将源寄存器中第三字节数的数据写入确定出的存储地址,且扩展内存写指令1还具有第二语义。
其中,扩展内存写指令1支持支持立即数寻址方式、标签寻址方式和寄存器寻址方式中的至少一种。例如下述表5所示,基于支持的寻址方式的不同,扩展内存写指令1包括扩展内存写指令11-12中的至少一种。
表5
下面详细介绍表5中各个指令的处理过程:
扩展内存写指令11,用于指示基于支持的寻址方式确定内存中的存储地址,将第一源寄存器中第三字节数的数据写入确定出的存储地址,且扩展内存写指令11具有第二语义。
其中,扩展内存写指令11是基于通用内存写指令1的功能所扩展出的内存写指令。扩展内存读指令11具有通用内存写指令1的功能,且还具有第二语义。扩展内存写指令11与通用内存写指令1的指令格式可以相同,也可以不同,但与通用内存写指令1的编码格式不同。
如表5所示,根据第三字节数的不同取值,扩展内存写指令11包括扩展内存写指令111-113种的至少一种。其中,扩展内存写指令111-113分别是根据通用内存写指令11-13所新增的内存写指令。与通用内存写指令11-13相比,扩展内存写指令111-113分别具有通用内存写指令11-13的功能,且扩展内存写指令111-113还均具有第二语义,而通用内存写指令11-13均不具有第二语义。
不同扩展内存写指令11的编码格式和指代方式均不同。在一种可能的实现方式中,使用STRBE1、STRHE1以及STRE1分别指代扩展内存写指令111-113。或者,使用EW111、EW112以及EW113分别指代扩展内存写指令111-113,以区分不同的扩展内存写指令11。
扩展内存写指令12,用于指示基于非缩放的立即数寻址方式确定内存中的存储地址,将第二源寄存器中的第三字节数的数据写入确定出的存储地址,且扩展内存写指令12具有第二语义。
其中,扩展内存写指令12是基于通用内存写指令2的功能所扩展出的内存写指令。扩展内存读指令12具有通用内存写指令2的功能,且还具有第二语义。扩展内存写指令12与通用内存写指令2的指令格式可以相同,也可以不同,但与通用内存写指令2的编码格式不同。
如表5所示,根据第三字节数的不同取值,扩展内存写指令12包括扩展内存写指令121-123中的至少一种。其中,扩展内存写指令121-123分别是根据通用内存写指令21-23所新增的内存写指令,与通用内存写指令21-23相比,扩展内存写指令121-123分别具有通用内存写指令21-23的功能,且扩展内存写指令121-123还均具有第二语义,而通用内存写指令21-23均不具有第二语义。
不同扩展内存写指令12的编码格式和指代方式均不同。在一种可能的实现方式中,使用STURBE1、STURHE1以及STURE1分别指代扩展内存写指令121-123。或者,使用EW121、EW122以及EW123分别指代扩展内存写指令121-123,以区分不同的扩展内存写指令12。
需要说明的是,对于每种扩展内存写指令1以及对应的通用内存写指令,每种扩展内存写指令1是针对对应通用内存写指令新增加的一个内存写指令,且还具有第二语义。相应地,每种扩展内存写指令1和对应通用内存写指令所对应的编码格式不同,例如,一种扩展内存写指令1所对应的编码格式中设置有语义位,且该语义位上的数值用于标识第二语义,而对应通用内存写指令所对应的编码格式中可能设置有语义位,也可能不设置语义位,若该通用内存写指令所对应的编码格式中设置有语义位,但该语义位上的数值与扩展内存写指令1所对应的编码格式中语义位上的数值不同,且不用于标识第二语义。
在一种可能的实现方式中,扩展指令集1还包括至少一条其他功能指令,该至少一条其他功能指令用于实现除访问内存以外的其他功能,在此,本申请实施例对该至少一条其他功能指令不做限定。
第三种指令集:扩展指令集2
其中,扩展指令集2是为该处理器所扩展的另一种指令集。与扩展指令集1相比,扩展指令集2是在通用指令集中的通用内存读写指令(即通用内存读指令或者通用内存写指令)上增加特殊语义(第一语义或第二语义)后所得到的指令集,而扩展指令集1是根据通用指令集中通用内存读写指令的功能,所开发出的一套新的指令集。为了区分开扩展指令集1和2,扩展指令集1和2中的指令所对应的编码格式不同。
如表1所示,扩展指令集2中的扩展内存读指令2具有第一语义,扩展内存读指令2是由该处理器的通用指令集中通用内存读指令增加第一语义后得到的指令。扩展指令集2中的扩展内存写指令2是由该通用指令集中通用内存写指令增加该第二语义后得到的指令。例如,为该通用指令集中的通用内存读指令增加第一语义,得到该内存扩展内存读指令2,为该通用指令集中的通用内存写指令增加第二语义,得到该内存扩展内存写指令2,将该通用指令集中的通用内存读指令替换为该扩展内存读指令2,将该通用指令集中的通用内存写指令替换为该扩展内存写指令2,得到该扩展指令集2。
下面分别对扩展内存读指令2和扩展内存写指令2进行介绍,在此,先对扩展内存读指令2作如下介绍:
扩展内存读指令2,用于指示基于支持的寻址方式确定内存中待读取的存储地址,将该存储地址中特定字节数的数据读取至目的寄存器,且扩展内存读指令2还具有第一语义。
其中,扩展内存读指令2支持立即数寻址方式、标签寻址方式和寄存器寻址方式中的至少一种。例如下述表6所示,基于支持的寻址方式和特定字节数的不同,扩展内存读指令2包括扩展内存读指令22-24中的至少一种。
表6
其中,表6中的“/”代表无。
下面详细介绍表6中各个指令的处理过程。
扩展内存读指令21,用于指示基于支持的寻址方式确定内存中的存储地址,将定出的存储地址中第一字节数的数据读取至第一目的寄存器,且扩展内存读指令21还具有第一语义。
其中,扩展内存读指令21是在通用内存读指令1中增加第一语义所得到的指令。该扩展内存读指令21与通用内存读指令1的指令格式相同,但与通用内存读指令1对应的编码格式不同。
如表6所示,根据第一字节数的不同取值,扩展内存读指令21包括扩展内存读指令211-213中的至少一种。其中,扩展内存读指令211-213分别是在通用内存读指令11-13中增加第一语义后所得到的内存读指令。与通用内存读指令11-13相比,扩展内存读指令211-213分别具有通用内存读指令11-13的功能,且扩展内存读指令211-213均具有第一语义,而通用内存读指令11-13均不具有第一语义。
不同扩展内存读指令21的编码格式和指代方式均不同。在一种可能的实现方式,使用LDRBE2、LDRHE2以及LDRE2分别指代扩展内存读指令211-213。其中,在此“E2”是指通用扩展内存读指令的种扩展形式。或者,使用ER211、ER212以及ER213分别指代扩展内存读指令或者,使用ER211、ER212以及ER213分别指代扩展内存读指令211-213,以区分不同的扩展内存读指令21。
扩展内存读指令22,用于指示基于支持的寻址方式确定内存中的存储地址,将确定出的存储地址中第二字节数的数据读取至第二目的寄存器,采用读取的数据的符号位填充第二目的寄存器的剩余位,且扩展内存读指令22还具有第一语义。
其中,扩展内存读指令22是在通用内存读指令2中增加第一语义所得到的指令。扩展内存读指令22与该通用内存读指令2的指令格式相同,但与通用内存读指令2对应的编码格式不同。
如表6所示,根据第二字节数的不同取值,扩展内存读指令22包括扩展内存读指令221-223中的至少一种。其中,扩展内存读指令221-223分别是在通用内存读指令21-23中增加第一语义所得到的指令。与通用内存读指令21-23相比,扩展内存读指令221-223分别具有通用内存读指令21-23的功能,且扩展内存读指令221-223均具有第一语义,而通用内存读指令21-23均不具有第一语义。
不同扩展内存读指令23的编码格式和指代方式均不同。在一种可能的实现方式中,使用LDRSBE2、LDRSHE2以及LDRSWE2分别指代扩展内存读指令221-223。或者,使用ER221、ER222以及ER223分别指代扩展内存读指令221-223,以区分不同的扩展内存读指令22。
扩展内存读指令23,用于指示基于非缩放的立即数寻址方式确定内存中的存储地址,将确定出的存储地址中第一字节数的数据读取至第三目的寄存器,且扩展内存读指令23还具有第一语义。
其中,扩展内存读指令23是在通用内存读指令3中增加第一语义所得到的指令。扩展内存读指令23与通用内存读指令3的指令格式相同,但与通用内存读指令3的编码格式不同。
如表6所示,根据第一字节数的不同取值,扩展内存读指令23包括扩展内存读指令231-233中的至少一种。其中,扩展内存读指令231-233分别是在通用内存读指令31-33中增加第一语义所得到的指令。与通用内存读指令31-33相比,扩展内存读指令231-233分别具有通用内存读指令31-33的功能,且扩展内存读指令231-233均具有第一语义,而通用内存读指令31-33均不具有第一语义。
不同扩展内存读指令23的编码格式和指代方式均不同。在一种可能的实现方式中,使用LDURBE2、LDURHE2以及LDURE2分别指代扩展内存读指令231-233。或者,使用ER231、ER132以及ER233分别指代扩展内存读指令231-233,以区分不同的扩展内存读指令23。
扩展内存读指令24,用于指示基于非缩放的立即数寻址方式确定内存中的存储地址,将确定出的存储地址中第二字节数的数据读取至第四目的寄存器,采用读取的数据的符号位填充第四目的寄存器的剩余位,且扩展内存读指令24还具有第一语义。
其中,扩展内存读指令24是在通用内存读指令4中增加第一语义所得到的指令。扩展内存读指令24与通用内存读指令4的指令格式相同,但与通用内存读指令4的编码格式不同。
如表6所示,根据第二字节数的不同取值,扩展内存读指令24包括扩展内存读指令241-243中的至少一种。其中,扩展内存读指令241-243分别是在通用内存读指令41-43中增加第一语义所得到的指令。与通用内存读指令41-43相比,扩展内存读指令241-243分别具有通用内存读指令41-43的功能,且扩展内存读指令241-243均具有第一语义,而通用内存读指令41-43均不具有第一语义。
不同扩展内存读指令24的编码格式和指代方式均不同。在一种可能的实现方式中,使用LDURSBE2、LDURSHE2以及LDURSWE2分别指代扩展内存读指令241-243。或者,使用ER241、ER242以及ER243分别指代扩展内存读指令241-243,以区分不同的扩展内存读指令24。
在此对扩展指令集2中的扩展内存写指令2,进行如下介绍:
扩展内存写指令2,基于支持的寻址方式确定内存中待写入的存储地址,将源寄存器中第三字节数的数据写入确定出的存储地址,且扩展内存写指令2还具有第二语义。
其中,扩展内存写指令2支持支持立即数寻址方式、标签寻址方式和寄存器寻址方式中的至少一种。例如下述表7所示,基于支持的寻址方式的不同,扩展内存写指令2包括扩展内存写指令21-22中的至少一种。
表7
下面详细介绍表7中各个指令的处理过程。
扩展内存写指令21,用于指示基于支持的寻址方式确定内存中的存储地址,将第一源寄存器中字节数的数据写入确定出的存储地址,且扩展内存写指令21还具有第二语义。
其中,扩展内存写指令是21是在通用内存写指令1中增加第二语义所得到的指令。扩展内存写指令21与通用内存写指令1的指令格式相同,但与通用内存写指令1的编码格式不同。
如表7所示,根据第三字节数的不同取值,扩展内存写指令21包括扩展内存写指令211-213中的至少一种。其中,扩展内存写指令211-213分别是在通用内存写指令11-13中增加第二语义所得到的指令。与通用内存写指令11-13相比,扩展内存写指令211-213分别具有通用内存写指令11-13的功能,且扩展内存写指令211-213均具有第二语义,而通用内存写指令11-13均不具有第二语义。
不同扩展内存写指令21的编码格式和指代方式均不同。在一种可能的实现方式中,使用STRBE2、STRHE2以及STRE2分别指代扩展内存写指令211-213。或者,使用EW211、EW212以及EW213分别指代扩展内存写指令211-213,以区分不同的扩展内存写指令21。
扩展内存写指令22,用于指示基于非缩放的立即数寻址方式确定内存中的存储地址,将第二源寄存器中的第三字节数的数据写入确定出的存储地址,且扩展内存写指令22具有第二语义。
其中,扩展内存写指令22是在通用内存写指令2中增加第二语义所得到的指令。扩展内存写指令22与通用内存写指令2的指令格式相同,但与通用内存写指令2的编码格式不同。
如表7所示,根据第三字节数的不同取值,扩展内存写指令22包括扩展内存写指令221-223中的至少一种。其中,扩展内存写指令221-223分别是在通用内存写指令21-23中增加第二语义所得到的指令,与通用内存写指令21-23相比,扩展内存写指令221-223分别具有通用内存写指令21-23的功能,且扩展内存写指令221-223均具有第二语义,而通用内存写指令21-23均不具有第二语义。
不同扩展内存写指令22的编码格式和指代方式均不同。在一种可能的实现方式中,使用STURBE2、STURHE2以及STURE2分别指代扩展内存写指令221-223。或者,使用EW221、EW222以及EW223分别指代扩展内存写指令2221-223,以区分不同的扩展内存写指令22。
在一种可能的实现方式中,扩展指令集2还包括至少一条其他功能指令,该至少一条其他功能指令用于实现除访问内存以外的其他功能,在此,本申请实施例对该至少一条其他功能指令不做限定。
需要说明的是,不同架构的处理器所支持的通用指令集、扩展指令集1以及扩展指令集2均不同,相应地,不同指令集中内存读写指令(即通用内存读指令、通用内存写指令、扩展内存读指令或扩展内存写指令)的编码格式和指代方式均不同,在此,本申请实施例对第一计算设备的处理器所支持的各种指令集中的每种内存读写指令的编码格式以及指代方式不做限定。
上述的通用指令集、扩展指令集1以及扩展指令集2均为第一计算设备的处理器所支持的指令集,第二计算设备能够采用通用指令集、扩展指令集1或扩展指令集2,将应用源程序编译为应用程序,使得第一计算设备的处理器能够识别并执行该应用程序。为了进一步体现第二计算设备采用第一计算设备的处理器所支持的指令集,编译应用源程序的过程以及第一计算设备执行应用程序的过程,参见图2所示的本申请实施例提供的一种数据处理方法的流程图。
201、第二计算设备显示编译界面,该编译界面用于为目标类型的处理器提供编译功能。
其中,目标类型的处理器包括第一计算设备中的处理器。该编译功能包括编译出该处理器所能识别和执行的应用程序。该目标类型的处理器支持执行应用程序时对内存的访问次序与该应用程序中读写指令的排列顺序不一致,或者,也可以理解为该目标类型的处理器支持弱内存模型,例如ARM64架构的处理器或Power架构的处理器。
该编译界面由该第二计算设备中部署的编译软件来提供,该第二计算设备通过运行该编译软件,显示该编译界面。例如,该第二计算设备运行该编译软件,显示该编译软件的主界面,该主界面包括处理器选择选框,该处理器选择选框用于提供至少一个处理器选项,每个处理器选项对应一种类型的处理器。第二用户对该处理器选择选框中该目标类型的处理器所对应的处理器选项进行选择操作,第二计算设备响应于对该处理器选项的选项操作,显示该编译界面。
202、第二计算设备响应于在编译界面中对应用源程序的编译操作,对应用源程序进行编译,得到应用程序,该应用程序包括指令序列,该指令序列包括多个指令,该多个指令包括对内存执行读操作或写操作的读写指令。
其中,该内存为执行该应用程序的计算设备的内存。例如,若该应用程序由该第二计算设备以外的第一计算设备执行,则该内存为第一计算设备的内存。该应用源程序为实现定制化功能的任一源码,应用程序为该应用源程序的编译结果,且目标类型的处理器能够识别和运行。
在一种可能的实现方式中,该应用源程序是针对支持非弱内存模型的处理器所开发出的应用源程序,其中,非若内存模型包括支持全局写一致性(total store ordering,TSO)模型,支持TSO模型的处理器中的所有内核(core)有且仅有一个全局的对内存执行读写操作的顺序。
该编译界面包括编译选项,该编译选项用于提供编译应用源程序的功能。第二用户对该编译选项进行选择操作,以实现对该应用源程序的编译操作,第二计算设备响应于在编译界面中对应用源程序的编译操作,采用为该处理器提供的指令集,对应用源程序进行编译,得到应用程序。
第二计算设备中的编译软件为该处理器提供的指令集包括通用指令集、第一扩展指令集和第二扩展指令集中的至少一种,其中,第一扩展指令集为上述的扩展指令集1,第二扩展指令集为上述的扩展指令集2。
当为该处理器提供的指令集包括通用指令集、第一扩展指令集以及第二扩展指令集中的有一种指令集时,第二计算设备响应于对该应用源程序的编译操作,采用为该处理器提供的一种指令集,对应用源程序进行编译,得到应用程序。
例如,当编译软件为处理器提供的指令集为通用指令集时,第二计算设备响应于对该应用源程序的编译操作,采用该通用指令集,对应用源程序进行编译,得到应用程序。此时,应用程序中的读指令由通用指令集中的通用内存读指令编译得到,应用程序中的写指令由通用指令集中的通用内存写指令编译得到。
再例如,当编译软件为处理器提供一种扩展指令集(第一扩展指令集或第二扩展指令集)时,第二计算设备响应于对该应用源程序的编译操作,采用该扩展指令集,对应用源程序进行编译,得到应用程序。此时,应用程序中的读指令由该扩展指令集中的扩展内存读指令编译得到,应用程序中的写指令由扩展指令集中的扩展内存写指令编译得到。
当为该处理器提供的指令集包括通用指令集、第一扩展指令集以及第二扩展指令集中的多种指令集时,由第二用户选择指令集,第二计算设备响应于对该应用源程序的编译操作,采用第二用户选择的指令集,对应用源程序进行编译,得到应用程序。例如下述3种情况:
第一种情况、当为该处理器提供的指令集包括通用指令集和一种扩展指令集时,该编译界面还包括指令集选项,该指令集选项用于提供扩展指令集。
若第二用户对该指令选项进行选择操作且对编译选项进行选择操作,第二计算设备响应于对该指令选项的选择操作以及对该编译选项的选择操作,采用该扩展指令集,对应用源程序进行编译,得到应用程序。其中,若该扩展指令集为第一扩展指令集,该应用程序中的读指令由第一扩展指令集中的扩展内存读指令编译得到,该应用程序中的写指令由第一扩展指令集中的扩展内存写指令编译得到。若该扩展指令集为第二扩展指令集,该应用程序中的读指令由第二扩展指令集中的扩展内存读指令编译得到,该应用程序中的写指令由第二扩展指令集中的第二扩展内存写指令编译得到。
或者,该编译界面中的指令集选项包括第一指令集选项和第二指令集选项,其中,第一指令集选项用于提供第一扩展指令集,第二指令集选项用于提供第二扩展指令集。若第二用户对该第一指令集选项进行选择操作且对编译选项进行选择操作,第二计算设备响应于对该第一指令集选项的选择操作以及对该编译选项的选择操作,采用第一扩展指令集,对应用源程序进行编译,得到应用程序。若第二用户对该第二指令集选项进行选择操作且对编译选项进行选择操作,第二计算设备响应于对该第二指令集选项的选择操作以及对该编译选项的选择操作,采用第二扩展指令集,对应用源程序进行编译,得到应用程序。
第二种情况、当为该处理器提供的指令集包括第一扩展指令集和第二扩展指令集时,该编译界面还包括第一指令集选项,而不包括第二指令集选项。
若第二用户对该第一指令集选项进行选择操作且对编译选项进行选择操作,第二计算设备响应于对该第一指令集选项的选择操作以及对该编译选项的选择操作,采用第一扩展指令集,对应用源程序进行编译,得到应用程序。
若第二用户不对该第一指令集选项进行选择操作,且对编译选项进行选择操作,第二计算设备响应于对该编译选项的选择操作,采用第二扩展指令集,对应用源程序进行编译,得到应用程序。
第三种情况、当为该处理器提供的指令集包括第一扩展指令集和第二扩展指令集时,该编译界面中指令集选项包括第一指令集选项和第二指令集选项。
若第二用户对该第一指令集选项进行选择操作且对编译选项进行选择操作,第二计算设备响应于对该第一指令集选项的选择操作以及对该编译选项的选择操作,采用第一扩展指令集,对应用源程序进行编译,得到应用程序。
若第二用户对该第二指令集选项进行选择操作且对编译选项进行选择操作,第二计算设备响应于对该第二指令集选项的选择操作以及对该编译选项的选择操作,采用第二扩展指令集,对应用源程序进行编译,得到应用程序。
203、第二计算设备向第一计算设备发送该应用程序。
需要说明的是,第二计算设备向第一计算设备发送一次应用程序即可,无需多次发送。
204、第一计算设备接收该应用程序。
当第一计算设备接收该应用程序后,第一计算设备存储该应用程序,例如将该应用程序存储在该第一计算设备的计算机可读存储介质内。若第一用户对第一计算设备下达对应用程序的部署命令后,第一计算设备响应于对应用程序的部署命令,对该应用程序进行部署,也可以理解为安装应用程序。
205、该第一计算设备的处理器获取应用程序的指令序列。
其中,该指令序列为该应用程序中的某一段指令序列,或者为该应用程序。
在一种可能的实现方式中,若第一用户向第一计算设备下达对该应用程序内该指令序列的执行命令,第一计算设备响应于对该指令序列的执行命令,获取该应用程序内的该指令序列。
其中,若该指令序列为该应用程序中的某一段指令序列,该指令序列用于实现该应用程序的至少一个功能,第一用户在第一计算设备上打开该至少一个功能的操作,也即是向第一计算设备下达的执行命令。若该指令序列为整个该应用程序,第一用户在第一计算设备上打开该应用程序的操作,也即是向第一计算设备下达的执行命令。
该指令序列包括按序排列的多个指令,例如,指令序列包括100个指令,这100个指令按照从1-100的顺序依次排序。
相应地,第一计算设备在获取该指令序列时,也是按序获取的。仍以指令序列包括100个指令为例,第一计算设备先获取这100个指令的中的第一个指令,然后再获取100个指令中的第二个指令,以此类推,直至获取到这100个指令中的最后一个指令。
或者也可以理解为,处理器依次读取该指令序列中的各个指令,得到读取到的指令序列。仍以指令序列包括100个指令为例,第一计算设备先读取这100个指令的中的第一个指令,再读取100个指令中的第二个指令,以此类推,直至读取到这100个指令中的最后一个指令,读取到的100个指令组成指令序列。
206、该处理器根据该指令序列识别读写指令的执行顺序。
当处理器获取到该指令序列后,依次识别该指令序列中的多个指令,为了便于描述,以识别该多个指令中的一个指令为例,对本步骤206进行如下介绍:
该处理器的每种指令集中的每个内存读写指令分别对应一个编码格式,应用程序内的一个读写指令由该指令集中一种内存读写指令所对应的编码格式编码得到。
该处理器在识别多个指令中的某个指令是否为读写指令时,确定该指令中各个字符的排序是否读写指令所对应的编码格式,若符合,则将该指令识别为读写指令,若不符合,则不将该指令识别为读写指令。
当该指令被识别为读写指令中的读指令时,该处理器根据读指令对应的编码格式,对该指令进行解析,以从该指令中解析出操作数,基于解析出的操作数,确定目的寄存器的地址以及内存中的源存储地址,此时,目的寄存器为用于存储待读取数据的寄存器,源存储地址为内存中存储有待读取数据的地址。
当该指令被识别为读写指令中的写指令时,该处理器根据写指令对应的编码格式,对该指令进行解析,以从该指令中解析出操作数,基于解析出的操作数,确定源寄存器的地址以及内存中的目的存储地址,此时,源寄存器为用于存储待写入数据的寄存器,目的存储地址为内存中待写入数据的存储地址。
处理器在识别出任一读写指令后,该处理器将该读写指令在该指令序列中的排列顺序识别为该读写指令的执行顺序。在一种可能的实现方式中,该处理器工作在顺序内存访问模式下,其中,顺序内存访问模式为处理器访问内存的一种工作模式,该顺序内存访问模式也称为“ordered”模式。顺序内存访问模式要求读写指令的执行顺序与读写指令在指令序列中的排列顺序一致,则处理器在识别出某个读写指令后,按照顺序内存访问模式,将该读写指令在该指令序列中的排列顺序识别为该读写指令的执行顺序。
处理器从指令序列中的第一个指令开始,依次识别并解析该指令序列中的各个指令,因此,该指令序列中每个指令的识别顺序和解码顺序均是对应指令在该指令序列中的排列顺序,则处理器在根据该指令序列识别每个读写指令的执行顺序时,将每个读写指令的识别顺序或者解码顺序识别为对应读写指令的执行顺序。
在一种可能的实现方式中,处理器在识别出任一读写指令后,还为该读写指令分配寄存器,以便后续在执行该读写指令时,能够基于分配的寄存器,对内存执行读写操作。
例如,当处理器识别出对内存执行读操作的读指令后,处理器基于解析出的目的寄存器的地址,查询该目的寄存器是否处于空闲状态,若该目的寄存器处于空闲状态,则该处理器将该目的寄存器分配给该读指令对应的读操作。若该目的寄存器未处于空闲状态,则该处理器将处于空闲状态的其他寄存器作为目的寄存器,分配给该读指令对应的读操作。
再例如,当处理器识别出对内存的写操作的写指令后,处理器基于解析出的源寄存器的地址,查询该源寄存器是否处于空闲状态,若该源寄存器处于空闲状态,则该处理器将该源寄存器分配给该写指令对应的写操作。若该源寄存器未处于空闲状态,则该处理器将处于空闲状态的其他寄存器作为源寄存器,分配给该写指令对应的写操作。
207、该处理器按照读写指令的执行顺序执行读写指令。
由于读写指令的执行顺序为该读写指令在指令序列中的排列顺序,则该处理器在按照读写指令的执行顺序执行读写指令时,先执行指令序列中排列顺序位于该读写指令之前的指令,再执行该读写指令,然后再执行指令序列中排列顺序位于该读写指令之后的指令,从而实现按序执行该指令序列中的读写指令,以保证处理器访问内存的一致性。
若该应用程序的应用源程序是针对支持非弱内存模型的处理器所开发出的,则该应用程序中的读写指令的排列满足非弱内存模型对读写指令的执行顺序的要求。若该应用程序由支持非弱内存模型的处理器执行时,不交换应用程序中读写指令的执行顺序,从而对内存的读写操作保持内存一致性,因此,若要该应用程序能够被正常运行,则需要对内存的读写操作保持内存一致性。但该第一计算设备的处理器支持执行应用程序时对内存的访问次序与该应用程序中读写指令的排列顺序不一致,在相关技术中,第一计算设备的处理器在执行该应用程序时,可能会交换该应用程序中读写指令的执行顺序,从而出现内存一致性问题,导致该应用程序无法正常运行。而在本申请实施例中,该第一计算设备的处理器将该读写指令在该指令序列中的排列顺序识别为该读写指令的执行顺序,按序执行该指令序列中的读写指令,从而能够避免出现内存一致性问题,使得应用程序能够被正常运行。
处理器在执行识别出的某个读指令时,基于为对应读操作分配的目的寄存器,来对内存进行读操作。例如,处理器基于为对应读操作分配的目的寄存器的地址以及从该读指令中解析出的源存储地址,从该源存储地址读取数据,并将读取到的数据存储至该目的寄存器,以对该内存的源存储地址进行读操作。
处理器在执行识别出的任一写指令时,基于为对应写操作分配的源寄存器,来对内存进行写操作。例如,处理器基于为对应写操作分配的源寄存器的地址以及从该写指令中解析出的内存中的目的存储地址,从该源寄存器获取数据,并将获取到的数据存储至目的存储地址,以对该内存的目的存储地址进行写操作。
本申请实施例提供的方法,通过处理器获取应用程序的指令序列,根据该指令序列中识别出指令序列中读写指令的执行顺序,按照识别出的执行顺序执行读写指令,以访问该计算设备中的内存,使得该处理器能够正常执行该应用程序,相应地,减少应用程序出现随机崩溃、重启或产生错误执行结果等不良情况的发生,增加对该处理器的可信度,以进一步提高该处理器的商誉及市场销售。
为了进一步说明上述步骤204-207所示的过程,参见图3所示的本申请实施例提供的一种处理器的数据处理过程的示意图。该过程包括下述步骤301-306。
301、第二计算设备采用编译软件,对应用源程序进行编译,得到第一计算设备的处理器所能执行的应用程序。
302、第一计算设备在获取到应用程序后,第一计算设备的处理器从应用程序获取指令(instruction fetch)。
例如,处理器按照应用程序内指令的排列顺序,顺序读取该应用程序中的多个指令。
303、处理器对多个指令进行解码(decode)。
在一种可能的实现方式中,该处理器包括内核以及解码器,内核将多个指令传输至解码器,由解码器对该多个指令进行解码。
例如,解码器识别出该多个指令中的读指令和写指令。解码器从读指令中解析出源存储地址以及目的寄存器的地址,将源存储地址以及目的寄存器的地址作为读指令的解析结果。若该读指令还包括读微操作,则解码器还能从该读指令中解析出读微操作,将源存储地址、目的寄存器的地址以及读微操作。其中,读微操作为辅助完成对内存的读操作的操作,例如数据校验等操作。
解码器从写指令中解析出源寄存器的地址以及目的存储地址,将源寄存器的地址以及目的存储地址作为写指令的解析结果。若该写指令还包括写微操作,则解码器还能从该写指令中解析出写微操作,将源寄存器的地址、目的存储地址以及写微操作作为该写指令的解码结果。其中,写微操作为辅助完成对内存的写操作的操作,例如数据校验等操作。
当解码器获取到多个指令的解析结果后,向内核发送返回多个指令的解析结果。
304、处理器根据读写指令的解析结果,为对应的读写操作分配寄存器。
当处理器的内核接收到读指令的解析结果后,处理器的内核从该读指令的解析结果中,获取目的寄存器的地址,并查询该目的寄存器是否处于空闲状态,若该目的寄存器处于空闲状态,则该处理器将该目的寄存器分配给该读指令对应的读操作。若该目的寄存器未处于空闲状态,则该处理器将处于空闲状态的其他寄存器作为目的寄存器,并将该其他寄存器分配给该读指令对应的读操作,以实现寄存器重命名(register rename)。
当处理器的内核接收到写指令的解析结果后,处理器的内核从该写指令的解析结果中,获取源寄存器的地址,并查询该源寄存器是否处于空闲状态,若该源寄存器处于空闲状态,则该处理器将该源寄存器分配给该写指令对应的写操作。若该源寄存器未处于空闲状态,则该处理器将处于空闲状态的其他寄存器作为源寄存器,并将该其他寄存器分配给该写指令对应的写操作,以实现寄存器重命名。
305、该处理器的内核将读操作和写操作下发(dispatch)至内存读写单元。
在一种可能的实现方式中,该处理器还包括内存读写单元(load&store unit,LSU),该内存读写单元用于处理对内存的读写操作。处理器的内核在为读指令和写指令分配完寄存器后,将该读指令所指示的读操作和写指令所指示的写操作下发给LSU。若读操作还包括读微操作,写操作还包括写微操作,则内核还将读指令的解析结果中的读微操作以及写指令的解析结果中的写操作,下发给LSU。
306、内存读写单元采用顺序内存访问模式(ordered),执行该读操作以及该写操作。
在一种可能的实现方式中,内存读写单元在采用顺序内存访问模式,对内存进行读操作或写操作时,通过回写(write back)方式,对内存进行读操作或写操作。当然,内存读写单元也可以采用其他的方式,对内存进行读操作和写操作。
本申请实施例提供的方法,通过处理器获取应用程序的指令序列,采用顺序内存访问模式执行指令序列中的读写指令,以访问该计算设备中的内存,从而能够避免出现内存一致性问题,使得该处理器能够正常执行该应用程序,相应地,减少应用程序出现随机崩溃、重启或产生错误执行结果等不良情况的发生,增加对该处理器的可信度,以进一步提高该处理器的商誉及市场销售。
需要说明的是,上述图2和图3所示的数据处理过程,均是以第二计算设备编译应用源程序,由第一计算设备执行第二计算设备编译出的应用程序为例进行说明的,而在另一种可能的实现方式中,应用源程序无须第二计算设备编译,而是由第一计算设备编译,并由第一计算设备执行编译出的应用程序。对于这种情况,则由第一计算设备执行上述步骤201-204以及205-207。
以上结合图1至图3介绍了本申请所提供的数据处理方法,接下来,以图4至图5为例介绍本申请实施例的装置和计算设备。
参见图4,本申请实施例提供了一种数据处理装置400的结构示意图,数据处理装置400被配置为计算设备的处理器,所述处理器支持执行应用程序时对内存的访问次序与所述应用程序中读写指令的排列顺序不一致,其中,所述读写指令为对内存的读写操作的指令,所述装置400包括:
获取模块401,用于获取应用程序的指令序列,所述指令序列包括多个指令,所述多个指令包括对所述计算设备的内存执行读操作或写操作的读写指令,所述应用程序部署在所述计算设备中;
识别模块402,用于根据所述指令序列识别所述读写指令的执行顺序;
执行模块403,用于按照所述执行顺序执行所述读写指令。
在一种可能的实现方式中,所述识别模块402用于:
将所述读写指令在所述指令序列中的排列顺序识别为所述读写指令的执行顺序。
在另一种可能的实现方式中,所述识别模块402用于:
按照顺序内存访问模式,将所述读写指令在所述指令序列中的排列顺序识别为所述读写指令的执行顺序,所述顺序内存访问模式要求所述读写指令的执行顺序与所述读写指令在所述指令序列中的排列顺序一致。
在另一种可能的实现方式中,所述读写指令包括对所述内存执行读操作的读指令或对所述内存执行的写操作的写指令,所述读指令具有第一语义,所述写指令具有第二语义;
其中,所述第一语义用于指示所述指令序列中的第一指令在所述读指令执行之后执行,所述第二语义用于指示所述指令序列中的第二指令在所述写指令执行完成前执行,所述第一指令在所述指令序列中的排列顺序位于所述读指令之后,所述第二指令在所述指令序列中的排列顺序位于所述写指令之前。
在另一种可能的实现方式中,所述读指令基于扩展内存读指令编译得到,所述扩展内存读指令具有所述第一语义,所述扩展内存读指令是在所述处理器的指令集中增加的用于指示读取内存数据的指令;
所述写指令基于扩展内存写指令编译得到,所述扩展内存写指令具有所述第二语义,所述扩展内存写指令为在所述指令集中增加的用于指示写入内存数据的指令。
在另一种可能的实现方式中,所述扩展内存读指令包括第一扩展内存读指令、第二扩展内存读指令、第三扩展内存读指令以及第四扩展内存读指令中的至少一种,所述扩展内存写指令包括第一扩展内存写指令以及第二扩展内存写指令中的至少一种;其中,所述第一扩展内存读指令、所述第二扩展内存读指令以及所述第一扩展内存写指令所支持的寻址方式均不包括非缩放的立即数寻址方式,所述第三扩展内存读指令、所述第四扩展内存读指令以及所述第二扩展内存写指令均支持所述非缩放的立即数寻址方式;
所述第一扩展内存读指令,用于指示基于支持的寻址方式确定所述内存中的存储地址,将所述确定出的存储地址中第一字节数的数据读取至第一目的寄存器;
所述第二扩展内存读指令,用于指示基于支持的寻址方式确定所述内存中的存储地址,将所述确定出的存储地址中第二字节数的数据读取至第二目的寄存器,采用读取的数据的符号位填充所述第二目的寄存器的剩余位;
所述第三扩展内存读指令,用于指示基于非缩放的立即数寻址方式确定所述内存中的存储地址,将确定出的存储地址中第一字节数的数据读取至第三目的寄存器;
所述第四扩展内存读指令,用于指示基于非缩放的立即数寻址方式确定所述内存中的存储地址,将确定出的存储地址中第二字节数的数据读取至第四目的寄存器,采用读取的数据的符号位填充所述第四目的寄存器的剩余位;
所述第一扩展内存写指令,用于指示基于支持的寻址方式确定所述内存中的存储地址,将第一源寄存器中第三字节数的数据写入确定出的存储地址;
所述第二扩展内存写指令,用于指示基于所述非缩放的立即数寻址方式确定所述内存中的存储地址,将第二源寄存器中的第三字节数的数据写入确定出的存储地址。
在一种可能的实现方式中,所述第一字节数包括1字节、2字节、4字节或8字节,所述第二字节数包括1字节、2字节或4字节,所述第三字节数包括1字节、2字节、4字节或8字节;
所述第一扩展内存读指令、所述第二扩展内存读指令以及所述第一扩展内存写指令所支持的寻址方式包括缩放的立即数寻址方式、标签寻址方式或寄存器寻址方式,所述缩放的立即数寻址方式进行地址偏移时所采用的立即数为对应指令中缩放后的操作数;
所述非缩放的立即数寻址方式进行地址偏移时所采用的立即数为对应指令中的操作数,且操作数的取值范围为-256至256。
在另一种可能的实现方式中,所述读指令基于扩展内存读指令编译得到,所述扩展内存读指令是所述处理器的指令集中的通用内存读指令增加所述第一语义后得到的指令;
所述写操作的指令基于扩展内存写指令编译得到,所述扩展内存写指令是所述指令集中的通用内存写指令增加所述第二语义后得到的指令。
在另一种可能的实现方式中,所述读写指令包括对所述内存执行的读操作的读指令或对所述内存执行的写操作的写指令,所述读指令基于所述处理器的指令集中的通用内存读指令编译得到,所述写指令基于所述处理器的指令集中的通用内存写指令编译得到。
应理解,数据处理装置400对应于上述方法实施例中第一计算设备的处理器,数据处理装置400中的各模块和上述其他操作和/或功能分别为了实现方法实施例中的处理器所实施的各种步骤和方法,具体细节可参见上述方法实施例,为了简洁,在此不再赘述。另外,数据处理装置400在处理数据时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将数据处理装置400的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的装置400与上述方法实施例属于同一构思,其具体实现过程详见上述方法实施例,这里不再赘述。
图5是本申请实施例提供的一种计算设备500的结构示意图。应理解,以下介绍的装置可以实现上述任一方法中第一计算设备的任意功能。
可选地,图5所示的计算设备500被配置为上文所述第一计算设备,该计算设备500包括至少一个处理器501、通信总线502、存储器503以及至少一个通信接口504。
处理器501可以是一个通用中央处理器(central processing unit,CPU)、网络处理器(Network Processor,NP)、微处理器、微控制器(microcontroller unit,MCU)、数字信号处理器(digital signal processing,DSP)、或人工智能处理器等各类运行软件的计算设备,每种计算设备可包括一个或多个用于执行软件指令以进行运算或处理的核。该处理器可以内置于片上系统(system on chip,SoC)、或者可以是一个或多个用于实现本申请方案的集成电路,例如,专用集成电路(application-specific integrated circuit,ASIC),可编程逻辑器件(programmable logic device,PLD)或其组合。上述PLD可以是复杂可编程逻辑器件(complex programmable logic device,CPLD),现场可编程逻辑门阵列(field-programmable gate array,FPGA),通用阵列逻辑(generic array logic,GAL)或其任意组合。
通信总线502用于在上述组件之间传送信息。通信总线502可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
存储器503可以包括只读存储器和随机存取存储器,并向处理器501提供指令和数据。存储器503还可以包括非易失性随机存取存储器。例如,存储器503还可以存储设备类型的信息。
存储器503可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-only memory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(random access memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double data date SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(direct rambus RAM,DR RAM)。
存储器503可以是独立存在,并通过通信总线502与处理器501相连接。存储器503也可以和处理器501集成在一起。
通信接口504使用任何收发器一类的装置,用于与其它设备或通信网络通信。通信接口504包括有线通信接口,还可以包括无线通信接口。其中,有线通信接口例如可以为以太网接口。以太网接口可以是光接口,电接口或其组合。无线通信接口可以为无线局域网(wireless local area networks,WLAN)接口,蜂窝网络通信接口或其组合等。
在具体实现中,作为一种实施例,处理器501可以包括一个或多个CPU,如图5中所示的CPU0和CPU1。
在具体实现中,作为一种实施例,计算设备可以包括多个处理器,如图5中所示的处理器501和处理器505。这些处理器中的每一个可以是一个单核处理器(single-CPU),也可以是一个多核处理器(multi-CPU)。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(如计算机程序指令)的处理核。
在具体实现中,作为一种实施例,计算设备还可以包括输出设备506和输入设备507。输出设备506和处理器501通信,可以以多种方式来显示信息。例如,输出设备506可以是液晶显示器(liquid crystal display,LCD)、发光二级管(light emitting diode,LED)显示设备、阴极射线管(cathode ray tube,CRT)显示设备或投影仪(projector)等。输入设备507和处理器501通信,可以以多种方式接收用户的输入。例如,输入设备508可以是PCIE设备、鼠标、键盘、触摸屏设备或传感设备等。
在一些实施例中,存储器503用于存储执行本申请方案的程序代码710,处理器501可以执行存储器503中存储的程序代码710,来实现上文的数据处理方法。在另一些实施例中,基于处理器501的硬件结构,处理器501能够实现上文的数据处理方法。
在示例性实施例中,还提供了一种计算机可读存储介质,例如包括至少一条程序代码的存储器,上述至少一条程序代码可由计算设备中的处理器执行以完成上述实施例中的数据处理方法。例如,该计算机可读存储介质是非临时计算机可读存储介质,如只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、只读光盘(compact disc read-only memory,CD-ROM)、磁带、软盘和光数据存储设备等。
本申请实施例还提供了一种计算机程序产品,该计算机程序产品包括至少一条程序代码,该至少一条程序代码存储在计算机可读存储介质中,计算设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得处理器执行上述数据处理方法。
其中,本实施例提供的装置、设备、计算机可读存储介质、计算机程序产品均用于执行上文所提供的对应的方法,因此,其所能达到的有益效果可参考上文所提供的对应的方法中的有益效果,此处不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
上述实施例,可以全部或部分地通过软件、硬件、固件或其他任意组合来实现。当使用软件实现时,上述实施例可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令(如程序代码)。在计算机上加载或执行所述计算机指令时,全部或部分地产生按照本发明本申请实施例所述的流程或功能。所述计算机可以为通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集合的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质。半导体介质可以是固态硬盘(solid state disk,SSD)。
以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (20)
1.一种数据处理方法,其特征在于,所述方法由计算设备的处理器执行,所述方法包括:
获取应用程序的指令序列,所述指令序列包括多个指令,所述多个指令包括对所述计算设备的内存执行读操作或写操作的读写指令,所述应用程序部署在所述计算设备中;
根据所述指令序列识别所述读写指令的执行顺序;
按照所述执行顺序执行所述读写指令。
2.根据权利要求1所述的方法,其特征在于,所述根据所述指令序列识别所述读写指令的执行顺序,包括:
将所述读写指令在所述指令序列中的排列顺序识别为所述读写指令的执行顺序。
3.根据权利要求2所述的方法,其特征在于,所述将所述读写指令在所述指令序列中的排列顺序识别为所述读写指令的执行顺序,包括:
按照顺序内存访问模式,将所述读写指令在所述指令序列中的排列顺序识别为所述读写指令的执行顺序,所述顺序内存访问模式要求所述读写指令的执行顺序与所述读写指令在所述指令序列中的排列顺序一致。
4.根据权利要求1-3中任一项所述的方法,其特征在于,所述读写指令包括对所述内存执行读操作的读指令或对所述内存执行的写操作的写指令,所述读指令具有第一语义,所述写指令具有第二语义;
其中,所述第一语义用于指示所述指令序列中的第一指令在所述读指令执行之后执行,所述第二语义用于指示所述指令序列中的第二指令在所述写指令执行完成前执行,所述第一指令在所述指令序列中的排列顺序位于所述读指令之后,所述第二指令在所述指令序列中的排列顺序位于所述写指令之前。
5.根据权利要求4所述的方法,其特征在于,所述读指令基于扩展内存读指令编译得到,所述扩展内存读指令具有所述第一语义,所述扩展内存读指令是在所述处理器的指令集中增加的用于指示读取内存数据的指令;
所述写指令基于扩展内存写指令编译得到,所述扩展内存写指令具有所述第二语义,所述扩展内存写指令为在所述指令集中增加的用于指示写入内存数据的指令。
6.根据权利要求5所述的方法,其特征在于,所述扩展内存读指令包括第一扩展内存读指令、第二扩展内存读指令、第三扩展内存读指令以及第四扩展内存读指令中的至少一种,所述扩展内存写指令包括第一扩展内存写指令以及第二扩展内存写指令中的至少一种;
其中,所述第一扩展内存读指令、所述第二扩展内存读指令以及所述第一扩展内存写指令所支持的寻址方式均不包括非缩放的立即数寻址方式,所述第三扩展内存读指令、所述第四扩展内存读指令以及所述第二扩展内存写指令均支持所述非缩放的立即数寻址方式;
所述第一扩展内存读指令,用于指示基于支持的寻址方式确定所述内存中的存储地址,将确定出的存储地址中第一字节数的数据读取至第一目的寄存器;
所述第二扩展内存读指令,用于指示基于支持的寻址方式确定所述内存中的存储地址,将确定出的存储地址中第二字节数的数据读取至第二目的寄存器,采用读取的数据的符号位填充所述第二目的寄存器的剩余位;
所述第三扩展内存读指令,用于指示基于所述非缩放的立即数寻址方式确定所述内存中的存储地址,将确定出的存储地址中第一字节数的数据读取至第三目的寄存器;
所述第四扩展内存读指令,用于指示基于所述非缩放的立即数寻址方式确定所述内存中的存储地址,将确定出的存储地址中第二字节数的数据读取至第四目的寄存器,采用读取的数据的符号位填充所述第四目的寄存器的剩余位;
所述第一扩展内存写指令,用于指示基于支持的寻址方式确定所述内存中的存储地址,将第一源寄存器中第三字节数的数据写入确定出的存储地址;
所述第二扩展内存写指令,用于指示基于所述非缩放的立即数寻址方式确定所述内存中的存储地址,将第二源寄存器中的第三字节数的数据写入确定出的存储地址。
7.根据权利要求6所述的方法,其特征在于,所述第一字节数包括1字节、2字节、4字节或8字节,所述第二字节数包括1字节、2字节或4字节,所述第三字节数包括1字节、2字节、4字节或8字节;
所述第一扩展内存读指令、所述第二扩展内存读指令以及所述第一扩展内存写指令所支持的寻址方式包括缩放的立即数寻址方式、标签寻址方式或寄存器寻址方式,所述缩放的立即数寻址方式进行地址偏移时所采用的立即数为对应指令中缩放后的操作数;
所述非缩放的立即数寻址方式进行地址偏移时所采用的立即数为对应指令中的操作数,且操作数的取值范围为-256至256。
8.根据权利要求4所述的方法,其特征在于,所述读指令基于扩展内存读指令编译得到,所述扩展内存读指令是所述处理器的指令集中的通用内存读指令增加所述第一语义后得到的指令;
所述写指令基于扩展内存写指令编译得到,所述扩展内存写指令是所述指令集中的通用内存写指令增加所述第二语义后得到的指令。
9.根据权利要求1-3中任一项所述的方法,其特征在于,所述读写指令包括对所述内存执行读操作的读指令或对所述内存执行写操作的写指令,所述读指令基于所述处理器的指令集中的通用内存读指令编译得到,所述写指令基于所述处理器的指令集中的通用内存写指令编译得到。
10.一种数据处理装置,其特征在于,所述装置被配置为计算设备的处理器,所述装置包括:
获取模块,用于获取应用程序的指令序列,所述指令序列包括多个指令,所述多个指令包括对所述计算设备的内存执行读操作或写操作的读写指令,所述应用程序部署在所述计算设备中;
识别模块,用于根据所述指令序列识别所述读写指令的执行顺序;
执行模块,用于按照所述执行顺序执行所述读写指令。
11.根据权利要求10所述的装置,其特征在于,所述识别模块用于:
将所述读写指令在所述指令序列中的排列顺序识别为所述读写指令的执行顺序。
12.根据权利要求11所述的装置,其特征在于,所述识别模块用于:
按照顺序内存访问模式,将所述读写指令在所述指令序列中的排列顺序识别为所述读写指令的执行顺序,所述顺序内存访问模式要求所述读写指令的执行顺序与所述读写指令在所述指令序列中的排列顺序一致。
13.根据权利要求10-12中任一项所述的装置,其特征在于,所述读写指令包括对所述内存执行读操作的读指令或对所述内存执行写操作的写指令,所述读指令具有第一语义,所述写指令具有第二语义;
其中,所述第一语义用于指示所述指令序列中的第一指令在所述读指令执行之后执行,所述第二语义用于指示所述指令序列中的第二指令在所述写指令执行完成前执行,所述第一指令在所述指令序列中的排列顺序位于所述读指令之后,所述第二指令在所述指令序列中的排列顺序位于所述写指令之前。
14.根据权利要求13所述的装置,其特征在于,所述读指令基于扩展内存读指令编译得到,所述扩展内存读指令具有所述第一语义,所述扩展内存读指令是在所述处理器的指令集中增加的用于指示读取内存数据的指令;
所述写指令基于扩展内存写指令编译得到,所述扩展内存写指令具有所述第二语义,所述扩展内存写指令为在所述指令集中增加的用于指示写入内存数据的指令。
15.根据权利要求14所述的装置,其特征在于,所述扩展内存读指令包括第一扩展内存读指令、第二扩展内存读指令、第三扩展内存读指令以及第四扩展内存读指令中的至少一种,所述扩展内存写指令包括第一扩展内存写指令以及第二扩展内存写指令中的至少一种;
其中,所述第一扩展内存读指令、所述第二扩展内存读指令以及所述第一扩展内存写指令所支持的寻址方式均不包括非缩放的立即数寻址方式,所述第三扩展内存读指令、所述第四扩展内存读指令以及所述第二扩展内存写指令均支持所述非缩放的立即数寻址方式;
所述第一扩展内存读指令,用于指示基于支持的寻址方式确定所述内存中的存储地址,将确定出的存储地址中第一字节数的数据读取至第一目的寄存器;
所述第二扩展内存读指令,用于指示基于支持的寻址方式确定所述内存中的存储地址,将确定出的存储地址中第二字节数的数据读取至第二目的寄存器,采用读取的数据的符号位填充所述第二目的寄存器的剩余位;
所述第三扩展内存读指令,用于指示基于所述非缩放的立即数寻址方式确定所述内存中的存储地址,将确定出的存储地址中第一字节数的数据读取至第三目的寄存器;
所述第四扩展内存读指令,用于指示基于所述非缩放的立即数寻址方式确定所述内存中的存储地址,将确定出的存储地址中第二字节数的数据读取至第四目的寄存器,采用读取的数据的符号位填充所述第四目的寄存器的剩余位;
所述第一扩展内存写指令,用于指示基于支持的寻址方式确定所述内存中的存储地址,将第一源寄存器中第三字节数的数据写入确定出的存储地址;
所述第二扩展内存写指令,用于指示基于所述非缩放的立即数寻址方式确定所述内存中的存储地址,将第二源寄存器中的第三字节数的数据写入确定出的存储地址。
16.根据权利要求15所述的装置,其特征在于,所述第一字节数包括1字节、2字节、4字节或8字节,所述第二字节数包括1字节、2字节或4字节,所述第三字节数包括1字节、2字节、4字节或8字节;
所述第一扩展内存读指令、所述第二扩展内存读指令以及所述第一扩展内存写指令所支持的寻址方式包括缩放的立即数寻址方式、标签寻址方式或寄存器寻址方式,所述缩放的立即数寻址方式进行地址偏移时所采用的立即数为对应指令中缩放后的操作数;
所述非缩放的立即数寻址方式进行地址偏移时所采用的立即数为对应指令中的操作数,且操作数的取值范围为-256至256。
17.根据权利要求13所述的装置,其特征在于,所述读指令基于扩展内存读指令编译得到,所述扩展内存读指令是所述处理器的指令集中的通用内存读指令增加所述第一语义后得到的指令;
所述写操作的指令基于扩展内存写指令编译得到,所述扩展内存写指令是所述指令集中的通用内存写指令增加所述第二语义后得到的指令。
18.根据权利要求10-12中任一项所述的装置,其特征在于,所述读写指令包括对所述内存执行读操作的读指令或对所述内存执行写操作的写指令,所述读指令基于所述处理器的指令集中的通用内存读指令编译得到,所述写指令基于所述处理器的指令集中的通用内存写指令编译得到。
19.一种计算设备,其特征在于,所述计算设备包括处理器,所述处理器用于执行如权利要求1至权利要求9中任一项所述的方法。
20.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条程序代码,所述至少一条程序代码由计算设备中的处理器读取,以使所处处理器执行如权利要求1至权利要求9中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2022/138259 WO2023104211A1 (zh) | 2021-12-10 | 2022-12-11 | 数据处理方法、装置、系统、计算设备以及存储介质 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2021115062848 | 2021-12-10 | ||
CN202111506284 | 2021-12-10 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116257173A true CN116257173A (zh) | 2023-06-13 |
Family
ID=86683127
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210238254.1A Pending CN116257173A (zh) | 2021-12-10 | 2022-03-11 | 数据处理方法、装置、系统、计算设备以及存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN116257173A (zh) |
WO (1) | WO2023104211A1 (zh) |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6370632B1 (en) * | 1997-11-18 | 2002-04-09 | Intrinsity, Inc. | Method and apparatus that enforces a regional memory model in hierarchical memory systems |
US10073784B2 (en) * | 2014-06-27 | 2018-09-11 | International Business Machines Corporation | Memory performance when speculation control is enabled, and instruction therefor |
US10528471B2 (en) * | 2016-12-27 | 2020-01-07 | Eta Scale Ab | System and method for self-invalidation, self-downgrade cachecoherence protocols |
CN113742252B (zh) * | 2020-05-28 | 2024-03-29 | 华为技术有限公司 | 一种检测内存乱序的方法及装置 |
-
2022
- 2022-03-11 CN CN202210238254.1A patent/CN116257173A/zh active Pending
- 2022-12-11 WO PCT/CN2022/138259 patent/WO2023104211A1/zh active Application Filing
Also Published As
Publication number | Publication date |
---|---|
WO2023104211A1 (zh) | 2023-06-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9720708B2 (en) | Data layout transformation for workload distribution | |
CN108885551B (zh) | 存储器复制指令、处理器、方法和系统 | |
US8533695B2 (en) | Compile-time bounds checking for user-defined types | |
US8555260B1 (en) | Direct hardware processing of internal data structure fields | |
US9424009B2 (en) | Handling pointers in program code in a system that supports multiple address spaces | |
US20160196112A1 (en) | Software Development Tool | |
US20150227366A1 (en) | Processor with granular add immediates capability & methods | |
US20070038984A1 (en) | Methods for generating code for an architecture encoding an extended register specification | |
KR20140091747A (ko) | 트랜잭션을 지원하는 컴퓨터 아키텍처에서 코드 특수화에 대한 예외를 사용하는 방법 및 시스템 | |
US20120239911A1 (en) | Value check instruction for processing vectors | |
US20130152048A1 (en) | Test method, processing device, test program generation method and test program generator | |
US20160147517A1 (en) | Method and computer program product for disassembling a mixed machine code | |
EP4231138A1 (en) | Method and apparatus for fixing weak memory ordering problem | |
CN111666210A (zh) | 一种芯片验证方法及装置 | |
CN112631657A (zh) | 用于字符串处理的字节比较方法以及指令处理装置 | |
US8949777B2 (en) | Methods and systems for mapping a function pointer to the device code | |
US9817763B2 (en) | Method of establishing pre-fetch control information from an executable code and an associated NVM controller, a device, a processor system and computer program products | |
WO2007070578A1 (en) | Partitioning of non-volatile memories for vectorization | |
CN107729118A (zh) | 面向众核处理器的修改Java虚拟机的方法 | |
US8438549B1 (en) | Data processing with microcode designed with source coding | |
CN116257173A (zh) | 数据处理方法、装置、系统、计算设备以及存储介质 | |
Lyu et al. | A procedure-based dynamic software update | |
AU2022226485A1 (en) | Hybrid just in time load module compiler with performance optimizations | |
CN117130721B (zh) | WebAssembly代码的执行方法及装置 | |
US20240231864A9 (en) | Hybrid just in time load module compiler with performance optimizations |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |