CN115454693A - 写后读异常的检测方法、装置、控制器、处理器及介质 - Google Patents
写后读异常的检测方法、装置、控制器、处理器及介质 Download PDFInfo
- Publication number
- CN115454693A CN115454693A CN202211059014.1A CN202211059014A CN115454693A CN 115454693 A CN115454693 A CN 115454693A CN 202211059014 A CN202211059014 A CN 202211059014A CN 115454693 A CN115454693 A CN 115454693A
- Authority
- CN
- China
- Prior art keywords
- write
- entry
- address
- instruction
- table entry
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 40
- 230000005856 abnormality Effects 0.000 title claims abstract description 33
- 238000004364 calculation method Methods 0.000 claims abstract description 134
- 230000004044 response Effects 0.000 claims abstract description 62
- 238000001514 detection method Methods 0.000 claims description 18
- 230000000903 blocking effect Effects 0.000 claims description 6
- 230000008569 process Effects 0.000 claims description 4
- 238000013500 data storage Methods 0.000 description 19
- 230000006870 function Effects 0.000 description 11
- 238000012545 processing Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 6
- 230000002159 abnormal effect Effects 0.000 description 4
- 238000013479 data entry Methods 0.000 description 4
- 238000004519 manufacturing process Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000004590 computer program Methods 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 239000013307 optical fiber Substances 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000012512 characterization method Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 239000000725 suspension Substances 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0706—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
- G06F11/0721—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment within a central processing unit [CPU]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
Abstract
本公开提供了一种写后读异常的检测方法、装置、控制器、处理器及介质,涉及计算机领域,尤其涉及处理器领域。写后读异常的检测方法,包括:响应于粗粒度向量计算指令,在记录表中定位第一表项,并将与粗粒度向量计算指令匹配的写回地址范围写入第一表项,写回地址范围包括首地址和尾地址;响应于与细粒度向量数据匹配的成功写回响应指令,在记录表中定位第二表项,并更新第二表项中的首地址;响应于细粒度向量数据请求指令,判断细粒度向量数据请求指令所请求数据的地址是否落入记录表中任一表项的写回地址范围,若是,则确定检测到写后读异常。本公开能够减少空间占用,在粗粒度指令下以细粒度检测出写后读异常,减少流水线停顿时间。
Description
技术领域
本公开涉及计算机领域,尤其涉及处理器领域,具体涉及一种写后读异常的检测方法、装置、控制器、处理器及介质。
背景技术
近年来,随着人工智能、高性能计算等领域的快速发展,对处理器算力的需求越来越高,在一些针对特定领域定制的ASIC(Application Specific Integrated Circuit,专用集成电路)处理器芯片中,除了传统的标量计算单元,经常需要使用到向量处理器来增加计算并行度进而提高算力。
在向量运算中,类似于传统的标量运算,可能存在很多的RAW(Read After Write,写后读)异常的场景。例如,前面一条向量计算指令的结果需要作为后面一条计算指令的源数据,发生这种情况时,后面的计算指令无法和前面的计算指令很好地流水起来打满硬件流水线,而是需要停顿,等待前面指令的计算结果写回之后才能开始读源操作数。
目前,在采用粗粒度向量计算指令的高性能向量处理器中,所使用的写后读异常的检测机制主要有下述两种实现方式:一种是在向量处理器内部将一条粗粒度向量计算指令转换为多条细粒度向量计算指令后,通过记录已经发射但是未被写回的寄存器编号方式进行写后读异常的判断;或者直接进行粗粒度的停顿处理,也即,等待一个产生写后读异常的粗粒度向量计算指令中的所有结果均写回后再开始执行新的数据读取操作。而第一种方式存在空间资源占用大的问题,第二种方式存在流水线停顿时间较长,性能不友好的问题。
发明内容
本公开提供了一种写后读异常的检测方法、装置、控制器、处理器及介质。
根据本公开的一方面,提供了一种写后读异常的检测方法,包括:
响应于粗粒度向量计算指令,在记录表中定位第一表项,并将与粗粒度向量计算指令匹配的写回地址范围写入第一表项,写回地址范围包括首地址和尾地址;
响应于与细粒度向量数据匹配的成功写回响应指令,在记录表中定位第二表项,并更新第二表项中的首地址;
响应于细粒度向量数据请求指令,判断细粒度向量数据请求指令所请求数据的地址是否落入记录表中任一表项的写回地址范围,若是,则确定检测到写后读异常。
根据本公开的另一方面,提供了一种写后读异常的检测装置,包括:
第一表项数据写入模块,被配置为响应于粗粒度向量计算指令,在记录表中定位第一表项,并将与粗粒度向量计算指令匹配的写回地址范围写入第一表项,写回地址范围包括首地址和尾地址;
第二表项数据更新模块,被配置为响应于与细粒度向量数据匹配的成功写回响应指令,在记录表中定位第二表项,并更新第二表项中的首地址;
请求地址比对模块,被配置为响应于细粒度向量数据请求指令,判断细粒度向量数据请求指令所请求数据的地址是否落入记录表中任一表项的写回地址范围,若是,则确定检测到写后读异常。
根据本公开的另一方面,提供了另一种具有写后读异常的检测功能的控制器,包括:
记录表存储单元;
清零计数器;
置位计数器;
地址比较器;以及
控制器,其中,所述控制器被配置为执行如本公开任一实施例所述的写后读异常的检测方法。
根据公开的另一方面,提供了一种向量处理器,包括本公开实施例所述的具有写后读异常的检测功能的控制器。
根据本公开的另一方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,计算机指令用于使计算机执行本公开任一实施例的写后读异常的检测方法。
本公开实施例的技术方案能够减少空间占用,在并粗粒度指令下以细粒度检测出写后读异常,减少流水线停顿时间。
应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
附图用于更好地理解本方案,不构成对本公开的限定。其中:
图1是本公开实施例提供的一种写后读异常的检测方法的流程图;
图2a是本公开实施例提供的另一种写后读异常的检测方法的流程图;
图2b是本公开实施例提供的又一种写后读异常的检测方法的流程图;
图3是本公开实施例提供的一种写后读异常的检测装置的示意图;
图4是本公开实施例提供的一种并行向量处理器的示意图;
图5是本公开实施例提供的一种具备写后读异常的检测功能的控制器的硬件结构示意图;
图6是本公开实施例提供的一种记录表的格式示意图。
具体实施方式
以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
在一个示例中,图1是本公开实施例提供的一种写后读异常的检测方法的流程图,本实施例可适用于在粗粒度向量指令下进行细粒度流程暂停的情况,该方法可以由写后读异常的检测装置来执行,该装置可以由软件和硬件中的至少一项的方式来实现,并一般可以集成在向量处理器中具有写后读异常的检测功能的控制器中。相应的,如图1所示,该方法包括如下操作:
步骤110、响应于粗粒度向量计算指令,在记录表中定位第一表项,并将与粗粒度向量计算指令匹配的写回地址范围写入第一表项。
其中,粗粒度向量计算指令可以是粗粒度的用于进行向量计算的指令。可选的,粗粒度向量计算指令可以包括计算长度以及单时钟并行度。示例性的,假设粗粒度向量计算指令的计算长度为L,单时钟并行度为P,则表征在L个时钟周期内,依次完成L*P个运算。
记录表可以用于记录粗粒度向量计算指令的关联数据。可选的,记录表中可以包括至少一个数据条目(即表项),每个表项与从指令存储单元中读取出的一个粗粒度向量计算指令相对应,每个表项中记录有该粗粒度向量计算指令的写回地址范围。一般来说,并行向量处理器以L个时钟周期为单位,依次对记录表中的每个表项对应的粗粒度向量计算指令执行匹配的向量计算,针对当前计算的粗粒度向量计算指令,在L个时钟周期的每个时钟周期内,并行的执行P个并行计算,一个时钟周期下执行的P个并行计算,可以理解为针对一个细粒度向量计算指令所执行的计算。
其中,写回地址范围可以包括首地址和尾地址。每个表项中初始化的写回地址范围,可以理解为针对一个粗粒度向量计算指令从数据存储单元中获取数据在向量运算单元进行向量计算后,需要将向量计算结果重新写回至该数据存储单元,而在数据存储单元中具体的写回位置,可以理解为写回地址范围。
相应的,每当检测到从指令存储单元中读取出一个粗粒度向量计算指令时,触发执行步骤110。
第一表项可以是根据检测到的粗粒度向量计算指令,在记录表中定位的,用于存储该粗粒度向量计算指令的写回地址范围的表项。第一表项可以为记录表中一个未被存储任何内容的表项,也可以为存储内容已经失效的表项,本实施例对此并不进行限制。
首地址可以是数据写回的首地址。尾地址可以是数据写回的末位地址。
其中,可以通过一个计数值实时存储与新检测的粗粒度向量计算指令对应的,第一表项在记录表中的位置。
在本公开实施例中,为了便于对粗粒度向量计算指令的管理,可以建立粗粒度向量计算指令与记录表中表项的关联,在每次检测到粗粒度向量计算指令时,对粗粒度向量计算指令进行响应,在记录表中,确定与当前检测到的粗粒度向量计算指令对应的第一表项,从而在第一表项中写入与当前检测到的粗粒度向量计算指令匹配的写回首地址和写回尾地址。
步骤120、响应于与细粒度向量数据匹配的成功写回响应指令,在记录表中定位第二表项,并更新第二表项中的首地址。
其中,细粒度向量数据可以是单条向量指令,也即,一个时钟周期下执行的P个并行计算的执行结果。第二表项可以是根据细粒度向量数据的写回情况,在记录表中定位的表项。成功写回响应指令可以是根据细粒度向量数据完成数据写回时生成的指令,用于指示第二表项中首地址的更新。
如前所述,并行向量处理器可以在一个时钟周期中并行处理P个数据,进而,在每个时钟周期执行完成后,可以计算得到P个结果,进而,可以生成与上述P个结果匹配的细粒度向量数据的成功写回响应指令。
在本公开实施例中,为了便于对细粒度向量数据的写回情况的管理,在每次检测到细粒度向量数据的成功写回响应指令时,可以对与细粒度向量数据匹配的成功写回响应指令进行响应,即在记录表中,确定与该细粒度向量数据的写回地址对应的第二表项,并根据该细粒度向量数据的写回地址,对第二表项中的首地址进行更新。
一般情况下,每当检测到一条细粒度向量数据成功写回指令时,可以将记录表中定位的第二表项的该细粒度向量数据的写回地址,进行加一操作,得到的新地址作为第二表项新的首地址。
如前所述,控制器按照各粗粒度向量计算指令的写回地址范围在记录表中的存储顺序,依次从数据存储单元获取数据,从而在向量运算单元中进行计算,并将计算结果重新写回至数据存储单元中。进而,可以理解为,针对一个粗粒度向量计算指令的当前写回地址指向尾地址时,说明完成了针对该粗粒度向量计算指令的全部数据的写回,进而,可以获取记录表中的下一表项对应的新的粗粒度向量计算指令进行相应的计算。
基于此,本发明实施例可以实时维护当前处于向量计算中的粗粒度向量计算指令对应的写回地址范围在该记录表中的位置,也即第二表项。进而,每当检测到细粒度向量数据的成功写回响应指令时,说明该粗粒度向量计算指令成功的写回了P个数据,进而,可以相应的将第二表项中的首地址朝向尾地址的方向进行更新,直至第二表项中的首地址与尾地址一致时,说明需要将第二表项更新为当前第二表项所在位置的下一表项。
其中,同样可以通过一个计数值实时存储与当前执行并行向量计算的粗粒度向量计算指令对应的,第二表项在记录表中的位置。
步骤130、响应于细粒度向量数据请求指令,判断细粒度向量数据请求指令所请求数据的地址是否落入记录表中任一表项的写回地址范围,若是,则确定检测到写后读异常。
其中,细粒度向量数据请求指令可以用于获取细粒度向量数据。可以理解的是,每当处理一个粗粒度向量计算指令(指令A)时,需要按照时钟周期的要求,以细粒度向量数据为单元,从数据存储单元读取数据。如果当前需要读取的数据是上一个粗粒度向量计算指令(指令B)需要写回的数据所在的位置,此时就发生了写后读异常,需要等待指令A成功完成数据写回后,指令B再去读取数据。
在本公开实施例中,可以在每次检测到细粒度向量数据请求指令时,对细粒度向量数据请求指令进行响应,获取记录表项中的任一表项的写回地址范围,根据各表项的首地址以及尾地址,确定各表项的写回地址范围,并将细粒度向量数据请求指令所请求数据的地址分别与各表项的写回地址范围进行比较。如果细粒度向量数据请求指令所请求数据的地址落入记录表中任一表项的写回地址范围,则确定检测到写后读异常。如果细粒度向量数据请求指令所请求数据的地址未落入记录表中任何表项的写回地址范围,则可以在获取与该细粒度向量数据请求对应的细粒度向量数据后,根据流水线进行相应的数据处理。
本公开实施例的技术方案,通过响应于粗粒度向量计算指令,在记录表中定位第一表项,并将与粗粒度向量计算指令匹配的写回地址范围写入第一表项,进而响应于与细粒度向量数据匹配的成功写回响应指令,在记录表中定位第二表项,并更新第二表项中的首地址,从而响应于细粒度向量数据请求指令,判断细粒度向量数据请求指令所请求数据的地址是否落入记录表中任一表项的写回地址范围,若是,则确定检测到写后读异常。由于本方案无需记录已经发射但是未被写回的寄存器编号,而是根据细粒度向量数据请求指令所请求数据的地址是否落入记录表中任一表项的写回地址范围,判断是否发生写后读异常,即在粗粒度的指令进行细粒度的数据冒险检测,可以降低空间资源的空间占用,还可以尽可能减少流水线停顿时间,解决了现有技术中粗粒度向量指令执行存在的空间资源占用大以及流水线停顿时间较长的问题,能够减少空间占用,在并粗粒度指令下以细粒度检测出写后读异常,减少流水线停顿时间。
在一个示例中,图2a是本公开实施例提供的另一种写后读异常的检测方法的流程图,本实施例给出了一种可选的实施方式。相应的,如图2a所示,该方法包括如下操作:
步骤210、响应于粗粒度向量计算指令,在记录表中定位第一表项,并将与粗粒度向量计算指令匹配的写回地址范围写入第一表项。
在本公开的一个可选实施例中,响应于粗粒度向量计算指令,在记录表中定位第一表项,并将与粗粒度向量计算指令匹配的写回地址范围写入第一表项,可以包括:响应于粗粒度向量计算指令,从置位计数器中读取当前置位计数器数值,并根据当前置位计数器数值在记录表中定位第一表项;在将与粗粒度向量计算指令匹配的写回地址范围写入第一表项后,更新置位计数器的当前置位计数器数值。
其中,置位计数器可以是配置有置位引脚的计数器。当前置位计数器数值可以是置位计数器的当前计数值,用于定位当前需要写入首地址和尾地址的第一表项。
在本公开实施例中,当每次检测到粗粒度向量计算指令时,可以在置位计数器中读取当前置位计数器数值,进而根据当前置位计数器数值,确定当前需要写入首地址和尾地址的第一表项,即与粗粒度向量计算指令匹配的首地址和尾地址。在将与粗粒度向量计算指令匹配的首地址和尾地址写入第一表项后,按照预设步长上调置位计数器的当前置位计数器数值,能够自动确定与当前检测到的粗粒度向量计算指令对应的第一表项,进而将与当前检测到的粗粒度向量计算指令匹配的首地址和尾地址写入第一表项。
在本公开的一个可选实施例中,记录表可以存储在环形存储空间中,记录表中的每个表项中还可以包括状态标识;其中,失效状态的状态标识可以用于指示表项能够更新存储新内容,有效状态的状态标识可以用于指示表项不能更新存储新内容。
其中,状态标识可以用于标识记录表的表项中可否进行数据写入,也即可以反映表项中内容是否有有效。失效状态可以是记录表中表项允许数据写入的状态,表征此时表项中的内容失效。有效状态可以表征记录表中表项的数据为只读状态,即不可进行数据写入,此时表项中的内容有效。
在本公开实施例中,记录表可以存储在环形存储空间中,也可以存储在非环形存储空间。当记录表存储在环形存储空间时,当记录表中表项的状态标识为失效状态时,表征表项能更新存储数据,实现新内容的存储,当记录表中表项的状态标识为有效状态时,表征表项存储有数据,不能存储新的数据,即不能更新存储新内容。本方案将记录表存储在环形存储空间中,可以充分利用存储空间,避免假溢出现象的发生,而通过表项中设置的状态标识的具体状态,可以快速确定表项是否可以进行数据写入,避免对未完成数据写入的粗粒度向量计算指令对应的写回地址范围的丢失,进而可以避免对写后读异常的错检或者漏检。
在本公开的一个可选实施例中,将与粗粒度向量计算指令匹配的写回地址范围写入第一表项,可以包括:在确定第一表项中的状态标识为失效状态时,将与粗粒度向量计算指令匹配的写回地址范围写入第一表项,并将第一表项中的状态标识由失效状态更新为有效状态;在确定第一表项中的状态标识为有效状态时,生成阻塞信息,以等待第一表项中的状态标识由有效状态更新为失效状态。
其中,阻塞信息可以是表征记录表数据已满,无法对第一表项进行数据写入。
在本公开实施例中,可以对与粗粒度向量计算指令匹配的第一表项的数据内容进行解析,获取第一表项的状态标识。如果第一表项中的状态标识为失效状态,则将与粗粒度向量计算指令匹配的写回地址范围写入第一表项,并将第一表项中的状态标识由失效状态更新为有效状态。如果第一表项中的状态标识为有效状态,则生成阻塞信息,以等待第一表项中的状态标识由有效状态更新为失效状态,进而在第一表项中的状态标识为失效状态时,实现第一表项的数据写入。通过对第一表项的状态标识的判别,可以准确识别记录表是否已满,从而在第一表项的状态标识为失效状态时,对第一表项进行数据写入,避免对未完成数据写入的粗粒度向量计算指令对应的写回地址范围的丢失,进而可以避免对写后读异常的错检或者漏检。
步骤220、响应于与细粒度向量数据匹配的成功写回响应指令,在记录表中定位第二表项,并更新第二表项中的首地址。
在本公开的一个可选实施例中,响应于与细粒度向量数据匹配的成功写回响应指令,在记录表中定位第二表项,并更新第二表项中的首地址,可以包括:响应于细粒度向量数据匹配的成功写回响应指令,从清零计数器中读取当前清零计数器数值,并根据当前清零计数器数值在记录表中定位第二表项;更新第二表项中的首地址,并在检测第二表项中的首地址与尾地址相一致时,更新清零计数器的当前清零计数器数值。
其中,当前清零计数器数值可以是清零计数器的当前计数值。
在本公开实施例中,在每次检测到细粒度向量数据成功写回响应时,可以对与细粒度向量数据匹配的成功写回响应指令进行响应,进一步读取清零计数器的当前计数值,得到当前清零计数器数值,进而根据当前清零计数器数值在记录表中定位第二表项。在对第二表项的首地址更新之后,可以将第二表项中的首地址与尾地址进行比较,如果第二表项中的首地址与尾地址相一致,则将清零计数器的当前清零计数器数值加一,实现对当前清零计数器数值的更新。通过清零计数器可以对粗粒度向量指令的细粒度的数据写回地址进行定位,还可以将以细粒度进行数据写回的,粗粒度向量计算指令进行统计,在粗粒度与细粒度场景下,实现对指令的协同管理。
在本公开的一个可选实施例中,在检测第二表项中的首地址与尾地址相一致之后,还可以包括:将第二表项中的状态标识由有效状态更新为失效状态。
在本公开实施例中,当检测到第二表项中的首地址与尾地址一致时,可以确定与第二表项中写回地址范围匹配的细粒度向量数据全部完成写回,进而将第二表项的状态标识由有效状态,更新为失效状态,对第二表项中原本记录的写回地址范围进行删除,减少无效数据的空间占用。
步骤230、响应于细粒度向量数据请求指令,识别记录表中状态标识为有效状态的各目标表项,并获取各目标表项的写回地址范围。
其中,目标表项可以是记录表中状态标识为有效状态的数据条目。
在本公开实施例中,可以在每次检测到细粒度向量数据请求时,对记录表中各数据条目的状态标识进行识别,并将状态标识为有效状态的数据条目作为目标表项,从而进一步获取各目标表项的首地址以及尾地址,从而根据各目标表项的首地址以及尾地址确定各目标表项的写回地址范围。
步骤240、将各目标表项的写回地址范围以及请求数据的地址共同输入至地址比较器中,获取请求数据的地址是否落入记录表中任一表项的写回地址范围的比较结果,若是,则确定检测到写后读异常。
其中,地址比较器可以用于对数据存储地址进行比较。
在本公开实施例中,可以将各目标表项的写回地址范围以及请求数据的地址同时输入至地址比较器中,通过地址比较器依次将各目标表项的写回地址范围与请求数据的地址进行比较,得到请求数据的地址是否落入记录表中任一表项的写回地址范围的比较结果。如果请求数据的地址落入记录表中任一表项的写回地址范围,则确定检测到写后读异常,如果请求数据的地址未落入记录表中任何一表项的写回地址范围,则根据流水线进行数据处理。在请求数据的地址落入记录表中任一表项的写回地址范围,确定检测到写后读异常,可以确保及时发现数据冒险,保证数据读取的准确性。
在本公开的一个可选实施例中,响应于粗粒度向量计算指令,在记录表中定位第一表项,可以包括:在多个向量计算单元以流水线的形式对各粗粒度向量计算指令进行计算的过程中,响应于粗粒度向量计算指令,在记录表中定位第一表项;在确定检测到写后读异常后,还可以包括:生成流水线停顿指示发送至各向量计算单元。
其中,流水线停顿指示可以是指示停顿流水线的信号,该流水线停顿指示主要停顿的是以细粒度向量数据为单元,从数据存储单元读取数据的行为,当前已经获取的细粒度向量数据可以继续的进行并行计算。可以理解的是,上述流水线停顿指示可以发生在对粗粒度向量计算指令中的首个细粒度向量计算指令的处理过程,也可以发生在中间的某一个细粒度向量计算指令的处理过程,还可以发生在末位细粒度向量计算指令的处理过程,本实施例对此并不进行限制。向量计算单元可以用于对细粒度向量数据进行计算以及相关数据管理。
在本公开实施例中,检测到粗粒度向量计算指令之后,可以利用多个向量计算单元以流水线的形式将与粗粒度向量计算指令匹配的细粒度向量数据进行并行计算,实现对粗粒度向量计算指令的响应,进而在记录表中定位第一表项。在检测到写后读异常之后,可以生成流水线停顿指示,并将流水线停顿指示发送至各向量计算单元,从而在出现写后读异常的情况下,及时停止数据计算,防止错误数据结果的输出。
本公开实施例的技术方案,通过响应于粗粒度向量计算指令,在记录表中定位第一表项,并将与粗粒度向量计算指令匹配的写回地址范围写入第一表项,进而响应于与细粒度向量数据匹配的成功写回响应指令,在记录表中定位第二表项,并更新第二表项中的首地址,从而响应于细粒度向量数据请求指令,识别记录表中状态标识为有效状态的各目标表项,并获取各目标表项的写回地址范围,进一步将各目标表项的写回地址范围以及请求数据的地址共同输入至地址比较器中,获取请求数据的地址是否落入记录表中任一表项的写回地址范围的比较结果,若是,则确定检测到写后读异常。由于本方案无需记录已经发射但是未被写回的寄存器编号,而是根据细粒度向量数据请求的请求地址是否落入记录表中任一表项的写回地址范围,判断是否发生写后读异常,即在粗粒度的指令进行细粒度的数据冒险检测,确保没有RAM写后读异常状况的发生,保证数据读取的准确性,可以降低空间资源的空间占用,还可以尽可能减少流水线停顿时间,解决了现有技术中粗粒度向量指令执行存在的空间资源占用大以及流水线停顿时间较长的问题,能够减少空间占用,在并粗粒度指令下以细粒度检测出数据读取异常,减少流水线停顿时间。
在一个示例中,图2b是本公开实施例提供的又一种写后读异常的检测方法的流程图,如图2b所示,方法包括:
步骤2100、在多个向量计算单元以流水线的形式对各粗粒度向量计算指令进行计算的过程中,响应于粗粒度向量计算指令,从置位计数器中读取当前置位计数器数值,并根据当前置位计数器数值在记录表中定位第一表项。
步骤2200、在确定第一表项中的状态标识为失效状态时,将与粗粒度向量计算指令匹配的写回地址范围写入第一表项,并将第一表项中的状态标识由失效状态更新为有效状态。
步骤2300、在确定第一表项中的状态标识为有效状态时,生成阻塞信息,以等待第一表项中的状态标识由有效状态更新为失效状态,并更新置位计数器的当前置位计数器数值。
步骤2400、响应于与细粒度向量数据匹配的成功写回响应指令,从清零计数器中读取当前清零计数器数值,并根据当前清零计数器数值在记录表中定位第二表项。
步骤2500、更新第二表项中的首地址,并在检测第二表项中的首地址与尾地址相一致时,更新清零计数器的当前清零计数器数值。
步骤2600、在检测第二表项中的首地址与尾地址相一致之后,将第二表项中的状态标识由有效状态更新为失效状态。
步骤2700、识别记录表中状态标识为有效状态的各目标表项,并获取各目标表项的写回地址范围。
步骤2800、将各目标表项的写回地址范围以及请求数据的地址共同输入至地址比较器中,获取请求数据的地址是否落入记录表中任一表项的写回地址范围的比较结果。
步骤2900、生成流水线停顿指示发送至各向量计算单元。
本公开实施例的技术方案,通过。由于本方案无需记录已经发射但是未被写回的寄存器编号,而是根据细粒度向量数据请求的请求地址是否落入记录表中任一表项的写回地址范围,判断是否发生写后读异常,即在粗粒度的指令进行细粒度的写后读异常的检测,可以降低空间资源的空间占用,还可以尽可能减少流水线停顿时间,并且本方案仅采用了置位计数器、清零计数器以及地址比较器就可实现写后读异常的检测,可以大大简化写后读异常的检测的硬件构成,解决了现有技术中粗粒度向量指令执行存在的空间资源占用大以及流水线停顿时间较长的问题,能够减少空间占用,在并粗粒度指令下以细粒度检测出写后读异常,减少流水线停顿时间。
本公开实施例还提供了一种写后读异常的检测装置,用于执行上述的写后读异常的检测方法。
图3是本公开实施例提供的一种写后读异常的检测装置的示意图,如图3所示,该装置包括:第一表项数据写入模块310、第二表项数据更新模块320以及请求地址比对模块330,其中:
第一表项数据写入模块310,被配置为响应于粗粒度向量计算指令,在记录表中定位第一表项,并将与粗粒度向量计算指令匹配的写回地址范围写入第一表项,写回地址范围包括首地址和尾地址;
第二表项数据更新模块320,被配置为响应于与细粒度向量数据匹配的成功写回响应指令,在记录表中定位第二表项,并更新第二表项中的首地址;
请求地址比对模块330,被配置为响应于细粒度向量数据请求指令,判断细粒度向量数据请求指令所请求数据的地址是否落入记录表中任一表项的写回地址范围,若是,则确定检测到写后读异常。
本公开实施例的技术方案,通过响应于粗粒度向量计算指令,在记录表中定位第一表项,并将与粗粒度向量计算指令匹配的写回地址范围写入第一表项,进而响应于与细粒度向量数据匹配的成功写回响应指令,在记录表中定位第二表项,并更新第二表项中的首地址,从而响应于细粒度向量数据请求指令,判断细粒度向量数据请求指令所请求数据的地址是否落入记录表中任一表项的写回地址范围,若是,则确定检测到写后读异常。由于本方案无需记录已经发射但是未被写回的寄存器编号,而是根据细粒度向量数据请求指令所请求数据的地址是否落入记录表中任一表项的写回地址范围,判断是否发生写后读异常,即在粗粒度的指令进行细粒度的数据冒险检测,可以降低空间资源的空间占用,还可以尽可能减少流水线停顿时间,解决了现有技术中粗粒度向量指令执行存在的空间资源占用大以及流水线停顿时间较长的问题,能够减少空间占用,在并粗粒度指令下以细粒度检测出写后读异常,减少流水线停顿时间。
可选的,第一表项数据写入模块310包括第一表项定位单元以及当前值置位计数器数值更新单元,其中:第一表项定位单元,被配置为响应于粗粒度向量计算指令,从置位计数器中读取当前置位计数器数值,并根据当前置位计数器数值在记录表中定位第一表项;前值置位计数值更新单元,被配置为在将与粗粒度向量计算指令匹配的写回地址范围写入第一表项后,更新置位计数器的当前置位计数器数值。
可选的,第二表项数据更新模块320,被配置为响应于与细粒度向量数据匹配的成功写回响应指令,从清零计数器中读取当前清零计数器数值,并根据当前清零计数器数值在记录表中定位第二表项;更新第二表项中的首地址,并在检测所述第二表项中的首地址与尾地址相一致时,更新清零计数器的当前清零计数器数值。
可选的,所述记录表存储在环形存储空间中,记录表中的每个表项中还包括状态标识;其中,失效状态的状态标识用于指示表项能够更新存储新内容,有效状态的状态标识用于指示表项不能更新存储新内容。
可选的,前值置位计数器数值更新单元,被配置为在确定第一表项中的状态标识为失效状态时,将与粗粒度向量计算指令匹配的写回地址范围写入第一表项,并将第一表项中的状态标识由失效状态更新为有效状态;在确定第一表项中的状态标识为有效状态时,生成阻塞信息,以等待第一表项中的状态标识由有效状态更新为失效状态。
可选的,写后读异常的检测装置还包括状态更新模块,被配置为将第二表项中的状态标识由有效状态更新为失效状态。
可选的,请求地址比对模块330,被配置为识别记录表中状态标识为有效状态的各目标表项,并获取各目标表项的写回地址范围;将各目标表项的写回地址范围以及所述请求数据的地址共同输入至地址比较器中,获取请求数据的地址是否落入记录表中任一表项的写回地址范围的比较结果。
可选的,第一表项定位单元被配置为在多个向量计算单元以流水线的形式对各粗粒度向量计算指令进行计算的过程中,响应于粗粒度向量计算指令,在记录表中定位第一表项。
可选的,写后读异常的检测装置还包括流水线停顿指示发送模块,被配置为生成流水线停顿指示发送至各向量计算单元。
图4是本公开实施例提供的一种并行向量处理器的示意图,如图4所示,并行向量处理器包括指令存储单元、取指单元、指令译码单元、具有写后读异常的检测功能的控制器、数据存储单元和向量运算单元。其中,数据存储单元包括输入数据存储单元以及输出数据存储单元。取指单元从指令存储单元中读取指令,对指令进行解析译码之后,产生对向量运算单元的控制信号和控制参数。向量运算单元从输入数据存储单元中获取源操作数,进行计算后结果写入输出数据存储单元。具有写后读异常的检测功能的控制器,用于针对RAW写后读异常进行检测和判断,进而修改相应的状态标识的状态,在检测到写后读异常时停顿流水线,在写后读异常解除后恢复流水线的工作状态。
具体的,指令存储单元中存储有至少一条粗粒度向量计算指令,通过取指单元逐条读取粗粒度向量计算指令,并通过指令译码单元对当前读取的粗粒度向量计算指令进行解析译码之后发送至控制器,控制器根据接收到的每个粗粒度向量计算指令的指令译码结果(此时,可以检测到粗粒度向量计算指令),产生对向量运算单元的控制信号和控制参数,控制器根据控制信号以及控制参数,从数据存储单元中读取粗粒度向量计算指令在每一个时钟周期所需的P个源操作数(此时,可以相应产生细粒度向量数据请求),并将读取到的数据存储在输入数据存储单元中。
相应的,控制器可以再以P个源操作数为单元,从输入数据存储单元中并行的读取源操作数,并发送至各向量计算单元,各向量计算单元每次对P个源操作数进行并行计算,并将计算结果存储至输出数据存储单元,以供控制器将输出数据存储单元中存储的各项数据重新写回至数据存储单元(此时,可以相应产生细粒度向量数据的成功写回响应)。
相应的,控制器通过内置的写后读异常的检测处理单元,每当检测到控制器接收到的一个粗粒度向量计算指令的指令译码结果时,在记录表中定位第一表项,并将与粗粒度向量计算指令匹配的写回地址范围写入第一表项;
每当检测到细粒度向量数据的成功写回响应时,在记录表中定位第二表项,并更新第二表项中的首地址;
每当检测到细粒度向量数据请求时,判断细粒度向量数据请求的请求地址是否落入记录表中任一表项的写回地址范围,若是,则生成流水线停顿指示。
本公开实施例还提供了一种具有写后读异常的检测功能的控制器,包括记录表存储单元、清零计数器、置位计数器、地址比较器,以及控制器。其中,控制器可以被配置为执行本公开任一实施例中的写后读异常的检测方法。在本公开实施例中记录表存储单元、清零计数器、置位计数器以及地址比较器构成写后读异常的检测处理单元。具备写后读异常的检测功能的控制器的硬件结构可以参见图5。如图5所示,控制器将数据写回响应发送至写后读异常的检测处理单元,写后读异常的检测处理单元的清零计数器通过一个当前清零计数器数值实时存储与当前执行并行向量计算的粗粒度向量计算指令对应的,第二表项在记录表中的位置。写后读异常的检测处理单元的置位计数器,通过一个当前置位计数器数值实时存储与新检测的粗粒度向量计算指令对应的,第一表项在记录表中的位置,并通过地址比较器将有效状态的写回地址范围与请求地址进行比对,生成流水线停顿指示,从而将流水线停顿指示发送至控制器,由控制器停止流水线。
其中,记录表存储单元被配为存储记录表。
可选的,记录表存储单元可以为环形存储单元。
记录表中记录有当前发射出去的若干条指令的写回地址范围,由于在粗粒度向量计算指令中,写回地址不再是一个,而是连续的多个,为了节省存储空间,使判断比较逻辑实现更方便,选择存储写回地址范围的首地址(base_addr)和尾地址(end_addr),无论粗粒度向量计算指令中配置的计算长度L为多少,都只需要固定存储两个地址。
记录表中的每个entry(表项)都对应了一条指令,每个entry中记录三项内容,除了前面提到的首地址和尾地址,还包括一个宽度为1bit的状态标识,表示当前entry(条目)中的内容是有效状态还是失效状态的,只有当entry中内容是有效状态时,才会被用来进行写后读异常的判断和检测。记录表的格式可参见图6。
每当在记录表中写入一个entry,就将置位计数器的当前置位计数器数值加一,从而保证下一条粗粒度向量计算指令向记录表中写数据时写入到一个新的entry中。而当一条粗粒度向量计算指令想要往置位计数器指向的当前entry中写入内容时,如果此时该entry的状态标志为有效状态,说明当前所有的记录表entry都满了,此时需要生成流水线停顿指示,停顿流水线。当一条指令的结果写回操作每成功写回一个细粒度向量数据时,就对当前清零计数器所指向的记录表entry中的内容进行一次更新,由于写回是顺序的,因此可以更新base_addr,一般是可以将base_addr进行加一操作。当某次更新表项操作中更新后的base_addr和end_addr相等了,说明当前entry中所指定的写回地址范围已经全部成功写回,可以将状态标识的状态置位为失效状态,并且将清零计数器的当前清零计数器数值加一。当一条指令在发出细粒度向量数据请求之前,需要将每个请求地址,和记录表中状态标识为有效状态的entry中的写回地址范围进行对比。如果当前的请求地址落在任意一个表项的写回地址范围内,说明此时存在RAW写后读异常,需要停顿流水线,停止发出细粒度向量数据请求。而等到当前细粒度向量数据请求,和记录表中所有状态标识为有效状态的表项的写回地址范围都没有重叠时,说明此时不再存在RAW写后读异常的情况,可以恢复流水线到工作状态。
本公开实施例中还提供一种向量处理器,该向量处理器可以包括具备写后读异常的检测功能的控制器。
本公开实施例中具有写后读异常的检测功能的控制器以及向量处理器,可以执行写后读异常的检测方法,具备上述实施例中描述的有益效果,在此不做赘述。
本公开还提供一种存储计算机程序的计算机存储介质,所述计算机程序在由计算机处理器执行时用于执行本发明上述实施例任一所述的写后读异常的检测方法:响应于粗粒度向量计算指令,在记录表中定位第一表项,并将与粗粒度向量计算指令匹配的写回地址范围写入第一表项,写回地址范围包括首地址和尾地址;响应于与细粒度向量数据匹配的成功写回响应指令,在记录表中定位第二表项,并更新第二表项中的首地址;响应于细粒度向量数据请求指令,判断细粒度向量数据请求指令所请求数据的地址是否落入记录表中任一表项的写回地址范围,若是,则确定检测到写后读异常。
本公开实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ReadOnly Memory,ROM)、可擦式可编程只读存储器((Erasable Programmable Read OnlyMemory,EPROM)或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、电线、光缆、射频(Radio Frequency,RF)等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言,诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN)连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。
Claims (13)
1.一种写后读异常的检测方法,包括:
响应于粗粒度向量计算指令,在记录表中定位第一表项,并将与粗粒度向量计算指令匹配的写回地址范围写入第一表项,写回地址范围包括首地址和尾地址;
响应于与细粒度向量数据匹配的成功写回响应指令,在记录表中定位第二表项,并更新第二表项中的首地址;
响应于细粒度向量数据请求指令,判断细粒度向量数据请求指令所请求数据的地址是否落入记录表中任一表项的写回地址范围,若是,则确定检测到写后读异常。
2.根据权利要求1所述的方法,其中,所述响应于粗粒度向量计算指令,在记录表中定位第一表项,并将与粗粒度向量计算指令匹配的写回地址范围写入第一表项,包括:
响应于粗粒度向量计算指令,从置位计数器中读取当前置位计数器数值,并根据当前置位计数器数值在记录表中定位第一表项;
在将与粗粒度向量计算指令匹配的写回地址范围写入第一表项后,更新置位计数器的当前置位计数器数值。
3.根据权利要求1所述的方法,其中,所述响应于与细粒度向量数据匹配的成功写回响应指令,在记录表中定位第二表项,并更新第二表项中的首地址,包括:
响应于与细粒度向量数据匹配的成功写回响应指令,从清零计数器中读取当前清零计数器数值,并根据当前清零计数器数值在记录表中定位第二表项;
更新第二表项中的首地址,并在检测所述第二表项中的首地址与尾地址相一致时,更新清零计数器的当前清零计数器数值。
4.根据权利要求1-3任一项所述的方法,其中,所述记录表存储在环形存储空间中,记录表中的每个表项中还包括状态标识;
其中,失效状态的状态标识用于指示表项能够更新存储新内容,有效状态的状态标识用于指示表项不能更新存储新内容。
5.根据权利要求4所述的方法,其中,将与粗粒度向量计算指令匹配的写回地址范围写入第一表项,包括:
在确定第一表项中的状态标识为失效状态时,将与粗粒度向量计算指令匹配的写回地址范围写入第一表项,并将第一表项中的状态标识由失效状态更新为有效状态;
在确定第一表项中的状态标识为有效状态时,生成阻塞信息,以等待第一表项中的状态标识由有效状态更新为失效状态。
6.根据权利要求5所述的方法,其中,在检测所述第二表项中的首地址与尾地址相一致之后,还包括:
将第二表项中的状态标识由有效状态更新为失效状态。
7.根据权利要求4所述的方法,其中,所述判断细粒度向量数据请求指令所请求数据的地址是否落入记录表中任一表项的写回地址范围,包括:
识别记录表中状态标识为有效状态的各目标表项,并获取各目标表项的写回地址范围;
将各目标表项的写回地址范围以及所述请求数据的地址共同输入至地址比较器中,获取请求数据的地址是否落入记录表中任一表项的写回地址范围的比较结果。
8.根据权利要求1所述的方法,其中,响应于粗粒度向量计算指令,在记录表中定位第一表项,包括:
在多个向量计算单元以流水线的形式对各粗粒度向量计算指令进行计算的过程中,响应于粗粒度向量计算指令,在记录表中定位第一表项;
在确定检测到写后读异常后,还包括:
生成流水线停顿指示发送至各向量计算单元。
9.一种写后读异常的检测装置,包括:
第一表项数据写入模块,被配置为响应于粗粒度向量计算指令,在记录表中定位第一表项,并将与粗粒度向量计算指令匹配的写回地址范围写入第一表项,写回地址范围包括首地址和尾地址;
第二表项数据更新模块,被配置为响应于与细粒度向量数据匹配的成功写回响应指令,在记录表中定位第二表项,并更新第二表项中的首地址;
请求地址比对模块,被配置为响应于细粒度向量数据请求指令,判断细粒度向量数据请求指令所请求数据的地址是否落入记录表中任一表项的写回地址范围,若是,则确定检测到写后读异常。
10.一种具有写后读异常的检测功能的控制器,包括:
记录表存储单元;
清零计数器;
置位计数器;
地址比较器;以及
控制器,其中,所述控制器被配置为执行如权利要求1-7任一项所述的写后读异常的检测方法。
11.根据权利要求10所述的控制器,其中,记录表存储单元为环形存储单元。
12.一种向量处理器,包括如权利要求10或11所述的具有写后读异常的检测功能的控制器。
13.一种存储有计算机指令的非瞬时计算机可读存储介质,其中,计算机指令用于使计算机执行根据权利要求1-8中任一项的写后读异常的检测方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211059014.1A CN115454693B (zh) | 2022-08-30 | 2022-08-30 | 写后读异常的检测方法、装置、控制器、处理器及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211059014.1A CN115454693B (zh) | 2022-08-30 | 2022-08-30 | 写后读异常的检测方法、装置、控制器、处理器及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115454693A true CN115454693A (zh) | 2022-12-09 |
CN115454693B CN115454693B (zh) | 2023-11-14 |
Family
ID=84300017
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211059014.1A Active CN115454693B (zh) | 2022-08-30 | 2022-08-30 | 写后读异常的检测方法、装置、控制器、处理器及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115454693B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6470445B1 (en) * | 1999-09-07 | 2002-10-22 | Hewlett-Packard Company | Preventing write-after-write data hazards by canceling earlier write when no intervening instruction uses value to be written by the earlier write |
US20080288744A1 (en) * | 2007-05-14 | 2008-11-20 | Apple Inc. | Detecting memory-hazard conflicts during vector processing |
CN104765588A (zh) * | 2014-01-07 | 2015-07-08 | 三星电子株式会社 | 采用置信度和采样的写后读危险预测器 |
US20180321943A1 (en) * | 2016-01-20 | 2018-11-08 | Cambricon Technologies Corporation Limited | Data read-write scheduler and reservation station for vector operations |
CN110825436A (zh) * | 2018-08-10 | 2020-02-21 | 北京百度网讯科技有限公司 | 应用于人工智能芯片的计算方法和人工智能芯片 |
CN110825437A (zh) * | 2018-08-10 | 2020-02-21 | 北京百度网讯科技有限公司 | 用于处理数据的方法和装置 |
-
2022
- 2022-08-30 CN CN202211059014.1A patent/CN115454693B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6470445B1 (en) * | 1999-09-07 | 2002-10-22 | Hewlett-Packard Company | Preventing write-after-write data hazards by canceling earlier write when no intervening instruction uses value to be written by the earlier write |
US20080288744A1 (en) * | 2007-05-14 | 2008-11-20 | Apple Inc. | Detecting memory-hazard conflicts during vector processing |
CN104765588A (zh) * | 2014-01-07 | 2015-07-08 | 三星电子株式会社 | 采用置信度和采样的写后读危险预测器 |
US20180321943A1 (en) * | 2016-01-20 | 2018-11-08 | Cambricon Technologies Corporation Limited | Data read-write scheduler and reservation station for vector operations |
CN110825436A (zh) * | 2018-08-10 | 2020-02-21 | 北京百度网讯科技有限公司 | 应用于人工智能芯片的计算方法和人工智能芯片 |
CN110825437A (zh) * | 2018-08-10 | 2020-02-21 | 北京百度网讯科技有限公司 | 用于处理数据的方法和装置 |
Non-Patent Citations (1)
Title |
---|
郭振华;吴艳霞;张国印;戴葵;: "面向ASCRA的循环流水启动间距自动分析及优化", 计算机学报, no. 10 * |
Also Published As
Publication number | Publication date |
---|---|
CN115454693B (zh) | 2023-11-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9256428B2 (en) | Load latency speculation in an out-of-order computer processor | |
US10579386B2 (en) | Microprocessor for gating a load operation based on entries of a prediction table | |
CN112000370B (zh) | 循环指令的处理方法、装置、设备和存储介质 | |
US9229746B2 (en) | Identifying load-hit-store conflicts | |
JP7118984B2 (ja) | ロード命令のメモリ・アクセスを回避するためのコンピュータ実装方法、システム、およびコンピュータ・プログラム | |
KR102132805B1 (ko) | 커널 모듈을 위한 멀티코어 메모리 데이터 레코더 | |
JPH0619707A (ja) | 情報処理装置 | |
US20080148241A1 (en) | Method and apparatus for profiling heap objects | |
CN110825437B (zh) | 用于处理数据的方法和装置 | |
US10564691B2 (en) | Reducing power consumption in a multi-slice computer processor | |
CN111208933A (zh) | 数据访问的方法、装置、设备和存储介质 | |
US10824494B2 (en) | Operation of a multi-slice processor implementing exception handling in a nested translation environment | |
US9652245B2 (en) | Branch prediction for indirect jumps by hashing current and previous branch instruction addresses | |
US9081895B2 (en) | Identifying and tagging breakpoint instructions for facilitation of software debug | |
CN115454693B (zh) | 写后读异常的检测方法、装置、控制器、处理器及介质 | |
CN114780409A (zh) | 基于程序运行进程的断点设置方法、电子设备和存储介质 | |
US10528352B2 (en) | Blocking instruction fetching in a computer processor | |
US20190340097A1 (en) | Diagnostic data capture | |
KR101225577B1 (ko) | 어셈블리 언어 코드의 분석 장치 및 방법 | |
CN118689543A (zh) | 数据处理方法、装置、电子设备和存储介质 | |
CN115903558A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |