CN114327815A - 原子性保持方法、处理器及电子设备 - Google Patents

原子性保持方法、处理器及电子设备 Download PDF

Info

Publication number
CN114327815A
CN114327815A CN202111507703.XA CN202111507703A CN114327815A CN 114327815 A CN114327815 A CN 114327815A CN 202111507703 A CN202111507703 A CN 202111507703A CN 114327815 A CN114327815 A CN 114327815A
Authority
CN
China
Prior art keywords
memory access
access operations
operations
instruction
event
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
Application number
CN202111507703.XA
Other languages
English (en)
Inventor
汪文祥
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Loongson Technology Corp Ltd
Original Assignee
Loongson Technology Corp Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Loongson Technology Corp Ltd filed Critical Loongson Technology Corp Ltd
Priority to CN202111507703.XA priority Critical patent/CN114327815A/zh
Publication of CN114327815A publication Critical patent/CN114327815A/zh
Priority to CA3240485A priority patent/CA3240485A1/en
Priority to PCT/CN2022/137510 priority patent/WO2023104146A1/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Complex Calculations (AREA)

Abstract

本申请提供了一种原子性保持方法、处理器及电子设备,所述方法包括:根据向量访存指令生成N个访存操作,N为大于等于1的正整数;检查所述N个访存操作在处理过程中是否存在导致所述向量访存指令不具备原子性的事件;处理所述N个访存操作;在存在所述事件的情况下,所述N个访存操作中任一访存操作的处理都不产生任何处理效果,或者所述N个访存操作产生全部处理效果。本申请可以实现向量指令原子性的保持。

Description

