CN107408076B - 数据处理装置 - Google Patents

数据处理装置 Download PDF

Info

Publication number
CN107408076B
CN107408076B CN201680019602.9A CN201680019602A CN107408076B CN 107408076 B CN107408076 B CN 107408076B CN 201680019602 A CN201680019602 A CN 201680019602A CN 107408076 B CN107408076 B CN 107408076B
Authority
CN
China
Prior art keywords
memory
memory module
data
bus
read
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
CN201680019602.9A
Other languages
English (en)
Other versions
CN107408076A (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.)
Nara Institute of Science and Technology NUC
Original Assignee
Nara Institute of Science and Technology NUC
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 Nara Institute of Science and Technology NUC filed Critical Nara Institute of Science and Technology NUC
Publication of CN107408076A publication Critical patent/CN107408076A/zh
Application granted granted Critical
Publication of CN107408076B publication Critical patent/CN107408076B/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
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0895Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
    • 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
    • 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/30098Register arrangements
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明的数据处理装置具有二维结构,该二维结构通过将包括具有多个接口的内存模块(606)、内存模块(606)的各接口的地址生成器(604)以及运算器(603)的基本单元(600)在水平方向上配列成多个way,并将水平方向上排列有多个way的阶段在垂直方向上排列成多个而形成。

Description

数据处理装置
技术领域
本发明是关于一种应用于电脑系统的数据处理装置。
背景技术
现有技术中,作为电脑系统中的加速器的构成方法,外部缓存共享类型的SIMD(single instruction stream,multiple data stream)方式和主内存共享类型的外部加速器方式被众所周知。
通用CPU(central processing unit)向加速器传送数据时,如果是外部缓存共享类型,只要内置缓存存储器向外部缓存存储器回写(闪存)即可,但是由于外部缓存存储器的数据宽度通常为SIMD程度的宽度,因此不能一次性参考超过SIMD宽度的大量数据。另外,如果是主存储器共享类型,需要内置缓存和外部缓存这两种均向主存储器回写(闪存),缓存刷新时间将成为较大的系统额外消耗(overhead)。
因此,设置一缓冲存储器的结构被提案出来,该缓冲存储器从核心角度来看,成为高速缓存存储器,从加速器的角度来看,成为该些的本地内存(参非专利文献1(Fig.1b)。
通过该结构,由于高速缓存存储器和加速器的本地存储器被共享化,如上所述的系统额外消耗得以缓和。
现有技术文献
【非专利文献】
【非专利文献1】Carlos Flores Fajardo,Zhen Fang,Ravi Iyer,German FabilaGarcia,Seung Eun Lee,Li Zhao,Buffer-Integrated-Cache:A Cost-Effective SRAMArchitecture for Handheld and Embedded Platforms,Design Automation Conference(DAC),2011 48th ACM/EDAC/IEEE Date of Conference:5-9June 2011Page(s):966-971
发明内容
发明所要解决的技术问题
但是,即使是非专利文献1的构成,由于高速缓存存储器设置在加速器的外部,加速器和高速缓存存储器之间的数据传输依然是必要的,因此上述系统额外消耗的缓和也是有限的。
鉴于上述课题,本发明的目的在于提供一种通过将高速缓存存储器设置在加速器的内部,使加速器和高速缓存存储器之间不需要数据传输,从而可以大大缓和系统额外消耗的数据处理装置。
解决技术问题所采取的手段
为了解决上述技术问题,本发明的数据处理装置具有一二维结构,该二维结构通过把水平方向上排列有多个way的阶段在垂直方向上排列成多个而形成,每一个way包括多个基本单元,各基本单元包括具有多个接口(port)的内存模块、所述内存模块的各接口的地址生成器以及运算器,各所述基本单元进一步包括数据总线、演算总线和开关群、以及内存总线和开关群,所述数据总线从属于同一阶段的所述内存模块中同时读取多个way×多个文字,所述演算总线和开关群将所述多个文字同时提供给同一阶段的所述运算器,所述内存总线和开关群将所述运算器的输出写入属于同一阶段的所述内存模块;
属于同一way的所述内存模块所使用的写入总线和读取总线通过相同的总线连接到外部存储器,同时进行从外部存储器向所述内存模块的写入和从所述内存模块向所述运算器的读取,并且,同时进行从所述运算器到所述内存模块的写入和从所述内存模块向所述外部存储器的读取;
通过所述地址生成器读取所述内存模块时,同时读取多个文字,同时将值写入所述基本单元的末端寄存器。
发明的效果
本发明的技术方案具有可以大大缓和系统额外消耗这一问题的有益效果。
附图说明
图1是表示现有技术的电脑系统的构成的模块示意图。
图2是表示本发明的电脑系统的构成的模块示意图。
图3(a)、(b)以及(c)是用于说明本发明所实现的功能要件1的示意图。
图4(a)、(b)以及(c)是用于说明本发明所实现的功能要件2的示意图。
图5(a)、(b)以及(c)是用于说明本发明所实现的功能要件3的示意图。
图6是构成本发明的数据处理装置的基本单元的电路图。
图7是如图6所示的基本单元的功能模块图。
图8是表示上述数据处理装置的概略构成的模块图。
图9是上述数据处理装置所使用的地址的结构的示意图。
图10是表示上述数据处理装置的概略构成的模块图。
图11是表示上述数据处理装置的概略构成的模块图。
图12是表示上述数据处理装置的概略构成的模块图。
图13是构成本发明的数据处理装置的其他基本单元的电路图。
具体实施方式
以下,关于本发明的实施方式进行详细说明。首先,对作为本发明的基础的技术及其课题等进行基本说明后,参照附图对本发明的较佳实施方式进行具体说明。
[基本说明]
一般情况下,计算加速器单独运行OS(operating system)或复杂的程序时较为困难,因此实用系统的构筑不可缺少通用CPU的协作。将计算加速器连接到通用CPU时,与高速缓存存储器的协作很重要,一般采用可以直接使用缓存行的短向量(SIMD)方式。当需要较大规模的加速器时,同样将以SIMD为基本的演算机构连接至二级缓存(L2缓存)。进一步地,当采用长向量方式进行大规模化时,将所述演算机构连接至主存储器,或者连接至使主存储器与DMA(direct memory access)传输成为可能的其他存储空间。
此外,以图形处理为代表的非典型处理中,由于不能保证均匀的数据宽度,SIMD的效果是受限制的。取而代之的是,如果利用数据依存关系较多这点,CGRA(coarse-grainedreconfigurable array)的效果是可以预期的。除此之外,CGRA与现有缓存较难共存,所述现有缓存针对多个内存模块,分别设定其地址范围,通常使用连续参考每个地址范围的方式,根据地址来唯一确定模块的位置。并且,为了进行内置存储器无法收容的大规模图片处理,CGRA与主存储器的无缝连接以及整体流水线化虽然很重要,但是每个周期进行同步操作的CGRA与漫长的主存储器延时的也较难共存。
从这种困难可以看出,用于实现图形处理的高速化的加速器与通用CPU,一般只有通过主存储器进行连接,如本说明书的背景技术部分所述,每次使用加速器时,会发生缓存刷新等的系统额外消耗。
因此,本发明的发明人为了获得一高效率计算机,该高效率计算机可以实现对模板计算等的高性能计算或图形处理等的大数据进行高速处理,反复深入研究,通过使CGRA内存模块可应用于(1)SIMD缓冲器、(2)模板存储器、(3)缓存以及(4)主存储器延迟隐藏缓冲器的所有,发现可以获得至今无法达到的超高速处理,从而完成了本发明。
图1是现有技术的电脑系统的构成的模块图。图2是本发明的电脑系统的构成的模块图。如图1所示,如果是现有的电脑系统的构成,二级缓存(L2缓存)101设置在CGRA内存模块(加速器)102的外部,CGRA内存模块102的全部内置存储器与通用CPU的主存储器103处于不同的空间。因此,编程人员为了保持CGRA内存模块102的所有内置存储器与二级缓存101之间的数值的一致性,需要经常使用缓存刷新。
另一方面,如图2所示,本发明的电脑系统的构成中,将二级缓存设置在CGRA内存模块201的内部。关于所述二级缓存,从通用CPU的角度来看其属于二级缓存,从CGRA内存模块201的角度来看,其属于内置存储器。也就是说,二级缓存在通用CPU和CGRA内存模块201之间将被共享化。从而,编程人员不再需要意识到CGRA内存模块201的内置存储器和主存储器202之间的明显数据传输。因此,刷新内置缓存时,仅完成对CGRA内存模块201的刷新即可,将不再需要对主存储器202进行回写。进一步地,由于针对多个CGRA内存模块,同时进行数据参考成为可能,像外部缓存共享型的现有系统一样,也消除了演算能力受外部缓存总线宽度制约的问题。
如此,本发明是关于一种不需要全面缓存刷新,具备与通用CPU的数据共享功能的电脑系统的加速器的构成方法。由于具有该数据共享功能,本发明需要实现下述功能要件1、功能要件2、功能要件3以及功能要件4。
(功能要件1)
图3是用于说明本发明所实现的功能要件1的示意图。功能要件1是指每个周期,可以从多个模块中同时读取多个文字(word)。图3(a)中,连续区域301对应一个模块。地址302每个周期增加4个文字。每个周期,从连续区域301中同时读出4个文字的数据303、304、305和306。
图3的(b)是把如图3(a)所示的一个模块进行多个连接,使容量增加的结构。模块(连续区域)311、312、313被连接,地址314每个周期增加4个文字,从模块311中每个周期同时读出4个文字的数据315、316、317和318。从模块312的读出以及从模块313的读出,和从模块311读出一样,以相同的方式被进行。
图3(c)是对如图3(b)所示的由多个模块构成的一个阶段(stage)进行多个级连后的结构。图3(c)中,连接有分别配置了多个模块的阶段321、322和323。地址324每个周期增加4个文字,从阶段321的各模块中每个周期同时读出4个文字的数据。地址325、326也同样每个周期增加4个文字,从阶段322、323的各模块中每个周期同时读出4个文字的数据。在这种结构下,可以提供对应于阶段数的不同地址,每个周期可以读出对应于阶段数的多个文字。
图3所示的构成适于通过同时执行SIMD和图形处理,来达到实现高性能化的目的。
进一步地,SIMD的情况下,四个文字对应于排列的四个连续元素,相对于读取数据通过后续SIMD指令被同时计算,在图形处理的情况下,四个文字对应于构造体配列的每个成员,读取数据的处理因每个文字而不同。也就是说,图形处理与SIMD的不同之处在于后续指令成为伴随条件判断等的复杂指令。
根据功能要件1,在SIMD计算时,实现了下面的数据供应能力。
地址数:所有阶段
每个数据宽度:4个文字
另外,图3(b)所示的各模块311、312、313相当于后述图8所示的各way。
(功能要件2)
图4是用于说明本发明所实现的功能要件2的示意图。功能要件2是指每个周期,从多个模块中可以同时读取连续的单个文字。图4(a)中,连续区域401对应于一个模块。地址402每个周期递增一个文字。从连续区域401中,每个周期读取一个文字的数据403。
图4(b)是一种排列多个如图4(a)所示的一个模块,以增加可供同时读取的空间数的结构。相对于功能要件1中从连续地址同时读取多个文字,功能要件2的不同之处在于:从不同的连续地址中,分别同时读取一个文字。图4(b)中,排列有模块(连续区域)411、412、413,地址414每个周期增加一个文字,且每个周期从模块411中读取一个文字的数据417。地址415每个周期增加一个文字,且每个周期从模块412中读取一个文字的数据418。地址416每个周期增加一个文字,且每个周期从模块413读取一个文字的数据419。
图4(c)是对如图4(b)所示的由多个模块构成的一个阶段进行多个级连后的结构。在该种结构下,可以提供阶段内模块数×阶段数的不同地址,每个周期可以读取全部模块数的单个文字。本构成适于通过同时执行高阶模板计算,从而实现高性能化。
图4(c)中,连接有分别排列了多个模块的阶段421、422和423。阶段421上排列有多个模块,地址群424的各地址每个周期增加1个文字,每个周期从各模块读取一个文字的数据。阶段422上排列有多个模块,地址群425的各地址每个周期增加1个文字,每个周期从各模块读取一个文字的数据。阶段423上排列有多个模块,地址群426的各地址每个周期增加1个文字,每个周期从各模块读取一个文字的数据。
根据功能要件2,在模板计算时,实现了如下所述的数据供应能力。
地址数:所有模块数(阶段数×包含于各阶段的模块数)
每个数据宽度:1个文字
另外,图4(b)所示的各模块411、412、413相当于后述图8所示的各way。
(功能要件3)
图5是用于说明本发明所实现的功能要件3的示意图。功能要件3是指所有模块的流水线(pipeline)搜索和相应行的读取/传播是可能的。图5(a)中,连续区域501对应于一个模块。连续区域501包含多个缓存行,提供与缓存行的开头对应的地址502。与功能要件1和功能要件2不同,功能要件3通过地址的一部分识别缓存行后,对设置在每一缓存行的单个标签信息503与地址的高阶位进行比较,只针对内容一致的缓存行,读取其数据504、505、506、507。
图5(b)与一般的缓存一样,是一种用于抑制缓存行的冲突的多个way结构。图5(b)中排列有多个如图5(a)所示的一个模块,同时搜索所有way,仅读取单个标签一致的缓存行。配置有模块511、512,通过地址513、514的一部分识别way的缓存行后,对设置在每一缓存行的单个标签信息515、516与地址的高阶位进行比较,只针对内容匹配的缓存行,读取数据517、518、519、520。
图5(c)是对如图5(b)所示的由多个模块(多个way)构成的一个阶段进行多个连接后的结构。在这种结构下,可以将阶段内模块数×阶段数空间作为4way组相联缓存(4way-set associative cache)来使用。
图5(c)中,连接有分别排列了多个模块的阶段521、522和523。阶段521中,通过地址524的一部分识别way的缓存行后,对设置在每一缓存行的单个标签信息527和地址的高阶位进行比较,只读取内容匹配的缓存行的数据。阶段522中,通过地址525的一部分识别way的缓存行后,对设置在每一缓存行的单个标签信息528和地址的高阶位进行比较,只读取内容匹配的缓存行的数据。阶段523中,通过地址526的一部分识别way的缓存行后,对设置在每一缓存行的单个标签信息529和地址的高阶位进行比较,只读取内容匹配的缓存行的数据。
根据功能要件3,在使用缓存时,具有下面的数据供应能力。
地址数量:1(流水线操作)
每个数据宽度:4个文字(流水线操作)
另外,图5(b)所示的各模块511、512相当于后述图8所示的各way。
(功能要件4)
为了进行上述图形处理,在功能要件1的基础上,为了主存储器参考时隐藏延迟时间,需要利用各模块。该延迟时间吸收结构成为功能要件4。关于功能要件4,在后面的实施方式4中进行说明。
(功能要件1~4的总结)
本发明可以在单个硬件上,一次性有效地实现适合加速器(数据处理装置)的作为内存配置的功能要件1、2以及适合缓存的作为内存配置的功能要件3。
为了在不降低性能和功能的同时,实现所有的功能要件1、2、3,阶段位置的管理方法很重要。功能要件1和2中,事先在指定了软件的阶段中配置必要的数据,只要能够读取和写入阶段中关闭的内存空间即可。
但是,功能要件3中,使用一部分地址来确定内存模块的位置;进一步地,使用地址的另一部分来确定内存模块内的相对位置。需要通过比较个别标签,来验证所述缓存行与参考地址是否正确对应。如果设置为完全关联结构,在任意的阶段位置上匹配缓存行在逻辑上是可能的,但是由于内置内存的总量大于二级缓存的程度,从缓存行的数量较多来看,常规的全关联方法的采用是不现实的。
因此,对于功能要件1和2,软件可以明确指定内存模块位置,同时对于功能要件3,通过流水线操作来实现大幅度全关联缓存是可行的。通用CPU进行数据的前处理并向CGRA型加速器传递数据的情况或者通用CPU继续使用CGRA型加速器的处理结果的情况下,通过使必要的数据共享无需进行广泛的缓存刷新,可以加快处理的速度。
[本发明的基本结构]
下面,利用图6、图7以及图8对本发明的基本结构进行说明。
图6是构成本发明的数据处理装置的基本单元的电路图。图7是如图6所示的基本单元的功能模块图。图8是用于表示本发明的数据处理装置的概要结构的模块图。
如图6和图7所示,构成本发明的数据处理装置的基本单元600包括:寄存器601、演算总线和开关群602、运算器603、包含存储单元604a和加载单元604b的地址生成器604、存储器总线和开关群605、内存模块606、多路复用器607、存储器总线和开关群608以及FIFO(first in,first out)609。并且,演算总线和开关群602、存储器总线和开关群605以及存储器总线和开关群608使得在水平方向上邻接,且包含在同一个阶段的各个基本单元600被相互连接。本说明书为了方便起见,将演算总线和开关群602等的与各基本单元600相连接的部分划归在各基本单元600中。
寄存器601(末端寄存器)是用于写入从上一阶段的基本单位被输出的数据的寄存器。并且,图6和图7中,寄存器601可以被设置在基本单元600的输入侧,也可以被设置在基本单元600的输出侧。总之,寄存器601兼任在垂直方向上前后移动的两个不同的基本单元(前一阶段的基本单元和后一阶段的基本单元)当中的设置在前一阶段的基本单元的输出侧的寄存器以及设置在后一阶段的基本单元的输入侧的寄存器。本发明中,如图6和图7所示,将寄存器601设置在其输入侧的部分称为基本单元。
演算总线和开关群602将从内存模块606读取的文字提供给运算器603。运算器603利用演算总线和开关群602供给的文字进行演算。
地址生成器604用于生成地址,该地址用于进行从内存模块606的读取以及向内存模块606的写入。存储器总线和开关群605根据地址生成器604生成的地址,将运算器603的运算结果写入内存模块606。
如上所述,内存模块606可以兼任高速缓存存储器,也可以兼任加速器的本地内存。多路复用器607合并从内存模块606中被读取的文字。存储器总线和开关群608将通过多路复用器607被合并的文字提供给FIFO609。FIFO609按照从旧到新的顺序排除写入的时间点。
并且,如图6所示,还设置有数据总线610,该数据总线610用于传输从内存模块606和主存储器(图未示)被读取的数据、以及被写入内存模块606和主内存的数据。
如图8所示,本发明的数据处理装置800中,图6和图7所示的基本单元600被排列成矩阵状,水平方向上配置了多条way的阶段,其在垂直方向上被排列了多个,从而构成一二维结构。
此外,图8中,各基本单元600所属的way和阶段用附加到各基本单元的符号来表示。例如,针对基本单元600-01,其符号「600-01」的「01」当中,「0」代表属于way0,「1」代表属于阶段1。同样地,如果是基本单元600-12,其符号「600-12」的「12」当中,「1」代表属于way1,「2」代表属于阶段2。
数据处理装置800在当通用CPU缓存失效时,将请求参考作为缓存(L2缓存)的内存模块606的界面(interface)设置在最上部,进一步地,当内存模块606不存在的情况下,请求参考低级别存储设备(主存储器)的界面设置在最底部。
如上所述,基本单元600包括地址生成器604,该地址生成器604进一步包括只写储存单元604a和只读加载单元604b。因此,基本单元600可以同时进行读取和写入。内存模块606中,按照从右到左增加地址的顺序,排列有文字(例如8个字节),连续的8个文字构成一个缓存行。由512组的缓存行构成的情况下,容量为32KB。
各阶段由4个基本单元构成,从右开始按照顺序依次构成way0、way1、way2、way3。针对各way连接有主存储器(主内存),针对不同的way,可以同时在主存储器之间进行传输。
从内存模块606读取的方法有两种,可选择下述两种方法的任意一个。即,同时读取4个文字,将其存储于下一阶段的基本单元600的寄存器601,同时将其写入同一阶段的FIFO609;或者读取一个文字将其存储于上述的寄存器601,同时将其写入同一阶段的FIFO609。前者对应功能要件1,后者对应功能要件2。
以下,针对分别对应于上述功能要件1-4的(1)SIMD计算、(2)模板计算、(3)大容量高速缓存、(4)图形处理这四种计算行为进行说明。本发明的特征在于可以分别对该4种参考方法进行优化,同时切换数据的移动可以以最小限度完成。
以下,利用图9-图12,对数据处理装置800的工作原理进行说明。图9是数据处理装置800所使用的地址900的结构的示意图。如图9所示,地址900由Tag 901、Stageindex902、Loffs903以及Lbyte904构成。图10-图12为图8的放大图。
(实施方式1):SIMD计算时
本实施例通过图9-图12,对进行SIMD计算时的数据处理装置800的工作原理进行说明。
图10中,阶段1描写了way2的基本单元600-21中的布置B,way1的基本单元600-11中的布置C,way0的基本单元600-01中的布置D。通过基本单元600-21的加载单元604b、基本单元600-11的加载单元604b以及基本单元600-01的加载单元604b,连续执行三个四倍宽度加载指令。
通过该种加载指令的连续执行,4组的B、C、D要素在阶段2中,被输入至way3的基本单元600-32的运算器603、way2的基本单元600-22的运算器603、way1的基本单元600-12的运算器603、way0的基本单元600-02的运算器603,演算结果被存储在way3的基本单元600-32的内存模块606中。
同时,为了准备下一个连续执行,阶段2中,从主存储器(主内存),向way2的基本单元600-22的内存模块606、way1的基本单元600-12的内存模块606、way0的基本单元600-02的内存模块606预读取的同时,阶段1中,将way3的基本单元600-31的内存模块606所储存的上次的执行结果回写至主存储器。
本执行模式中,将指令映射一次一个阶段向下方移动,在下一个阶段使用预读取的数据。由于内存模块的容量限制,虽然存在连续执行被中断的缺点,但是在执行过程中不需要调整写入内存模块和从内存模块读取的速度差。
另一方面,图11和图12显示了在阶段4和阶段5中指令映射的移动所不必要的使用方法。阶段4中,从主存储器,向way2的基本单元600-24的内存模块606、way1的基本单元600-14的内存模块606、way0的基本单元600-04的内存模块606持续供给,并从各内存模块606进行读取。并且,阶段5中,将way3的基本单元600-35的运算器603、way2的基本单元600-25的运算器603、way1的基本单元600-15的运算器603、way0的基本单元600-05的运算器603的各演算结果存储于way3的基本单元600-35的内存模块606,同时从该内存模块606向主存储器回写。
连接于各way的数据总线610均为运行的理想状态。虽然需要调整向各内存模块606的写入和从各内存模块606读取的速度差,但是没有连续执行被中断的缺点。
(实施方式2):模板计算时
以下,利用图9-图12对模板计算时的数据处理装置800的工作原理进行说明。阶段1中,从way0的基本单元600-01的内存模块606中读取的1个文字数据被传送到way2的基本单元600-21的FIFO609、way1的基本单元600-11的FIFO609。阶段2中,6个文字的数据被提供给way2的基本单元600-22的运算器603以及way1的基本单元600-12的运算器603。
同样地,阶段2中,从way0的基本单元600-02的内存模块606中读取的每一单个文字数据被传送到way2的基本单元600-22的FIFO609以及way1的基本单元600-12的FIFO609。阶段3中,6个文字的数据被提供给way2的基本单元600-23的运算器603以及way1的基本单元600-13的运算器603。
同样地,阶段3中,从way0的基本单元600-03的内存模块606中读取的每一单个文字数据被传送到way2的基本单元600-23的FIFO609以及way1的基本单元600-13的FIFO609。阶段4中,6个文字的数据被提供给way2的基本单元600-24的运算器603以及way1的基本单元600-14的运算器603。
如此,从阶段1、2、3的各way0的内存模块606读取的每一单个文字被传送到同一阶段的FIFO609,每一阶段同时将6个文字的数据提供给下一阶段的运算器603。在模版计算的情况下,为了最大限度地重复利用内存模块,可以并用上述指令映射的移动功能。
(实施方式3):缓存功能时
以下,通过图9-图12,对缓存功能时的数据处理装置800的工作原理进行说明。根据参考请求连续读取地址,使用way3-0的地址总线进行tag比较。所述参考请求是指请求参考数据处理装置800内的各基本单元600的内存模块606。所述参考请求通过通用CPU,被存储在数据处理装置800的最上方的界面。所述参考请求从阶段1开始,按照阶段2、阶段3的顺序,通过设置在各阶段的缓冲器被向下传递,以流水线方式参考所有阶段。按照Tag匹配的way,读取四个文字的数据,并将其向下传递。
此外,各阶段中,与一般的组相联缓存一样,所有的way同时工作。命中的情况下,由于缓存行整体的读取是必要的,当没有总线宽度足以一次读取整个缓存行时,利用多个周期进行读取。本实施方式中,由于两个周期连续进行读取,因此参考请求每两个周期接受一次。并且接受了所述参考请求之后,命中该缓存时的延迟将是多个阶段。
此外,L1缓存相对于L2缓存(内存模块606)具有包容性,L1缓存的缓存动作必然会命中L2缓存。因此,L1缓存的整个闪存所需要的时间是恒定不变的。
(实施方式4):图形计算时
以下,利用图9-图12,对缓存功能时的数据处理装置800的工作原理进行说明。阶段1中,相邻顶点数据从连接于way0的主存储器(主内存)被提供给way0的基本单元600-01的内存模块606。并且,如上所述,在移动指令映射并不是绝对必要的图形计算的情况下,可以一边从主存储器向阶段1提供邻接顶点数据,一边通过阶段1读取邻接顶点数据。
在阶段2只中,进行条件判断以及主存储器直接参考请求。从阶段1经过阶段2,向阶段3传递数据的情况下,与主存储器直接参考请求的延迟相匹配的延迟插入是必要的。为此,阶段2中,将way3的基本单元600-32的内存模块606以及way2的基本单元600-22的内存模块606作为FIFO来使用,从而来吸收所述延迟。使从阶段1被提供给way3的基本单元600-32、way2的基本单元600-22的数据和从主存储器被读入way1的基本单元600-12的数据的输出时机保持一致,并将两者提供给阶段3。
并且,从阶段3进一步向主存储器发出交易。
本实施方式中,way0的总线用于相邻顶点数据的读取,way1的总线用于主存储器直接参考请求,way2的总线用于发出交易,way3的总线用于回写至内存模块,可以在不影响主存储器参考的流量的情况下进行调度。
(实施方式5)
图13是构成本发明实施方式5的数据处理装置的基本单元600A的电路图。构成本实施方式5的数据处理装置的基本单元600A与上述的构成实施方式1-4的数据处理装置的基本单元600的不同点在于:基本单元600A中,取代基本单元600中的内存总线和开关群608、FIFO609,基本单元600A具有一内存写入广播总线611。
基本单元600中,内存总线和开关群608把通过多路复用器607合并的文字提供给自己单元和水平方向上邻接的其他单元的FIFO609,各单元的FIFO609按照从旧到新的顺序,排除写入的时间点。
并且,基本单元600中,通过多路复用器607合并的文字被写入自己单元以及在水平方向上邻接的其他单元的FIFO609,在必要数据聚齐时,一次性地提供给下一个阶段。这将导致下一阶段的数据供应的延迟。并且,FIFO609的初始化构成对下一阶段的数据供应的额外消耗,与上述相同,将导致数据供应的延迟。
与此相对,基本单元600A中,不需要FIFO609以及内存总线和开关群608,该内存总线和开关群608用于提供通过FIFO609合并的文字。取而代之的是,基本单元600A设置有一内存写入广播总线611,使用内存写入广播总线611,向水平方向上邻接的多个单元的内存模块606写入同一内容。通过这样,在水平方向上邻接的多个单元,无需等待FIFO被填满,可以直接从各内存模块直接读取数据,并进行向下一阶段的数据供应。
例如,上述的实施方式2的基本单元600中,阶段1中,从way0的基本单元600-01的内存模块606中读取的每一单个文字数据被传送到way2的基本单元600-21的FIFO609、way1的基本单元600-11的FIFO609。针对FIFO609的数据传送是通过从内存模块606中一个字一个字地读出来执行的。并且,当FIFO609集齐6个文字的数据后,该6个文字的数据被提供给下一阶段。
与此相对,基本单元600A中,与基本单元600不同,通过内存写入广播总线611,向way0的基本单元600-01、way1的基本单元600-11、way2的基本单元600-21的全部内存模块606写入同一内容,从每一个内存模块同时各读取两个文字的数据,共计6个文字的数据被传送至下一阶段的寄存器601。
阶段2和阶段3与上述情况相同。
本发明不限于上述的各实施方式,在权利要求所示的范围内可以进行各种各样的变形,并且对不同的实施方式所分别揭示的技术手段进行适当地组合所得到的实施方式也包含在本发明的技术范围内。
并且,本发明也可以用如下的方式来表示。即,本发明的数据处理装置具有一二维结构,该二维结构通过把水平方向上排列有多个way的阶段在垂直方向上排列成多个而构成,每一way包括多个基本单元,每一基本单元包括具有多个接口(port)的内存模块、上述内存模块的各接口的地址生成器以及运算器。上述各基本单元进一步包括:数据总线、演算总线和开关群、以及内存总线和开关群。所述数据总线从属于同一阶段的上述内存模块中,同时读取多个way×多个文字。所述演算总线和开关群将所述多个文字同时提供给同一阶段的上述运算器。所述内存总线和开关群将上述运算器的输出写入属于同一阶段的上述内存模块。针对属于同一way的上述内存模块的写入总线和读取总线,通过相同的总线连接到外部存储器,同时进行从外部存储器向上述内存模块的写入和从上述内存模块读取至上述运算器。并且,同时进行从上述运算器到上述内存模块的写入和从上述内存模块到上述外部存储器的读取。通过上述地址生成器读取上述内存模块时,同时读取多个文字,同时将值写入上述基本单元的末端寄存器。
各上述基本单元进一步包括多路复用器、内存总线和开关群、以及数据总线。所述多路复用器将从各上述内存模块中读取的多个文字合并成一个文字。所述内存总线和开关群将合并后的一个文字同时提供给同一阶段的FIFO。所述数据总线用于在通过上述地址生成器读取上述内存模块时,读取单一文字,同时向包含于同一阶段的上述基本单元的FIFO和该基本单元的末端寄存器写入值。优选地,通过上述地址生成器确定识别存储于上述FIFO的数据的位置,读取上述FIFO,并将其储存于上述基本单元的末端寄存器。
各上述基本单元进一步包括对从外部来的内存参考请求进行排队的缓冲器以及将地址信息提供给各阶段的所有内存模块的数据总线。从上述内存模块进行读取时,比较内存模块与各way中由部分地址字段指定的单个标签的一致性,从标签一致的内存模块中读取多个文字,同时向上述基本单元的末端寄存器写入值。优选地,向上述内存模块写入时,比较内存模块与各way中由部分地址字段指定的单个标签的一致性,对标签一致的内存模块进行写入。
各上述基本单元还进一步包括地址总线,所述地址总线从上述地址生成器向连接于各way的外部存储器传送地址信息。在来自上述外部存储器的数据到达之前,使用属于同一阶段的基本单元的地址生成器,将运算器的输出和存储于上一阶段的末端寄存器的数据储存在该基本单元内的内存模块的同时,在上述外部存储器的数据到达的同时,使用地址生成器从该基本单元内的内存模块中进行读取。优选地,将来自上述外部存储器的到达数据和上述运算器的输出同时写入上述基本单元的末端寄存器。
优选地,从上述基本单元的末端寄存器向属于下一阶段的上述运算器或者上述内存模块传递数据。
每个阶段设置有一缓冲器,该缓冲器用于对从外部来的内存参考请求进行排队。每个阶段进一步包括将地址信息提供给所有内存模块的数据总线。通过流水线操作,多个阶段可以连续受理来自外部的内存参考请求。
通过上述结构,通用CPU在进行数据的前处理,向数据处理装置传递数据的情况下以及通用CPU继续使用数据处理装置的处理结果的情况下,通过使必要的数据共享无需进行广泛的缓存刷新,可以加快数据处理的速度。
优选地,各上述基本单元进一步包括:用于播放向各内存模块同时写入的数据的内存写入广播总线、将从各内存模块读取的多个文字合并成一个文字的多路复用器、以及通过地址生成器读取内存模块时,读取多个文字,经由上述多路复用器向包含于同一阶段的上述基本单元的末端寄存器写入值的数据总线。
产业上的可利用性
本发明可以应用于电脑系统中的加速器。
主要元件符号说明
600、600A 基本单元
601 寄存器
603 运算器
604 地址生成器
606 内存模块
607 多路复用器
609 FIFO
610 数据总线
611 内存写入广播总线
800 数据处理装置

Claims (7)

1.一种数据处理装置,其具有一二维结构,该二维结构通过把水平方向上排列有多个way的阶段在垂直方向上排列成多个而形成,每一个way包括多个基本单元,各基本单元包括具有多个接口(port)的内存模块、所述内存模块的各接口的地址生成器以及运算器;
各所述基本单元进一步包括数据总线、演算总线和开关群、以及内存总线和开关群,所述数据总线从属于同一阶段的所述内存模块中同时读取多个way×多个文字,所述演算总线和开关群将所述多个文字同时提供给同一阶段的所述运算器,所述内存总线和开关群将所述运算器的输出写入属于同一阶段的所述内存模块;
属于同一way的所述内存模块所使用的写入总线和读取总线通过相同的总线连接到外部存储器,同时进行从外部存储器向所述内存模块的写入和从所述内存模块向所述运算器的读取,并且,同时进行从所述运算器到所述内存模块的写入和从所述内存模块向所述外部存储器的读取;
通过所述地址生成器读取所述内存模块时,同时读取多个文字,同时将值写入所述基本单元的末端寄存器。
2.如权利要求1所述的数据处理装置,其特征在于:各所述基本单元进一步包括多路复用器、内存总线和开关群、以及数据总线,所述多路复用器将从各所述内存模块中读取的多个文字合并成一个文字,所述内存总线和开关群将合并后的一个文字同时提供给同一阶段的FIFO,所述数据总线用于在通过所述地址生成器读取所述内存模块时,读取单一文字,同时向包含于同一阶段的所述基本单元的FIFO和所述基本单元的末端寄存器写入值;
通过所述地址生成器确定识别存储于所述FIFO的数据的位置,读取上述FIFO,并将其储存于所述基本单元的末端寄存器。
3.如权利要求1所述的数据处理装置,其特征在于:各所述基本单元进一步包括对从外部来的内存参考请求进行排队的缓冲器以及将地址信息提供给各阶段的所有内存模块的数据总线;
从所述内存模块进行读取时,比较所述内存模块与各way中由部分地址字段指定的单个标签的一致性,从标签一致的所述内存模块中读取多个文字,同时向所述基本单元的末端寄存器写入值;
向所述内存模块写入时,比较所述内存模块与各way中由部分地址字段指定的单个标签的一致性,对标签一致的所述内存模块进行写入。
4.如权利要求1所述的数据处理装置,其特征在于:各所述基本单元中进一步包括用于从所述地址生成器向连接于各way的外部存储器传送地址信息的地址总线,在来自所述外部存储器的数据到达之前,使用属于同一阶段的所述基本单元的所述地址生成器,将所述运算器的输出以及存储于上一阶段的所述末端寄存器的数据储存在所述基本单元内的所述内存模块的同时,在所述外部存储器的数据到达的同时,使用所述地址生成器从所述基本单元内的所述内存模块中进行读取,将来自所述外部存储器的到达数据和所述运算器的输出同时写入所述基本单元的末端寄存器。
5.如权利要求1、2、4的任意一项所述的数据处理装置,其特征在于:从所述基本单元的末端寄存器向属于下一阶段的所述运算器或者所述内存模块传递数据。
6.如权利要求3所述的数据处理装置,其特征在于:每个阶段设置有一所述缓冲器,所述缓冲器用于对从外部来的内存参考请求进行排队,每个阶段进一步包括将地址信息提供给所有内存模块的数据总线,多个阶段通过流水线操作连续受理来自外部的内存参考请求。
7.如权利要求3所述的数据处理装置,其特征在于:各所述基本单元进一步包括用于播放向各内存模块同时写入的数据的内存写入广播总线、将从各内存模块读取的多个文字合并成一个文字的多路复用器以及通过所述地址生成器读取所述内存模块时,读取多个文字,经由所述多路复用器向包含于同一阶段的所述基本单元的末端寄存器写入值的数据总线。
CN201680019602.9A 2015-04-08 2016-04-06 数据处理装置 Active CN107408076B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2015079552 2015-04-08
JP2015-079552 2015-04-08
PCT/JP2016/061302 WO2016163421A1 (ja) 2015-04-08 2016-04-06 データ処理装置

Publications (2)

Publication Number Publication Date
CN107408076A CN107408076A (zh) 2017-11-28
CN107408076B true CN107408076B (zh) 2020-12-11

Family

ID=57073109

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680019602.9A Active CN107408076B (zh) 2015-04-08 2016-04-06 数据处理装置

Country Status (4)

Country Link
US (1) US10275392B2 (zh)
JP (1) JP6679570B2 (zh)
CN (1) CN107408076B (zh)
WO (1) WO2016163421A1 (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6679570B2 (ja) * 2015-04-08 2020-04-15 国立大学法人 奈良先端科学技術大学院大学 データ処理装置
WO2018207883A1 (ja) * 2017-05-12 2018-11-15 国立大学法人 奈良先端科学技術大学院大学 データ処理装置
US11601531B2 (en) * 2018-12-03 2023-03-07 Intel Corporation Sketch table for traffic profiling and measurement
EP4204976A4 (en) 2020-08-28 2024-03-06 Deep Vision Inc. PROCESSOR SYSTEM AND METHOD FOR INCREASE DATA TRANSFER BANDWIDTH DURING EXECUTION OF A PLANNED PARALLEL PROCESS

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0696874A2 (en) * 1994-08-10 1996-02-14 General Instrument Corporation Of Delaware Dram mapping for a digital video data decompression processor
CN1853170A (zh) * 2003-09-30 2006-10-25 英特尔公司 压缩高速缓存内数据的机制
US7379422B2 (en) * 2002-12-20 2008-05-27 Lsi Logic Corporation Flow control enhancement
CN101334766A (zh) * 2008-06-30 2008-12-31 东软飞利浦医疗设备系统有限责任公司 一种并行微处理器及其实现方法
CN102090030A (zh) * 2008-06-09 2011-06-08 格诺多有限公司 通过网络传输数据的方法
CN102103558A (zh) * 2009-12-18 2011-06-22 上海华虹集成电路有限责任公司 一种带有写重传功能的多通道NANDflash控制器

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5179530A (en) * 1989-11-03 1993-01-12 Zoran Corporation Architecture for integrated concurrent vector signal processor
US6173388B1 (en) * 1998-04-09 2001-01-09 Teranex Inc. Directly accessing local memories of array processors for improved real-time corner turning processing
JP4317296B2 (ja) * 1999-09-17 2009-08-19 株式会社ターボデータラボラトリー 並列コンピュータのアーキテクチャおよびこのアーキテクチャを利用した情報処理ユニット
US6728862B1 (en) * 2000-05-22 2004-04-27 Gazelle Technology Corporation Processor array and parallel data processing methods
US6912626B1 (en) * 2000-08-31 2005-06-28 Micron Technology, Inc. Method and apparatus for connecting a massively parallel processor array to a memory array in a bit serial manner
CN1595379A (zh) * 2003-09-10 2005-03-16 矽创电子股份有限公司 供多个数据处理装置共用的存储器装置及其方法
WO2013137459A1 (ja) 2012-03-16 2013-09-19 国立大学法人奈良先端科学技術大学院大学 データ供給装置及びデータ処理装置
CN104391820B (zh) * 2014-11-25 2017-06-23 清华大学 基于fpga的通用浮点矩阵处理器硬件结构
JP6679570B2 (ja) * 2015-04-08 2020-04-15 国立大学法人 奈良先端科学技術大学院大学 データ処理装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0696874A2 (en) * 1994-08-10 1996-02-14 General Instrument Corporation Of Delaware Dram mapping for a digital video data decompression processor
US7379422B2 (en) * 2002-12-20 2008-05-27 Lsi Logic Corporation Flow control enhancement
CN1853170A (zh) * 2003-09-30 2006-10-25 英特尔公司 压缩高速缓存内数据的机制
CN102090030A (zh) * 2008-06-09 2011-06-08 格诺多有限公司 通过网络传输数据的方法
CN101334766A (zh) * 2008-06-30 2008-12-31 东软飞利浦医疗设备系统有限责任公司 一种并行微处理器及其实现方法
CN102103558A (zh) * 2009-12-18 2011-06-22 上海华虹集成电路有限责任公司 一种带有写重传功能的多通道NANDflash控制器

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于TMS320DM642的音视频编解码系统硬件设计;马海杰;《中国优秀硕士学位论文全文数据库 信息科技辑》;20050215(第10期);I136-112 *

Also Published As

Publication number Publication date
US20180089141A1 (en) 2018-03-29
US10275392B2 (en) 2019-04-30
CN107408076A (zh) 2017-11-28
JPWO2016163421A1 (ja) 2018-02-08
WO2016163421A1 (ja) 2016-10-13
JP6679570B2 (ja) 2020-04-15

Similar Documents

Publication Publication Date Title
US10255228B2 (en) System and method for performing shaped memory access operations
US8751771B2 (en) Efficient implementation of arrays of structures on SIMT and SIMD architectures
US8539204B2 (en) Cooperative thread array reduction and scan operations
US9262174B2 (en) Dynamic bank mode addressing for memory access
JP5142299B2 (ja) 圧縮状態ビットキャッシュ及びバッキング記憶装置
US8271763B2 (en) Unified addressing and instructions for accessing parallel memory spaces
CN107408076B (zh) 数据处理装置
EP2480975B1 (en) Configurable cache for multiple clients
US20130159628A1 (en) Methods and apparatus for source operand collector caching
US9798543B2 (en) Fast mapping table register file allocation algorithm for SIMT processors
US9069664B2 (en) Unified streaming multiprocessor memory
CN102375800A (zh) 用于机器视觉算法的多处理器片上系统
US8539130B2 (en) Virtual channels for effective packet transfer
US10866902B2 (en) Memory aware reordered source
US9400760B2 (en) Information processor with tightly coupled smart memory unit
CN107851017B (zh) 用于传输多个数据结构的设备和方法
US9626191B2 (en) Shaped register file reads
CN112749120A (zh) 将数据有效地传输至处理器的技术
US20160217079A1 (en) High-Performance Instruction Cache System and Method
US8570916B1 (en) Just in time distributed transaction crediting
KR101234183B1 (ko) 캐시 시스템
US9286256B2 (en) Sharing data crossbar for reads and writes in a data cache
JP4918535B2 (ja) キャッシュメモリ、キャッシュメモリ装置及び割当て方法
US9098383B1 (en) Consolidated crossbar that supports a multitude of traffic types
US20090193227A1 (en) Multi-stream on-chip memory

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