CN106991073B - 用于向量运算的数据读写调度器及保留站 - Google Patents

用于向量运算的数据读写调度器及保留站 Download PDF

Info

Publication number
CN106991073B
CN106991073B CN201610038178.4A CN201610038178A CN106991073B CN 106991073 B CN106991073 B CN 106991073B CN 201610038178 A CN201610038178 A CN 201610038178A CN 106991073 B CN106991073 B CN 106991073B
Authority
CN
China
Prior art keywords
vector
write
instruction
read
data
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.)
Active
Application number
CN201610038178.4A
Other languages
English (en)
Other versions
CN106991073A (zh
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.)
Beijing Zhongke Cambrian Technology Co Ltd
Original Assignee
Cambricon Technologies 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 Cambricon Technologies Corp Ltd filed Critical Cambricon Technologies Corp Ltd
Priority to CN201610038178.4A priority Critical patent/CN106991073B/zh
Priority to CN201810455211.2A priority patent/CN108595371B/zh
Priority to PCT/CN2016/078576 priority patent/WO2017124649A1/zh
Publication of CN106991073A publication Critical patent/CN106991073A/zh
Priority to US16/039,605 priority patent/US10223115B2/en
Priority to US16/183,603 priority patent/US10521228B2/en
Priority to US16/183,612 priority patent/US10496404B2/en
Application granted granted Critical
Publication of CN106991073B publication Critical patent/CN106991073B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7839Architectures of general purpose stored program computers comprising a single central processing unit with memory
    • G06F15/7842Architectures of general purpose stored program computers comprising a single central processing unit with memory on one IC chip (single chip microcontrollers)
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8053Vector processors
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7839Architectures of general purpose stored program computers comprising a single central processing unit with memory
    • G06F15/7842Architectures of general purpose stored program computers comprising a single central processing unit with memory on one IC chip (single chip microcontrollers)
    • G06F15/7846On-chip cache and off-chip main memory
    • 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
    • G06F9/3824Operand accessing
    • 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
    • G06F9/3824Operand accessing
    • G06F9/3826Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
    • 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
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • 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
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Advance Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Complex Calculations (AREA)

Abstract

本披露提供了一种用于向量运算的数据读写调度器及保留站。在该数据读写调度器中,通过设置读取指令缓存模块和写入指令缓存模块,并基于两者相互探测冲突指令,在存在冲突的情况下,暂停指令的执行,待时机满足后重新执行指令,从而解决指令之间的读后写冲突和写后读冲突,保证提供给向量运算部件正确的数据,具有较好的推广应用价值。

Description