原子性保持方法、处理器及电子设备
技术领域
本申请涉及计算机技术领域,特别是涉及一种原子性保持方法、处理器及电子设备。
背景技术
指令的原子性是指一条指令从开始执行到结束执行的过程不会被中断的特性,例如,以指令A为例,若指令A具备原子性,那么指令A一旦开始执行,就不会受到如中断事件或例外事件等事件的影响而暂停指令的执行,直至指令A执行完毕。
而在指令执行过程中,通常会受到如中断事件或例外事件等事件的影响而导致指令暂停执行,例如,以指令B为例,若指令B不具备原子性,那么指令B执行过程中,当CPU同时检测到中断事件时,将可能暂停指令B的执行,转而优先执行该中断事件,待中断事件执行完毕后,再返回继续执行指令B。由于受到如中断事件或例外事件等的影响,会导致指令的原子性无法保持。
现有技术针对任意一条向量指令的处理中,处理器内部单条指令中存在多个相同或类似的操作;而从软件开发人员角度看来,单条向量指令是CPU的最小操作单元,即单条向量指令应当具有原子性。因此,处理器设计要保障向量指令执行的原子性。
在实际应用中,处理器对一条向量指令拆分得到的多个操作是并发执行,而为了提高指令执行效率所设计的并发执行机制为向量指令原子性的保持带来了挑战。此外,指令系统中还包括栅障指令,其用于隔离栅障指令前后的访存操作;而在处理器内部,栅障指令与其他向量指令拆分得到的多个操作也是并发处理。上述诸多因素为保障向量指令的原子性带来了进一步的困难。
发明内容
本申请提供了一种原子性保持方法、处理器及电子设备,以解决现有技术中向量指令拆分后多操作并行执行机制,以及栅障指令和向量指令并行执行机制导致的无法保证向量指令的原子性的问题。
为了解决上述问题,本申请公开了一种原子性保持方法,所述方法包括:
将向量访存指令拆分为N个访存操作,N为大于等于1的正整数;
检查所述N个访存操作在处理过程中是否存在导致所述向量访存指令不具备原子性的事件;
在存在所述事件的情况下,所述N个访存操作中任一访存操作不产生任何处理效果,或者所述N个访存操作产生全部处理效果。
为了解决上述问题,本申请还公开了一种处理器,包括:
译码单元,用于获取向量访存指令,并根据所述向量访存指令生成N个访存操作,N为大于等于1的正整数;
处理单元,用于检查所述N个访存操作在处理过程中是否存在导致所述向量访存指令不具备原子性的事件;在存在所述事件的情况下,所述N个访存操作中任一访存操作不产生任何处理效果,或者所述N个访存操作产生全部处理效果。
为了解决上述问题,本申请又公开了一种电子设备,其中所述电子设备包括有存储器,以及一个或者一个以上的程序,其中一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器处理本申请中的一种或多种原子性保持方法。
与现有技术相比,本申请包括以下优点:
本申请实施例提供的原子性保持方法、处理器及电子设备,通过根据向量访存指令生成N个访存操作,并对N个访存操作在处理过程中是否存在导致向量访存指令不具备原子性的事件进行检查,在存在事件时,N个访存操作中任一访存操作的处理都不产生任何处理效果,或者N个访存操作产生全部处理效果,从而可以实现向量指令原子性的保持。
附图说明
图1是根据本申请实施例一的一种原子性保持方法的步骤流程图;
图2是根据本申请实施例二的一种原子性保持方法的步骤流程图;
图3是根据本申请实施例三的一种原子性保持方法的步骤流程图;
图4是根据本申请实施例四的一种原子性保持方法的步骤流程图;
图5是根据本申请实施例五的一种原子性保持方法的步骤流程图;
图6-A是根据本申请实施例五的一种处理器的结构框图;
图6-B是根据本申请实施例五的另一种处理器的结构框图;
图7是根据本申请实施例六的一种电子设备的结构框图。
具体实施方式
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。
实施例一
参照图1,示出了本申请实施例一的一种原子性保持方法的步骤流程图。
本申请实施例提供的原子性保持方法,其执行主体可以是CPU(CentralProcessing Unit,中央处理器),包括以下步骤:
步骤101:根据向量访存指令生成N个访存操作,N为大于等于1的正整数。
本申请实施例可以应用于在处理向量访存操作指令过程中,对导致向量访存指令不具备原子性的事件进行检查,并根据检查结果确定是否执行向量访存指令或者提交向量访存指令的执行结果以实现指令原子性的场景中。
向量访存指令可以针对一组数据同时实现相同的处理;在实际应用中,接收到向量访存指令之后,可以对向量访存指令进行译码,以拆分成N个访存操作,其中,N为大于等于1的正整数。
在本示例中,向量访存指令可以为Load指令,也可以为Store指令。
在根据向量访存指令生成N个访存操作之后,执行步骤102。
步骤102:检查所述N个访存操作在处理过程中是否存在导致所述向量访存指令不具备原子性的事件。
在现有技术中,向量访存指令处理的流水线可以包括:1、取指和译码,即获取向量访存指令,并对向量访存指令进行译码;2、发射,即将操作队列的指令根据操作类型送到保留站,且在发射过程中读取寄存器的值和结果状态域;3、执行,如果所有所需要的操作数都准备好,则执行;4、写回,将执行结果传输至结果总线,并释放保留站;5、提交,即当队列中指令执行结果已经写回且没有发生异常,将指令的执行结果写回到寄存器或者存储器。
基于此,本申请实施例中,对向量访存指令进行处理指对向量访存指令进行取指、译码、发射、执行、写回和提交中任一种操作或者多种操作的组合;对访存操作进行处理包括对访存操作的发射、执行和提交中任一种操作或者多种操作的组合。
本示例中提及的事件是指会导致向量访存指令不具备原子性的事件,在本示例中,事件可以包括:中断事件、例外事件、检测到栅障指令等事件中的至少一种。
其中,中断事件(也称为外中断)是指来自CPU执行指令以外的事件。
例外事件是指来自CPU执行指令内部的事件。
栅障指令是指用于确保不同操作之间同步的指令;如可以通过栅障指令完成load/store访存操作之间的同步功能,并指示load/store访存操作的同步对象和同步程度。
向量访存指令的原子性是指一条向量访存指令从执行开始到执行结束直至提交完毕不会被中断的特性。
因此,在本示例中,在将向量访存指令拆分为N个访存操作之后,可以在N个访存操作处理过程中,对N个访存操作进行检查,即检查N个访存操作在处理过程中是否存在导致向量访存指令不具备原子性的事件。可选地,当对访存操作进行处理包括对访存操作进行发射、执行和发射中任一种操作或者多种操作的组合时,对N个访存操作进行导致向量访存指令不具备原子性的事件检查,即为:在对N个访存操作进行发射过程中,对N个访存操作进行检查;或者,在对N个访存操作进行执行过程中,对N个访存操作进行检查;或者,在对N个访存操作进行提交过程中,对N个访存操作进行检查。具体在哪个阶段对N个访存操作进行检查,视导致向量访存指令不具备原子性的事件(即中断事件、例外事件、栅障指令等)类型而定。
在检查N个访存操作在处理过程中是否存在导致向量访存指令不具备原子性的事件之后,执行步骤103。
步骤103:在存在所述事件的情况下,所述N个访存操作中任一访存操作不产生任何处理效果,或者所述N个访存操作产生全部处理效果。
本申请实施例中,访存操作不产生处理效果是指访存操作执行但未提交,或者访存操作不执行,或者访存操作不发射;访存操作产生全部处理效果是指向量访存指令拆分的N个访存操作全部执行,且N个访存操作的执行结果全部提交。
在本申请实施例中,若不存在导致向量访存指令不具备原子性的事件,则可以按照上述指令流水线处理顺序,执行N个访存操作,以及提交N个访存操作执行结果;具体地,在向量访存指令为Load指令时,可以执行将向量访存指令所指示地址的被操作数从内存读取至指定通用寄存器的操作。而在向量访存指令为Store指令时,可以执行将向量访存指令所指示地址的被操作数从指定通用寄存器写入内存的操作。
在本申请实施例中,在检查到N个访存操作在处理过程中存在导致向量访存指令不具备原子性的事件的情况下,可以不处理该向量访存指令,即放弃向量访存指令的本次处理,还可执行该向量访存指令,但不提交向量访存指令的执行结果。具体地,第一、在检查到N个访存操作上标记有中断标识时,表示在N个访存操作的处理过程中存在中断事件,此时,放弃该向量访存指令的本次执行,即N个访存操作全部不执行,或者,不发射N个访存操作。第二、在N个访存操作处理过程中存在例外事件时,执行该向量访存指令,但是不提交执行结果。第三、针对栅障指令,可以先执行栅障指令,所有访存操作均不执行或不发射,待栅障指令处理完毕后,再执行访存操作,并提交执行结果。对于该过程将结合实施例二、实施例三和实施例四,分别从中断事件、例外事件和栅障指令三个维度进行详细描述,本实施例在此不再加以详细赘述。
此外,在本申请实施例中,在检查到N个访存操作在处理过程中存在导致向量访存指令不具备原子性的事件的情况下,可以全部执行向量访存指令,并提交向量访存指令的执行结果,然后再处理上述导致向量访存指令不具备原子性的事件。具体地,第一、在检查到N个访存操作上标记有中断标识时,表示在N个访存操作的处理过程中存在中断事件,此时,发射并执行N个访存操作后,提交N个访存操作的执行结果,待所有执行结果提交完毕后,响应中断事件。第二、针对栅障指令,可以先发射并执行所有访存操作,待所有访存操作执行结果并提交后,处理栅障指令。由于例外事件为待处理指令内部的事件,因而在指令处理过程中,一旦遇到例外事件,将不存在指令全部执行效果的提交。对于该过程将结合实施例二、实施例三和实施例四,分别从中断事件和栅障指令两个维度进行详细描述,本实施例在此不再加以详细赘述。
本申请实施例提供的原子性保持方法,通过根据向量访存指令生成N个访存操作,并对N个访存操作在处理过程中是否存在导致向量访存指令不具备原子性的事件进行检查;若存在导致向量访存指令不具备原子性的事件,则N个访存操作中任一访存操作的处理都不产生任何处理效果,或者N个访存操作产生全部处理效果,从而可以实现向量指令原子性的保持;采用上述技术方案,针对现有技术中向量指令的并行执行机制或者栅障指令与其他向量指令拆分得到的多个操作的并发执行机制,通过在遇到导致向量访存指令不具备原子性的事件时,不执行所有访存操作、不提交所有访存操作的执行结果、或者提交所有访存操作的执行结果,使得在一条向量访存指令中,不存在该向量访存指令拆分得到的部分访存操作已产生执行效果,另一部分访存操作不产生执行效果的情况出现,切实保证了向量指令的原子性。
实施例二
参照图2,示出了本申请实施例二的一种原子性保持方法的步骤流程图。
本申请实施例提供的原子性保持方法,其执行主体可以是CPU,导致向量访存指令不具备原子性的事件为中断事件,基于此,原子性保持方法包括以下步骤:
步骤201:根据向量访存指令生成N个访存操作,N为大于等于1的正整数。
本申请实施例中,向量访存指令可以针对一组数据同时实现相同的处理,在实际应用中,接收到向量访存指令之后,可以对向量访存指令进行拆分,以拆分成N个访存操作,其中,N为大于等于1的正整数。
在本示例中,向量访存指令可以为Load指令,也可以为Store指令。
在根据向量访存指令生成N个访存操作之后,执行步骤202。
步骤202:检查到N个访存操作在处理过程中存在导致向量访存指令不具备原子性的事件,且该事件为中断事件之后,可以对N个访存操作添加对应的标识,以表示在N个访存操作处理过程中存在中断事件。
本申请实施例中,检查N个访存操作在处理过程中是否存在中断事件的步骤,可以在N个访存操作的发射阶段执行,也可以在N个访存操作的执行阶段执行。
在本申请的一种具体实现方式中,中断标记方法可以包括:
步骤A1:对所述向量访存指令的处理过程中,响应于出现中断,对所述N个访存操作的一个或多个添加中断标识。
在实际应用中,向量访存指令的数量是巨大的,在得到一条向量访存指令之后,会将向量访存指令添加于缓存中等待发射以执行;在向量访存指令处理过程中,可以对向量访存指令进行中断事件的检查,以检查在向量访存指令的处理过程中是否存在导致向量访存指令不具备原子性的中断事件;在具体实现中,由于中断事件为外部事件,因此CPU可以实时检查向量访存指令的处理过程中是否接收到中断请求,以根据检查结果确定在向量访存指令的处理过程中是否存在中断事件,即当CPU接收到中断请求时,确定检查结果为在向量访存指令的处理过程中存在中断事件。
当然,还可以采用其它方式检查在向量访存指令的处理过程中是否存在导致向量访存指令不具备原子性的中断事件,具体地,对于中断事件的检查方式可以根据业务需求而定,本实施例对此不加以限制。
本申请实施例中,中断标识可以用于指示N个访存操作在处理过程中存在中断事件的标识;具体地,对于中断标识的表现形式可以根据业务需求而定,本实施例对此不加以限制。
进一步的,若检查到N个访存操作在处理过程中存在导致向量访存指令不具备原子性的事件,且该件为中断事件,则可以对访存操作添加中断标识。
在具体实现中,针对访存操作添加中断标识的情况可以分为以下两种:
一、对N个访存操作中的任一访存操作上添加中断标识,具体地,可以在第一个访存操作上添加中断标识,也可以在最后一个访存操作上添加中断标识,还可以在位于第一个访存操作和最后一个访存操作中间的任意一个访存操作上添加中断标识(可以理解,上述第一个、最后一个的描述是指根据N个访存操作的执行顺序进行限定),例如,向量访存指令可以拆分为5个访存操作,按照这5个访存操作的执行顺序由先到后进行排序依次为:访存操作1、访存操作2、访存操作3、访存操作4和访存操作5,在添加中断标识时,可以在第一个访存操作(即访存操作1)上添加中断标识,也可以在最后一个访存操作(即访存操作5)上添加标识,也可以在位于第一个访存操作和最后一个访存操作之间的访存操作(即访存操作2或访存操作3或访存操作4)上添加中断标识。
较佳地,在N个访存操作中的第一个访存操作上添加中断标识。
可以理解地,上述示例仅是为了更好地理解本申请实施例的技术方案而列举的示例,不作为对本实施例的唯一限制。
二、对N个访存操作的全部访存操作添加中断标识,即在N个访存操作上均添加中断标识,例如,承接上述示例,向量访存指令拆分成5个访存操作之后,可以将这5个访存操作上均添加中断标识,即在访存操作1、访存操作2、访存操作3、访存操作4和访存操作5上均添加中断标识。
本申请实施例中,通过对N个访存操作添加用于指示中断事件的中断标识,可以在后续处理向量访存指令的过程中,通过中断标识即可直观了解该向量访存指令是否具备原子性,以决定如何处理该向量访存指令。
步骤203:检查所述N个访存操作是否存在中断标识。
本申请实施例中,在通过上述方式对N个访存操作添加中断标识之后,可以依次检查N个访存操作是否标记有中断标识,以确定在N个访存操作的处理过程中是否存在中断事件。
在N个访存操作上添加中断标识之后,中断标识的检查方式可以分为以下两种。
第一、依次检查N个访存操作是否标记有中断标识。
第二、检查N个访存操作中的第一访存操作是否标记有中断标识。
在检查到N个访存操作存在中断标识之后,执行步骤204。
在检查到N个访存操作都未标记中断标识之后,执行步骤205。
步骤204:若存在所述中断标识,则所述N个访存操作中任一访存操作不产生任何处理效果,或者所述N个访存操作产生全部处理效果。
在检查到N个访存操作上标记有中断标识之后,N个访存操作中任一访存操作不产生任何处理效果,或N个访存操作产生全部处理效果,具体地,可以结合下述四种情况进行描述。
第一种情况、若检查到N个访存操作中任一访存操作标记有中断标识,则不发射或不执行N个访存操作中的任一访存操作,此时,N个访存操作中任一访存操作不产生任何执行处理效果,即在响应完毕中断事件之后,再继续发射或执行N个访存操作,以及提交N个访存操作的执行结果。
可选地,若在N个访存操作的发射阶段检查到N个访存操作中任一访存操作标记有中断标识,则不发射N个访存操作中的任一访存操作,或者,发射N个访存操作,但不执行N个访存操作中的任一访存操作;若在N个访存操作的执行阶段检查到N个访存操作中存在任一访存操作标记有中断标识,则不提交N个访存操作中的任一访存操作的执行结果。
第二种情况、若检查到N个访存操作中任一访存操作标记有中断标识,则全部提交并执行N个访存操作中的每一个访存操作,以及全部提交N个访存操作的执行结果,即在N个访存操作全部执行完成并提交相应的执行结果之后,再响应中断事件。
第三种情况、若检查到N个访存操作中第一访存操作标记有中断标识,则不发射或不执行N个访存操作中的任一访存操作,此时,N个访存操作中任一访存操作不产生任何处理效果,即在响应完毕中断事件之后,再继续发射或执行N个访存操作,以及提交N个访存操作的执行结果。
可选地,若在N个访存操作的发射阶段检查到N个访存操作中第一访存操作标记有中断标识,则不发射N个访存操作中的任一访存操作,或者,发射N个访存操作,但不执行N个访存操作中的任一访存操作;若在N个访存操作的执行阶段检查到N个访存操作中存在第一访存操作标记有中断标识,则不提交N个访存操作中的任一访存操作的执行结果。
第四种情况、若检查到N个访存操作中第一访存操作标记有中断标识,则可以全部执行N个访存操作中的每一个访存操作,并全部提交N个访存操作的执行结果,即在N个访存操作全部执行完成并提交相应的执行结果之后,再响应中断事件。
步骤205:若所述N个访存操作都未标记所述中断标识,则执行所述N个访存操作,并提交所述N个访存操作的执行结果。
若检查到N个访存操作都未标记中断标识,则可以执行N个访存操作,以得到N个访存操作的执行结果,进而可以提交N个访存操作的执行结果。
本申请实施例提供的原子性保持方法,通过根据向量访存指令生成N个访存操作,并检查N个访存操作是否标记中断标识,在检查到中断标识时,N个访存操作中任一访存操作的处理都不产生任何处理效果,或者N个访存操作产生全部处理效果;采用本申请技术方案,在向量访存操作处理过程中,一旦发生中断事件,即可保证向量访存指令全部处理完毕后再响应中断事件,或者中断事件响应完毕后,再处理向量访存指令,使得向量访存指令不会因为中断事件仅提交部分访存操作的执行结果,从而可以实现向量指令原子性的保持。
实施例三
参照图3,示出了本申请实施例三的一种原子性保持方法的步骤流程图。
本申请实施例提供的原子性保持方法,其执行主体可以是CPU,导致向量访存指令不具备原子性的事件为例外事件,基于此,原子性保持方法包括以下步骤:
步骤301:根据向量访存指令生成N个访存操作,N为大于等于1的正整数。
本申请实施例中,向量访存指令可以针对一组数据同时实现相同的处理,在实际应用中,接收到向量访存指令之后,可以对向量访存指令进行拆分,以拆分成N个访存操作,其中,N为大于等于1的正整数。
在本示例中,向量访存指令可以为Load指令,也可以为Store指令。
在根据向量访存指令生成N个访存操作之后,执行步骤302。
步骤302:检查所述N个访存操作中是否存在任一访存操作将导致在处理过程出现例外事件,得到检查结果。
在根据向量访存指令生成N个访存操作之后,可以检查N个访存操作中是否存在任一访存操作将导致在处理过程中出现例外事件,以得到检查结果。对于例外事件的检查过程可以结合下述具体实现方式进行详细描述。
本申请实施例中,检查所述N个访存操作在处理过程中是否存在例外事件的步骤,可以在N个访存操作的执行阶段执行。
在本申请的一种具体实现方式中,上述步骤302可以包括:
子步骤S1:获取所述N个访存操作中每一个访存操作的访存地址。
本申请实施例中,在根据向量访存指令生成N个访存操作之后,可以获取N个访存操作中每一个访存操作的访存地址。
在获取到N个访存操作中每一个访存操作的访存地址之后,执行子步骤S2。
子步骤S2:检查每一个所述访存地址是否存在满足例外事件触发情况;若是,则将所述N访存操作中存在任一访存操作将导致在处理过程出现例外事件确定为检查结果;否则,将所述N个访存操作中不存在将导致在处理过程出现例外事件确定为检查结果。
在获取到N个访存操作中每一个访存操作的访存地址之后,可以检查每一个访存地址是否存在满足例外事件触发情况;若是,则将N访存操作中存在任一访存操作将导致在处理过程出现例外事件确定为检查结果;否则,将N个访存操作中不存在将导致在处理过程出现例外事件确定为检查结果。
满足例外事件触发情况包括以下几种情况中的至少一种情况:
1、任一访存操作的权限存在属性权限违法;其中,属性权限违法包含段属性权限违法和页属性权限违法,属性权限主要指读权限、写权限、执行权限、特权等级权限等;属性权限违法主要用于表征任一访存操作/向量访存指令的动作与该任一访存操作/向量访存指令所访问地址对应的权限是否一致,若不一致,将确定任一访存操作/向量访存指令的权限存在属性权限违法。
2、地址转换表中不包含任一访存地址;
3、向量访存指令的访存地址为越界地址。
步骤303:执行所述N个访存操作。
在根据向量访存指令生成N个访存操作之后,可以执行N个访存操作,以得到N个访存操作的执行结果。
步骤304:若所述检查结果指示所述N个访存操作中存在访存操作将导致在处理过程出现例外事件,则不提交所述N个访存操作中任一访存操作的执行结果,并且报告例外事件。
在例外事件的检查结果指示N个访存操作中存在访存操作将导致在处理过程中出现例外事件,则不提交N个访存操作中任一访存操作的执行结果,并且报告例外事件。
步骤305:若所述检查结果指示所述N个访存操作都不会导致在处理过程中出现例外事件,则提交所述N个访存操作的执行结果。
在例外事件的检查结果指示N个访存操作都不会导致在处理过程中出现例外事件时,可以提交N个访存操作的执行结果。
本申请实施例提供的原子性保持方法,根据向量访存指令生成N个访存操作,并检查N个访存操作中是否存在任一访存操作将导致在处理过程中出现例外事件,若是,则不提交述N个访存操作中任一访存操作的执行结果,并且报告例外事件;采用本申请的技术方案,在向量访存操作处理过程中,一旦发生例外事件,即可保证响应例外事件,而向量访存指令将不产生任何处理效果,使得向量访存指令不会因为例外事件仅提交部分访存操作的处理结果,从而可以实现向量指令原子性的保持。
实施例四
参照图4,示出了本申请实施例四的一种原子性保持方法的步骤流程图。
本申请实施例提供的原子性保持方法,其执行主体可以是CPU,导致向量访存指令不具备原子性的事件为栅障指令事件,基于此,原子性保持方法包括以下步骤:
步骤401:根据向量访存指令生成N个访存操作,N为大于等于1的正整数。
本申请实施例中,向量访存指令可以针对一组数据同时实现相同的处理,在实际应用中,接收到向量访存指令之后,可以对向量访存指令进行拆分,以拆分成N个访存操作,其中,N为大于等于1的正整数。
在本示例中,向量访存指令可以为Load指令,也可以为Store指令。
在根据向量访存指令生成N个访存操作之后,执行步骤402。
步骤402:检查所述N个访存操作在处理过程中是否存在栅障指令。
在根据向量访存指令生成N个访存操作之后,可以检查N个访存操作在处理过程中是否存在栅障指令。
本申请实施例中,检查N个访存操作在处理过程中是否存在影响原子性的栅障指令的步骤,可以在N个访存操作的发射阶段或执行阶段执行。
步骤403:响应于获取所述栅障指令,当确认所有正在执行的所述N个访存操作均已执行完成时,处理所述栅障指令;或
步骤404:响应于获取所述向量访存指令,若存在尚未处理完成的栅障指令,则缓存所述向量访存指令生成的N个访存操作而不处理,等待尚未处理完成的栅障指令处理完成,再处理所述N个访存操作。
若检查到N个访存操作在处理过程中存在栅障指令,则可以响应于获取的栅障指令;当确认所有正在执行的N个访存操作均已执行完成,且N个访存操作的执行结果全部提交时,处理栅障指令;或
响应于获取所述向量访存指令,若存在尚未处理完成的栅障指令,缓存所述向量访存指令生成的N个访存操作而不发射或不执行,等待尚未处理完成的栅障指令处理完成,再执行N个访存操作。
其中,上述步骤403和步骤404为步骤402执行后的并列可选方案,即执行步骤402后,可以选择步骤403和步骤404中的任一步骤执行,且步骤403和步骤404不同时执行。
本申请实施例提供的原子性保持方法,通过在检查接收到栅障指令之后,响应于获取栅障指令,当确认所有正在处理的所述N个访存操作均已处理完成时,处理栅障指令,或者,响应于获取向量访存指令,若存在尚未处理完成的栅障指令,缓存向量访存指令生成的N个访存操作而不处理,等待尚未处理完成的栅障指令处理完成,再处理N个访存操作;采用本申请的技术方案,先处理栅障指令,在栅障指令处理完成之后,处理N个访存操作;或者,先处理N个访存操作,在N个访存操作执行完成且全部提交执行结果之后,再处理栅障指令,使得向量访存指令不会因为栅障指令仅提交部分访存操作的执行结果,从而可以实现向量指令原子性的保持。
实施例五
参照图5,示出了本申请实施例五的一种原子性保持方法的步骤流程图。
本申请实施例提供另一种原子保持方法,同时涵盖实施例二至实施例四所述的三种影响向量访存指令原子性事件。基于此,原子性保持方法包括如下步骤:
步骤501:根据向量访存指令生成N个访存操作,N为大于等于1的正整数。
本申请实施例中,向量访存指令的定义和译码方式,与实施例二至实施例四一致,此处不再赘述。
步骤502:在N个访存操作的发射阶段,检查N个访存操作在处理过程中是否存在中断事件;若是,则执行步骤504;否则,执行步骤503。同时,在N个访存操作的发射阶段,检查N个访存操作在处理过程中是否存在栅障指令;若是,则执行步骤505;否则,执行步骤503。
步骤503:发射N个访存操作,并在所述N个访存操作的执行阶段,检查所述N个访存操作中是否存在任一访存操作在处理过程出现例外事件;若是,则执行步骤506;否则,执行步骤507。
步骤504:不处理所述N个访存操作中的任一访存操作,响应所述中断事件。
本申请实施例中,不处理所述N个访存操作中的任一访存操作,包括不发射所述N个访存操作中的任一访存操作,或者,不执行所述N个访存操作中的任一访存操作。
进一步地,待所述中断事件响应完毕后,再处理所述N个访存操作;即若不发射所述N个访存操作中的任一访存操作,则待所述中断事件响应完毕后,再执行步骤503;若不执行所述N个访存操作中的任一访存操作,则待所述中断事件响应完毕后,再执行步骤503中在所述N个访存操作的执行阶段,检查所述N个访存操作中是否存在任一访存操作在处理过程出现例外事件的步骤。
步骤505:缓存所述N个访存操作而不处理,等待尚未处理完成的栅障指令处理完成,再处理所述N个访存操作。
本申请实施例中,等待尚未处理完成的栅障指令处理完成,再处理所述N个访存操作,即等待尚未处理完成的栅障指令处理完成,再执行步骤503。
进一步地,在步骤502和步骤504中,若存在中断事件/栅障指令,也可以先执行步骤503,待提交N个访存操作的执行结果/上报例外事件后,再响应中断事件/栅障指令。
步骤506:不提交所述N个访存操作中的任一访存操作,并上报例外事件。
步骤507:执行所述N个访存操作,并提交所述N个访存操作的执行结果。
实施例六
参照图6,示出了本申请实施例六的一种处理器的结构框图。
如图6-A所示,本申请实施例的处理器包括:
译码单元61,用于获取向量访存指令,并根据所述向量访存指令生成N个访存操作,N为大于等于1的正整数;
处理单元62,用于检查所述N个访存操作在处理过程中是否存在导致所述向量访存指令不具备原子性的事件;在存在所述事件的情况下,所述N个访存操作中任一访存操作不产生任何处理效果,或者所述N个访存操作产生全部处理效果。
所述处理器单元62,具体用于:检查所述N个访存操作在处理过程中是否存在中断事件、例外事件、栅障指令中至少一种情况;若存在,则判定所述N个访存操作在处理过程中存在导致所述向量访存指令不具备原子性的事件。
如图6-B所示,处理器包括指令存储器63,译码单元的向量访存指令可以来自指令存储器。
可选地,所述处理单元62包括:发射单元621、执行单元622和提交单元623,
所述发射单元621,用于检查所述N个访存操作在处理过程中是否存在导致所述向量访存指令不具备原子性的事件之前,对所述向量访存指令的处理过程中,响应于出现中断事件,对所述N个访存操作的一个或多个添加中断标识;所述中断标识用于指示所述向量访存指令的处理过程中发生了中断事件。
可选地,所述发射单元621,具体用于对所述N个访存操作中的任一访存操作添加所述中断标识。
可选地,所述发射单元621,具体用于对所述N个访存操作的全部访存操作添加所述中断标识。
可选地,所述发射单元621,用于依次检查所述N个访存操作是否标记有所述中断标识;若所述N个访存操作中任一访存操作标记有所述中断标识,则不发射所述N个访存操作的任一访存操作。
可选地,所述发射单元621,用于依次检查所述N个访存操作是否标记有所述中断标识;若确定所述N个访存操作中任一访存操作标记有所述中断标识,则发射所述N个访存操作;
所述执行单元622,用于缓存所述向量访存指令生成的N个访存操作,而不执行所述N个访存操作的任一访存操作,等待所述中断事件处理完毕,再执行所述N个访存操作。
可选地,所述发射单元621,用于依次检查所述N个访存操作是否标记有所述中断标识;若确定所述N个访存操作中任一访存操作标记有所述中断标识,则发射所述N个访存操作;
所述执行单元622,用于全部执行所述N个访存操作中的每一个访存操作;
所述提交单元623,用于提交所述N个访存操作的执行结果;
当处理器确认所述N个访存操作的执行结果均已提交完毕时,处理所述中断事件。
可选地,所述发射单元621,用于检查所述N个访存操作中的第一个访存操作是否标记有所述中断标识,若所述第一个访存操作标记有所述中断标识,则不发射所述N个访存操作的任何一个。
可选地,所述发射单元621,用于检查所述N个访存操作中的第一个访存操作是否标记有所述中断标识;若确定所述第一个访存操作标记有所述中断标识,则发射所述N个访存操作;
所述执行单元622,用于缓存所述向量访存指令生成的N个访存操作,而不执行所述N个访存操作的任一访存操作,等待所述中断事件处理完毕,再执行所述N个访存操作。
可选地,所述发射单元621,用于检查所述N个访存操作中的第一个访存操作是否标记有所述中断标识;若确定所述第一个访存操作标记有所述中断标识,则发射所述N个访存操作;
所述执行单元622,用于全部执行所述N个访存操作中的每一个访存操作;
所述提交单元623,用于提交所述N个访存操作的执行结果。
可选地,所述发射单元621,用于若所述N个访存操作都未标记所述中断标识,则发射所述N个访存操作;
所述执行单元622,用于执行所述N个访存操作;
所述提交单元623,用于提交所述N个访存操作的执行结果。
可选地,所述发射单元621,用于检查所述N个访存操作中是否存在任一访存操作将导致在处理过程出现例外事件,得到检查结果,并发射所述N个访存操作;
所述执行单元622,用于执行所述N个访存操作;
所述提交单元623,用于若所述检查结果指示所述N个访存操作中存在访存操作将导致在处理过程出现例外事件,则不提交所述N个访存操作中任一访存操作的执行结果,并且报告例外事件。
可选地,所述发射单元621,用于发射所述N个访存操作;
所述执行单元622,用于执行所述N个访存操作,并检查所述N个访存操作中是否存在任一访存操作将导致在处理过程出现例外事件,得到检查结果;
所述提交单元623,用于若所述检查结果指示所述N个访存操作中存在访存操作将导致在处理过程出现例外事件,则全部提交所述N个访存操作中每一个访存操作的执行结果,并且报告例外事件。
可选地,所述发射单元621,用于获取所述N个访存操作中每一个访存操作的访存地址;检查每一个所述访存地址是否存在满足例外事件触发情况,若是,则将所述N访存操作中存在任一访存操作将导致在处理过程出现例外事件确定为检查结果;否则,将所述N个访存操作不存在任一访存操作将导致在处理过程出现例外事件确定为检查结果;
其中,所述满足例外事件触发情况包括如下几种情况的至少一种情况:
任一所述访存操作的权限存在属性权限违法;
地址转换表中不包含所述任一访存地址;
所述向量访存指令的访存地址为越界地址。
可选地,所述提交单元621,用于若所述检查结果指示所述N个访存操作都不会导致在处理过程中出现例外事件,则提交所述N个访存操作的执行结果。
可选地,所述处理单元62,用于在确定接收到栅障指令时,响应于所述栅障指令;当确认所有正在处理的所述N个访存操作均已执行完成并提交执行结果时,处理所述栅障指令;或者
响应于获取所述向量访存指令,若存在尚未处理完成的栅障指令,缓存所述向量访存指令生成的N个访存操作而不执行,等待尚未处理完成的栅障指令处理完成,再执行所述N个访存操作。
可选地,所述向量访存指令为Load指令或者Store指令;所述处理单元还包括执行单元;处理器还包括通用寄存器64;
当所述向量访存指令为Load指令时,所述执行单元622,具体用于:执行从内存读取所述向量访存指令所指示地址的被操作数;所述提交单元623,用于将所述被操作数读取至指定通用寄存器64;
当所述向量访存指令为Store指令时,所述执行单元622,具体用于执行将所述向量访存指令所指示地址的被操作数从指定通用寄存器64取出;所述提交单元,用于将所述被操作数写入内存。
本申请实施例中的处理器用于实现前述方法实施例中相应的原子性保持方法,并且具有相应的方法实施的有益效果,在此不再赘述。
实施例七
参照图7,示出了本申请实施例七的一种用于原子性保持的电子设备的结构示意图。
如图7所示,电子设备可以包括以下一个或多个组件:处理组件702,存储器704,电源组件706,多媒体组件708,音频组件710,输入/输出(I/O)的接口712,传感器组件714,以及通信组件716。
处理组件702通常控制电子设备的整体操作,诸如与显示,数据通信,相机操作和记录操作相关联的操作。处理元件702可以包括一个或多个处理器720来处理指令,以完成上述的方法的全部或部分步骤。此外,处理组件702可以包括一个或多个模块,便于处理组件702和其他组件之间的交互。例如,处理部件702可以包括多媒体模块,以方便多媒体组件708和处理组件702之间的交互。
存储器704被配置为存储各种类型的数据以支持在电子设备的操作。这些数据的示例包括用于在电子设备上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器704可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
电源组件706为电子设备的各种组件提供电力。电源组件706可以包括电源管理系统,一个或多个电源,及其他与为终端700生成、管理和分配电力相关联的组件。
多媒体组件708包括在所述电子设备和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件708包括一个前置摄像头和/或后置摄像头。当电子设备处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。
音频组件710被配置为输出和/或输入音频信号。例如,音频组件710包括一个麦克风(MIC),当终端处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器704或经由通信组件717发送。在一些实施例中,音频组件710还包括一个扬声器,用于输出音频信号。
I/O接口712为处理组件702和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
传感器组件714包括一个或多个传感器,用于为电子设备700提供各个方面的状态评估。例如,传感器组件714可以检测到电子设备700的打开/关闭状态,组件的相对定位,例如所述组件为终端的显示器和小键盘,传感器组件714还可以检测终端或终端一个组件的位置改变,用户与电子设备接触的存在或不存在,电子设备方位或加速/减速和电子设备的温度变化。传感器组件714可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件714还可以包括光传感器,如CMOS或CCD图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件714还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。
通信组件716被配置为便于电子设备和其他设备之间有线或无线方式的通信。电子设备可以接入基于通信标准的无线网络,如WiFi,2G或3G,或它们的组合。在一个示例性实施例中,通信部件716经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信部件716还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
在示例性实施例中,电子设备可以被一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于处理上述实施例一至实时五所述的原子性保持方法。
本申请实施例的电子设备用于实现前述多个方法实施例中相应的原子性保持方法,并且具有相应的方法实施的有益效果,在此不再赘述。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上对本申请所提供的一种原子性保持方法、处理器及电子设备进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
在此提供的算法和显示不与任何特定计算机、电子系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本申请也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本申请的内容,并且上面对特定语言所做的描述是为了披露本申请的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本申请的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本申请的示例性实施例的描述中,本申请的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本申请要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本申请的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本申请的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本申请的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本申请实施例的浏览器客户端设备中的一些或者全部部件的一些或者全部功能。本申请还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本申请的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本申请进行说明而不是对本申请进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本申请可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。