用于向量运算的数据读写调度器及保留站
技术领域
本披露涉及计算机技术领域,尤其涉及一种用于向量运算的数据读写调度器及保留站。
背景技术
向量运算尤其是矩阵运算,被广泛用于机器学习,模式识别,图像处理,图计算等领域。特别是近年来发展起来的深度学习算法,由于这些深度学习算法具有较高的识别准确度以及较好的可并行性,受到日益增多的关注。
向量读写指令会在单个指令内部同时读写多个数据,多个向量读写指令之间往往由于算法的原因,存在相互依赖关系,一方面向量读写指令之后可能会存在与之读取地址有交叠的向量写入指令,即读后写冲突,另一方面向量写入指令之后可能会存在与之写入地址有交叠的向量读取指令,即写后读冲突。此外,由于向量读写指令的读写数据连续性,因而利用其该特性可以加快数据读写速率。
对于目前的常用的图形处理器,其可以支持各种复杂的向量运算,通过通用寄存器堆和通用流处理单元执行通用的SIMD指令来支持向量运算。但是,由于其主要执行图形图像运算,而且通过大量的额外寄存器来缓存读取数据,以及大量的计算部件来并行读取与执行计算,因而,其不仅需要RAM支持多个读写通道,增加了片上RAM的大小限制,同时,在计算部件有限,需要进行大量数据运算时,仍然需要较多的指令,增加了前段译码工作的开销。
对于通用处理器来说,其使用SISD指令进行复杂的向量运算。这样,不仅需要较多的指令用于处理向量运算,同样在处理读后写相关和写后读相关时,需要更多的寄存器组来记录相关信息,这样大幅增加了向量运算的开销。
发明内容
(一)要解决的技术问题
鉴于上述技术问题,本披露提供了一种用于向量运算的数据读写调度器及保留站,以克服现有向量计算中读后写冲突和写后读冲突。
(二)技术方案
根据本披露的一个方面,提供了一种用于向量运算的数据读取调度器。该数据读取调度器包括:指令缓存310,用于缓存向量读取指令;读取指令预处理模块320,包括至少一读取指令预处理单元,该读取指令预处理单元接收由指令缓存310输出的向量读取指令,检测该向量读取指令与写入指令缓存模块350中存放的向量写入指令之间是否存在写后读冲突,如果是,则将存在写后读冲突的向量写入指令作为该向量读取指令依赖的向量写入指令;读取指令缓存模块340,包括至少一读取指令缓存单元,该读取指令缓存单元用于接收并缓存向量读取指令与其依赖的向量写入指令,并且依据从读取控制模块得到的该向量读取指令的执行状态以及从写入控制模块得到的其依赖的向量写入指令的执行状态,动态更新其缓存的向量读取指令的状态,并发射符合条件的向量读取指令;读取控制模块360,包括至少一读取控制单元,该读取控制单元在接收到读取指令缓存单元发射的向量读取指令,从其中解析出具体的单次读取请求,依据该向量读取指令所依赖的向量写入指令的状态决定执行单次读取请求的时机,在时机满足时,发送单次读取请求给片上RAM,从片上RAM接收的输入数据,将该输入数据存入读取数据缓存模块380中,等待向量运算部件使用。
根据本披露的另一个方面,还提供了一种用于向量运算的数据写入调度器。该数据写入调度器包括:指令缓存310,用于缓存向量写入指令;写入数据缓存390,用于缓存需要写入片上RAM200的写入数据;写入指令预处理单元330,用于接收由指令缓存310输入的向量写入指令,检测该向量写入指令和读取指令缓存模块340中存放的向量读取指令之间是否存在读后写冲突,如果是,则将存在读后写冲突的向量读取指令作为给向量写入指令依赖的向量读取指令;写入指令缓存单元350,用于接收写入指令预处理单元330处理得到的向量写入指令,并且依据读取控制模块360和写入控制模块370相应指令的执行状态,动态更新其缓存的向量写入指令的状态,并发射符合条件的向量写入指令;以及写入控制模块370,用于接收写入指令缓存单元350发射的向量写入指令,从其中解析出具体的单次写入请求,从写入数据缓存390接收写入数据,依据从读取控制模块360获取该向量写入指令所依赖的向量读取指令的状态来决定执行单次写入请求的时机,在时机满足时,发送单次写入请求和写入数据给片上RAM200,然后从片上RAM200接收写入结果的反馈。
根据本披露的再一个方面,还提供了一种用于向量运算的数据读写调度器。该数据读写调度器包括:上述的数据读取调度器和数据写入调度器;其中,数据读取调度器和数据写入调度器共用指令缓存310、写入指令缓存模块350、读取指令缓存模块340、读取控制模块360和写入控制模块370。
根据本披露的又一个方面,还提供了一种用于向量运算的保留站。该保留站包括:I/O接口100、片上RAM200、数据读写调度器300、译码器400和向量运算部件500。其中:片上RAM200,用于存储向量运算所需要的输入数据和计算得到的输出数据。I/O接口100,用于芯片外部对片上RAM200的读写访问,包括:将需要处理的输入数据加载到片上RAM200,然后在运算结束后将计算得到的输出数据搬到芯片外部。译码器400,用于从外部指令缓存队列中读取指令,并且将其译码成具体的向量读取指令、向量写入指令和向量运算指令,将向量读取指令、向量写入指令交由数据读写调度器300进行执行;将向量运算指令交由向量运算部件500进行执行。数据读写调度器300,为上述的数据读写调度器;向量运算部件500,用于在接收到译码器下发的向量运算指令后,从数据读写调度器接收输入数据进行运算,然后将运算得到的输出数据传送至数据读写调度器300进行写入操作。
(三)有益效果
从上述技术方案可以看出,本披露用于向量运算的数据读写调度器及保留站具有以下有益效果:
(1)能够处理向量读写指令之间的依赖关系,解决指令之间的读后写冲突和写后读冲突,保证提供给向量运算部件正确的数据;
(2)在保证提供正确数据给向量运算部件的同时,能够通过乱序执行向量读取指令来增加读取数据的速度,并且增加片上RAM的利用效率;
(3)可以高效稳定的为向量运算部件提供向量数据,并且快速写回计算得到的向量结果,提高向量运算部件的利用效率。
附图说明
图1为根据本披露实施例用于向量运算的保留站的结构示意图;
图2为图1所示保留站中数据读写调度器的结构示意图;
图3为图2所示数据读写调度器中读取指令预处理单元进行向量读取指令预处理的流程图;
图4为图2所示数据读写调度器中读取控制单元进行数据请求的流程图;
图5为图2所示数据读写调度器中写入指令预处理单元进行向量写入指令预处理的流程图;
图6为图2所示数据读写调度器中写入控制模块进行数据写入的流程图。
【主要元件】
100-I/O接口;
200-片上RAM;
400-译码器;
500-向量运算部件;
300-数据读写调度器:
310-指令缓存; 320-读取指令预处理模块;
330-写入指令预处理单元; 340-读取指令缓存模块;
350-写入指令缓存单元; 360-读取控制模块;
370-写入控制模块; 380-读取数据缓存模块;
390-写入数据缓存模块。
具体实施方式
本披露通过设置读取指令缓存模块和写入指令缓存模块,并基于两者相互探测冲突指令,以避免写后读冲突和读后写冲突。
为使本披露的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本披露进一步详细说明。
在本披露的一个示例性实施例中,提供了一种用于向量运算的保留站。如图1所示,本实施例用于向量运算的保留站包括:I/O接口100、片上ram 200、数据读写调度器300、译码器400和向量运算部件500。
其中,I/O接口100用于芯片外部对片上RAM 200的读写访问,包括:将需要处理的输入数据通过I/O接口100加载到片上RAM 200,然后在计算得到输出数据并写回片上RAM200之后,再由I/O接口100搬到片外。片上RAM 200用于存储向量运算所需要的输入数据和计算得到的输出数据。数据读写调度器300用于依据译码器400提供的向量读写指令,从片上RAM 200中读取输入数据交给向量运算部件500进行计算,然后将得到的向量运算结果,即输出数据,存入片上RAM 200中。译码器400用于从外部指令缓存队列中读取指令,并且将其译码成具体的多个向量读写指令(向量读取指令和向量写入指令)和向量运算指令,交由数据读写调度器300和向量运算部件500进行执行。向量运算部件500用于从译码器400接收向量运算指令,然后从数据读写调度器300接收输入数据,进行运算,然后将计算的到的数据传送回数据读写调度器300进行向量写入操作。
图2为图1所示保留站中数据读写调度器的结构示意图。请参照图2,该数据读写调度器300包括:指令缓存310、读取指令预处理模块320、写入指令预处理单元330、读取指令缓存模块340、写入指令缓存单元350、读取控制模块360、写入控制模块370、读取数据缓存模块380和写入数据缓存模块390。
指令缓存310用于接收从译码器输入的向量读取指令和向量写入指令。
读取指令预处理模块320包括对应多个向量读取指令的多个读取指令预处理单元,用于接收由指令缓存310输入的多个向量读取指令,分析该每一向量读取指令和写入指令缓存350中存放的向量写入指令之间的写后读冲突,如果当前向量读取指令和写入指令缓存单元350中存放的向量写入指令涉及的数据在地址范围有交集,则取最近邻的有交集的向量写入指令作为该向量读取指令依赖的向量写入指令,并且将该向量写入指令的ID同向量读取指令一并存入读取指令缓存模块的队列中。
图3为图2所示数据读写调度器中读取指令预处理单元进行向量读取指令预处理的流程图。请参照图3,读取指令预处理单元进行向量读取指令预处理的过程包括:
步骤S302:从指令缓存310中接收一条向量读取指令;
步骤S304:计算获取该向量读取指令涉及数据的起始、结束地址;
步骤S306:从写入指令缓存中获取其存放的向量写入指令,及该向量写入指令涉及数据的起始、结束地址;
步骤S308:依据该向量读取指令涉及数据的起始、结束地址依次和写入指令缓存中存放的向量写入指令涉及数据的起始、结束地址进行比较,寻找出有交集的向量写入指令;
步骤S310:从有交集的向量写入指令中选择出最邻近的一条向量写入指令,获取该向量写入指令的ID;
步骤S312:将该向量读取指令涉及数据的起始、结束地址,以及其依赖的向量写入指令的ID,一并存入读取指令缓存模块的队列中。
读取指令缓存模块340包括多个读取指令缓存单元,用于接收并缓存多个读取指令预处理单元处理得到的向量读取指令,并且依据读取控制模块360和写入控制模块370的关于当前向量读取指令及其依赖的向量写入指令的执行状态,动态更新内部缓存的向量读取指令的状态。
其中,读取指令缓存模块进行向量读取指令状态更新包括以下5种情况:
(1)在新的向量读取指令进入队列中时,更新该向量读取指令的状态为“待发射”;
(2)当一向量读取指令依赖的向量写入指令正在执行或执行结束时,更新该向量读取指令的状态为“可发射”;
(3)当一向量读取指令的状态为“可发射”,并且其之前的向量读取指令请求发射结束后,发射该向量读取指令,更新该向量读取指令的状态为“执行中”;
(4)当一向量读取指令的所有读取请求都已经被读取控制单元发射后,更新该向量读取指令的状态为“已发射”;
(5)当一向量读取指令的所有单次读取请求都已经被片上RAM处理,并且返回结果之后,更新该向量读写指令的状态为“执行结束”。
读取控制模块360包括多个读取控制单元,用于接收读取指令缓存模块340发射的向量读取指令,解析出具体的单次读取请求,依据从写入控制模块370获取该向量读取指令所依赖的向量写入指令的状态来决定执行单次读取请求的时机,在时机满足时,发送单次读取请求给片上RAM 200,然后从片上RAM 200接收读取的输入数据,并且将输入数据存入读取数据缓存模块380中,等待外部运算部件使用。
读取数据缓存模块380包括多个读取数据缓存,用于从读取控制单元中接收读取的数据然后将其发送给向量运算部件500。
图4为图2所示数据读写调度器中读取控制单元进行数据请求的流程图。请参照图4,读取控制单元进行数据请求的过程包括:
步骤S402:从被发射的向量读取指令中,解析出具体的单次读取请求;
步骤S404,由写入控制模块获取当前执行地址;
步骤S406:对于每一单次读取请求,执行以下操作:
子步骤S406a,判定该单次读取请求是否满足以下三个条件:
(1)该向量读取指令依赖的向量写入指令的状态为“执行结束”,或者其状态为“执行中”且当前写入地址已经超过当前的单次读取请求的地址,或者其状态为“执行中”且其结束地址已被当前的单次读取请求的地址超越;
(2)当前读取控制单元的数据队列未满;
(3)当前片上RAM可接收单次读取请求;
子步骤S406b:当三个条件同时满足后,发射该单次读取请求到片上RAM,执行子步骤S406c;否则,阻塞该单次读取请求;
子步骤S406c:等待片上RAM返回的读取数据,当读取数据返回后,将其存入读取数据缓存中。
通过上述读取指令缓存单元、读取控制单元和读取数据缓存的组合操作,完成数据读取操作,并且避免了写后读冲突。
写入指令预处理单元330用于接收由指令缓存310输入的向量写入指令,检测该向量写入指令和读取指令缓存模块340中存放的向量读取指令之间的读后写关系,如果当前向量写入指令与读取指令缓存模块340中存放的向量读取指令在地址范围上有交集,则取最近邻的有交集的向量读取指令作为该向量写入指令依赖的向量读取指令,并且将该向量读取指令的ID同向量写入指令一并存入写入指令缓存模块的队列中。
图5为图2所示数据读写调度器中写入指令预处理单元进行向量写入指令预处理的流程图。请参照图5,写入指令预处理单元进行向量写入指令预处理的过程包括:
步骤S502:从指令缓存310中接收一条向量写入指令;
步骤S504:计算得到该向量写入指令涉及数据的起始、结束地址;
步骤S506:从读取指令缓存中获取其存放的向量读取指令,及该些向量读取指令涉及数据的起始地址和结束地址;
步骤S508:依据该向量写入指令涉及数据的起始、结束地址依次和读取指令缓存中存放的向量读取指令的起始、结束地址进行比较,寻找出有交集的向量读取指令;
步骤S510:从有交集的向量读取指令中选择出最邻近的一条向量读取指令,将其作为该向量写入指令依赖的向量读取指令,获取该向量读取指令的ID。
步骤S512:将该向量写入指令涉及数据的起始、结束地址,以及其依赖的向量读取指令的ID,一并存入写入指令缓存模块的队列中。
写入指令缓存单元350用于接收写入指令预处理单元330处理得到的向量写入指令,并且依据读取控制模块360和写入控制模块370的执行状态,动态更新内部存储的向量写入指令的状态,并发射符合条件的向量写入指令。
其中。写入指令缓存模块进行向量写入指令状态更新包括以下5种情况:
(1)在新的向量写入指令进入队列中时,更新该向量写入指令的状态为“待发射”;
(2)当一向量写入指令依赖的向量读取指令正在执行或执行结束时,更新该指令的状态为“可发射”;
(3)当一向量写入指令的状态为“可发射”,并且其之前的向量写入指令请求发射结束后,发射该向量写入指令,更新该向量写入指令的状态为“执行中”;
(4)当一向量写入指令的所有单次写入请求都已经被写入控制模块发射后,更新该指令的状态为“已发射”;
(5)当一向量写入指令的所有单次写入请求都已经被片上RAM处理,并且返回结果之后,更新该指令的状态为“执行结束”。
写入控制模块370用于接收写入指令缓存单元350发射的向量写入指令,从其中解析出具体的单次写入请求,从写入数据缓存390接收写入数据,并且依据从读取控制模块360获取该向量写入指令所依赖的向量读取指令的状态来决定执行单次写入请求的时机,在时机满足时,发送单次写入请求和写入数据给片上RAM 200,然后从片上RAM 200接收写入结果的反馈。
写入数据缓存390用于缓存从向量运算部件500接收需要写入的数据,然后发送给写入控制模块370。
图6为图2所示数据读写调度器中写入控制模块进行数据写入的流程图。请参照图6,写入控制模块进行数据写入的过程包括:
步骤S602:接收被发射的向量写入指令;
步骤S604:由向量写入指令解析出具体的单次写入请求;
步骤S606:由写入控制模块获取当前执行地址;
步骤S608:写入数据缓存;
步骤S610:对于每一单次写入请求,执行以下操作:
子步骤S610a:判定该单次写入请求是否满足以下三个条件:
(1)该向量写入指令依赖的向量读取指令的状态为“执行结束”,或者其状态为“执行中”且当前读取地址已经超过当前写入请求的地址,或者其状态为“执行中”且其结束地址已被当前的写入请求地址超越;
(2)当前写入控制模块的数据队列有等待写入的数据;
(3)当前片上RAM可接收当前的单次写入请求;
子步骤S610b:当以上三个条件满足后,发射该单次写入数据请求和写入数据到片上RAM,执行子步骤S604c;否则,阻塞该单次写入请求;
子步骤S610c:等待片上RAM返回写入成功的消息,当消息返回后,完成该单次写入请求。
通过上述写入指令缓存单元、写入控制器和写入数据缓存的组合操作,完成数据写入操作,并且避免了读后写冲突。
片上RAM200存储运算数据和运算结果,并且由于按照最低地址分区,可以同时处理多个向量读取请求和向量写入请求。
通过本实施例保留站,可以持续稳定的发射数据给向量运算部件,并且接收向量运算部件的计算结果,然后依次写入RAM内部,相比传统的保留站可以更快速的处理向量运算所需要的数据读写操作。
至此,本实施例用于向量运算的保留站介绍完毕。
在本披露的另一个实施例中,还提供了一种用于向量运算的数据读取调度器。该数据读取调度器实现上述实施例中的数据读写调度器的部分功能,其结构相同,此处不再详细描述。
在本披露的再一个实施例中,还提供了一种用于向量运算的数据写入调度器。该数据写入调度器实现上述实施例中的数据读写调度器的部分功能,其结构相同,此处不再详细描述。
在本披露的再一个实施例中,还提供了一种用于向量运算的数据读写调度器。该数据读写调度器实现上述实施例中的数据读写调度器的功能,其结构相同,此处不再详细描述。
至此,已经结合附图对本披露多个实施例进行了详细描述。依据以上描述,本领域技术人员应当对本披露用于向量运算的数据读取调度器、数据写入调度器、数据读写调度器及保留站有了清楚的认识。
需要说明的是,在附图或说明书正文中,未绘示或描述的实现方式,均为所属技术领域中普通技术人员所知的形式,并未进行详细说明。此外,上述对各元件和方法的定义并不仅限于实施例中提到的各种具体结构、形状或方式,本领域普通技术人员可对其进行简单地更改或替换,例如:
(1)片上RAM还可以片外访存形式来直接访问片外数据;
(2)译码器可以用向量指令缓存队列来代替;
(3)除非特别描述或必须依序发生的步骤,上述步骤的顺序并无限制于以上所列,且可根据所需设计而变化或重新安排。
综上所述,本披露通过设置读取指令缓存模块和写入指令缓存模块,并基于两者相互探测冲突指令,不仅可以处理向量读写指令之间的相互依赖关系,即写后读冲突和读后写冲突,同时可以相比传统的保留站更快速的处理向量运算所需要的数据读写操作,可以保证在存在写后读冲突和读后写冲突的情景下读写数据的正确性,具有较好的推广应用价值。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本披露也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本披露的内容,并且上面对特定语言所做的描述是为了披露本披露的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本披露的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个披露方面中的一个或多个,在上面对本披露的示例性实施例的描述中,本披露的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本披露要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,披露方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本披露的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本披露的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本披露的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本披露实施例的相关设备中的一些或者全部部件的一些或者全部功能。本披露还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本披露的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本披露进行说明而不是对本披露进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本披露可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
以上所述的具体实施例,对本披露的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本披露的具体实施例而已,并不用于限制本披露,凡在本披露的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本披露的保护范围之内。

Claims (33)

1.一种用于向量运算的数据读取调度器,其特征在于,包括:
读取指令预处理模块(320),包括至少一读取指令预处理单元,该读取指令预处理单元用于接收向量读取指令,检测该向量读取指令与向量写入指令之间是否存在写后读冲突,如果是,则将存在写后读冲突的向量写入指令作为该向量读取指令依赖的向量写入指令;以及
读取控制模块(360),包括至少一读取控制单元,该读取控制单元用于在接收到向量读取指令时,从其中解析出具体的单次读取请求,依据该向量读取指令所依赖的向量写入指令的状态决定执行单次读取请求的时机;
其中,所述读取控制单元依据该向量读取指令所依赖的向量写入指令的状态来决定执行单次读取请求的时机具体为判断是否同时满足如下三个条件,如果是,则时机满足,否则,时机不满足:
(1)该向量读取指令依赖的向量写入指令的状态为“执行结束”或“执行中”且当前写入地址已经超过当前单次读取请求的地址,或者其状态为“执行中”且其结束地址已被当前的当前单次读取请求的地址超越;
(2)当前读取控制单元的数据队列未满;
(3)当前片上RAM可接收单次读取请求。
2.根据权利要求1所述的数据读取调度器,其特征在于,还包括:
指令缓存(310),用于缓存向量读取指令;
读取指令缓存模块(340),包括至少一读取指令缓存单元,该读取指令缓存单元用于接收并缓存向量读取指令与其依赖的向量写入指令,并且依据从读取控制模块得到的该向量读取指令的执行状态以及从写入控制模块得到的其依赖的向量写入指令的执行状态,动态更新其缓存的向量读取指令的状态,并发射符合条件的向量读取指令;其中,
该读取指令预处理单元用于接收向量读取指令,检测该向量读取指令与向量写入指令之间是否存在写后读冲突;所述读取指令缓存单元用于接收并缓存向量读取指令与其依赖的向量写入指令。
3.根据权利要求1或2所述的数据读取调度器,其特征在于,还包括:
在时机满足时,读取控制模块发送单次读取请求给片上RAM,从片上RAM接收的输入数据,将该输入数据存入读取数据缓存模块(380)中,等待向量运算部件使用。
4.根据权利要求3所述的数据读取调度器,其特征在于,所述读取指令预处理单元用于将所述向量读取指令涉及数据的起始、结束地址依次和写入指令缓存中存放的向量写入指令涉及数据的起始、结束地址进行比较,如果涉及数据在地址范围上存在交集,则判断两者存在写后读冲突。
5.根据权利要求3所述的数据读取调度器,其特征在于,所述读取指令预处理单元用于在检测到所述向量读取指令与写入指令缓存单元(350)中存放的多个向量写入指令之间存在写后读冲突时,将涉及数据最近邻的向量写入指令作为该向量读取指令依赖的向量写入指令。
6.根据权利要求3所述的数据读取调度器,其特征在于,所述读取指令预处理模块(320)包括多个读取指令预处理单元,用于并行地对向量读取指令进行预处理。
7.根据权利要求2所述的数据读取调度器,其特征在于,所述读取指令缓存模块(340)动态更新其缓存的向量读取指令的状态包括以下至少其中之一:
当新的向量读取指令进入队列中时,更新该向量读取指令的状态为“待发射”;
当一向量读取指令依赖的向量写入指令正在执行或执行结束时,更新该向量读取指令的状态为“可发射”
当一向量读取指令的状态为“可发射”,并且其之前的向量读取指令发射结束后,发射该向量读取指令,更新该向量读取指令的状态为“执行中”;
当一向量读取指令的所有单次读取请求都已经被读取控制单元发射后,更新该向量读取指令的状态为“已发射”;
当一向量读取指令的所有单次读取请求都已经被片上RAM处理,并且返回结果之后,更新该向量读取指令的状态为“执行结束”。
8.根据权利要求3所述的数据读取调度器,其特征在于,所述片上RAM还用于以片外访存形式直接访问片外数据。
9.一种用于向量运算的数据读取调度方法,其特征在于,包括:
读取指令预处理模块(320)所包括的至少一读取指令预处理单元接收向量读取指令,检测该向量读取指令与向量写入指令之间是否存在写后读冲突,如果是,则将存在写后读冲突的向量写入指令作为该向量读取指令依赖的向量写入指令;以及
读取控制模块(360)所包括的至少一读取控制单元在接收到向量读取指令时,从其中解析出具体的单次读取请求,依据该向量读取指令所依赖的向量写入指令的状态决定执行单次读取请求的时机;
其中,所述读取控制单元依据该向量读取指令所依赖的向量写入指令的状态来决定执行单次读取请求的时机具体为判断是否同时满足如下三个条件,如果是,则时机满足,否则,时机不满足:
(1)该向量读取指令依赖的向量写入指令的状态为“执行结束”或“执行中”且当前写入地址已经超过当前单次读取请求的地址,或者其状态为“执行中”且其结束地址已被当前的当前单次读取请求的地址超越;
(2)当前读取控制单元的数据队列未满;
(3)当前片上RAM可接收单次读取请求。
10.根据权利要求9所述的数据读取调度方法,其特征在于,还包括:
指令缓存(310)缓存向量读取指令;
读取指令缓存模块(340)所包括的至少一读取指令缓存单元接收并缓存向量读取指令与其依赖的向量写入指令,并且依据从读取控制模块得到的该向量读取指令的执行状态以及从写入控制模块得到的其依赖的向量写入指令的执行状态,动态更新其缓存的向量读取指令的状态,并发射符合条件的向量读取指令;其中,
该读取指令预处理单元接收向量读取指令,检测该向量读取指令与向量写入指令之间是否存在写后读冲突;所述读取指令缓存单元接收并缓存向量读取指令与其依赖的向量写入指令。
11.根据权利要求9或10所述的数据读取调度方法,其特征在于,
在时机满足时,读取控制模块发送单次读取请求给片上RAM,从片上RAM接收的输入数据,将该输入数据存入读取数据缓存模块(380)中,等待向量运算部件使用。
12.根据权利要求11所述的数据读取调度方法,其特征在于,所述读取指令预处理单元将所述向量读取指令涉及数据的起始、结束地址依次和写入指令缓存中存放的向量写入指令涉及数据的起始、结束地址进行比较,如果涉及数据在地址范围上存在交集,则判断两者存在写后读冲突。
13.根据权利要求11所述的数据读取调度方法,其特征在于,所述读取指令预处理单元在检测到所述向量读取指令与写入指令缓存单元(350)中存放的多个向量写入指令之间存在写后读冲突时,将涉及数据最近邻的向量写入指令作为该向量读取指令依赖的向量写入指令。
14.根据权利要求11所述的数据读取调度方法,其特征在于,所述读取指令预处理模块(320)所包括的多个读取指令预处理单元并行地对向量读取指令进行预处理。
15.根据权利要求10所述的数据读取调度方法,其特征在于,所述读取指令缓存模块(340)动态更新其缓存的向量读取指令的状态包括以下至少其中之一:
当新的向量读取指令进入队列中时,更新该向量读取指令的状态为“待发射”;
当一向量读取指令依赖的向量写入指令正在执行或执行结束时,更新该向量读取指令的状态为“可发射”
当一向量读取指令的状态为“可发射”,并且其之前的向量读取指令发射结束后,发射该向量读取指令,更新该向量读取指令的状态为“执行中”;
当一向量读取指令的所有单次读取请求都已经被读取控制单元发射后,更新该向量读取指令的状态为“已发射”;
当一向量读取指令的所有单次读取请求都已经被片上RAM处理,并且返回结果之后,更新该向量读取指令的状态为“执行结束”。
16.根据权利要求11所述的数据读取调度方法,其特征在于,所述片上RAM以片外访存形式直接访问片外数据。
17.一种用于向量运算的数据写入调度器,其特征在于,包括:
写入指令预处理单元(330),用于接收向量写入指令,检测该向量写入指令和向量读取指令之间是否存在读后写冲突,如果是,则将存在读后写冲突的向量读取指令作为给向量写入指令依赖的向量读取指令;
以及
写入控制模块(370),用于接收向量写入指令,从其中解析出具体的单次写入请求,并接收写入数据,依据获取该向量写入指令所依赖的向量读取指令的状态来决定执行单次写入请求的时机;
其中,所述写入控制模块(370)依据从读取控制模块(360)获取该向量写入指令所依赖的向量读取指令的状态来决定执行单次写入请求的时机具体为判断是否同时满足如下三个条件,如果是,则时机满足,否则,时机不满足:
(1)向量写入指令依赖的向量读取指令的状态为“执行结束”,或者其状态为“执行中”且当前读取地址已经超过当前写入请求的地址,或者其状态为“执行中”且其结束地址已被当前的写入请求地址超越;
(2)当前写入控制模块的数据队列有等待写入的数据;
(3)当前片上RAM可接收当前的单次写入请求。
18.根据权利要求17所述的数据写入调度器,其特征在于,还包括:
指令缓存(310),用于缓存向量写入指令;
写入数据缓存(390),用于缓存需要写入片上RAM(200)的写入数据;
写入指令缓存单元(350),用于接收写入指令预处理单元(330)处理得到的向量写入指令,并且依据读取控制模块(360)和写入控制模块(370)相应指令的执行状态,动态更新其缓存的向量写入指令的状态,并发射符合条件的向量写入指令;其中
写入指令预处理单元(330),用于接收由指令缓存(310)输入的向量写入指令,检测该向量写入指令和读取指令缓存模块(340)中存放的向量读取指令之间是否存在读后写冲突;写入控制模块从写入数据缓存(390)接收写入数据。
19.根据权利要求17或18所述的数据写入调度器,其特征在于,
在时机满足时,发送单次写入请求和写入数据给片上RAM(200),然后从片上RAM(200)接收写入结果的反馈。
20.根据权利要求19所述的数据写入调度器,其特征在于,所述写入指令预处理单元(330)依据该向量写入指令涉及数据的起始、结束地址依次和读取指令缓存模块(340)中存放的向量读取指令的起始、结束地址进行比较,如果涉及数据在地址范围上存在交集,则判断两者存在写后读冲突。
21.根据权利要求19所述的数据写入调度器,其特征在于,所述写入指令预处理单元在检测到所述向量写入指令与读取指令缓存模块(340)中存放的多个向量读取指令之间存在读后写冲突时,将涉及数据最近邻的向量读取指令作为该向量写入指令依赖的向量读取指令。
22.根据权利要求18所述的数据写入调度器,其特征在于,所述写入指令缓存单元(350)动态更新其缓存的向量写入指令的状态包括以下至少其中之一:
在新的向量写入指令进入队列中时,更新该向量写入指令的状态为“待发射”;
当一向量写入指令依赖的向量读取指令正在执行或执行结束时,更新该指令的状态为“可发射”;
当一向量写入指令为“可发射”,并且其之前的向量写入指令发射结束后,发射该向量写入指令,更新该向量写入指令的状态为“执行中”;
当一向量写入指令的所有写入请求都已经被写入控制模块发射后,更新该指令的状态为“已发射”;
当一向量写入指令的所有单次写入请求都已经被片上RAM处理,并且返回结果之后,更新该向量写入指令的状态为“执行结束”。
23.根据权利要求19所述的数据写入调度器,其特征在于,所述片上RAM还用于以片外访存形式直接访问片外数据。
24.一种用于向量运算的数据写入调度方法,其特征在于,包括:
写入指令预处理单元(330)接收向量写入指令,检测该向量写入指令和向量读取指令之间是否存在读后写冲突,如果是,则将存在读后写冲突的向量读取指令作为给向量写入指令依赖的向量读取指令;以及
写入控制模块(370)接收向量写入指令,从其中解析出具体的单次写入请求,并接收写入数据,依据获取该向量写入指令所依赖的向量读取指令的状态来决定执行单次写入请求的时机。
25.根据权利要求24所述的数据写入调度方法,其特征在于,还包括:
指令缓存(310)缓存向量写入指令;
写入数据缓存(390)缓存需要写入片上RAM(200)的写入数据;
写入指令缓存单元(350)接收写入指令预处理单元(330)处理得到的向量写入指令,并且依据读取控制模块(360)和写入控制模块(370)相应指令的执行状态,动态更新其缓存的向量写入指令的状态,并发射符合条件的向量写入指令;其中
写入指令预处理单元(330)接收由指令缓存(310)输入的向量写入指令,检测该向量写入指令和读取指令缓存模块(340)中存放的向量读取指令之间是否存在读后写冲突;写入控制模块从写入数据缓存(390)接收写入数据;
其中,所述写入控制模块(370)依据从读取控制模块(360)获取该向量写入指令所依赖的向量读取指令的状态来决定执行单次写入请求的时机具体为判断是否同时满足如下三个条件,如果是,则时机满足,否则,时机不满足:
(1)向量写入指令依赖的向量读取指令的状态为“执行结束”,或者其状态为“执行中”且当前读取地址已经超过当前写入请求的地址,或者其状态为“执行中”且其结束地址已被当前的写入请求地址超越;
(2)当前写入控制模块的数据队列有等待写入的数据;
(3)当前片上RAM可接收当前的单次写入请求。
26.根据权利要求24或25所述的数据写入调度方法,其特征在于,
在时机满足时,发送单次写入请求和写入数据给片上RAM(200),然后从片上RAM(200)接收写入结果的反馈。
27.根据权利要求26所述的数据写入调度方法,其特征在于,所述写入指令预处理单元(330)依据该向量写入指令涉及数据的起始、结束地址依次和读取指令缓存模块(340)中存放的向量读取指令的起始、结束地址进行比较,如果涉及数据在地址范围上存在交集,则判断两者存在写后读冲突。
28.根据权利要求26所述的数据写入调度方法,其特征在于,所述写入指令预处理单元在检测到所述向量写入指令与读取指令缓存模块(340)中存放的多个向量读取指令之间存在读后写冲突时,将涉及数据最近邻的向量读取指令作为该向量写入指令依赖的向量读取指令。
29.根据权利要求25所述的数据写入调度方法,其特征在于,所述写入指令缓存单元(350)动态更新其缓存的向量写入指令的状态包括以下至少其中之一:
在新的向量写入指令进入队列中时,更新该向量写入指令的状态为“待发射”;
当一向量写入指令依赖的向量读取指令正在执行或执行结束时,更新该指令的状态为“可发射”;
当一向量写入指令为“可发射”,并且其之前的向量写入指令发射结束后,发射该向量写入指令,更新该向量写入指令的状态为“执行中”;
当一向量写入指令的所有写入请求都已经被写入控制模块发射后,更新该指令的状态为“已发射”;
当一向量写入指令的所有单次写入请求都已经被片上RAM处理,并且返回结果之后,更新该向量写入指令的状态为“执行结束”。
30.根据权利要求26所述的数据写入调度方法,其特征在于,所述片上RAM以片外访存形式直接访问片外数据。
31.一种用于向量运算的数据读写调度器,其特征在于,包括:
权利要求1至8中任一项所述的数据读取调度器;
权利要求17至23中任一项所述的数据写入调度器;
其中,所述数据读取调度器和数据写入调度器共用指令缓存(310)、写入指令缓存单元(350)、读取指令缓存模块(340)、读取控制模块(360)和写入控制模块(370)。
32.一种用于向量运算的保留站,其特征在于,包括:I/O接口(100)、片上RAM(200)、数据读写调度器(300)、译码器(400)和向量运算部件(500),其中:
所述片上RAM(200),用于存储向量运算所需要的输入数据和计算得到的输出数据;
所述I/O接口(100),用于芯片外部对所述片上RAM(200)的读写访问,包括:将需要处理的输入数据加载到片上RAM(200),然后在运算结束后将计算得到的输出数据搬到芯片外部;
所述译码器(400),用于从外部指令缓存队列中读取指令,并且将其译码成具体的向量读取指令、向量写入指令和向量运算指令,将向量读取指令、向量写入指令交由数据读写调度器(300)进行执行;将向量运算指令交由向量运算部件(500)进行执行;
所述数据读写调度器(300),为权利要求31所述的数据读写调度器;
所述向量运算部件(500),用于在接收到所述译码器下发的向量运算指令后,从数据读写调度器接收输入数据进行运算,然后将运算得到的输出数据传送至数据读写调度器(300)进行写入操作。
33.根据权利要求32所述的用于向量运算的保留站,其特征在于,采用向量指令缓存队列替换所述译码器。
CN201610038178.4A 2016-01-20 2016-01-20 用于向量运算的数据读写调度器及保留站 Active CN106991073B (zh)