Claims (32)

1.一种原子性保持方法,其特征在于,所述方法包括:
根据向量访存指令生成N个访存操作,N为大于等于1的正整数;
检查所述N个访存操作在处理过程中是否存在导致所述向量访存指令不具备原子性的事件;
在存在所述事件的情况下,所述N个访存操作中任一访存操作不产生任何处理效果,或者所述N个访存操作产生全部处理效果。
2.根据权利要求1所述的方法,其特征在于,检查所述N个访存操作在处理过程中是否存在导致所述向量访存指令不具备原子性的事件,包括:
检查所述N个访存操作在处理过程中是否存在中断事件、例外事件、栅障指令中至少一种情况;
若存在,则判定所述N个访存操作在处理过程中存在导致所述向量访存指令不具备原子性的事件。
3.根据权利要求2所述的方法,其特征在于,所述检查所述N个访存操作在处理过程中是否存在导致所述向量访存指令不具备原子性的事件之前,还包括:
对所述向量访存指令的处理过程中,响应于出现中断事件,对所述N个访存操作的一个或多个添加中断标识;
所述中断标识用于指示所述向量访存指令的处理过程中发生了中断事件。
4.根据权利要求3所述的方法,其特征在于,所述对所述N个访存操作的一个或多个添加中断标识,包括:
对所述N个访存操作中的任一访存操作添加所述中断标识。
5.根据权利要求3所述的方法,其特征在于,所述对所述N个访存操作的一个或多个添加中断标识,包括:
对所述N个访存操作的全部访存操作添加所述中断标识。
6.根据权利要求3-5任一所述的方法,其特征在于,所述检查所述N个访存操作在处理过程中是否存在导致所述向量访存指令不具备原子性的事件,包括:
依次检查所述N个访存操作是否标记有所述中断标识;
所述在存在所述事件的情况下,所述N个访存操作中任一访存操作不产生任何处理效果,包括:
若所述N个访存操作中任一访存操作标记有所述中断标识,则缓存所述向量访存指令生成的N个访存操作,而不执行所述N个访存操作的任一访存操作,等待所述中断事件处理完毕,再执行所述N个访存操作。
7.根据权利要求3-5任一所述的方法,其特征在于,所述检查所述N个访存操作在处理过程中是否存在导致所述向量访存指令不具备原子性的事件,包括:
依次检查所述N个访存操作是否标记有所述中断标识;
所述在存在所述事件的情况下,所述N个访存操作产生全部处理效果,包括:
若所述N个访存操作中任一访存操作标记有所述中断标识,则全部执行所述N个访存操作中的每一个访存操作;以及
提交所述N个访存操作的执行结果;
当确认所述N个访存操作的执行结果均已提交完毕时,处理所述中断事件。
8.根据权利要求3-5任一所述的方法,其特征在于,所述检查所述N个访存操作在处理过程中是否存在导致所述向量访存指令不具备原子性的事件,包括:
检查所述N个访存操作中的第一个访存操作是否标记有所述中断标识;
所述在存在所述事件的情况下,所述N个访存操作中任一访存操作不产生任何处理效果,包括:
若所述第一个访存操作标记有所述中断标识,则缓存所述向量访存指令生成的N个访存操作,而不执行所述N个访存操作的任一访存操作,等待所述中断事件处理完毕,再执行所述N个访存操作。
9.根据权利要求3-5任一所述的方法,其特征在于,所述检查所述N个访存操作在处理过程中是否存在导致所述向量访存指令不具备原子性的事件,包括:
检查所述N个访存操作中的第一个访存操作是否标记有所述中断标识;
所述在存在所述事件的情况下,所述N个访存操作产生全部处理效果,包括:
若所述第一个访存操作标记有所述中断标识,则全部执行所述N个访存操作中的每一个访存操作;以及
提交所述N个访存操作的执行结果;
当确认所述N个访存操作的执行结果均已提交完毕时,处理所述中断事件。
10.根据权利要求3-5任一所述的方法,其特征在于,所述方法还包括:
若所述N个访存操作都未标记所述中断标识,则执行所述N个访存操作;以及
提交所述N个访存操作的执行结果。
11.根据权利要求2-10任一项所述的方法,其特征在于,所述检查所述N个访存操作在处理过程中是否存在导致所述向量访存指令不具备原子性的事件,包括:
检查所述N个访存操作中是否存在任一访存操作将导致在处理过程出现例外事件,得到检查结果;以及
执行所述N个访存操作;
在存在所述事件的情况下,所述N个访存操作中任一访存操作不产生任何处理效果,包括:
若所述检查结果指示所述N个访存操作中存在访存操作将导致在处理过程出现例外事件,则不提交所述N个访存操作中任一访存操作的执行结果,并且报告例外事件。
12.根据权利要求11所述的方法,其特征在于,检查所述N个访存操作中是否存在任一访存操作将导致在处理过程出现例外事件,得到检查结果,包括:
获取所述N个访存操作中每一个访存操作的访存地址;
检查每一个所述访存地址是否存在满足例外事件触发情况,若是,则将所述N访存操作中存在任一访存操作将导致在处理过程出现例外事件确定为检查结果;否则,将所述N个访存操作不存在任一访存操作将导致在处理过程出现例外事件确定为检查结果;
其中,所述满足例外事件触发情况包括如下几种情况的至少一种情况:
任一所述访存操作的权限存在属性权限违法;
地址转换表中不包含所述任一访存地址;
所述向量访存指令的访存地址为越界地址。
13.根据权利要求11或12所述的方法,其特征在于,所述执行所述N个访存操作之后,还包括:
若所述检查结果指示所述N个访存操作都不会导致在处理过程中出现例外事件,则提交所述N个访存操作的执行结果。
14.根据权利要求2-10任一项所述的方法,其特征在于,所述检查所述N个访存操作在处理过程中是否存在导致所述向量访存指令不具备原子性的事件,包括:
检查是否接收到栅障指令;
在存在所述事件的情况下,所述N个访存操作中任一访存操作不产生任何处理效果,或者所述N个访存操作产生全部处理效果,包括:
响应于获取所述栅障指令,当确认所有正在处理的所述N个访存操作均已执行完成并提交执行结果时,处理所述栅障指令;或者
响应于获取所述向量访存指令,若存在尚未处理完成的栅障指令,缓存所述向量访存指令生成的N个访存操作而不执行,等待尚未处理完成的栅障指令处理完成,再执行所述N个访存操作。
15.根据权利要求1-14任一项所述的方法,其特征在于,所述向量访存指令为Load指令或者Store指令;
当所述向量访存指令为Load指令时,执行所述N个访存操作,包括:
执行将所述向量访存指令所指示地址的被操作数从内存读取至指定通用寄存器的操作;
当所述向量访存指令为Store指令时,执行所述N个访存操作,包括:
执行将所述向量访存指令所指示地址的被操作数从指定通用寄存器写入内存的操作。
16.一种处理器,其特征在于,包括:
译码单元,用于获取向量访存指令,并根据所述向量访存指令生成N个访存操作,N为大于等于1的正整数;
处理单元,用于检查所述N个访存操作在处理过程中是否存在导致所述向量访存指令不具备原子性的事件;在存在所述事件的情况下,所述N个访存操作中任一访存操作不产生任何处理效果,或者所述N个访存操作产生全部处理效果。
17.根据权利要求16所述的处理器,其特征在于,所述处理器单元,具体用于:
检查所述N个访存操作在处理过程中是否存在中断事件、例外事件、栅障指令中至少一种情况;若存在,则判定所述N个访存操作在处理过程中存在导致所述向量访存指令不具备原子性的事件。
18.根据权利要求17所述的处理器,其特征在于,所述处理单元包括发射单元;
所述发射单元,用于检查所述N个访存操作在处理过程中是否存在导致所述向量访存指令不具备原子性的事件之前,对所述向量访存指令的处理过程中,响应于出现中断事件,对所述N个访存操作的一个或多个添加中断标识;所述中断标识用于指示所述向量访存指令的处理过程中发生了中断事件。
19.根据权利要求18所述的处理器,其特征在于,
所述发射单元,具体用于对所述N个访存操作中的任一访存操作添加所述中断标识。
20.根据权利要求18所述的处理器,其特征在于,
所述发射单元,具体用于对所述N个访存操作的全部访存操作添加所述中断标识。
21.根据权利要求18-20任一所述的处理器,其特征在于,所述发射单元,用于依次检查所述N个访存操作是否标记有所述中断标识;若所述N个访存操作中任一访存操作标记有所述中断标识,则不发射所述N个访存操作的任一访存操作。
22.根据权利要求18-20任一所述的处理器,其特征在于,所述处理单元还包括执行单元;
所述发射单元,用于依次检查所述N个访存操作是否标记有所述中断标识;若确定所述N个访存操作中任一访存操作标记有所述中断标识,则发射所述N个访存操作;
所述执行单元,用于缓存所述向量访存指令生成的N个访存操作,而不执行所述N个访存操作的任一访存操作,等待所述中断事件处理完毕,再执行所述N个访存操作。
23.根据权利要求18-20任一所述的处理器,其特征在于,所述处理单元还包括执行单元和提交单元;
所述发射单元,用于依次检查所述N个访存操作是否标记有所述中断标识;若确定所述N个访存操作中任一访存操作标记有所述中断标识,则发射所述N个访存操作;
所述执行单元,用于全部执行所述N个访存操作中的每一个访存操作;
所述提交单元,用于提交所述N个访存操作的执行结果。
24.根据权利要求18-20任一所述的处理器,其特征在于,
所述发射单元,用于检查所述N个访存操作中的第一个访存操作是否标记有所述中断标识,若所述第一个访存操作标记有所述中断标识,则不发射所述N个访存操作的任何一个。
25.根据权利要求18-20任一所述的处理器,其特征在于,所述处理单元还包括执行单元;
所述发射单元,用于检查所述N个访存操作中的第一个访存操作是否标记有所述中断标识;若确定所述第一个访存操作标记有所述中断标识,则发射所述N个访存操作;
所述执行单元,用于缓存所述向量访存指令生成的N个访存操作,而不执行所述N个访存操作的任一访存操作,等待所述中断事件处理完毕,再执行所述N个访存操作。
26.根据权利要求18-20任一所述的处理器,其特征在于,所述处理单元还包括执行单元和提交单元;
所述发射单元,用于检查所述N个访存操作中的第一个访存操作是否标记有所述中断标识;若确定所述第一个访存操作标记有所述中断标识,则发射所述N个访存操作;
所述执行单元,用于全部执行所述N个访存操作中的每一个访存操作;
所述提交单元,用于提交所述N个访存操作的执行结果。
27.根据权利要求18-20任一所述的处理器,其特征在于,所述处理单元还包括执行单元和提交单元;
所述发射单元,用于若所述N个访存操作都未标记所述中断标识,则发射所述N个访存操作;
所述执行单元,用于执行所述N个访存操作;
所述提交单元,用于提交所述N个访存操作的执行结果。
28.根据权利要求17所述的处理器,其特征在于,所述处理单元包括发射单元、执行单元和提交单元;
所述发射单元,用于发射所述N个访存操作;
所述执行单元,用于执行所述N个访存操作,并检查所述N个访存操作中是否存在任一访存操作将导致在处理过程出现例外事件,得到检查结果;
所述提交单元,用于若所述检查结果指示所述N个访存操作中存在访存操作将导致在处理过程出现例外事件,则不提交所述N个访存操作中任一访存操作的执行结果,并且报告例外事件。
29.根据权利要求27或28所述的处理器,其特征在于,
所述执行单元,用于获取所述N个访存操作中每一个访存操作的访存地址;检查每一个所述访存地址是否存在满足例外事件触发情况,若是,则将所述N访存操作中存在任一访存操作将导致在处理过程出现例外事件确定为检查结果;否则,将所述N个访存操作不存在任一访存操作将导致在处理过程出现例外事件确定为检查结果;
其中,所述满足例外事件触发情况包括如下几种情况的至少一种情况:
任一所述访存操作的权限存在属性权限违法;
地址转换表中不包含所述任一访存地址;
所述向量访存指令的访存地址为越界地址。
30.根据权利要求29所述的处理器,其特征在于,
所述提交单元,用于若所述检查结果指示所述N个访存操作都不会导致在处理过程中出现例外事件,则提交所述N个访存操作的执行结果。
31.根据权利要求16所述的处理器,其特征在于,所述处理单元,用于:
在确定接收到栅障指令时,响应于所述栅障指令;当确认所有正在处理的所述N个访存操作均已执行完成并提交执行结果时,处理所述栅障指令;或者
响应于获取所述向量访存指令,若存在尚未处理完成的栅障指令,缓存所述向量访存指令生成的N个访存操作而不执行,等待尚未处理完成的栅障指令处理完成,再执行所述N个访存操作。
32.一种电子设备,其特征在于,包括有存储器,以及一个或者一个以上的程序,其中一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行如权利要求1-15中一个或多个所述的原子性保持方法。
CN202111507703.XA 2021-12-10 2021-12-10 原子性保持方法、处理器及电子设备 Pending CN114327815A (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN202111507703.XA CN114327815A (zh) 2021-12-10 2021-12-10 原子性保持方法、处理器及电子设备
CA3240485A CA3240485A1 (en) 2021-12-10 2022-12-08 Atomicity retaining method and processor, and electronic device
PCT/CN2022/137510 WO2023104146A1 (zh) 2021-12-10 2022-12-08 原子性保持方法、处理器及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111507703.XA CN114327815A (zh) 2021-12-10 2021-12-10 原子性保持方法、处理器及电子设备

Publications (1)

Publication Number Publication Date
CN114327815A true CN114327815A (zh) 2022-04-12

Family

ID=81050021

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111507703.XA Pending CN114327815A (zh) 2021-12-10 2021-12-10 原子性保持方法、处理器及电子设备

Country Status (3)

Country Link
CN (1) CN114327815A (zh)
CA (1) CA3240485A1 (zh)
WO (1) WO2023104146A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023104146A1 (zh) * 2021-12-10 2023-06-15 龙芯中科技术股份有限公司 原子性保持方法、处理器及电子设备

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117891509B (zh) * 2024-03-18 2024-06-14 芯来智融半导体科技(上海)有限公司 数据访存方法、装置、计算机设备和存储介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101079083A (zh) * 2006-05-25 2007-11-28 中国科学院计算技术研究所 一种对访存操作进行权限检查的系统、装置及方法
CN103544054A (zh) * 2007-12-30 2014-01-29 英特尔公司 用于在事务性存储器系统中实现强原子性的方法、装置和系统
CN104793988A (zh) * 2014-01-20 2015-07-22 阿里巴巴集团控股有限公司 跨数据库分布式事务的实现方法和装置
CN105912485A (zh) * 2016-04-01 2016-08-31 中国科学院计算技术研究所 一种基于AHB-Lite协议的访存队列设计方法及其装置
CN109284176A (zh) * 2017-07-20 2019-01-29 龙芯中科技术有限公司 中断响应方法、装置及计算机可读存储介质
CN111752477A (zh) * 2019-03-28 2020-10-09 英特尔公司 用于提供具有低开销的存储器原子性的技术
CN112395093A (zh) * 2020-12-04 2021-02-23 龙芯中科(合肥)技术有限公司 多线程数据处理方法、装置、电子设备及可读存储介质

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3598282B2 (ja) * 2000-09-07 2004-12-08 株式会社ソニー・コンピュータエンタテインメント コンピュータ、その制御方法及びその制御方法を記録した記録媒体
CN102662730B (zh) * 2012-04-26 2015-05-27 龙芯中科技术有限公司 并行多核虚拟机的原子指令模拟方法及虚拟机装置
US10761978B2 (en) * 2018-10-25 2020-09-01 Micron Technology, Inc. Write atomicity management for memory subsystems
CN114327815A (zh) * 2021-12-10 2022-04-12 龙芯中科技术股份有限公司 原子性保持方法、处理器及电子设备

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101079083A (zh) * 2006-05-25 2007-11-28 中国科学院计算技术研究所 一种对访存操作进行权限检查的系统、装置及方法
CN103544054A (zh) * 2007-12-30 2014-01-29 英特尔公司 用于在事务性存储器系统中实现强原子性的方法、装置和系统
CN104793988A (zh) * 2014-01-20 2015-07-22 阿里巴巴集团控股有限公司 跨数据库分布式事务的实现方法和装置
CN105912485A (zh) * 2016-04-01 2016-08-31 中国科学院计算技术研究所 一种基于AHB-Lite协议的访存队列设计方法及其装置
CN109284176A (zh) * 2017-07-20 2019-01-29 龙芯中科技术有限公司 中断响应方法、装置及计算机可读存储介质
CN111752477A (zh) * 2019-03-28 2020-10-09 英特尔公司 用于提供具有低开销的存储器原子性的技术
CN112395093A (zh) * 2020-12-04 2021-02-23 龙芯中科(合肥)技术有限公司 多线程数据处理方法、装置、电子设备及可读存储介质

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023104146A1 (zh) * 2021-12-10 2023-06-15 龙芯中科技术股份有限公司 原子性保持方法、处理器及电子设备

Also Published As

Publication number Publication date
CA3240485A1 (en) 2023-06-15
WO2023104146A1 (zh) 2023-06-15

Similar Documents

Publication Publication Date Title
US11252252B2 (en) Installable web applications
WO2023104146A1 (zh) 原子性保持方法、处理器及电子设备
WO2022111047A1 (zh) 语音播报方法、计算设备及计算机存储介质
EP3754487A1 (en) Branch prediction circuit and control method therefor
CN116955044B (zh) 处理器的缓存工作机制的测试方法、装置、设备及介质
CN114610387A (zh) 一种分支预测方法、处理器及电子设备
US11210449B2 (en) Page display method and device and storage medium
CN116627501B (zh) 物理寄存器的管理方法、装置、电子设备及可读存储介质
CN111221862B (zh) 一种请求处理方法及装置
KR20180127831A (ko) 전자 장치 및 그의 정보 공유 방법
CN110809036A (zh) 资源更新方法及装置
CN111061633B (zh) 一种网页首屏时间检测方法、装置、终端及介质
CN111124627A (zh) 应用程序的调起者确定方法、装置、终端及存储介质
CN114764363B (zh) 提示方法、装置及计算机存储介质
CN110858238A (zh) 一种数据处理的方法和装置
CN115016944A (zh) 一种进程访问方法、装置及电子设备
CN113760465A (zh) 一种事务执行方法、装置、服务器、设备和存储介质
CN113760631A (zh) 页面加载时长确定方法、装置、设备和存储介质
KR20240111815A (ko) 원자성 유지 방법, 프로세서 및 전자기기
CN112954106A (zh) 一种标记通话记录的方法及装置
CN116360859B (zh) 电源域的访问方法、装置、设备及存储介质
CN111382237B (zh) 一种数据处理方法、装置及任务对话系统
CN110119471B (zh) 一种搜索结果一致性的检查方法及装置
CN109542696B (zh) 获取设备数据的方法、装置、可读存储介质及电子设备
CN116050322A (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