Priority Applications (6)

Application Number Priority Date Filing Date Title
CN201610038178.4A CN106991073B (zh) 2016-01-20 2016-01-20 用于向量运算的数据读写调度器及保留站
CN201810455211.2A CN108595371B (zh) 2016-01-20 2016-01-20 用于向量运算的数据读取、写入及读写调度器及保留站
PCT/CN2016/078576 WO2017124649A1 (zh) 2016-01-20 2016-04-06 用于向量运算的数据读写调度器及保留站
US16/039,605 US10223115B2 (en) 2016-01-20 2018-07-19 Data read-write scheduler and reservation station for vector operations
US16/183,603 US10521228B2 (en) 2016-01-20 2018-11-07 Data read-write scheduler and reservation station for vector operations
US16/183,612 US10496404B2 (en) 2016-01-20 2018-11-07 Data read-write scheduler and reservation station for vector operations

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610038178.4A CN106991073B (zh) 2016-01-20 2016-01-20 用于向量运算的数据读写调度器及保留站

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN201810455211.2A Division CN108595371B (zh) 2016-01-20 2016-01-20 用于向量运算的数据读取、写入及读写调度器及保留站

Publications (2)

Publication Number Publication Date
CN106991073A CN106991073A (zh) 2017-07-28
CN106991073B true CN106991073B (zh) 2020-06-05

Family

ID=59361385

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201810455211.2A Active CN108595371B (zh) 2016-01-20 2016-01-20 用于向量运算的数据读取、写入及读写调度器及保留站
CN201610038178.4A Active CN106991073B (zh) 2016-01-20 2016-01-20 用于向量运算的数据读写调度器及保留站

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN201810455211.2A Active CN108595371B (zh) 2016-01-20 2016-01-20 用于向量运算的数据读取、写入及读写调度器及保留站

Country Status (3)

Country Link
US (3) US10223115B2 (zh)
CN (2) CN108595371B (zh)
WO (1) WO2017124649A1 (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108595371B (zh) * 2016-01-20 2019-11-19 北京中科寒武纪科技有限公司 用于向量运算的数据读取、写入及读写调度器及保留站
CN106557332A (zh) * 2016-11-30 2017-04-05 上海寒武纪信息科技有限公司 一种指令生成过程的复用方法及装置
CN114020482A (zh) * 2017-06-02 2022-02-08 伊姆西Ip控股有限责任公司 数据写入的方法和设备
CN109725936B (zh) * 2017-10-30 2022-08-26 上海寒武纪信息科技有限公司 扩展计算指令的实现方法以及相关产品
CN109960605A (zh) * 2019-04-01 2019-07-02 江苏华存电子科技有限公司 一种支持部分写的ecc内存及数据部分写入的方法
CN110007966A (zh) * 2019-04-10 2019-07-12 龚伟峰 一种降低内存读取乱序的方法
CN110780921B (zh) * 2019-08-30 2023-09-26 腾讯科技(深圳)有限公司 数据处理方法和装置、存储介质及电子装置
CN114022148B (zh) * 2021-12-24 2022-04-22 杭州趣链科技有限公司 基于区块链的交易冲突检测方法、装置、设备和存储介质
CN115454693B (zh) * 2022-08-30 2023-11-14 昆仑芯(北京)科技有限公司 写后读异常的检测方法、装置、控制器、处理器及介质

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS60134974A (ja) * 1983-12-23 1985-07-18 Hitachi Ltd ベクトル処理装置
US4789925A (en) * 1985-07-31 1988-12-06 Unisys Corporation Vector data logical usage conflict detection
US4722049A (en) * 1985-10-11 1988-01-26 Unisys Corporation Apparatus for out-of-order program execution
CA2027799A1 (en) * 1989-11-03 1991-05-04 David A. Miller Method and apparatus for independently resetting processors and cache controllers in multiple processor systems
US5418973A (en) * 1992-06-22 1995-05-23 Digital Equipment Corporation Digital computer system with cache controller coordinating both vector and scalar operations
US5701488A (en) * 1995-06-07 1997-12-23 Motorola, Inc. Method and apparatus for restoring a target MCU debug session to a prior state
US6477683B1 (en) * 1999-02-05 2002-11-05 Tensilica, Inc. Automated processor generation system for designing a configurable processor and method for the same
US6594748B1 (en) * 2001-11-09 2003-07-15 Lsi Logic Corporation Methods and structure for pipelined read return control in a shared RAM controller
US20030149841A1 (en) * 2002-01-23 2003-08-07 Middleton Peter Guy Management of caches in a data processing apparatus
JP3988144B2 (ja) * 2004-02-23 2007-10-10 日本電気株式会社 ベクトル処理装置、及び、追い越し制御回路
US20110067015A1 (en) * 2008-02-15 2011-03-17 Masamichi Takagi Program parallelization apparatus, program parallelization method, and program parallelization program
US8627017B2 (en) * 2008-12-30 2014-01-07 Intel Corporation Read and write monitoring attributes in transactional memory (TM) systems
CN101593097B (zh) * 2009-05-22 2011-07-27 西安交通大学 嵌入式同构对称双核risc微处理器的设计方法
CN102012872B (zh) * 2010-11-24 2012-05-02 烽火通信科技股份有限公司 一种用于嵌入式系统的二级缓存控制方法及装置
US20120296623A1 (en) * 2011-05-20 2012-11-22 Grayskytech Llc Machine transport and execution of logic simulation
CN102360344B (zh) * 2011-10-10 2014-03-12 西安交通大学 矩阵处理器及其指令集和嵌入式系统
CN102377682B (zh) * 2011-12-12 2014-07-23 西安电子科技大学 基于定长单元存储变长分组的队列管理方法及设备
CN102609378B (zh) * 2012-01-18 2016-03-30 中国科学院计算技术研究所 一种消息式内存访问装置及其访问方法
CN102629238B (zh) * 2012-03-01 2014-10-29 中国人民解放军国防科学技术大学 支持向量条件访存的方法和装置
US9575753B2 (en) * 2012-03-15 2017-02-21 International Business Machines Corporation SIMD compare instruction using permute logic for distributed register files
US9684601B2 (en) * 2012-05-10 2017-06-20 Arm Limited Data processing apparatus having cache and translation lookaside buffer
KR101666032B1 (ko) * 2012-05-31 2016-10-14 한국전자통신연구원 로드 가능한 모듈에 대한 가상화 지원 방법 및 장치
CN102750133B (zh) * 2012-06-20 2014-07-30 中国电子科技集团公司第五十八研究所 支持simd的32位三发射的数字信号处理器
CN102932265B (zh) * 2012-11-06 2015-06-17 福建星网锐捷网络有限公司 数据缓存管理装置和方法
US20140129806A1 (en) * 2012-11-08 2014-05-08 Advanced Micro Devices, Inc. Load/store picker
CN103135945B (zh) * 2013-03-25 2014-11-26 中国人民解放军国防科学技术大学 用于ssd的多通道动态读写调度方法
CN103488563B (zh) * 2013-09-05 2017-04-12 龙芯中科技术有限公司 并行程序的数据竞争检测方法、装置及多核处理系统
US20150205721A1 (en) * 2014-01-22 2015-07-23 Advanced Micro Devices, Inc. Handling Reads Following Transactional Writes during Transactions in a Computing Device
CN104391820B (zh) * 2014-11-25 2017-06-23 清华大学 基于fpga的通用浮点矩阵处理器硬件结构
US10996959B2 (en) * 2015-01-08 2021-05-04 Technion Research And Development Foundation Ltd. Hybrid processor
CN104699465B (zh) * 2015-03-26 2017-05-24 中国人民解放军国防科学技术大学 向量处理器中支持simt的向量访存装置和控制方法
CN108595371B (zh) * 2016-01-20 2019-11-19 北京中科寒武纪科技有限公司 用于向量运算的数据读取、写入及读写调度器及保留站

Also Published As

Publication number Publication date
WO2017124649A1 (zh) 2017-07-27
CN108595371B (zh) 2019-11-19
CN106991073A (zh) 2017-07-28
US10496404B2 (en) 2019-12-03
CN108595371A (zh) 2018-09-28
US10223115B2 (en) 2019-03-05
US10521228B2 (en) 2019-12-31
US20190073220A1 (en) 2019-03-07
US20180321943A1 (en) 2018-11-08
US20190073221A1 (en) 2019-03-07

Similar Documents

Publication Publication Date Title
CN106991073B (zh) 用于向量运算的数据读写调度器及保留站
US6038646A (en) Method and apparatus for enforcing ordered execution of reads and writes across a memory interface
US7461237B2 (en) Method and apparatus for suppressing duplicative prefetches for branch target cache lines
US9280348B2 (en) Decode time instruction optimization for load reserve and store conditional sequences
CN111208933B (zh) 数据访问的方法、装置、设备和存储介质
CN110825437B (zh) 用于处理数据的方法和装置
US11803490B2 (en) Apparatus and method for data transmission and readable storage medium
CN115481058A (zh) 内存原子操作指令的执行方法、装置、访问模块及系统
EP3857384B1 (en) Processing sequential inputs using neural network accelerators
KR20140097651A (ko) 멀티 모드 지원 프로세서 및 그 프로세서에서 멀티 모드를 지원하는 방법
CN112540792A (zh) 指令处理方法及装置
US20200034195A1 (en) Network-related performance for gpus
US20140331021A1 (en) Memory control apparatus and method
US20140297956A1 (en) Arithmetic processing apparatus, information processing apparatus and control method of arithmetic processing apparatus
CN115525343A (zh) 一种并行译码的方法、处理器、芯片及电子设备
US11269642B2 (en) Dynamic hammock branch training for branch hammock detection in an instruction stream executing in a processor
US11314510B2 (en) Tracking load and store instructions and addresses in an out-of-order processor
US10366049B2 (en) Processor and method of controlling the same
US20140201505A1 (en) Prediction-based thread selection in a multithreading processor
US11803389B2 (en) Reach matrix scheduler circuit for scheduling instructions to be executed in a processor
CN110347400B (zh) 编译加速方法、路由单元和缓存
US20230205535A1 (en) Optimization of captured loops in a processor for optimizing loop replay performance
CN114995884A (zh) 指令退休单元、指令执行单元及相关装置和方法
CN118259970A (zh) 指令处理方法、装置、系统以及电子设备
CN117667200A (zh) 一种risc-v矩阵运算指令的依赖检测方法和装置

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
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20180503

Address after: 100190 room 644, research complex, 6 South Road, Haidian District Science Academy, Beijing.

Applicant after: Beijing Zhongke Cambrian Technology Co., Ltd.

Address before: 210049 18 Xianlin Road, Ma Qun street, Qixia District, Nanjing, Jiangsu.

Applicant before: NANJING AIXI INFORMATION TECHNOLOGY CO., LTD.

CB02 Change of applicant information
CB02 Change of applicant information

Address after: 100190 room 644, comprehensive research building, No. 6 South Road, Haidian District Academy of Sciences, Beijing

Applicant after: Zhongke Cambrian Technology Co., Ltd

Address before: 100190 room 644, comprehensive research building, No. 6 South Road, Haidian District Academy of Sciences, Beijing

Applicant before: Beijing Zhongke Cambrian Technology Co., Ltd.

GR01 Patent grant
GR01 Patent grant